Читайте также:
|
|
Типичной областью "приложения" такой оптимизации может служить обычный оператор вида if () goto. Дело в том, что вследствие конвейерной обработки данных при проверке условия в команде if наилучшим вариантом (с точки зрения быстродействия) является невыполнение этого условия, так как в конвейере уже находятся инструкции, непосредственно следующие за if, и выполнение условия приведет к необходимости очистки конвейера при выполнении перехода и, как следствие, к снижению производительности.
Чтобы оптимизировать код, желательно записать в операторе if () такое условие (прямое или обратное), которое менее вероятно при выполнении программы. Но как компилятор может оценить более вероятную ветвь программы? Поскольку в состав большинства современных средств разработки входит утилита профилирования, современные компиляторы "научились" анализировать данные, получаемые в результате профилирования. После запуска программы на наборах реальных данных с профилированием компилятор анализирует результаты профилирования и выполняет повторную компиляцию, оптимизированную под данный набор исходных данных.
8. DSP семейства ADSP-2106x. Основные характеристики и особенности архитектуры.
1. ADSP-2106x
1. ADSP-21060 – базовая модель. 4 Мбит внутреннего ОЗУ. 2 последовательных и 6 линк портов (40 MIPS, 120 MFLOPS Peak)
2. ADSP-21061 – отсутствуют линк-порты. 1 Мбит внутренней памяти (50 MIPS, 120 MFLOPS Peak)
3. ADSP-21062 – 2 Мбит внутреннего ОЗУ (40 MIPS, 120 MFLOPS Peak)
4. ADSP-21065 – отсутствуют линк-порты. Поддержка интерфейсов I2S (до 8 каналов) и SDRAM. 544 Кбит внутреннего ОЗУ (66 MIPS, 198 MFLOPS Peak)
Основные особенности:
- SHARC-архитектура. Поддержка PM- и DM-памяти;
- обработка 32-разрядных ФЗ и ПЗ данных;
- три независимых вычислительных блока: АЛУ (ALU), Умножитель (MAC), Сдвигатель (SHIFTER);
- регистровый файл из 16 основных и 16 альтернативных регистров;
- арифметика с насыщением и переполнением;
- независимые генераторы адресов данных для DM и PM-памяти. Поддержка до 16 буферов одновременно. Пред- и пост-модификация, кольцевые буферы, бит-реверсная адресация;
- аппаратная поддержка циклов до 6 уровней вложенности без потерь тактов;
- возможность выполнения задержанных переходов;
- кэш инструкций (на 32 инструкции);
- таймер;
- контроллер прерываний (в т.ч. вложенных);
- двухпортовая внутренняя память с независимым доступом процессорного ядра и подпроцессора ввода/вывода;
- четыре независимые 32/48-разрядные шины для доступа к внутренней памяти и выборки данных, инструкций и ввода/вывода;
- 4 Мбит внутреннего ОЗУ, конфигурируемого как 16/32 или 40/48 разрядные слова;
- полное адресуемое пространство памяти – 4 Гслов;
- встроенный подпроцессор ввода/вывода (IOP);
- 10-канальный DMA-контроллер;
- 2 синхронных последовательных (Serial) порта для подключения устройств ввода/вывода сигналов с аппаратной поддержкой A- и m-компандирования;
- 6 линк-портов для межпроцессорного взаимодействия;
- встроенный интерфейс для арбитража внешней шины при организации многопроцессорной системы;
- ориентирован на высокопроизводительные приложения ЦОС в области телекоммуникаций, графики и обработки изображений
Самые важные части:
Ядро процессора: в нём содержится 3 вычислительных устройства: АЛУ, которое выполняет обычные математические и логические операции; Умножитель, который отвечает за операции умножения и умножения с накоплением. В состав умножителя входит регистр аккумулятора; Устройство барабанного сдвига, которое за 1 такт сдвигает значение на любое количество бит. Особенностью данного вычислительного блока и системы команд процессора является то, что входные данные берутся из регистрового файла и выходные данные также записываются в регистровый файл, за исключение умножителя, потому что после умножения результат может записываться в регистр аккумулятора.
Программный секвенсор: отвечает за выборку команд из PM, за последовательность выполнения команд.
Таймер: генерация сигналов прерывания через равные интервалы времени.
Блоки доступа к буферам данным. Есть два пространства памяти, т.е. два независимых интерфейса для доступа к памяти по шинам DM и PM. В каждом из них есть адресная шина и шина, по которой передаются данные. Есть два генератора слов данных. Один из них предназначен для доступа к буферам, которые находятся в DM, другой к буферам PM. В каждом таком DAG есть 32 регистра, т.е. по 8 буферов. Они могут организовывать кольцевые буферы, линейные буферы, обеспечивать проход в сторону инкремента/декремента адреса. Также у DAG есть теневые регистры.
Память: организована в виде двух независимых блоков (BLOCK0 и BLOCK1). Особенностью является то, что при обращении к разным блокам в течении одного такта можно выбирать данные одновременно из двух блоков.
Процессор ввода/вывода данных: содержит регистры управления, через которые процессорное ядро управляет им. Содержит схему для реализации взаимодействия с внешними устройствами через порты. 2 серийных порта, каждый из которых может одновременно работать и на приём, и на передачу. 6 линк портов, каждый из них может работать только в 1 направлении. Отличием серийных и линк портов является то, как реализуется передача данных. Для последовательных портов используется синхронная передача данных, когда каждый бит передаётся в соответствии с определённым синхроимпульсом. Благодаря этому за определённый интервал времени у нас всегда передаётся определённая длина информации. Можно обеспечить довольно высокую скорость передачи данных, но следует учитывать, что его нельзя остановить. Если порт включён, то он всегда либо принимает, либо передаёт данные. Значит если порт принял значение, а мы не успели его прочитать до следующего приёма, то новое значение перезапишет старое. Линк порты предназначены для работы с потоковыми устройствами, которые предназначены для организации многопроцессорных систем. Особенностью является то, что если принимающая сторона не успела прочитать значение, передающая сторона останавливает поток, до тех пор, пока значение не будет прочитано. Процессор ввода/вывода получает доступ к памяти 2 способами: использование DMA контроллера, когда нужно организовать пересылку данных во внутреннюю память без задействования процессорного ядра; и для настройки регистров IOP, которые нужны для того, чтобы не вводить новые системные регистры из-за большого обилия различных внешних устройств, выделяется в области памяти некоторые зарезервированный участок памяти, на который будет отображать регистры процессора ввода/вывода.
Внешний порт: позволяет организовывать многопроцессорные системы. Позволяет к одной шине подключать до 6 процессоров без дополнительных средств синхронизации, благодаря механизму диспетчеризации, который заложен в схему внешнего порта.
9. Карта памяти ADSP-2106x. Пространства внутренней памяти, памяти многопроцессорной системы и внешней памяти. Пространство памяти IOP-регистров.
Общее пространство памяти разбито на 3 части:
1. Internal memory. Внутреннее статическое ОЗУ на кристалле (SRAM). Имеет размер 4 Мбит, который могут быть сконфигурированы для доступа к 16,32,48 разрядным физических ячейкам памяти. Организовано в виде двух блоков Block0 и Block1. Память называется внутренней двух портовой, т.к. имеется возможность независимого доступа от процессорного ядра и процессора ввода вывода к этой памяти. За один такт возможно два обращения к памяти.Имеет независимые доступ от процессорного ядра (Core) и IOP-процессора
2. Multiprocessor memory. Пространство памяти многопроцессорной системы. Отображает внутреннюю память других процессоров. Используется в многопроцессорной системе
3. External memory. Внешняя память. Адресное пространство для подключения микросхем ОЗУ (DRAM) и ПЗУ (или Flash).
Карта памяти ADSP-21060:
Физически не существует адресного пространства многопроцессорной системы. Это адресное пространство, на которое отображается адресное пространство других процессоров. Этот интервал адресов используется, если в системе несколько процессоров. У каждого свой идентификатор. Для каждого процессора выделен диапазон интервалов адресов. Размер этого интервала совпадает с размером внутренней физической памяти.
Последний слот – адреса широковещательной записи. Используется для синхронизации. При записи значения в этом слоте – значение будет записано во все процессоры по одному и тому же адресу.
Пространство внешней памяти используется для подключения внешних микросхем памяти (ОЗУ) и ПЗУ/Flash. Имеется возможность взаимодействия с микросхемами типа SRAM и DRAM. Внешняя память организована в виде 4-х банков одинакового размера и «небанкируемой» (unbanked) памяти. Каждый банк – отдельная микросхема.
Банк № 0 начинается с адреса 0x0040 0000. Область небанкируемой памяти – сюда отображается флэш память или ПЗУ из которой загружается наша программа.
Все банки имеют одинаковый размер. Размер кодируется 4-битовым полем MSIZE:
Размер_банка = 2(MSIZE + 13)
Выбор необходимого банка памяти (микросхемы) осуществляется сигналом на линиях MS3-0.
Общий размер адресной памяти 4Гслова.- мы может адресовать столько слов.
Адресное пространство внутренней памяти(более углублённо):
Первая – область памяти процессоров ввода/вывода, большая часть которой зарезервирована. Работа с этими регистрами осуществляется просто как запись/чтение в/из памяти.
BLOCK0, BLOCK1: Физически эта область памяти ОДНА, но доступ к этой памяти может осуществляться разными способами:
-доступ к 32/48 разрядным значениям – пространство нормальных слов
-доступ как к 16 разрядным значениям – пространство коротких слов
Физически не существуют пространства коротких слов – оно проецируется на пространство нормальных слов.
10. Физическая организация внутренней памяти. Блоки памяти. Возможные виды конфликтов при обращении к внутренней памяти и способы их устранения. Адресация нормальных и коротких слов.
Физическая организация внутренней памяти:
Вся внутренняя память организована в виде столбцов. Каждый столбец имеет ширину 16 битов. Каждый столбец может быть склеен либо с соседним, либо с двумя соседними столбцами, в зависимости от того, как мы хотим конфигурировать ячейки физической памяти, т.е. либо 48-разрядные(тогда можно хранить инструкции, данные повышенной точности), либо 32. Если мы работаем с 48 разрядными словами, то мы склеиваем вместе три столбца и т.п. Если один столбец уже склеен с другим, то нельзя использовать его часть для склейки с другим столбцом. Из этого возможны случаи, когда отдельные столбцы выпадают из обращения. Например, если склеиваем по 3 группы(48 разрядов), то выпадает последний столбец. Как правило в блоке 0 располагаются инструкции, т.к. программный секвенсор обращается к памяти по шине PM.
48-битные слова: 3 столбца на группу -> 5 групп -> 8К х 5 = 40К слов
32-битные слова: 2 столбца на группу -> 8 групп -> 8К х 8 = 64К слов
16-битные слова: 1 столбец на группу -> 16 групп -> 8К х 16 = 128К слов
Конфликты при доступе к внутренней памяти (приводят к дополнительным циклам ожидания):
- конфликт использования одной шины;
- конфликт использования одного блока;
- Примеры нежелательного размещения сегментов и организации доступа к памяти в программе:
Размещение | Пример инструкции | Комментарии |
Буфер № 1 (I1, M1) в Block0, Инструкции в Block0 | compute, Rx = DM(I1, M1); | Конфликт доступа по разным шинам к одному блоку |
Буфер № 2 (I8, M8) в Block1, Инструкции в Block0 | compute, Rx = PM(I8, M8); | Конфликт доступа по одной шине к разным блокам |
При выполнении 1 команды выполняет две операции доступа к памяти. Одна явно- обращение за данными по шине DM. Вторая неявная, связанная с работой программного секвенсора, который пытается извлечь следующую инструкцию, которая тоже располагается в блоке 0. Решением является расположение данных в блоке 1.
При выполнении 2 команды. Выполняет чтение данных по шине PM, вторая операция выполняется в неявном виде -> извлекается инструкция программным секвенсором, который всегда использует шину PM/
11. Структура адреса памяти. Пространство памяти мультипроцессорной системы ADSP-2106x. Пространство внешней памяти. Организация работы с внешней памятью ADSP-2106x. Банки памяти. Реализация задержек при обращении к внешней памяти.
Структура адреса памяти подробно изображена на рисунке
где:
0-16 биты – сам адрес
17-18 биты – в каком пространстве находится (00 – адрес IOP (I/O Processor) регистра, 01 – в пространстве нормальных слов, 1х (х значит неважно 0 или 1) – в пространстве коротких слов)
19-21 биты – во внутренней памяти какого процессора находится (000 – этого же процессора, <>0 – ID процессора во внутренней памяти которого находится, 111 – во внутренней памяти всех процессоров)
22-23 для PM 22-31 для DM биты – внешняя или внутренняя память (=0 – во внутренней этого или другого процессора, <>0 - во внешней памяти.
Пространство памяти мультипроцессорной системы (Multiprocessor Memory Space) используется для отображения на единое адресное пространство (в многопроцессорной системе) внутренней памяти каждого процессора. Для доступа к области памяти другого процессора через Multiprocessor Memory Space используется общая внешняя шина.
Процессор определяет, что выставленный на внешнюю шину адрес попадает в его внутреннюю память если ID2-0 = M (смотрим схему структуры адреса памяти). При обращении к собственной памяти через MMS внешняя шина не используется.
Если поле M адреса = 111, то выполняется операция “broadcast write”, т.к. 111 это значит, что адрес находится во внутренней памяти всех процессоров. MMS доступен только с использованием процессорного ядра.
Пространство внешней памяти (External Memory Space) используется для подключения внешних микросхем памяти (ОЗУ) и ПЗУ/Flash. Имеется возможность взаимодействия с микросхемами типа SRAM и DRAM. Пространство внешней памяти доступно для процессорного ядра и IOP-процессора. Передача данных по внешней шине изображена на рисунке ниже
Внешняя память организована в виде 4-х банков одинакового размера и «небанкируемой» (unbanked) памяти. Банк № 0 начинается с адреса 0x0040 0000. Все банки имеют одинаковый размер. Размер кодируется 4-битовым полем MSIZE:
Размер_банка = 2(MSIZE + 13)
Выбор необходимого банка памяти (микросхемы) осуществляется сигналом на линиях MS3-0. Область небанкируемой памяти расположена после последнего банка (доступ к ней – при MS3-0 = 0000). Поле MSIZE (в IOP-регистре SYSCON) находится на 5 позиции слева (0xuuuu X uuu).
При взаимодействии с «медленными» микросхемами внешней памяти для описания времени задержки и режима доступа могут использоваться поля EBxWM и EBxWS:
- EBxWS – количество дополнительных тактов ожидания (wait states) при доступе к банку внешней памяти (000b...110b);
- EBxWM – режим доступа к банку внешней памяти (00b...11b):
Режим | EBxWM | Описание |
External | Ожидание сигнала ACK | |
Internal | Доступ всегда выполняется (EBxWS+1) тактов | |
Both | Ожидание совместного выполнения первых двух условий | |
Either | Ожидание выполнения хотя бы одного из первых двух условий |
12. Доступ к памяти в программе. Организация DAG. Основные возможности. Особенности программирования регистров DAG. Кольцевые буферы.
Генераторы адреса данных (DAGs, Data Address Generators) формируют адреса для пересылок данных в память и из памяти. Формируя адреса, генераторы адреса данных позволяют программам осуществлять косвенное обращение к памяти, используя вместо абсолютного адреса регистры DAG.
Архитектура DAG поддерживает несколько функций, минимизирующих непроизводительные затраты в процедурах доступа к данным. Эти функции включают:
● Выдача адреса – обеспечивается адрес при доступе к данным.
● Выдача адреса и пост-модификация − обеспечивается адрес при пересылке данных и автоматическое инкрементирование/декрементирование адреса, сохраняемого в регистре и используемого при следующей пересылке.
● Выдача адреса со смещением – обеспечивается адрес, смещённый относительно базового, без инкрементирования исходного указателя адреса.
● Модификация адреса – осуществляется инкрементирование или декрементирование адреса, сохраняемого в регистр без выполнения пересылки данных.
● Бит-реверсная адресация – при пересылке данных обеспечивается бит-реверсный адрес; реверсирование адреса, сохраняемого в регистр, не выполняется.
Генератор адреса данных 1 (DAG1) генерирует 32_разрядные адреса по шине адреса памяти данных (DM). Генератор адреса данных 2 (DAG2) генерирует 24_ разрядные адреса по шине адреса памяти программы (PM). Генераторы также поддерживают некоторые функции, обычно используемые в алгоритмах цифровой обработки сигналов. Оба генератора поддерживают циклические буферы данных. Также оба генератора выполняют битреверсные операции, в результате которых биты адреса выводятся в обратном порядке.
Подсистема DAG включает два арифметических устройства DAG и следующие регистры.
● Индексные регистры, I. Беззнаковые 32-разрядные индексные регистры являются указателями на адрес в памяти. Например, при выполнении команды R3=[I0] в регистр R3 загружается значение, расположенное в ячейке памяти, на которую указывает регистр I0. Индексные регистры могут использоваться при 16- и 32-разрядных обращениях к памяти.
● Регистры модификации, М. Знаковые 32-разрядные регистры модификации обеспечивают инкремент или шаг, с которым индексный регистр постмодифицируется при пересылке регистра. Например, команда R0=[I0++ M1] приводит к тому, что DAG:
o выдает адрес в регистре I0;
o загружает в R0 содержимое ячейки памяти, на которую указывает регистр I0;
o изменяет содержимое регистра I0 на величину, содержащуюся в регистре М0.
● Регистры длины и базового адреса, B и L. Беззнаковые 32-разрядные регистры длины и базового адреса определяют начальный адрес и диапазон адресов циклического буфера. Каждая пара регистров B и L всегда используется совместно с соответствующим I-регистром. Например, I3, B3,L3.
● Регистры указателей, P, FP (указатель кадра), USP (указатель пользовательского тека) и SP (указатель стека). 32-разрядные регистры указателей являются указателями на адреса в памяти. Пример: при выполнении команды R3=[P0] в регистр R3 загружается значение, содержащееся в ячейке памяти, на которую указывает регистр Р0.
Регистр I служит указателем памяти, регистр М содержит значение приращения для перемещения указателя. Вы можете изменять приращение, модифицируя содержимое регистра I различными значениями регистра М. Регистры В и L используются только для циклических буферов данных. Регистр В содержит базовый адрес (т. е. первый адрес) циклического буфера. Регистр L с тем же номером, что и регистр В, содержит количество ячеек циклического буфера (т. е. его длину).
Регистры DAG1 (32_разрядные) Регистры DAG2 (24_разрядные)
B0_B7 B8_B15
I0_I7 I8_I15
M0_M7 M8_M15
L0_L7 L8_L15
Не следует полагать, что L-регистры автоматически инициализируются нулевым значением при линейной адресации. После сброса процессора I-, L-, M- и B-регистры содержат случайные значения. Для каждого используемого I-регистра программа должна инициализировать соответствующий L-регистр нулевым значением при линейной адресаци или значением длины буфера при адресации циклических буферов.
Возможности регистров DAG:
1. Пред- и пост- модификация регистра указателя (также можно без доступа к памяти, указав конкретное значение)
2. Бит-реверсная адресация. Реверсирование битов адреса может осуществляться двумя способами:
1) с помощью инструкции BITREV над любым I-регистром DAG:
I0 = 0x80400000;
BITREV (I4, 7); // I4 <= 0xE0000201
2) в режиме автоматического реверсирования адреса (только для регистров I0 и I8):
I0 = 0x80400000;
R1 = DM(I0,3); // DMA-шина <= 0x201, I0 <= 0x80400003
3. Кольцевые буферы
Циклический буфер – набор ячеек памяти, в которых хранятся данные. Перемещение указателя индекса в буфере осуществляется с помощью операции постмодификации с обновлением, на каждом шаге добавляется заданное число (положительное или отрицательное) к значению указателя индекса. Если значение модифицированного указателя буфера выходит за пределы буфера, значение длины буфера вычитается или прибавляется к значению указателя, чтобы он вернулся к началу буфера. Не существует ограничений на значение базового адреса циклического буфера.
При адресации циклического буфера регистры М и I должны использоваться в операциях постмодификации (но не предмодификации), например:
F1=DM(I0,M0); операция постмодификации адреса для циклического буфера,
F1=DM(M0,I0); операция предмодификации.
Организация циклического буфера осуществляется путем инициализации регистра длины L положительным, отличным от нуля значением и загрузки соответствующего (имеющего тот же номер) регистра В базовым (начальным) адресом буфера. Соответствующий регистр индекса I автоматически загружается этим же начальным адресом.
При осуществлении первого обращения с постмодификацией с использованием регистра I, DAG выводит значение регистра I на шину адреса и затем модифицирует его, добавляя содержимое определенного регистра М или непосредственное значение. Если измененное значение попадает в диапазон адресов буфера, то оно записывается обратно в регистр I. Если значение выходит за диапазон адресов буфера, то сначала из этого значения вычитается значение регистра L (или, если модификатор отрицательный, прибавляется).
13. Системные регистры: назначение и работа с ними. Устройство обмена между шинами (PX-регистры).
Системные регистры являются подмножеством набора универсальных регистров. Их содержимое может изменяться путем записи из непосредственного поля в команде или загружаться из памяти данных и сохраняться в памяти, а также пересылаться в любой универсальный регистр или из него за один цикл. К системным регистрам относятся:
Имя | Функции | Значение |
Системные регистры процессора (Core Processor) | ||
MODE1 | Регистр управления № 1. Устанавливает режим функционирования процессора, режим обработки данных. | 0x0000 0000 |
MODE2 | Регистр управления № 2 (и ID2-0) Устанавливает режим функционирования процессора, режим обработки данных. ID – уникальный номер процессора, который подается на его ножки. | 0xn000 0000 |
ASTAT | Флаги арифметического статуса (и ножки FLAG3-0) - информация о последней арифметической операции (переполнение, перенос, нулевой результат и т.д.) | 0x00nn 0000 |
STKY | Липкие флаги статуса (переполнение циклического буфера, неправильная операция ALU или умножителя) – являются липкими, т.е. должны быть сброшены явно, до тех пор сохраняют значение. | 0x0540 0000 |
IRPTL | Регистр защелки прерывания - это 32разрядный регистр, который фиксирует прерывание. Он указывает на все прерывания, которые были обработаны, а также на те, обработка которых была отложена. | 0x0000 0000 |
IMASK | Маска прерывания – служит для маскирования прерываний (маскирование – это запрещение прерываний). Маскированные прерывания фиксируются в регистре IRPTL и, в случае их разрешения в дальнейшем, обрабатываются. Маскирование прерываний задается битами в регистре IMASK. Биты в IMASK точно соответствуют битам регистра IRPTL. (Если бит в IMASK установлен в 1, то прерывание не маскировано. Если бит установлен в 0, прерывание маскировано.) | 0x0003 |
IMASKP | Указатель временной маски прерывания – служит для создания временной маски прерывания для каждого уровня вложенности процессора. Процессор изменяет IMASKP каждый раз, когда прерывание с более высоким приоритетом прерывает выполнение программы обработки прерывания с более низким приоритетом. (Значение регистра IMASK не изменяется) | 0x0000 0000 |
USTAT1 | Пользовательский регистр статуса № 1 – назначение может определяться пользователем. Биты в этих регистрах могут устанавливаться и проверяться с использованием команд операции с битами системного регистра. Вы можете использовать эти регистры для задания программных флагов или временного хранения данных. | 0x0000 0000 |
USTAT2 | Пользовательский регистр статуса № 2 - назначение может определяться пользователем. Биты в этих регистрах могут устанавливаться и проверяться с использованием команд операции с битами системного регистра. Вы можете использовать эти регистры для задания программных флагов или временного хранения данных. | 0x0000 0000 |
Системные регистры IOP-процессора | ||
SYSCON | Регистр конфигурации - используется для настройки конфигурации системы. После сброса SYSCON инициализируется значением 0х0000 0010, что определяет настройки следующим образом: ADSP-2106x взаимодействует с любым хост-процессором по 16-разрядной шине. Для изменения настройки режима упаковки при передаче хост-процессора (НРМ), в SYSCON должны записываться два 16-разрядных слова, даже если шина хост-процессора 32-разрядная. | 0x0000 0010 |
SYSTAT | Регистр состояния (статуса) - обеспечивает информацию о состоянии ADSP-2106x и многопроцессорной системы. | 0x0000 0nn0 |
WAIT | Регистр параметров внешней памяти - используется для задания числа состояний ожидания при доступе к внешней памяти. | 0x21AD 6B5A |
VIRPT | Регистр вектора прерывания в многопроцессорной системе - указывает, что отложенное векторное прерывание еще не было обработано. | 0x0002 0x0014 |
MSGRx | Регистры обмена сообщениями в многопроцессорной системе – универсальные регистры, которые могут использоваться для передачи сообщений между процессорами. Они также полезны при реализации семафоров и для совместного использования ресурсов между процессорами. | не определен |
BMAX, BCNT | Регистры параметров доступа к общей внешней шине. Для задания времени управления шиной ваша программа должна загрузить в регистр BMAX максимальное число циклов (минус 2), в течение которых ADSP-2106x может сохранять управление шиной. Минимальное значение BMAX=2 позволяет процессору сохранять управление шиной 4 цикла. Установка BMAX=1 недопустима. Для того чтобы отключить функцию ограничения времени управления шиной, надо установить BMAX=0. Каждый раз, когда ADSP-2106x получает управление шиной, регистр BCNT загружается значением из BMAX. Затем содержимое регистра BCNT декрементируется в каждом цикле, в котором ведущий выполняет чтение или запись по шине и когда любой другой (ведомый) ADSP-2106x запрашивает шину. Когда ведущий сбрасывает сигнал на линии, регистр BCNT перезагружается из BMAX. Если содержимое регистра BCNT уменьшилось до нуля, то ведущий сначала завершает внешние чтение/запись, а затем сбрасывает сигнал на своей линии (любое новое внешнее обращение задерживается). Это позволяет выполнить передачу управления шиной. | 0x0000 0000 |
Запись в любой системный регистр, кроме USTAT1 и USTAT2, имеет задержку в один цикл перед тем, как любое изменение вступит в силу. Эта задержка называется временем срабатывания (effect latency). Если за записью в системный регистр сразу следует считывание, то считывается всегда новое значение, исключением является IMASK, для обновления значения которого требуется дополнительный цикл. Эта задержка называется задержкой считывания (read latency).
Дата добавления: 2015-11-16; просмотров: 68 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Критерии выбора языка программирования и средств разработки ПО | | | Операции с битами системных регистров для Core Processor |