Другие журналы
|
научное издание МГТУ им. Н.Э. БауманаНАУКА и ОБРАЗОВАНИЕИздатель ФГБОУ ВПО "МГТУ им. Н.Э. Баумана". Эл № ФС 77 - 48211. ISSN 1994-0408![]()
Иерархическая модель глобальной оптимизации у параллельных объектных программ
#8 август 2006 B. П. Корячко, д-р техн. наук проф., C. В. Скворцов, канд. техн. наук доц., Рязанская государственная радиотехническая академия
Иерархическая модель глобальной оптимизации у параллельных объектных программ
Предлагается модель и метод глобальной оптимизации объектного кода для RISC-процессоров с управлением по технологии VLIW, основанные на использовании дизъюнктивных графов информационно-структурных зависимостей.
Введение Наиболее распространенным подходом к решению задачи синтеза параллельного объектного кода для программ с циклами и ветвлениями является последовательное выделение линейных участков (ЛУ) и синтез командных слов (КС) для каждого ЛУ в отдельности с последующим объединением полученных фрагментов кода [1—4]. Однако результаты исследований [1, 4—7] показывают, что потенциальная возможность параллелизма существует и для операций, принадлежащих разным ЛУ исходной программы. Выявление таких операций проводится методами глобального анализа программ [4, 6, 7], разработка и развитие которых приобретают особую актуальность в связи с распространением RISC-процессоров с управлением параллельным выполнением операций по технологии длинного командного слова (VLIW) [4]. Наиболее известными методами глобального анализа являются планирование трасс [4, 6] и проникающее планирование [4, 7]. Суть этих методов сводится к определению комбинаций ЛУ, операции из которых целесообразно исследовать на возможность параллельного исполнения. Планирование трасс предполагает предварительное независимое формирование списка КС для каждого ЛУ с последующим определением наиболее вероятных трасс из нескольких последовательных ЛУ и улучшением полученного кода за счет перемещения отдельных операций между этими участками. Наличие условных переходов в пределах одной трассы приводит к необходимости дублирования некоторых перемещенных операций при оптимизации последующих трасс программы. Проникающее планирование исключает дублирование операций в процессе глобального переупорядочения кода за границами ЛУ и выполняется над моделью программы, которая является обобщением управляющего графа (вершины соответствуют ЛУ, а дуги определяют возможные пути исполнения). Параллелизм в программе выявляется перемещением между вершинами графовой модели условных и безусловных операций. Результатом является преобразованный управляющий граф, обеспечивающий максимальный параллелизм для идеального компьютера, причем для синтеза реального кода требуется выполнить генерацию КС, в которых учитываются ограничения доступа к общим ресурсам процессора. В работах [8—10]
описана новая формальная модель организации параллельных вычислений на уровне операций
— дизъюнктивный граф информационно-структурных зависимостей Н* = (А,
V, Е). Дуги графа Анализ свойств дизъюнктивных графов информационно-структурных зависимостей [8, 9] позволяет предложить на их основе оригинальный подход к глобальной оптимизации объектного кода, не требующий предварительного синтеза КС для всех ЛУ в отдельности (ограничиваясь выделением циклических участков и альтернативных ветвей) и сочетающий преимущества обоих указанных выше методов, а именно: · глобальное преобразование кода достигается перемещением операций программы между различными ЛУ; · отсутствует дублирование операций исходной программы; · учитываются ограничения архитектуры процессора.
Иерархическая графовая модель программы Предположим, что
в процессе трансляции исходная программа преобразована в последовательность А
= (а1, a2,..., аn) операций, представленных в стандартной машинно-независимой
тетрадной форме [11] вида Информационная
зависимость операций Для вершин Gб с помощью логических функций И и ИСКЛЮЧАЮЩЕЕ
ИЛИ (ИСКЛ. ИЛИ) определены условия входа и выхода, которые описывают логику программы,
т. е. каждой вершине сопоставлена одна из пар вида (&, &), (&, В корректной билогической
модели [13] вершина Граф Gб
= (А, Vб) позволяет выполнить глобальный
анализ структуры (логики) программы, но не учитывает ограничений на параллелизм операций
из-за конфликтов по ресурсам. Поэтому предлагается использовать билогическую модель
Gб в качестве источника свойств глобального
параллелизма операций, необходимых для построения иерархической графовой модели H** = (А*, V*, Е*)
синтеза параллельного объектного кода с циклами и ветвлениями на основе Для каждого значения
p < p* число элементов
множества Mp определяется числом циклических
и альтернативных ветвей равного уровня вложенности, а множество Построение модели
Н** осуществляется посредством эквивалентных, с точки зрения семантики программы,
преобразований билогического графа, начиная с низшего (p
= 0) уровня иерархии, для которого Для этого в текущей
билогической модели Рис. 1. Преобразование циклических фрагментов: а — цикл с постусловием в билогической модели; б — дизъюнктивный подграф p-го уровня иерархии для цикла с постусловием; в — результат стягивания цикла с постусловием; г — цикл с предусловием в исходной билогической модели; д — дизъюнктивный подграф p-гo уровня для цикла с предусловием; е — результат стягивания цикла с предусловием
Схемы стягивания циклических фрагментов
билогической модели в вершины Рис. 2. Преобразование условных и альтернативных ветвей: а — условная ветвь программы в билогической модели; б — дизъюнктивный подграф p-го уровня иерархии для условной ветви; в — результат стягивания условной ветви; г — альтернативные ветви в билогической модели; д — результат стягивания альтернативных ветвей; e — составная макровершина иерархического дизъюнктивного графа
Условная ветвь
программы (рис. 2, а—2, в), которой соответствует дизъюнктивный граф
Затем каждая вершина Если полученный
билогический граф В противном случае
процедура стягивания подграфов повторяется для следующего уровня иерархии, причем
каждый раз, когда множество Псевдоконфликт
доступа к ресурсам определен для каждой пары информационно независимых элементов
из Окончательно иерархическая
модель Н** = (А*, V*, Е*) синтеза
параллельного объектного кода с циклами и ветвлениями имеет вид дизъюнктивного графа
Алгоритм синтеза КС объектной программы Для решения задачи глобальной оптимизации параллельного кода при синтезе объектных программ с циклами и ветвлениями предлагается следующий итерационный алгоритм, который базируется на рассмотренной дизъюнктивной иерархической модели, а для определения временных характеристик макрокоманд использует процедуру синтеза последовательности командных слов для линейного фрагмента программы по заданному критерию качества [8]. Данные:
иерархическая модель синтеза Н** = (А*, V*,
Е*); множества Результаты: последовательность
LW = (LW1,
LW2, ..., LWN)
КС для программы в целом; списки Шаг 1. Присвоить p = 0. Шаг 2. Если p = p*, то выполнить переход к шагу 6. Шаг 3. Для
каждой вершины Шаг 4. Для
каждой вершины Шаг 5. Присвоить p = p + 1 и выполнить переход к шагу 2. Шаг 6. На основе дизъюнктивного графа Н** выполнить синтез последовательности LW = (LW1, LW2,..., LWN) с циклами и ветвлениями. Шаг 7. В
полученном списке LW найти макрокоманду Шаг 8. Если список LW изменился, повторить выполнение шага 7. В противном случае конец алгоритма. Следует отметить,
что представленный алгоритм позволяет выполнять синтез объектного кода как после,
так и во время формирования иерархической модели глобальной оптимизации. Во втором
случае синтез соответствующих списков Покажем преимущества предлагаемого подхода на примере решения задачи синтеза параллельной объектной программы LW c циклами и ветвлениями по критерию минимального времени исполнения. Пусть фрагмент
исходной программы, представленной в тетрадной форме, а также матрица
a1 = (add, B, 10, D); a2 = (add, C, 2, T1); a3 = (sub, D, T1, T2); a4 = (jmp, T2, , a7); a5 = (add, T2, 1, Y); a6 = (jm, , , a8); a7 = (store, T2, , Y); a8 = (sub, Y, Z, T3); a9 = (add, T1, X, T4); a10 = (add, T4, 3, T5); a11 = (store, T5, , D). Таблица Синтез командных слов для линейных участков Фрагмент программы содержит четыре ЛУ: LB1 = (a1, a2, a3, a4); LB2 = (a5, a6); LB3 = (a7); LB4 = (a8, a9, a10, a11), где LB2
и LB3 являются альтернативными, так как
при конкретной реализации программы выполняется только один из них. Время выполнения
любой операции составляет один такт, а операнды Формирование последовательностей длинных КС для каждого ЛУ в отдельности показаны в таблице. Время исполнения фрагмента программы в целом составляет восемь и семь тактов по трассам LB1, LB2, LB4 и LB1, LB3, LB4 соответственно. Модель синтеза КС, учитывающая глобальную
структуру исходного фрагмента программы, формируется на основе билогического графа
(рис. 3, a), где символом & обозначена конъюнктивная
логика вершин. Иерархическая модель H** = (А*,
V*, Е*), приведенная на рис. 3, б, определяется
как дизъюнктивный граф Рис. 3. Модели глобальной оптимизации кода: а — билогический граф программы; б — иерархический дизъюнктивный граф; в — ориентированный граф, определяющий решение; г — список командных слов объектной программы
Множество Е* определяется
как Ребра Искомый орграф
Gi* = (A,
Vi*) с минимальной длиной критического
пути, порождаемый дизъюнктивным графом
* * *
В статье показана возможность и предложен метод решения задачи глобальной оптимизации параллельных объектных программ для RISC-процессоров с управлением по технологии VLIW, основанный на применении иерархической графовой модели, которая представляется множеством вложенных дизъюнктивных графов информационно-структурных зависимостей [9]. Это позволяет использовать единые алгоритмы [8] синтеза длинных КС объектной программы как для отдельных ЛУ, так и для программ с циклами и ветвлениями в целом, причем во втором случае достигается существенное сокращение общего числа КС и времени реализации за счет параллельного исполнения операций, принадлежащих разным линейным участкам исходной программы.
Список литературы 1. Трахтенгерц Э. А. Программное обеспечение параллельных процессов. М.: Наука, 1987. 272 с. 2. Французов Ю. А. Обзор методов распараллеливания кода и программной конвейеризации // Программирование. 1992. № 3. С. 16-37. 3. Local microcode compaction techniques / D. Landscov, S. Davidson, B. Shriver, P. W. Mallett // ACM Comput. Surveys. 1980. V. 12. № 3. P. 261-294. 4. Евстигнеев В. А. Некоторые особенности программного обеспечения ЭВМ с длинным командным словом // Программирование. 1991. № 2. С. 69—80. 5. Riscman E. M., Foster С. С. The inhibition of potential parallelism by conditional jumps // IEEE Trans. Comput. 1972. V. C-21. № 12. P. 1405-1411. 6. Fisher J. A. Trace scheduling: A technique for global microcode compaction // IEEE Trans. Comput. 1981. V. C-30. № 7. P. 478-490. 7. Nicolau A. Uniform parallelism exploitation in ordinary programs // Proc. of the 1985 Intern. Conf. on Parallel Processing, Aug. 1985. P. 614-618. 8. Скворцов С. В. Оптимизация кода для суперскалярных процессоров с использованием дизъюнктивных графов // Программирование. 1996. № 2. С. 41—52. 9. Корячко В. П., Скворцов С. В., Телков И. А. Модель планирования параллельных процессов в суперскалярных процессорах// Информационные технологии. 1997. № 1. С. 8—12. 10. Скворцов С. В. Целочисленные модели оптимизации кода по критерию времени // Информационные технологии. 1997. № 10. С. 2-7. 11. Грис Д. Конструирование компиляторов для цифровых вычислительных машин. М.: Мир, 1975. 544 с. 12. Головкин Б. А. Расчет характеристик и планирование параллельных вычислительных процессов. М.: Радио и связь, 1983. 272 с. 13. Рыжков А. П. Правильная билогическая граф-модель параллельного вычислительного процесса и ее свойства // Изв. АН СССР. Техническая кибернетика. 1976. № 2. С. 96—104.
ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ, № 9, 1998 ВЫЧИСЛИТЕЛЬНЫЕ СИСТЕМЫ И СЕТИ
Публикации с ключевыми словами: ООП, RISC, Параллельное программирование., VLIW, глобальная оптимизация, иерархия, модели программ, графовые модели, преобразование циклов, преобразование альтернатив Публикации со словами: ООП, RISC, Параллельное программирование., VLIW, глобальная оптимизация, иерархия, модели программ, графовые модели, преобразование циклов, преобразование альтернатив Смотри также: Тематические рубрики: Поделиться:
|
|
||||||||||||||||||||||||||||||||
|