2026/10/18 22:33:11

chiplet GPU 的 CP 组织:Local CP + Global 调度点的两级结构调研

chiplet GPU 的 CP 组织:Local CP + Global 调度点的两级结构调研 姊妹篇《chipletGPU-cp-gem5.md》《mi500-cp-scheduling-modeling.md》《nvidia-multi-die-gpu.md》。核心问题MI300 及以后的 AMD GPGPU、NVIDIA B200 等双/多算力 die GPUCP 是否分为 global CP 和 local CP双算力 die 时是否需要两个 local CP 加一个 global CP证据来源本机/usr/src/amdgpu-6.3.6-1718217.22.04AMD DKMS KMD 6.3.6对应 ROCm 6.3上游路径drivers/gpu/drm/amd/。核查日期2026-10-15。1. 结论真实硬件正是每个算力 die 一套完整 local CP 设备级一层全局队列管理的两级结构。但需要修正global CP这个叫法设备级不存在第二个执行命令流的 CP。真正跑 PM4/ring 命令流的 CP 全部是 per-die 的全局层的职责窄得多——它是队列→die 的映射与跨 die work 分发策略点KMD/MES 层面 dispatch 硬件/微码内部。因此双算力 die 时的准确表述2 个 local CP每 die 完整 CP 复合体 1 个全局映射/分发点而不是2 个 local CP 1 个执行命令的 global CP。2. AMD MI300驱动中的完整实证MI300GFX942 / GC 9.4.3单 PCI 设备、多 XCD。CP 资源全部按 XCCAccelerated Compute Core即 XCD 复合体实例化证据链如下。2.1 证据一ring 创建时绑定 dieamd/amdgpu/amdgpu_gfx.c:307-323intamdgpu_gfx_kiq_init_ring(structamdgpu_device*adev,structamdgpu_ring*ring,structamdgpu_irq_src*irq,intxcc_id){structamdgpu_kiq*kiqadev-gfx.kiq[xcc_id];// ① KIQ 是 per-XCC 数组...ring-xcc_idxcc_id;// ② ring 绑定 diering-vm_hubAMDGPU_GFXHUB(xcc_id);// ③ 每 die 独立 GFXHUB(VM/TLB)ring-doorbell_index(adev-doorbell_index.kiqxcc_id*adev-doorbell_index.xcc_doorbell_range)1;// ④ doorbell 按 die 分段四个事实KIQKernel Interface QueueKMD↔CP 的控制队列是kiq[xcc_id]数组每个 ring 记录所属xcc_id每 die 有独立GFXHUBVM/TLB hubdoorbell 地址空间按 die 切分xcc_doorbell_range。2.2 证据二MEC 队列管理与资源按 die 复制gfx_v9_4_3.c:453-470num_xccNUM_XCC(adev-gfx.xcc_mask);// ⑤ xcc_mask 枚举存活 diefor(i0;inum_xcc;i)bitmap_zero(adev-gfx.mec_bitmap[i].queue_bitmap,AMDGPU_MAX_COMPUTE_QUEUES);// MEC 队列位图 per-XCCmec_hpd_sizeadev-gfx.num_compute_rings*num_xcc*GFX9_MEC_HPD_SIZE;// MEC HPD 资源总量 每 die ring 数 × die 数MECMicro Engine Computecompute CP 的微引擎的队列管理状态是 per-XCC 数组HPD 资源随 die 数线性扩展。而 MEC 固件镜像只有一份gfx_v9_4_3_mec_fini()只释放单个mec_fw_obj——典型的**“一份固件镜像加载到每 die 的 MEC 硬件实例上运行”**。2.3 证据三寄存器/doorbell 写按 die 实例寻址gfx_v9_4_3.c:249-266/* Use register offset which is local to XCC in the packet */xcc_offsetSOC15_REG_OFFSET(GC,0,regSCRATCH_REG0);scratch_reg0_offsetSOC15_REG_OFFSET(GC,GET_INST(GC,ring-xcc_id),regSCRATCH_REG0);ring 提交命令包时用ring-xcc_id把寄存器偏移翻译到所属 die 的寄存器实例——命令流的目的地在创建时刻就已确定所属 die。2.4 拼出的两级结构层级组件性质local每 XCDKIQ、compute rings、MEC 固件实例、HPD、doorbell 段、GFXHUB/TLB、CU 分发逻辑完整 CP 复合体每 die 一份同一固件镜像跑在各实例global设备级KMD 统一视图xcc_mask/NUM_XCC支持良率/SKU 关 die、MESamdgpu_mes.c队列→硬件槽位映射、dispatch 硬件/微码内的跨 die WG 分发不执行命令流只做映射与策略跨 die 的 workgroup 分配发生在 dispatch 硬件/微码内部闭源软件侧包括 KMD没有观测点——这与姊妹篇中 MI250X 的结论互补MI250X 连这层全局映射都没有两个 PCI 设备调度语义 多 GPU全局职责被推给用户态 HIP 应用。3. NVIDIA B200无源码旁证指向同一结构NVIDIA 不公开 CP/HOST 微架构但三条旁证一致指向local global 两级产品形态B200 单 GPU 暴露CTA 经 GigaThread 引擎跨双 die 分发软件不可见。统一程度比 MI300 更高2 die NV-HBI 10 TB/s 全缓存一致性可假装单片。学术旁证MCM-GPUNVIDIA Research, ISCA 2017的评估设计就是集中式 CTA 调度器 per-die 本地资源——NVIDIA 研究线内部使用的正是 global local 两级模型。硬件信号Blackwell 引入AMPAI Management ProcessorRISC-V把设备级调度职责从 CPU/驱动进一步收进 GPU——全局调度点被做成显性可编程硬件的证据。HOST 引擎pushbuffer/channel 处理器是否 per-die 实例化无公开资料但按 NVIDIA 引擎随 GPC 复制的惯例几乎必然。4. 三种形态的统一视角MI250XGFX90aMI300GFX942B200GB100×2local CP每 die 完整 CP每 XCD 完整 CP本文实证推定每 die未公开global 层无双 PCI 设备MES 映射 dispatch 硬件分发闭源GigaThread 跨 die AMP闭源全局职责归属用户态HIP multi-deviceKMD/固件/硬件硬件die 对软件可见性完全可见队列语义层隐藏完全隐藏单一大 GPU规律die 数越多、统一程度越高全局层越厚、越下沉到硬件——从用户态软件MI250X到KMD固件MI300到可编程调度处理器B200 AMP。这正是《mi500-cp-scheduling-modeling.md》中 GDU 设定的现实依据。5. 对建模的含义2 local CP 1 global 调度点的建模应这样分层要建的 local CP × N → PM4/AQL ring 语义 队列状态机 per-die 时延 行为规范 Linux 驱动本文 §2 的代码路径即功能清单 global 点 × 1 → 队列→die 映射 分配/均衡策略 die 间时延函数 不需要 PM4 执行语义——它不是 CP是策略点 跨 die 分发逻辑 → 闭源黑盒抽象为分配策略 时延模型参数由真机标定两条边界global 点建到映射 策略 时延即封顶。再往下MES 固件执行、dispatch 微码无据可依也不影响调度类研究问题。local CP 与 global 点之间是唯一可观测接口ring 的 die 归属xcc_id、doorbell 分段、队列位图——这些在驱动里全部可见是标定模型语义的金标准。附录证据代码索引便于复查证据文件行内容ring 绑定 die / KIQ per-XCC / doorbell 分段 / GFXHUB per-dieamd/amdgpu/amdgpu_gfx.c:307-323amdgpu_gfx_kiq_init_ring()MEC 队列位图 per-XCC、HPD 资源 ×num_xccamd/amdgpu/gfx_v9_4_3.c:453-470gfx_v9_4_3_mec_init()单份 MEC 固件镜像amd/amdgpu/gfx_v9_4_3.c:445-451gfx_v9_4_3_mec_fini()命令包按 die 实例寻址寄存器amd/amdgpu/gfx_v9_4_3.c:249-266scratch 寄存器偏移翻译per-XCC 寄存器访问原语amd/amdgpu/amdgpu.h:1265-1266RREG32_XCC/WREG32_XCCdie 枚举良率/SKUamd/amdgpu/amdgpu.h:1140aid_mask及xcc_mask/NUM_XCC全局层MESamd/amdgpu/amdgpu_mes.c、mes_v10_1.c、mes_v11_0.c队列→硬件槽位映射