بررسی حافظه CPU Cache و انواع آن؛ پادکست
یادداشت ویراستار: اصل این مطلب در تیر 98 نوشته شده بود و در بهمن 99 دوباره بررسی و بهروز شده است.
در این مجال میخواهیم به بررسی حافظه CPU Cache و انواع آن بپردازیم. با فالنیک همراه شما هستیم.
فهرست محتوا
حافظه Cache چیست؟
حافظه پنهان یا Cache، نوعی RAM فوق العاده سریع است. حافظه استفاده شده بین cpu و ram حافظه Cache است و CPU میتواند به سرعت به آن دسترسی پیدا کند، زیرا این قطعه برای ذخیره دادههایی که به صورت مکرر مورد نیاز است، طراحی شده است. تاثیر کش در سرعت cpu به این دلیل است که بسیار نزدیک به CPU قرار دارد و در مقایسه با RAM که دورتر از CPU قرار دارد، میتواند اطلاعات را به پردازنده در هر زمان بدون نیاز به بارگیری انجام دهد و زمان بیشتری را صرف خواندن اطلاعات اصلی و بزرگتر خود از رم و یا سایر دستگاههای ذخیره سازی داده کند. کش CPU این امکان را به وجود میآورد که عملیات سریعتر انجام شود.
به طور ساده، حافظه Cache یا حافظه پنهان، نوع سریعی از حافظهها است.
رابطه cpu با ram چیست؟ اطلاعاتی که بیشترین مراجعه را به حافظه اصلی دارند درون Cache قرار میگیرند. وقتی پردازنده احتیاج به خواندن از حافظه اصلی، یا نوشتن در آن را دارد، ابتدا Cache را بررسی میکند. در صورتی که اطلاعات لازم در Cache موجود باشد، عملیات به جای مراجعه به حافظه اصلی در Cache انجام میشود که بسیار سریعتر خواهد بود. حافظه Cache حافظهای کوچک و بسیار سریع است که میانگین زمانی دسترسی به حافظه اصلی را کاهش میدهد. تراشههای پردازش گرافیک هم اغلب دارای حافظه پنهان و حافظه مجزا برای پردازنده هستند که اطمینان میدهد، پردازنده گرافیکی میتواند به سرعت عملیات رندر پیچیده را انجام دهد.
در سیستمهای کامپیوتری و پردازشی، انواع مختلفی از حافظه وجود دارد:
- استوریج اصلی مانند هارد دیسک و SSD که سیستم عامل و برنامهها را ذخیره میکند. البته هارد درایوها هم کش دارند. حافظه کش هارد چیست؟ وظیفه حافظه کش هارد پردازش اطلاعات از دیسک و بافر کردن انتقال فایلها است.
- حافظه RAM یا Random Access Memory که بسیار سریعتر از استوریج اصلی است.
- حافظه CPU که بسیار سریعتر از رم است و با عنوان Cache میشناسیم.
از لحاظ سرعت، Cache در بالاترین جایگاه قرار میگیرد. از نظر محل قرارگیری، باید در نزدیکترین مکان به سی پی یو باشد تا جزیی از CPU به حساب آید.
حافظه پنهان در مقایسه با حافظههای اصلی و جانبی، بسیار سریعتر قابل دسترس و خواندن است و عمل پردازش را سریعتر میکند.
مقایسه RAM و Cache
حافظه کش از نوع Static RAM یا SRAM است ولی رم از نوع Dynamic RAM یا DRAM.
Static RAM برخلاف DRAM، میتواند داده را بدون این که نیاز باشد مرتبا رفرش انجام شود، نگه دارد بنابراین برای استفاده در Cache ایدهآل است.
پادکست با موضوع بررسی CPU Cache و انواع آن
در این پادکست، به تعریف و کاربرد Cache میپردازیم و انواع کش و تفاوت بین آنها را بررسی میکنیم. در نهایت هم به تاثیر آنها روی Latency اشاره میکنیم.
در این پادکست به موارد زیر پرداخته میشود:
- حافظه CPU Cache چیست؟
- انواع CPU Cache
- Latency در CPU Cach
این پادکست 15 مگابایت حجم و 13 دقیقه زمان دارد.
در این پادکست به همراه بخش تخصصی، اخبار تکنولوژی و مناسبتهای ماه را هم میتوانید پیگیری کنید؛ این نسخه پادکست 37 مگابایت حجم و 32 دقیقه زمان دارد. زمانبندی این پادکست در جدول زیر آمده است:
محدوده زمانی | موضوع بحث پادکست |
---|---|
دقیقه 10 تا 15 | حافظه CPU Cache چیست؟ |
دقیقه 15 تا 20 | انواع CPU Cache |
حافظه نهان (Cache) چه کاربردی دارد؟
زمانی که درخواست پردازشی شامل دادههایی باشد که در حافظه نهان ذخیره شدهاند، دادههای درخواستی به سرعت به درخواستدهنده تحویل داده میشود. اما اگر درخواست پردازشی شامل دادههایی باشد که در حافظه نهان موجود نباشند، دادههای درخواستشده از منبع اصلی خود (برای مثال حافظههای جانبی یا سرویس دهندهها) دریافت شده سپس به درخواستدهنده تحویل داده میشود. در این صورت عمل پردازش به کندی پیش خواهد رفت. در واقع حافظه نهان در مقایسه با حافظههای اصلی و جانبی، بسیار سریعتر قابل دسترسی و خواندن است و عمل پردازش را سریعتر میکند.
فرق حافظه بافر buffer و کش cache چیست؟
حافظه بافر و کش هر دو از نوع حافظه Non Volatile و فرار هستند یعنی با قطع برق اطلاعات آنها از بین میرود. تفاوت آنها این است که حافظه cache برای افزایش سرعت استفاده میشود اما بافر برای تنظیم و هماهنگ کردن سرعت. تنظیم سرعت، زمانی لازم است که دو دستگاه با سرعت متفاوت بخواهند با هم در ارتباط باشند مثلا پرینتر و کامپیوتر یا پخش ویدئو به صورت آنلاین.
وقتی با لپ تاپ و کامپیوتر به پرینتر پرینت میفرستید چون سرعت پرینتر از کامپیوتر کمتر است باید پرینت ها را در بافر نگه دارد تا طبق روال خودش چاپ کند و یا وقتی سرعت اینترنت کم شود، پخش ویدئو متوقف میشود تا مقداری از ویدئو بافر شود و پخش بیوقفه فراهم شود سپس دوباره ویدئو پخش میشود.
Cache coherence چیست؟
هر پردازنده، کش خودش را دارد و در سیستم های پردازشی که از چند پردازنده استفاده میکنند ممکن است دچار ناهماهنگی هنگام استفاده از کش شود. مثلا یک کش در حال پردازش یک دیتا باشد ولی کش دیگر نداند روی آن داده کاری در حال انجام است. بنابراین باید بین کشهای پردازندهها و هستهها هماهنگی و انسجام به وجود آید.
با استفاده از Cache Coherence – ارتباط داخلی منسجم کش، میتوان انسجام لازم بین کشها را فراهم کرد به طوری که انگار همه از یک کش استفاده میکنند.
Cache چگونه کار میکند؟
همان طور که میدانید، برنامه شامل مجموعهای دستورات است که باید توسط پردازنده اجرا شود. وقتی برنامه را اجرا میکنید این دستورات باید به نحوی از استوریج اصلی به CPU منتقل شود. در اینجا نقش انواع حافظه مشخص میشود.
داده ابتدا روی رم لود شده و سپس به سی پی یو ارسال میشود. پردازنده های امروزی، این قابلیت را دارند که حجم زیادی دیتا را در ثانیه پردازش کنند. برای اینکه کاملا از قدرت CPU استفاده شود، CPU باید بسیار سریع به حافظه، دسترسی داشته باشد. اینجاست که Cache وارد صحنه میشود! حافظه کش است که با پردازنده به تبادل دیتا میپردازد.
بسته به اینکه چه پردازندهای روی سیستم شماست، این کنترلر، هم میتواند روی چیپست North Bridge روی مادربورد باشد و هم داخل خود CPU.
عملکرد حافظه Cache
حافظه کش از الگوريتمهاي پيچيده برای پيشبيني استفاده ميكند تا دیتای مورد نیاز پردازنده برای پردازش را پیشبینی کرده و در خود ذخيره كند. پس سی پی یو دیتای مورد نیازش را ابتدا در Cache جستجو میکند و اگر در کش وجود داشته باشد (Cache Hit)، از آن میخواند. از آنجایی که این دادهها در کشی قرار دارد که در داخل یا نزدیک پردازنده قرار دارد، سرعت بالایی خواهیم داشت.
با توجه به قابل پیشبینی بودن برخی پروسهها و سرعت بالای چیپهای سیلیکونی نسبت به هارد درایوها، اگر دادهها در Cache باشند، سرعت دسترسی به آنها هم سریعتر خواهد بود. اگر اطلاعات مورد نیاز پردازنده در کش نباشد (Cache Miss)، پردازنده به حالت Idle و انتظار ميرود تا اطلاعات مورد نیازش از حافظه رم به Cache آورده شود.
حافظه Cache در واقع نوعی رم بسیار پرسرعت است و سی پی یو با سرعت بالایی میتواند به آن دسترسی داشته باشد.
دستهبندی حافظه Cache
حافظه نهان یا کش میتواند به دو صورت سخت افزاری و مجازی باشد:
1- حافظه نهان یا کش سخت افزاری
در نوع سخت افزاری، حافظه نهان قسمتی از واحد سخت افزاری مورد نظر (مثلاً CPU های دارای این نوع حافظه یا هارد دیسک های دارای این نوع حافظه) است که عمل Caching را برعهده دارد. مکانیزم،ساختار، سرعت و کارایی حافظه نهان سخت افزاری با حافظه اصلی (RAM) تفاوت زیادی دارد. از این رو با افزایش حجم حافظه نهان سخت افزاری در واحدهایی مانند CPU، قسمت تمام شده آن بیشتر میشود. دلیل این که در همه جا از حافظه نهان استفاده نمیکنند، قیمت و هزینه تهیه بسیار زیاد آن نسبت به سایر حافظهها است.
2- حافظه نهان یا کش مجازی
نحوه عملکرد حافظه نهان مجازی با سخت افزاری متفاوت است. این نوع حافظه نهان در واقع قسمتی از حافظه جانبی است که توسط برنامهها مشخص میشود و برای دسترسی سریعتر، از این قسمت استفاده میکنند. این نوع حافظه نهان به صورت محلی (Local) کارایی ندارد. برای مثال، برنامههایی مانند مرورگرهای وب، قسمتی از حافظه جانبی را تحت عنوان حافظه نهان وب (Web Cache) برای ذخیره سازی موقت دادههای وب مانند صفحات وب، تصاویر، استایلها و … استفاده میکنند و زمانی که کاربر قصد مشاهده صفحه یا تصویر درخواست شده را داشته باشد که در حافظه نهان وب مرورگر موجود باشد، مرورگر همان دادههای کَش شده را به کاربر نشان میدهد. دراین فرایند دیگر دادههای کش شده از طریق اینترنت یا شبکه بارگیری نمیشوند و باعث کاهش ترافیک شبکه، پنهای باند مصرفی، بار روی سرور شده و باعث بهبود فرایند میشوند. این قسمت از حافظه جانبی، تفاوتی با سایر قسمتهای عادی حافظه ندارد و تنها توسط برنامهها به عنوان حافظه نهان مجازی استفاده میشوند.
Caching بعد از سرعت کلاک، مهمترین تاثیر را روی افزایش سرعت CPU و کارایی برنامه دارد.
انواع حافظه کش – Cache
CPU Cache به سه سطح اصلی تقسیم میشود: L1، L2 و L3 که L مربوط به Level و لایه است و عدد جلوی L، بیانگر نوع کش. این طبقهبندی بر اساس سرعت و ظرفیت کش است. در ادامه با این سه سطح آشنا میشویم.
کدام نوع حافظه cache سریعتر است؟
کش لایه اول CPU یا L1 Cache
حافظه cache سطح یک در تراشه CPU ساخته شده و با اینکه ظرفیت کمی دارد، سریعترین نوع حافظه برای سی پی یو است در واقع سریعترین حافظهای است که در سیستمهای کامپیوتری وجود دارد. در بین سه سطح از حافظه های Cache که در سیستم وجود دارد، کش سطح یک یا L1 بالاترین سطح در طبقهبندی کش های سی پی یو را دارد و بالاترین سرعت و کمترین ظرفیت را داراست اما کمترین زمان تاخیر و Delay که تقریبا صفر است را دارد که به دلیل نزدیکی زیاد به پردازنده و یا قرارگیری در خود تراشه CPU است.
L1 Cache حاوی دادههایی است که CPU به احتمال زیاد برای تکمیل کار خاصی به آنها نیاز دارد.
L1 Cache معمولا تا 256 کیلوبایت ظرفیت دارد و گذشته به این کش ها سی پی یو فول کش میگفتند البته امروزه میزان کش سطح یک در CPU های قدرتمند به یک مگابایت هم میرسد. در برخی چیپستهای سروری مثل پردازنده های اینتل زئون، ظرفیت L1 Cache بین یک تا دو مگابایت است.
L1 Cache به دو بخش تقسیم میشود:
- Instruction Cache: حاوی اطلاعاتی درباره عملیاتی که پردازنده باید انجام دهد.
- Data Cache: حاوی اطلاعاتی که برای اجرای عملیات لازم است.
پردازندههای چند هستهای، برای هر هسته، کش جداگانه L1 دارند.
کش لایه دوم CPU یا L2 Cache
L2 cache چیست؟ کش لایه دو، کش ثانویه و کش سطح دو عناوینی است که برای L2 Cache استفاده میشود و حافظه میانی بین لایه اول و لایه سوم کش های CPU است. سرعت L2 Cache از L1 Cache کمتر است اما ظرفیت بیشتری دارد. این ظرفیت بین 256 کیلوبایت تا 8 مگابایت است. هر چند که CPU های قدرتمند جدیدتر، ظرفیت بیشتری دارند.
L2 Cache دادههایی را نگه میدارد که سی پی یو در مرحله بعد احتمالا به آنها احتیاج دارد. در اغلب پردازنده های جدید، L1 Cache و L2 Cache در داخل Core های پردازنده قرار دارند و هر هسته هم، کش خودش را دارد.
در لایهبندی Cache ها اگر دادههای مورد نظر در L1 Cache نباشد، لایههای بعدی بررسی میشود یعنی لایه دوم و سپس سوم.
کش لایه سوم CPU یا L3 Cache
بیشترین ظرفیت و کمترین سرعت را در بین حافظه های کش را دارد. ظرفیت L3 Cache بین 4 تا 50 مگابایت است.
همانند آنچه که در طبقهبندی کش ها داریم، هر چه شماره لایه بیشتر باشد و در اصطلاح، لایه در سطح پایینتری باشد، سرعت پایینتر و ظرفیت بیشتری نسبت به لایه قبلی خود خواهد داشت. پس L3 Cache نسبت به L2 Cache دارای سرعت کمتر و ظرفیت بیشتر است و اگر دادهای در کش لایه دوم سی پی یو پیدا نشد، لایه سوم بررسی میشود.
کش لایه سوم معمولا بر روی مادربورد و بین حافظه اصلی سیستم یا همان RAM و کش لایه دوم قرار میگیرد. L3 Cache بهصورت لایه اشتراکی بین تمام هستهها استفاده میشود و وظیفه آن جلوگیری از به وجود آمدن گلوگاه هنگام دریافت اطلاعات از حافظه رم است. در واقع امروزه کش لایه سه همان کاری را انجام میدهد که کش لایه دو قبل از این که در خود پردازنده قرار داده شود، انجام میداد.
آنچه در Cache رایج است این است که کش های با ظرفیت بالاتر، سرعت کمتری دارند.
در اغلب پردازنده های امروزی، L1 Cache و L2 Cache در خود پردازنده و برای هر هسته تعبیه میشود و L3 Cache هم برای همه Core ها قرار میدهند.
حافظه ثبات چیست؟
حافظه ثبات یا Register بین حافظه Cache و CPU قرار دارد و برای انتقال دیتا و دستورالعملها آن هم با سرعت بسیار بالا حتی بالاتر از حافظه کش L1 در پردازنده استفاده میشود. در واقع محلی برای ذخیره دستورالعملها است تا سی پی یو روی آنها پردازش انجام دهد. رجیسترها برای انجام سه کار Fetch و Decode و Execute استفاده میشوند.
اندازه رجیستر به نوع CPU بستگی دارد. پردازنده 64 بیتی عموما 64 بیت رجیستر دارند. البته رجیسترهای کوچکتری هم هستند که برای اجرای دستورالعملهای کوتاهتر استفاده میشوند و half register نام دارند.
تعمیر لپ تاپ خود را به فالنیک بسپارید.
Cache Hit چیست؟
وقتی پردازنده به دنبال دیتایی برای انجام عملیات است ابتدا سعی میکند آن را در L1 بیاید اگر پیدا کرد، در واقع Cache Hit اتفاق افتاده است. اگر در L1 نبود، در L2 و سپس در L3 میگردد.
Cache Miss چیست؟
اگر داده را در Cache پیدا نکرد، آن را از حافظه اصلی به دست میآورد که به این اتفاق Cache Miss گفته میشود.
اگر بین انتخاب دو CPU مردد هستید، CPU ای که L3 Cache بیشتری دارد انتخاب کنید.
Latency در CPU Cache
همان طور که میدانیم وظیفه کش، تبادل اطلاعات بین حافظه اصلی و پردازنده است. زمان لازم برای دسترسی به دیتای موجود در رم را زمان تاخیر یا Latency میگوییم. بیشترین Latency مربوط به L3 است و کمترین Latency مربوط به L1 که سریعترین و نزدیکترین کش به هسته است.
وقتی Cache Miss اتفاق بیفتد، زمان تاخیر افزایش مییابد زیرا پردازنده مجبور است داده را از حافظه اصلی بخواند نه کش.
هر چه کامپیوتر سریعتر و بهتر باشد، زمان تاخیر کاهش مییابد. هم اکنون رم های DDR4 با زمان تاخیر کم و SSD های بسیار سریع با زمان دسترسی کم به عنوان استوریج اصلی، موجود است که هر دو باعث کاهش زمان تاخیر میشوند.
سابقا کش طوری طراحی شده بود که کش های L2 و L3 در خارج از CPU قرار داشت که باعث تاثیر منفی روی Latency میشود.
با پیشرفتی که در ترانزیستورهای سی پی یو رخ داده امکان قرار دادن میلیاردها ترانزیستور در فضایی کوچکتر از قبل وجود دارد در نتیجه فضای بیشتری برای کش باقی میماند و در پی آن قرارگیری کش در نزدیکی هسته ممکن میشود و در نهایت، Latency کاهش مییابد. هم چنین هر چه حافظه کش پردازنده بیشتر باشد، پردازنده، قویتر و کارایی، بیشتر است. در پردازندههای گرافیکی هم برای افزایش سرعت و کارایی از Cache استفاده میشود.
در کنار کاهش Latency، برای کاهش گلوگاهها هم کارهایی انجام میشود.
اگر درباره Intel Optane شنیده باشید میدانید که میتواند به عنوان Hybrid External Cache استفاده شود.
کلام آخر: بازارِ پردازنده ها به سرعت در حال پیشرفت است و اینتل بر روی L4 Cache هم کار میکند.
افزایش حافظه کش لپ تاپ
اندازه Cache در پیکربندی CPU مشخص میشود. بهترین راه برای افزایش حافظه کش، تعویض CPU کنونی با پردازندهای با میزان کش بیشتر است. با این کار هم اندازه حافظه کش لپ تاپ و کامپیوتر بیشتر میشود و هم سرعت و کارایی کل سیستم. برخی سیستمها در اندازه و نوع پردازنده محدودیت دارند بنابراین مهم است که هنگام ارتقای CPU دقت کنید که با سیستم کنونی شما سازگاری دارد یا نه. برای اینکه بهترین و مناسب ترین CPU را انتخاب کنید، مطلب راهنمای خرید CPU را مطالعه کنید.
منبع: Makeuseof
سوال متداول
کدام نوع حافظه کش سریعتر است؟
در حالت کلی، حافظه کش نوع L1 سریعتر از L2 و L3 است که از دلایل آن به موارد زیر باید اشاره کرد:
فاصله فیزیکی: حافظه کش L1 نسبت به L2 و L3 بهطور فیزیکی نزدیکتر به واحد پردازشی است. این فاصله کوتاهتر باعث میشود دسترسی به دادهها سریعتر انجام شود.
حجم کمتر: حافظه کش L1 حجم کمتری نسبت به L2 و L3 دارد. به بیان دقیقتر، مجموعه دادههای مختلف در آن کمتر است و در نتیجه بارگذاری دادههای مورد نیاز برای پردازش بالاتر سریعتر است.
سطح قابل دسترسی: حافظه کش L1 مستقیما توسط واحد پردازشی مورد استفاده قرار میگیرد. به عبارت دیگر، زمان دسترسی به دادهها در حافظه کش L1 کمتر از L2 و L3 است که از طریق مسیرهای دسترسی مشترک (shared paths) انجام میشود.
به هر حال، دقت کنید که سرعت حافظه کش به تنهایی ملاک نیست و عوامل دیگر مانند سرعت پردازنده، معماری سیستم و الگوریتمهای استفاده شده نیز تاثیرگذار هستند. همچنین، هر سطح حافظه کش نقش مختص به خود را در سلسله مراتب حافظه کش دارد و استفاده مناسب از هر سطح حافظه کش بسته به نیازهای برنامه و الگوریتمهای کاربردی ممکن است متفاوت باشد.
چرا به cache میگیم حافظه ی پنهان از چه چیزی پنهان شده است
سلام وقت بخیر
کاربر گرامی
حافظه کش در پردازنده رابطی بین حافظه رم و سی پی یو است و اطلاعات رم برای دسترسی سریعتر سی پی یو در این حافظه قرار میگیرد. به همین دلیل بهش حافظه پنهان گفته میشه. حافظه کش در طراحی خود پردازنده وجود دارد و به صورت جداگانه به فروش نمی رسد.
کدام نوع حافظه کش سریعتر است؟
یاشار عزیز،
پاسخ سوال شما به انتهای محتوا اضافه شد.
واقعا عالی و کاربردی بود دستتون درد نکنه
ممنون
لطفا دقت کنید مطالب کاربری تر هم اضافه کنید مثلا چگونه مقدار کش را ببینیم و کد wmic cpu get L2CacheSize, L3CacheSize و حتی Batch بزارید.
@echo off
wmic cpu get L2CacheSize, L3CacheSize
pause
به امید کاربردی تر شدن مطالب سپاس
خیلی ممنون
سلام خانم فقیهی خیلی توضییحات خوبی دادین ، توصیفات ساده و قابل درک. منتظر پستهای بعدی شما هستم. 🙂 سپاس
ممنون از بازخورد و توجه شما
موفق باشید