اگر تا کنون برای خود کامپيوتری تهيه کرده باشيد، واژهCache برای شما آشنا خواهد بود. کامپيوترهای جديد دارای Cache از نوع L1 و L2 می باشند. شايد در هنگام خريد يک کامپيوتر از طرف دوستانتان توصيه هائی به شما شده باشد مثلا" : " سعی کن از تراشه های Celeron استفاده نکنی چون دارای Cache نمی باشند".
Cache يک مفهوم کامپيوتری است که بر روی هر نوع کامپيوتر با يک شکل خاص وجود دارد. حافظه های Cache، نرم افزارهای با قابليت Cache، هارد ديسک و صفحات ،Cacheهمه به نوعی از مفهوم Caching استفاده می نمايند. حافظه مجازی که توسط سيستم های عامل ارائه می گردد نيز از مفهوم فوق استفاده می نمايد.

مبانی Caching
Cachingيک تکنولوژی استفاده شده برای زير سيستمهای حافظه، در کامپيوتر است. مهمترين هدف يک Cache افزايش سرعت و عملکرد کامپيوتر بدون تحميل هزينه های اضافی برای تهيه سيستم است. با استفاده از Cacheعمليات کاربران با سرعت بيشتری انجام خواهد شد.
کتابداری را در نظر بگيريد که در يک کتابخانه مسئول تحويل کتاب به متقاضيان است. فرض کنيد در سيستم فوق درخواست و تحويل کتاب از مفهوم Cache استفاده نمی گردد. اولين متقاصی کتابی را درخواست می نمايد ( فرض شده است که متقاضی خود نمی تواند مستقيماً کتاب مورد نظر را از قفسه مربوطه بردارد)، کتابدار، کتاب مورد نظر را از قفسه مربوطه پيدا و در ادامه آن را تحويل متقاضی می نمايد. متقاضی پس از ساعاتی مراجعه و کتاب را تحويل می دهد. کتابدار، کتاب تحويلی را مجدداً در قفسه مربوطه قرار می دهد. پس از لحظاتی يک متقاضی ديگر مراجعه و همان،کتاب قبلی را درخواست می نمايد، کتابدار مجدداً می بايست به بخش مربوطه در کتابخانه مراجعه و پس از بازيابی کتاب آن را در اختيار متقاضی دوم قرار دهد. همانگونه که ملاحظه می گردد، کتابدار مکلف است برای تحويل هر کتاب (هرچند کتاب هائی که فرکانس استفاده از آنان توسط متقاضيان زياد باشد) به بخش مربوطه مراجعه و پس از يافتن کتاب آن را در اختيار متقاضيان قرار دهد.
آيا روشی وجود دارد که با استناد به آن بتوان عملکرد و کارآئی کتابدار را بهبود بخشيد ؟
در پاسخ به سوال فوق می توان با ايجاد يک سيستم Cache برای کتابدار، کارآئی آن را افزايش داد. فرض کنيد بخشی را، با ظرفيت حداکثر ده کتاب در مجاورت کتابدار آماده نمائيم. کتابهائی که توسط متقاضيان برگردانده می شود در بخش فوق ذخيره خواهند شد.
حالا مثال فوق را با در نظر گرفتن سيستم Cache ايجاد شده برای کتابدار مجدداً دنبال می نمائيم. در ابتدای فعاليت روزانه، بخش Cache خالی بوده و هنوز در آن کتابی قرار نگرفته است. اولين متقاضی مراجعه و کتابی را درخواست می نمايد. کتابدار می بايست به بخش مربوطه مراجعه و کتاب را از قفسه مربوطه براشته و در اختيار متقاضی قرار دهد. متقاضی پس از تحويل کتاب، چند ساعت بعد مراجعه و کتاب را تحویل کتابدار خواهد داد. کتابدار، کتاب تحويلی را در بخش پيش بينی شده برای Cache قرار می دهد. لحظاتی بعد متقاضی ديگر مراجعه و درخواست همان کتاب را می نمايد. کتابدار در ابتدا بخش مربوط به Cache را جستجو و درصورت يافتن کتاب، آن را به متقاضی تحويل خواهد داد. در اين حالت زمان تحويل کتاب به متقاضی بهبود چشمگيری پيدا خواهد کرد.
در صورتي که کتاب درخواستی توسط متقاضی در در بخش Cache کتابخانه نباشد، چه اتفاقی خواهد افتاد؟ در ابتدا مدت زمانی صرف خواهد شد که کتابدار به اين اطمينان برسد که کتاب درخواستی در بخش Cache موجود نمی باشد (جستجو) يکی از چالش های اصلی در رابطه با طراحی Cache به حداقل رساندن زمان جستجو در Cache است.سخت افزارهای جديد، زمان فوق را به صفر نزديک کرده اند. پس از حصول اطمينان از عدم وجود کتاب در بخش Cache ،کتابدار می بايست با مراجعه به بخش مربوطه آن را انتخاب و در اختيار متقاضی قرار دهد.
با توجه به مثال فوق، چندين نکته مهم در رابطه با Cache استنباط می گردد:
1.تکنولوژی Cache ، استفاده از حافظه های سريع ولی کوچک، بمنظور افزايش سرعت يک حافظه کند ولی با حجم بالا است.
2.زماني که از Cache استفاده می گردد، در ابتدا می بايست محتويات آن به منظور يافتن اطلاعات مورد نظر بررسی گردد فرآيند فوق را Cache hit می گويند. در صورتيکه اطلاعات مورد نظر در Cache موجود نباشند (Cache miss) ،کامپيوتر می بايست در انتظار تامين داده های خود از حافظه اصلی سيستم باشد (حافظه ای کند ولی با حجم بالا).
3.اندازه Cache محدود بوده وسعی می گردد که ظرفيت فوق حتی المقدور زياد باشد، ولی به هرحال اندازه آن نسبت به رسانه های ذخيره سازی ديگر بسيارکم است.
4.اين امکان وجود خواهد داشت که از چندين لايه Cache استفاده گردد.


Cache در کامپيوتر
کامپيوتر، ماشينی است که زمان انجام کارها توسط آن با واحدهای خيلی کوچک اندازه گيری می گردد.زماني که ريزپردازنده قصد دستيابی به حافظه اصلی را داشته باشد، می بايست مدت زمانی معادل 60 نانوثانيه را برای اين کار در نظر بگيرد. سرعت فوق بسيار بالا است ولی سرعت ريزپردازنده بمراتب يشتراست. ريزپردازنده قادر به داشتن سيکل هائی به اندازه دو نانوثانيه است. تفاوت سرعت بين پردازنده و حافظه کاملا" مشهود بوده و قطعاً رضايت پردازنده در اين خصوص کسب نخواهد شد. پردازنده می بايست تاوان کند بودن حافظه را خود بپردازد. انتظار پردازنده و هرز رفتن زمان مفيد وی کوچکترين تاوانی است که می بايست پردازنده پذيرای آن باشد. به منظور حل مشکل فوق، فرض کنيد از يک نوع حاص حافظه، با ظرفيت کم ولی با سرعت بالا (30 نانوثانيه) استفاده شود. سرعت دستيابی به حافظه فوق دو مرتبه سريعتر نسبت به حافظه اصلی است.اين نوع حافظه را L2 Cache می نامند.
فرض کنيد از يک حافظه به مراتب سريعتر ولی با حجم کمتر استفاده و آن را مستقيماً با پردازنده اصلی درگير نمود. سرعت دستيابی به حافظه فوق می بايست در حد و اندازه سرعت پردازنده باشد.اين نوع حافظه ها را L1 Cache می گويند.
در کامپيوتر از زيرسيستمهای متفاوتی استفاده می گردد. از Cache می توان در رابطه با اکثر زير سيستم های فوق استفاده کرد تا کارآئی آنان افزايش يابد.

تکنولوژی Cache

يکی از سوالاتی که ممکن است در ذهن خواننده اين بخش خطور پيدا کند اين است که چرا تمام حافظه کامپيوترها از نوع L1 Cache نمی باشند تا ديگر ضرورتی به استفاده ازدیگر Cache وجود نداشته باشد؟ در پاسخ می بايست گفت که اشکالی ندارد و همه چيز هم به خوبی کار خواهد کرد ولی قيمت کامپيوتر به طرز قابل ملاحظه ای افزايش خواهد يافت. ايده Cache، استفاده از يک مقدار کم حافظه ولی با سرعت بالا (قيمت بالا) برای افزايش سرعت و کارآئی ميزان زيادی حافظه ولی با سرعت پايين (قيمت ارزان) است.
در طراحی يک کامپيوتر، هدف فراهم کردن شرايط لازم برای فعاليت پردازنده با حداکثر توان و در سريعترين زمان است. يک تراشه 500 مگاهرتزی، در يک ثانيه پانصد ميليون مرتبه سيکل خود را خواهد داشت (هر سيکل در دو نانو ثانيه) بدون استفاده از L1 Cache و L2 ، دستيابی به حافظه حدوداً 60 نانو ثانيه طول خواهد کشيد. به هرحال استفاده ازCache اثرات مثبت خود را به دنبال داشته و باعث بهبود کارآئی پردازنده می گردد. اگر مقدارL2 Cache معادل 256 کيلو بایت و ظرفيت حافظه اصلی معادل 64 مگابايت باشد، 256000 بايت مربوط به Cache با استفاده از روش های موجود قادر به Cache نمودن 64000000 بايت حافظه اصلی خواهند بود.

Register و Cache
با توجه به سرعت بسيار بالای پردازنده حتی در صورت استفاده از BUS عريض و سريع همچنان مدت زمانی طول خواهد کشيد تا داده ها از حافظه RAM به پردازنده ارسال گردند. Cache با اين هدف طراحی شده است که داده های مورد نياز پردازنده را که احتمال استفاده از آنان بيشتر است، در دسترس تر قرار دهد. عمليات فوق از طريق به کارگيری مقدار اندکی از حافظه Cache که Primary و يا Level 1 ناميده می شود صورت می پذيرد. ظرفيت حافظه های فوق بسيار اندک بوده و از دو کيلو بايت تا شصت و چهار کيلو بايت را، شامل می گردد.
نوع دوم Cache که Secodary و يا level 2 ناميده می شود بر روی يک کارت حافظه و در مجاورت پردازنده قرار می گيرد. اين نوع Cache دارای يک ارتباط مستقيم با پردازنده است. يک مدار کنترل کننده اختصاصی بر روی برد اصلی که "کنترل کننده L2 " ناميده می شود مسئوليت عمليات مربوطه را برعهده خواهد گرفت. با توجه به نوع پردازنده ، اندازه حافظه فوق متغير بوده و دارای دامنه ای بين 256Kb تا 2MB است. برخی از پردازنده های با کارائی بالا اخيرا" اين نوع Cache را بعنوان جزئی جداناپذير در کنار خود دارند. (بخشی از تراشه پردازنده) در اين نوع پردازنده ها با توجه به اينکه Cache بخشی از پردازنده محسوب می گردد، اندازه آن متغير بوده و بعنوان يکی از مهمترين شاخص ها در کارائی پردازنده مطرح است.
نوع ديگری از RAM با نام SRAM (حافظه های با دستيابی تصادفی ايستا ) نيز وجود داشته که در آغاز برای Cache استفاده می گرديد. اين نوع حافظه ها از چندين ترانزيستور (معمولا" چهار تا شش) برای هر يک از سلول های حافظه خود استفاده می نمايند. حافظه های فوق دارای مجموعه ای از فليپ فلاپ ها با دو وضعيت خواهند بود. بنابراين حافظه های فوق قادر به بازخوانی اطلاعات بصورت پيوسته نظير حافظه های DRAM نخواهند بود. هر يک از سلول های حافظه ماداميکه منبع تامين انرژی آنها فعال (On) باشد داده های خود را ذخيره نگاه خواهند داشت. در اين حالت ضرورتی به بازخوانی اطلاعات بصورت پريوديک نخواهد بود. سرعت حافظه های فوق بسيار بالا است، ولی بدليل قيمت بالا، در حال حاضر بعنوان جايگزينی استاندارد برای حافظه های RAM مطرح نمی باشند.