GT 多播/复制 (MCR) 寄存器支持

一些 GT 寄存器被设计为“多播”或“复制”寄存器:同一寄存器的多个实例共享一个 MMIO 偏移。MCR 寄存器通常用于硬件需要潜在地跟踪每个硬件单元(例如,每个子切片、每个 L3bank 等)寄存器的独立值时。存在的特定复制类型因平台而异。

对 MCR 寄存器的 MMIO 访问根据平台 MCR_SELECTOR 寄存器中编程的设置进行控制。 对 MCR 寄存器的 MMIO 写入可以以多播(单个写入将所有寄存器实例更新为相同的值)或单播(写入仅更新一个特定实例)形式完成。 无论 MCR_SELECTOR 中多播/单播位如何设置,MCR 寄存器的读取总是以单播方式操作。 选择用于单播操作的特定 MCR 实例称为“steering(导向)”。

如果 MCR 寄存器操作被导向到已熔断或当前因电源门控而断电的硬件单元,则 MMIO 操作将被硬件“终止”。 终止的读取操作将返回值零,终止的单播写入操作将被静默忽略。 在设备初始化期间,各种 init_steering_*() 函数的目标是应用特定于平台的每个 MCR 寄存器类型的规则,以识别将选择非终止实例的转向目标。

MCR 寄存器在 Virtual Function (VF) 上不可用。

内部 API

待办