第四章-CP15协处理器

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

CP15协处理器第四章预习检查什么是cache?Cache有哪两种写方式?MMU的功能是什么?2本章目标了解ARM存储器组织结构了解S3C2440A的cache基本工作原理了解MMU基本工作原理,与地址映射本章结构CP15协处理器协处理器CP15结构和功能高速Cache内存管理单元MMU快速上下文切换ARM存储器6-1ARM存储器ARM存储系统有非常灵活的体系结构,可以适应不同的嵌入式应用系统的需要。ARM存储器系统可以使用简单的平板式地址映射机制,也可以使用其他技术提供功能更为强大的存储系统。提供多种类型的存储器件,如FLASH、ROM、SRAM等;Caches技术;写缓存技术(writebuffers);虚拟内存和I/O地址映射技术。6-1ARM存储器大多数的系统通过下面的方法之一实现对复杂存储系统的管理。使能Cache,缩小处理器和存储系统速度差别,从而提高系统的整体性能。引入存储保护机制,增强系统的安全性。引入一些机制保证将I/O操作映射成内存操作后,各种I/O操作能够得到正确的结果。6-1ARM存储器8051的结构6-1ARM存储器s32440的结构6-1ARM存储器存储器的层次结构6-2协处理器CP15CPl5,即通常所说的系统控制协处理器(SystemControlCoprocesssor)。它负责完成大部分的存储系统管理。CacheARM内核地址地址写缓冲MMU或MPU数据读数据写数据控制逻辑CP15AMBA总线接口JTAG及非AMBA信号AMBA接口6-2协处理器CP15CPl5包含l6个32位寄存器,其编号为0~15。CPl5中的寄存器可能是只读的,也可能是只写的,还有一些是可读可写的。在对协处理器寄存器进行操作时,需要注意以下几个问题。寄存器的访问类型(只读/只写/可读可写)。不同的访问引发的不同功能。相同编号的寄存器是否对应不同的物理寄存器。寄存器的具体作用。6-2-1CP15寄存器访问指令通常对协处理器CPl5的访问使用以下两种指令MCR:将ARM寄存器的值写入CPl5寄存器中;MRC:将CPl5寄存器的值写入ARM寄存器中。指令MCR和MRC指令访问CPl5寄存器使用通用语法MCR{cond}p15,opcode1=0,Rd,CRm,CRm{,opcode2}MRC{cond}p15,opcode1=0,Rd,CRm,CRm{,opcode2}6-2-2CP15中的寄存器寄存器编号基本作用特殊用途0ID编号(只读)ID和Cache类型1控制位各种控制位2存储器保护和控制MMU:地址转换表基地址MPU:Cache属性设置3内存保护和控制MMU:域访问控制MPU:写缓存控制4内存保护和控制保留5内存保护和控制MMU:错误状态MPU:访问权限控制6内存保护和控制MMU:错误状态MPU:保护区域控制7Cache和写缓存Cache和写缓存控制8内存保护和控制MMU:TLB控制MPU:保留9Cache和写缓存Cache锁定10内存保护和控制MMU:TLB锁定MPU:保留11保留保留12保留保留13进程ID进程ID14保留保留15芯片生产厂商定义芯片生产厂商定义6-2-3寄存器C0操作码opcode2对应的标识符寄存器0b000主标识符寄存器Ob001Cache类型寄存器其他保留寄存器c0包含的是ARM本身或芯片生产厂商的一些标识信息。当使用MRC指令读c0寄存器时,根据第二个操作码opcode2的不同,读出的标识符也是不同的。6-2-3寄存器C0由生产商决定(Implementor)产品子编号(Varimant)Arm系统版本号(Architecture)产品主编号(PrimaryPartNumber)处理器版本型号(Revision)主标识符寄存器当协处理器指令对CPl5进行操作,并且操作码0pcode2时,处理器的主标识符将被读出。从主标识符中,可以确定ARM体系结构的版本型号。•如果bit[15:12]为0x0,说明处理器是ARM7之前的处理器;•如果bit[15:12]为0x7,说明处理器为ARM7处理器;•如果bit[15:12]为其他值,说明处理器为ARM7之后的处理器。•bit[31:24]:生产厂商的编号302423201916154306-2-3寄存器C0Cache类型标识符寄存器对于指令MRC来说,当协处理器寄存器为r0,而第二操作数opcode2为0b001时,指令读取值为Cache类型,即可以将处理器的Cache类型标识符寄存器的内容读取到寄存器r0中。MCRP15,0,r0,c0,c0,16-2-3寄存器C0Cache类型标识符寄存器Cache类型标识符定义了关于Cache的信息•系统中的数据Cache和指令Cache是分开的还是统一的。•Cache的容量、块大小以及相联特性。•Cache类型是直(write.through)写还是回写(write.back)。•对于回写(write.back)类型的Cache如何有效清除Cache内容。•Cache是否支持内容锁定。6-2-3寄存器C0000属性字段S数据Cache相关属性数据Cache相关属性Cache类型标识符寄存器编码格式Cache类型标识符定义了关于Cache的信息:312928252423121106-2-4寄存器C1SBZP/UNPL4RRVIZFRSBLDPWCAMCPl5中的寄存器C1包括以下控制功能:禁止/使能MMU以及其他与存储系统有关的功能;配置存储系统以及删处理器中相关的工作。311615141312111098765432106-3高速缓冲存储器CacheCache存储器是一个容量小但存取速度非常快的存储器它保存最近用到的存储器数据拷贝。对于程序员来说,Cache是透明的。它自动决定保存哪些数据、覆盖哪些数据。现在Cache通常与处理器在同一芯片上实现。Cache能够发挥作用是因为程序具有局部性特性。6-3高速缓冲存储器Cache谓局部性就是指,在任何特定的时间,微处理器趋于对相同区域的数据(如堆栈)多次执相同的指令(如循环)。Cache经常与写缓存器(writebuffer)一起使用。通过引入Cache和写缓存区,存储系统的性能得到了很大的提高,但同时也带来了一些问题。6-3高速缓冲存储器Cache位于处理器中的少量高速缓冲存储器,保存最近被访问的存储空间内容的备份哪些存储空间需要读入到cache中,要通过MMU或MPU来控制依赖于内存的重使用仅用来改善速度较慢的存储器或总线宽度较窄的存储器的性能降低对总线宽度的要求减少功耗外部存储器CPUCache地址数据总线接口6-3-1Cache的分类统一Cache。指令和数据用同一个Cache6-3-1Cache的分类指令和数据分开的Cache。有时这种组织方式也被称为改进的哈佛结构。6-3-2Cache的性能衡量只有当所需要的Cache存储器内容已经在Cache时,微处理器才能以高时钟速率工作,因此,系统的总体性能就可以用存储器访问中命中Cache的比例来衡量。当要访问的内容在Cache时称为命中(hit),而要访问的内容不在Cache时称为未命中(miss)。在给定时间间隔内,Cache命中的次数与总的存储器请求次数的比值被称为命中率。命中率用下面的公式进行计算:命中率=(Cache命中次数/存储器请求次数)*100%6-3-3Cache的工作原理Cache的基本存储单元为Cache行(Cacheline)。存储系统把Cache和主存储器都划分为相同大小的行。Cache与主存储器交换数据是以行为基本单位进行的。每一个Cache行都对应于主存中的一个存储块(memoryblock)Cache行的大小通常是2L字节。通常情况下是16字节(4个字)和32字节(8个字)。如果Cache行的大小为2L字节,那么对主存的访问通常是2L字节对齐的。对于一个虚拟地址来说,它的bit[31:L],是Cache行的一个标识。当CPU发出的虚拟地址的bit[31:L]和Cache中的某行bit[31:L]相同,那么Cache中包含CPU要访问的数据,即成为一次Cache命中。6-3-3Cache的工作原理6-3-3Cache的工作原理数据以每次传送一行的方式复制到cache中每个cache行包含连续的数据Cache行按其自然的行边界尺寸分配Cache中的数据一旦被获取后,立即对内核有效在一个cache读操作不命中后,将激发cache行内容的填充但新数据应放在cache的什么位置?ARM处理器支持以下置换策略中的一个或多个:•随机,•循环轮换–轮换指针指向下一个要填充的cache行已经使用过的行将被收回和替换对回写数据cache而言,任何改过的数据都要写到存储器中6-3-4Cache与主存的关系在Cache中采用地址映射将主存中的内容映射到Cache地址空间。具体的说,就是把存放在主存中的程序按照某种规则装入到Cache中,并建立主存地址到Cache地址之间的对应关系。而地址变换是指当程序已经装入到Cache后,在实际运行过程中,把主存地址变换成Cache地址。地址的映射和变换是密切相关的。采用什么样的地址映射方法,就必然有与之对应的地址变换。直接映射和变换方式组相联映射和变换方式以及全相联和变换方式。6-3-4Cache与主存的关系直接映射(direct-mapped)方式。直接映射是一种最简单,也是最直接的映射方式。主存中的每个地址都对应Cache存储器中惟一的一行。由于主存的容量远远大于Cache存储器,所以在主存中很多地址被映射到同一个Cache行。如果程序同时用到对应于Cache同一主存行的两个主存块,那么就会发生冲突,冲突的结果是导致Cache行的频繁变换。这种由直接映射导致的Cache存储器中的软件冲突称为颠簸(thrashing)问题。6-3-4Cache与主存的关系主存储器0x00000x00100x00200x00300x00400x00500x00600x00700x00800x0090Cache00..................................0110010x006400tagindexword地址tagram数据=6-3-4Cache与主存的关系为了减少颠簸问题,有些Cache使用了组相联的映射策略。在组相联的地址映射和变换中,把主存和Cache按同样大小划分成组(set),每个组都由相同的行数组成。从主存的组到Cache的组之间采用直接映射方式。主存中的一组与Cache中的一组之间建立了之间映射方式后,在两个对应的组内部采用全相联映射方式。在ARM中采用的是组相联的地址映射和变换方式。如果Cache的行大小为2L,则同一行中各地址的bit[31:L]是相同的。如果Cache中组的大小(每组中包含的行数)为2S,则虚地址位bit[L+S:L]用于选择Cache中的某个组。6-3-4Cache与主存的关系2路组相联的Cache主存储器0x00000x00100x00200x00300x00400x00500x00600x00700x00800x0090Way0Way1Set02-Way,4Sets?数据=tagindex=tagindexWay0Way1目标计数器替换策略:随机循环6-3-4Cache与主存的关系4路组相联的CacheDecoderDecoderDecoder3110954210Cache行53注:每一个地址索引映射到一个cache行,该行可存于4组的任意一组中(4组相联)存于TAG中的地址(22位)IndexWordUnusedDataway0TAGLine0Line1Line30Line31这里是一个4kcache的例子:4组x32linesx8words=4kbcacheDecodervd0d1v-有效位d0,d1–脏位01234567d0d16-3-4Cache与主存的关系随着Cache控制器的相联度的提高,冲突的可能性减少了。提高组相联程度

1 / 81
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功