计算机组成原理 第三章(存储器)—第二节(主存储器(上))

本文主要是介绍计算机组成原理 第三章(存储器)—第二节(主存储器(上)),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 写在前面:

  1. 本系列笔记主要以《计算机组成原理(唐朔飞)》为参考,大部分内容出于此书,笔者的工作主要是挑其重点展示,另外配合下方视频链接的教程展开思路,在笔记中一些比较难懂的地方加以自己的一点点理解(重点基本都会有标注,没有任何标注的难懂文字应该是笔者因为强迫症而加进来的,可选择性地忽略)。
  2. 视频链接:计算机组成原理(哈工大刘宏伟)135讲(全)高清_哔哩哔哩_bilibili

一、概述

1、主存的基本组成

(1)主存储器(简称主存或内存)包括存储体M、各种逻辑部件及控制电路等。存储体由许多存储单元组成,每个存储单元都有一个编号,称为存储单元的地址号每一个存储单元又包含若干个存储元件(或称存储基元、存储元),每个存储元件能寄存一位二进制代码“0”或“1”,那么一个存储单元可存储一串二进制代码,称这串二进制代码为一个存储字,这串二进制代码的位数称为存储字长(存储字长可以是8位、16位或32位等)。

(2)主存的工作方式就是按存储单元的地址号来实现对存储字各位的存(写入)、取(读出),这种存取方式称为按地址存取方式,即按地址访问存储器(简称访存)。为了实现按地址访问的方式,主存中还必须配置两个寄存器MAR(存储器地址寄存器)和MDR(存储器数据寄存器)

(3)实际上,根据MAR中的地址访问某个存储单元时,还需经过地址译码、驱动等电路才能找到所需访问的单元,读出时需经过读出放大器才能将被选中单元的存储字送到MDR,写入时MDR中的数据也必须经过写入电路才能真正写入被选中的单元中。

2、主存和CPU的联系

(1)现代计算机的主存都由半导体集成电路构成,驱动器、译码器和读写电路均制作在存储芯片中,而MAR和MDR制作在CPU芯片内。存储芯片和CPU芯片可通过总线连接,如下图所示。

(2)当要从存储器读出某一信息字时,首先由CPU将该字的地址送到MAR,经地址总线送至主存,然后发出读命令,主存接到读命令后得知需将该地址单元的内容读出,便完成读操作,将该单元的内容读至数据总线上,至于该信息由MDR送至什么地方,这是由CPU决定的

(3)当要向主存存入一个信息字时,首先CPU将该字所在主存单元的地址经MAR送到地址总线,并将信息字送入MDR,然后向主存发出写命令,主存接到写命令后便将数据线上的信息写入对应地址线指出的主存单元中

3、主存中存储单元地址的分配

(1)主存各存储单元的空间位置是由单元地址号来表示的,而地址总线是用来指出存储单元地址号的,根据该地址可读入或写入一个存储字。不同的机器存储字长也不同,为了满足字符处理的需要,常用8位二进制表示一个字节,因此存储字长都取8的倍数

(2)通常计算机系统既可按字寻址,也可按字节寻址。(对于下图,可认为方框内的是字节地址,方框外的是字地址,只是实际上地址码应该是用二进制或者十六进制表示的)

①IBM 370机的字长为32位,它的每一个存储字包含4个字节字地址是用该字高位字节的地址来表示,故其字地址是4的整数倍,正好用地址码的末两位来区分同一字的4个字节的位置(两位二进制的地址码正好有4种取值)。

②PDP-11机的字长为16位,它的每一个存储字包含2个字节字地址是用该字低位字节的地址来表示,故其字地址是2的整数倍,正好用地址码的末位来区分同一字的2个字节的位置(一位二进制的地址码正好有2种取值)。

③对24位地址线的主存而言,无论在哪个机器中,按字节寻址的范围都是16M(2^{24}),而在IBM 370机中按字寻址的范围为4M(2^{24}/4),在PDP-11机中按字寻址的范围为8M(2^{24}/2)。

(3)大端和小端存储模式:

大端(存储)模式是指数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中,也就是高位字节地址为字地址。(如上左图所示)

小端(存储)模式是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中,也就是低位字节地址为字地址。(如上右图所示)

4、主存的技术指标

(1)存储容量:

①存储容量是指主存能存放的二进制代码总数,即

②存储容量也可用字节总数来表示,即

(2)存储速度:

①存储速度是由存取时间和存取周期来表示的。

②存取时间又称为存储器的访问时间,是指启动一次存储器操作(读或写)到完成该操作所需的全部时间,存取时间分读出时间和写入时间两种。

[1]读出时间是从存储器接收到有效地址开始,到产生有效输出所需的全部时间。

[2]写入时间是从存储器接收到有效地址开始,到数据写入被选中单元位置所需的全部时间。

③存取周期是指存储器进行连续两次独立的存储器操作(如连续两次读操作)所需的最小间隔时间,通常存取周期大于存取时间。

(3)存储器带宽:

        存储器带宽与存取周期密切相关,它表示单位时间内存储器存取的信息量,单位可用字/秒或字节/秒或位/秒表示,同时它还是衡量数据传输率的重要技术指标。

二、半导体存储芯片简介

1、半导体存储芯片的基本结构

(1)半导体存储芯片采用超大规模集成电路制造工艺,在一个芯片内集成具有记忆功能的存储矩阵、译码驱动电路和读/写电路等,如下图所示。

①存储矩阵:由大量相同的位存储单元阵列构成。

②译码驱动:将来自地址总线的地址信号翻译成对应存储单元的选通信号,该信号在读写电路的配合下完成对被选中单元的读/写操作

③读/写电路:包括读出放大器和写入电路,用来完成读/写操作。

(2)地址线是单向输入的,数据线是双向的(有的芯片可用成对出现的数据线分别作为输入或输出),二者的位数共同反映存储芯片的容量,假如地址线为n根,数据线为k根,则芯片容量为2^{n}\times k(K)

(3)控制线主要有读/写控制线与片选线两种,不同存储芯片的读/写控制线和片选线可以不同。

读/写控制线决定芯片进行读/写操作

②由于半导体存储器是由许多芯片组成的,为此需要用片选信号来确定哪个芯片被选中,片选线则是用来选择存储芯片的。下图所示的是由32片16K×1位的存储芯片组成的64K×8位存储器(字长为8位),每次读出一个存储字时需选中8片芯片。

2、半导体存储芯片的译码驱动方式

(1)线选法:如下左图所示,是一个16×1字节线选法存储芯片的结构示意图,它的特点是用一根字选择线(字线)直接选中一个存储单元的各位比如当地址线A_{3}A_{2}A_{1}A_{0}为1111时,15号字线被选中,对应下左图中的最后一行8位数据便可直接读出或写入),这种方式结构较简单,但只适用于容量不大的存储芯片。

(2)重合法:如下右图所示,是一个1K×1位重合法结构示意图,只要用64根选择线(X、Y两个方向各32根),便可选择32×32矩阵中的任一位比如当地址线全为0时,译码输出X_{0}Y_{0}有效,矩阵中第0行、第0列共同选中的那位即被选中)。

三、随机存取存储器

1、静态RAM(SRAM)

(1)静态RAM的基本单元电路(寄存一位“0”/“1”代码的电路):

①图中T_{1}\sim T_{4}是一个由MOS管组成的触发器基本电路,T_{5}T_{6}犹如一个开关,受行地址选择信号控制,这6个MOS管共同构成一个基本单元电路。T_{7}T_{8}受列地址选择信号控制,分别与位线A’(触发器原端)和A(触发器非端)相连,它们并不包含在基本单元电路内,而是芯片同一列的各个基本单元电路所共有的。

假设触发器已存有“1”信号,即A点为高电平。当需读出时,只要使行、列地址选择信号均有效(即选中该基本单元),则使T_{5}T_{6}T_{7}T_{8}均导通,A点高电平通过T_{6}后再由位线A通过T_{8}作为读出放大器的输入信号,在读选择有效时将“1”信号读出。

③由于静态RAM是用触发器工作原理存储信息的,因此即使信息读出后,它仍保持其原状态,不需要再生,但电源掉电时,其原存信息丢失,故它属于易失性半导体存储器

写入时不论触发器原状态如何,只要将写入代码送至D_{IN}端,在写选择有效时,经两个写放大器,使两端输出为相反电平。当行、列地址选择有效时,使T_{5}T_{6}T_{7}T_{8}导通,并将A与A’点置成完全相反的电平,这样就可以把欲写入的信息写入该基本单元电路中。比如要写入“1”信号,即D_{IN}=1,经两个写放大器使位线A为高电平、位线A为低电平,结果使A点为高,A点为低,即写入了“1”信息。

(2)静态RAM芯片举例:

①下图所示是一个容量为1K×4位的2114外特性示意图,其中A_{9}\sim A_{0}为地址输入端,I/O_{1}\sim I/O_{4}为数据输入输出端,\overline{CS}为片选信号(低电平有效),\overline{WE}为允许信号(低电平为写,高电平为读),V_{CC}为电源端,GND为接地端。

②2114 RAM芯片的结构示意图如下图所示,图中的存储矩阵由64×64个基本单元电路组成,列I/O电路即读/写电路,10根地址线分为行地址A_{8}\sim A_{3}和列地址A_{9}A_{2}A_{1}A_{0},4根数据线为I/O_{4}\sim I/O_{1},它们是受输入输出三态门控制的双向总线。

[1]当\overline{CS}\overline{WE}均为低电平时,输入三态门打开,I/O_{4}\sim I/O_{1}上的数据即写入指定地址单元中。

[2]当\overline{CS}为低电平、\overline{WE}为高电平时,输出三态门打开,列I/O电路的输出经片内总线输出至数据线I/O_{4}\sim I/O_{1}上。

③2114 RAM芯片内的存储矩阵结构如下图所示,其中每一个小方块均为一个由6个MOS管组成的基本单元电路,排列成64×64矩阵,64列对应64对T_{7}T_{8}管,接着64列又分成4组,每组包含16列,并与一个读/写电路相连,读/写电路受\overline{CS}\overline{WE}控制,4个读/写电路对应4根数据线I/O_{1}\sim I/O_{4}。从下图可见,行地址经译码后可选中某一行,列地址经译码后可选中4组中的对应列(每组都被选中1列),共4列,也就是每次都可选中4位(4个基本单元)

(3)静态RAM读/写时序:

①(2114 RAM芯片的)读周期时序:

②(2114 RAM芯片的)写周期时序:

2、动态RAM(DRAM)

(1)动态RAM的基本单元电路(寄存一位“0”/“1”代码的电路):

①常见的动态RAM基本单元电路有三管式和单管式两种,它们的共同特点都是靠电容存储电荷的原理来寄存信息,若电容上存有足够多的电荷就表示存“1”,电容上无电荷则表示存“0”电容上的电荷一般只能维持1~2ms,因此即使电源不掉电,信息也会自动消失,为此必须在2ms内对其所有存储单元进行一次恢复原状态的操作,这个过程称为再生或刷新

②三管MOS动态RAM基本单元电路:

[1]图中T_{1}T_{2}T_{3}这3个MOS管组成了三管MOS动态RAM基本单元电路。

[2]读出时,先对预充电管T_{4}置一预充电信号(在存储矩阵中,每一列共用一个T_{4}管),使读数据线达高电平V_{DD},然后由读选择线打开T_{2},若T_{1}的极间电容C_{g}存有足够多的电荷(被认为原存“1”),使T_{1}导通,则因T_{2}T_{1}导通接地,使读数据线降为零电平,读出“0”信息;若C_{g}没有足够电荷(被认为原存“0”),则T_{1}截止,读数据线为高电平不变,读出“1”信息。可见,由读出线的高低电平可区分其是读“1”还是读“0”,只是它与原存信息反相。

[3]写入时,将写入信号加到写数据线上,然后由写选择线打开T_{3},这样C_{g}便能随输入信息充电(写“1”)或放电(写“0”)。

③单管MOS动态RAM基本单元电路:

[1]将三管电路进一步简化,去掉T_{1},把信息存在电容C_{s}上,将T_{2}T_{3}合并成一个管子T,便得到单管MOS动态RAM基本单元电路。

[2]读出时,字线上的高电平使T导通,若C_{s}有电荷,经T管在数据线上产生电路,可视为读出“1”;若C_{s}无电荷,则数据线上无电流,可视为读出“0”。读操作结束时,C_{s}的电荷会被释放,这种就是破坏性读出,必须对其进行“再生”操作(把它恢复成读出前的状态)。

[3]写入时,字线为高电平使T导通,若数据线上为高电平,经T管对C_{s}充电,使其存“1”;若数据线为低电平,则C_{s}T放电,使其无电荷而存“0”。

(2)动态RAM芯片举例:

①三管动态RAM芯片:

②单管动态RAM芯片:

(3)动态RAM的时序:

①首先分析\overline{RAS}\overline{CAS}与地址的关系:

②读时序:

③写时序:

(4)动态RAM的刷新:

刷新的过程实质上是先将原存信息读出,再由刷新放大器形成原信息并重新写入的再生过程

由于存储单元被访问时随机的,有可能某些存储单元长期都不会得到访问,也就是不进行存储器的读/写操作,这样其内的原信息就会慢慢消失,为此必须采用定时刷新的方法,它规定在一定时间内对动态RAM的全部基本单元电路必作一次刷新,一般取2ms,这个事件称为刷新周期,又称再生周期

刷新是一行一行进行的,必须在刷新周期内由专用的刷新电路来完成对基本单元电路的逐行刷新,才能保证动态RAM内的信息不丢失。

④通常有三种方式刷新:

[1]集中刷新:

        集中刷新是在规定的一个刷新周期内,对全部存储单元集中一段时间逐行进行刷新,此刻必须停止读/写操作

        例如,对128×128矩阵的存储芯片进行刷新时,若存取周期为0.5μs,刷新周期为2ms(占4000个存取周期),则对128行集中刷新共需64μs(占128个存取周期),其余的1936μs(共3872个存取周期)用来读/写或维持信息。由于在这64μs时间内不能进行读/写操作,故称为“死时间”,又称访存“死区”,所占比率为128/4000×100%=3.2%,称为死时间率。

[2]分散刷新:

        分散刷新是指对每行存储单元的刷新分散到每个存取周期内完成(每次读写完都刷新一行),其中把机器的存取周期t_{C}分成两端,前半段t_{M}用来读/写或维持信息,后半段t_{R}用来刷新。

        若读/写周期为0.5μs,则存取周期为1μs,仍以128×128矩阵的存储芯片为例,刷新按行进行,每隔128μs就可将存储芯片全部刷新一遍,这比允许的间隔2ms要短得多,而且也不存在停止读/写操作的死时间,但存取周期长了,整个系统的速度也降低了

[3]异步刷新:

        异步刷新是前两种方式的结合,它既可缩短“死时间”,又充分利用最大刷新间隔为2ms的特点。

        例如,对于存取周期为0.5μs,排列成128×128的存储芯片,可采取在2ms内对128行各刷新一遍,即每隔15.6μs刷新一行,而每行刷新的时间仍为0.5μs,这样刷新一行只停止一个存取周期,但对每行来说刷新间隔时间仍为2ms,而死时间缩短为0.5μs。

3、动态RAM和静态RAM的比较

(1)动态RAM相较于静态RAM的优点:

①在同样大小的芯片中,动态RAM的集成度远高于静态RAM,

②动态RAM行、列地址按先后顺序输送,减少了芯片引脚,封装尺寸也随之减少。

③动态RAM的功耗比静态RAM小(静态RAM的发热量大)。

④动态RAM的价格比静态RAM的价格便宜。

(2)动态RAM相较于静态RAM的缺点:

①由于使用动态元件(电容),它的速度比静态RAM低。

②动态RAM需要再生,故需配置再生电路,也需要消耗一部分功率。

四、只读存储器

1、概述

(1)前面介绍的RAM是易失性的,一旦掉电,其中存储的内容全部丢失,而本部分介绍的ROM则是非易失性的,即使掉电,其中存储的内容也不会丢失

(2)按ROM的原始定义,一旦注入原始信息后就不能改变,但随着用户的需要,总希望能任意修改ROM内的原始信息,这便出现了PROM、EPROM和EEPROM等

2、掩模ROM

        下图所示的是MOS型掩模ROM,其容量为1K×1位,采用重合法驱动,行、列地址线分别经行、列译码器,各有32根行、列选择线,行选择线与列选择线交叉处既可有耦合元件MOS管,也可没有。列选择线各控制一个列控制管,32个列控制管的输出端共连一个读放大器。

        当地址为全“0”时,第0行、第0列被选中,若其交叉处有耦合元件MOS管,因其导通而使列线输出为低电平,经读放大器反相为高电平,输出“1”。当地址A_{4}\sim A_{0}为11111,A_{9}\sim A_{5}为00000时,即第31行、第0列被选中,若其交叉处没有耦合元件MOS管,则0列线输出高电平,经读放大器反相为低电平,输出“0”。

        可见,用行、列交叉处是否有耦合元件MOS管,便可区分原存“1”还是存“0”。而且,此ROM制成后不可能改变原行、列交叉处的MOS管是否存在,所以用户是无法改变原始状态的

3、PROM

        PROM是可以实现一次性编程的只读存储器,也就是只能往其中写一次内容,往后都不可以进行更改

        下图所示是16×1位双极型镍铬熔丝式PROM芯片,用户在使用前可按需要将信息存入行、列交叉的耦合元件内。若欲存“0”,则置耦合元件一大电流将熔丝烧掉;若欲存“1”,则耦合处不置大电流,熔丝不断当被选中时,熔丝断掉处将读出“0”,熔丝未断处将读出“1”

4、EPROM

        EPROM是一种可擦除可编程只读存储器,它可以由用户对其所存信息做任意次的改写

        EPROM的改写有两种方法,一种是紫外线照射,但擦除时间比较长,而且不能对个别需改写的单元进行单独擦除或重写,另一种方法是用电气方法将存储内容擦除再重写。甚至在联机条件下,用字擦除方式或页擦除方式,既可局部擦写,又可全部擦写,这种EPROM就是EEPROM。

        进入到20世纪80年代,又出现一种闪速存储器(Flash Memory),又称快擦型存储器,它是在EPROM和EEPROM工艺基础上产生的一种新型的、具有性能价格比更好、可靠性更高的可擦写非易失性存储器,它既有EPROM的价格便宜、集成度高的优点,又有EEPROM电可擦除重写的特性,它具有整片擦除的特点,其擦除、重写的速度快。

这篇关于计算机组成原理 第三章(存储器)—第二节(主存储器(上))的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/803114

相关文章

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

MySQL中的表连接原理分析

《MySQL中的表连接原理分析》:本文主要介绍MySQL中的表连接原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、表连接原理【1】驱动表和被驱动表【2】内连接【3】外连接【4编程】嵌套循环连接【5】join buffer4、总结1、背景

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

Java Stream的distinct去重原理分析

《JavaStream的distinct去重原理分析》Javastream中的distinct方法用于去除流中的重复元素,它返回一个包含过滤后唯一元素的新流,该方法会根据元素的hashcode和eq... 目录一、distinct 的基础用法与核心特性二、distinct 的底层实现原理1. 顺序流中的去重

Spring @Scheduled注解及工作原理

《Spring@Scheduled注解及工作原理》Spring的@Scheduled注解用于标记定时任务,无需额外库,需配置@EnableScheduling,设置fixedRate、fixedDe... 目录1.@Scheduled注解定义2.配置 @Scheduled2.1 开启定时任务支持2.2 创建

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意