当前位置: 首页 > article >正文

CXL协议之FM(Fabric Management)解释

CXL协议中的FM功能详解

1. FM的核心作用

FM是CXL(Compute Express Link)架构中的核心管理实体,负责协调和管理CXL设备之间的通信、资源分配及拓扑结构。其核心功能包括:

设备发现与枚举:识别CXL拓扑中的设备(如Type 3设备、交换机等),并建立虚拟到物理的绑定关系(Virtual to Physical Binding)。
命令传递与响应处理:通过MCTP(Management Component Transport Protocol)接口直接或间接(通过交换机隧道)向CXL设备发送管理命令(如Set MCTP Event Interrupt Policy),并处理设备返回的响应或事件通知(Event Notification)。
资源池化管理:例如Type 3池化设备(Pooled PCIe/CXL Device)的逻辑设备(LD)和物理端口(PHY PORT)的动态分配,支持灵活的资源扩展与共享。

2. FM与CXL设备的通信机制

直接连接场景:
FM通过MCTP兼容的物理接口(如SMBus、PCIe VDM)直接与CXL设备通信。例如,通过PCIe根端口(Root Port)直接访问下游设备的CCI(Component Control Interface)。
在这里插入图片描述

示例:FM向CXL设备发送配置周期(Config Cycles)或内存访问请求,设备直接响应。
间接连接(隧道管理)场景:
当FM与目标设备之间存在CXL交换机时,FM通过Tunnel Management Command将命令封装并发送至交换机,指定目标设备的交换机端口(如PHY PORT 2)。交换机代理转发命令,并将响应返回给FM。
关键能力:交换机可代理FM执行配置操作(如代理配置周期、内存读写),简化FM对多层级拓扑的管理复杂度。

3. 事件通知机制

触发条件:当CXL组件支持事件通知且FM通过Set MCTP Event Interrupt Policy命令启用时,组件可主动向FM发送事件(如错误告警、状态变更)。
实现细节:事件通过MCTP消息传递,FM需解析事件类型(如SLD/MLD状态更新、物理端口链路变化)并采取相应管理动作。

4. FM的部署模式

独立FM:作为外部管理实体(如BMC的一部分),通过MCTP端点(MCTP EP)与CXL设备交互。
嵌入式FM:部分FM功能可内置于CXL组件(如交换机或设备固件),但其与硬件的通信接口属于厂商自定义实现,不在CXL规范范围内。

5. 示例拓扑解析(图7-18)

层级结构:
VCS 0/VCS 1:虚拟化上下文(Virtual Context)划分,支持多租户资源隔离。
逻辑设备(LD)与物理端口(PHY PORT):LD FFFF可能表示全局管理域,LD 0/LD 1为具体逻辑分区,通过vPPB(虚拟端口到物理端口绑定)映射到物理端口(如PHY PORT 0-4)。
交换机角色:CXL交换机负责跨端口(如Port 0-1与Port 2-5)的路由与隧道命令转发。

6. 关键协议与命令

Set MCTP Event Interrupt Policy:配置设备的事件通知策略(如使能/禁用特定事件类型)。
Tunnel Management Command:通过交换机隧道转发管理命令,需指定目标端口和操作类型(如配置代理、内存访问)。

总结

FM在CXL生态中扮演“中枢控制器”角色,通过标准化的MCTP接口和隧道机制,实现对复杂CXL拓扑(含交换机、池化设备)的统一管理。其设计兼顾了直接连接的效率与间接连接的灵活性,同时支持事件驱动的异步管理模型,为高性能计算与资源池化场景提供了关键基础设施支持。

相关文章:

CXL协议之FM(Fabric Management)解释

CXL协议中的FM功能详解 1. FM的核心作用 FM是CXL(Compute Express Link)架构中的核心管理实体,负责协调和管理CXL设备之间的通信、资源分配及拓扑结构。其核心功能包括: 设备发现与枚举:识别CXL拓扑中的设备&#x…...

用Promise实现ajax的自动重试

有时候遇到网络错误,希望可以多试几次,可以利用Promise递归调用实现 以若依系统的登出举例 export function logout() {return request({url: /logout,method: post}) } 修改下原本的登出逻辑,遇到ERR_NETWORK错误,也就是网络问…...

Unity URP 实现场景和UI添加后处理

在更新到URP之后,之前内置的渲染管线的那一套后处理已经无法使用,接下来,我们使用URP的内置后处理实现对场景和UI的后处理。 设置UI 如果UI需要使用后处理,在Canvas里,我们要选择Screen Space - Camera,然…...

搭建ISCSI传输的配置与管理

前提是: windows server2019设置成桥接模式,因为要让虚拟机和主机设置成一个网段,才能通过网络进行新建虚拟磁盘。 1.添加ISCSI角色 安装位置 选择文件和存储服务----------文件和iscsl 服务------------iscsl目标服务器 2.右上角点击任务&a…...

华为参访预约,团队考察体验黑科技之旅

华为参观学习背景 全球第1,中国骄傲 成立于1987年的华为,早在2013年其销售收入就已超过爱立信,成为全球行业第1名。2019年福布斯世界500强排名第61位,全球唯1一家没有上市的民营企业。目前,华为5G技术已经走在世界前沿…...

Java 设计模式之享元模式(Flyweight Pattern)

享元模式(Flyweight Pattern) 是一种 结构型设计模式,旨在通过共享对象来有效支持大量细粒度对象的复用,从而减少内存占用和提高性能。其核心是 分离内部状态(可共享)与外部状态(不可共享&#…...

C#入门学习记录(三)C#中的隐式和显示转换

C#类型转换:隐式与显式转换的机制与应用 在C#的强类型体系中,数据类型转换是实现数据交互和算法逻辑的基础操作。当数值类型范围存在包含关系,或对象类型存在继承层次时,系统通过预定义的转换规则实现类型兼容处理。隐式转换&…...

Rk3568驱动开发_设备树_9

什么是设备树? 以我目前的理解,设备树更像日常生活中用的地图,用户能根据地图去寻找到相应位置 设备树也是如此它描述了硬件设备的连接关系和配置信息,供 CPU(或者更准确地说,是操作系统内核)…...

一和零 (leetcode 474

leetcode系列 文章目录 一、核心操作二、外层配合操作三、核心模式代码总结 本题是一个01背包问题,只是背包是一个二维数组的背包,分别为0的个数不能超过m,1的个数不能超过n,而物品就是题目中的字符串,其容量为0和1的…...

深度学习:从零开始的DeepSeek-R1-Distill有监督微调训练实战(SFT)

原文链接:从零开始的DeepSeek微调训练实战(SFT) 微调参考示例:由unsloth官方提供https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen2.5_(7B)-Alpaca.ipynbhttps://colab.research.google.com/git…...

【AI News | 20250320】每日AI进展

AI Repos 1、servers 该仓库提供详细入门指南,用户可通过简单步骤连接Claude客户端,快速使用所有服务器功能。此项目由Anthropic管理,展示MCP的多样性与扩展性,助力开发者为大语言模型提供安全、可控的工具与数据访问。 2、awe…...

从零开始实现 C++ TinyWebServer 阻塞队列 BlockQueue类详解

文章目录 阻塞队列是什么?为什么需要阻塞队列?BlockQueue 成员变量实现 push() 函数实现 pop() 函数实现 close() 函数BlockQueue 代码BlockQueue 测试 从零开始实现 C TinyWebServer 项目总览 项目源码 阻塞队列是什么? 阻塞队列是一种线程…...

Linux驱动开发基础(can)

目录 1.can的介绍 2.can的硬件连接 2.1 CPU自带can控制器 2.2 CPU没有can控制器 3.电气属性 4.can的特点 5.can协议 5.1 can的种类 5.2 数据帧 5.2.1 标准数据帧格式 5.3.1 扩展数据帧格式 5.3 遥控帧 5.4 错误帧 5.5 过载帧 5.6 帧间隔 5.7 位填充 5.8 位时…...

5.2《生活中的透镜》——5.3《凸透镜成像规律》讲后再上

教会什么:照相机、投影仪、放大镜的原理 培养什么:(再说) 课标: (二)运动和相互作用 2.3 声和光 2.3.5了解凸透镜成像规律的应用。 例7 了解凸透镜成像规律在放大镜、照相机中的应用。 一、导入 提问:生活中有哪些透镜?(放大镜、照相机、投影仪/幻灯机) ——直接提出…...

【LangChain入门 3 Prompts组件】聊天提示词模板 ChatPromptTemplate

文章目录 一、 聊天信息提示词模板1.1 使用关键字1.2 使用SystemMessage, HumanMessage, AIMessage来定义消息1.3 使用MessagesPlaceholder 在特定未知添加消息列表 二、关键类介绍2.1 ChatPromptTemplate 类2.1.1 from_messages()2.1.2 format_messages()2.1.3 format_prompt(…...

fastadmin后台管理员日志指定方法不记录

做的订单提醒,只要在线会把日志自动存储进去,这个又是每30s执行一次,数据库没多久就爆掉了,最终找到一个处理方法,可能不是最好的,仅供大家参考 具体位置: application/admin/model/AdminLog.php里面的$ignoreRegex方法 protected static $ignoreRegex [/^(.*)\/(selectpage…...

leetcode热题100道——字母异位词分组

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "tea", "tan", "ate", "nat", &…...

MCU-芯片时钟与总线和定时器关系,举例QSPI

时钟源: 时钟源为系统时钟提供原始频率信号,系统时钟则通过(分频、倍频、选择器)成为整个芯片的“主时钟”,驱动 CPU 内核、总线(AHB、APB)及外设的运行。 内部时钟源: HSI&#x…...

力扣热题100(方便自己复习,自用)

力扣热题100 1. 两数之和 - 力扣(LeetCode) 查找两数之和是不是等于target也就是我们找到一个数之后,用target将其减掉,再寻找应当对应的元素是什么每找到一个数,我们就将其放在集合中,因为集合中可以去重…...

暂存合并分支

合并分支代码,冲突过多,没解决完 想切换分支,可以把合并暂存 先先 git add . 再git stash 恢复搁置: 查看当前的搁置列表: git stash list恢复特定的搁置 如果你想恢复特定的搁置更改,可以指定索引&a…...

力扣hot100——三数之和(双指针)

题目:三数之和 排序 双指针 本题的难点在于如何去除重复解。 算法流程: 1、特判,对于数组长度 n,如果数组为 null 或者数组长度小于 3,返回 []。 2、对数组进行排序。 3、遍历排序后数组: &#xff08…...

技术分享 | MySQL内存使用率高问题排查

本文为墨天轮数据库管理服务团队第51期技术分享,内容原创,如需转载请联系小墨(VX:modb666)并注明来源。 一、问题现象 问题实例mysql进程实际内存使用率过高 二、问题排查 2.1 参数检查 mysql版本 :8.0.…...

分享一个精灵图生成和拆分的实现

概述 精灵图(Sprite)是一种将多个小图像合并到单个图像文件中的技术,广泛应用于网页开发、游戏开发和UI设计中。在MapboxGL中,跟之配套的还有一个json文件用来记录图标的大小和位置。本文分享基于Node和sharp库实现精灵图的合并与…...

AI日报 - 2025年3月21日

🌟 今日概览(60秒速览) ▎🤖 AGI突破 | OpenAI成立安全委员会,加速AGI治理框架构建 ▎💼 商业动向 | 微软发布医疗大模型DAX Copilot 3.0,覆盖全球临床场景 ▎📜 政策追踪 | 中国发布…...

MongoDB 配合python使用的入门教程

MongoDB 入门教程 1. 安装 MongoDB 首先,你需要在你的机器上安装MongoDB。你可以从 MongoDB官网 下载并安装 Community 版本。安装完成后,启动MongoDB服务。 # 在Linux/Mac上启动MongoDB mongod# 在Windows上,你可以通过Windows服务启动Mo…...

函数:形参和实参

在函数的使用过程中分为实参和形参,实参是主函数实际调用的值而形参则是给实参调用的值,如果函数没被调用则函式不会向内存申请空间,先用一段代码演示 形参: int test(int x ,int y ) {int z 0;z x y;return z; } 为何会叫做…...

【C#知识点详解】ExcelDataReader介绍

今天来给大家介绍一下ExcelDataReader,ExcelDataReader是一个轻量级的可快速读取Excel文件中数据的工具。话不多说直接开始。 ExcelDataReader简介 ExcelDataReader支持.xlsx、.xlsb、.xls、.csv格式文件的读取,版本基本在2007及以上版本,支…...

Vala编程语言教程-控制结构

控制结构 while (a > b) { a--; } 会重复递减a&#xff0c;每次迭代前检查a是否大于b。 do { a--; } while (a > b); 会重复递减a&#xff0c;每次迭代后检查a是否大于b。 for (int a 0; a < 10; a) { stdout.printf("%d\n", a); } 会先将a初始化为0…...

《视觉SLAM十四讲》ch13 设计SLAM系统 相机轨迹实现

前言 相信大家在slam学习中&#xff0c;一定会遇到slam系统的性能评估问题。虽然有EVO这样的开源评估工具&#xff0c;我们也需要自己了解系统生成的trajectory.txt的含义&#xff0c;方便我们更好的理解相机的运行跟踪过程。 项目配置如下&#xff1a; 数据解读&#xff1a; …...

服务的拆分数据的迁移

参考&#xff1a; 数据迁移调研...