新聞中心

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

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

作者: 時間:2016-11-09 來源:網(wǎng)絡 收藏
本章和第5章的內(nèi)容都與ARM處理器CP15協(xié)處理器寄存器有密切關系,所以我們這里先介紹一下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存儲保護和控制地址轉換表基地址Cachability的控制位
3存儲保護和控制域訪問控制位Bufferablity控制位
4存儲保護和控制保留保留
5存儲保護和控制內(nèi)存失效狀態(tài)訪問權限控制位
6存儲保護和控制內(nèi)存失效地址保護區(qū)域控制
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
由生產(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)品子編號,當產(chǎn)品主編號相同時,使用子編號來區(qū)分不同的產(chǎn)品子類,如產(chǎn)品中不同的高速緩存的大小等
位[31: 24]生產(chǎn)廠商的編號,現(xiàn)在已經(jīng)定義的有以下值:
0x41=AARM公司
0x44=DDigital Equipment公司
0x69=Iintel公司
ARM7處理器的主標識符寄存器編碼格式如下所示:
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)品子編號,當產(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之前處理器的主標識符寄存器編碼格式如下所示:
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)品子編號,當產(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類型標識符寄存器
訪問cache類型標識符寄存器的指令格式如下所示:
mrcp15, 0, r0, c0, c0, 1;將cache類型標識符寄存器C0,1的值讀到r0中
ARM處理器中cache類型標識符寄存器的編碼格式如下所示:
31292825242312110
000屬性字段S數(shù)據(jù)cache相關屬性指令cache相關屬性

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

310
失效地址(虛擬地址)

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


說明
L=0當發(fā)生cache未命中時,將預取的存儲塊存入cache中該塊對應的組中序號為index的cache塊中
續(xù)表
說明
L=1如果本次寫操作之前L=0,并且index值小于本次寫入的index,本次寫操作執(zhí)行的結果不可預知;否則,這時被鎖定的cache塊包括序號為0~index-1的塊,當發(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的值應該包含在該范圍內(nèi)
P1:寫入TLB的地址變換條目不會受使整個TLB無效操作的影響,一直保持有效;0:寫入TLB的地址變換條目將會受到使整個TLB無效操作的影響

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


評論


技術專區(qū)

關閉