メモリ速度比較
ふと売場の前で気絶する可能性にそなえ、ABC の素性をみておいた。
どーゆー風に気絶するのかは、この結果次第というところ。ま、結果如何によっては気絶せんかもしんないが ...
テストプログラムは:
で、memcpy, memset の速度 (と /dev/fb の構造) をみたもの。
結果
| | 5500 | A300 | B500 | C700 | C750 | | 参考: A300(リモートから)
|
|---|
| memcpy VRAM → メインメモリ 方向 | 14.24 | 18.54 | 25.92 | 2.56 | 3.52 | | 28.80
|
| memcpy メインメモリ → VRAM 方向 | 29.82 | 29.50 | 32.42 | 14.09 | 14.19 | | 29.82
|
| memset (メインメモリへ) | 58.09 | 106.71 | 159.23 | 167.60 | 77.73 | | 104.08
|
| memcpy (メインメモリ間) | 27.27 | 29.24 | 28.26 | 33.59 | 43.22 | | 29.59
|
- いずれも単位は MB/s. 有効数字は 1.7 桁ぐらいで、3 桁も 4 桁も載せる意味は実はない(をい)。
- embedded konsole 上で ./vmem > file して結果を得た。
残念ながら使った Qt, konsole の version はバラバラである ...
A300 以外は売場のモン使ってテストしてんのに条件の統一なんででけんて。
- A, B は portrait, embedded-konsole + ソフトキーボード
(B で '>' の位置が分からんかったので、ハードキーでなくソフトキーから入力 ^^;)、
C は inputstyle (VGA 表示) からハードキーで入力。
- 「参考」は USB LAN 経由で外から入ってテストしたもの。embedded konsole 上からのテストと違い、
操作時に Qt の描画を邪魔していない。
Short Comments
- A → B,C でバス幅が 16 bits → 32bits になったはずなのにメモリバンド幅は倍になってない。
- C の VRAM からの読みだし能力の低さは凄まじい。VNCserver で C ユーザーがぶーたれる訳である。
1 画面読むのに 0.3s もかかっちゃー紙芝居以下だろう ...
(3MB/s で 614kB/画面 だから、0.2s/画面 ですぅ)
- メモリ的には B のバランスが良い。VRAM アクセスがメインメモリアクセスより速いあたり、
どこを大事にすべきかよくわかっている。B が SL-5x00 のアーキテクチャを引き継いでいるとすれば、
きっと SL-5x00 のデザインも良かったんやね。
- C での VRAM への書き込み速度が低い。C で X を動かした時に、意外に xengine の値が良くないこと、
portrait/landscape で xengine 値に差が少ないこと、の理由はこのあたりか。
- C700, C750 間でメモリバス関連の大きな改善はない。
Qtopia の速度改善は本当に本当にソフトの改良だけで得たもんなのか ...
- C750 での memset の異常な低下が気になる。カーネルの設定、どっかバグってるんじゃねーか?
ただ、memcpy の速度は A からきっちり 1.5 倍(理論値?) になったよーやね。
どーも C700 〜 C750 間のメモリチューニングは、memcpy, memset 一発だけでは読めん。
- A でリモートからテストすると VRAM, メインメモリ間で速度の違いはない。B と並んで素直な構造やね ...
ということも分かるが、VRAM からの読みだしは競合がけっこきつそう。
- ほぼ同じアーキテクチャであるはずの B, C 間でメモリ速度に誤差とも思えん違いがある。何やろ?
(ディスプレイのリフレッシュにメモリバンドが食われてるんやね)
C700 〜 C750 間
回路的には同じでも、クロック的には違う可能性があるとしていた C700 〜 C750 間だが、
ハードウエアはマジにおんなじなんやね。
微妙な向上はキャッシュの扱いと Qt がメインメモリにアクセスしなくなった結果だろうし。
C7x0 で VRAM へのアクセスがこれほど細いなら、off screen (1.4MB もある) 使ってバスを消費しなければ、
たしかに大幅な改良が望める。Qt はVRAM に対して直接 screen 描画しており、たとえば qpf を off screen
におけば、そのまま bitBlt が off screen 間転送になる。
バス的な改良がないので、C750 の libqte もってくれば C700 でもほぼ同じ速度が得られるはずだな。
C700 ユーザー的にはとりあえずは C750 の libqte の公開待ちやね。
また、ハード的な改善がないということは、Opie の速度は C750 でも C700 の時とたいしてかわらんということだ。
libqte 2.3.2 と組み合わせられる opie ならばともかく、最新の opie では一工夫要ることになるだろう。
追記
SL-5500 の結果は wiki からヤマケンさんによる。thx!
ういっき
この件に関するコメントその他は塚本さん家の
wiki にて。
[日記へ]
[目次へ]