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

[OSASK 2176] adarrel5, monza5.



  こんばんは、川合です。

  adarrel5とmonza5をベータリリースします。

  今回はcube支援がメインで、現在表示している内容とflushによって
新たに表示される内容との差分をとって表示する機能などが盛り込まれ
ています。

  この機能はtest017とtest018で使われています。使い方はそちらを見
てください。

  test017は、test012を今回の差分flushに対応させたものです。また
、test019はtest017とほとんど同じ形式でtest012の実行内容を実行で
きるということを示したものです(test019で使っている関数の説明を
誤ってtest018に書いてしまいました。読む時は注意してください)。

  AT互換機 Duron 690MHz

  test012(従来の方法)                 : 負荷 0.118%
  test017(差分転送)                   : 負荷 0.077%
  test019(差分転送によく似た通常転送) : 負荷 0.121%

  (註)test012について、[OSASK 2093]よりも負荷が減っていますが、
それはcountup5単独の測定値を正しい値(前のは書き間違いでした)に
修正したためで、OSASK/AT全体の性能が向上したわけではありません。

  TOWNS HR20 i486SX 20MHz

  test012(従来の方法)                 : 負荷 1.24%
  test017(差分転送)                   : 負荷 2.34%
  test019(差分転送によく似た通常転送) : 負荷 1.36%

  この結果が示しているように、差分転送方式の採用は、どの機種にと
っても有利であるとはいえません。VRAMへのアクセスがCPUにとってど
れほど大変なのかということとかなり関係があります。

  差分を生成するためにはRAM上での計算をしなければいけませんが、
そんなことをする暇があったらさっさとVRAMに書いてしまった方が速い
という機種もあるわけです。・・・このような状況では、プログラマー
としてはどちらかを容易に選択できるようにしておいてほしいと願うで
しょう。そのためのtest019なのです。

  test019は、test012とは描画手順が異なっていますが、test017には
酷似しています。そして、test012とほとんど同じ速さで描画できます
(1割未満の差です)。これなら両用にプログラムを書くことは困難に
ならないはずです。

  同様な比較として、test015とtest018の比較を用意しました。test01
8はtest015を差分転送で書いたバージョンで、しかも画面は小さくなっ
ています(面積にして1/16)。

  AT互換機 Duron 690MHz

  test015(高速ライン)                 : 負荷 1.2%
  test018(差分転送)                   : 負荷 0.48%

  (註)test015について、[OSASK 2112]よりも負荷が増えていますが、
これは測定誤差の範囲です。

  TOWNS HR20 i486SX 20MHz

  test015(高速ライン)                 : 負荷  6.2%
  test018(差分転送)                   : 負荷 13.2%

  test018の面積を減らしたのは、これくらいにしないと負荷が大きく
なりすぎるせいです。面積を同じにして比べたら、負荷は少なくともこ
の10倍にはなるでしょう。そうすると、Duron 690MHzでさえtest015の
方がましだということになります。

  結論としては、バッファ内に描画してflushするという形態のものに
ついては、差分転送が有効な場合がありえます。しかしこれは決して万
能ではないんです。やはり、ワイヤーフレームには高速ラインルーチン
を使うのがいいでしょう。・・・しかし、cubeのようなポリゴンなら、
この差分転送は負荷の低減に効果があるのではないかと考えています。

---

  これとは全く別の話です。

  最近のOSASKは、どうも不安定になっているような気がします。調子
がいい時は何ともないんですが、時々不意に例外を出して止まってしま
います。同じ状況にしても再現しないし、例外が出る場所や内容も毎回
異なっていて、対策が取れずにいます。

  そう遠くないうちに、時間をかけてバグの洗い出しをやろうと考えて
います(遅くとも年内には決着を付けたいです)。


  それでは。

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