Архитектура и система команд ЭВМ “Урал”
Александр Савватеев
Общие сведения
Вычислительная машина “Урал” разработана в 1954 г. под руководством Б. И. Рамеева. Она относится к классу малых универсальных машин, выпускалась серийно.
“Урал” оперирует 18- и 36-разрядными двоичными числами с фиксированной запятой со скоростью около 100 одноадресных 36-разрядных операций в секунду. Оперативная память реализована на магнитном барабане, ее емкость составляет 2048 чисел по 18 разрядов. Использование магнитного барабана в качестве ОЗУ упрощает аппаратуру ЭВМ, но значительно снижает ее быстродействие.
Внешняя память организована на магнитной ленте емкостью 40 тыс. чисел. Скорость обмена информацией с ОЗУ составляет 4500 чисел в секунду.
Информация вводится в машину с перфоленты, а выводится на печатающее устройство.
ЭВМ “Урал” собрана с использованием примерно 800 электронных ламп и 3000 полупроводниковых диодов. Потребляемая ею мощность составляет 8 кВт. Для размещения машины требуется около 60 кв. м.
Память и структура данных
Объем памяти составляет 2048 18-разрядных слов. Разрядность адреса — 12 бит. Разряды в ячейках нумеруются справа налево от 1 до 18. Таким образом, старший (левый разряд) имеет номер 18, младший — 1. Все ячейки памяти равноправны. Для упрощения записи адресов и данных используется восьмеричная система счисления.
Для обеспечения нужной точности и разрядности вычислений “Урал” может оперировать как с 18-, так и с 36-разрядными двоичными числами. В последнем случае две соседние ячейки памяти объединяются в одну, адрес которой должен быть четным. Слово с четным адресом будет содержать старшую половину 36-разрядного числа, слово с нечетным адресом — младшую.
Двоичные числа длиной 18 или 36 разрядов представлены в форме с фиксированной точкой. Считается, что целая часть числа равна нулю, а в памяти хранится только дробная его часть в прямом коде. Знак всегда расположен в самом левом (старшем) разряде, остальные разряды занимает дробная часть числа.
Десятичные числа всегда занимают две смежные ячейки памяти. Разряд 36 содержит знак числа, а разряды 35-1 — девять тетрад дробной части. Самая младшая тетрада неполная и содержит три старших разряда; младший разряд этой тетрады считается равным 0.
Система команд
ЭВМ “Урал” является одноадресной вычислительной машиной. В состав процессор входят регистр и сумматор, в которых хранится один из операндов; другой операнд расположен в памяти. Разряды 17-13 каждой команды содержат код операции, а разряды 11-1 — адрес операнда. Разряд 18 равен единице, когда при выполнении команды должно выполняться индексирование (см. ниже). Разряд 12 определяет, будет ли выполняться операция над 18- или 36-разрядными числами. В первом случае этот разряд равен 0, во втором — 1.
В составе процессора имеется индексный регистр. Когда его содержимое отлично от 0, оно вычитается из адресов ячеек памяти в командах, 18-й разряд кода которых равен 1. При записи программы на бумаге 18-й разряд обозначается знаком “-”, если он содержит единицу, и никак не обозначается в противном случае.
Для управления изменением значения индексного регистра используется одноразрядный регистр w. Когда он содержит 0, команда с кодом 24 (условный переход по индексу) уменьшает содержимое индексного регистра на единицу, а когда он содержит 1 — на 2. Таким образом, регистр w принимает значение 0, если с помощью индексного регистра обрабатываются 18-разрядные величины, и 1, если обрабатываются 36-разрядные величины.
Для обеспечения условных переходов используется признак w. В большинстве случаев он устанавливается, если получен отрицательный результат, в том числе и отрицательный нуль, и сбрасывается в противном случае.
Если при выполнении какой-либо операции произошло переполнение, то действия машины зависят от состояния тумблера “Блокировка переполнения” на пульте управления. Если этот тумблер выключен, ЭВМ перейдет в состояние “останов”, если же он включен, производится пропуск следующей команды (на машинах ранних выпусков производился переход на команду с адресом 0001).
Кроме тумблера управления блокировкой переполнения на пульте имеется восемь так называемых ключей, пронумерованных от 0 до 7. Они могут быть проверены с помощью специальной команды и используются, в частности, для отладки программ.
Система команд ЭВМ “Урал” приведена в таблице.
Код операции | Название команды |
Условие установки w |
Действия, выполняемые ЭВМ |
---|---|---|---|
00 | Нет операции | - | Никакие действия не выполняются. Все слово кода команды должно содержать нули |
01 | Сложение 1 | Минус | Содержимое сумматора складывается с содержимым ячейки памяти; результат сохраняется в сумматоре |
02 | Сложение 2 | Минус | Содержимое ячейки пересылается в сумматор (происходит сложение предварительно обнуленного сумматора с содержимым памяти) |
03 | Вычитание | Минус | Из содержимого сумматора вычитается содержимое ячейки памяти; результат сохраняется в сумматоре |
04 | Вычитание модулей | Минус | От абсолютной величины содержимого сумматора вычитается содержимое ячейки памяти; результат сохраняется в сумматоре. В первых машинах выполнялось вычитание модуля содержимого ячейки из модуля содержимого регистра с сохранением результата в сумматоре |
05 | Умножение 1 | Минус | Содержимое регистра умножается на содержимое ячейки памяти и складывается с содержимым сумматора; результат помещается в сумматор |
06 | Умножение 2 | Минус | Содержимое сумматора умножается на содержимое ячейки памяти; результат записывается в сумматор |
07 | Деление | Минус | Содержимое сумматора делится на содержимое ячейки памяти; результат записывается в сумматор |
10 | Формирование знака | Минус | Сумматору присваивается знак числа, находящегося в ячейке памяти |
11 | Сдвиг | Нуль | Содержимое регистра сдвигается на количество разрядов, определяемое битами 36-19 сумматора. Сдвиг происходит влево, если содержимое сумматора больше нуля, и вправо, если содержимое сумматора меньше нуля. Результат сдвига записывается в сумматор |
12 | Выделение части | Нуль | Производится операция "Логическое И" между содержимым сумматора и ячейки памяти. Результат сохраняется в сумматоре. Адрес ячейки памяти должен обязательно быть четным |
13 | Формирование | Нуль | Производится операция "Логическое ИЛИ" между содержимым сумматора и ячейки памяти. Результат сохраняется в сумматоре. Адрес ячейки памяти должен обязательно быть четным |
14 | Сравнение | Не нуль | Производится операция "Исключающее ИЛИ" между содержимым сумматора и ячейки памяти. Результат сохраняется в сумматоре. Адрес ячейки памяти должен обязательно быть четным |
15 | Нормализация | - | Число в сумматоре нормализуется, после чего мантисса записывается в ячейку памяти, а порядок - в старшую часть сумматора (в разряды 36-19) |
16 | Пересылка в память | Значение w сохраняется | Содержимое сумматора записывается в ячейку памяти |
17 | Пересылка в регистр | Положительный нуль | Содержимое ячейки памяти заносится в регистр; признак w устанавливается, если засылаемое число является положительным (истинным) нулем. Содержимое сумматора не изменяется |
20 | Пересылка адреса в сумматор | Минус | В 36-й разряд сумматора записывается содержимое 12-го разряда кода команды, а в разряды 29-19 - адрес, заданный в команде, т. е. биты 11-1. Разряды сумматора 35-30 обнуляются |
21 | Условный переход | - | Если перед выполнением этой команды w=0, то управление передается очередной команде. Если же w=1, то управление передается команде с указанным адресом. Содержимое регистра и сумматора не меняется |
22 | Безусловный переход | - | Управление передается указанной команде. Содержимое регистра и сумматора не меняется |
23 | Обращение к ключу | Предыдущее значение w сохраняется | Поле адреса в коде команды содержит номер ключа от 0 до 7. Если указанный ключ включен, следующая команда пропускается, в противном случае продолжается обычное выполнение |
24 | Условный переход по индексу | - | Если в индексном регистре содержится 0, происходит переход к следующей команде; если содержимое индексного регистра больше нуля, оно уменьшается на 1 или 2 в зависимости от состояния одноразрядного регистра w |
25 | Пересылка в индексный регистр | - | Адрес, заданный в команде (разряды 11-1), записывается в индексный регистр. Содержимое бита 12-го кода команды заносится в одноразрядный регистр w |
26 | Одиночное суммирование | - | Содержимое сумматора складывается с содержимым ячейки памяти; перенос из старшего разряда добавляется к младшему (циклическое суммирование); результат сохраняется в сумматоре |
30 | Изменение команд | - | Обратный код команды, содержащейся в адресуемой ячейке, складывается (с циклическим переносом) с содержимым ячейки, следующей за выполняемой командой 30. Полученная сумма выполняется вместо следующей команды |
31 | Чтение с перфоленты | - | Данная команда занимает три ячейки памяти. В первой ячейке находится код команды 31 и начальный адрес памяти; во второй - код 01 и номер зоны перфоленты, подлежащей чтению; в третьей - код 00 и адрес последней ячейки памяти, участвующей в операции |
Чтение с магнитной ленты | - | Аналогична команде чтения с перфоленты, но второе слово содержит код 02 и номер зоны магнитной ленты | |
Запись на магнитную ленту | - | Аналогична команде чтения с перфоленты, но второе слово содержит код 03 и номер зоны магнитной ленты | |
32 | Печать результата | - | Содержимое сумматора печатается или перфорируется (в зависимости от положения переключателя на пульте управления). Печать производится в десятичной или восьмеричной системе в зависимости от положения переключателя на пульте. Адресная часть кода команды должна быть нулевой. |
34 | Пропуск интервала | - | Производится пропуск одного интервала на бумаге. Адресная часть кода команды должна быть нулевой. |
37 | Останов | - | Машина останавливается. Число из указанной ячейки памяти загружается в сумматор и отображается на индикаторах пульта управления |