Offercache - Victim cache
En offercache er en lille, normalt fuldt associerende cache placeret i genopfyldningsstien til en CPU-cache, der gemmer alle blokke, der er udskrevet fra det niveau af cache, oprindeligt foreslået i 1990. I moderne arkitekturer udføres denne funktion typisk af niveau 3 eller Niveau 4 cacher.
Oversigt
Offercaching er en hardwareteknik til forbedring af ydeevnen for cacher foreslået af Norman Jouppi . Som nævnt i hans papir:
Miss caching placerer en fuldt associerende cache mellem cachen og dens genudfyldningssti. Ulykker i cachen, der rammer i miss-cachen, har en en-cyklus-straf, i modsætning til en mange-cykel-miss-sanktioner uden miss-cachen. Victim Caching er en forbedring af miss cache, der indlæser den lille fuldt associerende cache med offer for en miss og ikke den ønskede cache-linje.
En offercache er en hardwarecache designet til at mindske konfliktmisser og forbedre hitlatens for direkte kortlagte cacher. Det bruges ved genopfyldningsstien til en niveau 1-cache, således at enhver cache-linje, der bliver kastet ud af cachen, er cache i offerets cache. Således bliver offerets cache kun befolket, når data smides ud af niveau 1-cache. I tilfælde af en miss i niveau 1, bliver den ubesvarede post slået op i offerets cache. Hvis den resulterende adgang er et hit, byttes indholdet af niveau 1-cache-linjen og den matchende offer-cache-linje.
Selvom det oprindeligt blev foreslået af Jouppi for at forbedre cacheydelsen for et direkte kortlagt cache niveau 1, anvender moderne mikroprocessorer med cache-hierarki på flere niveauer niveau 3 eller niveau 4-cache til at fungere som offercache for cachen, der ligger over det i hukommelseshierarkiet. Intels Crystal Well af sine Haswell-processorer introducerede en niveau 4-cache på pakken, der fungerer som et offercache til processorens niveau 3-cache. En 4–12 MB niveau 3 cache bruges som offercache i POWER5 (IBM) mikroprocessorer.
Baggrund
Da hardware-arkitektur og teknologi avancerede, voksede processorens ydeevne og frekvens meget hurtigere end hukommelsescyklustiderne, hvilket førte til et stort hul i ydeevne. Problemet med at øge hukommelseslatens i forhold til processorhastighed er blevet behandlet ved at tilføje hurtighukommelseshukommelse.
Direkte kortlagte cacher har hurtigere adgangstid end sæt-associerende cacher. Imidlertid; når flere cache-blokke i hukommelsen kortlægges til den samme cache-linje i en direkte kortlagt cache, ender de med at kaste hinanden ud, når nogen af dem er tilgængelige. Dette er kendt som cache-konflikt-problemet. Dette problem løses ved at øge cacheens associativitet. Men der er en grænse, som associativitet kan øges på grund af kompleksiteten i dens implementering. Således anvendes offercache til løsning af cache-konfliktproblemet for en cache med begrænset associativitet.
Implementering
Opførelsen af et offer cache i dets respektive interaktion med det tilsvarende niveau cache er angivet nedenfor:
Cache-hit: Ingen handling
Cache Miss, Victim Hit: Blokken er i offerets cache, og den i cachen erstattes med hinanden. Denne nye post i offerets cache bliver den sidst anvendte blok.
Cache Miss, Victim Miss: Blokken bringes til cache fra næste niveau. Blokken, der udkastes fra cachen, gemmes i offercache.
Eksempel:
Antag, at en direkte kortlagt L1-cache med blokke A, B peger på det samme sæt. Det er knyttet til en fuldt associerende cache med to poster med blokke C, D i den.
Sporet, der skal følges: A, B, A, B ...
Fra diagrammet kan vi se, at i tilfælde af offercache (VC) rammer byttes blok A og B. Den senest anvendte blok af VC forbliver som den er. Derfor giver det en illusion af associativitet til den direkte kortlagte L1-cache, hvilket igen reducerer konfliktmisserne.
I tilfælde af to caches, L1 og L2 med eksklusiv cache- politik (L2 cache ikke det samme hukommelsesplaceringerne som L1), fungerer L2 som offerets cache for L1.
Implikation af ydeevne
Mens du måler præstationsforbedring ved hjælp af offercache, antog Jouppi en niveau-1 direkte kortlagt cache udvidet med en fuldt associerende cache. For den testpakke, der blev brugt af ham, viste det sig i gennemsnit, at 39% af niveau-1-data-cache-ulykker var konflikt-ulykker, mens i gennemsnit 29% af niveau-1-instruktions-ulykker viste sig at være konflikt-ulykker. Da konfliktafsigelser udgør en stor procentdel af det samlede antal misser, vil tilvejebringelse af yderligere associativitet ved at udvide niveau 1-cachen med et offercache bundet til at forbedre den samlede missrate markant.
Eksperimentelle resultater udledes ved at overveje en 32-Kb Direct-Mapped, 2-vejs og fuldt associerende cache forstærket med en 256 blok (8 KB) offercache og køre på den 8 tilfældigt udvalgte SPEC 95-benchmarks. Selvom resultaterne ikke kan generaliseres for alle benchmarks, giver tilføjelse af en offercache en reduktion af fejlfrekvensen fra 10% til 100% for al cache-konfiguration. Afkastene synes dog at udjævne sig ud over offerets cache-størrelse på 50 blokke, hvilket beviser Jouppis observation, at fordelene ved offerets cache når et plateau efter de første par offerblokke.
Reduktion af mangelfrekvens for en 64 KB cachestørrelse viser sig at være signifikant lavere, hvilket viser, at offerets caching ikke er uendelig skalerbar.
Under sammenligning af forskellige cache-konfigurationer blev det konstateret, at tilføjelse af et lille offer cache i visse tilfælde kan give ydelsesfordele svarende til det, der observeres ved at gange cache-størrelsen med 2.