NVM Express

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה לניווט קפיצה לחיפוש
לוגו 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 לא נדרשים למשאבים נוספים לתכנון מנהלי התקן ייחודיים.

תקן ואופן הפעולה[עריכת קוד מקור | עריכה]

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

תרשים של תורים ב-NVMe. לכל תור משויך תור (ירוק) משימות שהושלמו (בכתום). יש תור ניהול אחד, ותור משימות אחד או יותר שמשויך לכל ליבה במערכת. בקר ה-NVMe מתקשר עם התורים על גבי PCIe.

מושגים[עריכת קוד מקור | עריכה]

  • מרחב שם (Namespace) הוא זיכרון לא נדיף שיכול לארגן בלוקים לוגים. בקר NVMe יכול לתמוך במספר מרחבי שם, כשלכל אחד מזהה ייחודי (namespace ID). קיימות פקודות לניהול מרחבי שם (כדוגמת יצירה ומחיקה שלהם).
  • תור משימות (Submission Queue; ובקיצור SQ) מאפשר לתוכנה לכתוב פקודות לביצוע, שאותן קורא הבקר על פי סדר (אך עשוי לבצע בסדר שונה), וכשהן נשלמות כותב הבקר הודעת סיום לתור המשימות שהושלמו (Completion Queue; ובקיצור CQ). ניתן לשייך מספר תורי משימות לתור משימות שהושלמו.
    • רשומה בתור המשימות (Submission queue entry) בנויה מ-64 בתים, ומציינת את כתובות הזיכרון הפיזי שישמשו להעברת הנתונים, המצוינות בצורה של Physical Region Page (ובקיצור PRP) או רשימת פיזור/איסוף (Scatter Gather List ובקיצור SGL).
    • רשומה בתור המשימות מכילה מציין של התור הרלוונטי ושל המשימה.
  • משימות ניהול (Admin Submission) מאפשרות לנהל את הבקר כדוגמת יצירה ומחיקה של תורי משימות, ביטול משימות וכו'.

NVMeOF[עריכת קוד מקור | עריכה]

תרשים המתאר NVMeOF המאפשר גישה להתקן NVMe מרוחק באמצעות פרוטקול תעבורה ברשת

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

התקן מגדיר קפסולה כיחידת בסיס להעברת מידע, וקיימות קפסולות פקודה (command capsule) וקפסולות תשובה (response capsule).

היסטוריה[עריכת קוד מקור | עריכה]

סדרת SSD 750 של אינטל, אשר משתמש ב-NVM Express ככרטיס הרחבה של PCI Express 3.0 בארבעה אפיקים

הפרטים הראשונים על תקן חדש לגישה לזיכרון לא נדיף התפרסמו במסגרת אירוע המפתחים של אינטל ב-2007, שבהם הוצג בשם NVMHCI. תקן NVMHCI 1.0 הושלם ופורסם באפריל 2008.

עבודה טכנית על NVMe החלה במחצית השנייה של 2009.[4] התקן של NVMe הוגדר על ידי קבוצת עבודה שהורכבה מיותר מ-90 חברות; בראש הקבוצה עמד אמבר הופמן מאינטל. גרסה 1.0 של התקן פורסמה ב-1 במרץ 2011,[5], וגרסה 1.1 פורסמה באוקטובר 2012. גרסה 1.1 כללה הרחבה של גישה למסלולים מרובים (multi path; באמצעות שיתוף מרחבי שם) וגודל שרירותי לרשימת פיזור/איסוף. בשלביה הראשונים נקראה גרסה 1.1 בשם "NVMHCI לחברות". בינואר 2013 פורסם עדכון לגרסה הבסיסית של NVMe, עדכון 1.0e.

ערכות שבבים ראשונות המבוססות על תקן NVMe החלו להימכר בצורה מסחרית באוגוסט 2012 על ידי החברה האמריקנית Integrated Device Technology.[6][7] ביולי 2013 הכריזה סמסונג על התקן NVMe לחברות, דגם XS1715, שתמך על פי היצרן במהירות קריאה של 3GB לשנייה, פי שישה מהמהירות של אמצעי אחסון קודמים.[8] בנובמבר 2013 השיקה SandForce משפחת בקרים SF3700 שגם תמכה ב-NVMe.[9] ביוני 2014 הודיעה אינטל על מוצרי NVMe ראשונים מתוצרתה במסגרת משפחת מוצרי אחסון למרכזי נתונים, שכללה את סדרות DC P3700, DC P3600 וDC P3500.[10]

בספטמבר 2014 הוצע תקן FC-NVMe, המאפשר NVMe על גבי Fibre Channel.[11] ב-2016 פורסמה גרסה 1.0 של NVM Express over Fabrics.[2]

קישורים חיצוניים[עריכת קוד מקור | עריכה]

ויקישיתוף מדיה וקבצים בנושא NVM Express בוויקישיתוף

הערות שוליים[עריכת קוד מקור | עריכה]

  1. ^ https://nvmexpress.org/resources/specifications/
  2. ^ 2.0 2.1 "NVM Express over Fabrics Revision 1.0". NVM Express, Inc.. 5 ביוני 2016. 
  3. ^ N. V. M. Express, Welcome NVMe™/TCP to the NVMe-oF™ Family of Transports, NVM Express (בAmerican English)
  4. ^ Peter Onufryk, What’s New in NVMe 1.1 and Future Directions
  5. ^ "New Promoter Group Formed to Advance NVM Express". Press release. 1 ביוני 2011. בדיקה אחרונה ב-18 בספטמבר 2013. 
  6. ^ "IDT releases two NVMe PCI-Express SSD controllers". The Inquirer. 21 באוגוסט 2012. בדיקה אחרונה ב-11 בינואר 2014. 
  7. ^ "IDT Shows Off The First NVMe PCIe SSD Processor and Reference Design - FMS 2012 Update". The SSD Review. 24 באוגוסט 2012. בדיקה אחרונה ב-11 בינואר 2014. 
  8. ^ "Samsung Announces Industry’s First 2.5-inch NVMe SSD | StorageReview.com - Storage Reviews". StorageReview.com. 18 ביולי 2013. בדיקה אחרונה ב-11 בינואר 2014. 
  9. ^ "LSI SF3700 SandForce Flash Controller Line Unveiled | StorageReview.com - Storage Reviews". StorageReview.com. 18 בנובמבר 2013. בדיקה אחרונה ב-11 בינואר 2014. 
  10. ^ "Intel® Solid-State Drive Data Center Family for PCIe*". Intel. בדיקה אחרונה ב-21 במרץ 2015. 
  11. ^ "Fibre Channel Industry Association Collaborating with NVM Express, Inc. to Define New Standard for Fabric-Based Solid-State Storage Devices" (הודעה לעיתונות).