Random Access Memory

**Random Access Memory**（ランダムアクセスメモリ）、略して**RAM**（ラム）とは、すべての記憶位置に同じ時間で高速にアクセスできる半導体メモリである。Read only memory（ROM）との対比として、読み書きが自在であることを示すことが多い。コンピュータの主記憶装置を構成し、アプリケーションが処理を実行するために使用される。

## 概説
RAM（ランダムアクセスメモリ）は、コンピュータの主記憶であり、特定の内容を、記録された順序に関係なく、中央処理装置（CPU）が非常に短時間で直接アクセス（読み取りや書き込み）できるものである。

ランダムアクセス回路を用いた場合、2種類のメモリ、SRAMとDRAMが実現可能である。

なお、このDRAMもSRAMも揮発性メモリである。すなわち電源を落とすと記憶が消えてしまう。揮発性でないメモリとして、不揮発性メモリがある。

## 種類

厳密には、半導体チップによるものだけを指す語ではないが、ここでは専ら半導体チップによるものについて述べる。

;DRAM
半導体DRAMは、記憶データをコンデンサ（キャパシタ）の電荷として蓄えているため、一定時間経つと自然放電によりデータが消えてしまう。そのため、定期的に情報を読み出し、再度書き込みをする必要がある。この動作を「リフレッシュ」といい、記憶を保持するためには1秒間に数十回の頻度で繰り返しリフレッシュを行う必要がある。一般にそのようなメモリをダイナミックメモリといい、ダイナミックなRAMということでDRAMと呼ばれている。DRAMは、アドレスを指定してからデータを読み出すまでの時間がSRAMよりもかなり遅いものの、記憶部の構造が単純であるため、面積あたりの記憶容量はSRAMより大きく、また容量あたりのコストが低いという特徴がある。その特徴を活かし、主記憶に使われている。常にリフレッシュを行っているため、消費電力が大きい。DRAMのアクセス方式によってさまざまな種類のものが市販されている。

;SRAM
半導体SRAMは、記憶部にフリップフロップを用いており、リフレッシュ動作を必要としない。リフレッシュ動作を必要としないため、リフレッシュ動作による電力の消費が無く省電力である。また、DRAMより高速動作させることができる。だが記憶部の回路が複雑になるため、面積あたりの記憶容量が低く、容量あたりのコストも高い（高価なメモリである）。SRAMはCPU内のレジスタやキャッシュメモリなどに使われる。


DRAM DDR2 512.jpg|DRAMの例。DDR2、2006年ころ
2102 Static Random Access Memory (1024 bit x 1).jpg|単体のSRAMの例（1977年ころ）


その他、細かい分類については#RAMの種類一覧を参照。

## 歴史
最初期（1940年代）の電子計算機の時点で、当時の主力素子である真空管で1ビット1ビットメモリを作っていたのでは高価につきすぎることから、いくつかの記憶装置に特化した素子や機器が考案された。アタナソフ&ベリー・コンピュータではリフレッシュ操作を機械的に行う、キャパシタによる一種のDRAMのような装置が考案された。1949年に稼働したEDSACで使われた水銀遅延記憶装置などの信号の遅延を利用するものは、原理上シーケンシャルアクセスである。EDSACは初の「実用的な」プログラム内蔵方式のコンピュータだとされているが、プログラム内蔵方式の実用性のためにはある程度多くのメモリが必要であり（EDSACでは1024短語）、水銀遅延記憶装置は同機の成功の重要な要素であった。当時の他の素子では、ブラウン管面の帯電を利用するウィリアムス管は、ランダムアクセスでリフレッシュを必要とするなどDRAMに近い性格を持つ。

以降には「ランダムアクセス」メモリに関する話題は特に無い。

その後、1949年から1952年に磁気コアを用いた磁気コアメモリが開発された。コアメモリでは、格子状に配置した磁気コアと呼ばれるリング状の磁性体に、縦と横方向から電線を貫いた構造をしていた。磁気コアメモリは、集積回路による半導体メモリが登場する1960年代末から1970年代初頭まで、広く使われていた。特には、放射線などの影響を受けにくいという特性から、宇宙機用などでは1980年代でも用いられていた例がある。また、破壊読み出しなので読み出したら書き戻す必要がある一方、ドーナツ状のフェライトコアの磁性を利用しているため不揮発という特性がある。

21世紀の現在では次のような状態になっている。

;レジスタやキャッシュメモリ
CPUの処理速度に大きな影響を及ぼすレジスタやキャッシュメモリはSRAMが採用される傾向にある。DRAMは速度が遅く、通常、レジスタやキャッシュメモリには採用されない。

;主記憶装置
コンピュータの主記憶装置は、すべてDRAMになっている。原理的にSRAMは容量あたりの単価が高くならざるをえないため、（何らかのブレークスルーがないかぎり）主記憶装置をSRAMで構成するようになるとは考えられていない。いっぽうで、何らかの不揮発性メモリがDRAMを置き換える可能性はあるものと考えられており、研究開発がおこなわれている。例えば、カーボンナノチューブを使ったものや、トンネル磁気抵抗効果を使ったMRAMがある。また、2004年には、インフィニオン・テクノロジーズが16MiBのMRAM試作品を公開した。現在開発が進んでいる第二世代の技術は、Thermal Assisted Switching (TAS) 方式と Spin Torque Transfer (STT) 方式がある。前者はベンチャー企業が単独で開発しているが、後者はIBMなどを含め複数の企業が開発に乗り出している。ただし、これらが今後の主流となるかどうかは、まだ不透明である。

主記憶装置において、アクセススピードや容量あたりコストと並んで重要なのは、消費電力である。過去の組み込みシステムにおいては、消費電力を抑えるためにSRAMが用いられていたが、近年では低消費電力に特化したDRAMが使われている。例えば、サーバファームなどでは、高速性よりも消費電力を抑えることに重点を置いた、"EcoRAM" と呼ばれるRAMも登場している。

## RAMの種類一覧
*SRAM (Static RAM)
*DRAM (Dynamic RAM)
**FPM DRAM (First Page Mode DRAM)
**EDO DRAM (Extended Data Out DRAM)
**SDRAM (Synchronous DRAM)
***DDR SDRAM (Double Data Rate SDRAM)
***DDR2 SDRAM
***DDR3 SDRAM
***DDR4 SDRAM
***DDR5 SDRAM
***GDDR3
***GDDR4
***GDDR5
***GDDR6
**RDRAM (Rambus DRAM)
***DRDRAM  (Direct RDRAM)
*擬似SRAM 
*FeRAM (Ferroelectric RAM)
*MRAM (Magnetoresistive RAM)
*ReRAM (Resistive RAM)
*PRAM (Phase change RAM)

## プロセッサとRAMの速度差

マイクロプロセッサの速度（ここでは、周辺の速度によって待たされることが無かった場合の単位時間あたりのデータ処理量）とその向上に対して、メモリの速度（レイテンシとスループット）とその向上を比較すると、メモリの方が遅いという傾向は、マイクロプロセッサの誕生以来一貫して続いている。最大の問題は、チップとチップの間のデータ転送帯域幅に限界があることである。1986年から2000年まで、CPUの性能向上は年率平均で55%であったのに対して、メモリの性能向上は年率平均で10%ほどであった。この傾向から、メモリレイテンシがコンピュータ全体の性能においてボトルネックになるだろうと予想されていた。

その後、CPUの性能向上は鈍化した。これには、微細化により性能向上が物理的限界に近づいていることや発熱の問題もあるが、同時にメモリとの速度差を考慮した結果でもある。インテルは、その原因について次のように分析している。

第一に、チップが微細化しクロック周波数が上がると、個々のトランジスタのリーク電流が増大し、消費電力の増大と発熱量の増大を招く（中略）、第二にクロック高速化による利点はメモリレイテンシによって一部相殺される。つまり、メモリアクセス時間は、クロック周波数の向上に合わせて短縮することができなかった。第三に、これまでの逐次的アーキテクチャでは、ある種のアプリケーションは、プロセッサが高速化したほど性能が向上しなくなっている（フォン・ノイマン・ボトルネック）。さらに、集積回路の微細化が進行したことにより、インダクタンスの付与が難しく、信号伝送におけるRC遅延が大きくなる。これも周波数向上を阻害するボトルネックの一つである。


信号伝送におけるRC遅延については Clock Rate versus IPC: The End of the Road for Conventional Microarchitectures にもあり、2000年から2014年のCPUの性能向上は、最大でも年率平均で12.5%という見積もりが示されていた。インテルのデータを見ても、2000年から2004年の間、CPUの速度の向上は鈍化している。

しかし、この見積もりはCPUの性能向上があくまで「クロック周波数の向上によって」高性能化するという前提に立っていた。だが、2004年に AMDがK8アーキテクチャを発表すると、パイプラインバーストによる処理遅延を抑え単位クロック数あたりの命令実行数を向上することがトレンドとなり、クロック周波数のむやみな向上は止まったが、処理能力の向上はむしろ激化した。さらに、この頃から1つのプロセッサダイに複数の主演算コアを搭載し、さらにそれを仮想的に複数のコアとするスレッディング技術を搭載することが主流となった。AMDの製品では、2005年のAthlon64 X2 3800+ では約7.31GFLOPS相当だったが、2017年のRyzen 7 1800Xでは約42.53GFLOPSにも達しており、これは年率平均にすると約50%程度の性能向上と、2000年以前とさして変わっていない。

## その他
### DVD-RAM
一般にRAMという語は、主記憶装置寄りのそれを指し、補助記憶装置寄りのそれは指さないことが多い。しかし、DVD-RAMのような例外もある。

DVD-RAMは文字通りランダムアクセスを重視して設計されており、DVD-RWや他のDVDと比べてランダムアクセス性能が高い。

### RAMディスク

RAMディスクという語は2通りに使われている。どちらも「論理的には超高速のハードディスクのように見える」という点は共通である。

1種類目は、SCSIなどのインタフェースでアクセスできる、外からはハードディスクのように見える装置だが、内部は(D)RAMで構成されているというもので、バッテリーバックアップ等により記憶が保持できるようにしたものも多いが、そうでないものもある。

2種類目は、オペレーティングシステムのデバイスドライバとして、ユーザーのプログラムからはストレージ（ブロックデバイス）のように見えるが、実際にはメインメモリに確保した領域に記録している、というもので、当然ながらシャットダウンにより情報は失われる。テンポラリファイル等の置き場等として使われることが意図されている。

### シャドウRAM
ROMの内容をRAMにコピーしてアクセス時間を短縮することがある（ROMは一般に低速である）。コンピュータの電源投入時、メモリを初期化した後、ROMの配置されていたアドレス範囲をコピーしたRAMに切り替える。これをシャドウRAMと呼ぶ。これは組み込みシステムでもよく行われる技法である。

典型例として、パーソナルコンピュータのBIOSがあり、ファームウェアのなんらかのオプション設定でBIOSをシャドウRAMにコピーして使うことができる（システム内の他のROMをRAMにコピーして使うオプションもある）。それによって性能向上する場合もあるし、非互換問題が発生する場合もある。例えば、ある種のハードウェアはシャドウRAMが使われているとオペレーティングシステムにアクセスできない。また、ブート後は全くBIOSを使わないシステムなら、性能は向上しない。当然ながらシャドウRAMを使うと、主記憶の空き容量が少なくなる。

## 他の用語との比較
コンピュータの記憶装置は多種類ある。詳細は記憶装置を参照のこと。

なお、読み書き (Read/Write) 可能という意味では、あまり使われない表現ではあるが、他にもRWM (Read write memory) という表現があるが、これはRAMとは指す範囲が異なる用語である。

## 脚注

### 注釈

### 出典


## 参考文献
* 

## 関連項目

* デュアルチャネル
* メモリバス規格
* 仮想記憶

## 外部リンク
*