Перспективные модели многопроцессорных ЭВМ. Часть 4.

Реализация многопроцессорной суперЭВМ. Структурная схема МВК «Эльбрус-3» приведена на рис. 1.7. Отметим наиболее важные особенности разработанной архитектуры, в том числе ее отличие от существующих реализаций машин с управлением каждым тактом, в частности от архитектуры ЭВМ фирмы FPS.

Структурная схема МВК «Эльбрус-3»

В МВК «Эльбрус-3» идеология управления каждым тактом реализована только внутри каждой процедуры, т. е. внутри каждой процедуры транслятором составлено полное расписание по тактам всей работы и переведено в большие команды (или микрокоманды), составляющие код данной процедуры. По характеру программирования на языках высокого уровня процедура является независимым модулем, который может независимо транслироваться и независимо вызываться.

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

Именно так сделано в ЭВМ фирмы FPS, из-за чего, в частности, система ограничена научно-техническими применениями и служит в качестве приставки к универсальной машине.

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

Кроме того, некоторые небольшие процедуры реализуются как макроподстановки. Однако это, скорее, исключение. Основной единицей, внутри которой осуществляется потактовое планирование, является процедура. Между собой с точки зрения планирования процедуры стыкуются динамически. Это означает, что запускаемая процедура начинает работать, вообще говоря, не дожидаясь конца выполнения предшествующих операций запускающей процедуры и записи результатов этих операций в регистры. Тем самым существенно снижаются накладные расходы на запуск процедуры, что очень важно для модульного программирования на языках высокого уровня. Конфликт по записи результатов операций вызывающей процедуры с чтением операндов вызываемой процедуры обнаруживается динамически аппаратурой. В случае его возникновения один или несколько тактов в вызываемой процедуре пропускается, не нарушая расписания, составленного транслятором для нее, и эти такты отдаются для выполнения работы вызывающей процедуры. Процессор спроектирован таким образом, что позволяет это выполнить. Ввиду того, что конфликт по записи — довольно редкое явление, в МВК «Эльбрус-3» обеспечивается высокоэффективный запуск процедуры, не нарушающий модульности.

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