
- •Мови, рівні і віртуальні машини
- •Сучасні багаторівневі машини
- •Поняття архітектури пк
- •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. Обчислення формул в зворотнім польськім записі
- •Питання до лекції
Питання до лекції
Яке завдання мікро архітектурного рівня ?
2. Що таке тракт даних?
3. Поясніть рисунок 7.1.
4. Як відбувається синхронізація тракту даних.
5. Яким чином працює пам’ять?
6. Роз’ясніть управління мікрокомандами в Міс-1.
7. Охарактеризуйте модель пам’яті IJVM.
8. Рівень архітектури команд
У цьому розділі детально обговорюється рівень архітектури команд. Він розташований між мікроархітектурним рівнем і рівнем операційної системи, як показано на мал. 8.1. Історично цей рівень розвинувся перш за всіх решти рівнів і спочатку був єдиним. В наші дні цей рівень дуже часто називають «архітектурою» машини, а іноді (що неправильне) «мовою асемблера».
Рівень архітектури команд має особливе значення: він є зв'язуючою ланкою між програмним і апаратним забезпеченням. Звичайно, можна б було зробити так, щоб апаратне забезпечення відразу безпосередньо виконувало програми, написані на C, С++, FORTRAN 90 або інших мовах високого рівня, але це не дуже хороша ідея. Перевага компіляції перед інтерпретацією була б тоді втрачена. Крім того, з чисто практичних міркувань комп'ютери повинні уміти виконувати програми, написані на різних мовах, а не тільки на одній.
По суті, всі розробники вважають, що потрібно транслювати програми, написані на різних мовах високого рівня, в загальну проміжну форму — на рівень архітектури команд — і відповідно конструювати апаратне забезпечення, яке може безпосередньо виконувати програми цього рівня (рівня архітектури команд). Рівень архітектури команд зв'язує компілятори і апаратне забезпечення. Це мова, яка зрозуміла і компіляторам, і апаратному забезпеченню. На мал. 8.1 показаний взаємозв'язок компіляторів, рівня архітектури команд і апаратного забезпечення.
У ідеалі при створенні нової машини розробники архітектури команд повинні консультуватися і з укладачами компіляторів, і з тими, хто конструює апаратне забезпечення, щоб з'ясувати, якими особливостями повинен володіти рівень команд. Якщо укладачі компілятора вимагають наявності якоїсь особливості, яку інженери не можуть реалізувати, то така ідея не пройде. Так само, якщо розробники апаратного забезпечення хочуть ввести в комп'ютер яку-небудь нову особливість, але укладачі програмного забезпечення не знають, як побудувати програму, щоб використовувати цю особливість, то такий проект не буде ніколи втілений. Після довгих обговорень і моделювання з'явиться рівень команд, оптимізований для потрібних мов програмування, який і буде реалізований.
Але все це в теорії. А зараз перейдемо до суворої реальності. Коли з'являється нова машина, перше питання, яке задають всі потенційні покупці: «Чи сумісна машина з попередніми версіями?». Друге питання: «Чи можу я запустити на ній мою стару операційну систему?» І третє питання: «Чи працюватимуть мої прикладні програми на цій машині і чи не буде потрібно їх змінювати?» Якщо яке-небудь з цих питань одержує відповідь «немає», розробники повинні будуть пояснити, чому. Покупці рідко рвуться викинути все старе програмне забезпечення і почати все наново.
Мал. 8.1 - Рівень команд – це проміжна ланка між компіляторами і апаратним забезпеченням.
Цей факт примушує комп'ютерних розробників зберігати один і той же рівень команд в різних моделях або, принаймні, робити його назад сумісним. Під зворотною сумісністю ми розуміємо здатність нової машини виконувати старі програми без змін. Проте нова машина може містити нові команди і інші особливості, які можуть використовуватися новим програмним забезпеченням. Розробники повинні робити рівень команд сумісним з попередніми моделями, але вони мають право творити все що завгодно з апаратним забезпеченням, оскільки навряд чи кого-небудь з покупців хвилює, що є реальним апаратним забезпеченням і якими діями воно виконує. Вони можуть переходити від мікропрограмної розробки до безпосереднього виконання, додавати конвейєри, суперскалярні пристрої і т. п., при умові що збережеться зворотна сумісність з попереднім рівнем команд. Основна мета — переконатися, що старі програми працюють на новій машині. Тоді виникає проблема: побудова кращих машин, але із зворотною сумісністю.
Все це зовсім не значить, що розробка рівня команд не має ніякого значення. Добре розроблений рівень архітектури команд має величезні переваги перед поганим, особливо відносно обчислювальних можливостей і вартості. Продуктивність еквівалентних машин з різними рівнями команд може розрізнятися на 25%. Ми просто хочемо сказати, що ринок дещо ускладнює (хоча і не робить неможливим) усунення старої архітектури команд і введення нової. Проте іноді з'являються нові рівні команд універсального призначення, а на спеціалізованих ринках (наприклад, на ринку вбудованих систем або на ринку мультимедійних процесорів) вони виникають набагато частіше. Отже, важливо розуміти принципи розробки цього рівня .
Інша важлива якість рівня команд полягає в тому, що в більшості машин є, принаймні, два режими. Привілейований режим призначений для запуску операційної системи. Він дозволяє виконувати всі команди. Призначений для користувача режим призначений для запуску програмних додатків. Цей режим не дозволяє виконувати деякі чутливі команди (наприклад, ті, які безпосередньо маніпулюють кеш-пам'яттю). В цьому розділі ми в першу чергу зосередимося на командах і властивостях призначеного для користувача режиму.