新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM存儲器之:高速緩沖存儲器Cache

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

        作者: 時間:2013-09-30 來源:網絡 收藏

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

        以上3點對實時系統來說,影響更為明顯。

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

        這種策略在很大程度上保證了處理器對關鍵代碼或數據訪問時的性能。

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

        為了敘述方便,作下述假設。

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

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

        N(NumberofSets):Cache中的組數。

        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行。

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

        注意

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

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

        的存儲管理體系中,主要依靠系統協處理器和協處理器的寄存器c9來實現和管理Cache鎖定。如果系統中使用的是數據和指令分離的Cache,那么就依靠協處理器指令MCR和MRC中的opcode>2來區分:

        ·opcode>=0使用數據Cache鎖定寄存器;

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

        如果系統使用的是數據和指令統一的Cache,那么opcode2>要設置成0。

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

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

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

        圖15.14格式A編碼

        存儲器相關文章:存儲器原理




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 高尔夫| 吉水县| 文化| 布拖县| 通江县| 洱源县| 西平县| 湘西| 惠安县| 富蕴县| 辛集市| 鲁山县| 合作市| 广河县| 准格尔旗| 铅山县| 九江市| 娄底市| 内江市| 陆丰市| 长葛市| 怀化市| 鹿邑县| 柘城县| 鄂伦春自治旗| 宁化县| 平陆县| 民勤县| 仁化县| 蒙城县| 台东县| 周口市| 鄂托克旗| 平塘县| 宁安市| 万州区| 山阴县| 平度市| 久治县| 克东县| 晋江市|