收藏 分享(赏)

第4章 存储器系统.ppt

上传人:杨桃文库 文档编号:4881782 上传时间:2019-01-19 格式:PPT 页数:164 大小:5.89MB
下载 相关 举报
第4章 存储器系统.ppt_第1页
第1页 / 共164页
第4章 存储器系统.ppt_第2页
第2页 / 共164页
第4章 存储器系统.ppt_第3页
第3页 / 共164页
第4章 存储器系统.ppt_第4页
第4页 / 共164页
第4章 存储器系统.ppt_第5页
第5页 / 共164页
点击查看更多>>
资源描述

1、1,Ch4: Memory Hierarchy 存储器层次结构,第一讲 基本概念和主存储器 第二讲 高速缓冲存储器(Cache) 第三讲 虚拟存储器(Virtual Memory),第一讲 基本概念和主存储器,主 要 内 容,信息的存储、传送、处理单位的含义 记忆单元 / 编址单位 / 存储单位 / 传输单位 / 机器字长 存储器分类 可按存取方式 / 易失性 / 可更改性 / 元器件 / 功能来分 半导体存储器随机访问存储器 SRAM的原理和特点 DRAM的原理和特点 RAM芯片组织 如何由记忆单元构成存储阵列 如何读写存储阵列中的信息 如何由芯片构成存储器 提高存储器速度的措施: 芯片内采

2、用行缓存,同行内数据直接从缓存中取 采用多模块存储器,多个存储器交叉存取 引入Cache(下一讲的主要内容),回顾:存储器基本术语,记忆单元 (存储基元 / 存储元 / 位元) (Cell) 具有两种稳态的能够表示二进制数码0和1的物理器件 存储单元 / 编址单位(Addressing Unit) 主存中具有相同地址的那些位构成一个存储单元,也称为一个编址单位 存储体/ 存储矩阵 / 存储阵列(Bank) 所有存储单元构成一个存储阵列 编址方式(Addressing Mode) 对存储体中各存储单元进行编号的方式 按字节编址(基本上现代计算机都按字节编址) 按字编址(早期有机器按字编址) 存储

3、器地址寄存器(Memory Address Register - MAR) 用于存放主存单元地址的寄存器 存储器数据寄存器( Memory Data Register-MDR(MBR) ) 用于存放主存单元中的数据的寄存器,回顾:存储器基本术语,机器字长 运算器中参加运算的寄存器的位数,即:数据通路的宽度。 存储字 存储芯片中的一个读写单位,一般等于芯片的数据线宽度。 (注:最好存储器按机器字长组织成一个“自然”单位。它的长度一般应等于一个数或指令的位数。但很多机器的数据和指令都是变长的。) 编址单位 一个存储单元的位数。现在都按字节编址,即编址单位为8位。 传输单位 对主存而言,指一次从主存

4、读出或写入的数的位数,它可以不等于存储字的长度,也可不等于编址单位。 对外存而言,数据通常按块传输,传输单位为块。(例如:386/486等,其编址单位为字节,字长为32位,单字位数为16位,但传输单位可以是8/16/24/32位。),回顾:存储器分类,(1)按工作性质/存取方式分类 随机存取存储器Random Access Memory (RAM) 每个单元的读写时间一样,且与各单元所在位置无关。如:内存。 (注:原意主要强调地址译码时间相同。现在的DRAM芯片采用行缓冲,因而可能因为位置不同而使访问时间有所差别。) 顺序存取存储器Sequential Access Memory (SAM)

5、数据按顺序从存储载体的始端读出或写入,因而存取时间的长短与信息所在位置有关。例如:磁带。 直接存取存储器Direct Access Memory(DAM) 利用一个共享读写机制,直接定位到要读写的数据块,在读写某个数据块时按顺序进行。例如:磁盘。 相联存储器Associate Memory or Content Addressed Memory (CAM) 按内容检索到存储位置进行读写。例如:快表。,依据不同的特性有多种分类方法,回顾:存储器分类,(2)按存储介质分类,半导体存储器:双极型,静态MOS型,动态MOS型 磁表面存储器:磁盘(Disk)、磁带 (Tape) 光存储器:CD,CD-R

6、OM,DVD,(3)按信息的可更改性分类 读写存储器(Read / Write Memory):可读可写 只读存储器(Read Only Memory):只能读不能写,(4)按断电后信息的可保存性分类 非易失(不挥发)性存储器(Nonvolatile Memory) 信息可一直保留, 不需电源维持。 (如 :ROM、磁表面存储器、光存储器等) 易失(挥发)性存储器(Volatile Memory) 电源关闭时信息自动丢失。(如:RAM、Cache等),回顾:存储器分类,(5)按功能/容量/速度/所在位置分类 寄存器(Register) 封装在CPU内,用于存放当前正在执行的指令和使用的数据 用

7、触发器实现,速度快,容量小(几十个) 高速缓存(Cache) 位于CPU内部或附近,用来存放当前要执行的局部程序段和数据 用SRAM实现,速度可与CPU匹配,容量小(几MB) 内存储器MM(主存储器Main (Primary) Memory) 位于CPU之外,用来存放已被启动的程序及所用的数据 用DRAM实现,速度较快,容量较大(几GB) 外存储器AM (辅助存储器Auxiliary / Secondary Storage) 位于主机之外,用来存放暂不运行的程序、数据或存档文件 用磁表面或光存储器实现,容量大而速度慢,回顾:内存与外存的关系及比较,内存储器(简称内存或主存) 存取速度快 成本高

8、、容量相对较小 直接与CPU连接,CPU(指令)可以对内存中的指令及数据进行读、写操作 属于易失性存储器(volatile),用于临时存放正在运行的程序和数据,CPU,逐条执行指令,按指令要求完成对数据的运算和处理,外存储器(简称外存或辅存)存取速度慢成本低、容量很大不与CPU直接连接,程序运行时,外存中的程序及相关数据须先传送到内存,然后才能被CPU使用。属于非易失性存储器(Nonvolatile),用于长久存放系统中几乎所有的信息,主存是CPU可直接访问的存储器,用于存放供CPU处理的指令和数据 性能指标: 以字节为单位进行连续编址,每个存储单元为1个字节(8个二进位) 存储容量:主存储器

9、中所包含的存储单元的总数(单位:MB或GB) 存取时间TA:从CPU送出内存单元的地址码开始,到主存读出数据并送到CPU(或者是把CPU数据写入主存)所需要的时间(单位:ns,1 ns = 10-9 s) 存储周期TMC:连读两次访问存储器所需的最小时间间隔,它应等于存取时间加上下一存取开始前所要求的附加时间,因此,TMC比TA大( 因为存储器由于读出放大器、驱动电路等都有一段稳定恢复时间,所以读出后不能立即进行下一次访问。 ),地址寄存器,地址译码器,控制线,读/写控制信号,数据线,读/写的数据,(64位),主存地址,地址线,(36位),MDR,MAR,CPU,MM,问题:主存中存放的是什么

10、信息?CPU何时会访问主存?,时间、存储容量(或带宽)的单位,-6,61,H,P,C,A,2,0,0,1,Appendix1: Notations and Conventions for Numbers,Notations and Conventions for Numbers,-,3,10,10,-6,回顾:内存储器的分类及应用,内存由半导体存储器芯片组成,芯片有多种类型:,半导体存储器,只 读 存储器(ROM),随机存取存储器(RAM),静态随机存取存储器SRAM,动态随机存取存储器DRAM,不可在线改写内容的ROM,快擦除存储器(Flash ROM),(用作Cache存储器),(用作主存

11、储器),回顾:六管静态MOS管电路,6管静态NMOS记忆单元,读出时:- 置2个位线为高电平- 置字线为1- 根据存储单元的状态改变位线的输出电平,写入时:- 位线上是被写入的二进位信息0或1- 置字线为1- 存储单元(触发器)按位线的状态设置成0或1,信息存储原理: 看作带时钟的RS触发器,SRAM中数据保存在一对正负反馈门电路中,只要供电,数据就一直保持,所以不是破环性读出,也不需要重写数据来保持数据不变。即:无需刷新!,回顾:记忆单元的基本原理,动态单管MOS记忆单元电路,构造和表示: 数据记忆在电容CS上,T为门控管,控制数据的进出。其栅极接读/写选择线(字线),漏和源分别接数据线(位

12、线)和记忆电容CS 。数据1或0以电容CS上电荷量的有无来判别。读写原理:在选择(字)线上加高电平,使T管导通。 写“0”时,在数据线上加低电平,使CS上电荷对数据线放电; 写“1”时,在数据线上加高电平,使数据线对CS充电; 读出时,在数据线上有一读出电压。它与CS上电荷量成正比。优点: 电路元件少,功耗小,集成度高,所以被广泛应用于大容量存储器中缺点: 速度慢、是破坏性读出 (读后状态被改变,需读后再生)、需定时刷新,DRAM的一个重要特点是,数据以电荷的形式保存在电容中,电容的放电使得电荷通常只能维持几个毫秒左右,相当于1M个时钟周期左右,因此要定期进行刷新(读出后重新写回),按行进行(

13、所有芯片中的同一行一起进行),刷新操作所需时间通常只占1%2%左右。,回顾:半导体RAM的组织,存储器芯片:存储体+外围电路(地址译码和读写控制),记忆单元的组织:,存储体(Memory Bank): 由记忆单元(位元)构成的存储阵列,记忆单元(Cell),存储器芯片(Chip),内存条(存储器模块),回顾:字片式存储体阵列组织,X 向译码器,一维地址译码系统,地址驱动线,假定有m位地址,则地址译码驱动(选择)线的条数为多少?,有2m条!,一般SRAM为字片式芯片,只在单方向上译码,同时读出一条字线上的所有位!,回顾:位片式存储体阵列组织,假定有m位地址,其地址译码驱动(选择)线的条数为多少?

14、,有2m/2+1,位片式可在字方向和位方向扩充,需要有片选信号!,回顾:位片式芯片框图,字扩展为芯片字数的4倍,位扩展为芯片位数的16倍,共12位地址,高两位用来选片,低10位用于片内选址,编址单位为16位。,问题:共几位地址?几位选片,几位片内选址?编址单位是多少?,举例:TMS4116动态MOS存储器芯片,总体性能: 存储容量:16K x 1位 7根地址线复用(2x7=14) 芯片引脚 芯片框图 地址缓冲器和地址译码器 存储阵列 读出再生放大器 基本时序、读写操作定时 由4116芯片构成64K字X16位的存储器,问题:7个地址引脚何时送行地址? 何时送列地址?,问题:CPU送出的地址有几位

15、?送到4116芯片的地址有几位?,CPU送出的地址位数由主存空间大小决定;送4116有14位地址。,ST0结束时,清除地址缓存器中的信息。,7个地址缓存器的输出分别接到地址译码器的7个输入,128种组合!,行向和列向共256个译码器!,ST1或ST4有效所存行或列地址信息。,每个译码器输出连到一根行线或列线上。,16M位=4Mb x 4=2048 x 2048 x 4=211x211x4 (1) 地址线:11根分时复用,由RAS和CAS提供控制时序。 (2) 存储字是4位,需四个位平面,对相同行、列交叉点的四个位一起读/写 (3) 内部结构框图,举例:典型的16M位DRAM(4Mx4),问题:

16、 为什么每出现新一代存储器芯片,容量至少提高到4倍?,行地址和列地址分时复用, 每出现新一代存储器芯片,至少要增加一根地址线每加一根地址线,则行地址和列地址各增加一位,所以行数和列数各增加一倍。因而容量至少提高到4倍。,SKIP,举例:典型的16M位DRAM(4Mx4),所有DRAM芯片同时刷新,由刷新计数器自动计数,按行刷新(只产生行地址),对CPU透明。,读/写行地址和刷新行地址被送到一个多路选择器,由内部控制电路选择哪个地址被送到行译码器,BACK,问题:刷新计数器的位数是几位?,DRAM芯片的刷新,刷新周期:从上次对整个存储器刷新结束到下次对整个存储器全部刷新一遍为止的时间间隔,为电容

17、数据有效保存期的上限(64ms)。 有三种刷新方式:集中式、分散式、异步刷新。 集中刷新:前一段时间正常读/写,后一段时间停止读/写,集中逐行刷新。特点:集中刷新时间长,不能正常读/写(死区),很少使用。 分散刷新:一个存储周期分为两段: 前一段用于正常读/写操作,后一段用于刷新操作。特点:不存在死区,但每个存储周期加长。很少使用。 异步刷新:结合上述两种方式。以4096行为例,在64ms时间内必须轮流对每一行刷新一次,即每隔64ms/4096=15.625s刷新一行。特点:结合前两种,效率高,用得较多。,CPU与存储器之间的通信方式,CPU和主存之间有同步和异步两种通信方式 异步方式(读操作

18、)过程(需握手信号) CPU送地址到地址线,主存译码 CPU发读命令,然后等待存储器发回“完成”信号主存接收到读命令后,读数据送至数据线,然后发“完成”信号给CPU CPU接收到“完成”信号,从数据线取数 写操作过程类似 同步方式的特点 CPU和主存在同一个时钟信号控制下工作,不需要应答信号(如“完成”) 主存总是在确定的时间内准备好数据,CPU送出地址和读命令后,总是在确定的几个时钟周期后去取数据 存储器芯片必须支持同步方式,SDRAM芯片技术,DDR3:一个时钟内传送8个数据,SDRAM是同步存储芯片 每步操作都在系统时钟控制下进行 确定的等待时间(读命令开始到数据线有效的时间,CAS潜伏

19、期)CL,例如CL=2 clks 突发传送 BL=1/2/4/8 多体(缓冲器)交叉存取 利用总线时钟上升沿与下降沿同步传送,只读存储器和Flash存储器,特点: 信息只能读不能写。 非破坏性读出,无需再生。 也以随机存取方式工作。 信息用特殊方式写入,一经写入,就可长久保存,不受断电影响。故是非易失性存储器。 用途: 用来存放一些固定程序。如监控程序、启动程序等。只要一接通电源,这些程序就能自动地运行; 可作为控制存储器,存放微程序。 还可作为函数发生器和代码转换器。 在输入/出设备中,被用作字符发生器,汉字库等。 在嵌入式设备中用来存放固化的程序。,回顾:只读存储器(Read Only M

20、emory),MROM:腌膜只读存储器(Mask ROM) PROM:可编程只读存储器(Programmable ROM) EPROM:可擦除可编程只读存储器(Erasable PROM) EEPROM (E2PROM) :电可擦除可编程只读存储器 (Electrically EPROM) flash memory:闪存,(a)“0”状态 (b) “1”状态 (a) 编程:写“0” (b) 擦除:写“1” (a) 读“0” (b) 读“1”,控制栅加足够正电压时,浮空栅储存大量负电荷,为“0” 控制栅不加正电压时,浮空栅少带或不带负电荷,为“1”,有三种操作:编程、读取、擦除,最初都是1;编程

21、:写0;擦除:写1 读出:控制栅加正电压,若为0,则读出电路检测不到电流;若为1,则检测到电流。,闪存的读取速度与DRAM相近,是磁盘的100倍左右;写数据(快擦编程)则与硬盘相近,存储器芯片的扩展,字扩展 位数不变、扩充容量例如,用16K8位芯片扩展成64K8位存储器,需几个芯片?地址范围各是多少?字方向扩展4倍,即4个芯片。0000-3FFFH, 4000-7FFFH, 8000-BFFFH, C000- FFFFH地址共16位,高两位由外部译码器译码生成4个输出,分别连到4个片选信号,片内地址有14位 地址线、读/写控制线等对应相接,片选信号则分别与外部译码器各个译码输出端相连 位扩展

22、字数不变,位数扩展例如,用40961位芯片构成4K8位存储器,需几个芯片?地址范围各是多少?位方向扩展8倍,字方向无需扩展。即8个芯片,地址范围都一样:000-FFFH地址共12位,全部作为片内地址 芯片的地址线及读/写控制线对应相接,而数据线单独引出,没有外部译码器 字位同时扩展 字和位同时扩展例如,用16K4位芯片构成64K8位存储器,需几个芯片,地址范围各是多少?字向4倍、位向2倍,8个芯片。0000-3FFFH, 4000-7FFFH, 8000-BFFFH, C000- FFFFH 地址线、读/写控制线等对应相接,片选信号则分别与外部译码器各个译码输出端相连,有两种容量扩展方式:交叉

23、编址和连续编址。,举例:128MB的DRAM存储器,总容量128 MB 由8片DRAM芯片构成 每片 16Mx8 bits 行地址、列地址各12位 为什么呢? 每1行共4096列(8位/列) 选中某一行并读出之后再由列地址选择其中的一列(8个二进位) 送出,问题:地址范围?,存储器地址位数27位,片内地址24位,与高24位存储器地址相同。范围:000000-FFFFFFH,低3位地址的作用是什么?,确定8个字节中的哪个,用来进行片选。,问题:芯片内地址是否连续?,不连续,是交叉编址方式!可同时读写所有芯片。,问题:如果高位地址用作片选,则情况如何?,连续编址,不可同时读写多个芯片。,Memor

24、y Controller,Memory Bus,DRAM SIMM,举例:SPARCstation 20s Memory Module,每个内存条最多能同时读出128位数据,存储器总线的宽度为128位,每次访存操作总是在某一个内存条内进行!,举例:SPARCstation 20s Memory Module,one memory module (内存条) Smallest: 4 MB = 16x 2Mb DRAM chips, 8 KB of Page Mode SRAM Biggest: 64 MB = 32x 16Mb chips, 16 KB of Page Mode SRAM,512

25、rows,512 cols,DRAM Chip 0,bits,8 bits,512 8 SRAM,256K x 8 = 2 Mb,DRAM Chip 15,bits,512 8 SRAM,256K x 8 = 2 Mb,Memory Bus,16个芯片的行缓冲可以缓存16x512x8位数据,每个芯片有512行x512列,并有8个位平面 每次读/写各芯片内同行同列的8位,共16x8=128位,当CPU访问一块连续的内存区(即:行地址相同)时,可直接从行缓冲读取,行缓冲用SRAM实现,速度极快!,Cache行读要求从内存读一块连续区,给定一个首地址,采用突发传输方式,问题:行缓冲数据的地址有何特点

26、?,一定在同行中,故行地址相同!,PC机主存储器的物理结构,主存储器由若干内存条组成 内存条的组成: 把若干片DRAM芯片焊装在一小条印制电路板上制成 内存条必须插在主板上的内存条插槽中才能使用,目前流行的是DDR和DDR2内存条: 均采用双列直插式,其触点分布在内存条的两面 DDR条有184个引脚,DDR2有240个引脚 PC机主板中一般都配备有2个或4个DIMM插槽,存储器芯片和CPU的连接,通过总线连接 地址线的连接 CPU地址线决定了整个主存空间的寻址范围,故比存储芯片地址引脚线多。若进行连续编址扩展,则将CPU地址线的低位和存储芯片地址线相连,高位部分用作字扩展时的片选信号的译码;交

27、叉编址扩展则相反。 数据线的连接 CPU数据线数决定了一次可读写的最大数据宽度,故比存储芯片数据引脚线多,通常将CPU数据线连到多个进行位扩展的芯片中,使扩展后的位数与CPU数据线数相等 控制线的连接 如果CPU读/写命令线和存储芯片的读/写控制线都是一根,且电平信号一致,则可直接相连。若CPU读/写命令线分开,则需要分别进行连接。 ROM区和RAM区的划分 主存空间包括ROM和RAM区 ROM区用来存放BIOS等系统程序等,选用ROM芯片构造;RAM区用来存放用户程序,选用RAM芯片构造 选择存储芯片的类型和数量时,必须先确定好ROM区和RAM区的地址范围,举例:CPU和主存的连接,CPU地

28、址线A15A0,数据线D7D0,WR为读/写信号,MREQ为访存请求信号。0000H3FFFH为系统程序区,4000HFFFFH为用户程序区。用8K4位ROM芯片和16K8位RAM芯片构成该存储器,要求说明地址译码方案,并将ROM芯片、RAM芯片与CPU连接。 解:因为0000H3FFFH为系统程序区,ROM区高两位总是00,低14位为全译码。 ROM区大小为:2148位=16K8位=16KB ROM芯片数为:16K8位 / 8K4位 = 22 = 8,字方向扩展2倍,位方向扩展2倍 ROM芯片内地址位数为13位,连到CPU低13位地址线A12A0 因为4000HFFFFH为用户程序区,RAM

29、区高两位是01、10、11,低14位为全译码。 RAM区大小为:32148位=316K8位= 48KB RAM芯片数为:48K8位 / 16K8位 = 31 = 3,字方向上扩展3倍,位方向上不扩展。 RAM芯片内地址位数为14位,连到CPU低14位地址线A13A0。,ROM芯片的片选信号由最高三位确定。,RAM芯片的片选信号由最高两位确定。,因为ROM芯片只能读,不能写,只要选中就是读,无需读写信号。,为有效(低电平)时,表示选中主存读写。,问题:是交叉还是连续编址方案?,高位地址译码作为片选信号,故是连续编址!,000,001,01X,11X,回顾:存储器与CPU速度差距愈来愈大,从上图可

30、以看出什么? DRAM、 硬盘与CPU 之间 的速度差距愈来愈大!,由于CPU工作速度很快,内存速度比较慢(差12个数量级),从内存取数或向内存写数时,CPU往往需要等待。,解决内存访问速度慢的措施有三个:提高主存芯片本身的速度采用多模块存储器技术在主存和CPU之间加入Cache,提高DRAM存储器速度的措施,之一:采用芯片内部行缓冲,以提高芯片本身的速度反复多次使用芯片内部缓冲器中的内容,不需每次都重复进行“行访问”DDR SDRAM (Double data-rate synchronous DRAM)和DDR2 SDRAM,提高DRAM存储器速度的措施,之二:多模块技术2个、4个或多个存

31、储器同时工作,加快访存速度措施之二:多模块存储器,多体存储器和多模块存储器 多体存储器由若干个小体组成共用地址寄存器MAR和数据寄存器MDR不能提高数据访问速度 双口存储器通常作为双口RAM或指令预取部件两套独立的读/写控制电路、地址缓存、地址译码及地址线和数据线能同时进行两个数据的读/写 多模块存储器也包含多个小体每个体有其自己的MAR、MDR和读写电路可独立组成一个存储模块能提高数据访问速度根据不同的编址方式可分为 连续编址和交叉编址,连续编址多模块存储器,第0模块,第1模块,第7模块,地址在同一模块内连续编号,称“连续编址”,程序从某个单元开始访问后,继续在同一模块访问,完毕后才跳到下一

32、个。,例如:一个模块执行程序,另一个模块实现DMA访问,可提高存储器总的吞吐量。,为什么能提高吞吐量?,使多个模块并行存取!,交叉编址多模块存储器,第0模块,第1模块,第3模块,地址在不同模块之间交叉编号,称“交叉编址”,程序从某个单元开始访问后,总是在所有模块间交替进行。,为什么能提高吞吐量?,使多个模块交叉存取!,第2模块,每隔1/4周期在数据总线上得到一个信息,使主存吞吐量提高4倍!,在存储地址“相关”或出现“转移”时,并行性被破坏。,Increasing Bandwidth Interleaving(交叉),Access Pattern without Interleaving:,Ac

33、cess Pattern with Interleaving:,第一讲小结,信息的存储、传送、处理单位 记忆单元 / 编址单位 / 存储单位 / 传输单位 / 机器字长 存储器分类 可按存取方式 / 易失性 / 可更改性 / 元器件 / 功能来分 半导体存储器随机访问存储器 SRAM :速度快,容量小,可做快速小容量存储器 DRAM:速度慢,容量大,用作主存 RAM芯片组织: 存储阵列:按行、列排,分别由行地址和列地址指出位置 地址译码器:分行、列地址译码器 读写逻辑:可控制多个位平面的同一位数据一起读/写 提高存储器速度的措施: 芯片内采用行缓存,行内数据直接从缓存中取 采用多模块存储器,多

34、个存储器交叉存取 引入Cache(下一讲的主要内容),第二讲 高速缓冲存储器(Cache),什么是程序访问的局部化特性 具有Cache机制的CPU的基本访存过程 Cache和主存之间的映射方式 直接映射 / 全相联映射 / 组相联映射 cache容量和块大小的选择 Cache替换算法 cache-friendly的程序 Cache的写策略 Write Back 和Write Through Cache失靶处理 Cache性能评估,主 要 内 容,What we want in a memory,到目前为止,已经了解到有以下几种存储器: Register,SRAM,DRAM, Hard Disk

35、,Magnetic Tape and Optical Disk,单独用某一种存储器,都不能满足我们的需要! 考虑结合各种存储器的特点,采用分层存储器结构来构建计算机的存储体系!,问题:你认为哪一种最适合做计算机的存储器呢?,计算机中存储器的层次结构,cache存储器,主存储器(RAM和ROM),外存储器(软盘、硬盘、光盘),后备存储器(磁带库、光盘库),内存储器,外存储器,寄存器,典型存取时间,1 ns(0.51cycle),2 ns(13cycle),10 ns(10100cycle),10 ms (10100cycle),10 s,分析:速度越快,成本较高 为提高性能/价格,各存储器组成一

36、个层状塔式结构,取长补短,协调工作工作过程: 1)CPU运行时,需要的操作数大部分来自寄存器 2)如需要从(向)存储器中取(存) 数据时,先访问cache,如在,取自cache 3)如操作数不在cache,则访问RAM,如在RAM中,则取自RAM 4)如操作数不在RAM,则访问硬盘,操作数从硬盘中读出RAM cache,回顾:传统存储器分级体系结构,五层金字塔形分层系统从上到下的特点: 1,每位价格降低 2,容量增大 3,存取时间增大 4,访问频度降低,Traditional Memory Hierarchy,传统结构,现代存储器分级体系结构,Contemporary Memory Hiera

37、rchy (现代结构),开辟一部分内存区,用作“Disk Cache”,用于存放将被送到磁盘上的数据。引入“Disk Cache”的好处: (1)写盘时按“簇”进行,以避免频繁地小块数据写盘。 (2)有些中间结果数据在写回盘之前可被快速地再次使用。,层次化存储器结构(Memory Hierarchy),时间局部性(Temporal Locality)含义:刚被访问过的单元很可能不久又被访问 做法:让最近被访问过的信息保留在靠近CPU的存储器中 空间局部性 (Spatial Locality)含义:刚被访问过的单元的邻近单元很可能不久被访问 做法:将刚被访问过的单元的邻近单元调到靠近CPU的存储

38、器中,数据总是在相邻两层之间复制传送Upper Level: 上层更靠CPUSmaller, faster, and uses more expensive technologyLower Level: 下层更远离CPUBigger, slower, and uses less expensive technologyBlock: 最小传送单位是一个定长块,互为副本,问题:为什么这种层次化结构是有效的?,主要是基于“程序访问局部化”特点!,加快访存速度措施之三:引入Cache,大量典型程序的运行情况分析结果表明 在较短时间间隔内,程序产生的地址往往集中在存储器的一个很小范围内 这种现象称为程序

39、访问的局部性 程序具有访问局部性特征的原因 指令:指令按序存放,地址连续,循环程序段或子程序段重复执行。 数据:连续存放,数组元素重复、按序访问 程序访问局部性分为空间局部性和时间局部性 基于程序访问的局部性使访存要求能快速得到响应 在CPU和主存之间设置一个快速小容量的存储器,其中总是存放最活跃(被频繁访问)的程序块和数据,由于程序访问的局部性特征,大多数情况下,CPU能直接从这个高速缓存中取得指令和数据,而不必访问主存。,这个高速缓存就是位于主存和CPU之间的Cache!,SKIP,下面用一个例子来说明!,Typical Memory Reference Patterns,程序的局部性原理

40、举例1,sum = 0; for (i = 0; i n; i+)sum += ai; *v = sum;,问题:指令和数据的时间局部性和空间局部性各自体现在哪里? 指令: 0x0FC(I0)0x108(I3)0x10C(I4)0x11C(I8) 0x120(I9) 数据:只有数组在主存中:0x4000x4040x4080x40C0x7A4,每条指令4个字节;每个数组元素4字节 指令和数组元素在内存中均连续存放 sum, ap ,i, t 均为通用寄存器;A,V为内存地址,I0: sum = n) goto done I4: loop: t - (ap) 数组元素ai的值 I5: sum -

41、sum + t 累计在sum中 I6: ap - ap + 4 计算下1个数组元素的地址 I7: i - i + 1 I8: if (i n) goto loop I9: done: V - sum 累计结果保存至地址v,高级语言源程序 对应的汇编语言程序,BACK,若n足够大,在一段时间内就一直在局部区 域内执行指令,故循环内指令的时间局部性好;按顺序执行,故程序的空间局部性好!,数组元素按顺序存放,也按顺序访问,所以,空间局部性好;每个数组元素都被访问1次,所以没有时间局部性。,程序的局部性原理举例2,以下程序A和B中,哪一个对数组A引用的空间局部性更好?时间局部性呢?变量sum的空间局部

42、性和时间局部性如何?对于指令来说,for循环体的空间局部性和时间局部性如何?,假定数组在存储器中按行优先顺序存放,程序段B:int sumarraycols(int AMN)int i, j, sum=0;for (j=0; jN, j+)for (i=0; iM, i+)sum+=Aij;return sum;,程序段A:int sumarrayrows(int AMN)int i, j, sum=0;for (i=0; iM, i+)for (j=0; jN, j+)sum+=Aij;return sum;,M=N=2048时主存的布局:,程序的局部性原理举例2,程序段A的时间局部性和空间

43、局部性分析 (1)数组A:访问顺序为A00, A01 , A02047; A10, A11, ,A12047; 与存放顺序一致,故空间局部性好!因为每个Aij都只被访问一次,所以时间局部性差! (2)变量sum:单个变量不考虑空间局部性;每次循环都要访问sum,所以其时间局部性较好! (3) for循环体:循环体内指令按序连续存放,所以空间局部性好! 循环体被连续重复执行2048x2048次,所以时间局部性好!,程序段A:int i, j, sum=0;for (i=0; i2048, i+)for (j=0; j2048, j+)sum+=Aij;return sum;,实际上 优化的编译器

44、使循环中的sum分配在寄存器中,最后才写回存储器!,程序的局部性原理举例2,程序段B的时间局部性和空间局部性分析 (1)数组A:访问顺序为A00, A10 , A20470; A01, A11, ,A20471; 与存放顺序不一致,每次跳过2048个单元,若交换单位小于2KB,则没有空间局部性!(时间局部性差,同程序A) (2)变量sum:(同程序A ) (3) for循环体:(同程序A),程序段B:int i, j, sum=0;for (j=0; j2048, j+)for (i=0; i2048, i+)sum+=Aij;return sum;,实际运行结果(2GHz Intel Pen

45、tium 4): 程序A:59,393,288 时钟周期 程序B:1,277,877,876 时钟周期,程序A比程序B快21.5 倍!,Cache(高速缓存)是什么样的?,Cache是一种小容量高速缓冲存储器,它由SRAM组成 Cache直接制作在CPU芯片内,速度几乎与CPU一样快 程序运行时,CPU使用的一部分数据/指令会预先成批拷贝在Cache中,Cache的内容是主存储器中部分内容的映象 当CPU需要从内存读(写)数据或指令时,先检查Cache,若有,就直接从Cache中读取,而不用访问主存储器,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,8,9,14,

46、3,4,4,4,10,10,10,主存中的部分信息拷贝在Cache存储器中,Cache存储器,主存储器,数据访问过程:,问题:要实现Cache机制需要解决哪些问题?,如何分块? 主存块和Cache之间如何映射? Cache已满时,怎么办? 写数据时怎样保证Cache和MM的一致性? 给出的主存地址怎样转换为Cache地址?,Cache对程序员(编译器)是否透明?为什么?,是透明的,程序员(编译器)在编写/生成低级语言程序时无需了解Cache是否存在或如何设置。,但是,对Cache深入了解有助于编写出高效的程序!,主存分成若干大小相同的块,称为主存块(Block),Cache也被分成相同大小的块

47、,称为Cache行(line)或槽(Slot),Cache 的操作过程,如果被访问的信息不在cache中,称为缺失或失靶(miss),如果被访问的信息在cache中,称为命中(hit),问题:什么情况下,CPU产生访存要求?,在执行指令过程中,会取指令和读写数据!,Cache映射(Cache Mapping),什么是Cache的映射功能? 把访问的局部主存区域取到Cache中时,该放到Cache的何处? Cache槽比主存块少,多个主存块映射到一个Cache槽中 如何进行映射? 把主存划分成大小相等的主存块(Block) Cache中存放一个主存块的对应单位称为槽(Slot)或行(line)或

48、块(Block) 将主存块和Cache槽按照以下三种方式进行映射 直接(Direct):每个主存块映射到Cache的固定槽中 全相联(Full Associate):每个主存块映射到Cache的任意槽中 组相联(Set Associate):每个主存块映射到Cache的固定组中的任意槽中,The Simplest Cache: Direct Mapped Cache,Direct Mapped Cache(直接映射Cache) 把主存的每一块映射到一个固定的Cache槽(行) 也称模映射(Module Mapping) 映射关系为:Cache槽号=主存块号 mod Cache槽数举例:4=10

49、0 mod 16 (假定Cache共有16槽)(说明:主存第100块应映射到Cache的第4槽中。),特点: 容易实现,命中时间短 无需考虑淘汰(替换)问题 但不够灵活,Cache存储空间得不到充分利用,命中率低例如,需将主存第0块与第16块同时复制到Cache中时,由于它们都只能复制到Cache第0槽,即使Cache其它槽空闲,也有一个主存块不能写入Cache。这样就会产生频繁的 Cache装入。,SKIP,直接映射Cache组织示意图,假定: 数据在主存和Cache之间按块传送的单位为512字。 Cache大小:213字=8K字=16槽 x 512字/ 槽主存大小: 220字=1024K字=2048块 x 512字/ 块,

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

当前位置:首页 > 高等教育 > 大学课件

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


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

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

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