Какой источник синхронизации используется для команд синхронизации в Cortex-M4 - PullRequest
2 голосов
/ 09 ноября 2019

enter image description here

В моем Cortex-M4 я использую генератор на 8 МГц в качестве HSE, который затем умножается на 72 МГц с использованием PLL, который затем приводит в действие SYSCLK. Это заставило меня задуматься, какие часы используются для выполнения инструкций? Другими словами, если наш ИПЦ равен 1 (идеальное значение, конечно), означает ли это, что мы будем выполнять 8 миллионов инструкций в секунду или 72 миллиона инструкций в секунду?

Я также нашел это DWT, который можно использовать для измерения тактовых циклов и, следовательно, ИПЦ. Так что я предполагаю, какие часы, используемые для выполнения инструкций, будут такими же, как в DWT?

1 Ответ

4 голосов
/ 10 ноября 2019

Он управляется из HCLK (не SYSCLK, который синхронизирует системный таймер, и он не должен быть равен HCLK). Источник HCLK может быть установлен программистом.

, если наш ИПЦ равен 1 (конечно, идеальное значение), означает ли это, что мы будем выполнять 8 миллионов инструкций в секунду или 72 миллиона инструкций в секунду? ?

Вы можете увидеть, сколько циклов занимает каждая инструкция: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0439b/CHDDIGAC.html

Реальная скорость зависит от многих факторов, но в основном зависит от места, где находятся ваш код и данные, а также отрасширенные функции UC.

Если вы выполняете свой код для внутренней SRAM TCM и помещаете данные в SRAM (или, что еще лучше, в некоторые UC в TCI и TCD SRAM), вы можете архивировать теоретическую эффективность выполнения, когда эти воспоминания работаютна тактовой частоте ядра без состояний ожидания или состояний ожидания шины. В идеале, если в uC имеется память TC, а инструкции и данные выбираются с использованием отдельных шин.

Если ваш код находится во флэш-памяти - эта память может вводить некоторые состояния ожидания. STM UC (ускоритель ART) считывает флэш-память большими блоками и получает инструкции впереди. Это позволяет этим ОК работать почти на максимальной скорости. Проблема заключается в инструкциях ветвления, которые требуют сброса конвейера и повторной выборки инструкций.

...