برای دسترسی به داده ها در کش و همچنین برای خواندن [1] ، نوشتن [2] و بالانویسی [3] داده ها بر روی حافظههای کش، الگوریتمها و کنترل کنندههای متعددی استفاده شده است. در این مقاله در مورد نحوهی نوشتن و خواندن داده در داخل کش و همچنین در مورد روشهای Write-allocate با Write-back و نیز Write no-allocate با Write-through صحبت خواهد کرد.
اگر با اصطلاحات و واژگان حافظه کش (حافظه پنهان)، سطوح حافظه کش و مفهایم مرتبط با آنها آشنا نیستید و در مورد آنها اطلاعی ندارید، میتوانید به لینکهای زیر مراجعه کنید.
لینک های مرتبط با این مقاله:
انتقال داده ها بین حافظه کش و حافظه اصلی
اما همانطور که میدانیم داده ها همیشه از حافظهی اصلی (RAM خارج از چیپ) به حافظهی نهان (کش) انتقال پیدا میکند.
حال اگر پردازنده داده مورد نیاز خود را پیدا کند، Hit کش انجام میشود
و در صورتی که پردازنده موفق به پیدا کردن داده نباشد Miss کش اتفاق میافتد.
در زمان خواندن، وقتی Miss کش اتفاق بیافتد، داده ها طبق معمول از حافظهی اصلی خوانده شده
و سپس در داخل کش نوشته میشوند و درنهایت آماده برای پردازنده میشوند تا عمل نوشتن انجام شود.
در این حالت یک پنالتی [4] و تاخیر [5] برای پردازنده اضافه میشود.
اما در زمان نوشتن شرایط پیچیدهتر میشود که در ادامه به آن اشاره خواهیم کرد.
روش Write-allocate و Write no-allocate برای نوشتن داده در زمان Miss کش
در زمان نوشتن ممکن است دادهی مورد نظر در حافظهی کش موجود نباشد و به عبارتی در زمان نوشتن Miss رخ دهد
در این صورت برای ذخیره سازی و نوشتن داده بر روی کش دو سیاست وجود دارد:
- روش اول Write-allocate میباشد که در این روش بلوک داده از حافظه خوانده شده، بر روی کش نوشته شده و در نهایت عمل write بروی کش انجام میشود؛
- روش دوم نیز به نام Write no-allocate میباشد در این روش پردازنده مستقیما بر روی حافظهی اصلی (RAM خارج از تراشه) داده رو مینویسد.
روش Write-through و Write-back برای نوشتن داده در زمان Hit کش
همچنین برای نوشتن، زمانی که Miss اتفاق نمیافتد و پردازنده داده مورد نظر که برای نوشتن آماده شده، پیدا میکند
در این صورت به طورکلی دو سیاست برای نوشتن وجود دارد؛
- روش اول ذخیره سازی مستقیما در حافظه اصلی و همچنین کش انجام میشود. به عبارتی دیگر دادهی نوشته شده هم در حافظهی کش و هم در یک سطح پایینتر از کش ذخیره میشود؛ به این روش Write-through یا Stored-through گفته میشود
- روش دوم ذخیره سازی ابتدا در کش انجام شده سپس در زمانی که قرار است بازنویسی در حافظهی اصلی رخ دهد، بلوک داده به حافظه اصلی انتقال مییابد. به این روش Write-back یا Copy-back گفته میشود.
لازم به ذکر است عملکرد Write-allocate معمولا با سیاست Write-back انجام میشود و همیچنین عملکرد Write no-allocate با Write-through انجام میشود.
به طور کلی عوامل و مسائلی نظیر عملکرد ، قابلیت اطمینان، پیچیدگی و… در انتخاب این روش ها موثر هستند
در این تصویر بعد از این که داده در کش قرار داشته و به عبارتی Hit انجام شده است و نیز پردازنده قرار است روی آن داده عمل نوشتن را انجام دهد به طور کلی دو روش وجود دارد یا مستقیما بر کش نوشته شود سپس از کش به حافظه اصلی انتقال پیدا کند یا همزمان هم بر کش و هم بر حافظهی اصلی عمل نوشته انجام شود.
زیرنوشت
[1] Read
[2] Write
[3] Overwrite
[4] Penalty
[5] Latency
کپی و نشر این پست با ذکر منبع بلامانع است.