Файл: Мельник А. Архітектура комп\'ютера.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 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, де для забезпечення переміщення по комір­ках пам'яті використовується лічильник.

Операції індексної арифметики виконуються в спеціальному індексному арифме­тичному пристрої, або в арифметико-логічному пристрої процесора. Команди індексної арифметики входять до складу команд керування. Вони забезпечують зміну значення