
- •Мови, рівні і віртуальні машини
- •Сучасні багаторівневі машини
- •Поняття архітектури пк
- •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.2. Паралелізм на рівні команд
Розробники комп'ютерів прагнуть до того, щоб поліпшити продуктивність машин, над якими вони працюють. Один із способів змусити процесори працювати швидше – збільшення їхньої швидкості, однак при цьому існують деякі технологічні обмеження, пов'язані з конкретним історичним періодом. Тому більшість розробників для досягнення кращої продуктивності при даній швидкості роботи процесора використовують паралелізм (можливість виконувати дві або більш операції одночасно).
Існує дві основні форми паралелізму: паралелізм на рівні команд і паралелізм на рівні процесорів. У першому випадку паралелізм здійснюється в межах окремих команд і забезпечує виконання великої кількості команд у секунду. В другому випадку над одною задачею працюють одночасно кілька процесорів. Кожен підхід має свої переваги.
2.3. Конвеєри
Уже багато років відомо, що головною перешкодою високої швидкості виконання команд є їхній виклик з пам'яті. Для розв'язку цієї проблеми розробники придумали засіб для виклику команд із пам'яті заздалегідь, щоб вони були в наявності в той момент, коли будуть необхідні. Ці команди розміщувалися в набір регістрів, що називався буфером вибірки з попередженням. Таким чином, коли була потрібна визначена команда, вона викликалася прямо з буфера, і не потрібно було чекати, поки вона зчитається з пам'яті. Ця ідея використовувалася ще при розробці IBM Stretch, що був сконструйований у 1959 році.
У дійсності процес вибірки з попередженням підрозділяє виконання команди на два етапи: виклик і власне виконання. Ідея конвеєра ще більше просунула цю стратегію вперед. Тепер команда підрозділялася вже не на два, а на кілька етапів, кожний з яких виконувався визначеною частиною апаратного забезпечення, причому всі ці частини могли працювати паралельно.
На рис. 2.1, а зображений конвеєр з 5 блоків, що називаються стадіями. Стадія С1 викликає команду з пам'яті і розміщує її в буфер, де вона зберігається доти, поки не буде потрібна. Стадія С2 декодує цю команду, визначаючи її тип і тип операндів, над якими вона буде робити визначені дії. Стадія СЗ визначає місцезнаходження операндів і викликає їх або з регістрів, або з пам'яті. Стадія С4 виконує команду, звичайно шляхом проводу операндів через тракт даних. І стадія С5 записує результат назад у потрібний регістр.
С1 С2 С3 С4 С5
С1
1 2 3 4 5 6 7 8 9
С2 1 2 3 4 5 6 7 8
С3 1 2 3 4 5 6 7 ...
С4 1 2 3 4 5 6
С5 1 2 3 4 5
1 2 3 4 5 6 7 8 9
Час
Рис. 2.1. Конвеєр з 5 стадій (а); стан кожної стадії в залено
сті від кількості пройдених циклів (б). (Показано 9 циклів)
На рис. 2.1, б зображено, як діє конвеєр у часі. Під час циклу 1 стадія С1 працює над командою 1, викликаючи її з пам'яті. Під час циклу 2 стадія С2 декодує команду 1, у той час як стадія С1 викликає з пам'яті команду 2. Під час циклу 3 стадія СЗ викликає операнди для команди 1, стадія С2 декодує команду 2, а стадія С1 викликає третю команду. Під час циклу 4 стадія С4 виконує команду 1, С3 викликає операнди для команди 2, С2 декодує команду 3, а С1 викликає команду 4. Нарешті, під час п'ятого циклу С5 записує результат виконання команди 1 назад у регістр, тоді як інші стадії працюють над наступними командами.
Припустимо, що час циклу в цієї машини 2 нс. Тоді для того, щоб одна команда пройшла через весь конвеєр, потрібно 10 нс. На перший погляд може показатися, що такий комп'ютер може виконувати 100 млн команд у секунду, у дійсності ж швидкість його роботи є набагато вищою. Під час кожного циклу (2 нс) завершується виконання однієї нової команди, тому машина виконує не 100 млн, а 500 млн команд у секунду.
Конвеєри дозволяють знайти компроміс між часом очікування (скільки часу займає виконання однієї команди) і пропускною здатністю процесора (скільки мільйонів команд у секунду виконує процесор). Якщо час циклу складає Т нс, а конвеєр містить п стадій, то час очікування складе пТ нс, а пропускна здатність – 1000/Т млн команд у секунду.