
- •1. Принципы и базовые алгоритмы обработки сигналов в цифровых системах. Требования к аппаратной базе для выполнения базовых операций цос.
- •3. Форматы представления данных в сигнальных процессорах. Сравнительные особенности процессоров, ориентированных на обработку фз- и пз-данных. Оценка необходимой разрядности процессора.
- •1. Данные с фиксированной запятой (Fixed-Point Numbers)
- •2. Данные с плавающей запятой (Floating-Point Numbers)
- •4. Этапы и средства разработки и отладки по для процессоров цос. Критерии выбора языка программирования и средств разработки по
- •6. Особенности программной организации ввода-обработки-вывода данных в системах цос, работающих в реальном времени. Работа по прерываниям. Использование буферов.
- •7. Методики оптимизации кода для risc-процессоров
- •Inline- функции
- •8. Dsp семейства adsp-2106x. Основные характеристики и особенности архитектуры.
- •9. Карта памяти adsp-2106x. Пространства внутренней памяти, памяти многопроцессорной системы и внешней памяти. Пространство памяти iop-регистров.
- •10. Физическая организация внутренней памяти. Блоки памяти. Возможные виды конфликтов при обращении к внутренней памяти и способы их устранения. Адресация нормальных и коротких слов.
- •12. Доступ к памяти в программе. Организация dag. Основные возможности. Особенности программирования регистров dag. Кольцевые буферы.
- •13. Системные регистры: назначение и работа с ними. Устройство обмена между шинами (px-регистры).
- •14. Общие принципы работы вычислительных блоков adsp-21ххх. Особенности организации вычислений с пз- и фз-данными. Регистровый файл. Поддерживаемые типы данных и их идентификация в программе.
- •15. Теневые регистры. Регистры флагов. Понятие "липких" флагов. Флаги аккумулирующих сравнений.
- •16. Описание и функции алу. Флаги состояния и режимы работы алу. Мас. Функционирование мас. Особенности выполнения операций округления и насыщения при работе с фз-операндами. Флаги состояния мас.
- •17. Сдвигатель. Функционирование сдвигателя. Выделение и депонирование битовых полей. Флаги состояния сдвигателя. Организация многофункциональных вычислений. Ограничения.
- •19. Организация циклов. Ограничения при организации циклов. Циклы не по счетчику. Достоинства и недостатки аппаратной поддержки циклов.
- •20. Кэш инструкций. Структура и функционирование. Возможности управления обновлением кэша. Примеры повышения/понижения эффективности выполнения кода с учетом работы кэша.
- •21. Обработка прерываний: общая последовательность действий. Таблица прерываний. Маскирование прерываний. Регистры, программного секвенсора, используемые при обработке прерываний.
- •22. Отличия работы процессора при разрешенных и запрещенных вложенных прерываниях.
- •23. Организация работы с таймером. Программные прерывания. Внешние прерывания.
- •24. Понятие и назначение dma-пересылок в adsp-2106x. Направления пересылок. Каналы dma. Принципы функционирования dma-контроллера adsp-2106x. Генерация прерываний dma-контроллером.
- •26. Цепочечные dma-пересылки в adsp-2106x. Tcb-блоки. Инициирование и завершение цепочечных dma-пересылок. Контроль состояния цепочечной dma-пересылки
- •27. Порты sharc-процессоров. Реализуемые виды интерфейсов. Организация взаимодействия между процессорным ядром и портами при вводе/выводе данных.
- •29. Архитектура и принципы функционирования линк-портов (звеньевых портов) adsp-2106x. Регистры управления работой линк-портов adsp-2106x. Связь между линк-буферами и линк-портами.
- •30. Организация взаимодействия между процессорами по выделенным каналом через линк-порты. Регистр lsrq и его назначение. Идея алгоритма "передачи маркера".
- •31. Механизм арбитража внешней шины. Схемы приоритетов. Приоритетный доступ процессорного ядра.
- •32. Операции вещательной записи. Блокировка шины. Использование "зеркальных" семафоров. Межпроцессорные сообщения и вектор прерывания virpt.
- •33. Отличительные особенности компилятора cc21k. Поддерживаемые типы данных и их реализация.
- •2.1. Общие сведения
- •2.2. Поддерживаемые типы данных
- •34. Расширения языка с. Ассемблерные вставки – использование регистров. Поддержка пространств памяти данных памяти команд. Доступ к круговым буферам.
- •2.3.1. Поддержка inline-функций
- •2.3.2. Ассемблерные вставки
- •2.3.3. Поддержка пространств памяти данных и памяти команд
- •2.3.4. Доступ к круговым буферам
- •2.4.1. Использование памяти
- •2.4.2. Регистры компилятора
- •36. Работа со стеком при вызове процедур в рамках rte. Передача и возврат параметров. Взаимодействие программ на с и ассемблере
- •2.4.4. Передача параметров в функции и возврат значений
- •2.5. Взаимодействие подпрограмм на с и ассемблере
- •2.5.1. Описания имен и области их видимости
- •2.5.2. Макросы для работы со стеком при вызове и возврате из функций на ассемблере
- •2.5.3. Вызов подпрограммы на ассемблере из программы на с
- •2.5.4. Вызов подпрограммы на с из подпрограммы на ассемблере
- •37. Разработка обработчиков прерываний. Диспетчер прерываний. Классификация обработчиков прерываний по "быстродействию" и накладным расходам.
9. Карта памяти adsp-2106x. Пространства внутренней памяти, памяти многопроцессорной системы и внешней памяти. Пространство памяти iop-регистров.
Общее пространство памяти разбито на 3 части:
Internal memory. Внутреннее статическое ОЗУ на кристалле (SRAM). Имеет размер 4 Мбит, который могут быть сконфигурированы для доступа к 16,32,48 разрядным физических ячейкам памяти. Организовано в виде двух блоков Block0 и Block1. Память называется внутренней двух портовой, т.к. имеется возможность независимого доступа от процессорного ядра и процессора ввода вывода к этой памяти. За один такт возможно два обращения к памяти.Имеет независимые доступ от процессорного ядра (Core) и IOP-процессора
Multiprocessor memory. Пространство памяти многопроцессорной системы. Отображает внутреннюю память других процессоров. Используется в многопроцессорной системе
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 позиции слева (0xuuuuXuuu).
При взаимодействии с «медленными» микросхемами внешней памяти для описания времени задержки и режима доступа могут использоваться поля EBxWM и EBxWS:
- EBxWS – количество дополнительных тактов ожидания (wait states) при доступе к банку внешней памяти (000b...110b);
- EBxWM – режим доступа к банку внешней памяти (00b...11b):
Режим |
EBxWM |
Описание |
External |
00 |
Ожидание сигнала ACK |
Internal |
01 |
Доступ всегда выполняется (EBxWS+1) тактов |
Both |
10 |
Ожидание совместного выполнения первых двух условий |
Either |
11 |
Ожидание выполнения хотя бы одного из первых двух условий |