2015-05-16 2 views
0

Я читал несколько тем по этой теме, но я не мог получить ответ. Так что я задал себе вопрос:Смещение блока калькуляции и индекс

1) Как рассчитывается смещение блока?

Я хочу знать не формулу, а концепцию. Как я знаю, это количество случаев, которые блок может хранить адрес. Например, если есть блок с 8-байтовым хранилищем и должен хранить 2 байтовых адреса. Ли его блок смещения 2 бит? (Так есть 4 случая для хранения адреса (диаграмма ниже может сделать легче увидеть, что я говорю).

enter image description here

ответ

0

Блок смещения просто рассчитывается как войти cache_line_size.

причина заключается в том, что все системы, которые я знаю, являются побайтном. Так что вам нужно достаточное количество битов для индекса любой байт в блоке. Хотя большинство систем имеют размер слова, которое больше, чем один байт, они по-прежнему поддерживают смещения однобайтовой градуляции, даже если это не общий дело.

Итак, для примера, упомянутого в 8-байтовом блочном размере с 2-байтовым словом, вам все равно потребуется 3 бита, чтобы разрешить доступ к любому байту. Если у вас была система, которая не была адресной, то вы можете использовать только 2 бита для смещения блока. Но на практике все системы, о которых я знаю, являются адресными байтами.