TGViewer
محفل Buddy محفل Buddy @buddy_stuff · 192 subscribers
Post #466 187
Cache Coherency و False Sharing
مفاهیم پرفورمنس در سیستم های Multithreaded


تو پردازنده های مدرن، هر هسته برای دسترسی سریع تر به داده ها از L1/L2 Cache اختصاصی خودش استفاده میکنه. برای این که مطمئن بشن مقدار یک متغیر تو کش همه هسته ها همگامه، از پروتکل هایی مثل MESI استفاده میشه. نکته اینجاست که پردازنده متغیرهارو تک تک کش نمیکنه، بلکه کل یک بلوک حافظه (معمولا 64 bit) تحت عنوان Cache Line رو جابه جا میکنه.

False Sharing
زمانی اتفاق می افته که دو ترد مجزا روی دو هسته مختلف، با متغیرهای کاملا متفاوتی کار میکنن اما این متغیرها به صورت تصادفی تو یک Cache Line مشترک در حافظه قرار بگیرن. هر بار که هسته A متغیر خودش رو مینویسه، کل لاین کش رو invalidate میکنه و هسته B مجبور میشه کل خط رو دوباره لود کنه. نتیجه؟ افت وحشتناک پرفورمنس به خاطر Cache Thrashing، بدون این که حتی یک Race Condition واقعی داشته باشید.

حلش معمولا با Data Alignment و Padding انجام میشه (مثل تابع alignas(64) در C++)

@Buddy_R
  • ❤ 1
More from @buddy_stuff
  1. Sep 27, 2026آخرش هیچکی تست نکرد خودم گوشیمو پکوندم تو اینجور موارد که میخواید رام عوض کنید یا قراره دی…
  2. Sep 27, 2026Don't Xpose Me اولین نسخه رسمی اپلیکیشنم منتشر شد پین دوم رو گوشیتون ست میکنید، اگه به زور…
  3. Sep 27, 2026دوستان یکی اینو روی یه دیوایس واقعی میتونه تست کنه نتیجشو بگه؟ @Buddy_R
  4. Sep 23, 2026امروز اولین روز کاری من به عنوان یه معلم تو مدرسه راهنمایی بود راستشو بخوام بگم خیلی روم ت…
  5. Sep 21, 2026اما تو اندرویدهای جدید به خاطر سیستمهای validation مثل dm-verity، کوچکترین دستکاری توی پار…
  6. Sep 21, 2026اندروید هم یه لینوکس دستکاری شدست و همون قضایای لینوکس رو توش داریم اگر نمیدونید، در دنیای…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →