Цифровая обработка сигналов DSP (digital signal processor)
Особенности DSP
DSP представляют собой специализированные процессоры для приложений, требующих интенсивных вычислений.
Если ближе рассмотреть, к примеру, процесс операции умножения двух чисел с сохранением результата в традиционных микропроцессорах, то можно увидеть как расходуется машинное время: сначала происходит выборка команды (адрес команды выставляется на шину адреса), затем первого операнда (адрес операнда выставляется на шину адреса), затем операнд переносится в аккумулятор, далее происходит выборка второго операнда и т.д. Ускорение этого процесса в процессоре общего назначения невозможна из-за наличия единственной шины адреса и единственной шины данных, а также единственного банка данных. Ввиду этого все операции по извлечению операндов из памяти, выборки команды и сохранения операнда производится последовательно с использованием одной и той же шины данных и шины адреса. Кроме того, если рассмотреть операцию циклического суммирования арифметического ряда, то можно видеть что здесь непроизводительные затраты времени связаны с запоминанием адреса первой команды цикла, с проверкой условия цикла (счетчика) и возвратом к первой команде. Также большие непроизводительные затраты существуют при операциях перехода к подпрограмме и возврата (запись и восстановление значений регистров из стека) и при многих других операциях. Если при этом учесть огромное количество математических операций при выполнении цифровой обработки сигналов, то станет ясно, что неизбежны весьма чувствительные потери в точности вычисления при округлениях, которые не могут не сказаться на общем результате. Это происходит по причине одинаковой разрядности всех регистров процессоров общего назначения.
При цифровой обработке сигналов все эти затраты недопустимы. С целью преодоления этого недостатка процессоров общего назначения и были разработаны процессоры цифровых сигналов (DSP - Digital Signal Processor).
Трехшинная Гарвардская архитектура
Ее особенность состоит прежде всего в том, что в отличии от привычных нам двух шин: шины адреса и шины данных, а также одного банка памяти, DSP имеет как минимум 6-7 различных шин и 2-3 банка памяти. Эта особенность имеет своей целью максимально ускорить выполнение операции умножения с сохранением результата, которая, несомненно, является наиболее употребляемой и ресурсоемкой при цифровой обработке сигналов. Архитектура DSP позволяет за один машинный цикл произвести:
- выборку команды посредством шины адреса программ и шины данных программ;
- выборку двух операндов для операции умножения посредством двух шин адреса данных;
- занесение операндов в аккумуляторы посредством двух шин данных;
- операцию умножения;
- сохранить результат в аккумуляторе.
Таким образом, трехшинная Гарвардская архитектура позволяет выполнить практически любую операцию за один машинный цикл.
B качестве примера эффективности использования DSP при реализации алгоритмов цифровой обработки сигналов можно привести следующий факт: время выполнения комплексного 1024-точечного преобразования Фурье составляет 20 мс для 486DX2 66 МГц (32-разрядный) и 3.23 mc для 24-разрядного 33 МГц DSP56001 фирмы Motorola или 3.1 мс для 32- разрядного 33 МГц DSP TMS320C30 с плавающей арифметикой фирмы Texas Instruments.
Однако, как уже упоминалось, процессоры цифровой обработки сигнала имеют отличием не только высокую производительность, измеряемую в быстроте выполнения операций умножения/аккумуляции (MIPS - миллионы команд в секунду), но и такие характеристики, как последовательность выполнения программ, арифметических операций и адресации памяти, позволяющие сократить до минимума непроизводительные затраты времени. В целом DSP отличается от других типов микропроцессоров и микроконтроллеров по следующим пяти основным признакам:
DSP - процессор должен осуществлять выполнение за один цикл операций умножения, умножения с аккумуляцией, циклический сдвиг, а также стандартные арифметические и логические операции.
- Расширенный динамический объем для операции умножения/аккумуляции.
Операция вычисления суммы некой последовательности значений является фундаментальной для алгоритмов, реализуемых на DSP. Защита от переполнения необходима для избежания потери данных.
- Выборка двух операндов за один цикл.
Очевидно, что для большинства операций, выполняемых DSP, необходимы два операнда. Таким образом, для достижения максимального быстродействия процессор должен быть способен производить одновременную выборку двух операндов, что требует также наличия гибкой системы адресации.
- Наличие аппаратно реализованных циклических буферов(встроенных и внешних).
Широкий класс алгоритмов, реализуемых на DSP требует использования циклических буферов. Аппаратная поддержка циклического возврата указателя адреса или модульная адресация уменьшает непроизводительные затраты процессорного времени и упрощает реализацию алгоритмов.
- Организация циклов и ветвлений без потери в производительности.
Алгоритмы DSP включают очень много повторяющихся операций, которые могут быть реализованы в виде циклов. Возможность организации последовательности выполнения программы кодов в цикле без потери производительности отличают DSP от других процессоров. Аналогично, потеря времени при выполнении операции ветвления по условию также недопустима при цифровой обработке сигналов.
Не следует, однако, думать, что DSP могут полностью заменить процессоры общего назначения. Как правило, процессоры цифровых сигналов имеют упрощенную систему команд, не позволяющие выполнить операции, не связанные с математическими вычислениями с такой же эффективностью, как и процессоры общего назначения. Попытка же сочетания в одном процессоре мощность при математических вычислениях и гибкость при операциях другого рода приводит к неоправданному повышению себестоимости. Поэтому DSP используют чаще в виде сопроцессоров (математических, графических, акселераторов и т.д.) при главном процессоре либо в качестве самостоятельного процессора, если этого достаточно.
DSP фирмы Motorola
Фирмой Motorola в настоящее время выпускается три семейства Цифровых Процессоров Сигналов. Это серии DSP56100, DSP56000 и DSP96000. Все микросхемы приведенных серий основываются на архитектуре DSP56000 и различаются разрядностью (16, 24, 32 бит соответственно) и некоторыми встроенными устройствами. Таким образом достигается совместимость микросхем всех трех семейств снизу вверх. Все DSP фирмы Motorola построены по идентичной трехшинной Гарвардской архитектуре, описанной ранее, с большим количеством составных частей, портов, контроллеров, банков памяти и шин, работающих параллельно с целью достижения максимального быстродействия.
Передача данных происходит по двунаправленным шинам данных (одной для DSP56100 (XDB) и двум для DSP56000 и DSP96000 (XDB и YDB)), шине данных программ (PDB) и общей шине данных (GDB). Кроме того, у DSP96000 присутствует отдельная шина прямого доступа к памяти (DDB). Передача данных между шинами происходит через внутреннее устройство управления шинами.
Адресация осуществляется по двум однонаправленным шинам: шине адреса данных и шине адреса программ.
Блок манипуляции битами позволяет гибко управлять состоянием любого бита в регистрах и ячейках памяти. Наличие такой возможности является преимуществом по отношению к DSP других пользователей.
Арифметико-логическое устройство (АЛУ) выполняет все арифметические и логические операции и имеет в своем составе входные регистры, аккумуляторы, регистры расширения аккумуляторов (8-битные, допускающие 256 переполнений без потери точности), параллельный одноцикловой блок умножения с сохранением (МАС), а так же сдвиговые регистры.Гибкая система команд позволяет выполнить АЛУ за один цикл команды умножения, умножения с сохранением результата, суммирования, вычитания, сдвига и логические операции. Характерной особенностью DSP фирмы Motorola является возможность сдваивания входных регистров АЛУ и увеличения таким образом разрядности обрабатываемых чисел. Еще одной важной особенностью является наличие операции деления, зачастую отсутствующей у других производителей и заменяемой операцией умножения на обратное число, что приводит к потере точности.
Блок формирования адреса выполняет все вычисления, связанные с определением адресов в памяти. Этот блок работает независимо от остальных блоков процессора. За один цикл могут производиться две операции считывания из памяти или одна операция записи. DSP фирмы Motorola обладают чрезвычайно мощной мощной системой адресации, позволяющей производить практически любые манипуляции с данными за одну команду. Это важная особенность выгодно отличает DSP, выпускаемые фирмой, от аналогов. Адресация по модулю удобна для организации кольцевых буферов без проверки выхода за границу, что позволяет избегать непроизводительных затрат времени. Возможность адресации с инверсией значащих битов облегчает реализацию БПФ.
Блок управления выполнением программ содержит 6 регистров, среди которых Указатель адреса цикла и Счетчика циклов, позволяющие организовать аппаратную поддержку организации циклов в DSP фирмы Motorola, при которой не тратятся дополнительные машинные циклы на проверку условия выхода из цикла и изменения счетчика цикла. В команде организации цикла DO явно указывается количество повторений.
Системный стек представляет из себя отдельную часть из 15 слов ОЗУ, и может хранить информацию о 15 прерываниях, 7 циклах или 15 выходах в подпрограмму. Данные из стека читаются за один цикл уменьшая таким образом непроизводительные затраты времени процессора.
Главной отличительной особенностью DSP фирмы Motorola является наличие у всех микросхем внутрикристального эмулятора, позволяющие производить отладку программ без использования дополнительных аппаратных средств. Таким образом нет необходимости в покупке дорогостоящих отладочных средств. Эмулятор позволяет производить запись/считывание регистров и ячеек памяти, установку точек останова, пошаговое выполнение программ и другие действия посредством подачи команд по 4- проводной шине.
Для снижения потребления энергии в моменты, когда не производится вычисления, предусмотрены два режима с пониженным энергопотреблением : STOP и WAIT.
Для работы совместно с другими процессорами и каналами прямого доступа к памяти предусмотрен встроенный HOST-интерфейс.
Обладая всеми вышеперечисленными свойствами, необходимыми для цифровой обработки сигналов, DSP фирмы Motorola имеют чрезвычайно мощную и гибкую систему команд, позволяющую пользователю удобно и эффективно работать с процессорами.
Семейство DSP96000
Семейство DSP DSP96000 имеет 32-битную архитектуру и поддерживает операции с плавающей точкой. Микросхемы семейства предназначены для компьютерных систем Multimedia. DSP этой серии могут работать и как самостоятельные микросхемы, и через два независимых 32-битных порта могут последовательно обмениваться данными с другими процессорами.
Микросхемы семейства имеют в своем составе 6 банков памяти, 8 шин и 4 автономных вычислительных блока: АЛУ, блок управления программой, двойной блок генерации адреса и встроенный двухканальный контроллер прямого доступа к памяти.
Характеристики микросхем семейства DSP96000:
- 49.5 MIPS при 40 МГц
- 60 MFLOPS при 40 МГц, цикл 50 нс
- 32-битная организация
- 2 банка памяти данных ОЗУ 512х32 бит
- 2 банка памяти данных ПЗУ 512х32 бит
- ОЗУ программ 1024х32 бит
- загрузочное ПЗУ объемом 56 байт
- адресуемая внешняя память 2х232 32-битных слов памяти данных и программ
- встроенный эмулятор
- 2 канала прямого доступа к памяти
- 2 канала обмена с внешними процессорами
- корпус с 223 выводами в корпусе PGA или QFP
DSP фирмы Texas Instruments
DSP этой фирмы представлены следующими микропроцессорами: TMS 32010, TMS 320C20, TMS 320C25, TMS 320C30, TMS 320C40, TMS 320C50.
Особенности архитектуры ТMS320C25
Архитектура TMS320C2x основана на архитектуре TMS32010 - первом члене микропроцессорного семейства DSP. Кроме того, набор его команд перекрывает набор команд микропроцессора TMS32010, что сохраняет программную совместимость снизу вверх.
Микропроцессор TMS320C2x имеет один аккумулятор и использует Гарвардскую архитектуру в которой память данных и память программ разнесены в разные адресные пространства. Это позволяет полностью перекрыть во времени вызов и выполнение команды. Система команд включает команды обмена данными между двумя областями памяти. Вне микропроцессора пространства памяти данных и программ объединены на одну и ту же шину для того, чтобы максимально увеличить диапазон адресов в обеих областях памяти и одновременно максимально уменьшить количество выводных контактов. Внутри микропроцессора пространства программ и данных выведены на разные шины, чтобы увеличить мощность процессора и скорость выполнения программ.
Повышенная гибкость конструкции системы обеспечивается расположенными на кристалле двумя большими блоками памяти RAM, один из которых может использоваться и как память программ и как память данных. Большинство команд процессора выполняются за один машинный цикл с использованием как внешней памяти программ с быстрой выборкой, так и с использованием внутренней памяти RAM. Гибкость микропроцессора TMS320C2x предусматривает также подключение медленной внешней памяти или периферийных устройств, используя сигнал READY; но в этом случае команды выполняются за несколько машинных циклов.
Организация памяти
На кристалле TMS32020 находится 544 16-разрядных слова памяти RAM, из которых 288 слова (блоки B1 и B2) всегда отведены под данные, а 256 слов (блок B0) в разных конфигурациях процессора могут использоваться либо как память данных, либо как память программ. TMS320C25 кроме того обеспечен маскируемым ПЗУ (ROM), объемом 4К слов, а TMS320E25 - памятью 4К слов с ультрафиолетовым стиранием EPROM.
TMS320C2x обеспечен тремя разделенными адресными пространствами - для памяти программ, для памяти данных и для устройств ввода/вывода, как показано на рис. 6.5. Эти пространства вне кристалла различаются при помощи сигналов -PS, -DS, -IS (для пространств программы, данных, ввода/вывода соответственно). Блоки памяти B0, B1, B2, расположенные на кристалле, охватывают в сумме 544 слова памяти с произвольным доступом (RAM). RAM блок B0 (256 слов) располагается на 4 и 5 страницах памяти данных, если он отведен под данные, или по адресам >FF00 - >FFFF, если он является частью памяти программ. Блок B1 (только для данных) располагается на 6 и 7 страницах, а блок B2 занимает старшие 32 слова 0 страницы. Отметим, что оставшуюся часть 0 страницы занимают 6 адресуемых регистров и резервная область; 1 - 3 страницы также представляют собой резервную область. Резервные области нельзя использовать для хранения информации, при чтении их содержимое не определено.
Внутренняя память программ (ROM), расположенная на кристалле процессора может быть использована в качестве младших 4К слов памяти программ. Для этого на контакт MP/*MC должен быть подан сигнал низкого уровня. Для запрещения использования внутренней области ROM на MP/*MC надо подать высокий уровень.
Внешняя память и интерфейс ввода/вывода
Микропроцессор TMS32020 поддерживает широкий диапазон интерфейсных систем. Адресное пространство данных, программ и ввода/вывода обеспечивает сопряжение с памятью и внешними устройствами, что увеличивает возможности системы. Интерфейс локальной памяти состоит из:
- 16-ти разрядной шины данных (D0-D15);
- 16-ти разрядной шины адреса (A0-A15);
- адресных пространств данных, программ и ввода/вывода выбираемых сигналами (*DS, *PS и *IS);
- различных сигналов управления системой.
Сигнал R/*W управляет направлением передачи, а сигнал *STRB управляет передачей.
Пространство ввода/вывода содержит 16 портов для вводы и 16 портов для вывода. Эти порты обеспечивают полный 16-разрядный интерфейс со внешними устройствами по шине данных. Одноразовый ввод/вывод с помощью команд IN и OUT выполняется за два командных цикла; однако использование счетчика повторений снижает время одного обращения к порту до 1-го цикла.
Использование ввода/вывода упрощается тем, что ввод/ вывод осуществляется также, как и обращение к памяти. Устройства ввода/вывода отображаются в адресном пространстве ввода/вывода, используя внешние адреса процессора и шину данных, таким же образом, как память. При адресации внутренней памяти шина данных находится в третьем состоянии, а управляющие сигналы в пассивном состоянии (высоком).
Взаимодействие c памятью и устройствами ввода/вывода на различных скоростях сопровождается сигналом READY. При связи с медленными устройствами, TMS320C2x ждет, пока устройство не завершит свою работу и просигнализирует процессору об этом через линию READY, после чего процессор продолжит работу.
Центральное арифметико-логическое устройство
Центральное арифметическо-логическое устройство (CALU) содержит 16-разрядный масштабирующий регистр сдвига, 16 x 16 параллельный умножитель, 32-разрядное арифметическо-логическое устройство (ALU), 32-разрядный аккумулятор и несколько дополнительных сдвиговых регистров, расположенных как на выходе из умножителя, так и на выходе из аккумулятора.
Любая операция ALU выполняется в следующей последовательности:
- данные захватываются из RAM на шину данных,
- данные проходят через масштабирующий сдвиговый регистр и через ALU, в котором выполняются арифметические операции,
- результат передается в аккумулятор.
Один вход в ALU всегда соединен с выходом аккумулятора, а второй может получать информацию либо из регистра произведения (PR) умножителя, либо загружаться из памяти через масштабирующий сдвиговый регистр.
Конвейерные операции
Конвейер команд состоит из последовательности операций обращения ко внешней шине, которые возникают в течении выполнения команд. Конвейер "предвыборка-декодирование-выполнение" обычно незаметен для пользователя, за исключением некоторых случаев, когда конвейер должен быть прерван (например, при ветвлении). Во время работы конвейера предвыборка, декодирование и выполнение команд независимы друг от друга. Это позволяет командам перекрываться. Так в течении одного цикла две или три команды могут быть активны, каждая на разных этапах работы. Поэтому получается двухуровневый конвейер для TMS32020 и трехуровневый для TMS320C25.
Количество уровней конвейера не всегда влияет на скорость выполнения команд. Большинство команд выполняется за одно и то же количество циклов вне зависимости от того, из какой памяти выбираются команды: внешней, внутренней RAM или внутренней ROM.
Добавочные аппаратные средства, имеющиеся на процессоре TMS320C25, позволяют расширить количество уровней конвейера до трех, что повышает производительность процессора. К этим средствам относятся счетчик предзахватов (PFC), 16-разрядный стек микровызовов (MCS), регистр команд (IR), и регистр очереди команд (QIR).
При трехуровневом конвейере PFC содержит адрес следующей команды, которая должна быть предзахвачена. Как только предзахват осуществлен, команда загружается в IR. Если же IR хранит команду, которая еще не выполнена, то предзахваченная команда помещается в QIR. После этого PFC увеличивается на 1. Как только текущая команда будет выполнена, команда из QIR будет перегружена в IR, для дальнейшего исполнения.
Счетчик команд (PC) содержит адрес команды, которая должна быть выполнена следующей, и не используется для операций захвата.
Но обычно PC используется в качестве указателя на текущую позицию в программе. Содержимое PC увеличивается после каждой выполненной команды. Когда возникает прерывание или вызов подпрограммы, содержимое PC помещается в стек, чтобы в дальнейшем можно было выполнить возврат в нужное место программы.
Циклы предзахвата, декодирования и выполнения конвейера независимы друг от друга, это позволяет перекрываться исполняемым командам во времени. В течении любого цикла три команды могут быть одновременно активны, каждая на разных стадиях завершения. |