各出力ポートは、すべてのサイクルで 3 つの入力ポートのすべての仮想チャネルに対して LRU (Least Recently Used) 方式のアービトレーションを実行します。要求は常に優先度の高いものから順に処理されますが、アービトレーションの対象となるためには、仮想チャネルは次の条件を満たしている必要があります。
- 各要求が有効であること。
- 出力ポートに、パケットを次の NPS に送信するためのクレジットがあること。
- 別の入力ポートの同じ仮想チャネルからのブロッキングが発生していないこと。
- 3 つの入力ポートのうちの 1 つに仮想チャネルへのアクセスが許可された場合、別の入力ポートの同じ仮想チャネルに切り替わる前にトランザクション全体が完了するように、出力ポート アービタ内の各マルチデータ トランザクションはハード ロックされます。これにより、書き込みトランザクションがインターリーブされるのを回避しています。
- 利用可能な仮想チャネル トークンが存在すること。
- 各出力ポートには、各入力ポートに対するトークンが 1 つあります。したがって、各出力ポートには 24 個のトークン (3 ポート × 8 仮想チャネル) があります。アービタが仮想チャネルに対して許可を発行するたびに、対応するトークンが 1 つ減ります。トークンは、次の条件が両方とも真の場合に、NPI でプログラムしたレジスタからロードされます。
- 少なくとも 1 つの仮想チャネルがトークン 0 で要求を出している。
- 1 つ以上のトークンを持つ保留中の要求がほかに存在しない。
- 対応する仮想チャネルのブロッキングが生じるため、NPI トークン レジスタには 0 をプログラムしないでください。NPI トークン レジスタはいつでも再プログラミングが可能です。新しい値は、次のトークンが再ロードされる時点で有効になります。
- 各出力ポートには、各入力ポートに対するトークンが 1 つあります。したがって、各出力ポートには 24 個のトークン (3 ポート × 8 仮想チャネル) があります。アービタが仮想チャネルに対して許可を発行するたびに、対応するトークンが 1 つ減ります。トークンは、次の条件が両方とも真の場合に、NPI でプログラムしたレジスタからロードされます。
- より優先度の高い仮想チャネル要求が存在していないこと。