特許第6050794号(P6050794)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立製作所の特許一覧
特許6050794フラッシュメモリモジュール、不揮発性半導体メモリモジュール及びストレージ装置
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6050794
(24)【登録日】2016年12月2日
(45)【発行日】2016年12月21日
(54)【発明の名称】フラッシュメモリモジュール、不揮発性半導体メモリモジュール及びストレージ装置
(51)【国際特許分類】
   G06F 3/06 20060101AFI20161212BHJP
   G06F 3/08 20060101ALI20161212BHJP
   G06F 12/00 20060101ALI20161212BHJP
【FI】
   G06F3/06 301Z
   G06F3/08 H
   G06F3/06 305C
   G06F3/06 301W
   G06F12/00 501B
   G06F12/00 542J
【請求項の数】18
【全頁数】32
(21)【出願番号】特願2014-169918(P2014-169918)
(22)【出願日】2014年8月22日
(62)【分割の表示】特願2013-502328(P2013-502328)の分割
【原出願日】2010年10月26日
(65)【公開番号】特開2014-225297(P2014-225297A)
(43)【公開日】2014年12月4日
【審査請求日】2014年8月22日
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】100093861
【弁理士】
【氏名又は名称】大賀 眞司
(74)【代理人】
【識別番号】100129218
【弁理士】
【氏名又は名称】百本 宏之
(72)【発明者】
【氏名】河村 篤志
(72)【発明者】
【氏名】小川 純司
【審査官】 坂東 博司
(56)【参考文献】
【文献】 特開2010−204970(JP,A)
【文献】 特表2012−503828(JP,A)
【文献】 国際公開第2010/036572(WO,A2)
【文献】 特開2009−087021(JP,A)
【文献】 特開2008−117253(JP,A)
【文献】 特開2006−195851(JP,A)
【文献】 特開2008−165518(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06
G06F 3/08
G06F 12/00
(57)【特許請求の範囲】
【請求項1】
複数のフラッシュメモリチップと、
プロセッサに接続されるメモリコントローラと、
を備え、
前記複数のフラッシュメモリチップの各フラッシュメモリチップは、複数のブロックを含み、各ブロックは複数の物理ページを含み、各物理ページはデータの書き込み/読み込み単位であり、
前記メモリコントローラは、前記プロセッサから、第1のデータセット及び前記プロセッサによって生成された第1の保証コードセットと、第2のデータセット及び前記プロセッサによって生成された第2の保証コードセットとを受信し、
前記第1のデータセットは複数の第1のユーザデータを含み、第1の保証コードセットは複数の第1の保証コードを含み、前記複数の第1の保証コードの各第1の保証コードは、前記複数の第1のユーザデータの1つに関連付けられ、
前記第2のデータセットは複数の第2のユーザデータを含み、第2の保証コードセットは複数の第2の保証コードを含み、前記複数の第2の保証コードの各第2の保証コードは、前記複数の第2のユーザデータの1つに関連付けられ、
前記メモリコントローラは、前記第1のデータセットと前記第2のデータセットとが同じデータセットの場合に、前記同じデータセットを第1の物理ページに格納し、前記第1の保証コードセットと前記第2の保証コードセットを第2の物理ページに格納する
ことを特徴とする、フラッシュメモリモジュール。
【請求項2】
前記メモリコントローラは、
前記第1の保証コードまたは前記第2の保証コードが格納されている物理ページに空き領域がある場合に、前記第1の保証コード及び前記第2の保証コードを新たな物理ページにコピーすることにより、前記第1の保証コード及び前記第2の保証コードを1つの物理ページにマージする
ことを特徴とする、請求項1に記載のフラッシュメモリモジュール。
【請求項3】
前記複数の第1の保証コードの各第1の保証コードは、前記関連付けられた前記複数の第1のユーザデータのうちの1つの第1のユーザデータから生成されるビットエラー訂正符号コードと、前記複数の第1のユーザデータのうちの1つの第1のユーザデータのアドレスとから構成され、
前記複数の第2の保証コードの各第2の保証コードは、前記関連付けられた前記複数の第2のユーザデータのうちの1つの第2のユーザデータから生成されるビットエラー訂正符号コードと、前記複数の第2のユーザデータのうちの1つの第2のユーザデータのアドレスとから構成される
ことを特徴とする、請求項1に記載のフラッシュメモリモジュール。
【請求項4】
前記複数の第1の保証コード及び前記複数の第2の保証コードの各保証コードは、各々異なる保証コードである、
ことを特徴とする、請求項1に記載のフラッシュメモリモジュール。
【請求項5】
前記第2の物理ページに格納されている、前記第1の保証コード及び前記第2の保証コードの位置情報は、前記第2の物理ページの先頭アドレスからの位置を示すオフセット情報として保持される
ことを特徴とする、請求項1に記載のフラッシュメモリモジュール。
【請求項6】
前記オフセット情報は、論理/物理アドレス変換テーブルに格納される、
ことを特徴とする、請求項5に記載のフラッシュメモリモジュール。
【請求項7】
前記第1の物理ページと前記第2の物理ページとは、各々異なるブロックに含まれている
ことを特徴とする、請求項1に記載のフラッシュメモリモジュール。
【請求項8】
前記メモリコントローラは、
読み込み対象の論理ページアドレスを取得し、
論理/物理アドレス変換テーブルから対象となる論理/物理アドレス情報を取得し、
取得した論理ページが重複排除処理された論理ページかを判定し、
前記論理ページが重複排除されていない論理ページである場合には、前記論理ページに対応する物理ページアドレスを取得し、
前記論理ページが重複排除されている論理ページである場合には、
前記論理ページのデータ部が格納されている物理ページデータアドレスを取得し、
前記論理ページの保証コードが格納されている物理ページコードアドレスを取得し、
前記論理ページの保証コードの物理位置を示す物理ページコードオフセットアドレスを取得し、
前記物理ページアドレスに基づいて物理ページに格納されているデータを読み込む
ことを特徴とする、請求項1に記載のフラッシュメモリモジュール。
【請求項9】
複数の不揮発性半導体メモリチップと、
プロセッサに接続されるメモリコントローラと、
を備え、
前記複数の不揮発性半導体メモリチップの各不揮発性半導体メモリチップは、複数のブロックを含み、各ブロックは複数の物理ページを含み、各物理ページはデータの書き込み/読み込み単位であり、
前記メモリコントローラは、前記プロセッサから、第1のデータセット及び前記プロセッサによって生成された第1の保証コードセットと、第2のデータセット及び前記プロセッサによって生成された第2の保証コードセットとを受信し、
前記第1のデータセットは複数の第1のユーザデータを含み、第1の保証コードセットは複数の第1の保証コードを含み、前記複数の第1の保証コードの各第1の保証コードは、前記複数の第1のユーザデータの1つに関連付けられ、
前記第2のデータセットは複数の第2のユーザデータを含み、第2の保証コードセットは複数の第2の保証コードを含み、前記複数の第2の保証コードの各第2の保証コードは、前記複数の第2のユーザデータの1つに関連付けられ、
前記メモリコントローラは、前記第1のデータセットと前記第2のデータセットとが同じデータセットの場合に、前記同じデータセットを第1の物理ページに格納し、前記第1の保証コードセットと前記第2の保証コードセットを第2の物理ページに格納する
ことを特徴とする、不揮発性半導体メモリモジュール。
【請求項10】
ストレージコントローラと、
複数のフラッシュメモリモジュールと、
前記フラッシュメモリモジュールは、複数のフラッシュメモリチップと、プロセッ
に接続されるメモリコントローラと、を備え、
前記複数のフラッシュメモリチップの各フラッシュメモリチップは、複数のブロックを含み、各ブロックは複数の物理ページを含み、各物理ページはデータの書き込み/読み込み単位であり、
前記メモリコントローラは、前記プロセッサから、第1のデータセット及び前記プロセッサによって生成された第1の保証コードセットと、第2のデータセット及び前記プロセッサによって生成された第2の保証コードセットとを受信し、
前記第1のデータセットは複数の第1のユーザデータを含み、第1の保証コードセットは複数の第1の保証コードを含み、前記複数の第1の保証コードの各第1の保証コードは、前記複数の第1のユーザデータの1つに関連付けられ、
前記第2のデータセットは複数の第2のユーザデータを含み、第2の保証コードセットは複数の第2の保証コードを含み、前記複数の第2の保証コードの各第2の保証コードは、前記複数の第2のユーザデータの1つに関連付けられ、
前記メモリコントローラは、前記第1のデータセットと前記第2のデータセットとが同じデータセットの場合に、前記同じデータセットを第1の物理ページに格納し、前記第1の保証コードセットと前記第2の保証コードセットを第2の物理ページに格納する
ことを特徴とする、ストレージ装置。
【請求項11】
前記メモリコントローラは、
前記第1の保証コードまたは前記第2の保証コードが格納されている物理ページに空き領域がある場合に、前記第1の保証コード及び前記第2の保証コードを新たな物理ページにコピーすることにより、前記第1の保証コード及び前記第2の保証コードを1つの物理ページにマージする
ことを特徴とする、請求項10に記載のストレージ装置。
【請求項12】
前記複数の第1の保証コードの各第1の保証コードは、前記関連付けられた前記複数の第1のユーザデータのうちの1つの第1のユーザデータから生成されるビットエラー訂正符号コードと、前記複数の第1のユーザデータのうちの1つの第1のユーザデータのアドレスとから構成され、
前記複数の第2の保証コードの各第2の保証コードは、前記関連付けられた前記複数の第2のユーザデータのうちの1つの第2のユーザデータから生成されるビットエラー訂正符号コードと、前記複数の第2のユーザデータのうちの1つの第2のユーザデータのアドレスとから構成される
ことを特徴とする、請求項10に記載のストレージ装置。
【請求項13】
前記複数の第1の保証コード及び前記複数の第2の保証コードの各保証コードは、各々異なる保証コードである、
ことを特徴とする、請求項10に記載のストレージ装置。
【請求項14】
前記第2の物理ページに格納されている、前記第1の保証コード及び前記第2の保証コードの位置情報は、前記第2の物理ページの先頭アドレスからの位置を示すオフセット情報として保持される
ことを特徴とする、請求項10に記載のストレージ装置。
【請求項15】
前記オフセット情報は、論理/物理アドレス変換テーブルに格納される、
ことを特徴とする、請求項14に記載のストレージ装置。
【請求項16】
前記第1の物理ページと前記第2の物理ページは異なるブロックに含まれる
ことを特徴とする、請求項10に記載のストレージ装置。
【請求項17】
前記メモリコントローラは、
読み込み対象の論理ページアドレスを取得し、
論理/物理アドレス変換テーブルから対象となる論理/物理アドレス情報を取得し、
取得した論理ページが重複排除処理された論理ページかを判定し、
前記論理ページが重複排除されていない論理ページである場合には、前記論理ページに対応する物理ページアドレスを取得し、
前記論理ページが重複排除されている論理ページである場合には、
前記論理ページのデータ部が格納されている物理ページデータアドレスを取得し、
前記論理ページの保証コードが格納されている物理ページコードアドレスを取得し、
前記論理ページの保証コードの物理位置を示す物理ページコードオフセットアドレスを取得し、
前記物理ページアドレスに基づいて物理ページに格納されているデータを読み込む
ことを特徴とする、請求項10に記載のストレージ装置。
【請求項18】
ストレージコントローラと、
複数の不揮発性半導体メモリモジュールと、
を備え、
前記不揮発性半導体メモリモジュールは、複数の不揮発性半導体メモリチップと、プロセッサに接続されるメモリコントローラと、を備え、
前記複数の不揮発性半導体メモリチップの各不揮発性半導体メモリチップは、複数のブロックを含み、各ブロックは複数の物理ページを含み、各物理ページはデータの書き込み/読み込み単位であり、
前記メモリコントローラは、前記プロセッサから、第1のデータセット及び前記
ロセッサによって生成された第1の保証コードセットと、第2のデータセット及び前記プロセッサによって生成された第2の保証コードセットとを受信し、
前記第1のデータセットは複数の第1のユーザデータを含み、第1の保証コードセットは複数の第1の保証コードを含み、前記複数の第1の保証コードの各第1の保証コードは、前記複数の第1のユーザデータの1つに関連付けられ、
前記第2のデータセットは複数の第2のユーザデータを含み、第2の保証コードセットは複数の第2の保証コードを含み、前記複数の第2の保証コードの各第2の保証コードは、前記複数の第2のユーザデータの1つに関連付けられ、
前記メモリコントローラは、前記第1のデータセットと前記第2のデータセットとが同じデータセットの場合に、前記同じデータセットを第1の物理ページに格納し、
前記第1の保証コードセットと前記第2の保証コードセットを第2の物理ページに格納する
ことを特徴とする、ストレージ装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、フラッシュメモリモジュール、不揮発性半導体メモリモジュール及びストレージ装置に関し、特に、書き換えが制限されているデバイスを記憶媒体とするフラッシュメモリモジュール、不揮発性半導体メモリモジュール及びストレージ装置に適用して好適なるものである。
【背景技術】
【0002】
従来、ストレージ装置では、例えば、磁気ディスクや光ディスク等のランダムアクセスが可能な不揮発性記憶媒体がデータ記憶媒体として用いられている。特に最近では、小型ディスクドライブを多数備えるストレージ装置が主流となっている。
【0003】
また、近年の半導体技術の進歩に伴って、一括消去可能な不揮発性半導体メモリが開発されている。このような不揮発性半導体メモリとしては、例えば、フラッシュメモリを例示できる。フラッシュメモリを記憶媒体とするストレージ装置は、小型ディスクドライブを多数備えるストレージ装置に比べて、省電力であったり、アクセス時間等が高速であったりすると考えられている。
【0004】
上記したフラッシュメモリは、既に記録されたデータ領域に対して、直接データの書き換えを行うことができないという特徴を有している。このため、記録データを書き換える際には、記録データを読み取った後、記録領域に対して消去を実行し、消去された未書込み領域に対して更新データを書き込む処理を行う必要がある。しかし、フラッシュメモリの消去時間は書込み時間に比べて長いため、一般的に、データを書き込む際には、旧データを一旦読みだした後、ライトデータと統合して更新データを生成し、生成した更新データを別の未書込み領域に書き込み、元の記録領域を無効化(上位装置からの参照を不可とする処理)する方法が採用されている。そして、未書込み領域が枯渇した場合には、無効化した領域を消去して、新たに未書込み領域を生成する。
【0005】
しかし、フラッシュメモリでは、データの消去回数に制限があり、データの書き換えが集中して消去回数が増大したデータ領域は、データの消去ができなくなり使用不能となってしまう。このため、特定のデータ領域にデータ消去処理が集中しないようにする必要があった。また、フラッシュメモリは、一度書き込んだページでも、時間とともに読み出しエラー率が増加してしまうため、書き込んでから一定時間経過したページを別ページに書き込むリフレッシュと呼ばれる動作が必要となる。
【0006】
このような特性を持つフラッシュメモリにおいては、データの消去時間を短縮させたり、消去回数を低減させたりするために、重複排除技術が用いられている(例えば、特許文献1)。重複排除技術は、上位装置に提供する論理アドレスと実際の記憶領域の物理アドレスとが対応付けて管理されている場合に、同一のデータが格納された複数の論理アドレス空間を、当該データが格納された1つの物理アドレス空間に対応付ける技術である。重複排除技術を利用することにより、データの書き込み量を低減することができ、フラッシュメモリを記憶媒体とするストレージ装置において、フラッシュメモリの長寿命化と、性能安定性の向上を図ることができる。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2009−87021号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
ところで、ストレージ装置においては、データ領域に格納するデータのハードウェア障害などによるビット化けや、内部制御エラーなどによる不正なアドレスへの書き込みや読込みを防ぐために、書き込みデータに対して保証コードが付与される。一般的に、この保証コードは、データに対して冗長性を持たせることを目的にデータ内容から算出される部と、ベンダ毎に値を自由に設定できる部を組み合わせた内容となっている。このような保証コードが付与されたデータに対して重複排除を行う場合、保証コード部分がデータ毎に異なるため、データの内容が同じであっても保証コードに差異があるため重複排除を行うことができないという問題があった。
本発明は以上の点を考慮してなされたもので、データ毎に異なる保証コードが付与されたデータを重複排除して、データ容量効率を向上させることが可能なフラッシュメモリモジュール、不揮発性半導体メモリモジュール及びストレージ装置を提案しようとするものである。
【課題を解決するための手段】
【0009】
かかる課題を解決するために本発明においては、複数のフラッシュメモリチップと、プロセッサに接続されるメモリコントローラと、を備え、前記複数のフラッシュメモリチップの各フラッシュメモリチップは、複数のブロックを含み、各ブロックは複数の物理ページを含み、各物理ページはデータの書き込み/読み込み単位であり、前記メモリコントローラは、前記プロセッサから、第1のデータセット及び前記プロセッサによって生成された第1の保証コードセットと、第2のデータセット及び前記プロセッサによって生成された第2の保証コードセットとを受信し、前記第1のデータセットは複数の第1のユーザデータを含み、第1の保証コードセットは複数の第1の保証コードを含み、前記複数の第1の保証コードの各第1の保証コード、前記複数の第1のユーザデータの1つに関連付けられ、前記第2のデータセットは複数の第2のユーザデータを含み、第2の保証コードセットは複数の第2の保証コードを含み、前記複数の第2の保証コードの各第2の保証コードは、前記複数の第2のユーザデータの1つに関連付けられ、前記メモリコントローラは、前記第1のデータセットと前記第2のデータセットとが同じデータセットの場合に、前記同じデータセットを第1の物理ページに格納し、前記第1の保証コードセットと前記第2の保証コードセットを第2の物理ページに格納することを特徴とする、フラッシュメモリモジュールが提供される。
【0010】
かかる構成によればフラッシュメモリチップに書き込まれる複数のデータのうち、ユーザデータが共通する複数のデータについて、ユーザデータと保証コードとを分けて、1つのユーザデータを物理ページに格納し、複数のユーザデータに対応する保証コードを連結して物理ページに格納する。これにより、保証コードが付与されたデータに対しても重複排除を行って、記憶媒体への書き込み量を縮減することによりフラッシュメモリの長寿命化を図ることができる。さらに、追記型の書き込み方法を採用するフラッシュメモリなどの記憶媒体において、ユーザが使用していない未使用領域を増加させて、未使用領域をデータの追記用の領域とすることにより、性能安定性の向上を図ることが可能となる。
【発明の効果】
【0011】
本発明によれば、データ毎に異なる保証コードが付与されたデータを重複排除して、データ容量効率を向上させることができる。
【図面の簡単な説明】
【0012】
図1】本発明の第1の実施の形態に係る計算機システムのハードウェア構成を示すブロック図である。
図2】同実施形態にかかるフラッシュメモリモジュールの構成を示すブロック図である。
図3】同実施形態にかかるフラッシュメモリチップの構成を示すブロック図である。
図4A】同実施形態にかかるデータの内容を説明する概念図である。
図4B】同実施形態にかかるページの内容を説明する概念図である。
図5】同実施形態にかかる重複排除処理の概要を説明する概念図である。
図6A】同実施形態にかかる論理/物理ページアドレスを説明する概念図である。
図6B】同実施形態にかかる論理/物理アドレス変換テーブルの一例を示す図表である。
図6C】同実施形態にかかる逆参照テーブルの一例を示す図表である。
図7】同実施形態にかかる重複排除処理の流れを示すフローチャートである。
図8】同実施形態にかかるリクラメーション処理およびリフレッシュ処理の流れを示すフローチャートである。
図9A】同実施形態にかかるマージ処理の概要を説明する概念図である。
図9B】同実施形態にかかるマージ処理の概要を説明する概念図である。
図10】同実施形態にかかるマージ処理の流れを示すフローチャートである。
図11】同実施形態にかかるリード処理の流れを示すフローチャートである。
図12】本発明の第2の実施の形態に係る重複排除処理の概要を説明する概念図である。
図13A】同実施形態にかかる論理/物理ページアドレスを説明する概念図である。
図13B】同実施形態にかかる論理/物理アドレス変換テーブルの一例を示す図表である。
図13C】同実施形態にかかる逆参照テーブルの一例を示す図表である。
図14】同実施形態にかかる重複排除処理の流れを示すフローチャートである。
図15】同実施形態にかかるリクラメーション処理およびリフレッシュ処理の流れを示すフローチャートである。
図16】同実施形態にかかるリード処理の流れを示すフローチャートである。
図17】本発明の第3の実施の形態に係る重複排除処理の流れを示すタイミングチャートである。
【発明を実施するための形態】
【0013】
以下図面について、本発明の一実施の形態を詳述する。
【0014】
(1)第1の実施の形態
(1−1)計算機システムのハードウェア構成
まず、本実施の形態にかかる計算機システム1のハードウェア構成について説明する。図1に示すように、本実施の形態にかかる計算機システム1は、ストレージ装置11と、第1および第2のホスト12A、12B(以降、第1および第2のホストを単にホスト12と称する場合もある。)と、管理端末13と、SAN(Storage Area Network)14と、を備えている。
【0015】
ストレージ装置11は、ホスト12から送信されたコマンドを解釈して、ストレージ装置11の記憶領域内へのリード/ライトを実行する。ストレージ装置11は、図1に示すように、第1および第2のホストインタフェース112A、112B(第1および第2のホストインタフェースを単にホストインタフェース112と称する場合もある。)、第1および第2のストレージインタフェース113A、113B(以降、第1および第2のストレージインタフェースを単にストレージインタフェース113と称する場合もある。)保守インタフェース(I/F)114、CPU115、メモリ116、コネクタ16A、16B、16C、16D(以降、単にコネクタ16と称する。)およびフラッシュメモリストレージ17などから構成される。
【0016】
ホストインタフェース112は、ホスト12からのデータや制御コマンドなどを受け付けるインタフェースである。また、ストレージインタフェース113は、フラッシュメモリストレージ17にデータや制御コマンドを送信するインタフェースである。また、保守インタフェース(I/F)114は、管理端末13と接続して、管理端末13からの管理や保守に関する制御コマンド等を受け付けるインタフェースである。
【0017】
CPU115は、演算処理装置として機能し、メモリ116に記憶されている各種プログラムや演算パラメータ等にしたがって、ストレージ装置11全体の動作を制御する機能を有する。具体的に、CPU115は、ホスト12からのデータ入出力(データI/O)を処理し、フラッシュメモリストレージ17にデータ入出力に関するI/Oコマンドを発行する。また、ホスト12から受け付けたユーザデータに対して保証コードを生成して、ユーザデータに付与する。メモリ116は、各種プログラムや演算パラメータ等の他、制御情報や管理情報、また、ユーザからのデータを一時的に格納する。
【0018】
フラッシュメモリストレージ17は、フラッシュメモリモジュール21A〜21F(以降、フラッシュメモリモジュール21と称する場合もある。)から構成されている。本実施形態では、フラッシュメモリストレージ17に、6つのフラッシュメモリモジュール21〜21Fが備えられている構成としたが、フラッシュメモリモジュールの数はかかる例に限定されない。フラッシュメモリモジュール21は、ストレージインタフェース113とコネクタ16を介して接続され、コネクタ16を介してホスト12から受け付けられたデータおよび各制御コマンドがフラッシュメモリモジュール21に書き込まれる。フラッシュメモリモジュール21の内部構成については後で詳細に説明する。なお、本実施形態では、フラッシュメモリストレージ17をストレージ装置11と一体とした構成としているが、かかる例に限定されず、フラッシュメモリストレージ17をストレージ装置11とは別体の装置としてもよい。
【0019】
ホスト12は、SANを介してストレージ装置11と接続され、ストレージ装置11にデータのリード/ライト要求を送信する。また、ホスト100は、CPU(Central Processing Unit)およびメモリ等の情報処理資源を備えたコンピュータ装置であって、例えば、パーソナルコンピュータや、ワークステーション、メインフレームなどから構成される。ホスト12とストレージ装置11との通信は、例えば、SCSI(Small Computer System Interface)などのブロックプロトコルが用いられる。また、ホスト20は、キーボード、スイッチやポインティングデバイス、マイクロフォン等の情報入力装置と、モニタディスプレイやスピーカ等の情報出力装置とを備えている。
【0020】
管理端末13は、CPUおよびメモリ等の情報処理資源を備えたコンピュータ装置であって、例えば、パーソナルコンピュータや、ワークステーション、メインフレームなどから構成される。CPUは、演算処理装置として機能し、メモリに記憶されているプログラムや演算パラメータ等にしたがって、管理端末13の動作を制御する。また、管理端末13は、キーボード、スイッチやポインティングデバイス、マイクロフォン等の情報入力装置と、モニタディスプレイやスピーカ等の情報出力装置とを備えており、オペレータ等の入力に応じてストレージ装置11等を管理する装置である。
【0021】
なお、ホスト12およびフラッシュメモリモジュール21の数、およびそれらを接続するコネクタ16は、図1に示す数に限定されず、1またはそれ以上の数であればよい。同様に、各コネクタおよびインタフェースの規格は特定のものに限定されない。例えば、SAN14に適用される代表的な規格として、FC(Fibre Channel)、SCSI、iSCSI(internet Small Computer System Interface)、SAS(Serial Attached SCSI)などを例示できる。
【0022】
ここで、フラッシュメモリ(フラッシュメモリモジュール21)について説明する。フラッシュメモリは、最小消去単位が、最小書き込み単位に比べて大きいという特徴を有する。具体的に、フラッシュメモリにおいては、1つのブロック内に複数のページが設けられており、ブロック単位でデータが消去され、ページ単位でデータの読み書きが実行される。
【0023】
上記したように、フラッシュメモリは、その特性上、データを直接書き換えることができない。すなわち、フラッシュメモリでは、記憶しているデータを書き換える場合、記憶している有効なデータを他のブロックに退避させて、記憶しているデータをブロック単位で消去する。そして、データを消去したブロックにデータを書き込むことによりデータの書き換えを行っている。
【0024】
このように、フラッシュメモリにおけるデータの書き換え処理では、ブロック単位のデータの消去が伴う。しかしながら、フラッシュメモリの1ブロック分のデータの消去にかかる時間は、1ページ分のデータを書き込むのに要する時間と比べて約1桁分長い時間がかかる。したがって、1ページ分のデータを書き換えるために毎回1ブロック分のデータ消去を実行すると、フラッシュメモリのデータ書き換え性能が劣化してしまう。すなわち、記憶媒体としてフラッシュメモリを用いる場合には、フラッシュメモリからデータを消去する時間を隠ぺいできるアルゴリズムでデータを書き込むことが必要となる。
【0025】
通常、フラッシュメモリに対してデータの書き換えを行う場合には、データを書き換えるごとにデータを消去することは行わず、データが記録されていない未使用領域にデータを追記する方式によってデータの書き換えを行う。しかし、データの書き換え処理が度重なって実行されると、フラッシュメモリ内の未使用領域が枯渇してしまうため、フラッシュメモリに書き込まれている不要なデータを消去して、記憶領域を再利用可能な状態にする必要が生じる。
【0026】
そこで、旧データを含むブロック内の有効なデータのみを未使用領域にコピーし、コピー元のブロックを消去して再利用可能な状態にするブロック再生処理(以下、当該処理をリクラメーション処理と称する。)を実行することが、フラッシュメモリのデータ高速書き換えには必須の処理となる。このリクラメーション処理は、無効データが多くなったブロックを対象に実行される。
【0027】
一方、フラッシュメモリは、データを消去する回数に制限があるという特徴を有する。例えば、1ブロック当たり10万回までの消去回数が保証されている。この場合、データの書き換えが1のブロックに集中して、当該ブロックの消去回数が増大すると、データの消去ができなくなり、ブロックが使用不能となってしまうという問題があった。そのため、フラッシュメモリを記憶媒体として用いる場合、特定のブロックに対するデータ消去処理が集中しないように、消去回数の平準化処理を行う必要がある。
【0028】
また、フラッシュメモリは、一度書き込みしたページについては、時間とともに読み出しエラー率が増加するという特徴を有する。このように、データを保持しておくだけでも発生するエラーをリテンションエラーといい、これを回避するために、書き込み後一定時間を経過したページを、別ページに書き込む処理(リフレッシュ処理)が実行される。リフレッシュ処理を実行する場合においても、上記した消去回数を平準化したり、性能に対する影響を考慮したりする必要がある。
【0029】
上記したように、フラッシュメモリを記憶媒体として用いる場合には、データ消去時間を隠ぺいしたり、データ消去回数を平準化したりするために、上位装置に提供する論理アドレスと実際の記憶領域の物理アドレスとを対応づけて、データの書き込みの際に、論理アドレスから物理アドレスへの変更処理が行われる。すなわち、上位装置に提供する論理アドレスと記憶領域上の物理アドレスとの対応を逐次変更することにより、上位装置は、論理アドレス空間にデータを書き込めばよく、データ書き込み時における未使用領域への追記に伴う物理アドレスの変更などを意識する必要がなくなる。
【0030】
フラッシュメモリを有するストレージ装置において、上記のように論理アドレスと物理アドレスとを対応付けて管理している場合に、重複排除技術を適用することが考えられている。重複排除技術は、同一のデータが格納された複数の論理アドレス空間を、当該データが格納された1つの物理アドレス空間に対応付ける技術である。当該重複排除技術により、データ量を短縮し、ストレージのデータ容量を節約することが可能となる。
【0031】
特に、重複排除技術の適用が有効と考えられる対象のデータとして、フォーマットデータが挙げられる。ストレージ装置11は、記憶デバイスを使用する際に、記憶デバイスの異常個所を検知したり保証コードを事前に書き込みしたりすることを目的として、記憶デバイスの全領域に特定パタンのデータを書き込むフォーマット処理を実行する。このフォーマット処理は、フラッシュメモリをはじめとする書き換えが制限されている記憶デバイスにおいては、不必要に書き換え回数を増加させるという問題があった。
【0032】
また、フラッシュメモリは、データの書き換えに対して、未使用領域への追記方式を採用しているため、未使用領域が少なくなると頻繁にデータの消去処理を実行しなければならない。このため、フォーマット処理により実体を伴わないデータが書き込まれることにより、未使用領域が減少して性能安定性が損なわれるという問題があった。そこで、上記した重複排除技術を適用することにより、データの書き込み量を低減させて、フラッシュメモリを記憶媒体とするストレージ装置11におけるフラッシュメモリの長寿命化と性能安定性の向上を図ることができる。
【0033】
さらに、ストレージ装置11では、データ領域に格納するデータのハードウェア障害などによるビット化けや、内部制御エラーなどによる不正なアドレスへの書き込みや読込みを防ぐために、書き込みデータに対して保証コードが付与される。一般的に、この保証コードは、データに対して冗長性を持たせることを目的にデータ内容から算出される部と、ベンダ毎に値を自由に設定できる部を組み合わせた内容となっている。このような保証コードが付与されたデータに対して重複排除を行う場合、保証コード部分がデータ毎に異なるため、データの内容が同じであっても保証コードに差異があるため重複排除を行うことができないという問題があった。
【0034】
そこで、本実施形態では、保証コードを含むデータに対して重複排除処理を行う場合に、対象となるデータの保証コード部分とデータ部分を分離して、データ部分のみを重複排除の処理対象とし、保証コード部分はデータとは別に管理してそれぞれのデータ毎にフラッシュメモリに格納して管理している。また、フラッシュメモリにおいては、上記したように、最小の書き込み単位はページ単位であるため、単純に保証コード部分を分離してフラッシュメモリに格納するだけでなく、書き込み単位を意識して効率的に保証コードを格納したり、論理アドレスから物理アドレスへの変更を実行したりしている。
【0035】
さらに、上記したフォーマットデータに代表される同一値やインクリメント値など、単純なパタンのデータについては、データ部をさらに圧縮することにより、データの書き込み量を削減することができる。そして、本実施形態では、上記したフラッシュメモリにおける書き込み制限に適合するように、圧縮したデータ部とそのデータに関連する保証コードを効率よく管理している。
【0036】
以上のように、本実施形態によれば、保証コードが付与されたデータに対しても重複排除を行って、記憶媒体への書き込み量を縮減することによりフラッシュメモリの長寿命化を図ることができる。さらに、追記型の書き込み方法を採用するフラッシュメモリなどの記憶媒体において、ユーザが使用していない未使用領域を増加させて、未使用領域をデータの追記用の領域とすることにより、性能安定性の向上を図ることが可能となる。
【0037】
(1−2)ストレージ装置の内部構成について
次に、ストレージ装置11の内部構成について説明する。まず、フラッシュメモリモジュール21の内部構成の詳細について説明する。フラッシュメモリモジュール21は、フラッシュ制御装置210とフラッシュメモリチップ31A〜31H(以降、フラッシュメモリ31と称する場合もある。)とから構成される。なお、本実施形態では、フラッシュメモリチップ31は、図2に示すように6つのフラッシュメモリから構成されるが、かかる例に限定されず1以上の個数であればよい。
【0038】
図2に示すように、フラッシュ制御装置210は、ストレージインタフェース221と、CPU212と、コントローラ213と、メモリ214と、バッファ215と、フラッシュメモリインタフェース216などを備える。
【0039】
ストレージインタフェース221は、ストレージ装置11本体のCPU115からのデータおよび制御コマンドを受け付けるインタフェースである。CPU212は、フラッシュ制御装置210全体の動作を制御する機能を有し、メモリ214に格納されている各種プログラムに基づいて動作する。CPU212は、例えば、ストレージインタフェース211を介して受領したホスト12からのデータI/Oに対して、メモリ214に格納されている各種テーブルを参照して、フラッシュメモリチップ31にデータをリード/ライトする。また、フラッシュメモリチップ31の使用状況に応じて、使用済み領域を再生させるリクラメーションの実行やデータの書き換えによる記憶媒体の摩耗を記憶媒体の各素子に均等に分散させるウェアレベリングなどを実施する。
【0040】
コントローラ213は、CPU212の制御のもと、フラッシュメモリチップ31A〜31Hに対してデータのリード/ライトを実行する。また、当該データに対してエラー訂正符号の生成や、重複排除のためのデータの比較や、ハッシュ値の生成などを実行する。なお、本実施形態では、エラー訂正符号の生成等の処理をコントローラ213が実行する構成としたが、かかる例に限定されず、コントローラ213の処理をCPU212が実行する構成としてもよい。
【0041】
メモリ214は、CPU212およびコントローラ213により実行される各種プログラム、各種テーブルおよび制御情報を記憶する。なお、フラッシュ制御装置210の内部構成は、図2に示す構成に限定されず、各機能を1または複数のデバイスによって実行するようにしてもよい。
【0042】
次に、フラッシュメモリチップ31の内部構成について説明する。図3に示すように、フラッシュメモリチップ31は、フラッシュ制御装置210から発行されたデータI/Oコマンドの対象データを一時的に格納するページバッファ312A、312B(以降、ページバッファ312とも称する。)および、実際の記憶領域である物理ブロック313A〜313F(以降、物理ブロック313とも称する。)から構成される。
【0043】
物理ブロック313は、さらに、ページ32A〜32C(以降、ページ32とも称する。)から構成される。上記したように、物理ブロック313は、フラッシュメモリにおける消去単位であり、ページ32は、フラッシュメモリにおける書き込み/読み込み単位である。また、ページ32は、2Kバイト、3Kバイト、8Kバイトなどのサイズに分割された領域であり、ブロック313は、128個のページ、256個のページのサイズに分割された領域であり、1Mバイト、2Mバイトなどの大きさを有する。
【0044】
次に、ユーザデータに対する保証コードについて説明する。図4Aに示すように、データ(ユーザデータ)41に付与されるコード(保証コード)42は、データ41に対して一定のアドレスの区切りごとに付与される。一般的に、1セクタ、512バイトのユーザデータごとに、8バイトの保証コードが生成され、付与される。以降、このデータの区切りをセクタと称して説明する場合もある。
【0045】
コード42は、データ41から生成されるビットエラー訂正符号部421と、ベンダが自由に設定可能なUDT部422とから構成される。UDT部422は、例えば、対象データのアドレスの整合性を確認することを目的として、当該データのアドレスが格納される。この場合、UDT部422には、ユーザデータ41の値に関わらず、固有の値が格納される。
【0046】
なお、フラッシュメモリのページサイズは、通常、512バイトより大きいため、1つのページの中に複数のセクタが格納されることとなる。このとき、ページ32は、図4Bに示す構成となる。すなわち、フラッシュメモリのページ32内には、nセクタを格納することができ、各セクタのデータ部41A〜41Cをまとめてページ32のデータ部411とする。また、各セクタのコード42A〜42Cをまとめて、ページのコード部421としている。なお、ページ内のデータおよび保証コードの配置は、図4Bに示す構成に限定されず、各セクタのデータおよび保証コードの位置が確定できる構成であればよい。また、説明上、セクタのうち、コード42をデータ41以外としているが、かかる例に限定されず、ユーザデータから生成されるビットエラー訂正符号421をデータの一部として、データ部41に格納するようにしてもよい。
【0047】
次に、本実施形態にかかる重複排除処理の概要について説明する。図5に示すように、データ部411Aとコード部421Aを含むページと、データ部411Bとコード部421Bを含むページと、データ部411Cとコード部421Cを含むページの3つのページを含むページ群43は、重複排除処理によって、データ部441を含むページ44とコード部451を含むページ45の2つのページに格納することができる。すなわち、データ部411A、411B、411Cに格納されているデータは同一の内容のデータであるため、データ部をページ44のデータ部441に格納する。そして、コード部421A、421B、421Cに格納されている保証コードは異なる内容の保証コードであるため、ページ45のコード部451にコード部421A、421B、421Cのすべての保証コードを格納する。
【0048】
そして、ページ群43の各論理アドレスと、ページ44およびページ45の物理アドレスとが対応付けられる。すなわち、データ部については、データ部411A、411B、411Cの論理アドレスの先頭と、ページ44の物理アドレスとが対応付けられ、さらに、コード部については、ページ45の各物理アドレスと、当該物理アドレスの先頭からのオフセット情報とが対応付けられる。このように、データ部とコード部を含むページが3ページ以上あり、データ部が同一の内容である場合には、重複排除により3ページを2ページにして、ページ数削減の効果を得ることができる。なお、重複排除によりページ内に空きスペース422、452を得ることができるが、当該空きスペースは未使用のままにしてもよいし、後述する管理情報の格納用に使用してもよい。
【0049】
次に、重複排除の具体例について説明する。図6Aに、論理ページアドレスと物理ページアドレスとの対応関係を示す。図6Aに示すように、Addr51は、論理ページアドレスを示し、Data52は、論理ページアドレス空間に格納されているデータを示す。また、Code53は、論理ページアドレス空間に格納されている保証コードを示す。そして、Addr54は、論理ページに対応付けられている物理ページアドレスを示し、Data55は、物理ページアドレス空間に格納されているデータの内容を示す。
【0050】
論理ページアドレス0〜3で示される論理ページ511〜514に格納されているデータ52には、同一の内容のデータ「AAAA」が格納されている。この場合、論理ページ511〜514の各論理ページアドレス0〜3は、「AAAA」のデータを格納している物理ページ541の物理ページアドレス0に対応付けられる。しかし物理ページ541は、保証コードを含まないユーザデータのみであるため、各論理ページ511〜514には、保証コードを格納している物理ページ542の物理ページアドレス1が対応付けられる。さらに、各論理ページ511〜514に対応する保証コードが物理ページアドレス1の先頭コードからどの位置にあるかがオフセット情報として対応付けられる。
【0051】
次に、上記した論理ページと物理ページとの対応付けを実現するための管理テーブルについて説明する。当該管理テーブルは、フラッシュメモリモジュール21のメモリ214に格納される。また、フラッシュメモリモジュール21のコントローラ213が重複排除処理を実行して、各種管理テーブルを作成する。そして、フラッシュメモリモジュール21のCPU212の制御のもと、コントローラ21が管理テーブルを参照して、フラッシュメモリチップ31にデータのリード/ライトを実行する。
【0052】
論理/物理アドレス変換テーブル56は、論理アドレスと物理アドレスとの対応付けを管理し、具体的に論理ページアドレスに格納されたデータおよび保証コードがいずれの物理ページに存在するかを管理するテーブルである。論理/物理アドレス変換テーブル56は、図6Bに示すように、論理ページアドレス欄561、物理ページデータアドレス欄562、物理ページコードアドレス欄563および物理ページコードオフセットアドレス欄564から構成される。
【0053】
論理ページアドレス欄561には、論理ページの先頭アドレスが格納される。物理ページデータアドレス欄562には、論理ページアドレス欄561に格納されているアドレスに対応するデータ部が格納されている物理ページの先頭アドレスが格納される。物理ページコードアドレス欄563には、論理ページアドレス欄561に格納されているアドレスに対応するコード部が格納されている物理ページの先頭アドレスが格納される。
【0054】
物理ページコードオフセットアドレス564には、物理ページコードアドレス欄563に格納されているアドレスによって示されるページ内コードのうち、各論理ページの保証コードに対応する保証コードの格納位置を示すアドレスが格納される。このように、論理/物理アドレス変換テーブル56により、論理ページに含まれるデータと保証コードに対応する、物理ページのデータおよび保証コードが格納されている位置を得ることができる。
【0055】
なお、図6Bでは、物理ページコードオフセットアドレス欄564に保証コードのオフセットアドレスを格納しているが、物理ページコードオフセットアドレス欄564を設けずに保証コードの物理位置を認識するようにしてもよい。すなわち、重複排除の対象となるページ群のアドレスの並びが連続であるという制約を設けることにより、物理ページコードオフセットアドレスがなくとも保証コードの物理位置を認識することができる。また、重複排除の対象となっていないページについては、当該ページに対してフラグを設けたり、物理ページデータアドレスと物理ページコードアドレスとを同一の値にしたりすることにより、重複排除の対象となっているか否かを判別するようにしてもよい。
【0056】
次に、逆参照テーブル57について説明する。逆参照テーブル57は、物理ページがいずれの論理ページに参照されているかを管理するテーブルであって、図6Cに示すように、物理ページアドレス欄571、参照カウント欄572および論理ページアドレス欄573から構成される。
【0057】
物理ページアドレス欄571には、データおよび保証コードが格納されている物理ページの先頭アドレスが格納される。参照カウント欄572には、物理ページに格納されているデータを参照している論理ページの数が格納される。したがって、当該物理ページを参照していた論理ページが更新されて、参照されなくなった場合には、参照カウントをデクリメントする。論理ページアドレス欄573には、参照元となる論理ページアドレスが格納される。1つの物理ページが複数の論理ページに参照されている場合には、複数の論理ページアドレス欄573に、参照元となる複数の論理ページアドレスが格納される。
【0058】
当該逆参照テーブル57により、例えばリクラメーション処理が実行された場合に、物理ページが参照されているか否かを判定することができ、参照元となる論理ページアドレス573から、再配置対象となる論理ページアドレスを取得することができる。
【0059】
上記したように、上記した管理テーブルはフラッシュ制御装置210のメモリ214に格納することにより、データの書き込み/読み取り等の処理を高速化することができるが、かかる例に限定されず、管理テーブルサイズがメモリ241の容量に対して大きい場合には、フラッシュメモリ31に格納してもよい。この場合、例えば、物理ページ内の空きスペース442および452などを利用してもよい。
【0060】
また、上記したように、管理テーブルの作成および管理等は、フラッシュ制御装置210により実行されるが、かかる例に限定されず、フラッシュメモリのページ構造を認識し、書き込みデータの重複排除処理および管理情報を保持することができる装置が行ってもよい。例えば、ストレージ装置のCPU115が管理テーブルの作成および管理等をおこなってもよい。ただし、フラッシュ制御装置21においては、論理アドレスと物理アドレスとの対応付けが必須となるため、管理テーブルを新設する必要がないが、ストレージ装置のCPU115により論理アドレスと物理アドレスの対応付けを管理する場合には、上記の管理テーブルを新設することとなる。
【0061】
(1−3)ストレージ装置の動作の詳細
(1−3−1)重複排除処理
次に、ストレージ装置11における重複排除処理について説明する。上記したように、フラッシュメモリモジュール21のコントローラ213が重複排除処理を実行する。図7に示すように、まず、コントローラ213は、重複排除の対象となる論理ページリストを取得する(S11)。論理ページリストは、ページ内のユーザデータが格納されているデータ部の内容が同一で、保証コードが格納されているコード部の内容が異なる2つ以上のページから構成される。
【0062】
当該論理ページの探索方法としては、例えば、大サイズのデータをライトする場合や、リクラメーション処理やリフレッシュ処理などのデータ再配置時に、大サイズのデータの中から重複排除の対象となる論理ページの組み合わせを検索する。また、各ページのデータ部のハッシュ値を算出して管理し、ハッシュ値に基づいて、動的にデータ部の一致するページの組み合わせを検索するようにしてもよい。
【0063】
続いて、コントローラ231は、ステップS11において取得した論理ページのデータ部を格納する物理ページを取得する(S12)。例えば、コントローラ231は、フラッシュメモリの長寿命化の観点から、摩耗度の少ない物理ページを優先して取得してもよいが、物理ページの取得ポリシーはかかる例に限定されず、管理者により設定されたポリシーをもとに物理ページを取得してもよい。
【0064】
そして、コントローラ231は、ステップS12において取得した物理ページに、ステップS11において取得した論理ページのデータ部に格納されたユーザデータを書き込む(S13)。ただし、コントローラ231は、必ずしもステップS13においてデータの書き込みをしなくてもよい。例えば、データの書き込みをスケジューラなどに登録してもよい。
【0065】
次に、コントローラ231は、ステップS11において取得した論理ページのコード部を格納する物理ページを1ページ取得する(S14)。ここで、コード部を格納する物理ページのブロックは、ステップS12において取得したデータ部の書き込み先となる物理ページのブロックと異なるブロックとする。これにより、データをリード/ライトする際に、データ部とコード部とを別々に読み出してデータ部に対する処理とコード部に対する処理とを並行することが可能となる。
【0066】
次に、コントローラ231は、ステップS14において取得した物理ページが必要数あるかを判定する(S15)。具体的に、コントローラ231は、重複排除対象となる論理ページの数分の保証コードの容量が取得した物理ページの容量以内であるかを判定する。保証コードを格納するための必要な容量は、保証コードサイズ×重複排除対象となる論理ページ数となる。また、1つの物理ページに格納可能な最大の保証コード数(最大対象ページ数)は、物理ページサイズを保証コードサイズで除算することにより算出することができる。したがって、コントローラ231は、対象論理ページ数が取得物理ページ数に最大対象ページ数を乗算した数より小さいか否かを判定することにより、物理ページが必要数あるかを判定する。
【0067】
ステップS15において、物理ページが必要数あると判定された場合には、コントローラ231は、ステップS16の処理を実行する。一方、ステップS15において、物理ページが必要数ないと判定された場合には、コントローラ231は、ステップS14〜S15の処理を繰り返す。
【0068】
続いて、コントローラ231は、重複排除対象となる各論理ページのコード部を抽出して連結する(S16)。具体的に、コントローラ231は、各論理ページから抽出したコード部を、物理ページサイズに収まるように連結する。
【0069】
そして、コントローラ231は、ステップS16において連結した保証コードを物理ページに書き込む(S17)。コントローラ231は、保証コードを書き込むための複数の物理ページを取得している場合には、各物理ページに連結された保証コードを書き込む。
【0070】
続いて、コントローラ231は、管理テーブルである論理/物理アドレス変換テーブル56と逆参照テーブル57を更新する(S18)。具体的に、コントローラ231は、論理/物理アドレス変換テーブル56については、重複排除の対象となった論理ページに該当するエントリについて、物理ページデータアドレス欄562の値をデータ格納先の物理ページアドレスの値に更新し、物理ページコードアドレス欄563の値を保証コード格納先の物理ページアドレスの値に更新する。また、コントローラ231は、保証コードの格納先となる物理ページ内の各保証コードの位置を物理ページコードオフセットアドレス欄564に格納する。
【0071】
また、逆参照テーブル57については、コントローラ231は、重複排除対象となった論理ページに対応付けられていた物理ページに該当するエントリについて更新を行う。すなわち、重複排除対象となった論理ページのアドレスの更新により、参照されなくなった物理ページに対して、参照カウンタ欄572の値をデクリメントする。そして、論理ページアドレス欄573から参照されなくなった論理ページのアドレスを削除する。
【0072】
なお、論理/物理アドレス変換テーブル56の更新は、重複排除処理を行わない通常の書き込み(ライト)処理においても行う必要がある。すなわち、論理ページのアドレスと、新しい書き込み先となる物理ページのアドレスとを対応付けたり、元の格納先の物理ページのエントリから参照していた論理ページのアドレスを削除したりする。
【0073】
(1−3−2)リクラメーション処理、リフレッシュ処理
次に、リクラメーション処理およびリフレッシュ処理の詳細について説明する。図8に示すように、まず、コントローラ231は、リクラメーションまたはリフレッシュの対象となる物理ブロックリストを取得する(S21)。例えば、コントローラ231は、無効ページの多い物理ブロックをリクラメーション処理の対象とし、長時間アクセスされていない物理ブロックをリフレッシュ処理の対象とする。
【0074】
続いて、コントローラ231は、ステップS21において取得した物理ブロックリストに含まれるすべての物理ブロックに対して処理を実行したか否かを判定する(S220)。ステップS220において、すべての物理ブロックに対して処理を実行したと判定された場合には、コントローラ231は、ステップS221以降の処理を実行する。一方、ステップS220において、すべての物理ブロックに対して処理を実行していないと判定された場合には、コントローラ231は、ステップS22以降の処理を実行する。
【0075】
続いて、コントローラ231は、物理ブロック内のすべての物理ページを対象として、逆参照テーブル57の参照カウント欄572の値が0より大きい物理ページが存在するか否かを判定する(S22)。ステップS22において、参照カウント欄572の値が0より大きい物理ページが存在すると判定された場合には、ステップS23以降の処理を実行し、参照カウント欄572の値が0より大きい物理ページが存在しないと判定された場合には、ステップS221以降の処理を実行する。
【0076】
続いて、コントローラ231は、対象となる物理ページのうち、参照カウント欄572の値が0以上の物理ページXを1つ取得する(S23)。以降、ステップS23において取得した物理ページを物理ページXとして以下説明する。そして、コントローラ231は、逆参照テーブル57の物理ページXに対応するエントリを取得する(S24)。さらに、コントローラ231は、参照元論理ページアドレス欄573から、物理ページXを参照している論理ページのアドレスを取得する(S25)。以降、コントローラ231は、参照元論理ページアドレス欄573に登録されている参照元論理ページを調査する。
【0077】
そして、コントローラ231は、ステップS25において取得した論理ページが、対象としている物理ページXを未だ参照しているか否かを調査する(S26)。なお、重複排除処理時や、通常のライト処理時に実行される管理テーブルの更新処理(ステップS18)において、逆参照テーブル57の参照元論理ページアドレス欄573から物理ページを参照しなくなった論理ページのアドレスを削除している場合には、ステップS26の処理は不要である。一方、逆参照テーブル57がフラッシュメモリに格納されており、容易に更新出来ない場合に、ステップS26において物理ページXの参照の有無を確認する必要がある。
【0078】
次に、コントローラ231は、物理ページXを参照している論理ページを、コピー対象のリストに追加する(S27)。コントローラ231は、物理ページXを参照している論理ページを最終的に0にして、物理ブロックの消去を可能な状態とする。コントローラ231は、ステップS27においては、コピー対象の論理ページをリストに追加するのみで、論理ページの実際のコピー処理は任意の契機に基づいて後で行ってもよい。
【0079】
続いて、コントローラ231は、物理ページXを参照している可能性のあるすべての論理ページについて、参照の有無を確認する(S28)。ステップS28において、物理ページXの参照の有無を確認していない論理ページがある場合には、コントローラ231は、ステップS26以降の処理を繰り返す。一方、ステップS28において、すべての論理ページについて物理ページXの参照の有無を確認したと判定された場合には、ステップS220の処理に戻る。
【0080】
そして、コントローラ231は、ステップS27において作成されたコピー対象リストに含まれる論理ページについて、重複排除処理を試行する(S221)。具体的に、コントローラ231は、コピー対象リストに含まれる論理ページのうち、データ部が同一の論理ページについて重複排除処理を実行する。
【0081】
続いて、コントローラ231は、ステップS221において重複排除処理を実行した後、コピー対象リストに残っている論理ページをコピー先となる物理ページにコピーする(S222)。そして、コントローラ231は、ステップS21においてリクラメーション処理またはリフレッシュ処理の対象となった物理ブロックを消去する(S223)。
【0082】
(1−3−3)マージ処理
次に、マージ処理について説明する。ここで、マージ処理とは、既に重複排除処理が行われている論理ページについて、さらに、同一のデータを有する論理ページまたは物理ページについてそれらを統合する処理を意味する。上記した重複排除処理は、上記したように大サイズのデータをライトする場合や、リクラメーション処理やリフレッシュ処理時などに実行される。したがって、同一のフラッシュメモリモジュール21内で重複排除処理がまだ実行されていない論理ページが存在する場合がある。また、ストレージ装置11に複数のフラッシュメモリモジュール21が存在する場合には、各フラッシュメモリモジュール21内で重複排除処理が実行されるため、複数のフラッシュメモリモジュールにおいて同一のデータを含む論理ページが存在する場合がある。この場合、マージ処理を実行することにより、同一のデータを統合して、さらなるデータ容量の縮減を実現することが可能となる。
【0083】
例えば、図9Aに示すように、重複排除された論理ページが格納されている物理ページの組が2つあるとする。データ部を格納している2つの物理ページ61Aおよび61Bには、同一のデータが格納されているとする。また、保証コードを格納している2つの物理ページ62Aおよび62Bには、それぞれ、論理ページリストの保証コードが格納されている。これらの物理ページの2つの組について、データ部をさらに共通化して、4つの物理ページ61A、61B、62A、62Bを、3つの物理ページ61C、62C、62Dにまとめることができる。
【0084】
図9Aに示すように、4つの物理ページを3つの物理ページにまとめる場合、保証コードが格納されている物理ページ62Aおよび62Bはそのまま利用し物理ページ62C、62Dとし、データが格納されている物理ページ61Aおよび61Bのうちいずれか一方を利用して61Cとして、他方を無効ページとする。ただし、物理ページの空き領域442に論理/物理アドレス変換テーブル56などの管理情報を格納している場合には、データ格納用として物理ページを新たに割り当てる必要がある。データ格納用として新たに物理ページを割り当てた場合には、データを格納している物理ページ61Aおよび61Bはいずれも無効ページとする。
【0085】
また、重複排除された論理ページが格納されている物理ページの組のうち、保証コード部が格納されている物理ページに空き領域がある場合には、保証コードもマージすることができる。例えば、図9Bに示すように、物理ページ64Aおよび物理ページ64Bに格納されている保証コードがそれぞれ抽出されて、物理ページ64Cにまとめてコピーされる。そして、物理ページ64Aおよび物理ページ64Bは無効ページとなり廃棄される。また、データが格納されている物理ページ63Aおよび63Bについては、同一のデータが格納されているため、図9Aと同様に、物理ページ63Aおよび63Bのうちいずれか一方を物理ページ63Cとし、他方を無効ページとする。このように、データ部だけでなく、コード部も統合することにより、4つの物理ページを2つの物理ページにまとめることができる。
【0086】
次に、マージ処理の処理手順について説明する。図10に示すように、コントローラ231は、まず、マージの対象となる物理ページリストを取得する(S31)。具体的に、コントローラ231は、物理ページリストのうち、有効なページであり、重複排除処理されたページであり、かつ、データ部の等しい物理ページの集合である物理ページリストを取得する。当該物理ページリストは、例えば、大サイズのデータをライトしたり、リクラメーション処理やリフレッシュ処理などを契機とした大サイズのデータを処理したりする場合に、物理ページのデータを検索して作成される。また、各物理ページのデータ部のハッシュ値を算出して管理し、ハッシュ値に基づいて、動的にデータ部の一致するページの組み合わせを検索して物理ページリストを作成してもよい。
【0087】
そして、コントローラ231は、ステップS31において取得したすべての物理ページリストに対して処理を実行したか否かを判定する(S320)。ステップS320において、すべての物理ページに対して処理を実行したと判定された場合には、コントローラ231は、ステップS321以降の処理を実行する。一方、ステップS320において、すべての物理ブロックに対して処理を実行していないと判定された場合には、コントローラ231は、ステップS32以降の処理を実行する。
【0088】
続いて、コントローラ231は、ステップS31において取得した物理ページのうち、逆参照テーブル57の参照カウント欄572の値が0より大きい物理ページが存在するか否かを判定する(S32)。ステップS32において、参照カウント欄572の値が0より大きい物理ページが存在すると判定された場合には、ステップS33以降の処理を実行し、参照カウント欄572の値が0より大きい物理ページが存在しないと判定された場合には、ステップS321以降の処理を実行する。
【0089】
続いて、コントローラ231は、対象となる物理ページのうち、参照カウント欄572の値が0以上の物理ページXを1つ取得する(S33)。以降、ステップS33において取得した物理ページを物理ページXとして以下説明する。そして、コントローラ231は、逆参照テーブル57の物理ページXに対応するエントリを取得する(S34)。さらに、コントローラ231は、参照元論理ページアドレス欄573から、物理ページXを参照している論理ページのアドレスを取得する(S35)。以降、コントローラ231は、参照元論理ページアドレス欄573に登録されている参照元論理ページを調査する。
【0090】
そして、コントローラ231は、ステップS35において取得した論理ページが、対象としている物理ページXを未だ参照しているか否かを調査する(S36)。なお、重複排除処理時や、通常のライト処理時に実行される管理テーブルの更新処理(ステップS18)において、逆参照テーブル57の参照元論理ページアドレス欄573から物理ページを参照しなくなった論理ページのアドレスを削除している場合には、ステップS36の処理は不要である。一方、逆参照テーブル57がフラッシュメモリに格納されており、容易に更新出来ない場合に、ステップS36において物理ページXの参照の有無を確認する必要がある。
【0091】
次に、コントローラ231は、物理ページXを参照している論理ページを、マージ対象のリストに追加する(S37)。そして、コントローラ231は、物理ページXを参照している可能性のあるすべての論理ページについて、参照の有無を確認する(S38)。ステップS38において、物理ページXの参照の有無を確認していない論理ページがある場合には、コントローラ231は、ステップS36以降の処理を繰り返す。一方、ステップS38において、すべての論理ページについて物理ページXの参照の有無を確認したと判定された場合には、ステップS320の処理に戻る。
【0092】
そして、コントローラ231は、ステップS37において作成されたマージ対象リストに含まれる論理ページに格納されている保証コードを格納するための物理ページを取得する(S321)。具体的に、コントローラ231は、対象となる論理ページ数に応じた個数の物理ページを取得する。
【0093】
そして、コントローラ231は、マージ対象となる論理ページの保証コードをマージして、ステップS321において取得した物理ページに当該保証コードを書き込む(S322)
【0094】
そして、コントローラ231は、管理テーブルである論理/物理アドレス変換テーブル56と逆参照テーブル57を更新する(S323)。具体的に、コントローラ231は、論理/物理アドレス変換テーブル56については、マージ対象となった論理ページに該当するエントリについて、物理ページデータアドレス欄562に格納されている値を、データ格納先の物理ページアドレスの値に更新し、物理ページコードアドレス欄563の値を保証コード格納先の物理ページアドレスの値に更新する。また、コントローラ231は、保証コードの格納先となる物理ページ内の各保証コードの位置を物理ページコードオフセットアドレス欄564に格納する。
【0095】
また、逆参照テーブル57については、コントローラ231は、重複対象となった論理ページ対応付けられていた物理ページに該当するエントリについて更新を行う。すなわち、論理ページの対応先となるアドレスの更新により、参照されなくなった物理ページに対して、参照カウンタ欄572の値をデクリメントして、論理ページアドレスリスト欄573から参照されなくなった論理ページのアドレスを削除する。
【0096】
なお、論理/物理アドレス変換テーブル56の更新は、重複排除処理を行わない通常の書き込み(ライト)処理においても行う必要がある。すなわち、論理ページのアドレスと、新しい書き込み先となる物理ページのアドレスとを対応付けたり、元の格納先の物理ページのエントリから参照していた論理ページのアドレスを削除したりする。
【0097】
(1−3−4)リード処理
次に、リード処理の処理手順について説明する。図11に示すように、コントローラ231は、リード対象となる論理ページアドレスを取得する(S41)。具体的に、コントローラ231は、ホスト12からのリードコマンドや、リクラメーション処理やリフレッシュ処理などの内部制御のコピー時にリード対象となる論理ページアドレスを取得する。
【0098】
次に、コントローラ231は、論理/物理アドレス変換テーブル56から、対象となる論理/物理アドレス情報を取得する(S42)。続いて、コントローラ231は、ステップS41において取得した論理ページが重複排除処理されたページかを判定する(S43)。具体的に、コントローラ231は、論理/物理アドレス変換テーブル56の物理ページデータアドレス欄562に格納されているアドレスと、物理ページコードアドレス欄563に格納されているアドレスとが同一のアドレスである場合に、重複排除されていない論理ページであると判定してもよい。
【0099】
ステップS43において、論理ページが重複排除されたページであると判定された場合には、コントローラ231は、ステップS44以降の処理を実行する。一方、ステップS43において、論理ページが重複排除されていないページであると判定された場合には、コントローラ231は、ステップS47の処理を実行する。
【0100】
そして、コントローラ231は、論理ページが重複排除されたページであると判定された場合には、論理ページのデータ部を格納している物理ページデータアドレスを取得する(S44)。続いて、コントローラ231は、論理ページの保証コードを格納している物理ページコードアドレスを取得する(S45)。さらに、コントローラ231は、論理ページの保証コードの物理位置を示す物理ページコードオフセットアドレスを取得する(S46)。
【0101】
また、ステップS43において、論理ページが重複排除されていない通常のページであると判定された場合には、コントローラ231は、論理ページに対応する物理ページのアドレスを取得する(S47)。具体的に、コントローラ231は、論理/物理アドレス変換テーブル56の物理ページデータアドレス欄562に格納されている物理ページデータアドレスを取得する。
【0102】
そして、コントローラ231は、リード対象となる論理ページに対応付けられた物理ページアドレスをもとに、物理ページに格納されているデータをリードする(S48)。
【0103】
(1−4)本実施の形態の効果
以上のように、本実施の形態による計算機システム1では、フラッシュメモリチップに書き込まれる複数のデータのうち、ユーザデータを含むデータ部が共通する複数のデータについて、データと保証コードとを分けて、1つのデータを物理ページに格納し、複数のデータに対応する保証コードを連結して物理ページに格納する。これにより、保証コードが付与されたデータに対しても重複排除を行って、記憶媒体への書き込み量を縮減することによりフラッシュメモリの長寿命化を図ることができる。さらに、追記型の書き込み方法を採用するフラッシュメモリなどの記憶媒体において、ユーザが使用していない未使用領域を増加させて、未使用領域をデータの追記用の領域とすることにより、性能安定性の向上を図ることが可能となる。
【0104】
(2)第2の実施の形態
(2−1)計算機システムのハードウェア構成
本実施の形態にかかる計算機システム2のハードウェア構成は、第1の実施の形態にかかる計算機システム1のハードウェア構成と同様であるため、詳細な説明は省略する。本実施の形態は、複数の論理ページの重複排除を実行する点で第1の実施の形態と共通するが、さらに、重複排除対象のデータ部を圧縮する点で第1の実施形態と異なっている。なお、本実施の形態においても、重複排除対象の論理ページの探索方法は、例えば、大サイズのデータをライトする場合や、リクラメーション処理やリフレッシュ処理などのデータ再配置時に、大サイズのデータの中から重複排除の対象となる論理ページの組み合わせを検索する。また、各ページのデータ部のハッシュ値を算出して管理し、ハッシュ値に基づいて、動的にデータ部の一致するページの組み合わせを検索するようにしてもよい。なお、本実施形態では、説明を容易にするために、一定間隔で区切られており、アドレスの連続している論理ページを対象として以下説明する。
【0105】
(2−2)ストレージ装置の内部構成について
本実施の形態にかかるストレージ装置11の内部構成については、第1の実施の形態と同様の構成についての詳細な説明は省略し、第1の実施の形態と異なる構成について特に詳細に説明する。まず、本実施の形態における重複排除の概要について、第1の実施の形態と異なる点について説明する。
【0106】
図12に示すように、第1の実施形態では同一の内容のデータが格納されているデータ部411A、411B、411Cを含むページ群43を、データ部441を含むページ44とコード部451を含むページ45の2つのページに格納している。本実施形態では、さらに、ページ44のデータ「Data 0〜Data n−1」を圧縮して、圧縮データ(Comp Data)72に変換する。
【0107】
ここで、圧縮データは、例えば、フォーマットデータから構成される。上記したように、フォーマットデータは、記憶デバイスを使用する際に、記憶デバイスの異常個所を検知したり保証コードを事前に書き込みしたりすることを目的として、記憶デバイスの全領域に特定パタンのデータが書き込まれる。しかし、フラッシュメモリをはじめとする書き換えが制限されている記憶デバイスにおいては、このフォーマットデータの書き込みにより不必要に書き換え回数を増加させてしまうという問題があった。
【0108】
そこで、本実施形態では、フォーマットデータについては、通常、「0」などの実体を伴わないデータが書き込まれるため、データ部411A、411Bおよび411Cに「0」が書き込まれているページ群43をページ44および45とする重複排除を実行する。さらに、「0」などのフォーマットデータが書き込まれるデータ部を圧縮して、ページ71に集約する。
【0109】
また、図12に示すように、圧縮データ72が格納されたページ71の空き領域に保証コード「C 0〜C n−1」を格納する。これにより、ページ44およびページ45の2つのページがページ71の1つのページに集約される。なお、ページ71のすべてを圧縮データ72と保証コード73を格納するために使用してもよいし、空き領域(reserve)に管理テーブル等の管理情報を格納してもよい。
【0110】
次に、本実施形態における重複排除の具体例について説明する。図13Aに、論理ページアドレスと物理ページアドレスとの対応関係を示す。図13Aに示すように、Addr81は、論理ページアドレスを示し、Data82は、論理ページアドレス空間に格納されているデータを示す。また、Code83は、論理ページアドレス空間に格納されている保証コードを示す。そして、Addr84は、論理ページに対応付けられている物理ページアドレスを示し、Data85は、物理ページアドレス空間に格納されているデータの内容を示す。
【0111】
論理ページアドレス0〜2で示される論理ページ811〜813に格納されているデータ82には、同一の内容のデータ「AAAA」が格納されている。この場合、論理ページ811〜813の各論理ページアドレス0〜2は、物理ページ841の物理ページアドレス0に対応付けられる。物理ページ841には、データ「AAAA」が圧縮されたデータ「A」と、参照元となる論理ページ811〜813に対応する保証コードC0〜C2が格納されている。一方、重複排除されていない論理ページ814は、物理ページ842が対応付けられ、物理ページ842には、通常通り、データと保証コードが格納される。
【0112】
次に、上記した論理ページと物理ページとの対応付けを実現するための管理テーブルについて説明する。論理/物理アドレス変換テーブル86は、論理アドレスと物理アドレスとの対応付けを管理するテーブルであって、図13Bに示すように、論理ページアドレス欄861、物理ページアドレス欄862およびフラグ欄863から構成される。
【0113】
論理ページアドレス欄861には、論理ページの先頭アドレスが格納される。物理ページアドレス欄862には、論理ページアドレス欄861に対応付けられた物理ページの先頭アドレスが格納される。フラグ欄863には、対応する論理ページが重複排除されているかを判定するためのフラグが格納される。
【0114】
例えば、フラグ欄863に「1」が格納されている場合、対応する論理ページは重複排除されたページであると判定され、圧縮されたデータが解凍されたり、物理ページ内の保証コードの位置が計算されたりする。物理ページ内の保証コードの位置は、例えば、参照元となる論理ページアドレスからのオフセット位置から算出される。フラグ欄863に対応する論理ページアドレスが圧縮されたか否かを判定するフラグを設定することにより、保証コードが格納されている物理ページの実際の位置を保持する必要がなくなる。
【0115】
さらに、物理ページに格納するデータ量を減らすために、論理ページ単位ではなく、任意の複数の論理ページ単位で重複排除されたか否かを判定するフラグを設定するようにしてもよい。例えば、重複対象となる論理ページ群のアドレスの並びが連続であり、データを圧縮後には、データが一定のサイズに収まることが保証されているデータであって、例えば、フォーマットデータである場合に、重複排除された物理ページ内の論理ページ数は事前に固定的に決定されるとする。この場合、複数の論理ページ単位に重複排除されたか否かを判定するフラグを設定することにより、論理/物理アドレス変換テーブル86のテーブルサイズを軽減することができる。ただし、この場合、任意の範囲の論理ページごとに重複排除のためのフラグが設定されるため、特定の範囲内の論理ページのうち、1つの論理ページ以外の論理ページが重複排除されている場合には、重複排除されていない論理ページ用に別途の情報が必要となる。
【0116】
また、逆参照テーブル87は、物理ページがいずれの論理ページに参照されているかを管理するテーブルであって、図13Cに示すように、物理ページアドレス欄871、参照カウント欄872および論理ページ代表アドレス欄873から構成される。
【0117】
物理ページアドレス欄871には、データおよび保証コードが格納されている物理ページの先頭アドレスが格納される。参照カウント欄872には、物理ページに格納されているデータを参照している論理ページの数が格納される。論理ページ代表アドレス欄872には、参照元の論理ページの代表アドレスが格納される。論理ページの代表アドレスは、重複排除された複数の論理ページの先頭の論理ページのアドレスである。すなわち、当該物理ページをポイントしている任意の論理ページの保証コードの位置を、論理ページの代表アドレスからのオフセットから求めることができる。
【0118】
また、逆参照テーブル87において、各物理ページに対応する情報を格納するのではなく、任意の数の物理ページ単位に対応する情報を格納することにより、逆参照テーブル87に格納する情報量を減らすようにしてもよい。例えば、消去単位となる物理ブロックの単位で、参照カウント数をまとめて管理してもよい。この場合、消去単位の参照カウント数と、参照元の論理ページの代表アドレスをもとに論理アドレスと物理アドレスの変換を行って、参照元の論理ページを確認することにより、物理ページ単位毎の参照カウント数を復元することができる。
【0119】
(2−3)ストレージ装置の動作の詳細
(2−3−1)重複排除処理
次に、本実施形態にかかるストレージ装置11における重複排除処理について説明する。以下では、第1実施の形態と異なる処理について特に説明し、第1の実施の形態と同様の構成については説明を省略する。図14に示すように、まず、コントローラ213は、重複排除の対象となる論理ページリストを取得する(S51)。論理ページリストは、ページ内のユーザデータが格納されているデータ部の内容が同一で、保証コードが格納されているコード部の内容が異なる少なくとも3つ以上のページから構成される。
【0120】
次に、コントローラ213は、ステップS51において取得した論理ページリストに含まれる複数の論理ページのデータ部の圧縮後のデータサイズが所定の閾値THより小さいか否かを判定する(S52)。ステップS52において、圧縮後のデータサイズが所定の閾値TH以上の場合には、コントローラ213は、重複排除処理を行わず、通常のライト処理を実行する(S58)。ステップS52において圧縮後のデータサイズが所定の閾値THより小さいと判定された場合には、ステップS53以降の重複排除処理を実行する。
【0121】
ここで、閾値THは、予め管理プログラム等に設定されており、データサイズが閾値THより小さい場合に、重複排除の対象となる論理ページの圧縮後のデータ部のサイズとコード部のサイズとを合計した値が1つの物理ページのサイズに収まるように設定された値である。
【0122】
そして、ステップS52において、圧縮後のデータサイズがTHより小さいと判定された場合には、コントローラ231は、ステップS51において取得した論理ページのデータ部を格納する物理ページを取得する(S53)。
【0123】
そして、コントローラ231は、重複排除対象となる論理ページのデータ部を圧縮する(S54)。そして、コントローラ231は、重複排除対象となる各論理ページのコード部を抽出して連結する(S55)。そして、ステップS54において圧縮したデータ部と、ステップS55において連結したコード部とを連結して、ステップS53において取得した物理ページに書き込む(S56)。
【0124】
続いて、コントローラ231は、管理テーブルである論理/物理アドレス変換テーブル56と逆参照テーブル57を更新する(S57)。具体的に、コントローラ231は、論理/物理アドレス変換テーブル86については、重複排除の対象となった論理ページに該当するエントリについて、物理ページアドレス欄862の値をデータ格納先の物理ページアドレスの値に更新し、重複排除フラグ欄863に「1」を格納する。
【0125】
また、逆参照テーブル87については、コントローラ231は、重複対象となった論理ページに対応付けられている物理ページに該当するエントリについて更新を行う。すなわち、逆参照テーブル87の参照カウント欄872に「1」を格納し、さらに、論理ページ代表アドレス873に対象となる論理ページの代表アドレスを格納する。
【0126】
(2−3−2)リクラメーション処理、リフレッシュ処理
本実施の形態にかかるリクラメーション処理およびリフレッシュ処理は、第1の実施の形態にかかるリクラメーション処理およびリフレッシュ処理とほぼ同様のため、異なる点について詳細に説明する。本実施の形態では、図15に示すように、コントローラ231は、ステップS63において処理の対象となる物理ページXを取得した後、物理ページXを参照している論理ページの代表アドレスを取得する(S64)点で第1の実施の形態と異なっている。
【0127】
そして、ステップS64において取得した論理ページの代表アドレスを開始点として、物理ページXを参照している可能性のある論理ページの現在の参照先を調べるために、論理ページの代表アドレスの次の論理ページの論理/物理アドレス変換テーブル86のエントリを取得する(S65)。そして、ステップS65において取得した論理ページが、物理ページXを未だ参照しているか否かを調査して(S66)、物理ページXを参照している場合には当該論理ページをコピー対象リストに追加する(S67)。
【0128】
(2−3−3)リード処理
本実施の形態にかかるリード処理についても、第1の実施の形態にかかるリード処理と異なる点について特に詳細に説明する。図16に示すように、コントローラ231は、リード対象となる論理ページアドレスを取得する(S71)。
【0129】
次に、コントローラ231は、論理/物理アドレス変換テーブル86から、対象となる論理/物理アドレス情報を取得する(S72)。続いて、コントローラ231は、ステップS41において取得した論理ページが重複排除処理されたページかを判定する(S73)。
【0130】
そして、ステップS73において、論理ページが重複排除されたページであると判定された場合には、コントローラ231は、ステップS74以降の処理を実行する。一方。ステップS73において、論理ページが重複排除されていないページであると判定された場合には、コントローラ231は、ステップS731の処理を実行する。
【0131】
そして、コントローラ231は、論理ページが重複排除されたページであると判定された場合には、論理ページのデータ部を格納している物理ページデータアドレスを取得する(S74)。続いて、コントローラ231は、参照元の論理ページ代表アドレスから、物理ページ内の保証コードのオフセット位置を計算する(S75)。そして、コントローラ231は、リード対象となる論理ページに対応付けられた物理ページアドレスに格納されたデータをリードする(S76)。さらに、コントローラ231は、ステップS76において取得したデータを解凍する(S77)。
【0132】
一方、ステップS73において、論理ページが重複排除されていないページであると判定された場合には、コントローラ231は、論理ページに対応するデータ部及び保証コード部を格納している物理ページアドレスを取得する(S731)。そして、コントローラ231は、ステップS731で取得した物理ページアドレスに格納されている物理ページをリードする(S732)。
【0133】
また、ステップS73において、論理ページが重複排除されていない通常のページであると判定された場合には、コントローラ231は、論理ページに対応する物理ページのアドレスを取得する(S731)。具体的に、コントローラ231は、論理/物理アドレス変換テーブル56の物理ページデータアドレス欄562に格納されている物理ページデータアドレスを取得する。
【0134】
そして、コントローラ231は、リード対象となる論理ページに対応付けられた物理ページアドレスをもとに、物理ページに格納されているデータをリードする(S732)。
【0135】
(2−4)本実施の形態の効果
以上のように、本実施の形態による計算機システム2では、重複排除処理に加え、さらに、重複排除対象となるデータ部を圧縮する。これにより、保証コードが付与されたデータに対しても重複排除を行って、さらに、データ部を圧縮して、記憶媒体への書き込み量を縮減することによりフラッシュメモリの長寿命化を図ることができる。さらに、追記型の書き込み方法を採用するフラッシュメモリなどの記憶媒体において、ユーザが使用していない未使用領域を増加させて、未使用領域をデータの追記用の領域とすることにより、性能安定性の向上を図ることが可能となる。
【0136】
(3)第3の実施の形態
(3−1)計算機システムのハードウェア構成
本実施の形態にかかる計算機システム3のハードウェア構成は、第1の実施の形態にかかる計算機システム1のフラッシュメモリストレージ17が、ストレージ装置11とは別体の装置として構成されている点で異なっている。本実施の形態は、複数の論理ページの重複排除を実行する点で第1の実施の形態と共通するが、ストレージ装置11とフラッシュメモリストレージ17とが連携して重複排除を実行する点で異なっている。具体的に、ストレージ装置11が、ホスト12からの要求に応じて記憶領域に書き込むフォーマットデータ等について、フラッシュメモリストレージ17に実際にデータを送信するのではなく、特定のパタンを送信することによりデータ転送量を削減している。
【0137】
(3−2)計算機システムの動作の詳細
次に、ストレージ装置11とフラッシュメモリストレージ17との間で実行される重複排除処理について説明する。
【0138】
図17に示すように、まず、ストレージ装置11は、ホスト12からの要求に応じて、記憶領域のフォーマットを開始する(S81)。ストレージ装置11は、対象となる全記憶領域に対して、それぞれのセクタ毎に特定パタンを書き込むことにより記憶領域のフォーマットを行う。また、ストレージ装置11は、特定パタンを書き込む際に、保証コードも付与する。
【0139】
そして、ストレージ装置11は、ホスト12からの要求に応じて生成したフォーマットパタンと、フォーマットデータに付与する保証コードの生成ルールをパタン情報としてコントローラ213に通知する(S82)。ここで、パタン情報は、例えば、オール0などの固定的なパタンであり、保証コードは、例えば、データ部から生成されるエラー訂正符号に加えて、論理アドレス情報が付与された形式のコードなどである。すなわち、ストレージ装置11は、実際にフォーマット情報を記憶領域に書き込むのではなく、フォーマットパタンや保証コードの生成ルールを含むパタン情報を通知する。これにより、データ転送量を削減することができる。
【0140】
そして、フラッシュメモリストレージ17は、ステップS82においてストレージ装置11から送信されたパタン情報を受領する(S83)。そして、フラッシュメモリストレージ17は、ストレージ装置11から送信されたパタン情報を元に、フォーマットの対象とされている記憶領域に対応する各論理ページの保証コードを生成する(S84)。続いて、フラッシュメモリストレージ17は、パタン情報を元に、フォーマットパタンを生成する(S85)。
【0141】
そして、フラッシュメモリストレージ17は、ステップS85において生成された論理ページに対して、重複排除処理を実行する(S86)。ステップS86における重複排除処理は、第1の実施の形態と同様の処理であるため、詳細な説明は省略する。
【0142】
そして、フラッシュメモリストレージ17は、重複排除された論理テーブルについて、論理/物理アドレス変換管理テーブル56の対象となるエントリを更新する(S87)。ステップS87における論理/物理アドレス変換管理テーブル56の更新処理は、第1の実施の形態と同様の処理であるため、詳細な説明は省略する。
【0143】
そして、フラッシュメモリストレージ17は、ストレージ装置11にフォーマット処理が終了した旨を通知する(S88)。そして、ストレージ装置11は、フラッシュメモリストレージ17からフォーマット処理が終了した旨の通知を受領して、フォーマット処理が終了したことをホスト12に通知する。
【0144】
(3−3)本実施の形態の効果
本実施形態にかかる計算機システム3によれば、特定のパタン情報に基づいて、記憶領域にデータおよび保証コードを書き込む。これにより、データ書き込みにおけるデータ転送量を削減することができる。さらに、保証コードが付与されたデータに対しても重複排除を行って、記憶媒体への書き込み量を縮減することによりフラッシュメモリの長寿命化を図ることができる。さらに、追記型の書き込み方法を採用するフラッシュメモリなどの記憶媒体において、ユーザが使用していない未使用領域を増加させて、未使用領域をデータの追記用の領域とすることにより、性能安定性の向上を図ることが可能となる。
【0145】
(4)他の実施の形態
なお、上述の実施の形態においては、フラッシュ制御装置210に格納されている各種プログラムに基づいて、重複排除処理等を実行しているが、かかる例に限定されず、例えば、フラッシュ制御装置210をストレージ装置11とは別体の装置に設けて、当該フラッシュ制御装置210と協同して各種機能を実現するようにしてもよい。また、フラッシュ制御装置210に格納されている各種プログラムをストレージ装置11とは別体の他の装置に設けて、当該プログラムがフラッシュ制御装置210に呼び出されることにより各種機能を実現するようにしてもよい。
【産業上の利用可能性】
【0146】
本発明は、データ毎に異なるコードが付与されたデータを重複排除して、データ容量効率を向上させることが可能なストレージ装置に適用することができる。
【符号の説明】
【0147】
11 ストレージ装置
112 ホストインタフェース
113 ストレージインタフェース
114 保守インタフェース
115 CPU
116 メモリ
12 ホスト
13 管理端末
14 SAN
16 コネクタ
17 フラッシュメモリストレージ装置
21 フラッシュメモリモジュール
210 フラッシュ制御装置
211 ストレージインタフェース
212 CPU
213 コントローラ
213 メモリ
215 バッファ
216 フラッシュメモリインタフェース
31 フラッシュメモリチップ
図1
図2
図3
図4A
図4B
図5
図6A
図6B
図6C
図7
図8
図9A
図9B
図10
図11
図12
図13A
図13B
図13C
図14
図15
図16
図17