Обзор процессоров Phillips Nexperia

40
Программирование обработки видео на процессорах NXP TriMedia Марат Арсаев Video Group CS MSU Graphics & Media Lab 19.03.09 1

description

 

Transcript of Обзор процессоров Phillips Nexperia

Page 1: Обзор процессоров Phillips Nexperia

Программирование обработки видео на процессорах

NXP TriMedia

Марат Арсаев

Video GroupCS MSU Graphics & Media Lab

19.03.09 1

Page 2: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

2

Содержание доклада

Введение

Архитектура систем PNX1x00

Оптимизация обработки видео

Пример фильтра

Выводы

Page 3: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

3

Введение

Процессоры для обработки видео и аудио

Page 4: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

4

Введение

TriMedia — чипы для встроенных систем

Идеально подходят для low-power систем

Гибок и легко программируем

Расширенные встроенные средства

Широко используется во всем мире

Page 5: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

5

Содержание доклада

Введение

Архитектура систем PNX1x00

Оптимизация обработки видео

Пример фильтра

Выводы

Page 6: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

6

Архитектура системPNX1x00

MAIN MEMORY

INTERFACE

SDRAM

VIDEO OUT

AUDIO OUT

SPDIF OUT

SYNCHRONOUS

SERIAL INTERFACE

IMAGE

COPROCESSOR

PCI/XIO

INTERFACE

INTERNAL BUS (DATA HIGHWAY)

TO PCI/XIO

BUS

VIDEO IN

AUDIO IN

TIMERS

I2C INTERFACE

VLD COPROCESSOR

VLIW CPU

INSTR

CACHE

DATA

CACHE

Изменение формата на лету

Использование встроенных вспомогательных средств:

скейлер \ FRC

сеть

видео декодеры

нестандартные выходы

Page 7: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

7

Архитектурачипов TM

SDRAM

DSP-CPU

32-64KB

Instruction Cache

16-128KB

Data Cache

TriMedia CPU Core

64-bit Data Highway

224-bit Instruction Bus

1-2 R/W*32-bit Data Bus

128

32-bit

registers

Arbiter

Peripherals

Peripherals

VLIW Instruction

27-40 Functional Units

Page 8: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

8

Архитектура CPU

Архитектура VLIW процессра:

5 32-битных слотов операций

каждая операция обращается к необходимым ей ФЭ

ФЭ обращаются к массиву регистров

Page 9: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

9

Архитектура CPU

Register file (128 x 32 bit registers)15 read and 5 write ports

Functionalunit

1

Functionalunit

2

Functionalunit

X

FunctionalunitX-1

. . . . . . . .

Issue slot 1

Issue slot 2

Issue slot 3

Issue slot 4

Issue slot 5

Instructionissue

register

Instruction cache

Cross Bar

R R R R R R R R R R R R R R R W W W W W

guardsrc1src2result

Reg0 всегда 0

Reg1 всегда 1

Reg2 — Reg127 общего назначения

Page 10: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

10

Архитектура CPU

От версии к версии меняются:

набор, количество и параметры ФЭ

набор встроенных препроцессоров:

скейлер

интерполятор

поддерживаемые декодеры

Н264

MPEG2, MPEG4

аудио кодеки

s0

s1

d0

s0

s1

d0

Page 11: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

11

Поддерживаемые операции

Инструкция – константа (не нужно обращаться в кэш)

Супероперации (super_ld32, super_quadumedian, и т.д.)

Целочисленная арифметика :

+\- , логические операции, сравнения, abs, и т.д.

Pack, merge, и т.д.

Сдвиги:

<<, >>, rol, и т.д.

Специфические операции сборки векторов ( abcd % efgh > cdef)

Page 12: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

12

Поддерживаемые операции

DSP ALU:

Clipping operations

SIMD операции

Quadadd( , ) => Motion Estimation операции

DSP MUL:

SIMD умножения над 8- и 16-битными операндами

FIR инструкции над 8- и 16-битными данными

Ifir8ii( , ) => a*e+b*f+c*g+d*h

a b c d

d+ha+e b+f c+ga b c d

e f g h

e f g h

Page 13: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

13

Таблица задержек ФЭ ТМ3260

Functional Unit Quantity

Latency /

Delay Recovery

constant 5 1 1 1 2 3 4 5

integer ALU 5 1 1 1 2 3 4 5

load/store 2 3 1 4 5

DSP ALU 3 2 1 1 3 5

DSP MUL 2 3 1 2 3

shifter 5 1 1 1 2 3 4 5

branch 3 3 1 2 3 4

int/float mul 2 3 1 2 3

float ALU 2 3 1 1 4

float compare 1 1 1 3

float sqrt/div 1 17 16 2

Issue Slots

Page 14: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

14

Кэш данных TM3260

0126

Кэш данных

127Файл регистров

Обмен в обе стороны

16 Кбайт

SDRAMx Мбайт

Обмен между основной

Памятью и шинойдо 40 тактов

До 5 операций регистр-регистр1 такт

до трех тактов

Page 15: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

15

Управление кэшем

Кэш — одна из самых узких и в то же время гибких мест процессоров TriMedia

Начиная с процессора 3270 кэш явно программируем

При неэффективном программировании процессор может простаивать до 90% времени

Page 16: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

16

Управление кэшем

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

выборки кэша

Page 17: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

17

Содержание доклада

Введение

Архитектура систем PNX1x00

Оптимизация обработки видео

Пример фильтра

Выводы

Page 18: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

18

Стандартные оптимизации

Разворачивание циклов, использование look-up

tables

Использование встроенных и SIMD операций

Эффективные выборки из кэша

Page 19: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

19

Пример оптимизаций

Развертка циклов позволяет компилятору автоматически

распараллелить код

Page 20: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

20

Пример оптимизаций

Используем встроенные операции: ume8uu

Page 21: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

21

Пример оптимизаций

Новый код:

Page 22: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

22

Пример оптимизаций

Разворчиваем цикл дальше:

Page 23: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

23

Пример оптимизаций

Итого операций:

Было:

16*16*(разность + abs + суммирование) = 768 операций

Стало:

8*(8 МЕ операций + 8 суммирований) = 128 операций

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

Page 24: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

24

Пример оптимизаций

Возможно уточнение при

помощи полупиксельной

интерполяции, используя

funshift, mergeodd, bilinear

— благодоря этому операции

ведутся над регистрами, без

обращения в кэш

Page 25: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

25

Содержание доклада

Введение

Архитектура систем PNX1x00

Оптимизация обработки видео

Пример фильтра

Выводы

25

Page 26: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

26

Bilateral denoising on TM3260

Рассмотрим цифровую камеру и попробуем запрограммировать Bilateral denoising на встроенном чипе TM3260

Bayer Bilateral Denoising on TriMedia3270H.Phelippeau, M.Akil, Universite Paris-Est, Labinfo, Noisy-le-Grand Cedex France, 2007

Page 27: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

27

Будем работать с Байесовской матрицей цветов

Bilateral denoising on TM3260

x — координата текущего пикселяу — координата обрабатываемого

пикселяu(x) — соответствующее значение

пикселяС(х) — нормализующая константа

β — окно фильтраh, ρ — Гауссовское распределение

Page 28: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

28

Bilateral denoising on TM3260

Окно фильтра для зеленого 7х7, для красного и синего - 9х9

Page 29: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

29

Прямая реализация

Так не программируют даже на PC!

Page 30: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

30

Look-up tables

Используя симметричность

заводим таблицу на 8*255 float значений

Page 31: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

31

Loop unrolling

Развернем внутренний цикл в 4 раза — такая простая операция на VLIW

процессорах высоко повышает эффективность

Page 32: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

32

Custom operations

В таком представлении удобно использовать встроенные функции ТМ векторной обработки данных — super_ld32 и dspuquadabssub.

Page 33: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

33

Custom operations

Результат — уменьшение загрузки более чем в два раза!

Page 34: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

34

Сравнение

Простейшая оптимизация дает прирост почти в 100 раз

Page 35: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

35

Проблемы дальнейшей оптимизации

Загрузка подряд идущих 9 байтов требует двух операций super_ld32. Попробуем использовать окно 8х8

Половина загруженных значений не используются — изменим реализацию для обработки всех цветов за раз

Page 36: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

36

Оптимизация загрузок

Выход — считать весь центральный блок за итерацию в окне 8х8

Page 37: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

37

Результаты

Уменьшение окна до 6х6 позволило авторам выйграть в скорости еще в 1.3 раза.

Даже малейшие оптимизации сильно влияют на скорость работы алгоритма благодаря компилятору

Page 38: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

38

Выводы

Процессоры TriMedia — мощное и удобное средство программирования обработки видео

При хорошем уровне разроботки можно добиться высокой производительности

NXP предлагает встроенный программный пакет ME/MC, кодеров\декодеров, фильтров с которыми можно соревноваться

Page 39: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

39

Вопросы

?

Page 40: Обзор процессоров Phillips Nexperia

CS MSU Graphics & Media Lab (Video Group)

Only for

Maxus

40

Список литературы

40

"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