You are on page 1of 11

НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ

«Київський політехнічний інститут ім. І. Сікорського»


Інститут Прикладного Системного Аналізу
Кафедра Системного Проектування

Лабораторна робота № 3
З дисципліни «Архітектура обчислювальних систем»
На тему: «Дослідження роботи арифметичного сопроцесору»

Виконала:
Ст. гр. ДА-11
Фоменко Марія

Київ – 2022
1. Дослідити структуру регістрів арифметичного сопроцесору та намалювати
її діаграму.
2. Вивчити формати представлення чисел з плаваючою комою. Представити
задані константи у форматі 4-байтових чисел з плаваючою комою. Звернути
увагу на особливі випадки (нескінченність, не число і тому подібне).
3. Завантажити константи до FPU за допомогою команд: команди: FINIT,
FLD, FST, FLI.
4. Виконати над константами операції додавання, ділення, множення
перетворення типів даних.
5. Внести до складу протоколу результати роботи програм з вікна відладчика.

Варіант: 30
A B
98 -176
Хід роботи:
1. Структура регістрів арифметичного сопроцесору та її діаграма
Арифметичний співпроцесор призначений для виконання операцій над
числами у форматі плаваючої точки (дійсні числа) та довгими цілими
числами. Він значно прискорює обчислення, пов’язані з дійсними числами.
Співпроцесор може виконувати такі функції, як синус, косинус, тангенс,
логарифм і так далі. Також, за допомогою сопрцесору можна виконувати і
простіші арифметичні операції додавання, віднімання, множення та ділення.

Арифметичний співпроцесор широко розповсюджений у таких областях як


наукові розрахунки та машинна графіка.

Співпроцесор запускається центральним процесором. Після запуску він


виконує всі обчислення самостійно та паралельно з роботою центрального
процесора.

Асемблерні мнемоніки усіх команд співпроцесора починаються з букви F,


наприклад: FADD, FDIV, FSUB і так далі. Команди співпроцесора можуть
адресуватись к операндам, аналогічно звичайним командам центрального
процесора. Операндами можуть бути або дані, розміщенні в основній пам’яті
комп’ютера, або внутрішні регістри співпроцесора.

Знак Порядок Мантиса Регістр


Тегів
R0  0
R1  2
R2  4
R3  6
R4  8
R5  10
R6  12
R7 15 14
79 78 64 63 0

15 0 Регістр управління CWR


15 0 Регістр стану SWR
47 0 Вказівник команди IPR
47 0 Вказівник даних DPR

Виділяємо три групи регістрів:


2. 8 Регістрів R0-R7 які складають собою стек сопроцесора
3. Службові регістри:
4. Регістр Стану SWR – відображає інформацію про теперішній стан
сопроцесора
5. Регістр Управління CWR – контролює режими роботи сопроцесора
6. Регістр тегів TWR – використовується для контролю станів регістрів
R0-R7
7. Регістри вказівників
8. Даних – DPR
9. Команд - IPR

Чисельні регістри використовуються як стек. Регістр стану у полі R містить


номер чисельного регістру, який є вершиною стеку. При виконанні команд у
якості операнду можуть виступати чисельні регістри. В такому випадку
номер вказаного в команді регістра додається до містимого у полі R регістру
стану і таким чином визначається використовуваний регістр.

Регістр тегів. Цей регістр розділений на вісім двобітових секцій, які


позначимо як TAG0, …, TAG7. Кожна секція відноситься до свого
чисельного регістра.

Секції регістра тегів класифікує те, що міститься у відповідному чисельному


регістрі.

Регістр керування.
Біти 0-5 – маски особливих випадків. Особливі випадки іноді
виникають при виконанні команд співпроцесору, наприклад, при
діленні на нуль, перевовненні і так далі.

Таблиця масок особливих випадків:

Маска Особливий випадок


IM Недійсна операція
DM Денормалізований результат
ZM Ділення на нуль
OM Переповнення
UM Антипереповнення
PM Особливий випадок при непарному результаті

Поле PC керує точністю обчислень у співпроцесорі:

Поле Опис
00 Використання розширеної точності
10 Округлення до подвійної точності
11 Округлення до одинарно

Поле RC задає режим округлення при виконанні операцій з дійсними


числами:

Поле Опис
00 Округлення до найближчого числа
01 Округлення у напрямку до від’ємної нескінченності
10 Округлення у напрямку до додатної нескінченності
11 Округлення у напрямку до нуля
Поле IC регістру керування призначено для керування нескінченністю та
може мати два значення: 0 – проективний режим, 1 – афінний режим. У
проективному режимі існує тільки одна нескінченність, яка не має знаку. У
афінному режимі мається дві нескінченності – додатна та від’ємна.

Регістр станів.

Біти 0 – 5 – прапорці особливих випадків. Вони встановлюються завжди при


виникненні особливих випадків, навіть замаскованих установкою в 1
відповідних бітів регістрів керування.

Таблиця прапорців особливих випадків:

Прапорец Особливий випадок


ь
IE Недійсна операція
DE Денормалізований результат
ZE Ділення на нуль
OE Переповнення
UE Антипереповнення
PE Неточний результат

Для того, щоб обнулити прапорець, програма повинна явним чином


встановити його в нуль, виконав команд запису у регістр стану.

Біти С0-С3 - коди умов. Визначаються за результатом виконання команд


порівняння та команди знаходжяння остатку.
Поле R займає 3 біти і містить номер чисельного регістру, який є вершиною
стеку чисельних регістрів.

Біт B – біт зайнятості, якщо співпроцесор вільний, біт встановлен у 0.

Регістри вказівника команди та вказівника операнду.

Регістри вказівника команди та вказівника операнду призначені для обробки


особливих випадків, які виникають при виконанні команд у співпроцесорі.

2. Формати представлення чисел з плаваючою комою.


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

Наприклад: 1.101∗10 4.

В цьому випадку мантиса – 1.101, порядок – 4 .

Арифметичний співпроцесор може працювати з дійсними числами у


трьох форматах:

 Одинарної точності ( 4 байти)


 Подвійної точності (8 байтів)
 Розширеної точності (10 байтів)
У будь якому зображенні числа старший біт визначає знак дійсного
числа:

 0 – додатне
 1 – від’ємне
Для представлення від’ємних чисел тут не потрібно використовувати
додатковий код, як зроблено у центральному процесорі.

Розглянемо деякі особливі випадки представлення дійсних чисел:

 Нуль – це таке число, у якого порядок та мантиса дорівнюють нулю.


Нуль може мати додатній або від’ємний знаки, які ігноруються в
операціях порівняння. Таким чином маємо додатній та від’ємні нулі.

 Найменше додатне число – це число, яке має нульовий знаковий


біт, значення порядку рівне 1 та значення мантиси, рівне нулю.
 Найбільше від’ємне число – повністю співпадає з найменшим
додатнім числом, але має біт знаку, установлений в 1.
 Найбільше додатне число – це число, яке має нульовий знаковий
біт, поле порядку, в якому всі біти окрім самого молодшого, рівні 1,
та містить одиниці у всіх розрядах мантиси.
 Найменше від’ємне число – повністю співпадає з найбільшим
додатнім числом, але має біт знаку, встановлений в 1.
 Від’ємна та додатна нескінченність – це число містить всі одиниці у
полі порядку і всі нулі у полі мантиси. В залежності від стану
знакового біта може бути додатна та від’ємна нескінченності.
 Не число – містить усі одиниці у полі порядку та будь-яке значення у
полі мантиси. Не число може виникнути в результаті виконання
неправильної операції при замаскованих особливих випадках.
 Невизначеність – містить у полі порядку всі одиниці, а у полі
мантиси – 10000…0 (для одинарної та подвійної точності) або
11000…0 (для розширеної точності)

Представимо задані константи у форматі 4-байтових чисел з


плаваючою комою.
98= 11000102
Нормалізуємо
1.11100101*2^7
Порядок становить 7, тобто маємо 127+7=134 10
134 10  = 100001102
Остаточна відповідь буде становити
0 10000110 11100101❑ 00000000000000 (32 біта)
Переведемо в 16-тирічну систему:
21 B 9400016

Аналогічно
-176 = 1001002
1.100100*2^6
127+6=13310 = 100001012
1 10000101 100100 00000000000000000
C 2 C 8000016

3. Завантажимо константи до FPU за допомогою команд FINIT, FLD,


FST, FLI.
Розглянемо команди співпроцесора:

 FINIT – ініціалізація роботи математичного співпроцесора.


 FLD – завантаження операнду дійсного типу до стеку (регістр
ST(0)).
 FILD – завантаження операнду цілого типу до стеку.
 FST – копіює значення із стеку в заданий операнд дійсного типу.
 FIST – копіює значення зі стеку в заданий операнд цілого типу.
 FSTP – читання зі стеку в заданий операнд дійсного типу.
 FISTP – читання зі стеку в заданий операнд цілого типу.

Загрузимо дві відповідні константи до стеку співпроцесора:

Виконаємо над константами відповідні операції співпроцесору.


Висновки:

Виконуючи лабораторну роботу №3, було набуто теоретичних та практичних


знань щодо співпроцесорів. Було розглянуто призначення співпроцесора та
найбільш вживані випадки його використання.

Було також досліджено архітектуру регістрів арифметичного співпроцесору,


призначення кожного з відповідних регістрів та їх використання.

Практично було розглянуто операції додавання констант до відповідного


чисельного регістру співпроцесора за допомогою команди FDL та вилучення
значень зі стеку за допомогою команд FSTP. Також розглянуті базові
математичні операції, які може виконувати співпроцесор, такі як додавання,
віднімання, ділення та множення за допомогою відповідних команд FADD,
FSUB, FMUL, FDIV.

You might also like