CP15
- 格式:pdf
- 大小:285.61 KB
- 文档页数:9
arm汇编cp15格式-回复CP15格式是一个用于ARM架构处理器中的协处理器格式。
它被用于实现对特殊寄存器和一些特权操作的访问和控制。
在本文中,我们将一步一步地回答一些关于CP15格式的问题,包括它的功能、如何使用它以及它的一些使用示例。
一、什么是CP15格式?CP15格式是ARM架构中的一个协处理器格式。
它被用来实现对一些特殊寄存器和特权操作的访问和控制。
这些特殊寄存器和特权操作对于操作系统和处理器架构之间的通信和控制至关重要。
二、CP15格式的功能是什么?CP15格式的主要功能包括:1. 访问系统控制寄存器(System Control Registers,SCR)和体系结构版本寄存器(Architectural Version Registers,AVR)等特殊寄存器;2. 控制处理器的访问权限和特权级别;3. 提供对异常处理的支持,例如中断处理和系统调用;4. 管理cpu缓存和内存管理单元(MMU)等。
5. 提供对TLB(Translation Lookaside Buffer)的访问和控制。
三、怎么使用CP15格式?使用CP15格式,我们需要通过特殊的指令来进行访问和控制。
在ARM 汇编语言中,这些指令通常以"MCR"(Move to Co-processor Register)或"MRC"(Move from Co-processor Register)开头,后跟协处理器编号和寄存器编码。
下面是一些使用CP15格式的示例:1. 读取系统控制寄存器的值:MRC p15, 0, R1, c1, c0, 0这条指令读取CP15寄存器1(c1)中的值,并将其放入R1寄存器中。
2. 更新系统控制寄存器的值:MCR p15, 0, R0, c1, c0, 0这条指令将R0寄存器的值写入CP15寄存器1(c1)中,从而更新系统控制寄存器的值。
四、CP15格式的使用示例1. 启用或禁用MMU:MRC p15, 0, R1, c1, c0, 0 读取系统控制寄存器的值ORR R1, R1, #0x1 << 0 将R1寄存器中的Bit 0位置1以启用MMUMCR p15, 0, R1, c1, c0, 0 更新系统控制寄存器的值通过读取和更新系统控制寄存器的值来启用或禁用MMU。
ARM处理器的三大特点是:耗电少功能强、16位/32位双指令集和合作伙伴众多。
1、体积小、低功耗、低成本、高性能;2、支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;3、大量使用寄存器,指令执行速度更快;4、大多数数据操作都在寄存器中完成;5、寻址方式灵活简单,执行效率高;6、指令长度固定。
编辑本段ARM处理器的历史1978年12月5日,物理学家赫尔曼·豪泽(Hermann Hauser)和工程师Chris Curry,在英国剑桥创办了CPU公司(Cambridge Processing Unit),主要业务是为当地市场供应电子设备。
1979年,CPU公司改名为Acorn计算机公司。
起初,Acorn公司打算使用摩托罗拉公司的16位芯片,但是发现这种芯片太慢也太贵。
"一台售价500英镑的机器,不可能使用价格100英镑的CPU!"他们转而向Intel公司索要80286芯片的设计资料,但是遭到拒绝,于是被迫自行研发。
1985年,Roger Wilson和Steve Furber设计了他们自己的第一代32位、6M Hz的处理器,Roger Wilson和Steve Furber[1]用它做出了一台RISC指令集的计算机,简称ARM(Acorn RISC Machine)。
这就是ARM这个名字的由来。
RISC的全称是"精简指令集计算机"(reduced instruction set computer),它支持的指令比较简单,所以功耗小、价格便宜,特别合适移动设备。
早期使用ARM芯片的典型设备,就是苹果公司的牛顿PDA。
20世纪80年代后期,ARM很快开发成Acorn的台式机产品,形成英国的计算机教育基础。
1990年11月27日,Acorn公司正式改组为ARM计算机公司。
苹果公司出资150万英镑,芯片厂商VLSI出资25万英镑,Acorn本身则以150万英镑的知识产权和12名工程师入股。
逻辑推理规则1.真值函项逻辑推理规则1.1 有效论证的基本形式(12个)(1)分离论证或分离规则(Modus Ponens,简称MP。
Rule of Detachment):p→q,p,∴q(2)逆分离规则(Modus Tonens, 简称MT):p→q,¬q,∴¬p(3)假言连锁论证或假言三段论(Chain Argument, 简称CH;Hypothetical Syllogism, 简称HS):p→q,q→r,∴p→r(4)析取消去(Disjunction Elimination, 简称DE):p∨q,¬p, ∴qp∨q,¬q, ∴p(5)析取引入(Disjunction Introduction/Addiction, 有时又被称为析取添加, 简称DI):p,∴p∨qq,∴p ∨ q(6)合取引入或组合式(Conjunction Introduction, 简称CI): p,q,∴p ∧ q(7)合取简化(Conjunction Simplification, 有时又被称为分解式, 简称CS):p ∧ q, ∴pp ∧ q, ∴q(8)归谬法(Reductio ad Absurdum, 简称RaA):p→¬p,∴¬pp→ (q∧¬q),∴¬p(9)二难论证简单构成式(Simple Constructive, 简称SC):p→q,r→q,p∨r, ∴q(10)二难论证简单破坏式(Simple Destructive, 简称SD): p→q,p→r,¬q∨¬r, ∴¬p(11)二难论证复杂构成式(Complex Constructive, 简称CC): p→q,r→s,p∨r, ∴q∨s(12)二难论证复杂破坏式(Complex Destructive, 简称CD): p→q,r→s,¬q∨¬s, ∴¬p∨¬r1.2 等值规则(9条)(13)等值规则(Equivalence,简称Equiv)p ↔p∧pp ↔p∨pp→q ↔¬p∨qp→q ↔¬(p∧¬q)(p↔q)↔ (p→q)∧(q→p)(14)双否规则(Double Negation,简称DN)¬¬p ↔p(15)假言易位(Contraposition,简称CP)(p→q)↔ (¬q→¬p)(16)交换律(commutation,简称COM)p∧q ↔q∧pp∨q ↔q∨p(17)结合律(Association,简称AS)p∧(q∧r)↔(p∧q)∧rp∨(q∨r)↔ (p∨q)∨r(18)分配率(Distribution),简称DIS)p∧(q∨r)↔ (p∧q)∨(p∧r)p∨(q∧r)↔ (p∨q)∧(p∨r)(19)德摩根律(De Morgan’s Laws,简称DM或DeM)¬(p∧q)↔¬p∨¬q¬(p∨q)↔¬p∧¬q(20)输出规则(Exportation, 简称EXP)p∧q→r ↔p→(q→r)(21)重言规则(Tautology,简称TAUT)p∨¬pp→pp→(p∨q)(p∧¬p)→q¬(p∧¬p)p↔pp∧q→pp→(q∨¬q)2. 关于量词的规则(3条)(22)全称例示规则全称例示规则(UI,即Universal Instantiation)允许我们从所有情形推导出特殊情形。
不合格原材料扣款标准1.通用各类原料水份超标扣价:1.5*单价*(测定值-标准水份)%2.玉米:容重不达标每差10克/升,扣价10元/吨3.大豆:(粗蛋白+脂肪)不达标扣价:单价/(标准蛋白+脂肪)*[(标准蛋白+脂肪)-测定值]4.豆粕粗蛋白不达标扣价:单价/标准蛋白*(标准蛋白-测定值)5. 棉粕:粗蛋白不达标扣价:单价/标准蛋白*(标准蛋白-测定值)灰分超标扣价:3*单价*(测定灰份-标准灰份)%6. 菜粕:粗蛋白不达标扣价:单价/标准蛋白*(标准蛋白-测定值)灰分超标扣价:3*单价*(测定灰份-标准灰份)%蛋白溶解度不达标扣价:单价/标准*(标准-测定值)%7. 花生麸(粕)粗蛋白不达标扣价:单价/标准蛋白*(标准蛋白-测定值)灰分超标扣价:3*单价*(测定灰份-标准灰份)%8. 美国DDGS:(粗蛋白+脂肪)不达标扣价:单价/(标准蛋白+脂肪)*[(标准蛋白+脂肪)-测定值]灰分超标扣价:3*单价*(测定灰份-标准灰份)%9. 国产DDGS:粗蛋白不达标:0.5*单价/标准蛋白*(标准蛋白-测定值)灰分超标扣价:3*单价*(测定灰份-标准灰份)%10. 玉米蛋白粉:粗蛋白不达标扣价:单价/标准蛋白*(标准蛋白-测定值)灰分超标扣价:3*单价*(测定灰份-标准灰份)%11. 玉米皮:粗蛋白不达标0.33*单价/标准蛋白*(标淮蛋白-测定值) 12. 米糠、米糠粕:粗蛋白不达标0.33*单价/标准蛋白*(标准蛋白-测定值) 灰分超标扣价:3*单价*(测定灰份-标准灰份)% (灰分标准10)13. 包装袋总重量不达标2*单价/标准克数*(标准克数-测定值)14. 鱼粉类:粗蛋白不达标扣价:单价/标准蛋白*(标准蛋白-测定值)VBN不达标扣价:VBN每超5,扣价100元/吨VBN每超10,扣价200元/吨灰分超标扣价:单价*(测定灰份-标准灰份)%15. 面粉:湿面粉筋度不达标扣价:低于30退货低0~0.5让步接收低0.5~1扣价20元/吨低1~2 扣价40元/吨灰分超标扣价:5*单价*(测定灰份-标准灰份)%16. 次粉:灰分超标扣价:5*单价*(测定灰份-标准灰份)%17. 麸皮:灰分超标扣价:5*单价*(测定灰份-标准灰份)%18. 煤炭:(未确定)水分超过20%退货、发热量检测低于标准200卡以上退货。
虚拟地址和物理地址转换内核也不能直接访问物理地址.但因为内核的虚拟地址和物理地址之间只是一个差值0xc0000000的区别,所以从物理地址求虚拟地址或从虚拟地址求物理地址很容易。
那么虚拟地址和物理地址怎么转换?店铺整理了修改硬盘物理地址的相关资料。
供大家参考!虚拟地址和物理地址转换参考如下虚拟地址(Virtual Address Space)虚拟地址并不真实存在于计算机中。
每个进程都分配有自己的虚拟空间,而且只能访问自己被分配使用的空间。
理论上,虚拟空间受物理内存大小的限制,如给有4GB内存,那么虚拟地址空间的地址范围就应该是0x00000000~0xFFFFFFFF(4GB)。
为什么每个进程的虚拟地址空间范围都可以这么大呢,这涉及到地址的映射机制;程序实际运行时,系统会先将虚拟地址映射到物理地址中的范围。
另外一个概念:虚拟内存。
虚拟内存是内存中的一片连续地址空间。
在物理存储位置上的意义,不一定就是指物理内存,可能也是在硬盘上开辟的一篇地址空间。
物理地址(physical address)物理地址用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。
——这个概念应该是这几个概念中最好理解的一个,但是值得一提的是,虽然可以直接把物理地址理解成插在机器上那根内存本身,把内存看成一个从0字节一直到最大空量逐字节的编号的大数组,然后把这个数组叫做物理地址,但是事实上,这只是一个硬件提供给软件的抽像,内存的寻址方式并不是这样。
所以,说它是“与地址总线相对应”,是更贴切一些,不过抛开对物理内存寻址方式的考虑,直接把物理地址与物理的内存一一对应,也是可以接受的。
也许错误的理解更利于形而上的抽像。
虚地址到物理地址的转换过程MVA (Modified Virtual address,修改过的虚拟地址,这个地址由CPU产生#1)step1.通过TTBR找到粗表描述符转换表基地址#2 + MVA的粗页表索引 = 粗页表的物理地址step2.通过粗表描述符找到小页描述符粗页表基地址#3 + MVA的小页表索引 = 小页表的物理地址step3.通过小页描述符找到物理地址小页基地址#4 + MVA的页索引 = 物理地址step1得到的粗页表的物理地址位定义step2得到的小页表的物理地址位定义step3得到的物理地址位定义注1:严格的说,这个地址是可能是FCSE或ARM926ej-s处理器产生注2:转换表基地址保存在TTBR,详见TTBR注3:粗页表基地址保存在粗页表描述符中,详见粗页表描述符注4:小页表基地址保存在粗页表描述符中,详见小页表描述符--------------------------------------------------------------------------------------CP15系统控制协处理器(CP15)被用来配置和控制ARM926ej-s处理器。
ARM处理器中CP15协处理器的寄存器注意:You can only access CP15 registers with MRC and MCR instructions in a privileged mode (只能在特权模式下,对cp15进行MRC,MCR操作)。
1.访问CP15寄存器的指令访问CP15寄存器指令的编码格式及语法说明如下:31 28 27 24 23 21 20 19 16 15 12 11 8 7 5 4 3 0cond 1 1 1 0 opcode_1 L Cr n Rd 1 1 1 1 opcode_2 1 Cr m 说明:Opcode_1 :协处理器行为操作码,对于CP15来说,永远为0b000,否则结果未知。
Rd:处理器核心的寄存器名称,不能是r15/pc,否则,结果未知。
Crn:作为目标寄存器的协处理器寄存器名称,编号为C0~C15。
Crm:协处理器中附加的目标寄存器或源操作数寄存器,如果不需要设置附加信息,将Crm设置为c0,否则结果未知。
Opcode_2 :提供附加信息,比如寄存器的版本号或者访问类型,用于区分同一个编号的不同物理寄存器,可以省略或者将其设置为0,否则结果未知。
指令语法格式说明:mcr :将ARM处理器的寄存器中的数据写到CP15中的寄存器中mcr{<cond>} p15, <opcode_1>, <rd>, <crn>, <crm>, {<opcode_2>}mrc 将CP15中的寄存器中的数据读到ARM处理器的寄存器中mcr{<cond>} p15, <opcode_1>, <rd>, <crn>, <crm>, {<opcode_2>}2 .CP15寄存器介绍CP15中的寄存器列表如表4-1所示。
表4-1 ARM处理器中CP15协处理器的寄存器(协处理器)寄存器编号基本作用在MMU中的作用在PU中的作用0 ID编码(只读)ID编码和cache类型1 控制位(可读写)各种控制位2 存储保护和控制地址转换表基地址Cachability(可缓存性)控制位3 存储保护和控制域访问控制位Bufferablity控制位4 存储保护和控制保留保留5 存储保护和控制内存失效状态访问权限控制位6 存储保护和控制内存失效地址保护区域控制7 高速缓存和写缓存高速缓存和写缓存控制8 存储保护和控制TLB控制保留9 高速缓存和写缓存高速缓存锁定10 存储保护和控制TLB锁定保留11 保留12 保留13 进程标识符进程标识符14 保留15 因不同设计而异因不同设计而异因不同设计而异CP15的寄存器C0CP15中寄存器C0对应两个标识符寄存器,都是只读的,表明某些信息。
由访问CP15中的寄存器指令中的指定要访问哪个具体物理寄存器,与两个标识符寄存器的对应关系如下所示:opcode_2编码对应的标识符号寄存器0b000 主标识符寄存器(ID编码)0b001 cache类型标识符寄存器(cache类型)其他保留1)主标识符寄存器 (通俗:标明该处理器的某些型号信息)访问主标识符寄存器的指令格式如下所示:mrc p15, 0, r0, c0, c0, 0 ;将主标识符寄存器C0的值读到r0中,两个c0作用不同的。
1.c0:表示协处理器中的源寄存器;2.c0:表示未使用附加的寄存器,这是要写c0。
ARM不同版本体系处理器中主标识符寄存器的编码格式说明如下。
ARM7之后处理器的主标识符寄存器编码格式如下所示:31 24 23 20 19 16 15 4 3 0由生产商确定产品子编号ARM体系版本号产品主编号处理器版本号位说明位[3: 0] 生产商定义的处理器版本号位[15: 4] 生产商定义的产品主编号,其中最高4位即位[15:12]可能的取值为0~7但不能是0或7位[19: 16] ARM体系的版本号,可能的取值如下:0x1 ARM体系版本40x2 ARM体系版本4T0x3 ARM体系版本50x4 ARM体系版本5T0x5 ARM体系版本5TE其他由ARM公司保留将来使用位[23: 20] 生产商定义的产品子编号,当产品主编号相同时,使用子编号来区分不同的产品子类,如产品中不同的高速缓存的大小等位[31: 24] 生产厂商的编号,现在已经定义的有以下值:0x41 =A ARM公司0x44 =D Digital Equipment公司0x69 =I intel公司ARM7处理器的主标识符寄存器编码格式如下所示:31 24 23 22 16 15 4 3 0由生产商确定 A 产品子编号产品主编号处理器版本号位说明位[3: 0] 生产商定义的处理器版本号位[15: 4] 生产商定义的产品主编号,其中最高4位即位[15:12]的值为0x7位[22: 16] 生产商定义的产品子编号,当产品主编号相同时,使用子编号来区分不同的产品子类,如产品中不同的高速缓存的大小等续表位说明位[23] ARM7支持下面两种ARM体系的版本号:0x0 ARM体系版本30x1 ARM体系版本4T位[31: 24] 生产厂商的编号,现在已经定义的有以下值:0x41 =A ARM公司0x44 =D Digital Equipment公司0x69 =I Intel公司ARM7之前处理器的主标识符寄存器编码格式如下所示:31 24 23 22 16 15 4 3 0由生产商确定 A 产品子编号产品主编号处理器版本号位说明位[3: 0] 生产商定义的处理器版本号位[15: 4] 生产商定义的产品主编号,其中最高4位即为[15:12]的值为0x7位[22: 16] 生产商定义的产品子编号,当产品主编号相同时,使用子编号来区分不同的产品子类,如产品中不同的高速缓存的大小等位[23] ARM7支持下面两种ARM体系的版本号:0x0 ARM体系版本30x1 ARM体系版本4T位[31: 24] 生产厂商的编号,现在已经定义的有以下值:0x41 =A ARM公司0x44 =D Digital Equipment公司0x69 =I intel公司2)cache类型标识符寄存器访问cache类型标识符寄存器的指令格式如下所示:mrc p15, 0, r0, c0, c0, 1 ;将cache类型标识符寄存器C0的值读到r0中,1表示cache标示ARM处理器中cache类型标识符寄存器的编码格式如下所示:31 29 28 25 24 23 12 11 00 0 0 属性字段S 数据cache相关属性指令cache相关属性位说明位[28: 25 ] 指定控制字段位[24: 0]指定的属性之外的cache的其他属性,详见表4-2 位[24] 定义系统中的数据cache和指令cache是分开的还是统一的:0 系统的数据cache和指令cache是统一的;1 系统的数据cache和指令cache是分开的位[23: 12 ] 定义数据cache的相关属性,如果位[24]为0,本字段定义整个cache的属性位[11: 0 ] 定义指令cache的相关属性,如果位[24]为0,本字段定义整个cache的属性其中控制字段位[28:25]的含义说明如下:表4-2 cache类型标识符寄存器的控制字段位[28:25]编码cache类型cache内容清除方法cache内容锁定方法0b0000 写通类型不需要内容清除不支持内容锁定0b0001 写回类型数据块读取不支持内容锁定0b0010 写回类型由寄存器C7定义不支持内容锁定0b0110 写回类型由寄存器C7定义支持格式A0b0111 写回类型由寄存器C7定义支持格式B控制字段位[23:12]和控制字段位[11:0]的编码格式相同,含义如下所示:11 9 8 6 5 3 2 1 00 0 0 cache容量cache相联特性M 块大小cache容量字段bits[8: 6]的含义如下所示:编码M=0时含义(单位KB)M=1时含义(单位KB)0b000 0.5 0.750b001 1 1.50b010 2 30b011 4 60b100 8 120b101 16 240b110 32 480b111 64 96cache相联特性字段bits[5: 3]的含义如下所示:编码M=0时含义M=1时含义0b000 1路相联(直接映射)没有cache0b001 2路相联3路相联0b010 4路相联6路相联0b011 8路相联12路相联0b100 16路相联24路相联0b101 32路相联48路相联0b110 64路相联96路相联0b111 128路相联192路相联cache块大小字段bits[1: 0]的含义如下所示:编码cache块大小0b00 2个字(8字节)0b01 4个字(16字节)0b10 8个字(32字节)0b11 16个字(64字节)◆CP15的寄存器C1访问控制位寄存器C1的指令格式如下:mrc p15, 0, r0, c1, c0{, 0} ;将CP15的寄存器C1的值读到r0中mcr p15, 0, r0, c1, c0{, 0} ;将r0的值写到CP15的寄存器C1中CP15中的寄存器C1的编码格式及含义说明如下:15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 031--16V I Z F R S B L D P W C A M 附加L4 RR位说明M 0:禁止MMU或者PU;1:使能MMU或者PUA 0:禁止地址对齐检查;1:使能地址对齐检查C 0:禁止数据/整个cache;1:使能数据/整个cacheW 0:禁止写缓冲;1:使能写缓冲P 0:异常中断处理程序进入32位地址模式;1:异常中断处理程序进入26位地址模式D 0:禁止26位地址异常检查;1:使能26位地址异常检查L 0:选择早期中止模型;1:选择后期中止模型B 0:little endian;1:big endianS 在基于MMU的存储系统中,本位用作系统保护R 在基于MMU的存储系统中,本位用作ROM保护F 0:由生产商定义Z 0:禁止跳转预测功能;1:使能跳转预测指令I 0:禁止指令cache;1:使能指令cacheV 0:选择低端异常中断向量0x0~0x1c;1:选择高端异常中断向量0xffff0000~ 0xffff001c RR 0:常规的cache淘汰算法,如随机淘汰;1:预测性淘汰算法,如round-robin淘汰算法L4 0:保持ARMv5以上版本的正常功能;1:将ARMv5以上版本与以前版本处理器兼容,不根据跳转地址的bit[0]进行ARM指令和Thumb状态切换:bit[0]等于0表示ARM指令,等于1表示Thumb指令附加:31——16◆ CP15的寄存器C2CP15中的寄存器C2保存的是页表的基地址,即一级映射描述符表的基地址。