کش در کامپیوتر اصطلاحی است که در مورد برخی قطعات مثل هارد و سیپییو
بکار میرود پس
اول به سراغ خود اصطلاح 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 مگابایت حافظه
استفاده شد . در این مرحله اینتل توانست سطح بالاتری از کش را در لایه سوم
ارائه دهد .