![](/user_photo/_userpic.png)
книги из ГПНТБ / Королев, Л. Н. Структуры ЭВМ и их математическое обеспечение учебное пособие
.pdfтических действий в машине сравнительно медленное: сложение выполняется за 300—700 мксек, умножение — за 1200—1500 мксек, логические операции над симво лами — за 120—300 мксек.
Общая блок-схема «Минск-23» представлена на рис. 2. Вычислитель, или центральный процессор, осущест вляет выполнение программ (обработку данных) и уп равление мультиплексным каналом, рассчитанным на прямое подключение 15 внешних устройств, а при ис пользовании коммутаторов на подключение до 64 внеш
них устройств.
В состав центрального процессора входит так назы ваемое адресное ЗУ, состоящее из 128 19-разрядных ячеек (регистров), выполненных на сердечниках. Эти 128 ячеек разбиты на 64 регистра для хранения адресной инфор мации для 8 программ и 64 регистра, служащих для хра нения текущих адресов по оперативной памяти при об менах с внешними устройствами.
Программные регистры разбиты на 8 групп по 8 ре гистров в каждой группе. Эти группы соответствуют 8 программам. Соответственно все программы разбиты на 8 уровней. С понятием уровня связывается приоритет исполняемой программы по отношению к другим. Наи более низким приоритетом обладают программы 0-, 1-,' 2-го уровней, и эти три уровня выделены для рабочих программ. Третий уровень выделен для программ реак ций на прерывания от внешних устройств. Четвертый— для программ исполнения экстракодов. В рабочих про граммах могут встретиться специальные команды, по которым происходит переключение именно на четвертый уровень программ и производится передача управления на одну из подпрограмм этого уровня, интерпрети рующую директиву или команду экстракода. Пятый уровень — это специальные программы, реагирую щие на запросы о'ператора с пишущей машинки. Шестой и седьмой уровни предназначены для про грамм реакции на сбои внешних устройств и сбои вы числителя.
Без программ 3-, 4-, 5-, 6-, 7-го уровней машина «Минск-23» не может работать. Эти системные программы являются как бы продолжением аппаратуры машины и относятся к ее внутреннему математическому обеспе чению.
40
Рис. 2.
Программа-координатор, занимающая третий уро вень, управляет обменами и организует мультипрограм мный режим для трех рабочих программ 0-, 1-, 2-го уров ней. В соответствии с заданной дисциплиной обслужи вания программа-координатор включает в решение и и исключает из решения ту или иную рабочую программу, следит за их совместимостью по памяти и невмешатель ством одних программ в работу других.
Программы, обслуживающие экстракоды, как уже говорилось, позволяют расширять систему команд ма шины, включая в их состав команды, исполняемые по подпрограммам. Пятый уровень предназначен для про грамм связи оператора с вычислительной машиной и поз воляет тем самым влиять на ход вычислительного про цесса. Эти системные программы располагаются в па мяти в последних 10 тысячах ячеек оперативной памяти, которые аппаратно защищены от вмешательства рабочих программ. Рабочие программы и массивы данных реко мендуется располагать, начиная с адреса 11 000.
Среди аппаратно выполняемых команд машины есть специальные команды, которые выполняются только в программах 4-, 5-, 6- и 7-го уровней. К этим командам относятся те, которые изменяют состояние главного регистра номера уровня, команды разрешения и запре щения прерывания и ряд операций тестового режима.
Наличие системы прерываний, приоритетных уровней программ, системных команд, возможности по осущест влению мультипрограммного режима — все эти струк турные характеристики присущи машинам современного типа.
Представляет интерес внутренний язык машины, ее система команд, ориентированная на обработку символь ной информации.
Основной единицей информации является восьмираз рядный байт, который также называют ячейкой памяти. Структура байта такова: 8-й его разряд является конт рольным, дополняющим до нечета. Он недоступен про граммисту, и его формированием занимается аппаратура. С помощью этого разряда аппаратно контролируются все передачи информации внутри машины, а также ин формация, поступающая извне.
Семь других разрядов байта — информационные, сих помощью можно закодировать 128 различных символов,
42
включая буквы, цифры, разделители и внутримашинные метки.
Например, 7-й бит (разряд) используется для указа ния границ поля десятичного числа или поля символь ной информации. Для кодирования информации, содер жащей русские буквы и цифры, используются 64 сим вола, для кодирования которых достаточно шести разрядов.
Биты 6-й и 5-й байтов, используемых в командах, позволяют метить типы адресов.
Код символа подстрочечной десятки используется для указания конца алфавитно-цифрового слова произволь ной длины. Символ, содержащий все единицы, исполь зуется для указания границы массива. Тем самым коды байта используются в машине «Минск-23» не только для представления буквенно-цифровой информации, но и не сут некоторую функциональную нагрузку по управле нию работой машины.
Ф о р м а т ы к о м а н д . В машине «Минск-23» реа лизована переменноадресная система команд. Разли чаются 6 типов команд: безадресные, одноадресные, двухадресные, трехадресные, четырехадресные и много адресные. Многие команды могут быть снабжены специ
фикатором, о значении которого |
будет |
сказано |
ни |
же. Команды машины «Минск-23» занимают |
всегда |
чет |
|
ное число байтов. Это связано с |
особенностями аппа |
||
ратуры выборки команд из оперативной |
памяти |
ма |
|
шины. |
|
|
|
Первые два байта команд обозначают код операции. В коде операции задается ее тип и способ использования адресов. Система команд позволяет задавать один или несколько операндов непосредственно в адресной части команды. Такой способ задания операндов носит наз вание непосредственной адресации. Можно также зада вать обычным образом адрес операнда по памяти с по мощью прямой или относительной адресации.
Структура полного адреса такова, что позволяет ука зывать индекс, базу, смещение или абсолютное значение адреса.
Для базы в команде выделено два разряда, с помощью которых можно указать одну из трех баз: № 1, № 2 или № 3. Для индексов выделено три разряда, что поз воляет выбирать один из восьми индексов.
43
Соответственно с этим исполнительный адрес команды может образоваться следующим образом;
Аисп = Ан + <Б> + <И>,
'Аисп = АКД<Б>, Ансп —АК+ <И>,
Д = А
^ИСП ^К> где Ак — код, находящийся в адресной части команды,
Б — адрес базы, И — адрес индексного регистра. Сим волика < ) означает «содержимое по адресу».
Номер базы, указанный в адресе, в свою очередь есть относительный адрес базы, записанный в адресных ре гистрах. Номер (адрес) индекса — это есть относитель ный адрес соответствующих ячеек памяти, отсчитываемый от базы № 1, т. е. индекс выбирается по правилу: <И> ■= •=<<Б1>+И>.
Операции машины «Минск-23» можно разделить на следующие классы:
Операции с десятичными целыми числами. Операции логические над байтами (символами). Операции над адресами и индексами.
Операции сравнения, поиска и переходов. Служебные операции и системные команды. Действия сложения, вычитания и умножения указы
ваются трехадресными, двухадресными, одноадресными командами. Если знаком ф обозначить операцию (4-,
—, X), то возможные правила выполнения команд
таковы:
<А1 иС„> ф <АЗИСП> => А2ПСП, <А1ИСП> ф <А2исп> => А2ИСП.
Логические операции с байтами включают набор известных действий: логического сложения V (конъюнк ция), логического умножения Д (дизъюнкция), сопостав ления или поразрядного сложения по mod 2 («отрицание эквивалентности») и сдвиг.
Правила выполнения этих команд могут быть пред ставлены в форме трехадресных, двухадресных и одно
адресных операций: |
|
<А1ИСП> ф <АЗИСП> |
А2ИС11, |
<А1ИСп> Ф <А2ИСП> => А2ИСП, |
|
<А1ИСП> ф С |
А2ИСП, |
<А1Исп> ФС=5> А1ИС11.
44
СиыволС указывает спецификатор в команде, храня щий непосредственный операнд, или, как еще называют, литерал.
Среди интересных операций над цепочками символов следует отметить группу операций, позволяющих рас ставлять и убирать метки границ в буквенно-цифровых последовательностях, операции пересылки частей байтов из одной последовательности в другую, операции пере сылки цепочек символов. Особый интерес представляют операции редактирования.
Операция «переслать и уплотнить», например, вы полняется следующим образом. Во втором адресе команды указывается адрес начала шаблона. Шаблон — это це почка символов, вообще говоря, произвольных, часть из которых помечена особым образом (символом f ). Пере сылаемая последовательность символов сравнивается с символами шаблона, и результирующая последова тельность составляется только из тех символов исход ной последовательности, которые соответствуют меткам шаблона.
Команда «переслать и редактировать» позволяет пред ставить вычисленный на машине результат в форме, пригодной для вывода на печать, снабдить его названием, например, поставить после числа слово РУБ, поставить десятичную точку и т. п. Интересны также операции, позволяющие подсчитать количество символов в слове, в массиве, в числе.
Следует отметить, что операции над цепочками байтов очень полезны для программ обработки символьной информации. Все они выполняются последовательно символ за символом — они типично последовательные операции. Поэтому, несмотря на их очевидное удобство, в больших машинах с арифметическим устройством па раллельного действия быстрое аппаратное выполнение этих процедур, предназначенных для научных расчетов, встречает технические затруднения и обычно приводит к относительному замедлению при работе с символьной информацией.
В машине «Минск-23» предусмотрен широкий набор команд сравнения и переходов. Условия переходов опре деляются в результате сравнения отдельных символов, нескольких символов, слов, чисел и индексов. Переходы выполняются по условиям «равно», «не равно», «больше»,
46
«меньше» и по наличию заданного символа. Общее число команд условных переходов достигает 41.
Экстракодовые команды машины «Минск-23» в том
случае, |
если они появляются в |
программах 0-, 1-, 2- |
и 3-го уровней, влекут за собой |
прерывание и автомати |
|
ческий |
переход на 4-й уровень. Подпрограммы 4-го |
|
уровня |
определяют, что делать |
дальше с полученной |
командой, т. е. как ее интерпретировать. На том уровне, где появилась команда экстракода, в адресных регист рах уровня хранится вся необходимая информация для возврата в прерванную программу, а также парамет ры обращения к экстракоду в виде исполнительных адре сов экстракодовой команды.
Математическое обеспечение машины «Минск-23» по строено на принципе базисного объектного языка -— языка загрузки. Любой транслятор готовит стандартные модули для последующей загрузки. Приготовление рабо чей программы, следовательно, происходит в два этапа. Первый этап — трансляция исходной символьной ин формации на язык загрузки, второй этап — компоновка рабочей программы из модулей загрузки. Большинство современных систем программирования строится именно таким образом. Этап загрузки программ начинается с размещения в памяти и настройки по месту головного модуля, который отличается от любого другого модуля только тем, что выполнение программы начинается с этой части всей программы. Головной модуль содержит обра щения к другим модулям или к подпрограммам. Загруз чик, размещая модуль в памяти, анализирует инструкции обращения к другим модулям, вызывает с внешних нако пителей соответствующие модули или библиотечные под программы, размещает их в свободных участках памяти и настраивает по параметрам. Если вызванный модуль, в свою очередь, содержит обращения к другим модулям или подпрограммам, то они также вызываются и разме щаются в памяти. Этот процесс заканчивается, когда все модули, необходимые для работы программы или ее части (раздела), размещены в памяти, настроены по месту и по параметрам.
Описанный выше процесс называется статической загрузкой. Бывает и широко используется так называе мая динамическая загрузка модулей. Она применяется обычно для машин с небольшим объемом запоминающего
46
устройства. Идея динамической загрузки очень проста. Для модуля выделяется необходимая память во время выполнения программы только в тот момент, когда по явилась команда обращения к данному модулю. После того как вызванный модуль «проработал», память, зани маемая им, считается свободной и используется для за грузки следующего модуля. Однако реализация динами ческой загрузки более сложна и требует решения многих вопросов, связанных с оптимизацией работы системы
вцелом. Например, легко представить себе ситуацию,
вкоторой обращение к некоему модулю встречается
вцикле. Очевидно, что снова и снова загружать тот же самый модуль нецелесообразно. Его выгоднее оставлять
впамяти. В каждом частном случае решить, какие модули загружать статически, а какие, ради экономии памяти, динамически, не представляет труда. Следует отметить, что необходимость в динамической загрузке не обяза тельно связана с экономией памяти. При реализации многих процедурно-ориентированных языков, таких, например, как АЛГОЛ-60, динамическая загрузка вы зывается существом языка. Реализация языковой
конструкции, при которой в качестве значения факти ческого параметра передается имя процедуры, связана с ситуацией, не позволяющей заранее по тексту опреде лить, исполнение какой процедуры потребуется. Только в динамике выполнения программы определяются те процедуры или области данных, которые должны быть вызваны в оперативную память. Создать систему, авто матически оставляющую в памяти интенсивно используе мые модули, не столь просто. Достаточно сложно решает ся проблема рекурсий, состоящая в том, что модуль мо жет потребовать обращения к самому себе. Правда, в некоторых системах эта проблема решается триви ально — употребление рекурсии запрещается.
Эти рассуждения о схеме построения системы транс ляции и загрузки нужны для того, чтобы пояснить значе ние базирования в машине «Минск-23». Первая база, как мы знаем, используется для указания полей индек сов, и ее можно рассматривать как базу локальных дан ных выполняемого в данный момент модуля. Вторую базу можно, например, рассматривать как базу внешних переменных или как базу модуля, из которого произошло обращение к текущему. Третью базу можно рассматри
47
вать как базу или адрес параметров обращения, как базу фактических значений формальных параметров. В соот ветствии с этим в модуле загрузки должны быть поме чены адреса, которые являются именами локальных или собственных переменных и констант модуля, адре
са, |
которые |
являются |
именами |
внешних |
переменных, |
и |
адреса, |
которые |
являются |
именами |
параметров |
модуля. |
|
|
|
|
|
|
В общем случае настройка модуля на работу в машине |
«Минск-23» может быть осуществлена записью в базу № 1, которая расположена на одном из адресных регист ров уровня, места по памяти, начиная с которого разме щен соответствующий модуль, записью в базу № 2 на чального адреса обратившегося модуля и записью в базу № 3 адреса, начиная с которого расположены фактиче ские значения параметров модуля.
Как видно, никаких изменений в теле самого модуля при этом производить не надо, если, разумеется, модуль построен с учетом вышеизложенных правил использо вания баз.
В состав математического обеспечения машины «Минск-23» входит машинно-ориентированный язык сим вольного кодирования ССК. Этот язык однозначно соот ветствует системе команд машины и служит в основном для системных программистов, использующих все воз можности машинной системы команд, для создания эф фективных программ внутреннего математического обе спечения, о которых было сказано выше.
Следующий уровень системы программирования для машины «Минск-23» — это Автокод. Транслятор с Авто кода готовит модули загрузки, и, хотя это язык машинно ориентированный, он расширен за счет включения боль шого числа макрокоманд, облегчающих программиро вание операций ввода-вывода, макрокоманд, содержащих средства вызова стандартных, библиотечных подпро грамм, как системных, так и подпрограмм, составленных потребителем (пользователем). Система программирова ния с использованием языка Автокод, таким образом, включает в себя транслятор, систему выполнения макро команд и загрузчик, тесно связанный с библиотекой. Все это составляет основу для подключения к системе МО машины «Минск-23» новых языков более высокого уровня и соответствующих трансляторов.
48
Библиотека системных стандартных программ содер жит модули вычисления элементарных функций, боль шое число программ, осуществляющих обращение к вводу-выводу с соответствующей перекодировкой и редактированием входной-выходной информации, про грамму сортировки, оптимизирующую работу с магнит ной лентой, и ряд других служебных программ.
При оценке состава математического обеспечения ма шины «Минск-23» не следует забывать, что эта машина небольшой производительности, рассчитанная на реше ние информационных задач (планирование, учет, стати стическая обработка), поэтому едва ли целесообразно включать в состав МО этой машины языки типа АЛГОЛ, ориентированные на научные и вычислительные задачи.
2.3. Машина «Раздан-2» . Несколько слов о машин «Раздан-2», которая также относится к классу машин средней производительности. «Раздан-2» — сравнитель но недорогая машина, предназначенная для решения ин женерных задач и использования в небольших конструк торских бюро, в вузах и лабораториях. Эта машина срав нительно старая и по своей структуре весьма схожа с ма шиной «Минск-22».
Ее основные характеристики таковы: емкость ОЗУ— 2048 слов, быстродействие — около 5000 операций/сек, система счисления — двоичная, арифметика — с плаваю щей запятой, разрядность — 36 битов, система команд — двухадресная, набор операций содержит 51 команду.
В качестве вводного устройства используется фото считывающее устройство с перфорированной киноленты, в качестве вывода используется быстродействующее цифровое устройство (20 строк/сек).
§ 3. ЭВМ большой производительности
Согласно каталогу Министерства радиопромышлен ности за 1970 г. к ЭВМ большой производительности относятся машины БЭСМ-6, БЭСМ-4, «Урал-14», «Урал16», «Минск-32», М-220А, М-222, «Раздан-3».
3.1. «Раздан-3» . Поскольку характеристику машин средней производительности мы окончили описанием машины «Раздан-2», то характеристику машин большой производительности мы начнем с описания машины «Раздан-3».
49