为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

[精品]主存与cache的地址映射关系

2017-11-14 7页 doc 107KB 10阅读

用户头像

is_731942

暂无简介

举报
[精品]主存与cache的地址映射关系[精品]主存与cache的地址映射关系 主存与Cache的地址映射 CPU对存储器的访问,通常是一次读写一个字单元。当CPU访Cache不命中时,需将存储在主存中的字单元连同其后若干个字一同调入Cache中,之所以这样做,是为了使其后的访存能在Cache中命中。因此,主存和Cache之间一次交换的数据单位应该是一个数据块。数据块的大小是固定的,由若干个字组成,且主存和Cache的数据块大小是相同的。 从Cache-主存层次实现的目标看,一方面既要使CPU的访存速度接近于访Cache的速度,另一方面为用户程序提供的运行空间应...
[精品]主存与cache的地址映射关系
[精品]主存与cache的地址映射关系 主存与Cache的地址映射 CPU对存储器的访问,通常是一次读写一个字单元。当CPU访Cache不命中时,需将存储在主存中的字单元连同其后若干个字一同调入Cache中,之所以这样做,是为了使其后的访存能在Cache中命中。因此,主存和Cache之间一次交换的数据单位应该是一个数据块。数据块的大小是固定的,由若干个字组成,且主存和Cache的数据块大小是相同的。 从Cache-主存层次实现的目标看,一方面既要使CPU的访存速度接近于访Cache的速度,另一方面为用户程序提供的运行空间应保持为主存容量大小的存储空间。在采用Cache-主存层次的系统中,Cache对用户程序而言是透明的,也就是说,用户程序可以不需要知道Cache的存在。因此,CPU每次访存时,依然和未使用Cache的情况一样,给出的是一个主存地址。但在Cache-主存层次中,CPU首先访问的是Cache,并不是主存。为此,需要一种机制将CPU的访主存地址转换成访Cache地址。而主存地址与Cache地址之间的转换是与主存块与Cache块之间的映射关系紧密联系的,也就是说,当CPU访Cache未命中时,需要将欲访问的字所在主存中的块调入Cache中,按什么样的策略调入,直接影响到主存地址与Cache地址的对应关系,这也就是本小节要解决的主存与Cache的地址映射问题。 主要有三种地址映射方式,分别为全相联映射、直接相联映射和组相联映射。 1. 全相联映射 全相联映射是指主存中任一块都可以映射到Cache中任一块的方式,也就是说,当主存中的一块需调入Cache时,可根据当时Cache的块占用或分配情况,选择一个块给主存块存储,所选的Cache块可以是Cache中 CM的任意一块。例如,设Cache共有2块,主存共有2块,当主存的某一块j需调进Cache中时,它可以存入Cache的块0、块1、…、块i、… 或 C块2 -1的任意一块上。如图4-28所示。 图4-28 全相联映射方式 在全相联映射方式下,CPU的访主存地址为如下形式: 其中,M为主存的块号,W为块内的字号。而CPU访Cache的地址形式为: 其中,C为Cache的块号,W为块内的字号。 主存地址到Cache地址的转换是通过查找一个由相联存储器实现的块表来完成的,其形成过程如图4-29示。 图4-29 全相联映射的地址转换 当一个主存块调入Cache中时,会同时在一个存储主存块号和Cache块号映射表的相联存储器中进行登记。CPU访存时,首先,根据主存地址中的主存块号M在相联存储器中查找Cache块号,若找到,则本次访Cache命中,于是将对应的Cache块号取出,并送访Cache地址的块号C字段;紧接着将主存地址的块内字号W直接送Cache地址的块内字号W字段,从而形成一个访Cache的地址;最后根据该地址完成对Cache单元的访问. 全相联映射方式的优点是Cache的空间利用率高,但缺点是相联存储器庞大,比较电路复杂,因此只适合于小容量的Cache之用。 2. 直接相联映射 直接相联映射方式是指主存的某块j只能映射到满足如下特定关系的Cache块i中: )(C4.2 i,j mod 2 图4-30 直接相联映射方式 ,CC1 上图中,主存的第0、2、2、… 块只能映射到Cache的第0块, ,CC1主存的第1、2+1、2+1、… 块只能映射到Cache的第1块,… … , ,CC1MC主存的第2-1、2-1、…2-1块只能映射到Cache的第2-1块。 在直接相联映射方式下,CPU的访主存地址为如下形式: 其中,T为标志号,C为Cache的块号,W为块内的字号。在这里,原主存的块号M实际上被分成了两个字段:T和C,其中C用于指出主存的块可以映射的Cache的块。一般来讲,主存的块数是Cache的块数的 MCM整数倍,也就是说主存的块数2和Cache的块数2满足关系式:2, Cn?2 在直接相联映射方式下,标志号T是随Cache的每个块一起存储的,其地址转换过程如图4-31所示。 图4-31 直接相联映射的地址转换 当一个主存块调入Cache中时,会同时将主存地址的T标志存入Cache块的标志字段中。当CPU送来一个访存地址时,首先,根据该主存地址的C字段找到Cache的相应块,然后将该块标志字段中存放的标志与主存地址的T标志进行比较,若相符,说明主存的块目前已调入该Cache块中,则命中,于是使用主存地址的W字段访问该Cache块的相应字单元;若不相符,则未命中,于是使用主存地址直接访主存。 直接相联映射方式的优点是比较电路最简单,但缺点是Cache块冲突率较高,从而降低了Cache的利用率。由于主存的每一块只能映射到Cache的一个特定块上,当主存的某块需调入Cache时,如果对应的Cache特定块已被占用,而Cache中的其它块即使空闲,主存的块也只能通过替换的方式调入特定块的位置,不能放置到其它块的位置上。 3. 组相联映射 以上两种方式各有优缺点,而且非常有趣的是,它们的优缺点正好相反,也就是说,对于全相联映射方式来说为优点的恰是直接相联映射方式的缺点,而对于全相联映射方式来说为缺点的恰是直接相联映射方式的优点。那么,可否找到一种能较好地兼顾这两种方式的优点的映射方式呢, u下面我们就来看看组相联映射方式 在这种方式下,将Cache分成2组, v每组包含2块。主存的块与Cache的组之间采用直接相联映射,而与组内的各块则采用全相联映射。也就是说,主存的某块只能映射到Cache的特定组中的任意一块。主存的某块j与Cache的组k之间满足如下关系: ()u4.3 k,j mod 2 su 设主存共有2×2块(即M,s+u),则它们的映射关系如下图4-32示。 图4-32 组相联映射方式 ,uu1su图中,主存的块0、2、2、…、(2-1)2可以映射到Cache的第0组的任 ,uu1su意一块,主存的块1、2+1、2+1、…、(2-1)2+1可以映射到Cache的 ,uu1M第1组的任意一块,… … ,主存的块2-1、2-1、…、2-1可以映射到 uCache的第2-1组的任意一块。 在组相联映射方式下,CPU的访主存地址和访Cache地址分别为如下形式: 其中,u为Cache的组号,v为组内的块号。Cache的块号C,u+v,而主存的块号M,s+u。也就是说,主存块地址的后u位指出了主存的这一块所能映射的Cache的组。 与全相联映射方式类似的是,在组相联映射方式下,主存地址到Cache地址的转换也是通过查找一个由相联存储器实现的块表来完成的,其形成过程如图4-33所示。 图4-33 组相联映射的地址转换 当一个主存块调入Cache中时,会同时将其主存块地址的前s位写入一个由相联存储器实现的快表的对应Cache块项的s字段中。例如,设主存的某块调入Cache的第1组的第2块中,则在快表的组1第3项的s字段会登记下该主存块地址的前s位。 CPU访存时,首先,根据主存地址中的主存块号中的u字段找到快表的相应组,然后将该组的所有项的前s位同时与主存地址的s字段作比较,若相符,则说明主存块在Cache中,于是将Cache中该项的v字段取 出,作为Cache地址的v字段,而Cache地址的u、W字段直接由主存地址的u、W字段形成,最后形成一个完整的访Cache地址。当然,若比较结果是没有相符项,则未命中,由主存地址直接访主存。 其实,全相联映射和直接相联映射可以看成是组相联映射的两个极端情况。若u,0,v,C,则Cache只包含1组,此即全相联映射方式;若u,C,v,0,则组内的块数等于1,此即直接相联映射。 在实际应用中,相联映射方式每组的块数一般取值较小,典型值为2、4、8、16等,分别称为两路组相联、四路组相联等。这样一方面使得比较器的规模较小,实现较容易,例如两路组相联采用两路比较,四路组相联采用四路比较等;另一方面,Cache每组增加的可映射块数可有效减少冲突,提高Cache访问的命中率。
/
本文档为【[精品]主存与cache的地址映射关系】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索