(Inleiding) Computersystemen

advertisement
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
Download