Числа управляют работой машины
А. Д. Смирнов
Значительное увеличение скорости работы электромеханических счетчиков невозможно из-за инерционности частей счетного механизма: цифровых колес, рычагов и т. п.
Резкого увеличения скорости выполнения машиной арифметических операций удалось достигнуть заменой механических и электромеханических счетчиков на электронные.
Поскольку поток электронов в радиолампе обладает ничтожной инерцией, лампы, входящие в состав электронных счетчиков, почти мгновенно можно переводить из состояния проводимости в “запертое” состояние и обратно.
Электронные счетчики были сконструированы в 20-х годах нашего столетия на базе изобретенного в 1918 г. русским ученым М. А. Бонч-Бруевичем электронного реле (триггера). Однако вначале они применялись только в экспериментальной физике для подсчета элементарных частиц, и лишь в 50-х годах электронные счетчики были использованы в вычислительных машинах.
Практически в цифровых машинах существует не один счетчик, а целый комплекс устройств, позволяющих производить над числами арифметические операции. Этот комплекс, состоящий из одного или нескольких счетчиков (сумматоров), устройств для запоминания одного числа (регистров) и ряда других устройств, носит название арифметического устройства машины и обычно для краткости именуется АУ. Для того чтобы обеспечить беспрерывную работу арифметического устройства со скоростью несколько тысяч действий в секунду, в него с такой же скоростью надо вводить числа и выводить результаты.
Возникает необходимость в специальном устройстве, в котором должны храниться введенные в машину числа и промежуточные результаты вычислений. Из этого устройства, называемого оперативным запоминающим устройством, числа с большой скоростью подаются в арифметическое устройство и из арифметического устройства в него же направляются результаты. Функция оперативного запоминающего устройства состоит только в хранении чисел — с возможностью быстрой передачи необходимого числа в арифметическое устройство — и в принятии на хранение полученного в арифметическом устройстве результата.
Такое “разделение обязанностей” между арифметическим устройством и запоминающим устройством позволяет значительно упростить конструкцию машины, так как “запоминание” осуществляется более простыми техническими средствами, чем их суммирование в счетчиках, как это имело место в перфорационных машинах.
Как же среди многих хранящихся в запоминающем устройстве чисел выбрать как раз то, которое нам нужно? Для этого каждому числу в оперативном запоминающем устройстве отведено строго определенное место — ячейка. Все ячейки пронумерованы. Номер ячейки называется адресом. Зная адрес, легко найти само число, при этом величину самого числа знать не обязательно.
Здесь можно провести грубую аналогию с камерой хранения, в которой на полках имеются отделения для вещей. Все отделения пронумерованы. При приеме на хранение вашего чемодана или корзины, вам выдают номерок — адрес отделения, где вещь будет храниться. При получении вещей обратно вам не обязательно называть, какие именно вещи сданы на хранение, достаточно дать номерок и по этому “адресу” быстро найдут и выдадут ваши вещи.
Таким образом, введение электронных схем в счетные устройства и разделение между устройствами функций счета и запоминания позволили в тысячи раз увеличить скорость выполнения арифметических операций и дали возможность хранить в машине огромное количество чисел, нужных для проведения вычислений.
Но как в таком случае управлять работой машины? О ручном управлении при таких скоростях, понятно, не может быть и речи.
Ввести управление при помощи коммутационных досок? Но такой способ настройки тормозил применение для научных вычислений даже медленно работающих, перфорационных машин и не отвечал задаче полной автоматизации управления.
Выход был найден в следующем: управляющие приказы машине надо давать в форме чисел!
После того как мы знаем о том, что числа в машине представляются импульсами тока, такое решение не должно показаться нам странным и необычным. Управлять работой электронных схем нужно импульсами тока или изменениями напряжений. Следовательно, устройство управления машины должно оперировать с импульсами, а комбинацию управляющих импульсов можно представить в форме числа. Такое число, введенное в машину, преобразуется в серию исходных управляющих импульсов.
Что же представляют собой эти числа, при помощи которых машине задаются приказы о выполнении операций? Они состоят из двух частей. В одной части в виде условного шифра записывается, какую операцию машина должна выполнить. Обычно машина способна выполнять до 50 различных операций. Поэтому шифр или, как иногда говорят, код операции записывается двузначным числом. Например, шифр 01 может означать сложение, 03 — вычитание, 06 — умножение, 37 — остановку работы, и т. п.
В другой части приказа указывается, над какими числами нужно эту операцию произвести. Но так как числа хранятся в запоминающем устройстве, то указываются адреса тех ячеек, откуда берутся числа, и адрес той ячейки, в которую необходимо послать полученный результат.
Такую цифровую форму приказа машине с указанием шифра операции и адресов чисел называют командой.
Обычно в арифметическом действии участвуют два числа: два слагаемых, уменьшаемое и вычитаемое, множимое и множитель, делимое и делитель; в результате действия получается третье число: сумма, разность, произведение или частное. Поэтому наиболее естественно было бы указывать в адресной части команды сразу три адреса: откуда взять первое число, откуда взять второе число и куда направить результат. Это — трехадресные команды.
Например, 01 1021 1022 0563 — это команда, означающая следующее: нужно взять числа из ячеек № 1021 и 1022, сложить их в сумматоре арифметического устройства (впереди стоит шифр сложения 01) и сумму отправить в ячейку № 0563.
Для упрощения конструкции машины выполнение арифметических операций разбивают на три этапа и вводят одноадресные команды, в которых указывается только один адрес. При этом возникает необходимость в дополнительных командах: “послать число из запоминающего устройства в сумматор” — дадим ей шифр 02 — и “послать число из сумматора в запоминающее устройство” — дадим ей шифр 16. Тогда предыдущая трехадресная команда сложения распадается на три одноадресных:
- 02 1021 — послать в сумматор число из ячейки № 1021,
- 01 1022 — сложить содержимое сумматора с числом из ячейки № 1022,
- 16 0563 — отослать результат, полученный в сумматоре, в ячейку № 0563.
Поскольку устройство одноадресных машин проще, в дальнейшем мы будем вести все объяснения применительно к ним.
Итак, запомним, что команда — это число, представляющее собой приказ для выполнения машиной одной операции.
Набор следующих в определенном порядке команд, необходимых для решения всей задачи, называется программой.
Но пока мы только представили сам приказ в форме числа, а следовательно, в форме импульсов. А чтобы машина выполнила этот приказ, потребуется большое количество управляющих импульсов, посылаемых в определенной последовательности в арифметическое устройство, в запоминающее устройство, в устройства ввода и вывода. Эти импульсы вырабатывает и рассылает устройство управления (УУ).
Кратко функции устройства управления (УУ) можно охарактеризовать так: оно вызывает для выполнения нужную команду, получая ее в форме импульсов, преобразует ее в управляющие импульсы и в строгой последовательности рассылает эти управляющие импульсы по другим устройствам. После того как операция выполнена, устройство управления получает ответный сигнал, по которому производит вызов следующей команды.
Откуда же берутся команды? То есть где в машине хранится программа? Она может быть набита на перфокартах и при помощи щеточных блоков или фотоэлементов считываться и вводиться в устройство управления машины. При этом команды будут идти всегда в одной и той же последовательности друг за другом, и изменить последовательность их поступления в ходе решения задачи устройство управления будет не в состоянии. Кроме того, ввод команд при таком способе будет довольно медленным, так как будет зависеть от скорости движения перфокарт.
Но поскольку команды — это числа, то их можно хранить, как и обычные числа, в ячейках оперативного запоминающего устройства, из которых устройство управления может их легко выбирать.
Такое хранение программы более перспективно ввиду того, что команды поступают в устройство управления быстрее, а порядок их поступления может быть изменен при необходимости самим устройством управления.
Помимо команд, выполняющих арифметические операции, существуют команды управляющие. Примером простой управляющей команды может служить команда остановки. После выполнения этой команды машина останавливается.
Ознакомившись с назначением трех основных устройств машины: арифметического устройства (АУ), оперативного запоминающего устройства (ОЗУ) и устройства управления (УУ), рассмотрим теперь их взаимодействие при работе машины. Для этого, не вдаваясь пока в технические подробности, обозначим каждое устройство в виде прямоугольника и стрелками покажем связь его с остальными устройствами машины (рис. 22). Такое изображение называют блок-схемой; им мы уже пользовались при рассмотрении моделирующих устройств и систем автоматического регулирования. Устройство управления имеет связи со всеми устройствами, но на блок-схеме из них показаны только основные. Жирными стрелками показаны связи, все время существующие в период автоматической работы.
Рис. 22. Блок-схема универсальной цифровой электронной вычислительной машины
Начинается работа машины с того, что через вводное устройство в оперативное запоминающее устройство вводится с перфоленты или перфокарт программа решения задачи, состоящая из чисел-команд и чисел, над которыми нужно производить вычисления. Этот начальный ввод изображен на блок-схеме тонкой линией.
Затем машина переходит на автоматическую работу, которая заключается в следующем.
Из ячейки оперативного запоминающего устройства (ОЗУ), в которой находится первая команда программы, число-команда направляется в устройство управления (УУ). Здесь это число преобразуется в серию управляющих электрических сигналов. Пусть, например, первая команда была командой посылки в сумматор, а вторая — командой сложения. В адресной части первой команды был указан номер (адрес) ячейки, из которой надо было взять первое слагаемое. Устройство управления (УУ) выработает такие управляющие импульсы для оперативного запоминающего устройства (ОЗУ), которые обеспечат выборку числа по заданному адресу и посылку его в арифметическое устройство.
Шифр операции тоже попадает в УУ. Поэтому шифру (для операции посылки в сумматор он равен 02) УУ выработает управляющие сигналы для арифметического устройства, такие, что произойдет именно посылка в сумматор выбранного из ячейки ОЗУ числа. Будь шифр операции другой, например 06, УУ переработало бы этот шифр в такие управляющие сигналы, которые настроили бы арифметическое устройство на выполнение умножения.
Итак, управляющие сигналы в УУ выработаны, посланы в соответствующие устройства, в которых на их основании выполнилась операция посылки — число оказалось в сумматоре. Команда выполнена.
Машина переходит к следующему такту. Из следующей по номеру ячейки новое число-команда, в нашем примере команда сложения, направляется в УУ и выполняется. После выполнения команды сложения машина переходит к третьему такту. Из третьей по порядку ячейки выбирается команда в УУ и выполняется. Если опять по этой команде будет производиться арифметическая операция, печать результата или запись результата в ячейку ОЗУ, то операция будет выполнена подобным образом.
Следующей операцией может быть и управляющая команда, например, так называемая команда условного перехода. Для выполнения этой команды УУ должно “знать”, каков был результат предыдущей операции. В зависимости от результата предыдущей операции устройство управления по команде условного перехода или возьмет для исполнения команду из следующей по порядку ячейки, или перейдет к другому участку программы. Для того чтобы УУ “знало” результат арифметической операции, из арифметического устройства в устройство управления подается особый сигнал каждый раз, когда результат операции получается со знаком минус. На блок-схеме эта связь показана самой верхней стрелкой.
Результат вычисления, полученный в АУ, может быть напечатан, если он окончательный, а если он промежуточный — то послан в одну из ячеек ОЗУ, где он будет находиться, пока не потребуется для продолжения вычислений.
Количество ячеек в ОЗУ современных машин бывает 500-4000, а в некоторых типах машин и больше. А как быть, если этого количества ячеек не хватит для размещения программы, исходных чисел и промежуточных результатов? На этот случай в машине имеется дополнительное запоминающее устройство. Оно медленнее действует, чем ОЗУ, но зато в нем можно хранить намного больше чисел: до нескольких десятков и сотен тысяч. Те результаты, которые для дальнейших вычислений не потребуются или потребуются не скоро, можно сразу целой группой перевести в это дополнительное запоминающее устройство, освободив часть ячеек ОЗУ. Освобожденные ячейки используются или для записи в них следующих результатов вычислений или для ввода в них из дополнительного запоминающего устройства продолжения программы вычислений, если сразу вся программа не уместилась в ОЗУ. Дополнительное запоминающее устройство обычно работает по принципу записи на магнитную ленту, поэтому часто называется магнитофоном или магнитным запоминающим устройством, сокращенно МЗУ.
Перечисленные выше устройства обеспечивают автоматическую работу машины. Но оператору, работающему на машине, необходимо иметь возможность наблюдать за ходом вычислений, остановить на время решение задачи, проверить, какое число находится в той или иной ячейке, иметь возможность изменить одно-два числа в ячейках, не пробивая их предварительно на ленте, проследить за ходом вычислений шаг за шагом и т. п. Для этих целей служит пульт ручного управления и панель сигнализации.
Разобравшись в блок-схеме, мы получили представление о взаимодействии устройств универсальной электронной машины и об общем принципе ее работы.
Подведем итоги. Какими же средствами удалось достигнуть увеличения скорости счета и полной автоматизации работы современных универсальных быстродействующих цифровых машин?
Во-первых, заготовка программ и числовых данных была вынесена на отдельные устройства, а ввод данных в машину с перфокарт или перфоленты механизирован. Подобное решение уже встречалось в перфорационных машинах.
Во-вторых, в машинах были применены быстродействующие электронные схемы взамен механических или электромеханических. Подобные электронные схемы применялись раньше в других областях техники.
В-третьих, в машине были отделены функции запоминания чисел от функций счета. Для запоминания чисел в первое время использовались уже разработанные для других нужд устройства, например устройства магнитной записи.
И, наконец, в-четвертых, управление было осуществлено при помощи изображения управляющих команд в форме чисел и введена возможность условных переходов от одного участка программы к другому в зависимости от полученных промежуточных результатов.
Введение каждого из перечисленных средств было подготовлено историческим развитием вычислительной техники, электроники, физики, математической логики. Но объединение этих достижений в конструкции быстродействующей цифровой машины дало резкий качественный скачок, отразившийся не только на развитии математических машин, но приведший к подъему на новую ступень всей науки и техники в целом. В этом проявился закон диалектического материализма о переходе постепенных количественных изменений к крупным качественным скачкам.
Прежде чем переходить к более подробному объяснению, как устроены и работают отдельные устройства машины и вся машина в целом, нам придется сделать небольшое отступление, рассказав о системах счисления, принятых в машинном счете.
Глава из книги “Современные математические машины”, М., 1959 г., стр. 50.
Перепечатывается с разрешения автора.