最近有人問起程序在STM32G4片內(nèi)不同存儲空間運行的速度差異。說實在的,這個很難說死或說出個絕對的數(shù)據(jù),畢竟結(jié)果除了跟執(zhí)行代碼的存放空間有關外,還跟代碼本身的內(nèi)容、程序邏輯、編譯工具及優(yōu)化等級等都息息相關。我這里設計了一個小測試程序做了下簡單比較,以供參考。
我們不妨先看看STM32G4系列內(nèi)部系統(tǒng)框架圖。下圖是STM32G4芯片的系統(tǒng)框架圖,我將測試程序放在圖中三個黃色高亮位置來運行。
我將程序分別放在CCM、通用SRAM1、Flash區(qū)來運行,基于不同的配置,即是否開啟指令預取、指令/數(shù)據(jù)Cache等,得到下面一個表格。代碼所在區(qū)域欄里的數(shù)據(jù)代表各種情形下的執(zhí)行時間。
從上面表格可以看出,相同配置下在CCM里執(zhí)行速率總是最高。
至于代碼放在SRAM和Flash里的執(zhí)行速率,不同配置下結(jié)果并不太一樣。比如在開啟prefetch和使能指令/數(shù)據(jù)Cache時,即第(1)種配置條件下,在SRAM里運行的速率是最慢的,只有在上圖中的第(3)種情形下,代碼在SRAM里運行速率相比在FLASH里運行才凸顯出明顯優(yōu)勢。
對于STM32G4系列芯片,芯片復位后其Prefetch功能是關閉的,而指令/數(shù)據(jù)Cache是開啟的,即復位后默認為上面的第(2)種情形。結(jié)合上圖,我們不難看出情形(1)與情形(2)的差別不大,至少不顯著。
上面數(shù)據(jù)雖只是基于特定代碼測試而得,但作為基本的方向性判斷還是可以的。
責任編輯:haq
-
芯片
+關注
關注
459文章
52145瀏覽量
435955 -
STM32
+關注
關注
2289文章
11011瀏覽量
362278 -
代碼
+關注
關注
30文章
4886瀏覽量
70240
原文標題:STM32G4芯片內(nèi)不同空間運行代碼的速率比較
文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
在IMX93自定義構(gòu)建期間運行bitbake imx image full時遇到報錯怎么解決?
STM32L431RCT6主芯片 搭配 SD NAND-動態(tài)心電圖設備存儲解決方案
使用Hal庫的SPI讀取磁邊傳感器導致STM32G4無法運行怎么解決?
在STM32L431上使用內(nèi)部RTC,時間運行到23:59:59秒后,變?yōu)榱?4:00:00并不是00:00:00,為什么?
4G工業(yè)網(wǎng)關和5G工業(yè)網(wǎng)關的差異

電腦制作云存儲空間,如何使用電腦制作云存儲空間

基于STM32設計的大氣氣壓檢測裝置

單片機的存儲空間不夠用了,有哪些解決辦法?
手機主流存儲eMMC、UFS與NVMe的區(qū)別

STM32G4系列芯片定時器的延時輸出問題

評論