Я новичок в компьютерной архитектуре. Так что поправьте меня, если я ошибаюсь.
Если модуль памяти состоит из 8 микросхем памяти и если каждая микросхема хранит 4 бита на адрес, то, применяя адрес к контакту адреса модуля, я могу получить (8 x 4 =) 32 бита с этого адреса в модуле. Но адресация байтов говорит о том, что у каждого байта есть адрес. Но здесь я получаю доступ к 32битам по адресу. Так как это возможно?
Я думаю, что если каждый чип хранит 1 бит на адрес, то, применяя адрес к модулю, я могу получить доступ к 8 битам или одному байту.
memory
computer-architecture
Kaustav
источник
источник
Ответы:
Ну, во-первых, организация памяти на DIMM действительно прозрачна для программ и даже для процессора. Но ... во всех современных системах, использующих обычные процессоры и модули DIMM, модули DIMM фактически реализуют "слова" шириной 64 бита (не 32, даже на 32-битных процессорах).
В те времена, когда у обычных (x86) процессоров были отдельные адреса и выводы данных, если вы посмотрите на обозначения на адресных выводах, вы обнаружите, что они не начинаются с A0 (наименее значимый бит адреса), но скорее на А3. Таким образом, хотя адреса, заявленные программами, идут «до конца» до адреса бита 0, и после преобразования адреса результирующий физический адрес также переходит на бит 0, три младших бита физического адреса никогда не выходят из процессора , Процессор читает и записывает ОЗУ в 8-байтовые (64-битные) слова, и они всегда выровнены по 8-байтовым границам. То же самое верно и сегодня, даже несмотря на то, что сигналы адреса и данных мультиплексируются на шине (т.е. они используют одни и те же контакты на процессоре).
Например, адресация меньше 8-байтовых слов
(переместите байт, адрес которого находится в EBX, в младший байт A-регистра), все это реализовано в процессоре и в кэш-памяти памяти. Контроллер памяти извлекает 64-битное слово, которое содержит нужный байт, и сохраняет все это в кэше. (На самом деле кеш организован в «строках кеша» по 64 байта каждая, поэтому восемь последовательных 64-битных слов читаются из модулей DIMM в кеш, но это не важно ...) Затем это слово помещается на внутреннюю шину данных. в ЦП, из которого ЦП получает доступ к байтам, которые ему необходимы, на основе младших трех битов адреса. Или, возможно, интерфейс кеша делает это - мне это не понятно.
(Конечно, если нужное слово уже было в кеше, доступ к DIMM вообще отсутствует).
Аналогично, для записи отдельного байта ЦП (или интерфейс кеша) должен прочитать содержащее 8-байтовое слово из кеша, изменить его в соответствии с тем, какие байты должны быть затронуты, а затем отправить полученное 8-байтовое слово обратно в кеш. В конце концов он сбрасывается в оперативную память.
источник