因?yàn)镹VMe的出現(xiàn)靠粪,硬盤的性能得到了極大的提升聊疲。這個極大是多少呢尖奔?讀帶寬從500MB/s提高到了3200MB/s搭儒,寫帶寬從400MB/s提高到了1200MB/s左右。而讀IOPS則達(dá)到了50萬提茁,甚至更高淹禾。也就是說,現(xiàn)在一塊基于NVMe的SSD硬盤的性能比一個企業(yè)級磁盤陣列還要好甘凭。 牛皮吹了這么多稀拐,那到底什么是NVMe呢火邓?NVMe的全稱是Non-Volatile Memory Express丹弱,如果翻譯過來就是非易失性內(nèi)存主機(jī)控制器接口規(guī)范。你可能還是一頭霧水铲咨,那我們上搜索引擎搜索一下這個關(guān)鍵詞躲胳,可能會得到如下圖片。
廢話說了半天纤勒,到底什么是NVMe呢坯苹?首先它是一種接口規(guī)范,其次它是用于存儲設(shè)備的接口規(guī)范摇天。準(zhǔn)確的說是目前最新的存儲設(shè)備通信協(xié)議粹湃。這個協(xié)議就好比SAS和SATA一樣,用于定義硬件接口和傳輸協(xié)議泉坐。
關(guān)于存儲的幾個概念
為了徹底搞清楚什么是NVMe为鳄,我們先理清楚幾個關(guān)于存儲的概念。
尺寸外形:也就是設(shè)備的形狀和大小腕让,通常存儲設(shè)備的尺寸外形包括如下:
- 2.5寸或者3.5寸驅(qū)動器(在SFF標(biāo)準(zhǔn)中定義)
- M.2 和 PCI Express(PCIe)(在PCI-SIG標(biāo)準(zhǔn)中定義)
接口:也就是設(shè)備如何與計算機(jī)通信孤钦。常見的存儲設(shè)備接口包括:
- SATA接口,通常用于2.5寸和3.5寸硬盤纯丸,有時候一些M.2設(shè)備也會使用
- PCI Express(PCIe)接口偏形, 用于M.2和PCIe設(shè)備
- SAS(串行SCSI)和FC(Fibre Channel)接口,僅用于服務(wù)器領(lǐng)域和數(shù)據(jù)中心 PCIe接口要比SATA接口快的多觉鼻,SATA3最大帶寬是6Gb/s俊扭,而基于4X PCIe的M.2接口最大可以達(dá)到32Gb/s。
協(xié)議:定義了如何在計算機(jī)與設(shè)備之間傳輸數(shù)據(jù)坠陈。常見的協(xié)議包括:
- 用于SATA接口的AHCI或者ATA協(xié)議
- 用于PCIe接口的NVMe協(xié)議
到這里我們應(yīng)該比較清晰了统扳,NVMe是運(yùn)行在某種接口上的通信協(xié)議喘帚,用于規(guī)范計算機(jī)與存儲設(shè)備的數(shù)據(jù)傳輸。上述設(shè)備尺寸咒钟、接口和協(xié)議通常是可以組合的吹由。下面是常見的集中組合形式。
一個2.5寸SSD硬盤朱嘴,基于SATA接口倾鲫,通信協(xié)議是AHCI或者ATA。具體設(shè)備大概如圖2所示萍嬉。
一個M.2的SSD乌昔, 基于PCIe接口,通信協(xié)議是NVMe壤追。具體設(shè)備大概如圖3所示磕道。
一個PCIe的SSD,基于PCIe接口行冰,通信協(xié)議是NVMe溺蕉。具體設(shè)備大概如圖4所示。
這里只是給出了幾個具體的例子悼做,便于大家理解接口疯特、設(shè)備和協(xié)議的關(guān)系。具體來說肛走,還有其它很多種組合形式漓雅,本文不在贅述。
為什么NVMe會這么快
上面我們介紹了什么是NVMe朽色,下面本文將介紹一下為什么NVMe如此之快(注意:這里說的快是基于SSD設(shè)備的邻吞,如果是機(jī)械硬盤則不然)。由于SSD本身的物理特性葫男,其數(shù)據(jù)的訪問已經(jīng)非潮Ю洌快了,性能的瓶頸就是出在計算機(jī)與設(shè)備連接的接口和協(xié)議上面腾誉。 我們舉一個簡單的例子徘层。比如我們有一個倉庫會不斷的生產(chǎn)出產(chǎn)品來,我們可以機(jī)械手將產(chǎn)品從倉庫拿到其它地方(如圖5所示)利职。對于SATA的SSD趣效,類似于一個單臂的機(jī)器人,倉庫生產(chǎn)的很快猪贪,但機(jī)器人每次只能拿一個跷敬,搬移的速度就比較慢。
然而對于基于NVMe的SSD呢热押?相當(dāng)于這個機(jī)器人長了數(shù)百只手西傀,這樣速度顯然就比前者快的多了斤寇。
NVMe協(xié)議的原理也是如此,它本質(zhì)是上建立了多個計算機(jī)與存儲設(shè)備的通路拥褂,這樣搬運(yùn)數(shù)據(jù)的速度自然就提高了娘锁。在NVMe協(xié)議中,多個通路其實(shí)就是多個隊(duì)列饺鹃,具體如圖7所示莫秆。在SATA中計算機(jī)與存儲設(shè)備只能有一個隊(duì)列,即使是多CPU情況下悔详,所有請求只能經(jīng)過這樣一個狹窄的道路镊屎。而NVMe協(xié)議可以最多有64K個隊(duì)列,每個CPU或者核心都可以有一個隊(duì)列茄螃,這樣并發(fā)程度大大提升缝驳,性能也自然更高了。
今天只是一個入門归苍,后面我們再詳細(xì)的介紹關(guān)于NVMe的更多內(nèi)容用狱。如果覺得不錯,還請大家關(guān)注本號霜医,如果覺得太爛齿拂,還請下面留言驳规。