واحد حافظه سی.ام ام پی(C.mmp)

بندانگشتی|واحد حافظهٔ C.mmp، با سه رکِ قابل مشاهده، از جمله پنل جلوییِ کلید متقاطع (Crossbar switch).

## '''سی.ام‌ام‌پی (C.mmp)'''
واحد حافظهٔ C.mmp، با سه رک قابل مشاهده، از جمله پنل جلوییِ کلید متقاطع (Crossbar switch).

C.mmp یک سامانهٔ اولیهٔ چندپردازنده‌ای از نوع چند دستور، چند داده (Multiple Instruction, Multiple Data یا MIMD) بود که در سال ۱۹۷۱ در دانشگاه کارنگی ملون (CMU) توسط ویلیام وولف توسعه یافت. نام‌گذاری C.mmp از نمادگذاری PMS متعلق به گوردون بل و آلن نیوول گرفته شده است؛ در این نمادگذاری، واحد پردازش مرکزی با حرف C مشخص می‌شد، گونه‌ها با نشانهٔ نقطه نمایش داده می‌شدند و mmp مخفف Multi-Mini-Processor (چند ریزپردازنده‌ای) بود.
تا سال ۲۰۲۴، این ماشین در دانشگاه کارنگی ملون، در ساختمان Wean Hall، طبقهٔ نهم، به نمایش گذاشته شده است.

## '''ساختار'''
در این سامانه از شانزده رایانهٔ کوچک PDP-11 ساخت شرکت Digital Equipment Corporation به‌عنوان عناصر پردازشی استفاده شده بود که در سیستم با نام ماژول‌های محاسباتی (Compute Modules یا CMs) شناخته می‌شدند. هر ماژول محاسباتی دارای ۸ کیلوبایت حافظهٔ محلی و مجموعه‌ای محلی از تجهیزات جانبی بود.

یکی از چالش‌ها این بود که هر دستگاه جانبی تنها از طریق پردازنده‌ای که به آن متصل بود در دسترس قرار داشت. به همین دلیل، سامانهٔ ورودی/خروجی (طراحی‌شده توسط روی لوین) اتصال فیزیکی دستگاه‌ها را پنهان می‌کرد و درخواست‌ها را به پردازندهٔ میزبان هدایت می‌نمود. در صورت از کار افتادن یک پردازنده، دستگاه‌های متصل به Unibus آن پردازنده نیز غیرقابل دسترس می‌شدند که این موضوع به مشکلی در قابلیت اطمینان کلی سامانه تبدیل شد. پردازندهٔ شمارهٔ صفر (پردازندهٔ راه‌انداز) به درایوهای دیسک متصل بود.

* هر یک از ماژول‌های محاسباتی این مسیرهای ارتباطی را به‌صورت مشترک در اختیار داشتند:

گذرگاه بین‌پردازنده‌ای: برای توزیع ساعت سراسری سیستم، وقفه‌ها و پیام‌های کنترلی پردازش میان ماژول‌ها

کلید متقاطع ۱۶×۱۶: برای اتصال ۱۶ ماژول محاسباتی در یک سو و ۱۶ بانک حافظهٔ اشتراکی در سوی دیگر. اگر هر ۱۶ پردازنده به بانک‌های متفاوتی از حافظه دسترسی پیدا می‌کردند، همهٔ دسترسی‌ها به‌صورت هم‌زمان انجام می‌شد. اگر دو یا چند پردازنده قصد دسترسی به یک بانک حافظهٔ مشترک را داشتند، یکی از آن‌ها در یک چرخهٔ حافظه اجازهٔ دسترسی می‌یافت و دسترسی سایر پردازنده‌ها در چرخه‌های بعدی هماهنگ می‌شد.

از آن‌جا که PDP-11 دارای فضای آدرس‌دهی منطقی ۱۶ بیتی بود، یک واحد ترجمهٔ آدرس اضافی افزوده شد تا فضای آدرس حافظهٔ اشتراکی به ۲۵ بیت گسترش یابد. معماری Unibus امکان آدرس‌دهی فیزیکی ۱۸ بیتی را فراهم می‌کرد و دو بیت پرارزش برای انتخاب یکی از چهار ثبات جابه‌جایی (Relocation registers) به‌کار می‌رفت که هر یک یک بانک حافظه را انتخاب می‌کردند. مدیریت صحیح این ثبات‌ها یکی از چالش‌های برنامه‌نویسی هستهٔ سیستم‌عامل به‌شمار می‌رفت.

طراحی اولیهٔ C.mmp از حافظهٔ هستهٔ مغناطیسی استفاده می‌کرد، اما در طول عمر سامانه، حافظه‌های RAM پویا با کارایی بالاتر در دسترس قرار گرفت و سیستم به این نوع حافظه ارتقا یافت.

پردازنده‌های اولیه از نوع PDP-11/20 بودند، اما در نسخهٔ نهاییٔ سیستم تنها پنج عدد از آن‌ها مورد استفاده قرار گرفت و یازده پردازندهٔ باقی‌مانده از نوع PDP-11/40 بودند که با افزودن فضای میکروکُد قابل نوشتن اصلاح شده بودند. تمامی این اصلاحات در دانشگاه کارنگی ملون طراحی و ساخته شد.

بیشتر اصلاحات اعمال‌شده بر PDP-11/20 شامل تغییرات سفارشی در صفحهٔ پشتی سیم‌پیچی‌شده (Wire-wrapped backplane) بود. اما از آن‌جا که PDP-11/40 مبتنی بر میکروکُد پیاده‌سازی شده بود، یک برد جداگانه به نام proc-mod طراحی شد که برخی دستورها را رهگیری می‌کرد و نیازهای سیستم‌عامل محافظت‌شده را پیاده‌سازی می‌نمود. برای نمونه، برای حفظ یکپارچگی سیستم‌عامل لازم بود که ثبات اشاره‌گر پشته (Stack pointer) هرگز مقدار فرد نداشته باشد. در PDP-11/20 این کار با قطع اتصال بیت کم‌ارزش ثبات پشته انجام می‌شد. در PDP-11/40، هرگونه دسترسی به پشته توسط برد proc-mod رهگیری می‌شد و اگر بیت کم‌ارزش برابر ۱ بود، وقفهٔ دسترسی غیرمجاز به داده ایجاد می‌گردید.

## '''سیستم‌عامل'''
سیستم‌عامل این سامانه Hydra نام داشت. این سیستم‌عامل مبتنی بر قابلیت، شیءگرا، چندکاربره و دارای معماری ریز‌هسته‌ای بود. منابع سیستم به‌صورت شیء نمایش داده می‌شدند و از طریق قابلیت‌ها محافظت می‌گردیدند.

سیستم‌عامل و بیشتر نرم‌افزارهای کاربردی با زبان برنامه‌نویسی BLISS-11 نوشته شده بودند که نیازمند ترجمهٔ متقابل (Cross-compiling) روی یک رایانهٔ PDP-10 بود. سیستم‌عامل تنها از مقدار اندکی زبان اسمبلی استفاده می‌کرد.

از جمله زبان‌های برنامه‌نویسی موجود در این سامانه، گونه‌ای از ALGOL 68 بود که شامل افزونه‌هایی برای پشتیبانی از محاسبات موازی می‌شد تا از توان C.mmp به‌خوبی بهره‌برداری شود. کامپایلر ALGOL به‌صورت بومی بر روی سیستم‌عامل Hydra اجرا می‌شد.

## '''قابلیت اطمینان'''
از آن‌جا که قابلیت اطمینان کلی سامانه به فعال بودن هر ۱۶ پردازنده وابسته بود، مشکلات جدی در قابلیت اطمینان سخت‌افزاری وجود داشت. اگر میانگین زمان بین خرابی‌ها (MTBF) برای یک پردازنده ۲۴ ساعت بود، قابلیت اطمینان کلی سیستم برابر با ۱۶/۲۴ ساعت، یعنی حدود ۴۰ دقیقه می‌شد. در عمل، سامانه معمولاً بین دو تا شش ساعت به‌طور پیوسته کار می‌کرد.

بسیاری از این خرابی‌ها ناشی از ناپایداری‌های زمانی در مدارهای سفارشی متعددی بود که به پردازنده‌ها افزوده شده بودند. تلاش فراوانی برای بهبود قابلیت اطمینان سخت‌افزار صورت گرفت. هنگامی که یک پردازنده به‌طور محسوسی دچار خرابی می‌شد، از مجموعهٔ پردازنده‌ها جدا می‌گردید و برای چند ساعت آزمون‌های عیب‌یابی را اجرا می‌کرد. پس از گذراندن نخستین مرحلهٔ آزمون‌ها، آن پردازنده به‌عنوان پردازندهٔ ورودی/خروجی به سیستم بازگردانده می‌شد و کدهای کاربردی را اجرا نمی‌کرد (اما تجهیزات جانبی آن دوباره در دسترس قرار می‌گرفتند) و همچنان به اجرای آزمون‌ها ادامه می‌داد. اگر پس از چند ساعت دیگر این آزمون‌ها نیز با موفقیت طی می‌شد، پردازنده دوباره به‌عنوان عضو کامل مجموعهٔ پردازنده‌ها فعال می‌گردید.

به‌طور مشابه، اگر یک بلوک حافظه (یک صفحه) معیوب تشخیص داده می‌شد، از مجموعهٔ صفحات در دسترس حذف می‌گردید و تا اطلاع ثانوی، سیستم‌عامل آن صفحه را نادیده می‌گرفت. بدین ترتیب، سیستم‌عامل Hydra به نمونه‌ای اولیه از سامانه‌های تحمل‌پذیر در برابر خطا تبدیل شد که قادر بود با مشکلات اجتناب‌ناپذیر سخت‌افزاری مقابله کند.

## منابع

رده:مقاله‌های ایجادشده توسط ایجادگر
رده:سامانه‌های قابلیتی
رده:تاریخ علم رایانه و محاسبات
رده:رایانش موازی