K-Flash

 

 
 
 








 

«Производительность системы»

Увеличивать производительность системы или же, иными словами – масштабировать систему, можно по-разному. Первый метод заключается в так называемом горизонтальном масштабировании, которое предусматривает наращивании производительности отдельных элементов. Увеличение частоты процессора, использование более быстрой памяти, видеоадаптера, жесткого диска – все это, в конечном счете, горизонтальное масштабирование. Но что делать, если даже установка наиболее быстрых элементов не позволяет добиться желаемой скорости вычислений, необходимой, например, для научных расчетов или обработки графики?

В этом случае на помощь разработчику компьютерной системы приходит так называемое вертикальное масштабирование. В этом случае разработчик уже не ограничивается лишь увеличением номинальной скорости компонент, а стремится одновременно использовать несколько одинаковых элементов. В систему устанавливаются два, четыре, тридцать два процессора, формируются RAID-массивы, отдельные станции объединяются в кластеры. В итоге, производительность подобных систем выходит на качественно другой уровень.

Впрочем, вертикальное масштабирование, предусматривающее использование нескольких однотипных элементов, традиционно сопряжено с бОльшими трудностями и бОльшими затратами. Как не крути, но цена одного процессора примерно вдвое меньше цены двух процессоров ;-) А добавьте сюда разницу в цене одно- и двухпроцессорной материнской платы, издержки на блок питания, корпус, систему охлаждения и т.д. В итоге, даже относительно простая двухпроцессорная конфигурация почти наверняка окажется дороже традиционной, "моно" конфигурации.

Вдобавок, для работы с вертикальными системами обязательно требуется специальное программное обеспечение, как системное, так и прикладное. В случае с многопроцессорными решениями речь, как минимум, идет о Windows 2000, Windows XP Professional, Linux и т.п. В свою очередь, прикладные приложения должны работать, например, с несколькими процессорами, распараллеливать вычисления, распределять нагрузку. Все это, опять же, выливается в дополнительные затраты.

Во многом именно по этим причинам вертикальные системы не получили, и вряд ли когда-либо получат распространение в секторе "непрофессиональных" PC. Почти все подобные опыты кончались неудачей. Попытки протолкнуть двухпроцессорные конфигурации для домашних компьютеров наталкивались не только на непонимание, но и на откровенное противодействие ведущих разработчиков аппаратного обеспечения. Фокусы двухгодичной давности с дуальными системами на основе Celeron безусловно привлекли внимание общественности, не оказав при этом ровным счетом никакого влияния на общую "диспозицию".

Можно привести и другие примеры. 3dfx, выпустив двухчиповый Voodoo 5 5500, проиграла финансовую войну конкурентам, аналогичной конфигурации ATI Rage MAXX натолкнулся на программные проблемы и, в сущности, так и не смог ничего противопоставить убийственному аргументу соперников – цене. Одним словом, в секторе настольных ПК до недавних пор не было и намека на параллелизм.

Hyper-Threading. 2 в 1? Нет! 1++

Следует отдать должное Intel – разработав технологию Hyper-Threading, подразумевающую эффективное распараллеливание вычислений в одном физическом процессоре, компания не стала придумывать громкие слоганы и рассказывать неискушенным домохозякам, что, купив один физический процессор, они получат два логических. Ничего подобного – пришло время, и Intel честно открыл спецификации новой технологии и рассказал, как она работает.

Pentium 4 3.06 ГГц стал первым процессором Intel для настольных ПК, поддерживающим технологию Hyper-Threading. До этого Intel применял ее лишь в серверных процессорах Intel Xeon, несмотря на то, что необходимый для ее реализации блок присутствовал в Pentium 4 от рождения. Тем не менее, по неизвестным причинам Intel не активировал Hyper-Threading, сделав это лишь 14 ноября 2002 года, спустя почти два года с момента выпуска первого Pentium 4.

В этом материале я не буду вдаваться в технические тонкости реализации Hyper-Threading. Желающим вникнуть в особенности работы Hyper-Threading, посоветую посетить, прежде всего, первоисточник - сайт Intel. Подробную информацию касательно этой технологии можно также почерпнуть из множества электронных и печатных изданий, как зарубежных, так и украинских и российских. Перепечатывать "другими словами" одно и тоже – неинтересно, да и, наверное, бессмысленно.

Если же не копаться в деталях, то суть технологии Hyper-Threading сводится к тому, что центральный процессор пытается распараллеливать вычисления и одновременно выполнять два потока операций. За счет этого увеличивается эффективная нагружка на вычислительные модули процессора, снижаются простои и т.п. Наиболее наглядно смысл Hyper-Threading иллюстрируют диаграммы Intel, приведенные ниже:

В конечном счете, в конфигурации с Hyper-Threading операционная система увидит уже не один, а два процессора и попытается распределить между ними задачи. Следует, однако, понимать, что Hyper-Threading не в коем случае не является аналогом "железного" двухпроцессорного режима SMP, в котором каждый процессор использует независимый кэш, реже – независимую шину, область памяти и т.п. Hyper-Threading же подразумевает лишь более эффективное распределение вычислений и загрузку одного физического процессора.

Что нужно для Hyper-Threading?

Далеко не всякая система, в которой используется процессор Intel Pentium 4 с активированной технологией Hyper-Threading, сможет ее использовать. Для этого необходимо выполнение целого ряда условий:
1. Чипсет должен поддерживать Hyper-Threading.Такими свойствами обладают: i845G (кроме ревизии A), i845E, i845PE, i845VE, i845GE, i850E.
2. BIOS должен поддерживать Hyper-Threading.
3. Операционная система должна поддерживать работу с Hyper-Threading. Такими способностями обладают Windows XP Professional, Windows XP Home Edition, Windows 2000. Windows 98, Windows ME Hyper-Threading не поддерживают! Тем не менее, Intel не рекомендует использовать Hyper-Threading на Windows 2000, несмотря на то, что эта ОС может работать с двумя процессорами. Относительно Unix ничего определенного сказать пока нельзя – пока Intel ведет переговоры с разработчиками ПО.
4. Наконец, необходимо программное обеспечение, умеющее разбивать вычисления на несколько потоков. Увы, лишь немногие "настольные" приложения обладают такими способностями. Но об этом – чуть позже.

До сих пор нет достоверной информации относительно поддержки Hyper-Threading чипсетами сторонних производителей. VIA заявляет (хоть и не все верят этим заявлениям), что ее последний чипсет P4X400 технологию Hyper-Threading поддерживает. SiS обещает внедрить работу с Hyper-Threading в будущих версиях SiS648. Так или иначе, но на данный момент для работы с Hyper-Threading необходим один из вышеперечисленных чипсетов Intel.

Но и здесь не все гладко. В отличие от других разработчиков чипсетов и процессоров, Intel не производит валидацию материнских плат, а заботы о правильной реализации условий, необходимых для работы с Hyper-Threading, полностью ложатся на плечи конечных разработчиков. Поэтому, перед тем, как идти в магазин за материнской платой, посетите сайт производителя и убедитесь, что именно та модель, та конкретная ревизия платы, которую вы собираетесь купить, поддерживает Hyper-Threading. И не забудьте перепрошить BIOS.

Запускаем!

Но вот, все условия выполнены – в вашем распоряжении процессор и материнская плата, способные работать с Hyper-Threading. Включив компьютер, необходимо со всем вниманием отнестись к инсталляции операционной системы и программного обеспечения. Вот советы по установке Windows XP Professional на систему с Hyper-Threading:
1. Активировать поддержку Hyper-Threading в BIOS (желательно предварительно загрузить последний BIOS с сайта разработчика материнской платы)
2. Включить ACPI в BIOS.
3. Установить операционную систему.
4. Установить самые последние драйверы INF-update, которые можно загрузить с сайта Intel.
5. Установить самую последнюю версию Intel Application Accelerator, которую также можно получить с сайта Intel.
6. Установить последние драйверы к видеокарте и другому оборудованию.
7. Установить Service Park 1 для Windows XP Professional, если Вы работает с этой ОС.

Если все сделано правильно, то в списке оборудования в Windows появятся два процессора.

Тестируем

С самого начала было ясно, что для тестирования возможностей Hyper-Threading необходимо программное обеспечение, способное распараллеливать вычисления. Как я уже отмечал, далеко не каждый пакет обладает подобными свойствами... более того, большинство программ, с которыми работают среднестатистические пользователи, параллельные вычисления на нескольких процессорах выполнять не способны.

Поэтому, мы стремились использовать профессиональные пакеты, которые обычно используются на высокопроизводительных ПК и рабочих станциях. Среди них – 3D Studio Max, Adobe Phootoshop, Visual C++, Cinema 4D и др. Тем не менее, полностью исключить из тестирования повседневные задачи мы, конечно же, не могли, поэтому статья пополнилась результатами тестов в архиваторах, офисных приложениях и в некоторых играх.

Тестирование выполнялось на следующем оборудовании:
• Процессор Intel Pentium 4 3.06 ГГц
• Материнская плата Intel D850EMVR на чипсете i850E
• 512 Мб памяти RDRAM PC1066
• Видеокарта AOPEN GeForce4 Ti 4600
• Жесткий диск Maxtor 2B020H1, ATA/100, 5400 RPM
• Драйверы nVidia Detonator 40.41, DirectX 8.1b
• Windows XP Professional SP1

Чтобы сразу избавиться от назойливых геймеров, приведем результаты, полученные в Quake III, 3DMark 2001 SE и Comanche 4:

Как и ожидалось, эти игры ни сном, ни духом не знают о многопроцессорности (в т.ч. и хваленый Quake, который якобы имеет подобную оптимизацию) и, соответственно, никаких преимуществ от использования Hyper-Threading получить не могут. Более того, налицо – некоторое замедление Quake III и 3DMark 2001 при включенном Hyper-Threading, которое, судя по всему, объясняется особенностями реализации игрового движка.

Ситуация изменяется в тесте Sysmark 2002, который включает как повседневные, так и профессиональные приложения.

Особый интерес вызывает то обстоятельство, что даже офисные пакеты, формально не обладающие оптимизацией под мультипотоковые системы, работают быстрее с применением Hyper-Threading. Объясняется это очень просто – в Sysmark 2002 тестовые приложения выполняются одновременно, параллельно. В таких условиях в игру вступает операционная система – именно она распределяет вычисления между двумя логическими процессорами. Таким образом, даже обычные программы могут в ряде случаев выполнятся быстрее с включенным Hyper-Threading.

Ну а прирост производительности в Sysmark 2002 Internet Content Creation не требует комментариев – было бы удивительно, если бы такие программы, как Adobe Photoshop, Adobe Premiere и т.п. не умели работать с многопоточной среде. Увы, но архиваторам WinRaR 3.10 и WinAce 2.2 технология Hyper-Threading не открывает никаких скрытых резервов. Более того, с включенным Hyper-Threading оба они работают даже несколько медленнее, чем c выключенным. Корни этого казуса следует, скорее всего, искать в глубинах реализации кода этих архиваторов... Но стоит запустить Windows Media Encoder, который умеет распараллеливать вычисления, как ускорение тут же проявляется:

В научных тестах получаем прекрасную иллюстративную картину. Science Mark V2 beta опознает два процессора и по крайней мере пытается распределить вычисления между ними. Получается не очень хорошо, но кое-какой прирост все же есть. А вот Super_PI конечно же о Hyper-Threading ничего не знает. В итоге – нулевой прирост производительности. В Visual C++ выполнялась тестовая компиляция проекта. Этот пакет знаком с многопоточными вычислениями, что, собственно, и находит отражение в диаграммах. Adobe Photoshop с включенным Hyper-Threading работает, конечно же, быстрее, однако в абсолютном показателе ускорение не так уж велико. Скорее всего, коррективы вносит жесткий диск, которому так или иначе приходится участвовать в "свопе" при обработке "тяжелых" изображений. 3DStudio с самого начала разрабатывалась с учетом возможности работы на многопроцессорных конфигурациях. Пятая версия этой программы подтверждает свое "реноме", демонстрируя очень серьезное увеличение производительности после включения Hyper-Threading. А вот в любимом мною Corel Bryce 5 толку от включения Hyper-Threading, прямо скажем, немного. И дело здесь, снова же, в том, что Bryce 5 не умеет распараллеливать вычисления. И, наконец, Cinema 4D. Это приложение, осуществляющее 3D-рендеринг, пожалуй, наиболее наглядно демонстрирует преимущества Hyper-Threading. Если эта технология активирована, сцена разбивается на две части, и обе они просчитываются одновременно. Отличный пример для презентаций ;-)

Субъективно

Если субъективно – толк от Hyper-Threading есть даже в том случае, если приложение не обладает способностями к параллельным вычислениям. Ведь теперь, совсем не обязательно ждать, пока архиватор упакует гигабайтный файл, или программа для рендеринга просчитает длинный ролик. Если раньше пользователь в этой ситуации попросту терял время, то с Hyper-Threading он может заняться чем-то полезным: сходить в Internet, обработать данные в Excel, сверстать HTML-страницу, посмотреть MPEG-фильм. Иными словами, компьютер не "умирает", Hyper-Threading высвобождает ресурс, достаточный для работы и развлечений. Нет, играть в игры во время научных вычислений вряд ли получится, но посетить COMPOSTER – вполне!

Пару слов о разгоне

Признаться честно, мне не очень хотелось рассуждать о разгоне Pentium 4 3.06 ГГц… по-моему, разгонять топовый процессор – не самая удачная идея. Так или иначе, но материнская плата Intel D850EMVR, оказавшаяся у нас в распоряжении, не предоставляет никакой оверклокерской функциональности. Поэтому, мне лишь остается поделиться той информацией, которую я вычитал в Сети. Энтузиасты разгоняют Pentium 4 3.06 ГГц до 3.4 ГГц. Ура, трубят фанфары…

Резюме

В этом разделе хотелось бы отметить несколько обстоятельств:
1. Hyper-Threading – это не миф, а реально работающая технология, которая дает ощутимый прирост производительности.
2. Для максимального эффекта от применения Hyper-Threading необходимо соответствующее программное обеспечение, способное вести параллельные вычисления. Помимо этого, для максимального эффекта потоки должны быть "разноплановыми". Один, например, нагружает в ALU, а другой в это время занимается вычислениями с плавающей точкой. Так, некоторые программы, ориентированные на традиционную многопроцессорность, разделяют задачу на идентичные потоки. В этом случае будет большой выигрыш на двухпроцессорной системе и - практически никакого на однопроцессорной системе с Hyper-Threading.
3. Для популяризации Hyper-Threading необходимо, чтобы ведущие разработчики программного обеспечения внедрили соответствующие оптимизации в свои продукты.
4. Отрадно отметить, что внедрением Hyper-Threading в сектор настольных ПК Intel несколько отодвинул планку рабочих станций. Теперь настольный компьютер захватил часть тех задач, которые традиционно связаны с двухпроцессорными рабочими станциями. Речь, в первую очередь, идет о задачах рендеринга и обработки графики.

Благодарим украинское представительство корпорации Intel, предоставившее тестовую платформу с HyperThreading для проведения испытаний.

Copyright 2020 K-flash