| Страница:
1 2 3 4
|
|
Введение
Пять с половиной лет назад AMD представила линейку процессоров Athlon 64, превознося преимущества 64-битных вычислений и их значимость для будущего. У Intel не ушло много времени на то, чтобы последовать за AMD на рынке настольных ПК. С тех пор постепенно нарабатывалась инфраструктура (операционная система и драйверы) для поддержки все большего количества 64-битных программ.
Сегодня 64-битную совместимость воспринимают как само собой разумеющуюся. Фактически, в сфере бизнеса, где 64-битные вычисления всегда воспринимались многообещающими, появились приложения, работающие только в 64-битной среде. Даже Small Business Server 2008, окружение начального уровня для малого и среднего бизнеса до 75 пользователей, теперь может работать только в 64-битной среде из-за включения в его состав Exchange Server 2007.
Почему Microsoft пошла на такой шаг - выпуск последнего почтового сервера исключительно в 64-битном виде? Если судить по посту в блоге Криса Митчела (Chris Mitchell) из команды Microsoft Exchange Performance Engineering Team, приложение использует 64-битную адресацию, чтобы наложить свои виртуальные ручки на большее количество оперативной памяти, дабы избежать лишних обращений к жёсткому диску. В примере Криса старая версия Exchange имела доступ к 900 Мбайт из потолка 4 Гбайт 32-битного сервера. В корпоративном окружении с 4000 пользователей это означает 225 кбайт на человека - маловато для всех сообщений, правил, событий календаря и контактов в типичном почтовом ящике. Переход на 64-битную платформу и оснащение сервера десятками гигабайт памяти (рекомендации Криса для того же предприятия на 4000 пользователей составляют 24 Гбайт) снижает нагрузку на дисковую подсистему.
Но у настольных компьютеров таких объёмов памяти нет, не так ли? Мы ожидаем, что 64-битные вычисления придут к нам из корпоративного сектора, но геймеры хотят знать: есть ли сегодня преимущества от 64-битных технологий?
Нажмите на картинку для увеличения.
Переходим на 64 бита
Энтузиасты с платформами Socket AM2/AM2+ обычно используют наборы памяти на 2 или 4 Гбайт. Действительно, память DDR2 сегодня дешёвая, а 4 Гбайт всё ещё достаточно для энтузиаста - объём 8 Гбайт всё же ближе к рабочей станции.
Но если вы покупаете систему на основе Core i7 с трёхканальной конфигурацией памяти, то вряд ли имеет смысл откатываться назад и устанавливать три 1-Гбайт модуля. То есть остаётся вариант 6 Гбайт, что заставляет переходить на 64-битные вычисления, если вы хотите использовать весь этот объём памяти.
Да, вы правы - мы почти забыли. Если вы находились в глухой сибирской деревне после начала рекламы 64-битных вычислений со стороны AMD, то фундаментальное ограничение кроется в памяти, которую может использовать 32-битная ОС - не больше 4 Гбайт (232). Вся память выше этого объёма просто не будет видна системе и приложениям.
Если же учесть адресацию устройств, то значение памяти будет ниже 4 Гбайт. Именно поэтому 32-битные системы с 4 Гбайт физической памяти отображают несколько больше 3 Гбайт памяти в Windows Device Manager. Но это не проблема Windows. Просто архитектура x86 так работает.
Небольшое уточнение: проблема в том, что ОС не может получить полный объём памяти 4 Гбайт под потребительскими ОС Microsoft связана и с производителями "железа". Под 32-битными системами Windows, подобными XP или Vista, возникают проблемы совместимости со старыми чипсетами, о чём говорится, например, в данном документе HP. И с драйверами многих устройств.
Конечно, уже давно были найдены решения, позволяющие использовать эту потерянную память. Технология Intel Physical Address Extensions поддерживает 36-битную физическую адресацию, которая помогает в серверных окружениях, увеличивая максимальный объём памяти до 64 Гбайт. Однако, если верить презентации Чака Валборна (Chuck Walbourn), разработчика программного обеспечения из Microsoft XNA Developer Connection, которую он показал на Gamefest 2008, технология PAE так никогда и не была реализована должным образом у настольных операционных систем, а это необходимо для привязки 4-Гбайт виртуального адресного пространства к большему физическому объёму памяти. Основной проблемой, как отметил Чак, являются драйверы. Да и существуют проблемы с приложениями, которые рассчитаны на работу с 32-битной адресацией, а не с 36-битной.
Кроме 32-битных физических адресных линий, вы также ограничены и 32-битным виртуальным адресным пространством. Поскольку один бит зарезервирован для общей памяти ядра (используется всеми процессорами и операционной системой), то отдельные приложения получают доступ к, максимум, 2 Гбайт памяти для себя. В общем, одно ограничение накладывается на другое, так что у настольных компьютеров не так всё просто. Но дают ли 64-битные вычисления какую-либо существенную разницу по производительности? Именно это мы и хотим выяснить.
Много памяти не бывает
Если вы хотите перейти на 64-битную платформу, то вам потребуются 64-битный процессор на материнской плате с соответствующей поддержкой BIOS (сегодня это встречается практически повсеместно), 64-битная ОС вместе с набором 64-битных драйверов, после чего теоретический потолок памяти увеличивается до впечатляющих 16 экзабайт памяти - 17,2 млн. гигабайт. Впрочем, на практике ограничения процессоров, чипсетов и материнских плат намного ниже и привычнее, даже в 64-битном ограничении. Большинство материнских плат на X58, которые мы недавно тестировали, поддерживают, максимум, 24 Гбайт памяти DDR3.
Кроме увеличения физического объёма доступной памяти, переход на 64 бита также увеличивает виртуальное адресное пространство, которое в 32-битных окружениях было очень сильно ограничено.
| Тип приложения |
Виртуальное адресное пространство |
| Стандартное 32-битное |
2 Гбайт |
| Large Address Aware 32-битное |
4 Гбайт |
| "Родное" 64-битное |
8 Тбайт |
Как видно в таблице, запуск 32-битного приложения под 64-битной ОС всё равно будет ограничивать его виртуальное адресное пространство 2 Гбайт (кстати, большинство игр по-прежнему существуют только в 32-битных версиях, включая многие игры, которые мы используем для тестов). Приложения, написанные с учётом большого адресного пространства (с флагом /LARGEADDRESSAWARE) поддерживают до 4 Гбайт без какого-либо специального режима загрузки. А "родные" 64-битные приложения получают до 8 Тбайт адресного пространства - и Microsoft утверждает, что может увеличивать это число при необходимости, не влияя на работу ОС или приложений.
Желание уйти от игр первого типа, то есть от стандартных 32-битных, сильное и настойчивое. Проблемы с адресным пространством существовали ещё до того, как 64-битное окружение стало распространяться повсеместно. Мы помним, как во время интенсивной игры на карте Command and Conquer: Generals с восемью пользователями приложение выдало ошибку о нехватке адресного пространства и свернулось. Это было ещё где-то в 2004 году. Наши коллеги в AnandTech описали схожую ситуацию, которую они испытали с игрой Supreme Commander в 2007 году. Учитывая известную проблему ограничений адресного пространства, вы, наверное, подумали, что игровые разработчики хотели бы перейти на 64-битное окружение ещё вчера?
Пара 64-битных игр в качестве примера
Во время подготовки этого материала мы провели обширные поиски, расспрашивая производителей "железа" и разработчиков программ, чтобы найти игры, специально написанные для 64-битного окружения в "родном" режиме. Выплыло только две игры: Crysis и Hellgate: London (Far Cry со временем получил патч с поддержкой "родного" 64-битного режима, как и Half-Life 2). Что интересно, обе эти игры привёл Чак Валборн во время своей презентации на Gamefest 2008, описывая препятствия и преимущества, которые стоят перед игровыми разработчиками на пути перехода к 64-битным вычислениям.
По информации Валборна, самой большой победой Crytek стал 64-битный редактор уровней Crysis, который обеспечил существенную разницу в художественном оформлении игры. Когда разработчики начали работать в первоначальном 32-битном редакторе, то столкнулись с проблемами стабильности при достижении порога адресного пространства около 1,7 Гбайт. Затем они использовали флаг /LARGEADDRESSAWARE в 64-битном окружении, что позволило увеличить порог до 2,7 Гбайт до появления старых проблем. В итоге 64-битный редактор стал просто необходимостью, чтобы Crytek смогла дать тот уровень деталей, который вы видите в игре. Кстати, 32-битная однопользовательская игра очень близко подходит к порогу стабильности, который мы описали выше касательно опыта с Command and Conquer.
Мы вскоре перейдём к тестам Crysis, но перед тем, как начать оценку результатов производительности, упомянем прогноз Валборна: производительность 32- и 64-битных версий игр Crytek должна быть сравнимой, поскольку разработчик не прикладывал больших усилий к оптимизации игры под 64-битное окружение. Однако при самом высоком уровне качества, когда 32-битная версия подходит к своему порогу стабильности, 64-битный исполняемый файл обладает большим объёмом оставшегося виртуального адресного пространства. Конечно, при данных настройках качества сложно получить приемлемую игровую производительность, то есть большинство геймеров всё равно немного ослабит настройки, независимо от рабочего окружения.
Вторая игра под названием Hellgate: London является ролевой (RPG) и вышла на рынок ещё в октябре 2007 года. Но играть в неё в однопользовательском режиме всё ещё интересно. Однако многопользовательские серверы игры, которые сами являлись 64-битными, были выключены в январе этого года. Кроме 64-битных игровых серверов, у Hellgate был "родной" 64-битный клиент, позволявший обойти ограничение по виртуальному адресному пространству 2 Гбайт.
Как и в случае Crytek и Crysis, Flagship Studios столкнулась с проблемами при разработке Hellgate с амбициозными планами касательно поддерживаемого "железа". Игра вышла с исполнительными файлами .exe под DirectX 9 и DirectX 10, в одно- и многопользовательском режиме, с 32- и 64-битными .exe, что привело к необходимости поддерживать восемь вариантов. Кроме того, возникли и проблемы со вспомогательным ПО, которые сегодня уже встречаются реже. Например, "родная" 64-битная защита от копирования стала проблемой для Crytek и Flagship, поскольку 64-битные процессы могут загружать только 64-битные DLL, которые не были доступны во время разработки.
Конечно, поскольку многопользовательские серверы игры завершили срок своей эксплуатации, сегодня данную игру вряд ли можно назвать актуальной, разве что можно использовать её в качестве примера перехода на 64-битное окружение.
Презентация Валборна на Gamefest заканчивалась тремя выводами.
- Разработчикам ПО рекомендуется переводить среду разработки на 64 бита для получения дополнительной памяти во время процесса создания контента.
- По крайней мере, следует использовать ключ /LARGEADDRESSAWARE для получения дополнительного адресного пространства виртуальной памяти при работе 32-битных игр в 64-битном игровом окружении.
- Начните использовать 64-битные инструменты разработки - это станет довольно важным шагом для работы с предоптимизированным контентом, который сможет уместиться в рамках 2 Гбайт у 32-битных платформ.
Насколько хорошо были услышаны слова Чака?
Страница:
1 2 3 4
|