Вступление:
Была у нас дискуссия. Я решил разобраться и столько понаписал, что аж решил выложить. Мож кто еще почитает. И кстати может найдет много ошибок. Это не трактат. Это моя версия понять, что за зверь 64 бит.
Ну загрузил ты меня этим 64 битом. Прочтя
ссылку в википедии я не понял нихрена. Потом еще почитал часа 3, подумал. Вроде у меня ясность есть. Просто слово "архитектура" невнятное как слизняк. На самом деле надо смотреть где она реализована. Здесь речь идет о дополнительных командах проца. То есть это тоже самое что MMX SSE2 и т.д. Это расширение команд у Интела называется EM64T. Много у каких обычных процев оно есть. Еще с Pentium 4 такое расширение начало появляться. У моего древнего проца тоже есть. То есть я могу ставить вин 64. С названием есть бардак. Иногда этот режим называют AMD64 по изобретателю.
Это расширение глобальное, не одна команда, а целый режим новый. Меняется очень много команд. Многие исчезают. Вся адресация в адресном пространстве процесса становится относительной. То есть
mov [12345678h], 1
уже невозможно откомпилировать для этого режима. Назовем его x86-64. Регистры 64 битные rax, rbx и т.д. плюс еще 8 r8-r16.
Реальной аппаратной части 64 битной за этим почти нет. Поэтому-то нет никакого удвоения производительности. Хотя некая оптимизация под многобитные команды наблюдается. Первой ласточкой этого были 64 битные (квадрослово) дополнительные регистры MMX1, MMX2... у Пентиума 166 МГц. Ну и конечно 64 бита в одном регистре это круто. Удобно делать цикл до 18 квинтиллионов.
Я бы не сказал, что это нововведение совсем бутафория. Я помню когда-то был переход от 8 битной архитектуры к 16 битной. И первым перевели именно процессорно-програмный интерфейс. Если не путаю, то это был процессор i8088. А позже его внешняя часть, а следовательно и мать и память, стали 16 битными. Это уже назвали i8086.
Не существует памяти для 64 бит.
Не существует матерей для 64 бит.
Не существует процессоров Интел для 64 бит. Любой обычный (ну почти) это может (расширение EM64T нужно). У AMD конечно пестрит в названиях "64". Маркетологи не дремлют.
Различия 64 ОС:
+ Памяти дохрена. Пользовательскому процессу дают 8.000 ГБ адресного пространства. Это не 2 ГБ, 50% от теоретического, как в вин32, а только 0,00005%. Маловато!
- Хана поддержке ДОСа и Вин16 (не очень понятно. возможно после перехода в 64 битный режим, теряется власть над этими вещами)
- Если нет драйвера 64, то ... никак.
Программы Вин32 работают нормально.
Команды 64 доступны только из режима 64. В отличии, скажем, от 32 битных команд, к которым был доступ из ДОСа через префикс 66h, который превращал "mov ax" в "mov eax".
А первая Windows XP 64 bit была написана вообще для процессора Itanium, который не совместим с архитектурой x86.
Ну блин и понаписал. Положу в жж, чтоб не жалко было.