第七章 存储器层次结构_第1页
第七章 存储器层次结构_第2页
第七章 存储器层次结构_第3页
第七章 存储器层次结构_第4页
第七章 存储器层次结构_第5页
已阅读5页,还剩121页未读 继续免费阅读

下载本文档

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

文档简介

1、第七章第七章 存储器层次结构存储器层次结构7.1 存储器概述7.2 主存储器7.3 高速缓冲存储器7.4 Cache性能的评估与提高7.5 虚拟存储器7.1 7.1 概概 述述一、存储器的分类一、存储器的分类1 1、按存储介质分:、按存储介质分: 半导体存储器(半导体存储器(TTLTTL、MOSMOS) 磁表面存储器磁表面存储器 光盘存储器光盘存储器 2 2、按存取方式分:、按存取方式分: 随机访问存储器(随机访问存储器(RAMRAM、ROMROM) 串行访问存储器(磁盘、磁带)串行访问存储器(磁盘、磁带)3 3、按在计算机中的作用分:、按在计算机中的作用分: 主存、辅存、缓存主存、辅存、缓存

2、RAMROM磁盘、磁带、光盘磁盘、磁带、光盘 高速缓冲存储器(高速缓冲存储器(Cache)存存储储器器主存储器主存储器辅助存储器辅助存储器MROMPROMEPROMEEPROM静态静态 RAM动态动态 RAM易失易失非非易易失失高高低低小小大大快快慢慢辅存辅存寄存器寄存器缓存缓存主存主存磁盘磁盘光盘光盘磁带磁带光盘光盘磁带磁带速度速度容量容量 价格价格 位位1. 存储器三个主要特性的关系存储器三个主要特性的关系 二、存储器的层次结构二、存储器的层次结构CPUCPU主机主机缓存缓存CPU主存主存辅存辅存2. 缓存缓存 主存层次和主存主存层次和主存 辅存层次辅存层次缓存缓存主存主存辅存辅存主存主存

3、10 ns20 ns200 nsms(速度)(速度)(容量)(容量)7.2主存储器v1、主存的主要性能指标、主存的主要性能指标v2、主存和、主存和cpu联系联系v3、半导体读写存储器、半导体读写存储器v4、只读存储器、只读存储器v5、存储器与、存储器与cpu的连接的连接 S(容量)(容量)=W(存储字数)(存储字数)*L(字长(位)(字长(位) 难点:对于一定容量的存储器,按字节或字寻难点:对于一定容量的存储器,按字节或字寻址访问范围是不同的。址访问范围是不同的。 例:设地址线例:设地址线24根:根: 按字节寻址按字节寻址 224=16M 若字长若字长16位:位: 按字寻址按字寻址 8M 若字

4、长若字长32位:位: 按字寻址按字寻址 4M一、一、 主存的技术指标主存的技术指标(1) 存储容量存储容量主存主存 存放二进制代码的总位数存放二进制代码的总位数 (2) 存储速度存储速度一、一、 主存的技术指标主存的技术指标 读出时间读出时间 写入时间写入时间 存储器的存储器的 访问时间访问时间 存取时间存取时间 存取周期存取周期 读周期读周期 写周期写周期 连续两次独立的存储器操作连续两次独立的存储器操作(读或写)所需的(读或写)所需的 最小间隔时间最小间隔时间 即单位时间内存储器存取的信息量,用字即单位时间内存储器存取的信息量,用字/ /秒,字节秒,字节/ /秒,秒,或位或位/ /秒为单位

5、进行表示。秒为单位进行表示。 例:存取周期为例:存取周期为500ns500ns,每个存取周期可访问,每个存取周期可访问1616位数据,位数据, 则存储器带宽为:则存储器带宽为: 16bit/500ns=32M 16bit/500ns=32M位位/ /秒秒 存储器带宽决定了以存储器为中心的机器获得信息的存储器带宽决定了以存储器为中心的机器获得信息的传输速度,它是改善机器瓶颈的一个关键因素。为了提高传输速度,它是改善机器瓶颈的一个关键因素。为了提高存储器带宽,可采用如下措施:存储器带宽,可采用如下措施: 1 1、缩短存取周期、缩短存取周期 2 2、增加存储字长,使每个存取周期可读、增加存储字长,使

6、每个存取周期可读/ /写更多位写更多位 3 3、增加存储体,使用存储器分段的交叉存取技术、增加存储体,使用存储器分段的交叉存取技术(3) 存储器的带宽存储器的带宽二、二、 主存和主存和 CPU 的联系的联系MDRMARCPU主主 存存读读数据总线数据总线地址总线地址总线写写芯片容量芯片容量三、半导体读写存储器三、半导体读写存储器1. 半导体存储芯片的基本结构半导体存储芯片的基本结构译译码码驱驱动动存存储储矩矩阵阵读读写写电电路路1K4位位16K1位位8K8位位片选线片选线读读/写控制线写控制线地地址址线线数数据据线线地址线地址线(单向)(单向)数据线数据线(双向)(双向)104141138二、

7、半导体存储芯片简介二、半导体存储芯片简介1. 半导体存储芯片的基本结构半导体存储芯片的基本结构译译码码驱驱动动存存储储矩矩阵阵读读写写电电路路片选线片选线读读/写控制线写控制线地地址址线线数数据据线线片选线片选线读读/写控制线写控制线(低电平写(低电平写 高电平读)高电平读)(允许读)(允许读)CSCEWE(允许写)(允许写)WEOE存储芯片片选线的作用存储芯片片选线的作用用用 16K 1位位 的存储芯片组成的存储芯片组成 64K 8位位 的存储器的存储器 32片片当地址为当地址为 65 535 时,此时,此 8 片的片选有效片的片选有效 8片片16K 1位位 8片片16K 1位位 8片片16

8、K 1位位 8片片16K 1位位0,015,015,70,7 读读/写控制电路写控制电路 地地址址译译码码器器 字线字线015168矩阵矩阵07D07D 位线位线 读读 / 写选通写选通A3A2A1A02. 半导体存储芯片的译码驱动方式半导体存储芯片的译码驱动方式(1) 线选法线选法00000,00,7007D07D 读读 / 写写选通选通 读读/写控制电路写控制电路 A3A2A1A0A40,310,031,031,31 Y 地址译码器地址译码器 X地地址址译译码码器器 3232 矩阵矩阵A9I/OA8A7A56AY0Y31X0X31D读读/写写(2) 重合法重合法00000000000,03

9、1,00,31I/OD0,0读读3、 静态静态 RAM 芯片举例芯片举例(1)Intel 2114 外特性外特性存储容量存储容量1K4 位位I/O1I/O2I/O3I/O4A0A8A9WECSVCCGNDIntel 2114ACSDOUT地址有效地址有效地址失效地址失效片选失效片选失效数据有效数据有效数据稳定数据稳定高阻高阻(2)静态)静态 RAM 读读 时序时序 tAtCOtOHAtOTDtRC片选有效片选有效读周期读周期 t tRCRC 地址有效地址有效 下一次地址有效下一次地址有效读时间读时间 t tA A 地址有效地址有效数据稳定数据稳定 t tCOCO 片选有效片选有效数据稳定数据稳

10、定t tOTDOTD 片选失效片选失效输出高阻输出高阻t tOHAOHA 地址失效后的地址失效后的数据维持时间数据维持时间ACSWEDOUTDIN (3) 静态静态 RAM (2114) 写写 时序时序 tWCtWtAWtDWtDHtWR写周期写周期 t tWCWC 地址有效地址有效下一次地址有下一次地址有效效写时间写时间 t tW W 写命令写命令 WEWE 的有效时间的有效时间t tAWAW 地址有效地址有效片选有效的滞后时间片选有效的滞后时间t tWRWR 片选失效片选失效下一次地址有效下一次地址有效t tDW DW 数据稳定数据稳定 WE WE 失效失效t tDHDH WE WE 失效

11、后的数据维持时间失效后的数据维持时间时序与控制时序与控制 行时钟行时钟列时钟列时钟写时钟写时钟 WERASCAS A6A0存储单元阵列存储单元阵列基准单元基准单元行行译译码码列译码器列译码器再生放大器再生放大器列译码器列译码器读读出出放放大大基准单元基准单元存储单元阵列存储单元阵列行行译译码码 I/O缓存器缓存器数据输出数据输出驱动驱动数据输入数据输入寄存器寄存器 DINDOUT行地址行地址缓存器缓存器列地址列地址缓存器缓存器 4、动态动态RAM 芯片举例芯片举例(1) RAM 4116 (16K 1 1位位) 外特性外特性 读放大器读放大器 读放大器读放大器 读放大器读放大器06364127

12、128 根行线根行线Cs01271128列列选选择择读读/写线写线数据输入数据输入I/O缓冲缓冲输出驱动输出驱动DOUTDINCs (2)4116 (16K 1位位) 芯片芯片 读读 原理原理 读放大器读放大器 读放大器读放大器 读放大器读放大器630 0 0I/O缓冲缓冲输出驱动输出驱动OUTD 读放大器读放大器 读放大器读放大器 读放大器读放大器06364127128 根行线根行线Cs01271128列列选选择择读读/写线写线数据输入数据输入I/O缓冲缓冲输出驱动输出驱动DOUTDINCs 4116 (16K1位位) 芯片芯片 写写 原理原理数据输入数据输入I/O缓冲缓冲I/O缓冲缓冲DI

13、N读出放大器读出放大器 读放大器读放大器630 (3) 动态动态 RAM 时序时序 行、列地址分开传送行、列地址分开传送写时序写时序行地址行地址 RAS 有效有效写允许写允许 WE 有效有效(高高)数据数据 DOUT 有效有效数据数据 DIN 有效有效读时序读时序行地址行地址 RAS 有效有效写允许写允许 WE 有效有效(低低)列地址列地址 CAS 有效有效列地址列地址 CAS 有效有效 5. 动态动态 RAM 和静态和静态 RAM 的比较的比较DRAMSRAM存储原理存储原理集成度集成度芯片引脚芯片引脚功耗功耗价格价格速度速度刷新刷新电容电容触发器触发器高高低低少少多多小小大大低低高高慢慢快

14、快有有无无主存主存缓存缓存 四、只读存储器(四、只读存储器(ROM) 1. 掩模掩模 ROM ( MROM ) 行列选择线交叉处有行列选择线交叉处有 MOS 管为管为“1”行列选择线交叉处无行列选择线交叉处无 MOS 管为管为“0” 2. PROM (一次性编程一次性编程) VCC行线行线列线列线熔丝熔丝熔丝断熔丝断为为 “0”为为 “1”熔丝未断熔丝未断 3. EPROM (多次性编程多次性编程 ) (1) N型沟道浮动栅型沟道浮动栅 MOS 电路电路G 栅极栅极S 源源D 漏漏紫外线全部擦洗紫外线全部擦洗D 端加正电压端加正电压形成浮动栅形成浮动栅S 与与 D 不导通为不导通为 “0”D

15、端不加正电压端不加正电压不形成浮动栅不形成浮动栅S 与与 D 导通为导通为 “1”SGDN+N+P基片基片GDS浮动栅浮动栅SiO2+ + + + +_ _ _ 控制逻辑控制逻辑Y 译码译码X 译译码码数据缓冲区数据缓冲区Y 控制控制128 128存储矩阵存储矩阵PD/ProgrCSA10A7A6A0DO0DO7112A7A1A0VSSDO2DO0DO127162413VCCA8A9VPPCSA10PD/ProgrDO3DO7(2) 2716 EPROM 的逻辑图和引脚的逻辑图和引脚PD/ProgrPD/Progr功率下降功率下降 / 编程输入端编程输入端 读出时读出时 为为 低电平低电平 4

16、. EEPROM (多次性编程多次性编程 ) 电可擦写电可擦写局部擦写局部擦写全部擦写全部擦写5. Flash Memory (闪速型存储器闪速型存储器) 比比 EEPROM快快EPROM价格便宜价格便宜 集成度高集成度高EEPROM电可擦洗重写电可擦洗重写具备具备 RAM 功能功能 用用 1K 4位位 存储芯片组成存储芯片组成 1K 8位位 的存储器的存储器?片?片 五、存储器与五、存储器与 CPU 的连接的连接 1. 存储器容量的扩展存储器容量的扩展 (1) 位扩展位扩展(增加存储字长)(增加存储字长)10根地址线根地址线8根数据线根数据线DDD0479AA021142114CSWE2片片

17、 (2) 字扩展(增加存储字的数量)字扩展(增加存储字的数量) 用用 1K 8位位 存储芯片组成存储芯片组成 2K 8位位 的存储器的存储器11根地址线根地址线8根数据线根数据线?片?片2片片1K 8 8位位1K 8 8位位D7D0WEA1A0A9CS0A10 1CS1 (3) 字、位扩展字、位扩展用用 1K 4位位 存储芯片组成存储芯片组成 4K 8位位 的存储器的存储器8根数据线根数据线12根地址线根地址线WEA8A9A0.D7D0A11A10CS0CS1CS2CS3片选片选译码译码1K41K41K41K41K41K41K41K4?片?片8片片 2. 存储器与存储器与 CPU 的连接的连接

18、 (1) 地址线的连接地址线的连接(2) 数据线的连接数据线的连接(3) 读读/写命令线的连接写命令线的连接(4) 片选线的连接片选线的连接(5) 合理选择存储芯片合理选择存储芯片(6) 其他其他 时序、负载时序、负载例:某机器字长是例:某机器字长是16位,位,cpu可输出可输出20条地址条地址线,线,16条数据线,一条控制线条数据线,一条控制线 we .实际使用实际使用主存空间为主存空间为64K*16位。由位。由16k*8位的位的ROM芯芯片片4片构成片构成32K*16位的空间;由位的空间;由K*16位的芯片片构成位的芯片片构成32K*16位的位的空间空间要求画出与主存之间的连线图,要求画出

19、与主存之间的连线图,并说明实际存储器中并说明实际存储器中ROM和和RAM的地址范围。的地址范围。六、提高访存速度的措施六、提高访存速度的措施 采用高速器件采用高速器件 调整主存结构调整主存结构1. 单体多字系统单体多字系统 W位位W位位W位位W位位W位位 地址寄存器地址寄存器 主存控制器主存控制器. . . . . . 单字长寄存器单字长寄存器 数据寄存器数据寄存器 存储体存储体 采用层次结构采用层次结构 Cache 主存主存 增加存储器的带宽增加存储器的带宽 加长存储器的字长加长存储器的字长2. 多体并行系统多体并行系统(1) 高位交叉高位交叉 M0M1M2M3体内地址体内地址体号体号体号体

20、号地址地址00 000000 000100 111101 000001 000101 111110 000010 000110 111111 000011 000111 1111顺序编址顺序编址 各个体并行工作各个体并行工作M0地址地址01n1M1nn+12n1M22n2n+13n1M33n3n+14n1地址译码地址译码体内地址体内地址体号体号体号体号(1) 高位交叉高位交叉 M0M1M2M3体号体号体内地址体内地址地址地址0000 000000 010000 100000 110001 000001 010001 100001 111111 001111 011111 101111 11(2

21、) 低位交叉低位交叉各个体轮流编址各个体轮流编址M0地址地址044n4M1154n3M2264n2M3374n1地址译码地址译码 体号体号体内地址体内地址 体号体号(2) 低位交叉低位交叉 各个体轮流编址各个体轮流编址低位交叉的特点低位交叉的特点在不改变存取周期的前提下,增加存储器的带宽在不改变存取周期的前提下,增加存储器的带宽时间时间 单体单体访存周期访存周期 单体单体访存周期访存周期启动存储体启动存储体 0启动存储体启动存储体 1启动存储体启动存储体 2启动存储体启动存储体 37.3 7.3 高速缓冲存储器高速缓冲存储器CacheCache 问题的提出问题的提出避免避免 CPU “空等空等

22、” 现象现象CPU 和主存(和主存(DRAM)的速度差异的速度差异缓存缓存CPU主存主存容量小容量小速度高速度高容量大容量大速度低速度低程序访问的局部性原理程序访问的局部性原理一、局部性原理一、局部性原理 CPU CPU从主存取指令或取数据,在一定时间内,只是对主存从主存取指令或取数据,在一定时间内,只是对主存局部地址区域的访问,称为程序访问的局部性原理。分为时间局部地址区域的访问,称为程序访问的局部性原理。分为时间局部性和空间局部性两种:局部性和空间局部性两种:1 1、时间局部性、时间局部性 如果一个数据项被引用,在不久的将来它很可能再次被引如果一个数据项被引用,在不久的将来它很可能再次被引

23、用。例如:循环程序中某个变量的引用。用。例如:循环程序中某个变量的引用。2 2、空间局部性、空间局部性 如果一个数据项被引用,那么与它地址相近的数据项可能如果一个数据项被引用,那么与它地址相近的数据项可能很快也会被引用。例如:数组处理。很快也会被引用。例如:数组处理。 基于程序访问的局部性原理,使得存储器层次结构系统变基于程序访问的局部性原理,使得存储器层次结构系统变得可行。得可行。 由于每次数据只能在相邻的两级存储器中进行交换,因此由于每次数据只能在相邻的两级存储器中进行交换,因此存储器管理是以两级存储器为单位进行的。存储器管理是以两级存储器为单位进行的。 相邻两级存储器之间信息交换的最小单

24、位称为块(相邻两级存储器之间信息交换的最小单位称为块(blockblock) 数据传输CPU两级存储器层次结构两级存储器层次结构二、命中与缺失二、命中与缺失 两级存储器可以分为高层存储器和低层存储器,如果两级存储器可以分为高层存储器和低层存储器,如果CPUCPU要访问的字块已经在高层存储器中,就称为命中(要访问的字块已经在高层存储器中,就称为命中(hithit),反),反之称为缺失(之称为缺失(missmiss)。)。 存储器访问命中的概率称为存储器访问命中的概率称为命中率命中率(hit ratehit rate)。)。 缺失率缺失率(miss ratemiss rate)则是指存储器访问失效

25、的概率。)则是指存储器访问失效的概率。 命中时间命中时间是访问高层存储器所需时间,包括了判断本次是访问高层存储器所需时间,包括了判断本次访问是命中还是失效的时间。访问是命中还是失效的时间。 缺失损失包括了用低层存储器中相应的块替换高层存储缺失损失包括了用低层存储器中相应的块替换高层存储器中的块的时间以及将所访问的数据传送到处理器的时间。器中的块的时间以及将所访问的数据传送到处理器的时间。 因为高层存储器与低层存储器相比容量小、速度快,所因为高层存储器与低层存储器相比容量小、速度快,所以命中时间要远低于缺失损失,也就是说以命中时间要远低于缺失损失,也就是说缺失损失对存储器缺失损失对存储器性能的影

26、响更大。性能的影响更大。 根据时间局部性,我们应尽可能地将最近用过的数据和指根据时间局部性,我们应尽可能地将最近用过的数据和指令存放在靠近令存放在靠近CPUCPU的存储器中。的存储器中。 根据空间局部性,将与最近使用过的数据和指令相邻近的根据空间局部性,将与最近使用过的数据和指令相邻近的数据和指令也尽可能存放在高层存储器中。数据和指令也尽可能存放在高层存储器中。 在存储器层次结构中,靠近在存储器层次结构中,靠近CPUCPU的存储器容量虽小但速度更的存储器容量虽小但速度更快。介于快。介于CPUCPU与主存之间的高速缓冲存储器称为与主存之间的高速缓冲存储器称为CacheCache。 在下图中我们可

27、以看到在下图中我们可以看到CacheCache中有字串中有字串X1,X2X(n-1),X1,X2X(n-1),当当访问字访问字XnXn时,将发生缺失,这时需要将主存中的字时,将发生缺失,这时需要将主存中的字XnXn调入到调入到CacheCache中。中。X3Xn C1Xn C2X1X4X3Xn C1Xn C2X1X4XnX2X2A.访问Xn之前B.访问Xn之后三、主存与三、主存与CacheCache的地址映射的地址映射 使用使用CacheCache有两个问题需要解决:有两个问题需要解决: 第一,怎样知道一个数据项是否在第一,怎样知道一个数据项是否在CacheCache中?中? 第二,如果在怎样

28、找到它?第二,如果在怎样找到它? 如果每个字都放在如果每个字都放在CacheCache中确定的位置,那么如果它在中确定的位置,那么如果它在CacheCache中,就知道如何找到它。这就是地址映射所解决的问题。中,就知道如何找到它。这就是地址映射所解决的问题。1 1、直接映射(多对一映射)、直接映射(多对一映射) 最简单的解决方法是采用直接映射(最简单的解决方法是采用直接映射(direct mappeddirect mapped),),即主存中的每个信息块只能对应即主存中的每个信息块只能对应CacheCache中的一个特定块。可以中的一个特定块。可以用如下规则建立起主存与用如下规则建立起主存与C

29、acheCache之间的对应关系之间的对应关系: :CacheCache单元地址单元地址 =( =(主存中的块地址主存中的块地址ma) modma) mod(CacheCache中的块数中的块数k k)直接映射直接映射 000001010011100101110111CacheMainMemory0000100101010010110110001101011100111101 多对一映射,多个内存块竞争多对一映射,多个内存块竞争同一同一CacheCache块位置,易产生冲突而造块位置,易产生冲突而造成频繁的块替换,故效率不高,但成频繁的块替换,故效率不高,但实现机制简单。实现机制简单。2 2、

30、直接映射方式下、直接映射方式下CacheCache块的构成块的构成 因为有多个存储器地址对应到同一个因为有多个存储器地址对应到同一个CacheCache块上,所以是多块上,所以是多对一关系,因此对一关系,因此CPUCPU在某一在某一CacheCache块中访问到的数据具体是哪一块中访问到的数据具体是哪一个内存单元中的数据无法确定,为此,在每个个内存单元中的数据无法确定,为此,在每个CacheCache块中增加一块中增加一个标记项(个标记项(tagtag),用来存放存储器地址的高位。),用来存放存储器地址的高位。 还需要一种方法判断还需要一种方法判断CacheCache块中没有数据,例如:当处理

31、器块中没有数据,例如:当处理器启动时,启动时,CacheCache是空的,而此时的标记字段没有意义,为此,在是空的,而此时的标记字段没有意义,为此,在每个每个CacheCache块中再增加一个有效位字段,用来说明此块中是否为块中再增加一个有效位字段,用来说明此块中是否为空,最后空,最后CacheCache块的构成如下:块的构成如下:有效位(1位)标记位(30-m位)数据位(32位)NY10110101.01N000001010111四、访问四、访问CacheCache CPU CPU以以3232位的内存地址访问位的内存地址访问CacheCache,此内存地址首先转,此内存地址首先转换成主存块地

32、址,用主存块地址的低换成主存块地址,用主存块地址的低m m位定位位定位CacheCache块,若块,若有效位为有效位为Y Y,将,将CacheCache块中的标记与主存块地址的高(块中的标记与主存块地址的高(30-m30-m)位比较,若相等,则命中,否则缺失。位比较,若相等,则命中,否则缺失。例:假设一个例:假设一个CacheCache的大小为的大小为8 8个字,采用直接映射方式。下个字,采用直接映射方式。下图说明了该图说明了该CacheCache如何响应处理器的读请求。假设如何响应处理器的读请求。假设CPUCPU需要访需要访问的主存块地址序列为问的主存块地址序列为2222、2626、2222

33、、2626、1616、3 3、1616、1818。主存地址访问序列(十进制)主存地址访问序列(二进制)Hit or missin Cache(11010two mod 8)010two(10110two mod 8)110two(11010two mod 8)010two(10000two mod 8)000two(00011two mod 8)011two(10000two mod 8)000two(10010two mod 8)010two(10110two mod 8)110two与主存相对应的Cache块索引号22262226163161810110two11010two10110tw

34、o11010two10000two00011two10000two10010twoMissMissHitHitMissMissHitMissC 处理完失效的地址(11010two)后Cache的状态D 处理完失效的地址(10000two)后Cache的状态IndexV TagData000001010011100101110111NNYNNNYN11twoMemory(11010two)10twoMemory(10110two)IndexV TagData000001010011100101110111YNYNNNYN11twoMemory(11010two)10twoMemory(10110

35、two)10twoMemory(10000two)E处理完失效的地址(00011two)后Cache的状态IndexV TagData000001010011100101110111YNYYNNYN11twoMemory(11010two)10twoMemory(10110two)10twoMemory(10000two)00twoMemory(00011two)F 处理完失效的地址(10010two) 后Cache的状态IndexV TagData000001010011100101110111YNYYNNYN10twoMemory(10010two)10twoMemory(10110two

36、)10twoMemory(10000two)00twoMemory(00011two)来自来自CPUCPU的主存物理地址由几部分组成如下:的主存物理地址由几部分组成如下: vv索引(下标):用于选取索引(下标):用于选取CacheCache中的单元。中的单元。 vv标记:用于与标记:用于与CacheCache中每一单元的标志进行比较。中每一单元的标志进行比较。 vvyte offsetyte offset:字节偏移,由块大小确定。:字节偏移,由块大小确定。 在直接映射方式中,当在直接映射方式中,当CPUCPU给出一地址,首先由索引确给出一地址,首先由索引确定定CacheCache中的一单元,然

37、后地址标志和该单元的单元标记进中的一单元,然后地址标志和该单元的单元标记进行比较。若相同且行比较。若相同且CacheCache中的该单元已经置了有效位,就命中的该单元已经置了有效位,就命中,即要访问的信息块在中,即要访问的信息块在CacheCache中,否则缺失。中,否则缺失。2010ByteoffsetValidTagDataIndex012102110221023TagIndex203231 3013 12 112 1032位 地 址数 据命 中CPU地址与地址与Cache结构的关系结构的关系 v下标用于选取下标用于选取CacheCache中的单元,假如下标有中的单元,假如下标有n n位,

38、则下位,则下标可以有标可以有2 2n n个值,因此个值,因此CacheCache中的单元数必须是以中的单元数必须是以2 2为为基数的指数基数的指数v在在MIPSMIPS机器结构中,一个字由四个字节组成,因此机器结构中,一个字由四个字节组成,因此CPUCPU地址的最后两位用作块偏移地址,用于从信息块中选地址的最后两位用作块偏移地址,用于从信息块中选取所需字节取所需字节 vCacheCache的实际位数为:的实际位数为:CacheCache单元数单元数( (字块大小字块大小标志位数标志位数有效位数有效位数) ),以,以上机器的上机器的CacheCache实际位数为实际位数为2 2n n(32(32

39、(32(32n n2)2)1)= 1)= 2 2n n(63(63n)n)。例:例:CacheCache中的位数中的位数 假设一个直接映射的假设一个直接映射的CacheCache有有64KB64KB数据,块大小为一个数据,块大小为一个字,地址为字,地址为3232位,那么该位,那么该CacheCache共需要多少位?共需要多少位?【解答解答】 块大小为块大小为1 1个字,则个字,则CacheCache共有共有16K16K块,块, 那么那么CacheCache块地址为块地址为1414位,位, 每个每个CacheCache块中标记字段为块中标记字段为30-14=1630-14=16位,位, 有效位有

40、效位1 1位,位, 则每个则每个CacheCache块共块共1+16+32=491+16+32=49位位 Cache Cache大小总计为大小总计为16K16K49bit=784Kbit=98KB49bit=784Kbit=98KB 即:该即:该CacheCache实际大小约为实际大小约为CacheCache数据容量的数据容量的1.51.5倍倍五、五、 CacheCache读缺失处理读缺失处理 数据缺失和指令缺失的处理方法完全相同数据缺失和指令缺失的处理方法完全相同 ,处理指令,处理指令缺失缺失, ,流程如下所示:流程如下所示:1 1、取得实际指令地址(当前、取得实际指令地址(当前PC-4PC

41、-4)。)。2 2、指示主存根据取得的指令地址进行读操作并等待操作、指示主存根据取得的指令地址进行读操作并等待操作完成。完成。3 3、从指令地址中获取索引号来找到、从指令地址中获取索引号来找到CacheCache中相应的单元,中相应的单元,将从主存中读出的数据写入将从主存中读出的数据写入CacheCache,然后再将指令地址的,然后再将指令地址的高位写入高位写入CacheCache的单元标志字段的单元标志字段agag,并置有效位,并置有效位V V为。为。4 4、从、从CacheCache中读取指令,重新开始指令的执行。中读取指令,重新开始指令的执行。CacheCache实例介绍实例介绍 为了满

42、足在一个时钟周期内同时得到指令位和数据位的这为了满足在一个时钟周期内同时得到指令位和数据位的这种要求,种要求, DECStation 3100DECStation 3100工作站机器使用了两个独立的工作站机器使用了两个独立的CacheCache,指令,指令CacheCache和数据和数据CacheCache。下图展示了。下图展示了DECStation 3100DECStation 3100工作站数据工作站数据CacheCache的结构。的结构。vv对这两个对这两个Cache(Cache(指令指令cachecache和数据和数据cache)cache)的读操作如下:的读操作如下: 1 1 给这两

43、个缓存分别送入不同的地址。这两个地址分别给这两个缓存分别送入不同的地址。这两个地址分别来自于来自于PC(PC(用于读指令用于读指令) )和和ALU(ALU(用于数据访问用于数据访问) )。 2 2 假如假如CacheCache命中,我们可以从数据线上直接读取信息。命中,我们可以从数据线上直接读取信息。如果发生失效,就把地址送入主存,将主存读到的信息写如果发生失效,就把地址送入主存,将主存读到的信息写入入CacheCache。1614B y teo ffse tV a lidT agD a taD ata1 63 216 bits3 2 b its3 1 3017 1 6 155 4 3 2 1

44、032位 地 址16K单 元命 中DECStation 3100DECStation 3100的的CacheCache结构结构 v写操作的情况不同。对存储指令,我们仅将数据写入写操作的情况不同。对存储指令,我们仅将数据写入CacheCache而不改变主存的内容会导致称作而不改变主存的内容会导致称作CacheCache和主存的不一致。和主存的不一致。1 1、直写、直写 信息在被写入信息在被写入CacheCache的同时,利用的同时,利用CPUCPU和主存之间的数据通和主存之间的数据通路写入主存的对应块中,称作直写(路写入主存的对应块中,称作直写(write throughwrite throug

45、h)。)。2 2、回写、回写 除了直写,另外一个策略就是回写(除了直写,另外一个策略就是回写(write backwrite back),即信),即信息只写入息只写入CacheCache,仅当被修改过的单元被替换出,仅当被修改过的单元被替换出CacheCache时,才将时,才将它写入主存的相应存储块中。它写入主存的相应存储块中。DECStation 3100DECStation 3100的写的写CacheCache操作采用直写策略,流程如下:操作采用直写策略,流程如下: 1 1、使用地址的、使用地址的15152 2位作为索引号查找位作为索引号查找CacheCache中映射的单中映射的单元。元。

46、2 2、将地址的、将地址的31311616位作为标志写入位作为标志写入CacheCache特定单元的标特定单元的标志字段,把数据写入该单元的数据位,置有效位为。志字段,把数据写入该单元的数据位,置有效位为。3 3、将数据写入主存中的相应块。、将数据写入主存中的相应块。 采用直写策略,每一次写采用直写策略,每一次写CacheCache都将引起一次主存的写操都将引起一次主存的写操作。处理器将停下来等待写主存完成,性能并不好。解决方法作。处理器将停下来等待写主存完成,性能并不好。解决方法是设置写缓冲器是设置写缓冲器(write buffer)(write buffer)。 采用回写策略,其性能很高,

47、特别是当处理器产生写操作采用回写策略,其性能很高,特别是当处理器产生写操作的速度比主存完成写操作的速度快时。但是这种策略要比直写的速度比主存完成写操作的速度快时。但是这种策略要比直写复杂得多。复杂得多。六、空间局部性原理的利用六、空间局部性原理的利用 为了利用空间局部性原理,我们需要增加为了利用空间局部性原理,我们需要增加CacheCache的字块容的字块容量。当发生缺失时,我们需要把引起缺失的字块的相邻几个字量。当发生缺失时,我们需要把引起缺失的字块的相邻几个字也读入也读入CacheCache,因为邻近的几个字在将来可能会被用到。,因为邻近的几个字在将来可能会被用到。处理器采用前文提到的映射

48、公式从处理器采用前文提到的映射公式从CacheCache中找到需要访问的块:中找到需要访问的块: ( (主存中的块地址主存中的块地址) modulo) modulo(CacheCache中的块数)中的块数) 主存中的块地址可以通过字地址除以每一块的字数求得主存中的块地址可以通过字地址除以每一块的字数求得(或是由字节地址除以每一块的字节数)。(或是由字节地址除以每一块的字节数)。1612ByteoffsetVTagDataHitData163216 bits128 bitsMux323232232Block offsetIndexTag3116 154 32 1 0CPU地址组成4 4K K单单

49、元元每个块为四个字的每个块为四个字的Cache 例:例: 某某CacheCache大小为大小为6464块,块大小为块,块大小为1616字节。求字节地字节。求字节地 址址12001200所映射所映射CacheCache的块号。的块号。 块地址所映射的块地址所映射的CacheCache中的块号为(中的块号为(75 mod 6475 mod 64)1111其中包括了位于:其中包括了位于:字节地址字节地址11111616字节地址字节地址111116+(16-1)16+(16-1)之间的所有地之间的所有地址址v多字块和单字块,处理读多字块和单字块,处理读CacheCache缺失是一样的,总是将主存缺失是

50、一样的,总是将主存中的整个字块调入中的整个字块调入CacheCache。vv多字块和单字块,处理写多字块和单字块,处理写CacheCache缺失不一样。因为多字块缺失不一样。因为多字块CacheCache的块包含不止一个字,我们不能直接写入标志的块包含不止一个字,我们不能直接写入标志TagTag和数和数据。据。 为解决这个问题,在执行写操作前要先比较标志为解决这个问题,在执行写操作前要先比较标志TagTag,如,如果命中就将数据直接写入果命中就将数据直接写入CacheCache。 假如缺失,就需要先访问主存,读取主存的块(四个字)假如缺失,就需要先访问主存,读取主存的块(四个字)把它写入把它写

51、入CacheCache,然后处理器再向,然后处理器再向CacheCache写入引起写缺失的字。写入引起写缺失的字。 与单字块与单字块CacheCache不同的是,多字块不同的是,多字块CacheCache写之前需要先访写之前需要先访问主存将引起写失效的字所在的块从内存读出然后写入问主存将引起写失效的字所在的块从内存读出然后写入CacheCache。v增加块大小能有效地降低失效率,因为大块较好地利用了空增加块大小能有效地降低失效率,因为大块较好地利用了空间局部性。间局部性。v当块的容量增大时,当块的容量增大时,CacheCache所能容纳的块数减少,映射到所能容纳的块数减少,映射到CacheCa

52、che的主存块之间的竞争就非常激烈。因此当的主存块之间的竞争就非常激烈。因此当CacheCache的大小的大小超过某个上限值时再继续增加块大小,反而会使失效率上升。超过某个上限值时再继续增加块大小,反而会使失效率上升。v因而可知:当因而可知:当CacheCache容量较小时,不能使块取得过大。容量较小时,不能使块取得过大。 块大小与缺失率的关系:见块大小与缺失率的关系:见P439 P439 v增加块大小引起的另一个问题是增大了缺失损失增加块大小引起的另一个问题是增大了缺失损失。 两种方法可以适量减少缺失损失:两种方法可以适量减少缺失损失:1、一种叫作预取法预取法(early restart)。

53、 CPU在接收到第一个它所需要的字时就开始执行,而不是等到完整的块到达时才执行。适用于取指令,而对取数据则效用不大。2、另一种称为申请字优先法申请字优先法(critical word first)。它让主存首先传输处理器申请访问的字,其余的字稍后再传。但需要复杂的机制来重新组织存储器。还可以通过提高存储器带宽减少缺失损失。还可以通过提高存储器带宽减少缺失损失。7.3 Cache性能的评估与提高性能的评估与提高一、一、CacheCache性能的测量与分析性能的测量与分析CPUCPU时间分为时间分为CPUCPU执行程序的时钟周期和执行程序的时钟周期和CPUCPU等待存储系统的时等待存储系统的时钟周

54、期,正常情况下,把钟周期,正常情况下,把CacheCache访问命中的开销看成是访问命中的开销看成是CPUCPU正常正常执行周期中的一部分,因此有:执行周期中的一部分,因此有: CPUCPU时间时间= =(CPUCPU执行程序的时钟周期数执行程序的时钟周期数+ +存储器引起阻塞的时钟周期数)存储器引起阻塞的时钟周期数)时钟周期长度时钟周期长度 存储器引起阻塞的时钟周期数主要来自存储器引起阻塞的时钟周期数主要来自CacheCache缺失,而此缺失,而此CacheCache缺失主要指读缺失和写缺失两部分,在此仅讨论存储器缺失主要指读缺失和写缺失两部分,在此仅讨论存储器系统的简化模型,则读和写缺失引

55、起的阻塞时间可定义为:系统的简化模型,则读和写缺失引起的阻塞时间可定义为:访存等待时钟周期数 失效率失效损失访存次数程序定量计算这种定量计算这种Cache/主存存储器层次结构对主存存储器层次结构对CPU性能的影响程度性能的影响程度 例例6.3 6.3 假设我们用假设我们用gccgcc检测一机器,发现指令检测一机器,发现指令CacheCache缺失缺失率是率是2%2%,数据,数据CacheCache缺失率缺失率4%4%。在不考虑访存等待延迟时。在不考虑访存等待延迟时所有指令的平均执行时间(所有指令的平均执行时间(CPICPI)为)为2 2个时钟周期。个时钟周期。CacheCache的缺失损失为的

56、缺失损失为4040个时钟周期。(个时钟周期。(gccgcc程序中各类指令的使用程序中各类指令的使用频率见第四章的图频率见第四章的图4.544.54。)若有一个从不产生缺失的理想。)若有一个从不产生缺失的理想CacheCache,则机器速度能快多少?,则机器速度能快多少?【解答解答】 假设指令总数为假设指令总数为I I,则由指令,则由指令CacheCache失效引起的总失效引起的总 的失效损失为的失效损失为I I2%2%40400.80I0.80I。gccgcc程序中存储器访问指令的频率是程序中存储器访问指令的频率是36%36%,因此由数据,因此由数据CacheCache失效引起的总的失效损失为

57、:失效引起的总的失效损失为:I I36%36%4%4%40400.56I0.56I。 因此访存等待时钟周期数为因此访存等待时钟周期数为0.80I0.80I0.56I=1.36I0.56I=1.36I。考虑到访存等待延迟,考虑到访存等待延迟,CPICPI由由2 2变成了变成了2 21.36=3.361.36=3.36。 所以这种所以这种Cache/Cache/主存存储层次结构对主存存储层次结构对CPUCPU性能的影响是性能的影响是使使CPICPI由由2 2变成了变成了3.363.36,CPUCPU时间增大了时间增大了0.680.68。 如果如果CPUCPU的速度更快,而存储器系统保持原状,整体性

58、能的速度更快,而存储器系统保持原状,整体性能会怎么样?会怎么样? CPI CPI由由2 2减为减为1 1,带有,带有CacheCache缺失的系统缺失的系统CPI=1+1.36=2.36CPI=1+1.36=2.36,理想理想CacheCache系统性能是它的系统性能是它的2.36/1=2.362.36/1=2.36倍。倍。 CPU CPU时间中用来处理访存的时间所占比率也由时间中用来处理访存的时间所占比率也由1.36/3.36=41% 1.36/3.36=41% 增加到了增加到了1.36/2.361.36/2.3658%58% 同样地,同样地,增加处理器时钟频率但不改变存储器结构增加处理器时

59、钟频率但不改变存储器结构, ,反而反而会增加由于会增加由于CacheCache失效带来的性能损失失效带来的性能损失。见下例。见下例。例6.4 为提高上题中机器的性能,将它的时钟频率加倍。因为主存的速度不变,所以用于Cache失效处理的绝对时间不变,假设Cache的失效率与上题相同。机器的时钟频率加快后,它的性能怎样?【解答解答】 因为机器的时钟频率加倍,而用于因为机器的时钟频率加倍,而用于CacheCache失效处理的绝对失效处理的绝对时间没有变化,所以时间没有变化,所以CacheCache缺失损失要加倍,由缺失损失要加倍,由4040变为变为8080。假。假设设I I为指令总数,则有:为指令总

60、数,则有: 访存等待时钟周期数访存等待时钟周期数(2%(2%80)80)I I36%36%(4%(4%80)80)I I 2.75I2.75I 因此时钟频率较快机器的因此时钟频率较快机器的CPICPI为为4.754.75。使用这一节介绍的。使用这一节介绍的CPUCPU时间公式,我们将两个时钟频率不同机器的性能作个比较:时间公式,我们将两个时钟频率不同机器的性能作个比较:时钟频率快的机器的性能时钟频率慢的机器的性能ICPIClock cycleICPIClock cycle2时钟频率慢的机器的执行时间时钟频率快的机器的执行时间3.364.75121.41 时钟频率加快了一倍,但机器的性能却只是原

温馨提示

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

评论

0/150

提交评论