
読み出し専用メモリ(ROM )は、コンピュータやその他の電子機器で使用される不揮発性メモリの一種です。ROMに保存されたデータは、メモリデバイスの製造後に電子的に変更することはできません。読み出し専用メモリは、システムの寿命期間中にほとんど変更されないソフトウェア(ファームウェアとも呼ばれる)を保存するのに適しています。ビデオゲームなどのプログラマブルデバイス向けソフトウェアアプリケーションは、 ROMを内蔵したプラグインカートリッジとして配布できます。
厳密に言えば、読み出し専用メモリとは、ダイオードマトリックスやマスクROM集積回路(IC)など、製造後に電子的に変更できないハードワイヤードメモリを指します。ディスクリート回路は、配線を追加したり部品を取り外したり交換したりすることで原理的には変更できますが、ICはそうはいきません。エラーの修正やソフトウェアの更新には、新しいデバイスを製造して既存のデバイスと交換する必要があります。
フローティングゲートROM半導体メモリは、消去可能なプログラマブル読み出し専用メモリ(EPROM)、電気的に消去可能なプログラマブル読み出し専用メモリ(EEPROM)、フラッシュメモリなどの形で、消去および再プログラムが可能です。しかし、通常、これは比較的低速でしか実行できず、実現するには特別な装置が必要な場合があり、通常は限られた回数しか実行できません。[ 1 ]
「ROM」という用語は、特定のソフトウェアを含むROMデバイス、または書き込み可能なROMデバイスに保存されるソフトウェアを含むファイルを指す場合にも使用されることがあります。たとえば、Androidオペレーティングシステムを変更または置き換えるユーザーは、変更または置き換えられたオペレーティングシステムを含むファイルを、そのファイルが書き込まれるストレージの種類にちなんで「カスタムROM 」と表現し、ROM(ソフトウェアとデータが保存される場所、通常はフラッシュメモリ)とRAMを区別することがあります。
ROMとRAMはコンピュータの重要な構成要素であり、それぞれ異なる役割を果たします。RAM(ランダムアクセスメモリ)は一時的な揮発性記憶媒体であり、システムの電源が切れるとデータが失われます。一方、ROMは不揮発性であるため、コンピュータの電源が切れた後もデータを保持します。[ 2 ]
IBMは、小型のSystem/360モデルである360/85と、初期のSystem/370モデル2機種(370/155と370/165 )のマイクロコードを格納するために、コンデンサ読み出し専用ストレージ(CROS)とトランスフォーマー読み出し専用ストレージ(TROS )を使用しました。一部のモデルには、追加の診断およびエミュレーションサポートのための書き込み可能な制御ストア(WCS)も搭載されていました。アポロ誘導コンピュータは、磁気コアにワイヤを通すことでプログラムされるコアロープメモリを使用していました。
最も単純なタイプのソリッドステートROMは、半導体技術そのものと同じくらい古いものです。組み合わせ論理ゲートを手動で接続することで、nビットのアドレス入力をmビットのデータ出力(ルックアップテーブル)の任意の値にマッピングできます。集積回路の発明とともに、マスクROMが登場しました。マスクROMは、ワード線(アドレス入力)とビット線(データ出力)のグリッドで構成され、トランジスタスイッチで選択的に接続され、規則的な物理レイアウトと予測可能な伝搬遅延を持つ任意のルックアップテーブルを表現できます。マスクROMは、半導体製造中のフォトリソグラフィでフォトマスクを使用してプログラムされます。マスクは、ROMチップで削除または追加される物理的な特徴または構造を定義し、これらの特徴の有無は、ROM設計に応じて1ビットまたは0ビットを表します。[ 3 ]したがって、設計上、データは電子的に変更できない物理的な特徴または構造の有無によって定義されるため、データを電子的に変更しようとする試みはすべて失敗します。すべてのソフトウェアプログラムにおいて、たとえ同じプログラムの改訂版であっても、マスク全体を変更する必要があるため、コストがかかる可能性がある。
マスクROMでは、データは回路内に物理的にエンコードされるため、製造時にしかプログラムできません。これは、いくつかの深刻な欠点につながります。
その後の発展により、これらの欠点は解消されました。1956年にWen Tsing Chowによって発明されたプログラマブル読み出し専用メモリ(PROM) [ 4 ] [ 5 ]は、高電圧パルスを印加して物理的に構造を変更することで、ユーザーがその内容を正確に一度だけプログラムすることを可能にしました。これにより、企業は新しいPROMチップを大量に注文し、設計者の都合に合わせて必要な内容をプログラムするだけで済むため、上記の問題1と2が解決されました。
1959年にベル研究所で発明された金属酸化物半導体電界効果トランジスタ(MOSFET) [ 6 ]の登場により、半導体メモリのメモリセル記憶素子として金属酸化物半導体(MOS)トランジスタを実用的に使用することが可能になった。これは、それまでコンピュータメモリの磁気コアが担っていた機能である。1967年、ベル研究所のダウォン・カンとサイモン・シーは、 MOS半導体デバイスのフローティングゲートを再プログラム可能なROMのセルに使用できることを提案し、これがインテルのドブ・フローマンによる1971年の消去可能なプログラム可能な読み出し専用メモリ(EPROM)の発明につながった。[ 7 ] [ 8 ] 1971年のEPROMの発明は、EPROM(PROMとは異なり)が強い紫外線にさらされることで繰り返しプログラムされていない状態にリセットできるため、基本的に問題3を解決した。
1972年に電気工学研究所の樽井康夫、林豊、永清子によって開発された電気的に消去可能なプログラマブル読み出し専用メモリ(EEPROM) [ 9 ]は、EEPROMが外部ソース(例えば、シリアルケーブルを介してパーソナルコンピュータ)からプログラム内容を受信する手段を備えている場合、 EEPROMをその場でプログラムできるため、問題4の解決に大きく貢献しました。 1980年代初頭に東芝の増岡富士夫によって発明され、1980年代後半に商品化されたフラッシュメモリは、チップ面積を非常に効率的に使用し、損傷なく数千回消去および再プログラムできるEEPROMの一種です。デバイス全体ではなく、デバイスの特定の部分のみを消去およびプログラムできます。これは高速で実行できるため、「フラッシュ」という名前が付けられました。[ 10 ] [ 11 ]
これらの技術はすべてROMの柔軟性を向上させたものの、チップあたりのコストがかなり高かったため、大量生産においてはマスクROMが長年にわたって経済的な選択肢であり続けた。(再プログラム可能なデバイスのコスト低下により、2000年までにマスクROMの市場はほぼ消滅した。)書き換え可能な技術は、マスクROMの代替として構想された。
最新の開発は、同じく東芝で開発されたNANDフラッシュです。設計者たちは、従来のROMを不揮発性主記憶装置として使用するのではなく、「NANDフラッシュの目的はハードディスクを置き換えることである」と明言し、過去の慣習から明確に脱却しました[ 12 ]。2021年現在NANDは、ハードディスクよりも高いスループット、低いレイテンシ、高い耐衝撃性、極度の小型化(例えば、USBフラッシュドライブや超小型microSDメモリーカードの形)、そしてはるかに低い消費電力を提供することで、この目標をほぼ完全に達成しました。
多くのプログラム内蔵型コンピュータは、コンピュータの電源投入時や実行開始時に実行される初期プログラムを格納するために、不揮発性ストレージ(つまり、電源が切断されてもデータを保持するストレージ)を使用します(このプロセスはブートストラップと呼ばれ、しばしば「ブート」または「起動」と略されます)。同様に、あらゆる高度なコンピュータは、実行中に状態の変化を記録するために、何らかの可変メモリを必要とします。
読み出し専用メモリは、1948 年以降のENIAC など、初期のプログラム内蔵型コンピュータのほとんどで、プログラムの不揮発性ストレージとして採用されました。(それまでは、すべてのプログラムを手動でマシンに配線する必要があり、数日から数週間かかることがあったため、プログラム内蔵型コンピュータではありませんでした。)読み出し専用メモリは、格納された値を読み取るための機構のみが必要で、その場で値を変更する必要がないため、実装が簡単で、非常に粗雑な電気機械装置で実装できました(以下の歴史的な例を参照)。1960年代に集積回路が登場すると、ROM とその可変版であるスタティック RAM の両方がシリコン チップ上のトランジスタアレイとして実装されました。ただし、ROM メモリセルは SRAM メモリセルよりも少ないトランジスタで実装できました。これは、SRAM メモリセルは内容を保持するためにラッチ(5 ~ 20 個のトランジスタで構成)を必要とするのに対し、ROM セルはビット線とワード線を接続する 1 つのトランジスタの有無(論理 0)または存在(論理 1)で構成されるためです。[ 13 ]その結果、ROMは長年にわたりRAMよりもビットあたりのコストが低く実装される可能性がある。
1980年代のほとんどの家庭用コンピュータは、磁気ディスクドライブなどの他の不揮発性ストレージが高価すぎたため、BASICインタープリタまたはオペレーティングシステムをROMに格納していました。たとえば、Commodore 64には、 64KBのRAMと、BASICインタープリタとKERNALオペレーティングシステムを含む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トランジスタはNOR構成またはNAND構成のいずれでも配置でき、各ビットが1つのトランジスタのみで表されるため、可能な限り最小のセルサイズを実現できます。NANDはNORよりも高い記憶密度を提供します。OR構成も可能ですが、NORと比較すると、トランジスタはVssではなくVccにのみ接続されます。[ 15 ]マスクROMはかつて最も安価で、最も単純な半導体メモリデバイスであり、金属層とポリシリコン層がそれぞれ1つずつしかないため、最も高い製造歩留まり(製造実行あたりの動作デバイス数が最も多い)を持つタイプの半導体メモリとなっています[ 3 ] 。ROMは、 CMOS、nMOS、pMOS、バイポーラトランジスタなど、いくつかの半導体デバイス製造技術のいずれかを使用して製造できます。[ 16 ]
プロジェクトの開発段階では、 UV- EPROMやEEPROMなどの書き換え可能な不揮発性メモリを使用し、コードが完成したらマスクROMに切り替えるのが一般的です。例えば、 AtmelのマイクロコントローラはEEPROMとマスクROMの両方の形式で提供されています。
マスクROMの最大の利点はそのコストです。ビットあたりのサイズは、他のどの半導体メモリよりもマスクROMの方がコンパクトです。集積回路のコストはサイズに大きく依存するため、マスクROMは他のどの半導体メモリよりも大幅に安価です。
しかし、マスク作成の費用は高額であり、設計から製品化までの所要時間も長い。設計ミスはコストがかかる。データやコードにエラーが見つかった場合、マスクROMは使用不能となり、コードやデータを変更するには交換する必要がある。[ 17 ]
2003年現在マスクROMチップの大部分は、サムスン電子、NEC、沖電気工業、マクロニクスの4社によって製造されている。[ 18 ]
集積回路の中には、マスクROMのみを搭載しているものもあれば、マスクROMに加えて様々な他のデバイスを搭載しているものもある。特に、多くのマイクロプロセッサはマイクロコードを格納するためのマスクROMを備えている。また、一部のマイクロコントローラはブートローダーやファームウェア全体を格納するためのマスクROMを備えている。
従来のマスクプログラム方式のROMチップは、保存するデータを物理的に符号化する集積回路であるため、製造後にその内容を変更することは不可能である。
レーザーROMの内容を書き込むには、マスクを使用する代わりに、レーザーを使用してROM上の一部のダイオードの電気的特性のみを変更したり、レーザーを使用して一部のポリシリコンリンクのみを切断したりすることも可能です。[ 19 ] [ 20 ] [ 15 ]
書き込み保護を適用することで、一部の再プログラム可能なROMは一時的に読み出し専用メモリになる場合があります。
固体IC技術に基づかない不揮発性メモリには、以下のような種類があります。

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

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