ماشین (معماری کامپیوتر)

ماشین نام یک کامپیوتر آزمایشی است که توسط هیولت پاکارد ساخته شده است. این به عنوان بخشی از یک پروژه تحقیقاتی برای توسعه نوع جدیدی از معماری کامپیوتر برای سرورها ایجاد شد. این طراحی بر معماری «محاسبات حافظه محور» متمرکز بود، جایی که NVRAM جایگزین DRAM سنتی و دیسک‌ها در سلسله مراتب حافظه شد. NVRAM قابل آدرس دهی بایتی بود و از هر CPU از طریق اتصال فوتونیک قابل دسترسی بود. هدف از این پروژه ساخت و ارزیابی این طرح جدید بود.

نمای کلی سخت افزار 
ماشین یک خوشه کامپیوتری با تعداد زیادی گره مجزا بود که روی یک پارچه حافظه متصل شده بودند. اتصال پارچه ای از سیلیکون فوتونیک مبتنی بر VCSEL با یک تراشه سفارشی به نام X1 استفاده می کرد. دسترسی به حافظه غیر یکنواخت است و ممکن است شامل چندین پرش باشد. پیش‌بینی می‌شد که ماشین ابتدا یک کامپیوتر در مقیاس رک با 80 پردازنده و 320 ترابایت حافظه متصل به فابریک باشد، با پتانسیل برای مقیاس‌بندی به محفظه‌های بیشتر تا 32 ZB. حافظه ضمیمه فابریک دارای کش منسجم نیست و به نرم افزار نیاز دارد تا از این ویژگی آگاه باشد. از آنجایی که قفل های سنتی نیاز به انسجام حافظه پنهان دارند، سخت افزار به پل ها اضافه شد تا عملیات اتمی را در آن سطح انجام دهند. هر گره همچنین دارای مقدار محدودی از حافظه کش خصوصی محلی منسجم (256 گیگابایت) است. ذخیره سازی و محاسبه در هر گره دارای حوزه های قدرت کاملاً مجزا بود.

کل حافظه متصل به فابریک The Machine بیش از حد بزرگ است که نمی‌توان آن را در فضای آدرس مجازی پردازنده (که 48 بیت عرض داشت) نگاشت کرد. راهی برای نگاشت پنجره های حافظه متصل فابریک به حافظه پردازنده مورد نیاز است. بنابراین، ارتباط بین SoC هر گره و مخزن حافظه از طریق یک مؤلفه "Z-bridge" مبتنی بر FPGA انجام می شود که نگاشت حافظه SoC محلی به حافظه متصل به فابریک را مدیریت می کند. Z-bridge با دو نوع مختلف آدرس سر و کار دارد: آدرس های Z منطقی 53 بیتی و آدرس های Z 75 بیتی که به ترتیب اجازه آدرس دهی 8PB و 32ZB را می دهد.[4] هر Z-bridge همچنین حاوی یک فایروال برای اعمال کنترل دسترسی بود. پروتکل اتصال داخلی توسعه داده شد و به عنوان نسل بعدی اتصال حافظه (NGMI) شناخته شد. این پروتکل به استاندارد باز Gen-Z تبدیل شد. Z-bridge با استفاده از PCIe به SoC متصل می شود و از تغییرات عمده نرم افزاری جلوگیری می کند.

نمونه اولیه دستگاه نیمه رک در HPE Discover در لندن در سال 2016 رونمایی شد. هر گره حاوی SoCهای Broadcom/Cavium ThunderX2 مبتنی بر ARMv8-A بود. در مجموع 40 SoC 32 هسته ای وجود داشت. به دلیل در دسترس نبودن حافظه NVRAM مبتنی بر ممریستور کافی یا حافظه تغییر فاز، نمونه اولیه از 160 ترابایت DRAM با پشتیبان باتری استفاده کرد. با وجود این شکست، معمار نرم‌افزار کیث پاکارد گفت که این «می‌تواند برای اثبات سایر بخش‌های طراحی قبل از تغییر استفاده شود». طبق گزارشها، همکاری HPE با SK Hynix برای توسعه NVRAM مبتنی بر ممریستور با مشکل های مالی و جهت‌گیری مواجه شد و آن‌ها با Sandisk روی RAM مقاومتی (ReRAM) برای ماشین کار می‌کردند. با توجه به پلتفرم بعدی، HPE در نظر گرفت که به DIMM های Optane اینتل تبدیل شود "زمانی که مقادیر تولید در بازار موجود باشد.پلتفرم بعدی تخمین زد که نمونه اولیه رک 24 تا 36 کیلووات برق مصرف می کند.

نمای کلی نرم افزار 
دو پروژه بزرگ نرم افزاری برای ماشین ایجاد شد. نسخه آزمایشی لینوکس به نام Linux++ با تمام پیشرفت‌های لازم برای پیکربندی سخت‌افزار و کار با مدل‌های برنامه‌نویسی سنتی. این شامل پیکربندی پل، کنترل دسترسی و نقشه برداری با استفاده از زیرسیستم DAX بود. به موازات آن، یک سیستم عامل جدید به نام کربن اعلام شد که از اصول اولیه برای استفاده کامل از یک کامپیوتر مبتنی بر NVRAM طراحی می‌شد.

بارهای کاری اولیه برای The Machine شامل پایگاه داده درون حافظه، نرم افزار به سبک Hadoop و تجزیه و تحلیل داده های بزرگ در زمان واقعی بود.HPE ادعا کرد که یک طراحی محاسباتی مبتنی بر حافظه مانند ماشین می تواند "سرعت را تا 8000 برابر در مقایسه با سیستم های معمولی بهبود بخشد. در سیستم نمونه اولیه، حافظه متصل به پارچه سیستم توسط یک مؤلفه سرور مدیریتی «بالای رک» به نام The Libraria سازماندهی شد. کتابدار حافظه را به «قفسه‌هایی» از «کتاب‌های» 8 گیگابایتی تقسیم کرد. حفاظت های سخت افزاری را می توان بر روی مرزهای کتاب پیکربندی کرد.[4] یک "کتابچه" با حجم 64 کیلوبایت نیز پشتیبانی شد.

نقشه برداری حافظه توسط سیستم عامل انجام می شود، در حالی که کنترل های دسترسی برای حافظه توسط زیرساخت مدیریت سیستم ماشین به عنوان یک کل پیکربندی می شوند. نرم افزار باید بداند که خواندن حافظه متصل به پارچه می تواند خطاهای همزمان داشته باشد در حالی که نوشتن می تواند خطاهای ناهمزمان داشته باشد. در سیستم لینوکس، هنگامی که یک خطای حافظه رخ می دهد، سیگنال سیستم عامل SIGBUS استفاده می شود. مدل برنامه‌نویسی و تغییرها ساختار داده نیز مورد بررسی قرار گرفت، از جمله تغییرها در کتابخانه‌های رشته و ساختارهای داده پشته برای انعطاف‌پذیری با مدل های خرابی حافظه غیر فرار.

تاریخپه 
چند سال پس از کشف مجدد ممریستور توسط اچ‌پی، مدیر ارشد فناوری جدید اچ‌پی، مارتین فینک، پروژه آزمایشگاه‌های اچ‌پی را برای ساختن یک سیستم کامپیوتری مبتنی بر ممریستور برای مقابله با کند شدن قانون مور ایجاد کرد. او این پروژه را در رویداد HP’s Discover در تابستان 2014 اعلام کرد.

برخی از ایده‌های ماشین نیز از طرح‌های سیستم Dragonhawk نشأت گرفته است.سه چهارم از 200 کارمند HP Labs بر روی سخت افزار و نرم افزار دستگاه متمرکز بودند. در صحبت با بلومبرگ، HP می‌گوید که ظرف چند سال ماشین را تجاری می‌کند، «یا در تلاش به سر می‌برد».

کرک برسنیکر به عنوان معمار ارشد خدمت کرد و کیت پاکارد برای کار بر روی پیشرفت‌های لینوکس استخدام شد. Bdale Garbee برای مدیریت توسعه منبع باز استخدام شد.در سال 2015، هیولت پاکارد به دو شرکت مجزا، HP Inc و Hewlett Packard Enterprise (HPE)، با پروژه ماشین به دومی واگذار شد. 

در اواخر سال 2016، مارتین فینک به عنوان مدیر ارشد فناوری HPE بازنشسته شد.

اعلامیه بازنشستگی فینک همچنین گفت که کارکنان آزمایشگاه هیولت پاکارد به گروه محصولها Enterprise منتقل خواهند شد تا "کار تحقیق و توسعه ما در ماشین را با تجارت هماهنگ کنند. 

در اوایل سال 2017، آزمایشگاه هیولت پاکارد اسلایدی داشت که می‌گفت هدف پروژه «نشان دادن پیشرفت است، نه توسعه محصول ها» و آنها «برای ارائه ارزش ماشین متمایز به معماری‌های موجود و همچنین معماری‌های مخرب همکاری خواهند کرد».

BleepingComputer گفت: "به عبارت دیگر، ماشین دیگر محصولی به تنهایی نیست. در عوض فناوری هایی را ارائه می دهد که در آینده در سایر محصولها HPE استفاده می شود." HPE سازمان تحقیق و توسعه خالص خود را بازسازی کرد و آن را در گروه محصولها قرار داد. 

یاهو فاینانس گزارش داد که نمونه اولیه ماشین "سالها تا در دسترس بودن تجاری باقی مانده است.در سال 2018، HPE اظهار داشت که این پروژه به مرحله ای رسیده است که در مرحله بعدی تکامل خود به برنامه های کاربردی تجاری از مشتریان نیاز دارد.