Minnesarkitektur Problem: Snabbare och snabbare processorer men minnena hänger inte med. Lösning: Minneshierarkier.
Minnesteknologier Snabba minnen är dyra! Billiga minnen är långsamma! Hur kan vi skapa det dyra (och snabba) minnets prestanda till det långsamma minnets kostnad?
Referenslokalitet Tidslokalitet – De minnesceller som nyss använts kommer med stor sannolikhet snart användas igen. Rumslokalitet – De minnesceller som ligger nära de som nyss använts kommer med stor sannolikhet att användas även de.
Minneshierarki Ett sätt att utnyttja referenslokalitet Nivå M 1 sköts av ett cache-minne Nivå M 2 kallas ofta huvudminne Nivå M 2 –M 3 kallas virtuellt minne CPU M1M1 M2M2 M3M3 SRAM DRAM Disk 1CPUn försöker nå minnet på en viss adress A. Om A finns i M 1 utförs minnesreferensen. 2Annars överförs ett block minne (B 1 ) innehållande A från M 2 till M 1. Referens utförs i M 1. 3Om adress A ej heller finns i M 2 hämtas ett block (B 2, B 2 > B 1 ) innehållande A från M 3 till M 2. Återgå till punkt 2.
Prestandaaspekter Två nivåers minneshierarki: M 1 – M 2 Kostnad: SS ScSc c Träffsannolikhet (hit ratio): N N H 1 = Medelaccesstid: missA tHHtt)1( 1 S: storlek på minnet c: kostnad per bit N: Totala antalet minnesreferenser N 1 : Antalet minnesreferenser som kan göras i M 1 t 1 : Accesstid i M 1 t miss :Tidsåtgång vid miss i M 1
Minneshierarkier – problem Antag en 2-nivåers hierarki, M 1 och M 2 Fyra frågor: 1.Var i M 1 kan ett block placeras? (block placement) 2.Hur hittar man ett givet block i M 1 ? (block identification) 3.Om M 1 är fullt, vilket block ska då bytas ut för att ge plats åt ett nytt block? (block replacement) 4. Vad händer vid skrivningar? (write policy)
Cache – adressavbildning Enklaste exemplet: direkt adressavbildning Minne 4 block cache med direkt adressavbildning Adress Cache Index En cache med k block avbildar block i i minnet på block i mod k i cacheminnet A B C D E F
Adressetikett (tag) och index Ex: 0x03Exempel: 0x50 0x5 0 Index N -1 : 2 N Byte cache Direkt adressavbildning Byte 0 Byte 1 Byte 2 Byte 3 Byte 2 N -1 0N31 : Adressetikett (tag) Adressetiketten lagras som en del av cacheminnets tillstånd “Valid”-bit : 32 bitars adress 2 N byte i cacheminnet, blockstorlek 1 byte Index är de N minst signifikanta bitarna i adressen
Exempel på cacheaccess Access Start M [00001] (miss) TagDataV Access Misshantering: Läs Data Skriv Tag & sätt V M [01010] 000 M [00001] Läs Data Skriv Tag & sätt V M [00001] 010 M [01010] Access (Träff) 000 M [00001] 010 M [01010] Access (Träff) Tråkig nödvändighet: Det blir många missar vid starten s.k. kallmissar
Större cacheblock tagvalid =? & Träff/Miss? Data tagindex block offset block 0 block 1 block 2 block 3 block 4 block 5 block 6 block 7 byte Cache med 64 byte Blockstorlek 8 byte
Alternativa adressavbildningar Hög grad av associativitet ger större frihet vid placering av block Låg grad av associativitet ger färre block att söka för att avgöra om blocket finns i cachen eller ej Cache block no. Memory block no. Direkt2-vägs mängdassociativFullt associativ
Organisationen hos en cache med fullt associativ adressavbildning word 0word 1word 2word n-1tagvalid... =? & Hit / Miss? Data tag block offset =? & & 1 block 0 block 1 block b-1
Organisationen hos en cache med mängdassociativ adressavbildning word 0word 1word 2word n-1tagvalid... =? & Hit / Miss? Data tagindex block offset block 0 block 1 block b-1 block b-2 =? & mängd 0 mängd b/2-1
Vad händer vid en skrivning? Antag att blocket finns i cacheminnet: 1.Write through – Skrivningen utförs i både cacheminnet och huvudminnet 2.Write back – Skrivningen utförs endast i cacheminnet, blocket måste skrivas tillbaka till huvudminnet vid blockutbyte Två sätt att hantera missar vid skrivning: 1.”Allocate on write” – Blocket läses in i cacheminnet 2.”No allocate on write” – Blocket läses inte in i cacheminnet, men huvudminnet uppdateras
Blockstorlekens effekt på prestanda Större block utnyttjar rumslokaliteten men tar lång tid att hämta vid miss och fyller cachen snabbt. Mindre block utnyttjar tidslokaliteten men man hämtar inte så mycket varje gång.
Variationer på DRAM FPM, EDO Utnyttjar det faktum att minnesaccesser inte är slump- mässiga En rad i DRAM- matrisen läses in i ett register SDRAM Har ett synkront gränssnitt till processorn (max 800 Mbyte/s) Rambus En ny busstandard för DRAM (max 1,6 Gbyte/s)
Minnen: Sammanfattning SRAM och DRAM SRAM används för cacheminnen DRAM används för huvudminne Minneshierarkier Cacheminnen Var i cachen kan ett block placeras? Hur hittar man ett givet block i cachen? Om cachen är full, vilket block ska då bytas ut för att ge plats åt ett nytt block? Vad händer vid skrivningar?