NVMe技術(shù)架構(gòu)深度分析_第1頁(yè)
NVMe技術(shù)架構(gòu)深度分析_第2頁(yè)
NVMe技術(shù)架構(gòu)深度分析_第3頁(yè)
NVMe技術(shù)架構(gòu)深度分析_第4頁(yè)
NVMe技術(shù)架構(gòu)深度分析_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 NVMe技術(shù)架構(gòu)深度分析 NVM(Non-Volatile Memory)翻譯過(guò)來(lái)為非易失存儲(chǔ)器,是一類存儲(chǔ)器的一般術(shù)語(yǔ)總稱。而NVMe(Non-Volatile Memory Express)是一個(gè)可擴(kuò)展的主控器芯片接口標(biāo)準(zhǔn),主要為企業(yè)、數(shù)據(jù)中心以及客戶端系統(tǒng)中應(yīng)用PCIe接口的固態(tài)存儲(chǔ)設(shè)備(SSD)設(shè)計(jì),它的目標(biāo)是最大限度的釋放閃存的潛能。NVMe接口屬于邏輯設(shè)備接口,工作在支持NVMe的板卡上的主控器和主機(jī)端的對(duì)等層內(nèi),它規(guī)定了操作系統(tǒng)與NVM子系統(tǒng)之間的通信協(xié)議,定義了一套指令集和功能集。NVMe為基于PCIe的SSD帶來(lái)了較低的時(shí)延,較高的IOPS和較低能耗的優(yōu)勢(shì)。首先通過(guò)下圖展示

2、下NVMe在數(shù)據(jù)傳輸過(guò)程中的位置,有一部分位于PCIe之上,這部分也是NVMe驅(qū)動(dòng)的主要部分,還有一部分位于用戶態(tài)的軟件層,用于應(yīng)用層與NVMe驅(qū)動(dòng)間的交互。NVMe有以下幾個(gè)關(guān)鍵屬性:在命令提交(Command Submission)或者完成(Completion)的路徑上不需要讀取相關(guān)寄存器(不可緩存或MMIO寄存器);支持最多可達(dá)64K 的I/O 隊(duì)列,每個(gè)隊(duì)列支持64K的未處理命令命令;每個(gè)隊(duì)列的的優(yōu)先級(jí)擁有明確的仲裁機(jī)制;為確保超高效的IO操作,完成一個(gè)4KB讀取請(qǐng)求需要的所有信息包含在64B的命令中;高效且流線型的指令集;支持MSI/MSI-X中斷和中斷聚合;支持多個(gè)命名空間;有效

3、支持IO虛擬化架構(gòu),如SR-IOV;健全的錯(cuò)誤報(bào)告和管理功能;支持多路徑IO和命名空間共享;支持許多企業(yè)需求,如端到端的數(shù)據(jù)保護(hù)(與SCSI保護(hù)信息兼容)。NVMe有很多關(guān)鍵概念,其中命名空間(Name Space簡(jiǎn)稱NS),是一定量的NVM(Non-Volatile Memory)集合,這些NVM可被格式化為許多個(gè)邏輯塊。一個(gè)NVMe控制器能支持多個(gè)由不同命名空間ID(簡(jiǎn)稱NSID)標(biāo)識(shí)的NS。在系統(tǒng)向某個(gè)NS提交IO命令之前,這個(gè)NS必須與某個(gè)控制器關(guān)聯(lián)。若NVM子系統(tǒng)支持NS管理,則NVM子系統(tǒng)內(nèi)的NSID必須是唯一的(不管NS連接的是哪個(gè)控制器);若不支持,則不要求私有NS的ID唯一。

4、NVM子系統(tǒng)包括N個(gè)控制器,M個(gè)命名空間,S個(gè)PCIe端口,一個(gè)NVM介質(zhì)以及一個(gè)接口連接控制器與該介質(zhì)。NVMe是基于成對(duì)的Submission Queue(簡(jiǎn)稱SQ)和Completion Queue(簡(jiǎn)稱CQ)機(jī)制工作,它們存在于主機(jī)內(nèi)存里。Submission Queue由系統(tǒng)放置命令,Completion Queue由控制器放置完成信息。Admin Submission Queue和對(duì)應(yīng)的Admin Completion Queue用來(lái)管理和控制主控器(如創(chuàng)建和刪除IO隊(duì)列,終止命令等),只有屬于AdminCommand Set的命令才會(huì)被提交到AdminSubmission Que

5、ue。Admin Queue的ID都是0。IO Submission Queues和對(duì)應(yīng)的IOCompletion Queues用來(lái)處理IO命令,規(guī)范定義了一種IO Command Set,叫做NVM Command Set,與IO隊(duì)列一起使用。系統(tǒng)在創(chuàng)建Submission Queue前必須先創(chuàng)建相關(guān)的Completion Queue,刪除操作也要先于相關(guān)的Completion Queue。下面兩張圖展示了主機(jī)、主控器與隊(duì)列之間的配合關(guān)系。由系統(tǒng)創(chuàng)建隊(duì)列,隊(duì)列最大數(shù)目可到主控器支持的上限。通常情況下是根據(jù)主機(jī)的配置和預(yù)期的工作負(fù)載來(lái)創(chuàng)建,并將一對(duì)隊(duì)列綁定到一個(gè)CPU核上,避免使用鎖與更多的核

6、間數(shù)據(jù)傳遞。從下面兩張圖中可以看出Admin永遠(yuǎn)是1對(duì)1的,而IO隊(duì)列可以是多個(gè)SQ對(duì)應(yīng)一個(gè)CQ。每個(gè)SQ都是一個(gè)有著固定“槽位”大小的循環(huán)緩沖區(qū),系統(tǒng)用它來(lái)提交命令來(lái)等待控制器執(zhí)行。當(dāng)系統(tǒng)提交了一批新的等待執(zhí)行的命令時(shí),系統(tǒng)將更新SQ尾部Doorbell寄存器通知主控器,這時(shí)主控器將重寫(xiě)主控器內(nèi)部對(duì)應(yīng)SQ尾部的值。主控器從SQ中順序取出64字節(jié)的命令,但之后對(duì)命令的執(zhí)行可能是任何順序。內(nèi)存中將分配PRP(Physical Region Page)條目或Scatter Gather Lists(SGL)用于數(shù)據(jù)傳輸,每個(gè)命令包括兩個(gè)PRP條目或一個(gè)SGL部分。如果需要更多的PRP條目則需要提供

7、一個(gè)指向PRP鏈表的指針,而對(duì)于SGL則在SGL部分提供一個(gè)指向下一個(gè)SGL部分的指針。每個(gè)CQ也都是一個(gè)有著固定“槽位”大小的循環(huán)緩沖區(qū),控制器用它來(lái)投遞已完成命令的狀態(tài)信息。一個(gè)已完成的命令由相關(guān)的SQ ID和CQ ID唯一標(biāo)識(shí),SQ和CQ的ID由系統(tǒng)分配。系統(tǒng)在處理好CQ條目后會(huì)釋放該CQ條目并更新CQ的頭指針。在CQ條目中,有一Bit(Phase簡(jiǎn)稱P)是用來(lái)表示該條目是否是剛剛投遞來(lái)的,這樣做可以幫助系統(tǒng)決定該新條目是前一輪還是當(dāng)前一輪的完成通知。每次處理CQ時(shí),遍歷完所有CQE條目后,控制器都會(huì)將Phase值取反。多路徑IO指的是一個(gè)主機(jī)和一個(gè)命名空間之間存在多條完全獨(dú)立的PCIe

8、路徑。命名空間共享指的是多個(gè)主機(jī)可以通過(guò)不同的NVMe控制器接入同一個(gè)命名空間,要求NVM子系統(tǒng)包含多個(gè)控制器。下圖(1)是沒(méi)有多路徑IO和命名空間共享的情況,NVMe控制器下的NSID互不相同。圖(2)是有命名空間共享沒(méi)有多路徑IO的情況,兩個(gè)控制器用一個(gè)PCIe端口(一個(gè)為Func0一個(gè)為Func1),共享一個(gè)命名空間(在控制器內(nèi)必須用相同的ID)。當(dāng)共享命名空間的控制器存在并發(fā)訪問(wèn)該命名空間時(shí),應(yīng)設(shè)置控制器支持原子操作,并可采用不同的優(yōu)先級(jí)。圖2-3(3)是有多路徑IO和命名空間共享的情況,這樣的情境中,兩個(gè)PCIe端口是完全獨(dú)立的。NVMe對(duì)SR-IOV的支持示意圖(不一定只有一個(gè)PC

9、Ie端口)如下。圖中可看出NVM子系統(tǒng)只有一個(gè)物理Func0,其余4個(gè)均為虛擬Func(0, x)。每個(gè)虛擬Func都有一個(gè)與之關(guān)聯(lián)的NVMe控制器,且每個(gè)控制器有一個(gè)私有的命名空間和同一個(gè)共享的命名空間。通過(guò)這樣的方法,實(shí)現(xiàn)了PCIe的擴(kuò)展,允許上層運(yùn)行的虛擬機(jī)能夠高效的共享PCIe的硬件資源。硬件形態(tài)上,和傳統(tǒng)SCSI盤(pán)比較,NVMe子系統(tǒng)直接通過(guò)PCIe總線和主機(jī)連接,路徑中不再需要HBA卡,降低了系統(tǒng)開(kāi)銷。NVMe子系統(tǒng)內(nèi)部組成:至少一個(gè)PCIe port,用于外部連接至少一個(gè)NVMe controller,該controller是實(shí)現(xiàn)了NVMe邏輯的PCI function名字空間標(biāo)識(shí)(NSID)即LUN號(hào)名字空間(NS)即LBANAND Flash介質(zhì) (上圖未標(biāo)出)NVMe和傳統(tǒng)SCSI體系比較,在主機(jī)側(cè),NVMe子系統(tǒng)減少了IO調(diào)度層,單獨(dú)的命令層,IO路徑更短,為低延遲提供了保障。NVMe存儲(chǔ)設(shè)備涉及的主機(jī)側(cè)軟件棧包括: NVMe驅(qū)動(dòng),虛擬塊管理層,文件系統(tǒng)層。NVMe規(guī)范重

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論