11.10.2013 Aufrufe

11. Vorlesung

11. Vorlesung

11. Vorlesung

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Rechnergrundlagen<br />

SS 2007<br />

<strong>11.</strong> <strong>Vorlesung</strong>


Inhalt<br />

• Evaluation der Lehre (Auswertung)<br />

• Synchroner/asynchroner Systembus<br />

• Kontrollfluss/Datenfluss<br />

• RISC vs. CISC<br />

• Speicherhierarchie<br />

• Cache<br />

– Lesen<br />

–Schreiben<br />

– Überschreiben<br />

Rechnergrundlagen 2


Systembus<br />

Physikalisch ist jeder Bus aus einer Anzahl von Leitungen<br />

aufgebaut. Bspw. besteht ein 16 bit Adressbus aus 16<br />

individuellen Leitungen.<br />

Für jede Busleitung darf es zu einem Zeitpunkt nur eine<br />

Einheit geben, welche die Busleitung treibt.<br />

Rechnergrundlagen 3


Quelle und Senke<br />

• Quelle: Als Quelle wird der Sender<br />

eines Datenwortes bezeichnet.<br />

• Senke: Als Senke wird der Empfänger<br />

eines Datenwortes bezeichnet.<br />

• Die CPU kann, in Abhängigkeit von<br />

Lese- oder Schreibzyklus, Senke oder<br />

Quelle eines Datentransfers sein.<br />

Rechnergrundlagen 4


Adress- und Datenbus<br />

• Adress- und Datenbus sind zwei homogene<br />

Busse, die Signale gleicher Funktion<br />

zusammenfassen.<br />

• Der Datenbus ist ein bidirektionaler Bus.<br />

• Der Adressbus ist (in Systemen ohne DMA)<br />

ein unidirektionaler Bus. Von der CPU<br />

werden Adressen zum Speicher bzw. zu Einund<br />

Ausgabe transferiert.<br />

• Es existieren auch Realisierungen mit<br />

gemultiplextem Adress- und Datenbus<br />

(Adresse und Daten werden zeitlich versetzt<br />

auf denselben Leitungen übertragen).<br />

Rechnergrundlagen 5


Synchron/asynchron<br />

• Synchron<br />

– zeitlich abgestimmter Vorgang<br />

– Beispiel: Flip-Flops einer zyklischen<br />

Folgeschaltung schalten alle gleichzeitig, da es<br />

einen zentralen Takt gibt<br />

• Asynchron<br />

– Zeitlich nicht abgestimmt<br />

– Beispiel: Flip-Flops schalten zu unterschiedlichen<br />

Zeiten, da der Takteingang der Flip-Flops nicht<br />

zentral beschaltet wird<br />

Rechnergrundlagen 6


Kontrollbus<br />

• Der Kontrollbus ist ein inhomogener Bus, er fasst<br />

Signale unterschiedlicher Funktion zusammen.<br />

• Hauptaufgaben der Signale:<br />

– Markieren einer gültigen Adresse<br />

– Auswahl eines Schreib- oder Lesetransfers<br />

– Abschluss des Transfers<br />

• Synchroner Systembus: Zeitliche Verhalten der<br />

Signale wird ausschließlich durch die CPU gesteuert.<br />

• Asynchroner Systembus: Langsame Speicher oder<br />

Ein- bzw. Ausgabeeinheiten können das zeitliche<br />

Verhalten der Bussignale beeinflussen. Der<br />

adressierte Speicher bzw. die Ein-/Ausgabeeinheit<br />

muss ein Quittungssignal senden. Der Kontrollbus<br />

übernimmt dann die Aufgabe das Quittungssignal zu<br />

transferieren.<br />

Rechnergrundlagen 7


Buszyklen<br />

• Mit Buszyklus wird die zeitliche Abfolge von Signalen auf<br />

dem Systembus bezeichnet.<br />

• Der Bus-Master, üblicherweise die CPU, steuert die<br />

logische und zeitliche Abfolge der Signale beim<br />

Transfer.<br />

• Für jeden Buszyklus gibt es einen Bus-Master.<br />

• Beim Lesezyklus legt der Bus-Master die für das Lesen<br />

notwendigen Kontrollsignale und die Adresse am Bus<br />

an. Die adressierte Speicherzelle legt den gespeicherten<br />

Wert auf den Datenbus, der von der CPU eingelesen<br />

wird. Der Bus-Master terminiert den Zyklus.<br />

• Beim Schreibzyklus legt der Bus-Master die für das<br />

Schreiben notwendigen Kontrollsignale und die Adresse<br />

am Bus an. Die CPU gibt ein Datenwort auf dem<br />

Datenbus aus. Der Speicher übernimmt das Datenwort<br />

und schreibt es an die adressierte Speicherzelle. Der<br />

Bus-Master terminiert den Zyklus<br />

Rechnergrundlagen 8


Synchroner Schreib- und<br />

Lesezyklus<br />

Rechnergrundlagen 9


Asynchroner Lesezyklus<br />

Rechnergrundlagen 10


Architekturen<br />

Rechnergrundlagen 11


Kontrollfluss<br />

Beim Kontrollfluss unterscheidet man:<br />

• Deklarative Semantik:<br />

Formuliert die Bedingungen. Reihenfolge wird nicht<br />

spezifiziert.<br />

– Beispiel: „Es ist Schwimmbadwetter falls die Sonne<br />

scheint und es warm ist“.<br />

• Prozedurale Semantik:<br />

Definiert die Reihenfolge der auszuführenden Schritte.<br />

– Beispiel: „Um herauszufinden, ob Schwimmbadwetter<br />

ist, schaue zuerst auf das Thermometer und<br />

vergleiche die angezeigte Temperatur mit 25°C, dann<br />

sieh‘ hoch, ob die Sonne scheint“.<br />

Rechnergrundlagen 12


Datenfluss<br />

Der Datenfluss kann beschrieben werden:<br />

• durch Eingabeparameter,<br />

wobei die Position der einzelnen Parameter in<br />

der Liste ebenfalls zu beachten ist.<br />

• durch Ausgabeparameter:<br />

– Rückgabewert einer Funktion<br />

– Parameter in der Übergabe-Liste, falls er<br />

entsprechend spezifiziert ist (z.B. Übergabe<br />

by reference, Übergabe einer Adresse)<br />

Rechnergrundlagen 13


Digitale Signalprozessoren (DSPs)<br />

Die Harvard-Architektur findet sich z.B. in DSPs:<br />

DSP weisen zwar immer noch Kontrollfluss-Befehle auf,<br />

haben jedoch einige Spezialbefehle (z.B. Filterung), die<br />

nach dem Datenfluss-Prinzip arbeiten.<br />

Kontrollfluss:<br />

• Beschreibt die Reihenfolge, wie einzelne Schritte<br />

ausgeführt werden, oder Bedingungen zur Ausführung.<br />

• Nicht linear, Sprünge (Verzweigungen) möglich<br />

Datenfluss:<br />

• Beschreibt, wie Daten von einem Schritt zum nächsten<br />

kommen, d.h. von den Eingabewerten über die<br />

Operationen zum Ergebnis.<br />

• Im Datenfluss gibt es keinen expliziten Kontrollfluss,<br />

sondern der Datenfluss enthält einen impliziten, dem<br />

Datenfluss gleichgerichteten Kontrollfluss.<br />

Rechnergrundlagen 14


DSPs (Fortsetzung)<br />

Weitere Besonderheiten von DSPs:<br />

• Sättigungsarithmetik:<br />

Bei Über- oder Unterlauf kein Vorzeichenwechsel. Bei<br />

Überlauf wird größtmögliche, bei Unterlauf<br />

kleinstmögliche Zahl dargestellt.<br />

keine extreme Verzerrung von Signalen.<br />

• Indirekte Adressierung über Hilfsregister<br />

kurze Befehle, schneller Zugriff<br />

• Ausführung der meisten Befehle in einem Zyklus<br />

• Hartverdrahtetes Steuerwerk, keine<br />

Mikroprogrammierung<br />

• Spezialbefehle für Filterung, FFT, modulare<br />

Adressierung, Sättigungsarithmetik<br />

• Sehr performante ALU Multiplikation in wenigen oder<br />

nur einem Taktzyklus<br />

Rechnergrundlagen 15


Semantische Lücke (semantic gap)<br />

• Der Rechner MARK I hatte 1948 sieben<br />

Maschinenbefehle geringer Komplexität.<br />

• In der Folge versuchte man die sog.<br />

semantische Lücke zwischen höheren<br />

Programmiersprachen und der<br />

Maschinensprache zu schließen.<br />

• Ziel war die Vereinfachung des<br />

Compilerbaus, kompakterer Opcode und eine<br />

höhere Rechenleistung.<br />

Rechnergrundlagen 16


CISC<br />

• Klassische von-Neumann Rechner sind<br />

CISC-Rechner (complex instruction set<br />

computer).<br />

• Zu den ursprünglich einfachen<br />

Maschinenbefehlssätzen sind immer mehr<br />

spezialisierte Befehle hinzugefügt worden.<br />

• Ziel war eine bessere Unterstützung der<br />

Hochsprachenkonstrukte.<br />

• Die Prozessoren wurden insgesamt<br />

langsamer und aufwendiger.<br />

Rechnergrundlagen 17


Analyse<br />

Rechnergrundlagen 18


RISC (reduced instruction set<br />

computer)<br />

• Zu Anfang der 70er Jahre zeigte eine Untersuchung,<br />

dass von Compilern für Hochsprachen nur wenige<br />

einfache Assemblerbefehle verwendet werden.<br />

• Leistungsfähige und komplexe Assemblerbefehle werden<br />

kaum eingesetzt.<br />

• Gründe:<br />

– Compiler werden algorithmisch sehr komplex, wenn<br />

für eine Sequenz von Hochsprachenanweisungen<br />

untersucht werden muss ob sie durch einen<br />

komplexen Assemblerbefehl realisiert werden können.<br />

– Teilweise werden Anweisungen der Hochsprachen<br />

nicht gut durch komplexe Assemblerbefehle<br />

abgebildet.<br />

Rechnergrundlagen 19


Ziele: CISC vs. RISC<br />

• Die Entwickler von CISC Prozessoren<br />

stellen Assembler-Programmierern<br />

möglichst mächtige Befehle zur<br />

Verfügung.<br />

• Die Entwickler von RISC Prozessoren<br />

verfolgen das entgegen gesetzte Ziel<br />

mit möglichst wenigen einfachen<br />

Assemblerbefehlen auszukommen.<br />

Rechnergrundlagen 20


CISC versus RISC<br />

Rechnergrundlagen 21


Prinzipien der RISC Entwicklung<br />

• Analyse der Applikationen, um Schlüsseloperationen<br />

zu finden, die häufig ausgeführt werden.<br />

• Entwurf eines Rechenwerks, das optimal die<br />

gefundenen Schlüsseloperationen verarbeiten kann.<br />

• Entwurf von Instruktionen, welche die<br />

Schlüsseloperationen effizient im Rechenwerk<br />

ausführen.<br />

• Weitere Instruktionen werden nur hinzugefügt, wenn<br />

die Verarbeitung der Schlüsseloperationen nicht<br />

verlangsamt wird.<br />

• Die gleiche Optimierung wird für andere Bereiche des<br />

Rechners (Cache, Speichermanagement, etc.)<br />

durchgeführt.<br />

Rechnergrundlagen 22


Kennzeichen von RISC-<br />

Prozessoren<br />

• Ein RISC-Prozessor hat viele Register, um möglichst<br />

viele Operanden lokal im Prozessor speichern zu können.<br />

• Bei ALU-Operationen dienen Register als Operanden und<br />

als Senke für das Ergebnis.<br />

• Es wird nicht mehr zwischen Adress- und Datenregister<br />

unterschieden.<br />

• Nur wenige Adressierungsarten, bspw.:<br />

– Unmittelbare Adressierung (Immediate). Der Operand<br />

ist in der Instruktion gespeichert.<br />

– Register-indirekte Adressierung. Bei der Adressierung<br />

zeigt die Instruktion auf ein internes Register. Das<br />

Register enthält die Adresse des Operanden im<br />

Speicher.<br />

Rechnergrundlagen 23


Pipelining (Prinzip)<br />

Die gesamte Rechenzeit einer Operation wird nicht<br />

reduziert.<br />

Es werden mehrere Operationen versetzt parallel ausgeführt.<br />

Rechnergrundlagen 24


Pipelining (Blockschaltbild)<br />

Rechnergrundlagen 25


Pipelining (Ausführung)<br />

Rechnergrundlagen 26


Pipelining<br />

• Bedingung für die erfolgreiche Anwendung<br />

eines Pipelining ist die Existenz fester<br />

Ausführungszeiten.<br />

• Je feiner die Zerlegung der Abarbeitung der<br />

Befehle ist, desto höher das Potential zur<br />

Beschleunigung.<br />

• Da konkurrierend auf den Speicher<br />

zugegriffen wird, muss der Zugriff sehr<br />

schnell erfolgen und etwaige Konflikte<br />

vermieden werden.<br />

Rechnergrundlagen 27


Probleme<br />

• Die langsamste Stufe der Verarbeitung<br />

bestimmt den Takt des Pipelining.<br />

• Wenn Sprünge ausgeführt werden, sind die<br />

auf Vorrat ausgeführten Verarbeitungsstufen<br />

hinfällig.<br />

• Bsp.: Soll in aufeinander folgenden<br />

Instruktionen zunächst ein Operand<br />

berechnet und dann weg gespeichert werden,<br />

wird ein vorheriger alter Wert gespeichert.<br />

• Die durch die versetzte Ausführung der<br />

Instruktionen entstehenden Konflikte werden<br />

als Hazards bezeichnet.<br />

Rechnergrundlagen 28


• Sprungbefehle:<br />

Lösungen<br />

– Die auf den Sprungbefehl folgenden Befehle<br />

werden aus der Pipeline gelöscht und durch NOP-<br />

Befehle ersetzt (Hardware). Es entstehen<br />

Bubbles.<br />

– Die dem Sprungbefehl nachfolgenden Befehle<br />

werden vor der Ausführung des Sprungbefehls<br />

ausgeführt. Dies bedeutet, dass der Compiler an<br />

diese Stelle sinnvoll auszuführende Befehle<br />

platziert (Software).<br />

Rechnergrundlagen 29


Einfügen von NOPs<br />

Rechnergrundlagen 30


Lösungen (Forts.)<br />

• Laufzeitkonflikte (Hazards):<br />

– Man führt per Software NOPs ein, so dass<br />

verlängerte Speicherzugriffe (statisch)<br />

ausgeglichen werden.<br />

– Wenn ein Cache Miss auftritt (dynamisch), muss<br />

von Seiten der Hardware garantiert werden, dass<br />

die Ausführung verzögert wird.<br />

• Insgesamt führen die Anforderungen an<br />

Compiler für RISC-Architekturen zu sehr<br />

komplexen Maschinenprogrammen, so dass<br />

nur selten eine manuelle Bearbeitung<br />

vorgenommen werden kann.<br />

Rechnergrundlagen 31


Optimierende Compiler<br />

• Zwei aufeinander aufbauende Phasen: Analyse und<br />

Synthese.<br />

• In der Analyse werden die syntaktischen und<br />

semantischen Eigenschaften des Programms<br />

analysiert und eine maschinenunabhängige<br />

Optimierung durchgeführt. Es wird ein<br />

maschinenunabhängiger Zwischencode erzeugt.<br />

• Für die Synthese müssen die Eigenschaften der<br />

Zielmaschine bekannt sein. Bei CISC Prozessoren<br />

genügt die Kenntnis der Befehlsarchitektur. Für RISC<br />

Prozessoren müssen auch die Details der<br />

Befehlspipeline bekannt sein. Für die Beseitigung<br />

von Konflikten werden NOPs eingefügt. Eine weitere<br />

Optimierung kann durch die Umordnung von<br />

Befehlen erreicht werden.<br />

Rechnergrundlagen 32


Grundtypen I<br />

• Single Instruction, Single Data (SISD): ein sequentiell<br />

abgearbeiteter Befehlsstrom und ein entsprechend<br />

sequentieller Datenstrom (bspw. Intel bis 80486).<br />

• Single Instruction, Multiple Data (SIMD): ein<br />

sequentiell abgearbeiteter Befehlsstrom steuert einen<br />

mehrfachen parallelen Datenstrom (bspw. MMX).<br />

• Multiple Instruction, Single Data (MISD): mehrere<br />

Rechenwerke bearbeiten einen Datenstrom (bspw.<br />

UNIX pipe).<br />

• Multiple Instruction, Multiple Data (MIMD): die<br />

Abarbeitung geschieht sowohl befehls- als auch<br />

datenparallel (bspw. Transputer).<br />

Rechnergrundlagen 33


Grundtypen II<br />

Rechnergrundlagen 34


Cache<br />

• Ein Problem moderner Prozessoren ist ihre hohe<br />

Taktrate, da der Hauptspeicher die benötigten Daten<br />

nicht schnell genug liefern kann.<br />

• Um dieses Problem zu lösen werden schnelle<br />

Pufferspeicher eingesetzt, die als Cache bezeichnet<br />

werden.<br />

• Caches befinden sich zwischen Prozessorkern und<br />

Hauptspeicher.<br />

• Sie dienen der Steigerung der Geschwindigkeit des<br />

Datenaustausches und der Entlastung des<br />

Datenbusses.<br />

• Es muss ein Cache-Controller zum Einsatz kommen,<br />

der die Zugriffe des Prozessors auf den<br />

Hauptspeicher überwacht und Zugriffe auf den Cache<br />

bzw. Datenhaltung im Cache koordiniert.<br />

Rechnergrundlagen 35


Speicherhierarchie<br />

Rechnergrundlagen 36


Cache in modernen Rechnern<br />

Rechnergrundlagen 37


Organisation des Cache (Prinzip)<br />

Zugriff auf Cache ist deutlich schneller als der Zugriff auf Hauptspeicher.<br />

Wenn Daten im Cache stehen, kann die CPU sehr schnell darauf<br />

zugreifen.<br />

Größe des Cache ist deutlich kleiner als Größe des Hauptspeichers.<br />

Rechnergrundlagen 38


Speicherzellen<br />

• Zerlegung des Hauptspeichers in Blöcke der<br />

Größe des Caches.<br />

• Diese Blöcke werden, wie der Cache, in<br />

Cache-Zeilen aufgeteilt.<br />

• Es werden nur ganze Zeilen in den Cache<br />

übernommen.<br />

• Es existieren unterschiedliche Strategien für<br />

die Verwaltung des Cache , d.h. wie neue<br />

Zeilen eingeladen werden und welche<br />

ausgelagert werden.<br />

Rechnergrundlagen 39


Adressierung (Beispiel)<br />

Rechnergrundlagen 40

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!