Digitalteknik och Datorarkitektur 5hp Minnes-hierarkier och Cache 12 maj 2008 karl.marklund@it.uu.se issa saker använder vi ofta Dessa saker vill vi ha nära till hands Storleken har betydelse Litet är snabbt Stort är långsamt adå ofta? Samma principer gäller för hur en dator använder sitt minne. adå vissa saker? 1
Temporal Locality If a data location is referenced then it is very likely to be accessed soon again. Spatial Locality If a data location is referenced, data locations with nearby addresses are likely to be accessed soon. Lista med de senast slagna nummren. De flesta av oss läser böcker från början till slut, dvs eftersidan läservi sida n+1 osv. Level 0 register! Minne i flera nivåer minnes-hierarki: snabbt och litet (dyrt) minne nära processorn långsamt och stort (billigt) minne längre bort från processorn. Det finns snabbt minne...... som är dyrt. Det finns billigt minne...... som är långsamt. Typsiska siffror från år 2004. SRAM DRAM Mag. Disk. Tid 0.5 5 ns 50 70 ns 5 20 ms $/GB 4 0-200 0.5-2 2
Hårddisk DRAM SRAM olatile Snabb åtkomst Pris/Bit Hårddisk DRAM SRAM olatile ej Ja Ja Snabb åtkomst ej ja.. Ja Pris/Bit Billigt Dyrt Dyrast Cache från franska cacher -"gömma. A hiding place, esp. of goods, treasure, etc. Example Read alid Bit Cache med 8 platser Example Read alid Bit Cache med 8 platser 22 22 De log 2 (size of cache) bitarna av adressen mod 8 = 1 0 0 1 De bitar i adressen som är unika för samma index, i detta fall de två mest signifikanta bitarna. De log 2 (size of cache) bitarna av adressen mod 8 = 1 0 0 1 De bitar i adressen som är unika för samma index, i detta fall de två mest signifikanta bitarna. 1 [] 1 [] Kopia av data på adresses Kopia av data på adresses 3
Example Read Example Read 1 1 mod 8 = 0 0 [1] 1 1 mod 8 = 0 0 [1] 0 0 1 1 1 [] 1 [] Example Read Example Read 1 1 0 [1] 0 [1] 1 HIT På index 1 finns valid data med tag träff i cache behöver ej läsa från minnet utan kan läsa från cache som ligger närmare processorn spar tid. Träff 0 1 1 [] 0 1 1 [] Example Read Example Read Lägg in i cache. [] 1 1 1 0 [1] 1 0 [1] 0 0 1 1 1 [] 1 [] 4
Example Read Example Read 1 Ej rätt tag. [] 1 Knuffa ut det gamla [] 0 [1] 0 [0] [1] 1 0 1 0 0 1 0 1 1 [] 1 [] OK, så långt har vi utnyttjat temporal locality. ore bra om vi kunde utnyttja även spatial locality I detta exempel sparar vi inte enskilda byte i cache utan hela ord. Miss rate ökar om block-storleken är stor i förhållande till storleken på hela cache. Cache Size Example continued... [] 1 0 [1] [0] 1??? 0 0 1 Write 0 1 [] Stora block färre block i cache fler missar pga dålig förmåga att ta tillvara temporal locality. 5
Example continued... Men nu suddade vi ju ut det som den förra operationen skrev [] ad händer om jag byter telefonnummer? 1 0 [0] [1] 1 Write 0 0 1 0 1 1 [] Hitta.se måste få reda på det... Alla dina vänner måste uppdatera sina lokala adressregister... Xbox 360 CPU med 3 stycken kärnor. RAM Write-Through: Enkelt Skrivning sker alltid både till cache och minne. Samma innehåll? cache-konsistens. Två- nivå cache: tar upp nästan 25% av ytan. Write-Back: Skrivning till minnet endast då blocket knuffas ut ur cache. Skrivning till RAM tar tid dålig prestanda. Färre skrivnignar till minnet bättre prestanda. Mer komplicerad hårdvara (dyrare) Direkt-mappad cache Ett block i minnet mappas till exakt ett bestämt block i cache. Enkel hårdvara men data kan tvingas ut ur cachet i onödan Partiellt associativt cache (setassociative) två eller flera block i cache. En kompromiss! Fullständigt associativt cache vilket block som helst cache. Komplicerad hårdvara för att kolla om data finns i cache eller inte I ett direktmappat cache behöver vi endast kolla på ett ställe 6
Med ett two-way set associative cache behöver vi kolla på två platser Med ett fullständigt associativt cache måste vi söka igenom samtliga platser för att se om vi träffar I cahce eller inte. Direkt-mappad cache Ett block i minnet mappas till exakt ett bestämt block i cache. Enkel vi har inget val! Kan endast välja att kasta ut något från det set som blocket tillhör. Partiellt associativt cache (setassociative) två eller flera block i cache. ilket block skall vi slänga ut ur cachet när ett nytt vill in? Fullständigt associativt cache vilket block som helst cache. Kan välja vilket som helst vilket är det bästa valet? Men vilket block skall vi välja ur ett set? Är det någon skillnad på hur data och instruktioner läses och skrivs till och från minnet? Two potential advantages to a unified cache are: A greater hit rate than split caches because the load between instruction and data fetches are balanced automatically. Only one cache needs to be designed and implemented. LRU (Least Recently Used) Kasta ut det block som förblivit orört under längs tid! The key advantage of the split cache design is that it eliminates contention for the cache between the instruction fetch/decode unit and the execution unit. This is important for designs that rely on pipelining of instructions. Split Cache: Separat cache (i varje nivå) för data och instruktioner. 7