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

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

2.1.3.3. Обмен данными и синхронизация с процессором

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

Разделение доступа к общей памяти в нашей модели соответствует типу CREW (Common Read Exclusive Write). Это означает, что процессор и акселераторы могут одновременно (в рамках текущего такта) читать из ячейки памяти, однако одновременная запись запрещена. В рассматриваемой модели области памяти могут иметь задержку записи, характеризуемую скоростью доступа к памяти (см. 2.1.1.1). По умолчанию, все области памяти имеют задержку 1, то есть изменения могут быть прочитаны только на следующем такте (flip-flop модель). Заметим, что если задержка больше ноля, то возможна одновременная запись и чтение одной и той же ячейки, при чтении считывается предыдущее значение.

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

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

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

Частным случаем пункта 2 является вызов акселератором прерывания основного процессора. Обработчик прерывания может прочитать результаты вычислений акселератора.

2.2. Средства описания конкретных моделей акселераторов

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

Соответствующие определения были даны в 2.1.1 и 2.1.2, где также было показано, что они однозначно задают все элементы абстрактной модели:

Для описания конкретных моделей акселераторов в ИСП РАН был разработан язык спецификации ISE (Instruction Set Extension). Кроме собственно спецификации соответствующих элементов конкретной модели акселератора (см. выше), в язык также входят средства описания дополнительной информации об ассемблерном синтаксисе команд акселератора, отображении ассемблерных команд в машинные коды и описание форматов для визуализации областей памяти в отладчике. Модель акселератора далее будет отождествляться со спецификацией этой модели на языке ISE.

2.2.1. Дескриптор структуры памяти

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

Памяти данных

Регистровые файлы

Одиночные регистры

С помощью этих конструкций можно задать дескриптор структуры памяти (см. 2.1.1.1).

Пример. Структура памяти простого акселератора:

две памяти данных LDM и TM размером 2048 слов каждая с разрядностью 16 и 64 бита со скоростью доступа 3 такта

Регистровый файл GRF из двух 16-ти разрядных регистров GR0 и GR1

Одиночный регистр-аккумулятор ACR разрядностью 36 бит

DECLARE_MEMORY(INT(16, 3), 2048) LDM;

DECLARE_MEMORY(INT(64, 3), 2048) TM;

DECLARE_REGISTERS_FILE(INT(16), 2) GRF;

DECLARE_REGISTER(UINT(36)) ACR;

// debugging names and registers file structure

MEMORY(LDM, "Acc LDM");

MEMORY(TM, "Acc TM");

REGFILE_BEGIN(GRF, "General Registers")

REGISTER(0, "GR0");

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