web-dev-qa-db-ja.com

PCIExpress-メモリの読み取り/書き込みトランザクションにおけるメモリアドレス指定と物理メモリ

PCI ExpressトランザクションでメモリBAR(ベースアドレスレジスタ)と物理メモリの間のリンクを見つけようとしています。前回の 質問 CPUが特定のメモリアドレスで読み取り/書き込みを行うとどうなるかを理解し始めました。次に、PCIExpressトランザクションについて詳しく説明する必要があります。

物理RAMがすべてのPCIExpressメモリ読み取り/書き込みトランザクションに関与しているかどうかを理解する必要があります。

1)デバイスのメモリBARによってアドレス指定された物理メモリは、デバイス自体に存在しますか?それともRAMにありますか?

2)内部物理メモリなしでPCI Expressデバイスへのメモリ読み取り/書き込みトランザクションを開始し、メモリアドレスを指定すると、内部物理メモリにマップされていない場合、デバイスはどのようにアクセスできますか?デバイスがデータを含むトランザクションパケットを返す場合、ルートコンプレックスはデータをCPUに渡し、物理RAMに挿入しますか?

2
Jacopo Reggiani

メインシステムRAM BARとは関係ありません。BARは、これらのアドレスへのアクセスをデコードするようにデバイスを構成するだけです。通常、デバイスには多数の構成レジスタが含まれています。BARにより、CPUはアクセスできます。これらのレジスタあたかもそれらはRAMのブロックでしたが、実際にはRAMはありません。PCIeルートコンプレックスは、ほとんどのメモリアクセスをRAMにルーティングし、アドレスのブロックにアクセスするように構成されています。 3〜4 GBの領域では、代わりにPCIeバスに接続します。特定のデバイスのBARは、それらのアドレスの特定のブロックに応答するように構成します。

一方、一部のデバイス、特にビデオカードには、実際にはBARを介してアクセスされる独自のRAMが搭載されています。

5
psusi