книги из ГПНТБ / Королев, Л. Н. Структуры ЭВМ и их математическое обеспечение учебное пособие
.pdfмультипрограммном режиме, точнее, головные, охваты вающие блоки этих рабочих программ относятся ко вто рому уровню вложенности и используют D-регистры, начиная с D2. Многие стандартные процедуры управляю щей программы обслуживают рабочие программы. Они могут оказаться на любых этажах вложенности.
Всю систему в целом можно представить себе следую щим образом. В машине всегда работает одна задача — главная управляющая программа. В соответствующие мо менты времени, сообразуясь с внешней ситуацией и пото ком поступающей информации, эта главная программа порождает параллельные вычислительные процессы — рабочие программы. Оканчиваясь, эти процессы пере дают управление снова главной управляющей программе. В структуре машин Барроуз предусмотрены соответст вующие достаточно универсальные средства организации ветвления и параллельных процессов, которые обеспечи вают прежде всего организацию мультипрограммирова ния при выполнении главной управляющей программы. Эти же средства позволяют и сами рабочие программы организовывать в виде дерева параллельно исполняемых ветвей.
Что же с этой целью предусмотрено в структуре машин Барроуз? Это — многостековая организация, ко торая позволяет организовывать дерево стеков, ветвле
ние стеков на любом уровне. |
Как |
М н о г о с т е к о в а я о р г а н и з а ц и я . |
уже говорилось, в дескрипторах стека MSCW и в дескрип торах управляющих слов программы (PCW) выделено по ле, указывающее номер используемого стека. Этот номер на самом деле указывает относительный адрес дескрипто ра используемого стека в так называемом вектор-масси ве стеков. Местоположение этого массива, этой таблицы, в свою очередь определяется дескриптором вектор-мас сива стеков. Вектор-массив состоит из последователь ности дескрипторов, каждый из которых указывает на физический адрес и объем стека, выделенного для обслу живания некоторой ветви. Описатель этого массива сте ков занимает фиксированное место в корневом стеке, которому стеки ветвей соподчинены. Система связи сте ков строится следующим образом. D-регистр с индексом О (DO) указывает адрес корневого стека, т. е. указывает на MSCW корневого стека. В фиксированной позиции
190
корневого стека находится описатель вектор-массива соподчиненных стеков (DDO-bDDn), состоящего из де скрипторов данных, определяющих объемы и адреса соответствующих ветвей. Обращение к данным, принад лежащим ветви с указанным номером, производится пу тем последовательных обращений сначала к корневому стеку, к дескриптору вектор-массива, затем к соответ ствующему дескриптору в вектор-массиве, затем через LMSCW выбранного стека к конкретной величине этого стека или к дескриптору выбранного стека, который мо жет оказаться дескриптором нового вектор-массива сте ков, соподчиненных выбранному, и процесс доступа про должается по той же рекурсивной схеме. Не следует, од нако, предполагать, что все обстоит слишком просто. Для того чтобы аппаратура автоматически выполнила весь этот многоступенчатый процесс обращения к требуе мым данным некоторой ветви, нужно позаботиться о том, чтобы стеки, по которым проследует поиск, были приве дены во вполне определенное состояние. Например, сле дует позаботиться о том, чтобы в верхушках магазинов промежуточных уровней оказались те величины индек сов, которые правильно определяют номер следующего стека. Разумеется, вся последовательность ссылки от одного дескриптора к другому требует того, чтобы эти дескрипторы были сформированы заранее, или, если речь идет о динамике, чтобы вся информация, необходимая для их формирования, была бы заранее правильно вы числена и определенным образом расположена в стеках или памяти машины.
О р г а н и з а ц и я п р е р ы в а н и й . Как уже от мечалось, всякое возникшее прерывание интерпрети руется аппаратурой как принудительный переход к некоторой процедуре операционной системы. Происходит это следующим образом. Прежде всего при возникнове нии сигнала прерывания производится формирование и упрятывание в магазин текущей программы управляю- -щего слова стека (MSCW). Далее аппаратурой в стек по мещается косвенная ссылка на процедуру главной управ ляющей программы, организующей реакцию на преры вание. Эта косвенная ссылка указывает на вполне опре деленное место в текущем магазине, где заранее должен быть заготовлен дескриптор, отсылающий к подпрограмме реакции на прерывание. Это слово-ссылка располагается
191
в стеке над предыдущим MSCW. Затем в стек «сбрасы ваются» все регистры машины, используемые прерывае мой программой, и помещаются два слова, идентифици рующие причину прерывания. Наконец, производится переход к подпрограмме МСР, которая, располагая всей необходимой информацией о причине прерывания, в свою очередь организует обращение к одной из процедур, об рабатывающей конкретное прерывание. Как это обычно принято, прерывания делятся на внутренние, отражаю щие ситуации, возникшие в центральном процессоре, и внешние, связанные с работой внешних устройств и других процессоров, если в системе работает их несколь ко. Прерывания делятся на управляемые и безуслов ные, которые обязательно прерывают работу програм мы. К такого рода безусловным неуправляемым, от носятся прерывания, связанные со срабатыванием схем обнаружения сбоев оперативной памяти, связанные с по пыткой выхода за пределы стека, связанные с сигналами времени (с таймером), с появлением недопустимых команд и слов, связанные с зацикливанием программ. Среди управляемых прерываний, т. е. прерываний, которые могут быть либо запрещены, либо открыты, отметим пре рывание по разряду «присутствия». Оно связано с обра щением к дескриптору, указывающему на программы и данные, которых еще нет в оперативной памяти. Управ ляемыми прерываниями фиксируются недопустимые зна чения вычисленного индекса, выходящие за пределы гра ницы, фиксируется нарушение защиты памяти и ситуа ции, связанные с работой арифметического устройства (переполнения, деления на нуль и т. д.).
Особо следует отметить прерывания, позволяющие управлять работой системы в многопроцессорном вариан те. Среди привилегированных команд существует коман да, позволяющая послать внешний сигнал прерывания во все другие процессоры. Смысл этого сигнала состоит в том, чтобы обратить внимание системы в целом на некую ситуацию, информация о которой может быть найдена в оперативной памяти, одинаково доступной для каждого процессора. Например, пусть какой-либо процессор в ходе выполнения программы получил прерывания, ука зывающие на неисправность его аппаратуры. Програм ма реакции на это прерывание, если данная неисправ ность еще позволяет это сделать, посылает сигнал пре
192
рывания в соседний-(или соседние) процессор (процессо ры), который может продолжить выполнение работы, прерванной из-за неисправности. Средства, позволяющие одному (любому) процессору прерывать другие при исправной работе аппаратуры, являются главными сред ствами синхронизации их работы. Кроме того, для син хронизации работы процессоров, одновременно и неза висимо выполняющих взаимосвязанные ветви одной большой задачи, используются команды синхронизацион ного считывания. Суть состоит в том, что, обращаясь с помощью такой команды к некоторому слову памяти, процессор одновременно получает информацию о том, было ли обращение к этому слову со стороны другого процессора.
В машинах В-6500/7500 для этих целей широко используется разряд защиты памяти (48-й разряд). Специальные команды позволяют записывать слово, од новременно «приписывая» ему разряд защиты. Если те перь другой процессор попытается обратиться к данным, помеченным защитой, произойдет прерывание, которое может быть истолковано главной управляющей програм мой, например, как попытка одного процессора несвое временно (слишком рано) обратиться к данным, еще не обработанным другим процессором. В системе команд су ществуют команды, которые осуществляют считывание с проверкой данного разряда. Такая команда позволяет ветвям программы, исполняемым на разных процессо рах, организовывать синхронизацию без помощи опера ционной системы. Например, если в какой-то период своей работы одна ветвь нуждается в результатах работы другой ветви, то выяснить, закончилась ли обработка этих результатов, можно, проверив содержание соответ ствующего слова, адрес которого известен обеим ветвям. Нужно обратить внимание на следующую тонкость. Может показаться, что организовать синхронизацию можно без специальных команд. Завести, например, по фиксиро ванному адресу некую общую для двух ветвей ячейку и условиться о том, чтобы, записывая в эту ячейку соот ветствующую информацию, одна ветвь сигнализировала другой о своем состоянии. Тогда, прежде чем перейти к этапу обработки результатов вычислений параллельной ветви, следует проверить состояние этой ячейки и програм мным образом решить вопрос: подождать или не подож-
7 Л. Н. Королев |
193 |
дать? Но может случиться так, что как раз в тот самый момент, когда произведено считывание этой ячейки из памяти для последующего анализа, произойдет прерыва ние по какой-то не относящейся к делу причине. За время, потраченное данным процессором на реакцию по данно му прерыванию, параллельная ветвь может успеть обра ботать нужные данные, а прерванная ветвь «будет ду мать», основываясь на данных, полученных до прерыва ния, что эта обработка не завершена. Возникнет ситуация «зависа», застопоривания ветви, которая может приве сти к остановке всего процесса вычислений. Следует сказать, что приведенный пример не надуман. При раз работке операционных систем, при их отладке реально возникают ситуации, связанные с ошибками алгоритмов, не учитывающих такую возможность. Причем такого ро да ошибки проявляются весьма редко и достаточно слу чайно. Внешне складывается впечатление случайного сбоя аппаратуры, который затем не повторяется.
§ 3. Технические характеристики В-6500, В-7500
Как уже говорилось, система В-6500, В-7500 строится по модульному принципу. Модуль центрального процес сора под индексом В-6503 работает на частоте 2,5 мега герца. Это эквивалентно номинальному быстродействию порядка 250 тысяч арифметических действий в секунду. Следует еще раз оговориться, что номинальное быстро действие является весьма грубой характеристикой общей производительности ЭВМ, которая определяется многими иными факторами: быстродействием оперативной памяти, характеристиками внешних запоминающих устройств, структурными особенностями построения системы в целом.
В состав серии В-5500 входят модули процессоров с индексами В-6504 и В-6506, работающие на частоте 5 ме гагерц. Соответственно их номинальное быстродействие может быть оценено в полмиллиона операций.
Модули центральных процессоров В-7500 (индексы В-7504 и В-7506) работают на частоте 10 мегациклов и обладают быстродействием свыше миллиона операций в секунду. Аппаратура выполнена на интегральных схе мах среднего уровня интеграции. В вычислительных си стемах, использующих модули В-6500, могут одновре
194
менно работать два центральных модуля. Системы, построенные с использованием модулей 7500, могут содер жать до восьми процессоров, правда, в настоящее (1973 г.) время реально существующие системы не содержат более четырех процессоров. Максимальный объем оператив ной памяти на ферритовых сердечниках, который может быть включен в однопроцессорную или многопроцессор ную систему, может составлять 524 288 слов. Оператив ная память разбита на модули объемом в 16 384 слова. Таки* модулей, следовательно, в системе может быть до 32. Модули оперативной памяти на ферритах имеют время полного цикла 1,2 мксек. Кроме того, оператив ная память может быть построена из модулей на тонких пленках со временем цикла 600 наносекунд. Модули опе ративной памяти расположены по три в изолированных стойках. Каждая такая стойка снабжена своей системой тестовой проверки памяти, и во время проверки одного из модулей стойки остальные два модуля могут быть ис пользованы системой для работы. Это позволяет прове рять и ремонтировать отдельные модули памяти, не оста навливая систему. В качестве внешних запоминающих устройств или памяти второго уровня используются маг нитные диски со считывающими головками, фиксирован ными на каждый тракт. По быстродействию диски при ближаются к барабанам. Объем дисковой памяти состав ляет 47,5 млн. байтов, или около 8 млн. слов. С памятью на дисках можно одновременно вести до четырех обменов, т. е. она делится на четыре подсистемы с независимым доступом.
Для связи с внешним и терминальным оборудованием разработан модуль мультиплексора. В систему могут быть включены два таких модуля. Каждый мультиплексор рассчитан на одновременную работу с 10 внешними ка налами. Общее число каналов, которые могут быть под ключены к одному мультиплексору, равно 20. К каждому каналу могут быть подключены, в свою очередь, устрой ства управления с внешним оборудованием (перфокар тами, перфолентами, дисплеями и т. п.). Общее число устройств, которые обслуживаются одним мультиплек сором, может быть доведено до 256. К каждому мульти плексору можно подключать до четырех периферийных процессоров (Data Communication Processor — DCP).
Их главное назначение — управление приемом-передачей
7* |
195 |
при работе с телеграфными и телефонными линиями,-т. е. управление телекоммуникационными связями. Каж дый DCP рассчитан на управление 16 каналами. Это поз воляет подключить к одной системе до 2048 линий связи. Разумеется, не все предоставляемые структурой системы возможности используются в реальных установках, в большей степени расчет сделан на перспективу, на то, чтобы удовлетворение растущих требований заказчиков не встречало затруднений технического характера.
§ 4. Математическое обеспечение В-6500, В-7500
Основой математического обеспечения (МО), его яд ром, является главная управляющая программа (МСР), представляющая собой комплекс управляющих проце дур, тесно связанных, с одной стороны, с аппаратурой машины и, с другой стороны, с трансляторами с входных языков высокого уровня. Математическое обеспечение В-6500/В-7500 разрабатывалось одновременно со струк турой этих машин, математики-программисты работали в тесном контакте с инженерами, и это привело в конечном итоге к тому, что математическое обеспечение оказалось хорошо увязанным с аппаратурой машин. Многие струк турные особенности этих машин прямо проистекают из требований, которые возникли в ходе разработки МО. Например, появление D-регистров в центральном про цессоре связано с методами реализации АЛГОЛа, сте ковый механизм также отражает принятые способы реа лизации рекурсий в трансляторах с процедурно-ориен тированных языков. Система дескрипторов в какой-то мере является аппаратным отражением описаний ц операторов распределения памяти в языках высокого уровня. В какой-то степени структура этих машин ориентирована на сложившиеся приемы реализации трансляторов с языков, получивших наибольшее распро странение.
Иногда машины Барроуз называют алгольно-ориен- тированными машинами. Жесткие и достаточно универ сальные схемы аппаратной реализации конструкций языка, рассчитанные на наиболее сложные ситуации, в случае применения этих универсальных механизмов в про стейших ситуациях приводят к потере относительной эф фективности при выполнении программ. Например, цик
196
лы с перебором элементов в массивах с постоянным шагом в машинах традиционной структуры, обладающих Обыч ными средствами индексации и не имеющие стека, могут быть реализованы меньшим числом операций, т. е. с от носительно меньшими затратами времени. Интересно от метить, что анализ эффективности транслирующих систем е языка АЛГОЛ, проведенный для машин разных фирм и для разных трансляторов с этого языка, дал в какой-то степени неожиданный результат. Наиболее эффективным транслятором с АЛГОЛа оказался оптимизирующий транслятор, созданный для машины IBM-360/67. Система команд этой машины типично традиционная и даже не имеет средств косвенной адресации.
Сравнение производилось следующим образом. По Гибсону определялась производительность ЭВМ. Транс лирующей системе предлагался набор типичных вычисли тельных задач на АЛГОЛе. Определялось время выпол нения этого набора задач на конкретной машине. Далее это время делилось на производительность соответствую щей ЭВМ по Гибсону. В результате получилось некото рое число, характеризующее качество оттранслирован ных программ. И вот, несмотря на то, что в машинах Барроуз все предусмотрено для реализации АЛГОЛа, первое место по качеству транслирующих программ за няла транслирующая система для 67-й модели. Правда, следует при этом учесть, что анализ производился раз работчиками алгол-системы для 67-й модели.
О с н о в н ы е ф у н к ц и и г л а в н о й у п р а в л я ю щ е й п р о г р а м м ы (МСР)
Прежде всего, МСР выполняет функции, свойствен ные любому диспетчеру операционных систем, а именно: контроль за состоянием процессора и реакции на сигналы прерываний, управление вводом-выводом, динамическое распределение оперативной памяти в ходе выполнения программ, управление мультипрограммным режимом. Кроме этих обычных функций МСР совместно с аппара турой выполняет значительную работу, которую обычно выполняют программы административных систем транс ляторов. К такого рода работам относятся функции, свя занные с обращением от одной процедуры к другой, функ ции управления стеком, подсчета уровней вложенности,
197
распределения D-регистров, сохранения информации для возврата и повторного вхождения в процедуру. Распреде ление памяти под стеки, программные сегменты и масси вы данных, находящиеся в ведении МСР, основано на информации, полученной после трансляции или компи ляции программ. На МСР возложены функции формиро вания дескрипторов программных сегментов и данных, появившихся в глазной памяти в динамике вычислений. В состав МСР входят процедуры распределения ресурсов оборудования системы между задачами, переключение с задачи на задачу, планирование потока задач. В состав МСР входят стандартные процедуры реакции на ошибки, возникающие в ходе выполнения программ, и реакции на сбои аппаратуры. Конкретные вычислительные системы В-6500/7500 могут содержать различное число модулей центральных и периферийных процессоров, оператив ной памяти, различный состав внешних устройств, т. е. могут иметь различную комплектацию. Главная управ ляющая программа (МСР) рассчитана на управление системой в максимальной комплектации. Ее настройка на конкретный состав оборудования производится методом «изъятия» части процедур и соответствующей маркиров кой таблиц, т. е. методом «сокращения» операционной системы. Тем самым процесс генерации системы, ее на стройка, в В-6500/7500 значительно более прост, чем
вОС/360.
Вкачестве входных языков системы используются
КОБОЛ, АЛГОЛ и ФОРТРАН.
Барроузовский расширенный АЛГОЛ основан на стан дартном АЛГОЛе-60 и включает этот язык как подмно жество. Расширение касается введения дополнительных языковых средств, позволяющих управлять вводом-вы водом, передачей информации. Транслятор с АЛГОЛа выполнен по однопроходной схеме, и скорость трансля ции достигает 10 000 операторов в секунду.
Язык ФОРТРАН, используемый машинами Барроуз, является одной из версий ФОРТРАН-IV. В барроузовской версии этого языка сняты некоторые ограничения, запрещающие рекурсивные обращения.
КОБОЛ-Барроуз является сильно развитой версией стандартного КОБОЛа-65. В эту версию языка включе ны средства для отладки программ и ряд других средств, учитывающих возможности аппаратуры, а Именно: сред
198
ства управления мультипроцессированием, динамическим распределением памяти, средства сегментирования про грамм и ряд других средств. Программа, записанная на входном языке высокого уровня, перфорируется и вво дится .в систему для последующей трансляции и испол нения. Математическое обеспечение машин Барроуз до пускает несколько режимов: ввод, трансляцию и непо средственное исполнение; ввод программ и запись их в исходной символике для последующей трансляции и исполнения; ввод, трансляцию и запись оттранслирован ных программ в библиотеку на дисках для последующего исполнения в динамике работы. Программа на объектном языке, т. е. на языке, полученном после трансляции, со держит следующие части:
1.Описание параметров программы, в котором со держатся сведения о необходимых объемах памяти, о тре буемых устройствах ввода-вывода, о требуемых стандарт ных или библиотечных процедурах.
2.Информацию о требуемых для исполнения файлах
(массивах), описывающую каждый такой файл данных. 3. Тело программы (охватывающего блока програм мы) в кодах команд машины. Программный сегмент, со держащий эти коды, построен по принципу свободной перемещаемости и обычно не содержит никаких изменяе
мых частей.
В состав математического обеспечения машин Барроуз включен язык ESPOL — язык высокого уровня, по своим возможностям схожий с языками АЛГОЛ-68 и PL-1 и учитывающий особенности структуры машин Барроуз. В этом языке развиты средства распараллеливания про цессов, средства, обеспечивающие синхронизацию прог рамм, ветви которых одновременно выполняются на раз ных процессорах, средства, учитывающие возможности многоступенчатойжосвенной адресации, развитые в струк туре машин Барроуз.
В систему математического обеспечения входит нес колько так называемых проблемно-ориентированных язы ков, предназначенных для удобной записи задач, которые связаны с решением узкого класса научно-технических и коммерческих проблем. Среди них следует отметить язык SIMULA (СИМУЛА), алголоподобный язык, удоб ный для описания моделей дискретных систем. К этому классу относятся системы со сложными информацион-
199