stringtranslate.com

ЭДСАК

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

Позже проект был поддержан компанией J. Lyons & Co. Ltd. , намеревавшейся разработать коммерчески прикладной компьютер и преуспевшей в разработке компанией Lyons 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 году, но никогда не работал достаточно хорошо, чтобы его можно было использовать в реальной жизни. [10]

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

Полное хранилище линии задержки на 1024 слова не было доступно до 1955 или начала 1956 года, [12] до этого момента программы ограничивались примерно 800 словами.

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

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

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

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

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

Доступные инструкции были:

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

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

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

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

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

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

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

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

Техника программирования

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

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

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

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

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

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

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

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

Приложения EDSAC

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

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

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

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

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

Игры

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

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

Дальнейшие разработки

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

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

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

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

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

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

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

Рекомендации

  1. ^ Уилкс, Западная Вирджиния ; Ренвик, В. (1950). «EDSAC (Автоматический калькулятор с электронным запоминающим устройством)». Математика. Комп . 4 (30): 61–65. дои : 10.1090/s0025-5718-1950-0037589-7 .
  2. ^ Компьютер Manchester Baby 1948 года выпуска предшествовал EDSAC как компьютер с хранимой программой , но был построен в основном как испытательный стенд для трубки Уильямса , а не как машина для общего использования. См. «Краткая неофициальная история Компьютерной лаборатории». Тем не менее, Baby превратился в практически полезного преемника Manchester Mark 1 1949 года, который был доступен для общего использования другими факультетами университета и Ферранти в апреле 1949 года, несмотря на то, что все еще находился в стадии разработки; EDSAC впервые был запущен в мае 1949 года и все еще находился в стадии разработки. «50 лет компьютеру Manchester Baby». Архивировано из оригинала 9 февраля 2014 года . Проверено 5 января 2014 г.
  3. ^ Уилкс, М.В. (1997). «Арифметика на EDSAC». Анналы истории комп . 19 (1): 13–15. дои : 10.1109/85.560726.
  4. ^ «Компьютер Pioneer подлежит восстановлению» . Кэм . 62 :5. 2011.Если быть точным, первая программа EDSAC печатала список квадратов целых чисел от 0 до 99 включительно.
  5. ^ Джонс, Клифф Б.; Ллойд, Джон Л. (24 января 2012 г.). Надежные и исторические вычисления: очерки, посвященные Брайану Рэнделлу по случаю его 75-летия. Спрингер. п. 29. ISBN 9783642245411.
  6. ^ Другие ранние вычислительные задачи выполняются на EDSAC; некоторые характеристики компьютера. «9. EDSAC, Кембриджский университет, Англия». Информационный бюллетень о цифровых компьютерах . 2 (1): 3. 1 января 1950 г. Архивировано из оригинала 11 марта 2021 г.{{cite journal}}: CS1 maint: другие ( ссылка )
  7. ^ EDSAC 99: 15–16 апреля 1999 г. (PDF) , Компьютерная лаборатория Кембриджского университета, 6 мая 1999 г., стр. 68, 69 , получено 29 июня 2013 г..
  8. ^ Симулятор EDSAC. Компьютерфил.
  9. ^ Некоторая статистика EDSAC. Кембриджский университет.
  10. ^ ab Некоторая статистика EDSAC.
  11. ^ EDSAC 1 и позже.
  12. ^ EDSAC 1 и позже.
  13. ^ EDSAC 1 и позже.
  14. ^ Труды Кембриджского философского общества, Vol. 49, Пт. 1, с. 84–89.
  15. ^ "Симулятор Эдсака". www.dcs.warwick.ac.uk . Проверено 24 мая 2023 г.
  16. ^ ab «EDSAC выполнил свои первые расчеты». История вычислений . Проверено 23 ноября 2018 г.
  17. Раймонд, Катрин (25 октября 2017 г.). «Беатрис Уорсли». Канадская энциклопедия . Архивировано из оригинала 13 января 2018 года . Проверено 23 ноября 2018 г.
  18. ^ Профессор Дэвид Бэррон, почетный профессор Саутгемптонского университета, на семинаре Кембриджской компьютерной лаборатории, посвященном 60-летию, 6 мая 2009 г.
  19. ^ Описание трех дисплеев (счетчик, память и управление последовательностью): «Два новых видеоролика EDSAC: экраны VDU EDSAC». Национальный музей вычислительной техники . 11 декабря 2015 г.
  20. ^ Тьюринг 1945, перепечатано в Коупленде (2005), стр. 383.
  21. ^ Уилкс, М.В. (1956). Автоматические цифровые компьютеры . Лондон: Метуэн. стр. 93–95.
  22. ^ Уилкс, М.В. (1956). Автоматические цифровые компьютеры . Лондон: Метуэн. стр. 108–109.
  23. ^ Годдард, Джонатан (3 мая 2019 г.), 70 лет со дня создания первого компьютера, предназначенного для практического повседневного использования, Департамент компьютерных наук и технологий Кембриджского университета.
  24. ^ Частоты генов в линии, определяемые отбором и диффузией, Р. А. Фишер, Биометрия , Vol. 6, № 4 (декабрь 1950 г.), стр. 353–361.
  25. ^ Колдуэлл - крупнейшие известные простые числа по годам. В одной из ссылок приводится Miller, JCP «Большие простые числа» (1951) Nature 168(4280):838, но в аннотации это не упоминается.
  26. ^ «Архивная копия» (PDF) . Архивировано из оригинала (PDF) 22 декабря 2015 года . Проверено 18 ноября 2016 г.{{cite web}}: CS1 maint: архивная копия в заголовке ( ссылка )
  27. ^ Коэн, DS (20 сентября 2014 г.). «OXO, она же крестики-нолики - первая видеоигра». О сайте.com . МАК . Архивировано из оригинала 22 декабря 2015 года . Проверено 18 декабря 2015 г.
  28. ^ Вольф, Марк JP (16 августа 2012 г.). Энциклопедия видеоигр: культура, технологии и искусство игр . Издательская группа Гринвуд . стр. 3–7. ISBN 978-0-313-37936-9.
  29. ^ abcd Смит, Элви Рэй (9 июня 2015 г.). «Рассвет цифрового света». IEEE Анналы истории вычислений . 38 (4): 74–91. дои : 10.1109/MAHC.2015.51. S2CID  10257358.
  30. Уорд, Марк (13 января 2011 г.). «Новаторский компьютер Edsac будет построен в Блетчли-парке». Новости BBC . Проверено 13 января 2011 г.
  31. ^ Музей включает исторический компьютер.
  32. ^ Хартли, Дэвид; Герберт, Эндрю (2013). «Проект реплики EDSAC». Сделать историю вычислительной техники актуальной . ИФИП: Достижения в области информационных и коммуникационных технологий. Том. 416. 9 Текущее состояние , стр. 307–308. дои : 10.1007/978-3-642-41650-7_27. ISBN 978-3-642-41649-1.
  33. ^ «Подпроект восстановления логики EDSAC» . www.billp.org . Проверено 24 августа 2023 г.
  34. ^ «Внутри проекта по восстановлению EDSAC, одного из первых в мире компьютеров общего назначения» . zdnet.com . Проверено 24 мая 2020 г.
  35. Палмер, Дэнни (24 ноября 2016 г.). «Внутри проекта по восстановлению EDSAC, одного из первых в мире компьютеров общего назначения». ЗДНет . Проверено 1 декабря 2016 г.

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

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