1 / 43

Toy-Model aus Stunde 7

ALU. Toy-Model aus Stunde 7. Rechenwerk. Steuerwerk. Speicher. Akkumulator. Register X. Befehl. Argument(e). Befehle, Argumente, Daten. Dekoder. PC. Arithmetisch-Logische Einheit. Ablaufsteuerung (Microcode). C. Z. Adressbus. Datenbus. Zusammenfassung Toy-Model Stunde 7.

magar
Download Presentation

Toy-Model aus Stunde 7

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ALU Toy-Model aus Stunde 7 Rechenwerk Steuerwerk Speicher Akkumulator Register X Befehl Argument(e) Befehle, Argumente, Daten Dekoder PC Arithmetisch-Logische Einheit Ablaufsteuerung(Microcode) C Z Adressbus Datenbus Technische Informatik I (SS 2006)1

  2. Zusammenfassung Toy-Model Stunde 7 • 1. Fetch • Befehl wird aus Speicher geholt • 2. Decode • Befehl wird dekodiert und Anzahl der Argument bestimmt • 3. Argumente für Befehl holen • 4. Operation ausführen • 5. Evtl. melde „ich bin fertig“(z.B. über einen Interrupt) Technische Informatik I (SS 2006)2

  3. Teil 4: Prozessoren 4d: . Technische Informatik I (SS 2006)3

  4. Als Beispiel: Intel 8086 • Designer : Intel • Hersteller: Intel, aber auch (!) AMD, OKI, Siemens • Einführungsdatum: Juni 1978 • Geschwindigkeit: 5-12 Mhz • Cache: nein • Anzahl der Transistoren: 29,000 • Herstellungsprozeß:3 m Technische Informatik I (SS 2006)4

  5. Was ist ein Register ? • Rechenzelle der CPU • Data Registerspeichern üblicherweise Integer Zahlen.In einigen CPUs ist der Akkumulator ein spezielles Data Register,implizit genutzt für viele Operationen. • Address Registerspeichern Memory Adressen.In einigen CPUs ist das Index Register ein spezielles Adress Register, welches aber meistens dazu benutzt wird, Zahlen zur Modifizierung von Adressen zu speichern (statt die Adressen selbst). • General Purpose Register (GPRs) können beides Daten und Adressen speichern. • Floating Point registers (FPRs) sind Data Register für Floating Point Zahlen. • Constant Registersspeichern read-only Werte(z.B.null, eins, pi, ...). Technische Informatik I (SS 2006)5

  6. Was ist ein Register ? • Vector Registerspeichern Daten für Vektor Prozessingvon SIMD (Single Instruction, Multiple Data) Instruktionen. • Special Purpose Registerspeichern den augenblicklichen Zustand des Programms.stack pointer registerflags registercontrol register ( control flags werden vom Programm gesetzt)status register ( status flags werden vom Prozessor gesetzt) • Instruction Registerspeichern die Instruction, die derzeit gerade ausgeführt wird. Technische Informatik I (SS 2006)6

  7. Register eines 80x86 Technische Informatik I (SS 2006)7

  8. 8086, generelle Register • im 8086 nur 16-bit • „general“ registers • dataregisters AXaccumulator = Teil der ALU (siehe Toy Model) = Ziel von Rechenoperationen BXbase register = Anfangsadresse einer Datenstruktur CXcounter register = für Schleifenprogrammierung DXdata register = Datenregister für einen Operanden • address registers SIsource register DIdestination register SPstack pointer register BPstack base pointer register • aufgeteilt in 2x8 bit (Bsp. AH = high, AL = low) Technische Informatik I (SS 2006)8

  9. 8086, zusätzliche Register • segment registersCScodesegment register DSdatasegment register ESextrasegment register SSstacksegment register • andereRegister IPinstruction pointer register FLAGS flag register • Das IP Register zeigt an, wo das Programm im Prozessor in diesem Augenblick (= in diesem clock cycle) Code ausführt.Das IP Register kann vom Programmierer nichtdirekt angesprochen werden (damit man das Program nicht modifiziert, während es bereits läuft). Technische Informatik I (SS 2006)9

  10. Flags Register • zeigt den derzeitigen Zustand des Prozessors an • Jedes Bit in diesem Register ist ein flag. • Jeder Flag kann 0 oder 1 sein. • Beispiele:- overflow flag- interrupt flag- virtual mode flag- trap flag (für Einzelschrittverarbeitung) Technische Informatik I (SS 2006)10

  11. Programmierung eines 80x86 in Assembler Technische Informatik I (SS 2006)11

  12. Was sind Op-Codes ? • Vordefinierte Sequenz von Instruktionen,die mit einem einzigen Assembler Befehlaufgerufen werden können.für 8086 Assembler117 Op-Codes:aaa, aad, aam, aas, adc, add, and, call, cbw, clc, cld, cli, cmc, cmp, cmpsb, cmpsw, cwd, daa, das, dec, div, esc, hlt, idiv, imul, in, inc, int, into, iret, ja, jae, jb, jbe, jc, jcxz, je, jg, jge, jl, jle, jmp, jna, jnae, jnb, jnbe, jnc, jne, jng, jnge, jnl, jnle, jno, jnp, jns, jnz, jo, jp, jpe, jpo, js, jz, lahf, lds, lea, les, lock, lodsb, lodsw, loop, loope, loopne, loopnz, loopz, mov, movsb, movsw, mul, neg, nop, not, or, out, pop, popf, push, push, puchf, rcl, rcr, rep, repe, repne, repnz, repz, ret, rol, ror, sahf, sal, sar, sbb, scasb, scasw, shl, shr, stc, std, sti, stosb, stosw, sub, test, wait, xchg, xlat, xor Technische Informatik I (SS 2006)12

  13. Op-Code Beispiel #1: MOV • move den Inhalt von Register bx nach Register axMOV ax, bx(Achtung: Reihenfolge ist 1. Ziel, 2. Quelle) • move den Inhalt des Registers ax in das (externe) Memory MOV [address], axAnmerkung:[...] steht für eine Hex-Zahl • Eine Kombination, die nicht möglich ist, ist move von Memory zu Memory, z.B.MOV [address1], [address2] • um dies zu erreichen, müssen zwei MOV benutzt werden MOV ax, [address2] MOV [address1], ax Technische Informatik I (SS 2006)13

  14. Op-Code Beispiel #2: JMP • ändert den Fluß des ausgeführten Codesdurch Überschreiben des instruction pointerRegister • JMP 0x89AB ; (ohne Angabe eines Registers)lädt das IP Register mit dem neuen Wert 0x89AB dies ist der indirekte Weg, einen Befehl auszuführen (weil sich IP Register nicht direkt ansprechen läßt)JMP 0xACDC:0x5578 ;lädt das CS Register mit 0xACDC und das IP Register mit 0x5578 (das sind quasi 2 Operationen in einem Takt-Zyklus)JMP AX ; springt zu dem Wert, der in Register AX gespeichert ist Technische Informatik I (SS 2006)14

  15. Wozu wird das FLAGS Register genutzt ? • flags werden benötigt z.B. für vergleichende Operationen zwischen 2 Registern (z.B. wenn falls ungleich  wird ein flag=1 gesetzt). • Eine jump Operation kann dann das entsprechende flag prüfen und springen, falls das flag gesetzt. • Beispiel:cmp ax, bx ;jne do_something ;vergleicht die AX and BX register, und – falls ungleich (jne = jump not equal) – springt zur Marke do_something Technische Informatik I (SS 2006)15

  16. Einige weitere Op-Codes • ROL = rotate left, ROR = rotate rightwichtig für bit-by-bit Datentransfer (z.B. über serielle Schnittstelle)8 x (sende bit  rotate) = sende 1 byte • IRET = return from interrupt • DIV = divide = relativ komplexe Rechenoperation • xor cx, cx ;wird benutzt um ein Register zu „nullen“ • SQRT=x war nicht Op-Code auf 8086, jedoch auf DEC ALPHA Architektur • Floating Point Operationen ursprünglich auf separater CPU Intel 8087(z.B. als PCI Einsteckkarte) Technische Informatik I (SS 2006)16

  17. Beispiel für 8086 Assembler = Maschinensprache • summe = a + b + c + d;ist für einen Assembler zu kompliziert und muß daher in mehrere Anweisungen aufgeteilt werden. Der 80x86 Assembler kann immer nur zwei Zahlen addieren und das Ergebnis in einer der beiden verwendeten "Variablen" (Akkumulatorregister) speichern. summe = a; summe = summe + b; summe = summe + c; summe = summe + d;und würde beim 80x86 Assembler so aussehen: mov eax,[a] add eax,[b] add eax,[c] add eax,[d] Technische Informatik I (SS 2006)17

  18. Assembler = Maschinensprache • Einfache if-then-else Konstrukte sind für Assembler auch bereits zu schwierig: if (a==4711) { ... } else { ... } und müssen daher mit Hilfe von gotos ausgedrückt werden: if (a!=4711) goto ungleich ;gleich: ... goto weiter: ungleich: ... weiter: ... Im 80x86 Assembler sieht das dann so aus: cmp eax,4711 jne ungleich gleich: ... jmp weiter ungleich: ... weiter: ... Technische Informatik I (SS 2006)18

  19. Assembler = Maschinensprache • Einfache Zählschleifen werden vom 80x86 Prozessor schon besser unterstützt. • Das folgende C Programm for (i=0; i<100; i++) { summe = summe + a; } sieht im 80x86 Assembler etwa so aus: mov cx,100 ; counter registerschleife: add ax,[a] ; accumulator registerloop schleife • Der Loop-Befehl dekrementiert implizit(!) das cx Register(d.h. der Assembler ist bereits etwas „clever“)und führt den Sprung nur aus, wenn der Inhalt des cx Registers anschließend nicht 0 ist. Technische Informatik I (SS 2006)19

  20. Code Control ohne direkten Zugriff auf das IP Register • Wenn ich das IP Register nicht direkt ansprechen kann,wie weiß ich dann, was gerade im IP Register passiert ? über Tricks • Bsp. lesen d.h. ich will wissen an welcher Adresse im code segment die Start-Adresse von „mach_was“ steht:call mach_was ;mach_was: pop axdann steht im ax danach die gewünschte Adresse • Bsp. schreibend.h. wie kann ich dann einen bestimmten Op-Code ausführen lassen ?das ist einfach:mov ax, 0x90 ; das ist der op-code für „mach nix“ ;(NOP = no operation)jmp ax • Aber: es gibt eine Prefetch-Queue (!)eine bestimmte Anzahl von Befehlen sind bereits beim 80x86 „in der Pipe“und können von User nicht mehr nachträglich (d.h. nach Laden des Programms) verändert werden Technische Informatik I (SS 2006)20

  21. Wie adressiert man Speicher ? Technische Informatik I (SS 2006)21

  22. Was ist ein Segment ? • Es gibt zwei verschiedene Modelle zur Adressierung von Speicher(„Memory Access an einer ganz bestimmten Adresse“) • lineare Addressierungz.B. Macintosh, VAX, Motorola 68000 • segmentierteAddressingz.B. alle 80x86 Prozessoren im REAL modus(Ausnahme: WinNT) • 80x86 hat zwei Modi: • real mode • Speicher-Block 64k • SEGMENT ist Inhalt des Segment-RegistersOFFSET ist der Offset in diesem segment. • insgesamt konnte im Falle des 8086 1 MB Speicher adressiert werden • jedoch nur immer 64k zu einem Zeitpunkt • protected mode Technische Informatik I (SS 2006)22

  23. Was ist ein Segment ? • nach dem BOOT ist der Prozessor per default im real mode, • um in eine lineare Adresse zurück zu übersetzen, wird die Segment Address um 4 bits nach links geshiftet.Die Formel ist: segment*0x10+offset(0x10 = dezimal 16 = binär 10000) • 2 Register werden benutzt für eine Speicher-Adresse: 1 Register für Segment, 1 Register für Offset. • Beispiel für real mode (nur für real mode)DS hat hexadecimaleZahl 0xDEADDX hat hexadezimale Zahl 0xCAFE dann würde der Memory-Block starten bei der Adresse0xDEAD * 0x10 + 0xCAFE = 0xEB5CE • 0xEB5CE ist dann eine lineare Adresse Technische Informatik I (SS 2006)23

  24. Segmentierte Adressierung • Notation segment:offset • in dem Beispiel kann die lineare Adrese 0xEB5CE geschrieben werden als 0xDEAD:0xCAFE oder DS:DX. • Es gibt einige spezielle Kombinationen von Segment Registernund generellen Registern, die zu wichtigen Adressen zeigen: • CS:IP zeigt auf die Adresse, wo der Prozessor sein nächstes bytevon dem Code holt(aber: der Benutzer kann hier nicht direkt zugreifen) • SS:SP zeigt auf den Ort der Hex-Zahl, die zuletzt auf den Stack gelegt wurde • DS:SI wird oft genutzt, um auf die Hex-Zahl zu zeigen, die dann nach ES:DI kopiert wird(Trick, um data segment und extra segment zu verbinden) Technische Informatik I (SS 2006)24

  25. Adressierung im Protected Mode • 80286 hat protected mode • Intel Prozessoren ab dem 80286 befinden sich nach einem Reset standardmäßig im bekannten Realmode. Der Protected Mode muß erst durch das Setzen eines bitsim Steuerregister CR0 aktiviert werden. Dabei ist zu beachten, daß auf das CR0-Register nur über MOV-Befehle zugegriffen werden kann, d.h. eine direkte Manipulation des CR0-Registers ist nicht möglich.; aktivieren des Protected Mode mov eax,cr0 or eax,1 ; setzt protected mode Bit (Bit 0) mov cr0,eax • 4 GB adressierbarer Speicher ! • über virtuelle Adresse Technische Informatik I (SS 2006)25

  26. Adressierung im Protected Mode • Unter einer virtuellen Adresse ist dabei ein 16 Bit Wert (der sogenannte Selektor) und eine 32 Bit-Offsetadresse zu verstehen • Wie im Realmode muß der 16 Bit Wert (Selektor) zunächst in eines der Segmentregister (CS, DS, ES, FS oder GS) geladen werden, damit mit der Offsetadresse linear vom Segmentbeginn aus auf den Arbeitsspeicher zugegriffen werden kann. • Der Selektor enthält dabei jedoch nicht die Adresse des Segmentes im Arbeitsspeicher (wie es im Realmode der Fall ist), sondern die Nummer eines Segmentbeschreibers (Deskriptor). • Ein Deskriptor hält dabei den physischen Segmentstart und die Länge des Segmentes fest. Technische Informatik I (SS 2006)26

  27. Adressierung im Protected Mode Technische Informatik I (SS 2006)27

  28. Intel: Weiterentwicklungen des 8086 • 80286: Läuft nach Einschalten wie 8086 (real mode) • Jedes Programm kann gesamten Speicher verändern(keine Schutzfunktionen !) • Protected Mode: Segmente bekommen Rechte • "kooperatives" Multitasking: bis Windows 3.11 und bis MAC OS 9Dabei geben die einzelnen Tasks "von sich aus" die Kontrolle an das Betriebssystem zurück • "pre-emptives" Multitasking: heute StandardDas Betriebssystem entscheidet darüber, ob der aktuelle Task fortgesetzt oder gestoppt wird • Bis 80386: Externer Coprozessor für Fließkommaberechnungen • Ab 486 integriert Technische Informatik I (SS 2006)28

  29. Was ist ein Interrupt ? • kurzfristige Unterbrechung des Programms • im FLAGS Register wird dann bit #9 gesetzt • CPU arbeitet dann eine spezielle Befehlssequenz ab,die „interrupt service routine“(z.B. schreibe ZERO in das counter register) • danach wird das Programm an der gleichen Stelle fortgesetzt • was macht man dann ?  Op-Code IRET (return from interrupt) • pre-emptives Multitasking geht nur mit Interrupts(= halte einen bestimmten Task sofort an) • Was ist „Echtzeit“ ?definiert über Reaktionszeit auf Interruptsz.B. reagiere auf Interrupt innerhalb von ~8 us • wichtig: ETHERNET Datentransfernach jedem Datenpaket von 1.5kB Größe wird ein Interrupt ausgelöst(d.h. hohe CPU Belastung durch Abarbeitung der Interrupts) Technische Informatik I (SS 2006)29

  30. Was ist ein Stack ? Wenn man den Inhalt eines Register kurz einmal speichern möchte(weil man ihn danach noch benötigt, aber auch genau dieses Register in diesem Moment benötigt), muß man in einem asm Programm immer ein Label definieren (für „goto“) Was man will: einen „Schmierzettel“.STACK.Der Stack ist eigentlich nichts weiter als ein Stück desHauptspeichers, nur daß dort nicht mit festen Adressen gearbeitet wird, sondern die zu sichernden Daten einfach immer oben drauf geschrieben (push) bzw. von oben heruntergeholt werden (pop). Der Zugriff ist also ganz einfach, vorausgesetzt man erinnert sich daran, in welcher Reihenfolge die Daten auf den Stapel gelegt wurden. Ein spezielles Register, der stackpointerespzeigt stets auf das oberste Element des Stacks. Technische Informatik I (SS 2006)30

  31. Was ist ein Stack ? esp = stackpointer Technische Informatik I (SS 2006)31

  32. Exkurs: Selbst-Modifizierende Programmierung • gibt es das ?  ja (!)Assembler Code kann sich selbst modifizieren(obwohl der Benutzer auf CS:IP nicht direkt zugreifen kann) • Warum ? op-codes sind nichts anderes als „hex Zahlen“increaseist ein op-Codedecreaseist ein op-Code • Bsp. analog zum vorherigen Bsp.:mov cx,100 ; counter register ; ax wird 100x automatisch ausgeführt schleife_1: mov ax,0x40 ; 0x40 ist Op-code für „inc ax“ cmp cx, 50 je schleife_2 ;loop schleife_1 ;schleife_2: mov ax,0x48 ; 0x48 ist Op-code für „dec ax“loop schleife_2 ;; jetzt ist alles wieder wie vorher ; weil op-code „überladen“ wurde ; und 50x inc und 50x dec ausgeführt wurde Technische Informatik I (SS 2006)32

  33. Kommazahlen • Arbeiten mit Komma • Beispiel:Zerlege 8 Bit in 4 Vor- und 4 Nachkommabits: • 1001.0011 = 9.0 + 0*0.5 + 0*0.25 + 1*0.125 + 1*0.0625 = 9.1875 • das ist eine Festkommazahl, d.h. Wertebereich stark eingeschränkt(z.B. was soll man mit  machen ?) • der Compiler übersetzt dann in Rechenoperationenmit ganzen Zahlen • Alternative: wir könnten einen „Exponenten“ definieren • 9.1875 • =9.1875 * 100 • =0.091875 * 102 • =918.75 * 10-2 • das sind Fließkommazahlen Technische Informatik I (SS 2006)33

  34. Fließkommazahlen • benötigen noch 2. Zahl, den Exponenten • nicht neu: Prinzip bereits von Konrad Zuse in Z1 benutzt • 8 Bit mit „Bias“ von 127, d.h. 127 ist gleich 0. wozu ? a.) 127=7F=111111, d.h. 1 bit eingespart, kann als Vorzeichenbit genutzt werdenb.) Vermeidung von negativen Exponenten • Basis ist nicht 10, sondern 2(Anmerkung: im Prinzip könnte jede Zahl Basis sein, nur 2 hat sich durchgesetzt)Vorteil: Exponent sagt einfach aus, um wie viele Stellen das Komma verschoben ist(Bsp. für Basis 16: IBM/360, 1964, benutzt für NASA Apollo) • Prinzip: suche eine Normaldarstellung(d,h, die Darstellung, in der genau eine Eins vor dem Komma steht) • 9.1875 =1001.0011 * 201111111 • Oder: =100.10011 * 210000000 • Oder: =1.0010011 * 210000010 Technische Informatik I (SS 2006)34

  35. IEEE-Standard 754 Technische Informatik I (SS 2006)35

  36. 8087 Intel Floating Point Co-Prozessor • 5 MHz40-pin Keramik DIP Technische Informatik I (SS 2006)36

  37. Berechnung einer IEEE 32-bit Gleitkommazahl • Umwandlung einer Dezimalzahl in eine binäre Gleitkommazahl vom Typ Single nach IEEE 754 • Vorzeichenv (1 bit), Mantissem und Exponentemüssen berechnet werden, aus denen sich dann die Zahl x zusammensetzt:Anmerkung: die Basis ist hier „2“ wie bei fast allen FPU heute,aber prinzipiell muß sie nicht „2“ sein. • VorzeichenJe nachdem, ob die Zahl positiv oder negativ ist, ist das Vorzeichen v +1 oder −1. Ein positives Vorzeichen wird mit einem Vorzeichenbit 0 gespeichert, negative Zahlen mit 1. Technische Informatik I (SS 2006)37

  38. Berechnung einer IEEE 32-bit Gleitkommazahl • ExponentBeim IEEE single-Datentyp sind dafür 8 Bit vorgesehen. Regel: der Exponent muß so gewählt werden, daß die Mantisse/223einen Wert zwischen 1 und 2 erhält: • Wenn hierbei ein Wert für den Exponenten heraus kommt, der kleiner als −126 oder größer 127 ist, kann die Zahl mit diesem Datentyp (wegen 8-bit Beschränkung) nicht gespeichert werden. Statt dessen wird die Zahl als 0 (Null) oder als „unendlich“ abgespeichert. • Mantissewird nun in den verbleibenden 23 Bit abgespeichert: Technische Informatik I (SS 2006)38

  39. Berechnung einer IEEE 32-bit Gleitkommazahl • Der Wert für den Exponenten wird jedoch nicht direkt gespeichert, sondern um einen Bias-Wert erhöht (um negative Werte zu vermeiden). Bei IEEE single ist der Bias-Wert 127. Somit werden die Exponentenwerte −126...+127 als so genannte „Charakteristik“ zwischen 1...254 gespeichert. Die Werte 0 und 255 als Charakteristik sind reserviert für die speziellen Zahlenwerte • Null, wenn Exponent=0...0 und Fraction=0…0 • (Anmerkung: Vorzeichenbit ist gültig !, d.h. es gibt +0 und -0) • Unendlich, wenn Exponent=1…1 und Fraction=0…0 • (Anmerkung: Vorzeichenbit ist gültig !,d.h. es gibt +∞ und -∞) • Not a Number (NaN), z.B. nach Teilung durch Nullwenn Exponent=1…1 und Fraction ungleich Null Technische Informatik I (SS 2006)39

  40. Berechnung einer IEEE 32-bit Gleitkommazahl BIAS 1 bit Vorzeichen + 8 bit Exponent + 23 bit Mantisse Umkehrung: Technische Informatik I (SS 2006)40

  41. Pentium-FPU (Floating Point Unit) • kann nicht mit normalen Prozessorregistern arbeiten • 8 eigene Register, aber als Stack (ST0-ST7, ST0=Top of Stack=TOS) • nur TOS kann geladen oder gespeichert werden • Operationen immer mit TOS + anderes Register (oder Speicherstelle) Technische Informatik I (SS 2006)41

  42. Pentium-FPU (Floating Point Unit) Status-Register Control-Register Technische Informatik I (SS 2006)42

  43. FPUs anderer Architekturen (nicht 80x86) Technische Informatik I (SS 2006)43

More Related