- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统存储结构研究
嵌入式系统的存储层次研究
摘要:存储器是嵌入式系统的核心部件之一,其性能直接关系到整个嵌入式系统的性能的高低。“Cache-主存”和“主存-辅存”层次是常见的两种存储层次结构,几乎所有的现代计算机都同时具有这两种层次。文本从Cache和虚拟存储器基本原理出发,阐述了这嵌入式系统的两个存储层次。
关键字:存储器,Cache,虚拟存储,主存,辅存,存储层次
Cache-主存层次
Cache-高速缓冲存储器一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问。存储器的高速缓冲存储器存储了频繁访问的 RAM 位置的内容及这些数据项的存储地址。当处理器引用存储器中的某地址时,高速缓冲存储器便检查是否存有该地址。如果存有该地址,则将数据返回处理器;如果没有保存该地址,则进行常规的存储器访问。因为高速缓冲存储器总是比主RAM 存储器速度快,所以当 RAM 的访问速度低于微处理器的速度时,常使用高速缓冲存储器。
1.1主存与Cache的地址映射
由于主存容量远大于高速缓存的容量,因此两者之间就必须按一定的规则对应起来。高速缓存的地址镜像就是指按什么规则把主存块装入高速缓存中。地址变换是指当按某种镜像方式把主存块装入高速缓存后,每次访问高速缓存时,如何把主存的物理地址或虚拟地址变换成高速缓存的地址,从而访问高速缓存中的数据镜像和变换的方式有四种:直接镜像、全相连镜像、组相连镜像、区段相连镜像。
(1)全相联映射方式
主存中一个块的地址与块的内容一起存于cache的行中,其中块地址存于cache行的标记部分中。这种方法可使主存的一个块直接拷贝到cache中的任意一行上,非常灵活。 它的主要缺点是比较器电路难于设计和实现,因此只适合于小容量cache采用。
(2)直接映射方式
这也是一种多对一的映射关系,但一个主存块只能拷贝到cache的一个特定行位置上去。 cache的行号i和主存的块号j有如下函数关系:i=j mod m (m为cache中的总行数直接映射方式的优点是硬件简单,成本低缺点是每个主存块只有一个固定的行位置可存放,容易产生冲突。因此适合大容量cache采用。
(3)组相联映射方式
这种方式是前两种方式的折衷方案。它将cache分成u组,每组v行,主存块存放到哪个组是固定的,至于存到该组哪 一行是灵活的,即有如下函数关系:m=u×v 组号 q=j mod u 组相联映射方式中的每组行数v一般取值较小,这种规模的v路比较器容易设计和实现。而块在组中的排放又有一定的灵活性,冲突减少。
1.2 Cache中数据查找方法
当CPU访问Cache时,如何确定Cache中是否有要访问的块?若有,如何确定其位置,这是通过查找目录来实现的。Cache中设置有一个目录表,该表有M项,每一项对应于Cache中的一个快,用于指出当前该块中存放的信息是哪个主存块的(有多少个主存块映像到该Cache块)。它实际上是记录了该主存块的块地址的高位部分,称为标识(Tag)。每个主存块能唯一的由标识来确定。标识在主存块中的位置如图所示:
为了指出Cache中的快是否含有有效地信息,一般是在目录表中给出每一项设置一个有效位。例如,当该位为“1”时标示:该目录项有效,Cache中相应块所包含的信息有效。当一个主存块被调入Cache中某个位置时,它的标示就被填入目录表中与该Cache块相对应的项中,并且该项的有效位别置为“1”。
根据映像规则不同,在一个主存块可能映像到Cache中的一个或则多个Cache块位置。为便于讨论,我们把它们称为选侯位置,当CPU访问该主存块的时候,必须且只需查找它的候选位置所对应的目录表项。如果有与所访问的主存块相同的标示,且其有效位为“1”,则它所对应的Cache块即是所要找的块。为了保证速度,对各候选位置的标识的检查比较应该并行的进行。
直接映像Cache的候选位置最少,只有一个;全相联映像Cache的候选位置最多,为M个;而n路组相联映像则介于两者之间,为n个。并行查找的实现方法有两种:(1)用相联存储器实现;(2)用单体多字存储器和比较器来实现。如下图画出了第二种方法来实现4路组相联映像的情况。这时需要4个比较器。CPU访问时,用本次访问地址中的索引作为地址从标识存储器中选取一行,并从该行读出4个标识,然后将他们与本次访问的地址中的标示进行比较。根据比较结果确定是否命中以及该组中哪个块是要访问的块。
由上图可以看出,n越大,实现查找的的机制就越复杂,代价就越高。直接映像Cache的查找最简单:只需要一个位置。所访问的块要么就在这个位置上,要么不在Cache中。
无论是直接映像还是组相联映像,查找时只需比较标识,索引无需参加比较。这时因为索引已被用来选择要查找的组,而所有索引相同的块被映像到该组中,
文档评论(0)