收藏 分享(赏)

计算机组成原理第三章 第6讲 Cache存储器.ppt

上传人:fcgy86390 文档编号:8024353 上传时间:2019-06-04 格式:PPT 页数:59 大小:1.47MB
下载 相关 举报
计算机组成原理第三章 第6讲 Cache存储器.ppt_第1页
第1页 / 共59页
计算机组成原理第三章 第6讲 Cache存储器.ppt_第2页
第2页 / 共59页
计算机组成原理第三章 第6讲 Cache存储器.ppt_第3页
第3页 / 共59页
计算机组成原理第三章 第6讲 Cache存储器.ppt_第4页
第4页 / 共59页
计算机组成原理第三章 第6讲 Cache存储器.ppt_第5页
第5页 / 共59页
点击查看更多>>
资源描述

1、Cache存储器,3.6 Cache存储器,1、Cache功能 什么是Cache? 介于CPU和主存M2之间的小容量存储器 存取速度比主存快 一般采用高速的SRAM构成。 为什么要引入Cache? 解决CPU和主存之间的速度不匹配问题 Cache引入的前提: 即空间局部性、时间局部性。,3.6 Cache存储器,CPU和主存之间的速度差别很大时可采用两级或多级Cache系统 早期的一级Cache在CPU内,二级在主板上 现在的CPU内带L1 Cache和L2 Cache 全由硬件调度,对用户透明,3.6 Cache存储器,3.6 Cache存储器,2.cache基本原理 CPU与Cache之间

2、的数据传送是以字为单位 主存与Cache之间的数据传送是以块为单位 一个块由若干字组成,是定长的。 CPU读主存的一个字时,便把此字的内存地址同时送给Cache和主存,Cache控制逻辑依据地址判断此字是否在Cache中: 若在,此字立即传送给CPU 否不在,则用主存读周期把此字从主存读出送到CPU,与此同时,把含有这个字的整个数据块从主存读出送到cache中。,3.6 Cache存储器,3 . Cache的命中率 从CPU来看,增加一个cache的目的,就是在性能上使主存的平均读出时间尽可能接近cache的读出时间。 为了达到这个目的,在所有的存储器访问中由cache满足CPU需要的部分应占

3、很高的比例,即cache的命中率应接近于1。 由于程序访问的局部性,实现这个目标是可能的。,3.6 Cache存储器,在一个程序执行期间,设Nc表示cache完成存取的总次数,Nm表示主存完成存取的总次数,h定义为命中率,则有h = Nc /(Nc+Nm) 若tc表示命中时的cache访问时间,tm表示未命中时的主存访问时间,1-h表示未命中率,则cache/主存系统的平均访问时间ta为:ta=h * tc +(1-h) * tm,3.6 Cache存储器,推导过程:ta=h * tc +(1-h) * tmta = (tc*Nc + tm*Nm) / (Nc+Nm)= (Nc / (Nc+N

4、m) ) * tc +(Nm / (Nc+Nm) ) * tm= h * tc +(1-h) * tm,3.6 Cache存储器,我们追求的目标是,以较小的硬件代价使cache/主存系统的平均访问时间ta越接近tc越好。 设r=tm/tc表示主存慢于cache的倍率,e表示访问效率,则有e= tc / ta = tc /(h*tc+(1-h)*tm)=1/(h+(1-h)* r)=1/(r+(1-r)*h) 由表达式看出,为提高访问效率,命中率h越接近1越好,r值即tm/tc,以510为宜,不宜太大。 命中率h与程序的行为、cache的容量、组织方式、块的大小有关。,重要公式,例6. CPU执

5、行一段程序时,cache完成存取的次数为1900次,主存完成存取的次数为100次,已知cache存取周期为50ns,主存存取周期为250ns,求cache/主存系统的效率和平均访问时间。,例6解:,解: h=Nc/(Nc+Nm)=1900/(1900+100)=0.95 r=tm/tc=250ns/50ns=5 e=1/(r+(1-r)h)=1/(5+(1-5)0.95=83.3% ta=tc/e=50ns/0.833=60ns,3.6.2主存与Cache的地址映射,问题引入: 看样子映射过程很复杂,为什么要搞个映射的事情出来? 思考:CPU要取一个字,肯定要给出这个字所在内存的地址,然后将该

6、地址发往Cache,判断所要取的字是否在Cache中,在就取走,不在就去内存找。 有没有觉得哪里不对?,用内存地址去访问Cache存储器! 必须应用某种方法,把主存的地址定位到Cache中的确切地址地址映射 当cpu访问主存时,给出的内存地址可转变为cache地址 无论选择那种映射方式,都要把主存和cache划分为同样大小的“块”。 硬件实现,透明性,选择哪种映射方式,要考虑: 硬件是否容易实现 地址变换的速度是否快 Cache空间的利用率是否高 主存装入一块时,发生冲突的概率 以下我们介绍三种映射方法,3.6.2主存与Cache的地址映射,先明确一个简单的情况,0 1 2 3 4 5 6 7

7、,32 33 34 35 36 37 38 39,0 8 16 24 32 120,0 1 2 3 4 15,块编号所需位数:4位,块内字编号所需位数:3位,内存字编号所需位数:7位,127,存储单元,块,先明确一个简单的情况,当前知道了某个存储单元的地址35,怎样计算它所在的块编号? 因为8个存储单元一个块,所以 35 / 8 = 43 即35号存储单元位于第4块的第3号字,先明确一个简单的情况,000 010 100 110,32 33 34 35 36 37 38 39,0000 000 0001 000 0010 000 0011 000 0100 000 1111 000,0000

8、0001 0010 0011 0100 1111,127,存储单元,块地址4位,字地址3位,先明确一个简单的情况,当前知道了某个存储单元的地址 (0100011) 2 (即35号),怎样计算它所在的块编号? 因为(1000) 2个(即8个)存储单元一个块,所以 0100011 / 1000 = 0100011 即(0100011) 2号存储单元位于第(0100) 2块的第(011)2号字 所以,对于任一内存地址:,高4位:块号,低3位:字号,返回四体交叉存储器,一、全相联的映射方式,映射结构 映射方法(多对多) 主存内容可以拷贝到Cache任意行 地址变换 标记实际上构成了一个目录表。,2r行

9、,2s块,2w个:4个,XXXX XXXX,XX,一、全相联的映射方式,内存地址:,块号 块内地址,转换公式主存地址长度(s+w)位 块内寻址单元数2w个字 块大小行大小2w个字 主存的块数2s 标记大小块号的位数=s位 cache的行数: 不由地址格式确定,00000000,00000001,00000010,00000011,01011000,01011001,00000010,0101100101,0000001010,00000010,00000001,01011001,块地址(块号),一、全相联的映射方式,完整内存地址,11111111,一、全相联的映射方式,映射检索过程 1、将地址

10、分为两部分(块号和字),在内存块写入Cache时,同时写入块号标记; 2、CPU给出访问地址后,也将地址分为两部分(块号和字),比较电路块号与Cache 表中的标记进行比较,相同表示命中,访问相应单元;如果没有命中访问内存,CPU 直接访问内存,并将被访问内存的相对应块写入Cache。,一、全相联的映射方式,什么是相联存储器? 也叫关联存储器(associative memory) 、按内容访问存储器(content addressed memory) 或简称为TLB(Translation Lookaside Buffer) 它是一种不根据地址而是根据存储内容来进行存取的存储器,可以实现快速

11、地查找快表 写入信息时按顺序写入,不需要地址。读出时,要求中央处理单元给出一个相联关键字,用它和存储器中所有单元中的一部分信息进行比较,若它们相等,则将此单元中余下的信息读出。 这是实现存储器并行操作的一种有效途径,特别适合于信息的检索和更新。,一、全相联的映射方式,特点: 优点:冲突概率小,Cache的利用高。 缺点:比较电路实现成本高,需要一个访问速度很快代价高的相联存储器 应用场合: 适用于小容量的Cache看动画片,二、直接映射方式,1、映射方法(一对多)如: i= j mod m 主存第j块内容拷贝到Cache的i行 一般j和m都是2N级例cache容量16行,主存容量256块(块与

12、行容量相等),则块2,18,34242等都存放在cache的地址2内,如果第一次2在cache中,下次访问34内容,则不管cache其他位置的内容访问情况,都会引起2块内容的替换。,二、直接映射方式,映射结构,转换公式 主存地址长度(s+w)位 寻址单元数2s+w个字 块大小行大小2w个字 主存的块数2s cache的行数m2r 标记大小(s-r)位,二、直接映射方式,映射检索过程,00000000,00000001,00000010,00000011,01011000,01011001,01011011,01011010,0101111101,0000001011,01011,11001,0

13、1011,块号,蓝色:行号;绿色:字地址,Cache地址000,Cache地址010,Cache地址111,内存地址各段涵义分析:,tag, 标记,行号,Cache行地址,块内地址,字地址,内存地址,块地址,块号,二、直接映射方式,基本原理 利用行号选择相应行; 把行标记与CPU访问地址进行比较,相同表示命中,访问Cache; 如果没有命中,访问内存,并将相应块写入Cache,二、直接映射方式,特点 优点:比较电路少m倍线路,所以硬件实现简单,Cache地址为主存块地址的低若干位,不需变换。 缺点:冲突概率高(易抖动,频繁交换) 应用场合 适合大容量Cache,思考两种映射方式的优缺点,全相联

14、检索成本高 直接映射换出换入机制有缺陷能否折中?,三、组相联映射方式,前两者的组合 Cache分组,组间采用直接映射方式,组内采用全相联的映射方式 Cache分组U,组内容量V,即U组V行,映射方法(一对多) q= j mod u 主存第j块内容拷贝到Cache的q组中的某行 地址变换 设主存内块地址x,看是不是在cache中,先计算组号y= x mod u,则在y组中查找,三、组相联映射方式,分析:比全相联容易实现,冲突低 v=1,则为直接相联映射方式 u=1,则为全相联映射方式 v的取值一般比较小, 一般是2的幂,称之为v路组相联cache.,三、组相联映射方式,转换公式主存地址长度(s+

15、w)位 寻址单元数2s+w个字 块大小行大小2w个字 主存的块数2s 每组的行数v cache的行数uv组号的位数为d 2du (注意本行勘误) 标记大小(s-d)位,三、组相联映射方式,U组V行,三、组相联映射方式,00000000,00000001,00000010,00000011,01011000,01011001,11111111,01011010,010110 00 11,000000 10 01,00,10,11,000000,010110,000000,010110,块号,蓝色:组号;绿色:字地址,三、组相联映射方式,内存地址各段涵义分析:播放三种映射方式下的演示动画,tag

16、, 标记,组号,Cache组地址,块内地址, 字地址,内存地址,块地址,块号,三、组相联映射方式,特点 V路比较器较易实现 块在组中存放有一定灵活性,冲突较少 是全相联映射和直接映射方法的折衷 应用场合 因兼顾了二者优点又尽量避免了缺点,被普遍使用,行号,典型例题,主存,例9:有一个存储体系,主存容量1MB,字长1B,块大小16B,Cache容量64KB。若Cache采用全相联映射,对内存地址(F0010)H给出相应的标记和字号。,注意勘误:教材上该题目疏漏多,注意纠正。,解: 块大小=行大小=24字节 w=4 主存寻址单元数1M=220 S+w=20位,s=16位 主存的块数216 ,标记大

17、小s=16位 主存格式主存地址(F0010)16 =(1111 0000 0000 0001 0000)2 对应的标记=1111 0000 0000 0001 字号=0000,标记s,字号w,16位 4位,过渡段,终于说完了为什么要映射及怎样完成映射 有一个仍然未被解决的问题: CPU访问Cache未命中发生后,要把内存中的块放入Cache,多次放入导致cache满了怎么办? 需要新的块覆盖旧的块,即替换。 覆盖掉哪个块?依照什么策略替换?,3.6.3替换策略,LFU(最不经常使用,Least Frequently Used):被访问的行计数器增加1,换值小的行,不能反映近期cache的访问情

18、况, LRU(近期最少使用,Least Recently Used) :被访问的行计数器置0,其他的计数器增加1,换值大的行,符合cache的工作原理 随机替换:随机替换策略实际上是不要什么算法,从特定的行位置中随机地选取一行换出即可。这种策略在硬件上容易实现,且速度也比前两种策略快。缺点是随意换出的数据很可能马上又要使用,从而降低命中率和cache工作效率。但这个不足随着cache容量增大而减小。随机替换策略的功效只是稍逊于前两种策略。,3.6.3替换策略,例子:设cache有1、2、3、4共4个行,a、b、c、d等为主存中的块,访问顺序一次如下:a、b、c、d、b、b、c、c、d、d、a

19、,下次若要再访问e块。 问,采用LFU和LRU算法替换结果是不是相同?,3.6.4写操作策略,现在,弄明白了在Cache行满时,怎样实现新块替换旧块。 再思考: 前面讲cache的作用时多用的例子是cpu从内存读数据的情形 试想,如果是cpu要给内存写数据是什么情况?,3.6.4写操作策略,思考CPU写入内存时,cache命中的情况? 由于cache的内容只是主存部分内容的拷贝,它应当与主存内容保持一致。而CPU对cache的写入更改了cache的内容。如何与主存内容保持一致,可选用三种写操作策略。,3.6.4写操作策略,写回法:换出时,对行的修改位进行判断,决定是写回还是舍掉。 全写法:写命

20、中时,Cache与内存一起写 写一次法:与写回法一致,但是第一次Cache命中时采用全写法。,3.6.5 Pentium PC的Cache (略),1、主要包括四个部分: 取指/译码单元:顺序从L2cache中取程序指令,将它们译成一系列的微指令,并存入L1指令cache中。 乱序执行逻辑:依据数据相关性和资源可用性,调度微指令的执行,因而微指令可按不同于所取机器指令流的顺序被调度执行。 执行单元:它执行微指令,从L1数据cache中取所需数据,并在寄存器组中暂存运算结果。 存储器子系统:这部分包括L2cache、L3cache和系统总线。当L1、L2cache未命中时,使用系统总线访问主存。

21、系统总线还用于访问I/O资源。不同于所有先前Pentium模式和大多数处理器所采用的结构,Pentium 4的指令cache位于指令译码逻辑和执行部件之间。其设计理念是:Pentium 4将机器指令译成由微指令组成的简单RISC类指令,而使用简单定长的微指令可允许采用超标量流水线和调度技术,从而增强机器的性能。,3.6.5 Pentium PC的Cache,基本原理见下图,3.6.5 Pentium PC的Cache,2级cache结构 L2内容是主存的子集 L1内容是L2的子集 L1分成8K的指令cache和8K的数据cache 指令cache是单端口256位,只读 数据cache是双端口(每个32位),读写,采用2路组相联结构128组*2行/组*32字节/行=8KB字节,3.6.5 Pentium PC的Cache,存储器读写总线周期 256为猝发式传送 64位传送 数据一致性的保持 L1采用写一次法 L2采用写回法,3.6.7使用多级Cache减少缺失损失,自学,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报