[h=1][/h]
در دنیای مدرن امروزی، پردازندهها مهمترین بخش سیستمهای دیجیتال هستند. یکی از مهمترین متعلقات هر پردازنده،حافظه کش (Cache) اختصاص داده شده به آن است. با زومیت همراه باشید تا به بررسی دقیق و موشکافنه ساختار و نحوه کار کش بپردازیم.از سه دهه پیش دانشمندان و مهندسان کامپیوتر به فکر استفاده از حافظههای پرسرعت کش در کنار پردازندهها افتادند. این حافظهها با سرعت بسیار بالای خود، اطلاعات را در زمانی بسیار کم به پردازنده رسانده و در تسریع عمل پردازش نقش به سزایی دارند. توسعه حافظههای کش و پردازش کش، یکی از مهمترین رویدادهای تاریخ صنعت پردازش اطلاعات است. اگر بخواهیم موارد استفاده از کش را برشماریم، به فهرستی بیانتها از پردازندههای ریز و درشت خواهیم رسید، چرا که از کوچکترین و کم مصرفترین پردازندههای Cortex A5 کمپانی آرم تا قدرتمندترین پردازنده Core i7 اینتل، تماما از حافظه کش در ساختار خود بهره میبرند. حتی میکروکنترلرهای رده بالا نیز همگی یا از کش بهره میبرند و یا سازندگانشان حداقل آن را به عنوان یک انتخاب اضافه در کنار این محصولات به مشتریان خود پیشنهاد میدهند. کش به این دلیل اهمیت دارد که سرعت پردازش اطلاعات را به نحو چشمگیری افزایش میدهد و افزایش سرعت نیز امری غیر قابل چشم پوشی است، حتی اگر پردازنده سیستم بسیار کوچک و در حد یک میکروکنترلر باشد.
کش برای رفع یک مشکل مهم اختراع و به کار گرفته شد. در اوایل راه صنعت پردازش داده، حافظهها بسیار کند و فوقالعاده گران بودند. در کنار این حافظهها نیز پردازندههایی قرار داشتند که از سرعت بالایی برخوردار نبودند. از اوایل دههی ۱۹۸۰، این اختلاف سرعت بین حافظه و پردازنده شروع به افزایش کرد. سرعت کلاک ریز پردازندهها افزایش پیدا کرد، اما سرعت دسترسی به دادههای ذخیره شده در حافظه با کندی بسیار در حال ارتقا بود. با افزایش این شکاف سرعت، دانشمندان به این نتیجه رسیدند که باید از نوعی حافظه جدید و سریعتر در سیستمها استفاده کرد. شکل زیر به شما در درک مطالب گفته شده کمک میکند.
[h=2]
کش چگونه کار میکند؟[/h]کش پردازنده، در واقع مخزنی از نوع حافظه پر سرعت است و اطلاعاتی که پردازنده بیشتر به آنها نیاز دارد را در خود ذخیره میکند تا همواره آنها را نزدیک پردازنده داشته باشیم. این که دقیقا چه اطلاعاتی در درون کش قرار میگیرند، بستگی به الگوریتمهای پیچیده و فرضیات خاصی درباره برنامه در حال اجرا دارد. هدف استفاده از سیستم کش، این است که مطمئن شویم هنگامی که پردازنده برای یافتن بیت بعدی از اطلاعات مورد نیازش به جستجو میپردازد، بلافاصله آن را به صورت آماده در حافظه کش بیابد. به این وضعیت، Cache Hit میگویند. در مقابل، وضعیت دیگری نیز وجود دارد که با نام Cache Miss شناخته میشود. این وضعیت هنگامی رخ میدهد که پردازنده، اطلاعات مورد نظر خود را در حافظه کش نیافته و ناچار به جستجو در حافظههای دیگر شود. اینجاست که حافظه کش سطح ۲ (L2 Cache) مورد استفاده قرار میگیرد. این نوع کش گرچه نسبت به حافظه کش سطح ۱ (L1 Cache) کندتر است، اما گنجایش بسیار بیشتری دارد. برخی از پردازندهها از طراحی کش تو در تو (Inclusive) استفاده میکنند. در این نوع طراحی، اطلاعات ذخیره شده در کش L1، در L2 نیز کپی میشوند. بدین ترتیب کش L2 حاوی اطلاعات کش L1 و مقدار اضافهای از اطلاعات دیگر است. سایر پردازندهها از طراحی کش انحصاری (Exclusive) استفاده میکنند. در این نوع طراحی، اطلاعات درون حافظههای کش L1 و L2 کاملا منحصر به فرد بوده و این دو هیچ گونه اطلاعات مشترکی ندارند. اگر پردازنده موفق به یافتن اطلاعات در حافظههای کش L1 و L2 نشود، به جستجو در لایه سوم کش (L3 Cache) میپردازد. اگر اطلاعات آنجا هم نبودند، در صورت وجود کش L4، به آن مراجعه میکند و اگر اطلاعات باز هم پیدا نشدند، به جستجو در حافظه رم پویا (DRAM) میپردازد.
در دنیای مدرن امروزی، پردازندهها مهمترین بخش سیستمهای دیجیتال هستند. یکی از مهمترین متعلقات هر پردازنده،حافظه کش (Cache) اختصاص داده شده به آن است. با زومیت همراه باشید تا به بررسی دقیق و موشکافنه ساختار و نحوه کار کش بپردازیم.از سه دهه پیش دانشمندان و مهندسان کامپیوتر به فکر استفاده از حافظههای پرسرعت کش در کنار پردازندهها افتادند. این حافظهها با سرعت بسیار بالای خود، اطلاعات را در زمانی بسیار کم به پردازنده رسانده و در تسریع عمل پردازش نقش به سزایی دارند. توسعه حافظههای کش و پردازش کش، یکی از مهمترین رویدادهای تاریخ صنعت پردازش اطلاعات است. اگر بخواهیم موارد استفاده از کش را برشماریم، به فهرستی بیانتها از پردازندههای ریز و درشت خواهیم رسید، چرا که از کوچکترین و کم مصرفترین پردازندههای Cortex A5 کمپانی آرم تا قدرتمندترین پردازنده Core i7 اینتل، تماما از حافظه کش در ساختار خود بهره میبرند. حتی میکروکنترلرهای رده بالا نیز همگی یا از کش بهره میبرند و یا سازندگانشان حداقل آن را به عنوان یک انتخاب اضافه در کنار این محصولات به مشتریان خود پیشنهاد میدهند. کش به این دلیل اهمیت دارد که سرعت پردازش اطلاعات را به نحو چشمگیری افزایش میدهد و افزایش سرعت نیز امری غیر قابل چشم پوشی است، حتی اگر پردازنده سیستم بسیار کوچک و در حد یک میکروکنترلر باشد.
کش برای رفع یک مشکل مهم اختراع و به کار گرفته شد. در اوایل راه صنعت پردازش داده، حافظهها بسیار کند و فوقالعاده گران بودند. در کنار این حافظهها نیز پردازندههایی قرار داشتند که از سرعت بالایی برخوردار نبودند. از اوایل دههی ۱۹۸۰، این اختلاف سرعت بین حافظه و پردازنده شروع به افزایش کرد. سرعت کلاک ریز پردازندهها افزایش پیدا کرد، اما سرعت دسترسی به دادههای ذخیره شده در حافظه با کندی بسیار در حال ارتقا بود. با افزایش این شکاف سرعت، دانشمندان به این نتیجه رسیدند که باید از نوعی حافظه جدید و سریعتر در سیستمها استفاده کرد. شکل زیر به شما در درک مطالب گفته شده کمک میکند.
[h=2]
کش چگونه کار میکند؟[/h]کش پردازنده، در واقع مخزنی از نوع حافظه پر سرعت است و اطلاعاتی که پردازنده بیشتر به آنها نیاز دارد را در خود ذخیره میکند تا همواره آنها را نزدیک پردازنده داشته باشیم. این که دقیقا چه اطلاعاتی در درون کش قرار میگیرند، بستگی به الگوریتمهای پیچیده و فرضیات خاصی درباره برنامه در حال اجرا دارد. هدف استفاده از سیستم کش، این است که مطمئن شویم هنگامی که پردازنده برای یافتن بیت بعدی از اطلاعات مورد نیازش به جستجو میپردازد، بلافاصله آن را به صورت آماده در حافظه کش بیابد. به این وضعیت، Cache Hit میگویند. در مقابل، وضعیت دیگری نیز وجود دارد که با نام Cache Miss شناخته میشود. این وضعیت هنگامی رخ میدهد که پردازنده، اطلاعات مورد نظر خود را در حافظه کش نیافته و ناچار به جستجو در حافظههای دیگر شود. اینجاست که حافظه کش سطح ۲ (L2 Cache) مورد استفاده قرار میگیرد. این نوع کش گرچه نسبت به حافظه کش سطح ۱ (L1 Cache) کندتر است، اما گنجایش بسیار بیشتری دارد. برخی از پردازندهها از طراحی کش تو در تو (Inclusive) استفاده میکنند. در این نوع طراحی، اطلاعات ذخیره شده در کش L1، در L2 نیز کپی میشوند. بدین ترتیب کش L2 حاوی اطلاعات کش L1 و مقدار اضافهای از اطلاعات دیگر است. سایر پردازندهها از طراحی کش انحصاری (Exclusive) استفاده میکنند. در این نوع طراحی، اطلاعات درون حافظههای کش L1 و L2 کاملا منحصر به فرد بوده و این دو هیچ گونه اطلاعات مشترکی ندارند. اگر پردازنده موفق به یافتن اطلاعات در حافظههای کش L1 و L2 نشود، به جستجو در لایه سوم کش (L3 Cache) میپردازد. اگر اطلاعات آنجا هم نبودند، در صورت وجود کش L4، به آن مراجعه میکند و اگر اطلاعات باز هم پیدا نشدند، به جستجو در حافظه رم پویا (DRAM) میپردازد.