ROM چیست؟ آشنایی کامل با حافظه ROM در کامپیوتر

وقتی درباره کامپیوتر صحبت می‌کنیم، یکی از اولین مفاهیمی که باید بشناسیم Memory یا حافظه است. اما همه حافظه‌ها یک کار انجام نمی‌دهند.

بعضی حافظه‌ها برای نگهداری موقت اطلاعات استفاده می‌شوند، بعضی برای ذخیره‌سازی فایل‌ها و بعضی برای نگهداری اطلاعاتی که سیستم باید حتی بعد از خاموش شدن دستگاه نیز آن‌ها را حفظ کند. یکی از مفاهیم مهم در این زمینه ROM است.

ROM مخفف چیست؟

ROM مخفف Read Only Memory است؛ یعنی حافظه فقط‌خواندنی.

ایده اصلی ROM این است که اطلاعاتی را در خود نگه دارد که در استفاده عادی سیستم قرار نیست دائماً تغییر کنند و سیستم بتواند آن‌ها را بخواند.

نکته مهم: عبارت «فقط‌خواندنی» به این معنی نیست که تمام حافظه‌هایی که در خانواده ROM قرار می‌گیرند، امروزه واقعاً فقط قابل خواندن هستند. برای مثال EEPROM و Flash قابلیت بازنویسی دارند. نام ROM بیشتر به یک خانواده از حافظه‌های غیر فرّار و روش‌های تاریخی ذخیره‌سازی اطلاعات اشاره می‌کند.

ROM چه مشکلی را حل می‌کند؟

فرض کنید یک دستگاه الکترونیکی داریم که وقتی روشن می‌شود باید بداند:

  • از کجا شروع کند؟
  • چه دستوراتی را اجرا کند؟
  • سخت‌افزار را چگونه راه‌اندازی کند؟
  • چه تنظیمات اولیه‌ای داشته باشد؟

این اطلاعات باید جایی ذخیره شوند که با قطع برق از بین نروند.

اینجاست که حافظه‌های Non-Volatile یا غیر فرّار اهمیت پیدا می‌کنند. ROM و انواع مدرن‌تر آن مانند Flash می‌توانند برای چنین کاربردهایی استفاده شوند.

مدل ذهنی ساده

ROM اطلاعات پایدار خواندن توسط سیستم

ROM چه تفاوتی با RAM دارد؟

برای فهم بهتر ROM، بهترین کار مقایسه آن با RAM است.

ویژگی RAM ROM / حافظه غیر فرّار
کاربرد معمول فضای کاری سیستم نگهداری اطلاعات پایدار
تغییر اطلاعات به‌طور مداوم معمولاً کمتر
با قطع برق اطلاعات از بین می‌رود اطلاعات حفظ می‌شود
مثال DDR4 / DDR5 Flash / EEPROM

مثلاً وقتی یک برنامه را اجرا می‌کنیم، اطلاعات مورد نیاز آن در RAM قرار می‌گیرد تا CPU بتواند به آن‌ها دسترسی داشته باشد.

اما Firmware یک دستگاه باید در حافظه‌ای قرار بگیرد که بعد از خاموش شدن دستگاه باقی بماند.

Volatile و Non-Volatile یعنی چه؟

این دو اصطلاح برای درک حافظه‌ها بسیار مهم هستند.

Volatile Memory: برای حفظ اطلاعات به برق نیاز دارد. نمونه معروف آن RAM است.

Non-Volatile Memory: اطلاعات خود را بعد از قطع برق نیز حفظ می‌کند. Flash و EEPROM نمونه‌هایی از این خانواده هستند.

پس یکی از مهم‌ترین چیزهایی که باید از این پست به خاطر بسپاریم این است:

RAM → Volatile       Flash / EEPROM → Non-Volatile

انواع ROM

در طول تاریخ انواع مختلفی از ROM طراحی شده‌اند.

1. Mask ROM

در Mask ROM اطلاعات در هنگام ساخت تراشه مشخص می‌شوند و بعد از تولید، تغییر آن‌ها به شکل معمول امکان‌پذیر نیست.

این نوع حافظه برای محصولاتی مناسب بود که اطلاعاتشان از ابتدا مشخص بود و قرار نبود تغییر کنند.

2. PROM

PROM مخفف Programmable Read-Only Memory است.

این نوع حافظه می‌تواند بعد از تولید، یک بار برنامه‌ریزی شود.

3. EPROM

EPROM مخفف Erasable Programmable Read-Only Memory است.

اطلاعات آن قابل پاک شدن و برنامه‌ریزی مجدد است. در نمونه‌های کلاسیک، پاک کردن اطلاعات با استفاده از نور فرابنفش انجام می‌شد.

4. EEPROM

EEPROM مخفف Electrically Erasable Programmable Read-Only Memory است.

در این نوع حافظه، پاک کردن و برنامه‌ریزی مجدد به صورت الکتریکی انجام می‌شود.

5. Flash Memory

Flash یکی از مهم‌ترین انواع حافظه‌های غیر فرّار امروزی است.

Flash را می‌توان در Firmware دستگاه‌ها، حافظه USB، SSD و بسیاری از سیستم‌های Embedded مشاهده کرد.

نکته: در گفت‌وگوی روزمره ممکن است Flash را هم «ROM» صدا بزنیم، اما از نظر فنی Flash با ROM کلاسیک تفاوت دارد. Flash قابل پاک شدن و برنامه‌ریزی مجدد است.

ROM در کامپیوتر کجاست؟

وقتی کامپیوتر را روشن می‌کنیم، سیستم باید فرآیند راه‌اندازی را شروع کند.

Firmware مادربرد، مانند BIOS یا UEFI، در یک حافظه غیر فرّار ذخیره می‌شود.

Power ON

Firmware / UEFI

راه‌اندازی اولیه سخت‌افزار

پیدا کردن Boot Device

اجرای Bootloader

راه‌اندازی سیستم‌عامل

بنابراین حتی قبل از اینکه سیستم‌عامل اصلی اجرا شود، کامپیوتر به کدی نیاز دارد که از قبل در یک حافظه غیر فرّار ذخیره شده باشد.

ROM از دید سخت‌افزاری چگونه کار می‌کند؟

حالا یک مرحله پایین‌تر برویم و ROM را از دید مدار دیجیتال نگاه کنیم.

فرض کنید یک ROM داریم که چند محل حافظه دارد. هر محل یک Address دارد و در هر Address یک مقدار Data ذخیره شده است.

Address ROM Data

0000 10110010

0001 01001101

0010 11100010

0011 00010111

وقتی سیستم یک Address را به ROM می‌دهد، حافظه مقدار ذخیره‌شده در آن Address را روی خطوط Data قرار می‌دهد.

یک مثال ساده از ROM

Address Data
00 1010
01 0110
10 1101
11 0011

اگر Address برابر 10 باشد، خروجی ROM برابر با 1101 خواهد بود.

Address = 10 → Data = 1101

این مفهوم بسیار مهم است، چون بعدها در طراحی CPU، Memory و FPGA دقیقاً با همین مدل سروکار خواهیم داشت.

تعداد خطوط آدرس چه ارتباطی با ظرفیت ROM دارد؟

اگر یک حافظه n خط آدرس داشته باشد، می‌تواند تعداد زیر Address مختلف داشته باشد:

2n

مثلاً اگر 2 خط Address داشته باشیم:

22 = 4

پس چهار Address خواهیم داشت:

00 ، 01 ، 10 ، 11

اگر 8 خط Address داشته باشیم:

28 = 256

پس می‌توانیم 256 محل مختلف را Address کنیم.

دقت کن: تعداد Addressها با تعداد بیت‌های Data یکی نیست. مثلاً یک ROM می‌تواند 256 محل داشته باشد که هر محل آن 8 بیت Data ذخیره کند. در این حالت ظرفیت خام آن می‌شود:

256 × 8 = 2048 bit = 256 Byte

ROM و Instruction در CPU

اینجا ROM به یکی از مباحث مهم معماری کامپیوتر وصل می‌شود.

در یک CPU ساده، ممکن است Instructionها در یک حافظه دستور قرار داشته باشند. CPU با استفاده از Program Counter یا PC مشخص می‌کند که کدام Instruction باید خوانده شود.

PC

Instruction Memory

Instruction

Decoder

Datapath + Control Unit

برای مثال اگر PC مقدار 10 را داشته باشد، حافظه دستور می‌تواند Instruction موجود در Address شماره 10 را به CPU تحویل دهد.

این همان جایی است که مفهوم ساده ROM کم‌کم به طراحی واقعی CPU وصل می‌شود.

ROM در FPGA

وقتی وارد FPGA شویم، مفهوم ROM دوباره بسیار مهم خواهد شد.

می‌توان یک ساختار حافظه طراحی کرد که برای هر Address یک Data مشخص تولید کند.

Address 00 → Data 1010 Address 01 → Data 0110 Address 10 → Data 1101 Address 11 → Data 0011

ابزارهای FPGA می‌توانند چنین ساختارهایی را بسته به اندازه و معماری، با منابع داخلی FPGA مانند LUT یا Block RAM پیاده‌سازی کنند.

آیا ROM همان HDD یا SSD است؟

خیر.

این یکی از اشتباهات رایج در اصطلاحات کامپیوتری است.

ROM یک مفهوم مربوط به حافظه و نگهداری اطلاعات پایدار است، در حالی که HDD و SSD برای ذخیره‌سازی حجم زیادی از داده‌ها و فایل‌های کاربر طراحی شده‌اند.

یک مدل ذهنی ساده:

RAM → فضای کاری موقت سیستم

ROM / Flash → اطلاعات پایدار و Firmware

SSD / HDD → ذخیره‌سازی فایل‌ها و داده‌های کاربر

آیا ROM از RAM سریع‌تر است؟

نمی‌توان گفت «ROM همیشه کندتر» یا «ROM همیشه سریع‌تر» از RAM است.

ROM یک خانواده و مفهوم کلی است و انواع مختلفی از حافظه‌ها با ویژگی‌های متفاوت وجود دارند.

RAM نیز انواع مختلفی دارد. بنابراین برای مقایسه سرعت باید نوع دقیق حافظه و پارامترهای آن را مشخص کنیم.

جمع‌بندی

  • ROM مخفف Read Only Memory است.
  • ROM کلاسیک برای نگهداری اطلاعاتی طراحی شده که معمولاً تغییر نمی‌کنند.
  • حافظه‌های خانواده ROM و انواع مدرن‌تر آن مانند Flash، غیر فرّار هستند.
  • اطلاعات غیر فرّار بعد از قطع برق حفظ می‌شوند.
  • Mask ROM، PROM، EPROM و EEPROM از انواع مهم تاریخی ROM هستند.
  • Flash یکی از مهم‌ترین حافظه‌های غیر فرّار امروزی است.
  • Firmware دستگاه‌ها معمولاً در حافظه غیر فرّار ذخیره می‌شود.
  • ROM را می‌توان با مفهوم Address و Data مدل کرد.
  • اگر n خط آدرس داشته باشیم، می‌توانیم 2n محل را Address کنیم.
  • در یک CPU، حافظه دستور می‌تواند Instruction مربوط به Address مشخص‌شده توسط PC را ارائه کند.
  • در FPGA نیز می‌توان ساختار ROM را با منابع داخلی FPGA پیاده‌سازی کرد.

مهم‌ترین چیزی که باید در ذهن بماند: ROM را فقط به شکل «حافظه‌ای که نمی‌توان داخلش نوشت» حفظ نکن. مفهوم مهم‌تر این است که با یک حافظه برای نگهداری پایدار اطلاعات سروکار داریم و سیستم می‌تواند با استفاده از Address اطلاعات مربوط به آن محل را بخواند.

پست بعدی در سطح ۰

بعد از ROM، موضوع منطقی بعدی RAM چیست؟ است. وقتی RAM را یاد بگیریم، تفاوت RAM، ROM، Storage و Cache خیلی واضح‌تر می‌شود و بعد می‌توانیم سراغ مفاهیم مهم‌تر معماری کامپیوتر برویم.