Der Simple As Possible Computer Entwicklung seiner Architektur während der (simulierten) Ausführung eines kleinen Programms
Erläuterung zur Präsentation Die Präsentation verwendet Animationen, um Kontrollsignale und Datenflüsse zu veranschaulichen. Wenn eine automatische Animation stattfinden wird, muss der Betrachter einen Moment warten. Ein (w) am Ende eines Textes weist darauf hin. Ist eine Animation bereits abgeschlossen, zeigt ein ® an, dass die Präsentation mit der Taste RETURN weitergeführt wird.
Voraussetzungen aus Kapitel 4 Der SAP kennt die Befehle LDA Adr - Lade Inhalt der Speicherzelle mit der Nummer Adr in das Register Akkumulator ADD Adr - Addiere zum Inhalt des Akkumulators den Inhalt der Speicherzelle mit der Nummer Adr und speichere das Ergebnis im Akku SUB Adr - Subtrahiere vom Inhalt des Akkumulators den Inhalt der Speicherzelle mit der Nummer Adr und speichere das Ergebnis im Akku OUT - Der Inhalt des Akkumulators wird in das OUTPUT-Register übertragen HALT - Die Programmausführung wird beendet (das Clocksignal wird nicht mehr erzeugt)®
Das Programm: LDA 9 ADD A ADD B SUB C OUT HLT Die Aufgabe des Programms sei die Addition : 1+2+3-4® Die Operanden 1,2,3 und 4 stehen im Speicher an den Adressen 9-CH®
Das Programm im Speicher Die Verbindung zwischen MAR und Speicher ist TWO-State ,d.h. MAR wirkt ständig auf den Speicher ! ® MAR=0 0 0000 1001 1 0001 1010 2 0001 1011 3 0010 1100 4 1110 0000 5 1111 0000 6 7 8 9 0000 0001 A 0000 0010 B 0000 0011 C 0000 0100 D E F Zur Ausführung des Programms muss der 1. Befehl in Adr. 0 angesprochen werden. Dafür braucht man ein Memory Address Register in dem immer die Nummer der gerade gewünschten Speicherzelle steht Das MAR muss sowohl Befehle als auch die Operanden der Befehle addressieren können ®
Der Program Counter 8 Da alle Befehle von Adresse 0 bis 5 nacheinander ausgeführt werden sollen, braucht man ein Register, das die jeweilige Nummer enthält: Program Counter PC. ® CP PC = 0 Clk EP LM MAR = 0 Clk PC ist ein Zählerregister, das mit 0 initialisiert ist und bei Bedarf - wenn CP (d.h., Count PC) high ist - den Inhalt um den Wert eins inkrementiert. ® 0 0000 1001 1 0001 1010 2 0001 1011 3 0010 1100 4 1110 0000 5 1111 0000 … 9 0000 0001 A 0000 0010 B 0000 0011 C 0000 0100 Die Datenübertragung PC -> MAR erfolgt über einen internen Bus bei der nächsten positiven Flanke wenn Enable Program Counter (EP) und Load MAR (LM) high ist ® Die Kontrollsignale CP, EP und LM werden wie alle weiteren von der Ablaufsteuerung ABL erzeugt.® LM EP ABL CP
Lesen des 1. Befehls – LDA 9 PC = 0 Clk CP Zum Lesen des 1. Befehls 0000 1001 (LDA 9) muss die ABL das Signal CE auf high setzen, damit die Daten auf den Bus gelegt werden. ® EP MAR = 0 Clk LM Ein Instruktionsregister IR übernimmt das Datum. Dafür muss das Signal Load IR (LI) von der ABL gleichzeitig mit CE auf high gesetzt werden. Bei der nächsten positiven Flanke des Clocksignals wird der Befehl übernommen. ® 0 0000 1001 1 0001 1010 2 0001 1011 3 0010 1100 4 1110 0000 5 1111 0000 … 9 0000 0001 A 0000 0010 B 0000 0011 C 0000 0100 CE 0000 1001 IR Clk LI 8 ABL CP EPLMCELI
Dekodieren des Befehls u. Operand holen PC = 0 Clk CP Die oberen 4 Bit (opcode des Befehls) werden über TWO-State Verbindung an die ABL übertragen. Diese dekodiert den Opcode und ‘weiss’, dass LDA einen Operanden erfordert, dessen Adresse in den unteren 4 Bit des Befehls enthalten ist. (w) EP MAR=0 Clk LM LM 1001 Clk 0 0000 1001 1 0001 1010 2 0001 1011 3 0010 1100 4 1110 0000 5 1111 0000 … 9 0000 0001 A 0000 0010 B 0000 0011 C 0000 0100 Mit dem Signal EI werden die unteren 4 Bit auf den Datenbus gegeben und mit LM die 9 (1001) ins Adressregister MAR übertragen(w) 1001 CE 0000 1001 Clk LI EI 0000 ABL CP EPLMCE LIEI CP EPLMCE LI
Operand in Akkumulator ablegen PC = 0 Clk CP Akku Clk LA LA 0000 0001 Clk EP 1001 Clk LM LDA heisst, lade einen Wert in das Register Akkumultaor. Wir erweitern den SAP um dieses 8 Bit Register und schliessen es an den Bus an.® 0 0000 1001 1 0001 1010 2 0001 1011 3 0010 1100 4 1110 0000 5 1111 0000 … 9 0000 0001 A 0000 0010 B 0000 0011 C 0000 0100 Zum Lesen des Operanden an Adresse 9 (1001) setzt die ABL die Signal CE und LA auf high. Im Akkumulator wird der Operand 0000 0001 gespeichert (w) CE 0000 0001 0000 1001 Clk LI 8 ABL CP EPLMCELILA
Inkrementieren des Befehlszählers PC = 0 Clk CP PC = 0 Clk CP PC = PC+1 Clk CP Akku Clk LA EP 1001 Clk LM Damit der nächste Befehl bearbeitet werden kann, wird der Programcounter PC um eins erhöht. Die ABL setzt Count Programmcounter (CP) auf high, so dass beim nächsten Clocksignal der Programmcounter PC auf 1 gesetzt wird. (w) 0 0000 1001 1 0001 1010 2 0001 1011 3 0010 1100 4 1110 0000 5 1111 0000 … 9 0000 0001 A 0000 0010 B 0000 0011 C 0000 0100 CE 0000 1001 Clk LI 8 ABL CP EPLMCELILA
Adressieren des 2. Befehls – ADD A MAR = 1 CP Akku Clk LA PC = 1 Clk EP LM MAR = 0 Clk Die ABL setzt Enable Program Counter (EP) und Load MAR (LM) auf high. Bei der nächsten positiven Flanke wird das MAR mit dem PC geladen. Das RAM dekodiert die MAR Adresse .® 0 0000 1001 1 0001 1010 2 0001 1011 3 0010 1100 4 1110 0000 5 1111 0000 … 9 0000 0001 A 0000 0010 B 0000 0011 C 0000 0100 0000 1001 Clk LI 8 ABL CP EPLMCELILA
Lesen des 2. Befehls 8 PC = 1 Akku MAR = 1 Clk CP Akku Clk LA EP MAR = 1 Clk LM Zum Lesen des 2. Befehls 0001 1010 (ADD A) muss die ABL das Signal CE auf high setzen, damit die Daten auf den Bus gelegt werden. Das Instruktionsregister IR soll das Datum übernehmen. Load IR (LI) wird von der ABL gleichzeitig mit CE auf high gesetzt® 0 0000 1001 1 0001 1010 2 0001 1011 3 0010 1100 4 1110 0000 5 1111 0000 … 9 0000 0001 A 0000 0010 B 0000 0011 C 0000 0100 Bei der nächsten positiven Flanke des Clocksignals wird der Befehl übernommen.(w) CE 0001 1010 0001 1010 Clk LI IR Clk LI 8 ABL CP EPLMCELI
Dekodieren des Befehls u. Operand holen PC = 1 Clk CP Akku Clk LA EP LM MAR=1 Clk LM 1010 Clk 0 0000 1001 1 0001 1010 2 0001 1011 3 0010 1100 4 1110 0000 5 1111 0000 … 9 0000 0001 A 0000 0010 B 0000 0011 C 0000 0100 Die oberen 4 Bit (opcode des Befehls) werden wieder über die TWO-State Verbindung an die ABL übertragen. Diese dekodiert den Opcode und ‘weiss’, dass ADD einen Operanden erfordert, dessen Adresse in den unteren 4 Bit des Befehls enthalten ist.(w) 1010 CE Mit dem Signal EI werden die unteren 4 Bit auf den Datenbus gegeben und mit LM der Wert Ahex (1010) ins Adressregister MAR übertragen(w) 0001 1010 Clk LI EI ABL 0001 CP EPLMCE LIEI CP EPLMCE LIEI
Summand ablegen 8 PC = 1 0000 0001 1010 0000 0010 Register B Clk CP 0000 0001 Clk LA EP 1010 Clk LM 0 0000 1001 1 0001 1010 2 0001 1011 3 0010 1100 4 1110 0000 5 1111 0000 … 9 0000 0001 A 0000 0010 B 0000 0011 C 0000 0100 0000 0010 Clk LB Register B Clk LB ADD bedeutet, lade einen Wert in das Register B und addiere es mit dem Akkumultaor. Wir erweitern den SAP um dieses 8 Bit Register und schliessen es an den Bus an.® CE 0000 0010 Zum Lesen des Operanden an Adresse A (1010) setzt die ABL die Signale CE und LB auf high. Im Register B wird der Operand 0000 0010 gespeichert(w) 0000 1010 Clk LI 8 ABL CP EPLMCELILALB
Addition durchführen 8 0000 0011 PC = 1 0000 0001 1010 0000 0011 Clk LA PC = 1 Clk CP 0000 0001 Clk LA EP 1010 Clk LM Rechenwerk ALU EU EU 0000 0011 0 0000 1001 1 0001 1010 2 0001 1011 3 0010 1100 4 1110 0000 5 1111 0000 … 9 0000 0001 A 0000 0010 B 0000 0011 C 0000 0100 0000 0010 Clk LB Zur Addition der Operanden in den Registern Akkumulator und Register B benötigt der SAP ein Rechenwerk. Es wird über TWO-State Verbindungen an die beiden Register angeschlossen. Die ALU addiert die Werte der beiden Eingänge ® CE 0001 101 Clk LI 8 Das Ergebnis wird wieder im Akkumulator abgelegt. Dafür setzt die ABL das Enable Unit (EU) und Load Akku (LA) auf high. (w) ABL CP EPLMCELILALBEU
Inkrementieren des Befehlszählers PC = PC+1 Clk CP 0000 0011 Clk LA EP 1010 Clk LM Rechenwerk ALU EU 0000 0101 0 0000 1001 1 0001 1010 2 0001 1011 3 0010 1100 4 1110 0000 5 1111 0000 … 9 0000 0001 A 0000 0010 B 0000 0011 C 0000 0100 0000 0010 Clk LB Damit der nächste Befehl bearbeitet werden kann, wird der Programcounter PC um eins erhöht. Die ABL setzt Count Programmcounter (CP) auf high, so dass beim nächsten Clocksignal der Programmcounter PC auf 2 gesetzt wird. (w) CE 0000 1001 Clk LI 8 Und was macht währenddessen die ALU? Die addiert die aktuellen Operanden 2+3® ABL CP EPLMCELILALBEU
Adressieren des 3. Befehls – ADD B MAR = 2 CP Akku Clk LA PC = 2 Clk EP LM MAR = A Clk Rechenwerk ALU EU 0 0000 1001 1 0001 1010 2 0001 1011 3 0010 1100 4 1110 0000 5 1111 0000 … 9 0000 0001 A 0000 0010 B 0000 0011 C 0000 0100 0000 0010 Clk LB Die ABL setzt Enable Program Counter (EP) und Load MAR (LM) auf high. Bei der nächsten positiven Flanke wird das MAR mit dem PC geladen. Das RAM dekodiert die MAR Adresse . 0000 1001 Clk LI 8 ABL CP EPLMCELILA
Lesen des 3. Befehls 8 PC = 2 Akku MAR = 2 Register B Clk CP Akku Clk LA EP MAR = 2 Clk LM Rechenwerk ALU EU 0 0000 1001 1 0001 1010 2 0001 1011 3 0010 1100 4 1110 0000 5 1111 0000 … 9 0000 0001 A 0000 0010 B 0000 0011 C 0000 0100 Register B Clk LB Zum Lesen des 3. Befehls 0001 1011 (ADD B) muss die ABL das Signal CE auf high setzen, damit die Daten auf den Bus gelegt werden. Das Instruktionsregister IR soll das Datum übernehmen. Load IR (LI) wird von der ABL gleichzeitig mit CE auf high gesetzt® CE 0001 1011 0001 1010 Clk LI IR Clk LI 8 Bei der nächsten positiven Flanke des Clocksignals wird der Befehl übernommen.(w) ABL CP EPLMCELI
Dekodieren des Befehls u. Operand holen PC = 2 Clk CP Akku Clk LA EP LM MAR=1 Clk LM 1011 Clk Rechenwerk ALU EU 0 0000 1001 1 0001 1010 2 0001 1011 3 0010 1100 4 1110 0000 5 1111 0000 … 9 0000 0001 A 0000 0010 B 0000 0011 C 0000 0100 Register B Clk LB Die oberen 4 Bit (opcode des Befehls) werden wieder über die TWO-State Verbindung an die ABL übertragen. Diese dekodiert den Opcode und ‘weiss’, dass ADD einen Operanden erfordert, dessen Adresse in den unteren 4 Bit des Befehls enthalten ist. 1010 CE 0001 1011 Clk LI EI Mit dem Signal EI werden die unteren 4 Bit auf den Datenbus gegeben und mit LM der Wert Bhex (1011) ins Adressregister MAR übertragen 0001 ABL CP EPLMCE LIEI CP EPLMCE LIEI
Summand ablegen 8 PC = 2 0000 0011 1011 Register B 0000 0010 0000 0011 Clk CP 0000 0011 Clk LA EP 1011 Clk LM Rechenwerk ALU EU 0 0000 1001 1 0001 1010 2 0001 1011 3 0010 1100 4 1110 0000 5 1111 0000 … 9 0000 0001 A 0000 0010 B 0000 0011 C 0000 0100 Register B Clk LB 0000 0010 Clk LB 0000 0011 Clk LB 0000 0011 Clk LB ADD bedeutet wieder, lade einen Wert in das Register B und addiere es mit dem Akkumulator.® CE 0000 0011 Zum Lesen des Operanden an Adresse B (1011) setzt die ABL die Signale CE und LB auf high. Im Register B wird der Operand 0000 0011 gespeichert(w) 0001 1011 Clk LI 8 ABL CP EPLMCELIEILALB
Addition durchführen 8 0000 0110 PC = 2 0000 0011 1011 0000 0110 Clk LA PC = 2 Clk CP 0000 0011 Clk LA EP 1011 Clk LM Rechenwerk ALU EU EU 0000 0110 0 0000 1001 1 0001 1010 2 0001 1011 3 0010 1100 4 1110 0000 5 1111 0000 … 9 0000 0001 A 0000 0010 B 0000 0011 C 0000 0100 0000 0011 Clk LB Zur Addition der Operanden in den Registern Akkumulator und Register B benötigt der SAP ein Rechenwerk. Es wird über TWO-State Verbindungen an die beiden Register angeschlossen. Die ALU addiert die Werte der beiden Eingänge ® CE 0000 1011 Clk LI 8 Das Ergebnis wird wieder im Akkumulator abgelegt. Dafür setzt die ABL das Enable Unit (EU) und Load Akku (LA) auf high. (w) ABL CP EPLMCELIEILALBEU
Inkrementieren des Befehlszählers PC = PC+1 Clk CP 0000 0110 Clk LA EP 1011 Clk LM Rechenwerk ALU EU 0000 1001 0 0000 1001 1 0001 1010 2 0001 1011 3 0010 1100 4 1110 0000 5 1111 0000 … 9 0000 0001 A 0000 0010 B 0000 0011 C 0000 0100 0000 0011 Clk LB Damit der nächste Befehl bearbeitet werden kann, wird der Programcounter PC um eins erhöht. Die ABL setzt Count Programmcounter (CP) auf high, so dass beim nächsten Clocksignal der Programmcounter PC auf 3 gesetzt wird. (w) CE 0000 1011 Clk LI 8 Und was macht währenddessen die ALU? Die addiert die aktuellen Operanden 6+3® ABL CP EPLMCELIEILALBEU
Adressieren des 4. Befehls – SUB C MAR = 3 CP Akku Clk LA PC = 3 Clk EP LM MAR = B Clk Rechenwerk ALU EU 0 0000 1001 1 0001 1010 2 0001 1011 3 0010 1100 4 1110 0000 5 1111 0000 … 9 0000 0001 A 0000 0010 B 0000 0011 C 0000 0100 0000 0010 Clk LB Die ABL setzt Enable Program Counter (EP) und Load MAR (LM) auf high. Bei der nächsten positiven Flanke wird das MAR mit dem PC geladen. Das RAM dekodiert die MAR Adresse . 0000 1001 Clk LI 8 ABL CP EPLMCELIEILA
Lesen des 4. Befehls – SUB C PC = 3 Clk CP Akku Clk LA EP MAR = 3 Clk LM Rechenwerk ALU EU 0 0000 1001 1 0001 1010 2 0001 1011 3 0010 1100 4 1110 0000 5 1111 0000 … 9 0000 0001 A 0000 0010 B 0000 0011 C 0000 0100 Register B Clk LB Zum Lesen des 4. Befehls 0010 1100 (SUB C) muss die ABL das Signal CE auf high setzen, damit die Daten auf den Bus gelegt werden. Das Instruktionsregister IR soll das Datum übernehmen. Load IR (LI) wird von der ABL gleichzeitig mit CE auf high gesetzt® CE 0010 1100 0010 1100 Clk LI IR Clk LI 8 Bei der nächsten positiven Flanke des Clocksignals wird der Befehl übernommen.(w) ABL CP EPLMCELIEILA
Dekodieren des Befehls u. Operand holen PC = 3 Clk CP Akku Clk LA EP LM MAR=3 Clk LM 1100 Clk Rechenwerk ALU EU 0 0000 1001 1 0001 1010 2 0001 1011 3 0010 1100 4 1110 0000 5 1111 0000 … 9 0000 0001 A 0000 0010 B 0000 0011 C 0000 0100 Register B Clk LB Die oberen 4 Bit (opcode des Befehls) werden wieder über die TWO-State Verbindung an die ABL übertragen. Diese dekodiert den Opcode und ‘weiss’, dass ADD einen Operanden erfordert, dessen Adresse in den unteren 4 Bit des Befehls enthalten ist. (w) 1100 CE 0010 1100 Clk LI EI Mit dem Signal EI werden die unteren 4 Bit auf den Datenbus gegeben und mit LM der Wert Ahex (1010) ins Adressregister MAR übertragen (w) 0010 ABL CP EPLMCE LIEILA CP EPLMCE LIEI
Subtrahend ablegen 8 PC = 3 0000 0110 1100 0000 0100 0000 0011 Clk CP 0000 0110 Clk LA EP 1100 Clk LM Rechenwerk ALU EU 0 0000 1001 1 0001 1010 2 0001 1011 3 0010 1100 4 1110 0000 5 1111 0000 … 9 0000 0001 A 0000 0010 B 0000 0011 C 0000 0100 0000 0100 Clk LB 0000 0011 Clk LB SUB bedeutet, lade den Subtrahenden in das Register B und subtrahiere ihn vom Akkumulator. ® CE 0000 0100 Zum Lesen des Operanden an Adresse C (1100) setzt die ABL die Signale CE und LB auf high. Im Register B wird der Operand 0000 0100 gespeichert(w) 0010 1100 Clk LI 8 ABL CP EPLMCELIEILALB
Subtraktion durchführen 0000 0010 Clk LA PC = 3 Clk CP 0000 0110 Clk LA EP 1011 Clk LM Rechenwerk ALU EU EU 0000 0010 SU 0 0000 1001 1 0001 1010 2 0001 1011 3 0010 1100 4 1110 0000 5 1111 0000 … 9 0000 0001 A 0000 0010 B 0000 0011 C 0000 0100 0000 0100 Clk LB Zur Subtraktion der Operanden in den Registern Akkumulator und Register B benötigt das Rechenwerk das Signal SU . Die ALU subtrahiert die Werte der beiden Eingänge ® CE 0010 1100 Clk LI 8 Das Ergebnis wird wieder im Akkumulator abgelegt. Dafür setzt die ABL das Enable Unit (EU), Subtract Unit (SU) und Load Akku (LA) auf high. (w) ABL CP EPLMCELIEILALBEUSU
Inkrementieren des Befehlszählers PC = PC+1 Clk CP 0000 0010 Clk LA EP 1011 Clk LM Rechenwerk ALU EU 0000 1001 SU 0 0000 1001 1 0001 1010 2 0001 1011 3 0010 1100 4 1110 0000 5 1111 0000 … 9 0000 0001 A 0000 0010 B 0000 0011 C 0000 0100 0000 0100 Clk LB Damit der nächste Befehl bearbeitet werden kann, wird der Programcounter PC um eins erhöht. Die ABL setzt Count Programmcounter (CP) auf high, so dass beim nächsten Clocksignal der Programmcounter PC auf 3 gesetzt wird. (w) CE 0010 1100 Clk LI 8 ABL CP EPLMCELIEILALBEUSU
Adressieren des 5. Befehls - OUT MAR = 4 CP Akku Clk LA PC = 4 Clk EP LM MAR = C Clk Rechenwerk ALU EU SU 0 0000 1001 1 0001 1010 2 0001 1011 3 0010 1100 4 1110 0000 5 1111 0000 … 9 0000 0001 A 0000 0010 B 0000 0011 C 0000 0100 0000 0010 Clk LB Die ABL setzt Enable Program Counter (EP) und Load MAR (LM) auf high. Bei der nächsten positiven Flanke wird das MAR mit dem PC geladen. Das RAM dekodiert die MAR Adresse . 0010 1100 Clk LI 8 ABL CP EPLMCELI EILA LBEUSU
Lesen des 5. Befehls - OUT 8 PC = 4 Akku MAR = 4 Register B Clk CP Akku Clk LA EP MAR = 4 Clk LM Rechenwerk ALU EU SU 0 0000 1001 1 0001 1010 2 0001 1011 3 0010 1100 4 1110 0000 5 1111 0000 … 9 0000 0001 A 0000 0010 B 0000 0011 C 0000 0100 Register B Clk LB Zum Lesen des 5. Befehls 1110 0000 (OUT) muss die ABL das Signal CE auf high setzen, damit die Daten auf den Bus gelegt werden. Das Instruktionsregister IR soll das Datum übernehmen. Load IR (LI) wird von der ABL gleichzeitig mit CE auf high gesetzt® CE 1110 0000 IR Clk LI 1110 0000 Clk LI 8 Bei der nächsten positiven Flanke des Clocksignals wird der Befehl übernommen.(w) ABL CP EPLMCELIEI LA LBEUSU
Dekodieren des 5. Befehls PC = 4 Clk CP Akku Clk LA EP MAR=4 Clk LM Rechenwerk ALU EU SU 0 0000 1001 1 0001 1010 2 0001 1011 3 0010 1100 4 1110 0000 5 1111 0000 … 9 0000 0001 A 0000 0010 B 0000 0011 C 0000 0100 Register B Clk LB Output Clk LO Display Die oberen 4 Bit (opcode des Befehls) werden wieder über die TWO-State Verbindung an die ABL übertragen. Diese dekodiert den Opcode und ‘weiss’, dass OUT keinen Operanden erfordert. Der Inhalt des Akkumulators muss an ein Outputregister übertragen werden, das fest mit einem Display verbunden ist.(w) CE 1110 0000 Clk LI EI ABL 1110 CP EPLMCE LIEILA LBEUSU
Akkumulator an das Outputregister übertragen EA PC = 4 Clk CP 0000 0010 Clk LA EP MAR=4 Clk LM Rechenwerk ALU EU SU 0 0000 1001 1 0001 1010 2 0001 1011 3 0010 1100 4 1110 0000 5 1111 0000 … 9 0000 0001 A 0000 0010 B 0000 0011 C 0000 0100 Register B Clk LB LO 0000 0010 Output Clk 2 Display Die ABL setzt die Kontrollsignale Enable Akkumulator (EA) und Load Output (LO) auf high.(w) CE 1110 0000 Clk LI EI Die Aufgabe 1+2+3-4 ist ausgeführt und das Ergebnis 2 steht an der Ausgabeeinheit. ABL CP EPLMCE LIEILA LBEU SU EA LO
Der 6. Befehl Der Befehl HLT bringt nichts mehr neues für die Architektur des SAP und wird deshalb hier nicht simuliert. Er wird wie alle anderen Befehle adressiert, gelesen, im IR abgelegt und an die ABL übergeben. Die hält darauf hin den SAP an.
Zusammenfassung Takt LDA 9 ADD A ADD B SUB C OUT HLT 1 EP LM 2 CE LI 3 Die Animation zeigte neben den benötigten Bausteinen ((Spezial)register, ALU, RAM), dass die ABL bei der Ausführung der Befehle eine Folge von Kontrollsignalen erzeugen muss: Takt LDA 9 ADD A ADD B SUB C OUT HLT 1 EP LM 2 CE LI 3 EI LM EALO - 4 CE LA CE LB CP 5 EU LA EUSULA 6
Der Befehlszyklus Fetch Cycle Execute Cycle Systematisiert, um es der ABL einfacher zu machen (Inkrementieren des PC erfolgt immer in Takt 3) : Takt LDA 9 ADD A ADD B SUB C OUT HLT 1 EP LM 2 CE LI 3 CP 4 EI LM EALO - 5 CE LA CE LB 6 EU LA EUSULA Fetch Cycle (Hole-Zyklus) Execute Cycle (Ausfürungs-Zyklus) Der Hole-Zyklus ist bei jedem Befehl identisch (Befehl adressieren, lesen, dekodieren und PC inkrementieren), die Ausführungszyklen unterscheiden sich !
Der Befehlszyklus - Impulsdiagramm
Die Ablaufsteuerung 1. EP LM 2. CE LI 3. CP Aufgabe: Kontrollsignale gemäß dem Befehlszyklus erzeugen Dafür muss sie den Opcode des Befehls berücksichtegen und beachten, in welcher Phase des Maschinenzyklus sich der Prozessor befindet ABL CP EPLMCE LIEILA LBEU SU EA LO 1. EP LM 2. CE LI 3. CP d.h. In den drei ersten Taktzyklen werden immer die gleichen Kontrollsignale erzeugt.
Ringzähler der Ablaufsteuerung Ein Ringzähler erzeugt ein Signal, das die aktuelle Phase definiert: ABL CP EPLMCE LIEILA LBEU SU EA LO T0. EP LM T1. CE LI T2. CP
Der Befehlsdekodierer Der Opcode eines Befehls wird von einem Befehlsdekodierer verarbeitet: Dabei werden nur die definierten 5 Opcodes von 16 möglichen erfasst ABL CP EPLMCE LIEILA LBEU SU EA LO
Die Kontrollmatrix ABL CP EPLMCE LIEILA LBEU SU EA LO In Abhängigkeit von Phase und Opcode müssen die Kontrollsignale erzeugt werden:
Die komplette Ablaufsteuerung CP EPLMCE LIEILA LBEU SU EA LO
Das Rechenwerk Addierer Halb-Addierer 4 Bit Addierwerk Voll-Addierer
Das Rechenwerk - Addierer und Subtrahierer