Задаване на асоциативен кеш: Изчисляване на размера на етикета?

Затруднявам се да реша този въпрос, огледах се, но всички подобни въпроси са по-напреднали от моя, като се използват регистрационни файлове, това е по-напреднало, отколкото сме правили в нашия клас. Ето го въпроса:

Да предположим, че имате 4-посочен асоциативен кеш, който има общо 4096 байта кеш памет и всеки кеш ред е 128 байта. Колко комплекта има този кеш? Ако паметта е адресируема с байтове и адресите са 16 бита, тогава колко байта се използват за тага?

Ето какво имам досега:

4096/128 = num lines

4096/128/4 = 8 = num sets (всеки набор е 4 реда в 4-посочен набор асоциативно)

И така, трябват 3 бита, за да изберете набор (2^3=8)

Остават ни 16-3 = 13 bits за етикета и думата.

Тъй като въпросът гласи, че паметта е адресируема с байтове, мисля, че това означава, че думата е дълга 8 бита (= 1 байт) и следователно етикетът е 16-3-8 = 5 бита дълъг.

Въпреки че не съм съвсем сигурен в това. Някой има ли решение на този проблем?


person janderson    schedule 11.06.2014    source източник


Отговори (2)


Ако паметта е байт адресируема

Това твърдение просто ни казва, че основната памет е байт адресируема, т.е., архитектури, където данните могат да бъдат достъпни 8 бита наведнъж, независимо от ширината на данните и адресните шини.

Това не влияе на броя битове, които етикетът има.

Решение:

4-посочен набор асоциативен

Обща кеш памет = 4096 байта

Размер на блока (кеш линия) = 128 байта

Брой редове на кеша = 4096 / 128 = 32 реда

Брой комплекти в кеша = 32 / 4 = 8 комплекта

╔════════════════════════════╗
║       16 bit address       ║
╠══════════╤════════╤════════╣
║ tag bit? │ 3 bits │ 7 bits ║
╚══════════╧════════╧════════╝

Отместване на думата = log28 = 3 бита

Задаване на отместване = log2128 = 7 бита

Отговор:

Таг бит = 16 - ( 3 + 7 ) = 6 бита

╔══════════════════════════╗
║      16 bit address      ║
╠════════╤════════╤════════╣
║ 6 bits │ 3 bits │ 7 bits ║
╚════════╧════════╧════════╝
person Alwyn Mathew    schedule 03.06.2016

  • капацитетът на кеша е 4096 байта означава (2^12) байта.

  • Всеки блок/ред в кеша съдържа (2^7) байта

-следователно броят на редовете или блоковете в кеша е:(2^12)/(2^7)=2^5 блокове или редове в кеша

  • Тъй като е 4-посочен асоциативен набор, всеки набор съдържа 4 блока, броят на наборите в кеша е: (2^5)/2^2 = 2^3 комплекта има. така че от тях разбрахме, че са необходими 3 бита за адресиране на отместването на набора.

  • Тъй като е байт адресируем, за адресиране на байт отместване са ни необходими 7 бита, тъй като имаме 128(2^7) байта във всеки блок.

  • Останалите 6 бита ще бъдат разпределени за етикет.

person Nagashayan reddy    schedule 15.06.2021