حافظه رم (RAM)، یا حافظه با دسترسی تصادفی، چیست و چه انواعی دارد؟
حافظه با دسترسی تصادفی یا حافظه رم (RAM) چیست؟
عبارت RAM مخفف Random Access Memory بهمعنای «حافظه با دسترسی تصادفی» است. حافظه رم (RAM) قطعهای سختافزاری است که سیستمعامل، برنامهها و دیگر دادههای در حال استفاده روی گوشی، رایانه و... موقتا در آن ذخیره میشوند. همچنین وقتی رایانه را روشن میکنید، فایلهای ضروری برای راهاندازی رایانه، از روی هارددیسک یا حافظه SSD به حافظه رم منتقل میشوند.
حافظه رم (RAM)، که آن را حافظه اصلی نیز مینامند، فرّار یا ناپایدار (volatile) است، یعنی اگر برق حافظه رم قطع شود (مثلا کامپیوتر یا گوشی خاموش شود)، دادههای حافظه پاک میشود. لذا رم، حافظهای موقت است که نمیتواند دادهها را دائمی ذخیره کند.
حافظه رم را میتوان به حافظه کوتاهمدت انسان تشبیه کرد و حافظههای دائمی، مثل هارددیسک، را به حافظه بلندمدت. حافظه کوتاهمدت بر کارهای جاری و فوری متمرکز میشود اما ظرفیت ذخیرهسازی آن کمتر است. وقتی حافظه رم پر میشود، پردازنده به حافظه ثانویه (مثل هارددیسک، فلش و...) مراجعه و دادههای قدیمی رم را با دادههای جدید جایگزین میکند.
از علل اهمیت حافظه رم این است که بسیار سریع و واسطه بین پردازنده و حافظههای ثانویه است. اگر گوشی یا رایانه، حافظه رم نداشته باشد، نه سیستمعامل و نه دیگر برنامهها و دادههایی که روی دستگاه ذخیره شدهاند، هیچیک بالا نمیآیند و نمیتوان از دستگاه استفاده کرد. اما فرضا حتی اگر دستگاه میتوانست بدون حافظه رم کار کند، عملکرد آن بسیار کند میبود، زیرا پردازنده ناچار بود هر بار دادههای مورد نیاز خود را از حافظههای کمسرعتتری مثل هارددیسک بخواند. سرعت دسترسی به حافظه رم را معمولا برحسب نانوثانیه، اما سرعت دسترسی به حافظههای کندی مثل هارددیسک را برحسب میلیثانیه میسنجند.
در دستهبندی حافظهها، رم (RAM) جزو حافظههای اولیه است. دادهها پیش از آنکه از حافظه ثانویه خوانده یا در آن نوشتن شوند، ابتدا به حافظه رم منتقل میشوند. اما حافظه اولیه و ثانویه چیست؟
تفاوت حافظههای اولیه و حافظههای ثانویه
حافظهها از نظر نوع دسترسی به چند دسته تقسیم میشوند. دو مورد از آنها که در اینجا موضوع بحث است عبارتند از: حافظههای اولیه (Primary Memory) و حافظههای ثانویه (Secondary Memory).
حافظههای اولیه، حافظههایی هستند که پردازنده مستقیما به آنها دسترسی دارد و معمولا سریعترند؛ مثل:
- حافظه رم (RAM)
- حافظه رام (ROM)
- حافظه پنهان یا حافظه کش (CPU cache memory) که متعلق به پردازنده است
حافظههای ثانویه، حافظههایی هستند که معمولا پردازنده مستقیما به دادههایشان دسترسی ندارد و آن دادهها جهت پردازش باید به حافظه اولیه منتقل شوند. حافظههای ثانویه معمولا کندترند و برای ذخیره دائمی دادهها از آنها استفاده میشود؛ مثل:
- دیسک سخت یا هارددیسک
- درایو حالت جامد (SSD)
- دیویدی
وقتی مثلا برنامه ورد (Word) را در رایانه باز میکنید، خود برنامه ورد روی حافظه ثانویه و دائمی (مثل هارددیسک یا درایو SSD) نصب و ذخیره شده است. اما پنجرهای که روبهرویتان گشوده میشود و شما در آن تایپ میکنید، در واقع روی حافظه رم (RAM) بالا آمده است. تا وقتی که دادههای جدید را بهشکل فایل در یکی از حافظههای ثانویه ذخیره نکردهاید، دادههایتان همچنان در حافظه رم خواهدبود و لذا اگر در آن حال، برق رایانه قطع شود، آنچه نوشتهاید از دست میرود.
حافظه رم چون بسیار سریعتر است، با میانجیگری بین پردازنده و حافظههای ثانویه، سرعت و بازده دستگاه را افزایش میدهد. دادههایی که پردازنده در حال پردازش آنهاست یا بهزودی پردازش خواهندشد به حافظه رم منتقل میشوند تا پردازنده سریعتر به آنها دادهها دسترسی یابد.
بسیاری از برنامههای اصطلاحا سیستمی و مهم که پشتپرده ویندوز/اندروید/و... اجرا میشوند و برای عملکرد گوشی یا کامپیوتر ضروری هستند نیز در حافظه رم ذخیره میشوند. برای نمونه، در سیستمعامل ویندوز با مراجعه به پنجره Task Manager و انتخاب زبانه Processes میتوانید برنامههای مقیم در حافظه رم را مشاهده و برخی از آنها را از حافظه رم پاک کنید. اما پاک کردن برخی از برنامههای پیشفرض ویندوز ممکن است کار سیستمعامل را مختل کند، طوری که ناچار شوید رایانه را از نو راهاندازی کنید. (برای اجرای Task Manager کلیدهای Ctrl و Shift و Space را با هم بفشارید.)
دسترسی تصادفی (Random Access) به حافظه یعنی چه؟
«دسترسی تصادفی» بهمعنی دسترسی بدون برنامه نیست، بلکه به این نکته اشاره دارد که هر محل و آدرسی در حافظه مستقیما توسط پردازنده قابل دسترسی است. حافظههای با دسترسی تصادفی (Random Access Memory) را به این نام خواندند تا آنها را از حافظههای آفلاین (مثل نوار مغناطیسی که معمولا برای پشتیانگیری از دادهها به کار میرود و در مواقع عادی به سامانه متصل نیست) متمایز کنند. در نوار مغناطیسی برای دسترسی به هر بخش از دادههای حافظه، محل آن باید از ابتدای نوار مغناطیسی شمارش شود. (مثل وقتی که میخواهید بدانید چندمین نفر در صف هستید و ناچارید افراد را از ابتدای صف بشمارید تا به شماره خودتان برسید.) اما در حافظه با دسترسی تصادفی، پردازنده مستقیما به سلولهایی از حافظه که حاوی دادههای موردنظرند دسترسی مییابد. بدیهی است که شیوه دسترسی تصادفی، سرعت کار حافظه را بسیار افزایش میدهد.
گفتنی است که دسترسی به حافظههای دیگری همچون هارددیسک و سیدی نیز تصادفی (مستقیم) است، اما عبارت «دسترسی تصادفی» برای آنها به کار نمیرود.
چرا پردازنده با وجود حافظه پنهان یا کش (CPU cache memory)، به حافظه رم نیز احتیاج دارد؟
شاید عدهای بپرسند که وقتی پردازنده، به حافظه بسیار سریع پنهان (Cache memory) مجهز است، دیگر به حافظه رم چه نیازی دارد؟ در پاسخ باید گفت که حافظه کش سیپییو بسیار محدود است. حتی پردازندههای به کار رفته در رایانههای شخصی امروزی نیز معمولا بیش از چندمگابایت حافظه کش ندارند، اما مقدار حافظه رم آنها چندین گیگابایت است. از سوی دیگر، حافظه پنهان یا کش، حافظه بسیار گرانقیمتی است و لذا نمیتواند جایگزین حافظه RAM شود.
در سلسلهمراتب حافظهها، دادههایی که سیپییو باید پردازش کند، از حافظههای ثانویه یا دائمی (مثل هارددیسک) به حافظه رم منتقل میشود. سپس بخش کوچکی از دادههایی که برای پردازش، اولویت بیشتری دارد از حافظه رم به حافظه پنهان انتقال مییابد.
ساختار حافظه رم
حافظه رم را میتوان مجموعهای از سلولها در نظر گرفت که بهصورت سطری و ستونی کنار هم چیده شدهاند. هر سلول هر بار میتواند حاوی یکی از دو ارزش عددی صفر یا یک باشد. هر یک از این سلولها آدرس منحصر به فردی دارد که با شمارش سطر و ستون مربوطه مشخص میشود. مجموعه این سلولها را اصطلاحا آرایه مینامند.
حافظه رم در واقع ریزتراشه است. ریزتراشههای حافظه رم در کنار هم یک ماژول حافظه میسازند که به بورد اصلی کامپیوتر متصل میشود. محل اتصال حافظه رم توسط گذرگاههای انتقال داده به پردازنده متصل میشود.
هر چه حافظه رم رایانه یا گوشی بیشتر باشد، پردازنده تعداد دفعات کمتری ناچار است دادهها را از هارددیسک بخواند و چون هارددیسک بسیار کندتر از حافظه رم است، طبیعتا فراوانی حافظه رم به افزایش سرعت کار دستگاه منجر میشود و برنامههای بیشتری میتوانند همزمان اجرا شوند.
انواع حافظه رم (RAM)
حافظههای رم به دو گونه اصلی تقسیم میشوند: حافظه رم پویا یا داینامیک (DRAM) و حافظه رم ثابت یا استاتیک (SRAM)
حافظه رم پویا (DRAM: Dynamic Random Access Memory)
حافظه رم پویا یا داینامیک همان حافظه رم به معنای رایج آن است؛ یعنی حافظه اصلی که بهصورت ماژول روی بورد اصلی گوشی یا رایانه نصب میشود. هر سلول حافظه DRAM حاوی یک ترانزیستور است که برای ذخیره یک بیت داده به کار میرود. ساختار سلولهای حافظه DRAM طوری است که هر چندمیلیثانیه یکبار باید شارژ یا اصطلاحا ریفرش شوند تا دادههایشان پاک نشود. بههمین علت DRAM در مقایسه با SRAM حافظه کندتر اما کمهزینهتری است.
حافظه SDRAM چیست؟
عبارت SDRAM مخفف Synchronous DRAM بهمعنی حافظه DRAM هماهنگ، نسلی از حافظههای DRAM است که پس از حافظههای DRAM اولیه طراحی و ساخته شدند. حافظههای SDRAM با سرعت ساعتی که ریزپردازنده برای آن بهینه شده است، هماهنگ میشوند. با این شیوه، پردازنده در زمان موردنظر، دستورهای بیشتری اجرا میکند. سرعت حافظههای SDRAM را نه برحسب نانوثانیه، بلکه برحسب مگاهرتز میسنجند تا مقایسه سرعت گذرگاه حافظه با سرعت تراشه حافظه سادهتر شود. البته با تقسیم سرعت ساعت تراشه رم بر یکمیلیارد نانوثانیه (که برابر یک ثانیه) میتوان سرعت حافظه SDRAM را به نانوثانیه تبدیل کرد. حافظههای رم فعلی که بهعنوان حافظه اصلی رایانهها به کار میروند از گونه SDRAM هستند.
حافظه رم ثابت (SRAM: Static Random Access Memory)
در حافظه رم ثابت یا استاتیک (SRAM) برای ذخیره هر بیت، چهار تا شش ترانزیستور به کار میرود، اما لازم نیست سلولهای حافظه شارژ یا ریفرش شوند و به همین علت نیز SRAM در مقایسه با DRAM حافظه سریعتر، گرانتر و بزرگتری است. حافظه پنهان یا حافظه کش پردازندهها از نوع SRAM است چون بسیار سریع است؛ و چون حافظه گرانقیمتی است معمولا اندازه آن از چندکیلوبایت یا چندمگابایت فراتر نمیرود.
منظور از حافظه DDR، DDR2، DDR3 و DDR4 چیست؟
عبارت DDR مخفف Double Data Rate است که به فناوری دوبرابرسازی سرعت حافظه اصلی اشاره دارد. با پیشرفت این فناوری در گذر زمان، نسلهای جدیدتری از حافظههای DRAM (و بهعبارت دقیقتر SDRAM، مخفف Synchronous DRAM) تولید شدند که هر نسل با عدد مربوطه نشان داده میشود. برای مثال منظور از DDR4، نسل چهارم این حافظههاست که در حال حاضر تازهترین نسل محسوب میشود.
هر یک از این نسلها در مقایسه با نسل پیش از خود دادهها را با سرعت بیشتر و برق کمتری انتقال میدهد. اما هر حافظه فقط با حافظههای همنسل خود سازگار است و برای مثال نمیتوان دو حافظه رم یکی DDR3 و دیگری DDR4 را همزمان روی یک بورد به کار برد.
تفاوت حافظه رام (ROM) با حافظه رم (RAM)
رام (ROM) یعنی حافظه فقط خواندنی (Read-Only Memory). حافظههای رام در ابتدا واقعا فقط خواندنی بودند، یعنی بعد از اینکه برنامهای روی آنها نوشته میشد دیگر نمیشد آن برنامه را از روی حافظه پاک کرد. اما با گذشت زمان گونههای دیگری از حافظههای رام نیز ساخته شدند که با ابزارها و شیوههایی خاص، پاک و بازنویسی میشوند. حافظههای رام، غیرفرار یا پایدار (non-volatile) هستند، یعنی با قطع شدن برق نیز دادههایشان باقی میماند. معمولا دادههای ضروری برای راهاندازی دستگاههای الکترونیکی از جمله گوشی و رایانه، که فقط باید خوانده شوند و نیازی به تغییر و بازنویسی ندارند، در حافظه رام ذخیره میشوند. حافظههای رام (ROM) در مقایسه با حافظههای رم (RAM) معمولا کمظرفیتتر، کندتر و ارزانترند.
و سرانجام، چقدر حافظه رم کافی است؟
مقدار حافظه رم به دستگاه و کاربرد آن بستگی دارد. مثلا نرمافزارهای ویرایش ویدیو و ویرایش تصویر به حافظه رم زیادی نیاز دارند. برای استفاده از نسخههای فعلی برخی از این نرمافزارها 8 گیگابایت حافظه رم پیشنهاد شده است. اگر همزمان برنامههای دیگری هم روی رایانه باز باشد، شاید حتی با 8 گیگابایت حافظه رم نیز دستگاه کند شود.