- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Arm cache 研究
Cache的工作原理 ? Cache的工作原理是基于程序访问的局部性。 ??? 对大量典型程序运行情况的分析结果表明,在一个较短的时间间隔内,由程序产生的地址往往集中在存储器逻辑地址空间的很小范围内。指令地址的分布本来就是连 续的,再加上循环程序段和子程序段要重复执行多次。因此,对这些地址的访问就自然地具有时间上集中分布的倾向。 ??? 数据分布的这种集中倾向不如指令明显,但对数组的存储和访问以及工作单元的选择都可以使存储器地址相对集中。这种对局部范围的存储器地址频繁访问,而对此范围以外的地址则访问甚少的现象,就称为程序访问的局部性。??? 根据程序的局部性原理,可以在主存和CPU通用寄存器之间设置一个高速的容量相对较小的存储器,把正在执行的指令地址附近的一部分指令或数据从主存调入这 个存储器,供CPU在一段时间内使用。这对提高程序的运行速度有很大的作用。这个介于主存和CPU之间的高速小容量存储器称作高速缓冲存储器 (Cache)。 ??? 系统正是依据此原理,不断地将与当前指令集相关联的一个不太大的后继指令集从内存读到Cache,然后再与CPU高速传送,从而达到速度匹配。CPU对存储器进行数据请求时,通常先访问Cache。由于局部性原理不能保证所请求的数据百分之百地在Cache中,这里便存在一个命中率。即CPU在任一时刻从Cache中可靠获取数据的几率。 ??? 命中率越高,正确获取数据的可靠性就越大。一般来说,Cache的存储容量比主存的容量小得多,但不能太小,太小会使命中率太低;也没有必要过大,过大不仅会增加成本,而且当容量超过一定值后,命中率随容量的增加将不会有明显地增长。??? 只要Cache的空间与主存空间在一定范围内保持适当比例的映射关系,Cache的命中率还是相当高的。 ??? 一般规定Cache与内存的空间比为4:1000,即128kB Cache可映射32MB内存;256kB Cache可映射64MB内存。在这种情况下,命中率都在90%以上。至于没有命中的数据,CPU只好直接从内存获取。获取的同时,也把它拷进 Cache,以备下次访问。Cache的基本结构 ??? Cache通常由相联存储器实现。相联存储器的每一个存储块都具有额外的存储信息,称为标签(Tag)。当访问相联存储器时,将地址和每一个标签同时进行比较,从而对标签相同的存储块进行访问。Cache的3种基本结构如下:
DCACHE
ARM cache架构由cache存储器和写缓冲器(write-buffer)组成,其中写缓冲器是CACHE按照FIFO原则向主存写的缓冲处理器。
一般来说CACHEABILITY和 BUFFERABILITY都是可以配置的,所以,一块存储区域可以配置成下面4种方式:NCNB CNB NCB CB。 在实际应用当中,可以根据需要对主存进行配置。对I/O MAP来说,一般都需要采用NCNB方式,以保证对I/O的正确操作。而其他的存储区域一般都可以配置成CB方式,以获取最好的性能。
引入CACHE和WRITE BUFFER是为了提高存储访问的 速度,提供系统性能。如果CACHE打开的话,CPU读写主存的时候,都是通 过 CACHE进行的。进行读操作的时候,如果在CACHE里面找到了所需的内容 (CACHE HIT),直接从CACHE里读取;如果要读的内容不在CACHE上的时候 (CACHE MISS),先把所需的内容装载到CACHE里,在从CACHE上读取。进行 写操作的时候,数据先写到CACHE上。具体又可以分为WRITE THROUGH和 WRITE BACK两种方式。如果是WRITE THROUGH方式的话,每次写操作都通 过CACHE+WRITE BUFFER把数据直接写到主存当中去;如果是WRITE BACK 方式的话,数据最初只是写到CACHE上,必要的时候(CACHE REPLACEMENT) 在将CACHE上的数据通过WRITE BUFFER实际回写到主存当中去。
DCaches使用的是虚拟地址,它的大 小是16KB,它被分成512行(entry),每行8个字(8 words,32Bits)。每行有两个修改标志位(dirty bits),第一个标志位标识前4个字,第二个标志位标识后4个字,同时每行中还有一个TAG 地址(标签地址)和一个valid bit。 ??? 与ICaches一样,系统上电或重起(Reset)的时候,DCaches功能是被关闭的,我们必须往Ccr bit置1去开启它,Ccr bit在CP15协处理器中控制寄存器1的第2位(关闭DCaches功能则是往该位置0)。与ICaches不同,DCaches功能是必须在MMU开启之后才能被
文档评论(0)