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应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
存储 芯片 内存技术
计算机组成原理:存储系统【三】
计算机组成原理:存储系统【三】
|
存储 缓存 算法
409操作系统学习笔记——内存管理(二)
409操作系统学习笔记——内存管理
2694 1
409操作系统学习笔记——内存管理(二)
|
存储 C语言
大端存储和小端存储
1.大小端字节序 2.大端存储 3.小端存储 4.为什么会有大小端存储模式之分? 5.如何判断当前机器是大端存储还是小端存储 方法1 方法2
4098 0
|
数据采集 JavaScript 搜索推荐
我们一起聊聊如何对Vue项目进行搜索引擎优化
【9月更文挑战第4天】Vue 项目的搜索引擎优化(SEO)较为复杂,因其内容默认由 JavaScript 渲染,部分搜索引擎难以索引。为提升 SEO 效果,可采用服务器端渲染(SSR)或预渲染,使用 Nuxt.js 或 Vue Server Renderer 实现 SSR,或利用 Prerender SPA Plugin 预渲染静态 HTML。此外,动态管理 Meta 标签、优化静态内容与 Sitemap、懒加载、图片优化、提升页面速度、设置正确的路由模式、使用结构化数据及构建良好外链均有益于 SEO。
504 11
|
存储 算法 安全
Golang 实现对配置文件加密
Golang 实现对配置文件加密
|
缓存 算法 内存技术
计算机组成原理(4)-----Cache的原理及相关知识点(2)
计算机组成原理(4)-----Cache的原理及相关知识点
358 1
|
机器学习/深度学习 JavaScript 前端开发
机器学习模型部署:使用Python和Vue搭建用户友好的预测界面
【4月更文挑战第10天】本文介绍了如何使用Python和Vue.js构建机器学习模型预测界面。Python作为机器学习的首选语言,结合Vue.js的前端框架,能有效部署模型并提供直观的预测服务。步骤包括:1) 使用Python训练模型并保存;2) 创建Python后端应用提供API接口;3) 利用Vue CLI构建前端项目;4) 设计Vue组件实现用户界面;5) 前后端交互通过HTTP请求;6) 优化用户体验;7) 全面测试并部署。这种技术组合为机器学习模型的实用化提供了高效解决方案,未来有望更加智能和个性化。
1405 1
|
SQL 算法 安全
【数据库SQL server】数据模型:对现实世界的抽象
【数据库SQL server】数据模型:对现实世界的抽象
239 0
|
存储 缓存 固态存储
408计算机组成原理学习笔记——存储系统(一)
408计算机组成原理学习笔记——存储系统
1462 2
408计算机组成原理学习笔记——存储系统(一)
|
存储
408计算机组成原理学习笔记——中央处理器(三)
408计算机组成原理学习笔记——中央处理器
529 1
408计算机组成原理学习笔记——中央处理器(三)