Обложка 1
Титульный
Аннотация
Введение
Глава 1 5 Принципы построения эффективных многопроцессорных систем
1.2. Эффективность вычислительной системы
1.3. Развиваемая архитектура
1.4. Проблемы параллельных вычислений и соотношения векторных и скалярных вычислений
1.5. Принцип управления каждым тактом машины
1.6. Перспективные модели много процессорных ЭВМ
Вопросы для самопроверки
Глава 2 Аппаратные средства
2.2. Центральный процессор
2.3. Организация оперативной памяти
2.4. Система ввода-вывода
2.5. Внутрикомплексное взаимодействие
Вопросы для самопроверки
Глава 3 Программные средства
3.2. Процессы и распараллеливание задач
3.3. Синхронизация процессов
3.4. Взаимодействие процессов и процессоров
3.5. Многопроцессорность и управление памятью
3.6. Имитационный комплекс для разработки программных средств
Вопросы для самопроверки
Заключение
Список литературы
Оглавление
Выходные данные
Обложка 2
Текст
                    ПЕРСПЕКТИВЫ
 РАЗВИТИЯ
 ВЫЧИСЛИТЕЛЬНОЙ  ТЕХНИКИ
 Много¬
 процессорные
 ЭВМ  и  методы  их
проектирования
 4


ПЕРСПЕКТИВЫ РАЗВИТИЯ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ В одиннадцати книгах 4 Под редакцией лауреата Государственной премии СССР проф. Ю. М. Смирнова Много¬ процессорные ЭВМ и методы их проектирования Москва „Высшая школа“1990
ББК 32.97 П27 УДК 681.3 Рекомендовано Государственным комитетом СССР по народ ному образованию для использования в учебном процессе Б. А. Бабаян, А. В. Бочаров, В. С. Волин, С. С. Гаврилов, А. С. Грошев, Ф. А. Груздов, М. В. Еремин, С. М. Зотов, A. J1. Плоткин, JI. Е. Пшеничников, Г. Г. Рябов, М. Л. Чудаков, В. С. Шевяков Рецензенты: кафедра вычислительных систем и сетей Московского ин¬ ститута электронного машиностроения, проф. П. В. Нестеров Перспективы развития, вычислительной техники: П 27 В 11 кн.: Справ. пособие/Под ред. Ю. М. Смирнова. Кн. 4: Многопроцессорные ЭВМ и методы их проекти- рования/Б. А. Бабаян, А* В. Бочаров, В. С. Волин и др. — М.: Высш. шк., 1990.— 143 с.: ил. ISBN 5—06—000133—4 В пособии рассматриваются основные проблемы, возникающие при создании многопроцессорных ЭВМ, и методы их решения; основные архитектурные принципы, поддерживающие эффективность програм¬ мирования на языках высокого уровня; проблемы создания многопро¬ цессорных машин большой производительности и высокой функцио¬ нальной надежности; описание программного обеспечения многопро¬ цессорных вычислительных комплексов. 2405000000—353 _ [ КБ—37—81 —89 ББК 32.97 001(01)—90 6Ф7 ISBN 5-06-000133-4 © Коллектив авторов, 1990
Введение Рассматриваемые здесь многопроцессор¬ ные вычислительные машины состоят из нескольких цен¬ тральных процессоров, одинаковых как по своему внут¬ реннему устройству, так и по способу соединения с други¬ ми частями вычислительной машины — устройствами оперативной памяти и процессорами ввода-вывода (кана¬ лами, шинами). Иными словами, рассматриваются однородные много¬ процессорные ЭВМ с общей оперативной памятью. Казалось бы, легко превратить однопроцессорную ма¬ шину в многопроцессорную, добавив один или несколько процессоров. Действительно, электрическое соединение процессоров достаточно просто, пока число процессоров измеряется единицами. Однако такое соединение может и не увеличивать производительность вычислительной ма¬ шины. Ведь возникает то, чего не было в однопроцессор¬ ной ЭВМ — информационное, алгоритмическое взаимо¬ действие процессоров. Эффект взаимодействия при неко¬ торых обстоятельствах может сделать двухпроцессорную машину даже медленней однопроцессорной. Уменьшение взаимных помех процессоров — серьезная задача, ре¬ шить которую удалось только на основе анализа законо¬ мерностей протекания вычислительных процессов. Данная книга написана на основе опыта разработки многопроцессорных вычислительных комплексов (МВК) «Эльбрус-1» и «Эльбрус-2», их архитектуры и програм¬ много обеспечения [1—4]. При разработке архитектуры учитываются различные требования, которым она дол¬ жна удовлетворять [5]. Это еще в большей степени отно¬ сится к созданию моделей конкретных машин на базе выбранной архитектуры. При создании архитектуры машин серии «Эльбрус» были выбраны два доминирующих свойства, которые в значительной степени определили разрабатываемую ар¬ хитектуру — удобство программирования и эффектив¬ ность работы системы. 3
Можно предположить, что удобство программирова¬ ния тем больше, чем более адекватна разработанная ар¬ хитектура множеству алгоритмов, которые должны ис¬ полняться на машине. Сформулированный таким образом принцип едва ли можно непосредственно использовать в работе, так как указанное множество алгоритмов не¬ обозримо. На помощь разработчикам архитектуры прихо¬ дят языки высокого уровня. В ходе развития языки программирования в значи¬ тельной степени адаптировались к алгоритмам и даже в какой-то степени стабилизировались. В начале своего развития различные языки применялись как средство программирования в различных специализированных об¬ ластях и все они в значительной степени отличались друг от друга. В настоящее время процесс интенсивного раз¬ вития привел к близким решениям. Существующие уни¬ версальные языки программирования высокого уровня представляют собой универсальный алгоритмический ба¬ зис, в достаточной степени адекватный всему множеству программируемых алгоритмов. Именно поэтому при раз¬ работке архитектуры можно, продолжая уделять большое внимание исследованию конкретных алгоритмов, в значи¬ тельной степени ориентировать вычислительные машины на поддержку языков высокого уровня, обеспечивая тем самым достаточно большую степень адекватности прог¬ раммируемым алгоритмам. Здесь, однако, надо сделать определенные оговорки: 1) все существующее множество языков ориентирова¬ но на эффективную реализацию на существующих маши¬ нах, поэтому следует ориентироваться не на какие-то кон¬ кретные уже созданные языки программирования, а на высокий уровень программирования как таковой. Следо¬ вало бы провести тщательный анализ влияния существу¬ ющих машин на языки и постараться исключить его от¬ рицательные последствия. В противном случае новая ар¬ хитектура, будучи сориентирована на языки программи¬ рования, которые, в свою очередь, ориентированы на ста¬ рые машины, окажется косвенно сама сориентирована на них же; 2) при разработке МВК «Эльбрус» в основном рас¬ сматривались языки, не включающие средства логическо¬ го вывода. Его учет, по всей видимости, должен стать основой для дальнейшего развития архитектур.
Глава Принципы построения 4 эффективных I многопроцессорных систем 1.1. Языки программирования и архитектура ЭВМ При разработке процессора многопроцес¬ сорной ЭВМ следует стремиться к тому, чтобы этот про¬ цессор хорошо работал и в отсутствие других процессо¬ ров. Создание хорошей архитектуры однопроцессорной машины помогает превращению машины в многопроцес¬ сорную. Для обеспечения многопроцессорности в архи¬ тектуру надо лишь добавить некоторые специальные средства синхронизации. Если стремиться к отражению в архитектуре ЭВМ существенных свойств процессов об¬ работки информации — а именно по такому пути шла разработка системы «Эльбрус», — то оказывается, что почти нет каких-либо особых требований по обеспечению многопроцессорности, что стремление сделать архитекту¬ ру более эффективной для многопроцессорных конфигу¬ раций машин способствует и улучшению однопроцессор¬ ных конфигураций, а совершенствование одиночного про¬ цессора приводит к облегчению межпроцессорного взаи¬ модействия и повышению эффективности многопроцес¬ сорной работы. Поэтому анализ взаимоотношения языков программирования и архитектуры ЭВМ, важный для раз¬ вития однопроцессорных машин, играет ключевую роль и в осознании принципов построения многопроцессорных систем. Языки высокого уровня и ассемблеры. Если попросить любого практика-программиста разбить языки на две группы — на языки высокого уровня и ассемблеры, — то любой практик интуитивно выполнит эту работу с лег¬ костью. Попытаемся выделить тот принцип, по которо¬ му можно отличать эти две группы. Все языки высокого уровня безусловно отличаются 5
лаконичностью, однако хорошо известно, что мак¬ росредства, которыми снабжается в настоящее время лю¬ бой ассемблер, могут привести к неменьшей лаконично¬ сти. Однако никто из программистов не согласится счи¬ тать макроассемблер языком высокого уровня. Более того, интенсивное использование макроопределений ус¬ ложняет отладку программ. По всей видимости, лаконич¬ ность нельзя считать критерием высокого уровня про¬ граммирования. Традиционно языки высокого уровня значительно от¬ личаются от ассемблеров по своим выразительным средствам. Ассемблеры имеют простую структуру «оператор за оператором» с достаточно жесткой структу¬ рой каждого оператора. Языки же высокого уровня име¬ ют свободную рекурсивную структуру, с глубоко вложен¬ ными условными выражениями, процедурной нотацией и инфиксными арифметическими выражениями. Может по¬ казаться, что это и есть искомый принцип. Однако хоро¬ шо известен пример языка PL/360, созданного Н. Вир¬ том, который по своим выразительным средствам пол¬ ностью соответствовал языкам высокого уровня; практи¬ ка его применения привела всех пользователей к едино¬ душному мнению, что это всего-навсего ассемблер машин архитектуры IBM/360. Значит и выразительные свойства не могут служить искомым принципом. Хорошо известно, что все ассемблеры ориентированы на соответствующие машины, и наоборот, языки высоко¬ го уровня, как уже упоминалось, ориентированы на удоб¬ ное изложение алгоритмов. Действительно, все языки — и ассемблеры, и языки высокого уровня, — строго говоря, одинаково универсальны с точки зрения возможности ре¬ ализации алгоритмов. Поэтому ориентация на конкретную машину — это безусловно вопрос эф¬ фективности реализации языка на данной машине. Обра¬ тимся, например, к известному языку ЛИСП. Этот весьма удобный для определенного класса задач язык общеприз¬ нан языком высокого уровня. Так как реализация ЛИСПа очень часто включает значительную долю интер¬ претации, эффективность его реализации на любых сов¬ ременных традиционных машинах не столь уж велика. В этом смысле нет сомнения в том, что его нельзя при¬ знать машинно-ориентированным языком. Однако в последнее время широкое распространение получили ЛИСП-машины, которые обеспечивают высо¬ кую эффективность реализации языка ЛИСП. Если бы 6
машинная ориентация была отличительной чертой ассем¬ блера, то следовало бы до появления ЛИСП-машин счи¬ тать язык ЛИСП языком высокого уровня, а после появ¬ ления этих машин «разжаловать» его до уровня простого ассемблера. Нелепость такого положения свидетельству¬ ет о неверности исходной посылки. Машинная или проб¬ лемная ориентация не могут служить характеристикой уровня языка программирования. Уровень программиро¬ вания должен характеризовать удобство разработки и от¬ ладки на данном языке, но не эффективность его реали¬ зации или близость к системе команд какой-либо ма¬ шины. Анализ процесса программирования. Для отыскания правильного критерия высокого уровня языка проанали¬ зируем процесс программирования. Программирование — это прежде всего отражение в памяти и программах информационной системы объектов, понятий и явлений, существующих за ее пределами. Чем более адекватно позволяет информационная система вы¬ полнить это отображение, тем выше уровень программи¬ рования. При этом должна учитываться адекватность отобра¬ жения не только в процессе разработки программы, но и в процессе отладки и исправления ошибок. Всякому объекту при программировании соответствует определен¬ ная информация, занимающая некоторый объем памяти. Изображения различных объектов могут иметь совпада¬ ющие представления в памяти. Если не принять специ¬ альных мер, то это может привести к значительным ос¬ ложнениям в процессе отладки программ. Действительно, если программа написана для работы с определенными объектами, то она, как правило, содержит достаточный контроль на тот случай, когда поданные на обработку объекты имеют не очень правильные параметры. В этом случае программисту, попытавшемуся обрабатывать та¬ кие объекты, выдается диагностическое сообщение с вполне адекватной терминологией (например, «данный треугольник непрямоугольный» — если процедура пред¬ усматривает на входе прямоугольный треугольник, и т. д.). Однако если на вход какой-либо процедуры ошибочно подается совсем не тот объект, то даже при наличии хо¬ рошего контроля диагностические сообщения будут непо¬ нятными. Более того, ошибка может быть обнаружена значительно позже, чем она была допущена. 7
Все это — результат отсутствия взаимно однозначного соответствия между объектом и его отображением в ин¬ формационной системе. В качестве примера можно при¬ вести отображение треугольников и параллелепипедов, которые характеризуются тремя числами. Отсутствие до¬ статочного контроля приводит к необходимости отлажи¬ вать уже отлаженные процедуры. Допустим, что имеется хорошо отлаженная процедура работы с треугольниками, на вход которой программист по ошибке подает описание параллелепипеда. В результате процедура обработки тре¬ угольника может «поломаться» где-то внутри и выдать диагностическое сообщение в терминах треугольника. Чтобы найти ошибку, программисту придется разбирать¬ ся в давно отлаженной, может быть, другим программис¬ том процедуре. Этот эффект, по существу, соответствует понижению уровня программирования. Описанная ситуа¬ ция заставляет программиста, работающего на более вы¬ соких уровнях и допустившего ошибку на своем уровне, для ее отыскания разбираться с процедурами более низ¬ кого уровня, не содержащих каких-либо ошибок. Типы и типовый контроль. Существует довольно про¬ стой метод, используемый в языках высокого уровня, ко¬ торый позволяет полностью исключить отрицательные по¬ следствия описанной ситуации. Этот метод заключается во введении типов и типового контроля на входе проце¬ дур. Именно введение типов устанавливает взаимно одно¬ значное соответствие между объектом и его изображени¬ ем в информационной системе. В этом случае, несмотря даже на числовое совпаде¬ ние, треугольник отличается от параллелепипеда тем, что вместе с тремя числами, описывающими стороны тре¬ угольника, содержится информация, свидетельствующая о том, что это и есть треугольник. Если теперь на входе каждой процедуры проверять тип объекта, то в случае ошибки, описанной выше, возникнет диагностическое со¬ общение («Вы пытаетесь применить теорему Пифагора к параллелепипеду»), вполне адекватное допущенной оши¬ бке. Это полностью избавит программистов от необходи¬ мости «копаться» в хорошо отлаженных процедурах бо¬ лее низкого уровня в поисках ошибки, допущенной на бо¬ лее высоком уровне. Это, по существу, и есть повыше¬ ние уровня программирования. Если комплекс процедур структурирован более сложным образом, чем представ¬ ленная выше простая иерархия уровней, то наличие ти¬ 8
пов и типового контроля приводит к высокой модульности программирования. Важность введения типов и типового контроля прояв¬ ляется и в том, что только благодаря им в языках появ¬ ляется наиболее совершенная контекстная защита па¬ мяти. Обычно защита памяти нарушается в двух случаях: 1) либо тогда, когда по ошибке программист обра¬ батывает адресную информацию операциями, не предус¬ мотренными для работы с адресами (логические опера¬ ции, сложение вместо операции индексации/когда про¬ веряется диапазон массива, и т.д.); 2) либо тогда, когда в качестве адресов используется не адресная информация. Очевидно, что при введении типов и типового конт¬ роля обе эти ошибки обнаруживаются системой. Фунда¬ ментальный характер типов подчеркивается и тем, что введение типов в области работы с файлами привело к появлению баз данных. Если теперь вспомнить об интуитивном разделении языков на две группы, то можно легко убедиться в том, что в группу языков высокого уровня попали языки, в ко¬ торые введены типы и типовый контроль; в группе же ассемблеров типы отсутствуют. Этот факт подтверждает соответствие предложенного разделения интуитивному представлению программистов. Заметим, что во многих языках высокого уровня (ПЛ/1, АДА) для повышения эффективности введена возможность неконтролируемой работы с адресной ин¬ формацией. Именно эта возможность обычно восприни¬ мается как черта ассемблера в языках высокого уровня. Другим примером является язык Си. В нем, хотя и су¬ ществуют типы, практически отсутствует типовый конт¬ роль. По существу, следует признать этот язык вари¬ антом ассемблера, что подтверждается практикой его ис¬ пользования. Языки с динамическими и статическими типами. Языки высокого уровня по характеру работы с типами можно разделить на два класса — с динамическими и статическими типами. Если с переменной статически (при написании про¬ граммы) связывается определенный тип данных так, что во время работы программы этой переменной можно при¬ сваивать значения только указанного типа, то такие языки, как известно, называются языками со стати¬ 9
ческими типами. В противном случае, когда с перемен¬ ной не связывается тип и переменная может содержать величины различных типов, языки называются динами¬ ческими. Возможны, разумеется, и смешанные типы. С точки зрения эффективности реализации на существующих машинах предпочтительнее статические языки, так как для динамических языков необходимо вместе со значени¬ ем величины хранить тип и обрабатывать его интерпрета¬ ционно. Именно поэтому подавляющее большинство практически используемых языков высокого уровня явля¬ ются статическими. Однако статические языки имеют оп¬ ределенные недостатки. Динамические языки более удобны для программиро¬ вания, о чем свидетельствует анализ истории развития языков. Почти все языки, которые в прошлом создава¬ лись с целью обеспечения удобства программирования практически без учета эффективности, оказывались дина¬ мическими. Такими языками являются диалоговые языки, например, АПЛ, РОР-2 и др. Характерно, что ведущий специалист в области языков Н. Вирт начинал свое языкотворчество с разработки динамического языка ЭЙЛЕР, имея целью обеспечение удобства программи¬ рования. Однако, убедившись в его крайне низкой эф¬ фективности, для всех своих последующих работ избрал направление статических языков. В такой важной об¬ ласти, какой является система обработки символьной информации и логического вывода, прочное место заняли динамические языки (ЛИСП, ПРОЛОГ). Более того, для языка ПРОЛОГ динамика типов является сущест¬ венной частью языка (например, семантика операции унификации). Есть важная практическая область создания сложных программ, в том числе операционных систем, где не¬ возможно использовать статические языки, либо их надо использовать, отключая статический контроль, т. е. по су¬ ществу, переходить к ассемблеру. Действительно, опера¬ ционные системы значительную часть времени работают с пользовательскими массивами, типы которых неизвест¬ ны при написании операционной системы. Теговая архитектура. С точки зрения удобства про¬ граммирования необходимо как можно шире применять языки высокого уровня. Однако соображения эффектив¬ ности не позволяют полностью избавиться от ассем¬ блеров на существующих машинах, так как на них ю
невозможно создать высокоэффективный динамический язык высокого уровня. Для решения этого противоречия в основу архитекту¬ ры МВК «Эльбрус» положена глубокая динамическая типизация данных на базе тегов. В МВК «Эльбрус» каж¬ дая элементарная величина (целое, вещественное и т. д. в различных форматах) сопровождается описанием типа, для чего в каждом машинном слове предусматриваются для его описания дополнительные разряды сверх 64 ин¬ формационных. Базовые типы, которые могут быть операндами и результатами аппаратных операций, реализованы аппа¬ ратно. Основными аппаратно реализованными типами яв¬ ляются: целое 32-разрядное; целое 64-разрядное; вещест¬ венное 32-разрядное; вещественное 64-разрядное; ве¬ щественное 128-разрядное; битовый набор 64-разрядный; дескриптор массива; косвенное слово; метка процедуры; метка перехода; семафор. Интерпретационному расширению операций соответ¬ ствует аналогичное расширение типов. Соответственно в МВК «Эльбрус» на уровне аппаратуры реализованы типы и типовый контроль. В этом смысле можно сказать, что даже машинный язык в МВК «Эльбрус» является языком высокого уровня. На базе тегов в МВК «Эльбрус» реали¬ зована контекстная защита памяти. Реализация кон¬ текстной защиты на тех же принципах появилась и в США в машине фирмы IBM System/38 [5]. Исключение ассемблерного программирования. Аппа¬ ратная реализация типов и типового контроля позволила исключить из практики программирования язык Ассемб¬ лер. Для этого потребовалось разработать новый динами¬ ческий язык высокого уровня ЭЛЬ-76 [2]. Исключение ассемблера значительно упростило созда¬ ние системного программного обеспечения, разработку сложных систем реального масштаба времени и пользо¬ вательских программ, что позволило в несколько раз под¬ нять производительность труда программистов в наибо¬ лее сложных областях применения вычислительных ма¬ шин, где в прошлом по соображениям эффективности невозможно было обойтись без применения ассемблера и где в настоящее время его сменил эффективно реали¬ зованный язык высокого уровня ЭЛЬ-76. Следует отме¬ тить, что существующие традиционные статические языки высокого уровня также эффективно реализуются на МВК «Эльбрус». Это является следствием того, что ос¬ 11
новной базис современных языков достаточно хорошо от¬ работан и является общим и для языка ЭЛЬ-76 (кроме подхода к исключительным ситуациям). В качестве иллюстрации результата перехода на языки можно отметить, что достаточно полное современ¬ ное программное обеспечение МВК «Эльбрус» создано за сравнительно небольшой срок малым коллективом, не имевшим до этого опыта работы в системном програм¬ мировании. Общие трудозатраты на программирование транслятора с языка ЭЛЬ-76 и операционной системы, сравнимой по своим функциональным возможностям с любыми развитыми операционными системами и включа¬ ющей поддержку режима мультипрограммирования, мультипроцессорной работы, терминальной работы в ре¬ жиме разделения времени, систему файлов и базу дан¬ ных, составили около 100 человеко-лет. В настоящее время программное обеспечение МВК «Эльбрус» содержит: операционную систему «Эльбрус»; средства работы с базами данных; трансляторы с языков ЭЛЬ-76, ФОРТРАН, ФОРТРАН оптимизирующий (включая ФОРТРАН-IV, ФОРТРАН-77, ФОРТРАН-БЭСМ), АЛГОЛ-бО, АЛГОЛ- 68, ПАСКАЛЬ, СИМУЛА-67, ПЛ/1, ЛИСП, СНОБОЛ, РЕФАЛ, КЛУ, КОБОЛ; пакеты программ машинной гра¬ фики, включая перенесенный с БЭСМ-6 пакет ГРАФОР; ряд пакетов прикладных программ. Реализованы операционная среда Unix и языки ПРОЛОГ и АДА. Изучение языков и методов программиро¬ вания, статистики употребления различных языковых конструкций позволило более эффективно использовать оборудование, а следовательно, при заданном объеме оборудования повысить общую производительность ма¬ шин. При разработке МВК «Эльбрус» все важные воп¬ росы эффективности решались с опорой на базовые кон¬ струкции языков высокого уровня. Это привело к значительным результатам в смысле эффективности. Рассмотрим ряд важных примеров. В настоящее время возникают сложные проблемы при достижении высокого быстродействия машины с исполь¬ зованием быстрого процессора со сравнительно медлен¬ 12
ной, по крайней мере с точки зрения времени доступа, оперативной памятью. Хорошим решением, предложен¬ ным фирмой IBM, является введение в процессоре сверхоперативной быстродействующей памяти сравни¬ тельно небольшого объема — кэш-памяти. Однако в этом решении есть определенный недостаток. Если программа работает с большим массивом, который полностью не вмещается в кэш-память (а это наиболее типичная си¬ туация), то происходит следующее. Обычно работа с мас¬ сивом заключается в последовательном обращении к его элементам с шагом 1 или некоторой постоянной. В этом случае кэш-память бесполезна, так как любой считанный элемент массива либо никогда не затребуется повторно, либо затребуется после обращения ко всем остальным элементам массива, когда он этими обращениями будет вытеснен из кэш-памяти. Более того, в этом случае может произойти вытеснение и отдельных локальных данных процедуры, в которой размещен цикл. В результате важ¬ ная работа с массивами — векторные вычисления — ре¬ ализуется неэффективно. В МВК «Эльбрус-2» с учетом языковой семантики проводимых вычислений сверхопе¬ ративная память разделяется на четыре функционально специализированные части: Буфер команд — 512 слов Буфер стека — 256 слов Буфер массивов — 256 слов Ассоциативное запоминающее устрой¬ ство глобалов — 1024 слова Такое разделение позволяет решить проблему эффек¬ тивной стыковки процессора с памятью. Частью, соответствующей по своему устройству кэш¬ памяти традиционных машин, является ассоциативное запоминающее устройство глобалов (АЗУГ). Оно исполь¬ зуется для размещения информации, не попадающей по своему характеру в остальные буферные памяти. Это преимущественно глобальные данные программ и локаль¬ ные данные процедур, не попавшие в буфер стека. Заме¬ тим, что если в процедуре или внешнем блоке программы был описан массив, то в АЗУГ может попасть дескриптор массива, а элементы массива в АЗУГ не подкачиваются и не вытесняют из него более важную информацию. Буфер команд содержит команды исполняемой про¬ граммы. Код программы в МВК «Эльбрус» — постоянная информация, не меняющаяся в процессе счета (что яв¬ ляется отражением устоявшегося в языках подхода), по¬ 13
этому при переиспользовании ячеек буфера команды просто забиваются и не отсылаются обратно в память. Это сокращает поток обращений в память и облегчает ее работу. В традиционных кэш-памятях команды откачи¬ ваются в память в тех случаях, когда они не отделены от другой информации. Буфер стека содержит локальные данные вызванных процедур, информация из него откачивается в оператив¬ ную память (в продолжение стека в памяти) в соот¬ ветствии со стековой дисциплиной, которой подчинены области данных вызываемых процедур в языках высокого уровня. Таким образом, наиболее актуальная информа¬ ция — локальные данные самых недавно вызванных про¬ цедур — находится постоянно в сверхоперативной па¬ мяти — буфере стека. Как известно, 80—90 % всех обра¬ щений за данными попадает именно в эти области. Эф¬ фект попадания данных получается без всякой ассоци¬ ативности, которая сложно реализуется на основе статис¬ тики. При этом используются языковые принципы. В частности, получается, что наиболее важные данные защищены от вытесняющего воздействия со стороны эле¬ ментов массива, обрабатываемых в цикле. Разумеется, для реализации буфера стека процедур в МВК «Эльбрус» введен процедурный механизм на уровне аппаратуры. Буфер массивов предназначен для хранения эле¬ ментов массива, обрабатываемых в цикле. В архитектуре МВК «Эльбрус-2» предусмотрены опи¬ сатели массивов, содержащие конфигурацию многомер¬ ных массивов по всем измерениям. Существуют коман¬ да начала цикла с указанием шага изменения перемен¬ ной цикла, команда конца цикла и специальная команда обращения к элементам массива в цикле. Необходимая для этих команд информация основана на языковой семантике обработки циклов. В обычных машинах она ос¬ тается в трансляторах и цикл транслируется в команды, которые не содержат для машины информацию о том, что идет обработка цикла. Аппаратная оптимизация при этом невозможна. В МВК «Эльбрус» же языковая инфор¬ мация доведена до аппаратуры, что позволяет, зная за¬ коны обращения к элементам массива, заранее подкачи¬ вать необходимые элементы массива в сверхоперативную память для нескольких итераций цикла (до 5) на фоне вычислений предыдущих итераций цикла. Такая подкач¬ ка впрок значительно ускоряет векторные вычисления. Так, проведенное в процессе испытаний МВК сравнение 14
«Эльбрус-2» с наиболее быстродействующей машиной ЕС 1066 ряда ЕС ЭВМ, выполненной на той же элемент¬ ной базе, дало следующий результат. Задача по перемно¬ жению матриц размером 100X100 решалась на МВК «Эльбрус» в 6 раз быстрее, чем на ЕС 1066, при этом на ЕС1066 она была запрограммирована на ассемблере, а на МВК «Эльбрус» — на языке программирования высокого уровня ЭЛЬ-76; объем оборудования централь¬ ного процессора МВК «Эльбрус» приблизительно в 2 раза превосходит объем оборудования центрального процессора ЕС 1066. Таким образом, комплекс мер, основанный на языко¬ вом подходе, позволил успешно решить важный архи¬ тектурный вопрос — эффективную стыковку процессора с памятью. Результаты испытаний. Оценивая комплексно полу¬ ченное быстродействие одного процессора, можно при¬ вести следующие данные. На представительном наборе программ среднее быстродействие МВК «Эльбрус-2» при работе с данными 32-разрядного формата оказалось в 2,5 раза больше быстродействия ЕС 1066, а при работе с данными 64-разрядного формата быстродействие пре¬ высило в 2,8 раза. При решении большой физической задачи, написанной на языке ФОРТРАН и перенесенной с машин серии ЕС на МВК «Эльбрус-2», получены сле¬ дующие цифры для однопроцессорной конфигурации: ЕС 1060 — 96 ч ЕС 1066 — 21 ч «Эльбрус-2» — 6,5 ч Таким образом, быстродействие МВК «Эльбрус-2» почти в 15 раз выше, чем ЕС 1060, и более чем в 3 раза выше, чем ЕС 1066. ЕС 1066 является весьма совершенной в архитектурном отношении машиной из серии ЕС и находится на уровне машин фирмы IBM соответствую¬ щего класса производительности. Имея в виду, что ма¬ шина ЕС 1066 разработана на той же элементной базе, что и МВК «Эльбрус-2», и объем оборудования одного процессора МВК «Эльбрус-2» всего в 2 раза пре¬ вышает объем оборудования процессора ЕС 1066, прихо¬ дим к выводу, что важная экономическая характеристика архитектуры — соотношение быстродействия и объема оборудования — в МВК «Эльбрус-2» значительно лучше, чем в машинах фирмы IBM. И это при том, что в МВК «Эльбрус-2» аппаратно поддержано программирование 15
на языках высокого уровня, решена проблема исключе¬ ния ассемблера, все программирование осуществляется на языках высокого уровня. Организация многопроцессорной работы. Важным ас¬ пектом, связанным с эффективностью работы машины, является организация многопроцессорной работы. Мно¬ гопроцессорность для традиционных машин находится в некотором противоречии с повышением быстродействия каждого процессора. Как было показано выше, для по¬ вышения быстродействия каждого процессора необхо¬ димо создавать сверхоперативную локальную память, в которую на определенное время копируются необходи¬ мые данные из общей для всех процессоров оперативной памяти. Таким образом, информация оказывается про¬ дублированной в основной и сверхоперативной локаль¬ ной кэш-памяти; при параллельной работе с общими для нескольких процессов данными эта информация может оказаться продублированной в нескольких кэш-памятях. При этом возникает проблема когерентности кэш¬ памяти — поддержание в процессе изменения идентич¬ ности всех территориально разнесенных копий информа¬ ции. Чтобы проиллюстрировать трудность этой проблемы, приведем вариант ее решения, принятый во многих машинах фирмы IBM. В этих машинах запись любой информации в память из любого процессора или канала обмена сопровождается поиском ее в кэш-памятях всех процессоров многопроцессорной системы. Если эта ин¬ формация обнаруживается где-либо, то она вычеркива¬ ется из кэш-памяти. Таким образом, при попытке счи¬ тать эту информацию процессор не найдет ее в кэш-па¬ мяти и вынужден будет обратиться в общую память, где находится обновленная величина. Эту величину можно вновь занести в кэш-память или использовать в вычисле¬ ниях. Рассмотренное решение снижает, однако, эффектив¬ ность кэш-памяти. Поток обращений в каждую кэшпа¬ мять сильно растет с ростом числа процессоров, поэтому оказывается нецелесообразным иметь в системе более трех процессоров. Особенно досадным является тот факт, что работа с общими данными, когда действительно полезна описанная процедура, крайне редка. Однако в машине нет информации о работе с общими данными и она вынуждена выполнять большой объем ненужных действий. 16
В МВК «Эльбрус» простое решение пришло на осно¬ вании анализа языков высокого уровня (АЛГОЛ-68, АДА, ПЛ/1 и др.) и методов программирования парал¬ лельных вычислений (см., например, [6]). В настоящее время хорошо известно, что при работе с общими данными для обеспечения удобства программирования необходимо использовать специального рода структурные скобки (критические секции, скобки мгновенности и т. д.), охраняемые специальными семафорами. Семафоры использованы в МВК «Эльбрус» как самое простое решение проблемы. В подавляющем большинстве случаев, составляющих по времени выполнения более 99 %, машина находится вне критических секций и поэтому нет необходимости принимать какие бы то ни было меры для поддержания идентичности копий. Этих копий в разных кэш-памятях быть не может. Для оставшегося 1 % случаев прини¬ маемые меры не так существенны с точки зрения эффек¬ тивности. Можно, например, в начале критической сек¬ ции обнулять все данные, считанные в кэш-память внутри предыдущих критических секций. Обнуление особенно облегчено в МВК «Эльбрус» бла¬ годаря разбиению кэш-памяти на четыре функциональ¬ ные области. Буфер команд нет необходимости обнулять, так как в нем находится постоянная информация. Буфер стека можно не обнулять, так как локальные данные процесса, общие с другим процессом, перемещаются из буфера стека в память. Буфер массивов, как правило, бывает пустой во время семафорной синхронизации. Та¬ ким образом, единственно, что требует эффективного об¬ нуления— это память глобалов (АЗУГ). В результате для решения проблемы когерентности кэш-памяти в МВК «Эльбрус» нет необходимости выполнять лишнюю работу. Именно поэтому вычислительная машина «Эльбрус» в архитектурном отношении является предельно быстро¬ действующей и одновременно многопроцессорной, т. е. со¬ держащей несколько процессоров, работающих на общую память. 1.3. Развиваемая архитектура Исключение ассемблера и ориентация на языки высокого уровня позволили создать архитектуру, хорошо приспособленную к развитию. Этому способствует тот факт, что благодаря исклю- 675 17
чению ассемблера объектный код программы, конкретная система команд не известны пользователю, работающему на языках. Это значит, что программистам, работающим на машине, нет необходимости знакомиться с описанием системы команд. Пользователи работают на уровне языков и при написании программы, и при ее отладке, и при исправлении ошибок. Система команд исключена из интерфейса с пользователем и является внутренним до¬ кументом для разработчиков машин. Указанное обстоятельство дает возможность менять систему команд машины от модели к модели, сохраняя полную программную совместимость. Справедливость этого была доказана в процессе раз¬ вития архитектурной линии «Эльбрус» на практике. Раз¬ работанные к настоящему времени две модели «Эль¬ брус» — МВК «Эльбрус-1» и МВК «Эльбрус-2» — имеют разные системы команд, но полностью совместимы по программному обеспечению. Эти две модели имеют еди¬ ное программное обеспечение, и пользователи выполняют с одинаковым результатом свои программы на любой ма¬ шине. Разумеется, представление данных и алгоритмы выполнения операций одинаковы в обеих машинах. Отли¬ чается лишь представление программ. Однако, как по¬ казывает практика, это отличие очень важно. Система получает возможность при разработке новых моделей адаптироваться к новым обстоятельствам, не нарушая программной совместимости. Новая возможность позволяет прежде всего значи¬ тельно расширить диапазон характеристик машин, разра¬ батываемых по единой архитектуре. В настоящее время разрабатывается несколько моде¬ лей ЭВМ во всем диапазоне производительности вычис¬ лительных машин. Начинается этот ряд вычислительных комплексов с 32-разрядного микропроцессора, разраба¬ тываемого на КМОП-технологии, на базе которого будут созданы многопроцессорные микромашины с производи¬ тельностью каждого микропроцессора 4—5 млн. оп/с. В конце этого ряда находится 16-процессорная су¬ перЭВМ «Эльбрус-3» с пиковой производительностью бо¬ лее 10 млрд. оп/с. Такое положение не имеет аналогов в рамках других архитектур. Этот диапазон производи¬ тельности покрывается, как минимум, тремя архитекту¬ рами. В области микропроцессоров типичными предста¬ вителями являются microVAX, микропроцессоры фирм Intel, Motorola. Средние машины представлены маши¬ 18
нами с архитектурой IBM370. В области суперЭВМ наиболее ярким примером являются машины фирмы Cray Research. Языковый подход позволяет перекрыть весь этот диапазон единой архитектурой, единым програм¬ мным обеспечением с полной совместимостью по програм¬ мированию. Использование достижений технологии. Адаптацион¬ ные свойства архитектуры «Эльбрус» позволяют при¬ спосабливаться к новым возможностям развивающейся технологии. Настоящий период развития технологии оте¬ чественных машин характеризуется значительным по¬ вышением степени интеграции и переходом к большим интегральным схемам (БИС). Повышение интеграции приводит к настоятельной необходимости реализации па¬ раллельной архитектуры. Переход же на большие интег¬ ральные схемы приводит к значительному усложнению процесса отладки из-за большого времени, затрачива¬ емого на исправление ошибок внутри БИС. Поэтому необходимо разрабатывать структуры ма¬ шин, которые бы отличались логической простотой, регу¬ лярностью, даже за счет увеличения общего объема обору¬ дования. Адаптационные свойства дают возможность быстро реагировать на новые идеи в области архитектуры и структурного построения машин. Например, микропро¬ цессор «Эльбрус» разрабатывается с использованием выдвинутой сравнительно недавно и хорошо зарекомен¬ довавшей себя в области микропроцессоров идеи RISC- архитектуры (архитектуры с сокращенным набором команд [7]). Сохраняя полную программную преемствен¬ ность, система команд изменяется в сторону значитель¬ ного упрощения. Выбран жесткий регистровый формат команды с большим числом регистров, практически иск¬ лючено микропрограммирование. Все это позволит в со¬ четании с хорошим оптимизирующим транслятором по¬ лучить микропроцессор с высоким быстродействием в 4—5 млн. оп/с, включая вещественную арифметику. Если обратиться к опыту других стран, то достиже¬ ние такого быстродействия оказалось невозможным од¬ новременно с сохранением программной преемственности. Фирма IBM выпускает персональные компьютеры на ос¬ нове микропроцессоров фирмы Intel. Был разработан микропроцессор с системой команд IBM370, однако из-за громоздкости, низкого быстродействия, неконкурентного в области микропроцессоров программного обеспечения 2* 19
он не имел коммерческого успеха и был снят с произ¬ водства. Фирма IBM разработала удачный процессор на базе RISC-архитектуры. Однако он программно не совместим ни с какой из вычислительных машин IBM. Микро¬ процессор MicroVAX, выпущенный фирмой DEC, из-за необходимости обеспечить программную преемственность на ассемблерном уровне реализует полную сложную сис¬ тему команд архитектуры VAX и имеет поэтому недоста¬ точное быстродействие. Близким по уровню быстродейст¬ вия к разрабатываемому микропроцессору «Эльбрус» является микропроцессор Clipper, выпущенный сравни¬ тельно недавно фирмой Fairchild, однако он ни с чем не совместим программно. Это только один из примеров ассимиляции полезных идей, которые вполне доступны при развитии архитектуры «Эльбрус» и совершенно не¬ допустимы в развитии традиционных архитектур, вклю¬ чающих ассемблерное программирование и требующих совместимости на ассемблерном уровне. 1.4. Проблемы параллельных вычислений и соотношения векторных и скалярных вычислений Как указывалось выше, важнейшей проб¬ лемой развития современной архитектуры, в особенности суперЭВМ и ЭВМ средней производительности, является проблема параллельных вычислений. В архитектуре «Эльбрус» сделан важнейший шаг в этом направлении — реализована многопроцессорная обработка, включающая 10 процессоров. Однако обстоятельства требуют дальней¬ шего повышения параллельности, в том числе и внутри каждого процессора. Проблема параллельных вычислений давно является предметом постоянных забот разработчиков архитектур, в особенности суперЭВМ. Она заключается в необходи¬ мости создания такой параллельной структуры, которая хоть в какой-то степени была бы адекватна решаемым задачам и допускала достаточно эффективное их про¬ граммирование. На ранней стадии развития казалось, что наиболее простым решением проблемы могут быть специ¬ ализированные векторные вычисления. Действительно, векторные вычисления дают очень большой коэффициент распараллеливания, они легки в реализации и т. д. По¬ этому в прошлом (60—70-е годы) было много экспери¬ 20
ментальных проектов чисто векторных машин. Ни один из этих проектов не привел к коммерческой машине. Ре¬ зультатом этих проектов стало понимание того, что проб¬ лема параллельности значительно сложнее. Основу практически любой задачи, даже самой век¬ торной, все-таки составляют скалярные вычисления. По¬ этому, чтобы по-настоящему решить проблему парал¬ лельности, следует решать задачу распараллеливания скалярных вычислений. В определенном смысле справедливым является сле¬ дующее несколько парадоксальное утверждение: «Успех любого векторного проекта зависит от того, насколько эффективно в нем реализованы скалярные вычисления». Это хорошо осознавал С. Крей — автор первого по-нас- тоящему коммерческого проекта, включающего в себя векторные вычисления. После появления машины Сгау-1 он писал, что ее успех связан в основном с тем, что на момент выпуска она была самой быстрой скалярной ма¬ шиной. Заслуга С. Крея заключается именно в том, что он первый определил правильное соотношение между скалярными и векторными вычислениями: основой явля¬ ется скалярная обработка, обработка векторов является ее хорошим дополнением. Интересно в этом смысле сравнение наиболее успеш¬ ных быстродействующих машин: Cyber-205 фирмы CDC, машин фирмы Cray Research и машин фирмы FPS [8]. Здесь они приведены в последовательности всевозрастаю¬ щего внимания к скалярным вычислениям. Машина Cyber-205 кроме обычного последовательного скалярного процессора содержит фактически независимый векторный процессор. Все векторные операции выполняются в ре¬ жиме память—память, т. е. какой размер ни имели бы мас¬ сивы-источники и массив-результат, они располагаются в памяти и обрабатываются единой операцией последо¬ вательно элемент за элементом. Есть возможность «сце¬ пить» не более двух операций, так что результат одной из них поступает на вход другой, но при этом сцеплен¬ ная пара должна выглядеть с точки зрения обращения в память как одна операция, т. е. иметь в сумме не более двух массивов-источников и не более одного массива- результата. Анализируя архитектуру машины Cyber-205, следует отметить, что в ней не сделано никаких попыток продви¬ нуть вперед проблему распараллеливания скалярных вы¬ числений. Существует традиционное для современных ма¬ 21
шин с многими арифметическими устройствами наложе¬ ние операций. Векторные операции допускают в принципе высокую степень параллельности внутри одной векторной операции. Однако здесь существуют следующие принци¬ пиальные недостатки: 1) при выполнении какой-либо векторной операции, например сложения, устройства исполнения операций других типов (умножения, деления и т. д.) не будут за¬ действованы, что значительно снижает возможности па¬ раллельного счета. Упомянутое «сцепление» мало помо¬ гает из-за больших ограничений его применения; 2) при вычислении сложного векторного выражения, такого, например, как (А + В). C+D, где все перемен¬ ные являются массивами, все промежуточные результа- ты-массивы записываются в основную память. Сначала записывается промежуточный результат первого сложе¬ ния А + В -► Ri. Затем этот результат элемент за элементом вновь вызывается в процессор для выполнения умножения R, • C^R2. Наконец, R2+ D R. При этом сильно перегружается память. Заметное увеличение скорости обработки векторной операции можно получить лишь на достаточно длинных векторах. Заметно усложнена реализация нередкого слу¬ чая условной обработки в пределах одного массива. При этом приходится прибегать к технике масок, что не луч¬ шим образом сказывается на времени выполнения задач. Нелегкой проблемой является векторизация задач, т. е. представление задачи в виде работы над массивами вместо «привычных» циклов. И здесь, разумеется, труд¬ ность не в привычке программиста, а все в той же сте¬ пени адекватности архитектуры и задач. Указанные недостатки, в том числе отсутствие долж¬ ного внимания к скалярным вычислениям, привели к то¬ му, что машины с описанной архитектурой менее успеш¬ ны в коммерческом смысле. Значительно более «скалярный» подход реализовал в своих машинах С. Крей. По существу, его машины явля¬ ются традиционно трехадресными регистровыми, анало¬ 22
гичными машинам фирмы CDC, разработанным под его руководством. Для обработки векторов введены «длинные регистры», т. е. регистры, содержащие до 64 слов. Различие между архитектурами ЭВМ Сгау-1 и Cyber- 205 лучше всего проиллюстрировать на примере вектор¬ ного выражения, запрограммированного в Сгау-1 в виде цикла. В каждом поколении цикла вычисляются очеред¬ ные 64 последовательных элемента вектора-результата. Вычисления производятся полностью на регистрах. Про¬ межуточные результаты отсылаются не в память, а в один из восьми 64-словных векторных регистров. При этом если в машине Cyber-205 каждая следу¬ ющая операция начинается после завершения предыду¬ щей, то в машине Сгау-1, так же как во всех скалярных ЭВМ, происходит «заглядывание вперед» и наложение операций. В результате машина Сгау-1 оказывается из¬ бавленной от многих недостатков машины Cyber-205. Программист со значительно меньшими ограничениями может организовать параллельную работу нескольких векторных устройств. Если, например, написана следующая программа: Ri + R2 R3 Ri • R4 Rs R6 A R7 —► Re где Ri — R8 — адреса векторных регистров, то в ней все три операции выполняются параллельно с небольшим сдвигом. Таким образом, С. Крей векторные операции реализо¬ вал более успешно. Однако в его машинах, так же как в Cyber-205, проблема векторизации выражений и услов¬ ной обработки элементов массива остается нерешенной. «Более скалярный» метод обработки массивов и значи¬ тельно более тщательная с точки зрения получения пре¬ дельной скорости реализация скалярных вычислений поз¬ волила ему создать весьма успешную архитектуру. Более того, предложенный им метод векторизации скалярной архитектуры становится общепринятым. Этот же метод реализовала фирма IBM в серии 3090 ([9], реферат на русском языке— [10]), японские фирмы Fujutsu (серия FACOM VP), Hitachi (HITAC S-810 и др.) и NEC (суперЭВМ типа SX). Наибольшее внимание уделено скалярным вычислени¬ ям в машинах, построенных по архитектуре фирмы FPS. 23
Хотя эти машины числятся как векторные приставки к универсальным машинам (в основном для DEC и IBM), по существу, они сами являются универсальными, само¬ стоятельно решающими большие численные задачи, на¬ писанные на языке ФОРТРАН. При разработке этих машин большое внимание было уделено скалярным вы¬ числениям. По существу, только в машинах этой фирмы успешно реализуется явное распараллеливание скаляр¬ ных вычислений, что обеспечило им большой коммер¬ ческий успех. Суть архитектуры маши»! фирмы FPS можно кратко изложить следующим образом. Система управляется командой достаточно большого размера (64 разряда), в которой явно предусмотрен запуск нескольких арифме¬ тических устройств, входящих в машину. При этом для каждого арифметического устройства выделены постоян¬ ные разряды в команде. Также явно вместе с запуском арифметических устройств предусмотрено обращение к оперативной памяти и запись или считывание в быстрые регистры. Для каждого такого действия предусмотрены свои разряды в команде. Таким образом, система позво¬ ляет программисту или транслятору явно распараллели¬ вать как векторные, так и скалярные выражения. Так как распараллеливание явное, вопрос оптимизации загрузки устройств передается транслятору или программисту. В машинах фирмы FPS для векторных выражений не вводится каких-либо специальных команд, как это сдела¬ но в суперЭВМ Cyber-205 или Сгау-1. Любое векторное выражение программируется циклом и рассматривается как частный случай скалярных. Это, безусловно, упроща¬ ет машину и делает ее более однородной. С точки зрения получения высокой эффективности очень важно, что при программировании на этой ма¬ шине нет необходимости векторизовать выражение. Ра¬ зумеется, если задача представлена в более параллель¬ ном на уровне операций виде, то это облегчит получение лучшего объектного кода. Машины фирмы FPS имеют достаточно высокую архитектурную скорость. Ее гру¬ бо можно оценить следующим образом. Если взять ма¬ шину Сгау-1, архитектурную скорость можно характери¬ зовать пиковой и реальной производительностью. Пиковая производительность обычно считается следующим образом. В рассматриваемой ма¬ шине примерно 10 функциональных устройств с тактом синхронизации 12,5 не. Пиковая производительность оп¬ 24
ределяется тем, что в каждый такт запускаются два уст¬ ройства (2 флоп/такт или 160 Мфлоп/с). Реальная производительность, оценен¬ ная пользователем, в частности Ливерморской лаборато¬ рией в США, получается из пиковой делением на 5— 7 (~7з флоп/такт или 26 Мфлоп/с). Для машин фирмы FPS, имеющих два арифмети¬ ческих устройства, загружаемых каждый такт (160 не), пиковая производительность определяется исходя из за¬ грузки двух устройств каждый такт и составляет 12 Мфлоп/с (2 флоп/такт). При расчете реальных задач, например в Институте космических исследований АН СССР, достигается производительность в 8 Мфлоп/с (11 /з флоп/такт). Таким образом, для получения реаль¬ ной производительности пиковую производительность следует разделить всего на 1,5. Приведем некоторую сравнительную характеристику архитектурных скоростей: Сгау-1 — 1 /з флоп/такт FPS — 11 /з флоп/такт У машин фирмы FPS архитектурная скорость в 4 ра¬ за выше. Можно предположить, что численное значение этой оценки спорно, однако бесспорен факт более высо¬ кой архитектурной скорости ЭВМ фирмы FPS. Недостатки этих машин определяются тем, что их архитектура разрабатывалась без серьезного учета тре¬ бований языков высокого уровня и поэтому многие внут¬ ренние архитектурные решения оказались плохо сбалан¬ сированными. Неудачна организация регистровой памяти, затрудняющая реализацию многих алгоритмов, низка пропускная способность общей внутренней шины и т. д. Программирование на ассемблере этой машины ока¬ зывается сложной, почти комбинаторной задачей. Такое программирование не может быть освоено даже систем¬ ными программистами вне стен фирмы. Опыт работы без ассемблера во всем диапазоне применения, который есть у разработчиков системы «Эльбрус», у фирмы отсутст¬ вовал во время разработки. Для того чтобы программи¬ рование без ассемблера было успешным, следовало бы модифицировать архитектуру. В связи с этим фирма пошла по следующему пути. Она ограничила применение машин только физическими инженерными задачами, точ¬ нее, той областью, где хорошо применим ФОРТРАН, реализовала большой набор численных методов прямо в 25
ассемблере, разработала достаточно хороший транслятор с языка ФОРТРАН. Если задачи таковы, что подавля¬ ющее время машина работает на фирменных пакетах, вызываемых из текстов, которые написаны пользовате¬ лем на языке ФОРТРАН, то получается высокая произво¬ дительность. Однако более сложное применение машины в управляющих системах с более развитой операци¬ онной системой невозможно. Поэтому машина исполь¬ зуется как приставка к универсальным системам. Важ¬ ным недостатком ЭВМ фирмы FPS является непрорабо- танность мультипроцессорных аспектов. Однако, несмотря на отмеченные недостатки, эти ма¬ шины содержат выдающиеся архитектурные идеи, имеют коммерческий успех и, по всей видимости, в своей области обладают наилучшими показателями по критерию произ¬ водительность/стоимость. В настоящее время появились попытки развить архи¬ тектуру фирмы FPS в сторону большей универсальности и большей производительности. Предпринимается эта по¬ пытка известным американским специалистом Дж. Фи¬ шером. Начиналась эта деятельность университетскими работами, когда исследовалась возможность распаралле¬ ливания скалярных алгоритмов [11, 12]. После изучения большого числа алгоритмов был сделан вывод о крупных резервах параллельности, заключенных в скалярных ал¬ горитмах. Был разработан высокооптимизирующий транслятор с языка ФОРТРАН, специально приспособ¬ ленный для архитектур типа FPS. Создана фирма Mul¬ tiflow Computers, цель которой — разработка машин на базе этих идей [13]. 1.5. Принцип управления каждым тактом машины Одно из новых направлений в развитии со¬ временных архитектур — использование принципа про¬ граммного управления каждым тактом машины. Иными словами, это разработка такой архитектуры, при которой программист, работающий на уровне машинного языка, или разработчик транслятора может с точностью до такта оценить время работы любой написанной команды, возможно с учетом ее непосредственного окружения (предшествующей команды и т. п.). Первые машины (БЭСМ-1 и даже БЭСМ-6), в кото¬ рых было всего одно универсальное арифметическое уст¬ 26
ройство, безусловно, отвечали этому принципу. Однако впоследствии в машинах появилось несколько специали¬ зированных арифметических устройств (сумматор-вычи- татель, умножитель, делитель и т.д.). Их появление обусловлено тем, что возросшая интеграция микросхем позволяла это сделать, и тем, что на специализированных устройствах каждая операция выполнялась значительно быстрее, чем на едином универсальном. Как только это произошло, разработчики архитектур стали искать способ дальнейшего повышения быстродействия за счет парал¬ лельного запуска различных арифметических устройств. Одной из первых реализаций стала модель 91 се¬ мейства IBM/360, построенная на базе старой последо¬ вательной системы команд. Следует помнить, что посто¬ янно существовала проблема ассемблерной совмести¬ мости, которая не позволяла изменять систему команд. В результате на аппаратуру возлагалась задача отыска¬ ния таких мест в программе, которые можно было рас¬ параллелить на уровне арифметических устройств. Чтобы представить сложность этой задачи, надо иметь в виду, что, записывая программу последовательно, программист использует последовательный характер исполнения ма¬ шинных команд и это оказывается скрытым в тексте про¬ граммы. Например, если он в какой-либо команде запи¬ сал информацию в ячейку памяти (или регистр), то при считывании этой ячейки в следующей команде он рассчи¬ тывает получить обновленное значение. Однако если ап¬ паратуре удобно из-за наличия свободного арифмети¬ ческого устройства начать исполнение второй команды параллельно с первой, то на вход ее поступит еще старое содержимое памяти. Таким образом, чтобы использовать появившееся большое число арифметических устройств для возмож¬ ного распараллеливания счета, потребовалось, во-пер¬ вых, аппаратно просматривать вперед много команд (в МВК «Эльбрус-2», например, при благоприятных обсто¬ ятельствах просматривается до 30 команд); во-вторых, динамически планировать загрузку устройств с учетом упомянутой информационной зависимости команд, неявно скрытой в последовательной программе. Все это значительно усложнило аппаратуру и сделало невозможным локально предсказать при программирова¬ нии или трансляции время выполнения отдельной ко¬ манды или последовательности нескольких команд. Это усложнение особенно неприятно на данном этапе разви¬ 27
тия вычислительной техники, когда предстоит переход на большие интегральные схемы с большими слож¬ ностями отладки аппаратуры. По принципу аппаратного выявления параллельности построено большинство ма¬ шин предыдущего поколения, в том числе машины «Эль¬ брус-1» и «Эльбрус-2». К сожалению, надо отметить, что этот принцип, значительно усложняя аппаратуру, не дает ожидаемого увеличения производительности. Если бы все устройства МВК «Эльбрус-2» были полностью конвейерными, то с учетом времени такта (47 не), следуя методам оценки производительности Сгау-1, по¬ лучили бы пиковую производительность около 43 Мфлоп/с (2 флоп/такт). Переходя от флопов к обычным опера¬ циям (умножая приблизительно на 2,5), получаем около 120 млн. оп/с. Реально процессор «Эльбрус-2» имеет на порядок меньшее быстродействие. При исследовании «Эльбрус-2» было видно, что динамическое планирование и плохая предсказуемость иной раз становились непре¬ одолимым препятствием при попытках получения пре¬ дельной скорости исполнения критических участков за¬ дач. Как отмечалось выше, одна из причин введения дина¬ мического управления — это обеспечение параллельного исполнения программы, изложенной программистом последовательно. При динамическом управлении аппара¬ тура фактически исполняет программу не в той последо¬ вательности, в которой она записана, при этом обеспе¬ чивая семантическую эквивалентность исходной про¬ грамме. Таким образом, теряется простота управления, характеризующая первые ЭВМ. Если в команде явно присутствует параллельность, как это имеет место в ар¬ хитектуре FPS, то исчезает одна из основных причин появления динамического планирования — введение не¬ явной параллельности. Следовательно, можно вернуться к простоте систем, работавших «в реальном масштабе времени», когда последовательность выполнения опера¬ ций соответствует изложенной в программе, и при этом получить высокую скорость счета. На первый взгляд, при динамическом управлении легче справиться с динами¬ кой, возникающей в результате условных передач управ¬ ления. Однако при этом следует иметь в виду, что при наличии условных ветвей значительно затрудняется «про¬ смотр вперед», что снижает эффект динамического пла¬ нирования. Таким образом, излагаемый подход, реали¬ зованный в машинах фирмы FPS, делает планирование 28
Рис. 1.1. Схема информа¬ ционной системы без учета языков высокого уровня Алгоритм Рис. 1.2. Схема информа¬ ционной системы, включаю¬ щая языки высокого уровня -Программист -Схемы машины Аппаратура Алгоритм Аппаратура статическим, т. е. делает его задачей программиста или транслятора. Теперь становится еще более понятным, почему на машинах фирмы FPS практически невозможно программировать в ассемблере. Тем не менее все это при¬ водит к высокой производительности и экономичности использования оборудования. Несколько менее последовательно, но тем не менее вполне определенно, принцип управления каждым тактом реализован и в машинах фирмы Cray Research и RISC- архитектурах (в последовательном варианте без исполь¬ зования явного распараллеливания). В этом можно убедиться, пролистав систему команд ЭВМ Сгау-1. В ней для каждой команды приводится точная информация, выраженная в машинных тактах, в какой момент времени операция запускается по отноше¬ нию к процессу исполнения предыдущей, сколько времени выполняется при всех встречающихся вариантах опе¬ рандов и модификациях команды, условия запуска, бло¬ кировки и т. д. 29 Система команд Языки высокого, уровня Система команд. Схемы машины Транслятор Программист Програм-. мист
Все это дает возможность в процессе трансляции или написания программы на ассемблере точно промоделиро¬ вать работу машины и выбрать наиболее быстро рабо¬ тающий вариант программы. В настоящее время истин¬ ным является то, что машины, в которых не реализован принцип управления каждым тактом, оказываются не конкурентоспособными. Если посмотреть на получа¬ ющуюся в результате приведенных рассуждений систему команд, то она, по существу, представляет собой пе¬ реход к микропрограммному управлению. В этом смысле интересно проследить историю микро¬ программирования. Информационная система условно изображена на рис. 1.1. Алгоритм записывается програм¬ мистом с помощью системы команд, реализуемой логи¬ ческими схемами в аппаратуре машины. Неудобство программирования в ассемблере привело к изобретению языков высокого уровня. Структура информационной системы видоизменилась (рис. 1.2). Программист излагает алгоритм либо на ассемблере, представляя его в терминах системы команд, либо на языке высокого уровня, который затем транслятором пе¬ реводится на язык системы команд. А эта система ко¬ манд, как и прежде, с помощью логических схем реа¬ лизуется в аппаратуре машин. Для упрощения логических схем машин изобрели мик¬ ропрограммирование. Структура теперь стала совсем сложной (рис. 1.3). Она отличается от предыдущей тем, что система команд реализуется в аппаратуре косвен- Алгоритм Рис. 1.3. Схема информационной системы, вклю¬ чающая микропрограммирование 30 Язык высокого уровня Программист Программист -Транслятор -Микропрограммы -Схемы машины Система команд Система микро-. команд Аппаратура
но — с помощью более элементарного языка микропро¬ грамм пишется интерпретатор системы команд. А в ап¬ паратуре реализуется лишь более простой язык микро¬ программ. В целом структура получилась весьма сложной, при¬ водящей к низкой эффективности. При переходе с уровня на уровень теряется эффективность. Это было хорошо осознано и начались поиски выхода из создавшегося по¬ ложения. Полученную картину можно представить следующим образом. Программисты «отгородились» от неудобной системы команд языками высокого уровня, а инженеры «отгородились» от столь же неудобной, с их точки зре¬ ния, оис^мы команд микропрограммами. Напрашивается простое решение — убрать систему команд и транслиро¬ вать язык высокого уровня прямо в микропрограммы. Однако этого сделать до сих пор было нельзя, так как программисты недостаточно надежно «отгородились» от системы команд. Остался достаточно распространенный в случае сложного программирования системных и логи¬ ческих задач ассемблерный путь — от алгорит¬ мов непосредственно в систему команд, изображенный на приведенных рисунках. Именно этот путь был убран в ре¬ зультате исключения ассемблерного программирования в проекте «Эльбрус». Структура системы «Эльбрус» приве¬ дена на рис. 1.4. Как отмечалось выше, преимущество подхода, связан¬ ного с исключением ассемблерного программирования, заключается в том, что систему команд можно менять от модели к модели. Аналогично системе «Эльбрус» (но, разумеется, независимо от нее) в RISC-архитек¬ турах отказались от микропрограммирования для ма¬ шин средней и малой производительности. То же можно сказать практически про все суперЭВМ, включая маши¬ ны типа Сгау-1, где по соображениям эффективности микропрограммирование не применяется. Однако из-за наличия ассемблера во всех этих машинах система ко¬ манд должна быть достаточно удобной для программиро¬ вания (в частности, не вводится параллельное програм¬ мирование на микроуровнях). Проблему упрощения структуры системы с учетом эффективности фирма FPS решила иначе. Ее схема (рис. 1.5) существенно отличается от всех предыдущих тем, что в ней вообще отсутствует система команд, ее функции выполняет непосредственно микропрограмма. 31
Алгоритм Язык высокого_ уровня Система команд- Р и с. 1.4. Схема информационной системы «Эль¬ брус» Алгоритм Рис. 1.5. Схема информационной системы фирмы FPS В этой схеме, однако, есть существенный недостаток. Ли¬ ния наиболее эффективной работы соединяет уровень ал¬ горитма непосредственно с уровнем системы микропро¬ граммирования. Однако этот путь, хотя и обеспечивает наивысшую производительность (и именно благодаря ему система получила признание пользователей и большое распространение), соответствует такому неудобному про¬ граммированию, что обычный программист им зани¬ маться не может. Именно поэтому область применения этой системы очень узка и ограничивается теми приложе¬ ниями, которые хорошо соответствуют языку ФОРТРАН 32 Программист Транслятор Схемы машины Аппаратура Программист Транслятор Язык высокого уровня Фирменный программист (только спе¬ циальные функции) Система микро¬ программы Схемы машины Аппаратура
и в которых, более того, пользовательские фортрановские программы, по существу, представляют собой вызовы стандартных функций, написанных системными програм¬ мистами фирмы — производителя ЭВМ. Как уже отмеча¬ лось, отсутствие опыта работы без ассемблера, подоб¬ ного «эльбрусовскому», и разработка машины без учета требований языков высокого уровня не позволили сде¬ лать последний очень важный шаг. 1.6. Перспективные модели многопроцессорных ЭВМ Наиболее совершенной является струк¬ тура вычислительной системы, которая, по существу, объединяет положительные стороны МВК «Эльбрус-1», «Эльбрус-2» и ЭВМ фирмы FPS. Именно по такой струк¬ туре строятся будущие модели МВК «Эльбрус», включая модель «Эльбрус-3» (рис. 1.6). Рассматриваемая схема предполагает проведение раз¬ работки, ориентированной на языки высокого уровня, с использованием накопленного опыта создания системы «Эльбрус», проведение с самого начала значительных работ по оптимизирующему транслятору так, чтобы алго¬ ритм, изложенный на одном из существующих языков высокого уровня, включая ЭЛЬ-76, после трансляции давал высокоэффективные программы фактически на уровне микропрограмм. В этой схеме отсутствует уровень системы команд, он заменен уровнем микрокоманд. Однако это утверж- Алгоритм Рис. 1.6. Схема информационной системы будущих моделей «Эльбрус» 3—675 33 Программист Транслятор Язык высокого уровня Система микро¬ программы Схемы машины Аппаратура
дение надо пояснить. Как видно из изложенного, исполь¬ зование микропрограммирования в машинах в разное время было различным. Идея микропрограммирования имеет свои положительные и отрицательные стороны. Предложенный подход имеет своей целью использование положительных сторон микропрограммирования и ис¬ ключение отрицательных. Микропрограммирование имеет четыре важных свой¬ ства: 1) управление является параллельным; 2) управление происходит в «реальном масштабе вре¬ мени»; 3) управление осуществляется на мелком уровне; 4) управление осуществляется интерпретационно. Первые два .свойства положительные и сохраняются в предлагаемой схеме, вторые два — отрицательные, именно они снижают эффективность и не используются в разрабатываемых моделях. Рассмотрим эти свойства подробнее. Параллельность управления. Обычно в микропрограм¬ мных машинах (имеется в виду горизонтальное микро¬ программирование) используется широкая команда (вплоть до нескольких сотен битов), каждая часть кото¬ рой управляет определенным узлом машины. При этом управление происходит параллельно и одновременно. В МВК «Эльбрус-3» этому соответствует одновременный запуск до семи арифметических устройств и выполнение вместе с тем возможного условного или безусловного пе¬ рехода, а также обращение к общей или локальной памя¬ ти по восьми параллельным каналам, включая необходи¬ мую генерацию адресов. Для указания всех этих дейст¬ вий требуется 288 бит командной информации. Для того чтобы такой большой объем информации уместить в сравнительно небольшой машинной команде, следует опираться на достаточно подробную статистику о прог¬ раммах, работающих на языках высокого уровня. Эта статистика получена в ходе работы над предыдущими моделями МВК «Эльбрус». Управление в «реальном масштабе времени». В отли¬ чие от обычных систем команд при микропрограммирова¬ нии момент выдачи микрокоманды соответствует исполне¬ нию предписаний, указанных в команде. В обычных сис¬ темах команд с динамическим управлением аппаратура меняет последовательность команд, написанных програм¬ мистом, в интересах более рационального распределения 34
ресурсов и, как следствие, более быстрого выполнения программ. Описанные два свойства микропрограммирования — параллельность и управление каждым тактом — это те свойства, которые использованы в МВК «Эльбрус-3». Далее приведем еще два свойства микропрограммиро¬ вания, которые являются отрицательными и исключены в МВК «Эльбрус-3» и других перспективных моделях ЭВМ типа «Эльбрус». Мелкий уровень управления. Обычно в микропрограм¬ мных машинах каждая микрокоманда выполняет очень маленький объем управляющей работы. Например, для выполнения одной арифметической операции требуется несколько микропрограммных команд. Это приводит к не¬ возможности трансляции обычной программы, написан¬ ной на языке высокого уровня, непосредственно в микро¬ программы, так как программа занимала бы недопустимо большой объем памяти. Более рационально было бы оставить за микропро¬ граммным управлением лишь ключевой момент работы машины, а именно — запуск операции. Саму же опера¬ цию реализовать чисто аппаратно, как хорошо сегменти¬ рованный конвейер. При этом, поскольку управление про¬ водилось бы крупными единицами, объем программы, полученной в результате трансляции с языка высокого уровня непосредственно микропрограммы, был бы не¬ большой, сравнимый с объемом, полученным в результате трансляции этой программы в традиционную систему команд. Интерпретационность управления. В обычных микро¬ программных машинах микропрограммы используются лишь для реализации традиционной системы команд, а не для трансляции в них программ пользователя. В против¬ ном случае объем командной памяти был бы слишком велик. Интерпретационность является основной причи¬ ной, приводящей к неэффективности микропрограммиро¬ вания. Как было указано выше, это свойство микропро¬ грамм не используется в разработке МВК «Эльбрус-3». Проведенный анализ состояния развития современной архитектуры позволил вскрыть те важные положительные стороны, которые необходимо использовать и развивать. Отсутствие требования ассемблерной совместимости дает возможность использования современных достиже¬ ний в развитии архитектуры. Основополагающие принципы. Перед более детальным з* 35
описанием архитектуры МВК «Эльбрус-3» приведем кратко основополагающие принципы этого проекта. Принцип первый. Проект основан на полной программной совместимости с существующими МВК «Эльбрус-1», «Эльбрус-2» и с менее производительными, чем МВК «Эльбрус-3», моделями нового поколения. Принцип второй. Как и предыдущие модели, «Эльбрус-3» основан на теговой архитектуре, позволяю¬ щей последовательно проводить динамическую типиза¬ цию данных, а также обеспечивающей высокий уровень программирования и исключение ассемблера. Принцип третий. В модели «Эльбрус-3» получи¬ ла дальнейшее развитие многопроцессорная архитектура, позволяющая повысить производительность комплекса и его структурную надежность. «Эльбрус-3» разраба¬ тывается как 16-процессорный комплекс с большой ло¬ кальной оперативной памятью для каждого процессора (16 М байт) и глобальной общей для всех процессоров (2 Г байт) оперативной памятью. Принцип четвертый. Каждый процессор поз¬ воляет обеспечить высокую производительность на уровне современных суперЭВМ. С этой целью в процессоре ис¬ пользована архитектура с очень длинным командным словом (до 288 бит), обеспечивающая микрораспа¬ раллеливание на уровне операций как при скалярных, так и векторных вычислениях. В каждой команде макси¬ мально запускается семь арифметических операций, ко¬ торые используют в качестве аргументов либо результаты ранее выполненных операций, поступающие непосредст¬ венно с выхода арифметических устройств, либо числа из быстрой регистровой памяти (буфера стека емкостью 1024 слова). В этой же команде предусмотрено: — управление записью результатов в буфер стека (если эта запись необходима); — параллельное выполнение условного или безуслов¬ ного перехода; — параллельное обращение по восьми каналам в локальную и (или) глобальную оперативную память. Принцип пятый. Семь арифметических уст¬ ройств выполнены конвейерными, полностью сегменти¬ рованными, так чтобы обеспечить возможность загрузки каждого устройства каждый такт машины. Принцип шестой. Управление машиной позво¬ ляет контролировать каждый такт, так что большая 36
команда выдается каждый такт в «реальном масштабе времени», т. е. непосредственно запуская устройства без дополнительного динамического аппаратного планирова¬ ния. Это существенно упрощает логические схемы маши¬ ны, значительно повышая долю регулярного оборудова¬ ния ЦП, что крайне важно при переходе на большие интегральные схемы, имея в виду упрощение отладки машины. Принцип седьмой. Значительная часть работы по оптимизации распределения ресурсов возлагается на высокооптимизирующий транслятор, который разраба¬ тывается с учетом большого опыта работы по созданию трансляторов для языка ЭЛЬ-76 и других языков про¬ граммирования высокого уровня на существующих МВК «Эльбрус». Принцип восьмой. Основу эффективной сты¬ ковки и работы быстрого процессора с общей памятью, а также обеспечения высокоэффективной мультипроцес¬ сорности составляет функционально разделенная сверх¬ оперативная память процессора, подобная памяти МВК «Эльбрус-2». Она состоит из буфера команд в 2 тыс. слов (16 страниц по 128 слов); буфера стека в 1 тыс. слов для хранения поколений локальных данных исполняемых процедур; буфера массивов в 512 слов и ассоциативной памяти глобалов в 512 слов. Такая организация сверх¬ оперативной памяти с большим буфером стека и с большим буфером команд в случае скалярных вычис¬ лений позволяет замкнуть их практически полностью на буфере стека. При этом пропускная способность всех восьми каналов доступа в память используется для подкачки кодов процедур, которая, по возможности, заранее заказывается транслятором. Напротив, в слу¬ чае векторных вычислений программный код основного цикла, как правило, умещается в буфере команд и пропускная способность восьми каналов досту¬ па в память используется в основном для обращения к элементам массивов, которое хорошо предсказуемо и выполняется превентивно с помощью оптимизирующего транслятора. Реализация многопроцессорной суперЭВМ. Структур¬ ная схема МВК «Эльбрус-3» приведена на рис. 1.7. Отме¬ тим наиболее важные особенности разработанной архи¬ тектуры, в том числе ее отличие от существующих реали¬ заций машин с управлением каждым тактом, в частности от архитектуры ЭВМ фирмы FPS. 37
Рис. 1.7. Структурная схема «Эльбрус-3»: ООП — устройство общей оперативной памяти; ЦП — центральный процес¬ сор; ПВВ — процессор ввод-вывода, НМД — накопитель на магнитных дис¬ ках, МКТ — модульные комплексы телеобработки; УВВ — устройства ввода вывода В МВК «Эльбрус-3» идеология управления каждым тактом реализована только внутри каждой процедуры, т. е. внутри каждой процедуры транслятором составлено полное расписание по тактам всей работы и переведено в большие команды (или микрокоманды), составляющие код данной процедуры. По характеру программирования на языках высокого уровня процедура является незави¬ симым модулем, который может независимо транслиро¬ ваться и независимо вызываться. Пытаться все работающие процедуры «соптимизиро- вать» в единый программный код, спланированный до такта, было бы нереально, неправильно, немодульно. В частности, это усложнило бы использование машины 38
в системах с внешними прерываниями, с вызовом фор¬ мальных процедур и т. д. Именно так сделано в ЭВМ фирмы FPS, из-за чего, в частности, система ограничена научно-техническими применениями и служит в качестве приставки к универ¬ сальной машине. Разумеется, иногда с целью повышения эффективности используется доступная для оптимизации информация за статическими границами данной процедуры. В част¬ ности, проводится глобальный анализ статически вло¬ женных процедур для упрощения аппаратуры и повыше¬ ния эффективности объектного кода. Кроме того, некоторые небольшие процедуры реализу¬ ются как макроподстановки. Однако это, скорее, исклю¬ чение. Основной единицей, внутри которой осуществляет¬ ся потактовое планирование, является процедура. Между собой с точки зрения планирования процедуры стыкуются динамически. Это означает, что запускаемая процедура начинает работать, вообще говоря, не дожидаясь конца выполнения предшествующих операций запускающей процедуры и записи результатов этих операций в регистры. Тем самым существенно снижаются накладные расходы на запуск процедуры, что очень важно для модульного программирования на языках высокого уровня. Кон¬ фликт по записи результатов операций вызывающей процедуры с чтением операндов вызываемой процедуры обнаруживается динамически аппаратурой. В случае его возникновения один или несколько тактов в вызываемой процедуре пропускается, не нарушая расписания, состав¬ ленного транслятором для нее, и эти такты отдаются для выполнения работы вызывающей процедуры. Процессор спроектирован таким образом, что позволяет это выпол¬ нить. Ввиду того что конфликт по записи — довольно редкое явление, в МВК «Эльбрус-3» обеспечивается вы¬ сокоэффективный запуск процедуры, не нарушающий мо¬ дульности. Вообще говоря, предлагаемый подход представляется разумным в том смысле, что на более мелком, «молеку¬ лярном» уровне внутри процедуры, когда динамические механизмы дорого стоят, используется статическое плани¬ рование, и наоборот, на более крупном межпроцедурном уровне подключаются динамические механизмы. Для поддержки работы процедуры, так же как и в МВК «Эльбрус-2», используются базовые регистры (ди¬ сплей-регистры), поддерживающие статическое окруже¬ 39
ние работающей процедуры. В развитие идей, реализо¬ ванных в МВК «Эльбрус-2», в большей степени поддер¬ жан аппаратно механизм аварийных ситуаций. Важными элементами динамики внутри процедуры яв¬ ляются условные выражения и операторы, особенно часто встречающиеся в скалярных процедурах. Для их эффек¬ тивной реализации в МВК «Эльбрус-3» разработан ре¬ жим условного выполнения, так как в процессе скалярно¬ го вычисления загрузка мощного парка арифметических устройств МВК «Эльбрус-3» предполагается сравнитель¬ но невысокой. Во многих случаях целесообразно, не дожидаясь окончания вычисления условия, параллельно исполнять две альтернативы и более. Такой подход значительно сокращает критические це¬ почки в скалярных процедурах, и следовательно, увели¬ чивает скорость вычисления. В машинах без широкой команды и явного распарал¬ леливания на микроуровне условное выполнение несколь¬ ких альтернатив бессмысленно, так км к каждая ветвь занимает цепи дешифрации команды последовательно, из-за чего условное выполнение не может ускорить вы¬ числения. В результате условного выполнения могут воз¬ никнуть различные аварийные ситуации, которые не дол¬ жны вызывать побочного эффекта до выяснения условия, выбирающего данную альтернативу. Для обеспечения этого в МВК «Эльбрус-3» использу¬ ется наличие тегов. В случае возникновения аварии при выполнении условной операции побочный эффект (на¬ пример, прерывание) не возникает, но операция выдает результат со специальным аварийным тегом. В информа¬ ционной части аварийного результата содержатся необходимые данные для диагностики программной ошибки. Если аварийный результат поступает в без¬ условную операцию, то возникает прерывание. Большого внимания при разработке МВК «Эльбрус-3» потребовала работа с памятью. В соответствии с принципами статического планирова¬ ния из аппаратуры исключены проверка и блокировка при обращении по одинаковым адресам. При динамическом планировании проверки необходи¬ мы, так как аппаратура в целях оптимизации изменяла последовательность выполнения операций и обращений в память. Ограничением перестановки операций является необходимость сохранения исходной последовательности 40
по обращению в одну и ту же ячейку, для чего осуще¬ ствляется проверка совпадения адресов обращения в па¬ мять. В перспективе оптимизационную работу по распарал¬ леливанию и необходимое изменение в последовательно¬ сти обращений в память будет производить транслятор. В большинстве случаев для статически известных имен (а следовательно, и адресов) транслятор обладает всей необходимой информацией и лишь в сравнительно редких случаях, когда при оптимизации необходимо изменить последовательность в обращении по динамически вычи¬ сляемым адресам (к элементам одного и того же массива, формальным параметрам, передаваемым по адресу эле¬ ментам списков) придется принимать специальные про¬ граммные меры. Большого внимания потребовала организация вирту¬ альной памяти. МВК «Эльбрус-3» — одна из немногих суперЭВМ, в которых она реализуется. Задача осложня¬ ется еще и тем, что виртуальную память необходимо обеспечить при параллельном обращении по восьми кана¬ лам. В отличие от таких архитектур, как у ЭВМ фирмы FPS, где полностью статически планируется обращение в память, в МВК «Эльбрус-3» предусматривается возмож¬ ность флуктуаций времени доступа к памяти. Они выз¬ ваны использованием многопроцессорной архитектуры и большим расслоением как локальной, так и общей памя¬ ти. Для того чтобы динамические флуктуации не снижали эффективность статического планирования, разработана техника битов значимости. Каждая ячейка буфера стека и буфера массивов имеет бит значимости, который обну¬ ляется при выдаче адреса считывания числа в данную ячейку буфера из памяти и ставится в 1 по приходе тре¬ буемого числа. В этом случае также не нарушается рас¬ писание работы процессора, составленное транслятором, но лишь в нужные места вставляются пустые такты. Транслятор должен с достаточным опережением вы¬ давать адреса в память, так чтобы пустые такты были редки и не сказывались на быстродействии машины. Это вполне возможно, если вспомнить, что самая необходи¬ мая скалярная информация (около 1000 слов локальных данных работающих процедур) находится в буфере сте¬ ка, а обращение к элементам цикла хорошо организуется заранее превентивной подкачкой. Таким образом, ориентация на языки высокого уровня 41
позволила правильно сбалансировать внутреннюю струк¬ туру процессора. Идеология управления каждым тактом снизила объем нерегулярного оборудования, что крайне важно при реализации машины на БИС. Использование широкой команды и реализация явного распараллелива¬ ния на уровне операций, в том числе при скалярных вы¬ числениях, позволяет получить высокое архитектурное быстродействие. Именно исключение ассемблера и ориентация на языки высокого уровня позволили использовать важные дости¬ жения в развитии мировой вычислительной техники, сохраняя программную совместимость. МВК «Эльбрус-3» выполняется на новой современной элементной базе, БИС типа И300Б со степенью интегра¬ ции около 1,5 тыс. вентилей на кристалл, время такта машины ориентировочно равно 10 не. Таким образом, пиковая производительность одного процессора, имея в виду семь исполнительных устройств, равна 700 млн. результатов арифметическо-логических операций в секун¬ ду, что в 16-процессорной конфигурации приводит к пиковой производительности, превышающей 10 млрд. ре¬ зультатов арифметическо-логических операций в секунду. Для оценки реальной производительности на вектор¬ ных задачах промоделирована работа процессора на представительном наборе векторных примеров, на которых измерялась производительность МВК «Эльбрус-2». На этом наборе быстродействие одного процессора МВК «Эльбрус-3» оказалось в 1 тыс. раз больше быстродей¬ ствия БЭСМ-6. Моделирование работы чисто скалярной процедуры транслятора с языка ЭЛЬ-76 показало про¬ изводительность в 100—120 млн. результатов арифмети¬ ческо-логических операций в секунду. Все это позволяет оценить производительность 16-процессорного МВК «Эльбрус-3» при векторных вычислениях не ниже 5 млрд. оп/с, а при скалярных— 1,5 млрд. оп/с. Важной чертой разработанной архитектуры является ее параметрический характер. Меняя ширину команды, число устройств и тактовую частоту машины, можно получить ряд машин различной производительности, полностью совместимых, что также является важным следствием исключения ассемблера, ориентации на языки высокого уровня. В рамках развития архитектурной линии «Эльбрус» ведется разработка нескольких моделей меньшей про¬ изводительности. 42
ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ 1.1. Что такое тип объекта? 1 2. Обязательно ли переменная должна иметь значения только одного типа^ 1.3. Что такое тег в системе «Эльбрус»? 1.4. Назовите четыре устройства буферной памяти в центральном процессоре МВК «Эльбрус-2». 1.5 Укажите, какие устройства буферной памяти процессора можно не обнулять при операциях синхронизации и почему? 1.6 Предположим, что векторные вычисления занимают 70% времени работы процессора, скалярные вычисления — 30 %. Во сколько раз удастся поднять быстродействие за счет предельно быстрой реализации только векторных вычислений? 1.7. Что такое архитектура с очень длинным командным словом? 1.8. Когда лучше статическое (во время трансляции) управление после¬ довательностью вычислений и когда лучше динами¬ ческое (во время исполнения)^
Глава 2 Аппаратные средства 2.1. МВК «Эльбрус-2» Одним из принципиальных моментов раз¬ работки МВК «Эльбрус-2» является создание внутренней машинной организации, позволяющей достичь значитель¬ ного упрощения системы математического обеспечения за счет приближения аппаратных возможностей к нуждам программирования. Система команд и внутренняя структура МВК «Эль¬ брус-2», включающая универсальный стековый механизм, приспособлены для программирования на языках высоко¬ го уровня и позволяют осуществлять эффективную компи¬ ляцию программ в машинный код. Рекурсивное использо¬ вание процедур, работа нескольких пользователей с об¬ щими данными, практически неограниченный объем мате¬ матической памяти, предоставляемый в распоряжение Пользователя, динамическое распределение и защита памяти, разветвленная система прерываний существенно облегчают программирование и повышают производитель¬ ность машины. Высокая производительность МВК «Эльб¬ рус-2» обеспечивается также архитектурными особеннос¬ тями системы, среди которых прежде всего необходимо отметить параллелизм обработки. Параллельная обработка данных реализуется на двух уровнях — параллельных процессов и параллельного вы¬ полнения независимых команд. Первый уровень — это реализация эффективной многопроцессорной системы, второй уровень — обработка команд по принципу поточной линии с максимально возможным совмещением выполнения во времени. Формально многопроцессорность системы «Эльбрус» заключается в том, что модули центральных процессо¬ ров (ЦП) и процессоров ввода-вывода (ПВВ) работают с общей оперативной памятью (ОП) параллельно и неза¬ висимо друг от друга. Однако, такое определение неполно. 44
Многопроцессорность — это не простое механическое объединение нескольких процессоров с общей памятью. Эффективная мультипроцессорная работа обеспечивается доступом в ОП по восьми независимым каналам, систе¬ мой взаимного программного прерывания процессоров для синхронизации параллельной работы, аппаратно-реа¬ лизованными семафорными операциями для синхрониза¬ ции доступа к общим данным, динамическим распределе¬ нием ресурсов, прежде всего памяти, повторной входи- мостью программ, универсальной и совершенной защитой памяти, специальной организацией сверхоперативной бу¬ ферной памяти и др. На рис. 2.1 представлена общая организация МВК. В МВК могут входить от одного до десяти ЦП, от од¬ ного до тридцати двух модулей ОП и от одного до четы¬ рех ПВВ. Каждый модуль ПВВ имеет 40 каналов связи: 8 бы¬ стрых каналов (БК) для магнитных барабанов (НМБ), магнитных дисков (НМД) и 32 стандартных канала (СК) для прочих устройств ввода-вывода. Работа системы с удаленными объектами по линиям связи осуществляется с помощью процессора передачи данных (ППД), который является самостоятельным мо¬ дулем, имеющим собственную систему команд и внутрен¬ нюю память. Каждый из ЦП и ПВВ симметрично связан с каждым из модулей ОП. Через ПВВ к центральной части подклю¬ чается внешняя память, устройства ввода-вывода и про¬ цессоры передачи данных. Обмен данными между опера¬ тивной и внешней памятями инициируется ЦП, но проис¬ ходит независимо от работы ЦП по шинам связи ПВВ. Все компоненты системы работают параллельно и не¬ зависимо друг от друга и динамически распределяются операционной системой между задачами. Конкретная конфигурация комплекса зависит от специфики применения. Модульная структура и органи¬ зация внутренних связей позволяют варьировать состав комплекса и выбирать конфигурацию, соответствующую данному применению. Все модули одного типа полностью идентичны с точки зрения как коммутации, так и энергоснабжения. В случае выхода из строя какого-либо модуля оборудования информация, обрабатываемая в нем, может быть переда¬ на в другой модуль. Это значит, что отказ в каком-либо компоненте обрудования не приводит к выходу из строя 45
НМБ128 НМД128 ППД16 ПМ ЧПк ЧПл Г рп НМБ1 НМД1 ППД1 НМЛ АЦПУ АЦД ГрД пвв 1 пвв 4 ЦП1 ЦП10 КмОП8 КмОП 1 МОД29 МОДЗО МОД31 МОД32 МОД1 МОД2 МОДЗ МОД4
всего комплекса, а только несколько снижает его произ¬ водительность. При соответствующем выборе конфигура¬ ции модулей комплекс функционирует практически непрерывно. Модульный принцип заложен также в систему охлаждения и систему разводки первичного электро¬ питания. Максимальная производительность МВК «Эльбрус-2» составляет 120 млн. оп/с, максимальный объем опера¬ тивной памяти — 16 млн. 72-разрядных слов (144 Мбайт), максимальная пропускная способность каналов ввода- вывода — 120 Мбайт/с. 2.2. Центральный процессор Центральный процессор МВК «Эльбрус - 2» — универсальное вычислительное устройство, предна¬ значенное для решения широкого класса научно-техниче¬ ских и информационно-логических задач. В состав центрального процессора входят устройство управления (УУ), арифметическое устройство (АУ) и сверхоператив¬ ное запоминающее устройство (СОЗУ). Центральный процессор обеспечивает: 1) эффективную трансляцию и выполнение программ за счет аппаратной реализации наиболее устоявшихся в языках высокого уровня и операционных системах (ОС) форм описания алгоритмов; 2) мультипрограммный режим работы с аппаратной реализацией защиты данных пользователей и ОС и мини¬ мальным временем переключения задач; 3) высокую производительность, основанную как на применении современной интегральной технологии, так и на параллельной структурной организации и глубоком совмещении выполнения команд; 4) эффективную мультипроцессорную работу в вычис¬ лительном комплексе, имеющем до десяти ЦП и до четырех ПВВ; 5) высокую достоверность вычислений и удобство Рис. 2.1. Общая организация ВК: КмОП — коммутатор оперативной памяти; НМЛ — накопитель на магнитной ленте; АЦПУ — алфавитно-цифровое печатающее устройство; АЦД — алфа¬ витно-цифровой дисплей; ГрД — графический дисплей; ПМ — пишущая ма¬ шинка; ЧПк — устройство чтения перфокарт; ЧПл — устройство чтения пер¬ фолент; Грп — графопостроитель
эксплуатации, основанных на развитой системе аппарат¬ ного контроля работы ЦП и аппаратно-программной диагностики. В ЦП принята безадресная система команд как удобная форма трансляции языков высокого уровня в машинный код. Механизм математической памяти снимает необходимость для пользователя распределять ограниченный ресурс оперативного запоминающего уст¬ ройства (ОЗУ). Каждой задаче доступна математическая память размером 232 слов, разбитая на страницы по 512 слов. При выполнении задачи в порядке поступления заявок в физической памяти каждой математической странице выделяется сегмент, соответствующий реально¬ му размеру заявки. При переполнении оперативной памяти ОС пересылает часть физических сегментов во внешнюю память (барабаны, диски) и возвращает обратно по мере необходимости. Для ускорения преобразования математического адреса в физический в аппаратуру ЦП введено ассоциа¬ тивное запоминающее устройство страниц, обеспечиваю¬ щее быстрый перевод математического адреса в физи¬ ческий. В ЦП аппаратно поддержана стековая организация памяти. Стек процедур — область математической памяти, в которой динамически размещаются локальные данные (имена и рабочие .области) процедур задачи. Области стековой памяти отводятся в порядке вращения к процедурам и освобождаются в обратном порядке по мере их выполнения. В начале каждой области стека размещается связующая информация, хранящая динамическую историю запуска процедур и определяющая адресное окружение текущей процедуры в соответствии с блочной структурой программы. Далее размещается область локальных данных процедуры и рабочая область — область промежуточных результатов Доступ в разрешенные области локальных данных процедур осуществляется по математическому адресу. Обраще¬ ние в рабочую область выполняется через вершину стека и только для текущей процедуры. Для ускорения доступа к локальным данным процедур и увеличения компактности программ используются базовые регистры. Базовые регистры содержат дескрип¬ торы областей локальных данных процедур, открытых для доступа. Адрес по стеку задается в программе номером базового регистра и индексом внутри области локальных данных. С помощью базовых регистров выполняется быстрое вычисление абсолютного адреса. Для ускорения доступа к промежуточным результатам введено СОЗУ «стек операндов». Все исполнительные 48
устройства получают операнды и размещают результаты в СтОп. При переполнении СтОп аппаратура обеспечива¬ ет автоматическое освобождение части его путем откачки самых «старых» результатов в оперативную часть стека. При опустошении СтОп производится автоматиче¬ ская подкачка промежуточных результатов из оператив¬ ной части стека в сверхоперативную. Аппаратно реализован механизм процедур, обеспечи¬ вающий автоматическое изменение адресного окружения при процедурных переходах, и механизм передачи параметров процедур (по значению, по имени и т.д.). Адресация оперативной памяти с точностью до бита и специальные операции над наборами битов позволяют эффективно обрабатывать неполноразрядную информа¬ цию (например, в алфавитно-цифровом виде). Аппаратно реализованы функции редактирования алфавитно-цифро¬ вых массивов (сканирование, пересылка, склеивание фрагментов и т. д.). Аппаратура ЦП позволяет различать наиболее распространенные в языках программирования типы данных (целые и вещественные числа, адреса, набо¬ ры битов и т. д.). Для поддержания мультипрограммной работы в аппаратуру ЦП встроены система точного прерывания, обеспечивающая автоматическое сохранение в стеке со¬ стояния прерываемой процедуры, программно устанав¬ ливаемые таймеры (на 1 с) и часы. Аппаратно реализо¬ вана контекстная защита памяти, не позволяющая зада¬ че выйти за пределы отведенных ей областей. Существенное влияние на производительность ЦП оказывает аппаратная реализация основных операций за счет создания специализированных устройств, ориентиро¬ ванных на выполнение групп алгоритмически близких команд. Кроме того, наличие специализированных функ¬ циональных устройств позволяет осуществить одновремен¬ ное выполнение операций внутри процессора, что приво¬ дит к возможности распараллеливания независимых операций. Используемая в ЦП обработка команд по методу поточной линии позволяет одновременно обрабатывать до 14 команд: две команды — в стадии выборки и де¬ шифрации; 12 команд—в исполнительных устройствах. Параллельно с этим может быть выдано до пяти запро¬ сов в память за программным кодом и числовой инфор¬ мацией. Важный вклад в повышение производительности вно¬ 4—675 49
сит включение СОЗУ в структуру ЦП. СОЗУ разбито на ряд блоков для хранения данных, имеющих различ¬ ную динамику старения. Такая организация СОЗУ су¬ щественно повышает его эффективность и снижает кон¬ фликты одновременного доступа из различных узлов процессора. Аппаратура процессора обеспечивает упреждающую выборку программы по одному из направлений ветвле¬ ния и ее выполнение, не дожидаясь вычисления усло¬ вий передачи управления, отмену и переход на другую ветвь в случае неверного предсказания направления ветвления. Это позволяет сократить перерывы в обработ¬ ке команд, вызванные ожиданием результата условных передач управления. Производительность ЦП на смеси Гибсон-3 — 12,5 млн. оп/с (8,3 млн. алгоритмических оп/с по ГОСТ 16325—76). В 1988 г. С. В. Калин измерил производительность ЦП МВК «Эльбрус-2» на 24 ливерморских циклах. Среднее гармоническое зна¬ чение производительности составило 2,7 М флоп/с. Для сравнения аналогичный показатель у процессора Сгау-Х МР — 9,3 М флоп/с (при тактовой частоте, в 5 раз превышающей тактовую частоту МВК «Эльбрус-2»). Система команд ЦП. Центральный процессор МВК «Эльбрус-2» имеет безадресную систему команд, основан¬ ную на Польской Инверсной Записи (ПолИЗ). Прежде чем перейти к описанию системы команд, кратко рас¬ смотрим способ преобразования арифметических выражений исходной программы в последовательность команд считывания, записи и ариф¬ метических операций. Обычное трехадресное представление арифметических операций подразумевает наличие в команде адресов операндов и адреса резуль¬ тата. В этом случае выражение е: = a/(b ^ с — d) можно представить последовательность команд R1 = Сч а R2 = СчЬ R3 = Сч с R2 = R2*R3 R3 = Сч d R2 = R2—R3 R1 = R1/R2 е : = = Зп R1 (где Ri — регистры процессора). 50
Эти команды делятся на два типа — команды, оперирующие с переменными программы, и команды, оперирующие с промежуточны¬ ми результатами. В 1929 г. польский математик Лукашевич предложил форму за¬ писи алгоритмов, отличающуюся от традиционной. В ней появлению операции предшествует появление операндов, каждый из которых мо¬ жет быть результатом предыдущей операции. Так, выражение а + b представляется в виде Сча, СчЬ, -+- Воспользовавшись ПолИЗ, приведенную группу команд (2.1) можно сократить, вычеркнув все ссылки к промежуточным результа¬ там и представив ее в виде Сч а, Сч Ь, Сч с, Сч d, —, /, ПолИЗ предполагает использование стека в качестве памяти операндов; все операнды считываются из вершины стека, а результаты записываются в вершину стека. При этом явного указания адресов операндов и результата в команде не требуется, поэтому система команд, основанная на ПолИЗ, называется безадресной. Форматы данных. Центральный процессор мо¬ жет обрабатывать числовые данные следующей длины: 32 разряда (полслова), 64 разряда (слово), 128 разрядов (двойное слово). Вся управляющая информация имеет словный фор¬ мат. Кроме того, нечисловая информация может быть представлена в виде битовых, цифровых или байтовых наборов. Каждое слово сопровождается 6-разрядным тегом, определяющим его тип. В памяти значения полусловного формата упакованы в одно слово. Операции записи в память и счи- т ы,в ания из памяти. Адреса для команд записи и считывания задаются операндами адресного типа, ко¬ торые формируются на основе контекста пользователя. В этих операндах помимо собственно адреса задается возможный формат считываемого или записываемого значения. Для значений полусловного формата адрес по памяти задается с точносью до полуслова, для бито¬ вых наборов — с точностью до бита. Типизация данных позволила реализовать алгоритмы передачи параметров «по ссылке» и «процедурой». Если результат считывания — адресная информация, то опера¬ ция считывания автоматически повторяется по новому адресу до тех пор, пока не будет считано значение число¬ вого типа; если результат считывания — имя процедуры, то она автоматически запускается и результат ее выпол¬ нения рассматривается как считанное значение (рис. 2.2). Арифметические и логические опе¬ рации. Система команд включает в себя базовый на- 4* 51
Рис. 2.2. Алгоритм операций считывания бор арифметических операций, работающих с операнда¬ ми любого числового типа. Так как существует группа принципиально целочисленных алгоритмов, в систему команд введены арифметические операции, контроли¬ рующие результат на принадлежность классу целых. Для обработки битовых наборов предусмотрено два класса команд: — логические операции (И, ИЛИ, НЕ и т. п.); — операции выделения и вставления полей. Работа с массивами предполагает обработ¬ ку как отдельных элементов массива, так и массива в целом. Для обращения к элементу массива служат опе¬ рации «Вычислить адрес», «Вычислить индекс», «Считать элемент массива». Специальные операции используются 52 Исходный адрес Считывание Прием результата Адрес Тип? Имя процедуры Исполнение процедуры Число Выдача результата
для групповой обработки элементов массива. К ним мож¬ но отнести операции пересылки, сканирования, сравне¬ ния и редактирования. Команды передачи управления соот¬ ветствуют таким конструкциям языков высокого уровня, как безусловный и условный переходы (IF...THEN... ELSE; GO TO; CASE), вызов процедуры, возврат из процедуры и др. Реализация команд процедурных пере¬ ходов подробно описана ниже. Команды внутрикомплексного вза¬ имодействия. Для обеспечения эффективного функ¬ ционирования многопроцессорного комплекса введены операции синхронизации процессов и работы с общими данными. Безадресная форма системы команд, ее полнота и ориентация на базовые конструкции языков высокого уровня позволили, с одной стороны, обеспечить быструю трансляцию программ, с другой, — получить компактный и эффективный код. Аппаратная поддержка языков высокого уровня. Для повышения эффективности вычислений в ЦП «Эль¬ брус-2» аппаратно поддержаны наиболее устоявшиеся конструкции языков высокого уровня. Ниже описаны некоторые, нетипичные для других вычислительных ма¬ шин, аппаратные механизмы. Представление данных. Все типы данных можно разбить на несколько классов: — арифметическо-логический класс, включающий в себя целые словного формата (64 бит), полусловного формата (32 бит), вещественные, а также битовые, цифровые и байтовые наборы; — класс адресов, объединяющий значения, посред¬ ством которых осуществляется адресация к данным (дескриптор, имя) и к объектному коду программы (метки процедур и переходов); — служебный класс, включающий в себя два типа связующей информации для процедур, а также служеб¬ ные списки, используемые операционной системой и ап¬ паратурой для работы с данными и кодом в физической памяти; — класс специальной информации (семафоры) — средства синхронизации при параллельном программи¬ ровании. В МВК «Эльбрус» каждая логическая единица ин¬ формации сопровождается специальным признаком — 53
тегом, который определяет тип и формат. Размер тега — 6 бит. Аппаратное управление алгоритмами обработки дан¬ ных. Данные на входе в исполнительное устройство распознаются при помощи тегов и в соответствии с этим производится динамическая настройка алгоритма об¬ работки — либо преобразуются типы, либо в работу включаются разные блоки устройства. Первым следствием тегирования является умень¬ шение размера программного кода за счет сокращения номенклатуры операций. Несмотря на то что многообразие типов операндов подразумевает определенную совокупность алгоритмов их обработки, достаточно одной разновидности команды данного типа (одко сложение, одно вычитание и т.п.). Сокращение размера программного кода обусловлено еще и тем, что отпадает необходимость в явном задании преобразова¬ ния типов и форматов. В машинах с традиционной ар¬ хитектурой сочетание в арифметических операциях опе¬ рандов разных типов требует явных операций преобра¬ зования типов. Вторым следствием сопровождения тегами данных и кода является сокращение времени и уп¬ рощение процесса трансляции. Транслято¬ ру нет необходимости выполнять семантический анализ исходной программы, эту работу выполняет аппаратура. Повышение уровня динамизма системы. Тегирование данных и кода позволяет использовать такие программы, в которых не требуется статически (т. е. при написании программы) задавать типы обрабатываемых данных. Например, легко реализуются различные способы переда¬ чи параметров без указания спецификаций, поскольку наличие тегов и их автоматический анализ позволяют аппаратуре определить, каким способом поданы парамет¬ ры, и соответствующим образом получить их значения. Контекстная защита. Концепция тегов позволяет осу¬ ществить простую и достаточно надежную защиту дан¬ ных. Область адресации, или адресный контекст рабо¬ тающей процедуры, определяется совокупностью доступ¬ ных ей дексрипторов. Вся адресная информация помече¬ на специальными тегами, которые позволяют выполнять только семантически правильные операции. При этом аппаратура осуществляет контроль за тем, чтобы над адресной информацией не выполнялись дей¬ ствия, которые могут привести к расширению адресного 54
пространства, т. е. к нарушению защиты. Попытка вы¬ полнить запрещенную операцию вызывает соответствую¬ щее прерывание. Контекст может меняться только при процедурных переходах и полностью определяется меткой процедуры. Метка процедуры также является адресной информацией и, следовательно, все действия над ней контролируются аппаратурой, что гарантирует сохранность адресного контекста процедуры. Несмотря на то что работающая процедура имеет в своем контексте метки других про¬ цедур, вообще говоря, с другими контекстами, доступа к этим контекстам она не имеет, так как единственная возможная операция над меткой — это вызов с ее по¬ мощью соответствующей процедуры. Таким образом, аппаратный контроль обработки адрес¬ ной информации исключает возможность обращения за пределы того адресного пространства, которое было выде¬ лено данной процедуре. Семантический контроль вычислений. Поскольку для каждой операции определен допустимый набор данных на входе, можно во время выполнения программы кон¬ тролировать типы входных операндов и сигнализировать соответствующим прерыванием о несоответствии входно¬ го типа данных. Вместе с тем предоставляется возмож¬ ность аппаратного контроля результатов вычислений. Кроме того, теговый механизм позволяет получить на¬ глядное представление структуры данных в памяти в слу¬ чае диагностической распечатки памяти. Обработка элементов массивов в цикле. В МВК «Эльбрус-2» предприняты специаль¬ ные меры для повышения эффективности обработки элементов массивов в циклах. Массивы занимают смежную область памяти. Начало и размер области, а также формат элементов массива и статус обращения описывает дескриптор массива. Элементы массива расположены таким образом, что при¬ ращение индекса по любому из измерений означает «про¬ хождение» по памяти с постоянным шагом. Аппаратно оптимизирована обработка массивов с ко¬ личеством измерений, не превышающим трех. Для таких массивов величины шага по памяти в каждом измерении упаковываются в специальное слово, называемое паспор¬ том массива. Дескриптор и паспорт массива, а также индексы по измерениям являются достаточной информа¬ цией для обращения к элементу массива. 55
При использовании массива в цикле каждое из опи¬ санных в программе обращений, как правило, предпо¬ лагает изменение вычисленных индексов от цикла к цик¬ лу по линейному закону, т. е. «прохождение» по мас¬ сиву с постоянным шагом. Это используется для аппа¬ ратной оптимизации, реализованной в ЦП. В устройстве индексации предусмотрена специальная ассоциативная память (АП), в которой запоминается адрес очередного элемента и шаг по памяти. Ассоциа¬ тивным признаком является имя массива и формула индексирования. В АП может быть помещена информа¬ ция о шести массивах. При первом, отличном от других (по формуле ин¬ дексирования), обращении к массиву по дескриптору, паспорту и начальным значениям индексов вычисляются адрес требуемого элемента и шаг по памяти и заносятся в АП. При последующих обращениях дескриптор и пас¬ порт не требуются, а используется информация из АП. Таким образом, для шести массивов время вычисления адреса элемента в цикле составляет 1 такт. Кроме того, предусмотрен механизм автоматической предварительной подкачки элементов массивов из опе¬ ративной памяти в ассоциативное ЗУ массивов с време¬ нем доступа 3 такта. При этом темп подкачки данных, как правило, превышает темп использования. Описанные механизмы в сочетании с принятой в ЦП поточной организацией позволяют обрабатывать массивы в цикле с высокой эффективностью, несмотря на скалярную форму обращения. Аппаратная поддержка процедурно¬ го механизма. Процедура — фундаментальное по¬ нятие языка высокого уровня. Основными атрибутами процедуры являются программный код и контекст, оп¬ ределяющий области доступных данных. При процедурном переходе необходимо выполнить следующие действия: — вызов кода; — определение нового контекста; — выделение области памяти для локальных данных процедуры при входе (уничтожение области локальных данных при возврате из процедуры); — передача параметров в новую область локальных данных (передача результатов процедурой-функцией при ее завершении); — при вызове процедуры — сохранение информации 56
Связующая информа¬ ция Промежуточные ' результаты Область локальных данных Рис. 2.3. Структура активаций ПРОЦЕДУРА А ( ) -НАЧАЛО -ПРОЦЕДУРА В() -НАЧАЛО -ПРОЦЕДУРА С ( ) -НАЧАЛО % ОПИСАНИЕ ПРОЦЕДУРЫ А % ОПИСАНИЕ ПРОЦЕДУРЫ В % ОПИСАНИЕ ПРОЦЕДУРЫ С D ( ) % ВЫЗОВ ПРОЦЕДУРЫ D ИЗ ПРОЦЕДУРЫ С -КОНЕЦ -ПРОЦЕДУРА D( ) -НАЧАЛО % ПРОЦЕДУРЫ С % ОПИСАНИЕ ПРОЦЕДУРЫ D - КОНЕЦ С ( ) % ПРОЦЕДУРЫ D % ВЫЗОВ ПРОЦЕДУРЫ С ИЗ ПРОЦЕДУРЫ В - КОНЕЦ В ( ) % ПРОЦЕДУРЫ В % ВЫЗОВ ПРОЦЕДУРЫ В ИЗ ПРОЦЕДУРЫ А -КОНЕЦ % ПРОЦЕДУРЫ А и с. 2.4. Программа «Пример> УСВ МкС
о запустившей процедуре и точке запуска для возврата в нее. Области памяти (активации) отводятся процедурам в стеке в порядке обращения и освобождаются в обрат¬ ном порядке по мере их выполнения. Структура акти¬ вации изображена на рис. 2.3. 58 УСВ МкС УСВ МкС УСВ МкС УСВ МкС Активация процедуры D Активация ‘ процедуры С Активация процедуры В Активация процедуры А Статическая цепочка Рис. 2.5. Структура стека процедур
Связующая информация занимает два слова. В первом — мар¬ кере стека (МкС) — содержится либо информация об области ло¬ кальных данных (ОЛД) охватывающей процедуры (для языков с блочной структурой), либо указатель на массив дескрипторов, описы¬ вающих COMMON-области (для языков типа ФОРТРАН). Во вто¬ ром — управляющем слове возврата (УСВ) — сохраняется информа¬ ция, необходимая для возврата в запустившую процедуру. Структура стека процедур, возникшая в процессе исполнения программы ПРИМЕР (рис. 2.4), изображена на рис. 2.5. Маркер стека каждой процедуры указывает на начало ОЛД охватывающей процедуры, т. е. на следующий МкС; совокупность маркеров стека, вложенных по программе процедур, образует список (статическую цепочку). На рис. 2.5 видно, что в соответствии с вло¬ женностью процедур в программе ПРИМЕР, МкС процедуры D ука¬ зывает на МкС процедуры В, а тот, в свою очередь, на МкС процеду¬ ры А. Аналогичная цепочка выстраивается от процедуры С. Совокуп¬ ность элементов статической цепочки определяет доступные процедуре области данных (контекст, адресное окружение). Организация доступа к программному коду. Область памяти, где расположен сегмент кода (программный сегмент), описывается дескриптором; дескрипторы про¬ граммных сегментов (ДПСО—ДПСЫ) всех процедур одной задачи упакованы в массив «словарь дескрипто¬ ров», называемый также словарем сегментов; адрес на¬ чала массива хранится на специальном регистре «база словаря» (рис. 2.6). Рис. 2.6. Схема доступа к программному коду 59 Словарь сегментов ДПСМ Сегмент кода ДПС! ДПС1 ДПСО База словаря Номер сегмента^
Каждой процедуре программы соответствует индекс (номер сегмента) по словарю процедур. Таким образом, исходной информацией для вызова программного сегмен¬ та являются база словаря и номер сегмента. Алгоритмы основных вариантов процедурных перехо¬ дов (вызов процедуры, возврат из процедуры, смена процесса и др.) в ЦП МВК «Эльбрус-2» реализованы аппаратно. Два из них кратко описаны ниже. Вызов процедуры. Алгоритм вызова процедуры реализуют две команды: «Маркировка стека> и «Вход>. Первая команда предназна¬ чена для выделения памяти под локальные данные новой процедуры и сохранения информации об области локальных данных запускаю¬ щей процедуры. Вторая команда предназначена для завершения фор¬ мирования информации, необходимой для возврата в запустившую процедуру, осуществления подкачки программного кода, формирова¬ ния контекста новой процедуры и передачи ей управления. Исходная информация о вызываемой процедуре задается двумя способами: либо в метке — указателе, описывающем код и контекст процедуры, либо в литеральной части команды. Второй способ яв¬ ляется оптимизацией первого для случая, когда имя вызываемой процедуры известно во время трансляции. По базе словаря, заранее сформированной ОС, и номеру сегмента подкачивается код в соответствии с рис. 2.6. При выполнении входа в процедуру установление нового кон¬ текста заключается в дублировании соответствующих элементов ста¬ тической цепочки на специальные базовые регистры ЦП. Первый элемент цепочки задается в метке процедуры. Часто новый контекст отличается от старого только областью локальных данных запускае¬ мой процедуры (в программе ПРИМЕР — вызов процедур В, С) При этом изменение контекста сводится к перезагрузке одного базового регистра и, следовательно, не требует прохождения по всему списку, что существенно снижает время выполнения алгоритма. Наличие та¬ кой возможности определяется на этапе трансляции и особо указы¬ вается в команде «Вход>. Область памяти под локальные данные выделяется в стеке про¬ цедур командой «Маркировка стека>. Указатель, отмечающий (мар¬ кирующий) начало ОЛД текущей процедуры, настраивается на пер¬ вую свободную ячейку стека, а в управляющем слове возврата фор¬ мируется ссылка на начало ОЛД запускающей процедуры. После это¬ го возможна передача параметров в ОЛД вызываемой процедуры. Перед передачей управления в УСВ записывается информация о запускающей процедуре — ее коде, контексте, статусе и т. п. Возврат из процедуры. На основе связующей информации про¬ изводится восстановление адресного окружения и обращение за про¬ граммным кодом «старой> процедуры. Результаты процедуры-функции передаются в запустившую про¬ цедуру через регистры стека операндов. Область локальных данных покидаемой процедуры вычеркивается из стека процедур. Указатель, отмечающий начало ОЛД текущей процедуры, перемещается на нача¬ ло ОЛД процедуры, в которую происходит возврат. Аппаратная поддержка обработки нечисловой информации. В ЦП «Эльбрус-2» 60
аппаратно реализован базовый набор операций для эффективной обработки нечисловой информации. Эти операции можно подразделить на несколько групп. Операции поиска. Типичным методом обработки ком¬ мерческой информации является выделение необходимых компонентов из больших массивов на основе заданных признаков. Операции поиска реализуют эту функцию: результатом является указатель на элемент массива, удовлетворяющий заданному условию сравнения с этало¬ ном. Операции этой группы применимы как к массивам, так и к спискам, что облегчает обработку баз данных и других структур, имеющих списковую организацию. Операции пересылки. Помимо «обычного» перемеще¬ ния массивов данных в оперативной памяти, в ЦП «Эль¬ брус-2» возможна так называемая «условная» пересылка. Очередной элемент массива проверяется на выполнение заданного условия сравнения с эталоном (больше, рав¬ но и т. п.), при нарушении условия пересылка элементов прекращается. Операции редактирования. Для работы с тексто¬ выми файлами (создание, модификация и т. п.) выделен особый набор операций, позволяющий выполнять такие функции, как удаление, включение, замена, копирова¬ ние и другие действия над символами. Это облегчает написание текстовых редакторов и повышает их эффек¬ тивность. Функциональный набор операций обработки нечисло¬ вой информации включает в себя также аппаратно реали¬ зованные алгоритмы упаковки, распаковки, сканирова¬ ния, сравнения массивов и др. Структура ЦП. На рис. 2.7 представлена структурная схема ЦП, в состав которого входят: — устройство обмена с оперативной памятью (УООП); — буферная память команд (БК) для согласования темпа дешифрации команд и вызова программы из опе¬ ративной памяти; — устройство управления (УУ); — 10 специализированных исполнительных устройств (ИУ) для выполнения команд; — устройство базовых регистров (БР) для преобра¬ зования относительных адресов в абсолютные; — стек операндов (СтОп) для хранения промежу¬ точных результатов операций; — буферная память (БП). 61
Рис. 2.7. Структурная схема ЦП: СВ — схема выборки, СтОп — стек операндов УООП БП СтОп ЛОГ ПР ВО ЗП УОС пп ИНД УУ БР БК СВ
Конструктивно ЦП состоит из трех функционально законченных шкафов, каждый из них содержит шесть панелей, с помощью которых производится коммутация 240 ячеек. В ЦП используется глубокое совмещение выполнения команд по методу последовательно-параллельной поточ¬ ной линии. Последовательная часть поточной линии включает в себя вызов командных слов, распаковку и дешифрацию команд, преобразование команд из внешнего безадрес¬ ного представления во внутренний регистровый формат. Оставшаяся часть поточной линии представляется па¬ раллельными ветвями, ориентированными на выполнение групп алгоритмически близких команд. Каждая ветвь реализована в виде автономного блока — исполнитель¬ ного устройства с развитым внутренним управлением. Сверхоперативное запоминающее устройство состоит из нескольких специализированных ЗУ: — буфера команд; — стека операндов; — буферной памяти для сокращения времени обра¬ щения к часто используемым адресуемым переменным в стеке; — базовых регистров; — ассоциативного запоминающего устройства стра¬ ниц, для быстрого преобразования математических ад¬ ресов в физические. Блоки ЦП. Здесь описываются функциональное на¬ значение и некоторые характеристики наиболее сущест¬ венных блоков центрального процессора, что позволяет получить более детальное представление о структуре ма¬ шины. Командный блок обеспечивает непрерывность потока команд на дешифрацию, для чего осуществляет вызов командных слов из оперативной памяти, создает необходимый запас этих слов, а также выполняет их распаковку. Сверхоперативная буферная память команд позволяет хранить большой объем ранее вызванной ин¬ формации на случай ее повторного использования. Уп¬ равление командным блоком обеспечивает выполнение команд передачи управления и организацию циклических программ, при этом перерывы в дешифрации команд, связанные с переходом, организующим цикл, отсутст¬ вуют. 63
Основу командного блока составляет ассоциативная буферная память команд (БК) секторного типа объемом 512 слов. БК позволяет организовать хранение 32 командных сегментов. Сектор буферной па¬ мяти в 16 слов выделяется перед его непосредственным использо¬ ванием, а расположение в БК не зависит от места командного сег¬ мента в ОЗУ. Подкачка информации в БК из оперативной памяти производится блоками по четыре слова. Командные слова считываются на две пары регистров дешифрируемых команд (РДК). Одна пара РДК служит для создания запаса команд на линейном участке про¬ граммы, а другая — в направлении предполагаемого вет¬ вления. Объем РДК и скорость считывания из БПК обес¬ печивают максимальный темп дешифрации в две коман¬ ды за такт. Ветвления внутрь БПК и повторное использование ранее вызванных процедур происходят без обращения в УООП, что является мощным фактором увеличения реального быстродействия ЦП. Устройство управления выполняет следую¬ щие функции: — преобразует команду из внешнего безадресного представления во внутренний регистровый формат. По¬ лем операндов является сверхоперативное запоминаю¬ щее устройство — стек операндов; — управляет распределением ячеек памяти стека опе¬ рандов в потоке параллельно выполняемых команд; — распределяет команды по исполнительным устрой¬ ствам; — считывает операнды в исполнительные устройства из стека операндов; — выполняет первичные обращения в буферную па¬ мять для команд, в коде которых содержатся адреса; — обеспечивает хранение информации о последова¬ тельности дешифрации параллельно выполняемых в ЦП команд; — обеспечивает восстановление состояния ЦП при прерываниях и отменах условной ветви выполнения про¬ граммы. Темп обработки команд в устройстве управления может колебаться от двух команд за 1 такт до одной команды за 3 такта. С максимальным темпом обраба¬ тываются наиболее распространенные сочетания команд: «считать величину» и арифметическая команда; «загрузить адрес» и «взять элемент массива»; «загрузить адрес» и «записать». 64
Устройство базовых регистров предназна¬ чено для преобразования относительных адресов из ко¬ мандного потока в абсолютные (математические или фи¬ зические) . Устройство содержит 32 базовых регистра, каждый из которых описывает определенную область памяти, т. е. содержит начальный адрес области, ее размер и не¬ которую информацию, определяющую способ обращения в эту область. Занесение дескрипторов в БР выполняет ИУ подпрограмм при командах процедурных пере¬ ходов. Относительный адрес в команде представляется в виде адресной пары — номера базового регистра и ин¬ декса (смещение относительно начального адреса об¬ ласти). Преобразование осуществляется суммированием начального адреса с индексом. Одновременно проверяет¬ ся, не превышает ли индекс размера заданной базовым регистром области памяти. Результатом преобразования является указатель на начинающуюся с вычисленного адреса часть области па¬ мяти, описанной в базовом регистре. Стек операндов является сверхоперативным за¬ поминающим устройством, предназначенным для ускоре¬ ния доступа к данным, размещаемым в вершине стека. Стековую дисциплину назначения, использования и ос¬ вобождения ячеек операндов поддерживает устройство управления. По методу доступа стек операндов — обычная прямо¬ адресуемая память на 32 двойных слова. Доступ в стек операндов выполняется от восьми абонентов на основе приоритетной схемы. Устройство управления обращается в стек операндов по записи при выполнении команд ли¬ теральной загрузки и по считыванию при выдаче команд в исполнительные устройства, остальные абонен¬ ты (исполнительные устройства и буферная память) — только по записи. Запись и считывание информации занимают 1 такт. Буферная память данных — сверхоперативное полупроводниковое запоминающее устройство объемом 1536 слов по 70 разрядов. Быстродействие БП соответствует быстродействию процессора. Запросы в устройство БП могут поступать с тактовой частотой процессора. В буферной памяти хранится новая активно исполь¬ зуемая информация. При отсутствии в буферной памяти 5—675 65
запрашиваемых данных организуется заявка в опера¬ тивную память. Из оперативной памяти считывается и помещается в БП блок из четырех слов, в котором содержится необходимая информация. В устройстве БП также остается ассоциативный признак — математичес¬ кий адрес блока. Буферная память данных включает устройства трех видов: ЗУ стекового типа — буфер стека объемом 256 слов; ассоциативное ЗУ (АЗУ) глобальных данных объ¬ емом 1024 слова и АЗУ массивов объемом 256 слов. Каждое из устройств ориентировано на работу с данны¬ ми определенного типа, имеющими свою динамику ис¬ пользования и соответственно старения. Буфер стека (БС) предназначен для хранения активаций пос¬ ледних (в порядке запуска) процедур. Целесообразность выделения для этого специального блока БП обусловлена тем, что область дан¬ ных, создаваемая каждой процедурой, является локальным объектом, время жизни которого не превышает времени выполнения соответст¬ вующей процедуры. Информация, заносимая в БС, не копируется в ОП, специальный указатель отмечает границу между областями стека процедур, расположенными в БС и ОП. Аппаратно БС реализован по принципу «барабана», при переполнении БС часть данных пере писывается в ОП, а указатель границы сдвигается. АЗУ глобалов (АЗУГ) предназначено для хранения и быстрого доступа к часто используемым глобальным переменным, не попавшим в границы БС. Схема старения обеспечивает сохранение в АЗУГ наи¬ более часто используемой информации и замещение самой «старой». АЗУ массивов (АЗУМ) ориентировано на работу с данными, ор¬ ганизованными в виде массивов, последовательность поступления ко¬ торых, как правило, известна заранее, а использование в большинстве случаев однократно. Занесение в АЗУМ данных из ОП выполняется параллельно с поиском и считыванием хранящейся информации, что позволяет организовать подкачку элементов массивов впрок. В качестве ассоциативного признака в АЗУГ и АЗУМ использу¬ ется математический адрес требуемой информации. В устройстве БП предусмотрено параллельное выпол¬ нение ряда операций. При обращении в ОП и поступле¬ нии данных из нее прием новых заявок и их выполнение не прекращаются. БП обрабатывает заявки по конвейер¬ ному принципу. Длина конвейера — 3 ступени, темп об¬ работки — 1 заявка за такт. Соответствие математической и физической страниц памяти определяется таблицей страниц, организованной в виде списка. Для ускорения преобразования матема¬ тического адреса в физический в ЦП предусмотрено АЗУ страниц (АЗУС), в котором сохраняются элементы таб¬ лицы для наиболее «активных» страниц. Объем АЗУС — 64 строки. Ассоциативным признаком является номер 66
математической страницы, закодированный в матема¬ тическом адресе заявки. В ответной части расположены физический адрес начала страницы, ее размер, а также некоторые служебные признаки. Темп обработки в АЗУС — 1 заявка за такт, время преобразования (при наличии элемента таблицы страниц в АЗУС) —3 такта. Отсутствие требуемой страницы в АЗУС приводит к ав¬ томатическому поиску по таблице страниц и занесению соответствующего элемента в АЗУС. И сполнительное устройство сложения предназначено для выполнения операций сложения, от¬ ношения и преобразования типов и форматов над целыми и вещественными числами. Время выполнения опера¬ ций над целыми числами составляет 2—3 такта, над ве¬ щественными — 3—5 тактов. Устройство обеспечивает ав¬ томатическое изменение алгоритмов выполнения опера¬ ций при использовании разноформатных и разнотипных операндов. Выполнение операций над вещественными числами формата Ф128 требует трехкратного сложения — сло¬ жения младших разрядов, сложения старших разрядов с учетом переноса из младших разрядов, повторного сложения младших разрядов с учетом переноса из старших разрядов. Устройство обрабатывает команды по методу поточной линии с четырьмя станциями хранения. Назначение входной станции — прием команды и ее хра¬ нение до тех пор, пока не будет получен комплект опе¬ рандов, необходимых для выполнения операции. Входная станция сдвоена, т. е. может хранить две команды. Операнды могут поступать из СтОп, буферной памяти, устройства умножения и с выхода самого ИУ сложения. Команда, первой набравшая комплект операндов, вы¬ дает заявку в схему управления для обеспечения даль¬ нейшего продвижения команды. Исполнительное устройство умножения выполняет операции арифметического умножения, умно¬ жения с двойной точностью и целочисленного умноже¬ ния. Первые две операции выполняются над целыми и вещественными числами, третья — только над целыми. В основу алгоритма умножения положена быстрая схема умножения, использующая пирамиду сумматоров и позволяющая за одну итерацию произвести умноже¬ ние на 28 разрядов множителя. Время выполнения од¬ ной итерации равно 2 тактам. Время умножения целых чисел до 28 разрядов равно 5* 67
3 тактам; больше 28 разрядов, но меньше 56 разрядов,— 5 тактам; больше 56 разрядов — 7 тактам. Умножение вещественных чисел формата Ф32 составляет 3 такта, формата Ф64 — 5 тактов. ИУ умножения может получать операнды из стека, буферной памяти, ИУ сложения и с выхода самого ИУ умножения. Входная станция, первой набравшая комп¬ лект операндов, выдает заявку в схему управления, обеспечивающую выполнение операции в устройстве. Исполнительное устройство деления предназначено для выполнения операций арифметическо¬ го деления, целочисленного деления и остатка от деле¬ ния целых и вещественных чисел. Арифметическое деле¬ ние выполняется над вещественными и целыми числами любого формата, результат операции — вещественный. Операнды и результат целочисленного деления принад¬ лежат классу целых. Исполнительное устройство деления выполняет деле¬ ние по методу без восстановления остатка с определе¬ нием за одну итерацию трех цифр частного. Арифмети¬ ческое деление вещественных чисел формата Ф32 зани¬ мает 12 тактов, вещественных чисел формата Ф64 — 23 такта. Целочисленное деление в зависимости от числа зна¬ чащих цифр частного занимает 6 — 24 такта. Входная станция предназначена для хранения одной команды и накопления ее операндов. На входную стан¬ цию операнды принимаются из стека операндов. Исполнительное устройство логичес¬ кой обработки (ЛОГ) предназначено для выполне¬ ния логических операций, операций над наборами и опе¬ раций преобразования типов. Основное содержание операций над наборами — вы¬ деление или вставление поля произвольной длины (в пре¬ делах слова). В операциях преобразования типов производится за¬ мена тега исходного операнда в соответствии с кодом операции без изменения информационных разрядов. Устройство обрабатывает команды по методу поточ¬ ной линии с двумя станциями хранения — входной и вы¬ ходной. Устройство получает данные из стека и буфер¬ ной памяти, а также с выхода ИУ логической обработки и из устройства управления. На выходную станцию ре¬ зультат поступает спустя 2 такта для всех операций устройства. 68
И сполнительное устройство десятичных преобразований (ПР) выполняет две операции — преобразование числа из десятичного представления в битовый набор и преобразование из битового набора в десятичное представление. Обе операции выполняют¬ ся в устройстве за 34 такта. ИУ десятичных преобразований получает операнд из стека; оно не имеет собственного выхода в стек и ис¬ пользует шину ИУ деления. Исполнительное устройство вызова и записи операндов (УВЗ) объединяет два автоном¬ ных устройства: устройство вызова операндов в стек (ВО) и записи операндов в оперативную память (ЗП), каждое из которых выполняет свой набор команд. Кроме того, УВЗ принимает участие в выполнении еще ряда команд совместно с исполнительными устройствами ин¬ дексации (УИНД) и обработки строк (УОС). Устройство вызова операндов выполняет операции за¬ грузки в стек информации, адрес которой принимается из устройства управления (при этом первичное обраще¬ ние в память осуществляет устройство управления, а устройство ВО делает вторичные запросы, если вызван¬ ная величина оказалась адресным словом или старшей половиной слова удвоенной точности) или из стека. Устройство записи выполняет операции записи с пре¬ образованием записываемой информации в соответствии с кодом операции, типом и форматом записываемой величины. Устройство ВЗ принимает также исходные операнды для команд устройства ИНД; кроме того, совместно с ИНД УВЗ выполняет операции, связанные с адресаци¬ ей к элементам массивов. Прием операндов и команд в УВЗ выполняется на буферные регистры из устройств УУ, ИНД, БП и стека. Исполнительное устройство обработки строк (УОС) предназначено для выполнения опера¬ ций над символьной (алфавитно-цифровой), цифровой и битовой информацией, перемещения массивов в памяти, поиска информации по заданным признакам, сравнения массивов. Устройство выполняет операции: — пересылки и рассылки элементов массивов без¬ условно; — пересылки элементов массивов с проверкой задан¬ ного отношения; 69
— пересылки элементов с преобразованием и редак¬ тированием; — сканирования массивов на сравнение с заданными признаками; — упаковки и распаковки алфавитно-цифровой ин¬ формации. Основное содержание операций — поэлементное пере¬ мещение массива источника в массив стока (назначе¬ ния) с анализом перемещаемой информации, пропуском или добавлением части элементов из командного потока или специальной таблицы редактирования. Операции вы¬ полняются методом поэлементной упаковки в очередном слове массива стока элементов из очередного слова массива источника. Во всех операциях обработки массивов схема ана¬ лиза размеров дескрипторов определяет выход за грани¬ цы массивов. Устройство обработки строк не имеет самостоятель¬ ных шин связи с управлением, стеком и памятью и ис¬ пользует УВЗ как буфер. Так, команду и исходные дан¬ ные УОС получает через входную станцию устройства записи и использует весь комплект входных числовых регистров УВЗ при выполнении операций. Устройство обработки строк использует выходную шину УВЗ для обращения в память (вызов и запись слов массивов) и для записи результатов операций в стек операндов. Исполнительное устройство подпро¬ грамм (ПП) участвует в выполнении операций, свя¬ занных со входом в процедуры и возвратом, а также команд перехода. Устройство выполняет команды счи¬ тывания и записи в системе прямоадресуемых регистров процессора, операции откачки и подкачки при регули¬ ровании состояния стека операндов, операции взаимо¬ действия процессоров. Основное содержание операций процедурных перехо¬ дов состоит в формировании управляющих слов (меток, маркера стека и управляющего слова возврата), записи и считывании слов из оперативной памяти, коррекции содержимого базовых регистров в соответствии со свя¬ зующей информацией стека процедур, описывающей теку¬ щую процедурную вложенность, загрузке регистров счет¬ чика команд в командном блоке. Алгоритмы большинства операций устройства под¬ программ заключаются в формировании или модифика¬ 70
ции отдельных полей управляющих слов. Управляющие слова формируются заново или поступают из оператив¬ ной памяти, а затем отсылаются в СтОп, оперативную память или базовые регистры. Большинство прямоадресуемых регистров ЦП разме¬ щено в устройстве подпрограмм. В их число входят регистры, описывающие состояние стека процедур (ука¬ затели вершины, дна, верхней границы, маркера стека текущей процедуры), регистры баз некоторых таблиц ОС, таймер, часы, регистры конфигурации памяти и процессоров, регистры прерываний. Операции с регист¬ рами заключаются в обмене информацией между вер¬ шиной стека и прямоадресуемыми регистрами. Исполнительное устройство индексации выполняет операции индексации, преобразования адрес¬ ных слов, аппаратной организации программных циклов, вычисления индекса и адреса элементов массивов с раз¬ мерностью не более трех. Основное содержание операций индексации — это вычисление адреса элемента массива по заданным дескриптору массива и индексу элемента в массиве. Одновременно с вычислением адреса произво¬ дится проверка того, не превышает ли индекс размера массива, описываемого дескриптором. Время выполнения операций индексации— 1,5 такта. При совместной работе с буфером команд по орга¬ низации программных циклов устройство принимает начальные и предельные значения переменных цикла, осуществляет приращение (±1) текущих значений пере¬ менных цикла и их сравнение с предельными, выра¬ батывая сигнал условия конца цикла. Кроме того, уст¬ ройство позволяет считывать в вершину стека значения текущих переменных цикла. Время выполнения опера¬ ций в устройстве от 1 до 2,5 тактов. Взаимодействие устройств ЦП. Командный блок обес¬ печивает подкачку программы в буферную память команд (БК). Темп подкачки определяется необходимым запасом командных слов в буфере команд и автомати¬ чески регулируется при изменении темпа дешифрации команд. Схема выборки извлекает очередную команду из БК, дешифрирует и передает в УУ для преобразова¬ ния во внутренний регистровый формат. Устройство уп¬ равления, сформировав исполнительное представление команды, выдает ее в соответствующее исполнительное устройство и считывает необходимые операнды из сте¬ ка. Одновременно устройство базовых регистров преоб¬ 71
разует относительные адреса из командного потока в абсолютные адреса на фоне формирования исполнитель¬ ного вида команды в УУ. При выдаче команды УУ ис¬ пользует адрес, полученный в БР, и выдает его в соот¬ ветствующее ИУ для дальнейшего использования. Исполнительное устройство, получив команду и комп¬ лект операндов, выполняет заданную команду и поме¬ щает результат по назначенному адресу в стек операн¬ дов или обращается в БП. Если при обращении в память по считыванию обнаруживается, что ячейка с заданным адресом имеется в буферной памяти, то выборка числа производится из БП, а обращение в оперативную память отменяется. В противном случае делается обращение в оперативную память, вызванное число поступает в на¬ значенный регистр стека операндов и заносится вместе с адресом в БП для возможного повторного использова¬ ния. Запись информации выполняется параллельно в БП и оперативную память. Система внутренней адресации. Все пере¬ дачи адресной и числовой информации сопровождаются в ЦП внутренним адресом источника или потребителя информации. Внутренние адреса присвоены буферу команд, стеку операндов, БП и некоторым входным ре¬ гистрам ИУ. При выдаче команды в ИУ устройство управления формирует внутренние адреса операндов и результата операции. ИУ, получив команду и комплект внутренних адресов, дожидается появления на числовых шинах дан¬ ных с соответствующими внутренними адресами. Если операнд, который, как правило, является результатом одной из предшествующих операций, «готов» к моменту его использования, то УУ считывает его из стека опе¬ рандов. Иначе ИУ обнаружит операнд на числовых шинах в момент его записи в стек. Используемый метод пбзволяет УУ раздавать коман¬ ды в ИУ, не дожидаясь готовности операндов. Следстви¬ ем этого является высокая степень параллелизма в ра¬ боте исполнительных устройств. Ши ны прямой связи. Все команды получают операнды из СтОп и помещают результат в вершину стека. Вершина стека в ЦП представлена СОЗУ стека операндов, который является транзитным буфером при передаче результатов команд в качестве операндов в последующие. В большинстве случаев ИУ получают команды раньше, чем будут сформированы операнды. 72
Для ускорения доставки операндов введены шины пря¬ мой связи. Шина БП—ИУ ускоряет доставку результа¬ тов команд считывания из памяти, используемых в ИУ в качестве операндов. Исполнительные устройства сло¬ жения и умножения охвачены прямой шиной передачи результатов непосредственно на собственные входы. Параллельная обработка. Корректность и эффектив¬ ность вычислений. Параллельная обработка является одним из основных способов повышения производитель¬ ности вычислительных средств. Однако реализация параллельной работы исполнительных устройств ЦП свя¬ зана с определенными трудностями. Во-первых, необхо¬ димо обеспечить эффективное динамическое распреде¬ ление некоторых общих ресурсов процессора. Во-вто¬ рых, параллельная работа ИУ затрудняет идентифика¬ цию точки останова вычислительного процесса и возмож¬ ность его корректного продолжения. Динамическое распределение регист¬ ров. При организации стековой памяти верхние ячейки стека размещаются в сверхоперативной памяти процес¬ сора. Эта часть стека занимает 32 слова удвоенной длины и реализована на триггерных схемах. Остальная часть стека размещается в буфере стека и оперативной памяти. Использование сверхоперативной памяти в качестве верхних ячеек стека обеспечивает быстрый доступ к про¬ межуточным результатам и основывается на методе ди¬ намического распределения регистров. Суть его в сле¬ дующем. Вся сверхоперативная память — 32 регистра удвоенной длины — рассматривается как ресурс свобод¬ ных ячеек, которые назначаются под результат очередной команды и освобождаются после использования в ка¬ честве операндов в последующих командах. Ресурс сво¬ бодных ячеек представляется в виде 32-разрядного ре¬ гистра (вектор свободных регистров), в котором каждой ячейке сверхоперативной памяти соответствует своя по¬ зиция, при этом номер позиции является адресом ячейки. Признаком занятости ячейки является код 1 в соответ¬ ствующей позиции. Поиск свободной ячейки состоит в поиске разряда, содержащего код 0. В случае дешифра¬ ции двух команд за один такт одновременно может про¬ изводиться выборка двух свободных ячеек. После осво¬ бождения ячеек в результате выполнения очередной операции производится установка в 0 соответствующих позиций. 73
Такая организация СтОп обусловлена тем, что объ¬ единение собственно числовых регистров по стековому принципу имеет ряд недостатков. Наиболее существен¬ ный— возможность обращения в стек только через его вершину, что предопределяет принципиально последова¬ тельный алгоритм исполнения программ. Это не позволя¬ ет эффективно использовать парк ИУ. Описанный здесь механизм, при котором стековой дисциплине подчинены не регистры операндов, а их но¬ мера в СОЗУ, и соответственно УУ манипулирует не операндами, а их номерами, позволяет, во-первых, не дожидаться готовности результата предшествующей опе¬ рации для запуска последующей, во-вторых, оптималь¬ ным образом аппаратно распределять ресурс сверхопе¬ ративной памяти при трансляции внешней безадресной системы команд во внутренний регистровый формат. Процесс дешифрации не зависит от реального выполне¬ ния команд в ИУ и может значительно опережать его. При переполнении сверхоперативной части стека про¬ исходит автоматическая откачка информации в буфер стека, при его опустошении — автоматическая подкачка. Управление очередью команд. Наличие специализированных ИУ, работающих параллельно, поз¬ воляет одновременно обрабатывать в процессоре несколь¬ ко команд. Устройство управления последовательно раз¬ дает команды в специализированные ИУ; ИУ, вы¬ полнив операцию, самостоятельно записывает результат в заданную ячейку СтОп. Время выполнения команд в ИУ определяется их типом и колеблется от 2 до 20 тактов для операций над операндами однократной точности и до 30 тактов над операндами удвоенной точности. Таким образом, временная последовательность выполнения ко¬ манд может не совпадать с последовательностью дешиф¬ рации. В некоторых случаях бывает необходимо восстановить заданную программой последовательность команд. На¬ пример, при возникновении прерывания важно идентифи¬ цировать вызвавшую его команду, обеспечить выполне¬ ние всех предыдущих и отмену всех последующих по порядку дешифрации команд; при условных ветвлени¬ ях неверный выбор направления опережающего исполне¬ ния приводит к отмене «ненужных» команд; исполнение операций, изменяющих состояние вычислительного про¬ цесса (записи в память, передачи управления и т.п.), требует безаварийного завершения всех предшествовав¬ 74
ших команд. Возникает задача обеспечения коррект¬ ности вычислений при одновременной параллельной рабо¬ те ИУ. Решению этой задачи служит специальный узел — очередь выполнения команд. Из УУ команды выдаются в последовательности, заданной программой. При дешиф¬ рации они последовательно нумеруются. Номер команды (NK) сопровождает команду по всем станциям поточ¬ ной линии обработки от дешифрации до окончания. Этот номер является адресом по специальной памяти, в кото¬ рой сохраняется информация о состоянии основных ре¬ гистров УУ, достаточная для повторения вычислений. УУ располагает ресурсом в 32 номера (от 0 до 31), после чего номера повторяются. Таким образом, одновременно на стадии исполнения может находиться не более 32 ко¬ манд. Это позволяет в упомянутых ситуациях восстанав¬ ливать естественную последовательность команд перед особой точкой вычислительного процесса (момент преры¬ вания, записи и т. п.) и при необходимости продолжать с нее вычисления. Обработка прерываний. Режим ус¬ ловного выполнения. Контроль корректности вычислительного процесса, организация мультипрограм- ной и мультипроцессорной работы МВК, ликвидация последствий случайных сбоев аппаратуры реализованы через механизм прерываний. В случае возникновения прерывания УУ выполняет следующие действия: — запоминает индекс команды, вызвавшей прерыва¬ ние; — обеспечивает выполнение команд, дешифрирован¬ ных ранее, и отменяет выполнение команд, дешифриро¬ ванных позднее команды, вызвавшей прерывание; — восстанавлизает состояние регистров УУ на мо¬ мент, соответствующий дешифрации команды, вызвавшей прерывание; — инициирует аппаратный вход в процедуру обработ¬ ки прерывания (вход выполняется в ИУ подпрограмм). Отмена выполнения команд используется также при обработке команд условного перехода. Тот факт, что очередной команде под результат всегда назначается свободный в данный момент регистр, а ячейки операн¬ дов освобождаются только при исключении выполненной команды из очереди, позволяет выполнять команды, следующие за командой условного перехода, не ожидая 75
его результата. При этом все команды дешифрирован¬ ные за командой условного перехода, помечаются приз¬ наком условного выполнения. Если условие перехода не выполняется, то выполнение продолжается, как будто команды перехода не было, а признак условного выпол¬ нения гасится на всех станциях ЦП. Если условие перехода выполняется, то команды, помеченные призна¬ ком условного выполнения, отменяются, восстанавливает¬ ся состояние регистров УУ на момент команды перехода и управление передается альтернативной ветви. 2.3. Организация оперативной памяти Подсистема оперативной памяти является важным компонентом структуры многопроцессорной вы¬ числительной системы и оказывает значительное влияние на ее характеристики. Связь центральных процессоров и процессоров ввода-вывода с памятью и между собой, взаимодействие процессоров при параллельной работе, возможные конфликты из-за общих ресурсов системы определяют типы вычислительных систем (сильно- и сла¬ босвязанные, эгалитарные и автократические и т.п.), существенно влияют на производительность, надежность и гибкость МВК. Коммутационное оборудование может составить значительную часть аппаратуры комплекса [15]. Краткий обзор систем коммутации — от схем с общей шиной до многоуровневых коммутационных сетей — с примерами их применения в конкретных ЭВМ приведен в работе Е. Валяха [14]. В МВК «Эльбрус» для связи процессоров с опера¬ тивной памятью применена многопортовая-многошинная схема коммутации с топологией соединений по полному графу (каждый с каждым). Такая схема (см. рис. 2.1) позволяет получить максимальную скорость передачи ин¬ формации и одновременно обеспечивает высокую надеж¬ ность и гибкость системы, так как наилучшим образом соответствует принципу модульности. Недостатками данной схемы являются большое число линий связи и значительный объем коммутационного оборудования, а также то, что максимальная конфигу¬ рация системы ограничена числом портов, имеющихся в коммутаторах процессоров и секций памяти. В связи с этим применение многопортовой-многошин- ной полноперекрестной схемы коммутации оправдано для высокопроизводительных МВК, состоящих из небольшого 76
Рис. 2.8. Структура оперативной памяти числа мощных процессоров и секций памяти большой емкости, каким и является МВК «Эльбрус». Оперативная память МВК «Эльбрус» имеет блочную структуру. Минимальный размер блока — 16 К слов — соответствует объему микросхемы памяти 16 К бит. Блок состоит из 80 микросхем памяти, по одной микросхеме на разряд (слово, хранящееся в памяти, содержит 80 раз¬ рядов, включая контрольные разряды кода Хемминга). Для сокращения числа линий связи, коммутационного и управляющего оборудования блоки объединяются по иерархической схеме. На рис. 2.8 представлена блочная структура оперативной памяти для одного разряда. Сек¬ ции ОП (0—7) размещены в отдельных шкафах и имеют линии связи со всеми процессорами. Модули памяти (0—31) имеют собственное коммутационное и управля¬ ющее оборудование. Группы микросхем имеют собствен¬ ные шины управления и регистровое обрамление. Для повышения пропускной способности памяти применяется распределение последовательных адресов по разным блокам памяти (интерливинг). В МВК «Эльбрус» возможен интерливинг разных уровней: между секциями памяти; между модулями секции; внутри модуля секции памяти. Коммутационное оборудование распределено между 77 Секции ОП Оперативная память МВК Модули ОП Группы микросхем накопителя Микросхемы памяти
процессорами и секциями оперативной памяти и является составной частью ЦП и ОП соответственно. Длина ли¬ ний связи выбрана примерно равной 10 м из условия размещения устройств комплекса. При такой длине связей сигналы передаются от выходного регистра передающей станции до регистра приемника за два такта (« 80 не). По информационной части шин требуется обеспечить передачу сигналов с темпом в одно слово за такт. Для обеспечения надежной передачи применяются парафазные линии связи. В то же вре¬ мя для экономии кабелей в информационных шинах применена двусто¬ ронняя передача сигналов. Таким образом, информационные шины выполнены по двусторонней парафазной схеме. По каждой линии, кроме информации, передается 24-разрядное управляющее слово (адрес и код операции) и около 10 служебных сигналов. Максимальный объем оперативной памяти МВК «Эль- брус-2» составляет 16 млн. слов (144 М байт). Максимальный темп обмена с каждым процессором сос¬ тавляет « 180 М байт/с. Секция оперативной памяти. В максимальной конфи¬ гурации МВК «Эльбрус» содержит десять центральных процессоров, четыре процессора ввода-вывода и восемь секций оперативной памяти (см. рис. 2.1). Секциями памяти МВК «Эльбрус-2» являются устрой¬ ства ЭПП (электронная полупроводниковая память). Устройство ЭПП состоит из четырех модулей памяти и коммутатора (КмОП). Модули функционально незави¬ симы и могут одновременно обмениваться информацией с разными процессорами. В качестве запоминающих элементов в накопителе используются БИС ЗУ565РУЗВ емкостью 16 К бит. Моду¬ ль памяти содержит 512 К 72-разрядных слов. Емкость секции ЭПП — 2 М слов (18 М байт). В модулях памяти реализована групповая обработка, позволяющая за один цикл обращения записать или счи¬ тать четыре слова. Для этого модуль разбит на четыре группы микросхем (см. рис. 2.8), обращения к которым чередуются при последовательном переборе адресов. При групповом обращении все четыре группы запус¬ каются одновременно. Это позволяет получить макси¬ мальный темп обмена с секцией памяти 450 М байт/с. Для повышения темпа обмена и уменьшения среднего времени доступа в ЭПП используется также совмещение операций. Цикл работы модуля составляет 13 тактов, однако последовательные обращения к разным микро¬ схемам одной группы могут обслуживаться каждые семь тактов. 78
[ Регистр конфигурации I Блок Схема приоритета Запросы I 13 : модуля 0-1 —5 временных диаграмм Запросы Г {у3 модуля 3 L —3 МОД 0 модо МОД 1 МОД 2 МОД 3 модз ПТВ канала 0-^ 0 • 1 • 2 ПТВ канала 13-^ 3 КМ ПТВ Управляющее- слово 13- МОД 0 0 МОД 1 • 1 М0Д2 . 2 модз 3 КмУС Регистры УС Канал 0 Парафазные двусюронние информационные • шины Канал 13 КмЗп мод 0 КмЗп мод 3 КмСч мод 0 КмСч мод 3 РЗп РСч Пуск модуля 0 Пуск модуля 3 • УС мод 0 . УС мод 3 Число на запись в мод 0 Число, считанное из мод 3 101 1 121 П Блок коррекции и контроля Рис. 2.9. Схема коммутатора оперативной памяти
Аппаратура коррекции и контроля позволяет исправ¬ лять одиночные и обнаруживать двойные ошибки при считывании информации. Для этого при записи формиру¬ ются и добавляются к 72-разрядному информационному слову восемь разрядов кода Хемминга. Коммутатор оперативной памяти. Коммутатор опера¬ тивной памяти (рис. 2.9) обеспечивает связь четырех модулей секции ОП с четырнадцатью процессорами МВК. Основными частями КмОП являются схема приоритета, блок временных диаграмм (ВРД), коммутатор ПТВ (КмПТВ), коммутатор управляющего слова (КмУС) и коммутатор данных. Коммутатор данных состоит из ком¬ мутатора записи в память (КмЗп) и коммутатора счи¬ тывания (КмСч). Из схемы видно, что каждый из основ¬ ных узлов КмОП представляет собой четыре модульных блока. Благодаря этому возможна одновременная работа всех четырех модулей с разными процессорами. Схема приоритета принимает запросы на обмен и выстраивает очередь в соответствии с временем пос¬ тупления запросов и приоритетом запросчиков. Блок вре¬ менных диаграмм управляет запуском накопителя и от¬ слеживает его занятость. При свободном модуле схема приоритета разрешает прием управляющего слова (19- разрядный адрес обращения и код операции) первого в очереди запроса, запускает блок ВРД и через КмПТВ выдает сигнал подтверждения соответствующему процес¬ сору. Адрес и код операции через КмУС передаются в накопитель, коммутатор данных принимает число для за¬ писи в память или передает число из накопителя в линию связи. При записи числа в память блок коррек¬ ции и контроля формирует и передает в накопитель 8-раз- рядный код Хемминга записываемого числа; при счи¬ тывании — исправляет одиночные ошибки и выдает сиг¬ нал аварии в случае обнаружения двойной ошибки. Кроме обычных операций записи и считывания в ЭПП выполняются специальные операции для контроля ап¬ паратуры секции, операция записи в регистр конфигу¬ рации и операция синхронизации. Операция синхронизации и функционирование регист¬ ров конфигурации описаны ниже. Устройство обмена с оперативной памятью. Устрой¬ ство обмена с оперативной памятью является состав¬ ной частью ЦП и осуществляет обмен информацией между ЦП и ОП. УООП имеет отдельный канал связи 80
Физический адрес памяти 19 20 21 22 23 у у Номер Номер модуля секции внутри секции Номер модуля Номер группы микросхем внутри модуля Рис. 2.10. Преобразование адреса памяти: ф — интерливинг «два» Последовательные четверки адресов располагаются в двух смежных модулях памяти; ® — интерливинг «четыре» Последователь¬ ные четверки адресов располагаются в четырех модулях одной секции, ® — интерливинг «восемь». Последовательные четверки адресов располагаются в модулях двух смежных секций памяти с каждой из восьми секций ОП и может обращаться в каждую секцию как с одиночными, так и с групповыми запросами. При групповом запросе за одно обращение происхо¬ дит обмен четырьмя словами. Время обращения по запи¬ си в память составляет для УООП около восьми тактов, время обращения по считыванию из памяти — около 20 тактов (обращение может быть задержано коммутатором ОП в случае занятости модуля памяти или конфликта по обращению с другим ЦП). Запросы на обмен с ОП поступают из буфера ко¬ манд и буферной памяти на входные регистры УООП. Одновременно в УООП может храниться до трех запро¬ сов. УООП имеет внутреннее распараллеливание на два канала, что позволяет выставлять одновременно два запроса на обмен в разные секции ОП. Максимальная частота смены в канале — один запрос за восемь тактов. Таким образом, при групповых обращениях к памяти УООП обеспечивает темп обмена — одно слово за такт. Смена запросов в каналах происходит после получения сигналов ПТВ из КмОП. Считанная из ОП информация передается в БП или БК. УООП контролирует информацию, поступившую из ОП, и принимает от КмОП сигналы контроля за про¬ хождением обмена. Для повышения темпа обмена при последовательном 6—675 81
обходе адресов в УООП принята система размещения последовательных четверок адресов в разных модулях оперативной памяти. (Интерливинг внутри модулей обес¬ печивается аппаратурой секций ОП). Для этого старшие разряды адреса, определяющие номер модуля (секции) ОП, меняются местами с младшими разрядами адреса (рис. 2.10). При исключении отдельных модулей из конфигурации операционная система не назначает их адреса. Наличие выключенного модуля делает невозможным интерливинг в данной секции. Однако УООП реализует максимально возможный ин¬ терливинг для каждой области ОП. Необходимые пре¬ образования адресов выполняются блоком преобразова¬ ния адресов обращения на основе данных о состоянии поля памяти из регистра конфигурации (РКф) и адреса обращения. 2.4. Система ввода-вывода Основное назначение системы ввода-выво- да — передача фиксированных массивов информации меж¬ ду внешними устройствами и оперативной памятью в МВК «Эльбрус». В состав вычислительной системы мо¬ жет входить от одного до четырех ПВВ и до 1023 пери¬ ферийных устройств. Процессор ввода-вывода представляет собой специ¬ ализированный процессор со своей буферной памятью, арифметическими и логическими схемами и обеспечивает управление связью центральной системы с внешними устройствами. ПВВ максимально освобождает централь¬ ный процессор от рутинной работы по организации обменов, выполняет функции диспетчера ввода-вывода. Процессор ввода-вывода производит обмен с широким спектром внешних устройств асинхронно и независимо от центрального процессора. Основу управляющей информации для ПВВ при выполнении операций обмена составляет карта работ, представляющая совокупность программных элементов (слов), расположенных в оперативной памяти системы. Карта работ ввода-вывода. Карта работ содержит все необходимые сведения, позволяющие ПВВ произвес¬ ти поиск пути к внешнему устройству, запуск внешнего устройства, передачу данных и запись в оперативную память результатов обмена. Карта работ предусматрива- 82
ет наличие связанной очереди заявок с требованиями на обмен к каждому внешнему устройству. ПВВ «укора¬ чивает» эту очередь по мере выполнения заявок, а ЦП ее «удлиняют» по мере появления новых требований на ввод-вывод информации. Заявка на ввод-вывод информации формируется ЦП в виде группы последовательно расположенных слов, в которых содержится необходимая управляющая ин¬ формация для производства обмена, включая данные о передаваемом массиве информации и команду для внеш¬ него устройства. Если к данному устройству имеется несколько заявок на обмен, то соответственно имеется столько же групп программных элементов, содержащих управляющую информацию. Механизм очередей позволяет ПВВ последовательно обрабатывать требования на ввод-вывод в автоматичес¬ ком режиме без участия ЦП. Для выполнения всего объема работ по вводу-выводу достаточно произвести однократный начальный пуск ПВВ со стороны ЦП. Структура карты работ представлена на рис. 2.11. Программные элементы карты работ конструируются ОС в оперативной памяти при инициализации системы. В состав карты работ входят следующие элементы: — базовая команда (БАК); — таблица устройств (ТУС); — таблица очередей (ТОЧ); — дескриптор выполненных работ (ДВР); — блоки управления вводом-выводом (БВВ). Элементы карты работ БАК, ТУС, ТОЧ, ДВР могут размещаться в любых областях оперативной памяти сис¬ темы, но с привязкой к определенному начальному ад¬ ресу, который называется базовым адресом. В ПВВ входят четыре регистра базовых адресов (БАБАК, БАТУС, БАТОЧ, БАДВР), содержимое кото¬ рых определяет положение соответствующих элементов карты работ в оперативной памяти. Указанные базовые адреса могут быть изменены в процессе работы вычис¬ лительного комплекса. Для этого используются соответ¬ ствующие команды изменения базовых адресов. Началь¬ ный адрес БВВ помещается в слове ТОЧ и в каждом кон¬ кретном случае может быть произвольным. Базовая команда (БАК) — первый элемент карты работ, который считывается ПВВ из оперативной памяти системы по пре¬ рыванию от ЦП. В слове БАК размещается команда, которую дол¬ жен выполнить ПВВ. Базовые адреса для БАК каждого ПВВ, входя- 6* 83
Рис. 2.11. Структурная схема карты работ: Знаком «*» помечены слова, в которых имеется семафорный бит базовая команда ПВВ2 Дескриптор выполненных работ ПВВ2 начало I конец Таблица устройств Таблица очередей ОЗУ базовая команда ПВВ1 ПВВ1 БАК ТУС ТОЧ ДВР Дескриптор выполненных работ работ ПВВ1 начало! конец БВВ БВВ | Адреса очереди ^ к / -му устройству-
iuciu d LundD идми! и вычислиicjibHui и комплекса, различны, так что каждый ПВВ обращается только по «своему» базовому адресу. Для предотвращения конфликтных ситуаций между несколькими ЦП при одновременном их обращении к одному и тому же ПВВ в слове БАК имеется семафорный бит, который устанавливается в 1, в момент считывания БАК процессором ввода-вывода или центральным процес¬ сором Установка семафорного бита запрещает обращение к данному слову БАК других ЦП. Установка семафорного бита в 0 производится ПВВ после того, как он произведет считывание из оперативной памяти слова БАК и расшифрует содержащуюся там команду. Таблица устройств (ТУС) представляет собой последова¬ тельность слов, расположенных в оперативной памяти системы, на¬ чиная с базового адреса ТУС (БАТУС). Число слов в таблице уст¬ ройств не превосходит 1024. Индексом для слова таблицы устройств является номер внешнего устройства (от 0 до 1023). Каждое слово ТУС (кроме нулевого) содержит информацию о типе устройства, способе его подключения к ПВВ, фазе работы по обмену, о действиях, которые необходимо произвести по концу обмена, и т. д. Каждое слово ТУС имеет семафорный бит, запрещающий обращение к данному слову как ЦП, так и других ПВВ. Семафорный бит устанавливается в 1 после считывания слова ТУС центральным процессором или процессором ввода-вывода. Таблица очередей (ТОЧ) представляет собой последова¬ тельность пар слов, расположенных в оперативной памяти системы, начиная с базового адреса ТОЧ (БАТОЧ). Число пар слов таблицы очередей равно числу внешних устройств в системе. Индексом каждой пары является удвоенный номер устройства (НУС), т. е. адрес каж¬ дой пары слов ТОЧ равен БАТОЧ -f- 2НУС. Наличие в адресе ТОЧ двух слов для каждого устройства определяется механизмом орга¬ низации очередей запросов на обмен. Очередь заявок к каждому внешнему устройству формируется ОС при участии ЦП, а обрабаты¬ вается процессором ввода-вывода Для выполнения этого условия, т. е. независимого доступа к очереди заявок со стороны ПВВ и ЦП, для каждого устройства отводятся два слова в ТОЧ. В первом слове содержится адрес первой заявки на обмен к данному устройству, т. е. начало очереди (НОЧ); во втором слове — адрес последней заяв¬ ки к данному устройству, т. е. конец очереди (КОЧ). Если к данному устройству не было заявок на обмен, то в поле адреса слов НОЧ и КОЧ записаны нули. С появлением первой заяв¬ ки на ввод-вывод ЦП помещает адрес сформированной БВВ в слова НОЧ и КОЧ. По мере появления новых заявок ЦП изменяет содержи¬ мое адреса в слове КОЧ в соответствии с новой заявкой, без обраще¬ ния к слову НОЧ. Дескриптор выполненных работ (ДВР) представляет собой слово, расположенное в оперативной памяти системы по адресу БАДВР, ДВР предназначен для хранения связанной последователь¬ ности обработанных заявок, образующих очередь выполненных работ. Очередь выполненных работ содержит все требования на ввод- вывод, обработанные ПВВ, включая заявки, при выполнении которых были зафиксированы сбои, т. е. очередь выполненных работ представ¬ ляет собой смесь из законченных работ и данных об ошибках, свя¬ занных последовательно. Очередь выполненных работ обрабатывается ОС в процессе вы¬ полнения рабочих программ, причем содержимое ДВР гасится, после чего ПВВ начинает создавать новую очередь. Все сбойные ситуации, входящие в очередь выполненных работ, анализируются для класси- 85
к ЦП вОП Секция быстрых каналов Секция стандарты каналов кИП ПВВ к ЦП к ППД к ВУ Коммутатор ПВВ Блок имитатора памяти Рис. 2.12. Структурная схема ПВВ: УВД — устройства управления барабанами и дисками; ИП — инженерный пульт управления Пульт управления Данные Управление Адрес к У БД и другим комплексам Устройство управления вводом—выводом Коммутатор связи с ОП Коммутатор секций
фикации содержащихся признаков сбоя и организации повторных требований на обмен. Блоки управления вводом-выводом (БВВ) пред¬ ставляют собой требования на обмен для каждого внешнего устрой¬ ства, которые формируются ОС при участии ЦП в виде групп слов, последовательно расположенных в оперативной памяти системы, начи¬ ная с адреса, указанного в слове НОЧ таблицы очередей. Указанная последовательность слов содержит всю необходимую управляющую информацию для производства обмена. В состав БВВ входит семь слов: — слово связи (СВ); — слово левой работы (ЛР); — дескриптор массива обмена (ДО); — слово управления обменом (СО); — слово периферийного устройства (СПУ); — дескриптор результата (ДР); — дескриптор результата устройства (ДРУ). Слово связи указывает на следующий в очереди заявок блок ввода-вывода В последнем блоке управления вводом-выводом слово связи равно нулю, что является признаком конца очереди. Слово левой работы используется для выполнения заявок, свя¬ занных с очередью к /-му устройству, которые должны быть выполнены во время работы с очередью к /-му устройству. Дескриптор массива обмена указывает адрес и разряды массива с точностью до байта. Массив всегда должен начинаться с начала слова. Слово управления обменом содержит информацию, необходимую для работы канала, причем часть информации используется только в одних типах каналов и не используется в других. СПУ, ДР и ДРУ специфичны для каждого типа внешних уст¬ ройств. Слово периферийного устройства содержит информацию, необходи¬ мую для работы внешнего устройства. Дескриптор результата — это слово ПВВ, в которое записывается результат обмена канала с внешним устройством. Дескриптор результата устройства записывается в БВВ, если обмен прошел со сбоем и содержит дополнительную информацию о сбое внешнего устройства. Структура ПВВ. На рис. 2.12 представлена структур¬ ная схема ПВВ, включающая следующие устройства: — устройство управления вводом-выводом; — коммутатор ПВВ; — пульт управления ПВВ; — секция быстрых каналов для обмена с вычисли¬ тельными устройствами (ВУ) высокого темпа обмена; — секция стандартных каналов обмена с ВУ по ин¬ терфейсу ЕС ЭВМ; —секция сканирования для обмена с ППД; блок имитатора памяти. Процессор ввода-вывода выполняет следующие функ¬ ции: — принимает сигналы прерывания от ЦП; 87
— производит выборку командной информации из оперативной памяти и выполняет содержащуюся там команду; — формирует информацию для управления запуском внешнего устройства; — выбирает оптимальный путь обмена информацией; — запускает внешнее устройство и производит пере¬ дачу данных в соответствии с требованиями на обмен; — производит запуск процессора передачи данных; — завершает передачу данных и перестраивает оче¬ редь требований на обмен; — обеспечивает работу в местном и центральном ре¬ жимах в заданной конфигурации. Конструктивно шкаф ПВВ состоит из блоков: У, К, П, Б (2 шт.), С (2 шт.), НЛО и коммутато¬ ра ОП. Устройство управления вводом-вы- в о д о м (УВВ) является основным организующим зве¬ ном процесса обмена. УВВ организует выбор пути и пере¬ дачу информации между внешними устройствами и опе¬ ративной памятью; формирует управляющие слова и передает их в каналы для запуска внешних устройств; сообщает ОС об окончании работы и результатах обмена, а также об обнаруженных в процессе обмена ошибках. Взаимодействие с ОС осуществляется через карту работ. В состав УВВ входят: — регистры базовых адресов для доступа к элементам карты работ; — регистры рабочих слов для хранения информации о виде и состоянии работ, а также об адресах связи по памяти; — стек активных каналов для хранения информации о работаю¬ щих каналах; — стек очередных работ для хранения стоящих на очереди не¬ выполненных работ; — стек окончаний для выбора номера канала, окончившего обмен, и завершения обслуживания заявки со стороны канала; — регистры приема и выдачи рабочих слов, используемые для связи УВВ с коммутатором, каналами, секцией сканирования и пуль¬ том; — регистр номера канала для хранения и выдачи номера канала в служебные секции; — регистр номера устройств, содержащий номер запускаемого в данный момент устройства; — сумматор, предназначенный для формирования адреса обраще¬ ния в ОЗУ; — адресный регистр — выходной регистр адреса обращения в ОЗУ; — регистр кода операции, содержащий текущий код операции при обращении в ОЗУ. 88
Работа УВВ начинается либо по прерыванию, либо по окончании обмена с внешним устройством. При этом она выполняется логически завершенными процедурами, которые фактически являются запаянными подпрограм¬ мами организации обмена. Каждая из процедур считает¬ ся не прерываемой до полного ее окончания. Если возни¬ кает ситуация запуска нескольких процедур, то выбира¬ ется старшая по приоритету. Каждая из процедур представляет собой запаянную на триггерах временную диаграмму. В нужный момент времени при прохождении по диаграмме возникают стро¬ бирующие сигналы, управляющие передачей информа¬ ции с регистра на регистр. Коммутатор ПВВ предназначен для передачи потоков информации между секциями ПВВ и модуля¬ ми ОП. Коммутатор ПВВ состоит из коммутатора секций и коммутатора связи с ОП. Коммутатор секций предназна¬ чен для передачи информации от любой секции ПВВ к коммутатору связи с ОП и от коммутатора связи с ОП к любой секции ПВВ. Пропускная способность коммутатора определяет максимальную производительность секций ПВВ — 30 М байт/с при тактовой частоте 260 не и объеме передавае¬ мой информации — 72 разряда. В состав коммутатора входят следующие законченные функцио¬ нальные узлы: — канал прямой передачи (от секций ПВВ к ОП); — канал обратной лередачи (от ОП к секциям ПВВ), — средства аппаратного контроля; — схема формирования адресов холодной загрузки; — средства индикации. Работа коммутатора секций начинается с момента по¬ ступления заявки на обмен. Процесс обмена информаци¬ ей по обоим направлениям происходит независимо, за исключением сбойных ситуаций в канале прямой передачи. Пульт управления ПВВ расположен в бло¬ ке П и выполняет вспомогательные функции в составе ПВВ. Он не принимает непосредственного участия в об¬ мене информацией между ОП и внешними устройствами. Блок П предназначен для ввода ПВВ в одну из кон¬ фигураций вычислительного комплекса, начальной уста¬ новки ПВВ и запуска системы, автоматического переза¬ пуска системы, приема и выдачи прерываний централь¬ ным процессорам, а также для индикации состояния ПВВ. 89
Блок П состоит из следующих узлов: регистра конфигураций; ре¬ гистра аварий; схемы выработки начальной установки и пуска; схемы инициализации; системы прерываний; таймера; системы индикации. Регистр конфигурации предназначен для хранения данных о кон¬ фигурации устройств вычислительного комплекса и ввода в конфигура¬ цию непосредственно процессора ввода-вывода. Кроме того, регистр конфигурации передает в блок К состояние модулей ОП для органи¬ зации перекодировки адреса в случае неисправности одного модуля или более в секции ОП, а также для того, чтобы ПВВ знал стартовый мо¬ дуль памяти. Конфигурация ПВВ необходима для выяснения стартового ПВВ, а конфигурация ЦП — для защиты от прерываний тех ЦП, которые не входят в конфигурацию, а также для выдачи прерывания стартово¬ му ЦП. Регистр аварий служит для приема и хранения аварий от других модулей системы. Схема выработки сигналов начальной установки ПВВ и сигнала ПУСК запускается по сигналам, приходящим от пульта оператора сис¬ темы и инженерного пульта ПВВ. Выработанные сигналы обеспечивают начальную установку всех блоков ПВВ и инициализацию всего вычислительного комплекса стар¬ товым ПВВ либо автономный запуск в местном режиме. Система ини¬ циализации позволяет запустить вычислительный комплекс как в режи¬ ме перезапуска, так и в режиме холодной загрузки. Схема инициализации вырабатывает стартовые прерывания в блок У, выдает команду для пуска устройства, управляющее слово канала и слово периферийного устройства. Система прерываний выдает прерывания как центральным процес¬ сорам, так и блоку У. Если процессор ввода-вывода находится в авто¬ матическом режиме, то прерывание от ПВВ выдается всем ЦП, нахо¬ дящимся в аналогичной конфигурации. В режиме загрузки прерывание от ПВВ выдается только младшему ЦП. Таймер выдает сигналы, необходимые для работы каналов и блока У. Система индикации передает информацию для индикации ее на инженерном пульте ПВВ. Секция быстрых каналов предназначена для обмена с внешними устройствами, имеющими высо¬ кий темп обмена (до 4 М байт/с), а также для связи с другими комплексами в режиме межкомплексного обме¬ на. Связь между внешними устройствами и быстрыми ка¬ налами осуществляется через соответствующие устройст¬ ва управления внешними устройствами (УВУ). К каждо¬ му каналу можно подключить только одно УВУ. Блок быстрых каналов состоит из четырех отдельных каналов, об¬ мен по которым осуществляется параллельно. Суммарная пропускная способность четырех каналов составляет не менее 16 М байт/с. При организации межкомплексного обмена канал одного вычисли¬ тельного комплекса связан с каналом другого вычислительного комплек¬ са. Образованный таким образом тракт передачи информации позволяет осуществить обмен между ОЗУ двух различных комплексов, минуя про¬ межуточный носитель информации или сопрягающее устройство. 90
В режиме внутреннего обмена осуществляется передача информа¬ ции из одной области памяти в другую через два канала одного блока. Этот режим удобен для организации тестового контроля аппаратуры ПВВ и отладочных тестов. Он позволяет перемещать массивы внутри оперативной памяти. Секция стандартных каналов предназ¬ начена для обмена с широким классом внешних устройств, имеющих средний и низкий темп обмена (до 300 К байт/с). Связь между внешними устройствами и стандартными каналами осуществляется через контрол¬ леры. Конструктивно все стандартные каналы, входящие в ПВВ, объеди¬ нены в два идентичных блока С1 и С2. К каждому каналу можно под¬ ключить несколько контроллеров последовательно. Каждый блок С состоит из 16 каналов, обмен по которым осущест¬ вляется параллельно. Суммарная пропускная способность 16 каналов составляет не менее 1,6 М байт/с. Общий ресурс производительности блока С распределяется неравномерно между всеми каналами в зави¬ симости от поступающих заявок. Это позволяет подключить к одному или нескольким каналам довольно быстрые устройства, в том случае если к остальным каналам подключены устройства с малым темпом обмена. Общее число внешних устройств на одном канале не должно превышать 16. Блок имитатора памяти (БИП) предназна¬ чен для автономной настройки ПВВ при проведении пуско¬ наладочных работ. Он позволяет имитировать режим обме¬ на информацией для секций ПВВ без участия коммутатора и оперативной памяти. Конструктивно БИП размещается в блоке К и состоит из четырех ячеек памяти и четырех ячеек управления. БИП работает в двух основных режимах: — обмена с видеотоном инженерного пульта; — обмена с коммутатором секций ПВВ. Секция сканирования, предназначенная для связи ПВВ с четырьмя процессорами передачи данных, принимает управляющие слова от УВВ и передает их в ППД. После загрузки команды ППД осуществляет ббмен информацией между ППД и коммутатором ОП. Конструк¬ тивно секция сканирования размещается в блоке НЛО. Межкомплексный обмен. Средства межкомплексного обмена МВК «Эльбрус» обеспечивают обмен между двумя МВК через быстрые каналы ПВВ без участия проме¬ жуточной внешней памяти или какого-либо адаптера. Для этой цели в быстром канале ПВВ и интерфейсе ввода- вывода реализован специальный режим работы, задавае¬ 91
мый управляющими полями карты работ и, в частности, блоком ввода-вывода. Каждый тракт обмена использует по одному быстрому каналу ПВВ от каждого МВК и обеспечивает обмен в любом направлении в полудуплексном режиме. В соот¬ ветствии с едиными принципами организации обменов в МВК «Эльбрус» для осуществления межкомплексного об¬ мена используется общий для всей системы механизм очередей. Обмен через один тракт межкомплексного об¬ мена осуществляется сеансами. Сеанс заключается в пере¬ даче из одного МВК в другой данных в соответствии с очередями заявок на обмен к псевдоустройствам (очере¬ ди БВВ к устройствам, номера которых отведены под межкомплексный обмен). Сеанс обмена состоит из тактов обмена. Один такт обмена соответствует обслуживанию пары заявок — по одной заявке из каждой очереди от двух взаимодействующих МВК: в одном МВК — заявка на прием информации, в другом МВК — заявка на выдачу. Переход от одного такта обмена (нормально завершен¬ ного) к следующему, если существует очередь БВВ, осу¬ ществляется аппаратно, без обращения к программным средствам. Передача данных между каналом и УВУ в большинст¬ ве используемых интерфейсов ввода-вывода универсаль¬ ных ЭВМ осуществляется по асинхронному принципу «запрос-ответ» (передача с квитированием). Темп обмена в тракте задается внешним устройством. В тракте меж¬ комплексного обмена на базе быстрых каналов функцию задатчика в передаче с квитированием выполняет канал, осуществляющий запись в ОП. Вопрос повышения скорости передачи в тракте меж¬ комплексного обмена решается за счет применения в раз¬ работанных интерфейсах широкоформатной параллельной передачи со средствами ускорения (дополнительные линии идентификации). Дальность передачи обеспечивается спе¬ циально разработанными для интерфейсов МВК усилите¬ лями-передатчиками. Эта фаза межкомплексного обмена в МВК «Эльбрус» отличается тем, что в результате ее выполнения каналы обмениваются информацией состоя¬ ния, что приводит к унификации обработки результатов такта межкомплексного обмена и обычной операции об¬ мена. Система телеобработки. Применение вычислительных систем в различных областях, в том числе для управления сложными объектами, показало, что удовлетворительных 92
показателей эффективности можно достичь только при обеспечении непосредственной связи между местами гене¬ рации информации, вычислительной системой и объектами управления. Осуществление этого невозможно без исполь¬ зования каналов связи. Под системой телеобработки принято понимать совокупность аппаратных и програм¬ мных средств, предназначенных для обработки на вычис¬ лительных системах данных, передаваемых по каналам связи. Традиционные методы подсоединения линий связи предусматривают подключение мультиплексоров передачи данных (МПД) к мультиплексному каналу ЕС ЭВМ. Для расширения функций МПД в его состав вводится микро¬ процессор для программной обработки принимаемых и отправляемых сообщений. Введение программируемости МПД позволяет снизить нагрузку на ЦП за счет реализа¬ ции в МПД функции повышения достоверности переда¬ ваемых данных, установления соединений по коммутируе¬ мым каналам связи, индикации состояний МПД и кана¬ лов связи. Дальнейшее развитие идеи использования программи¬ руемого МПД приводит к использованию связного процес¬ сора или процессора передачи данных (ППД), управляе¬ мого собственной ОС. Применение ППД является отли¬ чительной особенностью МВК и подтверждает общую тен¬ денцию повышения эффективности вычислений за счет организации работы на нескольких специализированных параллельно работающих модулях. Информация и сигналы управления в интерфейсе связи с ППД передаются посредством 132 линий: 15 линий — для передачи сигналов управления от ПВВ к ППД; 40 ли¬ ний — для передачи сигналов управления и адреса обра¬ щения в память от ППД к ПВВ; 77 линий — для использования в полудуплексном режиме. Принципы подключения ППД к ПВВ поясняются схе¬ мой, показанной на рис. 2.13. Интерфейс обеспечивает передачу как данных, так и приказов ППД путем выполнения специальной команды в ПВВ. Инициализация тракта обмена предшествует выдаче приказов на ППД. Открытие маски ППД выполняется спе¬ циальной командой установки маски конфигурации (МКф) из системы команд ПВВ. Для передачи в ППД при выполнении команды групповой рассылки сигналов в ПВВ допускается использование трех приказов: ПУСК, ВНИ¬ МАНИЕ, ОСТАНОВ. 93
информации, адреса Рис. 2.13. Принцип подключения ППД к ПВВ в МВК «Эльбрус» Приоритет между различными ППД по выполнению операций обмена осуществляется поддержанием дисцип¬ лины FIFO в отношении заявок на обмен от этих ППД. Введение любой другой дисциплины обслуживания при¬ вело бы к некоторой дискриминации в отношении ППД с меньшим относительным приоритетом. Передача данных между секцией сканирования и лю¬ бым ППД осуществляется всегда по инициативе ППД, присылающего сигнал запроса на обмен. Секция скани¬ рования отвечает выдачей сигнала готовности, подтверж¬ дающего возможность выполнения обмена. Далее начина¬ ется фаза обмена и ППД передает адрес, код операции, число (в случае записи в ОП) и сопровождает все это соответствующим идентификатором. Секция сканирования после выполнения операции с памятью выдает в ППД сигнал завершения работы, сопровождаемый (в случае считывания) числом из памяти. 2.5. Внутрикомплексное взаимодействие Модульный тип построения комплекса требует гибкой аппаратно-программной поддержки, способной разрешить возникающие конфликты между модулями системы либо восстановить работоспособность комплекса. Конфигурация МВК. В МВК «Эльбрус-2» наряду с работой всех модулей в рамках единой системы преду¬ смотрена возможность образования до четырех незави- 94 Шины управления ПВВ ППДО ППД1 ППД2 ППДЗ
симых подсистем (конфигураций). Выделение некоторой совокупности модулей в независимую подсистему имеет логический характер и не требует физической перекомму- тации. С этой целью в аппаратуру центральных модулей МВК (ЦП, ОП, ПВВ) введены специальные регистры (регистры конфигурации), хранящие информацию о со¬ ставе подсистемы. Содержимое этих регистров маскирует обращения от других модулей при внутрикомплексных взаимодействиях. Регистры конфигурации устанавливаются аппаратным и программным способами. При инициализации комплекса модули по специаль¬ ным шинам обмениваются именами собственных конфи¬ гураций и по совпадению имен формируют свои регистры конфигурации. Имя собственной конфигурации задается с местного пульта управления либо с пульта оператора комплекса. В процессе функционирования содержимое регистров конфигурации изменяется программно операционной системой либо аппаратно системой автоматической реконфигурации при возникновении аварий. Наличие гибкой аппаратно-программной системы формирования логически независимых конфигураций в рамках единого комплекса позволяет обеспечить скрытую от пользователей реконфигурацию МВК, напри¬ мер, вывод в «ремонтную» конфигурацию произвольного набора модулей для ремонта или текущей профилактики, а также возврат модулей в «рабочую» конфигурацию. Аппаратная поддержка механизма семафоров. В МВК «Эльбрус» задача может порождать несколько процессов. Например, операционная система, обслуживая одновре¬ менно большое число пользователей и работая на их стеках, выступает в качестве одной задачи со многими параллельными процессами. Участок программы, использующий (считывающий или модифицирующий) общие для нескольких процессов данные, называется критической секцией. В качестве средства синхронизации параллельных процессов при доступе к общим данным используются семафоры — служебные слова, сопровождающие масси¬ вы данных и располагающиеся в оперативной памяти. Если один или несколько процессов считывают общие данные, то никакой другой процесс не должен их модифицировать. В семафоре предусмотрено поле, содержащее информацию о числе процессов, пользующихся общими данными. Очередной процесс перед считыванием 95
наращивает значение этого поля, а при выходе из критической сек¬ ции— уменьшает его на 1. Ненулевое значение поля означает, что семафор «закрыт по считыванию». Процесс, который должен модифицировать общие данные, «закрывает семафор по записи», проставляя в нем соответствующий признак. Попытка закрыть по записи уже «закрытый» семафор приводит к прерыванию, конфликт разрешается операционной системой. После модификации общих данных процесс «открывает» семафор. Так как к семафору может одновременно обращаться несколько процессов, работа с ним, 6 свою очередь, требует синхронизации. Для этого используется синхробит, входящий в состав семафорного слова. Команда, считывающая семафор, одновременно автоматически перезаписывает его в оперативную память с синхробитом, равным 1 (операция синхросчитывания). Синхробит сбрасывается записью модифицированного семафора. Процесс, считавший семафор, который уже обрабатывается, обязан дождаться обнуления синхробита и только после этого начинать модификацию. Межпроцессорное взаимодействие. Связь процессор¬ ных модулей, находящихся в одной конфигурации, реализована через механизм прерываний. В соответствии с набором функциональных модулей МВК можно выделить взаимодействие типа ЦП — ЦП и ЦП — ПВВ. Взаимодействие ЦП — ЦП. Все ЦП равно¬ правны в МВК и выполняют задания из общей для всех процессоров очереди работ, пополняемой ОС. Один из ЦП, выполняя функции программного диспетчера, выдает другим ЦП сигналы прерывания и выходит на операцию ожидания реакции. Другие ЦП, получив сигнал прерыва¬ ния, выдают сигнал подтверждения (ответа) процессору- диспетчеру и также выходят на операцию ожидания дальнейших инструкций. Процессор-диспетчер, получив требуемое число подтверждений, организует синхронную работу всех ЦП системы. Для реализации данного протокола обмена в ЦП предусмотрены следующие команды: «прервать процессор» — выдается сигнал прерывания всем процессорам, указанным в операнде-маске; «ответ ЦП» — выдается сигнал ответа; «ждать» — ЦП находится в состоянии ожидания, пока не поступят сигналы ответа от всех процессоров, указанных в операнде. Взаимодействие ЦП — ПВВ. ЦП, выполняя программу ОС, формирует очередь заявок к заданному внешнему устройству. Если очередь заявок не пуста и, следовательно, выполняется или ждет выполнения, достаточно нарастить ее очередной заявкой. Если очередь 96
заявок пуста, то необходимо выдать в ПВВ сигнал прерывания от ЦП. Процессор ввода-вывода анализирует заявку и начинает обмен. По окончании обмена ПВВ перемещает заявку в очередь готовых работ без прерыва¬ ния ЦП; прерывание ЦП со стороны ПВВ производится только в том случае, если обмен не может быть выполнен по тем или иным причинам. Система автоматической реконфигурации. Одним из механизмов, обеспечивающих «живучесть» комплекса, является система автоматической реконфигурации и пе¬ резапуска при сбоях и отказах (САР). Эта система включает в себя специальную аппаратуру, распределен¬ ную по модулям МВК, системные шины, а также про¬ граммные средства, входящие в состав ОС. Аппаратно выполняются следующие действия: — обнаружение аварии в модуле, дифференцирова¬ ние ее по типу, сохранение диагностической информации и приостановка работы аварийного модуля; — передача информации об аварии по специальным шинам в другие модули; — обработка сигналов аварии, приходящих от других модулей, и исключение (если требуется) аварийного модуля из конфигурации; — системная реакция на аварию — либо запуск специальных процедур ОС, либо автоматический пере¬ запуск комплекса (в зависимости от типа аварии). Программно выполняются следующие действия: — сбор и обработка диагностической информации аварийного модуля; — попытка вернуть его в рабочую конфигурацию в предположении, что авария имеет сбойный характер; — сохранение в системном журнале информации об аварии. Аварии модулей МВК подразделяются на синхронные и асинхрон¬ ные. Синхронность аварии подразумевает возможность идентификации команды, на которой произошла авария, а также сохранение состояния вычислительного процесса на этот момент. Таким образом, команда, вызвавшая синхронную аварию, может быть повторена, и если авария не имеет константного характера, то вычисления могут быть продолже¬ ны. В МВК «Эльбрус-2» синхронность аварии удается обеспечить только в одном типе модулей — центральном процессоре. При возникновении асинхронной аварии вычислительный процесс нарушается необратимо. Поэтому возобновить вычисления можно с контрольной точки либо с начала В САР предусмотрены различные реакции на разные типы аварий 7—675 97
Возникновение асинхронной аварии на процессе пользователя ведет к автоматическому исключению неисправного модуля из конфи¬ гурации и запуск процедуры ОС, обрабатывающей аварийную ситуацию и определяющей дальнейшее течение аварийного процесса (аварийное завершение или перезапуск). Остальные пользователи при этом «не чувствуют» аварийной работы. Исключение составляет случай, когда в конфигурации представлен лишь один модуль некоторого типа. Возникновение в нем аварии приводит к перезапуску всего комплекса. Возникновение асинхронной аварии на процессе ОС всегда завершается перезапуском комплекса. Одиночные синхронные аварии «не рассматриваются» САР, и только в случае многократного (более 16 раз) повторения на одном и том же процессе они переводятся в разряд асинхронных и обрабаты¬ ваются, как описано выше. Таким образом, система автоматической реконфигура¬ ции и перезапуска в совокупности с другими средствами позволяет, во-первых, в большинстве случаев сделать незаметным для пользователей процесс текущего обслу¬ живания комплекса, во-вторых, с высокой надежностью обеспечить решение крупных научно-технических задач или счет в реальном масштабе времени. ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ 2.1. Что такое интерливинг? Какой интерливинг применяется в МВК «Эльбрус»? 2.2. Перечислите типы данных. 2.3. Какие типы адресации применяются в описанной модели машины? 2.4. Укажите основные функции и состав ПВВ. 2.5. Что такое карта работ, ее состав и роль в организации обменов? 2.6. Всегда ли последовательность запуска команд совпадает с после¬ довательностью их окончания? 2.7. Какие возможности по оптимизации вычислительного процесса заложены в аппаратуре МВК «Эльбрус»? 2.8. Возможно ли исправление ошибок в информации, хранящейся в оперативной памяти?
Глава 3 Программные средства 3.1. Структура и основные функции операционной системы Цель настоящей главы — обсуждение осо¬ бенностей системного программного обеспечения, связан¬ ных с многопроцессорностью. Общие вопросы построения операционных систем (ОС) [16], а также проблемы ис¬ пользования многопроцессорности прикладными програм¬ мами здесь не рассматриваются. Заметим лишь, что многопроцессорность является фактором, не только тре¬ бующим нахождения специфических решений, но и сти¬ мулирующим работу по выявлению общих закономернос¬ тей протекания вычислительных процессов, по совершен¬ ствованию структуры ОС. Первой и наиболее развитой в настоящее время универсальной многопроцессорной ОС в нашей стране является операционная система «Эль¬ брус» [1, 17], на примере которой далее показывается, какими программными средствами обеспечивается эффек¬ тивное совместное использование нескольких процессо¬ ров. Основными компонентами ОС являются: подсистема управления памятью; подсистема управления процесса¬ ми; система простых файлов; система структурированных файлов; система средств телекоммуникации и работы в сетях; подсистема планирования и организации взаимо¬ действия с оператором и пользователем; система учета пользователей. Подсистема управления памятью занимается распре¬ делением физической оперативной памяти системы. Она предоставляет компонентам ОС и пользователям вирту¬ альную память, состоящую из отдельных сегментов объектного кода и массивов данных. Подсистема управления процессами занимается рас¬ 7* 99
пределением времени центральных процессоров. Она пре¬ доставляет другим компонентам ОС и пользователям средства организации и взаимодействия параллельных процессов, а также задач. Система простых файлов занимается управлением внешними устройствами и распределением памяти на них, а также организацией обмена информацией с внешними устройствами через процессор ввода-вывода. Она предос¬ тавляет другим компонентам ОС и пользователям файлы как абстрактные (виртуальные) внешние устройства, неограниченные по объему и устроенные удобнее, чем реальные устройства, и средства обмена с файлами. Для облегчения хранения и поиска информации предусмотре¬ на система справочников. Система структурированных файлов — это механизмы поддержки систем управления базами данных. Система средств телекоммуникации и работы в сетях обеспечивает подключение удаленных терминалов, созда¬ ние локальных и территориально распределенных сетей ЭВМ. Подсистема планирования и организации взаимо¬ действия с оператором и пользователем автоматизирует процесс прохождения задач в системе, предоставляет оператору средства получения информации о состоянии вычислительного комплекса и решаемых в нем задач и средства управления всей системой, обеспечивает взаимо¬ действие с человеком. Система учета пользователей обеспечивает управле¬ ние ресурсами вычислительного комплекса и распреде¬ ление их между пользователями вычислительного центра, а также управление доступом пользователей к информа¬ ции, хранящейся в архивах вычислительного центра. Многопроцессорность, определяемая как одновремен¬ ная работа нескольких центральных процессоров на об¬ щей оперативной памяти, оказывает непосредственное влияние только на компоненты управления памятью и процессами ОС. Указанные компоненты тесно взаимосвязаны, их спе¬ цифика заключается в том, что подсистема управления процессами относится к информационным объектам как в той или иной степени активным, т. е. способным совер¬ шать действия (в этом случае объекты как бы являются субъектами), а подсистема управления памятью — как к пассивным, над которыми совершаются действия. Основными объектами, с которыми работает подсис¬ 100
тема управления процессами, являются программа, зада¬ ча, процесс. Программа представляет собой запись алгоритма на языке машины, оформленную файлом стандартного вида и являющуюся результатом трансляции этого алгоритма с некоторого алгоритмического языка, а задача — это исполнение одной или нескольких программ. Одна и та же программа может одновременно вы¬ полняться в нескольких задачах различных пользовате¬ лей, параллельная входимость (реентерабельность) кода обеспечивается тем, что код программы сам себя не изме¬ няет в оперативной памяти во время работы программы, а пользователь никакими своими действиями не может изменить код в оперативной памяти в момент его исполнения. Это позволяет не дублировать в оперативной памяти машины код, если одна и та же программа исполняется одновременно в разных задачах. Любая задача пользователя выполняется либо строго последовательно, либо параллельно, откуда возникает понятие процесса как последовательной единицы вычис¬ лений внутри задачи либо внутри ОС. Задача — это самостоятельная, независимо исполня¬ емая единица вычислений в системе, во-первых, объеди¬ ненная собственной математической (виртуальной) па¬ мятью, во-вторых, имеющая лимиты ресурсов вычисли¬ тельного комплекса для исполнения и, в-третьих, представляющая в системе пользователя. Это определение указывает на основные характерис¬ тики задач МВК «Эльбрус». Прежде всего задача яв¬ ляется основной единицей, подчиняющейся ОС в режиме мультипрограммирования. Заметим, что мультипрограм¬ мирование связано не с многопроцессорностью, а с воз¬ можностью совмещать вычисления с вводом-выводом информации. Однако распараллеливание вычислений на нескольких ЦП имеет много общего с распараллелива¬ нием счета и ввода-вывода. Математическая память, в которой размещаются все обрабатываемые данные задачи, введена для реализации механизма виртуальной памяти. Наличие собственной математической памяти делает задачи независимыми друг от друга по объему используемого адресного пространства. Лимиты ресурсов задачи связаны с двумя управляю¬ щими функциями ОС: планированием мультипрограм¬ мной смеси задач и контролем за правильностью выпол¬ 101
нения их. Априорная информация о задаче, заключен¬ ная в указанных лимитах ресурсов, необходимых дан¬ ной задаче, используется ОС при планировании для равномерной загрузки всех устройств вычислительного комплекса. Пользователь, как правило, завышает ресурс¬ ные лимиты, но за неимением более достоверной инфор¬ мации они служат исходными данными для планирова¬ ния. Другая функция лимитов проявляется в том, что исчерпание задачей одного из своих лимитов служит сигналом об ошибке в программе, например, исчерпание задачей лимита времени работы ЦП служит сигналом о «зацикливании» программы. Задача при этом сбрасы¬ вается со счета, а пользователю выдается сообщение о причине сброса и некоторая дополнительная инфор¬ мация, необходимая для диагностики и отладки про¬ граммы. ОС различает пользователей каждого конкретного вычислительного комплекса, назначая каждому свой внешний контекст, т. е. те данные и библиотеки программ, которые хранятся в справочниках вычислительного комп¬ лекса и доступны данному пользователю. Понятие кон¬ текста играет важную роль, так как именно через кон¬ текст обеспечивается защита данных пользователя, на¬ ходящихся как в оперативной памяти, так и в архивах на внешних устройствах. Необходимо отметить, что расход ресурсов, осущест¬ вляемый системой при выполнении задачи, начисляется на пользователя, запустившего задачу, и таким образом осуществляется учет работы пользователей вычислитель¬ ного комплекса. Необходимый ресурс (например, оперативная память, область на внешнем устройстве и т. д.) выделяется в тот момент, когда он действительно нужен. Каждая задача в МВК «Эльбрус» состоит из трех основных компонентов (структура задачи представлена на рис. 3.1): 1) одного или нескольких процессов (представителя¬ ми которых в оперативной памяти являются стеки). Число процессов в задаче ограничено только ресурсами конкретной установки вычислительного комплекса; 2) одного или нескольких представителей тех незави¬ симо оттранслированных программ, которые исполняются в данной задаче; 3) данных, т. е. массивов информации, обрабатывае¬ мых в задаче. 102
Паспорт задачи Список программ Список стеков процессов Рис. 3.1. Структура задачи Представителем задачи в системе является паспорт задачи. Паспорт содержит документацию на задачу и отражает состояние задачи в каждый момент исполне¬ ния. Информация, находящаяся в паспорте, состоит из трех основных частей: 1) лимиты ресурсов задачи, причем значения их выс¬ тавляются либо пользователем при запуске задачи, либо по умолчанию ОС; 2) данные по учету ресурсов, затребованных задачей. Здесь учитываются время работы ЦП и ПВВ и затребо¬ ванная оперативная память; 3) системная часть паспорта, содержащая управляю¬ щую информацию ОС. Содержимое паспорта является минимально необхо¬ димой системе информацией для планирования, управ- 103 Стек процесса 1 Стек процесса N Программа Р1 Программа РК Массив данных 1 Массив данных М
Словарь сегментов ления ходом выполнения задачи и выдачи сообщения по окончании задачи. Через паспорт система может осу¬ ществить доступ ко всем элементам задачи — процессам, программам, исполняемым в ней, и данным, т. е. масси¬ вам в математической памяти задачи и файлам, с кото¬ рыми она работает. В паспорте находятся начала списков этих элементов. Программа представляет собой файл кода стандарт¬ ной структуры, являющийся результатом работы транс¬ лятора. Во время исполнения программы этот файл отоб¬ ражается в оперативную память, причем структура этого отображения соответствует структуре файла и архитекту¬ ре центрального процессора (рис. 3.2). В простейшем случае во время трансляции с языка, имеющего блочную структуру, каждая процедура (блок) транслируется в отдельный сегмент кода (т. е. массив команд центрального процессора МВК «Эльбрус»), так что каждой процедуре соответствует собственный сегмент кода. Обращение в программе к другой процедуре (блоку) транслируется в обращение к соответствующему сегменту кода. Каждый сегмент имеет в программе уни¬ кальный номер, который присваивается сегменту во вре¬ мя трансляции. Эти номера выделяются транслятором последовательно, по мере трансляции. В ходе трансляции создается словарь сегментов, ко¬ торый представляет собой массив, состоящий из описа¬ телей сегментов. Каждый описатель сегмента содержит, во-первых, адрес по файлу этого сегмента и, во-вторых, его размер в байтах. В словаре сегментов сведены вместе все описатели сегментов кода. Кроме того, во время трансляции создаются: — массивы констант программы; — таблица массивов констант (ТМК) данной про¬ граммы, которая содержит информацию о расположении в файле массивов констант; 104 Рис. 3.2. Структура программы: ТМК — таблица массивов констант Метка Внешний контекст программы Адрес ТМК ТМК
— внешний контекст программы — таблица имен, описанных как внешние по отношению к данной програм¬ ме. Обычно это независимо оттранслированные програм¬ мы или стандартные функции, к которым происходит об¬ ращение из данной программы; — некоторая дополнительная информация. В упрощенном виде структура программы приведена на рис. 3.2. При первом обращении из задачи к некоторой неза¬ висимо оттранслированной программе происходит «знакомство» задачи и программы, находящейся на внешнем устройстве (накопителе на магнитных дис¬ ках, барабанах). Возможны два случая: программа не выполняется в данный момент в системе; программа уже выполняется (в другой задаче). Если программа еще не выполняется в системе, происходит ее загрузка в оперативную память. При этом считывается в память словарь сегментов. Он служит представителем програм¬ мы в системе. В отличие от словаря сегментов, ТМК и сегментов кода внешний контекст программы является представите¬ лем программы в задачах пользователей и поэтому загружается в математическую память задачи и одновре¬ менно включается в список к паспорту задачи. После «знакомства» со словарем сегментов фор¬ мируется адресное окружение выполнения программы. При первом обращении к программе в задаче метку входа в первую процедуру (внешний блок) программы формирует ОС. Во время исполнения программа сама формирует метки для вызова своих процедур. Когда в задаче происходит обращение к программе, которая уже выполняется в другой задаче, «знакомство» сводится к загрузке в математическую память задачи представителя программы — внешнего контекста и к формированию метки входа в программу. Одним из важнейших понятий программирования яв¬ ляется понятие контекста выполнения задачи, процеду¬ ры. Каждая задача, каждая процедура программы вы¬ полняются в некотором программном и аппаратном окружении, которое создается ОС. Контекст вычислений — это область доступных дан¬ ных. Различают контекст внешних объектов (называемый также внешним контекстом и определенным для пользо¬ вателей, программ, задач) и контекст оперативных объ- 105
Регистр РДС Стек процесса Активация процедуры А Регистр УМС Регистр УС Регистр РВГС Активация процедуры В Активация процедуры С Программа Рис. 3.3. Структура стека: РДС — регистр дна стека, УМС — указатель маркера стека, УС — указатель стека; РВГС — регистр верхней границы стека ектов (оперативный контекст процедуры внутри про¬ граммы) . Внешний контекст — это область доступных файлов и других внешних объектов. Он реализуется с помощью системы справочников и так называемого файла учета пользователей. Оперативный контекст — область доступных данных в математической памяти задачи, в том числе оперативных объектов связи с внешними объектами, он реализуется аппаратно. Контекст оперативных объектов будем называть прос¬ то контекстом. Стек процесса имеет структуру, представленную на рис. 3.3. 106
Стек является основой организации вычислительного процесса в МВК «Эльбрус». Каждому процессу в системе соответствует собственный стек, и, наоборот, каждый стек соответствует некоторому процессу в системе. Стек — это область памяти, состоящая из управляю¬ щей части — «шапки» стека, необходимой ОС для управ¬ ления процессом, и активной части, на которой ведутся вычисления. В языках с блочной структурой при входе в процедуру (блок) объявляются новые переменные и они сохраняются до выхода из данной процедуры. Соот¬ ветственно при входе в процедуру отводится память для локальных данных, которая при выходе освобождается. Стек служит той областью памяти, которая используется, во-первых, для вычисления выражений и, во-вторых, для отведения места под параметры и локальные объекты процедур. В любой момент времени выполнения програм¬ мы стек содержит секции памяти для переменных всех процедур, которые уже начали выполняться, но еще не окончились. Эти секции памяти называются активациями. Активация процедуры содержит базированную область памяти (секцию контекста) и, возможно, пустую область для вычисления выражений. Стек — это аппаратное отображение процесса в опе¬ ративной памяти МВК. Когда на стеке работает про¬ цессор (процесс активный), аппаратное отображение процесса распространяется и на регйстры процессора. Процесс может находиться и в неактивном состоянии, ожидая какого-либо события (например, освобождения процессора), тогда он отображается только данными в оперативной памяти (стеком). В этом случае в «шапке» стека хранится состояние процесса (т. е. отображение ре¬ гистров процессора), которое и выставляется на про¬ цессоре в момент активизации процесса. В стеке формируются два списка — статическая це¬ почка, определяющая контекст выполнения процедуры, и динамическая цепочка, отображающая последователь¬ ность запуска (активации) процедур. Из соображений эффективности статическая цепочка, обращение к кото¬ рой происходит при каждом использовании доступной переменной, дублируется базовыми регистрами централь¬ ного процессора. Секции контекста в статической цепочке могут находиться и вне стеков. Стек представляет собой массив, загруженный в ма¬ тематическую память, т. е. занимает смежную область в математической памяти, но не обязательно смежный по 107
физической памяти. Во время работы процесса объем выделенной физической памяти под стек увеличивается и уменьшается. 3.2. Процессы и распараллеливание задач Задача может выполняться последователь¬ но либо параллельно. Распараллеливание может быть вызвано желанием пользователя либо повысить скорость выполнения задачи путем одновременного выполнения ветвей задачи на нескольких процессорах, либо пред¬ ставить алгоритм в его естественной параллельной форме, отражающей ветвление вычислений. В ОС предусмотрены средства для такого распарал¬ леливания вычислений. Пользователь в своей программе языковыми средствами может явно указать место ветвле¬ ния алгоритма и при исполнении этого места будет соз¬ дан процесс для выполнения параллельной деятельности внутри задачи. Виды процессов. Процесс, в котором создается но¬ вый процесс, называется основным. Деление процессов на основные и неосновные условно, так как неосновные, в свою очередь, разветвляются в ходе вычислений и являются основными по отношению ко вновь создавае¬ мым процессам. В связи с распараллеливанием вычислений возникает понятие критического блока. Критическим называется тот блок (процедура) про¬ граммы, который ответствен за связь между «родствен¬ ными» процессами и выход из которого невозможен, пока существуют процессы, связанные с этим блоком. Понятие критического блока тесно связано с понятием оперативного контекста (контекста выполнения процеду¬ ры) (рис. 3.4). Пусть программа имеет блочную структуру и процеду¬ ра В статически вложена в процедуру А (локальные объекты процедуры А входят в контекст выполнения процедуры В). Пусть процедура В выполняется в про¬ грамме как параллельная ветвь. Поскольку процедура А входит в контекст процедуры В, на протяжении всего су¬ ществования ветви В должны существовать и локальные объекты процедуры А. Процессы А и В работают асинх¬ ронно и соотношения скоростей их выполнения неизвест- 108
Процесс-родитель Подчиненный процесс МкС Адрес критического блока УСВ Активация процедуры А МкС УСВ МкС Активация процедуры В УСВ Активация процедурь; С Программа Рис. 3.4. Критический блок: МкС — маркер стека, УСВ — управляющее слово возврата ны, поэтому обеспечение существования контекста про¬ цедуры В должно осуществляться либо ОС, либо пользо¬ вателем. В связи с этим возникают два типа процессов — подчиненные и независимые. Подчиненные процессы — это параллельные процессы, для которых ОС обеспечивает существование контекста, назначенного пользователем, путем явного указания кри¬ тического блока в момент создания процесса. Независимые процессы — это параллельные процессы, которые не связаны с основными процессами критичес¬ 109 . . .ВЕТВЬ (В) ; ...
ким блоком и для которых существование контекста обеспечивается пользователем во время реализации алго¬ ритма (например, с помощью семафорной синхрониза¬ ции). Естественными независимыми процессами в задаче могут быть процессы, асинхронно выполняющие незави¬ симо оттранслированные программы (если это возможно в задаче пользователя), так как независимо оттранслиро¬ ванная программа статически не вложена в программу, где она вызывается, и поэтому для процесса не нужен критический блок. Любую программу можно запустить в задаче как асинхронно, так и синхронно по отношению к вызываю¬ щей программе, т. е. и как параллельный процесс, и как продолжение уже работающего процесса задачи; при этом выбор способа запуска программы делается пользо¬ вателем. Вообще говоря, не только программа, но и лю¬ бая процедура (блок) программы может выполняться в ОС «Эльбрус» и последовательно, и параллельно. Способ исполнения определяется программистом. Со стороны ОС нет ограничений на распараллеливание в задачах поль¬ зователей. Ограничения накладываются лишь реализуе¬ мыми алгоритмами. Для языка ЭЛЬ-76 критическим блоком является бли¬ жайший, динамически охватывающий точку запуска па¬ раллельных процессов. При выходе из критического бло¬ ка ожидается окончание всех процессов, запущенных в нем. Сопроцессы языка СИМУЛА-67 — псевдопараллель- ные процессы, характеризуются тем, что в каждый мо¬ мент времени выполняется лишь один из сопроцессов. В задаче как бы имитируется параллельная деятельность, сопроцессы чередуются на процессоре и программа сама управляет порядком выполнения сопроцессов. Со стороны ОС обеспечивается необходимая поддержка для реализации сопроцессов и для направленного переклю¬ чения сопроцессов на процессоре. Начало выполнения каждой задачи осуществляется как основной независимый процесс. В ходе вычислений задача может распараллеливаться путем создания под¬ чиненных и независимых процессов и сопроцессов, при¬ чем пути распараллеливания выбираются пользователем во время реализации алгоритма вычислений. Создание и уничтожение процессов. Широкое распа¬ раллеливание — непременное условие эффективной рабо¬ ты ОС в многопроцессорном вычислительном комплексе. но
Достигается оно выполнением процедур ОС на стеках пользователя и на системных стеках. Когда процедура ОС работает с общими данными системы, обеспечивается необходимая синхронизация с возможным выполнением этой же процедуры на другом стеке. Если непосредственно обслуживается запрос пользо¬ вателя, то процедура ОС, как правило, запускается на стеке пользователя, а удовлетворение общесистемных нужд осуществляется на стеках самой ОС, хотя запрос на создание системного процесса может возникнуть в момент работы некоторой процедуры ОС на стеке поль¬ зователя. В этом случае на стеке пользователя форми¬ руется стандартная заявка на системный процесс и ста¬ вится в очередь к постоянно существующему процессу ОС, который, обрабатывая эту очередь, запускает нуж¬ ные процессы. Заявка содержит размер стека под созда¬ ваемый процесс, приоритет этого процесса, метку запус¬ каемой процедуры ОС и фактические параметры. В ре¬ зультате обработки заявки создается системный процесс и ставится в очередь к процессорам. Все системные процессы по своему характеру являются независимыми. Запуск параллельных процессов пользователей осу¬ ществляется непосредственно на основном процессе и только этим отличается от запуска системного процесса. Работа процедуры по созданию процесса заключается в следующем: — в отведении памяти под стек нового процесса; — в заполнении управляющей части («шапки») стека и установлении родственных связей с задачей и началь¬ ного состояния процесса; — во включении созданного процесса в очередь к процессорам. Основные действия по созданию параллельного про¬ цесса — это отведение памяти под стек. Если в системе есть свободная память, то создание процесса выполняет¬ ся быстро. В результате пользователь получает процесс, который сразу же ставится в очередь процессов, готовых к исполнению на процессоре (кроме случая сопроцессов), поскольку любой процесс может попасть на процессор только из очереди готовых процессов. После отведения памяти под стек заполняется управ¬ ляющая часть стека: устанавливаются родственные связи между процессами задачи (новый процесс включается в список всех процессов задачи), выставляется начальное состояние процесса (т. е. будущие регистры процессора). ill
Если создается подчиненный процесс, в основном процес¬ се отмечается критический блок и в нем заводится до¬ кументация на подчиненные процессы, создаваемые в этом блоке. Документация состоит из счетчика числа таких подчиненных процессов. Во вновь созданном про¬ цессе в «шапку» стека заносится адрес критического блока. Связующая информация критического блока по¬ мечается таким образом, чтобы при выходе из него про¬ изошло аппаратное прерывание, по которому запустится соответствующая процедура ОС. Эта процедура находит причину прерывания, и когда такой причиной оказывает¬ ся наличие неоконченных подчиненных процессов (в этом случае счетчик подчиненных процессов не равен нулю), приостанавливает процесс до окончания всех подчинен¬ ных процессов. В свою очередь, в момент окончания подчиненный процесс по адресу критического блока, ко¬ торый находится в «шапке» стека, уменьшает счетчик процессов на единицу. В момент обнуления счетчика основной процесс снова ставится в очередь к процессо¬ рам и продолжает выполнение программы. Три ячейки памяти, находящиеся на фиксированном месте «шапки» стека, определяют состояние необходимых регистров процессора в момент переключения на новый процесс. Начальное состояние процесса выставляется ОС в момент создания процесса, после чего процесс ставит¬ ся в очередь к ЦП для выполнения вычислений. Любой процесс, как пользовательский, так и системный, на¬ чинается с выполнения одной и той же процедуры ОС, которая завершает инициализацию процесса. Для сопроцессоров имеется отличие: они не попадают на процессор в момент создания, поскольку управление ими осуществляется самой программой и последователь¬ ность выполнения сопроцессов указывается явно в прог¬ рамме пользователя. Уничтожение процессов является следствием одной из трех причин: — нормального завершения процесса в результате выполнения всех необходимых вычислений; — ненормального завершения из-за ошибки в про¬ грамме; — принудительного окончания процесса в результате воздействия другого процесса задачи или системы. Система выдает необходимую информацию о причи¬ нах окончания процесса и о том месте в программе, где закончились вычисления. 112
Уничтожение процесса состоит из двух этапов. На первом этапе отрабатывают процедуры ОС непосредственно на стеке завершающегося процесса, во время работы которых возвращаются локальные масси¬ вы, заказанные во время выполнения процесса, уничто¬ жаются подчиненные процессы, созданные в нем, и т. д., т. е. происходит отказ от локальных объектов данного процесса. Затем процесс удаляется из списка процессов задачи и тем самым обрываются его родственные связи с другими процессами задачи. На втором этапе происходит отказ от памяти, занятой под стек, однако его невозможно выполнять на уничтожаемом стеке, так как в этом случае после отказа от стека процессор не смог бы нормально продолжать работу. Поэтому отказ от стека любого процесса, как системного, так и пользовательского, происходит на спе¬ циальном, постоянно существующем процессе ОС. В момент окончания уничтожаемый процесс ставит себя в очередь к специальному процессу и переключает про¬ цессор на другой процесс. Став активным, указанный специальный процесс возвращает память из-под стека. ОС осуществляет синхронизацию действий по ликвида¬ ции стека и работы его на процессоре. В момент унич¬ тожения стека система может оказаться недогруженной и процесс не сможет переключиться с процессора до тех пор, пока не появятся новые процессы, готовые к выпол¬ нению. Если завершается последний процесс в задаче поль¬ зователя, то завершается и сама задача. 3.3. Синхронизация процессов Для обеспечения многопроцессорной ра¬ боты необходимы средства прерывания процессоров. К ним относятся: — внешние прерывания, которые обеспечивают взаи¬ модействие всех составных частей вычислительного комп¬ лекса и позволяют ОС эффективно управлять комплек¬ сом; к ним относятся прерывания: аварийное, процессор — процессор, процессор ввода-вывода — процессор, от внешних объектов, от таймера; 8—675 113
— системные прерывания, необходимые ОС для эф¬ фективного управления МВК; к ним относятся: прерывание, возникающее при выходе из процедур, в которых заведены локальные объекты. Это прерывание служит для своевременного отказа от локальных объек¬ тов процедур и блоков программы в момент окончания этих процедур. Аналогичное прерывание происходит при глобальном переходе из процедур с локальными объек¬ тами; переполнение страницы стека; прерывания, возникающие при выполнении операции типа «закрыть семафор» над закрытыми семафорами. Для того чтобы реализовать механизм прерываний, в МВК «Эльбрус-2» предусмотрены следующие команды; ПРЕРВАТЫДП — прерывание процессоров; ОТВЕТЦП — сигнал процессор — процессор; ЖДАТЫДП — ожидание сигнала, посылаемого дру¬ гим процессором командой ОТВЕТЦП; 69 63 37 36 35 33 32 31 О ТЕГ 04 зп сч сх АДРЕС (ВРЕМЯ) Рис. 3.5. Семафор МВК «Эльбрус-2» ЗАКВП — закрытие (блокировка) внешних прерыва¬ ний; ОТКВП — открытие (снятие блокировки) внешних прерываний. Проблемы синхронизации решаются на основе аппа¬ ратной реализации семафоров и операций над ними [6]. Опишем реализацию операций синхронизации, в част¬ ности, дейкстровских операций Р (закрытие семафора) и V (открытие семафора) в МВК «Эльбрус-2». Семафоры представляют собой специальный тип дан¬ ных, имеющий собственный тег; над семафорами воз¬ можны операции закрытия и открытия (рис. 3.5). Структура семафора позволяет выполнять над ним также операции «закрыть семафор по записи» и «закрыть семафор по чтению». Закрыть семафор по записи может только один процесс, при этом никакой другой процесс не сможет закрыть семафор по чтению. Закрыть сема¬ фор по чтению могут одновременно несколько процессов; пока семафор закрыт по чтению, его нельзя закрыть по записи. 114
В семафоре имеются следующие поля: СХ — этим полем семафор блокируется в оперативной памяти на время операции; ЗП — если ЗП=1, то семафор закрыт по записи; СЧ — счетчик числа закрытий по чтению; 04 — признак наличия очереди процессов, ждущих открытия семафора; АДРЕС (ВРЕМЯ) — ссылка на первый стек в очере¬ ди ждущих открытия (для закрытого семафора) или время открытия (для открытого семафора). В МВК «Эльбрус» имеется ряд аппаратных команд, на основе которых реализуется набор примитивов синх¬ ронизации. Команды закрытия семафора: ЗСЕМЗП1 — закрыть семафор по записи с закрытием внешних прерываний; реализует примитив языка ЭЛЬ-76 ЖУЖ (ИМЯ СЕМ)*; ЗСЕМЗП2 — закрыть семафор по записи; реализует примитив ЗАКРЫТЬСЕМ (ИМЯ СЕМ); ЗСЕМСЧ1 —закрыть семафор по чтению с закрыти¬ ем внешних прерываний, реализует примитив ЖУЖЧ (ИМЯ СЕМ); ЗСЕМСЧ2 — закрыть семафор по чтению, реализует примитив ЗАКРЫТЬЧ(ИМЯ СЕМ). У всех этих команд один параметр — адрес семафора. Операции первого (ЗСЕМЗП 1 и ЗСЕМСЧ1) и второго (ЗСЕМЗП2 и ЗСЕМСЧ2) типов выполняются одинаково. Отличие их состоит лишь в том, что операции первого типа закрывают внешние прерывания; в случае закрыто¬ го семафора возникают прерывания с различными номе¬ рами. Операции выполняются следующим образом: счи¬ тывается слово по адресу и на время выполнения опе¬ рации в разряд СХ слова в памяти записывается 1. Если у считанного слова СХ = 1, то считывание повторя¬ ется, пока не придет слово с СХ = 0. Далее проверяется разряд ЗП и код в разрядах счетчика (СЧ). Если поле ЗП =1, то происходит прерывание. Если ЗП = 0 и СЧ = 0, то в командах ЗСЕМЗП разряд ЗП устанавли¬ вается в 1 и измененное слово записывается по прежне¬ му адресу. Если СЧ >> 0, то при командах ЗСЕМЗП про¬ исходит прерывание. При командах ЗСЕМСЧ, если СЧ = = 7, то возникает прерывание, иначе к СЧ прибавляет - * Служебное слово ИМЯ специфицирует передачу параметра «по ссылке» («по адресу»). 8* 115
ся 1 и измененное слово записывается по прежнему адресу. В случае прерывания вызывается системная про¬ цедура и процесс, выполняющий семафорную операцию, приостанавливается до открытия семафора. Команда открытия семафора: ОТКСЕМ — открыть семафор. Параметр — адрес се¬ мафора. Эта операция считывает семафор и одновременно в разряд СХ слова в памяти записывает 1; если у счи¬ танного слова СХ = 1, то считывание повторяется, пока поле СХ не будет равно 0. Если в семафоре разряд 04 >► >> 0, то возникает прерывание. Если поле 04 равно О, а поле ЗП = 1, то ЗП устанавливается в 0. Если 04 = О, ЗП = 0 и СЧ > 0, то поле СЧ уменьшается на 1. Измененное указанным образом значение семафора записывается по прежнему адресу. В случае прерывания системная процедура активизирует процессы, ждущие открытия семафора. Команда реализует примитивы язы¬ ка ЭЛЬ-76 ОТКСЕМ (ИМЯ СЕМ) и ОТКРЫТЬСЕМ (ИМЯ СЕМ). Вместо обозначений ЗАКРЫТЬСЕМ и ОТКРЫТЬСЕМ можно пользоваться обозначениями ЗАКРЫТЬ и ОТКРЫТЬ соответственно. На основе команд центрального процессора реализо¬ ваны также примитивы ЖДАТЬ (ИМЯ СЕМ) и ПРО¬ ПУСТИТЬ (ИМЯ СЕМ). Это — процедуры операционной системы. ЖДАТЬ работает так же, как ЗАКРЫТЬСЕМ, но оставляет после своего исполнения семафор открытым. Если в результате выполнения операции ЗАКРЫТЬ¬ СЕМ или ЖДАТЬ над закрытым семафором процесс приостанавливается и в дальнейшем в результате опера¬ ции ОТКРЫТЬСЕМ снова попадает на процессор, то его выполнение продолжается с той же операции ЗАКРЫТЬСЕМ или ЖДАТЬ соответственно. При этом семафор снова может оказаться закрытым и тогда про¬ цесс опять попадает в очередь к семафору. Порядок закрытия семафора процессами определяется алгорит¬ мом пользователя и приоритетами процессов. Наиболее приоритетный процесс быстрее получает доступ к про¬ цессору и тем самым он первым получает доступ к об¬ щим данным в задаче. Операция ПРОПУСТИТЬ, так же как и ОТКРЫТЬ СЕМ, проверяет, есть ли очередь к семафору, и если есть, то переводит все ждущие процессы в очередь к процес¬ сору, оставляя семафор закрытым. При этом связующая информация в стеках этих процессов изменяется таким 116
образом, чтобы выполнение процессов продолжилось не с команд ЗАКРЫТЬСЕМ или ЖДАТЬ, на которых про¬ цессы были приостановлены, а со следующих команд и, следовательно, процессы, попадая на процессор, уже не проверяют состояние семафора. Выполняется эта опера¬ ция, в отличие от ОТКРЫТЬСЕМ, процедурой из интер¬ фейса ОС. ЖУЖ (ИМЯ СЕМ) —привилегированная операция (как и ЖУЖЧ), доступная лишь привилегированному пользователю, закрывает семафор СЕМ и одновременно внешние прерывания. Если семафор закрыт, то происхо¬ дит прерывание, выход из прерывания и снова повторе¬ ние операции и так до тех пор, пока тот процессор, ко¬ торый закрыл семафор СЕМ, не откроет его, после чего выполняется команда, следующая за ЖУЖ. Таким об¬ разом, эта операция отличается от ЗАКРЫТЬСЕМ тем, что, во-первых, закрываются внешние прерывания и, во-вторых, процесс не освобождает процессор в случае закрытого семафора, а ждет открытия семафора непо¬ средственно на ЦП. Необходимость в таком примитиве вызвана тем, что очередь к семафору является общим ресурсом, и поэтому при постановке в очередь к закрыто¬ му семафору нужно закрывать какой-то другой семафор. Поэтому при постановке в очередь к семафору исполь¬ зуется операция ЖУЖ, не требующая для своей реализа¬ ции работы с очередями. Кроме того, использование этой операции вызвано соображениями повышения эф¬ фективности работы ЦП. Отметим, что операция ОТКСЕМ не открывает внеш¬ ние прерывания. Синхронизация процессов необходима при работе с общими данными, причем структура синхронизации зави¬ сит от алгоритма вычислений. Можно выделить два ос¬ новных класса алгоритмов синхронизации при работе параллельных процессов: 1) взаимное исключение процессов при обращении к общим данным (ресурсная синхронизация); 2) упорядочение во времени действий с общими дан¬ ными (событийная синхронизация). Более сложная синхронизация представляет собой суперпозицию этих двух классов в том или ином сочета¬ нии с возможным наложением дополнительных ограни¬ чений на выполнение процессов. Критической секцией называется та часть программы, в которой происходит работа с общими данными. Реше¬ 117
ние задачи взаимного исключения состоит в том, что каждый процесс при входе в критическую секцию выпол¬ няет операцию ЗАКРЫТЬСЕМ (ИМЯ СЕМ), а при выходе из нее — операцию ОТКРЫТЬСЕМ (ИМЯ СЕМ). Здесь СЕМ — семафор, связанный с конкретными общими данными, обеспечивает синхронизацию доступа к этим данным процессов. В каждом процессе может быть несколько критичес¬ ких секций, связанных с различными общими данными. В этом случае в программе следует предусматривать несколько семафоров, связанных с различными набора¬ ми общих данных, и тогда при входе в критическую секцию закрывается тот семафор, который связан с конк¬ ретным набором общих данных. Рассмотрим решение простейшей задачи синхрониза¬ ции второго класса. Пусть один из взаимодействующих процессов записывает информацию в массив, а осталь¬ ные процессы (один или несколько) считывают ее. Отличие этой схемы синхронизации от предыдущей за¬ ключается в том, что те процессы, которые считывают информацию, не конфликтуют между собой и могут од¬ новременно обращаться к информации. Реализация этой схемы основана на операции ЖДАТЬ (ИМЯ СЕМ). Процесс, который создает информацию, после создания открывает семафор СЕМ, а процессы, ждущие инфор¬ мацию, перед обращением к ней выполняют операцию ЖДАТЬ (ИМЯ СЕМ) и, таким образом, получают воз¬ можность сосчитать информацию лишь после того, как будет открыт семафор СЕМ. Кроме того, так как опера¬ ция ЖДАТЬ не закрывает СЕМ, все процессы, считы¬ вающие информацию, получают возможность одновре¬ менного доступа к ней. При взаимном исключении семафор открыт вне кри¬ тической секции и тем самым он должен быть открыт в начале исполнения программы. При событийной син¬ хронизации семафор открывается лишь после создания информации и поэтому в начале исполнения программы должен быть закрыт. Поскольку семафор может содержать адресную ин¬ формацию (очередь процессов), пользователю запреща¬ ется в непривилегированном режиме создавать семафор, и поэтому при заведении семафора он должен обратиться к процедуре ОС. Пользователь может получить как от¬ крытый, так и закрытый семафор. Задача взаимного исключения в ОС решается не толь¬ 118
ко операциями ЗАКРЫТЬСЕМ и ОТКРЫТЬСЕМ, но и привилегированными операциями ЖУЖ и ОТКСЕМ. Перечисленные схемы синхронизации не исчерпывают, конечно, решения всех проблем синхронизации, возника¬ ющих при параллельном программировании, однако опи¬ санные примитивы синхронизации и различные их со¬ четания позволяют реализовать любые алгоритмы синхронизации. 3.4. Взаимодействие процессов и процессоров В МВК «Эльбрус» число процессов, ра¬ ботающих в системе, зависит от загруженности системы и от наличия свободных ресурсов. Оно непосредственно не связано с числом процессоров. Обычно число процес¬ сов во время вычисления больше, чем число процессо¬ ров, причем процессы могут находиться в различных состояниях. Можно выделить три основных состояния процесса: 1) «активен» — выполняется на процессоре; 2) «готов» — процесс может выполняться, но из-за отсутствия свободного процессора не выполняется; 3) «ждет» — процесс не может выполняться до тех пор, пока не произойдет некоторое событие; типичным событием является открытие семафора или окончание об¬ мена. Имеется ряд промежуточных состояний процесса, например «закончен», и другие состояния, необходимые для правильного функционирования системы. Распределение процессоров между процессами. Все процессы в состоянии «готов» образуют единую очередь к процессорам (рис. 3.6), упорядоченную по приоритетам. В системе «Эльбрус» принята приоритетная схема об¬ служивания процессов, т. е. следующим на процессоре выполняется самый приоритетный процесс из очереди готовых процессов. Первоначально приоритет процесса назначается исходя из приоритета задачи, который, в свою очередь, устанавливается при входе пользователя в систему. Приоритет процесса складывается из приоритета класса, в который попадает задача, и из приоритета внутри класса. Перечислим основные классы задач в МВК «Эльбрус». Системный класс, процессы которого имеют 119
Процесс Процесс Рис. 3.6. Схема очереди к процессору наивысший приоритет, включает в себя ОС, т. е. систем¬ ные процессы, управляющие ходом вычислений, а также задачи, работающие в режиме реального времени. Класс разделения времени включает в себя задачи пользователей, работающих за терминалом в интерактивном режиме. При этом время ЦП, требуе¬ мое для выполнения введенного с терминала приказа, не должно превышать порог в несколько секунд (1—3 с), например редактирование, листание справочников. Если же время превышает указанный порог, то задача пере¬ ходит в следующий, диалоговый класс. Диалоговый класс содержит задачи, для ко¬ торых выполнение текущего приказа варьируется от нескольких секунд до нескольких минут (1—3 мин). Если время исполнения приказа больше нескольких ми¬ нут, то задача переходит в пакетный класс. Следует отметить, что после того как введенный с терминала приказ будет выполнен, задача снова попадет в класс разделения времени. Пакетный класс, процессы которого имеют низший приоритет, включает в себя задачи, выполняю¬ щиеся в пакетном режиме, а также диалоговые задачи, исполняющие приказы, которые требуют длительного времени. Переключение процессоров с процесса на процесс заключается в выборе самого приоритетного процесса из очереди к процессорам (этот процесс находится в начале очереди), реорганизации очереди и смене стека на процессоре. Смена процессов на процессоре происходит по раз- 120 КПРОЦЕССОРУ ОЧЕРЕДЬ ОЧЕРЕДЬ
ным причинам, например при выполнении семафорной операции над закрытым семафором, при окончании про¬ цесса, при воздействии на процесс со стороны другого процесса и т. д. Кроме того, смена процессов может вызываться исчерпанием кванта времени, отведенного под непрерывное выполнение текущего процесса. Кванто¬ вание времени — важное средство управления загрузкой процессоров, оно используется для контроля зацикливаний в задачах пользователей и для быстрого перехода наибо¬ лее приоритетных процессов из состояния «готов» в сос¬ тояние «активен». При каждом переключении процессора на новый про¬ цесс в регистр ТАЙМЕР заносится время (например, 14 мс), в течение которого процесс непрерывно выпол¬ няется на ЦП. Под непрерывностью здесь понимается тот факт, что при нормальном ходе вычислений и отсутст¬ вии внешних прерываний процесс выполняется на ЦП в течение указанного времени. Регистр ТАЙМЕР пред¬ ставляет собой счетчик, из которого аппаратно каждую микросекунду вычитается единица, и, как только содер¬ жимое регистра становится равным нулю, происходит прерывание, по которому запускается процедура ОС. Эта процедура проверяет, не исчерпал ли выполняемый процесс лимита времени ЦП, отведенного задаче, и если исчерпал, то процесс и вся задача аварийно завершают¬ ся. Если лимит не исчерпан, то приоритет выполняемого процесса сравнивается с приоритетом процесса, стоящего в начале очереди к процессорам. Если приоритет выпол¬ няемого процесса выше, то ему выделяется следующий квант времени и он продолжает работу, иначе он пере¬ водится в состояние «готов», а процессор переключается на самый приоритетный процесс. Длина кванта времени может изменяться оператором системы в зависимости от использования конкретного вычислительного комп¬ лекса. В момент переключения происходит подсчет и конт¬ роль времени работы ЦП, затраченного процессом в ходе вычислений. Процедуры взаимодействия процессов и процессоров позволяют любому процессу во время исполнения вме¬ шаться в ход вычислений другого процесса (если это необходимо) и приостановить, уничтожить его или заста¬ вить выполнить указанные действия. При этом воздейст¬ вие на процесс осуществляется независимо от того, вы¬ полняется ли в данный момент процесс на ЦП или нет. 121
Причем если процесс находится на ЦП, то при необхо¬ димости можно прервать ЦП и осуществить таким обра¬ зом воздействие на процесс через процедуры взаимодей¬ ствия процессоров. Кроме того, в некоторые моменты времени ОС необходимо выполнить синхронные действия на всех ЦП. Тогда происходит непосредственное обраще¬ ние к процедурам взаимодействия процессоров, напри¬ мер, при удалении из каждого процессора информации о соответствии математического и физического адресов математической страницы задачи пользователя. Взаимодействие процессов в ОС «Эльбрус» организо¬ вано таким образом, что процесс (активный), воздейст¬ вующий на другой процесс (пассивный), лишь посылает ему сигнал с указанием работы, которую тот должен вы¬ полнить и, кроме того, если пассивный оказался на про¬ цессоре, то прерывает его в необходимых случаях. Сиг¬ нал от активного процесса с указанием работы заносится в «шапку» стека пассивного процесса и обрабатывается им самим по прерыванию от активного процесса либо в момент активизации на процессоре (если во время взаимодействия пассивный процесс не находится на ЦП). На этом непосредственное взаимодействие заканчивает¬ ся. Пассивный процесс обрабатывает полученный сигнал от активного процесса и выполняет необходимую работу. Взаимодействие процессов либо осуществляется ОС между процессами задачи пользователя, либо является результатом воздействия ОС на процессы задачи пользо¬ вателя. В любом случае во время воздействия активного процесса на пассивном могут выполняться процедуры ОС, и тогда нельзя сразу выполнять указанную работу, прервав выполнение процедур ОС, так как могут оказать¬ ся рассогласованными общие данные системы. Поэтому необходимо закончить работу процедур ОС на пассивном процессе. Для этого при получении сигнала по связую¬ щей информации определяется место обращения поль¬ зователя к ОС и адрес этой связующей информации за¬ поминается в «шапке» стека, а сама связующая инфор¬ мация помечается таким образом, что при выходе из системной процедуры в процедуру пользователя происхо¬ дит прерывание и выполняется работа, указанная актив¬ ным процессом. Каждый тип взаимодействия процессоров имеет свой номер. Примерами могут служить: приостановка процес¬ са, глобальный переход по метке (ситуации) из подчи¬ ненного процесса в основной, уничтожение процесса 122
и т. п. Поскольку на процесс могут воздействовать сразу несколько других процессов с различными типами взаимодействия, эти типы упорядочены таким образом, что тип с большим номером обрабатывается в первую очередь. Например, если процессу поступили два сигна¬ ла: один — приостановить, другой — уничтожить, то про¬ цесс уничтожается, так как это более приоритетный тип взаимодействия. В «шапке» стека каждого процесса име¬ ется шкала работ, в которой фиксируются сигналы от других процессов. Приведем основные типы взаимодействия: глобальный переход из подчиненного процесса. Взаимодействие такого типа происходит, когда метка, по которой осуществляется переход, описа¬ на в основном процессе, а переход возникает в подчинен¬ ном процессе. При этом подчиненный процесс заканчи¬ вается и сообщает основному процессу о глобальном переходе. В результате взаимодействия процессов основ¬ ной процесс прерывает свое выполнение и продолжает переход на собственном стеке. Точно так же реализуется глобальный переход по ситуации, возникшей в подчинен¬ ном процессе и переопределенной в основном процессе (либо вообще не переопределенной); приостановка процесса. Такой тип позво¬ ляет ОС приостановить некоторые процессы в задачах пользователей; уничтожение процесса. Процесс может уничтожаться либо системой (например, из-за ошибок в задаче пользователя), либо пользователем с помощью доступной ему процедуры ОС. В результате на процессе возбуждается системная ситуация КОНЕЦПРОЦЕССА, которая и приводит к уничтожению процесса; активизация процесса. Это наиболее прос¬ той тип взаимодействия, он заключается в постановке активизируемого процесса в очередь к процессорам, в результате чего продолжится его нормальная работа. Во время взаимодействия процессов пассивный про¬ цесс может оказаться на процессоре, в этом случае про¬ цессор прерывается, для того чтобы процесс выполнил требуемую работу. Механизм взаимодействия процессоров [18] реализо¬ ван на базе аппаратных команд прерывания процессоров, которые позволяют прервать конкретные, указанные в маске, процессоры (рис. 3.7). Остальные процессоры продолжают нормальную работу. Механизм взаимодейст- 123
ПРОЦЕСС на главном ЦП Активация процедуры ПРЕРВАТЬ Процесс на прерываемом ЦП Прерыватель ЦП Процесс на прерываемом ЦП Рис. 3.7. Схема прерывания ЦП вия процессоров представляет собой последовательность синхронных действий: — прерываются процессоры, указанные в маске (ко¬ мандой ПРЕРВАТЫДП), и прерывающий (главный) ЦП ждет ответа (посылаемого командой ОТВЕТЦП) от каждого прерванного ЦП; — после того как все ответы пришли, главный ЦП дает приказ выполнить указанную процедуру, причем этой процедурой может быть любая процедура ОС, и ожидает окончания ее выполнения каждым ЦП; — главный ЦП дает сигнал всем прерванным ЦП продолжить работу. Если прерываемый процессор выполняет участок с закрытыми (заблокированными) внешними прерывателя¬ 124 Активация процедуры ОТВЕТ Активация процедуры ОТВЕТ
ми, то сигнал прерывания хранится на регистре ЦП до снятия блокировки внешнего прерывания, после чего пре¬ рывание обрабатывается. Закрытие внешних прерываний происходит при выполнении операции ЗАКВП, ЖУЖ, ЖУЖЧ либо при входе в процедуру с закрытыми внеш¬ ними прерываниями. Открытие внешнего прерывания осу¬ ществляется командой ОТКВП, либо при возврате в про¬ цедуру с открытыми внешними прерываниями. Механизм взаимодействия процессоров и процессов позволяет ОС эффективно вмешиваться в ход вычислений и эффективно управлять распределением ресурсов вы¬ числительного комплекса. 3.5. Многопроцессорность и управление памятью Способы реализации виртуальной памяти оказываются в некоторых отношениях обусловленными многопроцессорностью вычислительного комплекса. Структура виртуальной памяти. Виртуальная память МВК «Эльбрус» состоит из отдельных сегментов объект¬ ного кода и массивов данных, причем большие массивы разбиваются на страницы. Сегменты и страницы обладают тем свойством, что смежность внутри них по виртуальным адресам совпада¬ ет с физической смежностью в ОЗУ. Учет специфики того или иного класса адресов позво¬ ляет сделать ОС более эффективной. В МВК «Эльбрус» последовательно проводится разделение объектного кода и данных, подвергаемых обработке. Объектный код яв¬ ляется неизменяемым, параллельно используемым (реен¬ терабельным). Пользователь не работает с адресами по объектному коду. Эти его свойства учитываются при ор¬ ганизации виртуальной памяти. Для объектного кода применен сегментный метод. Когда сегмент кода присутствует в ОЗУ, его описа¬ телем служит дескриптор программного сегмента, кото¬ рый содержит физический адрес сегмента в ОЗУ, а также длину сегмента. Если сегмент отсутствует в памяти, то описатель представляет собой заявку на код, в котором вместо адреса по оперативной памяти находится адрес по файлу кода. При передаче управления в отсутствую¬ щий сегмент возникает аппаратное прерывание, реакцией на которое является выделение физической памяти, счи¬ тывание в нее сегмента с внешнего устройства и замена 125
заявки на дескриптор. Выделение областей памяти для объектного кода осуществляется с округлением величины запроса до числа слов, кратного четырем. Таким обра¬ зом, каждому сегменту программы соответствует един¬ ственный описатель. Все они сосредоточены в словаре сегментов — таблице, описывающей местоположение отдельных фрагментов кода данной программы. Во время исполнения программы ссылка на ее словарь сегментов содержится в специальном регистре процессора, который загружается аппаратно при передаче управления из од¬ ной независимо оттранслированной программы в другую. Для того чтобы не накладывать ограничения на распространение адресной информации по пользователь¬ ским массивам, вводятся математические адреса и уст¬ раивается скрытый от пользователя механизм преобразо¬ вания адресов. Математическая память — это один из возможных способов реализации виртуальной памяти. В МВК «Эль¬ брус» он выбран для всех видов обрабатываемых данных. В МВК «Эльбрус» принята страничная организация математической памяти со страницами переменной длины. Математический адрес состоит из 23-разрядного адре¬ са страницы и 9-разрядного индекса слова в странице. Массив (сегмент) начинается с начала страницы и за¬ нимает минимально необходимое число страниц. В одной странице находятся элементы только одного массива. Механизм преобразования адресов работает постра¬ нично. Перевод математических адресов в физические осу¬ ществляется с помощью специальных системных таблиц. У каждой задачи своя собственная математическая память, которая не переиспользуется. Это значит, что после того как массив уничтожается, в адресном прост¬ ранстве, которое он занимал, не разрешается размещать никакой новый объект. При попытке обратиться по не¬ действительному адресу выдается сообщение об ошибке, поэтому нет надобности разыскивать и уничтожать ссылки на ликвидируемый объект. В общем случае последнюю страницу массив зани¬ мает не полностью, остаток последней страницы матема¬ тической памяти, отведенный под массив, никак не ис¬ пользуется. Физическая память выделяется под страни¬ цы, как и под сегменты кода, с точностью до четырех слов. Страница имеет в математической памяти длину 126
в 512 слов. Размер ее не является минимальным физи¬ ческим ресурсом, выделяемым программе, и поэтому выб¬ ран сравнительно большим, что уменьшает накладные расходы на работу с таблицами математической памяти. Иерархия примитивов синхронизации. Операционная система предоставляет пользователям виртуальную па¬ мять — память одного уровня, но реально в МВК инфор¬ мация хранится в различных устройствах, которые в за¬ висимости от времени обращения и емкости можно разбить на три уровня. К первому уровню, имеющему самое малое время доступа и самый малый объем, относится буферная сверхоперативная память при каждом процессоре (СОЗУ, или регистровая память). Под нею понимается совокупность функционально специализированных уст¬ ройств, находящихся внутри центрального процессора и составляющих часть его конструкции. Регистровая па¬ мять технологически построена так же, как и остальные модули процессора, и поэтому ее быстродействие соот¬ ветствует быстродействию процессора в целом. Второй уровень образует основная оперативная па¬ мять ОЗУ. Оперативную память можно рассматривать как однородную и состоящую из отдельных машинных слов. ОЗУ является общим для всех процессоров, кото¬ рые непосредственно обращаются к элементам памяти. Объем ОЗУ достаточно велик, для того чтобы в нем раз¬ местились все нужные для вычислений в некоторый период времени сегменты объектного кода и массивы данных, но все же недостаточен для размещения всей информации, обрабатываемой вычислительной системой. Третий уровень представляет собой внешняя память на магнитных барабанах и дисках*. Для системы управ¬ ления памятью диски и барабаны — это расширение ОЗУ, вызванное его недостаточным объемом, и отличает¬ ся от ОЗУ большей емкостью и меньшим быстродействи¬ ем. Процессор не обладает способностью непосредственно работать с данными на внешних устройствах. Информа¬ цию необходимо предварительно сосчитать в ОЗУ посред¬ ством операций обмена, выполняемых процессором вво¬ да-вывода. Решение задачи синхронизации по доступу к общим данным в ОС «Эльбрус» основано на алгоритме взаим¬ * Вместо дисков и барабанов возможно подключение массовой полупроводниковой памяти. 127
ного исключения. Посредством семафорных операций обеспечивается, что критическая секция программы ис¬ полняется лишь на одном процессе. Для каждой совокупности общих данных нужно пре¬ дусматривать отдельный семафор и над ним выполнять операции семафорных скобок. Каждому уровню памяти, на котором могут находить¬ ся общие данные, соответствуют свои операции синхрони¬ зации. Время выполнения операции синхронизации должно быть меньше ожидаемого времени исполнения критичес¬ кой секции. Время исполнения критической секции зави¬ сит от уровня памяти, в которой находятся общие данные. При этом, если точно не известно, где они нахо¬ дятся (в случае, когда к ним обращаются по виртуаль¬ ным адресам), приходится действовать исходя из пред¬ положения, что они в самой медленной памяти. Массивы, обращение к которым происходит по математическим адресам, могут быть откачены на диск или барабан и поэ¬ тому пользователю выдаются только средства синхрони¬ зации самого медленного, 3-го уровня. Обращение к информации 3-го уровня памяти может вызвать обмен. Пока он идет, процесс покидает централь¬ ный процессор, на котором в это время работают другие процессы. Поэтому при исполнении примитивов синхрони¬ зации 3-го уровня процесс ждет открытия семафора в очереди, не занимая процессор. Семафорные операции с постановкой в очередь обоз¬ начаются в ЭЛЬ-76 как ЗАКРЫТЬСЕМ и ОТКРЫТЬСЕМ. Алгоритм синхронизации имеет вид: ЗАКРЫТЬСЕМ (ИМЯ СЕМ) ; КРИТИЧЕСКАЯСЕКЦИЯ; ОТКРЫТЬСЕМ (ИМЯ СЕМ) где СЕМ — идентификатор семафора или любая конст¬ рукция, вырабатывающая имя семафора. В ОС имеется ряд таблиц, списков и других структур данных, заведомо находящихся в ОЗУ. К таковым отно¬ сятся, например, списки, используемые для управления физической памятью. В ОС как программе, работающей в реальном масштабе времени, нежелательно использо¬ вание сложных, в особенности основанных на переборе, алгоритмов, поэтому время работы процедур ОС с общи¬ ми данными весьма невелико. Во всяком случае оно рас¬ тет не более чем линейно с ростом объемов таблиц 128
и списков. Поэтому процессу нецелесообразно, обнару¬ жив, что другой процесс захватил их в свое распоряже¬ ние, покидать центральный процессор и становиться в очередь к семафору. Время переключения на другой стек может оказаться больше времени исполнения критичес¬ кой секции. Процессу выгоднее подождать, занимая процессор и все время «щупая» семафор, пока он не откроется. Такой вариант ожидания реализуется конструкциями ЖУЖ и ОТКСЕМ, так что синхронизированные действия записываются как ЖУЖ (ИМЯ СЕМ); КРИТИЧЕСКАЯСЕКЦИЯ; ОТКСЕМ (ИМЯ СЕМ) Синхронизация без потери процессоров нужна не толь¬ ко для повышения эффективности, без нее не удается реали¬ зовать обычные операции ЗАКРЫТЬСЕМ и ОТКРЫТЬ- СЕМ. Однако следует подчеркнуть, что она по своей сути больше соответствует природе вычислений с заведо¬ мо расположенными в ОЗУ данными. Длительными такие вычисления в ОС не должны быть, потому что вообще ОС должна работать быстро. Сверхоперативная память в процессорах содержит копию информации из общей оперативной памяти. Для информации, с которой работает только данный процес¬ сор, эта копия может оказаться более свежей, чем содер¬ жимое ячейки ОЗУ, поскольку не всегда изменение ре¬ гистров сразу отражается в ОЗУ. Для информации, кото¬ рая обрабатывается несколькими процессорами, копия в СОЗУ содержит, вообще говоря, устаревшую версию ин¬ формации. Синхронизация на верхнем уровне, т. е. син¬ хронизация процессоров, является наиболее сложной, по¬ скольку лишние действия понижают быстродействие про¬ цессора с высокой степенью параллельности в исполне¬ нии команд. Основная идея синхронизации на первом уровне — уровне процессоров — заключается в том, что на период работы с общими данными одного процессора другие процессоры прерываются, им передаются сведения о том, что в СОЗУ может оказаться копией информации, кото¬ рая будет изменяться в общей памяти. После окончания критической секции прерванные процессоры возобновля¬ ют работу и считывают необходимые общие данные в СОЗУ. 9—675 129
Сначала исполняется процедура ПРЕРВАТЬ. В ка¬ честве параметра ей подается метка процедуры синхро¬ низации, которая запускается на всех прерванных про¬ цессорах как процедура без параметров. Она призвана осуществить всю работу по чистке буферной памяти в процессорах. Параметры отсутствуют, так как их трудно аппаратно реализовать при запуске процедуры на другом процессоре. Поскольку действия по чистке СОЗУ явля¬ ются специфичными для каждого случая синхронизации, необходима некоторая форма передачи параметров, осу¬ ществляемая через специально выделенные для каждой из процедур глобальные переменные. Использовать гло¬ бальные переменные можно, потому что к моменту их использования все процессоры, кроме одного, окажутся прерванными. Когда упомянутые переменные будут под¬ готовлены, на процессоры посылается сигнал, по которо¬ му они начинают исполнять процедуру синхронизации. В это время главный процессор начинает работать в критической секции, поскольку остальные не мешают ему. После завершения критической секции на главном процессоре другие процессоры получают сигнал возвра¬ щения к нормальной работе. Таким образом, алгоритм синхронизации имеет вид ПРЕРВАТЬ (МАСКАЦП, СИНХРОПРОЦ); ПЕРЕДАЧАСИНХРОПАРАМ; ОТВЕЧАТЬ (МАСКАЦП); КРИТИЧЕСКАЯСЕКЦИЯ; ПРОДОЛЖАТЬ (МАСКАЦП) Здесь СИНХРОПРОЦ — процедура, которая вытрав¬ ляет копии общих данных в сверхоперативной памяти процессоров; МАСКАЦП — маска на те процессоры, ко¬ торые следует прерывать (в большинстве случаев пре¬ рываются только процессоры, исполняющие процессы за¬ дачи, которой принадлежит перемещаемая страница); ПРЕРВАТЬ — процедура ОС; ПЕРЕДАЧАСИНХРОПА¬ РАМ — подготовка глобальных переменных для процеду¬ ры СИНХРОПРОЦ; ОТВЕЧАТЬ и ПРОДОЛЖАТЬ — процедуры ОС. Все действия осуществляются при закры¬ тых внешних прерываниях. В некотором смысле фрагмент алгоритма ПРЕР¬ ВАТЬ — ОТВЕЧАТЬ является аналогом операции закры¬ тия семафора для процессоров. Суть данных действий состоит в том, чтобы приостано¬ вить работу других процессоров. Наличие в них сверх¬ 130
оперативной памяти, содержащей, возможно, копию об¬ щих данных, с которыми осуществляются вычисления в критической секции, требует соответствующей чистки этой памяти. Приостановка процессоров гарантирует, что при исполнении критической секции не появится новых копий. ПРОДОЛЖАТЬ — аналог операции открытия сема¬ фора. Опишем случаи применения синхронизации на уров¬ не центральных процессоров в подсистеме управления памятью [19]. При перемещении сегмента кода по ОЗУ или откачке его на диск или барабан (поскольку код является неиз¬ меняемым, на внешнем устройстве всегда есть экземпляр его, и откачка поэтому является тривиальной — физичес¬ кого обмена не происходит) необходимо скорректировать адреса этого сегмента в процессорах. Для этого процеду¬ ра синхронизации, запускаемая по описанному выше ал¬ горитму на всех (кроме главного, т. е. такого, который прервал остальные) процессорах, считывает новое значе¬ ние дескриптора программного сегмента или заявку на код из глобальной ячейки ПАРАМРЕАКЦИИ и запи¬ сывает его в словарь сегментов по адресу из переменной ПАРАМРЕАКЦИИ 1. Эти переменные подготавливаются главным процессором между примитивами ПРЕРЫВАТЬ и ОТВЕЧАТЬ. Заметим, что заявка на код наравне с дескриптором при записи в память замещает свою уста¬ ревшую копию в буферной памяти процессора. Кроме адресов кодовых сегментов имеется другой вид общих данных подсистемы управления памятью — физические адреса страниц математической памяти. Ад¬ реса наиболее нужных страниц помещаются в АЗУС (ас¬ социативное запоминающее устройство страниц). Уда¬ лить из АЗУС строчку, соответствующую странице с данным математическим адресом, можно посредством ко¬ манды ВЫЧМА. К процедуре синхронизации подготавливается в пере¬ менной ПАРАМРЕАКЦИИ 23-разрядный адрес страницы и вся критическая секция заключается, по существу, в одной команде вычеркивания указанной страницы. Прерывания ЦП могут заметно снизить производи¬ тельность лишь при значительной нехватке ОЗУ и вы¬ званной этим чрезмерной откачке страниц, т. е. тогда, когда производительность в целом ограничивается объ¬ емом ОЗУ, а не суммарным быстродействием ЦП. 9* 131
3.6. Имитационный комплекс для разработки программных средств Основное назначение имитационных комп¬ лексов заключается в создании инструментальных средств, позволяющих разрабатывать программное обеспечение одновременно с аппаратурой. Это дает возможность, во- первых, к моменту завершения разработки аппаратуры иметь готовое программное обеспечение, что позволяет значительно сократить сроки разработки всей вычисли¬ тельной системы, во-вторых, учесть в процессе разработ¬ ки взаимное влияние аппаратуры и программного обес¬ печения, достичь лучшего распределения функций между аппаратурой и программным обеспечением и их макси¬ мальной совместимости. Все это позволяет существенно повысить эффективность вычислительного комплекса. При создании МВК «Эльбрус-1» задачи, стоящие пе¬ ред имитационным комплексом, ставились еще шире, ибо параллельно разрабатывались три основных компонента: базовый язык ЭЛЬ-76, программное обеспечение, вклю¬ чающее операционную систему, и аппаратура МВК«Эль- брус-1». Имитационный комплекс был как бы тем сред¬ ством, которое позволило осуществить взаимодействие этих основных компонентов между собой и, более того, получить опыт разработки и отладки программ на языке ЭЛЬ-76, что повлияло на изобразительные средства и функциональные возможности языка. Структура и функции имитационного комплекса. Ими¬ тационный комплекс включал в себя: — интерпретатор системы команд ЦП и процессора ввода-вывода; — транслятор с базового языка ЭЛЬ-76; — текстовый редактор; — средства организации и хранения информации на внешних носителях; — набор сервисных средств; — командный язык, обеспечивавший работу как в пакетном режиме, так и в диалоговом режиме. Имитационный комплекс создавался на универсаль¬ ной ЭВМ, которую в дальнейшем будем называть инстру¬ ментальной. Основные компоненты программировались на языке структурного моделирования (СТРУМ). Имитационный комплекс обеспечил отладку ОС, тран¬ слятора с языка ЭЛЬ-76, стандартных и сервисных прог¬ 132
рамм. Это потребовало включения в него полного набора системы команд и точной их имитации. Сложность решения основной задачи вызвала ряд сопутствующих задач. Имитация аппаратных средств, даже достаточно де¬ тальная, не решает вопросов отладки пользовательских программ, ибо исполнение задач на «голой машине» не¬ возможно. Имитационный комплекс должен обеспечивать реализацию основных функций ОС, таких, как управле¬ ние процессами, распределение памяти, ввод-вывод, реак¬ ция на прерывания и др. Чтобы создать комфортабельные условия отладки программ на имитационном комплексе, он должен содер¬ жать достаточно большую номенклатуру средств, обеспе¬ чивающих выдачу необходимой отладочной информации. В имитационный комплекс должны быть включены средства выдачи отладочной и статистической информации, которая необходима разработчикам как программных, так и аппаратных средств проектируемой вычислительной машины. Функциональная схема интерпретатора. Интерпрета¬ тор МВК «Эльбрус-1» — это модель на уровне прог¬ раммно-доступных регистров, обеспечивающая точное ис¬ полнение команд центрального процессора и выполнение основных функций ОС. На интерпретаторе осуществлялась, в частности, от¬ кладка тестов для устройств МВК «Эльбрус-1», что зна¬ чительно ускорило и облегчило процесс наладки аппара¬ туры. Кроме того, при наладке опытного образца интер¬ претатор с помощью отладочных средств позволял вы¬ давать на печать состояние регистров, что дало возмож¬ ность проводить сравнение с состоянием соответствую¬ щих регистров реального ЦП. Состав интерпретатора определялся, исходя из круга задач, на которые он был ориентирован. Так, в интер¬ претатор были включены команды привилегированного режима МВК «Эльбрус-1», ибо этого требовала отладка процедур ОС, обеспечивающих распределение памяти и управление процессами. В интерпретатор были также включены операции над 128-разрядными операндами для отладки процедур вычисления стандартных функций. Ока¬ залась необходимой реализация практически полного на¬ бора команд ЦП. Включение в состав интерпретатора ряда процедур, имитирующих основные функции ОС МВК «Эльбрус», 133
определялось необходимостью создания реальных усло¬ вий обработки задач. Интерпретатор обеспечивал пользователей широкой номенклатурой отладочных средств и предоставлял сред¬ ства гибкого управления выдачей отладочной информа¬ ции. Так, введение в интерпретатор счетчика выполнен¬ ных команд, значения которого сообщаются пользователю вместе с отладочной информацией при аварийном завер¬ шении программы, позволяет при повторном запуске ог¬ раничить объем выдаваемой отладочной информации, указывая конкретные интервалы значений счетчика. Это позволяет избежать избыточности, экономит машинное время и ускоряет отладку. Интерпретатор давал разработчикам аппаратуры воз¬ можность получения характеристик исполняемых прог¬ рамм. Эта информация позволяет судить о роли различ¬ ных устройств и об их влиянии на эффективность про¬ хождения программ. Использование при создании интерпретатора языка СТРУМ обеспечивало на начальном этапе разработки МВК «Эльбрус-1» оперативную модификацию интерпре¬ татора в связи с постоянными изменениями в системе команд. После стабилизации системы команд и достиже¬ ния достаточной отлаженности самого интерпретатора наиболее часто используемые процедуры и блоки интер¬ претатора были переведены на ассемблер инструменталь¬ ной машины. В конечном счете модернизация позволила значительно увеличить эффективность интерпретации. Имитация аппаратных средств проектируемой ЭВМ в интерпретаторе обеспечивалась двумя основными ком¬ понентами интерпретатора — дешифратором команд и подпрограммами, реализующими выполнение команд. На¬ личие в МВК «Эльбрус» значительного числа команд и различия архитектуры инструментальной ЭВМ и проек¬ тировавшегося МВК привели к большому объему интер¬ претатора. Поэтому требование минимизации его объект¬ ного кода было очень актуальным. Учитывая, что практически все команды работают со стеком, реализации стека было уделено особое внима¬ ние. Стек интерпретатора несколько упрощен по сравне¬ нию со стеком проектируемой машины. При реализации дешифратора команд основное вни¬ мание было уделено эффективности. Его назначение — чтение очередной команды из исполняемого программно¬ го сегмента интерпретируемой программы и передача 134
управления на процедуру интерпретатора, имитирующую соответствующую команду. Кроме того, дешифратор обеспечивал управление выдачей отладочной информа¬ ции и сбор различной статистической информации об интерпретируемой программе. Как было отмечено, выполнение команд реализова¬ лось соответствующими подпрограммами интерпретатора. Имитация функций ОС проектируемой машины. Ин¬ терпретатор имитировал ряд основных функций ОС: — управление процессами; — управление памятью; — организацию работы с файлами; — ввод информации; — форматный вывод на печать; — организацию выдачи отладочной информации; — обработку прерываний. Было реализовано два режима работы интерпретато¬ ра: первый режим предназначался для задач пользова¬ телей, второй — для отладки процедур ОС. Интерпретатор выдавал на печать информацию в ви¬ де, определяемом списком спецификаций формата. Спе¬ цификации были похожи на спецификации формата в языке ФОРТРАН. При этом учитывались особенности предоставления информации в проектировавшемся МВК «Эльбрус-1». При разработке интерпретационного комплекса боль¬ шое внимание было уделено средствам выдачи отладоч¬ ной информации. Интерпретатор обеспечивал выдачу различных типов отладочной информации в двух режи¬ мах. Первый режим выдачи определяется заданием (ре¬ жим интерпретатора), второй — специальными отладоч¬ ными командами объектного файла при наличии отладоч¬ ных конструкций на входном языке (режим языка ЭЛЬ- 76). Выдача информации начиналась с требуемого момен¬ та времени, определявшегося задаваемым числом выпол¬ ненных команд. Выдаваемая на печать отладочная ин¬ формация соответствовала трем уровням иерархической структуры программы — уровню процедур, операторов присваивания и покомандной прокрутки. Уровень процедур обеспечивался выдачей ин¬ формации о точке входа, точке выхода, об исходных параметрах, о поставляемых значениях и числе выпол¬ ненных команд, сообщалось имя процедуры, строка прог¬ раммы на входном языке, в которой находилась команда 135
входа в процедуру или возврата. Исходные параметры и поставляемые значения печатались в виде, определяе¬ мом их тегом, с соответствующей точностью. Подобная технология отладки позволяла пользователю видеть ис¬ ходные параметры, с которыми запускались процедуры, и выработанные ими значения, что давало возможность судить о достоверности программы на уровне процедуры. Уровень операторов присваивания обеспечивался выдачей следующей информации: адреса команды (номера сегмента, номера байта); значения за¬ писываемой величины; адреса, по которому производится запись; значения счетчика числа выполненных команд; строки программы на входном языке, соответствующей этой записи. При этом информация выдавалась в удоб¬ ном для пользователя виде. Уровень покомандной прокрутки необ¬ ходим не только пользователям, но и разработчикам интер¬ претатора и инструментального транслятора для определе¬ ния правильности интерпретации команд. Он был самым низ¬ ким уровнем и обеспечивал выдачу следующей информа¬ ции: адреса команды (номера сегмента, номера байта), кода команды, значения верхней позиции стека выраже¬ ний после выполнения команды, значения указателя сте¬ ка после выполнения команды, значения счетчика вы¬ полненных команд. Кроме того, печаталась строка прог¬ раммы входного языка и информация о выполнении соот¬ ветствующей ей последовательности команд в удобном для чтения виде. Интерпретатор содержал средства распечатки стеков и выдачи статистической информации. Распечатка стека запускалась при аварийном завершении задачи или по запросу пользователя. В интерпретатор были включены средства сбора и выдачи статистической информации об использовании различных команд в программах. Каждой команде соот¬ ветствовал счетчик, который указывал количество испол¬ нений данной команды. О каждой команде печаталась следующая информация: мнемоника команды, шестнад¬ цатиричное представление кода операции, частота исполь¬ зования команды в программе (абсолютное значение в процентах), абсолютное значение счетчика в десятичном виде. Кроме этого, выдавалось число однобайтовых ко¬ манд (абсолютное значение и в процентах), использован¬ ных в задаче; число двухбайтовых команд (абсолютное значение и в процентах); общее число команд. 136
Отладочные компоненты интерпретационного комп¬ лекса получили развитие в общем системном програм¬ мном обеспечении МВК «Эльбрус». Опыт разработки интерпретационного комплекса МВК «Эльбрус-1» используется в настоящее время при создании и развитии интерпретационных комплексов но¬ вых моделей ЭВМ типа «Эльбрус». ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ 3.1. Сколько может быть параллельных процессов в задаче? 3.2. Могут ли процессы разных задач обрабатывать один и тот же массив данных в оперативной памяти? 3.3. Могут ли несколько процессов одной задачи одновременно испол¬ нять одну и ту же программу? А разных задач? 3.4. Зачем нужно закрывать маску внешних прерываний? 3.5. Как можно реализовать семафорные операции, не используя аппа¬ ратных семафорных команд? 3.6. Каким образом замедляют вычисления семафорные операции, если операции закрытия исполняются только над открыты¬ ми семафорами? 3.7. Чем критическая секция отличается от критического блока?
Заключение Ориентация на языки программирования высокого уровня позволила создать многопроцессорную машину с линейным ростом производительности при уве¬ личении числа процессоров. Например, на одной большой и практически весьма важной задаче производительность- 10-процессорной кон¬ фигурации МВК «Эльбрус» оказалась в 9,85 раза выше, чем однопроцессорной. Представительная смесь задач, заключавшихся в исполнении программ на языке ФОРТРАН, на 10-процессорной конфигурации исполни¬ лась в 9,95 раза быстрее, чем на однопроцессорной. Многопроцессорные ЭВМ получают все более широ¬ кое распространение, в том числе и высокопроизводитель¬ ные ЭВМ и суперЭВМ. Фирмы IBM и Cray Research выпускают 4-процессорные ЭВМ серий 3090, Сгау-Х МР, Сгау-2, 8-процессорные ЭВМ Cray-Y МР. Анонсиро¬ вана 16-процессорная машина Сгау-3 и др. Добавление процессоров в ЭВМ с архитектурой типа IBM/370 дает нелинейный рост производительности (2-, 3-, и 4-процессорные конфигурации превосходят однопро¬ цессорную соответственно в 1,8; 2,5 и 3 раза), что сдер¬ живает рост числа процессоров. Архитектура машин фир¬ мы Cray обеспечивает практически линейный рост произ¬ водительности. Использование многопроцессорности при решении от¬ дельной задачи требует дополнительных усилий програм¬ миста и, когда узким местом вычислительной установки яв¬ ляется нехватка памяти, каналов ввода-вывода и т. п., не дает положительного эффекта. Создание многопроцессорных ЭВМ позволяет полу¬ чить предельно высокое быстродействие при имеющемся уровне технологии и максимальную функциональную на¬ дежность при имеющейся надежности техники. 138
Кроме того, оно дает возможность плавно наращивать производительность вычислительных установок, умень¬ шает потребность в разработке различных моделей ЭВМ для охвата всего диапазона быстродействия вычисли¬ тельных машин, повышает степень использования обору¬ дования при отказах отдельных устройств. Создание многопроцессорных ЭбМ является перспек¬ тивным направлением в развитии вычислительной тех¬ ники.
Список литературы 1. Бабаян Б. А., Сахин Ю. X. Система «Эльбруса/Программирова¬ ние. 1980. № 6. С. 72—86. 2. Пентковский В. М. Язык программирования Эль-76. Принципы по¬ строения языка и руководство к пользованию. — М.: Наука, 1989. 3. Головкин Б. А. Многопроцессорные вычислительные комплексы «Эльбрус» (Обзор)//Программирование. 1986. N* 4, 5. 4. Общие принципы разработки архитектуры и программного обеспе¬ чения системы «Эльбрус»/ Б. А. Бабаян, А. П. Ива¬ нов, В. М. Пентковский и др. — М.: ИТМ и ВТ АН СССР, 1985. Препринт № 16. 5. Майерс Г. Архитектура современных ЭВМ. В 2 кн./Пер. с англ. — М.: Мир, 1985. 6. Дийкстра Э. Взаимодействие последовательных процессов/Пер. с англ.//В кн.: Языки программирования/Под ред. Ф. Женюи. — М.: Мир, 1972. С. 9—86. 7. Patterson D. A. Reduced instruction set computers//Comm ACM. 1985. V. 28. № 1. P. 8-21. 8. Хокни P., Джессхоуп /С. Параллельные ЭВМ. Архитектура, про¬ граммирование и алгоритмы/Пер. с англ. — М.: Ра¬ дио и связь, 1986. 9. Padegs А., Moore В. В., Smith R. М., Buchholz W. The IBM System/ 370 vector architecture:design consideration.//IEEE Trans. Comput. 1988. V. 37. № 5. P. 509—520. 10. Архитектура векторных средств системы IBM/370 (реф.)//Вычисли¬ тельная техника. Экспресс-информация. 1989. № 13. С. 15—30. 11. Fisher J. A., Ellis J. R., Ruttenberg J. С., Nicolau A. Parallel proces¬ sing: a smart compiler and a dumb machine// SIGPLAN Notices. 1984. V. 19. № 6. P. 37—47. 12. Nicolau A., Fisher J. A. Measuring the parallelism available for Very Long Instruction Word architectures//IEEE Trans Comput. 1984. V. C—33. № Ц. p. 968—976. 13. Colwell R. P., Nix R. P., O'Donnel J. et al. A VLIW architecture fore a trace scheduling compiler/IEEE Trans. Comput. 1988. V. 37. No 8. P. 967— 979. 14. Валях E. Последовательно-параллельные вычисления/Пер. с англ. — М.: Мир, 1985. 15. Schindler М. Multiprocessing systems embrace both new and convential architecture//Electron. Des. 1984. 32 No 6 P. 97—128. 140
16. Перспективы развития вычислительной техники/Под ред. Ю. М. Смирнова. — Кн. 11: Программное обеспечение ЭВМ. — М.: Высш. школа, 1989. 17. Операционная система МВК «Эльбрус>/С. М. Зотов, А. П. Иванов, С. В. Семенихин, В. С. Шее яков. — М.: ИТМ и ВТ АН СССР, 1984. Препринт № 20. 18. Зотов С. М., Семенихин С. В. Взаимодействие процессоров в много¬ процессорном вычислительном комплексе «Эль¬ брус-1».—М.: ИТМ и ВТ АН СССР, 1981. Препринт № 1. 19. Шевяков В. С. Синхронизация в управлении памятью МВК «Эль¬ брус-1».—М.: ИТМ и ВТ АН СССР, 1981. Препринт № 10.
Оглавление Введение 3 Глава I Принципы построения 1.1. Языки программирования и ар- эффективных хитектура ЭВМ 5 многопроцессорных 1.2. Эффективность вычислительной систем системы 12 1.3. Развиваемая архитектура ... 17 1.4. Проблемы параллельных вычис¬ лений и соотношения векторных и скалярных вычислений ... 20 1.5. Принцип управления каждым тактом машины 26 1.6. Перспективные модели много¬ процессорных ЭВМ 33 Вопросы для самопроверки .... 43 Глава 2 Аппаратные 2.1. МВК «Эльбрус-2» 44 средства 2.2. Центральный процессор ... 46 2.3. Организация оперативной па¬ мяти 76 2.4. Система ввода-вывода .... 82 2.5. Внутрикомплексное взаимодей¬ ствие 94 Вопросы для самопроверки .... 98 Глава 3 Программные 3.1. Структура и основные функции средства операционной системы ... 99 3.2. Процессы и распараллеливание задач 108 3.3. Синхронизация процессов . . 113 3.4. Взаимодействие процессов и процессоров 119 142
3.5. Многопроцессорность и управ¬ ление памятью 125 3.6. Имитационный комплекс для разработки программных средств 132 Вопросы для самопроверки .... 137 Заключение 138 Список литературы 140
Справочное издание ПЕРСПЕКТИВЫ РАЗВИТИЯ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ В одиннадцати книгах Бабаян Борис Арташесович, Бочаров Алексей Васильевич, Волин Владимир Сергеевич, Гаврилов Сергей Семенович, Грошев Ана¬ толий Сергеевич, Груздов Федор Анатольевич, Еремин Михаил Викторович, Зотов Сергей Михайлович, Плоткин Арнольд Лео¬ нидович, Пшеничников Леонид Евгеньевич, Рябов Геннадий Ге¬ оргиевич, Чудаков Михаил Леонидович, Шевяков Владимир Степанович Кн. 4 Многопроцессорные ЭВМ и методы их проектирования Заведующая редакцией Н. И. Хрусталева. Редактор С. М. Оводова Младший редактор Н. Е. Овчеренко Художник В. В. Гарбузов Художественный редактор В. И. Мешалкин Технический редактор Г. А. Фетисова Корректор В. В. Кожуткина ИБ № 7477 Изд. №СТД-712 Сдано в набор 05 12.89. Подп. в печать 26.04.90. Т—06935. Формат 84 X Юв'/зг- Бум. офс. № 1. Гарнитура литератур¬ ная. Печать офсетная Объем 7,56 уел. печ. л. 15,54 уел. кр.-отт. 7,85 уч.-изд л. Тираж 69 000 экз. Зак. № 675. Цена 45 коп. Издательство «Высшая школа», 101430, Москва ГСП-4, Неглинная ул., д. 29/14 Ярославский полиграфкомбинат Госкомпечати СССР 150014, Ярос¬ лавль, ул. Свободы, 97.
многопроцессорные ЭВМ 45 коп. Информационные семантические системы Малые ЭВМ Полупровод¬ никовые запоминающие устройства Интеллекту¬ ализация ЭВМ Программное обеспечение ЭВМ Много¬ процессорные ЭВМ и методы их проектирования Периферийное и терминальное оборудование ЭВМ Системы телеобработки и вычисли¬ тельные сети Специализи¬ рованные ЭВМ Внешние запоминающие устройства на магнитном носителе ЭВМ общего назначения Multiprocessor м с