多头 eRCD(Multi-Headed eRCD)

news2024/11/24 5:04:31


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


📢 声明

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

文章目录

  • 0. 引言
  • 1. 单 CPU 拓扑
  • 2. 多 CPU 拓扑
  • Q&A
  • 参考




0. 引言

  单个 eRCD 支持多个上行端口(Upstream Port,UP),多个 UP 可通过独立的 Flex Bus Link 直接连接到多个 eRCH 下行端口(Downstream Port,DP)上。eRCH 位于 CPU 内,根据该 eRCD 内多个 UP 上行连接的 CPU 数量,可分类为单 CPU 拓扑及多 CPU 拓扑。

  下述仅适用于直接跟 eRCH 相连的 eRCD,不适用于 CXL VH;也不适用于连接到 CXL Switch 上的 eRCD。



1. 单 CPU 拓扑

  若当前 eRCD 内的多个 UP 连接到同一 CPU 内的多个 eRCH DP,称为单 CPU 拓扑(如下图)。
在这里插入图片描述


  对于上图中的单 CPU 拓扑,System Firmware 枚举期间两个 eRCD DP-eRCD UP 形成的链路会被识别为两个 PCI 主桥,且两个 eRCD UP 的 Device0 Function0 均会实现该 RCD 所需的 CXL DVSEC 及 PCIe Device Serial Number Extended Capability。两配置空间提供的 Vendor ID 及设备序列号相同,System Firmware 可依此判断出两者同属一个 CXL Device,并进行相关流程或配置上的优化。

  采用该拓扑时,允许 CXL 设备驱动屏蔽其中一个 D0F0,即上层软件只向未屏蔽的 D0F0 提交任务。即便如此,在不违反编程模型的前提下,eRCD 内的硬件仍能通过任意一个 UP 向 CPU 发 Traffic 或进行 Snoop。

  采用该拓扑时,则两个 UP 的 Mem_Capable 能力及 Mem_Size 需求可以独立进行配置并映射到系统地址空间,相关解码规则如下表所示。

在这里插入图片描述


  根据上表有以下结论:

  • 若两个 UP 均支持 CXL.mem 且独立分配了地址空间,则两个链路独立访问各自的 HDM Range;
  • 若两个 UP 均支持 CXL.mem 但只有一个分配了空间,则可以通过两个 Link 进行 Interleave 访问,带宽更大。


2. 多 CPU 拓扑

  若当前 eRCD 内的多个 UP 连接到多个 CPU 内的多个 eRCH DP,称为多 CPU 拓扑(如下图)。

在这里插入图片描述


  跟单 CPU 拓扑相同,对于上图中的双 CPU 拓扑,System Firmware 枚举期间两个 eRCD DP-eRCD UP 形成的链路会被识别为两个 PCI 主桥,且两个 eRCD UP 的 Device0 Function0 均会实现该 RCD 所需的 CXL DVSEC 及 PCIe Device Serial Number Extended Capability。两配置空间提供的 Vendor ID 及设备序列号相同,System Firmware 可依此判断出两者同属一个 CXL Device,并进行相关流程或配置上的优化。

  跟单 CPU 拓扑相同,采用该双 CPU 拓扑时,允许 CXL 设备驱动屏蔽其中一个 D0F0,即两个 CPU 中的上层软件只向未屏蔽的 D0F0 提交任务。这在不支持在多 Function 间进行分布式计算的 Accelerator 框架或上层应用的场景中很有必要。即便如此,在不违反编程模型的前提下,eRCD 内的硬件仍能通过任意一个 UP 向 CPU 发 Traffic 或进行 Snoop。为了减少无效的 Snoop,eRCD 加速卡需要能够区分两个 CPU 的系统空间,从而将 Snoop 送到对应的 CPU 域。ACPI SRAT 可以或者这些地址信息并通过 Device 自定义的机制把它告知给 eRCD 加速卡中的设备驱动。

  跟单 CPU 拓扑相同,采用该拓扑时,则两个 UP 的 Mem_Capable 能力及 Mem_Size 需求可以独立进行配置并映射到系统地址空间,相关解码规则如下表所示。

在这里插入图片描述


  根据上表有以下结论:

  • 若两个 UP 均支持 CXL.mem 且独立分配了地址空间,则两个链路独立访问各自的 HDM Range;
  • 只有支持 CXL.mem 且分配了 HDM 空间的 UP,才能通过其链路访问其 HDM 范围;
  • 若两个 UP 均支持 CXL.mem 但只有一个分配了空间,则只有支持 CXL.mem 的链路能够访问其 HDM 范围,另一链路不能访问,也不支持 Interleaving 访问。


Q&A

  1. 为什么不适用于 VH,为什么不适用于 DSP?


参考

  1. CXL Base Spec, r3.0

— END —


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

⬆️ 返回顶部 ⬆️

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

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

相关文章

在哪里申请SSL证书

其实只是单纯的申请SSL证书来说,渠道还是比较多的。只是需要格外注意在申请SSL证书的过程中,对于自身需求的认知。 首先最重要的是,该证书是否可信。就目前而言,非可信根的证书是无法与主流浏览器兼容的,会时常发生风险…

503 Service Temporarily Unavailable nginx 原因和解决办法

前言 HTTP 503 Service Temporarily Unavailable 错误通常表示服务器无法处理请求,可能是由于服务器过载、维护或其他临时性问题导致的。在 Nginx 中,这种错误通常与后端服务的可用性问题相关。以下是可能的原因和解决办法: 正文…

RTC实时时钟之读取时间

1. RTC 基本介绍 RTC(Real Time Clock) 即实时时钟,它是一个可以为系统提供精确的时间基准的元器件,RTC一般采用精度较高的晶振作为时钟源,有些RTC为了在主电源掉电时还可以工作,需要外加电池供电 2. RTC 控制器 2.1 RTC的特点是:…

VxTerm:SSH工具中的中文显示和乱码时的相关信息和一些基本的知识

当我们写的程序含有控制台(Console)输出时,如果输入内容包含中文时,我们一般需要知道下面的信息,才能正确的搞清楚怎么处理中文显示的问题: 1、实际程序或文件中的实际编码: Linux下的应用程序和文本文件,…

mkcert的安装和使用,5分学会在本地开启localhost的https访问方式

mkcert官方仓库地址:https://github.com/FiloSottile/mkcert#installation mkcert 是一个简单的工具,用于制作本地信任的开发证书。它不需要配置。 简化我们在本地搭建 https 环境的复杂性,无需操作繁杂的 openssl 实现自签证书了&#xff…

【开源操作系统】上海道宁为您带来稳定、安全、开源和易用的操作系统——Ubuntu,为您的数字化生活保驾护航

Ubuntu是 源于非洲的一种传统价值观 意为“人性、关爱和共享” 这种价值观在 开源、稳定、安全、易用的 Ubuntu操作系统中 得到了完美的体现 除此之外,Ubuntu还具有 强大的安全性 它自带了诸多安全功能 如防火墙、加密文件系统等 可以有效地保护用户的隐私…

CRF条件随机场学习记录

阅读建议 仔细阅读书[1]对应的序列标注章节,理解该方法面向的问题以及相关背景,然后理解基础的概念。 引言 威胁情报挖掘的相关论文中,均涉及到两部分任务:命名实体识别(Named Entity Recognition,NER&a…

【PyCharm教程】PyCharm 安装、卸载和升级包

PyCharm 为特定的 Python 解释器提供了安装、卸载和升级 Python 包的方法。默认情况下,PyCharm 使用 pip 来管理项目包。对于 Conda 环境,您可以使用conda 包管理器。 在 PyCharm 中,您可以在Python 包工具窗口和 Python 解释器Settings/Pre…

C语言——深入理解指针3

目录 1. 数组名的理解1. 数组名1.2 数组名理解的特例 2. 使用指针访问数组3. 一维数组传参的本质4. 冒泡排序4.1 冒泡排序的概念4.2 冒泡排序的优化 5. 二级指针5.1 二级指针的概念5.2 二级指针的运算 6. 指针数组7. 指针数组模拟二维数组 1. 数组名的理解 1. 数组名 在上⼀个…

重生奇迹MU 骑装选择攻略--剑士

剑士作为唯一一个攻防兼备的近战职业,战士大部分时间需要承担团队的坦克职责,因此我们需要尽可量的提升自己的血量以及防御属性,这样才能在面对敌人和大量野怪时保护好我方的后排目标,并且保证自己能够在猛烈的攻击下支撑更长的时…

HarmonyOS 线程讲解(任务分发、线程通信)

一、简单说明 说起鸿蒙的线程就不得不说Android的线程,相信都知道在Android中,每一个应用都会有自己的主线程和其他的子线程,主线程负责处理大部分业务,负责UI的显示和更新等操作,所以又称之为UI线程,同时…

Docker的使用方式

一、Docker概念 Docker类似于一个轻量的虚拟机。 容器和镜像是Docker中最重要的两个概念,镜像可以保存为tar文件,Dockerfile是配置文件,仓库保存了很多第三方已经做好的镜像。 基本指令 查找镜像 docker search nginx 拉取nginx镜像 do…

文件归类整理,文件归类软件

数字化时代,我们经常面对的一个问题是:电脑中的文件越积越多,找起东西来如同大海捞针。这个时候,一款好的文件归类软件无疑能够帮你节省大量的时间和精力。那还等什么?快来试试这款【文件批量改名高手】软件吧&#xf…

MyISAM和InnoDB区别

MyISAM是括全文索引、压缩、空间函数等,但MyISAM不支持事MySQL的默认数据库引擎(5.5版之前)。虽然性能极佳,而且提供了大量的特性,包务和行级锁,而且最大的缺陷就是崩溃后无法安全恢复。不过,5.…

Leetcode—1828. 统计一个圆中点的数目【中等】

2024每日刷题&#xff08;一零五&#xff09; Leetcode—1828. 统计一个圆中点的数目 实现代码 class Solution { public:vector<int> countPoints(vector<vector<int>>& points, vector<vector<int>>& queries) {vector<int> a…

WIN11 - WSL(Windows Subsystem for Linux) 安装教程

前言 WSL&#xff0c;即Windows Subsystem for Linux&#xff0c;是一种在Windows操作系统上运行Linux二进制文件的兼容层。该层提供了Linux环境和GNU工具&#xff0c;可以在Windows系统上运行Linux应用程序。WSL使得开发人员可以在Windows系统上使用Linux工具和命令行界面&am…

GIS系统的类型

GIS&#xff08;地理信息系统&#xff09;系统是一种用于采集、存储、管理、分析和展示地理信息的软件系统。这些系统可以根据其功能和应用领域划分为不同的类型。以下是一些常见类型的GIS系统以及在其开发中的关键考虑因素&#xff0c;希望对大家有所帮助。北京木奇移动技术有…

万兆电口模块10GBase-T:提升网络性能的利器

随着数字化时代的到来&#xff0c;数据传输速度已经成为各行各业不可或缺的一项需求。而在数据中心和企业网络中&#xff0c;网络设备也正面临着越来越高的带宽需求。在满足这一需求的过程中&#xff0c;万兆电口模块10GBase-T成为了一种重要的解决方案。本文将围绕万兆电口模块…

ElementUI组件:Link 文字链接

ElementUI安装与使用指南 Link 文字链接 点击下载learnelementuispringboot项目源码 效果图 el-link.vue页面效果图 项目里el-link.vue文件代码 <script> export default {name: el_link }</script> <!--https://element.eleme.cn/#/zh-CN/component/link …

数据结构—栈实现前缀表达式的计算

前缀表达式计算 过程分析 中缀表达式&#xff1a;&#xff08;1 5&#xff09;*3 > 前缀表达式&#xff1a;*153 &#xff08;可参考这篇文章&#xff1a;中缀转前缀&#xff09; 第一步&#xff1a;从右至左扫描前缀表达式&#xff08;已存放在字符数组中&#xff09;&a…