Datorteknik Föreläsning 6 Processorns uppbyggnad, pipelining Mål Att du ska känna till hur processorn byggs upp Att du ska kunna de viktigaste byggstenarna i processorn Att du ska känna till begreppet dataväg Att du ska förstå idén bakom pipelining Att du ska veta varför hoppluckan finns 1
Innehåll Repetition av instruktionsformat Vilka byggblock består processorn av? Hur kopplas dessa byggblock samman? - Datavägar. Vad är pipelining? Hur fungerar pipeling i MIPS? Vilka problem kan man råka ut för med pipelining? Varför finns hoppluckan i MIPS? Instruktionsformat i MIPS Det finns tre huvudsakligen olika typer av instruktioner som representeras med olika bitmönster I-typ (immediate) instruktioner, tex add t0,t1,k R-typ (register) instruktioner, tex add t0,t1,t2 J-typ (jump) instruktioner, tex j label el jr ra Varje instruktion är ar lång 2
Instruktioner som bitmönster i minnet Alla instruktioner är ar stora, 4 byte De kodas binärt på något av tre följande sätt: I-typ op (6) rs (5) rt (5) offset (16) R-typ op (6) rs (5) rt (5) rd (5) sa (5) funk (6) J-typ op (6) hoppadress (26) Exempel på instruktionstyper I-typ: addi, ori, beq, lw, sw R-typ: add, or, sub, and, sll, srl J-typ: j, jal, jr 3
Vad händer med instruktionerna i CPUn? I processorn avkodas instruktionernas bitmönster med logik Olika delar av instruktionen utför olika uppgifter Vad gör processorn? Hämta instruktionen Avkoda instruktionen Hämta instruktionens operander: Antingen i register eller direkt ur instruktionen (om I-typ) Utföra instruktionen: Addera, jämföra, hoppa Skriva resultatet till destinationen: register (add, sub, ) minne (lw, sw) programräknaren (hoppinstruktioner) 4
Instruktionshämtning +4 Adderare - PC innehåller adressen till nästa instruktion. - PC stegas upp med 4 varje gång (normalt) PC Adress Instruktionsminne Instruktion Klocka Aritmetisk-logisk enhet In 1 In 2 Ut Styrning Med styrsignalerna kan funktionen hos ALU:n påverkas. Exempel: Styrsignal Funktion 000 and 001 or 010 add 110 sub 111 slt 5
Registerbanken läs reg. 1 nr läs reg. 2 nr skriv reg. nr skriv data läs data 1 läs data 2 Registernummer: 5 bit Registren är organiserade som 32 parallella D-vippor per register skriv styrn. Dataminnet adress data in Dataminne data ut skrivstyrning Skrivstyrningen väljer om data läses från eller skrivs till minnet 6
Datavägar Processorn byggs upp genom att definiera datavägar, dvs hur data transporteras mellan olika enheter Vi ska titta på några olika instruktioner för att se hur datavägarna ser ut Datavägar - add t0, t1, t2 I N S T R U K T I O N Läs reg 1 Läs reg 2 Skriv reg skriv data läs data 1 In 1 läs data 2 In 2 skriv styrn. Styrlogik ALU Ut Styrning 7
Datavägar addi, t0, t1, K I N S T R U K T I O N Läs reg 1 Skriv reg skriv data K(16bit) skriv styrn. läs data 1 In 1 In 2 teckenförl. ALU Ut Styrning Styrlogik Datavägar lw t0, K(t1) I N S T R U K T I O N Läs reg 1 Skriv reg skriv data K(16bit) skriv styrn. läs data 1 In 1 In 2 teckenförl. ALU adr Styrning Dataminne data ut Styrlogik 8
Datavägar - observationer Byggblocken som används är de samma hela tiden De används i princip i samma ordning Byggblocken kopplas ihop på olika sätt för olika instruktioner - detta löser man med multiplexorer som styrs av styrlogiken Listigare implementering av processorn Strukturen vi beskrivit kan användas för att köra en instruktion i taget Men - byggblocken är ju klart separerade: Vi skulle kunna använda olika byggblock till olika instruktioner samtidigt! 9
Pipelining Ex: Känt kinesiskt kök i Lund Många rätter ska lagas till, de flesta är olika Alla ska gå igenom följande moment: Strimling av köttet Marinering Wokning Uppläggning på fat Servering Pipelining Hovmästaren väljer mellan två strategier: - Strategi 1: Varje rätt lagas färdigt och serveras innan nästa påbörjas. - Strategi 2: När rätt 1 är strimlad, läggs den i marinad och genast börjar man strimla rätt 2. Så fort ett moment är klart flyttas det till nästa position. Det moment som tar längst tid kommer att avgöra hur ofta man kan skifta in en ny rätt 10
Pipelining Ex: 100 rätter ska lagas under en kväll. - Strimling tar 2 min, marinering 3 min, wokning 2 min, uppläggning 2 min, servering 1 min - Strategi 1: Total tid 1000 min (16 h 40 min) - Strategi 2: Tid mellan skift - 3min. Totalt 3*100+3*4 min = 312 min. (Sista rätten tar 4 extra tidsintervall innan den är färdig!) Pipelining i MIPS Hur kan principen utnyttjas för MIPS? Fem olika klara steg i exekveringen: - IF, Instruction fetch ID, Instruction decode - avkodning och registerläsning EXE, Beräkning av resultat el adress i ALU MEM, Minnesaccess WB, skriv resultatet i register 11
Pipelining i MIPS Exekveringsstrukturen delas upp enligt dessa delar Vi skapar oss ett eget kinesiskt kök med IF, ID, EXE, MEM och WB För att separera mellanresultaten inför vi sk pipelineregister mellan de olika stegen MIPS Five-Stage Pipeline 12
Time (in clock cycles) Pipeline Program execution order (in instructions) CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 lw $10, 0($1) IF ID EXE MEM WB sub $11, $2, $3 IF ID EXE MEM WB Pipeline Registers 13
Hoppinstruktioner Om vi gör ett hopp kommer instruktioner i pipelinen efter hoppinstruktionen inte att köras Vi måste då tömma pipelinen Hoppinstruktioner och pipeline Prediktion: hoppet kommer inte att göras. Om hoppet ändå görs, tömmer vi pipelinen. Vi vet om hoppet kommer att göras när hoppinstruktionen når EXEsteget För att inte förlora för mycket, kör vi färdigt nästa instruktion också (den är ju redan i ID-steget). Därför finns HOPPLUCKAN! 14
Sammanfattning Vad gör egentligen processorn med instruktionerna? Vilka byggblock består processorn av? Hur ser datavägarna ut för de olika instruktionerna? Vilken är idén bakom pipelining? Hur ser pipelining ut i MIPS? Varför finns hoppluckan? 15