谈起内存时,常见的三个词 contiguous  consistent coherent

本文解析了内存管理中的contiguous(连续)、consistent(一致性)和coherent(一致性缓存)的区别,涉及多核处理器中线程同步、内存操作顺序和Cache一致性问题。通过硬件与软件角色,探讨了如何确保多线程环境下内存操作的正确性。
摘要由CSDN通过智能技术生成

谈起内存,经常谈到了三个词 contiguous /  consistent / coherent  ,这里想区别一下。

1、contiguous

contiguous memory allocator  连续内存分配器  CMA 

 contiguous 更多的来指内存的连续性,而 consistent 和 coherent 更多指是操作内存时,发生的一些状况。

2、consistent

比如,在多核处理器上,一个进程的多个线程可能并发地运行在多个物理PE上,这个时候,对于共享的内存区域就必须考虑到Consistent的问题。
简单来说,就是多个需要保证读写在不同master之间的顺序性。如何保证呢,load-acquire/store-release,或者加锁,或者做memory barrier。

对于Consistent而言,硬件只提供解决Consistent的机制,而软件需要自行使用这些机制来保证Consistent。
 

3、coherent

 Coherent。当一份数据可以有多份拷贝的时候,就会出现Coherent问题。Coherent出现的最典型情况就是Cache的引入。

要保证cache的一致性,

总结一下,Consistent是由于多个Master对同一块内存区域的读写顺序造成的问题,只能由硬件提供相关的机制,由软件来保证。而Coherent则是由于同一块内存区域可能有多份拷贝(主要是Cache)而造成的数据的不一致性,可以由硬件来保证。

 

Reference:

1、PE 指的是 Process Element, 就是逻辑核心(logic core),一个逻辑核心上可以跑一个线程。这个概念引出是由于现在有很多双线程的处理器(double-thread core),可以一个核心运行两个完全不同的任务/线程, 一个当两个用,所以不能单单当成一个核了,就说一个核有两个PE。1个PE可以跑1个线程(thread)。PE指的是硬件,线程是跑在PE上的软件。
比如说因特尔的i7-4790K,就是4核8线程处理器,每个核有两个线程,也就是有8个PE。

2、内存体系中的Consistent和Coherent

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值