Системы на кристалле на базе ПЛИС FPGA Xilinx с встроенными процессорами PowerPC. Часть 2

№ 8’2005
В предыдущей части статьи была приведена вводная информация по ПЛИС фирмы Xilinx, содержащим на кристалле ядро процессора PowerPC. Эти ПЛИС представляют собой устройства с очень большим объемом программируемых ресурсов и весьма высокой ценой, поэтому проектирование систем на их основе является достаточно ответственной задачей. В связи с этим важно иметь хорошее представление о расположенном на кристалле процессорном ядре, вокруг которого часто и выполняется построение системы на кристалле.

В предыдущей части статьи была приведена вводная информация по ПЛИС фирмы Xilinx, содержащим на кристалле ядро процессора PowerPC. Эти ПЛИС представляют собой устройства с очень большим объемом программируемых ресурсов и весьма высокой ценой, поэтому проектирование систем на их основе является достаточно ответственной задачей. В связи с этим важно иметь хорошее представление о расположенном на кристалле процессорном ядре, вокруг которого часто и выполняется построение системы на кристалле.

Все статьи цикла:

Встраиваемые реализации процессоров PowerPC

Уже несколько лет основной темой рекламных материалов фирмы Xilinx являются семейства Virtex-II Pro и Virtex-4. Часто наряду с логотипом Virtex на этих рекламных врезках присутствует логотип PowerPC. Между тем можно заметить, что кроме процессорного ядра в высокопроизводительных ПЛИС имеются и другие полезные ресурсы, так что основную тему для рекламной кампании можно было бы выбрать и иную. Почему же внимание потенциальных потребителей обращается именно на процессорные ядра?

Архитектура PowerPC достаточно хорошо известна в мире цифровых технологий. Эта продукция компании IBM стоит в одном ряду с Power G4 и Power G5, подробная расшифровка которых, думается, будет излишней. Основным назначением PowerPC было создание универсальной процессорной архитектуры, пригодной как для встраиваемых применений, так и для высокопроизводительных вычислительных комплексов. Архитектура процессорных ядер серии PowerPC достаточно универсальна и хорошо подходит для самого широкого круга задач. Важно и то, что IBM предлагает готовые ядра для встраивания их в кристаллы других производителей, так называемые licensiable cores. Вместе с самими процессорными ядрами предлагаются и средства их сопряжения с другими цифровыми устройствами, размещаемыми на том же кристалле. Для этого используется специальная архитектура CoreConnect, включающая в себя локальную шину процессора (PLB, Processor Local Bus), шину для связи с накристальными периферийными устройствами (OPB, On-chip Peripheral Bus) и интерфейс с памятью на кристалле (OCM, On-Chip Memory). Характеристики ядра PPC405, рассматриваемого в данной статье и использованного в ПЛИС фирмы Xilinx, представлены в таблице 1.

Таблица 1. Характеристики ядра PPC405

В таблице 1 не случайно приведены характеристики ядер, выполненных по двум техпроцессам. Первый вариант этого ядра использован в ПЛИС семейства Virtex-II Pro, а второй — в Virtex-4. Из приведенной таблицы (основанной на материалах фирмы IBM, а не Xilinx) видно, что улучшение технологического процесса приводит к вполне заметному росту производительности, снижению потребляемой мощности и уменьшению площади кристалла. Это позволяет предполагать, что и при дальнейших усовершенствованиях технологии производства цифровых микросхем ядра PPC будут соответствующим образом улучшать свои характеристики. Следовательно, сориентировавшись на PowerPC сейчас, можно будет надеяться на перенос наработанных технических решений на новую элементную базу.

Краткое описание характеристик ядра PowerPC 405

В семействах Virtex-II Pro и Virtex-4 используется процессорное ядро PowerPC 405 (PPC405). Если говорить более точно, речь идет о ревизии ядра PPC405D5. Кроме понятия «процессорное ядро», относящееся к собственно процессору, при описании используется также термин «процессорный блок», включающий в себя ядро, память на кристалле и логику, использующуюся для организации интерфейса между процессором и матрицей программируемых ресурсов ПЛИС. Архитектура PowerPC является, вообще говоря, 64-разрядной, но имеет 32-разрядное подмножество. Ядро PPC405 является 32-разрядным, но тот факт, что оно является реализацией достаточно мощной архитектуры, оставляет хорошие резервы для последующего роста. Далее приведены основные характеристики этого ядра.

Регистровая архитектура:

  • 32-разрядная целочисленная арифметика;
  • 32 регистра общего назначения (GPR).

Дополнительная поддержка для встраиваемых приложений:

  • операции в стиле little-endian;
  • гибкое управление памятью;
  • инструкции «умножение с накоплением»;
  • расширенные возможности отладки;
  • 64-разрядный основной регистр таймера (time base);
  • 3 таймера: с программируемыми интервалами (PIT, Programmable Interval Timer), с фиксированными интервалами (FIT, Fixed Interval Timer), сторожевой таймер; все таймеры синхронизированы с основным регистром таймера.

Средства повышения производительности:

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

Интегрированный кэш инструкций:

  • двухвходовый ассоциативный кэш инструкций 16 Кбайт;
  • 8 слов (32 байта) в каждой линии кэша;
  • линейный буфер выборки;
  • попадания в кэш при чтении команд поддерживаются линейным буфером выборки;
  • программируемая предвыборка следующей линии в линейный буфер выборки;
  • программируемая предвыборка для некэшируемых инструкций: полная линия (8 слов) или половина линии (4 слова);
  • неблокирующее заполнение линий кэша.

Интегрированный кэш данных:

  • двухвходовый ассоциативный кэш данных 16 Кбайт;
  • 8 слов (32 байта) в каждой линии кэша;
  • линейные буферы для чтения и записи;
  • попадания в кэш при чтении и записи поддерживаются линейными буферами;
  • поддержка кэша в режимах write-back и write-through;
  • программируемое выделение линий кэша;
  • передача операндов во время заполнения кэша;
  • неблокирующее заполнение кэша и сброс в основную память.

Интерфейс с блочной памятью на кристалле выполнен таким образом, что производительность при работе с ней аналогична производительности при попадании в кэш.

Управление памятью:

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

Расширенная поддержка отладки:

  • четыре точки останова по адресу инструкции;
  • две точки останова по адресу данных;
  • две точки останова по значению данных;
  • поддержка инструкций JTAG для записи в кэш инструкций.

В процессоре имеются два режима выполнения инструкций: привилегированный (Privileged Mode) и пользовательский (User Mode). Как это обычно и бывает для подобных режимов, привилегированный режим позволяет выполнять все инструкции, включая доступ к системным регистрам процессора. Этот режим предназначен для работы операционной системы и низкоуровневых драйверов. Напротив, пользовательский режим ограничивает доступ к некоторым возможностям и предназначен для запуска в нем пользовательских приложений.

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

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

  • Прямая регистровая адресация с непосредственным смещением. Базовый адрес хранится в одном из регистров, а непосредственное смещение задается в коде команды.
  • Прямая регистровая адресация со смещением. Базовый адрес и смещение хранятся в двух регистрах.
  • Прямая регистровая. Адрес данных хранится в регистре.

Переходы могут производиться по абсолютному или относительному адресу. Дополнительно имеются два регистра (count register, link register), которые также могут хранить адреса для перехода. Эти регистры облегчают организацию циклов со счетчиком и других алгоритмических конструкций. Регистры PPC405 показаны на рис. 1.

Регистры процессора PPC405
Рис. 1. Регистры процессора PPC405

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

Внутренняя структура ядра PPC показана на рис. 2.

Внутренняя структура PowerPC
Рис. 2. Внутренняя структура PowerPC

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

Шина CoreConnect

Шина CoreConnect включает в себя устройства, призванные обеспечить сопряжение процессорного ядра с прочими аппаратными ресурсами, расположенными на кристалле. Требование обеспечения совместимости аппаратного ядра процессора с различными устройствами обусловливает наличие достаточно богатого набора интерфейсов, не ограниченного потребностями только FPGA Xilinx, в ракурсе которых и ведется рассмотрение в данной статье. Набор интерфейсов с какой-то точки зрения можно назвать и избыточным, подразумевая под этим, что сопряжение с матрицей логических ячеек FPGA можно было бы выполнить и более простым способом. Однако в данном случае унификация характеристик и интерфейсов ядра в определенной степени защищает потребителей от появления на рынке непроверенных решений, отличающихся в деталях и, возможно, имеющих архитектурные недостатки. В этом смысле ориентация фирмы Xilinx на такую известную архитектуру, как PowerPC, весьма отрадна.

При рассмотрении шины CoreConnect следует помнить, что мощный процессор PowerPC для полного раскрытия своих возможностей требует достаточно большого объема памяти. Для процессоров с производительностью в несколько сотен MIPS естественно было бы использовать иерархическую организацию памяти, включающую в себя кэш первого уровня, статическую память для организации быстрого доступа к наиболее важным данным, динамическую или флэш-память большого объема, либо их комбинации. Кэш первого уровня объемом по 16 Кбайт для кода и данных уже размещен на кристалле, однако его объема явно недостаточно для тех задач, которые потенциально способен решать мощный (и достаточно дорогой) PPC405. Для связи с памятью, как расположенной на том же кристалле производителем системы, лицензировавшим PPC, так и внешней, используется «локальная шина процессора» (Processor Local Bus, PLB). Гарвардская архитектура с раздельными интерфейсами памяти кода и данных подразумевает наличие раздельных шин для памяти кода и данных — Instruction-Side PLB и Data-Side PLB. Прежде всего, эта шина ориентирована на подключение к процессору блочной памяти, имеющейся в FPGA Xilinx в большом количестве — до единиц мегабит. Подробнее с возможностями ПЛИС семейств Virtex-II Pro и Virtex-4 можно ознакомиться в статье «Эволюция ПЛИС серии Virtex» [1]. Блочная память, реализованная в этих ПЛИС, имеет синхронный интерфейс и способна работать на частотах процессорного ядра, обеспечивая максимально быстрый доступ к ней со стороны процессора. Можно еще раз подчеркнуть тот факт, что расположение памяти на том же кристалле исключает из проекта печатные проводники и связанные с ними проблемы обеспечения целостности сигналов на больших тактовых частотах, что требуется при подключении внешней микросхемы памяти. Вместо этого надлежащую организацию магистралей данных обеспечивает САПР ПЛИС при минимальных усилиях со стороны разработчика. В ПЛИС Virtex для этого имеется интерфейс OCM. Для накристальной памяти инструкций (Instruction-Side OCM) используется 64-разрядная шина данных, а для памяти данных (Data-Side OCM) — 32-разрядная шина. Для адресации накристальной памяти используется 14 младших разрядов шины адреса процессора, что дает соответственно 128 кб и 64 кб максимально адресуемой памяти. Однако при увеличении времени доступа, отводимого контроллеру, объем адресуемой памяти возрастает до 16 Мбайт в обоих случаях. Необходимо подчеркнуть, что речь идет о доступе к накристальной блочной памяти ПЛИС, а не об адресуемой памяти вообще, объем которой ограничивается только характеристиками процессора.

Для подключения устройств ввода-вывода используется шина накристальных периферийных устройств (OPB). Термин «накристальных» явно указывает на то, что цифровая часть периферийных устройств может быть реализована на базе программируемых ресурсов ПЛИС. Фактически, трудно представить себе альтернативное решение, имея доступ к нескольким десяткам тысяч программируемых логических ячеек в непосредственной близости от процессорного ядра. Возможность их подключения к процессору с помощью предусмотренной в нем шины периферийных устройств дает возможность реализовывать сколь угодно сложные цифровые устройства на базе программируемых ячеек ПЛИС и отображать их на адресное пространство PowerPC.

Возможность представления программируемых узлов ПЛИС в качестве внешних устройств, адресуемых PowerPC, достаточно важна в организационном смысле. В настоящее время эффективное использование устройств программируемой логики тормозится в том числе и тем, что для создания качественного изделия на базе ПЛИС, которое не только использует интересные технические решения, но и конкурентоспособно на рынке, необходимо иметь довольно квалифицированные кадры, которые к тому же должны обладать достаточно разносторонними навыками, чтобы разработать цифровую часть проекта на базе ПЛИС, обеспечить ее сопряжение с микропроцессорной системой и разработать соответствующее программное обеспечение. В этом случае гибкость ПЛИС является скорее негативным фактором, поскольку простота изменения цифровой части проекта оборачивается необходимостью более или менее существенного изменения интерфейса с микропроцессором и его программного обеспечения. В итоге разработчик, реализующий новое и более эффективное аппаратное решение какой-то задачи на базе ПЛИС, вынуждает своих коллег пересмотреть ранее разработанные ими составляющие проекта. В то же время использование ПЛИС не является однозначно приемлемым для целого ряда задач, в которых давно и успешно используются широко распространенные микроконтроллеры. Уместнее было бы сфокусировать усилия разработчика ПЛИС на получении мощного устройства цифровой обработки данных или параллельного вычислителя, который впоследствии будет подключен к стандартному процессору, обеспечивающему поток данных для обработки и поддерживающему устройства управления, индикации, внешние интерфейсы и пр., которые имеют массу недорогих решений. С появлением семейств Virtex-II Pro и Virtex-4 в качестве такого стандартного процессора, поддержанного широко распространенными средствами разработки, стало возможно использовать PowerPC.

Система команд PowerPC 405

Видимо, не стоит говорить о большей или меньшей функциональной насыщенности системы команд такого процессора, как PowerPC. Набор инструкций, поддерживаемых им, очень велик. В таблице 2 приведены только основные группы команд (в соответствии с технической документацией), чтобы дать общее представление о возможностях процессора.

Таблица 2. Основные группы команд

К сожалению, процессор не имеет аппаратной поддержки операций над числами с плавающей точкой. Однако эти операции можно эмулировать программно, или возложить на сопроцессор, реализуемый с помощью логических ячеек ПЛИС. Вообще говоря, сочетание мощной FPGA и высокопроизводительного процессора открывает множество возможностей их совместного использования. При этом матрица логических ячеек и процессорное ядро не просто размещены на одном кристалле — модуль процессора имеет специальное устройство, облегчающее тесную интеграцию PowerPC с создаваемыми пользователем сопроцессорами. Именно об этом речь и пойдет ниже.

Взаимодействие PowerPC с конфигурируемыми сопроцессорами

Возможности PPC405, и так достаточно богатые, могут быть еще больше расширены с помощью дополнительного сопроцессора, реализуемого на базе логических ячеек ПЛИС — так называемого конфигурируемого, или софт-процессора (soft processor). Речь идет не просто о размещении на кристалле дополнительного цифрового устройства, обмен с которым мог бы вестись путем его отображения на адресное пространство PowerPC. В составе процессорного блока имеется специальный контроллер конфигурируемых сопроцессоров — APU (Auxiliary Processor Unit). Схема его взаимодействия с аппаратным ядром представлена на рис. 3.

Рис. 3. Схема взаимодействия процессорного блока с конфигурируемым сопроцессором

На этом рисунке видно, что контроллер вспомогательных сопроцессоров активно участвует в процессе выполнения очередной команды. Уже после стадии декодирования команда параллельно поступает на вспомогательный декодер контроллера APU, с тем, чтобы на стадии исполнения операнды и код команды могли быть поданы в конфигурируемый сопроцессор. При этом к стадии WriteBack (WB) сопроцессор должен выдать соответствующий результат, передавая его через контроллер APU в основное процессорное ядро.

Подобные конфигурируемые сопроцессоры называются также Fabric Coprocessor Modules (FCM) [2]. Они могут иметь самые разные функции, но основными направлениями их использования часто являются:

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

Например, для добавления поддержки операций с комплексными числами необходимо описать новую команду сопроцессора для ее поддержки компилятором gcc:

Использовать такую команду в пользовательском приложении можно будет в виде:

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

Заключение

В этой части статьи были рассмотрены возможности встроенного в современные ПЛИС серии Virtex процессорного ядра. Суммируя приведенные материалы, можно отметить, что совместное использование на одном кристалле высокопроизводительного ядра и матрицы логических ячеек способно не только обеспечить высокую производительность, но и ускорить процесс разработки за счет представления программируемых устройств ПЛИС как особого вида сопроцессоров, подключаемых к PowerPC и расширяющих его возможности.

В заключительной части статьи будут рассмотрены имеющиеся на рынке аппаратные платформы на базе ПЛИС Xilinx с встроенными процессорными ядрами PowerPC, инструментальные средства и рекомендации по началу освоения данной технологии.

Окончание следует

Литература

  1. Тарасов И. Эволюция ПЛИС серии Virtex // Компоненты и технологии. 2005. № 1.
  2. Ansari A., Ryser P., Isaacs D. Accelerated System Performance with APU-Enhanced Processing // XCell journal. Issue 52.
  3. PowerPC Processor Block Reference Guide. EDK 6.1. September 2003.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *