drm/amdgpu - 图形与计算 (GC)

CPU 和 GPU 之间的关系可以描述为生产者-消费者问题,其中 CPU 填充一个包含待由 GPU(消费者)执行的操作的缓冲区(生产者)。缓冲区中请求的操作被称为命令包(Command Packets),可以概括为一种向图形控制器传输命令信息的压缩方式。

作为 CPU 和 GPU 之间前端的组件称为命令处理器(Command Processor,CP)。该组件负责为 GC 提供更大的灵活性,因为 CP 使得编程 GPU 流水线的各个方面成为可能。CP 还通过名为 环形缓冲区(Ring Buffers) 的机制协调 CPU 和 GPU 之间的通信,其中 CPU 向缓冲区追加信息,而 GPU 移除操作。值得强调的是,CPU 可以向环形缓冲区添加一个指向环形缓冲区外部另一内存区域的指针,CP 可以处理它;这种机制称为 间接缓冲区(Indirect Buffer,IB)。CP 接收并解析命令流(Command Streams,CS),并将操作写入正确的硬件块。

图形 (GFX) 和计算微控制器

GC 是一个大型模块,因此它关联着多个固件。其中一些是:

CP(命令处理器)

这是包含 GFX/计算流水线前端的硬件模块的名称。主要由一堆微控制器(PFP、ME、CE、MEC)组成。在这些微控制器上运行的固件提供了与 GFX/计算引擎交互的驱动程序接口。

MEC(微引擎计算)

这是控制 GFX/计算引擎上计算队列的微控制器。

MES(微引擎调度器)

这是用于管理队列的引擎。更多详情请查看 微引擎调度器 (MES)

RLC(运行列表控制器)

这是 GFX/计算引擎中的另一个微控制器。它处理 GFX/计算引擎内部与电源管理相关的功能。这个名称是旧硬件的遗留,它最初是在那里添加的,与该引擎现在的功能没有太多关系。