حافظه مشترک و سازگاری
معماری حافظه مشترک به چندین پردازنده اجازه میدهد تا روی یک فضای آدرس مشترک عمل کنند؛ مدل سازگاری حافظه، ترتیبی را تعریف میکند که عملیات حافظه یک پردازنده برای سایرین قابل مشاهده میشود، که قرارداد برنامههای موازی بر آن تکیه دارند.
Definition
مدل سازگاری حافظه، مشخصات ترتیبهای مجاز خواندن و نوشتن حافظه در میان پردازندهها در یک سیستم حافظه مشترک است که مقادیری را که یک بارگذاری ممکن است برگرداند و در نتیجه قرارداد بین سختافزار و نرمافزار همزمان را تعریف میکند.
Scope
این موضوع چندپردازشی حافظه مشترک و به طور مرکزی، مدلهای سازگاری حافظه را پوشش میدهد: سازگاری ترتیبی، مدلهای آرام و ضعیف، حصارهای حافظه، و رابطه بین سازگاری و انسجام. همچنین اصول اولیه همگامسازی را که بر مدل سازگاری تکیه دارند، پوشش میدهد. این موضوع شامل مکانیسم انسجام هر مکان (پروتکلهای انسجام کش) و یکپارچهسازی هستهها در سطح تراشه (چند هستهای و چندپردازندههای تراشهای) نمیشود.
Core questions
- برنامههای موازی ممکن است چه ترتیبی از عملیات حافظه را فرض کنند؟
- سازگاری ترتیبی چه تفاوتی با مدلهای سازگاری آرام دارد؟
- چرا مدلهای آرام وجود دارند و چگونه حصارهای حافظه ترتیب مورد نیاز را بازیابی میکنند؟
- چگونه انسجام و سازگاری با هم رفتار صحیح حافظه مشترک را تعریف میکنند؟
Key concepts
- فضای آدرس مشترک
- مدل سازگاری حافظه
- سازگاری ترتیبی
- سازگاری آرام و ضعیف
- حصارها و موانع حافظه
- سازگاری در مقابل انسجام
- اصول اولیه همگامسازی
- رقابت دادهها
Key theories
- سازگاری ترتیبی
- سازگاری ترتیبی لامپورت ایجاب میکند که نتیجه اجرا به گونهای باشد که گویی عملیات همه پردازندهها در یک ترتیب جهانی واحد که ترتیب برنامه هر پردازنده را رعایت میکند، در هم آمیخته شدهاند؛ این مفهوم شهودی است اما بهینهسازی سختافزار را محدود میکند و به مدلهای آرام انگیزه میدهد.
Mechanisms
سختافزار برای افزایش عملکرد، عملیات حافظه را بازآرایی و بافر میکند، بنابراین مدل سازگاری مشخص میکند که کدام بازآراییها برای سایر پردازندهها قابل مشاهده هستند. سازگاری ترتیبی، بازآرایی قابل مشاهده در میان پردازندهها را ممنوع میکند؛ مدلهای آرام برای سرعت بخشیدن به برخی بازآراییها اجازه میدهند و از برنامهنویسان میخواهند که برای اعمال ترتیب در جایی که لازم است، حصارهای حافظه را وارد کنند. اصول اولیه همگامسازی مانند قفلها و عملیات اتمی بر اساس این تضمینها ساخته شدهاند و برنامههایی که از رقابت دادهها اجتناب میکنند، قابل پیشبینی عمل میکنند.
Clinical relevance
مدل سازگاری حافظه، اساس برنامهنویسی همزمان صحیح است: این مدل تعیین میکند که یک برنامه چندنخی (multithreaded) چه چیزی را ممکن است به طور مشروع در مورد قابلیت مشاهده و ترتیب بهروزرسانیهای مشترک فرض کند. سوءتفاهم در مورد آن باعث ایجاد اشکالات ظریف و دشوار برای بازتولید میشود، و مدلهای حافظه زبان (مانند C++ و Java) مستقیماً بر این مفاهیم سختافزاری بنا شدهاند.
History
لامپورت سازگاری ترتیبی را در سال ۱۹۷۹ رسمی کرد. با افزایش تهاجمیتر شدن سختافزار در بازآرایی دسترسیهای حافظه برای عملکرد، مدلهای سازگاری آرام در دهههای ۱۹۸۰ و ۱۹۹۰ در معماریها گسترش یافتند، که منجر به تلاش برای تعریف و کنترل آنها و در نهایت، ارائه مدلهای حافظه مشخص و دقیق به زبانهای برنامهنویسی شد.
Debates
- سازگاری قوی در مقابل سازگاری آرام
- مدلهای قوی مانند سازگاری ترتیبی آسانتر قابل استدلال هستند اما عملکرد سختافزار را محدود میکنند، در حالی که مدلهای آرام امکان بهینهسازی را به قیمت پیچیدگی برنامهنویس فراهم میکنند؛ این حوزه همچنان در حال تعادل بین معناشناسی شهودی و کارایی از طریق مدلها و حصارهای دقیقاً مشخص شده است.
Key figures
- Leslie Lamport
- Sarita Adve
- Mark D. Hill
- David E. Culler
Related topics
Seminal works
- hennessy2019
- culler1999
Frequently asked questions
- تفاوت بین انسجام و سازگاری چیست؟
- انسجام تضمین میکند که همه پردازندهها در نهایت بر روی مقدار هر مکان حافظه منفرد توافق میکنند و نوشتنها را به ترتیبی منطقی مشاهده میکنند. سازگاری، ترتیب عملیات را در مکانهای مختلف که توسط پردازندههای مختلف مشاهده میشود، کنترل میکند. یک مدل سازگاری، انسجام را پیشفرض میگیرد و قوانین ترتیبدهی بین مکانها را اضافه میکند.
- چرا پردازندهها از مدلهای حافظه آرام استفاده میکنند؟
- ترتیبدهی سختگیرانه، سختافزار را مجبور میکند تا از بافرینگ و بازآرایی که تأخیر حافظه را پنهان میکنند، صرفنظر کند و به عملکرد آسیب برساند. مدلهای آرام به سختافزار اجازه میدهند آزادانه بهینهسازی کند و به برنامهنویسان حصارهای صریح میدهند تا ترتیبدهی را فقط در جایی که صحت ایجاب میکند، اعمال کنند.