VRAM
出典: フリー百科事典『ウィキペディア(Wikipedia)』
VRAM (ブイラム, Video RAM)は、コンピュータなどにおける、ディスプレイに対するビデオ表示部分のメモリ(記憶装置)として使われるRAM。専用のデュアルポートのものもあれば、メインメモリと同じDRAMやSRAMを利用したものもある。
狭義のVRAMとは、ビデオ描画に適したデュアルポートRAMのことのみを指す。
その主な用途はレンダリングした画面を走査するまでのバッファであるが、レンダリングに際して用いるテクスチャなどの素材をバッファリングしたりするなど、中間の処理にも用いられる。これらの構成は各機種のアーキテクチャによって大きく異なる。
VRAMを用いたシステムのメモリ空間は、主記憶装置と同じアドレス空間を持つ場合と、グラフィックコントローラ(CRTC、VDPなど)が独立したアドレス空間を持つ場合がある。
VRAMにカラーピクセル(画素)を配置する方法としては、カラーコードのビットごとに配置するプレーンドアクセス方式(フレームアクセス方式)、カラーコードのバイトごとに配置するパックドピクセル方式(ビットマップ方式)、キャラクタ単位で配置するキャラクタグラフィック・PCGなどがある。
目次 |
[編集] 素材のバッファ
VRAMの用途のひとつに、レンダリングに用いる素材のバッファリングがある。設計や用途にも依存するが、レンダリングに際してはグラフィックコントローラーからこれら素材に対して頻繁にアクセスする場合が多く、VRAMの重要な用途のひとつとなっている。
[編集] テキストRAM
RAMの容量が小さかったころは、高度なグラフィックスを保持しておくことは困難であった。そこで初期のコンピュータでは、キャラクタ(文字)のみの描写に特化したテキスト(文章)画面を持っていた。これは画面上に表示する文字のキャラクタコードのみをVRAMに記憶し、走査時にグラフィックコントローラがフォントデータを参照しながら文字として展開するものである。しかしDOS/VやGUIなど、文字をグラフィックスで描くシステムが主流になると、ソフトウェアレベルでの処理に代替していった。ただし現在のPCでも互換性確保のためにBIOSレベルではこの機能を持っている。
ゲーム機などでも、得点や固定背景を描くためのBG(バックグラウンド)と呼ばれる描画面を持っていたが、これもポリゴン描写が主流になると廃れていった。
[編集] テクスチャバッファ
ポリゴンにテクスチャマッピングを施す際、その素材となるテクスチャのデータを格納するための領域である。
画像の高精細化にともない、テクスチャのデータも大容量化の傾向にあるため、近年のGPUなどはテクスチャバッファに対してデータを自動的に圧縮格納してVRAMを節約する機能を持っていることが多い(例:S3TCなど)。余談だが、プレイステーション2のGraphics Synthesizerチップは、VRAMの容量がきわめて少ないにもかかわらず、このテクスチャ圧縮機能を持っていないことが大きな欠点として指摘されている。
[編集] Zバッファ
画面上へポリゴンを重ね合わせる際に、その優先順位を決定するための深度情報(およびその格納領域)がZバッファである。(概念についての詳細は該当項目を参照のこと)
初期のポリゴン描画システムでは、Zソートという簡易的な方式を用いていた。これはポリゴン1枚ごとに深度情報を持たせるものであったが、ポリゴン同士が絡み合うように配置された場合には意図されたような重ね合わせにならない場合があった。Zバッファはこれを改め、ピクセルごとに深度情報を持たせたものである。比較的正確な表示が可能になった一方、情報量や処理負荷は増大したため、GPUの近傍にデータの格納領域が必要となった。
[編集] レンダリングバッファ
レンダリングにかかる時間は、描画の内容やハードウェアの構成によって大きく異なる一方、画面の走査は特定のタイミングでおこなわれる。レンダリングされた画像(レンダリングの過程も含まれる場合がある)を走査するまでの間保持しておくメモリがレンダリングバッファである。
[編集] ラインバッファ
小容量の時代であっても高度なグラフィックスを描く方法が工夫されていた。それは走査線1本分のみのグラフィックデータを保持するラインバッファである。これは低価格のハードウェアで高速に描画する必要のあったゲーム機などに多用された。スプライト、スクロール面、BG面などの画面情報を読み出し、それをVDPが走査線ごとにレンダリングしたのである。
走査線1本分のみのデータなので容量が少なくても済む一方、レンダリングのタイミングが厳しく、処理が間に合わないとスプライトなどの表示が欠けてしまう場合がしばしば見られた。
これもRAMの大容量化にともない消えていった。
[編集] フレームバッファ
画面の1フレーム分をまるごとバッファリングするもの。
汎用性の求められるコンピュータでは、画面の表示欠けが許されないとされる場合が多かった。これを解決するために、画面1フレームをまるごとバッファリングすることのできるフレームバッファが多くの機種で採用された。レンダリング処理が間に合わない場合でも表示欠けは発生しないが、かわりに見た目のフレームレートが低下する。(いわゆる処理落ち)
初期のパソコンでも中級機以上のものはフレームバッファに似たグラフィックVRAMを保有していた。現代から見れば色数が少なかったもののVRAMの使用量は比較的多く、それらがゲーム機やホビーパソコンなどに比べて非常に高価な理由のひとつであった。
ゲーム機でもRAMの容量価格比が増大すると、画面1フレームをまるごとバッファリングすることのできるフレームバッファが使われるようになり、本格的な3D描画が可能となった。
高いフレームレートで高度なレンダリングをおこなうため、しばしばダブルバッファという方式が採られる。これはフレームバッファを2フレーム分用意し、片方がレンダリングの結果を出力している間に、もう片方に少しずつレンダリングを重ねていくといったものである。高度なグラフィックスをリアルタイムで動かすゲームのCGにとって重要な技術だが、VRAMを大量に消費するためゲーム機では容量が不足しやすいといったジレンマがある。
[編集] VRAMのバスアーキテクチャ
VRAMはその用途から高速性が求められるため、しばしば通常のRAMとは異なる工夫がなされる。
[編集] デュアルポートRAM
VRAMの主用途はバッファであるため、入力用のバスと出力用のバスを独立させることによってスループットを改善させたものである。半導体が持つ能力の割に高速な処理が可能となるが、I/O回路が複雑となるため通常のRAMよりも割高である。そのためデュアルポートRAMを採用しないシステムも非常に多い。
[編集] UMA
描画を走査に間に合わせる必要があることから、VRAMは通常のワークRAM(メインメモリ)よりも高速なものを用いることが多いが、その分素子が高価となる。そこで高速処理が必要な部分だけに高価な素子を用い、比較的低速でも構わない部分はメインメモリに間借りする。このように、メインメモリの領域から他用途のメモリを間借りすることをUMA(ユニファイドメモリアーキテクチャ)という。
UMAによるVRAM確保の代表例として、AGPが挙げられる。これは高速性を求められるフレームバッファのみをビデオカードに実装し、その他のメモリをCPUのワークエリアから間借りするものである。
ただしPCのオンチップグラフィックスなど、安価で描画能力を重視しないシステムでは、専用のVRAMを持たずに全てUMAのみでまかなう場合も多い。また、画素数の割に高度な描画をおこなうシステムでは、逆にテクスチャバッファなどへ専用VRAMを充当しつつ、フレームバッファのほうをUMAでまかなってしまう場合も存在する。