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

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介: 408计算机组成原理学习笔记——存储系统

5.3.Cache替换算法

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

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

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

5.3.1.随机算法(RAND)

Cache已满,随机选择一块进行替换3ee993f73f2b4a668c1c9a67f0841b9c.png

5.3.2.先进先出算法(FIFO)

Cache已满,替换最先被调入Cache的块78e4061969a44ccab4b0c37468b6c4f5.png

可能发生抖动

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

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

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

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

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

4.计数器仅需n位

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

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

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位表示页内地址

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

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

7.地址变换过程:

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

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

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

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

image.png

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

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

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

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

db265c81bd6940f3801336b7aad903a7.png

499dcd43e5294d8aad3be8f1d1115417.png

6.2.虚拟存储器

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

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

594c14a1d97b42a0a2c98d729be900d5.png

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

744e3089558941029db854df23e2ba5a.png0ef1e404c402460e9481af4b3cca1fe4.png

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

①段长:每个段大小不一

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

10719b26afa24b4a9270761ef9f36ebb.png

5.段页式3c0a421256e4439cbf82e77e80986456.png


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
3月前
|
算法 内存技术
计算机组成原理:存储系统【二】
计算机组成原理:存储系统【二】
|
3月前
|
存储 固态存储 算法
计算机组成原理:存储系统【四】
计算机组成原理:存储系统【四】
|
3月前
|
存储 芯片 内存技术
计算机组成原理:存储系统【一】
计算机组成原理:存储系统【一】
|
3月前
|
存储 芯片 内存技术
计算机组成原理:存储系统【三】
计算机组成原理:存储系统【三】
|
3月前
|
存储 算法 固态存储
【计算机组成原理】存储系统
【计算机组成原理】存储系统
2082 0
【计算机组成原理】存储系统
|
3月前
|
存储 芯片 块存储
计算机组成原理(1)----存储器相关(1)
计算机组成原理(1)----存储器相关
66 4
|
3月前
|
存储 固态存储 芯片
计算机组成原理(1)----存储器相关(2)
计算机组成原理(1)----存储器相关
72 1
|
存储 固态存储 数据安全/隐私保护
计算机组成原理/计算机硬件基础第五章:存储器
计算机组成原理/计算机硬件基础第五章:存储器
425 0
计算机组成原理/计算机硬件基础第五章:存储器
|
存储 固态存储 芯片
计算机组成原理<五>——存储系统(一)
计算机组成原理<五>——存储系统
计算机组成原理<五>——存储系统(一)
|
存储 算法 程序员
计算机组成原理<五>——存储系统(二)
计算机组成原理<五>——存储系统
计算机组成原理<五>——存储系统(二)