کش خوب است یا بد؟

شاید تا به حال بارها کلمه کش ( حافظه Cache ) را به گوش خود شنیده و احتمالا بارها دیده اید که گفته می شود این مدل از پردازنده فول کش است و یا نه Half Cache است . این حافظه اصلا چه کاری انجام می دهد و یا به طور کلی اصلا چه چیزی هست؟ این ها سوالاتی است که بارها از خود پرسیده ایم.آیا کش خوب است ؟
کش یک حافظه بسیار گران قیمت است که حتی در طول مدت چندین سال از ارائه آن بازهم قیمت آن با کاهش رو به رو نشده است. این که کش چه کاری انجام می دهد مورد توجه بسیاری از افرادی است که از سیستم رایانه ای بهره می برند. همانطور که می دانیم سرعت دسترسی به اطلاعات در حافظه فرار RAM بسیار پائین تر از سرعت دسترسی به داده ها در CPU است. CPU به دلایل مختلف بسیار سریعتر از تمامی قطعات موجود در یک سیستم سخت افزاری عمل می کند. میلیون ها دیود و ترانزیستور در CPU باعث می شوند تا با سرعتی سرسام آور یک پردازش اطلاعات انجام گیرد ، سرعت RAM و هارد دیسک ها به هیچ وجه قابل مقایسه با سرعت پردازش CPU نیست. در نظر بگیریم برای مثال یک جوی آب باریک داریم و یک شیر آب بسیار بزرگ که آب بسیار زیادی از آن خارج می شود. اگر شیر آب را تا آخرین مقدار بازکنیم از جوی آب سر ریز خواهد شد و در این شرایط اگر بخواهیم حتی قطره ای آب هدر نرود می بایست حتما شیر آب را به مقداری تغییر دهیم که با جوی باریک برابری داشته باشد. این مثال مصداق هارد دیسک ، RAM و پردازنده است. سرعت پردازنده چون بسیار بالاتر ازاجزای دیگر سیستم است مدام باید منتظر بماند تا از همان جوی آب که در رایانه BUS نامیده می شود ، اطلاعات به اجزای مختلف سیستم وارد شوند. پس سرعت پردازش داده ها در پردازنده اصلی بسیار بالاتر از دیگر قطعات سیستم سخت افزاری است.
در این جاست که حافظه نهان کش به داد پردازنده رسیده و باعث می شود تا CPU با پیش بینی حرکات بعدی کاربر تا اندازه زیادی هم به قطعات دیگر رسیدگی کند و هم به دستورات کاربر سریعتر پاسخ دهد. کش حافظه ای بسیار سریع است این حافظه با سرعتی فوق تصور ما اطلاعات را در خود نگهداری و در مواقع لازم از آن بهره می برد. پردازنده برای این که سرعت سیستم را تا حد بالایی نگه دارد پس از یک سری کارها ، در حافظه کش آنچه که احتمال می دهد در مرحله بعدی کاربر انجام دهد را نگهداری می کند بدین ترتیب دیگر لازم نیست که از اول همه کارها انجام شود. برای مثال و برای روشن شدن این مطلب ، نمونه ای را ذکر می کنیم. فردی برای خوردن یک وعده غذا همیشه برنامه دارد. یعنی روز اول یک نوع ، روز دوم یک نوع دیگر و … و هربار هم تنها به یک رستوران غذا سفارش می دهد. پس ازگذشت یک مدت رستوران متوجه برنامه هفتگی این فرد شده و غذاها را همیشه طبق آمار زودتر آماده می کند. بدین ترتیب سرعت رسیدن غذاها به مقصد سریع تر انجام می شود. اما پس از گذشت مدتی نوع غذاها تغییر می کند. علاوه بر انواع قبلی یک سری غذا جدید هم اضافه می شود. در این جاست که رستوران باید غذاهای جدید را هم در لیستی دیگر آماده سازد ، این دو به مانند همان کش و دیگر اجزای سیستم عمل می کنند.
دو میز هم به مانند L1 و L2 هستند. این که گفتته می شود یک سیستم فول کش است بدین معناست که از هردو L1 و L2 بهره می برد و پردازنده ای که تنها L1 را دارد پس Half Cache است. پس وجود کش تا حد بسیار زیادی به افزایش سرعت کار سیستم کمک می کند. عدم وجود کش هرچند هم که بهترین سیستم سخت افزاری باشد ، اما فقدان آن مطمئنا حس خواهش شد. نکته بعدی در این مورد این که آیا همیشه کش خوب است یا نه بالعکس گاهی مشکل ساز هم می شود. کش گاهی خوب و گاهی بد است. سرعت را افزایش می دهد اما از طرفی هم باعث کرش ( Crash ) شدن سیستم می شود و این مورد بیشتر تر Full Cache ها رخ می دهد. نه تنها در سخت افزار بلکه در نرم افزارها هم کش وجود دارد ، در مرورگر معروف موزیلا کش نیز وجود دارد ، حتما به این مورد برخورد کرده اید که فایرفاکس Crash می شود ، دلیل این امر پرشدن کش داخلی مرورگر می باشد. تنها مشکلی که کش می تواند ایجاد کند چه در سخت افزار و چه در نرم افزار Crash شدن سیستم است که در سخت افزار با یک ریست کلی سیستم ، به حالت اولیه باز خواهد گشت.
در جای دیگر هم کش مورد استفاده قرار می گیرد و آن هم سیستم Cache Server شرکت های ارائه دهنده سرویس های اینترنتی است. در این سیستم مدیر ISP با توجه به زمانی معین آمار سایت هایی که بیشترین بازید را دارند در کش سرور خود قرار داده و بدین ترتیب همان سایت ها بسیار سریعتر برای کاربران بارگذاری خواهند شد. البته این مورد به همین سادگی که گفته شد هم نیست.
نتیجه آن که کش یک حافظه بسیار گران قیمت و البته بسیار مفید است که قادر است تا سرعت عملکرد سیستم را تا حد زیادی افزایش دهد. گاهی مفید و گاهش مشکل ساز است ، اما بودنش بهتر از نبودن آن است.


(2 امتياز )
در مورد مطلبی که دربارهی Crash کردن سیستم به دلیل کش گفتید: کاملاً مخالفم. با توجه به چیزهائی که دربارهی تولید پردازنده و طرز کار آن می دانم، می توانم با اطمینان بسیار زیادی بگویم: کش باعث هیچ مشکلی نمی شود.
در واقع باید بگویم خرافات بسیاری در مورد Crash در دنیای کامپیوتر وجود دارد. علت های Crash کردن معدود است و برایم ثابت شده که آنچه متخصص مایکروسافت، Mark Russinovich در مورد Crash کردن در وب لاگ خود می گوید صد در صد صحیح است.
خیلی مقاله مفیدی بود
مرسی
من هم موافقم. این مطلب crash کردن را از کجا اوردید ؟! هیچ crash کردنی در کار نیست !
مشکل crash برای پیش اومده
این مطلب کاملاً درسته
مطالب با ارزشی بود.ایام به کامتان باد.
کی گفته کهcrash سیستم های فول کش مربوط به cash انهاست؟!!!
اگر این چنین بود باید cpu من که e8400 هست با ۶mb cash که اره کرش کنه! درحالی که در طول این یک سالی که دارم ازش استفاه میکنم و هرکاری رو که فکرش و کنید از این سیستم کشیدم حتی یکبار هم کرش اتفاق نفتاد!
البته من علاوه بر cpu از قطعات معتبر دیگه هم استفاده کردم ولی در هر صورت اگه کرش مربوط به سی پی یو بود باید بی توجه به قطعات سیستم من سی پی یو کرش می کرد! اما چنین نیست
مطمئن باشید این حرف درست نیست . و گرنه شرکت های معتبر سعی در بیان این مطلب می کردند.
در مورد full cache و half cache باید بگم این موضوع مربوط به زمان pentium III مدل slot بود و فرق آن هم این بود که در فول کشها سرعت cache با سرعت پردازنده برابر و درمورد half cache نصف سرعت پردازنده عمل میکرد
سلام
این مقاله در مورد کش کمی گم راه کننده و اشتباه هست که البته مشکل از نویسنده ی اصلی بوده حتماً!
الان پردازنده ها همه دارای کش L1 L2 و L3 هستند! کش به میزانی که پردازنده لازم داشته باشه بر روی آن قرار گرفته و گفتن فول کش و نیم کش اشتباه هست مثلا در پردازنده های اینتل ۲ مدل Celeron و Core2Dou پردازنده های Celeron دارای کش خیلی کمتری هستند ولی فرق این ۲ مثلاً توی مدل ۲٫۵ فقط کش نیست بلکه معماری این ۲ با هم فرق داره و این پردازنده به همون میزانی که میتونسته از کش استفاده بکنه بر روی اون قرار گرفته.
البته این موضوع درسته که کش گرون هست ولی الان با قیمت هایی که پردازنده ها دارند قیمت کش اصلاً به چشم نمیاد برای تولید کننده و اگر لازم باشه میزان کش را بالا میبره، گرونترین نوع کش هم L1 هست که معمولاً برای هر هسته ۳۲-۶۴-۱۲۸ یکی از این ۳ حالت در نظر گرفته میشه وقتی روی یک پردازنده زده شده ۶ مگ کش بدونید که L2 یا L3 هست و L1 را باید از ریز مشخصات پردازنده در بیارید، مثلاً در پردازنده ی Intel Core i7 کش به این صورت هست:
۳۲KB L1 برای هر هسته (برای دستور العمل ها)
۲۵۶KB L2 برای هر هسته (برای دستور العمل ها و داده ها به صورت تر کیبی)
۸MB L3 برای همه ی هسته ها به صورت اشتراکی (برای دستور العمل ها و داده ها به صورت تر کیبی)
در مورد کرش کردن فکر نمیکنم این موضوع در مورد پردازنده ی جدید صدق بکنه و مربوط به زمان P3 و به پایین هست که مشکل ناسازگاری نرم افزارها با کش پردازنده بود!
- من از مقاله ی کارت گرافیکتون در چند انجمن با ذکر منبع استفاده کردم!
با تشکر از وبسایت خوبتون
[...] ۱۰- کش خوب است یا بد؟ [...]