1

Я новичок в компьютерной архитектуре. Так что поправьте меня, если я ошибаюсь.

Если модуль памяти состоит из 8 микросхем памяти и если каждая микросхема хранит 4 бита на адрес, то, применяя адрес к контакту адреса модуля, я могу получить (8 x 4 =) 32 бита с этого адреса в модуле. Но байтовая адресация говорит о том, что у каждого байта есть адрес. Но здесь я обращаюсь к 32битам по адресу. Так как это возможно?

Я думаю, что если каждый чип хранит 1 бит на адрес, то, применяя адрес к модулю, я могу получить доступ к 8 битам или одному байту.

1 ответ1

1

Ну, во-первых, организация памяти на DIMM действительно довольно прозрачна для программ и даже для процессора. Но ... во всех современных системах, использующих обычные процессоры и модули DIMM, модули DIMM фактически реализуют "слова" шириной 64 бита (не 32, даже на 32-битных процессорах).

В те времена, когда у обычных (x86) процессоров были отдельные адреса и выводы данных, если вы посмотрите на обозначения на адресных выводах, вы обнаружите, что они не начинаются с A0 (наименее значимый бит адреса), но скорее на А3. Таким образом, хотя адреса, заявленные программами, идут "до конца" до адреса бита 0, и после преобразования адреса результирующий физический адрес также переходит на бит 0, три младших бита физического адреса никогда не выходят из процессора , Процессор читает и записывает ОЗУ в 8-байтовые (64-битные) слова, и они всегда выровнены по 8-байтовым границам. То же самое верно и сегодня, даже несмотря на то, что сигналы адреса и данных мультиплексируются на шине (т.е. они используют одни и те же контакты на процессоре).

Например, адресация меньше 8-байтовых слов

MOV AL, [EBX] 

(переместите байт, адрес которого находится в EBX, в младший байт A-регистра), все это реализовано в процессоре и в кэш-памяти памяти. Контроллер памяти извлекает 64-битное слово, которое содержит нужный байт, и сохраняет все это в кэше. (На самом деле кеш организован в "строках кеша" по 64 байта каждая, поэтому восемь последовательных 64-битных слов читаются из модулей DIMM в кеш, но это неважно ...) Это слово затем помещается на внутреннюю шину данных в ЦП, из которой ЦП получает доступ к необходимым байтам, основываясь на младших трех битах адреса. Или, возможно, интерфейс кеша делает это - мне это не понятно.

(Конечно, если нужное слово уже было в кеше, доступ к DIMM вообще отсутствует).

Аналогично, для записи отдельного байта ЦП (или интерфейс кеша) должен прочитать содержащее 8-байтовое слово из кеша, изменить его в соответствии с тем, какие байты должны быть затронуты, а затем отправить полученное 8-байтовое слово обратно в кеш. В конце концов он сбрасывается в оперативную память.

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