新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM存儲器之:協處理器CP15

        ARM存儲器之:協處理器CP15

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

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

        bit[1:0]:定義Cache的塊大小,其編碼格式及含義如表15.9所示。

        表15.9 類型標識符寄存器控制字段bit[1:0]含義

        編碼

        Cache塊大小

        0b00

        2個字(8字節)

        0b01

        4個字(16字節)

        0b10

        8個字(32字節)

        0b11

        16個字(64字節)

        bit[5:3]:定義了Cache的相聯屬性,其編碼格式及含義如表15.10所示。

        表15.10 類型標識符寄存器控制字段bit[5:3]含義

        編碼

        M=0時的含義

        M=1時的含義

        0b000

        1路相聯

        (直接映射)

        沒有Cache

        0b001

        2路相聯

        3路相聯

        0b010

        4路相聯

        6路相聯

        0b011

        8路相聯

        12路相聯

        0b100

        16路相聯

        24路相聯

        0b101

        32路相聯

        48路相聯

        0b110

        64路相聯

        96路相聯

        0b111

        128路相聯

        192路相聯

        15.1.4寄存器c1

        中的寄存器c1包括以下控制功能:

        ·禁止/使能MMU以及其他與存儲系統有關的功能;

        ·配置存儲系統以及處理器中相關的工作。

        注意

        在寄存器c1中包含了一些沒有使用的位,這些位在將來可能被擴展其他功能時使用。因此為了編寫代碼在將來更高版本的處理器中仍可以使用,在修改寄存器c1中的位時應該使用“讀取-修改特定位-寫入”的操作序列。

        當對寄存器c1進行讀操作時,指令中CRm和opcode2的值將被處理器忽略,所以要人工將其置位為0。

        例15.2用MRC/MCR指令將寄存器c1的值進行讀取和寫入。

        【例15.2】

        MR,0,r0,c1,0,0;將寄存器c1的值讀取到寄存器r0中

        MCRP15,0,r0,c1,0,0;將ARM寄存器r0的值寫入寄存器c1

        圖15.7顯示了寄存器c1的編碼格式。

        圖15.7寄存器c1編碼格式

        寄存器c1各控制字段的含義如表15.11所示。

        表15.11 寄存器c1中各控制位字段的含義

        C1中的控制位

        含義

        M(bit[0])

        禁止/使能MMU或者MPU

        0:禁止MMU或者MPU

        1:使能MMU或者MPU

        如果系統中沒有MMU或者MPU,讀取時該位返回0,寫入時忽略

        A(bit[1])

        對于可以選擇是否支持內存訪問時地址對齊檢查的系統,本位禁止/使能地址對齊檢查功能

        0:禁止地址對齊檢查功能

        1:使能地址對齊檢查功能

        對寄存器進行寫操作時,忽略該位

        C(bit[2])

        當數據Cache和指令Cache分開時,本控制位禁止/使能數據Cache。

        當數據Cache和指令Cache統一時,該控制位禁止/使能整個Cache

        0:禁止Cache

        1:使能Cache

        如果系統中不含Cache,讀取時該位返回0,寫入時忽略

        當系統中Cache不能禁止時,讀取返回1,寫入時忽略

        W(bit[3])

        禁止/使能寫緩存

        0:禁止寫緩存

        1:使能寫緩存

        如果系統中不含寫緩存,讀取時該位返回0,寫入時忽略

        當系統中的寫緩存不能禁止時,讀取時該位返回0,寫入時忽略

        P(bit[4])

        對于向前兼容26位ARM處理器,本控制位控制PRGC32控制信號

        0:異常中斷處理程序進入32位地址模式

        1:異常中斷處理程序進入26位地址模式

        如果系統不支持向前兼容26位地址,讀取該位時返回1,寫入時被忽略

        D(bit[5])

        對于向前兼容26位ARM處理器,本控制位控制DATA32控制信號

        0:禁止26位地址異常檢查

        1:使能26位地址異常檢測

        如果系統不支持向前兼容26位地址,讀取該位時返回1,寫入時被忽略

        續表

        C1中的控制位

        含義

        L(bit[6])

        對于ARMv3及以前版本,本控制位可以控制處理器的中止模式

        0:選擇早期中止模式

        1:選擇后期中止模式

        對于以后的處理器讀取該位時返回1,寫入時忽略

        B(bit[7])

        對于存儲系統同時支持大/小端(big-endian/little-endian)的ARM處理器,該控制位配置系統使用哪種內存模式

        0:使用小端(little-endian)

        0:使用大端(big-endian)

        對于只支持小端(little-endian)的系統,讀取時該位返回0,寫入時忽略

        對于只支持大端(big-endian)的系統,讀取時該位返回1,寫入時忽略

        S(bit[8])

        支持MMU的存儲系統中,本控制位用作系統保護

        R(bit[9])

        支持MMU的存儲系統中,本控制位用作ROM保護

        F(bit[10])

        本控制位由生產廠商定義

        Z(bit[11])

        對于支持跳轉預測的ARM系統,本控制位禁止/使能跳轉預測功能

        0:禁止跳轉預測功能

        1:使能跳轉預測功能

        對于不支持跳轉預測的ARM系統,讀取時該位返回0,寫入時忽略

        I(bit[12])

        當數據Cache和指令Cache是分開的,本控制位禁止/使能指令Cache

        0:禁止指令Cache

        1:使能指令Cache

        如果系統中使用統一的指令Cache和數據Cache或者系統中不含Cache,讀取該位時返回0,寫入時忽略該位

        當系統中的指令Cache不能禁止時,讀取該位返回1,寫入時忽略該位

        V(bit[13])

        支持高端異常向量表的系統中,本控制位控制向量表的位置

        0:選擇0x00000000~0x0000001c

        1:選擇0Xffff0000~0xffff001c

        對于不支持高端中斷向量表的系統,讀取時返回0,寫入時忽略

        RR(bit[14])

        如果系統中Cache的淘汰算法可以選擇的話,本控制位選擇淘汰算法

        0:選擇常規的淘汰算法,如隨機淘汰算法

        1:選擇預測性的淘汰算法,如輪轉(round-robin)淘汰算法

        如果系統中淘汰算法不可選擇,寫入該位時被忽略,讀取該位時,根據其淘汰算法是否可以比較簡單地預測最壞情況返回1或者0

        L4(bit[15])

        ARM版本5及以上的版本中,本控制位可以提供兼容以前的ARM版本的功能

        0:保持當前ARM版本的正常功能

        1:對于一些根據跳轉地址的bit[0]進行狀態切換的指令,忽略bit[0],不進行狀態切換,保持和以前ARM版本兼容

        此控制位可以影響以下指令:LDM、LDR和POP

        對于ARM版本5以前的處理器,該位沒有使用,應作為UNP/SBZP

        對于ARM版本5以后的處理器,如果不支持向前兼容的屬性,讀取時該位返回0,寫入時忽略

        Bit(bit[31:16])

        這些位保留將來使用,應為UNP/SBZP


        上一頁 1 2 3 4 5 6 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 霍山县| 九江市| 平泉县| 永吉县| 荆州市| 台南县| 林州市| 买车| 武平县| 武陟县| 嘉峪关市| 元朗区| 延庆县| 宜章县| 海南省| 遵化市| 宣化县| 昭苏县| 泸西县| 长宁县| 合川市| 浮梁县| 颍上县| 苗栗市| 龙陵县| 灌南县| 景谷| 苍山县| 巴彦淖尔市| 洪江市| 珲春市| 武定县| 灵璧县| 平武县| 陵川县| 惠安县| 梧州市| 大方县| 广汉市| 西昌市| 镇雄县|