آیا تا به حال از خود پرسیدهاید که چه لزومی دارد روی یک کامپیوتر RAM وجود داشته باشد؟ همانطور که میدانید، RAM نیز همچون هارد دیسک یک حافظه است. پس با وجود هارد دیسکهای حجیم و پرسرعت امروزی، چه لزومی به وجود RAM است؟ میدانید که Cache نیز یک حافظه کوچک است که در کنار CPU قرار دارد، اما باز هم سؤال این است که با وجود حافظهای مثل هارد دیسک، چه نیازی به رم و کش که حافظه موقتی هستند، است؟
بگذارید کمی درباره فلسفه وجود RAM و Cache با یک مثال، توضیح دهم:
آیا تا به حال دقت کردهاید که افرادی که موسیقیهای تند گوش میکنند، کمی عصبیتر از بقیه هستند؟ این نوع افراد خیلی زود از کوره در میروند و ناگهان داد و فریادی باورنکردنی به راه میاندازند. البته ممکن است در ظاهر خودشان را افرادی آرام جلوه دهند، اما کافیست کمی با اعصابشان بازی کنید، آنوقت خواهید دید که چه بلایی سر خودشان آوردهاند. این نوع افراد، به مرور به آنجا میرسند که شما هر کاری و هر تفریحی به آنها پیشنهاد بدهید، خواهند گفت: حوصلهاش را ندارم. یا اعصابش را ندارم.
همانطور که میدانید، هر صدایی یک موج تولید میکند. کسانی که در رشته کامپیوتر تحصیل میکنند، ممکن است استادشان در درس «محاسبات عددی» مطالبی در مورد کاربرد این درس در شناسایی و اندازهگیری این امواج بیان کند.
جالب است که انسان و همه موجودات طبیعت، تمایل دارند که خود را با موجی که یک صوت تولید میکند، هماهنگ کنند. به همین دلیل است که شما میبینید وقتی شخصی قرآن میخواند، ناخودآگاه جلو و عقب میرود! یا برخی دعاها باعث میشوند انسان برای هماهنگی با آنها به سمت چپ و راست مایل شود.
در تلویزیون میبینید که وقتی بخشهایی از پارتیهای جوانان را نشان میدهد، این افراد با آن آهنگ تند خودشان را هماهنگ کردهاند و ناخودآگاه بالا و پایین میپرند یا سرشان را به شدت به سمت چپ و راست پرتاب میکنند.
مثالهای از این دست بسیار است: مثلاً دیدهاید که راننده ماشینهایی که آهنگ تند در آنها پخش میشود، معمولاً ناخواسته تندتر و هیجانیتر از بقیه رانندگی میکنند.
اینها از تأثیرات امواجی است که صدا در طبیعت ایجاد میکند.
اینکه انسان خودش را با امواج صداها و آهنگها هماهنگ میکند، برای جلوگیری از تأثیرات منفی آن در حالت باقی ماندن به سکون است. یعنی اینکه بهتر است وقتی شما یک آهنگ را میشنوید بگذارید بدنتان با آن آهنگ هماهنگ شود. (از تأثیر آن بر روی آب و گیاه و حیوانات هم که زیاد شنیدهاید) یک نکته جالب در فیلم «الفبای افغان» دیدم و آن اینکه ملاها در افغانستان از همان کودکی به بچهها آموزش میدهند که وقتی قرآن میخوانند، خود را به جلو و عقب حرکت دهند. (دقیقاً نمیدانم که این منبع روایی دارد یا خیر، اما به هر حال هر کس دستور چنین کاری داده، از اصل موضوع خبر داشته است)
اگر شما نتوانید خودتان را با آهنگی که میشنوید هماهنگ کنید، به مرور نشانههای عصبی و عصبانی شدن را در خود خواهید دید.
بیایید تصور کنیم یک نفر در حال گوش دادن به یک موسیقی تند است. چقدر خطرناک خواهد بود اگر تصور کنیم که این شخص در یک ماشین در حال گوش دادن به این موسیقی است!! امواج موسیقی او را به حرکت تند، جنب و جوش و شور و هیجان دعوت میکند، اما او بر روی یک صندلی، در پشت یک کمربند ایمنی زندانی است. شاید تند راندن و جیغ کشیدن در ماشین کمی او را با امواج موسیقی هماهنگ کند، اما فاجعهانگیزترین حالت، زمانی خواهد بود که تصور کنیم این شخص در یک ماشین و در پشت ترافیکی مثل ترافیکهای تهران در حال گوش دادن به این موسیقی است!! میخواهد جنب و جوش داشته باشد، زندانی است، هر چه میخواهد گاز بدهد، چراغ قرمز جلوش را گرفته است و خلاصه عدم هماهنگی با این امواج! اگر کمی به این افراد دقت کنید، شروع میکنند انگشتان خود را روی دنده ماشین حرکت دادن و ضربه زدن روی دسته دنده. اگر دستشان روی فرمان باشد، تند تند روی فرمان ضربه میزنند. خیلی بیشتر از بقیه بوق میزنند! در حالی که ماشین خلاص است، گاز میدهند و حرکاتی که همه و همه از تأثیرات امواجی است که آن موسیقی ایجاد کردهاند.
این افراد همان افرادی هستند که به مرور دچار اختلالات عصبی میشوند و خیلی زود داغ میکنند و حاضرند رو در روی مادر، پدر، خواهر و هر کس دیگری بایستند و بلند بلند داد بزنند! (مقاله مرتبط: آنچه از برخي موسيقيها نميدانستيد!)
با این مقدمه برویم سراغ بحث اصلی:
روند کار پردازش در کامپیوتر به این صورت است که باید میلیونها و بهتر است بگوییم میلیاردها دستور در هر لحظه از داخل حافظه جانبی که محل قرار گرفتن برنامهها و تصاویر و ... است، خوانده و توسط CPU محاسبه شود و نتایج به حافظه برگردد و یا به دستگاههای خروجی. همین حالا که شما در حال دیدن یک صحنه ثابت بر روی مانیتور هستید، در هر لحظه میلیونها پردازش در حال انجام است تا شما یک صحنه ثابت ببینید. تمامی این اطلاعات طبیعتاً در حافظه جانبی مثل هارد دیسک هستند. چون RAM و Cache حافظههای موقتیاند و هر بار که کامپیوتر خاموش شود، تخلیه میشوند.
پس ما دائماً بین هارد دیسک و پردازشگر، چنین رفت و آمدی خواهیم داشت:
سرعت محاسبه CPU سرسام آور است! آن هم CPUهای امروزی! مثلاً یک سی.پی.یو معمولی در هر ثانیه میتواند 3 میلیارد دستور العمل را انجام دهد. سرعتی شگفت انگیز! اما یک سؤال اساسی مطرح است:
آیا هارد دیسک میتواند خود را با این سرعت هماهنگ کند؟ اگر خود را هماهنگ نکند، چه مشکلی پیش خواهد آمد؟
هارد دیسک از نظر سخت افزای طوری ساخته شده است که سرعت خواندن اطلاعات از آن نسبت به سرعت CPU بسیار بسیار ناچیز است (در درس «ذخیره و بازیابی» گفته میشود که «درنگ دورانی» و «درنگ جابهجایی هِد» باعث تأخیر شدیدی خواندن بیتها میشود؛ مطلب مرتبط: «داخل هارد دیسک چه میگذرد؟ (Inside Hard Disk)»). حالا تصور کنید: CPU میخواهد گاز بدهد، اما هارد دیسک این اجازه را به او نخواهد داد! به مرور، CPU عصبی خواهد شد و داغ خواهد کرد و ...
باید فکری کرد! بهترین راه حل، هماهنگ کردن حافظه با CPU است. آیا میتوان هارد دیسک را طوری تغییر داد تا سرعت خواندن اطلاعات از آن افزایش یابد؟ چرا که نه! اما مادهای که برای این کار نیاز داریم، قیمت هارد دیسک را سرسام آور میکند! با یک حساب سر انگشتی که بعداً دربارهاش توضیح خواهم داد، قیمت یک هارد دیسک 40 گیگابایتی، 600 هزار تومان خواهد شد!!!
خوب، پس بهترین راه این است که ما یک حافظه میانی تعریف کنیم به نام RAM، جنس رم را از این ماده گرانقیمت انتخاب کنیم و نوع دسترسی به آن را Random یا تصادفی میکنیم (برای فهم تصادفی، چندین برگه را یک بار روی هم قرار دهید و سپس دنبال یک برگه خاص بگردید. باید برگهها را یکی یکی ورق بزنید تا برسید به برگه مورد نظر. این میشود ترتیبی. اما اگر برگهها را روی میز پخش کنید و حالا دنبال یک برگه خاص بگردید، خواهید دید که خیلی سریع آن را خواهید یافت. این میشود تصادفی) پس از اینکه RAM را سریعتر از هارد دیسک کردیم، حالا در روند پردازش کمی تغییر ایجاد کنیم:
در اصطلاح، یک (یا چند) بلاک از اطلاعات ضروری که همین حالا CPU به آنها نیاز دارد را از هارد دیسک به RAM منتقل میکنیم و هر وقت CPU به این اطلاعات نیاز داشت، به جای مراجعه به هارد دیسک، از روی رم با سرعت مورد پسندش میخواند و اگر کار آن با این اطلاعات تمام شد، نتایج را روی RAM مینویسد و ما با زدن کلید Save در نرمافزارهای مختلف، اطلاعات را از روی RAM به روی هارد دیسک منتقل میکنیم تا دائمی شود و با رفتن برق، از بین نرود.
فرض کنید همین حالا نرمافزار Word را باز میکنید و شروع به نوشتن میکنید. در حالت فعلی، نرمافزار Word تا جایی که نیاز باشد، به روی RAM منتقل میشود، چون بالاخره شما باید محیط آن را مدام توسط CPU پردازش کنید، دکمهها را ببینید و ... تمام کلیدهایی که فشار میدهید، دستوراتش به CPU رفته و نتیجهاش (که چاپ یک کاراکتر است) روی RAM نوشته میشود، به محض اینکه کلید Save را میزنید، اطلاعات، از روی RAM به روی Hrad Disk منتقل میشوند.
حالا متوجه میشوید که چرا وقتی یک تایپیست در حال تایپ یک متن است و ناگهان برق میرود، میگوید: هر چه تایپ کرده بودم، پرید! چرا؟ چون اطلاعات را از روی RAM (که یک حافظه موقتی است) به هارد دیسک منتقل نکرده بود.
پس روندی که تا این لحظه داریم، به این صورت است:
- حالا میفهمیم که چرا RAM بسیار گرانتر از هارد دیسک است.
- میفهمیم که چرا حجم رم نسبت به هارد دیسک خیلی کمتر است و چرا نیازی به رم بسیار زیاد نیست. (مثلاً هارد دیسک من 250 برابر رم کامپیوتر من گنجایش دارد)
- میفهمیم که چرا وقتی چندین نرمافزار قوی را باز میکنیم، هشداری دریافت میکنیم مبنی بر اینکه رم شما پر شده است. یا اینکه چرا سرعت کامپیوتر در این لحظه پایین میآید.
- حالا میفهمیم که چرا وقتی میخواهند بگویند سرعت کامپیوتر اشخاص چقدر است، قدرت CPU و اندازه RAM را سؤال میکنند و تعداد دور در ثانیه (سرعت خواندن اطلاعات) مربوط به هارد دیسک را.
و اما، جالب است بدانید که سرعت RAM نیز CPU را عصبی میکند! چرا که باز هم نمیتواند خودش را با این سرعت هماهنگ کند. به خصوص اگر جنس رم با CPU هماهنگ و جور نباشد. چاره چیست؟
باز هم همان چاره قبلی: یعنی باز هم یک حافظه موقت، این بار با جنس بهتر و سرعتی بسیار بسیار بالاتر و حجم بسیار بسیار ناچیز در نظر میگیریم، آن هم دقیقاً چسبیده به CPU که خود سازنده CPU آن را انتخاب و قرار دهد (که هماهنگی بیشتر حاصل شود). این حافظه را Cache یا حافظه نهان مینامیم.
حالا تقریباً میتوان گفت، همه چیز رو به راه است. یک یا چند بلاک از اطلاعات ضروری به RAM منتقل میشود و اطلاعات ناچیزی که CPU فیالحال به آنها نیاز دارد، از RAM درخواست میشود و به Cache با آن سرعت شگفت انگیزش منتقل میشود و نتایج پردازش، روال عکس این را طی میکنند:
حافظه کش، بسیار گرانقیمت است و بسیار کمحجم. به طور مثال، در کامپیوتر من، مقدار کش، یک دوهزارم مقدار حافظه RAM است! این روزها حجم هارد دیسکها حول واحد ترابایت (TB) میچرخد، حجم رمها حول واحد گیگابایت (GB) و حجم کشها حول واحد مگابایت (MB) که حداقل هر واحد یک هزارم واحد بعدی است.
- حالا باید متوجه شده باشید که چرا مقدار Cache در CPU برای شما به عنوان مشتری خیلی خیلی مهم است. همینطور، مقدار رم، سرعت خواندن اطلاعات از هارد دیسک و در صدر اینها سرعت پردازشگر و چقدر هماهنگی بین اینها مهم است.
موفق باشید؛
حمید رضا نیرومند