Подписка на новости

Опрос

Нужны ли комментарии к статьям? Комментировали бы вы?

Реклама

 

2009 №10

Конфигурируемые процессоры Xtensa фирмы Tensilica для встраиваемых систем

Новицкий Александр


Технология фирмы Tensilica позволяет разработчикам «систем на кристалле» адаптировать структуру процессора под особенности решаемой задачи, достигая при этом существенного повышения производительности и энергоэффективности.

Современные цифровые системы управления все чаще делаются однокристальными, и термин «система на кристалле» (System-on-Chip SoC, СнК) уже стал достаточно привычным. Успехи полупроводниковых технологий позволяют при очень низкой конечной цене ($1-10) размещать на кристалле многие миллионы транзисторов и реализовывать в системе высокопроизводительный процессор, емкую подсистему памяти, обширный набор периферийных устройств. Это позволяет использовать СнК практически во всех областях человеческой деятельности.

В то же время присутствует стремление к повышению эффективности цифровых систем управления — естественно желание получить требуемый набор функций за минимальную цену. Разработчик не хочет иметь в системе ничего лишнего, чем, в общем-то, и объясняется огромная номенклатура готовых к употреблению СнК, различающихся тактовыми частотами и разрядностями процессора, объемами памяти, количеством и возможностями периферийных подсистем и пр. Десятки фирм выпускают сотни семейств однокристальных микроконтроллеров (МК), которые содержат многие тысячи типов. Разработчик может выбрать тип, наилучшим образом удовлетворяющий требованиям его задачи, но в подавляющем большинстве случаев выбранный МК все равно будет содержать избыточные возможности и, соответственно, неиспользуемую периферийную схемотехнику.

То же относится и к процессорному ядру: любая конкретная прикладная программа почти всегда не в полной мере использует возможности процессора, и в то же время отдельные фрагменты алгоритма не удается достаточно эффективно реализовать фиксированной системой его команд. Кроме того, каждое из семейств с его конкретным процессором требует использования своего набора средств поддержки разработки — трансляторов, программаторов, отладчиков, симуляторов. Нередко разработчик выбирает то или иное семейство МК не потому, что оно наилучшим образом соответствует решаемой задаче, а лишь потому, что хорошо ему знакомо.

На ранних этапах развития больших интегральных схем (БИС) нередко приходилось реализовывать требуемые в системе функциональности, используя элементную базу с низкой степенью интеграции, хотя технологии уже позволяли разместить все требуемые функции в одном чипе. Однако стоимость и сложность разработки специализированной под задачу ИС были непомерно высоки. Средства поддержки разработки БИС всегда стоили многие миллионы долларов, да и сейчас ситуация та же.

Положение несколько изменилось с появлением микросхем программируемой логики. Приборы FPGA (Field Programmable GateArray, программируемые логические интегральные схемы, ПЛИС), позволили сделать проектирование сверхбольших интегральных схем (СБИС) доступным широкому кругу разработчиков. Стоимость средств поддержки разработки снизилась практически на два порядка, а заготовка (микросхема FPGA) нынче обходится в $5-50. Использование FPGA позволяет получить требуемую аппаратную реализацию, которая обеспечивает скорость обработки не намного ниже, чем у заказной БИС, правда, за счет существенно менее плотной упаковки этой функциональности в микросхеме и, соответственно, большей потребляемой мощности по сравнению с заказной БИС при одинаковых проектных нормах.

Цифровой процессор в составе «системы на кристалле»

Для универсальных компьютеров (персональных рабочих станций) фирмы-производители стремились получить в одном чипе максимальную производительность путем повышения тактовой частоты и уровня внутреннего параллелизма (конвейеризация и суперскалярные архитектуры). Гонка тактовых частот продолжалась до 2000 г., когда был достигнут «технологический потолок» в 3-4 ГГц. Тактовая частота тесно связана с внутренней структурой процессорного конвейера: один из путей ее повышения — увеличение количества ступеней в конвейере с одновременным уменьшением логической глубины каждой ступени. Как следствие, появляется возможность уменьшить длительность такта (в процессорах Pentium4 для достижения тактовых частот выше 3 ГГц длина конвейера даже для целочисленных операций была увеличена до 20 ступеней). Однако при этом существенно возрастает объем оборудования, из-за чего растет и мощность, потребляемая процессором, причем гораздо быстрее, нежели производительность. Второй недостаток «длинного» конвейера — большие дополнительные потери времени в случае нарушения идеальной работы конвейера. Аналогичный эффект наблюдался и при использовании суперскалярных архитектур: они также требовали существенного увеличения объема оборудования, в результате чего потребление энергии опять росло быстрее, нежели производительность.

В то же время в управляющих (встраиваемых) системах требования к производительности далеко не всегда были самоцелью. Гораздо важнее комплексный критерий, отражающий соотношение характеристик производительность - потребляемая мощность -площадь на кристалле - цена. Для оценки производительности и энергетической эффективности в последнее время вместо указания тактовой частоты или производительности все более широко используются удельные характеристики MIPS/МГц, MIPS/мВт, мА/МГц, Дж/команда и тому подобные. Разработчики МК уделяют большое внимание энергоэффективности своих систем, для чего при проектировании целенаправленно стремятся не только достичь высокой производительности, но и понизить при этом удельные затраты энергии.

Однако после того как требуемая производительность обеспечена, разработчику управляющей системы важно минимизировать не удельную, а результирующую энергию, потребную для выполнения алгоритма реального времени. Эта энергия зависит не только от того, сколько джоулей «стоит» выполнение одной процессорной команды, но и сколько команд потребуется для реализации конкретного алгоритма. Из этого ясно, что недостаточны не только такие абсолютные характеристики, как тактовая частота ядра, но и удельные, типа Дж/команда. Важны время выполнения управляющего алгоритма в целом и энергия, затраченная на это процессором.

Поэтому, подобно тому, как в недавнем прошлом разработчики получили возможность формировать аппаратную реализацию функциональностей (используя технологию FPGA), теперь хочется получить возможность управлять энергетической эффективностью процессорной архитектуры в зависимости от решаемой задачи. Существующие в настоящее время готовые решения архитектур МК в силу своей универсальности оказываются недостаточно эффективными для многих конкретных задач, несмотря на наличие развитых функций энергосбережения.

Уже с самого возникновения однокристальных микроконтроллеров их разработчики стали проектировать вычислительные ядра, специально предназначенные для встраиваемых применений. Их особенностями были:

  • Ограниченный набор команд, поскольку в управляющих программах относительно редко требуются сложные операции, даже такие как целочисленное деление и умножение.
  • Развитая подсистема ввода/вывода дискретных сигналов (параллельные порты).
  • Поддержка побитовых операций с регистрами периферийных устройств.

Наиболее популярные высокопроизводительные 32-разрядные процессорные RISC-архитектуры, используемые в СнК, — это ARM и MIPS, разработанные одноименными фирмами. Для интеграции процессорного ядра в СБИС системный разработчик должен приобрести лицензию, после чего он получает описание процессора на языке описания аппаратуры (HDL), пригодное для использования в системах автоматизации проектирования СБИС.

Фирмы-производители БИС программируемой логики, хорошо понимая желательность наличия в СнК универсального программируемого процессора, разрабатывают и реализуют его в некоторых выпускаемых ПЛИС. В частности, фирма Altera разработала 32-битовую процессорную RISC-архитектуру Nios для внедрения в свои ИС.

Многие устройства, такие как медиаплее-ры, принтеры и цифровые камеры, не могут использовать все преимущества сложного (мощного) универсального процессора общего назначения, то есть возможности такого процессора для конкретного класса задач оказываются избыточными. С другой стороны, особенности данных устройств требуют высокой производительности при выполнении определенных алгоритмов (например, компрессия видеопотока в цифровой видеокамере), а возможностей универсального процессора для этого не хватает.

Если особенности управляющего алгоритма заранее известны разработчикам системы (а для встраиваемых применений это почти всегда именно так), можно достичь существенного повышения производительности для данного класса алгоритмов (либо существенного уменьшения потребляемой энергии без снижения производительности) путем оптимизации процессора: изменением или расширением его регистровой модели и набора выполняемых операций с учетом свойств, присущих этому классу алгоритмов. Однако сразу же возникают вопросы, каким образом можно быстро модифицировать процессорную архитектуру, а затем воплотить ее «в кремнии» в составе СБИС, каких затрат времени и денег это потребует?

Американская фирма Tensilica предложила новую технологию и набор инструментальных средств проектирования, которые обеспечивают повышение производительности процессора в СнК от нескольких раз до двух порядков. Основные идеи этой технологии изложены в серии «Докладов о проблемах и способах их решения» (White Papers) [1-5].

Технологии конфигурируемых и расширяемых процессоров Xtensa компании Tensilica

Фирма начала с разработки нового 32-разрядного процессорного RISC-ядра Xtensa [6], а затем на его основе создала набор программных средств для автоматизированного расширения базовой архитектуры с целью ее оптимизации с учетом особенностей алгоритма. Одновременно с генерацией описания модифицированной процессорной архитектуры автоматически вносятся изменения и дополнения в набор средств трансляции и отладки.

Свойства базового процессорного ядра Xtensa

Базовый набор из 82 команд

Коды команд имеют длину 24 бита. Наиболее употребительные команды имеют альтернативную кодировку длиной 16 бит. Это свойство обеспечивает исключительно высокую плотность кода. 24-битовые и 16-битовые команды могут произвольно смешиваться, средняя длина команды в типичной программе составляет около 20 бит (два с половиной байта, против 3,5 для архитектуры x86).

Базовый набор включает следующие группы команд:

  • загрузки и сохранения (обмена между регистром и памятью) — 8 команд;
  • безусловные переходы, вызов и возврат из подпрограммы — 5 команд;
  • условные переходы — 24 команды;
  • копирование «регистр-регистр» и загрузка констант в регистр — 5 команд;
  • арифметика: сложение, вычитание, смена знака, модуль — 12 команд;
  • побитовые операции (AND, OR, XOR) — 3 команды;
  • сдвиги — 13 команд;
  • системные команды (управление процессором) — 12 команд.

Всего — 82 команды.

Как видим, в базовом наборе отсутствуют даже целочисленное умножение и деление.

Регистровый файл

Регистровый файл содержит 16 целочисленных регистров общего назначения длиной 32 бита (минимальная конфигурация), их количество в файле может быть увеличено до 32 либо до 64. Для расширенного регистрового файла поддерживается механизм регистровых окон, который позволяет уменьшить время сохранения-восстановления контекста при вызове подпрограмм или обработчиков прерываний.

32-битовая адресация

32-битовая адресация обеспечивает доступ к 4-Гбайт физическому адресному пространству, общему для программ и данных.

Такая «минимальная» конфигурация ядра позволила получить рекордные характеристики плотности и энергоэффективности ([7], разд. 1):

  • тактовая частота для базовой конфигурации — 600 МГц;
  • площадь ядра на кристалле — 0,14 мм2;
  • рассеиваемая мощность в рабочем режиме — 79 мкВт/МГц для 90-нм технологического процесса.

Расширения базовой архитектуры

В ходе оптимизации архитектуры системы команд проектировщик системы может использовать следующие возможности:

  • Выбор расширений процессорной архитектуры из набора опций, предопределенных разработчиками Tensilica.
  • Технология Fusion — формирование новых более сложных команд, каждая из которых есть «сплав» (fusion) нескольких прежних простых. Одна новая сложная команда при этом выполняется быстрее, чем последовательность простых.
  • Выявление в алгоритме участков с параллелизмом данных (возможностей векторизации при обработке) и добавление в систему команд инструкций и регистров SIMD (Single Instruction Multiple Data).
  • Технология Flexible Length Instruction Xtensions (FLIX) — выявление в алгоритме участков с возможностью явного параллелизма команд и добавление в набор команд инструкций «со сверхдлинным командным словом» (Very Large Instruction Word, VLIW).

В таблице 1 перечислены предопределенные опции, которые можно выбираться при расширении архитектуры (перечень заимствован из [6], разд. 4). В левой колонке намеренно сохранены англоязычные названия опций, в правой даны краткие пояснения к каждой из них. Расширения можно выбирать независимо одно от другого, за немногими исключениями, когда одно из расширений обязательно требует наличия другого. В некоторых случаях пары расширений являются взаимно исключающими.

Таблица 1. Перечень предопределенных расширений базовой архитектуры

1 The Code Density Option

Альтернативная (укороченная до 16 бит) кодировка для наиболее часто используемых команд (аналогично архитектурам ARM и MIPS).

2 The Loop Option

Аппаратная поддержка циклических конструкций; счетчик количества повторений цикла и адрес последней команды тела цикла хранятся в специальных регистрах.

3 The Extended L32R Option

Расширенная версия команды загрузки регистра из памяти. При адресации используется дополнительный регистр, участвующий в формировании адреса операнда-источника.

4 The 16-bit Integer Multiply Option

Команды умножения 16x16 бит без знака и со знаком, с формированием 32-битового результата.

5 The 32-bit Integer Multiply Option

Команды умножения 32x32 бит без знака и со знаком, с формированием 64-битового результата.

6 The 32-bit Integer Divide Option

Команды знакового и беззнакового деления 32/32 с формированием частного либо остатка.

7 The MAC16 Option

Набор команд и дополнительных регистров для выполнения операций «умножение с накоплением».

8 The Miscellaneous Operations Option

Набор команд для выполнения действий «с насыщением», для определения максимальных и минимальных значений, для преобразования типов.

9 The Coprocessor Option

Группа дополнительных регистров, которые могут использоваться при добавлении дополнительных конвейеров обработки (сопроцессоров) к исполнительному блоку.

10 The Boolean Option

Набор дополнительных регистров и дополнительные команды, выполняющие операции с отдельными битами дополнительных регистров.

11 The Floating-Point Coprocessor Option

Сопроцессор плавающей точки с одинарной точностью (float).

12 The Multiprocessor Synchronization Option

Дополнительные команды, поддерживающие взаимодействие (синхронизацию) между несколькими процессорами Xtensa и общей памятью в симметричной мультипроцессорной системе.

13 The Conditional Store Option

Команды «сравнение и условный обмен» для поддержки объектов синхронизации (семафоров).

14 The Exception Option

Ряд расширений для поддержки прерываний всех типов (дополнительные регистры и команды).

15 The Relocatable Vector Option

Возможность перемещения таблицы векторов прерываний на этапе исполнения.

16 The Unaligned Exception Option

Поддержка прерываний по обращению к невыровненным по длине операндов адресам.

17 The Interrupt Option

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

18 The High-Priority Interrupt Option

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

19 The Timer Interrupt Option

Добавление аппаратного таймера и до четырех каналов сравнения с уставками, а также запросов прерываний по переполнению таймера и по срабатыванию компараторов.

20 The Instruction Cache Option

Интерфейс с кэш-памятью команд с прямым отображением или наборно-ассоциативной.

21 The Instruction Cache Test Option

Тестовые команды записи-чтения полей тегов и данных в строках кэша команд.

22 The Instruction Cache Index Lock Option

Возможность проверки и блокирования строки кэша команд от вытеснения ее содержимого при кэш-промахе.

23 The Data Cache Option

Интерфейс с кэш-памятью данных с прямым отображением или наборно-ассоциативной.

24 The Data Cache Test Option

Тестовые команды записи-чтения полей тегов и данных в строках кэша данных.

25 The Data Cache Index Lock Option

Возможность проверки и блокирования строки кэша данных от вытеснения ее содержимого при кэш-промахе.

26 The Instruction RAM Option

Добавление локальной памяти команд типа RAM (в многопроцессорной системе).

27 The Instruction ROM Option

Добавление локальной памяти команд типа ROM (в многопроцессорной системе).

28 The Data RAM Option

Добавление локальной памяти данных типа RAM (в многопроцессорной системе).

29 The Data ROM Option

Добавление локальной памяти команд типа ROM, то есть в ПЗУ констант (в многопроцессорной системе).

30 The XLMI Option

Добавление быстрого интерфейса для подключения внутрикристальных периферийных устройств.

31 The Hardware Alignment Option

Аппаратная поддержка обращений по невыровненным адресам при обращении к «длинным» операндам.

32 The Memory ECC/Parity Option

Аппаратный контроль ошибок при обращениях к кэш и к локальной памяти.

33 The Region Protection Option

Механизм защиты для восьми 512-Мбайт регионов адресного пространства.

34 The Region Translation Option

Механизм трансляции адресов для восьми 512-Мбайт регионов адресного пространства.

35 The MMU Option

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

36 The Windowed Register Option

Расширенный файл основных регистров процессора и поддержка механизма регистровых окон (аналогично архитектуре Itanium).

37 The Processor Interface Option

Интерфейс внешней памяти, которая может разделяться несколькими процессорами в симметричной мультипроцессорной конфигурации (и устройствами прямого доступа).

38 The Miscellaneous Special Registers Option

До четырех дополнительных (привилегированных) регистров, которые могут произвольно использоваться ядром ОС в защищенном режиме.

39 The Thread Pointer Option

Специальный регистр (a thread pointer), используемый механизмами защиты памяти.

40 The Processor ID Option

Регистр, содержащий идентификационный код процессора, позволяющий программе определить тип процессора, на котором она запущена.

41 The Debug Option

Дополнительные команды и аппаратные механизмы поддержки отладки (в том числе, с помощью внешней аппаратуры).

42 The Trace Port Option

Выходы, позволяющие проводить мониторинг состояния процессора с помощью внешней аппаратуры.

Исчерпывающее описание расширений можно найти в объемнтом документе [6] (около 700 страниц). На рис. 1 (заимствован из [7], разд. 1) показаны возможности модификации архитектуры процессора Xtensa LX2. На рисунке различные части отмечены разными цветами:

Голубой — блоки базовой архитектуры.

Бирюзовый — конфигурируемые блоки.

Светло-зеленый — опциональные блоки, разработанные и оттестированные фирмой Tensilica.

Розовый — опциональные блоки Tensilica с возможностью реконфигурации.

Зеленый — блоки, полностью определяемые разработчиком СБИС.

Рис. 1. Блок-схема архитектуры процессоров Xtensa LX2

Средства поддержки проектирования

Для автоматизации процесса реконфигурации фирма Tensilica разработала набор программных средств, который обеспечивает не только автоматическое выполнение всех этапов оптимизации, но и широкие возможности по автоматической верификации произведенных изменений и дополнений архитектуры.

Технология конфигурирования процессорной архитектуры иллюстрируется диаграммой, приведенной на рис. 2 (заимствована из [7], разд. 1).

Рис. 2. Порядок действий при конфигурировании процессора Xtensa

На рис. 2 отмечены программные компоненты поддержки оптимизации и автоматической генерации изменений. Главные из них коротко будут описаны далее.

Основное программное средство, используемое для оптимизации процессора, — компилятор XPRES (Xtensa PRocessor Extension Synthesis), предназначением которого является автоматизированная генерация расширений системы команд для архитектуры Xtensa. Этот процесс осуществляется за четыре этапа (перечислены ниже), каждый из которых может быть выполнен полностью автоматически, но допускает и предполагает вмешательство разработчика.

1. Компиляция исходного кода с языка С/С++ в базовую систему команд процессора Xtensa:

  • профилирование (анализ времени выполнения) с выделением циклических участков;
  • анализ возможностей векторизации данных для отдельных фрагментов программы;
  • формирование рекомендаций по улучшению исходного кода для программиста.

2. Формирование набора вариантов расширений архитектуры процессора и базовой системы команд:

  • возможности использования команд со структурой SIMD;
  • возможности формирования команд со сверхдлинным командным словом (VLIW);
  • рекомендации по свойствам слотов в таких командах;
  • оценка соотношения между ростом производительности и дополнительными аппаратными затратами для каждого варианта расширений архитектуры;
  • выбор наилучшего набора расширений.

3. Необязательный этап дополнительной оптимизации, в ходе которой оператор может проверить эффективность дополнительных вариантов модификации процессора (выполняется в диалоговом режиме с использованием возможностей программных средств оценки эффективности).

4. Автоматическая модификация программных средств трансляции, симуляторов, технологической документации для систем поддержки проектирования и производства СБИС с учетом внесенных в процессор изменений.

В ходе анализа XPRES способен за короткое время просмотреть большое количество вариантов модификации свойств процессора, оценить как достижимое ускорение, так и затраты: дополнительную площадь на кристалле, дополнительное количество логических вентилей, увеличение потребляемой микросхемой мощности, изменение размера кода при использовании расширенной системы команд и другие характеристики. Разработчик имеет возможность просмотреть все варианты модификации и выбрать тот, который кажется ему наилучшим.

TIE (Tensilica Instructions Extension language) — это язык описания аппаратуры (HDL), похожий на широко известный Verilog. Язык TIE используется не только для представления результата работы транслятора XPRES, но и позволяет раз-работнику вручную описывать добавляемые команды, дополнительные регистры процессора, исполнительные узлы и т. п.

Xtensa Processor Generator — набор программных средств для автоматического внесения изменений, выбранных разработчиком, во все компоненты описания проекта, которые содержатся в базе данных о конфигурируемом процессоре.

Во-первых, это файлы описания аппаратуры, используемые технологами на последующих этапах проектирования СБИС (синтез на уровне вентилей, расположение на кристалле, трассировка межсоединений, анализ потребляемой мощности, анализ временных характеристик и т. п.). Эти описания адаптированы для использования в системах автоматизации проектирования и технологической подготовки производства (EDA Tools), таких как продукты фирм Mentor Graphics, Synopsys или Cadence.

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

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

Разработчик системы, используя модифицированные средства трансляции и отладки, имеет возможность немедленно проверить эффективность новой конфигурации процессора при выполнении реальных управляющих программ. Процесс проектирования выполняется итеративно. После внесения изменений можно повторять цикл «трансляция - выбор реконфигурации - анализ производительности и затрат» до получения результата, устраивающего разработчика.

Представление об эффективности работы средств автоматической оптимизации можно получить из таблицы 2 (заимствована из [5]), в которой приведены результаты оптимизации для чисто автоматического режима анализа. Степень ускорения для разных алгоритмов, как видим, составляет от 3 до 10. После оптимизации несколько увеличивается размер кода, поскольку оптимизация привела к добавлению в набор инструкций команд с длинными кодами и их использованию. Но этот размер остается существенно меньшим, чем у эквивалентной программы, оттранслированной для архитектуры MIPS32. Последние два столбца дают представление о количестве просмотренных компилятором XPRES вариантов (зависит от размера программы) и о затраченном процессорном времени (рабочая станция с процессором 2 ГГц).

Таблица 2. Результат автоматического анализа для алгоритмов обработки сигналов

Алгоритм Ускорение

Размер кода, кбайт

Размер кода для MIPS32, кбайт Количество просмотренных конфигураций Время анализа, мин
до после
MPEG4-кодер 3,0 111 136 356 1 830796 30
БПФ 10,6 1,5 3,6 4,4 175796 3
GSM-кодер 3,9 17 20 38 576722 15

На рис. 3 (заимствован из [7], разд. 1) представлены результаты ускорения для различных алгоритмов при максимальном использовании всех возможностей технологий Xtensa.

Рис. 3. Достижимые степени ускорения, предоставляемые технологией Xtensa для разных алгоритмов

Интегрированная среда Xtensa Xplorer IDE используется как «контейнер» для всех остальных программных инструментов и позволяет выполнять все действия как по оптимизации архитектуры, так и по разработке и отладке программ для процессора. На рис. 4 приведен результат работы компилятора XPRES, показывающий соотношение между ускорением и затратами оборудования.

Рис. 4. Интегрированная среда Xtensa Xplorer IDE на графике демонстрирует связь между достигаемым ускорением и увеличением объема оборудования (логические вентили)

Пример оптимизации процессора Xtensa по быстродействию

Чтобы получить представление о возможностях описания и использования в процессоре новых мощных пользовательских команд, требующих при этом также изменения других характеристик процессора (ширины шин данных и разрядности операндов), приведем пример сложной команды (заимствован из [1]), позволившей достичь существенного ускорения алгоритма компрессии MPEG4 при выполнении в процессоре Xtensa (рис. 5).

Рис. 5. Структура сложной SIMD-команды, позволяющей ускорить алгоритм компрессии MPEG-4

Одна из наиболее ресурсоемких операций в компрессии видео, используемая для детекции движения в кадре — это SAD (Sum of Absolute Differences, сумма модулей разностей). Для формата кадра QSIF (176x144) и частоты 15 кадр/с требуемое быстродействие обычного универсального RISC-процессора превышает 640 млн кмд/с. Структура команды, использующей технологии Fusion и SIMD, реализованной в одной из модификаций процессора Xtensa, показана на рис. 5. Команда использует возможности организации 128-битовой разрядности в конвейере нового исполнительного блока, предназначенного для выполнения этой команды, и в интерфейсе памяти в архитектуре Xtensa, что позволяет обрабатывать одновременно 16 пикселей. Конвейер исполнительного блока выполняет сначала вычисление разностей, затем операцию взятия модуля и, наконец, суммирование с накоплением. Использование этой команды уменьшило требуемую производительность процессора с 640 до 14 млн кмд/с (в 46 раз).

Примеры оптимизации процессоров Xtensa по энергопотреблению

Основной путь для достижения энергосбережения в СнК состоит в отключении тактирования узлов, которые в некоторые периоды времени не используются. В процессорах Xtensa вдобавок имеется возможность деак-тивировать блоки памяти на периоды, когда эти блоки не используются.

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

Как видно из таблицы 3 (заимствована из [6]), для четырех разных алгоритмов выигрыш в потреблении энергии при сохранении производительности может быть от 2 раз до почти двух порядков. Плата за это — увеличение площади на кристалле.

Таблица 3. Эффективность оптимизации процессоров Xtensa по энергопотреблению

Алгоритм Показатель Процессор до оптимизации Оптимизированный процессор Уменьшение потребления энергии
Скалярное произведение векторов Площадь чипа (мм2) 0,9 1,3
Тысяч тактов 12 5,9
Мощность (мВт/МГц) 0,3 0,3
Энергия (мкДж) 3,3 1,6
Алгоритм блочного шифрования AES Площадь чипа (мм2) 0,4 0,8 82х
Тысяч тактов 283 2,8
Мощность (мВт/МГц) 0,2 0,3
Энергия (мкДж) 61,1 0,7
Алгоритм декодирования Витерби Площадь чипа (мм2) 0,5 0,6 33х
Тысяч тактов 280 7,6
Мощность (мВт/МГц) 0,2 0,3
Энергия (мкДж) 65,7 2
Быстрое преобразование Фурье Площадь чипа (мм2) 0,4 0,6 22х
Тысяч тактов 326 13,8
Мощность (мВт/МГц) 0,2 0,2
Энергия (мкДж) 56,6 2,5

Применение процессоров Xtensa

Процессоры Xtensa уже используются в принтерах и сканерах фирм Epson и Hewlett-Packard, в компонентах сетевой инфраструктуры Cisco, в видеокартах от ATI и NVIDIA, в медиаплеерах, DVD-проигрывателях, HDTV-видеокамерах. Информация об этих продуктах имеется на сайте www.tensilica.com.

Расскажем еще об одном применении архитектуры Xtensa [8, 9]. Группа разработчиков из университета Беркли в Калифорнии предполагает обойти проблему с барьером энергопотребления, с которой неизбежно сталкиваются при проектировании суперкомпьютеров. Для этого предлагается построить компьютер, содержащий 20 миллионов микропроцессоров низкой мощности вместо обычных серверных процессоров. Заключено соглашение с компанией Tensilica на поставку процессорных ядер Xtensa LX для использования их в качестве основных стандартных блоков, на базе которых будет построена параллельная вычислительная система. Как заявляют ученые, в конечном итоге они смогут построить суперкомпьютер ценой в $75 млн, потребляющий порядка 4 мВт (соизмеримо с современными суперЭВМ), а его пиковая вычислительная мощность прогнозируется в 200 петафлопс, что в 130 раз превышает показатель компьютера IBM Road Runner — нынешнего лидера TOP500.

Эмуляция СнК с модифицированным процессором на FPGA

Рассмотренные технологии реконфигурации процессоров Xtensa предназначены, в основном, для системных архитекторов, проектирующих новые СнК и работающих «в связке» с технологами. Результатом этой работы должны являться подготовка производства и последующий выпуск СБИС достаточно крупными партиями.

Какой же интерес может представлять рассмотренная технология для «простого» разработчика, которому требуются мелкие серии либо даже единичные образцы системы? Фирма Tensilica дает ответ и на этот вопрос ([7], разд. 30). Инструментальные средства фирмы позволяют получить набор файлов, позволяющий быстро реализовать спроектированную систему на базе большой FPGA. Эта функция может послужить и для макетирования с целью проверки системы «в железе», и для получения конечного изделия, которое будет менее эффективным (по плотности упаковки и, возможно, по потреблению энергии) по сравнению со СБИС, но, тем не менее, позволит быстро и недорого создать работающую систему, обеспечивающую все описанные преимущества по производительности.

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

Заключение

Фирма Tеnsilica предлагает комплексную и законченную технологию и инструментальные средства, позволяющие индивидуализировать процессорное ядро под класс решаемых задач. Возможно, благодаря этой технологии в недалеком будущем любой разработчик сможет «скроить» для своей системы процессор, наилучшим образом соответствующий особенностям его задачи. Одновременно эта технология в значительной степени способна решить и проблему пиратства в области микроконтроллерных программ, поскольку такого же, как у вас, варианта процессора (и соответствующих средств поддержки разработки) не будет ни у кого...

Литература

  1. The What, Why and How of Configurable Processors // Tensilica's White Paper. 2008.
  2. Why_High_MHz_Does_Not_Mean_High_ Performance // Tensilica's White Paper. 2008.
  3. How to Increase ASICs and SOC Computational Performance with Long-Word Processors // Tensilica's White Paper. 2008.
  4. Processor Core Customization: Your SOC design team's fastest route from C to gates // Tensilica's White Paper. 2008.
  5. Match_Processor_to_Task_Through_Automated_ Processor_Generation // Tensilica's White Paper. 2008.
  6. Xtensa Instruction Set Architecture (ISA) Reference Manual. Tensilica, Inc., 2007.
  7. Xtenta LX2 Microprocessor Data Book. Tensilica, Inc., 2008.
  8. http://ecotechdaily.com/2008/05/07/new-climate-supercomputer-made-of-ipod-chips/
  9. http://www.lbl.gov/Science-Articles/Archive/NE-climate-predictions.html

Скачать статью в формате PDF  Скачать статью Компоненты и технологии PDF

 


Другие статьи по данной теме:

Сообщить об ошибке