Fetch-Execute 1
Übersicht Motivation Modulare Computer Bussyteme Fetch and Execute Einfaches Input/Output 2
Motivation Prinzipielle Funktionsweise einer CPU Minimalistischer Prozessor 3
Komponenten eines Computers Alle Computer gleich aufgebaut Prozessor Speicher Input/Output (IO) Foto Opteronix Computer sind modular aufgebaut Komponenten Speicher Grafikarten...... hängen am Systembus Processor (CPU) Memory Systembus Input Output 4
Computer-Aufbau: PC Pentium CPU Systembus ist aufgeteilt Northbridge Schnell Für Speicher Für Grafikkarte Southbridge Langsam Für PCI-Bus Für USB-Bus Für Festplatte IDE/ATA-Bus Computer sind hierarchisch aufgebaut. Selbst Busse haben eine Hierarchie. Foto Hardwaregrundlagen.de 5
Bussyteme Grundkonzept Datenverbindung von Modulen Zwei Module können zu einem Zeitpunkt miteinander kommunizieren Zeitliche Aufteilung der Kommunikation Processor (CPU) Memory Systembus Input Output Bus Adresse Kontrolle Daten Bündel an Leitungen Unidirektional: Adressen Bidirektional: Daten d 0 d 1 d 2 d 3 d 4 d 5... d 30 d 31 GND 6
Busse Vorteile Modularer Aufbau Skalierbarkeit Wiederverwendung von Ressourcen Busleitungen Reusability ( Wiederverwendbarkeit ) z.b. Netzwerk-Chip Einheitliche Kommunikation CPU Memory Systembus Grafik Netzwerk... Nachteile Throughput Bottleneck ( Flaschenhals ) Module teilen sich Bus-Bandbreite Niedrige Taktfrequenz Alternative N-zu-N Verbindung Zu viele Leitungen Z.b. N=10 Module mit 32-Bit Bus: 10*(10-1)/2*32 = 1440 Datenleitungen Memory CPU Netzwerk Grafik 7
Bus-Timing Was wird in Timing-Diagramm dargestellt? Adressen Kontrollsignale Daten Zeitverhalten Synchrone Datenübertragung Bustakt Langsamer als Prozessortakt Bandbreite von Bussen Taktfrequenz * Busbreite 33 MHz * 32-Bit = 132 MB/s Processor (CPU) Memory Systembus Input Output Clk Addr R/W Data 1 2 3 Addr1 Addr2 Addr3 Read Read Write Instr Data Result 7.5 ns 8
Busbeispiel: PCI 32 AD 32-Bit Bus Adress- und Daten-Multiplexing 33 MHz Bustakt 132 MB/s Durchsatz Maximalwert 4 PAR C/BE Parität Buskommando Adresse, Daten PCI-Karte Idsel Devsel Stop Irdy Trdy Frame Serr Perr Kontrollsignale Gnt Req Rst Clk Reset Clock (Takt) Clk Frame AD C/BE Beispiel: Schreibzugriff Minimale Transaktion Mindestens zwei Takte» Adressierung» Datenübertragung 1 2 3 4 Adresse Daten1 Command BE1 BE2 Adressphase Datenphase Daten2 Datenphase 9
Bus-Signale Input Analoge Darstellung digitaler Information Als Spannung Ausbreitungsgeschwindigkeit 2/3 Lichtgeschwindigkeit 133 MHz: 150 cm (in 7,5 ns) 1 GHz: 20 cm (in 1 ns) Ideal t Leitung Real t RC-Effekt Output R: Resistance ( Widerstand ) C: Capacitance ( Kapazität ) R, C durch Nichtidealität der Bauteile (Transistoren, Leiterbahnen) Verzögert Signale Delay Langsamer Flankenanstieg Wärme R C 10
Digitale Signale CMOS-Technologie CMOS: Complementary Metal-Oxide Semiconductor Komplementärer Metall-Oxyd Halbleiter Logik-Pegel Hängen von Spannungsversorgung ab CMOS-Schaltungen restaurieren Signal Gängige Logikpegel (Angaben in Volt) Eingang Ausgang Foto Wikipedia/Grabert Technik CMOS 5V CMOS 2,5V CMOS 1,8V Low (VIL) High (VIH) Low (VOL) High (VOH) 1,5 3,5 0,5 4,44 0,7 1,7 0,2 2,3 0,7 1,17 0,45 1,2 11
Simple CPU Microchip PIC16F54 8-Bit Controller 768 Byte ROM Flash-Speicher 25 Byte RAM 10 MHz Clock Preis: 0.44 US$ 33 Instruktionen Foto Microchip 12
Fetch-Execute Von Neumann Architektur Einheitlicher Speicher Für Daten und Programme Fetch-and-Execute Algorithmus Sequentielle Instruktionsabarbeitung Fetch Instruktion lesen Instruktion dekodieren Operanden lesen Execute Operation ausführen Ergebnis speichern CPU Control Unit Enorme Anzahl an Instruktionen pro Sekunde (GHz) ALU Macht aus einfachen Instruktionen komplexe Software Computer Memory Fetch Execute 13
Fetch-Execute: Komponenten Was benötigt eine CPU für Fetch-Execute? Control Unit Steuert CPU Abläufe Datenübernahme von Registern Wählt Operation von ALU Instruction pointer Speicheradresse mit aktueller Instruktion Instruction register Aktuelle Instruktion Memory Address und Memory Buffer Register Speicher-Interface ALU Exekutiert Instruktionen Register / Akkumulator Mini-Speicher für Operanden und Ergebnis Control Unit Control IP Instr. pointer IR Instr. Register MAR Mem. addr. Reg. Address CPU MBR Mem. Buf. Reg. Data Memory EAX EAX EAX EAX Accumulator ALU Arithm. Logic Unit Systembus 14
Nach dem Reset Nach Reset... Stabile Versorgungsspannung Stabiler Takt... beginnt CPU Instruktionen abzuarbeiten Die erste Instruktion Liegt an fixer Adresse Meist 0x00000000 Control Unit Control IP Instr. 00000000 pointer IR Instr. Register MAR Mem. addr. Reg. Address CPU MBR Mem. Buf. Reg. Data Memory EAX EAX EAX EAX Accumulator ALU Arithm. Logic Unit Systembus Instr. 1 00000005 Instr. 0 00000000 15
Instruction Fetch Fetch = Holen aktueller Instruktion aus Speicher Instruction pointer zeigt auf aktuelle Speicheradresse 1. Speicher adressieren Memory Address Register Übernimmt Adresse von IP Lesezugriff auf Systembus 2. Wert auslesen Memory Buffer Register Übernimmt Wert ( Datum ) aus Memory Instruction Register Speichert Instruktion» Kopie von Memory Control Unit Control read IP 00000000 Instr. pointer IR Instr. Register 0 MAR Mem. 00000000 addr. Reg. Address 1. 00000000 CPU MBR Mem. Instr. Buf. Reg. 0 Data Memory Instr. 0 EAX EAX EAX EAX Accumulator ALU Arithm. Logic Unit 2. Systembus Instr. 1 00000005 00000000 16
Instruction Decode Decode Control Unit Erkennt Instruktion am Opcode Z.B. 0x05 = ADD EAX, immediate» Addiere konstanten 32- Bit Wert zu EAX Register u.u. Fetch von Operanden nötig Weiterer Speicher- Zugriff nötig Instruction Pointer Wird erhöht sobald Instruction-Fetch abgeschlossen Control Unit ADD EAX,... Control IP Instr. IP++ pointer IR Instr. 05 Register MAR Mem. addr. Reg. Address CPU MBR Mem. Buf. Reg. Data Memory EAX EAX EAX EAX Accumulator ALU Arithm. Logic Unit Systembus 17
Operand Fetch Operand Fetch Speicherzugriff ähnlich wie bei Instruction Fetch Immediate Operand Speicherzugriff Folgt immer direkt auf Instruktions- Opcode Instruction-Pointer zeigt darauf! Immer Sequentiell! Memory hat nur...... einen Adressbus... einen Datenbus Control Unit Control IP 00000001 Instr. pointer IR Instr. Register MAR Mem. 00000001 addr. Reg. Address 00000001 CPU MBR Mem. 0000008 Buf. Reg. Data Memory EAX EAX EAX EAX Accumulator ALU Arithm. Logic Unit Systembus Instr. 1 00000005 0000008 00000001 05 00000000 18
Execute Execute Control Unit ALU Wählt ALU-Operation aus Wählt Operanden aus Berechnet Operation Hier: Addition Weitere Operationen von ALUs» Add, Subtract» Increment, Decr.» AND, OR, XOR» Shift left / right» Rotate left / right Control Unit Control IP CPU Memory EAX EAX EAX EAX Instr. IP += pointer 4 Accumulator 0000010 IR Instr. Register MAR Mem. addr. Reg. Address MBR Mem. 0000008 Buf. Reg. Data ALU Arithm. Logic Unit ADD 0000018 Systembus Instr. 1 00000005 0000008 00000001 05 00000000 19
Store Result Store Ergebnis speichern Ziel: Entweder Prozessor-Register Oder Speicheradresse Load / Store Architektur Operanden müssen in Register stehen Bei Pentium nicht der Fall Ergebnis nur in Register speichern möglich Auch bei Pentium Separate Instruktionen für Memory-Zugriff (load, store) Verwenden viele Prozessoren (RISC) Beispiel: memc = mema + memb 2 Load-, 1 Store-, 1 Add- Instruktion nötig Control Unit Control IP Instr. pointer IR Instr. Register MAR Mem. addr. Reg. Address CPU MBR Mem. Buf. Reg. Data Memory EAX EAX EAX EAX Accumulator 0000010 ALU Arithm. Logic Unit 0000018 Systembus 20
Instruktionszyklus Phasen der Instruktions- Abarbeitung 1. Fetch instruction 2. Decode instruction 3. Fetch operand 4. Execute operation 5. Store result Clk Phase Instruktion dauert 1 2 3 4 Fetch Decode Operand Exec Mehrere Prozessortakte Meist 5 oder 6 Takte Memoryzugriffe bilden Flaschenhals Instruction Cycle 5 Store 21
Pre-Fetching Beschleunigt Fetch-Execute Algorihtmus Nutzt leere Buszyklen... Zyklen ohne Speicherzugriff... Zum Fetchen der nächsten Instruktion Benötigt Zusätzlichen Speicher in CPU IR Instr. Register Pre-fetch queue Fetch1 Fetch2 Exec1 Fetch3 Exec2 Pre-Fetching Parallelisiert Abarbeitung von Instruktionen Probleme Programmverzweigungen Pre-Fetch-Instruktionen müssen u.u. verworfen werden Hardware macht prinzipiell alles parallel! Fetch4 Exec3 Fetch4' Fetch5 Exec4 Exec5 22
Pipelining of Fetch/Execute Pipelining Verfünffachung des Durchsatzes Nur bei 100% Fetch1 Fetch2 Fetch3 Fetch4 Fetch5... Füllung der Pipeline Instruktionstakt = Prozessortakt Decod1 Decod2 Decod3 Decod4 Decod5 Jede Instruktion dauert fünf Takte Fünf Instruktionen in Pipe Probleme Datenabhängigkeiten Von Instruktionen Verzweigungen im Programm Memory-Flaschenhals muss durch Caches eliminiert werden Verwendung von Caches für Instruktionen und Daten Schneller Zwischenspeicher Wesentlich weniger Speicherkapazität als DRAM RISC-Prozessoren sind besser für Pipelining geeignet 1 2 3 4 5 6 7 8... Oprnd1 Oprnd2 Oprnd3 Oprnd4 Oprnd5... Exec1 Exec2 Exec3 Exec4 Exec5 Store1 Store2 Store3 Store4 23
Simple IO Memory-mapped IO Input/Output in Speicher eingeblendet Aus Softwaresicht kein Unterschied Address-Decoder Address Generiert Chip-select Signale Adressraum wird aufgeteilt CS Data Mem Systembus Address Address Decoder 7FFF 0000 CS Chip Select IO Address Data Input Output 80ff 8000 CPU benötigt Keine zusätzlichen IO- Instruktionen IO-Module benötigen Datenregister Kontrollregister Statusregister Not Used IO 32K RAM FFFF 8100 80ff 8000 7FFF 0000 24
Simple IO: Beispiel mit PIC 16F54 Memory-mapped IO D[0] D Q Pin RB0 D[1] D Q Pin RB1 D[2] D Q Pin RB2... Pin RB7 D[7] D Q Write_PortB PIC 16F54 Timing Diagram Write_PortB D[7:0] RB[7:0] RB[7] A5 IO-Programmierung A5 BCF PORTB, 7 Bit Clear on PORTB in Bit 7 Bit-7 in Register PortB wird 0 Output-Pin RB7 wird LOW MOVLW H`A5` MOVWF Foto Microchip PORTB Move literal A5 to W-register Move W-register to PortB RB0 = 1, RB1 = 0, RB2 = 1, RB3 = 0, RB4 = 0, RB5 =1, RB6 = 0, RB7 = 1 25
Zusammenfassung Bussysteme Ermöglichen modularen Aufbau Von Computern Prozessoren arbeiten einfach Fetch-Execute Algorithmus Input / Output Mit memory-mapped IO möglich Literatur: Rob Williams, Computer Systems Architecture, Addision-Wesley, 2001: Kapitel 3. 26