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

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

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

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

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