انسجام کش: هماهنگ نگه‌داشتن چند هسته درباره حافظه

وقتی چند هسته پردازنده هرکدام کش خصوصی خودشان را دارند اما همان حافظه زیربنایی را به اشتراک می‌گذارند، یک مسئله جدی از نظر درستی پدیدار می‌شود: هسته‌های مختلف می‌توانند در نهایت دیدگاه‌های متناقضی از همان مکان حافظه داشته باشند. این مقاله توضیح می‌دهد انسجام کش یعنی چه، چرا در سیستم‌های چندهسته‌ای ضروری می‌شود، و پروتکل‌های مبتنی بر snooping چگونه داده کش‌شده هر هسته را سازگار نگه می‌دارند.

انسجام کشکشینگ چندهسته‌ایپروتکل Snooping

~4 دقیقه مطالعه · آخرین به‌روزرسانی ۱۵ شهریور ۱۴۰۵

مسئله: چند کش خصوصی، یک حافظه مشترک

در یک پردازنده چندهسته‌ای، که پیش‌تر در این مجموعه به‌عنوان بخشی از گذار از هسته‌های تک‌سریع بحث شد، هر هسته معمولاً کش خصوصی خودش را برای سرعت دارد. این خطر ظریفی ایجاد می‌کند: اگر دو هسته هر دو یک کپی از همان مکان حافظه را کش کنند، و یک هسته کپی خودش را به‌روزرسانی کند، کپی کش‌شده هسته دیگر بدون هیچ نشانه‌ای از تغییر، قدیمی می‌شود.

کش هسته ۱: مقدار X = 10
کش هسته ۲: مقدار X = 10 (همان مقدار، جداگانه کش‌شده)

هسته ۱ مقدار X را در کش خودش به ۲۰ به‌روزرسانی می‌کند
کش هسته ۲ همچنان X = 10 را نشان می‌دهد (قدیمی، نادرست)

انسجام کش چه چیزی را تضمین می‌کند

Cache Coherence ویژگی‌ای است که تضمین می‌کند هر هسته یک دید سازگار و درست از حافظه مشترک می‌بیند، با وجود اینکه هر هسته کش خصوصی خودش را دارد. یک سیستم منسجم باید تضمین کند نوشتن توسط یک هسته در نهایت برای همه هسته‌های دیگر قابل‌مشاهده می‌شود، و اینکه هسته‌های مختلف هرگز به‌طور دائم درباره مقدار همان مکان حافظه اختلاف‌نظر ندارند.

پروتکل‌های Snooping چگونه این مسئله را حل می‌کنند

یک رویکرد رایج مورد استفاده برای حفظ انسجام Snooping نامیده می‌شود، جایی که هر کش یک باس ارتباطی مشترک را برای عملیات‌های حافظه انجام‌شده توسط هسته‌های دیگر نظارت می‌کند، یا "snoop" می‌کند. وقتی یک هسته به یک مکان حافظه می‌نویسد، هر کش دیگر بررسی می‌کند آیا او نیز یک کپی از همان مکان را نگه می‌دارد، و اگر چنین باشد، اقدام اصلاحی انجام می‌دهد، یا کپی خودش را به‌روزرسانی می‌کند یا آن را کاملاً باطل می‌کند، بسته به پروتکل خاص مورد استفاده.

حالت‌های رایج سبک MESI

یک خانواده به‌طور گسترده استفاده‌شده از پروتکل‌های انسجام، هر بلوک کش‌شده را با استفاده از مجموعه کوچکی از حالت‌ها ردیابی می‌کند، و ردیابی می‌کند آیا ممکن است با کش‌های دیگر مشترک باشد و آیا تغییر کرده است.

  • Modified: این کش تنها کپی معتبر را نگه می‌دارد، و از زمانی که از حافظه خوانده شده تغییر کرده است.
  • Shared: این کش کپی‌ای را نگه می‌دارد که ممکن است در کش‌های دیگر نیز، بدون تغییر، موجود باشد.
  • Invalid: کپی این کش دیگر معتبر نیست و باید پیش از استفاده دوباره واکشی شود.

وقتی یک هسته به بلوکی که در حال حاضر shared علامت‌گذاری شده می‌نویسد، یک ابطال پخش می‌کند، که باعث می‌شود هر کش دیگری که آن بلوک را نگه می‌دارد آن را به invalid تغییر دهد، و تضمین می‌کند هیچ هسته دیگری نمی‌تواند به خواندن یک مقدار قدیمی ادامه دهد.

چرا این مسئله با هسته‌های بیشتر سخت‌تر می‌شود

با افزایش تعداد هسته‌ها، پخش هر پیام مرتبط با انسجام به هر کش دیگر از نظر ترافیک باس و توان به‌طور فزاینده گران می‌شود. این چالش بخشی از دلیلی است که چرا طراحی پروتکل‌های انسجام برای سیستم‌هایی با تعداد بسیار زیاد هسته یک حوزه پژوهشی قابل‌توجه و در حال انجام در معماری پردازنده است، که نیازمند جایگزین‌های مقیاس‌پذیرتر برای snooping ساده مبتنی بر پخش است.

چرا انسجام برای برنامه‌های موازی درست اهمیت دارد

بدون انسجام کش، نوشتن نرم‌افزار چندرشته‌ای درست به‌طور چشمگیری سخت‌تر خواهد بود، چون یک برنامه‌نویس باید صراحتاً مدیریت کند چه زمانی داده در سراسر هسته‌های مختلف قابل‌مشاهده می‌شود. سخت‌افزار انسجام این را به‌طور شفاف مدیریت می‌کند، و اجازه می‌دهد عناصر پایه همگام‌سازی که پیش‌تر در این مجموعه بحث شد، مانند دستورات اتمیک، روی یک سیستم حافظه که از دیدگاه برنامه‌نویس طوری رفتار می‌کند که گویی فقط یک حافظه یکپارچه واحد وجود دارد نه چند کش جداگانه، به‌درستی کار کنند.

نوشته و پژوهش‌شده توسط دکتر شاهین صیامی

مقالات مرتبط

تصورات غلط رایج درباره محاسبات موازی و درس‌های نهایی کتاب

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

ادامه

واقعیت‌های عملی: بنچمارک CPU در مقابل GPU و ضرب ماتریس چندپردازنده‌ای

مقایسه منصفانه یک CPU و یک GPU نیازمند مدلی است که هم توان عملیاتی محاسباتی و هم محدودیت‌های پهنای باند حافظه را با هم در نظر بگیرد. این مقاله مدل roofline مورد استفاده برای مقایسه سخت‌افزار واقعی مانند Intel Core i7 و NVIDIA Tesla GPU را معرفی می‌کند، سپس نشان می‌دهد ضرب ماتریس چگونه در سراسر چند پردازنده تسریع می‌شود، به‌عنوان کاربرد عملی نهایی مفاهیم موازی این فصل.

ادامه

بنچمارک کردن چندپردازنده‌ها و مدل‌سازی کارایی موازی

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

ادامه

شبکه‌سازی کلاستر: ارتباط با دنیای بیرون

یک کلاستر از ماشین‌ها فقط زمانی مفید است که بتواند به‌طور کارآمد هم داخلی و هم با دنیای بیرون ارتباط برقرار کند. این مقاله لایه‌های شبکه‌سازی درگیر در ارتباط کلاستر، مبادلات بین تأخیر و پهنای باند در مقیاس، و اینکه کلاسترها چگونه به شبکه‌های خارجی و کاربران متصل می‌شوند را پوشش می‌دهد.

ادامه

کلاسترها، کامپیوترهای در مقیاس انبار، و توپولوژی‌های شبکه

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

ادامه

مقدمه‌ای بر GPU: موازی‌سازی عظیم برای بارهای کاری سنگین از نظر داده

یک GPU ایده SIMD که پیش‌تر در این مجموعه پوشش داده شد را به یک مقیاس افراطی می‌برد، و هزاران رشته سبک را به‌طور هم‌زمان اجرا می‌کند تا حجم عظیمی از داده مستقل را پردازش کند. این مقاله توضیح می‌دهد چرا GPU ها از نظر معماری این‌قدر با CPU متفاوت‌اند، مدل اجرای رشته آن‌ها چگونه کار می‌کند، و چه نوع بارهای کاری بیشترین بهره را از این طراحی می‌برند.

ادامه