Использование аппаратных интерпретаторов для управления неоднородными компонентами микропроцессорной системы

2

ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА И ПРОГРАММИРОВАНИЕ

ИСПОЛЬЗОВАНИЕ АППАРАТНЫХ ИНТЕРПРЕТАТОРОВ ДЛЯ УПРАВЛЕНИЯ НЕОДНОРОДНЫМИ КОМПОНЕНТАМИ МИКРОПРОЦЕССОРНОЙ СИСТЕМЫ

Р.Р. Ковязин, А.Г. Чистяков

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

Введение

Особенностью специализированных микропроцессорных систем, применяемых в промышленной автоматике (встроенные управляющие системы), является наличие неоднородных компонент [1]. В таких системах управление сводится к взаимодействию с гетерогенным набором объектов, куда входят: цифроаналоговые модули (ЦАП/АЦП), сетевые интерфейсы, каналы передачи данных и т.д. Информационное взаимодействие вычислительного ядра микропроцессорной системы с этими объектами в большинстве случаев осуществляется посредствам специализированных интегральных контроллеров. Набор интерфейсов этих модулей довольно разнообразен, поэтому доступ к ним со стороны вычислительного ядра усложнен, что сказывается на общей производительности системы.

Существует два традиционных подхода к проектированию встроенных систем в вопросе реализации вычислительного ядра [2] - использование микроконтроллеров. или микропроцессора совместно с заказной интегральной схемой.

Создание вычислительного ядра встроенной системы представляет собой сложную, слабо формализованную на сегодняшний день задачу. Усилия специалистов направлены на создание методик системного проектирования таких ядер [3]. Разработка подобных методик требует накопления опыта использования новой программируемой элементной базы. В статье приводится анализ результатов экспериментального проекта приборного контроллера. Проект выполнялся в рамках второго подхода к проектированию вычислительного ядра.

Организация встроенной системы на базе заказных схем

Рассмотрим процесс проектирования встроенных систем на базе заказных интегральных схем ASIC (Application Specific Integrated Circuits) совместно с микропроцессором. Вычислительное ядро системы представляет собой микропроцессор и специализированный периферийный расширитель на базе ASIC (см. рис. 1). Микропроцессор предназначен для реализации основного системного алгоритма управления, а периферийный расширитель занимается интерфейсным согласованием неоднородных компонент системы и предоставляет высокоуровневые функции обмена для микропроцессора.

Для реализации ASIC удобно использовать ПЛИС с архитектурой FPGA (Field Programmable Gate Array), которые с развитием проекта могут заменяться на более дешевые заказные структуры [4].

Для проектирования заказных интегральных схем сегодня существует довольно много инструментальных средств, например фирм Cadence и Mentor Graphics, которые

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

Рис. 1. Архитектура встроенной системы на базе микропроцессора с периферийным расширителем.

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

• интерфейс периферийного расширителя с микропроцессором;

• структура операционных устройств (ОУ) периферийного расширителя;

• модули управления ОУ и организация информационных потоков целевого алгоритма.

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

• параллельный интерфейс (системная шина микропроцессора);

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

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

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

(синхронное / асинхронное параллельно-последовательное преобразование, фильтрация, шифрация/дешифрация сигналов или данных и другие). Перечислим основные свойства описанных ОУ:

• относительно простая структурная организация (реализация в виде автомата на "жесткой" логике);

• низкий уровень программируемости;

• единообразный интерфейс;

• функционирование в режиме запрос/ответ.

Для управления ОУ в составе периферийного расширителя должны присутствовать программируемые управляющие модули. Количество таких устройств невелико (один или два). Главной функцией этих модулей является обеспечение работоспособности ОУ - подготовка и/или предварительная обработка данных объекта и их буферизация. Основные параметры таких модулей:

• довольно емкая архитектурная организация на базе автоматов с "программируемой" (хранимой в памяти) логикой;

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

• программируемость на уровне алгоритма (возможность перепрограммирования микропрограммы в работающей системе);

• согласованность интерфейса с ОУ.

В качестве управляющего модуля был использован проблемно-ориентированный аппаратный интерпретатор (АИ) [5,6], архитектура которого ориентирована на работу с ОУ, удовлетворяющими требованиям скорости обработки, объему адресуемых данных и имеющими однородный интерфейс. Можно гибко варьировать режим работы ОУ, изменяя микропрограммы АИ микропроцессором.

Для синтеза микропрограмм АИ должны быть разработаны специализированные инструментальные средства, куда входят:

• языки описания управляющих алгоритмов;

• оптимизирующие компиляторы и ассемблеры;

• средства отладки и анализа микрокода.

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

Реализация приборного контроллера

На базе описанной архитектуры была разработана система, состоящая из приборного контроллера и персонального компьютера: периферийный расширитель был реализован в ПЛИС, функции микропроцессора выполнял персональный компьютер. В качестве заказной структуры была использована ПЛИС фирмы Altera семейства ACEX EP1K100. Периферийный расширитель был размещен в приборном контроллере, подсоединяемом к компьютеру по интерфейсу USB. Для связи периферийного расширителя и микропроцессора использовался коммуникационный процессор на базе распространенной архитектуры x86 от фирмы AMD am186CC, работающий на тактовой частоте 40МГц. Структурная схема разработанной системы показана на рис. 2.

АИ имеет следующие архитектурные особенности:

• гарвардская архитектура;

• обработка 16-ти разрядных данных с использованием аккумулятора;

• имеется 4-х битный регистр флагов и группа команд условного перехода;

• все команды имеют одинаковую длину и унифицированный формат.

Работа с ОУ идет в режиме опроса, так как отсутствует система прерываний. АИ поддерживает не более 256 ОУ. Кроме этого, у него есть 256 ячеек под данные микропрограммы (локальные и временные переменные).

Рис. 2. Структура системы с приборным контроллером

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

• обмен данными с компьютером в соответствии с его запросами;

• обмен данными с АИ;

• управление работой АИ;

• слежение за ходом работы АИ.

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

• управление периферийным расширителем;

• обмен данными с периферийным расширителем;

• анализ данных, полученных от периферийного расширителя.

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

В системе есть три потока данных: два входных (РС ^ АИ) и один выходной (АИ ^ РС). Понятно, что скорость работы АИ выше скорости интерфейса, но из-за того, что микропрограмма производит обмен данными не постоянно, то можно избежать ситуаций ожидания данных, буферизируя их. Для каждого потока реализовано три буфера: буфер в АИ, буфер в статической памяти микропроцессора и буфер в памяти компьютера. Направление потоков и связь буферов показана на рис. 3.

Алгоритм управления Микропрограмма

Рис. 3. Буферы и потоки данных

Буферы, расположенные в ACEX и организованы по принципу FIFO. У каждого из буферов есть контроль количества данных (count) и граница (threshold), при пересечении которой исполнение микропрограммы приостанавливается.

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

буферами и буферами АИ. Кроме этого, получая сигналы о приостановке работы АИ, он возобновляет его работу, добавляя данные из своих входных буферов или читая данные в свой выходной буфер. Разумеется, все это происходит в случае наличия данных во входных буферах и свободного места в выходных буферах. Буферы микропроцессора организованы по принципу FIFO, но программным образом.

Последние буферы расположены в памяти компьютера и содержат непосредственные данные пользователя.

Среди всех описанных буферов самые маленькими являются буферы ACEX (512 байт на каждый буфер), а самыми большими - буферы, содержащие данные пользователя (размер почти неограничен). В то же время размер буферов в микропроцессоре и компьютере можно менять, а в ACEX он фиксированный. В оптимальном варианте нужно, с одной стороны, чтобы буферы не были слишком большими, а с другой стороны - чтобы АИ работал непрерывно, т.е. в буферах постоянно был необходимый объем данных (свободного места).

В рамках проекта был разработан набор инструментальных средств, включающий:

• компилятор языка высокого уровня (типа C). Он создает бинарные образы для их исполнения АИ, оптимизирует их по скорости исполнения, по объему кода и данных;

• компилятор языка Ассемблер. Он позволяет воспользоваться всеми возможностями, предоставляемыми АИ. С помощью него можно создавать файлы для симуляции выполнения микропрограммы в среде MAX+PLUS II;

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

• начальный загрузчик, позволяющий программировать ПЛИС и настраивать контроллер.

Заключение

Разработка полнофункционального варианта системы велась с использованием языка Verilog HDL и средств автоматического синтеза/размещения от фирмы Altera. Ресурсы периферийного расширителя занимают 80% кристалла ПЛИС. Применение АИ не было первой реализацией поставленной задачи. Сначала был предложен и реализован программный интерпретатор. По возможностям он был функциональнее АИ: он содержал 17 инструкций (АИ поддерживает 7 инструкций). Он поддерживал операции умножения, деления, которые были исключены из языка для АИ. Недостатками программного интерпретатора были объем кода и скорость его работы. Исполнение одной инструкции составляло несколько миллисекунд, в то время как у АИ - 100 нс.

Литература

1. S. Prakash and A. Parker. SOS: synthesis of application-specific heterogeneous multiprocessor systems // Journal of Parallel and Distributed Computing. 1992.V.. 16. PP.338 - 351.

2. Hardware-Software Codesign // IEEE Design & Test of Computers, January - March 2000. PP. 92 - 99.

3. W. H. Wolf. Hardware-Software Co-Design of Embedded Systems // Proceedings of the IEEE. V. 82. № 7. РР. 967 - 989. July 1992.

4. D. Wingard and A. Kurosawa. Integration Architecture for System-on-a-Chip Design // Proc. of the 1998 Custom Integrated Circuit Conference. РР. 85 - 88. May 1998.

5. R. Gonzalez and Xtensa, A Configurable and Extensible Processor // IEEE Micro. 20(2). March/April 2000.

6. J. A. Fisher..Customized instruction-sets for embedded processors // 36th DAC. РР. 253 - 257. June 1999.