Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdAdam Geerts Laatst gewijzigd meer dan 10 jaar geleden
1
1/1/ /e/e eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 2(1): Inleiding InstructieSetArchitectuur (ISA) datatypen
2
1/1/ /e/e eindhoven university of technology De InstructieSetArchitectuur (ISA) is de grens tussen soft- en hardware
3
1/1/ /e/e 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) “moet” - “mag niet” - “behoort te hebben” - “is implementatie-afhankelijk” –“informatieve” delen: voorbeelden en uitleg “Backward compatible”: zelfde ISA, andere hardware (Intel!)
4
1/1/ /e/e 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
5
1/1/ /e/e 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
6
1/1/ /e/e 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
7
1/1/ /e/e eindhoven university of technology 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
1/1/ /e/e 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 een van –Register(s) met status-bits: “flags register” of “Program Status Word”
9
1/1/ /e/e 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
10
1/1/ /e/e 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
11
1/1/ /e/e 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”
12
1/1/ /e/e 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
13
1/1/ /e/e 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”)
14
1/1/ /e/e 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, 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
1/1/ /e/e 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
16
1/1/ /e/e 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”
17
1/1/ /e/e 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” Carry ADD ADDC
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.