Aufbau und Funktionsweise einer CPU 28.03.17 Mikroprozessor-Simulation
Motherboard CPU RAM 28.03.17 Mikroprozessor-Simulation
Motherboard 28.03.17 Mikroprozessor-Simulation CPU RAM Register ... 00000010 00111000 Adresse Inhalt 00000000 10010101 00000001 01100010 ... Register AX BX ... ... Datenbus ... Steuerbus Steuerwerk ALU ... Adressbus 28.03.17 Mikroprozessor-Simulation
Adressbus 28.03.17 Mikroprozessor-Simulation Der Adressbus ist für die Übertragung der Speicheradressen zuständig. Maximal adressierbare Speicherplätze = 2 Anzahl der Adressleitungen Prozessoren (Intel) Adressbus max. RAM Jahr 8080 16 Bit 64 Kbyte 1974 8086/8088 20 Bit 1 MByte 1978 80286 24 Bit 16 MByte 1982 80386 32 Bit 4 GByte 1985 Pentium 36 Bit 64 GByte 1995 und folgende 28.03.17 Mikroprozessor-Simulation
MikrSimD 28.03.17 Mikroprozessor-Simulation Mikroprozessor Simulationsprogramm von Konrad Dammeier nach einem DOS-Programm von Werner Simon. Busbreite 8 Bit 256 Speicherplätze 6 Register AR, DR, AX, BX, IP, OP und ein Flag SF Register und RAM- Plätze fassen jeweils ein Datenwort von 1 Byte = 8 Bit. Darstellung hexadezimal 00 – FF Tore 0 – F zur Steuer- ung des Datenflusses Ausgangstore: ungerade Eingangstore: gerade 28.03.17 Mikroprozessor-Simulation
Tor 28.03.17 Mikroprozessor-Simulation Ein Tor ist ein UND-Gatter. Ein Eingang ist die Steuerleitung, am anderen Eingang liegt das zu steuernde Signal. Steuerleitung Signal 28.03.17 Mikroprozessor-Simulation
1. Rechen- und Transportoperationen 1.) AX := DR DR 08 Tore 0, 9 2.) AX := AX + DR DR 05 Tore 0, 1, 9 Bus-Takt: Ausgangstore Eingangstore ALU-Takt: Beide Bustakte hintereinander 3.) AX := AX – DR Tore 0, 1, 9, D 28.03.17 Mikroprozessor-Simulation
Übungen - 1 28.03.17 Mikroprozessor-Simulation Setzen Sie mit dem Menübefehl ClearRegister alle Register auf 00 und tragen Sie dann in DR „von Hand“ den Wert 09 ein. Ab jetzt dürfen in dieser Übung die Register nicht mehr von Hand beschrieben werden. a) AX := DR, IP := DR b) BX := IP + DR c) IP := -1 d) IP := IP + 1 e) AX := AX - BX f) setzen Sie alle Register auf 0 (nicht mit ClearRegister) 0, 4, 9 2, 5, 9 4, 7, D 4, 5, 7 3, A und dann 0, 1, 9, D 0, 2, 4, 6, A 28.03.17 Mikroprozessor-Simulation
2. Verwendung des MPS 28.03.17 Mikroprozessor-Simulation MPS: Mikroprogrammspeicher Jeder Mikrobefehl ist 24 Bit groß. Die ersten 16 Bit sind über Steuerleitungen (nicht sichtbar) mit den Toren 0 – F verbunden. Die nächsten 8 Bit (hexadezimal dargestellt) liefern die Adresse des, als nächstes auszuführenden Mikrobefehls. Ist die Folgeadresse FA 00, dann Stopp. AX := AX – BX Tore 3, A 0, 1, 9, D FA 00 28.03.17 Mikroprozessor-Simulation
3. RAM - Zugriff 28.03.17 Mikroprozessor-Simulation Der RAM-Speicher ist über den Adressbus und den Datenbus mit der CPU verbunden. Der Datenverkehr erfolgt über AR (Adressregister) und DR (Datenregister). RAD: RAM-Adresse Lesen aus RAM AX := RAM[13] Kommentar Tore DR := RAM[13] C AX := DR 0, 9 FA 00 Schreiben in RAM RAM[BX] := AX Kommentar Tore AR := BX 3, 8 DR := AX 1, A RAM[AR] := DR B FA 00 28.03.17 Mikroprozessor-Simulation
Übungen - 2 28.03.17 Mikroprozessor-Simulation a) Füllen Sie die ersten 3 RAM-Plätze mit 1, 3, 5 ohne das RAM- Fenster direkt zu benutzen und ohne direktes Schreiben in ein Register. b) Die Summe der Zahlen aus RAM[00], RAM[01] und RAM[02] soll nach RAM[03]. 28.03.17 Mikroprozessor-Simulation
4. Realisierung einzelner Maschinenbefehle MPS Eine Zeile im MPS heißt Mikrobefehl. Eine Folge von Mikrobefehlen heißt Mikroprogramm. Mikrobefehle / Mikroprogramme sind prozessorabhängig (Torbezeichnung). Mikroprogramme können grundsätzliche Funktionalitäten der CPU realisieren. Transportbefehl AX := RAM[nn] nn steht im DR AR := DR 8, 9 DR := RAM[AR] C AX := DR 0, 9 FA 00 Maschinenbefehl MOV AX,[nn] Mikroprogramm Ein Maschinenbefehl ist prozessorunabhängig! 28.03.17 Mikroprozessor-Simulation
4. Realisierung einzelner Maschinenbefehle Maschinenbefehl MOV AX,[nn] Operator Operand Die Bezeichnung MOV für diese Operation nennt man Mnemonik. Gibt man Maschinenbefehle mit Hilfe von Mnemoniks an, so spricht man von der Assemblerschreibweise der Maschinenbefehle. Transportbefehl MOV [nn],AX nn steht im DR AR := DR 8, 9 DR := AX 1, A RAM[AR] := DR B FA 00 MOV AX,[nn] im MPS ab Adresse 10, MOV [nn],AX ab 13 eingeben. 28.03.17 Mikroprozessor-Simulation
4. Realisierung einzelner Maschinenbefehle Rechenbefehl ADD AX,[nn] nn steht im DR AR := DR 8, 9 DR := RAM[AR] C AX := AX + DR 0, 1, 9 FA 00 ADD AX,[nn] im MPS ab Adresse 20 eingeben. 28.03.17 Mikroprozessor-Simulation
5. Halbautomatische Ausführung eines Maschinenprogramms Maschinenprogramm zur Berechnung von RAM[0C] := RAM[0A] + RAM[0B] Assembler- Startadresse DR schreibweise im MPS MOV AX,[0A] 10 0A ADD AX,[0B] 20 0B MOV [0C],AX 13 0C Ist Tor F geöffnet, dann gilt für die Folgeadresse FA FA := FA + OP Damit ein Maschinenbefehl halbautomatisch ablaufen kann, muss jeweils die Startadresse des Mikroprogramms in OP und der Operand in DR. Außerdem erste Zeile im MPS: Tor F und FA 00 28.03.17 Mikroprozessor-Simulation
6. Vollautomatische Ausführung eines Maschinenprogramms Von Neumann Prinzip: Daten und Programm im RAM. Dadurch sind Verzweigungen (Sprünge) möglich. Jeder Maschinenbefehl wird durch 2 Bytes dargestellt MOV AX,[nn] 10 nn Diese beiden Bytes stehen im RAM RAD Inhalt 00 10 01 0A 02 20 03 0B 04 13 05 0C 06 4F (HALT) 07 00 Maschinenbefehl HALT in Adresse 4F Tore 4, 6 FA 4F 28.03.17 Mikroprozessor-Simulation
6. Vollautomatische Ausführung eines Maschinenprogramms Holphase (eines Maschinenbefehls) Operator und Operand werden aus dem RAM geholt MOV AX,[1A] 10 1A ADD AX,[1B] 20 1B MOV [1C],AX 13 1C HALT 4F 00 Ausführungsphase (eines Maschinenbefehls) bis HALT Holphase (Start mit IP 00) OP := RAM[IP] INC IP DR := RAM[IP] do command 28.03.17 Mikroprozessor-Simulation
Übungen - 3 28.03.17 Mikroprozessor-Simulation RAM[1D] := RAM[1A] + RAM[1B] – RAM[1C] Dazu Maschinenbefehl SUB AX,[nn] ab Adresse 23 (nn steht in DR) SUB AX,[nn] AR := DR DR := RAM[AR] AX := AX - DR 8, 9 C 0, 1, 9, D FA 00 28.03.17 Mikroprozessor-Simulation
7. Unbedingter Sprung - JMP nn Unbedingter Sprung JMP an die RAD nn (nn steht im DR) JMP nn Tore 4, 9 FA 00 ab 42 Übung: Fortlaufende Addition wiederhole immer a := a + b RAM[1A] := RAM[1A] + RAM[1B] 3 2 Maschinenprogramm Assemblerschreibweise Maschinensprache MOV AX,[1A] 10 1A ADD AX,[1B] 20 1B MOV [1A],AX 13 1A JMP 00 42 00 28.03.17 Mikroprozessor-Simulation
8. Bedingter Sprung - JS nn Bei einem bedingten Sprung wird die Ausführung vom Zustand des Flags SF (Sign Flag) abhängig gemacht. SF = 1, wenn AX eine negative Zahl enthält, sonst SF = 0 Ist Tor E geöffnet, dann wird der Inhalt von SF zur Berechnung der FA verwendet. FA := FA + SF Sprung JS an die RAD nn (nn steht im DR), wenn SF = 1 ist.. JS nn ab 46 AD Tore FA 46 E 47 wenn SF=1 dann sonst 47 00 Ende von JS 48 4, 9 00 weiter mit nn 28.03.17 Mikroprozessor-Simulation
MiSiInt.mpd 28.03.17 Mikroprozessor-Simulation Die Datei MiSiInt.mpd enthält einen Interpreter für einen sinnvollen Befehlssatz für MikrSimD. 28.03.17 Mikroprozessor-Simulation
Übungen – 4 c := a * b (a >= 0) RAM[1C] := RAM[1A] * RAM[1B] c a b c := a * b = b + b + ... + b Start SUB AX,AX MOV [1C],AX (ab 2E) (ab 3D) c := 0 c := 0 MOV AX,[1A] DEC AX MOV [1A],AX a := a - 1 a := a - 1 a < 0 JS c := c + b nein MOV AX,[1C] ADD AX,[1B] MOV [1C],AX c := c + b Ende ja JMP HALT 28.03.17 Mikroprozessor-Simulation
Multiplikation 28.03.17 Mikroprozessor-Simulation RAD 00 2E SUB AX,AX 01 00 02 13 MOV [1C],AX 03 1C 04 10 MOV AX,[1A] 05 1A 06 3D DEC AX 07 00 08 13 MOV [1A],AX 09 1A 0A 46 JS 0B 14 0C 10 MOV AX,[1C] 0D 1C 0E 20 ADD AX,[1B] 0F 1B 10 13 MOV [1C],AX 11 1C 12 42 JMP 13 04 14 4F HALT 15 00 SUB AX,AX (ab 2E) DR := AX 1, A AX := AX – DR 0, 1, 9, D FA 00 DEC AX (ab 3D) AX := AX – 1 0, 1, 7, D FA 00 28.03.17 Mikroprozessor-Simulation
Übungen - 5 28.03.17 Mikroprozessor-Simulation 1.) a : b = c Rest d 2.) ggT (a,b) Bsp.: ggt (52,20) 52 – 20 = 32 32 – 20 = 12 12 – 20 < 0 20 – 12 = 8 8 – 12 < 0 12 – 8 = 4 4 – 8 < 0 8 – 4 = 4 4 – 4 = 0 ggt (52,20) = 4 28.03.17 Mikroprozessor-Simulation