この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)
出典検索?: "VRAM"
VRAM (ブイラム, Video RAM)は、コンピュータなどにおける、ディスプレイに対するビデオ(動画像)表示部分のメモリ(記憶装置)として使われるRAM。グラフィックスメモリまたはビデオメモリ[1]とも呼ばれる。専用のデュアルポートのものもあれば、メインメモリと同じDRAMやSRAMを利用したものもある。かつて、グラフィックス用フレームバッファ(Framebuffer)のために用意したメモリをG-RAMと表記していた時期もあるが、意味としては等価である。GPU上で汎用計算を行なうGPGPUが普及してからは、グラフィックス用途に限らないデータの処理用途にも転用されている。 通常のDRAMをVRAMとして使用する場合、グラフィックコントローラ (CRTC、VDPなど) とCPUが同時にVRAMにアクセスすることによる競合を避ける必要がある。この解決策としてグラフィックコントローラがバスの空きをチェックして競合を避けるサイクルスチールという技法が使われた。また、CPUとグラフィックコントローラで同時にアクセス可能なデュアルポートRAMと呼ばれるメモリがVRAMとして使われることもあった[2]。@media screen{.mw-parser-output .fix-domain{border-bottom:dashed 1px}}このデュアルポートRAMがVRAMとして広く使われた時代があったためか[独自研究?]、本来の言葉の意味からすると誤用ではあるが、動画像処理用途ではなくともデュアルポートRAMのことをVRAMと呼ぶ用例が過去には多くみられた[要出典]。広義のデュアルポートRAMとしては1995年にサムスン電子が開発したWRAM (Window RAM) がある。WRAMはデュアルポート構成なだけでなく、チップ上に描画向けの簡単な演算機能を持っており、描画の高速化に一役買っていた。WRAMはMatrox MillenniumやMillennium IIで採用されたが、それ以後はデュアルポートRAMは主流ではなくなっている。 2000年台以降ではVRAMの高速化が進み、GDDRと呼ばれる高速処理専用のメモリ規格が登場[2]。3次元コンピュータグラフィックス描画における莫大なデータの高速転送を実現している。主な規格として、GDDR4、GDDR5、GDDR6などがビデオカードに搭載されている。GDDR系統とは別に、根本的なブレイクスルーとなるTB/secの帯域幅を実現するメモリ規格であるHBM (High Bandwidth Memory) が考案され、2015年6月にリリースされたAMD Radeon R9 Fury XにHBM第1世代が世界で初めて搭載された[3]。コストパフォーマンスの観点から、オフィス用途ではDDR4、DDR5などのDDR系統が、ゲーム用途ではGDDR系統が主に用いられている一方、高性能だが高価なHBMはプロフェッショナルグラフィックス用途やHPC用途(特に人工知能の研究開発で顕著)を中心に利用されている。 その主な用途はレンダリングした画面を走査するまでのバッファであるが、レンダリングに際して用いる頂点データやテクスチャなどの素材をバッファリングしたりするなど、中間の処理にも用いられる。これらの構成は各機種のアーキテクチャによって大きく異なる。 VRAMを用いたシステムのメモリ空間
概要
VRAMにカラーピクセル(画素)を配置する方法としては、カラーコードのビットごとに配置するプレーンドアクセス方式(フレームアクセス方式/水平型VRAM)、カラーコードのバイトごとに配置するパックドピクセル方式(ビットマップ方式/垂直型VRAM)、キャラクタ単位で配置するキャラクタグラフィック、プログラマブル・キャラクタ・ジェネレータなどがある。 VRAMの用途のひとつに、レンダリングに用いる素材のバッファリングがある。設計や用途にも依存するが、レンダリングに際してはグラフィックコントローラーからこれら素材に対して頻繁にアクセスする場合が多く、VRAMの重要な用途のひとつとなっている。なお、近代的なグラフィックスデバイスでは必ずしも用途(メモリタイプ)ごとに専用のハードウェアメモリ領域があるというわけではなく、後述するレンダリングバッファ・ランダムアクセスバッファを含め、物理的には均等なハードウェアメモリ領域を必要に応じて切り出して、ドライバーレベルで用途別(読み取り専用/書き込み専用/読み書き両用)に最適化したアクセス方法がなされることになる。 コンピュータにおけるRAMの容量が小さかった時代では、文字のグリフのような高度なグラフィックスデータをそのまま保持しておくことは困難だった。そこで初期のコンピュータでは、キャラクタ(文字)のみの描写に特化したテキスト(文章)画面を持っていた。これは画面上に表示する文字のキャラクタコードのみをVRAMに記憶し、走査時にCRTコントローラがVRAMの値を元にあらかじめキャラクタジェネレータROM内に用意されたフォントデータを文字として展開するものである。 国産機種の場合、CG-ROM内には、ASCIIコードに含まれる英数字の他、空き部分には、カタカナ、記号等が割り当てられ、記号は機種によって異なったほか、平仮名のフォントを持っている機種も存在した。通常、書き込む値は、ASCIIコードと一致していたが、MZ-80シリーズと、その後継機はディスプレイコードという特殊な並びのデータを書き込むようになっており、テキストモードしか持たない同機では、キャラクタコードの一部を4×4のピクセルに見立て、その組み合わせである空白を除いた15個のパターンを割り当て、80×50ピクセルのビットマップパターンとして見立てる様になっており、擬似的に超低解像度のビットマップを実現していた。広告では「セミグラフィック」と記述されている。 テキストVRAMには、その文字の属性、色等を示すアトリビュートエリアが文字そのもの以外の領域として多くの機種が持っていた。グラフィックスプレーンを兼用する場合は、その場所のデータをどう扱うかというものや、純粋にテキスト用のエリアであっても、複数の文字単位ないし、文字単位で、文字色、背景色、ブリンク、キャラクタテーブルの指定等を行えるようになっていた。これらの構造は、ハードウェア的にキャラクタディスプレイの機能を持たない機種であっても、サブプロセッサ領域内に相当する領域が設けられており、少ないデータによって文字列を処理することを可能にしていた。 また、キャラクタジェネレータROMは、単色、256パターンのフォントを書き込まれたROMであることが多かったが、この部分をRAMにし、物によっては、カラーでデータを持てるようにしたものが、PCGである。ワープロや、一部機種の外字、ゲーム機のBG画面のパターン等も同様の機能と利便性を提供する。 これらの実装では、1文字に付き、文字種の指定が1バイトとなっており、空白を含め、256種しか取り扱えず、英語圏では有用ではあったものの、日本語の文字情報を取り扱うには仕様として不足していた。そこで、テキストVRAMのテキストを取り扱う部分自体を拡張した、漢字テキストVRAMをハードウェア的に持つようになった機種も生まれた。8ビット機では、X1turbo、MZ-2500。16ビット機ではPC-9801シリーズがこれらの仕組みを持っており、グラフィックスプレーンにソフトウェア的に処理するよりも格段に早く、快適な日本語のテキスト処理を可能としていた。 その後、ハードウェアの進化に伴い、日本語処理もソフトウェア的に処理するDOS/Vや、文字の座標が不定であるGUIなど、速度的に問題がなくなったり、ハードウェアによって表示座標や文字種、フォントが固定されることが問題になる実装が出てくると、ハードウェアによるテキスト処理は見られなくなっていった。ゲーム機などにおけるタイルパターン等の実装も、ポリゴンとテクスチャマッピングを基準とした構造のハードウェアが増えるにつれ、前述のような構成・機能を持つことは無くなった。 2019年5月現在のPCでもPOST画面等、最低限のシステムで文字情報が表示できるよう、同じ手順で文字を表示する仕組みを備えている。 ポリゴンにテクスチャマッピングを施す際、その素材となるテクスチャのデータを格納するための領域である。 画像の高精細化にともない、テクスチャのデータも大容量化の傾向にあるため、近年[いつ?]のGPUなどはテクスチャバッファに対してデータを自動的に圧縮格納してVRAMを節約する機能を持っていることが多い(例:S3TCやASTC
素材のバッファ
テキストVRAM「キャラクタ (コンピュータ)#キャラクタディスプレイ」も参照
テクスチャバッファ