آشنایی با رابط کنترل کننده حافظه غیر فرار (NVMe)
رابط کنترل کننده حافظه غیر فرار (NVMe) یک پروتکل واسط های مقیاس پذیر است که برای بهره گیری کامل از موازی سازی پیشنهاد شده توسط فن آوری های NVM مثل فلش توسعه داده شده است. امروزه با استفاده از درایوهای حالت جامد سریع (SSDs)، مشکلات مربوط به عملکرد شامل نرخ داده واسط هاست نسبت به پهنای باند وسیله ذخیره سازی می باشد.
NVMe برای بررسی این موضوع توسعه داده شده است. این فنآوری از پروتکل رابط کنترلکننده PCI (PCIe) استفاده میکند و طوری طراحی شده که سریعتر از پروتکلهایی مثل SAS و SATA عمل کند که به طور اورجینال با مشخصات درایو دیسک سخت (HDD) طراحی شده بودند.
در این متن، به صورت مختصر بعضی مفاهیم اساسی را بررسی میکنیم که باعث میشود NVMe دارای ویژگی نرخ انتقال داده بالا باشد. سپس به طور مختصر Flashtec NVMe میکروچیپ 3108 را بررسی میکنیم – یک کنترلکننده NVMe SSD شرکتی از نسل 4 PCIe هشت کاناله که به تازگی منتشر شده است.
یک اختلاف اساسی بین هاردهای SSD و HDD
با یک HDD، عمل نوشتن/خواندن از یا به یک بخش خاص از دیسک، احتیاج به حرکت هد به محل مناسبی در صفحه چرخش دارد (تأخیری که اغلب به عنوان زمان جستجو در نظر گرفته میشود). بنابراین HDD ها به دادههای متوالی و نسبتاً کند دسترسی دارند.
پروتکل SAS که برای تعداد زیادی از خریداران ذخیرهسازی جز انتخاب اصلی محسوب میشود، در اصل با مشخصات HDD طراحی شده است. به طور متضاد، سیستمهای ذخیرهسازی فلش از سطوح مختلف موازیسازی برای دستیابی به ورودیهای خواندن/نوشتن بالاتر استفاده میکند.
معماری یک SSD نمونه در شکل زیر نشان داده شده است.
نمونهای از معماری یک SSD نمونه.
در این حالت، چند وسیله حافظه NAND متفاوت به عنوان یک کانال در کنار یکدیگر قرار میگیرد. خط سیر داده معمولاً برای کار با وسایل مختلف حافظه یک کانال به صورت موازی و همچنین برای دستیابی به ورودی بالاتر بکار گرفته میشود.
برای مثال، در حالیکه در بخش حافظه اول یک کانال، عملکرد نوشتن در حال انجام شدن است، اطلاعات آدرس یک عمل نوشتن که در حال واردشدن است، میتواند به بخش حافظه دوم انتقال داده شود. برای دستیابی به این عملکرد موازی، کنترلکننده فلش باید اطلاعاتی را توزیع کند که از یک واسطه خارجی بین کانالهای مختلف دریافت میکند.
ساختار فوق یک SSD را قادر میسازد که به صورت لحظهای و موازی به سلولهای حافظه دسترسی داشته باشد. برای SSD هایی امروزی، اگر به دنبال موازیسازی گسترده ذاتی و حداقل تأخیر هستیم، احتیاج به یک پروتکل واسطهای بهینهشده جدید داریم.
این پروتکل جدید که از ابتدا تا به امروز برای معماری SSD طراحی شده است، NVMe میباشد. NVMe ها برای اینکه عملکرد مقیاسپذیر ناموازی داشته باشند، از باس PCIe همراه با خط فرمان استفاده میکنند. در ادامه ما این دو ویژگی را بررسی کردهایم.
چرا PCIe؟
PCIe یک واسط باس با هدف در نظرگرفته شده کلی است که در هر دو کاربرد انجام محاسبه برای مشتری و شرکت مورد استفاده قرار میگیرد. ما میتوانیم با استفاده از SSD بر پایه PCIe وسیله ذخیرهسازی را به طور مستقیم به صفحه پشت یک سرور متصل کنیم.
به هر حال، در حالتی که از پروتکلهای SATA و SAS استفاده میشود، یک بلوک کنترلکننده ذخیرهسازی بین SSD و پورت PCIe از پردازنده لازم است. به عنوان نتیجه، یک راهحل که بر پایه SSD کار میکند، PCIe را به CPU نزدیکتر میکند و تأخیر مرتبط با کنترلکننده ذخیرهساز را برطرف میکند.
یک راهحل مبتنی بر PCIe. تصویر ارائه شده از SATA-IO
بعلاوه پهنای باند / عملکرد PCIe مقیاسپذیر است و میتواند نیازهای وسایل ذخیرهساز فلش چند جانبه را در آینده برطرف کند. به طور مثال نسل سوم PCIe تا 16 خط را برای انتقال داده پشتیبانی میکند که هر خط نیز از ماکزیمم ورودی داده 1 گیگابیت بر ثانیه پشتیبانی میکند.
صفوف Queue ها:
NVMe شامل مجموعهای از خط فرمان است که به پردازنده اجازه میدهد که دستورات صادرشده را مرتب کند و آنها را به روشی مؤثر انجام دهد. این موضوع پردازنده را قادر میسازد که به طور کامل از خاصیت موازیسازی معماری SSD استفاده کند. هنگامی که یک خط فرمان تلاش میکند که به NAND با حجم کاری زیاد دسترسی داشته باشد، هاست میتواند براحتی این دستور را مرتب کند و با دستور بعدی در صف دستورات، کار خود را ادامه دهد. تکنیک مرتبسازی در پروتکلهای SATA و SAS نیز بکار میرود، به هر حال این پروتکلها به ترتیب از یک تک خط 32 و 256 فرمانی پشتیبانی میکنند. NVMe میتواند تا 64000 صف را داشته باشد که هر صف تا 64000 خط فرمان را پشتیبانی میکند.
نمودار صفوف فرمان NVMe.
این مورد همراه با نرخ انتقال داده بالای PCIe، باعث می شود که NVMe بتواند از تمام ظرفیتهای SSD استفاده کند.
Flashtec NVMe 3108 میکروچیپ
کنترلکننده Flashtec NVMe 3108 بسیاری از اصول مطرحشده در بالا را با مثال نشان میدهد. این وسیله به این منظور طراحی شده تا زیرساختهای ابری با پهنای باند ذخیرهسازی و تراکم موردنیاز توسط هوش مصنوعی (AI) و حجم کاری فرآیند یادگیری ماشین (ML) را تأمین کند.
نمودار کنترلکننده Flashtec NVMe 3108 میکروچیپ.
این وسیله یک کنترلکننده NVMe SSD شرکتی نسل 4 از PCIe هشت کاناله میباشد. وسیله جدید دارای بیش از یک میلیون عملکرد IO بر ثانیه (IOPS) برای حجمهای کاری تصادفی و بیش از 6 گیگابایت بر ثانیه (GB/s) پهنای باند ترتیبی میباشد.
خصوصیات میکروچیپ حاکی از آن است که کنترلکننده Flashtec NVMe 3108 شامل یکپارچگی داده با کلاس شرکتی به صورت پایان به پایان و ویژگیهای امنیتی مانند روت سختافزاری اعتبار برای افزایش قابلیت اطمینان سیستم میباشد.
آیا در گذشته شما با فنآوری NVMe کار کرده اید؟ تجربیات خود در قسمت نظرات با دیگران در میان بگذارید.