Presentation laddar. Vänta.

Presentation laddar. Vänta.

Skrivning i cacheminnen zTräff zMiss zSkrivbuffert.

Liknande presentationer


En presentation över ämnet: "Skrivning i cacheminnen zTräff zMiss zSkrivbuffert."— Presentationens avskrift:

1 Skrivning i cacheminnen zTräff zMiss zSkrivbuffert

2 Skrivträff zRätt adress finns i giltig adresslapp zSka huvudminnet uppdateras? yJa = genomskrivning (write-through) yNej = återskrivning (write-back, write- behind)

3 Write-through zEnkelt zPrimärminnet har alltid aktuella data zMinus: kräver mycket busstrafik

4 Write-back zCacheminnet kan ha senaste värdet zUppdatera primärminnet när blocket byts z"Dirty bit" anger om blocket skrivits zMinskar busstrafiken zExtra krångligt och extra nödvändigt i flerprocessorsystem

5 Skrivmissar z1. Skrivs nya värdet till cacheminnet? Ja = platsreservation vid skrivmiss (allocate on write miss) z2. Hämtas gamla värdet till cacheminnet? Ja = hämtning vid skrivmiss (fetch on write) z3. Skrivs cacheminnet medan adresslappen läses? Ja = write before hit

6 Alternativ vid skrivmiss

7 Fetch-on-write zReservera plats (släng ut något vid behov) zHela gamla blocket hämtas  Efter hämtningen är det ingen miss längre - STORE kan köras igen, enkel logikkrets

8 Exempel (i datacache med bara 1 block) Fetch-on-write 4711ABCD adresslappord 0ord 1ord 2ord 3 LOADI R1 <- #$111474 LOADI R2 <- #$0123 STORE 0(R1) <- R2 Medför platsreservation och hämtning... 11147XYZW …följt av skrivning 11147X0123ZW

9 Write-validate zReservera plats (släng ut något vid behov) zHämta inget zKräver giltigbitar för varje ord i blocket zMinskar busstrafik

10 Exempel (i datacache med bara 1 block) Write-validate 4711ABCD adresslappord 0ord 1ord 2ord 3 LOADI R1 <- #$111474 LOADI R2 <- #$0123 STORE 0(R1) <- R2 Medför platsreservation men ingen hämtning... 11147-- …följt av skrivning 11147--0123-- -- anger nollställd giltigbit

11 Write-around zIngen platsreservation zIngen hämtning (förstås) zIngen write-before-hit zCacheinnehåll helt opåverkat av skrivmiss zEnkelt att bygga

12 Exempel (i datacache med bara 1 block) Write-around 4711ABCD adresslappord 0ord 1ord 2ord 3 LOADI R1 <- #$111474 LOADI R2 <- #$0123 STORE 0(R1) <- R2 Cacheminnet påverkas inte, skrivning endast till primärminnet 4711ABCD

13 Write-invalidate zCacheminnet skrivs alltid zAdresslappen uppdateras inte vid miss - blocket måste ogiltigförklaras zEnkel logik zEndast direktmappade cacheminnen av genomskrivningstyp (write-through)

14 Exempel (i datacache med bara 1 block) Write-invalidate 4711ABCD adresslappord 0ord 1ord 2ord 3 LOADI R1 <- #$111474 LOADI R2 <- #$0123 STORE 0(R1) <- R2 Skrivning före adresslappskontroll... 4711A0123CD …leder till att adresslappen inte stämmer - ogiltigförklara blocket ogiltigtA0123CD

15 Träff och miss zI princip oberoende zI praktiken: ygenomskrivning (write-through) vid träff - ofta write-around vid miss yåterskrivning (write-back) vid träff - ofta fetch-on-write vid miss zMed tanke på skrivning av flera ord i följd

16 Skrivbuffert zCacheminne av genomskrivningstyp är enkelt och bra zMen vi vill inte stoppa processorn medan skrivning sker till primärminnet zLösning: skrivbuffert mellan cacheminne och primärminne

17 Skrivbuffert zEndast skrivningar zBlir skrivbufferten full så måste processorn vänta, annars inte Processor Cacheminne Skriv- buffert Primärminne

18 Enklast möjliga skrivbuffert zEndast ett ord zSparcstation SLC (1990) z1 STORE tar 1 cykel, 2 STORE i följd tar 18 cykler adressdata giltigbit v

19 Nackdel med skrivbuffert  Problem: STORE 0(R3) <- … LOAD … <- 0(R3) zLoad kollar i skrivbufferten för att slippa vänta

20 Pentium Pro (och senare) zSTORE körs i programmets ordning zLOAD får köras före andra LOAD zLOAD får köras före STORE

21 Sammansmältning zNär STORE ej körs i programmets ordning zEn sammansmältande skrivbuffert (coalescing write buffer) kan ändra ordning på STORE-instruktioner zOlika varianter på sammansmältning finns

22 Skrivbuffert med flera platser zSka skrivningar till samma adress slås ihop eller ska man ta en ny plats? adressdatav adressdatav adressdatav

23 Bred skrivbuffert zSka skrivningar till intilliggande adresser slås ihop eller ska man ta en ny plats? adressv v v ABCD ord 0ord 1ord 2ord 3 ABCD ABCD

24 Grader av sammansmältning zIngen sammansmältning yny plats för varje skrivning ySTORE körs i ordning zBegränsad sammansmältning yendast översta platsen i skrivbufferten kollas yfångar upp skrivningar till flera ord i följd zFull sammansmältning yalla skrivbuffertplatser kollas


Ladda ner ppt "Skrivning i cacheminnen zTräff zMiss zSkrivbuffert."

Liknande presentationer


Google-annonser