Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
1
Der Simple As Possible Computer
Entwicklung seiner Architektur während der (simulierten) Ausführung eines kleinen Programms
2
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.
3
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)®
4
Das Programm: LDA 9 ADD A ADD B SUB C OUT HLT Die Aufgabe des Programms sei die Addition : ® Die Operanden 1,2,3 und 4 stehen im Speicher an den Adressen 9-CH®
5
Das Programm im Speicher
Die Verbindung zwischen MAR und Speicher ist TWO-State ,d.h. MAR wirkt ständig auf den Speicher ! ® MAR=0 6 7 8 A B C 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 ®
6
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. ® … A B C 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
7
Lesen des 1. Befehls – LDA 9 PC = 0 Clk CP Zum Lesen des 1. Befehls (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. ® … A B C CE IR Clk LI 8 ABL CP EPLMCELI
8
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 … A B C 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 Clk LI EI 0000 ABL CP EPLMCE LIEI CP EPLMCE LI
9
Operand in Akkumulator ablegen
PC = 0 Clk CP Akku Clk LA LA 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.® … A B C Zum Lesen des Operanden an Adresse 9 (1001) setzt die ABL die Signal CE und LA auf high. Im Akkumulator wird der Operand gespeichert (w) CE Clk LI 8 ABL CP EPLMCELILA
10
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) … A B C CE Clk LI 8 ABL CP EPLMCELILA
11
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 .® … A B C Clk LI 8 ABL CP EPLMCELILA
12
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 (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® … A B C Bei der nächsten positiven Flanke des Clocksignals wird der Befehl übernommen.(w) CE Clk LI IR Clk LI 8 ABL CP EPLMCELI
13
Dekodieren des Befehls u. Operand holen
PC = 1 Clk CP Akku Clk LA EP LM MAR=1 Clk LM 1010 Clk … A B C 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) Clk LI EI ABL 0001 CP EPLMCE LIEI CP EPLMCE LIEI
14
Summand ablegen 8 PC = 1 0000 0001 1010 0000 0010 Register B
Clk CP Clk LA EP 1010 Clk LM … A B C 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 Zum Lesen des Operanden an Adresse A (1010) setzt die ABL die Signale CE und LB auf high. Im Register B wird der Operand gespeichert(w) Clk LI 8 ABL CP EPLMCELILALB
15
Addition durchführen 8 0000 0011 PC = 1 0000 0001 1010 0000 0011
Clk LA PC = 1 Clk CP Clk LA EP 1010 Clk LM Rechenwerk ALU EU EU … A B C 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 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
16
Inkrementieren des Befehlszählers
PC = PC+1 Clk CP Clk LA EP 1010 Clk LM Rechenwerk ALU EU … A B C 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 Clk LI 8 Und was macht währenddessen die ALU? Die addiert die aktuellen Operanden 2+3® ABL CP EPLMCELILALBEU
17
Adressieren des 3. Befehls – ADD B
MAR = 2 CP Akku Clk LA PC = 2 Clk EP LM MAR = A Clk Rechenwerk ALU EU … A B C 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 . Clk LI 8 ABL CP EPLMCELILA
18
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 … A B C Register B Clk LB Zum Lesen des 3. Befehls (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 Clk LI IR Clk LI 8 Bei der nächsten positiven Flanke des Clocksignals wird der Befehl übernommen.(w) ABL CP EPLMCELI
19
Dekodieren des Befehls u. Operand holen
PC = 2 Clk CP Akku Clk LA EP LM MAR=1 Clk LM 1011 Clk Rechenwerk ALU EU … A B C 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 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
20
Summand ablegen 8 PC = 2 0000 0011 1011 Register B 0000 0010 0000 0011
Clk CP Clk LA EP 1011 Clk LM Rechenwerk ALU EU … A B C Register B Clk LB Clk LB Clk LB Clk LB ADD bedeutet wieder, lade einen Wert in das Register B und addiere es mit dem Akkumulator.® CE Zum Lesen des Operanden an Adresse B (1011) setzt die ABL die Signale CE und LB auf high. Im Register B wird der Operand gespeichert(w) Clk LI 8 ABL CP EPLMCELIEILALB
21
Addition durchführen 8 0000 0110 PC = 2 0000 0011 1011 0000 0110
Clk LA PC = 2 Clk CP Clk LA EP 1011 Clk LM Rechenwerk ALU EU EU … A B C 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 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
22
Inkrementieren des Befehlszählers
PC = PC+1 Clk CP Clk LA EP 1011 Clk LM Rechenwerk ALU EU … A B C 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 Clk LI 8 Und was macht währenddessen die ALU? Die addiert die aktuellen Operanden 6+3® ABL CP EPLMCELIEILALBEU
23
Adressieren des 4. Befehls – SUB C
MAR = 3 CP Akku Clk LA PC = 3 Clk EP LM MAR = B Clk Rechenwerk ALU EU … A B C 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 . Clk LI 8 ABL CP EPLMCELIEILA
24
Lesen des 4. Befehls – SUB C
PC = 3 Clk CP Akku Clk LA EP MAR = 3 Clk LM Rechenwerk ALU EU … A B C Register B Clk LB Zum Lesen des 4. Befehls (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 Clk LI IR Clk LI 8 Bei der nächsten positiven Flanke des Clocksignals wird der Befehl übernommen.(w) ABL CP EPLMCELIEILA
25
Dekodieren des Befehls u. Operand holen
PC = 3 Clk CP Akku Clk LA EP LM MAR=3 Clk LM 1100 Clk Rechenwerk ALU EU … A B C 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 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
26
Subtrahend ablegen 8 PC = 3 0000 0110 1100 0000 0100 0000 0011
Clk CP Clk LA EP 1100 Clk LM Rechenwerk ALU EU … A B C Clk LB Clk LB SUB bedeutet, lade den Subtrahenden in das Register B und subtrahiere ihn vom Akkumulator. ® CE Zum Lesen des Operanden an Adresse C (1100) setzt die ABL die Signale CE und LB auf high. Im Register B wird der Operand gespeichert(w) Clk LI 8 ABL CP EPLMCELIEILALB
27
Subtraktion durchführen
Clk LA PC = 3 Clk CP Clk LA EP 1011 Clk LM Rechenwerk ALU EU EU SU … A B C 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 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
28
Inkrementieren des Befehlszählers
PC = PC+1 Clk CP Clk LA EP 1011 Clk LM Rechenwerk ALU EU SU … A B C 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 Clk LI 8 ABL CP EPLMCELIEILALBEUSU
29
Adressieren des 5. Befehls - OUT
MAR = 4 CP Akku Clk LA PC = 4 Clk EP LM MAR = C Clk Rechenwerk ALU EU SU … A B C 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 . Clk LI 8 ABL CP EPLMCELI EILA LBEUSU
30
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 … A B C Register B Clk LB Zum Lesen des 5. Befehls (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 IR Clk LI Clk LI 8 Bei der nächsten positiven Flanke des Clocksignals wird der Befehl übernommen.(w) ABL CP EPLMCELIEI LA LBEUSU
31
Dekodieren des 5. Befehls
PC = 4 Clk CP Akku Clk LA EP MAR=4 Clk LM Rechenwerk ALU EU SU … A B C 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 Clk LI EI ABL 1110 CP EPLMCE LIEILA LBEUSU
32
Akkumulator an das Outputregister übertragen
EA PC = 4 Clk CP Clk LA EP MAR=4 Clk LM Rechenwerk ALU EU SU … A B C Register B Clk LB LO Output Clk 2 Display Die ABL setzt die Kontrollsignale Enable Akkumulator (EA) und Load Output (LO) auf high.(w) CE Clk LI EI Die Aufgabe ist ausgeführt und das Ergebnis 2 steht an der Ausgabeeinheit. ABL CP EPLMCE LIEILA LBEU SU EA LO
33
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.
34
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
35
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 !
36
Der Befehlszyklus - Impulsdiagramm
37
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.
38
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
39
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
40
Die Kontrollmatrix ABL CP EPLMCE LIEILA LBEU SU EA LO In Abhängigkeit von Phase und Opcode müssen die Kontrollsignale erzeugt werden:
41
Die komplette Ablaufsteuerung
CP EPLMCE LIEILA LBEU SU EA LO
42
Das Rechenwerk Addierer
Halb-Addierer 4 Bit Addierwerk Voll-Addierer
43
Das Rechenwerk - Addierer und Subtrahierer
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.