本應(yīng)用筆記的目的是讓讀者了解PIC32MZ器件系列中的 1 級(jí)(L1)CPU 緩存實(shí)現(xiàn),讓讀者了解緩存系統(tǒng)中可能發(fā)生的危險(xiǎn),并描述解決這些問題的方法。對(duì)于高級(jí)用戶,還討論了 microAptiv? 內(nèi)核中管理緩存以獲得最佳性能的特殊指令。
本文檔不打算全面討論緩存體系結(jié)構(gòu)或?qū)崿F(xiàn),也不涉及緩存管理的每個(gè)細(xì)節(jié)。從未使用過具有 L1 緩存的嵌入式控制器的開發(fā)人員,或希望了解 PIC32MZ 器件中 L1 緩存實(shí)現(xiàn)的開發(fā)人員,應(yīng)閱讀本文檔。
CPU 緩存是一個(gè)單獨(dú)的內(nèi)存塊,用于補(bǔ)償主內(nèi)存的訪問時(shí)間。被描述為一級(jí)緩存的緩存使用與 CPU 一樣快的內(nèi)存,因此只要 CPU 正在訪問緩存,它就永遠(yuǎn)不必等待指令或數(shù)據(jù)。2 級(jí)和 3 級(jí)高速緩存與 1 級(jí)高速緩存結(jié)合使用,其內(nèi)存訪問時(shí)間大于 CPU,但小于主內(nèi)存。
該P(yáng)IC32MZ器件系列僅采用1級(jí)高速緩存。L1緩存分為兩部分,指令緩存和數(shù)據(jù)緩存。CPU 可以直接訪問內(nèi)存或通過緩存訪問內(nèi)存。高速緩存的使用對(duì)于實(shí)現(xiàn)PIC32MZ器件系列的最大性能至關(guān)重要。與通過系統(tǒng)總線進(jìn)行訪問時(shí)的多個(gè)時(shí)鐘周期相比,對(duì)高速緩存的內(nèi)存訪問發(fā)生在單個(gè)時(shí)鐘周期內(nèi)。
PIC32MZ 架構(gòu)
以下部分介紹了PIC32MZ架構(gòu)的 L1 緩存和其他兩個(gè)部分,它們對(duì)其操作和配置至關(guān)重要。
閃存預(yù)取模塊
Flash Prefetch 模塊用于隱藏 Flash 等待狀態(tài)。它通過使用 128 位數(shù)據(jù)路徑(是 32 位 CPU 總線寬度的四倍)獲取程序閃存來實(shí)現(xiàn)。它是預(yù)測(cè)性的,假設(shè)下一個(gè)需要的數(shù)據(jù)是下一行地址。只要代碼不分支,下一條指令總是可用的。加載新行時(shí),分支會(huì)導(dǎo)致停頓。該模塊中的寄存器確定閃存等待狀態(tài)以及預(yù)取是應(yīng)用于指令訪問、數(shù)據(jù)訪問、兩者還是兩者都不進(jìn)行。
內(nèi)存映射單元
在所有 PIC32 架構(gòu)中,CPU 對(duì)存儲(chǔ)器和外設(shè)的訪問都是通過虛擬地址空間完成的。虛擬地址空間分為五個(gè)段,分別命名為 KSEG0 到 KSEG3 和 KUSEG。物理到虛擬 KSEG0 到 KSEG1 地址的映射是固定的,所有內(nèi)部存儲(chǔ)器都存在于 KSEG0 和 KSEG1 段中。KSEG1 從不緩存,而 KSEG0 是可緩存的段。
PIC32MZ 架構(gòu)引入了基于轉(zhuǎn)換后備緩沖器(TLB)的存儲(chǔ)器映射單元(MMU)。TLB 可以配置為對(duì) KUSEG、KSEG2 和 KSEG3 執(zhí)行虛擬內(nèi)存到物理內(nèi)存的轉(zhuǎn)換。這些段的可緩存性屬性是在使用 CPU 協(xié)處理器 0 (CP0) EntryLo0 和 EntryLo1 寄存器配置 TLB 時(shí)定義的。
L1 指令和數(shù)據(jù)緩存
如圖 1 所示,CPU 可以直接訪問系統(tǒng) RAM,也可以通過緩存訪問。同樣,對(duì) Flash 的訪問可以直接發(fā)生,也可以通過緩存發(fā)生。DMA 訪問總是直接通過 RAM 進(jìn)行。除了 CPU 和緩存之間的訪問之外,所有訪問都涉及系統(tǒng)總線。
在復(fù)位時(shí),代碼執(zhí)行從 KSEG1 使用非緩存訪問發(fā)生。這是必要的,因?yàn)榫彺嬖诒粏?dòng)代碼初始化之前無法使用。一旦緩存被初始化,代碼執(zhí)行就可以從 KSEG0 開始,它利用緩存來獲得最佳性能。
當(dāng) CPU 使用緩存進(jìn)行訪問時(shí),系統(tǒng)將檢查所需的數(shù)據(jù)是否已存在于緩存中。如果數(shù)據(jù)存在于緩存中,則不執(zhí)行任何操作。這稱為緩存命中。如果沒有,硬件會(huì)使用內(nèi)存內(nèi)容填充指令或數(shù)據(jù)緩存。這稱為緩存未命中。緩存未命中會(huì)導(dǎo)致性能損失,而緩存命中則不會(huì)。
緩存的大小是閃存或 RAM 大小的一小部分。它可以在初始化時(shí)以多種方式進(jìn)行配置以優(yōu)化性能。MPLAB 開發(fā)工具將 PIC32MZ 緩存配置為“四路關(guān)聯(lián)”,因?yàn)檫@將是大多數(shù)應(yīng)用的最佳配置。四路關(guān)聯(lián)配置將緩存分為四個(gè)相等的部分,稱為路。其中每一個(gè)都分布在整個(gè)內(nèi)存地址范圍內(nèi)。每個(gè)緩存路被分成緩存線,這些緩存線代表可以在緩存和閃存或 RAM 之間傳輸?shù)淖钚?shù)據(jù)量。每行數(shù)據(jù)都包含將其與物理內(nèi)存相關(guān)聯(lián)并跟蹤其狀態(tài)的標(biāo)簽。因此,每個(gè)內(nèi)存位置都可以在四個(gè)高速緩存路之一的高速緩存行中表示。
PIC32MZ 緩存實(shí)現(xiàn)
編輯:hfy
-
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7528瀏覽量
164348 -
cpu
+關(guān)注
關(guān)注
68文章
10905瀏覽量
213030 -
PIC32MZ
+關(guān)注
關(guān)注
2文章
14瀏覽量
4304
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
PIC32MZ中斷代碼錯(cuò)誤怎么回事
什么是CPU一級(jí)緩存/二級(jí)緩存?
Microchip 32位PIC32MZ EF單片機(jī)系列喜添新成員 部分器件可支持?jǐn)U展級(jí)溫度范圍
Microchip 32位PIC32MZ EF單片機(jī)系列喜添新成員, 部分器件可支持?jǐn)U展級(jí)溫度范圍
PIC32MZ EF系列處理器主要特性及開發(fā)板框圖
![<b class='flag-5'>PIC32MZ</b> EF<b class='flag-5'>系列</b>處理器主要特性及開發(fā)板框圖](https://file1.elecfans.com//web2/M00/A7/41/wKgZomUMQ2CADLy9AABsnLt4sv8662.png)
PIC32MZ嵌入連接MCU主要特性和框圖分析
![<b class='flag-5'>PIC32MZ</b>嵌入連接MCU主要特性和框圖分析](https://file1.elecfans.com//web2/M00/A7/45/wKgZomUMQ3eAX3w_AAAuphFcE0g625.gif)
PIC32MZ器件系列中使用L1CPU高速緩存實(shí)現(xiàn)的風(fēng)險(xiǎn)和解決方法
![<b class='flag-5'>PIC32MZ</b><b class='flag-5'>器件</b><b class='flag-5'>系列</b>中使用<b class='flag-5'>L1CPU</b>高速<b class='flag-5'>緩存</b><b class='flag-5'>實(shí)現(xiàn)</b>的風(fēng)險(xiǎn)和解決方法](https://file.elecfans.com/web1/M00/54/41/pIYBAFsjd1iAaKv0AACJPmBeHr0521.png)
PIC32 FRM帶L1CPU高速緩存的器件上的預(yù)取模塊特性和操作中文概述
![<b class='flag-5'>PIC</b>32 FRM帶<b class='flag-5'>L1CPU</b>高速<b class='flag-5'>緩存</b>的<b class='flag-5'>器件</b>上的預(yù)取模塊特性和操作中文概述](https://file.elecfans.com/web1/M00/52/DE/pIYBAFsXpM2AUCqCAABMEzfhsNg616.png)
使用PIC32MZ設(shè)計(jì)的20msps示波器資料說明
使用MPLAB Harmony v3基于PIC32MZ MCU在運(yùn)行時(shí)使用高速緩存維護(hù)操作處理高速緩存一致性問題
![使用MPLAB Harmony v3基于<b class='flag-5'>PIC32MZ</b> MCU在運(yùn)行時(shí)使用高速<b class='flag-5'>緩存</b>維護(hù)操作處理高速<b class='flag-5'>緩存</b>一致性問題](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
如何使用PIC32MX/PIC32MZ/PIC32MM器件上的DMA CRC生成器
![如何使用<b class='flag-5'>PIC</b>32MX/<b class='flag-5'>PIC32MZ</b>/<b class='flag-5'>PIC</b>32MM<b class='flag-5'>器件</b>上的DMA CRC生成器](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論