Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Гиперпотоковая обработка

В основе гиперпотоковой технологии (hyperthreading), разработанной фир-мой Intel и впервые реализованной в микропроцессоре Pentium 4, лежит то, что современные процессоры являются суперскалярными и многоконвейерными, т.е. выполнение команд в них идет параллельно, по этапам и на нескольких конвейерах сразу. Гиперпотоковая обработка раскрывает этот потенциал таким образом, чтобы функциональные блоки процессора были максимально загру-жены. Эта цель достигается за счет сочетания соответствующих аппаратных и программных средств.

Выполняемая программа разбивается на 2 параллельных потока (threads). Задача компилятора (на стадии подготовки программы) и операционной систе- мы (на этапе выполнения программы) заключается в формировании таких пос-ледовательностей независимых команд, которые процессор мог бы обрабаты- вать параллельно, заполняя функциональные блоки, не занятые одним из пото-ков, подходящими командами из другого независимого потока.

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

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

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

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

Рассмотрим особенности реализации гиперпотоковой технологии в про-цессоре Pentium 4 Xeon. Процессор способен параллельно обрабатывать два потока в двух логических процессорах. Чтобы выглядеть для операционной сис-темы и пользователя как два логических процессора, физический процессор должен поддерживать информацию одновременно для двух отдельных и не-зависимых потоков, распределяя между ними свои ресурсы. В зависимости от вида ресурса применяются три подхода: дублирование, разделение и совместное использование.

Дублированные ресурсы. Для поддержания двух полностью независи- мых контекстов на каждом из логических процессоров некоторые ресурсы про-цессора необходимо дублировать. Это относится к счетчику команд (IP, Instruction Pointer), позволяющему каждому из логических процессоров отсле-живать адрес очередной команды потока. Для параллельного выполнения не-скольких процессов необходимо столько IP, сколько потоков команд необхо- димо отслеживать одновременно, т.е. у каждого логического процессора дол- жен быть свой счетчик команд. В процессоре Xeon максимальное количество потоков команд равно двум, поэтому требуется два счетчика команд. Кроме то- го, в процессоре имеются две таблицы распределения регистров (RAT, Register Allocation Table), каждая из которых обеспечивает отображение восьми регист-ров общего назначения (РОН) и восьми регистров с плавающей запятой (РПЗ), относящихся к одному логическому процессору, на совместно используемый регистровый файл из 128 РОН и 128 РПЗ. Таким образом, RAT – это дубли-рованный ресурс, управляющий совместно используемым регистровым фай-лом.

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

Другим видом очередей являются три очереди диспетчеризации команд, разделяемые динамически. Вместо того чтобы из предусмотренных в каждой очереди двенадцати входов фиксировано назначить входы 0-5 логическому процессору (ЛП) 0, а входы 6-11 – логическому процессору 1, каждому ЛП разрешается использовать любые входы очереди, лишь бы их общее число не превысило шести. Отсутствие привязки потоков к конкретным входам очереди позволяет не принимать во внимание наличие двух потоков и расценивать обе половины как единую очередь. Очередь диспетчеризации команд просматривает каждую команду в общей очереди, оценивает зависимости между командами, проверяет доступность ресурсов, необходимых для выполнения команды, и планирует команду к исполнению. Таким образом, выдача команд на исполне- ние не зависит от того, какому потоку они принадлежат. Динамическое раз-деление очередей диспетчеризации команд предотвращает монополизацию оче-редей каким-либо одним из логических процессоров.

Для обеспечения максимальной производительности при обработке про-цессором Xeon только одного потока ему предоставляются все ресурсы про-цессора. В динамически разделяемых очередях снимаются ограничения на ко-личество входов, доступных одному потоку, а в статически разделяемых оче- редях отменяется их разбиение на две половины.

Совместно используемые ресурсы. Первую группу общих ресурсов об-разуют функциональные блоки: целочисленные операционные устройства, бло- ки операций с плавающей запятой и блоки обращения (чтения/записи) к памя- ти. Эти ресурсы «не знают», из какого ЛП поступила команда. То же самое относится и к регистровому файлу – второму виду совместно используемых ресурсов.

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

Третий вид общих ресурсов – кэш-память. Процессор Xeon работает с кэш-памятью трех уровней (L1, L2 и L3) и кэш-памятью трассировки. Оба ло-гических процессора совместно используют одну и ту же кэш-память и хра-нящиеся в ней данные. Если поток, обрабатываемый логическим процессором 0, хочет прочитать некоторые данные, кэшированные логическим процессором 1, он может взять их из общего кэша. Использование в гиперпотоковом про-цессоре одной и той же кэш-памяти сразу двумя логическими процессорами приводит к возрастанию вероятности конфликтов и снижения производитель-ности.

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

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

В настоящий момент аппаратная поддержка технологии заложена в мик-ропроцессоры Pentium 4. Программная поддержка технологии предусмотрена в операционных системах Windows 2000, Windows XP и Windows.NET Server.

 

<== предыдущая лекция | следующая лекция ==>
Макропотоковые вычислительные системы | Вычислительные системы с управлением вычислениями по запросу
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 1008; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.014 сек.