アプリケーションのハングを引き起こす典型的なエラー - 2023.2 日本語

Vitis 統合ソフトウェア プラットフォームの資料: アプリケーション アクセラレーション開発 (UG1393)

Document ID
UG1393
Release Date
2023-12-13
Version
2023.2 日本語

次に、アプリケーションのハングを引き起こす典型的なユーザー エラーを示します。

  • 5.0+ シェルで書き込み前に読み出しを使用すると、Memory Interface Generator エラー訂正コード (MIG ECC) エラーが発生します。これは、典型的なユーザー エラーです。たとえば、カーネルで DDR に 4 KB のデータを書き込む際に、1 KB のデータしか生成されず、4 KB のデータをホストに転送しようとすると、このエラーが発生することがあります。また、1 KB バッファーをカーネルに供給していて、カーネルが 4 KB のデータを読み出そうとした場合にも発生する可能性があります。
  • ECC の書き込み前に読み出しエラーは、最後にビットストリームがダウンロードされて初期化されたためにメモリ ロケーションにデータが何も書き込まれていないと、そのメモリ ロケーションに対して読み出し要求が発行された場合にも発生することがあります。カーネルではこの ECC エラーを処理できないので、影響を受けた MIG がストールします。これは、次のいずれかの形で現れます。
    1. CU が影響を受けた MIG に対して読み出しまたは書き込みを実行するときに、このエラーを処理できないため、CU がハングまたはストールします。xbutil クエリには、CU が BUSY ステートに停滞し、進行していないことが示されます。
    2. 影響を受けた MIG に対して PCIe® DMA 要求が発行されると、DMA エンジンで要求を完了できないため、AXI Firewall が作動します。AXI Firewall が作動すると Linux カーネル ドライバーが SIGBUS 信号でデバイス ノードを開いたすべてのプロセスを強制終了します。xbutil クエリには、AXI Firewall が差動したかどうかとタイムスタンプが示されます。
    上記のハングが発生しない場合、ホスト コードで正しいデータがリードバックされない可能性があります。この正しくないデータは通常 0 で、データの最後の部分に配置されます。ホスト コードを注意して確認することが重要です。よくある例の 1 つは圧縮で、圧縮後のデータのサイズがわかっておらず、アプリケーションがカーネルで生成されたデータよりも多くのデータをホストに転送しようとする場合です。