1. 程式人生 > >STM32的指令週期

STM32的指令週期

在keil中程式設計時,寫了一行程式碼,然後就想知道,執行這句C程式碼需要多長時間。

時鐘週期在這就不解釋了,頻率的倒數。

指令週期,個人理解就是cpu執行一條彙編指令所需要的時間。

我們知道cm3使用的三級流水線,那麼到底一條指令的執行需要多少個時鐘週期。下面通過keil軟體模擬,來計算一個指令所需的時鐘週期。

 

使用STM32F103RC,。配置其主時鐘HCLK為72mhz測試程式碼如下:

然後開始模擬

編譯通過後,點選dbg按鈕,調出如下視窗:

並且設定以上的斷點,開始單步除錯。並記錄時間,

單步除錯

這樣便可以計算出執行  MVOS  r1,#0x04 所用的時間視為29.20833-29.19444=0.1389us。使用這種方式便可以測試出每條指令所使用的時間。便有了下面的表。

但是,我測試BL.W指令所需要的是8T0,不知道是什麼原因,其他指令都是正確的

ARM官方給出的指令週期是

STM32有三級流水線,指令週期不定的,arm給出的是1.25MIPS/Mhz,一個平均執行速度。

個人理解就是1Mhz的頻率,每秒鐘可以執行1.25M指令。72M,那麼就是72*1.25。

而這個最大的應用是通過單週期指令去測試系統時鐘是否配置的正確。