جمعه, 10ام فروردين

شما اینجا هستید: رویه نخست تازه‌ها خبر حافظه‌ای نهان در رایانه

خبر

حافظه‌ای نهان در رایانه

برگرفته از روزنامه اطلاعات

‏«کش» یا «حافظه نهان» (‏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 نانوثانیه)، استفاده شود. سرعت دستیابی به حافظه فوق دو مرتبه سریع‌تر نسبت به حافظه اصلی است. این نوع حافظه راL2‌Cache ‎‏ می‌نامند. فرض کنید از یک حافظه به مراتب سریع‌تر ولی با حجم کمتر استفاده و آن را مستقیم با پردازنده اصلی درگیر کرد. سرعت دستیابی به حافظه فوق باید در حد و اندازه سرعت پردازنده باشد. این نوع حافظه‌ها را‎ L1‌Cache ‎ می‌گویند‎.‎‏ در رایانه از زیرسیستم‌های متفاوتی استفاده می‌شود. از‎ Cache ‎‏ می‌توان در رابطه با بیشتر زیر سیستم‌های فوق استفاده کرد تا کارآیی آنان افزایش یابد.

یکی از پرسش‌هایی که ممکن است در ذهن خواننده این متن نقش ببندد این که «چرا تمامی حافظه رایانه‌ها از نوع‎ L1‌Cache ‎ نیستند تا دیگر ضرورتی به استفاده از‎ Cache ‎وجود نداشته باشد؟» در پاسخ باید گفت که اشکالی ندارد و همه چیز هم به خوبی کار خواهد کرد ولی قیمت رایانه به طرز قابل ملاحظه‌ای افزایش خواهد یافت. ایده ‏Cache، استفاده از یک مقدار کم حافظه ولی با سرعت بالا (قیمت بالا) برای افزایش سرعت و کارآیی میزان زیادی حافظه ولی با سرعت پایین (قیمت ارزان) است.

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

نوشتن دیدگاه


تصویر امنیتی
تصویر امنیتی جدید