Presentation laddar. Vänta.

Presentation laddar. Vänta.

12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)1 2G1518 Datorteknik Föreläsning 8 Cache Memory vt 2007 (period 3-4) för E, I och CLMDA.

Liknande presentationer


En presentation över ämnet: "12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)1 2G1518 Datorteknik Föreläsning 8 Cache Memory vt 2007 (period 3-4) för E, I och CLMDA."— Presentationens avskrift:

1 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)1 2G1518 Datorteknik Föreläsning 8 Cache Memory vt 2007 (period 3-4) för E, I och CLMDA

2 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)2 F1F2F3F4F5F6F7F8F9F10Ö2Ö1Ö3Ö4Ö5LAB-1LAB-2Hemlab-1Ö6Ö7LAB-3Hemlab-2Ö8Hemlab-3Ö9TentamenÖ10 Assemblerkod 4 stegs pipeline Nios2time Nios2io C-kod Nios2int Cache-minnen CPU-scheduling 2G1518 Datorteknik http://www.imit.kth.se/courses/2G1518 http://www.imit.kth.se/courses/2G1518

3 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)3 Litteraturhänvisningar  Kursboken, valda delar av kapitel 6  6.1 Inledning, läs  6.2 Minnestekniker, läses kursivt  6.3 Minneshierarkier, bra  6.4 Cacheminnen, viktigt  6.5 Avslutande kommentarer, bra  6.6 Övningar, se ex-saml. och hem-lab 2

4 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)4 Viktiga delar i en dator CPU BUS I/O MM Data Program

5 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)5 Program Memory m x 8 ALU ADD IR0 IR1 IR2 RWM 4-stegs PIPE-LINE Register File 32 x 32 Register File 32 x 32 PC+k PC+Imm PC ALU MEM FO WB FI

6 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)6 MEM 4 stegs PIPE-LINE LOAD FIFOWBFIFOWB MEM STORE Memory References FIFOWB EX FIFOWB EX Fetch Instruction

7 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)7 Harvard-arkitektur  Separata datavägar för instruktioner och data  Separat Instruktions-och Datacache  ”Krav” för att en processor med pipeline ska kunna hålla farten dvs kunna göra  FETCH och LOAD i samma klockperiod  FETCH och STORE i samma klockperiod

8 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)8 Nytt – Viktiga delar i en dator CPU BUS I/O D-CACHE I-CACHE MM Data Program ChipSet

9 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)9 Main Memory - Cache Memory  Main Memory - Långsamt Stort Billigt fysiskt placerat utanför CPU-kretsen  Cache Memory - Snabbt Litet Dyrt fysiskt placerat inne i CPU-kretsen  ”Långsam” Bus-förbindelse mellan CPU och MM som passerar CPU-sockel och ChipSet  ChipSet innehåller Memory Control mm

10 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)10 Cache Memory grundide’  Försök att se till att ”viktig” information finns lagrad (kvar) i cache minnet  Vilken information är viktig ?  Instruktioner och data som (snart) kommer att refereras (igen)

11 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)11 Lokalitet Referenslokalitet  Egenskaper hos program och data som kan utnyttjas (tas till vara) av cacheminnet  Rumslokalitet (Spatial Locality)  Tidslokalitet (Temporal Locality)

12 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)12 Lokalitet Rumslokalitet  Rumslokalitet (Spatial Locality) En minnescell med en adress som ligger nära en minnescell som nyligen har refererats har större sannolikhet att bli refererad än andra minnesceller  Typexempel är sekvensiella program samt vektor- och matris-beräkningar

13 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)13 Lokalitet Rumslokalitet  När man hämtar in nya data från MM till cache-minnet passar man på att hämta ett block av näraliggande data  Genom att hämta och spara näraliggande information i cachen kan man utnyttja rumslokalitet

14 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)14 Lokalitet Rumslokalitet  Lönar det sig att hämta stora block jämfört med små block ?  Bara om: 1. Medelhämtetiden per byte blir lägre ! 2. Inhämtade data verkligen refereras !

15 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)15 Lokalitet Tidslokalitet  Tidslokalitet (Temporal Locality) En minnescell som nyligen har refererats har större sannolikhet att åter bli refererad än andra minnesceller  Typexempel är programloopar och indexvariabler  Lagra en hel program-loop i cacheminnet för att ta till vara på tidslokaliteten  Lagra/spar indexvariabler i cacheminnet

16 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)16 Minnesreferens från CPU:n (Read / Write)  Referera först Cache-minnet  Vid Cache Miss referera till Main Memory och  Kopiera (ett block) från MM till Cache Denna extra tid kallas Miss Penalty  Gör en ny referens (med Hit) till cachen (gäller för både read och write miss)

17 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)17 Adressering av huvudminnet  Adressen anger direkt den eller de bytes i Main Memory som avses  Vid byteadressering gäller att om fler än en byte avses är LSBits nollor i adressen  Adressen anger exakt en plats att referera i Main Memory

18 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)18 Cache Memory Read / Write Cache Memory Hit / Miss  Read Hitlästräff  Read Missläsmiss  Write Hitskrivträff  Write Missskrivmiss Referenser till Cacheminne

19 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)19 Cache Memory Read Hit  Informationen finns i cachen, (Hurra)  men...  Hur vet man att det är en Hit ?  Var i cachen finns informationen ?

20 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)20 Cache Memory Read Miss  Informationen finns EJ i cachen, (ÄSCH)  men...  Hur vet man att det är en Miss ?  Kopiera från Main Memory till Cache?  Var finns information i MM ?  Var ska informationen placeras i Cache ?  Vad händer om/när Cachen är ”full”

21 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)21 Cache Memory Write Hit  Vad menas med Hit vid skrivning ?  Informationen finns i cachen !  Den har kopierats från MM tidigare !  Hur vet man att det är en Hit ?

22 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)22 Cache Memory Write Miss  Vad menas med Miss vid skrivning ?  Informationen finns EJ i cachen !  Den har inte kopierats från MM tidigare  eller den har blivit bortbytt / överskriven  Hur vet man att det är en Miss ?  förslag: kopiera från MM till Cache och gör ett nytt skrivförsök (det blir en Hit)

23 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)23 Fetch on Write Miss  förslag: kopiera från MM till Cache och gör ett nytt skrivförsök (det blir en Hit)

24 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)24 Cache Memory Write  Ska det skrivas till bara Cache ?  Ska det skrivas till Main Memory också ?  Ska man skriva bara till Main Memory ?

25 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)25 Cache Memory Skrivpolitik, Write Policy  Write Through - Genomskrivning Skrivning till både Cache och MM (nu)  Write Back - Återskrivning Skrivning bara i Cache, kopiering till MM (senare)  Write Around - skrivning bara till MM (nu)

26 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)26 Träff i Cache Memory ger snabb referens  Cache i samma chip som Processor  Snabb access till cache  I balans med CPU-klockan  En eller några få CPU-cykler

27 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)27 Viktiga delar i en dator CPU BUS I/O MM Data Program

28 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)28 Nytt - Viktiga delar i en dator CPU BUS I/O D-CACHE I-CACHE MM Data Program ChipSet

29 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)29 Referens-Miss i Cache Memory ger MM-referens i tre moment  Läsning från MM (vid Referens-Miss) 1. Skicka adress från CPU till Main Memory (tar en minnes-buss-cykel) 2. Läs data i Main Memory (tar en ”minnes-access-time”) 3. Skicka data från Main Memory till CPU (tar en minnes-buss-cykel)

30 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)30 Referens-Miss i Cache Memory ger MM-referens i tre moment Adr Mem Data minst 3 minnes-buss-cykler per referens (om minnet är lika snabbt som bussen) Kan det göras med Pipe-Line ? javisst

31 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)31 MM-referens i tre moment med PIPE-LINE Adr Mem DataAdr Mem DataAdr Mem DataAdr Mem Data 4 läsningar på 6 buscycles 1 läsning på 3 buscycles 2 läsningar på 4 buscycles

32 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)32 Cache Reference Miss causes Main Memory Reference Den första MM referensen tar 3 buscykler (minst) efterföljande referenser tar minst 1 buscykel var Referens-mönster: 3-1-1-...-1  Beräknad medeltid / referens Att läsa 1 enhet tar 3 cykler,3 cykler/enhet Att läsa 2 enheter tar 4 cykler,2 cykler/enhet Att läsa 4 enheter tar 6 cykler,1,5 cykler/enhet Att läsa 8 enheter tar 10 cykler,1,25 cykler/enhet  Större block ger lägre medeltid / enhet

33 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)33 Cache Reference Miss causes Main Memory Reference Om den första MM referensen tar 6 buscykler och efterföljande referenser tar minst 1 buscykel var får vi Referens-mönster: 6-1-1-...-1  Beräknad medeltid / referens Att läsa 1 enhet tar 6 cykler,6 cykler/enhet Att läsa 2 enheter tar 7 cykler,3,5 cykler/enhet Att läsa 4 enheter tar 9 cykler,2,25 cykler/enhet Att läsa 8 enheter tar 13 cykler,1,625 cykler/enhet  Större block ger lägre medeltid / enhet

34 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)34  När man vill kopiera från MM till Cache kan det hända att cachen redan innehåller information (kollision / överskrivning)  Då måste man frigöra plats  Vilken plats ska man frigöra ? jämför med kopiering mellan MM och SS MM = Main Memory, SS = Secondary Storage Cache Memory Miss och Full Cache ger nya frågor

35 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)35 Cache Memory Utbytesalgoritmer, Replacement Algorithms  FIFO - First In First Out  Random  LRU - Least Recently Used  Ideal - (haha/omöjlig)  non-MRU - non Most Recently Used

36 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)36 Main Memory Size Address size, number of bits 0 2 n -1 7 … 0 27 … 0 Address: vid fetch (PC) vid LOAD vid STORE Exempel: Main Memory 256 MegaByte n = 28 (bytes) byte address 32 bitars adress ger maximalt 4 Gbyte minne

37 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)37 Main Memory Size Address size, number of bits Exempel: Main Memory 256 MegaByte Organiserat i rader Med 8 bytes/rad n = 28 (bytes) m = 25 (rader) 0 2 m -1 63 … 0 27 … 3 0 Byte inom rad, 3 bitar xxx block address byte address

38 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)38 Cache and Main Memory Size Block Size (Line Size) Cache Memory 16 KiloByte k = 11 Main Memory 256 MegaByte n = 25 0 2 n -1 63 … 0 0 2 k -1 63 … 0 Kopiering mellan Cache och Main Memory görs med block om t.ex. 64 bits = 8 bytes 2 st 32-bits ord (Word) 1*2 k 2*2 k 0*2 k.................. Typisk PC: 64 bits databus (8 byte/unit) 4 units per line/block 32 bytes per line/block

39 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)39 Adressering av Cacheminnet  Adressen ska peka ut den eller de platser i cachen där informationen skulle kunna finnas (läsas/skrivas)  På en viss plats i Cacheminnet kan man lagra information från olika platser i MM  Hur avgör man vad som finns lagrat på en viss plats i cachen?

40 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)40 Adresslapp i Cacheminnet TAG  Hur avgör man vad som finns lagrat ?  Varje block som kopieras till Cachen förses med en ”adresslapp” som anger vad som är lagrat på denna plats i cachen  Adresslappen ska ange från vilken plats i Main Memory, informationen kommer  Vid varje referens till cachen jämförs adresslappen i MM-adressen med utpekade adresslappar i cachen

41 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)41 Direct Mapping kopiera från MM till Cache 0 2 n -1 TAGINDEX 31 … 13 12 3 2 1 0 Byte 19 10 3 TAG Valid DATA INDEX anger en enda plats att lagra utpekad info i CACHEn Byte anger eventuell enskild byte inom block/rad TAG i adressen anger vilken info i MM som refereras TAG i CACHEN anger vilken info som finns i CACHEN VALID anger giltigt innehåll i CACHEN (0 betyder ”tom plats”) Adress till MM 1 0... 0 1024 rader

42 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)42 Direct Mapping Läsreferens 0 2 n -1 TAGINDEX 31 … 13 12 3 2 1 0 Byte 19 10 3 32-bits 2-1 MUX bus-driver TAG Valid DATA = MUX 32 8 En jämförare HIT/MISS Enable Adress till MM 1 0... 0 2 bit 1 bit

43 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)43 Cache Memory Mapping Adressavbildning  Direct Mapping - direkt avbildning  Fully Associative Mapping - fullt associativ avbildning  Set-Associative Mapping -mängdassociativ avbildning

44 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)44 Direct Mapping Läsreferens 0 2 n -1 TAGINDEX 31 … 13 12 3 2 1 0 Byte 19 10 3 TAG Valid DATA = En jämförare HIT/MISS Enable Adress till MM 1 0... 0 En jämförare

45 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)45 2-way Set-Associative Läsreferens 0 2 n -1 TAGINDEX 31 … 13 12 3 2 1 0 Byte 20 9 3 TAG Valid DATA = Två jämförare (arbetar samtidigt) HIT En Adress till MM 0 2 n -1 TAG Valid DATA = HIT En 1 1... 1 1 1... 1

46 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)46 Cache Memory Properties Prestanda (Performance) påverkas av  Storlek, Cachesize  Blockstorlek, Blocksize/Linesize  Grad av associativitet, Associativity  Utbytesalgoritm, Replacement algorithm  Skrivpolitik, Write Policy  Lokalitet i program och data

47 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)47  När man vill kopiera från MM till Cache kan det hända att cachen redan innehåller information (kollision / överskrivning)  Då måste man frigöra plats  Vilken plats ska man frigöra ?  Vid direct mapped cache finns inget val den enda utpekade platsen väljs Cache Memory Full Cache ska särbehandlas

48 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)48  Vid associative mapping finns valmöjligheter  vilken plats ska man frigöra ?  Referenced bit anger egenskap (per plats)  Modified bit anger egenskap (per plats)  Tidsbitar anger tid för hämtning/referens (jämför med kopiering mellan MM och SS) Cache Memory Full Cache ska särbehandlas

49 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)49 2-way Set-Associative Läsreferens 0 2 n -1 TAGINDEX 31 … 13 12 3 2 1 0 Byte 20 9 3 TAG Valid DATA = HIT En Adress till MM 1 1... 1 0 1... 1 1 0... 1 0 2 n -1 TAG Valid DATA = HIT En 1 1... 1 1 1... 0 0 1... 1 Två jämförare (arbetar samtidigt)

50 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)50 Cache Memory Utbytesalgoritmer, Replacement Algorithms  FIFO - First In First Out (tidsbitar)  Random  LRU - Least Recently Used (tidsbitar)  Ideal - (haha/omöjlig)  non-MRU - non Most Recently Used

51 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)51 Cache-minne Cache Size: 8 --> 16

52 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)52 Cache-minne Block Size: 1 --> 2

53 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)53 Cache-minne Associativitet: 1 --> 2

54 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)54 Cache-minne Associativitet: --> 4

55 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)55 CPU CHIPSET Grafik MHz-GHz L2 cache L1 I-cache RAM/DRAM PCIBUS ISA/EISABUS IDEBUS(sar) PS2BUS SCSI-BUS PCI/USB DVD ZIP L1 D-cache HDD CDRW

56 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)56 Tips om kul program Det finns ett nedladdningsbart program som visar hur just din dator är utrustad när det gäller processor och cache-minnen med mera Sök på google efter wcpuid och ladda hem på egen risk H.Oda

57 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)57 Hem-laboration 2 Cache memory Provkör (1-) 2 testprogram  (Kopiering av textsträng/memcpy)  Addition av två matriser Studera hur prestanda  exekveringstid och hitrate påverkas av olika värden på parametrar för I- och D-cache

58 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)58 string-copy memcpy ;Loop: kopiera ett tecken initiera loop: LOAD tmp  src(i) STORE dst(i)  tmp inc i if more goto loop klart

59 12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)59 Matrisaddition for (i=0, i<max, i++)/* radindex i yttre loopen */ for (j=0, j<max, j++)/* kolumnindex i inre loopen */ dst(i,j) = src1(i,j) + src2(i,j);


Ladda ner ppt "12 June 2015 2G1518, Föreäsningl 8, vt07 (E/I/CL)1 2G1518 Datorteknik Föreläsning 8 Cache Memory vt 2007 (period 3-4) för E, I och CLMDA."

Liknande presentationer


Google-annonser