
- •Мови, рівні і віртуальні машини
- •Сучасні багаторівневі машини
- •Поняття архітектури пк
- •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. Обчислення формул в зворотнім польськім записі
- •Питання до лекції
8.4. Регістри
У всіх комп'ютерах є декілька регістрів, які видно на рівні команд. Вони потрібні там для того, щоб контролювати виконання програми, зберігати часові результати, а також для деяких інших цілей. Звичайно регістри, які видно на мікроархітектурному рівні, наприклад TOS і MAR, не видно на рівні команд. Проте деякі з них, наприклад лічильник команд і покажчик стека, присутні на обох рівнях. Регістри, які видно на рівні команд, завжди видно на мікроархітектурному рівні, оскільки саме там вони реалізуються.
Регістри рівня команд можна розділити на дві категорії: спеціальні регістри і регістри загального призначення. Спеціальні регістри включають лічильник команд і покажчик стека, а також інші регістри з особливою функцією. Регістри загального призначення містять ключові локальні змінні і проміжні результати обчислень. Їх основна функція полягає в тому, щоб забезпечити швидкий доступ до часто використовуваних даних (звичайно уникаючи звернень до пам’яті). Машини RISC з високошвидкісними процесорами і повільній (відносно повільній) пам’яті звичайно містять як мінімум 32 регістри загального призначення, а в нових процесорах кількість цих регістрів постійно росте.
У деяких машинах регістри загального призначення повністю симетричні і взаємозамінні. Якщо всі регістри еквівалентні, для зберігання часового результату компілятор може використовувати і регістр R1, і регістр R25. Вибір регістра не має ніякого значення.
У інших машинах деякі регістри загального призначення можуть бути спеціалізовані. Наприклад, в процесорі Pentium II існує регістр EDX, який може використовуватися як регістр загального призначення, але який також одержує половину результату множення і містить половину діленого при ділені.
Навіть якщо регістри загального призначення повністю взаємозамінні, операційна система або компілятори часто приймають угоди про те, яким чином використовуються ці регістри. Наприклад, деякі регістри можуть містити параметри процедур, що викликаються, а інші можуть використовуватися як тимчасові регістри. Якщо компілятор поміщає важливу локальну змінну в регістр R1, а потім викликає бібліотечну процедуру, яка сприймає регістр R1 як тимчасовий регістр, доступний для неї, то коли бібліотечна процедура повертає значення, регістр R1 може містити непотрібні дані. А якщо існують які-небудь системні угоди з приводу того, як потрібно використовувати регістри, укладачі компіляторів і програмісти на мові асемблера повинні слідувати їм.
Окрім регістрів, доступних на рівні команд, завжди існує досить велика кількість спеціальних регістрів, доступних тільки в привілейованому режимі. Ці регістри контролюють різні блоки кеш-пам'яті, основну пам'ять, пристрої введення/виведення і інші елементи апаратного забезпечення машини. Дані регістри використовуються тільки операційною системою, тому компіляторам і користувачам не обов'язково знать про їх існування.
Є один регістр управління, який є привілейовано-користувацький гібрид. Це регістр прапора, або PSW (Program State Word — слово стану програми. Цей регістр містить різні біти, які потрібні центральному процесору. Найважливіші біти — це коди умови. Вони встановлюються в кожному циклі АЛУ і відображають стан результату попередньої операції. Біти коду умови включають:
N — встановлюється, якщо результат був негативним (Negative);
Z — встановлюється, якщо результат був рівний 0 (Zero);
V — встановлюється, якщо результат викликав переповнювання (oVerflow);
С — встановлюється, якщо результат викликав вихід перенесення найлівішого біта (Carry out);
А — встановлюється, якщо відбувся вихід перенесення бита 3 (Auxiliary carry — службове перенесення);
Р — встановлюється, якщо результат парний (Parity).
Коди умови дуже важливі, оскільки вони використовуються при порівняннях і умовних переходах. Наприклад, команда СMР звичайно віднімає один операнд з іншого і встановлює коди умови на основі одержаної різниці. Якщо операнди рівні, то різниця буде рівна 0 і в регістрі прапора буде встановлено біт Z. Подальша команда BEQ (Branch Equal - перехід у разі рівності) перевіряє біт Z і здійснює перехід, якщо він встановлений.
Регістр прапора містить не тільки коди умови. Його вміст змінюється від машини до машини. Додаткові поля вказують режим машини (наприклад, призначений для користувача або привілейований), трасовий біт (який використовується для відладки), рівень пріоритету процесора, а також статус дозволу переривань. Регістр прапора звичайно можна вважати в користувацькому режимі, але деякі поля можуть записуватися тільки в привілейованому режимі (наприклад, біт, який указує режим).