stringtranslate.com

ЭДСАК

Электронный автоматический вычислитель с задержкой хранения ( EDSAC ) был одним из первых британских компьютеров. [1] Вдохновленная основополагающим Первым черновиком отчета Джона фон Неймана об EDVAC , машина была создана Морисом Уилксом и его командой в Математической лаборатории Кембриджского университета в Англии. EDSAC был вторым электронным цифровым компьютером с хранимой программой после Manchester Mark 1 , который поступил в постоянную эксплуатацию. [2]

Позже проект поддержала компания J. Lyons & Co. Ltd. , намеревавшаяся разработать коммерчески применимый компьютер, что привело к разработке Лайонсом LEO I на основе конструкции EDSAC. Работа над EDSAC началась в 1947 году, [3] и первые программы были запущены 6 мая 1949 года, когда она вычислила таблицу квадратных чисел [4] и список простых чисел . [5] [6] EDSAC был окончательно закрыт 11 июля 1958 года, будучи замененным EDSAC 2 , который оставался в использовании до 1965 года. [7]

Технический обзор

Физические компоненты

9-дюймовые трубки, используемые для мониторинга
Уильям Ренвик с 5-луночным считывателем ленты и телетайпом Creed

Как только EDSAC был введен в эксплуатацию, он начал обслуживать исследовательские нужды университета. Он использовал ртутные линии задержки для памяти и вакуумные лампы с пониженными характеристиками для логики. Потребляемая мощность составляла 11  кВт электроэнергии. [8] [9] Время цикла составляло 1,5 мс для всех обычных инструкций, 6 мс для умножения. Ввод осуществлялся через перфоленту с пятью отверстиями , а вывод — через телетайп .

Первоначально регистры были ограничены аккумулятором и регистром умножителя. В 1953 году Дэвид Уилер , вернувшись из Иллинойсского университета , разработал индексный регистр как расширение оригинального оборудования EDSAC.

В 1952 году был добавлен магнитный ленточный накопитель, но он так и не заработал достаточно хорошо, чтобы быть по-настоящему полезным. [9]

До 1952 года доступная основная память (инструкции и данные) составляла всего 512 18-битных слов, и не было резервного хранилища. [10] Линии задержки (или «резервуары») были организованы в две батареи, обеспечивающие 512 слов каждая. Вторая батарея вступила в строй в 1952 году. [9]

Полная память на 1024 слова с линией задержки появилась только в 1955 или в начале 1956 года [11] , что ограничивало программы примерно 800 словами.

Джон Линдли (дипломант 1958–1959 гг.) упомянул «невероятные трудности, с которыми мы когда-либо сталкивались при изготовлении хотя бы одного правильного куска бумажной ленты с помощью грубых и ненадежных самодельных устройств для перфорации, печати и проверки, доступных в конце 50-х годов» [12] .

Память и инструкции

Морис Уилкс осматривает ртутную линию задержки EDSAC в процессе строительства
Морис Уилкс и Билл Ренвик перед полным EDSAC

Основная память EDSAC состояла из 1024 ячеек, хотя изначально было установлено только 512 ячеек. Каждая содержала 18 бит, но самый верхний бит всегда был недоступен из-за проблем с синхронизацией, поэтому использовались только 17 бит. Инструкция состояла из пятибитного кода инструкции, одного запасного бита, 10-битного операнда (обычно адреса памяти) и одного бита длины для управления тем, использовала ли инструкция 17-битный или 35-битный операнд (два последовательных слова, little-endian ). Все коды инструкций были спроектированы представленными одной мнемонической буквой, так что инструкция Add , например, использовала код символа EDSAC для буквы A.

Внутри EDSAC использовал двоичные числа с дополнением до двух . Числа были длиной либо 17 бит (одно слово), либо 35 бит (два слова). Необычно то, что множитель был разработан для обработки чисел как дробей с фиксированной точкой в ​​диапазоне −1 ≤ x < 1, т. е. двоичная точка находилась сразу справа от знака. Аккумулятор мог хранить 71 бит, включая знак, что позволяло умножать два длинных (35-битных) числа без потери точности.

Имелись следующие инструкции:

Не было инструкции деления (но были предоставлены различные подпрограммы деления) и не было способа напрямую загрузить число в аккумулятор (для этого требовалась инструкция «Сохранить и обнулить аккумулятор», за которой следовала инструкция «Сложить»). Не было инструкции безусловного перехода, не было и инструкции вызова процедуры — она еще не была изобретена.

Морис Уилкс обсуждал относительные режимы адресации для EDSAC в статье, опубликованной в 1953 году. Он вносил предложения по упрощению использования подпрограмм . [13]

Системное программное обеспечение

Первоначальные заказы были жестко зашиты в набор униселекторных переключателей и загружены в нижние слова памяти при запуске. К маю 1949 года первоначальные заказы предоставили примитивный перемещающийся ассемблер , использующий описанную выше мнемоническую конструкцию, всего в 31 слове. Это был первый в мире ассемблер и, возможно, начало глобальной индустрии программного обеспечения. Доступна симуляция EDSAC и полное описание первоначальных заказов и первых программ. [14]

Первым вычислением, выполненным EDSAC, была программа, запущенная 6 мая 1949 года для вычисления квадратных чисел . [15] Программа была написана Беатрис Уорсли , которая приехала из Канады, чтобы изучить машину. [16] [15]

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

Пользователи готовили свои программы, набирая их (на ассемблере) на бумажную ленту. Вскоре они научились держать бумажную ленту на свету и считывать коды. Когда программа была готова, ее вешали на отрезок линии, натянутый около считывателя бумажной ленты. Операторы машин, которые присутствовали в течение дня, выбирали следующую ленту из линии и загружали ее в EDSAC. Конечно, сегодня это хорошо известно как очереди заданий. Если программа что-то печатала, то лента и распечатка возвращались пользователю, в противном случае ему сообщалось, в какой ячейке памяти она остановилась. Отладчики были некоторое время вдали, но экран электронно-лучевой трубки можно было настроить на отображение содержимого определенной части памяти. Это использовалось, например, для того, чтобы увидеть, сходится ли число. Громкоговоритель подключался к знаковому биту аккумулятора; опытные пользователи знали полезные и нездоровые звуки программ, особенно программ, «зависших» в цикле.

После окончания рабочего дня определенным «авторизированным пользователям» разрешалось управлять машиной самостоятельно, что продолжалось до поздней ночи, пока не лопался клапан — что обычно случалось, по словам одного из таких пользователей. [17] На это намекает Фред Хойл в своем романе «Черное облако» .

Методика программирования

Пульт мониторинга EDSAC [18]

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

Дэвид Уилер , который получил первую в мире степень доктора компьютерных наук, работая над проектом, считается изобретателем концепции подпрограммы. Пользователи писали программы, которые вызывали подпрограмму, переходя к началу подпрограммы с адресом возврата (т. е. местоположением плюс один самого перехода) в аккумуляторе ( переход Уиллера ). По соглашению подпрограмма ожидала этого, и первое, что она делала, — изменяла свою заключительную инструкцию перехода на этот адрес возврата. Можно было вызывать множественные и вложенные подпрограммы, пока пользователь знал длину каждой из них, чтобы вычислить местоположение для перехода; рекурсивные вызовы были запрещены. Затем пользователь копировал код для подпрограммы с мастер-ленты на свою собственную ленту после окончания своей собственной программы. (Однако Алан Тьюринг обсуждал подпрограммы в статье 1945 года о предложениях по проектированию NPL ACE , зайдя так далеко, что изобрел концепцию стека обратного адреса, который допускал рекурсию. [19] )

Отсутствие индексного регистра также создавало проблему для автора подпрограммы, поскольку они не могли заранее знать, куда в памяти будет загружена подпрограмма, и, следовательно, они не могли знать, как обращаться к любым областям кода, которые использовались для хранения данных (так называемые «псевдозаказы»). Это было решено с помощью начальной входной процедуры, которая отвечала за загрузку подпрограмм с перфоленты в память. При загрузке подпрограммы она отмечала начальное местоположение и увеличивала внутренние ссылки памяти по мере необходимости. Таким образом, как писал Уилкс, «код, используемый для представления заказов вне машины, отличается от того, который используется внутри, причем различия диктуются различными требованиями программиста, с одной стороны, и цепей управления машины, с другой». [20]

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

Прикладное программное обеспечение

Концепция подпрограмм привела к появлению существенной библиотеки подпрограмм. К 1951 году для общего пользования было доступно 87 подпрограмм в следующих категориях: арифметика с плавающей точкой ; арифметические операции над комплексными числами ; проверка; деление; возведение в степень ; процедуры, связанные с функциями; дифференциальные уравнения ; специальные функции; степенные ряды ; логарифмы ; разное; печать и макет; квадратура ; чтение (ввод); корень n-й степени; тригонометрические функции ; операции подсчета (симуляция циклов repeat until , while и for ); векторы ; и матрицы .

Первый язык ассемблера появился для EDSAC и вдохновил на создание нескольких других языков ассемблера:

Применение EDSAC

EDSAC был разработан специально для того, чтобы стать частью службы поддержки вычислений Математической лаборатории. [22] Первая научная работа, опубликованная с использованием компьютера для вычислений, была написана Рональдом Фишером . [ требуется ссылка ] Уилкс и Уиллер использовали EDSAC для решения дифференциального уравнения, касающегося частот генов. [23] В 1951 году Миллер и Уиллер использовали машину для открытия 79-значного простого числа [24]  — самого большого известного на тот момент.

Лауреаты трех Нобелевских премий – Джон Кендрю и Макс Перуц (химия, 1962), Эндрю Хаксли (медицина, 1963) и Мартин Райл (физика, 1974) – воспользовались революционной вычислительной мощностью EDSAC. В своих речах на вручении наград каждый из них признал роль, которую EDSAC сыграл в их исследованиях.

В начале 1960-х годов Питер Суиннертон-Дайер использовал компьютер EDSAC для вычисления количества точек по модулю p (обозначаемого как N p ) для большого количества простых чисел p на эллиптических кривых, ранг которых был известен. Основываясь на этих численных результатах, Бирч и Суиннертон-Дайер (1965) предположили, что N p для кривой E с рангом r подчиняется асимптотическому закону, гипотезе Бирча и Суиннертона-Дайера , считающейся одной из главных нерешенных проблем в математике по состоянию на 2024 год.

"Мозг" [компьютер] может однажды спуститься до нашего уровня [простых людей] и помочь нам с нашими расчетами подоходного налога и бухгалтерского учета. Но это лишь домыслы, и пока никаких признаков этого нет.

—  Британская газета The Star в статье за ​​июнь 1949 года о компьютере EDSAC, задолго до эры персональных компьютеров. [25]

Игры

В 1952 году Сэнди Дуглас разработал OXO , версию крестиков-ноликов (крестики-нолики) для EDSAC, с графическим выводом на 6-дюймовую электронно-лучевую трубку VCR97 . Это вполне могла быть первая в мире видеоигра . [26] [27]

Другая видеоигра была создана Стэнли Гиллом и включала в себя точку (названную овцой), приближающуюся к линии, в которой можно было открыть одни из двух ворот. [28] Игра Стэнли Гилла управлялась с помощью светового луча считывателя бумажной ленты EDSAC. [28] Прерывание его (например, когда игрок помещал в него руку) открывало верхние ворота. [28] Если оставить луч непрерванным, открывались нижние ворота. [28]

Дальнейшее развитие событий

Преемник EDSAC, EDSAC 2 , был введен в эксплуатацию в 1958 году.

В 1961 году Дэвид Хартли разработал версию Autocode для EDSAC 2 — языка программирования высокого уровня для ученых и инженеров, похожего на ALGOL .

В середине 1960-х годов планировалось создание преемника EDSAC 2, но вместо этого был сделан шаг в сторону Titan , прототипа Atlas 2, разработанного на основе компьютера Atlas Манчестерского университета , Ферранти и Плесси .

Проект реплики EDSAC

Реплика EDSAC в октябре 2018 г.

13 января 2011 года Общество сохранения компьютеров объявило, что планирует построить рабочую копию EDSAC в Национальном музее вычислительной техники (TNMoC) в Блетчли-парке под руководством Эндрю Герберта , который учился у Мориса Уилкса. [29] Первые части копии были включены в ноябре 2014 года. [30] [31] Логические схемы EDSAC были тщательно реконструированы с помощью разработки симулятора и повторного изучения некоторых заново открытых оригинальных схем. Эта документация была выпущена по лицензии Creative Commons. [32] Текущий проект открыт для посетителей музея. В 2016 году два оригинальных оператора EDSAC, Маргарет Маррс и Джойс Уилер, посетили музей, чтобы помочь проекту. [33] По состоянию на ноябрь 2016 года ввод в эксплуатацию полностью завершенной и работоспособной копии предполагался осенью 2017 года. [34] Однако непредвиденные задержки проекта привели к тому, что дата завершения и полной работоспособности машины неизвестна.

Смотрите также

Ссылки

  1. ^ Wilkes, WV ; Renwick, W. (1950). "EDSAC (Электронный автоматический калькулятор с задержкой хранения)". Math. Comp . 4 (30): 61–65. doi : 10.1090/s0025-5718-1950-0037589-7 .
  2. ^ Компьютер Manchester Baby 1948 года предшествовал EDSAC как компьютер с хранимой программой , но был построен в основном как испытательный стенд для трубки Уильямса , а не как машина для общего пользования. См. «Краткая неформальная история компьютерной лаборатории». Тем не менее, Baby был разработан в практически полезного преемника, Manchester Mark 1 1949 года, который был доступен для общего пользования другими университетскими факультетами и Ferranti в апреле 1949 года, несмотря на то, что все еще находился в стадии разработки; EDSAC впервые был запущен в мае 1949 года, также все еще находясь в стадии разработки. «50-я годовщина компьютера Manchester Baby». Архивировано из оригинала 9 февраля 2014 года . Получено 5 января 2014 года .
  3. ^ Уилкс, М. В. (1997). «Арифметика на EDSAC». Annals of the History of Comp . 19 (1): 13–15. doi :10.1109/85.560726.
  4. ^ "Компьютер Pioneer будет перестроен". Cam . 62 : 5. 2011.Если быть точным, первая программа EDSAC выводила список квадратов целых чисел от 0 до 99 включительно.
  5. ^ Джонс, Клифф Б.; Ллойд, Джон Л. (24 января 2012 г.). Надежные и исторические вычисления: эссе, посвященные Брайану Рэнделлу по случаю его 75-летия. Springer. стр. 29. ISBN 9783642245411.
  6. ^ "9. EDSAC, Кембриджский университет, Англия". Digital Computer Newsletter . 2 (1). Другие ранние вычислительные задачи выполняются на EDSAC; некоторые характеристики компьютера: 3. 1 января 1950 г. Архивировано из оригинала 11 марта 2021 г.{{cite journal}}: CS1 maint: others (link)
  7. EDSAC 99: 15–16 апреля 1999 г. (PDF) , Компьютерная лаборатория Кембриджского университета, 6 мая 1999 г., стр. 68, 69 , получено 29 июня 2013 г..
  8. ^ "EDSAC Simulator". YouTube . Computerphile. 21 февраля 2018 г.
  9. ^ abc "Некоторые статистические данные EDSAC". Великобритания: Компьютерная лаборатория Кембриджского университета .
  10. ^ "Приложения EDSAC 1". EDSAC 1 и последующие годы — сборник личных воспоминаний . Великобритания: Компьютерная лаборатория Кембриджского университета .
  11. ^ "EDSAC 1 maintenance". EDSAC 1 и последующие версии — сборник личных воспоминаний . Великобритания: Компьютерная лаборатория Кембриджского университета .
  12. ^ "EDSAC 1 работает". EDSAC 1 и позже — сборник личных воспоминаний . Великобритания: Компьютерная лаборатория Кембриджского университета .
  13. Труды Кембриджского философского общества, т. 49, ч. 1, стр. 84–89.
  14. ^ "Edsac Simulator". dcs.warwick.ac.uk . Великобритания: Университет Уорика . Получено 24 мая 2023 г. .
  15. ^ ab "EDSAC выполнил свои первые вычисления". История вычислений . Архивировано из оригинала 26 февраля 2021 г. Получено 23 ноября 2018 г.
  16. Рэймонд, Катрин (25 октября 2017 г.). «Беатрис Уорсли». Канадская энциклопедия . Архивировано из оригинала 13 января 2018 г. Получено 23 ноября 2018 г.
  17. Профессор Дэвид Баррон, почетный профессор Университета Саутгемптона, на семинаре в Кембриджской компьютерной лаборатории, посвященном 60-летию 6 мая 2009 г.
  18. ^ Описание трех дисплеев (счетчик, память и управление последовательностью): "Два новых видео EDSAC: экраны VDU EDSAC". Национальный музей вычислительной техники . 11 декабря 2015 г.
  19. Turing 1945, перепечатано в Copeland (2005), стр. 383.
  20. ^ Уилкс, М. В. (1956). Автоматические цифровые вычислительные машины . Лондон: Метуэн. С. 93–95.
  21. ^ Уилкс, М. В. (1956). Автоматические цифровые вычислительные машины . Лондон: Метуэн. С. 108–109.
  22. ^ Годдард, Джонатан (3 мая 2019 г.), 70 лет с момента создания первого компьютера, предназначенного для практического повседневного использования, Кафедра компьютерных наук и технологий, Кембриджский университет
  23. ^ Частоты генов в клине, определяемые отбором и диффузией, RA Fisher, Biometrics , Vol. 6, No. 4 (декабрь 1950 г.), стр. 353–361.
  24. ^ Колдуэлл – самые большие известные простые числа по годам. Одна ссылка дает Miller, JCP "Larger Prime Numbers" (1951) Nature 168(4280):838, но в аннотации это не упоминается.
  25. ^ "Архивная копия" (PDF) . dcs.warwick.ac.uk . Великобритания: Университет Уорика . Архивировано из оригинала (PDF) 22 декабря 2015 года . Получено 18 ноября 2016 года .{{cite web}}: CS1 maint: archived copy as title (link)
  26. ^ Cohen, DS (20 сентября 2014 г.). «OXO aka Noughts and Crosses – The First Video Game». About.com . IAC . Архивировано из оригинала 22 декабря 2015 г. . Получено 18 декабря 2015 г. .
  27. ^ Вольф, Марк Дж. П. (16 августа 2012 г.). Энциклопедия видеоигр: культура, технология и искусство игр . Greenwood Publishing Group . стр. 3–7. ISBN 978-0-313-37936-9.
  28. ^ abcd Смит, Элви Рэй (9 июня 2015 г.). «Рассвет цифрового света». IEEE Annals of the History of Computing . 38 (4): 74–91. doi :10.1109/MAHC.2015.51. S2CID  10257358.
  29. ^ Уорд, Марк (13 января 2011 г.). «В Блетчли-парке будет построен пионерский компьютер Edsac». BBC News . Получено 13 января 2011 г.
  30. Музей включает исторический компьютер.
  31. ^ Хартли, Дэвид; Герберт, Эндрю (2013). «Проект EDSAC Replica». Создание истории вычислений как актуальной . Достижения IFIP в области информационных и коммуникационных технологий. Том 416. 9 Текущее состояние , стр. 307–308. doi :10.1007/978-3-642-41650-7_27. ISBN 978-3-642-41649-1.
  32. ^ "EDSAC Logic Rebuild Sub-project". www.billp.org . Получено 24 августа 2023 г. .
  33. ^ "Внутри проекта по восстановлению EDSAC, одного из первых в мире компьютеров общего назначения". ZDNet . Получено 24 мая 2020 г. .
  34. Палмер, Дэнни (24 ноября 2016 г.). «Внутри проекта по восстановлению EDSAC, одного из первых в мире компьютеров общего назначения». ZDNet . Получено 1 декабря 2016 г.

Дальнейшее чтение

Внешние ссылки