[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[OSASK 1116] 脱線(Re:alekto0 OK).



  こんばんは、川合です。


Mitsunari Shigeo さんは 2000/09/02 21:43:40 の「[OSASK 1115] Re:
 alekto0 OK」で書きました:

>引き続き脇道にそれますが、それは正しくないです。
>PentiumIIIには驚くべきことにAGIストールがありません。

  こっちの話がとても面白いのでひたすら脱線しています。すみません
。

  うーん、「AGIストールが無い」というのは少し抵抗を感じますが、
意味は分かります。もし、これがループではなくストレートに1度だけ
実行されるのであれば、testBはtestAより最終的な結果が生成されるの
が速いと思うんです(思うだけで、確証はありませんが)。しかし、ル
ープになれば、ストールしてた1つ前のループや2つ前のループの計算
のための実行と今のループの実行とが適当に混ざって、見かけ上AGIは
全く無いように見えるんだと思います。・・・あー、説明がうまくない
なあ。

  なんというか、AGIが無いにしてもできるだけAGIが起きないようなコ
ードの方が、少しだけ速いんじゃないでしょうか。たとえば、先のルー
プを100回回るのにかかる時間が、(8 * 100 + 20)クロックから、(8 *
100 + 19)クロックとかに減少するんじゃないでしょうか。

  しかし、仮に僕の考えが正しかったとしても、それはあまりに些細で
どうでもいいことです。高速化はループの回転回数に比例する部分がも
っとも大切ですし、そういう意味ではAGIは気にしなくていいのでしょ
う。

>かりに私の書いたコードをtestA, 川合さんがかかれたコードをtestBとすると
>PIIIではtestAは8clock/loop, testBでは9clock/loopと余計に時間がかかっています。

  なんと。うーん、駄目だなあ。僕って経験が浅すぎる・・・。しょう
もないことを書いてすみませんでした。おはずかしいです。

>私も今資料を理解しようとしている最中ですが、PIIIでは適当にコードを書いても
>内部で適切な順序に並び変えられてしまうためP5とは最適化の手法が大幅に変わっ
>ています。

  これは、十分に理解しています。光成さんほどではありませんが。

>#じゃあ、何故testBが遅いの?と言われると...ただいま勉強中。

  僕も興味があります(勉強したい)。

>>ん?でも、Pentium MMXでも僕のコードなら9クロックくらいで回れるかも?
>psubd   mm3,[edx+24] などのread&modify命令が入ってるので遅くなりそうな
>気がしますが、どうなのでしょうか。それから、

  失礼しました。おっしゃるとおりです。ぼけていました。MMX命令に
弱くてチェックが甘かったです。

>lea     edx,[edx+64]
>jnz     .lp
>がpairing実行されたら次のloopの先頭でやはりAGIストールを起こしそうな
>気がします。

  それは僕も気が付いていました。結局完全にAGIを無くすのは無理だ
と判断しました。でも、ペアリングが何かの拍子にずれるかもしれない
(割り込みが入って帰ってきたときとか・・・それでも次のループでは
元どおりになってしまうんでしょうが)と思い、その時に少しでも得す
る方にしたわけです。元のコードですと、ペアリングがずれても直後な
のでAGIは回避できないと思ったのです。それと、testAですとAGIの回
数がループ回数に等しく、testBだとそれより1回は減るんじゃないか
と・・・。

  ああ、我ながらなんとどうでもいいことに気を回しているんでしょう
。しかも、情けないことにかえって遅くなっているし・・・。ううう。

>ちなみにAthlonでは(旧コアなのでメモリを小さく4096byteに変更して)
>testA 6.8clk, testB 7.75clk (PIIIと同じ128 Kbyteでは約30clk)

  6っていうのは、これまたすごいですねえ。

  ・・・と思ったら、testAの

>        movq    mm7,[edx-8]

この命令の存在が並列実行度の貢献にかなり役立っているわけですね。
次のループでは、前のループのmm7の計算結果を必要としないんですか
ら(ロード値は必要ですが)。じゃあ、デコード性能が上がって実行ユ
ニットも増えれば(それはとんでもないCPUだが)、このループを律速
しているのはECXの減少演算+条件ジャンプだけになるわけですね。今
まで、それに気が付いていませんでした。ああ、情けなや・・・。

  前の僕のメールはレベルの低いレスだったのに、それにたくさんのお
返事を付けてくださってありがとうございました。


  それでは。

--
    川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.or.jp
Homepage http://www.imasy.or.jp/~kawai/