問題タブ [pci-e]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
4593 参照

c# - マザーボードの PCI(e) スロットにプラグインされている PCI デバイス (存在する場合) を特定します。

多くの Windows XP ワークステーションでハードウェア監査を実行するプログラムを C# で作成しています。

PCI バス (マザーボードに組み込まれている) を使用するオンボード デバイスではなく、マザーボード スロットを介して接続された実際のカードである PCI デバイスを特定する必要があります。

さまざまな WMI クラスを使用して、すべての PCI バスを使用するすべてのデバイスを正常に一覧表示できますが、オンボードのものとスロット経由で接続されているものを示すものはありません。

情報の取得方法や情報源 (Pinvoke、WMI、レジストリなど) が信頼できるものである限り、私はこだわりません。

ありがとうございました!

0 投票する
1 に答える
728 参照

linux - ISR 内の PCIe 読み書き

アルテラ FPGA PCIe コアで動作するように Linux PCIe ドライバーを変更しています。ドライバー コード内で pci_set_master(dev) を実行して、PCIe の読み取りと書き込みを機能させます。

ARM DMA を使用する代わりに、altera SG-DMA を使用して PCIe 転送を実行しています。転送を開始するには、FPGA DMA にイネーブル ビットを書き込む必要があります。イネーブル ビット レジスタに pcie write(barx,offset,data) を実行することで、完全に機能しています。

問題は、I/O 割り込みが発生したときにシステムで PCIe FPGA DMA を開始する必要があることですが、割り込みが発生したときに、ISR 内に pcie write(barx,offset,data) を配置すると、Linux 全体がそこでハングします。 .

誰もこれに直面したことがありますか?私を助けてください。前もって感謝します。

0 投票する
3 に答える
10100 参照

pci-e - PCIe エンドポイントはルート コンプレックス BAR にアクセスできますか?

私は、2 つの SoC が接続されている組み込み PCIe システムに取り組んでいます。ホストはルート コンプレックスであり、スレーブはエンドポイントです。ホストは Linux を実行します。

通常、ホスト SoC は、エンドポイント BAR がマップされるメモリ ウィンドウを提供します。これにより、ホスト上のカード ドライバがスレーブ上の IO またはメモリに読み書きできるようになります。多くの場合、スレーブには、PCIe アドレスとローカル アドレスで動作する PCIe IP に組み込まれた DMAC が含まれます。ホストは、メモリ ウィンドウに書き込むことによって、この DMAC をセットアップします。

私の場合、エンドポイントには PCIe IP に組み込まれた DMAC はありませんが、システム DMAC はあります。そこで、質問を2つ...

  1. エンドポイントは、BAR を介してルート コンプレックスのメモリにアクセスできますか?
  2. 組み込みの PCIe DMAC の代わりにシステム DMAC を使用すると、パフォーマンスへの影響はありますか? (つまり、BAR 経由のアクセスは PCIe バス上でどのように表示されますか? アクセスごとに 1 つの TLP を取得しますか?)

どんな助けでも大歓迎です!

0 投票する
1 に答える
177 参照

memory - Linux で、(デバッグ目的で) 一部の物理メモリを検査できるユーザー ランド アプリを作成しようとしています。

一部の物理メモリを検査できるユーザー ランド アプリを作成しようとしています (デバッグ目的で)。

(w/ CONFIG_STRICT_DEVMEM=n) OS をクラッシュさせます。

関数ioremapphys_to_virt、およびphys_to_pageが私のディレクトリに存在しません/usr/include。手順を調査して試しましたmake headers_installが、関数はまだ usr/include ディレクトリに入りません。私の知る限り、ユーザーランドのアプリでは利用できないことを意味します。ユーザー空間アプリから物理メモリにアクセスする方法を知っている人はいますか? 参考までに、私が読み取ろうとしている物理アドレスはlspci -v、「memory at」行で実行して得た PCI BAR です。

0 投票する
1 に答える
356 参照

x86 - X86 プラットフォームのルート コンプレックスからエンドポイントまでの単一 Memwr TLP (BAR ACCESS) の最大サイズは?

X86 プラットフォームのルート コンプレックスからエンドポイントまでの単一 Memwr TLP (BAR ACCESS) の最大サイズは?

私のシステムのセットアップでは、X86 PC にプラグインされた PCIe エンドポイント デバイスがあり、このデバイスの bar0 サイズは 1 MB で、この範囲のメモリはユーザー空間にメモリ マップされています。

メモリの部分にデータをコピーすると、エンドポイント側でバー アクセス (MemWr) を取得できました。しかし、1 MB などの大きなコピーを行うと、Memwrリクエストは常に非常に小さなMemwr TLP ( 8バイトまたは 4 バイト) に分割され、128 バイトの最大ペイロード サイズからはかけ離れています

ルート comlex がリクエストを分割したのはなぜですか? これは X86 プラットフォームに関連していますか? X86 プラットフォームのルート コンプレックスからエンドポイントまでの Memwr TLP の最大サイズは?

ありがとうございました。

0 投票する
1 に答える
1819 参照

linux-kernel - Linux カーネル空間から PCIe カードへの DMA

PCIe デバイス (Adlink PCIe 7300A 高速デジタル IO カード) 用の Linux ドライバーを作成しようとしています。

ドライバは通常のメモリ転送では問題なく動作しますが、カードのバス マスタリング機能を使用して、CPU メモリからデバイスの出力 FIFO バッファへのバッファの DMA 転送を開始しようとしても、まったく機能しません。

私は、この問題を数日ではなく、数週間単位で解決しようとしてきました。

どんな洞察でも本当に感謝しています。

ドライバーコード -- https://github.com/sbrookes/timing_driver_sdarn/blob/master/kernel_land/timing.c

デバイス データシート -- http://www.acceed.com/manuals/adlink/P7300A%20Manual.PDF

PLX 9080 PCI インターフェイス チップ データシート -- http://www.der-ingo.de/bin/milanhelp/PLX9080.pdf

少しの洞察にどれほど感謝しているかを説明することはできません。

ありがとうございました、

スコット

0 投票する
1 に答える
5173 参照

cuda - ピアツーピア CUDA 転送

ピア ツー ピア メモリ転送について聞いたり、何か読んだりしましたが、標準の PCI-E バス転送と比較してどれだけ高速かはよくわかりませんでした。

複数の GPU を使用する CUDA アプリケーションがあり、P2P 転送に興味があるかもしれません。私の質問は、PCI-E と比較してどれくらい速いですか? 2 つのデバイスを相互に通信させるために頻繁に使用できますか?

0 投票する
2 に答える
2887 参照

linux - MMIO 読み取り/書き込みレイテンシ

MMIO の読み取り/書き込みレイテンシが異常に高いことがわかりました。誰かが私にいくつかの提案をしてくれることを願っています。

カーネル空間で、PCIe デバイスの BAR0 アドレスの 4 バイト値を読み取る簡単なプログラムを作成しました。デバイスは PCIe Intel 10G NIC で、Xeon E5 サーバーの PCIe x16 バスに接続されています。rdtsc を使用して、MMIO 読み取りの開始から終了までの時間を測定します。コード スニペットは次のようになります。

(end, init) 間の経過時間は 1us 未満であると予想しています。結局のところ、PCIe データ リンクを通過するデータはわずか数ナノ秒であるはずです。ただし、私のテスト結果は、MMIO PCIe デバイスの読み取りを行うために少なくとも 5.5use を使用していることを示しています。これが合理的かどうかは疑問です。コードを変更してメモリ バリア (rmb) をリモートにしますが、それでも約 5 us のレイテンシが発生します。

このホワイト ペーパーでは、PCIe レイテンシの測定について説明します。通常は 1us 未満です。www.cl.cam.ac.uk/~awm22/.../miller2009motivating.pdf MMIO アクセスの待ち時間を短縮するには、カーネルやデバイスなどの特別な構成を行う必要がありますか? または、以前にこれを行った経験がある人はいますか?

0 投票する
1 に答える
217 参照

cuda - CUDA - バッファを複数のデバイスに転送する

3 つの gpu があり、3 つすべてに巨大なバッファーを転送する必要がある場合、コピー エンジンが同時に転送を実行できるように、それぞれに CUDA ストリームを使用しても違いはありますか? つまり、これら 3 つすべてに到達する PCI-E バスは同じですよね。