Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
113
Добавлен:
20.05.2015
Размер:
525.82 Кб
Скачать

3. Вс с управлением вычислениями по запросу

В системах с управлением от потока данных каждая команда, для которой имеются все необходимые операнды, немедленно выполняется. Однако для получения окончательного результата многие из этих вычислений оказываются ненужными. Отсюда прагматичным представляется иной подход, когда вычисления инициируются не по готовности данных, а на основе запроса на данные. Такая организация вычислительного процесса носит название управления вычислениями по запросу (demand-driven control). В ее основе, как и в потоковой модели (data-driven control), лежит представление вычислительного процесса в виде графа. В потоковой модели узлы вверху графа запускаются раньше, чем нижние. Это – нисходящая обработка. Механизм управления по запросу состоит в обработке вершин потокового графа снизу вверх путем разрешения запуска узла, лишь когда требуется его результат. Данный процесс получил название редукции графа, а ВС, оперирующая в режиме снизу вверх, называется редукционной вычислительной системой.

Математическую основу редукционных ВС составляют лямбда-исчисления, а для написания программ под такие системы нужны так называемые функциональные языки программирования (FP, Haskell и др.). На функциональном языке все программы представляются в виде выражений, а процесс выполнения программы заключается в определении значений последних (это называется оценкой выражения). Оценка выражения производится посредством повторения операции выбора и упрощения тех частей выражения, которые можно свести от сложного к простому (такая часть выражения называется редексом, причем сам редекс также является отдельным выражением). Операция упрощения называется редукцией. Процесс редукции завершается, когда преобразованное редукцией выражение больше не содержит редекса. Выражение, не содержащее редекса, называется нормальной формой.

В редукционной ВС вычисления производятся по запросу на результат операции. Предположим, что вычисляется выражение: a=(b+1) c - d/c. В случае потоковых моделей процесс начинается с самых внутренних операций, а именно с параллельного вычисления (b + 1) и d/c. Затем выполняется операция умножения (b + 1) с и, наконец, самая внешняя операция – вычитание.

При вычислениях, управляемых запросами, все начинается с запроса на результат а, который включает в себя запрос на вычисление выражений (b+1) с и d/c, а те, в свою очередь, формируют запрос на вычисление b+ 1, то есть на операцию самого внутреннего уровня. Результат возвращается в порядке, обратном поступлению запросов.

Редукционные вычисления, естественно, согласуются с концепцией функционального программирования, упрощающей распараллеливание программ.

На рис. 11 показан процесс вычисления с помощью редукционной ВС значения выражения а = b - c(b = d + e, с = fg) для d =1, e = 3, f= 5, g = 7. Программа редукции состоит из распознавания редексов с последующей заменой их вычисленными значениями. Таким образом, вся программа в конечном итоге редуцируется до результата.

Рис. 11. Пример вычисления выражения на редукционной ВС

Известны два типа моделей редукционных систем: строчная и графовая, отличающиеся тем, что именно передается в функцию – скопированные значения данных или же только указатели, указывающие на места хранения данных.

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

На рис. 12 показан процесс вычислений с помощью строчной редукции.

Рис. 12. Процесс вычислений в модели со строчной редукцией

Если требуется значение а = (b + с) (b - с) (рис. 12, а), то копируется граф программы, определяющий вычисление а (рис. 12, б). При этом запускается операция умножения. Поскольку это вычисление невозможно без предварительного расчета двух параметров, то запускаются вычисления «+» и «-», в результате чего образуется редуцированный граф (с ветвями «6» и «2») (рис. 12, в). Результат получается путем дальнейшей редукции (рис. 12, г).

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

Соседние файлы в папке УМК_Орг_ЭВМ