SoC Blockset™ позволяет моделировать многопроцессорные выполнения, когда они ведут себя на многопроцессорном SoC. В мультипроцессорных симуляциях каждый процессор образца модели выполняется одновременно, где каждое выполнение процессора управляется независимым блоком Task Manager, представляющим либо ОС, либо планировщик с голым металлом для этого процессора. Процессоры могут взаимодействовать друг с другом с помощью межпроцессорных каналов связи, через блок IPC Channel, позволяя синхронизировать задачи и алгоритмы между менеджером задач каждого процессора.
Многопроцессорная SoC модель содержит, по меньшей мере, два блока Task Manager, каждый из которых соединен с Model эталонным блоком, представляющим процесс, который запускается на отдельном процессоре. Этот рисунок показывает минимальную независимую двухпроцессорную систему.
В симуляции каждый Task Manager и Model блок автоматически выступает в качестве независимого процессора. Задачи, назначенные различным блокам Task Manager, выполняются независимо от другого процессора, в то время как задачи в одном блоке Task Manager все еще ведут себя зависимо. Для получения дополнительной информации о выполнении задачи в одном процессоре смотрите Что такое Выполнение задачи? и многоядерное выполнение и визуализация ядра.
Примечание
Все задачи в модели верхнего уровня должны использовать имя уникального идентификатора.
Процессоры могут связываться друг с другом асинхронно с помощью межпроцессного канала данных. Канал интерпроцессных данных состоит из блоков Interprocess Data Write, Interprocess Data Channel и Interprocess Data Read. Для получения дополнительной информации о каналах связи процессора с процессором смотрите Interprocess Data Communication в операционных системах и Interprocess Data Communication через выделенный аппаратный периферийный узел.
В генерации кода Simulink верхнего уровня® модель и каждый опорный блок Model должны иметь параметр Hardware board на поддерживаемой многопроцессорной аппаратной плате, такой как TI Delfino F2837xD
. В модели верхнего уровня необходимо задать параметр Processing Unit равным none
чтобы указать, что модель не строится. В каждом блоке Model ссылки необходимо задать параметр Processing Unit для определенного процессора, такого как c28xCPU1
.
Этот пример показывает минимальную многопроцессорную модель, представляющую аппаратную плату TI Delfino F2837xD, которая содержит пару процессоров C28x архитектуры в том же микроконтроллере.
Каждый образец модели, управляемая Диспетчером задач, содержит свободный бегущий счетчик и коэффициент усиления. Первая модель, soc_minimal_multiCPU_ref1
, запускает задачу-таймер с периодом 0,01 и медианной длительности задачи 0,008. Вторая модель, soc_minimalCPU_ref2
, запускает задачу, управляемую таймером, с периодом 0,02 и медианной длительности задачи 0,018. Чтобы запустить симуляцию, на вкладке Simulation, нажмите запуск.
Проверка сроков выполнения двух задач, Task11
и Task21
показывает, что каждая задача выполняется независимо от другой, симулируя ожидаемое поведение многопроцессорного устройства TI Delfino F2837xD.
IPC Channel | IPC Read | IPC Write | Task Manager