Користувач обмінюється інформацією з комп'ютером за допомогою команд і програм. Ідею керування обчислювальною машиною з використанням програми сформулювали ще в першій половині XIX ст. Чарльз Беббідж та Ада Лавлейс, але реалізована вона була лише через сто років. На перших комп'ютерах (у 40-х роках XX ст.) окрему команду деякої програми реалізовував електронний блок. Щоб перейти до іншої програми, потрібно було змінювати комутацію (з'єднання) електронних блоків, тобто структуру машини. Оскільки програмування зводилося до перемикання блоків, витрачався час на підготовку машини до роботи перед розв'язуванням кожної задачі.
У 1946 році американський математик Джон фон Нейман (1903-1957), використовуючи ідеї Ч. Беббіджа, сформулював загальні принципи будови комп’ютера, щоб він був універсальним та ефективним пристроєм для виконання обчислень та логічних операцій.
Фон Нейман виділив п’ять базових елементів комп’ютера:
арифметико-логічний пристрій;
керуючий пристрій, який організовує виконання програми;
запам’ятовуючий пристрій (оперативна пам'ять);
пристрої для введення інформації;
пристрої для виведення інформації.
За принципом фон Неймана математична модель комп’ютера складається з пам'яті (ЗП), керуючого пристрою, а також пристроїв введення та виведення. Усі команди програми записуються в осередках пам'яті, розташованих поруч, а дані їхнього обробки – в довільних осередках.
Модульний спосіб конструювання персонального комп’ютера разом з магістральним способом обміну інформацією і визначає магістрально-модульний принцип побудови комп’ютера.
Функціональна схема комп’ютера має вигляд, який наведено на рис. 1.
Рис.1 Функціональна схема будови комп’ютера
Будь-яка команда за принципом фон Неймана повинна складатися з:
вказівки, яка операція має бути виконана;
адрес осередків пам'яті, в яких зберігаються вихідні дані для зазначеної операції;
адрес осередків для запису результату.
Зазначені командами операції над конкретними вихідними даними виконуються арифметико-логічним пристроєм, а результати записуються в осередках пам'яті, тобто зберігаються у вигляді, зручному для подальшої машинної обробки, або передаються на пристрій виведення (монітор, принтер) і стають доступні людині.
Пристрій управління керує усіма частинами комп’ютера. Від нього на інші пристрої надходять управляючі сигнали, також від інших пристроїв він отримує інформацію про їх стан.
У пристрої є спеціальний регістр, званий «лічильником команд». Після завантаження вихідних даних та програми в пам’ять, лічильник команд записує адресу її 1-ї команди. Управляючий пристрій зчитує з пам'яті вміст осередку, адреса якої перебуває у лічильнику команд, і поміщає їх у регістр. Керуючий пристрій визначає операцію, яка відповідає конкретній команді, і позначає у пам'яті комп'ютера дані, адреси яких у ній вказані. Далі арифметико-логічний пристрій приступає до виконання операцію, після завершення якої вміст лічильника команд змінюється на одиницю, тобто вказує на наступну команду.
Принципи функціонування сучасних комп’ютерів:
Принцип двійкового кодування полягає у тому, що всі дані подаються у вигляді двійкових кодів.
Принцип програмного керування полягає у тому, що всі операції з опрацювання даних здійснюються відповідно до програм і ці програми розміщуються в пам’яті комп’ютера.
Принцип адресності полягає в такій організації пам’яті комп’ютера, за якої процесор може безпосередньо звернутись до даних, розміщених у будь-якій частині пам’яті. До того ж кожна мінімальна частина пам’яті (комірка пам’яті) має унікальне ім’я – адресу.
Принцип однорідності пам’яті полягає в тому, що всі дані, у тому числі й програми, зберігаються в одному і тому самому запам’ятовуючому пристрої.
Недоліки та сучасні перспективи залишаються предметом дискусій. Те, що машини, створені на принципах, висунутих цим видатним ученим, не досконалі, було помічено дуже давно. Недоліки принципів фон Неймана:
наявність семантичного розриву між мовами програмування високого рівня та системою команд;
проблема узгодження оперативної пам’яті та пропускної спроможності процесора;
планова криза програмного забезпечення, викликана тим, що витрати на його створення є набагато нижчою за вартість розробки апаратних засобів, і немає можливості повного тестування програми;
відсутність перспектив з погляду швидкодії, оскільки вже досягнуто його теоретичного ліміту.
Що стосується того, якому принципу не відповідає архітектура фон Неймана, то йдеться про паралельність організації великої кількості потоків даних та команд, властиву багатопроцесорній архітектурі.
Але саме принципи паралельної обробки інформації, закладені фон Нейманом, зробили можливим ривок швидкодії роботи комп'ютерних мереж останнього десятиліття.
Треба також відмітити, що багато ідей фон Неймана ще не отримали належного розвитку, наприклад, ідея про взаємозв'язок рівня складності і здатності системи до самовідтворення, про існування критичного рівня складності, нижче за яке система вироджується, а вище – знаходить здатність до самовідтворення (зокрема, роботи можуть почати розмножуватися, у тому числі і неконтрольованим чином). Величезне значення мають – і ще більше матимуть в майбутньому – його ідеї про побудову надійних пристроїв з ненадійних елементів.
Питання для перевірки:
Коли був створений перший комп’ютер?
Назвіть найважливіші етапи розвитку обчислювальної техніки до появи комп’ютерів?
Що передувало появі персональних комп’ютерів?
Охарактеризуйте п’ять поколінь комп’ютерної техніки.
Назвіть п’ять базових елементів комп’ютера, виділених фон Нейманом.
У чому полягає «принцип програмного кодування» фон Неймана?
Що ви розумієте під «принципом однорідності пам’яті»?
Назвіть принципи фон Неймана.
Який вплив зробили принципи фон Неймана на розвиток обчислювальної техніки?
Які ідеї фон Неймана ще чекають своєї реалізації?
Баглай Р.Є. Обчислювальна техніка та програмування [фондові лекції] / Баглай Р.Є. (електронний підручник у форматі pdf).
Войтюшенко Н.М. Інформатика і комп’ютерна техніка: навч.пос. [для студентів вищих навчальних закладів] / Н.М. Войтюшенко, А.І. Остапець. - [2-ге вид.] – К.: Центр учбової літератури, 2009. – 564 с.
Маценко В.Г. Обчислювальна техніка та програмування [навчальний посібник] / Маценко В.Г. – Чернівці:ЧНУ, 2010. – 112 с. (електронний варіант, формат djv)