Download presentation
Presentation is loading. Please wait.
1
第 4 章 主存储器与存储体系 计算机的工作依赖于存储器中的程序和数据,存储器的容量和性能对于整个系统的性能至关重要。 本章教学内容
4.1 存储器概述 4.2 读/写存储器 4.3 非易失性存储器(自学) 4.4 DRAM的研制与发展(自学) 4.5 半导体存储器的组成与控制 4.6 提高存储器性能的技术
2
Cache的存储器组织:存储映象与地址转换
重点难点 存储器芯片的原理、主存的容量扩展技术。 cache的工作原理. Cache的存储器组织:存储映象与地址转换
3
4.1 存储器概述 一.存储器的作用 计算机真正工作的场所是主存(内存),所有驱动程序、操作系统、工作数据、成品/半成品应用程序必须加载到主存中才能由CPU读取。 高速缓存的速度比主存储器快,作为CPU与内存的缓冲区,主要起到平衡CPU与主存这间的速度的作用,有效解决了CPU速度与主存速度的不匹配问题。 辅助存储器(如硬盘、软盘)也称为外存,用来存放暂时不参加运行的程序和数据,以及永久存储信息。辅助存储器的容量很大,但存取速度慢,并且不能为CPU直接访问,必须先将其中信息调入主存后,才能为CPU所访问。
4
二.存储器的分类 1.按存储器在计算机系统中的作用分类 2.按存取方式分类 3.按存储介质分类 4.按信息的可保存性分类
(1)高速缓冲存储器(Cache) (2) 主存储器 (3)辅助存储器 2.按存取方式分类 (1)随机存取存储器RAM (2)只读存储器ROM (3)顺序存取存储器SAM(sequential Access Memory) (4)直接存取存储器DAM(Direct Access Memory ) 3.按存储介质分类 (1)磁芯存储器 (2)半导体存储器 (3)磁表面存储器 (4)光存储器 4.按信息的可保存性分类 (1)易失性存储器 (2)非易失性存储器
5
三. 主存储器概述 1、主存储器处于全机中心地位 (1)正在运行的程序和数据存放于存储器中。CPU直接从存储器取指令或存取数据。
(2).采用DMA技术或输入输出通道技术,在存储器和输入输出系统之间直接传输数据。 (3).多处理机系统采用共享存储器来存取和交换数据。
6
2、 主存储器分类 (1)随机存储器RAM(random access memory) (易失性存储器)
(2)只读存储器ROM(read-only memory) (非易失性存储器) (3)可编程序只读存储器PROM(programmable ROM):一次写入,不能修改。(非易失性存储器) (4)可擦除可编程序只读存储器EPROM(erasable PROM):可用紫外线擦除,擦除后可再次写入。 (5)可用电擦除的可编程序只读存储器E2PROM(electrically EPROM):可用电改写。
7
3、主存储器的主要技术指标 主存储器的主要性能指标:主存容量、存储器存取时间和存储周期时间。 (1)存储容量
按字节或按字寻址,容量为多少字节,单位:KB(210),MB(220),GB(230);地址线数决定最大直接寻址空间大小(n位地址:2n)。 (2)存取时间(存储器访问时间)(或读/写时间)(memory access time)指启动一次存储器操作到完成该操作所经历的时间。 *读出时间:指从CPU向MEM发出有效地址和读命令开始,直到将被选单元的内容读出为止所用的时间。 *写入时间:指从CPU向MEM发出有效地址和写命令开始,直到信息写入被选中单元为止所用的时间。
8
4、主存储器的基本操作 主存储器用来暂时存储CPU正在使用的指令和数据,它和CPU的关系最为密切。 主存储器和CPU的连接是由总线支持的,
(3) 存储周期时间(又称读/写周期,或访问周期) CPU连续启动两次独立的存储器操作所需间隔的最小时间。(目前一般存储器可达几纳秒(ns)) 4、主存储器的基本操作 主存储器用来暂时存储CPU正在使用的指令和数据,它和CPU的关系最为密切。 主存储器和CPU的连接是由总线支持的, 连接形式如图4.1所示。
9
CPU与主存之间采取异步工作方式,以ready信号表示一次访存操作的结束。
2K字×n位 问题: 1.如何完成存储器的读操作? 2.如何完成存储器的写操作? CPU与主存之间采取异步工作方式,以ready信号表示一次访存操作的结束。
10
读(取)操作 :从CPU送来的地址所指定的存 储单元中取出信息,再送给CPU。
(1)地址->AR->AB CPU将地址信号送至地址总线 (2) Read CPU发读命令 (3)Wait for MFC 等待存储器工作完成信号 (4)(AR)->DB->DR 读出信息经数据总线送至CPU 写(存)操作 :将要写入的信息存入CPU所指定的存储单元中。 (1)地址->AR->AB CPU将地址信号送至地址总线 (2)数据->DR->DB CPU将要写入的数据送到数据总线 (3)Write CPU发写信号 (4)Wait for MFC 等待存储器工作完成信号
11
5.主存储器的基本结构 存储体是存储器的核心,是存储单元的集合体,而存储单元又是由若干个记忆单元组成的。 存储体 地 址 译 码 驱 动
存储体是存储器的核心,是存储单元的集合体,而存储单元又是由若干个记忆单元组成的。 存储体 地 址 译 码 驱 动 I/O 和 读 写 电 路 地址线 数据线 读/写控制线 地址译码驱动电路包含译码器和驱动器两部分组成。译码器将地址总线输入的地址码转换成与之对应的译码输出线上的有效电平,以表示选中了某一存储单元,然后由驱动器提供驱动电流去驱动相应的读/写电路,完成对被选中存储单元的读/写操作。 I/O和读/写电路包括读出放大器、写入电路和读/写控制电路,用以完成被选中存储单元中各位的读出和写入操作。 存储器的读/写操作是在控制器的控制下进行的。半导体存储芯片中的控制电路,必须在接收到来自控制器的读/写命令或写允许信号后,才能实现正确的读/写操作。
12
四.存储系统层次结构 为了解决存储容量、存取速度和价格之间的矛盾,通常把各种不同存储容量、不同存取速度的存储,按一定的体系结构组成起来,形成一个统一整体的存储系统。 由高速缓冲存储器、主存储器、辅助存储器构成的三级存储系统可以分为两个层次,其中高速缓冲存储器和主存之间称为Cache-主存层次,主存和辅存间称为主存-辅存层次。
13
1.Cache-主存层次 Cache CPU 主存 辅助硬件 (存储器控制电路)
Cache和主存之间的速度大约相差一个数量级,为了弥补主存速度的不足,在CPU和主存间设置Cache。CPU在某一小段时间内所在访问的程序和数据被事先从主存中调入Cache,当CPU需要这些程序和数据时,就直接去Cache中读取,这样就大大提高存取速度。 Cache-主存层次的存取速度接近于Cache的存取速度,但容量接近于主存,每位价格也接近于主存的每位价格,因此解决了高速度和低成本之间的矛盾。由于这个层次完全由硬件实现,不用系统辅助软件干预,所以对用户是透明的。
14
2.主存-辅存层次 主存 CPU 辅存 三级存储系统的总效果是:存取速度接近于Cache水平,存储容量非常之大,整个价格也比较合理。
辅助软硬件 辅存是主存的补充,用来存放暂时不用的程序和数据,当需要时,再调到主存中去。主存-辅存层次通过附加的硬件及存储管理软件来控制。辅存只与主存交换信息,CPU不能直接访问辅存。 主存-辅存层次的存取速度接近于主存的存取速度,容量则接近于辅存的容量,而每位平均价格也接近于廉价有辅存平均价格,从而解决了大容量和低成本间的矛盾。 三级存储系统的总效果是:存取速度接近于Cache水平,存储容量非常之大,整个价格也比较合理。
15
4.2 读/写存储器(随机存储(RAM)) TTL型 双极型 速度很快、功耗大、容量小 ECL型 工艺 PMOS 电路结构 NMOS
功耗小、容量大 (静态MOS除外) 工作方式 静态MOS 动态MOS ECL:发射集耦合逻辑电路的简称 CMOS
16
静态存储器SRAM(双极型、静态MOS型)
依靠双稳态电路内部交叉反馈的机制存储信息。 功耗较大,速度快,作Cache。 存储信息原理 动态存储器DRAM(动态MOS型):依靠电容存储电荷的原理存储信息。功耗较小,容量大,速度较快,作主存。 SRAM:利用双稳态触发器来保存信息,只要不断电,信息 是不会丢失的,因为其不需要进行动态刷新,故称为 “静态”存储器。 DRAM:利用MOS电容存储电荷来保存信息,使用时需要 给电容充电才能使信息保持,即要定期刷新。
17
一、SRAM 1、六管静态基本存储电路(P107图4.2) (1)为什么说六管静态基本存储电路是利用双稳态触发器来保存信息? (2)如何写“0”?如何写“1”? (3)T5、T6管的作用是什么?
18
字选择线 VDD T4 T3 VGG T5 A B T6 T2 T1 位线2 位线1 Vss
其中:T1~T4-构成基本RS F/F用来存储一位二进制信息. T5、T6:构成读写控制门,用来传送读写信号。 电路中有一条字线:用来选择这个记忆单元。 有两条位线:用来传送读写信号。 字选择线 VDD T4 T3 VGG T5 A B T6 T2 T1 位线2 位线1 Vss A=1,B=0:T1止,T2通,记忆单元存储“0” A=0,B=1:T1通,T2止,记忆单元存储“1” 字线=“0”,记忆单元未被选中,T5、T6止,F/F与位线断开,原存信息不会丢失,称保持状态。 字线=“1”,记忆单元被选中,T5、T6通,可进行读、写操作。
19
※读操作※ 因为T5、T6通=>则A、B点与位线1、位线2相连。 若记忆单元为“1”=>A=0,B=1。
这样根据两条位线上哪一条产生负脉冲判断读出1还是0。 字选择线 位线2 位线1 Vss T1 T2 T6 T5 T3 T4 VGG VDD A B
20
※写操作※ 字选择线 位线2 位线1 Vss T1 T2 T6 T5 T3 T4 VGG VDD A B
若要写入“1”,则使位线1输入“0”,位线2输入“1”,它们分别通过T5、T6管迫使T1通、T2止=>A=0,B=1,使记忆单元内容变成“1”,完成写“1”操作. 若要写入“0”,则使位线1输入“1”,位线2输入“0”,它们分别通过T5、T6管迫使T1止、T2通=>A=1,B=0,使记忆单元内容变成“0”,完成写“0”操作 在该记忆单元未被选中或读出时,电路处于双稳态,F/F工作状态由电源VDD不断给T1、T2供电,以保持信息,但是只要电源被切断,原存信息便会丢失,这就是半导体存储器的易失性。
21
2. 16X1位静态存储器结构图
22
T1~T6:存储单元(1bit) 16个存储单元排列成4*4矩阵的形式,每个存储单元被连接到不同字线、位线的交叉处,并加上读/写控制电路,用地址编译器提供字线、位线选择信号。 要访问16个存储单元,需要4位地址A0~A3,A0~A1:行地址,经X译码器产生4个译码信号来选择4行。 A2~A3:列地址,经Y译码器产生4个译码信号来选择4列。 这样用4位地址A0~A3可选中行、列交叉处的存储单元。 为了用Y译码信号选择一列,在每个存储单元处加两个MOS管T7、T8。 用于选择把指定列的全部存储单元的T5、T6管与该列的位线1、位线2连接,而其他各列的全部存储单元都与对应列的位线1、位线2断开。
23
当一个存储单元被选中,它的字线使该存储单元的T5、T6管导通。列线把该存储单元的T7、T8管导通。
若 ,执行写操作,写入数据DIN,经T5、T6、T7、T8,写入F/F。 若 ,执行读操作,F/F的状态经T5、T6、T7、T8和位线1、位线2,送入读出放大器,得到读出数据信号Dout. 教材上P109图4.4 1K*1位 1k=210,需要10根地址线。 A0~A4:X地址译码器 A5~A9:Y地址译码器 组成32*32的存储矩阵 控制端:
24
3.时序(Intel2114—1K×4位的SRAM) ※读时序※ CPU通过AB把要读取的存储单元地址传送到相应的芯片读取地址引脚 激活片选信号 ( =0),并发出读取命令以( =1),经过一段时间,从芯片数据端输出有效数据。 读出数据经DB送至目的地后,片选和读命令撤消。读周期结束。
25
※写时序※ CPU通过AB确定要写入信息的位置,并把要写入的数据传输到DB。
激活片选信号 ( =0),并发出写取命令 ( =0),将已传输过来的数据写入相应的地址单元。片选和写命令撤消。写周期结束。
26
特点:三管单元布线较复杂,所用元件较多,但电路稳定。
二、DRAM 1、三管动态存储单元 ⑴什么状态表示存入“0”?什么状态表示存入“1”? ⑵如何写“0”?如何写“1”?“1”信号写入后是否能长时间保持? ⑶如何读出“0”、“1”信号? 特点:三管单元布线较复杂,所用元件较多,但电路稳定。 定义: “0”—C上有足够的电荷,T2导通。 “1”--C上无电荷或电荷很少,不能使T2导通。 读出:读出数据线预充电至“1”,读出选择线“1”,T3导通。 若C上充有电荷,T2导通,读出数据线经T2、T3接地,读出电压为“0”。 若C上无电荷,T2截止,读出数据为“1”。 写入:在写入选择线上加“1”,在写入数据线上加写入信号 ,T1导通。C随写入信号而充电或放电(“0”放电,“1”充电)。若T1截止,C的电压保持不变。
27
1)原有“1”CS上充有电荷T管在位线上产生读电流完成读“1”操作。
2、单管动态存储单元 (1)读数据 数据线预充电至“1”,字线来“1”,T导通. 1)原有“1”CS上充有电荷T管在位线上产生读电流完成读“1”操作。 2)原存“0”CS无电荷T管在位线上不产生读电流完成读“0”操作。 读完成后,CS上的电荷被泄放完,因此是破坏性读出,必须采用重写再生措施。 Cs不能做得太大,一般比位线上寄生电容Cd还要小,读出时,T导通,电荷在Cs与Cd间分配,会使读出电流信息减少。 用单管作为存储器,读出放大器的灵敏度应具有较高的灵敏度,因为信息保持保存在很小的Cs上,也只能保持2ms,必须定时刷新。
28
(2)写数据 字线来“1”,T导通,电路被选中。
1)若数据线为“0”且CS上无电荷准备写“1”则VDD要对Cs充电,Cs上存储一定电荷“1”已写入。 2)若数据线为“1”且CS存有电荷准备写“0”则Cs通过T放电使Cs上无电荷“0”写入 3)如果写入的数据与Cs中原存储信息相同,则Cs中原存储有无电荷的情形不会发生变化。 优点:线路简单,单元占用面积小,速度快。 缺点:读出是破坏性的,要重写,另外要有较高灵敏度的 放大器。
29
⑴16K个基本存储电路如何排列? ⑵A0~A6引脚的功能是什么? 3、DRAM存储器框图 ⑶RAS、CAS、WE信号的作用及时序如何?
30
4.再生 DRAM是通过把电荷充积到MOS管的栅极电容或专门的MOS电容中去来实现信息存储的。但是由于电容漏电阻的存在,随着时间的增加,其电荷会逐渐漏掉,从而使存储的信息丢失。为了保证存储信息不遭破坏,必须在电荷漏掉以前就进行充电,以恢复原来的电荷。把这一充电过程称为再生,或称为刷新。对于DRAM,再生一般应在小于或等于2ms的时间内进行一次。SRAM则不同,由于SRAM是以双稳态电路为存储单元的,因此它不需要再生。
31
DRAM采用“读出”方式进行再生。 利用单元数据线上的读出放大器来实现。 读出放大器在读出存储单元的信息并进行放大的同时,将所读出的信息重新写入该存储单元,从而完成存储器的再生(刷新)。 一般DRAM的再生时间应<=2ms 由于DRAM每列都有自己的读出放大器,只要依次改变行地址轮流进行读放再生即可。这种方式称行地址再生方式。
32
5.DRAM与SRAM的比较 DRAM的优点 (1)每片存储容量较大;引脚数少。 (2)价格比较便宜。
4.3 非易失性半导体存储器(自学) 4.4 DRAM的研制与发展(自学)
33
常用的半导体存储器芯片有多字一位片和多字多位(4位、8位)片,如16M位容量的芯片可以有16M l位和4M 4位等种类。
4.5 半导体存储器的组成与控制 常用的半导体存储器芯片有多字一位片和多字多位(4位、8位)片,如16M位容量的芯片可以有16M l位和4M 4位等种类。 一.存储器容量扩展 (1)位扩展 概念:位扩展指的是用多个存储器器件对字长进行扩充。 方法:位扩展的连接方式是将多片存储器的地址、片选CS、读写控制端R/W相应并联,数据端分别引出。
34
例:16K 4位芯片组成16K 8位的存储器
35
概念:字扩展指的是增加存储器中字的数量。
(2)字扩展 概念:字扩展指的是增加存储器中字的数量。 方法: 静态存储器进行字扩展时,将各芯片的地址线、数据线、读写控制线相应并联,而由片选信号来区分各芯片的地址范围。 动态存储器一般不设置CS端,但可用RAS端来扩展字数。只有当RAS由“1”变“0”时,才会激发出行时钟,存储器才会工作。
36
例: 4个16K 8位静态芯片组成64K 8位存储器。
37
(3)字位扩展 实际存储器往往需要字向和位向同时扩充。一个存储器的容量为M N位,若使用L K位存储器芯片,那么,这个存储器共需要 个存储器芯片。
38
例:由Intel2114(1K 4位)芯片组成容量为4K 8位的主存储器的逻辑框图,说明地址总线和数据总线的位数,该存储器与8位字长的CPU的连接关系。
解:此题所用芯片是同种芯片。 (1)片数=存储器总容量(位)/芯片容量(位) =4K*8/(1K*4)=8(片) (2)CPU总线(由存储器容量决定) 地址线位数=log2(字数)=log2(4K)=12(位) 数据线位数=字长=8(位)
39
(3)芯片总线(由芯片容量决定) 地址线=log2(1K)=10(位) 数据线=4(位) (4)分组(组内并行工作,Cs连在一起,组间串行工作,Cs分别连接译码器的输出) 组内芯片数=存储器字长/芯片字长 =8/4=2(片) 组数=芯片总数/组内片数=8/2=4(组) (5)地址分配与片选逻辑
40
64KB 4KB A15…A12A11 A10 A9…… A0 需12位地址寻址: A11…A0 低位地址分配给芯片,高位地址形成片选逻辑。
任意值 片选 芯片地址 64KB 1K×4 A15…A12A11 A10 A9…… A0 …… 0 …… 1 …… 0 4KB …… 1 需12位地址寻址: …… 0 …… 1 …… 0 A11…A0 …… 1 低位地址分配给芯片,高位地址形成片选逻辑。 芯片 芯片地址 片选信号 片选逻辑 1K A9…A0 CS0 CS1 CS2 CS3 A11A10 1K A11A10 1K A11A10 1K A11A10
41
(6)连接方式:扩展位数,扩展单元数,连接控制线
42
例2. 1.计算容量和芯片数 ROM区:2KB RAM区:3KB 共3片 便于拟定片选逻辑。
例:某半导体存储器,按字节编址。其中: 0000H~07FFH为ROM区、选用EPROM芯片(2KB/片); H~13FFH为RAM区、选用RAM芯片 (2KB/片和1KB/片)。 地址总线A15~A0(低)。给出地址分配和片选逻辑。 1.计算容量和芯片数 ROM区:2KB RAM区:3KB 共3片 先安排大容量芯片(放地址低端),再安排小容量芯片。 存储空间分配: 便于拟定片选逻辑。
43
64KB A15 A14 A13 A12 A11 A10 A9…A0 1K 2K 5KB需13位地址寻址: ROM RAM A12~A0
…… 0 5KB需13位地址寻址: ROM …… 1 …… 0 …… 1 RAM … 0 … 1 A12~A0 低位地址分配给芯片,高位地址形成片选逻辑。 芯片 芯片地址 片选信号 片选逻辑 2K A10 ~ A0 CS0 A12A11 A15A14A13为全0 2K A10 ~ A0 CS1 A12A11 1K A9 ~ A0 CS2 A12A11 A10
44
在存储器中,往往需要增设附加电路。这些附加电路包括地址多路转换线路、地址选通、刷新逻辑,以及读/写控制逻辑等。
二.存储控制 在存储器中,往往需要增设附加电路。这些附加电路包括地址多路转换线路、地址选通、刷新逻辑,以及读/写控制逻辑等。 在大容量存储器芯片中,为了减少芯片地址线引出端数目,将地址码分两次送到存储器芯片,因此芯片地址线引出端减少到地址码的一半。 动态存储器依靠电容电荷存储信息。平时无电 源供电,时间一长电容电荷会泄放,需定期向电容 补充电荷,以保持信息不变。
45
定期向电容补充电荷刷新 1.集中刷新:在一个刷新周期内,利用一段固定的时间,依次对存储器的所有行逐一再生,在此期间停止对存储器的读和写。
R/W 刷新 用在实时要求不高的场合。 2ms 死区 50ns
46
例如:一个存储器有1024行,系统工作周期为 2OOns。RAM刷新周期为2ms。这样,在每个刷新 周期内共有10000个工作周期,其中用于再生的 为1024个工作周期,用于读和写的为8976个工作 周期。 集中刷新的缺点是在刷新期间不能访问存储器,有时会影响计算机系统的正确工作。
47
2.分布式刷新:把刷新操作分散到刷新周期(2ms)内
(2)分步刷新 2.分布式刷新:把刷新操作分散到刷新周期(2ms)内 每隔一段时间刷新一行。 例. 2ms ≈15.6 微秒 128行 每隔15.6微秒提一次刷新请求,刷新一行;2毫秒内刷新完所有行。 R/W 刷新 15.6 微秒 15.6 微秒 15.6 微秒 刷新请求 刷新请求 (DMA请求) (DMA请求) 用在大多数计算机中。
48
动态MOS存储器的刷新需要有硬件电路的支持,包括刷新计数器、刷新访存裁决,刷新控制逻辑等。这些线路可以集中在RAM存储控制器芯片中。
例如Intel 8203DRAM控制器是为了控制2117,2118和2164DRAM芯片而设计的。 2ll7,2118是16KXl位的DRAM芯片,2164是64KXl位的DRAM芯片。图4.21是Intel 8203逻辑框图。根据它所控制的芯片不同,8203有16K与64K两种工作模式。
50
3.存储校验线路 计算机在运行过程中,主存储器要和CPU、各种外围设备频繁地高速交换数据。由于结构、工艺和元件质量等种种原因,数据在存储过程中有可能出错,所以,一般在主存储器中设置差错校验线路。 实现差错检测和差错校正的代价是信息冗余。 早期的计算机多采用奇偶校验电路,只有一位附加位,但这只能发现一位错而不能纠正。 由于大规模集成电路的发展,主存储器的位数可以做得更多,使多数计算机的存储器有纠正错误代码的功能(ECC)。一般采用的海明码校验线路可以纠正一位错。
51
4.6 提高存储器性能技术 速度和容量是存储器的两大主要课题,计算机的发展对存储器不断地提出更高速度和更大容量的要求。除去存储器制造技术在不断发展外,在单机系统中,提高存储器性能的技术还有:双端口存储器、并行主存储器、高速缓冲存储器、虚拟存储器等。 一.存储器制造技术的发展 1.FPM DRAM FPM DRAM(Fast Page Mode DRAM):快页模式DRAM。 传统的DRAM在存取一位数据时,必须分别输入行地址和列地址信息。 FPM DRAM对这种寻址方式做了改进,输入行地址后,若CPU需要的数据在同一行地址内,则可以在同一行连续输出列地址而不必再输出行地址。由于一般的程序和数据在主存中排列的地址是连续的,这种触发行地址的方式能较为快速的获得所需要的数据。
52
2.EDO DRAM EDO DRAM(Extended Data Out DRAM):扩展数据输出DRAM。 传统的DRAM和FPM DRAM在存取每一数据时,输入行地址和列地址后必须等待电路稳定,然后才能有效的读写数据,而下一个地址必须等待这次读/写周期完成才能输出。而EDO输出数据只要定位好要读/写数据的第一位,不管读/写周期是否完成,都可启动下一个读/写周期,从而提高了读/写速度。 3.SDRAM DRAM SDRAM DRAM(Synchronous DRAM):同步主存。 SDRAM以前的DRAM均采用异步读取方式,不与系统外频同步。存取数据时,系统须等待若干时钟周期才能接收和发送数据。SDRAM在同步脉冲的控制下取消了主存等待时间,减少了数据传送的延迟时间,因而加快了系统速度。
53
4.DDR DRAM DDR DRAM(Double Data Rata DRAM):双速率SDRAM。 DDR SDRAM的核心建立在SDRAM的基础上,与SDRAM的主要区别是DDR RAM能在时钟脉冲的上升沿和下降沿读出数据,不需要再提高时钟就能加倍提高SDRAM的速度。 5.RDRAM RDRAM(Rambus DRAM):内部总线DRAM。 是一种存储总线式DRAM存储器,本是为电视游戏机提出的一种内存规则,因为能达到更高的时钟频率,后来Intel联合Micron等10余家半导体厂商发布,并正式命名为DirectRambus DRAM,简称RDRAM。 6.SLDRAM SLDRAM(SyncLink DRAM):同步链接DRAM。 它在速度上最接近于RDRAM,SLDRAM是一种增强和扩展SDRAM架构,它将当前的4体(Bank)结构扩展到16体,并增加了新接口的控制逻辑电路。SLDRAM像SDRAM一样使用每个脉冲的边沿传送数据。
54
6.VCM VCM又称虚拟通道内存(Virtual Channel Memory)。是NEC公司开发出来的新一代DRAM,其原理是在一般的DRAM中加入一个块SRAM作为数据缓存,以维持数据的快速访问,相当于一种具有缓存的存储器。 VCM保持了传统SDRAM的管脚兼容,厂家不需要重新进行主板布线设计就能够使主板支持它,不过,由于它与传统的SDRAM控制方式不同,因此,还需要得到芯片组的支持才能使用。
55
二.双端口存储器 地址寄存器 译码 存储体 数据A 数据B 地址A 地址B 双端口存储器示意图 常规存储器是单端口存储器,每次只接收一个地址,访问一个存储单元,从中读取一个字节或一个字。主存是信息交换的中心,一方面CPU频繁地与主存交换信息,另一方面外设也较频繁地与主存交换信息,而单端口存储器每次只能接受一个访存者,或者读或是写,这就影响了工作速度。为此,在某些系统中使用双端口存储器。 双端口存储器具有两个彼此独立的读/写口,每个读/写口都有一套独立的地址寄存器和译码电路,可以并行地独立工作。两个读/写口可以按各自按收的地址,同时读出或写入,或一个写入而另一个读出。与两个独立的存储器不同,两套读/写口的访存空间相同,可以访问同一存储单元。通常使双端口存储器的一个读/写口面向CPU,另一个读/写口则面向外设或输入输出处理机。 另外,在多机系统中常采用双端口存储器甚至多端口存储器作为各CPU的共享存储器,实现多CPU之间的通信。
56
三.并行主存器 M0 M1 Mn-1 地址译码 MAR 地址 W位 W位 … W位 1.单体多字方式
常规的主存是单体单字存储器,只包含一个存储体。在高速的计算机中,普遍采用并行主存系统,即在一个主存周期内可以并行读取多个字,依靠整体信息呑吐量的提高,以解决CPU与主存之间的速度匹配问题。并行主存有单体多字方式和多体并行和多体交叉方式。 1.单体多字方式 多个并行工作的存储器共有一套地址寄存器和译码电路,按同一地址并行地访问各自的对应单元。 例:CPU送出地址A,则n个存储器中的所有A单元同时被选中。若每个存储器的字长为W位,则同时访问n×W 位,即可以将n 个存储器看作一个大存储器,一次访问n个字,称为单体多字方式。 W位 W位 … W位 M0 M1 Mn-1 地址译码 MAR 地址 单体多字并行主存系统示意图
57
2.多体并行方式 M0 M1 MDR 多体并行主存系统示意图
n个并行的存储器具有各自的地址寄存器、读/写电路和数据寄存器,称为存储模块。它们能各自以同等的方式与CPU传递信息,形成可以同时工作又独立编址且容量相同的n个分存储体,这就是多体方式。 采用多体并行方式的主存系统可以提高系统的呑吐速率,例:当一个体用以执行程序时,另一个体可用来与外设进行信息交换。 MDR M0 地址译码 MAR M1 Mn-1 模块号 块内地址 多体并行主存系统示意图 主存地址寄存器的高位表示模块号,低位表示块内地址。
58
3.多体交叉存储器 计算机中大容量的主存,可由多个存储体组成,每个体都具有自己的读写线路、地址寄存器和数据寄存器,称为“存储模块”。这种多模块存储器可以实现重叠与交叉存取。如果在M个模块上交叉编址(M=2m),则称为模M交叉编址。通常采用的编址方式如图4.22(a)所示。
59
主存地址寄存器的低位部分经译码后选择不同的存储体(m位),而高位部分则指向存储体的存储字。
60
在多体交叉存储器中,连续的地址分布在相邻的存储体中,而同一存储体的地址都是不连续的。这种编址方式又称横向编址。
多体交叉存储器采用分时工作的方法,CPU在一个存取周期内可以分时地访问每个分体。在4个分体完全并行的理想情况下,每隔1/4存取周期启动一个存储体,每个存取周期将可访存4次,使主存的吞吐量提高为原来的4倍。 但在实际应用中,当出现数据相关和转移时,将破坏并行性,不可能达到上述理想值。 注意:多体交叉存储器要求存储体的个数必须是2的整数幂,即必须中2、4、8、16、…个,而且任一分体出现故障都影响整个地址空间的所有区域。
61
例:四个分体组成的多体交叉存储器,四个分体为M0~M3. 其编址如表4.2所示。
62
每一存储模块本身来说,对它的连续两次访问时间间隔仍等于单模块访问周期,但每隔一个T/M就有一个数据存取。
63
四.高速缓冲存储器 大量典型程序的运行分析表明,当CPU从主存中取出指令和数据时,在一个较短的时间间隔内,由程序产生的地址局限在主存空间的某个很小的区域内。这种对局部范围的存储器地址频繁地访问,而对此范围以外的地址访问甚少的现象,称为程序访问的局部性。 高速缓冲技术就是利用程序的局部性原理,把程序中正在使用的部分(活跃块)存放在一个高速的容量较小的存储器(Cache)中,使CPU的访存操作大多数针对Cache进行,从而使程序的执行速度大大提高。 Cache大多采用SRAM器件。随着微机技术的发展,在CPU芯片中也集成了Cache,称为一级Cache(L1 Cache ),安装在主板上的Cache则称为L2 Cache(二级缓存)。Pentium II以后的CPU则将L2 Cache与CPU内核一起封装在一只金属盒内,或者直接把L2 Cache也集成到CPU芯片内,以进一步提高速度。这样,主板上的Cache就称为三级Cache(L3 Cache)了。
64
1.Cache的基本结构 主存有2n个单元,地址码n位,将主存分块,每块有B个字节,则可分成M块。Cache也由同样大小的块组成,由于其容量小,所以块的数目小得多,主存中只有一小部块的内容可放在Cache中。 用主存地址的块号字段访问Cache标记,若相等,说明访问Cache有效,称Cache命中。若不相等,说明访问Cache无效,称Cache不命中或失败。 在Cache中,每一块外加有一个标记,指明它是主存的哪一块的副本,所以该标记的内容相当于主存中块的编号,设主存地址为n位,且n=m+b,则可得出:主存的块数M=2m,块内字节数B=2b。Cache的地址码为(c+b)位。 Cache的块数为2c,块内字节数与主存相同。
65
※命中率※ 指CPU所要访问的信息在cache中的比率.
设cache的存取时间为tc,命中率为h,主存的存取时间为tM,则平均存取时间=h·tc+(1-h)(tc+tM)。
66
若Cache不命中,就直接把信息写入主存,而与Cache无关。
当CPU发出读请求时,若Cache命中,就直接对Cache 进行读操作,与主存无关。若Cache不命中,则必须访问主存,并把该块信息一次从主存调入Cache内。若此时Cache已满,则需根据某种替换算法,用这个块替换掉Cache中原来的某块信息。 (2) Cache的写操作 当CPU发出写请求时,若Cache命中,会遇到如何保持cache与主存中的内容一致的问题。处理的方法有好几种,如: 1)同时写入cache和主存,称为写直达法。这种方式实现简单,而且能随时保持主存数据的正确性。但是,可能增加多次不必要的主存写入。会降低存取速度。 2)信息暂时只写入cache,并用标志将该块加以注明,直到该块从cache中替换出来时才一次写入主存,称为写回法。这种方式操作速度快,但因主存中的字块未经随时修改而有可能出错。 若Cache不命中,就直接把信息写入主存,而与Cache无关。
67
3.地址映像 直接映像函数可定义为:K=I mod 2c 其中:K是Cache的字块号,I是主存的字块号
为了把信息放到Cache中,必须应用某种函数把主存地址映像到Cache中定位,称为地址映像。而将主存地址变换成Cache地址,称做地址变换。地址的映像和变换是密切相关的。 假设某机主存容量1MB,被分为2048块,每块512B; Cache容量为8KB,被分为16块,每块512B。下面以此为例介绍三种基本的地址映像方法。 (1)直接映像 直接映像函数可定义为:K=I mod 2c 其中:K是Cache的字块号,I是主存的字块号 c 为Cache块号的位数,在本例中c=4 主存标记 Cache块号 块内地址 主存地址 主存块号 7位 位 位 Cache块号 块内地址 4位 位 Cache地址
68
0块 1块 … 15块 16块 17块 31块 2032块 2033块 2047块 0区 1区 127区 标记 Cache 7位 主存储器
访存时,给出20位主存地址,其中高11位为主存块,低9位为块内地址。为了实现Cache的地址映像和变换,将高11位进一步分为两部分:高7位给出主存标记,低4位给出Cache的块号,所以,主存地址的低13位也就是变换后的Cache地址。 在Cache方面,为每一块设立一个7位的Cache标记。若现在Cache第0块中复制的是主存中的第16块的内容,其标记段为1,标志它现在与主存的第1组对应。因此在访存时,只须比较主存地址中高7位的标记段与对应Cache块的7位标记。若两都者相同,表明所需访问主存块内容现在复制于对应的Cache块之中。
69
直接映像的优点是实现简单,只需利用主存地址按某些字段直接判断,即可确定所需字块是否已在Cache存储器中。
直接映像方式的缺点是不够灵活,Cache的存储空间得不到充分利用。例:若要将主存第0块与第16块同时复制到Cache 中,由于它们只能复制到Cache的第0块中去,即使Cache中别的存储空间空着也也不能占用。所以将有一个主存块不能写入Cache,从而使块冲突概率较高。
70
(2)全相联映像 它允许主存中的任何一块都可以映像到Cache中的任何一块位置上。 0块 1块 … 15块 2047块 主存储器 Cache
标记 Cache 11位 (2)全相联映像 它允许主存中的任何一块都可以映像到Cache中的任何一块位置上。 Cache块号 块内地址 4位 位 Cache地址 主存标记 块内地址 主存地址 11位 位 缺点:由于Cache标记太长,所以需要很长时间才能 判断出所需的主存字块是否在cache中,实现起来比较困难。 优点:全相联映像方式比较灵活,主存的各块可映像到Cache的任一块去,Cache的利用率高,块冲突概率低,只要淘汰Cache 中的某一块,即可调入主存的任一块。
71
(3)组相联映像 0块 1块 … 7块 8块 9块 15块 2040块 2041块 2047块 0组 1组 255组 … 主存储器 0块
2块 3块 14块 15块 标记 Cache 8位 7组 (3)组相联映像 0块 1块 … 7块 8块 9块 15块 2040块 2041块 2047块 组相联映像实际上是直接映像和全相联映像的折衷方案。主存和Cache都分组,主存中一个组内的块数与Cache中的分组数相同。 组间采用直接映像,组内采用全相联映像,例:主存分为256组,每组8块,Cache分为8组,每组2块。 主存中的各块与Cache的组号间有固定的映像关系,但可自由映像到对应的Cache组中的任何一块。如:主存中的第0块、第8块均映像于Cache的第0组,但可映像于Cache的第0块或第1块,主存中的第1块、第9块均映像于Cache的第1组,但可映像于Cache的第2块或第3块。 3位 位 位 Cache组号 组内块号 块内地址 Cache地址 7位 位 位 位 主存标记 Cache组号 主存标记 块内地址 主存地址 主存组号8位
72
Cache中每组有若干可供选择的块,因而较直接映像方式灵活,又由于Cache的标记比全相联映像方式短,所以判断的速度较快。
7位 位 位 位 主存标记 Cache组号 主存标记 块内地址 主存地址 主存组号8位 访存时,给出20位主存地址,分为四部分。主存地址的低13位即是Cache地址,它包括Cache组号、组内块号和块内地址。 Cache中的每一块设有8位标记,填写所复制的主存块的组号,以便与主存块标记进行比较。 Cache中每组有若干可供选择的块,因而较直接映像方式灵活,又由于Cache的标记比全相联映像方式短,所以判断的速度较快。
73
4.替换算法 在采用全相联映像和组相联映像方式从主存向Cache传送一个新块,而Cache中的可用位置已被占满时,就产生了替换算法的问题。常用的方法有下述两种: (1)FIFO算法 思想:按调入Cache的先后决定淘汰的顺序,即在需要更新时,将最先进入Cache的块作为被替换的块。 这种方法不需要随时记录各个块的使用情况,容易实现,且系统的开销小。 缺点:可能会把一些需要经常使用的程序块(如:循环程序)也作为最早进入的Cache的块替换掉。
74
(2)LRU算法 思想:把CPU近期最少使用的块作为被替换的块,这种替换方法需要随时记录Cache中各块的使用情况,以便确定哪个块是近期最少使用的块。 LRU算法相对合理,但实现起来比较复杂,系统开销较大 ,通常需要对每一块设置一个称为“ 年龄计数器”的硬件或软件计数器,用以记录其被使用的情况。 无论是FIFO还是LRU算法,都不能肯定调出去的块近期将绝不会再被使用,所以这两种算法都不能算作最合理、最优秀的算法。但研究表明,采用这两种算法后可使Cache的命中率达到90%,其中LRU算法略优于FIFO算法。这在实际使用中已经是很不错的了。
75
五.虚拟存储器 一.虚拟存储器的基本概念 虚拟存储器是建立在主存一辅存层次上的由附加硬件装置及操作系统存储管理软件组成的存储体系。
虚拟存储器将主存或辅存的地址空间统一编址,形成一个宠大的存储空间。在这个大空间里,用户可以自由编程,完全不必考虑程序在主存是否装得下以及这些程序将来放在主存中的实际存放位置。 用户编程的地址称为虚地址或逻辑地址,实际的主存单元地址称为实地址或物理地址,显然虚地址要比实地址大得多。 在实际的物理存储层次上,所编程序和数据在操作系统管理下,先送入磁盘,然后操作系统将当前运行所需要的部分调入主存,供CPU使用,其余暂不运行部分留在磁盘中。 程序运行时,CPU以虚地址来访问主存。由辅助硬件找出虚地址和实地址之间的对应关系,并判断这个虚地址指示的存储单元内容是否已装入主存。若已在主存中,则通过地址变换,可直接访问主存的实际单元,若不在主存中,则把包含这个字的一个程序块调入主存后再由CPU访问,若主存已满,则由替换算法从主存中将暂不运行的一块调回辅存,再从辅存调入新的一块到主存。 虚拟存储器和Cache-主存有不少相同之处。只不过后者的控制完全由硬件实现,而前者的控制是软硬件相结合的,对于设计存储管理软件的系统程序员来说是不透明的,对于应用程序员来说是透明的。
76
2.虚拟存储器 (1)页式虚拟存储器 以页为基本单位的虚拟存储器叫页式虚拟存储器。
各类计算机页面大小不等,一般为512B到几KB。主存空间和虚存空间都划分成若干个大小相等的页。主存即实存的页称为实页,虚存的页称为虚页。 程序虚地址分为两个字段:高位字段称为虚页号,低位字段为页内地址。虚地址到实地址之间的变换是由页表来实现的。 页表:一张存放在主存中的虚页号和实页号的对照表,记录着程序的虚页调入主存时被安排在主存中的位置。若计算机采用多道程序工作方式,则可为每个用户作业建立一个页表,硬件中设置一个页表基址寄存器,存放当前所运行程序的页表的起始地址。 页表每一行:记录了与某个虚页对应的若干信息,包括虚页号、装入位和实页号等。
77
虚页号 页内地址 实页号 页表地址 页内地址 页表基址寄存器和虚页号拼接成页表索引地址。根据这个索引地址可读到一个页表信息字,然后检测页表信息字中装入位的状态。若装入位为“1”,表示该页面已在主存中,将对应的实页号与虚地址中的页内地址相拼接就得到完整的实地址。若装入位为“0”,表示该页面不在主存中,于是要启动I/O系统,将该页从辅存中调入主存后再供CPU使用。
78
相联存储器不按地址访问存储器,而按所存数据字的全部内容或部分内容进行查找(或检索)。
从上述地址变换可知:CPU访存时首先要查页表,为此需要访问一次主存,若不命中,还要进行页面替换和页表修改,则访问主存的次数就更多了。为了将访问页表的时间降低到最低限度,许多计算机将页表分为快表和慢表两种。将当前常用的页表信息存放在快表中,作为慢表局部内容的副本。快表很小,存储在一个快速小容量的存储器中。该存储器是一种按内容查找的联想存储器,可按虚页号名字进行查询,迅速找到对应的实页号。 若计算机采用多道程序工作方式,则慢表可有多个,但全机只有一个快表。 采用快、慢表结构后,访问页表的过程与访问Cache的工作原理很相似,即根据虚页号同时访问快表和慢表, 若该页号在快表中,就能迅速找到实页号并形成实地址。 页式虚拟存储器的每页长度是固定的,页表的建立很方便,新页的调入也容易实现。但是由于程序不可能正好是页面的整倍数,最后一页的零头将无法利用而造成浪费。同时,页不是逻辑上独立的实体,使程序的处理、保护和共享都比较麻烦。
79
段是按照程序的逻辑结构划分的,各个段的长度因程序而异。为了把程序的虚地址变换成主存实地址,需要一个段表。
(2) 段式虚拟存储器 段是按照程序的逻辑结构划分的,各个段的长度因程序而异。为了把程序的虚地址变换成主存实地址,需要一个段表。 段表中每一行:记录了某个段对应的若干信息,包括段号、装入位、段起点和段长等。段表一般驻留在主存中。这里段号指虚拟段号,装入位为“1”,表示该段已调入主存,装入位为“0”,表示该段不在主存中。由于段的大小可变,所以在段表中要给出各段的起始地址与段的长度。段表实际上是程序的逻辑结构段与其在主存中所存放的位置之间的关系对照表。
80
· … 段表地址 段基起始地址 段号 段内地址 段表起始地址 段表 主存地址 编程使用的虚地址包含两部分:高位是段号,低位是段内地址。
段号 段内地址 … 主存地址 段表 实地址 虚地址 段基起始地址 编程使用的虚地址包含两部分:高位是段号,低位是段内地址。 CPU根据虚地址访存时,先将段号与段表的起始地址相拼接,形成访问段表对应行的地址,然后根据段表内装入位判断该段是否已调入主存。若已调入主存,从段表读出该段在主存中的起始地址,与段内地址(偏移量)相加,得到对应的主存实地址。
81
由于段的分界与程序的自然分界相对应,所以具有逻辑独立性,易于程序的编译、管理、修改和保护 。也便于多道程序共享。但是,因为段的长度参差不齐,起点和终点不定,给主存空间分配带来了麻烦,容易在段间留下不能利用的零头,造成浪费。 (3) 段页式虚拟存储器 在段式、页式存储器的基础上,还有一种段页式虚拟存储器。将程序按其逻辑结构分段,每段再划分为若干大小相等的页。主存空间也划分为若干同样大不的页,虚存和实存之间以页为基本传送单位,每个程序对应一个段表,每段对应一个页表。 CPU访问时,虚地址包含段号、段内页号、页内地址三部分。首先将段表起始地址与段号合成,得到段表地址,然后从段表中取出该段的页表起始地址,与段内页号合成,得到页表地址;最后从页表中取出实页号,与页内地址拼接形成主存实地址。 段页式虚拟存储器综合了前两种结构的优点,但要经过两级查表才能完成地址转换,费时要多些。
82
※存储管理部件(MMU) ※ 现代计算机一般都有辅助存储器,但具有铺存的存储系统不一定是虚拟存储系统。 虚拟存储系统有两大特点:
(1)允许用户用比主存空间大得多的空间来访问主存。 (2)每次访存都要进行虚实地址的转换。 为了实现逻辑地址到物理地址的转换,并在页面失效时(即被访问的页面不在主存)进入操作系统环境,设置了由硬件实现的存储管理部件MMU,而整个虚拟存储器的管理是由MMU部件与操作系统共同完成的。
83
作业 4.5 4.7
Similar presentations