博客專欄

        EEPW首頁 > 博客 > STM32G4芯片內(nèi)不同空間運(yùn)行代碼的速率比較

        STM32G4芯片內(nèi)不同空間運(yùn)行代碼的速率比較

        發(fā)布人:魚鷹談單片機(jī) 時(shí)間:2021-10-21 來源:工程師 發(fā)布文章

        以下文章來源于茶話MCU ,作者M(jìn)iler

        最近有人問起程序在STM32G4片內(nèi)不同存儲(chǔ)空間運(yùn)行的速度差異。說實(shí)在的,這個(gè)很難說死或說出個(gè)絕對(duì)的數(shù)據(jù),畢竟結(jié)果除了跟執(zhí)行代碼的存放空間有關(guān)外,還跟代碼本身的內(nèi)容、程序邏輯、編譯工具及優(yōu)化等級(jí)等都息息相關(guān)。我這里設(shè)計(jì)了一個(gè)小測(cè)試程序做了下簡(jiǎn)單比較,以供參考。

        我們不妨先看看STM32G4系列內(nèi)部系統(tǒng)框架圖。下圖是STM32G4芯片的系統(tǒng)框架圖,我將測(cè)試程序放在圖中三個(gè)黃色高亮位置來運(yùn)行。

        1.png

        我將程序分別放在CCM、通用SRAM1、Flash區(qū)來運(yùn)行,基于不同的配置,即是否開啟指令預(yù)取、指令/數(shù)據(jù)Cache等,得到下面一個(gè)表格。代碼所在區(qū)域欄里的數(shù)據(jù)代表各種情形下的執(zhí)行時(shí)間。

        2.png

        從上面表格可以看出,相同配置下在CCM里執(zhí)行速率總是最高。

        至于代碼放在SRAM和Flash里的執(zhí)行速率,不同配置下結(jié)果并不太一樣。比如在開啟prefetch和使能指令/數(shù)據(jù)Cache時(shí),即第(1)種配置條件下,在SRAM里運(yùn)行的速率是最慢的,只有在上圖中的第(3)種情形下,代碼在SRAM里運(yùn)行速率相比在FLASH里運(yùn)行才凸顯出明顯優(yōu)勢(shì)。

        對(duì)于STM32G4系列芯片,芯片復(fù)位后其Prefetch功能是關(guān)閉的,而指令/數(shù)據(jù)Cache是開啟的,即復(fù)位后默認(rèn)為上面的第(2)種情形。結(jié)合上圖,我們不難看出情形(1)與情形(2)的差別不大,至少不顯著。

        上面數(shù)據(jù)雖只是基于特定代碼測(cè)試而得,但作為基本的方向性判斷還是可以的。

        *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。

        物聯(lián)網(wǎng)相關(guān)文章:物聯(lián)網(wǎng)是什么




        關(guān)鍵詞: 單片機(jī)

        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 大理市| 温州市| 台东市| 兴和县| 威宁| 郸城县| 余庆县| 黎城县| 衡东县| 会宁县| 栾川县| 封开县| 顺昌县| 巴青县| 巴南区| 泸水县| 凤凰县| 华安县| 彭水| 眉山市| 牡丹江市| 赤城县| 芒康县| 弋阳县| 金华市| 化隆| 年辖:市辖区| 普安县| 霍林郭勒市| 南岸区| 吉木萨尔县| 富阳市| 儋州市| 阿克苏市| 利津县| 天等县| 盐池县| 紫云| 图木舒克市| 安丘市| 全椒县|