18+
реклама
18+
Бургер менюБургер меню

Леонид Черняк – История электронных компьютеров (страница 16)

18

Тайм-лайн EDVAC

Работа по проекту EDVAC делится на несколько этапов:

• Хронология развития идеи (август 1944 – март 1945)

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

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

• Ноябрь 1944. Вырабатываются основы архитектуры: память, арифметико-логическое устройство, устройство управления, устройство ввода/вывода. Оформляется формат команд (код операции и адреса операндов). Принято решение об унифицированной памяти для данных и кода и внутреннем дешифраторе команд вместо внешнего коммутатора. Начинается ранний архитектурный дизайн.

• Январь 1945. Проект получает название EDVAC, включающее слова «discrete variable». Ведутся обсуждения формата команд, синхронизации памяти и ALU, реализации дешифратора и идей fetch-decode-execute. Голдштейн подготавливает проектную документацию для армейского заказчика.

• Март 1945. В качестве консультанта подключается Джон фон Нейман. Он не инициирует новую архитектуру, но дает теоретическую интерпретацию, вводит термины, сравнимые с машиной Тьюринга. Голдштейн предлагает фон Нейману оформить идеи в виде локального отчета для армейского заказчика.

• При участии фон Неймана (апрель 1945 – июнь 1946)

• Апрель 1945. Фон Нейман активно работает над теоретическим оформлением архитектуры. Вводится унифицированная терминология: память, арифметическое устройство, устройство управления. Начинает формироваться идея программируемой машины как универсального автомата, устанавливается логическая связь с машиной Тьюринга.

• Май 1945. Появляется черновик текста, позже известный как «First Draft of a Report on the EDVAC». Фон Нейман пишет текст самостоятельно, акцентируя внимание на логической структуре и принципах работы машины, а не на схемотехнике. Совещания с Моукли, Эккертом и Голдштейном корректируют черновики.

• Июнь 1945. Завершается «First Draft». Отчет размножен на мимеографе и распространяется в научной среде, влияя на параллельные проекты в США и Великобритании (например, ACE Тьюринга). Хотя автором указан только фон Нейман, идеи являются коллективной работой.

• Июль—август 1945. Публикация отчета вызывает конфликт: авторство указано только за фон Нейманом, что лишает инженеров возможности патентования архитектуры.

• Сентябрь 1945. Моукли и Эккерт подготавливают свой отчет «Automatic High Speed Computing: A Progress Report on the EDVAC» для армейского заказчика. Он остается секретным, подробно описывает текущий статус проектирования, технические детали и уточненную архитектуру. Отчет подтверждает приоритет Эккерта и Моукли в разработке хранимой программы на инженерном уровне, в то время как фон Нейман остается теоретиком и популяризатором.

• Судьба двух документов складывается по-разному. Отчет фон Неймана быстро распространяется и закрепляет за ним репутацию «отца современной архитектуры компьютера». Отчет Эккерта и Моукли остается секретным и начинает проявлять влияние только позднее – через машины вроде UNIVAC.

• Финал совместной работы (осень 1945 – июнь 1946)

• Осень 1945. Эккерт и Моукли начинают искать возможности создания собственной компании и постепенно отходят от EDVAC. Фон Нейман уходит в Принстонский университет и начинает планировать IAS Machine, логического наследника EDVAC.

• Декабрь 1945 – март 1946. Продолжается техническая реализация EDVAC под руководством Клерка Везерберна: разработка арифметического блока, линий задержки, регистров, управляющей логики и внутренней документации.

• Июнь 1946. ENIAC введен в эксплуатацию, EDVAC все еще опытно-экспериментальный. В Moore School проходит Летняя школа, посвященная архитектуре и проектированию электронных машин. Используются идеи EDVAC, включая стек вызовов и подпрограммы.

• Завершение проекта (осень 1946 – август 1949)

• Осень 1946. Развитие EDVAC затруднено из-за отсутствия финансирования и ухода части команды.

• Август 1948. Начата подготовка технической документации: протоколы загрузки, описание команд, инструкции по замене ламп и тестированию. Формируется группа пользователей-программистов. На ранних этапах программирование как дисциплина почти не поднималось; основное внимание уделялось архитектуре памяти, команд, схем управления и физической реализации.

• Август 1949. EDVAC формально готов к передаче в BRL. Машина реализует архитектуру с хранимой программой и развитым набором инструкций.

Когда теория пытается догнать практику

Современные курсы по информатике и теории алгоритмов практически всегда начинают с машины разбора Тьюринга. Но с исторической точки зрения это в корне неверно. Первые компьютеры создавались вовсе не как реализация теоретических моделей. Никто из инженеров, причастных к ним, не читал и не знал о существовании статьи Тьюринга 1936 года. Они решали прагматические задачи, их целью было ускорение вычислений и не более того. Никто не говорил: «давайте построим физическую реализацию универсального автомата». Это один из тех случаев, когда теория догнала практику, объяснение возникло после явления, а не наоборот и стало ретроспективным основанием, а не исходной мотивацией.

ENIAC, EDVAC, UNIVAC, Manchester Baby, как и ранние компьютеры были реакцией на конкретные потребности – расчет баллистических таблиц, моделирование физических процессов, криптоанализ, атомный проект. Никто из создателей этих машин не задумывался об универсальности. Они действительно могли эмулировать любую вычислимую функцию, но никто этого не планировал, универсальность возникла, как побочный эффект инженерного прагматизма.

Теория вычислений как самостоятельная область сложилась позже. В 1950–60-х годах логики и математики начали систематизировать понятие алгоритма. Появились альтернативы машине Тьюринга: нормальные алгоритмы Поста, рекурсивные функции Клини, λ-исчисление Черча. На этом фоне стало ясно, что компьютер, построенный по принципам, изложенным фон Нейманом, – это, по сути, физическая реализация универсальной машины Тьюринга. Но это был вывод, а не предпосылка. Так же, как Луна не летает вокруг Земли потому, что ее кто-то туда поставил.

Установление параллели между машиной Тьюринга и архитектурой фон Неймана стало делом историков, логиков и специалистов по теоретической информатике. Хронология формирования этой дисциплины такова:

• 1936. Алан Тьюринг и Алонзо Черч независимо предложили модели вычислений – машину Тьюринга и λ-исчисление.

• 1940. Эмиль Пост и Стивен Клини развивают альтернативные формализмы вычислимых функций.

• 1945. Джон фон Нейман пишет доклад о EDVAC, не упоминая Тьюринга. Компьютеры создаются по инженерной логике.

• 1949. Первая рабочая машина с хранимой программой – EDSAC. С нее начинается практическое программирование.

Так, шаг за шагом, формируется представление о компьютере как о материальной реализации машины – якобы это был не инженерный замысел, а интеллектуальный вывод постфактум.

Со временем в образовании прочно укоренился подход «сначала теория, потом практика». И вот уже школьников просят писать программы для машин Тьюринга. В вузах начинают курсы с формальных моделей вычислений, еще до знакомства с реальными языками программирования. Однако следует иметь в виду, что машина Тьюринга – великая абстракция, следовательно она не предназначена для обучения программированию. Она предназначена для анализа пределов вычислений. Ее место – в финале, как апофеоз теоретического мышления, а не в начале, где

Что же касается, универсальности, то она оказалась побочным эффектом. Жизнь показала, что любая достаточно выразительная система становится тьюринг-полной сама собой. (Достаточно выразительная система умеет хранить данные, выполнять условия и повторять действия, благодаря чему способна вычислять любые алгоритмы, как машина Тьюринга). Это значит, что универсальность – это не достижение, а побочный эффект. Если в системе есть возможность хранения переменных, условные переходы, циклы или рекурсия, то тьюринг-полнота появляется почти автоматически. Компьютер стал универсальным не потому, что это было задумано, а потому что иначе он был бы слишком ограничен.

Глава 5. Компьютеры первого поколения

Компьютеры первого поколения производились с 1940-х до середины 1950-х годов, их объединяет общая элементная база – электронные лампы в качестве логических элементов. Машины были громоздкими, потребляли огромное количество электроэнергии, переводя ее в тепло, отличались низкой надежностью. Наработка на отказ компьютеров первого поколения составляла порядка часов и вероятность отказа была практически неизбежной, поэтому они требовали постоянного технического обслуживания.

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