Бывало нечто, о чем говорят: Смотря, вот это ново, но это было уже в веках, бывших прежде нас.
сЭкклезиаст», 1, 10
МЕЧТА БЭББИДЖА СБЫЛАСЬ»
В 1937 году американский физик Говард Гатуэй Айкен начал работать в Гарвардском университете над тезисами своей диссертации. Айкену было около сорока — возраст, не типичный для диссертанта. Нетипичным был и его путь в науку.
Закончив военно-техническую школу в Индианопо-лисе, Айкен поступил в Висконслнский университет, где в 1923 году получил степень бакалавра в области электротехники. Но еще в 1919 году, будучи студентом, Айкен начал служить в Мэдисонской газовой компании, специализируясь на разработке и исследовании генераторов сильных токов. Добившись некоторых успехов, он в 1928 году перешел в фирму «Вестингауз». Но молодого инженера тянуло к «основам науки» — математике и физике, и в 1931 году он снова становится студентом, на этот раз Чикагского университета. В следующем году, окончательно порвав с Вестингаузом, он переходит в Гарвард, где завершает свое научное образование.
Теоретическая часть диссертации Айкена содержала решение так называемых нелинейных обыкновенных дифференциальных уравнений. Чтобы сократить вычислительную работу, Айкен начал придумывать несложные машины для автоматического решения частных задач, например для вычисления полиномов. В конце концов он пришел к идее автоматической универсальной вычислительной машины, способной решать широкий круг научно-технических задач.
17U
Фирма IBM, согласившаяся финансировать создание машины, выделила в распоряжение Айкена четырех инженеров. Работа продолжалась около пяти лет, и в августе 1944 года была закончена и передана Гарвардскому университету «Вычислительная машина с автоматическим управлением последовательностью операций» (АСКК), известная под названием «Марк I».
Замечательно, что ее автором был человек, широтой своих интересов — инженер, математик, физик,— напоминавший Чарлза Бэббиджа. С идеями великого англичанина Айкен познакомился случайно, спустя три года после начала работы над «Марк I». Пораженный предвидением Бэббиджа, он писал: «Живи Бэббидж на 75 лет позже, я остался бы безработным!»
В «Марк I» использовались механические элементы для представления чисел и электромеханические — для управления работой машины. Как и в аналитической машине, числа хранились в регистрах, состоящих из де-сятизубых счетных колес. Каждый регистр содержал 24 колеса, причем 23 из них использовались для представления числа, а одно — для представления его знака. Регистр имел механизм передачи десятков и поэтому использовался не только для хранения чисел; находящееся в одном регистре могло быть передано в другой регистр, и добавлено к находящемуся там числу (или вычтено из него).
Эти операции выполнялись следующим образом. Через счетные колеса, образующие регистр, проходил непрерывно вращающийся вал, причем любое колесо с помощью электромеханических переключателей могло быть присоединено к этому валу на время, составляющее некоторую часть периода его оборота. К каждому колесу присоединялась щетка (считывающий контакт), которая при вращении колеса пробегала по неподвижному десятисегментному контакту. Это позволяло получить электрический эквивалент цифры, хранящейся в данном разряде регистра. Для выполнения операции суммирования устанавливались такие соединения между щетками первого регистра и механизмом переключения второго регистра, что колеса последнего связывались с валом на часть периода оборота, пропорциональную цифрам, находящимся в соответствующих разрядах первого регистра. Все переключатели автоматически выключались в конце фазы сложения, занимавшей не более
половины периода оборота. Таким образом, механизм суммирования, по существу, не отличался от сумматоров холлеритовских табуляторов. Регистры были снабжены системой сквозного переноса, аналогичной предлагавшейся Бэббиджем.
Всего в «Марк I» было 72 регистра и, кроме того, дополнительная память из 60 регистров, образованных механическими переключателями. В эту дополнительную память вручную вводились константы — числа, которые не изменялись в процессе вычислений *.
Умножение и деление производились в отдельном устройстве. Кроме того, машина имела встроенные релейные блоки для вычисления функций sin x, 10я и log x. Скорость выполнения арифметических операций в среднем составляла: сложение и вычитание — 0,3 секунды, умножение—5,7 секунды, деление—15,3 секунды. Таким образом, «Марк I» был «эквивалентен» примерно 20 операторам, работающим с ручными счетными машинами.
Работой «Марк I» управляли команды, вводимые с помощью перфорированной ленты. Каждая команда кодировалась посредством пробивки отверстий в 24 колонках, идущих вдоль ленты, и считывалась с помощью контактных щеток. Совокупность электрических сигналов, полученных в результате «прощупывания» позиций данного ряда, определяла действие машины на данном шаге вычислений.
После завершения операции лента сдвигалась, и под контактные щетки попадал следующий ряд отверстий. В одной перфоленте Айкен объединил два типа бэббид-' жевских перфокарт — операционные карты и карты переменных.
Не останавливаясь на вопросах программирования для «Марк I», отметим лишь, что в первом варианте системы команд этой машины отсутствовала важная команда условного перехода, предложенная автором аналитической машины. Она была включена в систему команд «Марк I» позднее, возможно, вследствие знакомства Айкена с работами Чарлза Бэббиджа.
В качестве устройств вывода Айкен использовал пишущие машинки и перфораторы. «Марк I» содержал все
* Еще раз подчеркнем широту замыслов Бэббиджа: «Марк I» содержал 142 запоминающих регистра, а аналитическая машина — 1000.
основные блоки аналитический машины: устройства ввода и вывода, устройство управления, память («склад») и арифметическое устройство («мельница»).
«Мечта Бэббиджа сбылась!»
Вслед за пуском «Марк I» гарвардская группа, оформившаяся в вычислительную лабораторию университета во главе с все тем же Айкеном, начала работу над «Марк II». В этой машине для запоминания чисел, выполнения арифметических операций и операций управления должны были использоваться электромеханические реле. Законченная в 1947 году «Марк II» содержала около 13 000 таких реле и была, таким образом, чисто релейной вычислительной машиной.
Числа в «Марк II» представлялись в форме с плавающей запятой, то есть в виде а-10 , где а содержит до 10 значащих цифр, а порядок в заключен в пределах —15s$ в^ 15.
Каждая десятичная цифра представлена в двоичной форме и хранится в группе из четырех реле.
В двоичной системе счисления используются две цифры—0 и 1, и любое число поэтому представляется как Последовательность нулей и единиц. Например, число 53 в двоичной системе выглядит как 110101. Широкое использование двоичной системы в вычислительной технике обусловлено существованием простых технических аналогов двоичной цифры — электромеханических реле и электронных триггеров, которые могут находиться в одном из двух устойчивых состояний. Тогда одному из них можно поставить в соответствие 0, а другому—1. Нетрудно видеть, что для представления одной десятичной цифры потребуется 4 двоичных разряда (скажем, цифра 9 выглядит как 1001). В «Марк II» используется не чисто двоичное, а двоично-десятичное представление чисел, поэтому для представления десятиразрядной десятичной мантиссы требуется 4 Х 10 двоичных разрядов (и реле соответственно). Еще 4 реле идут на представление показателя и 2 реле используются для хранения знака мантиссы и показателя. Таким образом, каждый из 100 регистров машины содержит 46 реле.
Для ввода чисел в регистр и вывода их (на эти операции уходит примерно 0,033 секунды) используется еще 16 реле. Короткие арифметические операции выполняются в сумматоре, который в отличие от «Марк I» отделен от памяти. Время выполнения операций сложения и вы-
читания занимает примерно 0,125 секунды. Умножение выполняется в отдельном устройстве и требует в среднем 0,25 секунды, а операция деления заменена операцией вычисления приближенных значений обратных величин. В машине предусмотрены специализированные устройства для вычисления функций 10*, cos x, sin x, log x. Так же как в «Марк I», для управления машиной используется перфолента, а вывод результатов осуществляется с помощью печатающих механизмов.
«ЧИСТО» РЕЛЕЙНЫЕ МАШИНЫ
Примерно в то же время было построено еще несколько электромеханических вычислительных машин.
В 1941 году немецкий инженер К. Цузе построил специализированную программно-управляемую релейную машину для решения задач строительной механики. В ней впервые использовалось двоинно-десятичное представление чисел с плавающей запятой. Цузе построил еще несколько машин. Его универсальная машина Z-4, пущенная в марте 1945 года, использовалась для научных расчетов в Геттингенском университете.
В 1937 году работу над релейной машиной, способной выполнять арифметические операции над комплексными числами, начал сотрудник фирмы «Белл» математик Джордж Штибитц. Его машина «Модель I» была закончена в 1939 году. Впервые работа машины была продемонстрирована в октябре 1940 года на заседании Американского математического общества. Комплексные числа вводились в машину Джорджа Штибитца, находившуюся в Нью-Йорке, с помощью расположенного в зале заседания телетайпа; результаты вычислений передавались из Нью-Йорка по телеграфному каналу и воспроизводились печатающим устройством.
В машинах Штибитца использовалась двоично-пятеричная система представления чисел. Каждый десятичный разряд представляется здесь двумя цифрами; одна из них является цифрой пятеричной системы и принимает значения от 0 до 4, другая — цифровой двоичной системы. Таким образом, для представления любой десятичной цифры требуются 7 реле, хотя включаются в каждый момент времени только 2. Еще 2 реле используются для изображения знака. Двоично-пятеричная система
позволяет осуществлять простой аппаратный контроль правильности работы машины.
«Модель I» была специализированной вычислительной машиной и не имела устройства автоматического управления вычислениями. Это устройство появилось в «Модели II»—релейном интерполяторе, управляемом программной перфолентой. Машина имела объем памяти в 5 пятиразрядных десятичных чисел. Вслед за «Моделью II», законченной в 1943 году, были построены еще 2 небольшие релейные машины: «Модель III» и «Модель IV».
«Модель III», известная под названием «баллистической вычислительной машины», имела несколько больший объем памяти, содержала 1300 реле и заменяла 25—40 девушек, вычислявших с помощью настольных счетных машин баллистические таблицы.
«Модель IV» отличалась от своей предшественницы тем, что могла вычислять еще и значения тригонометрических функций.
Успех малых релейных машин привел к созданию в 1944—194& годах универсальной вычислительной машины «Модель V». Машина содержала около 9000 реле и имела в своем составе все блоки, предусмотренные «классической» (бэббиджевской) структурой. Запоминающее устройство «Модели V» состояла из 44 восьмиразрядных регистров, в качестве устройств ввода использовались читающие (перфорационные) машины, а в качестве устройств вывода — перфораторы и телетайпы. Числа в машине представлялись в форме с плавающей запятой. Время выполнения арифметических операций «Модель V» характеризовалось следующими цифрами:
сложения — 0,3 секунды, умножения — 1 секунда, деления — 2,2 секунды. Машина имела также специальные блоки, позволявшие вычислять функции sinx, log x, 10х и др. «Модель V» по своим возможностям немногим отличалась от предыдущей, хотя была значительно проще и имела более гибкие программные средства.