Определите и используйте время выполнения задачи

В этом примере показано, как выбрать доступный метод для определения времени выполнения для задач на вашем процессоре. Блок Task Manager использует информацию о времени выполнения задачи, чтобы симулировать прерывание задачи, переполнение и параллельное выполнение. Точность информации о времени выполнения задачи обеспечивает доверие в том, что симуляция задачи отражает фактическое поведение на вашем процессоре.

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

Разделы этого примера объясняют и демонстрируют каждый метод, используя пример системной модели. Хотя в этом примере используется ZedBoard™ Xilinx Zynq, эти методы могут использоваться с любой поддерживаемой аппаратной платой или платформой SoC Blockset™. Дополнительные сведения о симуляции выполнения задачи см. в разделе «Что такое выполнение задачи?» тема и пример выполнения задачи.

open_system('soc_task_profiling');

Используйте спецификации временных параметров алгоритма

Когда доступны только системные требования, используйте наихудшее время выполнения (WCET). WCET должен быть установлен в процентах от периода задачи (для примера, 80%).

Пример модели имеет две задачи с периодами 0,01 и 0,03. Используя WCET, средние времена выполнения должно быть установлено на:

  • 8e-03s для Task1

  • 24e-03s для Task2

Этот подход производит время выполнения низкой точности. Когда вы недооцениваете WCET, ресурсы процессора могут использоваться неэффективно. Точно так же, когда вы переоцениваете WCET, могут возникнуть нежелательные исключения задач или переполнения.

Алгоритм профиля, использующий программное обеспечение в цикле (SIL)

SIL симуляция компилирует сгенерированный исходный код, а затем запускает код на вашем хосте-компьютере. Во время симуляции собираются метрики времени выполнения для сгенерированного кода. SIL симуляция обеспечивает низкую или среднюю точность времени выполнения, поскольку хост-компьютер обычно имеет другую архитектуру, чем ваш процессор. Этот подход может быть полезен, особенно для сравнительного анализа. Дополнительные сведения о SIL см. в разделе Настройка и запуск SIL симуляции (Embedded Coder).

Эти шаги показывают, как использовать SIL-профилирование для определения информации о задаче для модели примера.

1. Щелкните правой кнопкой мыши блок Model, выберите Параметры модели (ModelReference) и выберите Software-in-the-loop (SIL) в раскрывающемся списке Simulation mode. Нажмите кнопку ОК.

2. На вкладке Simulation нажмите запуск, чтобы запустить SIL симуляцию. Когда симуляция завершится, щелкните блок Model, чтобы получить метрики времени выполнения. Этот рисунок показывает отчет о метриках во время выполнения.

3. Средние времена выполнения для Task1 и Task2, которые соответствуют скоростям этих задач:

  • 0.30e-03s для Task1

  • 0.25e-03s для Task2

4. Используйте это время выполнения задачи в блоке Task Manager, чтобы задать среднюю длительность задачи. Можно использовать другую информацию о времени выполнения задачи, чтобы задать другие параметры времени выполнения задачи в блоке Task Manager.

Алгоритм профиля, использующий процессор в цикле (PIL)

PIL симуляция компилирует сгенерированный исходный код, а затем запускает код на вашем целевом компьютере. Во время симуляции собираются метрики времени выполнения для сгенерированного кода. PIL симуляция обеспечивает среднюю и высокую точность времени выполнения, так как он профилирует алгоритм задачи на вашем процессоре. При этом подходе время одной задачи является точным, но не учитывает тонкие эффекты, такие как совместное использование памяти кэша. Дополнительные сведения о PIL см. в разделе Настройка и запуск PIL симуляции (Embedded Coder).

Эти шаги показывают, как использовать PIL-профилирование для определения информации о задаче для этой модели примера.

1. Щелкните правой кнопкой мыши блок Model, выберите Параметры модели (ModelReference) и выберите Processor-in-the-loop (PIL) в раскрывающемся списке Simulation mode. Нажмите кнопку ОК.

2. На вкладке System on Chip нажмите Оборудование Settings. Разверните панель параметров целевой компьютер resources и в группе Board Parameters установите Device Address, Username и Password.

3. На вкладке Симуляции щелкните Запуском, чтобы запустить PIL симуляцию. Когда симуляция завершится, щелкните блок Model, чтобы получить метрики времени выполнения. Этот рисунок показывает отчет о метриках во время выполнения.

4. Средние времена выполнения для Task1 и Task2, которые соответствуют скоростям этих задач:

  • 1.93e-03s для Task1

  • 1.69e-03s для Task2

5. Используйте это время выполнения задачи в блоке Task Manager, чтобы задать среднюю длительность задачи. Можно использовать другую информацию о времени выполнения задачи, чтобы задать другие параметры времени выполнения задачи в блоке Task Manager.

Выполнение задачи профиля на оборудовании

Профилирование SoC Blockset предоставляет время выполнения каждой задачи в вашей модели и захватывает другие связанные события, такие как прерывания, переполнения и падения задачи. Профилирование всего приложения на оборудовании предоставляет наиболее точную информацию о времени выполнения задач процессора.

Эти шаги показывают, как использовать профилирование SoC Blockset для определения информации о задаче для модели примера.

1. Щелкните правой кнопкой мыши блок Model, выберите Параметры модели (ModelReference) и выберите Normal в раскрывающемся списке Simulation mode. Нажмите кнопку ОК.

2. На вкладке System on Chip нажмите Configure, Build & Deploy. Выполните указанные шаги, чтобы подготовить модель к сборке и загрузке для режима external mode, и нажмите Monitor & Tune. Когда режим external mode завершится, запустите эти команды в MATLAB, чтобы получить времена выполнения для Task1 и Task2:

exectime = socTaskTimes('soc_task_profiling','Run 1: soc_task_profiling')
exectime.Mean

Для Task1 и Task2 времен выполнения:

  • 2.00e-03s для Task1

  • 1.80e-03s для Task2

3. The socTaskTimes функция также показывает распределение времен выполнения для каждой задачи, как показано на этих рисунках.

4. Используйте это время выполнения задачи в блоке Task Manager, чтобы задать среднюю длительность задачи. Можно использовать другую информацию о времени выполнения задачи, чтобы задать другие параметры времени выполнения задачи в блоке Task Manager.