Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Механизм Hyper-Threading




Работа персонального компьютера подразумевает многопоточные вычисления. Это касается не только серверов, но также и рабочих станций и настольных систем. Потоки выявляются в одном или нескольких приложениях. Есть почти всегда больше одного активного потока (чтобы удостовериться - откройте в Windows 2000/XP Менеджер Задач и отобразите список потоков). В то же самое время обычный процессор может выполнить только один поток одновременно и должен постоянно переключаться между ними.

Одной из полезных особенностей архитектуры процессора Pentium 4 является возможность достижения очень высоких тактовых частот. Отлаживая технологию производства, корпорация Intel может постепенно наращивать частоту процессора. Что она и делает, с завидной периодичностью объявляя все новые и новые модели Pentium 4. Технология Hyper-Threading в настольных компьютерах впервые была реализована при выпуске процессора 3.06 ГГц и открыла практику многопроцессорной обработки на обычных персональных компьютерах.

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

Технология Hyper-Threading была сначала реализована в процессоре Intel Xeon(MP). Процессор Intel Xeon(MP), появившийся весной 2002 г., использует ядро, подобное Pentium 4 Willamette (256 Кб кэш второго уровня, 1 Мб..512 Кб кэш третьего уровня) и поддерживает конфигурации с 4 процессорами. Поддержка Hyper-Threading также доступна в процессоре для рабочих станций - Intel Xeon (ядро Prestonia, 512 Кб кэш второго уровня), который появился на рынке ранее, чем Intel Xeon(MP).


Hyper-Threading основана на том принципе, что в каждый момент времени только часть ресурсов процессора используется для выполнения кода программы. Неиспользованные ресурсы также могут быть задействованы, например для параллельного выполнения другого приложения (или другого потока того же самого приложения). Один физический процессор формирует два логических процессора (LP), которые совместно используют вычислительные ресурсы центрального процессора. На самом деле внутри процессора нет двух вычислительных ядер, как, например, в серверном процессоре IBM POWER4. Удвоены только массивы регистров - как общего назначения, так и служебных.

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

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

Однозадачный (ST) и Многозадачный (МТ)

 

В режиме ST только один логический процессор активен: тот, который использует доступные ресурсы полностью (режимы ST0 и ST1); другой LP остановлен командой HALT. Когда появляется второй поток, второй LP включается (по прерыванию), и физический центральный процессор переключается в режим МП. Останов неиспользуемого LP осуществляется операционной системой, которая отвечает за выполнение одного потока в монопольном режиме (без Hyper-Threading).

Каждый из двух LP имеет архитектурный статус (AS), который включает регистры различных типов: универсальные, управления, расширенного программируемого контроллера прерываний (APIC) и сервисные. Каждый LP имеет собственный контроллер прерываний и набор регистров. Для правильного обращения к ним имеется Таблица Псевдонимов Регистров (Register Alias Table - RAT), которая прослеживает соответствие между 8 универсальными регистрами 32-разрядной архитектуры (IA-32) и 128 регистрами физического центрального процессора (одна RAT для каждого LP).

Когда выполняются два потока, одновременно готовятся два следующих указателя инструкций. Большинство команд извлекаются из кэш трассировки (ТС), где они хранятся в декодированной форме; два активных LP обращаются к ТС, каждый в своем цикле. В то же самое время, когда только один LP активен, он монопольно обращается к ТС. Доступ к ROM микропрограмм аналогичен.

Модуль ITLB (буфер предыстории трансляции команды) используется, когда требуемые команды отсутствуют в кэш команд. Его содержимое дублируется, и код команды передается соответствующему потоку. Блок декодирования инструкций архитектуры IA-32 является разделяемым; когда декодирование команд требуется каждому потоку, блок обслуживает их поочередно (в цикле).

Очередь Uop и блок распределения расщеплены на два подблока и предоставляют половину элементов для каждого LP. Пять планировщиков обрабатывают очереди декодированных команд (Uops), несмотря на то что они принадлежат разным LP (LP0/LP1) и передают команды соответствующим модулям выполнения (Execution Units) - в зависимости от готовности выполнения предыдущих и доступности последней команды. Кэш всех уровней являются полностью общими для логических процессоров, хотя для обеспечения целостности данных входы в DTLB (буфер предыстории конвертирования данных) имеют описатели в форме идентификаторов логических процессоров.

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

• дублированные;

• полностью разделяемые;

• с помеченным входом;

• разделяемые в зависимости от режима выполнения - ST0/ST1 или МТ.

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

Для предотвращения этого эффекта Intel рекомендует использовать команду PAUSE вместо пустых циклов ожидания (появилась в инструкциях IA-32 для Pentium 4). Кроме того, над автоматической и полуавтоматической оптимизацией кода теперь много работают - например, Intel OpenMP C++ / ФОРТРАН; ряд компиляторов достиг здесь большого успеха.

Другая цель Intel при развитии технологии Hyper-Threading состояла в том, чтобы число транзисторов, поверхность кристалла и потребляемая мощность росли намного медленнее при значительном увеличении эффективности. Hyper-Threading в Xeon /Xeon MP увеличило поверхность и потребляемую мощность только на 5 % при резком приросте производительности.

Производительность

Приложение может быть выполнено на двух процессорах быстрее, чем на одном, если:

• есть два или более одновременно выполняемых потоков;

• эти потоки не препятствуют выполнению друг друга - например, они не нуждаются одновременно в одном из ресурсов (внешнее запоминающее устройство или сетевой интерфейс).

 

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

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

В общем, прирост скорости сильно зависит от выполняемых задач. В некоторых случаях он может достигать 25-35% (по данным Intel). Или, например, "заточенные" под многозадачность программы ускоряются на 15-20%. А в других случаях разница не будет заметна или вообще будет отрицательной.

Поддержка

Поддержка Hyper-Threading была заложена в самые первые процессоры семейства Pentium 4 (с ядром Willamette), но до последнего времени не работала. В смежном рынке серверов и рабочих станций на процессорах Xeon она была включена на год раньше. На рынке настольных компьютеров ее появление было задержано, потому что до последнего времени на настольном рынке доминировала ОС Windows 9x/ME, которая принципиально не способна поддерживать многопроцессорный режим работы. Только с распространением Windows XP появилась возможность задействовать Hyper-Threading в обычных условиях.

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

· i850E (Rambus-чипсет);

· i845E, i845PE;

· i845GE, i845GV;

· i865G/P/PE;

· i875P;

· все будущие чипсеты Intel для настольных ПК и рабочих станций, а также серверные чипсеты ServerWorks.

 

Новые чипсеты фирм VIA и SIS также поддерживают эту технологию.

Кроме чипсета, о Hyper-Threading должна «знать» и система BIOS на материнской плате. Это нужно для того, чтобы была подготовлена таблица конфигурации и произведена инициализация "второго процессора".

Операционная система идентифицирует "оба процессора" без проблем, но только если выполнены два условия:

• установлена BIOS с поддержкой Hyper-Threading; если в BIOS заблокирована поддержка Hyper-Threading, операционная система идентифицирует только физические процессоры.

• используется ACPI, чтобы сообщить операционной системе о дополнительных логических процессорах. Именно поэтому, чтобы разрешить Hyper-Threading, ACPI должен быть активизирован в CMOS Setup; HAL (Уровень Аппаратной абстракции) с поддержкой ACPI нужно также разрешить для операционной системы.

В Windows 2000 нужно просто заменить HAL Стандартного PC на ACPI Uni-/Multiprocessor PC, изменяя "компьютерный драйвер" в менеджере устройств. Единственный способ переключиться на ACPI HAL в Windows XP состоит в том, чтобы переустановить систему поверх текущей.

Для работы новой технологии нужна также одна из двух операционных систем - либо Windows XP (Home или Pro), либо Linux с новым ядром, поддерживающим Hyper-Threading.

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

Примечание: общие сведения об ACPI

Расширенный интерфейс управления питанием и конфигурациями (Advanced Configuration and Power Interface, ACPI) является открытым промышленным стандартом, определяющим гибкий и расширяемый интерфейс аппаратуры с системной платой. Разработчики программного обеспечения используют эту спецификацию для объединения возможностей управления электропитанием во всей компьютерной системе, включая аппаратуру, операционную систему и прикладное программное обеспечение. Это объединение позволяет Windows определять активные приложения и контролировать все ресурсы управления питанием для подсистем компьютера и периферийного оборудования.

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

ACPI является основой промышленной инициативы OnNow, которая позволяет производителям систем поставлять компьютеры, которые запускаются прикосновением к клавише на клавиатуре.

ACPI необходим для использования всех преимуществ управления питанием и технологии Plug and Play в Windows. Чтобы изменить параметры управления электропитанием, позволяющие реализовать преимущества ACPI, используйте компонент «Электропитание» на панели управления.

Во время установки Windows ACPI активизируется только в том случае, если присутствуют все компоненты управления электропитанием. Некоторые компоненты, особенно устаревшие, не поддерживают управление электропитанием, что может вызвать ошибки в работе программы «Автоматического управления электропитанием» (АРМ) или помешать установке ACPI. Примеры таких компонентов - это шина ISA (Industry Standard Architecture) и устаревшая система BIOS.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных