В традиционных микропроцессорах используется архитектура фон Неймана, названная так в честь американского математика Джона фон Неймана (рис. 5.1, а). Эта архитектура состоит из единого блока памяти, в котором хранятся и команды, и данные, и общей шины для передачи данных и команд в ЦПУ и от него. При такой архитектуре перемножение двух чисел требует, по меньшей мере, трех циклов: двух циклов для передачи двух чисел в ЦПУ, и одного – для передачи команды. Данная архитектура приемлема в том случае, когда все действия могут выполняться последовательно. По сути говоря, в большинстве компьютеров общего назначения используется сегодня такая архитектура.
Для быстрой обработки сигналов больше подходит гарвардская архитектура (рис.5.1, б), которая получила свое название в связи с работами, проведенными в Гарвардском университете под руководством Ховарда Айкена. Данные и код программы хранятся в различных блоках памяти, и доступ к ним осуществляется через разные шины. Так как шины работают независимо, выборка команд программы и данных может осуществляться одновременно, таким образом повышается скорость по сравнению со случаем использования одной шины в архитектуре фон Неймана. При выполнении умножения с последующим суммированием в КИХ-фильтре за один цикл происходит выборка команды из памяти программ и коэффициента из памяти данных. Второй цикл требуется для выбора слова данных из памяти данных.
Кроме того, компанией Analog Devices Inc используется модифицированная гарвардская архитектура (рис.5.1, в), где и команды, и данные могут храниться в памяти программ. Например, в случае с цифровым фильтром коэффициенты могут храниться в памяти программы, а значения данных – в памяти данных. Поэтому коэффициент и значение данных могут выбираться в одном машинном цикле. Помимо выборки коэффициента из памяти программ и значения отсчета из памяти данных, естественно, должна быть выбрана команда из памяти программы. Цифровые сигнальные процессоры компании Analog Devices решают эту задачу двумя способами:
1) к памяти программ обращаются дважды за время цикла. Этот метод используют процессоры семейства ADSP-218x;
2) используется кэш-память программ.
В алгоритмах, требующих одновременной выборки двух операндов, программист один массив помещает в память программ, а другой – в память данных. Когда процессор в первый раз выполняет команду, требующую двойного обращения к памяти программ, используется один дополнительный машинный цикл, так как необходимо выбрать и команду, и коэффициент с помощью шины данных памяти программ. Когда
возникает такая ситуация, процессор помещает команду в кэш, и в следующий раз, когда требуется эта команда, секвенсер программ извлекает ее из кэш-памяти, в то время как коэффициент поступает по шине данных памяти программ. Кэш программ используется как в семействе процессоров ADSP-219x компании Analog Devices, так и в процессорах семейства SHARC.
Архитектура DSP семейства ADSP-21xx (рис. 5.2) оптимизирована для цифровой обработки сигнала и других высокоскоростных приложений. Это семейство DSP включает ядро семейства ADSP-2100 (три вычислительных блока, адресные генераторы, устройство управления выполнением команд), два синхронных последовательных порта, программируемый таймер, развитую систему обработки прерываний, встроенную статическую память программ и данных. Существуют также версии с встроенным ПЗУ.
Гибкая архитектура процессоров семейства ADSP-21xx и соответствующий набор команд позволяют достичь высочайшей степени параллелизма при выполнении операций. За один цикл DSP семейства ADSP-21xx может сгенерировать адрес следующей команды программы, выбрать следующую команду, выполнить 1 или 2 перемещения данных, обновить 1 или 2 указателя адреса, выполнить вычислительную операцию, передать или принять данные от двух последовательных портов и обновить регистр таймера.