*1

_____

*1 Окончание. Начало см. в N 32.

Как и “Малышка”, Manchester Mark I была одноадресной машиной с арифметическим устройством последовательного действия; машинное слово было увеличено до 40 двоичных разрядов, а число одноадресных команд - до 30 (каждая представлялась 20-разрядным кодом, так что в машинном слове помещалось две команды). Принципиальные же отличия от SSEM состояли в следующем. Впервые в мире в машине была реализована иерархическая структура памяти: в качестве оперативного ЗУ использовались две “трубки Уильямса” (хранившие по две страницы, каждая емкостью 32 сорокаразрядных машинных слова), в качестве внешнего ЗУ - накопитель на магнитном барабане с временем оборота 30 мс и возможностью запоминания 1024 слов. Арифметические операции (сложение, вычитание и умножение) выполнялись аппаратными средствами; ввод данных и программ осуществлялся 5-разрядным двоичным кодом с помощью бумажной перфоленты или перфокарт (так, что любая команда на перфоленте представлялась четырьмя последовательными рядами перфораций - или их отсутствием); результаты вычислений выводились на перфоратор или на телетайп; среднее время выполнения команды - 1,8 мс (за исключением более длительной операции умножения, занимавшей в среднем 10 мс).

И самое, пожалуй, главное: в машине впервые были использованы два индексных регистра - по терминологии разработчиков В-линии (B-lines*1). Замечательная и в то же время очень простая идея такого регистра родилась во время мозгового штурма, в котором участвовали Ньюмен, Уильямс, Килберн и Тутил (они же запатентовали эту идею).

_____

*1 Происхождение термина объясняется следующим образом: помимо ОЗУ в машине, как и в SSEM, было три дополнительные трубки - A, C и D. В качестве индексных регистров использовалась еще одна трубка, которую и обозначили буквой B.

Как известно, основное назначение этих регистров заключается в модификации адресов в команде путем прибавления содержимого регистра (или его части) к адресу, указанному в хранящейся в памяти команде. При этом в отдельных ее частях записывается номер индексного регистра, который надо использовать (если в машине таких регистров несколько), и признаки, показывающие, надо ли модифицировать адреса данной команды, и если да, то какой адрес по какой части индексного регистра модифицируется. Использование “B-lines” значительно упрощает программирование (уменьшает число команд), особенно в тех случаях, когда речь идет о повторяющихся вычислениях над данными в табличной или векторной форме, расположенными в ячейках памяти последовательно. Кроме того, сокращается время выполнения задачи, так как обращение к индексному регистру происходит быстрее обращения к оперативной памяти.

Чтобы ускорить промышленный выпуск машины, в компанию перешли Тутил и Робинсон, их участие немало способствовало тому, что уже в феврале 1951 г. первая коммерческая ЭВМ Ferranti Mark I была изготовлена. Она стала первой в мире ЭВМ, предназначавшейся для продажи (американская коммерческая ЭВМ UNIVAC появилась несколькими месяцами позднее).

От своего университетского прототипа Ferranti Mark I отличалась незначительно: емкость ОЗУ была увеличена до восьми трубок, возросло число индексных регистров (также до восьми), усовершенствован накопитель на магнитном барабане, способный хранить 4096 сорокаразрядных двоичных чисел, в командный набор было включено 50 команд. Быстродействие машины оценивалось следующими данными: операция сложения выполнялась за 1,2 мс, операции умножения - за 2,16 мс. Машина не имела аппаратуры для операций деления целых чисел или оперирования с числами с плавающей запятой, содержала 4050 ламп и потребляла около 25 кВт.

Первый экземпляр промышленной ЭВМ был поставлен университету 9 июля 1951 г. и размещен в здании, специально выстроенном для Лаборатории вычислительной техники, в которой была организована отдельная сервисная группа для обслуживания Ferranti Mark I и работы с пользователями. Но попытка широкого коммерческого сбыта машины натолкнулась на большие трудности. Маркетинговой группой компании руководил бывший сотрудник TRE (впоследствии лорд) Вивиан Бауден (Vivian Bowden, 1919-1989), защитивший докторскую диссертацию под руководством Э. Резерфорда и получивший затем известность как организатор одного из первых симпозиумов по цифровым вычислительным машинам и редактор его материалов*1. Если учесть, что Ferranti Mark I стоила 85 000 фунтов, то очевидно, что государственная дотация недотягивала и до половины этой суммы. Все же Баудену в 1952 г. удалось продать второй экземпляр машины Университету Торонто.

_____

*1 Bowden B. V. Faster than Thought: Symposium on Digital Computer Machinery. London,:Pitman and Sons, 1953.

Неизвестно, как сложилась бы дальнейшая судьба ЭВМ от Ferranti, если бы ей на помощь не пришла Национальная научно-исследовательская корпорация (National Research Development Corporation, NRDC), под весьма скромные проценты ссудившая компании средства на доработку и изготовление машины, которая в несколько измененном варианте стала именоваться Ferranti Mark 1*. Она имела ту же архитектуру, что и ее предшественница, но более рациональную систему команд и усовершенствованное Робинсоном более быстродействующее множительное устройство. Кроме того, в состав машины был включен аппаратный генератор случайных чисел. Благодаря финансовой поддержке NRDC компании удалось продать в 1953-1957 гг. семь экземпляров машин Ferranti Mark 1* ряду государственных учреждений и промышленных компаний в Британии, а также в Италию и Нидерланды.

Консоль ЭВМ Ferranti Mark 1

Машины поставлялись вместе с “Руководством по программированию”, написанным Тьюрингом в соавторстве с некоторыми коллегами.

По-видимому, это была самая неудачная работа великого ученого. Судите сами: Тьюринг предложил каждому 5-разрядному “входному” коду сопоставлять мнемонический знак из набора в 32 символа (по числу возможных комбинаций, 25). В этот набор вошли буквы и некоторые знаки, имеющиеся на стандартной клавиатуре телетайпа. Например, коду 01000 соответствовал знак @, коду 10100 - буква S, коду 11111 - знак ? и т. д., так что, скажем, команда 10001 00100 00001 10010 записывалась в программе как Z:TD, а сорокаразрядное число: 10001 11011 10100 01001 10001 11001 01010 10110 - как Z”SLZWRF Аналогичным образом представлялись адреса в памяти (двумя символами). Не вдаваясь в подробности программирования в такой системе, надо сказать, что она вызывала большие нарекания у пользователей и в конечном счете не прижилась. Однако сама идея записи программы с помощью мнемонических обозначений оказалась для своего времени весьма прогрессивной (ранее ее выдвинули кембриджские программисты и один из создателей ENIAC Джон Моучли).

В частности, Моучли предложил сотрудникам “Корпорации вычислительных машин Эккерта - Моучли” (Eckert-Mauchly Computers Corp., EMCC), основанной им вместе с Д. Преспером Эккертом после ухода из школы Мура, разработать систему программирования, которая бы позволила сначала записывать задачу в виде математических уравнений, а затем, пользуясь вспомогательной таблицей, переводить эти уравнения в двузначный код (при этом, например, знак "плюс" представлялся как 07, круглая скобка - 09 и т. д.). Далее специальная программа преобразовывала бы этот код в двоичный, причем преобразование (трансляция, от англ. translation - перевод) должно было осуществляться последовательно, так что следующая строка “переводилась” после того, как была выполнена операция, заданная предыдущей строкой (даже если эта операция уже не раз использовалась в ходе решения задачи). Такая система, заработавшая в конце 1949 г., получила название “Краткий код команд” (Short order code), а преобразующую программу в дальнейшем стали именовать интерпретатором (одним из видов языковых трансляторов). “Краткий код команд” не получил широкого распространения, но, как говорила Г. М. Хоппер, он “был первым шагом к чему-то такому, что давало программисту возможность писать программы на отличном от машинного языке” (была ли она тогда знакома с кембриджским Ассемблером?).

Трансляция программы, записанной в мнемонических обозначениях с помощью интерпретатора, имела по крайней мере два очевидных недостатка. Во-первых, интерпретирующая программа в процессе решения всей задачи должна храниться в памяти, уменьшая таким образом ее “оперативное пространство”; во-вторых, результат перевода очередной строки (машинный код) не запоминается, и при повторном запуске программы вся процедура трансляции начинается с нуля. Эти недостатки попытался устранить в 1952-1954 гг. математик из Манчестерского университета Р. Э. Брукер (R. A. Brooker), разработавший методику программирования, которую он назвал “Автокодом” (Autocode), - по-видимому, это был первый в мире компилятор (еще один вид языкового транслятора)*1.Она строилась на тех же принципах, что и “Краткий код команд”, однако не требовала последовательной интерпретации каждой сроки программы, а позволяла преобразовывать в машинные коды всю программу целиком и хранить ее в памяти. Впрочем, и у “Автокода” имелся недостаток: при первом прогоне программы она должна была работать одновременно с интерпретатором, и поэтому при частой смене задач эффективность “Автокода” резко снижалась.

_____

*1 В литературе можно встретить утверждение, что первый autocode написал в 1952 г. д-р. Александр Глени (Alec Glennie). Он работал в организации Fort Halstead establishment, занимавшейся созданием атомного оружия, и выполнял связанные с этим многочисленные вычисления в Лаборатории вычислительной техники Манчестерского университета в обстановке сверхсекретности. Ясно, что в этих условиях “autocode”, написанный Глени в порядке хобби, был доступен только автору.

Сотрудничество Манчестерского университета и Ferranti продолжилось. Так, в 1951-1954 гг. под руководством Килберна была построена еще одна ламповая машина под кодовым названием MEG (Megacycle Engine)*1. В ней использовались многие архитектурные решения Manchester Mark I, но при этом быстродействие было повышено более чем в 20 раз, потребляемая мощность уменьшена почти в два раза. Память на трубке Уильямса была затем заменена памятью на магнитных сердечниках и, по-видимому, впервые в мире применен аппаратный способ выполнения операций над числами с плавающей запятой (под мантиссу отводилось 30 разрядов, под показатель - 10). MEG выполнила первую программу в мае 1954 г. и послужила прототипом для одной из лучших британских ламповых ЭВМ “Меркурий” (Mercury), изготовленной Ferranti и впервые поставленной на рынок в 1957 г. (всего было продано 18 таких машин). Но самой, пожалуй, знаменитой совместной разработкой университета и компании стала поистине эпохальная полупроводниковая ЭВМ “Атлас” (Atlas), к истории создания которой мы обратимся в одной из следующих статей.

_____

*1 Этим названием машина обязана своей тактовой частоте 1 МГц.

Компьютерная команда Ferranti самостоятельно разработала ряд вычислительных машин, названия которых почему-то также были заимствованы из древнегреческой мифологии: “Пегас” (Pegasus), “Персей” (Perseus), “Аргус” (Argus), “Посейдон” (Poseidon) и др. К 1963 г. компания продала 99 ЭВМ на сумму почти в 25 млн. фунтов. Увы! Потери Ferranti составили при этом 4 млн. фунтов, и она вынуждена была продать свой компьютерный бизнес компании International Computers and Tabulators Ltd.(ICT).

В заключение скажем о машине, в которой впервые в Британии использовалось наиболее замечательное свойство трубки Уильямса - возможность произвольного доступа к памяти (что позволяло создать ЭВМ с арифметическим устройством параллельного действия). Машина была построена под руководством А.М. Аттли (А.M. Uttley) в 1947-1953 гг. в TRE и потому называлась TREAC (Telecommunications Research Establishment Automatic Computer). Она повторяла структуру Manchester Mark I (за исключением отсутствия индексных регистров), содержала 2000 ламп и примерно 1000 германиевых триодов; емкость памяти на трубке составляла 512 двадцатичетырехразрядных слова, емкость накопителя на магнитном барабане - 64К слов. Ввод-вывод информации осуществлялся посредством пятиканальной бумажной перфоленты, командный набор состоял из 14 одноадресных команд, а время сложения в среднем не превышало 40 мкс.

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