Der Demo-Computer besitzt einen 4Bit-Mikroprozessor. Er kann entsprechend Wörter mit einer Breite von 4 Bits in einem Schritt verarbeiten. Die einzelnen Schritte der Abarbeitung werden durch Lampen visualisiert. Die Hardware des Demo-Computers besteht aus folgenden Teilsystemen: Mikroprozessor bzw. CPU (Central Processing Unit) mit - Steuerwerk (Control Unit) - Rechenwerk bzw. ALU (Arithmetic Logic Unit) ROM (Read Only Memory) RAM (Random Access Memory) I/O (Input-/Outputeinheit) Seite 1/12
1 Mikroprozessor Der Mikroprozessor ist das "Herz" eines Computers. Er beinhaltet im Wesentlichen das Steuer- und das Rechenwerk. Entsprechend dem zu verarbeitenden aktuellen Befehl (Instruktion), welcher im Instruktionsregister steht, generiert das Steuerwerk Steuersignale (z.b. Read, Write) für das Rechenwerk und die externen Teilsysteme. Die eigentliche Datenverarbeitung findet im Rechenwerk statt. Viele Operationen lassen sich dabei auf die Addition zurückführen. Der Mikroprozessor enthält folgende Register: Register 0 (Ergebnisregister bzw. Akkumulatorregister): 1. Operand von Datenverarbeitungsbefehlen Ergebnisspeicher von Datenverarbeitungsbefehlen Zielregister bei Datentransferbefehlen Register 1: 2. Operand Instruktionsregister (IR): Befehlscode (wird decodiert zur Steuerung des Bearbeitungsablaufes) Programm-Zähler (PC): Adresse des nächsten zu verarbeitenden Befehls oder des nächsten Operanden Seite 2/12
Mit jedem Clockimpuls wird ein neuer Verarbeitungszyklus (Maschinenzyklus) ausgeführt. Die Ausführung eines Befehls benötigt entsprechend seiner Komplexität mehr oder weniger Zyklen. Der Reset bewirkt: Nullsetzen des PC ( Startposition des Programms. D.h. an der Adresse 00000 muss ein Befehl stehen.) 2 ROM-Speicher Beim ROM handelt es sich um einen Speichertyp, der nur gelesen werden kann (vgl. Read-Steuerleitung). Sein Speicherinhalt bleibt auch nach dem Ausschalten des Computers erhalten. Er dient deshalb primär als Programmspeicher. Speicherkapazität: 10 x 4 Bits Adressbereich: 0 (00000) bis 9 (01001) 3 RAM-Speicher Beim RAM handelt es sich um einen Speichertyp, der beliebig gelesen und beschrieben werden kann (vgl. Read- und Write- Steuerleitung). Sein Speicherinhalt geht mit dem Ausschalten des Computers verloren! Er dient deshalb als Arbeitsspeicher. Speicherkapazität: 4 x 4 Bits Adressbereich: 16 (10000) bis 19 (10011) Seite 3/12
(Die Eins an der 4ten Stelle wird dabei als Chip-Select interpretiert; mit dieser wählt man den RAM-Baustein an. Mit den zwei niederwertigsten Stellen bzw. mit 0 (00) bis 3 (11) lassen sich dann die eigentlichen Speicherzellen adressieren.) 4 I/O-Einheit Die Ein-/Ausgabeeinheit stellt das Bindeglied zur "Aussenwelt" dar. Damit verbunden kann z.b. auch eine Datenkonvertierung (parallel-seriell) stattfinden. Vom Mikroprozessor aus betrachtet sieht die Ein-/Ausgabeeinheit wie zwei "Speicherzellen" (Ports) aus. Mit der Adresse 25 (11001) und einem Write-Steuersignal beschreibt man den Ausgang (OUT). Umgekehrt liest man mit der Adresse 26 (11010) und einem Read-Steuersignal den Eingang (IN) ein. 5 Daten-, Adress- und Steuerbus Über den 4 Bit breiten Datenbus werden Daten vom Mikroprozessor zum RAM oder zur I/O-Einheit oder umgekehrt vom ROM, RAM oder von der I/O-Einheit zum Mikroprozessor übertragen. Die Datenflussrichtung geben die Steuersignale Read und Write vor. Der Datenbus ist somit bidirektional Über den 5 Bit breiten Adressbus kann der Mikroprozessor externe Systeme (ROM, RAM, I/O-Einheit) aktivieren (Chip-Select) bzw. deren Speicherzellen oder Ports adressieren. Der Adressbus ist unidirektional Über den Steuerbus kontrolliert der Mikroprozessor das Timing und die Datenflussrichtung. Beim Demo-Computer beschränken sich die Steuersignale auf Read und Write. Der Steuerbus ist unidirektional Seite 4/12
6 Befehlssatz Der Befehlssatz eines Mikroprozessors ist mit dem Wortschatz eines Menschen vergleichbar. Der Mikroprozessor versteht nur Befehle, die in seinem Befehlssatz enthalten sind. Kennt ein Prozessor sehr viele verschiedene Befehle, so spricht man von Complex Instruction Set Computer (CISC). Umgekehrt bezeichnet man Prozessoren mit sehr kleinem Befehlssatz Reduced Instruction Set Computer (RISC). Der Demo-Computer kann bekanntlich nur 4Bit-Wörter verarbeiten. Entsprechend beschränkt sich sein Befehlssatz auf 2 4 = 16 verschiedene Befehle Einwortbefehle: Enthält der Befehlscode eines Befehls auch die Information, welche Operanden zu verarbeiten sind und wo das Ergebnis abzuspeichern ist, dann spricht man von Einwortbefehl, z.b. IN, ADD R1 Mehrwortbefehle: Folgen dem Befehlscode eines Befehls noch eine Adresse bzw. ein oder mehrere Datenwörter, so spricht man von einem Mehrwortbefehl, z.b. STO R0, LD R1 (zusätzlich RAM-Adresse) Die Befehle eines Prozessors bzw. die Maschinenbefehle sind binär codiert. Damit diese Codes besser lesbar sind, behilft man sich sogenannten Mnemonics. Ein Mnemonic ist ein verständlicheres Kürzel stellvertretend für den Maschinencode, z.b. ADD R1 für 1101, OUT für 1011 Seite 5/12
6.1 Befehlsliste des Demo-Computers Mnemonic Code #Worte #Zyklen Beschreibung Datentransferbefehle: MVI R0 0100 2 8 unmittelbar folgendes Wort in R0 MVI R1 0101 2 8 unmittelbar folgendes Wort in R1 STO R0 0000 2 10 R0 in RAM; 2. Wort RAM-Adresse STO R1 0001 2 10 R1 in RAM; 2. Wort RAM-Adresse LD R0 0010 2 10 RAM in R0; 2. Wort RAM-Adresse LD R1 0011 2 10 RAM in R1; 2. Wort RAM-Adresse MOV R1,R0 MOV R0,R1 1001 1 5 R1 in R0 1010 1 5 R0 in R1 Input-/Outputbefehle: IN 1000 1 7 Input-Port in R0 OUT 1011 1 7 R0 in Output-Port arithmetische Befehle: ADD R1 1101 1 5 R0+R1, Resultat in R0 (kein Setzen des Carry!) Rotationsbefehle: ASL 1110 1 5 R0 links schieben, MSB in Carry, 0 in LSB RAR 1111 1 5 R0 rechts rotieren, LSB in Carry, Carry in MSB Sprungbefehle: JMP 0110 2 8 2. Wort ROM-Adresse JC 0111 2 8 springe, wenn Carry = 1 JNC 1100 2 8 springe, wenn Carry = 0 Seite 6/12
6.2 Befehlsausführung Das Ausführen eines vollständigen Befehls kann in zwei Phasen unterteilt werden: Holphase (Fetch-Cycle) 1. Im 1. Zyklus wird gemäss PC die Adresse, an welcher der nächste Befehl gespeichert ist, auf den Adressbus gegeben. 2. Im 2. Zyklus wir die Read-Steuerleitung auf dem Steuerbus aktiviert. Die Daten des selektierten Speicherplatzes werden auf den Datenbus gegeben. 3. Im 3. Zyklus werden die Daten ins Instruktionsregister eingelesen. Die Daten bzw. der Befehlscode wird decodiert. Bei einem Mehrwortbefehl werden entsprechend noch weitere Wörter analog zum Mikroprozessor übertragen. Dies erfordert weitere Zyklen. 4. Im nächsten Zyklus wird der PC um 1 erhöht (inkrementiert), damit nach der Ausführungsphase der nächste Befehl geholt werden kann. Ausführungsphase (Execute-Cycle) Je nach Befehl braucht es nun mehr oder weniger Zyklen (allenfalls verbunden mit Zugriffen auf das RAM oder die I/O-Einheit), um den eigentlichen Befehl auszuführen. Obige Befehlsliste (vgl. 6.1) gibt Auskunft, wie viele Zyklen (vgl. Kolonne #Zyklen) insgesamt zur Abarbeitung eines Befehls notwendig sind. Seite 7/12
7 Beispiel "Addition" 7.1 Struktogramm 1. Summand vom Input- Port einlesen Wert 3 bzw. 2. Summand addieren Summe ins RAM (Adr. 1) schreiben Summe ins Output-Port schreiben Dateneingabe Datenverarbeitung (vgl. EDV) Datenausgabe (Für das Zeichnen von Struktogrammen stehen auf dem Netzwerk der HTA Luzern die Programme Visio und EasyCASE zur Verfügung.) Seite 8/12
7.2 Programm Programm Assemblercode (Mnemonics) Maschinencode Anzahl Zyklen Kommentar 1. Wort 2. Wort (Daten oder Adresse) IN 1000-7* Input-Port R0 MVI R1 0101 0011 8 3 R1 ADD R1 1101-5 R0 + R1 R0 STO R0 0000 0001 10 R0 RAM(1) OUT 1011-7 R0 Output-Port 5 Befehle 7 Worte 37 Zyklen Die Taktfrequenz betrage z.b. f = 500MHz. Damit resultiert eine Programm-Ausführungszeit von 37 Zyklen 1/500MHz = 74ns. Seite 9/12
7.3 Abarbeitung eines einzelnen Maschinenbefehls (vgl. *) Holphase (Fetch-Cycle) 1. Gemäss PC das ROM (Programmspeicher) adressieren (00000). 2. Wort aus dem ROM auf den Datenbus legen (Read). Seite 10/12
3. Wort ins IR schreiben. 4. PC um 1 erhöhen (inkrementieren). Ausführungsphase (Execute-Cycle) 5. Input-Port adressieren (11010) Seite 11/12
6. Wort aus dem Input-Port auf den Datenbus legen (Read). 7. Wort ins R0 schreiben. Nächste Holphase: 8. Gemäss PC das ROM (Programmspeicher) adressieren (00001), usw. Seite 12/12