Предупреждение: это немного более сложный вопрос, чем вы, возможно, поняли, и, конечно, больше, чем большинство ответов изобразили. Чтобы попытаться раскрыть хотя бы немного больше истории, этот пост довольно длинный ...
Прежде всего, ситуация с видеопамятью. Вся память видеокарты не видна (по крайней мере, обычно) непосредственно в адресном пространстве процессора. Обычно у вас есть «окно» около 128-256 мегабайт видеопамяти, видимой для процессора. Графический процессор может отображать различные части своей памяти в это окно, так что вы обычно можете записывать большую часть памяти графического процессора из ЦП, но вам нужно заранее сообщить графическому процессору, что вы собираетесь записывать, прежде чем вы сможете это сделать. Например, когда вы используете DirectX и хотите писать напрямую в графическую память, вы можете сделать это, но чтобы сделать это, вы начинаете с вызова LockRect
графического процессора, чтобы отобразить правильную память в окне (и как как только вы закончите, вы звонитеUnlockRect
поэтому он может отображать другую память по мере необходимости). По крайней мере, в типичном случае вы можете настроить размер видео окна в настройках BIOS.
Во-вторых, даже в 32-разрядном режиме процессоры x86 поддерживают так называемые расширения физических адресов (PAE), что позволяет процессору обрабатывать более 4 гигабайт. памяти. Microsoft поддерживает PAE в некоторых версиях Windows, но только в относительно дорогой версии Enterprise Server Windows Server. Кроме того, программа должна быть написана специально для использования AWE. Есть только несколько программ (например, SQL Server Enterprise Edition), которые когда-либо делали это. Итог: это возможно, но довольно редко.
Что касается одновременного чтения 64 бит: последним процессором, считывающим данные только 32 бита, был 486. Начиная с Pentium, все процессоры имели 64-битные шины данных. Обратите внимание, что адресная шина не совпадает с шиной данных, поэтому расширение до 64-битной шины данных не позволило процессору работать с большим объемом памяти (хотя, как это бывает, PAE был добавлен в Pentium Pro, поэтому был почти одновременно с расширением до 64-битной шины данных).
Несмотря на то, что Pentium мог считывать 64 бита данных за один такт, он внутренне (в основном) обрабатывал данные 32 бита за раз. Более широкая шина в первую очередь помогла компенсировать разницу в скорости между процессором и основной памятью. MMX-инструкции Pentium MMX поддерживали обработку данных в 64-битных блоках, но использовать их было довольно неуклюже, и (в частности) большинство компиляторов не генерировали MMX-код, поэтому вам пришлось писать на ассемблере, чтобы использовать его. , Pentium также поддерживает 64-битные (и 80-битные) операции для чисел с плавающей запятой, но это используется только для довольно небольшого меньшинства большинства программ (и в целом медленнее, чем работа с целыми числами).
Дизайн x86-64 имеет в два раза больше регистров общего назначения, чем 32-битный дизайн x86, и каждый из этих регистров имеет ширину 64 бита. Однако, когда ЦП работает в 32-разрядном режиме, можно использовать только подмножество регистров, которые существовали на 32-разрядных ЦП.
Возвращаясь к моменту с плавающей запятой, в 32-битном режиме математика с плавающей запятой выполняется с использованием набора инструкций, изначально разработанного для математического сопроцессора Intel 8087. При этом используется модель, которая затрудняет полное использование ее возможностей. Intel (и AMD) недавно добавили «Потоковые SIMD-расширения», или SSE. Большинство 64-битных компиляторов генерируют код, который может использовать SSE вместо 8087-совместимой плавающей запятой. «SIMD» в SSE означает «одна инструкция, несколько данных». Это означает, что одна инструкция SSE может выполнять две операции с плавающей запятой над двумя отдельными частями данных. Хотя это не обязательно удваивает скорость, это обычно улучшает скорость, по крайней мере, немного.
Наконец, я, вероятно, должен отметить, что есть одна часть сравнения, которая обычно немного несправедлива. Когда вы устанавливаете новую ОС, она почти всегда, по крайней мере, немного быстрее, чем ОС, которая использовалась довольно долгое время. Программы хранят данные в реестре, на жестком диске и т. Д. Чем больше данных вы добавляете, тем больше работы требуется для поиска нужных вам данных в любой момент времени. Хотя компании, продающие «очистители реестра» и тому подобное, часто преувеличивают этот эффект, в любом случае это правда. Таким образом, если все, что вы сделали, это переформатировали жесткий диск и переустановили точно такую же ОС, вы могли бы ожидать некоторого улучшения скорости - и если у вас установлена старая ОС и она интенсивно использовалась в течение длительного времени , что улучшение (само собой) можетбыть довольно существенным. По крайней мере, часть улучшения скорости, которое вы видите, может не зависеть от реальной разницы между двумя ОС.
Конечно, есть нечто большее, но вы начинаете понимать это. Дело не столько в том, что одна особенность имеет огромное значение, сколько во многих функциях, которые обычно имеют довольно небольшие отличия по отдельности, но многие из них складываются (или даже умножаются) вместе, чтобы получить довольно существенную разницу в целом.