AMDGPU 驱动(KMD + UMD)中的一些缩写词解释

AMDGPU Microarchitecture Roadmap

Glossary

GPU Hardware

这里的 hardware block, IP (Intellectual Property) block, controller, processor, engine 基本上都是指一个具有相对独立功能的硬件处理单元

Abbr. Stands for Description
GMC Graphics Memory Controller 管理 GPU 上不同 IP 如何获取内存 (VRAM) 的控制器,它也提供每进程 GPU 虚拟地址空间的支持(听起来有点像 MMU)
IH Interrupt Handler GPU 上的中断控制器
PSP Platform Security Processor 处理 SoC 上的安全策略,执行 trusted app, 为其它 IP 验证和加载固件程序
SMU System Management Unit SoC 的电源管理微控制器,驱动通过这个模块来控制芯片的时钟,电压域,电源轨等
DCN Display Controller Next 显示控制器
SDMA System DMA 多功能 DMA engine, KMD 利用它完成分页,GPU 页表更新,而且它通过 UMD 暴露给用户态使用
GC Graphics and Compute GFX/Compute engine, 这是 GPU 上最大的 IP, 它包含 3D pipeline 和 shader cores
VCN Video Codec Next Multi-media engine,它处理视频和图像的编解码,通过 UMD 暴露给用户态使用
CP Command Processor 包含 GFX/Compute engine 的前端,一批微控制器,包括 PFP,ME,CE,MEC,它们上面运行固件代码,为驱动提供与 GFX/Compute engine 进行交互的接口
CE Constant Engine GFX CP 里的一个小处理器,主要用来更新 buffer descriptor 以便异步地将 PFP/ME 使用的 buffer 加载进 cache
PFP Pre-Fetch Parser GFX CP 里的一个小处理器,需要给它加载 µCode 去执行, 从名字能看出来它是预取 packets 的
ME MicroEngine GFX CP 里的一个小处理器,它和 PFP 组成一个 Drawing Engine,可以和 CE 异步执行
MEC MicroEngine Compute 微控制器用来控制 GFX/Compute engine 上的 compute queues, Compute Engine 一般有 2 个 MEC, 而且每个 MEC 支持 32 个 HW ring(queue)
MES MicroEngine Scheduler 一个新的微控制器用来控制 queues, 估计既可以控制 compute queues, 也可以控制 gfx queues, 而且它上面运行的固件可能取代现有的内核 gpu scheduler, 而变成 firmware-based scheduling 😃 猜
RLC RunList Controller 又一个 GFX/Compute engine 里的微控制器,用来处理 GFX/Compute engine 内部的电源管理,至于名字是历史遗留,与它的功能没有毛关系

Driver

Abbr. Stands for Description
KIQ Kernel Interface Queue KMD 的一个控制队列,用来管理 GFX/Compute engine 上的其它队列
IB Indirect Buffer 某个特定 engine 的 command buffer, 通常不是直接将命令写入硬件 queue 里,而是先将命令写入一块内存,然后再将内存的地址写入硬件 queue
HQD Hardware Queue Descriptor kernel queues 或 user queues 将“映射”到一个 HQD, 一个 HQD 可能就是一个 MMIO 地址寄存器。kernel queues 和 user queues 映射的区别是, kernel queues 总是静态地映射到一个 HQD, 而 user queues 由 MES 动态地 映射到剩余的所有其它 HQDs
MQD Memory Queue Descriptor 定义 queue 的状态,包括 GPU virtual address, doorbell 等,驱动为每个它创建的 queue 设置一个 MQD, MQD 被交给 MES firmware 去映射
KFD Kernel Fusion Driver AMD APU 芯片的内核驱动, 主要用于 HSA 架构的芯片
KGD Kernel Graphics Driver AMD GPU 芯片的内核驱动, 主要用于独立显卡和 OEM 上的 GPU 芯片
RAS Reliability, Availability, Serviceability AMDGPU 驱动的一个功能特性,帮助错误检测上报,错误处理和调试

References