Для начала первый кеш имеет 16 блоков с одним словом. В качестве примера я буду использовать ссылку памяти 0x03. Индекс имеет 4 бита (0011). Понятно, что бит равен 3mod16 (0011 = 0x03 = 3). Однако я смущаюсь с использованием этого модального уравнения для определения местоположения блока в кеше со смещенными битами.Как сопоставить адрес памяти блоку, когда есть смещение в кеше с прямым отображением?
Второй кэш имеет общий размер восьми блоков с двумя слотами. Это означает, что имеется 1 бит смещения. Поскольку в настоящее время имеется 8 блоков, всего 3 бита индекса. В качестве примера я возьму ту же самую ссылку на память 0x03. Однако теперь у меня возникают проблемы с отображением блока, используя используемое ранее уравнение мод. Я пробовал 3mod8, который равен 3, однако в этом случае, поскольку есть бит смещения, индексные биты 001. 001 не равно 3, так что я сделал неправильно? Не работает ли мода при наличии смещенных битов? У меня создалось впечатление, что уравнение мод всегда будет равным индексам.
Вы должны изменить индекс, а не весь адрес. –
Я немного смущен. Я думал, что индекс - это сопоставление с блоком: S –
Я хотел сказать, что вы должны модифицировать биты над смещением, чтобы получить индекс. (то есть для удаления битов тега). Биты смещения не влияют на то, к какой строке относится адрес в кеше, поэтому они/они не являются частью вычисления. –