یک چارچوب یکپارچه برای درک هر سطح سلسله‌مراتب حافظه

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

سیاست‌های نوشتنچارچوب سلسله‌مراتب حافظهجای‌گذاری و جایگزینی بلوک

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

چرا کش‌ها و حافظه مجازی بیشتر از آنچه به‌نظر می‌رسند شبیه‌اند

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

پرسش اول: یک بلوک کجا می‌تواند قرار گیرد

این پرسش، به نام Block Placement، می‌پرسد چقدر انعطاف‌پذیری در انتخاب اینکه یک بلوک داده کجا برود در ذخیره‌سازی کوچک‌تر و سریع‌تر وجود دارد. یک کش مستقیم‌نگاشت‌شده، که پیش‌تر درباره اصول کش بحث شد، دقیقاً یک مکان به‌ازای هر بلوک اجازه می‌دهد، در حالی که یک طرح کاملاً associative هر مکانی را اجازه می‌دهد، و طرح‌های set-associative، که پیش‌تر هنگام بهبود کارایی کش بحث شد، در میانه قرار دارند. سیستم‌های حافظه مجازی، که پیش‌تر در این مجموعه بحث شد، معمولاً در سطح صفحه کاملاً associative هستند، چون هزینه یک page fault به‌اندازه کافی بالاست که حداکثر انعطاف‌پذیری جای‌گذاری ارزش دفترداری اضافه را دارد.

پرسش دوم: یک بلوک چگونه پیدا می‌شود

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

پرسش سوم: در یک Miss چه اتفاقی می‌افتد

این پرسش، به نام Block Replacement، می‌پرسد کدام بلوک موجود باید تخلیه شود تا برای داده تازه مورد نیاز جا باز شود وقتی ذخیره‌سازی پر است. سیاست‌های رایج شامل جایگزینی بلوک Least Recently Used (LRU)، بر اساس اصل محلیت زمانی که پیش‌تر در این مجموعه بحث شد، یا صرفاً جایگزینی یک بلوک به‌طور تصادفی، که ارزان‌تر برای پیاده‌سازی است اما به‌طور میانگین کمی کم‌کاراتر است.

پرسش چهارم: نوشتن‌ها چگونه مدیریت می‌شوند

این پرسش، به نام Write Policy، می‌پرسد وقتی یک برنامه داده‌ای که در لایه ذخیره‌سازی سریع‌تر وجود دارد را تغییر می‌دهد چه اتفاقی می‌افتد. دو رویکرد رایج وجود دارند:

  • Write-Through: هر نوشتن بلافاصله هم لایه سریع‌تر و هم لایه کندتر زیر آن را به‌روزرسانی می‌کند، و آن‌ها را همیشه سازگار نگه می‌دارد، به قیمت ترافیک نوشتن اضافه به لایه کندتر.
  • Write-Back: یک نوشتن فقط بلافاصله لایه سریع‌تر را به‌روزرسانی می‌کند، و بلوک را به‌عنوان تغییریافته علامت‌گذاری می‌کند، و تغییر فقط بعداً به لایه کندتر منتقل می‌شود، وقتی آن بلوک در نهایت نیاز به تخلیه دارد، که ترافیک نوشتن را به قیمت پیچیدگی دفترداری اضافه کاهش می‌دهد.

چرا این دید یکپارچه مفید است

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

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

مقالات مرتبط

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

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

ادامه

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

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

ادامه

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

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

ادامه

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

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

ادامه

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

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

ادامه

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

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

ادامه