计算机组成原理3——存储器1

本文详细解读了存储器在计算机中的重要性,包括存储器的分类(如半导体、磁表面、磁芯、光盘等)、访问方式(随机RAM、只读存储器),以及主寄存器、主存与CPU的交互。重点介绍了动态RAM的工作原理、静态RAM与动态RAM的对比,以及只读存储器的不同类型及其编程方法。文章还探讨了存储系统层次结构和各类存储器的刷新策略。
摘要由CSDN通过智能技术生成

本系列文章是学习了网课《哈尔滨工业大学–计算机组成原理》之后,用以梳理思路而整理的听课笔记及相关思维拓展。本文涉及到的观点均为个人观点,如有不同意见,欢迎在评论区讨论。

存储器概述

存储器是计算机中的重要设备,用来存放程序和数据。随着计算机的发展,CPU的速度变得越来越快,远超存储器的存取速度,存储器和CPU速度的不匹配是计算机运行速度受限的主要因素,因此也发展出各种各样的存储设备。可以从以下几个方面对存储器进行分类:

按照存储介质分类(存储介质是指能够寄存0、1并能够区别两种状态的物质或元器件)
1、半导体存储器,由半导体器件组成,易于集成,而且因为半导体器件的特点,速度较快。
2、磁表面存储器,在金属或者塑料基体的表面涂上一层磁性材料作为记录介质,工作时磁层随载体高速运转,用磁头在磁层上进行读写操作,利用剩磁状态的不同区分0和1,不会轻易丢失数据,但需要磁头、磁载体。
3、磁芯存储器,磁芯是由硬磁材料(不容易退磁,磁性保持时间长)做成环形元件,在磁芯中穿有驱动线和读出线,以进行读写操作。体积大、工艺复杂、功耗太大。
4、光盘存储器,采用激光在记录介质(磁光材料)上进行读写,有非易失性。

按照存取方式
1、随机存储器(Random Access Memory, RAM),可读写,存储器的任何一个存储单元的内容都可以随机存取,存取时间与存储单元的物理位置无关。根据存储信息的原理不同,又可分为静态RAM(触发器一直维持数据)和动态RAM(需要不停刷新电容以维持信号)
2、只读存储器(Read Only Memory,ROM),在程序执行时,只能将内部信息读出,不能轻易的写入以改变原始数据。

掩膜型只读存储器(Masked ROM,MROM),厂家一旦制成就无法更改。
可编程只读寄存器(Programmable ROM,PROM)
电擦除可编程只读存储器(Electrically - Erasable Programmable ROM,EEPROM)
闪存存储器(Flash Memory)

3、串行访问存储器,对存储单元进行读写操作时,按照物理顺序进行寻址,例如磁带存储器。

按照在计算机中的作用
主存:直接和CPU进行数据交换
辅存:主存的后援存储器,用来存放暂时不用的程序和数据,不能和CPU直接进行数据交换
缓存:一般用于两个存取速度不同的部件之间,起缓冲作用

在这里插入图片描述

为什么要这么多种类的存储器

因为我们想要存储器可以跟得上CPU的速度,即要求速度快;
但是这样价格贵,而价格自然是便宜更好;
而且还需要内存又大占的尺寸还小;
所以我们的要求是:存取速度和CPU的速度一样快、价格便宜、体积小、而且容量大
但是没有一种存储器可以满足:速度快、容量大、价格低还需要体积小
因此用多层次的存储器系统(结合多类存储器),以满足上述需求

存储系统的层次结构
存储器有三个主要的性能指标:速度、容量和每位价格,三者之间可以由下图体现,越往上的速度越快:

寄存器:直接在CPU内部参与运算,速度最快、价位最高、容量最小;
主存:存放将要参与运行的程序和数据;其速度与CPU速度差距较大,在主存和CPU之间加入了比主存速度更快、容量更小的高速缓冲存储器Cache;
磁盘和磁带属于辅助存储器,其容量远大于主存,大都用来存放暂时未用到的程序和数据文件;
CPU不能直接访问辅存,辅存只能与主存交换信息,辅存的速度比主存慢得多;
在这里插入图片描述

缓存-主存体系主要解决CPU和主存速度不匹配的问题,缓存的速度比主存的速度高,只要CPU将近期要用的信息调入缓存,CPU便可以直接从缓存中获取信息,从而提高访存速度。但是由于缓存的容量小,需要不断的把主存的内容调入缓存,使缓存中原来的数据被调换。
主存-辅存层次主要解决存储系统的容量问题,辅存的速度比内存的速度低,不能和CPU直接交换信息,但是其容量远大于主存,可以存放信息,当CPU需要用到这些信息时,可以将辅存的内容调入主存,供CPU访问。
在这里插入图片描述

主寄存器

主存和CPU的联系

CPU从主存读取数据:当需要从存储器读出信息字时,由CPU将该字的地址发送到MAR,经地址总线送至主存,然后发出读命令,主存接收到读命令之后,将指定地址单元的内容读出,完成读操作,将该地址单元的数据送至MDR,至于信息由MDR送到什么位置,主存不管。
CPU向主存存数据:首先CPU将该字的地址通过MAR送到地址总线,并将信息字送入MDR,然后向主存发出写命令,主存接到写命令后,将数据线上的信息写入对应地址线指出的主存单元中。
在这里插入图片描述

静态RAM

基本电路
在这里插入图片描述

T1、T2:存储数据
T3、T4:提供电源给T1、T2
T5、T6:行开关,受行地址选择控制信号
T7、T8:列开关,受列地址选择控制信号

写信号:
行选中和列选中,导致T5、6、7、8全部选通
比如写入Data是1,A点被置1,A’被置0
A和A’的电位导致T1导通、T2断开
T1导通,导致A‘继续为0,T2继续断开,导致A继续为1,形成互锁
行列选择信号撤除以后,T3和T4继续提供电压,以此维持A和A’,A的1就是写入的信号
比如写入Data是0,A点置0,A‘被置1
A和A’的电位导致T1断开、T2导通
T2导通导致A继续为0,T1继续断开,A‘继续为1,形成互锁
行列选择信号撤除以后,T3和T4继续提供电压,以此维持A和A’,A的0就是写入的信号

读信号:
行选中和列选中后,直接将A的电平信号放大后输出即可

芯片举例

以Intel 2114芯片为例
A0~A9是地址输入端
I / O 1 I/O_1 I/O1~ I / O 4 I/O_4 I/O4是数据输入输出端
C S ‾ \overline{CS} CS是片选信号
W E ‾ \overline{WE} WE是写允许信号

在这里插入图片描述

2114存储矩阵由64 × 64个基本单元组成, A 8 A_8 A8~ A 3 A_3 A3是行地址, A 9 A_9 A9 A 2 A_2 A2 A 1 A_1 A1 A 0 A_0 A0是列地址
2114有64行,由6个行地址控制( 2 6 2^6 26 = 64)
64列看起来不能由4个列地址控制,是因为64列被拆分成四组,一个列地址进来会同时选中四组中的数据,也就是当提供行列信号后,同时输出四个数据(四个IO)
64列共包含64对 T 7 T_7 T7 T 8 T_8 T8管,64列分成四组,每组包含16列,由四个列控制信号控制( 2 4 2^4 24 = 16)

举例
A 8 A_8 A8~ A 3 A_3 A3:000 000, A 9 A_9 A9 A 2 A_2 A2 A 1 A_1 A1 A 0 A_0 A0:0 0 0 0
第0行被选中,64列中的四组,每组中的第一列被选中,即0,16,32,48这四列被选中
I / O 1 I/O_1 I/O1~ I / O 4 I/O_4 I/O4分别输出第0行的第0,16,32,48列,这四个存储单元存储的信息,或者IO先写入存储单元

在这里插入图片描述
注意:读和写均有最小周期限制,并非连续操作。

动态RAM

基本电路
动态RAM采用电容存储电荷来寄存信息,电容上的电荷一般只维持1~2ms,即使电源不掉电,信息也会慢慢消失,必须定时对存储单元进行刷新,所以掉电后,信息会消失。

下面是三管动态RAM的基本单元电路:
在这里插入图片描述

读数据
先对预充电管 T 4 T_4 T4置预充信号,此时读数据线先处于高位
读选择线打开 T 2 T_2 T2
C g C_g Cg处于高电平,则使得 T 1 T_1 T1导通; T 1 T_1 T1 T 2 T_2 T2导通导致读数据降为低电
C g C_g Cg处于低电平,则 T 1 T_1 T1不导通;读数据为高电平
输出信号和 C g C_g Cg反向

写数据
写选择打开 T 3 T_3 T3,写数据线向 C g C_g Cg写入数据(充放电)

下面是单管RAM的基本电路:
在这里插入图片描述

读数据
字线上的高电平使T导通
C g C_g Cg有电荷,在数据线上产生电流,视为“1”
C g C_g Cg无电荷,数据线上无电流,视为“0”
读操作有破坏性,必须对电容进行再生

写数据
字线为高电平使T导通
若数据线上为高电平,经T管对 C g C_g Cg进行充电,使其存“1”
若数据线上为低电平,则 C g C_g Cg经T放电,使其无电荷存“0”

芯片举例
下面是三管动态RAM芯片的结构举例

这是一个1K × 1位的存储芯片,每一个小方块代表一个动态RAM基本电路(存储单元),因为是1K × 1位,所以地址位需要10位( 2 10 2^{10} 210 = 1K),其排列成32 × 32的矩阵。行列译码器将地址转换,从而找到需要进行操作的存储单元。
在这里插入图片描述
下面是单管动态RAM芯片的结构举例

这是一个16K × 1的存储芯片,按理说有14( 2 14 2^{14} 214 = 16K)根地址线,但是为了减少地址线的数量方便封装,地址信号分成两次传送,第一次传送7位行地址信号,第二次传送7位列地址信号。
在这里插入图片描述
上述单管芯片的具体读写操作

读信号
行地址经过译码之后,选中其中一行,该行上的MOS导通,并将其电容 C s C_s Cs上的电荷反映到128个读放大器的某一侧(0到63行反映到读放大器的左侧,64到127行反映到读放大器的右侧),因为放大器是一个跷跷板电路,其左右两侧电平相反,所以0到63行上 C s C_s Cs的电平和读出来的电平反向,64到127行上 C s C_s Cs的电平和读出来的电平同相。

写信号
行列信号经过译码之后,选中其中一个存储单元
如果该存储单元是0到63行,那么存储单元存储的信息和输入信号反向,即当输入信号是1时,该输入信号经过读放大器(跷跷板电路), C s C_s Cs上的电平会被放电成0
如果该存储单元是64到127行,那么存储单元存储的信息和输入信号同向,因为输入信号是1时,它没有经过放大器(跷跷板电路), C s C_s Cs上的电平会被充电成1
所以说,因为写的时候,0到63行是反向的,读的时候又是反向的,所以最终结果是对的

在这里插入图片描述
动态RAM的刷新

刷新实质是先将原存信息读出,再由刷新放大器形成原信息并重新写入的再生过程。通常有三种刷新方式:集中刷新、分散刷新和异步刷新。

集中刷新:在规定的时间内,对全部存储单元集中一段时间逐行进行刷新,此刻必须停止读写操作。
比如对128 × 128的矩阵的存储芯片进行刷新,如果数据的存取周期是0.5us,刷新周期是2ms,那么对128行集中刷新需要占用64us(读取再写入),也就是说每2ms中有64us需要用来刷新数据,这64us中不能进行读写操作,称为“死区”时间。

分散刷新:对每行存储单元的刷新分散到每个存取周期内完成,如果存取周期是0.5us,那么将存取周期延长到1us,前0.5us还是用于读写数据,后面0.5us用于刷新数据,这样存储单元的刷新周期变短,相当于每存取一次就刷新一次(会不会有一行一直不用,不会,128us内必然刷新所有行,如果有一行有数据读写,就放在数据读写后面;没有数据读写,那也要刷新),但是整个系统的速度降低。

异步刷新:还是2ms刷新所有行,但是不会一次性刷新,在2ms内将所有行刷新完成即可,即2000us / 128 = 15.6us,每隔15.6us刷新一行,刷新一行只停止一个存取周期(刷新的时候不能存取,刷新周期0.5us和存取周期一样)。这个0.5us可以安排在CPU不访问存储器的译码阶段,就是CPU不用访问内存的时候安排上刷新,集中刷新占用的时间实在太长,很难保证CPU不用内存。

动态RAM和静态RAM的比较

动态RAM静态RAM
存储原理采用电容存储电荷采用触发器存储电荷
集成度单管只需要一个MOS,三管需要四个4~6个MOS管
引脚数量顺序传送地址,可以减少引脚数量需要一次性传输,发挥速度优势
功耗只需要对电容进行充放电有四个管子一直处于工作状态
速度需要电容充放电,速度较慢反应较快

只读存储器

厂家已经写好了内容,不能修改(MROM)
MROM(掩模ROM),可以看到,行列地址线有行列译码器对地址进行翻译,但是并不是所有位置都有MOS管。当查询地址没有MOS管时,会输出0;当查询位置有MOS管,会输出。以此得知存储器储存的信息。但是很显然,MOS管的位置都已经被放置好了,根本无法修改原始信息
在这里插入图片描述
用户可以自己写,只能一次(PROM)
PROM(一次性,熔丝),用户使用时,如果想存入“0”,则将耦合元件置大电流,将熔丝烧断,这样读取的时候就是0;如果想存取“1”,则将耦合元件置小电流,这样熔丝就不会熔断,这样读取的时候就是1。当然往往只能编程一次(如果你牛逼可以在以前的代码上再烧断新的熔丝,也行),不得再次修改
在这里插入图片描述
可以多次写
采用浮动栅雪崩注入型MOS管构成。当在漏端D加上正电压,会形成浮动栅以阻止源S和漏D之间的导通,此时MOS管处于0状态;若不在D端加正电压,则不能形成浮动栅,此时MOS管便能正常导通,此时MOS管处于1状态。

用户可以对不同位置的MOS管的D端编程施加或者不施加正电压以形成用户所需的ROM。如果想要重新编程,需要采用紫外线照射以驱散浮动栅,再次进行编程。
在这里插入图片描述
上述方式需要采用紫外线方式进行擦除,不能单独擦除某个固定单元,采用电气方式擦除、重写存储单元的方式称为EEPROM。并在此基础上发展了FLASH,其价格便宜,速度比EEPROM快,并且拥有EEPROM电可擦除的特性。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值