新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM處理器中CP15協處理器的寄存器

        ARM處理器中CP15協處理器的寄存器

        作者: 時間:2016-11-09 來源:網絡 收藏
        本章和第5章的內容都與ARM處理器CP15協處理器寄存器有密切關系,所以我們這里先介紹一下CP15寄存器以及訪問CP15寄存器的匯編指令
        4.1.1訪問CP15寄存器的指令訪問CP15寄存器指令的編碼格式及語法說明如下:
        312827242321201916151211875430
        cond1 1 1 0opcode_1Lcr nrd1 1 1 1opcode_21crm

        指令
        說明
        語法格式
        mcr
        將ARM處理器的寄存器中的數據寫到CP15中的寄存器中
        mcr{}p15,,,,, {}
        mrc
        將CP15中的寄存器中的數據讀到ARM處理器的寄存器中
        mcr{}p15,,,,, {}
        4.1.2CP15寄存器介紹CP15的寄存器列表如表4-1所示。
        表4-1ARM處理器中CP15協處理器的寄存器
        寄存器編號基本作用在MMU中的作用在PU中的作用
        0ID編碼(只讀)ID編碼和cache類型
        1控制位(可讀寫)各種控制位
        2存儲保護和控制地址轉換表基地址Cachability的控制位
        3存儲保護和控制域訪問控制位Bufferablity控制位
        4存儲保護和控制保留保留
        5存儲保護和控制內存失效狀態訪問權限控制位
        6存儲保護和控制內存失效地址保護區域控制
        7高速緩存和寫緩存高速緩存和寫緩存控制
        8存儲保護和控制TLB控制保留
        9高速緩存和寫緩存高速緩存鎖定
        10存儲保護和控制TLB鎖定保留
        11保留
        12保留
        13進程標識符進程標識符
        14保留
        15因不同設計而異因不同設計而異因不同設計而異

        opcode_2編碼
        對應的標識符號寄存器
        0b000
        主標識符寄存器
        0b001
        cache類型標識符寄存器
        其他
        保留
        1)主標識符寄存器
        訪問主標識符寄存器的指令格式如下所示:
        mrcp15, 0, r0, c0, c0, 0;將主標識符寄存器C0,0的值讀到r0中
        ARM不同版本體系處理器中主標識符寄存器的編碼格式說明如下。
        ARM7之后處理器的主標識符寄存器編碼格式如下所示:
        31242320191615430
        由生產商確定產品子編號ARM體系版本號產品主編號處理器版本號

        說明
        位[3: 0]生產商定義的處理器版本號
        位[15: 4]生產商定義的產品主編號,其中最高4位即位[15:12]可能的取值為0~7但不能是0或7
        位[19: 16]ARM體系的版本號,可能的取值如下:
        0x1ARM體系版本4
        0x2ARM體系版本4T
        0x3ARM體系版本5
        0x4ARM體系版本5T
        0x5ARM體系版本5TE
        其他由ARM公司保留將來使用
        位[23: 20]生產商定義的產品子編號,當產品主編號相同時,使用子編號來區分不同的產品子類,如產品中不同的高速緩存的大小等
        位[31: 24]生產廠商的編號,現在已經定義的有以下值:
        0x41=AARM公司
        0x44=DDigital Equipment公司
        0x69=Iintel公司
        ARM7處理器的主標識符寄存器編碼格式如下所示:
        3124232216 15430
        由生產商確定A產品子編號產品主編號處理器版本號

        說明
        位[3: 0]生產商定義的處理器版本號
        位[15: 4]生產商定義的產品主編號,其中最高4位即位[15:12]的值為0x7
        位[22: 16]生產商定義的產品子編號,當產品主編號相同時,使用子編號來區分不同的產品子類,如產品中不同的高速緩存的大小等
        續表
        說明
        位[23]ARM7支持下面兩種ARM體系的版本號:
        0x0ARM體系版本3
        0x1ARM體系版本4T
        位[31: 24]生產廠商的編號,現在已經定義的有以下值:
        0x41=AARM公司
        0x44=DDigital Equipment公司
        0x69=IIntel公司
        ARM7之前處理器的主標識符寄存器編碼格式如下所示:
        312423221615430
        由生產商確定A產品子編號產品主編號處理器版本號

        說明
        位[3: 0]生產商定義的處理器版本號
        位[15: 4]生產商定義的產品主編號,其中最高4位即為[15:12]的值為0x7
        位[22: 16]生產商定義的產品子編號,當產品主編號相同時,使用子編號來區分不同的產品子類,如產品中不同的高速緩存的大小等
        位[23]ARM7支持下面兩種ARM體系的版本號:
        0x0ARM體系版本3
        0x1ARM體系版本4T
        位[31: 24]生產廠商的編號,現在已經定義的有以下值:
        0x41=AARM公司
        0x44=DDigital Equipment公司
        0x69=Iintel公司
        2)cache類型標識符寄存器
        訪問cache類型標識符寄存器的指令格式如下所示:
        mrcp15, 0, r0, c0, c0, 1;將cache類型標識符寄存器C0,1的值讀到r0中
        ARM處理器中cache類型標識符寄存器的編碼格式如下所示:
        31292825242312110
        000屬性字段S數據cache相關屬性指令cache相關屬性

        說明
        位[28: 25]指定控制字段位[24: 0]指定的屬性之外的cache的其他屬性,詳見表4-2
        位[24]定義系統中的數據cache和指令cache是分開的還是統一的:
        0系統的數據cache和指令cache是統一的;
        1系統的數據cache和指令cache是分開的
        位[23: 12]定義數據cache的相關屬性,如果位[24]為0,本字段定義整個cache的屬性
        位[31: 24]定義指令cache的相關屬性,如果位[24]為0,本字段定義整個cache的屬性
        其中控制字段位[28:25]的含義說明如下:
        表4-2cache類型標識符寄存器的控制字段位[28:25]
        編碼cache類型cache內容清除方法cache內容鎖定方法
        0b0000寫通類型不需要內容清除不支持內容鎖定
        0b0001寫回類型數據塊讀取不支持內容鎖定
        0b0010寫回類型由寄存器C7定義不支持內容鎖定
        0b0110寫回類型由寄存器C7定義支持格式A
        0b0111寫回類型由寄存器C7定義支持格式B
        控制字段位[23:12]和控制字段位[11:0]的編碼格式相同,含義如下所示:
        1198653210
        000cache容量cache相聯特性M塊大小
        cache容量字段bits[8: 6]的含義如下所示:
        編碼M=0時含義(單位KB)M=1時含義(單位KB)
        0b0000.50.75
        0b00111.5
        0b01023
        0b01146
        0b100812
        0b1011624
        0b1103248
        0b1116496
        cache相聯特性字段bits[5: 3]的含義如下所示:
        編碼M=0時含義M=1時含義
        0b0001路相聯(直接映射)沒有cache
        0b0012路相聯3路相聯
        0b0104路相聯6路相聯
        0b0118路相聯12路相聯
        0b10016路相聯24路相聯
        0b10132路相聯48路相聯
        0b11064路相聯96路相聯
        0b111128路相聯192路相聯
        cache塊大小字段bits[1: 0]的含義如下所示:
        編碼cache塊大小
        0b002個字(8字節)
        0b014個字(16字節)
        0b108個字(32字節)
        0b1116個字(64字節)

        31 16
        15
        14
        13
        12
        11
        10
        9
        8
        7
        6
        5
        4
        3
        2
        1
        0
        附加
        L4
        RR
        V
        I
        Z
        F
        R
        S
        B
        L
        D
        P
        W
        C
        A
        M

        說明
        M0:禁止MMU或者PU;1:使能MMU或者PU
        A0:禁止地址對齊檢查;1:使能地址對齊檢查
        C0:禁止數據/整個cache;1:使能數據/整個cache
        W0:禁止寫緩沖;1:使能寫緩沖
        P0:異常中斷處理程序進入32位地址模式;1:異常中斷處理程序進入26位地址模式
        D0:禁止26位地址異常檢查;1:使能26位地址異常檢查
        L0:選擇早期中止模型;1:選擇后期中止模型
        B0:little endian;1:big endian
        S在基于MMU的存儲系統中,本位用作系統保護
        R在基于MMU的存儲系統中,本位用作ROM保護
        F0:由生產商定義
        Z0:禁止跳轉預測功能;1:使能跳轉預測指令
        I0:禁止指令cache;1:使能指令cache
        V0:選擇低端異常中斷向量0x0~0x1c;1:選擇高端異常中斷向量0xffff0000~ 0xffff001c
        RR0:常規的cache淘汰算法,如隨機淘汰;1:預測性淘汰算法,如round-robin淘汰算法
        L40:保持ARMv5以上版本的正常功能;1:將ARMv5以上版本與以前版本處理器兼容,不根據跳轉地址的bit[0]進行ARM指令和Thumb狀態切換:bit[0]等于0表示ARM指令,等于1表示Thumb指令
        附加:

        310
        一級映射描述符表的基地址(物理地址)

        310
        D15
        D14
        D13
        D12
        D11
        D10
        D9
        D8
        D7
        D6
        D5
        D4
        D3
        D2
        D1
        D0

        31987430
        UNP/SBZP
        0
        域標識
        狀態標識
        其中,域標識bit[7:4]表示存放引起存儲訪問失效的存儲訪問所屬的域。
        狀態標識bit[3:0]表示放引起存儲訪問失效的存儲訪問類型,該字段含義如表4-3所示(優先級由上到下遞減)。
        表4-3狀態標識字段含義
        引起訪問失效的原因狀態標識域標識C6
        終端異常(Terminal Exception)0b0010無效生產商定義
        中斷向量訪問異常(Vector Exception)0b0000無效有效
        地址對齊0b00x1無效有效
        一級頁表訪問失效0b1100無效有效
        二級頁表訪問失效0b1110有效有效
        基于段的地址變換失效0b0101無效有效
        基于頁的地址變換失效0b0111有效有效
        基于段的存儲訪問中域控制失效0b1001有效有效
        基于頁的存儲訪問中域控制失效0b1101有效有效
        基于段的存儲訪問中訪問權限控制失效0b1111有效有效
        基于頁的存儲訪問中訪問權限控制失效0b0100有效有效
        基于段的cache預取時外部存儲系統失效0b0110有效有效
        基于頁的cache預取時外部存儲系統失效0b1000有效有效
        基于段的非cache預取時外部存儲系統失效0b1010有效有效

        310
        失效地址(虛擬地址)

        3132-W 31-W0
        cache組內塊序號index
        0
        其中index表示當下一次發生cache未命中時,將預取的存儲塊存入cache中該塊對應的組中序號為index的cache塊中。此時序號為0~index-1的cache塊被鎖定,當發生cache替換時,從序號為index到ASSOCIATIVITY的塊中選擇被替換的塊。
        編碼格式B如下所示:
        3130WW-10
        L0cache組內塊序號index


        說明
        L=0當發生cache未命中時,將預取的存儲塊存入cache中該塊對應的組中序號為index的cache塊中
        續表
        說明
        L=1如果本次寫操作之前L=0,并且index值小于本次寫入的index,本次寫操作執行的結果不可預知;否則,這時被鎖定的cache塊包括序號為0~index-1的塊,當發生cache替換時,從序號為index到ASSOCIATIVITY的塊中選擇被替換的塊

        31 3032-W31-W32-2W31-2W10
        可被替換的條目起始地址的base
        下一個將被替換的條目地址victim
        0
        P

        說明
        victim指定下一次TLB沒有命中(所需的地址變換條目沒有包含在TLB中)時,從內存頁表中讀取所需的地址變換條目,并把該地址變換條目保存在TLB中地址victim處
        base指定TLB替換時,所使用的地址范圍,從(base)到(TLB中條目數-1);字段victim的值應該包含在該范圍內
        P1:寫入TLB的地址變換條目不會受使整個TLB無效操作的影響,一直保持有效;0:寫入TLB的地址變換條目將會受到使整個TLB無效操作的影響

        3125240
        PID
        0
        其中,PID表示當前進程的所在的進程空間塊的編號,即當前進程的進程標識符,取值為0~127。
        0:MVA(變換后的虛擬地址)= VA(虛擬地址),禁止FCSE(快速上下文切換技術),系統復位后PID=0;
        非0:使能FCSE。


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 衡东县| 葫芦岛市| 隆子县| 通江县| 清流县| 隆化县| 宁陵县| 紫阳县| 荃湾区| 隆尧县| 衢州市| 应城市| 永泰县| 辽阳市| 锡林浩特市| 遂平县| 芦溪县| 平度市| 井陉县| 阿图什市| 丁青县| 孝昌县| 呼和浩特市| 柏乡县| 阿克陶县| 灵川县| 博野县| 梁山县| 定州市| 夏津县| 隆德县| 中阳县| 霍山县| 吴忠市| 原平市| 抚远县| 安远县| 成武县| 永兴县| 茌平县| 德州市|