Параллельное программирование



              

Нахождение последнего элемента списка - часть 5


Каждый процессор посылает сигнал на устройство СИНХ; после поступления сигналов от всех процессоров выдается обратный сигнал, по которому процессоры приступают к выполнению следующей команды.

Команда 1 (ЗАГрузка модификатора) обнуляет модификатор K, в который впоследствии одним из процессоров будет записан адрес последнего элемента списка.

Команда 2 (ПРоверка АДреса) сравнивает значение дескрипторного элемента DR1, первоначально равное a0+3i, с адресом последнего элемента массива, записанным в дескрипторном элементе DR3. Этим устанавливается возможность загрузки i-го процессора (возможен случай i>N). Если процессор не будет занят обработкой списка, то управление передается команде 12 на Выход из процедуры. В противном случае с команды 3 начинается цикл обработки элементов списка, а точнее — его последовательности ссылок. Команда 3 осуществляет Условный Переход на выход из процедуры по отличному от нуля значению K.

Команда 4 выполняется при нулевом значении K, она осуществляет ЗАПись по Косвенному адресу. При этом производится косвенное считывание по первому адресу (DR7) + 0003, т.е. по адресу ((DR7)+0003), и запись по адресу модификатора M.

Команда 5 проверяет, пуста ли выбранная ссылка. Если пуста, то анализируемый элемент списка - последний; управление передается команде 11, записывающей адрес этой ссылки в K. Если не пуста, т.е. (M)\neq 0, то выполняется команда 6 и ее значение записывается вместо значения текущей ссылки.

Команда 7 ИЗМенение АДреса задает операцию (DR7):=(DR7)+(DR6) и если полученное значение превышает (DR3), передает управление команде 9. Таким образом, каждый процессор осуществляет переадресацию для последующей выборки "своего" адреса ссылки из массива таких адресов. Если при этом массив не исчерпан, то команда 8 (Быстрый Переход) передает управление на команду 3 — продолжение цикла подстановки ссылок. Если переадресация выводит из массива, то команда 9 восстанавливает дескрипторный элемент DR7 , т.е. выполняется операция (DR7):= (DR5) = a0+3i.


Содержание  Назад  Вперед