- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.7 高速缓冲存储器
高速缓冲存储器的功能是提高CPU数据输入/输出的速率,突破所谓的存储器瓶颈问题,即CPU与存储系统间数据传送带宽限制。高速缓冲存储器能以极高的速率进行数据的访问,但因其价格高昂,所以只在CPU和主存之间添加少量的Cache,利用程序的局部性原理来进行工作。
3.7.1 程序访问的局部性原理
程序访问的局部性有两个方面的含义:时间局部性和空间局部性。时间局部性是指最近的访问项(指令/数据)很可能在不久的将来再次被访问(往往会引起对最近使用区域的集中访问),而空间局部性是指一个进程访问的各项地址彼此很近。 换句话说,就是最近的、未来要用的指令和数据大多局限于正在用的指令和数据,或是存放在与这些指令和数据位置上邻近的单元中。这样,就可以把目前常用或将要用到的信息预先放在存取速度最快的存储器中,从而使CPU的访问速度大大提高。 依据局部性原理,把主存储器中访问概率高的内容存放在Cache中,当CPU需要读取数据时,首先在Cache中查找是否有所需内容,如果有则直接从Cache中读取;若没有再从主存中读取该数据,然后同时送往Cache和CPU。如果CPU需要访问的内容大多都能在Cache中找到(称为命中),则可以大大提高系统性能。
3.7.2 Cache的基本工作原理
如图3-13所示给出了Cache的基本结构。Cache和主存都被分成若干个大小相等的块,每块由若干字节组成。由于Cache的容量远小于主存的容量,所以Cache的块数要远少于主存的块数,它保存的信息只是主存中最活跃的若干块的副本。用主存地址的块号字段访问Cache标记,并将取出的标记和主存地址的标记字段相比较,若相等,说明访问Cache有效,称Cache命中,若不相等,说明访问Cache无效,称Cache不命中或失效,而此时需要从主存中将该块取出至Cache中。
当CPU发出读请求时,如果Cache命中,就直接对Cache进行读操作,与主存无关;如果Cache不命中,则仍需访问主存,并把该块信息一次从主存调入Cache内。若此时Cache已满,则须根据某种替换算法,用这个块替换掉Cache中原来的某块信息。 当CPU发出写请求时,如果Cache命中,有可能会遇到Cache与主存中的内容不一致的问题,处理的方法主要有两种,一是同时写入Cache和主存,称为写直达法;二是将信息暂时只写入Cache,并用标志将该块加以注明,直到该块从Cache中替换出来时才一次写入主存,称为写回法。如果不命中,就直接把信息写入主存,而与Cache无关。
3.7.3 Cache和主存之间的映像方式
为了把信息放到Cache中,必须应用某种函数把主存地址映像到Cache中定位,称为地址映像(映射)。而将主存地址变换成Cache地址,称做地址变换,它们之间是密切相关的。常用的地址映像方式有三种,分别是全相联映像、直接映像和组相联映像。 1.全相联映像 全相联映像是指将内存和Cache按照固定的相同的大小进行分块。内存的块和Cache的块可以任意对应,即内存的任何一块都可以映像到Cache的任何一块。在Cache的存储空间被占满的情况下,也允许确实已被占满的Cache存储器中替换出任何一个旧块,具体如图3-14所示。 2.直接映像 直接映像先将Cache分成若干块,每个块的大小相同,并对每个块进行编号。同时根据Cache容量大小将内存分成若干区(页),每个区的容量都跟Cache的容量相同,然后对内存进行分块,每块的大小跟Cache块的大小相同,同样对区内的块进行编号。映像时,内存的某个区的块只能保存在与其块号相同的Cache块中。如图3-15所示,内存各区中的第0块只能映像到Cache的第0块,而不能映像到其他块。
3.组相联映像 组相联映像实际上是直接映像和全相联映像的折中方案。组相联映像方式先将Cache分成大小相同的若干区(组),对每个区按照直接映像的方式进行分块,并且编号,因此,Cache中有多个编号相同的块。对内存按照Cache区的大小进行分页,再对每页按照Cache块的大小进行分块,每个内存块可以对应不同Cache区中的相同块号的块。如图3-16中内存第0页的第0块,可以对应Cache的第0区的第0块,也可以对应第j区的第0块。 在三种方式中,全相联映像方式比较灵活,Cache的块冲突概率最低、空间利用率最高,但是地址变换速度慢,而且成本高,实现起来比较困难;直接映像方式是最简单的地址映像方式,成本低,易实现,地址变换速度快,而且不涉及其他两种映像方式中的替换算法问题。但这种方式不够灵活,Cache的块冲突概率最高、空间利用率最低;组相联映像实际上是全相联映像和直接映像的折中方案,其优点和缺点介于全相联和直
文档评论(0)