计算机组成原理——存储系统

计算机组成原理——存储系统

存储器层次结构

存储器层次结构如下:

  • 寄存器(CPU)
  • Cache(高速缓冲存储器)
  • 主存
  • 磁盘
  • 磁带、光盘等

按照上述层次结构,自下而上速度依次增快、容量相对依次渐小、造价越来越高昂。

有的书上把计算机内部的磁盘统称为“辅存”,把U盘、光盘等成为外存。但是也有部分书籍将磁盘、U盘、光盘等统称为“辅村”或者“外存”。本文按照后者进行描述。

我们平常安装的应用程序一般是放在辅存中的,辅存容量大,但是读写较慢。如果CPU直接访问辅存的话,那么CPU就会被辅存的速度拖累,因此CPU想要运行应用程序,需要将辅存中的程序与数据放到内存中去才行。

主存中的数据被放到缓存中,CPU可以直接往缓存里写数据和读数据。虽然主存的速度已经很快了,但是相对于CPU来讲仍跟不上CPU的速度,为了解决主存与CPU之间速度的矛盾就在二者之间增加了缓存。

主存与辅存之间实现了虚拟存储系统以解决主存容量不够的方式。(参考OS)

存储器分类

按照存储介质分类:

  • 半导体存储器:以半导体器件存储信息(主存、Cache等)
  • 磁表面存储器:以磁性材料存储信息(磁盘、磁带等)
  • 光存储器:以光介质存储信息(光盘等)

按存取方式分类:

  • 随机存取存储器(Random Access Memory,RAM):读写任何一个存储单元所需的时间都几乎相同,与存储单元所在的物理位置无关。
  • 顺序存取存储器(Sequential Access Memory, SAM):读写一个存储单元所需时间取决于存储单元所在的物理位置。
  • 直接存取存储器(Direct Access Memory,DAM):既有随机存取的特性,也有顺序存取的特性。先直接选取信息所在区域,然后按顺序方式存取。

其中SAM和DAM统称为串行访问存储器,即读写某个存储单元所需的时间与存储单元的物理位置有关。

还有一种叫做相联存储器(Associative Memory),即可以按照内容访问的存储器(Content Addressed Memory, CAM)。如硬件实现的快表(TLB)就是一种CAM。

按照信息可更改性分类:

  • 读写存储器(Read/Write Memory):可读也可写,如内存、磁盘等。
  • 只读存储器(Read Only Memory):只能读不能写,如实体音乐专辑使用的CD-ROM。BIOS通常写在ROM中。

按照信息等可保存性:

  • 易失性存储器:断电后存储信息消失的存储器。(内存、Cache等)
  • 非易失性存储器:断电后存储信息依然保持的存储器。(磁盘、光盘)

信息读出有两种:

  • 破坏性读出:信息读出后,原来的存储信息被破坏(如DRAM芯片,读出数据后要重写)
  • 非破坏性读出:信息读出后,原来等存储信息不被破坏(如SRAM芯片、磁盘、光盘等)

存储器性能指标

存储容量:存储字数*存储字长

单位成本:每位价格=总成本/总容量

存储速度:传输速率=数据的宽度/存储周期

数据的宽度即存储字长。

存储周期又称为读写周期读写周期或访问周期,它是存储器进行一次完整的读写操作所需的全部时间,即连续两次独立地访问存储器操作(读或写)之间所需的最小时间间隔,可以划分为存取时间恢复时间

存取时间是指从启动一次存储器操作到完成该操作所经历的时间,分为读出时间和写入时间。

主存带宽又称数据传输率,表示每秒从主存进出信息的最大数量,单位为字/秒、字节/秒、位/秒等。

主存储器的基本组成与原理

主存基本的半导体元件与原理

在前面我们提到过主存储器分为存储体、MAR、MDR,三者在时序控制逻辑电路的协调下配合工作。

存储体中包含若干个存储单元,每个存储单元的每一位实际上是由存储元这个电子元件来保存的。存储元包含一个电容和一个MOS管,每个存储元可以存放一个二进制位的0或1。

MOS管可以理解为是一种电控开关,输入电压达到某个阀值的时候,MOS管就可以接通。

存储器的读写的基本大小之所以是以存储字长为单位的,是因为MOS管的一端接在了同一条线上。

主存存储芯片的基本原理

MAR连接地址总线和译码器,给定n位地址对应 2 n 2^{n} 2n个存储单元,译码器输出端就有 2 n 2^{n} 2n个字选线。

若CPU给定的地址n位全为0到MAR中,译码器会将地址对应的第0根字选线一个高电平输出,由于该行存储元的MOS管同一级都连接到该线上,因此本行存储元都会被选通,与MOS相连的另一端,也就是每一列的数据线(位线)就可以输出该存储字的每一位二进制数据,每一列的位线与MDR相连接,MDR输出端与数据总线相连接,这样CPU就能够通过数据总线拿到MDR里寄存的数据了。

由此可见,数据总线的宽度与存储字长是相等的。

此外我们还需要一个控制电路来控制译码器、MAR、MDR。由于我们采用电信号传输方式,因此CPU给出的地址到MAR未稳定之前,其地址信息是不能够到译码器中的。当数据输出的时候,只有当数据到MDR稳定之后,才能从数据总线送出数据。这一系列的操作都是要通过控制电路来完成。

控制电路输入端分别是片选线、读控制线、写控制线。

片选线通常是低电平有效,此时说明该芯片可以工作。如果我们只想要存储器上某块芯片可以工作而其他芯片不工作,我们只需要给这个芯片的片选线加一个低电平,而其他芯片的片选线都是高电平就行了。

有的控制电路用读写线分为两根(如上图),当读控制线为低电平的时候允许读,当写控制线为低电平的时候允许写;当然有些电路采用一根读/写线,低电平表示写,高电平表示读。(读写线的个数会影响暴露的引脚数)

还有些存储器会在译码器后面添加一个驱动器,这个驱动器用于保证译码器输出的电信号是稳定可靠的。

我们经常会看到对于某个存储芯片的描述是8K*8位的,8K是指存储单元的个数,也就是有 2 13 2^{13} 213个存储单元,8位是指存储字长。

若存储器总容量为1KB,地址线总共有10根,则按照以下编址方式:

  • 按字节寻址:总共 2 10 2^{10} 210个单元,每个单元1Byte
  • 按字寻址:总共256个单元,每个单元4Byte
  • 按半字寻址:512个单元,每个单元2Byte
  • 按双字寻址:128个单元,每个单元8Byte

如果按字寻址,我们只需要把4个字节合并,只需要把字地址算术左移两位换成与之对应的字节地址。

DRAM和SRAM

动态RAM(Dynamic Random Access Memory,DRAM),用于主存。(当然,DRAM已经过时了,现在的主存通常使用SDRAM。)

静态RAM(Static Random Access Memory,SRAM),用于Cache。

DRAM使用栅极电容存储信息,SRAN使用双稳态触发器存储信息。

DRAM的栅极电容如果给字选择线相连的MOS管引脚添加一个5V的电压,MOS管就会被导通,如果此时MOS管另一端也就是连接数据线的那一侧同样有一个5V的电压,这样栅极电容一侧就会带5V的电压,另一侧由于接地带0V电压,这样就完成了一个二进制1的存储。如果数据线输入0V低电平信号,则MOS管被导通后,栅极电容金属板两侧的电压都是0V,电容内未储存电荷,这样就存储了一个二进制0。

若要读出栅极电容中的数据,只需要给字选择线加一个高电平,MOS管导通,若栅极电容存储电荷,数据线上就会产生电流,此时表示读出1;若栅极电容未存储电荷,则数据线上就无电流表示读出0。

SRAM的存储元是双稳态触发器。双稳态触发器中包含6个MOS管,分别用M1到M6标注。双稳态触发器可以存储两种稳定状态,第一种状态为1,A点高电平,B点低电平;如果A点低电平,B点高电平则存储0。

对于双稳态触发器,如果存储的是一个1,若给字选择线加一个5V的高电平,BLX这条线会输出一个低电平信号,读出1;如果存放的是0,左侧的BL线会输出一个低电平信号读出0。

我们来比较下两种元件。对于DRAM的栅极电容来说,电容放电信息被破坏,是破坏性读出。读出后应有重写操作,也称再生;对于SRAM的双稳态触发器,读出数据,触发器状态保持稳定,是非破坏性读出,无需重写。

DRAM存储元每个存储元件制造成本低,集成度高;而SRAM每个存储元成本更高,集成度低。

由于栅极电容内的电荷长期存放会流失,存放的信息也就有可能存在误差,因此只能维持2ms,2ms后即使不断电也会消失,2ms之后需要进行刷新。而对于双稳态触发器,如果一直给VDD维持一个5V的电压,只要不断电双稳态触发器的数据就不会丢失。

DRAM的刷新

DRAM刷新周期一般为2ms,以行为单位,每次刷新一行存储元。

如果DRAM不采用行列地址的方式,每一根选通线分别与一个存储单元相连,译码器输出端就会随着地址位数增加而以2的幂指数的方式递增。这种情况下,如果有n位地址,则译码器就要连接 2 n 2^{n} 2n个选通线,这显然是不能接受的。

因此,DRAM采用行列编址方式,每次刷新以行为单位,刷新一行的存储单元。

DRAM的刷新方式有硬件支持,存储器独立完成,不需要CPU控制,读出一行信息后重新写入,占用一个读写周期。

假设DRAM内部结构排列为128*128,存取周期(读/写周期)0.5微秒:

  • 思路一:每次读写完后都刷新一行,系统的存取周期变1微秒,前0.5微秒用于读,后0.5微秒用于写。2ms内可以刷新2000次,足以刷新128行。这种刷新方式叫做分散刷新
  • 思路二:2ms内集中安排某段时间进行刷新,这种方式叫做集中刷新。由于有一段时间是刷新专用的,这段时间无法访问存储器,称为访存死区。此时系统存取周期与存储器一致为0.5微秒,其中2ms尾部有128周期(64微秒)用于刷新,其他时间(3872个周期,1936微秒)用于读写。
  • 思路三:2ms被128行分成128段时间,每个时间间隔2ms/128=15.6微秒,由于存取周期0.5微秒,也就是说每个15.6微秒内有0.5微秒的死时间用于刷新不能访存,这种刷新方式叫做异步刷新。这些死时间往往是在CPU不需要访存(译码)阶段。

DRAM地址线复用技术

对于DRAM,正常情况下有n位地址,就需要n位地址线。为了节省成本,我们可以使用地址线复用技术,将地址拆分成行地址列地址。这样在使用的时候,我们只需要将行地址和列地址分两次进行传输。

第一次发送行地址,行地址会被送往行地址缓冲器里;第二次发送列地址,列地址会被送往列地址缓冲器中。然后会分别送往行地址译码器和列地址译码器。此时最少只需要 n 2 \frac{n}{2} 2n条地址线即可(芯片引脚数量也相对减少了)。

DRAM地址线复用技术

<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值