Смекни!
smekni.com

Операции над данными в СП с плавающей точкой (стр. 3 из 5)

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 бита (не включая скрытый бит).