CoreSight
CoreSightやIntel PTは、デバッグやパフォーマンス計測を目的とした、CPUの挙動を実行時にトレースするしくみです。
CoreSightのコンポーネント構成はSoCの設計時に決定され、どのようなコンポーネントがどのように接続されているかはSoCによって大きく異なります。ただし、共通的なコンポーネントとしてTrace Source、Trace Sink、Trace Linkの3種類が存在します。
Trace refers to the process of capturing data that illustrates how the components in a design are operating, executing, and performing.
トレース対象がどんな機能を提供するかに依存
対象がトレースデータを保存する機能を提供するなら、そうするしかない
トレースにもいろんな種類がある
命令トレース(instruction trace)
コアが実行した命令の列が記録される
10回ループするコードのトレースであれば、同じ命令列が10回記録される
Trace Source
PTM(Program Trace Macrocell)
プロセッサの種類によって組み込まれるマクロセルが異なる
Armv8はETM、Armv7のほとんどはPTM
データトレース
コアのデータアクセスが記録される
例えばメモリロード命令が実行されると、アドレスと値が記録される
Trace Source
ETMにデータトレースオプションが含まれる
計装トレース(instrumentation trace)
OSやアプリのイベントとシステム情報を記録する
Trace Source
ITM (Instruction Trace Macrocell)
システムトレース
システムに存在するコンポーネントに関するデータを記録する
計装トレースのスーパーセット
Trace Source
STM (System Trace Macrocell)
TMC (Trace Memory Controller)はトレースデータをメモリに記録したり、HSSTPに流したりする
HSSTP (High-Speed Serial Trace Port) トレースデータは外部のデバッガや、オンチップのソフトが読む
TMCは4つの記録方法のうち、ターゲットデバイスの設計者が選んだ方法を使う
ETB (Embedded Trace Buffer)
専用のSRAMに記録
SRAMは循環バッファとして機能
通常、バッファは4KB~64KB程度と小さいので、少しのトレースデータしか保持できない
ETF (Embedded Trace FIFO)
専用のSRAMに記録
3モード
循環バッファ(ETBと同等)
ハードウェアFIFO
トレースデータの変動を平滑にするのに使うことが多い
ソフトウェアFIFO
ETR (Embedded Trace Router)
AXIインターフェースを介して、トレースデータはがシステムメモリや他のAXIスレーブへ送られる
ETBやETFより大きなトレースデータをオンチップに記録できる
ETS (Embedded Trace Streamer)
AXI4-Streamインターフェースを介して、ストリーミング機器へとトレースデータを垂れ流す
ETRと振る舞いは似てる