В одной из своих предыдущих статей я писал, что по мере совершенствования многоядерных процессоров и увеличения количества ядер Windows 7 в конечном счете превзойдет Windows XP с точки зрения валовой скорости обработки приложений за счет высокой масштабируемости ядра. Однако я предполагал, что это произойдет лишь в отдаленном будущем — хорошо, если не к эпохе массового распространения 16- и 32-ядерных процессоров. Но теперь оказывается, что я ошибся раза в три-четыре: момент, когда усовершенствованное ядро Windows 7 в сочетании с многоядерными процессорами одержит победу над простым, грубым подходом, который реализован в ядре Windows XP, уже достигнут.
Проще говоря, Windows 7 функционирует гораздо быстрее, чем Windows XP, при обработке ресурсоемких многозадачных нагрузок на современном многоядерном оборудовании. С учетом нынешних тенденций проектирования компьютеров и ближайших планов по разработке многоядерных процессоров, этого преимущества должно быть достаточно, чтобы побудить даже самых больших упрямцев перейти наконец на Windows 7.
Существенные факторы
Сразу несколько факторов дают Windows 7 преимущество на многоядерных процессорах. В частности, появление мультипроцессорных систем на базе технологии неравномерного доступа к памяти (Non-Uniform Memory Access, NUMA) — например, HP Z800 — позволяет реализовать высокий вычислительный потенциал в малом формфакторе. Сочетание многоядерных процессоров и нескольких процессорных сокетов дает возможность создавать персональные компьютеры с высокой масштабируемостью, которая раньше была доступна только для серверов высшего уровня. При этом стоимость подобных систем оказывается куда меньше, чем при использовании традиционных дискретных процессоров для достижения такой же вычислительной мощности.
Другой фактор — отказ от обычной системной шины (Front Side Bus), которая на протяжении многих лет была ключевым компонентом архитектуры всех персональных компьютеров и рабочих станций на базе процессоров Intel. Вместо нее теперь используется шина Quick Path Interconnect (QPI) — ответ Intel на AMD HyperTransport — которая предусматривает размещение контроллера памяти на одном кристалле с центральным процессором, что обеспечивает последнему непосредственный доступ к физической памяти. В результате значительно ускоряется доступ к локальной памяти для каждого ядра процессора, а в сочетании с кэшем третьего уровня это способствует повышению производительности при перераспределении нагрузки между несколькими процессорами.
NUMA и QPI значительно усовершенствовали архитектуру Intel, но все эти нововведения были бы бесполезны при отсутствии соответствующей поддержки со стороны операционной системы. Именно поэтому всесторонняя оптимизация ядра Windows 7 для работы с многоядерными процессорами имеет такое огромное значение: без этого пользователи просто не смогли бы получить доступ к повышенной производительности, которая обеспечивается последними разработками Intel и AMD. Другими словами, чтобы извлечь максимум пользы из усовершенствованных процессоров, нужна усовершенствованная операционная система.
Важность нюансов
Windows XP — великолепная операционная система. Она заслужила свою репутацию почти десятилетием бесперебойной работы. Однако на фоне сложной системы поддержки многоядерных процессоров, реализованной в Windows 7, Windows XP выглядит довольно бледно. Ядро Windows XP использует концепцию симметричной многопроцессорной обработки (Symmetric Multiprocessing, SMP), которая была разработана еще во времена Windows NT, и это ограничивает возможности системы при работе на современном оборудовании с архитектурой NUMA. Это как в старом анекдоте про мастера, у которого из инструментов — только молоток: Windows XP воспринимает любые многопроцессорные задачи как гвозди, которые надо забить.
Windows 7, с другой стороны, внимательна к нюансам. К примеру, операционная система понимает разницу между несколькими дискретными процессорами и множественными ядрами в рамках одного процессора. Кроме того, Windows 7 учитывает основополагающие принципы архитектуры NUMA — в частности, то, что группа ядер одного процессора выступает в качестве функционального узла, и то, что родственность процессоров может непосредственно влиять на быстродействие приложений в многопроцессорной среде. В совокупности это позволяет ядру Windows 7 более эффективно управлять аппаратным обеспечением, учитывая логическую и физическую структуру процессов при распределении процессов и выделении памяти.
Разумеется, практика важнее теории. И хотя Microsoft с самого начала обещал, что Windows 7 будет использовать возможности современных многоядерных систем куда эффективнее, чем Windows XP, подтвердить это заявление оказалось не так легко. Проблема в том, что лишь очень немногие современные ПК обладают тем сочетанием ядер и межпроцессорных соединений по типу NUMA, которое необходимо Windows 7 для успешной работы на многоядерных системах. По результатам замеров, которые я делал для своей предыдущей статьи, оказалось, что Windows 7 сильно отстает от XP на любом оборудовании — от настольного компьютера с двухъядерным процессором до рабочей станции с четырехъядерным ЦП. Именно поэтому я и решил, что потенциал новой операционной системы удастся в полной мере реализовать только на 16- или даже 32-ядерных машинах.
К счастью, теперь я понимаю, что это не так. Windows 7 способна эффективно работать не только на компьютерах будущего поколения, но и на современных массовых (хотя и дорогих) системах. Новые замеры, сделанные на упомянутой выше рабочей станции HP Z800 (8 ядер, 16 потоков), продемонстрировали, что Windows 7 имеет сокрушительное преимущество по сравнению с Windows XP при обработке смешанных многопоточных нагрузок, включая обслуживание базы данных SQL (на 47% быстрее), выполнение процессов MAPI (на 178% быстрее) и воспроизведение мультимедиа.
Что касается масштабируемости, то переход от одного четырехъядерного процессора к восьми ядрам, распределенным между двумя процессорами, обеспечивает в Windows 7 куда более существенный процентный прирост производительности, чем в Windows XP. Быстродействие базы данных SQL повысилось в Windows XP на 72%, а в Windows 7 — на целых 200%. Обработка MAPI ускорилась в Windows XP лишь на 4%, которыми можно пренебречь, зато в Windows 7 — почти на 360%.
В целом, для Windows 7 это большая победа, которую я приписываю улучшенной поддержке многоядерных процессоров, одновременной многопоточности (Simultaneous Multithreading, SMT, или Hyper-Threading) и NUMA. То, что Windows 7 удалось достичь столь высоких результатов на восьмиядерном уровне — не просто обогнать Windows XP, а оставить ее далеко позади — оказалось для меня приятным сюрпризом и заставило меня еще больше уважать команду разработчиков ядра Windows. Ребята действительно понимают, как выжать максимум из аппаратной платформы.
Будущее
Разумеется, продвинутые пользователи многопроцессорных рабочих станций могут уже сейчас получить огромные преимущества при переходе на Windows 7, однако список тех, кому пригодятся новые возможности операционной системы, этим не ограничивается. Персональные компьютеры и ноутбуки на базе процессоров Intel Core i7 нынешнего поколения тоже способны получить значительный прирост производительности благодаря улучшенному перераспределению нагрузки между кодом и кэшем, а также целому ряду других многоядерных усовершенствований, реализованных в Windows 7. И хотя расширенные возможности масштабирования Windows 7 пока не дают ей преимущества над Windows XP на двух- и четырехъядерных ПК средней мощности, они, тем не менее, позволяют компенсировать повышенную нагрузку на оборудование, которую создает новая операционная система.
Дело в том, что все соблазнительные преимущества Windows 7 — повышенная безопасность, управляемость, удобство — становятся возможны за счет увеличения нагрузки на процессор со стороны фоновых служб, отвечающих за реализацию этих новых функций. Поэтому максимально эффективное использование пропускной способности процессора приобретает огромное значение по мере того, как увеличивается количество программных прослоек, отделяющих оборудование от оператора.
Но как бы то ни было, в конечном итоге несомненно одно: Windows 7 — или, по крайней мере, лежащая в ее основе архитектура ядра — это будущее персональных компьютеров на базе Intel. И это останется фактом, даже если Microsoft решит выпотрошить Windows и выкинуть все слои сверх NT Executive (своего рода экстремальная версия MinWin). Редмондскому гиганту удалось создать в Windows 7 надежную, масштабируемую основу для операционной системы с поддержкой многоядерных процессоров, и она еще пригодится компании при разработке будущих версий своего флагманского продукта.