В частности:
1) Кэш прямого отображения с 4096 блоками / строками, в котором каждый блок содержит 8 32-битных слов. Сколько бит нужно для полей тегов и индексов, предполагая 32-битный адрес?
2) Тот же вопрос, что и 1), но для полностью ассоциативного кэша ?
Поправьте меня, если я ошибаюсь, не так ли?
биты тега = длина бита адреса - показатель индекса - показатель смещения?
[Смещение = 3 из-за 2 ^ 3 = 8 или 5 из 2 ^ 5 = 32?]
computer-architecture
cpu-cache
compski
источник
источник
Ответы:
Вопрос, как заявлено, не совсем отвечает. Слово было определено как 32 бита. Нам нужно знать, является ли система «адресуемой по байтам» (вы можете получить доступ к 8-битному фрагменту данных) или «адресуемой по слову» (наименьший доступный блок составляет 32 бита), или даже «адресуемой по половинному слову» ( наименьшая порция данных, к которой вы можете получить доступ, составляет 16 бит.) Это необходимо знать, чтобы знать, что говорит вам бит младшего разряда адреса.
Тогда вы работаете снизу вверх. Давайте предположим, что система является адресно- байтовой .
Тогда каждый блок кэша содержит 8 слов * (4 байта / слово) = 32 = 2 5 байтов, поэтому смещение составляет 5 бит.
Индекс для прямого отображения кэша является количество блоков в кэше (12 бит в этом случае, поскольку 2 12 = 4096) .
Тогда тег - это все оставшиеся биты, как вы указали.
Поскольку кэш становится более ассоциативным, но остается того же размера, меньше битов индекса и больше битов тега.
источник
Ваша формула для битов тега верна.
То, будет ли смещение тремя или пятью битами, зависит от того, использует ли процессор байтовую (октетную) адресацию или адресацию слова. Вне DSP почти все последние процессоры используют байтовую адресацию, поэтому было бы безопасно предположить байтовую адресацию (и пять битов смещения).
источник
Я готовлюсь к выпускному экзамену по предмету «Компьютерная система», некоторое время гуглил и нашел этот вопрос. И эта часть вопроса запутана: «в котором каждый блок имеет 8 32-битных слов». Слово составляет 4 байта (или 32 бита), поэтому вопрос просто должен быть "... в котором каждый блок имеет 8 слов"
Ответ таков: каждый блок составляет 32 байта (8 слов), поэтому нам нужно 5 битов смещения, чтобы определить, какой байт в каждом блоке - Direct-mapped => количество наборов = количество блоков = 4096 => нам нужно 12 битов индекса для определить, какой набор
=> бит тега = 32 - 12 - 5 = 15
Для полностью ассоциативных, номер набора равен 1 => без индекса бит => тег бит = 32 - 0 - 5 = 27
источник
В полностью ассоциативном кэше нет индексных битов. Индексные биты используются для однозначной идентификации, к какому набору принадлежит блок. В полностью ассоциативном кэше все блоки по сути являются частью одного и того же набора.
источник
в полном ассоциированном отображении индекс равен 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
источник