跟小灰灰一起学系统架构:Cache映射机制之全相联映像和组相连映射

发布网友 发布时间: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。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com