1. Программирование обработки
видео на процессорах
NXP TriMedia
Марат Арсаев
Video Group
CS MSU Graphics & Media Lab
19.03.09 1
2. Only for
Maxus
Содержание доклада
Введение
Архитектура систем PNX1x00
Оптимизация обработки видео
Пример фильтра
Выводы
2
CS MSU Graphics & Media Lab (Video Group)
3. Only for
Maxus Введение
Процессоры для обработки видео и аудио
3
CS MSU Graphics & Media Lab (Video Group)
4. Only for
Maxus
Введение
TriMedia — чипы для встроенных систем
Идеально подходят для low-power систем
Гибок и легко программируем
Расширенные встроенные средства
Широко используется во всем мире
4
CS MSU Graphics & Media Lab (Video Group)
5. Only for
Maxus
Содержание доклада
Введение
Архитектура систем PNX1x00
Оптимизация обработки видео
Пример фильтра
Выводы
5
CS MSU Graphics & Media Lab (Video Group)
6. Only for
Maxus Архитектура систем
PNX1x00
SDRAM
MAIN MEMORY
Изменение формата на лету INTERFACE
VIDEO IN VIDEO OUT
Использование встроенных
вспомогательных средств:
AUDIO IN AUDIO OUT
скейлер FRC
TIMERS SPDIF OUT
SYNCHRONOUS
сеть
I2C INTERFACE
SERIAL INTERFACE
видео декодеры
IMAGE
VLD COPROCESSOR
COPROCESSOR
нестандартные выходы INSTR PCI/XIO TO PCI/XIO
CACHE INTERFACE BUS
VLIW CPU
DATA
CACHE
INTERNAL BUS (DATA HIGHWAY)
6
CS MSU Graphics & Media Lab (Video Group)
7. Only for
Maxus Архитектура
чипов TM
SDRAM
Arbiter
224-bit Instruction Bus
Peripherals
TriMedia CPU Core
DSP-CPU
32-64KB
VLIW Instruction
Instruction Cache
27-40 Functional Units
128 16-128KB Peripherals
32-bit
registers
Data Cache
64-bit Data Highway
1-2 R/W*32-bit Data Bus 7
CS MSU Graphics & Media Lab (Video Group)
8. Only for
Maxus Архитектура CPU
Архитектура VLIW процессра:
5 32-битных слотов операций
каждая операция обращается к необходимым ей ФЭ
ФЭ обращаются к массиву регистров
8
CS MSU Graphics & Media Lab (Video Group)
9. Only for
Maxus Архитектура CPU
Register file (128 x 32 bit registers)
15 read and 5 write ports
Reg0 всегда 0
R R R R R R R R R R R R R R R W W W W W
Reg1 всегда 1
Reg2 — Reg127 общего назначения
Cross Bar
guard
src1src2result
Functional Functional Functional Functional
unit unit ....... . unit unit
1 2 X-1 X
Instruction cache
Instruction
issue Issue slot Issue slot Issue slot Issue slot Issue slot
register 1 2 3 4 5
9
CS MSU Graphics & Media Lab (Video Group)
10. Only for
Maxus Архитектура CPU
От версии к версии меняются:
набор, количество и параметры ФЭ
набор встроенных препроцессоров:
скейлер s0
интерполятор s1
d0
поддерживаемые декодеры
Н264 s0
MPEG2, MPEG4 s1
аудио кодеки d0
10
CS MSU Graphics & Media Lab (Video Group)
11. Only for
Maxus Поддерживаемые
операции
Инструкция – константа (не нужно обращаться в кэш)
Супероперации (super_ld32, super_quadumedian, и т.д.)
Целочисленная арифметика :
+- , логические операции, сравнения, abs, и т.д.
Pack, merge, и т.д.
Сдвиги:
<<, >>, rol, и т.д.
Специфические операции сборки векторов ( abcd %
efgh > cdef)
11
CS MSU Graphics & Media Lab (Video Group)
12. Only for
Maxus Поддерживаемые
операции
DSP ALU:
Clipping operations
SIMD операции
a b c d e f g h a+e b+f c+g d+h
Quadadd( , ) =>
Motion Estimation операции
DSP MUL:
SIMD умножения над 8- и 16-битными операндами
FIR инструкции h
a b c d e f g
над 8- и 16-битными данными
Ifir8ii( , ) =>
12
CS MSU Graphics & Media Lab (Video Group)
14. Only for
Maxus
Кэш данных TM3260
До 5 операций регистр-регистр
1 такт
127 126 0
Файл регистров
до трех тактов Обмен в обе стороны
16 Кбайт Кэш данных
до 40 тактов Обмен между основной
Памятью и шиной
x Мбайт SDRAM
14
CS MSU Graphics & Media Lab (Video Group)
15. Only for
Maxus
Управление кэшем
Кэш — одна из самых узких и в то же время
гибких мест процессоров TriMedia
Начиная с процессора 3270 кэш явно
программируем
При неэффективном программировании
процессор может простаивать до 90% времени
15
CS MSU Graphics & Media Lab (Video Group)
16. Only for
Maxus
Управление кэшем
Встроенная реализация пре-
кэширования: необходимо верно
выставить начало, конец региона,
текущий указатель и размер
выборки кэша
16
CS MSU Graphics & Media Lab (Video Group)
17. Only for
Maxus
Содержание доклада
Введение
Архитектура систем PNX1x00
Оптимизация обработки видео
Пример фильтра
Выводы
17
CS MSU Graphics & Media Lab (Video Group)
18. Only for
Maxus Стандартные
оптимизации
Разворачивание циклов, использование look-up
tables
Использование встроенных и SIMD операций
Эффективные выборки из кэша
18
CS MSU Graphics & Media Lab (Video Group)
19. Only for
Пример оптимизаций
Maxus
Развертка циклов позволяет компилятору автоматически
распараллелить код
19
CS MSU Graphics & Media Lab (Video Group)
20. Only for
Пример оптимизаций
Maxus
Используем встроенные операции: ume8uu
20
CS MSU Graphics & Media Lab (Video Group)
21. Only for
Пример оптимизаций
Maxus
Новый код:
21
CS MSU Graphics & Media Lab (Video Group)
22. Only for
Пример оптимизаций
Maxus
Разворчиваем цикл дальше:
22
CS MSU Graphics & Media Lab (Video Group)
23. Only for
Пример оптимизаций
Maxus
Итого операций:
Было:
16*16*(разность + abs + суммирование) = 768 операций
Стало:
8*(8 МЕ операций + 8 суммирований) = 128 операций
Учитывая развертку циклов, для последней реализации
будет сгенерирован весьма эффективный код
23
CS MSU Graphics & Media Lab (Video Group)
24. Only for
Пример оптимизаций
Maxus
Возможно уточнение при
помощи полупиксельной
интерполяции, используя
funshift, mergeodd, bilinear
— благодоря этому операции
ведутся над регистрами, без
обращения в кэш
24
CS MSU Graphics & Media Lab (Video Group)
25. Only for
Maxus
Содержание доклада
Введение
Архитектура систем PNX1x00
Оптимизация обработки видео
Пример фильтра
Выводы
25
CS MSU Graphics & Media Lab (Video Group)
26. Bilateral denoising on
Only for
Maxus
TM3260
Рассмотрим цифровую камеру и попробуем
запрограммировать Bilateral denoising на
встроенном чипе TM3260
Bayer Bilateral Denoising on TriMedia3270
H.Phelippeau, M.Akil, Universite Paris-Est, Labinfo, Noisy-le-
Grand Cedex France, 2007 26
CS MSU Graphics & Media Lab (Video Group)
27. Bilateral denoising on
Only for
Maxus
TM3260
Будем работать с Байесовской
матрицей цветов
x — координата текущего пикселя
у — координата обрабатываемого
пикселя
u(x) — соответствующее значение
пикселя
С(х) — нормализующая константа
β — окно фильтра
h, ρ — Гауссовское распределение 27
CS MSU Graphics & Media Lab (Video Group)
28. Bilateral denoising on
Only for
Maxus
TM3260
Окно фильтра для зеленого 7х7, для красного и синего - 9х9
28
CS MSU Graphics & Media Lab (Video Group)
29. Only for
Maxus
Прямая реализация
Так не программируют даже на PC!
29
CS MSU Graphics & Media Lab (Video Group)
30. Only for
Maxus
Look-up tables
Используя
симметричность
заводим таблицу на
8*255 float
значений
30
CS MSU Graphics & Media Lab (Video Group)
31. Only for
Maxus
Loop unrolling
Развернем внутренний цикл в 4 раза
— такая простая операция на VLIW
процессорах высоко повышает
эффективность
31
CS MSU Graphics & Media Lab (Video Group)
32. Only for
Maxus
Custom operations
В таком представлении удобно использовать встроенные функции
ТМ векторной обработки данных — super_ld32 и dspuquadabssub.
32
CS MSU Graphics & Media Lab (Video Group)
33. Only for
Maxus
Custom operations
Результат — уменьшение загрузки более чем в два раза!
33
CS MSU Graphics & Media Lab (Video Group)
34. Only for
Maxus
Сравнение
Простейшая оптимизация дает прирост почти в
100 раз
34
CS MSU Graphics & Media Lab (Video Group)
35. Проблемы дальнейшей
Only for
Maxus
оптимизации
Загрузка подряд идущих 9 байтов требует двух
операций super_ld32. Попробуем использовать
окно 8х8
Половина загруженных значений не
используются — изменим реализацию для
обработки всех цветов за раз
35
CS MSU Graphics & Media Lab (Video Group)
36. Only for
Maxus
Оптимизация загрузок
Выход — считать весь центральный блок за итерацию в окне 8х8
36
CS MSU Graphics & Media Lab (Video Group)
37. Only for
Maxus
Результаты
Уменьшение окна до 6х6 позволило авторам выйграть в скорости
еще в 1.3 раза.
Даже малейшие оптимизации сильно влияют на скорость работы
алгоритма благодаря компилятору
37
CS MSU Graphics & Media Lab (Video Group)
38. Only for
Maxus
Выводы
Процессоры TriMedia — мощное и удобное
средство программирования обработки видео
При хорошем уровне разроботки можно добиться
высокой производительности
NXP предлагает встроенный программный пакет
ME/MC, кодеровдекодеров, фильтров с которыми
можно соревноваться
38
CS MSU Graphics & Media Lab (Video Group)
39. Only for
Maxus
Вопросы
?
39
CS MSU Graphics & Media Lab (Video Group)
40. Only for
Maxus
Список литературы
"TriMedia CPU Optimization" Torsten Fink, Manoj Koul and Chuck Peplinski,TM
Center of Excellence, August 2006
"TriMedia Optimizations by Hand" Torsten Fink, Manoj Koul and Chuck
Peplinski, TM Center of Excellence, August 2006
"Bayer Bilateral Denoising on TriMedia3270" H.Phelippeau, M.Akil, Universite
Paris-Est, Labinfo, Noisy-le-Grand Cedex France, 2007
"TM3260 Architecture Databook" Koninklijke Philips Electronics N.V. 2003.
"PNX15xx Series Data Book" Koninklijke Philips Electronics N.V. 2006.
"Motion Estimation Performance of the TM3270 Processor" Jan-Willem van
de Waerdt, Jean-Paul van Itegem, Gerrit A.Slavenburg, Philips Semiconductors,
San Jose, CA, USA, NVIDIA Corporation Santa Clara, CA, USA, 2005
40
CS MSU Graphics & Media Lab (Video Group)