一篇文章理解什麼是NVMe

由於NVMe的出現,硬盤的性能獲得了極大的提高。這個極大是多少呢?讀帶寬從500MB/s提升到了3200MB/s,寫帶寬從400MB/s提升到了1200MB/s左右。而讀IOPS則達到了50萬,甚至更高。也就是說,如今一塊基於NVMe的SSD硬盤的性能比一個企業級磁盤陣列還要好。 牛皮吹了這麼多,那到底什麼是NVMe呢?NVMe的全稱是Non-Volatile Memory Express,若是翻譯過來就是非易失性內存主機控制器接口規範。你可能仍是一頭霧水,那咱們上搜索引擎搜索一下這個關鍵詞,可能會獲得以下圖片。 服務器

圖1 NVMe存儲
廢話說了半天,到底什麼是NVMe呢?首先它是一種接口規範,其次它是用於存儲設備的接口規範。準確的說是目前最新的存儲設備通訊協議。 這個協議就比如SAS和SATA同樣,用於定義硬件接口和傳輸協議

關於存儲的幾個概念

爲了完全搞清楚什麼是NVMe,咱們先理清楚幾個關於存儲的概念。 尺寸外形:也就是設備的形狀和大小,一般存儲設備的尺寸外形包括以下:微信

  • 2.5寸或者3.5寸驅動器(在SFF標準中定義)
  • M.2 和 PCI Express(PCIe)(在PCI-SIG標準中定義)

接口:也就是設備如何與計算機通訊。常見的存儲設備接口包括:併發

  • SATA接口,一般用於2.5寸和3.5寸硬盤,有時候一些M.2設備也會使用
  • PCI Express(PCIe)接口, 用於M.2和PCIe設備
  • SAS(串行SCSI)和FC(Fibre Channel)接口,僅用於服務器領域和數據中心 PCIe接口要比SATA接口快的多,SATA3最大帶寬是6Gb/s,而基於4X PCIe的M.2接口最大能夠達到32Gb/s。

協議:定義瞭如何在計算機與設備之間傳輸數據。常見的協議包括:性能

  • 用於SATA接口的AHCI或者ATA協議,
  • 用於PCIe接口的NVMe協議

到這裏咱們應該比較清晰了,NVMe是運行在某種接口上的通訊協議,用於規範計算機與存儲設備的數據傳輸。上述設備尺寸、接口和協議一般是能夠組合的。下面是常見的集中組合形式。搜索引擎

  • 一個2.5寸SSD硬盤,基於SATA接口,通訊協議是AHCI或者ATA。具體設備大概如圖2所示。 翻譯

    圖2 SATA接口的SSD

  • 一個M.2的SSD, 基於PCIe接口,通訊協議是NVMe。具體設備大概如圖3所示。 cdn

    圖3 M.2的SSD

  • 一個PCIe的SSD,基於PCIe接口,通訊協議是NVMe。具體設備大概如圖4所示。 blog

    圖4 PCIe的SSD

這裏只是給出了幾個具體的例子,便於你們理解接口、設備和協議的關係。具體來講,還有其它不少種組合形式,本文不在贅述。索引

爲何NVMe會這麼快

上面咱們介紹了什麼是NVMe,下面本文將介紹一下爲何NVMe如此之快(注意:這裏說的快是基於SSD設備的,若是是機械硬盤則否則)。因爲SSD自己的物理特性,其數據的訪問已經很是快了,性能的瓶頸就是出在計算機與設備鏈接的接口和協議上面。 咱們舉一個簡單的例子。好比咱們有一個倉庫會不斷的生產出產品來,咱們能夠機械手將產品從倉庫拿到其它地方(如圖5所示)。對於SATA的SSD,相似於一個單臂的機器人,倉庫生產的很快,但機器人每次只能拿一個,搬移的速度就比較慢。 接口

圖5 單臂機器人
然而對於基於NVMe的SSD呢?至關於這個機器人長了數百隻手,這樣速度顯然就比前者快的多了。
圖6 多臂機器人
NVMe協議的原理也是如此,它本質是上創建了多個計算機與存儲設備的通路,這樣搬運數據的速度天然就提升了。在NVMe協議中,多個通路其實就是多個隊列,具體如圖7所示。在SATA中計算機與存儲設備只能有一個隊列,即便是多CPU狀況下,全部請求只能通過這樣一個狹窄的道路。而NVMe協議能夠最多有64K個隊列,每一個CPU或者核心均可以有一個隊列,這樣併發程度大大提高,性能也天然更高了。
圖7 NVMe的多隊列

今天只是一個入門,後面咱們再詳細的介紹關於NVMe的更多內容。若是以爲不錯,還請你們關注本號,若是以爲太爛,還請下面留言

更及時的獲取新內容,請關注微信公衆號: itworld123

相關文章
相關標籤/搜索