حافظه نهان سی‌پی‌یو

از ویکی‌پدیا، دانشنامهٔ آزاد
(تغییرمسیر از کش سی‌پی‌یو)
پرش به: ناوبری، جستجو

حافظه پنهان سی‌پی‌یو (به انگلیسی: CPU cache) حافظه‌ای است که توسط واحد پردازنده مرکزی رایانه برای کاهش زمان دسترسی به حافظه‌موقت (به انگلیسی: Ram) استفاده می‌شود. کش حافظه‌ای کوچک تر، سریع تر، و گرانتر است که اطلاعات مورد نیازتر را در خود ذخیره می‌کند. استفاده از کش تاخیر را کاهش می‌دهد. وقتی پردازنده می‌خواهد داده‌ای را از حافظه اصلی (حافظه‌موقت) بخواند ابتدا چک می‌کند که آن در کش موجود باشد در غیر این صورت به سراغ حافظهٔ اصلی می‌رود. اکثر کامپیوترهای امروزی حداقل دو کش دارند:یک کش دستورات برای افزایش سرعت واکشی دستورات و یک کش داده برای افزایش سرعت خواندن و ذخیره داده‌ها.

جزییات کار[ویرایش]

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

ساختمان مدخل کش[ویرایش]

مداخل سطری کش معمولاً ساختاری این چنینی دارند:

tag data blocks valid bit

بلوک‌های داده حاوی داده‌های واکشی شده از حافظه اصلی می‌باشند. بیت اعتبار مشخص می‌کند که مدخل مذکور داده معتبر دارد یا نه.

شرکت پذیری[ویرایش]

Which memory locations can be cached by which cache locations

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

خطای کش[ویرایش]

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

ترجمه آدرس[ویرایش]

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

سلسله مراتب کش در یک پردازنده مدرن[ویرایش]

پردازنده‌های مدرن کش‌های زیادی روی یک چیپ دارند.

کش اختصاصی[ویرایش]

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

کش متهم[ویرایش]

یک کش متهم کشی است که بلوک‌هایی که توسط پردازنده واکشی شده‌اند را نگه می‌دارد.

کش دنبال[ویرایش]

کشی است که در پنتیوم۴ برای افزایش پهنای باند واکشی دستورات و کاهش مصرف انرژی مورد استفاده قرار گرفت.

کش‌های چند سطحی[ویرایش]

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

Example of hierarchy, the K8

تاریخچه[ویرایش]

تاریخچه اولیه فناوری کش تقریباً مصادف با ابداع و استفاده از حافظه مجازی است. به خاطر قیمت بالای نیمه رساناها در دهه ۱۹۶۰ کامپیوترها به سمت استفاده از حافظه مجازی سوق پیدا کردند. در روزهای اولیه سرعت دسترسی به حافظه تنها مقدار کمی با رجیستر فرق داشت ولی در دهه ۱۹۸۰ با ساخت پردازنده‌های پرسرعت شکاف سرعت بین پردازنده و حافظه بسیار بیشتر شد که این موضوع باعث پدید آمدن حافظه‌های میانی از جمله کش شد.

منابع[ویرایش]

  1. TMS320C66x DSP Cache User Guide, Texas Instruments, November 2010, p. 1-5 

http://en.wikipedia.org/w/index.php?title=CPU_cache&oldid=460679638