2015-09-17
NVMe SSD時代來臨
Intel SSD 750 400GB U.2版本
文: John Lam / 評測中心


為突破 SATA 6Gbps 頻寬限制, Intel 正積極推動 NVMe 控制器介面普及,全新 Intel Z170 系統晶片大幅增加內建 PCIe Lanes 數目並升級至 PCIe Gen 3 規格,能配合新一代 Intel SSD 750 U.2 固態硬碟,單顆最高讀寫速度高達 2.2GB/s Read 、 900MB/s Write , 4K IOPS 最高可達 430,000 ,性能絕非一般 AHCI 規格的 PCIe SSD 可比擬。



NVMe SSD 時代來臨 !!

 

NVMe

 

SSD 固態硬碟正不斷普及,取代沿用已久的傳統 HDD 機械式硬碟,不過目前市面上絕大部份 SSD 產品,仍沿用 HDD 時代的標準規格,包括 SATA 接口及 AHCI 控制器介面,這些規格本是針對昔日慢速、高延遲的 HDD 機械式硬碟而生,無法完全發揮 SSD 低延遲、平行讀寫的性能優勢,逐漸成為 SSD 固態硬碟性能瓶頸所在。

 

針對 SSD 儲存裝置發展, Intel 早於 2007 年 IDF 技術峰會中提出 NVMHCI (Non-Volatile Memory Host Controller Interface) 規範,並於 2008 年 4 月完成 NVMHCI 1.0 規範。緊接 2009 年下半年 NVMe (Non-Volatile Memory Express) 工作小組正式成立,確定採用 PCI Express 作為標準化接口,更取得到 90 多家公司支援, NVMe 1.0 版本技規範正式於 2011 年 3 月 1 日發佈。

 

NVMe

 

NVMe 技術規範能為所有 PCI Express 標準化接口 NAND Flash 儲存裝置,供高性能、可擴展的控制器介面規範,相較於主流 SATA 6Gbps 介面速度上限約 600MB/s , SATA Express 採用 PCIe Gen 3 x2 規格,頻寬最高可達 1969MB/s ; M.2 及 U.2(SFF-86390 介面 ) 則支援 PCIe 3 x4 規格,最高頻寬可高達 3938MB/s ;伺服器、工作站市場的 PCIe SSD 產品將進一步支援 PCIe 3 x8 規格,速度是傳統 SATA 6Gbps 的 10 倍。

 

不過, NVMe 技術規範並非單純的為頻寬提升,而是針對 NAND Flash 特別在軟體驅動層面作出改良,取代老舊的 AHCI 規格令 SSD 產品性能得以優化,大幅強化並行讀寫能力,滿足現代 多核心 CPU 強大運算性能,例如採用較少的階段數據傳輸、更深入的 Command Queues 排程、更高效率的 Interrupts Processing 中斷處理。

 

現時,絕大部份 Intel 9 系列平台均支援 NVMe 技術規範,新一代 Intel 100 系列平台更進一步提升系統晶片的 PCIe Lanes 數目,為 NVMe 加速普及作好準備,市調機構預測 NVMe SSD 產品將會於 2016 下半年爆發性成長, 2017 年將會取代 AHCI 成為主流 SSD 標準規格, NVMe SSD 時代正式來臨。

 

AHCI vs NVMe

 

儘管現時有不少高階 SSD 產品改用 PCIe 接口,以突破 SATA 接口的頻寬瓶頸,但控制器設計與 SATA  接口 SSD 一樣,採用老舊的 AHCI 控制器介面,優點是大部份作業系統均已原生支援 AHCI 驅動,相容性高能支援絕多部份作業系統及主機板平台,但 AHCI 控制器介面卻無法完全發揮 PCI Express 介面及 NAND Flash 顆粒的性能優勢。


AHCI 控制器介面 (Advanced Host Controller Interface) 是 PCI 時代非常老舊的技術規範,主要是針對旋轉碟面讀寫的機械式 HDD 而設,例如加入 NCQ (Native Command Queuing) 技術、優化硬碟的資料分佈,將存取順序作最有效率的排序以減少機械臂移動的距離,進而達到省時以及延長硬碟壽命的效果,但當時的設計並非為 SSD 產品而生。

 

QD

NVMe 控制器介面特別針對 PCI Express 接口及 NAND Flash 特性作出了優化, NVMe 能同時處理最高 6 萬 4 千個 Command Queues 指令列,每個指令列最高可包含 6 萬 4 千個指令,充分發揮 NAND Flash 平行讀寫優勢。 AHCI 控制器介面則只能同時處理 1 個 Command Queues 指令列,每個指令列最高只能包含 32 個指令,令 IOPS 讀寫性能大幅落後 NVMe 。

 

此外, NVMe 控制器介面支援 PCIe 3.0 技術規範首次引入的 MSI-X 中斷處理 (Interrupts Processing) ,並加入了 Interrupts Steering 中斷導向能力。舊有的 AHCI 控制器僅支援 MSI 中斷處理,裝置僅獲分配 1 個定址並同時只能處理 1 個中斷,在多核心處理器環境下只能讓單顆核心進行存取。

 

NVMe 控制器則最高可分配多達 2048 個 Interrupts Processing 中斷處理,同時每個中斷均擁有獨立的目標定址,令系統不同處理器核心均能同時存取 SSD 裝置,此一差異令 NVMe 與 AHCI 在 IOPS 及讀寫延遲上存在巨大差距。

 

NVMe

 

當指令所需的資料定址不在寄存器中, AHCI 控制器介面需要額外浪費 6-9 個指令週期才能完成讀取,約浪費 12000 ~ 18,000 個 CPU Cycles ,造成約 2.5 ~ 4μs 的延遲,而 NVMe 控制器介面僅需額外 2 個指令,約浪費 4000 個 CPU Cycles ,令 NVMe 的 SSD 裝置擁有更低延遲,減少對 CPU 資源浪費令運算性能明顯提升。

 

比較處理大量細碎檔案時, AHCI 與 NVMe 亦存在巨大性能差異, AHCI 控制器介面處理讀寫命令時,命令參數需進行兩次無法並行的系統記憶體存取,而 NVMe 則只需要進行一次 64 Bytes 的系統記憶體存取,令 IOPS 吞吐量大幅提升。此外, AHCI 控制器介面在發出指令時需要進行同步鎖定資料, NVMe 控制器則無需進行同步鎖定資料,將有效提升平行讀寫及多線程運算性能。

 

就像 IDE 接口一樣, SATA 連接埠與 AHCI 介面已完成歷史任務,為配合未來 NAND Flash 技術發展, NVMe 控制器介面將成為未來儲存介面的主流標準,基於 PCI Express 協定以不同的接口形式普及。

 

NVMe and AHCI Storage Interface Comparison

 AHCINVMe
Maximum Queue Depth1 Command Queue
32 commands per Q

64K Queues

64K Commands per Q

Un-cacheable register accesses12,000-18,000 CPU Cycles wasted~ 4,000 CPU Cycles wasted
MSI-X and InterruptSingle Interrupt no Steering2048 Interrupt with Steering support
Parallelism & Multiple ThreadsRequires Synchronization lock
to issue command
No Locking required
Efficiency for 4KB Commands

Command parameter require

two serialized host DRAM fetches

Command parameters in one
64 Bytes Fetch 

 

分享到:
發表評論
本篇文章被 154114 人閱讀,共有 個評論