Ограничение памяти для микропроцессоров x86

Недавно я начал с курса по компьютерной архитектуре на интернет-ресурсе. Я прочитал из одной из книг, которую взял, что процессоры x86 имеют 32 адресные строки и могут читать данные по шине данных по 4 байта за раз. Теперь я понимаю, что 32 адресные строки ограничивают адресуемую память 4 миллиардами уникальных адресов. Что мне трудно понять, так это тот факт, что если ЦП может читать 4 байта данных в каждом цикле с каждого из этих 4 миллиардов уникальных адресов, почему ОЗУ в системах x86 ограничено 4 ГБ. Разве вместо этого не должно быть 16 ГБ (4 раза по 4 ГБ)? Может ли кто-нибудь прояснить это для меня? Также, когда я говорю о 32-битных или 64-битных микропроцессорах, относится ли 32/64 к количеству адресных строк или количеству строк данных в ЦП? (В моем первом вопросе я, вероятно, должен упомянуть, что предполагаю систему без расширения физического адреса.)


person HungryTux    schedule 27.02.2013    source источник
comment
Потому что 4 байта - не самая маленькая адресуемая единица.   -  person Mysticial    schedule 27.02.2013
comment
@Mysticial Я не совсем понял вашу точку зрения. Не могли бы вы уточнить?   -  person HungryTux    schedule 27.02.2013
comment
Процессор должен иметь возможность обращаться к каждому отдельному байту. Следовательно, вы не получите это бесплатно с коэффициентом 4.   -  person Mysticial    schedule 27.02.2013
comment
Хорошо, если я правильно понимаю, даже несмотря на то, что процессор извлекает 4 байта в каждом цикле команд из шины данных, каждый из этих 4 байтов принадлежит 4 разным адресам в памяти. Просто все они были втянуты за один раз. Это правильно?   -  person HungryTux    schedule 27.02.2013
comment
Вот хороший SO-ответ http://stackoverflow.com/questions/2724449/different-between-word-addressable-and-byte-addressable   -  person amdn    schedule 27.02.2013
comment
Не совсем. Вы можете загружать по одному байту на x86. Вот почему они должны быть адресованы индивидуально.   -  person Mysticial    schedule 27.02.2013
comment
@amdn Это многое проясняет.   -  person HungryTux    schedule 27.02.2013
comment
@Mysticial Спасибо, я понял это после того, как прочитал ветку, опубликованную amdn выше. Что касается моего второго запроса, могу ли я обобщить «32/64» как количество адресных строк на ЦП, когда речь идет о 32-битных или 64-битных микропроцессорах?   -  person HungryTux    schedule 27.02.2013
comment
Если вы имеете в виду адрес бит, то да. Это соглашение.   -  person Mysticial    schedule 27.02.2013


Ответы (1)


Микропроцессоры x86 - это широкая категория процессоров, которая за десятилетия эволюционировала от 8086 до сегодняшних 64-битных многоядерные процессоры. Одна из сильных сторон процессоров x86 заключается в том, что они обратно совместимы, что означает, что последние процессоры в члены семьи понимают инструкции 8086 (они должны работать в специальном режиме, называемом Real Mode). 8086 имел 16-битные регистры и 16-битную шину для памяти и ввода-вывода, он был с байтовой адресацией означает, что программа использовала адрес отдельного байта. 8086 может загружать из памяти 1 или 2 байта (называемых словом). Со временем новые процессоры x86 добавили больше битов в адресные строки, добавили виртуальную память и увеличили words. Итак, 32-битный элемент данных был назван double word, а 64-битный элемент данных стал известен как quad word, а затем появился SSE, и у нас был 128-битный octaword or double quadword, вот таблица размеров данных. Новые процессоры x86 могут получать доступ к данным любого из этих размеров, на самом деле последние имеют инструкции AVX, которые иметь 256-битные векторные регистры. Адресация памяти с точки зрения программы по-прежнему осуществляется путем присвоения адреса байта по младшему адресу.

Подробнее о 64-битных вычислениях можно узнать здесь. Вот хорошее резюме:

Без дополнительных уточнений, 64-битная компьютерная архитектура обычно имеет целочисленные регистры и регистры адресации шириной 64 бита, что позволяет напрямую поддерживать 64-битные типы данных и адреса. Однако у ЦП могут быть внешние шины данных или адресные шины с размером, отличным от регистров, даже больше (например, у 32-битного Pentium была 64-битная шина данных).

person amdn    schedule 27.02.2013