книги из ГПНТБ / Королев, Л. Н. Структуры ЭВМ и их математическое обеспечение учебное пособие
.pdfными потоками, коммуникационные сети, некоторые системы дискретного] управления производственными процессами.
Язык СИМУЛА был разработан в Норвежском вы числительном центре в Осло и получил широкое рас пространение. С использованием этого языка построены системы автоматизации проектирования в судостроении, системы управления грузовыми перевозками и управле ния движением транспорта. СИМУЛА создавался на основе языка АЛГОЛ-60, который является подмножест вом СИМУЛы.
В состав МО машин Барроуз входит система DY NAMO, которая предназначена главным образом для описания математических моделей «непрерывных» систем, таких, как сервосистемы и т. п. В системе DYNAMO хорошо развит аппарат, позволяющий выводить резуль таты моделирования на графики и дисплеи.
В состав математического обеспечения машин Барроуз входят пакеты прикладных программ численных мето дов, линейного программирования, нелинейного про граммирования, методов матричной алгебры и др. Осо бенно широко в системе МО представлены прикладные программы системы бухгалтерского учета, управления
ипланирования производства, расчета прибылей и зат рат, системы учета банковских операций. Фирма имеет богатый опыт по внедрению своих машин в эти сферы,
иэто нашло должное отражение в составе математического обеспечения ее машин.
Если в начале своей деятельности фирма Барроуз главное внимание уделяла вопросам создания ЭВМ ком мерческого назначения, то в настоящее время все в боль шей степени это внимание обращается на создание круп ных вычислительных систем, работающих в реальном масштабе времени, в режимах коллективного пользова ния. Этот сдвиг нашел свое отражение в разработке вы числительной системы В-8500, принадлежащей к классу сверхбыстродействующих машин. Эта машина была анон сирована в 1968 г. и должна была представлять собой гигантскую мультипроцессорную систему с многоступен чатой памятью и развитыми каналами ввода-вывода. Самый быстрый уровень памяти должен был иметь время выборки порядка 200 наносекунд. Быстродействие одного модуля центрального процессора оценивалось в несколь-
200
ко миллионов операций в секунду. По структуре машина В-8500 должна была напоминать ИЛЛИАК-IV. Однако фирма, по-видимому, не нашла заказчиков на эту вычисли тельную машину и в 1970 г. объявила о новой серии своих машин с индексом 700. Это явилось своего рода контр мерой, реакцией на систему IBM-370. В семейство с этим индексом входят машины В-1700, В-2700, В-3700, В-4700, В-5700, В-6700, В-7700. На самом деле индексами 1700, *2700 и т. д. обозначаются некоторые группы моделей, различающиеся конфигурацией, числом процессоров в мультипроцессорном варианте, числом каналов. Так, на пример, фирмой выпущены модели В-1712, В-1714, В-1726, имеющие близкую структуру центральных про цессоров, но различающиеся частотой работы. Машины с индексом 1700 очень интересны по своей структуре. Они позволяют осуществлять программную настройку структуры оперативной памяти. В основе лежит аппа ратная возможность адресовать любой разряд памяти. Пользуясь этим, методами микропрограммирования мож но из разрядов «набирать» слова произвольной разряд ности и организовывать адресацию этих слов произволь ным образом. Машины 1700 «запрограммированы» таким образом, что они полностью преемственны с остальными машинами семейства 700, однако их можно настроить под любую другую машину. По своему назначению ма шины 1700 относятся к классу минимашин, но их свобод ная настройка позволяет придать им «математические способности» любого уровня.
По своим параметрам В-5700 близка к машине IBM370/145, с быстродействием порядка 200 тыс. операций в секунду на один процессор. Так же как и В-6500/7500, машины семейства 700 могут выпускаться в многопро цессорном варианте.
Машина В-6700, близкая по своим параметрам цент рального процессора к IBM-370/165, может поставляться в мультипроцессорной модификации, состоящей из трех процессоров. Объем оперативной памяти может быть до веден до 6 млн. байтов (до 1 млн. слов), что в два раза превышает объем памяти машины 6500.
Самая мощная машина семейства В-7700 может вы пускаться в четырехпроцессорном варианте. Каждый процессор снабжен буфферной памятью небольшого объ ема, но очень быстрой — 30 нсек. Быстродействие одного
201
процессора достигает 57 млн. операций/сек. По своим параметрам 7700 превосходит IBM-370/195. Здесь следует оговориться, что быстродействие сложных вычислитель ных систем важно оценить лишь весьма грубо, и сравне ние по быстродействию, которое обычно основано на сведениях о времени сложения и умножения, может привести к заблуждению при оценке эффективности ЭВМ. В машинах семейства 700 сохранены те же структурные принципы, которые ведут свое начало от В-5500 и раз виты в серии 500 (В-6500/В-7500). Они отличаются от предыдущей серии главным образом более усовершенст вованной системой элементов, более высоким уровнем интеграции.
Г л а в а 5
МАШИНА SYMBOL (СИМВОЛ)
Большой резонанс среди специалистов в области раз работки вычислительных машин получил проект ЭВМ СИМВОЛ, экспериментальный образец которой вступил в строй в 1970 г.
Авторы этого проекта задались целью пересмотреть сложившиеся представления о границе, разделяющей аппаратуру и программное математическое обеспечение, имея в виду главную цель уменьшения совокупной стои мости процесса вычислений, включающей стоимость оборудования и программирования. Следует отметить, что к достижению этой цели, наверное, стремятся все разработчики ЭВМ, и, в частности, этой цели подчинены идеи, развитые в машинах серии МИР, в машинах фирмы Барроуз. Главное в проекте СИМВОЛ — это то, что его разработчикам удалось по-новому взглянуть на роль команд программы, на запоминание данных. В отличие от разработчиков машин Барроуз, стремившихся аппа ратными средствами реализовать многие сложные конст рукции уже сложившихся алгоритмических языков, раз работчики СИМВОЛ не побоялись ревизовать подход к входному языку. Они создали язык весьма высокого уровня, основные конструкции которого реализованы прямо аппаратным путем.
Таким образом, проект СИМВОЛ является очень ин тересной разработкой, имеющей несомненное теорети ческое значение как для программирования, так и для вычислительной техники вообще.
Ведущая роль среди многих авторов проекта СИМВОЛ принадлежит Рексу Райсу (Rex Rice) и Вильяму Смиту
203
(William R. Smith). Проект субсидировался фирмой
Fairchild'Camera and Instrument Cor. Эта фирма специа лизируется на выпуске интегральных схем, и проект СИМВОЛ должен был также продемонстрировать некие новшества в технологии изготовления сложных машин с использованием продукции этой фирмы.
Одним из первых авторов идеи «встроенного» мате матического обеспечения и повышения «интеллектуаль
ных» |
возможностей аппаратуры является академик |
В. М. |
Глушков. Эти идеи были реализованы на машинах |
серии МИР (МИР-1, МИР-2) средствами микропрограм мной интерпретации языковых конструкций. Причем внутренний язык машин МИР на верхнем уровне иерар хии, пригодном для исполнения аппаратурой, был пол ностью подобен внешнему входному языку. Язык машин серии МИР был выбран из соображений наиболее прос того изображения инженерных заданий. Входной язык для проекта СИМВОЛ по своему логическому уровню превосходит такие широко используемые языки, как АЛГОЛ, ФОРТРАН, и по своему характеру близок к языкам PL-1 и АЛГОЛ-68.
Сама вычислительная машина СИМВОЛ может быть охарактеризована как мультипроцессорная мультипрог раммная система. Таким образом, СИМВОЛ является серьезным продвижением в направлении создания ЭВМ со встроенным математическим обеспечением высокого уровня.
Проект начал разрабатываться в 1963 г. Понадоби лось около семи лет, прежде чем появилась первая реа лизация этого проекта. Этот срок указывает на серьез ность намерений авторов проекта и служит подтвержде нием того, что его нельзя отнести к разряду рекламной шумихи, как это иногда бывает в зарубежной вычисли тельной технике.
§ 1. Язык Символ
Весь проект разрабатывался в тесном контакте инже неров и математиков, и, наверное, язык СИМВОЛ, пред назначенный для прямой аппаратной реализации, явля ется порождением граничащих областей знаний — прог раммирования и вычислительной техники.
204
Главную роль, которую преследовали авторы про екта при разработке входного языка, можно охаракте ризовать следующим перечнем требований к нему: ■
1. Язык должен быть аппаратно реализуем.
2. Язык не должен иметь ограничений, связанных с аппаратурой ЭВМ, следовательно, в нем должна до пускаться полная свобода в задании данных (число вой информации и буквенно-цифровых строк). Таким об разом, должны быть сняты ограничения на точность и способ представления чисел, на структуру буквенноцифровой информации.
3.Язык должен быть универсальным, процедурноориентированным, удобным для программирования ши рокого круга задач.
4.В нем не должны описываться типы данных, и проблема преобразования типов должна решаться аппа ратно. Текстуальный вид и контекст данных, в котором они появились, определяет их тип. Тем самым из языка удалены описатели типов.
Перечисленным требованиям не удовлетворял ни один из имевших хождение языков высокого уровня. Наиболее широко применяемый ФОРТРАН обладает целым рядом ограничений, и, по мнению авторов *), взять этот язык в качестве исходного было бы шагом назад. Полный PL-1 оказался слишком сложным для эффективной аппарат ной реализации. В АЛГОЛе-60 не определены операторы’ ввода-вывода, точнее, отсутствуют средства управления вводом-выводом, по этой причине он был исключен из кандидатов для аппаратной реализации. Эти несколько наивные доводы в пользу разработки нового языка при ведены в достаточно популярной статье. АЛГОЛ-60 был отброшен потому, что его полная аппаратная реализа ция, несомненно, привела бы к сложным и неэффективным решениям. Коль скоро авторы проекта решили из бавиться от ограничений, связанных с описанием типов, и отдали управление типом на откуп данных (тип, уп равляемый данными), то, разумеется, АЛГОЛ не мог их удовлетворить. Вероятно, уровень языка СИМВОЛ повышался, насколько возможно до той степени, пока его мыслимо было интерпретировать аппаратным путем, но такое заключение носит достаточно субъективный
*) D. С h е s 1 е у and W. R. S m i t h, The |
hardware-imple |
mented, high-level machine language for SYMBOL. |
AFIPS 38, 1971. |
205
характер. Так или иначе, СИМВОЛ представляет собой весьма интересный язык, действительно лишенный мно гих ограничений, которые присущи языкам широкого пользования, и ряд его конструкций представляет новое слово в этой сфере.
К главным особенностям языка авторы проекта отно сят отсутствие в нем описаний идентификаторов и воз можность текстового представления структур любой глу бины, сложности и характера. Смысл идентификаторов, появляющихся в языке, определяется в динамике ис полнения программ, так же как и содержательный смысл структуры.
Выражения языка, как и в обычных языках, содержат имена, знаки арифметических операций, знаки отноше ний. В качестве операндов могут использоваться простые переменные, переменные с индексом, литеральные пере менные, способ транскрипции и способ текстового выра жения которых определяет их значения. Индексы, в свою очередь, могут быть выражениями и, в частности, переменными с индексами; число индексов и иерархи ческая «глубина» индексации не ограничены. Разуме ется, в качестве операндов могут выступать названия процедур. Операторы ввода-вывода почти полностью совпадают с фортрановскими, точнее, являются некото рым упрощением операторов стандартного ФОРТРАНа.
Первой интересной особенностью языка является оп ределение блока. Блоком называется участок програм мы, заключенный между зарезервированными словами
BLOCK и END.
Блок не содержит описаний локальных переменных и любой идентификатор, появившийся в теле блока, счи тается локализованным в нем. Это означает, что одина ковые идентификаторы, имена, появившиеся в разных блоках, даже во вложенных, соподчиненных блоках, никак не связаны между собой. Для того чтобы указать, что некоторый идентификатор (или список идентифика торов) обозначает те же самые данные, что и во внеш нем, охватывающем блоке, используется конструкция GLOBAL (ГЛОБАЛЬНЫЙ). За словом GLOBAL следует список идентификаторов, значения которых считаются определенными в охватывающем блоке. Таким образом, конструкция GLOBAL как бы передвигает, передает иден тификаторы на один уровень вложенности ниже. Блоки
206
могут иметь произвольную глубину вложенности. Для того чтобы «передать» имена на любой желаемый уро вень, нужно позаботиться а соответствующем количёстве конструкций GLOBAL.
Блоки в смысле СИМБОЛа отличаются от блоков в смысле АЛГОЛа, которые в большей степени служат аппаратом экономии ячеек при распределении памяти, а не аппаратом увязывания различных блоков в единую программу. В машине СИМВОЛ механизм блоков слу жит главным образом последней цели. Конструкция GLOBAL в какой-то степени заменяет фортрановский оператор COMMON, если он служит в качестве средства объединения подпрограмм. Вообще говоря, сравнение с ФОРТРАНОМ неправомочно, так как, в отличие от ФОРТРАНа, в СИМБОЛе отсутствуют какие бы то ни было средства, отображающие понятие памяти.
В языке СИМВОЛ определено понятие процедуры. Процедура есть поименованный блок, начинающийся резервируемым в языке словом PROCEDURE, за кото рым следует имя этой процедуры, а затем ее тело. Проце дура заканчивается словом END. Список формальных параметров процедуры располагается, как обычно, вслед за ее именем, предшествуя телу процедуры; список дей ствительных значений параметров указывается при об ращении к процедуре. Появление в программе имени процедуры со списком фактических значений влечет за собой выполнение тела процедуры, и после выполнения происходит возврат к точке вызова. Для того чтобы ис пользовать процедуру как функцию, предусмотрена кон струкция RETURN (ВОЗВРАТ), которая помещается в те ле процедуры. ВОЗВРАТ подменяет имя процедуры вы численным значением и возвращается к точке вызова. Возвращаемое значение вычисляется по выражению, сле дующему за словом RETURN. Как мы видим, механизм процедур СИМБОЛа отличается от механизма АЛГОЛа и дает те же возможности, которые предоставляет этот аппарат в ФОРТРАНе. Однако в СИМБОЛе не требуется спецификаций, указывающих на то, что это процедура или процедура-функция. Функции процедуры опреде ляются ее телом, точнее, тем, каким способом завершено ее окончание — через END или через RETURN.
В языке предусмотрен удобный аппарат, выражае мый конструкцией LINK (СВЯЗЬ), который позволяет
207
обозначать выражения произвольной структуры именем и затем пользоваться этим, именем в других выражениях. Появление такого имени в операторах присваивания вы зывает выполнение данного выражения в динамике. На пример, пусть в программе встретилась конструкция
ИМЯ 1 = 1 Ш К А,
обозначающая желание связать идентификатор ИМЯ1 с именем А. Если затем в программе встретилась кон струкция
A={C + D)/K,
то значение ИМЯ1 примет значение, вычисленное по формуле (C+D)/K. Авторы проекта называют этот ме ханизм связи методом «беспроцедурной» передачи пара метров.
Следующей немаловажной особенностью языка являются средства изображения структур и средства работы со структурами. Структуры обозначают форму соподчинения данных. Не пытаясь дать формального определения структуры, можно на нескольких примерах пояснить, что она обозначает. Например, система вло женных блоков программы представляет собой структуру, и ее характер может быть представлен системой откры тых и закрытых скобок. Один из примеров — это выра жение; со ; скобками, которые определяют порядок действий:
(( ) (( )))•
В СИМБОЛе определены следующие средства выраже ния структур: введены угловые скобки для указания границ групп и подгрупп (блоков структуры) и верти кальная черта для разделения полей и разделения тер мов. В обозначениях СИМБОЛа двумерная матрица мо жет быть представлена как структура:
« a [ b y < c \ d y > .
Задавая последовательность индексов, которые обозна чают правила подсчета групп и элементов групп, легко
задавать тот элемент структуры, к которому предпола гается обратиться.
В. языке определены конструкции, пользуясь кото рыми можно преобразовывать структуры. Пусть, на
гое
-при м ер , за д а н а ст р у к т у р а
А «11 j 12 113> <21 \ 22 |23> <31 j 32 | 33» .
Если записать оператор присваивания, например, такой:
А [1] = < А [2, 3] I А [1]>, |
(*) |
то получим новую структуру вида
« 2 3 <11 112 | 13» <21 122123><31 132133». (#*)
Выражение (*) указывает на то, что первый элемент структуры следует заменить выражением <А[2,3] | А[1]>. Выписанный результат (**) показывает, что получилось после этой замены. Если теперь проделать с вновь по лученной структурой действия, указанные в операторе:
А [1, 1] = ТЕКСТ ПРОИЗВОЛЬНОЙ д л и н ы ,
то получим структуру
<23<TEI<CT ПРОИЗВОЛЬНОЙ ДЛИНЫ J 1 2 12 3 »
<21 122 | 23> <31 | 32 133» .
Операции над структурами являются одновременно мощ ным средством обработки и преобразования символьной информации и средством доступа к элементам много мерных массивов. В языке PL-1 также определены сред ства работы со структурами, но, как представляется, в СИМБОЛе эти средства обобщены и распространены не только на программы, но и на тексты, структуры данных любой природы. В описываемом языке введен своеобраз ный тип структуры, помечаемый резервируемым словом SWITCH (ПЕРЕКЛЮЧАТЕЛЬ), за которым следует текстовая структура. Идентификаторы этой структуры воспринимаются как метки. Конструкция SWITCH ис пользуется главным образом в том же смысле, что и обычный алгольный переключатель.
Разумеется, в СИМБОЛе . существуют средства для задания циклов, средства для задания переходов, по условию, мало чем отличающиеся от аналогичных средств других языков. В языке СИМВОЛ не требуется описы вать типы значений, арифметические и логические дейст вия производятся с полями данных переменной длины и практически без ограничений на точность вычислений. В язык введены тем не менее средства, позволяющие уп равлять точностью выполняемых действий. Для этих
209
