Архітектура фон Ноймана - Вікіпедія

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

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

АРХІТЕКТУРА ФОН НОЙМАНА (архітектура фон Ноймана-Екерта-Маклі), архітектура електронних обчислювальних машин, основною відмінністю якої від інших подібних архітектур є спільне зберігання даних та машинних команд в комірках однієї й тієї ж пам'яті, що унеможливлює їх розрізнення за способом представлення або кодування. Названа так на честь відомого математика та теоретика обчислювальної техніки Джона фон Ноймана (John von Neumann), та по сьогодні залишається домінуючою схемою організації ЕОМ загального призначення.

## [ред.] Передумови створення та першоджерела

Авторство концепції, покладеної в основу фон-нойманівської архітектури, насправді належить колективу авторів (Нойман, Дж. Екерт, Дж. Маклі), які працювали над створенням однієї з перших ЕОМ загального призначення з можливістю перепрограмування - ENIAC (1943) (зокрема фон Нойман був консультантом в цьому проекті), а потім вже глибше реалізована в машині EDVAC (1952). Самі принципи були сформульовані в декількох публікаціях, серед яких слід виділити таку як Burks, A. W., Goldstine, H. H., and von Neumann, J. Preliminary discussion of the logical design of an electronic computing instrument, 1945 ("Попередня дискусія про логічний устрій електронного обчислювального інструмента") та Von Neumann, J. First draft of a report on the EDVAC, 1946 ("Перший варіант доповіді про EDVAC").

Власне, головною проблемою, яка поставала перед "піонерами" обчислювальної техніки була надзвичайна складність введення алгоритму обчислень в ЕОМ, для чого доводилось мати справу з багаточисленними перемикачами, тумблерами, роз'ємами та іншими комутуючими елементами. Це ускладнювало процес, призводило до величезної кількості помилок та аж ніяк не додавало цим машинам універсальності.

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

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

Також в "Попередній дискусії" була досить докладно розглянута чотирикомпонентна структура обчислювального інструмента, яка зараз вважається класичною структурою фон-нойманівської машини, а саме: арифметичний пристрій, пристрій управління, пам'ять та пульт оператора.

## [ред.] Формальне визначення

Обчислювальна машина є машиною з архітектурою фон-ноймана, якщо:

1. Програма та дані зберігаються в одній загальній пам'яті.
2. Кожна комірка пам'яті машини ідентифікується унікальним номером, який називається адресою.
3. Різні слова інформації (команди та дані) розрізняються за способом використання, але не за способом кодування та структурою представлення в пам'яті.
4. Кожна програма виконується послідовно, починаючи з першої команди, якщо немає спеціальних вказівок. Для зміни цієї послідовності використовуються команди передачі управління.

## [ред.] Класична структура машини фон Ноймана

Машина фон Ноймана, як і практично кожна сучасна ЕОМ загального призначення, складається з чотирьох основних компонентів:

1. Операційний пристрій (ОП), який виконує команди з визначеного набору, який називається системою (набором) команд, над порціями інформації, яка зберігається відокремленій від операційного пристрою пам'яті (хоча сучасні архітектури мають в складі операційного пристрою додаткову пам'ять (зазвичай банк регістрів), в якій операнди зберігаються порівняно короткий час безпосередньо в процесі проведення обчислень.
2. Пристрій управління (ПУ), який організує послідовне виконання алгоритмів, розшифрування команд, які поступають із запам'ятовуючого пристрою (див. нижче), реагує на аварійні ситуації та виконує загальні функції управління всіма вузлами обчислювальної машини. Зазвичай ОП та ПУ об'єднуються в структуру, яка називається центральним процесором. Слід звернути увагу, що вимога саме послідовного, в порядку надходження з пам'яті (в порядку зміни адрес в лічильнику команд) виконання команд є принциповою. Архітектури, які не додержуються такого принципу, взагалі не вважаються фон-нойманівськими.
3. Запам'ятовуючий пристрій (ЗП) - масив комірок з унікальними ідентифікаторами (адресами), в яких зберігаються команди та дані.
4. Пристрій вводу-виводу (ПВВ), який забезпечує зв'язок ЕОМ з зовнішнім світом, різними пристроями, які передають інформацію на переробку в ЕОМ та приймають результати.

## [ред.] Принцип функціонування

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

Перед початком виконання програми в лічильник записується адреса її першої команди. Визначення адреси наступної команди відбувається за одним з наступних сценаріїв:

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

## [ред.] Недоліки та сучасні перспективи архітектури фон Ноймана

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

Можна виділити два основних вектори такої критики:

### [ред.] «Семантичний розрив»

Хоча це не стосується безпосередньо принципів фон-ноймана, але часто апелюють саме до "класичної архітектури фон-ноймана" в критиці її досить примітивного та низькорівневого набору команд, який, на думку критиків, абсолютно не відповідає сучасному стану справ в індустрії розробки програмного забезпечення, зокрема в наявності мов високого рівня, які набагато підвищують продуктивність праці програміста за рахунок пропонування йому більш високорівневих абстракцій, і потрібно зазвичай до декількох сот машинних команд замість однієї команди мови високого рівня. Цей дисбаланс в принципі успішно вирішується на програмному рівні за допомогою компіляторів, але в 60-70 роки ХХ століття було досить багато намагань реалізувати машинні мови високого рівня апаратно (див. Архітектура з розвинутими засобами інтерпретації). Серед вітчизняних розробок в цьому напрямі слід виділити ЕОМ серії "МИР", а серед серйозних критиків системи фон-ноймана, в тому числі і за низький семантичний рівень команд, академіка В. М. Глушкова. Певною мірою, намаганням "підвищити семантичний рівень" можна вважати і CISC-архітектури системи команд, хоча як довів час, перспективнішим виявився прямо зворотний напрямок максимальної "примітивізації" набору команд, реалізований в RISC-архітектурах.

### [ред.] Розділення операційного пристрою та пам'яті

Розділення запам'ятовуючого пристрою та пам'яті в класичній архітектурі фон-ноймана вважається її суттєвим недоліком. Полюбляють казати про так зване "пляшкове горличко" фон-нойманівської архітектури (термін, запропонований Джоном Бекусом (John Backus) в 1977. Це "горличко" створюється між операційним пристроєм (центральним процесором) і пам'яттю, адже швидкість обробки інформації в процесорі зазвичай є набагато більшою, аніж швидкість роботи запам'ятовуючого пристрою, який не встигає забезпечувати процесор новими порціями інформації, що призводить до простоїв. Проблема вирішується за рахунок побудови більш складної ієрархії пам'яті, зокрема введенням кеш-пам'яті, більш швидкої (але й більш дорогої, аніж основна), де зберігаються дані, які часто використовуються в обчисленнях, щоб не звертатись за ними до повільної основної пам'яті. Існують також і радикальні пропозиції, які в останній час почали втілюватись в життя, і полягають в створенні так званої "розумної пам'яті", яка б інтегрувала запам'ятовуючи комірки зі схемами обробки даних.

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

### [ред.] Послідовний принцип виконання

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

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

Така "непомітність" є принциповою. Фактично фоннейманівською в сучасних ЕОМ залишається саме архітектура обчислювальної машини (тобто програмна організація). Внутрішня організація сучасних процесорів радикально використовує нефоннойманівські принципи виконання команд, але "виведення" цих принципів безпосередньо в архітектуру ЕОМ, тобто відкриття їх для програміста, яке на перший погляд може здаватись доцільним, насправді може зруйнувати всю індустрію, і саме в цьому є секрет привабливості фоннейманівської архітектури. Фактично, ця концепція пропонує програмісту надзвичайно просту модель виконання програми, послідовну модель, яка співпадає з образом мислення більшості програмістів, яка є домінуючою в написанні програм. Явне паралельне програмування - це надзвичайно складна галузь, яка потребує повної перебудови образу мислення програміста, оперування більш складними абстракціями, застосування зовсім інших алгоритмів та структур даних. Тому збереження фоннейманівської архітектури, яким би стримуючим фактором воно не було, є абсолютно принциповим для проектувальників ЕОМ загального призначення.

## [ред.] Посилання

- H. Norton Riley, The von Neumann Architecture of Computer Systems
- von Neumann J. The First Draft report on the EDVAC (PDF)

## [ред.] Література

- Майерс Г. Архитектура современных ЭВМ. В 2-х книгах. М.:Мир, 1985
- John L. Hennessy, David A. Patterson, Computer Architecture: A Quantitative Approach, Third Edition, Morgan Kaufmann, 2002, 1100p (ISBN 1558603298)

## [ред.] Дивись також

- Архітектура ЕОМ
- Гарвардська архітектура
- Архітектура потоків даних
- Архітектура з розвинутими засобами інтерпретації
- Паралельна архітектура ЕОМ

| Ця стаття належить до вибраних статей за результатами голосування .

Отримано від "http://uk.wikipedia.org../../../%D0%B0/%D1%80/%D1%85/%D0%90%D1%80%D1%85%D1%96%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D1%84%D0%BE%D0%BD_%D0%9D%D0%BE%D0%B9%D0%BC%D0%B0%D0%BD%D0%B0_d48a.html"

Категорії: Архітектура ЕОМ | Вибрані статті

##### Views

- Стаття
- Обговорення
- Поточна версія

##### Пошук

##### Іншими мовами

- Asturianu
- Bosanski
- Deutsch
- English
- Español
- Français
- Hrvatski
- Magyar
- Íslenska
- Italiano
- 日本語
- 한국어
- Latviešu
- Nederlands
- Norsk (bokmål)
- Polski
- Português
- Русский
- Slovenčina
- Српски / Srpski
- Svenska
- 中文