سازماندهی و سیاستهای حافظه نهان (کش)
سازماندهی حافظه نهان به چگونگی نگاشت بلوکهای حافظه به فضای ذخیرهسازی — جایگذاری و انجمنی بودن آن — و سیاستهایی که جایگزینی و نوشتن را کنترل میکنند، میپردازد که مجموعاً تعیین میکنند حافظه نهان چند وقت یکبار به هدف میرسد و چگونه با حافظه اصلی تعامل میکند.
Definition
سازماندهی و سیاستهای حافظه نهان، انتخابهای ساختاری و مدیریتی یک حافظه نهان هستند — اینکه بلوکها کجا ممکن است قرار گیرند، کدام بلوک در صورت خطا حذف میشود، و چگونه عملیات نوشتن به سطوح پایینتر منتشر میشوند — که نرخ موفقیت و رفتار آن را کنترل میکنند.
Scope
این موضوع طراحی داخلی یک حافظه نهان واحد را پوشش میدهد: جایگذاری نگاشت مستقیم، انجمنی مجموعهای، و کاملاً انجمنی؛ سیاستهای جایگزینی مانند LRU و تقریبهای آن؛ سیاستهای نوشتن (نوشتن از طریق (write-through) در مقابل نوشتن برگشتی (write-back)) و تخصیص نوشتن؛ اندازه بلوک؛ و طبقهبندی خطاها به اجباری، ظرفیتی، و تضاد. این موضوع انسجام چند حافظه نهان (پروتکلهای انسجام حافظه نهان) و ترجمه آدرس (حافظه مجازی و صفحهبندی) را شامل نمیشود.
Core questions
- چگونه جایگذاریهای نگاشت مستقیم، انجمنی مجموعهای، و کاملاً انجمنی در هزینه و رفتار تضاد متفاوت هستند؟
- کدام سیاست جایگزینی باید یک بلوک را در صورت خطا حذف کند، و چگونه به صورت ارزانقیمت تقریب زده میشود؟
- سیاستهای نوشتن از طریق و نوشتن برگشتی چگونه در ترافیک و پیچیدگی متفاوت هستند؟
- خطاها چگونه طبقهبندی میشوند، و کدام تغییرات طراحی هر نوع را کاهش میدهند؟
Key concepts
- حافظه نهان نگاشت مستقیم
- حافظه نهان انجمنی مجموعهای
- حافظه نهان کاملاً انجمنی
- جایگزینی کمترین استفاده اخیر (LRU)
- نوشتن از طریق در مقابل نوشتن برگشتی
- تخصیص نوشتن
- اندازه بلوک (خط)
- خطاهای اجباری، ظرفیتی، و تضاد
Key theories
- مدل خطای سه C
- خطاهای حافظه نهان را میتوان به اجباری (اولین دسترسی)، ظرفیتی (حافظه نهان برای مجموعه کاری بسیار کوچک است)، و تضاد (انجمنی بودن بسیار کم است) طبقهبندی کرد، چارچوبی که هر پارامتر طراحی — اندازه، اندازه بلوک، انجمنی بودن — را به خطاهایی که کاهش میدهد، مرتبط میکند.
Mechanisms
یک آدرس حافظه به فیلدهای برچسب (tag)، شاخص (index) و آفست (offset) تقسیم میشود. شاخص یک مجموعه را انتخاب میکند، برچسب بلوک را در آن شناسایی میکند، و انجمنی بودن تعیین میکند که چند بلوک یک مجموعه را به اشتراک میگذارند. در صورت خطا، حافظه نهان بلوک را واکشی میکند و بلوک دیگری را که توسط یک سیاست جایگزینی (اغلب تقریبی از کمترین استفاده اخیر) انتخاب شده است، حذف میکند. عملیات نوشتن یا بلافاصله حافظه اصلی را بهروزرسانی میکنند (نوشتن از طریق) یا بلوک را کثیف (dirty) علامتگذاری کرده و بهروزرسانی را به تعویق میاندازند (نوشتن برگشتی).
Clinical relevance
سازماندهی حافظه نهان عملکرد مؤثر را کنترل میکند زیرا جریمههای خطا نسبت به موفقیتها زیاد هستند. برنامهنویسان با استفاده از چیدمان دادهها، بلوکبندی، و الگوهای دسترسی که محلیت را افزایش میدهند، رفتار حافظه نهان را بهبود میبخشند، در حالی که معماران انجمنی بودن، اندازه بلوک، و سیاست نوشتن را برای متعادل کردن نرخ موفقیت در برابر مساحت، توان، و پهنای باند تنظیم میکنند.
History
ویلکس حافظه برده (کش) را در سال ۱۹۶۵ پیشنهاد کرد، و حافظههای نهان به زودی به صورت تجاری پذیرفته شدند. بررسی آلن جی اسمیت در سال ۱۹۸۲ اندازهگیریهای گستردهای از جایگذاری، جایگزینی، و سیاستهای نوشتن را ترکیب کرد و واژگان طراحی را که هنوز امروزه استفاده میشود، پایهگذاری کرد. مدل سه C بعداً راهی ساختاریافته برای استدلال در مورد علل و راهحلهای خطا ارائه داد.
Key figures
- Maurice Wilkes
- Alan Jay Smith
- John L. Hennessy
- David A. Patterson
Related topics
Seminal works
- smith1982cache
- hennessy2019
Frequently asked questions
- تفاوت بین حافظههای نهان نوشتن از طریق و نوشتن برگشتی چیست؟
- یک حافظه نهان نوشتن از طریق، هم حافظه نهان و هم حافظه اصلی را در هر عملیات نوشتن بهروزرسانی میکند، حافظه را بهروز نگه میدارد اما ترافیک بیشتری ایجاد میکند. یک حافظه نهان نوشتن برگشتی فقط حافظه نهان را بهروزرسانی میکند، بلوک را کثیف علامتگذاری میکند، و آن را فقط زمانی که حذف میشود به حافظه مینویسد، که ترافیک را به قیمت هزینههای اضافی مدیریت کاهش میدهد.
- چرا به جای حافظههای نهان نگاشت مستقیم از حافظههای نهان انجمنی مجموعهای استفاده میشود؟
- یک حافظه نهان نگاشت مستقیم به هر بلوک دقیقاً یک مکان اجازه میدهد، بنابراین بلوکهایی که به یک شکاف نگاشت میشوند، با هم تضاد پیدا میکنند. انجمنی بودن مجموعهای به هر بلوک چندین مکان ممکن در یک مجموعه میدهد، که خطاهای تضاد را به قیمت سختافزار مقایسه بیشتر و موفقیتهای کمی کندتر کاهش میدهد.