CXL Bias Mode (1) - Bias Mode 背景与分类



🔥点击查看精选 CXL 系列文章🔥
🔥点击进入【芯片设计验证】社区,查看更多精彩内容🔥


📢 声明

  • 🥭 作者主页:【MangoPapa的CSDN主页】。
  • ⚠️ 本文首发于CSDN,转载或引用请注明出处【https://mangopapa.blog.csdn.net/article/details/131842121】。
  • ⚠️ 本文目的为 个人学习记录知识分享。因个人能力受限,存在协议解读不正确的可能。若您参考本文进行产品设计或进行其他事项并造成了不良后果,本人不承担相关法律责任。
  • ⚠️ 若本文所采用图片或相关引用侵犯了您的合法权益,请联系我进行删除。
  • 😄 欢迎大家指出文章错误,欢迎同行与我交流 ~
  • 📧 邮箱:mangopapa@yeah.net
  • 💬 直达博主:loveic_lovelife 。(搜索或点击扫码)

文章目录

  • 1. Bias Mode 背景与分类
    • 1.1 Bias 背景
    • 1.2 Bias 分类
      • 1.2.1 Host Bias
      • 1.2.2 Device Bias
  • 2. 实现 Bias Mode 的要求
  • 3. Bias Mode 管理与示例
  • 4. Q&A
  • 5. 参考


  CXL Bias Topic 分以下 3 部分,本篇是第 1 篇。

  • CXL Bias Mode (1) - Bias Mode 背景与分类👈
  • CXL Bias Mode (2) - 实现 Bias Mode 的要求
  • CXL Bias Mode (3) - Bias Mode 管理与示例

  为便于描述,Host Bias Coherency Model 在下文中简写为 Host Bias,Device Bias 同理。当我们提到 Accelerator 时,是指 Device 中的 Accelerator;当我们提到 Device Memory 时,是指 Accelerator-attached Memory;当我们提到 HDM-DB 时,单指 Type 2 Device 中的 HDM-DB Memory。



1. Bias Mode 背景与分类

1.1 Bias 背景

  我们知道,对于 Type 1 Device,Device 可以访问到 Host Memory,由 Host LLC 中的 Local Snoop Filter 来管理其在 Host CPU Cache Hierarchy 及 Device Cache 中的缓存一致性。对于 Type 2 Device,Host 同样可以访问到 Device Memory。按照 Type 1 的逻辑,理应由 Device 中的 DCOH 来维护缓存一致性。但显然 CXL 没有这么干,而是提出了一种 Bias Based Coherency Model,基于偏向性的一致性模型。

  为什么这么干?我们回忆下 CXL 三大主打特性:一致性接口、低延时、非对称复杂度。显然,CXL 是要通过这种带有偏向性的模型来降低 Device 端的设计复杂度。



1.2 Bias 分类

  Type 2 Device 中的 HDM-D 及 HDM-DB 区域的 Coherency Model 支持两种 Bias Mode:Host Bias 及 Device Bias,偏向谁就由谁来管理缓存一致性。Host Bias 即偏向 Host,该 Memory 区域跟 Host Memory 无异,由 Host Coherent Bridge 管理一致性;Device Bias 即偏向 Device,Device 来保证外部没有该区域的 Cacheline 副本,由 Device DCOH 管理缓存一致性。

  注意:这两种 Bias Mode 都是 HDM-D 或 HDM-DB 的,切勿认为 HDM-H 是 Host Bias、HDM-D 是 Device Bias 。Type 2 Device 中的 HDM-DB 也支持 Bias Mode。

1.2.1 Host Bias

  Host Bias Coherent 是一种 Host 管理下的缓存一致性模型。若 HDM-D/DB Region 为 Host Bias,其地位跟 Host Memory 相同,既可以缓存在 Host Cache 供 Host CPU 直接取用, 也可以缓存在 Device Cache 内供 Device 内的 Accelerator 用,由 Host 中的 LLC Local SF 管理缓存一致性。

  Host、Device 访问 HDM-D/DB Host Bias 区域时的数据流向图。如环路①,对于 Host,其可以直接访问到 Device Memory 中的 Host Bias 区域;如环路②,对于 Device,其访问 Device Memory 中的 Host Bias 区域时需要向 Host 发起 D2H Cache 请求,Host 通过 CXL.mem 将该请求转发回 Device DCOH,Device 内部完成数据访问,无需反馈 Rsp 或 Data 给 Host。

在这里插入图片描述

Type 2 Device - Host Bias

  显然,Host Bias Mode 下的 Device Memory 更有利于 Host 访问,对 Device 访问较为不利。因此,Host Bias 常用于 Host 直接 Load/Store 访问 Device Memory 的场景。

1.2.2 Device Bias

  Device Bias Coherent 是一种 Device 管理下的缓存一致性模型。若 HDM-D/DB Region 为 Device Bias,该 Region 只能缓存在 Device Cache,不能缓存在 Host Cache,也不能缓存在 Remote CPU Cache 内。

  说白了,Device Bias 区域只对 Device 开放 Cacheable 权限,是一种 Device Cache 独享的 Cacheline。因为独享,所以 Device Cache 对该 Cacheline 做任何操作都不需要跟 Host 及 Remote CPU Clusters 交互,不需要跟该 Device 之外的 Cache 做 Snoop 等一致性管理。这样一来能够 降低设计复杂度,二来能够降低 Device 访问 HDM 流程上的复杂度从而 降低时延提升吞吐量(Throughput)。

  下图是 Device、Host 访问 HDM-D/DB Device Bias 区域时的数据流向图。如环路①,Device 可以对 Device Memory 内的 Device Bias 区域进行访问,无需绕道 Host,没有任何 CXL 链路上的.cachemem 操作;如环路②,Host 仍然可以访问到 Device Bias 区域并根据请求类型将该 Data Line 缓存在 Host Cache 中,但是 Device 可以通过环路③将其在 Host Cache 内的 Cacheline Invalidate 掉,使 Host 丧失该 Cacheline 的相关权限。

在这里插入图片描述

Type 2 Device - Device Bias

  显然,Device Bias Mode 下的 Device Memory 更有利于 Device 访问。因此,Device Bias 常用于 Device 直接 Load/Store 访问 Device Memory 的场景。

  不是说 Device Bias 区域只能缓存在 Device Cache 中、不能缓存在 Host Cache 中么?上图环路②访问后将相关 Data Line 缓存在 Host Cache 该作何解释?以下是笔者的理解:

  Host 在发起访问 Device Memory 访问请求时,其并不知道该区域的 Bias Mode 也无需知道。如果访问的区域为 Device Bias 且请求获得该 Data Line 的 Shared 或 Exclusive 权限,Device DCOH 会处理一致性并 姑且同意 该请求。在同意请求后,Device Cache 内该 Data Line 已经变为了 Shared 或 Invalid,该区域 实际已经变为了 Host Bias 。如果 DCOH 觉得维持在 Host Bias 没问题,那就继续保持该状态,心甘情愿将 Bias Mode 切换为 Host Bias,Host 内的 Local SF 会监测该 Data Line 在 Host Cache 内的副本并维护缓存一致性;如果 DCOH 觉得有问题,Device 仍要继续独享该 Data Line,其不打算让出该 Data Line 的 Cache 权限,其可以通过 CXL.cache 发送 RdOwnNoData 或者通过 CXL.mem 发送 S2M BISnp*给 Host 要求其放弃 Cache 中的该 Cacheline,仍然由 Device Cache 独享该 Cacheline,重新切回到 Device Bias。这个 Device 发起的 Bias Flip 的操作,即 Spec 中所言的 “The host may be forced to give up ownership by the accelerator“。



2. 实现 Bias Mode 的要求

CXL Bias Mode (2) - 实现 Bias Mode 的要求


3. Bias Mode 管理与示例

CXL Bias Mode (3) - Bias Mode 管理与示例



4. Q&A

  1. Bias Mode 是什么?
    Type 2 Device Memory 中 Page 的偏向性,决定了谁来直接管理其一致性。
  2. Bias Mode 存放在哪?谁来管理?
    直接放在 Device 中的 Bias Table,由 DCOH 来直接管理。Host 可以通过 SF 或访问 Meta 来推测或间接更新 Bias Mode。
  3. Host 能看到 Bias Mode 吗?
    Host 无法直接看到确切的 Bias Mode,其可以通过 SF 或访问 Meta 来推测或间接更新 Bias Mode。
  4. HDM-DB 也有不同的 Bias Mode 吗?
    Bias Mode 是 Type 2 Memory 的属性,Type 2 类型的 HDM-D 及 HDM-DB 均支持 Bias Mode。
  5. 两者不同的 Bias 切换方式中,由谁发起 Bias 切换?
    软件和硬件都可以发起 Bias Mode 切换请求。
  6. 不同的 Bias Mode 应用场景是什么?
    Host Bias 常用于 Host 分配任务或回收出运算结果,Device Bias 常用于 Accelerator 运算。


5. 参考

  1. CXL Base Spec, r3.0
  2. CXL 简介_maxwell2ic 的博客-CSDN 博客
  3. CXL 协议(1.1 版本)学习笔记(一) - 知乎 (zhihu.com)
  4. CXL Meta Data 介绍

— END —


🔥 精选往期 CXL 协议系列文章,请查看【 CXL 专栏】🔥

⬆️ 返回顶部 ⬆️

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

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

相关文章

SUSE宣布推出免费RHEL分叉以保留企业级Linux的选择权

导读在Red Hat宣布将限制AlmaLinuxOS或Rocky Linux等社区发行版对其公共仓库的访问后,最近Red Hat与IBM之间发生了一些争论,有鉴于此,SUSE今天宣布计划为RHEL和CentOS用户提供一个免费的替代方案。 SUSE已经开发了SUSE Linux Enterprise (SLE…

【问题记录】Ubuntu 22.04 环境下,打开 VS Code 老是访问密钥环该怎么解决?

目录 环境 问题情况 解决方法 环境 VMware Workstation 16 Pro (版本:16.1.2 build-17966106)ubuntu-22.04.2-desktop-amd64 问题情况 在Ubuntu下,每次运行 VS Code时,老是提示要输入密钥密码来解锁保存在密钥环&am…

C语言程序运行需要的两大环境《C语言进阶》

目录 程序的翻译环境和执行环境 翻译环境分为两部分,编译链接 第一步:预编译(预处理) 第二步,编译 第三步:汇编 关于运行环境分为四点: 关于链接库 程序的翻译环境和执行环境 在 ANSI C(标…

【全面解析】Windows 如何使用 SSH 密钥远程连接 Linux 服务器

创建密钥 创建 linux 服务器端的终端中执行命令 ssh-keygen,之后一直按Enter即可,这样会在将在 ~/.ssh/ 路径下生成公钥(id_rsa.pub)和私钥(id_rsa) 注意:也可以在 windows 端生成密钥,只需要保证公钥在服务器端,私钥…

Apache Struts2漏洞复现之s2-001漏洞复现

0x01 声明: 仅供学习参考使用,请勿用作违法用途,否则后果自负。 0x02 简介: Apache Struts 2是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构。它利用并延伸了Java ServletAPI,鼓励开发者采用MVC架构…

Android ObjectBox数据库的使用与详解

一、介绍 Room数据库 之前我已介绍了jetpack组件的数据库:Room,有小伙伴需要了解Room数据库可以查看这个地址:Android JetPack组件之Room数据库的集成与详解_android room数据库_蜗牛、Z的博客-CSDN博客 数据库的性能对设备来说很重要&#…

安全开发-JS应用原生开发JQuery库Ajax技术加密编码库断点调试逆向分析元素属性操作

文章目录 JS原生开发-文件上传-变量&对象&函数&事件JS导入库开发-登录验证-JQuery库&Ajax技术JS导入库开发-编码加密-逆向调试 JS原生开发-文件上传-变量&对象&函数&事件 1、布置前端页面 2、JS获取提交数据 3、JS对上传格式判断 <script>…

抖音seo开源源码,抖音优化系统定制方案

抖音作为目前最火热的短视频平台之一&#xff0c;其在移动互联网领域的影响越来越大。然而&#xff0c;一款成功的产品未必仅仅靠着其自身的功能和品质就能获得市场的认可&#xff0c;还需要通过优化SEO来实现更好的曝光率。下面&#xff0c;本文将介绍如何优化抖音SEO源码开发…

Vue3通透教程【十六】TS编译配置

文章目录 &#x1f31f; 写在前面&#x1f31f; 初始化配置文件⭐ target⭐ module⭐ lib⭐ types/node⭐ include⭐ outDir&#x1f31f; 写在最后 &#x1f31f; 写在前面 专栏介绍&#xff1a; 凉哥作为 Vue 的忠实 粉丝输出过大量的 Vue 文章&#xff0c;应粉丝要求开始更…

【英杰送书第三期】Spring 解决依赖版本不一致报错 | 文末送书

Yan-英杰的主 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 问题描述 报错信息如下 报错描述 解决方法 总结 【粉丝福利】 【文末送书】 目录&#xff1a; 本书特色&#xff1a; 问题描述 报错信息如下 Description:An attempt…

Data Transfer Object-DTO,数据传输对象,前端参数设计多个数据表对象

涉及两张表的两个实体对象 用于在业务逻辑层和持久层&#xff08;数据库访问层&#xff09;之间传输数据。 DTO的主要目的是将多个实体&#xff08;Entity&#xff09;的部分属性或多个实体关联属性封装成一个对象&#xff0c;以便在业务层进行数据传输和处理&#xff0c;从而…

Python 算法基础篇:冒泡排序和选择排序

Python 算法基础篇&#xff1a;冒泡排序和选择排序 引言 1. 冒泡排序算法概述2. 冒泡排序算法实现实例1&#xff1a;冒泡排序 3. 选择排序算法概述4. 选择排序算法实现实例2&#xff1a;选择排序 5. 冒泡排序与选择排序的对比总结 引言 冒泡排序和选择排序是两种常用的排序算法…

高校大数据教材推荐-《Python中文自然语言处理基础与实战》

《Python中文自然语言处理基础与实战》是“十四五”职业教育国家规划教材&#xff0c;是大数据应用开发&#xff08;Python&#xff09;“1X”职业技能等级证书配套系列教材。本书以项目为载体&#xff0c;突出职业技能。坚持理实一体化的理念。理实一体化&#xff0c;就是理论…

iOS--虚拟内存

参考文章 要想了解什么是VM Regions&#xff0c;就得先了解什么是虚拟内存。当我们向系统申请内存时&#xff0c;系统并不会给你返回物理内存的地址&#xff0c;而是给你一个虚拟内存地址。每个进程都拥有相同大小的虚拟地址空间&#xff0c;对于32位的进程&#xff0c;可以拥有…

面试 | 双法妙解压缩字符串【遍历统计 + 双指针】

一、题目描述 原题传送门 二、思路分析 首先我们来分析一下解决本题所需要的思路 题目的意思很简单&#xff0c;就是统计原本的字符串中的每个字符出现的次数&#xff0c;然后以【字符&#xff0c;出现的次数】这样的结构来字符串&#xff0c;以起到一个压缩的效果&#xff0c…

网络安全:密码学基本理论.

网络安全&#xff1a;密码学基本理论. 密码学是研究编制密码和破译密码的技术科学。研究密码变化的客观规律&#xff0c;应用于编制密码以保守通信秘密的&#xff0c;称为编码学&#xff1b;应用于破译密码以获取通信情报的&#xff0c;称为破译学&#xff0c;总称密码学. 目录…

ffmpeg离线安装ffmpeg-4.1.4-amd64-static.tar.xz

1.下载离线包 John Van Sickle - FFmpeg Static Builds 找历史版本&#xff1a;Index of /ffmpeg/old-releases 我选择是的4.1.4版本 2.解压 tar -xvJf ffmpeg-4.1.4-amd64-static.tar.xz 3.移动文件到opt目录下 4.添加全局链接 ln -s /opt/ffmpeg-4.1.4-amd64-static/ffm…

在macOS、Windows上使用VSCode + SSH实现远程Matplotlib图形显示

简介 在 macOS 上使用 VSCode SSH 环境来显示 Matplotlib 绘制的图形需要进行一些配置。因为默认情况下&#xff0c; Matplotlib 的图形是无法显示在远程计算机的桌面上的。您可以通过设置 Matplotlib 使用不同的后端(backend)来实现将图形显示在本地计算机上。 第一步&…

Docker安装Nacos2.0.2

docker拉取镜像 docker pull nacos/nacos-server:2.0.2查看镜像 docker images创建容器和运行 docker run -e JAVA_OPTS"-Xms256m -Xmx256m" -e MODEstandalone -e PREFER_HOST_MODEhostname -p 8848:8848 --privilegedtrue --restartalways --name nacos -d naco…

小程序制作教程

步骤一&#xff1a;规划和设计 在开始制作微信小程序之前&#xff0c;首先需要规划和设计您的小程序。确定您想要提供的服务或功能&#xff0c;并考虑用户体验和界面设计。绘制草图和构思完整的页面布局&#xff0c;这将使您更好地理解小程序结构和功能。 步骤二&#xff1a;…