История отечественной вычислительной техники

Архитектура и система команд ЭВМ “Урал”

Общие сведения

Вычислительная машина “Урал” разработана в 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 Останов - Машина останавливается. Число из указанной ячейки памяти загружается в сумматор и отображается на индикаторах пульта управления