1/ eindhoven university of technology 2IC20: Computersystemen Week 4: Inleiding InstructieSetArchitectuur (ISA) datatypen / faculty of Computer Science 1/ eindhoven university of technology De InstructieSetArchitectuur (ISA) is de grens tussen soft- en hardware / faculty of Computer Science 2 1/ eindhoven university of technology De ISA is een soort van “contract” Moet exact beschrijven wat hardware kan doen Gezien vanuit optiek van programmaschrijver Liefst op formele manier opschrijven “normatieve” delen: functionele eisen (exact) zoals: “moet” - “mag niet” “behoort te hebben” - “is implementatie-afhankelijk” “informatieve” delen: voorbeelden en uitleg “Backward compatible”: zelfde ISA, andere hardware (Intel!) / faculty of Computer Science 3 1/ eindhoven university of technology Een ISA bestaat uit verschillende delen Geheugenmodellen Processor registers en “status vlaggen” De uitvoerbare instructies Hardware afhankelijkheden (soms) Vreemd gedrag bij combinatie van instructies Niet-standaard volgorde van uitvoeren “Modi” van uitvoering (soms) / “user” / “kernel” mode met verschillend gedrag faculty of Computer Science 4 1/ eindhoven university of technology Geheugenmodel: “adresruimten” Welke “adresruimten” zijn beschikbaar ? Adresruimte = onafhankelijk adresseerbaar geheugen Harvard architectuur: programma / gegevens Adresruimten kunnen overlappen ! Practicumprocessor: 128 bits in intern data geheugen Hoe zijn die adresruimten ingedeeld ? Aantal bits per cel Aantal cellen per woord en “little/big endian-ness” Aantal woorden in adresruimte / faculty of Computer Science 5 1/ eindhoven university of technology Geheugenmodel: “uitlijning” Bij meer cellen per woord Meerdere adressen in één woord Lezen/schrijven van gegevens kan over woordgrens heen: “niet-uitgelijnde” (“non-aligned”) toegang Is ruimte-efficient maar kost veel extra hardware / faculty of Computer Science 6 1/ eindhoven university of technology Geheugenmodel: “semantiek” Wat gebeurt er met de volgorde van geheugen lees en schrijf operaties in het programma ? Sommige hardware architecturen kunnen deze volgorde veranderen (niet in dit college…) / Veel voorkomende optimalisatie: lezen na schrijven van hetzelfde adres niet uitgevoerd (processor houdt zelf bij wat net geschreven is) In normaal geheugen nog niet zo erg, maar onbruikbaar bij invoer/uitvoer ! Moet programma hier maar rekening mee houden ? faculty of Computer Science 7 1/ eindhoven university of technology Registers in de ISA Algemene registers voor tussenresultaten Soms gespecialiseerd voor datatypen Soms met “bijbaantje”, bijv. teller voor herhalingen ISA kan afspraak over gebruik bevatten Gespecialiseerde registers / Veelal adressen in geheugen(s) Programmateller (“Instruction Pointer”) is er één Register(s) met status-bits: “flags register” of “Program Status Word” faculty of Computer Science 8 1/ eindhoven university of technology Status “vlaggen”: ALU resultaat codes “Zero”: resultaat was 0 (nul) “Carry”: voor optellen (soms ook schuiven) “Borrow” is omgekeerde (NOT) carry voor aftrekken “Negative”: resultaat was negatief (linkse bit) “oVerflow”: resultaat incorrect (2’s complement) “Auxiliary carry”: tussen bit 3 en 4 bij optellen Nodig voor resultaatcorrectie bij decimaal optellen “Parity”: aantal één-bits in resultaat (on)even / faculty of Computer Science 9 1/ eindhoven university of technology Nog meer status vlaggen... Resultaat vergelijkings (“CoMPare”) operaties Soms separate vlaggen, meestal Z, S, C en V vlaggen Instructies om deze te testen en programmaverloop te veranderen naar aanleiding van hun toestand Machine/processor status Onderbreken programma met interrupt toegestaan “Trace” / “single step” aan/uit (fout zoeken) Machine in “user” of “kernel” mode (beveiliging) Soms vlaggen niet veranderbaar in “user” mode / faculty of Computer Science 10 1/ eindhoven university of technology Instructies: de basis Verplaatsen van gegevens “load” en “store”: lezen en schrijven geheugen “move”: copieren gegevens tussen registers Bewerken van gegevens Rekenkundig, logisch (Boole!) en vergelijkingen Besturing van programmaverloop (Conditioneel) laden van programmateller Onthouden adres volgende instructie: “subroutines” / faculty of Computer Science 11 1/ eindhoven university of technology Practicumprocessor adresruimten Programmageheugen: 64 kilobyte Extern gegevensgeheugen: 64 kilobyte Intern gegevensgeheugen: 256 bytes “Special Function Registers” (SFR’s): 128 bytes in- en uitvoer besturing en CPU registers Bit adresseerbaar geheugen: 256 bits 128 in intern gegevensgeheugen bytes 32..47 128 in SFR’s met adressen deelbaar door 8 / faculty of Computer Science 12 1/ eindhoven university of technology Practicumprocessor CPU registers (1) PC: 16 bits, adresseert 64 kilobyte programma A/ACC: 8 bits, resultaatregister (“Accumulator”) B: 8 bits, voor delen en vermenigvuldigen DPTR: 16 bits, adresseert 64 kilobyte extern gegevens geheugen (“Data PoinTeR”) SP: 8 bits, adresseert “stack” (“stapel”) in intern gegevens geheugen (“Stack Pointer”) / faculty of Computer Science 13 1/ eindhoven university of technology Practicumprocessor CPU registers (2) R0..R7: 8 hulpregisters van 8 bits per stuk 4 sets in bytes 0..31 van intern gegevens geheugen R0 en R1 kunnen adresseren in gegevens geheugens PSW: 8 bits “Program Status Word” Standaard vlaggen: C, V, A, N, P (P volgt A register) Carry ook gebruikt voor 1 bit Booleaanse operaties 2 bits kiezen set van hulpregisters R0..R7 Alle registers behalve PC en R0..R7 ook SFR ! / faculty of Computer Science 14 1/ eindhoven university of technology Datatypen, hardware ondersteund (1) Gehele getallen (“integers”) met vast aantal bits Binair alleen positief of “two’s complement” zie appendix A van boek, hoort bij stof ! Optellen/aftrekken voor allebei hetzelfde, status vlaggen maken verschil (C versus V/N) Soms “Binary Coded Decimal” ondersteuning “Floating point” getallen: “drijvende komma” Zie appendix B van boek - NIET BIJ STOF “Pointers”: adressen in geheugen / faculty of Computer Science 15 1/ eindhoven university of technology Datatypen, hardware ondersteund (2) Booleaanse waarden (“waar”/“niet waar” of 0/1) Meestal met meer bij elkaar in register (“bitmap”) Booleaanse operaties op meer bits tegelijk ! Soms als losse bits bruikbaar (practicumprocessor) Soms met speciale coderingen in register bijv. “nul is niet waar, niet-nul is waar” Karakters: meestal als 8/16 bits gehele getallen Kunt er niet mee rekenen, zelfs vergelijken moeilijk ! Wel bewerkingen op reeksen karakters: “strings” / faculty of Computer Science 16 1/ eindhoven university of technology Datatypen, software ondersteund Complexe datatypen uit eenvoudige opbouwen Direct ondersteunde worden wel “primitief” genoemd Hardware ondersteuning voor uitbreidingen Speciale methoden van geheugenadressering “Decimal Adjust” voor Binary Coded Decimal werk “Add with Carry” / “Subtract with Borrow” / ADDC faculty of Computer Science ADD Carry 17