Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 6004.doc
Скачиваний:
21
Добавлен:
30.04.2022
Размер:
1.29 Mб
Скачать

3.7.3.2Редукция высоты дерева

Применяя ассоциативные, коммутативные и дистрибутивные свойства арифметики, компиляторы могут обнаруживать неявный параллелизм в алгебраических выражениях и генерировать объектный код для мультипроцессорных систем с указанием операций, которые можно выполнять одновременно. Компиляторы должны действовать в соответствии со старшинством операций. Применение правил старшинства операций дает компилятору возможность устанавливать однозначный последовательный порядок действий для алгебраического выражения, а затем переходить к генерации машинного кода, реализующего вычисление этого выражения. Зачастую однозначность и последовательность порядка действий при вычислениях не обязательны. Например, поскольку операции сложения и умножения являются коммутативными, компилятор, генерирующий код для перемножения р и q может выдать либо p*q, либо q*p; результаты вычислений будут, естественно, одинаковыми. Аналогично, сложение р и q можно выполнить либо как p+q, либо как q+p. Используя свойство коммутативности, а также ассоциативности и дистрибутивности, компилятор может довольно гибко перестраивать выражения, делая их более удобными для параллельных вычислений.

Например, используя ассоциативность сложения, можно преобразовать выражение ((P + q) + r) + s в выражение вида (p+q)+(r+s), которое более приспособлено для параллельных вычислений. Структуре первого выражения соответствует трехуровневое дерево, в то время как структуре второго - лишь двухуровневое, и поэтому его можно выполнить гораздо быстрее на мультипроцессорной системе.

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

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

3.7.4.Мультипроцессорные операционные системы

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

распределение и управление ресурсами;

защиту наборов данных и системных таблиц;

предотвращение системных тупиков (дедлоков);

аварийное завершение заданий;

балансирование нагрузки по вводу-выводу;

балансирование процессорной нагрузки;

реконфигурацию.

Механизмы для реализации трех последних из перечисленных функции характеризуются значительными отличиями для мультипроцессорных систем. Параллелизм в аппаратуре и в программах имеет первостепенное значение для мультипроцессорных комплексов, так что автоматическое распараллеливание является ключевым фактором мультипроцессорных операционных систем.

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