Под 32-битной или 64-битной машиной обычно подразумевается размер видимых извне («архитектурных») целочисленных регистров общего назначения.
Это очень мало связано с тем, как строится аппаратное обеспечение. Например, давайте рассмотрим (давно устаревший) Intel Pentium Pro. Обычно он считается «32-разрядным» процессором, хотя он поддерживает до 36-разрядных физических адресов, имеет 64-разрядную шину данных, а внутренние вычисления для всех поддерживаемых типов операндов выполняются в одном наборе регистров ( следовательно, шириной 80 бит для поддержки самого большого типа с плавающей запятой).
По крайней мере, в случае с процессорами Intel, даже несмотря на то, что более длительная физическая адресация была доступна в течение длительного времени, наибольшее количество памяти непосредственно видно в адресном пространстве любого одного процесса на 32- битовый процессор также ограничен 4 гигабайтами (32-битная адресация). 36-битная физическая адресация позволяет адресовать до 64 гигабайт оперативной памяти, но только 4 гигабайта из них могут быть сразу видны в любой момент времени.
Переход на 64-битные машины в основном включал изменение того, что было сделано видимым для пользователя (или для кодирования на уровне ассемблера). Опять же, то, что вы видите, редко совпадает с тем, что реально. Например, в большинстве 64-битных кодов указатели / адреса рассматриваются как 64-битные, но реальные процессоры не поддерживают такие большие адреса. Современные процессоры поддерживают 48-битные виртуальные адреса и (по крайней мере, насколько я заметил) не более 40 бит физической адресации. С другой стороны, они спроектированы таким образом, чтобы в будущем, когда увеличится объем памяти, они могли расширить физическую адресацию до 48 бит без какого-либо влияния на программное обеспечение. Даже когда они увеличивают 48-битную виртуальную адресацию, в типичном случае это повлияет только на небольшое количество ядра операционной системы (нормальный код не затронут, потому что он уже предполагал, что адреса являются 64-битными).
Итак, нет: 64-битная машина не действительно поддерживает до 64 бит физической адресации, , но наиболее типичное 64-битное программное обеспечение должно оставаться совместимым с будущим процессором который поддерживал прямое обращение к такому объему оперативной памяти.