FPM DRAM(Fast Page Mode)完全解説:仕組み・タイミング・EDO/SDRAM/DDRとの比較と実装ポイント

はじめに

FPM DRAM(Fast Page Mode DRAM)は、メモリ技術の歴史における重要な一段階であり、1980年代〜1990年代のパーソナルコンピュータや組み込み機器で広く採用されました。本稿では、FPM DRAMの仕組みを基礎から丁寧に解説し、同期型DRAM(SDRAM)やEDO DRAMなどの後継技術との違い、性能面・実装面での特徴、歴史的背景と現代への影響までを深掘りします。専門用語は必要に応じて説明し、ページモードの動作やタイミングの概念が理解できるように構成しています。

DRAMの基本概念(復習)

FPM DRAMを理解するには、まずDRAMの基本動作を押さえる必要があります。DRAMは各ビットをコンデンサとトランジスタの組で保持し、行(row)と列(column)で構成されるマトリクス状のアドレス空間を持ちます。メモリへアクセスする際は、一般に行アドレスを選択するためのRAS(Row Address Strobe)信号と、列アドレスを選択するためのCAS(Column Address Strobe)信号を操作します。各行を開いている間に複数の列へアクセスできれば効率が良くなりますが、行を切り替えるときにはプレチャージ(行の閉鎖)や再選択のオーバーヘッドが発生します。

FPM DRAMとは何か

FPM(Fast Page Mode)DRAMは、上記の行/列アドレス構造を活かし、「一度開いた行(ページ)に対して複数の列アクセスを繰り返し行うことを効率化する」方式です。具体的には、一度RASをアクティブにして対象の行を選択した状態を維持したまま、複数回CASをアサートして異なる列アドレスのデータを読み書きできます。これにより、同一行内の連続アクセス(ページヒット)に対するレイテンシが低減され、帯域効率が向上します。

FPMの動作原理(詳細)

以下はFPM DRAMの基本的な動作シーケンスです(概念的な説明)。

  • 1) 行選択(RASをアサート): CPUまたはメモリコントローラが目的の行アドレスを送信し、RASをアサートしてその行を「開く」。
  • 2) 列アクセス(CASをアサート): 同じ行に対して複数の列アドレスを順に送り、CASを繰り返しアサートしてデータの読み出し/書き込みを行う。各列アクセスではCASのパルスごとにデータの転送が行われる。
  • 3) 行クローズ(プレチャージ): 一連の列アクセスが終わったらRASをネゲート(非アクティブ化)して行をプレチャージ(閉じる)し、次の行選択に備える。

この方式の利点は「同一行内での連続アクセス時に行選択オーバーヘッド(RASの再アサート)を省ける」ことにあります。つまり、行を再選択するためのRAS-プレチャージ-再RASの時間を節約でき、バーストやストリーム的なアクセスに強くなります。

信号とタイミングの概念

FPM DRAMでは、信号のタイミングがパフォーマンスに直結します。重要な概念は次の通りです。

  • RAS(Row Address Strobe): 行選択用のストローブ。アサートすることで行がアクティブになる。
  • CAS(Column Address Strobe): 列選択用のストローブ。CASをアサートすると該当列のデータが出力される(読み出し時)。
  • WE(Write Enable): 書き込み操作を指示する信号。
  • ページヒット(Page Hit): アクセス先が既に開かれている行内の列である場合。CASのみの操作で済むため高速。
  • ページミス(Page Miss): アクセス先の行が開かれていない場合。新たにRASをアサートして行を開き、前の行をプレチャージする必要があるため遅くなる。

また、DRAM固有のタイミング用語(tRCD、tRP、tRASなど)は同期DRAM(SDRAM)で頻繁に使われますが、非同期FPMでも「RASとCASの間隔」や「RASの保持時間」「プレチャージに要する時間」といった項目は性能を決める重要パラメータです。FPMは非同期動作であり、メモリコントローラがこれらのタイミングを管理します。

FPMと他のDRAM(EDO、SDRAM、DDR)との比較

FPMは当時のスタンダードでしたが、さらに性能改善を狙った派生・後継技術が存在します。代表的な比較点を挙げます。

  • EDO DRAM(Extended Data Out):

    EDOはFPMの発展形で、データ出力を重ねられる時間を延長することで連続アクセスのスループットをさらに向上させます。EDOでは前のアクセスのデータ出力を完全に終了させる前に次のアクセスを開始できるため(パイプライニング的な要素)、FPMよりも短い平均アクセス時間を実現しました。多くの486〜初期Pentiumマシンで採用されました。

  • SDRAM(Synchronous DRAM):

    SDRAMはクロック同期型で、外部クロックに合わせて動作するため、高速で複雑なコマンド(バースト、プリチャージ、オートリフレッシュなど)を扱えます。SDRAMの登場により、メモリのピンでの制御がより規則正しくなり、高クロック化・バースト転送・パイプライン化が可能となり、FPM/EDOの非同期方式を置き換えました。

  • DDR(Double Data Rate):

    SDRAMの進化系で、クロックの立ち上がりと立ち下がりの両エッジでデータを転送することにより実効帯域を倍増します。現代の主流はDDR系で、FPMとは根本的に方式が異なります。

パフォーマンス面での評価

FPMの利点は、ソフトウェアのアクセスパターンが「同一行内に集中する」場合に顕著になります。例えば、キャッシュラインに連続するメモリ読み出しや、同一ページ内の連続処理ではページヒット率が高まり、FPMの恩恵が大きくなります。一方でランダムアクセスが多いワークロードではページ切り替え(プレチャージ+RAS再アサート)のコストが頻発するため、相対的に不利になります。

実際の数値はチップ世代やプロセス、動作クロックに依存しますが、FPMメモリのアクセス遅延は数十ナノ秒(例えば50〜120nsのレンジ)で語られることが多く、EDOはこれをさらに短縮、SDRAM/DDRは高クロック化とバースト転送で大幅に上回ります。

実装上の注意点と設計の視点

FPMを採用する設計では、次の点を考慮する必要があります。

  • メモリコントローラが非同期DRAMのタイミングを厳密に管理する必要がある(RAS/CASの制御)。
  • アクセスパターンの最適化:ループやデータ配置を工夫して同一行へのアクセスを増やすと効果的。
  • 行長(ページサイズ)とキャッシュラインやソフトウェアのデータ配置の整合性を考えると効率化が可能。
  • 電力やチップコスト面では、当時のFPMは比較的単純で廉価だったが、速度面の要求が上がると同期型への移行が有利。

歴史的背景と用途

FPM DRAMは1980年代後半から1990年代前半にかけて、パーソナルコンピュータ(486、初期のPentium時代)や組み込み機器で広く用いられました。性能改善版としてEDO DRAMが登場し、その後SDRAMが市場を席巻することでFPMは次第に姿を消しました。とはいえ、FPMの「ページ(行)を開いて複数列を処理する」考え方は、現代DRAMにおける行バッファやページヒット概念につながっており、DRAM設計の基本パラダイムの一つを形成しています。

なぜ現在は使われないのか(陳腐化の理由)

今日では、メモリ性能要求が非常に高く、クロック同期や大容量のバースト転送、低遅延化/高帯域化が必要とされます。FPMは非同期であり、パイプライン化や高クロック動作に不向きであるため、SDRAM→DDR系へと置き換わりました。さらにプロセス技術やチップの統合による高速化・電力効率向上の観点でも、SDRAM/DDR系が優位です。結果として、FPMは歴史的な技術として扱われますが、学術的・教育的にはDRAMの基本原理を学ぶ上で非常に有用です。

まとめ(設計者・エンジニアへの示唆)

FPM DRAMは、DRAMアーキテクチャにおける「ページ(行)を開いたまま複数列へアクセスする」という効率化の初期実装であり、以降のDRAM進化(EDO、SDRAM、DDR)へとつながる重要な段階です。今日の最新メモリとは直接競合しませんが、アクセスパターンとハードウェアのインターフェースが性能に与える影響を理解するための良い教材になります。組み込み機器やレトロPCの理解・修理、あるいはメモリ設計の教育において、FPMの概念を押さえておくことは今でも有益です。

参考文献