
- •Мови, рівні і віртуальні машини
- •Сучасні багаторівневі машини
- •Поняття архітектури пк
- •1.4. Розвиток комп’ютерної архітектури
- •Розвиток багаторівневих машин
- •Типи сучасних еом
- •Питання до лекції
- •2.1. Принципи розробки сучасних комп'ютерів
- •2.2. Паралелізм на рівні команд
- •2.3. Конвеєри
- •2.4. Суперскалярні архітектури
- •2.5. Паралелізм на рівні процесорів
- •2.6. Векторні комп'ютери
- •Блок управління
- •2.7. Мультипроцессори
- •2.8. Мультикомпьютери
- •Питання до лекції
- •3. Основи комп’ютерної організації : пам’ять
- •3.1. Ієрархічна структура пам'яті
- •3.2. Загальні відомості про пам'ять
- •3.4. Методи звертання до пам'яті
- •3.5. Модулі пам'яті
- •3.6. Ряди і банки пам'яті
- •3.8. Код з виправленням помилок
- •3. 9. Скільки потрібно пам'яті
- •Питання до лекції
- •4. Цифровий рівень побудови ом
- •4.1. Вентилі і булева алгебра
- •4.2. Булева алгебра
- •4.3. Реалізація булевих функцій
- •4.4. Еквівалентність схем
- •Основні цифрові логічні схеми Інтегральні схеми
- •4.5. Комбінаційні схеми
- •3 Входи і 8 виходів
- •4.6. Арифметичні схеми.
- •4.7. Тактові генератори
- •Питання до лекції
- •Цифровий рівень побудови ом.
- •5. Цифровий логічний рівень архітектури: пам’ять, мікропроцесори
- •5.2. Синхронні sr-защіпки
- •5.3. Синхронні d-защіпки
- •5.4. Тригери (flip-flops)
- •5.5. Регістри
- •5.6. Організація пам'яті
- •Тригер (б)
- •Кожний ряд представляє одне з 3-бітних слів. При операції зчитування і запису завжди зчитується або записується ціле слово
- •5.7. Мікросхеми пам'яті
- •5.9. Мікросхеми процесорів
- •Стрілочки указують вхідні і вихідні сигнали. Короткі діагональні лінії вказують на наявність декількох висновків.
- •Питання до лекції
- •6. Шини
- •6.1. Ширина шини
- •6.2. Синхронізація шини
- •6.3. Синхронні шини
- •6.5. Асинхронні шини
- •6.6. Арбітраж шини
- •6.7. Принципи роботи шини
- •Питання до лекції
- •7. Мікроархітектурний рівень
- •7.1. Приклад мікроархітектури
- •7.2. Тракт даних
- •В цьому розділі
- •Табліця 7.1. Деякі комбінації сигналів аллу і відповідні їм функції
- •7.3. Синхронізація тракту даних
- •7.4. Робота пам'яті.
- •7.5. Мікрокоманди
- •7.6. Управління мікрокомандами: Mic-1
- •7.7. Приклад архітектури команд: ijvm
- •7.8. Модель пам'яті ijvm
- •Питання до лекції
- •8. Рівень архітектури команд
- •8.1. Моделі пам'яті
- •8.2. Загальний огляд рівня архітектури команд
- •8.3. Властивості рівня команд
- •8.4. Регістри
- •8.5. Команди
- •8.6. Загальний огляд рівня команд машини Pentium II
- •8.8. Загальний огляд рівня команд системи ultrasparc II
- •8.9. Загальний огляд віртуальної машини Java
- •8.10. Типи даних
- •8.11. Числові типи даних
- •8.12. Нечислові типи даних
- •8.13. Типи даних процесора Pentium II
- •Підтримувані типи відмічені хрестом (х)
- •8.14. Типи даних машини UltraSparc II
- •8.16. Типи даних віртуальної машини Java
- •8.17. Формати команд
- •Питання до лекції
- •9. Адресація
- •9.1. Способи адресації
- •9.2. Безпосередня адресація
- •9.3. Пряма адресація
- •9.4. Регістрова адресація
- •9.5. Непряма регістрова адресація
- •Лістинг 9.1 - Програма на асемблері для обрахунку суми елементів масиву.
- •9.6. Індексна адресація
- •Листинг 9.2. Програма на мові асемблера для обчислення операції або від (Аі і Ві ) для масиву з 1024 елементів.
- •9.7. Відносна індексна адресація
- •9.8. Стекова адресація
- •9.9. Зворотній польський запис
- •9.10. Обчислення формул в зворотнім польськім записі
- •Питання до лекції
1.
Цифровий комп'ютер – це машина, що може вирішувати задачі, виконуючи дані їй команди. Послідовність команд, що описують розв’язок визначеної задачі, називається програмою. Електронні схеми кожного комп'ютера можуть розпізнавати і виконувати обмежений набір простих команд. Усі програми перед виконанням повинні бути перетворені в послідовність таких команд.
Ці примітивні команди в сукупності складають мову, на якому люди можуть спілкуватися з комп'ютером. Така мова називається машинною мовою. Розроблювач при створенні нового комп'ютера повинний вирішувати, які команди включити в машинну мову цього комп'ютера. Це залежить від призначення комп'ютера, від того, які задачі він повинний виконувати. Звичайно намагаються зробити машинні команди як можна простіше, щоб уникнути складностей при конструюванні комп'ютера і знизити витрати на необхідну електроніку. Внаслідок того, що більшість машинних мов дуже примітивні, використовувати їхній важко й утомливо.
Це просте спостереження з часом привело до побудови ряду рівнів абстракцій, кожна з який надбудовується над абстракцією більш низького рівня. Саме в такий спосіб можна усунути складності при спілкуванні з комп'ютером. Такий підхід називається багаторівневою комп'ютерною організацією.
Мови, рівні і віртуальні машини
Існує величезна різниця в тому, що зручно для людей, і тому, що зручно для комп'ютерів. Люди хочуть зробити X, але комп'ютери можуть зробити тільки Y. Через це виникають проблеми. Проблему можна вирішити двома способами. Дані способу містять у собі розробку нових команд, що більш зручні для людини, ніж вбудовані машинні команди. Ці нові команди в сукупності формують мову, яку назвемо М1. Вбудовані машинні команди теж формують мову, яку назвемо М0. Комп'ютер може виконувати тільки програми, написані на його машинній мові М0. Згадані два способи рішення проблеми розрізняються тим, яким чином комп'ютер буде виконувати програми, написані мовою М1.
Перший спосіб виконання програми, написаної мовою М1, – заміна кожної команди на еквівалентний набір команд у мові М0. У цьому випадку комп'ютер виконує нову програму, написану мовою М0, замість старої програми, написаної на М1. Ця технологія називається трансляцією.
Другий спосіб – написання програми мовою М0, що бере програми, написані мовою М1, у якості вхідних даних, розглядає кожну команду по черзі і відразу виконує еквівалентний набір команд мови М0. Ця технологія не вимагає складання нової програми на М0. Вона називається інтерпретацією, а програма, що здійснює інтерпретацію, називається інтерпретатором.
Трансляція й інтерпретація подібні. При застосуванні обох методів комп'ютер в остаточному підсумку виконує набір команд мовою М0, еквівалентних командам М1. Розходження лише в тому, що при трансляції вся програма М1 перетворюється в програму М0, програма М1 відкидається, а нова програма на М0 завантажується в пам'ять комп'ютера і потім виконується.
При інтерпретації кожна команда програми на М1 перекодується в М0 и відразу ж виконується. На відміну від трансляції, тут не створюється нова програма на М0, а відбувається послідовне перекодування і виконання команд. Обидва ці методу, а також їхня комбінація широко використовуються.
Звичайно набагато простіше уявити собі існування гіпотетичного комп'ютера або віртуальної машини, для якої машинною мовою є мова М1, ніж думати про трансляцію й інтерпретацію. Назвемо таку віртуальну машину ММ 1, а віртуальну машину з мовою М0 – ММ0. Якби таку машину ММ 1 можна було б сконструювати без великих грошових витрат, мова М0 і машина, що виконує програми мовою М0, були б не потрібні. Можна було б просто писати програми мовою М1, а комп'ютер відразу б їхній виконував. Ці програми можуть транслюватися або інтерпретуватися програмою, написаної мовою М0, яка сама могла б виконуватися фактично існуючим комп'ютером. Іншими словами, можна писати програми для віртуальних машин, начебто вони дійсно існують.
Щоб трансляція й інтерпретація були доцільними, мови М0 і М1 не повинні сильно розрізнятися. Це значить, що мова М1 хоча і краща за М0, але все-таки далека від ідеалу.
Очевидний розв’язок цієї проблеми – створення ще одного набору команд, що у більшому ступені орієнтовані на людину й у меншому ступені на комп'ютер, за М1. Цей третій набір команд також формує мову, яку назвемо М2, а відповідну віртуальну машину – ММ 2. Людина може писати програми мовою М 2, так ніби віртуальна машина з машинною мовою М 2 дійсно існує. Такі програми можуть або транслюватися на мову М1, або виконуватися інтерпретатором, написаним мовою М1.
Винахід цілого ряду мов, кожний з який більш зручний для людини, ніж попередній, може продовжуватися доти, поки ми не дійдемо до зручної людині мови. Кожна така мова використовує попередню як основу, тому комп'ютер можна розглядати у вигляді ряду рівнів, як показано на рис.1.1. Мова, що знаходиться в самому низі ієрархічної структури – найпримітивніша, а найвища – найскладніша.
Віртуальна машина
Mn із
машинною мовою Яn
ретуються
програмою-інтерп-
ритатором, яка працює на ма-
рівень n шині більш нижчого рівня, або
. транслюються на машину мову
. машини більш нижчого рівня
.
Віртуальна машина
M3 із
машинною мовою Я3
рівень 3
Програми на мові Я1 або
інтерпретуються
програмами-інтерпритатором ,
Віртуальна машина
M2 із
машинною мовою Я2
р
івень
2
M0, або
транслюються
наЯ1чи Я0
Програми на мові Я1 або
Віртуальна машина
M1 із
машинною мовою Я1
програмами-інтерпритатором
,
рівень 1 які працюють на машині M0,
або транслюються на Я0
Віртуальна машина
M0 із
машинною мовою Я0
Програми Я0 безпосередньо
р івень 0 виконуються електронними
схемами
Рис. 1.1 Багаторівнева машина
Між мовою і віртуальною машиною існує важлива залежність. У кожної машини є якась визначена машинна мова, що складається з усіх команд, які ця машина може виконувати. По суті, машина визначає мову. Подібним чином мова визначає машину, що може виконувати всі програми, написані на цій мові.
Комп'ютер з п рівнями можна розглядати як п різних віртуальних машин, у кожної з яких є своя машинна мова. Терміни “рівень” і “віртуальна машина” використовуються як синоніми. Тільки програми, написані на М0, можуть виконуватися комп'ютером без застосування трансляції й інтерпретації. Програми, написані на М1, М2,..., Мп, повинні проходити через інтерпретатор більш низького рівня або транслюватися на мову, що відповідає більш низькому рівню.
Людині, що пише програми для віртуальної машини рівня п, не обов'язково знати про транслятори й інтерпретаторів більш низьких рівнів. Машина виконає ці програми, і не важливо, чи будуть вони виконуватися крок за кроком, чи інтерпретатором їх буде виконувати сама машина. В обох випадках результат той самий: програма буде виконана.
Однак тим, хто хоче зрозуміти, як у дійсності працює комп'ютер, або проектує нові комп'ютери, необхідно вивчити всі рівні. Поняття і технічні прийоми конструювання машин як системи рівнів, а також деталі рівнів складають основу архітектури комп’ютерів.