Граница округления данных с плавающей точкой
В ADSP-2106x входные данные и результаты умножителя с плавающей точкой могут быть 32 - и 40-разрядными. Если бит RND32 установлен, то восемь младших бит каждого входного операнда обнуляются перед умножением. Результаты с плавающей точкой выводятся в 32-разрядном формате стандарта IEEE с нулями в 8 младших разрядах 40-разрядного регистра регистрового файла. Мантисса результата округляется до 23 бит (не включая скрытый бит). Если бит RND32 равен нулю, то умножитель получает 40-разрядные числа из регистрового файла и выводит результаты в 40-разрядном формате стандарта IEEE повышенной точности, с мантиссой, округленной до 31 бита (не включая скрытый бит). Флаги состояния умножителя
В конце каждой операции умножитель обновляет четыре флага состояния в регистре ASTAT. Состояния этих флагов отражают результат самой последней операции умножителя. Умножитель также обновляет четыре "залипших" флага состояния в регистре STKY. После обновления "залипший" флаг остается в этом состоянии, пока явно не будет обнулен.
Описание: Результат операции умножителя отрицательный Переполнение умножителя Потеря значащих разрядов Неправильная операция умножителя с плавающей точкой Описание Переполнение результата умножителя с фиксированной точкой Переполнение результата умножителя с плавающей точкой Потеря значащих разрядов Неправильная операция умножителя с плавающей точкой Обновление флага происходит в конце цикла, в котором генерируется состояние, а в следующем цикле он становится доступным. Если программа осуществляет прямую запись в регистры ASTAT или STKY в том же цикле, в котором умножитель выполняет операцию, то явная запись имеет преимущество.
Флаги потери значащих разрядов (MU, MUS) Потеря значащих разрядов определена для всех операций умножителя с фиксированной и плавающей точкой. Флаги устанавливаются, если результат операции умножителя меньше, чем минимальное число, представимое в этом формате. Иначе он сброшен. Для результатов с плавающей точкой MU и MUS устанавливаются, если результат после округления потерял значащие разряды (несмещенный порядок <-126). Ненормализованные операнды всегда обрабатываются как нули, поэтому они никогда не приводят к потере значащих разрядов. Для результатов с фиксированной точкой установка MU и MUS зависит от формата данных и происходит при следующих условиях: Дополнительный код: Дробное: выше 48 бит все нули или все единицы, ниже 32 бит не все нули Целое: невозможно Беззнаковый: Дробное: выше 48 бит все нули, ниже 32 бит не все нули Целое: невозможно При помещении результата с фиксированной точкой в регистр MR потерявшая значащие разряды часть результата доступна в MR0 (только для дробного результата). Отрицательный флаг умножителя (MN) Отрицательный флаг определен для всех операций умножителя. MN устанавливается, если результат операции умножителя отрицательный. Иначе сброшен. Флаг переполнения умножителя (MV) Переполнение определено для всех операций умножителя с фиксированной и плавающей точкой. Для результатов с плавающей точкой MV и MVS устанавливаются, если результат после округления переполнен (несмещенный порядок > 127). Для результатов с фиксированной точкой установка MV и MOS зависит от формата данных и происходит при следующих условиях: Дополнительный код: Дробное: выше 17 бит MR не все нули или все единицы Целое: выше 49 бит MR не все нули или все единицы Беззнаковый: Дробное: выше 16 бит MR не все нули
Целое: выше 48 бит MR не все нули При помещении результата с фиксированной точкой в регистр MR переполненная часть результата доступна в MR1 и MR2 (для целого результата) или только в MR2 (для дробного результата). Флаг ошибки умножителя (Ml) Флаг ошибки определен для умножения с плавающей точкой. Ml устанавливается, если: входной операнд NAN; входные операнды бесконечность или ноль (замечание: ненормализованные операнды обрабатываются как нули). Иначе Ml сброшен. * установлен или сброшен, в зависимости от результатов выполнения команды ** может быть установлен (но не сброшен), в зависимости от результатов выполнения команды - не изменяется Rn,Rx,Ry = R15-R0; регистры регистрового файла; обрабатываются как операнды с фиксированной точкой Fn,Fx,Fy = F15-F0; регистры регистрового файла; обрабатываются как операнды с плавающей точкой MRxF = MR2F, MR1F, MR0F; основные накопители результата операции умножителя MRxB = MR2B, MR1B, MR0B; дополнительные накопители результата операции умножителя Устройство сдвига
Устройство сдвига работает с 32-разрядными операндами с фиксированной точкой. Операции устройства сдвига: сдвиги и циклические сдвиги из крайнего левого положения в крайнее правое; операции с битами: установка, обнуление, переключение и проверка; операции с полем бит: извлечение и внесение; поддержка ADSP-2100-совместимых операций преобразования форматов фиксированная/плавающая точка (нахождение порядка, числа начальных единиц или нулей). Работа устройства сдвига
Устройство сдвига обрабатывает от одного до трех входных операндов: 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-разрядный результат.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|