Gyorsítótár memória kiszámítása

Megtanulom a gyorsítótár memóriáinak logikáját. Kíváncsi lennék, hogy ellenőrizheti-e, hogy jól értettem-e. Ha a címke mezőben gyorsítótár található 16 bit van, a beállított mező 10 bitek és a bájt a blokk mezőben 6 bit, akkor csak ezekből az információkból tudok levezetni hogy a kapacitás 128 kbyte, és kétirányú asszociatív a 64 bájtos blokkmérettel, mert a blokkmezőben lévő bájtból 2⁶ = 64 bájt. 2¹ = 1024, de vajon megfelel-e valamilyen más kapacitás más asszociativitási számmal? p>

Megtudtam, hogy a képletek

blokkok száma = kapacitás / blokkméret

halmazok száma = blokkok száma / # asszociativitás

Ezért Megduplázhatnám az asszociativitást négyutasra, de egy négyutas gyorsítótárral nem tudtam megfelelni a követelményeknek, mert Ehhez további bitszámra van szükség a beállított mezőben.

Jól értettem?

Válasz

Ez a kép segít megérteni az asszociatív gyorsítótárak működését szerkezetileg?

ide írja be a kép leírását , amelyet a itt

Dióhéjban a blokkeltolás bitek határozzák meg a blokk méretét (hány bájt van a gyorsítótár sorában, hány oszlop van, ha akarja). Az indexbitek meghatározzák, hogy hány sor van az egyes halmazokban. A gyorsítótár kapacitása ezért 2 ^ (blockoffsetbits + indexbits) * # set. Ebben az esetben 2 ^ (4 + 4) * 4 = 256 * 4 = 1 kilobájt.

Ugyanolyan méretű gyorsítótárhoz (kapacitáshoz), ha négyutasról két- kétutas asszociatív, ezt megteheti úgy, hogy megduplázza az egyes halmazok sorait, vagy megduplázza az egyes halmazok oszlopait, vagyis megduplázza a gyorsítótár sorainak számát, vagy megduplázza a blokk méretét.

Ha úgy döntene, hogy megduplázza a sorok számát, akkor a 12 bites címét 5 bites indexre és 4 bites blokkeltolásra bontja, így 3 bites címke marad.

Ha a blokkméret kétszeresét választaná, akkor a 12 bites címét 4 bites indexre, 5 bites blokkeltolásra bontaná, és 3 bites címkét hagyna.

Az ismétléshez tehát azt gondolom, hogy az asszociatív gyorsítótárak irányadó képletei a következők:

Cache Capacity = (Block Size in Bytes) * (Blocks per Set) * (Number of Sets) Index Bits = LOG2(Blocks per Set) Block Offset Bits = LOG2(Block Size in Bytes) Tag Bits = (Address Bits) - (Index Bits) - (Block Offset Bits) 

Az eredetileg megfogalmazott példában nem teszem meg ” nem hiszem, hogy abo feltételezés nélkül levezetheted a cache méretét a megfelelő címbit mezők nagysága alapján az asszociativitás. Ha kétirányú asszociatív, akkor azt mondhatja:

Gyorsítótár kapacitása = (2 ^ 6) * (2 ^ 10) * (2) = 2 ^ 18 = 2 ^ 8 kilobájt = 256 kilobájt. Nem vagyok biztos benne, hogyan jött létre 128 kilobájt. Ez lenne a helyzet, ha egyirányú asszociatív (közvetlen leképezett) lenne.

128 KB (2 ^ 17 bájt) gyorsítótár kapacitás esetén: négyutas 64-bájtos blokkméretű asszociatív gyorsítótárat készíthet a következő mondattal: , és a többi (19) tag bit.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük