Статья: Динамическая поддержка расширений процессора в кросс-системе

}

Заметим, что две выдачи подряд этой команды процессором приведут к ситуации, когда одновременно будут исполняться две различные стадии этой функции (стадия умножения второй команды и стадия сложения первой команды). Такой эффект может быть использован для моделирования конвейера акселератора.

Пример 3. Команда свертки векторов, расположенных в памятях DM0 и TM0. Длительность команды зависит от данных (длина векторов задается регистром LOOPREG). Заметим, что в теле цикла за один такт выполняются несколько операций, использующих непересекающиеся ресурсы. Для синхронизации с процессором используется механизм прерывания:

ACC_FUNCTION CONV_ACC_DM0_TM0(INT<4> dreg, INT<4> treg) {

SMUL_16_16 (mulres, DM0[AR[dreg]++], TM0[AR[treg]++]);

FinishCycle();

while (LOOPREG>0) {

ADD_36_36 (ACC, ACC, mulres);

SMUL_16_16 (mulres,

DM0[AR[dreg]++], TM0[AR[dreg]++]);

LOOPREG--;

FinishCycle();

}

ADD_36_36 (ACC, ACC, mulres);

InterruptProcessor();

FinishCycle();

}

2.2.2.3. Функция декодирования

Функция декодирования dA задается описанием множества пар из формата машинного слова команды и ссылки на функцию поведения команды:

INSTRUCTION(< format_string>, < invoker_name>);

Формат машинного слова команды задается строкой в следующем алфавите:

Битовые символы: '0' и '1'

Параметрические символы: 'A-Z' и 'a-z'

Групповой символ: '*'

Разделительный символ: '-'

Символы из пунктов 1-3 называются значимыми символами. Заметим, что число значимых символов в строке формата команды должно быть равно разрядности машинного слова в системе.

Непрерывная цепочка параметрических символов задает операнд. Декодер акселератора выделит указанные биты и передаст полученное значение в функцию поведения команды в виде параметра pi. Различные операнды разделяются групповым или разделительным символом. Операнды нумеруются в порядке справа налево.

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

Пример:

К-во Просмотров: 215
Бесплатно скачать Статья: Динамическая поддержка расширений процессора в кросс-системе