*1

     _____

*1 Окончание. Начало см. PC Week/RE, N 44/2006, c. 42.

ИСТОРИЯ ВТ

Что же представляла собой эта вторая в мире коммерческая ЭВМ (британская Ferranti Mark I была продана несколькими месяцами ранее)?

Пожалуй, самая замечательная особенность UNIVAC заключалась в возможности (впервые в мире!) обрабатывать как числовую, так и символьную информацию (напомню: еще в 1842 г. леди Лавлейс указывала, что машина может оперировать и с символами.- Ю. П.). Отдельная десятичная цифра или символ (буква английского алфавита, знак препинания) представлялись семиразрядным двоичным кодом. Его четыре младших разряда использовались для кодирования цифр с помощью "Стибиц-кода" или "кода с избытком на 3", так что каждая цифра n представлялась двоичным кодом n+3. Как уже говорилось в одной из предыдущих статей (см. PC Week/RE, N 6/2006, c. 42), этот код был предложен математиком Джорджем Робертом Стибицем (George Robert Stibitz, 1904-1995) для релейной машины Model 1, разработанной в годы войны в Bell Laboratories (использование кода с избытком на 3 упрощало выполнение операций вычитания и деления). Следующие две левые позиции за кодом цифры назывались "индикатором зоны" (zone indicator): если в этих разрядах находились нули, машина воспринимала упомянутые четыре разряда как код цифры, в противном случае содержимое всех шести разрядов интерпретировалось как символ. Последний (старший) разряд кода предназначался для контроля четности при обмене информацией между различными устройствами машины. Машинное слово имело 84 двоичных разряда и содержало либо 12 символов, либо 11 десятичных цифр (плюс разряд знака) с фиксированной перед первым значащим разрядом числа запятой (операции над числами с плавающей запятой выполнялись с помощью подпрограммы).

Самая замечательная особенность UNIVAC заключалась в возможности обрабатывать как числовую, так и символьную информацию.

Команды в UNIVAC (всего их было 45) состояли из шести десятичных разрядов (плюс двоичный разряд для контроля по четности). Первые два десятичных разряда содержали командный код, следующий разряд не использовался, три последних содержали адрес операнда в памяти. В одном машинном слове помещались две одноадресные команды, а управление вычислительным процессом осуществлялось при их последовательном или естественном (по фон Нейману) расположении в программе. Разумеется, исключение составляли команды условного и безусловного переходов (например, при переполнении разрядной сетки).

Главный заказчик UNIVAC - Бюро переписи, давшее в конце XIX в. путевку в жизнь первым СПК, - в силу специфики своей деятельности был заинтересован в машине, которая могла бы воспринимать, хранить, обрабатывать и выводить на печать огромные массивы данных и результаты их обсчета. Поэтому еще в рамках исследовательского проекта авторы UNIVAC занялись созданием внешнего запоминающего устройства (ВЗУ) большой емкости и быстродействующих устройств для ввода и вывода информации.

В качестве ВЗУ они предложили первый в мире накопитель на магнитной ленте (НМЛ) для ЭВМ*1, получивший в дальнейшем название Uniservo. Запоминающей средой в нем был слой пермаллоя, который наносился на подложку - ленту из фосфористой бронзы шириной в полдюйма и длиной в 1200 футов, свернутую в бобину и спаянную концами в кольцо. Металлическая подложка была прочней пластмассовой, применявшейся в бытовых магнитофонах, но одновременно значительно утяжеляла бобину с лентой и в дальнейшем не получила распространения. Лента имела восемь дорожек записи-считывания (шесть из них отводилось для данных, одна - для разрядов контроля по четности, и одна использовалась для получения синхронизирующих импульсов). Информация записывалась (считывалась) на ленту блоками по 60 машинных слов при плотности записи 120 символов на дюйм. Лентопротяжка Uniservo обеспечивала линейную скорость 108 дюймов в секунду, то есть за секунду можно было считать 7200 символов (с учетом пропусков между блоками информации). НМЛ, окончательно отработанный в 1949 г., позволял хранить на одной бобине свыше 1 млн. знаков, что было эквивалентно десяткам тысяч перфокарт.

_____

*1 Идея магнитной записи звука и речевых сигналов на тонкую стальную проволоку принадлежит датскому изобретателю Вальдемару Поулсену (Valdemar Poulsen, 1869 - 1942), который в декабре 1898 г. получил патент на устройство, названное им Telegraphone. Позже, через 30 лет, немецкий инженер Фриц Плеймер (Fritz Pfleumer) продемонстрировал звукозаписывающее устройство, в котором вместо проволоки использовалась бумажная лента с тонким стальным покрытием. На основании этой разработки немецкая компания AEG в 1932 г. выпустила первый звукозаписывающий аппарат Magnetophon.

Поскольку быстродействие АУ превосходило скорость ввода и вывода информации, в UNIVAC впервые в мире была использована буферная память в виде двух зон на магнитной ленте, каждая из которых могла хранить 60 машинных слов (одна зона использовалась при вводе информации, вторая - при выводе). Благодаря этому "быстрые" и "медленные" операции могли выполняться параллельно, так как буферные зоны обеспечивали обмен информацией между внутренней и внешней памятью, не блокируя работу АУ.

Другим выдающимся достижением стало быстродействующее печатающее устройство Uniprinter, разработанное Эрлом Эдгаром Мастерсоном (Earl Edgar Masterson, 1916-2002) и Д. Преспером Эккертом (окончательно его "довели до ума" в 1954 г., через несколько лет после сдачи UNIVAC в эксплуатацию). Принципиальное отличие Uniprinter’а заключалось в том, что оно работало построчно, печатая одновременно целую строку из 120 символов (а не по одному символу, как во всех пишущих машинках). Идея Мастерсона - Эккерта состояла в следующем. На вращающийся барабан наносились полные шрифтовые наборы символов (на каждую позицию приходилось по одному такому набору). По мере того как барабан быстро вращался вокруг горизонтальной оси, молоточек на каждой позиции прижимал бумагу к красящей ленте, а последнюю - к соответствующей букве. В состав устройства входила небольшая лентопротяжка, на которую вручную устанавливалась бобина с магнитной лентой, содержавшая результаты вычислений или обработки данных. Считанная с ленты информация направлялась в блок управления Uniprinter’ом и затем печаталась со скоростью 600 строк в минуту (что по крайней мере в четыре раза превышало тогда скорость самого быстродействующего печатающего устройства). Удачная конструкция этой разработки стала прототипом для большинства барабанных печатающих устройств 60-70-х годов. Для ускорения ввода информации было разработано еще одно устройство, в котором содержимое предварительно набитых перфокарт преобразовывалось в электрические импульсы и переписывалось на магнитную ленту, устанавливаемую затем на одну из лентопротяжек НМЛ. Кроме того, запись на ленту могла производиться с помощью Unityper’а, состоящего из клавиатуры и лентопротяжки (в этом случае, однако, нельзя было скорректировать ошибки оператора и проверить правильность ввода). Таким образом, устройства ввода-вывода не были непосредственно присоединены к машине и работали в автономном режиме (offline).    

Рис. 4. НМЛ Uniservo

С "сердцем" машины - центральным вычислительным устройством (ЦВУ), содержавшим электронные блоки и внутреннюю память, - были связаны только пульт управления и 10 НМЛ Uniservo. ЦВУ имело размеры гаража (площадь 5,6х3,2 м, высота - 3,4 м), весило 13,1 т и потребляло 125 кВт энергии; в его корпусе была сделана специальная дверь, через которую инженеры могли проникнуть внутрь, когда требовалось провести профилактику или ремонт.

Внутренняя память с емкостью в 1000 машинных слов и средним временем выборки 0,2 мс была выполнена на 100 РУЛЗ, каждое из которых содержало 10 слов (использование памяти этого типа определяло последовательно-поразрядное выполнение арифметических операций). Операция сложения производилась в одном регистре-аккумуляторе, операции умножения-деления - в трех регистрах.

Специальные меры были предприняты для обеспечения надежной работы машины. К их числу относятся:

- контроль по четности при передаче информации между отдельными блоками ЭВМ;

- автоматический контроль внутренней памяти, осуществлявшийся каждые 5 с (эта процедура занимала 52 мс);

- контроль правильности записи-считывания информации в буферные зоны магнитных лент;

- контроль правильности выполнения операций путем дублирования отдельных схем (счетчика команд, регистров АУ и др.) и сравнения результатов соответствующих действий.

Мне остается добавить, что UNIVAC была машиной синхронного действия с тактовой частотой 2,25 МГц, содержала свыше 5000 ламп (по разным данным - от 5200 до 5400), свыше 18 000 диодов и 300 реле. Операции сложения (вычитания), умножения и деления выполнялись в среднем за 0,525 мс; 2,15 мс и 3,9 мс соответственно (включая время выборки команд и операндов из оперативной памяти).

Широкой публике UNIVAC стала известна после 4 ноября 1952 г. В этот день американцы избирали своего президента, и машина, обработав результаты предварительного подсчета голосов на некоторых избирательных участках, предсказала победу кандидата от республиканской партии Дуайта Эйзенхауэра над демократом Эдлаем Стивенсоном. Поскольку проведенные ранее опросы общественного мнения говорили об обратном, руководители вечерних выпусков новостей телевизионной сети CBS запретили выдавать в эфир предсказания UNIVAC и предпочли подождать официальных результатов. А после полуночи, когда стало ясно, что машинный прогноз оправдался, популярный телекомментатор Уолтер Кронкайт сообщил об этом на всю страну. Такая невольная реклама сделала имя машины Э. - М. настолько популярным, что в дальнейшем торговая марка UNIVAC присваивалась и вычислительным машинам второй компании, приобретенной Рэндом, а для широкой публики в течение некоторого времени это название стало синонимом "вычислительной машины".

Рис. 5. Грейс Мюррей Хоппер у пульта

ЭВМ UNIVAC

Успеху UNIVAC во многом способствовало поставляемое вместе с ней программное обеспечение, и в этой связи нельзя не вспомнить выдающегося программиста, вице-адмирала ВМФ США Грейс Мюррэй Хоппер (Grace Murray Hopper, 1906-1992), которая пришла в компанию в 1949 г. Я уже писал в одной из предыдущих статей о ее работе, выполненной в EMCC и состоявшей в создании "Краткого кода команд" (см. PC Week/RE, N 32/2006, с. 37) - языка, позволявшего осуществлять программирование в мнемонических обозначениях, и интерпретатора написанных на этом языке программ. Интерпретатор, один из видов языковых трансляторов, имел, однако, по крайней мере два очевидных недостатка. Во-первых, интерпретирующая программа в процессе решения всей задачи должна храниться в памяти, уменьшая таким образом ее оперативное пространство; во-вторых, результат перевода очередной строки программы в машинный код не запоминается и при повторном запуске программы вся процедура трансляции начинается "с нуля". Поэтому в 1951 г. возглавляемая Хоппер группа программистов разработала принципиально новый языковый транслятор А-0, названный ею компилятором (затем последовали его улучшенные версии - А-1, А-2 и т. д.). Когда в 1957 г. Sperry Rand решила продавать компилятор в отдельности от ЭВМ, ему дали более звучное, по мнению маркетологов, название - MATH-MATIC. В отличие от построчной интерпретации текста компилятор вначале целиком анализировал всю программу, записанную в мнемонических обозначениях, присоединял к ней в случае необходимости подпрограммы из библиотеки (хранившейся в UNIVAC на магнитной ленте) и лишь затем осуществлял преобразование скомпонованной таким образом программы в машинные коды; при этом полученная программа могла либо выполняться сразу, либо храниться для последующего использования, причем транслирующая программа могла быть удалена из памяти (напомню, что примерно в это же время независимо от группы Хоппер аналогичный транслятор разработал в Британии Р. Э. Брукер). Применение компилятора значительно ускоряло выполнение программы (по сравнению с ее интерпретацией) и в дальнейшем стало основным способом трансляции языков программирования высокого уровня (ЯВУ). Следующий шаг Грейс Хоппер и ее сотрудники сделали в 1956-м: они составили список примерно из 30 слов, образовавших ЯВУ ФЛОУ-МЭТИК (FLOW-MATIC), а затем создали компилятор, который транслировал в машинный код программы, написанные на этом языке. Справедливости ради надо сказать, что первый ЯВУ (Фортран) был разработан за несколько лет до Хоппер под руководством другого выдающегося программиста - Джона Уорнера Бэкуса (John Warner Backus, р. 1924). Еще через четыре года Грейс Хоппер стала инициатором организации под эгидой Пентагона группы программистов из различных компаний, которая получила название "Ассоциации по языкам для систем данных" (Conference on Data Systems Languages, CODASYL). В январе 1960 г. эта группа разработала "Универсальный язык, предназначенный для решения деловых задач" (Cоmmon Business Oriented Language, COBOL), модификации которого пользуются популярностью и в наше время. Замечу, что одним из активных участников CODASYL был Роберт Уильям Бемер (Robert William Bemer, 1920-2004), получивший впоследствии широкую известность как автор "Американского стандартного кода для обмена информацией" (American Standard Code for Information Interchange, ASCII), ставшего международным стандартом де-факто.

Судьба создателей UNIVAC сложилась по-разному. Когда один из слушателей, присутствовавших на выступлении Бернарда Гордона, спросил, какую роль играл Джон Моучли в компании, то получил уклончивый ответ: "Когда я работал в EMCC, он проявлял меньше активности [чем при создании ENIAC], и, насколько я помню, для этого были сугубо личные причины". Непонятно, почему Гордон так невнятно пояснил причину "малой активности" выдающегося компьютерщика. Он, надо думать, прекрасно знал, что Моучли в начале 50-х попал под пресс комиссии по расследованию антиамериканской деятельности, возглавляемой бесноватым сенатором Джозефом Р. Мак-Карти. Его обвинили в причастности к коммунистическому движению, в силу чего запретили даже входить в государственные учреждения (в том числе в Бюро переписи, где уже находилась UNIVAC). Моучли вынужден был согласиться на должность руководителя второстепенного "Отделения по изучению применений UNIVAC". "Он потратил около двух лет на то, чтобы восстановить свое доброе имя, и в конце концов это ему удалось, - вспоминала жена ученого. - Но через два года, когда обвинения с него были сняты, руководство отказалось восстановить его в прежней должности". В 1959 г. Моучли ушел из корпорации и организовал собственную небольшую консалтинговую компанию Mauchly Associates, Inc., затем (после ее краха) - еще одну, а в 1973 г. вернулся в качестве консультанта в Sperry Rand.

Эккерт же оставался на командных должностях в корпорации до конца своих дней и руководил созданием ряда интересных ЭВМ. В частности, вслед за UNIVAC в 1958 г. появилась UNIVAC II, а через четыре года - UNIVAC III (транзисторная версия предыдущей модели), которая и закончила линейку UNIVAC - ЭВМ, замечательных своими нововведениями и знаменовавших зарождение компьютерной индустрии в США.

Версия для печати