Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AiPSP_ekzamen_main.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

Inline- функции

Позволяют повысить производительность программы за счет замены вызова функции самим телом функции.

Оптимизация по результатам профилирования.

Типичной областью "приложения" такой оптимизации может служить обычный оператор вида 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 процессоров без дополнительных средств синхронизации, благодаря механизму диспетчеризации, который заложен в схему внешнего порта.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]