Выбрать главу

По окончании университета он был назначен на младшую должность — демонстратора, что соответствует должности ассистента профессора в США, в открытую Математическую лабораторию. В его обязанности входило: контроль за разработкой нового дифференциального анализатора и консультации в Манчестерском университете по дальнейшим разработкам в этой области.

В годы Второй мировой войны, с 1939 по 1945 год, он находился в составе действующей армии союзников.

По возвращению в Кембридж в сентябре 1945 года он назначается директором Математической лаборатории (позже Компьютерной лаборатории), в которой Уилкс и проработал до 1980 года.

В мае 1946 года была получена копия неймановского отчета относительно компьютера EDVAC и Уилксу представилась возможность за одну ночь прочитать и понять документ, который описывал концепцию записи и хранения программы в компьютере. Он понял сразу, что это реально, и с этого момента никогда не сомневался, что развитие компьютеров пойдет именно таким путем.

После прочтения отчета Уилкс принял приглашение посетить лекции по "Теории и методам конструирования электронных цифровых компьютеров", проводимых в школе Мура Пенсильванского университета с 8 июля по 31 августа 1946 года. Уилкс ухватился за предоставленный шанс посетить эти лекции, хотя и опоздал к их началу, но все же успел к моменту детального описания ENIAC и обсуждения принципов создания EDVAC. Вот что пишет сам Морис Уилкс: "Самое важное событие в моей жизни произошло в 1946 году… Мне удалось прослушать учебный курс по компьютерам, и он произвел на меня сильнейшее впечатление. Ничего подобного никогда раньше не было, а о достижениях школы Мура и других зачинателей компьютерной техники тогда знали лишь немногие. Курс слушали 28 человек из 20 организаций. В роли основных преподавателей выступали Джон Ма- учли и Преспер Эккерт. Они находились на гребне успеха, создав первый электронный компьютер ENIAC и принципы конструирования EDVAC… Последующие события убедительно подтвердили принципы, которым Эккерт и Маучли научили в 1946 году тех из нас, кому посчастливилось прослушать этот курс".

После возвращения Уилкса в Кембридж был составлен проект создания компьютера с хранимой программой, который предстояло осуществить силами Математической лаборатории. Лаборатория имела достаточные средства, чтобы начать реализацию проекта, и следующие три года были потрачены на конструирование EDSAC (Electronic Delay Storage Automatic Calculator — электронный автоматический калькулятор с памятью на линиях задержки), который заработал 9 мая 1949 года.

Компьютер EDCAS

В сущности, машина EDSAC была прямой копией проекта EDYAC, но в части, касающейся вопросов программирования EDSAC, Морис Уилкс явился в некотором роде первооткрывателем. Устав кодировать каждую команду с помощью двоичных цифр ("единиц" и "нулей"), он занялся поисками более удобного способа общения с машиной. Первым результатом этих усилий явились новые коды, составленные из букв и коротких слов, взятых из английского языка. Он ввел мнемонику, где каждая команда изображалась одной заглавной буквой: S обозначала "вычитание", Т — "передать информацию в память", Z — "остановка машины" и т. д.

Но, пожалуй, более ценным новшеством, чем мнемоника, введенная на EDSAC, явилась библиотека подпрограмм. Надо сказать, что программисты уже были знакомы с понятием подпрограммы. Грейс Хоппер и ее коллеги применяли подпрограммы на гарвардской машине Говарда Айкена. Они имели блокноты с записью наиболее употребляемых подпрограмм, чтобы в случае необходимости не составлять их заново.

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

Морис Уилкс назвал мнемоническую схему для EDSAC и библиотеку подпрограмм собирающей системой (по-английски assembly system — отсюда слово "ассемблер"), поскольку она собирала последовательности подпрограмм.

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

Компьютер EDS АС успешно использовался в расчетах по правительственному проекту ядерных исследований, проводимых в Кембридже.

В начале 50-х годов группа разработчиков, возглавляемая Уилксом, приступила к созданию второй версии компьютера EDSAC — EDSAC–II, который был введен в эксплуатацию в 1958 году.

При конструировании машины EDSAC–II были впервые воплощены идеи Мориса Уилкса по построению систем управления — идеи микропрограммирования. Известно, что один из важнейших вопросов, который приходится решать при конструировании компьютера, заключается в том, как управлять в компьютере потоками электрических сигналов, переносящих информацию. В настоящее время существуют, в принципе, два метода построения систем или устройств управления. Один из методов построения системы управления состоит в том, что ей придают "жесткую", т. е. неизменяемую, схему внутренних соединений и в таком виде присоединяют к другим электрическим цепям процессора. Другой подход, позволяющий получить более гибкую, более простую, а в ряде случаев и более дешевую систему управления, сводится к тому, что систему управления заменяют программой, содержащей подробные инструкции по управлению машиной в кодированной форме. Такую программу помещают в отдельный блок памяти, который вводят в состав процессора.

Этот подход реализации функций управления Морис Уилкс начал разрабатывать еще в 1949 году. После двух лет исследований он пришел к выводу, что наилучший подход к конструированию системы управления состоит в том, чтобы рассматривать ее как матрицу, или прямоугольную таблицу, в которой каждый горизонтальный ряд клеток соответствует одному такту, а каждый вертикальный столбец — одной из линий передачи управляющих сигналов. При таком подходе выбор последовательности операций упрощается и сводится к тому, что в клетках каждого горизонтального ряда должны быть проставлены двоичные символы, которые образовали бы нужную комбинацию: для каждой управляющей линии, которая во время данного такта должна быть включена, следует в соответствующей клетке проставить единицу, а в клетках тех линий, которые должны быть отключены, записать нули.

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