一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

ARM CP15協(xié)處理器

 cuibaofeng 2015-12-11

4.1.1  訪問CP15寄存器的指令

訪問CP15寄存器指令的編碼格式及語法說明如下:

31  28

27  24

23  21

20

19  16

15  12

11  8

7  5

4

3  0

cond

1 1 1 0

opcode_1

L

cr n

rd

1 1 1 1

opcode_2

1

crm

說明:

<opcode_1>:協(xié)處理器行為操作碼,對于CP15來說,<opcode_1>永遠(yuǎn)為0b000,否則結(jié)果未知。

<rd>:不能是r15/pc,否則,結(jié)果未知。

<crn>:作為目標(biāo)寄存器的協(xié)處理器寄存器,編號為C0~C15。

<crm>:附加的目標(biāo)寄存器或源操作數(shù)寄存器,如果不需要設(shè)置附加信息,將crm設(shè)置為c0,否則結(jié)果未知。

<opcode_2>:提供附加信息比如寄存器的版本號或者訪問類型,用于區(qū)分同一個(gè)編號的不同物理寄存器,可以省略<opcode_2>或者將其設(shè)置為0,否則結(jié)果未知。

指    令

說    明

語法格式

mcr

將ARM處理器的寄存器中的數(shù)據(jù)寫到CP15中的寄存器中

mcr{<cond>}   p15, <opcode_1>, <rd>, <crn>, <crm>, {<opcode_2>}

mrc

將CP15中的寄存器中的數(shù)據(jù)讀到ARM處理器的寄存器中

mcr{<cond>}   p15, <opcode_1>, <rd>, <crn>, <crm>, {<opcode_2>}

4.1.2  CP15寄存器介紹

CP15的寄存器列表如表4-1所示。

表4-1  ARM處理器中CP15協(xié)處理器的寄存器

寄存器編號

基本作用

在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è)計(jì)而異

因不同設(shè)計(jì)而異

因不同設(shè)計(jì)而異

  • CP15的寄存器C0

CP15中寄存器C0對應(yīng)兩個(gè)標(biāo)識符寄存器,由訪問CP15中的寄存器指令中的<opcode_2>指定要訪問哪個(gè)具體物理寄存器,<opcode_2>與兩個(gè)標(biāo)識符寄存器的對應(yīng)關(guān)系如下所示:

 

opcode_2編碼

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

0b000

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

0b001

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

其他

保留

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

訪問主標(biāo)識符寄存器的指令格式如下所示:

mrc p15, 0, r0, c0, c0, 0       ;將主標(biāo)識符寄存器C0,0的值讀到r0中

ARM不同版本體系處理器中主標(biāo)識符寄存器的編碼格式說明如下。

ARM7之后處理器的主標(biāo)識符寄存器編碼格式如下所示:

31             24      23            20      19              16    15              4     3               0

由生產(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體系的版本號,可能的取值如下:

0x1   ARM體系版本4

0x2   ARM體系版本4T

0x3   ARM體系版本5

0x4   ARM體系版本5T

0x5   ARM體系版本5TE

其他  由ARM公司保留將來使用

位[23: 20]

生產(chǎn)商定義的產(chǎn)品子編號,當(dāng)產(chǎn)品主編號相同時(shí),使用子編號來區(qū)分不同的產(chǎn)品子類,如產(chǎn)品中不同的高速緩存的大小等

位[31: 24]

生產(chǎn)廠商的編號,現(xiàn)在已經(jīng)定義的有以下值:

0x41  =A  ARM公司

0x44  =D  Digital Equipment公司

0x69  =I   intel公司

ARM7處理器的主標(biāo)識符寄存器編碼格式如下所示:

31             24     23     22                        16           15          4         3          0

由生產(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)品主編號相同時(shí),使用子編號來區(qū)分不同的產(chǎn)品子類,如產(chǎn)品中不同的高速緩存的大小等

續(xù)表 

說    明

位[23]

ARM7支持下面兩種ARM體系的版本號:

0x0   ARM體系版本3

0x1   ARM體系版本4T

位[31: 24]

生產(chǎn)廠商的編號,現(xiàn)在已經(jīng)定義的有以下值:

0x41  =A  ARM公司

0x44  =D  Digital Equipment公司

0x69  =I   Intel公司

ARM7之前處理器的主標(biāo)識符寄存器編碼格式如下所示:

31           24       23       22                    16            15          4         3           0

由生產(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)品主編號相同時(shí),使用子編號來區(qū)分不同的產(chǎn)品子類,如產(chǎn)品中不同的高速緩存的大小等

位[23]

ARM7支持下面兩種ARM體系的版本號:

0x0   ARM體系版本3

0x1   ARM體系版本4T

位[31: 24]

生產(chǎn)廠商的編號,現(xiàn)在已經(jīng)定義的有以下值:

0x41  =A  ARM公司

0x44  =D  Digital Equipment公司

0x69  =I   intel公司

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

訪問cache類型標(biāo)識符寄存器的指令格式如下所示:

mrc p15, 0, r0, c0, c0, 1       ;將cache類型標(biāo)識符寄存器C0,1的值讀到r0中

ARM處理器中cache類型標(biāo)識符寄存器的編碼格式如下所示:

31             29     28           25    24       23             12               11            0

0   0   0

屬性字段

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,本字段定義整個(gè)cache的屬性

位[31: 24]

定義指令cache的相關(guān)屬性,如果位[24]為0,本字段定義整個(gè)cache的屬性

其中控制字段位[28:25]的含義說明如下:

表4-2  cache類型標(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]的編碼格式相同,含義如下所示:

11      9         8             6         5          3                2            1               0

0    0    0

cache容量

cache相聯(lián)特性

M

塊大小

cache容量字段bits[8: 6]的含義如下所示:

編    碼

M=0時(shí)含義(單位KB)

M=1時(shí)含義(單位KB)

0b000

0.5

0.75

0b001

1

1.5

0b010

2

3

0b011

4

6

0b100

8

12

0b101

16

24

0b110

32

48

0b111

64

96

cache相聯(lián)特性字段bits[5: 3]的含義如下所示:

編    碼

M=0時(shí)含義

M=1時(shí)含義

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)

cache塊大小字段bits[1: 0]的含義如下所示:

編    碼

cache塊大小

0b00

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

0b01

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

0b10

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

0b11

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

  • CP15的寄存器C1

訪問主標(biāo)識符寄存器的指令格式如下所示:

mrc p15, 0, r0, c1, c0{, 0}     ;將CP15的寄存器C1的值讀到r0中

mcr p15, 0, r0, c1, c0{, 0}     ;將r0的值寫到CP15的寄存器C1中

CP15中的寄存器C1的編碼格式及含義說明如下:

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

 

說    明

M

0:禁止MMU或者PU;1:使能MMU或者PU

A

0:禁止地址對齊檢查;1:使能地址對齊檢查

C

0:禁止數(shù)據(jù)/整個(gè)cache;1:使能數(shù)據(jù)/整個(gè)cache

W

0:禁止寫緩沖;1:使能寫緩沖

P

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

D

0:禁止26位地址異常檢查;1:使能26位地址異常檢查

L

0:選擇早期中止模型;1:選擇后期中止模型

B

0:little endian;1:big endian

S

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

R

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

F

0:由生產(chǎn)商定義

Z

0:禁止跳轉(zhuǎn)預(yù)測功能;1:使能跳轉(zhuǎn)預(yù)測指令

I

0:禁止指令cache;1:使能指令cache

V

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

RR

0:常規(guī)的cache淘汰算法,如隨機(jī)淘汰;1:預(yù)測性淘汰算法,如round-robin淘汰算法

L4

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

附加:

 

  • CP15的寄存器C2

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

31                                                                                                     0

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

  • CP15的寄存器C3

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

31                                                                                                     0

D15

D14

D13

D12

D11

D10

D9

D8

D7

D6

D5

D4

D3

D2

D1

D0

  • CP15的寄存器C5

CP15中的寄存器C5是失效狀態(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]表示放引起存儲訪問失效的存儲訪問類型,該字段含義如表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ù)取時(shí)外部存儲系統(tǒng)失效

0b0110

有效

有效

基于頁的cache預(yù)取時(shí)外部存儲系統(tǒng)失效

0b1000

有效

有效

基于段的非cache預(yù)取時(shí)外部存儲系統(tǒng)失效

0b1010

有效

有效

  • CP15中的寄存器C6

CP15中的寄存器C5是失效地址寄存器,編碼格式如下所示:

31                                                                                                     0

失效地址(虛擬地址)

  • CP15中的寄存器C7

CP15的C7寄存器用來控制cache和寫緩存,它是一個(gè)只寫寄存器,讀操作將產(chǎn)生不可預(yù)知的后果。

訪問CP15的C7寄存器的指令格式如下所示:

mcr p15, 0, <rd>, <c7>, crm, <opcode_2> ;<rd>、<crm>和<opcode_2>的不同取值組合    實(shí)現(xiàn)不同功能

  • CP15中的寄存器C8

CP15的C8寄存器用來控制清除TLB的內(nèi)容,是只寫寄存器,讀操作將產(chǎn)生不可預(yù)知的后果。

訪問CP15的C8寄存器的指令格式如下所示:

mcr p15, 0, <rd>, <c8>, crm, <opcode_2> ;<rd>、<crm>和<opcode_2>的不同取值組合實(shí)現(xiàn)不同功能,見第4.2節(jié)

  • CP15中的寄存器C9

CP15的C9寄存器用于控制cache內(nèi)容鎖定。

訪問CP15的C9寄存器的指令格式如下所示:

mcr p15, 0, <rd>, <c9>, c0, <opcode_2>

mrc p15, 0, <rd>, <c9>, c0, <opcode_2>

如果系統(tǒng)中包含獨(dú)立的指令cache和數(shù)據(jù)cache,那么對應(yīng)于數(shù)據(jù)cache和指令cache分別有一個(gè)獨(dú)立的cache內(nèi)容鎖定寄存器,<opcode_2>用來選擇其中的某個(gè)寄存器:

<opcode_2>=1選擇指令cache的內(nèi)容鎖定寄存器;

<opcode_2>=0選擇數(shù)據(jù)cache的內(nèi)容鎖定寄存器。

CP15的C9寄存器有A、B兩種編碼格式。編碼格式A如下所示:

31                                       32-W 31-W                                         0

cache組內(nèi)塊序號index

0

其中index表示當(dāng)下一次發(fā)生cache未命中時(shí),將預(yù)取的存儲塊存入cache中該塊對應(yīng)的組中序號為index的cache塊中。此時(shí)序號為0~index-1的cache塊被鎖定,當(dāng)發(fā)生cache替換時(shí),從序號為index到ASSOCIATIVITY的塊中選擇被替換的塊。

編碼格式B如下所示:

31    30                                          W      W-1                                     0

L

0

cache組內(nèi)塊序號index

 

 

說    明

L=0

當(dāng)發(fā)生cache未命中時(shí),將預(yù)取的存儲塊存入cache中該塊對應(yīng)的組中序號為index的cache塊中

續(xù)表 

說    明

L=1

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

  • CP15的寄存器C10

CP15的C10寄存器用于控制TLB內(nèi)容鎖定。

訪問CP15的C10寄存器的指令格式如下所示:

mcr p15, 0, <rd>, <c10>, c0, <opcode_2>

mrc p15, 0, <rd>, <c10>, c0, <opcode_2>

如果系統(tǒng)中包含獨(dú)立的指令TLB和數(shù)據(jù)TLB,那么對應(yīng)于數(shù)據(jù)TLB和指令TLB分別有一個(gè)獨(dú)立的TLB內(nèi)容鎖定寄存器,<opcode_2>用來選擇其中的某個(gè)寄存器:

<opcode_2>=1選擇指令TLB的內(nèi)容鎖定寄存器;

<opcode_2>=0選擇數(shù)據(jù)TLB的內(nèi)容鎖定寄存器。

C10寄存器的編碼格式如下:

31 30                         32-W       31-W                            32-2W    31-2W     1    0

可被替換的條目起始地址的base

下一個(gè)將被替換的條目地址victim

0

P

 

說    明

victim

指定下一次TLB沒有命中(所需的地址變換條目沒有包含在TLB中)時(shí),從內(nèi)存頁表中讀取所需的地址變換條目,并把該地址變換條目保存在TLB中地址victim處

base

指定TLB替換時(shí),所使用的地址范圍,從(base)到(TLB中條目數(shù)-1);字段victim的值應(yīng)該包含在該范圍內(nèi)

P

1:寫入TLB的地址變換條目不會受使整個(gè)TLB無效操作的影響,一直保持有效;0:寫入TLB的地址變換條目將會受到使整個(gè)TLB無效操作的影響

  • CP15的寄存器C13

C13寄存器用于快速上下文切換FCSE。

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

mcr p15, 0, <rd>, <c13>, c0, 0

mrc p15, 0, <rd>, <c13>, c0, 0

C13寄存器的編碼格式如下所示:

31                25       24                                                                     0

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。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    色偷偷偷拍视频在线观看| 国产日韩综合一区在线观看| 91精品日本在线视频| 久久国内午夜福利直播| 91天堂免费在线观看| 欧美一区二区三区播放| 久久大香蕉一区二区三区| 国产成人综合亚洲欧美日韩| 日韩1区二区三区麻豆| 国产成人免费激情视频| 91亚洲国产成人久久精品麻豆| 日韩欧美一区二区黄色| 日韩精品视频香蕉视频| 国产在线观看不卡一区二区| 日本成人中文字幕一区| 国产91人妻精品一区二区三区| 免费在线观看欧美喷水黄片| 日本一区二区三区黄色| 精品国产成人av一区二区三区| 色涩一区二区三区四区| 国产精品视频第一第二区| 国产香蕉国产精品偷在线观看| 精品香蕉一区二区在线| 91精品日本在线视频| 国产成人午夜在线视频| 乱女午夜精品一区二区三区| 色欧美一区二区三区在线| 国产熟女一区二区三区四区| 九九热精彩视频在线播放| 观看日韩精品在线视频| 老司机精品线观看86| 东京热男人的天堂社区| 大香伊蕉欧美一区二区三区| 99热在线播放免费观看| 欧美人与动牲交a精品| 丰满少妇被猛烈插入在线观看| 日韩国产欧美中文字幕| 日本人妻中出在线观看| 精品国产亚洲av久一区二区三区 | 久久精品国产99精品亚洲| 99国产高清不卡视频|