Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Цилькер Б.Я., Орлов С.А. Организация ЭВМ и систем

.pdf
Скачиваний:
2028
Добавлен:
02.05.2014
Размер:
22.66 Mб
Скачать

6 2 8 Глава 15. Потоковые и редукционные вычислительные системы

блок пересылает результат в блок формирования токенов. Рисунок 15.13, б демонстрирует ситуацию, когда токен уже пришел и на второй вход вершины SUB. Операция становится активируемой, и после ее выполнения результат передается на вершины A DD и MUL, которые ожидают входных токенов в ячейках FP+3 и FP+4 соответственно.

Типовая архитектура системы с явной адресацией токенов показана на рис. 15.14. Отметим, что функция согласования то'кенов стала достаточно короткой операцией, что позволяет внедрить ее в виде нескольких ступеней процессорного конвейера.

Макропотоковые вычислительные системы

Рассмотренный ранее механизм обработки с управлением от потока данных функ­ ционирует на уровне команд и его относят к потоковой обработке низкого уровня

(fine-grain dataflow). Данному подходу сопутствуют большие издержки при пере­ сылке операндов. Для уменьшения коммуникационных издержек необходимо при­ менять потоковую обработку на процедурном уровне, так называемую укрупнен­ ную потоковую или макропотоковую обработку (multithreading). Буквальный перевод английского термина означает потоковую обработку множества нитей.

Макропотоковая модель совмещает локальность программы, характерную для фон-неймановской модели, с толерантностью к задержкам на переключение за­ дач, свойственной потоковой архитектуре. Это достигается за счет того, что вер­ шина графа представляет собой не одну команду, а последовательность из нескольких команд, называемых нитью (thread). По этой причине макропотоко-

вую организацию часто и менуют крупнозернистой потоковой обработкой (coarse­ grained dataflow). Макропотоковая обработка сводится к потоковому выполнению нитей, в то время как внутри отдельной нити характер выполнения фон-нейма­ новский. Порядок обработки нитей меняется динамически в процессе вычисле­ ний, а последовательность команд в пределах нити определена при компиляции статически. Структура макропотоковой ВС представлена на рис. 15.15.

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

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

Существуют две формы макропотоковой обработки: без блокирования и с бло­ кированием, В модели без блокирования выполнение нити не может быть начато, пока не получены все необходимые данные. Будучи запущенной, нить выполняется до конца без приостановки. В варианте с блокированием запуск нити может быть произведен до получения всех операндов. Когда требуется отсутствующий опе­ ранд, нить приостанавливается (блокируется), а возобновление выполнения от­ кладывается на некоторое время. Процессор запоминает всю необходимую инфор­ мацию о состоянии и загружает на выполнение другую готовую нить. Модель с блокированием обеспечивает более мягкий подход к формированию нитей (час­ то это выражается в возможности использования более длинных нитей) за счет дополнительной аппаратуры для хранения блокированных нитей.

6 3 0 Глава 15. Потоковые и редукционные вычислительные системы

дого из них. Это не означает, что в процессоре имеются два вычислительных ядра — оба логических процессора конкурируют за ресурсы единственного вычислитель­ ного ядра,' Следствием конкуренции является более эффективная загрузка всех ресурсов процессора,

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

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

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

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

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

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

Вычислительные системы с управлением вычислениями от потока данных 6 3 1

положенные между основными ступенями конвейера. Применяемое здесь разде­ ление ресурсов можно условно назвать статическим: каждая буферная память (очедедь) разбивается пополам, и за каждым логическим процессором закрепляется своя половина очереди.

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

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

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

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

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

дающиеся главным образом в блоке для операций с плавающей запятой, а дру-

6 3 2 Глава 15. Потоковые и редукционные вычислительные системы

гой - состоять преимущественно из команд целочисленной арифметики и обра­ щения к памяти,

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

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

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

По оценке Intel, прирост скорости вычислений в некоторых случаях может до­ стигать 25-35%. В приложениях, ориентированных на многозадачность, програм­ мы ускоряются на 15-20%. Возможны, однако, ситуации, когда прирост в быстро­ действии может быть незаметен и даже быть отрицательным. Таким образом, эффективность технологии находится в прямой зависимости от характера реали­ зуемого программного приложения. Максимальная отдача достигается при работе серверных приложений за счет разнообразия процессорных операций.

В настоящий момент аппаратная поддержка технологии заложена в микропро­ цессоры Pentium 4, причем, по информации Intel, в процессоре Pentium 4 Хеоп это потребовало 5% дополнительной площади на кристалле. Программная поддержка технологии предусмотрена в операционных системах Windows 2000, Windows XP и Windows .NET Server (в предшествующих ОС Windows такая возможность от­ сутствует).

Вычислительные системы с управлением вычислениями по запросу

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

ция вычисл ител ь ного процесса носи т н а зван ие управления вычислениями по запрос