Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Руководство пользователя по сигнальным процессорам Sharc

.pdf
Скачиваний:
150
Добавлен:
01.05.2014
Размер:
9 Мб
Скачать
☆

Проектирование системы 11

11.7.1.1. Команды незадержанных переходов

Если переход незадержанный (JUMP, CALL, RTS, RTI), то две команды после команды перехода (которые находятся в стадиях выборки и декодирования) не выполняются. Эти операции прерываются, и процессор выполняет две команды NOP. Этой задержки в два цикла можно избежать при использовании команд задержанного перехода, когда выполняются две последующие команды. Заметим, что фактический порядок выполнения программы отличается от видимого порядка операций в вашей программе. Вы должны помнить, что перед тем, как произойдет команда перехода, выполняются два дополнительных цикла.

11.7.1.2. Обращение к данным памяти программы при неудачном обращении к кэшу

Процессор проверяет кэш команд при каждом обращении к данным памяти программы. Если необходимая команда находится в кэше, то выборка команды из кэша происходит параллельно с обращением по шине данных памяти программы – и команда выполняется за один цикл. Однако, если команды нет в кэше, ADSP 2106x должен ждать выполнения доступа по шине данных памяти программы, прежде чем он сможет выбрать следующую команду. Это приведет к задержке минимум в один цикл (или больше, если при обращении по шине данных памяти программы к внешней памяти используются состояния ожидания).

Задержка произойдет, даже если обращение по шине данных памяти программы условное и условие неверно. Смотри «Двойной доступ к данным» далее в этом разделе.

11.7.1.3. Доступ к данным памяти программы в цикле

Процессор кэширует команду, которую необходимо выбрать при выполнении обращения к данным по шине памяти программы. Из за конвейерного выполнения эта команда находится обычно через две ячейки после команды обращения к данным по шине памяти программы. Если обращение к данным по шине памяти программы выполняется в цикле, тогда при первой итерации цикла обычно происходит одно неудачное обращение к кэшу, а во всех последующих итерациях цикла – удачные обращения. Таким образом, при выполнении цикла добавится один дополнительный цикл.

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

431

11 Проектирование системы

Число неудачных

Длина цикла

Адрес выполняемого обращения к

обращений к кэшу

(число команд)

данным по шине памяти программы

1

>2

Не е или (е 1)

2

і2

е или (е 1)

3

1

Команда цикла с одной итерацией

е – адрес конца цикла

 

 

Два неудачных обращения: Если обращение к данным памяти программы выполняется в последних двух командах цикла, то обычно происходят два неудачных обращения к кэшу: на первой и на последней итерации (в сумме добавится два дополнительных цикла). На первой итерации ADSP 2106x необходимо выбрать команду в начале цикла (первую или вторую). На последней итерации ADSP 2106x необходимо выбрать одну из двух команд, следующих за циклом. В каждой из этих точек произойдет неудачное обращение к кэшу при выполнении в первый раз кода, содержащего цикл.

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

11.7.1.4. Циклы, состоящие из одной или двух команд

Организованные по счетчику циклы, состоящие из одной или двух команд, могут вызвать задержку, если они не выполняются с минимальным числом итераций. ADSP 2106x проверяет условие завершения цикла за две команды до его конца. В вышеупомянутых коротких циклах в момент проверки условия завершения цикла уже выбраны команды в начале цикла. Поэтому, если условие завершения верно, две выбранные команды в конвейере должны прерываться – вместо них выполняются команды NOP.

Циклы, состоящие из одной команды, которые выполняются один раз или дважды, и циклы, состоящие из двух команд, которые выполняются только один раз, требуют после последней итерации двух непроизводительных циклов для очистки конвейера команд, так как имеются две прерванные команды. Заметим, что эти непроизводительные циклы добавляются к любым дополнительным циклам, вызываемым обращением к данным по шине памяти программы внутри цикла (см. предыдущий раздел). В этих случаях для устранения непроизводительных циклов вместо организации цикла используйте последовательный код.

432

Проектирование системы 11

11.7.1.5. Запись данных в регистр DAG

Если за командой записи данных в регистр генератора адреса данных (DAG) следует команда, которая использует любой регистр в том же самом DAG для адресации данных, команда модификации или команда косвенного перехода, то процессор добавляет дополнительный цикл (NOP) между этими двумя командами. Это происходит из за того, что для выполнения обеих операций требуется одна и та же шина; следовательно, выполнение второй операции должно быть задержано. Например:

L2=8;

DM(I0,M1)=R1;

L2 находится в том же DAG, что и I0 (и M1), поэтому после записи в L2 вставляется дополнительный цикл.

11.7.1.6. Состояния ожидания

Определенное число состояний ожидания и циклов простоя шины и (или) использование внешнего сигнала подтверждения (АСК) могут задаваться при выполнении обращения к внешней памяти. Если используются только запрограммированные состояния ожидания и циклы простоя шины, то задержка точно равна числу состояний ожидания или циклов простоя шины (1 состояние ожидания = 1 цикл). Если используется внешний сигнал подтверждения (один или в комбинации с программируемыми состояниями ожидания), то задержка зависит от внешней системы и может изменяться.

11.7.2. Ограничения для задержанных переходов

Команда задержанного перехода и две команды, которые следуют за ней, должны выполняться последовательно. Любое прерывание, которое генерируется между командой задержанного перехода и одной из двух следующих за ней команд, не обрабатывается, пока переход не будет выполнен.

Задержанный переход может использоваться с командами JUMP, CALL, RTS, RTI. Двумя командами, следующими сразу после задержанной JUMP, не могут быть:

♦Другие команды CALL, RTS, RTI, JUMP.

♦Команда DO UNTIL.

Двумя командами, следующими сразу после задержанных CALL, RTS, RTI, не могут быть:

♦Другие команды CALL, RTS, RTI, JUMP.

♦Команда DO UNTIL.

♦Команды помещения в стек или извлечения из стека счетчика команд.

♦Команды записи данных в стек счетчика команд или записи указателя вершины стека счетчика команд.

433

11 Проектирование системы

11.7.3. Инициализация циклического буфера

Настройка циклического буфера выполняется путем инициализации регистра L положительным ненулевым значением и загрузки соответствующего (с таким же номером) регистра В базовым адресом буфера. Базовый адрес или начальный адрес – это самый младший адрес буфера. Соответствующий регистр I автоматически загружается тем же самым значением.

11.7.4. Запрещенные передачи в регистры DAG

Команды следующих типов могут выполняться процессором, но приводят к неправильному результату, поэтому эти команды запрещаются ассемблером семейства ADSP 2106х:

♦Команда, которая сохраняет содержимое регистра DAG в памяти, используя косвенную адресацию того же генератора, с обновлением индексного регистра или без обновления. Команда записывает неправильные данные в память или

обновляет неправильный индексный регистр.

DM(M2,I1)=I0; или DM(I1,M2)=I0;

♦Команда, которая загружает регистр DAG из памяти, используя косвенную адресацию того же генератора с обновлением индексного регистра. Команда или загрузит регистр генератора или обновит индексный регистр, но не

выполнит обе операции.

L2=DM(I1,M0);

11.7.5. Две записи в регистровый файл

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

♦память данных (шина памяти данных) или универсальный регистр;

♦память программы (шина памяти программы);

♦ALU (арифметико логическое устройство);

♦умножитель;

♦устройство сдвига.

11.7.6. Вычислительные устройства

При преобразовании числа с фиксированной точкой в число с плавающей точкой граница округления всегда 40 бит, даже если бит RND32 установлен.

434

Проектирование системы 11

Нулевой флаг ALU (AZ) означает как нулевой результат, так и потерю значащих разрядов результата с плавающей точкой.

Передача данных между регистрами MR и регистровым файлом рассматривается как операция умножителя и описывается в списке операций умножителя в Приложении В

11.7.7. Ограничения при обращении к пространству памяти

Три внутренние шины (РМ, DM и I/O) могут использоваться для обращения к карте памяти процессора в соответствии со следующими правилами:

♦По шине памяти данных (DM) можно обращаться во все пространства памяти.

♦По шине памяти программы (РМ) можно обращаться только к пространству внутренней памяти и младшим 12 мегасловам пространства внешней памяти.

♦По шине ввода вывода (I/O) можно обращаться во все пространства памяти, за исключением отображенных в карте памяти регистров IOP (в пространстве внутренней памяти).

Заметим, что в Версии кристалла 1.0 (Silicon Revision 1.0) и ранее операция адресации с пред модификацией не должна изменять адресуемое пространство памяти. Например, пред модификация адреса в пространстве внутренней памяти ADSP 2106х не должна генерировать адрес в пространстве внешней памяти. Есть одно исключение из этого правила: команда косвенного перехода (JUMP) или команда вызова (CALL) с пред модификацией адреса могут вызывать переход из внутренней памяти во внешнюю. Версии кристалла 2.x (Silicon Revision 2.х) и

позднее не имеют этих ограничений.

11.7.8. Смешивание 32-х и 48-разрядных слов в блоке памяти

32 разрядные данные и 48 разрядные команды могут храниться в одном блоке памяти при условии, что адреса всех команд младше адресов данных. Ни одна команда не может храниться по адресу старше, чем самый младший адрес любого слова данных. Это ограничение необходимо для предотвращения перекрытия адресов 32 разрядных и 48 разрядных слов. Команды должны храниться, начиная с младшего адреса блока.

11.7.9. Короткие 16-разрядные слова

При считывании 16 разрядных коротких слов в регистры ADSP 2106x слова автоматически расширяются до 32 разрядных чисел. 16 старших разрядов заполняются нулями или дополняются по знаку. Это определяется значением

435

11 Проектирование системы

бита SSE в регистре MODE1. Если SSE=0, то 16 старших разрядов заполняются нулями. Если SSE=1, то 16 старших разрядов дополняются по знаку (исключением является считывание короткого слова из регистра PX – в этом случае старшие разряды всегда заполняются нулями).

11.7.10. Двойной доступ к данным

Независимые шины памяти программы и памяти данных позволяют ядру процессора ADSP 2106х одновременно обращаться к командам и данным в обоих блоках памяти. Команды выбираются из памяти по шине памяти программы или из кэша команд. К данным можно обращаться по шине памяти данных (используя DAG1) и по шине памяти программы (используя DAG2).

Два блока памяти процессоров ADSP 2106х могут быть сконфигурированы таким образом, чтобы хранить различные комбинации 48 разрядных команд и 32 разрядных данных. Тем не менее, максимальная эффективность (т. е. выполнение двух команд доступа к данным за один цикл) достигается, когда один блок содержит смесь команд и данных памяти программы, а другой блок содержит только данные памяти данных. Это означает, что для команды, требующей двух обращений к данным, шина PM (и DAG2) будет использоваться для доступа к данным из смешанного блока, а шина DM (и DAG1) будет использоваться для доступа к данным из блока, содержащего только данные,

причем выбираемая команда должна быть доступна из кэша. Другой способ состоит в том, чтобы хранить один операнд во внешней памяти, а другой в любом блоке внутренней памяти.

При реализации цифровых фильтров и быстрого преобразования Фурье с использованием процессоров для некоторых команд должны быть доступны два операнда данных. В цифровом фильтре, например, коэффициенты фильтра могут храниться в виде 32 разрядных слов в том же самом блоке памяти, который содержит 48 разрядные команды, в то время как 32 разрядные выборки данных хранятся в другом блоке. Это обеспечивает выполнение в одном цикле команд с двойным доступом к данным, когда коэффициенты фильтра доступны по шине РМ с использованием DAG2, а команда доступна из кэша.

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

♦два адреса должны размещаться в различных блоках памяти (т. е. один в Блоке 0, другой в Блоке 1);

♦один адрес должен быть сгенерирован DAG1, а другой DAG2;

♦адрес DAG1 не должен указывать на тот же самый блок памяти, из которого должна быть выбрана команда;

♦команда должна быть следующего типа:

436

Проектирование системы 11

Compute, Rx=DM(I0-I7, M0-M7), Ry=PM(I8-I15, M8-M15);

♦ (Заметим, что чтение и запись могут быть смешаны.)

11.8. Задержка данных, время ожидания и производительность

В табл. 11.5 и 11.6 приведены задержка данных, время ожидания и производительность для ADSP 2106x. Задержка данных и время ожидания определяются как число циклов (после первого цикла), требуемых для выполнения операции. Таким образом, память с нулевым состоянием ожидания имеет нулевую задержку данных, память с одним состоянием ожидания имеет задержку данных один цикл. Производительность – это максимальная скорость выполнения операции.

Задержка данных и производительность одинаковы для обращения из хост процессора и из другого ADSP 2106x.

11.9. Остановки при выполнении команд

Остановки при выполнения команд ядром процессора ADSP 2106x могут вызываться следующими событиями:

для программного автомата

♦1 цикл для обращения к данным памяти программы при отсутствии команды в кэше;

♦2 цикла для незадержанного перехода;

♦2 цикла для обычного прерывания;

♦5 циклов для векторного прерывания (VIRPT);

♦1 2 цикла для короткого цикла с малым числом итераций;

♦n циклов для команды IDLE.

для DAG

♦1 цикл удержания при возникновении конфликта при обращении к регистрам.

для памяти

♦1 цикл для обращения по шинам РМ и DM к одному блоку внутренней памяти;

437

11 Проектирование системы

 

Операция

Минимальная

Максимальная

 

 

 

задержка

производительность

 

 

 

данных

(число циклов

 

 

 

(циклы)

на передачу)

Обращение ядра процессора к

 

0

1

внешней памяти

 

 

 

 

 

 

 

 

Синхронный доступ к регистрам

чтение (передача из)

0

2**

IOP ведомого процессора*

запись (передача в)

2**

1

Между появлением данных в

 

 

 

регистре IOP и во внешнем порту

 

 

 

имеется задержка (например,

 

 

 

регистр IOP будет записан во

 

 

 

втором цикле после того, как

 

 

 

выполнится запись во внешний

 

 

 

порт).

 

 

 

 

 

 

 

 

Синхронный прямой доступ к

чтение (передача из)

2

4**

внутренней памяти ведомого

запись (передача в)

3**

1

процессора*

 

 

 

 

(прямые запись/чтение)

 

 

 

Между появлением данных в

 

 

 

регистре IOP и во внешнем порту

 

 

 

имеется задержка

 

 

 

 

 

 

 

 

DMA в режиме ведомого

чтение (передача из)

 

2†

 

 

запись (передача в)

 

1

 

 

 

 

DMA в режиме ведущего

передача из

 

1

 

 

передача в

 

1

 

 

 

DMA в режиме с квитированием передача (в и из)

3

1

Задержка между появлением

 

 

 

данных, передаваемых по DMA, и

 

 

 

сигналом

.

 

 

 

 

 

 

 

DMA во внешнем режиме с

 

 

 

квитированием

 

передача (в и из)

3

1

Задержка между сигналом

 

 

 

и внешней передачей.

 

 

 

 

 

 

 

 

*Если разрешено MMSWS (состояние ожидания для пространства памяти многопроцессорной системы), добавьте один цикл к производительности при синхронной записи в это пространство памяти.

**Для асинхронных обращений добавьте один цикл.

† Эти передачи ограничены скоростью считывания ведомым процессором буфера FIFO DMA.

Таблица 11.15. Задержка данных и производительность

438

Проектирование системы 11

Операция

 

 

 

Минимальная

Максимальная

 

 

 

 

задержка

производи&

 

 

 

 

(циклы)

тельность

 

 

 

 

 

(число циклов

 

 

 

 

 

на передачу)

 

 

 

 

 

 

Прерывания (

)

 

 

3

 

Запросы шины в многопроцессорной системе (

)

1

 

Запросы шины хост процессором (

)

 

2

 

Время срабатывания при записи в SYSCON

 

1

 

Обновление состояния упаковки хост процессором

 

0

 

(в регистре SYSCON)

 

 

 

 

 

Обновление состояния упаковки при передаче по DMA

1

 

(в регистре DMACx)

 

 

 

 

 

Инициализация цепочки операций DMA

 

 

7 11

 

Векторное прерывание (регистр VIRPT)

 

 

6

 

Для последовательного порта*

 

 

35

32

Для линк порта*

скорость 1х

 

11

7

 

скорость 2х

 

8

4

 

 

 

 

 

 

Таблица 11.6. Задержка выполнения операций и производительность

* передача 32 разрядного слова из ядра процессора ADSP 2106x в ядро процессора ADSP 2106x.

Замечание: Регистры управления линк портом LCOM, LCTL, LAR и регистры управления последовательным портом STCTLx и SRCTLx совместно используют одну внутреннюю шину для записи и считывания. Поэтому, когда за считыванием одного из этих регистров сразу следует запись, ее выполнение займет два процессорных цикла.

♦n циклов при конфликтующих обращениях к внешней памяти (должны выполниться обращения по шинам РМ и DM);

♦n циклов при обращении к внешней памяти (пока буферы I/O не будут очищены);

♦n циклов при внешнем обращении, когда ADSP 1206x не владеет внешней шиной;

♦n циклов, пока не будет выполнено внешнее обращение (т. е. состояния ожидания, циклы простоя и т.д.).

для регистров устройства I/O

♦n циклов при обращении по шинам РМ и DM к регистрам устройства I/O (оба должны выполниться);

439

11 Проектирование системы

♦ n циклов при конфликте с обращением ведомого.

для DMA

♦1 цикл, если обращение к регистру параметров DMA конфликтует с генерацией адреса DMA (т. е. запись в регистр во время его обновления или считывание регистра во время считывания по DMA);

♦1 цикл, если обращение к регистру параметров DMA конфликтует с цепочкой операций DMA;

♦n циклов при записи (считывании) в буфер DMA, когда буфер полон (пуст).

для линк&порта и последовательного порта

♦1 цикл, если два буфера линк портов выполняют чтение с подтверждением приема;

♦n циклов при записи в полный буфер или считывании из пустого буфера.

440