這幾日再看nvme的資料,感覺茫然無序,這是近幾年出來的東西,比較新在網上找不到相關介紹說明,所以只能自己慢慢啃了。一下把自己的理解大概講講,有不正之處請大家及時指出,好及時改過。
- nvme走的是pcie的協議,有了底層協議保證,我們才能對nvme去進行code,nvme有以下優點。
不需要不可緩存/ MMIO寄存器讀取命令中提交或完成路徑。
最大的一個MMIO寄存器寫命令提交路徑是必要的。
多達65535個I/O隊列支持,每個I/O隊列支持多達64K的傑出的命令。
優先級與每個I/O隊列有明確的仲裁機制有關。
所有的信息來完成一個4KB讀請求包含在64命令本身,確保高效率的小的I/O操作。
效率和精簡指令集。
MSI和MSI-X支持中斷聚集。
支持多個命名空間。
有效支持I/O虛擬化架構如SR-IOV。
健壯的錯誤報告和管理能力。
支持多路徑I/O和命名空間的共享。 - nvme本身的規範特別多,基本的就是他與主機通信的管理採用的是隊列這種數據結構,用一個環形的隊列,管理各種命令,而命令分爲管理命令,每個io命令,每種命令都成對出現,包括提交隊列和完成隊列。大的數據是控制器直接接收過來的,裏面包括很多個命名空間,命名空間裏面有很多的邏輯塊地址lba。