Image: Windowsの設定をSSD用に最適化する [Win7]

SSDの性能を最大限に引き出すために、今回はSSD利用に適した設定を行う方法について扱うことにします。

○前提条件

BIOS設定画面などでATAコントローラーの動作モードがAHCIモードであることを確認する。とはいえ、Windows 7プリインストールモデルはほとんどが標準でAHCIモードになっているため、設定をいじっていない限りは特に気にする必要は無い。一部の機種では古いOSとの互換性をとるためにAHCIモードとIDE互換モードを選べるが、IDE互換モードはNCQやTRIMをサポートしていない。
→ IDEは標準ではNCQやTrimをサポートしていませんが、例外があります。NCQはサードパーティ製のHDDコントローラー用デバイスドライバで対応している場合があります。TrimはAHCI/IDEに関係なくIntel SSD Toolboxなどのツールから実行できます(手持ちの古いマザーボード(nForce4チップセット)で確認。)(2012/12/21追記)
ASUS UEFI BIOS

Intel製チップセットかつRAID構築環境では最新のIRSTドライバーをインストールする。Intelのダウンロードサイトから「ソフトウェア製品」→「チップセット・ソフトウェア」→「インテル・ラピッド・ストレージ・テクノロジー」を選択。
「インテル・ラピッド・ストレージ・テクノロジー」をダウンロード・インストールする。
基本的にRAID構築環境ではTrim機能は使えないが、Intel SSD Toolbox バージョン3.1.0以上と Intel Rapid Storage Technology バージョン11.0以上がインストールされていて、かつTrimに対応したIntel SSDで構成されたRAID0アレイドライブに対してTrimを実行できるようになった。ただしWin8は未対応。(2012/11/03追記)

○Intel Solid State Drive Toolboxを使った設定

Intel製のSSDであればIntelが無償で提供している最適化ソフトウェアを利用できる。
Intelのサポートサイトから「ソリッドステート・ドライブとキャッシュ」→「Intel ハイパフォーマンス Solid State Drive」→製品名 を選択。
「ドライバとソフトウェア」を選択して、「Intel Solid State Drive Toolbox」をダウンロード・インストールする。

○Intel SSD Optimizerを使ったTrim通知による最適化

Trimは補助記憶装置(HDD・SSDなど)のインターフェースを定めるATAという規格で定義されている。正確にはATAコマンドセットのうちのDATA SET MANAGEMENTコマンドのTRIM属性ビットを指す。TRIMは削除してよい領域をセクタ単位でSSDに通知するものであり、その後アイドル時にSSD内部でガーベージコレクションを行って消去可能なブロック(フラッシュメモリの消去可能な最小単位)を作る。これによって記録可能なエリアを増やし、性能が低下することを防止できる。
Windowsのコマンドプロンプトで実行するような「コマンド」とは意味が異なるので、勘違いしないように。

TrimはWindows 7では標準でOSレベルでサポートしているが、Windows XP、VistaではそのSSDのメーカーが用意するソフトウェアを利用する必要がある。Intel製SSDでは「Intel SSD Optimizer」を使う。
「Intel Solid State Drive Toolbox」を起動して「Intel SSD Optimizer」を選択する。「実行」ボタンをクリックするとTrim機能による最適化を今すぐ実行。「スケジュール」ボタンでTrim機能による最適化を定期的に実行するようにスケジュールを設定する。Windows 7ではこれらの操作は基本的に不要だが、Intelはこの操作を定期的に行うとより良いとしている。
SSD Optimizer - Intel Solid-State Drive Toolbox
SSD Optimizer - Intel Solid-State Drive Toolbox

Trim通知が発行されているかどうかは、SATA用のプロトコルアナライザを使って物理的に信号を確認しないとわからない。

Serial ATA (SATA) 開発ツール - 東陽テクニカ

○Windowsの設定をSSD用に最適化

左のメニューから「System Tuner」を選択。変更すべき設定項目がある場合はその右に「調整」ボタンが表示されるので、それをクリックする。
各項目の詳しい説明はヘルプを参照すること。
System Tuner - Intel Solid-State Drive Toolbox

ここからはIntelのツールを使用しない共通の設定です。

○Windows 7のTrim通知機能が有効かどうか確認する

Windows 7では標準でTrimがサポートされているためIntel SSD Optimizerなどを実行する必要は無いはずですが、念のため機能が有効であることを確認しておきます。

まずはコマンドプロンプト(cmd.exe)を管理者権限で起動。
「fsutil.exe behavior query DisableDeleteNotify」を実行する。
「DisableDeleteNotify = 0」というメッセージが返ってきたらTrim通知は有効。
「DisableDeleteNotify = 1」というメッセージが返ってきたらTrim通知は無効。
「fsutil.exe behavior set DisableDeleteNotify 0」を実行するとTrim通知が有効になる。

DOS/V Power Report誌によれば、パーティション作成、フォーマット、クイックフォーマット、パーティション解放、ごみ箱を空にした時にTrimが送信されるようです。マイクロソフト公式では詳細な条件は公表されていません。こちらの資料を読む限り、ファイルの移動や圧縮でもTrimが送られるようですが、やはり詳細は不明です。
[参考文献]

○手動でWindowsのSuperfetch/Prefetch機能を無効にする (SSDをシステムドライブとして使用している場合のみ)

Superfetch/Prefetch機能はよく使うプログラム・ファイルをハードディスクからメモリにあらかじめ読み込んでおく(キャッシュ)機能です。SSDをシステムドライブとして使用する場合は、もともとアクセスタイムが少ないSSDではこの機能はあまり効果が無いので無効にしておきます。Windows 7の場合はパフォーマンス評価でSSDと判断したら自動でSuperfetch/Prefetchを無効にするはずですが、無効にならないことがあるようです。
Intel SSD ToolboxではSuperfetch/Prefetch機能が無効になっているかを確認、またワンクリックで無効に出来ます。

レジストリエディター(regedit.exe)を起動。
左のツリーから「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\PrefetchParameters」キーを開く。
右側の画面で「EnablePrefetcher」と「EnableSuperfetch」の項目の値を0に変更する。
設定を変更したらレジストリエディターを終了してWindowsを再起動する。
レジストリエディター

○自動デフラグ機能を無効にする [Windows 7標準のデフラグツールの場合]

通常のデフラグ操作はSSDの寿命を縮める恐れがあります。Windows 7標準のデフラグはやめておいたほうがいいでしょう。

エクスプローラーからSSDのドライブを選択、右クリックしてプロパティを開いて「ツール」タブから「最適化する」ボタンをクリック。
「スケジュールを変更」ボタンをクリックして、「スケジュールに従って実行する」のチェックを外す。
または、「ディスクの選択」でSSDのドライブのチェックを外しておく。
ディスクデフラグツール

Windows 8ではWindows標準のデフラグツールでSSDおよびTrimをサポートしているため、この操作は不要です。
詳細はこちらを参照して下さい。

Windows 8のデフラグツールを使って手動でTrimを実行 [Win8]

○ デバイスの書き込みキャッシュを有効にする

書き込みキャッシュが無効になっているとシステム全体の性能が著しく低下するので、デバイスマネージャーから設定対象のディスクドライブを開き、「ポリシー」タブにある「デバイスの書き込みキャッシュを有効にする」にチェックが入っていることを確認する。
Image: Enable write caching on the device - Device Manager

○インテル スマート・レスポンス・テクノロジー(Smart Response Technology : SRT)を使う。

Windowsをハードディスクにインストールしてあって後からSSDを増設した場合でも、一部の環境ではSRTを有効にすることで、SSDの一部または全体をハードディスクのキャッシュにしてシステムを高速化することができます。ただし、インテル・ラピッド・ストレージ・テクノロジー(Iintel RST。Intel製の一部チップセットのRAID機能およびそれをサポートするソフトウェアのこと。)が搭載されていることが最低条件です。
詳しい条件や設定方法の例はこちらを参照して下さい。

P8Z68-M ProでSRT(SSDキャッシュ)機能を使う

他にも、ソフトウェアでSSDキャッシュ機能を実現するNVELO Dataplex(一部のSSD製品に付属。)、一部のMarvell製SATAコントローラーによってサポートされるHyperDuo、HDD自体に大容量キャッシュを組み込んだ製品Seagate Momentus XTなどがあります。これらではIntel RSTは不要です。

○SSD対応デフラグソフトを使う

デフラグソフトメーカーの話によると、SSDにはHDDのような駆動機構がないため、ファイルの断片化による読み込み速度への影響はほとんどありませんが、空き領域が断片化すると書き込み時の性能が低下するそうです。断片化した空き領域を統合することで元の性能を維持できます。しかしデフラグ処理はデータの移動でたくさんの書き込みや消去操作を行うため、HDDと同じ扱いでSSDに対してデフラグをかけると、性能が改善したとしても代わりにSSDの寿命を縮める恐れがあります。SSDに合わせたデフラグ処理を行うことで、性能を改善するだけでなく寿命も延ばすことができるようです。

ところが、実のところSSDに対するデフラグが本当に効果があるのかどうかはよくわかっていません。デフラグソフトメーカーの主張は次の通りです。

海外のサイトを散々回って調べてみると、「デフラグソフトによる空き領域の統合は古いSSDには効果があるが、最近のSSDはコントローラー側にガベージコレクション(空き領域の統合)機能を持っているため無意味。SSDの管理はSSD自身に任せておけばよい。」という方向に意見がまとまっているようです。TRIMの有効性を実証したデータは多いのですが、デフラグソフトの有効性を実証したデータはあまりありません。逆に根拠あるデータでデフラグソフトを批判する記事も見当たりません。そもそもSSD製品によって効果の程度が大きく変わってくるかもしれません。信頼できる第三者による評価がない以上、はっきりした結論は出そうにありません。
ところで、SSDの記憶素子の書き込み・消去サイクルの耐久性能は5000~10000回と言われています。もちろん既知の通り、Windows上で同一のファイルを何度も書き換えても、ウェアレベリングによって実際に書き込まれる場所は分散されます。それでも「SSDにアクセスが集中すると寿命がすぐに尽きてしまうのでは。」という懸念はあるでしょう。しかしいろいろ調べてみると、書き換えによって記憶素子が劣化するよりも、先にコントローラーチップの故障などの他の原因によってSSDが故障する可能性が高いようです。またWinPC誌によれば、SSDが突然故障する原因のほとんどはコントローラーやメモリチップの初期不良や製造上の問題だということです。「デフラグ処理がSSDの寿命を縮める」という表現は間違ってはいませんが、それがSSDの故障の原因に結びつくことはあまりないでしょう。注意するに越したことはありませんが。
念のため参考にした文献の一部を挙げておきます。

○ディスクがSSDドライブとして設定されているか確認 [Diskeeper 12の場合]

Diskeeperを起動したら「設定に関する通知」をクリック。種類が「SSD」になっていることを確認する。
Diskeeper 12J Professional

もしSSDになっていなければ、「詳細設定」ボタンをクリック。下の方に「SSD」という項目があるので、三角形のマークのアイコンをクリック。
ディスクの一覧が表示されるので、「ユーザー指定」にあるアイコンをクリックするとSSDのアイコンに切り替わり、SSDとして認識される。
詳細設定(SSDボリューム) - Diskeeper 2012

○ボリュームがSSDドライブとして設定されているか確認 [Diskeeper 2011 with HyperFastの場合]

Diskeeperを起動したらSSDのボリューム(ドライブ)を選択して「プロパティ」ボタンをクリック。
左のメニューから「SSDボリューム」を選択して「選択したボリュームをsolid state drive(SSD)として指定する」にチェックが入っていることを確認する。
自動デフラグは有効のままにしておく。
プロパティ - Diskeeper 2011

○自動デフラグ機能を無効にする [Diskeeper 2011の場合]

左のメニューから「自動デフラグ」を選択して「選択したボリュームで自動でフラグを有効にする」のチェックを外す。
プロパティ - Diskeeper 2011

○ボリュームがSSDドライブとして設定されているか確認 [PerfectDisk 12の場合]

SSDボリュームを選択して「ドライブの詳細設定」ボタンをクリック。
PerfectDisk 12

「オンラインデフラグ」でデフォルトの最適化方法が「SSDドライブの最適化」になっていることを確認。
ドライブの詳細設定 - PerfectDisk 12

○自動デフラグの最適化方法を「空き領域の結合」に設定 [PerfectDisk 11以前の場合]

メイン画面で「AutoPilot(スケジュール)」タブをクリック。
既にスケジュールを組んである場合はSSDのボリュームを外すように設定を変えるか、スケジュールを削除する。
新たに組みたいスケジュールの種類をクリックして、スケジュール名の入力、SSDのドライブ選択を行う。
「デフラグ方法」の「ファイル再配置ストラテジーによるデフラグ」で「空き領域の結合」を選択する。
週単位のスケジュール - PerfectDisk 11

○市販のデフラグソフト

Diskeeper 12J Home 3ライセンス版
クリエーター情報なし
相栄電器
Diskeeper 12J Home 3ライセンス版 [ダウンロード]
クリエーター情報なし
相栄電器
Diskeeper 12J Professional
クリエーター情報なし
相栄電器
Diskeeper 12J Professional [ダウンロード]
クリエーター情報なし
相栄電器
PowerX PerfectDisk 12 Pro
クリエーター情報なし
ネットジャパン
PowerX PerfectDisk 12 Pro [ダウンロード]
クリエーター情報なし
ネットジャパン

旧ブログでのコメント

AUTHOR: roma
URL:
DATE: 2012/06/10 11:02:11
Unknown
Windows 7では、Windows Experience Indexで
HDDの項目が6.7(だったかな…)以上ならSSDと判断して、
自動的にSuperfetchとデフラグをOFFにします。
なので、その設定は不要ですよ。
また、IntelのSSDはIntelのAHCIドライバを使っていると、
自動でTrimが実行されないので、SSD Toolboxから
Trimを実行する必要があります。

AUTHOR: akm
URL:
DATE: 2012/06/10 21:33:05
Re:Unknown
ご意見ありがとうございます。

>>自動的にSuperfetchとデフラグをOFFにします
WEIでHDDのスコアが6.5以上だとWindowsがSSDと判断して設定を変更するようですね。
でも私の環境ではスコア7.5であったにも関わらず、Superfetchは自動では無効になりませんでした。

>>IntelのAHCIドライバを使っていると自動でTrimが実行されない
IRSTのバージョンが9.6以降ならTrim手動実行は不要です。
もちろんWin7標準ドライバではTrim手動実行は不要。
WinXP,VistaではIntelのAHCIドライバを使っていようとIntel ToolBox上でTrimを実行する必要があります。

http://blogs.msdn.com/b/e7/archive/2009/05/05/support-and-q-a-for-solid-state-drives-and.aspx


※コメント欄が表示されない場合はdisqusについてJavascriptが有効であることを確認して下さい。コメントはスパム防止フィルターによる承認制のため、投稿してもすぐに反映されない場合があります。

管理人 : Akamaki (akm)

は、PCとVTuberに夢中になっている電気技術者です。

私はレトロコンピューティングの愛好家ですが、そのようなリグはもう収集していません。

私の活動はトップページで見ることができます。読んでくれてありがとう!