پیش‌بینی وابستگی به حافظه

پیش‌بینی وابستگی به حافظه (به انگلیسی: Memory dependence prediction)، روشی است که توسط ریزپردازنده‌های با کارایی بالا با اجرای خارج از نظم استفاده می‌شود که عملیات دسترسی به حافظه (بارها و ذخیره‌سازی) را خارج از نظم برنامه اجرا می‌کنند تا وابستگی‌های واقعی بین بارها و ذخیره‌ها را در زمان اجرای دستورالعمل پیش‌بینی کنند.
با اطلاعات وابستگی پیش‌بینی‌شده، پردازنده می‌تواند تصمیم بگیرد که بارها و ذخیره‌سازی‌های خاصی را به‌طور فرضی اجرا کند و در عین حال از اجرای خارج از نظم دیگر بارها و ذخیره‌ها جلوگیری کند و آنها را مرتب نگه می‌دارد.
بعداً در خط لوله، روش های ابهام‌زدایی حافظه برای مشخص کردن اینکه آیا بارها و ذخیره‌ها به درستی اجرا شده‌اند یا خیر، برای بازیابی استفاده می‌شوند.
با استفاده از پیش بینی کننده وابستگی به حافظه برای مرتب نگه داشتن بارها و ذخیره های وابسته، پردازنده از مزایای اجرای بارگذاری یا ذخیره خارج از دستور تهاجمی بهره می برد، اما از بسیاری از نقض های وابستگی حافظه که هنگام اجرای نادرست بارها و ذخیره آن ها رخ میدهند، جلوگیری میکند  که این کارایی را افزایش می دهد زیرا تعداد شستشوهای خط لوله را که برای بازیابی از این نقض های وابستگی حافظه الزامی است را کاهش می دهد. برای اطلاعات بیشتر در مورد وابستگی حافظه، نقض وابستگی حافظه و بازیابی، مقاله ابهام زدایی حافظه را ببینید .
به طور کلی، به کمک پیش بینی وابستگی حافظه  میتوان پیش بینی کرد که آیا دو عملیات حافظه وابسته هستند یا خیر، یعنی اگر با دسترسی به یک مکان حافظه با هم تعامل داشته باشند . علاوه بر استفاده از پیش بینی وابستگی حافظه برای زمان بندی خارج از نظم بارها و ذخیره ها، کاربردهای دیگری از پیش بینی وابستگی حافظه ذخیره به بار پیشنهاد شده است .
برای مثال ببینید :پیش بینی وابستگی حافظه یک بهینه سازی در مورد  گمانِ زنی وابستگی حافظه است ، به  معنای شناسایی اجرای متوالی نشان می دهد که ذخیره ها و بارها به ترتیب مشخص شده توسط برنامه اجرا می شوند . با این حال، مانند اجرای خارج از دستور سایر دستورالعمل ها، ممکن است بتوان دو عملیات حافظه را با ترتیبی متفاوت از آنچه که در برنامه ذکر شده است، اجرا کرد.
این زمانی امکان پذیر است که دو عملیات مستقل باشند ، در حدس و گمان وابستگی به حافظه، ممکن است اجازه داده شود بارگذاری قبل از ذخیره سازی قبل از آن اجرا شود. حدس و گمان زمانی موفق می شود که بار مستقل از ذخیره باشد، یعنی زمانی که دو دستورالعمل به مکان های مختلف حافظه دسترسی داشته باشند .
حدس و گمان زدن درباره اینکه  که بار وابسته به ذخیره است، یعنی زمانی که دو دسترسی در حافظه با هم هم پوشانی دارند، شکست می خورد.
در اولین طرح های مدرن و خارج از نظم، از حدس و گمان حافظه استفاده نشده است  زیرا مزایای آن محدود بود. با افزایش دامنه اجرای خارج از دستور طی چند ده دستورالعمل، حدس و گمان ساده وابستگی به حافظه مورد استفاده قرار گرفت. در گمان زنی های ساده وابستگی به حافظه،یک بار مجاز است از هر ذخیره قبلی عبور کند ، مانند هر شکلی از حدس و گمان مهم است که مزایای حدس و گمان صحیح را در مقابل جریمه ای که برای گمان زنی نادرست پرداخت می شود، سنجش کنیم  و همان طور که دامنه اجرای خارج از دستور به چندین ده دستورالعمل افزایش می یابد، مزایای عملکرد گمان زنی نادرست را کاهش می یابد . برای حفظ مزایای حدس و گمان وابستگی تهاجمی به حافظه و در عین حال اجتناب از هزینه های گمان زنی نادرست، چندین پیش بینی پیشنهاد شده است.
پیش بینی وابستگی حافظه انتخابی بارهای خاص را  تا زمانی که مطمئن شود که هیچ تخلفی ممکن است رخ ندهد متوقف میکند و به صراحت وابستگی ها را پیش بینی نمی کند . این پیش بینی کننده ممکن است بارها را بیش از حد الزام به تأخیر بی اندازد و در نتیجه منجر به عملکرد کمتر از حد مطلوب شود. در واقع، در برخی موارد بدتر از حدس زدن ساده لوحانه همه بارها در اسرع وقت عمل می کند . این به این دلیل است که معمولًا گمانه زنی اشتباه و بازیابی سریع تر از منتظر ماندن برای اجرای همه فروشگاه های قبلی است . پیش بینی دقیق وابستگی حافظه در دانشگاه ویسکانسین-مدیسون توسعه داده شد .
به طور خاص، حدس و گمان دینامیک و همگام سازی بارها را تنها تا زمانی که الزامی باشد با پیش بینی ذخیره دقیقی که یک بار باید منتظر آن باشد، به تاخیر می اندازد. این پیش بینی کننده وابستگی های دقیق ( جفت ذخیره و بار ) را پیش بینی می کند.
پیش بینی کننده مترادف همه وابستگی هایی را که یک بار مشترک یا دستورالعمل ذخیره دارند را با هم گروه بندی میکند .
پیش بینی کننده مجموعه های ذخیره وابستگی های بالقوه متعدد را با گروه بندی همه ذخیره های ممکن که یک بار ممکن است به آنها وابسته باشد، به طور مؤثر نشان میدهد.
پیش بینی کننده مانع ، ذخیره دستورالعمل های فروشگاه خاصی را به عنوان موانع در نظر میگیرد. یعنی کلیه عملیات بارگذاری یا فروشگاه بعدی مجاز به دور زدن فروشگاه خاص نیست. پیش بینی کننده مانع فروشگاه به صراحت وابستگی ها را پیش بینی نمی کند . این پیش بینی کننده ممکن است بارهای بعدی و در عین حال مستقل را بی جهت به تاخیر بیندازد.  پیش بینی وابستگی به حافظه کاربردهای دیگری فراتر از زمان بندی بارها و ذخیره سازی دارد ، به عنوان مثال، پنهان سازی حافظه حدسی و دور زدن حافظه حدسی از پیش بینی وابستگی حافظه برای ساده سازی ارتباط مقادیر از طریق حافظه استفاده می کنند.
قیاس به پیش بینی شاخه
پیش بینی وابستگی حافظه برای بارها و ذخیره ها مشابه پیش بینی شاخه برای دستورالعمل های شاخه شرطی است. در پیش بینی شاخه، پیش بینی کننده شاخه پیش بینی میکند که شاخه قبل از اینکه شناخته شود به کدام سمت حل میشود.
سپس پردازنده میتواند به صورت حدس و گمان دستورالعمل ها را در یکی از مسیرهای شاخه اجرا کند . سپس وقتی دستور شعبه اجرا شد ، می توان تشخیص داد که دستورالعمل شعبه به درستی پیش بینی شده است یا خیر ، در غیر این صورت این یک پیش بینی نادرست شعبه است، و برای دور انداختن دستورالعمل هایی که به طور فرضی واکشی و اجرا شده اند، یک خط لوله الزامی است.
پیش بینی شاخه را می توان به عنوان یک فرآیند دو مرحله ای در نظر گرفت. ابتدا پیش بینی کننده جهت انشعاب (گرفته شده یا نشده) را تعیین می کند ،  این یک تصمیم باینری است. سپس، پیش بینی کننده آدرس هدف واقعی را تعیین می کند . به طور مشابه، پیش بینی وابستگی حافظه را می توان به عنوان یک فرآیند دو مرحله ای در نظر گرفت.
ابتدا، پیش بینی کننده تعیین می کند که آیا وابستگی وجود دارد یا خیر ، سپس مشخص می کند که این وابستگی کدام است.