انجسام مبتنی بر دایرکتوری
انسجام مبتنی بر دایرکتوری مکانیزمی برای رسیدگی به مشکل انسجام حافظه کش در حافظه مشترک توزیع شده (DSM) است. دسترسی به حافظه غیر یکنواخت (NUMA). راه محبوب دیگر،استفاده از نوع خاصی از گذرگاه کامپیوتری بین همه گره ها به عنوان یک "گذرگاه مشترک" است (معروف به گذرگاه سیستم ).انسجام مبتنی بر دایرکتوری از یک دایرکتوری ویژه برای خدمت کردن به جای گذرگاه مشترک در پروتکل های انسجام مبتنی بر گذرگاه استفاده می کند. هر دوی این طرح ها از رسانه مربوطه (مثل دایرکتوری یا گذرگاه) به عنوان ابزاری برای تسهیل ارتباط بین گره های مختلف استفاده می کنند و تضمین می کنند که پروتکل انسجام در تمام گره های ارتباطی به خوبی کار می کند. در انسجام کش مبتنی بر دایرکتوری، این کار با استفاده از این دایرکتوری برای پیگیری وضعیت همه بلوک های کش انجام می شود، وضعیت هر بلوک شامل این است که آن بلوک در کدام حالت انسجام حافظه نهان قرار دارد و کدام گرهها آن بلوک را در آن زمان به اشتراک میگذارند که با استفاده از آن می توان نیازی به پخش تمام سیگنال ها به همه گره ها را از بین برد و آن را فقط به گره هایی که به این تک بلوک علاقه مند هستند ارسال کرد.
در زیر چند تا از مزایا و معایب پروتکل انسجام حافظه کش مبتنی بر دایرکتوری آورده شده است:
- مقیاس پذیری : این یکی از قوی ترین انگیزه ها برای رفتن به طراحی های مبتنی بر دایرکتوری است. منظور ما از مقیاس پذیری ، به طور خلاصه، این است که یک سیستم خاص تا چه اندازه در رسیدگی به حجم فزاینده کاری که مسئول انجام آن است، خوب است. برای این معیار، سیستم های مبتنی بر گذرگاه به دلیل محدودیت های ایجاد شده در هنگام داشتن یک گذرگاه مشترک که همه گره ها به طور همزمان از آن استفاده می کنند، نمی توانند به خوبی عمل کنند. برای تعداد نسبتاً کمی از گره ها، سیستم های گذرگاه می توانند به خوبی عمل کنند. با این حال، در حالی که تعداد گره ها در حال افزایش است، ممکن است برخی از مشکلات در این زمینه رخ دهد. به خصوص که تنها یک گره مجاز به استفاده از گذرگاه در یک زمان است که به طور قابل توجهی به عملکرد سیستم کلی آسیب می رساند. از سوی دیگر، با استفاده از سیستم های مبتنی بر دایرکتوری، چنین تنگنایی برای محدود کردن مقیاس پذیری سیستم وجود نخواهد داشت.
- سادگی : این یکی از نکاتی است که سیستم گذرگاه در آن برتری دارد. از آنجایی که ساختار گذرگاه،خود می تواند به عنوان یک سازمان دهنده برای تمام ترافیکی که از طریق سیستم می گذرد،عمل کند و از اتمی بودن همه سیگنال های عبوری اطمینان حاصل کند. بنابراین، نیازی به تلاش بیشتر برای اطمینان از اتمی بودن و ترتیب بین سیگنال ها مانند سیستم های مبتنی بر دایرکتوری وجود نخواهد داشت، که منجر به چندین سربار در طراحی سیستم بعدی هنگام رسیدگی به مسائلی مانند سازگاری می شود.
با توجه به بحث فوق، واضح است که استفاده از سیستم های مبتنی بر گذرگاه برای سیستم های نسبتا کوچک جذاب تر به نظر می رسد. با این حال، سیستمهای مبتنی بر دایرکتوری زمانی حیاتی میشوند که مقیاس سیستم و تعداد گرهها افزایش یابد. بنابراین هنگام مقایسه بین طرح های انسجام حافظه کش مبتنی بر دایرکتوری و مبتنی بر گذرگاه یک نوع تجارت کردن وجود دارد.
تاریخ[ویرایش]
ایده سیستم های انسجام کش مبتنی بر دایرکتوری مدت ها پیش آغاز شد.
ایده DASH (معماری دایرکتوری برای حافظه مشترک) اولین بار توسط C.K. Tang [۱] در اواسط دهه 1970 ارائه شد. با این حال، استفاده از آن برای انسجام حافظه کش چند سال بعد، به ویژه در سال 1978، زمانی که محققان دانشگاه استنفورد اولین نسخه از این سیستم های انسجام را به نام Stanford DASH پیشنهاد کردند، در مقاله ای [۲] که این سیستم را با مشکلات و پیشرفت ها با چنین طرح هایی توصیف می کرد،ارائه شد. در کنار این رویکرد، چندین تلاش برای ارائه یک سیستم مقیاس پذیر انجام شد. به عنوان مثال، BBN Butterfly [۳] که در سال 1985 و IBM PR3 [۴] که در سال 1987 معرفی شدند، نمونه هایی از سیستم های چند پردازنده ای مقیاس پذیر هستند. با این حال، هر دوی این سیستم ها دارای یک ایراد هستند. برای مثال، BBN Butterfly حافظه کش ندارد. به طور مشابه، IBM PR3 انسجام کش سختافزاری را ارائه نمیکند، که عملکرد هر دوی این طرحها را محدود میکند، بهویژه زمانی که از پردازندههای با کارایی بالا استفاده میشود. [۵]
محدودیتهای سایر رقبا انتخاب سیستمهای مبتنی بر DASH را هنگام طراحی سیستمهای انسجام حافظه کش و سایر سیستمهایی که نیاز به مقیاس پذیری در گرههای مبتنی بر حافظه کش دارند، آسانتر کرده است. در سال 1985، جیمز آرچیبالد [۶] و ژان لوپ بائر از دانشگاه واشنگتن مقاله [۷] ای منتشر کردند که یک تنوع اقتصادی تر، قابل گسترش و مدولارتر از رویکرد "دایرکتوری جهانی" از نظر استفاده از سخت افزار در طرح را پیشنهاد میکردند.
در سال 1992، دانیل لنوسکی از دانشگاه استنفورد مقاله ای [۸] منتشر کرد که در آن پیشرفت هایی در پروتکل های انسجام حافظه کش برای سیستم های مبتنی بر دایرکتوری ارائه کرده بود. در مقاله ای در سال 1996، او طراحی SGI Origin 2000 را معرفی کرد ، خانواده ای از رایانه های سرور که انسجام حافظه کش مبتنی بر دایرکتوری را بکار میبرند.متعاقبا Origin 3000 [۹] در جولای 2000 معرفی شد.
دستورالعمل ها[ویرایش]
برخلاف پروتکل های انسجام اسنوپی ، در یک رویکرد انسجام مبتنی بر دایرکتوری، اطلاعات مربوط به اینکه کدام حافظه های کش دارای یک کپی از یک بلوک هستند در ساختاری به نام Directory نگهداری می شوند. در یک طرح مبتنی بر دایرکتوری، کش های شرکت کننده تقاضاها را به تمام حافظه های کش مشترک دیگر بلوک به منظور مکان یابی نسخه های کش شده ارسال نمی کنند، در عوض از دایرکتوری تقاضا می کند تا اطلاعات مربوط به اینکه کدام بلوک دارای نسخه های کش شده است را بازیابی کند و فقط به آن پردازنده های خاص ارسال می کند و از این رو صرفه جویی در ترافیک نسبت به دستورالعمل اسنوپی بیشتر است. در برنامههای بهینهسازی شده، بیشتر اشتراکگذاری دادهها فقط برای دادههایی است که صرفا خوانده میشوند، و اشتراکگذاری کمی برای دادههایی که مکررا خوانده و نوشته میشوند، وجود دارد. یک رویکرد دایرکتوری می تواند منجر به صرفه جویی قابل توجهی در ترافیک نسبت به رویکرد پخش / اسنوپی در چنین برنامه هایی شود.
همانطور که در نمودار جریان داده نشان داده شده است، عملگر هایی که در یک سیستم حافظه مشترک توزیع شده که پروتکل انسجام مبتنی بر دایرکتوری را پیاده سازی می کند،درگیر هستند عبارتند از:
- گره درخواست کننده : این گره پردازنده ای است که برای خواندن/نوشتن یک بلوک حافظه درخواست می کند.
- گره دایرکتوری : این گره اطلاعات وضعیت هر بلوک کش را در سیستم حفظ می کند و درخواست کننده درخواست های خود را به گره دایرکتوری هدایت می کند.
- گره مالک: یک گره مالک،وضعیت اخیر بلوک کش را در اختیار دارد، توجه داشته باشید که دایرکتوری ممکن است همیشه با آخرین داده ها به روز نباشد.
- گره اشتراک گذار: یک یا چند گره که یک کپی از بلوک کش را به اشتراک میگذارند.
گره های متقاضی و مالک انتقال حالت خود را مشابه پروتکل های انسجام اسنوپی مثل پروتکل MESI حفظ می کنند. با این حال، برخلاف پیادهسازی مبتنی بر گذرگاه که گرهها با استفاده از یک گذرگاه مشترک ارتباط برقرار می کنند، پیادهسازی مبتنی بر دایرکتوری از مدل ارسال پیام برای تبادل اطلاعات مورد نیاز برای حفظ انسجام حافظه کش استفاده می کنند.
گره دایرکتوری به عنوان یک مرحله مرتب سازی عمل می کند و تمام ارتباطات از طریق این گره جهت حفظ صحت و درستی هدایت می شوند.
گره دایرکتوری[ویرایش]
یک گره دایرکتوری حالت کلی یک بلوک حافظه کش را در کل سیستم حافظه کش برای تمامی پردازنده ها دنبال می کند. می تواند سه وضعیت داشته باشد :
- کش نشده (U): هیچ پردازنده ای داده های ذخیره شده در حافظه کش را ندارد، حافظه به روز است.
- به اشتراک گذاشته شده(S) : یک یا چند پردازنده دارای دادههای ذخیره شده در حافظه کش هستند، حافظه بهروز است. در این حالت دایرکتوری و اشتراکگذاران یک کپی تمیز از بلوک کش دارند.
- انحصاری/اصلاح شده (EM): یک پردازنده (مالک) داده های ذخیره شده در حافظه کش را دارد; حافظه قدیمی.توجه داشته باشید که دایرکتوری نمی تواند بلوک کشی را که در یک حالت انحصاری یا تغییر یافته در پردازنده است، تشخیص دهد زیرا پردازنده ها می توانند بدون هیچ تراکنش گذرگاهی از حالت انحصاری به حالت اصلاح شده منتقل شوند.
توضیح درباره ماشین حالت محدود جابجایی وضعیت دایرکتوری (به تصویر 1 مراجعه کنید) در جدول زیر نشان داده شده است:
حالت اولیه | درخواست گذرگاه | پاسخ / اقدام | حالت جدید |
---|---|---|---|
U | BusRd یا
BusRdX |
|
EM |
EM | BusRd |
|
S |
BusRdX |
|
- | |
S | BusRd |
|
- |
BusRdX |
|
EM | |
BusUpgr |
|
EM |
علاوه بر وضعیت حافظه کش، یک دایرکتوری باید پیگیری کند که کدام پردازنده ها هنگامی که در حالت اشتراکی هستند،داده دارند. این برای ارسال درخواستهای باطل سازی و مداخله به حافظههای کش پردازنده منحصر به فردی که بلوک کش در وضعیت اشتراکگذاری شده دارد، لازم است. تعداد کمی از رویکردهای پیاده سازی رایج عبارتند از:
- بردار بیت کامل : یک رشته بیت برای هر پردازنده در گره دایرکتوری نگهداری می شود. سربار ذخیره سازی با تعداد پردازنده ها مقیاس می شود.
- اشاره گر محدود: در این رویکرد، اطلاعات دایرکتوری تعداد محدودی از بلوک ها در دایرکتوری نگهداری می شود تا سربار ذخیره سازی کاهش یابد.
لطفاً توجه کنید که دستوالعملی که در بالا توضیح داده شد، پیادهسازی پایه ای است و وضعیت رقابتی ممکن است رخ دهد به این دلیل که دایرکتوری میتواند با حافظه های کش همگام نباشد و همچنین پیامها میان پردازندهها ممکن است همپوشانی داشته باشند. پیاده سازی های پیچیده تری مانند رابط منسجم مقیاس پذیر که دارای چندین وضعیت است وجود دارند.
DASH [۲] ،دستورالعمل انسجام کش،دستورالعمل دیگری است که از طرح انسجام مبتنی بر دایرکتوری استفاده می کند. دستورالعمل DASH رویکردی خوشه ای را استفاده می کند، جایی که پردازنده های داخل یک خوشه با بهره گیری از طرح ردیابی مبتنی بر گذرگاه،منسجم نگه داشته می شوند، در حالی که خوشه ها در یک رویکرد دایرکتوری به هم متصل هستند. اگرچه پروتکلهای مختلف از پیادهسازیهای متفاوتی برای دنبال کردن بلوکهای حافظه کش استفاده میکنند، اما مفهوم دایرکتوری یکسان باقی میماند.
همچنین ببینید[ویرایش]
منابع[ویرایش]
This article "انجسام مبتنی بر دایرکتوری" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:انجسام مبتنی بر دایرکتوری. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.
- ↑ Tang, C.K. "Cache system design in the tightly coupled multiprocessor system". AFIPS '76 Proceedings of the June 7–10, 1976, National Computer Conference and Exposition.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ ۲٫۰ ۲٫۱ "The Directory-Based Cache Coherence Protocol for the DASH Multiprocessor" (PDF). Computer Systems Laboratory.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ Schmidt, G.E. "The Butterfly Parallel Processor". In Proc. Of ICS.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "The IBM research parallel processor prototype PR3: Introduction and architicture". In Proceeding of the 1985 International Conference of Parallel Processing.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "Design of Scalable Shared-Memory Multiprocessors: The DASH approach". Computer System Laboratory, Stanford University.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "James Archibald". ece.byu.edu. Retrieved 2016-11-15.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "An economical solution to the cache coherence problem". ISCA '84 Proceedings of the 11th Annual International Symposium on Computer Architecture.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ خطای لوآ در پودمان:Citation/CS1/en/Identifiers در خط 47: attempt to index field 'wikibase' (a nil value).
- ↑ Corp., Silicon Graphics International. "Support Home Page". support1-sgi.custhelp.com. Retrieved 2016-11-16.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.