2016-11-30 1 views
0

Для начала первый кеш имеет 16 блоков с одним словом. В качестве примера я буду использовать ссылку памяти 0x03. Индекс имеет 4 бита (0011). Понятно, что бит равен 3mod16 (0011 = 0x03 = 3). Однако я смущаюсь с использованием этого модального уравнения для определения местоположения блока в кеше со смещенными битами.Как сопоставить адрес памяти блоку, когда есть смещение в кеше с прямым отображением?

Второй кэш имеет общий размер восьми блоков с двумя слотами. Это означает, что имеется 1 бит смещения. Поскольку в настоящее время имеется 8 блоков, всего 3 бита индекса. В качестве примера я возьму ту же самую ссылку на память 0x03. Однако теперь у меня возникают проблемы с отображением блока, используя используемое ранее уравнение мод. Я пробовал 3mod8, который равен 3, однако в этом случае, поскольку есть бит смещения, индексные биты 001. 001 не равно 3, так что я сделал неправильно? Не работает ли мода при наличии смещенных битов? У меня создалось впечатление, что уравнение мод всегда будет равным индексам.

+0

Вы должны изменить индекс, а не весь адрес. –

+0

Я немного смущен. Я думал, что индекс - это сопоставление с блоком: S –

+0

Я хотел сказать, что вы должны модифицировать биты над смещением, чтобы получить индекс. (то есть для удаления битов тега). Биты смещения не влияют на то, к какой строке относится адрес в кеше, поэтому они/они не являются частью вычисления. –

ответ

2

Его все в адресе. Вы получаете адрес, затем маскируете количество бит с конца по следующим причинам.

  1. Количество слов в кассете. Если у вас есть 2-х словная кешета (немного отбросьте, 4 слова - 2 бит и т. Д.)
  2. Тогда сколько у вас записей в кассете. (Если это 1024 кеш, вы берете 10 бит. Это 10 бит - ваш индекс, оставшиеся бит - для вашего тега).

Теперь вам также необходимо рассмотреть «ПУТЬ». Если применяется его кеш с прямым сопоставлением, см. Выше. Если его двухпозиционный ассоциативный кеш, у вас нет 1024 строк, у вас есть 512 блоков, у каждого из которых есть 2 строки. Это означает, что вам нужно всего 9 бит, чтобы определить индекс блока. Если его 4-х способов, у вас есть 256 блоков с 4 строками, то есть вам нужно всего 8 бит для вашего индекса.

В наборе ассоциативного кеша указатель должен выбрать блок, как только выбран блок, использование может использовать политику, например LRU, для заполнения записи в случае промаха в кеше. Хиты определяются путем сравнения тега в выбранном блоке.

Нижняя строка, местоположение блока не определяется по адресу, по блоку выбирается только блок, а затем его сравнение тегов для поиска данных.

Смежные вопросы