logo search
Архитектура ВС (Карцева А

Подключение и отключение процессорных элементов

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

При маскировании, определяемом данными, каждый ПЭ самостоятельно объяв­ляет свой статус «подключен/не подключен». В составе системы команд имеются наборы маскируемых и немаскируемых команд. Маскируемые команды выполня­ются в зависимости от состояния флага F, в то время как немаскируемые флаг про­сто игнорируют. Процедуру маскирования рассмотрим на примере предложения IF-THEN-ELSE. Пусть х — локальная переменная (хранящаяся в локальной памяти каждого ПЭ). Предположим, что процессорные элементы массива параллельно выполняют ветвление:

IF (х > 0) THEN «оператор» ELSE -«оператор В>

и каждый ПЭ оценивает условие IF. Те ПЭ, для которых условием > 0 справедливо, установят свой флаг F в единицу, тогда как остальные ПЭ — в ноль. Далее КМП распределяет оператор А по всем ПЭ. Команды, реализующие этот оператор, долж­ны быть маскируемыми. Оператор А будет выполнен только теми ПЭ, где флаг F установлен в единицу. Далее КМП передает во все ПЭ немаскируемую команду ELSE, которая заставит все ПЭ инвертировать состояние своего флага F. Затем КМП транслирует во все ПЭ оператор В, который также должен состоять из маскируемых команд. Оператор будет выполнен теми ПЭ, где флаг F после инвертирования был установлен в единицу, то есть где результат проверки условия х > 0 был отрицательным.

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