Итак, я думаю, что конкретный ответ на ваш вопрос «нуль», но это просто потому, что вы задаете неправильный вопрос.
Правильно, поэтому кеш с заданным размером X, который непосредственно отображается, будет просто использовать нижнюю часть [или какую-либо другую часть (части)] для формирования индекса в кеш. Таким образом, индекс представляет собой значение от 0 до (chace-size-1). Другими словами, «адрес по модулю размера». Поскольку размеры кешей почти всегда равны 2 n, мы используем тот факт, что оба они могут быть выполнены с использованием простых поразрядных «и» с (size-1) вместо использования деления.
В вашем коде каждая запись кэша (кэш-строка) содержит «БЛОК» из 32 байт, поэтому адрес должен быть разделен (сдвинут) вниз на размер блока. 2 = 32. Этот сдвиг остается постоянным для постоянного размера строки кеша. Поскольку в вашем примере кода нет другого изменения, я предполагаю, что вы не понимаете, что вам следует делать.
В ассоциативно-ассоциативном кеше существует несколько наборов строк кеша, которые могут использоваться для одного и того же индекса. Поэтому вместо того, чтобы просто принимать нижнюю часть адреса в качестве индекса, мы берем SMALLER часть нижнего адреса. Таким образом, index = address_of_block & (CACHE_SIZE-1)
должен стать address_of_block & ((CACHE_SIZE-1)/ways
. Поскольку мы имеем дело с номером 2 n, мы можем использовать старый трюк «сдвиг вместо деления» - x/y
, где y
is 2 n может быть сделано x >> n
.
Итак, теперь вам нужно только выяснить, что n
для вашего количества способов.
И, конечно, выясните, как вы определяете, какой из способов использовать при замене чего-либо в кеше, но это, безусловно, совершенно другой вопрос.
Сколько «путей» - ваши ассоциативные кеши? –
На этом уровне для начинающих я использую только 2-х позиционный ассоциативный ассоциативный –
Итак, если у вас есть адрес некоторых данных, и у вас есть «два места» для размещения данных (вместо одного места), какая разница вы думаете, что это делает сдвиги? Я пытаюсь заставить вас понять это для себя, потому что, если я просто скажу вам, вы не будете многому учиться. –