
- •Мови, рівні і віртуальні машини
- •Сучасні багаторівневі машини
- •Поняття архітектури пк
- •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. Обчислення формул в зворотнім польськім записі
- •Питання до лекції
9.1. Способи адресації
Дотепер ми не розповідали про те, як інтерпретуються біти адресного поля для знаходження операнда. Один з можливих варіантів полягає в тому, що вони містять адресу операнда. Крім величезного поля, необхідного для визначення повної адреси пам'яті, даний метод має ще одне обмеження: ця адреса повинна визначатися під час компіляції. Існують і інші можливості, які забезпечують коротші специфікації, а також можуть визначати адреси динамічно. У наступних розділах ми розглянемо деякі з цих форм, які називаються способами адресації.
9.2. Безпосередня адресація
Найпростіший спосіб визначення операнда — помістити в адресній частині сам операнд, а не адресу операнда або яку-небудь іншу інформацію, що описує, де знаходиться операнд. Такий операнд називається безпосереднім операндом, оскільки він автоматично викликається з пам'яті одночасно з командою; отже, він відразу безпосередньо стає доступним. Один з варіантів команди з безпосередньою адресою для завантаження у регістр R1 константи 4 показаний на рис. 9.1.
Рис. 9.1 - Команда з безпосередньою адресою для завантаження константи 4 в регістр 1
При безпосередній адресації не вимагається додаткового звернення до пам'яті для виклику операнда. Проте у такого способу адресації є і деякі недоліки. По-перше, у такий спосіб може працювати тільки з константами. По-друге., число значень обмежено розміром поля. Проте ця технологія використовується в багатьох архітектурі для визначення цілочисельних констант.
9.3. Пряма адресація
Наступний спосіб визначення операнда – просто дати його повний адрес. Такий спосіб називається прямою адресацією. Як і непряма адресація, пряма адресація має деяке обмеження: команда завжди має мати доступ тільки до одного і того ж адресу пам’яті. Тобто значення може змінюватися, а адрес – ні. Таким чином, пряма адресація може використовуватися тільки для доступу до глобальних призначень, адреса яких відома під час компіляції. Багато програм містять глобальні призначення, тому цей спосіб широко використовується. Таким чином, комп’ютер визначає які адреса непрямі, а які прямі, ми обговоримо пізніше.
9.4. Регістрова адресація
Регістрова адресація по суті схожа до прямої адресації, тільки в даному випадку замість комірки пам’яті визначається регістр. Оскільки регістри дуже важливі, цей спосіб адресації є поширеним на більшість комп’ютерів. Багато компіляторів доходять до великих розмірів, щоб визначити до яких змінних доступ буде найчастіше звертатись(наприклад індекс циклу), і поміщають ці змінні в регістри.
Такий спосіб адресації називають регістровою адресацією. В архітектурах з загрузкою і запам’ятовуванням, наприклад UltraSPARC, практично всі команди використовують виключно цей спосіб адресації. Він не використовується тільки в тому випадку, коли операнд переміщується з пам’яті в регістр (команда LOAD) чи з регістра в пам’ять (команда STORE). Навіть в цих командах один із операндів являється регістром – туди відправляється слово з пам’яті або звідти переміщається слово в пам’ять.