Windows2000/XP共通の話題
遅いハードディスク
●せっかく増設したのに何故か遅い... 80GBのハードディスクを増設し、無事Dドライブとして使えるようになりました。さっそくアクセス速度を計測してみました。 ======================================================================= ●●●● CrystalMark 0.6.17.49 2002/9/30 (C)ひよひよ ●●● Crystal Dew World [ http://kotan.ec.hokudai.ac.jp/~hiyohiyo/ ] 【 CPU 】:Athlon (K7) 【 クロック 】:604.22(100.70x6.00) MHz x 1 【 CPUID 】:AuthenticAMD 612 【 NameString 】:AMD-K7(tm) Processor 【 OS 】:Windows2000 [ 5.0 Build 2195 ] 【マザーボード】: [ AMD 750 ] 【ビデオチップ】:NVIDIA GeForce2 GTS/Pro (NV15) 【 メモリ環境 】: [ 512 MB ] 【 HDD 】:ST380021A 【 画面モード 】:1024x768 (32bit) Smoothing Normal (中略) 【 HDD 】: 523 Read: 2.5 MB/s ( 126) Write: 2.6 MB/s ( 132) RandomRead: 2.5 MB/s ( 128) RandomWrite: 2.7 MB/s ( 137) ======================================================================= CrystalMarkというソフトを使ったのですが、2.5MB/s って....遅すぎ(涙。何かの間違いではと思いRAID0構成(FASTTRAK66)のCドライブも計測してみたのです。 【 HDD 】: 4851 Read: 28.6 MB/s ( 1463) Write: 27.3 MB/s ( 1398) RandomRead: 19.2 MB/s ( 983) RandomWrite: 19.7 MB/s ( 1007) 一桁違う...。RAIDには及ばないにしても、2.5MB/sはやはり遅すぎ...。80GBだなんて欲張りすぎだったのか....ってそういう問題な訳ではないはず(汗。Ultra ATA66仕様のハードディスクがこんなに遅い訳がない....。 ●転送モードがDMAではなくPIAモード...(汗 本来なら、「DMAモード」で動くはずなのに、「PIOモード」.....。昔のハードディスク時代の転送方式です。 ●転送方式 モード番号 最大転送レート 対応規格 ハードディスクがデータを読み書きするときの、データの転送方式。これにはいくつか種類があります。技術の進歩により現在では、Ultra DMA方式が主流になっています。 ●PIO IDEインターフェイスにおけるデータ転送方式の一種。 CPUがI/Oポートを直接アクセスして、IDEインターフェイスとデータのやり取りをする。 CPU負荷が高い。 モード0 3.33Mbytes/s モード1 5.22Mbytes/s モード2 8.33Mbytes/s モード3 11.1Mbytes/s モード4 16.6Mbytes/s 0x10 ●Singleword DMA IDEインターフェイスにおいて、データを1個ずつDMA転送するモード。 DMAは「Direct Memory Access」の略で、システムのCPUを介すことなく、 デバイスからシステムのメモリ(またはその逆)へのデータ転送を行なう方法。 CPU負荷はPIO転送に比べて低い。 モード0 2.08Mbytes/s モード1 4.16Mbytes/s モード2 8.33Mbytes/s ●Multiword DMA IDEインターフェイスにおいて、複数のデータを連続的に一括でDMA転送するモード。 モード0 4.16Mbytes/s モード1 13.3Mbytes/s モード2 44.4Mbytes/s 0x410 ●Ultra DMA Ultra ATA(IDEの拡張仕様)で規定されたIDEインターフェイスの転送モード。 モード0 16.6Mbytes/s モード1 25Mbytes/s モード2 33.3Mbytes/s Ultra ATA33 0x2010 モード3 44.4Mbytes/s モード4 66.6Mbytes/s Ultra ATA66 0x8010 モード5 100Mbytes/s Ultra ATA100 0x10010 注)Windows 2000 の標準 ATA ドライバは UltraATA/66(モード4)までしか対応していません。 サービスパック2(SP2)以上を適用するとモード5も対応可能になります。 私の場合、PIOのモード0よりも遅いんですが...(滝汗。 ●対策 1.マザーボードの仕様の再確認 データの転送速度は、マザーボードで使われているチップセットによって左右されます。古いマザーボードでは、同じUltraATAでもATA33迄、或いはUltraATA66迄しか対応していない場合があります。この場合に、UltraATA100仕様のハードディスクを取り付けてもチップセットが対応している上限迄の転送速度しか出せません。「Ultra ATA/133カード」等を購入し、拡張スロットへ取り付けてそこへハードディスクを接続すると、マザーボードのチップセットの上限を超えてデータの転送速度を向上させる(読み書きを速くする)ことは可能です。 私の使っているパソコンのマザーボードはASUS社のK7Mという製品。このマザーボードには「AMD751」というNorth Bridgeチップセット(DMAやメモリなどをコントロールしているLSIチップ)が使われていて、UltraATA66まで問題なく対応しているはずなのに....。 2.ハードディスクメーカーの特殊ツールソフトを使用 最近のハードディスクは、工場出荷時にUltraATA100モードの状態で出荷されていることがあります。UltraATA100モード迄使えるという上限なので、そのままの設定値で問題ないはずですが、BIOSの仕様によっては認識できない場合もあるようです。そこで、ハードディスクの初期設定値を変更してみることしにしました。今回増設したハードディスクはSeagate社の「ST380021A」という製品でしたので、Seagate社のWebサイトからソフトをダウンロードしました。「Ultra ATA/100 Configuration Utility 」というソフトです。 Seagate: http://www.seagate.com/support/disc/drivers/ これで、専用のフロッピーを作り、フロッピーからパソコンを起動し、キーボーは日本語キーボードを使っていますが、選択画面では「101英語キーボード」を選択してソフトを起動しました。英語101キーボードを前提に作られているソフトであり、こうしなければ正常に動かないからです。起動後、「Ultra DMA4(66MB/Sec)」という選択へ変更して、再起動してみました。 でも、やっぱりPIO転送じゃん...(涙。 3.ドライバソフトのアップデート K7Mマザーボードには「AMD751」というチップセットの他に、「VIA VT82C686A」というSouth Bridgeチップセットが使われています。ハードディスクの転送速度は、ドライバソフトの性能に左右される場合があります。そこで、VIA社のサイトからドライバソフトである「VIA Bus Master IDEコントローラー」のアップデートを行う為に、VIA_4in1_443v.zipというファイルをダウンロードしました。 http://www.viaarena.com/?PageID=2 ドライバソフトを更新し、再起動してみました。 でも、でも、やっぱりPIO転送じゃん...(涙。 (ご参考) North Bridge CPUプロセッサとメイン・メモリ、拡張バスを相互に接続してデータの橋渡し(Bridge)の役割を担うマザーボード上のLSIチップ。 South Bridge IDEやUSBなどのI/Oインターフェイス、PCIやISAといった拡張バスを相互接続するブリッジ回路などが内蔵されているマザーボード上のチップ。I/Oコントローラを統合したLSIチップ。 ●転送速度の情報はどこに格納されているのか BIOSで認識した情報がWindowsへ引き継がれ、レジストリに格納されています。 Windows2000やXPではWindows若しくはWinNTフォルダの中のsystem32のそのまた下のconfigというフォルダの中にsystemというファイルがあって、そこに格納されます。レジストリは、壊れてしまうと、Windowsが起動できなくなり、最悪は再インストールが必要になります。 万が一の事態に備えて、『ERUNT』等のツールを使って、時々「レジストリのバックアップ」をお勧めします。 Windows98のときはScanregといったいいツールがあったのに、なぜ2000やXPには無いんでしょうねえ? レジストリに格納された転送速度の詳細は、regedit.exeを使用して確認できます。 [スタート]−[ファイル名を指定して実行] から regedit を起動し、HKEY_LOCAL_MACHINE \SYSTEM \CurrentControlSet \Control \Class \{4D36E96A-E325-11CE-BFC1-08002BE10318} を参照します。 その中に0000、0001等、IDE チャネルのキーが並んでいると思います。番号をクリックしていって、ハードディスクが接続されているチャネルの情報を探します。下の図では、0002の中にプライマリー IDEチャネル(Primari IDE0とIDE1)の情報が格納されている場合の例です。0000以降どこに格納されているかは、ハードウエア構成によって変わります。0002に格納されているとは限りません。 「MasterDeviceTimingMode」というのがIDE0に接続されたハードディスクの転送速度で、上の図では0x00008010(32784)の値になっています。0x00008010、つまり「0x8010」なので、「Ultra DMA モード4 66.6Mbytes/s Ultra ATA66」で動作していることがわかります。Windows2000では、このようにレジストリの中を参照しないとモードまで確認できませんが、WindowsXPの場合は、デバイスマネージャでモードまで表示されるようになりました。 ●BIOSの設定を変更して解決 さて、PIOモードで非常に遅い不具合の解決ですが、私の場合は次のような作業で、無事Ultra DMAモードにすることができました。 1.Primari IDE0を NOT INSTALLからAUTO認識へ変更 2.起動優先順位を「FD、IDE0、CD-ROM」から「FD、SCSI、CD-ROM」へ変更 これにより、IDE0はブートドライブから外れ、FASTTRAKがSCSIとして2番目の順位になり、Cドライブとして起動するようになった。レジストリの値も保持され、Ultra DMAモードと表示されるようになりました。 優先順位で、「FD、IDE0、CD-ROM」の順にし、かつPrimari IDE0をNOT INSTALLにしていたのは、私が勘違いをしていた為なんです。CドラブのFASTTRAK66をIDE仕様と考え、そして、DドライブとしたいIDEのハードディスクがCドライブとして先に認識しないようにするにはPrimari IDE0をAUTOにしてはいけないと勘違いしていたのです。確かにFASTTRAK66ではATAPI仕様のハードディスクを使うのですが、FASTTRAK66のカード自体はBIOS上はSCSIカードとして認識されます。ですので、起動優先順位をIDE0よりもSCSIを優先させるようにすれば、別にNOT INSTALLといった設定にする必要は無かったのです。 そして、このNOT INSTALLという設定の為に、IDE0に取り付けた80GBのハードディスクは、BIOSが情報を拾えない為に、PIO転送になってしまっていたのです。BIOSがWindowsへ情報を渡せなかったので、WindowsはしかたがなくPIO転送にしていたのです。BIOS上の設定でIDE0をAUTOにすることで、80GBのハードディスクの情報がWindowsへ正しく引き継がれ、Ultra DMAの転送モードに直すことができました。 まあ、早い話が私の勘違いでPIO転送になっていたというわけなんですが...(滝汗。 Dドライブが「UltraDMAモード4」に正しく認識された後、もう一度転送速度を計測してみました。 Cドライブ(FASTTRAK66 RAID0) 【 HDD 】: 4851 Read: 28.6 MB/s ( 1463) Write: 27.3 MB/s ( 1398) RandomRead: 19.2 MB/s ( 983) RandomWrite: 19.7 MB/s ( 1007) Dドライブ(UltraATA66) 【 HDD 】: 5200 Read: 26.2 MB/s ( 1340) Write: 26.3 MB/s ( 1349) RandomRead: 23.9 MB/s ( 1225) RandomWrite: 25.1 MB/s ( 1286) Gドライブ(SCSI) 【 HDD 】: 1251 Read: 6.7 MB/s ( 344) Write: 5.1 MB/s ( 262) RandomRead: 7.6 MB/s ( 389) RandomWrite: 5.0 MB/s ( 256) RAID0のCドライブよりも、RAIDでは無いDドライブのほうが速いんですが...(汗。 (2003年1月18日) 「動け!Windows 」 Home > ソフトウエア関連 > 遅いハードディスク |