История вычислительной техники за рубежом

“Опломбированная поцелуем” и другие

Say its weary, say its slow,
Say that luxury ignored it;
Say its growing old, but know
We all adored it1.

Ида Родес

Глава I

Одним из крупнейших государственных научно-исследовательских центров США является Национальное бюро стандартов (National Bureau of Standards, NBS), созданное в 1901 г. и переименованное в Национальный институт стандартов и технологии (National Institute of Standards and Technology, NIST) в 1988 г. Почти миллиардный бюджет (в 2005/2006 финансовом году) позволяет NIST содержать штат из 2800 ученых, инженеров, техников и администраторов, не считая 1800 приглашенных на временную работу американских и иностранных специалистов. Основные задачи института заключаются в создании научных методов и аппаратуры для измерений, разработке национальных стандартов в самых разнообразных областях техники и сельского хозяйства, совершенствовании био-, нано-, информационных, химических и других технологий в интересах промышленности США (в том числе и частного сектора).

Когда страна оказывалась в критической ситуации или когда возникала необходимость в определении наиболее рациональной организации разработок в новых областях науки и техники и т. д., за консультационными услугами к специалистам NIST регулярно обращались правительственные чиновники. Поэтому неудивительно, что в 1947 г. именно NBS получило задание подготовить предложения по обеспечению государственных учреждений электронными вычислительными машинами и провести переговоры с их изготовителями.

Ральф Дж. Слуц (слева) и Сэмюэль Н. Александер

Тогда в этом бюро не было авторитетных специалистов по ВТ, поэтому руководитель отделения прикладной математики Джон Гамильтон Куртис (John Hamilton Curtiss, 1909—1977) обратился за советом к Комитету по быстродействующим вычислительным машинам при Национальном совете по исследованиям (в состав Комитета входили Д. фон Нейман, Д. Стибиц, Г. Эйкен и С. Колдуэлл2). Комитет на своем заседании 9 марта 1948 г. рассмотрел три проекта ЭВМ, находившихся в стадии разработки (EDVAC, UNIVAC и RAYDAC) и не отдал предпочтения ни одному из них. Более того, он рекомендовал в первую очередь сосредоточить усилия (и государственные средства) не на создании ЭВМ и их тиражировании, а на исследовании элементной базы машин и новых типов внутренней памяти. Эти рекомендации не удовлетворили Куртиса: вопреки нейтральной позиции Комитета он настоял на выделении средств на реализацию проекта UNIVAC (см. статью Две машины, две компании, две судьбы), а в мае 1948 г. убедил исполнительный совет NBS принять решение об организации лаборатории электронных вычислительных машин (ЛЭВМ). Ей надлежало спроектировать и изготовить небольшую ЭВМ, которая позволила бы тестировать и отрабатывать новые технические средства ВТ, а также решать задачи, поставленные учеными из государственных агентств (в первую очередь, разумеется, сотрудниками бюро). С самого начала предполагалась, что вычислительные возможности машины должны быть довольно скромными, поэтому ее назвали “Промежуточной вычислительной машиной” (Interim Computer) и лишь позднее, дабы “увековечить” авторство NBS, переименовали в “Восточную автоматическую вычислительную машину [Национального бюро стандартов]” (Standards Eastern Automatic Computer, SEAC).

Разработка SEAC началась в июне 1948 г. под руководством Сэмюэля Н. Александера3 (Samuel N. Alexander, ум. 1967), начальника лаборатории электронных вычислительных машин. Его правой рукой был Ральф Дж. Слуц (Ralph J. Slutz, 1917—2005) — один из создателей принстонской ЭВМ IAS, перешедший в 1948 г. в NBS. Он так отзывался о своем шефе: “Сэм Александер был духовным руководителем инженеров, работавших в бюро над созданием оборудования для вычислительных машин, и относился ко мне скорее как к сыну, а не как к сотруднику. Наши отношения были исключительно теплыми и продуктивными”.

Структура SEAC в целом повторяла структуру EDVAC, однако схемотехника машины была совершенной иной. Впервые в мире:

— в АУ использовались так называемые динамические триггеры на пентодах и импульсных трансформаторах, что позволило значительно ускорить выполнение арифметических операций;

— логические цепи были построены исключительно на кристаллических (германиевых) диодах (для усиления сигнала применялись лампы). Такое решение, за редким исключением4, стало типовым для последующих ЭВМ.

Нельзя не отметить и важную архитектурную новинку: в машине было два программных счетчика, и содержимое отдельного разряда в командном слове определяло, какой из них должен был быть использован для выборки следующей команды. Это упрощало процедуру программирования (например, при относительной адресации, обращении к подпрограммам и т. д.).

SEAC была машиной синхронного действия с тактовой частотой в 1 МГц и поразрядно-последовательным АУ, что определялось использованием в качестве внутренней памяти 64 РУЛЗ (общей емкостью в 512 45-разрядных двоичных чисел). Ввод и вывод информации производился с помощью телетайпа. Машина могла работать в трех- или четырехадресном формате (в первом случае осуществлялось естественное управление вычислительным процессом, во втором — четвертый адрес определял местонахождение следующей команды в программной последовательности). Учитывая промежуточный характер SEAC, разработчики ограничили ее командный набор семью операциями над числами с фиксированной запятой: сложение, вычитание, умножение, деление, сравнение, команды ввода и вывода.

SEAC содержала 747 ламп и 10,5 тыс. диодов (после модернизации — соответственно 2300 ламп и 24 тыс. диодов), а среднее время сложения и умножения составляло 0,864 и 2,98 мс.

Впервые машина выполнила тестовую задачу 7 апреля 1950 г., примерно через месяц после этого осуществила первый практический расчет (вычисление траектории прохождения лучей через оптическую систему), а 20 июня состоялось ее официальное представление. SEAC — первая практически эксплуатировавшаяся американская ЭВМ с хранимой программой — работала по 20 ч в сутки семь дней в неделю вплоть до 23 апреля 1964 г.

Правда, обслуживающий персонал ежедневно тратил 4 ч на профилактику машины. Она, в частности, проводилась и так (по воспоминаниям Ральфа Слуца): “У нас было больше проблем из-за плохой пайки, чем из-за ламп, диодов или линий задержки. Я хорошо помню, что использовались два способа обнаружения ошибок (debugging)… Мы запускали тестовую программу, брали нечто вроде деревянной ложки и, идя вдоль машины, обстукивали ложкой все, что попадалось на глаза. Если программа останавливалась, нам иногда удавалось найти бракованный узел. Когда же такой тест проходил благополучно, мы применяли метод “стандартного прыжка”: во время работы программы подпрыгивали как можно выше (сантиметров на пятнадцать) на деревянном полу, на котором была установлена машина, и пытались при приземлении как можно сильнее ударить по полу. Благополучное окончание такого испытания означало, что можно было приступать к решению задачи”.

Другой оригинальный способ контроля заключался в следующем. К одному из регистров машины через усилитель подключался динамик. По доносящемуся из него набору звуков оператор или инженер, обслуживающий машину, могли судить о сбоях в ее работе, например о зацикливании программы или о ее “зависании” и т. д.5. Аналогичный “звуковой контроль” использовался затем во многих ламповых ЭВМ — скажем, в JONNIAC и ORDVAC.

В течение всего 14-летнего периода эксплуатации SEAC в нее вносились многочисленные изменения и усовершенствования, так что машина — в соответствии с первоначальным замыслом Куртиса — служила полигоном для испытания целого ряда нововведений (правда, не все они прижились в дальнейшем). Расскажу о некоторых из них.

В первую очередь усилия инженеров ЛЭВМ были направлены на изыскание способов построения более быстрых видов внутренней памяти машины. Они провели многочисленные, но окончившиеся неудовлетворительно опыты с памятью на магнитных сердечниках и с твердотельными (магнитострикционными) линиями задержки (полученными от британской компании Elliott Brothers Ltd.). В конце концов было решено совместно с корпорацией RCA заняться доведением трубки Уильямса (ранее в качестве ее основы использовалась стандартная ЭЛТ) до кондиции. В результате удалось создать трубку с более равномерным фосфорным покрытием экрана и новой конструкцией электронной пушки. Машина была дополнена памятью на этих трубках емкостью 1К 45-разрядных слов (одновременно до такой же емкости была увеличена память на РУЛЗ). Наличие двух различных видов памяти позволяло использовать одну для тестирования другой. При этом, учитывая, что SEAC выполняла вычисления поразрядно-последовательно, данные, хранившееся на трубках, с помощью регистра сдвига преобразовывались из параллельного вида в последовательность битов.

ЭВМ SEAC

Следующие усовершенствования коснулись внешних запоминающих устройств. Пожалуй, наибольший интерес из них представлял модифицированный офисный диктофон от компании Pierce Wire Recorder Corp., в картридже которого стальная проволока была заменена никелевой (для получения более мощного выходного сигнала). Каждый программист имел свой картридж, на нем он в цифровом виде хранил необходимые ему программы и результаты вычислений. Кроме того, было разработано специальное устройство, названное “переписчик” (outscriber), для переноса данных с магнитного картриджа на бумажную ленту.

Еще одной новинкой был накопитель на магнитной ленте (НМЛ). Его разработчик Джеймс Пайк (James Pike) отказался от использования бобин с лентой и максимально упростил лентопротяжный механизм: лента шириной в половину дюйма зажималась между двумя вращающимися барабанами с прижимными роликами и “перегонялась” со скоростью 37,5 дюймов в секунду из подающего устройства в приемное и обратно (в качестве таких устройств использовались стеклянные карманы, напоминавшие корзины для использованных бумаг). Лента имела майларовую подложку и могла хранить на семи дорожках до 24 тыс. машинных слов, записанных с плотностью 260 знаков на дюйм (скорость передачи информации составляла 104 знака в секунду). К машине можно было подключить до пяти таких накопителей.

В качестве устройства ввода-вывода использовался, в частности, флексорайтер (flexowriter). Эта машина, разработанная в 1940-е гг. корпорацией IBM и изготовлявшаяся калифорнийской компанией Friden Calculating Machine Co., содержала наборную клавиатуру, печатающую машинку, фотоэлектрический считыватель информации с перфорированной бумажной ленты и пробойник (перфоратор). Перфорированная лента затем могла быть установлена в флексорайтер, который распечатывал считанную информацию.

Машина была дополнена дисплеем на ЭЛТ, на которой можно было вывести графическую информацию, и джойстиком, управлявшим положением объекта на дисплее.

Стоит упомянуть также об успешных опытах по дистанционному доступу к машине с телетайпа, установленного за несколько миль от здания NBS в одном из вашингтонских отелей6, и об увеличении набора команд до 16.

И наконец, последнее по порядку, но не по значению: в 1957 г. группа инженеров во главе с выпускником Гарвардского университета Расселом A. Киршем (Russell A. Kirsch) создала один из первых сканеров, предназначавшихся для ввода в машину изображений (фотографий, рисунков, схем и т. д.) и символов в форме, удобной для запоминания и последующей обработки. Сканер представлял собой вращающийся барабан, на который крепились объект сканирования, фотоумножитель и помещенная перед ним маска, дробившая изображение на дискретные пикселы квадратной формы (0,25?0,25 мм). Ввиду ограниченной емкости внутренней памяти площадь вводимого изображения не могла превышать 176?176 пикселов. Первым отсканированным и затем выведенным на дисплей (ЭЛТ) объектом стала фотография новорожденного сына Кирша.

Рассел Кирш

Вслед за удачными экспериментами со сканером появился ряд алгоритмов и программных средств для обработки введенных в машину изображений и распознавания образов (pattern recognition). Созданные в NBS программы нашли применение в металлургии (стереологии) — с их помощью определялись размеры инородных включений; в химии — для поиска и сравнения структур химических соединений; при обработке интерферограмм поверхностей в топографии; в криминологии —для обработки отпечатков пальцев; в медицине — для выполнения количественного цитологического анализа; в искусствоведении — для структурного анализа художественного стиля; в археологии — для изучения наскальных изображений и пр.

Разумеется, использование SEAC не ограничивалось этими (в то время экзотическими) приложениями. Статус NBS как государственного учреждения позволял не только ученым из бюро, но и представителям других агентств, оборонных организаций и университетов работать на машине, не будучи связанными коммерческими ограничениями. Поэтому трудно перечислить задачи, решенные на этой довольно бесхитростной машине за годы ее существования; вот лишь некоторые из них: оптимизация оптических систем, задачи метеорологии, линейное программирование, навигационные таблицы, расчеты, связанные с проектированием синхрофазотрона, и т. д. Если SEAC была замечательным подспорьем в научно-технических исследованиях сотрудников Национального бюро стандартов (NBS) и других организаций, то для Института численного анализа (Institute for Numerical Analysis, INA) ЭВМ была жизненно важной необходимостью. Этот институт, расположенный на территории кампуса Калифорнийского университета в Лос-Анджелесе (University of California, Los Angeles, UCLA), принадлежал NBS, хотя финансировался из фондов управления военно-морских исследований (Office of Naval Research, ONR). В нем работали такие выдающиеся математики-прикладники, как Джордж Элмер Форсайт (George Elmer Forsythe, 1917—1972) и Корнелис Ланчос (Cornelius Lanczos, 1893—1974), а с середины 1950-х гг. INA возглавил уже знакомый нам Чарльз Б. Томпкинс (см. статью Недолгая, но славная ERA).

Как и в случае с SEAC, руководство NBS приняло в октябре 1948 г. решение не дожидаться ЭВМ от стороннего изготовителя, а построить машину собственными силами. Для этого в конце года в INA был переведен вернувшийся из Британии Гарольд Дуглас Хаски (Harold Douglas Huskey, р.1916; см. статью Ни на что не похожая (часть 1)), опытнейший компьютерщик, один из разработчиков ENIAC и EDVAC.

“В январе 1949 г., — вспоминает Хаски, — мне отвели пустую комнату во временном здании и сказали: “Вперед!”. Не было ни штата сотрудников, ни станков, ни другого необходимого оборудования и комплектующих. Хорошо, что к этому времени закончился контракт между NBS и компанией Эккерта — Моучли, и по моей просьбе оборудование, закупленное для его выполнения, отгрузили нам в Лос-Анджелес… Финансирование было также скудным — ONR выделило на разработку и изготовление машины всего 300 тыс. долл.”.

Глава II

“Как вы яхту назовете,
так она и поплывет”

Сначала будущую ЭВМ назвали Zephyr (слабый западный ветер) — как писал Хаски, “по контрасту с названиями других проектов аналоговых и цифровых вычислительных машин, финансируемых ONR и звучавших грозно: “Ураган” (Hurricane), “Тайфун” (Typhon), “Вихрь” (Whirlwind)”. Коллеги из вашингтонского офиса бюро, с которыми Хаски поддерживал дружеские отношения, предлагали еще одно имя — Sirocco (горячий ветер из пустыни.— Ю. П.). В конце концов по аналогии с SEAC машину назвали “Западной автоматической вычислительной машиной [Национального бюро стандартов]” (Standards Western Automatic Computer, SWAC). Остряки расшифровывали эту аббревиатуру иначе: Seal with a kiss — “Опломбированная поцелуем”.

Хаски предложил исполнительному комитету NBS другую, отличную от SEAC концепцию построения машины. По его замыслу необходимо было построить ЭВМ с максимально возможным быстродействием, применив при этом стандартные, общедоступные комплектующие (off-the-shelf — “с полки”, как говорят американцы) и апробированные схемотехнические решения7. Понимая, что с памятью на РУЛЗ не приходится рассчитывать на достижение высокого быстродействия, Хаски решил использовать память на трубках Уильямса, основу которых должны были составлять также стандартные ЭЛТ. Во время пребывания в Британии, он познакомился с Ф. Уильямсом и Т. Килбурном, неоднократно посещал Манчестерский университет, где они работали, и хорошо знал достоинства и недостатки их изобретения. Но в отличие от своих заокеанских коллег, отдававших предпочтение поразрядно-последовательным АУ, Хаски хотел полностью использовать уникальные возможности трубки и (опять-таки для повышения быстродействия) создать машину с АУ параллельного действия.

Гарольд Хаски за пультом управления ЭВМ SWAC

Небольшая команда Хаски (три ведущих, три младших инженера и четыре техника) трудилась с воодушевлением. “Мы знали, что выполняем пионерскую работу, находимся на новых рубежах, и не жалели ни сил, ни времени”, — вспоминал руководитель работы.

SWAC официально представили и ввели в действие 17 августа 1950 г., и с тех пор она находилась в эксплуатации вплоть до декабря 1967-го. К моменту пуска SWAC была самой быстродействующей ЭВМ в мире: сложение и умножение двух чисел (исключая время выборки из памяти) занимало 5,3 и 296 мкс соответственно.

Эта была машина синхронного действия, работавшая на тактовой частоте 125 кГц и оперировавшая 36-разрядными двоичными числами с фиксированной запятой (плюс разряд для знака). Внутренняя память была построена на 37 трубках Уильямса (общей емкостью 256 37-разрядных машинных слов), в качестве внешней памяти использовался накопитель на магнитном барабане (НМБ) он был включен в состав машины в 1953 г.) емкостью 4К слов со среднем временем выборки 0,5 мс и частотой вращения 3600 об/мин (обмен данными с внутренней памятью осуществлялся блоками по 8,16, 32 или 64 слова).

Командный набор включал восемь команд: сложение, вычитание, умножение одинарной или двойной точности, сдвиг, сравнение, команды ввода и вывода. Последние пять команд имели трехадресный формат, первые три — четырехадресный: при переполнении разрядной сетки естественное управление вычислительным процессом прекращалось, и в этом случае четвертый адрес определял “местонахождение” следующей команды. Также он использовался для “оптимального программирования” при наличии НМБ (см. статью Ни на что не похожая (часть 1)).

Такт работы машины был разделен на два интервала по 8 мкс каждый. В течение первого (активного) интервала производились машинные действия (выборка операнда в АУ, отсылка результата в память или передача очередной команды в устройство управления); во время второго интервала выполнялась регенерация работавшей ячейки памяти. В АУ имелось три регистра: первый (буферный) принимал операнд из памяти, который добавлялся ко второму регистру-аккумулятору; в третьем регистре содержались множитель и часть произведения во время выполнения операции умножения. Так же как и в SEAC, в АУ с помощью динамика осуществлялся “звуковой контроль” за ходом выполнения программы.

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

Машина имела модульную конструкцию: вся электроника была размещена на взаимозаменяемых типовых ячейках, которые помещались в три соединенных между собой шкафа; на пульте управления имелась ЭЛТ, позволявшая индицировать адрес в памяти, к которому шло обращение. Машина содержала 2600 ламп, 3700 кристаллических диодов, питалась от мотор-генератора (потребление составляло примерно 30 кВт) и размещалась в комнате площадью 12?9 кв. м.

SWAC широко использовалась для решения большого круга научных задач (при этом операции над числами с плавающей запятой выполнялись подпрограммой SWACPEC) и в учебных целях для студентов UCLA. Историческое значение машины определяется главным образом тем, что это была первая в мире ЭВМ с АУ параллельного действия (я избегаю термина “параллельная ЭВМ”, так как позднее он был отнесен к компьютерам совсем иной архитектуры).

Теперь вернемся на восточное побережье США, чтобы рассказать еще об одной машине, разработанной в NBS под руководством Сэмюэля Н. Александера (введена в действие в апреле 1954 г.). Она называлась “Второй автоматической вычислительной машиной [Национального бюро стандартов]” — Second (Dyo) Standards Electronic Automatic Computer, DYSEAC, — и предназначалась для войск связи армии США (U.S. Army Signal Corps). Это была первая в мире мобильная ЭВМ, которая перевозилась с места на место на двух трейлерах грузоподъемностью 12 и 8 т.

ЭВМ DYSEAC

DYSEAC была построена с использованием технических средств ее модернизированной предшественницы (правда, с некоторыми изменениями — например, НМЛ был заменен на НМБ). Поэтому вычислительные возможности “Второй” были примерно теми же, что и у “Первой”. Но в архитектуре машины впервые в мире были применены новинки, благодаря которым ее имя навсегда сохранится в анналах истории ВТ.

Во-первых, в ней применялся метод “прямого доступа к памяти” (Direct Memory Access, DMA). Он заключался в пересылке данных между периферийными устройствами и внутренней памятью, минуя АУ. Операция ввода данных начиналась с того, что программа предписывала соответствующему устройству ввода данных или НМБ переслать в определенную область памяти заданное число машинных слов. Каждый раз, когда эти устройства были готовы к передаче очередного слова или блока слов, они сообщали об этом машине и осуществляли пересылку в свободную ячейку памяти (либо в область памяти). Работа же основной (вычислительной) программы при этом не прекращалась, а после того, как все данные были переданы, генерировался сигнал окончания операции ввода.

Во-вторых, в командный набор был введена команда прерывания, которая обеспечивала работу спарки SEAC — DYSEAC в режиме разделения времени: первая из этих ЭВМ по сигналу второй на некоторое время прерывала ход вычислений и отсылала запрашиваемые файлы в DYSEAC, не нарушая в ней при этом ход вычислительного процесса. Рассел Кирш приводит следующий пример такого взаимодействия. На DYSEAC выполнялась программа имитации маневрирования кораблей ВМФ США в океане (с выводом графической информации на дисплей), SEAC же осуществляла сортировку записей о тактико-технических возможностях отдельных участников этих маневров и по запросу DYSEAC пересылала ей необходимые данные (иногда предварительно обработанные), которые также отображались на дисплее.

Следует также отметить, что упомянутая выше спарка представляла собой пример простейшего многомашинного комплекса, который в течение некоторого времени пользовался определенной популярностью (в том числе и в СССР), но затем был вытеснен многопроцессорными компьютерами. В NBS в 1958 г. был создан “Пайлот” (Pilot) — комплекс из трех ламповых ЭВМ, и это была последняя разработка NBS в области ВТ.

Примечания

1. Скажи, что она изношена//Скажи, что она медлительна//Скажи, что она лишена нарядных одежд//Скажи, что она устарела//Но знай, что все мы обожали ее.

Автор этих строк — Ида Родес (Ida Rhodes, 1900—1986), дочь эмигрантов из украинского города Немирова, окончившая факультет математики Корнельского университета и ставшая одной из первых женщин-программисток. С 1947 г. работала в отделении прикладной математики Национального бюро стандартов и внесла большой вклад в программирование ЭВМ, о которых пойдет речь в этой статье.

2. Сэмюэль Хокс Колдуэлл (Samuel Hawks Caldwell, 1904—1960), профессор Массачусетского технологического института, ближайший сотрудник Ванневара Буша, вместе с ним разработавший в 1930-е гг. знаменитый аналоговый дифференциальный анализатор.

3. После защиты в 1933 г. диссертации магистра электротехники в Массачусетском технологическом институте Сэмюэль Н. Александер работал в качестве инженера-электронщика в нескольких компаниях, в том числе в Bendix Aviation Corp., откуда в 1946 г. перешел в NBS. Он был одним из слушателей знаменитого курса лекций “Теория и методы проектирования электронных цифровых вычислительных машин”, который читался в Муровской школе Пенсильванского университета с 8 июля по 31 августа 1946 г. (см. статью “Автора!!!”).

4. Такими исключениями были, например, ЭВМ Circle и Monrobot.

5. Отсюда — один шаг до синтеза “машинной” музыки, однако тогда он сделан не был. Лишь в июне 1975 г. Стивен Домпье (Steven Dompier) — один из первых хакеров — заставил примитивный микрокомпьютер Altair (в совокупности с дешевеньким радиоприемником) воспроизвести мелодию битловской баллады “Fool on the Hill”.

6. Читатель помнит, что впервые такой доступ к релейной машине Model 1 осуществил Джордж Стибиц в сентябре 1940 г. (см. статью “Щелкающие машины”).

7. Так, в дальнейшем схемы быстродействующих триггеров были заимствованы из ЭВМ “Вихрь”, которая разрабатывалась в Массачусетском технологическом институте, логические диодные схемы — из SEAC.

Из Цикла статей Ю. Полунова "Исторические машины".
Статья опубликована в PCWeek/RE № 9 и № 10 2007 г.

Статья помещена в музей 30.03.2007 года