408计算机组成原理学习笔记——存储系统

目录

1.存储器的基本概念

1.1.存储器的分类

1.1.1.按作用分类

1.1.2.按存取方式分类

1.1.3.按信息的可更改性

1.1.4.按信息的可保存性

1.2.存储器的性能指标

2.主存储器

2.1.主存储器的基本组成

2.1.1.基本半导体元件及原理

2.1.2.存储芯片的基本原理

2.1.3.寻址

2.2.SRAM和DRAM

2.3.ROM

2.4.双端口RAM

2.5.多模块存储器​编辑

3.主存容量的扩展

4.外部存储器

4.1磁盘存储器

4.1.1.磁盘设备的组成

4.1.2.磁盘的性能指标

4.1.3.磁盘地址

4.1.4.硬盘的工作过程

4.1.5.磁盘阵列

4.2.固态硬盘SSD

5.高速缓冲存储器(Cache)

5.1.cache的基本概念和原理

5.1.1.程序访问的局部性原理

5.1.2.cache的基本工作原理

5.2.Cache和主存的映射方式

5.2.1.全相联映射

5.2.2.直接映射

5.2.3.组相联映射

5.3.Cache替换算法

5.3.1.随机算法(RAND)

5.3.2.先进先出算法(FIFO)

5.3.3.近期最少使用算法(LRU)

5.3.4.最不经常使用算法(LFU)

5.4.Cache写策略

6.虚拟存储器

6.1.页式存储器

6.2.虚拟存储器


1.存储器的基本概念

1.1.存储器的分类

1.1.1.按作用分类

1.辅存中的数据只有调入主存后才能被CPU访问

2.cache——主存:解决主存和CPU速度不匹配的问题

主存——辅存:实现虚拟存储,解决主存容量不够的问题

3.cache和主存的数据交换:由硬件完成

主存和辅存的数据交换:由硬件+操作系统完成

1.1.2.按存取方式分类

1.随机存取存储器(Random Access Memory):读写任意一个存储单元所需时间相同

2.顺序存取存储器(Sequential Access Memory):读写时间取决于存储单元所在位置

3.直接存取存储器(Direct Access Memory):选取信息所在区域(随机存取特性),然后顺序存取(顺序存取特性)

4.相联存储器(Associative Memory):按照内容检索存储位置(按照内容访问,例:块表)

1.1.3.按信息的可更改性

1.读写存储器(Read/whrite Memory):可读可写(内存、Cache)

2.只读存储器(Read Only Memory):只能读不能写(BIOS)

1.1.4.按信息的可保存性

1.破坏性读出:信息读出后,原存储信息被破坏(DRAM)

2.非破坏性读出:信息读出后,原存储信息不被破坏(SRAM)

1.2.存储器的性能指标

1.存储容量:存储字数 * 字长(MDR位数)(如1M * 8位)

2.存储速度(数据传输率):数据宽度(存储字长,MDR位数) / 存储周期

2.主存储器

2.1.主存储器的基本组成

2.1.1.基本半导体元件及原理

1.MOS管:半导体,通过向其输入电压控制其开关

电容:存储电压,低电压时为0,高电压时为1

当MOS管接通时,电容内的电压通过该电路传出的电压表示二进制的0/1

2.多个存储元连接后,可以一次读写多个二进制数据

红线连接MOS管,当给红线电压时,该线所连接的MOS管都会被导通,则电容就会从绿线导出,通过检测绿线就可以知道整行存储元存储的二进制信息

存储单元:由一整行存储元构成

存储体:由多个存储单元构成

存储字:一次能够读出的二进制

存储字长:一次能够读出的二进制的位数

2.1.2.存储芯片的基本原理

1.MAR的位数决定存储单元的个数,译码器根据CPU通过地址总线给MAR送来的地址(一个地址对应一条输出线),控制相应地址(存储单元)的字选线(红线)高电平,然后通过数据线(绿线)读出该地址的数据,送入MDR中,最后通过数据总线将数据输出

2.控制电路的作用是只有当前操作的电流稳定时,才进行下一步操作

3.片选线:控制是否对该存储单元进行操作(引脚一根)

读控制线/写控制线:该操作是读数据还是写数据(当读写合并时,引脚1根;分开时,引脚2根)

4.总容量 = 存储单元个数 * 存储字长

8K * 8位:存储单元个数为8K个,存储字长为8bit,即 2 ^ 13 * 8 bit

64K * 16位:存储单元个数为64K个,存储字长为16bit,即 2 ^ 16 * 16 bit

2.1.3.寻址

1.一行为一个存储字,字长为4B,总容量为1KB,则共有256个字,即256行

2.按字节寻址:一个字节对应一个地址,分为1K个单元,每个单元1B(需要10根地址线)

3.按字寻址:一个字对应一个地址,分为256个单元,每个单元4B

4.按半字寻址:半个字对应一个地址,分为512个单元,每个单元2B

4.按双字寻址:两个字对应一个地址,分为128个单元,每个单元8B

2.2.SRAM和DRAM

1.DRAM:Dynamic,动态RAM,用于主存

SRAM:Static,静态RAM,用于CACHE

2.DRAM栅极电容,SRAM双稳态触发器

DRAM:破坏性读出,读出后应重写(读写速度慢),集成度高(简单)

SRAM:非破坏性读出,无需重写(读写速度快),集成度底(复杂)

4.DRAM需要刷新,而SRAM不需要(刷新不需要CPU参与)

DRAM电容中的电荷会流失(只能维持2MS,因此2MS内必须刷新一次),SRAM只要不断电,触发器的状态就不会改变

①刷新周期2MS

②以行为单位,每次刷新一行存储单元

采用行列地址,可以将选通线的数量减少一半

③通过硬件刷新,读出一整行的数据然后重新写入,因此占用一个读/写周期

④异步刷新:2MS内刷新每行刷新一次即可,刷新的时间无法访问存储器

3.DRAM和SRAM都是易失性存储器,断电后信息消失(区别于破坏性)

4.SRAM同时送行列地址(集成度低,位数少),DRAM行列地址分开送(集成度高,位数多)

DRAM采用地址复用技术,即行/列地址分开送,通过行/列地址缓存器实现,设原来需要n位的地址线,通过分开送,使得地址线的位数减少为n/2位,引脚也相应减少为n/2

2.3.ROM

1.ROM为非易失性存储,断电后不会消失(RAM为易失性)

2.MROM:任何人不可以改写

PROM:写一次后不可更改

EPROM:支持擦除数据,可进行多次重写

FLASH:闪存。可进行多次快速擦除重写,写比读慢(写之前需要擦除)(U盘)

SSD:固态硬盘。可进行多次快速擦除重写

3.逻辑上RAM和ROM统一编址

2.4.双端口RAM

支持两个CPU同时访问RAM

2.5.多模块存储器

1.单体多字存储器

使用同一套电路控制(类似位扩展) 

2.多体并行存储器

每个模块可以相互独立工作

①高位交叉编址:高2位用来区分访问哪个存储体。连续的地址存放在同一存储块中,访问连续地址时,总是在同一个存储块内访问,当这个存储块的最后一个地址被访问完后,才开始对下一个存储块进行访问

当存取时间远小于存取周期时,将会严重影响存取效率(对同一存储体进行存取的时,需要等待上一次对当前存储体存取周期结束)

设访问存取周期为T,存取时间为r,则存取n个存储字的时间为nT(每次都需要等待T才能进行下一次存取)

②低位交叉编址:低2位用来区分访问哪个存储体。连续的地址存放在相邻的存储块中,这样在访问连续地址时,通过可以交替访问不同的存储块提高存储效率(不需要或者降低等待存取周期的时间)

设访问存取周期为T,存取时间为r,则存取n个存储字的时间为(n - 1)r + Tr(n - 1次存取,每次存取时间r,加上最后一次存取需要一个完整的存取周期T)

③模块的数量m:m ≥ T / r(T为存取周期,r为总线传输周期/存取时间)

3.主存容量的扩展

1.位扩展:数据总线宽度>存储芯片字长

扩展方式:将多个存储芯片的地址段、片选端和读写控制端并联(同时对所有芯片操作),数据段分别引出(数据总线可以把每一个芯片的数据送给CPU)(地址线连接相同,数据线连接不同)

上图中将8个8K * 1位(可以同时读写1位)的存储芯片位扩展为8K * 8位(可以同时读写8位)的存储器,总容量位8KB

2.字扩展:增加存储器中字的数量,而位数不变

字扩展将地址线、数据线、读写控制线并联,通过片选线(连接译码器)控制读写哪个存储芯片(地址范围)

图中A0 - A12位低13位的地址(片内地址),A13 - A14通过译码器来控制选择读取哪个芯片(当A13A14 = 00时,译码器输出端0有效,读取芯片0)

此时,A15无论输出什么都无效,只看A0 - A14

芯片1地址:00 0000 000000000 - 00 1111111111111

芯片2地址:01 0000 000000000 - 01 1111111111111

芯片3地址:10 0000 000000000 - 10 1111111111111

芯片4地址:11 0000 000000000 - 11 1111111111111

3.字位同时扩展

字位同时扩展既增加存储字的数量(字扩展),又增加存储字长(位扩展)

4.外部存储器

4.1磁盘存储器

4.1.1.磁盘设备的组成

磁盘可以由双面构成

4.1.2.磁盘的性能指标

1.格式化容量 < 非格式化容量(格式化后会保留一些备用空间作为坏点的替换)

2.每个磁道能存的数据量相等

3.旋转延迟时间通常取旋转半圈的平均时间

4.1.3.磁盘地址

4.1.4.硬盘的工作过程

来自总线的控制数据是并行的,因此,需要一个并行转串行的电路对磁盘进行控制;磁盘取出数据后,再通过一个串行转并行的电路将数据送往总线

4.1.5.磁盘阵列

类似低位交叉编址,将逻辑上连续的地址,物理上分散存储

4.2.固态硬盘SSD

1.由闪存翻译层和存储介质组成

闪存翻译层:负责找到逻辑块号,然后再找到对应的页

存储介质:由多个存储芯片构成;存储芯片由多个块构成;块由多个页构成

2.读写以页为单位(相当于磁盘的扇区)

3.支持随机访问(SSD采用电路,机械硬盘采用移动磁臂寻找磁道)

4.以块为单位擦除:若想对A页写入数据,则A页需要为空,若A不为空时,则需要将包含页A的块B的除了页A的部分复制到空块C中,再对C中相对于原来页A的页中写入相应数据(读比写快)

5.块被擦除次数过多,则可能会坏掉(机械硬盘不会)

磨损均衡:平均分布擦除的块,提升寿命

5.高速缓冲存储器(Cache)

5.1.cache的基本概念和原理

5.1.1.程序访问的局部性原理

1.空间局部性原理:未来使用的信息可能和正在使用的信息很可能再存储空间上是相邻的(图中二维数组在存储时是一维的方式,遍历数组时,访问的是连续的地址空间)(顺序访问)

2.时间局部性原理:未来使用的信息可能和正在使用的信息是相同的(循环结构)

5.1.2.cache的基本工作原理

cache仅保存主存中最活跃的若干块的副本,预测CPU在未来将会访问的数据,将其放入Cache

1.两种访问方式:

①先访问cache,cache未命中再去访问主存

②同时访问cache和主存,cache命中则停止访问主存(平均访问时间更低)

若访问主存的块,则一定会将改块立即调入cache(复制)

2.主存与cache之间以块为单位进行数据交换

5.2.Cache和主存的映射方式

有效位为1时,标记位才有效

5.2.1.全相联映射

①主存的块存进CACHE时,可以存放在任意位置(Cache存储空间利用率高,但是,可能需要查找所有块的标记,查找速度最慢),其有效位置为1,标记位为该块在主存中的块号

②在访问CACHE进行匹配时,不仅要进行标记位的匹配,还需判定有效位是否为1

Ⅰ标记位匹配成功且有效位为1,则访问该CACHE块的块内地址

Ⅱ标记位匹配失败或有效位为0,则访问主存中相应块号的块内地址

5.2.2.直接映射

①如图,Cache中有8块,可以用3位二进制数表示。因此,根据主存块号的末尾3位可以唯一确定该主存块将会存入Cache的哪个块(唯一确定Cache内块号,查找速度最快,但是,Cache里利用率最低),若该块原先由数据,则直接替换;并且,标记位也可以将末尾的3位省略,仅需19位

②先根据主存块号的末位3位确定该主存块在Cache的位置,然后比对该位置的标记号是否跟前19位相对应,并且有效位是否为1

5.2.3.组相联映射

①如图,Cache中有4组,可以用2位二进制数表示。因此,根据主存块号的末尾2位可以唯一确定该主存块将会存入属于Cache的哪个组,该块可以存放在该组中的任意位置(集合前两种映射的有点,综合效果最好);并且,标记位也可以将末尾的2位省略,仅需20位

②先根据主存块号的末位2位确定该主存块在Cache的组号,然后比对该组的中每块的标记号是否有跟前20个块号相匹配,并且有效位为1的块

③m路组相联映射:Cache中每组有m个块

5.3.Cache替换算法

1.全相联映射中,只有完全满了才需要替换Cache内的某一块,需要替换算法

2.直接映射中,每个主存块是唯一确定Cache内的位置,非空直接替换,无需替换算法

3.组相联映射中,只有分组满了才需要替换分组内的某一块,需要替换算法

5.3.1.随机算法(RAND)

Cache已满,随机选择一块进行替换

5.3.2.先进先出算法(FIFO)

Cache已满,替换最先被调入Cache的块

可能发生抖动 

5.3.3.近期最少使用算法(LRU)

为每个Cache设置计数器,用于记录该块多久没被访问,需要替换时,替换计数器中的最大的块

1.若一个计数器的值为3(2 ^ n - 1)时,则不需要进行 + 1操作,仅对其他计数器进行 + 1

2.LRU考虑到了局部性原理

3.若频繁访问的主存块数量 > Cache的块数,仍然可能发生抖动

4.计数器仅需n位

5.3.4.最不经常使用算法(LFU)

为每个Cache设置计数器,用于记录该块被访问过几次,需要替换时,替换计数器中的最小的块1.新调入Cache的块,计数器被置为0

2.若当前有多个计数器是相同的最小值,则对这几个块采用FIFO或替换行数最小的策略

3.计数器可能需要很多位,且并没有很好的遵循局部性原理

5.4.Cache写策略

1.写命中 

①写回法(write-back):只会对Cache内容进行修改,当该块被替换回主存时候,才回将其写回主存,这样就会导致同一个块的Cache和主存内的内容不一样,因此,需要添加一个脏位用来表示该块在Cache中是否进行修改

这种方法可以减少访存次数(不需要每次都对主存的内容进行修改)

②全写法(write-through):对Cache内容进行修改的同时,对主存的内容也进行修改,这样就能保证Cache和主存内容一致(无需脏位)

这种方法保持内容的一致性,但是会增加访存次数

采用写缓冲(SRAM实现),写缓冲的作用是能够缓解主存和CPU的速度差异

2.写不命中

①写分配法(write-allocate):当写不命中时,先将该块从主存调入Cache中,然后搭配写回法(在Cache中进行修改)

②非写分配法(not-write-allocate):当写不命中时,CPU直接对主存的块进行修改,而不调入Cache中(此时,只有读操作才将主存块调入Cache中),搭配全写法

6.虚拟存储器

6.1.页式存储器

1.Cache和主存的数据交换是以块为单位,在访问某个主存块后,根据局部性原理,可以把该主存块调入Cache的某个位置中(根据Cache和主存不同的映射方式)使得下次能够更快的访问该块

2.进程会被分成若干个大小相等的页,每个页的大小和块相同,并且对每个页编号,实现离散存储

3.Cache和主存的分块是物理上的;进程的分页是逻辑上的,对程序员透明,是操作系统的行为

4.逻辑地址(虚地址):程序员视角的地址(CPU执行的机器指令中的地址是逻辑地址);物理地址(实地址):实际在主存的地址

5.操作系统负责将用户编程时使用的逻辑地址转换为物理地址:

①该程序共4KB = 2 ^ 12 B,即逻辑地址(程序员使用的地址)是12位:操作系统把该程序分成4个大小为1KB的页,即需要首2位表示逻辑页号(4个页),末10位表示页内地址(1KB)

②主存被分为4096个块,即需要12位表示主存块;每个块为1KB,需要10位表示页内地址

③操作系统进行地址转换时,通过逻辑页号找到其对应的主存块(通过查询页表:一种数据结构,记录每个逻辑页号对应的主存块号),然后用该主存块的主存块号替换其逻辑页号,即用主存块号+页内地址,就能得到目的地址

6.页表存在主存中,因此,每次CPU进行地址转换查询页表就需要进行一次访存;页表中的一行被称为页表项,每个页表项中记录着某个逻辑页号和主存块号的映射关系

7.地址变换过程:

①CPU将指令中的逻辑地址拆分为逻辑页号和页内地址两个部分

②通过页表基地址寄存器找到页表,并且查询页表找到①中逻辑页号对应的物理地址:页表基地址寄存器指明页表在主存中的存放地址(通过页表基地址表示),每个页表项的大小相同,得到页表基地址后,就可以找到任一特定的逻辑页表对应的页表项

③用主存块号拼接①中页内地址得到最终地址

④访问物理地址:先访问CACHE,CACHE如果未命中访存

8.引入快表的原因:每次查询页表都需要访问主存,可以用Cache的思想进行改进,即基于局部性原理,将页表中的某些页表项放进更高速的存储器中,以此提升地址转换速度

9.加入快表后的转换过程:先在快表中查找该逻辑页号对应的页表项的副本,快表未命中后再查询主存中的慢表,再将该页表项加入快表中

10.快表和CACHE的区别:快表存储的是页表项的副本,目的是加快逻辑地址到物理地址的转换速度;CACHE存储器的是主存块的副本,目的是加快对物理地址的访问速度

11.快表查询速度大于慢表的原因:快表使用SRAM,慢表使用DRAM;快表是相联存储器,即可以根据内容寻访,而普通存储器是根据地址寻访

6.2.虚拟存储器

1.程序用到的部分调入内存,暂时用不到的部分不需要调入内存,仅存在于外存(类似CACHE之于内存,都是基于局部性原理选择部分数据调入)

2.需要对页表进行改造:增加有效位,作用是表示该页是否已经被调入内存;增加外存块号,将外存分成若干个和页大小相等的块,记录该页在外存中的实际地址,即块号;访问位,用于页面替换算法,作为主存满时选择哪个页面换出外存的根据;脏位,用于记录该块在调入主存期间是否被修改过

3.物理存储器即主存,磁盘存储即外存

4.段式虚拟存储器:将程序根据功能模块(逻辑关系)的不同划分

①段长:每个段大小不一

②段首地址:不再对主存分块(每个主存地址以B为单位),每个段可以储存在主存的任何地方

5.段页式:

 

  • 16
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值