|
|
||||||||||||||||||||
![]() |
|||||||||||||||||
| TEXT:北川達也 | |||||||||||||||||
|
|||||||||||||||||
低価格なMLCタイプのSSDでは、一時的にOSからの応答がなくなるプチフリーズと呼ばれる現象が発生することがある。それがなぜ発生するのか? メカニズムを探ってみよう。 |
|||||||||||||||||
|
|||||||||||||||||
| プチフリーズは、OSからの応答が一時的になくなり、フリーズ(ハングアップ)したような現象が発生すること。一時的に発生するフリーズであることからプチフリーズと呼ばれているようだ。応答がなくなる時間は、使用環境によって左右されるようだが、数秒から、場合によっては1分以上に達することもある。 このプチフリーズという現象は、現在、SSD固有の問題として話題になっている。現在のところ、プチフリーズの発生が確認されているのは、JMicronのコントローラ「JMF602」を採用したSSDのみで、IntelやSamsungのSSDなどでは、発生が確認されていない。 では、なぜプチフリーズが発生するのだろうか? その原因は、SSDとPCのホストコントローラの間(Serial ATAのインターフェース)で、なんらかの問題が発生しているケース、もしくはフラッシュメモリコントローラとフラッシュメモリ間で問題が発生しているケースのいずれかが考えられるだろう。 まず、前者の場合についてだが、データ転送時にSerial ATAインターフェース上でエラーが発生していれば、当然、リトライが何度も発生し、プチフリーズのような現象を引き起こす可能性がある。また、あまり多く知られてはいないが、Serial ATAというインターフェースは、転送のシーケンス(手続き)やその反応時間などが規格で厳しく規定されているだけでなく、通信シーケンスに問題があればリセット(ホスト側から行なう場合をCOMRESET、デバイス側から試みるときはCOMINITと呼ばれる)を行なって、復旧を試みることが多い。 そこで今回は、データ転送時にSerial ATAインターフェース上で問題が発生していないかどうかを、上記のSerial ATAハードウェアプロトコル・アナライザを用いて確認してみた。SSDには、JMF602を採用し、Webサイトなどでプチフリーズの発生が報告されている製品を用いて、「Iometer」でデータ転送を実行し、チェックを行なってみた。 その結果、Serial ATAインターフェース上においては、エラー発生などの問題はとくに確認できなかった。Serial ATAでリセット(COMRESET/COMINIT)が発生していないだけでなく、Serial ATAの規格で定められている各種のエラーもまったく発生しなかった。ここから分かることは、Serial ATAの接続インターフェース間では問題が起きていないということだ。 つまり、プチフリーズは、メモリコントローラとNAND型フラッシュメモリ間での問題ということになる。具体的には、書き込みと読み出しにおけるNAND型フラッシュメモリ固有の制限から、プチフリーズが発生している可能性が高いと言えるわけだ。 |
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
| NAND型フラッシュメモリチップ自体、データの読み出しと書き込みが混在した処理において、非常に長い処理時間を要することは、以前から学会などで指摘されている。こうした速度低下を引き起こすのは、書き込み/読み出しのデータ単位と消去時の単位が異なっていることに起因する。 と言うのも、NAND型フラッシュメモリでは、書き込みと読み出しは「ページ」と呼ばれる単位で行なわれるが、消去は、一般に32または64のページで構成された「ブロック」と呼ばれる単位で行なう必要があり、加えて、書き込みを行ないたいページは、消去されている必要があるためだ。さらに、同じページに連続して書き込みを行なうこともできないという制限もある。つまり、NAND型フラッシュメモリであるページ内のデータを変更したい場合には、まず、そのページが含まれたブロック全体を空きブロックに待避させる必要があり、消去は、待避後にしか実行できないのだ。 この待避動作は「ブロックコピー」と呼ばれ、待避したいブロック内のページからデータを読み出し、データのエラー訂正を行ない、待避先ブロック内のページに書き込むという一連の動作を待避したいブロック内の全ページで行なうことになる。ここで問題となるのが、ブロックコピーに要する時間だ。これは、最悪の場合で100ms以上、つまり、0.1秒以上もかかるとされているのだ。言うまでもなく、ブロックコピーが行なわれているときは、ほかの処理を受け付けることができないため、この間、ほかの処理はすべて停止することになる。 現在のNAND型フラッシュメモリでは、1ページの容量は「4~8KB」が一般的だ。これは、チップあたりの容量に過ぎず、現在のようにメモリコントローラ側でNAND型フラッシュメモリを並列動作させている場合には、その分容量も大きくなる。たとえば、8チップの並列動作を行なっているJMF602では、チップあたりのページ容量×8倍となる「32~64KB」が、実際に使用されるページあたりの容量になる。 言うまでもなく、実際のページサイズよりも小さなデータの書き込みは、すべてブロックコピー発生の増加要因にしかならない。たとえば、ファイルシステムのメタデータの更新や、最小書き込み単位より小さなサイズのデータの書き込みは、すべてブロックコピーの増加要因になると言える。加えて、ファイルシステムなどがSSDに最適化されていない現在のOSでは、ブロックコピーの増加を招くことはあっても、少なくともそれを減少させることはない。 こうしたことからも分かるように、現在のOSの仕様などを考えると、ユーザーが気が付かないところで、ブロックコピーが頻発している可能性は十分ある。しかも、ブロックコピーの発生頻度が高ければ高いだけ、SSDのパフォーマンスを低下させる要因になってしまう。あくまで筆者の推測なのだが、プチフリーズは、ブロックコピーの処理に手間取って発生しているのではないだろうか。 実際にプチフリーズが発生しないと言われるIntelやSamsungのSSDは、JMF602を採用したSSDとは異なり、メモリコントローラとNAND型フラッシュメモリの間にDRAMキャッシュを搭載している。これがブロックコピーの処理に用いられていると言う。つまり、DRAMをブロックコピー用のキャッシュとして使用することで、ブロックコピー時の処理時間を隠蔽している可能性が高い。 ブロックコピーにかかる時間は、NAND型フラッシュメモリの課題とされており、これを半分に短縮するための技術もすでに開発済みだ。SSDは、まだ発展途上の製品であり、世代が変わるごとにさまざまな改良がなされていくことになるはずだ。それに伴い、プチフリーズという現象も徐々に解消されることになるだろう。 |
|||||||||||||||||
![]() |
|||||||||||||||||
| メモリは、NANDフラッシュに限らずワード線とビット線の交点にセルが配されており、ワード線からメモリセルに電圧をかけて、ビット線からデータを読み取る仕組。NANDフラッシュメモリでは、書き込みはワード線で束ねられたページ単位で行なえるが、消去はブロック単位でしか行なえない | |||||||||||||||||
![]() |
|||||||||||||||||
| ブロック消去の際には、残っているデータをバッファに一時的に転送した後に新しいブロックにデータを書き込んだ後でしか消去できない。ブロックのサイズも大きくなるため、時間を要するのだ | |||||||||||||||||
|
|||||||||||||||||
|
|
発売日:1月28日
定価:1,080円(税込)
発売日:2011年12月22日
販売価格:1,029円(税込)
発売日:2011年11月15日
販売価格:1,575円(税込)
発売日:2010年12月9日
販売価格:1,764円(税込)
発売日:2010年11月27日
販売価格:999円(税込)
発売日:2010年3月12日
販売価格:2,310円(税込)
発売日:2010年3月16日
販売価格:882円(税込)

アンケートにお答え頂くには「CLUB IMPRESS」への登録が必要です。
*プレゼントの対象は「DOS/V POWER REPORT最新号購入者」のみとなります。