4.1 存储器与存储体系概述
4.2 主存储器
4.3 高速缓冲存储器 ( Cache)
4.4 虚拟存储器
4.5 PC系列机中的主存储器第 4章 存储器返回主目录第 4
存储器是计算机硬件的重要组成部分,用来存储程序和数据 。 早期的计算机采用冯 ·诺依曼机结构方案,以运算器为中心 。 随着 DMA技术 ( 存储器直接存取 ) 的引入,计算机结构改为以存储器为中心,目前存储器的中心地位得到进一步增强 。
计算机多处理系统的实现,使单个 CPU对系统的控制作用下降,
内存成为多处理器共享的重要资源 。 计算机网络的开通,又使存储器,特别是海量外存储器成为计算机之间进行数据交换,
资源共亨的重要手段 。
4.1 存储器与存储体系概述存储器一般指存储信息的硬件器件,存储体系 ( 系统 )
是指由各具特色,不同类型的存储器构成相互依存,相互支持的多个层次,以及与此相关的软,硬件 。 单一品种的存储器不能同时满足计算机系统的各项要求,而存储体系可以较好地做到统筹兼顾,充分发挥整体优势 。
4.1.1存储器的分类存储器的分类方法很多,常用的分类方法有以下几种 。
1.
用来制作存储器的物质称为介质 。 按存储介质的不同可以将存储器分为三种:半导体存储器,磁表面存储器和光盘存储器 。
2,按存取方式分存储器按照存取方式可分为随机存取 ( 读写 ) 存储器,只读存储器,顺序存取存储器和直接存取存储器等 。
随机存取存储器 ( 简称 RAM) 的任意一个存储单元都可被随机读写,且存取时间与存储单元的物理位置无关 。 它一般由半导体材料制成,速度较快,用于内存 。
只读存储器 ( 简称 ROM) 的内容不能被一般的 CPU写操作随机刷新,即不能,随便,写,而其内容可随机读出 。 它一般也由半导体材料组成,用于内存 。
顺序存取存储器 ( 简称 SAM) 只能按照某种次序存取,
即存取时间与存储单元的物理位置有关 。 磁带是一种典型的顺序存储器 。 由于其顺序的特点以及工作速度慢,它只能用于外存,并作为高速磁盘的外援 。
直接存取存储器 ( 简称 DAM) 在存取数据时不必对存储介质做完整的顺序搜索而直接存取 。 磁盘和光盘都是典型的直接存取存储器 。 磁盘的逻辑扇区在每个磁道内顺序排列,
邻近磁道紧接排列 。 读取磁盘中某扇区的内容时,先要寻道定位 ( 此时扇区号跳跃 ),然后在磁道内顺序找到相应扇区 。
鉴于这种工作过程,有人把直接存取存储器称为半顺序存取存储器 。
3.
根据存储器信息的可保护性可将存储器分为易失性存储器和非易失性存储器 。
断电后信息将消失的存储器为易失性存储器,如半导体介质的 RAM。 断电后仍保持信息的存储器为非易失性存储器,
如半导体介质的 ROM,磁盘,光盘存储器等 。
4,按所处位置及功能分根据存储器所处的位置可分为内存和外存 。 位于主机内部,具有总线地址,可以被 CPU直接访问的存储器,称为内存 。 由于计算机在运行时,内存与 CPU频繁交换数据,是存储器中的主力军,故又称主存 。 位于主机外部,被视为外设的存储器,称为外存 。
由于外存的数据只有调入内存,CPU才能应用,起着后备支援的辅助任务,故又称为辅存 。 半导体 ROM,RAM用于主存,磁盘,光盘,磁带等存储器常用于外存 。
5.
根据制造工艺的不同,将半导体存储器分为双极型 ( 如
TTL),MOS型等类存储器 。 双极型存储器集成度低,功耗大,价格高但速度快; MOS型存储器集成度高,功耗低,速度较慢,价格低 。 MOS型存储器还可进一步分为 NMOS、
HMOS,PMOS,CMSO等不同工艺产品 。 其中,CMOS互补型 MOS电路,具有功耗极低,速度较快的特点,在便携机中应用较广 。
4.1.2
1,计算机对存储系统的要求为了组成功能完善,高效运行,安全可靠,价格合理的机器,通用计算机一般对存储系统提出如下要求:
① 存储容量大 。 由于用户使用微机处理的信息越来越多,
而支持软件越来越丰富,复杂,一般使用的存储容量达 MB
( 兆字节 ) 级,GB( 千兆字节 ) 级,甚至更大 。 Windows环境下,允许每个用户可以使用 64 TB( 兆兆字节 ) 或更大的存储空间 。
② 读写速度快 。 为了尽量与不断提高的 CPU相匹配 。 目前 CPU主频已高达几百兆赫兹 。 以 200 MHz为例,时钟周期仅为 0.005 μs。 386以上计算机都可以在一个时钟周期中完成存储器读写操作,所以其读写时间要少于 5 ns。
③ 价格低 。 因存储器容量大,存储器本身以及为该存储器服务的外围电路,部件 ( 如驱动器,刷新电路 ) 等的总价格已是整机价格的几分之一 。
④ 有支持系统启动和开发的能力 。 系统上电后,可提供支持系统启动和保障基本工作的软件,还可提供供用户开发的大量随机存取空间 。
⑤ 具有后备存储能力 。 用户开发的新程序,需要保留的中间数据等,在机器断电后仍能长久保存 。
⑥ 安全可靠 。 机器上电后存储器不读不写是存储单元的主要工作状态 。 这时,数据应不会自行丢失;受到干扰时存储器不出错,偶而出错时可纠错或报警等 。
2,存储体系的形成计算机对存储系统提出了以上六条基本要求 。 其中,希望存储器不出错,在目前根本无法做到 。 实际的要求是尽量少出错,平均无故障间隔时间要长 。 对存储器的奇偶校验,
使用 CRC( 循环冗余码 ) 校验等方法可以发现一些错误,有的还可以纠正错误 。 对于不可纠正的 RAM奇偶错检测线路视为重大故障报警,由程序员处理 。 对于存储器不读不写时数据不应自行丢失的要求,动态 RAM必须附加动态刷新电路 。
计算机对存储系统提出的其他几条基本要求,是任何一个单一品种的存储器不能同时满足的 。
CPU内部的工作寄存器可读,可写,可存,它实质上也是存储器 。 由于它位于 CPU内部,并且与 CPU速度完全匹配,
可以把它们视为 0级存储器 。
它们的功能很强,但价格高,数量不多 。 即使在精减指令集计算机 RISC中,它们的数量有较大增加,但充其量也只有几百个字节,离用户的要求相差甚远 。
内存作为独立的存储器可称之为 1级存储器 。 它相对 0级存储器容量大得多,可以作为 CPU寄存器的后备支持 。 作为内存主力的 RAM器件,其容量可达整个内存的 90%以上,在计算机启动后,为用户提供大量随机读写的空间,使用灵活方便 。 机器上电时,RAM中内容为杂乱的随机值,若由它
,一统,内存的,天下,启动系统,必将大乱 。
ROM器件中固化了启动程序,基本输入输出程序等,在引入操作系统后,为 RAM―营造,开发环境,因此 ROM是不可缺少的 。 由于内存成本较高,数量不能很大,且 RAM在断电后不能保留信息等等,必须有后援支持 。
外存是独立的存储器,常由软,硬磁盘构成,可称为二级存储器 。 相对内存,它有许多明显的优点,如存储容量大,
成本低,断电后信息不丢失等 。 但是,它又有一些明显的缺点,例如读写速度慢,CPU不能直接访问其中的具体单元等 。
若把上述的多种类型的存储器按图 4 - 1 所示的方式组成存储体系,它具有三个层次 ( 有时把工作寄存器视为 CPU的一个部分,不作为独立的 0级存储器,也称此为两个层次 ) 。
早期的 PC,PC/XT,PC286机等都采用这种最基本的体系 。
图 4 – 1 三层次存储体系
C P U
工作寄存器内存外存
0 级存储器
1 级存储器
2 级存储器容量大速度慢价格低调用方向间接直接访问保存方向非易失易失性
C P U M
0
M
2
M
1
3,多层次 ( 多级 ) 存储体系统兼顾各项技术要求下面以三级存储结构为例,说明采用存储体系如何解决各项性能要求之间的矛盾,达到统筹兼顾 。
设 M1和 M2为相邻的两级存储器 ( 如上述的内存和外存 ) 。
另设 Si为单级存储器容量,Ci为单级存储器的单位成本,C为总存储器的单位成本,Ti为单级存储器读写时间,T为整个体系平均读写时间 。 很明显,存在,S1<S2,C1> C2,T1<T2。
因 CPU可直接访问 M1,若 CPU访问的内容已在 M1中 ( 称命中 ),则读写时间 ( 存取时间 ) T=T1。 若 CPU访问的内容不在 M1中 ( 称不命中 ),则必须将 M2中相应的内容调入 M1,再由 CPU访问,因此这时的 T= T2+T1。 由于一般 T2T1,所以可近似认为 T=T2。 设 N1为在 M1中一次访问到的信息量,N2为在
M1中没有直接找到,需从 M2中间接取得的信息量 。 因此,存储体系的平均读写时间 T为
T=
21
2211
NN
TNTN
设 H=N1/ ( N1+N2),则上式可改写为
T= HT1+( 1-H) T2
H为 CPU能在 M1中一次获取信息的比例 ( 命中率 ),很明显 0≤H≤1。 可以看出,当命中率 H大时,越接近于 1,整个存储结构的工作效率越高,读写速度越快 。 整个存储结构的平均价格,可通过下式计算得到
21
2211
SS
SCSCC

当 M2的容量远远大于 M1容量,即 S2S1时,平均价格 C
接近于 M2的价格 C2。
由此可见,当命中率 H接近 1时,整个存储结构将以接近 M2的容量与价格,以接近 M1的读写速度进行工作 。
同理可推知,若 CPU访问 M0的命中率 H接近 1时,则整个存储体系将以接近 M2的容量与价格,以接近 M0的读写速度进行工作 。 多级存储体系为解决存储器容量,速度和价格的矛盾,提供了一种有效的方法 。
在各相邻存储器层次之间,一次访问数量的调用量,由下向上按若干倍递减,访问速度由下向上按若干倍递增 。
CPU与内存间通过指令的执行,硬件调用直接访问,每次最多一个字长 。 内存与外存间通过软,硬件联合调度,每次访问一个文件或程序段 。
由于 CPU内部的工作寄存器较少,只能用于存放原始数据和中间结果,加工处理后的信息必须及时送至内存后备存储,否则将被覆盖,抹除 。
由于内存容量有限以及 RAM器件的易失性,因此必须在其有用空间耗尽,需调入新的内容前,或者在停机断电前将加工处理好的文件等及时写回外存后备存储 。 在使用计算机时,
我们或多或少都感受过突然遭遇断电,而程序,文件尚未备份时的狼狈,由此更易理解存储系统各层次间相互配合,相互支持的必要性 。
4.
在早期的计算机中,由于 CPU主频低,一般内存的工作速度尚可以与 CPU相匹配 。 随着电子技术与计算机技术的发展,
CPU和一般内存的速度都得到了提高,但前者的幅度更大 。
两者速度上越来越大的差异,形成了制约整机速度的,瓶颈,。 为解决这一矛盾,近年来发展了高速缓冲存储器
( Cache) 新层次,从 PC386机起装机,从 80486起在 CPU芯片中封装称为一级 ( L1) 的高速缓冲存储器,位于 CPU外部的为二级 ( L2) 高速缓冲存储器 。
由图 4 - 1 可以看出,Cache应位于零级与一级存储器之间,
显然其读写速度比一般内存快,而容量相对要小,价格要高 。
而一级与二级 Cache之间亦符合这一规律 。 内存与 Cache之间,
两级 Cache之间的数据传送由辅助硬件完成,保证了高的调度速度 。
现代的计算机需要满足一个用户可以同时进行多项任务,
一台机器可以被多个用户 ( 通过程序 ) 同时使用等要求,加上支持用户的软件越来越多,每个文件长度越来越大,需要海量存储器 。 一般外存若使用了大容量的软,硬磁盘后尚嫌不足,可以在第二级存储器外,又延伸到第三级 。 廉价的磁带存储器和大容量的光盘等可作为软,硬盘的后援支持,显然它们的读写速度更慢些 。 二,三级存储器之间的数据传送采用辅助软硬件完成 。 电信局机房中使用超大容量磁带机记录各用户通话收费等信息,是三级外存的典型应用 。
由以上多个层次构成的多级存储体系如图 4 - 2 所示 。
图 4-2 多级存储体系示意图
M
0
C P U C a c h e 1 C a c h e 2 M
1
M
2
M
3
微处理器芯片主机内存 外 存目前,零级工作寄存器可达几百个字节,一级 Cache可达
16 KB,二级 Cache已达 256~512KB,一级内存装机已达
64~512 MB,二级外存为 GB级,三级外存理论可达 TB级 。 由于采用了较好的软,硬件设计,在高档微机中多级存储体系支持 CPU对 Cache1访问的命中率高达 95%以上 。
这样整个体系可以接近 CPU的高速度,并获得大容量外存的支持,价格也为用户所能承受,即达到各方面俱佳的整体效果 。
多级存储体系中,相邻层次中信息调度仍按图 4 - 1 所示的方向进行流通 。 与此相关,调度容量则按图 4 - 3 所示,每向上升高一个层次,则减少若干倍 。
图 4 – 3 存储体系调度
M 0C P U C a c h e 1 C a c h e 2 内存 外存 1 外存 2单字长 几十字长 几百、几千 字长 文件程序段 文件 组
4.1.3
存储器的主要性能指标反映了计算机对它们的要求,以上已进行了定性的介绍 。 下面将对它进行量化说明 。
1.
存储容量是存储器可以存储的二进制信息的数量 。 这里所说的存储器,可以指大范围的存储体系,一个存储器设备,也可以是一个小规模的存储器芯片 。
对大容量的存储器常使用兆字节 ( MB),吉字节 ( GB)
等单位表示 。 对小容量的芯片常使用千字节 ( KB) 等单位表示,
有时也使用另一种表示形式:存储单元数 × 二进制位数 /单元这里的单元,是指具有同一地址的存储单位,或称存储字 。 存储器存储单元的多少或一个机器的存储空间的大小,可以由其地址码的位数确定 。
若地址码为 n位,则可译码产生 2n个不同的地址码,即有
2n个存储单元,则其容量为 2n个存储器字长 。
2,存取时间与存取速度存储器存取时间是完成一次存储器读 /写操作所需要的时间,故又称读写时间,对于内存和外存,其具体定义有很大的差异 。
(1) 半导体存储器 。
内存多采用半导体存储器,其读出时间是指在存储器从接到地址信号 ( 随即又接到读控制信号 ) 后,直至单元内容被稳定读出时的时间间隔 。 存储器的写入时间是指存储器从接到地址信号 ( 随即又接到数据信号,写控制信号 ) 后,直至单元被正确写入时的时间间隔 。
存取时间定义如图 4 - 4 所示。 一般情况下,读出时间大于写入时间。
存取速度是存取时间的倒数 。 一般情况下读出速度小于写入速度 。
存取周期是连续进行读 /写操作的所需的最小时间间隔 。
由于在每一次读 /写操作后,都需有一段时间用于存储器内部线路的恢复动作,所以存取周期要比存取时间大 。 当 CPU采用同步时序控制方式时,对存储器读,操作的时间安排,应不小于读取和写入周期中的最大值 。 这个值也确定了存储器总线传输时的最高速率 。
若半导体存储器存取周期为 20 ns,则每秒最多进行 50 M
次总线操作,若总线位宽为 16,则传输率可达 800兆位 /秒 。
图 4 – 4 存取时间的定义读出时间读取周期内部恢复
T
4
T
3
T
2
T
1
AB 信号传送 CB 信号传送数据输入 DB
t( a )
写入时间写存周期内部恢复
T
4
T
3
T
2
T
1
AB 信号传送 DB,CB 信号传送数据写入
t( b )
(2) 磁盘设备 。
磁盘读写不同于内存,是按扇区为传输单位进行操作的 。
当磁盘进行读写时,首先需将磁头定位在规定磁道上,然后需等到磁盘把对应的扇区移至磁头下方 。 读写完成后,尚需要有传送给主机内存的操作时间 。 整个操作过程由磁道定位时间,
磁头等待时间,读写时间及传送时间等多个部分组成 。 由于有时磁头已定位在规定磁道上,磁头定位时间为零,有时需从零磁道移至最大磁道的时间最长,所以通常以平均定位时间计算 。
磁头等待时间亦有类似情况,一般采用平均值,它等于磁盘旋转半周所需时间 。
磁盘的读写时间较容易计算,因为磁盘每旋转一圈就完成一个磁道中全部扇区的读写 。 至于传送时间,可简单由传送数据量除以总线传输率来估算 。
若磁盘的平均磁头定位时间约 8 ms,当硬盘高速旋转达
200转 /秒时,其平均等待时间为 2.5 ms。 两者相加约 10.5 ms,
构成了磁盘读写操作的主要时间开销,使磁盘操作慢 。 为减少磁头定位时间,常将双面磁盘同一磁道的 0与 1面的扇区连续编号,并且采取一次读写多个扇区的办法 。 为减少磁头等待时间,硬盘还设置了交叉因子,同一磁道上相邻编号的扇区,彼此间物理上不相邻,而是间隔一定数量的扇区 。
3,价格为便于比较,常用每字节成本或每兆字节成本表示价格,
C=
上式的价格中需包含附加存储器辅助电路的价格 。 有时为更全面地衡量存储器的综合性指标,使用性能 /价格比更为合适 。
4.
可靠性是指存储器在规定时间内无故障工作的情况,一般采用平均无故障时间间隔 ( MTBF) 来衡量 。 MTBF越长,表示存储器的可靠性越好 。 若 Ti为第 i次无故障间隔时间,N为故障数,则容量价格
n
i
i
N
T
1
MTBF=
磁盘,光盘等辅存设备还有其他一些要求,如误码率 ( 产生错误代码的几率 ),寿命年限等等 。 由于半导体存储器是固件,无机械磨损,其理论寿命为无限长 。 由于磁介质的变化和磁头接触读写,软磁盘一般只能使用几年 。 由于高速旋转的机械磨损,硬盘驱动器寿命有限 。 光盘为非接触式读写,信息抗干扰能力强,保持时间长,不易破坏 。
4.2 主存储器主存储器又称内存,通常由半导体存储器构成 。 通用微型计算机只包含只读存储器 ROM,支持基本的监控和输入 /输出管理; 随机存取存储器 RAM,面向用户 。 近年来,可在线改写的只读 ROM正逐渐扩展其应用,使计算机功能增强,使用灵活 。
4.2.1
主存储器由大量存储器芯片按照一定的规则组合而成 。
主存储器,挂,在总线上,芯片自然也就,挂,在总线上 。
存储器芯片由存储体,地址接口电路,读写控制接口电路和数据接口电路等部分组成,如图 4 - 5所示 。 其各部分的主要功能如下 。
1,存储体存储体是由半导体介质按照一定结构组成的存储单元的组合体 。 其每一个存储单元中包含若干并行读写的记忆元件,
即若干二进制数据位 。 为便于制造和读写控制,这个存储信息的集合体常组成二至三维的阵列,所以又称存储体为存储矩阵 。 它是存储芯片的核心部件,主存储器的其他组成部分,
可以理解为为其服务的外围电路 。
图 4- 5 主存储器的基本组成存储体译码驱动寄存器寄存器缓冲器

读写电路控制电路控制接口电路读 写数据接口电路
D
i
A
i
地址接口电路
CS
M W r i t e M R e a d
2,地址接口电路地址接口电路用以从外部 AB总线上接收地址信号,并按照要求去寻址规定的存储器单元 。 其中地址寄存器锁定地址信号,保证整个操作过程中地址信号稳定不变 。 假若 CPU在读 /写存储器的过程中,可给出稳定的地址信号,则芯片中的地址寄存器就不可缺少 。 在正常情况下,地址寄存器的位宽是对存储单元数目 N取 2为底的对数值 ( log2N) 。 或者反过来说,若已知地址寄存器输入 n个地址信号,则芯片共有 N=2n个存储单元 。
地址译码及驱动电路用来对地址信号进行译码 。 在片选信号 无效时不选中任何一个单元;在片选信号 有效时,只选中芯片中的一个相应单元,由译码器输出有驱动能力的选择线,,通知,该单元投入工作 。
CSCS
地址译码结构一般采用两种方式,单译码和双译码 。
单译码方式仅有一个译码器 。 当输入地址信号的数目为 n
时,输出 2n根译码线 。 每条译码驱动线对应连接一个单元 。 译码驱动又称 ( 存储 ) 字线,当译码线有效时可实施对该存储字中的各记忆元件同步 ( 并行 ) 读写操作 。
双译码方式需有两个译码器,分成 X向和 Y向 。 当输入全部地址信号后,将地址信号分成 X,Y二路,分别送至两译码器 。
译码线 Xi有效时,选中某一行各单元; Yi有效时,选中某一列各单元; Xi,Yi同时有效时交叉选中一个单元 。 双译码结构复杂,但能节省大量译码驱动线 。 地址译码的两种结构如图 4 - 6
所示 。
图 4 -6
(a) 单译码器方式; (b) 双译码器方式地址译码器
0
X
0
1
X
1
1 0 2 2
X
1 0 2 2
1 0 2 3
X
1 0 2 3
A
0
A
1
A
8
A
9
…… ……
单元
( a )
X
地址译码器
A
0
A
1
A
2
A
4
A
3
0 0,0 0
3 1,0 0
0
31
……
Y 地址译码器
……
0 0,3 1
……
3 1,3 1
A
5
A
6
A
7
A
8
A
9
单元单元
( b )
……
……
0 31
例:已知某存储器芯片规格为 1 K× 8,试比较内部采用两种不同地址译码方式时使用译码驱动线的多少 。
解,芯片为 1 K× 8,即地址输入线数目 n=10,则单译码方式地址译码驱动线数目 =2n=210=1024。
双译码方式取 X向,Y向各 n/2=5位译码,X向 ( Y向 ) 地址译码驱动线数目 =2n/2=25=32。
双译码方式地址译码驱动线数目 =2n/2+2n/2=32+32=64。
两者相比,双译码时地址驱动线的数目减少到单译码的
1/16。
3.
数据接口电路用以和外部数据总线接口 。 它包括:数据寄存器用来暂存供输入输出用的数据;数据缓冲器,用来保证数据通道通断时的缓冲作用 。 其典型的结构是三态门 。 图 4
- 7 给出了 RAM芯片中缓冲器的双向三态门结构 。 它具有三种工作方式:
① 当读存储器时,T2导通,T1截止高阻,数据由 A到 B
传送 。
② 当写存储器时,T1导通,T2截止高阻,数据由 B到 A
传送 。
图 4 – 7 RAM缓冲器结构数据寄存器
A BT 1
写读
T 2
外部 DB
③ 当不读不写时,T1,T2都截止,A与 B间高阻隔离,
虚,挂,在数据总线上 。
4,读写控制接口电路

写控制信号,完成对选中单元的读,写及数据缓冲控制 。 另外,对一些特定的芯片 ( 如动态 RAM),还要完成对读出信息的检测,放大及再生等工作 。
4.2.2只读存储器 ROM
只读存储器 ROM是主存的重要部分之一,用于存放微程序,监控程序,固定程序,字母符号,汉字符号点阵等系统级信息,其基本组成仍如图 4 - 8 所示,只是存储体部分由具有固定信息的记忆元件矩阵组成 。 各类记忆元件都等效于简单的开关 。 接通的,开关,信息视为,1‖,断开的,开关,信息视为,0‖,或者是取相反的逻辑值 。
因制造工艺和功能的不同,一般将 ROM分为普通 ROM、
可编程 ROM( PROM),可擦写可编程 ROM( EPROM) 和电可擦写编程 ROM( EEPROM) 等 。
图 4-8 MOS型开关漏极源极栅极
R
A B
R
+ 5V
T 1 T 2
0 / 1 1
R
A B
R
+ 5V
1
0 / 1 1
0
S
衬底 1 / 0
当栅极加有高电平时,T1管导通,相当于开关合上,A处输出,0‖; 当栅极加有低电平时,T1管截止,A处输出,1‖。
因漏极与电路不连接,MOS管 T2对电路无任何控制作用,B处始终为,1‖。
图 4 - 9 为一个具有二行三列,共 6个记忆元件组成存储矩阵的 MOS型 ROM的示意图 。 行线为译码驱动线 。 当行线为无效电平,0‖时,此时该行末选中,各 MOS开关均断开,列线输出为,1‖。 当行线为有效电平,1‖时,该行被选中,与列线相连的 MOS开关导通后,把列线电平下拉至,0‖电平 。 不与列线相连的 MOS开关,不影响列线电平维持,1‖。 在读存储器控制信号作用下,打开数据缓冲三态门后 ROM中的信息被读出 。
图 4- 9 2× 3ROM结构示意图地址译码器等效
R
字线 0
片选列线 0 列线 1
1 行
0 行列线 2
位线 0 位线 1 位线 2
数 据 寄 存 器数 据 缓 冲 器读信号
0
0
1
0
0
1
R O M 信息字线 1
由于当行线有效时可同时选中一行中的各个 MOS开关,
而同一行中的各个二进制位组成一个存储字,故行线又称字线 。
同样同一列线连接了不同行线中的同一列号的开关,输出位信息,故列线又称位线 。 上述存储器的具体规格为 2× 3( 字 × 位
/字 ) 。
掩膜 ROM的存储内容在出厂时,由生产厂家一次完成,
适合于大批量定型制作 。 每年生产的 PC机有几千万台,其中的 BIOS-ROM就属于掩膜 ROM。 由于批量极大,故成本不高 。
2,可编程 ROM( PROM)
由于用户对掩膜式 ROM存储的内容不可进行修改,不能满足部分用户自己制作 ROM的要求,可编程 ROM应运而生 。
PROM有多种类型,其中原理简单的是熔丝型的 。
当工厂生产时,在每个存储位 MOS管的漏极与位线间使用熔丝相连,如图 4 - 10 所示 。 在图 4 - 9 所示的 ROM中,出厂时全部信息为,0”( 若经倒相器输出则全部为,1”) 。
当用户制作 ROM时,只需对信息要求为,1‖的相应单元设定,这一过程称为编程 。 具体做法是,对改写的单元在被选中 MOS管导通时,通以较大的电流使熔丝烧断,漏极与位线断开 。 由于烧断的熔丝不能自行复原,所以编程只能是一次性的,这限制了 PROM的应用 。
3,光可擦可编程 ROM( EPROM)
在许多含有 ROM的新产品开发过程中,不可避免地会出现编程 -测试 -修改的多次反复 。 光可擦可编程 ROM适用于这一类场合 。
图 4 – 10 可编程 ROM
(a) 编程前; (b) 编程后熔丝
+ 5V
字线位线
' 0 '
( a )
熔丝
+ 5V
字线位线
' 1 '
( b )
EPROM是在普通 ROM型的 MOS开关管源极下面,串接另一个由擦写操作控制的特殊的 MOS开关管制成 。 为简化起见,
将后者视为等效开关 S,图 4 - 11 给出了等效电路 。 出厂时,
设置开关 S使 MOS管的源极与地断开,芯片全部存储信息,1‖。
当用户编程时只需进行写,0‖操作,在专门的编程器上,利用较大的电能量将相应位的开关 S合上,使 MOS的源极与地连通,
改存储信息,0‖。 当用户修改程序时,将带有透明窗口的芯片放置在紫外线下,照射几十分钟由较大的光能量将开关 S再次拉断,芯片信息恢复为全,1‖——被擦除 。 一般 EPROM芯片允许擦写不少于 1000次,写成后可维持信息 100年不变 。 平时为避免紫外线照射造成信息破坏,在芯片窗口上方贴不透光塑料膜等 。
EPROM常见于 PC兼容机上以及一些单片机控制的仪器仪表,设备或系统中。
图 4 - 11可擦可编程 ROM
(a) 出厂时状态; (b) 写后状态; (c) 擦除后状态字线出厂
S
+ V
CC
( a )
字线写
S
+ V
CC
( b )
字线擦除
S
+ V
CC
( c )
位线位线位线
4,电擦除可编程 ROM( E2PROM)
EPROM在擦除,编程时需要将芯片从机器上拿下,放在专门的装置上进行,不仅脱机操作手续多,耗时长 ( 达几十分钟 ),且编程电压高,安全性差 。 以后逐渐发展了电擦除可编程 ROM( E2PROM),使擦除较以前方便得多 。 这类芯片开始编程时电压也偏高,为满足在线 ( 在机器上 ) 直接操作的需求,已有可统一使用主机主电源 ( +5 V或更低 ) 的品种,近年来推出的一种新型快擦写存储器 ——Flash Memory,
又称闪速存储器,可完全替代一般的 E2PROM。 它的主要性能特点如下:
① 集成度高 ( 可达 64 MB以上 ),价格低,可靠性高;
② 擦写速度快,擦写次数多 ( 可达 100万次,甚至 2000
万次 ) ;
③ 功耗低;
④ 编程电压低,可使用主机电源在线操作 。
目前它已用于便携式及部分 486以上 PC机的 ROM BIOS。
由于可以在线擦写,必要时,可使用软盘对其内容进行改写,
支持功能升级 。 今后,它可以用以固化操作系统,缩短操作系统装载时间,还可以作为固体,盘片,逐渐取代软,硬盘驱动器,速度更快,寿命更长 。
4.2.3随机存取存储器 RAM
1,静态 RAM( SRAM)
静态 RAM可由双极型或 MOS等不同工艺制成 。 双极型静态 RAM的工作速度快,功耗大,价格高,而 MOS型静态 RAM
集成度高,价格低,功耗小但速度较慢 。 两者的共同之处在于都使用,触发器,作为记忆元件 。 由于触发器在读出时,
不破坏原有信息,在不读不写时,能维持原有信息,稳定不变,由此取名为静态 RAM。 其内部线路较为复杂,在此不作进一步介绍 。 以下仅例举一个具体芯片 2114,对其外部引脚作一说明 。
2114芯片的规格为 1 K× 4,即其内部共有 1 K个单元,每个单元 ( 存储字 ) 有 4个二进制位,共 4 K个记忆元件位 。
可以推知,它有 10根地址输入线 A0~A9,4根双向的数据线 D0~D3,为配合组装大容量的存储器使用的片选线 以及
。 这里当 =0时,片选有效,此时当
=0时,内部执行写操作; 当 =1时,内部执行读操作 。 该芯片的内部存储空间与对外连接示意如图 4 - 12 所示 。
2,动态 RAM( DRAM)
动态 RAM多由 MOS工艺制造,特点是采用电容做记忆元件 。 图 4 - 13 给出了单管动态 MOS记忆单元的逻辑电路,该线路简单 。
当进行写操作时,字线驱动有效 ( 高电平 ),使 MOS管
T导通,位线接收数据寄存器送来的信息 。
CS
CSCS
WE WE
图 4 – 12 RAM 2114示意图
(a) 内部存储空间; (b) 引脚对外连接; (c) Intel 2114 引脚图
0 1 0 0
1 1 0 1
……
1 0 1 0
b
3
b
2
b
1
b
0
0 0 0 0 H
0 0 0 1 H
0 3 F F H
( a )
2 1 1 4
S R A M
芯片
A
9
~ A
10
CS
WE
D
3
~ D
0
( b )
A
6
A
5
A
4
A
3
A
0
A
1
A
2
CS
G N D
V
CC
A
7
A
8
A
9
I / O
1
I / O
2
I / O
3
I / 0
4
WE
( c )
10
4
图 4 – 13 单管 DRAM结构
+ V
CC
字线位线
AT
B
C
CD
当 A为高电平时对 C充电或维持 C的高电位不变;当 A为低电平时,使 C放电或维持 C上的低电位不变,于是对应存储了,1‖或,0‖。
当进行读操作时,字线驱动有效,T管导通 。 电容 C存储
,1‖( 高电平 ) 时,B处的正电荷经 T管向 A放电 。 由于位线上有较大的寄生电容 CD( CD> C),在放电结束后,电荷的重新分配使 A,B处于较低的电平,称为破坏性读出 。 这个较低的正电平被线路检测后,仍视为,1‖发送出去,随后线路反过来,再对电容 C充电,恢复其高电平维持,1‖的信息,
这一过程称为再生 。 若电容 C存储信息,0”时,则读出为 0,
再生亦为,0”。
当不读不写时,由于电容 C存在漏电阻,若原存储信息为
,1‖,由于电荷不断泄漏的缘故,则可能产生信息,0‖的效果 。 解决的办法是在其量变而未质变的时间间隔内 ( 一般为 2
ms),即读出仍为,1‖时,重新再写,1‖以充足电荷 。 由于上述动作在 RAM上电的整个过程中,必须重复进行,故称为动态刷新 。 刷新时,数据仅在芯片内部读出,不外送,故又称虚读 。
为实施动态刷新,芯片将输入的全部地址信号分为行,
列两个部分 ( 一般各取一半 ),规定低地址为行地址,高地址为列地址 。 刷新时按计数 128次将全部 DRAM芯片刷新一遍的原则,每次取各芯片的同一行的众多单元同时操作,而与列地址无关 。
为支持 128次计数需要低 7位行地址 。 为避免刷新时输入全部地址可能造成不必要的混乱,采用刷新时只输入刷新行地址的办法,为此将地址引脚也减少一半 。 芯片正常读写时内部寻址所需要的全部地址信号,需分行,列地址两次先后输入 。 为使芯片正确区分,,
,其关系如图 4 - 14 所示 。
DRAM芯片 4164规格为 64 K× 1,它共有 64 K个字单元,
每单元仅 1位 。 它需要 16位地址信号,但实际仅有 8个外部地址引脚 。 其地址信号需分两次先后输入,先输入低 8位行地址信号 ( A7~ A0),后输入高 8位列地址 ( A15~ A8),刷新时只输入刷新行地址信号 ( A6~ A0) 。
RAS
CAS
图 4 – 14 4164行,列地址分配低 8 位地址 高 8 位地址A
7
~ A
0
引脚
R A S
C A S
分时复用地址引脚低电平有效于在本芯片读写和刷新时,都应有效,其又被用作芯片片选信号 。 Din,Dout分别为单向的数据输入,输出端,可并联作为一个双向数据端 。,=0时内部执行写操作,=1时内部执行读操作 。 其外部引脚功能如图 4 -
15 所示 。
RAS
WE WE
WE
SRAM,DRAM各有自己的特点和适用环境,表 4- 1 给出了两者的主要差别。
图 4- 15 4164
(a) 外部引脚功能; (b) 引脚图
D R A M
4 1 6 4
芯片分时复用 A
7
~ A
0
行选通 R A S
列选通 C A S
( a )
NC
D
in
WE
R A S
A
0
A
2
A
1
( b )
8
V
CC
G N D
C A S
D
OUT
A
6
A
3
A
4
A
5
A
7
D
o u t
数据输出
D
in
数据输入
WE 写允许
( WE = 0 写)
( WE = 1 读)
表 4 – 1 SRAM,DRAM主要差别类别 记忆元件 电路 集成度 功耗 存取速度 价格 刷新
SRAM 触发器 复杂 低 大 快 高 否
DRAM 电容 简单 高 小 慢 低 要由于集成度高,DRAM芯片价格便宜 。 虽然需要外部附加动态刷新电路,但其在使用数量很大时,总体价格仍较 SRAM
便宜,加上其功耗低,所以常用于一般内存 。 而 SRAM由于速度快,多用于使用数量较少的高速缓冲存储器和小型的存储器应用系统中 。
4.2.4
目前,半导体存储器芯片集成度越来越高,容量越来越大,但计算机的内存空间更加巨大,加之多数动态 RAM为减少引脚数目,常采用位片结构 ( 即芯片存储单元数量很多,
但位线仅 1根 ),因此如何利用已有芯片,组成大容量的存储器仍是必须掌握的技能 。
在组织存储体之前,首先要建立存储空间的概念 。 存储空间是由地址,数据和控制信号组成的三维空间 。 当总线主控部件 ( 如 CPU) 读存储器时,访问的是存储器的读单元空间;当写存储器时,访问的是存储器的写空间 。 对 ROM而言,
它只存在读空间;对 RAM而言,它的任一单元既可读,又可写,可以理解为有两个同样大小的读,写空间 。 为简便起见只给出一个统一的读写空间,但是必须把握 ROM只能读出这一原则 。
在存储器读写空间里,使用二维参数,纵向表示不同单元的地址编号,横向表示同一单元的各位,每位中存储着数据 。
各存储器芯片用编号 N#区分 。 每个存储器芯片,在存储空间定位时,其起始单元地址上面加横线表示上限,其末尾单元地址下面加横线表示下限 。 存储空间如图 4 - 16所示 。
图 4 - 16 所示为 64 KB的存储空间,即共有 0000~ FFFFH
64 K个地址,每个单元存储一个字节 ( b0~ b7位 ) 信息 。 0#芯片规格为 4 K× 8,安置在 0000~ 0FFFH的地址空间中 。
图 4 – 16 存储空间
……
……
0 0 0 0 H0 0 0 0 H
0 F F F H
……
F F F F H
b
7
b
0
……
读空间
……
……
b
7
b
0
……
写空间
0 #
4 K × 8
读写空间
6 8 K × 8
1.
有些存储器芯片的存储字长较短,不能满足机器存储字长的要求,如 2114字长 4位无法单独构成字节单元,4116字长 1位无法单独满足 16位字长的要求等 。 此时可以采用多个同样芯片地址线完全并联,而数据位线串接编号的方法 。 2114,4116芯片按图 4 - 17 的组织形式可完成相应的字扩展,分别需同类芯片 2片及 16片 。
在理解了存储空间的组织方法后,可着手具体线路的连接,即构成同一存储字的各芯片对应地址线完全并联,数据位串编,使用统一的片选线,读写控制信号线等 。 图 4 - 18 给出了 2114的连接方法 。 图中,地址总线 ( AB),数据总线
( DB) 和控制总线 ( CB) 分别接到 CPU的地址总线,数据总线和控制总线 。
图 4 - 17
(a) 2114扩展; (b) 4116扩展
1 #
b
3
b
2
b
1
b
0
b
3
b
2
b
1
b
0
b
3
b
2
b
1
b
0
b
3
b
2
b
1
b
0
b
3
b
2
b
1
b
0
b
3
b
2
b
1
b
0
0 0 0 0 H
b
7
b
6
b
5
b
4
b
3
b
2
b
1
b
0
b
7
b
6
b
5
b
4
b
3
b
2
b
1
b
0
b
7
b
6
b
5
b
4
b
3
b
2
b
1
b
0
0 #
0 3 F F H
… …
… …
… …
……
0 0 0 0 H
F F F F H
15 # 14 # 1 # 0 #……………………………………………………
0 #1 # 15 # 14 # …………………………………………………… 1 # 0 #
1 K × ( 4 × 2 ) = 1 K × 8
( a )
1 6 K × ( 1 × 1 6 ) = 1 6 K × 1 6
( b )
图 4 – 18 2114的字节扩展线路连接示意图
A
i
WE D
i
CS
1 #
A
i
WE D
i
CS
0 #
1
1
片选择码
M R e a d M W r i t e
A
9
~ A
0
D
3
~ D
0
D
7
~ D
4
A
9
~ A
0
10
D
3
~ D
0
D
3
~ D
0
M W r i t e
CB
AB
DB
图中,( 写存储器控制信号 ) ( 读存储器控制信号 ) 不能同时有效 ( 非写即读,非读即写 ),原则上可以使用 一个信息的 0,1电平分别进行对存储器的写,读操作控制 。
但是,有些情况下要相对复杂些 。 例如在 PC机中总线操作还包括对 I/O接口的操作 。 当进行 I/O操作时,及两信号同时无效 ( 均为 1),不再能简单地用 一个操作信号来完成写,读存储器两种操作,需在片选信号中加入存储器操作信息 。 这样,实际上明确指向了存储器地址空间,可使读写操作准确无误 。
Mwrite Mread
Mwrite
Mwrite
Mread Mwrite
cs
2.
有些芯片的存储字长已满足要求,但存储单元较少,需要扩展 。 如 EPROM芯片 2716规格为 2 K× 8,需组成 8K× 8的存储器,就属于这类问题 。 从图 4 - 19 的存储空间图中,可以知道需 4片 2716,它们彼此的地址互相串联衔接,相对应的数据位线并联 。 由此,比较容易画出相应的线路连接图,如图 4 - 20 所示 。 与图 4 - 18 类似,地址总线 ( AB),数据总线 ( DB) 和控制总线 ( CB) 分别接到 CPU的地址总线,数据总线和控制总线,地址译码可以使用 74LS138,74LS139和
74LS154等译码器芯片构成 。 关于译码器的功能与使用,在数字逻辑电路课程中都已经作过详细介绍 。
图 4 – 19 2716单元扩展的存储空间
0 #
1 #
2 #
3 #
2K
2K
2K
2K
8K
0 0 0 0 H
0 7 F F H
0 8 0 0 H
0 F F F H
1 0 0 0 H
1 7 F F H
1 8 0 0 H
1 F F F H
b
7
…… b
0
2 0 0 0 H
2 7 F F H
2 8 0 0 H
2 F F F H
3 0 0 0 H
3 7 F F H
3 8 0 0 H
3 F F F H
( 4 × 2 K ) × 8 = 8 K × 8
在线路连接过程中最为困难的是各片选信号 的选择,
下面举例予以说明 。
例,设机器中 AB总线为 16位,寻址 64 K个单元,要求从
0000H地址起安排 4片 2716共 8 KB的 EPROM。
解,2716规格为 2K× 8,则芯片内部寻址地址为 11位,
取 A10~ A0信号:
各芯片的片选信号应由 AB总线的 5位高地址 ( A15~ A11)
确定 。 线路中使用了一个译码器,低电平有效 。 各芯片连接的地址译码信号可具体按排如下:
iY
cs
片选译码 芯片序号 A15 A14 A13 A12 A11 地址范围
0# 0 0 0 0 0 0000H~ 07FFH
1# 0 0 0 0 1 0800H~ 0FFFH
2# 0 0 0 1 0 1000H~ 17FFH
3# 0 0 0 1 1 1800H~ 1FFFH
四个芯片的具体连接如图 4 - 20 所示 。
0Y
1Y
2Y
3Y
图 4 - 20 中的片选地址译码器有 5个输入信号 ( A15~
A11),共 32,每根线可寻址 2 KB
空间 。 机器的 64 KB存储器空间可分成 32个 2 KB大小的空间,
每根译码线 指向其中一块并具有确切的首,尾地址 。 一旦芯片的 CS,则该芯片的实际地址就被,框,定了 。 片选线用以实现芯片在存储空间中的定位,其作用类似于 PC机中的段寄存器 。
31Y 0Y
iY
iY
图 4 – 20 2716单元扩展的电路连接图
OE
CS
3 #
A
i
CS
2 #
D
i
OE
CS
1 #
A
i
CS
0 #
D
i
地址译码器
Y
3
Y
2
Y
1
Y
0
片选
A
1 5
~ A
11
A
1 0
~ A
0
D
7
~ D
0
DB
C B ( M R e a d )
AB
片选译码共 2
5
= 32 线例,如果将上例扩展后的 4片 2716的起始地址调整为
2000H,要求重新选择片选译码线 。
解,由于新的起始地址为 2000H,即整个存储器向高地址方向平移了 8 K,则必须重取片选译码线如下:
芯片序号 地址范围 A15 A14 A13 A12 A11 片选译码
0# 2000H~ 27FFH 0 0 1 0 0
1# 2800H~ 2FFFH 0 0 1 0 1
2# 3000H~ 37FFH 0 0 1 1 0
3# 3800H~ 3FFFH 0 0 1 1 1
4Y
5Y
6Y
7Y
3.
在很多情况下,大容量的,完备的存储器,需要由几种不同类型的存储芯片组成,既要字长扩展,又要单元扩展,既有明确的地址安排要求,又不允许地址全部连续 。 这就要求具有综合应用上述扩展技术的能力 。
例,某一微机系统的 CPU字长为 8位,地址信号线为 16根 。
上电复位后,程序计数器 PC指向 0000H地址的内存单元 。 要求使用 2716EPROM芯片 ( 规格为 2 K× 8) 组成 4 KB的 ROM存放系统监控程序,并预留 4 KB 的用户 ROM空间;使用
2114SRAM芯片 ( 规格为 1 K× 4) 组成 8 KB系统及用户 RAM
解,① CPU字长为 8位,地址信号线为 16根,则内存空间为 64 K× 8,即 64 KB;
② 复位后 ( PC) =0000H,则此地址处应存放监控程序
ROM。 4 KB的 ROM应由两片 2716单元扩展组成,若连续存放,则其地址范围为 0000H~ 0FFFH。
③ 设预留用户 4 KB的 ROM空间的地址与上述 ROM地址相连,则其地址范围为 1000H~ 1FFFH。
④ 8 KB的 RAM的组成可由下式计算
( 8 K× 8) /( 1 K× 4) =( 8 K/1 K) × ( 8/4) =8× 2=16片则共需 16片,其中每两片字长扩展至 8位为 1组,8组 ( 每组 1 K× 8) 单元扩展至 8 KB。 由于系统对 RAM地址无明确要求,可按地址连续安排的简化原则,确定其范围为 2000H~
3FFFH。
由此,可画出芯片的存储空间分配示意,如图 4 - 21 所示。
图 4 –21 某微机系统内存空间分配示意图
3 # 2 #
5 # 4 #
7 # 6 #
9 # 8 #
1 1 # 1 0 #
1 3 # 1 2 #
1 5 # 1 4 #
1 7 # 1 6 #
预留 4 K B R O M
1 #
0 #
R A M 扩展空间
2 片 2 7 1 6
2 片 2 1 1 4
2 片 2 1 1 4
16 片 2 1 1 4
4 K × 8
4 K × 8
8 K × 8
4 8 K × 8
8 K R O M
5 6 K R O M
6 4 K
0 0 0 0 H
0 7 F F H
0 8 0 0 H
0 F F F H
1 0 0 0 H
1 F F F H
2 0 0 0 H
3 F F F H
内存空间
根据图 4 - 21,可进行具体的线路连接 。 连接方法类似于图 4 - 20,地址总线 ( AB),数据总线 ( DB) 和控制总线
( CB) 分别接到 CPU的地址总线,数据总线和控制总线,地址译码可以使用 74LS138,74LS139,74LS154等译码器芯片构成 。 其中较复杂的问题仍在于如何组织好片选信号的译码 。
总的原则是要将 AB,CB,DB三个总线部分中所有与存储器操作有关的信号,都与存储器联系起来 。
例,若有微机系统 ( 如单片机等 ),其原始数据基本要求与上例中的微机系统相同,但附加了一个条件 ——它的程序存储空间与数据存储空间各自独立 ( 称哈佛结构 ) 。
设计 。
解,① 该微机系统有两个存储空间:一个是程序存储的读空间,一个是数据存储的读写空间 。 ROM芯片存放在程序存储器空间,RAM芯片存放在数据存储器空间,无地址冲突 。
②,③ 步骤同上例的安排 。
④ 基本同上例的安排 。 由于 RAM有自己单独的地址空间,
因而可以自由安排首址 。 若选择 0000H为首址,则其范围为
0000H~1FFFH。
由此可画出该系统存储空间分配图 (如图 4 - 22所示 )。
早期 PC机使用每 8片 64 KB× 1的 6164 DRAM芯片组成 64
KB的一个存储体,然后 4个存储体 ( 共 32片 ) 组成 256 KB作为主板基本内存,采用的就是综合扩展技术 。
图 4- 22独立的程序,数据存储空间
2 7 1 6
2 7 1 6
预 留
0 0 0 0 H
0 7 F F H
0 8 0 0 H
0 F F F H
1 0 0 0 H
1 F F F H
F F F F H
4 K × 8
4 K × 8
5 6 K × 8
程序空间
2 1 1 4 2 1 1 4
2 1 1 4 2 1 1 4
扩展空间数据空间
0 0 0 0 H
1 F F F H
F F F F H
8 K × 8
5 6 K × 8
4.3 高速缓冲存储器( Cache)
4.3.1Cache
Cache的工作原理基于对大量典型程序运行和数据处理情况的分析,得出了存在着程序和数据访问局部性的结论 。
通常程序多为顺序执行方式,即执行完当前指令后,紧接着执行与存储地址相邻的下一条指令 。 遇到转移或调用指令在完成了转移和调用后的情况,又进入顺序执行方式 。 指令地址连续分布的特点,加上循环程序段和子程序段的重复执行,
对这些地址的访问自然具有在时间上集中分布的倾向 。 这种对局部地址范围内的存储器频繁的访问,而对范围以外的地址访问甚少的现象称为程序访问的局部性 。 同样,数据访问也存在局部性 。
4.3.2Cache的工作过程在存储系统的层次结构中引入 Cache是为了解决 CPU与主存之间的速度差异,提高了 CPU工作效率 。 Cache是缓冲接口技术在存储体系中的一个具体应用 。 在 Cache中存放着主存内容的一部分副本 。 80486芯片内部的一级 Cache存放着数据和指令的混合体 ( 即统一的读写存储空间 ) 。
Pentium机芯片内的 Cache则采用哈佛结构,即指令和数据分别存储在各自的独立空间里,类似于图 4 - 22。 当 CPU读取指令或数据时,首先访问 Cache。 若有关信息已在 Cache中,
称为读命中,可直接从 Cache中取用 。 若不命中,则从主存中取出,同时取出与该指令或数据地址相邻的若干单元内容
( 称为一页 ) 写入 Cache。
由于局部访问原理的存在,当 CPU下次访问 Cache时,
就会命中 。
严格来说,命中并不指所需要的具体指令或数据是否已在 Cache中,而是指存放它们的存储器单元地址是否已在
Cache中,CPU按地址去获取信息 。 当主存向 Cache发送页面内容时,将原有的地址信息也一并输入,通俗地说,对 CPU
而言 Cache无独立的总线地址,无固定的总线地址 。
当 CPU向 Cache写入数据内容时,有几种不同的方法:
① 遍写 。 当 CPU访问命中时将内容同时写入 Cache和主存,这为多个处理器共用一个主存时的数据及时共享提供了方便 。
② 回写 。 当 CPU访问命中时将内容只写入 Cache,在规定的时候 ( 如调出 Cache) 将修改过的内容写入主存 。 它的好处是运算的中间结果可只写入 Cache,方便 CPU调度更改,只有最后结果才写入内存,减少了不必要的操作 。 目前 Pentium机多采用此种方式 。
③ 写未命中时,直接写主存 。 在读未命中时,需调入被访问单元所在的新页主存副本 。 当 Cache存储空间有空闲时,
可直接调入;当 Cache已满时,需要按照一定的调度方法先将其中一页 ( 块 ) 调出 Cache后再调入 。 从 80486芯片起,开始采用了 LRU( 最近最少使用 ) 算法自动更新,即最近使用过的指令和数据保留,而长期末用到的被自动替换出去 。
为进一步提高 CPU访问 Cache的命中率,可采用适当加大
Cache容量,进一步改善程序和数据结构,加强预测判断以及采用更好的优化调度算法等方法 。
在两级 Cache中页 ( 块 ) 的大小不同,显然二级 Cache一次调度单元数量多,而且其页多,容量大 。 两级 Cache间及 Cache
与主存的调度算法和读写操作,全由辅助硬件完成,速度快 。
图 4 - 23 给出了 Cache的逻辑结构 。
图 4 – 23 Cache的逻辑结构块地址 块内地址块地址变换替换逻辑块地址 块内地址
C a c h e 存储器读写控制主存
C
P
U
读主存地址:
未命中命中
4.4 虚 拟 存 储 器
4.4.1
在存储系统的层次结构中,主存可由两级容量远大于自己的辅存 ( 磁盘,磁带等 ) 作后援支持 。 在 CPU访问主存命中率高的情况下,整机可达到接近主存的工作速度,并且享有大的存储容量 。 在 PC机发展过程中,出现过一些新的矛盾 。
PC系列机的实址方式只允许使用 1 MB主存 ( 内存 ) 空间,
而用户程序却越来越长,数据越来越多,大大降低了 CPU访问主存的命中率 。 实际上 386,486,586机内存空间高达 4 GB
( 有的 586机可达 64 GB),大量的物理空间被闲置 。 另外计算机主频越来越高,功能越来越完善,用它服务于一个一般用户的普通任务,早已绰绰有余 。
如何充分利用高档 PC机的资源,使它,同时,服务于多个用户,或者一个用户的多个任务,这一问题在 Windows操作系统引入 PC机后得到了较好的解决 。
原先只在较大规模计算机中采用的虚拟存储技术,从
PC286机起开始引入微机 。 虚拟存储器是虚拟存储技术的一个具体应用 。 当任一用户或同一用户不同任务的程序和数据很长时,可以先存放在辅存中 。 当程序执行时,先调一部分到主存,
让 CPU执行和处理,然后将其调出,再调度其他部分 。 在实址方式时,这种调入,调出的管理工作由用户程序员编程安排 。
由于在 PC机中辅存只能作为 I/O设备来使用,CPU不能直接访问其中的具体内容 。 例如,文件存于 C盘的 16扇区中,人们不能直接指定其中的第 100个字节处的程序指令投入工作 。 由此,
程序员编程安排工作将变得繁琐,枯燥 。
虚拟存储器允许用户把主存,辅存视为一个统一的虚拟内存 。 用户可以对海量辅存中的存储内容按统一的虚址编排,
在程序中使用虚址 。 当程序运行时,当 CPU访问虚址内容时发现已存于主存中 ( 命中 ),可直接利用;若发现未在主存中
( 未命中 ),则仍需调入主存,并存在适当空间,待有了实址后,CPU就可以真正访问使用了 。 上述过程虽未改变主存,
辅存的地位和性质,但最重要的是原来由程序进行的调度工作改由计算机系统的硬件和软件 ( 操作系统 ) 统一管理自动进行,
辅存相对用户是透明的,大大方便了用户 。 用户在 PC机虚拟保护工作方式下,允许使用高达 64 TB海量的存储器空间,可以多任务,多用户,同时,使用计算机 。
应当说,虚拟保护工作方式才是高档 PC机的基本工作状态,才是,物尽其用,的环境 。
4.4.2虚拟存储器的基本结构从 286机起开始设置虚拟保护工作方式,对虚拟存储器采取二维的页式地址格式 。 随后在 386机及以上机型的虚拟保护方式中,对虚拟存储器常采取三维的段,页式地址格式 。 它们的虚拟地址格式如下:
二维页式,虚页号页内地址三维页式,虚段号虚页号页内地址为简明起见,这里只介绍页式虚拟存储器的原理实现 。
286机实际 ( 物理 ) 内存空间为 16 MB,其支持的虚拟存储空间为 4 GB。 为调度方便,虚存空间和实存空间都划分为若干等长的页面 。
设每个页面长 64 KB,其页内地址使用 16位二进制表示
286机实存空间可划分 256个页面,实页号需 8位二进制表示;
虚存空间可划分为 16 384个页面,需用 14位二进制表示,为统一仍使用 16位二进制,余留二位用于保护级别 ( 0~3共 4级 ) 。
这样一个虚存地址由两个 16位逻辑地址组合而成,例如:
虚页面编号,01100111001010 **
虚页内地址,1111100010111011
上例中虚页号中的 **表示保护级别,不作进一步介绍 。
由于规定虚实页内使用相同的偏移量地址,即页内地址一样,
今后不再区分 。 图 4 - 24 给出了虚拟存储器的基本结构 。
图 4 –24 虚拟存储器基本结构


F F H
3 F F F H
3 F F E H
3 F F D H
3 F F C H
0 0 0 0 H
0 0 0 1 H
0 0 0 2 H
虚页号
F E H
调出调进
0 0 H
0 1 H
地址映像机构实页号虚拟空间
1 G B
实存空间
1 6 M B
1 0 H 页实页号 页内地址虚页号 页内地址来自 C P U
13 0 15 0
7 0 15 0
逻辑地址在执行用户指令时,页内地址送入 16位的偏移量寄存器,
而虚页面编号送入段寄存器 。 此后由段寄存器中取出 14位虚页面编号,查询由操作系统和硬件支持的地址映象机构中的页目录表 。 若表中登录该页面已调入内存 ( 命中 ),则给出相应内存的实页面号,随之确定了该实页面的首址,再加上页内偏移量从而确定了指令中访问对象的实际地址 。 实际地址是指总线地址,即可从地址总线给出明确信息的地址 。 若页目录表中未登录 ( 未命中 ),则该虚页面内容仍在辅存,可按表中用户预留的信息,到相应辅存的对应区域,将页面读入内存,交付用户使用 。
图 4 - 25 中的用户在指令中使用了两个逻辑地址:虚页号
3FFCH,页内地址 1200H。 经查表后该页面内容不在内存,且内存已满 。 操作系统依据 LRU算法 ( Least Recently Used 近期最少使用策略 ) 指定将内存中 10H页的内容先调回外存,再将虚页号 3FFCH中的内容调入内存 10H页,并随即在页目录表上登录该页已调入内存,并注明存入 10H号实页 。 接下来地址计算机构将实页号首址与页内偏移量地址相加,得到 24位的实际地址 101200H,CPU按该地址完成对用户的访问 。
和上节内容相比较可以发现,Cache与主存间及主存与虚存间在页表目录,调度操作,调度策略及映像关系等方面,
有许多相同或相似的内容 。 读者要把握好共性,区分好个性,
对学习这两节内容会有比较大的帮助 。
图 4 –25 虚拟存储器地址变换实例该页号原不在内存、
后调入内存 1 0 H 页
3 F F C H
1 0 H
1 0 1 2 0 0 H
1 2 0 0 H
1 2 0 0 H
辅存操作地址映像机构虚拟地址页号物理地址页内地址
4.5 PC
4.5.1 PC系列机中主存基本情况
PC机系列不断发展,其主存容量,速度和使用器件等方面经常有所变化,但当前使用的多种 PC机仍有一些共同的特点
① 主存采用动态 RAM,Cache采用静态 RAM。
② 作为通用微型计算机,主存仅有少量的 ROM( 约几十千字节 ),留有一定的用户 ROM空间,而主存中大量的是 RAM器件,供多用户多任务使用 。
③ 机器的理论主存容量与实际装机容量 ( 或允许最大装机容量 ) 有很大的不同 。 486机地址线为 32根,理论容量达 4 GB。
考虑到机器尺寸,电源功耗和成本价格等因素,生产厂家只安排了几十兆字节的空间,而供货商却只配置几兆字节 。
同样 586以上机型的理论容量可达 64 GB或更高,但实际装配机也只有几十兆字节 。
④ 主存采用程序和数据统一的空间,这样有时未被激励的程序可作为数据处理,而被程序计数器错误指向的数据,
可被作为程序执行 。
⑤ 上电复位时,机器自动进入实址方式,只能使用低地址的 1 MB+64 KB内容 。 当机器转向虚拟保护方式时,可使用全部理论存储空间 。
4.5.2
PC系列机具有良好的兼容性,上电复位后,其代码段寄存器 CS和指令指针寄存器 ( E) IP产生等效的程序计数器地址为 XXXXFFFF0H,指向低地址 1MB内存的 BIOS-ROM。 启动后,机器进入快速的 8086方式,即实址方式 。 由于当前 PC机地址总线都大于 20位,允许段寄存器和段内地址寄存器 ( 16位 )
都使用最大值,即 FFFFH,根据 8088/8086物理地址形成的规则则允许 CPU访问的最大实址为:
段寄存器内容 × 16+段内地址寄存器内容
=FFFFH× 16+FFFFH
=FFFF0H+FFFFH=10FFEFH
即实际允许 CPU访问的空间近似为 1MB+64 KB,如图 4 -
26 所示 。
考虑到用户需使用实址工作方式,而内存容量严重不足的矛盾,一些公司,厂家推出了扩展内存的技术,并制定了
EMS规范 。
EMS采用的是一种,体切换,技术,采用软,硬结合的办法,把其他内存空间的内容以页面的形式,调入实地址的高位 64 KB处,供用户使用 。 有的版本,甚至支持将页面映射到 1 MB空间内的任意位置上,其扩展最大空间达 32 MB。
4.5.3内存条,
存储器扩展板一般只包括存储器及附加电路的印刷电路板,插入总线扩展槽,以补充主机板上基本内存容量的不足 。
内存条为后期发展的,在目前流行使用的存储器印刷电路小板条 。 主板上不再安装基本内存,而是根据用户需要在专用的 SIMM72线,144线,168线插座上插入内存条 。
内存条,存储器扩展板的基本结构包括存储芯片组以及附加电路等 。
1.
内存中的 ROM容量较小,常采用小规模的掩膜 ROM、
EPROM,E2PROM( 或快擦写闪速存储器 ) 布置在主板上 。
考虑到价格,功耗等因素,内存中大量的 RAM常使用动态 RAM芯片 。 后者多为位片式结构,需多片字长扩展,有时为扩大容量尚需进行单元扩展 。 众多的芯片常常组装成内存条,扩展板 。
2.
为保证动态 RAM的正常工作,必须附加有关电路,如图 4 - 27 所示。
① 行,列选通信号发生器。负责产生各芯片所需的行、
列选通信号,同步控制多路开关,而且行选通信号常作为芯片的片选信号。
② 行地址计数器 。 它接收确定频率的时钟,产生 7位二进制的行地址,并在当前行刷新后增量指向下一行,在少于
2 ms的时间间隔内,完成 128次的循环 。
图 4 – 27 内存动态刷新电路示意图

2 组
1 组
0 组行、列选通信号发生器多路转换开关行地址计数器刷新控制电路片内地址信号
R A S
2
R A S
1
C A S
2
C A S
1
C A S
0
R A S
0
分时复用地址信号刷新地址刷新请求读写控制信号读写操作控制片选地址内址芯片
AB
CB
时钟双向驱动器
E
DB
B A
D R A M
芯片组
E刷新允许
③ 多路转换开关 。 它接收来自 AB总线上的芯片内部寻址的地址信号 ( 如 4116为 14根 ),以及行地址计数器的 7位刷新行地址信号,并受行,列选通信号及刷新信号的控制 。 在正常读写时,分时输出行,列复用地址信号; 在刷新时,只输出行地址信号 。
④ 刷新控制电路 。 它接收刷新定时时钟和读写控制信号,
当两个信号同时到达,两种操作发生冲突时予以仲裁,一般以刷新操作优先 。
3.
PC机中一般应设有 RAM奇偶校验电路和相应的 RAM奇偶错报警,处理措施 。 PC机存储器按字节编址,对一个字节都附加一个奇偶校验位 P共九位 。 当利用异或门电路实现奇校验时,在将数据存入存储器前进行八位数据的异或运算,取结果的非值写入 P位配奇 。
当数据读出使用时对全部九位数据进行异或运算,若结果为 1,则表明奇偶对;若结果为 0,则奇偶错,随后向 CPU发
NMI不可屏蔽中断申请,作严重故障处理 。
对字符,A‖的奇偶校验过程如下:
①,A‖的 ASCII码为 41H=01000001B
② 配奇 =b7 b6 b5 b4 b3 b2 b1 b0=0 P=1
③ 查奇 S=b7 b6 b5 b4 b3 b2 b1 b0 P=1
P

4,总线接口电路为使内存条,存储器扩展板可靠地,挂,在总路线上,需要接口电路 。 4 - 27 中所示的行,列选通信号发生器,多路转换开关和刷新控制电路等,它们就是内存条,扩展板与地址总线,控制总线的接口电路 。 4 - 27 上方的双向驱动器就是与 DB总线的接口电路 。 它接收 E处的信号控制,在正常读写时,使数据在 A与 B间双向传送,在刷新时与 DB三态高阻隔离,
保证刷新只是一个不向外传送数据的存储器虚读操作 。
以上各附加电路有的包含在内存条芯片中或扩展板中,
有的包含在大规模门阵电路中 。 另外,由于内存条,扩展板连接的总线类型不同,可能有一些其他接口要求,必要时应另行予以满足 。
4.5.4
1,显示存储器 ( VRAM)
显示存储器是用于支持 CRT显示用的存储器,又称 VRAM。
它置于 PC机存储空间中,具有确定的地址范围 。 在实址方式时,其保留空间为 A0000H~BFFFFH共 128 KB。 目前高档 PC
机 VRAM配置可高达 1~2 MB。
VRAM的特点之一是双端口,即有两套地址寻址系统,总线地址,显示接口电路内部地址 。 CPU通过总线可以随机读,
写 VRAM,显示接口电路只能定时读取 VRAM内容,映射到屏幕上 。 VRAM的另一特点则是其工作速度较一般主存速度快,要求在同一个存储器读写周期内,完成 CPU和接口的各自操作 。
VRAM是 Windows环境下图形界面的重要实施途径,是重要的接口部分。
2,CMOS-RAM
自 286机起,PC系列机都设置了 128,256或更多字节的
CMOS-RAM单元,用于记存设备配置参数,如内存容量,显示器类型,软硬磁盘类型及时钟信息等 。 CMOS-RAM采用
CMOS工艺制成,功耗很少 。 在断电后,它由电容电池 ( 或钮扣电池 ) 等供电,维持内容信息 。
开机后,由 CPU读取确定的硬件环境,便于正常工作 。
由于 CMOS-RAM可读可写,在开机后由 SET UP等软件支持,选择或改变系统配置参数 。
如果出现由于某种原因引发 CMOS-RAM内容出错,造成主机无法正常启动的情况,则可在断电后,短接电容电池,
使其放电清除 CMOS-RAM内容 。 然后使用专门软盘启动后再重写 CMOS-RAM内容 。
3,ROM-BIOS
ROM-BIOS用于存放基本的输入输出系统程序,是操作系统驻留在内存中的最基本部分,主要用于:
① 开机后的自检 。 检测对象涉及计算机系统的各主要功能部件,包括 CPU,ROM,RAM,系统接口电路和键盘,软,
硬磁盘等外设 。
② 读取 CMOS-SRAM中的设备配置,确定硬件运行环境 。
③ 系统引导,启动 。
④ 基本的输入输出控制程序 。
⑤ 存储一些重要的数据参数 。
⑥ 部分机器还含有固化的部分操作系统 。
ROM-BIOS一般为几十兆字节的容量,并有逐渐加大的趋势,常为掩膜式 ROM。 目前高档 PC机已采用快速擦写存储器,使 ROM-BIOS 的功能由软盘软件支撑升级 。
ROM-BIOS的启动程序入口地址所在芯片应置于 PC机实址方式的 FFFF0H地址区域内 。