coherence的基本概念

考虑上面这个比较简化的系统:

  • 多核,每个核有多个线程;
  • 多核间存在share memory;
  • 每个核的多个线程,都可以同时对share momory进行load & store;
  • 每个核有自己私有的data cache;
  • 多核间有share的LLC;

1. incoherent是怎么产生的?

  •   初始状态下, A地址的值为42,该值被load到了各个cores的cache中;
  •   time1时刻点,core1 修改了该地址的值,42->43;
  •   而time1~n, 因为之前已经load到本地的cache, Core1的修改,core2不知道,所以core2仍然使用旧的值在运行;
  •   => 所以需要cache coherence protocal来保证不同核之间,访问相同地址的同步性;

2. 如何解决incoherent的问题?

  • 核心解决思路:coherence protocol必须使得,write对于所有的processor是可见的; 
  • 为了更好的理解,我们抽象出coherence-interface来说明:

core通过cohenrence接口与coherence协议进行交互,该交互方式提供两种接口:

  • read-request: 传递一个地址信息,返回数据;
  • write-request:传递一个地址信息和value, 返回响应;

目前主流的coherence protocal可以分为两类,主要的依据为:consistency model和coherence是否可以清晰的分离开;

  • Consistency-agnostic coherence:
    • write可以在还没有返回响应之前,就被其他的core观察到;
    • 相当于,这种设计,每个core感觉不到cache的存在,每个人都觉得是在跟一个原子内存系统交互;
    • Cache coherence 协议将缓存完全抽象出来并呈现出原子内存的错觉,就好像缓存被移除一样,只有内存包含在 coherence 框内;
    • 此时orderings完全通过core中pipeline按照consistency model的规范来进行order;
  • Consistency-directed coherence
    • write的传播是异步的,在响应返回之后的一段时间内,才让别的core可以观察到这个写;
    • 也就是说,其他core可以观察到老的value;
    • 但是,此种coherence,必须保证,最终其他的core可以观察到最新值,并且观察到的顺序,必须与consistency规定的顺序一致;
    • 这种coherence, 一般用在GP-GPU;

3. 什么是coherence invariants?

        Coherence 协议必须满足哪些不变量 (invariants) 才能使缓存不可见并呈现原子内存系统的抽象?

  •  SWMR invariant (single-writer–multiple-reader)
    • 对于任意给定的地址,在任何一个时刻点, 要么有一个core可以写入它(也可以读取它),要么有一些core可以读取它;
    • 也可以理解为,每个地址的lifetime, 被分成了多个时间片段,在某个时间片段上:
      • 要么有某个核有read-write的access;
      • 要么其他core有read-only access;
  • data value invariant
    • 考虑上面的例子,虽然上面的例子满足SWMR,但是可能出现如下场景;
      • epoch1, core 2/5同时读取,但是每个core读到的数据不同;
      • epoch3, core1读到的数据,不是epoch2刚刚写入的数据;
      • 同理,epoch4, 读到的数据,不是epoch3刚刚写入的数据;
    • 这些都是不符合coherence的;
    • 因此,coherence的定义,还需要增加data value invariant, 该不变量表明,一个时期开始时的内存位置值与其最后一个读写时期结束时的内存位置值相同。

4. coherence协议是如何来维护上述的两个invariants的?

  • 绝大多数的coherence协议,都是invalidate protocols,都是设计来保证上述的两个invariant的;
  • 读操作流程如下:
    • core x 要读取内存中某一个地址;
    • 往其他core发送消息,获取该地址的数据,确保没有其他的core有这个地址的read-write state cache copy;
    • 上述操作之后,相当于在figure 2.3中,结束了一个read-write epochs, 开始了一个read-only epochs;
  • 写操作流程如下:
    • core x要写某一个地址;
    • 发送消息给其他核,如果当前core x没有该地址的read-only cache copy, 则获取该地址的最新值,同时确保其他的核,没有read-only/read-write的cache-copy;
    • 上述操作之后,相当于在figure 2.3中,结束了一个read-only/read-write的epochs, 开始一个read-write epochs;

5. coherence的粒度

  •  理论上来讲,coherence的粒度可以是任意值;
  •  实际上是以cacheline为粒度;

6. Coherence 在哪些场景下适用?
        Coherence 的定义,无论我们选择哪种定义,仅在某些情况下相关,架构师必须意识到它何时适用,何时不适用。我们现在讨论两个重要问题。

  • Coherence 适用于持有共享地址空间中的块的所有存储结构。这些结构包括 L1 数据缓存、L2 缓存、共享的最后一级缓存 (LLC) 和主存。这些结构还包括 L1 指令缓存和转换后备缓冲区 (TLB)
  • 程序员不能直接看到 coherence。相反,处理器流水线和 coherence 协议共同强制实施 consistency model,并且只有 consistency model 对程序员可见。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/670170.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谷歌搜索引擎seo套餐是怎样的?

在谷歌搜索引擎优化(SEO)套餐方面,你会发现服务提供商通常提供多样化的定制服务,旨在满足不同业务的独特需求,下面一些关键点,帮助理解一个典型的SEO服务套餐可能包括哪些内容: 具体目标&#x…

引领智算变革,九章云极DataCanvas公司激活油气行业新质生产力

近日,“2024中国石油石化企业信息技术交流大会暨油气产业数字化转型高峰论坛”在京成功举办,九章云极DataCanvas公司携“油气行业AI智算服务全栈解决方案”震撼亮相,为油气行业数智化转型和新质生产力发展提供领先的技术视角和前瞻实战经验分…

(22)采集微信通讯录详情面板-微信UI自动化(.Net+C#)

整理 | 小耕家的喵大仙 出品 | CSDN(ID:lichao19897314) Q Q | 978124155 往期知识回顾 (1)C#开启探索微信自动化之路-微信UI自动化 (2)C#创建微信窗体自动化实例-微信UI自动化 (3)C#针对系统热键管理-微信UI自动化 (4)C#采集微信通讯录…

MoonBit 开源之夏重磅来袭!12000元奖金等你来拿!

宣讲视频 MoonBit 开源之夏宣讲视频 关于我们 开源之夏 「开源之夏 (OSPP)」是中科院软件所「开源软件供应链点亮计划」指导下的系列暑期活动,旨在鼓励在校学生积极参与开源软件的开发维护,培养和发掘更多优秀的开发者,促进优秀开源软件社区…

OpenSSL实现AES-CBC加解密,可一次性加解密任意长度的明文字符串或字节流(QT C++环境)

本篇博文讲述如何在Qt C的环境中使用OpenSSL实现AES-CBC-Pkcs7加/解密,可以一次性加解密一个任意长度的明文字符串或者字节流,但不适合分段读取加解密的(例如,一个4GB的大型文件需要加解密,要分段读取,每次…

根据相同的key 取出数组中最后一个值

数组中有很多对象 , 需根据当前页面的值current 和 数组中的key对比 拿到返回值 数据结构如下 之前写法 const clickedItem routeList.find(item > item.key current) // current是当前页 用reduce遍历数组返回最后一个值 const clickedItem routeList.reduce((lastIte…

OpenCV 入门(七)—— 身份证识别

OpenCV 入门系列: OpenCV 入门(一)—— OpenCV 基础 OpenCV 入门(二)—— 车牌定位 OpenCV 入门(三)—— 车牌筛选 OpenCV 入门(四)—— 车牌号识别 OpenCV 入门&#xf…

ABAP 第二代增强-采购申请子屏幕增强

文章目录 第二代增强-采购申请子屏幕增强需求实现过程创建项目运行效果客户屏幕的PBO全局变量获取数据更新数据运行效果查询底表修改数据 第二代增强-采购申请子屏幕增强 需求 实现过程 创建项目 运行效果 客户屏幕的PBO 全局变量 *&------------------------------------…

社交媒体数据恢复:新浪微博

当我们在使用新浪微博时,可能会遇到一些意外情况,如误删微博、账号出现问题等。这时,我们需要进行数据恢复。本文将详细介绍如何在新浪微博中进行数据恢复。 首先,我们需要了解新浪微博的数据恢复功能。根据微博的帮助中心&#…

安卓跑马灯效果

跑马灯效果 当一行文本的内容太多,导致无法全部显示,也不想分行展示时,只能让文字从左向右滚动显示,类 似于跑马灯。电视在播报突发新闻时经常在屏幕下方轮播消息文字,比如“ 快讯:我国选手 *** 在刚刚结束…

1W 3KVDC 隔离 稳压单输出 DC/DC 电源模块——TPV-SAR系列

TPV-SAR系列产品是专门针对PCB上分布式电源系统中需要与输入电源隔离且输出精度要求较高的电源应用场合而设计。该产品适用于;1)输入电源的电压变化≤5%;2)输入输出之前要求隔离电压≥3000VDC;3)对输出电压…

LeetCode 面试经典150题 228.汇总区间

题目: 给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。 列表中的每个区…