关闭

Cache之直接映射

标签: 组成原理Cache直接映射
1694人阅读 评论(1) 收藏 举报
分类:

Cache之直接映射

@(组成原理)

直接映射的再次理解:
首先,理清楚这种映射下的主存物理地址位数的分配。

核心目的:加快主存和CPU之间的交换,目的在快。区别于虚拟地址的目的是扩大容量以及逻辑上容易编写程序等。

主存地址分为两个大的部分:高m位和低b位。
高m位又分为最高的t位,称之为主存字块标记,和次低c位,称之为Cache字块地址。
对应的Cache的地址结构是:高t位和低b位。

这里写图片描述

有一个问题,Cache字块地址它自己是不管的对吗?主存知道但是Cache自己是不知道的。

从二者的最低位都是b位,我们知道,因为字块的大小一样,因此位数也是一样的。

主存地址中,可以根据中间的c位计算出共计有2^c块Cache块,当然也可以根据Cache的总容量与字块的大小自行计算。

情景:
因此,现在给你一个主存块,根据它的地址结构,让你帮它找一个可用的Cache块。
脑海中要有一个印象,Cache块是比较宝贵的。主存块能以进入到Cacahe块为荣。主存块数远远大于Cache块数的。
毕竟,物以稀为贵。

直接映射中,一个主存块只能对应到一个Cache块。

根据主存的地址,当前块映射到的Cache块,和2^c块之后的主存块映射的是同一个Cache块。

这里我们来推导一下Cache块号的计算方式:
设i是Cache块号,j是主存块号。i的范围当然就是 [0,2c1],j的范围是[0, 2m1]

i=jmod2c

换成汉字就是取出主存地址中间的c位代表的数字,即为Cache块号。

这样就完了?

么有。

为什么要设计高t位呢?

因为要确定Cache心里装的到底是不是当下主存自以为的根据中间c位计算出来那个Cache块。
因为Cache还可能装着别人嘛。

所以要精确匹配是不是(有点像DNA那啥)。

这些就是直接映射的最核心的概念理解,其他的细节是比较容易理解的,比如在Cache存储中还加有效位的概念等。

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:230214次
    • 积分:6300
    • 等级:
    • 排名:第3899名
    • 原创:398篇
    • 转载:1篇
    • 译文:1篇
    • 评论:94条
    最新评论