スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
webadm | 投稿日時: 2007-1-16 5:19 |
Webmaster 登録日: 2004-11-7 居住地: 投稿: 3107 |
グラフィックアクセラレーターの効用 以前どっかに書いたUSB関連の仕事が完了。
500us毎にセンサーからサンプルしたデータをUSBでPCに上げてそれをオシロスコープよろしくストレージ表示するというソフトをこしらえるというもの。 このためにUSBのプロトコルアナライザーとかをヤフオクで入手。 センサー側はI2Cなのでロジアナやオシロで観測すればそれなりに動いていることは確認できた。 しかし実際に動かしてみると1msサンプルと変わらないことが判明。USBプロトコルアナライザで見てみたら原因判明。センサーとUSBのブリッジインターフェースとして使ったPICのファームウェアが一回に1サンプルしか転送するように作られていない。 プロトコルアナライザで見ると何も転送すべきデータが無い場合は16us毎にPCからデータが要求されている。しかし一旦データが発生し転送が発生するとFull SpeedのUSBの1msのフレームサイクル内では1回ぐらいしか転送ができていない。 センサーからのデータサンプルは割り込みが発生すればその都度読み込んでいるのでI2Cを観測する限り500us毎に律儀にデータを読み出しているように見えたのでうっかりしていた。 さっそくセンサーからの読み込みデータを蓄えることができるキューデータ構造を導入し、PC側へ送信する際にはキューに貯まった分を一回に全部送り出すように元々のコードを改造。このあたりは昔とった杵柄で楽なもん。 データレートは2Kspsで400Kbpsに相当する。それでもPCにはそれほどの負荷ではないはず。 実際に自宅のPCで試しても負荷はほとんど食わない。 最終版を事務所に持っていってデモ用に事務所のPCにインストールして試してみた。 すると2.6GHzのCelronベースとはいえ100%のCPU負荷になってしまう。なぜだ? 自宅の2.5GHzのP4ベースではほとんど痛くもかゆくもないのに何が違うのだろうと思いめぐらしたら... 自宅のはEQ用にNVIDIAのグラフィックボードが拡張してある。事務所のは当然ながら一番安いオンボードグラフィックコントローラーのみである。 つまりCPU負荷のほとんどがオシロのグラフィック描画処理に費やされていたということになる。自宅でなんともなかったのはゲーム用にグラフィックアクセラレータを入れていたからだった。 驚愕の事実が明らかになると、今度のWindows Vistaでは最新のグラフィックアクセラレーターを装備しないと使い物にならないというのはわかるような気がする。 デスクトップの安物よりもノートPCの方がちゃんとしたグラフィックアクセラレータを使っているので、そちらの方がCPUがPentium IIIとかでも2.6GHzのCelronのDellより性能がよかったということも判明。 意外なところでグラフィックアクセラレータの効用を実感。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |