Литмир - Электронная Библиотека
Содержание  
A
A

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

Архитекторы компьютерного мира - nonjpegpng_image35.jpg

Компьютер EDCAS

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

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

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

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

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

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

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

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

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

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

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

Свои идеи по микропрограммированию Морис Уилкс представил в докладе "Наилучший метод конструирования автоматической вычислительной машины" на конференции в Манчестерском университете, состоявшейся в июле 1951 года. Предложенный им метод стал основой техники микропрограммирования, которой предстояло стать популярной двумя десятилетиями позже, в начале 70-х годов.

В том же, 1951 году, Уилкс опубликовал еще одну работу. Совместно с двумя коллегами, Дэвидом Уиллером и Стенли Гиллом, он написал первый учебник по программированию.

К 60-м годам, после EDSAC–II, стало ясно, по какому направлению пойдет развитие компьютеров. Как писал в эти годы Уилкс, "первые компьютеры в известном смысле были вещью для программиста", и довольно скоро стала очевидна неэффективность такого использования дорогого и дефицитного оборудования. На смену однопрограммному режиму работы пришли многопрограммный режим и режим разделения времени. "Оно не было следствием открытия какого-либо нового принципа, просто стало ясно, что существующие технические средства можно использовать гораздо лучше, чем до сих пор," — писал М. Уилкс. В США, Англии и СССР развернулись работы по созданию систем с разделением времени, и первая CTSS была разработана Ф. Корбато и Р. Фано в 1963 году в Массачусетском технологическом институте. Затем в Англии в середине 60-х годов ученые Кембриджа в сотрудничестве с фирмой Ferranti Ltd под руководством Мориса Уилкса создали систему с разделением времени Titan.

27
{"b":"252558","o":1}