1 / 24

Skrivning i cacheminnen

Skrivning i cacheminnen. Träff Miss Skrivbuffert. Skrivträff. Rätt adress finns i giltig adresslapp Ska huvudminnet uppdateras? Ja = genomskrivning (write-through) Nej = återskrivning (write-back, write-behind). Write-through. Enkelt Primärminnet har alltid aktuella data

Download Presentation

Skrivning i cacheminnen

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Skrivning i cacheminnen • Träff • Miss • Skrivbuffert

  2. Skrivträff • Rätt adress finns i giltig adresslapp • Ska huvudminnet uppdateras? • Ja = genomskrivning(write-through) • Nej = återskrivning(write-back, write-behind)

  3. Write-through • Enkelt • Primärminnet har alltid aktuella data • Minus: kräver mycket busstrafik

  4. Write-back • Cacheminnet kan ha senaste värdet • Uppdatera primärminnet när blocket byts • "Dirty bit" anger om blocket skrivits • Minskar busstrafiken • Extra krångligt och extra nödvändigt i flerprocessorsystem

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

  6. Alternativ vid skrivmiss

  7. Fetch-on-write • Reservera plats (släng ut något vid behov) • Hela 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 adresslapp ord 0 ord 1 ord 2 ord 3 4711 A B C D LOADI R1 <- #$111474LOADI R2 <- #$0123STORE 0(R1) <- R2 Medför platsreservation och hämtning... 11147 X Y Z W …följt av skrivning 11147 X 0123 Z W

  9. Write-validate • Reservera plats (släng ut något vid behov) • Hämta inget • Kräver giltigbitar för varje ord i blocket • Minskar busstrafik

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

  11. Write-around • Ingen platsreservation • Ingen hämtning (förstås) • Ingen write-before-hit • Cacheinnehåll helt opåverkat av skrivmiss • Enkelt att bygga

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

  13. Write-invalidate • Cacheminnet skrivs alltid • Adresslappen uppdateras inte vid miss- blocket måste ogiltigförklaras • Enkel logik • Endast direktmappade cacheminnen av genomskrivningstyp (write-through)

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

  15. Träff och miss • I princip oberoende • I praktiken: • genomskrivning (write-through) vid träff- ofta write-around vid miss • återskrivning (write-back) vid träff- ofta fetch-on-write vid miss • Med tanke på skrivning av flera ord i följd

  16. Skrivbuffert • Cacheminne av genomskrivningstypär enkelt och bra • Men vi vill inte stoppa processorn medan skrivning sker till primärminnet • Lösning: skrivbuffertmellan cacheminne och primärminne

  17. Skrivbuffert • Endast skrivningar • Blir skrivbufferten full så måste processorn vänta, annars inte Processor Cacheminne Skriv-buffert Primärminne

  18. Enklast möjliga skrivbuffert giltigbit • Endast ett ord • Sparcstation SLC (1990) • 1 STORE tar 1 cykel,2 STORE i följd tar 18 cykler v adress data

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

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

  21. Sammansmältning • När STORE ej körs i programmets ordning • En sammansmältande skrivbuffert (coalescing write buffer)kan ändra ordning på STORE-instruktioner • Olika varianter på sammansmältning finns

  22. Skrivbuffert med flera platser • Ska skrivningar till samma adress slås ihop eller ska man ta en ny plats? v adress data v adress data v adress data

  23. Bred skrivbuffert ord 0 ord 1 ord 2 ord 3 • Ska skrivningar till intilliggande adresser slås ihop eller ska man ta en ny plats? v adress A B C D v adress A B C D v adress A B C D

  24. Grader av sammansmältning • Ingen sammansmältning • ny plats för varje skrivning • STORE körs i ordning • Begränsad sammansmältning • endast översta platsen i skrivbufferten kollas • fångar upp skrivningar till flera ord i följd • Full sammansmältning • alla skrivbuffertplatser kollas

More Related