Soudržnost mezipaměti založená na adresáři - Directory-based cache coherence

V počítačové techniky , adresář založený na vyrovnávací soudržnost je typ mezipaměti koherence mechanismu , kde jsou seznamy použitých pro správu cache namísto Snoopy metod vzhledem k jejich škálovatelnost. Metody snoopingu sběrnice se kvůli použití vysílání špatně rozšiřují . Tyto metody lze použít k cílení jak na výkon, tak na škálovatelnost adresářových systémů.

Plně bitový vektorový formát

Schéma formátu úplného vektorového adresáře, kde E = Exkluzivní, S = Sdílené, M = Upravené a U = Bez mezipaměti

Ve full bitovém vektorovém formátu se pro každý možný řádek mezipaměti v paměti používá bit ke sledování, zda má každý jednotlivý procesor tento řádek uložený ve své mezipaměti . Plně bitový vektorový formát je nejjednodušší struktura k implementaci, ale nejméně škálovatelná. SGI Origin 2000 používá kombinace plné bitový vektor a hrubé bitový vektor v závislosti na počtu procesorů.

Každá položka adresáře musí mít 1 bit uložený na procesor na řádek mezipaměti spolu s bity pro sledování stavu adresáře. To vede k tomu, že celková požadovaná velikost je (počet procesorů) × počet řádků mezipaměti , což má poměr režie úložiště (počet procesorů) / (velikost bloku mezipaměti × 8) .

Je možné pozorovat, že režijní náklady adresáře se lineárně mění s počtem procesorů. I když to může být dobré pro malý počet procesorů, při implementaci ve velkých systémech se požadavky na velikost adresáře stanou nadměrnými. Například s velikostí bloku 32 bajtů a 1024 procesorů se poměr režie úložiště stane 1024 / (32 × 8) = 400%.

Hrubý vektorový formát bitů

Schéma hrubého bitového vektorového formátu adresáře

Hrubý vektorový formát bitů má podobnou strukturu jako plný bitový vektorový formát, ačkoli namísto sledování jednoho bitu na procesor pro každý řádek mezipaměti adresář seskupuje několik procesorů do uzlů a ukládá, zda je řádek mezipaměti uložen v uzlu spíše než a čára. To zlepšuje požadavky na velikost na úkor úspory provozu sběrnice (procesory na uzel) × (celkem řádků) bitů prostoru. Poměr režie je tedy stejný, stačí nahradit počet procesorů počtem procesorových skupin. Když je zadán požadavek na sběrnici pro linku mezipaměti, kterou má jeden procesor ve skupině, adresář vysílá signál do každého procesoru v uzlu, nikoli pouze do mezipamětí, které jej obsahují, což vede ke zbytečnému provozu do uzlů, které nemají data uloženo do mezipaměti.

V tomto případě položka adresáře používá 1 bit pro skupinu procesorů pro každý řádek mezipaměti. Pro stejný příklad jako formát Full Bit Vector vezmeme-li 1 bit pro 8 procesorů jako skupinu, pak bude režie úložiště 128 / (32 × 8) = 50%. Toto je významné zlepšení oproti formátu Full Bit Vector.

Řídký formát adresáře

Mezipaměť ukládá pouze malou podmnožinu bloků do hlavní paměti v určitou dobu. Proto většina položek v adresáři bude patřit do bloků bez mezipaměti. Ve formátu řídkého adresáře se plýtvání snižuje ukládáním pouze bloků v mezipaměti do adresáře. Zvažte procesor s velikostí mezipaměti 64 kB s velikostí bloku 32 bajtů a velikostí hlavní paměti 4 MB. Maximální počet položek, které může mít adresář ve formátu řídkého adresáře, je 2048. Pokud má adresář položku pro všechny bloky v paměti, bude počet položek v adresáři 131072. Je tedy zřejmé, že vylepšení úložiště poskytovaný řídkým formátem adresáře je velmi významný.

Číslově vyvážený formát binárního stromu

V tomto formátu je adresář decentralizován a distribuován mezi mezipaměti, které sdílejí blok paměti. Různé mezipaměti, které sdílejí blok paměti, jsou uspořádány ve formě binárního stromu . Mezipaměť, která nejprve přistupuje k bloku paměti, je kořenový uzel . Každý blok paměti má informace o kořenovém uzlu (HEAD) a poli čítače sdílení (SC). Pole SC má počet mezipamětí, které sdílejí blok. Každá položka mezipaměti má ukazatele na další sdílené mezipaměti známé jako L-CHD a R-CHD. Podmínkou pro tento adresář je, že binární strom by měl být vyvážený podle počtu, tj. Počet uzlů v levém dílčím stromu musí být stejný nebo větší než počet uzlů v pravém podstromu. Všechny podstromy by také měly být číselně vyvážené.

Zřetězený formát adresáře

V tomto formátu paměť obsahuje ukazatel adresáře na nejnovější mezipaměť, která přistupovala k bloku, a každá mezipaměť má ukazatel na předchozí mezipaměť, která přistupovala k bloku. Takže když procesor odešle požadavek na zápis do bloku v paměti, procesor pošle zneplatnění dolů po řetězci ukazatelů. V tomto adresáři, pokud je blok cache nahradil musíme přejít na seznam s cílem změnit adresář, který zvyšuje latence . Aby se tomu zabránilo, jsou nyní široce používány dvojnásobně propojené seznamy, ve kterých má každá kopie v mezipaměti odkazy na předchozí a další mezipaměť, která přistupuje k bloku.

Omezený formát ukazatele

Omezený formát ukazatele používá pro sledování procesorů, které ukládají data do mezipaměti, nastavený počet ukazatelů. Když nový procesor ukládá do mezipaměti blok, je vybrán volný ukazatel z fondu, který ukazuje na tento procesor. Existuje několik možností pro zpracování případů, kdy počet sdílejících přesahuje počet volných ukazatelů. Jednou z metod je zneplatnění jednoho ze sdílejících uživatelů pomocí jeho ukazatele pro nového žadatele, i když to může být nákladné v případech, kdy má blok velký počet čteček, například zámek. Další metodou je mít pro všechny bloky k dispozici samostatný fond volných ukazatelů. Tato metoda je obvykle účinná, protože počet bloků sdílených velkým počtem procesorů není obvykle příliš velký.

Reference