`

cpu的缓存同步机制

 
阅读更多

 

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和内存之间的数据同步的,那么我们在自己做缓存设计的时候也可以参考。

以上内容是自己摘取分析的成果,若有问题,欢迎指出!

 

 

分享到:
评论

相关推荐

    cpp-CJAG两个位于同一个位置的虚拟机之间基于CPU缓存的通信

    标题中的"cpp-CJAG"可能是一个开源项目或研究,专注于使用C++编程语言来实现CPU缓存通信机制。C++是一种强大的、面向对象的编程语言,常用于系统级编程,如虚拟化环境中的底层通信优化。 CPU缓存是处理器和主内存...

    每个程序员都应该了解的_CPU_高速缓存

    常见的CPU缓存有三级:L1、L2和L3。 - **L1 Cache**:最接近CPU核心,速度最快但容量最小。分为数据缓存(L1d)和指令缓存(L1i)。 - **L2 Cache**:比L1缓存大,速度稍慢,为整个CPU核心共享。 - **L3 Cache**:...

    15、CPU缓存架构详解&高性能内存队列Disruptor实战(1).pdf

    ### CPU缓存架构详解 #### 1.1 CPU高速缓存概念 在现代计算机系统中,CPU缓存作为连接CPU与主内存之间的桥梁,扮演着至关重要的角色。它是一种小型而快速的存储器,用于存储最近频繁访问的数据,从而显著减少CPU...

    带有缓存的流水线CPU设计

    CPU缓存通常分为L1、L2、L3等层次,层次越高,容量越大,但速度相对较慢。 3. **Verilog实现CPU缓存**: Verilog是一种硬件描述语言,常用于数字电路的设计与仿真。在Verilog中,我们可以定义缓存的结构,包括地址...

    缓存大集合

    缓存分为不同的层次,如CPU缓存、内存缓存和磁盘缓存,每一层都有其特定的访问速度和容量优势。 Ehcache是一款广泛使用的Java缓存库,支持内存和磁盘缓存。它提供了丰富的特性,例如缓存分区、缓存预热、缓存过期...

    Linux线程同步机制及其在WAP网关中的应用.pdf

    【Linux线程同步机制】 Linux操作系统中的线程同步机制是多线程编程中不可或缺的一部分,主要目的是确保在并发执行的线程之间正确地共享资源,防止数据竞争和死锁等问题的发生。Linux遵循POSIX线程标准(pthread)...

    cpu 内存模型和java内存模型

    Java程序员了解CPU以及相关的内存模型,对于深入理解...通过分析具体的编程问题,比如Java锁的不同实现方式、CPU缓存的工作机制等,可以帮助程序员更好地理解Java内存模型,在多线程环境下写出更加健壮和高效的代码。

    iOS 缓存功能类

    4. **响应式编程**:使用如ReactiveCocoa等框架,可实现数据加载、缓存与界面更新的同步。 六、实际应用 在实际项目中,"iOS 缓存功能类"可能包含对上述缓存机制的封装,提供简单易用的接口供其他模块调用,如`...

    内核同步机制-优化屏障和内存屏障

    内核同步机制是操作系统设计中的关键部分,尤其是在多处理器系统中,确保多个处理器对共享资源的访问正确有序至关重要。优化屏障和内存屏障是内核同步的两种重要手段,用于防止编译器和处理器的优化导致的数据乱序...

    嵌入式软件跟踪信息嵌套缓存机制和解析机制的设计

    其次,传输控制机制利用DMA(直接存储器访问)技术,通过DMA总线控制器进行跟踪信息的高效传输,降低了CPU的负担,并采用同步中断发送,确保信息的稳定传输。最后,解析机制采用了递归调用的方法,通过在PC端建立...

    CPU自制入门_cpu内部_cpu自制入门_自制cpu书籍_

    《CPU自制入门》是一本专为对CPU设计与编程感兴趣的读者准备的经典书籍,它深入浅出地介绍了CPU的内部构造和工作原理,是CPU自制入门的绝佳指导资料。通过阅读这本书,你可以了解到从基础的逻辑门电路到复杂的微处理...

    CPU相关性.rar

    源码可能包含了实现缓存同步的策略,如MESI协议,以避免数据不一致的问题。 4. **性能优化**:了解CPU相关性有助于开发人员编写出更高效的代码。这可能包括避免缓存未命中的优化,减少不必要的内存访问,以及有效...

    处理缓存基本知识

    缓存是一种临时存储数据的机制,它位于主系统和慢速存储之间,如硬盘或远程服务器。当系统需要访问数据时,首先会检查缓存中是否存在,如果存在则直接读取(称为缓存命中),如果不存在则从慢速存储中获取并放入...

    JAVA缓存技术_深入了解.ppt

    这些框架提供了丰富的功能,包括缓存淘汰策略、缓存同步、分布式缓存支持等,帮助开发者构建高性能的缓存系统。 总结来说,Java缓存技术是优化系统性能的关键,通过对数据的高效存储和快速访问,极大地降低了系统...

    主板-CPU-内存-显卡,DIY必读

    - **概念**:CPU缓存是一种位于CPU与内存之间的高速临时存储器,用于加速数据处理。 - **层次**:现代CPU通常包含一级缓存(L1)、二级缓存(L2),部分高端产品还拥有三级缓存(L3)。 - **一级缓存**:容量较小,...

    CPU-至芯科技夏宇闻cpu源码

    4. **缓存机制**:CPU通常包含多级缓存,以减少主存访问的延迟。源码中会涉及缓存的大小、组织结构、替换策略和一致性协议。 5. **分支预测**:为了优化程序执行,CPU需要预测可能的分支路径,源码中会有这方面的...

    stm32 5个串口初始化实现串口缓存,前三个DMA.zip

    在本项目中,我们关注的是STM32的串口(USART)功能,以及如何通过DMA(直接内存访问)和缓存机制进行高效的数据传输。 首先,让我们详细了解一下STM32的串口(USART)。USART,通用同步/异步收发传输器,是STM32中...

    并行帧缓存设备:基于多核CPU的Xorg并行显示优化.pdf

    2. **同步机制**:并行处理可能导致数据竞争和一致性问题,因此需要有效的同步策略来确保不同核心间的协调。例如,使用锁或信号量确保同一时刻只有一个核心写入帧缓冲区。 3. **负载均衡**:确保工作负载在各个核心...

    缓存技术浅谈

    常见的缓存层次包括CPU缓存、内存缓存和分布式缓存。 2. **缓存策略**:包括LRU(Least Recently Used)最近最少使用、LFU(Least Frequently Used)最不经常使用、FIFO(First In First Out)先进先出等,这些策略...

Global site tag (gtag.js) - Google Analytics