Цилькер Б.Я., Орлов С.А. Организация ЭВМ и систем
.pdf6 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 такая возможность от сутствует).
Вычислительные системы с управлением вычислениями по запросу
В системах с управлением от потока данных каждая команда, для которой имеют ся все необходимые операнды, немедленно выполняется. Однако для получения окончательного результата многие из этих вычислений оказываются ненужными. Отсюда прагматичным представляется иной подход, когда вычисления иници ируются не по готовности данных, а на основе запроса на данные. Такая организа-
ция вычисл ител ь ного процесса носи т н а зван ие управления вычислениями по запрос