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


на малюнку 2.2.

При діленні чисел без знаку операція DIVS не застосовується. В цьому випадку битий AQ встановлюється в 0 уручну. Він показує, що залишок має бути позитивним.

Другий примітив з розділу ділення – це команда DIVQ, яка виконується неодноразово і генерує по одному біту приватного. При простий точності ділення чисел без знаку команда DIVQ виконується 16 разів, для такої ж точності ділення чисел із знаком операція виконується 15 разів після обчислення знакового розряду за допомогою команди DIVS. DIVQ зрушує регістр AY0 вліво на один розряд так, щоб новий біт приватного опинився у позиції LSB. Стан бита AQ, яке генерується на попередній операції, визначає операцію ALU для обчислення часткового результату. Якщо AQ=1, то ALU додає дільника до часткового результату в AF. Якщо AQ=0, то ALU віднімає дільника з часткового результату в AF. Так само як і в операції DIVS ALU виводить результат в регістр AF. Операція DIVQ проілюстрована на рис.2.3.

Формат результату при будь-якому числовому уявленні визначається форматом дільника і ділимого. Хай NL число розрядів вліво і NR – це число розрядів вправо від двійкової точки ділимого; DL і DR- відповідно теж, тільки для дільника. Тоді приватне складається з NL–DL + 1 бітів зліва від двійкової крапки і містить NR– DR–1 бітів справа.

 

 

Іноді необхідна деяка зміна формату ділимого і дільника. Наприклад, якщо обидва операнди знакові і дроби (ділиме у форматі 1.31, а дільник – 1.15), то результат запишеться у форматі 1.15, т.ч. для правильного результату необхідно, щоб ділиме було менше дільника.

Щоб розділити два цілі числа (ділиме у форматі 32.1, а дільник – 16), необхідно перед діленням привести ділиме до формату 31.1, тобто зрушити його вліво на один розряд.

Ділиме: BBBBB.BBBBBBBBBBBBBBBBBBBBBBBBBBB

NL NR

Дільник: BB.BBBBBBBBBBBBBB

DL DR

Приватне: BBBB.BBBBBBBBBBBB

(NL–DL+1) (NR–DR–1)

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

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

Призначення бітів регістра ASTAT описане нижчим:

AZ – ZERO - логічне складання всіх бітів регістра результатів ALU. Встановлюється в 1, якщо результат операції дорівнює нулю. AN – NEGATIV - знаковий розряд результату ALU. Одиниця, якщо результат негативний. AV – OVERFLOW – встановлюється в одиницю, якщо відбувається переповнювання ALU. AC – CARRY – біт перенесення. AS – SIGN – знаковий розряд вхідного X-порта ALU. Необхідний тільки для команди ABS. AQ – QUOTIENT – битий приватного. Генерується тільки командами DIVS і DIVQ.

Обчислювальний модуль множення з накопиченням (MAC)

Обчислювальний модуль МАС забезпечує швидке множення, множення з додаванням, множення з відніманням, функції насичення і очищення в нуль. Функція зворотного зв'язку дозволяє частини результату в одному циклі бути одним із співмножників в наступному.

Опис блок-схеми МАС

На малюнку 3.1. показана блок-схема обчислювального модуля множення з накопиченням.

МАС має два вхідні 16-розрядні порти X і Y і 32-розрядний порт виведення результату P. 32-розрядний результат поступає в 40-розрядний блок складання/віднімання, який або додає, або віднімає поточний результат з регістра результату МАС (MR), або передає поточний результат безпосередньо в MR (регістр MR має 40 розрядів). Фактично регістр MR складається з трьох (MR0 і MR1 – 16-розрядні і MR2 – 8-рахрядный) регістрів.

Блок складання/віднімання має більше 32 розрядів потім, щоб врахувати проміжні переповнювання у ряді операції множення з накопиченням. Біт ознаки Мv (переповнювання) встановлюється в одиницю, якщо значення акумулятора перевищує 32 розряди, тобто в старшій частині регістра результату MR є дев'ять значущих бітів (без знаку).

Регістри введення-виводу подібні до регістрів ALU.

Порт Х може приймати дані з регістра MX або з будь-якого іншого регістра на R-шине (результату). R-шина сполучає вихідні регістри всіх обчислювальних модулів, для безпосереднього використання результатів обчислень як вхідні операнди. Регістр MX складається з двох: MX0 і MX1. Вони читаються і записуються з DMD-шины. Виводи регістрів MX0 і MX1 влаштовані таким чином, що один поставляє множник в блок множення, а інший управляє DMD-шиной.

Порт Y приймає дані з регістра MY або регістра зворотного зв'язку MF. MY так само розбитий на два регістри (MY0 і MY1), доступ до яких здійснюється з DMD-шины і можливий запис в низ з PMD-шины. Система команд передбачає читання цих регістрів за допомогою PMD-шины, але прямого доступу для цієї операції немає, в цьому випадку використовується модуль DMD-PMD обміну. Виводи регістра MY влаштовані аналогічно MX.

Результат множення поступає або в блок складання/віднімання, або в регістри MY або MF. Регістр зворотного зв'язку MF дозволяє 16-31-розрядному результату обчислення в попередньому циклі стає операндом множення на вході Y, в наступному. 40-розрядний регістр MR роздільний на три секції (MR0, MR1, MR2). Вміст будь-який з них може бути виведене на DMD- або R-шину і записане з DMD-шины.

Будь-який з регістрів МАС може читатися і записуватися в одному циклі (читання на початку циклу, запис - в кінці). Прочитаний вміст регістра на початку одного циклу записаний в кінці попереднього, отже нове значення регістра може бути прочитане тільки в перебігу наступного циклу. Це дозволяє вхідному порту надавати операнд для МАС на початку циклу і оперувати з наступним значенням з пам'яті в кінці того ж циклу. Це відноситься і до вихідного регістра.

Регістри MR, MF, MX, MY продубльовані у вторинному банку (на рис.3.1. він показаний на задньому плані). Одночасно доступний лише один з банків. Додатковий банк реєстраторів може бути активізований для надзвичайно швидкого контекстного


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