介绍内存一致性(Memory Consistency)和缓存一致性(Cache Coherence)

为了追求PPA(高性能、低功耗和低成本),许多现代计算机系统和多核(处理器)芯片都支持共享硬件内存。在存在共享内存的存储器系统中,每个处理器都可以读写某个共享地址空间。

在支持共享内存之前最重要的是保证内存读写的正确性。这就涉及两个概念:内存一致性(Memory  Consistency)缓存一致性(Cache Coherence)

内存一致性(或者说内存模型、内存一致性模型),保证了不同处理器共享内存操作的一致性。内存一致性模型的复杂性主要来源于多个核心线程的同时load和store操作,并且这些操作还是out of order的。

内存一致性(Memory  Consistency)

内存一致性根据loads 和stores 操作来定义正确的共享内存行为。首先举一个例子说明为什么需要内存一致性模型:某大学在网上发布课程表。假设计算机体系课程最初计划在152教室进行,在上课的前一天授课老师决定把课程调到252教室,并告诉网站管理员更新课程表。几分钟后网站管理员向所有学生发送一条短信,提醒检查新更新的课程表。不难想象存在这样一种场景:线上的课程表未及时得到更新、某些学生去了错误的房间。本质上,这涉及到了不同进程对共享内存请求的顺序问题。

 

内存一致性模型就是定义对于共享内存的哪些行为是正确或者说是允许的。这相当于给不同的进程建立一套规矩来保证各自请求到的数据都是正确的。

 

缓存一致性(Cache Coherence)

与内存一致性不同,缓存一致性是作为支持内存一致性模型的一部分。缓存一致性试图使共享内存系统的缓存(cache)数据与内存保持一致。也就是说内存一致性是从多核心的视角来看共享内存的一致性、而缓存一致性是cache和相应内存之间的一致性。


在讨论缓存一致性就需要考虑一个场景,即每个处理器核心或者说进程能够访问到多个数据副本(例如cache),cache中的数据和内存中的数据不一致也会存在功能性问题。

 

同样是上面的一个例子,某学生在最初查看在线课程时把152教室记录在了笔记本上(cache数据)。随后授课教师(网站管理员)更新线上课程表时,该学生的笔记本数据副本已经是错误的数据了,这就是所谓的缓存一致性问题。

 

同理,我们在项目中经常遇到的问题就是你和同事基于不同的代码版本从而run出不同的执行结果,原因就是坑爹的你或者你同事在本地修改了代码而没有上库,这就是。

 

简而言之,使用缓存一致性是为了防止同一个处理器看待内存和cache中数据不一致性、而内存一致性是为了防止不同处理器看待内存中数据的不一致性。

  • 16
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《关于内存一致性缓存一致性的简明知识指南》是一本关于计算机内存一致性缓存一致性的PDF文件。该文件提供了对这两个概念的基本介绍和详细解释。 计算机系统通常包含多个处理器和多级缓存,这些处理器同时访问共享的内存内存一致性缓存一致性是确保多个处理器对共享内存的访问保持正确顺序性的关键问题。 内存一致性是指在多处理器系统中,对共享内存的读写操作必须按照一定的顺序进行,以确保不会出现不一致的结果。这涉及到处理器之间的交互和数据的同步。 缓存一致性是指处理器的缓存与主存之间的数据一致性。当处理器对内存的写操作时,这些写操作可能首先被缓存,然后再写入主存。其他处理器可能会从缓存中读取数据,因此需要保证缓存中的数据与主存中的数据保持一致。 《关于内存一致性缓存一致性的简明知识指南》详细解释了各种内存一致性模型和缓存一致性协议,并介绍了如何在设计和实现多处理器系统时考虑这些问题。它还提供了一些示例,帮助读者更好地理解内存一致性缓存一致性的概念。 该知识指南还讨论了一些解决内存一致性缓存一致性问题的技术,如屏障指令、缓存一致性协议和一致性模型的优缺点等。读者可以通过阅读这本PDF文件深入了解内存一致性缓存一致性相关的概念和技术,从而更好地理解和优化多处理器系统的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值