版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ARM920T的CP15协处理器ARM920T的MMU和Cache都集成在 CP15协处理器中,MMU和Cache的联系非常密 切,本节首先从总体上介绍MMU、Cache和CPU核是如何协同工作的,后面两节分别讲解MMU和Cache的细节。三星公司的 S3C2410是一种很常见的采用 ARM920T的芯片,涉及 到具体的芯片时我们以S3C2410为例。以下是CP15协处理器的寄存器列表(摘自 S3C2410用户手册),和CPU核的r0到r15 寄存器一样,协处理器寄存器也是用0到15来编号,在指令中用 4个bit来表示寄存器编号,有些协处理器寄存器有影子寄存器,这种情况下对同一个编号的寄存器使
2、用不同的选项读或者写实际上访问的是不同的寄存器,后文用到某个寄存器时会详细说明它的功能。表1. CP15协处理器的寄存器列表寄存器编号功能0ID CODE. Cache Tpe (RQ)1Control Egistwr2TransIsticri table baste (TTECi register3CoiHincontrol register4一Reserved-5Faunt status registerBFaull t address reg i ster7Cache operat i onaTLB operationgCache lock down refi&ter10TLB
3、lock down rste11-12 & Userved13Proc ID15Reserved for test purpose对CP15协处理器的操作使用 mcr和mrc两条协处理器指令,这两条指令的记法是从后往前看:mcr是把r (CPU核寄存器)中的数据传送到c (协处理器寄存器)中, mrc则是把c (协处理器寄存器)中的数据传送到r (CPU核寄存器)中。对 CP15协处理器的所有操作都是通过CPU核寄存器和CP15寄存器之间交换数据来完成的。下图是协处理器的指令格式(摘自S3C2410用户手册)。MCRMRCfDarid P15jCRm opeode_2找 37 N W5
4、 ¥鼻IE IS 1211 8 7 S 浦 3i U图8.协处理器指令格式和其它ARM指令一样,Cond是条件码,bit 20是L位,表示该指令是读还是写,如果L=1就表示Load,从外面读到 CPU核中,也就是 mrc指令,如果L=0就表示Store,也就是 mcr指令。11:8这四个位是协处理器编号,CP15的编号是15,因此是4个1。CRn是CP15寄存器编号,Rd是CPU核寄存器编号,各占 4个位。对于 CP15协处理器,规定 opcode1 应该为0, opcode2和CRm是指令的选项,具体含义取决于不同的寄存器。虽然这里介绍了协处理器的寄存器编号和相关指令,但读者只需了
5、解对协处理器是这样进行操作的就可以了,我们的重点是讲解 MMU和Cache的基本概念,具体各种操作的指令该怎么写可以参考S3C2410用户手册。“进程地址空间是独立的”来看,好像是PA实际上并不是这么简单,通常要有MMU是如何把 VA映射成 PA的呢?从图 4 有一张VA转PA的表,给一个VA查表就可以查到个多级的查表过程,对于ARM体系结构是两级查表,对于一些64位体系结构则需要更多级。看下面的图示。图 9. Translation Table Walk首先将32位的VA3分成三段,前两段31:20和19:12作为两次查表的索引,第三段11:0 作为页内的偏移。查表的步骤如下:1 CP15协
6、处理器的TTB寄存器(看看表1 “CP15协处理器的寄存器列表” 中这是第几 个寄存器?)中保存着第一级页表( Translation Table)的基地址,这个基地址指的是 PA, 也就是说页表是直接按这个地址存在物理内存中的。2以TTB中的内容为基地址,以VA31:20为索引在表中查出一项(想一下这个表中一共有多少项?),这个表项中保存着第二级页表( Coarse Page Table的基地址,同样是物理 地址,也就是说第二级页表也是直接按这个地址存在物理内存中的。3以VA19:12为索引在第二级页表中查出一项(想一下这个表中一共有多少项?),这个表项中就保存着物理页面的基地址,先前我们说
7、虚拟内存管理是以页为单位的,一个虚拟内存的页映射到一个物理内存的页框,从这里就可以得到印证,因为查表是以页为单位来查的。4有了物理页面的基地址之后,加上VA11:0这个偏移量就可以取出相应地址上的数据(想一下一个页是多少字节?)。这个过程称为 Translation Table Walk, Walk这个词用得非常形象。 从TTB走到一级页表, 又走到二级页表,又走到物理页面,一次寻址其实是三次访问物理内存。注意这个“走”的过程完全是硬件做的,每次CPU寻址时MMU就自动完成以上四步,不需要编写指令指示MMU去做,前提是操作系统要维护页表项的正确性,每次分配内存时填写相应的页表项, 每次释放内存
8、时清除相应的页表项,在必要的时候分配或释放整个页表。有了以上基本概念,我们来看CPU访问内存时的硬件操作顺序(摘自ARM参考手册)。Acc«5 conkroi24IIP2ARM12C.Bbi4Virkdl addixru <VAjnd wtile bufferPliysicai adidirwi(Wmemory图10. CPU访问内存时的硬件操作顺序我们以CPU读内存为例解释一下图中的步骤,各步骤在图中有对应的标号。1 CPU核(图中的 “ ARM” 框)发出 VA请求读数据,TLB (Translation Lookaside Buffer) 接收到该地址。TLB是MMU中的
9、一块高速缓存 (也是一种Cache),它缓存最近查找过的 VA 对应的页表项,如果 TLB里缓存了当前 VA的页表项就不必做 Translation Table Walk 了,否 则去物理内存中读出页表项保存在TLB中,TLB缓存可以减少访问物理内存的次数。2页表项中不仅保存着物理页面的基地址,还保存着权限位和是否允许Cache的标志。MMU首先检查权限位,如果没有访问权限,就引发一个异常给 CPU核。然后检查是否允许 Cache,如果允许 Cache就启用Cache和CPU核互操作,图中的"C, B bits”可以理解为选通 线,后面再详细解释这两个位的作用。3如果不允许Cache
10、,则直接发出PA从物理内存中读取数据到CPU核。4如果允许Cache,则以VA为索引到Cache中查找是否缓存了要读取的数据,如果Cache中已经缓存了该数据(称为Cache Hit)则直接返回给 CPU核,如果Cache中没有缓存该数据(称为Cache Miss),则发出PA从物理内存中读取数据并缓存到Cache中,同时返回给CPU核。然而Cache并不是只取CPU核所要的数据,而是把相邻的数据都取上来缓存,这 称为一个 Cache Line。ARM920T的Cache Line是32字节,例如CPU核要读取地址 0x134-0x137 的4字节数据,Cache会把地址0x120-0x13f
11、 (对齐到32字节地址边界) 的32字节都取上来 缓存。ARM926EJ-S/ARM920TU 处理器 CP14, CP15羊解ARM微处理器可支持多达 16个协处理器,用于各种协处理操作,在程序执行的过程中, 每个协处理器只执行针对自身的协处理指令,忽略ARM处理器和其他协处理器的指令。ARM的协处理器指令主要用于ARM处理器初始化 ARM协处理器的数据处理操作,以及在ARM处理器的寄存器和协处理器的寄存器之间传送数据,和在ARM协处理器的寄存器和存储器之间传送数据。ARM协处理器指令包括以下 5条:CDP协处理器数操作指令LDC协处理器数据加载指令STC协处理器数据存储指令MCR ARM处
12、理器寄存器到协处理器寄存器的数据传送指令MRC协处理器寄存器到 ARM处理器寄存器的数据传送指令 1、CDP指令CDP指令的格式为:CDP徐件协处理器编码,协处理器操作码1,目的寄存器,源寄存器 1,源寄存器2,协处理器操作码 2。 CDP指令用于ARM处理器通知 ARM协处理器执行特定的操作,若协处 理器不能成功完成特定的操作,则产生未定义指令异常。其中协处理器操作码1和协处理器操作码2为协处理器将要执行的操作,目的寄存器和源寄存器均为协处理器的寄存器, 指令不涉及ARM处理器的寄存器和存储器。指令示例:CDP P3 , 2 , C12 , C10 , C3 , 4 ;该指令完成协处理器P3
13、的初始化 2、LDC指令LDC指令的格式为:LDC采件L协处理器编码,目的寄存器,源寄存器LDC指令用于将源寄存器所指向的存储器中的字数据传送到目的寄存器中,若协处理器不能成功完成传送操作,则产生未定义指令异常。 其中,L选项表示指令为长读取操作,如用于双精度数据的传输。指令示例:LDC P3 , C4 , R0;将ARM处理器的寄存器 R0所指向的存储器中的字数据传送到协 处理器P3的寄存器 C4中。3、STC指令STC指令的格式为:STC条件L协处理器编码,源寄存器,目的寄存器STC指令用于将源寄存器中的字数据传送到目的寄存器所指向的存储器中,若协处理器不能成功完成传送操作,则产生未定义指
14、令异常。其中,L选项表示指令为长读取操作,如用于 双精度数据的传输。指令示例:STC P3 , C4 , R0;将协处理器 P3的寄存器 C4中的字数据传送到 ARM处理器的寄 存器R0所指向的存储器中。4、MCR指令MCR指令的格式为:MCR条件协处理器编码,协处理器操作码1,源寄存器,目的寄存器 1,目的寄存器2,协处理器操作码2。MCR指令用于将ARM处理器寄存器中的数据传送到协处理器寄存器中,若协处理器不能成功完成操作,则产生未定义指令异常。其中协处理器操作码1和协处理器操作码 2为协处理器将要执行的操作,源寄存器为ARM处理器的寄存器,目的寄存器1和目的寄存器2均 为协处理器的寄存器
15、。指令示例:MCR P3, 3, R0, 04, C5, 6;该指令将 ARM处理器寄存器 R0中的数据传送到协处理器P3的寄存器04和C5中。5、MRC指令MRC指令的格式为:MRC条件协处理器编码,协处理器操作码1,目的寄存器,源寄存器 1,源寄存器2,协处理器操作码2。MRC指令用于将协处理器寄存器中的数据传送到ARM处理器寄存器中,若协处理器不能成功完成操作,则产生未定义指令异常。其中协处理器操作码1和协处理器操作码 2为协处理器将要执行的操作,目的寄存器为ARM处理器的寄存器,源寄存器1和源寄存器2均为协处理器的寄存器。指令示例:MRC P3, 3, R0, C4, C5, 6;该指
16、令将协处理器 P3的寄存器中的数据传送到ARM处理器寄存器中.The ARM920T有两个具体协处理器CP14调试通信通道协处理器 调试通信通道协处理器 DCC(the Debug Communications Channel)提供了两个32bits寄存器用于传送数据,还提供了6bits通信数据控制寄存器控制寄存器中的两个位提供目标和主机调试器之间的同步握手。通信数据控制寄存器以下指令在Rd中返回控制寄存器的值:31 30 29 28 272 1 00010,;VRMRC p14, 0, Rd, c0, c0此控制寄存器中的两个位提供目标和主机调试器之间的同步握手:位1 (W位) 从目标的角度
17、表示通信数据写入寄存器是否空闲:W = 0目标应用程序可以写入新数据。W =1主机调试器可以从写入寄存器中扫描出新数据。位0 (R位) 从目标的角度表示通信数据读取寄存器中是否有新数据:R = 1有新数据,目标应用程序可以读取。R = 0主机调试器可以将新数据扫描到读取寄存器中。注启、调试器不能利用协处理器14直接访问调试通信通道,因为这对调试器无意义。但调试器可使用扫描链读写 DCC寄存器。DCC数据和控制寄存器可映射到EmbeddedICE逻辑单元中的地址。若要查看 EmbeddedICE逻辑寄存器,请参阅您的调试器和调试目标的相关文档。通信数据读取寄存器用于接收来自调试器的数据的32位宽
18、寄存器。以下指令在 Rd中返回读取寄存器的值:MRC p14, 0, Rd, c1, c0通信数据写入寄存器用于向调试器发送数据的32位宽寄存器。以下指令将 Rn中的值写到写入寄存器中:MCR p14, 0, Rn, c1, c0注启、有关访问 ARM10和ARM11内核DCC寄存器的信息,请参阅相应的技术参考手册。ARM9之后的各处理器中,所用指令、状态位位置以及对状态位的解释都有所不同。目标到调试器的通信这是运行于 ARM内核上的应用程序与运行于主机上的调试器之间的通信事件顺序:1. 目标应用程序检查 DCC写入寄存器是否空闲可用。为此,目标应用程序使用MRC指令读取调试通信通道控制寄存器
19、,以检查W位是否已清除。2. 如果 W位已清除,则通信数据写入寄存器已清空,应用程序对协处理器14使用MCR指令将字写入通信数据写入寄存器。写入寄存器操作会自动设置W位。如果 W位已设置,则表明调试器尚未清空通信数据写入寄存器。此时,如果应用程序需要发送另一个字,它必须轮询W位,直到它已清除。3. 调试器通过扫描链 2轮询通信数据控制寄存器。如果调试器发现 W位已设置,则它可以读 DCC数据寄存器,以读取应用程序发送的信息。读取数据的进程会自动清除通信数据控制寄存器中的W位。以下代码显示了这一过程AREA OutChannel, CODE, READONLYENTRYMOVr1,#3;Numb
20、er of words to sendADRr2, outdata; Address of data to sendpolloutMRCp14,0,r0,c0,c0 :Read control registerTSTr0, #2BNEpollout;if W set, register still fullwriteLDRr3,r2,#4; Read word from outdata; into r3 and update the pointerMCRp14,0,r3,c1,c0 :Write word from r3SUBSr1,r1,#1; Update counterBNEpollou
21、t; Loop if more words to be writtenMOVr0, #0x18;Angel_SWIreason_ReportExceptionLDRr1, =0x20026;ADP_Stopped_ApplicationExitSVC0x123456;ARM semihosting (formerly SWI)outdataDCB "Hello there!"END调试器到目标的通信这是运行于主机上的调试器向运行于内核上的应用程序传输消息的事件顺序:1. 调试器轮询通信数据控制寄存器的R位。如果R位已清除,则通信数据读取寄存器已清空,可将数据写入此寄存器,以
22、供目标应用程序读取。2. 调试器通过扫描链2将数据扫描到通信数据读取寄存器中。此操作会自动设置通信数据控制寄存器中的R位。3. 目标应用程序轮询通信数据控制寄存器中的R位。如果该位已经设置,则通信数据读取寄存器中已经有数据,应用程序可使用MRC指令从协处理器14读取该数据。同时,读取指令还会清除R位。以下显示的目标应用程序代码演示了这一过程AREA InChannel, CODE, READONLYENTRYMOV r1,#3; Number of words to readLDR r2, =indata ; Address to store data readpollinMRC p14,0,
23、r0,c0,c0 ; Read control registerTST r0, #1BEQ pollin; If R bit clear then loopreadMRC p14,0,r3,c1,c0 ; read word into r3STRr3,r2,#4; Store to memory and; update pointerSUBSr1,r1,#1; Update counterBNEpollin;Loop if more words to readMOVr0, #0x18;Angel_SWIreason_ReportExceptionLDR r1, =0x20026; ADP_St
24、opped_ApplicationExitSVC 0x123456;ARM semihosting (formerly SWI)AREA Storage, DATA, READWRITEindataDCB "Duffmessage#"ENDCP15系统控制协处理器CP15 系统控制协处理器(the system control coprocessor)他通过协处理器指令MCR和MRC提供具体的寄存器来配置和控制caches、MMU、保护系统、配置时钟模式(在bootloader时钟初始化用到)CP15的寄存器只能被 MRC和 MCR (Move to Coprocessor
25、 from ARM Register )指令访问28 57 26 25 24 2321 20 1&16 151211 10 & & 75 4 30Cond1110Opcode1LCRrtRd1111Opcode_21CRmMCRcond p15,<Opcode_1>,<Rd>,<CRn>,<CRm>,<Opcode_2>MRCcond p15,<Opcode_1>,<Rd>,<CRn>,<CRm>,<Opcode_2>其中L位用来区分 MCR(L=1加
26、MRC(L=0操作.CP15包括15个具体的寄存器如下RegisterReadWrite0ID codeJL npredicuble0Cache type 2Unpredictable1ControlCon Lrol2Translation table baseTranslation table base3Domain access contrnlDomain access control4U n pre die i ableUnpre 也 CLihkFault statushfault status b6Fault addressHuh address7U n predictableCach
27、e operations8UnpredictaNeTLB operations9Cache lockdown bCache Jockdown h10TLB lockdown 卜TLB lockdown b11UnpredictableLnpredictahk2UnpredicLihleUnpredictabk)3FCSEP1DFCSE P1D14Un pre die I a hieUnpredictable15Teal conncurationJTest conilgurationll Revisit er location U pro'i'idcsi access tn mo
28、re than de2 regi ster. The regiskr uccesd depends i>n the of the Gfcode.Z ticl(J. Sn tkz l'ceistjr djscripiion r'ordjtil.h Separate regixten for instruction and data. See (he register-R0: ID号寄存器-R0:缓存类型寄存器-R1:控制寄存器-R2:转换表基址寄存器(Translation Table Base -TTB -R3:域访问控制寄存器( Domain access contro
29、l )-R4:保留 -R5:异常状态寄存器(fault status -FSR)-R6:异常地址寄存器(fault address -FAR)-R7:缓存操作寄存器-R8: TLB操作寄存器-R9:缓存锁定寄存器-R10: TLB锁定寄存器-R11-12&14:保留-R13:处理器ID-R15:测试配置寄存器2-24要注意有2个R0,根据MCR操作数的不同传送不同的值,这也一个只读寄存器-R0: ID号寄存器 这是一个只读寄存器,返回一个32位的设备ID号,具体功能参考 ARM各个系列型号的的 CP15 Register 0说明.MRC p15, 0, <Rd>, c0,
30、c0, 0, 3-7 ;returns ID以下为 ID Code详细描叙(ARM926EJ-S); ARM920T Part Number为 0x920,Architecture (ARMv4T) 为0x2具体可参照 ARM各型号.Register bits FunctionValue|3 :24ASCH code of impleinenier irademark0x4123:20Variant0X019; 16Architecture (ARMv5TEJl0x615:4Parc number0x9263:0Revision0x05aa* The revision value can be
31、 in the range 0x0 to 0x5, depending on the layout revision you are using,.-R0:缓存类型寄存器(CACHE TYPE REGISTER 包含了 caches的信息。读这个寄存器的方 式是通过设置协处理操作码为 1.MRC p15, 0, <Rd>, c0, c0, 1; returns cache details以下为CP15的一些应用示例U32 ARM_CP15_DeviceIDRead(void)U32 id;_asm MRC P15, 0, id, c0, c0; return id;void ARM_CP15_SetPageTableBase(P_U32 TableAddress)_asm MCR P15, 0, TableAddress, c2, c0, 0; void ARM_CP15_SetDomainAccessControl(U32 flags)_asm MCRP15, 0, flags, c3, c0, 0; void ARM_CP15_ICacheF
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《电信校园营销》课件
- 《知晓国情报效祖国》课件
- 《皮肤护理BH培训部》课件
- 《牢记常识防溺水》课件
- 《开业推广培训课件》课件
- 《临床检验分析仪器》课件
- 原发性高血压的护理常规
- 电子设计CAD实验的课程设计
- 电子统计台账研究报告
- 电子相册管理课程设计
- 小学校本课程实施方案-校本课程实施方案8篇
- 2024版肺结核治疗指南
- 江苏省无锡市经开区2024-2025学年上学期九年级期中考试数学试题
- 2024年智能化工程专业分包合同
- 六年级道德与法治上册 第三单元 我们的国家机构 5《国家机构有哪些》教案2 新人教版
- 体育场馆安全管理与风险排查治理制度
- 2024年消防安全知识培训
- 2024年商标使用许可协议:国际知名品牌在中国市场授权
- 2024年北京第二次高中学业水平合格信息技术试卷试(含答案详解)
- 2024年交管12123学法减分考试题库和答案
- web前端开发工程师职业生涯规划
评论
0/150
提交评论