У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент


перемикання. Таким чином нове завдання, типу підпрограми обробки переривання, може виконуватися без збереження поточних даних в пам'яті.

Вибір первинного або додаткового банку регістрів визначається установкою нульового біта в регістрі MSTAT станів процесора. Якщо цей біт встановлений в 0, то вибраний первинний банк.

Операції МАС

У цьому розділі описуються операції обчислювального модуля МАС, вхідні формати даних, обробка переповнювання і насичення.

Стандартні функції

Набор стандартних операцій перерахований в таблиці 3.1.

Таблиця 3.1

Назва |

Призначення

X(Y |

Множення X на Y

MR+X(Y |

Множення і складання з MR

MR-X(Y |

Множення і віднімання з MR

0 | Очищення MR

ADSP-2100 забезпечують два режими роботи операції множення з накопиченням: роботи з дробовими числами (1.15) і робота з цілими числами (16.0).

У дробовому режимі вихідний регістр P коректує формат, тобто перш ніж додати значення в MR воно зрушується на один розряд вліво. Таким чином, біт 31 регістра P запишеться в біт 32 регістри MR, а 0-ою битий – в перший. У позицію LSB, при цьому записується нуль. На малюнку 3.2. показаний дробовий формат роботи модуля множення.

У цілочисельному форматі (рис.3.3) регістр P не зрушується перш ніж додатися до MR.

Вибір режиму здійснюється установкою 4 біта регістра MSTAT процесора. Якщо цей біт в 1, то вибраний цілочисельний режим. У будь-якому форматі блок множення формує 32-розрядний результат і передає його в блок складання/віднімання, де виходить кінцеве значення операції, яке записується в MR.

Вхідні формати

Для полегшення множення вхідні операнди можуть знаходиться в будь-яких форматах. Вхідні формати визначаються, як частина команди і вибираються динамічно при зверненню до блоку множення.

Знаковий ( знаковий – використовується при множенні двох знакових чисел простий точності або двох старших частин знакових чисел подвійної точності. Без знаку ( знаковий (знаковий ( без знаку) - використовується при множенні верхньої частини знакового числа на нижню частину іншого або для множення знакового числа простий точності з числом тієї ж точності без знаку. Без знаку ( без знаку – використовується при множенні чисел простий точності без знаку, або нижніх частин знакових чисел подвійної точності.

Регістри введення виведення МАС

Регістри для вхідного порту X – MX0, MX1, AR, MR0, MR1, MR2, SR0, SR1.

Регістри для вхідного порту Y – MY0, MY1, MF.

Регістри для вихідного порту R – MR (MR0, MR1, MR2), MF.

Операції над регістром MR

Як показано на рис.3.1 регістр MR розбитий на три секції: MR0 (биті 0-15), MR1 (биті 16-31) і MR2 (биті 32- 39). Кожна з них може бути завантажена з DMD-шины і виведена на R- або DMD-шину. Регістр MR2 пов'язаний з молодшими вісьма розрядами цих шин. Коли MR2 виводиться на R- або DMD-шину це означає, що знак розширений до 16 розрядів.

Насичення і переповнювання МАС

Після кожної операції блок складання/віднімання генерує сигнал переповнювання MV, який підключений регістру стану арифметики процесора ASTAT. Битий MV встановлюється в 1 якщо результат складання виходить за межі регістрів MR1/MR2 – 32 бита, тобто якщо один з дев'яти старших розрядів регістра MR не 0, або всі нулі.

Регістр MR має можливість насичення в певному позитивному або негативному значенні, якщо відбувається переповнювання. Насичення залежить від стану бита MV регістра станів арифметики ASTAT і бита MSB регістра MR2. Таблиця 3.2. описує операцію насичення.

Таблиця 3.2

MV |

MSB |

Вміст регістра MR після операції

0 | 0 або 1 |

Без змін

1 | 0 | 00000000 0111111111111111 1111111111111111 (покладе.)

1 | 1 | 11111111 1000000000000000 0000000000000000 (отрицат.)

Насичення в МАС є швидше командою, чим режимом, як в ALU. Вона використовується при завершенні послідовності множень з накопиченням, так, щоб проміжні переповнювання не привели суматор до насичення.

Переповнювання більше MSB неприпустимо. У зворотному випадку знаковий розряд буде втрачений і насичення не буде правильним. Проте, щоб досягти цього стану потрібно 255 переповнювань.

Округлення

Суматор може округляти 40-розрядний результат до 15-16 розряду. Округлення можна віднести до системи команд мікропроцесора. Закруглений результат прямує або в MR, або в регістр зворотного зв'язку MF. Коли для виводу використовується MF, в нього записується 16-розрядний закруглений результат. Аналогічно, якщо для виводу вибраний MR, то в MR1 записуються 16 розрядів закругленого результату, а в MR2 – ефект округлення, таким чином виходить 24-розрядний закруглений результат.

Суматор використовує незміщену схему округлення. Стандартний метод зміщеного округлення полягає в записі 1 в 15-у розрядну позицію. Цей метод викликає ряд позитивних зсувів, починаючи з середини (коли MR=0х8000), округляючи результат вгору. Суматор же усуває цей зсув, встановлюючи 16 битий в 0, коли значення регістра MR досягає середини. При цьому парні значення MR1 округляються вниз, а непарні вгору. Таким чином виходить однорідна послідовність зсувів.

Приклад типової операції округлення:

MR2 MR1 MR0

Незакруглене значення : xxxxxxxx xxxxxxxx00100101 1xxxxxxxxxxxxxxx

Битий 15 = 1

Додаємо 1 до 15 розряду і зміщуємо 1

Закруглене значення : xxxxxxxx xxxxxxxx00100110 0xxxxxxxxxxxxxxx

MR2 MR1 MR0

Незакруглене значення : xxxxxxxx xxxxxxxx01100110 1000000000000000

Битий 15 = 1 і биті 0-14 = 0

Додаємо 1 до розряду 15 і зрушуємо 1

xxxxxxxx xxxxxxxx01100111 0000000000000000

Зараз битий 16 = 1, встановлюємо його в 0

Закруглено значення : xxxxxxxx xxxxxxxx01100110 0000000000000000

У останньому випадку 16 біт встановлюється в 0. Цей алгоритм застосовується на кожній операції округлення.

Зміщене округлення

Режим зміщеного округлення можливий в процесорах ADSP-217x, ADSP-218x, і ADSP-21msp58/59. Цей режим вибирається шляхом установки бита BIARND регістра управління SPORT0. Якщо BIARND=0, то використовується операція незміщеного округлення, якщо BIARND=1, то зміщеного.

Приклад:

MR перед RND Зміщений результат RND Незміщений результат RND

00-0000-8000 00-0001-8000 00-0000-8000

00-0001-8000 00-0002-8000


Сторінки: 1 2 3 4 5 6 7