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

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

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

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

Добавлен: 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].

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

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

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

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

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

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

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

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

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

3.2. Типи операцій та команд

3.2.1. Класифікація команд за типами операцій

Команди можуть бути класифіковані відповідно до ініційованих ними типів операцій. Команди обробки даних ініціюють:

■ арифметичні операції (додавання, віднімання, множення та ділення) над скаляр­
ними, тобто одиночними даними, та над векторами даних (деякою кількістю даних);

  • логічні операції (логічне множення, додавання, інверсія, і т.д.) над окремими розрядами даного, скалярними даними та над векторами даних;

  • операції зсуву (вправо, вліво) над скалярними та над векторними даними;

  • операції перетворення даних (перетворення із формату з фіксованою в формат з рухомою комою і навпаки, і т. д.);

" операції над символами та стрічками символів.

Команди переміщення даних, включаючи команди звертання до пам'яті, ініціюють:

  • операції переміщення даних в регістрах та стеках над скалярами та векторами; " команди вибірки даних з пам'яті та запам'ятовування даних в пам'яті;

  • команди вибірки адрес з пам'яті та запам'ятовування адрес в пам'яті;

  • команди вибірки команд з пам'яті та запам'ятовування команд в пам'яті.


88

Команди передачі керування змінюють логічний потік ходу програми. До них на­лежать наступні команди: переходу; розгалуження, шляхом виконання операцій порів­няння та перевірки; звернення до підпрограм.

Команди введення-виведення ініціюють операції введення та виведення даних та ко­манд.

Розглянемо деякі типи команд детальніше.

3.2.2. Команди обробки даних

Як вже було зазначено, команди обробки даних в першу чергу ініціюють виконан­ня арифметичних операцій. Це операції додавання, віднімання, множення та ділення над числами, представленими в форматах з фіксованою та рухомою комою. При цьому арифметичні операції можуть виконуватись як над скалярними даними, так і над векто­рами даних.

До арифметичних належать також наступні операції над одиночними операндами: взяття абсолютної величини від операнда (absolute); інверсія знаку операнда (negate); прирощення операнда на одиницю (increment); зменшення операнда на одиницю (decr­ement).

Команди обробки даних ініціюють також виконання логічних операцій. До їх числа входять операції логічного множення, логічного додавання, додавання за модулем два, інверсія, і т. д. Логічні операції виконуються над окремими розрядами даних, над оди­ночними даними і над векторами даних.

До складу команд обробки даних більшості комп'ютерів входить велика кількість операцій зсуву над скалярними даними та векторами даних, які будуть детально роз­глянуті в розділі 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

Передача

з регістра з РК в пам'ять