存储器分层体体系结构.ppt
计算机组成与系统结构,Computer Organization And Systems Architecture,教师:张建,办公室:主楼B1-707,引言,冯若依曼(Von Nouma)美籍匈牙利数学家 1903 1957,存储程序概念,要运行的程序必须先调入内存,然后再执行。,程序,Memory,CPU,7.1 存储器概述,存储器的分类,磁表面存储器:,容量、转速,例:200GB 7200转/分,3.闪存-Flash Memory,光盘存储器:,1.CD-ROM:只读性光盘,2.WORM:写入式(只能写一次),3.CD-RW:可擦/写光盘,DVD-Digital Versatile Disc 4.7GB,VCD-Video Compact Disc 700MB,7.1 存储器概述,存储器存取方式,可按地址随机地访问任一存储单元,随机存取存储器(RAM),访问时间与访问地址无关,顺序存取存储器(SAM),必须按顺序访问,例如:磁带。,速度慢,现在已Out了。,7.1 存储器概述,直接存取储器(DAM),7.1 存储器概述,第1步:直接选取该区域,第2步:该区域内顺序存取,按可更改性分类,7.1 存储器概述,只读存储器(ROM),读/写存储器,最初的信息是如何写入的呢?,按功能分类,7.1 存储器概述,高速缓冲存储器主存储器辅助存储器海量后备存储器,主存储器基本框图,地址寄存器,地址译码,读写控制电路,地址线,读写控制信号,数据线,存储器的主要性能指标,存储容量,单位:Byte、KB、MB、GB,存取周期,CPU连续访存中平均一次存取操作所需的时间。,7.1.3 存储器的主要性能指标,存储器的带宽,单位时间内传输的最大数据率,字节/秒,7.1.4 存储器的层次化结构,CPU,主存储器,冯若依曼计算机体系结构,辅助存储器,解决大容量低成本矛盾,Cache,解决CPU与主存与速度不匹配的矛盾,7.2.4 半导体随机存取存储器,1,0,六管静态MOS管存储单元,1,1,1,0,假设要将“1”存储在该单元中,7.2.4 半导体随机存取存储器,静态RAM的组成,7.2.4 半导体随机存取存储器,(1)无需进行数据的刷新,外围电路简单。,(2)速度快。,(3)管数较多,成本高。,(4)功耗大,双稳态触以器中始终有一个MOS管导通。,静态存储器(SRAM)的特点:,7.2.4 半导体随机存取存储器,静态RAM芯片举例,7.2.4 半导体随机存取存储器,6264引脚功能说明:,A12A0:地址线,D7D0:数据线,NC:未使用,7.2.4 半导体随机存取存储器,动态存储器DRAM,假设要将“1”存储在该单元中,7.2.4 半导体随机存取存储器,从存储单元中读出数据,1/0,7.2.4 半导体随机存取存储器,从动态存储器的工作原理可知:,集成度高,功耗低,位成本低。,由于电容存存漏电现象,需周期刷新。,是破坏性读出,需读后重写。,7.3.2 存储器芯片的扩展,当单个存储芯片的容量不能满足系统要求时,需多片组合起来以扩展字长(位扩展)或字数(字扩展)或字位全扩展。,位扩展,在位数方向扩展(加大字长),使芯片的位数与系统要求位数相一致的。,7.3.2 存储器芯片的扩展,当单个存储芯片的容量不能满足系统要求时,需多片组合起来以扩展字长(位扩展)或字数(字扩展)或字位全扩展。,位扩展,在位数方向扩展(加大字长),使芯片的位数与系统要求位数相一致的。,7.3.2 存储器芯片的扩展,字扩展,译码电路,7.4 半导体只读存储器和Flash存储器,半导体只读存储器,掩膜只读存储器可编程只读存储器可擦除可编程只读存储器电擦除电改写只读存储器,半导体Flash存储器,7.5 并存储器结构技术,译码电路,连续编址方式,7.5 并存储器结构技术,译码电路,交叉编址方式,7.6 高速缓冲存储器,存储器向处理器提供指令和数据,但问题是:存储器太小、太慢?,时间局部性,如果某个数据被访问,那么很快它有可能再次被访问。,空间局部性,如果某个数据被访问,那么与它邻近的数据有可能很快被访问。,Really?别骗我!,局部性原理,Cache的基本原理,DRAM的发展趋势,容量:4倍/3年,速度:2倍/10年,Cache的基本原理,CPU与Memory的速度差,1,10,100,1000,1980,1981,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000,CPU,1982,增长:50%/年,性能,“Moores Law”,DRAM,Cache的基本工作原理,问题:存储器太小、太慢,办法:存储器系统分层结构,控制器,数据 路径,存储器(内存)(DRAM),处理器,寄存器,L1Cache(SRAM),L2Cache(SRAM),外存(硬盘),处理器,数据行或块,Cache的基本工作原理,术语,命中率,在高层存储器中找到访问数据的比例。,缺失率,在高层存储器中没有找到访问数据的比例。,缺失率=1 命中率,术语,命中时间,访问高层存储器所需的时间。,缺失代价,将数据块从低层搬到高层存储器并送到处理器所需的时间。,判断时间+数据传送时间,当前计算机的存储器结构,SystemController,L1 Cache,Main Memory(DRAM),GraphicsProcessor,(I/O Bus),L2 Cache,Processor,Cache的原理,主存,插入到CPU与主存间,由快速SRAM实现,存储程序的部分,指令,数据,操作:,命中(在Cache中),未命中(不在Cache中),例题:,例7.2,(1)Cache的命中率?,访存次数:,未命中次数:,命中率:,例题:,例7.2,(2)CPU的平均访存时间?,实现Cache的4个关键问题,1:数据块放在Cache的什么地方?,2:如何在Cache中找到所需的数据块?,3:Cache未命中时如何转换数据块?,4:写数据时如何写?,A.只写Cache?,B.只写Memory?,C.同时时写Cache和Memory?,D.其它?,基本的Cache设计-直接映射,主存中每一个页只能映射到某一固定的Cache页中,直接映射有如下函数关系:,K=j mod,K:Cache的页号,j:主存的页号,n:Cache页号的位数,Cache中的页数=2n,Cache中的页数,假定:,主存的容量为1MB,每页大小512B,分为2048页;,Cache的容量为8KB,每页大小512B,分为16页;,二者必须相等,基本的Cache设计-直接映射,组号,第0页,7位,Cache,组号,第1页,组号,第15页,0组,1组,127组,主存,组号,组内页号,页内地址,XX,YY,ZZ,7,4,9,定位Cache页,读取组号,相等吗?,据此判断内存目标页是否在Cache中,基本的Cache设计-直接映射,内存地址结构的设计,组号,组内页号,数据页(512B),4位,7位,主存的容量为1MB,每页大小512B,分为2048页,9位,基本的Cache设计-直接映射,Cache地址结构的设计,Cache的容量为8KB,每页大小512B,分为16页,标记位,有效位,数据页(512B),1位,7位,必须与主存页大小相同,基本的Cache设计-直接映射,数据是否已存入标记,0000101,0010111,0100100,1110101,0,1,1,1,0000101,010,XXXXXXXXX,0,9 8,12 11,19,V,Tag,Data,=,DATA,HIT,基本的Cache设计-直接映射,特点:,硬件实现容易;,Cache利用率低;,基本的Cache设计-直接映射,举例,假设一个直接映射的Cache,有16KB数据,块大小4个字,地址32位,那么Cache总共有多少位?(即Cache的大小),参考答案:,MIPS中:32位/字=4字节/字,块大小:4字/块=16字节/块=128位/块,16KB分为:16K16=1K=1024(块),举例,数据块0,128bit,有效位,1bit,标记位,18bit,数据块1,有效位,标记位,数据块1023,有效位,标记位,1024,举例,对于前面例子,若内存地址分别为100005和0 x100005的字节将分别映到Cache的哪一块?,参考答案:,对于内存地址100005,该内存地址位于第?块,6249块?6250块?6251块?,6250块,举例,参考答案:,对于内存地址0 x100005,0101,0000,0000,0000,0000,0001,二进制,基本的Cache设计-全相联映射,主存中每一个页可映射到任意一个Cache页中。,Cache,Memory,基本的Cache设计-全相联映射,地址结构设计,主存的容量为1MB,每页大小512B,分为2048页,Cache的容量为8KB,每页大小512B,分为16页,标记位,有效位,数据页(512B),1位,11位,标记位,数据页(512B),11位,9位,判断是否在Cache中,基本的Cache设计-全相联映射,特点:,Cache标记太长,判断时间太长,硬件复杂,Cache利用率高,n路组相联映射,假设:,主存:32位地址线,Cache大小:256KB,块大小:4KB,n:4,即4路组组相联映射,基本的Cache设计-组组相联映射,组组相联映射-Cache 的设置,15组,组的大小=44=16KB,Cache的组数=25616=16,最后组是15组,组组相联映射-主存(Memory)的设置,Block 0,Block 1,Block15,65535组,组的大小=164=64KB,主存的组数=23221064=65536,最后组是65535组,组组相联映射-Cache-Memory)的映射关系,Block 0,Block 1,Block 15,Block 0,Block 1,Block 15,Block 0,Block 1,Block 15,Tag,Block 0,Tag,Block 1,Tag,Block 2,Tag,Block 3,Tag,Block 0,Tag,Block 1,Tag,Block 2,Tag,Block 3,Tag,Block 0,Tag,Block 1,Tag,Block 2,Tag,Block 3,0组,1组,15组,0组,1组,65535组,Cache,Memory,组组相联映射-主存(Memory)地址,12 bits,组内块号:015,16 bits,组号:065535,4 bits,块内寻址:块大小4K,31,0,11,12,15,16,组组相联映射-Cache 的标志(Tag),1 bit,16 bits,有效位,Tag,数据块,Data,内存中的组号,在Cache中查找一个块,4路相联Cache,Cache的缺失与关联度,Cache:Size=64KB,Block size=16 words,10个SPEC2000测试程序的结果,标记位大小与组组相联,假设一个Cache:,有4K个块,块大小为4个字,主存地址为32位,计算:,直接映射、两路组相联、四路组相联和全相联映射时,Cache的总组数及总的标记位数?,标记位大小与组组相联,1.直接映射,Cache的1个块就是1个组,Cache的总组数:4K=212,块大小4个字,即16=24个字节,故需要4位地址表示。,标记位大小与组组相联,2.两路组映射,Cache的2个块为1个组,标记位大小与组组相联,3.四路组映射,Cache的4个块为1个组,标记位大小与组组相联,5.全相联映射,Cache只有一个4K的块组,主存(Memory)地址,12 bits,组内块号:015,16 bits,组号:065535,4 bits,块内寻址:块大小4K,31,0,11,12,15,16,Cache 的标志(Tag),1 bit,16 bits,有效位,Tag,数据块,Data,内存中的组号,问题解答(1):,1.首先计算该地址在主存的块号:n,该地址所在的块号是:,2.分析块号n在主存中的组号及组内序号,在主存中的组号:101AH,组内序号:1H,(每组有16个块),问题解答(2):,3.存入Cache后所对应的块,映射到Cache的第1组,即:,块在主存中组内序号为1H,4.对应Cache的Tag是:101AH,Cache块号为:47 中的某一块,存入Cache 后的情况,有效位,Tag,Data,1组,4#块,0#块,7#块,63#块,Cache,缺失率与块大小,缺失率与块大小,Cache块较大时,一 旦缺失,带来的延时和开销是比较大的。,提前重启(early restart),当块中所需字一旦返回就马上执行,而不需要等待整个块都传过来再执行。,该技术用于指令访问,效果较好,因为指令通常是连续的。,该技术用于数据Cache效率要低一些,因为请求的数据其分布无法预知。,缺失率与块大小,请求字优先/关键字优先,缺失时,先将请求字从存储器传输到Cache中,然后再传输该块的剩余部分,之后再从块的开始部分传输。,该技术的延时性能比提前重启要好一些。,Cache的缺失处理,指令Cache缺失的处理步骤,将PC 4送到存储器中,通知主存执行读操作,并等待主存访问完成,写Cache项,并设置Cache相关标志,重新取指令,此时指令在Cache中,写操作处理,Write-through(写直达/通写),当需要写数据时(执行Store指令),将数据同时写入Cache和主存中。,优点:,Cache和主存的内容保持一致。,缺点:,耗时长,效率低。,写操作处理,写缺失,当要写的数据不在Cache中时,发生写缺失。,1.将主存中的数据块读到Cache;,2.将要写的数据写到Cache和主存中;,为什么不直接写到Cache和主存?,写操作处理,写直达方法简单,但效率低下,例如,10%的指令是store,没有Cache失缺的情况下,CPI为1.0,每次写操作要额外花费100个周期,此时CPI为:,CPI-ClockcyclePerInstruction,写操作处理,写缓冲(Write buffer),当有数据需要写入主存时:,将数据写入Cache和写缓冲区(write buffer)后,处理器继续执行;当写主存操作完成后,写缓冲区里的数据被释放;若写缓冲区满,则处理器必须等待一个写操作完成后(释放一个空位)才能将数据写入写缓冲区。,写操作处理,写回机制(Write back 回写),当有数据需要写入主存时:,先将数据写入Cache,并作已修改标记;,当被修改的Cache块被替换时才将Cache的内容写回主存;,精解,写缺失时的策略,写直达/通写(write through),1.写分配策略(write allocate),2.写不分配策略(no write allocate),写回机制/回写(write back),设计支持Cache的存储系统,主存是由DRAM构成,数据宽度固定,通过总线(Bus)与处理器连接,总线频率比处理要慢很多,假设:,地址(address)传输需要1个总线周期,存储器存储需要15个总线周期,数据(data)传输需要1个总线周期,设计支持Cache的存储系统,如果一个Cache块有4个字,DRAM的宽度为1个字:,缺失代价:,每个总线周期传输的字节数:,1个字存储器带宽,处理器,Cache,主存,Bus,1个字,缺失代价:,每个总线周期传输的字节数:,增加存储器带宽2个字宽度,缺失代价:,每个总线周期传输的字节数:,增加存储器带宽4个字宽度,交叉存储组织,缺失代价:,每个总线周期传输的字节数:,问题:,这样可能会更好!,存储器的最新发展,双倍速率动态随机存储器,Double Data Rate DRAM,基本原理:,在时钟的上升沿和下降沿各传输一次数据。,小结,Cache块越大,则Cache的命中率越高,效率也高,但缺失代价也越大。,为避免性能损失,增加主存带宽,增加存储器位宽,交叉存取,小测验,在Cache设计时,下面哪些指导思想是正确的?,A.存储器延时越短,cache块小,B.存储器延时越短,cache块大,C.存储器带宽越高,cache块小,D.存储器带宽越高,cache块大,Cache中主存块的替换算法,Cache中主存块的替换算法,3.最不经常用算法,4.随机替换算法,您的消息是什么?,POWERPOINT 2010,