目录
1.基本半导体元件及原理
2.寻址
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,3个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