Wikipédia:Tudakozó/Archívum/2020-11-18

Mi a különbség a szektor cache és a csoport-asszociatív cache között?

szerkesztés
  Ez a kérdés még nyitott. Ha tudod a választ és a forrást is meg tudod adni, akkor kattints a szakaszcím mellett a [szerkesztés] feliratra.
Ha új kérdést akarsz feltenni, kattints ide!

A definíciója teljesen más, de csak másképp van megfogalmazva ugyanaz! Legyen a blokkméret = vonalméret 64 byte: a cím alsó 6 bitjét nem kell tárolni. Legyen 64 KB cache: 1024 blokk, mindhez tárolni kell a cím többi bitjét. Olvasáskor és íráskor is adott a cím, kell a cache-beli blokk sorszáma, vagyis a címe: 1024 címösszehasonlító áramkör kell. Ez sok, és sok hőt is termel. Megoldás: negyedeljük az összehasonlító áramkörök számát: 256 darab legyen, így 1 áramkörhöz 4 blokk tartozik, így 4 cím hogy azok hol vannak a memóriában: egy 2 bites címző egység is kell mind a 256 darab összehasonlító áramkörhöz. Vagyis 4 darab 16 KB-os teljesen asszociatív cache-ünk van. A cím alsó 6 bitjét nem tároljuk, további 2 bit döntse el hogy a 4 közül melyikbe kerüljön: 256 byte-os egységekre bontva a memóriát, egyenletesen kell eloszlania hogy melyik 64 byte-os része van a cache-ben, hogy jó legyen a cache kihasználtsága. Ez egy csoport-asszociatív cache: nem tudom, hogy 256 utas, vagy 4 utas. Csakhogy ez egyben szektor cache is! Ugyanis a cím egyes bitjei adják a blokkcsoportot, más bitjei a blokkcsoporton belüli blokk számát: e 2 között nincs sorrend! A szócikk szerint csak a sorrend a különbség: először az egyik, azon belül a másik szerint: csakhogy nincs először, nincs azon belül: ez olyan minthogy a+b = b+a: nincs sorrend! Egyik meghatározza az egyiket, a másik a másikat, egyszerre, párhuzamosan! Legfeljebb az lehet a különbség, hogy a cím melyik 2 bitjét használjuk a 2 bites címzőáramkörnek címként: az alsó 6 bitet nem tároljuk, cím megmaradó részének alsó 2 bitje kell: másképp felesleges: semmi előnye, de hátrányos, ha nem egyenletes az eloszlás. A szócikk szerint csoport-asszociatív cache esetén több teljesen asszociatív cache-ünk van, de egyszerre csak 1-et használunk! Ekkor nem spórolunk a címösszehasonlító áramkörökkel, csak kevesebb hőt termel. Ugyanazt a hatást érjük el, ha csak 1 teljesen asszociatív cache-hez van címösszehasonlító áramkör készletünk, és mindhez van 1-1 2 bites címzőáramkör, mellyel kiválasztjuk hogy a 4 közül melyik címmel hasonlítsa össze. Nyilván ezt a 2 bitet se kell tárolni. Ez viszont pont a szektor cache! A cache-ek általában képesek egyszerre több műveletet végezni, például több olvasást egyszerre, mindnek saját címe van: mintha több cache lenne! Ekkor már értelmes lehet hogy megvan mind az 1024 címösszehasonlító áramkör, de 4 részre van osztva, így egyszerre akár 4 olvasást/írást is lehet végezni a cache-en. Lehet hogy ez lenne a különbség? Tehát az áramkörökkel és a termelt hővel se spórolunk, de lehetővé tesszük egyszerre több művelet végzését. A processzorok hőtermelését figyelembe véve ez tűnik a legreálisabbnak, hiszen piszkosul melegszenek. Vagyis csoport-asszociatív cache-nél lehet egyszerre több művelet is, szektor cache-nél meg csak 1-et. Elvileg lehetne a 2 kombinációja is: 512 címösszehasonlító áramkör, egyszerre 2 művelet. Ekkor el kell dönteni, hogy a 2 bit közöl melyik melyik legyen: ha az alsó, vagyis a 6. bit szerint döntjük el hogy melyik 256 blokkos csoport legyen, akkor az egyszerre 2 műveletnél elég ha 128 B-on belül egyenletes az eloszlás, persze a jó cache-kihasználtsághoz ekkor is 256 byte-on belüli egyenletes eloszlás kell. Ez tűnik a jobbnak: az egyszerre több műveletnél legyen jobb. A Fujitsu A64FX integrált áramkörnek 256 B-os blokkjai vannak, vagyis csak 256 blokkja van: 64 KB L1 adat + 64 KB L1 kód cache van magonként. És nem fogyaszt sok áramot. Ezalapján is nekem úgy tűnik, hogy ez lesz a különbség magyarázata. Mondjuk rakhattak volna mindhez egy 4 bites címzőáramkört, ekkor 16 B-os lenne a vonalméret: ez pont a 2 cache-típus kombinációja. Köszönöm aki tud segíteni!
--94.27.132.186 (vita) 2020. november 18., 17:28 (CET)[válasz]