سلسله‌مراتب حافظه: چرا کامپیوترها از چند نوع حافظه استفاده می‌کنند

هیچ فناوری حافظه واحدی هم‌زمان سریع، بزرگ، و ارزان نیست. این مقاله مفهوم سلسله‌مراتب حافظه که چند فناوری حافظه مختلف را ترکیب می‌کند تا به سرعت سریع‌ترین آن‌ها با هزینه ارزان‌ترین نزدیک شود را معرفی می‌کند، سپس فناوری‌های اصلی که هر سطح را می‌سازند مرور می‌کند.

سلسله‌مراتب حافظهSRAM و DRAMفناوری‌های حافظه

~3 دقیقه مطالعه · آخرین به‌روزرسانی ۱۵ شهریور ۱۴۰۵

چرا یک نوع حافظه هرگز کافی نیست

یک حافظه ایده‌آل باید بسیار سریع باشد، مقدار عظیمی داده نگه دارد، و هزینه بسیار کمی داشته باشد. در عمل، هیچ فناوری واحدی به هر سه به‌طور هم‌زمان دست نمی‌یابد: حافظه سریع‌تر همیشه به‌ازای هر بایت گران‌تر است و معمولاً کوچک‌تر، در حالی که حافظه ارزان‌تر و بزرگ‌تر همیشه کندتر است. این مبادله مسئله مرکزی است که Memory Hierarchy برای حل آن طراحی شده است.

ایده اصلی: ترکیب چند سطح

به‌جای انتخاب یک فناوری حافظه، یک کامپیوتر چند سطح مختلف حافظه را ترکیب می‌کند، هرکدام با تعادل متفاوتی از سرعت، اندازه، و هزینه. داده‌ای که پرکاربرد است در کوچک‌ترین، سریع‌ترین، گران‌ترین سطح نگه داشته می‌شود، در حالی که داده‌ای که کمتر استفاده می‌شود در سطوح به‌تدریج بزرگ‌تر، کندتر، و ارزان‌تر که از پردازنده دورترند قرار دارد.

سریع‌ترین، کوچک‌ترین، گران‌ترین:
رجیسترها → کش → حافظه اصلی → دیسک/SSD
کندترین، بزرگ‌ترین، ارزان‌ترین

SRAM: پایه‌ای برای حافظه سریع و کوچک

SRAM (Static Random Access Memory) هر بیت را با استفاده از یک مدار کوچک از ترانزیستورها ذخیره می‌کند که مقدارش را به‌طور پیوسته تا زمانی که توان تأمین شود نگه می‌دارد، بدون نیاز به رفرش دوره‌ای. این باعث می‌شود SRAM برای دسترسی بسیار سریع باشد، اما هر سلول ذخیره‌سازی به چند ترانزیستور نیاز دارد، که آن را از نظر فیزیکی بزرگ‌تر و به‌ازای هر بیت گران‌تر از جایگزینی که برای حافظه اصلی استفاده می‌شود می‌کند.

DRAM: پایه‌ای برای حافظه بزرگ و ارزان

DRAM (Dynamic Random Access Memory) هر بیت را با استفاده از یک ترانزیستور واحد و یک خازن ذخیره می‌کند، که بسیار فشرده‌تر و ارزان‌تر برای تولید به‌ازای هر بیت نسبت به SRAM است. مبادله این است که شارژ خازن با گذشت زمان نشت می‌کند، پس DRAM باید به‌طور دوره‌ای Refreshed شود — مقادیر ذخیره‌شده‌اش در فواصل منظم دوباره نوشته شوند — تا از دست دادن داده جلوگیری شود، و خواندن از آن به‌طور محسوسی بیشتر از خواندن از SRAM طول می‌کشد.

چرا این دو فناوری متفاوت استفاده می‌شوند

به‌دلیل این مبادلات، SRAM تقریباً منحصراً برای حافظه Cache کوچک و بسیار سریع که مستقیماً درون یا بسیار نزدیک به پردازنده ساخته شده استفاده می‌شود، در حالی که DRAM برای Main Memory بزرگ‌تری استفاده می‌شود که داده بسیار بیشتری را با کسری از هزینه به‌ازای هر بیت نگه می‌دارد، به قیمت زمان دسترسی کندتر.

فراتر از SRAM و DRAM: ذخیره‌سازی پایدار

زیر حافظه اصلی در سلسله‌مراتب، ذخیره‌سازی پایدار قرار دارد، مانند Solid-State Drives (SSDs) یا Hard Disk Drives (HDDs) مغناطیسی سنتی، که داده را حتی وقتی توان قطع می‌شود حفظ می‌کنند، داده بسیار بیشتری نسبت به DRAM نگه می‌دارند، اما دسترسی به آن‌ها به‌طور قابل‌توجهی کندتر است، به‌ویژه هارد دیسک‌ها، که شامل حرکت مکانیکی برای مکان‌یابی فیزیکی داده هستند.

چرا درک این پایه اهمیت دارد

هر تکنیکی که در باقی این فصل بحث می‌شود — استراتژی‌های کش، حافظه مجازی، و بهینه‌سازی کارایی — به‌طور خاص به‌دلیل مبادلات بنیادین توصیف‌شده در اینجا بین سرعت، اندازه، و هزینه وجود دارد. بدون درک اینکه چرا هیچ فناوری حافظه واحدی نمی‌تواند هر نیازی را برآورده کند، تصمیمات طراحی پشت سلسله‌مراتب کش خودسرانه به‌نظر می‌رسند نه ضروری.

نوشته و پژوهش‌شده توسط دکتر شاهین صیامی

مقالات مرتبط

اصول کش: حافظه کوچک و سریع چگونه پیش‌بینی می‌کند بعداً چه چیزی نیاز است

یک کش فقط به این دلیل کار می‌کند که برنامه‌ها تمایل دارند داده یکسان یا نزدیک به هم را به‌طور تکراری دسترسی کنند نه به‌صورت تصادفی. این مقاله اصل محلیت که کش را مؤثر می‌کند را توضیح می‌دهد، یک کش مستقیم‌نگاشت‌شده چگونه داده را با استفاده از یک آدرس مکان‌یابی می‌کند، و در یک hit کش در مقابل یک miss کش چه اتفاقی می‌افتد.

ادامه

تصورات غلط رایج درباره طراحی پردازنده و تصویر کلی فصل چهارم

پس از پوشش datapath ها، پایپ‌لاینینگ، خطرها، و مقایسه‌های پردازنده دنیای واقعی، وقت آن است چند تصور غلط پایدار درباره نحوه رفتار واقعی پردازنده‌ها را اصلاح کنیم. این مقاله به مغالطات رایج درباره پایپ‌لاینینگ و کارایی می‌پردازد، سپس مسیر کامل از datapath های ساده تا اجرای سوپراسکالر که در سراسر این فصل پوشش داده شد را به هم پیوند می‌دهد.

ادامه

پایپ‌لاین‌های دنیای واقعی: مقایسه ARM و Intel، و تسریع ضرب ماتریس

مفاهیم نظری پایپ‌لاین در پردازنده‌های تجاری واقعی شکل مشخصی به خود می‌گیرند، که بسته به اهداف طراحی‌شان از نظر عمق پایپ‌لاین و عرض صدور به‌طور گسترده متفاوت‌اند. این مقاله مقایسه می‌کند ARM Cortex-A53 و Intel Core i7 چگونه پایپ‌لاینینگ را متفاوت برای کارایی توان در مقابل کارایی خام پیاده‌سازی می‌کنند، سپس نشان می‌دهد موازی‌سازی سطح دستور چگونه ضرب ماتریس را در عمل تسریع می‌کند.

ادامه

موازی‌سموازی‌سازی سطح دستور: اجرای بیش از یک دستور به‌طور هم‌زمانازی سطح دستور: اجرای بیش از یک دستور به‌طور هم‌زمان

موازی‌سازی سطح دستور: اجرای بیش از یک دستور به‌طور هم‌زمان

ادامه

یک پردازنده پایپ‌لاین‌شده چگونه استثناها را مدیریت می‌کند

هر دستوری آن‌طور که انتظار می‌رود اجرا نمی‌شود — برخی شرایط خطایی مانند یک opcode نامعتبر یا سرریز محاسباتی را فعال می‌کنند که پردازنده باید با امنیت به آن‌ها پاسخ دهد. این مقاله توضیح می‌دهد استثناها چه هستند، یک پردازنده پایپ‌لاین‌شده چگونه آن‌ها را بدون خراب کردن وضعیت برنامه تشخیص داده و مدیریت می‌کند، و چرا استثناها مشابه خطرهای کنترلی رفتار می‌شوند.

ادامه

خطرهای کنترلی: مدیریت شاخه‌ها در یک پردازنده پایپ‌لاین‌شده

شاخه‌ها یک مسئله منحصربه‌فرد برای پایپ‌لاینینگ ایجاد می‌کنند: پردازنده باید دستور بعدی را پیش از آنکه حتی بداند آیا یک شاخه گرفته خواهد شد یا نه، واکشی کند. این مقاله توضیح می‌دهد خطرهای کنترلی چه هستند، پیش‌بینی شاخه و حل زودهنگام چگونه تلاش می‌کنند هزینه آن‌ها را به حداقل برسانند، و وقتی یک پیش‌بینی نادرست از آب درمی‌آید چه اتفاقی می‌افتد.

ادامه