Использование многоядерных процессоров
для многопоточных задач высококачественной видеообработки на базе кодека Н.264
Тодд ХИЕРС (Todd HIERS)
При реализации высококачественной видеообработки на базе многоядерных систем необходимо решать проблему распределения вычислений. В данной статье приводится ряд рекомендаций по распределению задач между несколькими цифровыми сигнальными процессорами, иногда с использованием программируемых линейных матриц, с целью обеспечения необходимой вычислительной мощности при наилучшей цене.
Использование видео становится повсеместным, при этом потребители хотят иметь поддержку видео на всех типах устройств, обеспечивающих различное качество изображения. В некоторых видах техники, таких как мобильные телефоны, портативные музыкальные плееры или видеоплееры, один цифровой сигнальный процессор может выполнять все задачи обработки видеоданных и вписывается в строгие ценовые рамки. Но если речь идет о приложениях с высоким качеством видео, например, телевидении высокой четкости или реализации видеоконференций, требования к обработке данных превышают возможности любого единичного устройства, представленного сегодня на рынке. В этом случае системы, построенные из нескольких цифровых сигнальных процессоров или их комбинаций с программируемыми линейными матрицами, могут реализовать высококачественное видео, не будучи чрезмерно сложными и дорогостоящими. Чтобы принять разумное решение о том, как распределить задачи между процессорами, конструкторам необходимо не только учитывать ресурсы устройств, но и анализировать алгоритмы.
Стандарт сжатия видео ^264 (MPEG-4 AVC) — самый новый видеокодек, получивший широкое распространение. Этот стандарт обеспечивает качество видео на уровне MPEG-2 при вдвое меньшем объеме передаваемых данных или более высокое качество при том же объеме данных, что и MPEG-2. Но расплачиваться за такие преимущества
приходится существенно большей вычислительной мощностью, чем для кодека стандарта MPEG-2. Более того, требования к вычислительным ресурсам не устанавливаются стандартом кодека К264. Они зависят от широкого ряда переменных, определяемых реализацией кодека, в том числе разрешением и частотой кадров, выходной скоростью передачи информации, профилем кодека ^264 и такими специфическими параметрами, как диапазон, оптимизация, число опорных кадров, алгоритм и области поиска. Все эти параметры влияют на воспринимаемое качество видео. Таким образом, требования к вычислительным возможностям системы непосредственно зависят от требований к качеству видео и могут существенно варьироваться в разных системах, номинально использующих один и тот же кодек.
Обзор задач: кодирование
Основные задачи последовательной обработки видеоданных — это кодирование, транскодирование, изменение скорости потока данных и декодирование. Даже не выбирая конкретный цифровой сигнальный процессор, можно предложить ряд способов распределения задач, чтобы оптимальным образом использовать несколько процессоров.
Максимальный объем вычислений требуется при кодировании видеоданных, когда система преобразует исходную последовательность видеоданных в сжатый битовый поток, что облегчает передачу изображений
по каналам с ограниченной полосой пропускания.
Одним из основных способов распределения задач кодирования является функциональное разбиение, когда один кодер работает на нескольких микросхемах. В схеме с применением двух цифровых сигнальных процессоров верхнее устройство занято предсказанием для определенной области пикселей, использующей лишь ту информацию, которая содержится в макроблоке пикселей, энтропийным кодированием, преобразованием и квантизацией (рис. Ы). При функциональном разбиении дополнительная программируемая линейная матрица может принять на себя роль нижнего блока. Для межпроцессорной связи в этих примерах устройств используется интерфейс SerialRapidЮ ^Ю). Нижний ЦСП поддерживает межблочные операции, использующие информацию из окружающих блоков или других кадров. Помимо этого, нижний ЦСП выполняет деблокирование в цикле, чтобы устранить блочность восстановленного изображения. Функциональный кодек обеспечивает видео более высокого качества, поскольку работает с изображением в целом, а при этом образуется меньше артефактов.
Впрочем, в обмен на качество приходится мириться с большим числом взаимозависимостей процесса и большим объемом данных, которые должны передаваться между разными ступенями. Следовательно, устройства должны иметь высокоэффективную межпроцессорную связь. Также в данном случае
труднее увеличить число процессоров, между которыми распределены функции кодера. Например, функция деблокирования может быть вынесена на отдельное устройство, чтобы освободить другое устройство для оценки движения, но при этом возрастают требования к вводу/выводу данных. Поток данных ограничивает число процессоров ЦСП, применяемых на практике, так что функциональное кодирование имеет ограниченную масштабируемость.
Альтернативные подходы к кодированию
Альтернативным вариантом, уменьшающим требования к межпроцессорной связи, является перенос всех ступеней обработки на единственный ЦСП, но при этом изображение разделяется на последовательности горизонтальных полос, каждая из которых обрабатывается отдельно (рис. 1б). Этот метод, называемый полевым разбиением, менее требователен к ресурсам межпроцессорной связи, чем функциональное разбиение, и в систему легко можно добавлять новые процессоры. Однако при слишком большом числе полос могут возникнуть проблемы с качеством, поскольку границы между полосами становятся видимыми и затрудняется управление энтропийным кодированием видеоданных. Для видео высокого разрешения целесообразно использовать шесть или более полос.
Третий тип разбиения при кодировании обеспечивает работу с широкими полосами меньшего размера: это комбинированное разбиение, в котором сочетаются два предыдущих подхода, чтобы можно было воспользоваться преимуществами обоих. Хотя изображение разбивается на полосы, обработка каждой полосы производится двумя процессорами ЦСП на основе функционального разбиения. При этом легко обеспечивается масштабирование, так что видеоданные высокого разрешения могут обрабатываться несколькими процессорами ЦСП. Также возникает меньше проблем с качеством, чем при использовании только полевого разбиения, поскольку в данном случае число границ меньше, а области для энтропийного кодирования больше.
Для ускорения работы системы дополнительная линейная матрица может выполнять оценку и компенсацию движения и деблокирование. Это регулируемое ускорение обеспечивает более высокую производительность, а также является масштабируемым и гибким. Программируемые линейные матрицы могут применяться для этих частей алгоритма, поскольку последние очень хорошо параллелизируются. Следовательно, такая схема лучше всего работает в системах с функциональным или комбинированным подходом. Если ЦСП не имеет портов, оптимизированных под опе-
Рис. 1. Три основных способа разбиения видеокодека:
а) функциональное разбиение кодека; б) полевое (Sliced) разбиение кодека; в) комбинированное разбиение кодека
рации ввода/вывода видеоданных, то линейную матрицу можно использовать для реализации специфического ввода/вывода видеоданных при наличии такой необходимости.
Транскодирование в соответствии с другим стандартом
После кодирования потока видеоданных иногда бывает необходимо выполнить транскодирование, то есть преобразовать сжатый битовый поток в формат, соответствующий другому стандарту сжатия данных. После этого контент можно просматривать на другом устройстве для воспроизведения видео. Транскодирование является важным фактором дальнейшего развития рынка видеоприложений развлекательного характера. Потребители требуют, чтобы видеоконтент даже высокого разрешения был легко перемещаемым и доступным на любом устройстве. Транскодирование часто необходимо для адаптации к возможностям и полосе пропускания различных портативных видеоустройств.
В одном из возможных вариантов разбиения для операции транскодирования верхний ЦСП принимает кодированные входные данные и действует исключительно как декодер. Он посылает восстановленное видео и остаточную информацию на нижний ЦСП, полностью занятый повторным кодированием. Наличие дополнительной информации, помимо исходных видеоданных, обеспечивает для кодека начальное преимущество, так что можно добиться снижения вычислительной нагрузки до 20% по сравнению с нормальной загрузкой системы. Это разбиение не требует высокой эффективности средств межпроцессорной связи.
Следует обратить внимание, что нижний ЦСП выполняет все задачи функционального кодека. Хотя они могут быть реализованы в нижнем блоке одного устройства, эти задачи можно также реализовать с помощью одной из показанных на рис. 1 схем кодирования с использованием нескольких цифровых сигнальных процессоров.
Разбиение при изменении скорости потока данных
При передаче видеоданных возможна задача изменения ее скорости, то есть преобразование сжатого в определенном стандарте битового потока в другой битовый поток с меньшей скоростью передачи с использованием того же стандарта. Изменение скорости потока данных часто применяется с целью модификации масштаба изображения для меньшего экрана с более низким разрешением, для более сильного сжатия видео с тем же разрешением с целью снижения требований к памяти либо для получения мень-
Вход
видеоданных
Внутреннее DSP Энтропийное
предсказание ► кодирование
SRIO
V.SRIO
DCT
Q —
IDCT
IQ
ENET/PCI
Выход
кодированных
данных
DSP
Компенсация движения
Де- блокирование
♦ Восстановл.
Оценка движения
* кадр
Рис. 2. Разбиение для изменения скорости потока данных состоит из декодирующей и кодирующей частей, причем обе эти части реализованы в верхнем блоке
шей скорости при передаче изображения, например, в случае передачи нескольких видеопотоков в сети с ограниченной пропускной способностью.
Изменение скорости потока данных проще транскодирования и состоит из декодирующей и кодирующей частей. Кроме того, можно повторно использовать значительный объем информации из исходного битового потока, так что среди всех задач на стадиях обработки видеоданных изменение скорости создает самую низкую вычислительную нагрузку. Для этой задачи, помимо вышесказанного, невысоки требования к межпроцессорной связи.
На рис. 2 показан один из способов разбиения этой задачи между двумя устройствами. Верхний блок реализует функции декодирования/повторного кодирования, и эта операция выполняется быстрее стандартного кодирования, поскольку не требует полного кодирования. Нижний блок производит восстановление сдвига и для этапа декодирования, и для этапа повторного кодирования.
Декодирование — только функциональное разбиение
Заключительным этапом обработки видеоданных является декодирование, при котором возможно только функциональное разбиение. Составные части битового потока ^264 смешиваются сложным образом, так что невозможно простое разбиение потока для раздельной обработки. Функциональное разбиение ограничивает число процессоров, которые можно эффективно применять для этой задачи, но поскольку декодирование требует меньшего объема вычислений, чем кодирование, то необходимо меньшее число процессоров ЦСП. Однако для декодирования также требуется качественная межпроцессорная связь.
При разбиении для декодирования верхний блок выполняет декодирование с переменной длиной кодового слова или с использованием метода контекстно-зависимого адаптивного бинарного арифметического кодирования. Нижний блок отвечает только за компенсацию движения и деблокирование.
Рекомендуемые классы
процессоров
для каждого этапа
При определении типов ЦСП для каждой схемы разбиения разработчики должны учитывать вычислительную мощность и цену. Практические ориентиры следующие: высокопроизводительный ЦСП общего назначения (например, ЦСП TMS320C6455 1,2 ГГц компании Texas Instruments) может стоить от $100 до $300; специализированный ЦСП для обработки видеоданных (например, ЦСП TMS320DM642 или ЦСП TMS320DM648 на базе технологии DaVinci) может иметь цену от $40 до $80, тогда как цена таких недорогих устройств, как ЦСП TMS320C6424, может находиться в пределах от $10 до $20.
В таблице показано, в каких именно задачах определенный тип ЦСП вероятнее всего поможет в реализации высококачественной видеосистемы. Для каждой задачи можно до-
Таблица. Аппаратные платформы и предполагаемые области применения при кодировании К264
Платформа/ Вероятное применение Кодирование Транскодирование Изменение скорости потока данных Декодирование
Высокопроизводительный ЦСП
С линейной программируемой матрицей
Специализированный ЦСП
для обработки видеоданных
С линейной программируемой матрицей •
ЦСП из нижней ценовой категории
С линейной программируемой матрицей
бавить дополнительный ускоритель на базе линейной матрицы.
Высокопроизводительные цифровые сигнальные процессоры позволяют получить наибольшую вычислительную мощность, возможную для стандартных изделий. Универсальность этих процессоров обеспечивает достаточную гибкость, чтобы можно было рассматривать различные подходы при разбиении задач обработки видеоданных, а также адаптировать алгоритмы или добавлять различные функции. Гибкость таких процессоров также позволяет получить высокий уровень масштабируемости, так что число процессоров может изменяться от нескольких штук до 64 тысяч. Высокопроизводительные ЦСП — это хороший выбор для задач, требующих большого объема вычислений, например, для кодирования и транскодирования, когда благодаря их мощности можно уменьшить необходимое число процессоров. Но эти процессоры слишком про-изодительны для задач с меньшей вычислительной нагрузкой, например, для изменения скорости потока данных. У них также может оказаться недостаточно быстрый ввод/вывод видеоданных, часто весьма востребованный в декодерах.
Рассмотрим теперь несколько общих наблюдений относительно того, какие функции могут выполнять цифровые сигнальные процессоры. Два ЦСП, применяемые для кодирования, могут поддерживать видео в формате 720p30 MP (720 вертикальных линий, прогрессивная развертка при частоте 30 кадров/с, основной профиль H.264), тогда как шесть объединенных процессоров могут поддерживать видео в формате 1080i60MP (чересстрочная развертка). При транскодировании достаточно трех устройств для работы видео в формате 730p60 BP (базовый профиль), а четыре процессора ЦСП могут поддерживать видео в формате 1080i60 MP.
Как было отмечено ранее, в кодеке ЦСП должны совместно использовать значительный объем данных и требуют хорошей межпроцессорной связи. Например, в ЦСП C6455 1,2 ГГц интегрирован высокоскоростной последовательный интерфейс под названием Serial Rapid IO (SRIO). Эта технология межсоединений с пакетной коммутацией поддерживает скорость обмена данными до 10 Гбит/с по 4-канальной линии связи. Одноканальная линия связи является достаточно быстрой для передачи между устройствами контента высокого разрешения 1080i в исходном формате; 4-канальная линия связи может передавать между устройствами исходные (необработанные) видеоданные HD 1080p.
Если необходим более мощный модуль оценки движения, то высокопараллельные операции могут быть перенесены на ускоритель на базе программируемой линейной матрицы. Возможно, в системе уже присутствует матрица с достаточными свободными ресурсами, чтобы поддерживать эти задачи,
и это позволяет сэкономить на стоимости дополнительных компонентов. Кроме того, вентильную матрицу можно добавить для реализации любого ориентированного на видеоданные ввода/вывода. Если применяется комбинация ЦСП и вентильной матрицы, то для кодирования видео в формате 720р30МР необходим лишь один процессор ЦСП, а для формата 1080160 необходимо два процессора ЦСП. При транскодировании можно добавить дополнительную вентильную матрицу к двум ЦСП для любого из этих видеоформатов. Однако в случае изменения скорости потока данных или декодирования комбинация ЦСП и линейной матрицы оказывается слишком дорогостоящей и имеет неоправданно большое энергопотребление.
Ускорители и средства ввода/вывода в ЦСП, специализированных на видео
Для некоторых задач оптимальным выбором будут ЦСП, ориентированные на обработку определенных видеоданных, поскольку в этих случаях присутствуют специальные аппаратные ускорители, способные выполнять некоторые фрагменты алгоритмов работы с видеоданными, а также специализированные средства ввода/вывода видеоданных. Такие процессоры могут иметь меньшую стоимость и энергопотребление, чем процессоры ЦСП общего назначения. Средства ввода/вывода видеоданных этих процессоров могут также использоваться для обеспечения высокоэффективной межпроцессорной связи, хотя первоначально они не предназначались для выполнения подобной работы. Таким образом, число процессоров ограничивается двумя-пятью.
Кроме того, эти интегральные схемы предназначены для использования в однопроцессорных системах, так что могут наилучшим образом работать при полевом разбиении кодера. К другим возможным областям применения относятся все описанные здесь этапы обработки видеоданных, за исключением изменения скорости потока данных, поскольку производительность и цена этих процессоров слишком высока. Вычислительная мощность этих устройств при наличии ускорителей такова, что два подобных ЦСП пригодны для кодирования видео в формате 480р30 МР, а шести устройств будет достаточно для поддержки видео с параметрами 1080160 МР. В случае транскодирования, как и при кодировании, два устройства поддерживают формат 480р30 МР, а для видео в формате 1080160 МР можно применить четыре устройства. Специализированные средства ввода/вывода делают эти устройства пригодными для декодирования, и в этом случае два видеопроцессора ЦСП могут работать при высоких разрешениях.
Разработчики также могут включить в свой проект программируемую линейную матри-
цу, чтобы обеспечить дополнительную поддержку ускорителя. Это помогает при кодировании с использованием функционального или комбинированного разбиения. Один цифровой сигнальный процессор для обработки видео вместе с линейной матрицей, программируемой пользователем, может поддерживать формат 720р30 МР для кодирования и 720р60 МР для транскодирования. В случае декодирования комбинация ЦСП и линейная матрица могут поддерживать видео в формате 720р30 МР. Если добавить еще один видеопроцессор ЦСП, то система может поддерживать видео в формате 1080160 МР. В случае изменения скорости потока данных такая комбинация также избыточна и слишком дорога для этой задачи.
Применение недорогих ЦСП
Процессоры ЦСП невысокой стоимости — это отличное применение для изменения скорости потока данных, но эти процессоры обычно не имеют средств межпроцессорной связи или видеопортов, так что построение многокристальных систем может оказаться непростой задачей. Если система должна передавать значительные объемы данных, это может привести к чрезмерному усложнению схем ввода/вывода, что сведет на нет всю экономию, достигнутую за счет низкой цены процессоров.
Имея ограниченную производительность, недорогие цифровые сигнальные процессоры непригодны для кодирования, транскодирования или декодирования. Однако два процессора ЦСП из нижней ценовой категории могут выполнять изменение скорости потока данных, не требующее ввода/вывода видеоданных, и способны обеспечить разрешение видео до 720р30 ВР. Возможен вариант с добавлением линейной матрицы для сохранения ценовых преимуществ недорогого устройства и привнесения функции ускорения. Но даже в этом случае применение такой комбинации ограничивается областью задач, требующих меньшего объема вычислений, причем не обеспечивается приемлемая межпроцессорная связь. Как и в случае реализации на базе только ЦСП, два ЦСП в сочетании с вентильной матрицей способны поддерживать изменение скорости потока видеоданных в формате 720р30 ВР.
Поскольку спрос потребителей на высококачественное видео продолжает расти, разработчики должны уделить внимание следующему фактору: как запросы в отношении качества видео влияют на требуемую вычислительную мощность системы и каким образом интеллектуальные схемы разбиения могут соответствовать этим запросам. Помимо этого, разработчики должны быть осведомлены о последних ЦСП, поступающих на рынок, и о специализированных или расширенных возможностях этих процессоров. ■