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

Пегас из конюшни Ферранти

Пегас (греч. Πήγασος) — в древнегреческой мифологии
крылатый конь, ударом копыта выбивавший источник,
из которого черпали вдохновение поэты.*

Что должно быть главенствующим при разработке компьютера: аппаратура или программы? В наше время такой вопрос звучит вполне риторически, ибо сегодня любой ИТ-специалист ответит: необходимо диалектическое единство. Но эта точка зрения возобладала не сразу. В начале и даже в первой половине 1950-х годов программы рассматривались как некий второстепенный продукт, сопровождавший главное творение — hardware. Может быть, поэтому отношение чистых математиков к вышедшим из их среды программистам носило тогда покровительственно-снисходительный характер (недаром в те далекие года по МГУ ходила частушка: “Меня милый не целует,//не садится близко,//он ведь чистый математик,//а я — программистка”). Напомним, что в те ветхозаветные (с точки зрения развития ВТ) времена пользователь, функции которого зачастую выполнял сам программист, писал программу, как правило, в машинном коде. Правда, для некоторых машин были разработаны языки Ассемблера, но это не сильно искажало общую картину зависимости программиста от особенностей “железа”: обычно он сам вводил программу в машину и затем отлаживал ее вручную, а поэтому должен был досконально знать, как работает ЭВМ, что означает перемигивание лампочек на панели, каково назначение многочисленных переключателей и т. д. Отладка и первый прогон программы, прерываемые сбоями не очень-то надежно работавших ЭВМ, были довольно длительным и утомительным процессом (да к тому же накладным финансово, если машинное время продавалась).

Как сделать из ЭВМ “user friendly computer” (дружеской по отношению к пользователю, как стали говорить много позднее при разработке графического интерфейса для ПК), облегчив жизнь программиста? Одним из первых на этот вопрос попытался ответить выдающийся британский ученый Кристофер Стрейчи, о котором я уже упоминал в предыдущей статье данного цикла (см. Исключение из правил).

Физик по образованию, он окончил в 1939 г. Королевский колледж Кембриджа1 и начал работать над усовершенствованием конструкций специальных электронных ламп для радаров в лондонской лаборатории компании STC Ltd. После окончания войны Стрейчи преподавал физику и математику в ряде школ, в том числе в одной из самых известных британских привилегированных школ “Хэрроу”. В 1951 г. случай свел его с М. Вуджером — одним из разработчиков ЭВМ АСЕ в Национальной физической лаборатории, и под влиянием бесед с ним Стрейчи увлекся проблемами логической структуры и программирования ЭВМ. В качестве первого опыты он написал программу для игры в шашки для машины Manchester Mark I, которая получила одобрение А. Тьюринга. В июне 1952 г. Стрейчи оставил преподавание и начал работать в качестве технического эксперта в Национальной научно-исследовательской корпорации (National Research Development Corporation, NRDC)2.

Как говорилось в предыдущей статье, одна из задач, поставленных перед Стрейчи, заключалась в анализе архитектуры и состава ЭВМ Elliot 401 с целью подготовки рекомендаций по ее модификации для производства серийных образцов. Но он пошел дальше и попытался убедить руководство корпорации в необходимости финансирования работ по созданию и выпуску более мощных машин, чем те, что намеревалась производить Elliott Brothers. Полностью поддерживая методологию модульного конструирования, Стрейчи, кроме того, сформулировал несколько общих требований к ЭВМ, которые часто цитируются в литературе по истории ЭВМ:

  • удобство программирования является решающим фактором при выборе системы команд;
  • следует избегать использования “оптимального кодирования”3, поскольку это может стать интеллектуальным увлечением программистов, требующим больших затрат времени;
  • вычислительная машина должна быть дешевой и надежной.

Стрейчи полагал, что “Боливар двоих не вынесет” и рекомендовал поручить разработку новой машины компании Ferranti Ltd. Руководители NRDC и Ferranti согласились с его доводами, тем более что из-за внутренних разногласий в Elliott Brothers группа ее ведущих сотрудников во главе с руководителем отдела вычислительной техники У. С. Эллиотом охотно приняла предложение перейти в лондонское конструкторское бюро Ferranti. Работа над “модульной вычислительной машиной Ферранти 1” (Ferranti Packaged Computer, FPC 1), которая впоследствии продавалась под названием “ПЕГАС” (PEGASUS), началась осенью 1954 г. По контракту с NRDC компания должна была разработать и выпустить не менее десяти таких машин.

Кристофер Стрейчи

Кристофер Стрейчи (1916-1975)

Формально Стрейчи не участвовал в непосредственной разработке PEGASUS’а, но был генератором основных архитектурных идей. По воспоминаниям участников работы, он часто “входил в клинч” c Эллиоттом, отстаивая интересы программистской стороны, ибо последний — как истинный “железочник” — стремился прежде всего сделать машину надежной, простой в техническом обслуживании и дешевой в изготовлении. К чести обоих надо сказать, что в большинстве случаев они приходили к компромиссу.

Первая задача, которую предстояло решить создателям машины, заключалась в выборе формата команд.

Здесь необходимо заметить, что во времена “ламповой декады” (примерно в 1945—1955 гг.) наиболее дорогостоящим и капризным устройством ЭВМ была оперативная (или главная) память. Для ее экономии конструкторы машин стремились добиться высокой плотности кода командного слова, зависящей в первую очередь от выбранной адресности команд. Поэтому неудивительно, что из 65 американских ЭВМ, разработанных в упомянутый период, 33 машины были одноадресными (так называемыми аккумуляторными; данные американского специалиста Мартина Г. Вейка — Martin H. Weik). При этом, однако, возникала необходимость в выполнении ряда дополнительных команд, связанных с внутримашинным обменом (организацией) данных, который осуществлялся через аккумулятор, снижая тем самым быстродействие ЭВМ. Этого недостатка была лишена наиболее удобная для пользователя трехадресная форма команд: A, B*C (1) [где А, В — адреса операндов, С — адрес результата, * — символ операции. ]

Но плотность командного слова была в этом случае низкой. Анализ конкретных программ, проведенный рядом ученых, показал, что в большинстве случаев два адреса являются одним и тем же, поэтому формулу (1) можно свести к виду: А, В*А (2)

Более того, Стрейчи и его коллеги предложили модификацию (2), при которой “адресное пространство” одного операнда было бы ограниченным, а второго — занимало всю оперативную память.

Это предложение было реализовано путем использования в машине двухуровневой памяти — в качестве оперативной памяти применялся магнитный барабан емкостью 5120 слов. Барабан имел 40 дорожек, каждая из которых могла хранить 128 слов, и такое же число строго фиксированных головок считывания/записи. Барабан вращался с частотой 3729 об/мин, поэтому среднее время выборки составляло 8 мс. В качестве памяти ограниченной емкости использовались 56 “быстрых” регистров со средним временем выборки 0,126 мс, построенных на никелевых линиях задержки (НЛЗ; в этих линиях в отличие от НЛЗ, разработанных для ЭВМ компании Elliott Brothers, впервые использовался поперечный магнитострикционный эффект). Их совокупность разработчики называли “памятью вычислений” (computing store). Обмен информацией между двумя видами памяти осуществлялся либо с помощью одного слова, либо блоками из восьми слов (при этом правильность передачи проверялась контролем на четность, а сбой индицировался на мониторе). Выполнение программы начиналось с загрузки шести блоков с магнитного барабана в “память вычислений”, откуда команды и данные последовательно направлялись в вычислительно-управляющую часть машины.

Еще одна архитектурная новинка представляла собой развитие идеи индексного регистра и заключалась в первом использовании регистров-аккумуляторов, получивших название general register (регистров общего назначения, РОН). Таких регистров было в машине восемь: один из них использовался для приема слова с магнитного барабана (и обратной передачи), остальные семь расширяли возможности программиста: участвовали в организации циклов, хранении множимого, остатка, промежуточных результатов вычислений, констант, команд, подлежащих ближайшему исполнению, а также в выполнении прочих “аккумуляторных” операций и в модификации команд. Кроме того, было еще семь специальных регистров, которые использовались при вводе-выводе данных и отладке программ.

ЭВМ PEGASUS

ЭВМ PEGASUS

Длина машинного слова PEGASUS’a составляла 42 разряда. Для представления числа использовалось 38 разрядов (плюс знаковый разряд), еще один разряд предназначался для контроля по четности, а оставшиеся два были пустыми. В одном слове помещались две 19-разрядные команды и помимо разряда контроля по четности имелся разряд “остановись — продолжай” (stop-go digit), облегчавший нахождение ошибок при отладке программы или сбоях. Если в нем находился “0”, машина останавливалась перед выполнением следующей команды; при наличии “1” — продолжала работу.

Команды машины имели следующую структуру: семь старших N-разрядов позволяли обращаться к ячейкам оперативной памяти, следующие три X-разряда задавали адрес одного из семи регистров-аккумуляторов, шесть F-разрядов представляли собой код команды и, наконец, три M-разряда определяли “модификатор”: они содержали адрес регистра-аккумулятора, часть содержимого которого в зависимости от назначения модифицируемой команды добавлялась к ее коду перед выполнением команды.

Таким образом, использование computing store и РОН позволяло без значительных финансовых затрат (имеется в виду сравнительно невысокая стоимость “памяти вычислений”) создать “квазидвухадресный” формат команд и гибкую систему программирования. Всего в распоряжении пользователя была 51 команда [в том числе восемь (!) команд условного перехода], которые позволяли разрабатывать очень компактные программы. Поскольку команды и данные поступали в АУ и УУ из “памяти вычислений”, появлялась возможность находить одновременного с выполнением вычислительного процесса очередные блоки на магнитном барабане, подлежащие загрузке в эту память, что повышало производительность машины.

Для облегчения работы программиста и технического обслуживания PEGASUS’a были предусмотрены возможности пошагового исполнения программы с пульта машины, просмотра содержимого computing store, всех регистров-аккумуляторов и специальных регистров. Для поддержания машины в рабочем состоянии имелся большой набор программ технического тестирования машины (Engineering Tests), который хранился в защищенной от записи части магнитного барабана.

PEGASUS, как нетрудно догадаться, был машиной с последовательно-поразрядным выполнением арифметических операций, работавшей на тактовой частоте 0,333 МГц. К машине могло быть подключено до четырех лентопротяжек (с помощью специального устройства управления и буферной памятью емкостью 32 слова). Ввод-вывод данных осуществлялся посредством 5-канальной перфоленты; кроме того, результаты вычислений печатались на телепринтере. Электронные блоки были построены на 1200 лампах и размещались в трех шкафах, содержавших 597 ячеек семнадцати типов. При этом избыточность в аппаратуре (единственный недостаток модульной конструкции) составляла 10%, а в ценовом отношении — 0,3% от стоимости машины. ЭВМ PEGASUS потребляла около 18 кВт и выполняла операции сложения и вычитания за 0,3 мс, умножения — за 2,0 мс, деления — за 5,4 мс (включая время выборки команды).

В октябре 1955 г. PEGASUS выполнил первую тестовую программу, а в марте 1956 г. ее первый промышленный образец был доставлен во вновь образованное сервисное бюро Ferranti в Лондоне — первое такого рода бюро в Британии.

Через три года компания выпустила PEGASUS-2, в котором емкость магнитного барабана была увеличена до 9216 слов, предусмотрена возможность подключения до 16 лентопротяжек и использования перфокарточного ввода-вывода. В течение 1956—1962 гг. было продано (по базовой цене в 50 тыс. фунтов) около 40 экз. PEGASUS’ов (главным образом первой модели). К машине прилагалось руководство по программированию, написанное Джорджем Э. Фелтоном. Но затем американские ЭВМ вытеснили с рынка эту пионерскую машину — надежную, удобную для пользователя (программиста) и сравнительно дешевую.

В заключение отмечу, что к числу ЭВМ, в состав которых входили РОН — пожалуй, главное изобретение “Стрейчи и Кo”, — относятся такие известные машины, как американские DEC PDP-6 и 10, SDS Sigma 5 и 7, UNIVAC 1107 и 1108, IBM System/370 и некоторые другие.

Примечания

* Пегас, -- в древнегреческой мифологии конь, родившийся из туловища убитой Персеем Медузы-Горгоны. От удара копытом Пегаса на горе Геликон возник источник Гипокрены, вода которого, по позднеаттичным представлениям, вдохновляла поэтов. БСЭ

1.Интересно, что во время учебы Стрейчи в этом же колледже преподавал Алан Тьюринг, однако нет никаких данных о том, что они были тогда знакомы.

2.В 1959 г. Стрейчи ушел из NRDC, в течение следующих шести лет работал как частный консультант, а в 1965 г. возглавил исследовательскую группу по программированию в Оксфордском университете. Он создатель языка программирования CPL (Combined Programming Language), и ему принадлежат исследования по семантике языков программирования.

3.См. статью “Ни на что не похожая” .Говоря об “оптимальном кодировании”, Стрейчи заранее предполагал, что в машине будет использована память с последовательной выборкой (линии задержки или магнитный барабан)

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

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