存储系统

Posted 绀香零八

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了存储系统相关的知识,希望对你有一定的参考价值。

文章目录

存储系统的层次结构

· 存储系统:容量越大越好、速度较快越好、价格(成本)越低越好
· 当前制造工艺的存储器件:工作速度较快的存储器,单位价格却较高;容量较大的存储器,虽然单位价格较低,但存取速度又较慢
各种存储器件需要相互配合形成完整的存储系统

技术指标

存储器主要用容量、速度和成本来评价

  1. 存储容量
    主存存储容量:以字节B(Byte)为基本单位
    半导体存储器芯片:以位b (Bit)为基本单位
    存储容量以2^10=1024规律表达KB,MB,GB和TB
    厂商常以10^3=1000规律表达KB,MB,GB和TB
  2. 存取速度
    存取时间:发出读/写命令到数据传输操作完成所经历的时间
    存取周期:两次存储器访问所允许的最小时间间隔

层次结构

· 寄存器:处理器内部的存储单元
· 高速缓存(Cache):完全用硬件实现主存储器的速度提高
· 主存储器:存放当前运行程序和数据,采用半导体存储器构成
· 辅助存储器:磁记录或光记录方式。磁盘或光盘形式存放可读可写或只读内容,以外设方式连接和访问

解决容量、速度和价格矛盾的方法

局部性原理

· 层次结构解决存储器件的容量、速度和价格矛盾
· 出色效率来源于存储器访问的局部性原理:处理器访问存储器时,所访问的存储单元在一段时间内都趋向于一个较小的连续区域中
· 空间局部:紧邻被访问单元的地方也将被访问
· 时间局部:刚被访问的单元很快将再次被访问
· 程序运行过程中,绝大多数情况都能够直接从快速的存储器中获取指令和读写数据;当需要从慢速的下层存储器获取指令或数据时,每次都将一个程序段或一个较大数据块读入上层存储器,后续操作就可以直接访问快速的上层存储器

主存储器

· 主存储器由半导体存储器构成
· 按制造工艺,半导体存储器可分为:
“双极型”器件:存取速度快、集成度低、功耗大、价格高等特点,主要用于高速存储场合;
“MOS型”器件:集成度高、功耗低、价格便宜,但速度较双极型器件慢,用于通用微机的主存(RAM和ROM)
· 按使用属性,半导体存储器可分为:读写存储器RAM、只读存储器ROM

读写存储器

· 读写存储器:可以读出也可以写入的存储器
· 半导体存储器采用随机存取:可以从任意位置开始读写,存取位置可以随机确定,只要给出存取位置就可以读写内容,存取时间与所处位置无关
· 磁带存储器采用顺序存取:必须按照存储单元的顺序读写,存取时间与所处位置密切相关
· 磁盘和光盘则采用直接存取:磁头以随机方式寻道,以数据块为单位顺序方式读写扇区
· 半导体读写存储器是挥发性(Volatile)RAM,即断电后原保存信息丢失
半导体读写存储器=随机存取存储器地址RAM

  1. 主要类型
    · SRAM(静态RAM:Static RAM)
    以触发器为基本存储单元,不需要额外的刷新电路,速度快,但集成度低,功耗和价格较高
    · DRAM(动态RAM:Dynamic RAM)
    以单个MOS管为基本存储单元,要不断进行刷新(Refresh)操作,集成度高、价格低、功耗小,但速度较SRAM慢
  2. 存储结构
    · 存储器芯片具有大量存储单元
    · 每个存储单元拥有一个地址
    · 存储1/4/8/16/32位数据
    · 存储器芯片结构:
    M个地址信号可以去别2^M个存储单元, 2 ^M个存储单元需要M个地址信号。
    存储单元数×每个存储单元的数据位数=2^M×N=芯片的存储容量
    M=芯片地址线的个数; N=数据线的个数/数据引脚的个数

存储结构2K×8
16K位存储容量
具有2K个存储单元
11个地址引脚(2K=2^11)
8个数据引脚

  1. 读写控制
    · 片选(CS或CE
    片选有效,才可以对芯片进行读/写操作。无效时,数据引脚呈现高阻状态,并可降低功耗
    · 读控制(OE*)
    芯片被选中有效,数据输出到数据引脚。对应存储器读MEMR*
    · 写控制(WE*)
    芯片被选中的前提下,若有效,将数据写入。对应存储器写MEMW*
  2. 静态读写存储器SRAM
    · 主要被用于小型微机系统
    · 多为“存储单元数×8”的存储结构
    · 6264 SRAM芯片
    芯片容量:64K位
    存储结构:8K×8
    28脚双列直插(DIP)
    13个地址线:A12~A0
    8个数据线:D7~D0
    控制引脚:CS1*,CS2,OE*,WE*
    无连接:NC(No Connect)

6264 SRAM的引脚

6264 SRAM的引脚功能表
设计了两个片选引脚:CS1*低电平有效,CS2高电平有效

  1. 动态读写存储器DRAM
    · DRAM芯片用一组地址引脚传送两批地址信号
    · 第一批地址称行地址
    用行地址选通信号RAS下降沿锁存
    · 第二批地址称列地址
    用列地址选通信号CAS
    下降沿锁存
    · 一个信号WE*实现读写控制
    · 数据输入引脚Din
    · 数据输出引脚Dout

DRAM的引脚图

  1. DRAM的刷新
    · DRAM内部
    有“读出再生放大电路”的刷新电路
    设计有仅行地址有效的刷新周期
    每次刷新一行存储单元
    · 存储系统的外部刷新控制电路
    将刷新行地址同时送达所有DRAM芯片
    所有DRAM芯片同时进行一行的刷新
    在一定时间间隔内启动一次刷新
    每次行地址增量

*只读存储器

· 正常的工作状态,ROM只能读出
· 特殊的编程状态,多数ROM芯片也能写入
· 有些ROM芯片需要特殊方法先将原数据擦除,然后才能编程
· ROM芯片的集成度较高,但速度较DRAM还要慢,一般用来保存固定的程序或数据
· ROM芯片数据可长期保存,掉电亦不丢失,属于非易失性存储器件

  1. 主要类型
    · MROM(掩膜ROM)
    掩膜工艺直接制作
    · OTP-ROM(一次性编程ROM)
    允许用户进行一次性编程
    · EPROM(可擦除可编程ROM)
    紫外光擦除、并可重复编程的ROM
    · EEPROM(电擦除可编程ROM)
    擦除和编程(擦写)通过加电进行
    · Flash Memory(闪速存储器)
    新型的电擦除可编程ROM
    快速擦除整片或数据块
  2. EPROM
    · 2764 EPROM
    · 存储容量64K位
    · 存储结构8K×8
    · 13个地址线:A12~A0
    · 8个数据线:O7~O0
    · 控制信号
    片选:CE*
    输出:OE*
    编程控制:PGM*
    编程电源:Vpp

    EPROM工作方式
  3. EEPROM
    · EEPROM 2816
    · 存储结构:2K×8
    · 有11个地址引脚A10~A0
    · 8个数据引脚I/O7~I/O0
    · 3个控制引脚
    片选CE*
    输出允许OE*
    写允许WE*
    · 字节擦写
    · 查询擦写是否完成
  4. Flash Memory
    · AT29C040A
    · 存储结构:512K×8
    · 有19个地址引脚A18~A0
    · 8个数据引脚I/O7~I/O0
    · 3个控制引脚
    片选CS*
    输出允许OE*
    写允许WE*
    · 扇区(256字节)擦写
    · 查询擦写是否完成

存储器地址译码


· 存储器芯片与处理器的连接
存储器芯片有数据、地址、读写控制引脚
处理器总线有数据、地址、读写控制信号
功能上多数可以直接相连
· 但是,地址信号需要译码
处理器地址总线个数多于存储器地址引脚个数
多个存储器芯片组成一定容量的存储系统
需要利用地址总线控制存储器片选信号

  1. 地址译码
    · 译码(Decode)
    将某个特定的编码输入翻译为有效输出的过程
    · 存储器译码电路
    可编程逻辑器件PLD
    译码器
    门电路组合
    · 举例:多输入与非门实现译码
    · 32K×8结构的SRAM:地址引脚15个A14~A0
    · 8088处理器:
    20个地址总线A19~A0 ;8位数据总线

简单的门电路译码

存储器地址分析

  1. 译码器
    · 3∶8译码器:138译码器
    · 3个控制输入引脚:E3,E2* 和E1* 都有效,才能实现译码功能
    · 3个编码输入引脚:C,B和A
    8种编码各对应一个译码输出引脚
    CBA=000编码使Y0低有效,其他高电平无效
    CBA=001编码使Y1
    低有效,其他高电平无效
    ……
    CBA=111编码使Y7*低有效,其它高电平无效

译码器74LS138

译码器译码
Y0* 译码输出有效,必须:
E3E2* E1*=100
A19A18A17=111
CBA=000
A16A15A14=000。
结论:A19~A14=111000
地址范围:E0000H~E3FFFH
存储容量:16KB
存储容量=结束地址-起始地址+1

译码器译码示意图

不使用A13的译码
存储容量:8KB
A13=0时,地址范围: E0000H~E1FFFH
A13=1时,地址范围: E2000H~E3FFFH
结论:该8KB存储器芯片占用了
E0000H~E1FFFH 地址范围(A13=0)
E2000H~E3FFFH 地址范围(A13=1)
实际应用中,常选择第一个地址
不使用A0的译码
存储容量:8KB
A0=0时,占用E0000H~E3FFFH范围的偶地址
A0=1时,占用E0000H~E3FFFH范围的奇地址
结论:该8KB存储器芯片占用了
E0000H~E3FFFH 偶地址(A0=0)
E0000H~E3FFFH 奇地址(A0=1)
实际应用中,常选择偶地址

译码方式
· 全译码方式 : 地址唯一 空间连续
使用全部微处理器地址总线
片内寻址:低位地址与存储器芯片地址引脚相连
片选寻址:高位地址经译码与存储器芯片片选引脚相连
· 部分译码方式:地址重复,译码简单
只使用部分微处理器地址总线进行译码
没有使用的地址信号对存储器芯片的工作不产生影响

  1. 8086的16位存储结构
    · 对称的两个存储体(Bank)所构成
    · 偶存储体(A0=0)
    对应所有的偶地址单元(0、2、4、……FFFEH)接处理器低8位数据总线D7~D0
    · 奇存储体(BHE*=0)
    对应所有的奇地址单元(1、3、5、……FFFFH)接处理器高8位数据总线D15~D8
    · 两个存储器芯片的片选端连接在一起

8086的16位存储结构

地址对齐(Align)
· 高位地址A19~A17=111,片选信号有效
· 低位地址A16~A1=0…0,那么:
A0=0(地址E0000H),BHE=0,访问16位数据
A0=0(地址E0000H),BHE
=1,访问低8位数据
A0=1(地址E0001H),BHE=0,访问高8位数据
A0=1,BHE
=1,无效的数据访问组合
· 8086存储器按16位数据宽度组织
支持8位和16位数据访问
偶地址开始的16位访问可以一次完成
奇地址开始的16位访问需要两次操作
· 地址对齐:16位数据以偶地址开始

主存空间分配

高速缓冲存储器

主存是一个影响性能的关键因素
因为处理器的运行速度提高,但由DRAM组成的主存的存取时间较慢,跟不上处理器运行速度
SRAM速度较快,但其容量较小、价格较贵,无法大量用于微机系统
解决方案:高速缓存 高速缓冲存储器Cache(Memory),完全用硬件实现主存速度的提高

工作原理

· 高速缓存:在相对容量较大而速度较慢的主存DRAM与高速处理器之间设置的少量但快速SRAM组成的存储器
· 高速命中(Hit):
处理器读取主存的内容已包含在Cache中,可以直接读取Cache,不用访问主存
· 高速缺失(Miss):
处理器读取主存的内容不在Cache中,需要访问主存读取一个数据块

高速缓存的读操作

  1. 高速缓存的结构
    · 主存以字(字节)为寻址单位
    · Cache以行(线Line,槽Slot)为寻址单位
    · Cache行包含B个主存字,对应一个主存块
    · Cache与主存间的数据传送以数据块为单位
    · 主存划分成M=2n÷B个“主存块”
    · Cache具有m个“Cache行”
    · Cache由数据存储器和标签存储器组成
    数据存储器:高速缓存主存数据
    标签存储器:保存数据所在主存的地址信息
  2. 高速缓存的容量和行大小
    · 高速缓存性能的主要指标是命中率(Hit rate)
    · 命中率(Hit Rate):高速命中的概率
    · 对于高速缓存容量
    希望它足够大,使存取时间接近高速缓存
    希望它尽量小,使单位成本接近主存
    受可用的芯片面积限制
    同时还和运行的程序有关
    · 对于Cache行大小
    从很小增大,命中率开始会有提高
    进一步增大,命中率可能反而减小
  3. 高速缓存的数量
    · 单级与多级Cache
    片上高速缓存(On-chip Cache)
    第1级高速缓存(L1 Cache)
    第2级高速缓存(L2 Cache)
    第3级高速缓存(L3 Cache)
    · 统一与分离Cache
    统一(Unified)Cache
    单个高速缓存既用于高速缓冲保存指令
    也用于保存数据
    分离(Split)Cache
    一个专用于缓冲指令(I-Cache)
    一个专用于缓冲数据(D-Cache)

以上是关于存储系统的主要内容,如果未能解决你的问题,请参考以下文章

存储系统

计算机的存储器

计算机的存储器

计算机的存储器

主存储器与CPU的连接

计算机组成原理 取指令与指令译码实验