微机原理与接口技术 第5章 80X86_88存储系统 黄强 深圳大学 信息工程学院
本章内容位于 书本P277—P294
微型机的存储系统、分类及其特点 半导体存储芯片的外部特性及其与系统 的连接 存储器扩展技术 高速缓存 本章主要内容 微型机的存储系统、分类及其特点 半导体存储芯片的外部特性及其与系统 的连接 存储器扩展技术 高速缓存
5.1 概 述 内容: 微型机的存储系统 半导体存储器的基本概念 存储器的分类及其特点 两类半导体存储器的主要区别
微型机的存储系统 将两个或两个以上速度、容量和价格各不相同的存储器用硬件、软件或软硬件相结合的方法组织起来 这样就构成了计算机的存储系统。 将两个或两个以上速度、容量和价格各不相同的存储器用硬件、软件或软硬件相结合的方法组织起来 这样就构成了计算机的存储系统。 系统的存储速度接近最快的存储器,容量接近最大的存储器。
微型机的存储系统 高速缓冲存储器 主存储器 Cache存储系统 解决速度问题 虚拟存储系统 解决容量问题 主存储器 磁盘存储器
存储器的层次结构 微机拥有不同类型的存储部件 由上至下容量越来越大,但速度越来越慢 CPU内核 快 寄存器堆 小 高速缓存 容量 速度 主存储器 联机外存储器 慢 脱机外存储器 大
两大类——内存、外存 内存——存放当前运行的程序和数据。 外存——存放非当前使用的程序和数据。 特点:快,容量小,随机存取,CPU可直接访问。 通常由半导体存储器构成 RAM、ROM 外存——存放非当前使用的程序和数据。 特点:慢,容量大,顺序存取/块存取。需调入内存后CPU才能访问。 通常由磁、光存储器构成,也可以由半导体存储器构成 磁盘、磁带、CD-ROM、DVD-ROM、固态盘
半导体存储器 由能够表示二进制数“0”和“1”的、具有记忆功能的一些半导体器件组成。如触发器、MOS管的栅极电容等。 能存放一位二进制数的器件称为一个存储元。 若干存储元构成一个存储单元。
内存储器的分类 内存储器 随机存取存储器(RAM) 只读存储器(ROM) Random Access Memory Read Only Memory
随机存取存储器(RAM) RAM 静态存储器(SRAM) Static RAM 动态存储器(DRAM) Dynamic RAM
只读存储器(ROM) 只读存储器 掩模ROM 一次性可写ROM EPROM EEPROM
存储器的主要技术指标 存储容量:存储单元个数M×每单元位数N 存取时间:从启动读(写)操作到操作完成的时间 存取周期:两次独立的存储器操作所需间隔的最小时间 平均故障间隔时间MTBF(可靠性) 功耗:动态功耗、静态功耗
5.2 随机存取存储器 要求掌握: SRAM与DRAM的主要特点 几种常用存储器芯片及其与系统的连接 存储器扩展技术
一、静态存储器SRAM 特点: 用双稳态触发器存储信息。 速度快(<5ns),不需刷新,外围电路比较简单,但集成度低(存储容量小,约1Mbit/片),功耗大。 在PC机中,SRAM被广泛地用作高速缓冲存储器Cache。 对容量为M*N的SRAM芯片,其地址线数=㏒2M;数据线数=N。反之,若SRAM芯片的地址线数为K,则可以推断其单元数为2K个。
典型SRAM芯片 CMOS RAM芯片6264(8K*8): 主要引脚功能 工作时序 与系统的连接使用
SRAM 6264芯片
6264芯片的主要引线 地址线: A0~A12 数据线: D0~ D7 输出允许信号:OE 写允许信号: WE 选片信号: CS1、CS2
6264的工作过程
6264芯片与系统的连接 D0~D7 D0~D7 A0 A0 • • • • • • • A12 A12 MEMW WE MEMR OE 译码 电路 高位地址信号 CS1 • • • CS2
译码电路 将输入的一组二进制编码变换为一个特定的控制信号,即: 将输入的一组高位地址信号通过变换,产生一个有效的控制信号,用于选中某一个存储器芯片,从而确定该存储器芯片在内存中的地址范围。
全地址译码 用全部的高位地址信号作为译码信号,使得存储器芯片的每一个单元都占据一个唯一的内存地址。 存储器 芯片 全部地址 译 码 器 低位地址 全部地址 片选信号 译 码 器 高位地址
全地址译码例 6264芯片的地址范围:F0000H~F1FFFH 111100000……00 ~ 111100011……11 & 6264 A12 ~ A0 6264 A12-A0 A19 A18 #OE #WE A17 高位地址线全部参加译码 A16 & #CS1 A15 D7 ~ D0 A14 ≥1 D7-D0 A13
部分地址译码 用部分高位地址信号(而不是全部)作为译码信号,使得被选中得存储器芯片占有几组不同的地址范围。 下例使用高5位地址作为译码信号,从而使被选中芯片的每个单元都占有两个地址,即这两个地址都指向同一个单元。
部分地址译码例 同一物理存储器占用两组地址: F0000H~F1FFFH B0000H~B1FFFH & A18不参与译码 A19 到 6264 CS1 A17 A16 & A15 A14 ≥1 A13
应用举例 将SRAM 6264芯片与系统连接,使其地址范围为:38000H~39FFFH和78000H~79FFFH。 选择使用74LS138译码器构成译码电路 74LS138逻辑图: Y0# G1 Y1# G2A Y2# G2B Y3# Y4# A Y5# B Y6# C Y7# 译码允许信号 片选信号输出 (接到不同的存储体上) 地址信号
74LS138的真值表:(注意:输出低电平有效) 可以看出,当译码允许信号有效时,Yi是输入A、B、C的函数,即 Y=f(A,B,C) G1 G2A G2B C B A Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 1 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 1 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 其 他 值 X X X 1 1 1 1 1 1 1 1
应用举例(续): & & D0~D7 D0~D7 A0 A0 • • • • • 6264 • A12 A12 MEMW WE MEMR 38000H~39FFFH 78000H~79FFFH D0~D7 D0~D7 A0 A0 • • • • • 6264 • A12 A12 MEMW WE MEMR OE & G1 Y0 CS1 G2A A17 & CS2 A16 G2B A15 A19 C B +5V A14 A13 A
二、动态随机存储器DRAM 特点: DRAM是靠MOS电路中的栅极电容来存储信息的,由于电容上的电荷会逐渐泄漏,需要定时充电以维持存储内容不丢失(称为动态刷新),所以动态RAM需要设置刷新电路,相应外围电路就较为复杂。 刷新定时间隔一般为几微秒~几毫秒 DRAM的特点是集成度高(存储容量大,可达1Gbit/片以上),功耗低,但速度慢(10ns左右),需要刷新。 DRAM在微机中应用非常广泛,如微机中的内存条(主存)、显卡上的显示存储器几乎都是用DRAM制造的。
常见DRAM的种类: SDRAM(Synchronous DRAM)——它在1个CPU时钟周期内可完成数据的访问和刷新,即可与CPU的时钟同步工作。SDRAM的工作频率目前最大可达150MHz,存取时间约为5~10ns,最大数据率为150MB/s,是当前微机中流行的标准内存类型。 RDRAM(Rambus DRAM)——是由Rambus公司所开发的高速DRAM。其最大数据率可达1.6GB/s。 DDR DRAM(Double Data Rate DRAM)——是对SDRAM的改进,它在时钟的上升沿和下降沿都可以传送数据,其数据率可达200-800 MB/s。主要应用在主板和高速显示卡上。 RAM的3个特性: 1)可读可写,非破坏性读出,写入时覆盖原内容。 2)随机存取,存取任一单元所需的时间相同。 3)易失性(或挥发性)。当断电后,存储器中的内容立即消失。
典型DRAM芯片2164A 2164A:64K×1 采用行地址和列地址来确定一个单元; 行列地址分时传送, 共用一组地址线; 地址线的数量仅 为同等容量SRAM 芯片的一半。 1 1 0 0 0 列地址 行地址
主要引线 RAS:行地址选通信号,用于锁存行地址; CAS:列地址选通信号。 DIN: 数据输入 DOUT:数据输出 WE=0 数据写入 WE=1 数据读出 WE:写允许信号
工作原理 三种操作: 数据读出 数据写入 刷新
刷新 将存放于每位中的信息读出再照原样写入原单元的过程——刷新 刷新的时序图
三、存储器扩展技术 用多片存储芯片构成一个需要的内存空间,它们在整个内存中占据不同的地址范围,任一时刻仅有一片(或一组)被选中。 位扩展——扩展每个存储单元的位数 字扩展——扩展存储单元的个数 字位扩展——二者的综合
位扩展 存储器的存储容量等于: 单元数×每单元的位数 当构成内存的存储器芯片的字长小于内存单元的字长时,就要进行位扩展,使每个单元的字长满足要求。 字节数 字长
位扩展例 … 用8片2164A芯片构成64KB存储器。 2164A: 64K x 1,需8片构成64K x 8(64KB) DB D0 D1 读写信号 … 2164A 2164A 2164A A0~A7 A0~A7 A0~A7 AB A0~A19 LS138 译码输出 A8~A19
位扩展方法: 将每片的地址线、控制线并联,数据线分别引出。 位扩展特点: 存储器的单元数不变,位数增加。
字扩展 地址空间的扩展。芯片每个单元中的字长满足,但单元数不满足。 扩展原则: 每个芯片的地址线、数据线、控制线并联,仅片选端分别引出,以实现每个芯片占据不同的地址范围。
字扩展例 用两片64K×8位的SRAM芯片构成容量为128KB的存储器
字位扩展 根据内存容量及芯片容量确定所需存储芯片数; 进行位扩展以满足字长要求; 进行字扩展以满足容量要求。 若已有存储芯片的容量为L×K,要构成容量为M ×N的存储器,需要的芯片数为: (M / L) ×(N / K)
字位扩展例 用4K×1位的芯片组成16KB的存储器。 地址线需14根(A0-A13),其中12根(A0-A11)用于片内寻址,2根(A12,A13)用于片选译码。连接图。 注意:以上的例子中所需的地址线数并未从系统整体上考虑。在实际系统中,总线中的地址线数往往要多于所需的地址线数,这时除片内寻址的低位地址线(即片内地址线)外,剩余的高位地址线一般都要用于片选译码。
8088系统中存储器的连接使用方法 存储器与8088系统总线的连接的要点是: 存储器的地址范围? 系统总线上与存储器有关的信号线有哪些? 根据要求的地址范围可确定用哪几根地址线进行片选,哪几根地址线做片内寻址以及如何进行片选译码。 系统总线上与存储器有关的信号线有哪些? 熟悉与存储器有关的总线信号和存储芯片引脚的功能。 译码电路的构成(译码器的连接方法) 系统地址空间一般比存储芯片的容量大(即总线中的地址线数多于存储芯片的地址线数),物理内存实际只占用系统地址空间的一小块区域。把物理内存分配到系统地址空间的哪一块区域,取决于如何进行地址译码。
8088系统中存储器连接涉及到的总线信号包括: 需要考虑的存储芯片引脚 地址线A19-A0 数据线D7-D0 存储器读信号MEMR# 存储器写信号MEMW# 需要考虑的存储芯片引脚 地址线An-1-A0:接地址总线的An-1-A0 数据线D7-D0:接数据总线的D7-D0 片选信号CS#(CE#) (可能有多根):接地址译码器的片选输出 输出允许OE#(有时也称为读出允许) :接MEMR# 写入允许WE#:接MEMW#
*补充:8086的16位存储器接口 数据总线为16位,但存储器按字节进行编址 用两个8位的存储体(BANK)构成16位 如何连接? A19-A0 体选信号 和读写控制 译码器 BANK0 偶数地址 BANK1 奇数地址 控制信号 如何产生? D7-D0 D15-D8 D15-D0
*8086的16位存储器接口 读写数据有以下几种情况: 8086读写16位数据的特点: 读写从偶数地址开始的16位的数据 读写从奇数地址开始的16位的数据 读写从偶数地址开始的8位的数据 读写从奇地址开始的8位的数据 8086读写16位数据的特点: 读16位数据时会读两次,每次8位。 读高字节时BHE=0,A0=1; 读低字节时BHE=1,A0=0 每次只使用数据线的一半:D15-D8 或 D7-D0 写16位数据时一次写入。 BHE和A0同时为0 同时使用全部数据线D15~D0
*8086的16位存储器接口 两种译码方法 独立的存储体译码器 独立的存储体写选通 每个存储体用一个译码器; 缺点:电路复杂,使用器件多。 译码器共用,但为每个存储体产生独立的写控制信号 但无需为每个存储体产生独立的读信号,因为8086每次仅读1字节。对于字,8086会连续读2次。 电路简单,节省器件。
1)独立的存储体译码器 64KB×8片 D15-D9 D7-D0 高位存储体 (奇数地址) A16-A1 A15-A0 注意这些信号线的连接方法 A19 A18 A17 C B A Y0# Y7# CS# OE# WE# Vcc G1 G2A# G2B# BHE# 64KB×8片 MEMR# MEMW# D8-D0 D7-D0 低位存储体 (偶数地址) A15-A0 A19 A18 A17 C B A Y0# Y7# CS# Vcc G1 G2A# G2B# OE# WE# A0 读16位数据时每个体被选中几次? MEMW#信号同时有效,但只有一个存储体被选中
2)独立的存储体写选通 64KB×8片 D15-D9 D7-D0 高位存储体 (奇数地址) A16-A1 A15-A0 ≥1 CS# OE# BHE# OE# WE# MEMW# ≥1 A0 64KB×8片 MEMR# D8-D0 D7-D0 低位存储体 (偶数地址) A15-A0 A19 A18 A17 C B A Y0# Y7# CS# Vcc GND G1 G2A# G2B# OE# WE# 读16位数据时每个体被选中几次? 每个存储体用不同的读控制信号
5.3 只读存储器(ROM) 掩模ROM 一次性可写ROM 可读写ROM 分 类 EPROM(紫外线擦除) EEPROM(电擦除)
一、EPROM 特点: 可多次编程写入; 掉电后内容不丢失; 内容的擦除需用紫外线擦除器。
EPROM 2764 8K×8bit芯片,其引脚与SRAM 6264完全兼容 地址信号:A0 ~ A12 数据信号:D0 ~ D7 输出信号:OE 片选信号:CE 编程脉冲输入:PGM
2764的工作方式 数据读出 编程写入 擦除 标准编程方式 快速编程方式 工作方式 编程写入的特点: 每出现一个编程负脉冲就写入一个字节数据
二、EEPROM( E2PROM ) 特点: 可在线编程写入; 掉电后内容不丢失; 电可擦除。
典型E2PROM芯片98C64A 8K×8bit芯片 13根地址线(A0 ~ A12) 8位数据线(D0 ~ D7) 输出允许信号(OE) 写允许信号(WE) 选片信号(CE) 状态输出端(READY/BUSY)
工作方式 数据读出 编程写入 擦除 字节写入:每一次BUSY正脉冲写 入一个字节 自动页写入:每一次BUSY正脉写 入一页(1~ 32字节) 字节擦除:一次擦除一个字节 片擦除:一次擦除整片
E2PROM的应用 可通过编写程序实现对芯片的读写,但 每写入一个字节都需判断READY/BUSY 端的状态,仅当该端为高电平时才可写 入下一个字节。
四、闪速E2PROM 特点: 通过向内部控制寄存器写入命令的方法来控制芯片的工作方式,而非用引脚的信号来控制芯片的工作。 应用 BIOS,便携式闪存硬盘
工作方式 数据读出 编程写入 擦 除 读单元内容 读内部状态寄存器内容 读芯片的厂家及器件标记 数据写入,写软件保护 擦 除 数据写入,写软件保护 字节擦除,块擦除,片擦除 擦除挂起
5.4 高速缓存(Cache) 了解: Cache的基本概念; 基本工作原理; 命中率; Cache的分级体系结构
1)为什么需要高速缓存? CPU工作速度与内存工作速度不匹配 解决: 例如,800MHz的PIII CPU的一条指令执行时间约为1.25ns,而133MHz的SDRAM存取时间为7.5ns,即83%的时间CPU都处于等待状态,运行效率极低。 解决: CPU插入等待周期——降低了运行速度; 采用高速RAM——成本太高; 在CPU和RAM之间插入高速缓存——成本上升不多、但速度可大幅度提高。
2)工作原理 基于程序执行的两个特征: 程序访问的局部性:过程、循环、子程序。 数据存取的局部性:数据相对集中存储。 存储器的访问相对集中的特点使得我们可以把频繁访问的指令、数据存放在速度非常高(与CPU速度相当)的SRAM——高速缓存CACHE中。需要时就可以快速地取出。
CAM—Content Access Memory Cache的工作原理图示 CAM—Content Access Memory ②检索(用主存地址作为关键字,查找CAM)—前提:每次访问的主存地址都保留在CAM内。 ①送主存地址 AB CPU Cache控制部件 RAM Cache DB ③命中则发出读 Cache命令, 从Cache取数据 ④不命中则发出读RAM命令, 从RAM取数据
只要命中率相当高,就可以大大提高CPU的运行效率,减少等待。现代计算机中CACHE的命中率都在90%以上。 找到(称为命中)——直接取出使用; 没找到——到RAM中取,并同时存放到CACHE中,以备下次使用。 只要命中率相当高,就可以大大提高CPU的运行效率,减少等待。现代计算机中CACHE的命中率都在90%以上。 命中率影响系统的平均存取速度 系统的平均存取速度≈ Cache存取速度×命中率+RAM存取速度×不命中率
例如:RAM的存取时间为8ns,CACHE的存取时间为1ns,CACHE的命中率为90%。则存储器整体访问时间由没有CACHE的8ns减少为: 1ns×90% + 8ns×10% = 1.7ns 速度提高了近4倍。 在一定的范围内,Cache越大,命中率就越高,但相应成本也相应提高 Cache与内存的空间比一般为1128
*Cache系统有三个需要解决的主要问题: 解决:把Cache与主存都分成大小相同的页(若主存容量为2n,Cache容量为2m,页的大小为2p(即页内地址有p位),则主存的页号共有(n-p)位,Cache页号共有(m-p)位)这样,主存—Cache地址变换,就是如何把主存页映射到Cache页上(即只映射页号)。 全相连映射——主存任意页可映射到Cache的任意页。这需要有一个很大的页号映射表(共有2m-p项),放在CAM存储器中。昂贵,但冲突小。 直接映射——主存页号B与Cache页号b满足关系:b=B mod 2m-p 例如:主存0、4、8、12,…页映射到Cache的0页,主存1、5、9、13,…映射到Cache的1页,依此类推。不需要页号映射表,但冲突概率高。 组相连映射——把页分组,然后结合上面两种方法:组间直接映射,组内全映射。
不命中时如何替换Cache内容 有以下几种替换算法: Cache与主存的一致性 两种常用的更新算法: 随机替换 先进先出FIFO 最近最少使用LRU(Least Recently Used) 最久没有使用LFU(Least Frequently Used) Cache与主存的一致性 两种常用的更新算法: 写穿式(WT,Write Through)——同时更新 回写式(WB,Write Back)——仅当替换时才更新主存
*Cache的读写操作 写穿式 回写式 写操作 读操作 贯穿读出式 旁路读出式
写穿式(Write Through) 从CPU发出的写信号送Cache的同时也写入主存。 Cache CPU 主 存
回写式(Write Back) 数据一般只写到Cache,当Cache中的数据被再次更新时,才将原来的数据写入主存相应页,并接受新的数据。 CPU Cache 主 存
贯穿读出式 CPU对主存的所有数据请求都首先送到Cache,在Cache中查找。若命中,则切断CPU对主存的请求,并将数据送出;如果不命中,则将数据请求传给主存。 CPU Cache 主 存
旁路读出式 CPU向Cache和主存同时发出数据请求。如果命中,则Cache将数据送给CPU,并同时中断CPU对主存的请求;若不命中,Cache不做任何动作,由CPU直接访问主存。 Cache CPU 主 存
3)PC机中的CACHE 一般有两级CACHE(有的具有三级) L1 CACHE——容量一般为8KB~64KB L2 CACHE——容量一般为128KB~2MB 新型CPU一般将这两级CACHE都做在CPU内核中。而且运行速度与CPU内核相同,使CPU的整体性能有了极大的提高。 指令Cache和数据Cache 各种CPU的Cache配置见教材p229表5-5。
IBM PC/XT的内存空间分配 00000H RAM区 640KB 9FFFFH 保留区 128KB BFFFFH ROM区 256KB FFFFFH