อ่าน 21 นาที
เอ็นวีเอ็ม เอ็กซ์เพรส
NVM Express ( NVMe , Non-Volatile Memory Express ) หรือNon-Volatile Memory Host Controller Interface Specification ( NVMHCIS ) เป็นข้อกำหนดอินเทอร์เฟซอุปกรณ์เชิงตรรกะแบบเปิด...
เอ็นวีเอ็ม เอ็กซ์เพรส



NVM Express ( NVMe , Non-Volatile Memory Express ) หรือNon-Volatile Memory Host Controller Interface Specification ( NVMHCIS ) เป็นข้อกำหนดอินเทอร์เฟซอุปกรณ์เชิงตรรกะแบบเปิด สำหรับการเข้าถึงสื่อ จัดเก็บข้อมูลแบบไม่ระเหยของคอมพิวเตอร์ซึ่งโดยปกติจะเชื่อมต่อผ่านบัสPCI Express NVMย่อมาจากnon-volatile memoryซึ่งมักจะ เป็น หน่วยความจำแฟลช NAND ที่มีรูปแบบทางกายภาพหลายแบบ รวมถึงไดรฟ์โซลิดสเตต (SSD) การ์ดเสริม PCIe และ การ์ด M.2ซึ่งเป็นรุ่นต่อจาก การ์ด mSATA NVM Express ในฐานะอินเทอร์เฟซอุปกรณ์เชิงตรรกะ ได้รับการออกแบบมาเพื่อใช้ประโยชน์จากความหน่วง ต่ำ และการทำงานแบบขนานภายในของอุปกรณ์จัดเก็บข้อมูลแบบโซลิดสเตต[ 1 ]
ในทางสถาปัตยกรรม ตรรกะสำหรับ NVMe จะถูกจัดเก็บและประมวลผลโดยชิปควบคุม NVMe ซึ่งอยู่ร่วมกับสื่อจัดเก็บข้อมูล โดยปกติจะเป็น SSD การเปลี่ยนแปลงเวอร์ชันของ NVMe เช่น 1.3 เป็น 1.4 จะถูกรวมเข้าไว้ในสื่อจัดเก็บข้อมูล และไม่ส่งผลกระทบต่อส่วนประกอบที่เข้ากันได้กับ PCIe เช่น เมนบอร์ดและ CPU [ 2 ]
ด้วยการออกแบบของ NVM Express ทำให้ฮาร์ดแวร์และซอฟต์แวร์ของโฮสต์สามารถใช้ประโยชน์จากระดับการประมวลผลแบบขนานที่มีอยู่ใน SSD รุ่นใหม่ๆ ได้อย่างเต็มที่ ส่งผลให้ NVM Express ลด ภาระการทำงานของ I/Oและนำมาซึ่งการปรับปรุงประสิทธิภาพต่างๆ เมื่อเทียบกับอินเทอร์เฟซอุปกรณ์เชิงตรรกะรุ่นก่อนๆ รวมถึงคิวคำสั่งยาวหลายคิว และลดความหน่วง โปรโตคอลอินเทอร์เฟซรุ่นก่อนๆ เช่นAHCIถูกพัฒนาขึ้นเพื่อใช้กับฮาร์ดดิสก์ไดรฟ์ (HDD) ที่ช้ากว่ามาก ซึ่งมีความล่าช้าอย่างมาก (เมื่อเทียบกับการทำงานของ CPU) ระหว่างการร้องขอและการถ่ายโอนข้อมูล ความเร็วของข้อมูลช้ากว่าความเร็วของ RAM มาก และการหมุนของดิสก์และเวลาในการค้นหาทำให้เกิดความต้องการในการปรับแต่งเพิ่มเติม
อุปกรณ์ NVM Express ส่วนใหญ่มีจำหน่ายใน รูปแบบ M.2 ขนาดเล็ก ในขณะที่ การ์ดขยาย PCI Express ขนาดมาตรฐาน[ 3 ]และอุปกรณ์ในรูปแบบ 2.5 นิ้วที่ให้การเชื่อมต่อ PCI Express สี่เลนผ่าน ขั้วต่อ U.2 (เดิมเรียกว่า SFF-8639) ก็มีจำหน่ายเช่นกัน[ 4 ] [ 5 ]
ข้อกำหนด
ข้อกำหนดสำหรับ NVMe ที่เผยแพร่จนถึงปัจจุบันมีดังนี้: [ 6 ]
- 1.0e (มกราคม 2556)
- 1.1b (กรกฎาคม 2557) ที่เพิ่มชุดคำสั่ง มาตรฐาน เพื่อให้เข้ากันได้ดีขึ้นระหว่างอุปกรณ์ NVMe ต่างๆอินเทอร์เฟซการจัดการที่ให้เครื่องมือมาตรฐานสำหรับการจัดการอุปกรณ์ NVMe ช่วยลดความซับซ้อนในการบริหารจัดการ และข้อกำหนดการขนส่งที่กำหนดวิธีการขนส่งคำสั่ง NVMe ผ่านอินเทอร์เฟซทางกายภาพต่างๆ ช่วยเพิ่มความสามารถในการทำงานร่วมกัน[ 7 ]
- 1.2 (พฤศจิกายน 2557)
- 1.2ก (ตุลาคม 2558)
- 1.2b (มิถุนายน 2559)
- 1.2.1 (มิถุนายน 2559) ซึ่งแนะนำคุณสมบัติใหม่ต่อไปนี้เหนือเวอร์ชัน 1.1b: Multi-Queueเพื่อรองรับคิว I/O หลายคิว ช่วยเพิ่มปริมาณข้อมูลและประสิทธิภาพการจัดการเนมสเปซที่อนุญาตให้สร้าง ลบ และปรับขนาดเนมสเปซแบบไดนามิก ทำให้มีความยืดหยุ่นมากขึ้น และการจัดการความทนทานเพื่อตรวจสอบและจัดการระดับการสึกหรอของ SSD เพิ่มประสิทธิภาพและยืดอายุการใช้งานของไดรฟ์[ 8 ]
- 1.3 (พฤษภาคม 2560)
- 1.3ก (ตุลาคม 2560)
- 1.3b (พฤษภาคม 2561)
- 1.3c (พฤษภาคม 2561)
- 1.3d (มีนาคม 2019) ว่าตั้งแต่เวอร์ชัน 1.2.1 ได้เพิ่มการแชร์เนมสเปซเพื่อให้โฮสต์หลายตัวสามารถเข้าถึงเนมสเปซเดียวได้ ซึ่งช่วยอำนวยความสะดวกให้กับสภาพแวดล้อมการจัดเก็บข้อมูลร่วมกันการสำรองเนมสเปซเพื่อจัดเตรียมกลไกให้โฮสต์สามารถสำรองเนมสเปซ ป้องกันความขัดแย้งและรับรองความสมบูรณ์ของข้อมูล และลำดับความสำคัญของเนมสเปซที่กำหนดระดับความสำคัญสำหรับเนมสเปซต่างๆ เพื่อเพิ่มประสิทธิภาพสำหรับเวิร์กโหลดที่สำคัญ[ 9 ] [ 10 ]
- 1.4 (มิถุนายน 2562)
- 1.4ก (มีนาคม 2563)
- 1.4 พันล้าน (กันยายน 2020)
- 1.4c (มิถุนายน 2021) ซึ่งมีคุณสมบัติใหม่ดังต่อไปนี้เมื่อเทียบกับ 1.3d: IO Determinismเพื่อให้มั่นใจถึงความหน่วงแฝงและประสิทธิภาพที่สม่ำเสมอโดยการแยกภาระงานNamespace Write Protectเพื่อป้องกันความเสียหายของข้อมูลหรือการแก้ไขที่ไม่ได้รับอนุญาตPersistent Event Logที่จัดเก็บบันทึกเหตุการณ์ในหน่วยความจำแบบไม่ลบเลือน ช่วยในการวินิจฉัยและแก้ไขปัญหา และVerify Commandที่ตรวจสอบความสมบูรณ์ของข้อมูล[ 11 ] [ 12 ]
- 2.0 (พฤษภาคม 2021) [ 13 ]
- 2.0a (กรกฎาคม 2564)
- 2.0b (มกราคม 2565)
- 2.0c (ตุลาคม 2022)
- 2.0d (มกราคม 2024) [ 14 ]ซึ่งเมื่อเปรียบเทียบกับ 1.4c ได้มีการนำZoned Namespaces (ZNS) มาใช้ เพื่อจัดระเบียบข้อมูลเป็นโซนสำหรับการดำเนินการเขียนที่มีประสิทธิภาพ ลดการขยายการเขียน และปรับปรุงอายุการใช้งานของ SSD ให้ยาวนานขึ้นKey Value (KV)สำหรับการจัดเก็บและเรียกค้นคู่คีย์-ค่าอย่างมีประสิทธิภาพโดยตรงบนอุปกรณ์ NVMe โดยไม่ต้องผ่านระบบไฟล์แบบดั้งเดิม และEndurance Group Managementเพื่อจัดการกลุ่มของ SSD ตามความทนทาน ปรับการใช้งานให้เหมาะสม และยืดอายุการใช้งาน[ 15 ] [ 14 ] [ 16 ]
- 2.0e (กรกฎาคม 2567)
- 2.1 (สิงหาคม 2567) [ 17 ]ซึ่งแนะนำLive Migrationเพื่อรักษาความพร้อมใช้งานของบริการในระหว่างการย้ายข้อมูลKey Per I/Oสำหรับการใช้คีย์การเข้ารหัสในระดับต่อการดำเนินการNVMe-MI High Availability Out of Band Managementสำหรับการจัดการอุปกรณ์ NVMe นอกเส้นทางข้อมูลปกติ และNVMe Network Boot / UEFIสำหรับการบูตอุปกรณ์ NVMe ผ่านเครือข่าย[ 18 ]
- 2.2 (มีนาคม 2568)
- 2.3 (5 สิงหาคม 2568)
พื้นหลัง
ในอดีต SSD ส่วนใหญ่ใช้บัสเช่นSATA [ 19 ] SAS [ 20 ] [ 21 ]หรือFibre Channel สำหรับการเชื่อมต่อกับส่วนที่เหลือของระบบคอมพิวเตอร์ นับตั้งแต่ SSD วางจำหน่ายในตลาดทั่วไป SATA ก็กลายเป็นวิธีการเชื่อมต่อ SSD ในคอมพิวเตอร์ส่วนบุคคลที่พบได้บ่อยที่สุดอย่างไรก็ตาม SATAได้รับการออกแบบมาเพื่อเชื่อมต่อกับฮาร์ดดิสก์ไดรฟ์ แบบกลไก (HDD) เป็นหลัก และมันก็ไม่เพียงพอสำหรับ SSD มากขึ้นเรื่อยๆ เนื่องจากความเร็วของ SSD พัฒนาขึ้นตามเวลา[ 22 ]ตัวอย่างเช่น ภายในเวลาประมาณห้าปีของการวางจำหน่ายในตลาดทั่วไป (2005–2010) SSD จำนวนมากก็ถูกจำกัดด้วยอัตราการส่งข้อมูลที่ค่อนข้างช้าของฮาร์ดไดรฟ์ ซึ่งแตกต่างจากฮาร์ดดิสก์ไดรฟ์ SSD บางตัวถูกจำกัดด้วยอัตราการส่งข้อมูล สูงสุด ของ SATA
SSD ระดับไฮเอนด์ถูกสร้างขึ้นโดยใช้ บัส PCI Expressก่อน NVMe แต่ใช้อินเทอร์เฟซที่ไม่เป็นไปตามข้อกำหนดมาตรฐาน โดยใช้บริดจ์ SAS เป็น PCIe [ 23 ]หรือโดยการจำลองตัวควบคุม RAID ฮาร์ดแวร์[ 24 ]ด้วยการกำหนดมาตรฐานอินเทอร์เฟซของ SSD ระบบปฏิบัติการจึงต้องการเพียงไดรเวอร์อุปกรณ์ ทั่วไปเพียงตัวเดียว เพื่อทำงานกับ SSD ทั้งหมดที่ตรงตามข้อกำหนด นอกจากนี้ยังหมายความว่าผู้ผลิต SSD แต่ละรายไม่จำเป็นต้องออกแบบไดรเวอร์อินเทอร์เฟซเฉพาะ นี่คล้ายกับวิธีที่ อุปกรณ์ จัดเก็บข้อมูลแบบ USBถูกสร้างขึ้นเพื่อให้เป็นไปตาม ข้อกำหนดคลาสอุปกรณ์จัดเก็บข้อมูลแบบ USBและทำงานกับคอมพิวเตอร์ทุกเครื่องโดยไม่จำเป็นต้องมีไดรเวอร์ต่ออุปกรณ์[ 25 ]
อุปกรณ์ NVM Express ยังถูกใช้เป็นส่วนประกอบพื้นฐานของ หน่วยความจำ บัฟเฟอร์แบบระเบิดในซูเปอร์คอมพิวเตอร์ชั้นนำหลายเครื่อง เช่นซูเปอร์คอมพิวเตอร์ฟูกากุซูเปอร์คอมพิวเตอร์ซัมมิทและซูเปอร์คอมพิวเตอร์เซียร์ราเป็นต้น[ 26 ] [ 27 ]
ประวัติศาสตร์
รายละเอียดแรกของมาตรฐานใหม่สำหรับการเข้าถึงหน่วยความจำแบบไม่ระเหยปรากฏขึ้นในงานIntel Developer Forum 2007 เมื่อ NVMHCI ถูกแสดงเป็นโปรโตคอลฝั่งโฮสต์ของการออกแบบสถาปัตยกรรมที่เสนอซึ่งมีOpen NAND Flash Interface Working Group (ONFI) อยู่ฝั่งชิปหน่วยความจำ (แฟลช) [ 28 ]กลุ่มทำงาน NVMHCI ที่นำโดย Intel ได้ก่อตั้งขึ้นในปีนั้น ข้อกำหนด NVMHCI 1.0 เสร็จสมบูรณ์ในเดือนเมษายน 2008 และเผยแพร่บนเว็บไซต์ของ Intel [ 29 ] [ 30 ] [ 31 ]
งานทางเทคนิคเกี่ยวกับ NVMe เริ่มขึ้นในช่วงครึ่งหลังของปี 2552 [ 32 ]ข้อกำหนด NVMe ได้รับการพัฒนาโดย NVM Express Workgroup ซึ่งประกอบด้วยบริษัทมากกว่า 90 บริษัท โดย Amber Huffman จากIntelเป็นประธานของกลุ่มทำงาน ข้อกำหนดเวอร์ชัน 1.0 ได้รับการเผยแพร่เมื่อวันที่ 1 มีนาคม 2554 [ 33 ]ในขณะที่ข้อกำหนดเวอร์ชัน 1.1 ได้รับการเผยแพร่เมื่อวันที่ 11 ตุลาคม 2555 [ 34 ]คุณสมบัติหลักที่เพิ่มเข้ามาในเวอร์ชัน 1.1 คือ I/O แบบหลายเส้นทาง (พร้อมการแชร์เนมสเปซ) และ I/O แบบกระจายและ รวบรวม ความยาวตามอำเภอใจ คาดว่าการแก้ไขในอนาคตจะช่วยเพิ่มประสิทธิภาพการจัดการเนมสเปซอย่างมาก[ 32 ]เนื่องจากเน้นที่ฟีเจอร์ NVMe 1.1 จึงถูกเรียกว่า "Enterprise NVMHCI" ในตอนแรก[ 35 ]การอัปเดตสำหรับข้อกำหนด NVMe พื้นฐานที่เรียกว่าเวอร์ชัน 1.0e ได้รับการเผยแพร่ในเดือนมกราคม 2013 [ 36 ]ในเดือนมิถุนายน 2011 กลุ่มผู้สนับสนุนซึ่งนำโดยบริษัทเจ็ดแห่งได้ก่อตั้งขึ้น
ชิปเซ็ต NVMe รุ่นแรกที่วางจำหน่ายในเชิงพาณิชย์ได้รับการเผยแพร่โดยIntegrated Device Technology (89HF16P04AG3 และ 89HF32P08AG3) ในเดือนสิงหาคม 2555 [ 37 ] [ 38 ]ไดรฟ์ NVMe ตัวแรกคือไดรฟ์ระดับองค์กร XS1715 ของSamsungได้รับการประกาศในเดือนกรกฎาคม 2556 ตามที่ Samsung ระบุ ไดรฟ์นี้รองรับความเร็วในการอ่าน 3 GB/s ซึ่งเร็วกว่าไดรฟ์ระดับองค์กรรุ่นก่อนหน้าถึงหกเท่า[ 39 ] ตระกูลคอนโทรลเลอร์ LSI SandForce SF3700 ที่วางจำหน่ายในเดือนพฤศจิกายน 2556 ก็รองรับ NVMe เช่นกัน[ 40 ] [ 41 ] ผลิตภัณฑ์ " prosumer " ของ Kingston HyperXที่ใช้คอนโทรลเลอร์นี้ได้รับการจัดแสดงในงาน Consumer Electronics Show 2014 และสัญญาว่าจะให้ประสิทธิภาพที่คล้ายคลึงกัน[ 42 ] [ 43 ]ในเดือนมิถุนายน พ.ศ. 2557 Intel ได้ประกาศผลิตภัณฑ์ NVM Express รุ่นแรกของพวกเขา คือตระกูล Intel SSD สำหรับศูนย์ข้อมูลที่เชื่อมต่อกับโฮสต์ผ่านบัส PCI Express ซึ่งประกอบด้วยซีรี่ส์ DC P3700, ซีรี่ส์ DC P3600 และซีรี่ส์ DC P3500 [ 44 ]ณ เดือนพฤศจิกายน พ.ศ. 2557 ไดรฟ์ NVMe มีวางจำหน่ายในเชิงพาณิชย์แล้ว
ในเดือนมีนาคม พ.ศ. 2557 กลุ่มดังกล่าวได้จดทะเบียนจัดตั้งเป็น NVM Express, Inc. ซึ่ง ณ เดือนพฤศจิกายน พ.ศ. 2557 ประกอบด้วยบริษัทมากกว่า 65 แห่งจากทั่วทั้งอุตสาหกรรม ข้อกำหนดของ NVM Express เป็นกรรมสิทธิ์และได้รับการดูแลรักษาโดย NVM Express, Inc. ซึ่งยังส่งเสริมการรับรู้ของอุตสาหกรรมเกี่ยวกับ NVM Express ในฐานะมาตรฐานระดับอุตสาหกรรมอีกด้วย NVM Express, Inc. บริหารงานโดยคณะกรรมการบริหารจำนวน 13 คนที่ได้รับการคัดเลือกจากกลุ่มผู้ก่อตั้ง ซึ่งรวมถึง Cisco, Dell, EMC, HGST, Intel, Micron, Microsoft, NetApp, Oracle, PMC, Samsung, SanDisk และ Seagate [ 45 ]
ในเดือนกันยายนปี 2016 สมาคม CompactFlash ได้ประกาศว่าจะออกข้อกำหนดการ์ดหน่วยความจำใหม่ชื่อCFexpressซึ่งใช้ NVMe
คุณสมบัติ NVMe Host Memory Buffer (HMB) ถูกเพิ่มเข้ามาในเวอร์ชัน 1.2 ของข้อกำหนด NVMe [ 46 ] HMB ช่วยให้ SSD สามารถใช้DRAM ของโฮสต์ได้ ซึ่งสามารถปรับปรุงประสิทธิภาพ I/O สำหรับ SSD ที่ไม่มี DRAM ได้[ 47 ]ตัวอย่างเช่น HMB สามารถแคช ตาราง FTLโดยตัวควบคุม SSD และ HMB สามารถเก็บข้อมูลไว้ชั่วคราวในขณะที่กำลังเขียนลงในหน่วยความจำแฟลช[ 48 ] NVMe 2.0 เพิ่ม คุณสมบัติ Zoned Namespaces (ZNS) และKey-Value (KV) ที่เป็นตัวเลือก และรองรับสื่อหมุน เช่นฮาร์ดดิสก์ไดรฟ์ ZNS และ KV ช่วยให้สามารถแมปข้อมูลไปยังตำแหน่งทางกายภาพในหน่วยความจำแฟลชได้โดยตรง เพื่อเข้าถึงข้อมูลบน SSD ได้โดยตรง[ 49 ] ZNS และ KV ยังสามารถลด การขยายการเขียนของสื่อแฟลชได้ อีกด้วย
ฟอร์มแฟคเตอร์
ไดรฟ์โซลิดสเตท NVMe มีหลายรูปแบบ เช่น AIC, U.2, U.3, M.2 เป็นต้น
AIC (Add-in Card)
ไดรฟ์โซลิดสเตท NVMe รุ่นแรกๆ เกือบทั้งหมดเป็นแบบ HHHL (ความสูงครึ่งหนึ่ง ความยาวครึ่งหนึ่ง) หรือ FHHL (ความสูงเต็ม ความยาวครึ่งหนึ่ง) การ์ด PCI Expressพร้อมอินเทอร์เฟซ PCIe 2.0 หรือ 3.0 การ์ดไดรฟ์โซลิดสเตท NVMe แบบ HHHL นั้นเสียบเข้ากับช่อง PCIe ของเซิร์ฟเวอร์ได้ง่าย
SATA Express, U.2 และ U.3 (SFF-8639)
SATA Expressอนุญาตให้ใช้ช่อง PCI Express 2.0 หรือ 3.0 สองช่อง และพอร์ต SATA 3.0 (6 Gbit/s) สองพอร์ต ผ่านขั้วต่อ SATA Express ฝั่งโฮสต์เดียวกัน (แต่ไม่สามารถใช้งานพร้อมกันได้ทั้งสองแบบ) SATA Express รองรับ NVMe เป็นอินเทอร์เฟซอุปกรณ์เชิงตรรกะสำหรับอุปกรณ์จัดเก็บข้อมูล PCI Express ที่เชื่อมต่ออยู่ และมีความเข้ากันได้ทางไฟฟ้ากับMultiLink SASดังนั้นแผงวงจรหลักจึงสามารถรองรับทั้งสองแบบพร้อมกันได้
U.2 ซึ่งเดิมเรียกว่าSFF-8639ใช้พอร์ตทางกายภาพเดียวกันกับ SATA Express แต่รองรับเลน PCI Express ได้มากถึงสี่เลน เซิร์ฟเวอร์ที่มีจำหน่ายสามารถรวมไดรฟ์โซลิดสเตท U.2 NVMe ได้มากถึง 48 ตัว[ 50 ]
U.3 (SFF-TA-1001) สร้างขึ้นบนสเปค U.2 และใช้คอนเนคเตอร์ SFF-8639 เดียวกัน ต่างจาก U.2 ตรงที่ช่องเสียบแบ็คเพลนแบบ "ไตรโหมด" (PCIe/SATA/SAS) เพียงช่องเดียวสามารถรองรับการเชื่อมต่อได้ทั้งสามประเภท โดยคอนโทรลเลอร์จะตรวจจับประเภทของการเชื่อมต่อที่ใช้โดยอัตโนมัติ ซึ่งแตกต่างจาก U.2 ที่ผู้ใช้ต้องใช้คอนโทรลเลอร์แยกต่างหากสำหรับ SATA/SAS และ NVMe อุปกรณ์ U.3 ต้องสามารถใช้งานร่วมกับโฮสต์ U.2 ได้ แต่ไดรฟ์ U.2 ไม่สามารถใช้งานร่วมกับโฮสต์ U.3 ได้[ 51 ] [ 52 ]
ม.2
M.2 ซึ่งเดิมเรียกว่าNext Generation Form Factor ( NGFF ) ใช้บัสคอมพิวเตอร์ ไดรฟ์โซลิดสเตต M.2 NVMe อินเทอร์เฟซที่ให้ผ่านตัวเชื่อมต่อ M.2 คือPCI Express 3.0หรือสูงกว่า (สูงสุดสี่เลน ) ตัวเชื่อมต่อมีขนาดเล็กเมื่อเทียบกับ AIC ทั่วไป SSD ส่วนใหญ่มีความกว้าง 22 มม. และอาจมีความยาวตั้งแต่ 30, 42, 60, 80 และ 110 มม. อย่างไรก็ตาม มาตรฐาน M.2 อนุญาตให้มีความกว้าง 12, 16, 22 และ 30 มม. และความยาว 16, 26, 30, 38, 42, 60, 80 และ 110 มม. [ 53 ]
อีดีเอสเอฟเอฟ
การ์ดหน่วยความจำ
ซีเอฟเอ็กซ์เพรส
CFexpressกำหนดฟอร์มแฟคเตอร์ไว้สามแบบ โดยแต่ละแบบมีเลน PCIe 1, 2 หรือ 4 เลน และมีขนาดทางกายภาพที่แตกต่างกัน
การ์ด SD
การ์ด SDเวอร์ชัน 7.0 และการ์ด SD เวอร์ชัน 8.0
NVMe-oF
NVM Express over Fabrics ( NVMe-oF ) คือแนวคิดของการใช้โปรโตคอลการขนส่งผ่านเครือข่ายเพื่อเชื่อมต่ออุปกรณ์ NVMe ระยะไกล ซึ่งแตกต่างจาก NVMe ทั่วไปที่อุปกรณ์ NVMe ทางกายภาพเชื่อมต่อกับบัส PCIeโดยตรงหรือผ่านสวิตช์ PCIe ไปยังบัส PCIe ในเดือนสิงหาคม 2017 องค์กรมาตรฐาน International Committee for Information Technology Standards (ICITS) ได้ส่งมาตรฐานสำหรับการใช้ NVMe ผ่านFibre Channel (FC) และการผสมผสานนี้มักเรียกว่า FC-NVMe หรือบางครั้งเรียกว่า NVMe/FC [ 54 ]
ณ เดือนพฤษภาคม 2021 โปรโตคอลการขนส่ง NVMe ที่รองรับมีดังนี้:
- FC , FC-NVMe [ 54 ] [ 55 ]
- TCP , NVMe/TCP [ 56 ]
- อีเธอร์เน็ต , RoCE v1/v2 ( RDMAผ่านอีเธอร์เน็ตแบบรวม ) [ 57 ]
- InfiniBand , NVMe ผ่าน InfiniBand หรือ NVMe/IB [ 58 ]
มาตรฐานสำหรับ NVMe over Fabrics ได้รับการเผยแพร่โดย NVM Express, Inc. ในปี 2016 [ 59 ] [ 60 ]
ซอฟต์แวร์ต่อไปนี้ใช้โปรโตคอล NVMe-oF:
- ตัวเริ่มต้นและเป้าหมาย Linux NVMe-oF [ 61 ]การขนส่ง RoCE ได้รับการสนับสนุนในเบื้องต้น และด้วยเคอร์เนล Linux 5.x ได้มีการเพิ่มการสนับสนุน TCP แบบเนทีฟ[ 62 ]
- ชุดพัฒนาประสิทธิภาพการจัดเก็บข้อมูล (SPDK) ตัวเริ่มต้นและไดรเวอร์เป้าหมาย NVMe-oF [ 63 ]รองรับการขนส่งทั้ง RoCE และ TCP [ 64 ] [ 65 ]
- ตัวเริ่มต้น StarWind NVMe-oF [ 66 ]และเป้าหมายสำหรับLinuxและMicrosoft Windowsรองรับทั้งRoCEและTCPและการขนส่งFibre Channel [ 67 ]
- Lightbits Labs NVMe ผ่าน TCPเป้าหมาย[ 68 ]สำหรับการแจกจ่ายLinux ต่างๆ [ 69 ]และคลาวด์สาธารณะ
- Bloombase StoreSafe Intelligent Storage Firewall รองรับ NVMe ผ่านRoCE , TCP , Fibre ChannelและInfiniBandเพื่อการปกป้องความปลอดภัยของข้อมูลอย่างโปร่งใส
- NetApp ONTAP รองรับ เป้าหมายiSCSI และNVMe ผ่าน TCP [ 70 ]
- แพลตฟอร์มจัดเก็บข้อมูล Simplyblockพร้อมรองรับ NVMe over Fabrics [ 71 ]
การเปรียบเทียบกับ AHCI

อินเทอร์เฟซตัวควบคุมโฮสต์ขั้นสูง (AHCI) มีข้อดีคือความเข้ากันได้ของซอฟต์แวร์ที่กว้างขวาง แต่มีข้อเสียคือไม่สามารถให้ประสิทธิภาพสูงสุดเมื่อใช้กับSSDที่เชื่อมต่อผ่าน บัส PCI Expressเนื่องจาก AHCI เป็นอินเทอร์เฟซอุปกรณ์เชิงตรรกะ จึงได้รับการพัฒนาขึ้นเมื่อจุดประสงค์ของอะแดปเตอร์บัสโฮสต์ (HBA) ในระบบคือการเชื่อมต่อระบบย่อย CPU/หน่วยความจำกับระบบย่อยจัดเก็บข้อมูลที่ช้ากว่ามากซึ่งใช้สื่อแม่เหล็ก แบบหมุน ส่งผลให้ AHCI ก่อให้เกิดความไม่ eficiente บางประการเมื่อใช้กับอุปกรณ์ SSD ซึ่งมีพฤติกรรมคล้ายกับRAMมากกว่าสื่อแบบหมุน[ 72 ]
อินเทอร์เฟซอุปกรณ์ NVMe ได้รับการออกแบบตั้งแต่เริ่มต้น โดยใช้ประโยชน์จากความหน่วงต่ำและความสามารถในการประมวลผลแบบขนานของ SSD PCI Express และเสริมความสามารถในการประมวลผลแบบขนานของ CPU แพลตฟอร์ม และแอปพลิเคชันในปัจจุบัน โดยทั่วไปแล้ว ข้อได้เปรียบพื้นฐานของ NVMe เหนือ AHCI เกี่ยวข้องกับความสามารถในการใช้ประโยชน์จากความสามารถในการประมวลผลแบบขนานในฮาร์ดแวร์และซอฟต์แวร์ของโฮสต์ ซึ่งแสดงให้เห็นโดยความแตกต่างใน ความลึกของ คิวคำสั่งประสิทธิภาพของ การประมวล ผลการขัดจังหวะจำนวน การเข้าถึง รีจิสเตอร์ ที่ไม่สามารถแคชได้ ฯลฯ ส่งผลให้ประสิทธิภาพดีขึ้นในหลายด้าน[ 72 ] [ 73 ] : 17–18
ตารางด้านล่างนี้สรุปความแตกต่างหลักๆ ระหว่างอินเทอร์เฟซอุปกรณ์เชิงตรรกะ NVMe และ AHCI
| เอเอชซีไอ | เอ็นวีเอ็ม | |
|---|---|---|
| ความลึกของคิวสูงสุด | คิวคำสั่งเดียว; รองรับคำ สั่งได้สูงสุด 32 คำสั่งต่อคิว | คิวสูงสุด 65535 คิว; [ 74 ]คำสั่งสูงสุด 65536 คำสั่งต่อคิว |
| การเข้าถึงรีจิสเตอร์ที่ไม่สามารถแคชได้(2000 รอบการทำงานต่อครั้ง) | สูงสุดหกรายการต่อคำสั่งที่ไม่รอคิว; สูงสุดเก้ารายการต่อคำสั่งที่รอคิว | สูงสุดสองรายการต่อคำสั่ง |
| ขัดจังหวะ | การขัดจังหวะเพียงครั้งเดียว | รองรับ การขัดจังหวะ MSI-Xได้มากถึง 2048 ครั้ง |
| การทำงานแบบขนานและเธรดหลายตัว | ต้องใช้การล็อกการซิงโครไนซ์เพื่อออกคำสั่ง | ไม่มีระบบล็อค |
| ประสิทธิภาพสำหรับคำสั่งขนาด 4 KB | พารามิเตอร์คำสั่งต้องการการดึงข้อมูลจาก DRAM ของโฮสต์แบบเรียงลำดับสองครั้ง | ดึงพารามิเตอร์คำสั่งได้ในการดึงข้อมูลเพียงครั้งเดียวขนาด 64 ไบต์ |
| การส่งข้อมูล | โดยทั่วไปจะเป็นแบบครึ่งดูเพล็กซ์ | ฟูลดูเพล็กซ์ |
| บัฟเฟอร์หน่วยความจำโฮสต์ (HMB) | เลขที่ | ใช่ |
การสนับสนุนระบบปฏิบัติการ

- โครมโอเอส
- เมื่อวันที่ 24 กุมภาพันธ์ พ.ศ. 2558 มีการเพิ่มการสนับสนุนการบูตจากอุปกรณ์ NVM Express ลงในChromeOS [ 76 ] [ 77 ]
- ดราก้อนฟลาย บีเอสดี
- การเปิดตัวDragonFly BSD ครั้งแรก ที่รองรับ NVMe คือเวอร์ชัน 4.6 [ 78 ]
- ฟรีบีเอสดี
- Intel สนับสนุนไดรเวอร์ NVM Express สำหรับสาขา head และ stable/9 ของFreeBSD [ 79 ] [ 80 ]ไดรเวอร์ nvd(4) และ nvme(4) รวมอยู่ในการกำหนดค่าเคอร์เนล GENERIC โดยค่าเริ่มต้นตั้งแต่ FreeBSD เวอร์ชัน 10.2 ในปี 2015 [ 81 ]
- จีโนด
- การสนับสนุน NVMe ระดับผู้บริโภคถูกเพิ่มเข้าไปในเฟรมเวิร์ก Genode เป็นส่วนหนึ่งของการเผยแพร่เวอร์ชัน 18.05 [ 82 ]
- แอป iOS
- ด้วยการเปิดตัวiPhone 6Sและ6S Plusแอปเปิลได้แนะนำการใช้งาน NVMe ผ่านPCIeในสมาร์ทโฟน เป็นครั้งแรก [ 86 ]แอปเปิลได้ตามมาด้วยการเปิดตัวiPad Pro รุ่นแรก และiPhone SE รุ่นแรกซึ่งใช้ NVMe ผ่าน PCIe เช่นกัน[ 87 ]
- ลินุกซ์
- Intel ได้เผยแพร่ไดรเวอร์ NVM Express สำหรับLinuxเมื่อวันที่ 3 มีนาคม 2011 [ 88 ] [ 89 ] [ 90 ]ซึ่งถูกรวมเข้ากับ เคอร์เนล Linux หลักเมื่อวันที่ 18 มกราคม 2012 และเผยแพร่เป็นส่วนหนึ่งของเคอร์เนล Linux เวอร์ชัน 3.3 เมื่อวันที่ 19 มีนาคม 2012 [ 91 ]เคอร์เนล Linux รองรับ NVMe Host Memory Buffer [ 92 ]ตั้งแต่เวอร์ชัน 4.13.1 [ 93 ]โดยมีขนาดสูงสุดเริ่มต้นที่ 128 MB [ 94 ]เคอร์เนล Linux รองรับ NVMe Zoned Namespaces ตั้งแต่เวอร์ชัน 5.9
- ระบบปฏิบัติการ macOS
- Apple ได้แนะนำการสนับสนุนซอฟต์แวร์สำหรับ NVM Express ในYosemite 10.10.3 อินเทอร์เฟซฮาร์ดแวร์ NVMe ได้รับการแนะนำในMacBookและMacBook Proรุ่น ปี 2016 [ 95 ]
- เน็ตบีเอสดี
- NetBSDเพิ่มการสนับสนุน NVMe ใน NetBSD 8.0 [ 96 ]การใช้งานนี้มาจาก OpenBSD 6.0
- โอเพ่นบีเอสดี
- งานพัฒนาที่จำเป็นเพื่อรองรับ NVMe ในOpenBSDได้เริ่มต้นขึ้นในเดือนเมษายน 2557 โดยนักพัฒนาอาวุโสที่เคยรับผิดชอบด้านการสนับสนุนUSB 2.0และAHCI [ 97 ]การสนับสนุน NVMe ได้ถูกเปิดใช้งานใน OpenBSD เวอร์ชัน 6.0 [ 98 ]
- โอเอส/2
- Arca Noae จัดเตรียมไดรเวอร์ NVMe สำหรับArcaOSณ เดือนเมษายน พ.ศ. 2564 ไดรเวอร์นี้ต้องการการขัดจังหวะขั้นสูงตามที่จัดเตรียมโดย ACPI PSD ที่ทำงานในโหมดการขัดจังหวะขั้นสูง (โหมด 2) ดังนั้นจึงต้องการเคอร์เนล SMP ด้วยเช่นกัน[ 99 ]
- วีเอ็มแวร์
- Intel ได้จัดเตรียมไดรเวอร์ NVMe สำหรับVMware [ 101 ]ซึ่งรวมอยู่ในvSphere 6.0 และเวอร์ชันที่ใหม่กว่า โดยรองรับอุปกรณ์ NVMe ต่างๆ[ 102 ] ตั้งแต่ vSphere 6 อัปเดต 1 ระบบย่อยจัดเก็บข้อมูลแบบกำหนด โดยซอฟต์แวร์ VSAN ของ VMware ก็รองรับอุปกรณ์ NVMe เช่นกัน[ 103 ]
- วินโดวส์
- Microsoft ได้เพิ่มการสนับสนุน NVMe ในตัวให้กับWindows 8.1และWindows Server 2012 R2 [ 73 ] [ 104 ]แต่การใช้งานนั้นทำผ่านเลเยอร์การแปลง NVMe เป็น SCSI [ 105 ]ไดรเวอร์ NVMe สำหรับWindows 7และWindows Server 2008 R2 ได้ถูกเพิ่มเข้ามาในการอัปเดต[ 106 ]ผู้ผลิตหลายรายได้ออกไดรเวอร์ Windows ของตนเองสำหรับอุปกรณ์ของตนเช่นกัน นอกจากนี้ยังมีไฟล์ตัวติดตั้งที่ปรับแต่งด้วยตนเองเพื่อติดตั้งไดรเวอร์ของผู้ผลิตเฉพาะรายลงในการ์ด NVMe ใดๆ เช่น การใช้ไดรเวอร์ Samsung NVMe กับอุปกรณ์ NVMe ที่ไม่ใช่ของ Samsung ซึ่งอาจจำเป็นสำหรับคุณสมบัติเพิ่มเติม ประสิทธิภาพ และความเสถียร[ 107 ]
- การสนับสนุน NVMe HMB ถูกเพิ่มเข้ามาใน Windows 10 Anniversary Update (เวอร์ชัน 1607) ในปี 2016 [ 46 ]ใน Microsoft Windows ตั้งแต่Windows 10 1607ถึงWindows 11 23H2ขนาด HMB สูงสุดคือ 64 MB Windows 11 24H2อัปเดตขนาด HMB สูงสุดเป็น 1/64 ของ RAM ระบบ[ 108 ]
- การสนับสนุน NVMe ZNS และ KV ถูกเพิ่มในWindows 10 เวอร์ชัน 21H2และWindows 11ในปี 2021 [ 109 ] OpenFabrics Allianceดูแลรักษาไดรเวอร์ NVMe Windows แบบโอเพนซอร์สสำหรับ Windows 7/8/8.1 และ Windows Server 2008R2/2012/2012R2 ซึ่งพัฒนามาจากโค้ดพื้นฐานที่ส่งโดยบริษัทผู้สนับสนุนหลายแห่งในกลุ่มงาน NVMe โดยเฉพาะ IDT, Intel และ LSI [ 110 ]เวอร์ชันปัจจุบันคือ 1.5 จากเดือนธันวาคม 2016 [ 111 ]ไดรเวอร์ NVMe ในตัวของ Windows ใน Windows 8.1, Windows 10 และ Windows Server เวอร์ชันก่อนปี 2025 อาศัยสแต็กการจัดเก็บข้อมูลแบบ SCSI เก่า ซึ่งไม่มีการเร่งความเร็วฮาร์ดแวร์ ใดๆ จึงต้องใช้ไดรเวอร์เฉพาะของผู้จำหน่าย[ 112 ]การสนับสนุน NVMe ดั้งเดิมสำหรับWindows Server 2025ถูกเพิ่มเข้ามาเมื่อวันที่ 15 ธันวาคม 2025 อย่างไรก็ตาม จำเป็นต้องเปิดใช้งานผ่านการตั้งค่ารีจิสทรี ที่ซ่อนอยู่ [ 113 ]ยังคงมีให้ใช้งานอย่างไม่เป็นทางการใน Windows รุ่นสำหรับผู้บริโภค[ 114 ]
- มีไดรเวอร์ที่ไม่เป็นทางการสำหรับ Windows NT รุ่นเก่า[ 115 ]และ Windows 9x [ 116 ]
การสนับสนุนซอฟต์แวร์
- คิวอีเอ็มยู
- QEMUรองรับ NVMe ตั้งแต่เวอร์ชัน 1.6 ที่วางจำหน่ายเมื่อวันที่ 15 สิงหาคม 2556 [ 117 ]อุปกรณ์ NVMe ที่นำเสนอให้กับแขกของ QEMU อาจเป็นอุปกรณ์จริงหรืออุปกรณ์จำลองก็ได้
- ยูอีเอฟไอ
- ไดรเวอร์ NVMe แบบโอเพนซอร์สสำหรับUEFIที่เรียกว่า NvmExpressDxe มีให้บริการเป็นส่วนหนึ่งของ EDKII ซึ่งเป็นการใช้งานอ้างอิงแบบโอเพนซอร์สของ UEFI [ 118 ]
เครื่องมือการจัดการ

nvme-cliบนลินุกซ์nvmecontrol
เครื่องมือ นี้nvmecontrolใช้สำหรับควบคุมดิสก์ NVMe จากบรรทัดคำสั่งบน FreeBSD โดยถูกเพิ่มเข้ามาใน FreeBSD 9.2 [ 119 ]
nvme-cli
เครื่องมือพื้นที่ผู้ใช้ NVM-Express สำหรับ Linux [ 120 ]
ดูเพิ่มเติม
ลิงก์ภายนอก
- ข้อมูลจำเพาะของ NVM Express
- สมาคมคอมแพคแฟลช
- LFCS: การเตรียม Linux สำหรับอุปกรณ์หน่วยความจำแบบไม่ลบเลือน , LWN.net , 19 เมษายน 2556, โดย Jonathan Corbet
- การใช้งาน Multipathing บน PCI Express Storage , Linux Foundation , 12 มีนาคม 2015, โดย Keith Busch
- NVMe, NVMe-oF และ RDMA สำหรับวิศวกรเครือข่าย สิงหาคม 2020 โดย Jerome Tissieres
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ เอ็นวีเอ็ม เอ็กซ์เพรส
NVM Express ( NVMe , Non-Volatile Memory Express ) หรือNon-Volatile Memory Host Controller Interface Specification ( NVMHCIS ) เป็นข้อกำหนดอินเทอร์เฟซอุปกรณ์เชิงตรรกะแบบเปิด...
ข้อกำหนด
ข้อกำหนดสำหรับ NVMe ที่เผยแพร่จนถึงปัจจุบันมีดังนี้: [ 6 ]
พื้นหลัง
ในอดีต SSD ส่วนใหญ่ใช้ บัส เช่น SATA [ 19 ] SAS [ 20 ] [ 21 ] หรือ Fibre Channel สำหรับ การเชื่อมต่อกับส่วนที่เหลือของระบบคอมพิวเตอร์ นับตั้งแต่ SSD วางจำหน่ายในตลาดทั่วไป SATA ก็กลายเป็นวิธีการเชื่อมต่อ SSD ในคอมพิวเตอร์ส่วนบุคคลที่พบได้บ่อยที่สุด...
ประวัติศาสตร์
รายละเอียดแรกของมาตรฐานใหม่สำหรับการเข้าถึงหน่วยความจำแบบไม่ระเหยปรากฏขึ้นในงาน Intel Developer Forum 2007 เมื่อ NVMHCI ถูกแสดงเป็นโปรโตคอลฝั่งโฮสต์ของการออกแบบสถาปัตยกรรมที่เสนอซึ่งมี Open NAND Flash Interface Working Group (ONFI) อยู่ฝั่งชิปหน่วยความจำ...