Как рассчитать количество тегов, индексов и битов смещения разных кешей?

18

В частности:

1) Кэш прямого отображения с 4096 блоками / строками, в котором каждый блок содержит 8 32-битных слов. Сколько бит нужно для полей тегов и индексов, предполагая 32-битный адрес?

2) Тот же вопрос, что и 1), но для полностью ассоциативного кэша ?

Поправьте меня, если я ошибаюсь, не так ли?

биты тега = длина бита адреса - показатель индекса - показатель смещения?

[Смещение = 3 из-за 2 ^ 3 = 8 или 5 из 2 ^ 5 = 32?]

compski
источник
некоторые пояснения к тегу, индексу и смещению в cs.stackexchange.com/questions/33818/…
Ран Г.

Ответы:

20

Вопрос, как заявлено, не совсем отвечает. Слово было определено как 32 бита. Нам нужно знать, является ли система «адресуемой по байтам» (вы можете получить доступ к 8-битному фрагменту данных) или «адресуемой по слову» (наименьший доступный блок составляет 32 бита), или даже «адресуемой по половинному слову» ( наименьшая порция данных, к которой вы можете получить доступ, составляет 16 бит.) Это необходимо знать, чтобы знать, что говорит вам бит младшего разряда адреса.

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

Тогда каждый блок кэша содержит 8 слов * (4 байта / слово) = 32 = 2 5 байтов, поэтому смещение составляет 5 бит.

Индекс для прямого отображения кэша является количество блоков в кэше (12 бит в этом случае, поскольку 2 12 = 4096) .

Тогда тег - это все оставшиеся биты, как вы указали.

Поскольку кэш становится более ассоциативным, но остается того же размера, меньше битов индекса и больше битов тега.

Блуждающая логика
источник
да, это байт адресуемый, но вопрос, на который я смотрел, не
определил
3

Ваша формула для битов тега верна.

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

Пол А. Клейтон
источник
Я не знал, что есть такие различия, да, это байт адресация
Compski
1
До середины 1970-х годов мы могли разумно предположить, что «слово» было размером наименьшей адресуемой единицы данных. Эта таблица на странице википедии о слове забавна (если вам нравятся такие вещи, (которые я делаю.))
Блуждающая логика
1

Я готовлюсь к выпускному экзамену по предмету «Компьютерная система», некоторое время гуглил и нашел этот вопрос. И эта часть вопроса запутана: «в котором каждый блок имеет 8 32-битных слов». Слово составляет 4 байта (или 32 бита), поэтому вопрос просто должен быть "... в котором каждый блок имеет 8 слов"

Ответ таков: каждый блок составляет 32 байта (8 слов), поэтому нам нужно 5 битов смещения, чтобы определить, какой байт в каждом блоке - Direct-mapped => количество наборов = количество блоков = 4096 => нам нужно 12 битов индекса для определить, какой набор

=> бит тега = 32 - 12 - 5 = 15

Для полностью ассоциативных, номер набора равен 1 => без индекса бит => тег бит = 32 - 0 - 5 = 27

Хоанг Тринь
источник
1

В полностью ассоциативном кэше нет индексных битов. Индексные биты используются для однозначной идентификации, к какому набору принадлежит блок. В полностью ассоциативном кэше все блоки по сути являются частью одного и того же набора.

Стеф
источник
-1

в полном ассоциированном отображении индекс равен 0 b / s, как вы говорите set = 1, поэтому index = log 1 в базе 2 = 0 set offset = log размера блока базы байтов 2, поэтому используйте 8 = 2 ^ 3 или 32 = 2 ^ 5 тегов = 32-0-5 = 27 для прямого индекса = 2 ^ 12 = 12 смещений = 0 битовых тегов = 32-12-0 = 20

user96559
источник
Я считаю, что это очень невозможно читать. Пожалуйста, используйте пунктуацию.
Дэвид Ричерби