如何理解HOST CPU与EP模式的CPU的对接关系
物理连接逻辑关系:HOST是主,EP CPU是从。通信路径:这是唯一的控制与数据通道。所有HOST与EP CPU之间的交互(命令、数据、中断)都通过这条链路。EP的本地独立性:EP CPU可以利用其另一个RC模式的控制器构建一个私有的、HOST无法直接访问的本地I/O子系统。这种架构广泛应用于高性能计算、AI推理、智能网卡、存储控制器等领域,其中一个强大的通用CPU(HOST)负责管理任务调度和复
首先,明确几个关键点:
-
角色是由PCIe控制器的模式决定的:工作在RC模式的控制器充当"主机",工作在EP模式的控制器充当"设备"。
-
一个CPU可以同时拥有多种模式的控制器。
-
连接必须在不同模式之间建立:RC模式必须连接到EP模式。
连接关系
典型的连接方式如下:
HOST CPU的 PCIe控制器1 (RC模式) <---> EP CPU的 PCIe1 (EP模式)
这就是主连接通道,也是控制通道。通过这条链路,HOST才能识别、配置和管理EP CPU。
如下图所示:
+-------------------------------------------------------------------+
| HOST SYSTEM |
| |
| +----------------------+ +----------------------+ |
| | HOST CPU | | Memory | |
| | | | | |
| | +------------------+ | +----------------------+ |
| | | PCIe Controller0 | | ^ |
| | | (RC Mode) | | | (通过系统总线) |
| | +------------------+ | | |
| | | | +----------------------+ |
| | | (可能连接其他EP设备) | Root Complex (RC) | |
| | | | | (系统集成) | |
| | +------------------+ | +----------^-----------+ |
| | | PCIe Controller1 | | | |
| | | (RC Mode) |-+---------------------+ |
| | +------------------+ | (通过系统总线) |
+-------------------------+-----------------------------------------+
| (物理PCIe链路)
+-------------------------+-----------------------------------------+
| EP CPU |
| |
| +----------------------+ +----------------------+ |
| | EP CPU | | Local Memory | |
| | | | (如果独立) | |
| | +------------------+ | +----------------------+ |
| | | PCIe Controller0 | | ^ |
| | | (RC Mode) | | | (通过内部总线) |
| | +------------------+ | | |
| | | | +----------v-----------+ |
| | | (连接EP本地的PCIe设备)| On-Chip Network | |
| | | | | (或互联结构) | |
| | +------------------+ | +----------^-----------+ |
| | | PCIe Controller1 | | | |
| | | (EP Mode) |-+---------------------+ |
| | +------------------+ | (通过内部总线) |
+-------------------------+-----------------------------------------+
各组件的角色和功能
1. HOST CPU
-
系统的主处理器,运行主操作系统(如Linux)。
-
它的两个PCIe控制器都工作在RC模式,意味着它们都能作为系统的"根",去发现和管理下游的PCIe设备。
-
PCIe Controller1:用于连接EP CPU。在HOST看来,通过这个控制器连接的整个EP CPU就是一个复杂的PCIe端点设备。
2. EP CPU
-
它是一个受控的协处理器或加速器。
-
它运行自己的固件或轻量级OS,但其行为受HOST驱动控制。
-
PCIe Controller1 (EP模式):
-
核心角色:这是它作为"设备"存在的身份标识。
-
它向HOST暴露自己的PCIe配置空间,包含Vendor ID、Device ID、BAR等。
-
通过BAR,HOST可以映射EP CPU的本地内存或寄存器,从而进行控制和数据交换。
-
它可以使用DMA 直接读写HOST的系统内存。
-
它可以使用MSI/MSI-X 中断向HOST发送通知。
-
-
PCIe Controller0 (RC模式):
-
本地扩展角色:EP CPU可以利用这个控制器,在自己的"小系统"内连接其他PCIe设备(例如:本地NVMe SSD、高速网卡、或其他专用加速芯片)。
-
对于HOST来说,这些设备通常是不可见的。HOST只能看到EP CPU这个整体,而EP CPU内部的PCIe拓扑是它自己的事。
-
EP CPU负责枚举和管理这些本地设备。
-
数据流和工作方式
1. 系统启动和枚举
-
HOST系统启动,BIOS/UEFI开始枚举PCIe总线。
-
HOST的PCIe Controller1发现了连接的EP CPU(因为EP CPU的PCIe1工作在EP模式,像一个设备)。
-
HOST读取EP CPU的PCIe配置空间,加载对应的设备驱动程序。
2. HOST -> EP CPU 通信
-
MMIO (Memory Mapped I/O):
-
HOST驱动程序通过EP CPU的BAR,将EP的内存或寄存器映射到HOST的物理地址空间。
-
HOST CPU像读写普通内存一样,通过
mov指令向这个地址写入命令或数据。 -
这个写操作会通过HOST的PCIe Controller1 (RC)生成一个PCIe事务,发送给EP CPU的PCIe Controller1 (EP)。
-
EP CPU的控制器接收到事务后,将其转换成本地总线事务,写入指定的本地内存或寄存器中。
-
3. EP CPU -> HOST 通信
-
DMA:
-
EP CPU需要将处理结果送回HOST。
-
HOST驱动程序会事先在HOST内存中分配好缓冲区,并将该缓冲区的总线地址(经过IOMMU转换)告诉EP CPU。
-
EP CPU通过其PCIe Controller1 (EP)发起一个DMA写请求,目标地址就是HOST提供的总线地址。
-
这个请求上行到HOST的PCIe Controller1 (RC),RC通过系统总线将数据最终写入HOST内存。
-
-
中断:
-
当DMA完成或需要通知HOST时,EP CPU通过其PCIe Controller1 (EP)发起一个MSI/MSI-X中断。
-
HOST的RC收到中断后,会中断HOST CPU,使其执行相应的中断服务程序。
-
4. EP CPU的本地操作
-
EP CPU可以完全独立地使用其PCIe Controller0 (RC)来管理它自己的本地PCIe设备,这个过程对HOST是透明的。
总结
在这种配置下:
-
物理连接:
HOST.RC1 <---> EP.EP1 -
逻辑关系:HOST是主,EP CPU是从。
-
通信路径:这是唯一的控制与数据通道。所有HOST与EP CPU之间的交互(命令、数据、中断)都通过这条链路。
-
EP的本地独立性:EP CPU可以利用其另一个RC模式的控制器构建一个私有的、HOST无法直接访问的本地I/O子系统。
这种架构广泛应用于高性能计算、AI推理、智能网卡、存储控制器等领域,其中一个强大的通用CPU(HOST)负责管理任务调度和复杂操作系统,而一个或多个专用CPU(EP)负责执行计算密集型或延迟敏感型的特定工作负载。
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐

所有评论(0)