- •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. Разработка обработчиков прерываний. Диспетчер прерываний. Классификация обработчиков прерываний по "быстродействию" и накладным расходам.
Inline- функции
Позволяют повысить производительность программы за счет замены вызова функции самим телом функции.
Оптимизация по результатам профилирования.
Типичной областью "приложения" такой оптимизации может служить обычный оператор вида if ( ) goto. Дело в том, что вследствие конвейерной обработки данных при проверке условия в команде if наилучшим вариантом (с точки зрения быстродействия) является невыполнение этого условия, так как в конвейере уже находятся инструкции, непосредственно следующие за if, и выполнение условия приведет к необходимости очистки конвейера при выполнении перехода и, как следствие, к снижению производительности.
Чтобы оптимизировать код, желательно записать в операторе if () такое условие (прямое или обратное), которое менее вероятно при выполнении программы. Но как компилятор может оценить более вероятную ветвь программы? Поскольку в состав большинства современных средств разработки входит утилита профилирования, современные компиляторы "научились" анализировать данные, получаемые в результате профилирования. После запуска программы на наборах реальных данных с профилированием компилятор анализирует результаты профилирования и выполняет повторную компиляцию, оптимизированную под данный набор исходных данных.
8. Dsp семейства adsp-2106x. Основные характеристики и особенности архитектуры.
ADSP-2106x
ADSP-21060 – базовая модель. 4 Мбит внутреннего ОЗУ. 2 последовательных и 6 линк портов (40 MIPS, 120 MFLOPS Peak)
ADSP-21061 – отсутствуют линк-порты. 1 Мбит внутренней памяти (50 MIPS, 120 MFLOPS Peak)
ADSP-21062 – 2 Мбит внутреннего ОЗУ (40 MIPS, 120 MFLOPS Peak)
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 процессоров без дополнительных средств синхронизации, благодаря механизму диспетчеризации, который заложен в схему внешнего порта.
