Расчет позиции и тега адреса памяти в кеше - PullRequest
0 голосов
/ 18 января 2019

Я хочу знать, правильно ли я решил эту проблему с кешем с прямым отображением. Мне нужно рассчитать положение блока в кеше и найти его тег.

Учитывая, что CACHE имеет 1024 BLOCK и что в каждом блоке 64 байта, в какой позиции CACHE будет храниться адрес 5C892D0 (hex)?

Адрес 5C892D0 в двоичном коде:

101 1100 1000 1001 0010 1101 0000.

Поскольку в каждом блоке 512 бит, я знаю, что самые правые 9 бит (2 ^ 9 = 512) - это позиция в ГЛАВНОЙ ПАМЯТИ, а предыдущие 10 бит (2 ^ 10 = 1024) - это позиция в CACHE. , Остальные биты образуют тег.

Таким образом, позиция блока в CACHE этого адреса равна 0001001001 или 73-му BLOCK в CACHE, а TAG равен 10111001.

1 Ответ

0 голосов
/ 19 января 2019

В ваших вычислениях есть небольшая ошибка

Поскольку в каждом блоке 512 бит, я знаю, что самые правильные 9 бит (2 ^ 9 = 512)

Блоки имеют размер 64 байта. Младшие биты относятся к смещению, которое указывает позицию байта в блоке, и требуется только 6 бит. Вы учли количество бит (512 = 64x8), но адреса это байт адресов, и это неверно.

Вы правы, 10 следующих битов - это индекс, который выбирает блок из 1024 в кеше прямой карты.

А тег состоит из оставшихся битов

Следовательно смещение = 01 0000

индекс = 1001001011 = 587

Tag = 0101 1100 1000

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...