История отечественной вычислительной техники

Генерация объектного кода в системе трансляции с языка Фортран для векторной ЭВМ М-10

Описан язык генерации машинных кодов для векторной многопроцессорной ЭВМ М-10 в системе трансляции с языка Фортран.

При построении трансляторов для векторных ЭВМ, к которым относится магистральная многопроцессорная ЭВМ М-10 [1], необходим нетрадиционный подход к проблеме. Архитектурные возможности ЭВМ М-10 позволяют строить высокоэффективный объектный код, что достигается распараллеливанием отдельных участков исходных программ.

Одним из заключительных и наиболее ответственных этапов трансляции является генерация машинного кода. Эффективность трансляторов во многом зависит от того, в какой мере структура объектных программ соответствует свойствам решаемых задач с точки зрения организации параллельных вычислений. В системе трансляции с языка Фортран (версия Фортран-Дубна) для построения достаточно хорошего объектного кода, использующего архитектурные возможности ЭВМ М-10 — главным образом, векторную обработку данных [1], — был разработан язык генерации машинного кода (язык МК).

Основными единицами действия МК являются программы, написанные на машинно-ориентированном языке кодирования Автокод-1 [2]. Их назначение заключается в том, чтобы строить различные машинные команды, анализировать и совмещать в процессе генерации машинного кода те команды, которые можно выполнять одновременно. Входной информацией для этих программ служит дерево вывода транслируемой программы в заданной КС — грамматике исходного языка. (Такая грамматика, определяющая контекстно-свободную составляющую Фортрана, используется как основа практически всех алгоритмов трансляции, что, безусловно, можно отнести к существенным особенностям рассматриваемого транслятора.)

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

При генерации машинных кодов под управлением единиц МК происходит автоматическое распределение регистров и т. п.; система трансляции следит за занятостью регистров и процессоров и строит объектную программу с учетом занятости и максимально возможной загрузки базового оборудования ЭВМ. Структуры данных, используемые при трансляции, имеют различные типы переменных. Их классификация основана не на определении типа или характера обрабатываемой переменной (integer, real и т. п.), а на определении механизма доступа и обработки соответствующей переменной. Переменные отличаются не тем, что они собой представляют, а тем, где (т. е. в памяти какого типа) они записаны: тип памяти определяет способ доступа к переменным и допустимые виды их обработки. Для использования этого механизма доступа не требуется писать какие-либо команды или действия — все определяется именем переменной в языке МК и реализуется структурно.

Вся указанная выше информация обрабатывается программами МК- Структура этих программ не зависит от языков, с которых осуществляется трансляция, и определяется лишь средствами, использующимися для их описания. Элементом языка МК является конструкция вида <левый операнд> <правый операнд> <операция>, где каждая из трех компонент может иметь собственный аргумент, который записывается за группой <операция>. Левый и правый операнды представляют собой элементы входной или внутренней информации. <Операция>-это действие языка МК, направленное на построение машинных кодов или их подготовку. Аргумент операнда или операции отражает структуру входной или внутренней информации для МК. Имеется более ста единиц или операций МК. Их можно разбить на несколько основных функциональных групп: операции записи, сложения, сравнения, анализа использования регистров, контроля магазинов, подготовки и формирования машинных команд, управления, связи с операционной средой.

Алгоритмы генерации объектного кода, записанные на языке МК, обрабатываются универсальной частью системы трансляции.

Заключение. Предложенная система трансляции и, в частности, язык МК позволяют получать параллельный объектный код для векторной ЭВМ М-10 исходя из последовательного языка высокого уровня, каким является Фортран.

Литература

  1. Карцев М. А. Вычислительная машина М-10. — Доклады АН СССР, т. 245, 1979, № 2.
  2. Карцев М. А., Миллер  Л. Я., Носаль  Г. В., Баранов  Л. Д, Смирнова Г. И., Калягин  Б. И., Заточин  В. Н., Кузьмин  В. М., Корнеев  Р. А., Либуркин  Л. 3., Солобеев  С. А. Устройство управления М-10. — Вопросы радиоэлектроники, сер. ЭВТ, 1980, вып. 9.

Статья опубликована в сборнике “Вопросы радиоэлектроники”, серия “Электронная вычислительная техника”, вып. 9, 1984 г., стр. 23.