Wat is het verschil tussen conflictmisser en capaciteitsmisser

Er treedt een capaciteitstekort op omdat blokken uit de cache worden verwijderd omdat de cache niet alle blokken kan bevatten die nodig zijn voor de uitvoering van het programma (de werkset van het programma is veel groter dan de cachecapaciteit).

Conflictmissers treden op in het geval van set-associatieve of direct toegewezen blokplaatsingsstrategieën, conflictmissers treden op wanneer meerdere blokken worden toegewezen aan dezelfde set of hetzelfde blokframe; ook wel botsingsmissers of interferentiemissen genoemd.

Zijn ze eigenlijk heel nauw verwant?

Als bijvoorbeeld alle cacheregels zijn gevuld en we een leesverzoek hebben voor geheugen B, waarvoor we geheugen A moeten verwijderen.

Dus moet het worden beschouwd als een capaciteitsmisser omdat we niet genoeg ruimte hebben? En als we later toegang willen krijgen tot geheugen A, en omdat het eerder is verwijderd, wordt het beschouwd als een conflictmisser.

Begrijp ik dit goed? Bedankt


Antwoord 1, autoriteit 100%

Het belangrijke onderscheid hier is tussen cache-missers die worden veroorzaakt door de grootte van uw dataset, en cache-missers die worden veroorzaakt door de manier waarop uw cache en gegevensuitlijning zijn georganiseerd.

Laten we aannemen dat je een 32k direct toegewezen cache hebt, en overweeg de volgende 2 gevallen:

  1. Je herhaalt herhaaldelijk een 128k-array. De gegevens kunnen op geen enkele manier in die cache passen, daarom zijn alle missers capaciteitsfouten (behalve de eerste toegang van elke regel die een verplichte misser is en zou blijven, zelfs als je je cache oneindig zou kunnen vergroten).

  2. Je hebt 2 kleine 8k-arrays, maar helaas zijn ze beide uitgelijnd en toegewezen aan dezelfde sets. Dit betekent dat hoewel ze in theorie in de cache zouden kunnen passen (als je je uitlijning corrigeert), ze niet de volledige cachegrootte zullen gebruiken en in plaats daarvan strijden om dezelfde groep sets en elkaar afranselen. Dit zijn conflictmissers, omdat de gegevens zouden kunnen passen, maar nog steeds botsen vanwege de organisatie. Hetzelfde probleem kan optreden met associatieve set-caches, hoewel minder vaak (laten we zeggen dat de cache 2-weg is, maar je hebt 4 uitgelijnde datasets…).

De twee typen zijn inderdaad verwant, je zou kunnen zeggen dat je, gezien een hoge mate van associativiteit, set-skewing, juiste gegevensuitlijning en andere technieken, de conflicten zou kunnen verminderen, totdat je meestal echte capaciteitsmissers overhoudt die onvermijdelijk zijn.


Antwoord 2, autoriteit 38%

Mijn favoriete definitie van conflictmissers uit Reducing Compulsory and Capacity missersdoor Norman P. Jouppi:

Conflictmissers zijn missers die niet zouden optreden als de cache was
volledig associatief met LRU-vervanging.

Laten we een voorbeeld bekijken. We hebben een direct toegewezen cache met een grootte van 4. De toegangsreeksen zijn

0(verplicht missen), 1(verplicht missen), 2(verplicht missen), 3(verplicht missen), 4(verplicht
miss), 1(treffer), 2(treffer), 3(treffer), 0(capaciteitsmisser), 4(capaciteitsmisser), 0(conflictmisser)

De op één na laatste 0 is een capaciteitsmisser, want zelfs als de cache volledig associatief zou zijn met de LRU-cache, zou dit nog steeds een misser veroorzaken omdat 4,1,2,3 worden geopend vóór de laatste 0. De laatste 0 is echter een conflict missen omdat in een volledig associatieve cache de laatste 4 1 in de cache zouden hebben vervangen in plaats van 0.


Antwoord 3, autoriteit 20%

Verplichte misser:wanneer een blok van het hoofdgeheugen een nieuwe lege regel van de cache probeert te bezetten en de allereerste toegang tot een geheugenblok dat in de cache moet worden gebracht, wordt verplichte miss genoemd.

p>

Conflict-miss:als er nog steeds lege regels in de cache zijn, is het blok van het hoofdgeheugen in conflict met de reeds gevulde regel van de cache, dwz zelfs als er een lege plaats beschikbaar is, probeert het blok om de reeds gevulde lijn te bezetten. het heet conflict juffrouw.

Capacity Miss:Miss is opgetreden wanneer alle regels van de cache zijn gevuld.

conflict-misser treedt alleen op in direct toegewezen cache en set-associatieve cache. Omdat bij associatieve mapping geen enkel blok van het hoofdgeheugen de reeds gevulde regel probeert te bezetten.

Other episodes