色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM存儲(chǔ)器之:高速緩沖存儲(chǔ)器Cache

          ARM存儲(chǔ)器之:高速緩沖存儲(chǔ)器Cache

          作者: 時(shí)間:2013-09-30 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://cafeforensic.com/article/257011.htm

          程序員通過指令對(duì)寄存器中的Cache組內(nèi)行號(hào)進(jìn)行操作。讀取格式A的寄存器c9,將返回最后一次寫入寄存器c9的值。將數(shù)據(jù)index寫入寄存器c9,就是對(duì)要鎖定的Cache行進(jìn)行設(shè)置。當(dāng)用MCR指令向寄存器寫入數(shù)據(jù)時(shí),執(zhí)行以下操作。

          ①當(dāng)下一次發(fā)生Cache未命中時(shí),將預(yù)取的存儲(chǔ)器行存入Cache中與該行相對(duì)應(yīng)的組中編號(hào)為index的Cache行中。

          ②這時(shí)被鎖定的Cache塊包括序號(hào)為0~index-1的鎖定塊。當(dāng)發(fā)生Cache替換時(shí),從編號(hào)為index到A-1的塊中選擇被替換的塊。

          格式B的編碼如圖15.15所示。

          程序員通過指令對(duì)寄存器中的Cache組內(nèi)行號(hào)進(jìn)行操作。讀取格式B的寄存器c9,將返回最后一次寫入寄存器c9的值。將數(shù)據(jù)index寫入寄存器c9,就是對(duì)要鎖定的Cache行進(jìn)行設(shè)置。當(dāng)用MCR指令向寄存器寫入數(shù)據(jù)時(shí),執(zhí)行以下操作。

          圖15.15格式B編碼

          ①當(dāng)L=0時(shí),如果方式Cache未命中,將預(yù)取的存儲(chǔ)行存入Cache中與該行對(duì)應(yīng)的組中序號(hào)為index的Cache行中。

          ②當(dāng)L=1時(shí),如果本次寫操作之前L=0,并且index值小于本次寫入的index,本次寫操作執(zhí)行的結(jié)果不可預(yù)知;否則,這時(shí)被鎖定的Cache塊包括序號(hào)為0~index-1的塊。當(dāng)發(fā)生Cache替換時(shí),從序號(hào)為index~A-1的塊中選擇被替換的塊。

          下面以鎖定塊N來說明要鎖定一個(gè)Cache塊的步驟。

          ①首先確保在下面的整個(gè)Cache鎖定過程不會(huì)被中斷打斷。如果程序要求中斷不能關(guān)閉,那么必須確保被打開的中斷相關(guān)代碼和數(shù)據(jù)位于非緩存(uncachable)的存儲(chǔ)區(qū)域。

          關(guān)中斷的典型做法如下所示。

          MRSr2,CPSR;讀出當(dāng)前程序狀態(tài)字CPSR

          ORRr2,r2,#0x000000C0;關(guān)中斷

          MSRCPSR_cxsf,r2;設(shè)置當(dāng)前程序狀態(tài)字

          ②如果鎖定是指令Cache或者統(tǒng)一Cache,必須保證鎖定過程所執(zhí)行的代碼位于非緩存的存儲(chǔ)域。

          ③如果鎖定的是數(shù)據(jù)Cache或者統(tǒng)一的Cache,必須保證鎖定過程所執(zhí)行的數(shù)據(jù)位于非緩存的存儲(chǔ)域。

          ④保證要鎖定的代碼和數(shù)據(jù)位于緩存的存儲(chǔ)區(qū)域中。

          ⑤如果要鎖定的代碼和數(shù)據(jù)不在Cache中,使用Cache清除或清理指令,將其置換到Cache中。

          ⑥N次循環(huán)執(zhí)行下面的操作。

          ·index=I寫入寄存器c9,當(dāng)使用B格式的鎖定寄存器時(shí),令L=0。

          ·如果鎖定的是數(shù)據(jù)Cache或數(shù)據(jù)和指令統(tǒng)一Cache,使用LDR指令將數(shù)據(jù)從內(nèi)存讀出,這個(gè)讀操作將使要鎖定的內(nèi)容存在于Cache行中。

          ·如果鎖定的是指令Cache,那么要借助c7寄存器,相關(guān)指令詳細(xì)內(nèi)容,參見c7寄存器一節(jié)。

          ⑦將index=N寫入寄存器c9,當(dāng)使用B格式的鎖定寄存器時(shí),令L=0。

          如果要解除對(duì)N鎖定塊的鎖定,執(zhí)行以下操作。

          ·將index=0寫入寄存器c9。

          ·當(dāng)使用格式B的鎖定寄存器時(shí),令L=0。

          15.3.8內(nèi)存一致性

          當(dāng)一個(gè)系統(tǒng)中同時(shí)使用了Cache、寫緩存時(shí),同一地址的數(shù)據(jù)可能同時(shí)出現(xiàn)在包括系統(tǒng)內(nèi)存在內(nèi)的多個(gè)不同的物理位置中。如果Cache引入了哈佛架構(gòu),使用數(shù)據(jù)和指令分類的Cache,那情況將更復(fù)雜。

          由于上述存儲(chǔ)系統(tǒng)的多樣性特點(diǎn),當(dāng)從內(nèi)存中讀取數(shù)據(jù)時(shí),不能保證讀取的是數(shù)據(jù)的最新值(即有可能出現(xiàn)下述情況:寫操作將數(shù)據(jù)寫入到Cache中,但更新數(shù)據(jù)還沒有被回寫到內(nèi)存)。

          存儲(chǔ)系統(tǒng)中,數(shù)據(jù)不一致問題一方面可以通過存儲(chǔ)系統(tǒng)自動(dòng)保證解決,另一方面編寫程序時(shí)要遵循一定的規(guī)則,防止數(shù)據(jù)不一致性發(fā)生。

          下面就幾個(gè)常出現(xiàn)數(shù)據(jù)不一致的地方進(jìn)行討論。

          ·地址映射發(fā)生變化時(shí)

          ·指令和數(shù)據(jù)分離的Cache

          ·系統(tǒng)執(zhí)行DMA(DirectMemoryAccess)操作

          (1)地址映射發(fā)生的變換

          當(dāng)系統(tǒng)中使用MMU時(shí),Cache行對(duì)應(yīng)的地址可能是:

          ①內(nèi)存中的實(shí)際地址;

          ②經(jīng)過地址轉(zhuǎn)換后的虛擬地址。

          如果查詢Cache時(shí)相聯(lián)地址比較使用的是虛擬地址,則當(dāng)系統(tǒng)地址到物理地址的映射發(fā)生變換時(shí),可能造成Cache中數(shù)據(jù)與主存中的不一致。

          同時(shí),當(dāng)系統(tǒng)中使用了寫緩存,處理器對(duì)寫緩存中的數(shù)據(jù)處理也是按虛擬地址進(jìn)行的,所以同樣會(huì)發(fā)生數(shù)據(jù)不統(tǒng)一的問題。比如,當(dāng)前處理器使用虛擬地址向某個(gè)內(nèi)存單元寫數(shù)據(jù),該寫操作已經(jīng)將虛擬地址和數(shù)據(jù)寫入到寫緩存區(qū)中,此時(shí),虛擬地址到物理地址的映射關(guān)系發(fā)生變換,使先前要寫入數(shù)據(jù)的虛擬地址發(fā)生了變化,當(dāng)寫緩存將上面被延時(shí)的寫操作寫到主存時(shí),使用的是變換后的地址,從而寫操作執(zhí)行失敗。

          為了避免發(fā)生這種數(shù)據(jù)不統(tǒng)一的情況,在系統(tǒng)虛擬地址到物理地址的映射關(guān)系發(fā)生變換前,根據(jù)系統(tǒng)的具體情況,執(zhí)行下面的操作序列中的一種或幾種。

          ·如果數(shù)據(jù)Cache為寫回型Cache,清空該數(shù)據(jù)Cache。

          ·使數(shù)據(jù)Cache中相應(yīng)的行無效。

          ·使指令Cache中相應(yīng)的行無效。

          ·將寫緩存區(qū)中被延時(shí)的操作全部執(zhí)行。

          ·有些情況可能還要求相關(guān)的存儲(chǔ)區(qū)域被置換成非緩存的。

          存儲(chǔ)器相關(guān)文章:存儲(chǔ)器原理




          評(píng)論


          相關(guān)推薦

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

          關(guān)閉