سلسله مراتب حافظه و حافظههای نهان (کش)
سلسله مراتب حافظه، فضای ذخیرهسازی را در سطوح مختلفی — ثباتها، حافظههای نهان، حافظه اصلی و حافظه پشتیبان — سازماندهی میکند تا سطوح کوچک و سریع، دادههایی را که به احتمال زیاد مورد استفاده قرار میگیرند، در خود جای دهند و به برنامهها این توهم را بدهند که حافظهای هم بزرگ و هم سریع در اختیار دارند.
Definition
سلسله مراتب حافظه، آرایشی لایهای از فناوریهای ذخیرهسازی با سرعت، هزینه و ظرفیت متفاوت است که به گونهای مدیریت میشود که دادههای پرکاربرد و اخیراً دسترسییافته در سطوح سریعتر و کوچکتر — مهمتر از همه حافظه نهان — قرار گیرند تا میانگین زمان دسترسی به حداقل برسد.
Scope
این حوزه به چرایی و چگونگی سازماندهی حافظه به صورت سلسله مراتبی با بهرهگیری از اصل محلیت ارجاع میپردازد. این شامل ساختار حافظه نهان (سیاستهای جایگذاری، جایگزینی و نوشتن)، حافظههای نهان چندسطحی، انسجام حافظه نهان در بین پردازندهها، حافظه مجازی و ترجمه آدرس، و فناوریهای زیربنایی DRAM و حافظههای نوظهور است. این حوزه شامل اجرای خود پردازنده (معماری ریزپردازنده) و ذخیرهسازی فایل و دستگاه در مقیاس بزرگ (سیستمهای ذخیرهسازی و ورودی/خروجی) نمیشود، اگرچه با هر دو هممرز است.
Sub-topics
Core questions
- چرا محلیت ارجاع، سلسله مراتب حافظه لایهای را مؤثر میسازد؟
- حافظههای نهان از نظر جایگذاری، انجمنی بودن، سیاست جایگزینی و نوشتن چگونه سازماندهی میشوند؟
- چگونه انسجام زمانی که چندین حافظه نهان نسخههایی از یک حافظه را نگهداری میکنند، حفظ میشود؟
- حافظه مجازی چگونه آدرسها را ترجمه میکند و حفاظت و توهم حافظه بزرگ را فراهم میآورد؟
- ویژگیهای DRAM و حافظههای نوظهور چگونه عملکرد سیستم را شکل میدهند؟
Key concepts
- محلّیت زمانی و مکانی
- hit و miss حافظه نهان
- انجمنی بودن و سیاست جایگزینی
- write-through و write-back
- حافظههای نهان چندسطحی
- انسجام حافظه نهان
- حافظه مجازی و صفحهبندی
- بافر نگاه به جلو ترجمه (TLB)
- DRAM و پهنای باند حافظه
- میانگین زمان دسترسی به حافظه
Key theories
- محلّیت ارجاع
- برنامهها تمایل دارند دادههای اخیراً دسترسییافته را مجدداً استفاده کنند (محلّیت زمانی) و به آدرسهای نزدیک دسترسی پیدا کنند (محلّیت مکانی)؛ سلسله مراتب حافظه با ذخیرهسازی بلوکهای اخیراً استفاده شده و واکشی همسایگان به طور همزمان، از هر دو بهرهبرداری میکند.
- موازنه در طراحی حافظه نهان
- عملکرد حافظه نهان توسط نرخ miss، جریمه miss و زمان hit تعیین میشود و از طریق اندازه، اندازه بلوک، انجمنی بودن، و سیاستهای جایگزینی و نوشتن تنظیم میگردد؛ تحلیلهای کلاسیک، missهای اجباری، ظرفیتی و تضاد را به عنوان اهداف این انتخابها شناسایی میکنند.
Mechanisms
هنگامی که پردازنده دادهای را درخواست میکند، ابتدا حافظه نهان بررسی میشود؛ یک "hit" (یافتن داده) داده را به سرعت بازمیگرداند، در حالی که یک "miss" (عدم یافتن داده) یک بلوک را از سطح پایینتر واکشی میکند و ممکن است بلوک دیگری را بر اساس سیاست جایگزینی از حافظه نهان خارج کند. عملیات نوشتن از طریق طرحهای "write-through" یا "write-back" منتشر میشوند و پروتکلهای انسجام، چندین حافظه نهان را سازگار نگه میدارند. حافظه مجازی یک مرحله ترجمه — از طریق جداول صفحه و بافر نگاه به جلو ترجمه (TLB) — اضافه میکند که آدرسهای برنامه را به DRAM فیزیکی نگاشت میکند و در عین حال حفاظت را نیز اعمال میکند.
Clinical relevance
سلسله مراتب حافظه اغلب بر عملکرد واقعی غالب است: از آنجا که پردازندهها بسیار سریعتر از حافظه اصلی هستند، رفتار حافظه نهان و محلیت اغلب بیش از سرعت خام دستورالعمل اهمیت دارد. طرحبندیهای داده آگاه به حافظه نهان، بلوکبندی و پیشواکشی در محاسبات با کارایی بالا، پایگاههای داده و هستههای یادگیری ماشین محوری هستند، و زمانبندی حافظه نهان به منبعی برای کانالهای جانبی امنیتی تبدیل شده است.
History
موریس ویلکس در سال ۱۹۶۵ حافظه نهان (یک 'حافظه برده') را پیشنهاد کرد و حافظههای نهان وارد ماشینهای تجاری مانند IBM System/360 Model 85 شدند. حافظه مجازی با کامپیوتر اطلس در اوایل دهه ۱۹۶۰ آغاز شد و توسط مدل مجموعه کاری دنینگ رسمیت یافت. بررسی آلن جی اسمیت در سال ۱۹۸۲ دانش طراحی حافظه نهان را تثبیت کرد و حافظههای نهان چندسطحی و پروتکلهای انسجام پیچیده با افزایش شکاف سرعت پردازنده-حافظه به استاندارد تبدیل شدند.
Debates
- مدیریت سختافزاری در مقابل نرمافزاری محلیت
- تنش مداومی بین کشسازی سختافزاری شفاف و حافظههای مدیریتشده صریح (scratchpadها، پیشواکشی کنترلشده توسط نرمافزار) وجود دارد: کشسازی سختافزاری عمومی و برنامهنویسی آن آسان است، در حالی که مدیریت صریح میتواند برای بارهای کاری تخصصی قابل پیشبینیتر و کارآمدتر باشد.
Key figures
- Maurice Wilkes
- Alan Jay Smith
- Peter J. Denning
- John L. Hennessy
- David A. Patterson
Related topics
Seminal works
- hennessy2019
- smith1982cache
- patterson2020
Frequently asked questions
- چرا حافظههای نهان مؤثر هستند در حالی که در مقایسه با حافظه اصلی بسیار کوچکاند؟
- زیرا برنامهها محلیت را نشان میدهند: در هر لحظه فقط یک مجموعه کاری کوچک از دادهها را به طور مکرر لمس میکنند و دسترسیها در آدرسهای نزدیک به هم جمع میشوند. بنابراین، یک حافظه نهان کوچک که آن مجموعه کاری را در خود جای میدهد، اکثریت قریب به اتفاق درخواستها را برآورده میکند.
- تفاوت بین حافظه نهان و حافظه مجازی چیست؟
- هر دو دادهها را بین یک سطح سریعتر و کوچکتر و یک سطح کندتر و بزرگتر جابجا میکنند. حافظه نهان (که در سختافزار مدیریت میشود) بلوکهایی از حافظه اصلی را نگه میدارد؛ حافظه مجازی (که با سیستم عامل مدیریت میشود) آدرسهای برنامه را به حافظه فیزیکی نگاشت میکند و دادهها را به دیسک و از دیسک صفحهبندی میکند، همچنین حفاظت و فضای آدرسی بزرگتر از RAM فیزیکی را فراهم میآورد.