Средства разработки приложений


Описание поведения


К семантике поведения акселератора относятся следующие элементы модели mA: множество ресурсов RA, функция ресурсов rA, множество операций ?A, множество дескрипторов команд IA и функция декодирования dA (вместе с CA).

2.2.2.1. Операции

Для задания операций из ?A используется язык C++. Ячейки памяти акселератора доступны в качестве глобальных переменных (регистровые файлы и памяти в виде массивов). Для удобства описания могут объявляться собственные локальные переменные. Также могут быть использованы возможности специальной библиотеки (например, N-битные типы данных INT< N>, UINT< N>, типы данных с фиксированной точкой FIXED< I,F>, операции битовых манипуляций и т.п.). Используемые в операции ресурсы обозначаются в виде вызова функции UseResources(resources) (тем самым задается функция rA). В существующей реализации список используемых в данной операции ресурсов передаются в виде битовой строки, где каждый ресурс соответствует определенному биту. Множество ресурсов RA задается в виде перечисления (enum) со значениями элементов по степеням двойки:

enum Resources {MAC_ADDER=1, MAC_MULTIPLIER=2, ALU_ADDER=4};

Пример 1. Операция по сложению двух 36-ти разрядных чисел:

void ADD_36_36(INT& res, INT a, INT b) { UseResources(MAC_ADDER); res = a + b; }

Пример 2. Операция по перемножению двух 16-ти разрядных знаковых чисел:

void SMUL_16_16(INT& res, INT a, INT b) { UseResources(); res = a * b; }

Заданная на C++ операция может быть оформлена в виде отдельной функции (см. примеры выше) или встраиваться непосредственно в тело функции поведения команды (см. примеры в 2.2.2.2).

2.2.2.2. Дескрипторы команд

Дескрипторы команд акселератора из IA задаются соответствующими функциями поведения команд. Функция поведения может принимать аргументы в виде параметров инструкции pi. Тем самым одна функция поведения может описывать набор дескрипторов (один дескриптор соответствует одному конкретному набору значений параметров). Тело функции поведения может описываться на языке C++.


Начало  Назад  Вперед