Мне дали этот вопрос в школе:

Предположим, что адресно-байтовая память имеет 1 М адресуемого пространства и кэш, состоящий из 64 блоков, где каждый блок содержит 8 байтов. Кеш напрямую отображается.

Каков размер кэша?
Сколько смещенных бит?
Сколько строк строки?
Сколько бит тегов?

Я понимаю, как ответить на эти вопросы, но зачем мне знать, что память адресуется в байтах?

Как бы изменились ответы, если бы это было слово или длинное слово, адресуемое?

1 ответ1

0

Что такое байт?

Байт - это блок памяти для хранения, а микросхема памяти заполнена такими байтами. Блоки памяти являются адресуемыми. Это единственный способ, которым мы можем использовать память.

В реальности память адресуется только в байтах. Это означает, что двоичный адрес всегда указывает только на один байт. Слово - это просто группа байтов - 2, 4, 8 в зависимости от размера шины данных ЦП.

Как нужно понимать ?

Чтобы полностью понять работу с памятью, вы должны быть знакомы с различными регистрами ЦП и портами памяти ОЗУ. Я предполагаю, что вы знаете значение «регистр адреса памяти MAR», «регистр данных памяти MDR», «регистр счетчика программ ПК», «регистр буфера памяти MBR». ОЗУ имеет два порта памяти: 32-битный для данных / адресов, 8-битный для OPCODE.

Предположим, что CPU хочет прочитать слово (скажем, 4 байта) с адреса xyz и далее. CPU поместит адрес в MAR, отправит сигнал считывания памяти на чип контроллера памяти. При получении адреса и сигнала чтения контроллер памяти подключит шину данных к 32-битному порту, и 4 байта, начиная с адреса xyz, будут выходить из порта в MDR.

Если процессор хочет извлечь следующую инструкцию, он поместит адрес в регистр ПК и отправит сигнал выборки в контроллер памяти. При получении адреса и сигнала выборки контроллер памяти будет подключать шину данных к 8-битному порту, и однобайтовый длинный код операции, расположенный по полученному адресу, будет вытекать из ОЗУ в MDR ЦП.

Вот что это значит, когда мы говорим, что определенный регистр является «адресуемым в памяти» или «адресуемым байтом». Теперь, что произойдет, если вы поставите, скажем, десятичную 2 в двоичном виде на MAR с намерением прочитать «слово» 2, а не (байт № 2)?

Слово № 2 означает байты 4, 5, 6, 7 для 32-битного компьютера. На самом деле физическая память адресуется только в байтах. Так что есть хитрость для обработки «адресации слов». Когда MAR размещен на адресной шине, его 32 бита не отображаются на 32 адресные линии 0-31 соответственно. Вместо этого бит 0 MAR связан с адресом шины 2, бит 1 MAR связан с адресом шины 3 и так далее. Старшие 2 бита MAR отбрасываются, так как они нужны только для слов с адресом выше 2 ^ 32, ни один из которых не подходит для нашей 32-битной машины. Используя это отображение, когда MAR равен 1, адрес 4 помещается на шину, когда MAR равен 2, адрес 8 помещается на шину и так далее.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .