Двадцатичетырехразрядная ЭВМ в стандарте CAMAC
Пискунов Г.С., Тарарышкин
С.В.
Введение
С 1971 г. в Институте ядерной физики СО РАН для управления большими
экспериментальными физическими установками широко использовались
24-разрядные ЭВМ серии Одра-1300 (производство ПНР), являвшиеся
функциональными аналогами английских машин серии ICL-1900. Эти
машины относились к классу универсальных ЭВМ, оснащались развитым
программным обеспечением, а по своим функциональным возможностям
(большое адресное пространство, средства поддержки мультипрограммирования,
повышенная точность) превосходили ряд широко распространенных
мини-ЭВМ. В использовании ЭВМ Одра-1300 в ИЯФ СО АН СССР был
накоплен большой опыт, создано обширное системное и прикладное
программное обеспечение, имелся значительный контингент специалистов,
знакомых с особенностями работы на них.
Развитие систем на базе ЭВМ серии Одра-1300 шло по пути децентрализации
за счет введения периферийных автономных контроллеров крейтов
КАМАК, позволявших решить известную проблему сопряжения аппаратуры
КАМАК (требующей высокой интерактивности взаимодействия) с
универсальной ЭВМ. Однако ограниченные функциональные возможности
микропроцессоров, традиционно применяемых в таких автономных
контроллерах, препятствовали широкому использованию распространенных
языков высокого уровня для их программирования, что, в свою
очередь, ограничивало круг потенциальных пользователей.
Вследствие этого в 1981 г. было принято решение о разработке
автономного контроллера крейта КАМАК, совместимого на уровне
пользовательских программ с ЭВМ серии Одра-1300 и получившего
условное название Одренок.
Одренок
Одренок выполнен в КАМАК-модуле шириной 2М на 130 схемах большой
и средней степени интеграции, включая процессорные секции К1804ВС1;
он имеет встроенную память (64 К 24-разрядных слов) и реализует
полную систему команд машин Одра-1300. Производительность на
операциях с фиксированной запятой составляет около 300 000 операций
в секунду, на операциях с плавающей запятой - около половины
производительности ЭВМ Одра-1305 (старшей модели семейства).
Связь Одренка с ЭВМ верхнего уровня или файловой машиной
сети осуществляется с помощью отдельного интерфейсного КАМАК-модуля,
реализующего прямой доступ к памяти и регистрам контроллера
и содержащего средства для дистанционной диагностики и отладки.
В семействе Одра-1300 последовательно проводится принцип
виртуальной машины. Так, каждая пользовательская программа
работает в собственном виртуальном адресном пространстве,
а уровни операционной системы (ОС) и пользователя различаются
аппаратно. В системе команд пользователя отсутствуют низкоуровневые
операции ввода-вывода: вместо них применяются высокоуровневые
команды обмена, исполнение которых влечет вызов соответствующих
примитивов ОС (экстракоды ввода-вывода). Благодаря этому обстоятельству
удалось достаточно просто, переписав машинно-зависимое ядро
ОС, реализовать сетевую операционную систему, обеспечивающую
возможность работы любых программ, ранее работавших в ЭВМ
Одра. В Одренке реализована полная система команд пользовательского
уровня. По составу привилегированных команд, которые обычно
сильно зависят от структуры подсистемы ввода-вывода, Одренок
значительно отличается от процессоров серии Одра-1300.
Одна из основных целей создания рассматриваемого контроллера
- повышение эффективности взаимодействия с аппаратурой КАМАК.
Для достижения этой цели исходная система команд расширена
(за счет использования "резервных кодов команд) введением
операций для работы с магистралью КАМАК.
Особенности архитектуры
Основная адресуемая единица информации - 24-разрядное слово.
В процессоре имеется 8 регистров общего назначения (РОН) и один
48-разрядный аккумулятор для чисел с плавающей запятой. Числа
с плавающей запятой содержат 38-разрядную мантиссу в дополнительном
коде и двоичный 9-разрядный порядок, что дает относительную
погрешность 1e-12 и динамический диапазон чисел 10e+8. Для кодирования
символьной информации используется укороченный 6-разрядный байт.
В одном слове помещается четыре таких байта. Программы работают
с информацией во внутреннем представлении, при выводе на внешние
устройства ОС программно выполняет соответствующую перекодировку
в код КОИ-7.
Команда всегда занимает одно слово. Основные форматы команд
показаны на рис. 1.
рис.1
Поле Х задает один из восьми РОИ, участвующих в операции.
Особенность данной ЭВМ - то, что РОН отображаются на первые
восемь ячеек в адресном пространстве программы, поэтому в
системе команд отсутствуют явные операции типа регистр - регистр.
Они являются частным случаем операций типа регистр - память.
Поле F задает код операций. Система команд включает около
120 различных типов операций.
В процессоре реализованы четыре способа адресации операнда:
- прямая
- индексная со смещением
- непосредственная
- непосредственная с индексацией
При М == 0 поле содержит адрес операнда (или сам операнд при
непосредственной адресации). В противном случае поле Щ указывает
на соответствующий РОН, содержимое которого будет использоваться
в качестве, индексного регистра. Для получения исполнительного
адреса 15 младших разрядов индексного регистра (РОН 1, 2. или
3) алгебраически суммируются с содержимым поля N. Таким образом,
адресное пространство одной задачи не превышает 32 Кслов. В
системе имеется возможность переключения на работу с расширенным
диапазоном адресов (так называемый режим 22 AM); в этом случае
адресное пространство одной задачи составляет 4 Мслов.
В системе команд предусмотрены операции для работы с числами
в формате с фиксированной запятой многократной точности, содержится
обширная группа команд для работы с битовыми полями, в том
числе, команды для манипуляций с 8-ми битными байтами. Система
команд в значительной степени ортогональна относительно способов
адресации и симметрична для основных арифметических и логических
операций: есть как команды вида регистр:== регистр + память,
так и команды типа память:== регистр + память.
Команды условного перехода (рис. 1a)
разделены на две группы:
- по содержимому указанного РОН
- по состоянию флагов процессора (7-флаг переполнения,
С-флаг переноса).
В команде обращения к подпрограмме текущее слово состояния процессора
сохраняется в РОН, указанном в команде. Имеются также четыре
команды для организации циклов.
На рис. 1б показан формат команд сдвига.
Поле N, задает тип сдвига: циклический, арифметический, логический;
поле N, определяет количество сдвигов. Возможны сдвиги одинарного
или двойного слова на произвольное число разрядов. Существуют
команды для нормализации числа и поиска старшего значащего
бита в слове. В системе команд предусмотрены операции для
преобразования из десятичного формата в двоичный и обратно,
групповой пересылки блока данных из одной области памяти в
другую, подсчета контрольной суммы, а также для работы с числами
в формате с плавающей запятой.
Формат команд взаимодействия с магистралью КАМАК такой же
как для обычных команд (рис. 1в). В
РОН содержится NAF, а поле N(M) стандартным образом задает
адрес слова данных, участвующего в обмене в КАМАК-цикле. После
выполнения команды в старшие разряды РОН заносится состояние
КАМАК-сигналов Q, X, I. Кроме команды выполнения одиночного
NAF, предусмотрены команды группового обмена (до Q == 0) и
сканирования крейта по субадресам и номерам станций, а также
команда чтения состояния регистра LAM. Существенно, что все
обращения к магистрали КАМАК выполняются с помощью одной машинной
команды, т. е. все они являются неразрывными операциями. Это
дает возможность использовать КАМАК-операции непосредственно
в программе пользователя при работе в мультизадачном режиме.
Эта ситуация радикально отличается от имеющей место в традиционных
16-рязрядных мини-ЭВМ, к которым аппаратура КАМАК подключается
как нестандартное периферийное оборудование. Для выполнения
одиночного обмена с магистралью КАМАК в случае использования,
например, распространенного контроллера СС-11 требуется выполнить
несколько действий: записать в командный регистр контроллера
крейта код функции F, занести старший байт данных в регистр
старшего байта, переслать 16 младших разрядов данных. Поскольку
при работе в мультизадачном режиме контроллер крейта - разделяемый
ресурс, все эти действия должны выполняться внутри критического
интервала при запрещенных прерываниях или на уровне ОС. Работа
через ОС приводит к резкому увеличению времени, затрачиваемого
на организацию одиночного обмена. Так, например, на выполнение
одиночного КАМАК-цикла на ЭВМ VAX-11/780 (ОС VMC) и PDP-11/60
(ОС RSX-11M) затрачивается 1,8 и 2,2 мс соответственно. В
нашем случае на вызов аналогичной подпрограммы на языке высокого
уровня требуется 25 мкс, причем время в основном расходуется
на передачу параметров в подпрограмму, собственно команда
генерации КАМАК - цикла выполняется за 3 мкс. Максимальная
скорость обмена с магистралью КАМАК в режиме передачи массива
или сканирования составляет 300 000 24-разрядных слов в секунду.
Системные средства
Для, реализации мультипрограммного режима работы в Одренке предусмотрены
встроенные средства управления памятью и два режима работы процессора:
СУПЕРВИЗОР и ЗАДАЧА. При всех обращениях к памяти в состоянии
ЗАДАЧА к адресу памяти прибавляется смещение из регистра базы,
как показано на рис. 2.
рис.2
При запуске задачи ОС заносит в регистр базы (с помощью соответствующей
привилегированной команды) адрес начала ее размещения в физической
памяти. Таким образом, все программы работают в собственном
виртуальном адресном пространстве, а адресное пространство
ОС недоступно пользовательским программам.
В системе возможны два типа прерываний: внешние от встроенного
таймера и сигналов LAM в крейте и внутренние, вызываемые попыткой
выполнить нелегальную команду или одну из команд обращения
к супервизору (так называемые экстракоды). В том и другом
случае состояние процессора (включая состояние всех регистров)
аппаратно сохраняется в теле задачи и управление передается
в ОС по абсолютному адресу 28 для внутренних или по адресу
29 для внешних прерываний. Сохранение контекста в пространстве
адресов задачи позволяет легко динамически перераспределять
память, осуществлять запись образа задачи во внешнюю память
с последующим восстановлением в произвольном месте физической
памяти. Восстановление контекста и запуск задачи выполняются
с помощью одной привилегированной команды. Для ускорения обработки
внутренних прерываний команда, вызвавшая прерывание, распаковывается
таким образом, чтобы при входе в ОС в регистрах содержалась
вся необходимая для обработки экстракода информация. /
Единственный источник внешних прерываний-сигналы запросов
(LAM) в крейте. Каждый источник, запроса может индивидуально
маскироваться соответствующими разрядами в регистре маски
LAM. Этот регистр программно доступен, причем для запрета
прерываний предусмотрена неразрывная команда чтения текущего
состояния регистра маски с последующим его сбросом. В состоянии
СУПЕРВИЗОР запрещены внешние прерывания и механизм преобразования
адреса. В первой версии Одренка из-за ограниченной емкости
ПЗУ микропрограмм не удалось реализовать на микропрограммном
уровне полную систему команд виртуальной машины (не реализованы
команды деления, а также преобразования типов). Упомянутый
механизм экстракодов (программных прерываний) используется
для программной интерпретации этих команд. Если в программе
встречается такая команда, то происходит программное прерывание
и управление передается в ОС, которая интерпретирует ее и
возвращает результат в программу так, как если бы она была
выполнена аппаратно. Это дало возможность обеспечить полную
программную совместимость на уровне двоичных программ.
Единственный канал ввода-вывода Одренка - магистраль КАМАК.
Кроме программного обмена, инициируемого машинными командами,
имеется возможность прямого доступа к памяти, а также управления
состоянием ЭВМ от магистрали крейта. Термин прямой доступ
в данном случае довольно условный, так как на самом деле реализуется
микропрограммой. Модуль связи с машиной верхнего уровня, файловой
машиной сети (или модуль ПЗУ начального загрузчика) устанавливается
в произвольную позицию крейта. Для выбора модуля со стороны
Одренка используется дополнительная шина магистрали крейта
Р2 (аналог шины N), для передачи запроса от модуля в Одренок
- шина Р1 (аналог шины L). При появлении запроса на шине Р1
Одренок читает статусный регистр модуля (в котором размещаются
три бита управления: шаг, прямой доступ, пиши и адрес прямого
доступа в физической памяти Одренка) командой F(0)A(1) и в
зависимости от требуемого направления передачи генерирует
команду F(0)А(0) или F(0)A(16), записывая или читая слово
данных из памяти Одренка.
Схемная реализация
При выборе конкретных схемных решении авторы стремились к достижению
полной программной совместимости при одновременном учете ограничений
как по токопотреблению, так и по объему оборудования (две платы
КАМАК). Поэтому предпочтение отдавалось наиболее простым и экономичным
вариантам, иногда в ущерб быстродействию. При рассмотрении различных
схемных решений производилась оценка возможных реализации микропрограммы
для наиболее часто встречающихся команд. На этом этапе использовалась
статистическая информация о частотах появления команд в типичных
управляющих и счетных программах. Упрощенная структурная схема
Одренка приведена на рис. 3.
рис.3
Основу процессора составляет 24-разрядное арифметико-логическое
устройство (АЛУ), построенное на базе шести 4-разрядных процессорных
секций (ПС) К1804ВС1. Шестнадцати внутренних регистров ПС
достаточно для реализация полного набора регистров эмулируемой
ЭВМ, включая слово состояния процессора и регистр маски прерываний.
В состав арифметического устройства также входят схемы управления
сдвигами, селекторы регистров ПС, схема ускоренного переноса
(К589ИКОЗ), а также дополнительная логика формирования флагов
V и С. Регистр XFM служит для промежуточного хранения части
эмулируемой команды (поля X, F и М). В ПЗУ констант емкостью
32 слова хранятся величины, используемые микропрограммой:
маски для выделения частей .слова, начальные значения счетчиков
циклов и т. д. На входную 24-разрядную шину арифметического
устройства коммутируются выходы ПЗУ констант, регистра чтения
из КАМАК-магистрали, выход ОЗУ и сигналы LAM. Выход устройства
соединен с регистром NAF, регистром адреса памяти, регистром
базы схемы управления памятью, входом памяти, а также (через
шинные формирователи) подается на шины W КАМАК-магистрали.
Память содержит 24 схемы К565РУ5 и управляется независимым
автоматом, выполняющим, кроме функций чтения и записи, преобразование
виртуальных адресов в физические, а также независимую от работы
процессора "регенерацию динамической памяти.
Блок микропрограммного управления (рис.
4)
рис.4
сделан по простой схеме на базе регистра памяти текущего
адреса микрокоманды и мультиплексора условий. Используется
принудительная адресация - в каждой микрокоманде содержится
полный адрес следующей. Переходы осуществляются в четный или
нечетный адрес в зависимости от состояния выбранного (с помощью
мультиплексора) в данный момент условия. Такая схема широко
используется и в других разработках, проведенных в ИЯФ, она
отличается простотой и малой вносимой задержкой. Микрокоманда
имеет ширину 48 бит и содержит 14 полей (адрес следующей микрокоманды,
номер условия перехода, адрес ПЗУ констант, код функции АЛУ
и др.). Объем микропрограммы 512 слов. В новой версии Одренка
объем расширен до 2048 слов. Еще одна схема ПЗУ (К556РТ5)
используется в дешифраторе команд.
Блок микропрограммного управления работает с фиксированной
длительностью такта 300 нс. Длительности тактов автоматов
управления памятью и генератора КАМАК-цикла 100 нс. На выполнение
большинства команд из подмножества, наиболее, часто используемых,
требуется от 6 до 9 тактов.
Заключение
В настоящее время*) в ИЯФ СО АН СССР
эксплуатируется около 90 микроЭВМ Одренок. Они применяются в
распределенных системах управления электрофизическими установками,
в качестве инженерных рабочих станций, используемых при проектировании
и наладке радиоэлектронной аппаратуры, а также в персональных
станциях научного работника. Первоначально Одренок проектировался
лишь как автономный контроллер крейта. Авторы не рассчитывали
на его использование в качестве полноценной ЭВМ. Однако благодаря
разработке сетевой ОС, позволившей сохранить все программное
обеспечение, ранее применявшееся на ЭВМ Одра-1325, а также из-за
довольно высокой производительности процессора вариант применения
созданной микроЭВМ в научных рабочих станциях получил в ИЯФ
широкое распространение.
В задачах с интенсивным использованием операций с плавающей
запятой производительность Одренка составляет 0,3-0,5 от производительности
ЭВМ Одра-1305. Мультипрограммные возможности позволяют работать
на микроЭВМ нескольким пользователям одновременно. В типичной
конфигурации к одной файловой машине (Одренок с подключенным
к нему винчестерским накопителем на магнитных дисках) подсоединяется
с помощью последовательных линий связи до 15 станций на базе
Одрят, на каждой из которых, в свою очередь, может работать
одновременно до четырех пользователей.
В настоящее время предполагается, что дальнейшее развитие
систем управления экспериментальными установками в ИЯФ будет
в значительной мере базироваться на применении микроЭВМ, программно
совместимых с семейством Одра-1300. Несмотря на то что архитектура
этих машин была разработана около 20 лет тому назад, она достаточно
сбалансированна и современна.
*) Статья опубликована в журнале "Автометрия",
1986г.,N4.
|