کشحافظه کش (Cache Memory) چیست و چگونه کار می‌کند؟ قسمت دوم

کشحافظه کش (Cache Memory) چیست و چگونه کار می‌کند؟ قسمت دوم


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

با حافظه کش ملاقات کنید!

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

حافظه کش (Cache Memory) چیست و چگونه کار می‌کند؟ قسمت دوم

با توجه به اینکه که حافظه اصلی رم به عنوان قطعه‌ای غیر وابسته در خارج از پردازنده قرار گرفته است، بنابراین قسمت نقطه چین در عکس بالا نمایانگر بدنه اصلی سی‌پی‌یو و بخش‌های داخلی آن می‌باشد. مسیرهای داده قرار گرفته بین پردازشگر مرکزی و حافظه رم (باس حافظه) معمولاً از گستردگی برابر با 64bit (و یا 128 بیت در صورت استفاده از پیکربندی دوال چنل) برخوردار می‌باشند که متناسب با فرکانس حافظه اصلی و یا کلاک خارجی سی‌پی‌یو (و یا کلاک باس حافظه در مورد پردازنده‌های ای‌ام‌دی) به فعالیت می‌پردازند. در قسمت قبلی مقاله با فرمولی جهت محاسبه و اندازه‌گیری نرخ انتقال داده (سرعت) آشنا شده و برای کسب اطلاعات بیشتر پیشنهاد می‌شود تا از مطالعه قسمت پیشین مطلب غافل نشوید. تمامی مدارهای داخلی یک پردازنده در فرکانس داخلی سی‌پی‌یو کار کرده و وابسته به بخش‌های اینترنال، برخی از واحدها و قسمت‌ها ممکن است حتی با سرعت بیشتری نیز به عملکرد بپردازند! علاوه بر آن تعداد مسیرهای دادی موجود بین واحدهای داخلی پردازنده نیز از گستردگی بیشتری برخوردار می‌باشند که این مهم نمایانگر انتقال بیشتر اطلاعات بر هر سیکل حافظه است (در مقایسه با 64 و 128 مسیر موجود بین حافظه رم و سی‌پی‌یو). به عنوان مثال تعداد مسیرهای داده بین حافظه کش L2 و حافظه کش دستورالعمل‌های L1 در بسیاری از پردازنده‌های جدید و نوین امروزی 256 عدد (256 بیت) بوده و این تعداد در مورد حافظه کش دستورالعمل‌های L1 و واحد واکشی (Fetch Unit) نیز متفاوت می‌باشد (اغلب 128 بیت). افزایش تعداد مسیرهای داده با فزونی داده‌های قابل انتقال بر هر سیکل رابطه مستقیم داشته و لذا سی‌پی‌یو از آزادی عمل و انعطاف‌پذیری بیشتری برای فعالیت در سرعت بالاتر برخوردار می‌باشد که نتیجه نهایی آن در بهبود کارایی کامپیوتر قابل مشاهده است.

در حالت کلی تمامی پردازنده‌های امروزی از تعداد سه حافظه کش مختلف تحت عنوان L2، حافظه L1 Instruction (حافظه کش سطح اول دستورالعمل‌ها) و L1 Data (حافظه کش سطح اول داده‌ها) برخوردار می‌باشند. عبارات L در نام‌گذاری حافظه‌های کش نمایانگر سطح آن‌ها بوده و از کوتاه شده کلمه Level تشکیل شده است. سطح حافظه‌های کش با توجه به فاصله آن‌ها از هسته‌های فیزیکی سی‌پی‌یو و یا حافظه رم مشخص شده و هر اندازه که از هسته‌های فیزیکی پردازنده فاصله گرفته و به حافظه اصلی نزدیک‌تر شویم، سطح آن‌ها نیز با افزایش بیشتری همراه می‌شود. به عنوان کش سطح اول (Level 1 و یا L1) از کمترین فاصله نسبت به هسته‌های فیزیکی و بیشتری فاصله نسبت به حافظه رم برخوردار می‌باشد. حافظه کش سطح سوم (Level 3 یا L3) درست در نقطه مقابل حافظه کش سطح یک قرار داشته و از بیشترین فاصله نسبت به هسته‌های پردازنده و کمترین نسبت به حافظه اصلی رم برخوردار بوده و حافظه کش سطح دوم (Level 2 یا L2) نیز در میانه دو حافظه دیگر قرار گرفته است.

حافظه کش (Cache Memory) چیست و چگونه کار می‌کند؟ قسمت دوم

اگر مجدداً به بلوک دیاگرام قابل مشاهده در عکس فوق مراجعه کنیم، در میابیم که تعداد سه حافظه کش L1 Data ،L1 Instruction و L2 قابل مشاهده می‌باشند. حافظه کش L2 در مقایسه با دو حافظه دیگر از ظرفیت بیشتری برخوردار بوده و بین رم و حافظه دستورالعمل سطح اول (L1 Instruction) قرار گرفته و وظیفه حفظ و نگهداری دستورالعمل‌ها و داده‌های مورد نیاز پردازنده را بر عهده دارد. حافظه کش دستورالعمل‌های سطح یک همان‌طور که از عنوان آن قابل استنباط است فرآیند حفظ و نگهداری دستورالعمل‌های نیازمند پردازش و اجرا توسط پردازنده را بر عهده داشته و حافظه کش داده‌های سطح یک نیز به ایفای نقش درزمینهٔ حفظ و نگهداری داده‌های پردازش شده توسط سی‌پی‌یو و نیازمند انتقال (نوشتن) به حافظه اصلی سیستم می‌پردازد. اکنون سؤال بسیار مهم دیگر آن است که چرا یک سی‌پی‌یو از سطوح مختلفی حافظه کش برخوردار است و چرا سازندگان یک حافظه بزرگ با گنجایش بیشتر را در ساختار تراشه‌های خود پیاده‌سازی نکرده و از این طریق پیچیدگی محصولات را با کاهش بیشتری همراه نمی‌سازند؟

در پاسخ باید که گفت که طراحی و ساخت حافظه‌های استاتیک با تأخیر صفر و یا نزدیک به صفر بسیار مشکل بوده و چالش‌های بسیار فراوانی را در پیش روی سازندگان قرار می‌دهد، به‌خصوص که سرعت پردازش سی‌پی‌یوهای امروزی نیز در هر نسل پیوسته در حال افزایش می‌باشد. از آنجایی که این عمل از سختی بالایی برخوردار بوده و هزینه فراوانی را نیز طلب می‌کند، بنابراین سازندگان پردازنده‌های کامپیوتری از این نوع از حافظه استاتیک فقط در سطح یک (Level 1) تراشه‌های خود استفاده می‌کنند. حافظه کش سطح دوم نیز در دسته حافظه‌های استاتیک قرار دارد، اما سرعت آن در مقایسه با سطح یک کمی کمتر بوده و از تأخیر بیشتری برخوردار می‌باشد. متناسب با این موضوع، حافظه کش سطح سوم در مقایسه با دیگر سطوح موجود از کمترین سرعت و بالاترین تأخیر برخوردار بوده و لذا صرفه نظر از فاصله حافظه‌های کش از هسته‌های فیزیکی پردازنده و رم، دسته‌بندی سطوح را می‌توان با توجه به سرعت آن‌ها نیز به انجام رساند.

حافظه کش (Cache Memory) چیست و چگونه کار می‌کند؟ قسمت دوم

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

حافظه کش L1 Instruction نه تنها برای حفظ و نگهداری دستورالعمل‌ها، بلکه برخی دیگر از داده‌های برنامه نیز به ایفای نقش می‌پردازد و برخلاف عنوان خود وظیفه بیشتری را به انجام می‌رساند. با توجه به پردازنده مربوطه و نحوه طراحی، این حافظه برای نگهداری برخی از داده‌های پیش رمزگشایی (Pre-Decode) و اطلاعات شاخه‌ای همچون داده‌های کنترل که برای افزایش سرعت فرآیند رمزگشایی مورد نیاز می‌باشند نیز مورد استفاده قرار گیرد، بر همین اساس اندازه و ظرفیت این حافظه در اغلب موارد از آنچه که توسط کمپانی سازنده پردازنده اعلام شده است بیشتر می‌باشد، زیرا توسعه‌دهندگان فضای اضافی برای نگهداری اطلاعات فوق را در اندازه‌گیری نهایی لحاظ نمی‌کنند.

با توجه به توضیحات نوشته تاکنون دریافتیم که حافظه کش سطح یک یا به عبارتی دیگر L1 به دو زیر مجموعه “دستورالعمل” و “داده” تقسیم‌بندی شده و این الگو در مورد بسیاری از پردازنده‌های نوین و حال حاضر صادق می‌باشد. این حافظه در مشخصات فنی پردازنده‌های کامپیوتری اغلب با عناوین مختلفی مورد معرفی قرار می‌گیرد. به عنوان مثال برخی از توسعه‌دهندگان دو حافظه مذکور را به‌صورت کامل از یکدیگر جدا کرده و برای درک بیشتر کاربران آن‌ها را به حروف “D” و “I” از یکدیگر جدا می‌کنند (به عنوان مثال L1-D و L1-I). برخی دیگر از سازندگان یک ظرفیت کلی را برای این حافظه ارائه داده و عبارت “Separated” را جهت تقسیم آن‌ها درج می‌کنند، بنابراین به عنوان مثال عبارت “128KB separated” به معنای ظرفیت 64 کیلوبایتی دو حافظه فوق می‌باشد. برخی دیگر نیز فقط یک مقدار کلی برای این حافظه کش سطح یک ارائه می‌دهند که معمولاً اندازه دو حافظه دستورالعمل‌ها و داده‌ها با یکدیگر یکسان بوده و از تقسیم بر 2 ظرفیت نهایی کش L1 به دست می‌آید. البته این مهم در مورد پردازنده‌های مبتنی بر ریزمعماری Netburst همچون Pentium 4 ،Pentium D و پردازشگرهای زئون و سلرون Pentium 4 صادق نبوده و ساختار طراحی تراشه‌های فوق در این بخش متفاوت می‌باشد.

پردازنده‌های مبتنی بر ریزمعماری Netburst از حافظه کش L1 Instruction برخوردار نبوده و این انباره توسط حافظه دیگری تحت عنوان کش اجرای ردیابی (Trace Execution) جایگزین شده است. موقعیت این کش بین واحد رمزگشایی (Decode Unit) و واحد اجرا (Execution Unit) قرار گرفته و وظیفه نگهداری دستورالعمل‌هایی که پیشتر توسط پردازنده رمزگشایی شده‌اند را بر عهده گرفته است، بنابراین حافظه کش L1 Instruction در این سری از پردازشگرهای کامپیوتری از بین نرفته و با عنوان و موقعیت دیگری در ساختار معماری همچنان حاضر می‌باشد. اغلب افراد بر این باورند که سی‌پی‌یوهای پنتیوم 4 از حافظه کش سطح یک برخوردار نبوده و هنگام مقایسه این سری از پردازنده‌ها با دیگر تراشه‌های موجود همچون سری Core فقط به محاسبه اندازه حافظه L1 Data می‌پردازند، این در حالی است که حافظه کش اجرای ردیابی که وظیفه L1 Instruction را برعهده گرفته است از ظرفیت بسیار بیشتری (150 کیلوبایت در مقایسه با 8 کیلوبایت) برخوردار بوده و باید در اندازه‌گیری نهایی اندازه حافظه کش سطح اول مورد محاسبه قرار گیرد.

حافظه کش L2 در پردازنده‌های چند هسته‌ای

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

در پردازنده‌های Pentium D کمپانی اینتل و سی‌پی‌یوهای دو هسته‌ای مبتنی بر معماری K8 کمپانی ای‌ام‌دی، هسته‌های فیزیکی از کش سطح دوم اختصاصی خود برخوردار بوده و در حالت تئوری می‌توان بیان داشت که هر هسته قادر است تا همانند یک پردازنده کاملاً مستقل به فعالیت بپردازد. این ساختار در مورد پردازشگرهای دو هسته‌های سری Core و Pentium M کمپانی اینتل کمی متفاوت بوده و یک حافظه کش سطح دوم به‌صورت اشتراکی بین هسته‌های قرار گرفته است.

کمپانی اینتل بر این باور است که استراتژی اشتراکی حافظه کش سطح دوم بهتر عمل کرده و برای جلوگیری از هدر رفت پتانسیل پردازنده تأثیرگذار می‌باشد، زیرا در صورتی که اگر هر هسته از کش L2 اختصاصی خود برخوردار باشد، گاهی اوقات ممکن است فضای ذخیره‌سازی کش یک هسته (به عنوان مثال هسته اول) به اتمام رسیده، در حالی که هسته دیگر (هسته دوم) از فضای خالی در حافظه کش خود برخوردار باشد. در این حالت هسته اول برای دریافت اطلاعات مورد نیاز خود باید به حافظه کم سرعت رم مراجعه کند، در حالی که کش هسته دوم از فضای خالی برای ذخیره‌سازی اطلاعات برخوردار بوده و این مهم ممکن است منجر به بر هم خوردن تعادل کارایی دو هسته شود. بر همین اساس در ساختار یک پردازنده Core 2 Duo با پشتیبانی از دو هسته فیزیکی و چهار مگابایت کش L2، هسته اول ممکن است در آن واحد به 3.5 مگابایت از حافظه دسترسی داشته و ظرفیت در دسترس هسته دوم تنها 512 کیلوبایت (0.5 مگابایت) باشد.

پردازنده‌هایی همچون Core 2 Extreme QX و Core 2 Quad کمپانی اینتل که از تعداد چهار هسته فیزیکی برخوردار می‌باشند در ساختار خود دو تراشه دو هسته‌ای متمایز را قرار داده‌اند، بر همین اساس توضیحات پاراگراف پیشین در بین هسته‌های 1 و 2 از تراشه اول و 3 و 4 از تراشه دوم رخ می‌دهد. در عکس زیر مقایسه‌ای بین ساختارهای متفاوت اشاره شده در این بخش به نمایش درآمده است.

حافظه کش (Cache Memory) چیست و چگونه کار می‌کند؟ قسمت دوم

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

حافظه کش (Cache Memory) چیست و چگونه کار می‌کند؟ قسمت دوم

جهت مطالعه قسمت اول نوشته به لینک زیر مراجعه نمایید:

“حافظه کش (Cache Memory) چیست و چگونه کار می‌کند؟ قسمت اول”

پست های مرتبط

دیدگاه خود را بنویسید