一、概述
存储器的分类:
按材质
半导体存储器 数据易失(TTL、MOS)
磁表面存储器 非易失(利用磁表面磁化不同方向来存储0/1,如磁盘)
磁芯(core)存储器 非易失(通过导线留过电流对磁芯磁化,根据磁化后N,S级的方向来保存0/1)
光盘存储器 非易失
按存取时间
(1)存储时间与物理地址无关
随机存储器 程序执行时可读可写
只读存储器 程序执行时只可读
(1)存储时间与物理地址有关
顺序存取存储器 磁带
直接存取存储器 磁盘
按在计算机中的作用
主存储器:
RAM(分为静态和动态RAM,可读可写) ROM(只读)
FLASH MEMORY
高速缓冲存储器(Cache)
辅助存储器 如磁盘,光盘等
存储器的层次结构
图中各数字是各部分传输一次数据所用的时间。平时安装的程序,大部分文件都放在辅存中,当运行程序时,运行所必需的文件在主存中。二主存的200ns和CPU的10ns传输速度有巨大差距,所以采用缓存,存放程序运行所需文件的副本,协调CPU和主存间的速度差。
所以缓存和主存层次的目的是提高速度,而主存-辅存层次目的是增加存储容量。
主存-辅存构成的是虚拟存储器,采用虚地址,也就是逻辑地址。主存是实地址也就是物理地址。
二、主存储器
主存和CPU的关系:
如图,数据总线可能读出,也可能写入数据,所以是双向的。
CPU发给所要查找的地址,所以地址总线是单向的。
注:MAR,MDR确实是主存的一部分但是实际中这两个寄存器集成在CPU中,如上图。
主存中存储单元的地址分配
主存中存储单元存储方式有两种,一种是高位字节地址为字地址,称为大端,大尾方式。是先从高位开始存储,之后存低位。以12345678H为例,先存高位,即1234H,其中12H是高位,就先存12H。上左图中,12H的地址为0,那么34H地址为1,56H为2,78H为0.
第二种是低位字节地址为字地址称为小端,小尾方式。先从低位开始存储,如上右图。
如果地址线24根,那么按字节寻址的话,寻址范围就是2^24.一个字节长度1B. 2的20次方是1M。所以换算后就是16MB.
如果字长为16位(即16位系统),就是1个字=2字节,即1W(word)=2B。按字寻址的话,寻址范围8MW.
如果32位字长,1W=4B,寻址范围变为4MW。
注:
一个字等于多少字节,即字长是多少位,与系统硬件(如cpu,总线)有关,直接说一个字多少字节是没有意义的。
例:
①:1字节(byte) = 8位(bit)
②:在16位的系统中 1字 (word)= 2字节(byte)= 16(bit) 8086微机就是16位系统,所以我们在微机原理中学的一个字等于2个字节,16位。
在32位的系统中(比如win32) 1字(word)= 4字节(byte)=32(bit),字长32位
64位的系统中(比如win64)1字(word)= 8字节(byte)=64(bit),字长64位
主存的技术指标:
1 存储容量
2 存储速度 分为存取时间(存储器的访问时间),存取周期(连续两次独立的存储器操作所需最小间隔时间)
3 存储器的带宽 位/秒
半导体存储器芯片简介
半导体存储芯片基本结构
如上图,工作时CPU通过地址线给出地址信号,地址信号经过译码驱动电路,在存储矩阵中找到对应地址的单元,通过读写电路经过数据线进行读写。
也因此地址线是单向,数据线双向。
图上的片选线用来传输片选信号,片选信号有效时才选中这块芯片进行读写操作。右边读写控制线传送信号来决定芯片是处于读还是写状态。
片选线的作用
如果用16K1位组成64K8位的存储器,就用8个16K*1位芯片作为一组,一共取4组这样的芯片组来构成存储器。
如上图每组芯片都有一个片选线,那么第一组的存储范围就是0——(16K-1)。
半导体存储芯片译码驱动方式
线选法
如图,左边A3-A0四根地址线,说明地址范围0——2^4 -1,就有16根地址线,16个存储单元。图中数据线读写范围是D0到D7,8根线,说明每个存储单元是8位。那么存储器一共是16*8位。
线选法中地址译码器输出的0-15,16根线中哪根输出有效信号就选择哪个存储单元。
如输入0000,进行读操作,那么选择的就是图中的红色部分。
重合法
分为行地址和列地址,行列地址分别进行译码。
如上图中,A4-A0输入行地址,这里输入00000,A9-A5输入列地址,这里也输入00000。那么行地址线中X0导通,由于图中是32*32的存储矩阵,所以(0,0)-(0,31)均导通。列地址线中由于Y0导通,所以X0控制的行中只有(0,0)可以通过Y0控制的开关输出到I/O.(开关位图中红线圈出部分)
重合法相比线选法,效率更高,所需要的线更少。
随机存取存储器(RAM)
1.静态RAM(SRAM)
保存0和1的原理
通过双稳态触发器的锁存
基本单元电路
如图,T1~T4是D触发器,A和A’是触发器的原端和非端,一个输出0一个输出1.图中只是静态RAM的一个基本单元,整个SRAM中还有多个触发器来组成矩阵的行和列。T5和T6是图中这个触发器的行开关,一整行还会有多个T5,T6这样的开关。
T7,T8是列开关,是这一列触发器都共用的。Din是写入的线。
对单元电路如何读出和写入
读入操作如上图,首先选中该行和列,图中T5~T8门均打开。则这四个门都导通,可以将他们视作导线。这时存在触发器A端的数值(0/1)通过Dout放大器输出。如图中红色线所示。
写操作如上图。此时写选择信号有效,使用于写入的放大器和反相放大器都导通。写信号从Din进入,左边一路信号通过反相放大器经T7,T5到A’ 端。用反相放大器是因为左边信号是到A非端,所以左侧输入信号也要反向才能保证触发器存储的信息没错。
右路同理。
静态RAM芯片举例
以Intel 2114 RAM为例,内部存储结构为64*64的矩阵,该芯片要保证每次读出或者写入4位数据。所以在芯片设计时让列信号每次能够选中四列。为了达到这个目的,设计时把64列分成4组,每组16列。
此时4位列地址线产生16位列地址信号,每一个列选信号控制每组当中的一列。如第0个列选信号,控制第1、2、3、4组中的第0列。这样就达到了一次控制4位的目的。
以上图为例,行地址为000000(六位行地址线,2^6位64),列地址为0000(四位列地址线,控制16列)。经过行地址译码器,整个第0行被选中。经过列地址译码后,每组的第0列被选中。
图中进行读操作,信号通过读写电路,在WE高电平(读操作)CS低电平控制下完成读出。
如果是写操作,WE低电平,数据通过I/O1~4输入,通过读写电路,输入到指定位置触发器的A端和A’端即可。
2.动态RAM(DRAM)
保存0和1的原理
通过电容是否有电荷保存。电容被充电,有电荷,则1。放电,无电荷,则0.
基本单元电路的构成
基本单元电路有两种方式,如上图左边和右边所示。
左边结构中:三管模式
如果为写入操作,则写选择线高电平,使T3管导通。若写入1,则写数据线为高电平,写数据线通过T3管对Cg充电,使其保存1.若写入0则放电。
如果为读出操作,则读选择线为高电平,T2导通。如果此时Cg为1(高电平),那么T1也导通,读数据线相当于通过T2,T1直接接地,读到0.
如果此时Cg为0,则T1断开。此时T2在读选择线控制下仍旧导通,T4在预充电信号作用下导通,此时读数据线相当于通过T4接到了Vdd,即读数据线高电平,读到了1.
由此可知,这种结构读出信号时读出的内容与原存信息相反。Cg存1则读出0,存0读出1.而写入信号时与输入信号相同,即写入什么信号,输入到Cg就是什么信号。
右边结构中: 单管模式
字线也就是控制线,如果相应的行被选中,那么字线控制的T就会打开,T管导通。电容就会通过管T充放电。
读出时,T导通,如果Cs存的是1,那么通过T,数据线上就会有电流,则为1.反之,存的是0,数据线无电流,读出0.
写入时,写入1就相当于对电容Cs充电,写入0就是对Cs放电。
典型芯片的结构
三管动态RAM芯片 Intel 1103如上图。行列地址线一共十位,说明存储容量是1K(2^10).每次读写1位数据,芯片容量是1k*1.
图中行地址译码器分别控制每一行的读选择线和写选择线,即基本单元电路中的读、写选择线。这里DRAM和上面SRAM一个不同之处是读选择,写选择各由一条线控制,原因见上面的基本单元电路。
图中列地址译码器通过读写控制电路分别控制每一列的读和写数据线,即基本单元电路中的读、写数据线。
上图中进行的是读操作,如果行地址译码器输入的是00000,列地址译码器输入的是00000,那么选中的是第0行0列的(图中为棕色的单元电路)单元,该行的读选择线此时有效,该单元通过第0列读数据线,再通过读写控制电路进行读操作。
写操作原理类似。
单管动态RAM这里以Intel 4116为例。
Intel 4116存储容量为 16K*1位。2^14=16k,需要14根地址线,而4116实际只有7根地址线。这将14位地址分两次传送。第一次先收到7位行地址,送到行地址缓存器中,第二次收到7位列地址,送到列地址缓存器。
之后进行图中过程的译码,通过IO缓存器进行输入和输出。
内部具体电路如上图。图中的读放大器是跷跷板电路,当它一端为0时另一端就为1,反之亦然。图中行列是倒过来画的,图中的每一列其实是行,图中的每一行其实是列。
以读操作为例。当行地址为1111110时,选中63行,如图中红色部分所示,该行开关均导通。如果此时列地址为0000000,就选中63行第0列,如图中红色最上面的电容。这时该单元的读放大器通向电容。如果电容中存的是1,那么读放大器另一端输出到I/O缓冲的值就是0.反之存的0就输出1.
当然此时如果选到了第64到127行,不经过跷跷板电路,那么此时读或写的内容就与电容电平一致对应。
写操作同理,0-63行也会反向。
动态RAM如何读出和写入
动态RAM刷新方法