[24051]  32ビットPCIの限界
投稿者:KAZZEZ さん   2007-01-08 19:03:29
i-RAMでWin2kのソフトウエアRAID0(ストライピング)を試してみました。
以前報告しましたiRAM関連ということもありますのでここで報告させていただきます。

2kのストライピング機能については過去ログで何度か報告があり、
速度向上面での効果はまちまちのようです。私の試す限り、
V13(G8VER)オンボードIDEで4.3GBx2のHDDを動かす限りは速度向上幅は1割程度ですが、
ATA133RAID-PCI上では期待通りシングル比で2倍近い高速化ができましたので、
I/Fの性能やCPU負荷によって、どう出るか変わりそうです。

まずはHDBENCH(3.30)の結果を。
溝1RaマザーG8YKK W A2(ITF rev0.04)、PenII SL2S7@366MHz、Win2k SPなし
iRAMで512MBのFAT領域作成、ダイナミックディスク化。
I/Fは特に断りの無い限り、玄人由来と思われるバルクジャンクです。
当然ながら起動阻害対策(または98用BIOS)は必要です。

シンプルボリュームの結果
Read Write I/Fのチップ
92168 33343 SiI3114
105458 33127 SiI3112
109989 101285 SiI3124
101285 93005 VT6421L(SATA部)

ストライプボリューム(2台)の結果
Read Write I/Fのチップ
109989 35176 SiI3114
109989 33562 SiI3112
111182 102296 SiI3124
91346 92168 VT6421L(SATA部) ←なぜかスコアが落ちます・・・。

# UltraATA133 I/Fも使えますが、SATA変換アダプタの律速があるので割愛。
# 複合ボードについてもブリッジで結構遅くなります。

面白いことにReadとWriteでは傾向が異なり、
Writeはストライピングしてもあまり効果がないようです。
一方のReadは110MB/Sくらいで頭打ちになっています。

また、過去ログでは
http://weblabo.griffonworks.net/dorlog/2nddorcom/98maniacs/18454.html
PCI2スロット使ってそれぞれにI/Fを繋ぐと良いらしいですので、やってみました。
Read Write I/Fのチップ
105458 33343 SiI3112×1枚シンプルボリューム
105458 36954 SiI3112×2枚(片方はIwill製)ストライプボリューム
今度は逆にReadに効果がなく、Writeが(1割程度ですが)高速化しています。
ReadとWriteでは律速の原因が異なるようですが、
識者の方々はどう捉えますでしょうか?

ReadについてはPCIそのものの実効速度に達しているのかもしれません。
http://weblabo.griffonworks.net/dorlog/2nddorcom/98maniacs/22294.html
過去ログによりますと、既にWin2kのソフトウエアRAID(ストライピング)利用で
32ビットPCIの限界は115-120MB/Sくらいだと言われていました。

2kのソフトウエアRAIDでのHDBENCHの値を過去ログ検索する限り、
PenIIIなど高速マシンで特に高速化しそうな傾向がありましたので、
PenII@366MHz→河童Celeron600MHzに変えてみましたが、
ストライプボリューム(2台)にて、
Read Write I/Fのチップ
106555 32394 SiI3114
105458 34350 SiI3112
103329 99320 SiI3124
85261 88965 VT6421L(SATA部)
と、かえって遅くなる始末です。orz
PCIバスの速度はCPU速度よりもL2やレイテンシの影響を受けるのでしょうか??

そこで最速だったSiI3124ボードを、
PL-iP3/Trev2+PenIII 1.1G@733Hzで試してみました。
ストライプボリューム(2台)にて、
Read Write I/Fのチップ
114926 106555 SiI3124
116231 113651 SiI3124(さらにINTELSAT 54 00 58 2C 相当を施したもの)
どうにか前述の32ビットPCIの限界(?)付近まで高速化できたようです。

これ以上高速化するためにはPCIバスをオーバークロックするしかないのでしょうけど、
本当にPCIバスの限界なのでしょうか?
もし、それ以外で高速化の余地がありましたらご指摘いただけますと幸いです。
  1. KAZZEZ さん   2007-01-10 11:55:13
    そういえばcache line size の問題もあったのですね。
    http://weblabo.griffonworks.net/dorlog/2nddorcom/98maniacs/21983.html
    失礼しました。後で試してみます。
  2. maya さん   2007-01-10 17:55:09
    全く実用的ではないベンチ用でしたら
    PCIレイテンシタイマーを32clock(たぶんこれくらいが規定値)>64/128と変えると連続空間へのアクセスは早くなります
    ベンチ仕様ですので、PCIバスがランダム空間にアクセスする場合は逆に速度は落ちます

    PCIバスのバースト転送だけを早くする方法を見つければ120MB/sec近い速度は稼げるのではないでしょうか
    #個人的にはPCIclockが40MHzや45MHzにあげて(安定して動いている状態で)ベンチマークをとったのをみてみたい気分です
  3. KAZZEZ さん   2007-01-15 00:53:49
    情報ありがとうございます。
    レイテンシ等の調整はフリーソフトか何かを探せばよいのでしょうか?
    何か見付かれば試してみたいと思います。

    まぁ、こちらとしても数字を追うのが目的ではなく、
    ページファイルを置くことでハイパーメモリCPU的な使い方
    # というかWin3.1時代のアイオーのCバスEMS(Win上でスワップファイルに利用できる)
    を模索することで、以前どる仲で話題に出たUC BENCHのような
    メモリ1GBを要求するようなアプリを少しでも快適に動かすことが目的です。
    ・・・なので、
    > 安定動作
    は大切ですね。
    # i-RAM自体が(PCIバス外で動かすと)不安定という話もあるようですが・・・。

    本題ですが、ひとまずCACHE LINE SIZEを書換えて試してみました。
    CHACHAを使えば手っ取り早かったのですが、ちょっとレジスタを書換えるだけなら
    自分でもやってみようと思ったのが運の尽きで、結局まる3日も掛かってしまいました。orz

    まずCACHE LINE SIZEの初期状態を調べたところ、
    SiI3112、3114、についてはデフォルトでゼロですね。
    これを8に書換えるとWriteがだいぶ向上しました。

    3114については前から言っている通り、基本的には3112よりも遅いのですが
    なぜかREADにもCACHE LINE SIZEが効果あったり、
    ストライピングやメモリチューンの効果も大きく、高速化の余地があるようです。
    最終的に3112に優るとも劣らないREAD速度をはじき出しました。
    頭打ちまで高速化すれば3124ともあまり変らないのですが、
    総合的にはやはりSiI3124が若干高性能な印象はありました。

    3124についてはPC-98用非公式BIOSでデフォルトのCACHE LINE SIZEが
    8でしたので、最初からWRITEが速かったわけですね。
    ただしBIOSを外したらデフォルトでゼロとなり、
    3112や3114同様にWRITE速度はかなり落ちました。

    SiI0680やVT6421もデフォルトはゼロのようでしたが、
    なぜか最初からWRITEはそれなりの速度です。
    ドライバ内で設定しているのでしょうか?

    なお都合により今回は河童セレ600での測定だったのと、
    結局のところREADの速度があまり変らないので
    PCI速度の限界を超えるまでには至っていません。

    また、まだHDBENCHの値の詳しい集計や比較していませんので
    READとWRITEの頭打ち傾向の違いについても考察していませんから、
    また何か気付いたことがありましたら報告します。
  4. maya さん   2007-01-15 01:39:56
    >なぜか最初からWRITEはそれなりの速度です。
    Win2kは基本的にATA/ATAPI機器以外はライトバック動作です
    ですからディスクキャッシュにどんどんためられていっているのではないでしょうか

    PCIはコマンド、データが共通のバスだったと思いましたから
    コマンド発行回数を減らせば見た目上実効帯域があげられます
    #正からぶりしたときのペナルティーが大きい

    設定はintelsatでできると思います。
    標準のPCIレジスタをいじるわけです、データシートをみていないので断言できませんがPCIのデータ長を最大まで長くするなどを行えば見た目上早くなるはずです
    #PCIレイテンシタイマーという名前ですからPCIの待ち時間を使ってデータ帯域を稼ぐわけですからOSとしてみると割り込みが長くてコマンドがいれれないデバイスになってしまいますが
  5. KAZZEZ さん   2007-01-15 21:02:18
    > 3114については (中略)
    > 頭打ちまで高速化すれば3124ともあまり変らないのですが、
    > 総合的にはやはりSiI3124が若干高性能な印象はありました。
    補足しますとSiI3112と3124はCACHE LINE SIZEとメモリチューンとストライピングで
    READ/WRITEとも約110MB/Sの頭打ちまで高速化しましたが、
    3114はもともとWRITEが遅く、CACHE LINE SIZEの設定をしただけでは60MB/S前後です。
    メモリチューンとストライピングで100MB/Sくらいまで高速化しました。

    > 設定はintelsatでできると思います。(後略)
    なるほどそういうことでしたか。
    0DhにそれらしいものがありましたのでIPLwareでE0hにしてみましたが、
    目に見える数値変化はありませんでした。
    念のためI/F側の同じ場所も書き換えてみましたが同様でした。
    iRAMがもともと速いということでしょうか。