Välimuistin suorituskyvyn mittaus

Samankaltaiset tiedostot
TKT-3201 Tietokonearkkitehtuuri 2

52480S TIETOKEARKKITEHTUURIT Tentti

Internal Memory, Cache

Internal Memory, Cache

TKT-3200 Tietokonetekniikka I. Harjoitustyö 4: Cache - simulaattorin ohje

Internal Memory, Cache (välimuisti)

Internal Memory, Cache (välimuisti)

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

Luento 9 Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti

1. Keskusyksikön rakenne

Luento 9 Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti

Väylät. Tietokoneen rakenne. Stallings: Ch 3 Mitä väylällä liikkuu? Väylän ominaisuuksia PCI-väylä PCI Express. Luento 2-1

Muistihierarkia (4) Luento 9 Järjestelmän ulkoinen muisti. Ohjelman muistiosoitteet (3) Virtuaalimuisti (3) Virtuaalimuistin toteutus.

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

ltö Luento 6: VIRTUAALIMUISTI Luento 7: Segmentointi Segmentointi ja sivutus yhdistettynä Yhteiskäytöstä Suoritus virtuaalimuistissa

Luento 6: VIRTUAALIMUISTI

Tietokoneen toiminta, K Tavoitteet (4)

Muistipiirit. Digitaalitekniikka (piirit) Luku 20 Sivu 1 (24)

Luento 2: Väylät Laitteiden väliseen kommunikointiin Tav. yleislähetys: kaikki kuulevat kaiken

Käyttöjärjestelmät. Teemu Saarelainen Tietotekniikka

Luento 9 Järjestelmän ulkoinen muisti

Luento 2: Väylät Luento 2. Luento 2-1 R/W. Req / Rel. - Ajoitus. Luento 2-3. Memory. Luento 2-5

TKT-3200 Tietokonetekniikka I. Harjoitustyö 4: Cache - työohje. Syksy 2010

D B. Levykön rakenne. pyöriviä levyjä ura. lohko. Hakuvarsi. sektori. luku-/kirjoituspää

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten,

ELEC-C3240 Elektroniikka 2

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Muistihierarkia (4) Luento 9 Järjestelmän ulkoinen muisti. Ohjelman muistiosoitteet (3) Virtuaalimuisti (3) Virtuaalimuistin toteutus (2)

CT50A2602 Käyttöjärjestelmät Seminaarityö. Tietokoneen muisti nyt ja tulevaisuudessa

VIRTUAALIMUISTI. Stallings, Luku 8.1

Sisältö VIRTUAALIMUISTI. Stallings, Luku 8.1. Suoritus virtuaalimuistissa. Suoritus virtuaalimuistissa. Puutoskeskeytys. Suoritus virtuaalimuistissa

VIRTUAALIMUISTI. Stallings, Luku 8.1

Sisältö VIRTUAALIMUISTI. Stallings, Luku 8.1. Suoritus virtuaalimuistissa. Suoritus virtuaalimuistissa. Puutoskeskeytys. Suoritus virtuaalimuistissa

Tietokoneen muisti nyt ja tulevaisuudessa. Ryhmä: Mikko Haavisto Ilari Pihlajisto Marko Vesala Joona Hasu

Käyttöjärjestelmän rakenne

Stallings, Luku

Järjestelmän ulkoinen muisti I/O

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

POWER analytiikka-alustana

MUISTIPIIRIT H. Honkanen

Muistihierarkia Kiintolevyt I/O:n toteutus

C++11 seminaari, kevät Johannes Koskinen

Tietokonejärjestelmä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja. TITO-kurssista. John von Neumann ja EDVAC, 1949.

Sisältöä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja TITO-kurssista. Tietokonejärjestelmä

Väylät. Prosessorin tie ulkomaailmaan Pienissä järjestelmissä vain yksi väylä. Osoite, data ja ohjaussignaalit Prosessori ainoa herra (master)

7.4 Sormenjälkitekniikka

6.3. AVR_rauta. EEPROM-muisti pva

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Käyttöjärjestelmät. Tietokoneen rakenne. Stallings, Luku 1. KJ-I S2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 1-1

Oraclen syvin ydin. Pertti Eiskonen Yleisradio Oy Tietokanta-asiantuntija. OUGF syysseminaari 2002 Sivu 1

Luento 1 (verkkoluento 1) Ohjelman sijainti Ohjelman esitysmuoto Laitteiston nopeus

Intel Pentium Pro -prosessori. tietokonearkkitehtuurit, syksy -96 Ari Rantanen

CUDA. Moniydinohjelmointi Mikko Honkonen

Sulautettujen järjestelmien skaala on niin laaja, että on erittäin vaikea antaa yleispätevää kuvausta siitä millainen on sulautettu järjestelmä.

Sulautetut järjestelmät

Algoritmit 1. Luento 3 Ti Timo Männikkö

tikra_oppimistavoitteet.doc Sivu 1 / / Teemu Kerola Oppimistavoitteet kurssilla Tietokoneen rakenne Osaa selittää Boolen algebran

Q = pienin suunniteltu ilmamäärä ja k = puhaltimen tai iirispellin k-arvo.

D B. Tiedostojen käsittely

2 Konekieli, aliohjelmat, keskeytykset

AUTO3030 Digitaalitekniikan jatkokurssi, harjoitus 2, ratkaisuja

Ongelma(t): Mistä loogisista lausekkeista ja niitä käytännössä toteuttavista loogisista piireistä olisi hyötyä tietojenkäsittelyssä ja tietokoneen

Työasema- ja palvelinarkkitehtuurit (IC130301) Apumuistit. Kiintolevyt. 5 opintopistettä. Petri Nuutinen

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Esimerkkitentin ratkaisut ja arvostelu

Hajautettujen järjestelmien perusteet. Replikointi. Kari Systä

oheishakemistoja voi tiedostoon liittyä useita eri perustein muodostettuja

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

MUISTINHALLINNAN OHJELMISTO

HELIA 1 (16) Outi Virkki Tietokantasuunnittelu

Lähtötiedot tiedot / seuraavaksi? Käyttöjärjestelmät II MUISTINHALLINNAN OHJELMISTO. Looginen vs. fyysinen osoite Perusvalinnat.

KJ-II K2006 / Auvo Häkkinen - Teemu Kerola Tehtävät, staattinen vs. dynaaminen partitiointi, Buddy System sivutus, segmentointi

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

Suoritin. Jakso 5 Suoritin ja väylä. TTK-91 muistin rakenne. TTK-91 suorittimen rakenne

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?

TKT-3201 Tietokonearkkitehtuuri 2. Luku 1: Tietokoneen abstraktiot ja tekniikka

NTÄ. Luento 8: SIIRRÄNT. Osio 3: Siirräntä ja tiedostojärjestelmä. ltö. Yleistä siirrännästä. Siirtonopeuksia (teoreettisia) Kuva 11.1.

Osio 3: Siirräntä ja tiedostojärjestelmä

D B. Levytiedostojen käsittely. Levytiedostojen käsittely

Tiedon tarkistus (4) Esimerkki ohjelmistotason tarkistusmerkistä (2) Tiedon muuttumattomuus (2)

Käännös, linkitys ja lataus

TKHJ:ssä on yleensä komento create index, jolla taululle voidaan luoda hakemisto

Tiedon tarkistus (4)

Tiedon tarkistus (4) Esimerkki ohjelmistotason tarkistusmerkistä (2) Tiedon muuttumattomuus (2)

Ongelma(t): Mistä loogisista lausekkeista ja niitä käytännössä toteuttavista loogisista piireistä olisi hyötyä tietojenkäsittelyssä ja tietokoneen

OSI ja Protokollapino

SISÄLLYS sisällys 1 Tietokoneen toimintaperiaate ja käyttö 2 Tietokoneen historia 3 Tietokoneen rakenteen ja toiminnan perusteet

Tiedon tarkistus (4) Esimerkki ohjelmistotason tarkistusmerkistä (2) Tiedon muuttumattomuus (2)

Käyttöjärjestelmät: poissulkeminen ja synkronointi

KÄYTTÖOHJE PEL / PEL-M

TK Palvelinympäristö

Transkriptio:

Välimuistin suorituskyvyn mittaus Oletetaan, että välimuistiosuman kustannukset on sisällytetty normaaliin CPU-jaksoon. Tällöin CPU time = IC CPI CC = IC (CPI ideal + Memory-stall cycles) CC CPI stall Muistin sakkausjaksot (stall) tulevat välimuistin hudeista (luku- ja kirjoitussakkausjaksojen lukumäärä) Read-stall cycles = reads/program read miss rate read miss penalty Write-stall cycles = (writes/program write miss rate write miss penalty) + write buffer stalls write-through välimuistille voidaan yksinkertaistaa: Memory-stall cycles = accesses/program miss rate miss penalty #38

#39 Välimuistin suorituskyvyn vaikutukset välimuistin sakon suhteellinen osuus kasvaa prosessorin suorituskyvyn parantuessa (nopeampi kello ja/tai alhaisempi CPI) Muistin nopeus ei todennäköisesti kasva yhtä nopeasti kuin prosessorin suorituskyky. Laskettaessa CPI stall -arvoa, välimuistin hudin sakko on hudin käsittelyyn kuluvien prosessorin kellojaksojen määrä Mitä alempi CPI ideal, sitä merkittävämpiä ovat sakkausjaksot Prosessorin CPI ideal = 2, hutisakko 100 jaksoa, ohjelmassa 36% load/store - käskyjä ja hutisuhde 2% I$ -viittauksissa ja 4% D$ -viittauksissa Memory-stall cycles = 2% 100 + 36% 4% 100 = 3.44 CPI stalls = 2 + 3.44 = 5.44 eli, 2x suurempi kuin CPI ideal! Jos CPI ideal laskisi 1:een? 0.5? 0.25? Jos D$ hutisuhde kasvaisi 1%? 2%? Jos kellotaajuus tuplattaisiin (tuplaisi hutisakon)?

Keskim. muistin hakuaika Average Memory Access Time (AMAT) Suuremmassa välimuistissa pidempi hakuaika. Osuma-ajan pidentyminen todennäköisesti lisää uuden tason liukuhihnaan ja jossain vaiheessa suuren välimuistin pidempi osuma-aika ylittää osumasuhteesta saatavan edun. keskim. muistin hakuaika ottaen huomioon sekä osumat että hudit AMAT = Time for a hit + Miss rate x Miss penalty Oletetaan prosessori, jossa 20 psec kellojakso, hutisakko 50 kellojaksoa, hutisuhde 0.02 hutia per käsky ja välimuistin hakuaika 1 kellojakso. Mikä on AMAT? #40

Hutisuhteen pienentäminen #1 ❶Salli joustavampi lohkojen sijoittelu Suorasijoitettavassa välimuistissa muistilohko kuvautuu ainoastaan yhteen välimuistilohkoon Toinen ääripää on sallia muistilohkon kuvautuvan mihin tahansa välimuistin lohkoon täysin assosiatiivinen välimuisti Kompromissi: jaetaan välimuisti joukkoihin, joista jokainen koostuu n:stä tiestä (n-tie joukkoassosiatiivinen) Muistilohko kuvautuu uniikkiin (indeksi-kentän määrittämään) joukkoon ja voidaan mihin tahansa tämän joukon sisällä (n vaihtoehtoa) (block address) modulo (# sets in the cache) #41

#42 Assosiatiivinen välimuisti

Assosiatiivisuus 8:n elementin välimuisti #43

Esimerkki Tarkastellaan viittauksia muistiin osoitteilla: Aloitetaan tyhjällä välimuistilla kaikissa lohkoissa validi-kenttä tilassa 0 4 0 4 0 4 0 4 epätosi 0 miss 4 miss 0 miss 4 miss 00 Mem(0) 00 01 Mem(0) 4 01 00 Mem(4) 0 00 01 Mem(0) 4 0 miss 4 miss 0 miss 4 miss 01 00 Mem(4) 0 00 01 Mem(0) 4 01 00 Mem(4) 0 00 01 Mem(0) 4 #45 8 pyyntöä, 8 hutia Hudeista johtuva ping pong efekti - kaksi muistipaikkaa kuvautuvat samaan välimuistin lohkoon

Set Esim. joukkoassosiatiivinen välimuisti välimuisti 0 1 Way 0 1 0 1 V Tag Q1: Onko data välimuistissa? Data Vertaa välimuistin joukon kaikkia tageja kolmeen ylimpään osoitebittiin, jotta nähdään onko data välimuistissa Päämuisti 0000xx 0001xx 0010xx 0011xx 0100xx 0101xx 0110xx 0111xx 1000xx 1001xx 1010xx 1011xx 1100xx 1101xx 1110xx 1111xx Yhden sanan lohkot 2 LSB-bittilä määrittää tavun sanan sisällä (32-bittiset sanat) Q2: kuinka data löydetään? Käytä yhtä muistibittiä määrittämään mistä joukosta data löytyy #46 joukko = (lohkon osoite) modulo (välimuistin joukkojen lukumäärä)

Esimerkki Tarkastellaan viittauksia muistiin osoitteilla: 000 Mem(0) 000 Mem(0) 0 4 0 4 0 4 0 4 Aloitetaan tyhjällä välimuistilla kaikissa lohkoissa validi-kenttä tilassa epätosi 0 miss 4 miss 0 hit 4 hit 010 Mem(4) 010 Mem(4) 000 Mem(0) 000 Mem(0) 010 Mem(4) 8 pyyntöä, 1 huti Ratkoo aiemman ping pong -efektin, koska nyt 2 muistipaikkaa, jotka kuvautuvat samaan välimuistin lohkoon, voivat molemmat olla välimuistissa! #48

4-tie joukkoassosiatiivinen välimuisti 2 8 = 256 joukkoa jokaisella tiellä (jokaisessa 1 lohko) Tag 22 Index 8 tavupoikkeama Index 0 1 2... 253 254 255 V Tag Data V Tag Data V Tag Data V Tag Data 0 0 0 Way 0 1 1 1 2 Way 1 2 Way 2 2 Way 3... 253 254 255... 253 254 255... 253 254 255 32 #49 Hit 4x1 select Data

Joukkoassosiatiivisen välimuistin laajuus Kiinteänkokoisessa välimuistissa assosiatiivisuuden kaksinkertaistaminen tuplaa lohkojen määrän joukossa (teiden lukumäärä) ja puolittaa joukkojen lukumäärän vähentäen indeksiä yhdellä bitillä ja kasvattaen tagi-kenttää yhdellä bitillä Käytetään tagi-vertailuun Valitsee joukon Valitsee sanan lohkon sisällä Tag Index Block offset Byte offset Vähenevä assosiatiivisuus suorasijoitettu (ainoastaan yksi tie) Lyhyemmät tagit, ainostaan yksi vertailijayksikkö kasvava assosiatiivisyys Täysin assosiatiivinen (ainoastaann yksi joukko) Tagi muodostuu kaikista osoitebiteistä paitsi lohkon ja tavun poikkeamat #50

Joukkoassosiatiivisen välimuistin kustannus Hudin tapahtuessa, minkä tien lohko valitaan korvattavaksi? Least Recently Used (LRU): korvataan lohko, jota on ollut käyttämättä pisimpään Tarvitaan laitteistoa, joka pitää kirjaa milloin kutakin lohkoa on käytetty suhteessa muihin joukon lohkoihin 2-tie joukkoassosiatiiviselle tarvitaan yksi bitti per joukko bitti asetetaan, kun lohkoon viitataan (ja samalla nollataan toisen tien bitti) N-tien joukkoassosiatiivinen välimuisti N vertailijaa (viive ja pinta-ala) MUX -viive (joukon valinta) ennen kuin data on saatavilla Data saatavilla joukon valinnan jälkeen (ja osuma/huti päätöksen jälkeen). Suorasijoitettavassa välimuistissa lohko on saatavilla ennen osuma/huti-päätöstä Ei voida olettaa osumaa ja jatkaa ja toipua myöhemmin, jos tapauksessa olikin huti #51

Joukkoassosiatiivisen välimuistin edut Valinta suorasijoitettavan ja joukkoassosiatiivisen välimuistin välillä riippuu hudin kustannuksesta verrattuna toteutuksen kustannukseen Miss Rate 12 10 8 6 4 2 4KB 8KB 16KB 32KB 64KB 128KB 256KB 512KB 0 1-way 2-way 4-way 8-way Data from Hennessy & Patterson, Computer Architecture, 2003 Associativity Suurin hyöty saavutetaan siirtymällä suorasijoitettavasta välimuistista 2- tie välimuistiin (20% + vähennys hutisuhteessa) #52

Hutisuhteen pienentäminen #2 ❷Käytä useampia välimuistitasoja IC-teknologian edistyessä piirillä on enemmän tilaa suuremman L1 -välimuistin tai toisen välimuistitason toteuttamiseen tai joissain tapauksissa jopa L3 -välimuisti. Normaalisti L2 välimuisti tukee sekä käskyjä että dataa Esim. CPI ideal = 2, hutisakko 100 jaksoa (päämuistiin) ja hutisakko 25 jaksoa (UL2$-välimuistiin), 36% load/store - käskyjä, 2% (4%) hutisuhde L1 I$ (D$) muistiviittauksiin. Lisätään 0.5% UL2$ -hutisuhde CPI stalls = 2 +.02 25 +.36.04 25 +.005 100 +.36.005 100 = 3.54 (verrattuna 5.44, joka saadaan ilman L2$-välimuistia) #53

Monitasoisen välimuistin suunnittelu L1 ja L2 välimuistin suunnnittelutavoitteet ovat erilaiset: Primäärivälimuistissa tavoitteena on osuma-ajan minimointi ja lyhyemmäm kellon jaksonajan tukeminen Pienempi muisti pienemmällä lohkokoolla Sekundäärivälimuistin tavoitteena on hutisuhteen minimointi päämuistin pitkän hakuajan aiheuttaman sakon pienentäiseksi Suurempi muisti suuremmalla lohkokoolla Korkeampi assosiatiivisuus L1-välimuistin hutisakko pienenee merkittävästi käytettäessä L2-muistia L1$ voi olla pienempi (eli nopeampi) mutta suuremmalla hutisuhteella L2 välimuistissa hutisuhde on tärkeämpi kuin osuma-aika L2$ osuma-aika määrittää L1$:n hutisakon L2$:n paikallinen hutisuhde >> globaali hutisuhde #54

Interaktio ohjelmiston kanssa Hudit riippuvat pitkälle muistinviittauskuviosta Algoritmi viittaa muistiin tietyssä järjestyksessä Kääntäjän optimoinnit muistiviittauksiin algoritmin valinnassa voi joutua huomioimaan kohdejärjestelmän välimuistin ominaisuudet #55

Välimuistin parametrejä L1 cache organization & size L1 associativity Intel Nehalem Split I$ and D$; 32KB for each per core; 64B blocks 4-way (I), 8-way (D) set assoc.; ~LRU replacement AMD Barcelona Split I$ and D$; 64KB for each per core; 64B blocks 2-way set assoc.; LRU replacement L1 write policy write-back, write-allocate write-back, write-allocate L2 cache organization & size Unified; 256MB (0.25MB) per core; 64B blocks Unified; 512KB (0.5MB) per core; 64B blocks L2 associativity 8-way set assoc.; ~LRU 16-way set assoc.; ~LRU L2 write policy write-back, write-allocate write-back, write-allocate L3 cache organization & size Unified; 8192KB (8MB) shared by cores; 64B blocks Unified; 2048KB (2MB) shared by cores; 64B blocks L3 associativity 16-way set assoc. 32-way set assoc.; evict block shared by fewest cores L3 write policy write-back, write-allocate write-back; write-allocate #56

Välimuistiohjaimen ohjaus Esimerkkivälimuistin piirteet suorasijoitettu, write-back, write allocate Lohkon koko: 4 words (16 bytes) Välimuistin koko: 16 KB (1024 blocks) 32-bittiset tavuosoitteet Valid - ja dirty -bitti per lohko lukitseva välimuisti CPU odottaa kunnes muistiviittaus suoritettu loppuun 31 10 9 4 3 0 Tag Index Offset 18 bits 10 bits 4 bits #57

Liitynnän signaalit Read/Write Read/Write Valid Valid Address 32 Address 32 CPU Write Data 32 Cache Write Data 128 Memory Read Data 32 Read Data 128 Ready Ready Useampi jakso per viittaus #58

Tilakone Tilakonetta käytetään askeltamaan ohjaukset Tilojen joukkko, transitio jokaisella kellosignaalin reunalla Tilat binäärikoodattuja Nykyinen tila talletettu rekisteriin Seuraava tila = f n (nykyinen tila, nykyiset sisäänmenot) ohjaussignaalit = f o (nykyinen tila) #59

4-tilainen välimuistin ohjain Idle Cache Hit Mark Cache Ready Valid CPU request Compare Tag If Valid && Hit Set Valid, Set Tag, If Write set Dirty Allocate Read new block from memory Memory Not Ready Cache Miss Old block is clean Memory Ready Cache Miss Old block is Dirty Write Back Write old block to memory Memory Not Ready #60

Välimuistin koherenssi, multicore Jos multicore prosessorissa, ytimet jakavat yhteisen fyysisen muistiavaruuden, aikaansaadaan välimuistin koherenssiongelma Read X Read X Core 1 Core 2 Write 1 to X L1 I$ L1 D$ L1 I$ L1 D$ X = 01 X = 0 Time step Event CPU A s cache CPU B s cache Memory 0 0 1 CPU A reads X 0 0 2 CPU B reads X 0 0 0 X = 01 Unified (shared) L2 3 CPU A writes 1 to X 1 0 1 #61

Koherentti muistijärjestelmä Mikä tahansa luku data-alkioon pitäisi palauttaa viimeiseksi kirjoitettu data-alkion arvo Koherenssi määrittää mitä arvoja lukuoperaatio voi palauttaa Kirjoitukset samaan osoitteeseen ovat sarjallisia (kaikkien prosesoreiden on nähtävä kaksi kirjoitusta samaan muistipaikkaan samassa järjestyksessä) Konsistenssi määrittää milloin lukuoperaatio palauttaa kirjoitetun arvon (milloin muut prosessorit näkevät kirjoituksen) #62

Välimuistin koherenssiprotokollat Tarvitaan laitteistoprotokolla välimuistin koherenssin takaamiseksi, suosituin snooping Välimuistin ohjain nuuskii väylää erillisellä osoite-tagi-laitteistolla ja päättelee löytyykö välimuistista kopio lohkosta, jota on pyydetty jaetusta muistista Kirjoituksenmitätöinti protokolla kirjoitus vaatii poissulkevan viittauksen ja mitätöi kaikki muut lohkon kopiot järjestelmässä Poissulkeva viittaus varmistaa, että alkiosta ei ole olemassa mitään muuta luettavaa tai kirjoitettavaa kopiota Jos kaksi prosessoria yrittää kirjoittaa samaan dataan samaan aikaan, toinen voittaa ja toisen kopio mitätöidään. Toisen prosessorin operaation loppuunsaattamiseksi, sen on haettava uusi kopio datasta, joka sisältää päivitetyn arvon sarjallistetut kirjoitukset #63

Esim. Nuuskiva mitätöinti Read X Read X Core 1 Core 2 Write 1 to X Read X L1 I$ L1 D$ L1 I$ L1 D$ X = 01 X = 01 I CPU activity CPU A reads X Bus activity Cache miss for X CPU A s cache CPU B s cache Memo ry 0 0 0 X = I 10 Unified (shared) L2 CPU B reads X CPU A writes 1 to X Cache miss for X Invalidate for X 0 0 0 1 0 CPU B read X Cache miss for X 1 1 1 #64

Yhteenveto: välimuistin suunnitteluavaruus Useita interaktiivisia ulottuvuuksia välimuistin koko lohkon koko assosiatiivisuus korvausmenetelmä write-through vs write-back write allocation Optimaalinen valinta on kompromissi Riippuu viittauksista (viittauskuvio) kuorma Käyttö (I-cache, D-cache, TLB) Riippuu käytetystä teknologiasta /kustannuksesta Yleensä yksinkertaisuus voittaa Cache Size Associativity Block Size Bad Good Factor A Factor B Less More #65