计算机组成原理(1)----存储器相关(1)

简介: 计算机组成原理(1)----存储器相关

一.主存储器

1.基本半导体元件及原理

一个主存储器可以分为存储器,MAR(地址寄存器)和MDR(数据寄存器),这三个部件由在时序控制逻辑的控制下工作

其中存储体用来存放二进制数据0和1,1个存储体由多个存储单元构成,一个存储单元由多个存储元构成,存储元如下图所示:

其中包含两个半导体元件:1.MOS管,MOS管可理解为一种电控开关,输入电压达到某个阈值时,MOS管就可以接通


2.电容,一个电容由两个金属板和中间的绝缘体构成,可以以电容是否保存电荷来记录2进制的0和1,当保存电荷时,记录的是2进制的1,接着再接通MOS管,在一端检测到电流,就意味着输出了2进制1

若想让电容保存2进制1,那么就需在一端输入高电平,再接通MOS管,电容的上下两个金属板存在电压差,就会存储电荷了。

所以电容充电过程就是写数据的过程,电容放电过程就是读数据的过程

若将多个存储元合理相连,就可以一次性读出和写入多个2进制数据,多个存储元组成一个存储单元,在这里,一行表示一个存储单元(也就是一个存储字),多个行就是一个存储体(也就是存储矩阵),如图所示,一个存储字的字长为8bit

这里区分存储字和字节:

一个存储字的字长看一行有几个存储元,例如上面存储字长为8bit

一个字节8bit,即1Byte=8bit

如何通过一个地址决定读写哪一个字,这就涉及译码器的使用:

n位地址会对应2^n个存储单元,译码器会根据地址寄存器中给的地址,转变为某一条选通线的高电平信号。

例如CPU给MAR(地址寄存器)传输的是000,个0的十进制即0(每个地址会对应译码器的一条输出线,总共有2^3=8个地址,所以译码器的输出端有8条线),所以译码器会将第0根字选线高电平输出,那么第0根线对应的存储元都会被接通,其中的2进制数据就能被读出了。


具体地,红色的字选线被接通后,会通过绿色的数据线(位线),把每一位的2进制信息传输到MDR(数据寄存器)中,接着CPU会通过数据总线从MDR中取走整个存储字的数据(数据总线的宽度和存储字长是相同的)

这个存储体的总容量=存储单元个数*存储字长=2^3*1Byte=8B

还需添加一个控制电路,控制MAR和MDR和译码器,例如,CPU通过地址总线,将地址送到MAR中,但是,由于我们是通过电信号传送2进制数据,而电信号可能会有不稳定的情况,所以在电信号稳定之前,这一电信号是不能传送给译码器的,所以只有电信号稳定,控制电路才能打开译码器的开关,让译码器接收这一地址,给出相应的数据信号,同理,输出时,只有输出的电信号稳定,控制电路才会使MDR通过数据总线输出数据信号给CPU

控制电路还需要连接片选线 (chip select,芯片选择信号) (chip enable,芯片使能信号),这些信号低电平有效,当我们给片选线加低电平时,表示这块芯片可以工作

一个内存条可能包含多块存储芯片,如果只想读取某块存储芯片指定地址的数据,那么只需要将这块芯片的片选信号使能(给低电平)即可。其他芯片(给高电平)

这些存储芯片会对外保留金属引脚,这些金属引脚用来接收地址线,数据线,读/写控制线,片选线传来的数据

n位地址--->2^n个存储单元

总容量=存储单元个数x存储字长=2^3 x 8bit =2^3 x 1Byte = 8B

8(存储单元个数)x8(存储字长)位的存储芯片

同时,控制电路还会连接读/写控制线,可以为一个读/写控制线(一根读/写线 低电平写高电平读),或两个线,一个读控制线( 允许读),一个写控制线( 允许写)

我们忽略内部的结构,就可得到下图:

存储矩阵就是存储体

译码驱动就是译码器+驱动器(为了使译码器输出的高电平信号稳定,通常会在译码器后添加驱动器,保证译码器输出的信号稳定)

读写电路包括上图的绿色线,红色线,以及控制电路

2.寻址

如下图所示,该存储体的字长为4B,总容量为1KB,即256个字,也就是总共256行

按字节寻址:总共1K个单元(地址线:10根),每个单元 1 B

若按字寻址:256个单元(地址线:8根),每个单元 4 B


地址线为8根,只需要将地址算数左移两位,即在末尾添加两个0


例如要访问1号字,那就在1后面添加两个00,100:4,得到这个字起始字节的字节地址为4


再例如,访问2号字,在10后面添加两个00,1000:8,得到这个字起始字节的字节地址为8

按半字寻址:512个单元,每个单元 2 B

按双字寻址:128个单元,每个单元 8 B

二.RAM芯片

RAM芯片分为DRAM(Dynamic Random Access Memory)和SRAM(Static Random Access Memory),DRAM使用栅极电容存储信息和SRAM使用双稳态触发器存储信息,他们的本质区别是存储元不同


如图所示,(一)所讲的存储芯片即DRAM芯片,用于主存

1.栅极电容与双稳态触发器的区别

栅极电容:1表示电容存储了电荷,0表示电容未存储电荷

当读出1:MOS管接通,电容放电,数据线上产生电流

当读出0:MOS管接通后,数据线上无电流

注:DRAM存储器的存储元数据线只有1根

双稳态触发器:


当图中A为高电平,B为低电平时,这种状态对应2进制1


A为低电平,B为高电平,这种状态对应2进制0


读数据:


若存储元存储的是2进制的1,当字选择线接通后,右边的BLX线会输出低电平信号,左边的BL不会输出任何信号。


若存储元存储的是2进制的0,当字选择线接通后,左边的BL线会输出低电平信号,右边的BLX不会输出任何信号。


写数据:


若要写入0,给BL加低电平,给BLX加高电平,使触发器变为A低B高的状态


同理,要写入1,给BLX低电平,给BL加高电平,使触发器变为A高B低的状态

注:SRAM存储器的存储元,数据线有2根

总结:


对于栅极电容,电容放电,其表示的信息由1变为0,信息被破坏,是破坏性读出。读出后应有重写操作,也称“再生”。


对于双稳态触发器,读出数据,触发器状态保持稳定,是非破坏性读出,无需重写


所以栅极电容读写速度更慢,双稳态触发器读写速度更块。



对于栅极电容,有一个栅极电容和一个MOS管组成,每个存储元制造成本更低,集成度高(这种存储元体积较小,可以更密集地集成在芯片上),功耗低(结构简单)。


对于双稳态触发器,有6个MOS管组成,每个存储元制造成本更高,集成度低,功耗大(结构较复杂)。



DRAM读写速度慢,造价低,常用作主存,SRAM读写速度块,常用作Cache(又快又稳)



DRAM属于破坏性读出,SRAM属于非破坏性读出,但是两者都是易失性存储器



栅极电容通过电容存储电荷记录信息,但是电荷会慢慢流失,电容内的电荷只能维持2ms。即便不断电,2ms后信息也会消失。2ms之内必须"刷新"一次(给电容充电)


对于双稳态触发器,只要不断电,触发器的状态就不会改变


所以,栅极电容需要刷新,双稳态触发器不需要刷新

2.DRAM刷新需要注意

1.多久需要刷新一次?

刷新周期:一般为2ms

2.每次刷新多少存储单元?

以行为单位,每次刷新一行存储单元

       ------为什么要用行列地址?

若如之前所讲,n位地址对应2^n个选通线,若20位地址,则需要2^20=1M根选通线,工程量较大

所以可以拆分为行、列地址,分别传送到行地址译码器和列地址译码器,这样每个译码器只需要处理n/2位地址信息,对于20位地址,只需要2^10(1024)根选通线

总共需要2^10+2^10根选通线

那么如何通过地址选中存储单元:

前半部分作为行地址传送到行地址译码器,后半部分作为列地址传送到地址译码器

若地址为0000 0000 ,行地址译码器的第0根选通线选通,列地址译码器的第0根选通线选通,一个存储单元只有行和列的选通信号都被选通时,才能对其进行读写。

所以用行、列地址可以减少选通线的数量。


3.如何刷新?


有硬件支持,读出一行的信息后重新写入,占用1个读/写周期


2.在什么时刻刷新?(注:电容内的电荷只能维持2ms)


假设DRAM内部结构排列成128*128的形式,读/写周期(存取周期)0.5us,而刷新周期为2ms,所以有2ms/0.5us=4000个读/写周期


①若每次读写都刷新一行,刷新一行的时间约0.5us,所以系统的存取周期变为1us,前0.5us时间用于正常读写,后0.5us时间用于刷新某行,这种刷新称为分散刷新,2ms/1us=2000次刷新操作,这个方法,足够在2ms内,给128行的存储单元做很多次的刷新操作

2ms内集中安排时间全部刷新,系统的存取周期还是0.5us,有一段时间专门用于刷新,无法访问存储器,称为访存"死区",这种刷新策略称为集中刷新

如图所示,128个周期,专门用来刷新128行的存储单元

③2ms内每行刷新1次即可,2ms内需要产生128次刷新请求,每隔2ms/128=15.6us一次,每15.6us内有0.5us的“死时间”,在刷新的这段时间,CPU也无法访问存储器,这种刷新策略称为

异步刷新

在实际应用中,我们可以应用CPU不需要访问存储器的时间,对存储器进行刷新,例如,CPU可在取得指令,对指令进行译码阶段刷新

注:

1.若题目为提及,刷新周期默认为2ms

2."刷新"由存储器独立完成,不需要CPU控制

3.SRAM和DRAM送行、列地址的方式

1.

对于DRAM,址的前半部分和后半部分,会同时送到行地址译码器和列地址译码器。若采用这一策略,有几位地址,就需要几根地址线,由于DRAM集成度高,存储容量较大,那么电路就会较复杂。通常DRAM会采用地址线复用技术,这样只需要采用n/2条地址线


第一次,通过n/2条地址线,将前半部分地址送到行地址缓冲器,第二次,通过n/2条地址线,将后半部分地址送到列地址缓冲器,在控制电路的控制下,再将行地址和列地址分别送到行地址译码器和列地址译码器

行、列地址分两次送,可使地址线更少,芯片引脚更少

2.2.

对于SRAM,由于SRAM,集成度低,存储容量更小,SRAM对应的行、列地址位数也较少,所以同时送行、列地址即可。

注:若题目问,DRAM采用的引脚数为多少,需要考虑地址复用技术,即地质线和地址引脚减半

其实DRAM用于主存这种方法已经过时,现在的主存通常采用SDRAM芯片

计算机组成原理(1)----存储器相关(2):https://developer.aliyun.com/article/1511439

目录
相关文章
|
15天前
|
存储
计算机组成原理(8)----专用数据通路
计算机组成原理(8)----专用数据通路
30 1
|
15天前
|
存储
计算机组成原理(5)----CPU的基本结构
计算机组成原理(5)----CPU的基本结构
41 0
|
15天前
|
存储
计算机组成原理(7)----CPU内部单总线数据通路
计算机组成原理(7)----CPU内部单总线数据通路
32 0
|
15天前
|
存储 固态存储 芯片
计算机组成原理(1)----存储器相关(2)
计算机组成原理(1)----存储器相关
35 1
|
15天前
|
存储 人工智能 C语言
计算机组成原理(5)----指令系统(1)
计算机组成原理(5)----指令系统
15 1
|
15天前
|
存储 Unix 程序员
计算机组成原理(5)----指令系统(2)
计算机组成原理(5)----指令系统
45 1
|
15天前
|
存储 移动开发 固态存储
计算机组成原理(3)-----外存储器
计算机组成原理(3)-----外存储器
70 1
|
17天前
|
存储
【计算机组成原理】指令系统
【计算机组成原理】指令系统
109 0
【计算机组成原理】指令系统
|
17天前
|
存储 芯片
【计算机组成原理】总线
【计算机组成原理】总线
90 0
【计算机组成原理】总线
|
12月前
|
存储 缓存
计算机组成原理(3)存储器
3.1.概述 3.1.1.定义 存储器,用于存储数据和程序。存储器中,以二进制的方式存储数据和程序,存储器由N个存储单元构成,存储单元由N个存储电路组成,这N个存储电路用来保存一个N位二进制数。每个存储单元的编号称为==地址==,存储器中能存放的数据的总位数(byte)称为存储容量,常用单位,KB、MB、GB…..
400 0