2010年01月05日

32bit Windowsの管理外領域をRAM Diskに使う方法

管理領域外32bit.jpg
○SSD時代になり、書き込みを減らすことが重要になってきました。
 NAND型メモリーは書き込み使用回数に制限があります。出来るだけ書き込みデータを減らす必要があります。そのため、32bit Windowsの管理外領域をRAM Diskに使う方法が有用となります。
 32bitOSはメインメモリーを3.25GB程度しか認識しません。4GBのメモリーを搭載していると、750MBぐらいがOSからアクセスできないのです。そこで、XPの物理アドレス拡張モードを使って、OS管理外領域を使ってRAM Diskを作り、RAM Disk上にOSやブラウザのテンポラリーファイルの保存するようにします。2D/3Dアプリのテンポラリーにも利用すると良いでしょう。
 後に紹介しますTrimコマンド対応やマッハドライブなどの高速化技術がなくても、テンポラリーをRAM Diskに置くようにすれば体感速度もSSDの寿命も伸びると思われます。

○Trim対応SSDの登場
Trimとは
『SSDでは一度使ったのち消した領域を‘使っていない領域’とするが、のちに書き込みをする際に(SSDからは使われている領域として認識されるため)一度削除し、そして書き込みという手間が生じる。TRIM命令はこの使わなくなった領域をWIPE(消去)し、SSDから見てもまっさらな状態にすることができる。』
ということのようです。
 Trimコマンドに対応しているコントローラー搭載SSDでは、OS側が使っていない領域を削除する工程をSSDへのアクセスがない間に独自に処理することが出来るようです。但しWindows7から対応したコマンドなので、それ以前のOSではTrimコマンド機能を活かせません。「G-Monster 1.8 ZIF V4」シリーズのようにOS側がTrimコマンド非対応でもSSD側でTrim処理を行なう機種もあります。

○マッハドライブの是非について
 I/Oデータがマッハドライというメモリーを利用してHDD/SSDを高速化するユーティリティソフトを発売しております。キャッシュがフラッシュされる際は、SystemがCPU負荷が20%〜30%かかるようです。DualCoreCPUならあまり問題にならないかもしれませんが、ノートパソコンの場合CPU負荷がかかるとバッテリー可動時間が短くなります。純然とメリットばかりでもないので、マッハドライブの利用については試用版で試してみてから判断した方が良いと思われます。

○SSDはインテルと東芝2強時代
 SSDはインテルと東芝2強時代です。東芝はI/Oデータに販売元を一元化しております。 インテルは既に34nmプロセス品を投入してきています。
 東芝は現行の43nmプロセスで製造したNAND型フラッシュメモリーを使うが、2010年1〜6月にも32nmプロセス品に切り替える、としています。

(参考転載)
価格.com SSD
http://kakaku.com/pc/ssd/
RAMディスクをテンポラリにする。(Gavotte RAMDisk)
http://tunde.blog17.fc2.com/blog-entry-5.html
32bit Windowsの管理外領域をRAMディスクに使う。(Gavotte Ramdisk)
http://tunde.blog17.fc2.com/blog-entry-2.html
【特別レポート】32bit Windowsの管理外領域をRAM Diskに使う
http://pc.watch.impress.co.jp/docs/2008/0512/ramdisk.htm
まず、Windows XPを起動して、Cドライブのルートディレクトリにある「boot.ini」ファイルを編集し、ブートエントリにパラメータ「/PAE」を追記し、再起動 (これで、Windows XPの物理アドレス拡張モードが有効となる)。再起動後、Gavotte Ramdiskを入手し、ファイルを解凍。その中にある「ram4g.reg」ファイルをダブルクリックし、レジストリにパラメータを追加。その後「ramdisk.exe」を起動し、右の「InstallRamdisk」ボタンをクリックし、そのまま左下の「OK」ボタンをクリック。これだけで、 OS管理外領域全体を利用してRAM Diskが作成される。

Gavotte Ramdiskダウンロード先
http://www.chweng.idv.tw/swintro/ramdisk.php

【元麻布春男の週刊PCホットライン】 SSDに関するWindows 7の3つの特徴
http://pc.watch.impress.co.jp/docs/column/hot/20090501_167922.html
 3点目は、Trimコマンドの実装に関するものだ(図4)。このコマンドを一言で表せば、OSからデバイスに、そのブロックが(OSにとって)不要になったことを通知するものである。ミソは不要になったことを通知するのみで、不要になったブロックをどうするかはコントローラに委ねていることだ。以前に触れたように、デバイスに対し消去を命じることは、当該のブロックを0もしくは1で埋める、つまりは書き込みすることに等しい。それではかえってデバイスがビジーになり、システム性能が低下することも考えられる。Trimは消去を命じるのではなく、コントローラ(と内蔵するアルゴリズム)に対し、もっと自由度を与えようとするものだ。
 このTrimコマンドは、ATAの標準化を行なうINCITS(米国規格協会ANSIの諮問機関)のT13技術委員会に、Microsoftのエンジニアが、「Data Set Management Commands Proposal for ATA8-ACS2」として提案しているもの。一番最初の提案書がTrimコマンドの提案とされていたことから、一般にそう呼ばれる。Data Set Management Commandsとは、OS側からデバイス側へさまざまなデータの属性を伝えるためのコマンドセットを指し、その最初の実装として具体化しているのが Trimコマンド(不要という属性の通知)ということになる。
 これまで筆者は前々回、前回と、ストレージが使われているということの意味、あるいは消去するという行為の意味について、OS側からとデバイス側からの双方から取り上げてきた。その中で、ストレージデバイス自身は、セクタやブロックがOS(あるいはユーザー)から見て、使われているかどうかを知り得ないとしてきた。Trimコマンドは、知らないのなら、OSからデバイスに教えてあげてみてはどうかと提案するものである。
【図5】2008年11月に開かれたWinHECでは、正式なATA8規格ではなく、Microsoftによる提案書に基づいてTrimコマンドを実装するよう求めている
 デバイスにとって、セクタやブロック上にあるすべてのデータ、SSDの場合であればスペアブロック等を除いたLBAにマップされているすべてのデータは、みな有用なものとして取り扱われてきた。ユーザーが消去したファイルが占有していたクラスタに割り当てられていたセクタやブロックも、デバイスは有用なデータが記録されているものとしてその内容を維持する。ガベージコレクションの際、あるいは新規データの書き込みでブロック消去をする必要が生じた際も、 SSDはそのデータをきちんと書き戻す。これがSSDにとって、性能上および製品寿命上の大きなオーバーヘッドになることは、すでに述べた通りだ。
 Trimコマンドが実装されて、OSからそのセクタやブロックが使われていない、そのセクタやブロックに書かれているデータが必要とされていないとデバイスが分かれば、そのデータを書き戻す必要はなくなる(Write Amplificationが小さくなる)。また、使われていないブロックを利用することで、ウェアレベリング等の自由度が大幅に増す。少なくともSSD のコントローラのアルゴリズムで工夫できる範囲は広がる。MicrosoftはWinHEC 2008で、Windows 7向けストレージのロゴ取得要件(プロポーザル)として、Trimコマンドを実装する場合は、Data Set Management Commands Proposal for ATA-ACS2(e07154r6)への準拠を求めていた(図5)。

●Trimが抱える問題とその解決
 ところが、このe07154r6によるTrimコマンドの実装には、多くの疑問、あるいは反対が寄せられた。それは、Trimコマンドで不要とされた LBAを、もう1度読み出した時の挙動に関するものだ。e07154r6では、Trimコマンドが指定されたLBAを読み出した際の出力は Indeterminate(不確定)で、次に書き込みが行なわれて初めて確定するとなっている。コントローラによるガベージコレクションやERASEの自由度を高めるには、Indeterminateである方が望ましい。
 Trimコマンドで指定されたLBAは、OSから不要とされたものであり、本来、そこにあるデータを読み出す必要はないと考えがちだ(ゴミ箱機能等で簡単にファイルを復活させることはできなくなるが)。しかし、従来のストレージでは、OSが不要と判断したセクタやブロックであれ、そのデータが勝手に書き換えられることはなかった。そして、これを前提にしたストレージ技術が存在する。大容量ストレージでバックアップ代わりに使われることのあるスナップショットや、RAID技術だ。
 たとえばRAID 5の場合、複数台のストレージデバイスでストライピングセットを構成し、そのパリティを記録することで、1台故障した際に、元のデータを復元可能にしている。基本的にパリティは、データを書き込む際に計算され、記録される。しかしファイルが消去され、ファイルが占有していたブロックにTrimが適用されると、パリティは意味を失う。Trimされたブロックは、次に書き込みが行なわれるまで、そのデータ内容が確定しない。不確定なデータが混じっては、パリティの有用性が失われるからだ。本来は競合関係にあるストレージベンダ(EMCとNetApp)が、連名でTrimコマンドに異議を唱えたのも無理はない (図6、図7)。
 こうした意見もあり、現時点においてATA8のドラフトでは、IDENTIFY DEVICEコマンドによりデバイスから返される値で、Trimコマンド後の読み出しが不確定になるデバイスと、Trimコマンド後も一定の値が読み出されるデバイスを識別可能にすることになっている。読み出しの不確定性を持つデバイスを許容することで、Trimコマンドによる自由度を最大限に確保しながら、RAIDに使うストレージではTrim後も確定した読み出しを保証しようというわけだ。
 ただこの場合、デバイスによってRAIDに使っていいドライブと、RAIDに使えないドライブが出現する可能性がある。ジャンパスイッチやDIPスイッチ等を使って両方のモードを切り替えることは可能だが、これではせっかくSATAでジャンパの設定が不要になったメリットが失われてしまう。
 このTrimコマンドの挙動については、この4月(2009年4月)にも、SCSI規格における同等のコマンドとの互換性をもたせるという意味から、Trim後に読み出されるデータをすべてゼロにするというオプションの実装が提案されるなど、まだ流動的な部分が少なくない。この状態で、Windows 7でTrimコマンドを実装することが正しいのか、疑問が残る。少なくともWinHECで示されたe07154r6に準拠した形での実装は避けるべきだろう。そんなことをすれば、WindowsロゴとATA規格で相反することになりかねないからだ。というわけで、この問題については、もうしばらく動向を注視する必要があると思っている。

SSDN-ST64H のクチコミ掲示板
http://bbs.kakaku.com/bbs/K0000070868/
マッハドライブの是非について
CPU負荷:
ベンチマークという特殊な高負荷環境でCPU使用率が約2倍になっていますが、
マッハドライブのプロセス自体の負荷は1%程度でした。
キャッシュがフラッシュされる際は、Systemが20%〜30%消費します。

SSD 製品ベンダー2社が『Windows 7』における高速化に対応
http://news.mixi.jp/view_news.pl?id=1067639&media_id=94
posted by たかおん at 12:09| 埼玉 ☀| Comment(0) | TrackBack(0) | パソコン | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック