Föreläsningsanteckningar 4. Pipelining



Relevanta dokument
4. Pipelining. 4. Pipelining

Vad bör göras? Steg 1. RISC => pipelining. Parallellism. Pipelining. Nya LDA 13. RISC(reduced instruction set computer) Öka klockfrekvensen

LABORATION DATORTEKNIK D. Pipelining. Namn och personnummer. Version: (OS,OVA,AN)

Föreläsningsanteckningar 2. Mikroprogrammering I

Tentamen Datorteknik D del 2, TSEA49

Föreläsningsanteckningar 3. Mikroprogrammering II

Datorsystemteknik DVGA03 Föreläsning 8

3. Mikroprogrammering II

Digitala System: Datorteknik ERIK LARSSON

Föreläsningsanteckningar 5. Cacheminnen

Datorteknik. Föreläsning 6. Processorns uppbyggnad, pipelining. Institutionen för elektro- och informationsteknologi, LTH. Mål

Hantering av hazards i pipelines

Mikroprogrammering I

TSEA28 Datorteknik Y (och U)

Föreläsning 5 1 CPI. Sammanfattning pipelining Cacheminnen

TSEA28 Datorteknik Y (och U)

Närliggande allokering Datorteknik

Föreläsning 5 1 CPI Sammanfattning pipelining Cacheminnen

Multi-ported cache En rapport om några lösningar till att få flera minnesaccesser simultant.

Datorteknik. Tomas Nordström. Föreläsning 2. För utveckling av verksamhet, produkter och livskvalitet.

DatorsystemteknikDAVA14 Föreläsning 9

Datormodell. Datorns uppgifter -Utföra program (instruktioner) Göra beräkningar på data Flytta data Interagera med omvärlden

Datorsystem 2 CPU. Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur. Visning av Akka (för de som är intresserade)

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18

Ext-13 (Ver ) Exempel på RTN-beskrivning av FLEX-instruktioner

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

Läsminne Read Only Memory ROM

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär:

Datorarkitekturer med operativsystem ERIK LARSSON

Ext-13 (Ver ) Exempel på RTN-beskrivning av FLEX-instruktioner

Hur det går att minska effektutvecklingen i en processor genom att ändra pipeline

Pipelining i Intel 80486

Tenta i Digitalteknik

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

Minnet. Minne. Minns Man Minnet? Aktivera Kursens mål: LV3 Fo7. RAM-minnen: ROM PROM FLASH RWM. Primärminnen Sekundärminne Blockminne. Ext 15.

Grundläggande datavetenskap, 4p

LV6 LV7. Aktivera Kursens mål:

Datorarkitekturer med operativsystem ERIK LARSSON

Processor pipelining genom historien (Intel i9-intel i7)

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

Datorarkitekturer med operativsystem ERIK LARSSON

Tentamen den 18 mars svar Datorteknik, EIT070

Digitala System: Datorteknik ERIK LARSSON

Styrenheten 9/17/2011. Styrenheten - forts Arb s 120. LV4 Fo10. Aktivera Kursens mål: Kap 7 Blå

Exempeltentamen Datorteknik, EIT070,

Lågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre

Hannes Larsson - IDA 2, LTH Campus Helsingborg. NEC V R 4300i. Interlock-handling EDT621

Tentamen. Datorteknik Y, TSEA28

Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte

Tentamen i Digitala system - EDI610 15hp varav denna tentamen 4,5hp

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

c a OP b Digitalteknik och Datorarkitektur 5hp ALU Design Principle 1 - Simplicity favors regularity add $15, $8, $11

Tentamen den 14 januari 2015 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

TSEA28 Datorteknik Y (och U)

Datorarkitektur I. Tentamen Lördag 10 April Ekonomikum, B:154, klockan 09:00 14:00. Följande gäller: Skrivningstid: Fråga

Associativt minne ... A= adress till PM/CM CL = cachelinens storlek CM = cacheminnets storlek. Tag = A/CL = A/2 4 = A(31:4) Adress. K tag.

Digital- och datorteknik

Tentamen. Datorteknik Y, TSEA28

Pipelining i RISC-processorn. Joakim Lindström Institutionen för informationsbehandling Åbo Akademi E-post: jolindst@abo.fi

System S. Datorarkitektur - en inledning. Organisation av datorsystem: olika abstraktionsnivåer. den mest abstrakta synen på systemet

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

ALU:n ska anslutas hur då?

IBM POWER4, den första flerkärniga processorn och dess pipelines.

6. Minnen. Associativt minne

Program som ska exekveras ligger i primärminnet. Processorn hämtar instruk7on för instruk7on. Varje instruk7on, som är e= antal 1:or och 0:or, tolkas

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

Tentamen den 17 mars 2016 Datorteknik, EIT070

Centralenheten: ALU, dataväg och minne

Programräknaren visar alltid på nästa instruktion som skall utföras. Så fort en instruktion har hämtats så visar programräknaren på nästa instruktion.

TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1

TENTAMEN. Datorteknik. D1/E1/Mek1/Ö Hjälpmedel: Häfte "ARM-instruktioner", A4-format, 17 sidor. Maxpoäng:

HF0010. Introduktionskurs i datateknik 1,5 hp

VHDL3. Angående buffer

Digitalteknik och Datorarkitektur 5hp

0.1. INTRODUKTION Instruktionens opcode decodas till en språknivå som är förstålig för ALUn.

Lösningar till valda övningsuppgifter i. Computer Organization & Design The Hardware / Software Interface (2nd ed.)

TSEA28 Datorteknik Y (och U)

Digital- och datorteknik

Hantering av hazards i multi-pipelines

Moment 2 Digital elektronik. Föreläsning Inbyggda system, introduktion

LABORATION DATORTEKNIK Y,C,I DATORTEKNIK D

Programexempel för FLEX

Arm Cortex-A8 Pipeline

CE_O2. Nios II. Subrutiner med mera.

Laboration nr 3 behandlar

DEC Alpha instruktions Arkitektur

TSEA28 Datorteknik Y (och U)

Uppgift 1: a) u= a c + a bc+ ab d +b cd

Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621

TSEA28 Datorteknik Y (och U)

Besvara de elektroniska frågorna (se kurshemsidan). Läs kapitel i kursbok.

Program kan beskrivas på olika abstrak3onsnivåer. Högnivåprogram: läsbart (för människor), hög abstrak3onsnivå, enkelt a> porta (fly>a 3ll en annan ar

TSEA28 Datorteknik Y (och U)

Institutionen för datavetenskap 2014/15

TSEA28 Datorteknik Y (och U)

Program Datorteknik. Kontrollenhet. Exekvering av en instruktion. Abstraktionsnivå: Högnivåspråk. Assemblyspråk. Maskinspråk.

Datorteknik ERIK LARSSON

Transkript:

Föreläsningsanteckningar 4. Pipelining Olle Seger 2012, olles@isy.liu.se 21 januari 2013 1 Inledning Denna föreläsning handlar om pipelining, som är den helt dominerande processorarkitekturen i dag. Man kan säga att alla processorer bygger på användande av pipelining och cacheminnen. Källor är i första hand [1, 2], men även [3, 4] 2 OR-datorn OR-datorn (Olle Roos), som är en mikroprogrammerad dator, har behandlats i de två första föreläsningarna. En liknande dator, lite mer avancerad, är BL-datorn (Björn Lindskog), som används i en laboration. Båda dessa är lätta att komma igång med. Vi kan, helt utan verktyg, implementera instruktioner och adresseringsmetoder. Men OR-datorn är alldeles för långsam. Instruktionen LDA 13 tar exempelvis 11 klockcykler att exekvera. Alldeles för många klockcykler slösas bort på ingenting. 1

OR-datorn är för långsam! LDA 13 (exempelvis) Hämta : 3 CP K2 1 CP Absolut,K1: 3 CP EXE: 4 CP Summa: 11 CP mem ADR PC XR SP DR TR IR K1 K2 MPC µmem SR AR Alltså 11 CPI (clocks per instruction) Vi siktar på 1 CPI! IN OUT 3 Pipelining 3.1 Vad bör göras? Det enklaste och mest rättframma sättet att snabba upp en dator är att införa pipelining.pipelining är en sorts paralellism, där flera instruktioner exekveras samtidigt. I ett visst ögonblick kan en instruktion hämtas, för en annan pågår adresseringsmodsberäkning och en tredje instruktion exekveras. I detta sammanhang pratar man ofta om RISC (reduced instruction set computer). Typiska RISC-egenskaper är alla instruktioner har samma instruktionsformat och finns i ett minnesord. alla instruktioner tar lika många klockcykler att exekvera. få adresseringsmoder. Typiskt finns bara indexering, där adressen till operanden finns i ett register. Minnet accessas bara genom två instruktioner, LOAD och STORE. 2

Aritmetiska/logiska instruktioner använder bara register. Ganska många register, som är generella, dvs kan inehålla data eller adress. skilda minnen för program och data (Harvard-arkitektur). Ovanstående lista snabbar nog inte upp datorn, men nu går det att bygga en pipeline och den gör datorn snabbare! Det är ganska enkelt att närma sig 1 färdig instruktion per klockcykel. Vi börjar nu att bygga om OR-datorn. Första steget blir att få till kortare datorvägar. I ovanstående blockschema har ett antal register plockats bort. De register som innehåller minnesadresser (PC,XR,SP och ADR) har grupperats så att de direkt kan adressera minnet. LDA 13 tar nu bara 4 klockcykler. fas cykler hämta 1 K2 1 absolut 1 exekvera 1 Nu inför vi skilda program- och dataminnen. Programminnet får dubbel bredd, så att hela instruktionen kan hämtas på 1 klockcykel. 3

Nu tar LDA 13 3 klockcykler. fas cykler hämta 1 K2 1 absolut - exekvera 1 Endast ett ackumulatorregister känns begränsande. Vi inför istället en registerfil (flera register). Den är utformad så att på varje klockcykel går det att läsa 2 register och skriva 1 register. Vi går vidare med omkonstruktionen av OR-datorn. 4

Vi avskaffar XR,SP och inför generella register. Vi avskaffar att en instruktion kan ha flera a-moder. ADD Rx,Ry,Rz använder endast register. LD Rx,(Ry) är det enda sättet att läsa i minnet. ST (Rx),Ry är det enda sättet att skriva i minnet. Vi avskaffar MPC och mikroprogrammering Mikrominnet blir kvar, men bara som uppslagstabell. Man kan säga att de mikroprogramsnuttar vi hade förut nu alla tar 1 CP. Vi är nu klara och här är resultatet: Datorn har en tvåstegs pipeline. Man brukar inte tala om pipelining i det här fallet utan istället säga förhämtning. Datorn är inspirerad av processorfamiljen AVR från Atmel. Dessa processorer är mestadels enkla mikrocontrollers. En tillämpning kan exempelvis vara garageportsöppning. 5

Låt oss köra ett enkelt testprogram 0:LD R1,(R0) 1:ADD R3,R2,R1 2:JMP 0 3:XXX Datorn arbetar enligt principen: hämta-utför. När en instruktion hämtas, så utförs föregående. Ett pipeline-diagram illustrerar detta: 4 Modelldatorn PC IR register 0 - - 1 LD - 2 ADD R1 3 JMP R3,PC 0 NOP - 1 LD - Nedanstående bild visar den dator, som används i laborationen, [1]. 6

Datorn har en 5-stegs pipeline, med följande steg: 1. IF = Instruction Fetch. Den instruktion, som pekas ut av PC hämtas till IR1. Samtidigt beräknas ett nytt värde för PC. 2. RR = Read Registers. En av följande är rätt scenario 2 register läses till A2 resp B2. 1 register läses till A2 och en konstant kopieras till D2 en hoppadress beräknas till PC2 3. EXE=Execute. En av följande är rätt scenario: ALUn beräknar ett nytt registervärde (B2 A2) till D3 ALUn beräknar en minnesadress (D2+A2) till D3. Eventuellt kopieras B2 till Z3. 7

4. MEM=Memory. En av följande är rätt scenario: läsning ur minnet till Z4. skrivning till minnet. kopiering från D3 till D4. 5. WB=Write back. En av följande är rätt scenario: skriv Z4 till registerfilen. skriv D4 till registerfilen. ingenting. Alla instruktioner kodas som 32-bitars minnesord. Nedanstående är en lista på några typiska instruktioner: Några instruktioner 6 5 5 5 ADD Rd, Ra, Rb ; Rd=Ra+Rb OP d a b - ADD Rd, Ra, K ; Rd=Ra+K OP d a K MOVHI Rd,K ; RdH=K,RdL=0 OP d - 16 K 16 LD Rd, K(Ra) ; Rd=dmem(Ra+K) OP d a K ST K(Ra), Rb ; dmem(ra+k)=rb OP K a b K 16 11 SFEQ Ra, Rb ; F = (A==B)?1:0 OP - a b - JMP K ; PC = PC+K OP K 26 BF K ; PC = F? PC+K : PC+4 OP K 8

4.1 Testkörning Låt oss testa datorn genom att köra ett snällt program: 0:ADD R3,R2,R1 4:LD R6,0(R5) 8:SFEQ R7,R8 Programmet är snällt, eftersom instruktionerna inte har med varandra att göra. För enkelhetens skull antar vi att registren innehåller: R0=0,R1=1,.... Vi kommenterar vad som händer med ADD. Vi trycker på reset-knappen: 0:ADD R3,R2,R1 4:LD R6,0(R5) 8:SFEQ R7,R8 NOP pmem PC 0 +4 IR1 PC1 Några snälla instruktioner IR2 IR3 + PC2 D2 Z3 B2 regs ALU D3 A2 SR dmem IR4 Z4 D4 Vi klockar: 9

0:ADD R3,R2,R1 4:LD R6,0(R5) 8:SFEQ R7,R8 NOP pmem 4 PC +4 ADD R3,R2,R1 IR1 PC1 + regs IR2 PC2 D2 B2 A2 ALU IR3 Z3 D3 SR dmem IR4 Z4 D4 ADD har hämtats och PC har räknats upp. Vi klockar: 10

0:ADD R3,R2,R1 4:LD R6,0(R5) 8:SFEQ R7,R8 NOP pmem 8 PC +4 LD R6,0(R5) IR1 K PC1 + regs ADD R3,R2,R1 IR2 PC2 D2 B2 1 A2 2 ALU IR3 Z3 D3 SR dmem IR4 Z4 D4 Två registervärden har lästs från registerfilen. Vi klockar: 11

0:ADD R3,R2,R1 4:LD R6,0(R5) 8:SFEQ R7,R8 NOP pmem C PC +4 SFEQ R7,R8 IR1 K PC1 + regs LD R6,0(R5) IR2 PC2 D2 B2 A2 0 5 ALU ADD R3,R2,R1 IR3 Z3 D3 3 SR dmem IR4 Z4 D4 Additionen har skett. Vi klockar: 12

0:ADD R3,R2,R1 4:LD R6,K(R5) 8:SFEQ R7,R8 C:XXX NOP pmem 10 PC +4 XXX IR1 K + PC1 regs SFEQ R7,R8 IR2 PC2 D2 B2 A2 ALU IR3 Z3 D3 SR LD R6,0(R5) 5 dmem ADD R3,R2,R1 IR4 Z4 3 D4 Summan kopierades till D4. Vi klockar: 13

0:ADD R3,R2,R1 4:LD R6,K(R5) 8:SFEQ R7,R8 C:XXX 10:YYY NOP pmem 14 PC +4 YYY IR1 K + PC1 regs 3->R3 XXX IR2 PC2 D2 B2 A2 ALU SFEQ R7,R8 IR3 Z3 D3 SR F=0 dmem LD R6,0(R5) IR4 dmem(5) Z4 D4 Register R3 uppdaterades. 4.2 Problem Så långt verkar allt vara ganska enkelt. Det beror på att vi medvetet undvek problem i testprogrammet. Men för ett riktigt program kommer problem att dyka upp. Man brukar tala om detta: Hårdvarukonflikter. Två pipelinesteg behöver samma hårdvara. Löses genom att duplicera hårdvara. Det är redan fixat i vår maskin, t ex: Två minnen, pmem och dmem. Två adderare. Vi har lagt till en adderare för hoppadresser. 14

Fördröjda hopp. Pipelinen vill gärna hämta instruktionen efter ett hopp. Det är faktiskt enklast att alltid exekvera den instruktionen. Databeroenden. Så här är det: registren läses i steg 2 men skrivs i steg 5. Under några klockcykler är värdena i registerfilen gamla. Det rätta värdet finns någonstans i pipelinen. Stall. Pipelinen måste i vissa lägen stängas av. 4.3 Fördröjda hopp För att utröna vad som händer vid hopp, så kör vi ett testprogram: 0:SFEQ R1,R2 4:BF K ; hopp till 20 om R1==R2 8:XXX C:YYY... 20:ZZZ I den vänstra bilden har hoppinstruktionen BF hämtats, men flaggan F är ännu inte satt. Vi måste därför köra en klockpuls till. Det är då enklast att låta instruktionen XXX rinna in i pipelinen. 15

I den högra bilden har F just fått sitt värde. Vi har förstås två fall: F=0. Inga problem, hämta instruktionen på adress C, dvs YYY. F=1. Nya värdet för PC blir 4+K=20. För att förhindra YYY går in i pipelinen trycker vi in en NOP i IR1. Sammanfattningsvis har vi fördröjda hopp, dvs instruktion efter hoppet verkställs alltid. Om hoppet sker måste en NOP tryckas in i pipelinen. Det är naturligtvis en bortslösad klockcykel. 4.4 Databeroende Betrakta följande programsnutt: 0:ADD R5,R2,R1 4:ADD R6,R5,R5 Intruktionen på rad 0 uppdaterar R5, som sedan används av instruktionen på rad 4. Detta är ett sk databeroende. Att ett program ser ut så här är förstås det normala. Vi antar att registervärdena är R0=0, R1=1,.... Vi kör programsnutten på datorn. Betrakta situationen när instruktionen på rad 0 precis har exekverats. 16

0:ADD R5,R2,R1 4:ADD R6,R5,R5 PC pmem +4 NOP IR1 K PC1 Databeroende + regs IR2 ADD R6,R5,R5 PC1 D2 B2 A2 5 5 ALU IR3 ADD R5,R2,R1 3 Z3 D3 SR dmem IR4 Z4 D4 I D3 ligger 3, som är det nya (rätta) värdet på R5. Instruktion på rad 4, har just läst ut de gamla värdet på R5. De gamla värdena måste förhindras att gå in i ALUn. Vi konstaterar att ett nytt värde (som är på väg att skrivas till registerfilen) kan finnas i någon av D3 eller D4/Z4. Ingångarna till ALUn måste förses med muxar, som väljer rätt data. 17

Databeroende Registerfilen kan innehålla gamla data! Var kan nya resultat finnas? D3,D4,Z4 B2 A2 Hur ska muxarna styras? if IR2.op == instruktion som läser reg. if IR3.op == instruktion som skriver reg. if IR2.a == IR3.d muxarn = ; else D3 D4/Z4 Muxarna i figuren brukar kallas data forwarding muxes. Vi försöker nu att i ord beskriva styrningen av muxarna för fallet i programsnuttet ovan. Innehåller IR1 en instruktion, som läser (1 eller 2) register? Innehåller IR2 en instruktion, som skriver ett register? Är det månne så att det är samma register (obs två fall)? I vårt testsnutt är svaret ja på alla tre frågorna. Muxarna ska styras så att D3 muxas in i båda ingångarna till ALUn. 4.5 Stall Tyvärr är det så att ovanstående, alltså data forwarding, inte alltid räcker. Betrakta denna programsnutt: 18

0:LD R3,K(R2) 4:ADD R4,R3,R3 Vi kör den tills något intressant händer: Situationen liknar den i föregående avsnitt. Vi har ett databeroende kring R3. Problemet är nu att det går inte att muxa in rätt värde. Det värdet är ju ännu inte läst från minnet. Här är goda råd dyra! Vad bör göras? Jo: 1. Vi stänger av övre delen av pipelinen och låter LD fortsätta. Alltså: PC, IR1, IR2 behåller sina värden. IR3 blir NOP. IR4 blir LD. Detta kallas pipeline stalling. 2. Nu ser det bättre ut. Rätta värdet på R3 finns i Z4. Vi hoppas nu att hårdvaran vi gjorde i föregående avsnitt fungerar. 19

Referenser [1] Seger, Andersson (2011): Laborationshandledning TSEA 49 Datorteknik D del 2 : Pipelining, LiU-tryck. [2] Patterson, Hennessy (2009): Computer Organization and Design. The Hardware/Software Interface, Morgan Kaufmann ISBN: 978-0-12-374493-7. [3] Josefsson M. (2008): Föreläsningsunderlag TSEA49 Datorteknik D del 2, LiU-tryck. [4] Clements (2008): The Principles of Computer Hardware, Oxford ISBN0-19-856453-8. 20