AI エンジンとメモリ モジュールには、それぞれイベント ロジック ユニットがあります。各ユニットには、いくつかのローカル イベントが定義されています。次の図に、AI エンジン タイル内のイベントの概略的な論理構成を示します。イベント ロジックは、メモリ マップド AXI4 インターフェイスを介してプログラムできる一連のアクション レジスタを使用して設定する必要があります。AI エンジンおよびメモリ モジュールのみと連携動作するイベント ロジック ハードウェアがあります。特定イベントの発生時にタスクを実行するように、イベント アクションを設定できます。イベント ハードウェアには、コンフィギュレーション レジスタ セットが 2 つあります。また、イベント信号を隣接するモジュールに送信するブロードキャスト ロジックも 2 つあります。
イベント アクション
イベント自体にアクションはありませんが、イベントを使用してアクションを作成できます。イベント ブロードキャストとイベント トレースを設定して、イベントを監視できます。イベント アクションの例には、次のものがあります。
- AI エンジンのイネーブル、ディスエーブル、またはリセット
- AI エンジンのデバッグ停止、再開、またはシングル ステップ実行
- AI エンジンのエラー停止
- タイマーの再同期
- パフォーマンス カウンターの開始および停止
- トレース ストリームの開始および停止
- ブロードキャスト イベントの生成
- コンボ イベントの駆動
- ECC スクラビング イベント
これらのイベント アクションにはいずれも関連するレジスタがあり、そこで設定した 7 ビットのイベント番号を使用して、特定のイベントでアクションをトリガーするように設定します。AI エンジンおよびメモリ モジュールのすべてのイベント アクション コンフィギュレーション レジスタのリストは、 『Versal アダプティブ SoC AI エンジン レジスタ リファレンス』 (AM015) に記載されています。
ECC スクラビング イベント
プログラム メモリとデータ メモリの両方において、2 ビットの ECC エラーを検出して、1 ビットの ECC エラーを修正するスクラビング機能があります。スクラビングはユーザー イベントで開始できます。特定のイベントでスクラビングを開始するためにイベント番号をプログラムするためのレジスタがあります。このレジスタがプログラムされていない場合、スクラビングは開始されません。
ECC スクラビングがプログラム メモリ内で 1 ビット エラーを修正し、2 ビットエラーを検出する場合には、AI エンジン内でイベントが生成されます。ECC スクラビングがデータ メモリ バンクで 1 ビット エラーを修正し、2 ビット エラーを検出する場合には、AI エンジン メモリ モジュール内でイベントが生成されます。
イベントの生成回数は、パフォーマンス カウンターを使用してカウントできます。これらのカウンターはタイマーとして機能し、イベントに基づいて開始/停止できます。これは、2 つのイベント間のクロック数をカウントするのに役立ちます。
イベント ブロードキャスト
ブロードキャスト イベントは、設定済みのイベントがアサートされたときにトリガーされるため、イベントでもありイベント アクションでもあります。次に、AI エンジン タイル内のブロードキャスト ロジックの論理構成を示します。AI エンジンおよびメモリ モジュール内にあるブロードキャスト ロジック内のユニットは、4 方向すべてから入力を受信し、4 方向すべてに信号を送信します。ブロードキャスト ロジックはイベント ロジックに接続され、イベント ロジックがすべてのイベントを生成します。送信されるイベントを選択するコンフィギュレーション レジスタと、イベントが AI エンジン タイルから送信されるのを阻止するマスク レジスタがあります。
各モジュールには、ブロードキャスト イベント信号をほかの方向にブロードキャストするように指定する内部レジスタがあります。ブロードキャスト ループを防ぐために、受信したイベント信号と内部イベントを OR 演算し、次のリストに従って、送信されるイベント信号を駆動します。
- 内部、右、上、下 → 左
- 内部、左、上、下 → 右
- 内部、下 → 上
- 内部、上 → 下