Вычислительные машины
Источник: журнал «Наука и жизнь», №2, 1956 год. Автор: Н. Е. Кобринский, профессор, доктор технических наук.
«Увеличить за пятилетие изготовление... счётных и счётно-аналитических машин – в 4.5 раза... Усилить работы по конструированию и производству автоматических быстродействующих вычислительных машин для решения сложных математических задач и счётно-математических машин для автоматизации управления производственными процессами».
(Из проекта Директив XX съезда КПСС по шестому пятилетнему плану)
Можно без преувеличения сказать, что успешное решение важнейших научных и технических проблем в большой мере зависит от вычислительных средств, которыми располагают исследователи и инженеры. Ещё совсем недавно требовалось не менее 3-5 лет работы большого коллектива математиков и вычислителей для составления различных астрономических, геодезических и навигационных таблиц. Более года затрачивалось на вычисление баллистических таблиц при вводе на вооружение новых видов наземной или корабельной артиллерии или новых боевых средств авиации. Около 5 тысяч человекочасов занимала вычислительная работа, связанная с изучением колебаний элементов конструкции самолёта.
Если бы вычислительные работы, необходимые при исследовании внутриядерных процессов, космических излучений, ракетных полётов, проводились с помощью арифмометров, на это пришлось бы затрачивать десятки и сотни тысяч человекочасов. Тысячи человекочасов уходили бы на выполнение расчётов режима эксплуатации нефтяных месторождении, при проектировании различных машин и т. д. Экономическая деятельность предприятий и целых отраслей народного хозяйства также связана с решением сложных вычислительных задач. Так, например, при расчёте заработной платы для промышленного предприятия с числом рабочих и служащих около 20 тысяч человек приходится выполнять ежемесячно 15-20 миллионов вычислений и записей.
Проблема механизации вычислений стала одной из самых острых и актуальных проблем современной науки и техники. В последнее десятилетие достигнуты выдающиеся успехи в её решении.
Созданы различные типы электронных вычислительных машин, которые в огромной мере ускоряют и упрощают выполнение различных вычислений. Так, в Советском Союзе уже несколько лет работает машина «БЭСМ» конструкции академика С. А. Лебедева. За одну секунду она совершает 7-8 тысяч арифметических действий. Эта машина, которую обслуживают в смену только три человека (два инженера и один механик), заменяет труд десятков тысяч вычислителей.
Скорость и точность вычисления – две важнейшие характеристики вычислительной машины. Между ними имеется неустранимое противоречие. Оно привело к развитию двух самостоятельных направлений в вычислительной технике Первое из них связано с так называемыми моделирующими вычислительными машинами, второе – с цифровыми вычислительными машинами.
МОДЕЛИРУЮЩИЕ МАШИНЫ
В моделирующих машинах числам, над которыми производятся вычислительные операции, соответствуют определённые физические величины (механические перемещения, изменения напряжений, уровней жидкости и т. д.). Простейший пример моделирующего вычислительного устройства – всем известная логарифмическая линейка, в которой числа воспроизводятся (моделируются) механическим перемещением движка и визирного стекла. В электрических и электронных моделирующих устройствах числа воспроизводятся напряжением.
Моделирующая вычислительная машина состоит из отдельных устройств, которые проводят те или иные операции над физическими величинами, изображающими число. Так, например, суммирующее устройство складывает напряжения, моделирующие слагаемые, множительное умножает напряжения, моделирующие сомножители, интегрирующее устройство интегрирует соответствующие напряжения и т. д. Имеются устройства, которые осуществляют и более сложные преобразования, например, такие, которые образуют тригонометрические, степенные и другие функции. Отдельные устройства соединяются между собой в соответствии с видом решаемой математической задачи. Чтобы получить её решение, нужно измерить напряжение на выходном устройстве. Иногда выходное устройство снабжают печатным приспособлением и сразу получают напечатанную таблицу результатов решения задачи.
Моделирующие вычислительные машины носят специализированный характер: для решения различных задач приходится в большинстве случаев применять разные машины. Бывают, например, машины для решения алгебраических уравнений, машины для решения дифференциальных уравнений и т. д. Они отличаются друг от друга и составом устройств и способом их соединения. Такая специализация является в известной мере недостатком моделирующих машин, так как для решения различных математических задач необходимо располагать комплектом машин. Например, на самолёте-бомбардировщике приходится устанавливать отдельные вычислительные устройства для решения задач навигации, бомбометания и воздушной стрельбы.
Главное преимущество моделирующих вычислительных машин – высокая скорость их работы и сравнительная простота подготовки задачи для её решения на машине. Процесс решения сложной математической задачи может занять несколько секунд или даже долей секунды, причём в случае необходимости время решения задачи может регулироваться в широких пределах. Но моделирующие вычислительные машины имеют существенный недостаток: точность их работы сравнительно невысока. Это обусловливается тем, что невозможно идеально точно изготовить элементы машины, обеспечить полную стабильность их работы, устранить полностью помехи в электронных устройствах, идеально точно измерять напряжения и т. д. Современные электронные моделирующие вычислительные устройства работают с ошибками, лежащими в пределах от одного до десяти процентов.
Электронные моделирующие устройства с наибольшим успехом применяются при решении различных инженерных задач, связанных с исследованием и проектированием машин и сооружений, а также при решении задач стрельбы, бомбометания и торпедометания в боевых условиях. Для этих нужд точность работы моделирующих устройств оказывается в большинстве случаев достаточной, а высокая скорость их работы и простота эксплуатации обеспечивают большой эффект их применения.
ЦИФРОВАЯ МАШИНА И ЧЕЛОВЕК С АРИФМОМЕТРОМ
Иначе устроены цифровые вычислительные машины. Их назначение кажется очень узким – выполнять четыре действия арифметики.
Но к этим четырём действиям (а также к простейшим логическим действиям, каковы, например, сравнение, отождествление) можно свести сложнейшие задачи, так что на самом деле сфера действия цифровых машин чрезвычайно широка.
Для того, чтобы яснее представить себе устройство и действие такой машины, сравним её с работой человека-вычислителя, вооружённого простым арифмометром.
Помимо арифмометра, вычислитель имеет, конечно, ещё и бланк для записи промежуточных результатов вычислений и бланк для записи окончательных результатов. Он получает исходные данные для вычислений и подробную программу работы – инструкцию, где указаны порядок вычисления, характер вычислительных операций, определено, куда записывать и откуда брать промежуточные данные, возникающие при вычислениях. Исходные данные и инструкции – это та информация, которая заранее сообщается вычислителю. Промежуточные и окончательные результаты вычисления – это информация, полученная вычислителем в ходе вычислительного процесса. Таким образом, можно выделить три части «вычислительного устройства»: бланки, где хранится информация, арифмометр, который её перерабатывает, и сам вычислитель, который управляет передачей и обработкой информации (одни данные «помешает» в арифмометр, другие – на «хранение», берет дополнительные данные с «хранения» и передаёт их арифмометру, передаёт с арифмометра на «хранение» промежуточные и конечные данные и т. д.).
Если разобрать теперь схему устройства и работы цифровой вычислительной машины, окажется, что она очень похожа на схему этого «вычислительного устройства». Здесь также можно выделить три основные части: хранящую информацию (так называемое запоминающее устройство, или «память»), перерабатывающую её (арифметическое устройство) и управляющую. Кроме того, машина имеет входное и выходное устройства.
Во входное устройство вводится информация, необходимая для вычисления. Она включает в себя также подробную инструкцию – программу вычисления, составленную из отдельных команд, указывающих порядок вычисления и места (адреса), где должна храниться информация, получаемая в процессе вычисления. Во входном устройстве вся информация перерабатывается в такой вид, чтобы её было удобно хранить и обрабатывать в остальных устройствах. Выражаясь образно, здесь информация переводится на «язык» машины.
Вся информация, вводимая в машину, а также промежуточные результаты хранятся в особом устройстве, которое играет роль «памяти» машины. Это устройство состоит из ряда занумерованных ячеек. Номер ячейки является её «адресом». В каждой ячейке может храниться информация – число или команда, пока она не будет заменена другим числом или командой. Для удобства «память» машины делят на две части: имеется медленно действующее, или внешнее, запоминающее устройство и быстро действующее, или внутреннее, устройство. В первом, большем по объёму и более дешёвом в отношении создания и эксплуатации, хранится информация, которая не участвует в ближайших операциях. Это устройство состоит обычно из набора перфорированных карт или перфорированных и магнитных лент. Внутренняя же «память» строится на электронных элементах. Здесь хранится информация, необходимая для работы в самое ближайшее время. В современной вычислительной машине внешняя «память» насчитывает сотни тысяч ячеек, а внутренняя – тысячи ячеек.
Арифметическое устройство машины, как указывает само его название, служит для выполнения четырёх арифметических действий и некоторых других вспомогательных операций, которые сводятся к этим действиям.
Наконец, выходное устройство машины служит для записи результатов вычислительных процессов. Оно обычно переводит информацию с «языка» машины на человеческий язык.
Работа всей машины управляется и контролируется управляющим устройством, которое, по существу, выполняет функции вычислителя. Это устройство получает из «памяти» команду о порядке выполнения очередной операции и управляет передачей и обработкой соответствующей информации.
КАК РАБОТАЕТ ВЫЧИСЛИТЕЛЬНАЯ МАШИНА
Что же представляет собой команда, то есть информация, заданная машине человеком? Она должна содержать сведения, во-первых, об адресах тех чисел, которые участвуют в очередной операции, во-вторых, о характере этой операции, в-третьих, указания об адресе ячейки, куда следует отправить результат, и, в-четвёртых адрес ячейки, из которой должна быть взята следующая команда. Части команды обозначаются определёнными числами, так что команда в целом выглядит как многозначное число. Так, сложение может кодироваться числом 01, вычитание – 02 и т. д. Команда, указывающая, что нужно сложить два числа, находящихся в ячейках №110 и №237, и отправить результат и ячейку №431, а затем получить следующую команду из ячейки №012, запишется в виде следующего многоразрядного числа: 11501237431012. Такая команда является четырёхадресной, поскольку она содержит информацию, охватывающую четыре ячейки «памяти». В машинах чаще всего применяются трёхадресные команды (отсутствуют адреса ячейки со следующей командой) или одноадресные команды, соответствующее число которых заменяет трёхадресную команду. При этом последовательные команды располагаются в ячейках с возрастающими номерами: после команды из ячейки №017 выполняется команда, расположенная в ячейке №018, и т. д.
Однако такой порядок выполнения команд может быть в случае необходимости изменён, и это обстоятельство имеет важнейшее значение для логических возможностей машины. Такое изменение осуществляется в результате команды «условный переход», которая позволяет машине в зависимости от результатов предыдущих вычислений выбирать между двумя возможностями дальнейшего продолжения вычислительного процесса.
Предположим, что нужно разделить одно чисто на другое. Как известно, для этого требуется последовательно вычитать делитель из делимого до тех пор, пока остаток не станет отрицательным. Если мы, например, делим 12 на 5, то сначала вычитаем 5 из 12, получаем остаток 7, вычитаем снова 5 уже из 7, получаем остаток 2; вычитая 5 из 2, приходим к отрицательному результату – 3. Чтобы делить дальше, нужно вернуться назад к остатку 2, приписать к нему 0, то есть перейти к вычислению десятых долей, и т. д. Как работает в подобном случае вычислительная машина? Допустим, что первая операция вычитания делимого из делителя выполнена. Тогда-то и вступает в силу команда «условный переход». Она означает: проверить знак остатка, и если он положительный, то повторить операцию вычитания, если остаток отрицательный, то перейти к следующим командам (которые определяют операцию исправления, остатка, сдвига делителя и, наконец, возврата к команде вычитания). Таким образом, та или иная последовательность действий выбирается самой машиной в зависимости от обстоятельств, возникших в результате предыдущих вычислений.
Работа цифровом машины Протекает в два такта. Сначала происходит передача команды из «памяти» в управляющее устройство. Затем выполняется указанная операция.
ДВОИЧНАЯ СИСТЕМА – «ЯЗЫК» МАШИНЫ
Вся информация, которая задаётся цифровой вычислительной машине, то есть числа команды, а если необходимо, то и текст, как бы переводится на её «язык» – кодируется (шифруется) в виде набора определённых сигналов. В электронных машинах этими сигналами служат электрические импульсы или различные уровни напряжения. Например, цифру «5» можно изобразить с помощью 5 импульсов электрического напряжения, проходящих через определённый интервал времени по какому-либо из каналов машины за один цикл её работы. Ту же цифру можно обозначить и иначе: поднять напряжение в том участке арифметического устройства, которому присвоен номер «5», по сравнению с другими участками. В вычислительных машинах чаще всего используются оба способа кодирования информации: первый – для передачи её из одного устройства в другое, второй – для её накопления и хранения.
Удобнее всего изображать сигналы с помощью пары цифр: наличие сигнала («да») обозначать единицей, отсутствие («нет») – нулём. Тогда при первом из перечисленных выше способов кодирования цифра «5» изобразится в таком виде: 111110000 (пять единиц), а при втором способе – 0000010000 (единица на пятом месте, считая справа). Сразу видно, что эти коды, которые соответствуют общепринятой десятичной системе записи чисел, слишком длинны, а поэтому требуется много времени для передачи информации и многих ячеек для её хранения.
В цифровых машинах информация чаще всего кодируется в двоичной системе счисления. В этой системе каждое число высшего разряда в два раза больше числа ближайшего низшего разряда. Например, число «три» изображается в виде 11 (одна единица и одна двойка), число «пять» – в виде 101 (одна единица, ноль двоек, одна четвёрка), число «два» – 10 (ноль единиц и одна двойка) и т. п. Нетрудно заметить, что в такой системе для изображения любого числа требуются только единицы и нули. В двоичной системе очень простой вид принимают сложение и умножение: 0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1, 1 + 1 = 10; 0 X 0 = 0, 0 Х 1 = 0, 1 x 0 = 0, 1 x 1 = 1, вот и вся таблица сложения и вся таблица умножения! Это упрощает выполнение таких операций машиной.
Устройства машины воспринимают поступающую к ним по входным каналам информацию и перерабатывают её, арифметическое устройство – в соответствии с требуемой вычислительной операцией, управляющее – в соответствии с логической операцией управления. Так, например, если на суммирующее устройство (сумматор) подать 101 (код числа «пять») и 11 (код числа «три»), то на выходе будет получена их сумма – 1000 (то есть по десятичной системе «восемь»). Если на вход управляющего устройства будет подана команда: передать числа из ячеек «памяти» «5» и «3» в суммирующие устройства, то на его выходе появятся сигналы, открывающие каналы, по которым требуемые числа из ячеек поступят в сумматор.
ЭЛЕМЕНТЫ МАШИНЫ
Все вычислительные и управляющие цепи машины строятся из нескольких основных типов элементов. Это элемент, способный хранить воспринятый им сигнал до получения следующего сигнала, и элементы, реализующие три основные логические операции: соединение, выбор, разъединение («и», «или», «не»). Первый элемент представляет собой электронное реле, способное находиться в одном из двух устойчивых состояний, одно из них кодируется как 0, другое – как 1. Если элемент находился в состоянии 0, то приход сигнала переведёт его в состояние 1, и наоборот. Механическую модель такого элемента можно представить в виде трубки, в которой помещён шарик. Когда левый конец трубки слегка поднят, шарик находится в её правой части. Такое состояние элемента кодируется как 0.
Если поднять правый конец трубки (подать сигнал), шарик перекатится в левую часть трубки; модель перейдёт в другое состояние, кодируемое как 1.
Логические элементы работают так: элемент «и» выдаёт сигнал только в том случае, когда одновременно подаются сигналы на оба его входа, элемент «или» – когда подан сигнал хотя бы на один его вход (первый или второй). Наконец, элемент «не» выдаёт сигнал, когда на его входе нет сигнала. Из этих элементов можно в принципе построить любую цепь, осуществляющую вычислительные или логические операции.
В первых электронных цифровых машинах эти элементы строились на электронных лампах, вследствие чего машины имели большие габариты и потребляли много энергии. В настоящее время в большинстве случаев цепи машины строятся на полупроводниковых и магнитных элементах. Из них же строится внутренняя «память» машины. Это позволило значительно сократить размеры машины и потребляемую ею мощность. Так, первая электронная машина «ЭНИАК» содержала 18 тысяч ламп, её внутренняя «память» хранила всего 2 десятка чисел, а потребляла она несколько десятков киловатт электрической энергии. Современная же машина, работающая на полупроводниковых и магнитных элементах, способна хранить во внутренней «памяти» до тысячи, а во внешней – до 200 тысяч чисел, и потребляет всего несколько киловатт.
Точность вычисления на цифровой машине зависит от величины чисел, с которыми она оперирует, и от характера вычислительного процесса. В отличие от моделирующей машины здесь принципиально возможно получить сколь угодно высокую точность вычисления. Вместе с тем даже самая быстродействующая цифровая машина работает намного медленнее моделирующей машины. Время решения задачи здесь исчисляется минутами и даже часами, и только при очень большой потере точности и при сравнительно простых задачах оно может быть доведено до секунд.
Подготовка задачи для решения на цифровой вычислительной машине требует составления программы её работы. Эта операция (программирование) весьма трудоёмка и выполняется обычно квалифицированными математиками. В последнее время достигнут значительный прогресс в технике программирования. Оно автоматизируется посредством тех же вычислительных машин, для которых составляется программа. Кроме того, для наиболее распространённых операций используются заранее подготовленные подпрограммы. Они хранятся во вспомогательном запоминающем устройстве, которое образует своеобразную «библиотеку». По мере надобности подпрограммы автоматически вводятся в определённые ячейки основного запоминающего устройства. При этом, если в ходе операции возникает необходимость выполнить какую-либо распространённую, но сложную вспомогательную вычислительную операцию, например, извлечь квадратный корень, то в главную команду вводится команда перехода на подпрограмму, а после её реализации – обратного перехода к главной программе.
Цифровые вычислительные машины широко используются в научных и технических исследованиях, где особенно важна высокая точность решения задач. Для решения различных экономических задач, бухгалтерских и финансовых расчётов применяются только такие машины. Они же служат для решения логических задач.
МАШИННОЕ УПРАВЛЕНИЕ
Сравнивая схему работы вычислителя с арифмометром и цифровой вычислительной машиной, мы видели, что управляющее устройство машины заменяет функции человека-вычислителя: оно автоматически управляет сложным процессом вычисления. Но разве такое устройство не может заменить человека и при управлении, например, технологическим процессом изготовления какой-либо детали? Такая замена в большом числе случаев оказывается успешной. В самые последние годы вычислительные машины начинают всё шире применяться в системах управления самыми различными процессами. Такие машины носят название управляющих. Уже имеются, например, нефтеперегонные заводы, весь технологический процесс которых полностью регулируется управляющими машинами, без участия человека. Такие машины управляют работой автоматического завода, изготовляющего блоки цилиндров автомобилей, радиозавода, регулируют движение автотранспорта на перекрёстках дорог. Они используются также для решения различных задач логического характера, как, например, перевод текста с одного языка на другой. Машины в принципе способны решить любую задачу, которую можно выразить о виде ряда элементарных логических операций. Поэтому возможности для их применения чрезвычайно широки.
О некоторых из этих возможностей – применении вычислительных машин в системах управления технологическими процессами и для решения логических задач – будет рассказано в следующей статье. Использование электронных вычислительных машин для этих целей имеет большие перспективы. Оно позволяет значительно повысить производительность, облегчает умственный труд людей, высвобождает их силы.