x86 и адресация памяти

Я читал о моделях памяти в сборнике, который взял, и у меня есть пара вопросов. Допустим, у адресной шины 32 линии, у шины данных - 32 линии, а ЦП - 32-битный (для простоты). Теперь, если ЦП делает запрос на чтение и отправляет 32-битный адрес, но ему нужно только 8 бит, все 32 бита все равно возвращаются? Кроме того, адреса в памяти по-прежнему адресуются побайтово, правильно? Значит, выборка одного байта вернет 0000 0001 по адресу 0000 0004?


person IM.    schedule 21.03.2010    source источник
comment
Адреса от 0000 0000 до 0000 0003, но вы его получили.   -  person Potatoswatter    schedule 21.03.2010
comment
В чем вопрос? Поведение mov 0, %al тоже обнуляет ah, или производительность?   -  person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 30.10.2015
comment
@CiroSantilli 新疆 棉花 TRUMPBANBAD: загрузка с абсолютного адреса 0 в AL не влияет на AH. (Я думаю, вы это знаете, но ваш предыдущий комментарий звучит обманчиво, как будто вы заявляете, что это так, а не спрашиваете, просто спрашивая OP, если это то, что они спрашивают.)   -  person Peter Cordes    schedule 15.04.2021
comment
Вам действительно стоит прочитать следующее: Что каждый программист должен знать о памяти   -  person Paul R    schedule 16.04.2021


Ответы (1)


В общем да. Чтение части слова из автобуса ничего не дает, поэтому читается целое слово. В инструкциях указывается, какие части слов им нужно фактически загрузить или сохранить в регистрах.

Тем не менее, в наши дни редко можно читать прямо из памяти. У процессоров есть кеши, с которыми вы взаимодействуете 99% времени, и когда данных нет в кеше, вводится целая строка (несколько слов), а затем вы все равно читаете из кеша.

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

person Eli Bendersky    schedule 21.03.2010
comment
Вы можете порекомендовать какие-нибудь хорошие книги по архитектуре ЦП, моделям памяти и т. Д.? Спасибо! - person IM.; 21.03.2010
comment
@IM: лучший из известных мне - amazon.com/ Компьютерная организация-дизайн-четвертая-архитектура / dp / - person Eli Bendersky; 21.03.2010
comment
некэшируемое чтение MMIO должно сигнализировать по шине, какой именно байт читается. На процессорах с передней шиной (вместо сортировки ввода-вывода и DRAM внутри чипа) у вас были бы линии разрешения байтов для каждого из 4 байтов в 32-битной шине. Более сложные шины, такие как x86, используемые до тех пор, пока интегрированные контроллеры памяти K8 / Nehalem могут делать это по-другому для некэшируемой загрузки или хранения (например, какое-то сообщение с заголовком вместо выделенных контактов), IDK. - person Peter Cordes; 16.04.2021