logo
AOM / Мельник А

3.1.3. Виконання команд на рівні регістрів процесора

Для глибшого розуміння послідовності виконання команди розглянемо детальніше структуру регістрової (надоперативної) пам'яті процесора. Ця пам'ять (рис. 3.3) склада­ється з регістрів з закріпленими операціями, та регістрів зального призначення. Тут РгА, РгК і РгД - відповідно регістри адреси, команд і даних. РгА зберігає адресу даного або команди при зверненні до основної пам'яті. РгД зберігає операнд при його запису або зчитуванні з основної пам'яті. В ролі операнда може бути дане, команда або адреса. РгК зберігає команду після її зчитування з основної пам'яті. ПЛ - програмний лічильник, який підраховує команди та зберігає адресу поточної команди. Комп'ютер з архітекту­рою Джона фон Неймана має один програмний лічильник.

86

Більшість комп'ютерів мають в складі процесора тригери для зберігання бітів стану процесора, або, як їх іще називають, прапорців. Кожен прапорець має спеціальне при­значення. Частина прапорців вказує на результати арифметичних і логічних операцій: додатній результат (Р), від'ємний результат (N),нульовий результат (Z),перенос (С), арифметичне переповнення (V),і т. д. В системі команд комп'ютера є команди, які вказу­ють процесору коли встановити чи скинути ці тригери. Інша частина прапорців вказує режими захисту пам'яті. Існують також прапорці, які вказують пріоритети виконува­них програм. В деяких процесорах додаткові тригери служать для зберігання кодів умов, формуючи регістр кодів умов. Взяті разом описані прапорці формують слово стану про­грами (ССП), а відповідні тригери - регістр ССП.

Регістри загального призначення (РЗП) є програмно доступними. Зазвичай їх на­зивають регістровим файлом. Вони можуть використовуватись програмістом в якості регістрів для зберігання вхідних та вихідних даних, а також проміжних результатів об­числень, в якості адресних та індексних регістрів при виконанні операцій модифікації адрес. Наприклад, в процесорі UltraSPARC II є дві групи регістрових файлів: 32 64-роз-рядні регістри загального призначення та 32 регістри для даних з рухомою комою, які можуть зберігати або 32-розрядні дані одинарної точності, або 64-розрядні дані подвій­ної точності. В процесорі PentiumIIє лише 8 32-розрядних та 6 16-розрядних регістрів загального призначення.

Зв'язки між вузлами процесора і основною пам'яттю показано на рис. 3.4. Як видно з рисунка, процесор взаємодіє з основною пам'яттю через регістри адрес та даних. Крім того, пристрій керування формує сигнали задання режимів роботи пам'яті.

87

Виходячи з наведеної вище інформації про вузли процесора та його зв'язки з осно­вною пам'яттю, розглянемо детальніше виконання команд на прикладі виконання опе­рації додавання слова, яке знаходиться в пам'яті за адресою 9, з вмістом регістра Рг0 регістрової пам'яті процесора, коли результат операції засилається в пам'ять за адресою 9. Програма обчислень знаходиться також в пам'яті. Операцію можна записати наступним чином:

[Комірка 9] := [Комірка 9] + [Рг0].

Послідовність дій при виконанні цієї операції буде наступною:

  1. Рг А := ПЛ. Значення із програмного лічильника, тобто адреса команди, записуєть­ся в регістр адреси РгА.

  2. Зчитування із комірки [РгА] основної пам'яті команди додавання двох чисел в регістр даних РгД.

  3. Рг К := Рг Д. Перезапис команди додавання двох чисел з регістра даних в регістр команди РгК.

  4. РгА :- [А РгК]. Запис адреси числа із регістра команди до регістра адре.си (ця адре­са рівна 9).

  5. Зчитування із комірки [РгА] основної пам'яті даного і засилання його в регістр РгД.

  6. Рг Д := [РгД] + [РгО]. Виконання в АЛП операції [РгД] + [РгО] і засилання резуль­тату в РгД.

  7. Запис в комірку 9 основної пам'яті даного із регістра РгД.

8. ПЛ := ПЛ +1. Прирощення на одиницю вмісту програмного лічильника. Подібним чином виконуються інші команди, включаючи команди взаємодії з при­ строями введення-виведення.