ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.12.2021
Просмотров: 6792
Скачиваний: 22
85
разів, скільки потрібно вибрати операндів з основної пам'яті. Така ситуація відбувається при виконанні багатомісних операцій. Аналогічно можуть повторюватись операції 6 та 7, якщо отримано кілька результатів. При обробці декількох даних за однією командою операції 3-7 повторюються відповідну кількість разів. Такі операції називають векторними.
3.1.3. Виконання команд на рівні регістрів процесора
Для глибшого розуміння послідовності виконання команди розглянемо детальніше структуру регістрової (надоперативної) пам'яті процесора. Ця пам'ять (рис. 3.3) складається з регістрів з закріпленими операціями, та регістрів зального призначення. Тут РгА, РгК і РгД - відповідно регістри адреси, команд і даних. РгА зберігає адресу даного або команди при зверненні до основної пам'яті. РгД зберігає операнд при його запису або зчитуванні з основної пам'яті. В ролі операнда може бути дане, команда або адреса. РгК зберігає команду після її зчитування з основної пам'яті. ПЛ - програмний лічильник, який підраховує команди та зберігає адресу поточної команди. Комп'ютер з архітектурою Джона фон Неймана має один програмний лічильник.
86
Більшість комп'ютерів мають в складі процесора тригери для зберігання бітів стану процесора, або, як їх іще називають, прапорців. Кожен прапорець має спеціальне призначення. Частина прапорців вказує на результати арифметичних і логічних операцій: додатній результат (Р), від'ємний результат (N), нульовий результат (Z), перенос (С), арифметичне переповнення (V), і т. д. В системі команд комп'ютера є команди, які вказують процесору коли встановити чи скинути ці тригери. Інша частина прапорців вказує режими захисту пам'яті. Існують також прапорці, які вказують пріоритети виконуваних програм. В деяких процесорах додаткові тригери служать для зберігання кодів умов, формуючи регістр кодів умов. Взяті разом описані прапорці формують слово стану програми (ССП), а відповідні тригери - регістр ССП.
Регістри загального призначення (РЗП) є програмно доступними. Зазвичай їх називають регістровим файлом. Вони можуть використовуватись програмістом в якості регістрів для зберігання вхідних та вихідних даних, а також проміжних результатів обчислень, в якості адресних та індексних регістрів при виконанні операцій модифікації адрес. Наприклад, в процесорі UltraSPARC II є дві групи регістрових файлів: 32 64-роз-рядні регістри загального призначення та 32 регістри для даних з рухомою комою, які можуть зберігати або 32-розрядні дані одинарної точності, або 64-розрядні дані подвійної точності. В процесорі Pentium II є лише 8 32-розрядних та 6 16-розрядних регістрів загального призначення.
Зв'язки між вузлами процесора і основною пам'яттю показано на рис. 3.4. Як видно з рисунка, процесор взаємодіє з основною пам'яттю через регістри адрес та даних. Крім того, пристрій керування формує сигнали задання режимів роботи пам'яті.
87
Виходячи з наведеної вище інформації про вузли процесора та його зв'язки з основною пам'яттю, розглянемо детальніше виконання команд на прикладі виконання операції додавання слова, яке знаходиться в пам'яті за адресою 9, з вмістом регістра Рг0 регістрової пам'яті процесора, коли результат операції засилається в пам'ять за адресою 9. Програма обчислень знаходиться також в пам'яті. Операцію можна записати наступним чином:
[Комірка 9] := [Комірка 9] + [Рг0].
Послідовність дій при виконанні цієї операції буде наступною:
-
Рг А := ПЛ. Значення із програмного лічильника, тобто адреса команди, записується в регістр адреси РгА.
-
Зчитування із комірки [РгА] основної пам'яті команди додавання двох чисел в регістр даних РгД.
-
Рг К := Рг Д. Перезапис команди додавання двох чисел з регістра даних в регістр команди РгК.
-
РгА :- [А РгК]. Запис адреси числа із регістра команди до регістра адре.си (ця адреса рівна 9).
-
Зчитування із комірки [РгА] основної пам'яті даного і засилання його в регістр РгД.
-
Рг Д := [РгД] + [РгО]. Виконання в АЛП операції [РгД] + [РгО] і засилання результату в РгД.
-
Запис в комірку 9 основної пам'яті даного із регістра РгД.
8. ПЛ
:= ПЛ +1. Прирощення на одиницю вмісту
програмного лічильника.
Подібним
чином виконуються інші команди, включаючи
команди взаємодії з при
строями
введення-виведення.
3.2. Типи операцій та команд
3.2.1. Класифікація команд за типами операцій
Команди можуть бути класифіковані відповідно до ініційованих ними типів операцій. Команди обробки даних ініціюють:
■ арифметичні операції (додавання,
віднімання, множення та ділення) над
скаляр
ними, тобто одиночними
даними, та над векторами даних (деякою
кількістю даних);
-
логічні операції (логічне множення, додавання, інверсія, і т.д.) над окремими розрядами даного, скалярними даними та над векторами даних;
-
операції зсуву (вправо, вліво) над скалярними та над векторними даними;
-
операції перетворення даних (перетворення із формату з фіксованою в формат з рухомою комою і навпаки, і т. д.);
" операції над символами та стрічками символів.
Команди переміщення даних, включаючи команди звертання до пам'яті, ініціюють:
-
операції переміщення даних в регістрах та стеках над скалярами та векторами; " команди вибірки даних з пам'яті та запам'ятовування даних в пам'яті;
-
команди вибірки адрес з пам'яті та запам'ятовування адрес в пам'яті;
-
команди вибірки команд з пам'яті та запам'ятовування команд в пам'яті.
88
Команди передачі керування змінюють логічний потік ходу програми. До них належать наступні команди: переходу; розгалуження, шляхом виконання операцій порівняння та перевірки; звернення до підпрограм.
Команди введення-виведення ініціюють операції введення та виведення даних та команд.
Розглянемо деякі типи команд детальніше.
3.2.2. Команди обробки даних
Як вже було зазначено, команди обробки даних в першу чергу ініціюють виконання арифметичних операцій. Це операції додавання, віднімання, множення та ділення над числами, представленими в форматах з фіксованою та рухомою комою. При цьому арифметичні операції можуть виконуватись як над скалярними даними, так і над векторами даних.
До арифметичних належать також наступні операції над одиночними операндами: взяття абсолютної величини від операнда (absolute); інверсія знаку операнда (negate); прирощення операнда на одиницю (increment); зменшення операнда на одиницю (decrement).
Команди обробки даних ініціюють також виконання логічних операцій. До їх числа входять операції логічного множення, логічного додавання, додавання за модулем два, інверсія, і т. д. Логічні операції виконуються над окремими розрядами даних, над одиночними даними і над векторами даних.
До складу команд обробки даних більшості комп'ютерів входить велика кількість операцій зсуву над скалярними даними та векторами даних, які будуть детально розглянуті в розділі 3.
Операції перетворення даних змінюють формат представлення даних. Це може бути перетворення із формату з фіксованою в формат з рухомою комою і навпаки, перетворення із двійкової в десяткову систему і т. д.
Операції над символами та стрічками символів передбачають обробку символьних даних і будуть розглянуті далі.
В табл. 3.1 наведено перелік та функції арифметичних та логічних команд комп'ютера DLX, запропонованого Д. Паттерсоном та Д. Хеннессі в якості навчальної моделі сучасного комп'ютера.
|
|
Таблиця 3.1 |
№ ПП |
Код команди |
Фунції команд ком'ютера DLX |
|
Арифметичні та логічні |
Операції над цілими та логічними даними в регістрах цілих чисел; знакова арифметика з фіксацією переповнення |
1 |
ADD, ADDI, ADDU, ADDUI |
Додати, додати безпосереднє дане (immediate), з знаком та без знаку |
2 |
SUB, SUBI, SUBU, SUBUI |
Відняти, відняти безпосереднє дане, з знаком та без знаку |
3 |
MULT, MULTU, DIV, DIVU |
Перемножити та поділити, з знаком та без знаку |
4 |
AND, ANDI |
Додати, додати безпосереднє дане |
5 |
OR, ORI, XOR, XORI |
Логічне АБО, логічне АБО над безпосереднім даним, виключне АБО, виключне АБО над безпосереднім даним |
6 |
LHI |
Зчитування старших 16 розрядів безпосереднього даного та 16 нулів молодших розрядів |
7 |
SLL, SRL, SRA, SLLI, SRLI, SRAI |
Зсуви направо та наліво логічні та арифметичні, включаючи безпосереднє дане |
8 |
SEQ, SNE, SET, SGT, SEE, SGE |
Встановити за умови, якщо рівне нулю, не рівне нулю, менше ніж, більше ніж, менше ніж або рівне, більше ніж або рівне |
|
Рухома кома |
Операції з рухомою комою |
9 |
ADDD, ADDF |
Додати з подвійною точністю та з рухомою комою |
10 |
SUBD, SUBF |
Відняти з подвійною точністю та з рухомою комою |
11 12 |
MULTD, MULTF |
Помножити з подвійною точністю та з рухомою комою |
DIVD, DIVF |
Поділити з подвійною точністю та з рухомою комою |
|
13 |
CVTD2F, CVTD2I, CVTF2D, CVTF2I, CVTI2D, CVTI2F |
Перетворення з формату з подвійною точністю до формату з рухомою комою, до формату з одинарною точністю та навпаки |
14 |
EQD, EQF, NED, XEF, LTD, LTF, GTD, GTF, LED, LEF, GED, GEF |
Порівняння даних в форматах з одинарною та подвійною точністю та записати результат до регістру станів |
3.2.3. Команди переміщення даних
Команди переміщення даних належать до базових команд комп'ютера. Вони здійснюють передачу даних з одного місця в інше. Ці команди вказують:
■ місце розміщення операндів - основна пам'ять чи регістр;
■ адреси розміщення операндів в основній пам'яті або в регістровому файлі;
■ методи адресації кожного операнда;
■ кількість даних, що підлягають
переміщенню;
■ розрядність
даних, які мають бути передані.
В системах команд різних комп'ютерів це зроблено по різному. Наприклад, в деяких комп'ютерах місце розміщення операндів вказується в полі коду операції, в інших - в адресному полі. В табл. 3.2 як приклад наведені команди переміщення даних комп'ютера IBM S/370.
|
|
|
|
Таблиця 3.2 |
Мнемонічний код операції |
Ім'я операції |
Розрядність даних |
Опис операції |
|
L |
Load |
32 |
Передача |
з пам'яті в регістр |
LH |
Load Halfword |
16 |
Передача |
з пам'яті в регістр |
LR |
Load |
32 |
Передача |
з регістра в регістр |
LES |
Load (Short) |
32 |
Передача |
з регістра з РК в регістр з РК |
LTS |
Load (Short) |
32 |
Передача |
з пам'яті в регістр з РК |
LDR |
Load(Long) |
64 |
Передача |
з регістра з РК в регістр з РК |
LD |
Load (Long) |
64 |
Передача |
з пам'яті в регістр з РК |
ST |
Store |
32 |
Передача |
з регістра в пам'ять |
STFI |
Store Halfword |
16 |
Передача |
з регістра в пам'ять |
SOC |
Store Character |
8 |
Передача |
з регістра в пам'ять |
STE |
Store (Short) |
32 |
Передача |
з регістра з РК в пам'ять |
STD |
Store (Long) |
64 |
Передача |
з регістра з РК в пам'ять |