2025/03/28 17:04 Calculate Throughput with LLVM's Scheduling Model

ロボ子、今日のITニュースはスループットの話じゃ。

スループット、ですか。特定時間内の作業量のことですね。

そうじゃ!アーキテクチャレベルのパフォーマンス分析では、IPC(Instruction Per Cycle)で測るのが一般的じゃな。

なるほど。それで、今日は逆スループットがテーマなのですね。

その通り!逆スループットは、命令レベルの並列処理で償却された多数の命令を完了するのにかかる時間に近いものじゃ。

命令が最初から最後まで完了するレイテンシとは違うのですね。

そうなんじゃ。LLVMのスケジューリングモデルでは、命令のレイテンシは指定するけど、逆スループットは明示的には示さないんじゃ。

スケジューリングモデルの主要な特性は、レイテンシ、使用するハードウェアリソース、そして各ハードウェアリソースを保持するサイクル数、でしたね。

よく覚えておるの!ハードウェアリソースは、スーパースカラープロセッサの実行パイプと考えると分かりやすいぞ。

AcquireAtCycleとReleaseAtCycleという概念も重要ですね。命令がリソースを獲得して作業を開始するサイクルと、解放するサイクルを示すのですよね。

その通り!ここで重要なのがリソースセグメントじゃ。AcquireAtCycleがゼロでない場合、命令は発行直後にリソースを占有しないんじゃ。

数サイクル後に占有することで、後続の命令をより早く発行できるのですね。

そうじゃ!そして、逆スループットの計算方法が変わってくるんじゃ。

リソースセグメントがない場合は、逆スループットはすべてのリソースにおけるReleaseAtCycleの最大値に等しい。リソースセグメントがある場合は、最長のセグメント長が逆スループットになる、と。

その通り!つまり、レイテンシは逆スループットの計算において重要ではなく、最長のセグメント長が支配的な要素になるんじゃ。

LLVMの`MCSchedModel::getReciprocalThroughput`は、AcquireAtCycleを考慮していないのですね。

そうなんじゃ。だから、最長のハードウェアリソースセグメントを使う方が、逆スループットを計算するためのより強力な根拠になる、という結論じゃ。

勉強になります!ところで博士、今日のランチは何にしましょうか?

うむ、今日は特別に、逆スループットを無視した、レイテンシ高めのラーメンじゃ!

ええーっ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。