“ステップ数”撲滅運動強化月間:「あぁそれはダイナミックステップのことだよ」を返り討ちにする

ステップ数=ダイナミックステップ数、であると主張する人がおられるようです。

性能評価や性能見積もりでのダイナミックステップ数は、

実際に実行される/された命令数

「される」の方は、ソースやアセンブル結果から見積もり可能です。大変でしょうけど。

「された」の方は、ツールを使えば簡単に計測可能です。ただし、現代的かつ最新のプロセッサなら。たとえばIAプロセッサなら、intel VTUNEのようなツールを使えば屁の河童のはずです。

パフォーマンス解析ツール「VTune」でアプリケーションを高速化 – SourceForge.JP Magazine  オープンソースの話題満載

・・・INST_RETIRED.ANYの値がCPU_CLK_UNHALTED.COREの値よりも大幅に小さいことから、CPUを効率的に利用できていない、ということも分かる。つまり、この部分がパフォーマンスのボトルネックとなっているということだ。

いまどきのプロセッサにはキャッシュが付きもので、ごく最近ではコア間にメモリマネージャまで存在するそうです。つまり、

実行されるはずの命令がわかったとしても、

実際にそれを実行するのに何クロックかかるかは実行してみないと分からない。

という傾向が強まっているということで、しかも実行環境に強く依存するわけですね。SMPなのか、NUMAなのかとかそういうレベルに始まり、メモリの帯域、云々かんぬん。

ようするにこれはCPIが一定でないということです。見積もり時にはCPIの最小値しか分からんのです

似たような話はインストラクションミックスで解決される部分でもあります。ミクス値は、乱暴に書けば

いちいち命令ごとの必要クロック数なんか拾い集めてられっかよ。

SLOC←→クロック数の換算でいいじゃんかよ。

ということになろうかと思います。で、命令ごとのクロック数を出現確率で重み付けして平均を計算して求められる

見込みCPI

実効CPI

みたいなもんですかね。それにSLOC(こだわるならダイナミックステップ数)を掛けあわせれば、実効性能を見積もることができるでしょう。

***

上記のようにダイナミックステップ数というのは性能指標の一種であり、巷で頻繁に使われる、人月変換可能な規模の指標とは異なるものです。

ダイナミックステップ数も巷のステップ数も、FP当たりの値が小さいほど優れていると考えられますが、実際には以下のように評価が分かれます。

かけた人月に対して納入されたステップ数が小さすぎると、それがいくらバグゼロで、異常処理も完璧で、メンテしやすいコードであっても、頭の悪い購買・資材・仕入れ担当者が、

困るんだよねぇ。

1人月あたり最低でも1万ステップは維持してもらわないと。

あとで会計監査にうじゃうじゃ言われるからさぁ。

などと言ってくるのです。そして対策会議が開かれ、作業報告書や人員の割付表が偽装されるのです。つまり巷のステップ数とはなんら技術的な意味のある指標ではなく

ビジネス側が管理するのに都合が良い

ためだけに存在するものなのです。それ自体は悪くもなんともないはずですが、この点を理解していない技術側の管理職が存在すると地獄が始まります。

***

特定の環境でダイナミックステップ数を厳密に調べたいなら、VTUNEのようなツールを使えばよいのです。

ただしそれを英語で”You need to measure the dynamic steps on it!”とか叫んでも例のカオで

はぁ?

てめぇなにぶっこいてんの?

と英語で聞き返されるだけなのでやめておきましょう。上記のようにそれは、CPIという言葉がすでに広まっていますので。

例外的にダイナミックステップを使い続けるべき方に該当するのは、

NTT系のインフラ系

と推測されます。通信機器も伝統芸能化している沖さんあたりではまだ現役じゃないですかね。加えてそれらの企業または関連会社出身のシャチョさんがいる会社の社員はクウキを読んで、

あはは、ダイナミックステップって、すばらしい指標っすよね。

くらいのことは言えなくてはならないでしょう。それが企業戦士(Gears of Corp)というものです。

さて最後になりましたが、VTUNEってARMに対応してましたっけ?

リリース予定などご存知の方がおられましたら、コメント欄でお知らせしてクサイ。

リンクル:

インテル® ソフトウェア開発製品

その他参考:

NTT 情報通信用語集

ダイナミック・ステップ数

ある処理を実現するプログラムを実際に走行させたときのCPUによって実行された機械語命令の総数。ある処理を実現するとき,実現方法の違いによりこの値が異なるが,より少ない数で実現する方式の方が相対的に性能がよいといえる。

geocities.jp

●同一のプログラムでも実行条件によって変化する。      
●スタティックステップ数は把握が可能であるが、ダ      
イナミックステップ数は把握が困難である。

大先輩 – insomnia

トランザクション当りの CPU 時間を 0.3 秒以下に抑えないと,顧客要求の端末トラフィックを要求応答時間で捌くことができない。それは待ち行列計算でわかっていた。それで,ダイナミックステップ (走行命令数) を処理装置性能から割り出し,トランザクション・五百万ステップ以下,AP メモリ所要量 5MB 以下とするこ
とが基本設計時点での私たちの目標であった。実測の結果,ダイナミックステップのコマンドミックス (検索モデルの加重平均値) が五千万ステップにも達してしまったのである。

→用例として。