Sorry, no posts matched your criteria.

این سایت در ستاد ساماندهی ثبت شده و تابع قوانین جمهوری اسلامی میباشد

حافظه‌ی نهان (Cache) و تاثیر آن در عملکرد پردازنده

۱۰ دی ۱۳۹۶
بدون نظر

اگر تا به‌حال به مشخصات پردازنده‌ی رایانه‌ی خود توجه کرده باشید حتما با واژه‌ای به نام کش (Cache) رو‌به‌رو شده‌اید، در واقع باید بدانید این واحد تاثیر قابل توجهی در سرعت و عملکرد پردازنده‌‌ها دارد، این بخش را با نام‌های حافظه‌ی نهان، حافظه‌ی میان‌گیر و حافظه‌ی CPU نیز می‌شناسند، همانطور که گفتیم حافظه‌ی کش نقش قابل ملاحظه‌ای در عملکر پردازنده دارد، برای آشنایی با این واحد و نحوه‌ی عملکرد آن با پاس کن ! همراه باشید.

حافظه‌ی کش پردازش , حافظه‌ی نهان (Cache) و تاثیر آن در عملکرد پردازنده, پاس کن !

حافظه‌ی نهان (Cache) چیست؟

کش (Cache) حافظه‌ی کوچکی داخل پردازنده هست که همیشه مقداری از اطلاعات موجود در رم (RAM) را به صورت موقتی در خود نگهداری کرده و آن‌ها را برای پردازش در اختیار CPU قرار می‌هد، حافظه‌ی Cache حدودا از سال ۱۹۸۰ در پردازنده‌ها مورد استفاده قرار گرفت، نام این واحد از کلمه‌ی Cacher که در زبان فرانسوی به معنای “نهان کردن یا مخفی کردن” هست گرفته شده.

 

در دهه‌های اولیه‌ی استفاده از کامپیوتر حافظه‌ی اصلی بسیار کند بود و در عین حال پردازنده‌ها نیز از سرعت بالایی برخوردار نبودند، با گذشت زمان و در اوایل سال ۱۹۸۰ در حالی که حافظه‌های رایانه‌ای هنوز سرعت کمی داشتند سرعت پردازنده‌ها به طرز چشمگیری افزایش یافت به طوری که حافظه‌‌ی اصلی و رم توان رقابت با سرعت پردازنده‌ها را نداشتند و وقت زیادی از پردازنده صرف انتقال اطلاعات از حافظه‌ به بخش پردازش CPU می‌شد، می‌توانید مقایسه‌ی سرعت رشد حافظه‌ی DRAM و CPU را در نمودار زیر مشاهده کنید:

حافظه‌ی کش پردازش , حافظه‌ی نهان (Cache) و تاثیر آن در عملکرد پردازنده, پاس کن !

اگر کمی با نحوه‌ی عملکرد رایانه‌ها آشنایی داشته باشید حتما می‌دانید که سیستم‌عامل و سایر نرم‌افزار‌ها داخل حافظه‌ی اصلی (SSD یا HDD) قرار دارند، این قطعه نسبت به پردازنده سرعت بسیار کمتری دارد از این رو حافظه‌ی رم به وجود آمد تا این مشکل را برطرف کند هرچند رم از سرعت بالاتری نسبت به حافظه‌ی اصلی برخوردار بود ولی توان مقابله با سرعت پردازنده‌ را نداشت و نتوانست این کمبود را جبران کند، برای این منظور در نهایت با اختراع حافظه‌ی Cache و عملیات کشینگ این مشکل تا حدودی برطرف شد، می‌توانید ترتیب قرارگیری حافظه‌ها را در تصویر زیر به صورت خیلی ساده مشاهده کنید:

حافظه‌ی کش پردازش , حافظه‌ی نهان (Cache) و تاثیر آن در عملکرد پردازنده, پاس کن !

اگر به تصویر توجه کنید متوجه وجود بخش‌های مختلفی در CPU می‌شوید، این اجزا به ترتیب از سمت راست به چپ: حافظه‌ی کش پردازنده (رنگ نارنجی)، حافظه‌ی رجیستر پردازنده (رنگ آبی) و هسته‌ی پردازنده (رنگ بنفش) هستند، حال قصد داریم به داخل CPU سفر کرده و با نحوه‌ی کار حافظه‌ی کش بیشتر آشنا شویم (عملکرد سایر قسمت‌ها در آموزش‌ها بعدی مورد بررسی قرار خواهند گرفت)

حافظه‌ی کش (Cache) چگونه کار می‌کند؟

برای اینکه بهتر با مفهوم کش و عملیات Caching آشنا شوید نحوه‌ی عملکرد این قسمت را با مثالی ساده برای شما توضیح می‌دهیم:

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

حافظه Cache پردازنده نیز به همین صورت هست، این حافظه‌ها با حجم کم خود (در حد چند مگابایت) و ساختار خاصی که دارند باعث میشوند سرعت جستجو در آن‌ها تا حد چشمگیری افزایش یافته و به همین دلیل در سرعت پردازنده نقش چشمگیری ایفا می‌کنند، اطلاعاتی که CPU بیشتر به آن‌ها احتیاج دارد در حافظه کش ذخیره می‌شوند تا سرعت پردازنده بالاتر رود، در اکثر پردازنده‌های امروزی چند لایه حافظه کش قرار دارد (تا ۳ یا ۴ لایه)، این بخش تاثیر مستقیمی در قیمت پردازنده‌ها نیز دارد!

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

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

معمولا در پردازنده‌های امروزی حافظه‌ی کش از چند لایه (۳ یا ۴ لایه) تشکیل شده‌ هست، این لایه‌ها به ترتیب L1، L2، L3، L4 نامیده می‌شوند، میزان حجم این حافظه‌ها به صورت زیر تقسیم‌بندی می‌شود:

L4 > L3 > L2 > L1

سرعت عملکرد این لایه‌ها نیز به صورت زیر دسته‌بندی می‌شود:

L1 > L2 > L3 > L4

همانگونه که متوجه شده‌اید لایه‌ی L1 کمترین اندازه را داشته ولی در عین حال از بیشترین سرعت برخوردار هست و در طرف مقابل سطح L4 بیشترین حجم و کمترین سرعت را نسبت به دیگر لایه‌ها دارد.

هنگامی که پردازنده به داده‌ای نیاز داشته باشد ابتدا سطح L1 را مورد بررسی قرار می‌دهد در صورتی که داده‌ی مورد نظر در آنجا  وجود نداشته باشد به سراغ سطح L2 می‌رود، این عملیات تا پیدا کردن داده‌ی مورد نیاز و تا سطح L4 انجام می‌شود به این عمل Cache Miss گفته می‌شود، در نهایت اگر اطلاعات مورد نیاز در حافظه‌ی کش موجود نباشد CPU به ناچار به حافظه‌ی RAM مراجعه کرده و اطلاعات مورد نیاز خود را از آن‌جا استخراج می‌کند.

ساختار لایه‌های کش در پردازنده‌های مختلف، متفاوت می‌باشد، در برخی از پردازنده‌ها لایه‌ها دارای ساختار پوششی هستند یعنی یک کپی از اطلاعات موجود در کش سطح ۱ در سطح ۲ نیز وجود دارد، همچنین یک کپی از اطلاعات موجود در کش سطح ۲ در کش سطح ۳ موجود هست، علاوه بر این ساختار طرح دیگری نیز در سطوح کش وجود دارد به این‌صورت که هیچ‌یک از داده‌های موجود در لایه‌ها با دیگری یکسان نخواهند بود.

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

در پردازنده‌های چند هسته‌ای (پردازنده‌های امروزی) معمولا هر هسته مقدار مشخصی حافظه‌ی کش اختصاصی و مقداری حافظه‌ی کش اشتراکی در اختیار دارد که بسته به پردازشی که در حال انجام آن هست این مقدار متفاوت خواهد بود، طرح ساده‌ای از این مفهوم را در تصویر زیر مشاهده می‌کنید:

حافظه‌ی کش پردازش , حافظه‌ی نهان (Cache) و تاثیر آن در عملکرد پردازنده, پاس کن !

چرا کل حافظه‌ی کامپیوتر را از نوع Cache نمی‌سازند؟

با مطالعه‌ی توضیحات بالا شاید این سوال برای شما پیش‌ بیاید که چرا کل حافظه‌ی سیستم را از نوع کش نمی‌سازند تا به این ترتیب سرعت کامپیوترها افزایش پیدا کند؟

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

سخنی با شما دوست عزیز: تمام آموزش‌های پاس کن ! به صورت رایگان برای شما منتشر می‌شود و رایگان خواهد ماند، همچنین برای راحتی شما هیچ‌گونه تبلیغات مزاحمی در سایت درج نخواهیم کرد، اما با توجه به افزایش حجم مطالب و تعداد کاربران، برای تامین هزینه‌های سرور (Server) و ادامه‌ی فعالیت سایت به حمایت‌های شما نیازمندیم، اگر این آموزش برای شما مفید بود و از مطالعه‌ی آن لذت بردید، میتوانید با مبلغ ناچیزی (حتی ۱۰۰۰ تومان) از ما حمایت کرده و با این کار ارزشمند خود ما را در ادامه‌ی فعالیت سایت یاری دهید…

تمامی حقوق مادی و معنوی برای پاس کن ! محفوظ میباشد.

طراحی و بهینه سازی : هاست دانلود ایران | اورداپ سرور