حافظه Cache چیست؟
به طور ساده، حافظه Cache یا حافظه پنهان، نوع سریعی از حافظهها است. در سیستمهای کامپیوتری و پردازشی، انواع مختلفی از حافظه وجود دارد:
استوریج اصلی مانند هارد دیسک و SSD که سیستم عامل و برنامهها را ذخیره میکند.
حافظه RAM یا Random Access Memory که بسیار سریعتر از استوریج اصلی است.
حافظه CPU که بسیار سریعتر از رم است و با عنوان Cache میشناسیم.
از لحاظ سرعت، Cache در بالاترین جایگاه قرار میگیرد. از نظر محل قرارگیری، باید در نزدیکترین مکان به سی پی یو باشد تا جزیی از CPU به حساب آید.
مقایسه RAM و Cache
حافظه کش از نوع Static RAM یا SRAM است ولی رم از نوع Dynamic RAM یا DRAM.
Static RAM برخلاف DRAM، میتواند داده را بدون این که نیاز باشد مرتبا رفرش انجام شود، نگه دارد بنابراین برای استفاده در Cache ایدهآل است.
Cache چگونه کار میکند؟
همان طور که میدانید، برنامه شامل مجموعهای دستورات است که باید توسط پردازنده اجرا شود. وقتی برنامه را اجرا میکنید این دستورات باید به نحوی از استوریج اصلی به CPU منتقل شود. در اینجا نقش انواع حافظه مشخص میشود.
داده ابتدا روی رم لود شده و سپس به سی پی یو ارسال میشود. پردازنده های امروزی، این قابلیت را دارند که حجم زیادی دیتا را در ثانیه پردازش کنند. برای اینکه کاملا از قدرت CPU استفاده شود، CPU باید بسیار سریع به حافظه، دسترسی داشته باشند. اینجاست که Cache وارد صحنه میشود! حافظه کش است که با پردازنده به تبادل دیتا میپردازد.
بسته به اینکه چه پردازندهای روی سیستم شماست، این کنترلر، هم میتواند روی چیپست North Bridge روی مادربورد باشد و هم داخل خود CPU.
عملکرد حافظه Cache
حافظه کش از الگوریتمهای پیچیده برای پیشبینی استفاده میکند تا دیتای مورد نیاز پردازنده برای پردازش را پیشبینی کرده و در خود ذخیره کند. پس سی پی یو دیتای مورد نیازش را ابتدا در Cache جستجو میکند و اگر در کش وجود داشته باشد (Cache Hit)، از آن میخواند. از آنجایی که این دادهها در کشی قرار دارد که در داخل یا نزدیک پردازنده قرار دارد، سرعت بالایی خواهیم داشت.
با توجه به قابل پیشبینی بودن برخی پروسهها و سرعت بالای چیپهای سیلیکونی نسبت به هارد درایوها، اگر دادهها در Cache باشند، سرعت دسترسی به آنها هم سریعتر خواهد بود. اگر اطلاعات مورد نیاز پردازنده در کش نباشد (Cache Miss)، پردازنده به حالت Idle و انتظار میرود تا اطلاعات مورد نیازش از حافظه رم به Cache آورده شود.
انواع حافظه Cache
CPU Cache به سه سطح اصلی تقسیم میشود: L1، L2 و L3 که L مربوط به Level و لایه است و عدد جلوی L، بیانگر نوع کش. این طبقهبندی بر اساس سرعت و ظرفیت کش است. در ادامه با این سه سطح آشنا میشویم.
کش لایه اول CPU یا L1 Cache
حافظه L1 در تراشه CPU ساخته شده و با اینکه ظرفیت کمی دارد، سریعترین نوع حافظه برای سی پی یو است در واقع سریعترین حافظهای است که در سیستمهای کامپیوتری وجود دارد. در بین سه سطح از حافظه های Cache که در سیستم وجود دارد، کش سطح یک یا L1 بالاترین سطح در طبقهبندی کش های سی پی یو را دارد و بالاترین سرعت و کمترین ظرفیت را داراست اما کمترین زمان تاخیر و Delay که تقریبا صفر است را دارد که به دلیل نزدیکی زیاد به پردازنده و قرارگیری در خود تراشه CPU است.
L1 Cache معمولا تا 256 کیلوبایت ظرفیت دارد اما در CPU هایی که واقعا قدرتمند هستند به یک مگابایت هم میرسد. در برخی چیپستهای سروری مثل پردازنده های اینتل زئون، ظرفیت L1 Cache بین یک تا دو مگابایت است.
L1 Cache به دو بخش تقسیم میشود:
Instruction Cache: حاوی اطلاعاتی درباره عملیاتی که پردازنده باید انجام دهد.
Data Cache: حاوی اطلاعاتی که برای اجرای عملیات لازم است.
پردازندههای چند هستهای، برای هر هسته، کش جداگانه L1 دارند.
کش لایه دوم CPU یا 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 بهصورت لایه اشتراکی بین تمام هستهها استفاده میشود و وظیفه آن جلوگیری از به وجود آمدن گلوگاه هنگام دریافت اطلاعات از حافظه رم است. در واقع امروزه کش لایه سه همان کاری را انجام میدهد که کش لایه دو قبل از این که در خود پردازنده قرار داده شود، انجام میداد.
در اغلب پردازنده های امروزی، L1 Cache و L2 Cache در خود پردازنده و برای هر هسته تعبیه میشود و L3 Cache هم برای همه Core ها قرار میدهند.
روند جریان داده بین انواع حافظه
دادهها از RAM به L3 Cache سپس به L2 Cache و در نهایت به L1 Cache میرود.
Cache Hit چیست؟
وقتی پردازنده به دنبال دیتایی برای انجام عملیات است ابتدا سعی میکند آن را در L1 بیاید اگر پیدا کرد، در واقع Cache Hit اتفاق افتاده است. اگر در L1 نبود، در L2 و سپس در L3 میگردد.
Cache Miss چیست؟
اگر داده را در Cache پیدا نکرد، آن را از حافظه اصلی به دست میآورد که به این اتفاق Cache Miss گفته میشود.
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 یا حافظه پنهان، نوع سریعی از حافظهها است. در سیستمهای کامپیوتری و پردازشی، انواع مختلفی از حافظه وجود دارد:
استوریج اصلی مانند هارد دیسک و SSD که سیستم عامل و برنامهها را ذخیره میکند.
حافظه RAM یا Random Access Memory که بسیار سریعتر از استوریج اصلی است.
حافظه CPU که بسیار سریعتر از رم است و با عنوان Cache میشناسیم.
از لحاظ سرعت، Cache در بالاترین جایگاه قرار میگیرد. از نظر محل قرارگیری، باید در نزدیکترین مکان به سی پی یو باشد تا جزیی از CPU به حساب آید.
مقایسه RAM و Cache
حافظه کش از نوع Static RAM یا SRAM است ولی رم از نوع Dynamic RAM یا DRAM.
Static RAM برخلاف DRAM، میتواند داده را بدون این که نیاز باشد مرتبا رفرش انجام شود، نگه دارد بنابراین برای استفاده در Cache ایدهآل است.
Cache چگونه کار میکند؟
همان طور که میدانید، برنامه شامل مجموعهای دستورات است که باید توسط پردازنده اجرا شود. وقتی برنامه را اجرا میکنید این دستورات باید به نحوی از استوریج اصلی به CPU منتقل شود. در اینجا نقش انواع حافظه مشخص میشود.
داده ابتدا روی رم لود شده و سپس به سی پی یو ارسال میشود. پردازنده های امروزی، این قابلیت را دارند که حجم زیادی دیتا را در ثانیه پردازش کنند. برای اینکه کاملا از قدرت CPU استفاده شود، CPU باید بسیار سریع به حافظه، دسترسی داشته باشند. اینجاست که Cache وارد صحنه میشود! حافظه کش است که با پردازنده به تبادل دیتا میپردازد.
بسته به اینکه چه پردازندهای روی سیستم شماست، این کنترلر، هم میتواند روی چیپست North Bridge روی مادربورد باشد و هم داخل خود CPU.
عملکرد حافظه Cache
حافظه کش از الگوریتمهای پیچیده برای پیشبینی استفاده میکند تا دیتای مورد نیاز پردازنده برای پردازش را پیشبینی کرده و در خود ذخیره کند. پس سی پی یو دیتای مورد نیازش را ابتدا در Cache جستجو میکند و اگر در کش وجود داشته باشد (Cache Hit)، از آن میخواند. از آنجایی که این دادهها در کشی قرار دارد که در داخل یا نزدیک پردازنده قرار دارد، سرعت بالایی خواهیم داشت.
با توجه به قابل پیشبینی بودن برخی پروسهها و سرعت بالای چیپهای سیلیکونی نسبت به هارد درایوها، اگر دادهها در Cache باشند، سرعت دسترسی به آنها هم سریعتر خواهد بود. اگر اطلاعات مورد نیاز پردازنده در کش نباشد (Cache Miss)، پردازنده به حالت Idle و انتظار میرود تا اطلاعات مورد نیازش از حافظه رم به Cache آورده شود.
انواع حافظه Cache
CPU Cache به سه سطح اصلی تقسیم میشود: L1، L2 و L3 که L مربوط به Level و لایه است و عدد جلوی L، بیانگر نوع کش. این طبقهبندی بر اساس سرعت و ظرفیت کش است. در ادامه با این سه سطح آشنا میشویم.
کش لایه اول CPU یا L1 Cache
حافظه L1 در تراشه CPU ساخته شده و با اینکه ظرفیت کمی دارد، سریعترین نوع حافظه برای سی پی یو است در واقع سریعترین حافظهای است که در سیستمهای کامپیوتری وجود دارد. در بین سه سطح از حافظه های Cache که در سیستم وجود دارد، کش سطح یک یا L1 بالاترین سطح در طبقهبندی کش های سی پی یو را دارد و بالاترین سرعت و کمترین ظرفیت را داراست اما کمترین زمان تاخیر و Delay که تقریبا صفر است را دارد که به دلیل نزدیکی زیاد به پردازنده و قرارگیری در خود تراشه CPU است.
L1 Cache معمولا تا 256 کیلوبایت ظرفیت دارد اما در CPU هایی که واقعا قدرتمند هستند به یک مگابایت هم میرسد. در برخی چیپستهای سروری مثل پردازنده های اینتل زئون، ظرفیت L1 Cache بین یک تا دو مگابایت است.
L1 Cache به دو بخش تقسیم میشود:
Instruction Cache: حاوی اطلاعاتی درباره عملیاتی که پردازنده باید انجام دهد.
Data Cache: حاوی اطلاعاتی که برای اجرای عملیات لازم است.
پردازندههای چند هستهای، برای هر هسته، کش جداگانه L1 دارند.
کش لایه دوم CPU یا 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 بهصورت لایه اشتراکی بین تمام هستهها استفاده میشود و وظیفه آن جلوگیری از به وجود آمدن گلوگاه هنگام دریافت اطلاعات از حافظه رم است. در واقع امروزه کش لایه سه همان کاری را انجام میدهد که کش لایه دو قبل از این که در خود پردازنده قرار داده شود، انجام میداد.
در اغلب پردازنده های امروزی، L1 Cache و L2 Cache در خود پردازنده و برای هر هسته تعبیه میشود و L3 Cache هم برای همه Core ها قرار میدهند.
روند جریان داده بین انواع حافظه
دادهها از RAM به L3 Cache سپس به L2 Cache و در نهایت به L1 Cache میرود.
Cache Hit چیست؟
وقتی پردازنده به دنبال دیتایی برای انجام عملیات است ابتدا سعی میکند آن را در L1 بیاید اگر پیدا کرد، در واقع Cache Hit اتفاق افتاده است. اگر در L1 نبود، در L2 و سپس در L3 میگردد.
Cache Miss چیست؟
اگر داده را در Cache پیدا نکرد، آن را از حافظه اصلی به دست میآورد که به این اتفاق Cache Miss گفته میشود.
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 هم کار میکند.
منبع: فالنیک