Московский государственный университет путей сообщения
Опубликован: 22.12.2006 | Доступ: свободный | Студентов: 2440 / 570 | Оценка: 4.07 / 4.02 | Длительность: 16:07:00
ISBN: 978-5-9556-0071-0
Специальности: Разработчик аппаратуры

Лекция 6: Оптимальное потактовое расписание выполнения работ в многофункциональном арифметическо-логическом устройстве

< Лекция 5 || Лекция 6: 12345 || Лекция 7 >
Аннотация: Рассматривается проблема составления потактового расписания работы процессора, управляемого в каждом такте. Компоновка "длинных" командных слов производится на завершающей стадии трансляции и характерна для суперскалеров VLIW- и EPIC -архитектуры. Освещаются как не оптимизированная, "быстрая", компоновка, так и компоновка, использующая решающие правила на основе исследования графа работ внутри непрерываемого участка программы. При компоновке учитываются и команды вида if-then-else, не использующие условный переход.
Ключевые слова: процессор, АЛУ, программирование, VLIW, архитектура, EPIC, ВС, транслятор, экспоненциальная сложность, эвристический метод, Алгоритм диспетчера, анализ, система команд ВС, распараллеливание, работ, программа, взаимно независимые, ПОЛИЗ, польская инверсная, запись, модельное время, операции, частичная упорядоченность задач, средство синхронизации, NOP, бит значимости, множества, очередь, максимальным временем выполнения, оптимизация, постановка задачи, операций, информационный граф, случайная величина, время выполнения, ярусно-параллельная форма, значение, алгоритм, список, регистр, таблица, одноместная операция, if, then и else, if-then-else, команда, слово, жесткая связь, запуск, компоновка, определение, длина, истина, предикат, счетчик, время выполнения команды, альтернативные операторы, матрица следования, матрица, адрес, критический путь, поздние сроки начала выполнения работ, Дополнение, транзитивные связи, информация

Задача оптимальной компоновки "длинных" командных слов

Под суперскалером будем понимать центральный процессор (ЦП) вычислительной системы (возможно, многопроцессорной), не выполняющий векторных операций по одной команде, но использующий все современные способы достижения максимальной производительности. В частности, его арифметическо-логическое устройство (АЛУ) содержит несколько конвейерных исполнительных устройств (ИУ), специализированных по типам операций. Программирование работы таких АЛУ требует выявления параллелизма и составления расписания загрузки ИУ в каждом машинном такте. Это приводит к модели "длинного" командного слова ( VLIW -архитектура), где каждая позиция слова соответствует инструкции для соответствующего ИУ. Конечно, программный код должен отражать сжатие информации, и окончательный вид программы реализует переменную длину командного слова (как в EPIC -архитектуре). Такая перекомпоновка "длинных" командных слов, как промежуточной формы представления параллельного расписания, не представляет серьезных трудностей, ибо рутинная перекодировка не связана с решением сложных оптимизационных задач. Потактовое расписание должно быть получено, для какой бы архитектуры оно не предназначалось.

Развитие ВС сопровождается возложением многих функций управления на аппаратуру, т.е. усложнением схем, но развивается и встречная тенденция — априорного планирования параллельного процесса, возложения таких функций на транслятор. Транслятор планирует оптимальное использование каждого ИУ. То есть традиционные функции транслятора дополняются функциями диспетчера — оптимизатора, формирующего на уровне машинного языка "длинные" командные слова.

Структура "длинного" командного слова в ВС, где управление производится каждым тактом машины, такова:

\begin{center}
\begin{tabular}{|c|c|c|c|}
\hline
инструкция ИУ1  &  инструкция ИУ2  &  . . . . . . . . & инструкция ИУп\\
\hline
\end{tabular}
\end{center}

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

Поиски подходов к решению задачи статического распараллеливания на этапе трансляции с неизбежностью приводят к имитации динамики выполнения параллельной программы. Эта неизбежность обусловлена высокой (экспоненциальной) сложностью точного решения задач распараллеливания, их высокой размерностью, необходимостью учета многих особенностей вычислительного процесса. Таким образом, целесообразно использовать эвристические методы распараллеливания, применяемые при диспетчировании ВС. Именно на этом пути эффективно используются простые алгоритмы диспетчеров параллельных ВС, при ограничениях лишь на способ представления оптимального расписания. В то же время "статический подход" значительно расширяет возможности распараллеливания, допуская различную степень приближения расписаний к точным оптимальным. Возможно "быстрое" построение расписаний, более отстоящих от точных минимальных, а возможен глубокий анализ, вплоть до применения методов точного решения задач распараллеливания.

Ниже мы представим конкретные алгоритмы, в интересах обобщения — наименее обусловленные детальным рассмотрением особенностей системы команд ВС.

Два подхода по скорости и "оптимальности"

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

Представим общую схему распараллеливания алгоритма, записанного в виде программы на некотором алгоритмическом языке (рис. 6.1).

Схема компоновки "длинных" команд

увеличить изображение
Рис. 6.1. Схема компоновки "длинных" команд

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

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

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

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

Как каждый имитационный процесс, процесс динамического диспетчирования оперирует модельным временем — счетчиком тактов работы ВС. Увеличивая модельное время на такт, мы устанавливаем состояние ИУ ЦП, выполняющих назначенные им ранее операции, в настоящий момент времени (блок 3). При этом нас интересуют те работы, выполнение которых закончилось (блок 4) — ведь частичная упорядоченность задач обусловлена именно тем, что выполнение одних работ "разрешает" начало выполнения других.

Поэтому в блоке 5, с учетом закончившихся работ, выявляются все те задачи (часть их могла остаться с предшествующих шагов составления расписания), которые могут быть начаты в данном текущем такте работы ЦП. Однако множество таких работ может оказаться и пустым. Тогда, если ЦП обладает такими средствами синхронизации, которые позволяют ждать возможности выполнения операций до появления необходимых аргументов, можно перейти к анализу состояния ИУ ЦП в следующем такте, отметив, что в данном такте задание отсутствует (NOP — отсутствие операций). Такая синхронизация в "Эльбрус-3" производится при считывании в регистры СОЗУ: с помощью битов значимости. Если в ВС подобная синхронизация не предусмотрена, то формируемая программа в явном виде будет обладать "дырками", соответствующими NOP'ам, или специальным указанием на их количество.

Блок 6 принципиально важен. Именно в нем реализуется основное решающее правило назначения работ для их выполнения, т.е. — оптимизированное назначение. Существует некоторое количество хорошо зарекомендовавших себя на практике решающих правил, использующихся при диспетчировании параллельных ВС.

Одно из них статистически обосновано и применимо для однородных ВС: "Из множества работ, выполнение которых можно начать в данный момент времени, в первую очередь назначать работу с максимальным временем выполнения".

Однако мы рассматриваем модель неоднородного АЛУ ЦП, и будем пользоваться в порядке приоритета следующими решающими правилами:

"Из множества работ, выполнение которых можно начать в данный момент времени, в первую очередь назначать работу с минимальным из максимальных сроков начала выполнения".

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

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

Именно исходя из сказанного, можно говорить о компромиссе между скоростью компоновки и степенью ее оптимальности.

Блок 7 отражает способ формирования расписания работы устройств АЛУ в анализируемом такте, тот способ, который нас интересует, — в виде командного слова.

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

< Лекция 5 || Лекция 6: 12345 || Лекция 7 >