5

数年前に書いたデバイス ドライバを 32 ビットから 64 ビットに移植することを評価しています。物理デバイスは 32 ビット PCI カードです。つまり、デバイスは 32 ビットですが、Win7x64 からアクセスする必要があります。デバイスは、Windows の世界にいくつかのレジスタを提示し、ドライバーが割り当てたメモリのチャンクに大量のバス マスター データを転送します。

Microsoft のドキュメントで、ドライバーが 64 ビット DMA をサポートしているかどうかを通知できると読みました。そうでない場合、DMA はダブル バッファリングされています。ただし、これが事実かどうかはわかりません。私のドライバーは完全な 64 ビットのドライバーである可能性があるため、プロセッサーのアドレス空間で 64 ビットのアドレスをサポートできますが、実際の物理デバイスはそれをサポートしません。実際、デバイス BAR は 4 GB 未満でマップする必要があり、デバイスは 4 GB 未満でバス マスターを実行するために PC RAM アドレスを取得する必要があります。これは、ドライバーが常にダブル バッファリングを行うということですか? これはパフォーマンスが非常に重要なプロセスであり、ダブル バッファリングによってシステム全体が機能しなくなる可能性があります。

もちろん、新しい 64 ビット PCI (または PCI-E) ボードを設計することは論外です。

このプロセスに関するリソースを提供してくれる人はいますか (MS ページは別として)。

どうもありがとう!

4

2 に答える 2