回答:
「基本的な指示はありますか...」はい、正確に。すべてのGPUは、いくつかのシンプルなインターフェイスのいずれかを実装する必要があります-それらは「命令セット」と呼ばれるにはあまりにも原始的です-OSに含まれるプラットフォームファームウェア(「BIOS」または「UEFI」) 。最近の「シンプルなインターフェース」の通常の選択は「VGA」(「Video Graphics Array」)です。これは、元々その規格のビデオカード用に定義されたレジスタレベルのインターフェースです。(現在30歳以上!)
たとえば、Windowsシステムのデバイスマネージャーがグラフィックスカードを「Microsoft Basic Video Adapter」として識別した場合、OSはカードの特定のドライバーを見つけることができず、代わりにVGA互換ドライバーをロードしました。
まあ、技術的には、Windowsは常にそのドライバーをロードし(たとえば、ブート進行画面を表示できるように)、その後(ブートのかなり後期に)グラフィックスカードの「実際の」ドライバーを識別してロードします。
VGA規格は、いくつかの低解像度のグラフィックモードとテキストモードのみをサポートし、GPUで「プログラムの実行」または「命令」と呼ぶことも含まれません。基本的に、システムファームウェアまたは「ベースビデオドライバー」は、単にそれを目的のモードにし、ビットマップにビットを書き込みます。ビットマップのビットは、画面上のピクセルに直接対応します。線または曲線を描くために実行する必要がある演算は、CPUで実行されます。これは非常に低レベルで遅い方法で、画面に物を表示します。ただし、ファームウェアの表示やファームウェアとの簡単なやり取り、OSインストールや初期の起動進行画面などには十分です。
古いハードウェアがどのように機能したかを説明することにより、このすべての背後にある「ブードゥー」を解消しようとします。最近のGPUはこのようには機能しませんが、CPUとグラフィックスカードのインターフェイスをエミュレートします。
80年代および90年代初期のグラフィックチップ/カードは、命令を実行せず、むしろ固定回路を備えていたため、クロックスピードに比べて非常に迅速に出力を生成する必要がありました。彼らは行ったとおりにRAMからデータを吸い出しただけなので、CPUはRAMの適切な場所にデータをダンプするだけで、グラフィックスチップはそれを拾い上げて画面に表示します。CPUは、グラフィックチップ上のさまざまな構成変数を設定することもできます。
80年代には、ホームコンピューターには、いくつかの固定された動作を備えた本当に「ダム」なグラフィックチップがありました。パイプラインを逆方向に通過する場合、最も意味があります。
CRTモニター
これらのモニターにはアナログ入力が必要でした。言い換えれば、より高い電圧=より明るい出力です。カラーモニターには3つのチャネル(赤、緑、青(または、たとえばYUVまたはYIQ))がありました。これらの電圧は電子ビームの強度を調整しました。シンプルなもの。
CRTモニターは、文字通り電磁石を使用して電子ビームを左から右に偏向し、次に少し下から始めて左から右に、というように上から下へと続きます。その後、先頭に戻って繰り返します。
DAC
グラフィックチップには「デジタルアナログ」コンバーター(非常に一般的な電気部品)がありました。これにより、デジタル値(2、4、8ビットなど)がモニターに供給できる電圧に変換されました。
走査
グラフィックスチップは、適切な値をDACに送信して、適切なタイミングで対応する電圧を出力できるように、電子ビームを「維持」する必要がありました。(これにはクロックは使用されましたが、ここでは説明しません。)ここで命令を実行する時間はありませんでした。すべてがハードワイヤードであり、少数の固定数のクロックサイクルがかかりました。
ビデオモード
初期のチップはそれほど高速ではなく、RAMが制限されていました。このため、背景色、フォントの選択、カーソルの位置とサイズ、パレットの選択、スプライトなど、さまざまなモードやその他の構成パラメーターを選択できる傾向がありました。ほとんどが高解像度の「文字のみ」モードと低解像度のピクセル単位モードを提供していました。
3つの注目すべきVGAモードは次のとおりです。
ペイントピクセル
非常に大まかに、グラフィックシステムに応じて、パイプラインは次のようになります。
現在のピクセル位置⇒文字/フォント/スプライト/ピクセル/設定データを処理⇒ピクセル値⇒パレット⇒DAC
いくつかのRAMの場所から読み取る必要があるのは、その2番目のステップです。たとえば、テキストモードでは、1バイト文字が検索されます。これにより、フォントテーブルへのインデックスが形成されます。このテーブルから少し調べて、そのピクセルを前景色にするか背景色にするかを示します。その前景/背景色を取得するために、3番目のバイトがフェッチされます。全体として、RAMから3バイトが読み取られます。
しかし、この「フロー」は、前述のフローとまったく同じように配置された単純な固定回路のセットです。
メモリバスインターフェース
Intel CPUには、IOバスと呼ばれるこの厄介なレガシーなものがありますが、重要ではないので、そこにないふりをします。
CPUは、メモリバス上でREADまたはWRITE要求とアドレスをブロードキャストすることにより、RAMにアクセスします。有効なアドレスのほとんどはRAMからの応答を引き出しますが、特定の範囲は代わりにデバイスによって処理されます。たとえば、特定のアドレスから読み取ると、キーボードのキー入力に関する情報が得られる場合があります。
「グラフィック範囲」の適切な部分に書き込むことで、画面の内容を書き込むことができ、グラフィックカードの構成パラメーターを設定することもできます。「ダム」グラフィックチップは、命令を実行しません。それはただ動き続け、数バイトが回路を流れて電圧を出力します。
VGAでは、実際にはグラフィックカードにRAM があります。これは、グラフィックRAMに書き込まれる前に前処理されたデータにグラフィックカードを構成して、状況によってパフォーマンスを向上できるためです。
VESA
VGA後のグラフィックスカードは、より高い解像度と良好な色深度を提供しましたが、同様の原理で機能しました。多くの最新のグラフィックスカードは、これとの互換性を提供して、起動中の解像度を高めます。しかし、VGAは事実上すべてのカードがエミュレートする「確実な」ものです。