2.1 Принципи побудови обчислювальної машини

В основі архітектури сучасних ОМ лежить представлення алгоритму розв'язання задачі у вигляді програми послідовних обчислень. Згідно зі стандартом ISO 2382/1-84, програма для ОМ – це «впорядкована послідовність команд, що підлягає обробці».

ОМ, де певним чином закодовані команди програми зберігаються в пам'яті, відома під назвою обчислювальної машини з програмою, що зберігається в пам'яті. Ідея належить творцям обчислювача ENIAC Еккерту, Мочлі і фон Нейману. Ще до завершення робіт над ENIAC вони приступили до нового проекту – EDVAC, головною особливістю якого стала концепція програми, що зберігалася в пам'яті. Ця концепція на довгі роки  визначила базові принципи побудови подальших поколінь обчислювальних машин. Щодо авторства існує декілька версій, але оскільки в закінченому вигляді ідея вперше була викладена в 1945 році в статті фон Неймана, саме його прізвище фігурує в позначенні архітектури подібних машин, які складають переважну частину сучасного парку ОМ і ОС.

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

Принцип двійкового кодування. Згідно з цим принципом, вся інформація, як дані, так і команди, кодуються двійковими цифрами 0 і 1. Кожен тип інформації подається двійковою послідовністю і має свій формат. Послідовність бітів у форматі, що має певний сенс, називається полем. У числовій інформації зазвичай виділяють поле знака і поле значущих розрядів. У форматі команди можна виділити (рис. 2.1) два поля : поле коду операції (КОп) і поле адрес (адресну частину – АЧ).

Рисунок 2.1 - Структура команди


Кодом операції є вказівка, яка операція повинна бути виконана, і задається за допомогою r-розрядної двійкової комбінації.

Вид адресної частини і число складових її адрес залежать від типу  команди: в командах перетворення даних АЧ містить адреси об'єктів обробки (операндів) і результату; в командах зміни порядку обчислень – адреса наступної команди програми; в командах вводу/виводу – номер пристрою вводу/виводу.

Адресна частина також подається двійковою послідовністю, довжину якої позначимо через р. Таким чином, команда в обчислювальній машині має вид (r + р) – розрядної двійкової комбінації.

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

Принцип однорідності пам'яті. Команди і дані зберігаються в одній і тій же пам'яті і зовні не відрізняються. Розпізнати їх можна тільки за способом використання. Це дозволяє проводити над командами ті ж операції, що і над числами, і, відповідно, відкриває ряд можливостей. Так, циклічно змінюючи адресну частину команди, можна забезпечити звернення до послідовних елементів масиву даних. Такий прийом носить назву модифікації команд і з позицій сучасного програмування не є оптимальним. Більш корисним є інший наслідок принципу однорідності, коли команди однієї програми можуть бути отримані як результат виконання іншої програми. Ця можливість лежить в основі трансляції – перекладу тексту програми з мови високого рівня на мову конкретної ОМ.

Концепція обчислювальної машини, викладена у статті фон Неймана, припускає єдину пам'ять для зберігання команд і даних. Такий підхід був прийнятий в обчислювальних машинах, що створювалися в Прінстонському університеті, через що і отримав назву прінстонської архітектури. Практично одночасно в Гарвардському університеті запропонували іншу модель, в якій  ОМ мала окрему пам'ять команд і окрему пам'ять даних. Цей вид архітектури називають гарвардською архітектурою. Довгі роки переважаючою була і залишається прінстонська архітектура, хоча вона породжує проблеми пропускної спроможності тракту «процесор - пам'ять». Останнім часом у зв'язку з широким використанням кеш-пам'яті розробники ОМ все частіше звертаються до гарвардської архітектури.

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

Фон-Нейманівська архітектура. У статті фон Неймана визначені основні пристрої ОМ, за допомогою яких повинні бути реалізовані вище перелічені принципи. Більшість сучасних ОМ за своєю структурою відповідають принципу програмного управління. Типова фон-нейманівська ОМ містить: пам'ять, пристрій управління, арифметико-логічний пристрій і пристрій вводу / виводу (рис. 2.2).

У будь-якій ОМ є засоби для введення програм і даних до них. Інформація поступає з приєднаних до ЕОМ периферійних пристроїв (ПП) введення.

Рисунок 2.2 - Структура фон-Нейманівської обчислювальної машини


Результати обчислень виводяться на периферійні пристрої виводу. Зв'язок і взаємодія ОМ і ПП забезпечують порти вводу і порти виводу. Терміном порт позначають апаратуру сполучення периферійного пристрою з ОМ і управління ним. Сукупність портів вводу і виводу називають пристроєм вводу/виводу (ПВВ) або модулем вводу/виводу ОМ (МВВ).

Введена інформація спочатку запам'ятовується в основній пам'яті, а потім переноситься у вторинну пам'ять, для тривалого зберігання. Щоб програма могла виконуватися, команди і дані повинні розташовуватися в основній пам'яті (ОП), організованій таким чином, що кожне двійкове слово зберігається в окремій комірці, що ідентифікується адресою, причому сусідні комірки  пам'яті мають наступні за порядком адреси. Доступ до будь-яких комірок запам'ятовуючого пристрою (ЗП) основної пам'яті може проводитися в довільній послідовності. Такий вид пам'яті відомий як пам'ять з довільним доступом (RAM). ОП сучасних ОМ в основному складається з напівпровідникових оперативних запам'ятовуючих пристроїв (ОЗП), які забезпечують як зчитування, так і запис інформації. Для таких ЗП характерна енергозалежність – інформація, що зберігається, втрачається при відключенні електроживлення.

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

Розмір комірки основної пам'яті зазвичай приймається рівним 8 двійковим розрядам – байту. Для зберігання великих чисел використовуються 2, 4 або 8 байтів, що розміщуються в комірках з послідовними адресами.

Для довготривалого зберігання великих програм і масивів даних в ОМ зазвичай є додаткова пам'ять, відома як вторинна. Вторинна пам'ять энергонезалежна і найчастіше реалізується на базі магнітних дисків. Інформація в ній зберігається у вигляді спеціальних програмно підтримуваних об'єктів – файлів (згідно зі стандартом ISO, файл – це «ідентифікована сукупність екземплярів повністю описаного в конкретній програмі типу даних, що знаходяться поза програмою в зовнішній пам'яті і доступних програмі за допомогою спеціальних операцій»).

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

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

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

2.2 Принцип дії фон-Нейманівської електронної обчислювальної машини

Програма у фон-нейманівській ЕОМ реалізується центральним  процесором (ЦП) за допомогою послідовного виконання команд, що утворюють цю програму. Дії, що потрібні для вибірки і виконання команди, називають циклом команди. В загальному випадку цикл команди включає декілька складових (етапів):

•    вибірку команди;

•    формування адреси наступної команди;

•    декодування команди;

•    обчислення адрес операндів;

•    вибірку операндів;

•    виконання операції;

•    запис результату.

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

Розглянемо  кожен з вище перелічених етапів стандартного циклу команди.

Етап вибірки команди. Цикл будь-якої команди починається з того, що центральний процесор витягує команду з пам'яті, використовуючи адресу, що зберігається в лічильнику команд (ЛК). Двійковий код команди поміщається в регістр команди (РК) і з цієї миті стає «видимим» для процесора. Лічильник команд і регістр команд розташовані в пристрої управління.

Система команд багатьох ОМ припускає декілька форматів команд, причому в різних форматах команда може займати 1, 2 або більше комірок. У цьому випадку етап вибірки команди можна вважати завершеним лише після того, як в РК буде поміщений повний код команди. Інформація про фактичну довжину команди міститься в полях коду операції і способу адресації. Зазвичай ці поля розташовують у першому слові коду команди, і для з'ясування необхідності продовження процесу вибірки необхідне попереднє декодування їх вмісту. Таке декодування може бути проведене після того, як перше слово коду команди опиниться в РК.

У разі багатослівного формату команди процес вибірки продовжується аж до занесення в РК всіх слів команди.

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

Етап декодування команди. Після вибірки команди вона повинна бути декодована, для чого ЦП розшифровує код команди, що знаходиться в РК. В результаті декодування з'ясовуються такі моменти:

-          чи знаходиться в РК повний код команди або потрібне дозавантаження решти слів команди;

-          які подальші дії потрібні для виконання даної команди;

-          якщо команда використовує операнди, то звідки вони повинні бути узяті (номер регістра або адреса комірки основної пам'яті);

-          якщо команда формує результат, то куди цей результат повинен бути направлений.

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

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

За наслідками декодування проводиться підготовка електронних схем ОМ до виконання наказаних командою дій.

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

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

Етап виконання операції. На цьому етапі в АЛП реалізується вказана в команді операція. Через відмінність суті кожної з команд ОМ, зміст цього етапу також суто індивідуальний.

Етап запису результату. Етап запису результату присутній в циклі тих команд, які припускають занесення результату в регістр або комірку основної пам'яті. Якщо отриманий результат буде використаний в наступній команді, то він може залишатися в регістрі АЛП.

2.3 Етапи розвитку архітектури фон Неймана

У 1946 році відомий американський математик Дж. фон Нейман вперше сформулював основні принципи побудови ЕОМ, що управляються програмно:

1)  принцип програмного управління – ЕОМ може автоматично перетворювати вихідні дані відповідно до заданої програми;

2)  принцип умовного переходу – надає гнучкість та універсальність програм за рахунок забезпечення можливості переходу в процесі розв'язання задачі на певну ділянку програми залежно від результатів проміжних обчислень або вихідних даних;

3)  принцип збереженої програми – програму розміщують у запам'ятовуючий пристрій ЕОМ;

4)  принцип довільного доступу до елементів пам'яті;

5)  принцип використання двійкової системи числення;

6)  принцип багаторівневої (ієрархічної) пам'яті.

Ці принципи актуальні і для сучасних ЕОМ, але зі створенням нових поколінь та сімейств машин вони доповнювались та уточнювались.

В ЕОМ, починаючи з третього покоління, додатково застосовуються такі принципи:

-          мультипрограмування – сумісне використання різних команд однієї й тієї ж або різних, незалежно одна від одної, програм, які зберігаються в оперативній пам'яті;

-          інформаційна та програмна сумісність – дає змогу виконувати наявні програми на різних моделях сімейства;

-          високий рівень технічної стандартизації – єдина для всіх машин номенклатура зовнішніх та інших пристроїв;

-          можливість організації багатоетапної роботи зі створення та удосконалення ЕОМ.

Комп'ютери четвертого покоління будуються за принципами:

-          багатопроцесорності – комутація декількох процесорів під час роботи зі спільною пам'яттю;

-          організації віртуальної пам'яті – забезпечує практично необмежений об'єм

-          адресного простору ОЗП;

-          широкого використання BIC та HBIC і макромодульної структури, в основі якої ідея побудови з великих стандартизованих блоків (макромодулів) функціонально гнучких обчислювальних систем;

-     використання внутрішніх мов високого рівня.

Комп'ютери п'ятого покоління відрізняються:

-   подальшим розвитком функції введення-виведення графіки, зображень, документів, мови;

-    можливістю діалогової обробки інформації за допомогою природної мови;

-    здатністю до самовдосконалення, до асоціативних побудов та отримання висновків.

Мови програмування в процесі форматування програм можуть реалізовувати безпосередній інтерфейс між людиною і машиною. Це мови надвисокого рівня, які забезпечують цю можливість:

-    підтриманням засобів верифікації та підвищенням загальної надійності програм;

-  забезпеченням розумної взаємодії користувачів з обчислювальною системою на різному рівні доступу до бази даних для вибору потрібної інформації та до бази знань для отримання нових уявлень, необхідних для розв'язання незнайомих задач;

-   використанням існуючих програмних фондів, орієнтованих на традиційну архітектуру ЕОМ.