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

          新聞中心

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

          ARM協(xié)處理器CP15寄存器詳解

          作者: 時間:2016-11-21 來源:網(wǎng)絡(luò) 收藏
          用于系統(tǒng)存儲管理的協(xié)處理器CP15
          MCR{cond} coproc,opcode1,Rd,CRn,CRm,opcode2
          MRC {cond} coproc,opcode1,Rd,CRn,CRm,opcode2
          coproc 指令操作的協(xié)處理器名.標(biāo)準(zhǔn)名為pn,n,為0~15
          opcode1 協(xié)處理器的特定操作碼. 對于CP15寄存器來說,opcode1永遠(yuǎn)為0,不為0時,操作結(jié)果不可預(yù)知
          CRd 作為目標(biāo)寄存器的協(xié)處理器寄存器.
          CRn 存放第1個操作數(shù)的協(xié)處理器寄存器.
          CRm 存放第2個操作數(shù)的協(xié)處理器寄存器. (用來區(qū)分同一個編號的不同物理寄存器,當(dāng)不需要提供附加信息時,指定為C0)
          opcode2 可選的協(xié)處理器特定操作碼. (用來區(qū)分同一個編號的不同物理寄存器,當(dāng)不需要提供附加信息時,指定為0)
          • 在基于ARM嵌入式系統(tǒng)中,存儲系統(tǒng)通常是通過系統(tǒng)控制協(xié)處理器CP15完成的。
          • CP15可以包含16個32位的寄存器,其編號為0-15。實際上對于某些編號的寄存器可能對應(yīng)有多個物理寄存器。在指令中指定特定的標(biāo)志位來區(qū)分這些物理寄存器。有些類似于ARM寄存器中,處于不同的處理器模式時,ARM某些寄存器可能不同。
          CP15的寄存器列表如表所示:

          寄存器編號

          本文引用地址:http://www.ex-cimer.com/article/201611/319524.htm

          基本作用

          MMU中的作用

          PU中的作用

          0

          ID編碼(只讀)

          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è)計而異

          注:以下寄存器中相應(yīng)位的含義在不同的處理器中可能不同,但總體功能不變
          (一)CP15的寄存器C0
          CP15中寄存器C0對應(yīng)兩個標(biāo)識符寄存器,由訪問CP15中的寄存器指令中的指定要訪問哪個具體物理寄存器,與兩個標(biāo)識符寄存器的對應(yīng)關(guān)系如下所示:

          opcode2編碼

          對應(yīng)的標(biāo)識符號寄存器

          0b000

          主標(biāo)識符寄存器

          0b001

          cache類型標(biāo)識符寄存器

          其 他

          保留

          (1)主標(biāo)識符寄存器
          指令如下:
          MRC P15,0,R0,C0,C0,0 #將主標(biāo)示符寄存器的內(nèi)容讀到AMR寄存器R0中
          主標(biāo)示符的編碼格式對于不同的ARM處理器版本有所不同。

          對于AMR7之后的處理器,其主標(biāo)示符編碼格式如下 :

          30 24

          23 20

          19 16

          15 4

          3 0

          由生產(chǎn)商確定

          產(chǎn)品子編號

          ARM體系版本號

          產(chǎn)品主編號

          處理器版本號

          各部分的編碼詳細(xì)含義如下表所示:

          [3: 0]

          生產(chǎn)商定義的處理器版本號

          [15: 4]

          生產(chǎn)商定義的產(chǎn)品主編號

          其中最高4位即位[15:12]可能的取值為0x0~0x7但不能是0x00x7

          因為:

          0x0表示ARM7之前的處理器

          0x7表示ARM7處理器

          [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公司

          (2)cache類型標(biāo)識符寄存器
          指令如下:
          MRC P15,0,R0,C0,C0,1 #將cache類型標(biāo)識符寄存器的內(nèi)容讀到AMR寄存器R0中
          ARM處理器中cache類型標(biāo)識符寄存器的編碼格式如下所示:

          31 29

          28 25

          24

          23 12

          11 0

          000

          屬性字段

          S

          數(shù)據(jù)cache相關(guān)屬性

          指令cache相關(guān)屬性

          各部分的編碼詳細(xì)含義如下表所示:

          含義

          [28: 25]

          主要用于定義對于寫回類型的cache的一些屬性

          [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的屬性

          • 控制字段位[2825]的含義
          主要用于定義對于寫回類型的cache的一些屬性

          cache類型標(biāo)識符寄存器的控制字段位[2825]:

          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

          • 控制字段位[2312]及控制字段位[110]含義
          [23:12]用于定義數(shù)據(jù)cache的屬性,[11: 0]用于定義指令cache的屬性
          編碼格式如下:

          11 9

          8 6

          5 3

          2

          1 0

          000

          cache容量

          cache相聯(lián)特性

          M

          塊大小

          其中bits[1:0]含義如下:

          cache塊大小

          0b00

          2個字(8字節(jié))

          0b01

          4個字(16字節(jié))

          0b10

          8個字(32字節(jié))

          0b11

          16個字(64字節(jié))

          其中bits[5:3]含義如下:

          M=0時含義

          M=1時含義

          0b000

          1路相聯(lián)(直接映射)

          沒有cache

          0b001

          2路 相聯(lián)

          3路 相聯(lián)

          0b010

          4路 相聯(lián)

          6路 相聯(lián)

          0b011

          8路 相聯(lián)

          12路 相聯(lián)

          0b100

          16路 相聯(lián)

          24路 相聯(lián)

          0b101

          32路 相聯(lián)

          48路 相聯(lián)

          0b110

          64路 相聯(lián)

          96路 相聯(lián)

          0b111

          128路相聯(lián)

          192路相聯(lián)

          其中bits[8:6]含義如下:

          M=0時含義

          M=1時含義

          0b000

          0.5KB

          0.75KB

          0b001

          1KB

          1.5KB

          0b010

          2KB

          3KB

          0b011

          4KB

          6KB

          0b100

          8KB

          12KB

          0b101

          16KB

          24KB

          0b110

          32KB

          48KB

          0b111

          64KB

          96KB


          (二)CP15的寄存器C1
          CP15中的寄存器C1是一個控制寄存器,它包括以下控制功能:
          • 禁止或使能MMU以及其他與存儲系統(tǒng)相關(guān)的功能
          • 配置存儲系統(tǒng)以及ARM處理器中的相關(guān)部分的工作
          指令如下:
          mrcp15, 0, r0, c1, c0{, 0};將CP15的寄存器C1的值讀到r0
          mcrp15, 0, r0, c1, c0{, 0};將r0的值寫到CP15的寄存器C1
          CP15中的寄存器C1的編碼格式及含義說明如下:

          C1中的控制位

          含義

          M(bit[0])

          0:禁止MMU或者PU

          1:使能MMU或者PU

          如果系統(tǒng)中沒有MMU及PU,讀取時該位返回0,寫入時忽略該位

          A(bit[1])

          0:禁止地址對齊檢查

          1:使能地址對齊檢查

          C(bit[2])

          當(dāng)數(shù)據(jù)cache和指令cache分開時,本控制位禁止/使能數(shù)據(jù)cache。當(dāng)數(shù)據(jù)cache和指令cache統(tǒng)一時,該控制位禁止/使能整個cache。

          0:禁止數(shù)據(jù)/整個cache

          1:使能數(shù)據(jù)/整個cache

          如果系統(tǒng)中不含cache,讀取時該位返回0.寫入時忽略

          當(dāng)系統(tǒng)中不能禁止cache時,讀取時返回1.寫入時忽略

          W(bit[3])

          0:禁止寫緩沖

          1:使能寫緩沖

          如果系統(tǒng)中不含寫緩沖時,讀取時該位返回0.寫入時忽略

          當(dāng)系統(tǒng)中不能禁止寫緩沖時,讀取時返回1.寫入時忽略

          P(bit[4])

          對于向前兼容26位地址的ARM處理器,本控制位控制PROG32控制信號

          0:異常中斷處理程序進(jìn)入32位地址模式

          1:異常中斷處理程序進(jìn)入26位地址模式

          如果本系統(tǒng)中不支持向前兼容26位地址,讀取該位時返回1,寫入時忽略

          D(bit[5])

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

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

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

          如果本系統(tǒng)中不支持向前兼容26位地址,讀取該位時返回1,寫入時忽略

          L(bit[6])

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

          0:選擇早期中止模型

          1:選擇后期中止模型

          B(bit[7])

          對于存儲系統(tǒng)同時支持big-endian和little-endian的ARM系統(tǒng),本控制位配置系統(tǒng)的存儲模式

          0little endian

          1big endian

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

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

          S(bit[8])

          在基于MMU的存儲系統(tǒng)中,本位用作系統(tǒng)保護(hù)

          R(bit[9])

          在基于MMU的存儲系統(tǒng)中,本位用作ROM保護(hù)

          F(bit[10])

          由生產(chǎn)商定義

          Z(bit[11])

          對于支持跳轉(zhuǎn)預(yù)測的ARM系統(tǒng),本控制位禁止/使能跳轉(zhuǎn)預(yù)測功能

          0:禁止跳轉(zhuǎn)預(yù)測功能

          1:使能跳轉(zhuǎn)預(yù)測功能

          對于不支持跳轉(zhuǎn)預(yù)測的ARM系統(tǒng),讀取該位時返回0,寫入時忽略

          I(bit[12])

          當(dāng)數(shù)據(jù)cache和指令cache是分開的,本控制位禁止/使能指令cache

          0:禁止指令cache

          1:使能指令cache

          如果系統(tǒng)中使用統(tǒng)一的指令cache和數(shù)據(jù)cache或者系統(tǒng)中不含cache,讀取該位時返回0,寫入時忽略。當(dāng)系統(tǒng)中的指令cache不能禁止時,讀取時該位返回1,寫入時忽略

          V(bit[13])

          對于支持高端異常向量表的系統(tǒng),本控制位控制向量表的位置

          0:選擇低端異常中斷向量0x0~0x1c

          1:選擇高端異常中斷向量0xffff0000~ 0xffff001c

          對于不支持高端異常向量表的系統(tǒng),讀取時該位返回0,寫入時忽略

          PR(bit[14])

          如果系統(tǒng)中的cache的淘汰算法可以選擇的話,本控制位選擇淘汰算法

          0:常規(guī)的cache淘汰算法,如隨機(jī)淘汰

          1:預(yù)測性淘汰算法,如round-robin淘汰算法

          如果系統(tǒng)中cache的淘汰算法不可選擇,寫入該位時忽略。讀取該位時,根據(jù)其淘汰算法是否可以比較簡單地預(yù)測最壞情況返回0或者1

          L4(bit[15])

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

          0:保持ARMv5以上版本的正常功能

          1:將ARMv5以上版本與以前版本處理器兼容,不根據(jù)跳轉(zhuǎn)地址的bit[0]進(jìn)行ARM指令和Thumb狀態(tài)切換:bit[0]等于0表示ARM指令,等于1表示Thumb指令

          Bits[31:16])

          這些位保留將來使用,應(yīng)為UNP/SBZP

          (三)CP15的寄存器C2

          C2寄存器的別名:Translation table base (TTB) register

          C2寄存器用來保存頁表的基地址,即一級映射描述符表的基地址。其編碼格如下所示:

          310

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

          (四)CP15的寄存器C3

          CP15中的寄存器C3定義了ARM處理器的16個域的訪問權(quán)限。

          310

          D15

          D14

          D13

          D12

          D11

          D10

          D9

          D8

          D7

          D6

          D5

          D4

          D3

          D2

          D1

          D0

          CP15的C3寄存器中,劃分了16個域,每個區(qū)域由兩位構(gòu)成,這兩位說明了當(dāng)前內(nèi)存的檢查權(quán)限:
          00:當(dāng)前級別下,該內(nèi)存區(qū)域不允許被訪問,任何的訪問都會引起一個domain fault,這時 AP位無效
          01:當(dāng)前級別下,該內(nèi)存區(qū)域的訪問必須配合該內(nèi)存區(qū)域的段描述符中AP位進(jìn)行權(quán)檢查
          10:保留狀態(tài)(我們最好不要填寫該值,以免引起不能確定的問題)
          11:當(dāng)前級別下,對該內(nèi)存區(qū)域的訪問都不進(jìn)行權(quán)限檢查。這時AP位無效
          所以只有當(dāng)相應(yīng)域的編碼為 01時,才會根據(jù)AP位和協(xié)處理器CP15中的C1寄存器的R,S位進(jìn)行權(quán)限檢查

          (五)CP15的寄存器C5
          CP15中的寄存器C5是失效狀態(tài)寄存器,分為指令狀態(tài)失效和數(shù)據(jù)狀態(tài)失效。
          MRC p15, 0, , c5, c0, 0 訪問數(shù)據(jù)失效狀態(tài)寄存器 
          MRC p15, 0, , c5, c0, 1 訪問指令狀態(tài)失效寄存器 
          編碼格式如下所示: 

          31 9

          8

          7 4

          3 0

          UNP/SBZP

          0

          域標(biāo)識

          狀態(tài)標(biāo)識

          其中,域標(biāo)識bit[7:4]表示存放引起存儲訪問失效的存儲訪問所屬的域。狀態(tài)標(biāo)識bit[3:0]表示放引起存儲訪問失效的存儲訪問類型,該字段含義如下表所示(優(yōu)先級由上到下遞減)。 

          引起訪問失效的原因

          狀態(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

          有 效

          有 效

          (六)CP15的寄存器C6

          CP15中的寄存器C6是失效地址寄存器,其中保存了引起存儲訪問失效的地址,分為數(shù)據(jù)失效地址寄存器和指令失效地址寄存器

          MRC p15, 0, , c6, c0, 0 訪問數(shù)據(jù)失效地址寄存器 
          MRC p15, 0, , c6, c0, 2 訪問指令失效地址寄存器 

          編碼格式如下所示:

          310

          失效地址(虛擬地址)

          (七)CP15的寄存器C7
          CP15C7寄存器用來控制cache和寫緩存,它是一個只寫寄存器,讀操作將產(chǎn)生不可預(yù)知的后果。
          訪問CP15C7寄存器的指令格式如下所示:
          mcr p15, 0, , , crm, 、的不同取值組合,實現(xiàn)不同功能
          表中的數(shù)據(jù)是指Rd中的數(shù)據(jù):
          (八)CP15的寄存器C8

          系統(tǒng)協(xié)處理器CP15的寄存器C8就是清除TLB內(nèi)容的相關(guān)操作。它是一個只寫的寄存器。

          MCR p15,0,Rd,c8,CRm,opcode_2

          Rd中為要寫入C8寄存器的內(nèi)容,CRm和opcode_2的不同組合決定指令執(zhí)行的不同操作。

          指令

          Rd

          含義

          MCR p15, 0, Rd, c8, c5, 0 

          0

          使無效整個指令TLB

          MCR p15, 0, Rd, c8, c5, 1 

          虛擬地址

          使無效指令TLB中的單個地址變換條目

          MCR p15, 0, Rd, c8, c6, 0 

          0

          使無效整個數(shù)據(jù)TLB

          MCR p15, 0, Rd, c8, c6, 1 

          虛擬地址

          使無效數(shù)據(jù)TLB中的單個地址變換條目

          MCR p15, 0, , c8, c7, 0 

          0

          使無效整個數(shù)據(jù)和指令TLB

          MCR p15, 0, , c8, c7, 1 

          虛擬地址

          使無效數(shù)據(jù)和指令TLB中的單個地址變換條目

          (九)CP15的寄存器C12
          CP15寄存器C12用來設(shè)置異常向量基地址,其編碼格式如下所示:
          MCR p15, 0, , c12, c0, 0 ;Rd中存放要修改的異常向量基地址 

          31 5

          4 0

          異常向量基地址

          Reserve

          注:只有ARM11和cortex-a 可以任意修改異常向量基地址。arm7,ARM9,ARM10只可以在0地址或0xffff0000中
          (十)CP15的寄存器C13

          CP15中的寄存器C13用于快速上下文切換。其編碼格式如下所示。

          訪問寄存器C13的指令格式如下所示。

          MCRp15, 0,,,c0,0

          MRC P15, 0,,,c0,0

          其中,在讀操作時,結(jié)果中位[31::25]返回PID,其他位 的數(shù)值是不可以預(yù)知的。寫操作將設(shè)置PID的值。

          當(dāng)PID的值為0時,MVA = VA | (0(PID)<<25),MVA=VA,相當(dāng)于禁止了FCSE。系統(tǒng)復(fù)位后PID即為0.

          當(dāng)PID的值不為0時,相當(dāng)于使能了FCSE。




          關(guān)鍵詞: ARM協(xié)處理器CP15寄存

          評論


          技術(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); })();