|
Операции над данными в СП с плавающей точкой |
b>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 бита (не включая скрытый бит).6.5 Флаги состояния умножителяВ конце каждой операции умножитель обновляет четыре флага состояния в регистре ASTAT. Состояния этих флагов отражают результат самой последней операции умножителя. Умножитель также обновляет четыре "залипших" флага состояния в регистре STKY. После обновления "залипший" флаг остается в этом состоянии, пока явно не будет обнулен. |
Бит ASTAT | Имя | | 6 | MN | | 7 | MV | | 8 | ми | | 9 | Ml | | Бит STKY | Имя | | 6 | MOS | | 7 | MVS | | 8 | MUS | | 9 | MIS | | |
Описание: Результат операции умножителя отрицательный Переполнение умножителя Потеря значащих разрядов Неправильная операция умножителя с плавающей точкой Описание Переполнение результата умножителя с фиксированной точкой Переполнение результата умножителя с плавающей точкой Потеря значащих разрядов Неправильная операция умножителя с плавающей точкой Обновление флага происходит в конце цикла, в котором генерируется состояние, а в следующем цикле он становится доступным. Если программа осуществляет прямую запись в регистры ASTAT или STKY в том же цикле, в котором умножитель выполняет операцию, то явная запись имеет преимущество. 6.5.1 Флаги потери значащих разрядов (MU, MUS)Потеря значащих разрядов определена для всех операций умножителя с фиксированной и плавающей точкой. Флаги устанавливаются, если результат операции умножителя меньше, чем минимальное число, представимое в этом формате. Иначе он сброшен.Для результатов с плавающей точкой MU и MUS устанавливаются, если результат после округления потерял значащие разряды (несмещенный порядок <-126). Ненормализованные операнды всегда обрабатываются как нули, поэтому они никогда не приводят к потере значащих разрядов.Для результатов с фиксированной точкой установка MU и MUS зависит от формата данных и происходит при следующих условиях:Дополнительный код:Дробное: выше 48 бит все нули или все единицы, ниже 32 бит не все нулиЦелое: невозможноБеззнаковый:Дробное: выше 48 бит все нули, ниже 32 бит не все нулиЦелое: невозможноПри помещении результата с фиксированной точкой в регистр MR потерявшая значащие разряды часть результата доступна в MR0 (только для дробного результата).6.5.2 Отрицательный флаг умножителя (MN)Отрицательный флаг определен для всех операций умножителя. MN устанавливается, если результат операции умножителя отрицательный. Иначе сброшен.6.5.3 Флаг переполнения умножителя (MV)Переполнение определено для всех операций умножителя с фиксированной и плавающей точкой. Для результатов с плавающей точкой MV и MVS устанавливаются, если результат после округления переполнен (несмещенный порядок > 127).Для результатов с фиксированной точкой установка MV и MOS зависит от формата данных и происходит при следующих условиях:Дополнительный код:Дробное: выше 17 бит MR не все нули или все единицыЦелое: выше 49 бит MR не все нули или все единицыБеззнаковый:Дробное: выше 16 бит MR не все нулиЦелое: выше 48 бит MR не все нулиПри помещении результата с фиксированной точкой в регистр MR переполненная часть результата доступна в MR1 и MR2 (для целого результата) или только в MR2 (для дробного результата).6.5.4 Флаг ошибки умножителя (Ml)Флаг ошибки определен для умножения с плавающей точкой. Ml устанавливается, если:входной операнд NAN;входные операнды бесконечность или ноль (замечание: ненормализованные операнды обрабатываются как нули).Иначе Ml сброшен.* установлен или сброшен, в зависимости от результатов выполнения команды** может быть установлен (но не сброшен), в зависимости от результатов выполнения команды - не изменяетсяRn,Rx,Ry = R15-R0; регистры регистрового файла; обрабатываются как операнды с фиксированной точкойFn,Fx,Fy = F15-F0; регистры регистрового файла; обрабатываются как операнды с плавающей точкойMRxF = MR2F, MR1F, MR0F; основные накопители результата операции умножителяMRxB = MR2B, MR1B, MR0B; дополнительные накопители результата операции умножителя7. Устройство сдвигаУстройство сдвига работает с 32-разрядными операндами с фиксированной точкой. Операции устройства сдвига:сдвиги и циклические сдвиги из крайнего левого положения в крайнее правое;операции с битами: установка, обнуление, переключение и проверка;операции с полем бит: извлечение и внесение;поддержка ADSP-2100-совместимых операций преобразования форматов фиксированная/плавающая точка (нахождение порядка, числа начальных единиц или нулей).7.1 Работа устройства сдвигаУстройство сдвига обрабатывает от одного до трех входных операндов: X определяет операнд, над которым производится операция; Y определяют величину сдвига, длину поля или положение битов; Z определяет операнд, который обновляется после операции над ним (например, Rn=Rn OR LSHIFT Rx BY Ry). Устройство сдвига возвращает один результат в регистровый файл.Входные операнды берутся из 32 старших бит регистра регистрового файла (биты 39-8, как показано на рис.2.4) или из непосредственного значения в команде. Операнды передаются в течение первой половины цикла. Результаты сохраняются в 32 старших битах регистра (8 младших разрядов обнуляются) в течение второй половины цикла. Т.о., устройство сдвига может считывать и записывать один и тот же регистр регистрового файла за один цикл.Некоторые операции устройства сдвига выводят 8-разрядные или 6-разрядные результаты. Эти результаты размещаются либо в поле shf8, либо в поле bit6 (см. рис.2.5) и дополняются по знаку до 32 бит.Т.о., устройство сдвига всегда возвращает 32-разрядный результат.7.2 Флаги состояния устройства сдвигаВ конце операции устройство сдвига возвращает три флага состояния. Все эти флаги появляются в регистре ASTAT. Флаг SZ устанавливается, если результат равен нулю, флаг SV указывает на переполнение, флаг SS указывает, что входной операнд знаковый в операции определения порядка.Бит ASTAT Имя Описание11SV переполнение результата устройства сдвига или битыслева от старшего битаSZ нулевой результат устройства сдвигаSS знак входного операнда устройства сдвига(только при определении порядка)Обновление флага происходит в конце цикла, в котором генерируется состояние, а в следующем цикле он становится доступным. Если программа осуществляет прямую запись в регистры ASTAT в том же цикле, в котором устройство сдвига выполняет операцию, то явная запись имеет преимущество.7.3.1 Нулевой флаг устройства сдвига (SZ)На нулевой флаг влияют все операции устройства сдвига. Он устанавливается, если:результат операции устройства сдвига равен нулю;команда проверки бит определяет бит вне 32-разрядного поля с фиксированной точкой.Иначе SZ сброшен.7.3.2 Флаг переполнения устройства сдвига (SV)На SV влияют все операции устройства сдвига. Он устанавливается, если:значащие разряды сдвинуты влево от 32-разрядного поля с фиксированной точкой;обнаружен, установлен или очищен бит вне 32-разрядного поля с фиксированной точкой;извлечено поле, которое частично или целиком находилось слева от 32-разрядного поля с фиксированной точкой;операции LEFTZ или LEFTO возвращают результат больше 32.Иначе SV сброшен.7.3.3 Знаковый флаг устройства сдвига (SS)На флаг SS влияют все операции устройства сдвига. Для обеих операций извлечения порядка флаг устанавливается, если входной операнд с фиксированной точкой отрицательный, и очищается, если положительный. Для всех других операций SS обнуляется.7.4 Резюме команд устройства сдвига|
Команда | | Флаги | | | | SZ | SV | SS | | с Rn=LSHIFT Rx BY Ry | * | * | 0 | | с Rn=LSHIFT Rx BY <data8> | * | * | 0 | | с Rn=Rn OR LSHIFT Rx BY Ry | * | * | 0 | | с Rn=Rn OR LSHIFT Rx BY <data8> | * | * | 0 | | с Rn= ASHIFT Rx BY Ry | * | * | 0 | | с Rn= ASHIFT Rx BY <data8> | * | * | 0 | | с Rn=Rn OR ASHIFT Rx BY Ry | * | * | 0 | | с Rn=Rn OR ASHIFT Rx BY <data8> | * | * | 0 | | Rn=ROT Rx BY Ry | * | 0 | 0 | | Rn=ROT Rx BY <data8> | * | 0 | 0 | | Rn=BCLR Rx BY Ry | * | * | 0 | | Rn=BCLR Rx BY <data8> | * | * | 0 | | Rn=BSET Rx BY Ry | * | * | 0 | | Rn=BSET Rx BY <data8> | * | * | 0 | | Rn=BTGL Rx BY Ry | * | * | 0 | | Rn=BTGL Rx BY <data8> | * | * | 0 | | BTST Rx BY Ry | * | * | 0 | | BTST Rx BY <data8> | * | * | 0 | | Rn=FDEP Rx BY Ry | * | * | 0 | | Rn=FDEP Rx BY <bit6>: <len6> | * | * | 0 | | Rn=Rn OR FDEP Rx BY Ry | * | * | 0 | | Rn=Rn OR FDEP Rx BY <bit6>: <len6> | * | * | 0 | | Rn=FDEP Rx BY Ry (SE) | * | * | 0 | | Rn=FDEP Rx BY <bit6>: <len6> (SE) | * | * | 0 | | Rn=Rn OR FDEP Rx BY Ry (SE) | * | * | 0 | | Rn=Rn OR FDEP Rx BY <bit6>: <len6> (SE) | * | * | 0 | | Rn=FEXT Rx BY Ry | * | * | 0 | | Rn=FEXT Rx BY <bit6>: <len6> | * | * | 0 | | Rn=FEXT Rx BY Ry (SE) | * | * | 0 | | Rn=FEXT Rx BY <bit6>: <len6 (SE) | * | * | 0 | | с Rn=EXPRx (EX) | * | 0 | * | | с Rn=EXP Rx | * | 0 | * | | Rn=LEFTZ Rx | * | * | 0 | | Rn=LEFTO Rx | * | * | 0 | | Rn=FPACK Fx | 0 | * | 0 | | Fn=FUNPACK Rx | 0 | 0 | 0 | | *= зависит от данных | | | | | Rn, Rx, Ry = любой регистр регистрового файла; используемое поле бит зависит от команды | | Fn, Fx = любой регистр регистрового файла; слове | | с плавающей | точкой | | | | 8. Многофункциональные вычисленияНаряду с операциями, выполняемыми каждым вычислительным устройством отдельно, в ADSP-2106x поддерживаются многофункциональные вычисления, когда реализуются параллельные операции ALU и умножителя или двойные функции в ALU. Многофункциональные и однофункциональные вычисления выполняются аналогично. Обновление флагов происходит так же, за исключением того, что в двойной операции ALU сложение/вычитание флаги устанавливаются на основании операции "ИЛИ" между флагами от каждой операции.При использовании ALU и умножителя для многофункциональных вычислений каждый из четырех входных операндов ограничен своим набором из четырех регистров регистрового файла (см. ниже рис.2.9). Например, операнд X в ALU может быть только R8, R9, R10 или R11. Во всех других операциях входной операнд может быть любым регистром регистрового файла.Двойное сложение/вычитаниеRa=Rx+Ry, Rs=Rx-Ry Fa=Fx+Fy, Fs=Fx-FyУмножение/накопление и сложение, вычитание или усреднение с фиксированной точкойRa = RH-8 + R15-12 Ra = Rll-8-R15-12 Ra = (Rll-8 + R15-12) /2Rm = R3-0 * R7-4 (SSFR) MRF = MRF + R3-0 * R7-4 (SSF) Rm = MRF + R3-0 * R7-4 (SSFR) MRF = MRF - R3-0 * R7-4 (SSF) Rm = MRF - R3-0 * R7-4 (SSFR)Умножение и операция ALU с плавающей точкойFm = F3-0 * F7-4,Fa = FH-8 + F15-12Fa = Fll-8-F15-12Fa = FLOAT Rll-8 by R15-12Ra = FIX Fl 1 - 8 by R15-12Fa = (Fll-8 + F15-12) /2Fa = ABSFH-8Fa = MAX (Fll-8, F15-12)Fa = MIN (FH-8, F15-12)Умножение и двойное сложение/вычитаниеRm = R3-0 * R7-4 (SSFR), Fm = F3-0 * F7-4,Ra = Rll-8 + R15-12, Fa = FH-8 + F15-12,Rs = Rll-8-R15-12 Fs = FH-8-F15-12Rm, Ra, Rs, Rx, Ry - любой регистр регистрового файла; операнд с фиксированной точкой Fm, Fa, Fs, Fx, Fy - любой регистр регистрового файла; операнд с плавающей точкойSSFR - операнд Х знаковый, операнд Y знаковый, дробные входные данные, результат округлен к ближайшемуSSF - операнд X знаковый, операнд Y знаковый, дробные входные данные9. Регистровый файлРегистровый файл обеспечивает интерфейс между внутренними шинами данных процессора и вычислительными устройствами. Он также служит для хранения операндов и локальных результатов. Регистровый файл состоит из 16 первичных и 16 дополнительных (вторичных) регистров. Все регистры - 40-разрядные.32-разрядные данные из вычислительного устройства всегда выравниваются влево; при считывании регистра 8 младших разрядов игнорируются, при записи - заполняются нулями.Обмен данными между памятью программы или памятью данных с регистровым файлом происходит по шине данных памяти программы (РМ) и по шине данных памяти данных (DM) соответственно. Одно обращение по шине данных РМ и по шине данных DM может происходить за один цикл. Между регистровым файлом и 40-разрядной шиной данных DM всегда передается 40-разрядное слово. Регистровый файл передает данные по 48-разрядной шине данных РМ в 40 старших разрядах, заполняя нулями младшие.Если один и тот же регистр регистрового файла определен как источник операнда и как место помещения результата или выборки данных из памяти, то считывание происходит в первую половину цикла, а запись - во вторую. Т.о., старые данные используются как операнды перед тем, как регистр обновляется новыми данными результата. Если осуществляется несколько записей в один тот же регистр регистрового файла одновременно, то запись происходит в соответствие с приоритетом операций. Реально запишутся данные операции с наивысшим приоритетом. Приоритет операций определяется источником записываемых данных. Ниже перечислены устройства в порядке уменьшения приоритета:память данных или универсальный регистр;память программы;ALU;умножитель;устройство сдвига.Один и тот же регистр в регистровом файле начинается с префикса F (в исходном коде ассемблера), когда он используется в вычислениях с плавающей точкой. И начинается с префикса R, когда используется в вычислениях с фиксированной точкой. Например, следующие команды используют одни и те же регистры:FO=F1 * F2; умножение с плавающей точкой R0=R1 * R2; умножение с фиксированной точкойПрефиксы F и R не влияют на передачу 32-разрядных (или 40-разрядных) данных; они только определяют, как ALU, умножитель, или устройство сдвига обрабатывают данные. F и R могут быть прописными и строчными; в ассемблере не учитывается регистр клавиатуры.9.1 Дополнительные регистрыДля облегчения быстрого контекстного переключения в регистровом файле имеется дополнительный набор регистров. Каждая половина регистрового файла: младшая - R0-R7 - и старшая - R8-R15 - может независимо подключать свой дополнительный набор. Активный набор определяется двумя битами в регистре MODEL Бит M0DE1 Имя Описание:7SRRFH дополнительный набор регистрового файла выбран для R15-R8 (F15-F8) 10SRRFL дополнительный набор регистрового файла выбран для R7-R0 (F7-F0). Замечание: после установки бита в регистре MODE1 дополнительный набор регистров становится доступным через один цикл. Например: BIT SET MODE1 SRRFL; /* активизация дополнительных регистров */ NOP; /* ожидание, пока активизируются */ /* дополнительные регистры */ R0=7.
Страницы: 1, 2, 3
|
|
|
© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент. |
|
|