В этом примере показано, как анализировать поведение многоядерного выполнения домена потока данных в Simulink.
Модель в этом примере использует блоки цифрового повышающего преобразователя (DUC) и цифрового понижающего преобразователя (DDC) для создания передатчика и приемника Family Radio Service (FRS). Блок DUC преобразует сложный цифровой сигнал основной полосы в реальный сигнал полосы пропускания. Блок DDC преобразует оцифрованный реальный сигнал обратно в комплексный сигнал основной полосы частот.
Открытый familyRadioServiceMulticoreAnalysisExample модель.
model_name = 'familyRadioServiceMulticoreAnalysisExample'; open_system(model_name); close_system([model_name '/UpConverted Signal Spectrum Analyzer'], 0); close_system([model_name '/Baseband Spectrum Analyzer'], 0);

В Simulink ® для задания потока данных в качестве домена выполнения для подсистемы используйте инспектор свойств, чтобы задать для параметра Domain значение Dataflow. Для просмотра инспектора свойств подсистемы выберите подсистему, а затем выберите View > Property Inspector. Выберите Задать домен выполнения, затем щелкните Домен и выберите Dataflow. Можно также использовать блок подсистемы потока данных из библиотеки потока данных панели инструментов системы DSP для получения подсистемы, предварительно настроенной с доменом выполнения потока данных.

set_param([model_name,'/Dataflow Subsystem'],'SetDomainSpec','on'); set_param([model_name,'/Dataflow Subsystem'],'DomainSpecType','Dataflow'); set_param([model_name,'/Dataflow Subsystem'],'Latency','0'); set_param([model_name,'/Dataflow Subsystem'],'AutoFrameSizeCalculation','off');
После указания домена выполнения потока данных на панели инструментов Simulink откроется вкладка Multicore.

На вкладке Многоядерные (Multicore) щелкните Оценка затрат (Cost Estimation). В списке выберите SIL/PIL Profiling.

Нажмите «Профиль».

После завершения профилирования значения затрат отображаются в редакторе затрат. Здесь среднее время выполнения (стоимость) для каждого блока отображается в микросекундах. Относительная нагрузка каждого блока по отношению к самому дорогому блоку в подсистеме потока данных обозначена полосами разной длины.

Например, блок DDC является самым дорогим блоком в таблице и имеет стоимость 119905 микросекунды. Щелкните по имени блока в столбце «Блок», чтобы выделить соответствующий блок на блок-схеме.

Щелкните Выполнить анализ (Run Analysis).

После анализа модели откроется Легенда выделения резьбы (Thread Highlighting Legend). Легенда выделения потока показывает один поток, поскольку зависимость данных между блоками в модели предотвращает одновременное выполнение блоков. На панели «Предложения по увеличению параллелизма», которая отображается в нижней части полотна, показано, как увеличить параллелизм и получить более высокую пропускную способность за счет конвейерной обработки зависимых от данных блоков.

Подсистема потока данных задает значение задержки, равное 0. Предполагаемая задержка для системы: 3.
Установите флажок Принять (Accept), чтобы использовать рекомендуемую задержку для подсистемы потока данных при последующем анализе. Это значение можно также ввести непосредственно в инспекторе свойств для параметра «Задержка». Simulink отображает значение параметра Latency с помощью
тегов на выходных портах подсистемы потока данных.
Снова щелкните Выполнить анализ (Run Analysis). Легенда выделения потоков показывает два потока, указывающих, что блоки внутри подсистемы потока данных могут выполняться в двух параллельных потоках.

Чтобы просмотреть задержки вставленного трубопровода, в разделе Результаты проверки (Review Results) панели инструментов щелкните Показать задержки трубопровода (Show pipeline delays).

Задержки вставленных трубопроводов отображаются на холсте с помощью
тегов.

Панель ускорения показывает максимальное теоретическое ускорение 1.9706 для модели в результате разбиения, выполненного во время анализа.

Для выполнения исследования пространства можно вручную изменить стоимость блоков. Первые два блока относительно дороже других блоков в подсистеме, что должно существенно влиять на то, как блоки отображаются на потоки. Разделите общую сумму затрат для первых двух блоков на три, а затем вручную присвойте этот номер первым трем блокам, сняв флажки в столбце Авто и отредактировав значения в столбце Затраты.

Щелкните Выполнить анализ (Run Analysis), чтобы повторно запустить анализ, а затем принять предложенную задержку. Новый результат показывает, что подсистема теперь разделена на четыре потока с соответствующим теоретическим значением ускорения, равным 2.9621.
