5JJ20: 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 ! “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
De arithmetisch/logische eenheid (1) Hardware voor één bit valt mee (voorbeeld !)... A B ENB ENA INVA A•B A+B B A 1 2 3 decoder selA selB F0 F1 Uitgang B A C Som Carry FA Carry in (CI) “Bit slice” Carry uit (CO)
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 ALU A B Uitgang De “broek” ENA, ENB INVA F0, F1 N, V, Z... CO CI
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
Een goedkoop datapad B-bus Alle registers met EEN uitgang naar centrale (“B”) bus Met de benodigde “laad” en “output enable” signalen ! Data geheugen MAR MDR B Programma geheugen PC IR ACCU HULP MAR: Memory Address Register MDR: Memory Data Register C-bus A ALU PC: Program Counter IR: Instruction Register
Spelregels voor het datapad Alle data-overdrachten op dezelfde manier Van register, via bussen en combinatorische logica (waaronder ALU en tri-state buffers) naar register lezen 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
Afhandeling van “ADD A,(MAR)” Klok 1: Instructie ophalen B ALU MAR MDR PC IR ACCU HULP A Data geheugen Programma geheugen PC verhogen (ALU: B+1) Nu weten we pas, welke instructie het is! Klok 2: Data geheugen lezen HULP ACCU (ALU: B) Klok 3: ACCU HULP + MDR (ALU: A+B)
Timing van het datapad: PC + 1 Minimale tijd FF D ingangen stabiel voor klok (“setup time”) Vertraging klok flip-flop uitgang klok FF Q’s Register / flip-flop uitgangen stabiel Vertraging besturing en tri-state buffer B-bus PC waarde stabiel Vertraging ALU ingang B bus-C C-bus PC + 1 stabiel Tijd over: klok kan sneller !
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 MAAL het 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 !
Hoeveelheid werk per klok opvoeren (1) Efficienter werken B-bus A-bus C-bus Extra A-bus: operaties tussen twee registers zonder eerst “HULP” te laden ALU MAR MDR PC IR ACCU A Data geheugen Programma geheugen B Minder klokken nodig Kost hardware: meer tri-state buffers, complexere besturing en meer bedrading !
Hoeveelheid werk per klok opvoeren (2) B ALU MAR MDR PC IR ACCU HULP A Data geheugen Programma geheugen Meer tegelijk doen Eigen “+ 1” voor PC: verhogen van PC zonder gebruik van ALU + 1 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 !