NVME_CONTROLLER_REGISTERS 結構 (nvme.h)
指定控制器的緩存器對應。
語法
typedef struct {
NVME_CONTROLLER_CAPABILITIES CAP;
NVME_VERSION VS;
ULONG INTMS;
ULONG INTMC;
NVME_CONTROLLER_CONFIGURATION CC;
ULONG Reserved0;
NVME_CONTROLLER_STATUS CSTS;
NVME_NVM_SUBSYSTEM_RESET NSSR;
NVME_ADMIN_QUEUE_ATTRIBUTES AQA;
NVME_ADMIN_SUBMISSION_QUEUE_BASE_ADDRESS ASQ;
NVME_ADMIN_COMPLETION_QUEUE_BASE_ADDRESS ACQ;
NVME_CONTROLLER_MEMORY_BUFFER_LOCATION CMBLOC;
NVME_CONTROLLER_MEMORY_BUFFER_SIZE CMBSZ;
ULONG Reserved2[944];
ULONG Reserved3[64];
ULONG Doorbells[0];
} NVME_CONTROLLER_REGISTERS, *PNVME_CONTROLLER_REGISTERS;
成員
CAP
NVME_CONTROLLER_CAPABILITIES 結構,指出裝載軟體之控制器的基本功能。
控制器功能 CAP 快取器從 Offset 00h 開始。
VS
NVME_VERSION 結構,表示控制器實作支援之 NVM Express 規格的主要和次要版本。 規格的有效版本包括:1.0、1.1 和 1.2。
版本 VS 快取器從 Offset 08h 開始。
INTMS
指出中斷向量是否會遮罩,使其無法產生中斷,或報告 MSI 功能結構中的擱置中斷。
當的值 1
寫入欄位中的某個位時,對應的中斷向量會遮罩,使其無法產生中斷,或報告 MSI 功能結構中的擱置中斷。 0
將寫入位沒有任何作用。
讀取時,此欄位會傳回控制器內的目前中斷遮罩值, (不是這個緩存器的值) 。 如果位具有的值 1
,則對應的插斷向量會遮罩。 如果位的值為 0
,則對應的插斷向量不會遮罩。
此快取器可用來遮罩使用針腳型中斷、單一訊息 MSI 或多個訊息 MSI 時的中斷。 使用 MSI-X 時,應該使用定義為 MSI-X 一部分的中斷遮罩表來遮罩中斷。 當主機軟體設定為 MSI-X 時,不應存取此緩存器;未定義 MSI-X 設定時的任何存取。
中斷遮罩集 INTMS 快取器從 Offset 0Ch 開始。
INTMC
指出中斷向量是否已遮罩。
當的值 1
寫入欄位時,對應的插斷向量會取消遮罩。 0
將寫入位沒有任何作用。
讀取時,此欄位會傳回控制器內的目前中斷遮罩值, (不是這個緩存器的值) 。 如果位具有的值 1
,則對應的插斷向量會遮罩,如果某個位的值 0
為 ,則對應的插斷向量不會遮罩。
此快取器可用來在使用釘選式中斷、單一訊息 MSI 或多個訊息 MSI 時解除遮罩中斷。 使用 MSI-X 時,應該使用定義為 MSI-X 一部分的中斷遮罩數據表來解除遮罩中斷。 當主機軟體設定為 MSI-X 時,不應存取此緩存器;未定義 MSI-X 設定時的任何存取。
中斷遮罩清除 INTMS 快取器從 Offset 10h 開始。
CC
包含控制器讀取/寫入組態設定 的NVME_CONTROLLER_CONFIGURATION 結構。
主機軟體必須先將AMS (AMS) 、記憶體頁面大小 (MPS) 和命令集 (CSS) 字段設定為有效值,再將 [啟用 (EN) NVME_CONTROLLER_CONFIGURATION] 字段1
設定為 ,才能啟用控制器。
控制器設定 CC 快取器從 Offset 14h 開始。
Reserved0
位移 18 小時保留。
所有保留緩存器和緩存器內的所有保留位都是唯讀的,但在讀取時會傳回,不過,軟體不應依賴0h
傳回0h
。
CSTS
表示控制器狀態 的NVME_CONTROLLER_STATUS 結構。
控制器狀態 CSTS 快取器從 Offset 1Ch 開始。
NSSR
提供主機軟體的 NVME_NVM_SUBSYSTEM_RESET 結構,能夠起始 NVM 子系統重設。
此選擇性註冊的支援會以控制器功能中的 NSSRS (NSSRS) 欄位的狀態來指出。 如果不支援快取器,則會保留緩存器所佔用的位址範圍。
(選擇性) NVM 子系統重設緩存器從 Offset 20h 開始。
AQA
NVME_ADMIN_QUEUE_ATTRIBUTES 結構,指定 管理員 提交佇列和 管理員 完成佇列的 管理員 佇列屬性。
管理員 佇列屬性 AQA 快取器從 Offset 24h 開始。
ASQ
NVME_ADMIN_SUBMISSION_QUEUE_BASE_ADDRESS 結構,指定 管理員 提交佇列的基底記憶體位址。
管理員 提交佇列基位址緩存器從 Offset 28h 開始。
ACQ
NVME_ADMIN_COMPLETION_QUEUE_BASE_ADDRESS 結構,指定 管理員 完成佇列的基底記憶體位址。
管理員 完成佇列基位址緩存器從 Offset 30h 開始。
CMBLOC
指定控制器記憶體緩衝區位置 的NVME_CONTROLLER_MEMORY_BUFFER_LOCATION 結構。
如果 CMBSZ 的值是 0
,則會保留此快取器。
(選擇性) 控制器記憶體緩衝區位置緩存器會在 Offset 38h 開始。
CMBSZ
指定控制器記憶體緩衝區大小的 NVME_CONTROLLER_MEMORY_BUFFER_SIZE 結構。
如果控制器不支援控制器記憶體緩衝區功能,則會將此快取器清除為 0h
。
(選擇性) 控制器記憶體緩衝區大小緩存器會從 Offset 3Ch 開始。
Reserved2[944]
會保留 40h 到 EFFh 的位移。
所有保留緩存器和緩存器內的所有保留位都是唯讀的,但在讀取時會傳回,不過,軟體不應依賴0h
傳回0h
。
Reserved3[64]
位移 F00h 至 FFFh 會保留給命令集特定緩存器。
所有保留緩存器和緩存器內的所有保留位都是唯讀的,但在讀取時會傳回,不過,軟體不應依賴0h
傳回0h
。
Doorbells[0]
指定第一個 Doorbell 快取器開始。 管理員 提交佇列 Tail Doorbell。
備註
控制器快取器位於記憶體緩存器下層基位址 (MLBAR) /Memory Register Upper Base Address (MUBAR) registers (PCI BAR0 和 BAR1) 對應至支援順序存取和可變存取寬度的記憶體空間。 對於許多計算機架構,將記憶體空間指定為無法快取會產生此行為。
主機不得發出鎖定的存取權,而且必須存取其原生寬度或對齊 32 位存取的緩存器。 違反上述任一主機需求會導致未定義的行為。
廠商特定位址範圍會在控制器支援的最後一個門鈴之後開始,並繼續到 BAR0/1 支援範圍的結尾。 廠商特定位址範圍的開頭會從相同的位置開始,而且不相依於配置門鈴的數目。
不支援以兩個或多個緩存器的任何部分為目標的存取。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 10 |
標頭 | nvme.h |
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應