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

Relevanta dokument
Föreläsning 5 1 CPI Sammanfattning pipelining Cacheminnen

Föreläsningsanteckningar 5. Cacheminnen

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

6. Minnen. Associativt minne

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.

Föreläsningsanteckningar 4. Pipelining

4. Pipelining. 4. Pipelining

Digitala System: Datorteknik ERIK LARSSON

CE_O5. Cacheminne. Hemlaboration 2.

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Minnet från processorns sida Datorteknik

TSEA28 Datorteknik Y (och U)

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

TSEA28 Datorteknik Y (och U)

Datorarkitekturer med operativsystem ERIK LARSSON

Grundläggande datavetenskap, 4p

Närliggande allokering Datorteknik

Digitala System: Datorteknik ERIK LARSSON

TSEA28 Datorteknik Y (och U)

Digitalteknik och Datorarkitektur 5hp

Exempeltentamen Datorteknik, EIT070,

Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60)

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

Tentamen den 17 mars 2016 Datorteknik, EIT070

Tentamen Datorteknik D del 2, TSEA49

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Snapdragon 810: Cacheminnet

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

Tentamen den 18 mars svar Datorteknik, EIT070

Hantering av hazards i pipelines

Datorsystemteknik DVGA03 Föreläsning 8

Minnets komponenter. Digitala System: Datorteknik. Programexekvering. Programexekvering. Enhet för utdata. Enhet för indata CPU.

Datorteknik ERIK LARSSON

Digitala System: Datorteknik ERIK LARSSON

CE_O8. Cacheminne. Hemlaboration 2.

HF0010. Introduktionskurs i datateknik 1,5 hp

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

Jämförelse av skrivtekniker till cacheminne

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

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

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

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

TSEA28 Datorteknik Y (och U)

Filsystem - Inode. Datorteknik. Minnets komponenter. Programexekvering. Enhet för indata. Enhet för utdata CPU. Primärminne.

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

3. Mikroprogrammering II

Datorarkitekturer med operativsystem ERIK LARSSON

SVAR TILL TENTAMEN I DATORSYSTEM, HT2013

4 grundregler. Minneshantering. Problemet. Windows minkrav

Läsminne Read Only Memory ROM

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

Mer datorarkitektur. En titt I datorn Minnen

MESI i Intel Core 2 Duo

En processor kan ha en klockfrekvens på flera GHz. Det går alltså a9 exekvera en instruk=on väldigt for, givet a9 instruk=onen finns i processorn.

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

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)

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

Datorarkitekturer med Operativsystem

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

Tentamen. Datorteknik Y, TSEA28

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

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

Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621

Datorsystemteknik för E/D

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

Tenta i Digitalteknik

Tentamen. Datorteknik Y, TSEA28

Datorsystem. Tentamen

Datorhistorik. Föreläsning 3 Datorns hårdvara EDSAC. Eniac. I think there is a world market for maybe five computers. Thomas Watson, IBM, 1943

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

Cacheprobe: programbibliotek för extrahering av cacheminnesparametrar

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

Cacheminne i en Intel Core 2 Duo-processor

Cacheminne i en AMD Opteron Processor

Tentamen. Datorteknik Y, TSEA28

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

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

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Vad är en dator? Introduktion till datorer och nätverk. Pontus Haglund Institutionen för datavetenskap (IDA) 21 augusti 2018

Föreläsningsanteckningar 3. Mikroprogrammering II

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

TSEA28 Datorteknik Y (och U)

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.

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

Fö 2: Minnen. Introduktion. Primärminnet. Interna och externa minnen. Introduktion, Klassificiering

TSEA28 Datorteknik Y (och U)

Lösningsförslag till Tenta i Mikrodator

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

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

Spekulativ exekvering i CPU pipelining

VHDL 1. Programmerbara kretsar

Datorsystem. Exempeltentamen

LV6 LV7. Aktivera Kursens mål:

Föreläsning 1: Intro till kursen och programmering

DatorsystemteknikDAVA14 Föreläsning 9

Datorsystem. Tentamen

Föreläsningsanteckningar 2. Mikroprogrammering I

Några gamla tentamensuppgifter: Minneshantering

Transkript:

Föreläsning 5 1 CPI Sammanfattning pipelining Cacheminnen associativt minne som cache associativt minne som BPT direkt-mappad cache flervägscache (2,4) I/D-cache DSP = digital signal processor

PC pmem +4 NOP IR1 PC1 Så här långt är pipelining enkelt! Vi har sett till att: alla instruktioner tar 5 CP och kan utföras med överlapp en instruktion går in i PL varje CP och lämnar PL varje CP IR2 + PC2 D2 B2 regs ALU A2 dest IR3 Z3 D3 SR dmem IR4 Z4 D4 dest

1) Fördröjda hopp (med ev. straff) NOP pmem PC 0 +4 1 K IR2 F 1 0 IR1 PC1 Instruktion efter hoppet Instruktionen efter hoppet exekveras alltid. Vid taget hopp måste en NOP petas in, för att inte en ytterligare instruktion ska komma in i pipelinen. hopp IR2 + PC2 hoppadress D2 B2 regs A2 dest ALU IR3 Instruktion, som påverkar F Z3 D3 SR F OBS, varje gång hopp sker, straffas vi med en NOP! IR4 dmem Z4 D4 dest

2) Data hazards löses mha data forwarding pmem PC +4 (En del av problemet) Uppdaterade registervärden, skrivs tillbaka sist i pipelinen. Under 2 CP finns det gamla värden i regs. Mha dataforwarding försvinner detta problem. IR1 + PC1 regs dest IR2 PC2 D2 B2 A2 Nätet K Instruktion i IR2, som läser reg? K ALU Instruktion i IR3, som skriver reg? IR3 Z3 D3 SR Finns databeroende och i så fall vilket? dmem IR4 Z4 D4 dest

Databeroende Regs kan innehålla gamla data! Var kan nya resultat finnas? D3,D4/Z4 Hur ska muxarna styras? IR2: Op a b ADD 3 3 B2 A2 IR3: Op d ADD 3 D3 Op d IR4: D4/Z4

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

NOP PC 8 pmem +4 0:LD R3,K(R2) 4:ADD R4,R3,R3 NOP PC 8 pmem +4 0:LD R3,K(R2) 4:ADD R4,R3,R3 Stall IR1 PC1 ADD R4,R3,R3 IR1 PC1 ADD R4,R3,R3 + regs adr + regs adr IR2 PC2 LD R3,K(R2) D2 B2 A2 IR2 NOP PC1 D2 B2 A2 ALU ALU IR3 Z3 D3 SR IR3 Z3 D3 SR LD R3,K(R2) dmem dmem IR4 Z4 D4 IR4 Z4 D4 adr adr

PC 8 hopp stall hopp stall NOP ADD R4,R3,R3 pmem IR1 NOP stall Pipeline stall LD R3,K(R2) IR2 IR3 IR4

Observera att stall innebär prestandaförlust! LD R2,0(R0) ADD R3,R2,R1 Vi kan lika gärna skriva LD R2,0(R0) NOP ADD R3,R2,R1 Det går kanske att flytta en annan instruktion till NOPens plats? Ovanstående bor kanske i heta loopen, där varje klockcykel är viktig.

Cacheminnen CPU Snabbt, litet Långsamt, stort CPUn är normalt mycket snabbare än primärminnet. Det tar kanske 10-50 CP för att läsa ett data. Cacheminnet innehåller kopior av de instruktioner/data som används mest Kopieringen sker helt automatiskt, utan att programmeraren behöver tänka på det CM finns i CPU-chipet CM innehåller ett minne och en styrenhet. Snabbt,stort CPU Primärminne Cacheminne Primärminne Cacheminne

Lönar sig cacheminne i vår FPGA? I FPGA-n finns sammanlagt 64 kb sk block RAM. Det räcker inte med dessa, så nej! Utanför FPGA-n finns minne med accesstiden 7 CK. Det är stort nog, så förvisso ja! Ett CM måste i FPGAn byggas med block RAM för att bli tillräckligt snabbt.

Cacheminnen CM CPU Styr PM Minne När datorn startar är cacheminnet tomt Varje minnesaccess ger en cachemiss, kopiering till PM->CM Vanligt är att vid en cachemiss kopiera flera (t ex 4) instruktioner/data till CM. Kallas en cacheline. Sannolikheten är nu stor (t ex 95%) för cacheträff.

Cacheminnen Program innehåller loopar => sannolikheten är stor att samma instruktion accessas igen (temporal lokalitet) Samma sak gäller ofta för data Program är sekvensiella => sannolikheten är stor att också nästa instruktion accessas (spatial lokalitet) Dataaccesser brukar också vara lokala

Minnesbegrepp Minnesadress: 32 bitar Minnets bredd: 32 bitar, dvs 4 bytes Cacheline: 4 ord, dvs 16 bytes 28 4 0000 32 cacheline Möjligt att adressera bytes Ord finns på en multipel av 4 Cachelines på en multipel av 16 30 2 00 ord 32 01 byte

Enkelt cacheminne En styrenhet gör följande: Vid cachemiss: Läs en hel cacheline. Placera de 4 orden på lämplig rad i CM Placera de 28 MSB i adressen i taggen (annars vet man ju inte var cachelinen kommer ifrån) Vid access: Jämför de 28 MSB i adressen samtidigt med alla taggar. Finns sökt data i cachen har vi en cacheträff annars cachemiss.

Associativt minne adress 2 komparator K tag 28 2 komparator... K tag 32

Cacheminnen Associativt minne (AM) är det mest generella sättet att bygga ett CM. Data kan placeras var som helst i AM. Vi hoppar över diverse problem: Vilka rader är lediga? När AM är fullt, vilken rad ska skrivas över? AM är dyrt => en komparator per rad! AM används inte till cache för instruktioner/data En sk direct mapped cache har endast 1 komparator Data kan inte placeras var som helst!

BPT = branch prediction table Ett försök att få bort den där NOP-en vid hopp Skiss: Varje gång ett hopp påträffas 1) Finns inte i BPT: stoppa in det och uppdatera hoppstatistiken 2) Finns i BPT: läs ut hoppadressen Predikterad hoppadress Hoppets adress Hoppadress Hoppstatistik Hoppets adress Hoppadress Hoppstatistik 24 10 ST PC taken SNT NT T ST not taken Strongly not taken Not taken Taken Strongly taken Prediktera ej hopp Prediktera hopp

BPT (skiss) branch prediction table. Vi väntar inte på F, vi chansar mha BPT! NOP SPC pmem BF PC 24 10 +4 BPT 24 10 ST Styrenhet IR1 K PC1 LOOP: 10: ZZZ 14: VVV 18: WWW 1C: ADDI R1,R1,1 20: SFEQ R1,R2 24: BF LOOP 28: XXX 2C: YYY NOP IR2 IR3 SFEQ ADDI + PC2 D2 Z3 B2 regs ALU D3 A2 SR IR4 WWW dmem Z4 D4

BPT (skiss) branch prediction table. Vi väntar inte på F, vi chansar mha BPT! NOP 28 SPC pmem ZZZ PC 10 +4 BPT 24 10 ST Styrenhet IR1 K PC1 LOOP: 10: ZZZ 14: VVV 18: WWW 1C: ADDI R1,R1,1 20: SFEQ R1,R2 24: BF LOOP 28: XXX 2C: YYY NOP IR2 PC2 IR3 BFNOP SFEQ + D2 Z3 B2 regs ALU D3 A2 SR IR4 ADDI dmem Z4 D4

BPT (skiss) Nu vet vi om hoppet faktiskt ska tas. Om det ska det så är allt OK! NOP 28 SPC pmem VVV PC 14 +4 BPT 24 10 ST Styrenhet IR1 K PC1 LOOP: 10: ZZZ 14: VVV 18: WWW 1C: ADDI R1,R1,1 20: SFEQ R1,R2 24: BF LOOP 28: XXX 2C: YYY NOP IR2 PC2 IR3 ZZZ + BFNOP D2 Z3 B2 regs ALU D3 A2 SR F IR4 SFEQ dmem Z4 D4

BPT (skiss) Om hoppet INTE ska tas, återställs PC och VVV samt ZZZ blir NOP. BPT antar T. NOP 28 SPC pmem XXX PC 28 +4 BPT 24 10 T Styrenhet IR1 K PC1 LOOP: 10: ZZZ 14: VVV 18: WWW 1C: ADDI R1,R1,1 20: SFEQ R1,R2 24: BF LOOP 28: XXX 2C: YYY NOP IR2 PC2 IR3 + VVVNOP ZZZNOP D2 Z3 B2 regs ALU D3 A2 SR F IR4 BFNOP dmem Z4 D4

// Andreas Ehliar... int buf[4096]... unsigned int countones(void) { unsigned int i; unsigned int numones = 0; unsigned int numzeroes = 0; volatile unsigned int dummy; } for(i=0; i < BUFSIZE; i++){ if(buf[i] == 1){ numones++; }else{ numzeroes++; } } dummy = numzeroes; return numones; int main(int argc, char **argv) { unsigned int i, numones; fillmem(); Mönster Benchmark Bara 1:or 17 s 3.5 s Varannan 1:a, 0:a 58 s 3.5 s Slumpföljd av 1:or och 0:or 58 s 21 s Kört på pandaboard (ARM Cortex A-9 Smartphone-CPU) Tid Laptop core i5 } for(i=0; i < 1000000; i++){ numones = countones(); } printf("number of ones: %d\n", numones);

Adress=00001234 tag 23: 00001 komp 32 20 8 2 2 00001 23 01 00 index bytenr ordnr XYZW KLMN Styrenhet Direktmappad 00001230: 00001234: 00001238: 0000123C: 00001240: 00001244: 00001248: 0000124C:... 00002230: 00002234: PM XYZW KLMN hit = 1 Antag 1) Cachemiss 00001230 2) Cacheline påfyllning 3) Cacheträff 00001234 data W 32

Förbättring av direktmappad Vi gör en riktig cache. Vi gör cachen 4 gånger större, associativitet=4, genom att parallellkoppla 4 st 4kB cachar, alltså 16kB totalt.

4-vägs cache, 16 kb 20 8 2 2 4 tag v cntr cache line 16B 4 tag v cntr tag v cntr cache line 16B 4 tag v cntr tag v cntr cache line 16B 4 tag v cntr tag v cntr cache line 16B tag v cntr komp komp komp K komp

Ett löjligt exempel? Tag Index tag valid data 0x00000000: ADD 0x00000004: J 00: 00000 1 01: ADD J 0x00001000: SUB 0x00001004: J tag valid 00: 00001 1 SUB J 01: Fastän cachen för övrigt är tom, får vi cachemiss hela tiden! Detta är nackdelen med en 1-vägs direktmappad cache.

Cacheminnen När man kört en stund, så är cachen full Vid en cachemiss, så ska ju cachen uppdateras, och ett data skrivas över En flervägscache behöver en utbytesalgoritm, vem blir offret? LRU är en vanlig metod LRU = least recently used. Till varje cacheline hör en räknare: Hit: max->cntr Miss: välj cacheline med minst cntr. Fyll på. max->cntr Inget: räkna ner alla cntr (aging, inte på varje cp)

Cacheminnen Mycket vanligt är att ha separata cacheminnen för instruktioner/data För datacachen tillkommer då vad som ska ske vid skrivning: Write-thru: skriv till CM och PM alltså CM,PM uppdateras samtidigt Write-back: PM uppdateras endast vid cachemiss ytterligare en bit per cacheline: dirty bit. Hit: läs/skriv CM Miss: uppdatera PM om dirty=1. Skriv över.

Typisk arkitektur NOP PC icache +4 IR1 K PC1 + regs PM gemensam buss IR2 PC1 D2 B2 A2 ALU IR3 Z3 D3 SR dcache Styrenhet Skiljedomare arbiter IR4 Z4 D4

Typisk arkitektur Vid cachemiss i I-cache eller D-cache måste pipelinen stoppas. Båda cacharna använder en gemensam buss mot minnet. Samtidig miss i I-cache och D-cache, innebär påfyllning av en cache i taget. Pipelinen fryst hela tiden. Observera att write-thru belastar den gemensamma bussen.

DSP = digital signal processing x i y i Sampel-klocka DSP-klocka En typisk algoritm : FIR-filtret (finite impulse response) 1 1 2 2 1 1 0 1 0... N i N i i i N k k i k i x c x c x c x c x c y = skalärprodukt <C,X i >

DSP = digital signal processing MAC-enhet (multiply and accumulate) koefficient signalvärde x MR AR 2 dataminnen, koefficient- och signalminne

DSP = digital signal processing loop-instruktion inga test, inget fördröjt hopp, ingen loopräknare (synlig) LOOP <antal varv>, <slut> XXX YYY ZZZ slut: AGU = address generating unit indexerad med postinkrement - - med wrap-around för att stega i ringbuffert c0 c1 c2 c3 c4 x4 x3 x2 x1 x0

Design of a baseband processor Eric Tell & Anders Nilsson Ska klara så många standarder som möjligt WLAN, 3G, DVB-T, Använder en kombination av mjukvara och hårdvara (acceleratorer)

Overview of BBP1 16 bit DP CMAC DM0 256x32 DM1 256x32 DM2 256x32 Control registers ALU RF 16x16 bits cadd 16 cadd 16 cmul 12x12 cmul 12x12 cadd 32 cadd 32 AR0 (32+32) AR2 AR1 AR3 DM3 256x32 Port IF CM 2048x32 Walsh Transf. Network IM 128x16 ADC DAC FIR Rotor Packet det. demapper Interleaver. Conv. enc./ Vierbi scrambler CRC Macinterface Host/Mac processor

Network features A number of accelerators can be connected in a chain No synchronization overhead in the core! No intermediate memory storage! High degree of parallelism! Network demapper Interleaver. Conv. enc./ Vierbi scrambler CRC Macinterface Host/Mac processor

Chip Features: Process 0.18 µm CMOS Core voltage 1.8 V I/O voltage 3.3 V Chip area 5.0 mm 2 Core area 2.9 mm 2 Logic area 1.9 mm 2 Mem. area 1.0 mm 2 Package 144 pin fpbga CM PM Measured Max Frequency: 220 MHz IM Measured Core Power @160 MHz: Idle 44 mw 11a Rx burst 126 mw DM0 DM1 DM2 DM3