94 www.finestreet.ru компоненты ЦСП
Процессоры Nexperia компании Philips Semiconductors:
мультимедиа — это современно, эффективно и просто
Андрей ДАНИЛОВ
В статье приведено краткое описание высокопроизводительных одноядерных медиапроцессоров PNX1300/1500/1700 семейства Nexperia.
Процессоры Nexperia появились в результате развития успешного семейства TriMedia1 компании Philips, в основе которых лежит архитектура векторного2 процессора обработки сигналов с очень длинным словом команд3 LIFE-1, первоначально разработанная Лабрузом и Славенбургом (J. Labrousse, G. Slavenburg) в 1987 году. К тому времени стало ясно, что процессорам общего назначения необходима очень большая вычислительная мощность для обработки сигналов в реальном масштабе времени. Такие приборы получались дорогими, им требовались специализированные микросхемы для поддержки операций ввода-вывода, и они потребляли много энергии4. Поэтому целью разработки универсального и экономичного медиапроцессора стало ускорение работы мультимедийных приложений как в автономном режиме, так и в вычислительных системах с микропроцессорами общего назначения.
Работа над процессором, названным TriMedia, в основном происходила в лаборатории компании Philips в Пало Альто (Калифорния). На архитектуру ядра было получено несколько патентов. Для моделирующей программы и транслятора было портировано большинство известных на тот период алгоритмов обработки видео и звука; был обновлен и отработан набор команд. В мае 1994 года руководство компании Philips приняло решение ввести процессор TriMedia в основную номенклатуру изделий. В 2000 году компания выделила лабораторию в самостоятельную фирму Trimedia Technologies Inc., но общий спад в полупроводниковой отрасли не принес коммерческого успеха новому
предприятию и вынудил в 2002 году вернуть подразделение TriMedia под крыло материнской компании.
Последний из процессоров семейства TriMedia, ТМ-1300, имеет 32-разрядное вычислительное ядро VLIW/SIMD со встроенной кэш-памятью команд (32 Кбайт) и данных (16 Кбайт), работающее с тактовой частотой до 166 МГц; векторный сопроцессор, реализующий алгоритм Хаффмана (для обработки MPEG-2); сопроцессор изображений, предназначенный для преобразования цветового пространства (YUV/RGB); 32-разрядный контроллер внешней памяти (до 64 Мбит SDRAM) и набор таймеров. Все встроенные периферийные устройства и сопроцессоры работают независимо от центрального процессора (ЦП) под управлением DMA5. Интерфейс PCI/XIO обеспечивает связь ТМ-1300 с шинами персональных компьютеров, а также стандартной микропроцессорной периферией (ПЗУ, ЭППЗУ и т. п.). Другие цифровые интерфейсы процессора: видеовход и видеовыход ITU-656, звуковые вход (2 канала) и выход (до 8 каналов) I2S, звуковой выход IEC958 (S/PDIF), управляющий порт I2C, отладочный порт JTAG, а также синхронный последовательный порт для подключения аналоговых и цифровых модемов.
На базе приборов семейства TriMedia были разработаны высококачественные изделия бытового и промышленного назначения. Процессор ТМ-1300 стал основой для прибора PNX1300 нового семейства Nexperia, который был выпущен осенью 2001 году. Основными отличиями PNX1300 стали пониженные напряжение питания и энергопотребление, увеличенные тактовые частоты ядра и основ-
ного ОЗУ (до 200 и 183 МГц соответственно), поддержка 16- и 32-разрядного интерфейса SDRAM объемом до 256 Мбит (16 Мбитх16). Также был упрощен порядок подачи напряжений питания, исправлены ошибки в работе интерфейса PCI и программы-загрузчика. В результате конкурентоспособность приборов повысилась. Программы, разработанные для процессоров TriMedia, для Nexperia необходимо перекомпилировать, хотя совместимость на уровне исходных кодов и библиотек API гарантирована.
Главной идеей, реализованной в семействе процессоров Nexperia, является гибкая вычислительная система, имеющая самостоятельную периферию и программно адаптируемая к выполняемому приложению. Цель — максимально приблизиться по скорости вычислений к заказной микросхеме (ASIC), архитектура которой разрабатывается с учетом выполняемой задачи. Чем точнее вычислительное устройство может быть настроено на класс приложений, тем больше его эффективность (по сравнению с микропроцессорами и ЦПОС общего назначения).
Система, реализованная на основе Nexperia, работает под управлением компактного ядра операционной системы реального времени (pSOS), исполняемого центральным процессором с очень длинным словом команд. Ключевые моменты в ее работе — разделение во времени работы ЦП и периферии и «общение» всех устройств через ОЗУ посредством быстрой шины и механизма DMA.
Центральный процессор ТМ32 (рис. 1) переключается от одной задачи к другой: декодирует видеокадр, затем несколько пакетов аудиопотока, возвращается к видеоданным, управляет портом PCI, привлекает графический сопроцессор для ресурсоемкой операции масштабирования изображения и т. д. За каждый такт ЦП может «озадачить» до 5 устройств одновременно, включая периферию и 27 конвейеризованных функциональных блоков6. Для успешного выполнения функций «дирижера» центральный процес-
1 На самом деле, в большом семействе процессоров Nexperia используется не только ядро TriMedia.
2 SIMD — Single Instruction Multiple Data — один поток команд, много потоков данных.
3 VLIW — Very Long Instruction Word. Позволяет за один такт выполнять несколько команд.
4 Ядро TriMedia (0,13-мкм), работающее с тактовой частотой 250 Мгц, затрачивает на выполнение одной команды энергию 0,2 нДж, процессор Pentium-4 Northwood (0,13-мкм), работающий с тактовой частотой 3 ГГц, затрачивает 13 нДж.
5 DMA — Direct Memory Access (прямой доступ в память).
6 30 блоков в новейшем ядре ТМ5250.
32-раз рядная шина перефирии
блок многопортовых регистров 128 слов х 32 бит
схема маршрутизации
кэш-память
данных
8 портов
кэш-память
сжатых
команд
8 портов
непоср. адр. непоср. адр. непоср. адр. непоср. адр. непоср. адр.
Ц-АПУ Ц-АЛУ Ц-АЛУ Ц-АЛУ Ц-АЛУ
сдвиг (3 типа) сдвиг (3 типа) ПТ-сравнение загр./хран. загр./хран.
ПТ-АЛУ В-умножение В-умножение ПТ-АЛУ
упр. логика (ветвление) упр. логика (ветвление) упр. логика (ветвление)
Ц/пт- умножение Ц/пт- умножение
В-АЛУ ПТ деление изв. корня В-АЛУ
декодер команд
Рис. 1. Упрощенная блок-схема центрального процессора TriMedia (ТМ32).
Условные обозначения: Ц — целочисленный, ПТ — плавающая точка, В — векторный, ПУ — программное управление
Таблица 1. Процессоры Nexperia
Прибор Ядро (ЦП), кэш-память команд/ данных, Кбайт Макс. тактовая частота ядра, МГц Макс. тактовая частота внешней памяти (ОЗУ), МГц Тип внешней памяти (ОЗУ) Макс. объем внешней памяти (ОЗУ), Мбайт Напряжение питания ЦП, В Технологический процесс КМОП, мкм Макс. потребляемая мощность, Вт Тип корпуса, размеры
PNX1300 ТМ-1300, 32/16 143 133 SDRAM 32 2,5 0,25 3,5 HBGA292, 27x27x1,75 мм
PNX1301 180 166 3,7
PNX1302 200 183 4,2
PNX1311 166 166 2,2 3,2
PNX1500 ТМ3260, 64/16 240 180 DDR SDRAM 256 1,2 0,18 н.д. BGA456, 27x27x1,75 мм
PNX1501 266 200 1,2 1,68
PNX1502 300 200 1,3 1,82
PNX1503 350 200 н.д.* н.д.
PNX1520 266 180 н.д. н.д.
PNX0190 ТМ3260, 64/16 266 180 DDR SDRAM 64 0,8 0,13 н.д. BGA456, 27x27x1,75 мм
PNX1700 ТМ5250, 64/16L1+128L2 400 200 DDR SDRAM 256 1,3 0,13 2,0 BGA456, 27x27x1,75 мм
PNX1701 450 200 2,0
PNX1702 500 200 2,0 тип./466 МГц
*н.д. — нет данных.
сор освобожден от некоторых операций, характерных для микропроцессоров общего назначения, например, трансляции адресов или вычислений с двойной точностью; из него исключены планировщик команд7 и суперска-лярная логика и тем самым снижены аппаратные затраты. Тем не менее набор команд ТМ32 включает все стандартные операции.
Внутренняя шина процессоров №хрепа также обеспечивает доступ к регистрам состояния и управления всех устройств и внешней периферии. Она состоит их двух раздельных 32-разрядных шин адреса и данных. Для обмена используется протокол групповой пересылки. Доступом к шине управляет центральный арбитр, к которому подведены линии запросов от каждого устройства, имеюще-
го возможность захвата шины (bus master). Алгоритмы работы арбитра шины могут зависеть от исполняемого приложения, как и выделяемая устройствам полоса пропускания. Каждый режим работы центрального арбитра гарантирует минимальную полосу пропускания и максимальное время ожидания для конкретного устройства. Это является одной из «изюминок» процессоров TriMedia/Nexperia, обеспечивающих ускорение работы мультимедийных приложений.
Перекрестный коммутатор (crossbar switch), используемый в VLIW-процессорах C67xx
и DM64x (ядро С6000) компании Texas Instruments с той же целью, не поддерживает гибкую систему приоритетов устройств, его простой механизм разрешения конфликтов при запросе доступа к шине работает по жестко обусловленной схеме. В этом случае необходимое быстродействие системы «добирается» количеством АЛУ, развитым кэшированием, мощностью сопроцессоров и высокой тактовой частотой (до 1 ГГц).
Другой непосредственный конкурент процессоров Nexperia — семейство BlackFin компании Analog Devices, поддерживает модифицированную гарвардскую архитектуру8 с иерархической моделью памяти9 и реализован путем «скрещивания» 32-разрядного RISC-процессора (содержащего два многоразрядных АЛУ) с двухканальным 16-разрядным аппаратным суммирующим умножителем (МАС) и 8-разрядным видеопроцессором (четыре АЛУ). Этот SIMD-процессор оптимизирован для одновременного исполнения двух простых 16-разрядных команд и одной многофункциональной 32-разрядной команды, загружающей работой блоки обработки сигналов. Такие команды наиболее часто появляются при компиляции кодов мультимедийных программ. Высокое быстродействие на видеоприложениях также обеспечивается оптимальным распределением потоков между быстрой 2-уровневой кэшпамятью (SRAM), расположенной в непосредственной близости от вычислительного ядра, и медленным внешним ОЗУ (SDRAM). Относительная простота ядра BlackFin в значительной мере компенсируется высокой тактовой частотой (до 750 МГц) и качественным компилятором.
Структурный запас производительности процессорного ядра Nexperia позволил расширить это семейство за счет новых приборов PNX1500 и PNX1700, в которые были добавлены новые периферийные устройства и функциональные возможности. Масштабируемость вычислительной системы позволяет гибко управлять производительностью и потребляемой мощностью процессоров при помощи тактовой частоты. Например, процессор PNX1700, работающий на частотах до 500 МГц, может одновременно кодировать и декодировать потоки видеосигналов высокого разрешения. Процессор PNX0190 с напряжением питания ядра 0,8 В (!)обеспе-чивает достаточное быстродействие для выполнения многих мультимедийных задач. В таблице 1 представлены основные параметры некоторых моделей одноядерных процессоров семейства Nexperia, выпускаемых в настоящее время.
На рис. 2 приведена упрощенная функциональная схема процессоров семейства Nexperia PNX1300/1500/1700 (см. табл. 1). Голубым цве-
7 Его роль выполняет компилятор, см. ниже.
8 Мультиплексирование команд и данных на внутренней шине ЦП.
9 Процессорное ядро ТпМе&а также использует иерархическую модель памяти.
96 компоненты ЦСП
16/32 бит SDRAM/DDR SDRAM
видеосигнал CCIR656, данные —
32
вход l2S 8 каналов
вход S/PDIF
локальная сеть Ethernet 10/100
I2C <-
27 МГц г^Г
Входы/выходы
общего
назначения
MMI
656
data
data
VIP
FGPI
Al
SPDI
802.3 MAC
l2C загрузка сброс тактовые частоты
16
входы/выходы
таймеры
счетчики
семафоры
Центральный процессор TriMedia (5-командное слово инструкций)
PNX1300/PNX1500/PNX1700
QVCP-LCD
FGPO
АО
SPDO
TMDBG
MBS
2-D DE
JF
VLD
DVD—CSS
PCI
видеосигнал CCIR656, ТВЧ, данные, VGA-монитор, 32 ЖК-дисплей ►
выход l2S -► 8 каналов
выход S/PDIF
портЛАЄ
33 МГц, 32-бит PCI 2.2
8/16 бит флэш-память и перефирия
Рис. 2. Функциональная схема процессоров Nexperia PNX1300 (кроме выделенных блоков), PNX1500 и PNX1700.
Условные обозначения: MMI — интерфейс основной памяти, VIP — входной видеопроцессор, FGPI — быстродействующий вход общего назначения,
FGPO — быстродействующий выход общего назначения, AI — вход звука, SPDI — вход S/PDIF (Dolby Digital), QVCP — процессор-формирователь видеосигнала,
АО — выход звука, SPDO — выход S/PDIF, VLD — декодер MPEG переменной длины, MBS — масштабирующее устройство для изображений, работающее на основе ОЗУ, 2-D DE — двухмерный графический ускоритель и контроллер DMA, DVD-CSS — дешифратор DVD, TMDBG — отладчик программ TriMedia
том выделены блоки, отсутствующие в процессоре PNX1300, который имеет отдельный последовательный интерфейс (не показан), но не оборудован скоростными параллельными портами ввода-вывода общего назначения. В процессорах PNX1500/1700 в качестве последовательных портов могут быть использованы выводы звуковых блоков AI, AO.
Блок DVD-CSS предназначен для опознавания и дешифрования информации, записанной на дисках DVD-Video. Привод DVD может быть подключен к встроенному IDE-контроллеру среднего быстродействия через интерфейс PCI.
В процессорах серий PNX1500 и PNX1700, которые полностью совместимы по выводам, функции цифровых видеопортов были расширены при помощи входных и выходных коммутаторов, что позволяет им ра-
ботать в качестве 8-, 16- или 32-разрядных скоростных (до 400 Мбайт/с) портов ввода-вывода общего назначения (FGPI/FGPO), используя развитый механизм DMA. Кроме того, при помощи этих портов можно построить многопроцессорную систему. Еще одним отличием процессоров этих серий является возможность работы контроллера MMI с памятью типа DDR SDRAM, что обеспечивает пропускную способность подсистемы памяти до 1,6 Гбайт/с.
Основными задачами, выполняемыми процессорами Nexperia одновременно, являются декодирование, обработка и отображение информации. При декодировании поток входных данных преобразуется в структуру, пригодную для обработки и хранения во внешней памяти. Декодирование может быть довольно простым, например, для видеопо-
тока ГГО-656, или сложным, если подается поток МРЕО-2. Обработка заключается в изменении структуры данных и их подготовке к отображению. При отображении данные извлекаются из памяти, и формируется выходной поток с требуемыми параметрами. Эта операция может быть простой, например, для звукового потока Р8, или весьма сложной, если синтезируется многооконное, масштабированное и многослойное изображение.
Все декодированные данные сохраняются во внешней памяти, даже если им не требуется дальнейшая обработка, поэтому между входными и выходными потоками нет прямого соответствия. Память работает в качестве буфера для развязки входных и выходных потоков данных. Такой режим работы позволяет использовать несколько структур данных, хранящихся в памяти, для форми-
Таблица 2. Разделение функций при обработке данных в процессорах Nexpeгia
Функция Средство Описание, примечание
Масштабирование изображения VIP, MBS, QVCP VIP может выполнять понижение горизонтального разрешения в процессе ввода данных. MBS — однопроходное повышение и понижение горизонтального и вертикального разрешения, комбинированное с линейным и нелинейным преобразованием формата изображения и типа развертки (чересстрочная, прогрессивная) с использованием нескольких алгоритмов. QVCP способен осуществлять панорамное горизонтальное масштабирование в процессе вывода
Преобразование форматов видеосигналов, включая цветовое пространство VIP, MBS, QVCP MBS преобразует любой пиксельный формат в любой другой формат. VIP формирует, а QVCP может считывать различные видеоформаты
Коррекция гистограммы и соотношения цветов, расширение уровней черного, увеличение резкости яркостного сигнала (LTI, CDS, HDP) QVCP Выполняются в процессе вывода
Формирование слоев с альфа-смешением (256 уровней), цветовая рирпроекция QVCP, 2-D DE 2-D DE может осуществлять цветовую заливку, трехкомандную поразрядную обработку, фильтрацию спектра наложения (anti-aliasing)
Масштабирование видео и графики QVCP Высококачественное панорамное масштабирование для видеосигналов, линейная интерполяция для графики
Гамма-коррекция, управление яркостью и цветовой насыщенностью QVCP Выполняются в процессе вывода
Кодирование MPEG-4 программное Поддерживаются различные профили стандарта
Кодирование MPEG-2 программное Поддерживаются различные версии стандарта
Преобразование частоты вертикальной и горизонтальной развертки видеосигналов, преобразование форматов VLD, программное VLD используется для анализа и разбора на структуры видеопотока MPEG-2. Программные средства формируют новый поток MPEG-2 с другой скоростью
Декодирование сжатых звуковых форматов Dolby Digital, передискретизация, микширование программное Выполняются в процессе ввода
рования единого выходного потока. При этом используется механизм временных меток (time-stamping) для определения порядка использования конкретных структур в процессе вывода данных.
Функции обработки данных разделяются на аппаратные, реализуемые соответствующими функциональными блоками всего процессора, и программные, выполняемые с участием его вычислительного ядра. В таблице 2 приведены примеры такого разделения. Обозначения блоков соответствуют рис. 2.
Интерфейс основной памяти MMI, кроме соединения внутренних блоков процессора скоростной шиной с внешней памятью, выполняет функции двухпортового арбитра, гарантируя полосу пропускания и время задержки для ЦП и блоков DMA, включая внешние устройства, подключенные к шине PCI в ведущем режиме. Программируемый списочный алгоритм разрешения конфликтов используется для резервирования полосы пропускания функциональными блоками и ЦП при выполнении определенного приложения.
Центральный процессор наделен способностью разделять длинные DMA-конвейеры на определенное число блоков. С другой стороны, в зависимости от используемого в данный момент механизма разрешения конфликтов, поток DMA может иметь более высокий приоритет, чем поток ЦП, если последний превзошел установленный предел загрузки памяти. Динамическое, адаптивное управление приоритетами является важным фактором повышения производительности системы и максимального использования пропускной способности внешней памяти.
Гибкость процессоров Nexperia, их уникальная способность тонкой настройки на исполняемое приложение предъявляют особые требования к инструментальному программному обеспечению. На рис. 3 изображена блок-схема компилятора-отладчика для се-
мейства ТгМе^а/№хреиа. Планировщик команд интегрирован с распределителем регистров, поддерживает защищенное исполнение команд, конвейерную организацию и управление функциональными блоками ЦП и системы в целом. Ведется статистика команд для последующего анализа и настройки. Обратная связь, включая итеративную оптимизацию исходного Си-кода, позволяет в несколько раз повысить эффективность выходного кода (в смысле времени исполнения приложения) за счет эффективного распараллеливания на уровне команд и снижения числа обращений к регистрам и ОЗУ. Например, в скомпилированном коде задачи преобразования 1РЕО удается реализовать до 4 одинаковых команд (в 5-командном слове) и получить эффективность использования центрального процессора 64%.
Новейшее процессорное ядро ТМ5250 устроено таким образом, что компилятор пу-
тем сочетания нескольких простых команд может реализовать специальную команду, которая порождает до 12 стандартных микропроцессорных команд. В этом случае одно длинное слово «команд» может исполнить до 40 стандартных операций за один такт. В ядро также были добавлены новые команды, ускоряющие алгоритмы декодирования потоков Н.264 и WMV9. Перекомпиляция кода, ранее разработанного для процессоров серии PNX1500, для приборов PNX1700 дает значительный прирост производительности без повышения тактовой частоты. Это предоставляет разработчикам дополнительный резерв снижения потребляемой мощности, также как и для повышения быстродействия.
Динамическое управление потребляемой мощностью Philips V2F, предусмотренное в сериях PNX1500/1700, позволяет регулировать энергопотребление при помощи подстройки тактовой частоты и напряжения питания ядра под запросы исполняемого приложения. Когда процессоры сконфигурированы для работы с внешним программируемым стабилизатором
напряжения, их генератор тактовой частоты, также управляемый программным способом, может понижать быстродействие (синхронно с напряжением питания), уменьшая потребляемую мощность при выполнении определенных задач. Например, для декодирования звукового потока MPEG-1 Layer 3 (МР3) достаточно тактовой частоты ЦП около 30 МГц.
Дополнительной возможностью оптимизации мощности, потребляемой процессорами Nexperia, является выборочное программное отключение питания функциональных блоков, не участвующих в выполнении приложения. В режиме глобального программного отключения питания тактовые сигналы не подаются на соответствующие блоки, а внешняя память SDRAM переходит в режим
анализ
данных
код С/С++
4
компилятор
ядра
I
планировщик
команд
I
компоновщик ±—
процессор
структура
обработки
метаданных
симулятор
Рис. 3. Архитектура инструментального программного обеспечения Nexperia
поддерживающей регенерации. Питание всех периферийных блоков, кроме таймеров, шины I2C, интерфейса PCI и кэш-памяти, выключается. Некоторые периферийные устройства — по выбору программиста — могут не участвовать в режиме глобального отключения.
За годы существования процессоров TriMedia компанией Philips и сторонними фирмами были разработаны многочисленные библиотеки приложений на языке C/C++. Эти стандартные программы оптимизированы для ядра ТМ32 и, среди прочих, содержат следующие функциональные модули: кодирование-декодирование MPEG-2, MPEG-1, MPEG-4 (SP, MVP, ASP), H.263, H.264, H32x, MPEG-1 Layer 2 (MP2), AAC, G,7xx; декодирование JPEG, JPEG2000, GIF, BMP, PNG, VMV9 720P, VMA9, MPEG-2 HD, DivX-3, -4, -5, -6, -HD, DV, DTS, Dolby Pro Logic, Dolby AC-3; протоколы TCP/IP, v.90, IEEE 802.3 (Ethernet), Universal PnP и др. Полный, постоянно обновляемый список можно найти на Интернет-странице http://www.semiconductors.philips.com/ nexperia/application-libraries. Для всесторонней поддержки разработчиков служит новый сайт www.tcshelp.com.
Компания Momemtum Data Systems (www.mds.com) предлагает демонстрационные платы в стандарте PCI, а также системный блок MBE development platform с соответствующим инструментальным ПО (NDK2/NDK4), предназначенные для разработки устройств на базе процессоров PNX1300/1500.
Представленные в статье процессоры семейства Nexperia являются многофункциональными, высокопроизводительными, экономичными и простыми в применении медиапроцессорами. На их основе можно быстро и эффективно реализовать множество современных бытовых и промышленных изделий, востребованных рынком. ■
Литература
1. PNX1300 Series Media Processors, Preliminary Specification, Philips Semiconductors, February 15, 2002.
2. PNX15xx Series Data Book, Volume 1 of 1, Connected Media Processor, Rev.2, Philips Semiconductors, December 1, 2004.
3. Nexperia PNX1700, Connected media processor, Philips Semiconductors, March 2005.
4. Getting Started with PNX1500, Volume 1, NDK 4.1, User Manual v.4.1, Philips Semiconductors, March 8, 2004.
5. NDK Software Architecture, Volume 2, NDK 4.1, User Manual v.4.1, Philips Semiconductors, March 26, 2004.
6. Goossens K. The tension between resource sharing and predictable performance in real-time SoCs, Philips Research, MEDEA+SpeAC workshop, 20-3-2004.
7. Stravers P. Homogeneous multiprocessing for the masses, Philips Research, 2005.
8. Suijkerbuijk S. Performance Evaluation of Interleaved Multithreading in VLIW Architectures, Computer Engineering, TU Delft, 2004.
9. Wolf P. van der. Parallel Programming Models for Heterogeneous MPSoCs, Philips Research, MPSoC'05, July 11-15, 2005.
10. Vissers K. A., Mirolo S. The Performance and Power consumption of the TriMedia TM32 VLIW media processor core, Trimedia Technologies Inc., 2001.
11. Getting Started with Blackfin Processors. Revision 2.0, Analog Devices, September 2005.
12. DSP Selection Guide. 3Q 2005, SSDV004Q, Texas Instruments.
13. TMS320DM642 Video/Imaging Fixed-Point Digital Signal Processor. Texas Instruments, SPRS200J, 2005.