موضوع مقاله: واحد حافظه سی.ام ام پی(C.mmp) | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # واحد حافظه سی.ام ام پی(C.mmp) | مقدمه: تا سال ۲۰۲۴، این ماشین در دانشگاه کارنگی ملون، در ساختمان Wean Hall، طبقهٔ نهم، به نمایش گذاشته شده است. | ## بخش 1: واحد حافظه سی.ام ام پی(C.mmp) | هر ماژول محاسباتی دارای ۸ کیلوبایت حافظهٔ محلی و مجموعه‌ای محلی از تجهیزات جانبی بود. یکی از چالش‌ها این بود که هر دستگاه جانبی تنها از طریق پردازنده‌ای که به آن متصل بود در دسترس قرار داشت. به همین دلیل، سامانهٔ ورودی/خروجی (طراحی‌شده توسط روی لوین) اتصال فیزیکی دستگاه‌ها را پنهان می‌کرد و درخواست‌ها را به پردازندهٔ میزبان هدایت می‌نمود. در صورت از کار افتادن یک پردازنده، دستگاه‌های متصل به Unibus آن پردازنده نیز غیرقابل دسترس می‌شدند که این موضوع به مشکلی در قابلیت اطمینان کلی سامانه تبدیل شد. هر یک از ماژول‌های محاسباتی این مسیرهای ارتباطی را به‌صورت مشترک در اختیار داشتند: گذرگاه بین‌پردازنده‌ای: برای توزیع ساعت سراسری سیستم، وقفه‌ها و پیام‌های کنترلی پردازش میان ماژول‌ها کلید متقاطع ۱۶×۱۶: برای اتصال ۱۶ ماژول محاسباتی در یک سو و ۱۶ بانک حافظهٔ اشتراکی در سوی دیگر. اگر هر ۱۶ پردازنده به بانک‌های متفاوتی از حافظه دسترسی پیدا می‌کردند، همهٔ دسترسی‌ها به‌صورت هم‌زمان انجام می‌شد. اگر دو یا چند پردازنده قصد دسترسی به یک بانک حافظهٔ مشترک را داشتند، یکی از آن‌ها در یک چرخهٔ حافظه اجازهٔ دسترسی می‌یافت و دسترسی سایر پردازنده‌ها در چرخه‌های بعدی هماهنگ می‌شد. از آن‌جا که PDP-11 دارای فضای آدرس‌دهی منطقی ۱۶ بیتی بود، یک واحد ترجمهٔ آدرس اضافی افزوده شد تا فضای آدرس حافظهٔ اشتراکی به ۲۵ بیت گسترش یابد. | ## بخش 2: واحد حافظه سی.ام ام پی(C.mmp) | مدیریت صحیح این ثبات‌ها یکی از چالش‌های برنامه‌نویسی هستهٔ سیستم‌عامل به‌شمار می‌رفت. طراحی اولیهٔ C.mmp از حافظهٔ هستهٔ مغناطیسی استفاده می‌کرد، اما در طول عمر سامانه، حافظه‌های RAM پویا با کارایی بالاتر در دسترس قرار گرفت و سیستم به این نوع حافظه ارتقا یافت. پردازنده‌های اولیه از نوع PDP-11/20 بودند، اما در نسخهٔ نهاییٔ سیستم تنها پنج عدد از آن‌ها مورد استفاده قرار گرفت و یازده پردازندهٔ باقی‌مانده از نوع PDP-11/40 بودند که با افزودن فضای میکروکُد قابل نوشتن اصلاح شده بودند. اما از آن‌جا که PDP-11/40 مبتنی بر میکروکُد پیاده‌سازی شده بود، یک برد جداگانه به نام proc-mod طراحی شد که برخی دستورها را رهگیری می‌کرد و نیازهای سیستم‌عامل محافظت‌شده را پیاده‌سازی می‌نمود. در PDP-11/40، هرگونه دسترسی به پشته توسط برد proc-mod رهگیری می‌شد و اگر بیت کم‌ارزش برابر ۱ بود، وقفهٔ دسترسی غیرمجاز به داده ایجاد می‌گردید. این سیستم‌عامل مبتنی بر قابلیت، شیءگرا، چندکاربره و دارای معماری ریز‌هسته‌ای بود. از جمله زبان‌های برنامه‌نویسی موجود در این سامانه، گونه‌ای از ALGOL 68 بود که شامل افزونه‌هایی برای پشتیبانی از محاسبات موازی می‌شد تا از توان C.mmp به‌خوبی بهره‌برداری شود. قابلیت اطمینان از آن‌جا که قابلیت اطمینان کلی سامانه به فعال بودن هر ۱۶ پردازنده وابسته بود، مشکلات جدی در قابلیت اطمینان سخت‌افزاری وجود داشت. | ## بخش 3: واحد حافظه سی.ام ام پی(C.mmp) | اگر میانگین زمان بین خرابی‌ها (MTBF) برای یک پردازنده ۲۴ ساعت بود، قابلیت اطمینان کلی سیستم برابر با ۱۶/۲۴ ساعت، یعنی حدود ۴۰ دقیقه می‌شد. بسیاری از این خرابی‌ها ناشی از ناپایداری‌های زمانی در مدارهای سفارشی متعددی بود که به پردازنده‌ها افزوده شده بودند. هنگامی که یک پردازنده به‌طور محسوسی دچار خرابی می‌شد، از مجموعهٔ پردازنده‌ها جدا می‌گردید و برای چند ساعت آزمون‌های عیب‌یابی را اجرا می‌کرد. پس از گذراندن نخستین مرحلهٔ آزمون‌ها، آن پردازنده به‌عنوان پردازندهٔ ورودی/خروجی به سیستم بازگردانده می‌شد و کدهای کاربردی را اجرا نمی‌کرد (اما تجهیزات جانبی آن دوباره در دسترس قرار می‌گرفتند) و همچنان به اجرای آزمون‌ها ادامه می‌داد. اگر پس از چند ساعت دیگر این آزمون‌ها نیز با موفقیت طی می‌شد، پردازنده دوباره به‌عنوان عضو کامل مجموعهٔ پردازنده‌ها فعال می‌گردید. به‌طور مشابه، اگر یک بلوک حافظه (یک صفحه) معیوب تشخیص داده می‌شد، از مجموعهٔ صفحات در دسترس حذف می‌گردید و تا اطلاع ثانوی، سیستم‌عامل آن صفحه را نادیده می‌گرفت. | ## جمع‌بندی | بدین ترتیب، سیستم‌عامل Hydra به نمونه‌ای اولیه از سامانه‌های تحمل‌پذیر در برابر خطا تبدیل شد که قادر بود با مشکلات اجتناب‌ناپذیر سخت‌افزاری مقابله کند.