计算机组成原理2012lecture_第1页
计算机组成原理2012lecture_第2页
计算机组成原理2012lecture_第3页
计算机组成原理2012lecture_第4页
计算机组成原理2012lecture_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Lecture 10: Cache III1有效位(Valid Bit)通常为操作系统设置“cache冲刷”指令因此cache对操作系统程序员不是透明的!装入新块时 使V=1开机或复位时使V=0第一次被替换时使V=1通过使V=0冲刷Cache举例假定计算机系统有一个容量为32KB的主存,且有一个4KB的4路组相联Cache,主存和Cache之间的块的大小为64B。假定Cache单元0、1、4351中取一个Byte,开始为空,处理器顺序地从一共重复10次。设Cache比主存快10倍。采用LRU算法。试分析Cache的结构和主存地址的划分。说明采用Cache后速度提高了多少?答:主存按字节(B)编

2、址。主存:32KB=512块 x 64B / 块Cache:4KB=16组 x 4路 / 组 x 64 B / 路主存地址划分为:6544352/64=68,所以过程实际上是对前68块连续10次。标志位组号字节号举例第1 路第2 路第3 路第0 路16/0/6417/1/6518/2/6619/3/6720310/64/481/65/492/66/503/67/5141532/1633/1734/1835/19364748/3249/3350/3451/355263第0组第1组第2组第3组第4组第15组LRU算法:第一次循环,对于每一块只有第一字未命中,其余都命中;以后9次循环,有20块的第一

3、字未命中,其余都命中.所以,p为 (43520-68-9x20)/43520=99.43%m/(tc+(1-p)tm)=10/(1+10 x(1-p)=9.5倍速度提高:tm/写策略(Cache一致性问题)为何要保持在Cache和主存中数据的一致?因为Cache中的内容是主存块副本,当对Cache新时,就存在Cache和主存如何保持一致以下情况也会出现“Cache一致性问题”。当多个设备都允许主存时例如:I/O设备可直接读写内存时,如果Cache中的内容被修改,则I/O设备读出的对应主存单元的内容无效;若I/O设备修改了主存单元的内容,则Cache中对应的内容无效。当多个CPU都带有各自的Ca

4、che而共享主存时某个CPU修改了自身Cache中的内容,则对应的主存单元和其他CPU中对应的内容都变为无效。有两种情况写命中(Write Hit):要写的单元已经在Cache中写不命中(Write Miss):要写的单元不在Cache基本的Cache处理算法问问有题题么题:题问题?如什如果需题需频问么频繁怎写样,会会怎么样?么?怎样会有没有其他方法?写分配方式Write Policy: Write Through versus Write Back处理Cache读比Cache写更容易,故指令Cache比数据Cache容易设计对于写命中,有两种处理方式Write Through (通过式写、写

5、直达、直写)同时写Cache和主存单元What! How can this be? Memory is too slow(100Cycles)?10%的指令使CPI增加到:1.0+100 x10%=11使用写缓冲(Write Buffer)Write Back (写、写回、回写)在缺失时一次写回Cache块,每块有个修改位(“dirty bit-脏位”)大大降低主存带宽需求,控制可能很复杂对于写不命中,有两种处理方式 Write Allocate (写分配)直写Cache可用非写分配或写分配写回Cache通常用写分配为什么?将主存块装入Cache,然后更新相应单元试图利用空间局部性,但每次都要

6、从主存读一个块Not Write Allocate (非写分配)直接写主存单元,不装入主存块到CacheSKIPWrite ThroughWrite BufferMemory ControllerWrite Buffer在 Cache 和 Memory之间加一个Write BufferCPU: 同时写数据到Cache和Write BufferMemory controller(存控): 将缓冲内容写主存Write buffer (写缓冲) 是一个FIFO队列一般有4项在存数频率1 / DRAM write cycle(频繁写)时,使Write buffer 饱和(溢出),会发生阻塞DRAMCa

7、cheCPUWrite Buffer Saturation(写缓冲饱和)CPUDRAMWrite Buffer发生写缓冲饱和的可能性 CPU时钟周期 1/ DRAM写周期 (发生频繁写)如何解决写缓冲饱和? 加一个二级CacheCPUWrite Buffer 使用Write Back方式的CacheBACKDRAML2CacheCacheCache写策略(Cache一致性问题)问题1:以下描述的是哪种写策略?Write Through 、Write Allocate!问题2:如果用非写分配,则如何修改算法?BACK写策略2:Write Back算法问题:以下算法描述的是哪种写策略?Write

8、Back 、Write Allocate!写策略2:Write Back中的修改(“脏”)位BACKCache大小、Block大小和缺失率的关系Cache大小:Cache越大,Miss率越低,但成本越高!Block大小:Block大小与Cache大小有关,且不能太大,也不能太小!Cache性能由缺失率确定,而缺失率与Cache大小、Block大小、Cache级数等有关Block Size Tradeoff (块大小的选择)块大能很好利用 spatial locality, BUT: 块大,则需花时间读块,缺失损失变大 块大,则Cache行数变少,缺失率上升Average Acs Time:=

9、Hit Time x (1 - Miss Rate)+Miss Penalty x Miss RateAverageMiss PenaltyMiss RateAc TimesExploits Spatial LocalityFewer blocks: compromises temporal localityIncreased Miss Penalty & Miss RateBlock SizeBlock SizeBlock Size所以,块大小必须适中!系统中的Cache数目刚引入Cache时只有一个Cache。近年来多Cache系统成为主流多Cache系统中,需考虑两个方面:单级/多级?片

10、内(On-chip)Cache: 将Cache和CPU作在一个上外部(Off-chip)Cache:不做在CPU内而是独立设置一个Cache单级Cache:只用一个片内Cache多级Cache:同时使用L1 Cache和L2 Cache,有些高端系统甚至有L3 Cache,L1 Cache更靠近CPU,其速度比L2快,其容量比L2大2 联合/分立?分立:指数据和指令分开存放在各自的数据和指令Cache中一般L1 Cache都是分立Cache,为什么?L1 Cache中时间比更重要!为什么?联合:指数据和指令都放在一个Cache一般L2 Cache都是联合Cache,为什么?L2 Cache中率

11、比命中时间更重要!为什么?因为缺失时需从主存取数,并要送L1和L2cache,损失大!多核处理器中的多级Cache多级cache的性能采用L2 Cache的系统,其缺失损失的计算如下:若L2 Cache包含所请求信息,则缺失损失为L2 Cache时间主存,并取到L1 Cache和L2 Cache(缺失损失更大)否则例子:某处理器在无cache缺失时CPI为1,时钟频率为5GHz。假定访问一次主存的时间(包括所有的缺失处理)为100ns,平均每条指令在L1 Cache中的缺失率为2%。若增加一个L2 Cache,其时间为5ns,而且容量足够大到使全局缺失率减为0.5%,问处理器执行指令的速度提高

12、了多少?解:如果只有一级Cache,则缺失只有一种。即L1缺失(需主存),其缺失损失为:100nsx5GHz=500个时钟,CPI=1+500 x2%=11.0。如果有二级Cache,则有两种缺失:L1缺失(需L2 Cache):5nsx5GHz=25个时钟L1和L2都缺失(需主存):500个时钟因此,CPI=1+25x2%+500 x0.5%=4.0二者的性能比为11.0/4.0=2.8倍!Cache性能评估与改善CPU时间:CPU执行时间 + 等待内存时间。即:CPU时间=(CPU时钟数+Cache缺失引起阻塞的时钟数) X 时钟周期Cache缺失引起阻塞的时钟数=读操作阻塞时钟数+写操作

13、阻塞时钟数读操作阻塞时钟数=(读的次数 / 程序) x 读缺失率 x 读缺失损失写操作的情况较复杂:回写(write back):替换时,需要回写一个块,故会产生一些附加回写阻塞写操作阻塞时钟数=(写次数/ 程序) x 写缺失率 x 写缺失损失+回写阻塞直写(write through):包括写缺失和write buffer阻塞两部分写操作阻塞时钟数=(写次数/ 程序) x 写缺失率 x 写缺失损失+写缓冲阻塞假定回写阻塞或写缓冲阻塞可以忽略不计,则可将读和写综合考虑:内存阻塞时钟数=(访存次数 / 程序) x 缺失率 x 缺失损失内存阻塞时钟数=(指令条数 / 程序) x (缺失数/ 指令)

14、 x缺失损失举例: 缺失带来的损失到底多大?设代码Cache缺失率为2%,数据Cache缺失率为4%。假定一个CPU在没有任何SPEC2000衡量,则使用无缺失Cache时CPU速度会快多少?分析过程如下:指令的缺失时钟数为:Ix2%x100=2.0 xISPEC2000的访存指令(Load和Store)频度为:36%,所以数据的缺失时钟数为:Ix36%x4%x100=1.44xI指令和数据总的缺失时钟数为:2xI+1.44xI=3.44I,也即:平均每条指令要有3.44个时钟处在器阻塞状态器阻塞而使得CPI数增大到2+3.44=5.44. 故:因此,因为IxCPIstallxClock cy

15、cleCPU time with stalls5.44=IxCPIperfectxClock cycleCPU time with perfect cache2如果Cache不发生缺失,则CPU速度会快2.72倍。阻塞时CPI为2,缺失损失为100个时钟。如果用举例:处理器速度提高而器不变时的情况例1:假定上例中CPI减为1,时钟宽度不变,则:器阻塞而使得CPI数增大到1+3.44=4.44. 故:因为IxCPIstallxClock cycleCPU time with stalls4.44=IxCPIperfectxClock cycleCPU time with perfect cach

16、e1由此可知:器阻塞所花时间占整个执行时间的比例从:3.44 / 5.44=63% 上升到 3.44 / 4.44=77%结论:CPI越小,Cache阻塞的影响越大举例:处理器速度提高而器不变时的情况例2:假定上例中时钟频率加倍, CPI不变,则:主存速度不会改变,故绝对时间不变,所以缺失损失为200个时钟。每条指令发生的总缺失时钟数为2%x200+36%x(4%x200)=6.88器阻塞使得CPI数增大到2+6.88=8.88故: IxCPIslow xClock cycleIxCPIfast xClock cycle/25.44时钟快的机器的性能时钟慢的机器的性能=1.23=8.88/2由

17、此可知:时钟快的机器的性能只是较慢时钟机器的1.2倍。如果没有Cache缺失的话,应该是2倍!结论:CPU时钟频率越高,Cache缺失损失就越大上述两个例子说明:处理器性能越高,高速缓存的性能就越重要!设计支持Cache的器系统指令执行若发生Cache缺失,必须到DRAM中取数据或指令在DRAM和Cache之间传输的是Block器组织使得Block传输最快(缺失损失最小)?问题:怎样的假定器过程:CPU发送地址到内存:1个总线时钟内存的初始化时间:10个总线时钟从总线上传送一个字:1个总线时钟可以有三种不同的组织形式!假定一个Block有4个字,则缺失损失各为多少时钟?MMCPU支持Cache

18、的器系统假定器过程:CPU发送地址到内存:1个总线时钟时间:10个总线时钟内存从总线上传送一个字:1个总线时钟4x(1+10+1)=48缺失损失为48个时钟周期代价小,但速度慢!假定器过程:CPU发送地址到内存:1个总线时钟时间:10个总线时钟内存从总线上传送一个Block:1个总线时钟Two-word: 2x(1+10+1)=24Four-word: 1+10+1=12缺失损失各为24或12个时钟周期速度快,但代价大!假定器过程:CPU发送地址到内存:1个总线时钟时间:10个总线时钟内存从总线上传送一个字:1个总线时钟erleaved four bsord: 1+1x10+4x1=15缺失损

19、失为15个时钟周期代价小,而且速度快!复习:SPARCsion 20s Memory Module512 cols8 bitsbitsMemory Bus512 8 SRAMbits行缓冲交叉编址方式!Cache行读从内存读一块连续数据区。只要给定一个首地址,后续数据连续读出,称为突(猝)发传输方式。512 rows512 8 SRAMOne pageDRAM Chip 0256K x 8= 2 MbDRAM Chip 15256K x 8= 2 Mb28MB的DRAM复器交叉编址方式!8个同时读出!若再构成多个模块,则可轮流启动每个模块进行读写!地址Abits 56-63bits 48-55

20、bits 40-47bits 32-39bits 24-31bits 16-23bits 8-15bits 0-7控制器: 行、列地址为(i,j)的8个单元容量:16MB=4096X4096X8位64-bit 双字6356 5548 4740 3932 3124 23 16 158 70主器地址 A 处的64-bit数据(行地址i, 列地址j)DRAM 0DRAM 74096行实例:奔腾机的Cache组织主存:4GB=220 x 27块x 25B/块Cache:8KB=128组x2行/组替换算法:LRU,每组一位LRU位。该位为0,下次淘汰第0路;该位为1,下次淘汰第1路。写策略:默认为Write Back,可动态设置为Write Through。 Cache一致性:支持MESI协议实例:内置FastMATH处理器是MIPS结构的微处理器Memory Address31各Cache有:0Byte256(16K

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论