我們知道一般MCU的flash有等待周期,隨主頻提升需要插入flash讀取的等待周期,以stm32f103為例,主頻在72M時(shí)需要插入2個(gè)等待周期,故而代碼效率無法達(dá)到最大時(shí)鐘頻率。

所以STM32F103將代碼加載到sram運(yùn)行速度更快。
但使用GD32F303時(shí)將代碼加載到SRAM后速度反而下降了一些,這是為什么呢?
我們前面了解過GD32F303 flash的code area區(qū)是零等待的,
零等待訪問理論上就應(yīng)該和在sram運(yùn)行速度一樣,那么為何會(huì)比sram更快一些呢?
通過查閱GD32F303用戶手冊(cè)系統(tǒng)架構(gòu)章節(jié)我們可以知道,訪問flash時(shí)可以直接通過ibus和sbus專用總線進(jìn)行訪問,而訪問sram時(shí)通過AHB主機(jī)接口通過System BUS進(jìn)行訪問,AHB主機(jī)接口下更還有掛載有其他主機(jī)和外設(shè)總線,共享總線帶寬。

所以GD32F303的代碼運(yùn)行在code area零等待區(qū)時(shí),效率會(huì)比常規(guī)加載sram的方式更高。