Skip to content

Реализация архитектуры с помощью языка описания аппаратуры LISA

sisupov edited this page May 6, 2016 · 1 revision

Аннотация

Разработка ASIP (проблемно-ориентированного процессора) включает в себя несколько основных стадий проектирования: изучение архитектуры, проектирование программного обеспечения, проверка системы и реализация дизайна. Платформа для проектирования процессоров LISA (LPDP), основанная на языке описания аппаратуры LISA, предоставляет единое окружение для этих стадий проектирования. Необходимое программное обеспечение для исследования архитектуры и разработки приложений могут быть получены из одной единой спецификации. В данной статье основное внимание уделяется стадии реализации и генерации синтезируемого HDL кода из модели LISA. Представлены получение архитектурной структуры и декодера, а также подходы к реализации тракта данных. Кроме того, проведено сравнение результатов синтеза сгенерированной и рукописной реализации блока постобработки DVB-T с низким энергопотреблением.

1. Введение

Сегодняшний рынок коммуникаций сталкивается с сильной конкуренцией и множеством новых стандартов. По этой причине некоторые системы, такие как мобильные устройства, сетевые продукты или модемы требуют новых встраиваемых процессоров (EP). Эти EP могут быть как общего назначения, такие как микроконтроллеры и цифровые сигнальные процессоры, так и проблемно-ориентированными. Решение между гибкостью и высокой оптимизацией для отдельных приложений достигается со временем при интенсивной разработке новой архитектуры. На самом деле, есть только небольшое расстояние между исследованием дизайна и нахождением лучшего в своем классе решения. Это объясняется тем, что процесс разработки нового ASIP разделяется на несколько этапов, таких как изучение дизайна, проектирование программных средств, интеграция системы и реализация дизайна. Кроме того, различными стадиями проектирования занимаются различные группы инженеров с экспертизой в своей области. Автоматизация проектирования в основном ограничена отдельными фазами проектированияю Даже программные средства и языки описания меняются от фазы к фазе. Таким образом, очень важный, но времязатратный фактор - коммуникация между различными группами хотя бы на этапе проектирования. Время разработки может быть существенно уменьшено за счет перенастраиваемого подхода с использованием языка описания аппаратуры. LISA (Язык описания архитектуры набора команд) разработан для автоматической генерации совместимых программных средств и синтезируемого HDL кода.

2. Язык LISA

Язык LISA нацелен на формализованное описание программируемых архитектур, их периферийных устройств и интерфейсов. Он был разработан, чтобы ликвидировать разрыв между чисто структурно-ориентированными языками (Verilog, VHDL) и языками наборов инструкций для исследования архитектуры. Синтаксис языка обеспечивает высокую гибкость описания наборов команд различных процессоров, например, SIMD, MIMD и VLIW-архитектур. Кроме того, могут быть легко смоделированы процессоры со сложными конвейерами. Описание машины на LISA предоставляет информацию, состоящую из следующих компонентов:

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

Этих различных моделей достаточно для генерации программных средств, а также представлений HDL, каждого со своими конкретными требованиями. Более того, модели LISA могут охватывать широкий диапазон уровней абстракции. Это включает в себя все уровни, начиная с чисто функционального взгляда, моделирования тракта данных архитектуры, заканчивая точными RTL моделями. Помимо правильного описания структуры, RTL модели включают в себя подробную информацию о модели микроархитектуры. Таким образом, эти модели могут быть использованы для генерации HDL-представления архитектуры, с использованием языков VHDL, Verilog или SystemC. Конечно, рабочий набор программных средств может быть получен из всех уровней абстракции.

3. Смежные направления исследований

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

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

То же самое ограничение в отношении генерации функциональных блоков относится к ISDL. Язык ISDL является расширенной версией nML и позволяет генерировать полный набор инструментов, состоящий из компилятора языка высокого уровня, ассемблера, компоновщика и симулятора. Так как генерация функциональных блоков является результатом процесса анализа и оптимизации HDL генератора HGEN, проектировщик имеет лишь косвенное влияние на сгенерированную модель HDL. Кроме того, никаких результатов по эффективности генерируемого кода HDL не дается. В отличие от языков набора команд, SystemC представляет собой подход к совмещению требований дизайна системного уровня и аппаратной реализации. Компании, разрабатывающие полупроводниковые приборы и встроенное программное обеспечение, анонсировали Открытую инициативу SystemC (OSCI) в сентябре 1999 года. SystemC основан на языке программирования C++ и через библиотеку предоставляет все элементы, необходимые для реализации аппаратуры. Он включает в себя временную модель, параллелизм и реактивное поведение. Тем не менее, SystemC отличается от LISA, так как проектировщик не в состоянии получить средства разработки программного обеспечения из архитектурной модели, так как в VHDL и в Verilog информация о наборе команд отсутствует.

4. Разработка архитектуры

Сегодняшний стандартный процесс разработки архитектуры использует языки описания в двух областях: для исследования архитектуры, где программные средства реализованы на языке высокого уровня, таком как C/C++, чтобы описать целевую архитектуру на основе набора команд, в то время как языки описания аппаратуры, такие как Verilog и VHDL используются для моделирования основной аппаратуры в деталях для целей реализации. Очевидно, что объединение процессов разработки программных средств и HDL описания чрезвычайно выгодно. Как видно на рисунке 1, компилятор LISA генерирует оба направления, а изменения в дизайне влияют только на описание LISA (LISA description на рисунке). Благодаря этому, проблемы согласованности исчезают, сгенерированные средства разработки программного обеспечения и код HDL являются построенными корректно. Платформа для проектирования процессоров LISA (LPDP) является средой, которая позволяет автоматически генерировать средства разработки программного обеспечения для исследования архитектуры и проектирования приложений, интерфейсы совместного моделирования аппаратуры и программного обеспечения, аппаратную реализацию, на основе одной единственной спецификации целевой архитектуры на языке LISA. Набор инструментов LISA включает в себя следующие программы:

  • Отладчик языка LISA для отладки набора команд, а также его поведения, со специальным графическим интерфейсом.
  • Ассемблер, который транслирует текстовые инструкции в объектный код для целевой архитектуры.
  • Компоновщик, который конфигурируется с помощью специального командного файла.
  • Симулятор набора инструкций для потактовой симуляции, включающий в себя поддержку глубоких инструкций и конвейеризации данных.

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

5. Реализация архитектуры

Платформа LPDP поддерживает генерацию HDL представления архитектуры. Так, генерируемая HDL модель не состоит из заранее определенных компонентов, таких как АЛУ или контрольная логика, компилятор LISA должен вывести всю необходимую информацию из данного описания LISA. Таким образом, сгенерированные компоненты HDL модели могут быть полностью сравнены с компонентами модели LISA, изображенными на рисунке 2:

  • Конфигурация памяти, которая объединяет наборы регистров и памяти, включая конфигурацию шины, может быть получена прямо из модели памяти LISA.
  • Структура архитектуры, такая как стадии конвейера и конвейерные регистры, генерируется. Необходимая информация берется из модели ресурсов, модели поведения и микроархитектурной модели.
  • Функциональные блоки генерируются из микроархитектурной модели. В зависимости от того, какой язык описания аппаратуры используется, функциональные блоки генерируются как пустые фреймы или с полной функциональностью. одробно обсуждены в разделе 5.3.
  • Декодеры появляются из информации, включенной в модель набора команд и временную модель.
  • Контроллер конвейера также генерируется из модели набора команд и временной модели.

Сотношение между LISA и сгенерированными HDL компонентами является основой для приемлимого процесса реализации. Необходимые изменения в HDL модели могут быть применены к модели LISA, или, при необходимости, к сгенерированной модели HDL. На самом деле, проектировщик имеет полный контроль над сгенерированной HDL моделью со всеми его компонентами. Кроме того, он имеет выбор, какое генерировать представление целевой архитектуры: VHDL, Verilog или SystemC. Поскольку современные EP (встраиваемые процессоры) оптимизированны относительно тактовой частоты, площади кристалла или потребления энергии, сгенерированный код HDL должен удовлетворять жестким ограничениям, чтобы быть приемлемой заменой HDL коду, написанному опытными проектировщиками. В особенности, тракт данных архитектуры весьма критичен, и, в большинстве случаев, должен оптимизироваться вручную. Часто, полностью заказные техники проектирования должны быть использованы для соблюдения ограничений по потреблению энергии и тактовой частоте. Так как модель поведения LISA описана на языках C/C++, она не может быть эффективно преобразована в VHDL или Verilog. Таким образом, для функциональных блоков генерируются только фреймы. Если выбрана SystemC, тракт данных будет также сгенерирован, как описано в разделе 5.3. Различные части сгенерированной HDL модели сейчас будут обсуждены более детально.

5.1. Структура HDL модели

Модели ресурсов и памяти LISA покрывают информацию о конфигурации регистров, конфигурации памяти, конвейере. Эта информация используется для того, чтобы сгенерировать базовую структуру HDL модели. Базовая структура состоит из различных сущностей для регистровых ресурсов, ресурсов памяти и конвейера, как показано на рисунке 5. Регистровые ресурсы полностью генерируются, включая HDL код уровня RTL, для моделирования поведения регистров. Однако,сущности памяти остаются пустыми, так что проектировщик может поместить желаемую модель памяти в эту сущность. Конвейер состоит из нескольких сущностей, представляющих стадии конвейеризации и регистры конвейера. Дополнительно, конвейер содержит контроллер конвейера, полученный из модели LISA. Поскольку LISA представляет собой формализованный способ инициировать функции конвейера, такие как flush или stall, генератор HDL способен испрользовать эту информацию. Более того, контроллер конвейера управляется различными декодерами, размещенными в сущностях стадий конвейеризации. Стадии конвейеризации содержат сущности, представляющие функциональные блоки. Точнее, функциональные блоки реализуют тракт данных и будут обсуждены позднее. Кроме декодеров, генерируются мультиплексоры, чтобы избежать конфликтов драйвера. Эти конфликты драйвера могут возникнуть, если несколько функциональных блоков требуют уникального доступа к одним и тем же ресурсам. HDL генератор извлекает информацию об уникальности из информации, включенной в модель набора команд LISA и использует временную модель LISA для генерации корректных мультиплексоров.

5.2. Генерация декодера

Генерация декодера требует информацию из различных компонентов модели LISA. На самом деле, требуется детальная информация об аппаратных операциях и расписании их исполнения. Таким образом, декодер получается из модели набора команд, временной модели и микроархитектурной модели. Эти модели реализованы несколькими операциями LISA, которые упорядочены в древовидной структуре. Более того, отдельная инструкция может быть назначена на отдельную стадию конвейера. Следовательно, поведение инструкции, например, инструкции сложения, может быть распределено между несколькими различными операциями LISA, как показано на рисунке 3:

  • Операция decode назначена на стадию DE. Эта операция загружает операнды из регистров общего назначения в регистры конвейера.
  • Операция addition, которая складывает значения в регистрах конвейера и записывает результат в другой регистр конвейера. Эта операция назначена на стадию EX.
  • Операция writeback, которая назначена на стадию WB, записывает значение из регистра конвейера в регистр общего назначения.

Операция исполнения (execution) зависит от временной модели LISA. Принимая во внимание, что временная модель является результатом того факта, что операции LISA могут активировать друг друга, как показано стрелками на левой части рисунка 3. Таким образом, расписание, которое управляет исполнением модели поведения, включено в операции LISA. Эти активационные последовательности транслируются в контрольные сигналы HDL модели, которые выставлены или сброшены в зависимости от информации, приведенной в разделе кодирования соответствующей операции LISA. Декодеры генерируются на каждой стадии старта активационного сигнала. Кроме того, два декодера генерируются, соответственно, один на стадии DE и один на стадии EX. Если активационная последовательность будет изменена таким образом, что операция декодирования активирует все остальные операции LISA, будет сгенерирован только один декодер на стадии DE конвейера.

5.3. Реализация тракта данных

Clone this wiki locally