操作系统-存储管理(3)高速缓存Cache

- 联想存储器:根据内容进行寻址的存储器(冯氏模型中是按照地址进行寻址,但在高速存储器中往往只存有部分信息,此时需要根据内容进行检索)
- 地址转换部件:通过联想存储器建立目录表以实现快速地址转换。命中时直接访问Cache;未命中时从内存读取放入Cache
- 替换部件:在缓存已满时按一定策略进行数据块替换,并修改地址转换部件


- 直接(Direct)映射/模映射:每个主存块映射到Cache的固定行


- 全相联(Full Associate):每个主存块映射到Cache的任一行

- 组相联(Set Associate):每个主存块映射到Cache固定组中任

- Cache Index 选择其中的一个Cache行集合(共2行)
- 对这个集合中的两个Cache行的Tag并行进行比较
- 根据比较结果确定信息在哪个行,或不在Cache中

| 可能的位置 | 关联度 | 缺失率 | 命中时间 | tag位数 | |
| 直接映射 | 唯一映射 | 最低,为1 | 最高 | 最小 | 最小 | 
| 全相联映射 | 任意映射 | 最高,为Cache行数 | 最低(关联度越高命中率越高) | 最大 | 标记=主存块号 | 
| N-路组相联映射 | N-路映射 | 居中,为N | 路数翻倍,增加1位 | 
- 先进先出FIFO (first-in-first-out)
- 最近最少用LRU ( least-recently used)
- 每组4行时,计数器有2位。计数值越小则说明越被常用。命中时,被访问行的计数器置0,比其低的计数器加1,其余不变。
- 未命中且该组未满时,新行计数器置为0,其余全加1。
- 未命中且该组已满时,计数值为3的那一行中的主存块被淘汰,新行计数器置为0,其余加1。
- 最不经常用LFU ( least-frequently used)
- 随机替换算法(Random)
- 因为Cache中的内容是主存块副本,当对Cache中的内容进行更新时,就存在Cache和主存如何保持一致的问题。
- 当多个设备都允许访问主存时。I/O设备可直接读写内存时,如果Cache中的内容被修改,则I/O设备读出的对应主存单元的内容无效;若I/O设备修改了主存单元的内容,则Cache中对应的内容无效。
- 当多个CPU都带有各自的Cache而共享主存时。某个CPU修改了自身Cache中的内容,则对应的主存单元和其他CPU中对应的内容都变为无效。
- 全写法Write Through(通写法、写直达法、直写法):

- 回写法Write Back(一次性写方式、写回法):只写cache不写主存,缺失时一次写回,每行有个修改位dirty bit脏位,大大降低主存带宽需求,控制可能很复杂

操作系统-存储管理(3)高速缓存Cache的更多相关文章
- 再说Postgres中的高速缓存(cache)
		表的模式信息存放在系统表中,因此要访问表,就需要首先在系统表中取得表的模式信息.对于一个PostgreSQL系统来说,对于系统表和普通表模式的访问是非常频繁的.为了提高这些访问的效率,PostgreS ... 
- 操作系统-存储管理(6)buffer/cache/swap
		为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果没有则通过驱动程序直接操作磁盘. 缓存 ... 
- 细说Oracle数据库与操作系统存储管理二三事
		在上大学的时候,学习操作系统感觉特别枯燥,都是些条条框框的知识点,感觉和实际应用的关联不大.发现越是工作以后,在工作中越想深入了解,发现操作系统知识越发重要.在实践中结合理论还是不错的一种学习方法.自 ... 
- 操作系统-存储管理(5)IA-32/Linux的地址转换
		IA-32/Linux按字节编址:在保护模式下,IA-32采用段页式虚拟存储管理方式,存储地址采用逻辑地址.线性地址和物理地址来进行描述. 逻辑地址由48位组成,包含16位段选择符(高13位为段表项的 ... 
- linux查看CPU高速缓存(cache)信息
		一.Linux下查看CPU Cache级数,每级大小 dmesg | grep cache 实例结果如下: 二.查看Cache的关联方式 在 /sys/devices/system/cpu/中查看相应 ... 
- 操作系统之cache、伙伴系统、内存碎片、段式页式存储管理
		存储管理是操作系统非常重要的功能之一,本文主要介绍操作系统存储管理的基础知识,包括缓存相关知识.连续内存分配.伙伴系统.非连续内存分配.内存碎片等,并结合linux系统对这些知识进行简单的验证.文章内 ... 
- 寄存器,cache、伙伴系统、内存碎片、段式页式存储管理
		cache.伙伴系统.内存碎片.段式页式存储管理 目录 分层的存储管理 cache 局部性原理 置换算法 写回策略 linux环境下的cache 连续内存分配与内存碎片 内部碎片与外部碎片 动态分区分 ... 
- 深入解析Windows操作系统笔记——CH2系统结构
		2.系统结构 本章主要介绍系统的总体结构,关键部件之间的交互,以及运行在什么环境. 2.系统结构 2.1 需求和设计目标 2.2 操作系统模型 2.3 总体结构 2.3.1 可移植性 2.3.2 对称 ... 
- (转)CPU Cache与内存对齐
		转自:http://blog.csdn.net/zhang_shuai_2011/article/details/38119657 原文如下: 一. CacheCache一般来说,需要关心以下几个方面 ... 
随机推荐
- Android集成Zxing
			1.在build文件中添加依赖 dependencies { //ZXing implementation 'com.google.zxing:core:3.3.3' implementation(' ... 
- Elasticsearch及相关插件的安装
			Elasticsearch及相关插件的安装 1.安装Elasticsearch并启动服务 2.安装第三方插件 2.1.Head插件 是Elasticsearch的一个集群管理工具,可以通过它来查看和搜 ... 
- JPA第二天
			学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"springdata"获取视频和教程资料! b站在线视 ... 
- mapstruct 实体转换及List转换,@Mapper注解转换
			本文参考 https://blog.csdn.net/u012373815/article/details/88367456 主要是为了自己使用方便查询. 这些都是我平时用到了,大家有什么好方法或者有 ... 
- __slots__属性
			使用__slots__时,子类不受影响 class Person(object): __slots__ = ("name","age") def __str__ ... 
- PHP xml_set_default_handler() 函数
			定义和用法 xml_set_default_handler() 函数为 XML 解析器建立默认的数据处理器.高佣联盟 www.cgewang.com 该函数规定在只要解析器在 XML 文件中找到数据时 ... 
- ABP使用Nginx代理导致租户ID(Abp.TenantId)丢失
			描述:ABP使用Nginx代理导致租户ID(Abp.TenantId)丢失,自定义header无效无法传递,导致租户选择认证失败.原因是因为 Nginx 过滤是“.”这符号. 解决: 1,先从代码人手 ... 
- 从零写一个Asp.net core手脚架(模型验证)
			一个asp.net core项目,一定包含了各种的实体,在RESTful api里面,有很多的参数传递,不建立实体则大量的参数需要自定验证正确性,并且Action上面会写的密密麻麻的参数 在asp.n ... 
- python2.3嵌套if结构:
			#案例:存款100万的请款下,买宝马:老爸资助大于50万买宝马740:大于30万买宝马520:小于20万宝马320.存款大于50万小于100万买丰田:大于20万小于50万买二手车:小于20万自行车! ... 
- 010_go语言中的maps映射(字典)
			代码演示 package main import "fmt" func main() { m := make(map[string]int) m["k1"] = ... 
