ИСТОРИЯ ВТ
Пегас (греч. Ph|gasoz) - в древнегреческой мифологии конь, родившийся из туловища убитой Персеем Медузы-Горгоны. От удара копытом Пегаса на горе Геликон возник источник Гипокрены, вода которого вдохновляла поэтов.
БСЭ
Что должно быть главенствующим при разработке компьютера: аппаратура или программы? В наше время такой вопрос звучит вполне риторически, ибо сегодня любой ИТ-специалист ответит: необходимо диалектическое единство. Но эта точка зрения возобладала не сразу. В начале и даже в первой половине 1950-х годов программы рассматривались как некий второстепенный продукт, сопровождавший главное творение - hardware. Может быть, поэтому отношение чистых математиков к вышедшим из их среды программистам носило тогда покровительственно-снисходительный характер (недаром в те далекие года по МГУ ходила частушка: "Меня милый не целует, не садится близко, он ведь чистый математик, а я - программистка"). Напомним, что в те ветхозаветные (с точки зрения развития ВТ) времена пользователь, функции которого зачастую выполнял сам программист, писал программу, как правило, в машинном коде. Правда, для некоторых машин были разработаны языки Ассемблера, но это не сильно искажало общую картину зависимости программиста от особенностей "железа": обычно он сам вводил программу в машину и затем отлаживал ее вручную, а поэтому должен был досконально знать, как работает ЭВМ, что означает перемигивание лампочек на панели, каково назначение многочисленных переключателей и т. д. Отладка и первый прогон программы, прерываемые сбоями не очень-то надежно работавших ЭВМ, были довольно длительным и утомительным процессом (да к тому же накладным финансово, если машинное время продавалось).
Как сделать из ЭВМ "user friendly computer" (дружескую по отношению к пользователю, как стали говорить много позднее при разработке графического интерфейса для ПК), облегчив жизнь программиста? Одним из первых на этот вопрос попытался ответить выдающийся британский ученый Кристофер Стрейчи, о котором я уже упоминал в предыдущей статье данного цикла (см. PC Week/RE, N 39/2006, c. 60).
Физик по образованию, он окончил в 1939 г. Королевский колледж Кембриджа*1 и начал работать над усовершенствованием конструкций специальных электронных ламп для радаров в лондонской лаборатории компании STC Ltd. После окончания войны Стрейчи преподавал физику и математику в ряде школ, в том числе в одной из самых известных британских привилегированных школ "Хэрроу". В 1951 г. случай свел его с М. Вуджером - одним из разработчиков ЭВМ АСЕ в Национальной физической лаборатории, и под влиянием бесед с ним Стрейчи увлекся проблемами логической структуры и программирования ЭВМ. В качестве первого опыты он написал программу для игры в шашки для машины Manchester Mark I, которая получила одобрение А. Тьюринга. В июне 1952 г. Стрейчи оставил преподавание и начал работать в качестве технического эксперта в Национальной научно-исследовательской корпорации (National Research Development Corporation, NRDC)*2.
_____
*1 Интересно, что во время учебы Стрейчи в этом же колледже преподавал Алан Тьюринг, однако нет никаких данных о том, что они были тогда знакомы.
*2 В 1959 г. Стрейчи ушел из NRDC, в течение следующих шести лет работал как частный консультант, а в 1965 г. возглавил исследовательскую группу по программированию в Оксфордском университете. Он создатель языка программирования CPL (Combined Programming Language), и ему принадлежат исследования по семантике языков программирования.
Как говорилось в предыдущей статье, одна из задач, поставленных перед Стрейчи, заключалась в анализе архитектуры и состава ЭВМ Elliot 401 с целью подготовки рекомендаций по ее модификации для производства серийных образцов. Но он пошел дальше и попытался убедить руководство корпорации в необходимости финансирования работ по созданию и выпуску более мощных машин, чем те, что намеревалась производить Elliott Brothers. Полностью поддерживая методологию модульного конструирования, Стрейчи, кроме того, сформулировал несколько общих требований к ЭВМ, которые часто цитируются в литературе по истории ЭВМ:
- удобство программирования является решающим фактором при выборе системы команд;
- следует избегать использования "оптимального кодирования"*1, поскольку это может стать интеллектуальным увлечением программистов, требующим больших затрат времени;
- вычислительная машина должна быть дешевой и надежной.
_____
*1 См. статью “Ни на что не похожая” в PC Week/RE, N 36/2006, c. 36. Говоря об “оптимальном кодировании”, Стрейчи заранее предполагал, что в машине будет использована память с последовательной выборкой (линии задержки или магнитный барабан).
Стрейчи полагал, что "Боливар двоих не вынесет", и рекомендовал поручить разработку новой машины компании 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’a составляла 42 разряда. Для представления числа использовалось 38 разрядов (плюс знаковый разряд), еще один разряд предназначался для контроля по четности, а оставшиеся два были пустыми. В одном слове помещались две 19-разрядные команды и помимо разряда контроля по четности имелся разряд "остановись - продолжай" (stop-go digit), облегчавший нахождение ошибок при отладке программы или сбоях. Если в нем находился "0", машина останавливалась перед выполнением следующей команды; при наличии "1" - продолжала работу.
Команды машины имели следующую структуру: семь старших N-разрядов позволяли обращаться к ячейкам оперативной памяти, следующие три X-разряда задавали адрес одного из семи регистров-аккумуляторов, шесть F-разрядов представляли собой код команды и, наконец, три M-разряда определяли "модификатор": они содержали адрес регистра-аккумулятора, часть содержимого которого в зависимости от назначения модифицируемой команды добавлялась к ее коду перед выполнением команды.
ЭВМ PEGASUS
Таким образом, использование 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 и некоторые другие.