Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VPKS_v2_UKR_new.doc
Скачиваний:
21
Добавлен:
11.09.2019
Размер:
2.31 Mб
Скачать

3. Методи адресації та типи даних Методи адресації

У машинах з регістрами загального призначення метод (або режим) адресації об'єктів, з якими маніпулює команда, може задавати константу, регістр або комірку пам'яті. Для звертання до комірки пам'яті процесор насамперед повинен обчислити дійсну або ефективну адресу пам'яті, що визначається заданим у команді методом адресації.

На рис.1 представлені всі основні методи адресації операндів, які реалізовані в комп'ютерах, розглянутих у дійсному огляді. Адресація безпосередніх даних і літеральних констант звичайно розглядається як один з методів адресації пам'яті (хоча значення даних, до яких у цьому випадку виробляються обіги, є частиною самої команди й обробляються в загальному потоці команд). Адресація регістрів, як правило, розглядається окремо. У даному розділі методи адресації, зв'язані з лічильником команд (адресація щодо лічильника команд) розглядаються окремо. Цей вид адресації використається головним чином для визначення програмних адрес у командах передачі керування.

На малюнку на прикладі команди додавання (Add) наведені найбільш уживані назви методів адресації, хоча при описі архітектури в документації різні виробники використають різні назви для цих методів. На цьому малюнку знак "(" використається для позначення оператора присвоювання, а буква М позначає пам'ять (Memory). Таким чином, M[R1] позначає вміст комірки пам'яті, адреса якої визначається вмістом регістра R1.

Використання складних методів адресації дозволяє істотно скоротити кількість команд у програмі, але при цьому значно збільшується складність апаратур. Виникає питання, а як часто ці методи адресації використовуються в реальних програмах? На рис. 2 представлені результати вимірів частоти використання різних методів адресації на прикладі трьох популярних програм (компілятора з мови Сі GCC, текстового редактора Te і САПР Spice), виконаних на комп'ютері VAX.

Метод адресації

Приклад команди

Зміст команди методаИспользование

Регістрова

Add R4,R3

R4(R4+R5Необхідне значення в регістрі

Безпосередня або літеральна

Add R4,#3

R4(R4+3 Для завдання констант

Базова зі зсувом

Add R4,100(R1)

R4(R4+M[100+R1]Для звертання до локальним змінних

Непряма регістрова

Add R4,(R1)

R4(R4+M[R1]Для обігу по покажчику або обчисленій адресі

Індексна

Add R3,(R1+R2)

R3(R3+M[R1+R2]Іноді корисна при роботі з масивами: R1 - база, R3 - індекс

Пряма або абсолютна

Add R1,(1000)

R1(R1+M[1000]Іноді корисна для звертання до статичних даних

Непряма

Add R1,@(R3)

R1(R1+M[M[R3]]Якщо R3-адреса покажчика p, те вибирається значення по цьому покажчику

Автоінкрементна

Add R1,(R2)+

R1(R1+M[R2] R2(R2+d Корисна для проходу в циклі по масиву із кроком: R2 - початок масиву В кожному циклі R2 одержує збільшення d

Автодекрементна

Add R1,(R2)-

R2(R2-d R1(R1+M[R2]Аналогічна попередньої Обидві можуть використовуватися для реалізації стека

Базова індексна зі зсувом і масштабуванням

Add R1,100(R2)[R3]

R1( R1+M[100]+R2+R3*d Для індексації масивів

Рис. 1. Методи адресації

Рис. 2 Частота використання різних методів адресації на програмах Te, Spice, GCC

Із цього малюнка видно, що безпосередня адресація й базова зі зсувом домінують.

При цьому основне питання, що виникає для методу базової адресації зі зсувом, пов'язаний з довжиною (розрядністю) зсуву. Вибір довжини зсуву в остаточному підсумку визначає довжину команди. Результати вимірів показали, що в переважній більшості випадків довжина зсуву не перевищує16 розрядів.

Це ж питання важливе й для безпосередньої адресації. Безпосередня адресація використовується при виконанні арифметичних операцій, операцій порівняння, а також для завантаження констант у регістри. Результати аналізу статистики показують, що в багатьох випадках 16 розрядів виявляється цілком достатньо (хоча для обчислення адрес набагато рідше використовуються й більше довгі константи).

Важливим питанням побудови будь-якої системи команд є оптимальне кодування команд. Воно визначається кількістю регістрів і застосовуваних методів адресації, а також складністю апаратури, необхідної для декодування. Саме тому в сучасних RISC-архітектурах використовуються досить прості методи адресації, що дозволяють різко спростити декодування команд. Більш складні й рідко, що зустрічаються в реальних програмах методи, адресації реалізуються за допомогою додаткових команд, що загалом кажучи приводить до збільшення розміру програмного коду. Однак таке збільшення довжини програми з лишком окупається можливістю простого збільшення тактової частоти RISC-процесорів. Цей процес ми можемо спостерігати сьогодні, коли максимальні тактові частоти практично всіх RISC-процесорів (Alpha, R4400, Hyper SPARC і Power2) перевищують тактову частоту, досягнуту процесором Pentium.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]