Week 2: Microarchitectuur niveau ALU en datapad 2IC20: Computersystemen Week 2: Microarchitectuur niveau ALU en datapad
“Positieve” en “Negatieve” logica Boole werkt met “waar” / “niet waar” voor het gemak vertaald in “1” (EEN) en “o” (NUL) Hardware werkt met voltages “hoog” en “laag” koppeling Boole aan voltages: afspraak ! A B F 0v 5v A B F 1 A B F 1 0 volt: “laag” 5 volt: “hoog” positief: “hoog” = 1 negatief: “laag” = 1
Niets gaat vanzelf: “klokken” Volgorde van operaties op chip van groot belang Onderdelen moeten gesynchroniseerd worden Met flip-flops asynchrone operaties in toom houden Al die flip-flops met een “systeemklok” besturen: DE “klok” Vaste tijd tussen aktieve klokflanken: de (klok-) cyclustijd Omgekeerde: klok-frequentie (VLSI: tot 3 GIGAHerz) Aanmerking op boek: vertragen klokken = SMERIG
Een “register” in hardware Setje flip-flops met identieke stuursignalen 1 MUX sel “Laad register” besturing Ingang “Output enable” (OE) besturing Uitgang: 0, 1, “open” Systeem- reset D Q clr Systeem- klok Drie-toestands versterker Engels: “Tri-state” buffer
Uitgangen aan elkaar: tri-state buffers ! D0..7 Q0..7 OE clr load “A” Laad “A” Lees “A” 8-bit register Klok Reset Bus “in” Bus “uit” Laden van register: - Waarde op bus “in” - “Laad” aktief maken - Wachten op klok ! Lezen van register: - “Lees” aktief maken - Waarde op “uit” bus D0..7 Q0..7 OE clr load “B” Laad “B” Lees “B” Tri-state buffers op één bus NOOIT tegelijk aktief maken !
Extra grapjes met registers Laden van meerdere bussen Meer ingangen op ingangs-multiplexer Verbinden met meerdere uitgangs-bussen Voor iedere bus een eigen set tri-state buffers “Lokale” operaties mogelijk Q uitgangen van flip-flops via combinatorische logica terugkoppelen naar ingangs-multiplexer Increment (+1), decrement (-1), schuiven…
Besturingssignalen van geheugens Meestal meer geheugen-chips in systeem “Chip Select” (CS) signaal aktief voor lezen / schrijven “Aan- en uitzetten” van uitgang soms tijdkritisch Apart “Output Enable” (OE) signaal vrij standaard Lees / schrijf besturing apart of gecombineerd Apart: “Read” (RD) en “Write” (WR) signalen Gecombineerd: één signaal kiest lezen OF schrijven Signalen vaak negatieve logica: bijv. CS of /CS
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…
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 één uitgang naar centrale (“B”) bus Met de benodigde “laad” en “output enable” signalen ! Data geheugen MAR MDR B Programma geheugen PC IR ACCU HULP C-bus A MAR: Memory Address Register MDR: Memory Data Register 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 ACCU,(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)