حافظه کش چیست
حافظه داخل پردازندهها را حافظه پنهان یا حافظه کش تشکیل میدهد، در داخل پردازندهها، مانند شکل 1‑1 عموما معماری حافظه کشها در چند سطح [1] ایجاد میشود که عموما حداکثر تا ۳ سطح میباشد، سطح یک L1 نزدیکترین حافظه به پردازنده میباشد و اصولا حجم کمتری نسبت به سطح دو L2 و سطح سه L3 دارد، به عبارتی هرچه از پردازنده دور میشویم، سطح کشها و حجم سطح ها بیشتر میشود و هرچه به پردازنده نزدیک میشویم، سطح کشها و حجم آنها کمتر میشود.
نامگذاری سطح کش ها معمولا برای سطح یک L1 ، سطح دو L2 و سطح سه L3 میباشد. برای پردازندههای چندهستهای [2] غالبا کش سطح سه (L3) برای تمام هستههای پردازنده به صورت اشتراکی میباشد و سطح دو و سطح یک برای هر هسته [3] به صورت مجزا در نظر گرفته میشود.
مقایسه سطوح کش ها
سرعت سطح حافظه کش L1 به ترتیب از L2 و L3 بیشتر است و نسبت به این دو سطح گرانتر میباشند، همچنین L2 نیز از L3 سریعتر و گرانتر میباشد. دادههایی که در حافظهی L1 قرار میگیرند الویتبالاتری نسبت به L2 و L3 خواهند داشت و مستقیما برای وظایف و محاسبات پردازنده در اختیار پردازنده قرار دارند. معمولا حجم کش L1 به ۲۵۶ کیلوبایت میرسد، هرچند که در حالحاضر حجم حافظه کش L1 در پردازندههای قویتر حداکثر به ۱ مگابایت میرسد و در بعضی پردازندههای خاص منظوره این میزان حداکثر به ۲ مگابایت خواهد رسید. همچنین غالباً کش L1 به دو بخش مجزا تقسیم میشود؛ کش داده [4] و کش دستورالعمل [5] .
دادههای داخل کش دستورالعمل، اطلاعاتی است که برای محاسبات و عملیات پردازنده نیاز میباشد و کش داده، اطلاعلاتی که پردازنده بروی آن عملیاتی انجام میدهد را نگهداری میکند؛ همانطور که اشاره کردیم کش L2 در مقایسه با کش L1 کندتر میباشد اما از نظر اندازه و حجم بزرگتر میباشد.اندازهی حافظه کش L2 در حالحاضر حداکثر تا ۸ مگابایت رسیدهاست؛
اگرچه شرکتهای سازندهی پردازندهها تمایل دارند اندازهی Cache خصوصا برای سطوح L1 و L2 را بیشتر از این مقدار افزایش دهند اما بخاطر محدودیتهای مختلف در طراحی، ابعاد و اندازهی ترانزیستورها، اندازهی مدارات و سیمکشیهای مربوطه، افزایش توان مصرفی، افزایش دمای پردازنده و استفاده از سیستمهای خنککندهی قویتر، افزایش هزینهها در ساخت پردازنده (نداشتن توجیه اقتصادی و بازگشت سرمایه در مدت زمان طولانی)، افزایش ابعاد و اندازهی پردازنده و….، افزایش اندازه و حجم حافظه های Cache خصوصا برای سطح حافظه ی L1 و L2 کار بسیار پیچیده و سخت میباشد.
اختصاص سطوح حافظه پنهان در پردازندههای چند هستهای
همانطور که گفته شد همانند شکل 1‑1 معمولا سطوح L1 و L2 برای هر هسته بصورت مجزا در نظر گرفته میشود به عبارتی هر هسته دارای کش L1 و L2 بصورت جداگانه میباشد که از لحاظ سخت افزاری با کشهای L1 و L2 هستههای دیگر مشترک نمیباشند؛ اما حافظه پنهان سطح L3 برای تمامی هستههای بصورت مشترک در خارج از هستهها در پردازنده تعبیه میشود. حافظه پنهان L3 همانند شکل 1‑1 از کشهای L1 و L2 بزرگتر است اما سرعت کمتری در مقایسه با سطوح L1 و L2 دارد و به عبارتی حافظه پنهان سطح ۳ (Cache L3) بزرگترین و همچنین کندترین واحد حافظهای از حافظه ی پنهان میباشد.
شکل 1‑1 سلسه مراتب حافظه های پنهان در پردازندههای چند هستهای
پیدایش اولین حافظه پنهان در سطح سه (Cahce L3)
اولین حافظه پنهان سطح L3 برای پردازندههای تک هستهای استفاده میشدند؛ زمانی که این حافظه ها بروی مادربردها خارج از تراشه [6] قرار داشت و توسط باس [7] پشتی به CPU (سیپییو) [8] متصل میشد. شرکت AMD وقتی پردازندهی خانوادهی K6-III را تولید کرد، مادربردههای تحت نام K2/K6 ساخته شد که میتوانستند به پردازندهی خانواده K6-III متصل شوند. این مادربردها دارای حافظه پنهان سطح L2 با اندازهای در بازهی 512 کیلوبایت تا ۲ مگابایت بود. بخاطر اینکه حافظه کش L2 در پردازندهی K6-III مجتمع شده بود و همچنین در خارج از تراشه حافظه ی پنهان L2 دیگری وجود داشت که بر روی مادربرد تعبیه شده بود و سرعت کمتری در مقایسه با سطح L2 پردازندهی K6-III داشت از این رو حافظه پنهان سطح L2 به سطح L3 تبدیل و نام گذاری شد.
اما در اوایل قرن ۲۱ حافظه پنهان سطح L3 توسط شرکت اینتل [9] به داخل تراشه انتقال داده شد که یک روش مناسبی برای بهبود عملکرد [10] پردازنده ایجاد شد. اولین پردازندههای دارای حافظه پنهان سطح L3 در داخل تراشه (بر تراشه[11])، پردازندههای خانوادهی پنتیوم ۴ اینتل [12] بود. پردازندههای خانوادهی پنتیوم ۴ با کش بر تراشه L3 در مقایسه با پردازندههای پنتیوم ۴ بدون کش L3 از ۱۰ تا 20 درصد افزایش سرعت در عملکرد پیدا کردند. پردازندههای پینتیوم ۴ دارای حافظه پنهان سطح L3 پردازندهی پنتیوم ۴ نسخهی پیشرفته [13] نام گذاری شد. در بخش بعدی (حافظه پنهان (کش) در پردازندههای چند هسته ای) ، بیشتر در مورد سطوح حافظه پنهان در پردازندههای چند هستهای و مقایسه آنها در پردازنده های مختلف صحبت خواهیم کرد.
[1] Level
[2] Multi-core processor
[3] Core
[4] Data cache
[5] Instruction cache
[6] Chip
[7] Bus
[8] Central Processing Unit (CPU)
[9] Intel
[10] Performance
[11] On chip
[12] Pentium IV
[13] Intel Pentium ۴ Extreme Edition (Pentium ۴ EE)
کپی و نشر این پست با ذکر منبع بلامانع است.