特定の条件下では、Arria® および Cyclone® SoC で ACP 依存関係がロックアップされる場合があります。以下は、それがどのように発生する可能性があるかのシナリオの例です。
- ARM CPU は、デバイスのメモリー・アクセスを使用してFPGAファブリックにアクセスします。この種類のアクセスでは、アクセスが完了するまで CPU パイプラインが停止します。
- FPGA ファブリック・ステート・マシンは、HPS アクセスに応答できるように、ACP 上の HPS へのコヒーレント・アクセスを発行します。
- ACP はアクセスを受け取りますが、SCU はそれを完了するためにキャッシュ メンテナンス操作を実行する必要があります。ただし、CPU パイプラインが停止し、システムがデッドロック状態になっているため、キャッシュのメンテナンス操作を完了できません。
デッドロック状態を引き起こす可能性があるため、HPS からのアクセスを完了するために、ファブリックから ACP を介して HPS に一貫性を持ってアクセスバックする必要はありません。
機能を細かく分割することで同じ結果を得ることができます。たとえば、アクセス権を使用して操作を開始し、2 番目のアクセスを使用して操作の状態を確認します。