ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.12.2021
Просмотров: 6800
Скачиваний: 22
109
Якщо основна пам'ять може зберігати М слів, то, використовуючи двійкове кодування, необхідно m біт для представлення адрес всіх комірок пам'яті, де m =]log M[. Значення в дужках означає більше ціле. Якщо регістровий файл має N регістрів, то, використовуючи двійкове кодування, необхідно n біт для представлення адрес всіх регістрів, де n =]log N[. Оскільки число регістрів значно менше кількості комірок пам'яті, то і розрядність адреси для їх адресації буде значно меншою, а відповідно значно меншою буде і розрядність команди в цілому. Нехай для прикладу кількість виконуваних в комп'ютері команд рівна 256, тобто розрядність коду операції рівна 8 бітів, ємність основної пам'яті рівна 1ГБ, тобто розрядність адреси рівна ЗО бітів, а кількість регістрів регістрового файлу процесора рівна 64, тобто розрядність адреси рівна 6 бітів. На рис. 3.24 показано формати двоадресних команд при прямій адресації основної пам'яті та регістрового файлу процесора для наведеного прикладу.
Як видно з рисунка, в першому випадку розрядність команди рівна 68 бітів, тоді як в другому випадку розрядність команди рівна 20 бітів, тобто менша в 3,4 рази.
Для того, щоб розпізнати який тип пам'яті адресується - основна пам'ять чи регістровий файл процесора, до команди вводиться спеціальне поле типу пам'яті ТП, як це показано на рис. 3.25.
3.4.3. Непряма адресація
При непрямій адресації в адресному полі вказується місце розміщення адреси опе-ранда, а виконавча адреса знаходиться наступним чином: А = [А1], де А1 - адреса комірки пам'яті, в якій зберігається виконавча адреса. Адреса А із адресної частини АЧ команди поступає на адресні входи основної пам'яті ОП (рис. 3.26), з відповідної комірки осно-
110
вної пам'яті ОП вибирається адреса операнда, по якій в відповідну комірку або регістр в режимі запису записується операнд із регістра даних РгД, а в режимі зчитування зчитується операнд в регістр даних РгД. Якщо пам'ять може зберігати М слів, то, використовуючи двійкове кодування, необхідно m біт для представлення всіх адрес, де m =]log M[. Значення в дужках означає більше ціле. Для вибірки операнда необхідно здійснити два звернення до ОП.
Для зберігання адрес операндів можна використати регістровий файл процесора (рис. 3.27). Якщо регістровий файл може зберігати N слів, то, використовуючи двійкове кодування, необхідно п біт для представлення непрямої адреси в адресній частині команди, де n =]log N[, а розрядність регістрів буде рівною m =]log M[. Значення в дужках означає більше ціле. Для вибірки операнда необхідно здійснити одне звернення до регістрової пам'яті і одне звернення до основної пам'яті ОП. Такий підхід дозволяє при малій розрядності адресної частини команди п звертатися до пам'яті великої ємності маючи велику розрядність регістрів m.
Потрібно відзначити, що використання регістрової пам'яті також дозволяє суттєво прискорити процес визначення ефективної адреси, оскільки час вибірки з неї значно менший порівняно з часом вибірки з основної пам'яті.
Можливе використання так званої багаторівневої або каскадної непрямої адресації, коли для знаходження ефективної адреси потрібно виконати кілька звернень до пам'яті. Кількість кроків звернення до пам'яті, необхідних при і-рівневій непрямій адресації, на-
111
зивається рангом rі. Розрізняють перший, другий і т. д. ранги. Пряма адресація - це адресація нульового рангу (r0).
Непряма адресація служить для зменшення довжини програми з великою кількістю змінних адрес.
3.4.4. Способи адресації операндів на основі операції зміщення
При використанні адресації на основі операції зміщення виконавча адреса формується шляхом додавання вмісту одного з адресних полів команди до вмісту одного або декількох регістрів процесора, або шляхом виконання операції конкатенації, тобто приєднання старшої частини адреси до молодшої. Нижче розглядаються способи адресації на основі операції зміщення.
3.4.4.1. Відносна адресація
При відносній адресації для отримання виконавчої адреси операнда вміст D адресного поля команди додається до вмісту програмного лічильника ПЛ, як це показано на рис. 3.28. Тобто вміст адресного поля команди є зміщенням відносно адреси поточної команди. Даний тип адресації грунтується на тому, що при вибірці команд звернення відбувається до комірок пам'яті, розміщених поблизу одна від одної. Тим самим зменшується довжина адресної частини команди, оскільки довжина поля зміщення може бути досить малою. Більше того, при переміщенні програми в пам'яті значення зміщення не змінюється, оскільки взаємне розміщення в пам'яті команд програми при цьому не змінюється.
Цей тип адресації іще називається відносною адресацією з перемінною базою, оскільки тут в якості регістра бази використаний програмний лічильник і модифікація базової адреси здійснюється автоматично.
3.4.4.2. Базова адресація
При використанні базової адресації (або базування) адресна частина команди вміщує два поля. В першому полі знаходиться адреса В регістра із регістрового файлу процесора, в якому зберігається база, до якого додається зміщення D із другого поля і тим
112
самим формується виконавча адреса операнда (рис. 3.29). Ця адреса поступає на адресні входи основної пам'яті ОП, у відповідну комірку якої в режимі запису записується операнд із регістра даних РгД, а в режимі зчитування зчитується операнд в регістр даних РгД.
Даний спосіб адресації дозволяє працювати з операндами із деякого сегмента пам'яті не змінюючи базу Він ефективний при потребі обробки масиву даних. В якості бази тут виступає адреса першого елементу масиву, а всі інші його елементи вказуються шляхом додавання зміщення до адреси першого елементу масиву.
Якщо основна пам'ять може зберігати М слів, регістровий файл процесора може зберігати N слів, а сегмент має розмір L слів, то, використовуючи двійкове кодування, поле В буде займати п біт, де n =]log N[, поле D буде займати 1 біт, де 1 =]log 2L[, а розрядність регістрів буде рівною m =]log M[. Значення в дужках означає більше ціле.
Основна перевага відносної адресації - скорочення довжини команди за рахунок зменшення її адресної частини, а також спрощення розподілу пам'яті при написанні складних програм шляхом добавлення до кожного фрагменту програми відповідного значення базової адреси. Таким чином забезпечується переміщуваність фрагментів програми в полі пам'яті.
3.4.4.3. Індексна адресація
Індексна адресація використовується при виконанні циклів, коли потрібно збільшення або зменшення адреси на деяку величину. Цей спосіб адресації подібний до відносної адресації, при якій адреса може автоматично змінюватися в процесі виконання програми. Індексація є засобом для багатократного виконання одних і тих же відрізків програми над різними наборами (масивами) вхідних даних. Тим самим забезпечується мінімальна залежність довжини програми від кількості повторюваних відрізків програми. При цьому коди команд програми залишаються без змін. Для отримання виконавчої адреси адресна частина команди додається до вмісту спеціального регістра, в якому зберігається номер оброблюваного масиву чисел. Ці регістри називають індексними, а 'їх вміст - індексною величиною, або індексом (рис. 3.30).
113
Вказівка про індексну адресацію вміщується в полі типу адресації. При наявності кількох індексних регістрів в цих розрядах команди вказується номер того індексного регістра, в якому зберігається значення індексу оброблюваного в даний час масиву інформації. Індекси можуть зберігатися як в спеціальних індексних регістрах, так і в регістровій пам'яті процесора. Вміст індексних регістрів змінюється після закінчення деякого циклу обробки. При цьому до попереднього значення індексу добавляється приріст, значення якого залежить від розміщення операндів в пам'яті.
Різновидністю індексної адресації є автоіндексація, при якій значення індексу є відомим наперед. Найчастіше операнди розміщуються в пам'яті послідовно і тому це значення рівне +1 (так звана автоінкрементна адресація) або -1 (так звана автодекрементна адресація). Порядок формування адреси при використанні автоінкрементної та автоде-крементної адресації показано на рис. 3.31, де для забезпечення переміщення по комірках пам'яті використовується лічильник.
Операції індексної арифметики виконуються в спеціальному індексному арифметичному пристрої, або в арифметико-логічному пристрої процесора. Команди індексної арифметики входять до складу команд керування. Вони забезпечують зміну значення