计算机体系结构第8周第1节课授课教师:陈天洲课件下载主存存储层次4.3改进Cache/主存性能的技术4.4主存的组织方式4.5虚拟存储器4.6基于程序行为的优化技术4.7Alpha机的存储器层次结构5.1存储器层次结构的基本概念一、存储器性能参数容量:S=W×l×m表示,W为存储器字长,l为存储器字数,m则为存储器体数速度访问时间:从存储器接到读请求到所读的字传送到数据总线上的时间间隔存储周期:连续两次访问存储器之间所必需的最小时间间隔。存储带宽:存储器被连续访问时所提供的数据传输速率。价格:单位字节价格Thesmallerhardwareisfaster(cost/performancetradeoff)Typicalaccesstime(ns)$perMbytein1993SRAM8-35100-400DRAM90-12025-50DISK10,000,000-20,000,0001-2二、存储器层次结构概念的引入数据引用的局部性+高频事件高速处理—优先考虑最近常被访问的代码—最近可能被访问的数据放在高速存储器里—最近可能被访问的数据代码较少,小硬件速度更快—小的离CPU近的高速存储器存放最近要访问的数据—容量小、单位价格高、高功耗的存储器三、存储器层次结构的概念多级不同类型的存储器构成Mn,Mn-1,…,M1离CPU越近的容量越小,速度越快,价格越高第i级信息是第i-1级信息的子集(时间局部性),两级之间传输以块为单位(空间局部性)各级存储器借助软硬件构成一个整体,使该系统具有接近于第n级的速度,第1级的容量和单位价格。图存储器层次结构各级存储器的存储特性Cache主存CPUI/O设备存储器总线I/O总线寄存器容量:200B64KB32MB2KB速度:5ns10ns100ns5msTypicallevelsLevel1234CalledRegisterscacheMainmemoryDiskstorageTypicalsize1KB4MB4GB1GBImplementa-tiontech.CustommemoryWithmultipleports.CMOSorBiCMOSOn-chiporoff-chipMOS,SRAMCMOSDRAMMagneticdiskAccesstime(ns)2-53-1080-4005,000,000Bandwidth(MB/sec)4000-32,000800-5000400-20004-32ManagedbycompilerHardwareOperatingsystemOperatingsystem/userBackedbyCacheMainMemoryDiskTape四、基本概念块(block):相邻两级间的信息交换单位命中率H:CPU产生的有效地址可以直接在高层存储器中访问到的概率。失配率:1-H失配损失:用低层存储器中相应块替换高层存储器中的块,并将所访问的数据传送到请求访问的设备的时间。由访问时间和传送时间两部分组成。五、性能的定性评价命中率与硬件速度无关,而与应用程序的行为特性有关平均存储访问时间AMT=命中时间+失配率失配损(存储器等效访问时间)块大小与失配率、失配损失、平均存储访问时间之间的关系失效率与块大小之间的关系(1)当块大小过小时,失效率很高。随着块大小的增加,由于有效地利用了程序的空间局部性,失效率呈现下降趋势;(2)当高层存储器容量保持不变时,失效率有一最低限值,此时块大小的变化对失效率没有影响;(3)当块大小超过某定值后,(这一定值又称为污染点),失效率呈现随块大小增加而上升的趋势,这是由于在高层存储器容量不变的情况下,增加块大小使高层存储器中的块数减少,对利用程序的时间局部性不利:有用的信息(不久将再次被使用的信息)被大块中的无用信息替换出去,造成失效率上升。对CPUtime的影响不支持存储器层次结构的系统中,由于所有的存储访问都需要相同的时间,所以处理器的设计相对简单在存储器层次结构中对高层存储器的访问存在失效问题,这意味着CPU必须能够处理可变的存储访问时间采用中断检测所需信息是否在存储器层次结构的最高层存储器六、四大基本设计问题(结构参数)Cache如何设计、如何评价映象方式:相邻两级存储器中块的对应关系映象机构:映象方式的具体实现替换策略:发生失配而对应候选块又都是有效块,如何选择有效候选块将它淘汰出去写策略:写操作时采用什么策略保证两级存储器间的数据一致性。写操作失配时是否将访问块取入高层存储器4.2Cache/Memory存储器层次结构一、映象方式直接映象(directmapped):主存的一块只能对应Cache的一特定行。J=IMODm(主存块号)(Cache总块数)全关联映象(fullyassociative):主存中的一块能对应到Cache中的任意一行组关联映象(setassociative):主存中的一块能对应到Cache中一个特定组中的任意一行上。若组中有n个块,则称其为n路组关联。J(组号)=IMODG(Cache总组数)注意:直接映象和全关联映象是组关联的特例:直接:直接映象是:1路组关联全相联:全相联是:m路组关联二、映象机构:判定是否命中Cache,如何访问?标志存储器+数据存储器每行还有控制位:有效位、修改位(脏位)CPU地址组成:标志+索引+块内偏移关联程度越高,索引位越小三、替换策略随机替换策略(RAND)简单,易于实现一般用位随机,使有再现性,以利调试先进先出策略(FIFO)最近最少使用策略(LRU)利用局部性原理,但实现代价高替换策略对Cache失配率的影响(379/256)四、写策略直写(writethrough)—信息写入Cache的同时,经CPU与主存间的直接数据通路写入主存对应块。主存中总有数据的最新拷贝写的速度以访问主存(写)的速度进行,回写(writeback)—信息只写入Cache相应行,仅当被修改过的块被替换出Cache时,才将它送回主存。写访问总是以写Cache的速度进行。一个块内的多次写访问只需一次访问主存,降低存储带宽需求。WritethroughProcessorstoreCacheMemoryWritebackProcessorstoreCacheMemoryWriteentireblocktoMemoryonreplacement写失配时对是否要把要访问的数据送入Cache写分配(writeallocate):将要写的数据取入Cache,然后开始议论无写发配(nowriteallocate):直接对低层存储器写,不再将数据块装入Cache。写停顿延迟:在写低层存储器时CPU必须停下来等待。这段等待时间称为~设置写缓冲——减少写停顿延迟带来的损失直写的写缓冲回写的写缓冲:写合并技术WritethroughWritebackNowriteallocate*(后续的写仍然要写memory)AllocateblockonwritemissNowriteallocateWriteallocate*(后续的写可命中cache)*commonly-usedmode五、Cache实例字长8B8B*4字=块Cache容量:8KB8192=21332B/块直接映象直写,32B*4的写缓冲写失配时无写分配4-stepsofareadhit2LowerlevelmemoryWirtebuffer13CPUaddressDataDatainoutBlockBlockaddressoffset2185Tagindex256blocksValidTagData12064……=?4:1Mux4Step1.CPU送addressStep2.indexselection;tagreadStep3.TagcomparedStep4.senddatatoCPU写合并技术ifbuf空地址数据=bufelseif地址匹配:写合并elseifbuf满CPU等待else地址数据=buf空行独立指令/数据Cache避免流水线中的结构竞争指令数据的访问特性不同——针对性优化结构参数一致Cache与独立指令/数据Cache的性能比较(384/260)4-stepsofawrite-hit前三步同读前三步第4步写入writebuffer(4blockwith4wordseach),有两种形式nonwritemerging:4次顺序写占用4个连续entries,每个entry只占4Bwritemerging:4次顺序写占用一个bufferentry,4*4B=16B.OnareadmissCache送一stall信号给CPU,告诉CPU等待,从下一层memory里读出32B(1个block)送到Cache。Cache与memory之间总线宽度为16B,每次传送需5个时钟周期,则读32B,共需10个时钟周期。更换CacheBlock是按直接映象进行的,将Cache的block从data、address到Validbit都更换。OnawritemissCPUwrite“around”thedatatolower-levelmemory,withouteffectingtheCache,becausetheAlpha21064usethewritethroughcachewithnowriteallocate.六、Cache性能1、AMT=HITtime+失配率*失配损失(384/260)[例1]已知:指令数据混合失配率:0.64%6.47%2.87%命中时间=1CC失配损失=50CC混合时Load.store多花1CC指令访问:75%数据访问:25%失配率:75%*0.64%+25%*6.47%=2.1%AMTsplit=75%*(1+0.64%*50)+25%*(1+6.47*50)=2.05AMTunified=75%*(1+1.99%*50)+25%*(1+1+1.99%*50)=2.242、CPUtime=IC*(CPI+访存次数/指令*失配率*失配损失)*CC(386/261)[例](386/AlphaAXP)HT=2CC,M=2%,1.33次访问/指令CPUtime=IC*(2+1.33*2%*50)*CC=IC*3.33*CCCPUtime(withoutcache)=IC*(2.0+1.33*50)*CC=IC*68.5*CC注意:CPI越小,Cache失配损失所产生的影响越大时钟周期越短,Cache失配的影响越大3.Cache结构对CPU性能的影响(388/262)[例3]CPIideal=2CC,CC=2ns,1.3次访存/指令容量64KB,块大小32B,MP=70ns直接映象:M=1.4%二路组关联:M=1.0%CC2=1.1CCAMT1=2+1.4%*70=2.98nsAMT2=2*1.1+1.0%*70=2.9nsCPUtime1=IC*(2*2+1.3*1.4%*70)=5.27*ICCPUtime2=IC*(2*2*1.1+1.3*1.0%*70)=5.31*ICSizeInstr.Cache(75%)DataCache(25%)OverallmissrateUnifiedCache1KB3.06%24.61%13.34%2KB2.26%20.57%8.45%9.78%4KB1.78%15.94%6.84%7.24%8KB1.10%10.19%5.32%4.57%16KB0.64%6.47%3.37%2.87%32KB0.39%4.82%2.10%1.99%64KB0.15%3.77%1.50%1.35%128KB0.02%2.88%1.06%0.95%Missratesfordata/instruc