CFA LogoCFA Logo Computer
Новости Статьи Магазин Драйвера Контакты
Новости
RSS канал новостей
В конце марта компания ASRock анонсировала фирменную линейку графических ускорителей Phantom Gaming. ...
Компания Huawei продолжает заниматься расширением фирменной линейки смартфонов Y Series. Очередное ...
Компания Antec в своем очередном пресс-релизе анонсировала поставки фирменной серии блоков питания ...
Компания Thermalright отчиталась о готовности нового высокопроизводительного процессорного кулера ...
Компания Biostar сообщает в официальном пресс-релизе о готовности флагманской материнской платы ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

АРХИВ СТАТЕЙ ЖУРНАЛА «МОЙ КОМПЬЮТЕР» ЗА 2002 ГОД

За себя и за того парня

Максим НИКОЛЕНКО sunset_ua@bigmir.net

Поводом для написания материала, который вы держите в руках, послужило сообщение о начале предварительных поставок серверов модельного ряда x360 eServer от IBM. Самой интересной особенностью данного семейства серверов является P4 Foster в роли центрального процессора. А отличает этот процессор от всех остальных из семейства P4 одна оригинальная технология, имя которой Hyper-Threading.

I may not have a lot to give,

But what I’ve got I’ll give to you.

The Beatles

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

Новый взгляд на проблему параллелизма

Как известно из компьютерного фольклора, в жизни есть три вещи, от которых никуда не деться: смерть, налоги и желание иметь более быстрый процессор. Поскольку современная технология разгона, чего не скажешь о технологии производства микросхем, уже вплотную подошла к пределу запаса прочности процессорных ядер, одного чипа почти всегда уже маловато. Работа же нескольких ЦПУ сопровождается выполнением одной или ряда программ при некоторым уровне параллелизма вычислений, что может значительно ускорить сам процесс. Впрочем, учитывая современный степень технологических достижений, терминологически правильно говорить и об «одновременном выполнении» при архитектуре однопроцессорного компьютера.

Рассматривая параллелизм применительно к современному аппаратному обеспечению, можно выделить два его типа: параллелизм на уровне команд (присутствует в суперскалярных процессорах) и параллелизм на уровне потоков команд (имеет место при эксплуатации мультипроцессорных систем).

Виртуально и Windows, и Linux разделяют свою работу на потоки и процессы, которые могут выполняться независимо. Аналогичное «разделение труда» встречается и в движках баз данных, программах для научных вычислений, софте для обработки мультимедиа-данных. Для того чтобы сделать возможным масштабирование производительности подобных ресурсоемких программ, все они в основном пишутся для мультипроцессорных платформ, где легко получить доступ к целому пулу процессоров.

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

Hyper-Threading

Теперь пора перейти к делу и представить Hyper-Threading как интересную технологию, некую процессорную инициативу. Наличие этой опциональной особенности у центрального процессора позволяет одному физическому чипу выглядеть для операционной системы и приложений как два отдельных логических устройства, подобно современным двухпроцессорным компьютерам (рис. 1). Вот такое вот ни на что не похожее, интересное решение проблемы Рис. 1параллелизма вычислений.

Используя ресурсы одного ядра, два логических процессора могут выполнять, с определенными ограничениями, два потока команд. Разделение общего ядра — это не волшебная палочка и не панацея от всех ресурсоемких. Но благодаря этому достигается ощутимое увеличение производительности систем: ускоряется выполняемость процессором кода за счет объединения достоинств параллелизма на уровне команд и их потоков.

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

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

Если, сохраняя совместимость с существующим программным обеспечением, параллельности можно добиться только при условии полной, или хотя бы симулятивной независимости вычислительных блоков процессора, то чем же эта вот параллельность обеспечивается относительно архитектуры? Разные процессоры различаются по различным архитектурным единицам, которые непосредственно предназначены для обслуживания ресурсов ядра. Добавим в состав процессора еще одну архитектурную единицу, которая связана с остальными, снимем ограничения параллельности исполнительного уровня в самом ядре — получим немножко «заторможенные» два процессора. «Тормозить» в сравнении с двухпроцессорной платформой, состоящей из аналогичных процессоров, наша связка будет по разному, в зависимости от конкретного программного обеспечения.

Поскольку архитектурная единица дублируется в каждом логическом процессоре, она должна включать IA-32 регистры данных, сегментные регистры, регистры контроля и некоторые системные компоненты. Также каждый логический процессор имеет собственный программируемый контроллер прерываний (APIC). Фактически, благодаря существованию отдельных архитектурных единиц, каждый логический процессор относительно доступен в плане предоставляемых ресурсов. После подачи питания и инициализации любой логический процессор может быть независимо остановлен, возможны отдельные прерывания или специально помеченные программные потоки для каждого из них, независимо от состояния второго на том же кристалле.

В отличие от традиционных дуальных конфигураций, в которых используются два отдельных физических процессора семейства IA-32 (например, Intel Xeon), логические процессоры, входящие в состав ЦПУ с технологией Hyper-Threading, разделяют между собой ресурсы одного ядра, куда входит непосредственно вычислительный движок, кэш, интерфейс системной шины, а также прошивка ПЗУ чипа.

Да, и еще об одном важном моменте. Имеются сведения о присутствии в отключенном состоянии компонентов Hyper-Threading в процессорах линейки P4. Знать бы вот только, как все это включается :-).

И тут возникает вполне логичный вопрос — неужели до этого никто не додумался раньше и ничего подобного не было? Было. Первый «параллелизм» был введен в семейство процессоров Intel, с началом эксплуатации суперскалярной платформы, начиная с i486. Параллельное выполнение нескольких потоков стало возможным в массовом компьютинге после появления Intel Pentium II. Но все же новая технология Hyper-Threading позволяет поднять уровень работы в многозадачном режиме, сначала в процессорах Xeon, а потом и в семействе P4, на новый уровень. Уже сейчас процессоры настольных компьютеров могут, к примеру, выполнять вычисления с плавающей точкой, одновременно совершая операции ввода-вывода. В процессорах с новой технологией при переходе от одного потока команд и данных к другому не теряется непрерывность выполнения предыдущего потока, переключение между подачей данных к разным логическим процессорам происходит в среднем каждые несколько наносекунд.

Чем же отличается ядро P4, а также современного Xeon, от предыдущих поколений процессоров, что не позволяет их вычислительным ресурсам пропадать зря? Ответ прост, если взглянуть на спецификацию Pentium 4. Микроархитектура NetBurst, именно эта, пока недооцененная инновация, позволяет отдельным компонентам ядра процессора проявлять вычислительную самостоятельность, работая с совершенно разными наборами данных. И хотя микроархитектура NetBurst была создана с учетом задачи достижения оптимальной производительности при выполнении одного потока инструкций, типичной в таком случае является ситуация, когда за один такт задействованы не все внутренние устройства процессора. По данным исследований, проведенных компанией Intel, только 35 % потенциальных возможностей NetBurst используются современным программным кодом. Именно для того чтобы нагрузить простаивающие блоки процессора, в архитектуре Hyper-Threading и предусмотрена возможность для выполнения второго потока инструкций. При условии применения оптимизированного кода, такой трюк позволяет одному физическому процессору блестяще исполнять многопотоковый код.

Программное обеспечение

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

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

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

Итоги, или Что нас ждет впереди

Задолго до представления спецификации Hyper-Threading инженерам всех высокотехнологичных компаний, так или иначе связанных с процессорами, не давали спокойно спать простаивающие блоки все более мощных чипов, выполняющих все усложняющийся код. И технологию, похожую на современную Hyper-Threading, запланировали внедрить, как теперь уже известно, в серверы на базе процессоров Intel Xeon, чипов семейства Itanium. Однако многопотоковость, которая не пришла ниоткуда — просто ее существование долго игнорировали, как теперь уже видно, пленила умы разработчиков компьютерных систем. Чтобы более рационально использовать вычислительные ресурсы при объективных требованиях современного программного обеспечения, рано или поздно требовалось создать механизм для прозрачной утилизации пропадающего зазря процессорного времени. В Intel решили достичь этой цели, создав из простаивающих компонент ядра еще один «виртуальный» процессор, работающий независимо.

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

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

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

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

Рекомендуем ещё прочитать:






Данную страницу никто не комментировал. Вы можете стать первым.

Ваше имя:
Ваша почта:

RSS
Комментарий:
Введите символы или вычислите пример: *
captcha
Обновить





Хостинг на серверах в Украине, США и Германии. © sector.biz.ua 2006-2015 design by Vadim Popov