(57)【要約】【課題】コンピュータシステムの起動が出来なくなるような故障の発生を低減するコンピュータシステムの運用を可能とすること。【解決手段】本発明の一つの実施形態によれば、メモリシステムは、物理記憶領域を有する不揮発性メモリと、前記不揮発性メモリとホストとの間のデータ転送を行うコントローラと、を備えている。前記コントローラは、区分管理部と、ウェアレベリング部とを備えている。前記区分管理部は、前記物理記憶領域を第１の区分と１以上の第２の区分とを含む複数の区分に分割する。前記ウェアレベリング部は、前記第１の区分にはウェアレベリングを実行せず、前記第２の区分には区分毎に独立してウェアレベリングを実行する。ここで、前記区分管理部は、前記ホストからの領域拡張要求に応じて区分の拡張を行う。【選択図】図３
2014056408.tif 000002
【特許請求の範囲】
【請求項１】
物理記憶領域を有する不揮発性メモリと、
前記不揮発性メモリとホストとの間のデータ転送を行うコントローラと、
を備え、
前記コントローラは、
前記物理記憶領域を第１の区分と１以上の第２の区分とを含む複数の区分に分割する区分管理部と、
前記第１の区分にはウェアレベリングを実行せず、前記第２の区分には区分毎に独立してウェアレベリングを実行するウェアレベリング部と、
を備え、
前記区分管理部は、前記ホストからの領域拡張要求に応じて区分の拡張を行う、
ことを特徴とするメモリシステム。
【請求項２】
前記領域拡張要求は、変更対象の領域と拡張対象の区分を特定する区分情報とを含み、
前記区分管理部は、前記領域拡張要求に指定された変更対象の領域の区分を前記区分情報により特定される区分に変更する、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記複数の区分は夫々論理アドレスが割り当てられていない冗長領域を含み、
前記拡張対象の区分は論理アドレスにより指定され、
前記区分管理部は、前記領域拡張要求に指定された変更対象の領域とともに当該変更対象の領域が属する区分の冗長領域の一部を前記区分情報により特定される区分に変更する、
ことを特徴とする請求項２に記載のメモリシステム。
【請求項４】
前記複数の区分の夫々は、前記ホストから予め優先度が設定され、
前記領域拡張要求は、拡張サイズと拡張対象の区分を特定する優先度情報とを含み、
前記区分管理部は、前記優先度情報により特定される区分よりも優先度が低い区分から空き領域を検索し、検索された空き領域の区分を前記拡張対象の区分に変更する、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項５】
前記区分管理部は、優先度が高い区分から順番に前記空き領域を検索する、
ことを特徴とする請求項４に記載のメモリシステム。
【請求項６】
前記複数の区分は夫々、論理アドレスが割り当てられた論理記憶領域と論理アドレスが割り当てられていない冗長領域とを含み、
前記区分管理部は、前記優先度情報により特定される区分よりも優先度が低い区分の論理記憶領域から空き領域を検索し、前記検索された空き領域とともに当該空き領域が属する区分の冗長領域の一部を前記拡張対象の区分に変更する、
ことを特徴とする請求項４または請求項５に記載のメモリシステム。
【請求項７】
ホストと、
物理記憶領域を有する不揮発性メモリと、
前記不揮発性メモリと前記ホストとの間のデータ転送を行うコントローラと、
を備え、
前記コントローラは、
前記物理記憶領域を第１の区分と１以上の第２の区分とを含む複数の区分に分割する区分管理部と、
前記第１の区分にはウェアレベリングを実行せず、前記第２の区分には区分毎に独立してウェアレベリングを実行するウェアレベリング部と、
を備え、
前記ホストは、区分の拡張を要求する領域拡張要求を発行し、
前記区分管理部は、前記ホストから発行された領域拡張要求に応じて区分の拡張を行う、
ことを特徴とするコンピュータシステム。
【請求項８】
前記領域拡張要求は、変更対象の領域と拡張対象の区分を特定する区分情報とを含み、
前記区分管理部は、前記領域拡張要求に指定された変更対象の領域の区分を前記区分情報により特定される区分に変更する、
ことを特徴とする請求項７に記載のコンピュータシステム。
【請求項９】
前記複数の区分は夫々論理アドレスが割り当てられていない冗長領域を含み、
前記ホストは、前記拡張対象の区分を論理アドレスにより指定し、
前記区分管理部は、前記領域拡張要求に指定された変更対象の領域とともに当該変更対象の領域が属する区分の冗長領域の一部を前記区分情報により特定される区分に変更する、
ことを特徴とする請求項８に記載のコンピュータシステム。
【請求項１０】
前記ホストは、前記複数の区分の夫々に予め優先度を設定し、
前記領域拡張要求は、拡張サイズと拡張対象の区分を特定する優先度情報とを含み、
前記区分管理部は、前記優先度情報により特定される区分よりも優先度が低い区分から空き領域を検索し、検索された空き領域の区分を前記拡張対象の区分に変更する、
ことを特徴とする請求項７に記載のコンピュータシステム。
【請求項１１】
前記区分管理部は、優先度が高い区分から順番に前記空き領域を検索する、
ことを特徴とする請求項１０に記載のコンピュータシステム。
【請求項１２】
前記複数の区分は夫々、論理アドレスが割り当てられた論理記憶領域と論理アドレスが割り当てられていない冗長領域とを含み、
前記区分管理部は、前記優先度情報により特定される区分よりも優先度が低い区分の論理記憶領域から空き領域を検索し、前記検索された空き領域とともに当該空き領域が属する区分の冗長領域の一部を前記拡張対象の区分に変更する、
ことを特徴とする請求項１０または請求項１１に記載のコンピュータシステム。
【請求項１３】
物理記憶領域を有する不揮発性メモリの、ホストと前記不揮発性メモリとの間のデータ転送行うコントローラによって実行される管理方法であって、
前記物理記憶領域を第１の区分と１以上の第２の区分とを含む複数の区分に分割し、
前記第１の区分にはウェアレベリングを実行せず、前記第２の区分には区分毎に独立してウェアレベリングを実行し、
ホストから領域拡張要求を受信すると、前記領域拡張要求に応じて区分の拡張を行う、
ことを特徴とする管理方法。
【請求項１４】
前記領域拡張要求は、変更対象の領域と拡張対象の区分を特定する区分情報とを含み、
前記領域拡張要求に指定された変更対象の領域の区分を前記区分情報により特定される区分に変更する、
ことを含むことを特徴とする請求項１３に記載の管理方法。
【請求項１５】
前記複数の区分は夫々論理アドレスが割り当てられていない冗長領域を含み、
前記拡張対象の区分は論理アドレスにより指定され、
前記領域拡張要求に指定された変更対象の領域とともに当該変更対象の領域が属する区分の冗長領域の一部を前記区分情報により特定される区分に変更する、
ことを含むことを特徴とする請求項１４に記載の管理方法。
【請求項１６】
前記複数の区分の夫々は、前記ホストから予め優先度が設定され、
前記領域拡張要求は、拡張サイズと拡張対象の区分を特定する優先度情報とを含み、
前記優先度情報により特定される区分よりも優先度が低い区分から空き領域を検索し、
検索された空き領域の区分を前記拡張対象の区分に変更する、
ことを含むことを特徴とする請求項１３に記載の管理方法。
【請求項１７】
優先度が高い区分から順番に前記空き領域を検索する、
ことを含むことを特徴とする請求項１６に記載の管理方法。
【請求項１８】
前記複数の区分は夫々、論理アドレスが割り当てられた論理記憶領域と論理アドレスが割り当てられていない冗長領域とを含み、
前記優先度情報により特定される区分よりも優先度が低い区分の論理記憶領域から空き領域を検索し、
前記検索された空き領域とともに当該空き領域が属する区分の冗長領域の一部を前記拡張対象の区分に変更する、
ことを含むことを特徴とする請求項１６または請求項１７に記載の管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステム、コンピュータシステム、およびメモリ管理方法に関する。
【背景技術】
【０００２】
パーソナルコンピュータ（ＰＣ）などのコンピュータシステムに用いられるメモリシステムとして、ＮＡＮＤ型のメモリセルを備えるメモリチップを搭載したＳＳＤ（Solid  State  Drive）が注目されている。ＳＳＤは、磁気ディスク装置に比べ、高速、軽量などの利点を有している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−２２０１０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一つの実施形態は、コンピュータシステムの起動が出来なくなるような故障の発生を低減する運用を可能とするメモリシステム、コンピュータシステム、およびメモリ管理方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の一つの実施形態によれば、メモリシステムは、物理記憶領域を有する不揮発性メモリと、前記不揮発性メモリとホストとの間のデータ転送を行うコントローラと、を備えている。前記コントローラは、区分管理部と、ウェアレベリング部とを備えている。前記区分管理部は、前記物理記憶領域を第１の区分と１以上の第２の区分とを含む複数の区分に分割する。前記ウェアレベリング部は、前記第１の区分にはウェアレベリングを実行せず、前記第２の区分には区分毎に独立してウェアレベリングを実行する。ここで、前記区分管理部は、前記ホストからの領域拡張要求に応じて区分の拡張を行う。
【図面の簡単な説明】
【０００６】
【図１】図１は、ＳＳＤの構成を示す図である。
【図２】図２は、メモリセルアレイに含まれる１個のブロックの構成例を示す回路図である。
【図３】図３は、ＮＡＮＤメモリのメモリ構成を説明する図である。
【図４】図４は、ＮＡＮＤメモリのメモリ構成を説明する図である。
【図５】図５は、コントローラの構成を説明する図である。
【図６】図６は、コンフィギュレーション時のＳＳＤの動作を説明する図である。
【図７】図７は、第１の実施形態のＳＳＤの、区分を拡張する際の動作を説明する図である。
【図８】図８は、第２の実施形態のＳＳＤの、区分を拡張する際の動作を説明する図である。
【発明を実施するための形態】
【０００７】
ＳＳＤに使用されているセル（メモリセルトランジスタ、メモリセル）は、データの書き換え回数に上限を有する。このため、１つの箇所に書き換えが集中するとＳＳＤの寿命が短くなってしまう。これを防止するために、ウェアレベリング（Wear  Leveling）が実行される。ウェアレベリングとは、書き換え回数が多いセルから書き換え回数が少ないセルへデータを移動させて全てのセルの書き換え回数を均一化する技術である。
【０００８】
ここで、オペレーティングシステム（ＯＳ）の様にコンピュータシステムの運用に欠かせないシステムデータ等が書き込まれているセルが故障すると、コンピュータシステムの起動が出来なくなるという致命的な事態が発生する。即ち、データをＳＳＤから取り出すことができなくなる。システムデータとユーザデータ（アプリケーションプログラムや、ユーザが作成したデータ）とが区別されることなくウェアレベリングが実行されると、システムデータが損失する確率とユーザデータが損失する確率とが等しくなる。ＳＳＤが寿命を迎えたときに最初にシステムデータが損失すると、上述の致命的な事態が発生する。
【０００９】
システムデータは一般に、ユーザデータに比べて書き換え頻度が小さい。本発明の実施形態によれば、システムデータを格納するための記憶領域を特別に確保するとともにシステムデータ用の記憶領域にはウェアレベリングを実行しないことで、当該記憶領域の書き換え回数の増加速度が他の記憶領域よりも小さくなるようにする。これにより、システムデータ用の記憶領域の書き換え回数の増加速度を他の記憶領域よりも小さくすることができるので、コンピュータシステムの起動が出来なくなるような故障の発生を抑制することが可能となる。また、本発明の実施形態によれば、ホストはＳＳＤに所定の要求を送信することでシステムデータを格納する記憶領域を拡張することができる。
【００１０】
以下に添付図面を参照して、実施形態にかかるメモリシステム、コンピュータシステム、およびメモリ管理方法を詳細に説明する。ここでは、実施形態のメモリシステムがＳＳＤに適用された場合について説明するが、実施形態のメモリシステムの適用範囲はＳＳＤだけに限定されない。また、これらの実施形態により本発明が限定されるものではない。
【００１１】
（第１の実施形態）
図１は、ＳＳＤの構成を示す図である。ＳＳＤ１００は中央演算装置（ＣＰＵ）などのホスト２００とともに実施形態のコンピュータシステムを構成する。ＳＳＤ１００は、ホスト２００の外部記憶装置として機能する。ＳＳＤ１００がホスト２００から受信する読み出し要求や書き込み要求は、ＬＢＡ（Logical  Block  Addressing）で定義されたアクセス対象の先頭アドレスとアクセス対象の領域の範囲を示すセクタサイズとが含まれている。なお、ＳＳＤ１００とホスト２００との間の通信インタフェースにはＳＡＴＡ（Serial  Advanced  Technology  Attachment）、ＳＡＳ（Serial  Attached  SCSI）、ＰＣＩｅ（PCI  Express）など、任意の通信インタフェース規格を採用することが可能である。以降、ＬＢＡで記述されたアドレスを論理アドレスということとする。
【００１２】
ＳＳＤ１００は、ＮＡＮＤメモリ１と、ホスト２００とＮＡＮＤメモリ１との間のデータ転送を実行するコントローラ２とを備える。ＮＡＮＤメモリ１は、夫々メモリセルアレイ３０を備える１以上のメモリチップ３によって構成される。メモリセルアレイ３０は、消去の単位となるブロックを複数備えて構成される。
【００１３】
図２は、メモリセルアレイ３０に含まれる１個のブロックの構成例を示す回路図である。図示するように、各ブロックは、Ｘ方向に沿って順に配列された（ｍ＋１）個のＮＡＮＤストリングを備えている（ｍは、０以上の整数）。（ｍ＋１）個のＮＡＮＤストリングにそれぞれ含まれる選択トランジスタＳＴ１は、ドレインがビット線ＢＬ０〜ＢＬｐに接続され、ゲートが選択ゲート線ＳＧＤに共通接続されている。また、選択トランジスタＳＴ２は、ソースがソース線ＳＬに共通接続され、ゲートが選択ゲート線ＳＧＳに共通接続されている。
【００１４】
各メモリセルトランジスタＭＴは、半導体基板上に形成された積層ゲート構造を備えたＭＯＳＦＥＴ（metal  oxide  semiconductor  field  effect  transistor）から構成される。積層ゲート構造は、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層（浮遊ゲート電極）、及び電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲート電極を含んでいる。メモリセルトランジスタＭＴは、浮遊ゲート電極に蓄えられる電子の数に応じてしきい値電圧が変化し、このしきい値電圧の違いに応じてデータを記憶する。メモリセルトランジスタＭＴは、１ビットを記憶するように構成されていてもよいし、多値（２ビット以上のデータ）を記憶するように構成されていてもよい。
【００１５】
各ＮＡＮＤストリングにおいて、（ｎ＋１）個のメモリセルトランジスタＭＴは、選択トランジスタＳＴ１のソースと選択トランジスタＳＴ２のドレインとの間に、それぞれの電流経路が直列接続されるように配置されている。そして、最もドレイン側に位置するメモリセルトランジスタＭＴから順に、制御ゲート電極がワード線ＷＬ０〜ＷＬｑにそれぞれ接続されている。従って、ワード線ＷＬ０に接続されたメモリセルトランジスタＭＴのドレインは選択トランジスタＳＴ１のソースに接続され、ワード線ＷＬｑに接続されたメモリセルトランジスタＭＴのソースは選択トランジスタＳＴ２のドレインに接続されている。
【００１６】
ワード線ＷＬ０〜ＷＬｑは、ブロック内のＮＡＮＤストリング間で、メモリセルトランジスタＭＴの制御ゲート電極を共通に接続している。つまり、ブロック内において同一行にあるメモリセルトランジスタＭＴの制御ゲート電極は、同一のワード線ＷＬに接続される。この同一のワード線ＷＬに接続される（ｍ＋１）個のメモリセルトランジスタＭＴは１ページとして取り扱われ、このページごとにデータの書き込み及びデータの読み出しが行われる。
【００１７】
また、ビット線ＢＬ０〜ＢＬｐは、ブロック間で、選択トランジスタＳＴ１のドレインを共通に接続している。つまり、複数のブロック内において同一列にあるＮＡＮＤストリングは、同一のビット線ＢＬに接続される。
【００１８】
なお、ＮＡＮＤメモリ１の記憶領域を構成するメモリセルアレイは、１つのメモリセルに２ビット以上を記憶する多値メモリ（MLC:  Multi  Level  Cell）であってもよいし、１つのメモリセルに１ビットを記憶する二値メモリ（SLC:  Single  Level  Cell）であってもよい。
【００１９】
メモリチップ３が夫々備えるメモリセルアレイ３０は、ＮＡＮＤメモリ１の物理記憶領域を構成する。本発明の第１の実施形態によれば、ＮＡＮＤメモリ１が備える物理記憶領域は、コントローラ２によって、システムデータが格納されることが想定された記憶領域と他の記憶領域とに分割されて管理される。
【００２０】
図３は、ＮＡＮＤメモリ１のメモリ構成を説明する図である。ＮＡＮＤメモリ１の物理記憶領域は、第１区分３１ａ、第２区分３１ｂおよび第３区分３１ｃに分割されている。第１区分３１ａに対してウェアレベリングが実行されず、第２区分３１ｂおよび第３区分３１ｃに対してウェアレベリングが実行される。
【００２１】
第１区分３１ａは、ホスト２００がシステムデータを書き込む領域である。第２区分３１ｂは、ホスト２００がユーザデータのうちの書き換え頻度が比較的に小さいデータ（例えばアプリケーションプログラム、アプリケーションプログラムのための認証コードデータなど）を書き込む領域である。第３区分３１ｃは、ユーザデータのうちの書き換え頻度が比較的に大きいデータ（例えばユーザが作成したデータ、動画ファイル、画像ファイルなど）を書き込む領域である。ＮＡＮＤメモリ１の記憶領域をどのように分割するかはホスト２００がコンフィギュレーション時に任意に設定することができる。以降、第１区分３１ａ、第２区分３１ｂおよび第３区分３１ｃを総称したり任意の１つを示したりするときには区分３１と表記することがある。
【００２２】
夫々の区分は、ＬＢＡが割り当てられている領域と、冗長な領域を備えている。即ち、第１区分３１ａは、論理記憶領域３２ａおよび冗長領域３３ａを、第２区分３１ｂは、論理記憶領域３２ｂおよび冗長領域３３ｂを、第３区分３１ｃは、論理記憶領域３２ｃおよび冗長領域３３ｃを、夫々備えている。
【００２３】
論理記憶領域３２ａは、例えばＣｓのサイズを有しており、０〜Ｃｓ−１の範囲の論理アドレスが割り当てられている。論理記憶領域３２ｂは、例えばＣｕ１のサイズを有しており、Ｃｓ〜Ｃｓ＋Ｃｕ１−１の範囲の論理アドレスが割り当てられている。論理記憶領域３２ｃは、例えばＣｕ２のサイズを有しており、Ｃｓ＋Ｃｕ１〜Ｃｓ＋Ｃｕ１＋Ｃｕ２−１の範囲の論理アドレスが割り当てられている。論理記憶領域３２ａ〜３２ｃは、ホスト２００が論理アドレスを用いてアクセスすることができる。
【００２４】
冗長領域３３ａ〜３３ｃは、夫々、１以上のフリーブロック（ＬＢＡが割り当てられていないブロック）により構成される。冗長領域３３ａ〜３３ｃは、夫々、同一区分内のガベージコレクション、同一区分内のバッドブロックの救済などに用いられる。ガベージコレクションとは、複数のブロックから有効データだけを集め、集めた有効データを他のブロックにコピーした上で、古いブロックの内容を消去する処理をいう。例えば、ガベージコレクションによれば、論理記憶領域３２ａから有効データが集められて、冗長領域３３ａとして管理されているフリーブロックにコピーされる。コピー先のブロックは論理記憶領域３２ａに組み入れられ、コピー元のブロックは内容が消去されて冗長領域３３ａに組み入れられる。このように、区分３１の夫々に属するセルは、ガベージコレクションにより、論理アドレスが割り当てられたり、論理アドレスの割り当てが無効になったりする。また、区分３１の夫々に属するセルは、自身が属する区分３１に割り当てられた範囲で論理アドレスが変動したりする。
【００２５】
なお、第２区分３１ｂおよび第３区分３１ｃの夫々に属するセルは、ウェアレベリングによっても夫々の区分に割り当てられた範囲で論理アドレスが変動し得る。
【００２６】
冗長領域３３ａ〜３３ｃの夫々は、論理記憶領域３２ａ〜３２ｃのうちの同一の区分３１に属する論理記憶領域のサイズおよび自身が属する区分３１の書き換え頻度（Write  Amplitude）に応じたサイズを有する。ここでは、冗長領域３３ａは、ＦＢｓのサイズを有し、冗長領域３３ｂは、ＦＢｕ１のサイズを有し、冗長領域３３ｃは、ＦＢｕ２のサイズを有するものとして表記している。なお、区分３１の書き換え頻度は、設計者により予め与えられるようにしてもよいし、ホスト２００からのコマンドにより指定されるようにしてもよい。
【００２７】
夫々の区分３１は、ホスト２００からの要求により拡張可能である。図４は、第１区分３１ａが拡張された場合のＮＡＮＤメモリ１のメモリ構成を説明する図である。本図によれば、図３においては第２区分３１ｂの一部として管理されていた領域が第１区分３１ａに組み入れられている。
【００２８】
なお、以降、論理記憶領域３２ａ〜３２ｃの任意の１つを論理記憶領域３２と表記することがある。また、冗長領域３３ａ〜３３ｃの任意の１つを冗長領域３３と表記することがある。
【００２９】
図５は、コントローラ２の構成を説明する図である。コントローラ２は、演算装置２１と記憶装置２２とを備えている。演算装置２１は例えばＭＰＵ（Micro  Processing  Unit）である。記憶装置２２は、例えば、ＲＯＭ（Read  Only  Memory）、ＲＡＭ（Random  Access  Memory）またはそれらの組み合わせにより構成される。
【００３０】
記憶装置２２には、ＬＢＡで記述された論理アドレスとＮＡＮＤメモリ１の物理アドレスとの対応付けを記録した論物変換テーブル２６と、夫々の区分を特定する情報を記述した区分管理情報２７とが格納される。ここでは、一例として、区分管理情報２７には、区分毎にアドレス（論理アドレスおよび物理アドレス）の範囲が記述されているものとする。
【００３１】
演算装置２１は、所定のファームウェアプログラムを実行することにより、リード／ライト部２３、ウェアレベリング部２４、区分管理部２５として機能する。ファームウェアの格納場所は特に限定されない。記憶装置２２が不揮発性メモリにより構成される場合にはファームウェアは記憶装置２２に予め格納されるようにしてよい。記憶装置２２が揮発性メモリにより構成される場合にはＮＡＮＤメモリ１の所定の場所に予め格納されるようにしてよい。
【００３２】
なお、演算装置２１が備える構成要素のうちの一部または全部をハードウェア回路で構成してもよい。
【００３３】
区分管理部２５は、ホスト２００からの領域作成要求に基づいてＮＡＮＤメモリ１の物理記憶領域に区分を生成する（分割する）。特に、区分管理部２５は、ＮＡＮＤメモリ１の物理記憶領域を、ウェアレベリングが実行されない区分と、ウェアレベリングが実行される１以上の区分と、を含む複数の区分に分割する。領域作成要求は、論理アドレスで記述された範囲の指定と優先度の指定とを含んでいる。区分管理部２５は、指定されたアドレス範囲を指定された優先度と対応付けて区分管理情報２７に登録する。
【００３４】
また、区分管理部２５は、ホスト２００からの領域拡張要求に応じて区分の拡張を行う。
【００３５】
なお、優先度は、区分を特定するための情報として使用される。例えば、ホスト２００は、区分３１の何れかを拡張する要求（領域拡張要求）を発行する際には、優先度を用いて拡張対象の区分を指定する。なお、ここでは、最も高い優先度が指定された区分を第１区分３１ａ、最も高い優先度から２番目の優先度が指定された区分を第２区分３１ｂ、最も高い優先度から３番目の優先度が指定された区分を第３区分３１ｃとしている。
【００３６】
リード／ライト部２３は、ホスト２００から書き込み要求とともに送られてきたデータをＮＡＮＤメモリ１に書き込む。また、リード／ライト部２３は、ホスト２００から読み出し要求されたデータをＮＡＮＤメモリ１から読み出して、読み出したデータをホスト２００に転送する。リード／ライト部２３は、ＮＡＮＤメモリ１にアクセスする際には、論物変換テーブル２６を参照することによってアクセス先の物理アドレスを特定することができる。
【００３７】
なお、リード／ライト部２３は、論理記憶領域３２に無効データが増加して同一区分に属する冗長領域３３が枯渇した場合には、夫々の区分内でガベージコレクションを実行することができる。リード／ライト部２３は、区分管理情報２７を参照することで夫々の区分の境界を認識することができる。リード／ライト部２３は、ガベージコレクションにより論理アドレスと物理アドレスとの対応関係に変化が生じた際には、当該変化を論物変換テーブル２６に反映させる。
【００３８】
ウェアレベリング部２４は、第２区分３１ｂおよび第３区分３１ｃのウェアレベリングを個別に実行する。即ち、ウェアレベリング部２４は、第２区分３１ｂに格納されたデータに対するウェアレベリングを第２区分３１ｂの内部だけで実行し、第３区分３１ｃに格納されたデータに対するウェアレベリングを第３区分３１ｃの内部だけで実行する。なお、ウェアレベリングが実行されると、ウェアレベリングにより移動せしめられたデータの格納先の物理アドレスが変更される。ウェアレベリング部２４は、ウェアレベリングの実行により論理アドレスと物理アドレスとの対応関係が変わったとき、対応関係の変化を論物変換テーブル２６に反映させる。ウェアレベリング部２４は、区分管理情報２７を参照することで夫々の区分の境界を認識することができる。
【００３９】
次に、ＳＳＤ１００の動作を説明する。
【００４０】
図６は、コンフィギュレーション時のＳＳＤ１００の動作を説明する図である。コンフィギュレーション時には、区分管理部２５は、ホスト２００から領域作成要求を受信する（ステップＳ１）。領域作成要求は、論理アドレス（ＬＢＡ）で記述された範囲の指定と優先度の指定とを含んでいる。区分管理部２５は、指定された範囲のサイズ（以降、指定サイズ）と、優先度に対応する書き換え頻度（Write  Amplitude）と、に基づいて冗長サイズを算出する（ステップＳ２）。なお、優先度と書き換え頻度との関係は予めＳＳＤ１００内に記録され、区分管理部２５は、当該記録を参照することにより、指定された優先度に対応する書き換え頻度を特定する。そして、ステップＳ２において、特定した書き換え頻度を使用する。
【００４１】
続いて、区分管理部２５は、指定サイズと冗長サイズとを合算した物理記憶領域の範囲を、指定された優先度を付して区分管理情報２７に登録する（ステップＳ３）。なお、指定サイズと冗長サイズとを合算した物理記憶領域をどのように確保するかについては特に限定されない。そして、区分管理部２５は、ホスト２００に領域作成が完成した旨を報告し（ステップＳ４）、区分を作成する動作が終了する。
【００４２】
ホスト２００は、図６に示す動作を繰り返すことによって、複数の区分を作成することができる。
【００４３】
図７は、第１の実施形態のＳＳＤ１００の、区分を拡張する際の動作を説明する図である。まず、区分管理部２５は、ホスト２００から領域変更要求を受信する（ステップＳ１１）。領域変更要求は、第１の実施形態によれば、変更対象の範囲の指定と変更後の区分３１を特定する優先度の指定とを含む。
【００４４】
ここで、領域変更要求において、変更対象の範囲は、論理アドレスを用いて指定される。言い換えると、変更対象の範囲は、論理記憶領域３２の中から指定される。指定された範囲の領域の区分を変更する際には、対応する冗長領域３３のうちの一部の領域も、指定された範囲が属する区分から指定された優先度に対応する区分に変更される。区分管理部２５は、指定された範囲の領域および冗長領域３３のうちの指定された範囲と同一の区分に属する冗長領域３３のうちの一部の区分を、拡張対象の区分に変更する（ステップＳ１２）。ここで、区分管理部２５は、冗長領域のうちの区分が変更される領域のサイズを、ステップＳ２と同じ手順に基づいて求める。なお、区分の変更は、具体的には、区分管理情報２７を編集することによって実現される。
【００４５】
その後、区分管理部２５は、ホスト２００に区分の拡張が完成した旨を報告し（ステップＳ１３）、区分を拡張する動作が終了する。
【００４６】
以上述べたように、本発明の第１の実施形態によれば、区分管理部２５は、ＮＡＮＤメモリ１の物理記憶領域を、ウェアレベリングが実行されない区分とウェアレベリングが実行される１以上の区分とを含む複数の区分に分割し、ホスト２００からの領域拡張要求に応じて区分の拡張を行う、ように構成したので、ホスト２００に、書き込み回数の増加速度が他の区分よりも小さい区分を提供することができる。ホスト２００がこの書き込み回数の増加速度が他の区分よりも小さい区分にシステムデータを置き、他の区分にユーザデータを置くことで、システムデータの信頼性をユーザデータよりも高めることができる。また、ホスト２００は、領域拡張要求を発行することにより区分を拡張することができるので、システムデータのアップデート等によりシステムデータを格納している区分が不足してきた場合に当該区分を拡張することができる。ユーザは、ユーザデータが損失した時点でＳＳＤ１００が寿命に到達しつつあることを認識して、損失していない他のユーザデータを救出することができる。即ち、コンピュータシステムの起動が出来なくなるような故障の発生を低減する運用を可能とすることができる。
【００４７】
また、領域拡張要求は、変更対象の領域と拡張対象の区分を特定する区分情報としての優先度の指定とを含み、区分管理部２５は、領域拡張要求に指定された変更対象の領域の区分を前記指定された優先度により特定される区分に変更する。これにより、ホスト２００は、システムデータ用の区分が不足したときに、当該区分を自由に拡張せしめることが可能となる。
【００４８】
（第２の実施形態）
第１の実施形態によれば、ホストはＳＳＤに変更対象の範囲を指定して領域拡張要求を行う必要があった。第２の実施形態によれば、ホストはＳＳＤに範囲を指定しないで領域拡張要求を送信することができる。
【００４９】
第２の実施形態のコンピュータシステムの構成要素は、区分管理部を除いて第１の実施形態と同じである。したがって、第２の実施形態の区分管理部に符号２８を付して第１の実施形態と区別するとともに、第１の実施形態と同一の構成要素には同一の符号を付して、重複する説明を省略する。
【００５０】
第２の実施形態によれば、ホスト２００は、拡張対象の区分を特定する優先度とサイズとを指定した領域拡張要求をＳＳＤ１００に発行することができる。この領域拡張要求を受信すると、区分管理部２８は、指定された優先度よりも下位の優先度の区分の空き領域から指定サイズの領域を取得して、取得した領域を指定された優先度の区分に加えることができる。
【００５１】
図８は、第２の実施形態のＳＳＤ１００の、区分を拡張する際の動作を説明する図である。まず、区分管理部２８は、ホスト２００から領域変更要求を受信する（ステップＳ２１）。領域変更要求は、第２の実施形態によれば、サイズの指定および拡張対象の区分に対応する優先度の指定を含む。
【００５２】
続いて、区分管理部２８は、拡張対象の区分３１よりも優先度が低い区分３１（正確には、拡張対象の区分３１よりも優先度が低い区分３１の論理記憶領域３２）に、指定サイズの空き領域があるか否かを判定する（ステップＳ２２）。なお、ここでは、区分管理部２８は、拡張対象の区分３１よりも優先度が低い区分３１を、優先度が高い方から順番に検索する。拡張対象の区分よりも優先度が低い区分に指定サイズの空き領域がある場合には（ステップＳ２２、Ｙｅｓ）、区分管理部２８は、当該空き領域および冗長領域３３のうちの一部を拡張対象の区分に変更する（ステップＳ２３）。
【００５３】
ステップＳ２３の処理により、指定サイズの空き領域だけサイズが減少する区分が発生する。区分管理部２８は、サイズが減少した区分（区分Ａと呼ぶ）よりもさらに優先度が低い区分（区分Ｂと呼ぶ）に、指定サイズの空き領域があるか否かを判定する（ステップＳ２４）。なお、ステップＳ２４においても、区分管理部２８は、優先度が高い順番で区分３１を検索する。区分Ｂに指定サイズの空き領域がある場合には（ステップＳ２４、Ｙｅｓ）、区分管理部２８は、当該空き領域および冗長領域のうちの一部の区分を区分Ｂから区分Ａに変更する（ステップＳ２５）。区分管理部２８は、ステップＳ２５の処理の後、ステップＳ２４の処理を再び実行する。
【００５４】
区分Ｂに指定サイズの空き領域がない場合には（ステップＳ２４、Ｎｏ）、区分管理部２８は、区分が変更された領域を示す範囲と、当該範囲の変更後の区分とをホスト２００に報告し（ステップＳ２６）、区分を拡張する動作が終了となる。また、拡張対象の区分よりも優先度が低い区分に指定サイズの空き領域がない場合には（ステップＳ２２、Ｎｏ）、区分管理部２８は、空き領域が不足している旨をホスト２００に通知して（ステップＳ２７）、区分を拡張する動作が終了となる。
【００５５】
このように、本発明の第２の実施形態によれば、複数の区分の夫々は、ホスト２００から予め優先度が設定され、領域拡張要求は、拡張サイズと拡張対象の区分を特定する優先度の指定とを含み、区分管理部２８は、指定された優先度により特定される区分よりも優先度が低い区分から空き領域を検索し、検索された空き領域の区分を拡張対象の区分に変更する。これにより、ホスト２００は区分の拡張分をどの区分から取得するかを指定することなく区分の拡張を行うことができるようになる。
【００５６】
なお、ホスト２００が、第１区分３１ａにシステムデータを置き、第２区分３１ｂに書き換え頻度が比較的小さいユーザデータを置き、第３区分３１ｃに書き換え頻度が比較的大きいユーザデータを置く場合、書き換え回数の増加速度は、第１区分３１ａ、第２区分３１ｂ、第３区分３１ｃの順番で大きくなる。即ち、区分毎の信頼性は、第１区分３１ａ、第２区分３１ｂ、第３区分３１ｃの順番で低下する。区分管理部２８が上記のように空き領域を出来るだけ優先度が高い区分から検索することによって、出来るだけ信頼性が高い領域を拡張対象の区分に変更することができる。
【００５７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５８】
１  ＮＡＮＤメモリ、２  コントローラ、３  メモリチップ、２１  演算装置、２２  記憶装置、２３  リード／ライト部、２４  ウェアレベリング部、２５  区分管理部、２６  論物変換テーブル、２７  区分管理情報、２８  区分管理部、３０  メモリセルアレイ、３１，３１ａ〜３１ｃ  区分、３２，３２ａ〜３２ｃ  論理記憶領域、３３，３３ａ〜３３ｃ  冗長領域、１００  ＳＳＤ、２００  ホスト。
【図１】
2014056408.tif 000003
【図２】
2014056408.tif 000004
【図３】
2014056408.tif 000005
【図４】
2014056408.tif 000006
【図５】
2014056408.tif 000007
【図６】
2014056408.tif 000008
【図７】
2014056408.tif 000009
【図８】
2014056408.tif 000010