ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА
УДК 004.384:004.272:004.414.2
Э. И. Ватутин, И. В. Зотов, В. С. Титов, М. М. Аль-Ашвал
РЕАЛИЗАЦИЯ ОПЕРАЦИИ ВСТАВКИ ПОДДЕРЕВА ПРИ АППАРАТНО-ОРИЕНТИРОВАННОЙ ОБРАБОТКЕ ^-ВЫРАЖЕНИЙ
Рассматривается устройство, позволяющее реализовать операцию вставки поддерева в дерево при аппаратно-ориентированной обработке .К-выражений, возникающей при выполнении эквивалентных преобразований параллельных алгоритмов.
Ключевые слова: логический мультиконтроллер, параллельный алгоритм логического управления, разбиение, оптимизация, Я-выражение, ориентированное дерево, спецпроцессор.
Построение систем логического управления, ориентированных на реализацию параллельных управляющих алгоритмов в базисе логических мультиконтроллеров (ЛМК), требует декомпозиции комплексных параллельных алгоритмов теоретически неограниченной сложности на множество частных алгоритмов ограниченной сложности [1]. Получение оптимального набора частных алгоритмов (разбиения) представляет собой сложную комбинаторную задачу, решение которой возможно лишь с помощью эвристических алгоритмов. Качество решения этой задачи существенно влияет на аппаратную сложность ЛМК и определяет, в конечном счете, время выполнения алгоритма. Эффективным путем решения данной задачи является параллельно-последовательный метод декомпозиции [2—5].
Один из ключевых этапов параллельно-последовательной декомпозиции — построение множества сечений, покрывающего все вершины исходного алгоритма. Формирование сечений осуществляется посредством выполнения трудоемких операций подстановки над множеством так называемых Я-выражений, описывающих алгоритм управления. Как показывают исследования, упрощение и ускорение этих операций возможно путем их сведения к действиям над деревьями. Такие действия, в свою очередь, допускают разбиение на ряд более простых (элементарных) операций [6]. Схематично операции подстановки могут быть представлены следующим образом:
^ г: Xя — ВК' (м-подстановка);
^ ] : ВК' — Xя (^-подстановка),
Я Я?
где X — некоторое Я-выражение, не участвующее в подстановке; В — Я-выражение, получаемое из Я-выражения ВЯ после удаления поддерева АЯ и вставки вместо него дерева СЯ .
1: Xя- - ВК
} АК - - СК
1: СК - ■> АК
] ВК- Xя
Методика практической реализации операций над ^-выражениями, а также представление их в виде деревьев, допускающее преобразование в табличный вид, приведены в работах [7, с. 38; 8]. Здесь напомним следующее: каждый элемент а дерева X, представленного совокупностью наборов листьев , ,..., (х), узлов Т[х,ТХ ,...,ТХт(х) и связей между ними,
кодируется набором полей. С учетом ряда особенностей обработки, наборы листьев и узлы дерева кодируются отдельно. Узлы дерева представлены следующими полями: тип узла
(ТУ) — параллельный или альтернативный (тх )); ссылка на предка (СП) — номер узла-предка (и (тх )); номер соответствия (НС) — номер изоморфного эквивалента в соседнем дереве (пг (Тх )); тип соответствия (ТС) — отсутствующее, полное или частичное соответствие (л(Тх )); наборам листьев дерева при этом соответствуют поля множества вершин (МВ) —
двоичный вектор с единичными битами в позициях, соответствующих номерам присутствующих в наборе вершин, а также перечисленные выше поля СП, НС и ТС.
Табличное представление ^-выражений подчиняется ряду следующих требований [8].
1. Корень дерева хранится в позиции с номером 0. Значение поля СП корня указывает на заведомо несуществующий элемент дерева.
2. Для каждого узла дерева его потомки хранятся в позициях с номерами, превосходящими номер позиции самого узла (при этом порядок хранения потомков не важен).
3. Все узлы и наборы листьев дерева хранятся в смежных позициях (без „пропусков").
4. Каждому узлу дерева соответствует не более одного дочернего набора листьев, в дереве не может быть „пустых" наборов листьев, не содержащих вершин.
5. Если дерево представлено единственным набором листьев (без узлов), то в составе этого набора может быть всего один элемент (одна вершина алгоритма управления).
6. В составе корректного дерева не может быть совпадения типа узлов у любой пары смежных узлов.
7. Дерево содержит, по меньшей мере, один набор листьев. Число узлов дерева может быть нулевым.
В настоящей статье предложена аппаратная реализация операции вставки поддерева. Она выполняется непосредственно после операции удаления поддерева, г-изоморфного [7, 8]
дереву А , в результате которого может быть нарушено требование № 3. Рассматриваемая операция состоит из двух стадий: на первой производится копирование элементов дерева, на второй — настройка связей для скопированных элементов. В результате выполнения опера-
о
ции копирования элементов дерева С должны быть учтены требования № 2 и 4. При этом в общем случае требования № 3 и 6 в результате выполнения операции вставки поддерева не выполняются, что обусловливает необходимость удаления „пропусков" непосредственно после рассматриваемой операции.
Общие принципы выполнения первой стадии продемонстрированы на рис. 1 (белые квадраты — свободные позиции, темные квадраты — занятые позиции, крестами помечены удаленные элементы, стрелками обозначены операции копирования элементов дерева).
На первой стадии при копировании узлов дерева (см. рис. 1, а) необходимо соблюдение требования № 2 корректности дерева. Наиболее простой способ обеспечить выполнение этого требования — последовательная вставка „новых" узлов, начиная с позиции с номером,
о
превосходящим номера уже имеющихся узлов дерева В , с сохранением порядка их следования. Номер такой позиции может быть определен как ^ = gl (Хт) +1, где
ХТ (В) = (х (Т)В), х (Т\ ),..., х (тП_1)) — вектор двоичных признаков х (¡Х) свободных позиций среди узлов дерева ВЯ, (X) — функция выделения позиции старшего нуля в двоичном векторе X [9]. Копирование наборов листьев (см. рис. 1, б) не нарушает требований корректности дерева и поэтому может быть осуществлено непосредственно в первую свободную
ячейку с младшим номером, который определяется как (Xь), где
Х^ (В) = (х (В), х (л) .., х )) — вектор двоичных признаков х (ьХ) свободных позиций среди наборов листьев дерева ВЯ, (X) — функция выделения позиции младшей единицы в двоичном векторе X [9]. Подобный способ копирования наборов листьев уменьшает число действий, затрачиваемых впоследствии на ликвидацию пустых позиций.
Я
При добавлении каждого нового элемента в дерево В также необходимо инкрементиро-вать значение Ыт (вк ) (при добавлении узла) или (ВК) (при добавлении набора листьев).
а)
Узлы дерева В (после удаления поддерева)
б) Наборы листьев В
(после удаления Наборы листьев п°ддерева) дерева С
N..
0
1
2
3 X
4
5 X
6 X
7
► 8 X
9
10
11
Ы7
Узлы дерева С т - 0 1 2
3
4
5
Ы7
0 1 2
3
4
5
6
7
8 9
10 11
0 1 2
3
4
5
6
N7
N7
ь
Х Nr
-О
Рис. 1
Вторая стадия начинается с корректировки значений полей СП „новых" элементов дерева ВЯ, скопированных в него из дерева СЯ. Прежде всего корректировке подвергаются значения полей СП, обозначаемые как и ( ), „новых" элементов: и(ьВ ) := и (ьВ ) + N1,
и (тВ) := и (т?) + ^ . Подобные формулы корректировки объясняются достаточно просто:
Я я т
нулевой узел (корень) дерева С попадает в дереве В в позицию с номером ^ , первый —
т
в позицию N.. +1 и т.д.
После выполнения указанных корректировок необходимо настроить связь скопированного поддерева из „новых" элементов с уже присутствующими элементами дерева В (точнее, с узлом, г-изоморфным корню дерева А , при частичном соответствии, или его предком при полном соответствии). Детали реализации настройки связи между деревьями представлены в табл. 1 и проиллюстрированы на рис. 2, где а, б, в соответствуют трем различным случаям выполнения операции подстановки, приведенным в таблице.
_Таблица 1
Наличие в дереве А узлов (оА ) ТС корня дерева АК (Т)) Формула обновленного значения поля СП корневого элемента скопированного дерева
1 Полное: Д=11 X = и тВ пг [тА)
Частичное: Д=10 X = пг (Т0А)
0 Полное, частичное: Д= 1* X = и г Ьо 'Ь ) А
Особым случаем, не указанным в табл. 1, является ситуация, когда дерево СК не содержит узлов, что обозначим нулевым значением двоичного признака о с . В этом случае при
выполнении описанных выше действий возможно нарушение требования № 4, если у элемен-
К с
та дерева В , на который производится настройка поля СП добавляемого набора листьев Ь
дерева , уже есть дочерний набор листьев ¿кк . Правильным действием в подобной ситуа-
С В В В I I с
ции является добавление элементов вектора Ь к элементам вектора Ьк : := и ¿0 вместо добавления еще одного набора листьев.
Алгоритм преобразования выполняется следующим образом.
1. Если дерево не содержит узлов (ос = 0) и узел дерева ВК с номером х, определяемым согласно табл. 1, имеет дочерний набор листьев Ьк (что в дальнейшем будем обозначать с использованием двоичного признака к (Тх), равного в данном случае единице), перейти к п. 7.
2. Определить значение := #0 (Хт) +1. Если Хт = 00...0 (все элементы в табличном представлении заняты), установить признак ошибки 81 := 1 и перейти к п. 8, в противном случае установить признак 81 := 0.
3. Копирование узлов: скопировать узлы Т дерева С , / = 0, Ыт (СК ) — 1, в смежные
к т
позиции дерева В , начиная с позиции Ы^ . При недостаточном количестве свободных позиций сформировать признак ошибки 8т := 1 и перейти к п. 8, в противном случае положить 8Т := 0.
4. Копирование наборов листьев: скопировать наборы листьев ЬС дерева ,
/ = 0, Ыь (СК) — 1, в дерево ВК, причем 1-й набор листьев дерева копируется в позицию
к = (Xь ), а сама позиция помечается как используемая: х (¿1) = 0. В случае если на ка-
ком-либо из шагов Хь = 00...0 (свободной позиции нет), установить признак ошибки 8ь := 1 и перейти к п. 8, в противном случае положить 8ь := 0 .
5. Увеличить значения текущего количества узлов и текущего количества листьев дерева ВК: Ыт (вк) := Ыт (вк ) + Ыт (сК ), ЫЬ (вк ) := ЫЬ (вк ) + ЫЬ (сК ).
К
6. Модифицировать значения полей СП „новых" элементов дерева В , скопированных из дерева СК, за исключением корневого, как и (ьв ) := и (¿В ) + Ы11, и (т?) := и [(В) + Ы11 .
Для „нового" элемента дерева ВК, соответствующего корневому элементу дерева , установить значение поля СП согласно табл. 1. Перейти к п. 8.
В ВС
7. Осуществить объединение наборов листьев: Ьк := Ьк и ¿0 .
8. Конец алгоритма.
Схема, реализующая предложенный алгоритм, приведена на рис. 3 (сокращения, использованные в схеме, аналогичны принятым в работе [7]). Регистр 1 хранит текущее количе-
К к
ство узлов дерева В и инкрементируется по мере добавления в дерево В новых узлов. Коммутатор 2 используется для выбора значения вектора, подаваемого на вход элемента В.УЭ(у) [7, 10] в качестве адреса записи. Элементы 3 и 4 используются при инициализации значений вектора В.УЭ(у). Шифратор 5 предназначен для преобразования значения номера свободной позиции с выхода схемы выделения старшего нуля (СВСН) из унитарного в двоичное представление, сохраняющегося в регистре 6. Элемент задержки 7 обеспечивает запись значения в регистр 6 только по окончании его формирования на выходе схемы СВСН. Элемент ИЛИ—НЕ 8 используется для формирования сигнала ошибки 81. Регистры 9 и 27 предназначены для хранения числа узлов и наборов листьев дерева СК соответственно. Коммутатор 10 в совокупности с дешифратором 11 обеспечивают запись в сдвиговый регистр 12 значения текущего числа элементов (наборов листьев или узлов) в унитарном коде в зависимости от этапа обработки. Элемент И 13 запрещает прохождение синхросигнала С1 при инициализации значения В.УЭ(нл) на входы элемента В.УЭ(у) и регистра 6. Регистр 14 хранит
текущее количество наборов листьев дерева В , инкрементируемое по мере добавления новых наборов листьев. Коммутатор 15 в совокупности с элементами 16 и 17 обеспечивает ини-
К
циализацию значения вектора УЭ наборов листьев дерева В (в ходе дальнейшей обработки значения вектора УЭ изменяются согласно алгоритму обработки с использованием перечисленных элементов). Шифратор 18 используется для преобразования значения текущего рассматриваемого элемента из унитарного кода в двоичный. Сумматор 19 обеспечивает формирование на его выходе значения Ы^ + / очередной свободной позиции и признака ошибки
8т . Дешифратор 20 преобразует значение Ы^ + / в унитарный код для его дальнейшего использования в качестве адреса записи. Коммутаторы 21, 23, 28, 31, 46 и 47 используются для
выбора значения элемента дерева В модифицируемого элемента в зависимости от этапа алгоритма и особенностей обработки. Сумматор 22 обеспечивает формирование обновленного значения поля СП копируемого элемента. Элемент ИЛИ 24 служит для прохождения синхросигнала записи на вход элемента В.СП(у). Элементы 25 и 26 обеспечивают прохождение синхросигналов С2 и С3 на вход регистра 12. Элемент ИЛИ—НЕ 29 служит для формирования признака ошибки 8ь . Сумматор 30 используется для корректировки значения поля СП копируемого набора листьев. Элемент ИЛИ 32 обеспечивает прохождение синхросигнала на вход элемента В.МВ, активирующего модификацию поля МВ в зависимости от ситуации.
а) Дерево BR Дерево Ar Дерево в r'
Удаление Вставка
поддерева / ^ поддерева
| | a 'a 2 | |
Cl 3CI 4 Cl jCI 4
Дерево В
Дерево Ar Дерево Br' Дерево Br" Дерево Ar Дерево Cr
Удаление поддерева
>
Вставка поддерева
>
1 — i:=n,.(Lo)
2 —j:=u(L,B) в
3 — и(Т0с= Tmt):=j
Cl 3CI4
Cl 3С1 4
\—i:=n,{T(f)
2-j:=u(T,B)B
3 — и(Т0с= TNT):=j
ДеревоAr Дерево С
Î — i:=lb.(T04l 2 — и(Т0с= TNT)-=i
Рис. 2
Рис. 3
Коммутатор 33 обеспечивает формирование на своем выходе значения предка корня подставляемого дерева в зависимости от типа соответствия. Дешифратор 34 обеспечивает преобразование номера узла, г-изоморфного корневому узлу дерева А , из двоичного кода в унитарный. Дешифратор 35 обеспечивает преобразование номера набора листьев, г-изоморфного
нулевому набору листьев дерева А , из двоичного кода в унитарный. Коммутатор 36 обеспечивает формирование на своем выходе значения номера узла-предка для корня подставляемого дерева. Регистр 37 хранит значение текущего числа узлов дерева А , используемое для формирования значения признака а а на выходе элемента ИЛИ 38, подаваемого на вход коммутатора 36. Элемент ИЛИ 39 используется для формирования признака ас . Элемент ИЛИ 43 обеспечивает формирование признака к, используемого в совокупности с элементами 40—42, 44 и 45 для управления прохождением синхросигнала е4. Регистр-защелка 48 используется для хранения значения первой свободной позиции, формируемого на выходе схемы выделения младшей единицы (СВМЕ). Элемент ИЛИ 49 обеспечивает прохождение синхросигнала записи к элементу В.СП(нл) в зависимости от обрабатываемой ситуации. Блок элементов ИЛИ 50 используется при объединении уже имеющегося набора листьев с единственным набором листьев, входящим в состав подставляемого дерева СК .
Вычислительные затраты на выполнение отдельных элементарных операций рассмотренного выше алгоритма приведены в табл. 2.
Таблица 2
Действие Программная реализация, шаг, не более Аппаратная реализация, шаг, не более
Определение значений вектора Хт Ыт 1
т Определения значения Ыт 1
Копирование узлов Ыт Ыт
Определение значений вектора Х- Ыь 1
Определение младшей свободной позиции в Х- Ыт 1
Копирование наборов листьев Ыт Ыь
Корректировка СП Ыт 1
Итого 3 Ыт + 2 Ыт + Ы- Ыт + Ыт + 4
Анализ показывает, что при использовании предлагаемого устройства, по сравнению с программной реализацией, преимущество по времени обработки составляет
3Ыт + 2 Ыт + Ы- ЛТ —Т-т-- « Ык раз,
ЫТ + Ыт + 4
где = Ы- + Ыт, что достигается благодаря использованию схем маскировки неиспользуемых позиций (СМНП 1 и 2) и схемы выделения старшего нуля (СВСН), а также возможности ассоциативного поиска информации в памяти акселератора [7, 10].
список литературы
1. Организация и синтез микропрограммных мультимикроконтроллеров / И. В. Зотов, В. А. Колосков, В. С. Титов и др. Курск: КурскГТУ, 1999. 368 с.
2. Зотов И. В., Колосков В. А., Титов В. С. Выбор оптимальных разбиений алгоритмов при проектировании микроконтроллерных сетей // Автоматика и вычислительная техника. 1997. № 5. С. 51—62.
3. Ватутин Э. И., Зотов И. В. Метод формирования субоптимальных разбиений параллельных управляющих алгоритмов // Параллельные вычисления и задачи управления (PACO'04). М.: ИПУ РАН, 2004. С. 884—917.
4. Ватутин Э. И., Зотов И. В. Параллельно-последовательный метод формирования субоптимальных разбиений параллельных управляющих алгоритмов // Свид. об официальной регистрации программы для ЭВМ. № 2005613091 от 28.11.05.
5. Ватутин Э. И., Волобуев С. В., Зотов И. В. Комплексный сравнительный анализ качества разбиений при синтезе логических мультиконтроллеров в условиях присутствия технологических ограничений // Параллельные вычисления и задачи управления (PAC0'08). М.: ИПУ РАН, 2008. С. 643—685.
6. Ватутин Э. И., Зотов И. В. Поиск базового сечения в задаче разбиения параллельных алгоритмов / Курск. гос. техн. ун-т. Курск, 2003. 30 с. Деп. в ВИНИТИ. 24.11.03, № 2036-B2003.
7. Ватутин Э. И., Зотов И. В., Титов В. С. Выявление изоморфных вхождений Л-выражений при построении параллельных алгоритмов логического управления // Изв. вузов. Приборостроение. 2009. Т. 52, № 2. С. 37—45.
8. Ватутин Э. И., Зотов И. В., Титов В. С. Выявление изоморфных вхождений Л-выражений при построении множества сечений параллельных алгоритмов логического управления // Информационно-измерительные и управляющие системы. 2009. Т. 7, № 11. С. 49—56.
9. Ватутин Э. И., Зотов И. В., Титов В. С. Использование схемных формирователей и преобразователей двоичных последовательностей при построении комбинаторно-логических акселераторов // Изв. КурскГТУ. 2008. № 4 (25). С. 32—39.
10. Ватутин Э. И. Однородная среда электронной модели дерева для аппаратно-ориентированной обработки Л-выражений // Оптико-электронные приборы и устройства в системах распознавания образов, обработки изображений и символьной информации (Распознавание — 2008). Курск: КурскГТУ, 2008. Ч. 1. С. 90—92.
Сведения об авторах
Эдуард Игоревич Ватутин — канд. техн. наук; Курский государственный технический универ-
ситет, кафедра вычислительной техники; E-mail: [email protected]
Игорь Валерьевич Зотов — д-р техн. наук, профессор; Курский государственный технический
университет, кафедра вычислительной техники; E-mail: [email protected]
Виталий Семенович Титов — д-р техн. наук, профессор; Курский государственный технический
университет, кафедра вычислительной техники; E-mail: [email protected]
МуджибМохаммед Ахья Аль-Ашвал — аспирант; Курский государственный технический университет,
кафедра вычислительной техники; E-mail: [email protected]
Рекомендована кафедрой Поступила в редакцию
вычислительной техники 14.04.10 г.