پروتکلهای انسجام کش
پروتکلهای انسجام کش، کشهای خصوصی متعدد را در یک ریزپردازنده چندپردازندهای با حافظه مشترک، سازگار نگه میدارند و اطمینان میدهند که وقتی یک هسته یک مکان حافظه را مینویسد، هستههای دیگر به خواندن نسخههای کششده قدیمی ادامه نمیدهند.
Definition
پروتکل انسجام کش مکانیزمی است که با ردیابی وضعیت هر بلوک کششده و هماهنگسازی خواندن و نوشتن، دیدگاه منسجمی از حافظه مشترک را در سراسر کشهای خصوصی چندین پردازنده حفظ میکند تا یک عمل نوشتن قابل مشاهده شود و از نسخههای قدیمی استفاده نشود.
Scope
این موضوع به مشکل انسجام و راهحلهای آن میپردازد: پروتکلهای ابطال در مقابل بهروزرسانی، پروتکلهای استراق سمع (snooping) در گذرگاه مشترک، پروتکلهای مبتنی بر دایرکتوری برای سیستمهای مقیاسپذیر، و ماشینهای حالت متعارف مانند MSI و MESI. این موضوع نحوه حفظ دیدگاه منسجم حافظه در سراسر کشها توسط سختافزار را بررسی میکند. این موضوع شامل ترتیب عملیات در آدرسها (سازگاری حافظه، تحت حافظه مشترک و انسجام) و سیاستهای تککش (سازماندهی و سیاستهای کش) نمیشود.
Core questions
- انسجام کشها به چه معناست و چرا به انسجام نیاز است؟
- پروتکلهای ابطال و بهروزرسانی چه تفاوتی با هم دارند؟
- پروتکلهای استراق سمع چگونه از یک اتصال مشترک برای حفظ انسجام استفاده میکنند؟
- پروتکلهای دایرکتوری چگونه انسجام را فراتر از یک گذرگاه مشترک مقیاسپذیر میکنند؟
Key concepts
- مشکل انسجام
- پروتکلهای ابطال در مقابل بهروزرسانی
- پروتکلهای استراق سمع
- پروتکلهای مبتنی بر دایرکتوری
- حالتهای MSI و MESI
- گذرگاه و اتصال مشترک
- اشتراکگذاری کاذب
- سریالسازی نوشتن
Key theories
- انسجام مبتنی بر حالت (MSI/MESI)
- هر بلوک کششده در مجموعهای کوچک از حالتها (مانند اصلاحشده، انحصاری، مشترک، نامعتبر) ردیابی میشود؛ خواندن و نوشتن باعث انتقال حالت و پیامهای انسجام میشود که اطمینان میدهد حداکثر یک نویسنده وجود دارد و خوانندگان هرگز دادههای قدیمی را نمیبینند.
Mechanisms
هر بلوک کش دارای یک وضعیت انسجام است. در پروتکلهای استراق سمع، هر کش تراکنشهای گذرگاه را مشاهده (استراق سمع) میکند و نسخههای خود را بر این اساس بهروزرسانی یا باطل میکند؛ در پروتکلهای دایرکتوری، یک دایرکتوری ثبت میکند که کدام کشها هر بلوک را نگه میدارند و پیامهای انسجام هدفمند را ارسال میکند. یک عمل نوشتن در یک بلوک مشترک ابتدا نسخههای دیگر را باطل میکند (در یک پروتکل ابطال)، و قبل از تغییر دادهها، مالکیت انحصاری را به نویسنده میدهد.
Clinical relevance
انسجام، چندپردازش با حافظه مشترک را قابل برنامهریزی میکند: نرمافزار میتواند حافظه را به عنوان یک مخزن مشترک واحد در نظر بگیرد در حالی که سختافزار وجود کشهای متعدد را پنهان میکند. با این حال، ترافیک انسجام و اثراتی مانند اشتراکگذاری کاذب (false sharing) میتوانند عملکرد را در برنامههای موازی تحت تأثیر قرار دهند، بنابراین آگاهی از انسجام برای نرمافزارهای چندنخی مقیاسپذیر مهم است.
History
پروتکلهای انسجام با چندپردازندههای مبتنی بر گذرگاه در دهه 1980 ظهور کردند، جایی که طرحهای استراق سمع مانند write-invalidate و خانواده MESI استاندارد شدند. با مقیاسپذیری سیستمها فراتر از یک گذرگاه واحد، پروتکلهای مبتنی بر دایرکتوری برای حافظه مشترک توزیعشده توسعه یافتند، و انسجام همچنان یک مشکل طراحی مرکزی در پردازندههای چند هستهای است.
Debates
- انسجام استراق سمع در مقابل انسجام دایرکتوری
- استراق سمع در سیستمهای کوچک با گذرگاه مشترک ساده و سریع است اما مقیاسپذیر نیست، در حالی که دایرکتوریها با هزینه پیچیدگی و ذخیرهسازی به هستههای زیادی مقیاسپذیر هستند؛ طراحیهای بزرگ اغلب رویکردهای سلسلهمراتبی یا ترکیبی را ترکیب میکنند.
Key figures
- David E. Culler
- Mark D. Hill
- James R. Goodman
- John L. Hennessy
Related topics
Seminal works
- hennessy2019
- culler1999
Frequently asked questions
- تفاوت بین انسجام و سازگاری چیست؟
- انسجام مربوط به یک مکان حافظه واحد است: همه کشها باید در نهایت بر سر مقدار آن توافق کنند و نوشتنها را به ترتیب مشاهده کنند. سازگاری (مدل سازگاری حافظه) مربوط به ترتیب عملیات در مکانهای مختلف است که توسط پردازندههای مختلف مشاهده میشود. انسجام برای یک مدل سازگاری خوشتعریف ضروری است اما کافی نیست.
- اشتراکگذاری کاذب چیست؟
- اشتراکگذاری کاذب زمانی رخ میدهد که متغیرهای مستقل مورد استفاده توسط هستههای مختلف به طور تصادفی در یک بلوک کش قرار گیرند. از آنجا که انسجام در سطح بلوک عمل میکند، نوشتنها توسط یک هسته، بلوک را در هستههای دیگر باطل میکند، حتی اگر آنها متغیرهای متفاوتی را لمس کنند، که باعث ترافیک انسجام بیمورد و کاهش سرعت میشود.