Операції над даними в СП з плаваючою точкою

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Федеральне Агентство освіти Російської Федерації
Пензенський державний університет
Кафедра "Інформаційна безпека систем і технологій"
РЕФЕРАТ
по темі:
"Операції над даними в СП з плаваючою точкою"
Дисципліна: ЦіМПТ
Група:
Виконав:.
Керівник роботи:
Пенза 2006

Зміст
  1. Огляд
2. Операції з плаваючою точкою стандарту IEEE
2.1 Формат з плаваючою комою з високою точністю
2.2 Формат коротких слів з плаваючою точкою
2.3 Винятки при виконанні операцій з плаваючою точкою
3. Операції з фіксованою точкою
4. Округлення
5. Арифметико-логічний пристрій (ALU)
5.1 Робота ALU
5.2 Режими роботи ALU
5.2.1 Режим насичення
5.2.2 Режими округлення даних з плаваючою точкою
5.2.3 Межі округлення даних з плаваючою точкою
5.3 Прапори стану ALU
5.3.1 Нульовий прапор ALU (AZ)
5.3.2 Прапори втрати значущих розрядів (AZ, AUS)
5.3.3 Негативний прапор ALU (AN)
5.3.4 Прапори переповнення ALU (AV, AOS, AVS)
5.3.5 Прапор переносу операції АШ з фіксованою точкою (АС)
5.3.6 Знаковий прапор ALU (AS)
5.3.7 Прапори помилки ALL) (Al, AIS)
5.3.8 Прапор операції з плаваючою точкою ALU (AF)
5.3.9 Накопичення порівнянь
6. Помножувач
6.1 Робота помножувача
6.2 Результати з фіксованою точкою
6.2.1 Регістри MR
6.3 Операції з фіксованою точкою
6.3.1 Обнулення регістру MR
6.3.2 Округлення вмісту регістра MR
6.3.3 Насичення регістру MR при переповненні
1.6.4 Режими роботи з плаваючою точкою
6.4.1 Режими округлення даних з плаваючою точкою
6.4.2 Межа округлення даних з плаваючою точкою
6.5 Прапори стану помножувача
6.5.1 Прапори втрати значущих розрядів (MU, MUS)
6.5.2 Негативний прапор помножувача (MN)
6.5.3 Прапор переповнення помножувача (MV)
6.5.4 Прапор помилки помножувача (Ml)
7. Пристрій зсуву
7.1 Робота пристрою зсуву
7.2 Прапори стану пристрою зсуву
7.3.1 Нульовий прапор пристрої зсуву (SZ)
7.3.2 Прапор переповнення пристрої зсуву (SV)
7.3.3 Знаковий прапор пристрої зсуву (SS)
7.4 Резюме команд пристрої зсуву
8. Багатофункціональні обчислення
9. Регістровий файл
9.1 Додаткові регістри


1. Огляд

Обчислювальні пристрої (ВУ) процесора ADSP-2106x використовуються для операцій, здійснюваних при реалізації алгоритмів цифрової обробки сигналів. Процесор ADSP-2106x містить три ВУ: арифметико-логічний пристрій (ALU), помножувач і пристрій зсуву. Процесор підтримує операції з фіксованою і плаваючою крапкою. Кожне ВУ виконує команди за один цикл.
ALU виконує стандартний набір арифметичних і логічних операцій в обох форматах: з фіксованою і плаваючою крапкою. Помножувач виконує множення з фіксованою і плаваючою точкою, а також операції множення / додавання і множення / віднімання з фіксованою точкою. Пристрій зсуву виконує логічні і арифметичні зрушення, маніпуляцію бітами, операції внесення та вилучення поля над 32-розрядними операндами та визначення порядку.
В У мають паралельну архітектуру, як показано на рис.2.1 Вихід будь-якого ВУ може бути входом будь-якого ВУ у наступному циклі. ВУ отримують і виводять дані через 10-портовий регістровий файл, який складається з 16 первинних і 16 додаткових регістрів. Регістровий файл доступний для шини даних пам'яті програми і шини даних пам'яті даних, по яких передаються дані між ВУ і зовнішньою пам'яттю або іншими частинами процесора.
Один і той же регістр у регістровому файлі починається з префікса F (у вихідному коді асемблера), коли він використовується в обчисленнях з плаваючою точкою. І починається з префікса R, коли використовується в обчисленнях з фіксованою точкою. Наприклад, наступні команди використовують одні й ті ж регістри:
FO = F1 * F2; множення з плаваюгцей точкою
RO = R1 * R2; множення з фіксованою точкою
Префікси F і R не впливають на передачу 32-розрядних (або 40-розрядних) даних; вони тільки визначають, як ALU, помножувач або пристрій зсуву обробляють дані. F і R можуть бути великими і малими; в асемблері не враховується регістр клавіатури.
У цій главі розглядаються наступні теми:
формати даних і округлення;
архітектура і функції ALU;
архітектура і функції помножувача;
архітектура та функції пристрою зсуву;
багатофункціональні обчислення;
регістровий файл і передача даних.

2. Операції з плаваючою точкою стандарту IEEE

Помножувач і ALU підтримують формат чисел з плаваючою точкою одиночної точності, визначений стандартом IEEE 754/854. Цей стандарт описаний у додатку С Формати подання чисел. ADSP-2106x відповідає стандарту IEEE 754/854 для операцій з плаваючою точкою одиночної точності, за винятком:
ADSP-2106x не забезпечує неточні прапори;
при введенні NAN (Not-a-Number - "не число") генерується виняток і повертається NAN (1 у всіх розрядах);
ненормалізоване операнди обнуляються, коли потрапляють в обчислювальний пристрій, та виключення втрати значущих розрядів не генерується. Якщо результат арифметичної операції не нормалізований або втрата значущих розрядів, то він обнуляється і генерується виключення втрати значущих розрядів;
підтримуються режими округлення до найближчого і округлення у напрямку до нуля; округлення до ± ° про не підтримується.
Крім того, в ADSP-2106x підтримується режим підвищеної точності із плаваючою точкою для 40-розрядних операндів, які мають вісім додаткових молодших розрядів мантиси. Режим не відповідає стандартам 754/854, але результати в цьому форматі більш точні, ніж у форматі одиночної точності стандарту IEEE.

2.1 Формат з плаваючою комою з високою точністю

У ADSP-2106x дані з плаваючою точкою можуть бути як 32 -, так і 40-розрядними. Формат з плаваючою комою з високою точністю (8 біт порядок і 32 біта мантиса) встановлюються при записі 0 в біт RND32 в регістрі MODEL Якщо цей біт встановлено (1), то використовується звичайна точність стандарту IEEE (8 біт порядок і 24 біта мантиса). У цьому випадку у ВП перед виконанням операції обнуляються вісім молодших розрядів вхідного операнда. Мантиса результату округлюється до 23 біт (не включаючи прихований біт), а 8 молодших розрядів 40-розрядного результату обнуляються, таким чином, формується 32-розрядне число, яке еквівалентно поданням результату за стандартом IEEE.

2.2 Формат коротких слів з плаваючою точкою

ADSP-2106x підтримує тип 16-розрядних даних з плаваючою точкою та забезпечує команди перетворення для нього. Формат короткого слова з плаваючою точкою має 11-розрядну мантиссу і 4-розрядний порядок, плюс знаковий біт.16-розрядне число розміщується в 16 молодших бітах 32-розрядного поля. Дві команди пристрої зсуву, FPACK і FUNPACK, виконують перетворення (упаковку і розпаковування) між 32 - і 16-розрядними словами з плаваючою крапкою. Команда FPACK перетворює 32-розрядне число з плаваючою точкою стандарту IEEE у 16-розрядне число. FUNPACK перетворює 16-розрядні числа тому в 32-розрядні. Кожна з цих команд виконується за один цикл. Формат коротких слів з плаваючою точкою підтримує поступову втрату значущих розрядів. Коли упаковується число, яке могло б втратити значущі розряди, порядок обнуляється, а мантиса (включаючи "приховану" 1) зсувається вправо на відповідну величину. Упакований результат є ненормалізованном і може бути розпакований в нормальне число з плаваючою точкою стандарту IEEE.

2.3 Винятки при виконанні операцій з плаваючою точкою

Помножувач і ALU інформують про виключення при виконанні операцій з плаваючою крапкою. Вони оновлюють прапори переповнення, втрати значущих розрядів, неправильної операції в регістрах арифметичного стану (ASTAT) і "залиплими" прапори стану (STKY). Крім цього, при втраті значущих розрядів, переповненні або неправильної операції ці пристрої генерують маскируемое переривання. Т.ч., існує три способи обробки виняткових ситуацій при операціях з плаваючою точкою:
Переривання. Виняткова ситуація обробляється відразу ж у програмі обробки переривання. Якщо необхідно обробляти виключення в міру їх виникнення, то можна використовувати цей метод.
Регістр ASTAT. Прапори виняткових ситуацій в регістрі ASTAT, що відповідають певним арифметичним операціям, перевіряються після того, як операція виконана. Цей метод можна використовувати для контролю виконання певної операції з плаваючою крапкою.
Регістр STKY. Прапори виняткових ситуацій в регістрі STKY перевіряються після завершення послідовності операцій. Якщо будь - який прапор встановлено, то це означає, що якісь із результатів неправильні. Цей метод можна використовувати, якщо обробка виняткової ситуації не критична на часі.

3. Операції з фіксованою точкою

Розрядність числа з фіксованою точкою завжди дорівнює 32; в полі 40-розрядних даних воно займає 32 старших біта. Формати подання цих чисел можуть бути дробові або цілі, беззнакові або знакові. Кожне ВУ має свої власні обмеження на те, як ці формати поєднуються у цій операції. ВУ зчитують 32-розрядні операнди з 40-розрядних регістрів, ігноруючи 8 молодших розрядів, і записують 32-розрядні результати, обнулити 8 молодших розрядів.

4. Округлення

У процесорі ADSP-2106x підтримується два режими округлення: округлення до нуля і округлення до найближчого. Режими округлення відповідають стандарту IEEE 754, як визначено нижче:
Округлення до нуля. Якщо результат до округлення точно не представити у певному форматі, то він округляється до числа, яке ближче до нуля. Це еквівалентно усікання.
Округлення до найближчого. Якщо результат до округлення точно не представимо у певному форматі, то він буде заокруглений до числа, яке ближче до нього.
Якщо результат до округлення знаходиться точно посередині між двома числами певного формату (відмінними молодшим бітом), то округлений результат - це число, яке має нульовий молодший біт. Статистично округлення вгору трапляється так само часто, як і округлення вниз, тому немає великого зміщення у вибірці. Через те що максимальне число з плаваючою точкою на один молодший біт менше, ніж число, яке представляє нескінченність, результат, який знаходиться посередині між максимальним числом з плаваючою точкою і нескінченністю, округлюється в цьому режимі до нескінченності. Режим округлення для всіх операцій ALU та операцій з плаваючою точкою помножувача визначається бітом TRUNC в регістрі MODEL Якщо біт TRUNC встановлено, то обраний режим округлення до нуля. Інакше використовується режим округлення до найближчого. Для операцій помножувача з фіксованою крапкою над дробовими даними підтримуються ті ж самі два режими округлення, але реально помножувач виконує тільки операцію округлення до найближчого. Через те що помножувач має локальний регістр результату операцій з фіксованою точкою, округлення до нуля виконується неявно шляхом зчитування тільки старших бітів результату і відкидання молодших.

5. Арифметико-логічний пристрій (ALU)

ALU виконує арифметичні операції над даними з фіксованою і плаваючою точкою і логічні операції над даними з фіксованою точкою. Команди ALU з фіксованою точкою оперують над 32-розрядними операндами з фіксованою точкою і видають 32-розрядний результат з фіксованою точкою. Команди ALU з плаваючою точкою оперують над 32-або 40-розрядними операндами з плаваючою точкою і видають 32 - або 40-розрядні результати з плаваючою крапкою.
Команди ALU:
з плаваючою точкою: додавання, віднімання, додавання / віднімання, усереднення;
з фіксованою точкою: додавання, віднімання, додавання / віднімання, усереднення;
маніпуляція з даними з плаваючою точкою: двійковий логарифм, масштабування, мантиса;
з фіксованою точкою: додавання з переносом, віднімання з заемом, інкремент, декремент;
логічні AND, OR, XOR, NOT;
функції: модуль, скидання, мінімум, максимум, усічення, порівняння;
перетворення формату;
примітиви поділу - і ділення на корінь квадратний пана.
Операція подвійного складання / віднімання і паралельні операції ALU і помножувача описані нижче в розділі "Багатофункціональні обчислення".

5.1 Робота ALU

На вхід ALU надходять один або два вхідних операнда, звані X і Y, які можуть бути вмістом будь-якого регістра в регістровому файлі. Зазвичай повертається один результат; при операції складання / віднімання - два результати, після порівняння ніякі результати не повертаються, а оновлюються тільки прапори. Результати операцій ALU можуть повертатися в будь-який регістр реєстрового файлу. Вхідні операнди пересилаються з реєстрового файлу в ALU протягом першої половини циклу. Результати передаються в регістровий файл протягом другої половини циклу. Т.ч., ALU може зчитувати і записувати один і той же регістр реєстрового файлу за один цикл.
При операціях ALU з фіксованою точкою операнди X і Y обробляються як 32-розрядні з фіксованою точкою. Передаються 32 старших біта з регістра в регістровому файлі. Результат операції з фіксованою точкою - завжди 32-розрядне значення з фіксованою точкою. Деякі операції з плаваючою крапкою (LOGB, MANT і FIX) також можуть повертати результати з фіксованою точкою. Результати з фіксованою точкою поміщаються в 32 старших біта регістра в регістровому файлі, а вісім молодших біт обнуляються. Формат операндів і результатів з фіксованою точкою залежить від операції. У більшості арифметичних операцій немає необхідності розрізняти цілі і дробові формати. Вхідні операнди з фіксованою крапкою в операціях, таких як масштабування числа з плаваючою точкою, обробляються як цілі. У певних станах, таких як переповнення, арифметичні операнди та результати з фіксованою точкою обробляються як числа у додатковому коді.

5.2 Режими роботи ALU

Режим роботи ALU визначається трьома бітами в регістрі MODEL Біт насичення ALU впливає на операції ALU, які повертають результати з фіксованою крапкою; біт режиму округлення і біт кордону округлення впливають на операції з плаваючою крапкою в ALU і умножителе.
Біт M0DE1 Ім'я Функція
13 ALUSAT1 = дозволено насичення ALU (повномасштабна
величина з фіксованою точкою)
О = заборонено насичення ALU
TRUNC 1 = усічення; О = округлення до найближчого
RND 321 = округлення до 32 біт; О = округлення до 40 біт

5.2.1 Режим насичення

У режимі насичення при позитивному переповненні в операціях з фіксованою точкою повертається максимальне позитивне число з фіксованою крапкою (0x7FFF FFFF), при негативному переповненні повертається максимальне негативне число (0x8000 0000). Якщо біт ALUSAT встановлено, то результати з фіксованою точкою при переповненні насичуються. Якщо біт ALUSAT обнулений, то результати з фіксованою точкою при переповненні не насичуються, 32 старших біта результату повертаються без змін. Прапор переповнення ALU відображає результат ALU до насичення.

5.2.2 Режими округлення даних з плаваючою точкою

ALU підтримує два режими округлення стандарту IEEE. Якщо біт TRUNC встановлено, то ALU округлює результат до нуля (усічення). Якщо біт TRUNC обнулений, то ALU округлює до найближчого.

5.2.3 Межі округлення даних з плаваючою точкою

У ADSP-2106x результати операцій ALU з плаваючою точкою можуть бути 32 - і 40-розрядними даними з плаваючою крапкою. Якщо біт RND32 встановлено, то перед виконанням операції ALU (за винятком операції RND) вісім молодших розрядів кожного вхідного операнда обнуляються, результат з плаваючою точкою виводиться в 32-розрядному форматі стандарту IEEE. Вісім молодших розрядів результату обнуляються. Якщо біт RND32 обнулений, то ALU отримує 40-розрядні операнди незмінними і виводить 40-розрядні результати операції з плаваючою точкою і всі 40 розрядів записуються в певний регістр реєстрового файлу.
При перетворенні чисел з формату з фіксованою точкою у формат з плаваючою точкою кордон округлення завжди 40 біт, незалежно від стану біта RND32.

5.3 Прапори стану ALU

ALU оновлює сім прапорів стану в регістрі ASTAT в кінці кожної операції. Стану цих прапорів відображають результат самої останньої операції ALU. В кінці кожної операції порівняння ALU оновлює біти накопичення порівнянь у ASTAT. Також ALU оновлює чотири "залиплими" прапора стану в регістрі STKY. Після установки "залиплими" прапор залишається в цьому стані, поки що явно не буде обнулено.
'
Ім'я
0
AZ
1
AV
2
AN
3
АС
4
AS
5
AI
10
AF
31-24
САС
Біт STKY
Ім'я
0
AUS
1
AVS
2
AOS
5
AIS
Опис:
Нульовий результат чи втрата значущих розрядів в операції з плаваючою точкою Переповнення ALU Негативний результат ALU Перенесення для результату з фіксованою точкою Знак операнда X (операції ABS, MANT) Неправильна операція ALU з плаваючою точкою Остання операція ALU була операцією з плаваючою точкою С АС З Регістр накопичення порівнянь (Compare Accumulation register) (результат 8 останніх операцій порівняння)
Опис:
Втрата значущих розрядів в операції з плаваючою точкою Переповнення результату операції ALU з плаваючою точкою Переповнення результату операції ALU з фіксованою точкою Неправильна операція ALU з плаваючою точкою
Прапор оновлюється в кінці того циклу, в якому генерується стан, і доступний в наступному циклі. Якщо програма здійснює пряму запис у регістри ASTAT або STKY в тому ж циклі, в якому ALU виконує операцію, то явна запис має перевагу.

5.3.1 Нульовий прапор ALU (AZ)

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

5.3.2 Прапори втрати значущих розрядів (AZ, AUS)

Втрата значущих розрядів визначена для всіх операцій ALU, які повертають результат з плаваючою точкою, а також для операції перетворення форматів. AUS і AZ встановлюються, коли результат операції ALU менше, ніж мінімальна кількість формату представлення результату.

5.3.3 Негативний прапор ALU (AN)

Негативний прапор ALU визначений для всіх операцій ALU. Він встановлюється, коли результат операції ALU негативний. Інакше він скинутий.

5.3.4 Прапори переповнення ALU (AV, AOS, AVS)

Переповнення визначено для всіх операцій ALU з плаваючою і з фіксованою точкою. Для результатів з фіксованою точкою AV і AOS встановлюються, коли результат операції "виключає АБО" (XOR) двох старших розрядів результату дорівнює 1, інакше AV скинутий. Для результатів з плаваючою точкою AV і AVS встановлюються, коли результат після округлення переповнений (незміщеної порядок> 127), інакше AV скинутий.

5.3.5 Прапор переносу операції АШ з фіксованою точкою (АС)

Прапор переносу визначений для всіх операцій ALU з фіксованою точкою. Для арифметичних операцій з фіксованою точкою АС встановлюється, якщо стався перенесення за старший розряд результату, інакше він скинутий. АС скинутий для операцій PASS, MIN, MAX, COMP, ASP, CLIP та логічних операцій. ALU зчитує прапор АС в операціях з фіксованою точкою: додавання з переносом і віднімання з переносом.

5.3.6 Знаковий прапор ALU (AS)

Знаковий прапор визначений тільки для операції ABS з фіксованою і з плаваючою точкою і операції MANT. AS встановлюється, якщо вхідний операнд негативний. Інакше він скинутий. ALU обнуляє біт AS для всіх операцій, крім ABS і MANT; на відміну від процесорів сімейства ADSP-2100, які оновлюють прапор AS тільки при операції ABS.

5.3.7 Прапори помилки ALL) (Al, AIS)

Прапори помилки ALU визначені для всіх операцій ALU з плаваючою крапкою. AI і AIS встановлюються, коли: вхідний операнд NAN ("не число"); складаються нескінченності з протилежними знаками; віднімаються нескінченності одного знака; не встановлений режим насичення, а результат перетворення з формату з плаваючою точкою в формат з фіксованою точкою переповнений, або проводиться операція перетворення над нескінченністю.
Інакше AI скинутий.

5.3.8 Прапор операції з плаваючою точкою ALU (AF)

AF визначений для всіх операцій ALU з фіксованою і з плаваючою крапкою. Він встановлюється, якщо остання операція ALU була з плаваючою точкою, інакше він скинутий.

5.3.9 Накопичення порівнянь

Біти 31-24 в регістрі ASTAT зберігають прапори результатів до восьми операцій порівняння ALU. Ці біти формують регістр із зсувом вправо. Після виконання операції порівняння вісім біт зсуваються в напрямку молодшого розряду (біт 24 втрачається). Потім в старший біт (31) записується результат операції порівняння. Якщо операнд X більше операнда Y, то біт 31 встановлюється, інакше він обнуляється.

6. Помножувач

Помножувач виконує операції множення з фіксованою або з плаваючою точкою і множення / накопичення з фіксованою точкою. Множення / накопичення може бути впроваджено, і з накопиченим складанням, і з накопиченим відніманням. Множення / накопичення з плаваючою точкою може бути виконано за допомогою паралельних операцій ALU і помножувача. Для цього використовуються багатофункціональні команди (див. далі розділ "Багатофункціональні обчислення" в цьому розділі). При операціях з плаваючою точкою помножувач оперує 32 - або 40-розрядними операндами і результатами формату з плаваючою точкою. При операціях з фіксованою точкою помножувач оперує 32-розрядними даними з фіксованою точкою і видає 80-розрядні результати. Вхідні дані обробляються як цілі або дробові, беззнакові або в додатковому коді.
Команди помножувача: множення з плаваючою точкою; множення з фіксованою крапкою; множення / накопичення зі складанням для даних з фіксованою точкою (необов'язкове округлення); множення / накопичення з вирахуванням для даних з фіксованою точкою (необов'язкове округлення); округлення результату; насичення результату; обнуління результату.

6.1 Робота помножувача

На вхід помножувача надходять один або два вхідних операнда, звані X і Y, які можуть бути вмісті будь-якого регістра в регістровому файлі. При операціях з фіксованою точкою результати можуть накопичуватися в будь-якому з двох локальних регістрів результату помножувача (MR) або записуватися тому в регістровий файл. Результати, збережені в регістрах MR, можуть заокруглюватимуть або насичуватися в окремих операціях. При операціях з плаваючою точкою повертається результат з плаваючою точкою, який завжди записується тому в регістровий файл.
Вхідні операнди передаються протягом першої половини циклу. Результати передаються протягом другої половини циклу. Т.ч., помножувач може зчитувати і записувати один і той же регістр реєстрового файлу за один цикл.
При операціях помножувача з фіксованою точкою вхідні дані зчитуються з 32 - старших бітів регістра реєстрового файлу. Операнди з фіксованою точкою можуть оброблятися в цілому або дробовому форматах. Формат результату відповідає формату вхідних даних. Кожний операнд з фіксованою точкою може оброблятися як беззнакових, так і знаковий (в додатковому коді). Якщо обидва вхідних операнда дробові і знакові, то помножувач автоматично зсуває результат вліво на один біт, щоб видалити надмірний знаковий біт. Тип вхідних даних визначається всередині команди помножувача.

6.2 Результати з фіксованою точкою

Операції з фіксованою точкою повертають 80-розрядні результати в регістр MR. Положення результату в 80-розрядному полі залежить від його формату: результат дробовий або цілий (див. рис.2.2). Якщо результат надсилається прямо в регістровий файл, то пересилаються ті 32 розряду, які відповідають формату вхідних даних: тобто розряди 63-32 для дробового результату або розряди 31-0 - для цілого. Вісім молодших біт 40-розрядного регістра реєстрового файлу заповнюються нулями. Перед передачею дробового результату в регістровий файл він може бути закруглений до найближчого (див. далі). Якщо округлення не визначено, то непотрібні розряди 31-0 відкидаються, що відповідає усікання дробового результату (округлення до нуля).

6.2.1 Регістри MR

Результат може пересилатися в один із двох 80-розрядних регістрів результатів (MR). Регістри MR мають однаковий формат - кожен ділиться на регістри MR2, MR1, MRO, вміст яких може окремо зчитуватися або записуватися в регістровий файл. Коли дані зчитуються з MR2, вони доповнюються за знаком до 32 біт (див. рис.2.3). Коли дані зчитуються з MR2, MR1, MR0 в регістровий файл, вісім молодших біт 40-розрядного регістра реєстрового файлу заповнюються нулями. При запису даних у MR2, MR1, MR0 з регістра реєстрового файлу зчитуються 32 старших біта, а вісім молодших ігноруються. Дані, записані в MR1, доповнюються по знаку в MR2, тобто старші біти MR1 повторюються в 16 розрядах MR2. Однак записані в MR0 дані не доповнюються по знаку.
Два регістру MR позначаються як MRF (основний) і MRB (додатковий). Основний відноситься до тих регістрів, які зазвичай активуються бітом SRCU в регістрі MODEL Коли використовується тільки один регістр MR, біт SRCU активує або один, або інший регістр для швидкого контекстного перемикання. Однак, на відміну від інших регістрів, які мають додатковий набір, регістри MRF і MRB можуть використовуватися в один і той же час. Усі команди накопичення (з фіксованою точкою) можуть визначати будь-який регістр результату для накопичення незалежно від стану біта SRCU.Т.о., замість використання регістрів MR як основного і додаткового їх можна використовувати як два паралельних накопичувача. Ця особливість полегшує роботу з комплексними числами.
Пересилання даних між регістрами MR і реєстрового файлом розглядається як операція обчислювального пристрою, так як вона задіють помножувач. Т.ч., хоча синтаксис команди передачі такої ж, як і для будь-якої іншої команди передачі даних в регістровий файл або з нього, передача даних в MR розміщується в команді, в тому місці, де зазвичай розташовується обчислення. Наприклад, процесор може виконувати множення / накопичення паралельно зі зчитуванням даних з пам'яті: MRF = MRF-R5 * R0, R6 = DM (II, М2); або може виконувати пересилання даних в MR замість обчислення: R5 = MR1F, R6 = DM ( I1, M2).

6.3 Операції з фіксованою точкою

Крім множення до операцій з фіксованою точкою відносяться накопичення, округлення та насичення. Існують три операції з вмістом регістра MR: обнулення (Clear), округлення (Round) і насичення (Saturate).

6.3.1 Обнулення регістру MR

Операція обнулення обнуляє заданий регістр MR. Обнулення виконується на початку операції множення / накопичення для видалення результатів, що залишилися від попередньої операції.

6.3.2 Округлення вмісту регістра MR

Округлення результату з фіксованою точкою відбувається або як частина операцій множення і множення / накопичення, або як явна операція регістру MR. Операція округлення застосовується тільки до дробовим результатами (цілі результати не округлюються), 80-розрядне число в MR округляється до найближчого за рахунок біта 32, тобто кордону MR1-MR0. Округлений результат з MR1 може бути відправлений у регістровий файл або в той же самий регістр MR. Для округлення дробового результату до нуля (усічення) ви пересилаєте неокругленние результат з MR1, відкидаючи 32 молодших біта (MR0).

6.3.3 Насичення регістру MR при переповненні

Операція насичення встановлює максимальне значення в MR, якщо вміст MR переповнене. Переповнення відбувається, коли значення в MR більше максимального значення даного формату (беззнакових або в додатковому коді, цілий або дробовий). Нижче наведені шість можливих максимальних чисел, представлених в шістнадцятковому форматі:
MR2MR1MR0
Максимальне дробове число в додатковому коді
00007FFF FFFFFFFF FFFF Позитивне
FFFF8000 00000000 0000 Негативне
Максимальне ціле число в додатковому коді
00000000 00007FFF FFFF Позитивне
FFFFFFFF FFFF8000 0000 Негативне
Максимальне беззнаковое дробове число
0000FFFF FFFF FFFF FFFF
Максимальне беззнаковое ціле число
00000000 0000FFFF FFFF
Результат насичення MR можна помістити або в регістровий файл, або назад в той же самий регістр MR.

1.6.4 Режими роботи з плаваючою точкою

Помножувач управляється двома бітами стану режиму в регістрі MODE1: біти режиму округлення і межі округлення. Крім того, ці біти впливають на операції ALU.
Біт
MODE1
Ім'я
15
TRUNC
16
RND32
Функція
1 = усічення; 0 = округлення до найближчого
1 = округлення до 32 біт; 0 = округлення до 40 біт

6.4.1 Режими округлення даних з плаваючою точкою

Помножувач підтримує два режими округлення стандарту IEEE для операцій з плаваючою крапкою. Якщо біт TRUNC встановлено, то помножувач округлює результат з плаваючою точкою до нуля (усічення). Якщо біт TRUNC обнулений, то помножувач округлює результат до найближчого.

6.4.2 Межа округлення даних з плаваючою точкою

У ADSP-2106x вхідні дані і результати помножувача з плаваючою точкою можуть бути 32 - і 40-розрядними. Якщо біт RND32 встановлений, то вісім молодших біт кожного вхідного операнда обнуляються перед множенням. Результати з плаваючою точкою виводяться в 32-розрядному форматі стандарту IEEE з нулями у 8 молодших розрядах 40-розрядного регістра реєстрового файлу. Мантиса результату округлюється до 23 біт (не включаючи прихований біт). Якщо біт RND32 дорівнює нулю, то помножувач отримує 40-розрядні числа з реєстрового файлу і виводить результати в 40-розрядному форматі стандарту IEEE підвищеної точності, з мантиси, округленої до 31 біта (не включаючи прихований біт).

6.5 Прапори стану помножувача

В кінці кожної операції помножувач оновлює чотири прапори стану в регістрі ASTAT. Стану цих прапорів відображають результат самої останньої операції помножувача. Помножувач також оновлює чотири "залиплими" прапора стану в регістрі STKY. Після оновлення "залиплими" прапор залишається в цьому стані, поки що явно не буде обнулено.
Біт ASTAT
Ім'я
6
MN
7
MV
8
ми
9
Ml
Біт STKY
Ім'я
6
MOS
7
MVS
8
MUS
9
MIS
Опис:
Результат операції помножувача негативний
Переповнення помножувача
Втрата значущих розрядів
Неправильна операція помножувача з плаваючою точкою
Опис
Переповнення результату помножувача з фіксованою
точкою
Переповнення результату помножувача з плаваючою точкою
Втрата значущих розрядів
Неправильна операція помножувача з плаваючою точкою
Оновлення прапора відбувається в кінці циклу, в якому генерується стан, а в наступному циклі він стає доступним. Якщо програма здійснює пряму запис у регістри ASTAT або STKY в тому ж циклі, в якому помножувач виконує операцію, то явна запис має перевагу.

6.5.1 Прапори втрати значущих розрядів (MU, MUS)

Втрата значущих розрядів визначена для всіх операцій помножувача з фіксованою і плаваючою крапкою. Прапори встановлюються, якщо результат операції помножувача менше, ніж мінімальна кількість, яке можна зобразити у цьому форматі. Інакше він скинутий.
Для результатів з плаваючою точкою MU і MUS встановлюються, якщо результат після округлення втратив значущі розряди (незміщеної порядок <-126). Ненормалізоване операнди завжди обробляються як нулі, тому вони ніколи не приводять до втрати значущих розрядів.
Для результатів з фіксованою точкою установка MU і MUS залежить від формату даних і відбувається при наступних умовах:
Додатковий код:
Дробове: вище 48 біт всі нулі чи всі одиниці, нижче 32 біт не всі нулі
Ціле: неможливо
Беззнакових:
Дробове: вище 48 біт всі нулі, нижче 32 біт не всі нулі
Ціле: неможливо
При приміщенні результату з фіксованою точкою в регістр MR втратила значущі розряди частина результату доступна в MR0 (тільки для дробового результату).

6.5.2 Негативний прапор помножувача (MN)

Негативний прапор визначений для всіх операцій помножувача. MN встановлюється, якщо результат операції помножувача негативний. Інакше скинутий.

6.5.3 Прапор переповнення помножувача (MV)

Переповнення визначено для всіх операцій помножувача з фіксованою і плаваючою крапкою. Для результатів з плаваючою точкою MV і MVS встановлюються, якщо результат після округлення переповнений (незміщеної порядок> 127).
Для результатів з фіксованою точкою установка MV і MOS залежить від формату даних і відбувається при наступних умовах:
Додатковий код:
Дробове: вище 17 біт MR не всі нулі чи всі одиниці
Ціле: вище 49 біт MR не всі нулі чи всі одиниці
Беззнакових:
Дробове: вище 16 біт MR не всі нулі
Ціле: вище 48 біт MR не всі нулі
При приміщенні результату з фіксованою точкою в регістр MR переповнена частина результату доступна в MR1 і MR2 (для цілого результату), або лише MR2 (для дробового результату).

6.5.4 Прапор помилки помножувача (Ml)

Прапор помилки визначений для множення з плаваючою точкою. Ml встановлюється, якщо:
вхідний операнд NAN;
вхідні операнди нескінченність або нуль (зауваження: ненормалізоване операнди обробляються як нулі).
Інакше Ml скинутий.
* Встановлений або скинутий, в залежності від результатів виконання команди
** Може бути встановлений (але не скинутий), в залежності від результатів виконання команди - не змінюється
Rn, Rx, Ry = R15-R0; регістри реєстрового файлу; обробляються як операнди з фіксованою точкою
Fn, Fx, Fy = F15-F0; регістри реєстрового файлу; обробляються як операнди з плаваючою точкою
MRxF = MR2F, MR1F, MR0F; основні накопичувачі результату операції помножувача
MRxB = MR2B, MR1B, MR0B; додаткові накопичувачі результату операції помножувача

7. Пристрій зсуву

Пристрій зсуву працює з 32-розрядними операндами з фіксованою точкою. Операції пристрої зсуву:
зрушення і циклічні зрушення з крайнього лівого положення в крайнє праве;
операції з битами: установка, обнулення, переключення і перевірка;
операції з полем біт: вилучення та внесення;
підтримка ADSP-2100-сумісних операцій перетворення форматів фіксована / плаваюча точка (знаходження порядку, числа початкових одиниць або нулів).

7.1 Робота пристрою зсуву

Пристрій зсуву обробляє від одного до трьох вхідних операндів: X визначає операнд, над яким проводиться операція; Y визначають величину зсуву, довжину поля або положення бітів; Z визначає операнд, який оновлюється після операції над ним (наприклад, Rn = Rn OR LSHIFT Rx BY Ry). Пристрій зсуву повертає один результат у регістровий файл.
Вхідні операнди беруться з 32 старших біт регістра реєстрового файлу (біти 39-8, як показано на рис.2.4) або з безпосереднього значення в команді. Операнди передаються протягом першої половини циклу. Результати зберігаються в 32 старших бітах регістра (8 молодших розрядів обнуляються) протягом другої половини циклу. Т.ч., пристрій зсуву може зчитувати і записувати один і той же регістр реєстрового файлу за один цикл.
Деякі операції пристрої зсуву виводять 8-розрядні або 6-розрядні результати. Ці результати розміщуються або в полі shf8, або в полі bit6 (див. рис.2.5) і доповнюються по знаку до 32 біт.Т.о., пристрій зсуву завжди повертає 32-розрядний результат.

7.2 Прапори стану пристрою зсуву

В кінці операції пристрій зсуву повертає три прапори стану. Всі ці прапори з'являються в регістрі ASTAT. Прапор SZ встановлюється, якщо результат дорівнює нулю, прапор SV вказує на переповнення, прапор SS вказує, що вхідний операнд знаковий в операції визначення порядку.
Біт ASTAT Ім'я Опис
11SV переповнення результату пристрої зсуву або біти
ліворуч від старшого біта
SZ нульовий результат пристрої зсуву
SS знак вхідного операнда пристрою зсуву
(Тільки при визначенні порядку)
Оновлення прапора відбувається в кінці циклу, в якому генерується стан, а в наступному циклі він стає доступним. Якщо програма здійснює пряму запис у регістри ASTAT в тому ж циклі, в якому пристрій зсуву виконує операцію, то явна запис має перевагу.

7.3.1 Нульовий прапор пристрої зсуву (SZ)

На нульової прапор впливають всі операції пристрої зсуву. Він встановлюється, якщо:
результат операції пристрої зсуву дорівнює нулю;
команда перевірки біт визначає біт поза 32-розрядного поля з фіксованою точкою.
Інакше SZ скинутий.

7.3.2 Прапор переповнення пристрої зсуву (SV)

На SV впливають всі операції пристрої зсуву. Він встановлюється, якщо:
значущі розряди зрушені вліво від 32-розрядного поля з фіксованою крапкою;
виявлено, встановлено чи очищений біт поза 32-розрядного поля з фіксованою крапкою;
вилучено поле, яке частково або цілком знаходилося зліва від 32-розрядного поля з фіксованою крапкою;
операції LEFTZ або LEFTO повертають результат більше 32.
Інакше SV скинутий.

7.3.3 Знаковий прапор пристрої зсуву (SS)

На прапор SS впливають всі операції пристрої зсуву. Для обох операцій вилучення порядку прапор встановлюється, якщо вхідний операнд з фіксованою точкою негативний, і очищається, якщо позитивний. Для всіх інших операцій SS обнуляється.

7.4 Резюме команд пристрої зсуву

Команда
Прапори
SZ
SV
SS
з Rn = LSHIFT Rx BY Ry
*
*
0
з Rn = LSHIFT Rx BY <data8>
*
*
0
з Rn = Rn OR LSHIFT Rx BY Ry
*
*
0
з Rn = Rn OR LSHIFT Rx BY <data8>
*
*
0
з Rn = ASHIFT Rx BY Ry
*
*
0
з Rn = ASHIFT Rx BY <data8>
*
*
0
з Rn = Rn OR ASHIFT Rx BY Ry
*
*
0
з Rn = Rn OR ASHIFT Rx BY <data8>
*
*
0
Rn = ROT Rx BY Ry
*
0
0
Rn = ROT Rx BY <data8>
*
0
0
Rn = BCLR Rx BY Ry
*
*
0
Rn = BCLR Rx BY <data8>
*
*
0
Rn = BSET Rx BY Ry
*
*
0
Rn = BSET Rx BY <data8>
*
*
0
Rn = BTGL Rx BY Ry
*
*
0
Rn = BTGL Rx BY <data8>
*
*
0
BTST Rx BY Ry
*
*
0
BTST Rx BY <data8>
*
*
0
Rn = FDEP Rx BY Ry
*
*
0
Rn = FDEP Rx BY <bit6>: <len6>
*
*
0
Rn = Rn OR FDEP Rx BY Ry
*
*
0
Rn = Rn OR FDEP Rx BY <bit6>: <len6>
*
*
0
Rn = FDEP Rx BY Ry (SE)
*
*
0
Rn = FDEP Rx BY <bit6>: <len6> (SE)
*
*
0
Rn = Rn OR FDEP Rx BY Ry (SE)
*
*
0
Rn = Rn OR FDEP Rx BY <bit6>: <len6> (SE)
*
*
0
Rn = FEXT Rx BY Ry
*
*
0
Rn = FEXT Rx BY <bit6>: <len6>
*
*
0
Rn = FEXT Rx BY Ry (SE)
*
*
0
Rn = FEXT Rx BY <bit6>: <len6 (SE)
*
*
0
з Rn = EXPRx (EX)
*
0
*
з Rn = EXP Rx
*
0
*
Rn = LEFTZ Rx
*
*
0
Rn = LEFTO Rx
*
*
0
Rn = FPACK Fx
0
*
0
Fn = FUNPACK Rx
0
0
0
*= Залежить від даних
Rn, Rx, Ry = будь-який регістр реєстрового файлу; використовується поле біт залежить від команди
Fn, Fx = будь-який регістр реєстрового файлу; слові
| З плаваючою
точкою

8. Багатофункціональні обчислення

Поряд з операціями, виконуваними кожним обчислювальним пристроєм окремо, в ADSP-2106x підтримуються багатофункціональні обчислення, коли реалізуються паралельні операції ALU і помножувача або подвійні функції в ALU. Багатофункціональні і однофункціональні обчислення виконуються аналогічно. Оновлення прапорів відбувається так само, за винятком того, що в подвійній операції ALU складання / віднімання прапори встановлюються на підставі операції "АБО" між прапорами від кожної операції.
При використанні ALU і помножувача для багатофункціональних обчислень кожен з чотирьох вхідних операндів обмежений своїм набором із чотирьох регістрів реєстрового файлу (див. нижче рис.2.9). Наприклад, операнд X в ALU може бути тільки R8, R9, R10 або R11. У всіх інших операціях вхідний операнд може бути будь-яким регістром реєстрового файлу.
Подвійне додавання / віднімання
Ra = Rx + Ry, Rs = Rx-Ry Fa = Fx + Fy, Fs = Fx-Fy
Множення / накопичення і додавання, віднімання або усереднення з фіксованою точкою
Ra = RH-8 + R15-12 Ra = Rll-8-R15-12 Ra = (Rll-8 + R15-12) / 2
Rm = R3-0 * R7-4 (SSFR) MRF = MRF + R3-0 * R7-4 (SSF) Rm = MRF + R3-0 * R7-4 (SSFR) MRF = MRF - R3-0 * R7- 4 (SSF) Rm = MRF - R3-0 * R7-4 (SSFR)
Множення і операція ALU з плаваючою точкою
Fm = F3-0 * F7-4, Fa = FH-8 + F15-12
Fa = Fll-8-F15-12
Fa = FLOAT Rll-8 by R15-12
Ra = FIX Fl 1 - 8 by R15-12
Fa = (Fll-8 + F15-12) / 2
Fa = ABSFH-8
Fa = MAX (Fll-8, F15-12)
Fa = MIN (FH-8, F15-12)
Множення і подвійне складання / віднімання
Rm = R3-0 * R7-4 (SSFR), Fm = F3-0 * F7-4, Ra = Rll-8 + R15-12, Fa = FH-8 + F15-12, Rs = Rll-8-R15 -12 Fs = FH-8-F15-12
Rm, Ra, Rs, Rx, Ry - будь-який регістр реєстрового файлу; операнд з фіксованою точкою Fm, Fa, Fs, Fx, Fy - будь-який регістр реєстрового файлу; операнд з плаваючою крапкою
SSFR - операнд Х знаковий, операнд Y знаковий, дробові вхідні дані, результат заокруглений до найближчого
SSF - операнд X знаковий, операнд Y знаковий, дробові вхідні дані

9. Регістровий файл

Регістровий файл забезпечує інтерфейс між внутрішніми шинами даних процесора і обчислювальними пристроями. Він також служить для зберігання операндів і локальних результатів. Регістровий файл складається з 16 первинних і 16 додаткових (вторинних) регістрів. Всі регістри - 40-разрядние.32-розрядні дані з обчислювального пристрою завжди вирівнюються вліво; при зчитуванні регістру 8 молодших розрядів ігноруються, при записі - заповнюються нулями.
Обмін даними між пам'яттю програми або пам'яттю даних з реєстрових файлом відбувається по шині даних пам'яті програми (РМ) і по шині даних пам'яті даних (DM) відповідно. Одне звернення по шині даних РМ і по шині даних DM може відбуватися за один цикл. Між реєстрових файлом і 40-розрядною шиною даних DM завжди передається 40-розрядне слово. Регістровий файл передає дані по 48-розрядній шині даних РМ в 40 старших розрядах, заповнюючи нулями молодші.
Якщо один і той же регістр реєстрового файлу визначений як джерело операнда і як місце приміщення результату або вибірки даних з пам'яті, то зчитування відбувається в першу половину циклу, а запис - в другу. Т.ч., старі дані використовуються як операнди перед тим, як регістр оновлюється новими даними результату. Якщо здійснюється кілька записів в один той самий регістр реєстрового файлу одночасно, то запис відбувається у відповідність з пріоритетом операцій. Реально запишуться ці операції з найвищим пріоритетом. Пріоритет операцій визначається джерелом записуваних даних. Нижче перераховані устрою в порядку зменшення пріоритету:
пам'ять даних або універсальний регістр;
пам'ять програми;
ALU;
помножувач;
пристрій зсуву.
Один і той же регістр у регістровому файлі починається з префікса F (у вихідному коді асемблера), коли він використовується в обчисленнях з плаваючою точкою. І починається з префікса R, коли використовується в обчисленнях з фіксованою точкою. Наприклад, наступні команди використовують одні й ті ж регістри:
FO = F1 * F2; множення з плаваючою точкою R0 = R1 * R2; множення з фіксованою точкою
Префікси F і R не впливають на передачу 32-розрядних (або 40-розрядних) даних; вони тільки визначають, як ALU, помножувач, або пристрій зсуву обробляють дані. F і R можуть бути великими і малими; в асемблері не враховується регістр клавіатури.

9.1 Додаткові регістри

Для полегшення швидкого контекстного перемикання в регістровому файлі є додатковий набір регістрів. Кожна половина реєстрового файлу: молодша - R0-R7 - і старша - R8-R15 - може незалежно підключати свій додатковий набір. Активний набір визначається двома бітами в регістрі MODEL Біт M0DE1 Ім'я
Опис:
7SRRFH додатковий набір реєстрового файлу обраний для R15-R8 (F15-F8) 10SRRFL додатковий набір реєстрового файлу обраний для R7-R0 (F7-F0). Зауваження: після установки біта в регістрі MODE1 додатковий набір регістрів стає доступним через один цикл. Наприклад: BIT SET MODE1 SRRFL; / * активізація додаткових регістрів * / NOP; / * очікування, поки активізуються * / / * додаткові регістри * / R0 = 7.
Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Реферат
152.2кб. | скачати


Схожі роботи:
Дані їх носії та види Операції з даними
Операції над множинами
Операції над літерними величинами
Операції над квадратною матрицею
Множини і операції над ними
Логічні операції над поняттями
Множини Операції над множинами
Вектори лінійні операції над ними
Turbo Paskal Операції над матрицями
© Усі права захищені
написати до нас