Включено ли смещение байта с «адресом блока» при кэшировании? - PullRequest
0 голосов
/ 26 ноября 2018

Я мучаюсь с домашней работой, и этот вопрос продолжает преследовать меня.Я все делаю неправильно?

Я принял позицию, что «адрес блока» является частью этих 32-битных эталонных адресов (приведенных в большинстве задач), которые не включают в себя наименее значимые биты, используемыев качестве байтового смещения (часть, полезная для выбора слова (или байта) в блоке.

Для демонстрации, скажем, мы используем кэш с прямым отображением и дан 32-битный ссылочный адрес, такой как 0000 0000 0000 0000 1111 1100 0001 1100и что тег равен 24 битам, индекс равен 6 битам, а смещение равно 2 битам.

В моем учебнике («Организация и дизайн компьютеров: издание MIPS») говорится, что блок, к которому привязан данный адрес, напрямуюсопоставленный кеш находится с помощью (block address) modulo (number of blocks in the cache). Если я включу смещение в это вычисление как часть «адреса блока», результирующий блок, который я бы обозначил как хит / мисс / хранилище, будет сильно отличаться от того, который был бы у меня.

Таким образом, мне было бы легко узнать, знает ли кто-нибудь, является ли «адрес блока» просто еще одним термином для «адреса» (всего 32-битного эталона) или это означает, что ядумаю, что это означает, что является объединением тега и индекса (не более).Кто-нибудь знает?

1 Ответ

0 голосов
/ 01 декабря 2018

Поскольку mips использует слова для адресации, все адреса имеют длину 30 битов, а 2 дополнительных бита установлены в 0 (смещение байта в конце).Смещение блока - это следующие 2 бита, за которыми следует адрес блока:

XXXX XXXX XXXX XXXX XXXX XXXX XXXX WW00

  • 00 это смещение слова, обычно бесполезное в мипах, как обычноне используйте байты
  • WW это смещение блока, используется для определения, какое слово выбрать (при условии, что длина блока составляет 4 слова)
  • XX.. адрес блока,это прямой адрес блока памяти, который содержит 4 слова и, следовательно, 4x4 = 16 байт.

Когда вы говорите об адресе блока, вы говорите о первых 28 битах адреса, а остальныетолько смещения для других приложений.

  • адрес байта - все 32 бита
  • адрес слова - первые 30 бит
  • адрес блока - первые 28 бит (или меньше)если вы хотите иметь более крупные блоки)

Теги и индексы вступают в игру только при разговоре о кеше, в этот момент вы смотрите на адрес блока (в данном случае 28 бит) и выбираете свой теги индекс только из этой части, смещенияиспользуется только после доступа к кешу.

  1. Получить тег и индекс с адреса блока
  2. Взять смещение блока, чтобы получить слово (например, с использованием 32x4-1-MUX)
  3. Переместить слово в регистр назначения
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...