欢迎来到天天文库
浏览记录
ID:40742608
大小:99.50 KB
页数:7页
时间:2019-08-07
《Cache的地址映射》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、全相联映射是指主存中任一块都可以映射到Cache中任一块的方式,也就是说,当主存中的一块需调入Cache时,可根据当时Cache的块占用或分配情况,选择一个块给主存块存储,所选的Cache块可以是Cache中的任意一块。例如,设Cache共有2C块,主存共有2M块,当主存的某一块j需调进Cache中时,它可以存入Cache的块0、块1、…、块i、…或块2C-1的任意一块上。如图4-28所示。图4-28全相联映射方式在全相联映射方式下,CPU的访主存地址为如下形式:其中,M为主存的块号,W为块内的字号。而CPU访Cache的地址形式为:其中,C为Cache的块号,W为块内的字号。主
2、存地址到Cache地址的转换是通过查找一个由相联存储器实现的块表来完成的,其形成过程如图4-29示。图4-29全相联映射的地址转换当一个主存块调入Cache中时,会同时在一个存储主存块号和Cache块号映射表的相联存储器中进行登记。CPU访存时,首先,根据主存地址中的主存块号M在相联存储器中查找Cache块号,若找到,则本次访Cache命中,于是将对应的Cache块号取出,并送访Cache地址的块号C字段;紧接着将主存地址的块内字号W直接送Cache地址的块内字号W字段,从而形成一个访Cache的地址;最后根据该地址完成对Cache单元的访问.全相联映射方式的优点是Cache的空
3、间利用率高,但缺点是相联存储器庞大,比较电路复杂,因此只适合于小容量的Cache之用。2.直接相联映射直接相联映射方式是指主存的某块j只能映射到满足如下特定关系的Cache块i中:i=jmod2C(4.2)图4-30直接相联映射方式上图中,主存的第0、2C、2C+1、…块只能映射到Cache的第0块,主存的第1、2C+1、2C+1+1、…块只能映射到Cache的第1块,……,主存的第2C-1、2C+1-1、…2M-1块只能映射到Cache的第2C-1块。在直接相联映射方式下,CPU的访主存地址为如下形式:其中,T为标志号,C为Cache的块号,W为块内的字号。在这里,原主存的块号
4、M实际上被分成了两个字段:T和C,其中C用于指出主存的块可以映射的Cache的块。一般来讲,主存的块数是Cache的块数的整数倍,也就是说主存的块数2M和Cache的块数2C满足关系式:2M=n·2C在直接相联映射方式下,标志号T是随Cache的每个块一起存储的,其地址转换过程如图4-31所示。图4-31直接相联映射的地址转换当一个主存块调入Cache中时,会同时将主存地址的T标志存入Cache块的标志字段中。当CPU送来一个访存地址时,首先,根据该主存地址的C字段找到Cache的相应块,然后将该块标志字段中存放的标志与主存地址的T标志进行比较,若相符,说明主存的块目前已调入该C
5、ache块中,则命中,于是使用主存地址的W字段访问该Cache块的相应字单元;若不相符,则未命中,于是使用主存地址直接访主存。直接相联映射方式的优点是比较电路最简单,但缺点是Cache块冲突率较高,从而降低了Cache的利用率。由于主存的每一块只能映射到Cache的一个特定块上,当主存的某块需调入Cache时,如果对应的Cache特定块已被占用,而Cache中的其它块即使空闲,主存的块也只能通过替换的方式调入特定块的位置,不能放置到其它块的位置上。3.组相联映射以上两种方式各有优缺点,而且非常有趣的是,它们的优缺点正好相反,也就是说,对于全相联映射方式来说为优点的恰是直接相联映射
6、方式的缺点,而对于全相联映射方式来说为缺点的恰是直接相联映射方式的优点。那么,可否找到一种能较好地兼顾这两种方式的优点的映射方式呢?下面我们就来看看组相联映射方式在这种方式下,将Cache分成2u组,每组包含2v块。主存的块与Cache的组之间采用直接相联映射,而与组内的各块则采用全相联映射。也就是说,主存的某块只能映射到Cache的特定组中的任意一块。主存的某块j与Cache的组k之间满足如下关系:k=jmod2u(4.3)设主存共有2s×2u块(即M=s+u),则它们的映射关系如下图4-32示。图4-32组相联映射方式图中,主存的块0、2u、2u+1、…、(2s-1)2u可以
7、映射到Cache的第0组的任意一块,主存的块1、2u+1、2u+1+1、…、(2s-1)2u+1可以映射到Cache的第1组的任意一块,……,主存的块2u-1、2u+1-1、…、2M-1可以映射到Cache的第2u-1组的任意一块。在组相联映射方式下,CPU的访主存地址和访Cache地址分别为如下形式:其中,u为Cache的组号,v为组内的块号。Cache的块号C=u+v,而主存的块号M=s+u。也就是说,主存块地址的后u位指出了主存的这一块所能映射的Cache的组。与全相联映射
此文档下载收益归作者所有