640 likes | 1.11k Views
Technische Informatik Mikroprozessor- und Microcomputerarchitektur / von-Neumann-Prinzip. Peter G. Poloczek. Aus dem Lehrplan. Von-Neumann-Prinzip Funktionseinheiten, Speichermodell, Befehlsabarbeitung Mikroprozessor- und Bussysteme, ALU,
E N D
Technische InformatikMikroprozessor- und Microcomputerarchitektur / von-Neumann-Prinzip Peter G. Poloczek
Aus dem Lehrplan Von-Neumann-Prinzip Funktionseinheiten, Speichermodell, Befehlsabarbeitung Mikroprozessor- und Bussysteme, ALU, Mikrocomputerarchitektur Register, Flag-Register, Steuerwerk, Mikroprogramm, BIOS, ROM, RAM
PCs • Der IBM PC (1981) konnte 1 MB adressieren • Er besaß einen 16-Bit-Prozessor 8088 von Intel, eine Version des 8086 mit einem externen 8-Bit-Datenbus • 384 kB waren für „Erweiterungen“ wie ROM für Steckkarten und Grafik reserviert. • Bill Gates in 1981: „640K oughtto be enough for anybody “ (später bestritten, Quelle Wikipedia)
ROM • Read-Only-Memory: • Kann Routinen z.B. für I/O-Aufgaben beinhalten: parallele oder serielle Schnittstellen, Festplattencontroller, Grafik,… • ROM-Code wird an bestimmte Adressen „eingeblendet“ • Auch das BIOS ist im ROM
BIOS • Basic-Input-Output-System • Bootstrapping startet den Rechner • Eigentlich ein Henne-Ei-Problem: • Software (zum Start) muss eingelesen werden • zum einlesen muss Software vorhanden sein • Stellt Basis-Treiber (Bildschirm, …) bereit • Wird vielleicht vom Extensible Firmware Interface (EFI) ersetzt (Apple!)
RAM • Random Access Memory: Speicher mit wahlfreiem Zugriff • Der Arbeitsspeicher des Computers ist ein durch Adressen (in Tabellenform) strukturierter Bereich, der Binärwörter fester Größe aufnehmen kann. • Der Arbeitsspeicher moderner Computer ist flüchtig, d. h. dass alle Daten nach dem Abschalten der Energieversorgung verloren gehen – der Hauptgrund dafür liegt in der Technologie der DRAMs.
„Busse“ Quelle: https://www.fbi.h-da.de/fileadmin/personal/k.kasper/Materialien/RG/rg11.pdf
Funktion der Busse • Adressbus: Spricht eine bestimmte Speicherstelle (zum Schreiben/Lesen) an. • Datenbus: überträgt Daten zu oder von dieser Speicherstelle. • Kontroll-(oder System-)bus: sorgt z.B. dafür, dass diese Vorgänge synchronisiert werden.
Adress- und Datenbus • Die Anbindung des physischen Speichers erfolgt also den durch Adress- und Datenbus gemeinsam. • Der Adressbus dient zur Auswahl der angeforderten Speicherzellen; von seiner Busbreite (in Bit) ist der maximal ansprechbare Speicher eines Prozessors abhängig. • Zur Zeit gibt es 32Bit- (max. 4 GB RAM) und 64-Bit Betriebssysteme. • An jeder Adresse ist stets ein Byte (nicht nur ein Bit) abgelegt. • Der Datenbus übernimmt den eigentlichen Datentransfer. • In allen aktuellen PC-Architekturen werden dabei 64 Bit auf einmal transferiert – unter Umständen unabhängig vom Betriebssystem!
Exkurs: IEC 60027-2 Quelle: http://de.wikipedia.org/wiki/Bin%C3%A4rpr%C3%A4fix
Daten: SDRAM / DDRx-RAM • „Normale“ SDRAM-Module (Single-Data) bieten bei einem Takt von 133 MHz eine Datenübertragungsrate von 1,06 GB/s. • Module mit DDR-SDRAM (133MHz) arbeiten nahezu mit der doppelten Datenrate. • Der „Trick“: Sowohl bei der auf- als auch bei der absteigenden Flanke des Taktsignals wird ein Datenbit übertragen, anstatt wie bisher nur bei der aufsteigenden. • Damit das Double-Data-Rate-Verfahren zu einer Beschleunigung führt, muss die Anzahl zusammenhängend angeforderter Daten (= „Burst-Length“) immer gleich oder größer als die doppelte Busbreite sein. • SDRAM DIMM: Speichermodule (DIMM) besitzen 168 Kontakte (DDR-SDRAM: 184 Kontakte/Pins, DDR2-SDRAM DIMM/DDR3-SDRAM DIMM: 240,).
Prefetch - Erläuterung • Die im Vergleich zu einem SRAM deutlich geringere Geschwindigkeit eines DRAMs liegt in der Struktur und Funktionsweise des DRAMs begründet. (Lange Wortleitun-gen müssen aufgeladen werden, eine ausgelesene Zelle kann ihre Ladung nur langsam auf die Bitleitung ausgeben, der ausgelesene Inhalt muss bewertet und zurückgeschrieben werden.) • Es wird ein Trick angewendet, um die externe Datentrans-ferrate zu steigern, ohne die interne Geschwindigkeit erhöhen zu müssen: • Bei dem so genannten Prefetching werden pro Adressie-rung die Daten von mehreren Spaltenadressen ausgelesen und in einen Parallel-Seriell-Wandler (Schieberegister) geschrieben. Von diesem Puffer aus werden die Daten mit der höheren (externen) Taktrate ausgegeben.
Prefetch - Anwendung • Beim Single-Data-Rate(SDR)-SDRAM wird pro Leseanforderung 1 Datenbit pro Datenpin ausgelesen: Prefetch = 1 • Beim DDR-SDRAM werden pro Leseanforderung 2 Datenbits pro Datenpin ausgelesen: Prefetch = 2 • Beim DDR2-SDRAM werden pro Leseanforderung 4 Datenbits pro Datenpin ausgelesen: Prefetch = 4 • Beim DDR3-SDRAM werden pro Leseanforderung 8 Datenbits pro Datenpin ausgelesen: Prefetch = 8
Übertragungsraten DDR3 • ²) Geschwindigkeit der Anbindung an den Speichercontroller von CPU oder Mainboard • ³) Effektiver Takt im Vergleich zu SDR-SDRAM (theoretisch) Beispielrechnung: (Takt der Speicherzellen (in MHz) × Bit pro Übertragung ×Anzahl Taktflanken) /8 Bit = Speichertransferrate in Byte/s DDR3-1600: (200 MHz × 64 Bit × 8) /8 = 12.800 MB/s = 12,8 GB/s
Aufbau / Ansicht einer CPU Quelle: Wikipedia/Intel
Pentium 4 Quelle: http://referate.mezdata.de/sj2001/pentium4_stefan_lands/intel_tech.html
Der i7-980X Quelle: Intel
Das Rechen- und Steuerwerk • Rechenwerk: • Arithmetic Logic Unit • Register • Akkumulator • Steuerwerk: • Befehlsregister, Befehlscodierer • Statusregister • Operationssteuerung, Befehlszähler, Taktgeber
Die ALU - Funktionen • Die ALU berechnet arithmetische und logische Funktionen. Sinnvoller-weise kann sie mindestens folgende Minimaloperationen durchführen: • Arithmetisch: Addition (ADD) • Logisch: Negation (NOT) ; Konjunktion (Und-Verknüpfung, AND) • Zusätzliche Operationen vor, die aber oft in mehreren Takten nachgebildet werden können: • Arithmetisch: Subtraktion (SUB); Multiplikationen (MUL) mittels Multiplizierer • Logisch: Vergleich (compare, CMP); Disjunktion (Oder-Verknüpfung, OR); Kontravalenz (Exklusiv-Oder-Verknüpfung, XOR, EOR) • Sonstige: • Rechts- und Linksverschiebung (Rechts-, Linksshift, ASR – arithmetische Shift rechts, ASL – arithmetische Shift links, LSR – logisches Verschieben nach rechts, LSL – logisches Verschieben nach links) • Links- und Rechtsrotation (ROL, ROR); Register-Manipulationen und Bit-Veränderungen (Bits setzen, löschen und testen) • (Decimal adjust)
ALU - Statusregister • Dieses Register enthält meistens vier Statusbits. Die einzelnen Werte des Statusregisters können von Maschinensprachebefehlen abgefragt werden. Man nennt sie oft auch Flags. • Übertragsbit (C für engl. carry bit): Zeigt den Übertrag an, der bei Addition der n-ten Bits (der höchsten Stelle) der Operanden entsteht. • Überlaufbit (V für engl. overflow bit): Zeigt Zahlenbereichsüberschreitung bei 2er-Komplement-Rechnung an (Übertrag der zweithöchsten Stelle der Operanden). • Nullbit (Z für engl. zero bit): Zeigt an, ob das Ergebnis der vorhergehenden Rechenoperation Null ist (wird 1, wenn Inhalt des Akkumulatorregisters 0 ist). • Negativbit (N): Wird gesetzt, wenn das Ergebnis der Operation als negative Zahl zu interpretieren sein kann (oberstes Bit des Akkumulatorregisters = 1).
Der Registersatz • Register sind CPU-interne Speicher: • Akkumulator und Datenregister • Adressregister • Spezialregister • Befehlszähler • Staturegister • … • Stackregister
Registerhistorie: REAL-Mode • Die Intel 8086 und 8088 hatten 14 16-Bit-Register. Vier von ihnen (AX, BX, CX, DX) waren Mehrzweck-Register. Zusätzlich hatte jedes noch eine Sonderfunktion: • AX (engl. accumulator register) diente als bevorzugtes Ziel für Rechenoperationen • BX (engl. base register) diente zur Adressierung der Anfangsadresse einer Datenstruktur • CX (engl. count register) diente als Zähler für Schleifen (loop-Instruktion) und Verschiebeoperationen • DX (engl. data register) diente als Datenregister für den zweiten Operanden.
Protected und Enhanced Mode • Ab dem 80386 gibt es echte 32 Bit-Register: • AX/EAX/RAX: Akkumulator • BX/EBX/RBX: Basis • CX/ECX/RCX: Zähler • DX/EDX/RDX: Daten/Allzweck • SI/ESI/RSI: Quellindex (Zeichenketten) • DI/EDI/RDI: Zielindex (Zeichenketten) • SP/ESP/RSP: Stapelzeiger • BP/EBP/RBP: Stapelsegment (Anfangsadresse) • IP/EIP/RIP: Befehlszeiger
MMX und 64 Bit • MMX: 8 neue „Single Instruction, Multiple Data“-Register mit 64 Bit • Weitergeführt als 3Dnow!, SSE bis SSE5. • Intel: 64 Bit (Register) mit EMT 64 oder Intel64, entwickelt als AMD64 • SSE5: 128Bit breite Operanden in 47 neuen Befehlen (z. B. für die AES-Verschlüsselung) in i5- und i7-CPUs
Strategien der aktuellen CPUs • Multicore • Pipelines • Sprungvorhersage • Cache • Hyperthreading
Mehrkernprozessoren • Zwei oder mehr Kerne auf einem „Die“ • Parallele Berechnungen möglich • Schnelle Kommunikation der Kerne untereinander • Gemeinsame Ressourcennutzung
Pipelining - 1 • A – Befehlscode laden (IF, Instruction Fetch) • In der Befehlsbereitstellungsphase wird der Befehl, der durch den Befehlszähler adressiert ist, aus dem Arbeitsspeicher geladen. Der Befehlszähler wird anschließend hochgezählt. • B – Instruktion dekodieren und Laden der Daten (ID, Instruction Decoding) • In der Dekodier- und Ladephase wird der geladene Befehl dekodiert (1. Takthälfte) und die notwendigen Daten aus dem Arbeitsspeicher und dem Registersatz geladen (2. Takthälfte). • C – Befehl ausführen (EX, Execution) • In der Ausführungsphase wird der dekodierte Befehl ausgeführt. Das Ergebnis wird durch den Pipeline-latch gepuffert. • D – Ergebnisse zurückgeben (WB, Write Back) • In der Resultatspeicherphase wird das Ergebnis in den Arbeitsspeicher oder in den Registersatz zurückgeschrieben.
Pipelining 2 Quelle: Wikipedia
Sprungvorhersage • „Branch prediction“, Beispiele: • Sprünge im Programmcode zurück sind in der Regel Schleifen, die oft mehrfach durchlaufen werden, so dass bei dieser prophylaktisch die Pipeline mit dem zurückliegenden Code gefüllt wird • Versuch der Vorhersage, ob ein bedingter Sprung ausgeführt wird • Versuch, die Zieladresse eines Sprunges zu ermitteln
Cache - 1 • Zwischenspeicher, arbeitet „unsichtbar“ • Ziele: eine Verringerung der Zugriffszeit bzw. der Anzahl der Zugriffe auf den zu cachenden Speicher • Vermeidet den „von-Neumann-Flaschenhals“ (= das Verbindungssystem (Daten- und Befehls-Bus) wird zum Engpass zwischen dem Prozessor und dem Speicher)
Cache - 2 • First-level-Cache nahe am Prozessor • Second- und Third-Level-Caches dahinter • Cache mit Havard-Architektur: getrennte Caches für Daten und Befehle
Cache - 3 • Der Cachecontroller entscheidet, ob (und womit) der Cache gefüllt oder wo er geleert werden muss. • Er benutzt dazu Cache-Hit- und –Miss-Detektoren. • Cache-Speicher arbeitet in Blöcken organisiert und oft in dieser Hinsicht „assoziativ“.
Der Cache beim i7 • L1-Cache: je Kern 32 + 32 KB (Daten + Instruktionen) • L2-Cache: je Kern 256 KB mit Prozessortakt (etwa 3 GHz) • L3-Cache: „shared“ 12 MB mit doppeltem Speichertakt (etwa 0,4-0,8 GHz)
Hyperthreading - 1 • (kurz: HTT, üblicherweise nur Hyper-Threading genannt) ist die Implementierung von hardwareseitigem Multithreading in Intel-Prozessoren. • Durch mehrere vollständige Registersätze und ein komplexes Steuerwerk werden intern parallel arbeitende Pipeline-Stufen mehreren parallelen Befehls- und Datenströmen zugeteilt. • Hyperthreading ist damit Parallelverarbeitung auf der Ebene des Simultaneous Multithreadings (SMT).
Hyperthreading - 2 • Im Gerätemanager von Windows sind dann z.B. bei einer i7-980-CPU zwölf Prozessoren zu sehen (hier: acht).
Komponenten eines vN-Rechners • Ein Von-Neumann-Rechner beruht auf folgenden Komponenten, die bis heute in Computern verwendet werden: • ALU (Arithmetic Logic Unit) – Rechenwerk, selten auch Zentraleinheit oder Prozessor genannt, führt Rechenoperationen und logische Verknüpfungen durch. (Die Begriffe Zentraleinheit und Prozessor werden i.A. in anderer Bedeutung verwendet.) • Control Unit – Steuerwerk oder Leitwerk, interpretiert die Anweisungen eines Programms, und verschaltet dementsprechend Datenquelle, -senke und notwendige ALU-Komponenten; das Steuerwerk regelt auch die Befehlsabfolge. • Memory – Speicherwerk speichert sowohl Programme als auch Daten, welche für das Rechenwerk zugänglich sind. • I/O Unit – Eingabe-/Ausgabewerk steuert die Ein- und Ausgabe von Daten, zum Anwender (Tastatur, Bildschirm) oder zu anderen Systemen (Schnittstellen).
Komponenten eines vN-Rechners Quelle: Wikipedia
Bussystem Quelle: Wikipedia
Programmablauf 1 • Prinzipien des gespeicherten Programms: • Befehle sind in einem RAM-Speicher mit linearem (1-dimensionalem) Adressraum abgelegt. • Ein Befehls-Adressregister, genannt Befehlszähler oder Programmzähler, zeigt auf den nächsten auszuführenden Befehl. • Befehle können wie Daten geändert werden.
Programmablauf 2 • Prinzipien der sequentiellen Programm-Ausführung • Befehle werden aus einer Zelle des Speichers gelesen und dann ausgeführt. • Normalerweise wird dann der Inhalt des Befehlszählers um Eins erhöht. • Es gibt einen oder mehrere Sprung-Befehle, die den Inhalt des Befehlszählers um einen anderen Wert als +1 verändern. • Es gibt einen oder mehrere Verzweigungs-Befehle, die in Abhängigkeit vom Wert eines Entscheidungs-Bit den Befehlszähler um Eins erhöhen oder einen Sprung-Befehl ausführen.
Von-Neumann-Zyklus - 1 • FETCH • In das Befehls-Register, das zusammen mit Steuerwerk und Rechenwerk (ALU: Arithmetisch-logische Einheit) die CPU darstellt, wird aus RAM- oder ROM-Speicher der nächste zu bearbeitende Befehl geladen. • Bei modernen Prozessoren können mehrere Befehle aus dem Speicher in einen Zwischenspeicher (Prefetch-Registerblock) geladen werden, während der aktuelle Befehl noch decodiert wird. 1. Vorteil: Deutliche Steigerung der Verarbeitungsgeschwindigkeit.2. Nachteil: Bei Programmverzweigungen muss der Befehl evtl. wieder entfernt werden. • DECODE • Befehlszähler wird vor dem Dekodieren um 1 erhöht. Der Befehl wird durch das Steuerwerk in Schaltinstruktionen für das Rechenwerk aufgelöst (übersetzt).
Von-Neumann-Zyklus - 2 • FETCH OPERANDS • Aus RAM oder ROM werden nun die Operanden geholt: die Werte, die durch den Befehl verändert werden sollen bzw. die als Parameter verwendet werden. • EXECUTE • Die Operation wird vom Rechenwerk ausgeführt. An dieser Stelle wird, so vom Programm gewünscht, auch der Befehlszähler verändert (Sprungbefehl). • (INCREMENT • auch schon mal in FETCH enthalten; der Befehlszähler wird um 1 erhöht) • Jetzt kann der Zyklus wieder von vorn beginnen
Programmablauf / Akkumulator • Die Arbeit des Computers besteht also im Wesentlichen aus einem Verschieben von Daten in Register und Ausführen von Rechenoperationen beziehungsweise logischen Operationen. • Wenn ein Befehl im Rechenwerk ausgeführt wird, so wird eine Dualzahl in das Arbeitsregister, auch Akkumulator genannt, geladen. Am Ende steht das Ergebnis wieder im Akkumulator. Er akkumuliert sozusagen die Ergebnisse.
Mikroprogramm - 1 • Der Algorithmus eines Mikroprogramm-steuerwerks in einer CPU zum Steuern des Rechenwerks • Kann unmittelbar in Form binär codierter Mikrobefehle erstellt werden • Oder: Mikroassembler • Üben? -> http://www.mikrocodesimulator.de/
Mikroprogramm - 2 Quelle: http://www.jeckle.de/vorlesung/sysarch/script.html
„Havard“-Architektur - 1 • Der Befehlsspeicher ist physisch vom Datenspeicher getrennt und beide werden über getrennte Busse angesteuert. Quelle: Wikipedia