ذخیره سازی و بارگیری

از ویکی‌پدیا، دانشنامهٔ آزاد

Load-Hit-Store ، یا LHS ، وابستگی داده ای در CPU است که در آن از یک مکان حافظه که به تازگی هدف یک عملیات ذخیره سازی قرار گرفته است ، بارگیری می شود. پس از آن ممکن است CPU صبر کند تا فرایند ذخیره‌سازی به پایان برسد ، تا بتوان مقدار صحیح را بازیابی کرد. این شامل یک مسیر رفت وبرگشت L1 است که طی آن بیشتر یا کل خط لوله متوقف می شود که این عمل باعث کاهش قابل توجه عملکرد می شود. به عنوان مثال کد زیر را ببینید. (C / C ++): [۱]

int slow(int *a, int *b)
{
  *a = 5;
  *b = 7;
  return *a + *b;
}

در اینجا ، قوانین زبان اجازه نمی دهد که کامپایلر فرض کند که اشاره گرهای a و b به مکان های مختلف حافظه اشاره دارند. بنابراین ، به طور کلی نمی تواند مقادیر ذخیره شده را در یک رجیستر برای جمع نهایی نگه دارد (یا در این مثال ساده مقدار برگشتی را به 12 پیش‌محاسبه کنید) ، بلکه در عوض مجبور است از محل حافظه ، *a مقدار را از اول بارگیری کند . تنها گزینه های واقع گرایانه یک آزمون و شاخه یا test-and-branch است تا ببینید آیا a و b برابر هستند یا خیر ، که در این صورت مقدار برگشت صحیح 14 است ، اما اگر پوینترها برابر نباشند این سربار قابل توجهی اضافه می کند و بهینه سازی با درون ریزی تابع امکان پذیر است .

حال اگر خواندن تابع slow با یک آدرس برای a و b انجام شود، بین حافظه ی ذخیره شده و حافظه ی بارگیری شده در گزاره ی اخر slow وابستگی داده ای وجود دارد. برخی از طراحی های CPU (مانند پردازنده های هدف عمومی برای رایانه های رومیزی یا نوت بوک) مقدار قابل توجهی فضای قالب را به حمل و نقل پیچیده " ذخیره به بار" اختصاص می دهند ، که در شرایط مناسب مانند تراز بومی عملوندها ، می تواند به انتظار برای رفت و برگشت cache تبدیل شود. [۲] پردازنده های دیگر (به عنوان مثال برای دستگاه های جاسازی شده یا کنسول بازی های ویدیویی ) ممکن است از رویکردی کمتر پیچیده یا ساده تری استفاده کنند و برای جلوگیری از ذخیره سازی مکرر در کد هایی که سرعت عملکرد در آنها مهم است ، به توسعه دهنده نرم افزار تکیه کنند یا ذخیره سازی های مکرر را در هنگام بهینه سازی عملکرد حذف کنند. در رویکرد مینیمالیستی و حداقلی ، وابستگی ذخیره به بار ، باعث سرریزی بافرهای ذخیره سازی و توقف خط لوله میشود. این اطمینان حاصل می کند که محاسبه، نتیجه صحیح را با هزینه عملکرد بالا به دست آورد.

منابع[ویرایش]

  1. «نسخه آرشیو شده». بایگانی‌شده از اصلی در ۲۰ ژانویه ۲۰۲۱. دریافت‌شده در ۱۱ دسامبر ۲۰۲۰.
  2. http://blog.stuffedcow.net/2014/01/x86-memory-disambiguation/