26考研 | 王道 | 计算机组成原理 | 三、存储系统
文章目录
- 26考研 | 王道 | 计算机组成原理 | 三、存储系统
- 3.1 存储系统基本概念
- 3.2 主存储器
- 1. 主存储器的基本组成
- 2. SRAM与DRAM
- 1.DRAM和SRAM对比
- 2.DRAM的刷新
- 3.DRAM的地址线复用技术
- 3. 只读存储器ROM
- 4.双端口RAM和多模块存储器
- 3.3 主存储器与CPU的连接
- 1.位扩展
- 2.字扩展
- 3.字位同时扩展
- 3.4 外部存储器
- 1. 磁盘存储器
- 磁盘阵列
- 2. 固态硬盘SSD
- 3.5 高速缓冲存储器
- 1.基本原理
- 2.Cache和主存间的映射方式
- 3. Cache的替换算法
- 4. Cache写策略
3.1 存储系统基本概念
相联存储器的基本原理是指把存储单元所存的内容的某一部分作为检索项去检索该存储器,并把存储器中与该检索项符号的存储单元内容进行读出和写入。所以是按内容或者地址进行寻址的,价格比较昂贵
一般用来制作TLB,相联Cache等
存储器的层次化结构
主存和辅存之间的数据调动是由硬件和操作系统共同完成的,仅对应用级程序员透明
存储器的分类–层次
存储器的分类–存储介质
- 半导体存储器:主存、Cache
- 磁表面存储器:磁盘、磁带(以磁性材料存储信息)
- 光存储器:光盘(以光介质存储信息)
存储器的分类–存取方式
相联存储器既可以按地址又可以按内容寻址。
存储器的分类–信息的可更改性
CD-ROM是只读型光盘存储器,不属于只读存储器ROM
存储器的分类–信息的可保存性
RAM都是易失性存储器;
ROM都是非易失性存储器;
存储器的性能指标
3.2 主存储器
1. 主存储器的基本组成
基本的半导体元件及原理
注:MOS管可理解为一种电控开关,输入电压达到某个阈值时,MOS管就可以接通。
存储器芯片的基本原理
片选线作用:
一个内存条可能包含多块存储芯片,比如一共8块,而我们想要的数据存在第5块芯片里面,那么我们拿数据的时候就要让第5块芯片工作而其他的不工作。CS给予低电平,其他芯片为高电平。
译码驱动:
其实就是在译码器和存储矩阵中间加了一个驱动,让译码器传过来的电信号更加稳定的
寻址
字节地址左移两位就是对应的字的地址
比如1号字节是 1,左移两位就是100,就是4,而按字寻址的编号2对应的就是字节寻址的编号4
2. SRAM与DRAM
SDRAM依旧是DRAM,所以依旧要刷新的
1.DRAM和SRAM对比
3.2.1 的主存储器的基本组成部分就是那DRAM举例子的,可以回看一下
RAM属于易失性半导体,SRAM和DRAM区别在于是否需要动态刷新
DRAM芯片:使用栅极电容存储信息
SRAM芯片:使用双稳态触发器存储信息
双稳态触发器这个图做个了解就行
SDRAM是同步DRAM芯片,与传统的异步DRAM不同。SDRAM与CPU的数据交换同步与时钟信号,并且以CPU-主存总线的最高速度运行,而不需要等待插入状态
而传统的DRAM中,CPU将地址和控制信号送入存储器后,需要经过一段延迟时间数据才能读出或者写入。在此期间,CPU不断采样DRAM的完成信号,在读写完成前,CPU不能干别的,降低了CPU的执行速度
而SDRAM在系统时钟控制下进行数据的读出和写入,它将CPU发出的地址和控制信号锁存起来,经过指定的时钟周期后再响应,此时CPU可以执行别的操作
2.DRAM的刷新
为什么要用行列地址(二维)?而不是用行地址或者列地址(一维)?
如果是一维的话,加入地址线有20位,那就需要220这么多个选通线才能连接到对应的存储单元
但如果是二维的话,即有行和列来确定一个存储单元,那行和列分别只需要210个选通线即可
即可以减少选通线的数量,使得电路变得简单和清晰
分散刷新不存在死区,因为把刷新时间算到存取周期里面去了,所以存取周期会变长。
异步刷新虽然缩短了死时间,但是死时间依然存在
CPU可以在死区时间的时候去做运算(比如译码阶段),然后不是死区的时间来读写
一次完整的刷新过程只需要占用一个存取周期(书上P93页15题)
3.DRAM的地址线复用技术
行/列缓冲器通常使用SRAM实现
同时送行列地址,需要8根地址线。两次送只需要4根地址线。
地址线复用技术:地址线是原来的1/2(行和列相等)且地址线分行、列两次传送。第一次送行地址到行地址缓冲器,第二次送列地址到列地址缓冲器,然后分别送到对应的译码器。
突发传输方式:在寻址阶段给出数据的首地址,在传输阶段可传送多个连续存储单元的数据
3. 只读存储器ROM
RAM和ROM可以统一编址。比如主存就是
易失性说的是断电后数据会消失
EPROM不能作为随机存储器。
UVEPROM要擦除只能选择全部擦除或者不擦除,不能擦一部分剩下的不擦除
闪存存储元件由MOS管组成,是一种半导体存储器,采用随机访问方式,可替代计算机外部存储器
说主存不是光有内存条这个RAM,还有主板上的ROM芯片,也是主存的一部分
4.双端口RAM和多模块存储器
单纯的扩容的意思是说,高位交叉编制没有加快访存的速度,即CPU在恢复时间内不能访问正在恢复的内存条的情况没有被改善,而低位却有效改善了这个问题,加快了访存速度
连续访问者五个地址的数,分别是编号0,1,2,3,4
对于高位编址来说,这五个数据都在M0内存条上,而读或写完一个数据以后就要等待恢复时间,所以花费的时间就长很多
而对于低位编址来说,0在M0,1在M1,2在M2,3在M3,4在M1。那我们花r的时间读完M0上面的0就可以立马去读M1上的1,而不需要等M0恢复,从而节省了很多的时间。
为什么讨论的是连续访问(连续地址)的情况?因为很多情况下就是访问连续的地址比如数组
m=T/r的时候就是完美衔接,这个时候就是最好的情况,没有闲置也不用等待,而且存储体的个数也最少,成本就低
对于灵活性
来说,多体比单体好一些,比如读取,2,3,4,5这四个存储单元的数据
多体会直接读取这四个,而单体就会把第一行和第二行全给读下来,那么0,1,6,7这四个就是多读的,其实不太需要这四个
对于速度
而言,两者相差不大
对于上面的多体,有m个存储体,而m=T/r的时候最好,在一个存取周期T内也是读出m个字
对于下面的单体,每个存储单元有m个字,在一个存取周期T内一次也是读出m个字
相同主频:主频不一样的话,高的主频会向下兼容,和低的主频保持一致,这样其实就相当于白花了很多钱
相同容量:在两者容量相同的地方,还是双通道,但是在低容量没有了的地方,而高容量内存条还有内存的地方,那其实就相当于单通道了。用游戏来说的话,如果正好放在了低地址的地方,即双通道的地方,那运行速度就快,但是如果不巧被放到了高地址的地方,那就还是单通道,性能会很不稳定
如图:左边只有三个存储单元,右边有8个,就会出现上面的情况
3.3 主存储器与CPU的连接
现在的计算机MAR、MDR都在CPU中,而不再主存中
8K*8位含义
8K是存储单元数量,是213,需要13根地址线
8位是每个存储单元存储的bit位数
1.位扩展
2.字扩展
用这种方法,CPU有n条多余的地址线,只能有n个片选信号
并且把两块芯片看做一个整体的话,那么开头的地址只能为01或者10,不能用00或者11
可以做如下的优化(译码片选法),就是在第二块的片选线上加个非门,这样的话地址空间就是连续的了,从全0到全1都可以用了
考试可能不选A13和A14这两个连着的,可能选A13和A15作为译码器的输入,那么A14是多少就无关紧要了
那么就会发现多出来了一倍的地址,全都映射到这四块芯片中了,而四块芯片肯定装不下,所以实际中不可能用这种设计
3.字位同时扩展
一共四组芯片,一组2个芯片。
1.原来是一块芯片,16K*4位
2.位扩展得到每组的芯片个数,就是目标位数除以单个芯片的位数,8/4=2,所以每组是2个新盘
经过位扩展后,变成一组芯片,16K*8位
3.字扩展得到一共要几组,就是目标存储单元数量除以一组的单元数量,64K/16K=4,那么一共需要4组
经过字扩展后,把16K*8位变成64K*8位的
有3个使能信号,那么必须同时满足才可以工作,有一个不满足就不可以工作
也就是只有100才会正常工作,而其他的001,101之类的都是非法信号,会让所有的结果都为0,再取反那就都是1然后输出出去了
这样可以让CPU使用使能端控制片选信号的生效时间
MREQ,低电平有效,主存请求信号, 当CPU想要访问主存的时候就会让它有效
它有效才会让译码器使能,也就是让译码器有效
CPU访存是这样的:
1.先发送出去地址信号,由于地址信号都是电信号,所以要先等一下让它稳定
2.等到地址信号稳定以后让MREQ有效,然后片选线才会有效
这样保证了主存收到的地址信号一定是稳定的
对于左下角的图,中间有上上下下的,那说明传过去的电信号有1有0,就是有高电平也有低电平
上面提到,发送出去地址信号以后会等一段时间。所以图中地址有效的时候CS并不是立马开始有效,而是中间间隔了一段时间才开始有效,这中间这段时间就是等待的时间。然后在地址有效时间Tco内把数据输出出去。
注:
灰色的部分是无效的地方,白色的地方才是有效的地方
3.4 外部存储器
1. 磁盘存储器
1、磁盘设备的组成
2、磁盘的性能指标
rN是一个理论最大值
格式化容量会有一部分容量用于别的用途,而非格式化容量是该磁盘的二进制bit存储上限,所以格式化容量比非格式化容量要小
每个磁道记录信息的信息量是相同的,并不是圆的半径越大信息量越多
磁盘控制器延迟:
(有的题有,有的题没有)电子部件接收主机信号,然后向磁盘发出读写信号的时间
如果数据是并行传给磁盘的,那在这之前还要经过一个串并行转换电路才行,因为磁盘只能串行的工作
磁盘阵列
越后面的磁盘阵列信息冗余越少,安全性和可靠性越高,成本也越低
RAID0:
就是RAID0是一个逻辑盘,是通过磁盘1和磁盘2映射而来,比如RAID0的第一个存储单元的数据存放在磁盘1的第一个单元和磁盘2第一个单元,那我们读取逻辑盘的时候就相当于有两个磁盘同时为我们工作,可以实现并行访问,提高速度
但如果物理磁盘有比特跳变之类的错误的话,RAID0也发现不了
RAID1
:存了两份一样的数据,那就是有冗余了,两份可以对比着看,有错误可以发现,所以是有校验的。也实现了并行访问,但是存储空间有些浪费
0-3只存储比特数据,4-6存储校验数据
这样的话浪费的空间没有RAID1那么多
2. 固态硬盘SSD
闪存芯片可以分为很多块,每个块可以分为很多页
每个块相当于磁盘中的磁道,每个页相当于磁盘中的块/扇区
也就是说SSD的读写的基本单位是页也不是块
3.5 高速缓冲存储器
1.Cache里面存储的是主存的副本。所以如果Cache有40KB,主存有200MB
那存储系统的容量还是200MB,而不是200MB+40KB,因为Cache存的仅仅是副本而已
2.Cache访问失效的时候,通常不仅要像CPU传递消息,还要将信息写入Cache,传递消息的数据宽度是字,写入信息的数据宽度是块。
CPU与cache或者主存信息信息交互的单位是字,而Cache与主存间信息交互的单位是块
3.Cache的功能全部由硬件实现
4.多级cache中,算缺失率的时候,只需要看到最低一级的cache的时候还有多少没有命中
5.Cache中地址映射表的大小就是(有效位+标记位)*块数
6.逻辑地址的页和物理地址的块对应,映射的话就是逻辑的页映射到物理的块上面去
7.对于有高速缓存,主存,硬盘构成的三级存储体系,CPU直接根据主存物理地址进行访问
8.
标记位前面可能还有有效位、脏位、替换控制位,通过这四个位来算Cache除了数据部分还有得有多少的容量
不管什么方法都会有有效位,写回法一定会有脏a位。替换控制位很少见
9.组相联映射中,是几路组相联就有几个比较器。这个比较器是来看给出的主存地址具体在组内的哪个块
所以 比较器里面存的就是标记位(不包含组号),因为一组有 的块数和路数相同,所以比较器的个数就是和路数相同的,一共要比较的次数也和路数一样
1.基本原理
按照行优先存储的,如果循环体按照列优先进行访问的话,那么会比按照行优先进行访问的慢很多,因为按照行优先会有很多地址可以映射到cache中
2.Cache和主存间的映射方式
其实就是主存容量是Cache的多少倍,如果主存容量是cache的4096=212倍,那么标记位数就是 12
也就是得标记4096个位置才行
比如图中的标记位数就是 256MB/(8*64B)=219次
有效位和标记位组成地址映射表,其大小就是(有效位数+标记位数)* cache块数
3. Cache的替换算法
4. Cache写策略
阻塞的意思是cpu必须阻塞等待