Анализ существующих подходов
В предыдущих разделах были рассмотрены различные средства описания аппаратуры и соответствующие методы построения кросс-инструментов. В данном разделе проводится итоговый сравнительный анализ рассмотренных решений.
Итак, качественные характеристики описанных выше классов языков для описания аппаратуры и соответствующих методов построения кросс-инструментария представлены в табл. 1.
Таблица 1. Характеристики языков описания аппаратуры и соответствующих методов построения кросс-инструментов.
На основе данных, приведённых в табл. 1, можно сделать следующие выводы (см. краткую сводку в табл. 2):
- HDL-языки описания аппаратуры позволяют описывать наиболее точные модели аппаратуры и автоматически получать соответствующий симулятор, однако их использование в качестве основы для построения кросс-инструментария для прототипирования аппаратуры и разработки прикладных программ не представляется целесообразным ввиду низкой скорости работы симулятора, высокой трудоемкости построения модели аппаратуры и сложности внесения в нее изменений на уровне системы команд, а также из-за отсутствия в языке конструкций для задания информации, необходимой для построения остальных кросс-инструментов в дополнение к симулятору.
- ADL-языки предоставляют наиболее удобные возможности для описания моделей аппаратуры на уровне системы команд, а соответствующий метод автоматического построения кросс-инструментария позволяет эффективно использовать получаемые инструменты для прототипирования аппаратуры. Однако использование существующих ADL-решений не позволяет получать инструменты качества, достаточного для разработки реальных программ, из-за неточности получаемой модели, невысокой скорости работы и ограниченной функциональности получаемых инструментов.
- Ручная реализация необходимых кросс-инструментов на языках программирования общего назначения на сегодняшний день является практически единственным методом построения полного набора кросс-инструментария производственного качества (с высокой скоростью работы, достаточной точностью модели и удобной функциональностью, адаптированной под конкретную аппаратуру).
Однако этот способ практически исключает возможность использовать такой кросс-инструментарий на этапе прототипирования аппаратуры из-за высокой трудоемкости и временных затрат для создания начальной версии инструментария и для последующих циклов его обновления для отражения различных вариаций проектируемой аппаратуры.
Отдельно стоит отметить, что ни один из указанных методов явно не поддерживает расширяемые архитектуры в смысле обеспечения разделения технической ответственности и интеллектуальной собственности в получаемых для полной системы инструментах между производителями отдельных компонентов.
| Область применения |
На основе HDL-языков |
На основе ADL-языков |
На основе C, C++, … |
Для прототипирования аппаратуры |
Ограничено |
Эффективно |
Практически невозможно |
Для производственной разработки прикладных программ |
Практически невозможно |
Ограничено |
Эффективно |
Таблица 2. Эффективность применения кросс-инструментов, получаемых рассмотренными методами на основе различных языков.
Таким образом, наиболее близким (хотя и с существенными недостатками) из рассмотренных методов построения кросс-инструментов для решения постав-ленных задач является метод автоматической генерации кросс-инструментов на основе спецификации на некотором ADL-языке. Рассмотрим более подробно сравнительные характеристики описанных выше ADL языков и соответствующих инструментальных средств поддержки (см. табл. 3).
Таким образом, ни один из существующих ADL-языков не позволяет описывать потактово-точные модели аппаратуры, включающие в себя все типичные для встраиваемых архитектур возможности: конвейер, прерывания, циклы с нулевой задержкой, периферию, зависимости между командами и отдельными операндами (для диагностики конфликтов). Поддержка расширяемой аппаратуры присутствует только в EXPRESSION, но и там соответствующие описания могут быть созданы только в рамках единой спецификации всей системы, что не позволяет разделять описания отдельных компонентов. Кроме того, ни одно из существующих инструментальных решений на основе ADL-языков не поддерживает генерацию полного набора кросс-инструментов, а скорость работы и удобство использования отдельных получаемых компонентов остаются на низком уровне.
| Характеристика |
nML |
ISDL |
EXPRES-SION |
| Общие возможности |
| Описание синтаксиса ассемблера и бинарного кодирования команд |
+ |
+ |
- |
| Описание потактового поведения команд |
- |
- |
неявно |
| Описание иерархии памяти |
+ |
+ |
+ |
| Описание структуры функциональных модулей |
- |
- |
+ |
| Поддержка описания различных особенностей аппаратуры |
| Машинное слово переменной длины |
- |
+ |
- |
| Межкомандные зависимости |
- |
+ |
? |
| Ограничения на комбинации операндов команд |
+ |
+ |
- |
| Конвейер |
- |
- |
+ |
| Прерывания |
- |
- |
- |
| Циклы с нулевой задержкой |
- |
- |
- |
| Сопроцессоры |
- |
- |
+ |
| Периферийные устройства |
- |
- |
- |
| Возможности инструментальной поддержки |
| Генерация симулятора |
+ |
+ |
+ |
| Потактово-точная симуляция |
- |
- |
+- |
| Скорость симулятора (модельных тактов в сек.) |
106 |
? |
106 |
| Генерация ассемблера |
+ |
+ |
- |
| Генерация дисассемблера |
+ |
- |
- |
| Генерация компоновщика |
+ |
+ |
- |
| Генерация пошагового символьного отладчика |
- |
- |
- |
| Интегрированная среда разработки (IDE) |
- |
- |
- |
Таблица 3. Возможности основных современных ADL-языков и соответствующих инструментальных средств поддержки.
Таким образом, ни один из существующих ADL-языков не позволяет описывать потактово-точные модели аппаратуры, включающие в себя все типичные для встраиваемых архитектур возможности: конвейер, прерывания, циклы с нулевой задержкой, периферию, зависимости между командами и отдельными операндами (для диагностики конфликтов). Поддержка расширяемой аппаратуры присутствует только в EXPRESSION, но и там соответствующие описания могут быть созданы только в рамках единой спецификации всей системы, что не позволяет разделять описания отдельных компонентов. Кроме того, ни одно из существующих инструментальных решений на основе ADL-языков не поддерживает генерацию полного набора кросс-инструментов, а скорость работы и удобство использования отдельных получаемых компонентов остаются на низком уровне.