Это простой кэш с прямым отображением и более сложный кэш с ассоциативным отображением. Вы хотите избежать случая, когда некоторому коду требуется две части информации, но эти два адреса отображаются на одну и ту же строку кэша.
аюсь понять, как работает кэш процессора. Допустим, у нас есть эта конфигурация (в качестве примера).
Размер кэша 1024 байтаСтрока кэша 32 байта1024/32 = 32 строки кэша все вместе.Строка кэша Singel может хранить 32/4 = 8 дюймов.1) В соответствии с этими настройками длина тега должна составлять 32-5 = 27 бит, а размер индекса 5 бит (2 ^ 5 = 32 адреса для каждого байта в строке кэша).
Если общий размер кэша равен 1024, и в нем 32 строки кэша, где хранятся теги + индексы? (Есть еще 4 * 32 = 128 байт.) Значит ли это, что фактический размер кэша равен 1024 + 128 = 1152?
2) Если в этом примере строка кэша составляет 32 байта, это означает, что 32 байта копируются в кэш, когда ЦП требуется новый байт из ОЗУ. Правильно ли я предположить, что позиция строки кэша запрашиваемого байта будет определяться его адресом?
Вот что я имею в виду: если процессор запрашивает байт в[FF FF 00 08]
, тогда доступная строка кэша будет заполнена байтами из[FF FF 00 00]
в[FF FF 00 1F]
, И наш пересчитанный единственный байт будет в позиции[08]
.
3) Если предыдущий оператор верен, означает ли это, что 5 битов, которые используются для индекса, технически не нужны, так как все 32 байта в любом случае находятся в строке кэша?
Пожалуйста, дайте мне знать, если я что-то не так. Спасибо