150 likes | 284 Views
5 JJ2 0: Computerarchitectuur 2M200: Inleiding Computersystemen. Sessie 5 (1) : Microarchitectuur niveau ALU en datapad. Het datapad van de CPU: de kern. In veel computers de plaats waar ALLE berekeningen plaatsvinden !
E N D
5JJ20: Computerarchitectuur2M200: Inleiding Computersystemen Sessie 5(1):Microarchitectuur niveauALU en datapad
Het datapad van de CPU: de kern • In veel computers de plaats waar ALLE berekeningen plaatsvinden ! • “Co-processoren” kunnen wel sneller rekenen maar zijn gespecialiseerd in bepaald “genre” • Grafische 3D kaart kan geen wordprocessor draaien ! • Afweging: simpel & langzaam of complex & snel • Houden het vandaag overzichtelijk • Dus redelijk simpel… • Laten wel wat truukjes zien om te versnellen
INVA A•B A ENA Uitgang A+B A F0 ENB 0 selA B B 1 decoder B 2 F1 3 selB A Som B FA Carry in (CI) C Carry Carry uit (CO) De arithmetisch/logische eenheid (1) • Hardware voor één bit valt mee (voorbeeld !)... “Bit slice”
A B De “broek” F0, F1 ENA, ENB N, V, Z... ALU INVA CI CO Uitgang De arithmetisch/logische eenheid (2) • Deze “bit slices” koppelen via carry in/uit • Besturing via F0, F1, ENA, ENB en INVA • Tests: onder meer Negative, oVerflow en Zero
Standaard tests op ALU resultaten • Carry out: direct uit MSB bit slice • Auxiliary carry: carry uit bit slice voor bit 3 • Negatief (“Sign”): resultaat bit van MSB bit slice • Zero: logische NOR van alle resultaat bits • oVerflow: twee methoden (met zelfde resultaat) • (“Sign A” = “Sign B”) AND (“Sign A” “Sign result”) • “Carry uit MSB” XOR “Carry uit van (MSB - 1)” • Pariteit: logische XOR van alle resultaat bits MSB = Meest Significante (“linkse”) Bit
De (voorbeeld) ALU functies • Vijf stuuringangen en CI: 26 = 64 functies ? • In principe wel, maar niet allemaal nuttig… • Waarden doorgeven en constanten genereren: A, B, 0 (nul), 1 (één), -1 (min één) • Reken functies: A+B, A+B+1, B-A, B-A-1, 0-A (NEG), A+1 (INC), B+1, B-1 (DEC) • Logische functies: A AND B, A OR B, NOT A, NOT B • Géén XOR of schuif/roteer operaties
B-bus Datageheugen MAR MDR Programmageheugen PC IR ACCU HULP MAR: Memory Address Register C-bus A B MDR: Memory Data Register PC: Program Counter ALU IR: Instruction Register Een goedkoop datapad • Alle registers metEEN uitgang naarcentrale (“B”) bus • Met de benodigde“laad” en “outputenable” signalen !
Spelregels voor het datapad • Alle data-overdrachten op dezelfde manier • Van register, via bussen en combinatorische logica(waaronder ALU en tri-state buffers) naar registerlezen uit geheugen is hier combinatorisch ! • Alle registers aan systeemklok • Meerdere registers kunnen gelijktijdig waarde laden • Kunnen ook waarden uitwisselen (“exchange”) • Maximaal één overdracht per bus per klok
Klok 1: Datageheugen MAR Instructie ophalen MDR Programmageheugen PC IR Klok 2: ACCU Data geheugen lezen HULP A B Klok 3: ACCU HULP + MDR ALU (ALU: A+B) Afhandeling van “ADD A,(MAR)” PC verhogen (ALU: B+1) Nu weten we pas,welke instructie het is! HULP ACCU (ALU: B)
Minimale tijd FF D ingangenstabiel voor klok (“setup time”) Vertraging klok flip-flop uitgang klok FF Q’s B-bus C-bus Vertraging besturingen tri-state buffer Vertraging ALUingang B bus-C Tijd over:klok kan sneller ! Timing van het datapad: PC + 1 Register / flip-flop uitgangen stabiel PC waarde stabiel PC + 1 stabiel
Timing van het datapad: opmerkingen • De minimale klokperiode:net lang genoeg om langzaamste signaal op tijd stabiel te laten worden voor D ingangen FF’s • Klokperiode is constant voor alle cycli ! • Langzaamste signaal dat ooit voor kan komen bepaald de klokperiode: “kritisch pad” • Vertraging logische poorten is geen constante • Fabricage, voedingsspanning en temperatuur • Boek: beide klok flanken gebruiken = SMERIG
Het opvoeren van een processor • Hoeveelheid werk gedaan per seconde:hoeveelheid werk gedaan in één klok MAALhet aantal klokken uitgevoerd per seconde • Aantal klokken per seconde opvoeren mogelijk • Maar kortere poortvertraging niet altijd mogelijk ! • Enige andere optie: kritisch pad korter maken • Minder combinatorische logica achter elkaar zetten… • Dus minder complexe operaties per klok mogelijk… • Complexe operatie verdelen over meerdere klokken !
A-bus B-bus Datageheugen MAR MDR Programmageheugen PC IR ACCU A B ALU C-bus Hoeveelheid werk per klok opvoeren (1) • Efficienter werken Extra A-bus:operaties tussen twee registers zonder eerst “HULP” te laden Minder klokken nodig Kost hardware:meer tri-state buffers,complexere besturingen meer bedrading !
Datageheugen MAR MDR + 1 PC Programmageheugen IR ACCU HULP A B ALU Hoeveelheid werk per klok opvoeren (2) • Meer tegelijk doen Eigen “+ 1” voor PC:verhogen van PC zonder gebruik van ALU Ophalen van volgende instructie tijdens laatste klok van huidige instructie “Prefetchen” Kost hardware:extra adder,complexere besturing
Hoeveelheid werk per klok opvoeren (3) • Fetch-decode-execute door aparte hardware modulen parallel laten uitvoeren • Modulen als “emmertjesbrigade” koppelen: pipeline • Per klok een instructie ophalen mogelijk wordt in opeenvolgende klokken uitgevoerd • Meer instructies tegelijk ophalen: superscalair • Meer pipelines werken parallel aan elkaar • Instructievolgorde veranderen (“Out-Of-Order”) om op elkaar wachtende instructies te scheiden Wel in boek, niet bij stof !