【方辉专栏】ARM64体系结构编程与实践学习笔记(十) 缓存一致性介绍

1. 缓存一致性

缓存一致性是指在采用层次结构存储系统的控制器系统中保证高速缓冲存储器中数据与主存储器中数据相同的机制。

缓存一致性关注的是同一个数据在多个高速缓存和内存中的一致性问题。解决高速缓存的一致性的方法主要是总线监听协议。

缓存一致性根据系统设计的复杂度可以分为两大类:

多核之间的缓存一致性,通常指CPU簇内的处理器内核之间的缓存一致性。
系统之间的缓存一致性,包括CPU簇之间的缓存一致性及全系统间的缓存一致性。

 2. MESI协议

 缓存一致性方案可以通过多种标准方式进行操作。大多数 ARM 处理器使用 MOESI 协议,而 Cortex-A9 使用 MESI 协议。

MESI是四个单词首字母缩写Modified修改,Exclusive独占,Shared共享,Invalid无效,下面就简要介绍一下这四种状态。

M:表示当前CPU的高速缓存中的变量副本是独占的,而且和主存中的变量值不一致,而且别的CPU的flag不可能是这个状态。如果别的CPU想要读取变量的值,不能直接读主内存中的值,而是需要将处于M状态的变量刷新回主内存才可以。
E:表示当前CPU的高速缓存中的变量副本是独占的,别的CPU高速缓存中该变量的副本不能处于该状态,但是,处于E状态的高速缓存变量的值和主内存中的变量值是一致的。
S:处于S状态表示CPU中的变量副本和主存中数据一致,而且多个CPU都可以处于S状态,举例,当多个CPU读取主内存的值的时候高速缓存的flag就处于S状态。
I:表示当前CPU的高速缓存的变量副本处于不合法状态,不可以直接使用,需要从主内存重新读取,flag的初始状态就是I。

该协议的标准实现规则如下:

仅当高速缓存行处于已修改或独占状态时才能进行写入。如果处于 Shared 状态,则必须先使所有其他缓存的副本失效。写入将行移动到修改状态。
缓存可以随时丢弃共享行,变为无效状态。修改后的行首先被写回。
如果一个缓存保持一行处于 Modified 状态,那么从系统中的其他缓存读取数据将从缓存中获取更新的数据。按照惯例,这是通过首先将数据写入主存储器,然后在执行读取之前将高速缓存行更改为共享状态来完成的。
当另一个高速缓存读取该行时,具有处于独占状态的行的高速缓存必须将该行移动到共享状态。
共享状态可能不准确。如果一个缓存丢弃了共享行,另一个缓存可能不知道它现在可以将该行移动到独占状态。

 

相关软件
Logo
ARM DS5 开发套件
ARM DS5 开发套件是端到端的基于Arm核的嵌入式C/C++的软件开发套件。开发套件包括Arm编译器、DS5调试器、Streamline性能分析、固定虚拟平台及Eclipse集成开发环境。使用 DS-5,可以轻松地为基于 arm 处理器的平台开发 Linux 应用程序。它降低了学习难度,缩短了开发和测试周期,帮助您快速生成可靠的应用程序。 经济实惠的专业解决方案,适用于以 C/C++ 开发 Linux 和 Android 应用程序和库的开发人员。它利用诸如以太网和 USB 等标准连接进行应用程序调试和系统性能分析。适用于基于 Linux 的系统的端对端软件开发工具。此外还提供裸机和内核级别的调试与跟踪功能。也包含了ARM唯一和处理器联合开发的商用编译器,提供强大完善的技术支持。
2,980浏览  |  厂商已入驻提供最新报价
相关厂商
logo
上海亿道电子技术有限公司
1.2w浏览
亿道电子技术有限公司 亿道电子技术有限公司是国内资深的研发工具软件提供商,公司成立于2002年,面向中国广大的制造业客户提供研发、设计、管理过程中使用的各种软件开发工具,致力于帮助客户提高研发管理效率、缩短产品设计周期,提升产品可靠性。 20多年来,亿道电子已经与全球多家知名企业,包括ARM、ARM、Altium、Ansys、Qt、GreenHills、Perforce、Minitab、EPlan、QA Systems、 OpenText、Visu-IT、 PLS、 Ashling、 HEXAGON、IncrediBuild、 Adobe、 BETA等建立了稳固的战略合作伙伴关系,并作为他们在中国区的主要分销合作伙伴服务了数千家本土客户,为客户提供芯片级开发工具、EDA设计工具、软件编译以及测试工具、结构设计工具、仿真工具、电气设计工具、以及嵌入式GUI工具等软件工具。亿道电子凭借多年的经验积累,真正的帮助客户实现了让研发更简单、更可靠、更高效的目标。...
 
相关阅读
返回顶部