Реферат: Операции над данными в СП с плавающей точкой
с плавающей точкой: сложение, вычитание, сложение/вычитание, усреднение;
с фиксированной точкой: сложение, вычитание, сложение/вычитание, усреднение;
манипуляция с данными с плавающей точкой: двоичный логарифм, масштабирование, мантисса;
с фиксированной точкой: сложение с переносом, вычитание с заемом, инкремент, декремент;
логические AND, OR, XOR, NOT;
функции: модуль, сброс, минимум, максимум, усечение, сравнение;
преобразования формата;
примитивы деления - и деления на корень квадратный г-.
Операция двойного сложения/вычитания и параллельные операции ALU и умножителя описаны ниже в разделе "Многофункциональные вычисления".
5.1 Работа ALU
На вход ALU поступают один или два входных операнда, называемые X и Y, которые могут быть содержимым любого регистра в регистровом файле. Обычно возвращается один результат; при операции сложение/вычитание - два результата, после сравнения никакие результаты не возвращаются, а обновляются только флаги. Результаты операций ALU могут возвращаться в любой регистр регистрового файла. Входные операнды пересылаются из регистрового файла в ALU в течение первой половины цикла. Результаты передаются в регистровый файл в течение второй половины цикла. Т.о., ALU может считывать и записывать один и тот же регистр регистрового файла за один цикл.
При операциях ALU с фиксированной точкой операнды X и Y обрабатываются как 32-разрядные с фиксированной точкой. Передаются 32 старших бита из регистра в регистровом файле. Результат операции с фиксированной точкой - всегда 32-разрядное значение с фиксированной точкой. Некоторые операции с плавающей точкой (LOGB, MANT и FIX) также могут возвращать результаты с фиксированной точкой. Результаты с фиксированной точкой помещаются в 32 старших бита регистра в регистровом файле, а восемь младших бит обнуляются. Формат операндов и результатов с фиксированной точкой зависит от операции. В большинстве арифметических операций нет необходимости различать целые и дробные форматы. Входные операнды с фиксированной точкой в операциях, таких как масштабирование числа с плавающей точкой, обрабатываются как целые. В определенных состояниях, таких как переполнение, арифметические операнды и результаты с фиксированной точкой обрабатываются как числа в дополнительном коде.
5.2 Режимы работы ALU
Режим работы ALU определяется тремя битами в регистре MODEL Бит насыщения ALU влияет на операции ALU, которые возвращают результаты с фиксированной точкой; бит режима округления и бит границы округления влияют на операции с плавающей точкой в ALU и умножителе.
Бит M0DE1 Имя Функция
13 ALUSAT1= разрешено насыщение ALU (полномасштабная
величина с фиксированной точкой)
О=запрещено насыщение ALU
TRUNC 1=усечение; О=округление к ближайшему
RND 321=округление до 32 бит; О=округление до 40 бит
5.2.1 Режим насыщения
В режиме насыщения при положительном переполнении в операциях с фиксированной точкой возвращается максимальное положительное число с фиксированной точкой (0x7FFF FFFF), при отрицательном переполнении возвращается максимальное отрицательное число (0x8000 0000). Если бит ALUSAT установлен, то результаты с фиксированной точкой при переполнении насыщаются. Если бит ALUSAT обнулен, то результаты с фиксированной точкой при переполнении не насыщаются, 32 старших бита результата возвращаются без изменений. Флаг переполнения ALU отражает результат ALU до насыщения.
5.2.2 Режимы округления данных с плавающей точкой
ALU поддерживает два режима округления стандарта IEEE. Если бит TRUNC установлен, то ALU округляет результат к нулю (усечение). Если бит TRUNC обнулен, то ALU округляет к ближайшему.
5.2.3 Границы округления данных с плавающей точкой
В ADSP-2106x результаты операций ALU с плавающей точкой могут быть 32 - и 40-разрядными данными с плавающей точкой. Если бит RND32 установлен, то перед выполнением операции ALU (за исключением операции RND) восемь младших разрядов каждого входного операнда обнуляются, результат с плавающей точкой выводится в 32-разрядном формате стандарта IEEE. Восемь младших разрядов результата обнуляются. Если бит RND32 обнулен, то ALU получает 40-разрядные операнды неизменными и выводит 40-разрядные результаты операции с плавающей точкой и все 40 разрядов записываются в определенный регистр регистрового файла.
При преобразовании чисел из формата с фиксированной точкой в формат с плавающей точкой граница округления всегда 40 бит, независимо от состояния бита RND32.
5.3 Флаги состояния ALU
ALU обновляет семь флагов состояния в регистре ASTAT в конце каждой операции. Состояния этих флагов отражают результат самой последней операции ALU. В конце каждой операции сравнения ALU обновляет биты накопления сравнений в ASTAT. Также ALU обновляет четыре "залипших" флага состояния в регистре STKY. После установки "залипший" флаг остается в этом состоянии, пока явно не будет обнулен.
ъ | Имя |
0 | AZ |
1 | AV |
2 | AN |
3 | АС |
4 | AS |
5 | AI |
10 | AF |
31-24 | САС |
Бит STKY | Имя |
0 | AUS |
1 | AVS |
2 | AOS |
5 | AIS |
Описание:
Нулевой результат или потеря значащих разрядов в операции с плавающей точкой Переполнение ALU Отрицательный результат ALU Перенос для результата с фиксированной точкой Знак операнда X (операции ABS, MANT) Неправильная операция ALU с плавающей точкой Последняя операция ALU была операцией с плавающей точкой С АС С Регистр накопления сравнений (Compare Accumulation register) (результат 8 последних операций сравнения)
Описание:
Потеря значащих разрядов в операции с плавающей точкой Переполнение результата операции ALU с плавающей точкой Переполнение результата операции ALU с фиксированной точкой Неправильная операция ALU с плавающей точкой
Флаг обновляется в конце того цикла, в котором генерируется состояние, и доступен в следующем цикле. Если программа осуществляет прямую запись в регистры ASTAT или STKY в том же цикле, в котором ALU выполняет операцию, то явная запись имеет преимущество.
5.3.1 Нулевой флаг ALU (AZ)
Нулевой флаг определен для всех операций ALU с фиксированной и плавающей точкой. AZ устанавливается, когда результат операции ALU равняется нулю. Установка AZ также сигнализирует о потере значащих разрядов результата с плавающей точкой (см. ниже). В противном случае он сброшен.