1 / 17

5 JJ2 0: Computerarchitectuur 2M200: Inleiding Computersystemen

5 JJ2 0: Computerarchitectuur 2M200: Inleiding Computersystemen. Sessie 2(1): Inleiding I nstructie S et A rchitectuur (ISA) datatypen. De I nstructie S et A rchitectuur (ISA) is de grens tussen soft- en hardware. De ISA is een soort van “contract”.

cecil
Télécharger la présentation

5 JJ2 0: Computerarchitectuur 2M200: Inleiding Computersystemen

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. 5JJ20: Computerarchitectuur2M200: Inleiding Computersystemen Sessie 2(1):Inleiding InstructieSetArchitectuur (ISA)datatypen

  2. De InstructieSetArchitectuur (ISA)is de grens tussen soft- en hardware

  3. 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) “moet” - “mag niet” - “behoort te hebben” - “is implementatie-afhankelijk” • “informatieve” delen: voorbeelden en uitleg • “Backward compatible”: zelfde ISA, andere hardware (Intel!)

  4. 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

  5. Geheugenmodel: “adresruimten” • Welke “adresruimten” zijn beschikbaar ? • Adresruimte = onafhankelijk adresseerbaar geheugenHarvard 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

  6. 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

  7. Geheugenmodel: “semantiek” • Wat gebeurd 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 ?

  8. 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 een van • Register(s) met status-bits:“flags register” of “Program Status Word”

  9. 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

  10. Nog meer status vlaggen... • Resultaat vergelijkings (“CoMPare”) operaties • Soms separate vlaggen, meestal Z, S, C en V vlaggen • Instructies om deze te testen en programmaverloopte 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

  11. 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”

  12. 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

  13. 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”)

  14. 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, 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 !

  15. 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

  16. 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”

  17. ADDC ADD Carry 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”

More Related