8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
            
Раздел: Документация

0 ... 32 33 34 35 36 37 38 ... 78

!FREFk = 3n-2 THEN

LET step = stop ELSE

LET к = REF к + 1

LET step = fetch

stop

NIL

Замечание. Выражение DO FOR ALL. .. SUCHTHAT. . . не является правильной записью в исполняемом синтаксисе. Оно используется для более ясного понимания того преобразования, которое выполняется синтаксически правильной конструкцией.

12.4. ЛОКАЛЬНАЯ СИНХРОНИЗАЦИЯ

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

12.4.1. Понятие подпространства

Вначале дадим теоретическое определение понятия подпространства.

Определение. Пространство данных с недетерминированной системой перехода (X, р), т. е. в случае; когда р есть отношение, а не функция на множестве X, называется недетерминированным.

Пусть [х, &\ для недетерминированного пространства данных (X,р) элемента х множества X и подмножества jF множества ,Jf обозначает подмножество X вида

\У !/(>) =/(-\) для всех /е -

(Будем считать, что для z е \х, .?] и/G.F функции f(z) и /(а) совпадают, хотя по существу они разные из-за различия областей определения.)

Пространство данных (X, р) считается подпространством пространства (X р), если. cj jF, X = \x,3F\ х е X, и если из соотношений у Ер (л), х=х, у=у и f(y)=f(x) для всех /<=.? - следует, что у Ер (х). Согласно определению каждый переход подпространства может быть сделан в общем пространстве без учета памяти вне подмножества.

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

12.4.2. Простой механизм связи

Подмножество функций одного подпространства может иметь непустое пересечение с подмножеством функций JF" другого; ячейки в пересечении являются общими.

Синтаксический механизм для построения основного пространства из отдельных подпространств имеет вид

SPACE (имя) < определение пространства данных)

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

Единственными разрешенными нелокальными описаниями являются описания ячеек, начинающиеся со слов SHARED или SYNCHRONIZED, например

SYNCHRONIZED CELLS х HOLD REAL.

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

Каждая ячейка синхронизируемого типа может быть:

1)готова к считыванию;

2)готова к записи.

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

Ссылка вне пространства к ячейке, объявленной синхронизируемой, определяется новой конструкцией

EQUIVALENT S1 a, S2.b согласно которой объявляется, что ячейки а кЬ подпространств 51 и 52 соответственно эквивалентны (представляют собой одну и ту же ячейку). Два типа ячеек, к которым относятся ячейки а и fe, должны хранить один и тот же тип данных.

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

12.4.3. Алгоритм сортировки с локальной синхронизацией

В качестве примера в терминах пространства данных определим процессорную матрицу, выполняющую алгоритм сортировки. Матрица образуется


из подпространств Sj, 1 </ <и, и предназначена для сортировки входной последовательности длиной до п. Алгоритм выполняется следующим образом: подпространства S,- hSi+j связаны каналом связи, достаточным для передачи входных значений, флага и "бита подтверждения". Каждый входной сигнал пропускается через матрицу на основе простого сравнения в каждом процессорном элементе: если новый входной сигнал больше текущего содержимого, то пересылается входной сигнал, иначе пересылается содержимое, а входной сигнал сохраняется. Таким образом, процессорный элемент Sj в конечном счете активизируется от г-го входного сигнала извне. Последний входной сигнал помечается флагом TRUE. Флаг пересылается вместе с входным значением и, таким образом, достигает последнего элемента SV, где к - длина входной последовательности. Процессорный элемент Sk подготавливается для вывода путем выдачи содержимого, помеченного флагом TRUE, в свой канал влево вместе с подтверждением, затем ожидает подтверждения передачи и, наконец, возвращается в исходное состояние. В действительности каждый элемент Sj выполняет те же операции, за исключением того, что Sj, i f=k, помечает свои значения флагом FALSE. По получении подтверждения от правого процессорного элемента данные посылаются налево. Как только встретится флаг TRUE, вместе с элементами S{ бит подтверждения возвращается вправо; S,-е подтверждение сигнализирует во вне, что результат готов; последний выход в отсортированном массиве помечается как TRUE. Предполагается, что по получении его внешней агент возвращает бит подтверждения в исходное состояние. Формальное определение имеет следующий вид:

SPACE S,

TYPE value & flag > value REAL flag BOOLEAN CELLS contents HOLD REAL

SYNCHRONIZED CELLS left right HOLD value & flag SYNCHRONIZED CELLS ack-left ack-right HOLD BOOLEAN CELLS state HOLD idie active send-contents wait-for-ack-left

wait-for-ack-right outputting send-last-output

Глобальными описаниями для всех подпространств при i = 1,. . . , п - 1 являются

EQUIVALENT S,. right, S, +,. left EQUIVALENT S>. ack-right, Si+1 .ack-left

Первоначально в переменной ack-left хранится значение FALSE, и это состояние является исходным для каждого элемента Sj. Входные значения подаются в элемент Si слева; последнее значение на входе помечается как TRUE. Вначале все синхронизируемые ячейки готовы к записи.

Процессор каждого блока SPACE Sj определяется следующим образом:

FUNCTION OMEGA = TEST state idle

LET contents = value REF left IF flag REF left THEN

LET ack-left = TRUE LET state = send-last-output ELSE

LET state = active

active

IF REF contents > value REF left THEN LET right = (contents, flag REF left) LET contents = value REF left ELSE

LET right = REF left IF flag REF left THEN

LET state = send-contents ELSE NIL send-contents

LET ack-left = TRUE LET left = (REF contents, FALSE) LET state = wait-for-ack-right wait-for-ack-right

IF REFack-right THEN

LET state = outputting ELSE NIL outputting

LET left = REF right IF flag REF right THEN

LET ack-right = FALSE LET state = wait-for-ack-left ELSE NIL send-last-output

LET left = (REF contents. TRUE) LET state = wait-for-ack-left wait-for-ack-left

IF NOT REF ack-left THEN

LET state = idle ELSE NIL

Это определение задает структуру, представленную на рис. 12.3. Такая конструкция характеризуется не только простотой записи, но и дополнительными преимуществами, состоящими в том, что ее можно снабдить глобальной синхронизированной ячейкой, скажем, input output, объявить ее эквивалентной ячейке SI . left, и тогда эту конструкцию можно будет вставлять в любое пространство данных как подпространство. В охватывающем пространстве одна из ячеек будет объявлена эквивалентной ячейке .input-output сортировщика.

Рис. 12.3

S1

S2

S3

Left Right

Left Right

Left Right

J


ПРИЛОЖЕНИЕ

Для алгоритма умножения матриц, представленного в подразд. 12.3.2, приводится распечатка определения пространства данных вместе с трассировкой программы.

Для простоты определение OMEGA разбито на вспомогательные функции. В машине пространства данных, использованной для реализации, некоторые из синтаксических сокращений, упомянутых в подразд. 12.2.2, тем не менее не выполнены. Однако отличие в записи минимально.

TYPE AJ . А А1 INTEGER

А2 INTEGER : TYPE BIJ > В BI INTEGER

B2 INTEGER : TYPE CIJ . С C1 INTEGER

C2 INTEGER : : TYPE INPUT SEQUENCE > FIRST REAL

REST INPUT SEQUENCE :

type step > step : :

type operation - fetch : execute : stop : : type int cell -» к : n : : type a bjn a in a in s integer : b in b in s integer : :

cells aij hold real cells bij hold real cells cij hold real

cells a b in hold input.sequence cells step hold operation cells int cell hold integer

function a fun с (к integer n integer i integer j integer) assgts = if < i + n 1

if and <j + N1 < + i j + K2 :if = j 1

if > i - к n

: let a i j = first ref a in i

let ajn i = rest ref ajn i : skip

if>+ij + -KN1

let a i j = ref a i - j 1

skip

a func к n i + j 1 : a func к n + i 1 1 skip

function b func (k integer n integer i integer j integer) assgts = if < i + n 1

if and <j + N1 <+ij + K2 : if = i 1

if > j - к n

: let в i j = first ref b in j

let bjn j = rest ref bjn j : skip

if > + i j + - к n 1

let в i j = ref в - i 1 j skip

b func к n i + j 1 : b func к n + i 1 1 skip

function c func (k integer n integer i integer j integer) assgts = if < 1 + n 1

if and <j + N1 < + i j + K2 :if > + i j + - к n 1

let с i j = + ref cij * ref a i j ref в skip

c func к n i + j 1 : c func к n + i 1 1 skip

function cjnit help (n integer ind integer) assgts = if > ind 0

let с ind n = 0.0 let с n ind = 0.0 cjnitjhelp n - ind 1 : skip

Волновая процессорная матрица, приведенная в [12], может быть теперь выражена в следующем виде (использование локальной синхронизации вместо глобальной позволяет искривлять волновой фронт). Для каждого /,/, 1<1, / <и, определим

SPACE sn

SYNCHRONIZED CELLS a.left aright b up b down

HOLD REAL CELLS с HOLD REAL "В исходном состоянии О" FUNCTION OMEGA =

LET с - REF с + REF a left * REF b.up

LET a right = REF a left "за исключением Sln"

LET b.down = REF b up"jff исключением S,n"

Эквивалентными объявляются

EQUIVALENT S.a right. S,jtl.ajeft. (j < n) Si,.b down, S,,, ,.b up (i < n)

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



0 ... 32 33 34 35 36 37 38 ... 78