Перейти до вмісту

Перший чорновик звіту про EDVAC

Матеріал з Вікіпедії — вільної енциклопедії.

Перший чорновик звіту про EDVAC (зазвичай скорочується до First Draft) — неповний 101-сторінковий документ, написаний Джоном фон Нейманом і розповсюджений 30 червня 1945 року Германом Голдстайном, офіцером служби безпеки секретного проекту ENIAC. Він містить перший опублікований опис логічної конструкції комп'ютера з використанням концепції збереженої програми, яка стала відомою як архітектура фон Неймана; назва стала суперечливою через те, що фон Нейман не вказав імен інших учасників.

Історія

[ред. | ред. код]
Титульна сторінка Першого чорновика, копія, що належить Семюелю Н. Александру, який розробив комп'ютер SEAC на основі звіту.

Фон Нейман написав чорновик від руки, коли їхав потягом до Лос-Аламоса, штат Нью-Мексико, і відправив рукописні нотатки поштою до Філадельфії. Ґолдстайн наказав надрукувати та розмножити документ. Хоча дата надрукованого звіту вказана 30 червня, 24 копії першого чорновика було роздано особам, тісно пов'язаним з проектом EDVAC, п'ятьма днями раніше — 25 червня. Інтерес до доповіді спричинив її розсилання по всьому світу: наприклад Моріс Вілкс з Кембриджського університету казав, що поштовхом для свого рішення поїхати до Сполучених Штатів на лекції школи Мура влітку 1946 року стало саме ознайомлення зі змістом «чорновика».

Фон Нейман описує детальний проект «дуже високошвидкісної автоматичної цифрової обчислювальної системи». Він поділяє його на шість основних підрозділів: центральна арифметична частина (англ. Central Arithmetic, CA); центральна частина керування (англ. Central Control, CC); пам'ять (M); введення (I); виведення (О); і (повільна) зовнішня пам'ять (R), наприклад перфокарти, телетайпна стрічка або магнітний дріт чи сталева стрічка.

CA мав виконувати додавання, віднімання, множення, ділення та обчислення квадратного кореня. Інші математичні операції, такі як логарифми та тригонометричні функції, мали виконуватися за допомогою таблиці та інтерполяції, можливо, біквадратної . Фон Нойман зазначає, що множення та ділення можна виконувати за допомогою таблиць логарифмів, але щоб таблиці були достатньо малими, потрібна інтерполяція, а це, у свою чергу, вимагає множення, хоча, можливо, з меншою точністю.

Числа мали бути представлені в двійковій системі числення . Він вважає, що 27 двійкових цифр (він не використовував термін «біт», який був введений Клодом Шенноном у 1948 році) буде достатнім (що забезпечує точність до 8 десяткових знаків), але округлює до 30-бітних чисел за допомогою знакового біта та біта, щоб відрізнити числа від «наказів» (тобто, інструкцій), у результаті чого 32-бітне слово він називає мінорним циклом. Для спрощення віднімання слід використовувати арифметику з доповненням до двох . Для множення та ділення він пропонує розміщувати двійкову крапку після знакового біта, що означає, що всі числа розглядаються як такі, що знаходяться в діапазоні від −1 до +1 [a], і, отже, обчислювальні задачі потрібно масштабувати відповідно.

Дизайн електричних схем

[ред. | ред. код]

Замість реле мають використовуватися вакуумні лампи: лампа здатна комутувати цифровий сигнал за одну мікросекунду, проти 10 мілісекунд для реле.

Фон Нейман пропонує (розділ 5.6) робити комп'ютер максимально простим, уникаючи будь-яких спроб покращити продуктивність шляхом накладання операцій. Арифметичні дії слід виконувати по одній двійковій цифрі за раз. Він оцінює, що додавання двох двійкових цифр займає одну мікросекунду, і тому 30-бітне множення має тривати близько 302 мікросекунд або приблизно одну мілісекунду, набагато швидше, ніж будь-який обчислювальний пристрій, доступний на той час.

Дизайн фон Неймана побудовано з використанням того, що він називає «елементами E», які засновані на біологічному нейроні як моделі, але є цифровими пристроями, які, за його словами, можуть бути створені за допомогою однієї або двох електронних ламп. У сучасних термінах його найпростішим елементом E є двовхідний вентиль «І» (AND) з одним інвертованим входом (вхід «заборони»). Елементи E з більшою кількістю входів мають пов'язаний поріг і видають сигнал на виході, коли кількість позитивних вхідних сигналів досягає або перевищує поріг, доки (єдина) лінія заборони не активна. Він стверджує, що Е-елементи з більшою кількістю вхідних сигналів можуть бути створені з найпростішої версії, але пропонує їх будувати безпосередньо як схеми з вакуумних ламп, оскільки ламп при такомі підході потрібно буде менше.

Більш складні функціональні блоки мали бути побудовані з таких Е-елементів. Він показує, як використовувати E-елементи для створення схем додавання, віднімання, множення, ділення та квадратного кореня, а також двох блоків пам'яті станів і схем керування. Він не використовує термінологію булевої логіки .

Схеми мають бути синхронізовані від головного тактового сигналу, що надходить від генератора імпульсів на вакуумній лампі, можливо, з кварцовою стабілізацією частоти. Логічні діаграми, накреслені фон Нойманом, містять символ стрілки для позначення одиничної затримки часу, оскільки затримки часу повинні бути враховані в синхронній схемі. Він зазначає, що за одну мікросекунду електричний імпульс переміщається на 300 метрів, тож до частот приблизно 108 циклів на секунду (100 МГц), довжина провідників не становитиме проблеми.

Необхідність виявлення та виправлення помилок згадується, але не розкривається.

Дизайн пам'яті

[ред. | ред. код]

Ключова концепція дизайну, сформульована та пізніше названа архітектурою фон Неймана, — це уніфікована пам'ять, що містить як числа (дані), так і «накази» (інструкції).

«Пристрій потребує значного обсягу пам'яті. Хоча виявилося, що різні частини цієї пам'яті повинні виконувати функції, які дещо відрізняються за своєю природою та значною мірою за своїм призначенням, все ж є спокуса розглядати всю пам'ять як один орган і зробити її частини навіть настільки взаємозамінними, наскільки це можливо для різних функцій, перерахованих вище». (Розділ 2.5) «Накази, які отримує CC, надходять від М, тобто з того самого місця, де зберігається числовий матеріал». (Розділ 14.0)

Фон Нейман оцінює необхідний обсяг пам'яті на основі кількох класів математичних задач, включаючи звичайні диференціальні рівняння та рівняння з частинними похідними, сортування та ймовірнісні експерименти . З них диференціальні рівняння в частинних похідних у двох вимірах плюс час вимагатимуть найбільше пам'яті, а три виміри плюс час виходять за межі того, що можна зробити за допомогою доступної на той час технології. Він робить висновок, що пам'ять буде найбільшим підрозділом системи, і він пропонує 8192 «малих циклів» (тобто, машинних слів у сучасному розумінні) з 32 бітів як ціль проєктування. Машина з 2048 «малими циклами» також була б корисною для простіших завдань. За його оцінками, для збереження програми буде достатньо кількох сотень «малих циклів».

Він пропонує два види швидкої пам'яті, лінію затримки та трубку іконоскопа . Кожен «малий цикл» має розглядатися як одиниця (адресація слів, розділ 12.8). Інструкції мають виконуватися послідовно, зі спеціальною інструкцією для переходу до іншої точки пам'яті (тобто інструкція переходу).

Двійкові цифри в пам'яті лінії затримки проходять через лінію та повертаються на початок. Доступ до даних у лінії затримки накладає часовий штраф під час очікування, поки бажані дані знову надійдуть. Після аналізу цих проблем синхронізації він пропонує організувати пам'ять лінії затримки на 256 «органів» лінії затримки (DLA), кожен з яких зберігає 1024 біта, або 32 «малих цикли», які називаються великим циклом. Доступ до пам'яті спочатку вибирає DLA (8 біт), а потім другорядний цикл у межах DLA (5 біт), загалом 13 біт адреси.

Для пам'яті на основі іконоскопа фон Нойман передбачає, що кожна точка сканування на поверхні трубки є конденсатором і що конденсатор може зберігати один біт. Буде потрібне дуже високоточне сканування, і значення зберігатиметься лише короткий час, можливо, лише секунду, і тому її потрібно буде періодично оновлювати.

«Накази» (інструкції)

[ред. | ред. код]

У розділі 14.1 фон Нейман пропонує формат для «наказів», які він називає кодом. Серед типів «наказів» — основні арифметичні операції, переміщення другорядних циклів між CA та M (завантаження слова та зберігання слова, в сучасних термінах), порядок (s), який вибирає одне з двох чисел на основі знака попередньої операції, введення та виведення та перенесення CC до комірки пам'яті в іншому місці (перехід, jump). Він визначає кількість бітів, необхідних для різних типів «наказів», пропонує негайні накази, де наступне слово є операндом, і обговорює бажаність залишити запасні біти у форматі «наказу», щоб уможливити адресуванні більших обсягів пам'яті в майбутньому, а також для інших цілей. Обговорюється можливість зберігання більш ніж одного «наказу» в другорядному циклі, але така пропозиція дана з невеликим ентузіазмом. Надається «таблиця наказів», але перший проект не містить обговорення інструкцій щодо введення та виведення.

Суперечка

[ред. | ред. код]

Видання та розповсюдження звіту стало джерелом запеклої ворожнечі між фракціями команди дизайнерів EDVAC з двох причин.[1] По-перше, звіт пізніше було визнано публічним оприлюдненням, яке відбулося більш ніж за рік до подання заявки на патент EDVAC, що призвело до того, що можливий патент не має законної сили; по-друге, дехто з команди дизайнерів EDVAC стверджував, що концепція збереженої програми виникла в результаті зустрічей у Школі електротехніки Мура Пенсільванського університету, які передували діяльності фон Неймана як консультанта, і що велика частина роботи, представленої в першому проекті, була не більш ніж перекладом обговорюваних концепцій на мову формальної логіки, якою фон Нейман вільно володів. Отже, те, що фон Нейман і Ґолдстайн не вказали інших як авторів першої чернетки, призвело до того, що заслуга була приписана лише фон Нейману. (Див. ефект Метью та закон Стіглера)

Див. також

[ред. | ред. код]
  • EDSAC, ранній британський комп'ютер, натхненний першим чорновиком звіту про EDVAC
  • Harvard Mark I, ранній електромеханічний комп'ютер з інструкціями та числовими даними, що зберігаються окремо (гарвардська архітектура)

Примітки

[ред. | ред. код]
  1. Насправді, найвище значення 1 - 2−30, або 0,99999999906 у десятковому записі.

Джерела

[ред. | ред. код]
  1. Moye, William T. (January 1996), ENIAC: The Army-Sponsored Revolution, United States Army Research Laboratory, архів оригіналу за 5 березня 2013, процитовано 26 листопада 2012

Бібліографія

[ред. | ред. код]

Посилання

[ред. | ред. код]
  • Oral history interview with J. Presper Eckert (англ.). 28 жовтня 1977. Архів оригіналу за 8 жовтня 2024. Усне інтерв'ю з Дж. Преспером Екертом, Інститут Чарльза Беббіджа, Університет Міннесоти. Екерт, один із винахідників ENIAC, обговорює його розробку в Школі електротехніки Мура при Університеті Пенсільванії; описує труднощі із забезпеченням патентних прав на ENIAC і проблеми, викликані розповсюдженням першої чернетки доповіді Джона фон Неймана 1945 року про EDVAC, яка оприлюднила винаходи ENIAC. Інтерв'ювала Ненсі Стерн.