Download presentation
Presentation is loading. Please wait.
Published byDorothée Larrivée Modified 6年之前
1
第3章 存储系统 本章内容: 存储器概述 随机读写存储器 只读存储器和闪速存储器 高速存储器 cache存储器 虚拟存储器 存储保护
2
3.1存储器概述 存储器是计算机中的记忆设备,它主要负责存放数据和程序。
构成存储器的存储介质,目前主要采用半导体器件和磁性材料。存储器中最小的存储单位就是一个双稳态半导体电路或一个CMOS晶体管或磁性材料的存储元,它可存储一个二进制代码。由若干个存储元组成一个存储单元,然后再由许多存储单元组成一个存储器。
3
存储器的分类 -按存储介质分 半导体存储器:用半导体器件组成的存储器。 磁表面存储器:用磁性材料做成的存储器。 -按存储方式分
随机存储器:存取时间和存储单元的物理位置无关。 顺序存储器:存取时间和存储单元的物理位置有关。 -按存储器的读写功能分 只读存储器(ROM):只能读出而不能写入的半导体存储器。 随机读写存储器(RAM):既能读出又能写入的半导体存储器。 -按信息的可保存性分 非永久记忆的存储器:断电后信息即消失的存储器。 永久记忆性存储器:断电后仍能保存信息的存储器。 -按在计算机系统中的作用分 主存储器、辅助存储器、高速缓冲存储器、控制存储器等。
4
存储器的分级结构 CPU 内部存储器 Cache 三级存储模式 外部存储器
5
主存储器的技术指标: 1)存储容量:指主存能存放二进制代码的总数。
现代计算机中用半导体触发器的两个状态表示1和0,一个半导体触发器可以保存一个二进制数,称为一个bit(位),8个触发器可以保存八个二进制数,称为一个BYTE(字节)。两个字节称为一个WORD(字)。 2)存储速度 a.存取时间(访问时间) :指从一次读(写)操作命令发出到该操作完成将数据读到数据缓冲寄存器为止所经历的时间。以ns为单位,存取时间又分读出时间、读入时间两种。 b.存取周期 :指存储器连续启动两次独立的操作所需间隔的最小时间,以ns为单位,存取周期=存取时间+等待时间。 c.存储器带宽:每秒从存储器进出信息的最大数量,单位为位/秒或者字节/秒。如存取周期为500ns,每个存取周期可访问16位,则存储器带宽为: 16位/(500 ╳10-9)秒=3.2 ╳ 107 位/秒 = 32 ╳ 106 位/秒 = 32M位/秒
6
存储器与CPU的连接 CPU与存储器的信息交换主要依靠系统总线来完成,根据总线传递信息的不同,系统总线被分为数据总线,地址总线和控制总线三大类。 -数据总线DB(data bus):传输CPU与存储器之间的二进制数据,双向线。数据总线的位数决定了CPU一次可以和存储器交换数据的位数,是微型机的重要指标。 -地址总线AB(address bus):传输CPU送出的地址信息,用来确定和CPU交换数据的存储单元,单向线。地址总线的位数决定了CPU可以直接寻址的内存空间。 可寻址空间=2n (n为地址总线的位数) -控制总线CB(control bus):传输CPU发出的控制信号,包括片选信号、读/写信号,存储器/IO端口访问信号,双向线。
7
-地址译码驱动方式:根据地址总线的信息选中存储元的过程。
译码电路 0# 1# 2# 3# A1 A0 译码电路 0# 1023# A9 A0 … … … 1 单译码:译码器只有一个,译码器的输出称为字选择线,被选单元由字选择线直接选定,地址输入线有N根,则能够确定2n个字地址,该方式下译码输出线过多,只适用于容量较小的存储芯片。
8
双译码:译码器有两个,X译码器称为行译码器,决定选中某行,Y译码器称为列译码器,决定选中某列,被选单元由X、Y两个方向的译码输出决定。该方式可以极大的节省译码输出线。
9
A3 A0 A2 A1 地址总线 1 处理器 控制总线 M/IO WR 1 1 D0 数据总线
10
半导体存储器的结构 -存储体:由存储元按照一定的规则排列而成的矩阵,存储体中的每一个单元只能存储一位二进制值。
-地址译码电路:包括地址寄存器和地址译码器,地址寄存器用来对地址总线的数据锁存,地址译码器对地址译码选中存储体中的某个确定的存储单元, -控制电路:给出读/写控制信号以及芯片选择信号确定对某个存储单元的具体操作。 -读/写电路:包括读/ 写放大器和数据寄存器,读写放大器对数据放大,数据寄存器暂存写入存储器或者从存储器中读出的数据。
11
行地址译码器 存储器 列地址译码器 地址寄存器 … … 读写放大器 数据寄存器 控制电路 … … 半导体存储器的结构 A19~A0 RD
… … 读写放大器 数据寄存器 控制电路 A19~A0 RD WR M/IO … … D15~D0 半导体存储器的结构
12
3.2 随机读写存储器 静态MOS存储器(SRAM) 动态MOS存储器(DRAM) 主存储器组成实例 高性能存储器
3.2 随机读写存储器 静态MOS存储器(SRAM) 动态MOS存储器(DRAM) 主存储器组成实例 高性能存储器 目前广泛使用的随机读写存储器是MOS管半导体存储器,根据存储信息原理的不同分静态存储器和动态存储器。 半导体存储器的优点是存取速度快,存储体积小以及可靠性高,价格低廉。半导体存储器的缺点是断电后不能保持信息。
13
SRAM存储器:静态RAM -六管存储元: 信息保持:T1和T2管为工作管
若T1管截止,则A点为高电平,使T2管导通,此时B点处于低电平,而B点的低电平会使A点更加截止,这是稳定状态。 若T1管导通,则A点为低电平,使T2管截止,此时B点处于高电平,而B点的高电平会使A点更加导通,这是稳定状态。 电路有两种稳定状态,而且A和B点的电位总相反,假设以A点的高电平表示1,低电平表示0,那么这个触发器电路就能稳定的表示一个二进制数。 1 1
14
SRAM存储器:静态RAM -六管存储元:
T5~T8管为控制管,当存储元组成存储器时,必须能按照地址选择存储元对其进行操作,如果一个存储元被选中,则其X地址译码线和Y译码线均处于高电平。 X地址译码线为高电平时,就会使T5和T6管导通, Y地址译码线为高电平时,就会使T7和T8管导通,这样输入输出的I/O与I/O就会与A和B点相连,从而使A和B的信息0和1输出到I/O与I/O上,反之I/O与I/O上的信息0和1输入到A和B上。 1 1 1 1
15
SRAM存储器:静态RAM -六管存储元: 写入:若某个存储元被选中,则该存储元的T5,T6,T7,T8管均导通,写1时,在I/O线上输入高电位,在I/O线上输入低电位,把高、低电位分别加在A,B点,使T1管截止,使T2管导通,将1写入存储元。 读出:若某个存储元被选中,则该存储元的T5,T6,T7,T8管均导通,A,B两点与位线D与D相连存储元的信息被送到I/O与I/O线上。I/O与I/O线接着一个差动读出放大器 ,从其电流方向可以判知所存信息是1还是0。 1 1
16
Inter2114,1K×4位,片上有4096个六管存储元电路,排成64×64方阵,地址线10位(A0~A9), 其中A3~A8(6根)用于行译码→64行,A0~A2,A9用于列译码→16条列选线, 每条线同时接4位(共16×4=64列)
17
存储器扩展 CPU对存储器进行读/写操作,首先由地址总线给出地址信号,然后要发出读操作或写操作的控制信号,最后在数据总线上进行信息交流,要完成地址线的连接、数据线的连接和控制线的连接。 存储器芯片的容量是有限的,为了满足实际存储器的容量要求,需要对存储器进行扩展。主要方法有: -位扩展:存储器的存储单元数不变,每个单元的位数(字长)增加。 例:由8K×1位的芯片构成8K×8位的存储器 分析:可用芯片8K×1:指8K个单元,每单元为1位。 存储器8K×8:8K个单元,每单元为8位。要13根地址线,8根数据线 方法:共需8片芯片, 地址总线(13根):将所有地址线并联入所有芯片; 数据总线(8根):每条数据线1片连1位 控制线:CE并联(全选),WE并联。
19
-字扩展:每单元位数不变,增加单元个数。
例:用16K×8的芯片构成64K×8的存储器 分析:可用芯片16K×8:16K个单元,每单元为8位。 存储器64K×8:64K个单元,每单元为8位。要16根地址线,8根数据线 方法:共需4片芯片, 数据总线:每片芯片的数据线分别与数据总线D0~D7相连 地址总线:每片芯片的是16K,需要14位地址线,将地址总线的低位地 址A0~A13连入各芯片,高两位通过译码器作片选信号 控制线:CE接高两位地址的译码输出,WE串联接入每个芯片。 4片地址分配: 第1片 即 0000H~3FFFH 第2片 即 4000H~7FFFH 第3片 即 8000H~BFFFH 第4片 即 C000H~FFFFH
21
-字位同时扩展法:一个存储器的容量假定为M×N位,若使用L×k 位的芯片(L<M,k<N),需要在字向和位向同时进行扩展,共需要(M/L)×(N/k)个存储器芯片。
例:用1K×4的芯片构成4K×8的存储器 分析:4K×8指4K个单元(12根地址线),每单元为8位(8根数据线)。 方法:1)共需2片芯片进行位扩展,构成1K*8的存储器。 地址总线:将地址线的A0~A9并联入所有芯片; 数据总线:1片芯片连数据线4位,共8位; 控制线:CE并联(全选),WE并联。 2)共需4组芯片(每组两片)进行字扩展,构成4K*8的存储器。 数据总线:每组芯片的数据线分别与数据总线D0~D7相连 地址总线:每组芯片的是1K,需要10位地址线,将地址总线的低 位地址A0~A9串连入各芯片,高两位地址通过译码器 作作为4组芯片的片选信号。 控制线:CE接高两位地址的译码输出,WE串联接入每个芯片。
22
- 存储器的读周期 当CPU与存储器连接时,读出数据的过程如下: 1)cpu通过地址总线给出有效的地址信号,确定存储器的唯一单元
2)当主存由多片存储器构成时,给出片选信号,选中唯一一片的存储器 3)选中的存储单元的数据出现在数据总线上,cpu读入数据。 因此cpu的控制信号和与存储器的读、写周期配合问题非常重要 从给出有效地址到外部数据总线上稳定地出现所读 出的数据信息所经历的时间 存储片进行两次连续读操作时所必须间隔的时间,在整 个读周期中,地址信号保持始终有效
23
当CPU与存储器连接时,写出数据的过程如下:
-存储器的写周期 当CPU与存储器连接时,写出数据的过程如下: 1)cpu通过地址总线给出有效的地址信号,确定存储器的唯一单元 2)当主存由多片存储器构成时,给出片选信号,选中唯一一片的存储器 3)cpu给出有效的写信号,并将写入存储器的数据放在数据总线上。 4)数据总线上的数据送存储单元。 为了保证避免发生错误写入,地址信号有效有效在经过一 段时间后,写信号才能有效。 为了在地址变化期间发生避免发生错误写入,写信号 在变为高电平经过一段时间后地址信号才能改变。
24
【例1】下图是SRAM的写入时序图。其中R/W是读/写命令控制线,当R/W线为低电平时,存储器按给定地址把数据线上的数据写入存储器。请指出下图写入时序中的错误,并画出正确的写入时序图。
R/W线加负脉冲时,地址线和数据线的电平必须是稳定的。当R/W线达到低电平时,数据立即被存储。 因此,当R/W线处于低电平时,如果数据线改变了数值,那么存储器将存储新的数据⑤。 当R/W线处于低电平时地址线如果发生了变化那么同样数据将存储到新的地址②或③。
25
DRAM存储器:动态RAM -单管存储元: 写入:字选择线为“1”,T1管导通,写入信息由位线(数据线)存入电容C中;
读出:字选择线为“1”,存储在电容C上的电荷,通过T1输出到数据线上,通过读出放大器即可得到存储信息。 刷新:电容C上存储的信息电荷有泄漏,随着时间增长会丢失信息,必须由外界按一定的规律给它充电,补充信息电荷,这一过程称为“刷新”。 优点:单管电路的优点是管子少,集成度高,芯片面积小 缺点:刷新困难,读出的1和0需要读出放大器配合。
26
刷新:读出时,D上的电荷通过A点向电容C2补充,完成刷新。
-四管存储元: 写操作: I/O与I/O加相反的电 平,字选择线使T5和T6导通,信息送AB端。当T5,T6截止时,靠T1和T2管栅极电容的存储作用保留所写入的信息。 读操作: 先给出预充信号,使T9与T10管导通,位线D和D上的电容都达到电源电压。字选择线使T5和T6管导通时,假设存储的信息为“1”,电容C2的存储电荷使T2导通,D上的预充电荷经过T2泄漏,故D为“0”,而D上的预充电荷没有泄漏,仍为“1”,信号经过I/O与I/O输出。 刷新:读出时,D上的电荷通过A点向电容C2补充,完成刷新。 1 1 1 1
27
- DRAM的刷新 为什么要刷新? 因为靠电容存储电荷的原理保存信息,而电荷一般只能保持1~2ms,所以必须在2ms内对其所有存储单元通过读取动作(不输出读取结果)恢复一次原状态,该过程叫刷新或再生。 什么是刷新周期? 在刷新的过程中,依次使行选择线(字选择线)有效,每次再生一行,即可完成对整个存储器的刷新。从上一次对整个存储器刷新结束到下一次对整个存储器全部刷新一遍为止的时间称为刷新周期,一般2ms。 刷新的方式有哪些? 根据刷新方式的不同,刷新一般分为三种:一种是集中式刷新,一种是分散式刷新,一种是异步式刷新。
28
集中式刷新 指在一个刷新周期内,利用一段固定时间,依次对M的所有行逐一刷新,在此期间停止对M的读/写操作。
例:128*128的矩阵存储器,设读/写的周期为0.5us,刷新的时间为2ms。 则:每个刷新周期内有2000/0.5=4000个读/写工作周期,其中128个读周期用于刷新,此段时间不能访问存储器, =3872个用于读/写周期。 该方式主要适用于高速存储器。
29
分散式刷新: 把一个存储系统周期分为两半,周期前半段时间用来读/写操作或维持信息,周期后半段时间作为刷新时间。这样,每经过128个系统周期时间,整个存储器便全部刷新一遍。 例:128*128的矩阵存储器,设读/写的周期为0.5us,则存储器系统周期为1us(前0.5us用于读/写,后0.5us用于刷新)。每个存储器系统周期刷新一行,整个存储器刷新128行需要128us,比允许的2ms少的多,但系统速度慢
30
异步式刷新方式 是集中刷新和分散刷新结合,在2ms内将128行分散地刷新一遍,则每隔2ms/128刷新一行即可,可用每隔2ms/128时间产生一次刷新中断请求的办法处理,这种刷新方式称为异步式刷新。实际产品多数是集中刷新和分散刷新结合。 例:1M(512*2048)×1位DRAM的刷新方法,刷新周期定为8ms,读/写周期为0.5μs。 该存储器共512行,刷新的地址是A0~A8;在8ms中要进行512个周期的刷新,每个周期刷新一行2048个单元,即可对1M存储单元的刷新。可以采用的刷新方式是: 1)8ms进行512次的集中刷新方式 2)8ms÷512=15.5μs刷新一次的异步刷新方式,即在31读/写周期中进行一次刷新。
31
-DRAM的一般电气特征: 因为内部存储器的容量越大越大,所以地址线引入量也增大了,为降低成本并增加成品率,一般的DRAM芯片采用地址线减半的措施。 应有地址引入线 线实有地址引入线 64K×4 : 128K×4 : 256K×4 : 512K×4 : 1024K×4 : · 片内增设行、列地址缓冲锁存器 · 在片外多路选择器件的引导下先在地址线上送入行地址,由RAS信号锁存,后在地址线上送入列地址,由CAS信号锁存。 · 核心阵列(矩阵)与行、列地址译码、刷新放大器如常规。 · 刷新控制计数器用于产生刷新时所须的行地址。 · 输出为三态控制。 · 刷新周期2-64毫秒不等,
32
-DRAM存储芯片实例(414256)
33
-DRAM存储芯片实例(续) 1)414256的基本组成:是512×512×4的存储器阵列。在此基础上设有读出放大器与I/O门控制电路、行地址缓冲器/译码器、列地址缓冲器/译码器、数据输入/输出缓冲器、刷新控制 /计数器以及时钟发生器等。 2)414256的存储器访问:行地址和列地址分两次输入。首先由信号锁存由地址线A8~A0输入的9位行地址,然后再由信号锁存由地址线A8~A0输入的9位列地址,经译码选中某一存储单元,在读/写控制信号的控制下,可对该单元的4位数据进行读出或者写入。 3)414256的刷新:由于动态存储器读出时须预充电,因此每次读/写操作均可进行一次刷新。MCM414256需要每8mS刷新一次。刷新时通过在512个行地址间进行集中式刷新,也可以采用分散刷新,也可以采用异步式刷新。
34
-存储器控制电路 DRAM存储器的刷新需要有硬件电路的支持,包括刷新计数器、刷新/访存裁决、刷新控制逻辑等。这些控制线路形成DRAM控制器,它将CPU的信号变换成适合DRAM片子的信号。 地址多路开关:刷新时需要提供刷新地址,非刷新时需提供读写地址,由多路开关进行选择。 刷新地址计数器:只用RAS(行地址选择)信号的刷新操作,需要提供刷新地址计数器。 刷新定时器:定时电路用来提供刷新请求。 定时发生器:提供行地址选通信号RAS、列地址选通信号CAS和写信号WE. 仲裁电路:对来自CPU的访问存储器的请求和来自刷新定时器的刷新请求的优先权进行裁定。
35
高性能的主存储器 DRAM芯片有两个发展趋势:一是进一步提高集成度,几乎一直以两年4倍的速度向前发展,从90年代末期的64M位到现在的512M位,而且价格亦是大幅度下降;二是提高存取速度,这包括采用更先进的半导体材料、改进工艺以及引入cache技术等,存取时间现在可达到6~7ns,甚至到3ns。下面介绍具有典型意义的EDRAM芯片,以及用它组成的内存条。 -EDRAM芯片 SRAM的特点是存取速度快,不需要刷新,但集成度不高容量小。DRAM的特点是集成度高容量大,但存取速度慢,需要刷新。EDRAM芯片又称增强型DRAM芯片,它在DRAM 芯片上集成了一个SRAM实现的小容量高速缓冲存储器,从而使DRAM芯片的性能得到显著改进。
36
第一步:访问1M×4位的EDRAM芯片需20位内存地址。在行选通信号的作用下,内存地址的高11位经A0~A10地址引脚输入,作为行地址被锁存并保存在最后读出行地址锁存器中。DRAM阵列的2048行中此地址指定行的全部数据512×4位,被读取到SRAM cache中暂存。
37
第二步:内存地址的低9位,在列选通信号作用下经过A0~Al0地址引脚输入,作为列地址并被锁存。读允许信号有效时,512个4位组的SRAM cache中某一4位组被此列地址选中,其4位组经D0~D3送出芯片。
38
比较 第三步:下一次读取时,输入的行地址立即与最后读出行地址锁存器的内容相比较,若相符则SRAM cache命中,由输入的列地址从cache选择某一位组送出即可。只在比较不相符时,才需要如刚才所述那样驱动DRAM阵列。
39
以SRAM保存一行内容的办法,对成块传送非常有利。如果连续的地址高11位相同,意味着属于同一行地址,那么连续变动的 9位列地址就会使SRAM中相应位组连续读出,这称为猝发式读取。
EDRAM的这种结构还带来另外两个优点: -在SRAM读出期间可同时对DRAM阵列进行刷新。 -芯片内的数据输出路径与输入路径是分开的,允许在写操作完成的同时来启动同一行的读操作。 -EDRAM内存条 1片EDRAM的容量为1M×4位,8片这样的芯片可组成1M×32位的存储模块。 8个芯片共用片选信号Sel。行选通信号RAS、刷新信号Ref和地址输入信号A0~A10。两片1M×4位的EDRAM芯片的列选通信号CAS接在一起,形成一个1M×8位(1MB)的片组。4个片组成一个1M×32位(4MB)的存储模块。
40
存储地址(24位) 块选(2位) 块内字地址(20位) 字节允许(2位) 行地址(11位) 列地址(9位) 决定列选通信号CAS的有效性
4个模块的片选信号
41
这样的存储模块本身具有高速的成块存取能力。如果块的连续地址是高13位保持不变(A23~A22是模块选择,A21~A11是块内行地址),那么只有第一个存储字需要经过一个完整的存取周期(DRAM要6个总线时钟周期),后续存储字的存取,因其内容已在SRAM cache中,故存取周期大为缩短(SRAM要2个总线时钟周期)。读取4个32位的字,使用了 个总线时钟周期;存储器写入也有相似的速度提高。 这种模块内存储字完全顺序排放,以猝发式存取来完成高速成块存取的方式,在当代微型机中获得了广泛应用。PC通常是将这种由若干个DRAM芯片组成的模块做成电路插件板,称为内存条。 -几种新型存储器芯片简介 CDRAM(带高速缓存动态存储器) 与EDRAM类似,在DRAM芯片上集成一定数量的高速SRAM,来提高存储器性能。
42
SDRAM(同步动态存储器) 与DRAM的最大不同是需要外部时钟。连续读写时可达到一个CLOCK一个数据,一般达到 (第1个数据需5个时钟,第2-4个数据一个时钟),比EDRAM的 快。 DRDRAM(接口动态存储器) 与DRAM区别:引脚定义随命令而变,同一组引脚线可以被定义成地址或控制线,其引脚数仅为正常DRAM的1/3。 DDR DRAM(双数据传输率同步动态存储器) 在SDRAM的基础上采用延时锁相环技术,在时钟脉冲的上升沿和下降沿都可传输数据,使数据传输率提高1倍,目前广泛的应用在PC机上。 SL DRAM(同步链动态存储器) 在原DDR DRAM基础上发展起来,但Intel公司不支持这种标准,故未来一段时间不会成为主流产品。
43
3.3 只读存储器和闪速存储器 只读存储器(ROM)
它的特点是可以随机的读出其中的内容,但不能写入,是一种非易失性存储器,掉电后存储在其中的信息不会丢失。一般用来存放监控程序、管理软件。 允许用户编程写入一次。 只读存储器ROM (写入方式不同) 掩模式ROM 光可擦EPROM 可编程PROM 电可擦E2PROM 制作集成电路时掩模固化程序 利用特定电压的电信号擦除 利用紫外线或者X射线擦除
44
-光擦可编程只读存储器(EPROM) 1)基本存储元电路
P沟道EPROM基本电路结构如右上图所示,在N型基片上生长了两个高浓度的P型区,分别引出源极(S)和漏极(D),在2极之间有一个硅极,被绝缘体SiO2包围。管子制作好后,栅极内没有电荷,所以管子内没有导电沟道,S极和D极之间不导电。 P沟道EPROM组成的基本存储元如右下图所示,当把EPROM用于存储矩阵时,这种存储矩阵的输出为全“1”。 1 不导通 1
45
2)EPROM的写入和擦除 由于EPROM的默认输出为1,所以只要考虑写入0和读出0的过程以及擦除的过程。 写入0时,在D极和S极之间加上25V高压,所选中的单元在电压的作用下被击穿,电子通过绝缘层注入到硅栅,高电压去除后,硅极被绝缘层包围电子无处泄漏,形成导电沟道。 读出时,字选线为高电平,EPROM内有导电沟道,从而EPROM存储元导通,位线输出为0。 EPROM芯片封装的上方有一个石英玻璃窗口,用紫外线照射这个窗口,硅栅上的电子形成光电流泄漏走,把写入的0抹去,存储单元恢复初始状态。 1 导通
46
3)EPROM实例(2716) 2716为16K位(2K*8)的EPROM芯片,11条地址线,7条用于行译码,4条用于列译码,具有8位输出缓冲,正常工作电压VCC为5V,脱机编程时的写入电压VPP为25伏。为了减少功耗,2716可以工作在功耗降低模式下,将PD/PGM端置为高电平即可。
47
例:CPU的地址总线16根(A15—A0,A0为低位),双向数据总线8根(D7—D0),控制总线中与主存有关的信号有MREQ(允许访存, 低电平有效),R/W(高电平为读命令,低电平为写命令)。
主存地址空间分配如下:0—8K为系统程序区,由只读存储芯片组成;8K—32K为用户程序区;最后(最大地址)2K地址空间为系统程序工作区。上述地址为十进制,按字节编址。现有如下存储器芯片: EPROM:8K×8位(控制端CS) SRAM:16K×1位,2K×8位,4K×8位,8K×8位. 上述芯片中选择适当芯片设计该计算机主存储器,画出主存储器逻辑框图,注意画出选片逻辑(可选用门电路及3∶8译码器74LS138)与CPU的连接,说明选哪些存储器芯片,选多少片。
48
8K(EPROM) 24K(SRAM) 30K(空) 2K(SROM)
分析:CPU有16根地址线,可寻址64K空间。 系统程序区:0-8KB(8K×8),用1片EPROM。 用户程序区:8KB-32KB(3*8K*8),用3片8K×8RAM。 系统程序工作区:最后2K,用一片2K×8RAM。 主存地址空间分布如右图: 0K 8K 32k 64K 8K(EPROM) 24K(SRAM) 30K(空) 2K(SROM) ~ ~ ~ ~ A15~A13片选, A12~A0片内存储单元选择 ~ A15~A13片选,A12~A11必须为高电平,低11位片内存储单元选择
49
采用74LS138芯片3∶8译码器,用Y0,Y1,Y2,Y3和Y7输出端,且对最后的2K×8位芯片还需加门电路译码。主存与CPU连接逻辑图如下图所示:
cs cs cs cs cs … … … Y0 Y1 Y2 Y3 Y7
50
3.4 高速存储器 由于CPU和主存储器在速度上不匹配,而且在一个CPU周期中可能需要用几个存储器字,这便限制了高速计算,为了使CPU不至因为等待存储器读写操作的完成而无事可做,可以采取一些加速CPU和存储器之间有效传输的特殊措施: -主存储器采用更高速的技术来缩短存储器的读出时间,或者 增加存储器的字长来增加一次读出的数据量。 -采用并行工作的双端口存储器。 -采用多模块交叉的存储技术 -采用高速缓冲存储器(cache)来缩短读出时间
51
双端口存储器 双端口存储器是指同一个存储器具有两组相互独立的读写控制线路,是一种高速工作的存储器。 右端口 左端口
2K×16位双端口存储器IDT7133的逻辑功能方框图 右端口
52
-无冲突的读写操作 双端口存储器提供了两个相互独立的端口,即左端口右端口。它们分别具有各自的地址线、数据线和控制线,可以对存储器中任何位置上的数据进行独立的存取操作。 地址1 地址2 数据输出 数据输出 左端口读地址1 右端口读地址2
53
在两个端口上同时进行读写操作,只要读写的存储单元的地址不相同,一定不会发生冲突。
-无冲突的读写操作 在两个端口上同时进行读写操作,只要读写的存储单元的地址不相同,一定不会发生冲突。 地址1 地址2 数据输出 数据输出 左端口读地址1 右端口读地址2
54
当两个端口同时读写一个存储单元时发生发生冲突,由判忙逻辑决定那一个端口优先进行读写操作,另一个端口暂时关闭置,即置BUSY为0。
-有冲突的读写判断 当两个端口同时读写一个存储单元时发生发生冲突,由判忙逻辑决定那一个端口优先进行读写操作,另一个端口暂时关闭置,即置BUSY为0。 地址2 地址2 数据输出 左端口读地址2 右端口读地址2 1
55
-端口优先的判断条件 1.CE判断:如果左右端口访问的存储单元的地址相同且在CE之前有效,片上的控制逻辑在左右端口的片选信号CEL和CER之间进行判断来选择端口。即片选信号早到的优先进行读写 2.地址有效判断:如果片选信号CE在左右端口地址匹配之前变为有效,片上的控制逻辑在左、右地址间进行判断来选择端口。即地址早到的优先进行读写。 如果判断逻辑根据判断条件决定对哪个端口优先进行读写操作,就会暂时关闭另一个被延迟的端口,即将其BUSY位置为低电平, 一旦优先端口完成读写操作,才将被延时端口BUSY置为高电平,开放此端口。
56
双端口存储器读写功能判断表 左端口 右端口 标志 功能 CEL (A10~A0)L CER (A10~A0)R BUSYL BUSYR 1
× 无冲突 Any ≠ (A10~A0)R ≠ (A10~A0)L LV5R 左端口取胜 RV5L 右端口取胜 LL5R = (A10~A0)R = (A10~A0)L RL5L LV5R:左地址有效先于右地址 RV5L:右地址有效先于左地址 LL5R:CEL有效先于CER RL5L:CER有效先于CEL
57
多模块交叉存储器 -存储器的模块化组织 一个由若干个模块组成的主存储器是线性编址的。这些地址在各模块有两种安排方式:一种是顺序方式,一种是交叉方式。 顺序方式:设存储器容量32字,分为4个模块,每个模块8个字,访问地址按顺序分配给一个模块后,在按顺序分配给下一个模块。 特点:某个模块进行存取时,其他模块不工作,某一模块出现故障时,其他模块可以照常工作,通过增添模块来扩充存储器容量比较方便。但对于连续字的成块传输,各模块串行工作,存储器的带宽受限制。
58
顺序存储器连续读出m=4个字的信息总量都是:q=64位×4=256位 设连续读出的4个字在同一个模块上,所需的时间为:
例如:设存储器容量为32字,字长64位,模块数m=4,按照顺序方式组织存储器。存储器的存储周期T=200ns,数据总线宽度为64位,总线传送周期τ=50ns。问顺序存储器带宽是多少? 顺序存储器连续读出m=4个字的信息总量都是:q=64位×4=256位 设连续读出的4个字在同一个模块上,所需的时间为: t=mT=4×200ns=800ns=8×10-7s; 顺序存储器的带宽是:W=q/t=256÷(8×10-7)=32×107bps 交叉方式:设存储器容量32字,分为4个模块,每个模块8个字,访问线性依次地址按顺序分配给各个模块的同一个字,直到线形地址分配完毕。 特点:地址码的低位字段经过译码选择不同的模块,而高位字段指向相应模块内的存储字。连续地址分布在相邻的不同模块内,同一个模块内的地址都是不连续的。对连续字的成块传送可实现多模块流水式并行存取,大大提高存储器的带宽。
59
模块字长等于数据总线宽度,模块存取一个字的存储周期为T,总线传送周期为τ,存储器的交叉模块数为m,连续字(W4、W5、W6、W7)成块传输实现流水线方式存取的示意图如下所示:
传送M个连续字的时间t=T+(M-1)τ 例如:设存储器容量为32字,字长64位,模块数m=4,按照交叉方式组织存储器。存储器的存储周期T=200ns,数据总线宽度为64位,总线传送周期τ=50ns。问交叉存储器带宽是多少? 交叉存储器连续读出m=4个字的信息总量都是:q=64位×4=256位 连续读出交叉模块上4个字所需的时间为:t=200+3*50=350ns=3.5*10-7S 交叉存储器的带宽是:W=q/t=256÷(3.5×10-7)=73×107bps
60
二模块交叉存储器举例 存储地址(24位) 体选(3位) 块内字地址(18位) 字节允许(2位) 块 决定列选通信号CAS的有效性
8个存储体的片选信号 行地址(9位) 列地址(9位) 决定列选通信号CAS的有效性
61
24位存储器物理地址按照“存储体-字-块”进行寻址,地址中A2作为块选择信号,当A2=0时,RAS0有效(选中存储块0), A2=1时,RAS1有效(选中存储块1),是2模块的交叉存储,连续的存储字交错分布在两个模块上,偶地址在模块0,奇地址在模块1。 DRAM存储器需要逐行定时刷新,而且,DRAM芯片的读出是一种破坏性读出,因此在读取之后要立即按读出信息予以充电再生。 这样,如果采用顺序方式组织存储器,若CPU先后两次读取连续的存储字(W3,W4),如果使同一模块连续选通的话,CPU在接收到第一个存储字之后必须插入等待状态,直至前一存储字再生完毕才开始第二个存储字的读取。 如果采用m=2的交叉存取方式,两个连续地址字(W3,W4)的成块传送之间不必插入等待状态(零等待存取)。
62
相联存储器 相联存储器是指其中任一存储项内容作为地址来存取的存储器。选用来寻址存储器的子段叫做关键字。 1001 张明 1976.9
2220 1002 王乐 1978.1 2030 1003 于海 1974.5 2500 00001H 00002H 00003H 关键字:KEY 数据:DATA 存放在相联存储器中的项可以看成具有KEY,DATA这样的格式。其中KEY是地址,DATA是被读写信息。 相联存储器的基本原理就是不再用地址访问存储单元,而是把所存内容的关键字项作为地址,去检索该存储器,并将存储器中与该检索项符合的存储单元内容进行读出或写入。
63
3.5 cache存储器 cache是介于CPU和主存之间的小容量存储器,存取速度比主存快。它能高速地向CPU提供指令和数据,加快程序的执行速度。它是为了解决CPU和主存之间速度不匹配而采用的一项重要技术。 当CPU读取主存中一个字时,发出此字的内存地址到cache和主存。此时,cache控制逻辑根据地址来判断此字当前是否在cache中:若是,此字立即传送给CPU;若非,则用主存读周期把此字从主存读出送到CPU,与此同时,把含有这个字的整个数据块从主存读出送到cache中。 - CPU与cache之间的数据交换是以字为单位,而cache与主存之间的数据交换是以块为单位。 - 若cache已满,由管理cache的硬件电路来实现cache的替换
64
替换管理逻辑 地址 数据 1000 2B56 1001 457A 1002 0000 1003 FFFF … 8150 8151 FFBB 8152 FA31 8153 0012 1000 1 1001 2 1002 3 1003 4 … 快表 CPU 1块 2B56 457A 0000 FFFF … cache
65
替换管理逻辑 地址 数据 1000 2B56 1001 457A 1002 0000 1003 FFFF … 8150 8151 FFBB 8152 FA31 8153 0012 1000 1 1001 2 1002 3 1003 4 … 快表,是相联存储器 CPU 1000 1块 2B56 457A 0000 FFFF … cache 2B56
66
替换管理逻辑 地址 数据 1000 2B56 1001 457A 1002 0000 1003 FFFF … 8150 8151 FFBB 8152 FA31 8153 0012 1000 1 1001 2 1002 3 1003 4 … 快表,是相联存储器 CPU 8150 1块 2B56 457A 0000 FFFF … FFBB FA cache 0000
67
cache的命中率 设Nc表示cache完成存取的总次数,Nm表示主存完成存取的总次数,h定义为命中率,则有: 我们希望命中率接近于1
若tc表示命中时的cache访问时间,tm表示未命中时的主存访问时间,则cache/主存系统的平均访问时间ta为: ta=h×tc+(1-h)×tm 我们希望平均读出时间尽可能接近cache的读出时间 若e表示访问效率,则有:
68
例:CPU执行一段程序时,cache完成存取的次数为1900次,主存完成存取的次数为100次,已知cache存取周期为50ns,主存存取周期为250ns,求cache/主存系统的平均访问时间和效率
求命中率: h=Nc/(Nc+Nm)=1900/( )=0.95 求平均访问时间: ta=h×tc+(1-h)×tm=0.95× ×250=60ns 求访问效率: e=tc/ta=50/60=0.833=83.3% 例:CPU执行一段程序时,cache完成存取的次数为1000次,主存完成存取的次数为250次,已知cache存取周期为10ns,主存存取周期为100ns,求cache/主存系统的平均访问时间和效率
69
主存与cache的地址映射 cache的容量很小,它保存的内容只是主存内容的一个子集,且cache与主存的数据交换是以块为单位。地址映射即是应用某种方法把主存地址定位到cache中。地址映射方式有全相联方式、直接方式和组相联方式三种。 cache的数据块大小称为行,用Li表示;主存的数据块大小称为块,用Bj表示。cache的每一行和主存的每一块包含相同的连续个字。字是CPU访问存储器的最小单位。 字0 字1 字2 字3 …… B0 L0 L1 L2 L3 块号 字号 B1 内存地址 cache
70
-全级联映射:设主存有256块,cache有4行
B1 2 快表 L0 L1 L2 L3 比较 10 字0 字1 字2 字3 …… B0 2 字2 B1 L0 L1 L2 L3 2 cache B255 全级联映射的内存地址表示成: 标记 字
71
-直接映射方式:设主存有256块,cache有4行
主存中一个块的地址位于快表中,与块的内容存于cache的行中,这种方法中,通过快表的映射可使主存的一个块直接拷贝到cache中的任意一行上,非常灵活。它的主要缺点是比较器电路难于设计和实现,因此只适合于小容量cache采用。 -直接映射方式:设主存有256块,cache有4行 这也是一种多对一的映射关系,但一个主存块只能拷贝到cache的一个特定行位置上去。 cache的行号i和主存的块号j有如下函数关系: i=j mod m (m为cache中的总行数) 故允许存于cache第: L0行:B0( ),B4( ),B8( ),共64块; L1行:B1( ),B5( ),B9( ),共64块; L2行:B2( ),B6( ),B10( ),共64块; L3行:B3( ),B7( ),B11( ),共64块;
72
B6 2 标记 行号 字 快表 000001 10 比较 相等,命中 B0 L0 L1 L2 L3 2 B6 2 cache B255
000000 L1 L2 100011 L3 比较 相等,命中 字0 字1 字2 字3 …… B0 L0 L1 L2 L3 字2 2 B6 2 cache B255 标记 行号 字 直接级联映射的内存地址表示成:
73
B10 2 快表 000010 10 比较 不相等没有读命中 B0 L0 L1 L2 L3 2 B10 cache B255 000001
000000 L1 L2 100011 L3 比较 不相等没有读命中 字0 字1 字2 字3 …… B0 L0 L1 L2 L3 字2 2 B10 cache B255
74
-组相联映射方式:主存有256块,cache有4行
全级联映射存放位置灵活,命中率高,但比较电路相对复杂;直接映射方式比较电路硬件结构简单,但位置固定,命中率低;两者的优缺点正好相反。组级联方式是两种方法的折中考虑。它将cache分成u组,每组v行,主存块存放到哪个组是固定的,至于存到该组哪一行是灵活的,有如下函数关系: cache的总行数m=u×v 块存放的组号q=j mod u 设4行cache共分2组,每组2行,则允许存于cache第: L0组:B0( ),B2( ),B4( ),共128块; L1组:B1( ),B3( ),B5( ),共128块;
75
B7 2 标记 组号 字 快表 0000011 1 10 比较 B0 相等,命中 L0 L1 2 B7 2 cache B255
L0 L1 比较 字0 字1 字2 字3 …… B0 相等,命中 L0 L1 字2 2 B7 2 cache B255 标记 组号 字 组级联映射的内存地址表示成:
76
组相联映射方式中的每组行数v一般取值较小,这种规模的v路比较器容易设计和实现。而块在组中的排放又有一定的灵活性,冲突减少。
B11 2 快表 1 10 L0 L1 比较 字0 字1 字2 字3 …… B0 不相等没有读命中 L0 L1 字2 2 B11 cache 组相联映射方式中的每组行数v一般取值较小,这种规模的v路比较器容易设计和实现。而块在组中的排放又有一定的灵活性,冲突减少。 B255
77
替换策略 cache工作原理要求它尽量保存最新数据,当新的主存块需要拷贝到cache中,但存放此块的位置被其他主存块占用必然要产生替换。
替换问题与采用的地址映射方式有关,直接映射的cache来说,只要把此特定位置上的原主存块换出cache即可,不需要替换算法。对全相联和组相联cache来说, 就要从允许存放新主存块的若干特定行中选取一行换出。采用何种方式决定决定将那一行换出就是替换策略。 常用的替换策略有三种: - 随机替换 - 最不经常使用(LFU)算法 - 最近最少使用(LRU)算法
78
-随机替换策略 从特定的行位置中随机地选取一行换出。在硬件上容易实现,且速度也比后两种策略快。缺点是很可能刚换出的行马上又要使用,降低了命中率和cache工作效率。 -最不经常使用(LFU)算法 这种算法每行设置一个计数器。从0开始计数,每访问一次,被访行的计数器增1。当需要替换时将计数值最小的行换出,同时将这些行的计数器都清零。LFU算法将一段时间内被访问次数最少的那行数据换出,不能严格反映近期访问情况。 -最近最少使用(LRU)算法 LRU算法将近期内长久未被访问过的行换出。每行也设置一个计数器,cache每命中一次,命中行计数器清零,其它各行计数器增1。当需要替换时,将计数值最大的行换出。这种算法保护了刚拷贝到cache中的新数据行,有较高的命中率。
79
当CPU读取内存某个字时,如果该字在cache中,直接从cache中读取,我们称为读命中。
当CPU写内存某个字时,如果该字在cache中,我们称为写命中;CPU是仅仅改写cache的内容还是cache和内存的内容同时修改,不同的写方法我们称为写操作策略。 -写回法 当CPU写cache命中时,只修改cache的内容,而不立即写入主存;只有当此行被换出时才写回主存。这种方法减少了访问主存的次数,但是存在不一致性的隐患。实现这种方法时,每个cache行必须配置一个修改位,以反映此行是否被CPU修改过。 -全写法 当CPU写cache命中时,cache与主存同时发生写修改,因而较好地维护了cache与主存的内容的一致性。当写cache未命中时,直接向主存进行写入。cache中每行无需设置一个修改位,但却失去了写缓存。 -写一次法 只是第一次写命中时要同时写入主存。这便于维护系统全部cache的一致性。奔腾CPU中采用了写一次法。
80
3.6 虚拟存储器 什么是虚拟存储器 虚拟存储器不是任何实际的物理存储器。它借助于磁盘等辅助存储器来扩大主存容量,以透明的方式给用户提供了一个比实际主存空间大得多的程序地址空间,使之为更大或更多的程序所使用。 虚拟存储器采用的依据是程序的局部性原理,即当程序要求运行时,不是将它全部装入内存,而是将其一部分需要执行的程序装入内存,另一部分暂时不装入内存,驻留于外存。 在实际内存没有变化的情况下,会有更多的或更大的程序存入其中,使用者认为内存的总量为物理内存加用于驻留程序的外存。虚拟存储器的实质就是用外存模拟内存。 虚拟存储器依赖于程序的部分装入,程序的部分装入又依赖于对程序的分隔,根据对程序的分隔的方式的不同,虚拟存储器可以分为:页式虚拟存储器,段式虚拟存储器,段页式虚拟存储器。
81
页式虚拟存储器 分页式存储系统中把用户程序逻辑空间分割为大小相等的片,称为一个逻辑页或者页,同时按照同样的大小将系统物理内存分割为大小相等的存储块,我们称为物理块或者块。 用户程序 物理内存 0页 1页 2页 3页 4页 5页 6页 …… n页 0块 1块 2块 3块 4块 5块 6块 7块 …… 分页系统的优点: -实现程序的离散装入 -实现程序的部分装入 如何知道程序的某一页装入了内存的哪一块呢?
82
页表 1 4 2 6 3 7 用户程序 页号 块号 物理内存 0页 1页 2页 3页 4页 5页 6页 …… n页 0块 1块 2块 3块
-页表: 在分页系统中,允许程序的每一页离散的存储在内存的任一物理块中,为了能在内存中找到每个页面所对应的物理块,为每一个程序建立了一个反映逻辑页和物理块之间的映射关系的表,称为页表。 用户程序 页号 块号 物理内存 0页 1页 2页 3页 4页 5页 6页 …… n页 1 4 2 6 3 7 0块 1块 2块 3块 4块 5块 6块 7块 …… 页表
83
在分页系统中,用户的逻辑空间可以用页号与页内偏移地址构成,系统的物理空间可以用块号与块内偏移地址构成。
用户程序 页号 块号 物理内存 0页 1页 2页 3页 4页 5页 6页 …… n页 1 4 2 6 3 7 0块 1块 2块 3块 4块 5块 6块 7块 …… 100 100 页表 页号:3 页内地址:100 块号: 块内地址: 7 100 地址变换 逻辑地址 物理地址
84
-分页系统的地址变换机构 为了将用户程序的逻辑地址变换成内存的物理地址,在系统中有地址变换机构,完成逻辑地址向物理地址的转化,由于页内地址和块内地址相同,地址变换机构的任务就是把逻辑地址的页号通过页表转换成物理地址的块号。 越界中断 页表寄存器 逻辑地址 页表始址 页表长度 逻辑页号(3) 页内地址 页号 块号 1 4 2 6 3 7 … 物理块号 块内地址 (7) 物理地址 页表
85
-页面置换策略 依据是程序的局部性原理,即当程序要求运行时,不是将它全部装入内存,而是将其一部分需要执行的程序装入内存,另一部分暂时不装入内存,驻留于外存。 在分页系统中,就是把程序执行用到的部分页面装入内存的物理块,因此分配给程序的物理块总是小于程序的页面,在程序运行的过程中,如果请求的页面不在内存的物理块中,就需要将已经存在于物理块中的不用页面与该页面进行对换,到底把存在于物理块中的哪一个页面换出,这就是置换策略,常用的置换策略有: 1)先进先出置换算法(FIFO) 2)最近最久未使用置换算法(LRU)
86
FIFO置换算法:该算法将最先进入内存的页面换出。
例如:某系统为程序分配了3个物理块,考虑下面的页面号引用串: 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1 利用FIFO算法描述页面调入过程,计算缺页率。 7 7 7 1 2 1 2 3 1 2 3 4 3 4 2 4 2 3 2 3 1 3 1 2 7 1 2 7 2 7 1 共进行了12次的页面置换,缺页率是60%。 LRU置换算法:该算法选择最近最久没有使用的页面换出。 7 7 7 1 2 1 2 3 4 3 4 2 4 3 2 3 2 1 3 2 1 2 1 7 共进行了9次的页面置换,缺页率是45%。
87
-具有快表的分页系统的地址变换机构 由于页表在内存中,CPU为了读取一条指令或数据,首先访问内存中的页表,从中找到指定页的物理块号,根据块号和块内地址(等于页内地址)形成的物理地址第二次读取内存获得需要的数据,如果发生缺页还要进行页面置换,使计算机的处理速度下降一半,因此引入快表(cache)。 虚拟地址 逻辑页号 页内地址 按内容比较 按地址访问 快表(相联存储器) 慢表(主存储器) 页号 块号 . 页号 块号 . 物理地址 物理块号 块内地址
88
段式虚拟存储器 利用程序的模块化性质,将程序的逻辑空间划分为多个相对独立的部分,每一部分称为段。例如主程序段(main),子程序段(sub),数据段(data),堆栈段(stack)。 段作为信息的完整基本单位可以在内存-外存之间传送或者定位。每一个段有段名,段基址,段长等信息。 数据段 代码段 扩展段 堆栈段 未用 10k 90k 120k 240k 内存空间 代码段 数据段 扩展段 堆栈段 长度 20k 30k 45k 15k 程序空间 段号 段长 基址 20k 10k 1 30k 90k 2 45k 120k 3 15k 240k 段表
89
在分段系统中,用户程序的逻辑空间由段号和段内地址构成,地址变换机构的任务是通过段表将段号转换成段在内存中的基址形成物理地址
-分段系统的地址变换机构 在分段系统中,用户程序的逻辑空间由段号和段内地址构成,地址变换机构的任务是通过段表将段号转换成段在内存中的基址形成物理地址 越界中断 段表寄存器 逻辑地址 段表始址 段表长度 段号(3) 段内地址(100) 段号 段长 基址 1k 10k 1 4k 2k 2 5k 15k 3 8k … 物理地址 8292 段表
90
段页式虚拟存储器 分页系统中外存—内存之间调入和换出的基本单位都是长度固定的页面,分段系统中外存—内存之间调入和换出的基本单位都是长度可变的段,分页系统实现简单。 分页系统中每页大小是固定的由系统决定,不是信息的完整单位,分段系统中每段大小是不固定,由用户编写的程序决定,是信息的完整单位,分段系统便于实现数据共享和保护。 段页式虚拟存储器是段式虚拟存储器和页式虚拟存储器的结合。它把程序按逻辑单位分段以后,再把每段分成固定大小的页。程序对主存的调入调出是按页面进行的,但它又可以按段实现共享和保护,兼备页式和段式的优点。 计算机中一般采取段页式虚拟存储器管理方式。
91
-段页式系统的地址变换机构 在段页式系统中,用户的程序由若干段组成,每一段由若干页组成,所以逻辑空间的格式如下: 段号 页号 页内地址 在段页式虚拟存储系统中,每道程序是通过一个段表和一组页表来进行地址变换。 段表中的每个表目对应一个段,每个表目保存该段页表的起始地址,页表的每个表目对应该段一个页,指明该段中的每一页在主存中的物理块。 段页式虚拟存储系统由虚拟地址向主存地址的变换至少需要两次查表(段表和页表),使系统的效率降低。 如果一个用户的程序被分成3段,地址变换过程如下:
92
段表 段号 页号 页内地址 段表始址 段表长度 1 2 100 页号 块号 a 0段页表 b 段号 页表始址 12 100 物理块号
页号 块号 a 10 … 0段页表 b 8 1 7 2 12 … 段号 页表始址 a 1 b 2 c 12 100 物理块号 块内地址 1段页表 段表 c a … 2段页表
Similar presentations