• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

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

    ARM存儲器之:高速緩沖存儲器Cache

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

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

    以上3點對實時系統(tǒng)來說,影響更為明顯。

    為了減少這種不利的影響,在系統(tǒng)中引入了Cache內(nèi)容鎖定技術(shù)。這種技術(shù)允許編程人員人為地將一些關(guān)鍵代碼或數(shù)據(jù)預(yù)取到Cache中后,通過寄存器操作對其設(shè)定一定的屬性,這樣當(dāng)有Cache未命中發(fā)生,需要進(jìn)行Cache替換時,將這些數(shù)據(jù)保護起來,使這些關(guān)鍵代碼或數(shù)據(jù)不會被換出。

    這種策略在很大程度上保證了處理器對關(guān)鍵代碼或數(shù)據(jù)訪問時的性能。

    Cache的鎖定操作是分組塊(block)為單位進(jìn)行的,它的分塊方法如下。

    為了敘述方便,作下述假設(shè)。

    L(LengthoftheLine):Cache的基本存儲單元行的大小。

    A(Associativity):表示每個Cache組中的行數(shù)。

    N(NumberofSets):Cache中的組數(shù)。

    M表示Cache中的鎖定塊。

    每個鎖定塊(lockdownblock)包括Cache每組中的一行。這樣Cache中共有A個鎖定塊,其編號為從0到A-1。其中編號為0的鎖定塊中包含Cache組0中的0#行,組1中的0#行,直到組A-1中的0#行。依此類推,鎖定塊1包含Cache組0中的1#行,組1中的1#行,直到組A-1中的1#行。這樣每個鎖定塊中包含了N個Cache行。

    當(dāng)編號為0~M的鎖定塊被鎖定在Cache中,編號為M+1~A的鎖定塊可以用于正常的Cache替換操作。

    注意

    編程中不能將全部Cache鎖定,至少要留出一個未鎖定的塊來支持存儲器的正常操作。

    每一個鎖定塊都包含有N個不同組中的Cache行。建議程序在使用Cache鎖定時,使每個Cache塊中的N個Cache行映射的為存儲器中的連續(xù)地址。也就是說,存儲器中N×L大小的聯(lián)系區(qū)域被映射到Cache中鎖定,這塊區(qū)域是Cache行邊界對齊的(如果一個Cache行包含4字節(jié),那么被鎖定的區(qū)域要是4字節(jié)對齊的,如果一個Cache行包含8字節(jié),那么被鎖定的Cache行就是8字節(jié)對齊的)。

    的存儲管理體系中,主要依靠系統(tǒng)協(xié)處理器和協(xié)處理器的寄存器c9來實現(xiàn)和管理Cache鎖定。如果系統(tǒng)中使用的是數(shù)據(jù)和指令分離的Cache,那么就依靠協(xié)處理器指令MCR和MRC中的opcode>2來區(qū)分:

    ·opcode>=0使用數(shù)據(jù)Cache鎖定寄存器;

    ·opcode>=1使用指令Cache鎖定寄存器。

    如果系統(tǒng)使用的是數(shù)據(jù)和指令統(tǒng)一的Cache,那么opcode2>要設(shè)置成0。

    另外,無論是MCR指令還是MCR指令,指令中的CRm>通常設(shè)為c0。

    寄存器c9有兩種主要的格式:格式A和格式B。

    格式A的編碼如圖15.14所示。

    圖15.14格式A編碼

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




    關(guān)鍵詞: ARM 高速緩沖存儲器 cache

    評論


    相關(guān)推薦

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

    關(guān)閉
    主站蜘蛛池模板: 涟源市| 湘西| 衡阳县| 杭锦后旗| 博爱县| 沙湾县| 珲春市| 娄烦县| 防城港市| 稻城县| 基隆市| 永昌县| 平安县| 千阳县| 宜良县| 进贤县| 惠来县| 高邮市| 贞丰县| 苗栗市| 大宁县| 达州市| 治多县| 无极县| 崇文区| 顺平县| 边坝县| 福海县| 江油市| 密山市| 文安县| 桂林市| 阳新县| 阿鲁科尔沁旗| 望都县| 通州市| 灵川县| 武冈市| 丹寨县| 沁阳市| 渭源县|