当前位置:首页 > 芯闻号 > 充电吧
[导读]Cache的容量很小,它保存的内容只是主存内容的一个子集,且Cache与主存的数据交换是以块(cache line)为单位的。为了把信息放到Cache中,必须应用某种函数把主存地址定位到Cache中,

Cache的容量很小,它保存的内容只是主存内容的一个子集,且Cache与主存的数据交换是以块(cache line)为单位的。为了把信息放到Cache中,必须应用某种函数把主存地址定位到Cache中,这称为地址映射。

在信息按这种映射关系装入Cache后,CPU执行程序时,会将程序中的主存地址变换成Cache地址,这个变换过程叫做地址变换。

Cache的地址映射方式有直接映射、全相联映射和组相联映射。

假设某台计算机主存容量为1MB,被分为2048块,每个Block为512B;Cache容量为8KB,被分为16块,每块也是512B。

下面以此为例介绍三种基本的地址映射方法。

1. 直接映射

一个内存地址能被映射到的Cache line是固定的。就如每个人的停车位是固定分配好的,可以直接找到。缺点是:因为人多车位少,很可能几个人争用同一个车位,导致Cache淘汰换出频繁,需要频繁的从主存读取数据到Cache,这个代价也较高。

直接映射的Cache组织如图(1)所示。主存中的一个块只能映射到Cache的某一特定块中去。例如,

主存的第0块、第16块、第32块、第48块、……、第2032块等128块,只能映射到Cache的第0块;

主存的第1块、第17块、第33块、第49块、……、第2033块等128块,只能映射到Cache的第1块;

以此类推,主存的第15块、第31块、第47块、……、第2047块等128块,只能映射到Cache的第15块中。

映射完毕,Cache总共有0~15即16块,主存中的每128(2048/16)块,只能映射到Cache中的某一个块中。

即映射规则为cache line index = (主存(Page)的line数)%(cache中 cache line的总数)

主存的line数是0~2047,cache中cache line的总数是16.

  

                                          图(1)

直接映射是最简单的地址映射方式,它的硬件简单,成本低,地址变换速度快,而且不涉及替换算法问题。但是这种方式不够灵活,Cache的存储空间得不到充分利用,每个主存块只有一个固定位置可存放,容易产生冲突,使Cache效率下降,因此只适合大容量Cache采用。例如,如果一个程序需要重复引用主存中第0块与第16块,最好将主存第0块与第16块同时复制到Cache中,但由于它们都只能复制到Cache的第0块中去,即使Cache中别的存储空间空着也不能占用,因此这两个块会不断地交替装入Cache中,导致命中率降低。

2. 全相联映射

主存中的一个地址可被映射进任意cache line,问题是:当寻找一个地址是否已经被cache时,需要遍历每一个cache line来寻找,这个代价很高。就像停车位可以大家随便停一样,停的时候简单,找车的时候需要一个一个停车位的找了。

图(2)是全相联映射的Cache组织,主存中任何一块都可以映射到Cache中的任何一块位置上。


  

                                         图(2)

全相联映射方式比较灵活,主存的各块可以映射到Cache的任一块中,Cache的利用率高,块冲突概率低,只要淘汰Cache中的某一块,即可调入主存的任一块。但是,由于Cache比较电路的设计和实现比较困难,这种方式只适合于小容量Cache采用。

3. 组相联映射

组相联映射实际上是直接映射和全相联映射的折中方案,其组织结构如图(3)所示。

主存和Cache都分组,主存中一个组内的块数与Cache中的分组数相同,组间采用直接映射,组内采用全相联映射。也就是说,将Cache分成2^u组,每组包含2^v块,主存块存放到哪个组是固定的,至于存到该组哪一块则是灵活的。即主存的某块只能映射到Cache的特定组中的任意一块。主存的某块b与Cache的组k之间满足以下关系:k=b%(2^u).

例如,Cache分为8组(u=3),每组2块(v=1),主存分为128个区,每个区16块。


 

                                                  图(3)

主存中的各块与Cache的组号之间有固定的映射关系,但可自由映射到对应Cache组中的任何一块。例如:

--主存的第0块、第2^u块、第2×(2^u)块、…第255x(2^u)即255x8=2040块等256块均映射于Cache的第0组,但可映射到其中的第0块或第1块;

--主存的第1块、第2^u+1块、第3^(2^u)+1块、…第255x(2^u+1)即2041块等均映射于Cache的第2组,但可映射到Cache第2组中的任意一块;

--主存的第2块、第2^u+2块、第(2^u)x2+2块、…第2042块等均映射于Cache的第3组,但可映射到Cache第3组中的任意一块;

--主存的第7块、第2^u+7块、第2^(u+1)+7块、…第2047块等均映射于Cache的第8组,但可映射到Cache第8组中的第14块或第15块。

常采用的组相联结构Cache,每组内有2、4、8、16块,称为2路、4路、8路、16路组相联Cache。以上为2路组相联Cache。组相联结构Cache是前两种方法的折中方案,适度兼顾二者的优点,尽量避免二者的缺点,因而得到普遍采用。

实例分析:

1.容量为64块的Cache采用组相联方式映像,字块大小为128字节,每4块为一组,若主容量为4096块,且以字编址,那么主存地址为(19)位,主存区号为(6)位。

解:组相联的地址构成为:区号+组号+块号+块内地址。

主存的每个分区/组大小与整个Cache大小相等,故此主存需要分的区数为:4096/64=64,因为26=64,因此需要6位来表示区号。每4块为一组,故共有组数 64/4 = 16 ,因为24=16,因此需要4位表示组号。每组4块,故表示块号需要2位。

块内地址共128字节,27=128,所以块内地需要7位表示。所以:主存地址的位数=6+4+2+7 = 19

主存区号的位数=6

个人见解:Cache有u组,每组有v块,即u = 16,v = 4,Cache大小:64块×128B = 8KB。

主存大小:4096×128B = 2^12*2^7 = 2^19,即主存地址有19位。4096/64= 2^6主存区号为6位。

2.某 32 位计算机的 cache 容量为 16KB,cache 块的大小为 16B,若主存与 cache 的地址映射采用直接映射方式,则主存地址为 1234E8F8(十六进制)的单元装入的 cache 地址为__C__。

A. 00 0100 0100 1101 (二进制)
B. 01 0010 0011 0100 (二进制)
C. 10 1000 1111 1000 (二进制)
D. 11 0100 1110 1000 (二进制)

解:Cache大小为16KB,块大小为16B,所以Cache被分成16KB/16B=1024块,因210=1024故需要10位来表示块数。

24=16故块内地址需要4位来表示。所以Cache的地址线位置为14位。

由于采用直接映像的方式,所以主存的后14位就是要装入的到Cache中的位置。故选 C.

个人见解:Cache的容量是16KB = 16×1024B = 16384B,主存的地址为0x1234E8F8/(16×1024B)= 18643. 该地址对应的是主存的第18643块。

根据公式:cache的块地址i = 主存的块地址 % 16384 = 1234E8F8 - 1234C000 = 0x28F8 选C

 

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

草木曼发,春山可望。3月28日以“凝聚·同行”为主题的2024鲸鸿动能开发者精英会首站在昆明启动。大会深度聚焦阅读、短剧等行业应用,吸引了40多位杰出开发者参与,共同探讨流量商业化新路径,挖掘鸿蒙生态下新的增长机遇。

关键字: 元服务 HarmonyOS 鲸鸿动能

作为年轻人群高度聚集的视频社区,哔哩哔哩在汇聚海量年轻用户、构建优质内容生态的同时,也在不断加大新技术的投入,为用户打造更智能、更安全、更流畅的使用体验。近日,哔哩哔哩宣布完成鸿蒙原生应用Beta版本开发,该版本已具备完...

关键字: 哔哩哔哩 鸿蒙

阔别六年,行业年度盛事 - “CHINAPLAS国际橡塑展”将重磅回归上海,于2024年4月23 - 26日在上海国家会展中心(虹桥)盛装绽放。开幕在即,“国际橡塑展回归上海启航盛典”3月28日在上海举办,线下160多位...

关键字: 智能制造 橡塑科技 新能源汽车

在3月26-29日举行的博鳌亚洲论坛上,三星的绿色发展和科技创新等实践,成为了与会者关注的焦点。

关键字: 三星电子

近日有网友在职场内容社区发布消息称,据相关员工内部消息,某大厂开始裁员,裁员比例10%到30%。该消息中点名的PCG、CSIG事业群,均为腾讯公司下属事业群。从腾讯多位知情人士了解到,该消息为假消息。

关键字: 腾讯 裁员

业内消息,近日杭州市规划部门称位于浙江的“蚂蚁之江总部”已退地。值得一提的是,蚂蚁二期地块早已退地,如今一期的退地也得到了官方回复。

关键字: 蚂蚁集团 阿里巴巴

近日从国家知识产权局官网获悉,华为技术有限公司公布了一项名为“一种光模块、光通信设备及光通信系统“的专利,公开号CN117767976A。专利摘要显示,本申请涉及光通信技术领域,尤其涉及一种光模块、光通信设备及光通信系统...

关键字: 华为 光通信 专利

业内消息,近日外媒报道国内游戏巨头腾讯内部正在发生一场巨变,一款可爱角色克服障碍的简单易玩游戏已经被放在了优先开发位置,而以往备受青睐的一款高成本、复杂的外国IP手游则被冷落。

关键字: 腾讯 游戏

市场分析机构 Canalys 发布的最新数据显示,2023 年中国大陆 PC 市场(不含平板)出货量前五的厂商中,除华为实现增长(11%)外其余均下跌,其中戴尔的出货量仅剩 314.8 万台,环比下滑 44%,近乎腰斩。

关键字: 裁员 芯片 戴尔

最近AI圈突然流行起开源概念。Meta承诺将会打造开源AI,马斯克起诉OpenAI,说它缺少开源模型。与此同时,一批科技领袖和科技企业纷纷为开源概念呐喊。不过科技界碰到一个难以解决的根本问题:它们对“开源AI”的概念无法...

关键字: 开源AI 开源软件 Meta OpenAI
关闭
关闭