多路组相连cache(缓存)结构(multi-way set associate cache)
1 物理地址tag/set/block_offset说明:
1.1 以 2路组相连cache为例子介绍cache行和物理地址行的构成
上图是2路组相连的cache(引自https://www.sciencedirect.com/topics/computer-science/set-associative-cache)。
(直接映射cache也被称为单路cache的原因就是因为只有1路。)
1.1.1 cache的一行构成
tag | data block | flag bits |
- tag: 标签位用于比较在way1和way0两路中,哪一个cache块存了我们的目的数据(可以看到图中的两个等号的用硬件实现的比较器,就是用来比较way1 and way0中的两个tag的)
- data block: 数据位用来存储(内存和cache交换的数据块)目标tag的数据块。
- v: 有效位用来 表示该cache块是否有效。(复杂的cache设计可能有更多位)(比如当一开始cache里面一个数据块都没有为空的时候,所有的v标记都为0,然后当该数据块载入了,代表该块有效了,那么将其置为1即可。)
1.1.2 要去cache中找数据的内存地址
一个地址构成如下图: 左侧为MSB,右侧为LSB(lowest significant bits):
tag | index | block offset |
- block offset: 说的是对于内存地址来说,其后block offset个字节的数据会构成一个和cache做数据交换的块,故就是cache块的大小;
- index: 说的是对于内存地址来说,其应该被映射到cache里的哪一组,故该部分的位数代表的是整个cache能hold住多少组,而组数目又由每个cache块大小和(4路组相连那路数就是4)“路数”有关的,其计算方式为:
setNums=cacheWholeSize(numOfWays)∗(blockSize))setNums = \frac{cacheWholeSize}{(numOfWays) * (blockSize))} setNums=(numOfWays)∗(blockSize))cacheWholeSize
拿最开始的2路组相连来说,其中的MemoryAddress里的set我们看到了是2位,那么这个内存地址就可以根据set的两位去找到自己在cache中对应的组是哪一组,拿图中来说,当set的两位为10时,那么对应到第3组set2。 - tag: 用来在使用index选出cache位于哪一组后去比较具体的cache块位于哪一路。
2 结合实际例子
2.1 example1
一个四路相联cache,CPU字长为4字节,内存和cache都是以字节编址,cache和内存交换单位为块,每个块大小为512字节,cache能够容纳1024个块。如果物理内存为32位地址:
- q1: 画出cache和内存的地址格式,标明块内偏移地址、组号和标签位置;
- q2: 请计算内存地址FAB12389(16进制)在cache中可能的位置块号;
answer q1:
根据1.1.2的计算方式:
setNums=cacheWholeSize(numOfWays)∗(blockSize))=1024∗512Byte4∗512Byte=28setNums = \frac{cacheWholeSize}{(numOfWays) * (blockSize))} = \frac{1024*512 Byte}{4*512Byte} = 2^{8} setNums=(numOfWays)∗(blockSize))cacheWholeSize=4∗512Byte1024∗512Byte=28
故,最后的结果如下:
tag(32-8-9=17bit) | index(8bit) | block offset(9bit) |
answer q2:
其内存地址分成4个Byte分别是:
FA(1111 1010) | B1(1011 0001) | 23(0010 0011) | 89(1000 1001) |
根据q1的结果,我们容易得出其tag,index和blockoffset对应的值分别如下:
tag(32-8-9=17bit) = (don't care) | index(8bit)= 1001 0001(B) = 128+16+1=145(D) | block offset(9bit) = 1 1000 1001(B) |
则其位于第145组,那么由于块号从左上角从左到右从上到下块号递增,那么位于145组的那几块的块号就是答案:
145*4 + (0,1,2,3) = 580,581,582,583块
2.2 example2 [2]
18 | 10 | 4 |
TAG | SET | OFFSET |
3 ref:
- [1] https://www.sciencedirect.com/topics/computer-science/set-associative-cache
- [2] https://www.d.umn.edu/~gshute/arch/cache-addressing.xhtml
- [3] https://en.wikipedia.org/wiki/CPU_cache
多路组相连cache(缓存)结构(multi-way set associate cache)相关推荐
- 存储器里面的一个采用直接映射方式的32KB缓存-一个四路组相连的缓存,容量为16KB
1,一个采用直接映射方式的32KB缓存,假设块长为8个32位的字,且CPU访问缓存命中, 则主存地址为ABCDEFH的单元在缓存的第(H)块内. 转换: ABCDEF(16)=1010 1011 11 ...
- 4路组相连cache设计_Cache组织方式
经过下面文章的介绍,我们已经知道cache的基本工作原理. smcdef:图说Cache - Cache的基本原理zhuanlan.zhihu.com 但是,我们一直避开了一个关键问题.我们都知道c ...
- Cache的地址结构,tag到底与Cache什么关系,Cache容量与总容量,Cache行长,Cache字地址?
目录.Cache映射的问题 一.Cache的三种映射 重点:那么我说 1.直接映射 2.全相联映射 3.组相联映射 4.总结三种映射 二.Cache的三个字眼(例题) 1.Cache字地址多少位(字地 ...
- 4路组相连cache设计_移动图形处理器的纹理Cache设计
随着手机.PAD等移动设备进一步普及,对3D图形绘制的需求也越来越大.桌面GPU相较于移动GPU,其渲染流程简单直接.数据吞吐率高,进而带宽需求高,功耗大.文献[1]指出相比于集成电路按照摩尔定律的发 ...
- 4路组相连cache设计_浅谈 Cache
1. Cache的历史 在科研领域,C. J. Conti等人于1968年在描述360/85和360/91系统性能差异时最早引入了高速缓存(cache)一词.Alan Jay Smith于1982年的 ...
- (计算机组成原理)第三章存储系统-第六节2:Cache和主存的映射方式(全相联映射、直接映射和组相连映射)
文章目录 一:全相联映射 二:直接映射 三:组相连映射 前面说过,Cache中实际保存的是主存中的数据副本,所以这里会涉及一个很重要的问题:Cache和主存是如何映射的?所谓映射是指把主存地址空间映射 ...
- Cache之组相连映射
简单说就是,组相连映射是直接映射和全相连映射的一种折中. 具体的执行策略是:将Cache进行分组,数量记为Q,每组有R个字块. 设i是Cache的组号,j是主存的块号,那么一个主存块怎么映射到组中呢? ...
- 浅析 vSAN 磁盘组架构和缓存盘的“消亡”
一.vSAN 中的 DiskGroup 架构的问题与应对思路回顾 如何将分散在多个服务器中的本地盘资源整合成集群范围可用的"共享存储资源池",是超融合架构中的一项关键技术.在 vS ...
- .net System.Web.Caching.Cache缓存类使用详解(转载)
转自:http://www.cnblogs.com/virusswb/articles/1681561.html net System.Web.Caching.Cache缓存类使用详解 System. ...
最新文章
- Flask abort
- 2013 QConf上海软件开发大会总结
- PHP 使用 OSS 批量删除图片
- b s php 生产管理,求一套简单稳定的 B/S 架构的设备监控管理系统解决方案
- Hyper-V 2016 系列教程45 System Center 2016 Data Protection Manager 可以备份什么
- 调试远程服务器上的代码时报错:调试设置中的Python路径无效
- 托管系统的mysql设计_PHP+MySQL托管中心管理系统的设计与实现
- plist java_帮助plist文件
- scrapy数据存储在mysql数据库的两种方式
- c语言编程汉诺塔问题,C语言解决汉诺塔问题
- uni-app开发微信公众号H5网页,用微信开发者工具调试公众号
- 机器学习实战(第1章)
- 期货在低位放量下跌的现象(期货高位放量上涨意味什么)
- 甲骨文最新改邮箱、改账户名、改密码教程
- mysql进行创建序列化
- 微信小程序基于腾讯云对象存储的图片上传
- 推荐一些不常见的搜索引擎
- 梯度下降法-优化算法-机器学习
- DP + 前缀和 - 牡牛和牝牛 - AcWing 1307
- python文本转女生语音