Меню сайта
 

 

   Блоки КАМАК

Двадцатичетырехразрядная ЭВМ в стандарте 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.