Морис Уилкс и Том Килбурн Создатели первых компьютеров с хранимой программой
Морис Уилкс и Том Килбурн
Создатели первых компьютеров с хранимой программой
EDSAC, как и EDVAC, является последовательной машиной, работающей в двоичной системе и имеющей ультразвуковую память. Она отличается от EDVAC тем, что использует одноадресную систему команд.
Морис Уилкс
…наиболее захватывающим временем был июнь 1948, когда заработала первая машина. Ничто не могло когда-либо сравниться с этим.
Том Килбурн
Морис Уилкс
Несмотря на то, что концепцию хранимой в памяти компьютера программы выдвинул в январе 1944 года Джон Эккерт и в том же году он вместе с Джоном Маучли начали работу по созданию EDVAC (компьютера с хранимой программой), все же первые машины с хранимой программой заработали в Англии, в Кембриджском и Манчестерском университетах.
Морис Уилкс, профессор Кембриджа, который прослушал курс лекций по машине EDVAC в школе Мура, возвратился в Англию для того, чтобы начать разработку компьютера EDSAC. Было это в ноябре 1946 года и закончил ее в 1949 году, на два года раньше, чем в США был запущен EDVAC.
А в Манчестерском университете Том Килбурн вместе с Джеффри Тутиллом создает компьютер с хранимой программой под названием Small-Scale- Experimental-Machine, или сокращенно Baby, еще раньше — в июне 1948 года.
Но не только созданием компьютеров с хранимой программой эти два корифея компьютерной науки прославили свои имена, в дальнейшем они выдвинули ряд идей и принципов, которые с успехом применяются в наше время.
Морис Винсент Уилкс родился 26 июля 1913 года в Дадли в графстве Стаффордшир (Англия). С 1931 года учился в Кембриджском колледже Святого Джона, который закончил в 1934 году. Затем его учеба продолжилась в Кембриджском университете до его окончания в 1937 году. В 1936 году он получил звание доктора философии за работу, посвященную распространению очень длинных радиоволн в ионосфере.
По окончании университета он был назначен на младшую должность — демонстратора, что соответствует должности ассистента профессора в США, в открытую Математическую лабораторию. В его обязанности входило: контроль за разработкой нового дифференциального анализатора и консультации в Манчестерском университете по дальнейшим разработкам в этой области.
В годы Второй мировой войны, с 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 году. После двух лет исследований он пришел к выводу, что наилучший подход к конструированию системы управления состоит в том, чтобы рассматривать ее как матрицу, или прямоугольную таблицу, в которой каждый горизонтальный ряд клеток соответствует одному такту, а каждый вертикальный столбец — одной из линий передачи управляющих сигналов. При таком подходе выбор последовательности операций упрощается и сводится к тому, что в клетках каждого горизонтального ряда должны быть проставлены двоичные символы, которые образовали бы нужную комбинацию: для каждой управляющей линии, которая во время данного такта должна быть включена, следует в соответствующей клетке проставить единицу, а в клетках тех линий, которые должны быть отключены, записать нули.
Аппарат, эквивалентный управляющей матрице, представляет собой простое запоминающее устройство, построенное из повторяющихся элементов. Содержимое каждой ячейки в ряду определяет состояние соответствующей линии управления в течение одного такта. Набор двоичных цифр, образующий одну макроинструкцию, служит теперь просто для того, чтобы выбрать подходящий ряд или последовательность рядов в управляющей памяти. Иными словами, макроинструкция становится адресом, обозначающим ряд. Ввиду этого построение системы управления из задачи конструирования электронного устройства превращается в задачу разработки программного обеспечения. Сложность ее состоит теперь не в том, чтобы подобрать правильную комбинацию схем с жесткими связями для генерации управляющих сигналов, а в том, чтобы правильно определить комбинации единиц и нулей, которые нужно записать в управляющую память.
Уилкс провел аналогию между этим подходом и обычным программированием и для описания своих идей заимствовал термины из области программирования, прибавив к ним в каждом случае приставку "микро", указывающую на элементарность операций управления. Так появился термин "микропрограммирование" и целое семейство родственных ему. В частности, каждый ряд клеток в управляющей матрице Уилкс назвал микроинструкцией, а каждую последовательность рядов, выполняющих одну макроинструкцию, — микропрограммой. Запоминающее устройство для хранения микропрограмм ученый предложил называть микропрограммной памятью. Принцип микропрограммирования облегчил понимание функций управления, а благодаря тому, что сложные схемы управления оказались замененными матрицей из повторяющихся запоминающих ячеек, упростилось построение аппаратуры. Еще важнее то, что этот принцип позволил придать машине дополнительную гибкость: стало возможным изменять систему управления, не конструируя заново аппаратную часть.
Свои идеи по микропрограммированию Морис Уилкс представил в докладе "Наилучший метод конструирования автоматической вычислительной машины" на конференции в Манчестерском университете, состоявшейся в июле 1951 года. Предложенный им метод стал основой техники микропрограммирования, которой предстояло стать популярной двумя десятилетиями позже, в начале 70-х годов.
В том же, 1951 году, Уилкс опубликовал еще одну работу. Совместно с двумя коллегами, Дэвидом Уиллером и Стенли Гиллом, он написал первый учебник по программированию.
К 60-м годам, после EDSAC–II, стало ясно, по какому направлению пойдет развитие компьютеров. Как писал в эти годы Уилкс, "первые компьютеры в известном смысле были вещью для программиста", и довольно скоро стала очевидна неэффективность такого использования дорогого и дефицитного оборудования. На смену однопрограммному режиму работы пришли многопрограммный режим и режим разделения времени. "Оно не было следствием открытия какого-либо нового принципа, просто стало ясно, что существующие технические средства можно использовать гораздо лучше, чем до сих пор," — писал М. Уилкс. В США, Англии и СССР развернулись работы по созданию систем с разделением времени, и первая CTSS была разработана Ф. Корбато и Р. Фано в 1963 году в Массачусетском технологическом институте. Затем в Англии в середине 60-х годов ученые Кембриджа в сотрудничестве с фирмой Ferranti Ltd под руководством Мориса Уилкса создали систему с разделением времени Titan.
С 1965 года Уилкс, будучи профессором Компьютерных технологий, вместе с Чарльзом Лангом участвовал в создании системы автоматизированного проектирования на основе миникомпьютеров PDP-7 компании DEC. Эта система совершенствовалась в течение 15 лет.
В 1974 году Морис Уилкс включился в работу по созданию корпоративной сети Кембриджского университета, так называемое "кольцо Кембриджа", с использованием сравнительно недорогих рабочих станций.
Выйдя в отставку и покинув Кембридж в 1980 году, он стал штатным консультантом компании DEC, а затем членом ученого совета по планированию научных исследований организации Olivetti Research Board. По возвращении в Кембридж он становится Заслуженным профессором в отставке, а в 1993 году ему была присвоена степень Почетного доктора наук.
Морис Уилкс был первым президентом Британского компьютерного общества, членом Королевского общества, иностранным членом многих академий — Испании, Америки, Еермании и др. В 1967 году он получил Тьюринговскую премию как первооткрыватель в таких областях, как компьютеры с хранимой программой, библиотеки подпрограмм и микропрограммирование.
Том Килбурн
Дальнейшее наше повествование посвящено другому первооткрывателю — Тому Килбурну, скромному профессору из Манчестера.
Он родился в 1921 году в Дьюсбери, в графстве Йоркшир (Англия). Закончив школу, Килбурн поступил в Кембриджский университет, где его страстью стала математика. По окончании университета он получил степень бакалавра наук, а затем магистра наук.
В 1942–1946 годах Том Килбурн проводил исследования в области электричества, магнетизма и электроники в City & Guilds в Лондоне, а затем работал в Научно-исследовательском институте дальней связи. Здесь состоялась его встреча с новым боссом, а затем коллегой Фредериком Уильямсом. Том Килбурн быстро произвел на всех впечатление как человек с острым мышлением и технически грамотный специалист в области электронной схемотехники и как член группы Уильямса сделал много усовершенствований в электронных схемах радара.
Значительной разработкой группы Уильямса было использование электронно-лучевой трубки (ЭЛТ) для хранения битов данных. Так называемая трубка Уильямса записывала на люминофорном покрытии экрана точки и тире, которые представляли соответственно 0 и 1 двоичных данных. Поместив в металлическую пластину на экран трубки, можно было получить емкостную связь, а затем для считывания этих точек и тире использовать развертку электронным лучом. Применение трубок Уильямса позволяло осуществлять произвольную выборку хранимой информации (первые ЗУПВ) вместо последовательной выборки при использовании ртутных линий задержки.
Фредерик Уильямс
В декабре 1946 года Фредерик Уильямс и Том Кил- бурн перешли в Манчестерский университет для того, чтобы усовершенствовать конструкцию запоминающей трубки и в то же время начать разработку того, что впоследствии стало первым компьютером с хранимой программой.
Том Килбурн познакомился с разрабатываемыми в США компьютерами еще в 1945 году, а затем более детально изучил их в начале 1947 года, когда посещал лекции Алана Тьюринга в Национальной Физической Лаборатории (НФЛ). Известно, что в это время Тьюринг и его коллеги из НФЛ разрабатывали компьютер и подробности его создания излагались на лекциях Тьюринга.
Подготовив таким образом плацдарм, Килбурн вместе с Джеффри Тутиллом возглавил разработку компьютера Baby (Small-Scale-Experimental-Machine) с памятью на трубке Уильямса объемом 1024 бита. 21 июня 1948 года Том Килбурн просчитал первую программу на компьютере Baby. Программа по определению максимального множителя числа была реализована компьютером за 52 минуты.
Новость о появлении Baby была подхвачена журналистами: "Чудо нашего времени…", "Запоминающая машина, способная решать сложнейшие математические задачи"… — гласили заголовки газет. Изобретатели были завалены письмами от ученых-биофизиков, физиков-ядерщиков, метеорологов с просьбами произвести расчеты, но создатели компьютера были заинтересованы в заказах на разработку новых машин.
В дальнейшем Baby был доработан и стал называться "манчестерский Mark-1" (чтобы не путали с "Марк-I" Говарда Айкена). В 1951 году фирма Ferranti Ltd поставила на рынок одну из первых в мире коммерческих машин, которая называлась Ferranti Mark 1.
В начале 50-х годов Том Килбурн работал в Манчестерском университете в качестве лектора электротехнической кафедры, а затем приступил к своей уникальной разработке — машине Atlas.
Компьютер Baby
Машина Atlas — первая компьютерная система, в которой были реализованы многие устройства и принципы, в настоящее время признанные стандартными, в том числе виртуальное (логическое) пространство адресов, превышающее по объему фактическое (физическое) адресное пространство, одноуровневая память на магнитных сердечниках с дублирующим ее магнитным барабаном, а также архитектура, основанная на использовании операционной системы с аппаратными средствами для облегчения программирования (например, с экстракодами).
Работы по созданию этой машины начались в 1956 году под руководством Тома Килбурна в Манчестерском университете. С 1958 года проект Atlas финансировался фирмой Ferranti Ltd. Опытный образец машины был испытан в 1961 году, а первые промышленные образцы машины появились на рынке в 1963 году.
Особо необходимо подчеркнуть, что впервые Килбурном при создании машины Atlas была реализована концепция виртуальной памяти, из которой возник метод разделения памяти на страницы и стала возможной динамическая трансляция адресов аппаратными средствами.
Машина Atlas имела высокую производительность — около 900 тыс. оп/с, которая была достигнута за счет совершенствования принципов многопрограммной работы и применения высококачественных транзисторов.
Некоторые ученые считают Тома Килбурна и его коллег-разработчиков машины Atlas родоначальниками современных операционных систем (ОС), которые определили функции ОС и то значение, которое они приобретут в компьютерах следующих десятилетий.
После завершения работ по Atlas в 1964 году Килбурн возглавил первую на Британских островах кафедру информатики (Computer Science), образованную в Манчестерском университете. Получив степень доктора наук в 1953 году за исследования в области компьютерной техники, Том Килбурн работал в Манчестерском университете вплоть до выхода в отставку в 1981 году. За заслуги перед страной в 1973 году ему было присвоено звание капитана II ранга.
В июне 1998 года в Манчестерском университете торжественно отмечался пятидесятилетний юбилей первого компьютера с хранимой программой. В честь этой годовщины группа инженеров решила собрать точную копию Baby. Несколько месяцев подряд энтузиасты разыскивали старые электронные лампы и даже нашли металлические стойки Baby — они служили изгородью на каком-то приусадебном участке. А компания ICL PLC пригласила программистов-энтузиастов со всего света принять участие в конкурсе на создание приложений для воссозданного компьютера. Вспомнили и о Томе Килбурне, которого попросили возглавить жюри данного конкурса. Скромный профессор из Манчестера, которому в дни юбилея исполнилось 77 лет, жил в стандартном английском домике, где "самыми большими чудесами цивилизации являлись посудомоечная машина, телевизор и автомобиль".
На вопрос вездесущих журналистов по поводу дня сегодняшнего компьютерной индустрии и коммуникаций Том Килбурн сказал: "Деньги не имели никакого отношения к нашей работе. Нас интересовала только наука, а Гейтс живет уже в другом мире".
В конце января 2001 года во многих зарубежных периодических изданиях появилось сообщение: "Том Килбурн, пионер компьютеризации и участник создания первого в мире компьютера с хранимой программой, скончался на прошлой неделе в возрасте 79 лет после продолжительной болезни".