
- •Мови, рівні і віртуальні машини
- •Сучасні багаторівневі машини
- •Поняття архітектури пк
- •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.7. Відносна індексна адресація
В деяких машинах використовується спосіб адресації, при якому адреса знаходиться шляхом сумування значень двох регістрів і зміщення. Такий підхід називається відносною індексною адресацією. Один з регістрів – це база, а другий – індекс. Така адресація дуже зручна при наступній ситуації. Поза циклом ми могли б помістити адресу елемента А в регістр R5, а адреса елемента В в регістр R6. Тоді ми могли б замінити дві перші команди циклу LOOP на
LOOP: MOV R4,(R2+R5)
AND R4,(R2+R6)
Було б ідеально якби існував спосіб адресації по сумі двох регістрів без зміщення. З іншої сторони, навіть команда з 8-бітним зміщенням була б великим досягненням, оскільки ми обидва зміщення могли б встановити на 0. Однак, якщо зміщення завжди складають 32 біти, тоді ми нічого не виграємо, використовуючи таку адресацію. На практиці машини з такою адресацією мають форму з 8-бітним і 16-бітним зміщенням.
9.8. Стекова адресація
Ми вже говорили, що необхідно зробити машинні команди як можна коротші. Кінцева межа в скорочені довжини адреси – це команди без адрес. Як ми бачили в главі 4, безадресні команди, наприклад IADD, можливі при наявності стека. В цім розділі ми розглянемо стекову адресацію більш детально.
9.9. Зворотній польський запис
В математиці існує давня традиція поміщати оператор між операндами (x+y), а не після операндів (xy+). Форма з оператором між операндами називається інфіксним записом. Форма з оператором після операндів називається постфіксним чи зворотнім польським записом в честь польського логіка Я.Лукашевича (1958), який вивчав вміст цього запису.
Зворотній
польський запис має ряд переваг над
інфіксним записом для вираження
алгебраїчних формул. По-перше, будь-яка
формула може бути виражена без дужок.
По-друге, вона зручна для обрахунку
формул в машинах з стеками. По-третє,
інфіксні оператори мають пріоритети,
які довільні і не бажані. Наприклад, ми
знаємо, що (a
b)+c
значить (a
b)+c,
а не a
(b+c),
оскільки довільно було визначено, що
множення має пріоритет над додаванням.
Але чи має пріоритет зсув вліво над
логічною операцією І ? Зворотній польський
запис відсторонює такі непорозуміння.
Рис. 9.3 - Кожен вагон представляє собою один символ в формулі, яку потрібно перетворити з інфіксної форми в зворотній польський запис.
Існує
декілька алгоритмів для перетворення
інфікс них формул в зворотній польський
запис. Нижче показана ідея Е.Дейкстри.
Припустимо, що формула складається з
наступних символів: змінних, двохоперандних
операндів +, -, *, /, а також лівої і правої
дужок. Щоб відмінити кінець формули, ми
будемо вставляти символ
після останнього символа одної формули
і перед першим словом наступної формули.
На рис. 9.3 зображена залізна дорога з Нью-Йорка в Каліфорнію з розвилкою, яка веде в Техас. Кожен символ формули представлений одним вагоном. Поїзд рухається на схід (на право). Перед розвилкою кожен вагон повинен зупинятись і дізнаватись, чи потрібно йому рухатись прямо в Каліфорнію, чи він по дорозі повинен повернути в Техас. Вагони, які містять змінні, завжди їдуть в Каліфорнію і ніколи не повертають в Техас. Вагони, які містять всі інші символи, повинні перед входженням в розвилку дізнаватись про вміст найближчого вагона, який відправився в Техас.
В таблиці на рис.5.15. показана залежність ситуації від того, який вагон відправився останнім в Техас і який вагон знаходиться перед розвилкою. Перший завжди відправляється в Техас. Числа відповідають наступним ситуаціям:
Вагон на розвилці направляється в Техас.
Останній вагон, який відправився в Техас, розвертається і направляється в Каліфорнію.
Вагон, який знаходиться на розвилці, і останній вагон, який відправився в Техас, зникають (тобто обидва знищуються).
Зупинка. Символи, які знаходяться в Каліфорнії, представляють собою формулу в зворотнім польськім записі, якщо читати зліва направо.
Зупинка. Виникла помилка. Початкова формула була не коректно збалансована.
-
Вагон на розвилці
+
P
*
/
(
)
Вагон, який відправився останнім в сторону Техаса
4
1
1
1
1
1
5
+
2
2
2
1
1
1
2
P
2
2
2
1
1
1
2
*
2
2
2
2
2
1
2
/
2
2
2
2
2
1
2
(
5
1
1
1
1
1
3
Рис. 9.4 - Алгоритм перетворення інфіксного запису в зворотній польський запис.
Після кожної дії проводиться нове порівняння вагона, який знаходиться на розвилці, і вагона, який на даний момент останнім відправився на Техас. Цей процес продовжується доти, поки не буде досягнуто кроку 4. Відмітимо, що лінія на Техас використовується як стек, де відправка вагона в Техас – це поміщення елемента в стек, а повернення вагона, відправленого в Техас, в сторону Каліфорнії – це витягування елемента із стеку.
Таблиця 9.1 - Деякі приклади інфіксних виразів і їх еквіваленти в зворотнім польськім записі.
Інфіксний запис |
Зворотній польський запис |
А+В С А В+С А В+С D (A+B)/(C-D) A B/C ((A+B) C+D)/(E+F+G) |
ABC + AB C+ AB C D + AB+CD-/ AB C/ AB+C D+E F+G/ |
Порядок змінних в інфіксному і польському записі однаковий. Проте, порядок операторів не завжди однаковий. В зворотнім польськім записі оператори появляються в тім порядку, в якім вони будуть виконуватися. В табл. 9.1 подані приклади інфікс них формул і їх еквівалентів в зворотнім польськім записі.