5 / 20 · 概念
1つの立ち上がりエッジでの契約
エッジ番号、レジスタによる転送、累積、初期化の優先順位を確定します。
レッスンは無料で読めます。受講登録すると進捗を保存できます。
このコース全体で使う時間の規約
リセットとクリアは、最初にデータを消費する立ち上がりエッジE0より前に完了させます。入力はE_tの直前に安定しています。そのエッジでPEはエッジ前の入力から積を累積し、同じ入力を右方向と下方向の転送レジスタに格納します。新しいアキュムレータと転送値はE_tの直後に観測できます。隣のPEはレジスタ値をE_(t+1)で消費します。
この基本構成には、独立した入力レジスタ、パイプライン乗算器、出力直列化段はありません。これらを追加する場合はスケジュールと結果のレイテンシを見直す必要があります。「エッジゼロでの結果」はE0の前ではなく、E0の後に更新されたアキュムレータを意味します。初期化エッジは計算エッジ数に含めません。クリアはMACより優先するため、最初のデータ対と同時にclearをアサートするとその対は破棄されます。先にクリアし、次のエッジでデータを供給してください。
1つのPEの2つの責任
E0でA=1、B=5なら、PE(0,0)はアキュムレータを5に更新し、オペランドを転送レジスタに入れます。E1では境界オペランド2と7が14を加え、19になります。同じエッジで、隣接PEは最初にレジスタに入れたオペランドを消費できます。トークンが1つのエッジで2つのPEを横断できると、後で使うスキューの式は成立しません。
ノンブロッキング代入は、エッジ前に読み、エッジ後に書くこの動作を表します。テストベンチも適切なクロッキングブロックやシミュレータのサンプリング領域を用い、状態更新後に一貫してサンプリングする必要があります。アクティブ領域のプロセスの偶発的な実行順に依存しないでください。
優先順位と全体の一時停止
優先順位はreset、clear、advanceの順です。resetとclearはアキュムレータとvalid状態を空にします。advance=0では、すべてのPEがアキュムレータ、転送値、validフラグ、タグを保持します。境界のスケジューラも保持します。advanceが有効な1エッジで1つの論理ステップを実行します。有効なゼロは実際のオペランドであり、無効なトークンはデータビットに関係なく無視します。
アキュムレータが5のとき、アレイを物理的に2エッジ停止すると5のままです。次にadvanceするエッジで次の論理ステップを実行します。物理的なクロックエッジと論理的なadvanceステップは別に報告してください。停止中も初期化は有効なので、古いトークンが次のジョブへ漏れるのを防ぎます。
自分で考えてみましょう
E−1でクリアを完了します。E0で(1,5)を消費し、E1で停止、E2で(2,7)を消費します。各エッジ後のアキュムレータと論理ステップ番号を示してください。
解説を見る
E0後はacc=5で、論理ステップ0が完了しています。E1ではacc=5を保持します。E2後はacc=19で、論理ステップ1が完了しています。物理エッジは3回、advanceエッジは2回です。