NVME原理

理解NVMe的內部實現(xiàn)原理颤霎,這一篇就夠了


任何新技術的出現(xiàn)都是為了解決當前情況存在的問題呼股。NVMe的出現(xiàn)也是為了解決當前存在的問題溉卓。這個問題就是日益快速增長的存儲介質性能與傳輸通道性能太差之間的矛盾懂从。基于SSD的存儲設備性能都要上天了艰垂,但SAS和SATA接口的性能卻沒有本質的提升。

目前基于SCSI協(xié)議的SAS和SATA只能是單個隊列而且每個隊列的深度也比較低埋虹,分別是254和32的隊列深度猜憎。而NVMe協(xié)議設計之初就考慮了該問題,它的最大隊列數(shù)量可以是64K(65535個命令隊列和1個管理隊列)搔课,而每個隊列的深度可以高達64K胰柑。與SCSI協(xié)議相比,就好比一個鄉(xiāng)村的羊腸小路和一個雙向八車道的高速公路的差別爬泥。

圖1 美麗的鄉(xiāng)村下路和京港澳高速

NVMe基本原理

為了便于理解主機和NVMe設備的關系柬讨,我們這里簡化NVMe設備的內部結構。如圖2所示為NVMe白皮書中的配圖袍啡,這里主機稱為Host踩官,而NVMe設備稱為Controller(控制器)。主機和控制器之間通過共享內存的隊列實現(xiàn)交互境输。

圖2 NVMe多隊列示意圖

NVMe的隊列分為2種卖鲤,其中一種是用于管理的隊列,稱為Admin Queue(管理隊列)畴嘶,僅有一個,另外一種是命令隊列(Command Queue)集晚,最多可以有65535個窗悯。其中命令隊列的數(shù)量和模式都是通過管理隊列來設置的。其中每一個隊列實際上是一個隊列對偷拔,也就是包括兩個隊列蒋院,分別是提交隊列(Submission Queue)和完成隊列(Completion Queue)。提交隊列用于主機端向NVMe設備發(fā)送NVMe命令莲绰,而完成隊列則用于NVMe設備向主機反饋命令執(zhí)行情況欺旧。實際上NVMe還有另外一種模式,就是多個提交隊列共享同一個完成隊列的情況蛤签,本文暫時不做介紹辞友。

NVMe隊列及命令的處理流程

上文我們知道NVMe是通過隊列傳遞控制命令和命令等內容的,那么這里的隊列實體到底是什么呢震肮?其實這里提交隊列和完成隊列就是內存的一個區(qū)域称龙。在數(shù)據(jù)結構原理上這里的隊列其實是一個環(huán)形緩沖區(qū),如圖3所示戳晌。

圖3 環(huán)形緩沖區(qū)

NVMe通過一種門鈴機制(Doorbell)來告知控制器命令隊列是否有新數(shù)請求/命令鲫尊。也就是說每個隊列都有一個門鈴指針。對于發(fā)送隊列來說沦偎,這個指針表示的是發(fā)送隊列的尾指針疫向。主機端將數(shù)據(jù)寫入到發(fā)送隊列后咳蔚,更新映射到位于設備寄存器空間中的門鈴的尾指針。此時搔驼,在控制器端就知道有新的請求/命令到來谈火,接下來就可以進行對其進行處理。

當控制器完成一個NVMe請求時匙奴,通過完成隊列來把完成的結果告知主機端堆巧。與發(fā)送隊列不同,完成隊列是通過中斷機制(可以是INTx泼菌,MSI或MSIx)告訴主機端谍肤。如圖4是一個命令的完整處理流程。

圖4 命令處理完整流程

NVMe的命令格式

前面我們介紹了命令的發(fā)送和處理流程哗伯,接下來我們看看NVMe的命令長什么樣荒揣。如圖5是NMVe命令的具體格式,如果大家了解TCP/IP協(xié)議或者SCSI協(xié)議焊刹,那么理解本圖將相當容易系任。在圖4中每一行為8個字節(jié),命令大小總共為64字節(jié)虐块。

圖5 NVMe的命令格式

在這個命令格式中有幾個字段本身是比較復雜的俩滥,限于篇幅,且不打算讓大家看完本文后頭疼贺奠,本文不打算介紹所有細節(jié)霜旧。本文簡單的介紹一下該命令格式的幾個關鍵字段。其中Command Identifier標識一個具體的命令儡率。Namespace Identifier則表示命令發(fā)送到那個命名空間挂据。Data Pointer 1 和Data Pointer 2則用于標識數(shù)據(jù)的具體位置。

這里有兩點需要說明:

NVMe的一個控制器下面可以有多個命名空間(Namespace)儿普,通過Namespace ID來標識的崎逃。

命令與數(shù)據(jù)是分離的,并不像TCP那樣數(shù)據(jù)在命令后面眉孩。

我們這里重點介紹一下Command Identifier个绍,該字段占用4個字節(jié)的空間。雖然僅有4個字節(jié)浪汪,但有分為3大部分障贸,6小部分,具體如圖6所示吟宦。

圖6 命令標識格式

我們以從低位到高位的順序分別介紹一下各個字段的含義:

OPC: 全稱為Opcode篮洁,也就是被執(zhí)行命令的操作碼。具體來說就是想讓控制器干什么殃姓,比如讀數(shù)據(jù)袁波、寫數(shù)據(jù)或者刷寫等瓦阐。

圖7 OPC定義

FUSE: 全稱為Fused Operation, 用于標識該命令是普通命令還是復合命令篷牌。如圖8是白皮書對該字段的說明睡蟋。

圖8 FUSE的定義

PSDT: 全稱為PRP or SGL for Data Transfer,這個用于說明存儲數(shù)據(jù)的內存的組織形式枷颊。

NVMe的性能

最后我們看一下NVMe與SAS和SATA存儲設備的性能對比戳杀。為了避免廣告嫌疑,本文就布局圖說明設備的廠商和類型了夭苗。

圖9 性能對比

通過上圖可以清楚的看到SAS和SATA設備與NVMe設備的性能差異信卡,特別是對于讀操作,NVMe有絕對的性能優(yōu)勢题造。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末傍菇,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子界赔,更是在濱河造成了極大的恐慌丢习,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件淮悼,死亡現(xiàn)場離奇詭異咐低,居然都是意外死亡,警方通過查閱死者的電腦和手機袜腥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門见擦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人瞧挤,你說我怎么就攤上這事±芡澹” “怎么了特恬?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長徐钠。 經常有香客問我癌刽,道長,這世上最難降的妖魔是什么尝丐? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任显拜,我火速辦了婚禮,結果婚禮上爹袁,老公的妹妹穿的比我還像新娘远荠。我一直安慰自己,他們只是感情好失息,可當我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布譬淳。 她就那樣靜靜地躺著档址,像睡著了一般。 火紅的嫁衣襯著肌膚如雪邻梆。 梳的紋絲不亂的頭發(fā)上守伸,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天,我揣著相機與錄音浦妄,去河邊找鬼尼摹。 笑死,一個胖子當著我的面吹牛剂娄,可吹牛的內容都是我干的蠢涝。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼宜咒,長吁一口氣:“原來是場噩夢啊……” “哼惠赫!你這毒婦竟也來了?” 一聲冷哼從身側響起故黑,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤儿咱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后场晶,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體混埠,經...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年诗轻,在試婚紗的時候發(fā)現(xiàn)自己被綠了钳宪。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡扳炬,死狀恐怖吏颖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情恨樟,我是刑警寧澤半醉,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站劝术,受9級特大地震影響缩多,放射性物質發(fā)生泄漏。R本人自食惡果不足惜养晋,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一衬吆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧绳泉,春花似錦逊抡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽麦射。三九已至,卻和暖如春灯谣,著一層夾襖步出監(jiān)牢的瞬間潜秋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工胎许, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留峻呛,地道東北人。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓辜窑,卻偏偏與公主長得像钩述,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子穆碎,可洞房花燭夜當晚...
    茶點故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內容

  • 任何新技術的出現(xiàn)都是為了解決當前情況存在的問題牙勘。NVMe的出現(xiàn)也是為了解決當前存在的問題。這個問題就是日益快速增長...
    SunnyZhang的IT世界閱讀 840評論 0 2
  • 原文:https://nvmexpress.org/wp-content/uploads/NVMe_Overvie...
    lnsyyj閱讀 354評論 0 0
  • 因為NVMe的出現(xiàn)所禀,硬盤的性能得到了極大的提升方面。這個極大是多少呢?讀帶寬從500MB/s提高到了3200MB/s色徘,...
    小學究鑫鑫閱讀 54評論 0 0
  • 一恭金、平臺架構 1.1 接入層 1.1.1 設備采集(IoT)數(shù)據(jù)采集(DAQ),是指從傳感器和其它待測設備等模擬和...
    玄鳥西閱讀 2,820評論 0 4
  • 1.什么是NVME 是一種為企業(yè)級和消費級NVM存儲設計的行業(yè)標準協(xié)議和主機控制器接口 自底向上都是為了讓NVM存...
    1哥閱讀 687評論 0 0