Сравнение dsp процессоров. Многоядерный DSP TMS320C6678. Обзор архитектуры процессора. ЦСП с архитектурой VLIW

Процессоры цифровой обработки сигналов представляют собой класс специализированных микропроцессоров, предназначенных для решения задачцифровой обработки сигналов (ЦОС), к которым относятся обработка звуковых сигналов, обработка изображений, распознавание речи, распознавание образов, цифровая фильтрация, спектральный анализ и др.

Часто в литературе такие микропроцессоры называются цифровыми сигнальными процессорами (ЦСП), илиDSP(Digital Signal Processors).

Первые процессоры этого класса появились в конце 1970-х годов. Требования практики, связанные с широким развитием мобильной беспроводной связи, стационарных систем широкополосной связи, использованием цифровой обработки сигналов в бытовой аудио- и видеотехнике и устройствах компьютерной периферии, с одной стороны и колоссальный прогресс электронной промышленности с другой привели к тому, что к настоящему времени производительность ЦСП возросла до сотен миллионов операций в секунду, а цена упала более чем на 90 % и даже для самых мощных процессоров составляет в настоящее время менее $20. Низкая потребляемая мощность (менее 1 Вт на максимальной частоте работы процессора) обеспечивает их широкое использование в различных встраиваемых устройствах от бытовой электроники до бортовых систем специального назначения.

Цифровая обработка сигналов - это арифметическая обработка последовательности значений амплитуд сигнала, получаемых через равные промежутки времени. Главное, что отличает эту информацию, - она необязательно заносится в память и поэтому может оказаться недоступной в будущем. Следовательно, обрабатывать ее нужно в реальном масштабе времени (РМВ).

К основным особенностям цифровой обработки сигналов, которые во многом определяют архитектуру процессоровDSP, относятся:

    поточный характер обработки больших объемов данных в РМВ;

    обеспечение возможности интенсивного обмена с внешними устройствами.

Для эффективной реализации алгоритмов цифровой обработки сигналов необходима аппаратная поддержка базовых операций ЦОС. Поэтому рассмотрим вначале принципы цифровой обработки сигналов, оказы вающие особое влияние на архитектуру ЦСП.

Любой аналоговый сигнал можно представить в виде характеристик -либо амплитуда-время, либо частота-амплитуда. Для перехода от одной формы представления к другой используется преобразование Фурье . Операции, выполняющие это преобразование, являются базовыми вцифровой обработке сигналов .

Преобразование Фурье представляет собой в общем случае работу с некоторой непрерывной функцией. С непрерывным преобразованием Фурье удобно работать в теории, но на практике мы обычно имеем дело с дискретными данными. Для обработки звуковых и видеосигналов в компьютере они сначала преобразуются в цифровую форму и представляются в виде некоторого набора отсчетов частот и амплитуд, производимых через определенные промежутки времени (период дискретизации). Поэтому здесь стоит говорить не об интегральном, а одискретном преобразовании Фурье (ДПФ).

Пусть дана конечная последовательность чисел x 0 ,x 1 ,x 2 , ..., x N-1 (в общем случае комплексных).Дискретноеgj преобразование Фурье заключается в поиске другой последовательностиX 0 , X 1 , X 2 , ..., X N-1 , элементы которой вычисляются по формуле:

В общем случае гармоническое колебание, которое имеет вид, пред ставленный на рис. 16.1, описывается следующим выражением:

Рис. 16.1. Общий вид гармонического колебания

где- круговая частота сигнала. Данное выражение будем называть гармоникой.

Преобразуем последнее выражение к виду:

Разложим каждое комплексное число X k из выражения обратного преобразования Фурье (16.2) на мнимую и действительную составляющие, а экспоненту - по формуле Эйлера на синус и косинус действительного аргумента. Получим:

Рассмотрим теперь функцию x = f(t), представляющую собой некоторое звуковое или какое-либо иное колебание. Пусть это колебание описано графиком на временном интервале(рис. 16.2).

Для обработки этого сигнала в компьютере нужно выполнить его дискретизацию. С этой целью временной интервал делится на N-1 частей

Рис. 16.2. Дискретизация гармонической функции

и сохраняются значения функции x 0 ,x 1 ,x 2 , ..., x N-1 для N точек на границах интервалов.

В результате прямого дискретного преобразования Фурье могут быть получены N значений для X k согласно (16.1).

Если теперь применить обратное дискретное преобразование Фурье , то получится исходная последовательность{x n }. Исходная последовательность состояла из действительных чисел, а последовательность{X k }в общем случае комплексная. Если приравнять нулю ее мнимую часть, то получим:

Сопоставив эту формулу с формулами (16.4) и (16.6) для гармоники, увидим, что выражение (16.8) представляет собой сумму из N гармонических колебаний разной частоты, фазы и амплитуды. То есть физический смысл дискретного преобразования Фурье состоит в том, чтобы представить некоторый дискретный сигнал в виде суммы гармоник. Параметры каждой гармоники вычисляются прямым преобразованием Фурье, а сумма гармоник - обратным.

Теперь, например, операция "фильтр нижних частот", которая "вырезает" из сигнала все частоты выше некоторой заданной, может просто обнулить коэффициенты, соответствующие частотам, которые необходимо удалить. Затем, после обработки, выполняется обратное преобразование.

Особенности цифровой обработки сигналов рассмотрим на примере алгоритма нерекурсивной фильтрации. Структура устройства, реализую щего данный алгоритм, показана нарис. 16.3.

Рис. 16.3. Схема работы нерекурсивного фильтра

Обработка заключается в формировании выходного сигнала Y[k]по значениямN последних входных отсчетовx[k], которые поступают на вход устройства через определенный интервал времениТ. Принятые отсчеты сохраняются в ячейках циклического буфера. При приеме очередного отсчета содержимое всех ячеек буфера переписывается в соседнюю позицию, самый старый отсчет покидает буфер, а новый записывается в его младшую ячейку.

Аналитически алгоритм работы нерекурсивного фильтра записыва ется как:

где a i - коэффициенты, определяемые типом фильтра.

Отсчеты с выходов элементов буфера поступают на умножители, на вторые входы которых поступают коэффициенты a i . Результаты произведений складываются и формируют отсчет выходного сигналаY[k], после чего содержимое буфера сдвигается на 1 позицию и цикл работы фильтра повторяется. Выходной сигналY[k]должен быть вычислен до поступления следующего входного сигнала, то есть за интервал T. В этом заключается суть работы устройства в реальном масштабе времени. Интервал времениT задается частотой дискретизации, которая определяется областьюприменения фильтра. По следствию из теоремы Котельникова в дискретном сигнале период, соответствующий наивысшей представимой частоте, соответствует двум периодам дискретизации. При обработке звукового сигнала частоту дискретизации можно принять в 40 кГц. В этом случае если необходимо реализовать цифровой нерекурсивный фильтр 50-го порядка, то за время в 1/40 кГц = 25 мкс должно быть выполнено 50 умножений и 50 накоплений результатов умножения. Для обработки видеосигнала интервал времени, за который должны быть выполнены эти действия, будет на несколько порядков меньше.

Если выполнять ДПФ входной последовательности напрямую, строго по исходной формуле, то потребуется много времени. Посчитав по определению (N раз суммировать N слагаемых), получаем величину порядкаN 2 .

Тем не менее, можно обойтись существенно меньшим числом операций.

Наиболее популярным из алгоритмов ускоренного вычисления ДПФ является метод Кули-Тьюки (Cooley-Tukey), позволяющий вычислить ДПФ для числа отсчетов N = 2kза время порядкаN*log 2 N (отсюда и название -быстрое преобразование Фурье , БПФ, или в английском вариантеFFT - Fast Fourier TRansformation). Основная идея этого метода заключается в рекурсивном разбиении массива чисел на два подмассива и сведении вычисления ДПФ от целого массива к вычислению ДПФ от подмассивов в отдельности. При этом процесс разбиения исходного массива на подмассивы проводится по методу побитовой обратной сортировки (bit-reversal sortINg).

Сначала входной массив делится на две подмассива - с четными и нечетными номерами. Каждый из подмассивов перенумеровывается и снова делится на два подмассива - с четными и нечетными номерами. Эта сортировка продолжается до тех пор, пока размер каждого подмассива не достигнет 2 элементов. В результате (что можно показать математически) номер каждого исходного элемента в двоичной системе переворачивается. То есть, например, для однобайтных номеров двоичный номер 00000011 станет номером 110000000, номер 01010101 - номером 10101010.

Существуют алгоритмы БПФ для случаев, когда N является степенью произвольного простого числа (а не только двойки), а также в случае, когда число N является произведением степеней простых чисел любого числа отсчетов. Однако БПФ, реализованное по методу Кули-Тьюки для случая N = 2k, получило наиболее широкое распространение. Причина этого в том, что алгоритм, построенный по этому методу, обладает рядом очень хороших технологических свойств:

    структура алгоритма и его базовые операции не зависят от числа отсчетов (меняется только число прогонов базовой операции);

    алгоритм легко распараллеливается с использованием базовой операции и конвейеризуется, а также легко каскадируется (коэффициенты БПФ для 2N отсчетов могут быть получены преобразованием коэффициентов двух БПФ по N отсчетов, полученных "прореживанием" исходных 2N отсчетов через один);

    алгоритм прост и компактен, допускает обработку данных "на месте" и не требует дополнительной оперативной памяти.

Однокристальные микроконтроллеры и даже универсальные микропроцессоры оказываются относительно медленными при выполнении операций, характерных для ЦОС. К тому же требования к качеству преобразования аналоговых сигналов постоянно возрастают. В сигнальных микропроцессорах такие операции поддерживаются на аппаратном уровне и выполняются, соответственно, достаточно быстро. Работа в реальном масштабе времени требует от процессора также поддержки на аппаратном уровне таких действий, как обработка прерываний, программных циклов.

Все это приводит к тому, что DSP-процессоры, архитектурно включая в себя многие черты как универсальных микропроцессоров, особенно сRISC-архитектурой , так иоднокристальных микроконтроллеров , в то же время значительно отличаются от них. Универсальный микропроцессор помимо чисто вычислительных операций выполняет функцию объединяющего звена всей микропроцессорной системы, в частности компьютера.

Он должен управлять работой различных компонентов аппаратного обеспечения, таких как дисководы, графические дисплеи, сетевой интерфейс, с тем чтобы обеспечить их согласованную работу. Это приводит к достаточно сложной архитектуре, поскольку она должна поддерживать наряду с целочисленной арифметикой и операциями с плавающей запятой такие базовые функции, как защита памяти, мультипрограммирование, обработка векторной графики и т. п. В итоге типичный универсальный микропроцессор с CISC-, а зачастую и RISC-архитектурой имеет систему из несколько сотен команд, которые обеспечивают выполнение всех этих функций, и соответствующую аппаратную поддержку. Это ведет к необходимости иметь в составе такого МП десятки миллионов транзисторов.

В то же время DSP-процессор является узкоспециализированным устройством. Его единственная задача - быстро обрабатывать поток цифровых сигналов. Он состоит главным образом из высокоскоростных аппаратных схем, выполняющих арифметические функции и манипулирующих битами, оптимизированных таким образом, чтобы быстро обрабатывать большие объемы данных. В силу этого набор команд уDSPкуда меньше, чем у универсального микропроцессора: их число обычно не превышает 80. Это значит, что дляDSPтребуется облегченный декодер команд и гораздо меньшее число исполнительных устройств. Кроме того, все исполнительные устройства в конечном итоге должны поддерживатьвысокопроизводительные арифметические операции. Таким образом, типичныйDSP-процессор состоит не более чем из нескольких сот тысяч (ане десятков миллионов, как в современных CISC-МП) транзисторов. В силу этого такие МП потребляют меньше энергии, что позволяет использовать их в продуктах, работающих от батарей. Крайне упрощается их производство, поэтому они находят себе применение в недорогих устройствах. Сочетание низкого энергопотребления и невысокой стоимости позволяет использовать их не только в высокой сфере телекоммуникаций, но и в сотовых телефонах и роботах-игрушках.

Отметим основные особенности архитектуры процессоров цифровой обработки сигналов :

    Гарвардская архитектура , основу которой составляет физическое и логическое разделение памяти команд и памяти данных. Ключевые команды DSP-процессора являются многооперандными, и ускорение их работы требует одновременного чтения нескольких ячеек памяти. Соответственно на кристалле имеются раздельные шины адреса и данных (в некоторых типах процессоров - несколько шин адреса и данных). Это позволяет совмещать во времени выборку операндов и исполнение команд. Использование модифицированной гарвардской архитектуры предполагает, что операнды могут храниться не только в памяти данных, но и в памяти команд вместе с программами. Например, в случае реализации цифровых фильтров коэффициенты могут храниться в памяти программ, а значения данных - в памяти данных. Поэтому коэффициент и данные могут выбираться в одном машинном цикле. Для обеспечения выборки команды в том же машинном цикле используется либо кэш-память программ, либо двукратное обращение к памяти программ за время машинного цикла.

    Для сокращения времени выполнения одной из основных операций цифровой обработки сигнала - умножения - применяется аппаратный умножитель. В процессорах общего назначения эта операция реализуется за несколько тактов сдвига и сложения и занимает много времени, а в DSP-процессорах благодаря специализированному умножителю нужен всего один цикл. Встроенная схема аппаратного умножения позволяет выполнить за 1 такт основную операцию ЦОС - умножение с накоплением (MultIPly-Accumulate - MAC) для 16- и/или 32-разрядных операндов.

    Аппаратная поддержка циклических буферов. Например, для фильтра, представленного на рис. 16.3, при каждом вычислении отсчета выходного сигнала используется новый отсчет входного сигнала, который сохраняется в памяти на месте самого старого. Для такого циркулирующего буфера может использоваться фиксированная область ОЗУ. При этом во время вычислений генерируются лишь последовательные значения адресов ОЗУ вне зависимости от того, какая операция - запись или чтение - выполняется в настоящий момент. Аппаратная реализация циклических буферов позволяет установить параметры буфера (адрес начала, длина) в программе вне тела цикла фильтрации, что позволяет сократить время выполнения циклического участка программы.

    Сокращение длительности командного такта. Это во многом обеспечивается приемами, характерными для RISC-процессоров. Главными из них являются размещение операндов большинства команд в регистрах, а также конвейеризация на уровне команд и микрокоманд. Конвейер имеет от 2 до 10 ступеней, что позволяет на различных стадиях выполнения одновременно обрабатывать до 10 команд. При этом используется генерация адресов регистров параллельно с выполнением арифметических операций, а также многопортовый доступ к памяти. Сюда же можно отнести и такой прием, характерный для универсальных микропроцессоров с EPIC-архитектурой , как применение команд со сверхбольшой длиной слова (VLIW), генерируемых на стадии компиляции программы. Этому же служит и рассмотренная выше гарвардская архитектура процессора, характерная для однокристальных микроконтроллеров.

    Наличие на кристалле процессора внутренней памяти, что роднит ЦСП с однокристальными МК. Встроенная в процессор память обычно имеет значительно большее быстродействие, чем внешняя. Наличие встроенной памяти позволяет значительно упростить систему в целом, уменьшить ее размеры, энергопотребление и стоимость. Емкость внутренней памяти является результатом определенного компромисса. Ее увеличение ведет к удорожанию процессора и увеличивает энергопотребление, а ограниченная емкость памяти программ не позволяет хранить сложные алгоритмы. Большинство DSP-процессоров с фиксированной точкой имеют малую емкость внутренней памяти, обычно от 4 до 256 Кбайт, и невысокую разрядность внешних шин данных, связывающих процессор с внешней памятью. В то же время ЦСП с плавающей точкой обычно предполагают работу с большими массивами данных и сложными алгоритмами и имеют либо встроенную память большой емкости, либо большую разрядность адресных шин для подключения внешней памяти (а иногда и то, и другое).

    Широкие возможности по аппаратному взаимодействию с внешними устройствами, включающие:

    большое разнообразие интерфейсов, в том числе контроллеры локальной промышленной сети CAN, встроенные коммуникационные (SCI) и периферийные (SPI) интерфейсы, I2C, UART;

    несколько входов для аналоговых сигналов и, соответственно, встроенный АЦП;

    выходные каналы широтно-импульсной модуляции (ШИМ);

    развитую систему внешних прерываний;

    контроллеры прямого доступа в память.

В некоторых DSP-семействах предусмотрены специальные аппаратные средства, облегчающие создание мультипроцессорных систем с параллельной обработкой данных для наращивания производительности.

DSP-процессоры широко используются в мобильных устройствах, где потребляемая мощность является основной характеристикой. Для снижения энергопотребления в сигнальных процессорах применяется множество методов, в том числе уменьшение напряжения питания и введение функций управления потреблением, например, динамическое изменение тактовой частоты, переключение в спящий или дежурный режим либо отключение не используемой в данный момент периферии. Следует отметить, что эти меры оказывают значительное воздействие на скорость работы процессора и при некорректном использовании могут привести к неработоспособности проектируемого устройства (в качестве примера можно упомянуть некоторые сотовые телефоны, которые в результате ошибок в программах управления энергопотреблением иногда переставали включаться) или к ухудшению его эксплуатационных характеристик (например, значительному времени восстановления работоспособности при выходе из спящего режима).

Система команд сигнальных процессоров имеет многие черты систем команд универсальных микропроцессоров (особенно с RISC-архитектурой) и однокристальных микроконтроллеров. Она включает в себя основные арифметические и логические операции и команды переходов, но в меньшем, чем в универсальных МП, количестве. Число режимов адресации операндов также относительно невелико. Команда имеет простой, четко заданный формат. Длина команды составляет одно, реже два 16разрядных слова. Однако наряду с использованием сокращенного набора команд, в DSP-процессорах применяются и такие характерные для MMX-обработки аппаратно поддерживаемые инструкции, как команды поиска минимума и максимума, получения абсолютного значения, сложения с насыщением, при котором в случае переполнения при сложении двух чисел результату присваивается максимально возможное в данной разрядной сетке значение. Это ведет к уменьшению количества конфликтов в конвейере и повышает эффективность работы процессора.

С другой стороны, ЦСП содержат ряд команд, наличие которых обусловлено спецификой их применения и которые вследствие этого редко присутствуют в микропроцессорах других типов. Прежде всего это, конечно, команда умножения с накоплением суммы MAC, лежащая в основе ЦОС: А = В*С+А. В системах команд некоторых сигнальных процессоров можно при программировании указать число выполнений этой команды в цикле и правила изменения индексов для адресации операндов В и С. При этом в отличие от команд повторения обычных процессоров сигнальный процессор может аппаратно поддерживать проверку условия завершения цикла. Сюда же можно отнести и команды сдвига (перезаписи) в соседнюю ячейку ОЗУ данных, поддерживающие работу циклического буфера для подготовки умножения в следующем такте.

Для эффективной реализации алгоритмов БПФ в систему команд некоторых DSP-процессоров включены возможности адресации с реверсированием бит адреса.

Программирование микропроцессоров этого класса также имеет свои особенности. Значительное удобство для разработчика, обычно связываемое с использованием языков высокого уровня, в большинстве случаев оборачивается получением менее компактного и быстрого кода. Так как особенности ЦОС предполагают работу в реальном времени, это приводит к необходимости использования для решения тех же задач более мощных и дорогих DSP. Такая ситуация особенно критична для крупносерийной продукции, где разница в стоимости более производительного DSP или дополнительного процессора играет важную роль. В то же время в современных условиях скорость разработки (и, следовательно, выхода нового изделия на рынок) может принести больше выгод, чем затраты времени на оптимизацию кода при написании программы на ассемблере.

Компромиссным подходом здесь служит использование ассемблера для написания наиболее критичных с точки зрения время- и ресурсоемкости участков программы, в то время как основная часть программы пишется на языке высокого уровня, как правило, Си или Си++.

Данная статья открывает серию публикаций, посвященных многоядерным цифровым сигнальным процессорам TMS320C6678. В статье дается общее представление об архитектуре процессора. Статья отражает лекционно-практический материал, предлагаемый слушателям в рамках курсов повышения квалификации по программе «Многоядерные процессоры цифровой обработки сигналов C66x фирмы Texas Instruments», проводимых в Рязанском государственном радиотехническом университете.

Цифровые сигнальные процессоры TMS320C66xх строятся по архитектуре KeyStone и представляют собой высокопроизводительные многоядерные сигнальные процессоры, работающие как с фиксированной, так и с плавающей точкой. Архитектура KeyStone – это разработанный фирмой Texas Instruments принцип изготовления многоядерных систем на кристалле, позволяющий организовывать эффективную совместную работу большого числа ядер DSP- и RISC-типов, акселераторов и устройств периферии с обеспечением достаточной пропускной способности внутренних и внешних каналов пересылки данных, основой чего являются аппаратные компоненты: Multicore Navigator (контроллер обмена данными по внутренним интерфейсам), TeraNet (внутренняя шина пересылки данных), Multicore Shared Memory Controller (контроллер доступа к общей памяти) и HyperLink (интерфейс с внешними устройствами на внутрикристальной скорости).

Архитектура процессора TMS320C6678 , наиболее высокопроизводительного процессора в семействе TMS320C66xх, изображена на Рисунке 1. Архитектура может быть разбита на следующие основные компоненты:

  • набор операционных ядер (CorePack);
  • подсистема работы с общей внутренней и внешней памятью (Memory Subsystem);
  • периферийные устройства;
  • сетевой сопроцессор (Network Coprocessor);
  • контроллер внутренних пересылок (Multicore Navigator);
  • служебные аппаратные модули и внутренняя шина TeraNet.

Рисунок 1. Общая архитектура процессора TMS320C6678

Процессор TMS320C6678 работает на тактовой частоте 1.25 ГГц. В основе функционирования процессора лежит набор операционных ядер С66х CorePack, количество и состав которых зависят от конкретной модели процессора. ЦСП TMS320C6678 включает в свой состав 8 ядер DSP-типа. Ядро является базовым вычислительным элементом и включает в свой состав вычислительные блоки, наборы регистров, программный автомат, память программ и данных. Память, входящая в состав ядра, называется локальной.

Кроме локальной памяти, есть память общая для всех ядер – общая память многоядерного процессора (Multicore Shared Memory – MSM). Доступ к общей памяти осуществляется через подсистему управления памятью (Memory Subsystem), которая также включает интерфейс внешней памяти EMIF для обмена данными между процессором и внешними микросхемами памяти.

Сетевой сопроцессор повышает эффективность работы процессора в составе различного рода телекоммуникационных устройств, реализуя аппаратно типовые для данной сферы задачи обработки данных. В основе работы сопроцессора лежат акселератор пакетной передачи данных (Packet Accelerator) и акселератор защиты информации (Security Accelerator). В спецификации на процессор перечислен набор протоколов и стандартов, поддерживаемых данными акселераторами.

Периферийные устройства включают:

  • Serial RapidIO (SRIO) версии 2.1 – обеспечивает скорость передачи данных до 5 GBaud на линию при числе линий (каналов) – до 4;
  • PCI Express (PCIe) версии Gen2 – обеспечивает скорость передачи данных до 5 GBaud на линию при числе линий (каналов) – до 2;
  • HyperLink – интерфейс внутренней шины, позволяющий коммутировать процессоры, построенные по архитектуре KeyStone, напрямую друг с другом и осуществлять обмен на внутрикристальной скорости; скорость передачи данных – до 50 Gbaud;
  • Gigabit Ethernet (GbE) обеспечивает скорости передачи: 10/100/1000 Mbps и поддерживается аппаратным акселератором сетевых коммуникаций (сетевым сопроцессором);
  • EMIF DDR3 – интерфейс внешней памяти типа DDR3; имеет разрядность шины 64 бита, обеспечивающую адресуемое пространство памяти до 8 Гбайт;
  • EMIF – интерфейс внешней памяти общего назначения; имеет разрядность шины 16 бит и может использоваться для подключения 256MB NAND Flash или 16MB NOR Flash;
  • TSIP (Telecom Serial Ports) – телекоммуникационный последовательный порт; обеспечивает скорости передачи до 8 Mбит/с на одну линию при числе линий – до 8;
  • UART – универсальный асинхронный последовательный порт;
  • I2C – шина внутренней связи;
  • GPIO – ввод-вывод общего назначения – 16 выводов;
  • SPI – универсальный последовательной интерфейс;
  • Таймеры (Timers) – используются для генерации периодических событий.
Служебные аппаратные модули включают в себя:
  • модуль отладки и трассировки (Debug and Trace) – позволяет получать отладочным инструментальным средствам доступ к внутренним ресурсам работающего процессора;
  • загрузочное ПЗУ (boot ROM) – хранит программу начальной загрузки;
  • аппаратный семафор (semaphore) – служит для аппаратной поддержки организации совместного доступа параллельных процессов к общим ресурсам процессора;
  • модуль управления питанием – реализует динамическое управление режимами питания компонентов процессора с целью минимизации энергозатрат в моменты, когда процессор работает не в полную мощь;
  • схема ФАПЧ – формирует внутренние тактовые частоты процессора из внешнего опорного тактирующего сигнала;
  • контроллер прямого доступа в память (EDMA) – управляет процессом пересылки данных, разгружая операционные ядра ЦСП и являясь альтернативой Multicore Navigator.
Контроллер внутренних пересылок (Multicore Navigator) представляет собой мощный и эффективный аппаратный модуль, отвечающий за арбитраж передачи данных между различными компонентами процессора. Многоядерные системы на кристалле TMS320C66xx являются весьма сложными устройствами и, чтобы организовать обмен информацией между всеми компонентами такого устройства, необходим специальный аппаратный блок. Multicore Navigator позволяет ядрам, периферийным устройствам, хост-устройствам не брать на себя функции управления обменом данными. Когда какому-либо компоненту процессора необходимо переслать массив данных на другой компонент, он просто указывает контроллеру, что и куда нужно передать. Все функции по самой пересылке и синхронизации отправителя и получателя берет на себя Multicore Navigator.

Основой функционирования многоядерного процессора TMS320C66xх с позиции высокоскоростного обмена данными между всеми многочисленными компонентами процессора, а также внешними модулями, служит внутренняя шина TeraNet.

В следующей статье будет подробно рассмотрена архитектура операционного ядра C66x.

1. Multicore Programming Guide / SPRAB27B - August 2012;
2. TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor Data Manual / SPRS691C - February 2012.

В статье рассмотрены основные параметры цифровых сигнальных процессоров (DSP) и их влияние на выбор подходящей микросхемы, а также описано текущее состояние рынка DSP.

Выбирая обувь, мы хотим, чтобы она была модной, удобной и высокого качества, поэтому мы отдаем предпочтение известным маркам, тем фирмам, которые уже хорошо известны и занимают на рынке далеко не последние места. Теперь нужно определиться: для чего нам нужна эта обувь? Если для утренней пробежки, то лучше все-таки купить кроссовки, а для корпоративного вечера - туфли. А что обувать в горах? В этом случае нужна специальная крепкая обувь с твердой подошвой - вибрамы. А чем хуже DSP? Выбирая цифровой сигнальный процессор, не плохо было бы представлять существующий рынок DSP, знать основных производителей и направления развития создаваемых ими процессоров.

DSP-процессоры предназначены для осуществления цифровой обработки сигнала - математических манипуляций над оцифрованными сигналами. Они широко применяются в беспроводных системах, аудио- и видеообработке, системах управления. С ростом числа приложений, использующих DSP, и сложности алгоритмов обработки увеличивается и требования к ним в плане повышения быстродействия и оснащенности интерфейсными и другими специализированными узлами. К настоящему времени появилось множество типов DSP, как универсальных, так и ориентированных на достаточно узкий круг задач.

Естественно, ни один из процессоров не может подойти для всех приложений. Поэтому первая задача разработчика - выбор процессора, наиболее подходящего по производительности, цене, наличию определенной периферии, потреблению мощности, простоте использования и другим критериям.

Например, для таких портативных устройств, как мобильные телефоны, портативные цифровые плееры, стоимость, степень интеграции и потребляемая мощность являются первостепенными, а максимальная производительность зачастую не нужна (т.к. обычно влечет за собой значительное повышение потребляемой мощности, не давая преимуществ при обработке относительно низкоскоростных аудиоданных).

В то же время для гидроакустических или радиолокационных систем определяющими параметрами являются скорость работы, наличие высокоскоростных интерфейсов и удобная система разработки, а стоимость является второстепенным критерием. Кроме того, во многих случаях имеет смысл учитывать и место на рынке, занимаемое поставщиком процессора, т.к. далеко не все производители могут предоставить в ваше распоряжение спектр процессоров, покрывающих все ваши потребности. Сложившееся к настоящему времени распределение рынка между ведущими поставщиками (см. табл. 1) показывает, что 4 компании, стоящие в начале списка, поставляют более 80% всех используемых в мире DSP. Именно эти компании наиболее известны и на российском рынке, и их продукция часто упоминается.

Таблица 1. Основные производители DSP и принадлежащие им доли рынка

Компании-лидеры рынка Company Name Доля рынка DSP
1 Texas Instruments 54,3%
2 Freescale Semiconductor 14,1%
3 Analog Devices 8,0%
4 Philips Semiconductors 7,5%
5 Agere Systems 7,3%
6 Toshiba 4,9%
7 DSP Group 2,2%
8 NEC Electronics 0,6%
9 Fujitsu 0,4%
10 Intersil 0,3%
Other Companies 0,5%
Total 100,0%

Следует помнить, что производители DSP, проектируя новые микросхемы, достаточно четко позиционируют их для использования в тех или иных приложениях. Это оказывает влияние и на их архитектуру, и на быстродействие, и на оснащение процессора тем или иным набором периферийных модулей. В таблице 2 показано позиционирование DSP с точки зрения их создателей.

Таблица 2. Области применения семейств сигнальных процессоров разных производителей

Обработка видео, видеонаблюдение , цифровые камеры, 3D графика TMS320DM64x/DaVinci, TMS320C64xx, TMS320C62xx (TI), PNX1300, PNX1500, PNX1700 (Philips) , MPC52xx (Freescale)
Обработка аудио, распознавание речи, синтез звука TMS320C62xx, TMS320C67xx (TI), SHARC (Analog Devices)
Портативные медиа устройства TMS320C54xx, TMS320C55xx (TI), Blackfin (Analog Devices)
Беспроводная связь, телекоммуникации, модемы, сетевые устройства TMS320C64xx, TMS320C54xx, TMS320C55xx (TI), MPC7xxx, MPC86xx, MPC8xx PowerQUICC I, MPC82xx PowerQUICC II, MPC83xx PowerQUICC II Pro, MPC85xx PowerQUICC III (Freescale), Blackfin, TigerSHARC (Analog Devices), PNX1300 (Philips)
Управление приводами, преобразование мощности, автомобильная электроника, предметы домашнего обихода, офисное оборудование TMS320C28xx, TMS320C24xx (TI), ADSP-21xx (Analog Devices), MPC55xx, MPC55xx (Freescale)
Медицина, биометрия, измерительные системы TMS320C62xx, TMS320C67xx, TMS320C55xx, TMS320C28xx (TI), TigerSHARC, SHARC (Analog Devices)

Формат данных и разрядность

Одна из основных характеристик цифровых сигнальных процессоров - формат обрабатываемых данных. Все DSP работают либо с целыми числами, либо с числами в формате с плавающей точкой, причем для целых чисел разрядность составляет 16 или 32, а для чисел с плавающей точкой она равна 32. Выбирая формат данных, необходимо иметь в виду следующее: DSP с целочисленными данными (или данными с фиксированной точкой) обычно дешевле и обеспечивают большую абсолютную точность при равной разрядности (т.к. на мантиссу в 32-битном процессоре с фиксированной точкой отводятся все 32 бита, а в процессоре с плавающей точкой - только 24).

В то же время динамический диапазон сигналов, с которыми могут без искажений работать процессоры, у процессоров с фиксированной точкой значительно уже (на несколько десятичных порядков). При относительно простых алгоритмах обработки это может быть неважно, т.к. динамический диапазон реальных входных сигналов чаще всего меньше, чем допускает DSP, однако в некоторых случаях возможно возникновение ошибок переполнения при выполнении программы. Это приводит к принципиально неустранимым нелинейным искажениям выходного сигнала, аналогичным искажениям из-за ограничения в аналоговых схемах.

Следовательно, при выборе DSP необходимо тщательно анализировать алгоритм обработки и входные сигналы для правильного выбора разрядности и типа арифметики. Иногда при невозможности подобрать подходящий процессор с плавающей точкой (из-за большей его стоимости или энергопотребления) используют DSP с фиксированной точкой и сжатие динамического диапазона обрабатываемых сигналов (компрессию), однако это приводит к увеличению сложности алгоритма обработки сигнала и повышает требования к быстродействию.

Конечно, можно эмулировать операции с плавающей точкой и на процессоре с целочисленной арифметикой или перейти к обработке чисел удвоенной разрядности, однако это также значительно усложняет программу и значительно снижает быстродействие.

Несмотря на все ограничения, большинство встроенных приложений используют процессоры с фиксированной точкой из-за меньшей цены и энергопотребления. Увеличение количества разрядов повышает стоимость, размер кристалла и число необходимых выводов процессора, а также необходимый объем внешней памяти. Поэтому разработчики стремятся использовать кристалл с минимально возможной разрядностью.

Стоит заметить, что разрядность данных и разрядность команд процессоров не всегда эквивалентны.

Скорость

Ключевой параметр при выборе процессора - это скорость. Она влияет на время выполнения обработки входного сигнала и, следовательно, определяет его максимальную частоту. Одна из самых частых ошибок разработчика - отождествление тактовой частоты и быстродействия, что в большинстве случаев неправильно. Очень часто скорость работы DSP указывают в MIPS (миллионах инструкций в секунду). Это наиболее просто измеряемый параметр.

Однако проблема сравнения скорости различных DSP состоит в том, что процессоры имеют различные системы команд, и для выполнения одного и того же алгоритма разными процессорами требуется разное число этих команд. Кроме того, иногда для выполнения различных команд одним процессором требуется различное количество тактов синхронизации. В результате процессор со скоростью 1000 MIPS вполне может оказаться в разы медленнее процессора со скоростью 300 MIPS, особенно при различной их разрядности.

Одно из решений этой проблемы - сравнивать процессоры по скорости выполнения определенных операций, например, операции умножения с накоплением (MAC). Скорость выполнения таких операций критична для алгоритмов, использующих цифровую фильтрацию, корреляцию и преобразования Фурье. К сожалению, такая оценка также не дает полной информации о реальном быстродействии процессора.

Наиболее точной является оценка скорости исполнения определенных алгоритмов - например, КИХ- и БИХ-фильтрации, однако это требует разработки соответствующих программ и тщательного анализа результатов тестирования.

Существуют компании, занимающиеся анализом и сравнением процессоров по основным характеристикам, в том числе и по скорости. Лидером среди таких компаний является BDTI - Berkeley Design Technology, Inc. (www.bdti.com). В качестве примера на рисунке 1 показано сравнение по скорости современных DSP разных производителей.

Рис. 1. Пример сравнения быстродействия различных DSP с фиксированной точкой

Организация памяти

Организация системы памяти процессора влияет на производительность. Это связано с тем, что ключевые команды DSP являются многооперандными и ускорение их работы требует одновременного чтения нескольких ячеек памяти. Например, команда MAC требует одновременного чтения 2 операндов и самой команды для того, чтобы ее можно было выполнить за 1 такт. Это достигается различными методами, среди которых применение многопортовой памяти, разделение на память программ и память данных (Гарвардская архитектура), использование кэша команд и т.д.

Необходимый объем памяти определяется приложением. Необходимо учитывать, что встроенная в процессор память обычно имеет значительно большую скорость работы, чем внешняя, однако увеличение ее объема увеличивает стоимость и энергопотребление DSP, а ограниченный объем памяти программ не позволяет хранить сложные алгоритмы. В то же время при достаточности этого объема для ваших целей наличие встроенной памяти позволяет значительно упростить конструкцию в целом и понизить ее размеры, энергопотребление и стоимость.

Большинство DSP с фиксированной точкой, применяющиеся во встраиваемых приложениях, предполагают малый объем внутренней памяти, обычно от 4 до 256 Кбайт и невысокую разрядность внешних шин данных.

В то же время DSP с плавающей точкой обычно предполагают работу с большими массивами данных и сложными алгоритмами и имеют либо встроенную память большого объема, либо большую разрядность адресных шин для подключение внешней памяти (а иногда и то, и другое). Еще раз подчеркнем - выбор типа и объема памяти должен быть результатом тщательного анализа приложения, в котором используется DSP.

Удобство разработки приложений

Степень сложности разработки определятся приложением. При этом необходимо иметь в виду, что большее удобство для разработчика (обычно связываемое с использованием при программировании DSP языков высокого уровня) в большинстве случаев оборачивается получением менее компактного и быстрого кода, что оборачивается необходимостью использования более мощных и дорогих DSP. С другой стороны, в современных условиях скорость разработки (и, следовательно, выхода нового изделия на рынок) может принести больше выгод, чем затраты времени на оптимизацию кода при написании программы на ассемблере.

Кроме того, следует помнить, что безошибочных программ не бывает, поэтому средства отладки и возможность коррекции программ в готовом устройстве очень часто имеют первостепенное значение. В то же время при выборе DSP и средств разработки необходимо учитывать некоторые особенности архитектуры процессоров.

Те, кто использует компиляторы с языков высокого уровня (ЯВУ), иногда замечают, что они генерируют лучший код для процессоров с плавающей точкой. Это происходит по нескольким причинам: во-первых, большинство языков высокого уровня изначально не поддерживают арифметику с фиксированной точкой, во-вторых, система команд DSP с фиксированной точкой более ограничена, и в-третьих, процессоры с плавающей точкой обычно накладывают меньшие ограничения на объем используемой памяти.

Наилучшие результаты получаются при компиляции программ на ЯВУ для VLIW-процессоров (процессорах со сверхдлинным словом команды) с простой ортогональной RISC-системой команд и большими регистровыми файлами. Однако даже для этих процессоров генерируемый компилятором код получается более медленным по сравнению с оптимизированным вручную ассемблерным. С другой стороны, возможность сначала смоделировать процесс обработки сигнала в программе типа MathLab с дальнейшей автоматической трансляцией его в программу для DSP позволяет избавиться от множества серьезных ошибок еще на начальном этапе разработки.

Отладку готовых программ можно производить либо на аппаратном эмуляторе готовой системы, либо на программном симуляторе. Обычно отладка на симуляторе несколько проще с точки зрения используемой аппаратуры, однако она не позволяет выявить все возможные ошибки. Почти все производители обеспечивают разработчиков и симуляторами, и эмуляторами своих DSP. Почти все современные DSP поддерживают внутрисхемную эмуляцию в соответствии со стандартом IEEE 1149.1 JTAG. При использовании технологии JTAG мы переходим от эмуляции процессора внешним устройством к непосредственному контролю над процессором при выполнении программы, что позволяет значительно увеличить степень соответствия макета реальному устройству и, следовательно, повысить надежность процесса отладки.

Помимо эмуляторов, производители предлагают широкий набор так называемых «стартер-китов» и «оценочных модулей», с помощью которых можно сразу приступить к разработке приложения, не дожидаясь изготовления макета разрабатываемого устройства. Кроме этого, в некоторых приложениях эти средства разработки можно использовать как конечные устройства.

Энергопотребление

DSP-процессоры широко используются в мобильных устройствах, где потребление мощности является основной характеристикой. Для снижения энергопотребления используется множество методов, в том числе уменьшение напряжения питания и введение функций управления потреблением, например, динамического изменения тактовой частоты, переключения в спящий или дежурный режим или отключения неиспользуемой в данный момент периферии. Следует отметить, что эти меры оказывают значительное воздействие на скорость работы процессора и при некорректном использовании могут привести к неработоспособности проектируемого устройства (в качестве примера можно привести некоторые сотовые телефоны, которые в результате ошибок в программах управления энергопотреблением иногда переставали включаться) или к ухудшению его эксплуатационных характеристик (например, значительному времени восстановления работоспособности при выходе из спящего режима).

Оценка потребления мощности является не простой задачей, так как эта величина варьируется в зависимости от выполняемых процессором задач. К сожалению, большинство производителей публикуют только «типичное» и «максимальное» потребление, а что понимается под этими определениями, не всегда ясно. Исключением является компания Texas Instruments, которая указывает потребление мощности в зависимости от типа команды и конфигурации процессора.

Стоимость

Стоимость процессора, несомненно, является определяющей величиной при выборе DSP, особенно при больших объемах производства. Обычно разработчики стремятся выбрать наиболее дешевый процессор, однако следует учитывать, что это может привести к значительным затратам на переделку устройства, если выбранный процессор по какимлибо причинам не позволит добиться нужных характеристик. Кроме того, при выборе процессора по критерию стоимости необходимо принимать во внимание стоимость внешних компонентов (например, DSP со встроенной памятью достаточного объема стоит дороже аналогичного без встроенной памяти, но цена устройства в целом на его основе может быть значительно ниже из-за отсутствия других компонентов и меньшего размера печатной платы). Очень значимым фактором, влияющим на стоимость DSP, является тип его корпуса: ИС в керамических корпусах, рассчитанные на промышленные или специальные условия эксплуатации, стоят значительно дороже таких же ИС, работающих в коммерческом диапазоне температур. И, наконец, цена процессора очень сильно зависит от объема и регулярности поставок.

Методология выбора процессора

Как показано ранее, правильный выбор DSP сильно зависит от приложения: процессор может хорошо подходить для одних приложений, но абсолютно не подходить для других. При выборе процессора нужно определить самые важные в конкретном случае характеристики и расставить их по степени важности. Затем в соответствии с этими критериями отобрать возможных кандидатов и, наконец, выбрать из подходящих лучший, обращая внимание на дополнительные, не критичные характеристики. При этом целесообразно воспользоваться оценкой характеристик процессоров, производимой какой-либо авторитетной компанией (например, BTDI). Следует помнить, что BTDI производит оценку DSP не только по быстродействию, но и по другим критериям: эффективности памяти, энергопотреблению и т.д.

Например, для реализации приложения для нас в первую очередь важны скорость, цена, эффективность работы памяти и энергопотребление. Мы определили основных претендентов, среди которых DSP с ядром C64x и C64x+ от Texas Instruments и TigerSHARC от Analog Devices. На рисунке 2 показан граф сравнительных характеристик этих процессоров по критериям скорости, стоимости, энергопотребления и удобству средств разработки.


Рис. 2. Диаграмма для выбора DSP

Теперь приоритеты. Если нам в первую очередь необходима высокая скорость и низкая цена, мы выбираем Texas Instruments. Если мы конструируем мобильное устройство и нам нужно низкое энергопотребление, причем мы готовы пожертвовать скоростью, берем Analog Devices. Не исключена вероятность того, что выбранные процессоры окажутся очень близки по ключевым параметрам. В этом случае выбор будет определяться некритичными характеристиками: доступностью средств отладки, предыдущим опытом разработчика, доступностью компонентов и т.д.

Тщательный выбор цифрового сигнального процессора еще на начальном этапе разработки может помочь избавиться от излишних затрат, связанных с выбором неподходящего DSP, и сократить как время разработки в целом, так и время и средства на выявление ошибок.

Литература

  1. Jeff Bier, Choosing a Processor: Benchmarks and Beyond (S043), Berkeley, California: Berkeley Design Technology, Inc., USA, 2006.
  2. Choosing a DSP Processor, Berkeley, California: Berkeley Design Technology, Inc., USA, 2000.
27 июня 2017 в 12:27

Многоядерный DSP TMS320C6678. Обзор архитектуры процессора

  • Программирование микроконтроллеров

Данная статья открывает серию публикаций, посвященных многоядерным цифровым сигнальным процессорам TMS320C6678. В статье дается общее представление об архитектуре процессора. Статья отражает лекционно-практический материал, предлагаемый слушателям в рамках курсов повышения квалификации по программе «Многоядерные процессоры цифровой обработки сигналов C66x фирмы Texas Instruments», проводимых в Рязанском государственном радиотехническом университете.

Цифровые сигнальные процессоры TMS320C66xх строятся по архитектуре KeyStone и представляют собой высокопроизводительные многоядерные сигнальные процессоры, работающие как с фиксированной, так и с плавающей точкой. Архитектура KeyStone – это разработанный фирмой Texas Instruments принцип изготовления многоядерных систем на кристалле, позволяющий организовывать эффективную совместную работу большого числа ядер DSP- и RISC-типов, акселераторов и устройств периферии с обеспечением достаточной пропускной способности внутренних и внешних каналов пересылки данных, основой чего являются аппаратные компоненты: Multicore Navigator (контроллер обмена данными по внутренним интерфейсам), TeraNet (внутренняя шина пересылки данных), Multicore Shared Memory Controller (контроллер доступа к общей памяти) и HyperLink (интерфейс с внешними устройствами на внутрикристальной скорости).

Архитектура процессора TMS320C6678 , наиболее высокопроизводительного процессора в семействе TMS320C66xх, изображена на Рисунке 1. Архитектура может быть разбита на следующие основные компоненты:

  • набор операционных ядер (CorePack);
  • подсистема работы с общей внутренней и внешней памятью (Memory Subsystem);
  • периферийные устройства;
  • сетевой сопроцессор (Network Coprocessor);
  • контроллер внутренних пересылок (Multicore Navigator);
  • служебные аппаратные модули и внутренняя шина TeraNet.

Рисунок 1. Общая архитектура процессора TMS320C6678

Процессор TMS320C6678 работает на тактовой частоте 1.25 ГГц. В основе функционирования процессора лежит набор операционных ядер С66х CorePack, количество и состав которых зависят от конкретной модели процессора. ЦСП TMS320C6678 включает в свой состав 8 ядер DSP-типа. Ядро является базовым вычислительным элементом и включает в свой состав вычислительные блоки, наборы регистров, программный автомат, память программ и данных. Память, входящая в состав ядра, называется локальной.

Кроме локальной памяти, есть память общая для всех ядер – общая память многоядерного процессора (Multicore Shared Memory – MSM). Доступ к общей памяти осуществляется через подсистему управления памятью (Memory Subsystem), которая также включает интерфейс внешней памяти EMIF для обмена данными между процессором и внешними микросхемами памяти.

Сетевой сопроцессор повышает эффективность работы процессора в составе различного рода телекоммуникационных устройств, реализуя аппаратно типовые для данной сферы задачи обработки данных. В основе работы сопроцессора лежат акселератор пакетной передачи данных (Packet Accelerator) и акселератор защиты информации (Security Accelerator). В спецификации на процессор перечислен набор протоколов и стандартов, поддерживаемых данными акселераторами.

Периферийные устройства включают:

  • Serial RapidIO (SRIO) версии 2.1 – обеспечивает скорость передачи данных до 5 GBaud на линию при числе линий (каналов) – до 4;
  • PCI Express (PCIe) версии Gen2 – обеспечивает скорость передачи данных до 5 GBaud на линию при числе линий (каналов) – до 2;
  • HyperLink – интерфейс внутренней шины, позволяющий коммутировать процессоры, построенные по архитектуре KeyStone, напрямую друг с другом и осуществлять обмен на внутрикристальной скорости; скорость передачи данных – до 50 Gbaud;
  • Gigabit Ethernet (GbE) обеспечивает скорости передачи: 10/100/1000 Mbps и поддерживается аппаратным акселератором сетевых коммуникаций (сетевым сопроцессором);
  • EMIF DDR3 – интерфейс внешней памяти типа DDR3; имеет разрядность шины 64 бита, обеспечивающую адресуемое пространство памяти до 8 Гбайт;
  • EMIF – интерфейс внешней памяти общего назначения; имеет разрядность шины 16 бит и может использоваться для подключения 256MB NAND Flash или 16MB NOR Flash;
  • TSIP (Telecom Serial Ports) – телекоммуникационный последовательный порт; обеспечивает скорости передачи до 8 Mбит/с на одну линию при числе линий – до 8;
  • UART – универсальный асинхронный последовательный порт;
  • I2C – шина внутренней связи;
  • GPIO – ввод-вывод общего назначения – 16 выводов;
  • SPI – универсальный последовательной интерфейс;
  • Таймеры (Timers) – используются для генерации периодических событий.
Служебные аппаратные модули включают в себя:
  • модуль отладки и трассировки (Debug and Trace) – позволяет получать отладочным инструментальным средствам доступ к внутренним ресурсам работающего процессора;
  • загрузочное ПЗУ (boot ROM) – хранит программу начальной загрузки;
  • аппаратный семафор (semaphore) – служит для аппаратной поддержки организации совместного доступа параллельных процессов к общим ресурсам процессора;
  • модуль управления питанием – реализует динамическое управление режимами питания компонентов процессора с целью минимизации энергозатрат в моменты, когда процессор работает не в полную мощь;
  • схема ФАПЧ – формирует внутренние тактовые частоты процессора из внешнего опорного тактирующего сигнала;
  • контроллер прямого доступа в память (EDMA) – управляет процессом пересылки данных, разгружая операционные ядра ЦСП и являясь альтернативой Multicore Navigator.
Контроллер внутренних пересылок (Multicore Navigator) представляет собой мощный и эффективный аппаратный модуль, отвечающий за арбитраж передачи данных между различными компонентами процессора. Многоядерные системы на кристалле TMS320C66xx являются весьма сложными устройствами и, чтобы организовать обмен информацией между всеми компонентами такого устройства, необходим специальный аппаратный блок. Multicore Navigator позволяет ядрам, периферийным устройствам, хост-устройствам не брать на себя функции управления обменом данными. Когда какому-либо компоненту процессора необходимо переслать массив данных на другой компонент, он просто указывает контроллеру, что и куда нужно передать. Все функции по самой пересылке и синхронизации отправителя и получателя берет на себя Multicore Navigator.

Основой функционирования многоядерного процессора TMS320C66xх с позиции высокоскоростного обмена данными между всеми многочисленными компонентами процессора, а также внешними модулями, служит внутренняя шина TeraNet.

В следующей статье будет подробно рассмотрена архитектура операционного ядра C66x.

1. Multicore Programming Guide / SPRAB27B - August 2012;
2. TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor Data Manual / SPRS691C - February 2012.

Пока все прогрессивное (читай — зависящее от ПК) человечество замерло в затянувшемся ожидании Merced и прочих диковинных, обещающих невиданные доселе показатели производительности процессоров, малочисленная, но чрезмерно любопытная часть несознательных индивидуумов настойчиво ищет возможности получения сверхпроизводительности компьютеров уже сегодня. Индивидуализм этого "партизанского движения", естественно, подразумевает весьма скромные объемы финансирования, что исключает популярность в "партизанской среде" еще не окончательно родившегося, но уже слишком дорогого Merced. Страсти "по мощи" подогреваются запаздыванием с выходом на рынок многообещающей Sony Playstation II, тотальным снижением цен на клоновые RISC-процессоры 64-битового семейства MIPS и, наконец, ставшим уже отчетливым кризисом архитектуры ПК IBM PC. В этой ситуации более чем странной кажется малозаметность расположившегося отдельно в процессорной "табели о рангах" обширного семейства недорогих высокопроизводительных микропроцессоров, именуемого DSP. Представители "DSP-клана" в области процессорной архитектуры концентрируют лучшие (ожидающиеся в далеком будущем в "настольных" CPU) решения, а по соотношению "потребляемая мощность/производительность" (милливатт/MIPS) вообще кажутся настоящими "инопланетянами".

DSP и DSP — понятия разные

Инженерный английский — неиссякаемый источник "разбирательств" между страстными любителями аббревиатур. Терминология, связанная с предметом нашего обсуждения, не является исключением, посему попытаюсь сразу избавить читателя от возможных "подводных камней". Digital Signal Processing (DSP) — цифровая обработка сигналов — огромная междисциплинарная область науки, находящаяся "на стыке" более десятка сложнейших научных направлений. Digital Signal Processor (цифровой сигнальный процессор — ЦСП), предмет нашего обсуждения, — более "приземленное" понятие, но, увы, являющееся "овеществлением" разработок из области цифровой обработки сигналов. Поэтому без предварительного знакомства с основными положениями этой науки все же не обойтись.

Нетрудно заметить, что обе аббревиатуры включают в себя термин "сигнальный". Со словом "сигнал" произошло то, что обычно происходит с модными терминами, — все ими пользуются, но никто не задумывается об их значении. В дальнейшем под сигналом будут пониматься несущие информацию изменения в чем-либо — в электрическом напряжении, давлении газа (например, воздуха) или жидкости, в электромагнитном поле. Это определение уже поясняет самую важную характерную черту ЦСП, но о ней чуть позже.

Еще одно дублирование наблюдается в словах "цифровой" и "цифровая", что в сочетании с "сигналом" подсказывает: информация, заключенная в изменениях уже упомянутого "чего-то", представляется в цифровой форме.

Ну и, наконец, — "обработка" и "процессор" (он же, по-русски, — "обработчик"): с этой самой информацией совершается некоторая последовательность действий, преследующая достижение определенных целей.

Теперь облик ЦСП можно считать достаточно определенным: это некоторое цифровое электронное устройство, ориентированное на активное взаимодействие с реальным миром (в котором и присутствуют сигналы) и предназначенное для достижения заданных целей на основе заключенной в сигналах информации.

"Так ведь это же любой обычный микропроцессор можно назвать ЦСП" — скажете вы. Не совсем так. Несоизмеримость временных "шкал" реального мира (на который и рассчитаны ЦСП) и человеческого терпения или реакции (в самых исключительных случаях она меньше 0,05 с, что "развязывает руки" конструкторам универсальных микропроцессоров и операционных систем) — такой "маленький" нюанс приводит к громадному "отрыву" в архитектурах, показателях производительности и областях применения представителей двух параллельных миров DSP/CPU.

А причем здесь ПК?

Действительно, есть специфический класс задач (связанных с окружающей нас действительностью), есть инструментальные средства, облегчающие решение этих задач (ЦСП). К персональным компьютерам все это имеет, на первый взгляд, весьма отдаленное отношение, а ЦСП, присутствующие в подсистемах ПК (например, в звуковой карте или модеме), выполняют узкоспециализированные функции. Собственно, так есть, пока наши ПК выглядят приличных размеров ящиками, "сжигают" за сотню ватт, и пока нас это устраивает…

Но времена меняются — компьютеры становятся все меньше и меньше, они уже умещаются на ладони. Пусть сегодня они только игрушки — все эти не очень удобные записные книжки для "деловых людей" и уж совсем неудобные (точнее, неуклюжие) текстовые редакторы с перьевым вводом — но игрушки уже НОСИМЫЕ! Мы привыкаем к ним, перестаем замечать и, несмотря на все неудобства, используем их возможности в повседневной жизни. Иными словами, мы уже готовы к тотально-бытовой "мелкой" компьютеризации, а вот компьютеры — пока нет (отсюда и все неудобства палм-топов и PDA). Неготовность компьютеров не связана ни с низкой степенью интеграции используемых в них микросхем, ни с невысокой производительностью, ни с большой потребляемой мощностью. Основная причина этой неготовности — так называемая "ошибка верхнего уровня", накрепко укоренившаяся в головах разработчиков: почему-то все забыли о том, что носимый компьютер становится "частью" своего носителя и "живет" вместе с ним в РЕАЛЬНОМ ОКРУЖАЮЩЕМ МИРЕ! Теперь, очевидно, сам собой напрашивается один единственный вывод, который и является ответом на вопрос о "причастности ПК": раз DSP ориентированы на обработку сигналов реального мира и носимые персональные компьютеры как раз "живут" в реальном мире, значит… Правильно! Настоящие ПЕРСОНАЛЬНЫЕ (по признаку принадлежности к "персоне", а не как разновидность собственности) компьютеры должны основываться на DSP, а не на универсальном процессоре.

Не может быть

"…потому что специализированные процессоры не соответствуют требованиям, предъявляемым современным программным обеспечением", — процитируете вы кого-нибудь. Вполне возможно, что современное программное обеспечение до сих пор требует усилий для мирного сосуществования программ защищенного (32-битового) режима и 16-битовой BIOS (базовой системы ввода/вывода) ПК архитектуры IBM PC, и именно из-за этих самых требований существует реальная несовместимость между "совместимыми" процессорами (вспомните о всевозможных расширениях системы команд от Intel и AMD), и, наконец, из-за "современности" крепко забыта такая мелочь, как мобильность ПО, что замыкает порочный круг: "несовершенство платформы — платформенная зависимость ПО — совершенствование платформы до нового уровня несовершенства — еще большая платформенная зависисмость ПО — …".

На самом деле современные DSP приспособлены и к работе под управлением мультизадачных операционных систем реального времени, и для создания могучих 3D-акселераторов, и для обработки в реальном времени аудио/видеоинформации, и вообще Бог знает для чего. Судите сами: 32-битовые ЦСП Texas Instruments семейства TMS320C6700 могут "молотить" цифровое представление сигналов (или просто перемножать матрицы 4 x 4 в задачах трехмерной визуализации) со скоростью 1 GFLOPS при более чем скромных тактовой частоте в 167 MHz и цене в небольших партиях до $250, а замечательный и дешевый DSP SHARC (Analog Devices) при стоимости $10 (в больших партиях) "берет планку" 150 MFLOPS, потребляя всего… 0,3 В.

Цифры, факты, история

Еще раз попытаюсь защититься от возможных упреков в "выпячивании" достоинств никого не интересующей узкоспециализированной технологии. Состояние рынка полупроводников — лучший показатель перспективности той или иной технологии — свидетельствует о постоянно растущей популярности DSP: так, в 1998 г. на фоне общего десятипроцентного спада объемов продаж всего, попадающего в категорию "semiconductor", рынок универсальных программируемых DSP вырос на 9% (до уровня 4 млрд. долл.), а узкоспециализированных — на 15% (5,3 млрд. соответственно). Следовательно, факт популярности DSP можно считать доказанным. Заодно, учитывая особенности DSP, также уверенно можно говорить и о явном проявлении наконец-то "здоровой" тенденции в компьютинге: активное внедрение в реальный окружающий мир (а иначе зачем DSP?).

Если о состоянии рынков информации более чем достаточно, то история DSP — предмет, достойный отдельного исследования. Кое-что, впрочем, отыскать в дебрях Internet можно: титула одного из самых дальних предков современных DSP по праву заслуживает канувший в Лету микропроцессор 8×300, разработанный компанией SMS (впоследствии продавшей 8×300 другой, более известной компании Signetics). Появившийся в 1978 г. 8×300 был почти сразу забыт, и на смену ему в 1979 г. к "DSP-играм" решила подключиться Intel. Для своего времени ЦПС Intel 2920 был удивительным устройством, объединяющим на одном кристалле и аналого-цифровой преобразователь (АЦП), и специализированный микропроцессор, и ЦАП (цифро-аналоговый преобразователь). По сути, с точки зрения инженера-разработчика, 2920 выглядел неким аналоговым устройством с произвольно задаваемыми свойствами. ЦПС был бы очень удачным, если бы не одно "но": DSP от Intel получился слишком медленным (на выполнение самых "быстрых" команд при максимальной тактовой частоте 2920 требовалось 0,9 мкс, что фактически исключало возможность его применения в каких-либо реальных задачах). Крайне низкая производительность привела к тому, что 2920 "умер, еще не родившись", и этот печальный опыт заставил корпорацию Intel надолго забыть о DSP-разработках.

Вслед за Intel на DSP-рынок устремились Lucent Technologies и NEC, представившие в 1980 г. первый программируемый DSP. На этом историческом фоне малозаметным кажется факт, что Texas Instruments еще в 1978 г. производила в больших партиях чипы для игрушек "Speak & Spell" ("говори и слушай"). При более детальном рассмотрении оказывается: Texas Instruments опередила всех, начав масштабное серийное производство первых специализированных DSP. Впоследствии, в 1982 г., Texas Instruments (TI) анонсировала свой первый универсальный программируемый DSP TMS32010, архитектура которого стала абсолютным законодателем мод на рынке цифровой обработки сигналов, а сама компания TI — аналогом Intel в мире процессоров для ПК. Сегодня перечень имен производителей самых разных DSP трудно перечислить, специалисты насчитывают более 300 (!) уникальных архитектур, реализованных "в кремнии", и даже надолго забывшая о DSP-рынке Intel объявила о планах совместной разработки с Analog Devices ЦПС нового поколения.

Архитектурная эволюция

Обилие архитектур DSP способно охладить любую настойчивость, но… Все ЦПС должны, в силу своей специфики, отвечать одним и тем же требованиям. Характерные для задач обработки сигналов свойства процессоров назвать уникальными трудно: здесь необходимы очень быстрая арифметика (а где она не нужна?), высокая скорость обмена процессора с внешними устройствами, преобразующими сигналы из окружающего мира в электрическое представление, и, наконец, высокая пропускная способность подсистемы памяти. Так что на самом деле данные требования не слишком специфичны — именно всего этого мы хотим от наших ПК, повышая частоту системной шины, совершенствуя периферийные интерфейсы (например, переходом от PCI к PCI 2) и устанавливая модули памяти SDRAM.

Другое дело, что алгоритмы обработки сигналов обладают некоторой общностью, что вызывало необходимость концентрации усилий конструкторов и архитекторов DSP на эффективном решении ряда частных задач. Фундаментальными для цифровой обработки считаются примитивные операции сложения и умножения двух чисел-операндов, индексирования массивов данных и задержки. Арифметическая подгруппа в этом перечне (сложение и умножение) достаточно очевидна: для выполнения соответствующей операции надо где-то взять два операнда, произвести над ними необходимую операцию с размещением результата во временном "хранилище", затем записать результат из этого "хранилища" в определенное место (ячейку оперативной памяти или регистр процессора). С адресными операциями (индексированием массивов данных) дело обстоит сложнее: ЦПС должен уметь очень быстро выбирать данные из последовательных массивов и выполнять редко встречающуюся в RISC (да и CISC) процессорах команду копирования типа "память—память". Операция задержки, несмотря на "страшное" немикропроцессорное название, означает всего лишь очень быстрое "припрятывание" данных для последующего использования.

В целом, не будет большой ошибки в утверждении, что все архитектурные новшества и кажущиеся "излишества" современных ЦПС отражают стремления конструкторов добиться высокой эффективности именно этих четырех базовых операций.

Для ускорения арифметических вычислений в DSP используют несколько арифметико-логических устройств (АЛУ), работающих "в параллель", что в случае "хитро" устроенной внутренней регистровой памяти позволяет вводить в систему команд ЦПС очень интересные инструкции, в переводе на человеческий язык означающие приблизительно следующее: "умножить содержимое регистра 1 с содержимым регистра 2 и сложить результат умножения с содержимым регистра 3". И все это — одна команда, выполняющаяся за один такт. Восхищаться пока рано: операция умножения с накоплением (именно так называется подобный перечень действий) — классика цифровой обработки сигналов, а реализующие ее аппаратные средства постепенно проникают в еще недавно считавшиеся универсальными процессоры, в первую очередь RISC-архитектуры, в частности во многие клоны MIPS.

Эффективная реализация операции задержки требует, чтобы у хорошего DSP было много внутренних регистров (в принципе, чем больше, тем лучше), в этом случае легко найти одну из незанятых регистровых ячеек для "припрятывания" данных. Кроме того, высокая скорость выполнения этой операции может быть достигнута только путем хороших архитектурных решений, например удачной логической организацией регистрового массива DSP. В нашем контексте это свойство ЦСП также кажется весьма привлекательным — обилие внутренних регистров и их логическая организация существенно упрощают разработку компиляторов с языков высокого уровня (что, к слову, подтверждается практикой — на ftp-сайте Texas Instruments можно найти очень удачные модификации известного компилятора C gcc, генерирующего код для ЦСП семейств TMS).

Самой сложной операции — индексации массивов данных — DSP обязаны своей уникальностью. Обилие регистров и быстрая арифметика свойственны, например, RISC-процессорам (да и многим CISC). А вот выделенная в отдельную подсистему процессора "машина" генерации адресов — это та самая изюминка, придающая специфичность DSP, но ни в коем случае не ограничивающая их область применения. Как раз наоборот — единственный регистр счетчика команд в обычных процессорах принципиально не может превосходить по показателям целую подсистему. Эффективность генератора адресов — один из самых важных показателей, определяющих эффективность всего ЦПС в целом. Практически во всех DSP генераторы адресов работают "прозрачно" для всех остальных подсистем процессора, т. е. не отнимают машинного времени и не требуют приостановки выполнения основных операций. Кроме того, за счет применения генератора адресов ЦСП характеризуются очень развитыми способами адресации (для знающих язык программирования C — уж на что он богат на фокусы с указателями, в любом DSP присутствуют машинные команды, реализующие чуть ли не все возможные адресные операции этого языка).

Если вспомнить повышенные требования DSP к скорости обмена с внешними устройствами, то в любом конкретном процессоре вы найдете результаты серьезных конструкторских усилий. В первую очередь, это высокоскоростные последовательные каналы ввода/вывода. Несмотря на их простоту, низкая стоимость интерфейсов в сочетании с достаточной для реальных приложений пропускной способностью (например, 40 Mbps) удовлетворяет практически всем потенциальным потребностям разработчиков. Для расширения возможностей конкретных процессоров используются как синхронные (трехпроводные: тактовая частота, данные и синхронизирующие импульсы), так и асинхронные (двухпроводные, синхронизирующие импульсы "замаскированы" в поток данных) последовательные каналы.

Самые интересные и неожиданные архитектурные находки сконцентрированы в подсистемах памяти DSP. Насущная необходимость включения в систему команд однотактных инструкций умножения с накоплением привела к тому, что ничего общего со "стандартными" универсальными CPU у ЦПС не осталось. Действительно, за один такт невозможно одновременно прочитать или записать данные, адресуемые по одной единственной адресной шине, — для этого необходимо столько адресных шин, сколько единиц данных выступают в качестве операндов команды. Самое интересное, что разработчики DSP нашли совершенно нетривиальное и изящное решение этой проблемы даже в случае использования привычной фон-Неймановской архитектуры памяти (единая физическая память для программы и данных). "Зачем вообще использовать фон-Неймановскую архитектуру?" — спросите вы. Ведь существует и реализована в очень многих процессорах Гарвардская архитектура (раздельные физические память программ и данных с, соответственно, раздельными шинами), но… Универсальный DSP должен уметь работать с внешней оперативной памятью — многие программы обработки сигналов очень сложны, для хранения реализующего их кода и промежуточных данных требуется существенная емкость ОЗУ (большинство современных DSP имеют встроенные механизмы управления дешевой и быстрой SDRAM емкостью от 16 до 64 MB). Для реализации настоящей Гарвардской архитектуры требуются по две шины адреса и данных, что при 32-разрядном процессоре выливается в 128 выводов — это слишком дорого и слишком неудобно. В таком балансировании между производительностью и ценой DSP-архитекторы таки нашли неожиданно "равновесное положение": Гарвардская внутренняя и модифицированная фон-Неймановская внешняя архитектуры одновременно. Мы уже привыкли к тому факту, что процессоры работают на более высокой тактовой частоте, чем, например, шины памяти, поэтому DSP-модификация "неймана" покажется несколько странной: шина памяти работает на повышенной (обычно в 4 раза) по отношению к внутренней процессорной частоте. Это позволяет за один период (такт) процессора произвести несколько обращений к памяти — просто и эффективно, а заодно сэкономить на целой куче лишних выводов.

Теперь, естественно, напрашивается вопрос: а как достигается такое высокое быстродействие DSP, если процессор работает на пониженной частоте? На сегодняшний день практически во всей DSP-индустрии есть несколько излюбленных приемов и архитектурных решений, играющих роль "структурного умножения тактовой частоты". Здесь берут не числом (не мегагерцами), а умением. Модные абстрактные термины типа VLIW (очень длинные машинные команды) давно и с успехом работают, например в процессорах Texas Instruments семейства TMS320C6xxx, 256-битовый код команды которых способен "инкапсулировать" до восьми 32-битовых операндов, представленных числами с плавающей и фиксированной точкой. Для "утилизации" подобных команд применяются несколько (в случае с TMS320C6xxx — шесть) арифметико-логических устройств и отдельных быстрых аппаратных умножителей. В несоизмеримо более дешевом SHARC от Analog Devices (модель ADSP-21065L, цена в больших партиях $10) применяются три отдельных АЛУ со скоростными умножителями (способные работать "в параллель"), отдельный аппаратный "сдвигатель" данных (shifter, обеспечивающий "сдвиг" битового содержимого на указанное в качестве операнда число битов N влево или вправо, что эквивалентно очень быстрому умножению или делению на 2**N), внутренняя Гарвардская и внешняя модифицированная фон-Неймановская архитектуры (тактовая частота шины оперативной памяти до 60 MHz), встроенная двухпортовая память (с возможностью одновременного доступа двумя подсистемами процессора) перестраиваемой конфигурации и, наконец, очень специфическая (но и крайне удобная) система команд. Ассемблер SHARC напоминает язык программирования достаточно высокого уровня, ориентированный на разработку математических приложений (скажу так: упрощенный параллельный FORTRAN). Несмотря на относительно "короткий" битовый формат команды (69 битов), на ассемблере 21065 можно записать, например, следующую однотактную команду:

IF MS MRF=0; F6=(F2+F3)/2;

(если выполняется условие "MRF равно 0", то вычислить полусумму регистров F2 и F3 с размещением результата в регистре F6).

В итоге десятидолларовый чип выполняет весьма ресурсоемкую программу 1024-точечного комплексного быстрого преобразования Фурье за… 304 мкс (для сравнения попробуйте эту задачку в качестве теста своего Pentium).

Возвращаясь к ПК

Естественно, что в столь небольшом объеме статьи невозможно было провести углубленный обзор различных DSP. Но главная цель, думаю, достигнута — вы узнали, что есть на свете быстрые, удобные в программировании и дешевые процессоры.

А что касается вопроса о ПК — давайте забудем на секунду обо всех этих PCI- и AGP-шинах, графических акселераторах, монстроидальных операционных системах. Попытаемся представить себе функционально многопроцессорный компьютер (один процессор — CPU, второй — графико-оконная подсистема, третий — умная подсистема ввода/вывода), для которого существуют стандарты только на языки программирования, системные вызовы CPU-модуля и команды, которыми обмениваются отдельные модули (например, упакованная в 32-разрядное слово команда "открыть окно размером 1024 x x 1024 пиксела" или "нарисовать линию из текущей позиции в точку с координатами X, Y"). Набравшись наглости, представим себе, что операционная система нашего ПК вообще не имеет понятия о всяких там накопителях: жестких дисках, CD-ROM и прочих, зато знает, что такое ftp (реализация подобной вещи существует и называется Andrew Filesystem), соответственно — модуль ввода/вывода представляет собой "тонкий" ftp-сервер.

И наконец, соединим функциональные модули быстродействующим последовательным каналом (например, дешевым гигабитовым 1355, о котором я уже рассказывал). Если все получается (а оно именно получается), добавлю: все процессоры в этом ПК — DSP класса SHARC (или более мощные для производительных моделей). Получаем: открытую на уровне спецификации, развязывающую руки производителям (пусть конкурируют сколько угодно ВНУТРИ функциональных модулей, лишь бы не трогали НАРУЖНЫЕ межмодульные спецификации) архитектуру, изначально сетеориентированную (ftp-файловая система не делает различий между локальными и удаленными накопителями), очень производительную (даже при "скромных" вычислительных возможностях 21056L — вы не задумывались, сколько ресурсов "сжирают" выполняющиеся на одном процессоре ОС и графическая/оконная подсистема), дешевую, и, что главное, РЕАЛЬНО СПОСОБНУЮ СООТВЕТСТВОВАТЬ РАСТУЩИМ ТРЕБОВАНИЯМ МОБИЛЬНЫХ ПОЛЬЗОВАТЕЛЕЙ. Потому, что именно DSP "по зубам" такие задачки, как распознавание речи и визуальных образов, синтез речевых сообщений, быстрый поиск в базах данных, 3D-визуализация в реальном времени — почти все, на что способно наше сегодняшнее воображение.