Archives

January 2009 の記事

backlightwin を作るときに調べたもの。

MSDN IOCTL_VIDEO_QUERY_SUPPORTED_BRIGHTNESS

LCD デバイスを open します。

HANDLE	hlcd= CreateFile(
		_T("\\\\.\\LCD"),
		GENERIC_READ|GENERIC_WRITE,
		FILE_SHARE_READ|FILE_SHARE_WRITE,
		NULL,
		OPEN_EXISTING,
		0,
		NULL );

バックライトを何段階に調光可能か調べます。

const DWORD	levelbuffersize= 256;
unsigned char	levelbuffer[levelbuffersize];
DWORD		levelCount= 0;
DeviceIoControl(
		hlcd,
		IOCTL_VIDEO_QUERY_SUPPORTED_BRIGHTNESS,
		NULL,
		0,
		(LPVOID)levelbuffer,
		levelbuffersize,
		&levelCount,
		NULL
	);

levelbuffer にはバックライトの明るさテーブルが返ります。
たとえば VAIO type P なら 9 段階に調整可能で、levelbuffer には 9 個の値が
返ります。内容は下記の通り。

4 16 28 40 52 64 76 88 100

バックライトの明るさが 4% から 100% まで、上記の刻みで変更できることを意味
しています。levelCount は返したパラメータのサイズなので、結果として調整可能な
段階に等しくなります。

デバイス(PC)によってこの値も刻み方も変わるようです。
明るさの値 (DISPLAY_BRIGHTNESS の UCHAR ucACBrightness など) は unsigned char
を使うため、テーブルも最大 256 まで。
でも 0~100% の値だから 102 以上のサイズに意味があるのかどうかわかりません。

現在の明るさの読み出し。
DWORD	bytereturn= 0;
DISPLAY_BRIGHTNESS	bright;
DeviceIoControl(
		hlcd,
		IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS,
		NULL,
		0,
		(LPVOID)&bright,
		sizeof(DISPLAY_BRIGHTNESS),
		&bytereturn,
		NULL
	);


bright.ucACBrightness, bright.ucDCBrightness に現在の明るさが入ります。
明るさは IOCTL_VIDEO_QUERY_SUPPORTED_BRIGHTNESS で読み出したテーブルの
通り、必ず 4 , 16, 28, ... 100 の値のどれかになります。
ucDisplayPolicy は現在 AC か DC なのかフラグが設定されるはずですが、
VAIO type P では常に 2 (DC power) が入っています。

明るさを変更する場合。
DeviceIoControl(
		hlcd,
		IOCTL_VIDEO_SET_DISPLAY_BRIGHTNESS,
		(LPVOID)&bright,
		sizeof(DISPLAY_BRIGHTNESS),
		NULL,
		0,
		&bytereturn,
		NULL
	);

IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS で読み出した構造体をそのまま
書き換えて渡せばよいはずです。ucDisplayPolicy のフラグが 3 なら DC/AC
両方を意味するため、より確実に変更が可能となると思われます。
VAIO type P の場合そのままで大丈夫でした。

backlightwin v1.00

本当はボリューム変更や HID のキー周りも調べたのですが、結局何もしなくても
画面表示がないだけでボリューム変更のショートカットは有効でした。


関連エントリ
VAIO type P Windows7 beta とバックライト調整など



小型キーボードはたとえキーピッチが小さくなっても等幅の方がタッチタイプ
しやすいという仮説

VAIO type P のキーボードは十分な広さが確保されており、詰まったキーも少なく
押しやすく出来ています。
たまに右側 [_] のキーを押し間違えることがあるのは、おそらく直前まで 1年間
使ってきた EeePC にすっかり手がなじんでしまっているからです。
EeePC のキーボードはさらに横幅が狭く、変形している記号キーも type P より
1列分多くなっていました。

その前に使っていた Let's note R4 もそうだったし、小型のキーボードでは右側の
記号部分の幅が狭く変形しているものが少なくありません。

キーのタイピングは人によって異なるし好みもやり方も多数あると思いますので、
今回はあくまで個人的な内容のお話となっています。


●小型キーボード

こちら でも触れたように、キーボードはすべてのキーが等幅であれば
全体のスケールが小さくなっても意外にタッチタイピング出来ることがわかりました。
もちろんあくまで個人的な感想で、個人的な経験からの判断です。

その昔、普段記号キーも見ないで打っていたのでキーボードに結構拘っていました。
ノートPC もデスクトップと同じサイズでないと打てない、とか思い込んでいたし。

これなら打てる! とかなり気に入ったのが MobileGearII MC/R700 で、すぐに電源が
入って使える便利さに魅了されてその後すぐに MC/R530 を購入。
キーピッチは小さいもののすべてのキーが等幅でしっかりしており、非常に打ちやすい
ものでした。
最初から Ctrl/Caps Lock を交換する機能もあったし、ATOK も入っていたし、IME の
キー割り当ても変更できたのでカスタマイズ性も申し分ないです。

Jornada680~ はさらに一回り以上小さいハンドヘルド PC です。
小さいながらもキーは電卓ボタンではなくノートPC と同じ形をしています。
店頭で Jornada720 触ってみたらぎりぎりだけどホームポジションに全部の指が乗る
ことを発見。
キー配列は等幅で必要なキーがそろっており配列も自然。一部異なっている部分も
カスタマイズで変更可能な範囲でした。
入力はタッチタイピング可能で、議事録なども内容をそのまま記録しつつ、かつ
タイプしながら内容を整理してまとめられるくらいに余裕で打てました。
MobileGearII MC/R530 と Jornada720 は本当に長い間使い込んでいます。

それ以降ここまで使えた小型キーボードにはあまり出会っていません。
小型化のためにキーボードが変形していて、一部キーが他の場所にあったり部分的に
幅が狭くなっていたりするとなぜかだめなのです。慣れるまで非常に時間がかかるし、
慣れてもデスクトップ PC の普通のキーボードを使うときに間違えるようになるし。


●タッチタイピング

タッチタイプできるかどうかの境目は「知識」にあると考えています。
どこに手を置いてどの指にどのキーを割り当ててどうやって指を運んで戻すのか、
これらの基礎知識がないままキータイプを続けてもあまり上達しません。

見ないのにキーを打てるからくりは、すべてのキーをホームポジションからの
相対位置で覚えるからです。
重要なのは必ずホームポジションに手を置いておくこと。

ホームポジションから打ちたいキーに指を出し、一文字タイプしたらできるだけすぐ
ホームポジションに戻す。
この動作が基本で、あとは徐々に上達するごとにホームポジションを経由しない
指の運びを、おそらく決まったフレーズの組み合わせで覚えていくのだと思います。

たとえば [Y] のキーを押した状態から他のキーへ指を運ぶ動作はキーの数だけ存在
します。
この指の運びを、最初からすべてのキーの組み合わせの数だけ覚えるのはちょっと無理。

だけど常にホームポジションに戻ることで、各キーへの指の運びを1つだけ覚えれば
確実にキーを探せるというわけです。


●小型キーボードとタッチタイプ

小型キーボードでキーピッチが詰まった場合も、とりあえず形だけホームポジションに
手が乗れば何とかなります。
サイズが違うためキーの位置も変わっているはずですが、すべて等幅なら比較的容易に
補正することが出来ます。

それは指を出す方向は一緒だから。
伸ばす距離が変わるだけでキーの位置のあたりが比較的容易に付けられるというわけです。

だから一部のキーだけ変形してキーピッチが狭くなっていたりすると、指を運ぶ角度
が変わってしまいます。あるはずの方向に無意識に手を伸ばしても、キーを探すことが
なかなか出来ないのではないかと考えられます。

1. キー配列が変わっていて一部のキーが別の場所に移動している場合
  そのキーの位置は完全に独自に覚え直し

2. 一部のキーだけキーピッチが変わっている
  そのキーに対して指を伸ばす方向と距離が変わってしまう
  角度と距離の両方に対して補正が必要。

3. 全部等スケールで小さくなった場合
  キー間の距離が違っていても指を伸ばす方向は合っている。

よって 3つのケースでは、全部のキーが等幅の方が一番覚え直すこと、補正する部分が
少なくて済むのではないかと考えられます。

あくまで数字や記号キーを含めてすべてのキーをタッチタイプで入力する前提です。

同じ理由から、EeePC や ELECOM TK-UP84CP 等のように数字の段が微妙に左に
ずれているキーボードは、数字の入力でかなりタイプミスしました。

またせっかく登場した Happy Hacking Keyboard Professional の日本語版も、
最下段 Z X C~ の段が左にずれているので購入を躊躇してしまいます。(悔しい)

・最低限キー配列がそのままであること (シグマリオンや LOOX U のようにキーの位置が移動していない)
・キーピッチを小さくするなら全部まとめて小さくする (部分的に変えない)

これが個人的には理想の小型キーボードです。
だから HTC Shift はかなり気になる存在なのです。


おそらく英語キーボードのスペースに無理矢理日本語キーボードを押し込めた事情が
あるのだとは思います。
それでも全部のキーが等幅な小型キーボードも出して欲しいと切望します。


関連エントリ
VAIO type P Windows7 beta とバックライト調整など
DHARMAPOINT キーボード
Bluetooth キーボード Rboard for Keitai RBK-2000BT2
emobile EM-ONE 改造その2 ([es]もOK)
emobile EM・ONE USBキーボードの改造
東プレ Realforce 買った!



画面は 8インチながら 1600x768。
普段デスクトップ PC で使っている PC モニタと横解像度が同じでフォントを最小に
すると、目に痛いくらい広い。でも文字のサイズは VGA の WindowsMobile 端末でも
これくらいだし、本当に痛いのはグレア液晶のせいかも。

近距離で凝視するスタイルには向かないので非光沢フィルタを貼ってみます。
12.1 インチ液晶用フィルタの短辺がちょうどぎりぎり横幅に一致しました。
細長く切って液晶面だけ覆うように貼りましたがこれは少々失敗。

type P は液晶面がフラットで周囲との段差がなく液晶の枠部分にもうつり込みが
あります。もっと大きめに切って貼った方が良かったかも。
なお枠部分は、本体の色によってうつり込みの印象が異なるかもしれません。
ちなみに黒。


●解像度の計算

ドット(ピクセル)密度を計算してみました。
簡単に求めるには次のようにします。

sqrt( 横 ^2 + 縦 ^2 ) / インチ

画素が正方形という前提ですがこれで dpi (ppi) になります。
実際に定規で測ったり、カタログに載ってる ppi と比べたところほぼ一致するので
これで問題なさそうです。
たとえば type P の 8インチ 1600x768 なら

sqrt( 1600 ^2 + 768 ^2 ) / 8

これを google の検索欄にコピペすると結果が出ます。
実例 sqrt( 1600 ^2 + 768 ^2 ) / 8

> sqrt((1 600^2) + (768^2)) / 8 = 221.846794

だいたい 222ppi (dpi) 。1pixel が 0.114mm くらい。
1mm 四方に 76pixel ほど詰まっていることになります。

同じようにいろいろ計算してみました。

VAIO type P        1600 x 768  8.0inch = 221.8 ppi
EIZO L887          1600 x1200 20.1inch =  99.5 ppi (公式 dotpitch 0.255mm)
EIZO HD2452W       1920 x1200 24.1inch =  93.9 ppi (公式 dotpitch 0.270mm)
BenQ E2200HD       1920 x1080 21.5inch = 102.5 ppi (公式 dotpitch 0.248mm)
LOOX U (Atom)      1280 x 800  5.6inch = 269.5 ppi (公式 dotpitch 0.0945mm)
LOOX U50 (A110)    1024 x 600  5.6inch = 221.9 ppi
EeePC901           1024 x 600  8.9inch = 133.4 ppi
EeePC701            800 x 480  7.0inch = 133.3 ppi
EeePCS101          1024 x 600 10.2inch = 116.4 ppi
Let's note R8      1024 x 768 10.4inch = 123.1 ppi
XPS M1730          1920 x1200 17.0inch = 133.2 ppi

HTC Touch Diamond   640 x 480  2.8inch = 285.7 ppi
iPhone/iPod touch   480 x 320  3.5inch = 164.8 ppi (公式 163ppi)
WILLCOM 03 WS020SH  800 x 480  3.0inch = 311.0 ppi
W-ZERO3[es]WS007SH  640 x 480  2.8inch = 285.7 ppi
Softbank 930SH      854 x 480  3.0inch = 326.6 ppi
Softbank 931SH     1024 x 480  3.8inch = 297.6 ppi

調べた中では PC だと新 LOOX U (Atom) が一番高密度でした。
全体的に携帯端末の方が密度が高くなっていて、携帯の中には 300ppi を超えるものも
あります。

ppi が高いと密度が増えるので、解像度が高くても画面が広いというより、ドットが
詰まって細かいイメージになります。画素が細かくフォントやエッジのぎざぎざも
見えにくくなります。

PC の画面がだいたい 96dpi を想定しており、同じくらいの解像度でモニタが作られて
いるとしたら、type P でも 2.3倍 面積で 5倍以上。
通常のモニタ比で何もしなくても 4x FSAA 相当が色を圧縮しないでそのままの形で
出ていることになります。HD ムービーなどがきれいに見えるわけです。

269.5ppi の LOOX U だと 9x FSAA 相当に近く、300ppi クラスの携帯端末だと
PC モニタの密度比で 9x FSAA を超えていることになります。

モニタのサイズが違うし再生されるコンテンツの大きさも異なるし視聴時のモニタとの
距離も異なるので必ずしも一概に比較できませんが、高密度なモニタは色数が増える
のと同じで効果あるようです。
そういえば外で Touch Diamond の画面を見ていると、たまに紙のようだなと思うことが
あります。

このまま TV や PC モニタの性能が上がったら、Anti Aliasing とか考えずに逆に
見えすぎる解像度をぼかしたり、どう見せるかの方で頭を使うことになるのでしょうか。
それより当面の問題はテクスチャ解像度が足りなくなること。


関連エントリ
VAIO type P Windows7 beta とバックライト調整など



VAIO type P 手に入れました。
このサイズはちょうど昔使ってた MobileGearII MC/R530 と同じくらいです。

MobileGear2 MC/R530  245 x 131 x 28.8 770g  8.1inch  640x240 STN 110000円
VAIO type P VGN-P90S 245 x 120 x 30.8 688g  8.0inch 1600x768 TFT 122800円
(P はバッテリーL で重さは実測 = 688g)

かつて長いこと WindowsCE のハンドヘルド端末(H/PC)を愛用していたことがあります。
ボタンを押すとすぐ電源が入って直前の状態から操作できて、バッテリーも結構持つし
HDD レスで遠慮無く鞄に放り込んで持ち歩くことが出来る。
ちょっとしたメモや議事録などテキスト記録用に重宝していました。

狭いキーピッチは最初は無理だと思ったけど、Libretto 100 → MobileGear II →
Jornada720 を経て、すべて等幅で配列さえ合っていればすべてのキーでタッチタイプ
できることがわかりました。最近は右側記号部分のキーピッチが詰まっているキー
ボードばかりで個人的には少々残念。

H/PC が終了して後継機種も無くなってからは、代わりとなる環境を延々と探し続けて
いる感じです。PocketPC + 外付けキーボードだったり Windows NotePC を試したり
WindowsMobile + Bluetooth Keyboard など。
ずっと WindowsMobile で入力系のソフトばかり作ってるのもそのせい。

現在この用途で活躍していたのが EeePC901。少々重いけどバッテリーが持つので
スリープ状態で電源入れっぱなしでも大丈夫。WindowsCE H/PC のようにすぐ使える
機動性がありました。

ほぼキーボード大の本体で薄くて軽い。(ポケットにも入る)
ファンレス + SSD 、バッテリー L なら長時間持つ。
これならかつての H/PC のように扱えるか、と思い type P に飛びついてみました。


●描画は遅い

EeePC901 より速い構成のはずですが確かに遅いです。レスポンスもだし
特にAero が無効となっているためウィンドウの重ね合わせが変わると再描画が
発生します。この再描画の転送が目に見えるため印象を悪くしている気がします。

Aero だと合成がハードウエアなので他のウィンドウを再描画しません。
CPU に負担がかかって処理が落ちても見た目に変化がないので、処理落ちやあらが
目立ちにくいのだと思われます。
EeePC901 では GPU にそこそこパワーがあるため Aero で快適に使えました。

CPU にかかる負担を減らすことが重要かもしれません。とりあえず標準状態で常駐して
いるソフト類、プリインストールソフトを全部捨てて、Vista と Windows7 を
クリーンインストールしました。EeePC のように。

(ちなみに WindowsCE H/PC の描画はもっと遅かった。MobileGearII MC/R700 などは
コンソールのスクロールが波打つくらいに。)


●ドライバの保存

(1) 購入直後の状態でリカバリディスク作成
(2) C:\Windows\drivers の下を丸ごと SD カードなどに保存


●WindowsVista

パーティションを半分にしてまず片方に WindowsVista を入れました。
SSD 128GB にしておけば良かったかも。
もともと Vista PC なので必要なドライバは付属のものそのままです。
(2) で保存したドライバを使用します。

一応 Aero も使えるので実験 (詳しくはこちら)

Fn キーを使ったキーボードショートカットは音量変更のみ使用できました。
画面の明るさ調整が使えないと不便なので、代わりとなるソフトを作りました。

backlightwin v1.00

実行すると Ctrl + Alt + [F5]/[F6] で画面の輝度(バックライト)調整が出来ます。
もう一度実行すると常駐解除。自動起動するならスタートアップへ。


●Windows7 beta / build 7000

すでに多くの方が挑戦されているので参考にします。

type P wiki Windows7ベータ

Vista と同じく、最初に保存しておいた付属のドライバを適用します。
無線 LAN は最初から認識していますが、そのままだと 11g になります。
付属の無線LAN ドライバに入れ替えると 11n で 300Mbps で接続可能となりました。

入れたもの
・Chipset Driver (Intel)
・Graphics Driver (Intel)
・Ethernet Driver (Marvell)
・Wireless LAN Driver (Atheros)
・Sony Firmware Extension Parser Driver
・Sony Programmable I/O Control Device

やはり音量調節のみ可能で、画面の明るさ変更は出来ません。
Vista と同じように下記ソフトでとりあえず代用できます。

backlightwin v1.00


● VAIO type P は結構速い

しばらく作業していて気がついたのは、VAIO type P (SSDモデル) はきちんと
使っていくと結構速いということ。

たとえば Windows7/Vista 等のクリーンインストールは短時間で終わるし、起動や
終了も待たされません。VisualStudio 2008 のインストールも、時間がかかった
EeePC と比べるとあっけなく完了。
EeePC では結局あきらめたけど、type P なら本体でコンパイルする気になります。
RAMDISK も設定しないでそのまま Vista も Windows7 も使っています。

これまで使ってきた EeePC4G/EeePC901 と比べて SSD の書き込みがかなり速いようです。
type P は GPU が貧弱で描画のレスポンスは遅いけど、SSD モデルであれば最初の印象
よりも結構速くて使えると感じました。

もちろん EeePC901 だってより高速な SSD に交換可能だし、ZIF コネクタにつなぐ
タイプなら各種選べるはずです。type P を見てしまうと、EeePC の SSD ももっと
速いタイプに交換したくなります。


ちょうど Eye-Fi が使えなかったことを機にルータを入れ替えたばかりでした。
type P はプロパティの表示で 300Mbps でつながっています。

LAN 接続(Gbit)の Desktop PC から大きめのファイル (DXSDK_Nov08.exe 483MByte)
をコピーして 15MB/sec 前後の速度でした。おおよそ 120Mbps くらい。
へたに SD カードとかを経由してデータコピーするより速いです。

同じく 11n 対応の EeePC 901 はなぜかプロパティの表示で 135Mbps なので、
ドライバが古いだけかもしれません。



PC を移行したり OS を入れ直したり HDD を交換したりと、何かと環境の再構築が
連続したので個人的なメモです。(Windows Vista)


●Chrome
 ブックマークマネージャーからエクスポートしてバックアップ


●Firefox
 ブックマークの管理からバックアップ&htmlとしてエクスポート


●iTunes
 移行前にコンピュータの認証解除
 データ自体は C:\Users\<USER>\Music\iTunes や設定詳細で指定したフォルダ移行


●Office Outlook (2007)
  C:\Users\<USER>\AppData\Local\Microsoft\Outlook
 の中身を保存しておく。
 Outlook を install し、起動して初期化した後に上のデータを上書き。


●Thunderbird
  C:\Users\<USER>\AppData\Roaming\Thunderbird
 の中にある profiles.ini と Profiles フォルダを保存する。


●3ds Max
 ライセンスを別マシンに export


●個人フォルダ
  C:\Users\<USER>\Downloads
  C:\Users\<USER>\Desktop
  C:\Users\<USER>\Documents
  C:\Users\<USER>\Pictures
  C:\Users\<USER>\Music
  C:\Users\<USER>\Favorites
 移行時はフォルダの移動ではなく、コピーして元を削除する。


●VirtualStore の確認
  C:\Users\<USER>\AppData\Local\VirtualStore\Program Files (x86)
  C:\Users\<USER>\AppData\Local\VirtualStore\Program Files
 Program Files にデータを書き込もうとするアプリケーションのデータは
 こちらに落ちているので一応みておく。


●その他

普段からフォルダごとに分類

・インストール不要なアプリケーションの実行ファイルフォルダ
   Program Files とは別フォルダに分けておくとコピーしてパスを通すだけ

・バックアップが必要なデータ用フォルダ
   別サーバーにミラーしているので無くてもいいけどコピーした方が再構築が楽

・バックアップ不要だけど移行した方が後で便利なデータフォルダ
   ダウンロードしたアプリのインストーラや周辺機器付属のドライバのコピーなど。
   なくても何とかなるので優先度低い。

数百GB~TB クラスになると USB2.0 でもコピーに時間がかかるので SATA でないと厳しい。
仮に 480Mbps 上限いっぱい使えると仮定しても 60MB/s、1TB=4時間半。(実際は数倍かかる)

ATOK2008 はキーカスタマイズをファイルに書き出してあるので install 後読み込むだけ。
テキストエディタなど設定ファイルもまとめて svn に入れて複数 PC 間で共有。

サーバーなどは仮想PCにしてるので、そのうち開発環境も仮想 PC で済むようになるかも。


●移行後

・移行直後なんか Vista が重い
  デフォルトで個人フォルダがインデックス付けの対象となっているため。
  個人フォルダに大量にファイルがあると一通りインデックス化が終わるまで重くなる。
  「コントロールパネル→インデックスのオプション」で対象から外せる

・環境変数の設定画面を簡単に呼び出す
  スタートメニューのアイコン画像を左クリック
   →左側のタスクから環境変数の設定



Atom Z500 系の CPU を使ったノートが増えてきました。
小型軽量なものも多く魅力的です。
レビュー記事を見ていると Vista や Windows7 の Aero は off になっているとのこと。
気になったので調べてみました。

使われている GPU はチップセット (System Controller Hub) US15W 内蔵の GMA500。
最近携帯デバイスで多く使われている PowerVR core の一種ですが、アーキテクチャが
さらに進化した SGX に属するもののようです。

その特徴は Unified Shader であること。
DirectX10.1 (Direct3D10.1) 世代に対応できるだけの高度な機能を持っており、
VertexShader, PIxelShader や GeomteryShader を実行可能。
32bit float 演算可能でプログラム長の制限もなく分岐等の制御命令も備えています。
GPGPU として汎用処理に用いられることも想定しているようです。

機能だけ見ると GMA950~ 等よりも上に見えます。
実際に D3D10 対応ドライバが出ているのかどうか、Windows で D3D10.1 や
ShaderModel4.1 が使えるのかどうかわかりませんが、かなり興味が出てきました。

ドキュメントはこのあたりから落とすことが出来ます。
IntelR System Controller Hub US15W Technical Documents

詳しい仕様は Datasheet の方で、Specification update でいくつか更新が入っています。
(update の方で 2GB RAM 対応が書かれています)

datasheet 「9 Graphics, Video, and Display」の一番最初、頂点性能なのに
15 clock/triangle と書かれている点がまず気になりました。
これは 3頂点分なのか、直後に書いてあるように
「 Vertex/Triangle Ratio average = 1 vtx/tri 」で 1頂点分なのか、
それとも 「 peak 0.5 vtx/tri 」の方を指している (つまり1頂点の半分の数値)
なのか曖昧です。

ただ 1頂点で 15cycle は少々多すぎような気がします。実際に計算すると
200MHz 動作なので 13.3M triangle/sec 。
wikipedia PowerVR に書かれている SGX535 の 28Mpoly/sec と比べて半分ほどです。

またピークの fill rate は 2pixel/clock と書かれています。
200MHz なので 400Mpixel/sec。
この数値は GPU としてはかなり低く GMA950 の数分の一。ここで重要なのが
PowerVR であるという事実。PVR はバスの効率を 2~3 倍とみなすため、
800M~1Gpix/sec 相当と書かれていることがあるようです。
Z/Stencil を内部メモリだけで処理可能で、3D のシーンなどポリゴンの重なりが
多くても、描画順に依存せずに常に一番上のポリゴンのみ描画可能だからです。

200MHz という記述は datasheet p.46 (CFG による選択で GFX 200MHz) や
Specification update の p.12 に Graphics Frequency 200MHz と書かれています。
112/160MHz はモニタ出力時のドットクロックのことで、core の動作クロックでは
ないようです。

NVIDIA や AMD で sp, spu 等と呼ばれているシェーダーユニットは、PowerVR SGX
だと USSE (Universal Scalable Shader Engine) という名称になっています。
例えば下記 wikipedia の記述を見ると SGX520~540 の性能はちょうど整数倍です。

wikipedia PowerVR

GeForce や RADEON のように、シェーダーユニットの個数でグレードを分けている
のかもしれません。となると問題は GMA500 にはいったい何個載っているのか。

datasheet の説明を読むと、どうやら USSE は 2個ではないか、と思えます。
wikipedia の記述には GMA500 のシェーダーユニットは 4個と書かれています。
(SGX535相当とのこと) でも 4個だといまいち計算が合いません。

wikipedia Intel GMA

datasheet には同時に 4つのシェーダーが実行可能状態になると書かれていますが、
もしかしたら同時実行ではなくインターリーブしている可能性もあります。
(ちなみに待機状態を含めて 16スレッドの状態を同時に保持できるようです。
レジスタは 1スレッドあたりスカラー 128個)
また下記の記事を見ても 535 までは USSE は 2個であるとのこと。

Centrino Atomにも搭載されるIMGのPowerVRビジュアルIPコア

さらに PowerVR の本家サイト下記ページから、Intel CE3100 の pdf を
読むことが出来ます。

Imagination Intel

Intel CE3100 は同じく GMA500 を搭載したメディアプロセッサで、pdf によると
dual USSE、13M triangle/sec、 2pixel/clock と書かれていました。
こちらの数値 13M triangle/sec は 200MHz 動作の 15clock/triangle とも
一致しますし、US15W の GMA500 と同じと思って良さそうです。
結局 SGX530 に近い数値ですが、同じものなのかそれとも計算方法が違うのかは
わかりません。

USSE の演算ユニットの構成は詳しくはわかりませんが ALU は 32bit 幅とのこと。
他の GPU でも D3D10 世代の Unified Shader はスカラー単位で動作しているので
USSE も同じような構造になっているのかもしれません。

もし 1 USSE が 1 ALU だとしたら、unified shader をフルに割り振っても
float4 の計算に 2cycle かかります。2pix/clock に間に合いません。
datasheet によると ALU は float x1 または fixed16 x2 または int8 x4 を
SIMD として一度に演算できるそうです。
レガシーな GDI のように 8bit ×4 の 24/32bit color ならば 1 ALU だけで済みます。
この場合のみ 2pix/clock が実現できるという意味かもしれません。

逆に言えば pixel にも float 演算が必要な ShaderModel2.0 以降は、ピクセル処理
速度が 1/4 になるということ。RGB だけでも 1/3。
ShaderModel1.0 でも符号付き 8bit なので 9bit 必要です。
おそらく fixed16 の演算が必要になると思われます。この場合 1/2。
Unified Shader なので頂点や GeomteryShader など他の処理も割り込みます。

もしこれらの仮定が正しいとするなら、GMA500 は pixel 性能が足りていないのだと
予想できます。3D のように深い重なりが無ければ PowerVR の特性も活かせず、
タイトなバスがそのまま見えてしまうでしょう。

特に Aero が半透明やレンダリング途中のフレームバッファを使った特殊効果を
利用しているなら、PVR の良いところがさっぱり発揮できていないのかもしれません。
よくよく考えると相性悪そうです。タイルをまたぐ大きなポリゴンも多いし。
さらに ShaderModel2.0 以上を必要とする Aero だと、シェーダーためにカラー
演算能力が 1/4 になっている可能性もあります。

Aero が使えなくても D3D10.1 相当のシェーダーが使えればおもしろそうなので、
実物を触る機会があったら試してみたいと思っています。
そういえばテクスチャユニットとかは全く情報がありませんでした。

これらの内容はすべてドキュメントを元にした想像で書いていますので、
実際に検証しながら調べたわけではないです。
いろいろ勘違いしている可能性が高いですのであらかじめご了承ください。
間違いがありましたらごめんなさい。

続き>Intel GMA500 のスペックについて考える。続き (2)


●EeePC 901-X

これまでもずっと EeePC 901 で WindowsVista を使い続けてきたため、特に違和感も
無く普通に使えています。
ただ Vista の時と同じように RAMDISK の設定は行いました。

EeePC の画面縦 600dot だとダイアログが切れることがあるため、タスクバーは左端
縦に配置しています。もともと文字が無くアイコンだけなので意外に大丈夫かも。
Windows7 のタスクバーは他のウィンドウの下にならないので、解像度が足りないと
結構邪魔です。

電源設定は修正。休止状態無しでスリープのみ行うように。
仮想メモリもページングファイル無しに設定しています。

BIOS を更新したらログイン画面などで暗転するようになったので徐々に戻しました。
とりあえず BIOS 902 だと問題なく動いています。
× 1808, 1703, 1301
○ 902
これ以外は未確認。

エクスペリエンスインデックスは、ページングファイル無しで、かつテンポラリを
RAMDISK に設定していると評価に失敗します。
あれこれ設定を行う前に評価を済ませておいた方が良いです。


●FMV BIBLO LOOX U50

A110 800MHz の古いタイプなので、Atom 機と比べると重いです。
ですが、もともと Vista が乗っているマシンなのでほぼそのまま。
指紋認証は使っていませんがワンセグも動いています。
タッチパネルの補正が失敗。
追記: タッチパネル補正できました。

FMV BIBLO LOOX U50X/V
Intel A110 800MHz / RAM 1GB / 1.8HDD
CPU 1.5
RAM 3.9
AERO 2.0
GAME 2.4
HDD 3.7

EeePC 901-X
Atom N270 1.6GHz / RAM 2GB / 32GB SSD (SHD-DI9M)
CPU 2.2
RAM 4.5
AERO 2.1
GAME 3.0
HDD 2.9



関連エントリ
LOOX U でも Windows7 beta
EeePC 901 Windows7 beta
EeePC 901 SHD-DI9M 32G と Vista 設定 (2)
EeePC 901 の SSD 交換 BUFFALO SHD-DI9M 32G と Vista
EeePC 901 に Windows Vista その5
EeePC 901 に WindowsVista



looxu50 windows7 beta
LOOX U50 Windows7 beta build 7000

LOOX U50X/V A110

CPU  1.5
RAM  3.9
AERO 2.0
GAME 2.4
HDD  3.7

クリーンインストールです。
EeePC 901 同様最初から Aero ON でした。
LAN/WLAN はそのまま認識したのでネットは使えます。
いくつか足りないドライバがあるけどワンセグその他
追記: 付属 CD-ROM アプリケーションディスク1 より
pt901_p1, button\driver, button\utility, o2micro, fpsensor を install

EeePC 901 はこちら

EeePC 901 N270

CPU  2.2
RAM  4.5
AERO 2.1
GAME 3.0
HDD  2.9



関連エントリ
EeePC 901 Windows7 beta



とりあえず EeePC 901 で試しています。
Windows7 beta build 7000
RAM 2GB + SSD 32GB へ増設済み

eeepc win7

LAN/WLAN 以外はそのままで認識。最初から Aero Glass が有効でした。
LAN/WLAN ドライバは Vista と同じように付属 CD-ROM のもので OK。

Vista フルインストール時と異なり最初から使い物になる印象。
不要なサービスを切ったり設定を詰めなくても軽いです。
RAMDISK 等何も設定していませんが十分かもしれません。
AeroGlass の描画は、Vista の方がかっちり同期をとって描画していた印象。
ただしまだ beta なので何ともいえません。

いろいろ使いやすく軽くなっている反面、Vista で気に入っていた設定が
できなくなってるところも結構あって複雑な気分。
タスクバーとかは慣れが必要です。

d3d10warp.dll、d3d11.dll が最初から入っています。
d2d1.dll というものも。


関連エントリ
EeePC 901 SHD-DI9M 32G と Vista 設定 (2)
EeePC 901 の SSD 交換 BUFFALO SHD-DI9M 32G と Vista
EeePC 901 に Windows Vista その5
EeePC 901 に WindowsVista