logo
  • 首页
  • 产品中心
  • 解决方案
  • 技术专栏
  • 关于我们
  • 首页
  • 产品中心
  • 解决方案
  • 技术专栏
  • 关于我们
  • 【高清视频】I3C协议分析仪+I3C开发板在真实流量下的step-by-step演示

    我们大概一个月前做过一期独立式I2C/I3C/SMBUS协议分析仪物理连接和管理界面演示的高清视频,受条件限制,我们当时演示使用的是I2C开发板。 我们今天使用了业内最新的I3C开发板,通过编程调试的方式产生真实的I3C的初始化、广播、读、写等命令,然后通过I3C协议分析仪/逻辑分析仪抓取这些数据进行解码。本期视频包括硬件连接、软件演示两个大的部分,总计37分钟左右,让你对于I3C的问题诊断、分析有一个非常感性的理解。 为了方便工程师观看,我们针对本期视频并处理添加了中文字幕供大家参考。如果想看高清视频建议要在电脑上打开上面的视频链接进行观看!创作不易,欢迎分享到朋友圈或者与朋友讨论!如果想搬运我们的视频请告知我们。 下面的高清视频按演示的实际顺序“硬件→接线→软件→触发→采集→运行示例→查看/定位→补充注意事项”整理而成,供大家参考。 一、演示目标与器材概览 本次视频主要演示一台 I3C 逻辑分析仪/协议分析仪二合一设备的上手流程:如何搭建最小测试环境、如何在软件里配置触发与采集参数、如何抓到一段“标准 I3C 初始化 + 读操作”的总线交互,并展示波形与协议解码结果。 设备特点之一:除数字采样外,还能在一定条件下抓到模拟波形(类似“轻量示波器”效果)。 二、硬件搭建与接线方式(最小闭环) 1)设备组成 分析仪主机(小盒子) 一根数据线连接到电脑,通过电脑端管理软件操作 多通道采集线(白色为信号线)与若干地线(黄色) 2)通道数与“用不满”的价值 演示机型为 16 通道。虽然抓 I3C 只需两根信号线,但剩余通道可以同步抓其它低速信号(比如同时抓 I2C、UART、SPI, QSPI, CAN, LIN FLEXRAY 等)用于系统级联调——这也是多通道逻辑分析的核心价值之一:同一时间基准下做跨总线关联分析。 3)I3C 最小接线:两根信号 + 地 I3C 总线本质上只需要: DATA(数据线) CLOCK(时钟线) GND(地) 视频里也强调:不接地会导致抓到的波形“乱”、无法可靠解码。 4)测试点位的实际工程做法 开发板测试点最初可能只有圆形焊盘/孔位,没有排针: 方案 A:自己焊排针 方案 B:用 pogo pin(弹簧针)+ 夹具临时接触,既可测又不永久改板 三、软件操作流程(按演示顺序复盘) 步骤 1:打开软件并确认“连接状态” 软件即使在没有连接硬件时也能打开,但会进入“展示模式”;展示模式下无法采集真实数据。演示中特别提醒:如果看到展示模式,通常意味着连接/识别有问题,需要重新插拔或排查连接。 步骤 2:选择工作窗口 软件界面可以同时增加多个窗口(逻辑分析/协议分析等),演示中先打开逻辑分析仪视图作为主视角。 步骤 3:设置触发(Trigger)——用“协议触发”抓关键片段 为了抓 I3C,演示在触发选项里选择 “MIPI over I3C”,进入后可配置触发条件;演示里为了快速展示,先不改条件,直接确认,形成一个“检测到 I3C 就触发采集”的触发器。 工程补充:协议触发适合“只想抓关键交易”的场景(例如初始化、广播 CCC、地址分配、错误恢复等),比纯电平/边沿触发更省时间、更贴近调试目标。 步骤 4:确认通道映射——Clock/Data 别接反 I3C 解码的默认映射为: Channel 0 → Clock Channel 1 → Data 如果接反了(0 接到 Data、1 接到 Clock),软件可能一直识别不到 I3C,从而不会触发。解决办法: 要么按默认顺序接线 要么在软件里提前新增/调整协议通道映射,按你的线序改好再抓 步骤 5:采集参数设置——“数字采样率 vs 模拟观测”做平衡 演示中的关键点: I3C 相对 I2C 更快,50MHz 采样率可能不够,建议到 100/200/250MHz 甚至更高 但如果数字采样率设得太高(演示里提到高于某阈值如 250MHz),可能会无法同时抓模拟通道;需要更高端的模拟信号能力的型号 为兼顾“看模拟波形 + 看数字/解码”,演示选择 200MHz 数字采样率,同时保留模拟通道观测能力 工程补充:模拟波形的价值在于看上升沿/振铃/过冲/毛刺/电平裕量;数字解码的价值在于看事务语义。很多“能解码但系统不稳”的问题,往往要靠模拟视角去定位信号完整性或地弹噪声等根因。 步骤 6:开始采集,进入“等待触发” 点击采集后,因为配置了协议触发,软件会进入“等待触发”状态,并不会立即采样。 步骤 7:回到控制台运行示例代码,制造可抓取的 I3C 事务 演示回到开发板控制台运行一段示例代码,该代码执行: I3C 初始化 初始化后的读操作 其中 master 是开发板 MCU(字幕中提到“开发板的 MTU”),被访问对象是板载温度传感器。运行后软件端显示“资料处理中”,说明已捕获触发并开始整理波形与解码结果。 四、抓到数据后怎么看:波形、解码、定位与测量 1)波形与协议解码的并列视图 采集完成后,界面会同时呈现: 数字通道波形 模拟通道波形(如有开启) 底部的协议解码列表(逐条列出解码结果) 2)用“书签/光标”做定位与时间间隔测量 演示展示了用键盘快速打点的方法: 按住 Shift + 某字母 添加一个带字母标识的光标/书签(用于标记关键位置) 选择不同光标后,软件会自动计算时间间隔,并在界面上显示 若要删除光标,可在光标管理处执行“删除光标”(演示里也提到直接 Delete 不一定生效,最终给出在界面里删除的方式) 工程补充:在 I3C 调试里,光标最常用来量三类时间: 总线空闲/起始条件间隔(是否满足时序) 事务之间的 gap(是否异常插入等待) 某个错误点前后的时延(例如重试、仲裁、恢复流程) 五、演示中反复强调的“易踩坑清单” 一定要接地:否则波形乱、解码不可用。 检查软件是否处于展示模式:展示模式下抓不到数据,先排连接问题。 通道映射别接反:Clock/Data 对不上会导致识别不到 I3C,进而不触发。 采样率别盲目拉满:I3C 要足够采样率,但想看模拟波形就要注意模拟通道的采样上限与模式限制。 六、为什么 I3C 抓包常见于哪些场景 结合我们的粉丝群里面多是面向“底层基础设施诊断/调试”的定位,I3C 抓包通常出现在: 传感器/监控:温度、电压、电流、风扇、板级健康监测(演示里的温度传感器就是典型) 高端服务器/存储/网络板卡:需要更高带宽、更低功耗、更强管理能力的板级总线(相对传统 I2C/SMBus) 嵌入式与工业控制:多器件共总线、需要热插拔/动态寻址、希望减少地址冲突与调试复杂度的系统 更多关于PCIe 6.0/CXL的测试工具和技术,请下载Saniffer公司2025.6.16最新更新的白皮书12.3版本 - 《PCIe5&6.0, CXL, NVMeNVMoF, SSD, NAND, DDR5, 800GE测试技术和工具白皮书_ver12.3》。 白皮书下载链接 (或者点击下面的二维码直接下载): https://pan.baidu.com/s/18_c11aeFhSBe2qa-jUFs_Q?pwd=mm9y 提取码: mm9y 如果你有其任何关于PCIe5&6.0, CXL, NVMe/NVMoF, NAND, DDR5/LPDDR5以及UFS测试方面的我问题想咨询,请访问:访问www.saniffer.cn / www.saniffer.com 访问我们的相关测试工具和产品;或者添加点击左下角“阅读原文”留言,或者saniffer公众号留言,致电021-50807071 / 13127856862,sales@saniffer.com。  
    2025-12-17 15:39:48
  • 【高清视频】手把手教你如何搭建PCIe 6.0 SSD测试环境

    我们Saniffer今年下半年写过两篇文章,介绍过在实验室测试如何使用passive盘柜搭建环境进行测试,参见下面的两个链接。 【业内新闻】全球首款研发用PCIe 6.0 SSD/CXL测试盘柜  //* 盘柜功能简介 【高清视频】PCIe Gen6 SSD测试环境搭建演示   //* 手把手教你如何使用PCIe 6.0 switch卡 + Gen6 MCIO cable搭建 Gen6 SSD测试环境 我们今天下面的高清视频有点长,大概25分钟,将首次演示如何使用SerialCables公司的PCIe 6.0 switch卡 + PCIe 6.0 八盘位盘柜组合成一套测试环境,用于未来的PCIe 6.0 SSD的验证和测试。 为了方便工程师观看,我们针对本期视频并处理添加了中文字幕供大家参考。如果想看高清视频建议要在电脑上打开上面的视频链接进行观看!创作不易,欢迎分享到朋友圈或者与朋友讨论!如果想搬运我们的视频请告知我们。 下面这份总结是按照上面的视频文件为唯一主线,尽最大可能按照原始演示的实际顺序与讲解节奏来整理的,是“跟着演示走”的流程复盘,适合工程师上、下班途中快速阅读使用。 PCIe Gen6 Switch + Gen6 JBOF(8 盘位 EDSFF)演示全过程总结 一、演示目的与整体说明(演示开场) 本次演示的核心目标,是展示一套已经可以在实验室真实落地的 PCIe Gen6 存储测试环境,用于未来 Gen6 SSD、Gen6 Switch、以及相关线缆/背板互连的功能、兼容性和稳定性验证。 演示并非停留在“规格或 PPT 说明”,而是通过真实硬件连接、上电、插盘、管理与识别过程,展示一套完整的 Gen6 JBOF(Just a Bunch Of Flash)测试方案。 二、测试系统整体架构说明(从主机开始) 演示首先从系统整体结构讲起: 主机平台 使用的是一台开放式测试主机 主板本身是 PCIe Gen5 平台 通过外接方式扩展 Gen6 能力 PCIe Gen6 Switch 将主机的 PCIe 能力扩展到外部设备 为后端盘柜提供多个 Gen6 下行端口 主机通过 PCIe 插槽连接一块 Gen6 Switch 卡 该 Switch 的作用是: Switch 卡对外提供 MCIO x8 Gen6 接口 这一点在演示中被明确强调:主机本身不需要是原生 Gen6 平台,也可以通过 Gen6 Switch 构建 Gen6 测试环境。 三、Gen6 JBOF 盘柜整体结构介绍(演示主体) 随后镜头转向本次演示的核心设备 —— 8 盘位 Gen6 JBOF 盘柜。 1. 盘柜正面结构 正面提供 1–8 共 8 个盘位 盘位形态为 EDSFF(E3 系列) 背板设计为 x8 形态插槽 设计目标是支持: Gen6 x4 SSD Gen6 x8 SSD(未来) 演示中特别说明: 当前市面上 Gen6 SSD 仍未量产,所以现场插入的是 Gen5 x4 的 EDSFF SSD,用于演示链路建立和系统识别流程。 2. 盘柜背部接口说明 镜头切换至盘柜背部,对接口进行逐一说明: MCIO x8 接口 用于连接 Gen6 Switch 是盘柜的数据上行通道 电源接口 Type-C Terminal 管理接口 用于后续盘柜管理 电源开关 一个非常关键的设计点在此被明确提出: 该盘柜背板是 passive 背板,不包含任何 PCIe switch 芯片。 这意味着: MCIO 信号从背板后端进入 直接连接到前端 EDSFF 插槽 链路完整性、信号质量、协议行为更加“透明” 非常适合做底层测试和问题定位 四、MCIO 线缆与 Lane 利用方式讲解 在连接阶段,演示重点讲解了 MCIO x8 线缆的使用方式,以及为什么要关注 lane 的利用效率。 1. 标准连接方式 Gen6 Switch 的 MCIO x8 端口 通过 MCIO x8 线缆 直接连接盘柜背部 MCIO x8 接口 在这种方式下: 一个 MCIO x8 端口 → 一组 EDSFF 插槽通道 2. Y 型线(1 拖 2)设计思路 演示中进一步说明了 Y 型 MCIO 线缆 的设计背景: 企业级 SSD 绝大多数为 x4 但 Switch 提供的是 x8 端口 为避免 lane 浪费: 使用 一端 MCIO x8 分成 两个逻辑 x4 通道 每个通道连接一块 SSD 这样可以实现: 一个 Switch 的 x8 口 同时支持 两块 x4 SSD 4 个 x8 端口即可支持 8 盘位 我们本次演示的当天由于条件限制: 未使用 Y 型线 而是采用“一口一盘”的方式先完成演示验证 五、SSD 插入与真实测试细节 在实际插盘环节,演示非常真实地呈现了测试现场常见情况: 插入两块 EDSFF Gen5 x4 SSD 系统识别过程中发现: 一块 SSD 状态较旧,仅以 Gen5 x2 方式 Link Up 另一块 SSD 正常以 Gen5 x4 方式工作 这一点在演示中被直接说明,而非回避,体现出: 测试环境中 盘本身状态也是变量 链路速率与宽度降级是实际工程中常见现象 六、盘柜管理与测试便利性说明 通过 Type-C Terminal 管理接口,工程师演示了盘柜的管理命令行接口,包括: 盘位上电 / 下电控制 盘复位、热复位 热插拔测试辅助 面向实验室的快速操作支持 这类功能对于: PCIe 协议测试 NVMe 行为验证 故障复现与回归测试 都具有明显价值。 七、为什么强调“线缆与互连件”的质量 在演示后段,重点强调了 测试环境“golden 链路” 的概念: SerialCables 被描述为: 与 Broadcom、美光等厂商深度合作 属于 Tier-1 级别互连供应商 对测试而言: 最怕“非标准、低质量互连件” 会引入不确定性,浪费研发资源 在 PCIe Gen6(PAM4 + FEC) 时代: 链路 margin 更小 互连质量对测试结果影响更大 因此,该盘柜 + 线缆方案的定位并非“便宜”,而是: 为严肃的 Gen6 验证环境提供稳定、可复现的基础设施 八、接口形态与未来兼容性说明 演示最后补充说明了接口演进趋势: 海外数据中心正逐步以 EDSFF 为主流 M.2、U.2 等形态在企业侧呈缩减趋势 若仍需测试: 可通过 转接板 / Adapter 将 M.2 / U.2 SSD 转为 EDSFF 形态 插入该盘柜进行测试 九、总结 本次演示完整展示了一套面向 PCIe Gen6 时代的真实可用测试平台: 通过 Gen6 Switch 扩展主机能力,配合 passive 背板的 8 盘位 EDSFF JBOF 盘柜,以及高质量 MCIO 互连与可管理设计,使得 Gen6 SSD 的链路、枚举、管理与稳定性验证具备了可工程化、可复现的实验基础。 更多关于PCIe 6.0/CXL的测试工具和技术,请下载Saniffer公司2025.6.16最新更新的白皮书12.3版本 - 《PCIe5&6.0, CXL, NVMeNVMoF, SSD, NAND, DDR5, 800GE测试技术和工具白皮书_ver12.3》。 白皮书下载链接 (或者点击下面的二维码直接下载): https://pan.baidu.com/s/18_c11aeFhSBe2qa-jUFs_Q?pwd=mm9y 提取码: mm9y 如果你有其任何关于PCIe5&6.0, CXL, NVMe/NVMoF, NAND, DDR5/LPDDR5以及UFS测试方面的我问题想咨询,请访问:访问www.saniffer.cn / www.saniffer.com 访问我们的相关测试工具和产品;或者添加点击左下角“阅读原文”留言,或者saniffer公众号留言,致电021-50807071 / 13127856862,sales@saniffer.com。  
    2025-12-16 10:37:04
  • 【每日一题】你知道PCIe device在BIOS自检阶段和OS操作系统加载阶段会进行两次枚举吗?

    我前两周写过一些文章介绍PCIe启动过程中如何分配Bus: Device. Function值,也简单介绍了一下LTSSM和枚举的关系,也有些朋友问了一些很好的问题,我们看后面有时间的话再结合SerialTek PCIe 5.0/6.0 analyzer协议分析仪实际抓取的一些上电 power-on bootup trace文件形象地讲解一下,让大家有个更加感性的认识。今天我们仍旧来看一个和枚举有关的问题,在主机上电开机过程中,PCIe device的枚举究竟是发生在Legacy/UEFI BIOS初始化过程中,还是发生在Linux或者windows等操作系统的驱动程序初始化过程中,还是两个阶段都存在?如果都存在的话,目的有什么不同呢?还有我们所熟知的NVMe SSD或者CXL device的初始化是否也存在BIOS阶段和操作系统OS两次初始化呢?其实,这是一个非常“工程师级”的问题,我们上面提到的 PCIe / NVMe / CXL 背景,说明我们现在谈的不是“概念”,而是真实系统行为。我给一句话结论,下面将分层、分阶段把 PCIe / NVMe / CXL 串一串。一句话总览(先给结论)PCIe 设备的“枚举”在 BIOS/UEFI 阶段一定存在,在 OS(Linux / Windows)阶段也一定存在,但两次“枚举”的目的、深度和职责完全不同。同理:NVMe SSD:BIOS 阶段 + OS 阶段 两次初始化CXL Device:BIOS 阶段 + OS 阶段 两次初始化,而且分工更严格一、PCIe 枚举到底“发生在哪个阶段”?答案是:两个阶段都发生,但不是一回事阶段是否做 PCIe 枚举本质BIOS / UEFI 阶段✅ 必须“发现硬件 + 分配资源”OS 启动阶段(Linux / Windows)✅ 必须“重新扫描 + 驱动绑定”二、BIOS / UEFI 阶段的 PCIe 枚举:在干什么?这是“平台级、硬件级枚举”,核心目标只有一个:让系统“知道有什么 PCIe 设备存在,并且它们能被访问”BIOS 阶段做的事情包括:1️⃣ Link Training(链路训练)RC ↔ EPLTSSM → L0确认:Link WidthLink SpeedLane Mapping❗没有 L0,就根本谈不上枚举2️⃣ PCIe 拓扑扫描(Bus Enumeration)从 Bus 0 / Device 0 / Function 0 开始递归扫描:Root PortPCIe SwitchDownstream PortEndpoint3️⃣ 分配 PCI 资源(极其关键)BIOS 在此阶段会:分配 Bus Number分配 BAR 空间MMIOPrefetchable / Non-prefetchable配置:Command Register(Memory Enable / Bus Master Enable)MSI/MSI-X Capability 基本参数🔥 OS 后面是否能用这个设备,100% 依赖 BIOS 这一步4️⃣ Option ROM(可选)VGA / NVMe / PXE 等UEFI 下是 UEFI DriverLegacy 下是 INT 13h / INT 10hBIOS 阶段“不会做”的事❌ 不加载 OS 驱动❌ 不做高层功能初始化❌ 不理解 NVMe / CXL 语义BIOS 只关心“这是一块 PCIe 设备”三、OS 阶段的 PCIe 枚举:在干什么?这是“软件逻辑枚举”,本质是:“基于 BIOS 留下的硬件状态,重新认识设备,并绑定驱动”OS 阶段会做:1️⃣ 重新扫描 PCI Configuration SpaceOS 从 ACPI / Device Tree / UEFI Tables 得知:Bus 范围MMIO 窗口读取:Vendor ID / Device IDClass CodeCapability List2️⃣ 驱动匹配Windows:INF → Hardware IDLinux:pci_driver → id_table3️⃣ 驱动级初始化Enable DMAMSI/MSI-X 完整配置Power Management(ASPM / L1SS)Error Handling(AER)SR-IOV / ATS / PASID(如果支持)4️⃣ OS 级热插拔 / 重新枚举Hot PlugSurprise DownRescan Bus🔑 OS 阶段的“枚举”更像“重新认账 + 开始干活”四、为什么要“两次枚举”?目的完全不同阶段核心目的BIOS让硬件“存在且可访问”OS让软件“理解并使用硬件”一个非常形象的类比:BIOS 枚举 = 修路、划车位、挂牌照 OS 枚举 = 驾驶员上车、点火、开走五、NVMe SSD:是不是也有两次初始化?答案:是,而且非常典型1️⃣ BIOS 阶段的 NVMe(最小化支持)BIOS 并不“真正理解 NVMe”,它只是:把 NVMe 当作 PCIe Mass Storage可能加载:NVMe UEFI Driver目的只有一个:支持“从 NVMe 启动”BIOS NVMe 初始化通常只做到:Identify ControllerIdentify Namespace简单 Read不会:队列深度调优多队列并行高级电源管理2️⃣ OS 阶段的 NVMe(完整初始化)OS NVMe 驱动会重新做:Reset ControllerCreate Admin QueueCreate IO Queues(多队列)Enable MSI-XPower State ManagementNamespace 管理⚠️ 所以你在协议分析仪里看到的 NVMe 初始化流量:BIOS 阶段一套OS 启动后一套 是完全正常的六、CXL Device:BIOS + OS 的分工更“硬核”CXL 比 NVMe 更依赖 BIOS1️⃣ BIOS / UEFI 阶段(极其重要)BIOS 必须:完成 PCIe 枚举识别 CXL Capability解析:CXL.cacheCXL.mem构建:CXL Host BridgeCXL Fixed Memory Window向 OS 暴露:ACPI CEDT / SRAT / HMAT❗如果 BIOS 不支持,OS 根本无法使用 CXL2️⃣ OS 阶段(真正使用 CXL)OS 才会:建立 Memory RegionNUMA 拓扑Page AllocationCache CoherencyCXL Error HandlingRAS七、总结成一张“工程师视角表”技术BIOS 阶段OS 阶段PCIeLink + 枚举 + 资源分配驱动绑定 + 功能启用NVMe最小识别 / Boot 支持完整 NVMe 协议初始化CXL拓扑 + 内存窗口 + ACPI内存/缓存语义使用八、上述问题背后的“隐含工程价值”总结一下,我们上面问的,其实是:为什么 PCIe Analyzer 里会看到两次初始化流量为什么 BIOS Bug 会导致 OS 设备不可见为什么 CXL 问题 80% 出在 BIOS 阶段为什么 “OS Rescan”救不了很多问题更多关于PCIe 6.0/CXL的测试工具和技术,请下载Saniffer公司2025.6.16最新更新的白皮书12.3版本 - 《PCIe5&6.0, CXL, NVMeNVMoF, SSD, NAND, DDR5, 800GE测试技术和工具白皮书_ver12.3》。白皮书下载链接 (或者点击下面的二维码直接下载):https://pan.baidu.com/s/18_c11aeFhSBe2qa-jUFs_Q?pwd=mm9y 提取码: mm9y如果你有其任何关于PCIe5&6.0, CXL, NVMe/NVMoF, NAND, DDR5/LPDDR5以及UFS测试方面的我问题想咨询,请访问:访问www.saniffer.cn / www.saniffer.com 访问我们的相关测试工具和产品;或者添加点击左下角“阅读原文”留言,或者saniffer公众号留言,致电021-50807071 / 13127856862,sales@saniffer.com。
    2025-12-15 14:01:35
  • 【每日一题】PCIe答疑 - 接大量 GPU 时主板不认设备或无法启动和MMIO的可能关系?

    今天早上的文章《PCIe协议经常谈到的Memory-Mapped I/O究竟是啥?》发了以后,有工程师留言问:接大量 GPU 时主板不认设备或无法启动,是不是 MMIO 不足?除了换主板还有办法吗?先说结论:YES,极有可能就是 MMIO 不够导致的。尤其是:大量 GPU(每张 GPU 有多个 BAR)使用 PCIe Switch(会增加层级和 BAR 空间需求)旧主板(BIOS MMIO 空间少)服务器主板没有 64-bit MMIO 优化先通俗讲一下 MMIO 为什么会不够每个 PCIe 设备,都要在 Host 地址空间里“要一块地儿”:BAR0:寄存器映射BAR1:状态空间GPU:可能要好几十 MBSwitch:也要 BARNVMe:每块盘也需要一些 BARBIOS 在开机早期负责给所有设备分配 MMIO 地址。如果设备多到 BIOS 分配不出空间,就会发生:GPU 不认Switch 枚举不完全 BIOS 卡住 直接黑屏无法启动这些在你的实验环境里都非常常见。除了换主板,还有哪些真正有效的解决方法?下面这些方法都是行业里真实有效的工程方案:方案①:开启 “Above 4G Decoding” (一定要打开)在 BIOS 里把:Above 4G decodingLarge BAR support / Re-size BAR全部打开。作用:让 BIOS 使用 64bit MMIO 地址空间,而不受 32bit 的 4GB 限制。这是最经济、成功率最高的方法。方案②:关闭不需要的设备,释放 MMIO 空间如:主板自带 USB 控制器SATA 控制器Onboard NIC声卡Thunderbolt 控制器这些全关后能腾出几百 MB 的 MMIO 空间。方案③:减少 GPU BAR 的大小某些 GPU 支持 BAR 大小调整,例如:关闭 Resizable BAR强制以小 BAR(32-bit BAR)方式工作这样可以减少地址空间需求。方案④:使用更“聪明”的 BIOS一些服务器 BIOS 对 MMIO 分配策略不好,导致:明明空间够,分配失败BAR 没排序不能跨域映射升级到最新 BIOS 很多时候能解决问题。方案⑤:使用带“多域”能力的 PCIe Switch 卡例如 Broadcom(或从Saniffer公司购买使用Broadcom switch芯片)的专业 Switch 厂商的产品有:Upstream Port MMIO aggregation多域划分BAR 转换 / 代理64-bit MMIO remapping这些高级功能可以让多个 GPU 共享 MMIO 空间。方案⑥:换 CPU 反而比换主板有效一些 CPU:PCIe Root Port 数量少64-bit MMIO 支持不完整BIOS 固件太保守例如 server-grade Xeon / EPYC 通常 MMIO 能力远强于桌面 CPU。最终总结大量 GPU 不认 → 90% 可能是 MMIO 不够解决方法按效果从强到弱排序:打开 above 4G decode / 64-bit MMIO关闭主板不用的设备释放 MMIO调整 GPU BAR 大小升级 BIOS使用专业 PCIe Switch(支持多域)更换 CPU / 主板(最后手段)更多关于PCIe 6.0/CXL的测试工具和技术,请下载Saniffer公司2025.6.16最新更新的白皮书12.3版本 - 《PCIe5&6.0, CXL, NVMeNVMoF, SSD, NAND, DDR5, 800GE测试技术和工具白皮书_ver12.3》。白皮书下载链接 (或者点击下面的二维码直接下载):https://pan.baidu.com/s/18_c11aeFhSBe2qa-jUFs_Q?pwd=mm9y 提取码: mm9y如果你有其任何关于PCIe5&6.0, CXL, NVMe/NVMoF, NAND, DDR5/LPDDR5以及UFS测试方面的我问题想咨询,请访问:访问www.saniffer.cn / www.saniffer.com 访问我们的相关测试工具和产品;或者添加点击左下角“阅读原文”留言,或者saniffer公众号留言,致电021-50807071 / 13127856862,sales@saniffer.com。
    2025-12-12 14:10:02
  • 【每日一题】讲讲PCIe链路训练和枚举的前后关系

    几天前我们一篇文章《一文讲懂主机启动时是如何给每个PCIe外设分配BDF的》,有工程师留言问:电脑加电启动的时候,PCIe是全部训练完再枚举,还是训练一个枚举一个?我们这里结论先说:PCIe 在系统加电启动(boot)时,是“全部链路先训练完成(Link Training),再开始统一进行设备枚举(Enumeration)”。不是训练一个枚举一个。今天的文章将尽量给你一个清晰的解释,掌握这部分对于熟悉PCIe协议很有用。1. 为什么必须全部训练完才能枚举?因为枚举需要稳定的 PCIe 拓扑结构(Topology),包括:哪些设备存在每个设备是哪个 Bus/Device/Function每条链路最终的速度、宽度(Gen / Lanes)下游设备是否连通Switch 的下游 port 是不是 active如果链路没有全部训练成功(进入 L0),根本无法构建完整拓扑。因此 PCIe Base Spec 要求在枚举开始前,所有链路必须完成 LTSSM → L0。2. PCIe 链路训练(Link Training)发生在固件阶段(BIOS/UEFI 前期)链路训练包含:DetectPollingConfigurationRecovery(必要时)L0(链路正常状态)这是PCIE PHY + MAC(硬件自动完成),极少需要 CPU 参与。训练过程与设备枚举(RC 软件过程)完全独立。3. 训练完成之后,BIOS/UEFI 才开始做设备枚举 Enumeration枚举过程包括:(1) 为 Root Port 分配 Bus numbers(2) 读取下游设备的 Header Type / Vendor ID(3) 配置 BAR 寄存器(4) 为整个系统分配 MMIO / IO space(5) 初始化 Capabilities(MSI/MSI-X/ACS/ARI 等)这一阶段属于 PCI Firmware Spec 定义的流程,在 BIOS 中由 RC(Root Complex)程序执行。也就是说:只有当所有链路都进入 L0,BIOS 才能完整看到整个 PCIe 拓扑,然后开始枚举。4. 是否存在“训练一个,枚举一个”的例外?正常 PC/服务器启动流程 —— 不会!但是有两种特殊例外情况值得你关注:(A) 热插拔场景(Hot-Plug)Hot-plug port 上:Link Training 在设备插入后发生RC 会动态枚举新增设备但这是运行时行为,不属于系统加电启动流程。(B) 某些 PCIe Switch 的“Port-by-port” 初始化例如一些 Broadcom/PLX Switch 型号可能:Port A 训练成功内部 switch firmware 提前对下游 port 做一些预扫描但这属于 Switch 内部行为,RC 枚举依然要等所有链路可用后才统一开始。5. 所以启动流程可以总结为:Step 1:加电Step 2:所有 PCIe 端口开始 Link TrainingPHY 完成 LTSSM 流程链路进入 L0 或失败进入 RecoveryStep 3:所有链路稳定后,BIOS 才开始 PCI Bus enumerationStep 4:初始化设备、分配 BAR、配置 MSI/MSI-X、ASPM 等6. 在SerialTek PCIe协议分析仪上也能看到这个证据你抓加电 trace 会看到:✔ 一堆 Link Training(TS1/TS2、Equalization Phase 0/1/2)✔ 全部 link 进入 L0✔ 然后才出现 BIOS 的 Configuration TLPs(Type 0/Type 1)例如:Config Read Type 1 → 扫描 BusConfig Read Type 0 → 针对 EndpointMemory Write → 写 BAR这正是枚举开始的标志。这很明确地说明:枚举发生在所有链路训练之后。总结 — 面试级标准答案PCIe 在系统加电启动时,所有链路必须先完成 Link Training(进入 L0),然后 Root Complex 才能进行统一的 Bus Enumeration。不会训练一个枚举一个。例外仅在热插拔或某些 switch 的内部预处理流程,普通服务器/PC 不会边训练边枚举。更多关于PCIe 6.0/CXL的测试工具和技术,请下载Saniffer公司2025.6.16最新更新的白皮书12.3版本 - 《PCIe5&6.0, CXL, NVMeNVMoF, SSD, NAND, DDR5, 800GE测试技术和工具白皮书_ver12.3》。白皮书下载链接 (或者点击下面的二维码直接下载):https://pan.baidu.com/s/18_c11aeFhSBe2qa-jUFs_Q?pwd=mm9y 提取码: mm9y如果你有其任何关于PCIe5&6.0, CXL, NVMe/NVMoF, NAND, DDR5/LPDDR5以及UFS测试方面的我问题想咨询,请访问:访问www.saniffer.cn / www.saniffer.com 访问我们的相关测试工具和产品;或者添加点击左下角“阅读原文”留言,或者saniffer公众号留言,致电021-50807071 / 13127856862,sales@saniffer.com。
    2025-12-12 09:56:12
  • 【每日一题】PCIe协议经常谈到的Memory-Mapped I/O究竟是啥?

    昨天有观众看过《一文讲懂主机启动时是如何给每个PCIe外设分配BDF的》发邮件来询问,主机在启动过程中是BIOS给PCIe设备分配MMIO,自己研发的GPU芯片现在会出现MMIO资源分配不足这么一个问题。想问下MMIO的主要功能和工作机制,如何理解MMIO在PCIe设备的作用,或者MMIO扮演一个什么角色? BIOS给PCIe设备分配的MMIO分配到哪里去等一些问题。下面简单结合你做 GPU 芯片研发的视角来解释一下上面的这些疑问:一、MMIO 是什么缩写?MMIO = Memory-Mapped I/O(内存映射输入输出)意思是: 把设备的寄存器、控制空间等 映射到主机 CPU 的物理内存地址空间里,这样 CPU 就能像“访问内存一样访问设备”。二、MMIO 主要功能是什么?一句话总结:让 CPU(或 DRAM 系统)能通过内存地址去访问 PCIe 设备的寄存器、控制器、DMA配置空间等。MMIO 是设备与 CPU 之间的“命令通道”,“大脑 → 外设”的控制路径。三、MMIO 在 PCIe 设备中扮演什么角色?通俗比喻PCIe 设备内部通常有:控制寄存器(启动 DMA、配置模式)状态寄存器(告诉 CPU 是否完成某任务)某些内部 SRAM bufferdoorbell queue(通知队列)MSI/MSI-X tableBAR 寄存器指向的各种控制空间这些东西都需要一个方式让 CPU / 操作系统来读写。MMIO 就是这个方式。📌 比喻: MMIO 就像是在“大楼(CPU 内存空间)”里面给 PCIe 设备开了几间“办公室”(地址空间),CPU 想跟设备交流,就走到那间办公室敲门(读写地址)。📌 无 MMIO = CPU 根本没法操作 PCIe 设备。四、BIOS 给 PCIe 设备分配 MMIO 是怎么回事?当主机开机时,BIOS/UEFI 会:① 扫描所有 PCIe 设备读取每个设备的 BAR(Base Address Register)寄存器。每个 BAR 会声明:这些空间通常包括:Doorbell queue控制器寄存器内部 SRAM windowMSI-X tableGPU 中的 GPC/SM 配置寄存器DMA engine 的寄存器② BIOS 在 CPU 的物理地址空间中给它们找位置CPU 实际可用物理地址空间(例如 0~TB)中会有一部分保留给 MMIO。比如:BIOS 会从这个区域分配:这就是你说的“MMIO资源不足”:所有 PCIe 设备的 BAR size 总和超过了系统能提供的 MMIO window 大小。五、为什么 GPU/大加速器特别容易 MMIO 不够?因为: GPU 的寄存器空间特别大(上百 MB 甚至更多)  多个 BAR(BAR0、BAR1、BAR2,有时还 64-bit BAR)  大量 doorbell queues、调度器、VM context、DMA 配置寄存器  现代 GPU 的 BAR 空间越来越大(如 AMD 的 64GB BAR 技术)服务器 PCIe 设备多时,MMIO 要求量瞬间爆炸。六、MMIO 的工作机制(简单到极致的解释)假设 GPU BAR0 被分配:此时:CPU 执行:并不是写 DRAM,而是:DRAM 完全不参与。MMIO 的本质: ✔ CPU 发出一个写入 ✔ RC 将其转成 PCIe Memory Write TLP ✔ 发给设备寄存器七、MMIO vs DMA(为什么两者是配套关系?)MMIO 是“控制通道” → 用来告诉 GPU:“开始 DMA”、“配置队列”、“读取状态”DMA 是“数据通道” → 用于搬运大数据,比如 GPU 读写主机内存。DMA 启动依赖 MMIO,但数据搬运不依赖 MMIO。八、BIOS 分配的 MMIO 最终“分配到哪里了”?BIOS 分配的是 CPU 物理地址空间中的一段区域。并不是某个 DRAM 地址, 而是 “标记为 MMIO 的地址”。访问这个区域时:✔ CPU 认为是访问“内存” ✘ 但不会走 DRAM ✔ Root Complex 会把这些读写转发给 PCIe 设备这就是“内存映射 I/O”的精髓。九、为什么会 MMIO 资源不足?原因包括:系统 MMIO window 不够(BIOS 或 CPU 硬件限制)有太多 PCIe 设备GPU BAR 空间大64-bit BAR 占用巨大Non-prefetchable 与 Prefetchable window 不能混用CXL 设备使 MMIO 紧张BIOS 没做好资源分配十、GPU 厂商一般怎么解决 MMIO 不够?常见方法:1. 减少 BAR size(改 IP 配置)例如从 16MB 改为 4MB,甚至拆分功能。2. 使用 BAR virtualization(SR-IOV 等)3. 让部分配置空间通过 doorbell + indirect access,而不是直接 MMIO即:这样 BAR 只需很小。4. BIOS/MMIO window 增大(主板厂 or 固件)5. 使用 64-bit BAR 让 BIOS 分配到 4GB 以上高地址总结概念通俗解释MMIO把设备的寄存器映射成“内存地址”,CPU 就能用读写内存的方式控制 PCIe 设备BIOS 分配 MMIO在 CPU 的物理地址空间里划一块区域给 PCIe 设备作为“控制面板”MMIO 的作用控制设备、配置 DMA、读状态,是 CPU ↔ PCIe 设备的指挥通道MMIO资源不足所有 PCIe 设备 BAR 所需的总空间 > CPU/BIOS 提供的 MMIO 地址窗口实际写 MMIO 不会写进 DRAM会被 Root Complex 转成 TLP 发送给设备寄存器更多关于PCIe 6.0/CXL的测试工具和技术,请下载Saniffer公司2025.6.16最新更新的白皮书12.3版本 - 《PCIe5&6.0, CXL, NVMeNVMoF, SSD, NAND, DDR5, 800GE测试技术和工具白皮书_ver12.3》。白皮书下载链接 (或者点击下面的二维码直接下载):https://pan.baidu.com/s/18_c11aeFhSBe2qa-jUFs_Q?pwd=mm9y 提取码: mm9y如果你有其任何关于PCIe5&6.0, CXL, NVMe/NVMoF, NAND, DDR5/LPDDR5以及UFS测试方面的我问题想咨询,请访问:访问www.saniffer.cn / www.saniffer.com 访问我们的相关测试工具和产品;或者添加点击左下角“阅读原文”留言,或者saniffer公众号留言,致电021-50807071 / 13127856862,sales@saniffer.com。
    2025-12-12 09:53:55
  • 【每日一题】国产CPU硅前和硅后验证针对PCIe总线都需要哪些专业工具?

    结合我们最近和一些国内CPU公司开发、验证工程师的沟通和交流,我们今天将简单介绍一下SerialTek PCIe 5.0/6.0协议分析仪、Quarch故障注入卡、sideband信号长期追踪/记录/回溯等核心工具的功能、使用场景,并结合实际案例说明在芯片研发尤其是CPU设计验证过程中,包括DE/DV硅前以及硅后验证阶段,这些工具对于问题诊断、兼容性测试和稳定性验证的重要作用。同时,我们也需要强调SerialCables PCIe 5.0/6.0转接卡、Golden Sample测试卡等辅助设备在构建完整测试环境中的必要性。一、PCIe协议分析仪的核心作用与技术需求PCIe 5.0 x16接口的CPU芯片开发,协议分析仪是必备工具,无论是在设计仿真阶段还是流片后的Bring Up阶段均需使用。分析仪可用于抓取链路双向数据,诊断链路训练(LTSSM)、流控协商、性能瓶颈等问题,尤其适用于解决开机枚举失败、通信中断、低功耗状态异常等复杂场景。实际案例表明,即使采用成熟IP,仍可能因RC端(CPU)行为异常导致链路不稳定,而协议分析仪可提供明确证据定位问题源头。国内用户相对对于美国市场购买高端PCIe协议分析仪较少,主要受价格及税收影响;但租赁服务存在,且部分企业通过短期租用解决紧急问题。二、关键测试工具介绍与选型建议(一)PCIe协议分析仪 (PCIe protocol analyzer)PCIe协议分析仪必须配合Interposer卡使用,实现透明接入并抓取PCIe信号。支持多种接口类型(AIC插卡、U.2、M.2、EDSFF的E1.S, E1.L, E3.S, E3.L等),可根据需求配置不同规格的Interposer。类似于SerialTek这类高端分析仪其内部采用高端服务器等独立处理架构,解码速度快,不依赖客户端电脑性能,优于传统依赖PC端协议分析仪软件处理的分析仪。(二)故障注入卡(Error Injection Card)可主动模拟各种错误场景(如BIT ERROR、CRC ERROR、Code Violation等),用于验证CPU在异常信号下的恢复能力。支持任意差分通道的接收端进行错误注入,无需收集市面上“烂卡”即可完成CPU健壮性(鲁棒性)测试。英国进口,全球唯一供应商Quarch公司,被几乎所有的CPU厂家研发采纳,包括多家国产ARM/RISC-V CPU厂商广泛采用。(三)长期追踪记录卡 (PAM - power analysis module + sideband signal logging)可持续监控边带信号(如PERST#、CLKREQ#、POWER等)变化,采样精度最高4us,建议设置到64us或者128us采样一次,否则存储的数据量非常庞大,适用于偶发性死机问题的回溯分析。数据可实时存储至主机,结合软件平台查看电压、电流、功耗等参数,适合服务器厂商部署于多地现场后的问题复现。三、测试环境构建与配套设备(一)PCIe分析仪的Interposer选型策略PCIe Interposer按x16/x8/x4划分,x4版本成本较低,但对于分析仪PCIe协议来讲没有很大区别。尽管物理通道减少,但由于协议层交互与通道数量无关,x4分析通常足以覆盖大部分协议级问题。英特尔内部亦采用多路x4切换方式完成全通道测试,建议可通过自研切换装置实现低成本全覆盖。(二)PCIe转接卡与延长线必须使用高质量转接卡或延长线,避免因劣质线材导致信号完整性破坏甚至硬件损坏。曾有客户因使用淘宝低价转接卡导致价值上亿设备烧毁,强调不可节省此类成本。推荐从专业供应商采购,确保阻抗匹配与信号保真。(三)PCIe Golden Sample测试卡PCI-SIG官方认证的唯一Golden Sample卡SerialCables PCIe 5.0 x16主机卡,作为EP端基准设备,用于验证CPU RC端的兼容性与稳定性。支持PCIe 5.0 x16,适用于建链测试,长时间压力测试与自动化回归测试。国内众多CPU头部企业批量采购用于原型机验证。简要总结PCIe协议分析仪是CPU芯片开发中不可或缺的关键工具,尤其在流片后Bring Up与系统级验证阶段具有不可替代的作用。建议优先配置具备独立处理能力的高性能分析仪,并根据预算合理选择x4或x8配置以平衡成本与功能。故障注入卡与长期追踪卡应作为补充工具纳入测试体系,提升对异常场景与偶发问题的应对能力。测试环境中必须配备高质量的Interposer、转接卡及Golden Sample卡,杜绝因外围设备质量问题干扰测试结果。更多关于PCIe 6.0/CXL的测试工具和技术,请下载Saniffer公司2025.6.16最新更新的白皮书12.3版本 - 《PCIe5&6.0, CXL, NVMeNVMoF, SSD, NAND, DDR5, 800GE测试技术和工具白皮书_ver12.3》。白皮书下载链接 (或者点击下面的二维码直接下载):https://pan.baidu.com/s/18_c11aeFhSBe2qa-jUFs_Q?pwd=mm9y 提取码: mm9y如果你有其任何关于PCIe5&6.0, CXL, NVMe/NVMoF, NAND, DDR5/LPDDR5以及UFS测试方面的我问题想咨询,请访问:访问www.saniffer.cn / www.saniffer.com 访问我们的相关测试工具和产品;或者添加点击左下角“阅读原文”留言,或者saniffer公众号留言,致电021-50807071 / 13127856862,sales@saniffer.com。
    2025-12-11 09:40:36
  • 1
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 39
    • 电话:(021)5080-7071; 131-2785-6862

      在这里输入描述
    • www.saniffer.cn

      在这里输入描述
    • 邮箱:sales@saniffer.com

      在这里输入描述
    • 地址:上海市浦东新区张江路505号1号楼1605-1单元

      在这里输入描述

    关注微信公众号

    上海森弗信息技术有限公司 备案号:沪ICP备2024076352号-1

    版权所有 © 上海森弗信息技术有限公司 技术支持:竹子建站