发布网友 发布时间:2024-12-03 09:38
共1个回答
热心网友 时间:6分钟前
本节目录
本节内容
一、全相联映像
全相联映像利用相联存储器构建Cache存储器。在此方式中,主存中的每一页都能映射到Cache的任意一页。当需要替换Cache中的某页内容时,可以任意选择主存中的页进行替换,这使得其相较于直接映像方式更为灵活。
在全相联映像方式中,主存地址分为地址部分(主存页标记)和数据部分(页内地址)。数据部分用于存放数据,地址部分则记录该数据的存储器地址。
当程序访问内存时,高11位提供主存页号,低19位提供页内地址。由于每个Cache页可以映射到2048个主存页中的任意一页,因此每页的Cache标记也需要11位,以指示它当前映射的主存页号。这导致Cache标记位数增加,比较逻辑成本也随之增加。
在全相联映像方式中,主存地址不能直接提取Cache页号,而是需要将主存页标记与Cache各页的标记逐个比较,直到找到匹配的页(访问Cache命中),或者比较完所有标记后仍未找到匹配项(访问Cache失败)。因此,这种映射方式速度较慢,失去了高速缓存的作用,这是全相联映像方式的最大缺点。如果让主存页标记与各Cache标记同时比较,成本将非常高。由于比较器电路的设计和实现难度较大,全相联映像方式仅适用于小容量Cache。
二、组相联映像
1、组相联映射方式
组相联映像(页组映像)介于直接映像和全相联映像之间,是这两种映像的一种折衷方案。全相联映像方式以页为单位,可自由映射,没有固定的对应关系。直接映像方式中,主存分组,主存组内的各页与Cache的页之间采取的是固定的映射关系,但各组均可映射到Cache中。在组相联映像方式中,主存和Cache都分组,主存中一个组内的页数与Cache的分组数相同。
2、组相联映射规则
组相联映像的规则是:主存中的组与Cache的组形成直接映射关系,而每个组内的页是全相联映射关系。例如,主存1区0页位于0组,因此只能进入Cache的0组中。至于进入Cache的0组0页还是0组1页,没有强制要求,可任意放置。
在组相联映像中,Cache中每一页的标记位长度为8位,因为此时除了要记录区号,还得记录组号,即区号7位加组号1位等于8位。
可以看出,如果Cache中每组只有一页,则组相联映像方式就变成了直接映像方式。如果Cache中每组页数为16页(即Cache只分一组),则就是全相联映像。因此,在具体设计组相联映像时,可以根据设计目标选择某一折衷值。
在组相联映像中,由于Cache中每组有若干可供选择的页,因此在映像定位方面较直接映像方式更为灵活:每组页数有限,因此付出的代价不是很大,可以根据设计目标选择组内页数。
为保障性能,内存与Cache之间的映射往往采用硬件完成,因此Cache对于程序员而言是透明的。程序员在编程时,无需考虑Cache。