170 likes | 379 Views
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?.
E N D
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.
MinneshierarkiEtt sätt att utnyttja referenslokalitet CPU M3 M2 M1 SRAM DRAM Disk 1 CPUn försöker nå minnet på en viss adress A. Om A finns i M1 utförs minnesreferensen. 2 Annars överförs ett block minne (B1) innehållande A från M2 till M1. Referens utförs i M1. 3 Om adress A ej heller finns i M2 hämtas ett block (B2, B2 > B1) innehållande A från M3 till M2. Återgå till punkt 2. • Nivå M1 sköts av ett cache-minne • Nivå M2 kallas ofta huvudminne • Nivå M2–M3 kallas virtuellt minne
N = 1 H N Prestandaaspekter + c S c S Två nivåers minneshierarki: M1 – M2 Kostnad: = 1 1 2 2 c + S S 1 2 S: storlek på minnet c: kostnad per bit Träffsannolikhet (hit ratio): N: Totala antalet minnesreferenser N1: Antalet minnesreferensersom kan göras i M1 = + - Medelaccesstid: t Ht ( 1 H ) t 1 A miss t1: Accesstid i M1 tmiss: Tidsåtgång vid miss i M1
Minneshierarkier – problemAntag en 2-nivåers hierarki, M1 och M2 Fyra frågor: 1. Var i M1 kan ett block placeras?(block placement) 2. Hur hittar man ett givet block i M1?(block identification) 3. Om M1 ä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 – adressavbildningEnklaste exemplet: direkt adressavbildning Adress Minne 0 4 block cache med direkt adressavbildning 1 Cache Index 2 0 3 1 4 5 2 6 3 7 8 9 A En cache med k block avbildar block i i minnet på blocki mod k i cacheminnet. B C D E F
Adressetikett (tag) och index • 32 bitars adress • 2N byte i cacheminnet, blockstorlek 1 byte • Index är de N minst signifikanta bitarna i adressen 31 N 0 Adressetikett (tag) Exempel: 0x50 Index Ex: 0x03 Adressetiketten lagras som en del av cacheminnets tillstånd 2N Byte cache “Valid”-bit Direkt adressavbildning Byte 0 0 Byte 1 1 Byte 2 2 0x50 Byte 3 3 : : : Byte 2N -1 2N-1
Exempel på cacheaccess V Tag Data Start Access 000 01 Access 000 01 000 M [00001] (miss) (Träff) 010 M [01010] Skriv Tag & sätt V Misshantering: Läs Data 000 M [00001] 000 M [00001] Access 010 10 010 M [01010] Access 010 10 (Träff) (miss) Läs Data Tråkig nödvändighet: • Det blir många missar vid starten s.k. kallmissar Skriv Tag & sätt V 000 M [00001] 010 M [01010]
Större cacheblock Cache med 64 byte Blockstorlek 8 byte block tag index offset valid tag byte76543210 block 0 block 1 block 2 block 3 block 4 block 5 block 6 block 7 =? & Data Träff/Miss?
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Alternativa adressavbildningar Direkt 2-vägs mängdassociativ Fullt associativ Cache block no. 0 1 2 3 4 5 6 7 Memory block no. • 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 block no.
Organisationen hos en cache med fullt associativ adressavbildning block tag offset valid tag word 0 word 1 word 2 . . . word n-1 block 0 block 1 block b-1 . . . =? =? =? & & Data & ³ 1 Hit / Miss?
Organisationen hos en cache med mängdassociativ adressavbildning block tag index offset valid tag word 0 word 1 word 2 . . . word n-1 block 0 mängd 0 block 1 block b-2 mängd b/2-1 block b-1 . . . =? =? & & Data Hit / Miss?
Vad händer vid en skrivning? Antag att blocket finns i cacheminnet: • Write through – Skrivningen utförs i både cacheminnet och huvudminnet • 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: • ”Allocate on write” – Blocket läses in i cacheminnet • ”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.
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) Variationer på DRAM
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? Minnen: Sammanfattning