NVM Express

NVM Express (‏NVMe) הוא הגדרה לממשק להתקן לוגי כדי לגשת לאחסון לא נדיף המחובר באמצעות PCI Express (PCIe). הקיצור NVM מציין זיכרון לא נדיף (non-volatile memory) שהוא לרוב זיכרון הבזק מבוסס NAND שיכול לבוא בצורות שונות כגון Solid state drive ‏(SSD), כרטיסי PCIe או כרטיסי M.2.‏ NVMe כממשק להתקן לוגי תוכנן כדי לנצל השהיה נמוכה ומקביליות פנימית של התקני אחסון אלו.
NVMe מאפשר לחומרה ולתוכנה לנצל את המקביליות הנתמכת ב-SSDs מודרניים, וכך לצמצם את התקורה של פעולות קלט/פלט (I/O) ולשפר את הביצועים ביחס לממשקים קודמים של התקנים לוגיים. פרוטוקולים קודמים כדוגמת AHCI פותחו כדי לתמוך בדיסקים קשיחים אטיים, שבהם היה עיכוב רב (ביחס למהירות המעבד) בין בקשת המידע לקבלתו, מהירות העברת הנתונים הייתה אטית בהרבה ביחס ל-RAM, וסיבוב הדיסק זמן החיפוש יכלו לשמש כדרישות לאופטימיזציה.
התקני NVMe קיימים בצורות של כרטיסי הרחבה ל-PCIe וכהתקני 2.5 אינץ' המספקים ממשק של ארבעה אפיקי PCIe באמצעות חיבור U.2.

רקע

היסטורית רוב כונני ה-SSD השתמשו באפיקי נתונים כדוגמת SATA,‏ SAS וערוצי סיבים (FC) כדי להתממשק עם יתר מערכת המחשב. מאז הפיכתם של כונני SSD לנפוצים בשוק, היה SATA הדרך הנפוצה לחיבור כונני SSD למחשבים אישיים; אולם SATA תוכנן בעיקר כדי לתקשר עם דיסקים קשיחים מכניים, ולא מתאים כל כך ל-SSDs, שהשתפרו במהירות לאורך הזמן. בין השנים 2005 ל-2010, חלק מכונני SSD הגיעו למיצוי התפוקה המקסימלית של SATA.
כונני SSD יוקרתיים השתמשו באפיק PCI Express עוד לפני הגדרת NVMe, אך על בסיס ממשקים שאינם סטנדרטיים. באמצעות תקנון הממשק של כונני SSD, יכולות מערכות הפעלה להסתפק במנהל התקן (דרייבר) אחד שיתאים לכל כונני ה-SSD הפועלים בהתאם לתקן. כמו כן יצרני SSD לא נדרשים למשאבים נוספים לתכנון מנהלי התקן ייחודיים.

תקן ואופן הפעולה

התקן מגדיר את הממשק המאפשר גישה לאחסון לא נדיף. התקן מיועד לאפשר גישה לכונני SSD על גבי PCIe. הממשק של NVMe מספק ממשקים יעילים לשליחת משימה לביצוע ולמעקב אחרי השלמתה. התקן תומך בביצוע פעולות במקביל הודות לתמיכה בכ-65 אלף תורי משימות, כשכל תור יכול לטפל ב-64 אלף משימות. בנוסף כולל התקן יכולות מתקדמות המשמשות חברות כדוגמת הגנה מידע מהקצה לקצה, דיווח שגיאות מפורט ותמיכה בווירטואליזציה (כדוגמת SR-IOV). בין היתר מגדיר התקן תמיכה בפסיקות של MSI/MSI-X ובתורי עדיפויות.

NVMeOF

NVM Express over Fabrics (בקיצור NVMeOF) הוא תקן המרחיב את NVM Express כדי להשתמש בפרוטוקול תעבורה על גבי הרשת לגישה להתקנים מרוחקים, בשונה מ-NVMe בסיסי שבו הגישה להתקן נעשית בצורה ישירה על גבי אפיק PCIe. יש מספר סוגים של NVMeOF, הנבדלים על פי סוג פרוטוקול התעבורה המשמש אותם. התקן מגדיר מיפוי של NVMe על גבי גישה ישירה מרוחקת לזיכרון (RDMA) ובהמשך נוספה גם הגדרה ל–NVMe-oF/TCP כששכבת התעבורה היא TCP.
התקן מגדיר קפסולה כיחידת בסיס להעברת מידע, וקיימות קפסולות פקודה (command capsule) וקפסולות תשובה (response capsule).

היסטוריה

הפרטים הראשונים על תקן חדש לגישה לזיכרון לא נדיף התפרסמו במסגרת אירוע המפתחים של אינטל ב-2007, שבהם הוצג בשם NVMHCI. תקן NVMHCI 1.0 הושלם ופורסם באפריל 2008.
עבודה טכנית על NVMe החלה במחצית השנייה של 2009. התקן של NVMe הוגדר על ידי קבוצת עבודה שהורכבה מיותר מ-90 חברות; בראש הקבוצה עמד אמבר הופמן מאינטל. גרסה 1.0 של התקן פורסמה ב-1 במרץ 2011,, וגרסה 1.1 פורסמה באוקטובר 2012. גרסה 1.1 כללה הרחבה של גישה למסלולים מרובים (multi path; באמצעות שיתוף מרחבי שם) וגודל שרירותי לרשימת פיזור/איסוף. בשלביה הראשונים נקראה גרסה 1.1 בשם "NVMHCI לחברות". בינואר 2013 פורסם עדכון לגרסה הבסיסית של NVMe, עדכון 1.0e.
ערכות שבבים ראשונות המבוססות על תקן NVMe החלו להימכר בצורה מסחרית באוגוסט 2012 על ידי החברה האמריקנית Integrated Device Technology. ביולי 2013 הכריזה סמסונג על התקן NVMe לחברות, דגם XS1715, שתמך על פי היצרן במהירות קריאה של 3GB לשנייה, פי שישה מהמהירות של אמצעי אחסון קודמים. בנובמבר 2013 השיקה SandForce משפחת בקרים SF3700 שגם תמכה ב-NVMe. ביוני 2014 הודיעה אינטל על מוצרי NVMe ראשונים מתוצרתה במסגרת משפחת מוצרי אחסון למרכזי נתונים, שכללה את סדרות DC P3700, DC P3600 וDC P3500.
בספטמבר 2014 הוצע תקן FC-NVMe, המאפשר NVMe על גבי Fibre Channel. ב-2016 פורסמה גרסה 1.0 של NVM Express over Fabrics.