История развития программного обеспечения

Программное обеспечение транспьютерных ускорителей

В данной статье речь пойдет о ПО, необходимом для написания и отладки транспьютерных программ.

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

Язык Occam

Для написания и отладки программ на языке параллельного программирования Occam 2 фирмой INMOS был разработан инструментальный пакет Occam 2 Toolset ( OTS ). Чтобы работать с этим пакетом, вам понадобится IBM -совместимый ПК, оснащенный НЖМД, 512-Кбайт ОЗУ, DOS версии 3.0 или более поздней, а также базовой транспьютерной платой IMS B 008 с хотя бы одним установленным на ней транспьютерным модулем 1, имеющим не менее 2 Мбайт памяти. Для работы пакета необходимо 5 Мбайт свободного пространства на НЖМД.

Пакет OTS может использоваться и на персональном компьютере NEC PC 9801, оснащенном 512-Кбайт ОЗУ и базовой транспьютерной платой IMS В015, при чем по крайней мере один транспьютерный модуль на ней также должен иметь 2 Мбайт памяти. Кроме того, выпускаются варианты пакета для рабочих станций SUN 3, SUN 4 и машин VAX.

В пакет входят компилятор с языка Occam 2 для всех типов транспьютеров от Т212 до Т805, компоновщик, конфигуратор транспьютерных сетей, загрузчик и библиотека подпрограмм языка Occam . Большинство операций при работе с этим пакетом осуществляется средствами DOS над ASCII -файлами, что создает для пользователей ПК определенные удобства, например, позволяет им работать с любыми популярными экранными редакторами.

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

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

Предусмотрена возможность подключения к программе модулей, полученных после соответствующей компиляции подпрограмм, написанных на других языках программирования, например Си (программа должна быть подготовлена с помощью инструментального пакета ANSI С Toolset , такжераз работанного и поставляемого фирмой INMOS ), причем пакет 0 TS поддерживает вызов функции языка Си непосредственно из программ на языке Occam .

Все операции ввода-вывода в OTS выполняются хост-сервером ( Host File Server ) — специальным средством для организации взаимодействия транспьютерной системы с хост-компьютером. В процессе работы программы хост-сервер в реальном времени осуществляет ее связь с файловой системой DOS и устройствами ввода-вывода ПК.

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

Конфигуратор. Подготовка к за грузке и распределение отдельных частей программы по транспьютерам осуществляется программой- конфигуратором.

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

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

В состав пакета OTS входит также встроенный ассемблер. Дополнительно могут прилагаться три отладчика: интерактивный символьный отладчик, символьный анализатор отказов и эмулятор транспьютера Т425.

Интерактивный отладчик позволяет отлаживать программы на языках Occam или Си в процессе их выполнения в транспьютерной сети. Для его работы необходимо задействовать один транспьютерный модуль с ОЗУ объемом 2 Мбайт.

Анализатор отказов предназначен для выявления причин останова программы при ее выполнении в рабочем режиме.

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

Parallel С 

Для многопроцессорных систем создано несколько модификаций языка Си. Среди них наиболее распространенным сегодня является Parallel С, предложенный английской фирмой 3 L . На его базе фирма построила систему разработки транспьютерных программ, которая включает в себя компилятор, компоновщик, хост-сервер и конфигуратор. Отдельно поставляются отладчик Tbug , отслеживающий выполнение программы на уровне исходного кода, программа WORM , предназначенная для анализа транспьютерной сети, и дизассемблер Decode. Хост-машиной для этой системы разработки может служить любой IBM -совместимый ПК с ОЗУ объемом не менее 512 Кбайт, НЖМД, DOS версии 3.0 и выше и транспьютерной платой, совместимой с изделиями фирмы INMOS. Объем памяти на транспьютерной плате должен составлять 2 Мбайт, а объем свободного пространства на НЖМД — не менее 10 Мбайт.

Компилятор. Язык Parallel С совместим с Microsoft С и полностью поддерживает стандарт Кернигана и Ритчи.
Кроме того, он содержит ряд расширений:

  • средства синхронизации подзадач при выполнении программы на одном транспьютере (с помощью семафоров) и в транспьютерной сети (с помощью линков);
  • средства для работы с транспьютерными каналами ввода-вывода и таймером;
  • данные типа enum;
  • интерфейс с MS — DOS (функции int 86, bdos и др.);
  • ассемблерные вставки, использующие переменные исходной программы.

Компоновщик. Полученные при компиляции программ на языке Parallel С файлы совместимы по двоичному коду с аналогичными файлами, генерируемыми компиляторами фирмы 3 L (с языков Фортран и Паскаль) и компиляторами фирмы INMOS . Компоновщик системы разработки программ на языке Parallel С успешно работает с объектными модулями всех указанных компиляторов, обеспечивая возможность гибкого выбора языка программирования. Таким образом, подзадачи, написанные на языке Parallel С, могут быть соединены с подзадачами, написанными на других языках, включая и Occam 2.

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

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

Для некоторых типов сетей, например, с архитектурой, получившей название «транспьютерная ферма» ( Transputer Farm ), разработан другой, более универсальный конфигуратор ( Flood — Filling Configurer ). Он сам динамически в процессе решения задачи определяет свободные процессоры, загружает в них части выполняемой программы и по завершении вычислении собирает результаты.

Еще один инструментальный пакет для разработки и отладки транспьютерных программ на языке Си — ANSI С Toolset, созданный фирмой INMOS. Пакет поддерживает стандарт ANSI ХЗ.159-1989 и выпускается в нескольких версиях: для IBM -совместимых ПК, NEC PC, VAX, SUN 3 и SUN 4.

Parallel FORTRAN

Для написания транспьютерных программ на языке Фортран фирма 3 L предлагает специальную систему разработки, содержащую (как и система программирования на Си) компилятор, компоновщик, хост-сервер и конфигуратор. Пакет использует единый для всех транспьютерных систем разработки фирмы 3 L отладчик Tbug . Требования к аппаратуре — те же, что и при работе с пакетом Parallel  С.

Язык Parallel FORTRAN фирмы 3 L полностью реализует стандарт FORTRAN 77 ( ANSI ХЗ.9-1978) на транспьютерах и включает в себя следующие расширения:

  • средства синхронизации подзадач при выполнении программы на одном транспьютере с помощью семафоров и в транспьютерной сети с помощью линков;
  • средства для работы с транспьютерными каналами ввода-вывода и таймером;
  • средства для организации интерфейса с хост-машиной (связь с MS — DOS );
  • циклическую конструкцию DO WHILE, оператор INCLUDE, встроенные функции для работы с битами;
  • средства инициализации данных при объявлении их типа.

Следует отметить, что для программирования на Фортране фирма INMOS выпустила собственный инструментальный пакет ANSI FORTRAN 77 Toolset, в вариантах для IBM PC, NEC PC, VAX, SUN 3 и SUN 4. Пакет поддерживает программирование мультитранспьютерных систем с архитектурой типа «транспьютерная ферма» или «конвейер» и обеспечивает параллельную обработку данных в транспьютерной сети.

Parallel Pascal

Фирма 3 L поставляет также систему разработки для программирования на языке Parallel Pascal, который был одобрен Международной организацией по стандартизации ( ISO ). Кроме стандартных функций этот язык поддерживает:

  • средства синхронизации подзадач при выполнении программы на одном транспьютере с помощью семафоров и в транспьютерной сети с помощью линков;
  • средства для работы с транспьютерными каналами ввода-вы вода и таймером;
  • доступ к функциям MS-DOS и ресурсам хост-машины;
  • директивы IMPORT и EXPORT для раздельной компиляции программных модулей;
  • оператор INCLUDE для включения в основную программу исходных текстов из отдельных файлов;
  • средства для выполнения операций над 64-разрядными числами с плавающей запятой;
  • средства низкоуровневого программирования, в частности ассемблерные вставки с возможностью передачи параметров через имена переменных, операции над битовыми строками и т.д.

Многоязычный пакет

Если каждая из рассмотренных выше систем была рассчитана на применение в основном одного языка программирования, то система MultiTool фирмы Parsytec рекламируется как программная среда с широким набором языков. Кроме компиляторов фирмы 3 L с языков Си, Фортран и Паскаль MultiTool работает с компиляторами Occam 2 и Пролог фирмы Parsytec, а также Par. С фирмы Parsec. Первоначально разработанная для системы транспьютерных модулей Multi-Cluster-1, она может использоваться с различными аппаратными средствами фирм как Parsytec, так и INMOS и различными хост-машинами (IBM PC, PS /2, SUN, VAX, Macintosh).

Пакет MultiTool включает в себя библиотеку векторных процедур VecLib, содержащую свыше 100 подпрограмм, и библиотеку математических процедур MathLib, в которую входят более 50 программ реализации различных числовых алгоритмов для параллельных вычислений на транспьютерах (алгоритмов матричных операций, быстрого преобразования Фурье, вычисления специальных функций, оптимизации, сортировки, аппроксимации и т.д.). При написании процедур MathLib использовался ассемблер транспьютера Т800.

Для наиболее сложных задач моделирования и управления, решаемых с помощью транспьютерных сетей, созданы (и разрабатываются новые) специальные транспьютерные операционные системы.

ОС Helios

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

Особенности

ОС Helios использует применяемые на рабочих станциях UNIX систему команд и графический интерфейс X Window System VI 1.2. Она реализует сетевую модель «клиент — сервер». Предназначенная для работы в распределенных системах, эта ОС не поддерживает централизованных «серверов», а распределяет их по транспьютерной сети. Чтобы получить доступ к ресурсам, «клиент» посылает запросы «серверам», которые его обслуживают.

Применение распределенной ОС повышает надежность работы сети, уменьшает влияние отдельных отказов и возмущений, связанных, например, с изменением ее архитектуры. Для описания структуры сети и ресурсов в ОС используется карта ресурсов ( Resource Map ). С ее помощью производится загрузка и конфигурирование сети, а также управление распределением программы по процессорам. В каждый процессор загружается ядро ОС ( Nucleus ), которое управляет ресурсами этого процессора и интегрирует его в общую сетевую структуру. Ядро ОС включает в себя малое ядро ( Kernel ), системную библиотеку, загрузчик, диспетчер и драйверы ввода-вывода.

Малое ядро управляет аппаратными ресурсами транспьютера, обеспечивающими передачу сообщений, размещение информации в памяти и т. п. В отличие от других аналогичных операционных систем, в ОС Helios это ядро не управляет процессами и не занимается их диспетчеризацией. Такие задачи решаются аппаратными средствами процессора. Системная библиотека обеспечивает обслуживание системных вызовов, которые в данном случае идентичны системным вызовам операционной системы UNIX. Загрузчик осуществляет ввод программы в процессор, а после ее выполнения перемещает результаты в ОЗУ. Диспетчер отвечает за все процессы, связанные с отработкой программы в процессоре, — с момента загрузки и до окончания ее выполнения. Для нормальной работы ядра ОС Helios каждый процессор должен иметь собственное ОЗУ объемом не менее 256 Кбайт.

В ОС Helios возможно одновременное выполнение множества задач, которые описываются отдельно компилируемыми программными модулями и компонуются друг с другом. Каждая из задач является либо «клиентом», либо «сервером». Обмен сообщениями происходит по специально организованным каналам ( Pipes ) с использованием процедур обработки Потоков сообщений. Передача данных между задачами, реализуемыми на разных процессорах, осуществляется автоматически и прозрачна для пользователя системы. Каждая задача в течение всего времени своего существования находится на том процессоре, в который она была загружена. Задачи могут состоять из «нитей» ( Thread ), адекватных процессам языка Occam. Все «нити» одной и той же задачи должны выполняться на одном и том же процессоре и обмениваться данными через общие переменные с помощью механизма семафоров. Новые «нити» могут создаваться динамически.

Задачи объединяются в группы ( Task Force ) и автоматически распределяются по нескольким процессорам сети менеджером TSF ( Task Force Manager ). Это распределенный сервер, который следит также за балансом загрузки отдельных процессоров. Процесс распределения прозрачен для пользователя, однако позволяет, если потребуется, указывать, на каком процессоре должна выполняться та или иная задача.

Язык CDL

Для организации интерфейса между менеджером TSF и пользователем системы разработан язык высокого уровня CDL ( Component Distribution Language ). Этот язык описывает группы задач, которые можно реализовать как на одном процессоре, так и в сети, причем в обоих случаях CDL -описание остается одним и тем же. Он служит мощным и гибким средством для создания параллельных программ (в него включены даже средства автоматизации построения многопроцессорных структур типа «конвейер» и «транспьютерная ферма», а также ряда более сложных транспьютерных сетей).

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

Рабочая среда

Следует отметить, что ОС Helios рассчитана на работу в системах как с различными процессорами (например, в транспьютерных сетях с хост-машиной на базе IBM PC, рабочей станции SUN или ATW, ПК Macintosh и др.), так и с одинаковыми (например, в чисто мультитранспьютерных системах).

В среде ОС Helios работают компиляторы со стандартных и параллельных версий языков Си, Фортран, Паскаль, Модула 2, Пролог, Ассемблер, имеется ряд специальных утилит и библиотек, включая и библиотеки ОС UNIX, написанные с использованием стандарта POSIX.

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

Специализированное ПО 

Фирма INMOS также поддерживает и поставляет вместе со своими транспьютерными системами компиляторы с языка Си++ фирмы Glockenspiel и с языка Ада фирмы Alsys (имеет сертификат Объединенного программного комитета по языку Ада при правительстве США). Значительное внимание INMOS уделяет и программной поддержке многочисленных специализированных транспьютерных модулей. Так, для векторного транспьютерного модуля IMS B 420 VecTRAM она предлагает обширные библиотеки векторных функций на языке Си и процедур на языке Occam, пригодные для при менения во многих областях, в частности, для цифровой обработки сигналов. Имеются библиотеки для интерфейсных модулей ( IMS B 421 GPIB TRAM канала общего пользования IEEE-488 и IMS B 422 SCSI TRAM интерфейса SCSI ), библиотека процедур двухмерной графики для модуля IMS B 419 Graphics TRAM, а также библиотеки процедур для поддержки функционирования транспьютерной сети. Перечисленные выше пакеты работают практически со всеми выпускаемыми сегодня моделями транспьютеров.

В связи с появлением транспьютеров серии Т9000 фирма INMOS объявила о создании нового инструментального транспьютерного пакета (Transputer Toolset ), ориентированного на разработку, тестирование и отладку транспьютерных программ как для отдельных элементов, так и для транспьютерных сетей. Пакет включает компиляторы с языков ANSI С, ANSI FORTRAN 77, Си++ и Occam 2, хост-сервер, конфигуратор сети и символьные отладчики. Дополнительно могут прилагаться эмулятор Т9000, обеспечивающий возможность моделирования работы сети Т9000 на транспьютерах более ранних моделей (Т425 или Т805), и оконный отладчик ( Windowing Debugger ), позволяющий отлаживать системы с использованием графического интерфейса X Window System на рабочих станциях SUN .

Для работы с транспьютероподобным элементом — сигнальным процессором TMS 320 C 40 — фирма 3 L в сотрудничестве с производителем этого процессора американской фирмой Texas Instruments выпустила специальный компилятор с языка Си — Parallel — C 40. Рядом американских фирм разработаны специальные библиотеки для ускорителей, включающих этот элемент.

Следует отметить и достаточно большие программные наработки фирмы Transtech Parallel Systems для конвейерно-векторного модуля ТТМ 100 на RISC -процессоре i860, включающие компиляторы с языков ANSI FORTRAN 77, Си и Си++, а также библиотеки для математических процедур, обработки изображений и обработки сигналов.

Для создания прикладных транспьютерных систем реального времени несколько фирм представили специальные средства разработки на базе IBM -совместимых ПК. Так, INMOS по договоренности с фирмой JMI Software Consultants начала поставлять пакет С Exe cutive, позволяющий строить и отлаживать подобные системы с применением языка Си. Фирма Ready Systems предложила для решения задач в реальном времени многоза дачную систему VRTX 32, которая также допускает использование прикладных программ, написанных на языке Си. Пакеты С Executive и VRTX 32 работают со всеми моделями транспьютеров, включая и Т9000.

Примечания

1. Мы не рассматриваем здесь программное обеспечение одноплатных транспьютерных систем, поскольку модульные системы (см. «Мир ПК», № 8/93, с. 30) получили в настоящее время более широкое распространение.

Об авторе: Евгений Евгеньевич Дудников — доктор технических наук, заведующий отделом применения вычислительной техники МНИИПУ.

Статья опубликована в журнале «Мир ПК» № 9, 1993 г., с. 56-59.

Статья помещена в музей 3.04.2006 года