cp15协处理器指令详解Word文档格式.docx

上传人:b****5 文档编号:18717111 上传时间:2022-12-31 格式:DOCX 页数:17 大小:22.97KB
下载 相关 举报
cp15协处理器指令详解Word文档格式.docx_第1页
第1页 / 共17页
cp15协处理器指令详解Word文档格式.docx_第2页
第2页 / 共17页
cp15协处理器指令详解Word文档格式.docx_第3页
第3页 / 共17页
cp15协处理器指令详解Word文档格式.docx_第4页
第4页 / 共17页
cp15协处理器指令详解Word文档格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

cp15协处理器指令详解Word文档格式.docx

《cp15协处理器指令详解Word文档格式.docx》由会员分享,可在线阅读,更多相关《cp15协处理器指令详解Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。

cp15协处理器指令详解Word文档格式.docx

基本作用

在MMU中的作用

在PU中的作用

ID编码(只读)

ID编码和cache类型

控制位(可读写)

各种控制位

2

存储保护和控制

地址转换表基地址

Cachability(可缓存性控制位

3

域访问控制位

Bufferablity控制位

保留

5

内存失效状态

访问权限控制位

6

内存失效地址

保护区域控制

7

高速缓存和写缓存

高速缓存和写缓存控制

8

TLB控制

9

高速缓存锁定

10

TLB锁定

11

12

13

进程标识符

14

15

因不同设计而异

◆CP15的寄存器C0

CP15中寄存器C0对应两个标识符寄存器,都是只读的,表明某些信息。

由访问CP15中的寄存器指令中的指定要访问哪个具体物理寄存器,与两个标识符寄存器的对应关系如下所示:

opcode_2编码

对应的标识符号寄存器

0b000

主标识符寄存器(ID编码)

0b001

cache类型标识符寄存器(cache类型)

其他

1)主标识符寄存器(通俗:

标明该处理器的某些型号信息

访问主标识符寄存器的指令格式如下所示:

mrcp15,0,r0,c0,c0,0;

将主标识符寄存器C0的值读到r0中,两个c0作用不同的。

1.c0:

表示协处理器中的源寄存器;

2.c0:

表示未使用附加的寄存器,这是要写c0。

ARM不同版本体系处理器中主标识符寄存器的编码格式说明如下。

✌RM7之后处理器的主标识符寄存器编码格式如下所示:

31242320191615430

由生产商确定

产品子编号

ARM体系版本号

产品主编号

处理器版本号

说明

位[3:

0]

生产商定义的处理器版本号

位[15:

4]

生产商定义的产品主编号,其中最高4位即位[15:

12]可能的取值为0~7但不能是0或7

位[19:

16]

ARM体系的版本号,可能的取值如下:

0x1ARM体系版本4

0x2ARM体系版本4T

0x3ARM体系版本5

0x4ARM体系版本5T

0x5ARM体系版本5TE

其他由ARM公司保留将来使用

位[23:

20]

生产商定义的产品子编号,当产品主编号相同时,使用子编号来区分不同的产品子类,如产品中不同的高速缓存的大小等

位[31:

24]

生产厂商的编号,现在已经定义的有以下值:

0x41=AARM公司

0x44=DDigitalEquipment公司

0x69=Iintel公司

✌RM7处理器的主标识符寄存器编码格式如下所示:

312423221615430

A

12]的值为0x7

位[22:

续表

位[23]

ARM7支持下面两种ARM体系的版本号:

0x0ARM体系版本3

0x1ARM体系版本4T

0x69=IIntel公司

ARM7之前处理器的主标识符寄存器编码格式如下所示:

生产商定义的产品主编号,其中最高4位即为[15:

2)cache类型标识符寄存器

访问cache类型标识符寄存器的指令格式如下所示:

mrcp15,0,r0,c0,c0,1;

将cache类型标识符寄存器C0的值读到r0中,1表示cache标示

ARM处理器中cache类型标识符寄存器的编码格式如下所示:

31292825242312110

000

属性字段

S

数据cache相关属性

指令cache相关属性

说明

位[28:

25]

指定控制字段位[24:

0]指定的属性之外的cache的其他属性,详见表4-2

位[24]

定义系统中的数据cache和指令cache是分开的还是统一的:

0系统的数据cache和指令cache是统一的;

1系统的数据cache和指令cache是分开的

12]

定义数据cache的相关属性,如果位[24]为0,本字段定义整个cache的属性

位[11:

0]

定义指令cache的相关属性,如果位[24]为0,本字段定义整个cache的属性

其中控制字段位[28:

25]的含义说明如下:

表4-2cache类型标识符寄存器的控制字段位[28:

25]

编码

cache类型

cache内容清除方法

cache内容锁定方法

0b0000

写通类型

不需要内容清除

不支持内容锁定

0b0001

写回类型

数据块读取

0b0010

由寄存器C7定义

0b0110

支持格式A

0b0111

支持格式B

控制字段位[23:

12]和控制字段位[11:

0]的编码格式相同,含义如下所示:

1198653210

cache容量

cache相联特性

M

块大小

cache容量字段bits[8:

6]的含义如下所示:

M=0时含义(单位KB)

M=1时含义(单位KB)

0.5

0.75

1.5

0b010

0b011

0b100

0b101

16

24

0b110

32

48

0b111

64

96

cache相联特性字段bits[5:

3]的含义如下所示:

M=0时含义

M=1时含义

1路相联(直接映射)

没有cache

2路相联

3路相联

4路相联

6路相联

8路相联

12路相联

16路相联

24路相联

32路相联

48路相联

64路相联

96路相联

128路相联

192路相联

cache块大小字段bits[1:

0]的含义如下所示:

cache块大小

0b00

2个字(8字节)

0b01

4个字(16字节)

0b10

8个字(32字节)

0b11

16个字(64字节)

◆CP15的寄存器C1

访问控制位寄存器C1的指令格式如下:

mrcp15,0,r0,c1,c0{,0};

将CP15的寄存器C1的值读到r0中

mcrp15,0,r0,c1,c0{,0};

将r0的值写到CP15的寄存器C1中

CP15中的寄存器C1的编码格式及含义说明如下:

31--16

附加

L4

RR

V

I

Z

F

R

B

D

P

W

C

0:

禁止MMU或者PU;

1:

使能MMU或者PU

禁止地址对齐检查;

使能地址对齐检查

禁止数据/整个cache;

使能数据/整个cache

禁止写缓冲;

使能写缓冲

异常中断处理程序进入32位地址模式;

1:

异常中断处理程序进入26位地址模式

禁止26位地址异常检查;

使能26位地址异常检查

选择早期中止模型;

选择后期中止模型

littleendian;

bigendian

在基于MMU的存储系统中,本位用作系统保护

在基于MMU的存储系统中,本位用作ROM保护

由生产商定义

禁止跳转预测功能;

使能跳转预测指令

禁止指令cache;

使能指令cache

选择低端异常中断向量0x0~0x1c;

选择高端异常中断向量0xffff0000~0xffff001c

常规的cache淘汰算法,如随机淘汰;

预测性淘汰算法,如round-robin淘汰算法

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

将ARMv5以上版本与以前版本处理器兼容,不根据跳转地址的bit[0]进行ARM指令和Thumb状态切换:

bit[0]等于0表示ARM指令,等于1表示Thumb指令

附加:

31——16

◆CP15的寄存器C2

CP15中的寄存器C2保存的是页表的基地址,即一级映射描述符表的基地址。

其编码格如下所示:

310

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

◆CP15的寄存器C3

CP15中的寄存器C3定义了✌RM处理器的16个域的访问权限。

D15

D14

D13

D12

D11

D10

D9

D8

D7

D6

D5

D4

D3

D2

D1

D0

◆CP15的寄存器C5

CP15中的寄存器C5是失效状态寄存器,编码格式如下所示:

31987430

✞☠P/SB☪P

域标识

状态标识

其中,域标识♌♓♦☯7:

4]表示存放引起存储访问失效的存储访问所属的域。

状态标识♌♓♦☯3:

0]表示引起存储访问失效的存储访问类型,该字段含义如表4-3所示(优先级由上到下递减)。

表4-3状态标识字段含义

引起访问失效的原因

C6

终端异常(❆♏❒❍♓⏹♋●☜⌧♍♏☐♦♓☐⏹)

0♌0010

无效

生产商定义

中断向量访问异常(✞♏♍♦☐❒☜⌧♍♏☐♦♓☐⏹)

0♌0000

有效

地址对齐

0♌00⌧1

一级页表访问失效

0♌1100

二级页表访问失效

0♌1110

基于段的地址变换失效

0♌0101

基于页的地址变换失效

0♌0111

基于段的存储访问中域控制失效

0♌1001

基于页的存储访问中域控制失效

0♌1101

基于段的存储访问中访问权限控制失效

0♌1111

基于页的存储访问中访问权限控制失效

0♌0100

基于段的♍♋♍♒♏预取时外部存储系统失效

0♌0110

基于页的♍♋♍♒♏预取时外部存储系统失效

0♌1000

基于段的非♍♋♍♒♏预取时外部存储系统失效

0♌1010

◆CP15中的寄存器C6

CP15中的寄存器C6是失效地址寄存器,编码格式如下所示:

失效地址(虚拟地址)

◆CP15中的寄存器C7

CP15的C7寄存器用来控制cache和写缓存,它是一个只写寄存器,读操作将产生不可预知的后果。

访问CP15的C7寄存器的指令格式如下所示:

❍♍❒☐15,0,,,♍❒❍,;

不同取值组合,实现不同功能

◆CP15中的寄存器C8

CP15的C8寄存器用来控制清除TLB的内容,是只写寄存器,读操作将产生不可预知的后果。

访问CP15的C8寄存器的指令格式如下所示:

不同取值组合实现不同功能

◆CP15中的寄存器C9

CP15的C9寄存器用于控制♍♋♍♒♏内容锁定。

访问CP15的C9寄存器的指令格式如下所示:

❍♍❒☐15,0,,,♍0,

❍❒♍☐15,0,,,♍0,

如果系统中包含独立的指令♍♋♍♒♏和数据♍♋♍♒♏,那么对应于数据♍♋♍♒♏和指令♍♋♍♒♏分别有一个独立的♍♋♍♒♏内容锁定寄存器,用来选择其中的某个寄存器:

选择指令♍♋♍♒♏的内容锁定寄存器;

0:

选择数据♍♋♍♒♏的内容锁定寄存器。

CP15的C9寄存器有✌、B两种编码格式。

编码格式✌如下所示:

3132-W31-W0

♍♋♍♒♏组内块序号♓⏹♎♏⌧

其中♓⏹♎♏⌧表示当下一次发生♍♋♍♒♏未命中时,将预取的存储块存入♍♋♍♒♏中该块对应的组中序号为♓⏹♎♏⌧的♍♋♍♒♏块中。

此时序号为0❞♓⏹♎♏⌧-1的♍♋♍♒♏块被锁定,当发生♍♋♍♒♏替换时,从序号为♓⏹♎♏⌧到✌SSOC✋✌❆✋✞✋❆✡的块中选择被替换的块。

编码格式B如下所示:

3130WW-10

cache组内块序号index

L=0

当发生cache未命中时,将预取的存储块存入cache中该块对应的组中序号为index的cache块中

L=1

如果本次写操作之前L=0,并且index值小于本次写入的index,本次写操作执行的结果不可预知;

否则,这时被锁定的cache块包括序号为0~index-1的块,当发生cache替换时,从序号为index到ASSOCIATIVITY的块中选择被替换的块

◆CP15的寄存器C10

CP15的C10寄存器用于控制TLB内容锁定。

访问CP15的C10寄存器的指令格式如下所示:

mcrp15,0,,,c0,

mrcp15,0,,,c0,

如果系统中包含独立的指令TLB和数据TLB,那么对应于数据TLB和指令TLB分别有一个独立的TLB内容锁定寄存器,用来选择其中的某个寄存器:

选择指令TLB的内容锁定寄存器;

选择数据TLB的内容锁定寄存器。

C10寄存器的编码格式如下:

313032-W31-W32-2W31-2W10

可被替换的条目起始地址的base

下一个将被替换的条目地址victim

victim

指定下一次TLB没有命中(所需的地址变换条目没有包含在TLB中)时,从内存页表中读取所需的地址变换条目,并把该地址变换条目保存在TLB中地址victim处

base

指定TLB替换时,所使用的地址范围,从(base)到(TLB中条目数-1);

字段victim的值应该包含在该范围内

写入TLB的地址变换条目不会受使整个TLB无效操作的影响,一直保持有效;

写入TLB的地址变换条目将会受到使整个TLB无效操作的影响

◆CP15的寄存器C13

C13寄存器用于快速上下文切换☞CS☜。

访问CP15的C13寄存器的指令格式如下所示:

❍♍❒☐15,0,,,♍0,0

❍❒♍☐15,0,,,♍0,0

C13寄存器的编码格式如下所示:

3125240

P✋D

其中,P✋D表示当前进程的所在的进程空间块的编号,即当前进程的进程标识符,取值为0❞127。

M✞✌(变换后的虚拟地址)=✞✌(虚拟地址),禁止☞CS☜(快速上下文切换技术),系统复位后P✋D=0;

非0:

使能☞CS☜。

MM✞是M♏❍☐❒⍓M♋⏹♋♑♏✞⏹♓♦的缩写,即存储管理单元的意思。

MM✞实现以下功能:

1)虚拟存储地址到物理存储地址的映射;

2)控制存储空间访问权限;

3)设置存储空间的缓冲特性。

与MM✞相关的一些基本概念介绍如下:

⏹页表(TranslateTable)

页表又叫翻译表,用来将虚拟地址翻译成对应的物理地址,它位于内存中,是实现MM✞功能的重要组成部分,处理器通过查找页表中的描述符来获取虚拟地址对应的物理地址。

✌RM处理器是按两级分页来管理内存的,所以页表包括一级页表和二级页表。

一级页表中的每一项(1个字,4字节)对应于虚拟存储空间的一段(section),一段的大小为1MB(0x100000字节),该项包含了该虚拟存储段对应的物理存储段的基地址或者一段存储空间内每页的二级页表描述符组成的表的基地址、所属的内存域编号、缓冲特性等,一级页表的基地址保存在ARM处理器中CP15协处理器的C2寄存器中,该寄存器中保存的是一级页表的物理基地址,而不是虚拟地址。

二级页表中的每一项(1word,4bytes)对应于虚拟存储空间的一页,一页的大小可以是4KB或1KB,该项包含了该虚拟存储页对应的物理存储页的基地址、该页的访问权限和该页的缓冲特性等。

我们将页表中的每一项叫做一个地址变换条目(♏⏹♦❒⍓),也可以叫一个页表项。

⏹翻译援助缓冲区(TranslationLookasideBuffer,TLB)

TLB在硬件上和cache一样,是处理器内部的一小块高速SRAM内存,用于缓存,与cache不同的是,它专门缓存存放在内存中的页表,容量相对比较小,而cache则用于缓存普通内存,容量相对比较大。

TLB也分为数据TLB和指令TLB,指令TLB用于取指令时的指令地址翻译,而数据TLB用于其他存储访问操作时的地址翻译。

有的处理器中数据TLB和指令TLB是分开的,有的处理器中这两者是统一的。

TLB是为了提高处理器查询页表的速度而设计的,所以TLB又叫快表。

当处理器要查询页表时首先在TLB中查找,如果要查找的页表项不在TLB中,那么CPU从位于内存中的页表中查询,并把相应的结果添加到TLB中,这样CPU下次查找该页表项时就可以从TLB中直接获取。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小学作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1