计算机组成原理-主存储器


主存储器的基本组成

基本的半导体元件及原理

存储器基本是由半导体元件组成,半导体可以根据供电的大小来输出高电平或低电平。

一个存储元包括MOS管(半导体,MOS管可以理解为一种电控开关,当输入电压到达某个阈值就可以接通)和电容,根据接入的高低电平由半导体来控制,假设电容中有保存电荷导致MOS管变成1,以至于可以接通,此时外部就可以接受到高电平信号1,若电容中没有保存电荷,那么MOS管无法接通外部就会接受到低电平0。以此就可以构成一个存储元。

而若通过一条总线来连接所有存储元,就可以组成一个存储单元(也称为存储字),当总线接入一个高电平就会让所有存储元的MOS管都导通,从而电容中存储的0或1就会通过绿色的线进行导出。

存储器芯片的基本原理

存储器为了实现读写,需要通过译码器来进行统一的读写操作,会有地址总线来输入要读取那一部分的存储单元,然后通过译码器来进行相应的读取,再通过控制电路来控制译码器是否工作。

将上方图各个功能进行封装则有下图:

就有存储器的基本框架,地址线来接受外界的地址信息,通过数据线来进行数据的传输,片选线来用于读取某一块特定的存储芯片(一般有多块存储芯片),读/写控制线来控制是读还是写(有可能一条或两条)。

地址线数量=$\log_2(寻址范围)$ ,数据线数量=数据位数

例:容量1024$\times$8位的SRAM芯片,除电源和接地线外,该芯片的引脚(要接入的线)的最小数目是多少?

由上图得片选线有一根,读写控制线最少1根,地址线的数量= $\log_2(1024)=10$(DRAM存在复用情况,可以减半,下方有DRAM中介绍)。数据位数为8位,所以数据线8根,结果最少的引脚数= 1 + 1(或 2 ) + 10 + 8 =20(或 21).

存储芯片常见描述

例:8K$\times$8位,指有8K个存储单元,存储字长为8位(有8个存储元)。即$2^{10+3}\times 8bit$。

8K$\times$1位,指有8K个存储单元,存储字长为1位。即$2^{10+3}\times 1bit$

64K$\times$16位,指有64K个存储单元,存储字长为16位。即$2^{10+6}\times 16bit$

SRAM芯片和DRAM芯片

Dynamic Random Access Memory,即动态RAM,通常用于主存

Static Random Access Memory,即静态RAM,通常用于Cache

SRAM的工作原理

通常把存放一个二进制位的物理器件称为存储元,是存储器的最基本的构建。静态随机存储器(SRAM)的存储元是用双稳态触发器(六晶体管MOS)来记忆信息的,因此即使信息被读取后,它仍保持其原状态而不需要再生(非破坏性读出)。

双稳态触发器只要不断供电就不会导致信息流失,触发器的状态就不会改变。

DRAM的工作原理

与SRAM的存储原理不同,动态随机存储器(DRAM)是利用存储元电路中栅极电容上的电荷来存储信息,DRAM的基本存储单元通常只用一个晶体管,所以它比SRAM的密度要高很多。并且集成高、价格低、容量大和功耗低等优点。

DRAM电容上的电荷一般只能维持1~2ms,因此即使电源不断电,信息也会自动消失。为此需要每隔一段时间必须刷新,通常取2ms,称为刷新周期

DRAM刷新

若以行为单位进行刷新,若有n位的地址,则需要$2^n$根选通线,显然在工程上难度较大,由此拆分出了行列地址,将存储元从一维的行,延申成二维的行列,通过行地址译码器和列地址译码器来实现,当行列选中同个单元即读取这个单元的信息。注:DRAM以行进行刷新

从此可将n位地址拆分成n/2位地址从而达到减少选通线的目的。

例: 某一DRAM芯片,采用地址复用技术,其容量为 1024$\times$8 位,除电源和接地端外,该芯片的引脚数最少是多少(读写控制线为2根)。

根据题描述,可得寻址范围为1024$=2^{10}$,所以地址线为10根,采用地址复用技术地址线减半为5根,数据线仍为8根,加上行选通线和列选通线两根及读写控制线两根(片选线用行通选来代替),结果总共为 5 + 8 + 2 + 2 =17根。

将存储单元分为行列后就可以进行行或列刷新,常用的刷新方式有3种。

  1. 集中刷新。

    指在一个刷新周期内,利用一段固定的时间,依次对存储器的所有行进行逐一再生,在此期间停止对存储器的读写操作,称为“死时间”,又称访存“死区”优点是读写操作时不受刷新工作的影响;缺点是在集中刷新(死区)不能访问存储器。

  2. 分散刷新。

    把对每行的刷新分散到各个工作周期中。这样,存储器的系统工作周期分为前半部分用于正常读、写或保持;后半部分用于刷新。如存储芯片的存取周期为5μs,则系统的存取周期为1μs。优点是没有死区;缺点是加长了系统的存取周期,降低了速度

  3. 异步刷新。

    异步刷新既可缩短“死时间”,又能充分利用最大刷新间隔2ms的特点。具体做法是将刷新周期➗行数,得到两次刷新操作之间的时间间隔t,利用逻辑电路每隔时间t产生一次刷新。

    注:DRAM刷新需要注意以下问题

    1. 刷新对CPU是透明的,即刷新不依赖外部的访问;
    2. 动态RAM的刷新单位是行,由芯片内部自行生成行地址;
    3. 刷新操作类类似于读操作。另外,刷新时不需要选片,即整个存储器中的所有芯片同时被刷新。

注:现在的主存通常采用SDRAM芯片

SRAM和DRAM的比较

只读存储器

ROM和RAM都是支持随机访问的存储器,其中SRAM和DRAM均为易失性半导体存储器。而ROM中一旦有了信息,就不能轻易改变,即使掉电也不会丢失,它在计算机系统中是只供读出的。ROM器件有两个显著的有点:

  1. 结构简单,所以位密度比可读写存储器的高。
  2. 具有非易失性,所以可靠性高。

ROM的类型

ROM可分为掩模式只读存储器(MROM)、一次可编程只读存储器(PROM)、可擦除可编码只读存储器(EPROM)、Flash存储器和固态硬盘(SSD)。

  1. 掩模式只读存储器(MROM,Mask Read Only Memory)

    由半导体制造厂按用户提出的要求在芯片的生成过程中直接写入,写入后任何人都无法改变其内容。优点是可靠性高,集成度高,价格便宜;缺点是灵活性差。

  2. 一次性可编程只读存储器(PROM,Programmable Read Only Memory)

    PROM可以实现一次性编程的只读存储器。允许用户写入自己的程序,一旦写入,内容就无法改变

  3. 可擦除可编程只读存储器( EPROM,Erasable Programmable Read-Only Memory)

    EPROM允许用户写入信息,之后用某种方法擦除数据,可进行多次重写,由于改写较为繁琐,速度较慢,不能作为需要频繁读写的RAM使用

    UVEPROM(ultraviolet rays)——用紫外线照射8~20分钟,擦除所有信息

    EEPROM(也记为$E^2PROM$),可用“电擦除”的方式,擦除特点的字

  4. Flash存储器,闪速存储器(注:U盘、SD卡就是闪存)

    Flash存储器在EEPROM的基础上发展而来,断电后也能保存信息,且可进行多次快速擦除重写,由于闪存要先擦除后写入,因此闪存的“写”速度要比“读”速度更慢。每个存储元只需单个MOS管,位密度比RAM高。

  5. SSD(Solid State Drives)——固态硬盘

    由控制单元+存储单元(Flash芯片)构成,与闪速存储器的核心区别在于控制单元不一样,但存储介质都类似,可进行多次快速擦除重写。SSD速度快、功耗低、价格高。目前个人电脑上常用SSD取代传统的机械硬盘。

多模块存储器

多模块存储器是一种空间并行技术,利用多个结构完全相同的存储模块的并行工作来提高存储器的吞吐量。常用的由单体多字存储器和多体低位交叉存储器。

单体多字存储器

单体多字系统的特点使存储体中只有一个存储体,每个存储单元存储m个字,总线宽度也为m个字。一次并行读入m个字,地址必须顺序排列并处于同一存储单元。

单体多字系统在一个存取周期内,从同一地址取出m条指令,然后将指令逐条送至CPU执行,每个1/m存取周期,CPU向主存取一条指令。这显然提高了单体存储器的工作速度。

多体并行存储器

多体并行存储器由多体模块组成。每个模块都有相同的容量和存取速度,各模块都有独立的读写控制电路、地址寄存器和数据寄存器。它们既能并行工作,又能交叉工作。

多体并行存储器分为高位交叉编址和低位交叉编址两种。

  1. 高位交叉编址(顺序方式)

    高位地址表示体号,低位地址为体内地址。如下图所示,存储体共有4个模块$M_0$~$M_3$,每个存储体有8个存储单元,因此总共大小为$4\times 8 = 32=2^5$,可以用5bit来做存储体的地址。

    由于是高位交叉编址,图上的蓝色部分为体号地址,黑色部分为体内地址(体号一致,体内地址不同)。高位交叉方式下,总是把低位的体内地址送到由高位体号确定的模块内进行译码。访问一个连续主存块时,总是先在一个模块内访问,等访问完该模块才能转到下一个模块访问。CPU总是按顺序访问存储模块,各模块不能被并行访问(按列进行访问),因此不能提高存储器的吞吐率。

  2. 低位交叉编址(交叉方式)

    图上的蓝色部分为体号地址,黑色部分为体内地址(体号不同,体内地址一致)。低位交叉方式下,总是把高位的体内地址送到由低位体号确定的模块内进行译码。CPU总是按行进行访问,地址按行进行编号

    若通过低位交叉编址按顺序进行访问存储单元,只需$T+(n-1)r$时间即可。

若通过高位交叉编址,访问连续存储单元地址需要等该存储体恢复后才能进行再次访问,因此则需要4T的时间开销。

低位交叉编址下存储体的取的数量

由于低位交叉方式下是采用“流水线”的方式进行并行存取(宏观上并行,微观上串行)。

宏观上,一个存储周期内,m体交叉存储器可以提供数据量为单个模块的m倍

设存取周期为T,存取时间为r,为了使流水线不间断,应保证模块数$m\geq T/r$,当m=T/r时,效率最佳。

设存取周期为T,总线传输周期为r,为了使流水线不间断,应保证模块数$m\geq T/r$,当m=T/r时,效率最佳。


文章作者: LsWorld
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 LsWorld !
评论
  目录