
読み取り専用メモリ(ROM )は、コンピュータやその他の電子機器で使用される不揮発性メモリの一種です。ROMに保存されたデータは、メモリデバイスの製造後に電子的に変更することはできません。読み取り専用メモリは、システムの寿命中にほとんど変更されないソフトウェア(ファームウェアとも呼ばれます)を保存するのに便利です。ビデオゲームなどのプログラム可能なデバイス用のソフトウェアアプリケーションは、 ROMを含むプラグインカートリッジとして配布できます。
厳密に言えば、リードオンリーメモリとは、ダイオードマトリックスやマスクROM集積回路(IC)などのハードワイヤードメモリを指し、製造後は電子的に変更できません。個別回路は原理的には、配線の追加や部品の取り外し・交換によって変更可能ですが、ICは変更できません。エラーの修正やソフトウェアのアップデートには、新しいデバイスを製造し、既存のデバイスを交換する必要があります。
消去可能プログラマブル読み出し専用メモリ(EPROM)、電気的に消去可能プログラマブル読み出し専用メモリ(EEPROM)、およびフラッシュメモリといった形態のフローティングゲートROM半導体メモリは、消去と再プログラミングが可能です。しかし、通常、これは比較的低速でしか実行できず、特殊な装置が必要となる場合があり、通常は一定回数しか実行できません。[1]
「ROM」という用語は、特定のソフトウェアが保存されたROMデバイス、または書き込み可能なROMデバイスに保存されるソフトウェアを含むファイルを指すために使用されることがあります。例えば、Androidオペレーティングシステムを変更または交換するユーザーは、変更または交換されたオペレーティングシステムを含むファイルを、ファイルの書き込み先となるストレージの種類にちなんで「カスタムROM 」と表現し、ROM(ソフトウェアとデータが保存される場所、通常はフラッシュメモリ)とRAM を区別する場合があります。
ROMとRAMはコンピュータに不可欠なコンポーネントであり、それぞれ異なる役割を果たします。RAM(ランダムアクセスメモリ)は一時的な揮発性記憶媒体であり、システムの電源を切るとデータが失われます。一方、ROMは不揮発性であるため、コンピュータの電源を切ってもデータが保持されます。[2]
IBMは、 System/360の小型モデルである360/85、そして初期の2つのSystem/370モデル(370/155と370/165 )のマイクロコードを保存するために、コンデンサ読み取り専用記憶装置(CROS)と変圧器読み取り専用記憶装置(TROS)を採用しました。一部のモデルには、追加の診断機能とエミュレーションサポートのための書き込み可能制御記憶装置(WCS)も搭載されていました。アポロ誘導コンピュータは、磁気コアにワイヤーを通すことでプログラムする コアロープメモリを採用していました。
最も単純なタイプのソリッドステートROM は、半導体技術と同じくらい古いものです。組み合わせ 論理ゲートを手動で接続して、nビットのアドレス入力を任意の値のmビットのデータ出力 (ルックアップ テーブル) にマッピングすることができます。集積回路の発明とともにマスク ROMが登場しました。マスク ROM は、ワードライン (アドレス入力) とビット ライン (データ出力)のグリッドで構成され、選択的にトランジスタスイッチに接続され、規則的な物理レイアウトと予測可能な伝播遅延を持つ任意のルックアップ テーブルを表すことができます。マスク ROM は、半導体製造中にフォトリソグラフィーでフォトマスクを使用してプログラムされます。マスクは、ROM チップで削除または追加される物理的な特徴または構造を定義し、これらの特徴の有無は、ROM 設計に応じて 1 ビットまたは 0 ビットを表します。[3]したがって、データは電子的に変更できない物理的な特徴または構造の有無によって定義されるため、設計上、データを電子的に変更しようとする試みはすべて失敗します。すべてのソフトウェア プログラムでは、同じプログラムの改訂の場合でも、マスク全体を変更する必要があり、コストがかかる可能性があります。
マスクROMでは、データは回路内に物理的にエンコードされているため、製造工程でのみプログラム可能です。これにより、いくつかの深刻な欠点が生じます。
その後の開発により、これらの欠点は解消されました。1956年に文青周(ウェン・チン・チョウ)によって発明されたプログラマブル読み出し専用メモリ(PROM) [4] [5]は、高電圧パルスを印加することで物理的に構造を変化させることで、ユーザーがその内容を正確に一度だけプログラムすることを可能にしました。これにより、企業は大量の新品PROMチップを注文し、設計者の都合に合わせて必要な内容をプログラムするだけで済むため、上記の問題1と2は解決されました。
1959年にベル研究所で発明された金属酸化物半導体電界効果トランジスタ(MOSFET)の出現により[6] 、金属酸化物半導体(MOS)トランジスタを半導体メモリのメモリセルストレージ要素として実用化できました。これは、コンピュータメモリで磁気コアがそれ以前に果たしていた機能です。[要出典] 1967年、ベル研究所のDawon KahngとSimon Szeは、 MOS半導体デバイスのフローティングゲートを再プログラム可能なROMのセルに使用できることを提案し、これはIntelのDov Frohmanによる1971年の消去可能プログラマブル読み取り専用メモリ(EPROM)の発明につながりました。 [7] [8] 1971年のEPROMの発明により、問題3は本質的に解決されました。EPROMは(PROMとは異なり)強い紫外線にさらすことで、プログラムされていない状態に繰り返しリセットできるためです。
1972年に電気総合研究所で垂井康雄、林豊、長清子によって開発された電気的消去可能読み出し専用メモリ(EEPROM) [9]は、問題4の解決に大きく貢献しました。EEPROMは、内蔵デバイスが外部ソース(例えば、シリアルケーブルを介してパソコン)からプログラム内容を受信する手段を備えている場合、その場でプログラムできるためです。1980年代初頭に東芝の舛岡富士夫によって発明され、1980年代後半に商品化されたフラッシュメモリは、チップ面積を非常に効率的に利用し、数千回もの消去と再プログラムが可能で、デバイス全体ではなく、特定の部分のみの消去とプログラムが可能です。これは高速に実行できるため、「フラッシュ」と呼ばれています。[10] [11]
これらの技術はすべて ROM の柔軟性を向上させましたが、チップあたりのコストがかなり高かったため、大量生産においてはマスク ROM が長年にわたり経済的な選択肢であり続けました。(再プログラム可能なデバイスのコスト低下により、2000 年までにマスク ROM の市場はほぼ消滅しました。) 書き換え可能な技術は、マスク ROM の代替として構想されました。
最新の開発は、同じく東芝で発明されたNANDフラッシュです。その設計者は、従来のROMを不揮発性プライマリストレージとして使用するのではなく、「NANDフラッシュの目的はハードディスクの置き換えである」[12]と明言し、従来の慣習を明確に破りました。2021年現在、NANDはハードディスクを上回るスループット、低レイテンシ、高い物理的衝撃耐性、極小化(USBフラッシュドライブや小型のmicroSDメモリカードなど)、そして大幅な低消費電力を実現することで、この目標をほぼ完全に達成しています。 [update]
多くのプログラムストアードコンピュータは、コンピュータの電源投入時または実行開始時(ブートストラッピングと呼ばれるプロセスで、 「ブート」または「ブートアップ」と略されることが多い)に実行される初期プログラムを保存するために、不揮発性ストレージ(つまり、電源を切ってもデータを保持するストレージ)を使用しています。同様に、すべての非自明なコンピュータは、実行中に状態の変化を記録するために、何らかの可変メモリを必要とします。
1948年以降のENIAC など、初期のプログラム内蔵型コンピュータのほとんどでは、何らかの形式の読み出し専用メモリがプログラムの不揮発性ストレージとして使われていた(それまでは、すべてのプログラムを手動でマシンに配線する必要があり、数日から数週間かかることがあったため、プログラム内蔵型コンピュータではなかった)。読み出し専用メモリは、格納された値を読み取るメカニズムさえあればよく、その場で値を変更する必要がないため実装が簡単で、非常に粗雑な電気機械デバイスで実装できた(下記の歴史的な例を参照)。1960年代に集積回路が登場すると、ROMとその可変長対応物であるスタティックRAMはどちらもシリコンチップ内のトランジスタアレイとして実装された。しかし、ROMメモリセルはSRAMメモリセルよりも少ないトランジスタで実装できる。これは、SRAMは内容を保持するためにラッチ(5~20個のトランジスタで構成)を必要とするのに対し、ROMセルはビットラインとワードラインを接続するトランジスタが1つ存在しない(論理0)か存在する(論理1)かで構成されているからである。[13]その結果、ROMは長年にわたりRAMよりも ビットあたりのコストが低く実装できました。
1980年代の家庭用コンピュータのほとんどは、磁気ディスクドライブなどの不揮発性記憶装置が高価すぎるため、BASICインタープリタまたはオペレーティングシステムをROMに格納していました。例えば、コモドール64は64KBのRAMと、BASICインタープリタとカーネルオペレーティングシステムを格納した20KBのROMを搭載していました。その後、 IBM PC XTなどの家庭用またはオフィス用コンピュータは、磁気ディスクドライブと大容量のRAMを搭載することが多くなり、オペレーティングシステムをディスクからRAMにロードできるようになりました。ROMには、最小限のハードウェア初期化コアとブートローダ(IBM互換コンピュータではBIOS)のみが残っていました。この構成により、より複雑でアップグレードが容易なオペレーティングシステムが可能になりました。
現代のPCでは、「ROM」はプロセッサの基本的なブートストラップファームウェアに加え、グラフィックカード、ハードディスクドライブ、ソリッドステートドライブ、光ディスクドライブ、TFTスクリーンなどのシステム内の独立型デバイスを内部制御するために必要な様々なファームウェアを格納するために使用されています。今日では、これらの「読み取り専用」メモリの多く、特にBIOS / UEFIは、ファームウェアのアップグレードが必要になった場合にインプレース再プログラミングを可能にするため、 EEPROMまたはフラッシュメモリ(下記参照)に置き換えられることがよくあります。ただし、シンプルで成熟したサブシステム(例えば、キーボードやメインボード上の集積回路内の一部の通信コントローラなど)では、マスクROMまたはOTP(ワンタイムプログラマブル)が使用される場合があります。
ROM やフラッシュなど後継技術は、組み込みシステムで広く普及しています。産業用ロボットから家電製品、民生用電子機器( MP3 プレーヤー、セットトップ ボックスなど)まで、あらゆるものに搭載されています。これらの製品はすべて特定の機能向けに設計されていますが、汎用マイクロプロセッサがベースになっています。ソフトウェアは通常ハードウェアと密結合されているため、このようなデバイス (コスト、サイズ、消費電力などの理由からハードディスクが搭載されていないのが一般的) ではプログラムの変更が必要になることはほとんどありません。2008 年現在、ほとんどの製品はマスク ROM ではなくフラッシュを使用しており、ファームウェアのアップデートのために PC に接続する手段を提供しているものが多くあります。たとえば、デジタル オーディオ プレーヤーは、新しいファイル形式をサポートするようにアップデートされる場合があります。一部の愛好家はこの柔軟性を利用して、民生用製品を新しい目的で再プログラムしています。たとえば、iPodLinuxプロジェクトとOpenWrtプロジェクトでは、ユーザーがそれぞれ MP3 プレーヤーとワイヤレス ルーターでフル機能のLinux ディストリビューションを実行できるようになりました。
ROM は、置き換えが困難になるため、暗号化データのバイナリ ストレージにも役立ち、情報セキュリティを強化するために望ましい場合があります。
ROM(少なくともハードワイヤードマスク形式では)は変更できないため、デバイスの寿命を通じて変更の必要がないと予想されるデータの保存にのみ適しています。そのため、多くのコンピュータでは、数学関数や論理関数の評価のためのルックアップテーブルを保存するためにROMが使用されてきました(例えば、浮動小数点ユニットは、より高速な計算を実現するために正弦関数の計算表を作成します)。これは、 CPUが低速で、ROMがRAMに比べて安価だった時代に特に効果的でした。
初期のパーソナルコンピュータのディスプレイアダプタは、ビットマップフォントの文字テーブルをROMに格納していた点に注目すべきです。これは通常、テキスト表示フォントを対話的に変更できないことを意味していました。これはIBM PC(タイプ5150)で利用可能なCGAアダプタとMDAアダプタの両方に当てはまりました。[14]
現代の汎用コンピュータでは、このような少量のデータを保存するためのROMの使用はほぼ完全に姿を消しました。しかし、NANDフラッシュは、大容量ストレージやファイルの二次ストレージの媒体として新たな役割を担っています。

マスクROMは、ユーザーではなく集積回路メーカーによって内容がプログラムされる読み取り専用メモリです。必要なメモリ内容は、顧客からデバイスメーカーに提供されます。必要なデータは、メモリチップ上の相互接続の最終的なメタライゼーション(そのため、マスクROMと呼ばれます)用のカスタムフォトマスク/マスク層に変換されます。
マスク ROM はいくつかの方法で作成できますが、いずれも、グリッド上でアドレス指定されるときにトランジスタの電気的応答を変更することを目的としています。次に例を示します。
マスクROMトランジスタは、NORまたはNAND構成で配置することができ、各ビットが1つのトランジスタのみで表されるため、可能な限り最小のセルサイズを実現できます。NANDはNORよりも高いストレージ密度を提供します。OR構成も可能ですが、NORと比較すると、トランジスタはV ssではなくV ccにのみ接続されます。[15]マスクROMは、かつては最も安価で、1つの金属層と1つのポリシリコン層のみを備えた最も単純な半導体メモリデバイスであり、製造歩留まりが最も高いタイプの半導体メモリです[3] (製造ランあたりの動作デバイスの最大数)。ROMは、 CMOS、nMOS、pMOS、バイポーラトランジスタなどのいくつかの半導体デバイス製造技術のいずれかを使用して作成できます。[16]
プロジェクトの開発段階では、 UV- EPROMやEEPROMなどの書き換え可能な不揮発性メモリを使用し、コードが完成したらマスクROMに切り替えるのが一般的です。例えば、 Atmelのマイクロコントローラには、EEPROMとマスクROMの両方の形式があります。
マスクROMの主な利点は、そのコストです。ビットあたりの容量は、他のどの半導体メモリよりも小型です。集積回路のコストはサイズに大きく依存するため、マスクROMは他のどの半導体メモリよりも大幅に安価です。
しかし、一度のマスク処理にかかるコストは高く、設計から製品化までのターンアラウンドタイムも長くなります。設計ミスは大きなコストを伴います。データやコードにエラーが見つかった場合、マスクROMは使用できなくなり、コードやデータを変更するために交換する必要があります。[17]
2003年現在[update]、マスクROMチップの生産量が最も多いのはサムスン電子、日本電気、沖電気工業、マクロニクスの4社である。[18] [更新が必要]
集積回路の中には、マスクROMのみを搭載しているものもあります。また、マスクROMに加えて様々なデバイスを搭載している集積回路もあります。特に、多くのマイクロプロセッサは、マイクロコードを格納するためにマスクROMを搭載しています。一部のマイクロコントローラは、ブートローダやファームウェア全体を格納するためにマスクROMを搭載しています。
従来のマスクプログラム ROM チップは、保存するデータを物理的にエンコードする集積回路であるため、製造後にその内容を変更することは不可能です。
レーザーROMの内容を書き込むには、マスクを使用する代わりに、レーザーを使用してROM上の一部のダイオードの電気的特性のみを変更したり、レーザーを使用して一部のポリシリコンリンクのみを切断したりすることもできます。[19] [20] [15]
書き込み保護を適用すると、一部のタイプの再プログラム可能な ROM は一時的に読み取り専用メモリになる場合があります。
ソリッドステート IC 技術に基づかない他の種類の不揮発性メモリには、次のようなものがあります。

RAMとROMの相対的な速度は時代とともに変化してきましたが、2007年時点では、[update]大容量のRAMチップはほとんどのROMよりも高速に読み出すことができます。このため(そして均一なアクセスを可能にするため)、ROMの内容は最初に使用される前にRAMにコピーまたはシャドウイングされ、その後RAMから読み出されることがあります。
電気的に変更可能なROMの場合、書き込み速度は従来、読み取り速度よりもはるかに遅く、非常に高い電圧、書き込み許可信号を適用するためのジャンパープラグの移動、特殊なロック/ロック解除コマンドコードが必要になる場合があります。最新のNANDフラッシュは、書き換え可能なROM技術の中で最も高速な書き込み速度を実現でき、SSDでは最大10GB /秒に達します。これは、コンシューマー向けおよびエンタープライズ向けのソリッドステートドライブ(SSD)と、ハイエンドモバイルデバイス向けフラッシュメモリ製品への投資増加によって実現しました。技術レベルでは、コントローラ設計とストレージの並列処理の向上、大容量DRAM読み取り/書き込みキャッシュの使用、そして複数ビットを格納できるメモリセル(DLC、TLC、MLC)の実装によって、この速度向上が実現されています。後者のアプローチは故障しやすいですが、オーバープロビジョニング(ドライブコントローラのみが認識できる予備容量を製品に組み込むこと)と、ドライブファームウェアにおける読み取り/書き込みアルゴリズムの高度化によって、この問題は大幅に軽減されています。

書き換え可能なROMは、電子を電気絶縁層を通して浮遊トランジスタゲートに押し込むことで書き込みを行うため、書き込みと消去の回数が限られており、それを超えると絶縁体が永久的に損傷します。初期のEPROMでは、わずか1,000回の書き込みサイクルでこの状態になることもありましたが、現代のフラッシュEEPROMでは1,000,000回を超えることもあります。この耐久性の限界とビットあたりのコストの高さから、フラッシュベースのストレージが近い将来、磁気ディスクドライブを完全に置き換える可能性は低いと考えられます。 [要出典]
ROMが正確に読み取り可能な時間範囲は、書き込みサイクルによって制限されることはありません。EPROM、EAROM、EEPROM、およびフラッシュメモリのデータ保持期間は、メモリセルトランジスタのフローティングゲートからの電荷リークによって制限される場合があります。1980年代半ばの初期世代のEEPROMでは、一般的に5年または6年のデータ保持期間が謳われていました。2020年に発表されたEEPROMのレビューでは、メーカーが100年のデータ保持期間を謳っています。過酷な環境では保持期間が短縮されます(リークは高温や放射線によって加速されます)。マスクROMおよびヒューズ/アンチヒューズPROMは、データ保持が集積回路の電気的耐久性ではなく物理的耐久性に依存するため、この影響を受けません。ただし、ヒューズの再成長はかつて一部のシステムで問題となっていました。[28]
ROMチップの内容は、特殊なハードウェアデバイスと適切な制御ソフトウェアを使用して抽出できます。この方法は、主な例として、古いビデオゲーム機の カートリッジの内容を読み取る場合によく使用されます。また、古いコンピューターやその他のデバイスのファームウェア/OS ROMのバックアップを作成する場合も、アーカイブ目的で使用されます。多くの場合、元のチップはPROMであるため、使用可能なデータ寿命を超えてしまうリスクがあります。
結果として得られるメモリダンプファイルはROMイメージまたは略称ROMと呼ばれ、ROMの複製を作成するために使用できます。例えば、新しいカートリッジを作成したり、コンソールエミュレータでプレイするためのデジタルファイルとして使用したりできます。ROMイメージという用語は、ほとんどのコンソールゲームがROMチップを含むカートリッジで配布されていた時代に生まれましたが、広く使用されるようになり、 CD-ROMやその他の光学メディアで配布される新しいゲームのイメージにも現在でも使用されています。
市販のゲームやファームウェアなどのROMイメージには、通常、著作権で保護されたソフトウェアが含まれています。著作権で保護されたソフトウェアの無許可複製および配布は、多くの法域で著作権法違反となりますが、バックアップ目的の複製は、地域によってはフェアユースとみなされる場合があります。いずれにせよ、このようなソフトウェアの保存・共有を目的とした配布・取引には、活発なコミュニティが存在します。