Страница: 10/11
Пример типичной операции округления:
Пример 1 | MR2 | MR1 | MR0 |
Неокругленные данные | xxxxxxxx | xxxxxxxx00100110 | 1xxxxxxxxxxxxxxx |
Бит 15=1
Добавим 1 к 15-му биту и учтем перенос | 1 ( 0х8000) | ||
Округленное значение | xxxxxxxx | xxxxxxxx00100111 | 0xxxxxxxxxxxxxxx |
Компенсация становится видимой, если MRO=0x8000.
Пример 2 | MR2 | MR1 | MR0 |
Неокругленные данные | xxxxxxxx | xxxxxxxx00100110 | 100000000000000 |
Бит 15=1
Добавим 1 к 15-му биту и учтем перенос | 1 ( 0х8000) | ||
Так как бит 16 =1, присвоим ему 0 | |||
Округленное значение | xxxxxxxx | xxxxxxxx00100111 | 000000000000000 |
Сравнительный анализ выполнения арифметических команд в различных типах процессоров
Закончив рассмотрение АЛУ DSP, попробуем сравнить его производительность по арифметическим операциям, например, с i486DX - достаточно мощным универсальным процессором. Начнем с того, что в АЛУ цифрового сигнального процессора любая инструкция исполняется за один цикл, вместо нескольких циклов во втором процессоре. Работает такой процессор на частоте до 33.3 Мгц ( при этом i486DX работает на частоте 50 Мгц, а улучшенные версии на частотах до 133 Мгц ). Операции с плавающей точкой имеют 40 разрядные операнды, вместо 80 разрядных в FPU i486DX. Остальные параметры ( конвейеризация, архитектурные решения ) практически идентичны. Для примера ниже дана таблица, отображающая время исполнения программы “быстрого преобразования Фурье” на 1024 точки для процессоров i486DX2-66 и ADSP-21xx
Операция | Время выполнения | ||
i486DX2-66 | ADSP-21xx | ||
БПФ на 1024 точки | 20 ms | 2.23 ms |
Получаются довольно странные результаты. У более мощного процессора время выполнения в 10 раз больше, чем у менее мощного. Из-за чего так происходит ? Прежде всего надо отметить, что аппаратно реализованное умножение в DSP дает основной выигрыш в скорости. Во-вторых, DSP менее универсален, по сравнению с i486, поэтому арифметические операции у него оптимизированы для работы в реальном времени, то есть скорость их выше. Конечно скорость достаточно сильно зависит от алгоритмов умножения, деления и сложения. Ведь какой бы ни была скорость процессора плохо оптимизированный алгоритм будет приводит к лишним схемным решениям, потере времени на выполнение лишних микрокоманд и, как следствие, ухудшение параметров процессора. В некоторых процессорах ( уже практически отсутствующих на рынке, например i8080 или его преемник Zilog Z80 ) команд умножения и деления нет. В этом случае данные арифметические операции реализовывались программно, через сложение и сдвиги. Соответственно производительность при вычислениях падала в несколько раз.
Реферат опубликован: 15/12/2009