**این مقاله در حال ترجمه از ویکی انگلیسی است

لطفا حذف نشود.**


حافظه ی پنهان (cache) چند سطحی یک نوع معماری حافظه های کامپیوتر است که یک طبقه بندی برای حافظه ها بر اساس سرعت دسترسی به آن ها ارائه می دهد . داده‌های پر استفاده تر در حافظه‌های پر سرعت (از لحاظ سرعت دسترسی) ذخیره می‌شوند تا هسته‌های واحد پردازش مرکزی (CPU cores) درسترسی سریع تری به آن ها داشته باشند.

حافظه ی پنهان (cache) چند سطحی را می توان بخشی از حافظه های چند سطحی دانست و آن را نوعی ذخیره سازی لایه ای در نظر گرفت. هدف از این طراحی این بود که سرعت پردازش هسته‌ های CPU کمتر تحت تاثیر تأخیر خواندن داده از روی حافظه ی اصلی قرار بگیرد. دسترسی به حافظه اصلی می تواند نقشی اساسی در بهبود عملکرد هسته CPU داشته باشد؛ زیرا CPU به وفور نیاز به داده دارد، در حالی که بالا بردن سرعت تمام حافظه ی اصلی می تواند بسیار هزینه بر باشد. از مزیت سرعت بالای حافظه های ینهان می توان به عنوان شگردی استفاده کرد که امکان دسترسی پرسرعت به داده هایی را که بیشتر توسط CPU استفاده می شود را فراهم می کند و در عین حال باعث می شود سرعت نرخ کلاک CPU سریعتر شود. [1]

Thumb
ساختار کلی حافظه ی نهان چند سطحی

تاریخچه

در طول تاریخ توسعه تراشه های الکترونیکی و کامپیوتر، دوره ای وجود داشت که توسعه سرعت CPU از توسعه سرعت دسترسی به حافظه پیشی گرفت. [2] شکاف بین سرعت CPU و حافظه اصلی به این معنی است که CPU اغلب به موقع داده ی لازم را دریافت نمی کند. [3] CPU ها قادر به اجرای مقادیر بیشتری از دستورالعمل ها در یک بازه ی زمانی معین بودند، اما زمان مورد نیاز برای دسترسی به داده ها از حافظه اصلی مانع از بهره مندی کامل برنامه ها از این قابلیت می شد. [4] این موضوع انگیزه ایجاد مدل های حافظه برای سرعت دسترسی بالاتر CPU به داده ها شد که CPU قادر باشند از تمام پتانسیل خود استفاده کنند. [5]

این منجر به مفهوم حافظه پنهان (cache) شد که اولین بار توسط موریس ویلکس ، دانشمند کامپیوتر بریتانیایی در دانشگاه کمبریج در سال 1965 ارائه گشت. او این نوع مدل های حافظه ای را «حافظه برده» نامید. [6] تقریباً بین سال‌های 1970 و 1990، در تعدادی از مقالات Anant Agarwal ، Alan Jay Smith ، Mark D. Hill ، Thomas R. Puzak و دیگران درباره ی توسعه مدل های دارای حافظه پنهان بحث شده است. اولین مدل‌های حافظه پنهان در آن زمان پیاده‌سازی شدند. اما با این که محققان به طور مداوم در حال بررسی و پیشنهاد طرح‌های بهتری بودند، نیاز به مدل‌ هایی با حافظه ی سریع‌ تر همچنان ادامه داشت.اگرچه مدل‌های حافظه نهان اولیه تاثیر تأخیر دسترسی به داده‌ها از روی حافظه ی اصلی را بهبود می‌بخشند، ولی با توجه به محدودیت‌های فنی و هزینه ی مالی، امکان نزدیک شدن حجم حافظه پنهان یک سیستم کامپیوتری به اندازه حجم حافظه اصلی وجود ندارد. از سال 1990 به بعد، ایده هایی مانند اضافه یک سطح حافظه نهان دیگر (سطح دوم)، به عنوان حافظه ی پشتیبان برای حافظه نهان سطح اول مطرح شد. Jean-Loup Baer ، Wen-Hann Wang، Andrew W. Wilson و دیگران تحقیقاتی را در مورد این مدل انجام داده‌اند. بعد از چندین پیاده سازی و شبیه سازی روی مدل های دارای حافظه ی نهان، طرح حافظه نهان چند سطحی به عنوان یک مدل به طور کلی بهتر از حافظه های نهان تک سطحی مورد توجه قرار گرفت. از سال 2000 تا به حال، مدل‌ های حافظه های نهان چند سطحی مورد توجه گسترده قرار گرفته‌اند و هم اکنون در بسیاری از سیستم‌ها، مانند حافظه های های نهان سه سطحی ای که در محصولات Core i7 اینتل وجود دارند، پیاده‌سازی می‌شوند. [7]

حافظه نهان چند سطحی

دسترسی به حافظه اصلی به ازای اجرای هر دستورالعمل ممکن است منجر به پردازش کند شود، آن هم وقتی که نرخ کلاک CPU وابسته به زمان مورد نیاز برای یافتن و واکشی داده ها باشد. به کاهش تاثیر این تاخیر حافظه روی عملکرد پردازنده، از پنهان کردن (cache) داده ها استفاده می شود. [8] هر زمان که داده ای مورد نیاز پردازنده باشد، از حافظه اصلی گرفته شده و در حافظه ای کوچکتر به نام کش ذخیره می شود. اگر دوباره به آن داده نیاز شود، ابتدا در حافظه ی پنهان جستوجو شده و در صورت نبودن داده مورد نظر به حافظه اصلی مراجعه می شود. [9] حافظه ی نهان از نظر زمان مورد نیاز برای جستجو و واکشی داده ها در مقایسه با حافظه اصلی سریع تر است. [10] مزایای استفاده از کش را می توان با محاسبه و مقایسه میانگین زمان دسترسی (AAT) مدل های حافظه چند سطحی وقتی که شامل حافظه پنهان هستند و وقتی که شامل آن نیستند ثابت کرد. [11]

میانگین زمان دسترسی (AAT)

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

زمان مورد نیاز برای یافتن و واکشی داد از حافظه، hit time آن حافظه نامیده می شود. در معادله ی بالا hit time حافظه ی پنهان مدنظر است. miss penalty مقدار اختلاف زمانی ای است که در صورتی که داده ی مورد نظر در حافظه ی نهان نباشد، باید صرف شود تا همان داده از حافظه ی اصلی استخراج شود.

hit time برای حافظه پنهان کمتر از hit time برای حافظه اصلی است، بنابراین میانگین زمان دسترسی برای دستیابی به داده ها در هنگام دسترسی از طریق کش به جای حافظه اصلی، به طور قابل توجهی کمتر است. [12]

تبادل سرعت و انرژی

با اینکه استفاده از حافظه های نهان می تواند سرعت سیستم را بهبود بخشد، ممکن است به دلیل نحوه سازماندهی و پیمایش حافظه های پنهان، همیشه منجر به افزایش سرعت مورد نیاز برای زمان واکشی داده ها نشود. به عنوان مثال، حافظه های پنهان direct-mapped، معمولاً نسبت به حافظه های پنهان fully associative، نرخ اشتباه بالاتری دارند. این ممکن است به ساختار کامپیوتری که پردازنده را آزمایش می کند و لیست دستورالعمل ها نیز بستگی داشته باشد؛ اما استفاده از یک حافظه نهان fully associative ممکن است منجر به مصرف انرژی بیشتر شود، زیرا هر بار باید کل کش را جستجو کند. به همین دلیل، مبادله بین مصرف انرژی (و گرمایی که تولید می کند) و اندازه حافظه پنهان بسیار مهم می شود.[13]

تعمیم تعداد حافظه های نهان

Thumb
نمایی از مکان و نسبت حجم حافظه های نهان سلسله مراتبی کش

در صورت رخ دادن یک باخت (miss) توسط حافظه نهان، رایانه باید برای واکشی داده های مورد نیاز به حافظه اصلی برود. با این حال، با یک کش چند سطحی، اگر داده مورد نظر در نزدیک تریت حافظه نهان به پردازنده (حافظه نهان سطح یک یا L1) نباشد، به سراغ نزدیکترین سطح (های) بعدی کش رفته و تنها در صورتی به حافظه اصلی می رود که این سطوح شکست بخورند. روند کلی این است که حافظه نهان L1 کم حجم و در فاصله 1 تا 2 سیکل کلاک CPU از پردازنده نگه داشته شود. در حالی که در سطوح پایین تر ظرفیت بیشتری نسبت به L1 دارند از این رو این سطوح دورتر ولی با نرخ miss کمتری نسبت به L1 هستند. این منجر به AAT بهتری می شود. تعداد سطوح حافظه نهان توسط معماران سخت افزار با توجه به نیازهای آنها پس از بررسی معاوضه بین هزینه، AAT و اندازه تعیین و طراحی می شوند.

دستاوردهای عملکردی

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

مثال: main memory = 50 ns, L1 = 1 ns with 10% miss rate, L2 = 5 ns with 1% miss rate, L3 = 10 ns with 0.2% miss rate

  • بدون کش، AAT = 50 ns
  • کش سطح یک (L1): AAT = 1 ns + (0.1 × 50 ns) = 6 ns
  • کش دو سطحی (L1-2): AAT = 1 ns + (0.1 × [5 ns + (0.01 × 50 ns)]) = 1.55 ns
  • کش سه سطحی (L1-3): AAT = 1 ns + (0.1 × [5 ns + (0.01 × [10 ns + (0.002 × 50 ns)])]) = 1.5101 ns

مرتبط با این بحث

منابع

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.