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
Storleken har betydelse Litet är snabbt Stort är långsamt Vissa saker använder vi ofta Dessa saker vill vi ha nära till hands Samma principer gäller för hur en dator använder sitt minne. Vadå vissa saker? Vadå ofta?
Lista med de senast slagna nummren. Temporal Locality If a data location is referenced then it is very likely to be accessed soon again.
De flesta av oss läser böcker från början till slut, dvs efter sida n läser vi sida n+1 osv. Spatial Locality If a data location is referenced, data locations with nearby addresses are likely to be accessed soon.
Level 0 – register! Minne i flera nivåer (hierarki): snabbt och litet (dyrt) och litet minne nära processorn långsamt och stort (billigt) minne längre bort från processorn.
Cache från franska cacher - "gömma“. A hiding place, esp. of goods, treasure, etc.
Example – Read Data OpAddress Load10110 IndexVTagData 000N 001N 010N 011N 100N 101N 110N10[10110] 111N mod 8 = 110 Y
Example – Read Data OpAddress Load10110 Load11010 IndexVTagData 000N 001N 010N11[11010] 011N 100N 101N 110Y10[10110] 111N mod 8 = 010 Y
Example – Read Data OpAddress Load10110 Load11010 Load10110 IndexVTagData 000N 001N 010Y11[11010] 011N 100N 101N 110Y10[10110] 111N HIT
Example – Read Data OpAddress Load10110 Load11010 Load10110 Load11010 IndexVTagData 000N 001N 010Y11[11010] 011N 100N 101N 110Y10[10110] 111N HIT
Example – Read Data OpAddress Load10110 Load11010 Load10110 Load11010 Load10000 IndexVTagData 000N10[10000] 001N 010Y11[11010] 011N 100N 101N 110Y10[10110] 111N MISS Y
Example – Read Data OpAddress Load10110 Load11010 Load10110 Load11010 Load10000 Load10010 IndexVTagData 000N10[10000] 001N 010Y11[11010] 011N 100N 101N 110Y10[10110] 111N MISS 10[10010]
OK, så långt har vi utnyttjat temporal locality. Vore bra om vi kunde utnyttja även spatial locality…
Cache Size
Example continued... OpAddress Load10110 Load11010 Load10110 Load11010 Load10000 Load10010 Write10010 IndexVTagData 000N10[10000] 001N 010Y10[11010] 011N 100N 101N 110Y10[10110] 111N ??? [10010]
Example continued... OpAddress Load10110 Load11010 Load10110 Load11010 Load10000 Load10010 Write10010 Load11010 IndexVTagData 000N10[10000] 001N 010Y10[10010] 011N 100N 101N 110Y10[10110] 111N MISS [11010]11 Men nu suddade vi ju ut det som den förra operationen skrev…
Direkt-mappad cache Ett block i minnet mappas till exakt ett bestämt block i cache. Fullständigt associativt cache Ett block i minnet kan mappas till vilket block som helst cache. Partiellt associativt cache (set- associative) Ett block i minnet kan mappas till två eller flera block i cache. Enkel hårdvara men data kan tvingas ut ur cachet i onödan… Komplicerad hårdvara för att kolla om data finns i cache eller inte… En kompromiss!
Vilket block skall vi slänga ut ur cachet när ett nytt vill in?
Direkt-mappad cache Ett block i minnet mappas till exakt ett bestämt block i cache. Fullständigt associativt cache Ett block i minnet kan mappas till vilket block som helst cache. Partiellt associativt cache (set- associative) Ett block i minnet kan mappas till två eller flera block i cache. Enkel – vi har inget val! Kan välja vilket som helst… vilket är det bästa valet? Kan endast välja att kasta ut något från det set som blocket tillhör.
LRU (Least Recently Used) Kasta ut det block som förblivit orört under längs tid! Men vilket block skall vi välja ur ett set?