3

私は本当にVGAの内外を知りたいのではなく、VGAがどのように機能するか(および統合されたグラフィックス)の基本原則を知りたいと思っています.IntelのWebサイトには次のように書かれています-

ここに画像の説明を入力

この盗まれたメモリは VGA アダプタのフレーム バッファとして使用され、VGA グラフィックス コントローラによる読み取り/書き込みはそこから行われますか?

盗まれた 1MB の VGA メモリを使用したシステムの例 -

ここに画像の説明を入力

上記のシステムが VGA モードで実行されていて、従来の VGA アドレス範囲 (0xA0000 - 0xbffff) に何かが書き込まれた場合、そのプロセスはどうなるでしょうか?

現在、メモリ コントローラが CPU から VGA アダプタに転送し、グラフィック変換テーブル (GTT) を使用して、これを DRAM の上部にある 03F0_OOOOh - 03FF_FFFFh の範囲の物理アドレスに変換するというのが私の理解です。

これは、VGA アダプタが MMIO のアドレス範囲を使用しているため、従来の VGA メモリ範囲 0xA0000 - 0xbffff が DRAM でアクセスできないことを意味しますか?

誰かがそれらの質問を手伝うことができれば、それは大歓迎です.

ありがとう。

4

1 に答える 1

2

VGA 用に直接何かを書いたのはかなりの年月だったので、それを心に留めておいてください。

古いレガシーのもの ( CGA/EGA,VGA ) は、すべてのVRAMメモリ アクセスを 2 つのセグメントのみ (2 x 64KByte) にマップしていました。

  1. グラフィックモード

    A000:0000 - A000:FFFF
    
  2. テキストモード

    B800:0000 - B800:FFFF
    

    そのため、ブース#1#2 64 KByteのメモリ チャンクには直接アクセスできず、代わりにVGAが独自のメモリをそこに転送します。統合カード + 共有メモリの場合、独自のメモリがないため、チップセットはグローバル メモリ (通常はトップ アドレス空間) からメモリを取得します。その場合、ハードウェアからメモリにアクセスすることはできません(チップセットの機能を使用しない限り)。グローバル メモリ内のメモリ空間は通常、リマップされるか、ROMのシャドウに使用されます。

  3. gfx-BIOS

    すべてのレガシー gfx カードには、独自の「BIOS FLASH/EEPROM/EPROM/PROM」メモリがあります。それがどのように機能するか正確には思い出せませんが、覚えているように、拡張BIOS領域は

    C000:0000
    

    ここで、すべてのBIOS対応HWがBIOSメモリをマップします(gfx カードだけでなく、セグメント全体のサイズだけではありません)。

    64KB現在、VRAM以上を必要とする多くの gfx モードがあるため、gfx BIOSを呼び出して適切なメモリ セグメントをマップするか、gfx IOポートでのIOA000:0000操作による制御レジスタによって設定します。Gfxカードのメモリを再マップすると、それを使用できます...

  4. VESA

    VESA VRAMは、古いレガシー gfx のものと同じ方法でアクセスできますが、VESAは、 VRAM全体を単一セグメントだけでなくメモリにマップできるLFB (リニア フレーム バッファ) サポートを追加し、拡張メモリを使用することもできます (基本的にはそうではありません)。多くの使用)。

私が前に書いたように、私はこのようなものを扱っているので、間違っている場合は編集またはコメントを追加してください...

于 2014-04-25T13:09:47.177 に答える