计算机组成原理:第三章 存储器

超大规模集成电路使CPU速度变得非常快,但存储器取数、存数还相对较慢,使得计算机系统运行速度受存储器限制;此外,随着I/O设备增多,若与存储器交换信息都通过CPU来实现,那也会降低CPU的效率。

一、 概述 

1.1 存储器的分类

主存又叫内存,辅存又叫外存。

1.2 存储器的层次结构

存储器有三个性能指标:容量、速度、每位价格(位价)。一般速度越快,位价越高,容量越大,位价越低。 并且容量越大,速度必越低。

 

 缓存-主存:主要用于解决CPU与主存速度不匹配的问题。但缓存容量小,所以由硬件自动把主存中CPU近期要调用的内容不断放入缓存。

主存-辅存:用于解决系统容量问题。辅存速度慢但容量大,所以把CPU暂时不用的存入辅存。

CPU内部可能有十几个寄存器,他们速度最快,容量最低,位价最高。

容量🔝  位价⬇️  速度⬇️

从上至下容量越来越大,速度越来越慢,位价越来越低,CPU访问频度也越来越低。 

二、主存储器

2.1 概述 

 主存储器由存储体,MAR:地址寄存器、MDR:数据寄存器组成。

​​​​​​​

但寄存器的定义是:CPU内部的元件,有很快的读写速度。为什么又会出现在主存中呢?

实际上主存储器🟰存储体,MAR与MDR虽然是存储器的组成,但是集成在CPU的芯片上,是连接CPU和主存的桥梁。

 存储体由若干个存储单元构成,存储单元存储的内容为存储字

每个存储单元又由w个存储元组成,一个存储元只存储一bit 的信息。

存储字的长度叫存储字长,为w bit。

 2.2 工作原理

回顾第一章: CPU包括运算器和控制器。控制器中包含PC程序计数器与IR指令寄存器,ID指令译码器、CU控制单元

 一个程序包括指令和数据两部分。

IR:存放当前正在执行的译码之后的指令

PC:存放下一条指令的地址,取完字节PC自动➕1

若是读数据,就是CPU先通过控制总线发出读的命令,首先从PC中拿到指令的地址给MAR(因为MAR和MDR是主存与CPU的桥梁),然后根据MAR中的地址通过地址总线去内存找到地址和数据,把从存储单元中找到的数据给MDR,这时候MDR中包含数据和指令,通过数据总线把数据存放到寄存器中,指令给IR。

2.3 主存中存储单元地址的分配

2.3.1 寻址与地址表示

 常用8位二进制表示一个字节,因此存储字长都是8的倍数。通常计算机系统按照字寻址,也可以用字节寻址。

32位=4字节=1字

64位=8字节=1字

例如:当总容量为1KB(就是2^10,10根地址线)

按字节寻址:1k个单元,每个单元1B

按字寻址:256个单元,每个单元4B

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

 地址表示有两种方式:大端方式与小端方式。如图a是大端方式,使用高位作字地址。b是小端方式,使用低位作字地址。

2.3.2 主要的技术指标 

1)存储容量

存储容量是主存能存放的二进制位数:存储容量=存储单元个数*存储字长(=存储元的个数) 

用字节表示 = 存储元个数/8.

2)存储速度

存储速度由存取时间与存储周期决定。 

存取时间:启动一次存储器到完成操作的时间。读和写的存取时间是不一样的,读出时间指接收到地址到产生输出的时间;写入时间是指找到存储单元到写入内容的时间。

存储周期:一次启动与下一次启动的时间间隔。(重要)!

3)存储器带宽

是单位时间内存储器存储的信息量,单位:字/秒、字节/秒。

若要提高存储器带宽,可以:

1.缩短存取周期

2.增加存储字长,每个存取周期就能读更多位的数据

3.增加存储体

 三、半导体存储芯片

地址线和数据线的位数共同反应存储芯片容量

四、随机存取存储器 

4.1 SRAM与DRAM的比较

随机存取存取存储器可以分为静态RAM与动态RAM。

存储器静态RAM动态RAM
存储信息触发器(双稳态)电容
破坏性读出
读出后需重写
运行速度
集成度
发热量
易失性是(电信号存储01,断电后信息消失)是(断电后信息消失)
需“刷新”
运送行列地址同时送分两次送(在4.2中有介绍)
查看触发器状态连接电容,监测到电流变化(破坏性读出,检测后信息被破坏,需要重新充电)
改变触发器状态给电容充放电

 SRAM常用作cache,DRAM常用作主存。

双稳态是指在电路或系统中,当没有外加触发信号时,电路或系统保持在一个稳定的状态;当施加触发信号时,电路或系统会从一个稳定状态翻转到另一个稳定状态;触发信号消失后,电路或系统能够保持这个翻转后的状态不变,直到下一次触发信号的到来。

4.2 DRAM的刷新 

刷新就是读出信息后:读取原信息+再成并写入 其实也就是存取+恢复! 耳熟吗?都是读一下再放回去,让他恢复原样。

由于存储单元被访问是随机的,某些存储单元长期得不到访问就会消失,所以在一定时间内必须对DRAM全部基本单元电路进行一次刷新,一般取2ms,称为刷新周期,也叫再生周期。

首先一定要搞明白下面这几句:

刷新周期=刷新所用时间+读/写或(不操作)维持所用时间。 

也就是:在刷新周期内,刷新的行要停止读写,不刷新的时候都能够正常读写或者不进行操作。

这下想起来了吧,存取周期和刷新是一样的,都是取出来一下再放回去。

所以刷新一行的时间=一个存取周期,所以刷新n行需要n个存储周期,不被刷新的行都能正常操作。

所以若对128*128的存储芯片进行刷新时(设刷新周期为2ms,存取周期为0.5us),

其实就类似于让你2000天内背128个单词,并为防止忘记要全部复习(设定:当天背的单词不能当天复习,最少要等到明天,并且一天只能复习一个,一天也只能背一个)一次,通常有三种方式。

拖延型集中复习:前1972慢慢背,后128天一天复习一个。

自律分散型复习:每天背完一个第二天就去复习,第三天再继续背第二个。

精打细算型复习:你让我2000天背128个,那我15.6(2000/128)天背完并且复习一个,也就是14.6天背一个,最后一天复习。

1)集中刷新

刷新是一行一行的,所以128*128的就要刷新128次。

集中刷新就是在刷新周期内对全部存储单元集中一段时间进行刷新,这个时候所有存储单元都不能进行任何其他操作。

若存取周期为0.5us,则共占128个存取周期(因为刷新一行就是一个存储周期,上面已经说了),刷新周期为2ms(相当于4000个存取周期),既然刷新的占128个存取周期,那么剩下的4000-128=3872个存取周期就是用来进行读/写或维持的。

缺点:后面128个存取周期是死时间,不能读/写,又称访存“死区”。死时间率:128/4000=3.2%

2)分散刷新

分散刷新就是每行存储单元放到每个存取周期刷新。

0.5us为存取周期,读/写或维持一行就刷新一次,那128个存储单元全部一行一行刷新完只需要花128us,刷新周期的定义是:在一定时间内,刷新完全部存储。所以这个时候刷新周期变成了128us也就是256个存取周期。

缺点:存取周期变长了,系统速度降低。(因为存取周期是存储器进行两次独立的存储器操作)

3)异步刷新

异步刷新是前两种的结合。 

2000us内刷新128次,所以15.6us刷新一次,就不会缩短存取周期,还是2ms。也不会全部拖延到最后再刷新,缩小了死时间。 

五、只读存储器

原始ROM的定义是:一旦注入原始信息就不能再改变,可读性高并且不易丢失但随着用户的需求发展出了MROM,PROM,EPROM,EEPROM等。

Mask ROM:它是制造时被编程的ROM,也称为固定程序ROM。在生产过程中,使用特殊的工具来编程,一旦编程就不能再修改。它的优点是速度快,可靠性高,但缺点是一旦生产就不能修改,所以只适用于大量生产的产品中。

PROM:PROM是可编程只读存储器(Programmable Read-Only Memory)的缩写,是由用户自行编程的ROM。在生产过程中,使用特殊的编程器将数据写入PROM,一旦编程就不能再修改。与Mask ROM相比,PROM可以在生产之后进行编程,但缺点是编程速度慢,容易受到紫外线的影响而失去数据。

EPROM:EPROM是可擦除可编程只读存储器(Erasable Programmable Read-Only Memory)的缩写。它可以通过紫外线来擦除,使得EPROM可以被重复编程。EPROM的擦除需要特殊的设备,擦除时间比较长,而且擦除次数有限。

EEPROM:EEPROM是可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory)的缩写,与EPROM相比,它可以通过电子信号来擦除。EEPROM的擦除速度比EPROM快,而且可以擦除次数更多,但是价格更高。

Flash Memory:Flash Memory是一种特殊的EEPROM,它可以一次性擦除整个芯片,而不是像EEPROM一样只能擦除一部分。Flash Memory具有快速读取速度,容量大,擦除次数多等特点,因此在存储器领域被广泛使用。

六、主存容量的扩展

CPU有8位地址线,16位数据线

6.1 位扩展 

位扩展就是增加存储字长。(存储字长不足时,需要对位数进行位扩展:增加存储单元的列)

存储字长:一个存储单元中二进制代码的位数

下图是两块芯片连接示意图,每块芯片都是A0~A12正常连接(地址线,adress),芯片是1位的,但CPU有8位数据线,所以再有六块芯片这样连接就行(第一块的数据线连D0,第二块的连D1……)。

6.2 字扩展 

字扩展是增加存储器字的数量。(存储单元数不足时:增加存储单元的行)

芯片是8位的所以数据线每个都是D0~D7正常连,如果连接的是A13和A15,那么不用看A14 。

6.3 字位同时扩展(略) 

例:​​​​​​​

七、存储器的校验——汉明码

前提:

1.

2.要检测的代码为n位,要添加k位检测位,组成n+k位代码。应满足关系:

例:传递b3b2b1b0

解:n=4位,所以k=3,就是2^0,2^1,2^2,2^3位上分别对应C1,C2,C4 。所以配偶原则:(配奇原则就是整体上名加个“非”)

 八、 提高访存速度

单体多字系统与多体并行存储器

8.1 多体并行的交叉编址 

t是总线传输周期。

高位交叉编址也叫顺序存储 

8.2 采用高性能存储芯片

高性能存储芯片也能提高访存速度。

九、 Cache高速缓冲存储器​​​​​​​

主存物理地址 = 块号 + 块内地址

CPU的增长速度是指数级别的,主存跟它比起来还是慢了很多,拉慢整体速度,所以为了避免CPU空等现象,要想办法加快对主存的访问速度。

1)时间局部性:过会儿要用的可能就是现在正在用的。

2)空间局部性:过会儿要用的指令、存储数据可能和现在正在访问的在相邻的访问位置。

 方法:把他们都先暂时存放在Cache中!!

9.1 主存地址映射

我们之前见过这张图

那么在主存与Cache的地址映射中,有:直接映射,全相联映射,组相联映射。

 ​​​​​​​1>直接映射

就是把主存按着cache分,每一份就是一个cache

主存物理地址 = 标记+cache行号+块内地址

主存的每个字块都和Cache的字块是相对应的,字块标记位是一样的。怎么理解这张图呢,

所以其实主存对应的Cache 中的块就是 主存字块%cache总字块数

2>全相联映射

主存物理地址 = 标记+块内地址

就是全部随便映射

3>组相连映射

主存物理地址 = 块号+组号+块内地址

9.2 映射方式与计算

不论是哪种相联方式,都有块内地址,区别就在看前面怎么分。

​​​​​​​全相联:主存物理地址 = 标记+块内地址

标记就是它唯一的标识

直接    :主存物理地址 = 标记+cache行号+块内地址

其实他也和组相联挺像的,就是一行就是一组,所以标识是标记➕行号

组相联:主存物理地址 = 标记+组号+块内地址

几个一组就是几路组相联 

前面我们学过:地址线和数据线的位数共同反应存储芯片容量,因此

主存容量为512KB时,512K*1B =  2^19K*1B,所以此时有19根地址线。

并且题目问地址有多少位时,也就是问有多少根地址线。

默认按什么编址看题目,如果题目是每个字块16B,那就是按字节编址

知道了以上这些,开始做题: 

主存容量为512KB,Cache容量为4KB​​​​​,每个字块16个字,每个字32位

(1)Cache地址有多少位?可容纳多少块?

(2)主存地址有多少位?可容纳多少块?

(3)直接映射方式中,主存第几块映射到Cache第5块?

(4)直接映射时,主存各段位数。

(4)默认按字编址

9.3 Cache替换策略 

1. Cache命中率a

Cache总命中次数位n,访问主存次数为m,则

a= n/(n+m)

命中率与Cache的容量与字长有关。

2. 访问效率e

e = 访问Cache的时间/平均访问时间

设命中率为h,访问Cache的时间为t,访问主存为T则

e = t/(h*t + (1 - h)*T)

9.4替换策略

1. 先进先出FIFO

2.近期最少使用LRU​​​​​​​

要最少使用,还要是离现在最远的近期,比如容量为5,放了 1 2 3 4 5 ,要放6,但是没地方了,如果近期只用过45那就替换1​​​​​​​​​​​​​​

3.随机法

十、辅助存储器

 辅存与主存相比,容量大速度慢,属于“非易失性”存储器,主存大多由半导体芯片组成,信息不易保存,属于“易失性”存储器。我们下面主要学习磁表面存储器。磁表面存储器通过磁头和记录介质相对运动,给写入线圈不同方向的电流,进行读和写操作。

在磁盘存储器中,扇区是磁盘寻址的最小单位。属于直接存取设备,磁盘存储器还分为硬磁盘存储器软磁盘存储器,硬就是固定磁头固定盘,软就是活动头,可更换盘片。

在磁带存储器中,磁带与主机之间信息交换的​​​​​​​最小单位是记录块。属于顺序存取设备。

10.1 磁表面存储器的主要技术指标 

1.记录密度 

是单位密度记录的二进制信息。磁盘用道密度表示。道密度 = 1/道距 (道距就是两个圈之间的距离)。

磁带用位密度表示,位密度 = 每个道的总位数/同心圆中最小的周长。

 2.存储容量

存储容量是存储二进制的总位数。 存储容量 = 盘面数*磁道数*每个磁道上记录的二进制代码数。

3.平均寻址时间

磁盘采用直接寻址的方式。平均寻址时间 = 平均等待时间+平均寻道时间。 (平均等待时间=(最大等待时间+最小等待时间)/2)

4.数据传输率 

数据传输率 = 记录密度*记录介质的运动速度 

5.误码率

为了减少出错率,一般采用CRC循环冗余码进行验证。 

十一、 循环冗余校验码

四个步骤:

1.信息码(题目给的)

2.生成多项式(可能题目直接给,可能自己根据系数推)

3.校验码位数(多项数最高项是几到时候就留几位余数加在信息码之后)

5.多项式对应二进制数(可能是题目给,可能是自己根据多项式推)

6.(信息码+校验码位数个0)/多项式对应二进制数

例:已知信息码为1100,试用生成多项式G(X)=1011将其编成CRC码。

解:1. 信息码:1100

2.生成多项式:

G(x) = X^3+X+1

3.校验码位数:最高项次数是3,所以校验码为3位

4.多项式对应二进制数:1011

注意⚠️⚠️⚠️:1️⃣加减就是求异或,相同为0不同为1

2️⃣除法就是看余数除除数位数够不够,够就是1,不够就是0

5.(信息码+校验码位数个0)/多项式对应二进制数:

1100 000 / 1011

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值