Процессоры Nexperia компании Philips Semiconductors: мультимедиа – это современно, эффективно и просто
В статье приведено краткое описание высокопроизводительных одноядерных медиапроцессоров PNX1300/1500/1700 семейства Nexperia.
Процессоры Nexperia появились в результате развития успешного семейства TriMedia компании Philips, в основе которых лежит архитектура векторного процессора обработки сигналов с очень длинным словом команд LIFE-1, первоначально разработанная Лабрузом и Славенбургом (J. Labrousse, G. Slavenburg) в 1987 году. К тому времени стало ясно, что процессорам общего назначения необходима очень большая вычислительная мощность для обработки сигналов в реальном масштабе времени. Такие приборы получались дорогими, им требовались специализированные микросхемы для поддержки операций ввода-вывода, и они потребляли много энергии. Поэтому целью разработки универсального и экономичного медиапроцессора стало ускорение работы мультимедийных приложений как в автономном режиме, так и в вычислительных системах с микропроцессорами общего назначения.
Работа над процессором, названным 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) и набор таймеров. Все встроенные периферийные устройства и сопроцессоры работают независимо от центрального процессора (ЦП) под управлением DMA. Интерфейс 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 конвейеризованных функциональных блоков. Для успешного выполнения функций «дирижера» центральный процессор освобожден от некоторых операций, характерных для микропроцессоров общего назначения, например, трансляции адресов или вычислений с двойной точностью; из него исключены планировщик команд и суперскалярная логика и тем самым снижены аппаратные затраты. Тем не менее набор команд ТМ32 включает все стандартные операции.

Внутренняя шина процессоров Nexperia также обеспечивает доступ к регистрам состояния и управления всех устройств и внешней периферии. Она состоит их двух раздельных 32-разрядных шин адреса и данных. Для обмена используется протокол групповой пересылки. Доступом к шине управляет центральный арбитр, к которому подведены линии запросов от каждого устройства, имеющего возможность захвата шины (bus master). Алгоритмы работы арбитра шины могут зависеть от исполняемого приложения, как и выделяемая устройствам полоса пропускания. Каждый режим работы центрального арбитра гарантирует минимальную полосу пропускания и максимальное время ожидания для конкретного устройства. Это является одной из «изюминок» процессоров TriMedia/Nexperia, обеспечивающих ускорение работы мультимедийных приложений.
Перекрестный коммутатор (crossbar switch), используемый в VLIW-процессорах C67xx и DM64x (ядро С6000) компании Texas Instruments с той же целью, не поддерживает гибкую систему приоритетов устройств, его простой механизм разрешения конфликтов при запросе доступа к шине работает по жестко обусловленной схеме. В этом случае необходимое быстродействие системы «добирается» количеством АЛУ, развитым кэшированием, мощностью сопроцессоров и высокой тактовой частотой (до 1 ГГц).
Другой непосредственный конкурент процессоров Nexperia — семейство BlackFin компании Analog Devices, поддерживает модифицированную гарвардскую архитектуру с иерархической моделью памяти и реализован путем «скрещивания» 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). Голубым цветом выделены блоки, отсутствующие в процессоре 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 одновременно, являются декодирование, обработка и отображение информации. При декодировании поток входных данных преобразуется в структуру, пригодную для обработки и хранения во внешней памяти. Декодирование может быть довольно простым, например, для видеопотока ITU-656, или сложным, если подается поток MPEG-2. Обработка заключается в изменении структуры данных и их подготовке к отображению. При отображении данные извлекаются из памяти, и формируется выходной поток с требуемыми параметрами. Эта операция может быть простой, например, для звукового потока I2S, или весьма сложной, если синтезируется многооконное, масштабированное и многослойное изображение.
Все декодированные данные сохраняются во внешней памяти, даже если им не требуется дальнейшая обработка, поэтому между входными и выходными потоками нет прямого соответствия. Память работает в качестве буфера для развязки входных и выходных потоков данных. Такой режим работы позволяет использовать несколько структур данных, хранящихся в памяти, для формирования единого выходного потока. При этом используется механизм временных меток (time-stamping) для определения порядка использования конкретных структур в процессе вывода данных.
Функции обработки данных разделяются на аппаратные, реализуемые соответствующими функциональными блоками всего процессора, и программные, выполняемые с участием его вычислительного ядра. В таблице 2 приведены примеры такого разделения. Обозначения блоков соответствуют рис. 2.

Интерфейс основной памяти MMI, кроме соединения внутренних блоков процессора скоростной шиной с внешней памятью, выполняет функции двухпортового арбитра, гарантируя полосу пропускания и время задержки для ЦП и блоков DMA, включая внешние устройства, подключенные к шине PCI в ведущем режиме. Программируемый списочный алгоритм разрешения конфликтов используется для резервирования полосы пропускания функциональными блоками и ЦП при выполнении определенного приложения.
Центральный процессор наделен способностью разделять длинные DMA-конвейеры на определенное число блоков. С другой стороны, в зависимости от используемого в данный момент механизма разрешения конфликтов, поток DMA может иметь более высокий приоритет, чем поток ЦП, если последний превзошел установленный предел загрузки памяти. Динамическое, адаптивное управление приоритетами является важным фактором повышения производительности системы и максимального использования пропускной способности внешней памяти.
Гибкость процессоров Nexperia, их уникальная способность тонкой настройки на исполняемое приложение предъявляют особые требования к инструментальному программному обеспечению. На рис. 3 изображена блок-схема компилятора-отладчика для семейства TriMedia/Nexperia. Планировщик команд интегрирован с распределителем регистров, поддерживает защищенное исполнение команд, конвейерную организацию и управление функциональными блоками ЦП и системы в целом. Ведется статистика команд для последующего анализа и настройки. Обратная связь, включая итеративную оптимизацию исходного Си-кода, позволяет в несколько раз повысить эффективность выходного кода (в смысле времени исполнения приложения) за счет эффективного распараллеливания на уровне команд и снижения числа обращений к регистрам и ОЗУ. Например, в скомпилированном коде задачи преобразования JPEG удается реализовать до 4 одинаковых команд (в 5-командном слове) и получить эффективность использования центрального процессора 64%.

Новейшее процессорное ядро ТМ5250 устроено таким образом, что компилятор путем сочетания нескольких простых команд может реализовать специальную команду, которая порождает до 12 стандартных микропроцессорных команд. В этом случае одно длинное слово «команд» может исполнить до 40 стандартных операций за один такт. В ядро также были добавлены новые команды, ускоряющие алгоритмы декодирования потоков Н.264 и WMV9. Перекомпиляция кода, ранее разработанного для процессоров серии PNX1500, для приборов PNX1700 дает значительный прирост производительности без повышения тактовой частоты. Это предоставляет разработчикам дополнительный резерв снижения потребляемой мощности, также как и для повышения быстродействия.
Динамическое управление потребляемой мощностью Philips V2F, предусмотренное в сериях PNX1500/1700, позволяет регулировать энергопотребление при помощи подстройки тактовой частоты и напряжения питания ядра под запросы исполняемого приложения. Когда процессоры сконфигурированы для работы с внешним программируемым стабилизатором напряжения, их генератор тактовой частоты, также управляемый программным способом, может понижать быстродействие (синхронно с напряжением питания), уменьшая потребляемую мощность при выполнении определенных задач. Например, для декодирования звукового потока MPEG-1 Layer 3 (МР3) достаточно тактовой частоты ЦП около 30 МГц.
Дополнительной возможностью оптимизации мощности, потребляемой процессорами Nexperia, является выборочное программное отключение питания функциональных блоков, не участвующих в выполнении приложения. В режиме глобального программного отключения питания тактовые сигналы не подаются на соответствующие блоки, а внешняя память SDRAM переходит в режим поддерживающей регенерации. Питание всех периферийных блоков, кроме таймеров, шины I2C, интерфейса PCI и кэш-памяти, выключается. Некоторые периферийные устройства — по выбору программиста — могут не участвовать в режиме глобального отключения.
За годы существования процессоров TriMedia компанией Philips и сторонними фирмами были разработаны многочисленные библиотеки приложений на языке С/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 являются многофункциональными, высокопроизводительными, экономичными и простыми в применении медиапроцессорами. На их основе можно быстро и эффективно реализовать множество современных бытовых и промышленных изделий, востребованных рынком.
Литература
- PNX1300 Series Media Processors, Preliminary Specification, Philips Semiconductors, February 15, 2002.
- PNX15xx Series Data Book, Volume 1 of 1, Connected Media Processor, Rev.2, Philips Semiconductors, December 1, 2004.
- Nexperia PNX1700, Connected media processor, Philips Semiconductors, March 2005.
- Getting Started with PNX1500, Volume 1, NDK 4.1, User Manual v.4.1, Philips Semiconductors, March 8, 2004.
- NDK Software Architecture, Volume 2, NDK 4.1, User Manual v.4.1, Philips Semiconductors, March 26, 2004.
- Goossens К. The tension between resource sharing and predictable performance in real-time SoCs, Philips Research, MEDEA+SpeAC workshop, 20-3-2004.
- Stravers P. Homogeneous multiprocessing for the masses, Philips Research, 2005.
- Suijkerbuijk S. Performance Evaluation of Interleaved Multithreading in VLIW Architectures, Computer Engineering, TU Delft, 2004.
- Wolf P. van der. Parallel Programming Models for Heterogeneous MPSoCs, Philips Research, MPSoC’05, July 11-15, 2005.
- Vissers K. A., Mirolo S. The Performance and Power consumption of the TriMedia TM32 VLIW media processor core, Trimedia Technologies Inc., 2001.
- Getting Started with Blackfin Processors. Revision 2.0, Analog Devices, September 2005.
- DSP Selection Guide. 3Q 2005, SSDV004Q, Texas Instruments.
- TMS320DM642 Video/Imaging Fixed-Point Digital Signal Processor. Texas Instruments, SPRS200J, 2005.