وبلاگ

حافظه کش چیست؟

حافظه کش چیست

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

اگر پردازنده برای پردازش، به داده‌ای نیاز داشته باشد؛ ابتدا حافظه کش را بررسی می‌کند. اگر داده وجود داشته باشد، CPU می‌تواند به سرعت به آن دسترسی پیدا کند. در غیر اینصورت، باید داده‌ها را از حافظه اصلی واکشی (Fetch) کند. در واقع می‌توان گفت که کش یک بافر بین RAM و CPU است.

این مقاله توسط کارشناس فنی تیوان سرور به نگارش درآمده است؛ پیشنهاد می‌کنیم اگر می‌خواهید به‌صورت کامل با Cache Memory آشنا شوید؛ حتما تا انتهای مطلب را مطالعه کنید.

حافظه کش، کوچک ولی پر سرعت!

حافظه Cache در مقایسه با RAM بین 10 تا 100 برابر سریع‌تر عمل می‌کند و تنها به چند نانو ثانیه برای پاسخ به درخواست CPU زمان نیاز دارد! کش یک حافظه کوچک‌تر و سریع‌تر است که نسخه‌های کپی از داده‌های مورد نیاز را از حافظه اصلی ذخیره می‌کند. در یک CPU، کش‌های جداگانه‌ای وجود دارد که برای ذخیره دستورالعمل‌ها و داده‌ها استفاده می‌شوند. مهمترین کاربرد حافظه کش کاهش میانگین زمان دسترسی به داده‌ها از حافظه اصلی است.

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

یکی از نکاتی که بد نیست بدانید؛ این است که نام سخت افزار واقعی که برای حافظه کش استفاده می‌شود، Static Random Access Memory یا SRAM است. در صورتی که نام سخت افزاری که در حافظه اصلی استفاده می‌شود، DRAM است. نگران نباشید؛ در مقالات بعدی مجله تیوان این موضوع را به طور کامل شرح می‌دهیم.

انواع حافظه کش

انواع حافظه کش

شاید تعجب برانگیز باشد؛ اما میزان نزدیکی و میزان دسترسی حافظه کش به ریزپردازنده نوع سطح یا Level آن را نشان می‌دهد. به طور کلی چهار سطح حافظه پنهان داریم:

حافظه کش L1

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

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

حافظه کش L2

حافظه نهان سطح دو که Secondary Cache یا حافظه ثانویه هم نامیده می‌شود، نسبت به کش سطح یک ظرفیت بیشتری دارد. این حافظه یا مستقیما روی خود CPU قرار می‌گیرد یا روی یک تراشه جداگانه نصب می‌شود. در حالتی که روی تراشه جداگانه باشد، یک گذرگاه اختصاصی و پرسرعت بین CPU و کش ساخته می‌شود تا فشار روی گذرگاه اصلی سیستم کم شده و سرعت کل سیستم پایین نیاید. به یاد داشته باشید که از نظر سرعت، L2 Cache کندتر از L1 Cache است.

حافظه کش L3

حالا نوبت به کش L3 می‌رسد! این سطح از حافظه کش به‌منظور بهبود عملکرد کش‌های L1 و L2 طراحی شده و تخصصی‌تر از آن‌ها عمل می‌کند. کش L3، که با نام Last Level Cache (LLC) نیز شناخته می‌شود؛ در مقایسه با L1 و L2 بزرگتر اما کندتر است. این حافظه خارج از CPU قرار دارد و توسط تمام هسته‌ها به اشتراک گذاشته می‌شود، که نقش حیاتی در تبادل داده‌ها و ارتباطات بین هسته‌ها ایفا می‌کند. ظرفیت کش L3 معمولاً بین 1 تا 8 مگابایت متغیر است. توجه داشته باشید که کش L3 معمولاً دو برابر سریع‌تر از حافظه DRAM است و این نوع کش در همه پردازنده‌ها موجود نیست!

یک حقیقت پنهان!

توجه داشته باشید که میزان حافظه نهان (حافظه کش) با افزایش میزان حافظه فلش یا DRAM افزایش نمی‌یابد. این موضوع کمی گیج کننده است؛ زیرا اغلب تصور می‌شود، Cache Memory و Memory Caching یکسان هستند.

همانطور که گفتیم، حافظه کش یک حافظه بسیار سریع و کوچک است که سرعت دسترسی پردازنده به داده‌ها را بسیار کم می‌کند؛ در حالی که Memory Caching با استفاده از DRAM یا فلش سبب بهبود عملکرد I/O می‌شود.

همه چیز در مورد نگاشت حافظه کش

حافظه کش چیست

نگاشت حافظه کش (Cache Memory Mapping) به تکنیکی اشاره دارد که از طریق آن داده‌های موجود در حافظه اصلی به حافظه کش منتقل می‌شوند.

حافظه اصلی به چند پارتیشن با اندازه‌های مساوی تقسیم می‌شود که به آن‌ها فریم یا بلوک گفته می‌شود.

حافظه کش نیز به پارتیشن‌های مختلف با همان اندازه بلوک‌ها تقسیم می‌شود که به خطوط (Lines) معروف هستند.

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

برای نگاشت حافظه کش سه نوع روش مجزا وجود دارد؛ که در این قسمت به بررسی آنها می‌پردازیم.

کش با روش نگاشت مستقیم

در روش کش با نگاشت مستقیم (Direct Mapped Cache)، هر بلوک از حافظه اصلی به طور دقیق به یک مکان خاص در حافظه کش نگاشت می‌شود. از نظر مفهومی، کش نگاشت مستقیم شبیه به یک جدول با سه ستون است:

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

این روش ساده‌ترین تکنیک نگاشت است که در آن هر بلوک از حافظه اصلی فقط می‌تواند به یک خط خاص در کَش نگاشت شود. به بیان دیگر، در نگاشت مستقیم، هر بلوک از حافظه اصلی به یک خط خاص در حافظه کش اختصاص می‌یابد.

تعداد کل خطوط کَش که هر بلوک می‌تواند به آن نگاشت شود، به این صورت محاسبه می‌شود:

شماره خط کَش = (آدرس بلوک حافظه اصلی) Modulo (تعداد کل خطوط در حافظه کش)

برای مثال، فرض کنید حافظه کش به ‘n’ خط تقسیم شده است. در این حالت، بلوک «j» از حافظه اصلی تنها می‌تواند به شماره خط کش (j mod n) نگاشت شود.

کش با نگاشت کاملا انجمنی

نگاشت کاملاً انجمنی (Fully Associative Mapping) از نظر ساختاری شباهت‌هایی با نگاشت مستقیم دارد، اما با این تفاوت که هر بلوک حافظه اصلی می‌تواند به جای یک مکان خاص و از پیش تعیین‌شده، به هر مکان دلخواه در کش نگاشت شود.

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

Set Associative Cache Mapping

این نوع نگاشت یک نسخه بهبود یافته از Direct Mapping است که مشکلاتی Thrashing را که در Direct Mapping ممکن است رخ دهد، حل می‌کند. در این روش، هر آدرس در کش می‌تواند با دو یا چند بلوک مختلف از حافظه اصلی مرتبط باشد. این باعث می‌شود که انعطاف‌پذیری بیشتری نسبت به Direct Mapping داشته باشد و کارایی کش نیز بهبود می‌یابد.

در واقع Set Associative Cache Mapping یک روشی بین Direct Mapping و Fully Associative Mapping است. در این روش، هر بلوک از حافظه اصلی به یک زیرمجموعه از مکان‌های کش نگاشت می‌شود. این روش را گاهی N-way Set Associative Mapping می‌نامند، که به این معناست که یک بلوک حافظه می‌تواند به هر یک از “N” مکان مشخص در کش سطح 1 (L1) نگاشت شود.

همانطور که از نام N-way Set Associative Mapping پیداست؛ حافظه کش به چندین مجموعه تقسیم می‌شود و هر مجموعه شامل N خط (Line) کش است. هر بلوک از حافظه اصلی فقط می‌تواند به یکی از این مجموعه‌ها نگاشت شود.

اما در داخل آن مجموعه خاص، بلوک حافظه می‌تواند به هر Line کشی که خالی باشد، منتقل شود.

برای تعیین اینکه یک بلوک از حافظه اصلی به کدام مجموعه در کش نگاشت شود، از فرمول زیر استفاده می‌شود:

شماره مجموعه کش = (آدرس بلوک حافظه اصلی) Modulo (تعداد کل مجموعه‌های موجود در کش)

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

دلیل اهمیت حافظه کش چیست؟

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

صبر کنید! اشتباه نکنید! حافظه کش فقط سرعت را بهبود نمی‌دهد؛ بلکه یک شاخص کلیدی برای ارزیابی عملکرد کلی کامپیوتر شماست. یکی از راه‌های بررسی عملکرد حافظه کش این است که ببینیم چند بار سیستم موفق می‌شود داده‌های مورد نیاز خود را از حافظه کش پیدا کند. به این موفقیت “برخورد کش (Cache Hits)” می‌گویند. یعنی وقتی سیستم داده‌ای که نیاز دارد را مستقیما از کش می‌گیرد، این یک برخورد کش است.

حالا، اگر سیستم نتواند داده را در حافظه کش پیدا کند و مجبور شود به جای دیگری مثل حافظه اصلی مراجعه کند، به آن “از دست رفتن کش (Cache Miss)” می‌گویند.

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

مزایای استفاده از حافظه کش (Cache Memory)

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

نوبت مقایسه حافظه اصلی با حافظه کش رسیده است…

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

سرعت DRAM معمولا نصف سرعت حافظه کش L1، L2 یا L3 است و البته بسیار ارزان‌تر هم هست. با این حال، DRAM همچنان سریع‌تر از حافظه فلش، هارد دیسک‌ها (HDD) و ذخیره‌سازی نوار است. در دهه‌های اخیر، DRAM به کار گرفته شد تا داده‌های دیسکی که بیشتر مورد استفاده قرار می‌گیرند را ذخیره کند و عملکرد ورودی/خروجی (I/O) را بهبود بخشد.

یک نکته مهم این است که DRAM باید هر چند میلی‌ثانیه یک بار تازه‌سازی (Refresh) شود، در حالی که کش که نوعی حافظه دسترسی تصادفی (RAM) است، نیازی به تازه‌سازی ندارد. کش مستقیما درون CPU ساخته می‌شود تا پردازنده بتواند با بالاترین سرعت ممکن به موقعیت‌های حافظه دسترسی پیدا کند. حافظه کش سرعت دسترسی در حد نانو ثانیه به دستورالعمل‌ها و داده‌هایی که مکرراً استفاده می‌شوند، ارائه می‌دهد. SRAM سریع‌تر از DRAM است، اما به دلیل پیچیدگی بیشتر، ساخت آن گران‌تر تمام می‌شود.

سوالات متداول درباره کش (Cache Memory)

حافظه کش چیست و چه کاربردی دارد؟

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

تفاوت حافظه کش با حافظه اصلی (RAM) چیست؟

RAM بزرگ‌تر اما کندتر است و باید به‌طور مداوم تازه‌سازی شود. حافظه کش کوچک‌تر اما بسیار سریع‌تر است و روی CPU قرار دارد و بدون نیاز به ریفرش کار می‌کند.

چرا کش باعث افزایش سرعت کامپیوتر می‌شود؟

چون CPU ابتدا داده‌ها را از کش دریافت می‌کند. اگر داده در کش باشد (Cache Hit)، دسترسی در حد نانوثانیه انجام می‌شود. این موضوع زمان پردازش را به شدت کاهش می‌دهد.

کش L1 و رجیستر چه تفاوتی دارند؟

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

آیا با افزایش رم، حافظه کش هم افزایش می‌یابد؟

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

2 دیدگاه در “حافظه کش چیست؟

  1. امیر گفت:

    خیلی تخصصی حافظه کش رو توضیح دادین ممنون

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

مشاوره تخصصی زیرساخت

وقت ارتقای زیرساخته؟

برای انتخاب سرور و کانفیگ مناسب، مشخصات پروژه‌ات را با کارشناس فنی بررسی کن.

  • پیشنهاد کانفیگ متناسب با بودجه
  • بررسی سازگاری قطعات
  • مشاوره اولیه بدون هزینه
خرید سرور HP
مشاهده مدل‌ها، مشخصات فنی و قیمت سرورهای HP

مطالب اخیر

دسته‌بندی‌ها

آخرین محصولات

پرداخت آنلاین امن

پرداخت با کارت‌های شتاب

ارسال سریع

ارسال در کوتاه‌ترین زمان

ضمانت بازگشت کالا

ضمانت تا حداکثر ۷ روز

پشتیبانی پاسخ‌گو

پشتیبانی و مشاوره فروش

ارسال هدیه

ارسال کالا به صورت کادویی

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

اطلاعات تماس

پشتیبانی و فروش
۰۲۱-۰۰۰۰۰۰
ساعت پاسخ‌گویی
۹:۳۰ الی ۱۸:۳۰
تهران، میدان ولی‌عصر، مجتمع ایرانیان، طبقه 

تیوان سرور

ارتباط با پشتیبان 021-0000

تمامی حقوق مادی و معنوی این سایت متعلق به تیوان سرور است.

سبد خرید
ورود

هنوز حساب کاربری ندارید؟

فروشگاه
0 علاقه مندی
0 محصول سبد خرید
حساب کاربری من