Научная статья на тему 'Системы на кристалле на базе плис FPGA Xilinx с встроенными процессорами PowerPC'

Системы на кристалле на базе плис FPGA Xilinx с встроенными процессорами PowerPC Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
242
71
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Тарасов Илья

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Системы на кристалле на базе плис FPGA Xilinx с встроенными процессорами PowerPC»

компоненты ПЛИС

Продолжение. Начало в № 7'2005

Системы на кристалле на базе FPGA Xilinx

со встроенными процессорами PowerPC

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

к. т. н. процессорном ядре, вокруг которого часто и выполняется построение системы

tiie@kc.ru на кристалле.

Встраиваемые реализации процессоров 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

Технологические нормы 130 нм 90 нм

Рабочая частота (минимальное значение), МГц 366 400

Производительность, 0М1РБ 555 608

Типичное энергопотребление, мВт/МГц 0,5 при 1,5 В 0,3 при 0,9 В 0,19

Напряжение питания ядра, В 1,5 1,1

Рабочий диапазон температур -40...+105 °С -40...+105 °С

Площадь кристалла (ОРУ и кэш первого уровня), мм2 3,8 2,0

В таблице 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), сторожевой таймер; все таймеры синхронизированы с основным регистром таймера.

ПЛИС

компоненты I В3

Регистры пользовательского j режима (user mode)

Регистры привилегированного режима

Регистр состояния

CR

IРегистр исключений арифметики| с фиксированной точкой XER

Регистр связи

LR

Регистр счетчика

CTR

Пользовательский специальный регистр общего назначения

USPRG0

Специальные регистры общего назначения

_______{только чтение)____

SPRG4

SPRG5

SPRG6

SPRG7

Регистры базы таймера (только чтение)

тви

TBL

SPRG1

SPRG2

SPRG3

SPRG4

SPRG5

SPRG6

SPRG7

Регистры обработки исключений

EVPR

ESR

DEAR

SRR0

SRR1

SRR2

SRR3

Регистры управления памятью

PID

ZPR

гО | I 1 I | Регистр конфигурации DCCR

г1 DCWR

I CCR0 | ICCR

Специальные регистры общего назначения (SPR) SGR

г31 SLER

п ! SPRG0 SU0R

Регистры отладки

DBSR

DBCR0

DBCR1

DAC1

DAC2

DVC1

DVC2

IAC1

IAC2

IAC3

IAC4

ICDBR

Регистры таймера

TCR

TSR

PIT

Processor-Version Register I PVR 1

Регистры базы таймера

TBU

TBL

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

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

• статическое предсказание переходов;

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

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

• инструкции «умножение с накоплением», аппаратная поддержка умножения и деления (умножение за 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.

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

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

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

Шина CoreConnect

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

В4

компоненты

ПЛИС

точки зрения можно назвать и избыточным, подразумевая под этим, что сопряжение с матрицей логических ячеек 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 приведены только основные группы команд (в соответствии с технической документацией), чтобы дать общее представление о возможностях процессора.

ПЛИС

компоненты І В5

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

Add and Subtract Instructions Сложение и вычитание

Divide and Multiply Instructions Умножение и деление

Multiply-Accumulate Instructions Умножение с накоплением

Compare Instructions Сравнение

Logical Instructions Логические инструкции

Rotate Instructions Вращение

Shift Instructions Сдвиг

Load Instructions Загрузка

Store Instructions Сохранение

Load and Store with Byte Reverse Instructions Загрузка и сохранение с изменением порядка байтов

Load and Store Multiple Instructions Множественная загрузка и сохранение

Load and Store String Instructions Загрузка и сохранение строк

Branch Instructions Переходы

Condition Register Logical Instructions Условные логические инструкции

System Linkage Instructions Системные инструкции

Trap Instructions Инструкции управления ловушками

Synchronization Instructions Инструкции синхронизации

Processor Control Instructions Управление процессором

Cache Management Instructions Управление кэш-памятью

TLB Management Instructions Управление TLB

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

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

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

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

результат, передавая его через контроллер APU в основное процессорное ядро.

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

• поддержка операций с плавающей точкой;

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

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

udi0fcm<FCRT5/RT5>,<FCRA5/RA5/imm>, <FCRB5/RB5/imm>

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

struct complex {

int r, i; // описание комплексного числа, состоящего из

// 32-битных вещественной и мнимой частей

І;

complex a, b, r;

ldfcm(0, &a); // загрузка комплексного числа a врегистр 0

// сопроцессора

ldfcm(1, &b); // загрузка комплексного числа b в регистр 1

// сопроцессора

udi0fcm(2, 1, 0); // ранее описанная команда udi0fcm вычисляет // r = a + b, где r сохраняется в регистре 2

stdfcm(&r, 2); // сохранение комплексного результата

// в переменной r

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

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

зить процессор, дальнейшая работа может быть переложена на прикладного программиста, который, не вдаваясь в технические подробности, может рассматривать имеющуюся у него аппаратную платформу как 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.

i Надоели баннеры? Вы всегда можете отключить рекламу.