cache同步机制之读写
1.概念解析
cache :这里的cache可以指L1,L2,L3这种CPU缓存,也可以是内存,也可以是磁盘缓存,区别在于处于什么场景下。
内存 :对于cache的后端存储,总之是在cache之后。或是持久或是非持久的存储。
cache hit :当从cache中读取数据时,恰好命中,读到数据,又称缓存命中
cache miss: 对应cache hit ,在缓存中没有读到数据,需要到后端存储读取。
对应还有write miss , write hit , read miss ,read hit.
2.写同步
现在的CPU是由L1,L2,L3,内存,物理存储五级存储方式,访问速度是越来越慢,那么对于数据传递过程该如何定义呢?
2.1) write through cache :
每次刷新cache时,同时同步的将数据刷新到内存中。优点:简单,缺点:相比较来说慢一些。
2.2) write back cache
刷新数据到cache中,但是不立刻同步数据到内存,但标志这些数据在内存中是脏数据,等到这些数据要会清理出缓存的时候(例如LRU算法),再将数据刷新到内存中,因为很多场景下有些数据只是一些中间数据,并不是最终数据。优点:CPU效率高,但是实现复杂。还需要承担在cache中数据未刷新到内存中的风险。
以上两种方式是在走两个极端,一个极端是有数据就立刻同步,另一个极端就是等有需要删除数据时就同步数据(这个也是memcached服务端的实现策略)。那么有没有一种介于这两者之间的传递数据方式呢?那就是post write 。
2.3) post write
cpu更新缓存时,把更新的数据写入到一个更新缓存器中,在合适的时候更新数据到内存中,这个时机需要根据具体的业务场景来分析,可以是定时,也可以是某种触发机制下,例如更新缓存器中数据达到多少的比例。简单的话就是异步的方式同步数据。这种方式也面临的问题就是写数据在缓存中丢失的问题都需要去考虑容灾。
3.读同步
在第一个节点已经介绍可cache hit && cache miss .那么在cache miss的情况下如何处理呢?有两种:
读取数据有两种,一种是从后端存储中读到数据后直接放到CPU,这种称之为:read through,另一种就是读取数据后,先放到cache中,再从cache中读取数据。
cache hit && cache miss 的资料写入
我们在cache中读到数据,需要重写回去,那么就上面提到的三种写策略
但是是针对写入过程中原来数据已经不存在了的情况有以下两种处理方式:
1.Write allocate:将写入数据从内存中读入缓存,然后采用write-hit(缓存命中写入)操作。写缺失操作与读缺失操作类似。
2.No-write allocate:方式并不将写入位置读入缓存,而是直接将数据写入存储。这种方式下,只有读操作会被缓存,因为不会有新数据写入缓存,都直接写内存了。
同步以上的分析,我们大致知道了CPU是如何处理L1和内存之间的数据同步的,那么我们在自己做缓存设计的时候也可以参考。
以上内容是自己摘取分析的成果,若有问题,欢迎指出!
分享到:
相关推荐
内存屏障、内存映射、同步机制、GDB基本功能、CPU缓存、内核启动流程、 syncookie、读写分析、NFS实现框架、网络新特性、skb核心操作、HASH算法、过滤框架Nftables、接 收框架、页缓存PageCache、Netfilter框架、...
拖慢业务系统:写缓存肯定是要占用CPU和资源的,写一个或者两个缓存还好,如果有上千个,每个10ms,那就是10m,任何系统的响应超过10m,如果访问量一升高,系统就等着崩溃吧。 异步生成缓存 通过定时任务定时刷新...
GPU:一个类似于CPU的专门用来处理Graphics的处理器, 作用用来帮助加快格栅化操作,当然,也有相应的缓存数据(例如缓存已经光栅化过的bitmap等)机制。 OpenGL ES:是手持嵌入式设备的3DAPI,跨平台的、功能完善的2D和3D...
Google搜索数据库的安全积累与沙盒机制的应用,保证了您在浏览时能杜绝99%的恶意软件侵入的机会! 安全、精简、快速、绿色,随时拷贝带走 Google服务器同步数据保存,一键恢复 快速与兼容模式随时切换,...
CPU缓存已刷新,因此新进程可以填充它。 在每个上下文切换器上重新填充它都需要从内存中重新获取指令(非常昂贵)。 PCB具有(除其他事项外)以下信息: 流程编号 程序计数器 寄存器状态 内存限制(即虚拟内存...
第1章集中介绍如何确定程序中消耗CPU时钟最多的热点代码的所谓程序剖析技术以及典型部分工具的实用知识。第2,3章分别全面介绍RAM了系统与高速缓存子系统的代码优化知识。第4章主要介绍了机器代码优化技术。各章在...
第1章集中介绍如何确定程序中消耗CPU时钟最多的热点代码的所谓程序剖析技术以及典型部分工具的实用知识。第2,3章分别全面介绍RAM了系统与高速缓存子系统的代码优化知识。第4章主要介绍了机器代码优化技术。各章在...
第1章集中介绍如何确定程序中消耗CPU时钟最多的热点代码的所谓程序剖析技术以及典型部分工具的实用知识。第2,3章分别全面介绍RAM了系统与高速缓存子系统的代码优化知识。第4章主要介绍了机器代码优化技术。各章在...
cpu mem disk net 线程,进程 第三方库 poi Jsoup zxing Gson 数据结构 树 栈 链表 队列 图 操作系统 linux 代码控制 自动化代码检查 sonar 代码规范 阿里巴巴Java开发规范手册 UMPAY——...
建议选择的全系列交换机具备的硬件CPU保护功能(CPP)可实现对CPU的自动硬件防护机制,保证设备不会因为协议攻击而宕机。 同时交换机上具备的SPOH技术(基于硬件的同步式处理),在线卡的每个端口上利用FFP硬件进行...
闪游——超速、超小(仅几百K)、稳定、占用资源超低、绿色便携,超强的魔法浏览特性再加上强劲的广告弹窗过滤机制,让大家可以闪速、无忧上网。闪游对Windows系统资源的占用特少,远远超越了国内外的同类网页浏览器...
闪游——超速、超小(仅几百K)、稳定、占用资源超低、绿色便携,超强的魔法浏览特性再加上强劲的广告弹窗过滤机制,让大家可以闪速、无忧上网。闪游对Windows系统资源的占用特少,远远超越了国内外的同类网页浏览器...
闪游浏览器超强的魔法浏览特性再加上强劲的广告弹窗过滤机制,让大家可以闪速、无忧上网。闪游对Windows系统资源的占用特少。 闪游浏览器特性 1、极速浏览:闪速加载和打开网页,高效利用本地缓存 2、最省资源:...
27.8.7 有的I/O操作必须同步完成 27.8.8 FileStream特有的问题 27.9 I/O请求优先级 27.10 将IAsyncResult APM转换为Task 27.11 基于事件的异步模式 27.11.1 将EAP转换为Task 27.11.2 APM和EAP的对比 27.12 ...
第15章 原子变量与非阻塞同步机制261 15.1 锁的劣势261 15.2 硬件对并发的支持262 15.2.1 比较并交换263 15.2.2 非阻塞的计数器264 15.2.3 JVM对CAS的支持265 15.3 原子变量类265 15.3.1 原子变量是一种“更...
#MySQL的查询缓冲大小(从4.0.1开始,MySQL提供了查询缓冲机制)使用查询缓冲,MySQL将SELECT语句和查询结果存放在缓冲区中, # 今后对于同样的SELECT语句(区分大小写),将直接从缓冲区中读取结果。根据MySQL用户...
71.9. 说下Hibernate的缓存机制 60 71.10. Hibernate的查询方式 60 71.11. 如何优化Hibernate? 61 71.12. Hibernate和spring中常出现的几个异常 61 71.13. Hibernate与jdbc的联系 62 71.14. Hibernate与Spring的...
16.长连接减少CPU及内存使用及网络堵塞,减少请求响应时长; 17.无缝事件机制行为扩展更方便,方便二次开发; 18.支持队列降低流量高峰,解除耦合,高可用; 19.一键安装自动检查系统环境一键安装; 20.移动端使用uni...
2.1.1 Intel x86 CPU寻址方式的演变 18 2.1.2 IA32寄存器简介 19 2.1.3 物理地址、虚拟地址及线性地址 21 2.2 分段机制 22 2.2.1 地址转换及保护 24 2.2.2 Linux中的段 24 2.3 分页机制 25 2.3.1 页与页表 25 2.3.2 ...