введення X може приймати дані з двох джерел: з регістра Ах і з шини результатів R. R-шина сполучає вихідні регістри всіх обчислювальних модулів. Регістр AX призначений тільки для порту X і складається з двох частин AX0 і AX1. Ці регістри подключенны до DMD-шине. Система команд дозволяє читання регістра AX і за допомогою PMD-шины, але прямого з'єднання з нею немає, ця операція використовує модуль DMD-PMD обміну. Виводи регістрів AX0 і AX1 реалізовані так, щоб один забезпечував введення в ALU, а інший в цей час управляв DMD-шиной.
Порт введення Y також приймає дані з двох джерел: з регістра AY і регістра зворотного зв'язку ALU – AF. Регістр AY прив'язаний до порту Y і состои з двох регістрів AY0 і AY1. Ці регістри даступны для читання і запису з DMD-шины і перезаписываемы з PMD-шины. Система комманд дозволяє читати регістри AY0 і AY1 за допомогою PMD-шины, але те ж з використанням модуля DMD-PMD. Виводи ругистров AY0 і AY1 реалізовані аналогічно регістрам AX0 і AX1.
Вихід ALU підключений до вихідного регістра результату AR і через регістр зворотного зв'язку AF на вхід. AF – внутрішній регістр ALU, який дозволяє результату обчислення використовуватися як наступний операнд. Регістр AR має вихід на DMD- і R-шины. У системі комманд передбачена можливість читання регістра AR за допомогою PMD-шины аналогічно двом попереднім випадкам.
Будь-який з регістрів ALU доступний для запису і читання в течії циклу процесора (для читання на початку циклу, для читання - в кінці). Таким чином, нове значення, записане в кінці одного циклу, може бути прочитаний лише на початку наступного. Це дозволяє вхідним регістрам записати в ALU опренд на початку циклу і вважати наступний в кінці того ж циклу. Це так само дозволяє зберегти вміст регістра результату в пам'яті і прооперувати з наступним результатом в одному циклі.
ALU має подвійні банки регістрів AX, AY, AF і AR (на рис.2.1 це показано тінями). Але воднораз часу доступний тільки один банк. Доплнітельний банк може бути активізований для надзвичайно швидкого контекстного перемикання. В цьому випадку нове завдання, подібно до підпрограми обробці переривання, може выполнияться без збереження поточних даних в пам'яті.
Вибір головного або альтернативного банку регістрів визначається бітом 0 регістра режимоа процесора MSTAT. Якщо цей біт – 0, то вибраний головний банк, якщо – 1, то додатковий.
Стандартні функції
Стандартні функції ALU перечисленны в таблиці 2.1.
Таблиця 2.1
Функція |
Призначення
R= X+Y |
Складання операндів X і Y
R= X+Y+CI |
Складання операндів X і Y і біта корекції
R= X-Y |
Віднімання операндів X з Y
R= X-Y+CI-1 |
Віднімання операндів X з Y з позикою
R= -X |
Інверсія X
R= -Y |
Інверсія Y
R= X+1 |
Інкремент X
R= Y+1 |
Інкремент Y
R= X-1 |
Декремент X
R= Y-1 |
Декремент Y
R= PASS X |
Операнд X не змінює результату
R= PASS Y |
Операнд Y не змінює результату
R= 0 |
Очищення результату
R= ABS X |
Модуль X
R= X AND Y |
Логічне множення операндів X і Y
R= X OR Y |
Логічне складання опреандов X і Y
R= X XOR Y |
Що виключає АБО операндів X і Y
R= NOT X |
Заперечення X
R= NOT Y |
Отріценіє Y
Регістри введення виведення ALU
Регістри введення ALU перечисленны нижче.
Регістри для порту X: AX0, AX1, AR, MR0, MR1, MR2, SR0, SR1.
Регістри для порту Y: AY0, AY1, AF.
Регістри для порту R: AR, AF.
Регістри MR0, MR1, MR2 є регістрами результатів модуля MAC, а SR0, SR1 – модуля Shifter.
Можливість мультиточности
Операції мультиточности в ALU пов'язані з сигналом carry-in і бітом перенесення AC. Операція складання з перенесенням призначена для складання старших частин мультиточных чисел, також як, віднімання з позикою – для їх віднімання.
Режим насичення ALU
Регістр AR має режим роботи - насичення, в якому він встановлюється в мінімальне негативне значення або максимальне позитивне, якщо операція закінчується переповнюванням. Ця функція регістра AR стає можливою при установці 3 регістри MSTAT.
Таблиця 2.2.
Переповнювання (AV) |
Carry (AC) |
Вміст AR
0 | 0 | Результат на виході ALU
0 | 1 | Результат на виході ALU
1 | 0 | 0111111111111111 (покладе.)
1 | 1 | 1000000000000000 (отриц.)
Режим блокування переповнювання
Режим блокування переповнювання вирішується при установки бита 2 регістри MSTAT. У цьому режимі при переповнюванні битий AV встановлюється і при подальших операціях залишається в цьому стані, таким чином наступне переповнювання вже не генерується. Біт стану AV можна очистити безпосередньо з DMD-шины.
Ділення
ALU підтримує методи ділення. Ділення здійснюється шляхом складання і циклічного зрушення за допомогою двох спеціальних примітивів. Ділити можна знакові і без знакові числа, проте дільник і ділиме мають бути одного типу.
Звичайна точність ділення (32-розрядне ділиме, 16-розрядний дільник, 16-розрядний залишок) реалізується за 16 циклів. Може бути отримана велика або менша точність залишку. Дільник може бути збережений в регістрі AX0, AX1 або в будь-якому регістрі результатів R. Старший байт знакового дільника повинен знаходитися або в регістрі AY1, або в AF, без знакового – в AF. Молодший байт дільника будь-якого типу повинен знаходитися в AY0. Залишок після ділення буде записаний в регістр AY0.
Перший з двох примітивів - це команда «ділення-знак (DIVS) », преназначена для ділення чисел із знаком. Вона обчислює знаковий біт залишку виконуючи операцію ІСЬКЛЮЧАЮЩЄЄ-ІЛІ для знакових розрядів дільника і ділимого. Регістр AY0 зрушується на одну позицію так, щоб знаковий розряд перемістився в позицію LSB. Обчислений зныковый розряд зберігається в біт AQ регістра стану. Структура операції DIVS показанна