На правах рекламы:
ISSN 0236-235X (P)
ISSN 2311-2735 (E)

Авторитетность издания

ВАК - К1
RSCI, ядро РИНЦ

Добавить в закладки

Следующий номер на сайте

2
Ожидается:
16 Июня 2024

Кросс-программирование: современные подходы к организации и новым областям применения

Статья опубликована в выпуске журнала № 3 за 1991 год.
Аннотация:
Abstract:
Авторы: Машечкин И.В. () - , Чженья Л ЯН. () -
Ключевое слово:
Ключевое слово:
Количество просмотров: 15185
Версия для печати

Размер шрифта:       Шрифт:

Кросс-программирование управляющих ЭВМ

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

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

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

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

3.    Отсутствуют резидентные средства разра ботки программного обеспечения или сущест венно затрудняется использование таких средств из-за малой распространенности дан ных машин.

Эти особенности определили необходимость использования при создании программного обеспечения так называемых систем кросс-программирования, которые позволяют отделить процесс подготовки текста программ, их трансляцию -и т.п. от реального применения разработанных программ между ЭВМ различных типов (которые в общем случае могут отличаться друг от друга как архитектурой, так и операционным окружением). Будем называть ЭВМ, на которой производится разработка программ, инструментальной ЭВМ, а машину, дл! которой разрабатывается программное обеспечение, - объектной или целевой ЭВМ. Таким образом, система кросс-программирования - это система программирования, работающая на инструментальной ЭВМ и предназначенная для создания программного. обеспечения объектной ЭВМ. Анализируя наиболее распространенны»] отечественные системы кросс-программировИ ния [6], можно сделать следующие выводы:

—  из-за жестких ограничений на эффективность! кода программ, определяемых задачами реаль-, ного времени, в большей части этих систем ij качестве языковых средств программированы] используются ассемблеры объектных ЭВМ шпЦ языки более высокого уровня, но ориентировав^ ные на объектную ЭВМ;                                                         |

-   рассматриваемые системы кросс-программ* j рования ориентированы на конкретные типы-; инструментальной и объектной ЭВМ, т.е. пере нос системы на другой тип инструментально! ЭВМ или получение возможности программи рования новой объектной ЭВМ существенно за труднено или даже невозможно.

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

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

программирования в большинстве случаев связывалось с программированием только специализированных управляющих ЭВМ, то сегодня парк специализированных ЭВМ, для программирования которых необходимы системы кросс-программирования, существенно изменился как качественно, так и по составу. Можно выделить следующие классы специализированных ЭВМ, для которых создание систем кросс-программирования является актуальным:

-    математические спецпроцессоры и спецпро- цессорные системы;

-    "универсальные" суперЭВМ;

-    управляющие вычислительные комплексы.

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

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

Развитие микроэлектроники повлияло на качество и требования, предъявляемые к программному обеспечению управляющих комплексов. Сложность задач, решаемых с их помощью, разнообразие типов процессорных элементов, появление микропроцессоров, близких по архитектуре к суперЭВМ (Intel80860, М68040 и др-)> определили необходимость снижения трудоемкости и стоимости разработки программного обеспечения этого класса ЭВМ, увеличение его надежности. Достижение этих целей возможно при использовании современных средств программирования, включая использование языков высокого уровня.

Подводя итоги, можно говорить об имеющейся в настоящее время тенденции в разработке и производстве ЭВМ, специализирующихся на решении достаточно узких классов задач, для которых важным является наличие развитых средств кросс-программирования, включающих средства программирования не только (и не столько) на машинно-ориентированных языках, но и на языках высокого уровня, средства отладки, поддержки разработки программных проектов и другие программные компоненты, повышающие уровень сервиса работы и качество получаемого программного продукта. Актуальным является создание многофункциональных систем кросс-программирования, открытых для модификации и развития с целью учета особенностей программирования тех или иных специализированных ЭВМ и позволяющих служить ядром как для создания узкоспециальных систем кросс-программирования управляющих ЭВМ [11], так и для достаточно универсальных систем, например для программирования различных типов высокопроизводительных вычислительных систем. Такие многофункциональные системы кросс-программирования должны обладать следующими возможностями:

-    использованием для создания программного обеспечения как ассемблеров объектных ЭВМ, так и традиционных языков высокого уровня;

-    проведением отладки программ в терминах входных языков высокого уровня;

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

Многофункциональные системы кросс-программирования

В качестве примера многофункциональной системы кросс-программирования, обладающей перечисленными качествами, может служить система, разрабатываемая в Московском университете [5]. Система может применяться как в кросс-режиме при разработке ПО ЭВМ, отличающихся от инструментальной ЭВМ архитектурой и/или операционным окружением, так и в традиционном для систем программирования режиме, при котором отсутствуют отличия между инструментальной и объектной средой. Для обеспечения возможности расширения спектра объектных ЭВМ и переноса системы на другие инструментальные ЭВМ все основные компоненты системы кросс-программирования имеют выделенные машинно-независимые части программ и части, функционирование которых определяется конкретными особенностями архитектуры и операционного окружения целевых машин. Рассмотрим основные возможности и принципы построения данной системы кросс-программирования.

Ядром рассматриваемой системы программирования является система кросс-трансляторов, позволяющая использовать в качестве инструментальных средств программирования группу традиционных языков высокого уровня: Си, Си++, Паскаль, ФОРТРАН-77, ФОРТ-РАН-90, Модула-2, ОБЕРОН. Отличительной чертой организации трансляторов для этих языков является выделение машинно-независимого этапа обработки исходных программ и перевода их в нотацию единого машинно-независимого промежуточного языка — Унифицированного Промежуточного Представления (УПП) [3]. УПП является модульным промежуточным языком, синтаксис которого не требует сложного анализа при распознавании конструкций. Семантика конструкций УПП, по своей сути, соответствует семантике конструкций группы входных языков системы кросс-трансляторов, что определяет возможность эффективной генерации и оптимизации кода. Средствами УПП возможно машинно-независимым образом представлять конструкции управления и обработки данных исходных программ. УПП имеет средства отображения параллельной обработки информации, что позволяет, с одной стороны, интерпретировать соответствующие конструкции входных языков, с другой - генерировать код для векторных ЭВМ. В частности, разработан пакет программ векторизации последовательного УПП-кода, разрабатывается пакет глобальной оптимизации программ на уровне УПП.

Рассмотрим схему функционирования системы кросс-трансляторов (рис.1). Обработка программ в рамках системы осуществляется в три этапа.

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

Второй этап - это этап обработки исходной программы в форме модуля УПП. На втором

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

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

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

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

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

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

Другим способом является совмещение отладчика с интерпретатором исходного языка [2]. Такие решения, с одной стороны, существенно упрощают организацию механизмов работы с контрольными точками, выполнение программы в пошаговом (пооператорном) режиме; с другой стороны, отлаживаемая программа не в полной мере соответствует исполняемому оригиналу программы, т.к. внесение в код отлаживаемой программы" дополнительной информации и дополнительных машинных команд или интерпретация языка программирования изменяют характеристики отлаживаемой программы: увеличивается объем кода программы, изменяются временные характеристики выполнения программы, что зачастую может быть неприемлемым для реального использования.

В итоге можно сформулировать требования, предъявляемые к средствам отладки системы кросс-программирования:

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

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

Состав инструментальных средств многоязыковой системы кросс-программирования определяет некоторые новые требования к услугам, предоставляемым средствами отладки. Для иллюстрации рассмотрим специфику отладки программ, написанных на различных языках. ФОРТРАН традиционно используется для программирования численных задач, тре-

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

Таким образом, средства отладки системы кросс-программирования должны обеспечивать различные по способам взаимодействия с пользователем формы проведения отладки - как пакетные, так и диалоговые. Пакетные отладчики предусматривают возможность описания процесса отладки в терминах некоторого специального языка, который позволяет: осуществлять вычисление простейших выражений, операндами которых являются именованные объекты отлаживаемой программы (имена переменных, полей структур, констант); проверять условия и в зависимости от результата выполнять те или иные действия по отладке; устанавливать или снимать контрольные точки; изменять содержимое переменных отлаживаемой программы; изменять последовательность выполнения операторов в отлаживаемой про* грамме. Затем программа отладки и отлаживаемая программа выполняются совместно, без вмешательства пользователя. Диалоговые отладчики позволяют проводить те же действия по отладке, но оперативно, в режиме диалога.

Средства отладки системы кросс-программирования [4] построены по четырехуровневой схеме (рис.2), позволяющей варьировать: режим работы отладчика (пакетный, диалоговый с экранным интерфейсом, диалоговый со строч-

ным интерфейсом и т.п.); тип объектной машины; тип операционного окружения объектной машины. Рассмотрим функциональные обязанности каждого из программных уровней средств отладки:

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

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

•        Третий уровень — Машинно-ориентирован' ный интерпретатор — преобразует полученный запрос в адресную форму и передает его Ис полняющей системе.

•        На уровне Исполняющей системы происхо дит итоговое выполнение примитивов, обеспе чивающих выполнение базовых действий по от ладке: установка и снятие контрольной точки по адресу; чтение и запись содержимого памя ти программы по адресу; пошаговое выполне ние машинной команды и т.д. Реализация Ис полняющей системы зависит от операционного окружения, работающего на объектной ЭВМ. В частности, Исполняющая система может быть встроена в имитационный комплекс объектной ЭВМ.

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

нои оптимизации, что является предметом дальнейших исследований.

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

Важным качеством системы кросс-программирования является возможность ее внедрения на различные типы инструментальных ЭВМ; для этой цели все компоненты системы программируются на языке Си в операционной среде типа UNIX.

Некоторые выводы

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

Что дает подобная организация систем кросс-программирования? Авторы считают, что применение многофункциональной системы кросс-программирования в реальных условиях или использование основополагающих принципов ее построения при создании аналогичных систем позволит достичь следующих целей:

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

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

3.       Сократить расходы, необходимые при созда нии систем программирования новых ЭВМ раз личных типов, упростить (а следовательно, и удешевить) резидентное базовое программное обеспечение высокопроизводительных ЭВМ. Примером может служить возможная организа ция на front-end ЭВМ автоматизированного ра бочего места разработчика программного обес печения суперЭВМ. В функции АРМ будет вхо дить полная подготовка программы (ввод и хранение исходного текста, трансляция, опти мизация, компоновка с библиотечными функ циями и т.д.) к выполнению и передача ее на основную машину (суперЭВМ). В этом случае базовое ПО суперЭВМ может обеспечивать только взаимосвязь с front-end машинами и вы полнение готовых программ в пакетном ре жиме.

4.       Система является открытой для развития в области:

-     включения в ее состав трансляторов новых процедурных языков;

-     построения средств оптимизации и генерации эффективного объектного кода;

-     разработки программ, повышающих уровень предоставляемого сервиса.

Список литературы

!. Андрианов А.Н., Задыхайло И.Б. Некоторые особенности программирования на ЭВМ CRAY-1. - Препринт. N 77 / ИПМ им. М.В. Келдыша АН СССР. - М„ 1982.

2.         Бочков CO., Смелянский Р.Л. Интерактивный символьный отладчик // Микропроцессорные средства и системы. 1987. N 4.

3.         Даниярходжаев Т.И., Маслов В.Ю., Мащечкнн И.В. Про межуточный язык многоязыковой кросс-системы програм мирования // Сб.: Архитектура и численные методы. - Препринт / ОВМ АН СССР. - М„ 1988.

4.         Даниярхаджаев Т.И., Мащечкин И.В. Средства кросс-от ладки Си-программ. М.: ВИНИТИ, 1988.

5.         Машечкин И.В. Многойэыковал система кросс-програм мирования // Методы трансляции и конструирования про грамм: Всесоюэ. конф. - Новосибирск: СО АН СССР, 1988. 4.2. С. 42-43.

6.         Рауд Р.К., Смелянский Р.Л. Кросс-системы. Современное состояние // Микропроцессорные средства и системы. 19&7. N 4.

7.         СуперЭВМ. Аппаратная и программная организация: Пер. с англ. / Под. рея. С. Фернбэла. - М.: Радио и связь, 1991.

8.         Aho A.V., Ganapalhi М„ Tjiang S.W.K. Code Generation Using Tree Matching and Dynamic Programming. - ACM Trans actions on Programming Lang, and Systems. Vol. 11, N 4, Oct. 1989, p. 491.

9.         Aho A.V., Johnson S.C. Optimal Code Generation for Expression Trees.-Journal of ACM. Vol. 23, N 3, July 1976, pp. 488- 301.

10.     Charlesworth A.E. An Approach to Scientific Array Processing: The Architectural Design of the AP-120B/EPS - 164 Family. - IEEE Computer, Sept. 1981, pp. 18-27.

11.     Terry C. Integrated Toolsets Software Cross-development. - EDN. Vol. 33, N 14, 19B8, pp. 252-257.

12.     The floating point transputer - IMS-T800. - Electronic Product I>sign. Vol. 9, N 3, 1987, pp. 33-36.


Постоянный адрес статьи:
http://swsys.ru/index.php?page=article&id=1331&lang=
Версия для печати
Статья опубликована в выпуске журнала № 3 за 1991 год.

Возможно, Вас заинтересуют следующие статьи схожих тематик: