Upgrade to Pro — share decks privately, control downloads, hide ads and more …

История автоматических вычислителей: вычислител...

Anton
April 13, 2023

История автоматических вычислителей: вычислители на лампах - часть 3

Лекция курса "Языки и методы программирования"
История автоматических вычислителей: вычислители на лампах - часть 3 (ЭНИАК, фон Нейман)
- ЭНИАК
- Джон Мокли, Джон Эккерт
- Коммутационные панели (коммутационные доски, commutation plugboard)
- Программирование ЭНИАК перенастройкой коммутационной панели
- Симуляторы ЭНИАК
- Приемер настройки и выполнения "программы" ЭНИАК в симуляторе
- Документы и публикации: Отчет по ЭНИАК, статья в Популярной механике
- Команда программистов ЭНИАК
- Повышение производительности труда в области перенастройки компьютера под задачу: архитектура Джона фон Неймана, концепция хранимой программы
- Джон фон Нейман
- Первый черновик отчета по EDVAC
- Конфликт с Эккертом и Мокли
- Новый проект вычислителя — IAS
- Концепция хранимой программы
- Архитектура Джона фон Неймана
- Последователи IAS
- Итого: лампы vs реле
- Развитие идей "коннективизма"

13 апреля 2023 (ранние версии: весна 2022)

Anton

April 13, 2023
Tweet

More Decks by Anton

Other Decks in Education

Transcript

  1. ENIAC (1945) • en.wikipedia.org/wiki/ENIAC • Electronic Numerical Integrator and Computer

    • Один из первых программируемых электронных цифровых компьютеров общего назначения (но это не точно) • Общего назначения: полон по Тьюрингу • Построен: 1945 год • Элементная база: электронные вакуумные лампы и реле
  2. Джон Мокли • Разработал циклический анализатор погоды — аналоговое устройство

    (как предсказатель приливов Уильяма Томсона, вошедший в историю под именем Кельвина) • Хотел предсказывать погоду по бигдате • (на презентации устройства познакомился с Атанасовым) • Преподавал, посадил студентов с механическими калькуляторами (вместо Пайтона) • Калькуляторы купили по дешевке у обанкротившихся банков (хоть какая положительная сторона Депрессии)
  3. • В начале войны попал в школу Мура • Познакомился

    с Джоном Эккертом, заразил его идеей вычислителя • К 1942-му большая часть сотрудников школы была привлечена к выполнению военных заказов
  4. • Военным нужно было считать баллистические таблицы (todo: матчасть, как

    это было, зачем нужны вычисления) • В ходу был дифференциальный анализатор по схеме Буша (аналоговый вычислитель) • Решал проблему за минуты, людям требовались дни • В школе Мура построили два анализатора для военных • Потом подключились к их эксплуатации
  5. • Мокли не оставлял идею построить новый вычислитель • Но

    уже не для погоды, а для военных вычислений • Вместе с Эккертом (и еще одним последователем — Брейнердом) подготовили «Отчет по электронному дифференциальному анализатору» • Хотели его реализацию получить ресурсы от военных • Привлекли на свою сторону Германа Голдстайна (математик и армейский офицер)
  6. • Штибиц сказал, что проект сложный, до конца войны не

    успеют (теперь сам в роли скептика, хотя и прав оказался) • Но военные согласились выделить ресурсы на проект (видимо, купились на «дифференциальный анализатор») — как развитие аналогового дифференциального анализатора • («дифференциальный анализатор» в названии не просто так — это отсылка к аналоговому автомату, который уже зарекомендовал себя у военных) • ENIAC — Electronic Numerical Integrator, Analyser and Computer
  7. • Todo: уточнить список: • Функциональные модули: сложение, счет (через

    тот же счетчик Уина-Уильямса), умножители, генераторы функций (синус, косинус и т. п.) • Каждый модуль настраивался отдельно • Программирование коммутацией как телефонная станция (коммутационные панели и кабели — IBM) • Ветвление: шесть функциональных последовательностей с предварительной настройкой. • Шаговый мотор решает, какую из них выполнить
  8. • Работа на малых токах (как у британцев) • Быстрая

    замена модулей с лампами (ноу-хау) • Всё равно лампы перегорали • Ввод-вывод электромеханика: поворотные ручки- переключатели, считывание перфокарт (reader, IBM), пробойник перфокарт (принтер, IBM), панель с десятичными разрядами и бегающими лампочками (открыли модный тренд) • Флип-флопы применялись и активно (см. часть отчета за авторством Голдстайна)
  9. • Машина была очень большая • Размещался в большом помещении

    в школе Мура • Десятичное представление чисел — неоправданный расход ресурсов • 1945 — ввод в эксплуатацию • Не такой надежный, как электромеханика • Но быстрый: • Дифференциальный анализатор — 15 мин, ЭНИАК — 20 секунд (быстрее, чем летит снаряд)
  10. • Для войны посчитать не успел (Штибиц оказался прав) •

    Но на носу был проект водородной бомбы • В 1946 презентовали общественности
  11. • Подход с ручной перенастройкой вычислителей практиковался множество лет •

    Для удобства переключения схемы использовали т. н. коммутационные панели (commutation plugboard) • Развитие — в статистических перфокартных машинах IBM (и конкурирующих производителей) • Но не только
  12. • Для перенастройки ENIAC под новую программу использовали аналогичный подход

    • Коммутационные панели (и некоторые другие компоненты) для ENIAC были закуплены у IBM
  13. • Процесс программирования компьютера выглядел как процесс переподключения проводов •

    (уже есть программа, но называть процесс программирования вычислителя «внесением программы в компьютер» не вполне корректно — скорее здесь процесс частичной пересборки компьютера под программу) • Т.о. программа здесь — это алгоритм, определяющий логику вычислений, который может быть переведен на язык электронной схемы • Финальная форма программы — электронная схема • Компьютер здесь выступает как своеобразный электронный конструктор (полуфабрикат), который можно пересобрать по схеме
  14. • Процесс перенастройки вычислителя под программу был довольно трудоёмким и

    мог занимать несколько дней • На этапе планирования проекта предполагалось, что задачи (программы) будут меняться не слишком часто и после перенастройки вычислитель будет долгое время гонять один и тот же алгоритм на разных данных • Плюс играл роль фактор спешки — среди прочих задач задача обеспечить удобство ввода программы была не в приоритете
  15. Симуляторы ЭНИАК • На .Net historicsimulations.com/Eniac/eniac.html • На Java (музей

    Цузе) zuse-z1.zib.de/simulations/eniac/ github.com/kinnla/eniac/ • На JavaScript (не запускал) github.com/jimlindstrom/eniac-simulator
  16. Симулятор на Java • Дипломный проект студента • Неплохая документация

    (не без проблем, правда) zuse-z1.zib.de/simulations/eniac/doc/virtualENIAC.pdf zuse-z1.zib.de/simulations/eniac/doc/eniac_simulation_thesis.pdf zuse-z1.zib.de/simulations/eniac/doc/ENIAC_2005-05-20.pdf • Интерактивный интерфейс с возможностью подключения проводов на панелях • Реализованы модули: инит, импульсы, аккумуляторы, константы (симуляция не полная) • Исходный код открыт (GPL)
  17. Демо: посчитаем формулу • 6194 - 2068 = ? •

    Исходные данные вводим переключателями на панели констант • Результат смотрим на табло с мигающими лампочками • Логику работы определяем подключением проводов — коммутацией
  18. • Канал (шина) управляющих сигналов программы (program) • Стартовый сигнал

    от модуля Initiating unit — точка входа в программу (как функция main) • Далее сигналы от модуля к модулю
  19. • Канал (шина) данных • Передача 10-значных чисел из блока

    констант в аккумуляторы, между аккумуляторами и т. п.
  20. =>

  21. • Настроили модуль констант на отправку значения • И модуль

    аккумулятора-1 для получения значения • Можно проверить текущую конфигурацию • Выставим выполнение в пошаговом режиме на панели модуля Cycling unit: 20 импульсов — это один цикл
  22. =>

  23. • Передали значение константы из блока JR («02068») аккумулятор-1 —

    ок • Теперь настроим передачу константы из блока KR в аккумулятор-2 • Это новое действие — следующий шаг программы • Он должен быть выполнен после того, как завершен предыдущий шаг
  24. • Еще раз проверим передачу констант: на этот раз ожидаем

    получить 1-е значение в аккумулятор-1 («02068») и после этого 2-е значение — в аккумулятор-2 («06194») • Выключить/включить питание на аккумуляторе-1 (сбросить значения лампочек) • clear, go, step, step, step, ...
  25. Замечания • В этом эмуляторе значение аккумулятора можно задать вручную

    кликом мышки на лампочках. Это может быть удобно при отладке, но не должно сбивать с толку (в реальном устройстве так сделать не получится) • Кнопка «clear» не очистит значения аккумуляторов и не приведет к видимым изменениям интерфейса. Но её обязательно нужно нажать, если конфигурация проводов или переключателей поменялась, и нужно запустить вычислитель на выполнение новой программы • Значения аккумуляторов сбрасываются выключением и включением питания — на каждом из аккумуляторов • После «clear» выполнение программы начинается с кнопки «go»
  26. • Передадим значение из аккумулятора-1 в аккумулятор-2 со знаком минус

    (выход S) • (выход A — передать текущее значение на выход) • Все входящие значения аккумуляторов не перезаписывают текущее значение аккумулятора, а складываются с ним и в аккумулятор записывается сумма • Таким образом, в аккумулятор-2 попадет: 6194 + (-2068) = 6194 - 2068 = ?
  27. • Поехали финальный запуск • Выключить/включить питание на аккумуляторах 1

    и 2 (сбросить значения лампочек) • clear, go, step, step, step, ...
  28. • 6194 - 2068*2 = ? • Отправить значение аккумулятора-1

    в аккумулятор-2 два раза подряд • Переключатель повтора операции отправки на выход S на аккумуляторе-1 установить = 2 • Переключатель повтора операции приёма значение на вход β на аккумуляторе-2 установить = 2 • clear, go, step, step, step, ...
  29. Симулятор на .Net • Хорошая инструкция historicsimulations.com/Eniac/Tutorials/tutorial1.html • Интерфейс —

    поля ввода и выпадающие списки (не очень наглядно) • Реализовано много модулей (все?), в т. ч. ввод с перфоленты и вывод на перфокарту • Исходный код закрыт (?)
  30. • Todo: сравнительные фотки эмулятора и реальной панели • Фотки

    скрины из документов со схемами панелей • Дальше короткий рассказ про девушек-программисток (слайд + пара фоток) будет уместен • Todo: ветвление • Todo: аналогии с нейронами (коннективизм) — лекции Джона фон Неймана • Список, что посчитал Эниак • Флипфлопы на лампах слишком грозоздко и дорого для большой памяти, поэтому линии задержки
  31. Отчет по ЭНИАК, 1946 • Report on the ENIAC (Electronic

    numerical integrator and computer) • by Moore School of Electrical Engineering, 1946 - ENIAC Operating Manual - ENIAC Maintenance Manual - Technical description of the ENIAC - Part I volume I - Technical description of the ENIAC - Part I volume II - Technical description of the ENIAC - Part II
  32. Report on the ENIAC • ENIAC Operating Manual archive.org/details/ReportonENIACEl1Moor/mode/1up archive.org/details/ReportonENIACEl00Moor/mode/1up

    archive.org/details/DTIC_ADA622372/page/n1/mode/1up • ENIAC Maintenance Manual archive.org/details/ReportonENIACEl00MoorA/page/n8/mode/1up • Technical description of the ENIAC - Part I archive.org/details/ReportonENIACEl00MoorB/mode/1up • ftp.arl.army.mil/~mike/comphist/46eniac-report/index.html (vpn, webarchive) • Technical description of the ENIAC - Part II archive.org/details/reportoneniacele05moor/page/n7/mode/1up
  33. Дополнительно • A Logical Coding System Applied to the ENIAC

    by Defense Technical Information Center, 1948 archive.org/details/DTIC_ADB205179/page/n1/mode/1up ftp.arl.army.mil/~mike/comphist/48eniac-coding/sec1.html (vpn, webarchive) • Description of the ENIAC converter code by Defense Technical Information Center, 1951 archive.org/details/DTIC_AD0642030/page/n3/mode/1up • A Survey of Eniac Operations and Problems 1946-1952 by Defense Technical Information Center, 1952 archive.org/details/DTIC_AD1003735/mode/1up
  34. Команда программистов ЭНИАК • Todo: девушки-программисты в команде (см. статью)

    • "U.S. Army Photo", number 163-12-62. Left: Patsy Simmers, holding ENIAC board Next: Mrs. Gail Taylor, holding EDVAC board Next: Mrs. Milly Beck, holding ORDVAC board Right: Mrs. Norma Stec, holding BRLESC-I board ftp.arl.army.mil/ftp/historic-computers/ (vpn/tor/web-archive) • The Forgotten History Of The Women Who Programmed The First Modern Computer www.codecademy.com/resources/blog/eniac-six-women- programmed-computer/
  35. Джон фон Нейман (1903 — 1953) • Физик, консультировал атомщиков,

    предложил хорошую модель для бомбы, но требовались подсчеты • Люди не справлялись - сроки горели • Начал изучать автоматические вычислители по списку — поехал по известным релейным проектам • Существующие машины уже были заняты вычислениями. Постройка новых — большие сроки • В список по какой-то причине не попал ЭНИАК • фон Нейман познакомился случайно с Голдстайном на вокзале, разговор зашел о вычислителях и все завертелось
  36. • Подключился к проекту в качестве консультанта для новой версии

    вычислителя — EDVAC • для него плюс проекта — команда с уже имеющимся заделом в виде ЭНИАКа • для команды плюс — фон Нейман был признанным ученым с именем, а школа Мура — нет. • Участие ЭНИАКа в атомном проекте — серьезное признание самого ЭНИАКа и школы Мура
  37. «Первый черновик отчета по EDVAC» • Выпущен в 1945-м году

    • Основан на опыте создания и использования ENIAC • Описывал шаблон архитектуры первых компьютеров, в т.ч. концепцию программы, хранимой в быстрой памяти • Часть идей принадлежали исходной команде, обобщение и часть идей — фон Нейману (до сих пор предмет споров) • (в т.ч. попытка описать вычислитель как абстрактный математический концепт без привязки к конкретной физической реализации) • Так или иначе, документ был подписан именем Джона фон Неймана • И концепции, описанные в документе, вошли в историю как «фон- неймановская архитектура» (или «архитектура фон Неймана»)
  38. • Отчет был сделан для внутреннего пользования группы разработчиков EDVAC,

    но довольно быстро утек за её пределы и набрал популярность • «Публикация» «черновика» спровоцировала конфликт внутри группы • Эккерт и Мокли возмущались тем, что их идеи «пошли в народ» под именем фон Неймана • Но, кроме того, они считали, что такое обнародование идей закрывает им возможность запатентовать решения, которые они применили в ENIAC, и продолжить его разработку в качестве коммерческого проекта
  39. • Однако вскрытие коммерческих планов Мокли и Эккерта в свою

    очередь возмутило фон Неймана • Он заявил, что подключался к проекту как государственной научной разработке • Если бы он знал, что консультирует коммерческую компанию, то отказался бы принимать в нем участие с самого начала • На сторону фон Неймана встал Голдстайн (и еще участник команды — Беркс)
  40. Эккерт и Мокли • Эккерт и Мокли создают коммерческую компанию

    • (дальше деятельность, патентные споры, всплыла история с Атанасовым, обнуление патента и т. п.)
  41. Новый проект вычислителя — IAS • фон Нейман, Голдстайн и

    Беркс уходят в другое учреждение — IAS (Институт перспективных исследований, недалеко от Принстона) • (фон Нейман там работал ранее) • И запускают проект строительства нового компьютера — IAS (по названию института) • Начало и ход работы над проектом — отдельная интересная история • (например, фон Нейман без особого труда смог собрать в команду разработчиков лучших ученых и инженеров со всей страны, но большое затруднение вызвали бюрократические проблемы, связанные с выделением помещение под строительство нового компьютера; против строительства компьютера протестовали местные жители, т. к. боялись, что он будет потреблять слишком много энергии и т. п.)
  42. Новый проект вычислителя — IAS • Так или иначе, главным

    условием фон Неймана был академический (т. е. научный) подход к разработке • Вычислитель создавался не для решения сиюминутных задач (как ENIAC) со всеми компромиссами, обусловленными спешкой, • а как обобщение опыта строительства вычислителей («правильные» решения «по науке» с предварительным обсуждением и обоснованием с публикацией документов) • Хотели сначала сделать черновой прототип, а потом финальный образец — начисто
  43. Новый проект вычислителя — IAS • Все идеи и технологии,

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

    времени • Было бы приятнее занести программу на специальный носитель так, чтобы вычислитель смог выполнять её шаг за шагом • «Изобрести» подход с кодированием программы на носителе с возможностью автоматически последовательно читать команды проблемы не было — он уже давно применялся в других проектах (перфокарты, перфоленты) • Проблема была применить этот подход к новой электронной элементной базе
  45. • Электронная начинка работает быстро • Но обвязка, в т.

    ч. ввод-вывод, всё еще механические • Если программа записана на бумажной ленте, скорость выполнения программы будет ограничена максимальной скоростью подачи ленты и считывания с нее кодов инструкций • В случае с электронным вычислителем это противоречие между механикой и электроникой обостряется до предела
  46. • Проблема ЭНИАКа - долгая многочасовая настройка • Компьютеры Белла

    и IBM/Гарвард Марк 1 решали проблему размещением программы на пленке или бумаге • Но подача бумаги — это механика, ее не получится подавать так быстро, как работает компьютер (представьте — миллион операций в секунду, каждая операция - строка на бумаге, с какой скоростью ее нужно гнать и читать данные)
  47. • Решение проблемы — перенести программу из внешнего носителя в

    электронный вид, т.е. разместить программу в электронной памяти компьютера • Память как термин — впервые здесь • Идея описана в «первом черновике» — отчету по Эдваку фон Неймана, она же фоннеймановская архитектура
  48. • Но память на лампах (флип-флопы) будет очень громоздкая и

    дорогая • Пошла история с изобретением всевозможных устройств, которые могли бы позволить реализовать механизм хранения битов с произвольным доступом • Один из вариантов предложил Эккерт — память на ртутных трубках (т. н. линии задержки) • Как фон Нейман делал память для IAS подробно у Аспрея • Здесь видим, что вопрос хранимой программы всплыл еще когда команда была вместе Дело не только в идее «как надо»
  49. Архитектура Джона фон Неймана • К реализации проекта (IAS) подошли

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

    создания программ общего назначения, был разработан язык блок-схем, была предсказана важнейшая роль библиотек готовых подпрограмм • Одним из важных принципов фоннеймановской архитектуры является концепция хранимой программы • Каждая инструкция вычислителя получает численное представление — машинный код • Программа, представляющая собой последовательность инструкций, размещается в памяти вычислителя на общих правах с данными — как последовательность чисел (нулей и единиц)
  51. Концепция хранимой программы • Коды операций и другие участки машинного

    кода, размещенные в памяти вычислителя, будучи логически представлены нулями и единицами, • Фактически представляют собой закрытые и открытые транзисторы, которые выстраивают электрические цепочки связей
  52. Концепция хранимой программы • В зависимости от того, как расположены

    нули и единицы в машинном коде текущей инструкции, внутри вычислителя будут активированы те или иные электрические цепи, в той или иной последовательности соединяющие между собой аппаратные вычислительные блоки • Труд по переконфигурированию ЭВМ переподключением проводов теперь происходит в автоматическом режиме • Коммутационная панель больше не нужна
  53. • Реализация концепции хранимой программы позволила радикально уменьшить время перенастройки

    компьютера при смене рабочей программы • (повысить производительность труда оператора ЭВМ) • Вместо ручного переподключения проводов на коммутационной панели, программу можно было сохранить на внешний носитель (перфокарту или магнитную ленту), • А потом загрузить на выполнение во внутреннюю память вычислителя («загрузить программу в компьютер» — теперь так говорить вполне корректно) — так же, как это уже делали с данными
  54. Последователи IAS • После публикации «черновика» и последующих документов и

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

    1952 году (построен и начала работу чуть раньше) • Торопили военные, конкуренты и СССР, который тоже запустил свой атомный проект • К этому времени его последователи уже могли опережать его по ряду параметров
  56. • Серийные копии компьютера: АВИДАК, ИЛЛИАК, ДЖОННИАК, ОРАКУЛ, ОРДВАК, МАНЬЯК

    • > This plan was adopted, and several copies were built: AVIDAC at Argonne National Laboratory, ILLIAC at the University of Illinois, JOHNNIAC at the RAND Corporation, MANIAC at Los Alamos Scientific Laboratory, ORACLE at Oak Ridge National Laboratory, and ORDVAC at Aberdeen Proving Grounds.
  57. Последователи IAS • 1954: IBM 650 и 704 — серийные

    коммерческие модели выпускаемые сотнями. • С этого момента доминирование IBM • и поход вычислительной техники в повседневность • Теперь вычислительная техника — не отдельные проекты энтузиастов-одиночек или даже крупных корпораций на государственном заказе, а отдельная самостоятельная индустрия
  58. Лампы vs реле • Лампы появились позднее реле • Но

    к середине 20-го века и те и другие широко использовались несколько десятилетий • Конструкторы вычислителей на реле знали про лампы • Неправильно говорить, что лампы — это «улучшенное реле» (или что лампы эволюционным путем пришли реле на замену) • И у реле и у ламп были свои сферы применения, свои достоинства и недостатки
  59. Лампы vs реле • Компьютер IBM (на реле) лучше справлялся

    с бигдатой на перфокартах • Эниак для длинных простых вычислений • Белл Модель 5 - для сложных вычислений из-за длинной пленки с программой • Корни все еще удобнее считать вручную с калькуляторами и таблицами
  60. Лампы vs реле • Реле медленные, но надежные (даже не

    смотря на то, что между контактами могла попасть грязь), долгий срок службы • Лампы — крайне ненадежные, перегорают в случайный момент, срок службы маленький, потребляют много энергии, греются • И те и другие — широко распространены, большой модельный ряд на все случаи. • Но лампы, в среднем, дороже
  61. Лампы vs реле • Главное преимущество ламп — скорость (для

    реле недостижимая) • Часть проблем удалось если не решить, то уменьшить влияние • Например: на пониженном напряжении лампа меньше греется и у нее увеличивается срок службы • Срок службы также увеличивается, если она работает непрерывно (поэтому некоторые ламповые компьютеры вообще никогда не выключали)
  62. Лампы vs реле • Но этого всё еще не достаточно,

    чтобы запустить гонку вычислительной техники и привести её к современному состоянию дел • Заслуга ламп — окончательный переход из мира механики в мир электроники (выраженный в переход на концепцию хранимой программы) • (механика больше ни в каком виде не принимает участия в вычислениях, хотя от базового ввода-вывода никуда не деться) • Но дальнейшее развитие вычислительной техники пошло совсем на другой элементной базе с другой физикой процессов
  63. Развитие идеи • Подход тянет на парадигму программирования (событийно-ориентированное (?)

    — todo) • Популярные статьи примерно так описывают принцип действия нейронных сетей (в действительности, эта метафора не вполне хороша) • Графовый генератор текстур в Блендере