Взаимодействие частей современной вычислительной машины иллюстрируется следующей примерной схемой (рис. 28). Слева показаны ячейки "памяти", справа - различные устройства для выполнения арифметических и других действий (сложение, умножение, сравнение, печатание и т. д.).
Рис. 28. Упрощенная схема электронной вычислительной машины
Все остальное составляет так называемое "управляющее устройство", работу которого мы как раз и собираемся пояснить.
Главными частями управляющего устройства являются два электронных коммутатора (переключателя): "коммутатор памяти" КП и "коммутатор действий" КД. Коммутатор памяти позволяет осуществлять соединение главной шины ГШ с любой ячейкой запоминающего устройства, а коммутатор действий - с любым из арифметических, печатающих и т. п. устройств.
С помощью вводного устройства до начала вычислений в ячейки памяти с адресами 1, 2, 3 и т. д. вводятся числа, означающие последовательные команды той программы, по которой должен вестись расчет. Кроме того, в соответствии с программой в некоторые другие ячейки вводятся необходимые исходные данные, постоянные коэффициенты и проч. В особую ячейку УОК ("Указатель очередной команды") вводится число "1", показывающее, что процесс вычислений должен начинаться с выполнения команды, хранящейся в ячейке памяти с адресом 1.
Выполнение каждого арифметического или иного действия осуществляется в пять тактов. Начало каждого из них задается специальным тактовым генератором Т. Это - источник импульсов электрического тока, посылаемых поочередно в каждый из пяти тактовых проводов, ведущих к тем устройствам, которые должны запускаться в соответствующий момент времени. На чертеже показаны только начала тактовых проводов, а цифрами 1, 2, 3, 4,5 помечены электрические контакты (электронные лампы или электромагнитные реле), которые замыкаются при подаче импульса в соответствующий провод, так что контакты с цифрой 2 замкнуты только во время второго такта. Тактовый генератор включается при запуске машины после введения в нее программы и исходных числовых данных. Далее работа машины происходит в следующем порядке.
Первый такт. Под влиянием первого тактового импульса замыкается линия, соединяющая ячейку УОК с коммутатором памяти, и по ней подается серия импульсов, соответствующая адресу первой ячейки памяти. Под влиянием этих импульсов коммутатор памяти осуществляет соответствующее соединение и выдает из первой ячейки число, изображающее первую команду. Оно поступает на "командный пункт" машины - в специальную запоминающую ячейку, разделенную на четыре части. В первой части К помещаются начальные цифры команды (код действия), указывающие, какое арифметическое или иное действие следует произвести. Во второй, третьей и четвертой частях "командного пункта" A1, А2, A3 хранятся последующие цифры команды, изображающие адреса ячеек памяти, откуда должны быть взяты числа для выполнения действия (первый и второй адреса А1 и А2) и куда должен быть помещен полученный результат (третий адрес A3).
Второй такт. Код действия из первой части "командного пункта" передается на коммутатор действий, обеспечивая соединение главной шины с соответствующим арифметическим устройством (например, с устройством для умножения).
Третий такт. Первый адрес из второй части "командного пункта" передается на коммутатор памяти, обеспечивая соединение главной шины с соответствующей ячейкой памяти и передачу хранящегося там числа на вход умножающего устройства.
Четвертый такт. Точно таким же образом на вход умножающего устройства передается второй сомножитель, взятый из ячейки памяти, номер которого указан во втором адресе команды. После поступления второго сомножителя умножающее устройство выполняет операцию умножения.
Пятый такт. Третий адрес команды, поступая на коммутатор, обеспечивает соединение главной шины с нужной ячейкой памяти, куда и помещается произведение, появляющееся к этому моменту на выходе умножающего устройства.
На этом выполнение данной арифметической операции заканчивается. Но прежде чем выполнять следующую, нужно сперва увеличить на единицу адрес команды, хранящийся в указателе очередной команды УОК. Для этого еще во время четвертого такта туда подается специальный управляющий импульс от тактового генератора, осуществляющий там операцию прибавления единицы. Благодаря этому новый цикл работы начнется с вызова на "командный пункт" следующей по счету (в данном случае второй) команды.
Если по ходу вычисления требуется отпечатать ранее полученные результаты, то машина работает следующим образом. Согласно коду действия очередной команды переключатель действий соединяет главную шину с печатающим устройством. В соответствии с первым адресом команды переключатель памяти присоединяет к той же шине ячейку запоминающего устройства, хранящую число, которое следует отпечатать. Второй адрес в команде "печатать" отсутствует, а третий адрес, передаваемый по дополнительной линии на печатающее устройство, определяет, в какую графу таблицы будет отпечатан рассматриваемый результат.
Особого внимания заслуживает команда "сравнения" или "условного перехода", так как именно она обеспечивает высокую гибкость системы программирования всего вычислительного процесса в целом. Под влиянием импульсов кода этой команды коммутатор действий подключает к главной шине устройство сравнения. На него последовательно поступают числа из ячеек с первым и вторым адресом. Если первое из них больше второго, на выходе устройства никаких импульсов не появляется и наличие команды условного .перехода остается по существу без последствий: машина просто переходит к выполнению следующей команды.
Если же первое из двух чисел меньше второго или равно ему, на выходе появляется импульс, воздействующий на указатель очередной команды УОК. В результате этого воздействия в указателе адрес ячейки, из которой должна заимствоваться следующая команда, стирается и заменяется третьим адресом исполняемой команды. Благодаря этому "естественный" порядок следования команд нарушается соответственно требованию программы.