
- •Мови, рівні і віртуальні машини
- •Сучасні багаторівневі машини
- •Поняття архітектури пк
- •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.6. Індексна адресація
Часто потрібно вміти звертатися до слів пам’яті по відомому зміщенню. Подібні приклади ми бачили в машині IJVM, де локальні змінні визначаються по зміщенню від регістру LV. Звертання до пам’яті по регістрі і константі зміщення називається індексною адресацією.
В машині IJVM при доступі до локальної перемінної використовується вказівник комірки пам’яті (LV) в регістрі плюс невелике зміщення в самій команді. Є і інший спосіб: вказівник комірки пам’яті в команді і невелике зміщення в регістрі. Щоб показати як це працює використаємо наступний приклад. У нас є два одновимірних масиви А і В по 1024 слова в кожнім. Нам потрібно вирахувати Аі І Ві для всіх пар, а потім з’єднати всі ці 1024 логічні вирази операцією АБО, щоб взнати чи є в цім наборі хоч одна пара, яка не дорівнює нулю. Один з варіантів – помістити адрес масиву А в один регістр, а адрес масиву В – в інший регістр, а потім по черзі перебирати елементи масивів. Така програма, звичайно, буде працювати, але її можна вдосконалити так, як показано в лістінгу 9.2.
Листинг 9.2. Програма на мові асемблера для обчислення операції або від (Аі і Ві ) для масиву з 1024 елементів.
MOV R1,#0 ; збирає результати виконання АБО в R1
MOV R2,#0 ; R2=і від значення А[ і ] і В[ і ]
MOV R3,#4096 ; R3=перше непотрібне значення індекса
LOOP: MOV R4,A(R2) ; R4=А[ і ]
AND R4,B(R2) ; R4=А[ і ] І В[ і ]
OR R1,R4
ADD R2,#4 ; і=і+4
CMP R2,R3 ; провірка на завершення
BLT LOOP ; якщо R2<R3, продовжити цикл
Тут нам потрібні 4 регістри:
R1 – містить результати сумування логічних операцій.
R2 – індекс і, який використовується для перебору елементів масиву.
R3 – константа 4096. Це саме менше значення і, яке не використовується.
R4 – тимчасовий регістр для зберігання кожної операції.
Після ініціалізації регістрів ми входимо в цикл з шести команд. Команда навпроти LOOP визиває елемент Аі в регістр R4. При обчисленні джерела тут використовується індексна адресація. Регістр (R2) і константа (адреса елемента А) додаються і отриманий результат використовується для звертання до пам’яті. Сума цих двох величин поступає в пам’ять але не зберігається ні в однім із видимих користувачем регістрів. Запис
MOV R4,A(R2)
означає, що для визначення пункту призначення використовується регістрова адресація, де R4 – це регістр, а для визначення джерела використовується індексна адресація, де А – це зміщення, а R2 – це регістр. Якщо А приймає значення, наприклад, 124300, то відповідна машинна команда буде виглядати так, як показано на рис.5.13.
-
MOV
R4
R2
124300
Рис.9.2 - Можливе представлення команди MOV R4,A(R2)
Під час першого проходження циклу регістр R2 приймає значення 0, тому потрібне нам слово А0 знаходиться в комірці з адресом 124300. Це слово загружається в регістр R4.При наступнім проходженні циклу R2 приймає значення 4, тому потрібне нам слово А1 знаходиться в комірці з адресом 124304 і т.д.
Як ми говорили вже раніше, зміщення - це вказівник комірки пам’яті, а значення регістра – це невелике ціле число, яке під час вирахування міняється. Така форма потребує щоб поле зміщення в команді було достатньо великим для зберігання адреси, тому такий спосіб не дуже ефективний. Проте цей спосіб часто виявляється найкращим.