
- •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. Разработка обработчиков прерываний. Диспетчер прерываний. Классификация обработчиков прерываний по "быстродействию" и накладным расходам.
17. Сдвигатель. Функционирование сдвигателя. Выделение и депонирование битовых полей. Флаги состояния сдвигателя. Организация многофункциональных вычислений. Ограничения.
Типы операций (только с ФЗ-данными)
Сдвигатель выполняет:
сдвиги;
операции с битом (установка, сброс, инверсия, тестирование);
операции над битовым полем (выделение и депонирование);
поддержка преобразования ФЗ <-> ПЗ.
Функционирование
Сдвигатель читает от 1 до 3 входных операнда (регистры регистрового файла (РФ) или константы в инструкции) в начале такта: X – операнд, который обрабатывается, Y – операнд, специфицирующий абсолютные значения величины сдвига, длины битовых полей или позиции битов, Z – операнд, который обрабатывается или модифицируется.
Сдвигатель записывает 1 результат в регистр РФ в конце такта и модифицирует флаги. Один и тот же регистр РФ может выступать в качестве операнда и приемника результата для любой операции Сдвигателя.
Некоторые операции Сдвигателя генерируют 8- или 6-битный результат, которые помещается в младшие биты ФЗ-поля, а знаковые бит результата распространяется на «свободные» старшие разряды.
Выделение и депонирование битовых полей
Операция депонирования битового поля (по сути копирование куска бит длиной len6 и вставка его начиная с позиции bit6, из всего 40-битного регистра используются только 32 старших бита, поэтому если задать bit6 = 0, то выделенный кусок будет вставлен начиная с бита под номером 8)
Пример:
Операция выделения битового поля (копирование битов в количестве len6, начиная с позиции bit6, вставка их в начало указанного регистра)
Флаги состояния, на которые влияет выполнение операций Сдвигателя (только регистр ASTAT)
Флаг
Определение
Когда устанавливается
SV
Флаг переполнения
когда значащие биты выдвигаются влево за границы ФЗ-поля;
в операции с битом указан номер бита > 31;
битовое поле частично или полностью выходит влево за границы ФЗ-поля
SZ
Флаг нулевого результата
результат равен нулю;
проверяемый бит равен 0;
в операции с битом указан номер бита > 31
SS
Флаг отрицательного входного операнда
Для операций выделения экспоненты устанавливается в соответствии со знаком операнда. Для остальных операций сбрасывается в 0.
Организация многофункциональных вычислений
Многофункциональное вычисление (инструкция) – выполнение в течение одного такта:
одной операции АЛУ и одной операции Умножителя;
двух операций АЛУ (только дуальное сложение/вычитание).
Инструкции АЛУ и Умножителя, разрешенные для одновременного выполнения, выбираются из ограниченного набора.
Наборы допустимых для распараллеливания операций различаются для ФЗ и ПЗ-операндов.
В режиме многофункциональной обработки ФЗ-данных Умножитель поддерживает только операции с дробными знаковыми числами(!).
Обновление флагов происходит так же, за исключением того, что в двойной операции ALU сложение/вычитание флаги устанавливаются на основании операции «ИЛИ» между флагами от каждой операции.
Ограничения при размещении операндов для многофункциональных вычислений
При использовании ALU и умножителя для многофункциональных вычислений каждый из четырех входных операндов ограничен своим набором из четырех регистров регистрового файла (см. ниже). Например, операнд Х в ALU может быть только R8, R9, R10 или R11.
18. Архитектура программного секвенсора. Стеки программного секвенсора и их назначение. Организация и принципы реализации ветвлений. Типы переходов (переходы, вызовы, возвраты, условные, безусловные и т.п.).
Функция секвенсора – выполнение инструкций в линейном порядке с инкрементом адреса выборки следующей команды.
Значение адреса следующей команды выбирается программным автоматом из нескольких возможных источников: регистра адреса выборки, регистра адреса декодирования и счетчика команд (PC), которые содержат, соответственно, адреса команд, которые в данный момент выбираются, декодируются и выполняются. Счетчик команд объединен со стеком счетчика команд, который используется для хранения адреса возврата и адреса вершины цикла. Контроллер прерываний выполняет все функции, связанные с обработкой прерывания: например, определяет, маскировано прерывание или нет, и генерирует соответствующий адрес вектора прерывания.
Адрес выполняемой (Execute) инструкции – регистр PC.
Адрес декодируемой (Decode) инструкции – регистр DADDR.
Адрес выбираемой (Fetch) инструкции – регистр FADDR.
Стек адреса цикла и стек счетчика цикла обеспечивают поддержку вложенных циклов. В стеке состояния сохраняется содержимое регистров состояния при выполнении вложенных подпрограмм обработки прерываний.
Когда адрес выборки не является следующим адресом в линейной последовательности адресов, происходит переход. Процессор ADSP2106x поддерживает следующие типы ветвлений: переход, вызов и возврат. Для программного автомата единственное различие между переходом и вызовом заключается в том, что при выполнении команды вызова адрес возврата помещается в стек счетчика команд; т. о., он будет доступен, когда выполнится команда возврата. Переходы выполняются к новому месту в памяти программы, не предусматривая возврата.
Переходы, вызовы и возвраты могут быть условными и безусловными:
IF cond jump Proc2; jump Proc2;
При переходах и вызовах режим адресации может быть прямой, косвенный, относительный:
call Proc3;
IF cond call (M12, I14);
jump (PC, 0x0004);
Переходы, вызовы и возвраты могут быть обычные и задержанные:
call Proc4; rts (db);
Оба выполняются 3 такта, но обычный выполняет два nop, а задержанный две инструкции после него. Ограничение: в 2-х адресах за инструкцией задержанного перехода не могут находиться инструкции других переходов (вызовов, возвратов), команды работы со стеком Программного секвенсора (PC Stack), инструкции организации циклов (DO... UNTIL...), команда IDLE.
Переход может прерывать выполнение цикла.
jump Proc5 (LA);