3.nvme暫存器配置
nvme over pcie,通過利用pcie匯流排實現資料互動的功能,實現對物理層的抽象功能。
pcie匯流排分為三層,物理層,資料鏈路層,處理層(類似於計算機網路的分層結構),通過包來**資料。nvme協議定義的內容相當於pcie的上一層應用層,處於應用層。pcie給nvme提供了底層的抽象。
nvme ssd相當於乙個pcie的端裝置(ep)。
在協議中主要定義了pc header、pci capabilities和pci express extended capabilities三部分內容。
具體在host記憶體中會占有4kb,結構如下:
pci header有兩種型別,type0表示裝置,type1表示橋。nvme 控制器屬於ep,所以定義為type0的型別。共64kb,如下圖:
這裡配置了pci capbilities,包括電源管理、中斷管理(msi、msi-x)、pcie capbilities。
這裡配置有關錯誤恢復等高階功能。
nvme暫存器主要分為兩部分,一部分定義了controller整體屬性,一部分用來存放每組佇列的頭尾db暫存器。
cap——控制器能力,定義了記憶體頁大小的最大最小值、支援的i/o指令集、db暫存器步長、等待時間界限、仲裁機制、佇列是否物理上連續、佇列大小;
vs——版本號,定義了控制器實現nvme協議的版本號;
intms——中斷掩碼,每個bit對應乙個中斷向量,使用msi-x中斷時,此暫存器無效;
intmc——中斷有效,每個bit對應乙個中斷向量,使用msi-x中斷時,此暫存器無效;
cc——控制器配置,定義了i/o sq和cq佇列元素大小、關機狀態提醒、仲裁機制、記憶體頁大小、支援的i/o指令集、使能;
csts——控制器狀態,包括關機狀態、控制器致命錯誤、就緒狀態;
aqa——admin 佇列屬性,包括sq大小和cq大小;
asq——admin sq基位址;
acq——admin cq基位址;
1000h之後的暫存器定義了佇列的頭、尾db暫存器。
cap暫存器標識的是controller具有多少能力,而cc暫存器則是指當前controller選擇了哪些能力,可以理解為cc是cap的乙個子集;如果重啟(reset)的話,可以更換cc配置;
cc.en置一,表示controller已經可以開始處理nvm命令,從1到0表示controller重啟;
cc.en與csts.rdy關係密切,csts.rdy總是在cc.en之後由controller改變,其他不符合執行順序的操作都將產生未定義的行為;
admin佇列有host直接建立,aqa、asq、acq三個暫存器標識了admin佇列,而其他i/o佇列則有admin命令建立(eg,建立i/o cq命令);
admin佇列的頭、尾db暫存器標識為0,其他i/o佇列標識由host按照一定規則分配;只有16bit的有效位,是因為佇列深度最大64k。
RTMP協議詳解(二)
rtmp的位元組序 rtmp的位元組序和大多數網路協議一樣是大端序,也有一些欄位是小端序的,不過都有特殊的說明。rtmp的head組成 rtmp的head在協議中的表現形式是chunk head,前面已經說到乙個message head可以分成乙個和多個chunk,為了區分這些chunk,肯定是需要...
TCP協議詳解(二)
1 首先伺服器通過listen系統呼叫,進入listen狀態,表示被動開啟,被動等待客戶端的連線,伺服器監聽到某個客戶端的連線請求後,這個連線請求被稱為同步報文段。之後tcp會將其放到核心等待佇列中,並向客戶端傳送帶syn的確認報文段,之後該連線就會處於syn rcvd狀態。那麼這個時候如果伺服器收...
pcie協議 NVMe會成為通用塊儲存訪問協議嗎?
facebook在本月初舉行的虛擬ocp峰會上舉行了兩次激動人心的演講,暗示nvme可以成為通用的塊訪問協議。這個前景有多真實?於5月12日至15日舉行的2020 ocp虛擬峰會的重點是ocp儲存專案和發言人的演講,他們發表了nvme來替代固態,磁碟甚至磁帶驅動器的sata和sas介面。當前,傳送到...