


ランダムアクセスメモリ(RAM ; / ræm /)は、任意の順序で読み書きできる電子コンピュータメモリの一種で、通常は作業データやマシンコードの保存に使用されます。[ 1 ] [ 2 ]ランダムアクセスメモリデバイスでは、メモリ内のデータの物理的な位置に関係なく、データ項目をほぼ同じ時間で読み書きできます。これに対し、ハードディスクや磁気テープなどの他の直接アクセスデータストレージメディアでは、メディアの回転速度やアームの動きなどの機械的な制限により、データ項目の読み書きに必要な時間が記録メディア上の物理的な位置によって大きく異なります。
現代の技術では、ランダムアクセスメモリは、MOS(金属酸化膜半導体)メモリセルを備えた集積回路(IC)チップの形をとっています。RAMは通常、電源が切れると保存された情報が失われる揮発性メモリと関連付けられています。揮発性ランダムアクセス半導体メモリの主な種類は、スタティックランダムアクセスメモリ(SRAM)とダイナミックランダムアクセスメモリ(DRAM)の2種類です。
不揮発性RAMも開発されており[ 3 ]、他のタイプの不揮発性メモリは読み出し操作にランダムアクセスを可能にするが、書き込み操作は不可能であったり、他の種類の制限があったりする。これらには、ほとんどのタイプのROMとNORフラッシュメモリが含まれる。
半導体 RAM の使用は 1965 年に IBM がSystem/360 Model 95コンピュータ向けにモノリシック (シングル チップ) 16 ビット SP95 SRAM チップを導入し、東芝が180 ビット Toscal BC-1411電子計算機にバイポーラ DRAM メモリセルを使用したことに遡ります。どちらもバイポーラ トランジスタに基づいています。バイポーラ DRAM は磁気コア メモリよりも高速でしたが、当時主流だった磁気コア メモリの低価格には太刀打ちできませんでした。[ 4 ] 1966 年、ロバート デナード博士は、コンデンサ 1 つにつき 1 つの MOS トランジスタがある現代の DRAM アーキテクチャを発明しました。[ 5 ]最初の商用 DRAM IC チップである 1K Intel 1103は 1970 年 10 月に導入されました。同期ダイナミック ランダム アクセス メモリ(SDRAM) は、1992 年にSamsung KM48SL2000 チップで再導入されました。

初期のコンピュータは、メインメモリ機能にリレー、機械式カウンタ[ 6 ]、または遅延線を使用していた。超音波遅延線はシリアルデバイスであり、書き込まれた順序でしかデータを再生できなかった。ドラムメモリは比較的低コストで拡張できたが、メモリ項目の効率的な読み出しには、速度を最適化するためにドラムの物理的なレイアウトに関する知識が必要だった。三極真空管、そして後には個別トランジスタで構成されたラッチは、レジスタなどのより小さく高速なメモリに使用された。このようなレジスタは比較的大きく、大量のデータに使用するにはコストが高すぎたため、一般的に、このようなメモリは数十ビットまたは数百ビットしか提供できなかった。
ランダムアクセスメモリの最初の実用的な形態はウィリアムズ管でした。これは、陰極線管の表面に電気的に帯電したスポットとしてデータを格納しました。CRTの電子ビームは管上のスポットを任意の順序で読み書きできるため、メモリはランダムアクセスでした。ウィリアムズ管の容量は数百ビットから約1000ビットでしたが、個々の真空管ラッチを使用するよりもはるかに小さく、高速で、電力効率が優れていました。イギリスのマンチェスター大学で開発されたウィリアムズ管は、1948年6月21日に初めてプログラムの実行に成功したマンチェスターベビーコンピュータで、最初の電子的に格納されたプログラムを実行するための媒体となりました。[ 7 ]実際には、ウィリアムズ管メモリがベビーのために設計されたのではなく、ベビーはメモリの信頼性を実証するためのテストベッドでした。 [ 8 ] [ 9 ]
磁気コアメモリは1947年に発明され、1970年代半ばまで開発が続けられました。磁化されたリングのアレイを利用したランダムアクセスメモリとして広く普及しました。各リングの磁化方向を変えることで、1つのリングに1ビットのデータを格納することができました。各リングにはアドレス線の組み合わせがあり、選択して読み書きできるため、任意のメモリ位置に任意の順序でアクセスすることが可能でした。磁気コアメモリは、1970年代初頭に集積回路(IC)の半導体メモリに取って代わられるまで、コンピュータメモリの標準形態でした。 [ 10 ]
集積回路型読み出し専用メモリ(ROM)が開発される以前は、アドレスデコーダによって駆動されるダイオードマトリックス、あるいは特殊な巻き方をしたコアロープメモリプレーンを用いて、永久(または読み出し専用)ランダムアクセスメモリが構築されることが多かった。
半導体メモリは1960年代にバイポーラメモリとして登場し、バイポーラトランジスタが使用された。高速ではあったものの、磁気コアメモリの低価格には太刀打ちできなかった。[ 11 ]
1957年、フロッシュとデリックはベル研究所で最初の二酸化ケイ素電界効果トランジスタを製造した。これはドレインとソースが表面で隣接している最初のトランジスタであった。[ 12 ]その後、1960年にベル研究所のチームが動作するMOSFETを実証した。[ 13 ] [ 14 ]これにより、 1964年にフェアチャイルド・セミコンダクターのジョン・シュミットによって金属酸化物半導体(MOS)メモリが開発された。[ 10 ] [ 15 ] MOS半導体メモリは、高速であることに加えて、磁気コアメモリよりも安価で消費電力も少なかった。[ 10 ] 1968年にフェアチャイルドのフェデリコ・ファギンによってシリコンゲートMOS集積回路(MOS IC)技術が開発されたことで、 MOSメモリチップの製造が可能になった。[ 16 ] MOSメモリは1970年代初頭に磁気コアメモリを凌駕し、主要なメモリ技術となった。[ 10 ]
集積型バイポーラスタティックランダムアクセスメモリ(SRAM)は、1963年にフェアチャイルドセミコンダクターのロバート・H・ノーマンによって発明されました。 [ 17 ]続いて、1964年にフェアチャイルドのジョン・シュミットによってMOS SRAMが開発されました。[ 10 ] SRAMは磁気コアメモリの代替品となりましたが、データ1ビットあたり6個のMOSトランジスタが必要でした。[ 18 ] SRAMの商用利用は、 IBMがSystem/360 Model 95用のSP95メモリチップを発表した1965年に始まりました。[ 11 ]
ダイナミックランダムアクセスメモリ(DRAM)は、4個または6個のトランジスタからなるラッチ回路を、メモリビットごとに1個のトランジスタに置き換えることを可能にし、揮発性という代償を伴うものの、メモリ密度を大幅に向上させた。データは各トランジスタの微小な静電容量に保存され、電荷が漏れ出す前に数ミリ秒ごとに定期的にリフレッシュする必要があった。
1965年に発表された東芝の電子計算機Toscal BC-1411は、ゲルマニウムバイポーラトランジスタとコンデンサで構成される個別のメモリセルに180ビットのデータを格納するコンデンサバイポーラDRAMの一種を使用していた。[ 19 ] [ 20 ] [ 21 ]コンデンサは、アタナソフ・ベリーコンピュータのドラム、ウィリアムズ管、セレクトロン管など、それ以前のメモリ方式にも使用されていた。バイポーラDRAMは磁気コアメモリよりも高速であったが、当時主流だった磁気コアメモリの低価格には太刀打ちできなかった。[ 22 ]

1966年、ロバート・デナードはMOS技術の特性を調べているうちに、 MOS技術がコンデンサを構築できること、そしてMOSコンデンサに電荷を蓄積するかしないかでビットの1と0を表現できること、さらにMOSトランジスタでコンデンサへの電荷の書き込みを制御できることを発見した。これが、コンデンサ1個につき1個のMOSトランジスタを持つ現代のDRAMアーキテクチャの開発につながった。[ 18 ] 1967年、デナードはIBMの下で、MOS技術に基づいた単一トランジスタDRAMメモリセルの特許を出願した。[ 18 ] [ 23 ]最初の商用DRAM ICチップはIntel 1103で、8μm MOSプロセスで製造され、容量は1kbitで、1970年に発売された。[ 10 ] [ 24 ] [ 25 ]
初期の DRAM は、多くの場合 CPU クロックと同期しており、初期のマイクロプロセッサで使用されていました。1970 年代半ばには、DRAM は非同期設計に移行しましたが、1990 年代には同期動作に戻りました。[ 26 ] [ 27 ] 1992 年に、Samsung は 16 Mbitの容量を持つ KM48SL2000 をリリースしました。[ 28 ] [ 29 ]最初の商用ダブル データ レートSDRAM は、1998 年 6 月にリリースされたSamsung の 64 Mbit DDR SDRAMでした。 [ 30 ] GDDR (グラフィックス DDR) はSGRAM (同期グラフィックス RAM)の一種で、1998 年に Samsung が 16 Mbit メモリ チップとして初めてリリースしました。 [ 31 ]
一般的に、RAMという用語はソリッドステートメモリデバイスのみを指し、より具体的にはほとんどのコンピュータのメインメモリを指します。現代のRAMで広く使用されている2つの形式は、スタティックRAM(SRAM)とダイナミックRAM (DRAM)です。SRAMでは、1ビットのデータはメモリセルの状態を使用して保存され、通常は6つのMOSFETを使用します。この形式のRAMは製造コストが高いですが、一般的にDRAMよりも高速で、静的電力も少なくて済みます。現代のコンピュータでは、SRAMはCPUのキャッシュメモリとしてよく使用されます。DRAMは、トランジスタとコンデンサのペア(通常はそれぞれMOSFETとMOSコンデンサ)を使用して1ビットのデータを保存します[ 32 ]。これらが一緒にDRAMセルを構成します。コンデンサは高または低の電荷(それぞれ1または0)を保持し、トランジスタはスイッチとして機能し、チップ上の制御回路がコンデンサの電荷状態を読み取ったり変更したりできるようにします。この形式のメモリはスタティックRAMよりも製造コストが低いため、現代のコンピュータで使用されるコンピュータメモリの主流となっています。
スタティックRAMとダイナミックRAMはどちらも揮発性メモリとみなされ、システムから電源が切断されると状態が失われます。一方、読み出し専用メモリ(ROM)は、選択されたトランジスタを永続的に有効または無効にすることでデータを保存するため、メモリの内容は変更できません。書き込み可能なROM( EEPROMやNORフラッシュなど)は、ROMとRAMの両方の特性を兼ね備えており、電源がなくてもデータを保持でき、特別な機器を必要とせずに更新できます。
ECCメモリ(SRAMまたはDRAMのいずれか)には、パリティビットまたはエラー訂正コードを使用して、保存されたデータ内のランダムな障害(メモリエラー)を検出および/または訂正するための特別な回路が含まれています。
メモリセルは、コンピュータメモリの基本的な構成要素です。メモリセルは、 1ビットのバイナリ情報を記憶する電子回路です。セルは、論理1(高電圧レベル)を記憶するように設定でき、論理0(低電圧レベル)を記憶するようにリセットできます。その値は、設定/リセット操作によって変更されるまで保持されます。メモリセル内の値は、読み出しによってアクセスできます。
SRAMでは、メモリセルはフリップフロップ回路の一種であり、通常はFETを用いて実装されます。そのため、SRAMはアクセスされていないときは非常に低い消費電力で動作しますが、構造が複雑で高価であり、記憶密度が低いという欠点があります。
2つ目のタイプであるDRAMは、コンデンサを基本としています。このコンデンサを充電・放電することで、セル内に1または0を記憶できます。しかし、コンデンサ内の電荷は徐々に漏れ出すため、定期的にリフレッシュする必要があります。このリフレッシュ処理のため、DRAMはSRAMよりも多くの電力を消費しますが、SRAMに比べて高い記憶密度と低い単位コストを実現できます。
メモリセルが有用であるためには、読み書き可能でなければならない。RAMデバイス内部では、メモリセルを選択するために多重化回路と逆多重化回路が使用される。通常、RAMデバイスには一連のアドレス線がある。そして、これらのラインに適用可能なビットの組み合わせごとに、メモリセルのセットが選択されます。このアドレッシング方式により、RAMデバイスのメモリ容量はほぼ常に2のべき乗になります。
通常、複数のメモリセルが同じアドレスを共有します。例えば、4ビット幅のRAMチップは、各アドレスに対して4つのメモリセルを備えています。メモリの幅とマイクロプロセッサの幅は異なる場合が多く、32ビットマイクロプロセッサの場合は、8個の4ビットRAMチップが必要になります。
多くの場合、単一のデバイスで提供できるアドレス数よりも多くのアドレスが必要になります。その場合、複数のデバイスが使用され、外部マルチプレクサを使用して特定のアドレス範囲に割り当てられたデバイスを選択します。RAMは多くの場合バイト単位でアドレス指定できますが、ワード単位でアドレス指定できるRAMも存在します。[ 33 ] [ 34 ]
多くのコンピュータシステムは、プロセッサレジスタ、オンダイSRAMキャッシュ、外部キャッシュ、DRAM、メモリページングシステム、そしてSSDやハードドライブ上の仮想メモリまたはスワップ領域からなるメモリ階層を備えています。プログラミングの観点からは、このメモリ全体をRAMと呼ぶことがあります。メモリ階層を使用する主な目的は、メモリシステム全体の総コストを最小限に抑えつつ、可能な限り高速な平均アクセス時間を実現することです。
RAMは、オペレーティングシステムやアプリケーションの一時的な記憶領域および作業領域として機能するだけでなく、その他にも数多くの用途で使用されています。
最新のオペレーティングシステムのほとんどは、仮想メモリと呼ばれる方法でRAM容量を拡張します。コンピュータのハードドライブまたはSSDの一部がページングファイルまたはスクラッチパーティション用に確保され、物理RAMとページングファイルの組み合わせがシステムの総メモリを構成します。たとえば、コンピュータに2GB のRAMと1GB のページングファイルがある場合、オペレーティングシステムは 合計3GBのメモリを使用できます。システムの物理メモリが不足すると、RAMの一部をページングファイルにスワップして新しいデータのための領域を確保できます。以前にスワップされた情報が再び必要になった場合は、別のスワップを実行して情報をRAMに読み込みます。このメカニズムを過剰に使用すると、スラッシングが発生し、ハードドライブがRAMよりもはるかに遅いため、一般的にシステム全体のパフォーマンスが低下します。
ソフトウェアはコンピュータのRAMの一部をパーティション分割し、それをRAMドライブと呼ばれるより高速なハードドライブとして機能させることができます。RAMドライブは通常、コンピュータの電源を切ると保存されたデータが失われます。[ a ]
比較的低速なROMチップの内容をRAMにコピーすることで、アクセス時間を短縮できる場合があります。ROMチップは無効化され、初期化されたメモリ位置が同じアドレスブロック(多くの場合、書き込み保護されている)上で切り替えられます。このプロセスはシャドウイングと呼ばれることもあり、コンピュータと組み込みシステムの両方でよく用いられています。
一般的な例として、一般的なパーソナルコンピュータのBIOSには、「シャドウBIOSを使用する」などのオプションがあります。これを有効にすると、BIOSのROMのデータに依存する機能は代わりにDRAMの領域を使用します(ほとんどの場合、ビデオカードROMやその他のROMセクションのシャドウイングも切り替えることができます)。シャドウされたROMのサイズ分だけ空きメモリが減少します。システムによっては、パフォーマンスの向上にはつながらず、互換性の問題が発生する可能性があります。たとえば、シャドウRAMを使用すると、一部のハードウェアがオペレーティングシステムからアクセスできなくなる場合があります。一部のシステムでは、起動後にBIOSが使用されないため、メリットは理論上のものとなる可能性があります。[ 35 ]
一部の仮想プライベートネットワークサービスでは、セッションメタデータや暗号化マテリアルを含むすべての実行時状態を揮発性メモリに保持するためにRAMサーバーを使用しています。これは、ディスクバックアップ設計に比べてセキュリティを向上させることを目的としています。[ 36 ] [ 37 ]このような設計では、ハードドライブにデータは書き込まれません。すべての情報は揮発性メモリに存在し、サーバーの電源がオフまたは再起動されるたびに消去されます。[ 38 ]
メモリウォールとは、CPU とCPU チップ外のメモリの応答時間 (メモリレイテンシとして知られる) との間の速度の差が拡大している状態を指します。この差が生じる重要な理由の一つは、チップ境界外の通信帯域幅が限られていることです。1986 年から 2000 年にかけて、 CPU の速度は年間 55% の割合で向上しましたが、チップ外のメモリの応答時間は 10% しか向上しませんでした。このような傾向から、メモリレイテンシがコンピュータのパフォーマンスにおける圧倒的なボトルネックになると予想されていました。[ 39 ]
この差が生じるもう一つの理由は、1980年代のPC革命以降、メモリ容量が飛躍的に増加したことである。当初、PCには1メガバイト未満のRAMしか搭載されておらず、応答時間はCPUクロックサイクル1回分、つまり待機状態は不要だった。同じ種類のメモリユニットでも、容量が大きいほど信号が伝送される回路が長くなるため、必然的に容量が小さくなる。数ギガバイトのメモリユニットをクロックサイクル1回分の応答時間で構築することは困難、あるいは不可能である。現代のCPUでも待機状態が不要なキャッシュメモリを搭載していることが多いが、チップ間通信の帯域幅制限のため、CPUコアと同じチップ上に配置する必要がある。また、大容量メモリに使用されるダイナミックRAMよりもはるかに高価なスタティックRAMで構築する必要がある。
CPU の速度向上は大幅に鈍化したが、これは物理的な大きな障壁と、CPU 設計がすでにメモリの限界に達しているという理由による。インテルはこれらの原因を 2005 年の文書にまとめた。[ 40 ]
まず、チップの形状が縮小しクロック周波数が上昇するにつれて、トランジスタのリーク電流が増加し、過剰な電力消費と発熱につながります。次に、メモリのアクセス時間がクロック周波数の上昇に追いついていないため、クロック速度の上昇による利点はメモリのレイテンシによって部分的に相殺されます。第三に、特定のアプリケーションでは、プロセッサの高速化に伴い、従来のシリアルアーキテクチャの効率が低下しており(いわゆるフォン・ノイマン・ボトルネックのため)、周波数の上昇によって得られるはずのあらゆる利点がさらに損なわれています。さらに、固体デバイス内でインダクタンスを生成する手段の制限も一因となり、フィーチャサイズが縮小するにつれて信号伝送における抵抗・容量(RC)遅延が増加し、周波数の上昇では解決できない新たなボトルネックが生じています。
信号伝送におけるRC遅延は、「クロックレート対IPC:従来のマイクロアーキテクチャの終焉」[ 41 ]でも指摘されており、2000年から2014年の間にCPUパフォーマンスが平均年間最大12.5%向上すると予測されている。
別の概念として、プロセッサとメモリのパフォーマンスギャップがあり、これは、2Dチップでは離れた位置にある制御ロジックとメモリセル間の距離を縮める3D集積回路によって対処できます。 [ 42 ]メモリサブシステムの設計では、時間とともに拡大しているこのギャップに焦点を当てる必要があります。[ 43 ]このギャップを埋める主な方法はキャッシュの使用です。キャッシュとは、プロセッサの近くにある最近の操作に関連するデータを格納する少量の高速メモリであり、頻繁に呼び出される場合にこのデータへのアクセスを高速化します。拡大するギャップに対処するために、複数のレベルのキャッシングが開発されており、高速な最新のコンピュータのパフォーマンスは、進化するキャッシング技術に依存しています。[ 44 ]プロセッサの速度の向上とメインメモリへのアクセスの遅れた速度の間には、最大で53%の差が生じる可能性があります。[ 45 ]
ソリッドステートドライブの速度は、2012年のSATA3経由の約400 Mbit/sから2024年のNVMe / PCIe経由の約7 GB/sまで向上し続け、RAMとハードディスクの速度の差を縮めていますが、RAMは依然として桁違いに高速で、シングルレーンのDDR5 8000 MHzは128 GB/sの速度を実現でき、最新のGDDRはさらに高速です。高速で安価な不揮発性ソリッドステートドライブは、サーバーファームで特定のデータをすぐに利用できるように保持するなど、以前はRAMが担っていた機能の一部を置き換えています。1テラバイトのSSDストレージは200ドルで入手できますが、1 TBのRAMは数千ドルかかります。[ 46 ] [ 47 ]
最小8μmのパターンサイズを持つ6マスクシリコンゲートP-MOSプロセスで製造されました。その結果、メモリセルサイズは2,400μm²、ダイサイズは10mm²弱となり、価格は約21ドルでした。
最初の商用同期DRAMであるSamsung 16-Mbit KM48SL2000は、システム設計者が非同期システムから同期システムへ容易に移行できるシングルバンクアーキテクチャを採用しています。
1984年の1M DRAMの発表により、メガバイトの時代が始まった。