حافظه نهان سیپییو
حافظه پنهان سیپییو (به انگلیسی: CPU cache) حافظهای است که توسط واحد پردازنده مرکزی رایانه برای کاهش زمان دسترسی به حافظهموقت (به انگلیسی: RAM) استفاده میشود. کش حافظهای کوچکتر، سریع تر، و گرانتر از رم است که اطلاعات مورد نیازتر پردازنده را در خود ذخیره میکند. استفاده از کش تأخیر دسترسی را کاهش میدهد. وقتی پردازنده میخواهد دادهای را از حافظه اصلی (حافظهموقت) بخواند ابتدا بررسی میکند که آن در کش موجود باشد در غیر این صورت به سراغ حافظهٔ اصلی میرود. اکثر کامپیوترهای امروزی حداقل دو کش دارند:یک کش دستورها برای افزایش سرعت واکشی دستورها و یک کش داده برای افزایش سرعت خواندن و نوشتن (ذخیره) دادهها.
تاریخچهویرایش
تاریخچه اولیه فناوری کش تقریباً مصادف با ابداع و استفاده از حافظه مجازی است. به خاطر قیمت بالای نیمه رساناها در دهه ۱۹۶۰ کامپیوترها به سمت استفاده از حافظه مجازی سوق پیدا کردند. در روزهای اولیه سرعت دسترسی به حافظه تنها مقدار کمی با رجیستر فرق داشت ولی در دهه ۱۹۸۰ با ساخت پردازندههای پرسرعت شکاف سرعت بین پردازنده و حافظه بسیار بیشتر شد که این موضوع باعث پدید آمدن حافظههای میانی از جمله کش شد.
سطحهاویرایش
معمولاً پردازندهها تا ۳ لایه حافظه نهان دارند که لایه اول (L1) نسبت به دوم (L2) و دوم نیز نسبت به سوم (L3) دارای سرعت بیشتر و حافظه کمتری است. زمانیکه پردازنده میخواهد داده ای را مورد پردازش قرار دهد ابتدا به نزدیک ترین حافظه سطح حافظه نهان خود نگاه میکند تا در صورت موجود بودن آن دستورالعمل را پردازش کند. سطح 1 نزدیک ترین سطح به پردازنده است. بدین ترتیب اگر داده ها در نزدیک ترین سطح حافظه پنهان پردازنده یافت شد آن مورد پردازش قرار میگیرد و اگر پیدا نشد به ترتیب به سطح های بعدی می رود و در نهایت اگر پیدا نشد به حافظه اصلی رجوع میکند.
- L1 cache: حافظه کش سطح L1 فوق العاده سریع است اما بسیار کوچک است. این حافظه عمدتاََ بر روی تراشه پردازنده قرار دارد.
- L2 cache: حافظه کش سطح L2 ظرفیت ذخیره سازی اطلاعات بیشتری نسبت به حافظه L1 را دارد. این حافظه در تراشه CPU یا در تراشه جداگانه واقع شده است، اما به CPU با data bus ای مخصوص بخود با سرعت بالا متصل شده است.
جزییات کارویرایش
وقتی پردازنده نیاز دارد که دادهای را بخواند یا بنویسد ابتدا چک میکند که در کش موجود است یا نه، این کار به وسیله مقایسه آدرس مکان حافظه با همه تگهای موجود در کش که ممکن است حاوی آدرس باشد صورت میپذیرد. اگر پردازنده آدرس مکان مورد نظر حافظه را در کش بیابد میگوییم که یک برخورد کش رخ داده در غیر این صورت گوییم که یک خطای کش روی دادهاست. در صورت برخورد پردازنده به سرعت دادهها را از خط کش میخواند یا مینویسد. نسبتی از دسترسیها که منجر به برخورد میشود را نرخ برخورد گویند و مقیاسی است برای اندازهگیری کارایی یک الگوریتم یا برنامه. در صورت بروز خطا کش مدخلی دیگر را در نظر میگیرد. اگر دادهای در کش نوشته شود باید در حافظه اصلی نیز نوشته شود. زمان این نگارش به وسیه سیاست نگارش کنترل میشود.[۱]
ساختمان مدخل کشویرایش
مداخل سطری کش معمولاً ساختاری این چنینی دارند:
tag | data blocks | valid bit |
بلوکهای داده حاوی دادههای واکشی شده از حافظه اصلی میباشند. بیت اعتبار مشخص میکند که مدخل مذکور داده معتبر دارد یا نه.
شرکت پذیریویرایش
سیاست جایگزینی تصمیم میگیرد که کجا در کش یک کپی از دادهای از حافظه اصلی خواهد رفت. اگر سیاست جایگزینی آزاد باشد که هر جایی در کش را انتخاب کند کش شرکت پذیر کامل نامیده میشود. کشی که تنها یک جا را برای ذخیره داده دارد کش نقشه مستقیم خوانده میشود. اگر هر آدرس حافظه بتواند در دو نقطه از کش ذخیره شود کش را دو سویه شرکت پذیر گویند.
خطای کشویرایش
یک خطای کش به یک شکست در خواندن یا نوشتن داده در کش گویند، که باعث تأخیری بسیار بزرگتر در دسترسی به حافظه اصلی میشود. سه نوع خطای کش وجود دارد:خطای خواندن دستور کش، خطای خواندن داده کش و خطای نوشتن داده کش. برای کاهش میزان خطای کش تلاشهای بسیاری صورت گرفتهاست اعم از مسایل مربوط به شرکت پذیری، سایز بلوک و غیره.
ترجمه آدرسویرایش
اکثر پردازندههای چند منظوره امروزی نوعی از حافظه مجازی را پیادهسازی میکنند. برای سادهسازی هر برنامهای که روی ماشین در حال اجراست فضای آدرس ساده شده خود را میبیند که تنها شامل کد و داده آن برنامهاست. هر برنامه حافظه مجازی را صرف نظر از حافظه فیزیکی استفاده میکند. حافظه مجازی نیاز دارد که پردازنده آدرسهای مجازی تولید شده توسط برنامه را بر حافظه اصلی ترجمه کند.
سلسله مراتب کش در یک پردازنده مدرنویرایش
پردازندههای مدرن کشهای زیادی روی یک چیپ دارند.
کش اختصاصیویرایش
پردازندههای لوله کشی شده از طریق نقاط مختلف روی لوله کشی به حافظه دسترسی دارند. این پردازندهها از الگوریتم فون نیومن برای عمل استفاده میکنند که در هر یک از پنج مرحله یک کش اختصاصی دارند.
کش متهمویرایش
یک کش متهم کشی است که بلوکهایی که توسط پردازنده واکشی شدهاند را نگه میدارد.
کش دنبالویرایش
کشی است که در پنتیوم۴ برای افزایش پهنای باند واکشی دستورها و کاهش مصرف انرژی مورد استفاده قرار گرفت.
کشهای چند سطحیویرایش
مسئله دیگر ایجاد توازن بین تأخیر کش و نرخ برخورد آن است. کشهای بزرگتر دارای نرخ برخورد بیشتر هستند ولی تأخیر بیشتری نیز دارند. به همین خاطر اکثر کامیپوترهای امروزی از چند سطح کش استفاده میکنند که در آن کشهای کوچک و سریع به وسیله کشهای بزرگتر ولی کندتر پشتیبانی میشوند.
منابعویرایش
- ↑ TMS320C66x DSP Cache User Guide (PDF), Texas Instruments, November 2010, p. 1-5
http://en.wikipedia.org/w/index.php?title=CPU_cache&oldid=460679638