Рейтинг користувача: 5 / 5

Активна зіркаАктивна зіркаАктивна зіркаАктивна зіркаАктивна зірка
 

Розділ 1. Елементи обчислювальних машин

1.1. Архітектура комп’ютерів

Вперше означення терміну “архітектура комп’ютера” було зроблене в 1964 році розробниками комп’ютера IBM 360 Г. Амдалем та його колегами. З їхньої точки зору, архітектура комп’ютера – це його структура і поведінка як їх бачить програміст на мові асемблер. Вона включає наступне: формати даних і команд, методи адресації, систему команд, а також загальну організацію процесора, основної пам’яті і пристроїв введення-виведення. Пізніше А. Пейджез з тієї ж компанії запропонував розуміти під архітектурою комп’ютера інтерфейс між його апаратним та програмним забезпеченням.

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

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

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

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

Значна кількість типів архітектури комп’ютера може бути виділена залежно від організації його вузлів, а саме процесора, пам’яті і пристроїв введення-виведення. Наприклад, це можуть бути комп’ютери з паралельною та конвеєрною обробкою даних, з ієрархічною та лінійною пам’яттю і т. д. Архітектура комп’ютера має визначальний вплив на його споживчі характеристики: коло вирішуваних задач, продуктивність, ємність основної пам’яті, ємність зовнішньої пам’яті, вартість, організація технічного обслуговування, надійність і т. д. []

Більшість сучасних комп’ютерів складається з двох чи більше рівнів. Зокрема Е. Таненбаум описує машини навіть із шістьма рівнями (рис. 1.1).

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

На цифровому логічному рівні об’єкти називаються вентилями. У кожного вентиля є одно або декілька цифрових вхідних даних (сигналів, представляючих 0 або 1). Вентиль обчислює прості функції цих сигналів, такі як І чи АБО.

На мікроархітектурному рівні є сукупності 8 або 32 регістрів, які формують локальну пам’ять та схему, яка називається арифметично-логічним пристроєм (АЛП). АЛП виконує прості арифметичні операції. Регістри разом з АЛП формують тракт даних, по якому надходять дані. Основна операція тракту полягає в наступному: вибирається один чи два регістри, АЛП виконує над ними будь-яку операцію, а результат розміщується в один із цих регістрів. На деяких машинах робота тракту даних контролюється спеціальною програмою, яка називається мікропрограмою. На машинах, де тракт даних контролюється програмним забезпеченням, мікропрограма – це інтерпретатор для команд на рівні 2. Мікропрограма викликає команди із пам’яті і виконує їх одну за іншою, використовуючи при цьому тракт даних. На комп’ютері з апаратним контролем тракту даних здійснюється така ж процедура, але при цьому немає програми, яка контролює інтерпретацію команд рівня 2.

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

Рівень операційної системи, як правило, гібридний. Більшість команд в його мові є також і на рівні архітектури системи команд (команди, що знаходяться на одному із рівнів, цілком можуть знаходитись на інших рівнях). У цього рівня є деякі додаткові особливості: набір нових команд, інша організація пам’яті, здатність виконувати дві і більше програм одночасно і деякі інші. Одна частина команд третього рівня інтерпретується операційною системою, а інша – мікропрограмою. Ось чому цей рівень рахується гібридним.

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

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

П’ятий рівень, як правило, складається із мов програмування, розроблених для прикладних програмістів. Такі мови називаються мовами високого рівня. Найбільш відомими серед них є Visual Basic, C, C++, Java тощо. Програми, написані на цих мовах, як правило транслюються на рівень 3 або 4 [].

1.2. Архітектурні принципи Джона фон Неймана

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

Фон Нейман зрозумів, що створення комп’ютерів з великою кількістю перемикачів та кабелів потребує багато часу та зусиль. Він дійшов до висновку, що програма повинна бути представлена в пам’яті комп’ютера у цифровій формі, разом з даними, і також зазначив, що десяткова арифметика, яка використовувалась в машині ENIAC, де кожний розряд представлявся за допомогою десяти електронних ламп (1 ввімкнута і 9 вимкнуті), повинна бути замінена паралельною бінарною арифметикою []. Основний проект, який описав фон Нейман, зараз відомий як фон-нейманівська обчислювальна машина, був використаний в EDSAC – першій машині з програмою в пам’яті. Архітектура цієї машини подана на рис. 1.2.

(Для ознайомлення з повним текстом статті необхідно залогінитись)