Опубликован: 22.12.2006 | Уровень: специалист | Доступ: платный | ВУЗ: Московский государственный университет путей сообщения
Лекция 13:

Задача логического вывода и когерентность кэш-памяти в ВС SPMD-архитектуры

< Лекция 12 || Лекция 13: 1234

По команде 8 в массиве, описываемом дескриптором Db, находится высказывание, совпадающее с последним высказыванием (адрес его находится в Ds3 ) анализируемой логической цепочки. Если такого высказывания нет, управление передается по адресу 3 — на анализ очередной логической цепочки с учетом возможности пополнения базы знаний другими процессорами. В процессе поиска изменяется значение дескрипторного элемента Db4 на шаг переадресации (величину, указанную в Db1 ) так, что в случае успешного поиска в Db4 записан адрес высказывания-посылки, совпадающего с высказыванием, адрес которого указан в Ds3.

Команда 9 выполняется в случае, если по команде 8 найдена аксиома, посылка в которой совпадает с последним элементом анализируемой логической цепочки. Таким образом, эта цепочка может быть продолжена соответствующим следствием. Его адрес в массиве аксиом, описываемом дескриптором Db, равен значению (Db4)+1. Однако необходимо проверить, не входит ли уже заданное следствие в данную логическую цепочку, т.е. не формируется ли цикл. Эта проверка и выполняется по команде 9. По ней осуществляется поиск в массиве, описываемом дескриптором Ds, элемента, который совпадает с элементом по адресу (Db4)+1. Если такого элемента нет, выполняется следующая команда, с которой начинается включение новой логической цепочки в базу знаний. В противном случае осуществляется переход на поиск нового продолжения логической цепочки — на команду 8. Отличие данной команды поиска от предыдущей заключается в том, что после ее выполнения восстанавливается значение Ds4: (Ds4) := (Ds0).

С помощью команды 10 осуществляется вход в критический блок дополнения базы знаний логической цепочкой, найденной процессором. Одновременное выполнение этого блока разными процессорами недопустимо. Поэтому по данной команде в ПЗА засылается адрес Г, выполняющий роль семафора. В силу особенностей команды ЗАКРА выполнить ее одновременно более одного процессора не могут. Тем более не может ее выполнить процессор, если адрес Г уже закрыт.

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

По команде 12 в модификаторе MA с помощью операции целочисленного сложения формируется адрес начала новой логической цепочки в базе знаний (MA) := ((D03))+((D03)+2). Действительно, первый исполнительный адрес данной команды равен содержимому D03, т.е. адресу первого дескрипторного элемента дескриптора последней логической цепочки. В нашем примере при первом дополнении базы знаний (D03) = f+10. Содержимым же ячейки с этим адресом является адрес начала последней логической цепочки, (f+10) = d+4. Аналогично по второму исполнительному адресу в нашем примере первый раз будет выбрано слагаемое ((D03)+2) = (f+12) = 2, равное длине последней логической цепочки в базе знаний. Таким образом, в нашем примере первый раз сформируется адрес начала новой логической цепочки (MA) = d+6.

Команда 13 — Дополнение массива элементом по данному адресу. Массив, образуемый дополняемой логической цепочкой и описываемый дескриптором Ds, дополняется вновь найденным продолжением — высказыванием, записанным по адресу (Db4)+1. Адрес начала новой цепочки в базе знаний указан по третьему адресу команды. Корректируются значения дескрипторных элементов

(Ds0) := (Ds3) := (Ds4) := (MA);

(Ds3) := (Ds3)+(Ds2); (Ds2) := (Ds2)+1.

Новый элемент массива записывается по адресу (Ds3).

По команде 14 массив дескрипторов логических цепочек, описываемый дескриптором, который в ОПД располагается, начиная с адреса g, дополняется дескриптором Ds вновь сформированной цепочки. Особенность выполнения этой команды обусловлена указанием адреса дескриптора в позиции I2. Так как третий адрес не указан, то место расположения нового массива не меняется. Тогда выполняются операции

(g+3) := (g+3) + (g+1); (g+2) := (g+2) + 1.

Дескриптор Ds записывается в ОПД начиная с адреса (g+3).

Командой 15 заканчивается выполнение критического блока: производится запись по адресу Г. Открывается возможность входа в этот блок другого процессора.

По команде 16 восстанавливаются дескрипторные элементы дескриптора Ds для дальнейшего анализа выбранной логической цепочки и поиска других ее продолжений. Переход производится по команде 17. При этом дескрипторный элемент Db4 не восстанавливается, что обеспечивает продолжение анализа массива аксиом до его исчерпания.

Команда 18 выполняется в том случае, если iпроцессор в результате выполнения команды 4 не выбрал логическую цепочку из базы знаний для последующего анализа возможности ее продолжения. Тогда i -му признаку массива признаков присваивается значение 1.

По команде 19 последовательно анализируются все элементы массива признаков, описываемого дескриптором DП, на равенство нулю. При существовании хотя бы одного нулевого признака, свидетельствующего о том, что хотя бы один процессор анализирует логическую цепочку на возможность ее продолжения и дополнения базы знаний, управление передается на выполнение команды 3 — на повторную попытку выбора очередной логической цепочки. Если нулевого признака нет, т.е. ни один процессор не обрабатывает логическую цепочку, "насыщение" базы знаний закончено. По команде 20 каждый процессор уточняет в своей памяти окончательное значение дескриптора D0 (см. выполнение команды 1).

Выполнение второй части программы начинается с синхронизации системы (команда 21).

Пусть дескриптор логической цепочки минимальной длины, заканчивающийся любым результирующим высказыванием, формируется в ОПД с адреса l. Первоначально положим длину массива, указываемую в дескрипторном элементе по адресу l+2, равной заведомо большему числу (команда 23). Однако параллельное выполнение этой команды всеми процессорами может оказаться нецелесообразным. Поэтому по команде 22 производится передача управления в обход выполнения команды 23 для процессоров с номерами i > 0.

По команде 24 выбирается очередной дескриптор логической цепочки, определенный значением D07, и заносится по адресу Ds в памяти процессора. Если дескриптор выбрать не удается (см. выполнение команды 4), управление передается на выход из подпрограммы.

По команде 25 анализируется, является ли последний элемент цепочки, адрес которого указан в Ds3, результирующим высказыванием. Если не является, управление передается на выборку следующего дескриптора логической цепочки — на выполнение команды 24.

Команды 26—29 образуют критический блок, одновременное выполнение которого разными процессорами невозможно. По команде 26 закрывается семафор — адрес \Delta.

Если в результате выполнения команды 27 оказывается, что длина выбранной логической цепочки меньше длины, зафиксированной в l+2 ранее, по команде 28 дескриптор Ds записывается в ОПД начиная с адреса l.

Засылкой по команде 29 производится выход из критического блока.

Так как в процессе формирования логических цепочек с ростом их номера длина не убывает, то достаточно не более чем однократного выполнения критического блока каждым процессором.

По команде 30 осуществляется возврат из подпрограммы.

Продолжим рассмотрение примера. Пусть для наглядности N = 4. Тогда по команде 4 процессоры 0, 1, 2 выберут для анализа три логических цепочки, первоначально составляющих базу знаний.

Процессор 0 находит продолжение анализируемой логической цепочки a0 -> b3 -> c7 и дополняет ею базу знаний. Формируется дескриптор новой логической цепочки D4 = {d+6, 1, 3, d+8, d+6}, и в ОПД уточняется дескриптор D0 = {f, 5, 4, f+15, f, f, 20, f}.

Процессор 3, который ранее тщетно пытался выбрать для анализа логическую цепочку, выполняя команды 4, 18, 19, 3, теперь по команде 18 выберет вновь сформированную цепочку.

Процессор 1 формирует логическую цепочку a1 -> b4 -> b5. По-видимому, он дольше будет искать это продолжение и для дополнения базы знаний войдет в критический блок своей копии программы после процессора 0. Формируется значение D5 = {d+9, 1, 3, d+12, d+9} и в ОПД — новое значение D0 = {f, 5, 5, f+20, f, f, 20, f}.

Процессор 2 формирует логическую цепочку a2 -> b5 -> b4. Так как используемая при этом аксиома еще дальше отстоит от начала в массиве аксиом, предположим, что этот процессор третьим войдет в критический блок и дополнит базу знаний.

Процессор 1, продолжая поиск другого возможного продления анализируемой логической цепочки, сформирует цепочку a1 -> b4 -> b6.

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

Таблица 13.2.
Номер цепочки Логические цепочки базы знаний Номер продленной цепочки Формирующий процессор Обрабатывающий процессор
1 a0->b3 0
2 a1->b4 1
3 a2->b5 2
4 a0->b3->c7 1 0 3
5 a1->b4->b5 2 1 0
6 a2->b5->b4 3 2 1
7 a1->b4->b6 2 1 2
8 a2->b5->b4->b6 6 1 3
9 a1->b4->b6->c7 7 2 0
10 a1->b4->b6->c8 7 2 1
11 a2->b5->b4->b6->c7 8 3 2
12 a2->b5->b4->b6->c8 8 3 3

В частности, видно, что процессору 0 лишь однажды удалось сформировать новую цепочку.

Результат выполнения второй части программы очевиден.

< Лекция 12 || Лекция 13: 1234
Татьяна Королькова
Татьяна Королькова
Россия, Москва
Орхан Джафарзаде
Орхан Джафарзаде
Азербайджан, Баку