metatrop
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Минусы и плюсы x64 по сравнению с x32+PAE с тем же количеством доступной памяти. Речь пойдёт о 32-битной серверной Windows [Windows Server 2003] или об обычной [Windows XP и выше], но модифицированной специальным патчем. Обычные немодифицированные x32 версии Windows нет никакого смысла использовать если на машине более 3 ГБ памяти. x32+PAE позволяет использовать до 64 ГБ (или даже 128 ГБ, если железо поддерживает физический адрес больше 36 бит) для всех программ и файлового кэша, но ограничивает 3-мя или 2-мя ГБ адресное пространство каждой отдельной программы (использовать больше 3 ГБ физической памяти одна x32 программа теоретически может, но должна специально под такой случай программироваться, что неудобно, сложнее для программиста, и встречается на практике крайне редко). ============== x64 vs x32PAE ============== - Отсутствие поддержки 16/32-битных программ DOS. Решаемо при помощи DOSBox, но для утилит, вызываемых через командную строку, утрачивается естественная интеграция. Пример: консольная утилита htmstrip.exe (c) Bruce Guthrie - одна из немногих программ, достаточно адекватно переводящих HTML в .txt (списки, таблицы псевдографическими рамками), адекватный аналог под Win32 неизвестен. - Отсутствие поддержки Win16 программ (NE .exe времён Windows 3.x/9x). Примеры: простой в использовании и понятный редактор .FON шрифтов Softy.exe 1998 года, редактор .mid файлов CakeWalk 1994 года, .exe инсталляторы для многих программ (даже если сами по эти программы они не требуют для работы Win16). - Невозможность работы программ, которые грузят 32-битный драйвер, если нет версии программы с 64-битным драйвером. Понятие драйвера не ограничивается поддержкой устройств: Sandboxie, VirtualBox, CPU-z, GPU-z - все они грузят свои драйверы. - Неработоспособность некоторых 32-битных программ. Примеры: Различные x32 Portable сборки (Office 2007), ...? - Перенаправление %SystemRoot%\system32\ в SysWow64. Из-за этого для файлов в system32 не работают нормально многие 32-битные утилиты (сравнение файлов, просмотр PE заголовка, просмотр информации о версии и т.п.). Очень многие подобные утилиты не имеют 64-битных аналогов. - Увеличивается размер ОС на диске из-за дублирования x64+x32 кода для многих DLL (например, видео/аудио кодеков и т.п.) и программ (как минимум, многие из системных утилит). - Возникает путаница с x32 и x64 версиями DLL, отсутствие нужных версий DLL для программ, использующих компоненты/плагины. (Пример - AviSynth, для 64-битной версии которого далеко не все фильтры существуют). - Увеличивается расход памяти на ОС, драйверы, 64-битные версии программ из-за 64-битных указателей / индексов / длин данных, а также из-за более длинных команд CPU. Под x32+PAE работа с N-ым количеством приложений, каждое из которых забирает менее 3 ГБ памяти, в ряде случаев может быть более комфортной, благодаря тому, что остаётся больше памяти под файловый кэш. - Для исполняемых файлов x64 (.exe .dll) всё ещё заметно слабее развиты инструменты: упаковщики (UPX), отладчики и прочее. - Начиная с Vista x64 появляются трудности с неподписанными драйверами, причём таковыми становятся все модифицированные, т.е. "подправленные" драйверы. Требование подписи драйверов сильно сдерживает развитие той части свободного ПО для Windows, где необходим драйвер. Единственным приемлемым решением для продвинутого пользователя, видимо, является полное отключение и проверки драйверов, и устранение "водяных знаков" тестового режима на рабочем столе (пишут, что это делается модификацией user32.dll.mui). - Не поддерживаются старые устройства, для которых нет 64-битных драйверов. + Возможность запускать 64-битный код. Для некоторых программ нет 32-битных версий. Например, из-за лени разработчиков новые версии кодировщика видео x265.exe поддерживают ассемблерные оптимизации только в x64 варианте; для x32 надо использовать старую версию 1.7+6 или смириться с замедлением кодирования в 3 раза... Особенно же это касается 64-битных ресурсоёмких игр. Частичное решение для случаев редкой потребности в запуске не слишком требовательных 64-битных программ (не игр! но, возможно, 64-битных установщиков 32-битных игр - да, встречаются такие repack'и) - виртуальная машина с x64 Windows из-под x32 Windows. + Более быстрая работа 64-битных версий многих программ, требующих скорости, благодаря вдвое бОльшему количеству целочисленных регистров общего назначения, а также значительное ускорение 64-битных целочисленных операций, которые иногда необходимы, т.к. их уже не надо переводить в две 32-битные операции. Этим обычно перевешивается замедление x64 из-за более интенсивного, в сравнении с 32-битными программами, заполнения кэша кодом и данными (возросшего объёма). + Возможность использовать в одном приложении > 3ГБ памяти (графика, видео и т.п). Подавляющее большинство требующих много памяти приложений не имеют версий для x32 PAE, где доступ к > 3ГБ памяти со стороны одного приложения в принципе тоже может осуществляться - переключением отображения блоков физической памяти на "окно" в виртуальном адресном пространстве, через механизмы AWE или Page-File backed CreateFileMapping(). + Расширение до 4 ГБ (по сравнению с 3 или 2 ГБ в x32 ОС) адресного пространства для 32-битных программ, у которых выставлен флаг LargeAddressAware. Хотя "официальные" 32-битные программы больше 2 ГБ практически никогда не требуют, некоторым играм иногда бывает необходимо даже больше 3 ГБ, если к ним применены неофициальные модификации, например, содержащие текстуры более высокого качества и т.п. + Отсутствие проблем с исчерпанием зарезервированного адресного пространства для системных областей Free PTE, Paged Pool, Non-Paged Pool, что может давать о себе знать в x32 ОС: 1) в режиме с 3 ГБ (или между 2 и 3 ГБ) пользовательского адресного пространства при количестве памяти 8-16 ГБ (16 - предел для /3GB), 2) даже в режиме с 2 ГБ пользовательского адресного пространства при приближении к пределу в 128 ГБ. 3) когда адресное пространство забирают устройства, из-за чего понижаются указанные в первых двух пунктах ограничения на объёмы памяти. + Отсутствие проблем с фрагментацией адресного пространства в 64-битовых программах, использующих около 2 или 3 ГБ памяти, по сравнению с аналогичными 32-битовыми программами. Фрагментация означает невозможность выделить непрерывный блок памяти нужного программе размера, несмотря на то, что суммарно свободного адресного пространства памяти ещё достаточно. Впрочем, на практике такое встречается в 32-битных программах очень нечастно, и во многих случаях помогает выставление .exe файлу флага LargeAddressAware и работа в режиме /3GB. | Всего записей: 313 | Зарегистр. 17-09-2010 | Отправлено: 05:37 26-09-2017 | Исправлено: metatrop, 09:54 30-09-2017 |
|