(57)【要約】      （修正有）【課題】ストレージコントローラがフラッシュメモリの記憶領域を意識した制御を行えるようにする。【解決手段】ストレージコントローラが、論理アドレスとフラッシュメモリ内の記憶領域（例えば物理ブロック）の物理アドレスとの対応関係を表すアドレス変換情報を管理する。ストレージコントローラが、上位装置からのＩ／Ｏ要求が指定する論理アドレスに対応した物理アドレスを、上記アドレス変換情報を用いて特定し、特定された物理アドレスに基づくＩ／Ｏ先情報を有したＩ／Ｏコマンドを、フラッシュメモリモジュール内のメモリコントローラに送信する。メモリコントローラは、ストレージコントローラからのＩ／Ｏコマンドが有するＩ／Ｏ先情報から特定される、フラッシュメモリ内の記憶領域に対してＩ／Ｏを行う。【選択図】図２０
2009282678.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリに基づく論理的な記憶資源内の記憶領域の論理アドレスを指定したＩ／Ｏ要求（入出力要求）を上位装置から受け付けるストレージシステムであって、
フラッシュメモリモジュールと、
前記上位装置から前記Ｉ／Ｏ要求を受け付け前記Ｉ／Ｏ要求に応答して前記フラッシュメモリモジュールにアクセスするストレージコントローラと
を備え、
前記ストレージコントローラが、
論理アドレスと前記フラッシュメモリ内の記憶領域の物理アドレスとの対応関係を表すアドレス変換情報を記憶する記憶資源と、
受け付けた前記Ｉ／Ｏ要求が指定する論理アドレスに対応した物理アドレスを前記アドレス変換情報を用いて特定し、前記特定された物理アドレスに基づくＩ／Ｏ先情報を有したＩ／Ｏコマンドを、前記メモリコントローラに送信するプロセッサと
を備え、
前記フラッシュメモリモジュールが、
フラッシュメモリと、
前記Ｉ／Ｏコマンドを受信し、前記Ｉ／Ｏコマンドが有するＩ／Ｏ先情報から特定される、前記フラッシュメモリ内の記憶領域へのＩ／Ｏを行うメモリコントローラと
を有する、
ストレージシステム。
【請求項２】
前記フラッシュメモリは、複数の物理ページで構成されている複数の物理ブロックを有しており、第一の物理ブロック内の物理ページに記憶されているデータ要素が更新データ要素に更新される場合に、前記第一の物理ブロックに割り当てられている消去済みの物理ブロックである第二の物理ブロック内の物理ページに前記更新データ要素が書き込まれるメモリであり、
前記アドレス変換情報は、論理アドレスに対応する記憶領域が属する論理ブロックに対応した各有効データ要素の在り処を表す情報であって、第一の論理ブロックに対応する前記第一の物理ブロックに割り当てられている前記第二の物理ブロック内の物理ページに更新データ要素が書き込まれた場合に、前記プロセッサによって更新される情報であり、
前記プロセッサは、リクラメーションコマンドを作成して、前記フラッシュメモリモジュールが有する前記メモリコントローラに前記リクラメーションコマンドを送信し、
前記リクラメーションコマンドは、
前記第一の論理ブロックに対応した有効データ要素群を構成する複数の有効データ要素がそれぞれ記憶されている複数のリード元物理ページを表す複数のページ情報要素であって、前記アドレス変換情報を用いて作成されたページリストと、
データ要素群が消去される物理ブロックである消去ブロックを表す消去ブロック情報と、
前記有効データ要素群の書込み先となる前記消去ブロックを表す書込み先ブロック情報と
を有し、
前記複数のリード元物理ページは、前記第一の物理ブロック及び／又は前記第二の物理ブロックに存在しており、
前記メモリコントローラは、第一のバッファを有しており、以下の（３−１）乃至（３−３）を実行する、
（３−１）前記ページリストから特定される前記複数のリード元物理ページから、複数の有効データ要素を読出し、前記第一の論理ブロックに対応した論理アドレスの順に有効データ要素が並ぶように前記第一のバッファに前記複数の有効データ要素を書込む、
（３−２）前記消去ブロック情報から特定される前記消去ブロック内のデータ要素群を消去する、
（３−３）前記書込み先ブロック情報から特定される前記消去ブロックに、前記第一のバッファに記憶されている複数の有効データ要素を書き込む、
請求項１記載のストレージシステム。
【請求項３】
前記リクラメーションコマンドは、前記ページリストを有するリードコマンドと、前記消去ブロック情報を有する消去コマンドと、前記書込み先ブロック情報を有するライトコマンドとを更に有し、
前記メモリコントローラは、前記リクラメーションコマンドが有する前記リードコマンドに応答して前記（３−１）を実行し、前記リクラメーションコマンドが有する前記消去コマンドに応答して前記（３−２）を実行し、前記リクラメーションコマンドが有する前記ライトコマンドに応答して前記（３−３）を実行する、
請求項２記載のストレージシステム。
【請求項４】
前記フラッシュメモリは、複数のフラッシュメモリチップを有しており、
各フラッシュメモリチップが、複数の物理ブロックを有しており、
前記第二の物理ブロックに複数個の前記第一の物理ブロックが割り当てられており、
前記ページリストを構成する各ページ情報要素は、読出し元の物理ページを表す情報と、その読出し元の物理ページを有した物理ブロックを表す情報とを含んでおり、
読出し元の物理ページを有した物理ブロックを表す情報と、前記消去ブロック情報と、前記書込み先ブロック情報には、それぞれ、その情報が物理ブロックを含んだフラッシュメモリチップを表す情報が含まれている、
請求項２又は３記載のストレージシステム。
【請求項５】
前記フラッシュメモリは、複数のフラッシュメモリチップを有しており、
各フラッシュメモリチップが、複数の物理ブロックを有しており、
前記複数のリード元物理ページを有する物理ブロックと、前記消去ブロックが、異なるフラッシュメモリチップに存在する、
請求項２乃至４のうちのいずれか１項に記載のストレージシステム。
【請求項６】
前記第二の物理ブロックに複数個の前記第一の物理ブロックが割り当てられており、
前記第一のバッファの記憶容量が、前記複数個の第一の物理ブロックの記憶容量である、
請求項２乃至５のうちのいずれか１項に記載のストレージシステム。
【請求項７】
前記フラッシュメモリは、複数の物理ページで構成されている複数の物理ブロックを有しており、第一の物理ブロック内の物理ページに記憶されているデータ要素が更新データ要素に更新される場合に、前記第一の物理ブロックに割り当てられている消去済みの物理ブロックである第二の物理ブロック内の物理ページに前記更新データ要素が書き込まれるメモリであり、
前記アドレス変換情報は、論理アドレスに対応する記憶領域が属する論理ブロックに対応した各有効データ要素の在り処を表す情報であって、第一の論理ブロックに対応する前記第一の物理ブロックに割り当てられている前記第二の物理ブロック内の物理ページに更新データ要素が書き込まれた場合に、前記プロセッサによって更新される情報であり、
複数の前記フラッシュメモリモジュールに、第一及び第二のフラッシュメモリモジュールが含まれており、
前記第一のフラッシュメモリモジュール内のフラッシュメモリに、前記第一の物理ブロック及び前記第二の物理ブロックが含まれており、
前記第二のフラッシュメモリモジュール内のフラッシュメモリに、データ要素群が消去される物理ブロックである消去ブロックが含まれており、
前記プロセッサは、第一のリクラメーションコマンドを作成して、前記第一のフラッシュメモリモジュールが有する前記第一のメモリコントローラに前記第一のリクラメーションコマンド送信し、
前記第一のリクラメーションコマンドは、以下の（７−Ａ）乃至（７−Ｄ）のうち少なくとも（７−Ａ）及び（７−Ｂ）を有し、
（７−Ａ）前記第一の論理ブロックに対応した有効データ要素群を構成する複数の有効データ要素がそれぞれ記憶されている複数のリード元物理ページを表す複数のページ情報要素であって、前記アドレス変換情報を用いて作成されたページリスト、
（７−Ｂ）前記第二のフラッシュメモリモジュールが有する第二のメモリコントローラを表す情報、
（７−Ｃ）データ要素群が消去される物理ブロックである消去ブロックを表す消去ブロック情報、
（７−Ｄ）前記有効データ要素群の書込み先となる前記消去ブロックを表す書込み先ブロック情報、
前記複数のリード元物理ページは、前記第一の物理ブロック及び／又は前記第二の物理ブロックに存在しており、
前記第一のメモリコントローラは、第二のバッファＡを有しており、以下の（７−１）及び（７−２）を実行し、
（７−１）前記（７−Ａ）の情報から特定される前記複数のリード元物理ページから、複数の有効データ要素を読出し、前記第一の論理ブロックに対応した論理アドレスの順に有効データ要素が並ぶように前記第二のバッファＡに前記複数の有効データ要素を書込み、
（７−２）前記（７−Ｂ）の情報から特定される前記第二のメモリコントローラに、前記第二のバッファＡに記憶されている複数の有効データ要素を転送する、
前記（７−Ｃ）及び（７−Ｄ）の情報は、前記第一のメモリコントローラ又は前記プロセッサから前記第二のメモリコントローラに送信され、
前記第二のメモリコントローラは、第二のバッファＢを有しており、以下の（７−３）乃至（７−５）を実行する、
（７−３）前記第一のメモリコントローラから転送された前記複数の有効データ要素群を前記第二のバッファＢに書き込む、
（７−４）前記（７−Ｃ）の情報から特定される前記消去ブロック内のデータ要素群を消去する、
（７−５）前記（７−Ｄ）の情報から特定される前記消去ブロックに、前記第二のバッファＢに記憶されている複数の有効データ要素を書き込む、
請求項１乃至６のうちのいずれか１項に記載のストレージシステム。
【請求項８】
前記プロセッサが、第二のリクラメーションコマンドを作成して、前記第二のリクラメーションコマンドを前記第二のメモリコントローラに送信し、
前記第一のリクラメーションコマンドに、前記（７−Ｃ）及び（７−Ｄ）の情報は含まれておらず、
前記第二のリクラメーションコマンドに、前記（７−Ｃ）及び（７−Ｄ）の情報が含まれている、
請求項７記載のストレージシステム。
【請求項９】
前記第一のリクラメーションコマンドは、前記（７−Ａ）の情報を有するリードコマンドと、前記（７−Ｂ）の情報を有する転送コマンドとを更に有し、
前記第二のリクラメーションコマンドは、前記（７−Ｃ）の情報を有する消去コマンドと、前記（７−Ｄ）の情報を有するライトコマンドを更に有し、
前記第一のメモリコントローラが、前記第一のリクラメーションコマンドが有する前記リードコマンドに応答して前記（７−１）を実行し、前記リクラメーションコマンドが有する前記転送コマンドに応答して前記（７−２）を実行し、
前記第二のメモリコントローラが、前記リクラメーションコマンドが有する前記消去コマンドに応答して前記（７−４）を実行し、前記リクラメーションコマンドが有する前記ライトコマンドに応答して前記（７−５）を実行する、
請求項８記載のストレージシステム。
【請求項１０】
前記ストレージコントローラと前記複数のフラッシュメモリモジュールの両方が接続される第一のスイッチ機構の他に、前記ストレージコントローラと前記複数のフラッシュメモリモジュールのうちの前記複数のフラッシュメモリモジュールが接続される第二のスイッチ機構を備え、
前記第一のフラッシュメモリモジュールから前記第二のフラッシュメモリモジュールへの前記複数の有効データ要素の転送は、前記第二のスイッチ機構を経由して行われる、
請求項７乃至９のうちのいずれか１項に記載のストレージシステム。
【請求項１１】
前記フラッシュメモリは、複数のフラッシュメモリチップを有しており、
各フラッシュメモリチップが、複数の物理ブロックを有しており、
前記第二の物理ブロックに複数個の前記第一の物理ブロックが割り当てられており、
前記ページリストを構成する各ページ情報要素は、読出し元の物理ページを表す情報と、その読出し元の物理ページを有した物理ブロックを表す情報とを含んでおり、
読出し元の物理ページを有した物理ブロックを表す情報と、前記消去ブロック情報と、前記書込み先ブロック情報には、それぞれ、その情報が物理ブロックを含んだフラッシュメモリチップを表す情報が含まれている、
請求項７乃至１０のうちのいずれか１項に記載のストレージシステム。
【請求項１２】
前記第二の物理ブロックに複数個の前記第一の物理ブロックが割り当てられており、
前記第二のバッファＡ及びＢの記憶容量が、それぞれ、前記複数個の第一の物理ブロックの記憶容量である、
請求項７乃至１１のうちのいずれか１項に記載のストレージシステム。
【請求項１３】
前記プロセッサは、データ再配置コマンドを作成して、前記フラッシュメモリモジュールが有する前記メモリコントローラに前記データ再配置コマンドを送信し、
前記データ再配置コマンドは、
第一の論理ブロックに対応したデータ要素群を構成する複数のデータ要素の複数のリード元物理ページを表す複数のページ情報要素であるページリストと、
データ要素群が消去される物理ブロックである消去ブロックを表す消去ブロック情報と、
書込み先となる前記消去ブロックを表す書込み先ブロック情報と
を有し、
前記メモリコントローラは、第一のバッファを有しており、以下の（１３−１）乃至（１３−３）を実行する、
（１３−１）前記ページリストから特定される前記複数のリード元物理ページから、複数のデータ要素を読出し、前記第一のバッファに前記複数のデータ要素を書込む、
（１３−２）前記消去ブロック情報から特定される前記消去ブロック内のデータ要素群を消去する、
（１３−３）前記書込み先ブロック情報から特定される前記消去ブロックに、前記第一のバッファに記憶されている複数のデータ要素を書き込む、
請求項１記載のストレージシステム。
【請求項１４】
複数の前記フラッシュメモリモジュールに、第一及び第二のフラッシュメモリモジュールが含まれており、
前記第一のフラッシュメモリモジュール内のフラッシュメモリに、第一の論理ブロックに対応したデータ要素群を構成する複数のデータ要素の複数のリード元物理ページを有した１又は複数の物理ブロックが含まれており、
前記第二のフラッシュメモリモジュール内のフラッシュメモリに、データ要素群が消去される物理ブロックである消去ブロックが含まれており、
前記プロセッサは、第一のデータ再配置コマンドを作成して、前記第一のフラッシュメモリモジュールが有する前記第一のメモリコントローラに前記第一のデータ再配置コマンド送信し、
前記第一のデータ再配置コマンドは、以下の（１４−Ａ）乃至（１４−Ｄ）のうち少なくとも（１４−Ａ）及び（１４−Ｂ）を有し、
（１４−Ａ）前記複数のリード元物理ページを表す複数のページ情報要素であるページリスト、
（１４−Ｂ）前記第二のフラッシュメモリモジュールが有する第二のメモリコントローラを表す情報、
（１４−Ｃ）データ要素群が消去される物理ブロックである消去ブロックを表す消去ブロック情報、
（１４−Ｄ）前記データ要素群の書込み先となる前記消去ブロックを表す書込み先ブロック情報、
前記第一のメモリコントローラは、第二のバッファＡを有しており、以下の（１４−１）及び（１４−２）を実行し、
（１４−１）前記（１４−Ａ）の情報から特定される前記複数のリード元物理ページから、複数のデータ要素を読出し、前記第二のバッファＡに前記複数のデータ要素を書込み、
（１４−２）前記（１４−Ｂ）の情報から特定される前記第二のメモリコントローラに、前記第二のバッファＡに記憶されている複数のデータ要素を転送する、
前記（１４−Ｃ）及び（１４−Ｄ）の情報は、前記第一のメモリコントローラ又は前記プロセッサから前記第二のメモリコントローラに送信され、
前記第二のメモリコントローラは、第二のバッファＢを有しており、以下の（１４−３）乃至（１４−５）を実行する、
（１４−３）前記第一のメモリコントローラから転送された前記複数のデータ要素群を前記第二のバッファＢに書き込む、
（１４−４）前記（１４−Ｃ）の情報から特定される前記消去ブロック内のデータ要素群を消去する、
（１４−５）前記（１４−Ｄ）の情報から特定される前記消去ブロックに、前記第二のバッファＢに記憶されている複数のデータ要素を書き込む、
請求項１又は１３記載のストレージシステム。
【請求項１５】
前記プロセッサが、第二のデータ再配置コマンドを作成して、前記第二のデータ再配置コマンドを前記第二のメモリコントローラに送信し、
前記第一のデータ再配置コマンドに、前記（１４−Ｃ）及び（１４−Ｄ）の情報は含まれておらず、
前記第二のデータ再配置コマンドに、前記（１４−Ｃ）及び（１４−Ｄ）の情報が含まれている、
請求項１４記載のストレージシステム。
【請求項１６】
前記ストレージコントローラと前記複数のフラッシュメモリモジュールの両方が接続される第一のスイッチ機構の他に、前記ストレージコントローラと前記複数のフラッシュメモリモジュールのうちの前記複数のフラッシュメモリモジュールが接続される第二のスイッチ機構を備え、
前記第一のフラッシュメモリモジュールから前記第二のフラッシュメモリモジュールへの前記複数のデータ要素の転送は、前記第二のスイッチ機構を経由して行われる、
請求項１４又は１５記載のストレージシステム。
【請求項１７】
前記メモリコントローラが、前記第一のスイッチ機構を介した通信と前記第二のスイッチ機構を介した通信のインタフェースを統一する統一インタフェース部を有する、
請求項１６記載のストレージシステム。
【請求項１８】
フラッシュメモリと、
前記フラッシュメモリに対するＩ／Ｏ（入出力）を制御するメモリコントローラと
を備え、
前記メモリコントローラが、
外部から受信したコマンドを解釈するコマンド解釈部と、
前記コマンド解釈部が解釈したコマンドがデータ再配置コマンドである場合、前記データ再配置コマンドに含まれている物理アドレス情報を用いて、データ再配置に関わるリードコマンド及び／又はライトコマンドを作成し、作成されたリードコマンド及び／又はライトコマンドを前記フラッシュメモリに送信するコマンド生成部と
を有する、
フラッシュメモリモジュール。
【請求項１９】
前記フラッシュメモリは、複数の物理ページで構成されている複数の物理ブロックを有しており、
前記データ再配置コマンドが、以下の（１９−Ａ）乃至（１９−Ｃ）の物理アドレス情報を有し、
（１９−Ａ）前記第一の論理ブロックに対応したデータ要素群を構成する複数のデータ要素がそれぞれ記憶されている複数のリード元物理ページを表す複数のページ情報要素であるページリスト、
（１９−Ｂ）データ要素群が消去される物理ブロックである消去ブロックを表す消去ブロック情報、
（１９−Ｃ）前記データ要素群の書込み先となる前記消去ブロックを表す書込み先ブロック情報、
を有し、
前記メモリコントローラは、第一のバッファを更に有しており、
前記メモリコントローラでは、以下の（１９−１）乃至（１９−４）を実行する、
（１９−１）前記コマンド生成部が、前記ページリストから特定される前記複数のリード元物理ページから複数のデータ要素を読出すためのページ単位の複数のリードコマンドを作成し、前記複数のリードコマンドを前記フラッシュメモリに送信する、
（１９−２）前記第一のバッファが、前記ページ単位の複数のリードコマンドに応答して読み出された前記複数のデータ要素を記憶する、
（１９−３）前記コマンド生成部が、前記消去ブロック情報から特定される前記消去ブロック内のデータ要素群を消去する消去コマンドを前記フラッシュメモリに送信する、
（１９−４）前記書込み先ブロック情報から特定される前記消去ブロック内の複数の物理ページに前記第一のバッファに記憶されている複数のデータ要素を書き込むためのページ単位の複数のライトコマンドを前記フラッシュメモリに送信する、
請求項１８記載のフラッシュメモリモジュール。
【請求項２０】
前記データ再配置コマンドは、前記（１９−Ａ）の情報を有するリードコマンドと、前記（１９−Ｂ）の情報を有する消去コマンドと、前記（１９−Ｃ）の情報を有するライトコマンドとを更に有し、
前記コマンド生成部は、前記データ再配置コマンドが有する前記リードコマンドに応答して前記（１９−１）を実行し、前記データ再配置コマンドが有する前記消去コマンドに応答して前記（１９−３）を実行し、前記データ再配置が有する前記ライトコマンドに応答して前記（１９−４）を実行する、
請求項１９記載のフラッシュメモリモジュール。
【請求項２１】
前記フラッシュメモリは、複数のフラッシュメモリチップを有しており、第一の物理ブロック内の物理ページに記憶されているデータ要素が更新データ要素に更新される場合に、前記第一の物理ブロックに割り当てられている消去済みの物理ブロックである第二の物理ブロック内の物理ページに前記更新データ要素が書き込まれるメモリであり、
各フラッシュメモリチップが、複数の物理ブロックを有しており、
前記第二の物理ブロックに複数個の前記第一の物理ブロックが割り当てられており、
前記ページリストを構成する各ページ情報要素は、読出し元の物理ページを表す情報と、その読出し元の物理ページを有した物理ブロックを表す情報とを含んでおり、
読出し元の物理ページを有した物理ブロックを表す情報と、前記消去ブロック情報と、前記書込み先ブロック情報には、それぞれ、その情報が物理ブロックを含んだフラッシュメモリチップを表す情報が含まれている、
請求項１９又は２０記載のフラッシュメモリモジュール。
【請求項２２】
前記フラッシュメモリは、複数のフラッシュメモリチップを有しており、
各フラッシュメモリチップが、複数の物理ブロックを有しており、
前記複数のリード元物理ページを有する物理ブロックと、前記消去ブロックが、異なるフラッシュメモリチップに存在する、
請求項１９乃至２１のうちのいずれか１項に記載のフラッシュメモリモジュール。
【請求項２３】
前記フラッシュメモリは、第一の物理ブロック内の物理ページに記憶されているデータ要素が更新データ要素に更新される場合に、前記第一の物理ブロックに割り当てられている消去済みの物理ブロックである第二の物理ブロック内の物理ページに前記更新データ要素が書き込まれるメモリであり、
前記第二の物理ブロックに複数個の前記第一の物理ブロックが割り当てられており、
前記第一のバッファの記憶容量が、前記複数個の第一の物理ブロックの記憶容量である、
請求項１９乃至２２のうちのいずれか１項に記載のフラッシュメモリモジュール。
【請求項２４】
前記フラッシュメモリは、複数の物理ページで構成されている複数の物理ブロックを有しており、
前記メモリコントローラは、第二のバッファを有しており、
前記データ再配置コマンドは、以下の（２４−Ａ）及び（２４−Ｂ）を有する第一のデータ再配置コマンドであり、
（２４−Ａ）前記第一の論理ブロックに対応したデータ要素群を構成する複数のデータ要素がそれぞれ記憶されている複数のリード元物理ページを表す複数のページ情報要素であって、前記アドレス変換情報を用いて作成されたページリスト、
（２４−Ｂ）前記第二のフラッシュメモリモジュールが有する第二のメモリコントローラを表す情報、
前記コマンド解釈部が解釈したコマンドが前記第一のデータ再配置コマンドの場合、前記メモリコントローラでは、以下の（２４−１）乃至（２４−３）を実行する、
（２４−１）前記コマンド生成部が、前記（２４−Ａ）の情報から特定される前記複数のリード元物理ページから複数のデータ要素を読出すためのページ単位の複数のリードコマンドを前記フラッシュメモリに送信する、
（２４−２）前記第二のバッファが、前記ページ単位の複数のリードコマンドに応答して読み出された前記複数のデータ要素を記憶する、
（２４−３）前記（２４−Ｂ）の情報から特定される別のメモリコントローラに、前記第二のバッファに記憶されている複数のデータ要素を転送する、
請求項１８乃至２３のうちのいずれか１項に記載のフラッシュメモリモジュール。
【請求項２５】
記フラッシュメモリは、複数の物理ページで構成されている複数の物理ブロックを有しており、
前記メモリコントローラは、第二のバッファを有しており、
前記データ再配置コマンドは、以下の（２５−Ａ）及び（２５−Ｂ）を有する第二のデータ再配置コマンドであり、
（２５−Ａ）データ要素群が消去される物理ブロックである消去ブロックを表す消去ブロック情報、
（２５−Ｂ）前記データ要素群の書込み先となる前記消去ブロックを表す書込み先ブロック情報、
前記メモリコントローラでは、以下の（２５−１）乃至（２５−３）を実行する、
（２５−１）前記第二のバッファが、別のメモリコントローラから転送されて来た複数のデータ要素群を前記第二のバッファに書き込む、
（２５−２）前記コマンド生成部が、前記（２５−Ａ）の情報から特定される前記消去ブロック内のデータ要素群を消去するための消去コマンドを前記フラッシュメモリに送信する、
（２５−３）前記コマンド生成部が、前記（２５−Ｂ）の情報から特定される前記消去ブロック内の複数の物理ページに前記第二のバッファに記憶されている複数のデータ要素をそれぞれ書き込むためのページ単位の複数のライトコマンドを前記フラッシュメモリに送信する、
請求項１８乃至２４のうちのいずれか１項に記載のフラッシュメモリモジュール。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラとフラッシュメモリを備えたフラッシュメモリモジュール、及び、フラッシュメモリモジュールを備えたストレージシステムに関する。
【背景技術】
【０００２】
例えば、フラッシュメモリモジュールを備えるストレージシステムとして、特許文献１に開示のストレージシステムがある。特許文献１によれば、フラッシュメモリモジュール内のメモリコントローラが、ウェアレベリング処理やリクラメーション処理を行う。
【０００３】
【特許文献１】米国特許出願公開２００６／０２８８１５３号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ストレージシステムは、複数のフラッシュメモリモジュールと、それら複数のフラッシュメモリモジュールを管理する上位のコントローラ（以下、「ストレージコントローラ」と言う）を備える。ストレージコントローラは、例えば、上位装置（例えば、ホストコンピュータ、或いは他のストレージシステム）からＩ／Ｏ要求を受け付け、そのＩ／Ｏ要求に従って、複数のフラッシュメモリモジュールのうちの一以上のフラッシュメモリモジュールにアクセスする。
【０００５】
フラッシュメモリモジュールとして、一般に、ＳＳＤ（Solid State Device）が知られている。ＳＳＤには、例えばＮＡＮＤ型フラッシュメモリが搭載されている。ＮＡＮＤ型フラッシュメモリでは、データの読み出し及び書き込みは、ページ単位で行われ、データの消去は、ブロック単位で行われる。ＮＡＮＤ型フラッシュメモリでは、ブロック単位で使用不能になっていく。
【０００６】
フラッシュメモリの管理は、ＳＳＤ内のメモリコントローラによって行われる。このため、ＳＳＤの上位にあるストレージコントローラが、フラッシュメモリのブロックを意識した制御を行うことができない。
【０００７】
また、ＳＳＤは、ハードディスクドライブ（ＨＤＤ）のインタフェースとの互換性を有するが、ＳＳＤ間で通信するインタフェースは無い。
【０００８】
そこで、本発明の一つの目的は、ストレージコントローラがフラッシュメモリの記憶領域を意識した制御を行えるようにすることにある。
【０００９】
本発明の別の目的は、フラッシュメモリモジュール同士でデータの受け渡しを行えるようにすることにある。
【００１０】
本発明の他の目的は、後の説明から明らかになるであろう。
【課題を解決するための手段】
【００１１】
ストレージコントローラが、論理アドレスと前記フラッシュメモリ内の記憶領域（例えば物理ブロック）の物理アドレスとの対応関係を表すアドレス変換情報を管理する。ストレージコントローラが、上位装置からのＩ／Ｏ要求が指定する論理アドレスに対応した物理アドレスを、上記アドレス変換情報を用いて特定し、特定された物理アドレスに基づくＩ／Ｏ先情報を有したＩ／Ｏコマンドを、フラッシュメモリモジュール内のメモリコントローラに送信する。メモリコントローラは、ストレージコントローラからのＩ／Ｏコマンドが有するＩ／Ｏ先情報から特定される、フラッシュメモリ内の記憶領域に対してＩ／Ｏを行う。
【００１２】
好適な実施形態では、ストレージコントローラと複数のフラッシュメモリモジュールとの両方が接続される第一のスイッチ機構に加えて、複数のフラッシュメモリモジュールが接続されるがストレージコントローラは接続されない第二のスイッチ機構を備える。フラッシュメモリモジュール間でのデータ転送は、第二のスイッチ機構を介して行われる。
【発明を実施するための最良の形態】
【００１３】
以下、図面を参照して、本発明の幾つかの実施形態を説明する。
【実施例１】
【００１４】
図２０は、本発明の第一の実施形態に係るストレージシステムの構成を示す。
【００１５】
ストレージシステム２０００は、複数のフラッシュメモリモジュール２００３と、複数のフラッシュメモリモジュールの上位にあるストレージコントローラとを備えている。
【００１６】
各フラッシュメモリモジュール２００３は、例えば、複数のＮＡＮＤ型のフラッシュメモリチップと、フラッシュメモリ制御部３０１（例えば図３参照）とを有する。従って、フラッシュメモリモジュール２００３には、ページ単位でデータの書込み及び読出しが行われ、ブロック単位で、データの消去が行われる。以下の説明では、一つのページに記憶されるデータを「データ要素」と言い、複数のページで構成される一つのブロックに記憶されるデータを「データ要素群」と言う。また、ストレージシステムの上位装置としてのホストコンピュータ２００９から受信するＩ／Ｏ要求で指定されているアドレスから特定されるブロックを「論理ブロック」と言うことがある。論理ブロックに割り当てられている物理ブロックを「元ブロック」と言うことがある。元ブロック内の第一の物理ページに記憶されている第一のデータ要素が第二のデータ要素に更新される場合、第二のデータ要素は、元ブロックに割り当てられている別の物理ブロック内の第二の物理ページに書き込まれるが、元ブロック内の上記第一の物理ページを「元ページ」と言い、上記第一のデータ要素を「元データ要素」と言い、上記別の物理ブロックを「更新ブロック」と言い、更新ブロック内の上記第二の物理ページを「更新ページ」と言い、上記第二のデータ要素を「更新データ要素」と言うことがある。また、論理ブロック内の論理ページに対応した最新のデータ要素を「有効データ要素」と言う。元データ要素が未更新であれば、有効データ要素はその元データ要素であり、元データ要素に対応した更新データ要素が更新ブロックに存在しているならば、有効データ要素はその更新データ要素である。
【００１７】
複数のフラッシュメモリモジュール２００３のうちの各二以上のフラッシュメモリモジュール２００３により、ＲＡＩＤグループが構成される（ＲＡＩＤは、Redundant Array of Independent (or Inexpensive) Disksの略である）。ＲＡＩＤグループは、パリティグループと呼ばれることもある。一又は複数のＲＡＩＤグループが提供する一又は複数の記憶空間を論理的に区切ることで、複数の論理ボリュームが形成される。複数の論理ボリュームのうちの少なくとも一つが、ストレージシステム２０００の上位装置としてのホストコンピュータ２００９に提供される。ストレージコントローラは、論理ボリュームを指定したＩ／Ｏ要求（ライト要求或いはリード要求）をホストコンピュータ２００９から受けて、そのＩ／Ｏ要求に応答して、そのＩ／Ｏ要求（ライト要求）で指定されている論理ボリュームにライト対象のデータを書き込む、或いは、そのＩ／Ｏ要求（リード要求）で指定されている論理ボリュームからリード対象のデータを読み出す。論理ボリュームにライト対象のデータが書き込まれるということは、その書込み先を表す論理アドレスに対応した一又は複数のページに、ライト対象のデータの基になっているデータ要素が書き込まれるということである。また、論理ボリュームからリード対象のデータが読み出されるということは、その読出し元を表す論理アドレスに対応した一又は複数のページから、リード対象のデータの基になっている有効データ要素が読み出されるということである。
【００１８】
ストレージコントローラは、例えば、ホストアダプタ２００４と、キャッシュメモリ２００５と、プロセッサ２００６とで構成されている。ホストアダプタ２００４、キャッシュメモリ２００５及びプロセッサ２００６は、多重化（例えば二重化）されている。ホストアダプタ２００４、キャッシュメモリ２００５及びプロセッサ２００６と、複数のフラッシュメモリモジュール２００３とが、第一のスイッチ機構２００１に接続されている。
【００１９】
第一のスイッチ機構２００１は、一又は複数のスイッチデバイスで構成される。第一のスイッチ機構２００１を通じて、フラッシュメモリモジュール２００３、ホストアダプタ２００４、キャッシュメモリ２００５及びプロセッサ２００６同士の通信が行われる。
【００２０】
キャッシュメモリ２００５は、論理ボリュームに書き込まれるライト対象のデータ、及び、論理ボリュームから読み出されたリード対象のデータを一時的に記憶する。キャッシュメモリ２００５は、多重化されているプロセッサ２００６（つまり複数のプロセッサ２００６）からアクセス可能である。キャッシュメモリ２００５の一部の記憶領域であるキャッシュ領域２２０１には、複数のフラッシュメモリモジュール２００３内の複数のフラッシュメモリに関する情報（以下、「フラッシュ管理情報」と言う）が記憶される。ホストコンピュータ２００９からホストアダプタ２００４で受信するＩ／Ｏ要求では、論理ボリュームの論理ブロックのアドレス（論理アドレス範囲）が指定されているため、論理アドレス範囲に対応するデータ要素がどのページに記憶されているかを管理する必要があるが、フラッシュ管理情報は、論理アドレス範囲と物理アドレスとの対応関係を表すアドレス変換情報を含む。プロセッサ２００６は、そのアドレス変換情報を用いて、所望のフラッシュメモリ内のページ或いはブロックにアクセスすることができる。アドレス変換情報は、例えば、図２１に示す第一の管理テーブルと、図２２に示す第二の管理テーブルとを含んでいる。第一の管理テーブルで、論理アドレス範囲と大まかな物理アドレスとの対応関係が管理されており、第二の管理テーブルで、大まかな物理アドレスと詳細な物理アドレスとの対応関係が管理されている。
【００２１】
具体的には、第一の管理テーブルには、図２１に示すように、論理アドレス範囲毎に、大まかな物理アドレスが対応付けられている。大まかな物理アドレスは、例えば、フラッシュメモリ制御部アドレス、ブロック番号、更新ページマップ、及び、更新ブロックアドレスで構成されている。論理アドレス範囲は、論理ブロックのアドレスである。その論理ブロックに対応した元ブロックを特定するために、その元ブロックの番号と、その元ブロックにアクセス可能なフラッシュメモリ制御部のアドレスが対応付けられている。ブロック番号内には、元ブロックを含んだフラッシュメモリチップのアドレスであって、その元ブロックにアクセス可能なフラッシュメモリ制御部が指定できるアドレスも含まれる。更新ページマップは、元ブロック内の元ページ（つまり更新されたページ）の位置を示すマップ（例えばビットマップ）である。更新ブロックアドレスは、論理アドレス範囲から同定される論理ブロックに対応した元ブロックに割り当てられている更新ブロックのアドレスである。更新ブロックアドレスは、例えば、フラッシュメモリ制御部アドレスとブロック番号で構成されている。
【００２２】
第二の管理テーブルには、図２２に示すように、更新ブロックアドレス毎に、書込み位置情報及び元ページ情報が記録される。書込み位置情報は、更新ブロックのどのページまでが更新ページとなっているか（更新データ要素が書き込まれているページであるか）を表す情報である。元ページ情報は、元ページを同定するための情報であり、更新ページ毎に対応付けられる情報である。元ページ情報は、例えば、元ページに対応するページ番号と、その元ページを有する元ブロックの番号と、その元ブロックにアクセスするフラッシュメモリ制御部のアドレスとで構成されている。
【００２３】
以上のことから、第一及び第二の管理テーブルで構成されるアドレス変換情報は、論理ブロック内の論理ページに対応した有効データ要素が記憶されている物理ページの在り処を示す情報と言うことができる。例えば、プロセッサ２００６は、或る論理ページに対応する元ページに関する元ページ情報が、その元ページを含んだ元ブロックに割り当てられている更新ブロックに対応付けられていなければ、その元ページに記憶されているデータ要素が、その或る論理ページに対応する有効データ要素であることがわかる。一方、上記元ページ情報が上記更新ブロックに対応付けられていれば、プロセッサ２００６は、その元ページ情報が対応付けられている一以上の更新ページのうちアドレスが最も後ろである更新ページに記憶されている更新データ要素が、上記或る論理ページに対応した有効データ要素であることがわかる。プロセッサ２００６は、例えば上記或る論理ページに対応した有効データ要素を読み出す場合には、有効データ要素を記憶する元ページ又は更新ページを表すＩ／Ｏ先情報を有したページ単位のリードコマンドを作成し、そのリードコマンドを、その元ページ又は更新ページを有するフラッシュメモリモジュール２００３内のフラッシュメモリ制御部（図３参照）に送信する。これにより、そのフラッシュメモリ制御部によって、図４を参照して後に説明する単一ページ読出し動作が実行される。以上のように、プロセッサ２００６からフラッシュメモリモジュール２００３に送信されるＩ／Ｏコマンドが、Ｉ／Ｏ先となる物理ページを表すＩ／Ｏ先情報を有するので、フラッシュメモリモジュール２００３内で、論理アドレスと物理アドレスの対応関係を表す情報を保持する必要がない。このため、後述のフラッシュメモリ制御部は、論理アドレスから物理アドレスを特定するというアドレス変換機能を有していなくて良い。
【００２４】
再び図２０を参照する。ホストアダプタ２００４は、ホストコンピュータ２００９からＩ／Ｏ要求を受け付け、Ｉ／Ｏ要求を、第一のスイッチ機構２００１を通じてプロセッサ２００６に転送する。また、ホストアダプタ２００４は、受け付けたＩ／Ｏ要求がライト要求の場合、ライト対象のデータをキャッシュメモリ２００５に書き込む。また、ホストアダプタ２００４は、受け付けたＩ／Ｏ要求がリード要求の場合、キャッシュメモリ２００５に記憶されているリード対象のデータをキャッシュメモリ２００５から読み出し、読み出したリード対象のデータをホストコンピュータ２００９に送信する。ホストアダプタ２００４には、ホストコンピュータ２００９の他に、図示のように管理端末２００７が接続される。管理端末２００７のディスプレイ画面２００８には、例えば、複数のフラッシュメモリモジュール２００３における多数のフラッシュメモリチップに関する状況が表示される。その状況を表す情報（以下、「フラッシュメモリ状況情報」と言う）は、例えば、所定の記憶資源（例えばキャッシュメモリ２００５）に蓄積される。プロセッサ２００６が、ホストアダプタ２００４を通じて、フラッシュメモリ状況情報を管理端末２００７に送信し、管理端末２００７が、その情報が表す状況を表示する。表示される状況としては、例えば、第一の管理テーブル及び／又は第二の管理テーブルから特定される状況や、どのフラッシュメモリモジュール内のどのフラッシュメモリチップで不良ブロックが存在するか等がある。
【００２５】
プロセッサ２００６は、ホストアダプタ２００４からのＩ／Ｏ要求を処理する。具体的には、そのＩ／Ｏ要求から特定される論理アドレスに対応した後述の物理アドレスを特定し、その物理アドレスに基づくＩ／Ｏ先情報を有したＩ／Ｏコマンドを、そのＩ／Ｏ先情報から特定される記憶領域を有するフラッシュメモリチップにアクセス可能なフラッシュメモリ制御部３０１（例えば図３参照）に送信する。また、プロセッサ２００６は、後に詳述するリクラメーションコマンドを作成して発行する。Ｉ／Ｏコマンドの作成や、リクラメーションコマンドの作成には、前述した第一及び第二の管理テーブル（図２１及び図２２参照）のうちの必要部分のコピーが使用される。その必要部分のコピーは、例えば、プロセッサ２００６が有するローカルメモリ２２０２に記憶される。なお、Ｉ／Ｏ先の記憶領域は、物理ページである。リードやライトがページ単位で行われるためである。従って、Ｉ／Ｏコマンドに含まれるＩ／Ｏ先情報には、例えば、Ｉ／Ｏ先領域に対応した物理ページのページ番号と、その物理ページを含んだ物理ブロックの番号と、その物理ブロックにアクセス可能なフラッシュメモリ制御部３０１のアドレスとが含まれている。つまり、Ｉ／Ｏコマンドは、ページ単位で発行される。一方、消去用のコマンドは、ブロック単位でプロセッサ２００６から発行される。消去用のコマンドは、消去対象の物理ブロックの番号を有する。
【００２６】
ストレージシステム２０００には、第一のスイッチ機構２００１の他に、第二のスイッチ機構２００２が備えられる。第二のスイッチ機構２００２は、一又は複数のスイッチデバイスで構成されている。第二のスイッチ機構２００２には、複数のフラッシュメモリモジュール２００３が接続されるが、ホストアダプタ２００４、キャッシュメモリ２００５及びプロセッサ２００６は接続されない。すなわち、第二のスイッチ機構２００２は、フラッシュメモリモジュール２００３間の通信に専用のスイッチ機構である。第二のスイッチ機構２００２にフラッシュメモリモジュール２００３を接続していくことで、フラッシュメモリモジュール２００３をツリー状に拡張することができる。
【００２７】
図３は、フラッシュメモリモジュール２００３の構成を示す。
【００２８】
フラッシュメモリモジュール２００３は、メモリコントローラとしてのフラッシュメモリ制御部３０１と、これに接続されたフラッシュメモリである複数（又は一つ）のフラッシュメモリチップ３１５とを備えたモジュールである。
【００２９】
フラッシュメモリチップ３１５は、複数の物理ブロック３１６で構成されている。一つの物理ブロック３１６は、複数個（例えば６４個）の物理ページ３１７で構成されている。
【００３０】
フラッシュメモリ制御部３０１に、データバス３１９及び制御信号ライン３１８を共有する複数のフラッシュメモリチップ３１５が接続されている。データバス３１９は、データ要素が流れるバスである。制御信号ライン３１８は、制御信号が流れるラインである。
【００３１】
フラッシュメモリ制御部３０１と各フラッシュメモリチップ３１５とを結ぶラインとして、制御信号ライン３１８の他に、チップ選択信号が流れるライン３２０や、ビジー信号が流れるライン３２１がある。ライン３２０及び３２１は、フラッシュメモリチップ３１５毎に独立して配線されている。
【００３２】
フラッシュメモリ制御部３０１は、コマンド解釈部３０２、フラッシュコマンド生成部３０３、第一のブロックバッファ３０５、シーケンス／タイミング制御部３０４、第一のページバッファ３０６、第二のページバッファ３０７、チップ選択部３０８及びビジー信号監視部３０９を備える。フラッシュメモリ制御部３０１は、第一のデータバス３１２を経由して第一のスイッチ機構２００１（図２０参照）に接続されている。また、図３には示されていないが、図９及び図１０に示すように、フラッシュメモリ制御部３０１は、更に、第二のブロックバッファ９０３（図９及び図１０では、転送元と転送先を区別するために９０３Ａ、９０３Ｂと記載している）を備えている。フラッシュメモリ制御部３０１が、第二のデータバス９０４を経由して第二のスイッチ機構２００２（図２０参照）に接続されている。フラッシュメモリ制御部３０１がプロセッサ２００６から受信する信号として、例えば、コマンド３１０及び起動信号３１３がある。フラッシュメモリ制御部３０１がプロセッサ２００６に送信する信号として、例えば、ステータス３１１及び状態信号３１４がある。起動信号３１３は、フラッシュメモリ制御部３０１を起動させるための信号である。状態信号３１４は、フラッシュメモリ制御部３０１の状態（例えば、動作中又は動作終了）を示す信号である。
【００３３】
コマンド解釈部３０２は、プロセッサ２００６からのコマンド３１０を解釈し、解釈の結果をフラッシュコマンド生成部３０３に伝える。また、コマンド解釈部３０２は、ステータス３１１をプロセッサ２００６に送信する。
【００３４】
フラッシュコマンド生成部３０３は、コマンド解釈部３０２での解釈の結果を基に、フラッシュメモリチップ３１５に対するコマンド（以下、「フラッシュコマンド」と言う）を生成する。フラッシュコマンドは、例えば制御信号ライン３１８を経由して、ターゲットのフラッシュメモリチップ３１５に送信される。フラッシュコマンドの種類としては、例えば、リード、ライト及び消去の３種類がある。リード及びライトのフラッシュコマンドは、ページ単位で発行され、消去のフラッシュコマンドは、ブロック単位で発行される。リード及びライトのフラッシュコマンドに従うデータ要素は、データバス３１９を経由する。
【００３５】
第一のブロックバッファ３０５は、このバッファ３０５を有するフラッシュメモリモジュール２００３内でリクラメーションする場合に使用されるバッファである。第一のブロックバッファ３０５には、更新ブロック内の更新ページから読み出された有効データ要素と、その更新ブロックに割り当てられているＮ個の元ブロック（Ｎは自然数）内の元ページから読み出された有効データ要素とが記憶される。従って、第一のブロックバッファ３０５の記憶容量としては、少なくともＮ個のブロック分の記憶容量が必要である。
【００３６】
シーケンス／タイミング制御部３０４は、フラッシュメモリ制御部３０１の動作シーケンスや各信号のタイミングを制御する。シーケンス／タイミング制御部３０４が、プロセッサ２００６から起動信号３１３を受信してフラッシュメモリ制御部３０１を起動したり、状態信号３１４をプロセッサ２００６に送信したりする。
【００３７】
第一のページバッファ３０６は、物理ページ３１７にデータ要素を書き込む場合に使用されるバッファである。具体的には、第一のページバッファ３０６には、物理ページ３１７に書き込まれるデータ要素が格納される。第一のページバッファ３０６の記憶容量は、１個の物理ページ分の記憶容量である。
【００３８】
第二のページバッファ３０７は、物理ページ３１７からデータ要素が読み出される場合に使用されるバッファである。具体的には、第二のページバッファ３０６には、物理ページ３１７から読み出されたデータ要素が格納される。第二のページバッファ３０７の記憶容量も、１個の物理ページ分の記憶容量である。
【００３９】
チップ選択部３０８は、フラッシュコマンドに基づき、フラッシュコマンドの送信先となるフラッシュメモリチップ３１５を選択する。
【００４０】
ビジー信号監視部３０９は、フラッシュメモリチップ３１５からのビジー信号の有無を監視する。
【００４１】
図９に示す第二のブロックバッファ９０３は、このバッファ９０３を有するフラッシュメモリモジュール２００３と別のフラッシュメモリモジュール２００３間でリクラメーションする場合に使用されるバッファである。第二のブロックバッファ９０３には、更新ブロック内の更新ページから読み出された有効データ要素と、その更新ブロックに割り当てられているＭの元ブロック（Ｍは自然数）内の元ページから読み出された有効データ要素とが記憶される。従って、第二のブロックバッファ９０３の記憶容量としては、少なくともＭ個のブロック分の記憶容量が必要である。Ｍの値と前述したＮの値は、同じであっても異なっていても良い。すなわち、或る更新ブロックに割り当てられている元ブロックの個数と、別の更新ブロックに割り当てられている元ブロックの個数は、同じであっても異なっていても良い。第二のブロックバッファ９０３に記憶されている有効データ要素群が、第二のデータバス９０４及び第二のスイッチ機構２００２（図２０参照）を介して、別のフラッシュメモリモジュール２００３内のフラッシュメモリ制御部３０１に転送される。また、別のフラッシュメモリモジュール２００３内のフラッシュメモリ制御部３０１から、第二のデータバス９０４及び第二のスイッチ機構２００２（図２０参照）を介して受信された有効データ要素群が、第二のブロックバッファ９０３に書き込まれる。
【００４２】
図２は、フラッシュメモリチップ３１５の構成を示す。
【００４３】
フラッシュメモリチップ３１５は、メモリセルアレイ２０２と、１又は２個の物理ページ分の記憶容量を有した内部バッファ２０５とを備える。ページ単位で、メモリセルアレイ２０２と内部バッファ２０５間でデータ要素が転送され、書き込みや読み出しが行われる。フラッシュメモリチップ３１５の制御には、チップ選択信号２０６や、データバス３１９に乗っている情報を識別する複数の制御信号２０７や、内部動作中を示すビジー信号２０８などが持ち用いられる。
【００４４】
メモリセルアレイ２０２は、複数の物理ブロック３１６に分割されている。また、各物理ブロック３１６は、複数の物理ページ３１７で構成されている。
【００４５】
例えば図１に、メモリセルアレイ２０２の一部分を示す。図１は、メモリセルが、横方向に１６８９６個、縦方向に１６個並んでいる例を示す図である。横方向の１列を構成するメモリセル群で、書込み及び読出しの単位であるページが構成されている。縦方向の１列では、フローティングゲートを備えるＦＥＴ（Field Effect Transistor）が、１６個直列に接続されている。メモリセルの縦方向をビット線とし、横方向をワード線としたときに、１本のワード線で選択されるメモリセルで、ページが構成されているということになる。また、図１では、１６ページ分のメモリセルが示されていることになる。図１に示すメモリセルアレイ部分を４個まとめることで、消去単位である１個の物理ブロックが構成される。すなわち、図１の例によれば、物理ブロックが６４個の物理ページで構成されていることになる。ＮＡＮＤ型フラッシュメモリのアクセスは、コマンド、カラムアドレス、ローアドレスの順にアドレスが与えられて行われる。ローアドレスは、ブロックアドレスとページアドレスで構成される。上位側でブロックが指定され、下位側でページが指定される。
【００４６】
以下、本実施形態で行われる種々の処理を説明する。
【００４７】
まず、図４を用いて、単一ページ読出し動作を説明する。
【００４８】
プロセッサ２００６が、起動信号３１３を、リード元の物理ページを指定したリードコマンドの送信先フラッシュメモリ制御部３０１に送信し、且つ、そのリードコマンド３１０を、そのフラッシュメモリ制御部３０１に送信する。コマンド解釈部３０２は、コマンド３１０を受信し、そのコマンド３１０がリードコマンドであることを特定する。フラッシュコマンド生成部３０３が、そのリードコマンド３１０に対応したリードフラッシュコマンドを作成する。そのリードフラッシュコマンドには、以下の（４−１）乃至（４−３）を含んだアドレス情報、
（４−１）リード元の物理ページ４０１の番号、
（４−２）その物理ページ４０１を含んだ物理ブロックの番号、
（４−３）その物理ブロックを含んだフラッシュメモリチップの番号、
が含まれている。フラッシュコマンド生成部３０３が作成したリードフラッシュコマンドが、上記（４−３）から特定されるフラッシュメモリチップに送信される。それに応答して、リード元の物理ページ４０１からデータ要素が読み出され、読み出されたデータ要素が、第二のページバッファ３０７に転送される。そして、第二のページバッファ３０７から、第一のデータバス３１２を経由して、プロセッサ２００６にそのデータ要素が転送される。リードの終了を表す状態信号３１４が、シーケンス／タイミング制御部３０４からプロセッサ２００６に送信される。
【００４９】
次に、図５を用いて、単一ページ書き込み動作を説明する。
【００５０】
プロセッサ２００６が、起動信号３１３を、ライト先の物理ページを指定したライトコマンドの送信先フラッシュメモリ制御部３０１に送信し、且つ、そのライトコマンド３１０及びライト対象のデータ要素を、そのフラッシュメモリ制御部３０１に送信する。
【００５１】
ライト対象のデータ要素が、第一のデータバス３１２を経由して、第一のページバッファ３０６に格納される。
【００５２】
コマンド解釈部３０２は、コマンド３１０を受信し、そのコマンド３１０がライトコマンドであることを特定する。フラッシュコマンド生成部３０３が、そのライトコマンド３１０に対応したライトフラッシュコマンドを作成する。そのライトフラッシュコマンドには、以下の（５−１）乃至（５−３）を含んだアドレス情報、
（５−１）ライト先の物理ページ５０１の番号、
（５−２）その物理ページ５０１を含んだ物理ブロックの番号、
（５−３）その物理ブロックを含んだフラッシュメモリチップの番号、
が含まれている。フラッシュコマンド生成部３０３が作成したライトフラッシュコマンドが、上記（５−３）から特定されるフラッシュメモリチップに送信される。また、第一のページバッファ３０６に格納されているライト対象のデータ要素が、そのフラッシュメモリチップに送信される。その結果、ライト先の物理ページ５０１に、ライト対象のデータ要素が書き込まれる。単一ページ書込み動作の終了を表す状態信号３１４が、シーケンス／タイミング制御部３０４からプロセッサ２００６に送信される。
【００５３】
図６を参照して、元ブロック内の有効データ要素に更新が発生する場合に行われる処理を説明する。
【００５４】
元ブロック６０１の全ての元ページに有効データ要素が格納されているとする。また、元ブロック６０１に、有効データ要素が記憶されていない更新ブロック（消去済みブロック）６０２が割り当てられているとする。この場合、元ブロック６０１内の或る元ページに記憶されている有効データ要素が更新データ要素に更新される必要が生じると、その更新データ要素は、元ブロック６０１のその或る元ページではなく、更新ブロック６０２における、有効データ要素が書込まれていないページのうちページアドレスが最も若いページに書き込まれる。すなわち、更新データ要素は、ページアドレスの若い順に書き込まれる。
【００５５】
具体的には、例えば、元ページ６０３に記憶されている有効データ要素が更新データ要素に更新される必要がある場合、プロセッサ２００６が、更新データ要素の書込み先として更新ブロック６０２内の物理ページ６０４を指定したライトコマンドを、その更新ブロック６０２を有するフラッシュメモリモジュール２００３内のフラッシュメモリ制御部３０１に送信する。物理ページ６０４は、更新ブロック６０２における、有効データ要素が書込まれていないページであってページアドレスが最も若いページ（図６によれば先頭ページ）である。そのライトコマンドに従って、図５を参照して説明した単一ページ書込み動作が行われることにより、更新データ要素が、物理ページ６０４に書き込まれる。
【００５６】
この場合、例えばフラッシュメモリ制御部３０１から、書込み完了を表す状態信号３１４がプロセッサ２００６に送信される。プロセッサ２００６は、例えばその状態信号３１４の受信に応答して、第一の管理テーブル（図２１参照）における、元ブロック６０１が割り当てられている論理ブロックに対応した更新ページマップを更新する。具体的には、元ページ６０３は元ブロック６０１内の３番目の物理ページであるため、更新ページマップでは、３番目の物理ページに対応するビットが更新される。
【００５７】
また、プロセッサ２００６は、第二の管理テーブル（図２２参照）における、更新ブロック６０２に対応した書込み位置情報を、１番目の更新ページまで更新データ要素が書き込まれていることを表す情報に更新する。
【００５８】
更に、プロセッサ２００６は、第二の管理テーブル（図２２参照）における、更新ブロック６０２の１番目のページに対応する元ページ情報を、元ブロック６０１の３番目のページ６０３を表す情報に更新する。
【００５９】
以下、第一及び第二の管理テーブルの更新の説明は省略或いは簡略するが、このような更新は、更新ブロック６０２に更新データ要素が書き込まれる都度に、プロセッサ２００６によって行われる。
【００６０】
プロセッサ２００６は、更新後の第一及び第二の管理テーブルを参照すれば、元ブロック６０１が割り当てられている論理ブロックにおける３番目の論理ページに対応する有効データ要素が、元ブロック６０１内の元ページ６０３ではなく更新ブロック６０２内の更新ページ６０４に存在していることを知ることができる。
【００６１】
さて、その後、元ブロック６０１内の元ページ６０５に記憶されている有効データ要素が更新データ要素に更新される必要がある場合、プロセッサ２００６が、更新データ要素の書込み先として更新ブロック６０２内の更新ページ６０６（更新ページ６０４の次の更新ページ）を指定したライトコマンドを、フラッシュメモリ制御部３０１に送信する。これにより、その更新データ要素は、更新ページ６０６に書き込まれる。また、第一及び第二の管理テーブルも、前述と同様の方法で更新される。
【００６２】
その後、再び、同一の元ページ６０５が更新される必要がある場合、プロセッサ２００６が、更新データ要素の書込み先として更新ページ６０７（更新ページ６０６の次の更新ページ）を指定したライトコマンドを、フラッシュメモリ制御部３０１に送信する。これにより、その更新データ要素は、更新ページ６０７に書き込まれる。また、第一及び第二の管理テーブルも、前述と同様の方法で更新される。この結果、第二の管理テーブルでは、更新ブロック６０２内の２番目と３番目の更新ページ６０６及び６０７にそれぞれ対応する元ページ情報が、元ブロック６０１の１番目の元ページ６０５を表す情報になっている。この第二の管理テーブルを参照することにより、プロセッサ２００６は、より後側の更新ページ６０７に記憶されているデータ要素が、元ブロック６０１が割り当てられている論理ブロックにおける１番目の論理ページに対応する有効データ要素であることを知ることができる。
【００６３】
以下、リクラメーション処理について説明する。
【００６４】
リクラメーション処理とは、１個の論理ブロックに対応した有効データ要素が複数の物理ブロックに分散して存在する場合に、それら複数の物理ブロックに分散している有効データ要素を１個の物理ブロックに集約する処理である。リクラメーション処理は、例えば、元ブロックに割り当てられている更新ブロックに空きの更新ページが無くなったことがプロセッサ２００６によって検出された場合に実行される。空きの更新ページが無くなったこととは、具体的には、更新ブロックに対応する書込み位置情報（図２２参照）がその更新ブロックの最後の更新ページを表していることである。
【００６５】
本実施形態では、リクラメーションに専用のコマンドであるリクラメーションコマンドがサポートされている。プロセッサ２００６からフラッシュメモリ制御部３０１に発行されるリクラメーションコマンドに従って、リクラメーション処理が実行される。これにより、ホストコンピュータ２００９からのＩ／Ｏ要求を処理する性能の低下を抑えることができる。
【００６６】
すなわち、リクラメーション処理では、ページ単位でのデータ要素の読み出しと、ページ単位でのデータ要素の書込みが行われるため、例えば、１個の物理ブロックが６４個のページで構成されているとすると、プロセッサ２００６が、６４個のリードコマンドと６４個のライトコマンドを発行することになると考えられる。これでは、プロセッサ２００６が高負荷になり、故に、ホストコンピュータ２００９からのＩ／Ｏ要求を処理する性能が低下するおそれがある。本実施形態では、前述の通り、リクラメーション処理を指示する専用のコマンドであるリクラメーションコマンドがサポートされている。このため、リクラメーション処理のためにプロセッサ２００６がページ単位でリードコマンド及びライトコマンドを発行する必要が無くなるので、ホストコンピュータ２００９からのＩ／Ｏ要求を処理する性能の低下を抑えることができる。
【００６７】
本実施形態で行われるリクラメーション処理は、モジュール内リクラメーション処理と、モジュール間リクラメーション処理の２種類に大別することができる。
【００６８】
モジュール内リクラメーション処理によれば、１個のフラッシュメモリモジュール２００３内で、１個の論理ブロックに対応する有効データ要素が、第一のブロックバッファ３０５上に、論理ページのアドレスが若い順に並べられ、並び替えられた有効データ要素が、そのモジュール２００３内の消去済みの物理ブロックに書き込まれる。
【００６９】
モジュール間リクラメーション処理によれば、転送元のフラッシュメモリモジュール（以下、「転送元モジュール」と言う）２００３内で、１個の論理ブロックに対応する有効データ要素が、第二のブロックバッファ９０３上に、論理ページのアドレスが若い順に並べられる。並べられた有効データ要素群が、転送元モジュール２００３から転送先のフラッシュメモリモジュール（以下、「転送先モジュール」と言う）２００３に第二のスイッチ機構２００２（図２０参照）を介して転送される。受信された有効データ要素群は、転送先モジュール２００３内の第二のブロックバッファ９０３に一旦書き込まれた後、その第二のブロックバッファ９０３から消去済みの物理ブロックに書き込まれる。
【００７０】
以下、各種のリクラメーション処理について詳細に説明する。
【００７１】
＜モジュール内リクラメーション処理＞。
【００７２】
図７を参照して、第一のモジュール内リクラメーション処理を説明する。
【００７３】
第一のモジュール内リクラメーション処理では、１個の論理ブロックに対応した有効データ要素が格納されている複数の物理ブロック６１１及び６１２と、有効データ要素の集約先の物理ブロック６１３が、１個のフラッシュメモリチップ６１４に存在する。物理ブロック６１１は、１個の論理ブロックに割り当てられている元ブロックであり、物理ブロック６１２は、その元ブロックに割り当てられている更新ブロックである。図７の例によれば、１個の更新ブロック６１２に割り当てられている元ブロック６１１の個数は１個のため、第一のブロックバッファ３０５の記憶容量としては、少なくとも１個の物理ブロック分の記憶容量が必要である。
【００７４】
図７に示すように、更新ブロック６１２に割り当てられている元ブロック６１１の個数が１個の場合、プロセッサ２００６は、図１３に示すリクラメーションコマンド１３００を、第一及び第二の管理テーブルを基に作成する。図１３に示すリクラメーションコマンド１３００には、先頭から順に言うと、リードコマンド１３０１、ページリスト１３０２、消去コマンド１３０４、ブロック番号１３０５、ライトコマンド１３０６及びブロック番号１３０７が含まれている。
【００７５】
ページリスト１３０２は、リードコマンド１３０１の後続のパラメータであり、各読出し元ページを表すブロック番号及びページ番号で構成されている。各読出し元ページは、１個の論理ブロックを構成する各論理ページに対応しており、有効データ要素が存在する物理ページである。どの物理ブロックのどの物理ページに有効データ要素が存在するかは、前述したように、プロセッサ２００６が第一及び第二の管理テーブル（厳密には、プロセッサ２００６内のローカルメモリに記憶された、第一及び第二の管理テーブルにおける必要部分のコピー）を参照することにより特定することができる。図７の例で言えば、ページリスト１３０２における１行目のブロック番号及びページ番号は、更新ブロック６１２の３番目の更新ページを表しており、２行目のブロック番号及びページ番号は、元ブロック６１１の２番目の元ページを表しており、３行目のブロック番号及びページ番号は、更新ブロック６１２の先頭の更新ページを表している。
【００７６】
ブロック番号１３０５は、消去コマンド１３０４の後続のパラメータであり、消去対象の物理ブロック６１３の番号を表している。ブロック番号１３０７は、ライトコマンド１３０６に後続のパラメータであり、データ要素群が消去される物理ブロック６１３を表している。
【００７７】
以上のようなリクラメーションコマンド１３００をフラッシュメモリ制御部３０１が受信すると、以下の処理が行われる。
【００７８】
すなわち、コマンド解釈部３０２が、受信したコマンド１３００がリクラメーションコマンドであることを特定する。フラッシュコマンド生成部３０３が、図１５に示すように、リクラメーションコマンド１３００におけるリードコマンド１３０１に応答して、ページリスト１３０２に基づき、複数の読出し元ページにそれぞれ対応する複数のリードフラッシュコマンド１５００を生成する。生成された各リードフラッシュコマンド１５００は、そのコマンド１５００で指定されている読出し元ページを有するフラッシュメモリチップに送信される。１個のリードフラッシュコマンド１５００は、例えば、２個のページリードコマンド１５０４及び１５０７と、それらのコマンド１５０４及び１５０７に挟まれているパラメータであるカラムアドレス１５０５及びローアドレス１５０６とで構成されている。カラムアドレス１５０５及びローアドレス１５０６は、ページリスト１３０２におけるブロック番号及びページ番号を用いて算出される。リードフラッシュコマンド１５００に応答して、このコマンド１５００が指定する読出し元ページから、有効データ要素が読み出される。読み出された有効データ要素は、第一のブロックバッファ３０５に書き込まれる。第一のブロックバッファ３０５上には、読み出された有効データ要素が、論理ページのアドレスが若い順に並ぶ。
【００７９】
次に、フラッシュメモリ制御部３０１は、リクラメーションコマンド１３００における消去コマンド１３０４に応答して、ブロック番号１３０５から特定される物理ブロック６１３内のデータ要素群を消去する。具体的には、フラッシュコマンド生成部３０３が、物理ブロック６１３内のデータ要素群を消去するための消去用のフラッシュコマンドを作成する。作成された消去用のフラッシュコマンドは、物理ブロック６１３を有するフラッシュメモリチップに送信される。これにより物理ブロック６１３に記憶されているデータ要素群が消去される。
【００８０】
次に、フラッシュメモリ制御部３０１は、リクラメーションコマンド１３００におけるライトコマンド１３０６に応答して、ブロック番号１３０７から特定される物理ブロック６１３に、第一のブロックバッファ３０５に格納されている有効データ要素群を書き込む。具体的には、フラッシュコマンド生成部３０３が、その有効データ要素群を構成する複数の有効データ要素を物理ブロック６１３内の複数の物理ページにそれぞれ書き込むためのページ単位の複数のライトフラッシュコマンドを作成する。作成されたライトフラッシュコマンドは、物理ブロック６１３を有するフラッシュメモリチップに送信される。これにより、第一のブロックバッファ３０５に格納されている複数の有効データ要素が物理ブロック６１３に書き込まれる。なお、第一のブロックバッファ３０５には、論理ページのアドレスが若い順に有効データ要素が並んでいるため、第一のブロックバッファ３０５の先頭の有効データ要素から順に、集約先の物理ブロック６１３の先頭ページから有効データ要素が順次に書込まれる。
【００８１】
フラッシュメモリ制御部３０１は、第一のブロックバッファ３０５に記憶されている有効データ要素群を物理ブロック６１３に書き終えた場合、リクラメーションコマンド１３００の処理の終了を表す状態信号３１４を、プロセッサ２００６に送信する。これにより、プロセッサ２００６は、リクラメーション処理が終了したことを知ることができる。
【００８２】
以上の一連の処理により、第一のモジュール内リクラメーション処理が完了する。なお、第一のモジュール内リクラメーション処理の変形例では、集約先の物理ブロック６１３が、フラッシュメモリチップ６１４とは異なるフラッシュメモリチップに存在しても良いし、元ブロック６１１又は更新ブロック６１２が、フラッシュメモリチップ６１４とは異なるフラッシュメモリチップに存在しても良い。つまり、第一のモジュール内リクラメーション処理の変形例では、複数のフラッシュメモリチップ間でリクラメーションが行われても良い。
【００８３】
１個のフラッシュメモリ制御部３０１は、複数のフラッシュメモリチップを制御しているので、フラッシュメモリチップで並列に処理できる処理は並列に行わせることができる。また、リクラメーション処理は、消去単位であるブロック毎に行われるが、フラッシュメモリチップに対して発行しているコマンドは、ページ単位のフラッシュコマンドである。従って、リクラメーション処理の最中でも、ホストコンピュータ２００９からのＩ／Ｏ要求に基づく、プロセッサ２００６からのページ単位のＩ／Ｏコマンドを、割り込ませることが可能である。
【００８４】
図８を参照して、第二のモジュール内リクラメーション処理を説明する。
【００８５】
第二のモジュール内リクラメーション処理では、２個の論理ブロックに対応した有効データ要素が格納されている複数の物理ブロック８０１〜８０３と、２個の論理ブロックにそれぞれ対応した２個の集約先の物理ブロック８０４及び８０５が、異なるフラッシュメモリチップ８１１及び８１２に存在する。具体的には、第一の論理ブロックに対応した第一の元ブロック８０１、更新ブロック８０３、及び、第二の論理ブロックに対応した第二の集約先ブロック８０５が、第一のフラッシュメモリチップ８１１に存在する。また、第二の論理ブロックに対応した第二の元ブロック８０２、及び、第一の論理ブロックに対応した第一の集約先ブロック８０４が、第二のフラッシュメモリチップ８１２に存在する。図８の例によれば、１個の更新ブロック８０３には、２個の元ブロック８０１及び８０２が割り当てられており、そのため、第一のブロックバッファ３０５の記憶容量は、２個の物理ブロック分の記憶容量が必要である。
【００８６】
図８に示すように、１個の更新ブロックに２個（又はそれより多くの個数）の元ブロックが割り当てられている場合、プロセッサ２００６は、図１４に示すリクラメーションコマンド１４００を、第一及び第二の管理テーブルを基に作成する。図１４に示すリクラメーションコマンド１４００によれば、図１３に示すリクラメーションコマンド１３００との相違点として、下記４点、
（１４−１）ページリスト１４０２に、２個の論理ブロックを構成する多数の論理ページにそれぞれ対応した多数の読出し元ページを表す情報が記録されている点（ページリスト１４０２の前半部分は、第一の論理ブロックに対応しており、ページリスト１４０２の後半部分は、第二の論理ブロックに対応している）、
（１４−２）消去コマンド１４０４の後続のブロック番号１４０５の個数が２個である点、
（１４−３）ライトコマンド１４０６の後続のブロック番号１４０７の個数が２個である点、
（１４−４）ページリスト１４０２、ブロック番号１４０５及びブロック番号１４０７のいずれのブロック番号に、フラッシュメモリチップのアドレスも含まれる点（すなわち、フラッシュメモリ制御部３０１の管理下のブロックを一義的に特定することが可能な情報がブロック番号に含まれている点）、
がある。
【００８７】
図１４のリクラメーションコマンド１４００におけるページリスト１４０２の前半部分に基づいて、元ブロック８０１及び更新ブロック８０３から第一のブロックバッファ３０５の前半部分に、第一の論理ブロックに対応する各有効データ要素が読み出される。第一の論理ブロックに対応する各有効データ要素は、第一のブロックバッファ３０５の前半部分において、論理ページのアドレスの若い順に並ぶ。同様に、ページリスト１４０２の後半部分に基づいて、元ブロック８０２及び更新ブロック８０３から第一のブロックバッファ３０５の後半部分に、第二の論理ブロックに対応する各有効データ要素が読み出される。第二の論理ブロックに対応する各有効データ要素は、第一のブロックバッファ３０５の後半部分において、論理ページのアドレスの若い順に並ぶ。
【００８８】
次に、フラッシュメモリ制御部３０１は、リクラメーションコマンド１４００における消去コマンド１４０４に応答して、２個のブロック番号１４０５からそれぞれ特定される２個の物理ブロック８０４及び８０５内のデータ要素群を消去する。
【００８９】
次に、フラッシュメモリ制御部３０１は、リクラメーションコマンド１４００におけるライトコマンド１４０６に応答して、２個のブロック番号１４０７からそれぞれ特定される２個の物理ブロック８０４及び８０５に、第一のブロックバッファ３０５に格納されている２個の有効データ要素群を書き込む。具体的には、第一のブロックバッファ３０５の前半部分に記憶されている有効データ要素群が、第一の集約先ブロック８０４に書き込まれ、第一のブロックバッファ３０５の後半部分に記憶されている有効データ要素群が、第二の集約先ブロック８０５に書き込まれる。
【００９０】
以上の一連の処理により、第二のモジュール内リクラメーション処理が完了する。なお、第二のモジュール内リクラメーション処理の変形例では、第二の元ブロック８０２及び第一の集約先の物理ブロック８０４が、フラッシュメモリチップ８１１に存在しても良い。つまり、第二のモジュール内リクラメーション処理の変形例では、単一のフラッシュメモリチップ内でデータ要素が再配置されても良い。
【００９１】
＜モジュール間リクラメーション処理＞。
【００９２】
図９及び図１０を参照して、第一のモジュール間リクラメーション処理を説明する。図９は、第一のフラッシュメモリモジュール（以下、「転送元モジュール」と言う）２００３Ａを示し、図１０は、第二のフラッシュメモリモジュール（以下、「転送先モジュール」と言う）２００３Ｂを示す。
【００９３】
図９の例によれば、転送元モジュール２００３Ａの１個のフラッシュメモリチップ８７１に、１個の論理ブロックに対応した元ブロック９０１と、元ブロック９０１に割り当てられている更新ブロック９０２が存在する。更新ブロック９０２に割り当てられている元ブロック９０１の個数は１個である。元ブロック９０１又は更新ブロック９０２が、別のフラッシュメモリチップに存在しても良い。
【００９４】
一方、図１０の例によれば、転送先モジュール２００３Ｂに、集約先の物理ブロック１００２が存在する。
【００９５】
図９及び図１０に示す、第一のモジュール間リクラメーション処理の例によれば、１個の更新ブロック９０２に割り当てられている元ブロック９０１の個数は１個のため、モジュール間で有効データ要素群が転送される際に使用される第二のブロックバッファ９０３の記憶容量は、１個の物理ブロック分の記憶容量で良い。
【００９６】
第一のモジュール間リクラメーション処理では、プロセッサ２００６が、第一及び第二の管理テーブル（図２１及び図２２参照）を基に、図１６に示す転送元用リクラメーションコマンド１６００と図１８に示す転送先用リクラメーションコマンド１８００を作成する。プロセッサ２００６は、転送元用リクラメーションコマンド１６００を、転送元モジュール２００３Ａ内のフラッシュメモリ制御部３０１Ａに送信し、転送先用リクラメーションコマンド１８００を、転送先モジュール２００３Ｂ内のフラッシュメモリ制御部３０１Ｂに送信する。
【００９７】
図１６に示す転送元用リクラメーションコマンド１６００によれば、図１３に示すリクラメーションコマンド１３００との共通点として、リードコマンド１６０１及びページリスト１６０２が含まれている点があり、相違点として、消去コマンド１３０４、ブロック番号１３０５、ライトコマンド１３０６及びブロック番号１３０７に代えて、転送コマンド１６０４及び転送先フラッシュメモリ制御部アドレス１６０５が含まれている点にある。転送コマンド１６０４は、ページリスト１６０３を基に読み出され論理ページのアドレスの若い順に並べられた有効データ要素群を転送先モジュール２００３Ｂに転送することのコマンドである。転送先フラッシュメモリ制御部アドレス１６０５は、転送コマンド１６０４に後続のパラメータであり、転送先モジュール２００３Ｂ内のフラッシュメモリ制御部３０１Ｂのアドレスを表す。
【００９８】
図１８に示す転送先用リクラメーションコマンド１８００によれば、図１３に示すリクラメーションコマンド１３００との共通点として、消去コマンド１８０１、消去コマンド１８０１に後続のブロック番号１８０２、ライトコマンド１８０３、及びライトコマンド１８０３に対応するブロック番号１８０５が含まれている点にあり、相違点として、リードコマンド１３０１及びページリスト１３０２が含まれていない点と、ライトコマンド１８０３について転送元フラッシュメモリ制御部アドレス１８０４が含まれている点にある。転送元フラッシュメモリ制御部アドレス１８０４は、転送元モジュール２００３Ａ内のフラッシュメモリ制御部３０１Ａのアドレスを表す。
【００９９】
転送元のフラッシュメモリ制御部３０１Ａは、転送元用クラメーションコマンド１６００を受信すると、以下の処理を行う。
【０１００】
すなわち、図９に示すように、コマンド解釈部３０２Ａが、受信したコマンド１６００が転送元用リクラメーションコマンドであることを特定する。フラッシュコマンド生成部３０３Ａが、図９に示すように、転送元用リクラメーションコマンド１６００におけるリードコマンド１６０１及びページリスト１６０２に基づいて、複数の読出し元ページにそれぞれ対応する複数のリードフラッシュコマンドを生成し、読出し元ページを有するフラッシュメモリチップにリードフラッシュコマンドをそれぞれ送信する。これにより、論理ブロックを構成する複数の論理ページに対応した複数の有効データ要素が読み出され、読み出された有効データ要素は、第二のブロックバッファ９０３Ａに書き込まれる。それら複数の有効データ要素は、論理ページのアドレスの若い順に第二のブロックバッファ９０３Ａに並んでいる。
【０１０１】
次に、フラッシュメモリ制御部３０１Ａは、転送元用リクラメーションコマンド１６００における転送コマンド１６０４に応答して、転送先フラッシュメモリ制御部アドレス１６０５が表すフラッシュメモリ制御部３０１Ｂに、第二のブロックバッファ９０３Ａに記憶されている有効データ要素群を、第二のデータバス９０４を通じて転送する。具体的には、例えば、コマンド解釈部３０２Ａが、転送コマンド１６０４を解釈した場合に、シーケンス／タイミング制御部３０４Ａが、第二のブロックバッファ９０３Ａに記憶されている有効データ要素群を、第二のデータバス９０４を通じて転送する。なお、このとき、転送先のフラッシュメモリ制御部３０１Ｂが、ビジーなら、ビジーであることがフラッシュメモリ制御部３０１Ｂ内のシーケンス／タイミング制御部からプロセッサ２００６に伝わり、プロセッサ２００６が、転送先のフラッシュメモリ制御部３０１Ｂに中断コマンドを送信しない限り、転送先のフラッシュメモリ制御部３０１Ｂは、転送元のフラッシュメモリ制御部３０１Ａから有効データ要素群を受け付けるまで待つ。
【０１０２】
フラッシュメモリ制御部３０１Ａは、第二のブロックバッファ９０３Ａに記憶されている有効データ要素群をフラッシュメモリ制御部３０１Ｂに転送し終えた場合（例えば、転送先のフラッシュメモリ制御部３０１Ｂから所定の応答を受信した場合）、転送元用リクラメーションコマンド１６００の処理の終了を表す状態信号３１４Ａを、プロセッサ２００６に送信する。これにより、プロセッサ２００６は、転送元モジュール２００３Ａから有効データ要素群の転送が終了したことを知ることができる。
【０１０３】
転送された有効データ要素群は、第二のスイッチ機構２００２（図２０参照）を経由し、図１０に示すように、第二のデータバス９０４を介して、フラッシュメモリ制御部３０１Ｂ内の第二のブロックバッファ９０３Ｂに格納される。
【０１０４】
転送先のフラッシュメモリ制御部３０１Ｂは、受信した転送先用リクラメーションコマンド１８００内の消去コマンド１８０１に応答して、ブロック番号１８０２から特定される物理ブロック１００２内のデータ要素群を消去する。
【０１０５】
次に、フラッシュメモリ制御部３０１Ｂは、転送先用リクラメーションコマンド１８００におけるライトコマンド１８０３に応答して、第二のブロックバッファ９０３Ｂに記憶されている有効データ要素群の送信元のフラッシュメモリ制御部３０１Ａが、転送元フラッシュメモリ制御部アドレス１８０４から特定されるフラッシュメモリ制御部であるか否かを判断する。肯定的な判断結果となれば、フラッシュメモリ制御部３０１Ｂは、ブロック番号１８０５から特定される物理ブロック１００２に、第二のブロックバッファ９０３Ｂに格納されている有効データ要素群を書き込む。その際、第二のブロックバッファ９０３Ｂにおいてアドレスが若い順から、有効データ要素が読み出され、集約先の物理ブロック１００２のページアドレスの若い順に、読み出された有効データ要素が書込まれていく。
【０１０６】
フラッシュメモリ制御部３０１Ｂは、第二のブロックバッファ９０３Ｂに記憶されている有効データ要素群を物理ブロック１００２に書き終えた場合、転送先用リクラメーションコマンド１８００の処理の終了を表す状態信号３１４Ｂを、プロセッサ２００６に送信する。これにより、プロセッサ２００６は、転送先モジュール２００３Ｂにおいて有効データ要素群の書き込み終了したことを知ることができる。
【０１０７】
以上の一連の処理により、第一のモジュール間リクラメーション処理が完了する。なお、転送先のフラッシュメモリ制御部３０１Ｂは、バッファ９０３Ｂが空いていれば、転送されてきた有効データ要素を受信するが、その際、転送元フラッシュメモリ制御部アドレス１８０４が表すフラッシュメモリ制御部と転送元フラッシュメモリ制御部３０１Ａとが一致したのを確認した場合に、指定されたブロック（ブロック番号１８０５が表すブロック）に、バッファ９０３Ｂに記憶されている有効データ要素群を書き込む。
【０１０８】
転送先用リクラメーションコマンド１８００は、プロセッサ２００６に代えて、転送先のフラッシュメモリ制御部３０１Ａからフラッシュメモリ制御部３０１Ｂに送信されても良い。しかし、上述の説明のように、転送元用リクラメーションコマンド１６００だけでなく転送先用リクラメーションコマンド１８００がプロセッサ２００６から送信されることで、プロセッサ２００６は、転送元モジュール２００３Ａと転送先モジュール２００３Ｂの両方から状態信号やステータスを受信できる。このため、プロセッサ２００６は、転送元モジュール２００３Ａと転送先モジュール２００３Ｂのそれぞれにおいて動作が確実に行われているかどうかを知ることができる。
【０１０９】
なお、モジュール内リクラメーション処理と同様に、１個の更新ブロックに複数個の元ブロックが割り当てられている第二のモジュール間リクラメーション処理を行うこともできる。すなわち、転送元モジュール２００３Ａに存在する更新ブロック９０２に、複数個の論理ブロックにそれぞれ割り当てられている複数個の元ブロック９０１が割り当てられても良く、転送先モジュール２００３Ｂに、複数個の論理ブロックにそれぞれ対応した複数個の集約先の物理ブロック１００２が存在しても良い。
【０１１０】
この場合、第二のブロックバッファ９０３Ａ及び９０３Ｂの記憶容量としては、更新ブロック９０２に割り当てられている複数の元ブロック分の記憶容量が必要である。
【０１１１】
また、この場合、転送元モジュール２００３Ａには、図１６に示す転送元用リクラメーションコマンド１６００に代えて、図１７に示す転送元用リクラメーションコマンド１７００が送信される。一方、転送先モジュール２００３Ｂには、図１８に示す転送先用リクラメーションコマンド１８００に代えて、図１９に示す転送先用リクラメーションコマンド１９００が送信される。
【０１１２】
図１７に示す転送元用リクラメーションコマンド１７００によれば、図１６に示す転送元用リクラメーションコマンド１６００との相違点として、下記２点、
（１７−１）複数個の論理ブロックを構成する多数の論理ページにそれぞれ対応した多数の読出し元ページを表す情報がページリスト１７０２に記録されている点、
（１７−２）ページリスト１７０２内のブロック番号にフラッシュメモリチップのアドレスも含まれる点、
がある。この転送元用リクラメーションコマンド１７００を受けた転送元フラッシュメモリ制御部３０１Ａは、ページリスト１７０２を基に、複数の元ブロック９０１から有効データ要素を読み出して第二のブロックバッファ９０３Ａに書き込む。この結果、複数の論理ブロックに対応した複数の有効データ要素群が、第二のブロックバッファ９０３Ａに記憶される。第二のブロックバッファ９０３Ａから、複数の有効データ要素群が、フラッシュメモリ制御部３０１Ｂに送信され、フラッシュメモリ制御部３０１Ｂ内の第二のブロックバッファ９０３Ｂに書き込まれる。
【０１１３】
また、図１９に示す転送先用リクラメーションコマンド１９００によれば、図１８に示す転送先用リクラメーションコマンド１８００との相違点として、下記３点、
がある。
（１９−１）消去コマンド１９０１の後続のブロック番号１９０２が複数個存在する点、
（１９−２）ライトコマンド１９０３に対応したブロック番号１９０５が複数個存在する点、
（１９−３）ブロック番号１９０２及びブロック番号１９０５のいずれのブロック番号にも、フラッシュメモリチップのアドレスが含まれる点、
がある。この転送先用リクラメーションコマンド１９００を受けた転送先フラッシュメモリ制御部３０１Ｂは、複数個のブロック番号１９０２から特定される複数の集約先ブロック１００２内のデータ要素群を消去する。そして、転送先フラッシュメモリ制御部３０１Ｂは、第二のブロックバッファ９０３Ｂに記憶されている複数の有効データ要素群を、複数個のブロック番号１９０５から特定される複数の集約先ブロック１００２に書き込む。
【０１１４】
以上、上述した第一の実施形態によれば、ストレージコントローラが、複数のフラッシュメモリを一元的に管理することができる。
【０１１５】
また、第一の実施形態によれば、ストレージコントローラが、リクラメーションコマンドをフラッシュメモリ制御部に発行すれば、フラッシュメモリ制御部が、そのリクラメーションコマンドに応答して、ページ単位での読出しや書込みが発生するリクラメーションを実行する。このため、ストレージコントローラがページ単位でリードコマンド及びライトコマンドを発行しなくて良いので、ホストコンピュータ２００９からのＩ／Ｏ要求を処理する性能の低下を抑えることができる。
【０１１６】
また、第一の実施形態によれば、ストレージコントローラが非接続の第二のスイッチ機構２００２を介して、フラッシュメモリモジュール２００３間で有効データ要素群が転送される。言い換えれば、フラッシュメモリモジュール２００３間での有効データ要素群の転送では、ストレージコントローラとフラッシュメモリモジュール２００３とを繋ぐ第一のスイッチ機構２００１は経由されない。このため、ホストコンピュータ２００９からのＩ／Ｏ要求に従うライト対象のデータ又はリード対象のデータが通るパスが圧迫されないので、ホストコンピュータ２００９からのＩ／Ｏ要求を処理する性能の低下を抑えることができる。
【実施例２】
【０１１７】
以下、図１１及び図１２を参照して、本発明の第二の実施形態を説明する。
【０１１８】
図１２に示すように、第二の実施形態では、フラッシュメモリモジュール２００３に代えて、統一ＩＦフラッシュメモリ制御部を備えたフラッシュメモリモジュール２００３´が採用される（“ＩＦ”はインタフェースの略である）。
【０１１９】
図１１に示すように、統一ＩＦフラッシュメモリ制御部１１０６は、フラッシュメモリ制御部３０１に加えて、ＩＦプロトコル変換部１１０３及び１１０４を備える。ＩＦプロトコル変換部１１０３及び１１０４は、高速シリアル通信のためのプロトコル変換を行う回路である。ＩＦプロトコル変換部１１０３は、第二のスイッチ機構２００２と第二のブロックバッファ９０３との間に存在する。ＩＦプロトコル変換部１１０４は、第一のスイッチ機構２００１と、コマンド解釈部３０２、第一のデータバス３１２及びシーケンス／タイミング制御部３０４との間に存在する。
【０１２０】
ＩＦプロトコル変換部１１０３及び１１０４により、第二のスイッチ機構２００２を経由する通信のＩＦと、第一のスイッチ機構２００１を経由する通信のＩＦが統一される。
【０１２１】
以上、本発明の幾つかの好適な実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。例えば、上述の実施形態では、データ再配置処理としてリクラメーション処理を例に採り説明したが、ウェアレベリング処理などの他のデータ再配置処理に応用することもできる。
【図面の簡単な説明】
【０１２２】
【図１】ＮＡＮＤ型フラッシュメモリのメモリセルアレイの一部分の模式図である。
【図２】フラッシュメモリチップの構成例を示す。
【図３】フラッシュメモリモジュールの構成例を示す。
【図４】単一ページ読出し動作の説明図である。
【図５】単一ページ書込み動作の説明図である。
【図６】元ブロック内の有効データ要素に更新が発生する場合に行われる処理の説明図である。
【図７】第一のモジュール内リクラメーション処理の説明図である。
【図８】第二のモジュール内リクラメーション処理を説明図である。
【図９】第一のモジュール間リクラメーション処理における転送元のフラッシュメモリモジュールを示す。
【図１０】第一のモジュール間リクラメーション処理における転送先のフラッシュメモリモジュールを示す。
【図１１】本発明の第二の実施形態に係るストレージシステムの構成例を示す。
【図１２】本発明の第二の実施形態におけるフラッシュメモリモジュールに備えられる統一ＩＦフラッシュメモリ制御部の構成例を示す。
【図１３】第一のモジュール内リクラメーション処理において発行されるリクラメーションコマンドを示す。
【図１４】第二のモジュール内リクラメーション処理において発行されるリクラメーションコマンドを示す。
【図１５】リードコマンド及びページリストに基づいてリードフラッシュコマンドが作成されることの説明図である。
【図１６】第一のモジュール間リクラメーション処理において発行される転送元用リクラメーションコマンドを示す。
【図１７】第二のモジュール間リクラメーション処理において発行される転送元用リクラメーションコマンドを示す。
【図１８】第一のモジュール間リクラメーション処理において発行される転送先用リクラメーションコマンドを示す。
【図１９】第二のモジュール間リクラメーション処理において発行される転送先用リクラメーションコマンドを示す。
【図２０】本発明の第一の実施形態に係るストレージシステムの構成例を示す。
【図２１】第一の管理テーブルの構成例を示す。
【図２２】第二の管理テーブルの構成例を示す。
【符号の説明】
【０１２３】
２０００…ストレージシステム  ２００１…第一のスイッチ機構  ２００２…第二のスイッチ機構  ２００３…フラッシュメモリモジュール  ２００４…ホストアダプタ  ２００５…キャッシュメモリ  ２００６…プロセッサ  ２００７…管理端末  ２００９…ホストコンピュータ
【図１】
2009282678.tif 000003
【図２】
2009282678.tif 000004
【図３】
2009282678.tif 000005
【図４】
2009282678.tif 000006
【図５】
2009282678.tif 000007
【図６】
2009282678.tif 000008
【図７】
2009282678.tif 000009
【図８】
2009282678.tif 000010
【図９】
2009282678.tif 000011
【図１０】
2009282678.tif 000012
【図１１】
2009282678.tif 000013
【図１２】
2009282678.tif 000014
【図１３】
2009282678.tif 000015
【図１４】
2009282678.tif 000016
【図１５】
2009282678.tif 000017
【図１６】
2009282678.tif 000018
【図１７】
2009282678.tif 000019
【図１８】
2009282678.tif 000020
【図１９】
2009282678.tif 000021
【図２０】
2009282678.tif 000022
【図２１】
2009282678.tif 000023
【図２２】
2009282678.tif 000024