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.

4. Pipelining. 4. Pipelining

Föreläsningsanteckningar 4. Pipelining

CE_O5. Cacheminne. Hemlaboration 2.

TSEA28 Datorteknik Y (och U)

Minnet från processorns sida Datorteknik

Digitala System: Datorteknik ERIK LARSSON

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.

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

TSEA28 Datorteknik Y (och U)

Grundläggande datavetenskap, 4p

Exempeltentamen Datorteknik, EIT070,

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

Tentamen den 17 mars 2016 Datorteknik, EIT070

Datorarkitekturer med operativsystem ERIK LARSSON

TSEA28 Datorteknik Y (och U)

Digitalteknik och Datorarkitektur 5hp

Digitala System: Datorteknik ERIK LARSSON

Närliggande allokering Datorteknik

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

Hantering av hazards i pipelines

Snapdragon 810: Cacheminnet

Tentamen den 18 mars svar Datorteknik, EIT070

CE_O8. Cacheminne. Hemlaboration 2.

Datorsystemteknik DVGA03 Föreläsning 8

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Digitala System: Datorteknik ERIK LARSSON

Datorarkitekturer med Operativsystem

3. Mikroprogrammering II

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

SVAR TILL TENTAMEN I DATORSYSTEM, HT2013

Datorteknik ERIK LARSSON

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

Jämförelse av skrivtekniker till cacheminne

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

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.

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

TSEA28 Datorteknik Y (och U)

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

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

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

Läsminne Read Only Memory ROM

Datorarkitekturer med operativsystem ERIK LARSSON

MESI i Intel Core 2 Duo

Cacheminne i en Intel Core 2 Duo-processor

Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621

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

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

4 grundregler. Minneshantering. Problemet. Windows minkrav

Mer datorarkitektur. En titt I datorn Minnen

Datorsystemteknik för E/D

HF0010. Introduktionskurs i datateknik 1,5 hp

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

Cacheminne i en AMD Opteron Processor

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

Tentamen. Datorteknik Y, TSEA28

Tentamen Datorteknik D del 2, TSEA49

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

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

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)

DatorsystemteknikDAVA14 Föreläsning 9

Datorsystem. Tentamen

Cacheprobe: programbibliotek för extrahering av cacheminnesparametrar

Datorsystemteknik D. Lösningar till tentamen i kursen EDA330 14/1 2000

Datorsystem. Tentamen

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

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

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

Spekulativ exekvering i CPU pipelining

Tenta i Digitalteknik

Random Access Memory. Amare Reda Jenny Holmberg Henrik Kreipke Gaylord Kaya

Några gamla tentamensuppgifter: Minneshantering

Tentamen. Datorteknik Y, TSEA28

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

Tentamen. Datorteknik Y, TSEA28

Lösningsförslag till Tenta i Mikrodator

TSEA28 Datorteknik Y (och U)

Dugga 1 status 41 godkända 39 ej godkända ERIK LARSSON

Cacheminne och adressöversättning

Tentamen. Datorteknik Y, TSEA28

Datorsystem. Exempeltentamen

Rapport (1,5 HP) Lunds Universitet HT15

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

Improved-MOESI Cache koherens Protokoll

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

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

Hemlaboration Cache Cacheminnen

Cacheminne Intel Core i7

Tentamen. Datorteknik Y, TSEA28

F9: Minne. Sammansättning av minnesgrupper Ansluta minne till Interface till olika typer av minnen Användningsområden.

Omtentamen i CDT204 - Datorarkitektur

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

Processor pipelining genom historien (Intel i9-intel i7)

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

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 pmem 4 1 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 2 dest dmem dest 1

1) Fördröjda hopp (med ev. straff) pmem 4 0 1 IR2 F 1 0 1 Instruktion efter hoppet Instruktionen efter hoppet exekveras alltid. Vid taget hopp måste en petas in, för att inte en ytterligare instruktion ska komma in i pipelinen. hopp IR2 2 hoppadress dest Instruktion, som påverkar F F OBS, varje gång hopp sker, straffas vi med en! dmem dest 2) Data hazards löses mha data forwarding pmem 4 (En del av problemet) Uppdaterade registervärden, skrivs tillbaka sist i pipelinen. Under 2 CP finns det gamla värden i. Mha dataforwarding försvinner detta problem. 1 dest IR2 2 Nätet Instruktion i IR2, som läser reg? Instruktion i, som skriver reg? Finns databeroende och i så fall vilket? dmem dest 2

Databeroende Regs kan innehålla gamla data! Var kan nya resultat finnas?,/ Hur ska muxarna styras? IR2: Op a b ADD 3 3 : Op d ADD 3 Op d : / 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. 3

8 pmem 4 0:LD R3,(R2) 4:ADD R4,R3,R3 8 pmem 4 0:LD R3,(R2) 4:ADD R4,R3,R3 Stall 1 ADD R4,R3,R3 adr 1 ADD R4,R3,R3 adr IR2 2 LD R3,(R2) IR2 1 LD R3,(R2) dmem dmem adr adr 8 hopp stall pmem hopp stall ADD R4,R3,R3 stall Pipeline stall LD R3,(R2) IR2 4

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) ADD R3,R2,R1 Det går kanske att flytta en annan instruktion till ens plats? Ovanstående bor kanske i heta loopen, där varje klockcykel är viktig. Cacheminnen Snabbt, litet Långsamt, stort CPU 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 opieringen 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 5

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 externt minne (flera MB) men med accesstiden 7 C. 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 CPU CM 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. allas en cacheline. Sannolikheten är nu stor (t ex 95%) för cacheträff. 6

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 adress av 4 Cachelines på en multipel adress av 16 30 2 00 ord 32 01 byte 7

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 tag 28 2 komparator tag... 32 8

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 -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 taken SNT NT T ST not taken Strongly not taken Not taken Taken Strongly taken Prediktera ej hopp Prediktera hopp 9

BPT (skiss) Branch prediction table. Vi väntar inte på F, vi chansar mha BPT! S pmem BF 24 10 4 BPT 24 10 ST Styrenhet 1 LOOP: 10: ZZZ 14: VVV 18: WWW 1C: ADDI R1,R1,1 20: SFEQ R1,R2 24: BF LOOP 28: XXX 2C: YYY SFEQ IR2 2 ADDI dmem WWW BPT (skiss) Spara alternativadressen (28) i S (försäkring) Ersätt BF med (ska inte utföras i EXE en gang till) 28 S pmem ZZZ 1 10 4 BPT 24 10 ST Styrenhet LOOP: 10: ZZZ 14: VVV 18: WWW 1C: ADDI R1,R1,1 20: SFEQ R1,R2 24: BF LOOP 28: XXX 2C: YYY BF IR2 2 SFEQ dmem ADDI 10

BPT (skiss) Nu vet vi om hoppet faktiskt ska tas. Om det ska det så är allt O! 28 S pmem VVV 14 4 BPT 24 10 ST Styrenhet 1 LOOP: 10: ZZZ 14: VVV 18: WWW 1C: ADDI R1,R1,1 20: SFEQ R1,R2 24: BF LOOP 28: XXX 2C: YYY ZZZ IR2 2 BF F dmem SFEQ BPT (skiss) Om hoppet INTE ska tas, återställs och VVV samt ZZZ blir. BPT antar T. 28 S pmem XXX 1 28 4 BPT 24 10 T Styrenhet LOOP: 10: ZZZ 14: VVV 18: WWW 1C: ADDI R1,R1,1 20: SFEQ R1,R2 24: BF LOOP 28: XXX 2C: YYY VVV IR2 2 ZZZ F dmem BF 11

// 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 Tid 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 ört på pandaboard (ARM Cortex A-9 Smartphone-CPU) 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 LMN Styrenhet Direktmappad 00001230: 00001234: 00001238: 0000123C: 00001240: 00001244: 00001248: 0000124C:... 00002230: 00002234: PM XYZW LMN hit = 1 Antag 1) Cachemiss 00001230 2) Cacheline påfyllning 3) Cacheträff 00001234 data W 32 12

Ett enkelt 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 01: J Fastän cachen för övrigt är tom, får vi cachemiss hela tiden! (för ADD och SUB) Detta är nackdelen med en 1-vägs direktmappad cache. 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. 13

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 komp 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) 14

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 (PrimärMinne) alltså CM,PM uppdateras samtidigt Write-back: PM uppdateras endast vid cachemiss ytterligare en bit per cacheline: dirty bit. (CM förändrat) Hit: läs/skriv CM Miss: uppdatera PM om dirty=1. Skriv över. Typisk arkitektur icache 4 1 PM gemensam buss IR2 1 dcache Styrenhet Skiljedomare arbiter 15

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. Design of a baseband processor Eric Tell & Anders Nilsson Coresonic (uppköpt av Mediatek) Ska klara så många standarder som möjligt WLAN, 3G, DVB-T, Använder en kombination av mjukvara och hårdvara (acceleratorer) 16

Overview of BBP1 DM0 256x32 DM1 256x32 DM2 256x32 Control registers 16 bit DP RF 16x16 bits CMAC cadd 16 cadd 16 cmul 12x12 cmul 12x12 cadd 32 cadd 32 AR0 (3232) 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 17

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 18