<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ARM處理器中CP15協(xié)處理器的寄存器

          ARM處理器中CP15協(xié)處理器的寄存器

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

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

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

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

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

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

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

          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:禁止數(shù)據(jù)/整個cache;1:使能數(shù)據(jù)/整個cache
          W0:禁止寫緩沖;1:使能寫緩沖
          P0:異常中斷處理程序進(jìn)入32位地址模式;1:異常中斷處理程序進(jìn)入26位地址模式
          D0:禁止26位地址異常檢查;1:使能26位地址異常檢查
          L0:選擇早期中止模型;1:選擇后期中止模型
          B0:little endian;1:big endian
          S在基于MMU的存儲系統(tǒng)中,本位用作系統(tǒng)保護(hù)
          R在基于MMU的存儲系統(tǒng)中,本位用作ROM保護(hù)
          F0:由生產(chǎn)商定義
          Z0:禁止跳轉(zhuǎn)預(yù)測功能;1:使能跳轉(zhuǎn)預(yù)測指令
          I0:禁止指令cache;1:使能指令cache
          V0:選擇低端異常中斷向量0x0~0x1c;1:選擇高端異常中斷向量0xffff0000~ 0xffff001c
          RR0:常規(guī)的cache淘汰算法,如隨機(jī)淘汰;1:預(yù)測性淘汰算法,如round-robin淘汰算法
          L40:保持ARMv5以上版本的正常功能;1:將ARMv5以上版本與以前版本處理器兼容,不根據(jù)跳轉(zhuǎn)地址的bit[0]進(jìn)行ARM指令和Thumb狀態(tài)切換: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
          域標(biāo)識
          狀態(tài)標(biāo)識
          其中,域標(biāo)識bit[7:4]表示存放引起存儲訪問失效的存儲訪問所屬的域。
          狀態(tài)標(biāo)識bit[3:0]表示放引起存儲訪問失效的存儲訪問類型,該字段含義如表4-3所示(優(yōu)先級由上到下遞減)。
          表4-3狀態(tài)標(biāo)識字段含義
          引起訪問失效的原因狀態(tài)標(biāo)識域標(biāo)識C6
          終端異常(Terminal Exception)0b0010無效生產(chǎn)商定義
          中斷向量訪問異常(Vector Exception)0b0000無效有效
          地址對齊0b00x1無效有效
          一級頁表訪問失效0b1100無效有效
          二級頁表訪問失效0b1110有效有效
          基于段的地址變換失效0b0101無效有效
          基于頁的地址變換失效0b0111有效有效
          基于段的存儲訪問中域控制失效0b1001有效有效
          基于頁的存儲訪問中域控制失效0b1101有效有效
          基于段的存儲訪問中訪問權(quán)限控制失效0b1111有效有效
          基于頁的存儲訪問中訪問權(quán)限控制失效0b0100有效有效
          基于段的cache預(yù)取時外部存儲系統(tǒng)失效0b0110有效有效
          基于頁的cache預(yù)取時外部存儲系統(tǒng)失效0b1000有效有效
          基于段的非cache預(yù)取時外部存儲系統(tǒng)失效0b1010有效有效

          310
          失效地址(虛擬地址)

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


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

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

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

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


          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();