Параметри для трьох форматів в таблиці 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Параметри для трьох форматів в таблиці



Порядок задається в зміщеній формі: він дорівнює істинному порядкові, збільшеному на значення зміщення . Зміщений порядок ще називають характеристикою – ціле без знакове число або ціле додатне. Задання характеристики замість порядку спрощує операцію порівняння чисел з плаваючою крапкою, перетворюючи її в операцію порівняння цілих чисел, а виконання решти операцій практично не ускладнюється. Характеристики 00…0b і 11…1b зарезервовані для спеціальних значень. Характеристика у форматі з подвійною точністю займає 11 бітів і коли співмножники одинарної точності, добуток одержується без переповнення і антипереповнення.

Значення числа з плаваючою крапкою дорівнює

,

де або , або .

Відзначимо наявність у мантисі біта одиниць.

Пристрій FPU підтримує (в основному) подання мантиси в нормалізованій формі: старший біт мантиси дорівнює 1. Тому всі числа (крім нуля) мають мантису у вигляді , де або , . Отже, старші нулі в числах, які менші, ніж 1, вилучаються, що максимізує кількість значущих цифр мантиси при її фіксованій довжині.

У форматах ОТ і ПТ біт при передачах чисел і збереженні їх у пам’яті не фігурує. Отже, в цих форматах неможливо зобразити числа, які не нормалізовані. Крім цього, неявний біт не дає можливості зобразити в цих форматах нуль і його потрібно кодувати як спеціальне значення. Реалізувати неявний біт можна тільки при основі рівній 2.

Числа в форматі РТ мають явний біт . Десяткове число – 247.375 має двійковий код – 11110111.011, істинний порядок рівний 7. Зміщений порядок у форматі ОТ дорівнює 134, у форматі ПТ – 1030, у форматі РТ – 16390. Відповідно три зображення цього числа:

ОТ 1 10000110 111011101100…0

ПТ 1 10000000110 111011101100…0

РТ 1 100000000000110 1111011101100…0.

Числа ОТ і ПТ існують тільки в ОП. При завантаженні їх в FPU автоматично перетворюються у 80-бітовий розширений формат РТ. Дані з регістрів можна перетворити у формат ОТ або ПТ для зберігання їх в ОП. Формат РТ допускає зберігання в ОП і звичайно використовується для проміжних результатів, які неможливо зберігати в регістрах. Тому команди завантаження і збереження в ОП і особливо десяткових чисел є для FPU досить повільними (виконуються довго). Однак, завдячуючи апаратному перетворенню всіх зовнішніх форматів у формат РТ, в прикладних програмах зникає проблема переведення в інші формати.

Дійсне число з більшою кількістю цифр, ніж допускає FPU, зображуватиметься не точно. Абсолютно точно зображуються в FPU числа з діапазону .

Спеціальні числові значення. До них відносяться денормалізовані дійсні числа, нулі, від’ємні і додатні нескінченності, не числа, невизначеність і не підтримувані формати. Всі ці числа подаються у двійковій системі числення.

Денормалізовані дійсні числа – числа, які менші мінімального нормалізованого числа для кожного з підтримуваних форматів. Такі числа мають мінімальну (нульову) характеристику і ненульові мантису. Тобто денормалізовані числа мають такі властивості:

– зміщений порядок дорівнює нулеві;

– старші біти мантиси рівні нулеві.

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

Істинний нуль. Значення нуль в дійсних і десятковому форматах є знакове, двійковий нуль – завжди додатній. В обчисленнях знак нуля не враховується. Нуль в дійсних форматах подається як , тобто знак нуля, характеристика – нуль, мантиса – нуль.

Безмежність (нескінченність). Дійсні формати підтримують знакові зображення безмежностей. Їхні коди . Знаки безмежностей враховуються і порівняння можливі. Безмежності завжди інтерпретуються в афінному розумінні: .

Не числа. Є представниками класу спеціальних значень. Будь-який знак, характеристика – всі одиниці і довільна мантиса, за винятком (така мантиса в ).

Невизначеність. Спеціальне не число. Формується FPU як реакція на замаскований особливий випадок “недійсна операція”. Це не число має вигляд , тобто знак , характеристика – всі одиниці, мантиса – . Дане значення передбачене для такого випадку, коли людина змушена говорити “не знаю”.

Не підтримувані формати. Решта не чисел створюється або програмістом, або одержується зі значень, визначених програмістом. Використовуються для прискорення налагодження програм. Формат РТ має досить багато двійкових наборів, які не попадають ні в один з розглянутих класів. Сюди належать так звані псевдо не числа, псевдо безмежності, не нормалізовані і псевдо не нормалізовані числа, тощо.

Принцип збереження молодшого за меншою адресою розповсюджується й на зберігання в ОП чисел, які підтримуються FPU. Логічно лівий біт найстарший, правий – наймолодший. У фізичній пам’яті першим (з найменшою адресою) зберігається молодший байт (адреса цього байта вважається й адресою всього числа), а останнім (за найбільшою адресою) – старший байт. Передача даних завжди починається з молодшої адреси.


Програмна модель FPU

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

Основу програмної моделі складає регістровий стек з восьми 80-бітових регістрів даних R0, R1, R2, R3, R4, R5, R6, R7, які називаються числовими або арифметичними регістрами.

Теги TOP

79 78 64 63 0 1 0 011b

R0 R1 R2 R3 R4 R5 R6 R7 S E M       St(5) St(6) St(7) St(0) St(1) St(2) St(3) St(4)
       
       
       
       
       
       
       

15 0

Регістр керування
CW

Регістр стану
SW

 
 


TW

 

47 0

Вказівник команди
IP

Вказівник даних
DP

 

Рис. 1. Програмна модель FPU.

Тут зберігаються числа в формі з плаваючою крапкою в розширеному дійсному форматі, який є єдиним внутрішнім форматом чисел FPU. В будь-який момент часу три бітове поле top в слові стану SW визначає регістр, який є поточною вершиною стека і позначається st(0) або st. Якщо в полі top міститься, наприклад 011b, то вершиною стека є R3 і саме він вказується в командах як st(0) або st. Регістр R4 зразу нижче регістра st і позначається st(1), регістр R2 – тоді буде в самому низу стека і позначається st(7). Іншими словами, регістр st(0) містить останнє розміщене в стек значення, регістр st(1) – передостаннє і т.д. Усі команди FPU розраховані на таку відносну адресацію і навіть мовою асемблера неможливо працювати з фізичними регістрами R0, R1, R2, R3, R4, R5, R6, R7.

Операція записування в стек здійснює декремент поля top і завантажує адресовані дані в нову вершину стека, що призводить до автоматичного перенумерування регістрів. В операції збереження і вибору зі стека в приймач (наприклад, оперативну пам’ять) передається вміст поточної вершини стека, а потім відбувається інкремента поля top. Отже в стандартних стекових операціях поле top виконує функції традиційного вказівника стека.

На відміну від класичного стека, стек FPU має такі відмінності:

1) Стек має кільцеву організацію. Якщо top=000b і відбувається його декремент, то top=111b, а якщо поле top=111b і здійснюється інкремент, то новим вмістом буде 000b. Контроль за використанням стека повинен здійснювати програміст (максимальна кількість розміщень у стек без проміжних вибирань дорівнює 8, а дев’яте розміщення буде на місце елемента, розміщеного в стек першим). Тут FPU зафіксує особливий випадок “порушення стеку” та “недійсна операція”. Перезапис у стек відбудеться, якщо переривання від цих особливих випадків замасковане (заборонене);

2) В числових командах припустиме явне або неявне звернення до регістрів стеку з модифікацією або без неї поля top. Так, в унарних операціях операндом є вміст вершини стека, а результат заміщує операнд. В деяких бінарних операціях операндами є числа в двох верхніх регістрах стеку, а результат розміщується на місце одного з них. Більше того, команда порівняння fcompp порівнює вміст двох верхніх регістрів стека і вилучає його збільшуючи top на 2. У бінарних операціях можна явно вказувати регістри, які містять операнди;

3) FPU має команди, в яких не дотримуються домовленості про стек. Наприклад, команда fst (збереження в оперативній пам’яті) передає вміст вершини стека в ОП, не збільшуючи вмісту поля top. Команда fxch (обмін) забезпечує обмін вмісту вершини стека і будь-якого іншого регістра.

З кожним регістром стека асоціюється двобітовий тег, сукупність яких утворює слово тегів TW. Тег регістра R0 знаходиться в молодших бітах, а тег R7 – для вибору зі стеку у старших бітах. Тег показує, що є у відповідному регістрі і допомагає FPU у виконанні команд:

00b – припустиме ненульове число,

01b – нуль,

10b – спеціальне значення (не число, формат, який не підтримується, нескінченність або ненормалізоване число),

11b – порожній регістр.

Під час ініціалізації FPU завантажує в біти тегів 11b, що означає регістри порожні. Спроба використати порожній регістр для вибору з нього фіксується як особливий випадок “порушення стека” і “недійсна операція”. Спроба завантажити число в не порожній регістр також викликає реєстрацію аналогічних особливих випадків. Простіше використати регістр тегів для інтерпретації вмісту регістрів замість складного декодування фактичних даних. Для співвідношення регістра тегів з відносними регістрами st(0),…, st(7) потрібно використовувати поле top зі слова стану.

Точні значення тегів встановлюються під час виконання команд збереження середовища fstenv і збереження повного стану fsave у відповідності з фактичним вмістом не порожніх регістрів стека. Під час виконання інших команд FPU модифікує слово тегів, тільки показуючи порожній або не порожній регістр стека.

Іншими регістрами в програмній моделі FPU є 16-бітові регістри керування і стану, а також два 48-бітові регістри вказівників команди і даних. Регістри CW і SW ми розглянемо пізніше. IP та DP (вказівники особливих випадків) використовуються в процедурах обробки особливих випадків. Тут автоматично зберігаються пристроєм FPU під час виконання числової команди адреси цієї числової команди і її операнда в оперативній пам’яті (якщо він є). Регістри вказівники IP і DP доступні тільки в командах збереження середовища fstenv, збереження повного стану fsave, завантаження повного стану fldenv і відновлення повного стану frstor.

Середовище FPU – вміст регістрів керування, стану, тегів і обох вказівників (CW, SW, TW, IP, DP). Повний стан: вміст всіх регістрів – середовища FPU і восьми регістрів стека.



Поделиться:


Последнее изменение этой страницы: 2017-01-27; просмотров: 320; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.17.174.156 (0.021 с.)