13 / 24 · 概念
受け入れイベントとストール中の安定性
供給側と受け取り側の責任を決め、ストールしたペイロードを保持します。
レッスンは無料で読めます。受講登録すると進捗を保存できます。
転送にはエッジで両信号が必要
Validは供給側が提示するペイロードを持つことを保証します。Readyは受け取り側が現在のエッジで1件受け入れられることを保証します。両信号が高い立ち上がりエッジで、正確に1トランザクションを転送します。ペイロードにはタグ、演算、アドレスなどの付随フィールドすべてが含まれます。validが高いままでも、1件がストールしている場合と、連続するreadyエッジで一連の項目を転送する場合があります。
validが高くreadyが低い間は、validと完全なペイロードを安定して保持します。この契約では、リセットまたは明示的なフラッシュだけがこの義務を取り消せます。供給側がreadyを待ってvalidを上げ、受け取り側がvalidを待ってreadyを上げると、両者が永久に待つ可能性があります。準備した項目はreadyと独立に提示します。このハンドシェイクと安定性の原則はArm AMBA AXI仕様のA3節に記載されています。この小さなストリームは完全なAXIインターフェースの実装ではありません。
| エッジ | valid | ready | ペイロード | 転送 |
|---|---|---|---|---|
| 0 | 1 | 0 | tag4,y9 | なし |
| 1 | 1 | 0 | tag4,y9 | なし |
| 2 | 1 | 1 | tag4,y9 | tag4を1回 |
| 3 | 1 | 1 | tag5,y12 | tag5を1回 |
| 4 | 0 | 1 | 無関係 | なし |
Tag4はストール中ずっと変わってはいけません。エッジ2の転送後、供給側はtag5を提示できます。エッジ4のreadyだけではトランザクションは生じません。validだけを数えると入力を失い、データだけを読むと出力を重複させる可能性があります。
この規則は単一クロックドメインを前提とし、クロックドメイン交差やメタステーブルを解決しません。それぞれのハンドシェイクから、受け入れた入力と引き渡した出力を数えます。リセットなしでは、受け入れ数から引き渡し数を引いた値が内部の未完了数と等しくなければなりません。受け入れたタグをキューに入れ、引き渡し時だけ取り出します。この収支とストール中のペイロード検査を組み合わせると、算術値が偶然一致していても、損失、重複、識別情報の変化を検出できます。
自分で考えてみましょう
表では4つのエッジでvalidが高くなっています。転送は何回で、どのタグが転送されますか。エッジ1でyが10に変わると、どの規則に違反しますか。
解説を見る
転送は2回で、エッジ2と3でタグ4と5が転送されます。エッジ1でyを変えると、エッジ0でストールしたトランザクションのペイロード安定性に違反します。