4. Pipelining. 4. Pipelining

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

Föreläsningsanteckningar 4. Pipelining

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

3. Mikroprogrammering II

Datorsystemteknik DVGA03 Föreläsning 8

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

Digitala System: Datorteknik ERIK LARSSON

Mikroprogrammering I

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

Föreläsning 5 1 CPI Sammanfattning pipelining Cacheminnen

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)

Grundläggande datavetenskap, 4p

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

DatorsystemteknikDAVA14 Föreläsning 9

Pipelining i Intel 80486

Datorarkitekturer med operativsystem ERIK LARSSON

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.

Föreläsningsanteckningar 5. Cacheminnen

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

Datorarkitekturer med operativsystem ERIK LARSSON

Tentamen Datorteknik D del 2, TSEA49

Närliggande allokering Datorteknik

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

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

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

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

Tenta i Digitalteknik

Digitala System: Datorteknik ERIK LARSSON

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

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

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

Föreläsningsanteckningar 2. Mikroprogrammering I

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Tentamen den 18 mars svar Datorteknik, EIT070

VHDL3. Angående buffer

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

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

Föreläsningsanteckningar 3. Mikroprogrammering II

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

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Digitalteknik och Datorarkitektur 5hp

Hantering av hazards i pipelines

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

Datorteknik ERIK LARSSON

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

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

Foto: Rona Proudfoot (some rights reserved) Datorarkitektur 1. Datapath & Control. December

Datorarkitekturer med operativsystem ERIK LARSSON

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.

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

Parallellism i CDC 7600, pipelinens ursprung

6. Minnen. Associativt minne

Pipelining i Intel Pentium II

Datorteknik ERIK LARSSON

Datorteknik ERIK LARSSON

Läsminne Read Only Memory ROM

Processor pipelining genom historien (Intel i9-intel i7)

Datorarkitekturer med operativsystem ERIK LARSSON

Institutionen för datavetenskap 2014/15

Fetch-Execute. Datorteknik. Pipelining. Pipeline diagram (vid en viss tidpunkt)

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

Datorteknik ERIK LARSSON

Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621

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

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

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

Exempeltentamen Datorteknik, EIT070,

TSEA28 Datorteknik Y (och U)

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

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

Omtentamen i CDT204 - Datorarkitektur

Tentamen i IS1500/IS1200/2G1518 Datorteknik fredagen den 19 augusti 2011 kl

Angående buffer. clk clear >=1 =9?

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

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.

Föreläsningsunderlag TSEA49 Datorteknik D Del 2

Datorarkitektur. Fö 9: Datorarkitektur. Datororganisation. Typiska Arkitekturattribut. Introduktion till datorarkitektur.

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

TSEA28 Datorteknik Y (och U)

Assemblerprogrammering för ARM del 2

Tentamen den 17 mars 2016 Datorteknik, EIT070

Hantering av hazards i multi-pipelines

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

Tentamen. Datorteknik Y, TSEA28

CE_O2. Nios II. Subrutiner med mera.

LV6 LV7. Aktivera Kursens mål:

Datorarkitekturer med operativsystem ERIK LARSSON

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

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

TSEA28 Datorteknik Y (och U)

Tentamen. Datorteknik Y, TSEA28

Digitalteknik och Datorarkitektur

Arm Cortex-A8 Pipeline

TSEA28 Datorteknik Y (och U)

Programexempel för FLEX

Transkript:

4. Pipelining 4. Pipelining Det finns en pipelinad biltvätt i Linköping spoltvätttork spoltvätt tork spolning tvätt tork De tre momenten tar lika lång tid Alla bilar går igenom samma program Väntetid 1/3 Genomströmning 3 OBS, vi får inte uppsnabbningen gratis. En del utrustning måste finnas på flera ställen! 1

kritik av OR-datorn 4. Pipelining Alternativa arkitekturer eller riktiga datorer - för många klockcykler, går att dock att snabba upp går att göra komplicerade instruktioner: sortering, matrisinvertering, RISC = reduced instruction set computer enkla,lika instruktioner => pipelining möjligt Vi börjar med OR LDA 000 12 ADD 100 7 STA 000 13 12 1 13 0 12 2 1 0 18,1,11 2,3,5,11 7,8,11 17,10 18,1,11 2,3,5,11 7,19,17 Hämta Absolut 1 30 M 2,3,5,11 7,25,11 27,32,33,11 34,12 LDA RESET 4 1 2

OR-datorn är för långsam! LDA 12 (exempelvis) Hämta : 3 CP 2 1 CP Absolut: 3 CP EXE: 4 CP Summa: 11 CP mem AR ADR XR SP DR TR IR 1 2 M mmem... Alltså 11 CPI (clocks per instructions) Vi siktar på 1 CPI! IN OUT Vad kan göras på OR-original? Parallellism Tryck ihop mikrokoden, dvs gör flera mop samtidigt Förhämtning: hämta nästa instruktion under exekvering av pågående instruktion ->M->dr dr->tr tr->ar status Exe av LDA pc-> ->M->dr dr->ir Hämta nästa instruktion mpc mpc mpc 2->mpc 3

Apropos klockfrekvensen x y Leta rätt på längsta tidsfördröjningen mellan två register. alla den T. Då gäller f < 1/T Brukar kallas kritisk väg Steg 1 Omplacering av register Ta bort onödiga register Förbättrat - Lång kritisk väg Pmem Dmem ADR XR data 1 IR 2 SP M Nya LDA 12 Hämta 1 CP mmem 2 1 CP AR Absolut 1 CP EXE 1 CP IN OUT 4

Skilda program- och dataminnen Bredare programminne, så att hela instruktionen kan hämtas på 1 CP Steg 2 OP M byte ADR pmem Nya LDA 12 Hämta 1 CP 2 1 CP Absolut XR SP IR 1 2 M byte mmem EXE 1 CP... AR OUT OUT Flera register! Registerfil R0 R1 R2 R3 R0 R1 R2 R3 Exempelvis: ADD R3,R2,R1 ; R3 = R2R1 5

RISC = reduced instruction set computer Vi avskaffar XR,SP och inför generella register Vi avskaffar flera a-moder per instruktion ADD Rx,Ry,Rz inga andra a-moder! LD Rx,(Ry) enda sättet att läsa i minnet! ST (Rx),Ry enda sättet att skriva i minnet! Vi avskaffar M och mikroprogrammering Mikroprogrammen försvinner inte utan finns på annan form i maskinen Steg 3 Hämtfasen har blivit HW pmem 1 ID innehåller 1-rads mprog IR byte ADD Rx,Ry,Rz LD Rx,(Ry) ST (Ry),Rx JMP N ADDI Rx,Ry, Instruction Decoder... Hämta 1CP Exe 1CP Förhämtning! 1 CPI, clock per instruction R0 R1 R2 R3 OUT OUT 6

ATMEL AVR Trevlig 8-bitars controller C-kompilator finns: avr-gcc Massor med kul I/O 0: LD R1, (R0) 1: ADD R3,R2,R1 2: JMP 0 3: XXX Pipelinediagram IR 0 1 LD 2 3 ADD JMP LD ADD 0-1 LD 1 inst/c JMP ger en i pipelinen 7

lassisk 5- stegs pipeline IF: instruction fetch hämta instr och ny RR: register read läs reg/beräkna hopp 1 Inspirerad av OpenRISC EXE: execute kör 2 MEM: read/write läs/skriv/ingenting WB: write back register skriv reg/ingenting Några instruktioner, alla 32b 6 5 5 5 ADD Rd, Ra, Rb ; Rd=RaRb OP d a b - 16 ADDI Rd, Ra, ; Rd=Ra OP d a 16 MOVHI Rd, ; RdH=,RdL=0 OP d - 16 LD Rd, (Ra) ; Rd=(Ra) OP d a 11 ST (Ra), Rb ; (Ra)=Rb OP a b SFEQ Ra, Rb ; F = (A==B)?1:0 OP - a b - JMP ; = OP 26 BF ; = F? : 4 OP 8

0:ADD R3,R2,R1 4:LD R6,(R5) 8:SFEQ R7,R8 0 rst 1 Några snälla instruktioner 1 I exemplet: Rn = n = 9 0:ADD R3,R2,R1 4:LD R6,(R5) 8:SFEQ R7,R8 4 ADD R3,R2,R1 1 1 1 2 9

0:ADD R3,R2,R1 4:LD R6,(R5) 8:SFEQ R7,R8 8 LD R6,(R5) 1 ADD R3,R2,R1 1 9 1 5 2 0:ADD R3,R2,R1 4:LD R6,(R5) 8:SFEQ R7,R8 C SFEQ R7,R8 1 LD R6,(R5) 1 7 8 9 5 ADD R3,R2,R1 3 10

0:ADD R3,R2,R1 4:LD R6,(R5) 8:SFEQ R7,R8 C:XXX 10:YYY 10 XXX 1 3 SFEQ R7,R8 1 7 8 F=0 LD R6,(R5) E=(95) ADD R3,R2,R1 DM(E) 3 0:ADD R3,R2,R1 4:LD R6,(R5) 8:SFEQ R7,R8 C:XXX 10:YYY 14:ZZZ YYY 14 1 XXX 2 SFEQ R7,R8 F=0 LD R6,(R5) DM(E) 11

Problem 1. Hopp, Oönskade instr kommer ibland in i pipelinen >Instruktionen efter ett hopp exekveras alltid >Ytterligare en instr. därefter ersätts med 2. Databeroenden, Reg läses i steg 2 o skrivs i steg 5 >data forwarding 3. Pipelinen måste i vissa lägen stängas av, stall Problem 1: Hopp 0:SFEQ ; sätter flaggan F 4:BF ; hoppar eventuellt till 20 8:XXX ; instr. exekveras alltid C:YYY... 20:ZZZ Vi bestämmer: Instruktionen XXX exekveras alltid Fördröjt hopp: XXX kan vara en nyttig instr flyttad hit av kompilatorn (software) 12

0:SFEQ 4:BF 8:XXX C:YYY... 20:ZZZ 8 BF XXX 1 4 20 SFEQ 1 F=? 20 0:SFEQ C 10 20 4:BF 20 8:XXX C:YYY YYY ZZZ... 20:ZZZ XXX 1 1 0:SFEQ 4:BF 8:XXX C:YYY... 20:ZZZ BF 2 4=20 XXX 2 SFEQ F=1 BF SFEQ 13

Pipelinediagram 0 4 SFEQ 8 BF SFEQ C XXX BF SFEQ 20 XXX BF SFEQ Instr efter hoppet exekveras alltid Vid taget hopp måste en muxas in Diskussion: Hur ska de två muxarna i första steget styras? if ((.op==bf and F==1) or (.op==j)) /* taget hopp */ = ; = 2; else // annan instr, F=0 = pmem; = 4; Problem 2: Databeroende 0:ADD R5,R2,R1 4:ADD R8,R5,R5 Farlig situation, som måste åtgärdas direkt! Data Hazard 8:MUL R3,R5,R5 Problemet beror på att det tar flera klockcykler innan registret R5 uppdateras! 14

Antag Rx = x 0:ADD R5,R2,R1 4:ADD R8,R5,R5 Data hazard Data forwarding 1 Registerfilen kan innehålla gamla data! Var kan nya resultat finnas?, / MUL R3,R5,R5 2 ADD R8,R5,R5 ADD R5,R2,R1 5 5 = gamla R5 3=nya R5 5 5 3 3 3 / Hur ska muxarna styras? if.op == instruktion som läser reg. if.op == instruktion som skriver reg. if.a ==.d muxarna = ; if.op == instruktion som läser reg. if.op == instruktion som skriver reg. if.a ==.d muxarna = ; 15

Problem 3: Stall 0:LD R3,(R2) ; läs från minnet 4:ADD R4,R3,R3 ; Problemet beror på att minnet sitter 1 klockcykel efter -n. 8 0:LD R3,(R2) 4:ADD R4,R3,R3 8 0:LD R3,(R2) 4:ADD R4,R3,R3 Stall 1 ADD R4,R3,R3 1 ADD R4,R3,R3 2 LD R3,(R2) 1 LD R3,(R2) 16

8 hopp stall hopp stall ADD R4,R3,R3 LD R3,(R2) pmem stall Pipeline stall -> Behåll Behåll 17