перемикання. Таким чином нове завдання, типу підпрограми обробки переривання, може виконуватися без збереження поточних даних в пам'яті.
Вибір первинного або додаткового банку регістрів визначається установкою нульового біта в регістрі 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