2.2 Die Elemente eines Mikroprozessors 2.2.1 Struktur eines 16/32 Bit µp Um den Datenfluß bei der Befehlsbearbeitung innerhalb eines µp zu betrachten, gehen wir von einem Modell eines 16/32 Bit µ aus. Das Modell ist dem Prozessor MC 68000 von Motorola nachempfunden. Registersatz D (Daten) Registersatz A (Adressen) Operand 1 OR1 ALU Operand 2 OR2 32 16 IDB 32 PC +2 AR OPC QU2/ZI MODE2 MODE1 QU1 Programmzähler Operandenadresse 16 32 IR 32 32 32 32 PSR Rechenwerk Treiber 32 16 24 Datenbus Adressbus PSR PC IR DBT IDB IAR Prozessorstatusregister Zero-Flag Ergebnis = 0 Negativ-Flag Ergebnis < 0 Carry-Flag Overflow-Flag Übertrag Bereichsüberschreitung Programmzähler (Programcounter) enthält die Adresse des nächsten Befehls Instruktionsregister enthält das Befehlswort Datenbustreiber Interner Datenbus Zwischenspeicher für Operanden m Steuerlogik 4 RAB n Leitwerk Clock Steuerbus MCT 2-17
Befehlsformate Die Architektur eines Prozessors basiert auf einem bestimmten Befehlformat. Ein arithmetischer Ausdruck besteht aus 4 Komponenten C = A + B Ergebnis 1. Operand Operator 2. Operand Entsprechend lautet ein Prozessorbefehl : 3-Adress-Befehl OPC 1. Operandenadresse 2. Operandenadresse Zieladresse 2-Adress-Befehl OPC 1. Operandenadresse 2. Op.adr./ Zieladr. C = C + A 1-Adress-Befehl OPC 1. Operandenadresse Akku = Akku + A MCT 2-18
2.2.2 Steuerwerk Aufgabe : Steuerung des Zusammenspiels der einzelnen Prozessorkomponenten Steuerwerk ist typischerweise ein synchrones Schaltwerk, d.h. benötigt wird => Takt => Reset Takt: Taktgenerator meist im Prozessorchip, wird mit Quarz stabilisiert. Takt reicht von einigen MHz bis zu 2 3 GHz Bei Mikrocontrollern kann der Takt oft per Programm verändert werden Reset ( wichtigstes Bedienelement ) Startzustand des Steuerwerks wird hergestellt Geordnete Initialisierung Reset-Signal des Prozessors ist bidirektional Damit kann CPU die Peripherie zurücksetzen. Man unterscheidet: Einschaltreset (Power On Reset) POR Manueller Reset Typische Hestellerangabe für Reset-Signal: /reset für t>= 100 ms auf Lowpegel, nachdem die Betriebsspannung ihren Pegel erreicht hat. MCT 2-19
Steuerregister (Control-Register) Ist ein Element des Steuerwerks und hat Einfluß auf die aktuelle Arbeitsweise des Steuerwerks 15 8 7 0 T S I2 I1 I0 Control Register Condition Code Register (gehört zum Rechenwerk) T : Trace Bit S: Supervisor Bit I2-I0 : Interruptmaske MCT 2-20
Mikroprogramm-Steuerwerk In den meisten Prozessoren wird heute das Steuerwerk nicht als eine festverdrahtete Steuerung realisiert, sondern als sogenanntes Mikroprogramm-Steuerwerk (µpstw). OPCode IR Mapper Status Sequenzer Adresse Mikroprogramm- Speicher Folgeadresse Mikro-Befehlsregister Steuersignale MCT 2-21
Mikrobefehl Der OP-Code des Befehlswortes wird mit Hilfe des Mappers in eine Startadresse für eine Mikrobefehlssequenz umkodiert. Die Mikrobefehlssequenzen stehen im Mikroprogramm-speicher. Jeder Mikrobefehl besteht aus einzelnen Bits, die die Steuersignale für den Prozessor darstellen. In der Regel wird hier nicht mehr kodiert, sondern jedes Bit stellt direkt ein Steuersignal z.b. ein Freigabesignal für ein Register oder ein Auswahlsignal dar. Aufbau eines Mikrobefehls Registeradressen Rechenwerk ALU HR Folgeadresse Systembus- Schnittstelle Adreßwerk Externe Steuersignale...... MCT 2-22
Steuerwerk des MC68000 von Motorola Befehlsregister Befehlsdekoder Mikrobefehls zähler (+1) Startadresse Befehlsende Steuerwerk Mikroprogrammspeicher ca. 640x10 Bits Demultiplexerlogik (ca. 70 Eingänge auf 180 Ausgänge) Zeitsteuerung Nanocodespeicher ca. 280x70 Bits Das µp-stw des 68000 ist zweistufig realisiert. Es zeigt sich nämlich, daß bei vielen Mikroprogrammen Befehlssequenzen identisch sind. Durch die zweistufige Realisierung brauchen diese nur einmal abgelegt werden. In den 640 10-Bit-Worten sind sämtliche Befehle des Prozessors kodiert. Die eigentlichen Steuersignale werden im Nanospeicher erzeugt, der etwa 27 Kbit groß ist. Die Zeitsteuerung sorgt dafür, daß die Signale zu den richtigen Zeitpunkten weitergeleitet werden. Steuersignale z.b. Registerauswahl Meldesignale Steuersignale MCT 2-23
2.2.3 Rechenwerk Elemente des Rechenwerks Das Rechenwerk besteht aus : ALU Register Condition Code Register ALU Arithmetic Logic Unit: Führt arithmetische und logische Verknüpfungen von Daten aus. Bei 68000 arbeitet die ALU wahlweise als 8 Bit, 16 Bit oder 32 Bit ALU. Die Verarbeitungsbreite ist variabel. Sie wird durch ein mit Punkt getrenntes Zeichen direkt beim Befehl mit angegeben..b = Byte (8 Bit).W = Wort (16 Bit).L = Long (32 Bit) MOVE.B ist daher ein Move-Befehl, der nur die unteren 8 Datenbit verwendet. Daten- und Adress-Register: Zum Rechenwerk gehören die Daten und Adressregister eines Prozessors. Die Anzahl und oft auch die Funktion sind bei jedem Prozessor unterschiedlich. Die Datenregister des 68000 sind wie die ALU als 8 Bit, 16 Bit oder als 32-Bit Register verwendbar MCT 2-24
Condition Code Register Damit ist die untere Hälfte (Bit 0-7) des Statusregisters gemeint.. 15 8 7 0 T S I2 I1 I0 X N Z V C Control Register Condition Code Register C : Carry Bit ( Übertrag) Z : Zero-Bit (Ergebnis = 0) N: Negativ- Bit (Ergebnis < 0) V : Overflow-Bit (Zahlenbereichsüberschreitung bei vorzeichenbehafteten Zahlen) X: Extended Bit ( spezielles Bit, Bedeutung ist abhängig vom Befehl) Overflow: Zahlenbereichsüberschreitung dann, wenn bei Addition von pos. Zahlen ein neg. Ergebnis auftritt oder bei Addition von neg. Zahlen ein positives Ergebnis auftritt MCT 2-25
Die Conditioncodes werden entsprechend der verwendeten Datenbreite (.B,.W oder.l) verwendet! Beispiele: SUB.W D2, D1 ; bedeutet, Inhalt von D2 wird von D1 subtrahiert, Ergebnis steht in D1 SUB.W D2, D1 D1: $76543210 D2; $00003210 D1: Zero-Flag : SUB.L D2, D1 D1: $76543210 D2; $00003210 D1: Zero-Flag : ADD.B D2, D1 D1: $76543210 D2; $00000076 D1: Zero-Flag : Negativ_Flag : Overflow-Flag : MCT 2-26
Befehlsatz des Rechenwerks Arithmetische Operationen mit ganzen Zahlen o Addieren, Subtrahieren, o Multiplitieren, Dividieren o Negieren (2er Komplement) o Logische Operationen o Negation o UND o ODER o EXOR Schiebe und Rotationsbefehle o Links/Rechts Schieben o Links/Rechts Rotieren Transport Befehl o Move MCT 2-27
Beispiele zu logischen Befehlen 1. Maske beim Einlesen einer Schaltergruppe 2. Setzen der Lämpchen 1 und 2, ohne die anderen zu verändern 3. Löschen der Lämpchen 1 und 2, ohne die anderen zu verändern 4. Umschalten der Lämpchen 1 und 2 MCT 2-28
Schiebebefehle und Rotationsbefehle Die Schiebeoperationen nehmen eine gewisse Sonderstellung ein. Sie dienen sowohl der logischen als auch der arithmetischen Informationsverarbeitung. Durch Links-Schieben bzw. Rechts-Schieben lassen sich Multiplikationen bzw. Divisionen durch 2 und Vielfache davon realisieren. Durch das Schieben bestimmter Bitpositionen in einem Status-Flag lassen sich einzelne Bits manipulieren bzw. auswerten. So ist z. B. damit eine parallel-seriell-umsetzung möglich. ASL, LSL ASR, LSR ROL,ROR, ROXL, ROXR Beim Links-Schieben sind logisches und arithmetisches Schieben identisch. Wird das Links-Schieben arithmetisch gedeutet, bedeutet eine Stellenverschiebung um eine Position nach links eine Multiplikation mit 2. Wenn nach dieser Operation das C-Flag gesetzt ist, wurde der gültige Zahlenbereich verlassen. Beim Rechts-Schieben verhalten sich logisches - und arithmetisches Schieben unterschiedlich. Das arithmetische Rechts-Schieben um eine Position, bedeutet eine Division durch 2. Dabei muß das Vorzeichen, das in der MSB-Position kodiert ist, erhalten werden. Wenn logisch nach rechts geschoben wird, wird in die MSB-Position eine 0 geschoben. Bei den rotierenden Schiebeoperationen wird das Register zu einem Ring geschlossen. D. h., beim Rechts- Schieben wird das MSB in das LSB (ROR) bzw. das LSB in das MSB (ROL) geschoben. Bei den Befehlen ROXL und ROXR. wird noch das X-Flag dazwischen geschaltet. MCT 2-29
Links-Schiebe- Operationen Rechts-Schiebe- Operationen C C < ASL 0 VZ ASR > X X C C < LSL 0 0 LSR > X X C < ROL ROR > C X < ROXL ROXR > X C C MCT 2-30
2.2.4 Adress-Rechenwerk Aufgabe: Berechnen der Adressen von Operanden oder Befehlen (effektive Adresse). Adresse eines Operanden Steht im Speicher Steht in einem Adress-Register Wird berechnet durch Addition (bzw. Subtraktion ) von Teiladressen Diese Aufgabe übernimmt ein zusätzliches Rechenwerk, das parallel zum eigentlichen Rechenwerk die Adress-Berechnungen duchführt. Blockschaltbild des Adress-Rechenwerks: Skalierung Index ±n (Adress-) Register effektive Adresse Addierer Barrel Shifter für Byte, Word, Long Operandenadresse Adresspuffer Adressbus Bef.zähle r MCT 2-31 Programmadresse
Skalierung Eine Teiladresse wird vor der Addition mit 1, 2 oder 4 multipliziert. Damit wird bei Inkrementieren bzw. Dekremenieren die änge eines Operanden (Byte,Word,Long) berücksichtigt. Barrel-Shifter Schiebelogik, die in einem Schritt einen Wert um mehrere Stellen verschiebt En E3 E2 E1 E0 0 0 MUX MUX MUX MUX MUX An A3 A2 A1 A0 Mehrere Multiplexer werden entsprechend der Skizze miteinander verschaltet MCT 2-32