ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.12.2021
Просмотров: 6802
Скачиваний: 22
104
Архітектура типу регістр-пам'ять (рис. 3.18) передбачає вибірку та подачу в АЛП одного із операндів з пам'яті, а іншого - з регістра, тому характеризується вищою швидкодією ніж попередня. Тут в процесорі наявна регістрова пам'ять, причому регістри є програмно доступними.
В архітектурі типу регістр-регістр (рис. 3.19) дані в АЛП поступають лише з регістрів процесора, результати виконання операцій також записуються в регістри, а обмін між цими регістрами і пам'яттю здійснюється паралельно з роботою АЛП. Ця архітектура характеризується високою швидкодією, оскільки операції виконуються в АЛП з їх читанням-записом до регістрів, які є значно швидшими пам'яті. Крім того, для цієї архітектури характерною є фіксована довжина команд та однакова кількість тактів для виконання всіх команд.
Будь-який із регістрів загального призначення може бути використаний в якості акумулятора, адресного регістра, індексного регістра, стекового регістра, а в деяких ма-
105
шинах навіть в якості програмного лічильника. Більшість сучасних комп'ютерів побудовані на основі описаної архітектури. Це, зокрема, комп'ютери- Pentium, SPARC, Power PC, ARM та інші.
Разом з тим, за регістрами можуть бути закріплені конкретні функції - один набір служить в якості індексних регістрів, інший призначений для зберігання арифметичних операндів і т. д. Таким чином організовані регістри в комп'ютерах сім'ї CDC 6000/7000.
3.3.2. Порівняльний аналіз форматів команд
Таким чином, як видно з попереднього пункту та прикладів із табл. 3.7, при роботі з основною пам'яттю в комп'ютерах використовуються нуль-, одно-, дво-, три- і чотириадресні команди (рис. 3.20).
Розглянемо роботу комп'ютера з різними форматами команд на прикладі команди додавання двох чисел, яка найширше використовується. Нехай потрібно додати в АЛП число, яке знаходиться в пам'яті за адресою А, до числа, яке знаходиться в пам'яті за адресою В, і результат розмістити за адресою С:
С := [А] + [В].
В табл. 3.7 показана послідовність команд, які потрібно виконати при використанні трьох типів описаних архітектур для виконання операції додавання двох чисел.
|
|
|
|
Таблиця 3.7 |
|
|
Тип архітектури |
|
|
Стекова |
Акумуляторна |
На основі регістрів загального призначення |
||
Регістр-пам'ять |
Регістр-регістр |
Пам'ять-пам'ять |
||
Push A |
Load A |
Load R1,A |
Load Rl,A |
Add A,B,C |
Push В |
Add В |
Add Rl,B |
Load R2,B |
|
Add |
Store C |
Store C,R1 |
Add R3,R1,R2 |
|
Рор С |
|
|
Store C,R3 |
|
Тут А, В і C - адреси комірок пам'яті, в яких знаходяться числа А, В, С; Rl, R2 і R3 - адреси регістрів процесора.
При використанні триадресної команди та архітектури типу "пам'ять-пам'ять" вона символічно може бути записана наступним чином:
ADD A,B,C.
106
Якщо використовується двоадресна команда та архітектура типу "пам'ять-пам'ять", то для виконання поставленої задачі необхідно виконати дві команди:
ADD A,B, яка означає [А] := [А] + [В], MOVE А,С, яка означає [С] := [А],
або дві команди:
MOVE В,С, яка означає [С]:= [В], ADD А,С, яка означає [С] := [А] + [В].
Тут при виконанні двоадресної команди результат розміщується за адресою одного з операндів.
Одноадресна команда може бути реалізована з використанням акумуляторної архітектури. В цьому випадку операція С := [А] + [В] може бути виконана послідовністю із трьох команд:
LOAD А, яка означає АКК := [А],
ADD В, яка означає АКК := [АКК] + [В],
STORE С, яка означає С := [АКК].
При використанні архітектури на снові регістрів загального призначення, кожен з цих регістрів може бути використаний як акумулятор. Якщо таких регістрів r (зазвичай r рівне 8, 16, 32, 64), в полі команди необхідно добавити log2r бітів (3 - 6 бітів) для адресації регістрів, що беруть участь у виконанні операції. Це значно менше, ніж для адресації комірок пам'яті. Якщо Ri - і-й регістр регістрового файлу процесора, то команди з акумулятором можна замінити наступними:
LOAD A,Ri, яка означає Ргі := [А], ADD B,Ri, яка означає Ргі := [Ргі] + [В], STORE Ri,A, яка означає [А] := [Ргі].
Такого типу команди, коли одна частина адресного поля адресує основну пам'ять, а друга - регістровий файл, іноді називаються півтора адресними. Часто в комп'ютерах використовуються команди, в адресній частині яких вказуються тільки номери регістрів, наприклад:
ADD Ri,Rj, яка означає Rj := Ri + Kj
В цьому випадку команда є найкоротшою в порівнянні з іншими, та виконується в процесорі найшвидше.
Головні критерії вибору формату команд :
■ чим коротша команда, тим менша ємність пам'яті потрібна для її зберігання і тим менша розрядність шини команд;
107
■ чим більша адресність команди, тим менше відбувається звернень до пам'яті, тобто тим більша швидкодія комп'ютера.
Зазвичай шукається компромісне (оптимальне) рішення, і враховується, що розмір команди повинен бути узгодженим з розміром даних, оскільки вони зберігаються в одній пам'яті.
В перших комп'ютерах використовувалась архітектура на основі регістрів загального призначення типу "пам'ять-пам'ять". Але оскільки з розвитком елементної бази утворився великий розрив між швидкодією основної пам'яті та процесора, ця архітектура стала неефективною.
Після 1985 року більшість комп'ютерів будуються на основі архітектури типу ре-гістр-пам'ять або регістр-регістр. Цьому є дві причини:
-
перша - регістри процесора швидші пам'яті;
-
друга - регістри простіше і ефективніше використовуються комп'ютером.
В цьому випадку найважливішим є те, що регістри можуть бути використані для зберігання змінних. Тоді зменшується об'єм обміну з пам'яттю і прискорюється виконання програми, оскільки регістри швидші пам'яті. Крім того, зменшується формат команди, оскільки адреса регістра коротша адреси пам'яті, тому що ємність регістрового файлу менша ємності ОП. Розробнику компілятора простіше працювати коли всі регістри регістрового файлу еквівалентні і загальнодоступні. В комп'ютерах перших поколінь регістри закріплювалися для конкретних цілей і тим самим число регістрів значно зменшувалось.
Яка кількість регістрів загального призначення є ефективною? Відповідь залежить від того, як вони використовуються компілятором. Більшість компіляторів використовують по декілька регістрів для роботи з формулами, зберігання параметрів та змінних.
Приклади комп'ютерів, в яких використовуються описані архітектури:
-
регістр-регістр: SPARC, MIPS, Precision Architecture, Power PC, Alpha, Pentium IV, Athlon;
-
регістр-пам'ять: Intel 80x86, Motorola 68000;
-
пам'ять-пам'ять: VAX.
3.4. Способи адресації операндів
Як вже вказувалось, команда може включати від одного до чотирьох полів, які вказують адреси операндів. Варіанти інтерпретації бітів (розрядів) поля адреси з метою знаходження операнда називаються способами адресації. Коли команда вказує на операнд, він може знаходитись в самій команді, в основній або зовнішній пам'яті чи в регістровій пам'яті процесора. За роки існування комп'ютерів була створена своєрідна технологія адресації, яка передбачає реалізацію різних способів адресації, чому послужило ряд причин:
-
забезпечення ефективного використання розрядної сітки команди;
-
забезпечення ефективної апаратної підтримки роботи з масивами даних;
-
забезпечення задання параметрів операндів;
-
можливість генерації великих адрес на основі малих.
Існує велика кількість способів адресації. Розглянемо основні та найвживаніші способи адресації: безпосередню, пряму, непряму, відносну, базову, індексну, автоінкрементну
108
та автодекрементну, сторінкову, стекову. Практично у всіх існуючих комп'ютерах використовується один або декілька з цих способів адресації. Тому в команду потрібно вводити спеціальні ознаки з тим, щоб пристрій керування міг розпізнати використаний спосіб. Це можуть бути додаткові розряди в команді, або для різних типів команд закріплюватись різні способи адресації. Варіант формату команди з полями для розпізнавання типу адресації представлено на рис. 3.21, де ТА1 - поле, яке вказує тип адресації, який використано в полі Al, a TA2 - поле, яке вказує тип адресації, який використано в полі А2.
Оскільки адреса підлягає обробці, розрізняють поточну Ат та виконавчу Ав адреси. Остання отримується як результат обробки (модифікації) поточної адреси Ат: Ав = Fi (Ат). Функція Fi задає спосіб модифікації поточної адреси залежно від способу адресації.
3.4.1. Безпосередня адресація
При безпосередній адресації операнд знаходиться безпосередньо в адресній частині команди (рис. 3.22), розрядність якої рівна розрядності операнда.
Це найшвидший спосіб знаходження операнда, оскільки для його отримання потрібне лиш одне звернення до пам'яті. Він використовується для задання констант, наперед відомих чисел або початкових значень змінних. Heдoлiкoм є те, що розрядність операнда обмежується розрядністю поля адреси в команді, яке в більшості випадків є значно меншим розрядності даних.
3.4.2. Пряма адресація
При прямій (або абсолютній) адресації в адресному полі прямо вказується місце розміщення операнда, тобто виконавча адреса операнда. При цьому можливі два випадки: пряма адресація основної пам'яті ОП, та пряма адресація регістрів регістрового файлу процесора.
В першому випадку адреса А комірки основної пам'яті із адресної частини АЧ команди поступає на адресні входи основної пам'яті ОП (рис. 3.23 а) і у вказану комірку в режимі запису записується операнд із регістра даних РгД, а в режимі зчитування зчитується операнд в регістр даних РгД.
В другому випадку адреса R регістра регістрового файлу процесора із адресної частини АЧ команди поступає на адресні входи регістрового файлу процесора (рис. 3.23 b), і у вказаний регістр в режимі запису записується операнд із регістра даних РгД, а в режимі зчитування зчитується операнд в регістр даних РгД.