Дэвид КАТЦ Рик ДЖЕНТАЙЛ
Как выбрать процессор
для встраиваемой мультимедийной системы? Часть 1
Выбор процессора для мультимедийных приложений — это непростая задача. Для принятия решения вам потребуется:
• тщательный анализ архитектуры ядра и набора периферийных модулей каждого из процессоров, являющихся потенциальными кандидатами;
• хорошее представление о прохождении аудио- и видеоданных в системе;
• понимание того, какой уровень производительности достижим при приемлемом уровне рассеяния мощности.
Начинать процесс выбора следует с тщательной проработки ряда вопросов. После того, как вы на них ответите, вы сможете выбрать тот процессор, который наилучшим образом подходит для вашего приложения. Давайте рассмотрим эти вопросы подробнее.
Почему бы не применить хорошо знакомый процессор?
Давайте начнем с очевидного выбора. Ваш первый вариант заключается в использовании процессора, с которым вы знакомы лучше всего. Это достаточно разумно, поскольку у вас уже накоплен опыт разработки под конкретную платформу. В случае если это ваш очередной проект в данной области, то у вас также могла накопиться определенная база программного кода, который можно применить повторно.
Так зачем же вам переходить с одного семейства процессоров на другое? Наиболее распространенная причина заключается в том, что требования вашего текущего проекта превышают те, что были предъявлены к предыдущим проектам. Если требования выросли значительно, то, вероятно, вы уже не сможете продолжать работу с тем же семейством процессоров. Например, в составе семейства процессоров, оптимизированных для аудиоприложений, может не оказаться устройств, подходящих для обработки видеоизображений. Аналогичным образом, если ваши предыдущие проекты работали с меньшими разрешениями (и меньшей частотой кадров), то для выбора процессора, способного вести обработку в системах с более высокими разрешением и частотой кадров, вам придется перейти к другому семейству.
Что потребуется делать с данными?
Этот вопрос непосредственно связан с производительностью процессора. Одни из первых параметров, которые необходимо проанализировать проектировщику системы при оценке производительности процессора, — это количество команд, выполняемых в секунду, количество операций, производимых за один цикл тактового сигнала процессора, и эффективность вычислительных блоков. По мере того как потребности в вычислительной мощности начинают опережать технологические достижения в производстве процессорных ядер, возникает ситуация, когда в ряде приложений одного процессора становится недостаточно. Это одна из причин для рассмотрения возможности применения двуядерно-го процессора. Добавление дополнительного процессорного ядра приводит не только к эффективному удвоению вычислительной нагрузки, с которой способен справиться процессор, но и дает гибкие возможности распределения программных модулей между ядрами. Кроме того, при использовании двуядерного процессора возможно даже сокращение потребляемой мощности по сравнению с одноядерным процессором, выполняющим ту же задачу, но работающим с удвоенной частотой.
Значения каждой из упомянутых величин можно определить, выполнив набор характерных тестовых приложений на тестируемом процессоре. Результаты этих тестов покажут, превышают ли требования к обработке в реальном времени возможности процессора, и, что не менее важно, останется ли запас на новые или возросшие системные требования.
Какие существуют способы анализа производительности процессора?
Есть множество типов тестовых задач, которые можно использовать для сравнения процессоров. К сожалению, как правило, те или иные компании по-разному измеряют производительность. Кроме того, существует множество способов реализации любого отдельно взятого приложения, поэтому не всегда очевидно, какое из тестовых приложений действительно «правильное». Все это усложняет получение объективных оценок раз-
личия в производительности процессоров, являющихся потенциальными кандидатами. Таким образом, целесообразно проводить оценку производительности с нескольких разных позиций:
• Независимые организации. Эти компании или консорциумы пытаются создать объективные тесты для конкретных групп задач. Например, компания Berkeley Design Technologies, Inc. (BTDI) разработала набор тестов на основе типовых алгоритмов сигнальной обработки, которые широко применяются для сравнения производительности в задачах цифровой обработки сигналов. Кроме того, BTDI также имеет ряд тестов, учитывающих особенности конкретных приложений, которые могут помочь вам произвести оценку более детально. Аналогичным образом компания Embedded Microprocessor Benchmark Consortium (EEMBC) измеряет возможности процессоров для встраиваемых систем при помощи нескольких алгоритмов, ориентированных на реальные приложения.
• Техническая информация производителей. Наиболее очевидным способом получения информации для сравнения процессоров могли бы быть поставляемые производителями технические описания, статьи по применению и примеры программ. Однако, к сожалению, вам придется сильно потрудиться, чтобы найти двух производителей, использующих идентичные тесты. По большей части это вызвано тем, что каждый производитель хочет сделать так, чтобы при сравнении его процессор вышел победителем. Поэтому вы вполне можете столкнуться с ситуациями, когда производители вносят упрощения в алгоритмы или делают при оценке потребляемой мощности допущения, далекие от реальности. С другой стороны, некоторые производители достаточно подробно объясняют, как проводились измерения и как экстраполировать приведенные данные на рабочие условия вашего приложения.
• Тестирование на контрольных задачах. Если вы хотите иметь правильные результаты, получите их самостоятельно! Существуют определенные базовые методы измерения производительности, которые можно провести на разных процессорных платформах для получения хорошего представле-
ния об ограничениях при перемещении данных, задержках при обращении к памяти и узких местах процессора. Например, если у вас есть программа на С или С++, вы можете скомпилировать ее с включенной оптимизацией и получить на ее основе тестовую задачу. Еще один способ проведения теста заключается в настройке каналов DMA тех периферийных модулей, которые будут использоваться в приложении, и измерении производительности при одновременной активности более чем одного из них.
Также необходимо помнить о том, что тесты не всегда дают полную картину. Иногда, незначительно оптимизировав алгоритм путем устранения потенциальных необязательных ограничений, можно получить значительный прирост производительности. Например, точная эмуляция чисел с плавающей точкой стандарта IEEE 854 на процессорах с фиксированной точкой требует очень большого объема вычислений. Однако, ослабив некоторые ограничения (например, представление специальных значений), можно значительно улучшить результаты тестов эмуляции чисел с плавающей точкой, при этом зачастую без значительного влияния на функциональные возможности приложения.
Достаточно ли пропускной способности системы?
Распространенная ошибка — это чрезмерное упрощение при оценке необходимой по-
лосы пропускания системы. Для корректного анализа необходимо суммирование всех индивидуальных потоков данных. Например, при разработке видеодекодера вам потребуется сначала учесть чтение данных, которые необходимо декодировать. Затем необходимо рассмотреть различные промежуточные пересылки данных, необходимые для создания последовательности декодированных кадров. Они могут включать в себя множественные пересылки буферов между областями внутренней и внешней памяти. И, наконец, вам потребуется учесть передачу выходных буферов на устройство отображения.
Следующим шагом после того, как все потоки данных будут проанализированы, является включение этих отдельных оценок требуемой пропускной способности в общий бюджет системы. Нужно иметь в виду, что на него влияют несколько факторов, среди которых ожидаемое ухудшение производительности из-за различных задержек при работе с памятью DRAM, ограничения на передачу данных, вызванные арбитражем на внутренних шинах, и т. п.
Как процессор осуществляет ввод/вывод данных?
Очень важно внимательно изучить периферийные модули процессора и убедиться в том, что они хорошо подходят для вашего приложения. Правильно выбранный набор периферийных модулей позволяет сберечь
время и деньги за счет исключения из системы внешних компонентов, которые бы потребовались для поддержки необходимых интерфейсов. Естественно, у вас может возникнуть желание изменить набор интерфейсов уже в процессе работы над проектом, поэтому лучше выбрать процессор с гибким и достаточно обширным набором периферийных модулей.
Будет ли создаваемая система портативной?
Системы с батарейным питанием предъявляют целый набор новых требований к приложениям. Такие системы должны быть эффективными с точки зрения потребляемой мощности и при этом реализованы в компактном форм-факторе. Зачастую это ограничение приводит к необходимости поиска компромиссов между вычислительной мощностью и потребляемой энергией, а в этом случае процессоры, которые не предназначены специально для мультимедийных приложений, как правило, не подходят, поскольку их потребление гораздо больше при выполнении задач, для которых они не оптимизированы.
Еще один важный вопрос — это выбор подходящей для вашего приложения системы батарейного питания, поскольку это повлияет на удельную энергию, вес конечного продукта, время работы без подзарядки и даже на аспекты безопасности.
Рис. 2. Среда разработки VisualDSP++
Потребуется процессор с фиксированной или с плавающей точкой?
Арифметика вычислений в процессорах делится на две большие категории: арифметика с фиксированной и с плавающей точкой. В общем случае, процессоры из семейств с фиксированной точкой быстрее, потребляют меньше энергии и меньше стоят, в то время как процессоры с плавающей точкой обеспечивают высокую точность представления в широком динамическом диапазоне. Динамическим диапазоном называют отношение между самым большим и самым маленьким числом, которое может быть представлено при помощи конкретного формата, а термин «точность представления» относится к дискретности, с которой может быть представлено дробное число.
Как показано на рис. 1, разработчики, в чьих приложениях лишь малая часть вычислений требует применения арифметики с плавающей точкой, попадают в «серую зону» и, зачастую, вынуждены переходить на использование дорогостоящих устройств с поддержкой плавающей точки. Однако сейчас некоторые процессоры с фиксированной точкой имеют столь высокие тактовые частоты, что, при условии подходящей архитектуры, допускают эмуляцию на них операций с плавающей точкой. Это дает разработчику компромиссное решение для получения эффективности вычислений с плавающей точкой, с одной стороны, и низких стоимости и потребления мощности — с другой. Очевидно, что этот подход не сработает там, где требуются действительно интенсивные вычисления с плавающей точкой, однако он предоставляет привлекательные возможности для разработчиков, оказавшихся «в серой зоне».
Потребуется ли изменение системы стечением времени, или это будет статическая система?
Если существует вероятность последующего внесения изменений в систему для поддержки новых мультимедийных стандартов, новых возможностей пользовательского интерфейса и т. д., то вам, вероятно, понадобится программируемое решение (например, DSP, MCU или FPGA). Если требования к системе являются жесткими и вряд ли изменятся, то вместо программируемых устройств, возможно, лучше будет применить ASIC с фиксированными функциями.
Потребуется ли операционная система?
Операционные системы (ОС) выполняют широкий спектр задач: от управления высокоуровневыми операциями ввода/вывода, отслеживания и управления файлами до управления множеством одновременно активных
процессов и предотвращения конфликтов между ними.
Как и в случае со средствами разработки, многие проектировщики имеют свои сложившиеся предпочтения относительно выбора ОС. Если компания разработала большое количество приложений на какой-то конкретной ОС, она будет настаивать на применении процессора, поддерживающего данную ОС. Если у вас есть свобода в выборе ОС, то существует множество факторов, которые следует рассмотреть. Вам может понадобиться ОС, которая гарантирует малую задержку, поддерживает многозадачность и/или позволяет одновременно обращаться к системе нескольким пользователям. Или, наоборот, вам может быть достаточно облегченной ОС, которая обеспечивает лишь основные службы. Естественно, во многих приложениях ОС не нужна совсем, поэтому данный вопрос не всегда актуален.
Как разрабатывать программное обеспечение для процессора?
Этот вопрос очень важен, поскольку эффективный набор средств разработки может значительно увеличить производительность и сократить время, затрачиваемое на разработку и отладку. Важно понимать, что ответ настолько же зависит от потребностей отдельных разработчиков, насколько от конечного приложения. Многие компании накопили достаточный опыт работы с определенным пакетом средств разработки и, вероятно, создали большую библиотеку программ, которыми они желали бы воспользоваться.
Средства разработки приобретают особое значение при переходе на новую процессор-
ную платформу. Например, мощный компилятор С/С++ может облегчить перенос существующего исходного кода на новую платформу, а возможность выбора из нескольких вариантов оптимизации (например, по скорости, энергопотреблению или объему кода) способствует достижению разработчиками поставленных перед ними целей без необходимости глубоко вникать в нюансы набора команд и архитектуры процессора.
Для иллюстрации этих концепций на рис. 2 показана копия с экрана среды разработки VisualDSP++, в которой осуществляется разработка и отладка программного обеспечения для процессоров Blackfin.
Как быстро можно убедиться в работоспособности программных алгоритмов?
Как уже отмечалось в предыдущем разделе, код, написанный на С или С++, может быть легко перенесен на новый процессор. Основное затруднение при переносе кода заключается в том, что код для работы с периферией у каждого семейства процессоров обычно уникален. Однако перенос упрощен, если в коде используются драйверы устройств, которые позволяют абстрагироваться от деталей взаимодействия с периферийными модулями.
Кроме того, при переходе на новый процессор для встраиваемых систем вам следует обратить внимание на средства, которые позволят вам программировать на более высоком уровне абстракции. Инженеры давно применяют пакеты MATLAB/Simulink компании MathWorks или LabVIEW компании National Instruments на этапе прототипиро-
вания. Эти продукты способны также генерировать код под некоторые процессоры для встраиваемых систем. Выбор мультимедийного процессора, поддерживаемого этими средствами, упрощает создание аппаратного прототипа. Кроме того, за время развития этих продуктов были приложены огромные усилия по упрощению перехода от фазы прототипирования к производству.
И MathWorks, и National Instruments предоставляют пользователю очень простой наглядный путь для создания базовой системы, включая исходный код для сложных алгоритмов и подключения периферийных модулей. Прежде доступный уровень оптимизации не позволял с помощью этих продуктов построить систему целиком, однако последние усовершенствования существенно улучшили ситуацию. Более подробная информация доступна на сайтах:
• LabVIEW: http://www.ni.com/labview/blackfin/
• MATLAB/Simulink: http://www.mathworks.com/company/ newsletters/digest/2006/jan/simdsp.html
Легко ли создать законченный прототип системы?
Вам также следует рассмотреть доступные аппаратные средства для оценки процессора. Выведены ли наружу на отладочной плате сигналы всех периферийных модулей? Если нет, то вам может потребоваться разработка специальной платы только лишь для тестирования периферийного модуля. Взаимодействует ли оценочный комплект с другими оценочными платами, в которых вы заинтересованы? Например, такие компании, как Micron и Omnivision, продают платы с КМОП-сенсо-рами, позволяющими оценить работу их ка-
мер. Один из примеров вы можете найти на веб-сайте компании Avnet (http://em.avnet.com/ ctf_shared/evk/df2df2usa/digital_video_security-product_brief_021307.pdf). Сможете ли вы подключить их к вашему оценочному комплекту?
Также очень полезным может быть наличие готовых модулей, обеспечивающих базовую инфраструктуру для выбранного вами процессора. Функциональность и начинка этих модулей (которые, например, могут включать в себя устройства памяти, управления питанием и тактирования) сильно отличаются, однако все они, в общем случае, имеют базовые функциональные узлы, которые необходимы для работы процессора. Такие модули избавят вас от необходимости тратить время на проектирование и отладку аппаратного обеспечения системы и позволяют сразу сфокусироваться на разработке программного обеспечения вашего приложения. Примеры такого типа продуктов можно найти на веб-сайтах компаний Phytec (http:// www.phytec.com/products/sbc/Blackfin/index. html) и Bluetechnix (http://www.bluetechnix. com/rainbow2006/site/374/Default.aspx).
Сколько это будет стоить?
Это важный вопрос, однако, если вы не рассмотрите вначале полную стоимость разработки системы, то, вероятно, придете к неверному ответу. То есть вам следует рассмотреть:
• стоимость самого процессора (стоит ли процессор А больше, чем процессор В);
• необходимость вспомогательных микросхем (например, процессор А имеет все необходимые периферийные узлы, а процессор В требует применения дополнительных интерфейсных микросхем);
• варианты корпусов (например, плату с процессором А можно развести в четырех слоях, в то время как процессор В имеет такой корпус, при котором для эффективной разводки потребуется дорогая 6- или 8-слойная плата);
• наличие дополнительной вычислительной мощности, дающей больший запас для дальнейшего расширения возможностей (и, следовательно, предотвращающей необходимость последующей замены процессора на другой, которая потребует вложения значительных средств).
Можно ли использовать в своей системе другие компоненты того же производителя?
При рассмотрении процессора хорошо заодно взглянуть и на сигнальный тракт вашей системы. Поставляет ли производитель процессора и периферийные узлы, которые можно подключить к процессору? Обычно предпочтительнее приобретать сразу несколько системных компонентов от одного производителя. При этом вы будете уверены в том, что эти компоненты будут нормально взаимодействовать друг с другом, и сможете более эффективно взаимодействовать со службой поддержки. Кроме того, покупая сразу несколько компонентов у одной компании, вы, вероятно, сможете сэкономить и получить доступ к предоставляемым производителем скидкам.
Так какие есть варианты для выбора процессора?
Краткого ответа на этот вопрос нет... Поэтому мы рассмотрим его во второй части этой серии статей. ■