例1:某计算机的主存地址位数为32位,按字节编址。假定数据Cache中最多存放128个主存块,采用四路组相联映射方式,块大小为64B,每块设置了一位有效位。采用一次性写回策略,为每块设置1位“脏”位。

例1:某计算机的主存地址位数为32位,按字节编址。假定数据Cache中最多存放128个主存块,采用四路组相联映射方式,块大小为64B,每块设置了一位有效位。采用一次性写回策略,为每块设置1位“脏”位。要求:

(1)指出主存地址中标记(Tag)、组号(Index)和块内地址(Offset)三部分的位置和位数。

(2)计算该数据Cache的总位数。

解:主存地址位数为32位,一共32位,

Cache中有128个主存块,四路组相联映射,即每个Cache组内有4个Cache块,

故分为128 ÷ 4 = 32组 = 2^5 组,组号占5位

按字节编址,块大小为64B = 2^6B,块内地址字段占6位

标记字段占剩余的 32 - 5 - 6 = 21 位 

       

(1)Tag为21位,位于主存地址前部;

  组号Index为5位,位于主存地址中部;

  Offset为6位,位于主存地址后部;

主存地址结构:

主存块号块内地址
主存字块标记(21位) + cache组号(5位) = 26位6位

        

Cache总位数或总容量 = 标记项的总位数 + 数据块的总位数

        

        标记项 = 其他位 + 标记位

        其他位:一定包含 1 位有效位 ,可能包含脏位 (修改位)、替换控制位

        全写法没有脏位,写回法有 1 位脏位

        替换算法有替换控制位

(2)标记项的总位数 = 128 块 * (21 + 1 + 1)位/块 =  128 * 23 = 2944 位

数据块位数 = 128 块 *  2^6 * 8 位/块  =  65536 位

                                    块大小 64B

所以数据Cache的总位数 = 2944 位 + 65526 位 = 68480 位

例2:某个Cache的容量大小为64KB,行长为128B,且是四路组相联Cache,主存使用32位地址,按字节编址。

(1)该Cache共有多少行?多少组?

(2)该Cache的标记阵列中需要有多少标记项?每个标记项中标记位长度是多少?

(3)该Cache采用LRU替换算法,若当该Cache为直达式Cache时,标记阵列总共需要多大的存储容量?写回式又该如何?(提示:四路组相联Cache使用LRU算法的替换控制位为2位。)

解:

(1)某个Cache的容量大小为 64KB,行长为 128B,

该Cache共有:64KB ÷ 128B/行 = 2^16B ÷ 2^7B行 = 2^9 行 = 512 行;

四路组相联Cache,即每个Cache组内有 4 个Cache行,

该Cache共有:512行 ÷ 4行/组 = 128 组。

(2)Cache中有 512 行表示Cache中有 512 个标记项,

按字节编址,行长为 128B 表示块大小为:128B = 2^7B,

即块内地址(Offset)为  7 位;

Cache有 128 组 = 2^7 组,即组号为 7 位;

标记位(tag)= 32 - 7 - 7 = 18 位 。

(3)写直达式就是全写法,没有脏位,只有 1 位有效位,

使用LRU算法,四路组相联 2 位替换控制位,4 = 2^2

所以写直达式标记阵列需要的存储容量为:(18 + 1 + 2)位/行 * 512 行 = 10752 位

对应的Cache行标记项结构:

有效位标记位脏位替换控制位
1位18位0位2位

       

写回式就是写回法, 在全写法的基础上添加 1 位脏位,

所以回写式标记阵列需要的存储容量为(21 + 1)位/行 * 512 行 = 11264 位

对应的Cache行标记项结构:

有效位标记位脏位替换控制位
1位18位1位2位

reference:

Cache的地址结构,tag到底与Cache什么关系,Cache容量与总容量,Cache行长,Cache字地址?_cache地址结构-CSDN博客

彻底弄懂408——计算机组成原理中的Cache映射方式与位数问题_cache行的位数不包括行号吗-CSDN博客

https://www.cnblogs.com/zhengmq2010/p/13662884.html#计组——彻底搞懂cache主存映射以及cache容量的计算_cache容量计算-CSDN博客https://www.cnblogs.com/zhengmq2010/p/13662884.html#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值