ИСТОРИЯ ВТ

    

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

А. Тьюринг

 Юрий Полунов

На юго-западной окраине Лондона, в районе Теддингтон, находится Буши-парк - живописнейший уголок британской столицы, любимое место охоты Карла II. Выезжая на королевскую забаву, Его Величество и многочисленная свита останавливались в Буши-хаузе - трехэтажном здании неоклассического стиля, возведенном в 1663 г. и окруженном многочисленными служебными пристройками. На протяжении столетий здание неоднократно меняло хозяев и наконец в 1902 г. было передано Национальной физической лаборатории (НФЛ), в стенах которой в начале 50-х годов прошлого века была создана одна из самых оригинальных ламповых ЭВМ.

У ее истоков стояли три человека: директор лаборатории физик сэр Чарльз Гэлтон Дарвин (Charles Galton Darwin, 1887-1962), внук великого натуралиста; руководитель (суперинтендант) Математического департамента Джон Р. Уомерсли (John R. Womersley, 1907-1958); великий ученый Алан Тьюринг, о котором я неоднократно писал в предыдущих статьях.

Уомерсли был не математиком, а опытным и настойчивым администратором, остро чувствовавшим веяния времени и умевшим проводить необходимые ему решения через исполнительный комитет НФЛ. Задача его департамента заключалась в развитии численных методов решения прикладных физических задач, которые, как правило, выполнялись на стандартных счетных и счетно-перфорационных машинах в масштабах, ограниченных скромными возможностями оборудования. Во время войны Уомерсли был причастен к выполнению некоторых заказов британских вооруженных сил и поэтому мог получить информацию, отнесенную к разряду секретной. Так, узнав по соответствующим каналам о разработках в США машин Harvard Mark I и ENIAC, он поспешил за океан, где провел февраль - апрель 1945 г. в Гарвардском и Пенсильванском университетах и, близко сойдясь с Голдстайном, получил от него (в дальнейшем) копию фон-неймановского "Первого варианта...".

Вернувшись на родину, Уомерсли начал собирать команду разработчиков будущей ВМ, которую предложил назвать "Автоматической вычислительной машиной" (Automatic Computing Engine, ACE)*1. В августе 1945 г. он пригласил первого сотрудника - Алана Тьюринга, которому передал копию фон-неймановского отчета и предложил возглавить проект. Выдающиеся способности 33-летнего ученого хорошо были известны Уомерсли, с которым он, по-видимому, лично познакомился в ноябре 1942 г., когда вместе с другими специалистами и администраторами посетил США для оказания консультационной помощи союзникам в производстве одного из вариантов английской дешифровочной машины (так называемой "Хит Робинсон") на заводе компании National Cash Register.

_____

*1 "Engine" - дань уважения Чарльзу Бэббиджу и его Analytical Engine.

Тьюринг охотно принял предложение Уомерсли. Оно позволяло реализовать "в металле" один из вариантов "универсального вычислителя" - Universal Turing Machine, описанного им в знаменитой статье 1936-1937 гг.*1 Но собственно численные расчеты с помощью ЭВМ во второй половине 40-х годов мало привлекали внимание Тьюринга. Известному впоследствии кибернетику Уильяму Россу Эшби (William Ross Ashby, 1903-1972) он писал: "Работая над АСЕ, я в большей степени интересовался возможностью создания моделей функционирования мозга, чем практическими приложениями вычислений".

_____

*1 См. статью “Автора!” в PC Week/RЕ, N 20/ 2006, c.35.

В те годы Тьюринг не переставал размышлять над тем, что смогут делать вычислительные машины. Он изложил полученные им теоретические результаты в статье "Computing machinery and intelligence", которая была опубликована в 1950 г. в журнале "Mind", а в русском переводе вышла под названием "Может ли машина мыслить?". Чтобы выяснить мыслительные способности машины, он предложил организовать "игру в имитацию", получившую в дальнейшем название "теста Тьюринга". В процессе игры экзаменатор задавал удаленным от него машине и человеку вопросы и сравнивал полученные от них (по телетайпу) ответы. Если при этом машина была способна имитировать поведение, которое экзаменатор не мог отличить от поведения человека, обладающего мыслительными способностями, то это означало, что машина также обладает этими способностями.

Джеймс Х. Уилкинсон

Тьюринг писал: "Мы можем надеяться, что вычислительные машины в конечном счете смогут конкурировать с людьми во всех чисто интеллектуальных сферах деятельности. Но с какими машинами лучше всего начать двигаться к этой цели? Даже на этот вопрос ответить затруднительно. Многие люди думают, что лучше всего машина может выявить свои возможности в чрезвычайно абстрактной области, подобной игре в шахматы. Можно также утверждать, что хорошо было бы снабдить машину наилучшими "органами чувств" (датчиками) из числа тех, что можно купить, а затем учить эту машину понимать и говорить по-английски. Этот процесс может быть сходен с обычным обучением ребенка. То есть машине надо указать на тот или иной предмет, назвать его и т. п. Повторяю, что я не знаю, как правильно ответить на этот вопрос, но я думаю, что следует попытаться использовать оба эти подхода. Мы можем заглядывать вперед лишь на очень небольшой отрезок времени, но уже сейчас очевидно, что нам предстоит еще весьма многое сделать в той области, которая была предметом настоящей статьи"*1.

_____

*1 Сохранился карандашный набросок, сделанный матерью Алана Тьюринга: группа мальчишек играет в хоккей на траве, а отдельно стоящий малыш склонился над цветком. Подпись под наброском: "Алан наблюдает, как растет маргаритка". Этот набросок в значительной степени поясняет феномен человека, которого многие современники называли "странным гением": если Ньютон пытался открыть тайну мироздания и представлял себя ребенком, играющим на берегу безбрежного океана истины, то Тьюринг, говоря метафорически, склонялся над цветком маргаритки: его интересовало чудо живого организма, бесконечное многообразие биологических форм, законы человеческого мышления и связь его с мышлением машинным, соотношение между духом и материей, загадки живого мозга и мозга электронного.

Но вернемся к началу проекта АСЕ. Став сотрудником Уомерсли, Тьюринг незамедлительно приступил к подготовке "Предложения по созданию в Математическом департаменте "Автоматической вычислительной машины", которое завершил в предельно короткий срок (к концу декабря 1945 г.). И это, по-видимому, доказывает, что над проблемами ЭВМ он размышлял еще в военные годы. Хотя автор "Предложения..." ссылался на отчет фон Неймана как на источник первоначальных сведений о машинах с хранимой программой, работа Тьюринга представляла совершенно оригинальный труд. Даже если не касаться различного подхода к построению EDVACа и АСЕ (об этом будет сказано ниже), следует подчеркнуть значительно большую практическую направленность "Предложения...": если фон Нейман почти ничего не говорил о программировании и тем более не касался электронной схемотехники машин (надо думать, это и не было его целью), то Тьюринг не только описал общую структуру ЭВМ и ее основные блок-схемы, но привел примеры программ в машинном коде, принципиальные электрические схемы (!) наиболее ответственных, по его мнению, узлов и даже оценил стоимость изготовления машины (11,2 тыс. фунтов)*1. Читатель не должен удивляться подобной "трансформации" интересов ученого, ибо, по словам одного из его друзей, "он представлял собой столь редко встречающееся сочетание теоретика, способного разобраться в самых запутанных и далеких от его профессии математика проблемах, и инженера, который любил возиться с техническими устройствами, мог спроектировать и спаять электронный прибор" (известно, что в конце 1944 г. Тьюринг самостоятельно разработал и с помощью техника изготовил электронный скремблер - устройство шифрования данных при их передаче по цифровому каналу связи, превосходившее американские аналоги).

_____

*1 Гарри Дуглас Хаски (Harry Douglas Huskey, р.1916), один из конструкторов EDVACа, говорил, что в практическом плане “Предложение...” дало ему значительно больше, чем отчет фон Неймана

19 февраля 1946 г. Уомерсли и Тьюринг представили "Предложение..." исполнительному комитету НФЛ, который после некоторых дебатов одобрил проект*1 и рекомендовал математическому департаменту приступить к детальной проработке структуры ЭВМ. Однако в течение последующих трех месяцев Тьюринг трудился в одиночку, и лишь в мае к нему присоединился выпускник кембриджского Тринити-колледжа, а затем сотрудник НФЛ математик Джеймс Харди Уилкинсон (James Hardy Wilkinson, 1919-1980)*2. Позднее он вспоминал: "К этому времени Тьюринг работал над вариантом машины, который он называл "версией V". Документацию предыдущих версий я не видел: мой шеф не был силен в составлении и архивировании документации, и без сомнения ранние варианты были похоронены в свалке бумаг на его столе...В конце 1946 г. к нам присоединился Майкл Вуджер (Michael Woodger), и мы втроем дорабатывали логическую схему машины, используя наш опыт программирования численного решения задач. Версию V (и промежуточную VI) мы отвергли, сделав свой окончательный выбор на версии VII... В следующем году в группу АСЕ вошли еще несколько математиков: Дональд У. Дейвис [Donald W. Davis, 1924-2000]*3, Джеральд Дж. Олвей [Gerald G. Alway], Уильям Кертис [William Curtis] и Гарри Дж. Нортон [Harry J.Norton]". Они писали программы для будущей машины (в частности, подпрограммы вычислений над числами в форме с плавающей запятой одинарной и двойной точности), но прогнать и отладить их не имели возможности - АСЕ существовала только на бумаге.

_____

*1 Огромную, можно сказать решающую, поддержку докладчикам оказал член исполнительного комитета НФЛ Дуглас Рейнер Хартри (Douglas Rayner Hartree, 1897-1958) - известный английский ученый, разработавший в 30-е годы электромеханический дифференциальный анализатор, аналогичный знаменитому анализатору Ванневара Буша. Сравнительно ранняя смерть Хартри не позволила ему принять активное участие в создании британских ЭВМ.

*2 Уилкинсон получил в 1970 г. премию им А. Тьюринга “за исследования в области численных методов, способствующих широкому использованию компьютеров”.

*3 Впоследствии Дейвис получил широкую известность как автор так называемого метода коммутации пакетов (packet switching), сыгравшего важную роль при создании Интернета.

Остановимся на некоторых принципиальных особенностях конструирования и изготовления машины.

Алан Тьюринг

Главной целью Тьюринга было получение максимально возможного быстродействия*1, но не за счет усложнения или увеличения аппаратуры, а путем оригинальных архитектурных идей (в частности, совершенно новой структуры командного слова) и особых приемов программирования. Полемизируя со своими кембриджскими коллегами, Тьюринг писал в 1946 г.: "Система кодирования, которую он [Уилкинсон] предлагает, совершенно отлична от той, которой мы следуем в НЛФ: она [кембриджская система] соответствует американской традиции, когда преодоление трудностей достигается путем увеличения оборудования, а не с помощью мыслительного процесса [thought]".

_____

*1  “Тьюринг был одержим идей повышения быстродействия”, - писал Уилкинсон.

К каким идеям привел Тьюринга и его коллег "мыслительный процесс"?

- Кардинальная идея состояла в отказе от последовательного расположения команд программы в памяти, т. е. от последовательного или естественного (по фон Нейману) управления вычислительным процессом, как это было сделано в EDVACе и EDSACе. По первоначальному замыслу Тьюринга машина должна была иметь память, состоявшую из 200 длинных РУЛЗ, каждая из которых хранила бы 32 тридцатидвухразрядных машинных слова*1. Тактовая частота, с которой импульсы циркулировали в РУЛЗ, равнялась 1 МГц, и, следовательно, период обращения в ней информации - так называемый большой цикл (Major cycle) - составлял 1024 мкс, или примерно 1 мс. Поэтому при естественном управлении за это время можно было выполнить только одну команду, а следующая команда появлялась на выходе памяти только по прошествии большого цикла (напомню, что в памяти на РУЛЗ выборка информации происходила последовательно). Арифметические, логические и другие операции могли быть произведены (во всяком случае теоретически) за более короткий интервал времени, и поэтому машина простаивала, иначе говоря, теряла быстродействие.

_____

*1 Отметим, что у первых моделей Apple Ma-cintosh была примерно такая же емкость памяти.

Чтобы минимизировать время выборки информации из РУЛЗ, Тьюринг предложил располагать команды не последовательно, а в произвольных позициях, таким образом, чтобы каждая из них появлялась на выходе памяти в тот момент, когда заканчивалось выполнение предыдущей команды. Достигалось это с помощью программистских приемов, совокупность которых впоследствии получила название оптимального кодирования (сам Тьюринг избегал употребления слова "оптимальный").

- Для реализации оптимального кодирования авторы использовали сложную структуру командного слова, состоявшего из семи полей. Первое поле (N) содержало адрес (source) РУЛЗ, из которой должна быть извлечена очередная команда; второе (S) - адрес операнда; третье - адрес получателя (Destination) операнда и код выполняемой над ним операции; четвертое (С) - определяло длину передаваемого операнда; пятое (Wait number, W) - устанавливало длительность временного интервала, после которого должна была начаться пересылка информации; шестое (Timing number, T) - задавало время пересылки, за которой следовала очередная команда; и наконец, содержимое седьмого (Go, G) либо разрешало продолжение вычислений, либо останавливало машину.

- Я не буду останавливаться на методологии оптимального кодирования, отослав заинтересованных читателей к соответствующей литературе*1. Отмечу лишь, что структура команды позволяла осуществить операцию: сложить все 32 числа, содержащиеся в ЛЗ "А", с 32 числами в ЛЗ "B" и результат поместить в ЛЗ "C". Иначе говоря, АСЕ была одной из первых ЭВМ, обладавшей возможностями векторной обработки данных.

_____

*1  Alan Turing’s Automatic Computing Engine. - Ed. B. Jack Copeland. London, 2005.

- Помимо длинных линий предполагалось иметь в машине несколько коротких РУЛЗ с малым временем выборки, емкость которых составляла от одного до четырех машинных слов. Они играли роль быстрых регистров памяти для промежуточного (временного) хранения чисел, которые использовались наиболее часто на данной стадии вычислений. Уилкинсон писал: "Тьюринг был первым, кто понял, что можно увеличить быстродействие... с помощью небольшого числа запоминающих устройств, обладающих малой емкостью и быстрым доступом" (справедливости ради необходимо напомнить, что быстрые регистры были и в EDSAC).

- ЭВМ, построенные по фон Нейману, выполняли операции централизованно. Тьюринг полагал, что единственное АУ является в ЭВМ "бутылочным горлышком" (bottleneck), ограничивающим быстродействие машины. Поэтому в его проекте предполагалась распределенная обработка информации (distributed processing): машина содержала набор простейших функциональных устройств (сумматоры, вычитатели, блоки выполнения логических операций и т. д.), которые через группу электронных переключателей были связаны с длинными и короткими РУЛЗ. Это позволяло помимо прочего совмещать операции вычисления и ввод-вывод информации с извлечением очередной команды.

- Задолго до кембриджских коллег Тьюринг осознал важность подпрограмм и предложил механизм обращения с ними. В "Предложении..." (1946 г.) говорилось: "Однажды написав [подпрограмму] выполнения некоторой задачи, мы можем использовать ее как вспомогательную [subsidiary] [подпрограмму] при решении любых других задач... Большинство фактических таблиц команд почти полностью состоят из команд инициации вспомогательных операций и пересылки данных... Чтобы начать выполнение вспомогательной подпрограммы, нам необходимо только отметить место [note], где мы покинули [left off] главную программу... Каждая из этих подпрограмм должна оканчиваться командой, определяющей [recovery] упомянутое место".

В качестве метода работы с подпрограммами Тьюринг предложил использовать стековый механизм (совместно с указателем стека). Его идея была использована много позднее в полной версии АСЕ и ЭВМ DEUCE.

- Оптимальное кодирование делало работу программиста сложной и утомительной, и это отлично сознавал Тьюринг, писавший в "Предложении...": "Таблицы команд должны создаваться математиками, имевшими опыт вычислительной работы, и (что весьма допустимо) людьми, способными решать головоломки [puzzle]. Должен быть проделан большой объем работы подобного типа... но на самом деле это не представляет значительную сложность или перспективу возврата к рабскому труду, так как все процессы, которые по сути своей являются почти механическими, могут быть возложены на саму машину...".

(Окончание следует)

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