حافظه پنهان یا Cache، نوعی RAM فوق العاده سریع است. حافظهای است که CPU میتواند به سرعت به آن دسترسی پیدا کند، زیرا این قطعه برای ذخیره دادههایی که به صورت مکرر مورد نیاز است، طراحی شده است.
خصوصیات حافظه پنهان بسیار نزدیک به CPU است و در مقایسه با RAM که دورتر از CPU قرار دارد، میتواند اطلاعات را به پردازنده در هر زمان بدون نیاز به بارگیری انجام دهد و زمان بیشتری را صرف خواندن اطلاعات اصلی و بزرگتر خود از رم و یا سایر دستگاههای ذخیره سازی داده کند. کش CPU این امکان را به وجود میآورد که عملیات سریعتر انجام شود
حافظه کش از نوع Static RAM یا SRAM است ولی رم از نوع Dynamic RAM یا DRAM.
Static RAM برخلاف DRAM، میتواند داده را بدون این که نیاز باشد مرتبا رفرش انجام شود، نگه دارد بنابراین برای استفاده در Cache ایدهآل است.
زمانی که درخواست پردازشی شامل دادههایی باشد که در حافظه نهان ذخیره شدهاند، دادههای درخواستی به سرعت به درخواستدهنده تحویل داده میشود. اما اگر درخواست پردازشی شامل دادههایی باشد که در حافظه نهان موجود نباشند، دادههای درخواستشده از منبع اصلی خود (برای مثال حافظههای جانبی یا سرویس دهندهها) دریافت شده سپس به درخواستدهنده تحویل داده میشود. در این صورت عمل پردازش به کندی پیش خواهد رفت. در واقع حافظه نهان در مقایسه با حافظههای اصلی و جانبی، بسیار سریعتر قابل دسترسی و خواندن است و عمل پردازش را سریعتر میکند.
همان طور که میدانید، برنامه شامل مجموعهای دستورات است که باید توسط پردازنده اجرا شود. وقتی برنامه را اجرا میکنید این دستورات باید به نحوی از استوریج اصلی به CPU منتقل شود. در اینجا نقش انواع حافظه مشخص میشود.
داده ابتدا روی رم لود شده و سپس به سی پی یو ارسال میشود. پردازنده های امروزی، این قابلیت را دارند که حجم زیادی دیتا را در ثانیه پردازش کنند. برای اینکه کاملا از قدرت CPU استفاده شود، CPU باید بسیار سریع به حافظه، دسترسی داشته باشد. اینجاست که Cache وارد صحنه میشود! حافظه کش است که با پردازنده به تبادل دیتا میپردازد.
بسته به اینکه چه پردازندهای روی سیستم شماست، این کنترلر، هم میتواند روی چیپست North Bridge روی مادربورد باشد و هم داخل خود CPU.
حافظه کش از الگوریتمهای پیچیده برای پیشبینی استفاده میکند تا دیتای مورد نیاز پردازنده برای پردازش را پیشبینی کرده و در خود ذخیره کند. پس سی پی یو دیتای مورد نیازش را ابتدا در Cache جستجو میکند و اگر در کش وجود داشته باشد (Cache Hit)، از آن میخواند. از آنجایی که این دادهها در کشی قرار دارد که در داخل یا نزدیک پردازنده قرار دارد، سرعت بالایی خواهیم داشت.
با توجه به قابل پیشبینی بودن برخی پروسهها و سرعت بالای چیپهای سیلیکون نسبت به هارددرایو، اگر دادهها در Cache باشند، سرعت دسترسی به آنها هم سریعتر خواهد بود. اگر اطلاعات مورد نیاز پردازنده در کش نباشد (Cache Miss)، پردازنده به حالت Idle و انتظار میرود تا اطلاعات مورد نیازش از حافظه رم به Cache آورده شود.
حافظه نهان یا کش میتواند به دو صورت سخت افزاری و مجازی باشد:
در نوع سخت افزاری، حافظه نهان قسمتی از واحد سخت افزاری مورد نظر (مثلاً CPU های دارای این نوع حافظه یا هارد دیسک های دارای این نوع حافظه) است که عمل Caching را برعهده دارد. مکانیزم،ساختار، سرعت و کارایی حافظه نهان سخت افزاری با حافظه اصلی (RAM) تفاوت زیادی دارد. از این رو با افزایش حجم حافظه نهان سخت افزاری در واحدهایی مانند CPU، قسمت تمام شده آن بیشتر میشود. دلیل این که در همه جا از حافظه نهان استفاده نمیکنند، قیمت و هزینه تهیه بسیار زیاد آن نسبت به سایر حافظهها است.
نحوه عملکرد حافظه نهان مجازی با سخت افزاری متفاوت است. این نوع حافظه نهان در واقع قسمتی از حافظه جانبی است که توسط برنامهها مشخص میشود و برای دسترسی سریعتر، از این قسمت استفاده میکنند. این نوع حافظه نهان به صورت محلی (Local) کارایی ندارد. برای مثال، برنامههایی مانند مرورگرهای وب، قسمتی از حافظه جانبی را تحت عنوان حافظه نهان وب (Web Cache) برای ذخیره سازی موقت دادههای وب مانند صفحات وب، تصاویر، استایلها و … استفاده میکنند و زمانی که کاربر قصد مشاهده صفحه یا تصویر درخواست شده را داشته باشد که در حافظه نهان وب مرورگر موجود باشد، مرورگر همان دادههای کَش شده را به کاربر نشان میدهد. دراین فرایند دیگر دادههای کش شده از طریق اینترنت یا شبکه بارگیری نمیشوند و باعث کاهش ترافیک شبکه، پنهای باند مصرفی، بار روی سرور شده و باعث بهبود فرایند میشوند. این قسمت از حافظه جانبی، تفاوتی با سایر قسمتهای عادی حافظه ندارد و تنها توسط برنامهها به عنوان حافظه نهان مجازی استفاده میشوند.
CPU Cache به سه سطح اصلی تقسیم میشود: L1، L2 و L3 که L مربوط به Level و لایه است و عدد جلوی L، بیانگر نوع کش. این طبقهبندی بر اساس سرعت و ظرفیت کش است. در ادامه با این سه سطح آشنا میشویم.
حافظه L1 در تراشه CPU ساخته شده و با اینکه ظرفیت کمی دارد، سریعترین نوع حافظه برای سی پی یو است در واقع سریعترین حافظهای است که در سیستمهای کامپیوتری وجود دارد. در بین سه سطح از حافظه های Cache که در سیستم وجود دارد، کش سطح یک یا L1 بالاترین سطح در طبقهبندی کش های سی پی یو را دارد و بالاترین سرعت و کمترین ظرفیت را داراست اما کمترین زمان تاخیر و Delay که تقریبا صفر است را دارد که به دلیل نزدیکی زیاد به پردازنده و یا قرارگیری در خود تراشه CPU است.
L1 Cache معمولا تا ۲۵۶ کیلوبایت ظرفیت دارد اما در CPU هایی که واقعا قدرتمند هستند به یک مگابایت هم میرسد. در برخی چیپستهای سروری مثل پردازنده های اینتل زئون، ظرفیت L1 Cache بین یک تا دو مگابایت است.
L1 Cache به دو بخش تقسیم میشود:
Instruction Cache: حاوی اطلاعاتی درباره عملیاتی که پردازنده باید انجام دهد.
Data Cache: حاوی اطلاعاتی که برای اجرای عملیات لازم است.
پردازندههای چند هستهای، برای هر هسته، کش جداگانه L1 دارند.
کش لایه دو، کش ثانویه و کش سطح دو عناوینی است که برای L2 Cache استفاده میشود و حافظه میانی بین لایه اول و لایه سوم کش های CPU است. سرعت L2 Cache از L1 Cache کمتر است اما ظرفیت بیشتری دارد. این ظرفیت بین ۲۵۶ کیلوبایت تا ۸ مگابایت است. هر چند که CPU های قدرتمند جدیدتر، ظرفیت بیشتری دارند.
L2 Cache دادههایی را نگه میدارد که سی پی یو در مرحله بعد احتمالا به آنها احتیاج دارد. در اغلب پردازنده های جدید، L1 Cache و L2 Cache در داخل Core های پردازنده قرار دارند و هر هسته هم، کش خودش را دارد.
در لایهبندی Cache ها اگر دادههای مورد نظر در L1 Cache نباشد، لایههای بعدی بررسی میشود یعنی لایه دوم و سپس سوم.
بیشترین ظرفیت و کمترین سرعت را در بین حافظه های کش را دارد. ظرفیت L3 Cache بین ۴ تا ۵۰ مگابایت است.
همانند آنچه که در طبقهبندی کش ها داریم، هر چه شماره لایه بیشتر باشد و در اصطلاح، لایه در سطح پایینتری باشد، سرعت پایینتر و ظرفیت بیشتری نسبت به لایه قبلی خود خواهد داشت. پس L3 Cache نسبت به L2 Cache دارای سرعت کمتر و ظرفیت بیشتر است و اگر دادهای در کش لایه دوم سی پی یو پیدا نشد، لایه سوم بررسی میشود.
کش لایه سوم معمولا بر روی مادربورد و بین حافظه اصلی سیستم یا همان RAM و کش لایه دوم قرار میگیرد. L3 Cache بهصورت لایه اشتراکی بین تمام هستهها استفاده میشود و وظیفه آن جلوگیری از به وجود آمدن گلوگاه هنگام دریافت اطلاعات از حافظه رم است. در واقع امروزه کش لایه سه همان کاری را انجام میدهد که کش لایه دو قبل از این که در خود پردازنده قرار داده شود، انجام میداد.
در اغلب پردازنده های امروزی، L1 Cache و L2 Cache در خود پردازنده و برای هر هسته تعبیه میشود و L3 Cache هم برای همه Core ها قرار میدهند.
دادهها از RAM به L3 Cache سپس به L2 Cache و در نهایت به L1 Cache میرود.
وقتی پردازنده به دنبال دیتایی برای انجام عملیات است ابتدا سعی میکند آن را در L1 بیاید اگر پیدا کرد، در واقع Cache Hit اتفاق افتاده است. اگر در L1 نبود، در L2 و سپس در L3 میگردد.
اگر داده را در Cache پیدا نکرد، آن را از حافظه اصلی به دست میآورد که به این اتفاق Cache Miss گفته میشود.
همان طور که میدانیم وظیفه کش، تبادل اطلاعات بین حافظه اصلی و پردازنده است. زمان لازم برای دسترسی به دیتای موجود در رم را زمان تاخیر یا Latency میگوییم. بیشترین Latency مربوط به L3 است و کمترین Latency مربوط به L1 که سریعترین و نزدیکترین کش به هسته است.
وقتی Cache Miss اتفاق بیفتد، زمان تاخیر افزایش مییابد زیرا پردازنده مجبور است داده را از حافظه اصلی بخواند نه کش.
هر چه کامپیوتر سریعتر و بهتر باشد، زمان تاخیر کاهش مییابد. هم اکنون رم های DDR4 با زمان تاخیر کم و SSD های بسیار سریع با زمان دسترسی کم به عنوان استوریج اصلی، موجود است که هر دو باعث کاهش زمان تاخیر میشوند.
سابقا کش طوری طراحی شده بود که کش های L2 و L3 در خارج از CPU قرار داشت که باعث تاثیر منفی روی Latency میشود.
با پیشرفتی که در ترانزیستورهای سی پی یو رخ داده امکان قرار دادن میلیاردها ترانزیستور در فضایی کوچکتر از قبل وجود دارد در نتیجه فضای بیشتری برای کش باقی میماند و در پی آن قرارگیری کش در نزدیکی هسته ممکن میشود و در نهایت، Latency کاهش مییابد. هم چنین هر چه حافظه کش پردازنده بیشتر باشد، پردازنده، قویتر و کارایی، بیشتر است. در پردازندههای گرافیکی هم برای افزایش سرعت و کارایی از Cache استفاده میشود.
لپ تاپ استوک :
1400/04/21
لپ تاپ استوک :
1400/06/25
لپ تاپ استوک :
1400/04/09
لپ تاپ استوک :
۱۴۰۱/۰۶/۰۷
دیگران را با نوشتن نظرات خود، برای انتخاب این محصول راهنمایی کنید