MicroEngine 排程器 (MES)

注意

佇列和環形緩衝區被用作同義詞。

注意

本節假設您熟悉管道、佇列和 GC 的概念。 如果不熟悉,請檢視 GFX、計算和 SDMA 總體行為drm/amdgpu - 圖形和計算 (GC)

每個 GFX 都有一個帶有一個或多個硬體佇列的管道元件。 管道可以在佇列之間切換,具體取決於某些條件,並且可以請求佇列切換到管道的元件之一是 MicroEngine 排程器 (MES)。 每當驅動程式初始化時,它會為每個硬體佇列建立一個 MQD,然後將 MQD 交給 MES 韌體進行對映到

  1. 核心佇列(傳統):此佇列靜態對映到 HQD,並且永遠不會被搶佔。 即使這是一個傳統功能,但它是當前的預設設定,並且大多數現有硬體都支援它。 當應用程式將工作提交到核心驅動程式時,它會將所有應用程式命令緩衝區提交到核心佇列。 CS IOCTL 從應用程式獲取命令緩衝區,並在核心佇列上排程它們。

  2. 使用者佇列:這些佇列動態對映到 HQD。 關於使用者佇列的利用,使用者空間應用程式將建立其使用者佇列,並將工作直接提交到其使用者佇列,而無需為每次提交使用 IOCTL,也無需共享單個核心佇列。

就使用者佇列而言,MES 可以將它們動態對映到 HQD。 如果 MQD 多於 HQD,則 MES 韌體將搶佔其他使用者佇列,以確保每個佇列獲得時間片;換句話說,MES 是一個微控制器,用於處理 MQD 到 HQD 的對映和取消對映,以及 MQD 的優先順序和超額訂閱。