2012年8月30日木曜日

WindowsにおけるTrimサポートのまとめ

先日、原稿でWindows 7を利用した場合のTrim送信環境について、調査する機会がありました。前回のバスアナの記事でも予告したように、今回は、Trimの送信環境についてレポートしたいと思います。

最初にどのようにしてTrimが送信されるかを調査したかを簡単に説明しておきます。Trim送信環境の調査は、前回の記事で書いたプロトコルアナライザ(バスアナ)を利用して行なっています。OSからSSDに送られるATAコマンドをSATAのバス上でキャプチャして、Trimコマンドの送信の有無をチェックしています。Trimコマンドによる効果があるかどうかを検証したわけではありません。Trimコマンドの送信の事実のみをチェックしています。

それでは結果を報告します。

SATAの動作モードは、IDEモード/AHCIモード/RAIDモードのすべてのモードにおいてTrimコマンドの送信を確認しました。これまでのネット上の情報では、Trimの送信はAHCIモードのみという情報がひとり歩きしていましたが、Windows 7/8を利用する限り、IDEモードでもTrimコマンドは間違いなく送信されています。本ブログでは、随分以前にIDEモードでもTrimコマンドがでているという検証結果をレポートしていますが、これがコマンドレベルできちんと確認できました。また、RAIDモード利用時でもRAID構築に利用していないSSDの場合は、問題なくTrimコマンドが送信されます。この点は、以前から知られていた通りです。

加えて、条件付きですが、RAID0の構築に利用されたSSDへのTrimコマンド送信も確認しました。RAID0構築に利用したSSDへのTrimコマンド送信は、海外サイトで紹介されているように Intel 7シリーズチップセットとV11以降のドライバーが必要です。Intelの7シリーズチップセットを採用したマザーボードのOROMのバージョンは、すべてV11以降だと思いますので、OROMのバージョンもV11以降なら問題なくTrimコマンドが送信されると思います。また、Trim送信がサポートされたSSDは、Intel製SSDのみというような制限はないのでご安心ください。Trimコマンド対応のすべてのSSDに対してちゃんと送信されます。

なお、Intel 7シリーズチップセットのRAID環境でTrim送信がサポートされているのは、RAID0構築時のみです。RAID1やRAID5では、Trimコマンドは送信されません

次にいつTrimコマンドが送信されるかですが、これもこれまで一般に知られていた通りです。具体的には、ごみ箱からファイルやフォルダーを削除した場合、フォーマットを行った場合です。パーティションの作成のみでもTrimコマンドは送信されますが、送信されるアドレス情報は非常に少なく、無視して良い程度のものです。

更にSSDをHDDのキャッシュに利用すると「SRT(Smart Response Technology)」利用時もチェックしてみましたが、こちらは、SRT設定時にTrimコマンドが送信されるのみで、運用状態に入るとTrimコマンドの送信は行なわれませんでした。速度低下が不安なユーザーは、SRTの利用解除、再構築を行えばTrimコマンドが送信されますので、定期的にこの操作を行ってみてもよいのではないかと思います。

Trimコマンドの送信條件は、これまできちんとしたコマンドレベルの検証が行なわれなかったこともあり、一部混乱していた部分があったのではないかと思います。今回の検証結果は、コマンドレベルの確認ですので、間違いはありません。

Trimコマンドの対応は、本来機材さえあれば簡単に確認できることは随分前からわかっていたのですが、機材そのものが安価なものでも200万円ぐらいするのでなかなかチェックする機会がありませんでした。チェックできる機会を与えてくれた某社の方に感謝したいと思います。

2012年8月15日水曜日

バスアナでTRIMの動きをみてみました

現在、今月末発売の某PC雑誌の仕事で、プロトコルアナライザ(バスアナライザ、通称バスアナ)をお借りしております。バスアナに触るのは久しぶりだったのですが、やっぱり、楽しいですね。これを使って開発の仕事をするのはマジで辛いと思いますが、雑誌の検証レベルでコマンドをみるだけなら楽しいです。というわけで、今回は、バスアナについて簡単に紹介しようと思います。

今回、お借りしているのは、LeCroy社の「STX M6-1」という製品で、SATA 6G対応の1ポートのプロトコルアナライザ(バスアナ)です。プロトコルアナライザとは、その名の通り、バスに流れるパケットなどをキャプチャして表示する機器です。このため接続は、ホスト(マザー ボードのSATAポート)とSSDなどの機器の中間に配置する必要があります。具体的には、バスアナの入力端子をSATAケーブルで接続し、バスの出力端子とSSDなどのSATA機器を接続します。このようにバスアナをSATAのホストと機器の中間に接続することでバスに流れるパケットなどをごそっとキャプチャする仕組みです。


実際にどのような感じのものがみれるかと言いますと、上の画面のような感じとなります。ストレージ用のデバドラに取り付きコマンドをキャプチャするとソフトウェアのアナライザもありますが、今回のようなハードウェアのバスアナなら、SATA LPMの動きなどもキャプチャできます。この例だと、デバイスからホストに対して、「PMREQ_S」というリクエストが送られています。PMREQ_Sは、スランバーの要求で、PMREQ_Pだとパーシャルです。また、リクエストの方向がデバイスからホストですから、今回のケースでは、DIPMでスランバーのリクエストが送られていることがわかります。ちなみに、HIPMならホストからデバイスに対して同じようにリクエストが送られます。

その下の「PMACK」というのが、ホストからの返信です。この場合、OKなのでPMACKを返しており、SATA LPMの省電力状態に機器が入っています。ちなみにNOの場合は、PMNACKが返ってきます。さらに下にある「COMWAKE」というのが、省電力状態からの復帰要求です。ホストからコマンドが送られてくるので、省電力状態からデバイスを復帰させています。

COMWAKEで機器を復帰させたあとに送られてきたのが、SSDで有名なATAコマンドです。そうこのブログを読んでいらっしゃるかたならご存知の「TRIM」です。TRIMは、正式には「Data Set Management」コマンドと呼ばれます。また、SASにもTRIMと同等のコマンドが準備されており、こちらは、UNMAPコマンドと呼ばれます。

以上のようにバスアナを使うと、ストレージに対してどんなコマンドが送られているかなど、パソコンを使っているだけではわからないような動きを知ることができます。特に今回のようなハードウェアのバスアナなら、信号をまるごとごそっとキャプチャできますので、コマンドの動きなどを把握することができます。

今回なぜこのようなものをお借りしているかというと、実は、TRIMコマンドが送られる条件やRAIDでTRIMが送られるのかなどを調べるためです。バスアナがあれば、コマンドがキャプチャできるので一発です。コマンドがデバイスに送られていれば、TRIMがでている。そうでなければでていません。TRIMの対応非対応の検証は、バスアナでみるのが一番早いのですが、LeCroyさんの一番安いこのバスアナですら200万円ぐらいします。さすがに高価過ぎて、貸し出し申請もし難いという事情もあります。

さて本来なら、ここで検証の結果をお伝えしたいところですが、今回は、さすがに雑誌の発売前なので公表できません。雑誌発売後に時期をみて改めて紹介したいと思います。お急ぎの方は、29日発売のコア向けのPC雑誌をご覧ください。

ちなみにLeCroy社のバスアナは、SATAの公式バスアナとして採用されています。SATA規格は、コマンドシーケンスなどが厳しく定められており、接続されている機器が規定のシーケンスで動作しているかなどをこのバスアナで取得してチェックされます。バスアナは、LeCroyのほか、さまざまなメーカーから発売されていますが、SATAの認証を取るには、LeCroy社のバスアナで取得したログが必要だったと記憶しております。

2012年8月11日土曜日

sandisk SDCZ80シリーズ

前回、最近のUSBメモリは遅いという話を書いたところ、コメントでsandiskのSDCZ80シリーズがすごく速いという話をみて興味が湧きました。調べてみたところ、64GBモデルが6500円ほどで購入でき、高速なUSBメモリの割には安価ということで購入してみました。今回は、sandiskのUSB3.0メモリ、「SDCZ80シリーズ」の64GBモデルのレビューをお届けしたいと思います。速度関係のベンチマーク は、すでにあちらこちらで見かけることができますので、本ブログでは、ちょっとアクセントを付けてSecure Eraseを行ったらどうなるかという点についてもレポートします。


最初にSDCZ80シリーズの諸元について簡単に説明します。本製品は、ネットにでている分解写真をみる限り、NANDメモリのパッケージが1つに、SSD用のコントローラ、SATA-USB3.0変換チップで構成されているようにみえます。つまり、中身は単なるSSDで、それをSATA-USB3.0変換チップでUSBメモリにしているだけのようです。

一部では、中身のSSDがsandiskの「iSSD」という話もでているようですが、これは間違いではないかと思います。というのも、sandiskのサイトみる限り、iSSDは、「μSSD規格」準拠となっています。μSSD規格とは、1つのパッケージ内にNANDメモリとコントローラを積層したワンチップソリューションのSSDです。本製品は、前述したようにSSD用のコントローラがNANDメモリのパッケージ内に積層されていないように見受けられるので、厳密にはiSSDではなく、NANDメモリのパッケージが1つで設計されたSSDとなるのではないかと思います。

ちなみに、μSSD規格で製造できるSSDの最大容量は、現在のところ「128GB」です。これは、NANDメモリのパッケージ加工技術として実用化されているのが「16積層」までだからです。現在のNANDフラッシュメモリのダイ当たり容量は、64Gbit(8GB)ですから「8x16=128GB」が最大というわけです。

本製品の性能ですが、中身がSSDですからさすがに速いです。定番のCrysita Disk Markでは、シーケンシャルリードライトともに200MB/sec前後の速度がでます。512KBや4KBのライトの速度は、イマドキのSSDとしては遅めだと思いますが、USBメモリと比較すれば、段違いの速度です。


次に本製品におけるSecure Eraseの検証結果を報告します。結論から先に言いますと、本製品におけるSecureEraseは、コマンド自体は送られているようです。ただ、その挙動は、一般的なSSDとは異なっています。Secure Eraseを実行すると、本製品に書き込まれていたデータは確かにクリアされますが、速度はSSDのようには復活しません。イメージとしては、単に管理テーブルを「0」で埋めただけのような挙動です。

以下に、検証データを掲載しておきます。一番上が購入後比較的早い段階で取得しておいたHD TUNE Pro 5.0のシーケンシャルライトの結果。2番めが1KB~1MBまでの1000個のファイルの書き込みを1セットとして、1000個書いたら、半分消去を150回ほど繰り返した後の測定結果。一番下が、2番目の検証を行った後、Parted Magicを利用してSecure Eraseを実行後に測定したものです。この結果をみれば、一目瞭然です。一番上のデータがもっとも良く、SecureErase後の結果は、2番目の結果と大差がありません。つまり、データは消去されますが、速度は戻ってきません。


本製品は、USBメモリでありながら中身がSATA-USB3.0変換を用いたSSDということで、Secure Eraseのチェックを行ってみました。Secure Eraseで速度が復活してくれたら、結構画期的だと思ったのですが、なかなか思ったようには行かないようです。

SATA-USB変換を利用してUSB接続にしたSSDでは、Secure Eraseを行えないと思っている方が多いと思いますが、実は、そんなことはありません。確かに中には、Secure EraseのコマンドをフィルタしてしまうようなSATA-USB変換も存在しているようですが、すべてではありません。今回のsandiskのようにきちんとコマンドをスルーしてSSDに送ってくれるような製品も存在しています。今回のSecure Eraseの検証は、実はそれを知っていて敢えて行ってみました。Freeze Lockもかかっておらず、コマンドが通ったところまでは良かったのですが、その後の処理の方法がまさか変更されているとは想像しませんでした。