Проблемы параллельных вычислений. Часть 2.

Анализируя архитектуру машины Cyber-205, следует отметить, что в ней не сделано никаких попыток продвинуть вперед проблему распараллеливания скалярных вычислений. Существует традиционное для современных машин с многими арифметическими устройствами наложение операций. Векторные операции допускают в принципе высокую степень параллельности внутри одной векторной операции. Однако здесь существуют следующие принципиальные недостатки:

  • при выполнении какой-либо векторной операции, например сложения, устройства исполнения операций других типов (умножения, деления и т. д.) не будут задействованы, что значительно снижает возможности параллельного счета. Упомянутое «сцепление» мало помогает из-за больших ограничений его применения;
  • при вычислении сложного векторного выражения, такого, например, как (А + В) • C+D, где все переменные являются массивами, все промежуточные результаты-массивы записываются в основную память. Сначала записывается промежуточный результат первого сложения:
    Сложение векторного выражения

    Затем этот результат элемент за элементом вновь вызывается в процессор для выполнения умножения:
    Умножение векторов

    Наконец,
    Сложение векторов

    При этом сильно перегружается память.

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