199、PCIE在异构计算中的角色:从一次诡异的DMA超时说起
199、PCIE在异构计算中的角色:从一次诡异的DMA超时说起上周调一个异构计算平台,FPGA加速卡死活拿不到主机内存数据。逻辑分析仪抓包显示TLP包在链路层反复重传,主机侧DMA状态寄存器卡在“等待响应”超时。折腾两天才发现,Root Complex的ATS(Address Translation Services)没使能,导致设备发起的地址翻译请求直接被静默丢弃。这个坑让我重新审视PCIE在异构计算里到底扮演什么角色——它远不止是条物理链路。PCIE不是条“高级电线”很多人把PCIE简单理解成高速数据传输通道,这在同构系统里或许够用。但在CPU+GPU+FPGA+AI加速卡的异构环境里,PCIE得同时干三件事:统一地址空间的门卫、缓存一致性的交通警察、异构任务的调度协作者。看看这个典型的异构拓扑:CPU Socket0 --- Root Port --- Switch --- GPU0 | | |- Root Port --- FPGA加速卡 | | | CPU Socket1 --- Root Port --- Switch --- GPU1 | |- AI加速卡每个设备都有自己的内存视图
