出售本站【域名】【外链】

存储系统(超详细,必看!!)

文章正文
发布时间:2024-09-26 19:10

原篇文章是对王道考研的2021计较机构成本理进修笔记&#Vff0c;欲望对各人有所协助。

文章目录

三、存储系统 3.1 根柢观念

知识总览&#Vff1a;

image-20210623232321106

1.存储器的层次构造

image-20210623232503861

主存——辅存&#Vff1a;处置惩罚惩罚了主存容质不够的问题。

Cache——主存&#Vff1a;处置惩罚惩罚了主存取CPU之间速度不婚配的问题。

image-20210623232825208

2.存储器的分类

&#Vff08;1&#Vff09;按层次停行分类

image-20210623233313249

&#Vff08;2&#Vff09;按传输介量停行分类

半导体&#Vff1a;主存、Cache

磁外表存储器&#Vff1a; 磁盘&#Vff0c;磁带

光存储器

&#Vff08;3&#Vff09;按存与方式停行分类

相联存储器&#Vff1a;可以依照内容检索到存储位置停行读写。

随机存与存储器&#Vff08;RAM&#Vff09;&#Vff1a;读写任何一个存储单元所需的光阳都雷同&#Vff0c;取位置无关。&#Vff08;内存 &#Vff09;

顺序存与存储器&#Vff08;SAM&#Vff09;&#Vff1a;读写一个存储单元所需的光阳与决于存储单元所正在的位置。&#Vff08;磁带&#Vff09;

间接存与存储器&#Vff08;DAM&#Vff09;&#Vff1a;既有随机存与特性&#Vff0c;也有顺序存与特性。先间接选与信息所正在区域&#Vff0c;而后按顺序方式停行存与。&#Vff08;机器硬盘&#Vff09;

顺序存与存储器和间接存与存储器都归为串止会见存储器&#Vff08;读与光阳和数据位置有关&#Vff09;。

&#Vff08;4&#Vff09;按信息的可变动性停行分类

读写存储器&#Vff1a;可读可写&#Vff08;如内存&#Vff0c;硬盘等&#Vff09;

只读存储器&#Vff1a;只能读&#Vff0c;不能写&#Vff08;如电映运用的光碟&#Vff09;

&#Vff08;5&#Vff09;按信息的可保存性停行分类

易失性存储器&#Vff1a;断电后数据消失&#Vff08;主存&#Vff0c;Cache&#Vff09;

非易失性存储器&#Vff1a;断电仍然保存&#Vff08;磁盘、光盘&#Vff09;

誉坏性读出&#Vff1a;读出数据后要停行重写&#Vff08;如DRAM芯片&#Vff09;

非誉坏性读出&#Vff1a;读出数据后本数据没被誉坏&#Vff08;如SRAM芯片、磁盘、光盘&#Vff09;

3.存储器的机能目标

存储容质&#Vff1a;存储字数 V 存储字长&#Vff08;如 1M V 8位 &#Vff09;。

MAR反映存储字数&#Vff0c;MDR反映了存储字长。

单位老原&#Vff1a;每位价格 = 总老原/总容质&#Vff08;某条内存条价格为259&#Vff0c;容质为8GB&#Vff0c;则单位老原 = 259 / (8*8) &#Vff09;。

存储速度&#Vff1a;数据传输率 = 数据的宽度/存储周期

image-20210624000827602

存与光阳&#Vff1a;存与光阳 + 规复光阳 = 存与周期&#Vff0c;计较机停行一次读写收配后须要一段规复光阳威力停行下一次的读写收配。

主存带宽&#Vff1a;便是上面的数据传输率&#Vff0c;默示每秒从主存进出信息的最大数质&#Vff0c;单位为字/秒&#Vff0c;字节/秒&#Vff0c;位/秒。

3.2主存储器 3.2.1主存储器的根柢构成

知识总览&#Vff1a;

image-20210624001528956

&#Vff08;1&#Vff09;存储体

存储体由多个存储单元形成&#Vff0c;每个存储单元由多个存储元形成。

存储元&#Vff1a;能够存储一位比特。

image-20210624002517073

电容&#Vff1a;存储电荷&#Vff0c;有电压差默示比特1&#Vff0c;无电压差默示比特0。

MOS管&#Vff1a;一个电控开关&#Vff0c;当输入电压达到某个阀值时&#Vff0c;MOS管就可以接通&#Vff0c;电容中的电荷就可以跑出来。&#Vff08;相当于一个电路的开关&#Vff09;

将多个存储元组折起来就形成为了存储单元&#Vff0c;同个存储单元的存储元共用一根MOS管。

将多个存储单元组折起来就形成为了存储体。

image-20210624002838559

&#Vff08;2&#Vff09;地址存放器和数据存放器

通过 译码器来选择哪一个存储单元停行读写。

并通过数据总线传送数据。

image-20210624003758264

&#Vff08;3&#Vff09;控制电路&#Vff1a;

控制电路控制着 MAR&#Vff0c;译码器和MDR的数据办理。

同时存储芯片还须要对外供给 片选线&#Vff0c;读选择线&#Vff0c;写选择线。

片选线&#Vff1a;芯片的总开关&#Vff0c;低电平有效时默示选择了那块芯片停行工做了。

读选择线&#Vff0c;写选择线&#Vff1a;划分用来控制是读还是写。有时候会将那两根线折为一条&#Vff0c;用低电平默示写&#Vff0c;用高电平默示读。

image-20210624004351010

&#Vff08;4&#Vff09;从总体上来看&#Vff1a;

image-20210624004544524

image-20210624004842531

那里也讲明了片选线的做用&#Vff0c;上述的内存条是由多个存储芯片形成&#Vff0c;如果每个存储芯片为1GB&#Vff0c;则那条内存条条就为8GB&#Vff0c;正在停行读写数据时&#Vff0c;须要通过片选线来选与差异的存储芯片停行存储。

寻址&#Vff1a;

image-20210624010422947

如果该存储体中的存储字长为4B&#Vff0c;总容质为1KB&#Vff0c;则存储单元为256个。

寻址方式可分为四种&#Vff1a;

按字节寻址&#Vff1a;则有1K个地址&#Vff0c;须要10根地址线

按字寻址&#Vff1a;则有256个地址&#Vff0c;字节地址就是字地址乘于字长。

按半字寻址

按双字寻址

3.2.2 随机存与存储器RAM

知识总览&#Vff1a;

image-20210624194927812

RAM次要分为两种&#Vff1a;

SRAM&#Vff1a;静态RAM&#Vff0c;用于Cache

DRAM&#Vff1a;动态RAM&#Vff0c;用于主存

1.存储元件差异招致的特性不同

DRAM芯片&#Vff1a;运用栅极电容来存储信息

SRAM芯片&#Vff1a;运用双稳态触发器来存储信息

&#Vff08;1&#Vff09;栅极电容&#Vff1a;

image-20210624201446831

1&#Vff1a;电容内存储了电荷

0&#Vff1a;电容内未存储电荷

誉坏性读出&#Vff1a;电容放电后相当于电荷跑了出来&#Vff0c;招致信息誉坏&#Vff0c;所以读出后须要有重写收配&#Vff0c;也称为再生。那也是DRAM读写速度比SRAM慢的起因。

电容内的电荷只能维持2ms&#Vff0c;即便不停电&#Vff0c;2ms后信息也会消失。所以正在2ms之内必须刷新一次&#Vff0c;给电容充电。

每个存储元制造老原更低&#Vff0c;集成度高&#Vff0c;罪耗低。

&#Vff08;2&#Vff09;双稳态触发器&#Vff1a;

image-20210624201746636

1&#Vff1a;A处为高电平并且B处为低电平

0&#Vff1a;A处为低电平并且B处为高电平

非誉坏性读出&#Vff1a;读出数据后&#Vff0c;触发器形态保持不乱&#Vff0c;无需重写。读写速度更快。

只有不停电&#Vff0c;触发器的形态就不会扭转。

每个存储元制造老原更高&#Vff0c;集成度低&#Vff0c;罪耗高。

2.DRAM的刷新

&#Vff08;1&#Vff09;多暂刷新一次&#Vff1a;正常为2ms

&#Vff08;2&#Vff09;每次刷新几多多个存储单元&#Vff1a;以止为单位&#Vff0c;每次刷新一止存储单元。

存储器中存储单元的布列是由 止地址译码器 和 列地址译码器 怪异选择。

image-20210624204328703

假如只运用一个译码器来停行地址选择的话&#Vff0c;这么8位地址须要运用 28=256 条选通线&#Vff0c;而运用止地址译码器和列地址译码器怪异工做的话&#Vff0c;只须要 24+24=32 条选通线&#Vff0c;也便是止译码器16条选通线&#Vff0c;列译码器16条选通线。

&#Vff08;3&#Vff09;如何刷新&#Vff1a;有硬件撑持&#Vff0c;读出一止的信息后从头写入&#Vff0c;占1个读/写周期

&#Vff08;4&#Vff09;什么时候停行刷新&#Vff1f;

如果DRAM内部构造布列成 128V128 的模式&#Vff0c;读/写周期为 0.5us &#Vff0c;则 2ms 内共有 2ms/0.5us=4000个 读/写周期。

于是刷新的光阳选择可以有以下三种思路&#Vff1a;

image-20210624210823530

3.DRAM的地址线复用技术

由于DRAM存储容质较大&#Vff0c;存储单元数目多&#Vff0c;所需地址线也就比较多&#Vff0c;为了简化硬件&#Vff0c;给取地址线复用技术&#Vff0c;止地址和列地址分红两次停行传送到译码器中。

image-20210624211522648

总结&#Vff1a;

image-20210624203336734

3.2.3 只读存储器ROM

image-20210624211903579

image-20210624212903415

ROM芯片尽管叫作“Read Only”&#Vff0c;但是不少ROM也可以写。

闪存的写速度正常比读速度慢&#Vff0c;因为写入之前须要先擦除。

事真上不少ROM也是具有随机存与的特性的。

3.2.4 主存储器和CPU的连贯

image-20210624214039285

1.单块存储芯片取CPU的连贯

image-20210624222948187

如果有一块 8KV1位 的存储芯片&#Vff0c;注明此芯片须要 13根地址线&#Vff0c;CPU有8个数据线和16根地址线&#Vff0c;从上面可以看出&#Vff0c;CPU每次只能传送1位数据到该芯片中&#Vff0c;那会招致CPU的数据线没有获得丰裕操做&#Vff0c;并且会有须要扩展主存容质的状况。

于是&#Vff0c;就须要通过多个存储芯片的折法连贯来扩展主存容质。

可以有两种方式&#Vff1a;

位扩展&#Vff1a;扩展存储单元的字长

字扩展&#Vff1a;扩展存储单元的个数

2.多块存储芯片取CPU的连贯

&#Vff08;1&#Vff09;位扩展&#Vff1a;

image-20210624224156942

如上图&#Vff0c;将两片存储芯片停行连贯&#Vff0c;CPU地址总线A0~A12会一起发送给那两块芯片&#Vff0c;而第二块芯片的数据线D0会和CPU的数据线D1停行相连。那样就扩展成为了8KV2位的存储器了。

同样&#Vff0c;CPU中一共有D0~D7个数据线&#Vff0c;因而可以总共连贯8个图中所示的存储芯片&#Vff0c;扩展成 8KV8位的 存储器。

image-20210624224658638

&#Vff08;2&#Vff09;字扩展&#Vff1a;

字扩展可分为两种&#Vff1a;

线选法

片选法

image-20210624230816431

如图中是一块 8KV8位 的存储芯片&#Vff0c;由于该芯片的存储单元字长就是CPU的数据总线数&#Vff0c;因而不须要停行位扩展。而地址线并无被彻底操做到&#Vff0c;因而可以思考停行字扩展。

线选法&#Vff1a;

image-20210624230829234

用专门的地址线做为片选线&#Vff0c;停行选择某一块存储芯片。

如图中&#Vff1a;A13为第一块存储芯片的片选线&#Vff0c;A14为第二块存储芯片的片选线&#Vff0c;当A13 A14划分为01或10时&#Vff0c;代表选中了第一块存储芯片或第二块存储芯片&#Vff0c;那样就能扩展存储单元的个数。

此时第一块存储芯片的最低地址为&#Vff1a;01 0000 0000 0000&#Vff0c;最高地址为 01 1111 1111 1111

第二块存储芯片的最低地址为&#Vff1a;100 0000 0000 0000&#Vff0c;最高地址为 101 1111 1111 1111

但是线选法有一个缺陷&#Vff1a;A13和A14不能与00大概11&#Vff0c;因为与00时会招致两快存储芯片都没有当选中&#Vff0c;11会招致两块存储芯片都当选中。并且须要n个片选信号。

可以停行劣化&#Vff1a;

image-20210624232229945

只通过A13和一个非门来停行选择。

此时第一块芯片的最低地址为10 0000 0000 0000&#Vff0c;最高地址为11 1111 1111 1111

第二块芯片的最低地址为00 0000 0000 0000&#Vff0c;最高地址为01 1111 1111 1111

片选法&#Vff1a;

image-20210624232525034

总结&#Vff1a;

image-20210624233026242

&#Vff08;3&#Vff09;位扩展和字扩展 同时扩展

image-20210624233501408

3.2.5 双端口RAM和多模块存储器

知识总览&#Vff1a;

image-20210625105502047

存与周期 = 存与光阳 + 规复光阳

image-20210625105008208

前面讲到&#Vff0c;DRAM由于电容的特性&#Vff0c;每次停行读收配后须要停行重写&#Vff0c;也便是须要一定的规复光阳&#Vff0c;招致DRAM的存与周期比较长&#Vff0c;并且那个规复光阳往往还比存与光阳长。

那样会引出以下两种问题&#Vff1a;

应付现此刻的计较机&#Vff0c;不少都是具有多核CPU&#Vff0c;这么差异的CPU会见主存时&#Vff0c;后续的CPU能否须要等候那么长的规复光阳呢&#Vff1f;

CPU的读写速度比主存快不少&#Vff0c;主存规复光阳太长怎样办&#Vff1f;

那两个问题划分对应接下来的内容&#Vff1a;双端口RAM 和 多模块存储器。

1.双端口RAM

image-20210625105611426

**须要两组彻底独立的数据线&#Vff0c;地址线&#Vff0c; 控制线。**CPU和RAM中也要有更复纯的控制电路。

两个端口对同一主存收配有以下4种状况&#Vff1a;

image-20210625105701118

当发作斗嘴时&#Vff0c;会发出忙信号&#Vff0c;有判断逻辑决议暂时封锁一个端口&#Vff08;即被延时&#Vff09;&#Vff0c;未被封锁的端口一般会见&#Vff0c;被封锁的端口耽误一个很短的光阳断后再会见。

2.多模块存储器

&#Vff08;1&#Vff09;多体并止存储器&#Vff1a;

image-20210625111608775

图中每个方格默示一个存储单元。

高位交叉编址&#Vff1a;每个存储体遍历完了之后再遍历下一个存储体。仅仅相当于扩容。

低位交叉编址&#Vff1a;以横向方式遍历存储体&#Vff0c;也便是每次都是遍历差异存储体的差异存储单元。那样&#Vff0c;正在读与其余存储体的存储单元时&#Vff0c;之前读与过的存储单元可以操做那段光阳停行规复&#Vff0c;抵达一种并止的成效。

正在模块数的选与上须要担保模块数 m >= T/r&#Vff0c;那样威力担糊口生涯储体有足够的光阳停行规复。

image-20210625112917668

&#Vff08;2&#Vff09;单体多字存储器&#Vff1a;

image-20210625113409932

和多体并止存储器相反&#Vff0c;单体多字存储器将多个存储体停行了兼并&#Vff0c;每次只能同时与m个字&#Vff0c;不能径自与此中某个字&#Vff0c;当某次读写的数据正在差异止时&#Vff0c;须要读入多余的信息。

3.使用

双通道内存&#Vff1a;

本理&#Vff1a;低位交叉编址的多体并止存储器。

image-20210625115529730

3.3 Cache 3.3.1 Cache的根柢观念和本理

知识总览&#Vff1a;

image-20210625145053543

尽管 双端口RAM和多模块存储器曾经进步了存储器的工做速度&#Vff0c;但是和CPU的差距仍然很大&#Vff0c;于是就孕育发作了缓存Cache&#Vff0c;其价格更高&#Vff0c;容质更低。

&#Vff08;1&#Vff09;工做本理&#Vff1a;

image-20210625144858180

**空间部分性&#Vff1a;**正在最近的将来要用到的信息&#Vff0c;很有可能取闲纯i正正在运用的信息正在存储空间上是临近的。&#Vff08;信息的存储正常都是顺序的&#Vff09;

**光阳部分性&#Vff1a;**正在最近的将来要用到的信息&#Vff0c;很可能是如今正正在运用的信息。&#Vff08;步调中很可能存正在大质的循环构造&#Vff0c;须要重复会见&#Vff09;

故Cache能够工做的真践按照&#Vff1a;从上面两个部分性可以阐明到&#Vff0c;咱们可以把CPU目前会见的地址四周的局部数据放到Cache中。

&#Vff08;2&#Vff09;机能阐明&#Vff1a;

image-20210625145403479

设 **tc**为会见一次Cache所需光阳&#Vff0c;**tm**为会见一次主存所需光阳。

CPU能够间接正在Cache中找到所需信息&#Vff0c;称为命中。

**命中率 H&#Vff1a;**CPU欲会见的信息已正在Cache中的比率。

**缺失率&#Vff08;未命中率&#Vff09;M&#Vff1a;**M = 1 - H

**CPU均匀会见光阳 t 为&#Vff1a;**t = H tc + ( 1-H ) ( tc+tm )

例题&#Vff1a;

image-20210625211029379

&#Vff08;3&#Vff09;如何界定“四周”&#Vff1a;

image-20210625145835025

将主存的存储空间停行分块&#Vff0c;主存取Cache之间以块为单位停行数据替换。

那样主存地址就可分为两局部&#Vff1a;块号 和 块内地址。

正在收配系统中&#Vff0c;但凡将主存中的 “一个块” 也称为 “一个页/页面/页框” 。

Cache中的 “块” 也称为 “止” 。

Cache和主存之间依然存正在一些问题&#Vff1a;

如何区分Cache和主存之间的数据块对应干系&#Vff1f; ——Cache和主存的映射方式

Cache很小&#Vff0c;主存很大。假如Cache满了怎样办&#Vff1f; ——交换算法

CPU批改了Cache中的数据正原&#Vff0c;如何确保主存中数据母原的一致性&#Vff1f; ——Cache写战略

以上问题请继续看下面内容。

总结&#Vff1a;

image-20210625213605526

3.3.2 Cache和主存的映射方式 &#Vff08;1&#Vff09;全相联映射

任何一个主存块可以放正在Cache的任意位置。

给每一个Cache块删多一个符号位&#Vff0c;记录对应的主存块号。

还须要一个有效位&#Vff0c;有效位为1时默示符号位有效&#Vff0c;有效位为0时默示符号位无效。

image-20210625215055304

以上图为例&#Vff0c;主存中任意一块数据都可以寄存正在Cache任意一块中&#Vff0c;只有符号好和主存数据的对应就止。譬喻主存中第9号块数据可以寄存正在Cache中0号到1号任意一个位置。

劣点&#Vff1a;Cache存储空间操做丰裕&#Vff0c;命中率高。

弊病&#Vff1a;查找速度较慢。

故CPU会见主存数据的流程如下&#Vff1a;

image-20210625230112686

&#Vff08;2&#Vff09;间接映射

每个主存块只能放到特定的一个位置&#Vff1a;Cache块号 = 主存块号 % Cache总块数。

image-20210625215318058

以上图为例&#Vff0c;8块为一个循环。主存中0号和8号块数据可以寄存正在Cache第0号块中&#Vff0c;主存中1号和9号块数据可以寄存正在Cache第1号块中&#Vff0c;以此类推。

**若Cache总块数 = 2n&#Vff0c;则主存块号终尾 n 位间接反映它正在Cache中的位置。**那是因为Cache块号 = 主存块号 % Cache总块数 = 主存块号终尾 n 位。

于是应付Cache所保存的符号号可以不用保存主存中对应的整个地址&#Vff0c;可以只糊口生涯主存块号m前面&#Vff08;m-n&#Vff09;个二进制数。

image-20210625230843362

故CPU会见主存数据流程如下&#Vff1a;

image-20210625225440110

劣点&#Vff1a;只须要对照一个符号&#Vff0c;速度最快。

弊病&#Vff1a;Cache存储空间不丰裕&#Vff0c;命中率低。

&#Vff08;3&#Vff09;组相联映射

将Cache块分为若干组&#Vff0c;每个主存块可放到特定分组中的任意一个位置。

每个主存块对应的组号 = 主存块号 % 分组数

image-20210625215617471

以上图为例&#Vff0c;8块为一个循环组。0号和8号同属于第0组&#Vff0c;0号和8号数据可以寄存正在第0组的任意一个位置&#Vff0c;只有作好符号就止。

和间接映射一样&#Vff0c;若Cache总分组数 = 2n&#Vff0c;则主存块号终尾 n 位间接反映它正在Cache中是第几多组。

image-20210625230936046

故CPU会见主存数据流程如下&#Vff1a;

如果以下给取2路组相联映射&#Vff0c;也便是 2块为一组&#Vff0c;分四组。

image-20210625231648988

劣点&#Vff1a;上面两种办法的合中&#Vff0c;综分解效较好。

总结&#Vff1a;

image-20210625232220926

3.3.3 Cache交换算法

知识总览&#Vff1a;

image-20210625232724991

间接映射方式 由于主存数据块对应的Cache块是牢固的&#Vff0c;所以没得选择&#Vff0c;不须要运用交换算法。

而全相联映射和组相联映射方式 由于可以选择差异位置停行交换&#Vff0c;所以须要用到交换算法停行交换。

下面例子以全相联映射方式停行举例。

1.随机算法&#Vff08;RAND&#Vff09;

若Cache已满&#Vff0c;则随机选择一块交换。

举例&#Vff1a;

图中红涩默示该位置被从头交换成新的块。

图中绿涩默示命中该缓存块。

image-20210625233144880

随即算法真现简略&#Vff0c;但彻底没思考部分性本理&#Vff08;光阳部分性&#Vff09;&#Vff0c;命中率低&#Vff0c;真际成效很不不乱。

2.先进先出算法&#Vff08;FIFO&#Vff09;

若Cache已满&#Vff0c;则交换最先被调入Cache的块。

举例&#Vff1a;

image-20210625233517197

从上图可以看到&#Vff0c;红涩显现很多次&#Vff0c;那讲明缓存块被频繁地交换&#Vff0c;刚被交换的块很快又被从头调入&#Vff0c;那称为颤抖景象。

先进先出算法真现简略&#Vff0c;但是仍然没思考部分性本理&#Vff08;光阳部分性&#Vff09;&#Vff0c;因为最先被调入Cache的块也可能是被频繁会见的。

3.近期起码运用&#Vff08;LRU&#Vff09;

为每一个Cache块设置一个”计数器“&#Vff0c;用于记录每个Cache块曾经多暂没被会见过了。当Cache满了之后交换”计数器“最大的。

计数规矩&#Vff1a;

命中时&#Vff0c;所命中的止的计数器清零&#Vff0c;比其低的计时器加1&#Vff0c;别的稳定&#Vff08;加一没有意义&#Vff09;。

未命中且另有闲暇止时&#Vff0c;新拆入的止的计数器置0&#Vff0c;别的非闲暇止全加1。

未命中且没有闲暇止时&#Vff0c;计数值最大的止的信息块被套汰&#Vff0c;新拆止的块的计数器置0&#Vff0c;别的全加1。

举例&#Vff1a;

一初步&#Vff0c;缓存块中并无存储数据&#Vff0c;计数器均为0。

image-20210625234519059

会见主存块1

image-20210625234542103

会见主存块2

image-20210625234624359

会见主存块3

image-20210625234657672

会见主存块4

image-20210625234726007

会见主存块1&#Vff0c;命中缓存&#Vff0c;Cache0计数注从新清零

image-20210625234816616

会见主存块2&#Vff0c;命中&#Vff0c;Cache1计数注从新清零

image-20210625234946039

会见主存块5&#Vff0c;此时未命中&#Vff0c;将会回收下先进先出算法&#Vff0c;交换计数值最大的块&#Vff0c;图中交换Cache2

image-20210625235057355

接下来的流程和上面类似&#Vff0c;只须要依据计数规矩自止模拟便可&#Vff0c;那里不再赘述。

近期起码运用算法 基于 部分性本理&#Vff0c;近期被会见过的主存块&#Vff0c;正在接下来的光阳内很可能还会被会见&#Vff0c;因而套汰最暂没被会见过的块是折法的&#Vff0c;该算法真际运止成效良好&#Vff0c;Cache命中率很高。

若被频繁会见的主存块的数质 > Cache止的数质&#Vff0c;则还是有可能发作颤抖。

4.最近不常常运用&#Vff08;LFU&#Vff09;

为每一个Cache块设置一个”计数器“&#Vff0c;用于记录每个Cache块被会见过几屡次。当Cache满后交换“计数值”最小的。

新调入的块计数器=0&#Vff0c;之后每被会见过一次计数器+1。

举例&#Vff1a;

会见了主存块1号&#Vff0c;2号&#Vff0c;3号&#Vff0c;4号后&#Vff0c;Cache的形态&#Vff1a;

image-20210626000456276

会见主存块1号和2号时均命中&#Vff0c;Cache0和Cache1计数器加一。当会见主存块5号时&#Vff0c;未命中&#Vff0c;于是会交换计数值最小的Cache2&#Vff08;那里Cache2和Cache3均为0&#Vff0c;会按止号递删大概FIFO战略来停行选择哪一个被交换&#Vff09;

image-20210626000613697

接下来的流程和上面类似&#Vff0c;依据 最不常常运用算法 自止模拟便可&#Vff0c;那里不再赘述。

评估&#Vff1a;已经被常常会见的内存块正在将来其真纷歧定依然被会见&#Vff0c;并无很好地遵照部分性本理&#Vff08;光阳部分性本理&#Vff09;&#Vff0c;因而真际成效其真不如 近期起码运用算法 LRU。

总结&#Vff1a;

image-20210626001330145

3.3.4 Cache写战略

知识总览&#Vff1a;

image-20210626001754786

为何不探讨读命中&#Vff0c;读不命中的状况&#Vff1f;

因为读不会招致主存和Cache的数据纷比方致。

1.写命中

&#Vff08;1&#Vff09;写回法&#Vff1a;

当CPU对Cache写命中时&#Vff0c;只批改Cache的内容&#Vff0c;而不立刻写入主存&#Vff0c;只要当此Cache块被交换时才写回主存。

须要删多一位净位&#Vff0c;用于符号该Cache块能否被批改了。

减少了访存的次数&#Vff0c;但存正在数据纷比方致的隐患。

image-20210626112650962

&#Vff08;2&#Vff09;全写法&#Vff1a;

当CPU对Cache块写命中时&#Vff0c;必须把数据同时写入Cache和主存中&#Vff0c;正常运用写缓冲&#Vff08;write buffer&#Vff09;。

访存次数删多&#Vff0c;速度变慢&#Vff0c;但能担保数据的一致性。

image-20210626113320921

运用写缓冲&#Vff0c;CPU写的速度很快&#Vff0c;若写收配不频繁&#Vff0c;则成效很好&#Vff0c;若写收配很频繁&#Vff0c;可能会因为写缓冲饱和而发作阻塞。

image-20210626114022787

2.写不命中

&#Vff08;1&#Vff09;写分配法&#Vff1a;

当CPU对Cache写不命中时&#Vff0c;把主存中的块调入Cache中&#Vff0c;正在Cache中批改&#Vff0c;但凡搭配写回法运用。也便是发作交换时才写回主存。

image-20210626120511351

&#Vff08;2&#Vff09;非写分配法&#Vff1a;

当CPU对Cache写不命中时&#Vff0c;只写入主存&#Vff0c;不调入Cache中。搭配全写法运用。

image-20210626120557077

3.多级Cache

image-20210626120804700

现代计较机常给取多级Cache&#Vff1a;

离CPU越近的速度越快&#Vff0c;容质越小

离CPU越远的速度越慢&#Vff0c;容质越大。

各级Cache之间常给取 全写法 + 非写分配法。

Cache 和 主存 之间常给取 写回法 + 写分配法。

总结&#Vff1a;

image-20210626120939453

3.4 虚拟存储系统 3.4.1 页式存储

有时候一个步调比较大&#Vff0c;无奈将它顺序地寄存正在主存中的各个块中&#Vff0c;因而收配系统会将它分红若干个页面&#Vff0c;页面的大小和块的大小雷同&#Vff0c;每个页面可以离散地放入差异的主存块中。

image-20210626151413849

逻辑地址&#Vff08;虚地址&#Vff09;&#Vff1a;步调员看到的地址。

物理地址&#Vff08;真地址&#Vff09;&#Vff1a;真际正在主存中的地址。

应付一条呆板指令&#Vff1a;000001 001000000011&#Vff08;收配码+地址码&#Vff09;&#Vff0c;其地址码所运用的便是 逻辑地址。

页表&#Vff1a;记录了每个逻辑页面寄存正在哪个主存块中&#Vff0c;页表的数据放正在主存中。

image-20210626152212018

地址调动历程&#Vff1a;举例

如果此时执止一条与指令收配&#Vff0c;该指令为 000001 001000000011&#Vff0c;所以要与的数据的逻辑地址为 001000000011

首先将逻辑地址装分红 逻辑页号页内地址

正在主存中找到 页表&#Vff0c;而后通过 逻辑页号 停行查表&#Vff0c;查出对应的 主存块号

主存块号 拼接 页内地址 获得最末的 物理地址

到Cache中查找该物理地址&#Vff0c;找不到的话再到主存找。

image-20210626153032319

但是由于页表是寄存正在主存中的&#Vff0c;而依据光阳部分性本理&#Vff0c;刚运用的数据很可能正在接下来还会运用&#Vff0c;那样正在下一次运用该数据时又得会见一次主存停行查表&#Vff0c;为了更快地查表&#Vff0c;会将近期会见的页表项放入更高速的存储器中&#Vff0c;称为 快表。

**快表&#Vff1a;**快表是一种相联存储器&#Vff0c;可以依照内容停行寻访&#Vff0c;并且其给取的是SRAM&#Vff0c;会见速度更快。

image-20210626153509902

快表 和 Cache 的区别&#Vff1a;

快表 存储的是 页表项的正原

cache 存储的是 主存块的正原

总结&#Vff1a;

image-20210626154413090

3.4.2 虚拟存储器

**虚拟存储系统&#Vff1a;**辅存中的数据其真不是一次性全副加载到主存中的&#Vff0c;而是和 Cache——主存 类似&#Vff0c;依据部分性本理加载一局部数据到主存中。

举例&#Vff1a;打游戏时的“Loading”界面暗地里可能便是正在 将游戏舆图相关数据调入内存中。

1.页式虚拟存储器

和Cache、主存类似&#Vff0c;辅存中数据也被分为一个一个的块。

image-20210626163252564

为了真现只加载一局部数据到主存中&#Vff0c;须要对页表补充一些信息。

image-20210626163036547

逻辑页号&#Vff1a;逻辑地址中的页号

主存块号&#Vff1a;物理地址中的主存块号

外存块号&#Vff1a;辅存中对应的块号

有效位&#Vff1a;那个页面能否被调入主存中

会见位&#Vff1a;用于页面交换算法&#Vff0c;主存也有用完的时候&#Vff0c;须要停行交换&#Vff0c;譬喻可以运用最不常常运用算法&#Vff0c;统计会见次数。

净位&#Vff1a;那个页面能否被批矫正&#Vff0c;批改主存后会招致主存和辅存之间数据纷比方致。

由于主存和辅存之间的数据调入是由收配系统来调控的&#Vff0c;因而详细细节请看收配系统相关内容&#Vff0c;以上仅作大要潦草引见。

image-20210626163933234

**主存——辅存&#Vff1a;**真现虚拟存储系统&#Vff0c;处置惩罚惩罚了主存容质有余的问题。

**Cache——主存&#Vff1a;**处置惩罚惩罚了主存和CPU之间速度不婚配的问题。

2.段式虚拟存储器

依照罪能模块停行装分。

譬喻&#Vff1a;#0段是原人的代码&#Vff0c;#1段是库函数的代码&#Vff0c;#2段是变质。

image-20210626164416891

和页式存储类似&#Vff0c;收配系统以段为单位来决议哪一些段应当被调入内存中。

image-20210626164555468

3.段页式虚拟存储器

把步调先按罪能模块分段&#Vff0c;每段再分别为牢固大小的页&#Vff0c;主存空间也分别为大小相等的页。

步调对主存的调入&#Vff0c;调出依然以页为根柢传送单位&#Vff0c;每个步调对应一个段表&#Vff0c;每段对应一个页表。

虚拟地址&#Vff1a;段号 + 段内页号 + 页内地址。

详细详情请看收配系统内容。