新聞中心

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

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

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

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

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

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

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

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

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

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

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

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

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

310
失效地址(虛擬地址)

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


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

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

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

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


評(píng)論


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

關(guān)閉