1、第五章 存储器层次结构,CPU回顾:,第五章 存储器层次结构,5.1 引言,一. 存储器的两大功能:1、 存储(写入Write)2、 取出(读出Read) 二. 三个主要性能指标:1、容量 2、速度 3、价格,5.1 引言,三.存储器分类 (1)内存(Memory) 主要存放CPU当前使用的程序和数据,(2)辅存,(外存),存放大量的后备程序和数据。,速度较慢,容量大,(3)高速缓存(Cache),存放CPU在当前一小段时间内 多次使用的程序和数据。,速度很快,容量小,速度快,容量有限,5.1 引言,四.提高存储性能的基本思路:利用局部性原理构建存储器层次结构 局部性原理 时间局部性:如果某个
2、数据项被访问,那么在不久的将来它可能再次被访问。 空间局部性:如果某个数据项被访问,与它地址相邻的数据项可能很快也被访问。 存储器层次结构一种由多存储器层次组成的结构,存储器容量和访问时间随着离处理器距离的增加而增加。,5.1 引言,存储器层次的基本结构,5.1 引言,三级存储体系结构高速缓存 内存 外存 内存-外存层次 目的:增大容量 构成虚拟存储器 Cache-内存层次 目的:提高速度 构成主存储器,命中,不命中,5.1 引言,相关概念: 命中率:在高层存储器中找到目标数据的存储访问比例。 缺失率(失效率):在高层存储器中没有找到目标数据的存储访问比例。 命中时间:访问高层存储器所需要的时
3、间,包括判断是否命中所需时间。 缺失代价(开销):将相应的块从低层存储器替换到高层存储器所需的时间。 平均访存时间(AMAT)AMAT=命中时间+缺失率 x 缺失代价,5.2 存储器技术,一. SRAM(Static RAM)技术 利用双稳态触发器存储信息 每个基本存储单元由6-8个晶体管组成,5.2 存储器技术,一. SRAM(Static RAM)技术 组织成存储阵列结构,采用随机存取方式,因此对任何数据访问时间都是固定的。 速度快 只需最小功率即可保持电荷,无需刷新 价格贵 主要用于二级Cache,5.2 存储器技术,二. DRAM(Dynamic RAM)技术 依靠电容存储电荷的原理存
4、储信息 写 字线(wordline)设为高电平,设置位线(bitline)为高(写“1”),或为低(写“0”) 读 位线先预充电(在高低电平之间),字线设为高电平,Sense Amp根据位线电位的变化,读1/0。,5.2 存储器技术,二. DRAM(Dynamic RAM)技术 DRAM 逻辑组织(64 Mibit),5.2 存储器技术,二. DRAM(Dynamic RAM)技术 速度低于SRAM 价格低于SRAM 需要刷新 DRAM是依靠电容上存储电荷来暂存信息。平时无电源供电,时间一长电容上存储的电荷会逐渐泄露。需定期向电容补充电荷,以保持信息不变,即为刷新。 按行刷新 用作内存,5.2
5、 存储器技术,三. 闪存 是一种电可擦除可编程只读存储器(EEPROM) 具有非易失性,可以在线擦除和重写 集成度高、高可靠性、抗振动 单位价格在DRAM和磁盘之间,5.2 存储器技术,四. 磁盘存储器 利用磁层上不同方向的磁化区域表示信息。 容量大,记录信息可以长期保存,具有非易失性。 非破坏性读出,记录介质可以重复使用 顺序存取方式,速度慢,5.3 数据校验方法,数据校验的实现原理:数据校验码是在合法的数据编码之间,加进一些额外的编码,使合法的数据编码出现错误时成为非法编码。这样就可以通过检测编码的合法性达到发现错误的目的。 码距(汉明距离):码距指任何一种编码的任两组二进制代码中,其对应
6、位置的代码最少有几个二进制位不相同。,5.3 数据校验方法,一. 奇偶校验 1)奇偶校验码:它是在被传送的n位信息组上, 加上一个二进制位作为校验位,使配置后的n+1位二进制代码中1的个数为奇数( 奇校验)或偶数(偶校验)。 例:数据 奇校验编码 偶校验编码00000000 000000001 00000000001110101 011101010 011101011其中,最后一位为校验位,其余八位为数据位。 2)码距=?,2,5.3 数据校验方法,3)奇偶校验逻辑主要采用异或门实现校验码的生成和检错。,偶数个1,0:正确,0,0,奇数个1,1,1:错误,能发现奇数个错,不能发现偶数个错。 能
7、发现一位出错,但不能判断出错位数,因此不能纠错。,5.3 数据校验方法,二. 海明(汉明)校验(SEC/DED)海明校验实质上是一种多重奇偶校验,即将代码按一定规律组织为若干小组,分组进行奇偶校验,各组的检错信息组成一个指误字,不仅能检测是否出错,而且在只有1位出错的情况下指出是哪1位出错,从而将该位自动变反纠正。 设校验码为N位,其中有效信息为k位,校验位为r位,分成r组作奇偶校验,产生r位检错信息。这r位检错信息构成一个指误字,可指出2r种状态,其中一种状态表示无错,剩下的2r 1种状态可指出2r 1位中某位出错。所以 N = k + r = 2r 1 例: k = 4,则N = 4 +
8、r = 2r 1 ,所以r = 3,即4位有效信息加3位校验位。,5.3 数据校验方法,N = k + r = 2 r 1 有效信息位数与校验位位数的关系,分组原则海明码中,位号数(1,2,3,n)中为2的权值 的那些位(1(20),2 (21) ,4 (22) , 2r-1 ), 作为校验位,记作P1,P2,Pr,余下的作为有效信息位。,5.3 数据校验方法,例:N=11,k=7 , r=4的海明码位数为:,X为有效信息,海明码的每一位都被P1,P2,Pr中的一至若干位所校验。,规律:第i个校验位负责校验 位号数的二进制形式从右起第i位为1的数位,如:P1校验第 1(0001)、3(0011
9、)、5(0101)、7(0111)、9(1001)、11(1011)位。 P3校验第 4(0100)、5( 0101)、6(0110)、7(0111)位。,5.3 数据校验方法,归纳得下表:每个校验位所校验的位数,5.3 数据校验方法,例: N=7,k=4 , r=3。4位有效信息为A1 A2 A3 A4=1010。 解:1)分组,设校验位,偶校验,1 0 1 0, ,1,1 0 1 1 1 1 0,1,0, ,0,1, ,1,G3G2G1=101,P1 P2 A1 P3 A2 A3 A4,G3G2G1=000,G3 = G2 = G1 =,5.3 数据校验方法,2)编码如下:1011010
10、3)查错和纠错看指误字G3G2G1=?,如果为0,则正确,如果不为0, 则其值就是出错的位号。G1=P1 A1 A2 A4G2=P2 A1 A3 A4G3=P3 A2 A3 A4 码距 = 3,练 习,求1011的海明校验码,采用偶校验。,解:因为k=4,则设r=3,组成7位校验码:,第一组:P1 101,形成偶校验码:P1=0,第二组:P2 111,形成偶校验码:P2=1,第三组:P3 011,形成偶校验码:P3=0,所以最后形成的海明校验码为:0110011,该方法只能进行一位的查错和纠错。 怎样做到纠正1位错并检测2位错? 改进方法: 增加一位奇偶校验码,对整个字进行校验。其中,H=G3
11、G2G1,整字校验结果为G4。会出现以下四种情况: 1) H为0并且G4 为偶,表示没有错误发生 2) H为非0并且G4 为奇,表示出现了一位可纠正错误 3) H为0并且G4 为奇,表示P4出错 4) H为非0并且G4 为偶,表示出现了两位错,5.3 数据校验方法,三. 循环校验码CRC循环冗余校验码CRC是磁表面存储器、网络通信等串行通信中广泛使用的校验方法。一般是在k位有效信息后拼接r位校验码。 校验规则:让校验码能为某一约定代码除尽;如果除得尽,表明代码正确;如果除不尽,余数将指明出错位所在位置。,5.3 数据校验方法,1. 模2运算模2运算是指以按位模2相加为基础的四则运算,运算时不考
12、虑进位和借位。 1)模2加减:即按位加,可用异或逻辑实现。模2加与模2减的结果相同,即0 + 0 = 0,0 + 1 = 1,1 + 0 = 1,1 + 1 = 0。,5.3 数据校验方法,2)模2乘:按模2加求部分积 例: 1010 X 101101000001010 100010 3)模2除: 按模2减求部分余数,每求一位商使部分余数少一位。,5.3 数据校验方法,上商的原则是: 当部分余数的首位为1时,商1; 当部分余数的首位为0时,商0; 当部分余数的位数小于除数的位数时,该余数即为最后余数。,5.3 数据校验方法,2. 编码将有效信息视为数字,用多项式描述,定义有效信息为 M(x),
13、约定的除数为G(x),用来产生余数,G(x)又叫生成多项式,余数为R(x),就是校验位。如:有效信息 1011 M(x) = x3+x+1 1)将M(x )左移r位,变成M(x). xr,右边空出r位,以 便拼接r位校验信息。即:信息码: k位左移r位: k位 r位,5.3 数据校验方法,2)用r+1位的生成多项式G(x)对M(x). Xr 作模2除,得到商Q(x)和余数R(x)。所以M(x). Xr = Q(x). G(x)+ R(x) 3) 上式即: M(x). Xr - R(x)= Q(x). G(x)M(x). Xr + R(x)= Q(x). G(x) /模2时加和减效果一样。因为
14、M(x). Xr 的后 r位 是0,所以上式就是将M(x)左移r位后与 R(x)相拼接,从而形成循环冗余校验码。 4)在实际应用中,通常把R(x)称为校验码,记CRC,5.3 数据校验方法,例:将4位有效信息1100编成循环冗余校验码,生成多项式为x3+x+1。 解:M(x)= x3+x2 即:1100G(x) = x3+x+1 即:1011 ,所以:r=3M(x). xr = x6+x5 即:1100000所以:,M(x). Xr _ =G(x),1100000 _1011,010 = 1110 + _1011,M(x). Xr + R(x)= 1100000 + 010 = 1100 01
15、0 即:循环冗余校验码为1100 010,5.3 数据校验方法,出错模式表G(x)=1011,5.3 数据校验方法,特点: 1、余数不为0,表示有错,其值与出错位序号一一对应。 2、余数继续除下去,将按上表循环。逻辑实现简单。 3、生成多项式要特别选取。,练 习,求1101的CRC(循环冗余校验码),生成多项式G(x)=1011 。,解:M(X)= x3+x2+1 即:1101,M(X)Xr = x6+x5+x3, 即:1101000 (r=3),G(X)= x3+x+1 即:1011,=,M(X)Xr+ R(X)= 1101000+001=1101001,所以循环冗余校验码为:1101001
16、,5.4 Cache的基本原理,一. 基本概念,Data is copied in block-sized transfer units,4,4,4,10,10,10,5.4 Cache的基本原理,命中,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,8,9,14,3,Cache,Memory,Data in block b is needed,Request: 14,14,Block b is in cache: Hit!,5.4 Cache的基本原理,缺失,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,8,9,14,3,Cache,
17、Memory,Data in block b is needed,Request: 12,Block b is not in cache: Miss!,Block b is fetched from memory,Request: 12,12,12,12,Block b is stored in cache Placement policy: determines where b goes Replacement policy: determines which block gets evicted (victim),5.4 Cache的基本原理,二. 基本工作原理,5.4 Cache的基本原
18、理,需要解决的4个问题 : 1.当把一个块调入Cache时,可以放在哪些位置上?(映射规则) 2. 如何判断访问的数据项在Cache中?若在,如何找到它? (查找算法) 3.当发生缺失时,应替换哪一块?(替换算法) 4.当进行写访问时,应进行哪些操作? (写策略),5.4 Cache的基本原理,三. 直接映射方式 直接映射:一种Cache结构,其中每个存储器地址仅仅对应到Cache中的一个位置。,Cache 8 Block,32 Block,(块地址)mod(cache中的块数),index,5.4 Cache的基本原理,Cache访问,Byte offset,Index,TAG,Block
19、address MOD Numbers of Cache Block,Valid bit,例:访问序列如下:,10110,11010,10110,11010,10000,00011,10000,10010,例:访问序列如下:,10110,11010,10110,11010,10000,00011,10000,10010,5.4 Cache的基本原理,直接映射Cache结构,Cache的位数 例1:假设一个直接映射的cache,有16KiB的数据需要装入cache,块大小为4个字,内存地址为32位,那么该cache总共需要多少位? 解: 16KiB=4K个字=212 个字,1个块=4个字= 22
20、个字 块数= 212 22 = 210 个块,索引位(index bits)=10 bit 标记位(Tag bits)= 地址位 -索引位-字节偏移位=32-10-4 =18 bit 块的大小=432=128 bit 有效位(Valid bit) = 1 bit Cache总位数 =(块的大小+标记位+有效位)210 = (128+18+1) 210 = 147210= 147Kib=18.4KiB 所以Cache容量18.4KiB,是数据量的1.15倍。,例2:假设一个cache中有64个块,每块大小为16 字节,采用直接映射。那么内存中字节地址为1200的数据将被映射到cache中的哪一块
21、? 解: 块地址= 字节地址 每块字节数 = 1200 16=75 Cache块号=(块地址)mod(cache中的块数)= 75 mod 64= 11 所以映射到cache中11块。,5.4 Cache的基本原理,Cache 缺失处理 Cache 缺失(misses) :由于数据不在Cache 中而导致被请求的数据不能满足。两种缺失: 指令缺失 数据缺失,5.4 Cache的基本原理,指令缺失处理: 1)把程序计数器(PC)的原始值(当前PC-4)送到存储器中。 2)通知主存执行一次读操作,并等待主存访问完成。 3)写cache项,将主存取回的数据写入cache 中,并将地址的高位写入标记域
22、,设置有效位。 4)重启指令执行第一步,重新取指,这次该指令在cache中。 数据缺失处理:与指令缺失的控制基本相同,发生缺失时,处理器发生阻塞,直到从存储器中取回数据后才响应。,5.4 Cache的基本原理,写操作处理 写策略:写直达法(Write-through)也叫写贯穿法,这种方法所实行的是,当CPU进行写操作时,在写Cache的同时也将内容写入到相应的主存单元中,即两个内容同时改写 写回法(Write-back)这种方法的要点有二,一是当CPU写数据时,只写Cache,不写主存;二是当已改写的块被替换出Cache 时,将其内容写回主存。Cache 中每块增设“改写位”。,5.4 Ca
23、che的基本原理,两种方案比较:(1)写直达法是在每次写Cache时都有写主存的操作,能始终保持数据块的一致性。写回法则仅在数据块被置换时写入主存,可减少访问主存的开销,但存在Cache块与主存块的瞬间不一致。 (2)写直达法一次写入一个字,仅需一个奇/偶校验位;而写回法一次写入一个数据块,需要多个校验位。 (3)写直达法需要较多的缓冲寄存器存放需要写入主存的数据;而写回法相应要简单些。,5.4 Cache的基本原理,直接映射的优缺点: 优点:硬件实现简单,只需比较标记位 ,速度较快。 缺点:块的冲突率较高。 解决办法:全相联映射和组相联映射,Cache 8 Block,32 Block,in
24、dex,四. 全相联和组相联映射方式 Cache:8 blocks,Memory:32 blocks,四路组相联映射方式,5.4 Cache的基本原理,例:对于具有2GB主存,128KB高速缓存的32位MIPS机器,块大小为64B,当CPU访问内存地址为01000000 00010001 00001011 10000101时,如果高速缓存采用直接映像的话,此地址映射到Cache的行号是多少?如果高速缓存采用2-Way(每行2块)组相联映像的话,此地址映射到Cache的行号又是多少? 解: 直接映像: 块大小为64B =26个字节,字节偏移位=6bit, 即:01000000 00010001
25、00001011 10000101 Cache的块数: 128KB 64B = 2K = 211 索引位占11bit, 即:01000000 00010001 00001011 10000101 所以:此地址映射到Cache的行号是10000101110,5.4 Cache的基本原理,例:对于具有2GB主存,128KB高速缓存的32位MIPS机器,块大小为64B,当CPU访问内存地址为01000000 00010001 00001011 10000101时,如果高速缓存采用直接映像的话,此地址映射到Cache的行号是多少?如果高速缓存采用2-Way(每行2块)组相联映像的话,此地址映射到Cac
26、he的行号又是多少? 解: 2-Way(每行2块)组相联映像: 块大小为64B =26个字节,字节偏移位=6bit, 即:01000000 00010001 00001011 10000101 Cache的组(set)数: 128KB (64B*2 )= 1K = 210 索引位占10bit, 即:01000000 00010001 00001011 10000101 所以:此地址映射到Cache的行号是0000101110,5.4 Cache的基本原理,五. Cache置换策略 Cache的容量总是比主存储器小得多,因此,必然会出现CPU需要访问的数据不在Cache中的情况。这时,就要从主存
27、中调入新的数据块。如果这时可以装入新块的几个Cache块都已经装满时,就必须淘汰其中某块中的数据以装入新数据,选择被淘汰块的方法称为Cache置换策略(替换算法)。 在直接映象方式下,不存在块替换的算法,因为每一块的位置映象是固定的,需要哪一块数据就可直接确定地将该块数据调入上层确定位置。而其他两种映象就存在替换策略的问题,就是要选择替换到哪一个Cache块。 置换策略直接影响Cache主存体系的命中率。,5.4 Cache的基本原理,1随机法随机数产生器产生一个随机数,以此确定要被替换的块。 2先进先出法(FIFO)这种算法的思想是这样的,不管已调入块的使用频率如何,选择最早调入的块作为替换
28、的对象。 3最近最少使用法(LRU)这种算法又称为最久未使用法。选择近期最久没有被访问的块作为被替换的块.,5.5 虚拟存储器,虚拟存储器:一种将主存当作辅助存储器(如磁盘)的高速缓存的技术。 构造虚拟存储器的两个动机: 扩大编程空间,消除主存容量对程序设计造成的影响。 允许云计算在多个虚拟机之间有效而安全地共享存储器。,5.5 虚拟存储器,虚拟机: 基本定义:通过配置软件,扩充机器功能后形成的一台计算机,而实际硬件在物理功能上并不具备这种语言功能。 系统虚拟机:可以在本地硬件上运行不同的指令集系统结构,但它们都与硬件匹配。 一台运行多个虚拟机的计算机可以支持多个不同的操作系统 支持虚拟机的软
29、件被称为虚拟机监视器(VMM)。,5.5 虚拟存储器,虚拟存储器映射方式 页:虚拟存储器中的基本块,5.5 虚拟存储器,虚拟地址和物理地址,缺页:访问的页不在主存储器中,5.5 虚拟存储器,页的存放和查找,5.5 虚拟存储器,页的存放和查找,5.5 虚拟存储器,缺页故障 当操作系统在创建一个进程时,通常会为该进程的所有页(全部虚拟地址空间)创建相应的磁盘空间,即交换区。 当发生缺页时,操作系统会通过异常机制获得控制权。 操作系统会通过页表信息在磁盘中找到该页,并将该页调入主存。 若主存中所有也都在使用,则操作系统会使用LRU替换策略选择某一页替换出去写入磁盘交换区。,5.5 虚拟存储器,虚拟存
30、储器的写操作 采用写回法 若被改写,则在页表中增加一个改写位脏位(dirty bit),被替换出去时,该页需要被复制写回。,5.5 虚拟存储器,页表的大小?假设虚拟地址为32位,页大小为4KiB,页表每一项为4字节,求所需页表的总容量。解: 页大小为4KiB,则页偏移占12位,虚页号位数 = 32-12 = 20位,因此,虚页数为:220,页表项数为:220,页表总容量= 22022 =4MiB,页表通常存放在主存中,将占用较大的存储空间。,5.5 虚拟存储器,加快地址转换:TLB快表(TLB):用于记录最近使用地址的映射信息的高速缓存,从而避免每次都要访问页表。,5.5 虚拟存储器,内置FastMATH TLB,5.5 虚拟存储器,FastMATH TLB和Cache操作,