Presentation laddar. Vänta.

Presentation laddar. Vänta.

William Sandqvist Övning 8 Minnessystem Lokalitet Cacheminnen.

Liknande presentationer


En presentation över ämnet: "William Sandqvist Övning 8 Minnessystem Lokalitet Cacheminnen."— Presentationens avskrift:

1 William Sandqvist Övning 8 Minnessystem Lokalitet Cacheminnen

2 William Sandqvist Digitala komponenter Assemblerprogram C In- och utmatning Avbrott och "trap" Cacheminnen Trådar, synkronisering DC F1 DC F2 CE F1 CE F3 CE F4 CE F5 CE F6 CE F7 CE F8 CE F9 CE F10 CE F2 DC Ö1 DC Ö2 CE Ö4 CE Ö1 CE Ö2 CE Ö3 CE Ö10 CE Ö7 CE Ö8 CE Ö9 CE Ö5CE Ö6 lab dicom lab nios2time hemlab C lab nios2io lab nios2int hemlab cache hemlab trådar tentamen Datorteknik & komponenter

3 William Sandqvist Processor-memory performance gap Både processorer och minnen ökar sina prestanda år efter år, men inte alls med samma ökningstakt – ett prestandagap har uppstått! Lösningen på detta problem har blivit uppfinnandet av Cache-minnet.

4 William Sandqvist Minneshierarki En tre nivåers minneshierarki. De snabbare minnestyperna används som ”buffertar” mot de långsammare. Principbild

5 William Sandqvist SRAM Varje bit i ett CMOS SRAM består av en låskrets uppbyggd av sex MOS-transistorer.

6 William Sandqvist DRAM Varje bit i ett DRAM består av en transistor och en minneskonden- sator. En laddad kondensator läcker ut laddningen efter ett tag. Periodiskt måste alla kondensatorer under- sökas och de som har laddning kvar måste då återladdas. Detta kallas för Refresh. Det sköts av kretsar inuti minnet.

7 William Sandqvist Kondensatorn byggs på djupet En bit i ett DRAM tar samma plats som två MOS-transistorer. En bit i SRAM som sex MOS-transistorer! Trench Capacitor (trench = dike)

8 William Sandqvist Burst (skur) Minnet läses i tre steg: ROW, COL, och access. Accesstiden för ett valfritt minnes- ord blir därför tre Bussklock-cykler. Om man läser minnet ”skurvis” (Burst) räknar minnet självt fram adresserna till minnesordets ”grannar”. Resten av minnes- orden i skuren tar då bara en Bussklockcykel. Burst kan tex. vara 2, 4, 8 minnes- ord.

9 William Sandqvist Burst ger snabbare medelaccess Att hämta 1 ”random” ord i minnet tar tre busscykler 3T Bus /ord (varav 2 T BUS är Waitstates) Att hämta en ”Burst” med 2 ord tar 3+1 busscykler, 4/2 = 2T Bus /ord Att hämta en ”Burst” med 4 ord tar busscykler, 6/4 = 1,5T Bus /ord Att hämta en ”Burst” med 8 ord tar busscykler, 10/8 = 1,25T Bus /ord Det gäller dock att ha användning för alla hämtade ord – annars slösar man bussklockcykler med Burst-metoden! Detta är ett principiellt resonemang. Gäller både SRAM och DRAM. Andra accessmönster förekommer, tex osv. T BUS = 10*T CPU är valt som exempel.

10 William Sandqvist Cacheminnet Cacheminnet kan hålla en liten del av huvudminnets innehåll. Processorn hämtar sin information från Cacheminnet, men om informationen saknas där (= Cache-miss), överförs den tillsam- mans med ett helt Cache-block från huvudminnet till Cache-minnet. Blockvis läsning av huvudminnet ger lägre genomsnittlig accesstid, men man måste ha nytta av de övriga orden i blocket … Chansen att övriga ord i blocket kommer till användning beror av …  Tidslokalitet En minnescell som blivit accessad nyligen kan bli accessad snart igen.  Rumslokalitet De minnesceller som har adresser nära en som nyligen accessats har större chans att bli accessade.

11 William Sandqvist Cache – Adressavbildning De flesta huvudminnen är Byteorganiserade, men eftersom huvudminnet accessas blockvis brukar det bli enklare om man ritar det som en följd av Minnesblock. Direkt adressavbildning: Minnesblock: i  Cacheblock: j = i % K Minnesblocket i avbildas på Cacheblocket j tills Cache-minnet tar slut – då börjar det om från Cache- minnets början. Två Minnesblock som avbildas på samma Cache- block kan inte användas samtidigt – det ena ”knuffar ut” det andra.

12 William Sandqvist Hitrate och accesstid Man önskar en genomsnittlig acesstid t AVG = 8 ns från ett minne som har acesstiden t M = 70 ns och ett cacheminne med acesstiden t C = 5 ns. Vilken hitrate krävs? h = ? ( h är hitrate).

13 William Sandqvist Beräkning av hitrate Önskas t AVG 8 ns Med hitrate 95% blir medelaccesstiden 8 ns trots att vi använder ett långsamt main memory med accesstiden 70 ns !

14 William Sandqvist 8.1 Blockstorlek 4 ord Ställ in 15 som Accesstime i simulatorn

15 William Sandqvist 8.1 Blockstorlek 2 ord Ställ in 20 som Accesstime i simulatorn

16 William Sandqvist 8.1 I-cache och D-cache

17 William Sandqvist I-Cache och D-Cache

18 William Sandqvist 8.2 Lokalitet

19 William Sandqvist Blockstorlek och genomsnittlig accesstid Liten blockstorlek utnyttjar tidslokalitet Större blockstorlek utnyttjar rumslokalitet

20 William Sandqvist Rumslokalitet och Tidslokalitet Tidslokalitet: för data är det Read-Modify-Write operationer till en variabel. Till exempel C:s sammansatta operatorer += *= -= /= %= a += 3; ( a = a+3; ), loopräknare och index- variabler. För instruktioner finns tidslokalitet vid korta loopar. ”Rak” kod saknar tidslokalitet. Rumslokalitet: för instruktioner är det rak kod. För data är det vektorer och arrayer.

21 William Sandqvist 8.3 Adressering i Main memory och Cache memory

22 William Sandqvist 8.3 Uppdelning av adressen, blocksize 2 Main memory är 3  128 Mbyte = 384 Mbyte. M=2 20, 128 = 2 7, 3 (4) = 2 2  2 29 ( 29 bitar adresserar upp till 512 Mbyte ). Cache memory är 16 kByte. k=2 10, 16 = 2 4,  2 14 Direktmappning minne-cache, Block size = 2 ord a’ 8 Byte. bbb 8Byte/ord, w 2ord/Block, iiiiiiiiii 1024Index (rader, block). Restrerande 15 bitar är tag ttttttttttttttt ( =29) Mm: mmmmmmmmmmmmmmm.mmmmmmmmmm.m.mmm Cm: ttttttttttttttt.iiiiiiiiii.w.bbb Två minnesadresser med samma index upptar samma rad i cacheminnet. Har de olika tag så knuffar de ut varandra! Har de däremot samma tag så finns innehållet i cachen!

23 William Sandqvist Minnesblock och Cacheblock Mappningen mellan minne och cache blir tydlig om man ritar minnet som om det bestod av cacheblock.

24 William Sandqvist 8.3 Uppdelning av adressen, blocksize 4 Main memory är 2 29 (29 adressbitar). Cache memory är 2 14 (14 adressbitar) Direktmappning minne-cache, Block size = 4 ord a’ 8 Byte. bbb 8Byte/ord, ww 4ord/Block, iiiiiiiii 512Index (rader, block). Restrerande 15 bitar är tag ttttttttttttttt ( =29) Mm: mmmmmmmmmmmmmmm.mmmmmmmmm.mm.mmm Cm: ttttttttttttttt.iiiiiiiii.ww.bbb Med blockstorleken 4 ord ökar ww till två bitar på indexbitarna i :s bekostnad. Tagbitarnas t :s antal blir detsamma.

25 William Sandqvist 8.3 Uppdelning av adressen, två set Main memory är 2 29 (29 adressbitar). Cache memory är 2 14 (14 adressbitar) Direktmappning minne-cache, Block size = 4 ord a’ 8 Byte. bbb 8Byte/ord, ww 4ord/Block, iiiiiiii 256Index (rader, block). Restrerande 16 bitar är tag tttttttttttttttt ( =29) Mm: mmmmmmmmmmmmmmmm.mmmmmmmm.mm.mmm Cm: tttttttttttttttt.iiiiiiii.ww.bbb Med ett associativt minne som har två set, gäller adressavbildningen mot ett set. Taggbitarna t ökar med en bit på indexbitarnas i bekostnad (de övriga raderna finns inuti det andra setet. Logik i cacheminnet väljer sedan mellan de två seten.)

26 William Sandqvist 8.3 Uppdelning av adressen, fyra set Main memory är 2 29 (29 adressbitar). Cache memory är 2 14 (14 adressbitar) Direktmappning minne-cache, Block size = 4 ord a’ 8 Byte. bbb 8Byte/ord, ww 4ord/Block, iiiiiii 128Index (rader, block). Restrerande 17 bitar är tag tttttttttttttttt ( =29) Mm: mmmmmmmmmmmmmmmmm.mmmmmmm.mm.mmm Cm: ttttttttttttttttt.iiiiiii.ww.bbb Med ett associativt minne som har fyra set, gäller adressavbildningen mot ett set. Indexbitarna i minskar med två bitar på taggbitarnas t :s bekostnad (de övriga raderna fördelas på de övriga seten. Logik i Cacheminnet väljer mellan de fyra seten.)

27 William Sandqvist 8.3 Uppdelning av adressen, full associativitet Main memory är 2 29 (29 adressbitar). Cache memory är 2 14 (14 adressbitar) Direktmappning minne-cache, Block size = 4 ord a’ 8 Byte. bbbb 8Byte/ord, ww 4ord/Block, 1Index (rad, block). Restrerande 24 bitar är tag tttttttttttttttttttttttt (24+2+3=29) Mm: mmmmmmmmmmmmmmmmmmmmmmmm.mm.mmm Cm: tttttttttttttttttttttttt.ww.bbb För adressavbildningen har ett fullständigt associativt minne bara en rad (ingen indexbit i ). Alla indexbitarna tas över av tag-bitar t. Cacheminnet består av set (i stället för rader) som väljs med intern logik.

28 William Sandqvist 8.3 Uppdelning av adressen tiw.b

29 William Sandqvist 8.4 Instruktionscache Antalet instruktioner per loop-varv tar man i allmänhet reda på genom att studera assemblerkoden.

30 William Sandqvist I-Cache 16 Ord a’ 4 Byte 32 bit, två ord/block Instruktionerna utförs i en följd tills hoppinstruktionen tillbaka till loopens början utförs. För varje cache-rad blir det MT. När cacheminnet tar slut så mappas instruktionerna till början igen. Mönstret MT fortsätter i alla varv. Hitrate h = 50%. För loopen med 60 instruktioner blir det samma hitrate, 50%. iii.w.bb

31 William Sandqvist I-Cache 32 Ord, a’ 4 Byte (32 bit), två ord/block Hela 30-instruktioners loopen ryms i cacheminnet. För första varvet i loopen blir det MT i varje rad. Därefter finns redan alla instruktioner i följd i cacheminnet och då blir hitrate 100%. För loopen med 60 instruktioner blir det fortsatt en hitrate 50%. För 1000 varv så blir det första varvet försumbart! iiii.w.bb

32 William Sandqvist I-Cache 64 Ord Ett 64 ords cacheminne rymmer båda looparna. Hitrate blir nära 100%. iiiii.w.bb

33 William Sandqvist I-Cache 64 Ord associativitet med två set Hela 30 instruktioners loopen ryms i ett set i cacheminnet. 60 instruktions loopen ryms i två set. Hitrate för båda looparna blir nära 100%. iiii.w.bb

34 William Sandqvist I-Cache 64 Ord Blocksize 8 ord I-Cache 64 Ord Båda looparna får första varvet MTTTTTTT, därefter TTTTTTTT. h = 100% I-Cache 32 Ord 60-instruktioners loopen får mycket bättre hitrate än med mindre blocksize. Alla varv MTTTTTTT. h = 7/8 = 88% iii.www.bb ii.www.bb

35 William Sandqvist 8.5 Matrisberäkning, Datacache #define RADER 8 #define KOLUMNER 8 typedef int matris[RADER][KOLUMNER]; /* matrix calculation */ void matmul3(matris A, matris B) { int i,j; for(i=0;i

36 William Sandqvist Repris: Hur lagrar C matriser? a[0][0] a[0][1] a[0][2] a[0][3] a[0][4] a[1][0] a[1][1] a[1][2] a[1][3] a[1][4] a[2][0] a[2][1] a[2][2] a[2][3] a[2][4] 3  5 matris matematik-index 3  5 matris C-index I minnet radvis.

37 William Sandqvist Radvis lagring Att matrisen B ligger direkt efter A är vanligt, men inget som garanteras. Med C:s adressoperator & kan man dock alltid ta reda på hur kompilatorn lagrat matriserna.

38 William Sandqvist Datacache Integer = ord = 32 bitar = 4 Bytes. Datacache 32 ord, Blocksize 4 ord. iii.ww.bb

39 William Sandqvist Rumslokalitet och Tidslokalitet? for(i=0;i

40 William Sandqvist Datacache 32 Word, cacheblock 4 Word

41 William Sandqvist Datacache 32 Word, cacheblock 8 Word c) Ökad blockstorlek till 8 ord för att utnyttja rumslokaliteten. Eftersom båda matriserna mappas på samma rader så gör ”utknuffningen” bara att körtiden ökar!

42 William Sandqvist Beräkna hitrate A[i][j] = A[i][j]*3 + B[i][j]; d) Cache 32 ord, blocksize 4. I exemplet mappas A och B elementen alltid till samma rad i cacheminnet (tyvärr): ldw A ldw B stw A MMM TMM TMM TMM... 33% träff. Blocksize 8 skulle bara innebära att man hämtar in fler ord som inte kommer till användning. Körtiden ökar. e) Cache 128 ord, blocksize 4? Båda matriserna ryms samtidigt i cachen, ingen utknuffning. MMT TTT TTT TTT... 83% träff.

43 William Sandqvist Associativitet 2 set A[i][j] = A[i][j]*3 + B[i][j]; f) Cache 32 ord, blocksize 4, 2 set. Elementen i A och B kan lagras i olika set och behöver inte knuffa ut varandra. ldw A ldw B stw A MMT TTT TTT TTT... 83% träff (2 missar vart fjärde varv). En förutsättning för detta är att den använda utbytes- algoritmen inte väljer att skriva över det nyligen använda blocket. Tex. LRU (Least Recently Used). Blocksize 8, då får vi 2 missar var åttonde varv.

44 William Sandqvist Att undvika utknuffning!

45 William Sandqvist L1 L2 L3 Cache Intel Itanium har stora associativa Cacheminnen i tre nivåer …


Ladda ner ppt "William Sandqvist Övning 8 Minnessystem Lokalitet Cacheminnen."

Liknande presentationer


Google-annonser