Rechnersysteme Speicherorganisation und Adressierungsarten Otto-von-Guericke-Universität Magdeburg
Speicherorganisation Wort-orientierter Speicher Wort 00 Wort 01 Wort 02 Wort 03 2 n -1 0 Bit Wort 2 k -1 Byte-orientierter Speicher Vorteil: Kompakteres Abspeichern verschieden langer Befehle und Operanden Byte 00 Byte 01 Byte 02 Byte 03 7 0 Bit Byte 2 k -1 2
Speicherorganisation Wort-orientierter Speicher Wort 00 Wort 01 Wort 02 Wort 03 31 0 Bit Wort 2 k -1 Byte-orientierter Speicher (Lang-) Wort (Halb-) Wort Byte-Adressen 3-0 7-4 B- 8 F -C Wort 00 Wort 01 Wort 02 Wort 03 31 24 23 16 15 8 7 Byte 0 Byte 1 Byte 2 Byte 0 Byte 1 Byte 2 Byte 0 Byte 1 Byte 2 Byte 0 Byte 1 Byte 2 Byte 3 Byte 3 Byte 3 Byte 3 0 Bit Doppelword Quad- Wort Wort 2 k -1 Byte 0 Byte 1 Byte 2 Byte 3 3
Big-Endian-Darstellung Beisp. Motorola 680x, 68x00, SPARC, PowerPC Sp.- Wort a Sp.- Wort a + 1 Sp.- Wort a + 2 Sp.- Wort a + 3 Byte W 0 Byte 1 E Byte L2 Byte T3 1010 Byte 0010 4 0000 Byte 1101 5 0111 Byte 0111 6 0111 Byte 0111 7 Byte 8 Byte 9 Byte A Byte B Byte C Byte D Byte E Byte F Big-Endian- Darstellung Wortreihenfolge Zeichenkette: "WELTBANK" L-Wort k k +1 k +2 k +3 Byte 0 Byte 1 Byte 2 Byte 3 32-Bit Integer: 0xA20D7777 MSB LSB MSB LSB w 0 w 1 W E L T L-Wort k +4 Byte 4 k +5 k +6 k +7 Byte 5 Byte 6 Byte 7 10100010 00001101 01110111 01110111 w 2 w 3 B A N K 4
Little-Endian-Darstellung Beisp. Intel 80x86, ARM Sp.- Wort a Sp.- Wort a + 1 Sp.- Wort a + 2 Sp.- Wort a + 3 Byte T 0 Byte L 1 Byte E2 Byte3 W 0111 Byte 0111 4 0111 Byte 0111 5 1000 Byte 1101 6 1010 Byte 0010 7 Byte 8 Byte 9 Byte A Byte B Byte C Byte D Byte E Byte F Little-Endian- Darstellung 32-Bit Integer: 0xA20D7777 Wortreihenfolge Zeichenkette: "WELTBANK" Wort k k+1 k+2 k+3 Byte 0 Byte 1 Byte 2 Byte 3 10100010 00001101 01110111 01110111 LSB MSB LSB MSB w 1 w 0 T L E W Wort k+4 Byte 4 k+5 k+6 k+7 Byte 5 Byte 6 Byte 7 w 3 w 2 K N A B 5
Little-/Big-Endian-Darstellung Zeichenkette: HELLO_World Big - Endian BYTE-NR 0 1 2 3 0 1 2 3 0 1 2 3 H E L L O _ W O R L D! Little - Endian BYTE-NR 3 2 1 0 3 2 1 0 3 2 1 0 L L E H O W _ O! D L R Für 16-Bit Datentypen des MC 6809 wird die Big-Endian Darstellung verwendet 6
6809 Befehlsformate: 7 0 Postbyte 1-Byte -Befehle - der Operand, falls vorhanden wird implizit durch den bestimmt z.b. INCA 2 -Byte -Befehle - Bedeutung des Postbytes: 1. kurze Adresse 2. nähere Bestimmung der Adressierung mit Index 1. Postbyte 2. Postbyte 3-Byte -Befehle - Bedeutung der Postbytes: 1. lange Adresse 2. nähere Bestimmung der Adressierung mit Index 1. Postbyte 2. Postbyte 3. Postbyte oder Erw. 1. Postbyte 2. Postbyte 4-Byte -Befehle ohne Erw. Bedeutung der Postbytes: nähere Bestimmung der Adressierung mit Index 4-Byte -Befehle mit Erw. Bedeutung der Postbytes: lange Adresse Erw. 1. Postbyte 5 -Byte -Befehle Bedeutung der Postbytes: nähere Bestimmung der Adressierung mit Index 2. Postbyte 3. Postbyte 7
Ziele beim Entwurf eines Adressierungsmechanismus großer Adreßraum kleines Adreßfeld in der Instruktion Komfort für den Programmierer positionsunabhängiger (verschieblicher) Code Lösung des Zielkonflikts zwischen Größe des AR und Größe des AF: Berücksichtigung von Lokalität der Berechnungen Vereinfachung der Adressierung einfacher Datenstrukturen (Listen, Arrays) 8
Möglichkeiten der Operandenspezifikation Spezifikation des Operanden Adresse Direktoperand (Literal, immediate value) implizit (0-Adreß-Befehl) explizit (n-adreß-befehl) Spezialbefehle, die sich auf bestimmte Register beziehen implizit addressierte Datenstrukturen z.b. Stacks, Queues Quelle/Ziel (Source/Destination) Anzahl der Operanden 1 2 3 Reg./Reg. Reg./Mem. Mem./Mem. absolut relativ indirekt indiziert indirekt/indiziert 9
6809 Register Adressierung Befehle : TFR, EXG, Speicherplatz m m+1 m+2 m+3 m+4 Reg. Spec. Postbyte Definition bei TFR und EXG:! 7 4 3 Reg. 1 (S) Reg. 2 (D) S: Source D: Destination Register Code Hex (Bin) D 0000 0 X 0001 1 Y 0010 2 U 0011 3 S 0100 4 PC 0101 5 A 1000 8 B 1001 9 CCR 1010 A DP 1011 B 0 10
Tutorium Freitag, 1.02.2013, 11 13 Uhr Raum 307, durch Herrn Filter Wiederholung der Kernthemen, Diskussion von weiteren Aufgaben, Gruppenarbeit
Verteilung der Votierungen unter der Annahme, dass alle verbleibenden 10 Aufgaben gelöst werden. 10 9 8 7 Anyahl der Studenten 6 5 4 3 2 1 0 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100 Votierungen in Prozent
Stack (Stapel, Keller, LIFO-Queue) aufsteigende Adressen 0x0000 Stack wächst in diese Richtung Max Stack- Pointer TOS Top of Stack PUSH PULS Daten BOS Bottom of Stack 0xFFFF PUSH: SP ß SP-1 SP = MAX: Exception full Mem[SP] ß Register 14 PULS: SP = BOS: Exception empty Register ß Mem[SP] SP ß SP+1
6809 Stack Adressierung Befehle : PSHU, PSHS, PULU, PULS Speicherplatz m m+1 m+2 m+3 m+4 Register List. Post-Byte Definition bei PSHx und PULx PSHS, PULS PC U Y X DP B A CC PSHU, PULU PC S Y X DP B A CC 15
6809 Direktoperanden (unmittelbare Adressierung, engl.: immediate) Speicherplatz m m+1 m+2 m+3 post byte 1 post byte 2 8bit 16 Bit m+4 Beisp. : ADDA #$95 m 8B m+1 95 ADDD #$1295 m C3 m+1 12 m+2 95 PC = PC+2 PC = PC+3 LDS #$ABCD m m+1 10 CE m+2 AB m+3 CD PC = PC+4 16
Absolute (Direkte) Adressierung Speicherplatz 6809 (extended direct) m m+1 m+2 m+3 qq pp m+4 EA = qq 2 8 + pp qq pp Die effektive Adresse EA wird durch Konkatenation der beiden Post Bytes nach dem gebildet. Das erste Post Byte (qq) gibt das höherwertige Byte, das zweite Postbyte (pp) das niederwertige Byte der EA an. 17
6809 (base page direct) Adressierung über Basisregister Speicherplatz m Direct Page Register qq DP m+1 m+2 m+3 pp m+4 EA = qq 2 8 + pp qq pp Die effektive Adresse EA wird durch Konkatenation einer kurzen Adresse nach dem mit dem Inhalt des Direct Page Registers (DP) gebildet. Die kurze Adresse gibt das niederwertige Byte, der Inhalt des DP das höherwertige Byte der EA an. Das DP kann dynamisch durch einen Transferbefehle z.b. TFR A, DP geladen werden oder durch eine Assemblerdirective SETDP gesetzt werden. 18
6809 (extended indirect) Indirekte Adressierung Speicherplatz Beisp.: ADDA[$E0D7] m m+1 m+2 m+3 m+4 post byte (9F) qq pp spezifiziert den indirekt Modus qq pp I A = qq 28 + pp 403E 403F 4040 4041 m m+1 m+2 Datum AB 9F E0 m+3 D7 n n +1 dd ee m+4 E 0D6 E 0D7 40 dd ee E A = dd 28 + ee E0D8 E0D9 3F Die dem folgende Adresse gibt nicht an, wo sich die Daten für den Befehl befinden, sondern Technische die Adresse, Informatik die auf I, WS die 12/13 Daten zeigt (Unterstützung von Zeigern). 19
Indizierte Adressierung (Indexed Adressing) Basisadresse Versatz displacement, offset + EA =Basisadresse + Distanzadresse Wo steht die Basisadresse? Register: Indexregister Speicher: indirekte Adressierung Wo steht der Versatz? Speicher (Literal) Register Autoincrement /Autodecrement 20
Grundform der indiziert indirekten Adressierung Indexregister + displacement, offset Versatz Adresse der EA im Speicher EA 21
Indizierte Adressierung beim MC 6809: Zero offset 5-Bit offset Long (16 Bit) constant offset Accumulator offset (Versatz kann verändert werden) Autoincrement Program Counter Relativ Indexed Indirect 22
Grundformen der indizierten Adressierung Basisadresse Versatz + EA =Basisadresse + Versatz Basisadresse Versatz Bezeichnung (Index-) Register Literal (kurz 5 Bit) Adressierung mit konstantem Versatz X, Y, U, S, PC Speicher (lang 8/16 Bit) vom Indexregister Constant Offset Mode (Index-) Register Register A, B, D Adressierung mit Versatz aus X, Y, U, S dem Accumulator A, B oder D Accumulator Offset (Index-) Register fest ±1, ±2 Autoincrement / Autodecrement X, Y, U, S POST increment / PRE decrement 23
Instruktion Adresse EA Operand direkt Instruktion Register Adresse Versatz + indiziert EA Operand Instruktion Adresse Adresse indirekt EA Operand Register Adresse indiziert indirekt Versatz + Adresse 24 EA Operand
6809 Indizierte Adressierung (Indexed Adressing) Modi für indizierte Adressierung: Konstanter Versatz Langform (zusätzliches Byte) lange Form(16 Bit) Kurzform (Spez. im Post Byte) kurze Form (8 Bit) Versatz = 0 Versatz ist 5-Bit lang Programmzähler Offset 8/16 Bit Accumulator Offset A, B und D Auto Increment um 1 oder 2 Auto Decrement um 1 oder 2 Extended Indirect Assembler Notation: Notation Bedeutung,R das Register R (X, Y, U, S, PC) ist als Indexregister spezifiziert offset,r offset wird zum Indexregister R addiert label,pcr Programmzähler-relative Adressierung den Versatz zwischen PC und Label wird in der Assemblierungsphase berechnet und als konstanter Versatz im Modus: constant PC-Offset eingesetzt,r+(+) Autoincrement um 1 (bzw. 2) des Registers R (X, Y, U, S, PC) (Postincrement), -(-)R Autodecrement um 1 (bzw 2) des Registers R (X, Y, U, S, PC) (Predecrement) [... Technische.......] Informatik I, WS indizierte 12/13 Adresse ist eine indirekte Adresse 25
LDX HEAD_OF_LIST Index Reg. COMP CMPX End_lst BHI Fin LDA,X+ Indiziert mit (Post-) Autoincrement CMPA #77 BNE COMP BSR EF! Subroutine Branch to "element found" Fin BSR NF!! Subroutine Branch to "element not found" HEAD-OF-LIST FDB $0000 End_lst FDB $0FFF Listen Element Listen Element Listen Element Listen Element Listen Element Index Reg. LDX HEAD_OF_LIST LDA Sem_O COMP LDB A,X Indiziert mit Register A Offset Versatz CMPB S_zahl Falls Semesterzahl >12: BHI OUTPUT Ausgabe: Name, Vorname LEAX RL, X Addieren der Record-Länge* CMPX End_lst Ende der Liste erreicht? BHI Fin BRA COMP RL FCB 32 Sem_O FCB 29 S_zahl FCB 12 HEAD_OF_LIST FDB $0000 End_lst FDB $0FFF * da es keinen Additionsbefehl für das Indexregister X gibt, wird LEAX verwendet. 26 Name (14 Byte) Vorn ame (14 Byte) Alter (1 Byte) Semester (1 Byte) Matr.Nr. (2 Byte) Name (14 Byte) Vorn ame (14 Byte) Alter (1 Byte) Semester (1 Byte) Matr.Nr. (2 Byte) HEAD_OF_LIST
Erweiterungen für die Indizierte Adressierung Indexregister Basisform Versatz displacement, offset + EA = Indexregister + Distanzadresse Erweiterungen: skalierter Index zusätzliche feste Distanzadressen Indirektion 27
Indiziert, indizierter, am... Memory indirect pre-indexed Adressierungsart bei MC 68020 31 0 Addressregister memory address Base Displacement 31 sign extended value 0 + Index Register 31 sign extended value 0 Scale scale value x + 31 31 indirect memory address points to value of indirect memory address 0 0 Output Displacement 31 sign extended value 0 + Effective Address 28 operand
Architektur Varianten Stack orientiert: Burroughs, Java VM Speicher orientiert: IBM 360 series, Accumulator-Architekturen, frühe Mikroprozessoren Erweitert Speicher-orientiert: DEC VAX, Motorola 68K, IBM PowerPC, Intel x 86, Pentium II Register orientiert: DEC Alpha, ARM, Sparc, MIPS 29
Beisp. : Motorola 6809 Ein-Adreß-Befehl Adr eßfeld Befehlsformate: 680x0, Intel 386,486 Beisp.: Mot orola 680x0 Zwei-Adreß-Befehl Adr eßfeld (Quelle) Adr eßfeld (Ziel) 2. ter Quel loperand ste ht an Zi eladresse und wird d urch Ope ration überschrieben 4 3 3 6 REG MO D Adreßfeld MOD Re giste r Re giste r # RE G Speiche r kurz, lang MIP S, Alpha, SPARC Drei-Adreß-Befehl Adr eßfeld (Quelle 1) Adr eßfeld (Quelle 2) Adr eßfeld (Ziel) Beisp. MIP S 6 5 5 rs rt rd shamt func Technische Informatik MIPSI, WS rs 12/13 rt Adresse 5 30 5 6 rs: erstes Quellreg. rt: zweites Quellreg. rd: Zielreg. shamt : shift amount func: funktionale Erw. J. Kaiser, des OPCO IVS-EOS DE
Lernziele - Aufbau eines realen einfachen Prozessors - Befehlssatz - Standardbefehle (arithm./log., Shift, Transfer, System) - Verzweigungen und Sprünge - Behandlung von Bedingungen - Adressierungsarten - Zielkonflikte bei der Adressierung - gängige Adressierungsarten - einfache Programme in Assembler unter Ausnutzung der Befehls- und Adressierungsmöglichkeiten. 31