Это домашнее задание?
Чтобы решить эту проблему, вам нужно знать размер адреса рассматриваемой архитектуры.Общее решение:
Пусть C - размер кэша в битах.
Пусть A - размер адреса в битах.
Пусть B - размер блока кэша в битах.
Пусть S будет ассоциативностью кеша (таким образом, прямое отображение будет S = 1, а полностью ассоциативным будет S = C / B)
L, количество строк в кэше равноС / В.Это количество бит кеша, деленное на количество бит в строке.Q, количество наборов в кэше, равно L / S.Это количество строк, деленное на ассоциативность.Причины этой линии и выше должны быть очевидны;если это не так, снова прочитайте учебник, прежде чем читать ниже.
Теперь давайте разберемся с тремя вещами: биты смещения, биты блока и биты тега.
биты смещениянайти определенный элемент в строке кэша.Предполагая, что адресно-байтовая память, D, число битов смещения, является ceil (log2 (ceil (B / 8))).Это лог-база двух из числа байтов в строке кэша, округленная на каждом шаге.Если память является двухбайтовой адресуемой, то внутренняя часть будет B / 16 и т. Д.
Биты блока должны найти нужный кеш-набор внутри кеша.Таким образом, O, число битов блока, равно ceil (log2 (Q)).Это лог-база двух из числа наборов в кэше.
Биты тега - это то, что осталось.Итак, T, количество битов тегов, равно ADO.На английском языке число бит в адресе минус количество бит, используемых для двух других частей.Мы не должны рассматривать ассоциативность здесь, потому что мы уже обрабатывали это выше при использовании Q вместо L.
В итоге:
- Битов смещения столько, сколько вам нужноукажите конкретный байт в строке
- Бит блоков - это столько, сколько вам нужно, чтобы указать конкретный набор в кэше
- Битами тега являются любые биты, оставшиеся после
Рассчитать длину тега последним.Это определенно проще.
PS - Обратите внимание, что на самом деле кэш также будет хранить грязный бит и некоторые другие метаданные с каждой строкой.Тем не менее, эти вопросы обычно игнорируют подобные вещи, и я тоже.