Как рассчитать размер тега кеша по ассоциативности и расстоянию между наборами псевдонимов?

Может ли кто-нибудь помочь мне и дать несколько советов по вычислению размера тега кеша со следующими данными:

  1. Ассоциативность кеш-памяти, способами = 4
  2. Размер кеш-памяти = 512кБ
  3. Размер каждой строки = 128 байт
  4. Минимальное расстояние между строками каждого подмножества = 16кБ

Я нашел следующую формулу:

Stag = log2(Smemory*A/Scache)

куда:

  • Stag - размер тега кеша, в битах

  • Smemory - кэшируемый диапазон оперативной памяти в байтах

  • Scache - размер кеш-памяти в байтах

  • A - ассоциативность кеш-памяти, по способам.

Однако мне не дана память. Есть ли какой-нибудь способ рассчитать это, используя предоставленные данные?


person FilipJ    schedule 15.06.2014    source источник


Ответы (1)


Здесь вы должны сделать два предположения. Во-первых, это предположение о ширине адреса, поэтому ваша формула запрашивает Smemory. Во-вторых, это предположение о том, сколько байтов составляет одно слово и есть ли у вас возможность адресации по слову или адресация байта. Позвольте мне показать вам пример. Предположим, что это 32-битный адрес и байтовая адресация. Тогда у вас будет:

# of index bits = log2(512K / 4) = 17
# of tag bits = 32 - 17 = 15

используя вашу формулу, которая будет

log2 ((2 ^ 32) * 4/512 КБ) = 15

Если у вас есть адресация только по 32-битным словам, то вы получите:

# of index bits = log2(512K / 4) = 17
# of tag bits = 32 - 17 - log2(4) = 13

и вам нужно скорректировать формулу, чтобы получить тот же результат:

log2 ((2 ^ 32) * 4 / (512 КБ * 4)) = 13

и ваша формула должна выглядеть так:

Олень = log2 (Память * A / (Scache * Sword)),

куда:

Меч - размер слова в байтах

person Tayyar R    schedule 25.07.2014
comment
Словесная адресация будет означать меньшее количество битов в части адреса, содержащей смещение внутри строки, а не в теге. Нам дан размер кеша и размер строки в байтах, а не количество адресуемых единиц, поэтому вам не следует умножать 512K * 4. Я думаю, все это сводится на нет, потому что в словах нет ничего. Интересная часть этого вопроса заключается в том, что нам не дан Smemory, вместо этого даны некоторые другие вещи, такие как расстояние в 16 КБ между подмножествами, которого может быть достаточно. Не уверен, не пытался разобраться, но я почти уверен, что это неправильный ответ. : / - person Peter Cordes; 04.04.2021