VRAM:画像処理を支える高速メモリ
VRAM(Video RAM)は、
コンピュータシステムにおいて、ディスプレイへの画像表示を担うメモリです。グラフィックスメモリやビデオメモリとも呼ばれ、画像データの一時的な保管場所として機能します。
CPUとGPU間のデータ転送を高速に行うため、通常のRAMよりも高速なアクセス速度が求められます。
VRAMの種類と進化
初期のVRAMは、グラフィックコントローラと
CPUが同時にアクセスすることで発生する競合を避けるため、サイクルスチール方式やデュアルポートRAMが用いられていました。デュアルポートRAMは、入力と出力にそれぞれ独立したバスを持つことで、データ転送の効率を高めていましたが、コストが高いため、広く普及するには至りませんでした。
サムスン電子のWRAM(Window RAM)などもこのタイプのVRAMの一種でした。
2000年代以降は、GDDR(グラフィックスダブルデータレート)規格が登場し、高速化が進みました。GDDR4、GDDR5、GDDR6など、世代ごとに性能が向上し、3Dグラフィックス描画における大量のデータ高速転送を実現しています。ゲーム用途では、依然GDDR規格が主流となっています。
さらに、HBM(High Bandwidth Memory)は、TB/秒オーダーの帯域幅を実現するメモリ規格として登場し、高性能なGPUに採用されています。HBMは高価ですが、プロフェッショナルグラフィックスやHPC(ハイパフォーマンスコンピューティング)、特にAI研究開発などで高い需要があります。一方、オフィス用途では
コストパフォーマンスに優れたDDR4やDDR5が主に使用されています。
VRAMの用途
VRAMは、レンダリングされた画像を走査表示するまでの
バッファとして使用されるのが主な用途です。しかし、用途はそれだけにとどまりません。レンダリング過程で使用される頂点データ、
テクスチャデータなどもVRAMに一時的に保存されます。これらのVRAM上でのデータ配置は、システムアーキテクチャによって大きく異なります。
VRAM上のデータ配置方法はいくつかあります。プレーンドアクセス方式では、カラーコードのビットごとにデータを配置し、パックド
ピクセル方式ではバイトごとに配置します。また、キャラクタ単位で配置する方式や、プログラマブル・キャラクタ・ジェネレータなども存在します。
ポリゴンに
テクスチャマッピングを施す際に、
テクスチャデータを格納する領域が
テクスチャバッファです。高精細化に伴い、
テクスチャデータの大容量化が進んでいるため、現代のGPUではVRAMを節約するためにデータ圧縮機能が搭載されていることが多いです。
Z
バッファは、
ポリゴンを重ね合わせる際の深度情報を格納する領域です。Zソートのような初期の方式では、
ポリゴン同士が複雑に重なる場合に表示が不正確になることがありましたが、Z
バッファによって
ピクセルごとの深度情報を管理することで、より正確な表示が可能になりました。ステンシル
バッファは、マスク情報を格納し、描画領域のクリッピングなどに使用されます。
頂点
バッファは、
ポリゴンの頂点情報(位置、色など)を配列形式で格納します。インデックス
バッファは、頂点
バッファを参照するためのインデックス配列を格納します。定数
バッファは、変換行列、材質情報、光源情報などの定数値を格納します。DirectXなどのAPIでは、定数
バッファの制御はプログラマーが行います。
レンダリングされた画像を、画面走査まで一時的に保存する領域がレンダリング
バッファです。レンダリング処理と画面走査のタイミングが異なるため、この
バッファが必要となります。
容量の少ないVRAMでも高度なグラフィックスを描画するために考案された方式です。走査線1本分のデータのみを保持することで、低価格なハードウェアでも高速な描画を実現していました。しかし、容量が小さいため、レンダリング処理が間に合わないと表示が欠けるという問題がありました。
画面1フレーム分のデータをまるごと
バッファリングする方式です。表示欠けを防ぐために多くの機種で採用されました。ダブル
バッファリング方式では、2つのフレーム
バッファを交互に使用することで、より滑らかな表示を実現します。
GPGPU(汎用計算向けGPU)では、ランダムアクセス可能な
バッファが必要になります。CUDA、OpenCL、DirectComputeなどのAPIでは、このような
バッファが標準化されています。
VRAMのバスアーキテクチャ
VRAMは高速性が求められるため、通常のRAMとは異なる工夫がなされています。
デュアルポートRAM
入力と出力のバスを独立させることでスループットを向上させたRAMです。高速な処理が可能ですが、回路が複雑で高価です。
UMA(ユニファイドメモリアーキテクチャ)
VRAMを専用のメモリとして持たずに、メインメモリの一部を共有する方式です。コストを抑えられる反面、描画性能は低下する可能性があります。AGPなどもこの方式の一種です。近年は、
CPUとGPUでメモリマップを統合したhUMAも登場しています。
VRAMは、
コンピュータグラフィックスの進化とともに、常に高速化、大容量化が進んでいます。今後も、より高性能なVRAMの登場が期待されます。