デュアル ポート ビデオ RAM ( VRAM ) は、ダイナミック RAM (DRAM) のデュアル ポート版であり、かつてはグラフィック アダプタのフレームバッファを格納するためによく使用されていました。
デュアル ポート RAM を使用すると、CPU は従来の DRAM チップと同様にメモリにデータを読み書きでき、さらにデータを読み出す 2 番目のポートが追加されます。これにより、ビデオ ディスプレイ コントローラ(VDC) とのインターフェイスが容易になり、タイミング信号がメモリに送信され、画面を描画するときに正しい順序でデータが受信されます。CPU と VDC は異なるポートで同時にメモリにアクセスするため、デュアル ポート RAM では VDC がメモリを使用している間に CPU を一時停止する必要がなく、関連する待機状態が排除され、システム全体のパフォーマンスが向上します。
デュアル ポート RAM は、1980 年代半ばから 1990 年代半ばにかけて一般的でした。それ以降、新しい形式の高性能メモリが使用されるようになり、最終的にはデュアル ポート設計に取って代わりました。これらの他の形式のメモリはビデオ メモリとも呼ばれ、VRAM とも呼ばれるため、この古い形式のメモリと混同されることがあります。

歴史
初期のコンピュータは、従来のテレビや、複合ビデオ入力に対応したテレビの単純な変換機に出力するビデオデータを保存するためにダイナミック RAM [a]を使用していました。このようなディスプレイで作業するには、ビデオハードウェアが非常に正確なタイミングで信号を出力することが非常に重要です。当時のメモリの動作速度では、ビデオハードウェアに供給するデータの読み取りにメモリデバイスの可能なパフォーマンスの多くを費やしていました。これは、ビデオシステムが読み取るために中央処理装置(CPU) がメモリにデータを書き込む必要性と矛盾しており、両方が同時に同じメモリを使用することはできなかったためです。
タイミングの問題を回避するために、2 つの一般的な解決策が使用されました。より高価なシステムの場合、ビデオ システムは専用のメモリを持ち、CPU がデータを保存するための別のシステムを使用しました。これにより、メモリの競合の可能性が排除されましたが、メモリが非常に高価な時代に別のメモリが必要になるという代償がありました。また、ほとんどの場合、低速のシステム バスを介して通信するため、画面の変更速度が制限され、インタラクティブなグラフィックスが困難でした。ほとんどの家庭用コンピューターで使用されているもう 1 つの解決策は、単一の共有メモリ バンクを使用し、ビデオ ハードウェアがメモリへのアクセスを制御し、必要に応じて CPU を一時停止できるようにすることでした。これにより、CPU が繰り返しこれらの「待機状態」に置かれるため、コンピューティング パフォーマンスが低下する可能性がありますが、コストが低く、CPU がより迅速にディスプレイを更新して、よりインタラクティブ性を提供できるという利点がありました。
1980 年代初頭までに、より大きなフレーム バッファーを必要とする高解像度のモニターの導入と、高解像度と全体的なパフォーマンスの高いグラフィカル ユーザー インターフェイス(GUI) の導入により、ビデオ システムのパフォーマンスはますます困難な問題になりました。メモリへのアクセスを慎重に制御して競合を減らすために、 Amiga Agnusなどの複雑なシステムが登場しましたが、これらのシステムによって問題は軽減されたものの、完全に解消されたわけではありませんでした。
解決策は、CPUとビデオハードウェアが同時にアクセスできるメモリを使用することでした。これは、 1980年にIBMリサーチのF. Dill、D. Ling、およびR. Matickによって発明され、1985年に特許が発行されました(米国特許4,541,075)。[1] VRAMの最初の商用利用は、1986年にIBMがRT PCシステム用に発表した高解像度グラフィックスアダプタであり、グラフィックスディスプレイの新しい標準を確立しました。VRAMが開発される前は、デュアルポートメモリは非常に高価だったため、高解像度のビットマップグラフィックスはハイエンドワークステーションに限定されていました。VRAMは全体的なフレームバッファスループットを改善し、低コストで高解像度、高速のカラーグラフィックスを可能にしました。現代のGUIベースのオペレーティングシステムはこれによって恩恵を受け、当時世界中で グラフィカルユーザーインターフェイス(GUI)が普及するための重要な要素を提供しました。
説明
ダイナミック RAM は、内部的にコンデンサの行と列の配列に配置されており、各行と列の交差点にはセル内の 1 ビットが保持されます。通常の使用では、DRAM にアクセスする CPU は、一度に少量のデータ (場合によっては 1バイト)を要求します。CPU が 1 バイトを読み取るために、DRAM は提供されたアドレスを一連の 8 つのセルにデコードし、それらのセルを含む行全体を読み取り、要求されたデータをラッチしてデータ バスで読み取れるようにします。当時、行の幅は一般的に 1,024 セルでした。
DRAM デバイスは破壊的であり、行の読み取りを行うと、その行のデータも消去されます。データを永続的にするには、読み取りの後に DRAM が同じデータをその行に書き戻す必要があります。これを実現するには、行全体に対して個別のラッチを含める必要があり、CPU が要求されたバイトを読み取っている間にデータが行に書き戻されます。プロセス全体を考えると、これは DRAM がデータの行全体を繰り返し読み取り、そのデータから 1 バイトを選択して残りを破棄し、すべてを再び書き戻すことを意味します。
VRAM は、行内の余分なビットを破棄せずに動作します。代わりに、行ストレージに読み込まれたデータは、2 番目のラッチ セットと関連するビット シフタにも送信されます。その時点から、シフタをトリガーすることでデータを 1 ビットずつ読み出すことができ、これを行うには 1 つのピンだけが必要です。VRAM には通常 2 つのアドレス バスがないため、CPU とグラフィックスはチップへのアクセスをインターリーブする必要がありますが、データの行全体がグラフィックス ドライバーに読み出され、その行が画面上の複数のスキャン ラインを表す可能性があるため、CPU に割り込む回数を大幅に減らすことができます。[2]
このような操作については、R. Matick、D. Ling、S. Gupta、F. Dill の論文「All points addressable raster display memory」(IBM Journal of R&D、Vol 28、No. 4、1984 年 7 月、pp. 379–393) で説明されています。ビデオ ポートを使用するには、コントローラはまず DRAM ポートを使用して、表示するメモリ アレイの行を選択します。次に、VRAM はその行全体をシフト レジスタである内部行バッファにコピーします。コントローラはその後、DRAM ポートを使用してディスプレイにオブジェクトを描画できます。一方、コントローラはシフト クロック(SCLK) と呼ばれるクロックを VRAM のビデオ ポートに送ります。各 SCLK パルスにより、VRAM は次のデータ ビットを厳密なアドレス順序でシフト レジスタからビデオ ポートに送ります。簡単にするために、グラフィックス アダプタは通常、行の内容、つまりシフト レジスタの内容がディスプレイの完全な水平線に対応するように設計されています。
SDRAMへの移行
1990 年代を通じて、多くのグラフィック サブシステムは VRAM を使用し、メガビット数がセールス ポイントとして宣伝されました。1990 年代後半には、同期 DRAMテクノロジが徐々に手頃な価格になり、密度が高くなり、VRAM に取って代わるほど高速になりましたが、シングル ポートでオーバーヘッドが多く必要でした。それでも、内部、オンチップ バッファリング、組織化といった VRAM のコンセプトの多くは、最新のグラフィック アダプタで使用され、改善されています。
参照
注記
- ^ また、初期のシステムでは、スタティック RAMまたはシフト レジスタが使用されていました。
参考文献
- ^ 特許 US4541075、2020年1月30日にオリジナルからアーカイブ(PDF)、2017年6月7日に取得
- ^ SM55161A 262144×16 ビット VRAM データシート(PDF) 、Austin Semiconductor、 2011-07-07 にオリジナル(PDF)からアーカイブ、 2009-03-02取得
