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


Описание поведения - часть 3


Заметим, что в теле цикла за один такт выполняются несколько операций, использующих непересекающиеся ресурсы. Для синхронизации с процессором используется механизм прерывания:

ACC_FUNCTION CONV_ACC_DM0_TM0(INT dreg, INT 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>);

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

  1. Битовые символы: '0' и '1'
  2. Параметрические символы: 'A-Z' и 'a-z'
  3. Групповой символ: '*'
  4. Разделительный символ: '-'

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

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

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

Пример:

INSTRUCTION("11-**-0000-0000-0001-LREG-GREG", Move_LREG_GREG);

Функция поведения MoveLREG_GREG (см. пример 1 в 2.2.2.1) имеет два параметра по 4 бита каждый (LREG[4;7] и GREG[0;3]). Биты [20;21] могут принимать любые значения для данной команды (в данном примере эти биты относятся к коду акселератора и используются командой запуска акселератора основного процессора).Остальные биты фиксированы и составляют КОП инструкции аскелератора.

Заметим, что совокупность всех строк форматов машинного слова задает множество допустимых кодов инструкций данного акселератора (CA в 2.1.2).

Число управляющих слотов NS задается директивой SLOTS(< NS>).




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



Книжный магазин