11

コンピューターはどのようにして最下位レベルで画面に何かを描画しますか (X11 のような外部ライブラリについては何もしません)? これを行うアセンブリコマンドがあるはずですか? CPU は画面に表示される内容を正確にどのように制御しますか?

4

3 に答える 3

9

基本的に、ハードドライブから読み取る方法や効果音を再生する方法と同じです。

特定のデータを特定のメモリ アドレスに書き込むことにより、メモリ コントローラによって問題の外部ハードウェア (これらの場合はハード ドライブ、GPU、またはサウンド カード) にマップされます。ハードウェアがこれらの書き込みを受け取ると、書き込まれたデータを何をすべきかについての命令として解釈します。

CPU は、システムの他の部分から分離されています。実際に知っているのはメモリバスだけです。そのバスでデータを読み書きできます。基本的にはそれだけです。これらの読み取り/書き込みの一部はメモリに送信され、その他はさまざまなハードウェアの制御レジスタ、または存在する場合はデバイスのメモリにマップされ、CPU が他のデバイスと通信できるようになります。

最新の GPU には、データをロードできる独自の専用 RAM があります。そのため、CPU は GPU に命令を送信し、メイン メモリ内のどこに画面のコンテンツを生成するために使用されるデータを見つけ、それをどう処理するかを指定します。次に、GPU はそのデータをメイン メモリから独自の RAM にロードし、そこで必要な変換と計算を実行してから、モニターが常に読み取っているフレーム バッファーにデータを書き込みます。

于 2011-09-17T20:25:42.477 に答える
5

通常、ビデオ カードにはフレーム バッファと呼ばれるメモリ領域があります。そこに値を書き込むことは、ピクセルの色の値を確立することを意味します。

フレーム バッファは、各ビットが画面上のピクセルを表す 2D 配列のようなものと考えることができます。色を表現するには、さまざまなレベルのバッファーが使用されます。現在、一般的なフレーム バッファには 24 レベル (RGB カラー コンポーネントごとに 8 つ) があり、2^24 の可能な色の定義が可能です。

最近では一般的に、フレーム バッファへのアクセスは、パフォーマンスの問題のために GPU を介して行われます。CPU がこのタスクを実行できたとしても、非常にコストがかかります。

于 2011-09-17T20:06:28.493 に答える
3

ビデオ画面専用のメモリがどこかにあります。画面上の各ピクセルには、一定量のメモリがあります。パレットや白黒などの従来のソリューションを避けて、通常、特定の数のビットを赤に、いくつかのビットを青に、いくつかのビットを緑に使用します。これらの色を追加すると、白を含むすべてを取得できます (たとえば、それらがペイントで使用される原色ではないことはわかっていますが、動作することを心配しないでください)。通常、24 ビット カラーは、赤の 1 バイト、緑の 1 バイト、青の 1 バイトの 8 ビットを管理しやすく、メモリなどを配線するのが簡単なためです。

ビデオ ハードウェアは常にこのメモリを読み取り、任意のテクノロジを使用してモニターに信号を送信します。この信号は、特定のピクセルを照らす赤、緑、青の量を本質的に伝え、常に最新の情報で画面をスキャンします。

このメモリを使用するための一般的なテクニックのいくつかは、2 つのエンティティがメモリを読み書きできるデュアル ポートと呼ばれるものを使用することです。または、2つの思い出を持ち、それらを交換すること。どちらの場合も、別のエンティティ、プロセッサ、CPU 自体、または最近ではビデオ カード/チップ内の多くの小さなグラフィック プロセッサがあります。どちらの場合でも、一部のソフトウェアが実行され、すべてのピクセルの位置と色が計算され、ビデオ メモリに書き込まれます。使用されるメカニズムに応じて、メモリのビデオ/モニター側が意味のある変更を行います。入力している文字の一部のピクセルのみを画面上の 1 回のパスで表示し、残りのピクセルを次のパスで表示したくない場合、ユーザーがちらつきに気付く可能性があります。

ビデオ メモリは通常、システム メモリのようにマップされます。プロセッサは、ビデオ以外のシステム メモリにアクセスするために使用するのと同じ命令を使用する可能性があります。確かに gpu は可能ですが、CPU には通常、uart、gpio、ビデオ、usb、ストレージなどの周辺機器固有の命令はありません。周辺機器は通常、CPU のメモリ空間内の特定のアドレスとしてマップされ、通常のメモリ読み取り/書き込み命令が使用されます。 .

特殊なタイプのアルゴリズム、そしてさらに重要なことに、ビデオ ゲームに必要な膨大な数の計算のために、ビデオ カードは非常に多くの特殊で単純なグラフィック プロセッサを使用します。これらのプロセッサは、昨日、今日、または明日、ビデオ メモリ固有の命令を持っている可能性があります。パフォーマンス、サイズ、パワー、またはその他の理由で。おそらく変更されないのは、フレームバッファメモリを持つモデルです。これは、ビデオハードウェアが画面を描画できるようにモニターに送信する信号を作成するために使用する、画面に相当するピクセルを保持するメモリです。

于 2011-09-17T22:51:34.833 に答える