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

+- باشگاه کاربران روماک (https://forum.romaak.ir)
+-- انجمن: انجمن کامپیوتر، سرور و شبکه (https://forum.romaak.ir/forumdisplay.php?fid=3)
+--- انجمن: کامپیوتر و اینترنت (https://forum.romaak.ir/forumdisplay.php?fid=6)
+---- انجمن: سخت افزار (https://forum.romaak.ir/forumdisplay.php?fid=97)
+---- موضوع: معرفی حافظه کش در پردازنده‌ها (/showthread.php?tid=1204)



معرفی حافظه کش در پردازنده‌ها - saberi - ۹۵/۲/۱۰

[تصویر:  do.php?img=1030]

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

[تصویر:  do.php?img=1031]

وقتی اطلاعات از روی رم فراخوانده میشوند ۶۰ نانوثانیه (یک ثانیه تقسیم بر ۶۰ میلیارد) طول می‌کشد تا این اطلاعات در دسترس قرار بگیرند که مدت زمان واقعا کمی است ولی وقتی به چرخه زمانی پردازنده دقت کنیم که تنها ۲ نانوثانیه است خواهیم دید این زمان برای پردازنده زمانی طولانی است. کش‌های اولیه ابتدا روی مادربورد قرار گرفتند و زمان دسترسی به اطلاعات را به ۳۰ نانوثانیه کاهش دادند و بعد مشخص شد که این مقدار هم کافی نیست و یک مرحله دیگر به آن اضافه کردند که این بار هر دو لایه درون پردازنده قرار گرفت و با همان سرعت پردازنده کار می‌کرد. بعدها این ساختار به کلی عوض شد و اکنون علاوه بر این دو لایه یک لایه دیگر هم به حافظه درونی پردازنده اضافه شده که شروع کار آن را می‌توان از زمان ورود پردازنده‌های چند هسته‌ای دانست.

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

[تصویر:  do.php?img=1032]

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

[تصویر:  do.php?img=1033]

فراخوانی اطلاعات از سمت کش نیز می‌تواند حالت‌های مختلفی داشته باشد. در یکی از این حالت‌ها تنها در یک مسیر اطلاعات روی کش کپی می‌شوند که مزیت‌هایی مثل آدرس‌‌دهی بهتر اطلاعات روی رم را دارد اما در مقابل چندین مسیر برای کپی کردن اطلاعات روی رم بکارگرفته می‌شوند که این روش هم مزایا و معایبی دارد. مزیت آن در این است که اطلاعات روی کش بازنویسی نمی‌شوند و زمان دسترسی به داده‌های رم کوتاه‌تر خواهد بود اما از طرف دیگر، مقایسه اطلاعات انتقال داده شده روی کش و رم باعث افزایش زمان تاخیر رم می‌شود. امروزه مشخص شده که  استفاده از چند مسیر انعطاف بیشتری را برای پردازنده ایجاد می‌کند و کارایی بهتری دارد. اینتل در پردازنده‌های خود مثل Core i7 و i5 در سطح L1‌ از هشت مسیر برای انتقال دستورالعمل‌ها و از ۴ مسیر برای انتقال داده‌ها استفاده می‌کند که در سطح L2‌ نیز تقریبا همینطور است و ۸ مسیر برای انتقال اطلاعات استفاده می‌شوند در حالی که در لایه سوم ۱۶ مسیر برای ارتباط گذاشته شده است.
اما در AMD شیوه متفاوتی به کار گرفته شده که از مهمترین دلایل تفاوت این نوع پردازنده‌ها با اینتل است. در فنوم‌های چهار‌هسته‌ای برای لایه اول تنها دو مسیر ایجاد شده که باعث کاهش زمان تاخیر می‌شود اما در کنار آن ظرفیت لایه اول افزایش داده شده و ۶۴ کیلوبایت برای دستورالعمل‌ها و ۶۴ کیلوبایت نیز برای داده‌ها است. AMD در لایه‌های بعدی تهاجمی‌تر عمل می‌کند بطوریکه در لایه دوم همان هشت مسیر را استفاده کرده که مشابه اینتل است ولی در لایه سوم ۴۸ مسیر برای انتقال اطلاعات فراهم شده است.
اولین سطح از کش دارای دو بخش است و محلی است که دستورالعمل‌های پردازنده و داده‌های مهم در آن قرار می‌گیرد. این سطح L1 نامیده میشود. AMD ساختار ۶۴ کیلوبایتی را به کش پردازنده‌هایش اضافه کرد و هر یک از این دو بخش (داده‌ها و دستورالعمل‌ها) دارای ۶۴ کیلوبایت حافظه ‌هستند در حالی که اینتل همچنان به ساختار ۳۲ کیلوبایتی متعهد مانده است. این لایه برای هر یک از هسته‌ها اختصاصی است و اطلاعات هر هسته در اختیار سایر هسته‌ها قرار نمی‌گیرد.

[تصویر:  do.php?img=1034]

کش در لایه دوم تا مدت‌ها به صورت مستقل برای هر هسته بود و حتی پیش از آن هم فقط AMD از این لایه درون CPU استفاده می‌کرد و در اینتل کش لایه دوم با هسته‌ها روی یک سطح نبودند. در واقع پس از معرفی فناوری ساخت ۱۸۰ نانومتری کش لایه دوم به سطح سیلیکونی CPU اضافه شد. با ورود پردازنده‌های Core 2 Due کش مشترک در اینتل خلق شد و لایه دوم بطور مشترک بین دو هسته مورد استفاده قرار گرفت و این روش در چهار هسته‌ای‌های اینتل هم ادامه پیدا کرد تا جایی که در چهار هسته‌ای‌های اولیه، دو کش L2 دیده می‌شد. زیرا این مدل‌ها چهار هسته‌ واقعی نبودند و از اتصال دو سطح سیلیکونی هر یک با دو هسته تشکیل شدند. البته دلیل اینتل برای این شیوه، مسائل اقتصادی و صرفه این مدل‌ها مطرح شد با این حال AMD ساختار جدید را در فنوم‌ها پیاده کرد که همراه با کش لایه سوم بود.
کش لایه سوم سال‌ها پیش ایجاد شد و البته مشکلات خاص خود را داشت بطوریکه بعد از استفاده IBM در سال ۱۹۹۵ این سطح حافظه چندان مورد توجه قرار نگرفت تا اینکه اینتل این لایه‌ها را در سال ۲۰۰۳ به رده حرفه‌ای محصولات خود اضافه کرد. نتیجه این شد که ایتانیوم و پنتیوم ۴ اکستریم، صاحب L3 شدند و نسل فنوم‌های AMD نیز از همان ابتدا با L3 همراه شدند هر چند که مدل‌های اولیه تنها ۲ مگابایت حافظه L3 داشتند و در مدل‌های بعدی هم بطور متوسط از ۶ مگابایت حافظه استفاده شد. در این مرحله اینتل توانست سطح بالاتری از کش را در لایه سوم ارائه دهد.