Cache یا حافظه نهان پردازنده چیست


کش در کامپیوتر اصطلاحی است که در مورد برخی قطعات مثل هارد و سی‌پی‌یو بکار می‌رود پس اول به سراغ خود اصطلاح Cache می‌روم تا ببینیم این فناوری چه می‌کند.

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

امروزه تقربا تمام هارد دیسکها و DVD درایو‌ها مجهز به این حافظه ذخیره کوتاه مدت هستند که به آن بافر هم گفته می‌شود اما در این قطعات معمولا از یک سطح حافظه استفاده می‌شود و مانند اغلب پردازنده‌های امروزی مجهز به دو و سه سطح از حافظه کش نیستند. با این حال همین مقدار هم تاثیر قابل توجهی در کارایی آنها دارد. اما ببینیم این کش چه تاثیری در پردازنده دارد.
وقتی اطلاعات از روی رم فراخوانده میشوند 60 نانوثانیه (یک ثانیه تقسیم بر 60 میلیارد) طول میکشد تا این اطلاعات در دسترس قرار بگیرند که مدت زمان واقعا کمی است ولی وقتی به چرخه زمانی پردازنده دقت کنیم که تنها 2 نانوثانیه است میفهمیم این زمان برای پردازنده زمانی طولانی است. کش‌های اولیه ابتدا روی مادربورد قرار گرفتند و زمان دسترسی به اطلاعات را به 30 نانوثانیه کاهش دادند و بعد مشخص شد که این مقدار هم کافی نیست و یک لایه دیگر به آن اضافه کردند که این بار این لایه درون پردازنده قرار گرفت و با همان سرعت پردازنده کار می‌کرد. بعدها این ساختار به کلی عوض شد و اکنون علاوه بر این دو لایه یک لایه دیگر همبه حافظه درونی پردازنده اضافه شده که شروع کار آن را می‌توان از زمان ورود پردازنده‌های چند هسته‌ای دانست.

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

فراخوانی اطلاعات از سمت کش نیز میتواند حالت‌های مختلفی داشته باشد. در یکی از این حالتها تنها در یک مسیر اطلاعات روی کش کپی می‌شوند که مزیت‌هایی مثل آدرس‌‌دهی بهتر اطلاعات روی رم را دارد اما در مقابل چندین مسیر برای کپی کردن اطلاعات روی رم بکارگرفته می‌شوند که این روش هم مزایا و معایبی دارد. مزیت آن در این است که اطلاعات روی کش بازنویسی نمی‌شوند و زمان دسترسی به داده‌های رم کوتاه‌تر خواهد بود اما از طرف دیگر مقایسه اطلاعات انتقال داده شده روی کش با رم باعث افزایش زمان تاخیر رم می‌شود. امروزه مشخص شده که استفاده از چند مسیر انعطاف بیشتری را برای پردازنده ایجاد می‌کند و کارایی بهتری دارد. اینتل در پردازنده‌های جدید خود مثل Core i7 و i5 در سطح L1‌ از هشت مسیر برای انتقال دستورالعمل‌ها و از 4 مسیر برای انتقال داده‌ها استفاده می‌کند که در سطح L2‌نیز تقریبا همینطور است و 8 مسیر برای انتقال اطلاعات استفاده می‌شوند در حالی که در لایه سوم 16 مسیر برای ارتباط گذاشته شده است.
اما در AMD شیوه متفاوتی به کار گرفته شده که از مهمترین دلایل اختلاف این نوع پردازنده‌ها با اینتل است. در فنوم‌های چهار‌هسته‌ای برای لایه اول تنها 2 مسیر ایجاد شده که باعث کاهش زمان تاخیر میشود اما در کنار آن ظرفیت لایه L1 افزایش داده شده و 64 کیلوبایت برای دستورالعمل‌ها و 64 کیلوبایت نیز برای داده‌ها است. AMD در لایه‌های بعدی تهاجمی‌تر عمل می‌کند بطوریکه در لایه دوم همان هشت مسیر را استفاده کرده که مشابه اینتل است ولی در لایه سوم 48 مسیر برای انتقال اطلاعات فراهم شده است.
این ساختار و تفاوت معماری کش نمی‌تواند معیار کاملی برای مقایسه محصولات این دو تولیدکننده بزرگ پردازنده باشد و در کنار آن باید به سایر عوامل هم توجه کرد. ولی این نکات از این نظر که تفاوت بین این دو تولید کننده را بدانید بد نیست.
اولین سطح از کش دارای دو بخش است و محلی است که دستورالعمل‌های پردازنده و داده‌های مهم در آن قرار می‌گیرد. این سطح L1 نامیده میشود. AMD اخیرا ( در همین یکی دو ساله) ساختار 64 کیلوبایتی را به کش پردازنده‌هایش اضافه کرد و هر یک از این دو بخش (داده‌ها و دستورالعمل‌ها) دارای 64 کیلوبایت حافظه‌هستند در حالی که اینتل همچنان به ساختار 32 کیلوبایتی متعهد مانده است. این لایه برای هر یک از هسته‌ها اختصاصی است و اطلاعات هر هسته در اختیار سایر هسته‌ها قرار نمی‌گیرد.

کش در لایه دوم تا مدت‌ها به صورت مستقل برای هر هسته بود و حتی پیش از آن هم فقط AMD از این لایه درون CPU استفاده می‌کرد و در اینتل کش لایه دوم با هسته‌ها روی یک سطح نبودند. در واقع پس از معرفی فناوری ساخت 180 نانومتری کش لایه دوم به سطح سیلیکونی CPU اضافه شد. با ورود پردازنده‌های Core 2 Due کش مشترک در اینتل خلق شد و لایه دوم بطور مشترک بین دو هسته مورد استفاده قرار گرفت و این روش در چهار هسته‌ای های اینتل هم ادامه پیدا کرد تا جایی که در چهار هسته‌ای دو کش L2 دیده می‌شد. زیرا این مدل‌ها چهار هسته‌ای واقعی نبودند و از اتصال دو سطح سیلیکونی هر یک با دو هسته تشکیل شدند. البته دلیل اینتل برای این شیوه مسائل اقتصادی و صرفه این مدل‌ها مطرح شد با این حال AMD ساختار جدید را در فنوم‌ها پیاده کرد که همراه با کش لایه سوم بود.

کش لایه سوم سال‌ها پیش ایجاد شد و البته مشکلات خاص خود را داشت بطوریکه بعد از استفاده IBM در سال 1995 این سطح حافظه چندان مورد توجه قرار نگرفت تا اینکه اینتل این لایه‌ها را در سال 2003 به رده حرفه‌ای محصولات خود اضافه کرد. نتیجه این شد که ایتانیوم و پنتیوم 4 اکستریم صاحب L3 شدند و نسل فنوم‌های AMD نیز از همان ابتدا با L3 همراه شدند هر چند که مدل‌های اولیه تنها 2 مگابایت حافظه L3 داشتند و در مدل‌های بعدی هم بطور متوسط از 6 مگابایت حافظه استفاده شد. در این مرحله اینتل توانست سطح بالاتری از کش را در لایه سوم ارائه دهد.


منبع :
Cache یا حافظه نهان پردازنده چیست | زندگی آنلاین عصر ارتباطی
__________________