ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.12.2021
Просмотров: 6806
Скачиваний: 22
114
індексу шляхом добавлення до нього приросту, перевірку закінчення індексного циклу та засилання початкових значень індексу. Значення індексів, приростів та інформаційні біти циклів формують керуюче слово, яке розміщується в одній або декількох командах керування. Послідовність таких управляючих слів забезпечує роботу з масивами даних.
3.4.5. Сторінкова адресація
При сторінковій адресації адресний простір пам'яті розбивається на сторінки рівного розміру. Сторінка має початкову адресу, яка використовується в якості бази та зберігається в спеціальному регістрі, який називається регістром адреси сторінки. В адресній частині команди вказується зміщення всередині сторінки, яке є молодшою частиною виконавчої адреси. Тобто виконавча адреса формується шляхом приєднання (конкатенації) зміщення з адресної частини команди до початкової адреси. База може зберігатися в одному з регістрів загального призначення, як це показано на рис. 3.32. Число з цього регістра береться в якості старших розрядів срА адреси, а зміщення з адресної частини команди - в якості молодших розрядів мрА адреси.
3.4.6. Неявна адресація
Існують способи адресації, при яких код адреси операнда в явному вигляді в команді відсутній. Так, використання одноадресного формату команди привело до того, що в команді адресується лише один з операндів, інші ж при цьому визначаються самим кодом операції. Наприклад, при виконанні арифметичних операцій адреса одного з операндів вказується в адресній частині команди, а інший операнд знаходиться в акумуляторі. Адреса останнього в команді не вказується, а є відомою наперед.
Неявна адресація дозволяє скоротити довжину команди, тому знайшла широке використання.
3.4.7. Стекова адресація
Зменшення довжини команди скорочує час виконання і економить пам'ять. Межею зменшення є безадресні команди, які можливі при використанні стекової адресації. Стекова адресація використовується в безадресних командах при роботі з масивами даних.
115
Широко використовується в мікропроцесорах і мікрокомп'ютерах. Принципи організації стекової адресації ілюструє рис. 3.33.
Стек - це, набір комірок пам'яті або регістрів, в яких дані масиву розміщуються в заданому порядку, а саме відповідно до правила організації пам'яті з послідовним доступом типу FILO. Місце розміщення першого даного масиву називається дном стека, а останнього - вершиною стека. Для запису та читання даних передбачено дві операції: push (вштовхування даних в стек) та pop (виштовхування даних зі стеку). Операції зовнішнього запису та читання можливі тільки з вершиною стека. На її номер вказує вміст вказівника стека. При запису всі дані в стеку зміщуються на одну позицію вниз, а при зчитуванні зміщуються на одну позицію вверх. На рисунку 3.34 показано функціонування стека при запису та зчитуванні даних при виконанні двомісної операції множення числа 50 на число 10 в арифметико-логічному пристрої із записом результату в стек.
3.4.8. Використання стекової адресації
Зазвичай в математиці прийнято записувати знак операції між операндами, наприклад a+b, c:d і т. д. Такий запис називають інфіксним. При використанні такого запису для обчислення складного виразу необхідно задавати пріоритети операцій. Наприклад, в алгебраїчному виразі
а + bc/d - f
пріоритети можуть бути наступні: х, /, +, -.
116
Інший підхід, який забезпечує правильне виконання інфіксного запису - використання дужок, причому, з тим, що обчислення проводиться від внутрішніх дужок до зовнішніх. В дужковій формі наведений вираз прийме вигляд:
(( а + ((bc)/d)) - f).
Замість аналізу пріоритету знаків операцій тут необхідно визначити дужки з найбільшою глибиною вкладення.
Для реалізації наведеного виразу в комп'ютері можна використати всі раніше описані способи адресації.
Польський математик Ян Лукашевич показав, що якщо знаки арифметичних операцій записувати перед операндами (префіксна форма) чи після операндів (постфіксна форма, або обернений польський запис), то для визначення порядку виконання операцій дужки стають непотрібними.
Так, для наведеного вище виразу префіксна форма має вигляд:
-+a/xbcdf,
а постфіксна форма має вигляд:
abcx d/ + f-.
Ця форма - обернений польський запис.
Обернений польський запис прекрасно підходить для проведення обчислень на комп'ютері зі стеком.
Розглянемо потактовий стан комірок стеку при реалізації раніше розглянутого виразу, записаного в постфіксній формі (рис. 3.36).
Якщо вираз складається із N символів, то алгоритм його обчислення на стеку можна представити у вигляді блок-схеми, показаної на рис. 3.35.
117
Для реалізації стека можуть бути
використані регістри. В цьому випадку
схема обчислень з використанням
стека має вигляд, показаний на рис.
3.37.
Алгоритм функціонування такий же, як вище описано функціонування на базі основної пам'яті ОП. Операція виконується над вмістом Ргі і результат розміщується в Ргі, а вміст нижніх регістрів зміщується на один крок вверх.
3.4.9. Вибір способів адресації операндів
В табл. 3.8 наведено перелік та короткий опис різних способів адресації, зроблений на основі вище наведеного розгляду. Кожний спосіб має свої переваги та сферу доцільного застосування.
'Таблиця 3.8
|
Основні способи адресації |
Спосіб адресації |
Місце розміщення операнда |
Безпосередня |
Значення операнда знаходиться в полі адресної частини команди |
Пряма |
Адреса операнда знаходиться в полі адресної частини команди |
Непряма |
Адресна частина команди вказує адресу розміщення операнда |
Базова |
Виконавча адреса формується шляхом додавання до вмісту регістра бази зміщення із поля адресної частини команди |
Відносна |
Виконавча адреса формується шляхом додавання вмісту адресного поля команди до вмісту програмного лічильника |
Індексна |
Виконавча адреса формується шляхом додавання вмісту адресного поля команди до вмісту спеціального регістра |
Неявна |
Адреса операнда в явному вигляді в команді відсутня |
Сторінкова |
Виконавча адреса формується шляхом конкатенації зміщення з адресної поля команди до початкової адреси |
Стекова |
Операнд розміщений у вершині стека |
118
Частота використання різних способів адресації в комп'ютерах залежить від багатьох факторів: типу архітектури, вимог до параметрів комп'ютера, характеру вирішуваних задач. За час існування обчислювальної техніки була створена велика кількість комп'ютерів, у яких застосовано різноманітні способи адресації та їх поєднання. Тому дати однозначну відповідь стосовно вибору найкращого набору способів адресації практично неможливо. Але такому вибору може допомогти аналіз частоти застосування різних способів адресації при вирішенні на комп'ютерах складних тестових задач, як наприклад, програм ТеХ, gcc та spice, як це показано на рис. 3.38, які тестувалися на комп'ютері VAX фірми DEC.
Видно, що з використовуваних способів адресації найчастіше застосовується безпосередня, базова та непряма регістрова (з використанням регістрового файла процесора) адресація. Виходячи з подібного типу аналізу, в новітніх комп'ютерах проведено суттєве скорочення використовуваних способів адресації, що дозволило спростити комп'ютери та за рахунок цього підвищити їх продуктивність.
3.5. Приклади форматів команд
При розгляді систем команд будемо використовувати розповсюджені скорочені позначення типів команд: RR - регістр-регістр, RI - регістр-безпосередній операнд, RS -регістр-пам'ять, RX - регістр-індексована пам'ять, SI - пам'ять-безпосередній операнд, SS - пам'ять-пам'ять, а також позначення: КОП - код операції, R-регістр, S - пам'ять, X - індекс, В - базова адреса, D - зміщення, А - адреса пам'яті, L - довжина, С -номер символу в складному слові.
Формати команд комп'ютерів різних типів детально розглянуті в літературі та в технічній документації на ці комп'ютери. На рис. 3.39 показано три групи узагальнених форматів команд, які використовувалися та використовуються зараз в комп'ютерах: а - змінний, b - фіксований та с - гібридний формати.