logo
Вступ до спец

1.7. Архітектура фон Неймана

Доля розпорядилася так, що в широкому масштабі була однозначно і беззаперечно прийнята архітектура фон Неймана. У ній постулювались три основні принципи.

  1. Програмне управління. Програма складається з послідовності кодів машинних команд, які вибирались з пам’яті за допомогою лічильника команд. Лічильник – це звичайний регістр, він або автоматично збільшується на довжину коду поточної команди після закінчення виконання цієї команди, або його стан міняється примусово при виконанні команд розгалуження.

  2. Однорідність пам’яті. І програми, і дані зберігаються у спільній пам’яті; над кодами команд можна виконувати такі самі дії, що і над кодами даних. Отже, програму можна модифікувати у процесі виконання, наприклад можна управляти виконанням циклів та підпрограм; програма може бути результатом дії іншої програми, на цьому засновані методи компіляції (переведення символічних програм у машинний код).

  3. Адресація. Пам’ять складається з перенумерованих комірок і процесору у будь-який момент часу доступна будь-яка комірка.

До появи цієї архітектури привів химерний ланцюжок, здавалося б, ніяк не пов’язаних між собою подій. Спробуємо прослідкувати за ними.

Тоді як напівмеханічні обчислювальні машини поволі доживали свого віку, технології не стояли на місці: поступовий перехід від релейних схем та зубчатих коліс до прогресивніших вакуумних ламп був неминучий. У 1943 році Головне управління артилерії США уклало з університетом Пенсільванії контракт на розробку та спорудження спеціальної електронно-обчислювальної машини, яка б призначалася для автоматичного розрахунку балістичних таблиць. Керівником проекту призначили знайомого нам професора факультету електротехніки Пенсільванського університету Джона Моучлі (Мочлі, 1907-1980), головним інженером – молодого вченого і любителя електроніки Джона Преспера Еккерта (1919-1995), а технічним куратором від міністерства оборони – капітана Гольдштейна (Голдстейна). Офіційне ж подання побудованого ними за допомогою 10 інженерів та 200 техніків «електронно-цифрового інтегратора і обчислювача» (Electronical Numerical Integrator and Calculator, скорочено – ENIAC) відбулося 15 лютого 1946 року.

Машина ENIAC, про яку згадувалося раніше, відрізнялася вельми незграбним способом завдання програми. Як і “MARK-1”, вона оперувала десятковими, а не двійковими числами, проте замість електромеханічних реле в ній використовувалися електронні лампи, що дозволило у 1000 разів підвищити її швидкодію. Правда, за рік роботи машини довелося замінити близько 19 тис. ламп, але, проте, машина продемонструвала, що майбутнє саме за електронним обчислювальним пристроєм.

У конструкції ENIAC використовувалося більше 18 тис. вакуумних ламп та близько 1500 реле, машина займала окреме приміщення площею 85 квадратних метрів, важила 30 тонн і споживала 150 кіловат електоенергії, якій, навіть не дивлячись на те, що це складало на 10 кіловат менше «потреб» MARK-I, вистачило б на задоволення потреб невеликого підприємства.

З появою електроніки стала практично реальною внутрішня пам’ять. Замість зубчастих коліс для зберігання числових значень в ENIAC були передбачені замкнені кола з 10 спеціальних електронних перемикачів. Але, розроблена в умовах військового поспіху, внутрішня пам’ять була вельми обмеженою. Її суматор (внутрішній пристрій на електронних лампах, призначений для зберігання оброблюваних даних) міг запам’ятовувати лише 20 10-значних десяткових чисел. З 12 таких кіл ланцюжків, 10 – для зберігання самого значення числа та 2 – для представлення його знаку, утворювали один регістр пам’яті машини. Всього розробники передбачили 20 таких регістрів, що використовувались для виконання операцій додавання та віднімання (комп’ютер виконував одну таку операцію за 0,2 мілісекунди), множення та ділення проводилося в окремих блоках машини.

Саме у конструкції ENIAC вперше використовувався принципово новий вид носія інформації, на який можна було записати послідовність виконуваних комп’ютером операцій, – перфокарти – набір спеціальних діелектричних пластин з пробитими в них отворами, кожний з яких замикав певне електричне коло при попаданні у нього контактної щітки зчитуючого пристрою. Перевага перфокарт у порівнянні з перфострічкою була очевидною: якщо стрічку, що несподівано порвалася, доводилося або ретельно та копітко склеювати, або викидати та готувати нову, то у даному випадку фахівці просто замінювали одну перфокарту, що прийшла у непридатність, з кількох сотень.

Проте, не дивлячись на всю прогресивність та революційність запропонованого Моучлі та Еккертом технічного рішення, ENIAC не був позбавлений серйозних недоліків. По-перше, введення інформації у машину здійснювалося за допомогою перемикання контактних комутаторів на 40 набірних дошках, кожна з яких мала декілька тисяч дротів, а загальна їх кількість складала 6000.

Для того щоб переналагодити комп’ютер з виконання однієї послідовності математичних операцій на іншу, доводилося перемикати всі ці дроти вручну, на що деколи витрачалось до кількох днів. До того ж, ENIAC відрізнявся вкрай низькою надійністю: варто було перегоріти одній з 18 тисяч вакуумних трубок, а перегорали вони постійно, як уся робота зупинялася, і техніки починали кропіткий пошук пошкодження, який міг затягнутися на добу і навіть більше.

ENIAC став до ладу у 1945 р., але за два роки до цього Моучлі та Еккерт вже почали обмірковувати створення більш досконалої машини, яка була б здатна зберігати не тільки велику кількість даних, але і команди програми, що керують її роботою. Їх ідея створення машини з програмою, що зберігається у пам’яті, змінила принципи організації обчислень, підготувавши підґрунтя для появи сучасних мов програмування. Життя ENIAC було недовгим: він застарів вже до 1949 р., коли на світ з'явився його спадкоємець - комп'ютер EDVAC, перша машина, здатна зберігати програму у своїй пам'яті.

Свою нову машину Моучлі та Еккерт назвали EDVAC (EDVAC – Electronic Discrete Variable Automatic Computer – електронний автоматичний обчислювач з дискретними змінними). У якості внутрішньої пам’яті вони запропонували застосовувати ртутні лампи затримки, які використовувалися у роки війни в радіолокаторах. Ще одна особливість машини полягала в її орієнтації на роботу з двійковими числами, що дозволило спростити конструкцію арифметичного пристрою.

Поки Моучлі і Екерт трудилися над новим проектом, їх ідеї в узагальненому вигляді були викладені в епохальній роботі, що належить перу видатного математика угорського походження Джона (Яноша) фон Неймана (1903-1957).

В кінці 1944 р. на допомогу Моучлі та Еккерту Джон фон Нейман був направлений як консультант. Джону фон Нейману, який у 41 рік вже здобув популярність блискучого математика, призначено було зробити величезний вплив на розвиток обчислювальної техніки у післявоєнні роки. Фон Нейман розумів, що комп’ютер – це щось більше, ніж простий калькулятор – він повинен бути універсальним інструментом для наукових досліджень. Інтерес фон Неймана до комп’ютерів певною мірою був пов’язаний з його участю у надсекретному Манхетенському проекті по створенню атомної бомби, який розроблявся в Лос-Аламосе (штат Нью-Мексіко). Тепер він міркував про значно могутнішу зброю – водневу бомбу, створення якої вимагало дуже складних розрахунків.

Робота над бомбою вимагала виконувати величезну кількість розрахунків, тому у коло зору фон Неймана попали всі рахункові машини, що існували на той час. Він був знайомий з роботами і

особисто з Ванневаром Бушем, Джорджем Стібліцем і Говардом Айкеном. Проте можливості створених ними механічних пристроїв, що являли собою кінець кінцем розвиток машини Беббіджа, його не задовольняли, але найголовніше полягало у тому, що він мав підстави передбачати існування інших, продуктивніших машин.

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

Втім, матеріалізація машини Тьюрінга могла б і не відбутися, а комп’ютерна історія могла піти абсолютно іншим шляхом, не будь ще одної випадковості, а саме – зустрічі фон Неймана з лейтенантом Германом Гольдштейном.

Декілька слів про Гольдштейна. Цей зовсім не типовий армійський офіцер, професор математики з Мічіганського університету, після виклику на військову службу отримав чин лейтенанта і керував розрахунком артилерійських таблиць в балістичній лабораторії при полігоні. Роботу виконували сотні жінок, які використовували механічні арифмометри, у ті часи саме жінок-обчислювачів і називали комп’ютерами. Обсяг необхідних обчислень був жахливим: лише для розрахунку однієї траєкторії польоту снаряда потрібно було виконати 750 операцій, а для передачі військовим гармату необхідно було забезпечити як мінімум розрахунками 3 тис. траєкторій.

Гольдштейн, що відповідав за цю роботу, активно шукав шляхи вирішення проблеми прискорення розрахунку, і одного дня один з колег показав йому статтю «Використання високошвидкісних електронних ламп для обчислювальних пристроїв». Її написав у 1942 році співробітник Муровської школи Джон Мочлі (сьогодні Moore School of Electrical Engineering входить до складу університету штату Пенсільванія). Оцінивши прочитане, Гольдштейн негайно поїхав у Муровську школу і зробив все можливе, перш за все забезпечивши фінансування проекту, який спочатку називався Project PX, а потім став іменуватися ENIAC.

Фон Нейман усвідомив, що необхідно скористатися ідеєю машини Тьюрінга, для чого зрівняти у правах програми та дані і перенести гіпотетичну тьюринговську безкінечну стрічку із записаними на ній кодами команд в оперативну пам’ять комп’ютера. У такому разі програмування зводиться до запису послідовності команд у пам’ять. Ця процедура помітно простіша за ручну комутацію сотень або тисяч дротів. Крім того, у текст програм можна вставляти команди управління, а це означало – виконувати переходи та цикли. Створення машини з програмою, яка зберігається у пам’яті, поклало початок тому, що ми сьогодні називаємо програмуванням.

Менше ніж за рік після приєднання до групи фон Нейман своє відкриття виклав в одному з самих неоднозначних у всій історії комп’ютерної науки документі. Він підготував звіт на 101 сторінці машинописного тексту, в якому узагальнив плани роботи над машиною EDVAC. Цей звіт, що мав назву “Попередня доповідь, про машину EDVAC”, був прекрасним описом не тільки самої машини, але й її логічних властивостей. Фон Нейман розглядав цю роботу лише як нарис, призначений для обговорення членами робочої групи EDVAC. Проте 1 червня 1945 р. один з членів групи, Герман Гольдштейн, військовий представник, який запропонував фон Нейману взяти участь у проекті, розіслав цей звіт більш ніж 30 фахівцям під тим самим заголовком – “Попередня доповідь про машину EDVAC, причому фон Нейман фігурував як єдиний автор звіту.

У своєму історичному звіті Джон фон Нейман виділив та детально описав п’ять ключових компонентів того, що нині називають “архітектурою фон Неймана”. Щоб комп’ютер був ефективним та універсальним інструментом, він повинен включати такі структури: Центральний арифметико-логічний пристрій, Центральний пристрій управління, що “диригує” операціями, запам’ятовуючий пристрій, або пам’ять, а також Пристрій введення-виведення інформації. Фон Нейман також відзначав, що ця система повинна працювати з двійковими числами, бути електронним, а не механічним пристроєм, і виконувати операції послідовно, одну за одною.

Побачивши, скільки галасу наробив звіт фон Неймана, Моучлі та Еккерт були глибоко обурені. Свого часу з міркувань секретності вони не змогли опублікувати ніяких повідомлень про свій винахід. І раптом Гольдштейн, порушивши секретність, надав трибуну людині, яка тільки-тільки приєдналася до проекту.

Передчасне розповсюдження звіту стало причиною багаторічного конфлікту і кінець кінцем призвело до того, що Моучлі та Еккерту так і не вдалося відстояти своє право на патент. З низки причин (у тому числі і історія із звітом) Моучлі та Екерт у березні 1946 р. покинули Пенсільванський університет, внаслідок чого довелося припинити роботи над машиною EDVAC.

Поширення звіту відкрило можливість для розробки комп’ютерів в інших країнах, перш за все в цьому досягла успіху Британія. Безумовно, документ став відомий в СРСР і сприяв початку вітчизняних робіт зі створення ЕОМ.

Серед тих, хто отримав екземпляр звіту про проект EDVAC, був співробітник британської Національної фізичної лабораторії Дж. Уомерзлі. Його запросили до США для знайомства з роботами над машинами ENIAC і “Марк-1”. Повернувшись до Англії, він привіз з собою примірник звіту та пристрастне бажання почати аналогічні розробки у своїй країні.

Для роботи над проектом він запросив математика Алана Тьюрінга (1912-1954), який під час війни брав участь в створенні надсекретної англійської декодуючої машини “Колос” (Colossus, 1943 р.), в якій замість електромеханічних реле містилося близько 2000 електронних вакуумних ламп.

Свій внесок в теорію обчислень Тьюрінг зробив десятиліттям раніше, коли у віці 25 років (у 1936 р.), будучи студентом Кембріджського університету, опублікував статтю “Про обчислювальні числа”, якій призначено було зіграти важливу роль у розвитку обчислювальної математики та інформатики. У ній описувався гіпотетичний (абстрактний) пристрій, придатний для вирішення будь-якого вирішуваного математичного або логічного завдання. Мета Тьюрінга полягала не у винаході комп’ютера, а в описі завдань, що не мають рішення. Разом з тим в гіпотетичній машині Тюрінга були передбачені деякі риси сучасних комп’ютерів. Так, наприклад, Універсальна Машина Тьюрінга є прообразом універсальної ЕОМ, в якій алгоритм (машина Т) у вигляді програми та початкових даних поміщаються в оперативному пристрої ЕОМ, яка відіграє роль нескінченної вхідної стрічки Машини Тьюрінга.

«Колос» став першим повністю електронним обчислювальним пристроєм. У ньому використовувалася велика кількість електровакуумних ламп, введення інформації виконувалось з перфострічки. «Колос» можна було налаштувати на виконання різних операцій булевої логіки, але він не був Тьюрінг-повною машиною. Крім Colossus Mk I, було зібрано ще дев'ять моделей Mk II. Інформація про існування цієї машини трималася в секреті до 1970-х рр. Через свою секретність, «Колос» не згадано в багатьох працях з історії комп'ютерів.

Завдяки Тьюрінгу машина “Колос” прекрасно впоралася з розшифровкою донесень німецької машини “Загадка” (“Енігма”). В «Енігме» була алфавітна клавіатура та набір з 26 лампочок. Натиснення , кожної літери викликало загоряння певної лампочки відповідної іншій літері. Якщо ви набирали літерами слово «dog», запалювалися лампочки, що відповідали буквам «rlu». Відправник посилав ці букви азбукою Морзе, одержувач друкував їх на алфавітній клавіатурі своєї «Енігми», і там спалахували лампочки, що означають слово «dog».

Всередині «Енігми» був набір шестерінок, які забезпечували зв’язок між вхідними та закодованими літерами. Плюс – пристрій, що дозволяв міняти код, тобто, міняти співвідношення літер та лампочок. Його міняли кожну добу, опівночі. Щоб розшифрувати такий код перерахунком, потрібно було перевірити логічні ланцюжки у кількості 15-ти квінтилліонів (одиниця з вісімнадцятьма нулями). Особливість німецької системи шифрування за допомогою «Енігми» полягала у тому, що навіть володіння зразком самої машини не забезпечувало розшифровки.

Погубив «Енігму» німецький педантизм – Тьюрінг помітив, що в німецьких шифровках регулярно повторюються декілька коротких однакових фраз. На подібних повторах дешифровщики почали будувати і перевіряти припущення, що зводилися всього лише до мільйона задач, які могла швидко вирішити машина Т’юринга – “Колос”.

Під час роботи машина “Колос” видавала характерний цокаючий звук – коли перемикалися реле, перевіряючі один логічний ланцюжок за іншим (відбувався звичайний перебір комбінацій). За цей звук дешифровщики прозвали машину Тьюрінга «Бомбою». Одна «Бомба» могла зламувати добовий код «Енігми» за одну годину.

Тисячі перехоплених за день ворожих повідомлень вводилися у пам’ять “Колоса” у вигляді закодованих символів на перфострічці. Стрічку вводили у фотоелектричний зчитуючий пристрій, який сканував її з дивовижною швидкістю, – 5000 символів за секунду, після чого у пошуках відповідності машина співставляла інформаційне повідомлення з вже відомими кодами “Загадки”. Кожна машина мала п’ять зчитуючих пристроїв, в результаті за секунду оброблялося близько 25000 символів.

Деякі автори статей вважають, що Тьюрінга часто помилково називають автором архітектури машини “Колос”. У тому, що Тьюрінг мав до цієї машини лише непряме відношення, переконує факт, що вона була зроблена не за його схемою. Архітектура “Колос” ближче до Гарвардської архітектури – звідси її фантастична продуктивність.

Хоча використання вакуумних ламп зробило значний крок вперед у розвитку обчислювальної техніки, “Колос” все ж таки був спеціалізованою машиною, застосування якої обмежувалося розшифровкою секретних кодів.

Приблизно у той же час Конрад Цузе звернувся до уряду Німеччини з проханням про виділення коштів на створення аналогічного пристрою для дешифровки англійських секретних кодів, нічого не знаючи про машину “Колос”, але отримав відмову.

Отримавши завдання Уомерзлі (вивчити проект фон Неймана та побудувати комп’ютер, подібний “Едвак”), Тюрінг розробив план створення машини АСЕ (Automatic Computing Engine – автоматичний обчислювальний пристрій). Проте проект АСЕ натрапив на цілу низку бюрократичних перепон, що змусило Тюрінга відмовитися від роботи задовго до того, як у 1950 р. вийшов зменшений варіант машини.

Наступну “зупинку” Тюрінг зробив у Манчестерському університеті, де під керівництвом англійського математика Макса Ньюмена велися роботи над комп’ютерним проектом “Марк-1” (“тезкою” американського “Марк-1”). Внутрішня пам’ять “Марк-1” була побудована на 6 електронно-променевих трубках. Офіційно англійська машина називалася EDSAC (Electronic Delay Storage Automatic Calculator – електронний автоматичний калькулятор з пам’яттю на лініях затримки). 21 червня 1948 р. манчестерський “Марк-1” реалізував першу у світі програму, що зберігалася у пам’яті машини, – пошук найбільшого співмножника заданого числа.

Поява комп’ютерів, які забезпечені внутрішньою пам’яттю та схемами обробки двійкових даних, впритул наблизила обчислювальну науку до усвідомлення величезних можливостей подібних універсальних машин. Проте Алан Тьюрінг та інші фахівці чітко розуміли, що для більшості програмістів спілкування з машиною на мові ланцюжків нулів та одиниць (тобто за допомогою так званого машинного коду) виявиться достатньо важкою справою. Першою спробою полегшити роботу програміста можна вважати розроблене Тьюрінгом кодування довгих рядків двійкових нулів та одиниць, де використовувалися комбінації телетайпних символів, які вводилися у комп’ютер з паперової перфострічки.

Ймовірно, Тьюрінг міг би ще багато чого досягти у цій області, але цьому заважала його ексцентричність. Тьюрінг захопився проблемами машинного інтелекту, почав працювати в області біології. У 1950 році Алан Тьюрінг запропонував свій оригінальний тест як спосіб визначити, чи може комп'ютерна програма думати як людина. У ході випробування кілька суддів повинні спілкуватися одночасно з комп'ютером і людиною, і за результатами спілкування визначити, хто із співрозмовників робот, а хто – людина. Якщо судді повірять комп'ютерній програмі, значить, вона дійсно володіє штучним інтелектом.

Перший тест Тьюринга був проведений 8 листопада 1991 в Музеї комп'ютерної техніки Бостона. Серед учасників було вісім комп'ютерних програм, які спілкувалися з суддями через модеми, і дві людини, також доступні в режимі віддаленого зв'язку. Судді бачили тільки номер терміналу (від 1 до 10) і назви тем для спілкування. Ось деякі з тем: «Сухий мартіні», «Шекспір», «Романтичні відносини». Теми для розмови були запропоновані доктором Робертом Епштейном, одним з організаторів заходу. П'ять з десяти суддів вирішили, що під ніком (nick, nickname  – прізвисько, анонім) Whimsical Conversation (Ексцентрична бесіда) ховається людина.

Насправді це був комп'ютер під управлінням програми PC Therapist III. І це була перша часткова перемога, але поки що жодна машина, яка володіє штучним інтелектом, не пройшла повністью тест Тьюрінга.

Заслуги Алана Тьюрінга були гідно оцінені: після розгрому Німеччини він отримав орден, був включений в наукову групу, що займалася створенням британської електронно-обчислювальної машини. У 1951 р. у Манчестері почав працювати один з перших у світі комп'ютерів. Тьюрінг займався розробкою програмного забезпечення для нього. Тоді він написав і першу шахову програму для ЕОМ. Це був тільки алгоритм, тому що комп'ютера, здатного виконати цю програму, ще не існувало.

Життя Тьюрінга зламав випадок. Все звалилося буквально в один день. У 1952 р. квартиру Тьюрінга обікрали. У ході розслідування з'ясувалося, що це зробив один з друзів його сексуального партнера. Вчений ніколи не приховував своєї «нетрадиційної сексуальної орієнтації», але й зухвало себе не вів. Проте скандал з крадіжкою отримав широкий розголос, і в результаті звинувачення в «непристойній поведінці» було висунуто проти самого Тьюрінга. 31 березня 1953 відбувся суд. Вирок припускав вибір: або тюремне ув'язнення, або ін'єкції жіночого гормону естрогену (спосіб хімічної кастрації). Він вибрав останнє. З Департаменту кодів його звільнили. Позбавили допуску до секретних матеріалів. Правда, колектив викладачів Манчестерського університету взяв Тьюринга на поруки, але він і в університеті майже не з'являвся.

Складнощі виникли у нього і в особистому житті. У 1954 р., займаючись грою, яку він назвав “нежилий острів”, сенс якої полягав у виготовленні хімічних речовин із звичайних побутових продуктів, Тьюрінг отримав ціаністий калій і 7 червня 1954 р. розчин ціаніду Тьюринг впорснув в яблуко. Надкусивши його, він помер. Кажуть, саме цей плід, знайдений потім на нічному столику Алана, і став емблемою знаменитої комп'ютерної фірми «Еппл». Експертиза кваліфікувала його смерть як самогубство. Він помер у віці 41 року.

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

Премія щорічно вручається одному або кільком фахівцям у галузі інформатики та обчислювальної техніки, чий внесок у цій області зробив сильний і тривалий вплив на комп'ютерне співтовариство. Премія може бути присуджена одній людині не більше одного разу. У сфері інформаційних технологій премія Тьюрінга має статус, аналогічний Нобелівської премії в академічних науках. Вперше Премія Тьюрінга була присуджена в 1966 році Алану Перліс за розвиток технології створення компіляторів.

На даний час премія спонсорується корпораціями Intel і Google і становить 250 000 доларів США.