Сколько битов находится в поле адреса для непосредственно отображенного кэша?

Это вопрос, основанный на Direct Mapped Cache, поэтому я предполагаю, что здесь тоже можно задать вопрос.

Вот проблема, над которой я работаю:
Проблема: "Высокоскоростная рабочая станция имеет 64-битные слова и 64-битные адреса с разрешением адресов на уровне байтов. Предполагая, что кэш с прямым отображением содержит 8192 64-байтовые строки, сколько битов в каждом из следующих полей адреса для кэша? 1) байт 2) индекс 3) тег?

Сначала я определил термины в этой задаче и использовал другой вопрос Stack Overflow Direct Mapped Cache и мой другой вопрос о кэшировании в качестве ссылок (Пожалуйста, исправьте меня, если какое-либо из моих определений неверно)

  • 64-битные слова - процессор может обрабатывать 64-битные одновременно
  • 64-битные адреса с адресацией на уровне байтов - в ОЗУ имеется 2^64 ячеек памяти, и каждая ячейка памяти хранит байт.
  • Кэш высокоскоростной и разбит на строки кеша
  • Непосредственно сопоставленный кэш - это место, где блок оперативной памяти отображается в одну строку кэша (не уверен в значимости этого

Теперь работа с Direct Mapped Cache в качестве ссылки

  1. Байт - поскольку байтовая строка состоит из 64 байтов, вам нужно 6 бит, чтобы идентифицировать один байт в этой байтовой строке
  2. Индекс - поскольку имеется 8192 "строки" байтовых строк, вам нужно как минимум 10 бит для идентификации каждой строки

Теперь вот та часть, где я застрял. В другом посте говорилось: "Все остальные биты являются битами TAG". в то время как в этом лекционном сообщении говорилось: "Каждая строка имеет тег, который указывает адрес в M, с которого была скопирована строка". Я предполагаю, что М означает ОЗУ.

Итак, здесь все остальные биты будут 64 - 6 - 10 = 48 бит. Но разве вам не нужны все 64 бита в TAG, чтобы указать, из какой области памяти в ОЗУ поступили данные в кеше? Может кто-то прояснить путаницу у меня здесь?

1 ответ

Решение

После просмотра этого видео я смог понять это. (Очень рекомендую это видео)
Пожалуйста, поправьте меня, если что-то из этого не так

Всего адрес имеет 64 бита. Теперь для разных компонентов адреса кеша

  • Байт - в байтовой строке 64 байта. Слово имеет длину 64 бита или 8 байтов. Поэтому строка байтов может содержать 8 слов. Поскольку вам нужно определить, какое слово должно быть обработано (процессор обрабатывает одно слово за раз), вам понадобится 3 бита для этого
  • Индекс - вам нужно определить, к какой строке кэша относится адрес. Благодаря комментарию @Leeor, вам понадобится 13 бит, чтобы сделать это, потому что есть 8192 строки кэша
  • Tag - остальные биты для TAG. Это будет 64 - 3 - 13 = 48 бит
Другие вопросы по тегам