خبر
حافظهای نهان در رایانه
- خبر
- نمایش از جمعه, 10 شهریور 1391 14:48
- بازدید: 3523
برگرفته از روزنامه اطلاعات
«کش» یا «حافظه نهان» (Cache) رایانه، یکی از فرآیندهای مهم در علم رایانه است. به عبارت دیگر Cache یک مفهوم رایانهای است که روی هر نوع رایانه با یک شکل خاص وجود دارد. اگر تاکنون یک رایانه شخصی خریده باشید، قطعاً اصطلاح Cache را شنیده اید. رایانههای مدرن دارای هر دو نوع کشهای L1 و L2 حتی L3 هستند. همچنین ممکن است از مقدار آن (سلرون، سلرون دی، فول) چیزهایی شنیده باشید این موضوع نشان میدهد که حافظه نهان یک فرایند مهم در علم رایانه است که روی هر رایانهای ظاهر میشود.
کشسازی یک فناوری مبتنی بر زیر سیستم حافظه رایانه است. هدف اصلی یک کش شتاب دهی رایانه و در عین حال پایین نگه داشتن قیمت آن است. کش سازی به شما امکان میدهد تا وظایف رایانه خود را با سرعت بیشتری انجام دهید. برای درک ایده اصلی موجود در پشت یک سیستم کش، اجازه دهید کار را با یک مثال فوقالعاده ساده آغاز کنیم که برای نشان دادن مفاهیم کش سازی از یک پردازنده استفاده میکند. اجازه بدهید یک کتابدار (پردازنده) را در پشت میزش تصور کنیم. او آنجا نشسته است تا کتابی که میخواهید را در اختیار شما قرار دهد برای سادهتر کردن وضعیت اجازه بدهید فرض کنیم که شما خودتان (کاربر پشت رایانه) نمیتوانید کتاب مورد نظر را بردارید شما باید کتاب مورد نظر خود برای مطالعه را از کتابدار (پردازنده) بخواهید تا وی آن را از یک مجموعه قفسه (یعنی بخشهای مختلف پردازنده اعداد صفر و یک را ترجمه کند که این اعداد در RAM هستند) در سالن نگهداری کتابها (RAM) برای شما بیاورد ابتدا اجازه بدهید کار را با یک کتابدار فاقد کش آغاز کنیم.
نخستین مشتری (نخستین برنامه ایی که شما اجرا کرده اید) از راه میرسد؛ او کتاب «بوستان سعدی» (یک برنامه مثل فتوشاپ) را در خواست میکند کتابدار (پردازنده) به سالن نگهداری کتاب (RAM) رفته و کتاب مورد نظر را برداشته به بخش مراجعه برمی گردد (یعنی ترجمه میکند و به مانیتور میفرستد) و کتاب را به مشتری میدهد سپس مشتری برای باز گرداندن کتاب به کتابخانه بر میگردد (برنامه را میبندد) کتاب دار (پردازنده) کتاب مورد نظر را میگیرد و آن را به سالن نگهداری بر میگرداند. سپس کتابدار به بخش مراجعه باز میگردد (یعنی منتظر اجرای فرمانهای بعدی شما است) (حتی حرکت موس) و منتظر مشتری بعدی میماند. فرض کنیم مشتری بعدی نیز کتاب بوستان سعدی را در خواست کند (یعنی دوباره برنامه فتوشاپ را اجرا کنیم) به این ترتیب کتابدار باید به سالن نگهداری(RAM) برگردد تا کتابی را که به تازگی با آن سر و کار داشته است را بردارد و به مشتری (کاربر) تحویل دهد.
در این مدل کتابدار (پردازنده) ناچار است برای آوردن هر کتاب (اجرای یک برنامه) یک چرخه کامل را طی کند؛ حتی کتابهای مشهوری که به دفعات در خواست شده است (یعنی برنامههایی که به دفعات اجرا میشوند و بسته میشوند). اجازه دهید یک کوله پشتی (حافظه نهان) را در اختیار کتابدار قرار دهیم تا بتواند 10 کتاب را در آن ذخیره کند (یعنی کتابدار دارای یک کاشه 10 کتابی است) او در این کوله پشتی حداکثر 10 عدد از کتابهایی را نگهداری میکند که مشتریان برگرداندهاند اجازه دهید از مثال قبلی استفاده کنیم، اما این بار با کتابداری که به کش سازی جدید و بهبود یافته مجهز شده است. روز آغاز میشود، کوله پشتی کتابدار خالی است، نخستین مشتری از راه میرسد و «بوستان سعدی» را در خواست میکند. جای تعجب نیست که کتابدار برای آوردن کتاب ناچار است به سالن نگهداری مراجعه کند. او کتاب را به مشتری میدهد، سپس مشتری بازگشته و کتاب را به کتابدار میدهد، کتابدار به جای مراجعه به سالن نگهداری، کتاب را در کوله پشتی خود قرار میدهد. حالا یک مشتری از راه میرسد و باز هم کتاب بوستان سعدی را درخواست میکند؛ کتابدار پیش از آن که به سالن نگهداری مراجعه کند، بررسی میکند که آیا کتاب مورد نظر در کولهپشتی وی قرار دارد یا نه. او کتاب مورد نظر را مییابد و تمامی کاری که باید انجام دهد این است که آن را از کولهپشتی در آورد و به مشتری بدهد و کار به پایان میرسد.
اگر تاکنون برای خود رایانهای تهیه کرده باشید، واژه «Cache» برای شما آشنا خواهد بود. رایانههای جدید دارای Cache از نوع L1 و L2 هستند. شاید هنگام خرید یک رایانه از طرف کارشناسان سفارشهایی به شما شده باشد برای مثال از تراشههای Celeron استفاده نکنید چون دارای Cache نیستند!
Cache یک مفهوم رایانهای است که روی هر نوع رایانه با یک شکل خاص وجود دارد. حافظههای Cache، نرمافزارهای با قابلیت Cacheهارد دیسک و صفحات Cache همه به نوعی از مفهوم Caching استفاده میکنند. حافظه مجازی که توسط سیستمهای عامل ارائه میشود نیز از مفهوم فوق استفاده میکند.
واژه Caching
Caching یک فناوری استفاده شده برای زیر سیستمهای حافظه، در رایانه است. مهمترین هدف یک Cache افزایش سرعت و عملکرد رایانه بدون تحمیل هزینههای اضافی برای تهیه سیستم است. با استفاده از Cache عملیات کاربران با سرعت بیشتری انجام خواهد شد.
تصور کنید که هر روز به یک رستوران میروید و راس ساعت 5 بعد از ظهر 4 نوع غذا را به ترتیب خاص سفارش میدهید. به این ترتیب که راس ساعت 5 همبرگر سفارش میدهید، گارسون سفارش شما را بررسی میکند به آشپزخونه میرود پس از یک دقیقه همبرگر را برای شما میآورد، شما همبرگر را خورده و سفارش سوسیس میدهید. دوباره سفارش توسط گارسون به آشپزخانه منتقل شده و بعد از یک دقیقه غذا آماده میشود. به همین ترتیب شما سه غذای دیگر را سفارش دادهاید و برای هر غذا یک دقیقه معطل میشوید. خوب شما هر روز همین غذاها را سفارش میدهید و برای آماده شدن هر غذا یک دقیقه معطل میشوید. گارسون با خودش فکر میکند برای این که هم خودش کمتر کار کند و هم شما کمتر معطل شوید، یک میز دیگر آماده از غذاهای شما را تهیه کند و بلافاصله پس از سفارش شما غذا را روی میزتان قرار دهد. در اینجا در مقایسه با رایانه گارسون «باس»، آشپزخانه «رم»، و میز آماده «کش» در نظر گرفته میشوند. بعد از چند روز شما همبرگر را میخورید، طبق عادت گارسون برای شما سوسیس میآورد، اما شما میگویید که امروز پیتزا میخواهم! اینجا گارسون دوباره مجبور میشود که شما را در انتظار نگه دارد تا پیتزا را بیاورد. در اینجا گارسون میز دومی را تهیه میکند که بر اساس انتخابهای دوم شما چیده شده است. بدین ترتیب شما اگر غذایی را سفارش دهید که در میز اول نباشد، اما در میز دوم باشد، بلافاصله غذا را میل میکنید و معطل نمیشوید. میز دوم در اینجا کش سطح دو یا «Cache L2» است. اصطلاحی که امروزه در رابطه با «فول کش» یا «هافکش» گفته میشود، همین کش سطح 2 است. اصول کار پردازنده بدین صورت که پیش بینی دستورات بعدی را میکند و جواب دستورات را در حافظه نهان یا همان کش قرار میدهد. جالب است بدانید که پردازنده، 90 درصد دستورات بعدی را درست حدس میزند و اگر حدس پردازنده غلط از کار در بیاید مجبور است که به حافظه رم مراجعه کند و همین مراجعه باعث تأخیر زیادی در کار پردازنده میشود. نکته قابل گفتن این است که این حافظه بسیار گران قیمت است و به صرفه نیست که برای بالا بردن سرعت رایانه حافظه کش تهیه کنید به همین دلیل مجبور هستید پردازنده را هم عوض کنید!
کتابداری را در نظر بگیرید که در یک کتابخانه مسئول تحویل کتاب به متقاضیان است. فرض کنید در سیستم فوق (درخواست و تحویل کتاب) از مفهوم Cache استفاده نمیشود. نخستین متقاصی کتابی را درخواست میکند. فرض شده است که متقاضی خود نمیتواند مستقیم کتاب مورد نظر را از قفسه مربوطه، بردارد. کتابدار، کتاب مورد نظر را از قفسه مربوطه پیدا میکند و در ادامه آن را تحویل متقاضی میدهد. متقاضی پس از ساعاتی مراجعه و کتاب را تحویل میدهد. کتابدار، کتاب تحویلی را دوباره در قفسه مربوطه قرار میدهد. پس از لحظاتی، یک متقاضی دیگر مراجعه و همان کتاب قبلی را درخواست میکند، کتابدار دوباره باید به بخش مربوطه در کتابخانه مراجعه و پس از یافتن کتاب، آن را در اختیار متقاضی دوم قرار دهد.
همان گونه که ملاحظه میشود، کتابدار مکلف است برای تحویل هر کتاب (حتی کتابهایی که فرکانس استفاده از آنها توسط متقاضیان زیاد باشد) به بخش مربوطه مراجعه و پس از یافتن کتاب آن را در اختیار متقاضیان قرار دهد. آیا روشی وجود دارد که با استناد به آن بتوان عملکرد و کارآیی کتابدار را بهبود بخشید؟
در پاسخ به پرسش فوق میتوان با ایجاد یک سیستم Cache برای کتابدار، کارآیی آن را افزایش داد. فرض کنید بخشی را با ظرفیت حداکثر 10 کتاب در نزدیکی کتابدار آماده کنیم. کتابهایی که توسط متقاضیان برگردانده میشود، در بخش فوق ذخیره خواهند شد. مثال فوق را با در نظر گرفتن سیستم Cache ایجاد شده برای کتابدار دوباره دنبال میکنیم. در ابتدای فعالیت روزانه، بخش Cache خالی بوده و هنوز در آن کتابی قرار نگرفته است. نخستین متقاصی مراجعه و کتابی را درخواست میکند. کتابدار باید به بخش مربوطه مراجعه و کتاب را از قفسه مربوطه بردارد و در اختیار متقاضی قرار دهد. متقاضی پس از تحویل کتاب، چند ساعت بعد مراجعه و کتاب را تجویل کتابدار خواهد داد. کتابدار، کتاب تحویلی را در بخش پیش بینی شده برای Cache قرار میدهد. لحظاتی بعد متقاضی دیگر مراجعه و درخواست همان کتاب را میکند. کتابدار در ابتدا بخش مربوط به Cache را جستجو و در صورت یافتن کتاب، آن را به متقاضی تحویل خواهد داد. در این حالت ضرورتی به مراجعه کتابدار به بخش و قفسههای مربوطه نخواهد بود. در روش فوق زمان تحویل کتاب به متقاضی بهبود چشمگیری پیدا خواهد کرد. در صورتی که کتاب درخواستی توسط متقاضی در بخش Cache کتابخانه نباشد، چه اتفاقی خواهد افتاد؟ در ابتدا مدت زمانی صرف خواهد شد که کتابدار به این اطمینان برسد که کتاب درخواستی در بخش Cache موجود نیست. یکی از چالشهای اصلی در رابطه با طراحی Cache به حداقل رساندن زمان جستجو در Cache است. سخت افزارهای جدید، زمان فوق را به صفر نزدیک کرده اند. پس از حصول اطمینان از نبود کتاب در بخش Cache، کتابدار باید با مراجعه به بخش مربوطه آن را انتخاب و در ادامه در اختیار متقاضی قرار دهد. با توجه به دو مثال فوق، چندین نکته مهم در رابطه با Cache استنباط میشود:
ـ تکنولوژی Cache، استفاده از حافظههای سریع ولی کوچک، به منظور افزایش سرعت یک حافظه کند ولی با حجم بالا است.
ـ زمانی که از Cache استفاده میشود، در ابتدا باید محتویات آن به منظور یافتن اطلاعات مورد نظر بررسی شود. فرآیند فوق را Cache hit میگویند. در صورتی که اطلاعات مورد نظر در Cache موجود نباشند (Cache miss)، رایانه باید در انتظار تأمین دادههای خود از حافظه اصلی سیستم باشد (حافظهای کند ولی با حجم بالا).
ـ اندازه Cache محدود بوده و سعی میشود که ظرفیت فوق حتی المقدور زیاد باشد، ولی به هر حال اندازه آن نسبت به رسانههای ذخیره سازی دیگر بسیار کم است.
ـ این امکان وجود خواهد داشت که از چندین لایه Cache استفاده شود.
رایانه، ماشینی است که زمان انجام کارها توسط آن با واحدهای خیلی کوچک اندازهگیری میشود. زمانی که ریزپردازنده قصد دستیابی به حافظه اصلی را داشته باشد، باید مدت زمانی معادل 60 نانوثانیه را برای این کار در نظر بگیرد. سرعت فوق بسیار بالا است ولی سرعت ریزپردازنده به مراتب بیشتر است. ریزپردازنده قادر به داشتن سیکلهایی به اندازه دو نانوثانیه است. تفاوت سرعت بین پردازنده و حافظه کاملاً مشهود است و قطعاً رضایت پردازنده در این خصوص کسب نخواهد شد. پردازنده باید تاوان کند بودن حافظه را خود بپردازد. انتظار پردازنده و هرز رفتن زمان مفید وی کوچکترین تاوانی است که باید پردازنده پذیرای آن باشد. به منظور حل مشکل فوق، فرض کنید از یک نوع ویژه حافظه، با ظرفیت کم ولی با سرعت بالا (30 نانوثانیه)، استفاده شود. سرعت دستیابی به حافظه فوق دو مرتبه سریعتر نسبت به حافظه اصلی است. این نوع حافظه راL2Cache مینامند. فرض کنید از یک حافظه به مراتب سریعتر ولی با حجم کمتر استفاده و آن را مستقیم با پردازنده اصلی درگیر کرد. سرعت دستیابی به حافظه فوق باید در حد و اندازه سرعت پردازنده باشد. این نوع حافظهها را L1Cache میگویند. در رایانه از زیرسیستمهای متفاوتی استفاده میشود. از Cache میتوان در رابطه با بیشتر زیر سیستمهای فوق استفاده کرد تا کارآیی آنان افزایش یابد.
یکی از پرسشهایی که ممکن است در ذهن خواننده این متن نقش ببندد این که «چرا تمامی حافظه رایانهها از نوع L1Cache نیستند تا دیگر ضرورتی به استفاده از Cache وجود نداشته باشد؟» در پاسخ باید گفت که اشکالی ندارد و همه چیز هم به خوبی کار خواهد کرد ولی قیمت رایانه به طرز قابل ملاحظهای افزایش خواهد یافت. ایده Cache، استفاده از یک مقدار کم حافظه ولی با سرعت بالا (قیمت بالا) برای افزایش سرعت و کارآیی میزان زیادی حافظه ولی با سرعت پایین (قیمت ارزان) است.
در طراحی یک رایانه هدف فراهم کردن شرایط لازم برای فعالیت پردازنده با حداکثر توان و در سریعترین زمان است. یک تراشه 500 مگاهرتزی، در یک ثانیه پانصد میلیون مرتبه سیکل خود را خواهد داشت (هر سیکل در دو نانوثانیه). بدون استفاده از L1 و L2Cache، دستیابی به حافظه حدود 60 نانوثانیه طول خواهد کشید. به هر حال استفاده از Cache اثرات مثبت خود را به دنبال داشته و باعث بهبود کارآیی پردازنده میشود. اگر مقدار L2Cache معادل 256 کیلو بایت و ظرفیت حافظه اصلی معادل 64 مگابایت باشد، 256000 بایت مربوط به Cache با استفاده از روشهای موجود قادر به Cache کردن 64000000 بایت حافظه اصلی خواهند بود.