11. Vorlesung
11. Vorlesung
11. Vorlesung
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