William Sandqvist william@kth.se Övning 8 Minnessystem Lokalitet Cacheminnen William Sandqvist william@kth.se.

Slides:



Advertisements
Liknande presentationer
Simulering av MIPS32 4K med TLB och CACHE Andrei Krougliak Simon Olsson Luleå tekniska universitet 2005.
Advertisements

En avancerad miniräknare
Flynns taxonomi ● Single Instruction, Single Data (SISD) – en instruktion i taget opererar på ett värde i taget ● Single Instruction, Multiple Data (SIMD)
Programstruktur: C för enchipsdatorer
Många studenter använder en LCD-display till sin programmeringsuppgift
William Sandqvist Störskydd William Sandqvist
Persondatorer Datorns internminne (Kapitel 6)
Logikprogrammering Ons, 25/9
Minnesteknologier Teknologi Accesstid Kostnad $/GB SRAM 1 ns 1000 DRAM
Tal och de fyra räknesätten Lite multiplikation och mycket bråkräkning
William Sandqvist Maurice Karnaugh Karnaugh-diagrammet gör det enkelt att minimera Boolska uttryck! William Sandqvist
William Sandqvist Datorteknik övning 2 Subrutinanrop William Sandqvist
1 Ingenjörsmetodik IT & ME 2009 Föreläsare Dr. Gunnar Malm.
©annax1 PC-teknik Minnen. 2 MINNEN Segmenterat minne 16 bits segmentregister + 32 bits offset = 64k*4Gbyte = 512Tb obs! Ofta används inte alla 16 bitarna.
IE1206 Inbyggd Elektronik F1 F2
23 August 2014 IS1200 Datorteknik vt09, föreläsning 10, (E och I mfl)1 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory.
Tumregel z10 procent av minnet används 90 procent av tiden.
Skrivning i cacheminnen zTräff zMiss zSkrivbuffert.
Adressöversättning Repetition av virtuellt minne
IE1206 Inbyggd Elektronik F1 F2
IE1206 Inbyggd Elektronik F1 F2
Programmeringsteknik K och Media
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
Distribuerade filsystem
9 September 2014IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
DAV B04 - Databasteknik Indexering (kap 14).
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 13: I/O-system.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 11: Implementation av filsystem.
Programmering B PHP Lektion 2
Pekare och speciell programstruktur i inbyggda system
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Föreläsning 5 måndag 5e november 2007 Datorsystem 1 och Datorarkitektur 1 Föreläsning 5 måndag 5e november 2007 Datorsystem 1 och Datorarkitektur 1.
IE1206 Inbyggd Elektronik F1 F2
William Sandqvist C:s minnesmodell.
Bios = Basic Input/Output System
Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1 De bifogade OH-bilderna är bara utkast till vad som kan vara.
IF1330 Ellära F/Ö1 F/Ö2 F/Ö3 Strömkretslära Mätinstrument Batterier
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
William Sandqvist Databuffer Omvandlar mellan olika storlekar på dataobjekt Anpassar mellan olika dataöverföringshastigheter Databuffer.
Prestanda ● Vad påverkar datorprestanda ● Hur mäter man datorprestanda ● Räkna klockcykler - ett sätt att analysera ● Amdahls lag - gräns för förbättringar.
Lågnivåprogrammering Översikt av I/O-mekanismer i hårdvara Olika språkkrav och modeller för komponent- hantering(device driving) Modeller för komponent-hantering.
IF1330 Ellära F/Ö1 F/Ö2 F/Ö3 Strömkretslära Mätinstrument Batterier
IF1330 Ellära F/Ö1 F/Ö2 F/Ö3 Strömkretslära Mätinstrument Batterier
31 March 2015IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F61 IS1500 Datorteknik och komponenter Föreläsning 6 Bushantering In- och utmatning, I/O Programstyrd.
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)1 IS1200 Datorteknik Föreläsning 2 Vi bygger en processor Kursboken, valda delar av kapitel.
IS1200 Datorteknik Föreläsning CE F2 Vi bygger en processor Kursboken, delar av kapitel 7 31 March IS1200 Datorteknik föreläsning CE – F2.
1 386 Från s bits adressbuss –=>4GB minne kan adresseras 32 bits databuss max klockfrekvens: 40MHz Protected mode –virtuellt minne –segmentering.
Pipelining Föreläsning 4. T exe — CPU-exekveringstid I — Antalet exekverade instruktioner CPI — Genomsnittligt antal klockcykler per instruktion T c —
Cacheminnen: skrivning ● Träff ● Skrivbuffert ● Miss.
Minnesarkitektur Problem: Snabbare och snabbare processorer men minnena hänger inte med. Lösning: Minneshierarkier.
Projekt 5.3 Gilpins och Ayalas θ-logistiska modell A Course in Mathematical Modeling - Mooney & Swift.
William Sandqvist Melodispelaren Denna demonstrationslaboration visar, steg för steg, hur man skriver ett kort program i programspråket.
William Sandqvist ReadModifyWrite-problemet PORTB = 0; PORTB.0 = 1; PORTB = PORTB; Vilket värde har portpinnen RB1 nu ? Förmodligen ”1”,
IF1330 Ellära F/Ö1 F/Ö2 F/Ö3 Strömkretslära Mätinstrument Batterier
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 6 ( )‏ Innehåll:  Att designa parallella program - manuell vs. automatisk parallellisering.
22 April 2015IS1200 Datorteknik, föreläsning 11 IS1200 Datorteknik Föreläsning 1 Introduktion.
6/3/2015© Mats Brorsson1 Hur mycket snabbare blir det med PC133 SDRAM jämfört med PC100 SDRAM?... blir det med en 1,4 GHz Athlon- processor jämfört.
Föreläsning 1 Introduktion till kursen. Algoritmer
12 June G1518, 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.
Avkodning av minnen (och I/O)
16 July 2015 IS1500 Datorteknik och komponeneter, föreläsning DC-F2 1 IS1500 Datorteknik och komponenter Föreläsning DC F2 Kretsar med återkoppling Minnen.
IE1206 Inbyggd Elektronik Transienter PWM Visare j  PWM CCP KAP/IND-sensor F1 F3 F6 F8 F2 Ö1 F9 Ö4F7 tentamen William Sandqvist PIC-block.
William Sandqvist Övning 10 Processorkonstruktion med pipe-line.
William Sandqvist Låskretsar och Vippor Låskretsar (latch) och vippor (flip-flop) är kretsar med minnesfunktion. De ingår i datorns minnen.
Python.
Grundläggande datavetenskap, 4p
Digitalteknik 3p - Kombinatoriska Byggblock
Digitalteknik 3p - Kombinatoriska Byggblock
Presentationens avskrift:

William Sandqvist william@kth.se Övning 8 Minnessystem Lokalitet Cacheminnen William Sandqvist william@kth.se

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

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. William Sandqvist william@kth.se

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

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

William Sandqvist william@kth.se 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. William Sandqvist william@kth.se

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

William Sandqvist william@kth.se 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. William Sandqvist william@kth.se

Burst ger snabbare medelaccess Att hämta 1 ”random” ord i minnet tar tre busscykler 3TBus/ord (varav 2 TBUS är Waitstates) Att hämta en ”Burst” med 2 ord tar 3+1 busscykler, 4/2 = 2TBus/ord Att hämta en ”Burst” med 4 ord tar 3+1+1+1 busscykler, 6/4 = 1,5TBus/ord Att hämta en ”Burst” med 8 ord tar 3+1+1+1+1+1+1+1 busscykler, 10/8 = 1,25TBus/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. 5+3+3+3 osv. TBUS = 10*TCPU är valt som exempel. William Sandqvist william@kth.se

William Sandqvist william@kth.se 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. William Sandqvist william@kth.se

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. William Sandqvist william@kth.se

William Sandqvist william@kth.se Hitrate och accesstid Man önskar en genomsnittlig acesstid tAVG = 8 ns från ett minne som har acesstiden tM = 70 ns och ett cacheminne med acesstiden tC = 5 ns. Vilken hitrate krävs? h = ? ( h är hitrate). William Sandqvist william@kth.se

William Sandqvist william@kth.se Beräkning av hitrate Önskas tAVG 8 ns Med hitrate 95% blir medelaccesstiden 8 ns trots att vi använder ett långsamt main memory med accesstiden 70 ns ! William Sandqvist william@kth.se

William Sandqvist william@kth.se 8.1 Blockstorlek 4 ord Ställ in 15 som Accesstime i simulatorn William Sandqvist william@kth.se

William Sandqvist william@kth.se 8.1 Blockstorlek 2 ord Ställ in 20 som Accesstime i simulatorn William Sandqvist william@kth.se

William Sandqvist william@kth.se 8.1 I-cache och D-cache William Sandqvist william@kth.se

William Sandqvist william@kth.se I-Cache och D-Cache William Sandqvist william@kth.se

William Sandqvist william@kth.se 8.2 Lokalitet William Sandqvist william@kth.se

Blockstorlek och genomsnittlig accesstid Större blockstorlek utnyttjar rumslokalitet Liten blockstorlek utnyttjar tidslokalitet William Sandqvist william@kth.se

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. William Sandqvist william@kth.se

8.3 Adressering i Main memory och Cache memory William Sandqvist william@kth.se

8.3 Uppdelning av adressen, blocksize 2 Main memory är 3128 Mbyte = 384 Mbyte. M=220, 128 = 27, 3 (4) = 22  229 ( 29 bitar adresserar upp till 512 Mbyte ). Cache memory är 16 kByte. k=210, 16 = 24,  214 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 (15+10+1+3=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! William Sandqvist william@kth.se

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

8.3 Uppdelning av adressen, blocksize 4 Main memory är 229 (29 adressbitar). Cache memory är 214 (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 (15+9+2+3=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. William Sandqvist william@kth.se

8.3 Uppdelning av adressen, två set Main memory är 229 (29 adressbitar). Cache memory är 214 (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 (16+8+2+3=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.) William Sandqvist william@kth.se

8.3 Uppdelning av adressen, fyra set Main memory är 229 (29 adressbitar). Cache memory är 214 (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 (17+6+2+4=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.) William Sandqvist william@kth.se

8.3 Uppdelning av adressen, full associativitet Main memory är 229 (29 adressbitar). Cache memory är 214 (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. William Sandqvist william@kth.se

8.3 Uppdelning av adressen t i w.b William Sandqvist william@kth.se

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

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 William Sandqvist william@kth.se

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%. iiii.w.bb För 1000 varv så blir det första varvet försumbart! William Sandqvist william@kth.se

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

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 William Sandqvist william@kth.se

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

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<RADER; i++) /* vary row-index */ for(j=0;j<KOLUMNER;j++) /* vary col-index */ A[i][j] = A[i][j]*3 + B[i][j]; } int main() { static matris M1,M2; . . . matmul3(M1,M2); } William Sandqvist william@kth.se

Repris: Hur lagrar C matriser? 35 matris matematik-index 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 C-index I minnet radvis. William Sandqvist william@kth.se

William Sandqvist william@kth.se 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. William Sandqvist william@kth.se

William Sandqvist william@kth.se Datacache Integer = ord = 32 bitar = 4 Bytes. Datacache 32 ord, Blocksize 4 ord. iii.ww.bb William Sandqvist william@kth.se

Rumslokalitet och Tidslokalitet? for(i=0;i<RADER; i++) /* vary row-index */ for(j=0;j<KOLUMNER;j++) /* vary col-index */ A[i][j]=A[i][j]*3 + B[i][j]; a) Rumslokalitet (Locality)? Ja, C lagrar radvis och inre loopen (index j) stegar inom raden. b) Tidslokalitet (Reuse)? Ja, operationen med elementet A[i][j] är av typen Read-Modify-Write. William Sandqvist william@kth.se

Datacache 32 Word, cacheblock 4 Word William Sandqvist william@kth.se

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! William Sandqvist william@kth.se

William Sandqvist william@kth.se 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. William Sandqvist william@kth.se

William Sandqvist william@kth.se 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. William Sandqvist william@kth.se

Att undvika utknuffning! William Sandqvist william@kth.se

William Sandqvist william@kth.se L1 L2 L3 Cache Intel Itanium har stora associativa Cacheminnen i tre nivåer … William Sandqvist william@kth.se