(57)【要約】      （修正有）【課題】論物変換テーブル量を削減し、不揮発性メモリの利用効率を向上することが可能なメモリコントローラを提供する。【解決手段】コマンドをホストから受信したとき、第１モードおよび第２モードのどちらで管理されているかを判定Ｓ１２０し、マッピングデータが第１のモードで管理され、かつマッピングデータを第１の圧縮率より小さく圧縮できるときに、マッピングデータを第１の管理サイズから第２の管理サイズに変更し、マッピングデータを圧縮する。【選択図】図３
2018160059.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性の第１メモリおよび前記第１メモリより高速アクセスが可能な第２のメモリを制御するメモリコントローラにおいて、
前記第２のメモリは、ホストによって指定される論理アドレスと前記第１メモリの物理アドレスとの対応関係を示すマッピングデータが含まれる第１テーブルをストアし、前記マッピングデータは、第１の管理単位毎に、第１モードおよび第２モードの何れか一方で管理され、前記第１モードでは、前記マッピングデータが第１の管理サイズで管理され、前記第２モードでは、前記マッピングデータが第２の管理サイズで管理されかつ圧縮され、前記第１の管理サイズは前記第２の管理サイズより大きい、前記第１の管理単位は前記第１の管理サイズ以上である、
第１のコマンドおよび第１データを前記ホストから受信したとき、前記第１のコマンドによって指定される前記論理アドレスである第１のアドレスに対応する前記第１の管理単位の第１のマッピングデータが、前記第１テーブルにおいて前記第１モードおよび前記第２モードのどちらで管理されているかを判定し、
前記第１のマッピングデータが前記第１のモードで管理されている場合であって、前記第１のマッピングデータを第１の圧縮率より小さく圧縮できるときに、前記第１のコマンドに対応する更新が行われた第１のマッピングデータを前記第２の管理サイズに変更し、変更後の前記第１のマッピングデータを圧縮して前記第１テーブルにストアし、
前記第１データを前記第１メモリに書き込む
ように構成される制御部を備えるメモリコントローラ。
【請求項２】
前記制御部は、
前記第１のマッピングデータが第２モードで管理される場合は、前記第１テーブルにおいて圧縮されている前記第１のマッピングデータを伸張し、前記伸張された第１のマッピングデータを前記第１の圧縮率より小さく圧縮できないときに、前記第１のコマンドに対応する更新が行われた前記第１のマッピングデータを前記第１の管理サイズに変更し、前記変更後の第１のマッピングデータを前記第１テーブルにストアする
ように構成される請求項１に記載のメモリコントローラ。
【請求項３】
前記第２のメモリは、前記第１の管理単位と、前記第１モードおよび前記第２モードのどちらであるかを示すモード情報との対応を示すモード管理情報をストアし、
前記制御部は、
前記モード管理情報に基づいて、前記第１のマッピングデータが、前記第１テーブルにおいて前記第１モードおよび前記第２モードのどちらで管理されているかを判定する
請求項２に記載のメモリコントローラ。
【請求項４】
前記制御部は、
前記第１のマッピングデータが前記第１のモードで管理されている場合であって、前記第１のマッピングデータが第１の圧縮率より小さく圧縮できないときは、前記第１の管理サイズで管理されている第１のマッピングデータを前記第１のコマンドに対応して更新し、前記更新後の第１のマッピングデータを前記第１テーブルにストアし、
前記第１のマッピングデータが第２モードで管理される場合であって、前記伸張された第１のマッピングデータが前記第１の圧縮率より小さく圧縮できるときは、前記第２の管理サイズで管理される第１のマッピングデータを前記第１のコマンドに対応して更新し、前記更新後の第１のマッピングデータを前記第１テーブルにストアする
ように構成される請求項３に記載のメモリコントローラ。
【請求項５】
前記制御部は、
前記第１のマッピングデータが前記第１のモードで管理されている場合に、前記第１のマッピングデータの有効データ率に関する第１の条件が成立しているか否かを判定し、
前記条件が成立しているときに、前記第１のマッピングデータを前記第１の圧縮率より小さく圧縮できるか否かを判定する
ように構成される請求項１に記載のメモリコントローラ。
【請求項６】
前記制御部は、
前記第１のマッピングデータが前記第１のモードで管理されている場合であって、前記第１データを前記第２の管理サイズで前記第１のメモリに書き込むときに、前記第１の条件が成立しているか否かを判定する
請求項５に記載のメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、不揮発性メモリを制御するメモリコントローラに関する。
【背景技術】
【０００２】
SSD(Solid State Drive)などのメモリシステムにおいては、ホストによって指定される論理アドレスとストレージ上の物理アドレス間のマッピングを、論物変換テーブルを用いて管理する。論物変換テーブルは、リード/ライト処理の高速化を目的として、DRAM(Dynamic Random Access Memory)等の揮発性メモリに一部または全てをキャッシュして利用されることが多い。SSDの容量に比例してキャッシュされる論物変換テーブルの容量が大きくなるため、容量の削減が望まれる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−３１１８８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一つの実施形態は、論物変換テーブル量を削減し、不揮発性メモリの利用効率を向上することが可能なメモリコントローラを提供することを目的とする。
【課題を解決するための手段】
【０００５】
一つの実施形態によれば、メモリコントローラは、不揮発性の第１メモリおよび前記第１メモリより高速アクセスが可能な第２のメモリを制御する。前記第２のメモリは、ホストによって指定される論理アドレスと前記第１メモリの物理アドレスとの対応関係を示すマッピングデータが含まれる第１テーブルをストアする。前記マッピングデータは、第１の管理単位毎に、第１モードおよび第２モードの何れか一方で管理される。前記第１モードでは、前記マッピングデータが第１の管理サイズで管理されている。前記第２モードでは、前記マッピングデータが第２の管理サイズで管理されかつ圧縮されている。前記第１の管理サイズは前記第２の管理サイズより大きい。前記第１の管理単位は前記第１の管理サイズ以上である。前記メモリコントローラは、制御部を備える。前記制御部は、第１のコマンドおよび第１データをホストから受信したとき、前記第１のコマンドによって指定される前記論理アドレスである第１のアドレスに対応する前記第１の管理単位の前記マッピングデータである第１のマッピングデータが、前記第１テーブルにおいて前記第１モードおよび前記第２モードのどちらで管理されているかを判定する。前記制御部は、前記第１のマッピングデータが前記第１のモードで管理されている場合であって、前記第１のマッピングデータを第１の圧縮率より小さく圧縮できるときに、前記第１のコマンドに対応する更新が行われた第１のマッピングデータを前記第２の管理サイズに変更し、変更後の前記第１のマッピングデータを圧縮して前記第１テーブルにストアする。前記制御部は、前記第１データを前記第１メモリに書き込む。
【図面の簡単な説明】
【０００６】
【図１】図１は、実施形態のメモリシステムの構成例を示すブロック図である。
【図２】図２は、モード管理情報の一例を示す概念図である。
【図３】図３は、ライト要求を受信したときのメモリシステムの動作手順例を示すフローチャートである。
【図４】図４は、ラージクラスタモードからノーマルクラスタモードに変換されるときの論理クラスタアドレス(LCA)の一例を示す図である。
【図５】図５は、ラージクラスタモードからノーマルクラスタモードに変換されるときの物理クラスタアドレス(PCA)の一例を示す図である。
【図６】図６は、ラージクラスタモードのときのLBAセグメントの内部に配置されるデータの一例を示す図である。
【図７】図７は、ノーマルクラスタモードのときのLBAセグメントの内部に配置されるデータの一例を示す図である。
【図８】図８は、ノーマルクラスタモードからラージクラスタモードに変換されるときの論理クラスタアドレス(LCA)の一例を示す図である。
【図９】図９は、ノーマルクラスタモードからラージクラスタモードに変換されるときの物理クラスタアドレス(PCA)の一例を示す図である。
【図１０】図１０は、リード要求を受信したときのメモリシステムの動作手順例を示すフローチャートである。
【発明を実施するための形態】
【０００７】
以下に図面を参照して、実施の形態にかかるメモリコントローラを詳細に説明する。なお、これらの実施の形態により本発明が限定されるものではない。
【０００８】
（実施の形態）
図１は実施形態のメモリシステム１００の構成例を示すブロック図である。メモリシステム１００は、ホスト装置(以下、ホストと略す)１と接続可能であり、ホスト１の外部記憶装置として機能する。ホスト１は、例えば、パーソナルコンピュータなどの情報処理装置、携帯電話、撮像装置であってもよいし、タブレットコンピュータやスマートフォンなどの携帯端末であってもよいし、ゲーム機器であってもよいし、カーナビゲーションシステムなどの車載端末であってもよい。
【０００９】
メモリシステム１００は、例えば、ＳＳＤである。メモリシステム１００は、メモリコントローラ２と、不揮発性メモリとしてのＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤと略す）１０と、揮発性メモリとしてのＤＲＡＭ５とを備える。不揮発性メモリとしては、ＮＡＮＤ型フラッシュメモリに限らず、３次元構造フラッシュメモリ、ＲｅＲＡＭ（Resistance Random Access Memory））、ＦｅＲＡＭ（Ferroelectric Random Access Memory）などであってもよい。
【００１０】
ＮＡＮＤ１０は、メモリセルアレイを有する１以上のメモリチップを有する。メモリセルアレイは、マトリクス状に配列された複数のメモリセル（以下、セルという）を有する。メモリセルアレイは、データ消去の単位である物理ブロックを複数個有する。各物理ブロックは、複数の物理セクタによって構成されている。前記メモリセルアレイの構成に特に制約はなく、２次元構造のメモリセルアレイであってもよく、３次元構造のメモリセルアレイであってもよく、さらにはこれら以外であってもよい。同一の物理ブロックに含まれる複数のセルのデータは、一括して消去される。データの読み出し及び書き込みは、物理セクタ単位で行われる。１つの物理ブロックに所属する１つの物理セクタは、１つのワード線に接続された複数のセルを含む。
【００１１】
各セルは多値記憶が可能である。セルをシングルレベルセル（ＳＬＣ）モードで動作させる場合は、１物理セクタが１ページに対応する。セルをマルチレベルセル（ＭＬＣ）モードで動作させる場合は、１物理セクタが２ページに対応する。セルをトリプルレベルセル（ＴＬＣ）モードで動作させる場合は、１物理セクタが３ページに対応する。セルをQuadruple Level Cell(ＱＬＣ)モードで動作させる場合は、１物理セクタが４ページに対応する。
【００１２】
ホスト１から送信されるユーザデータと、前記ユーザデータを管理するための管理情報などがＮＡＮＤ１０にストアされる。起動時あるいはホスト１から受信したリード/ライト要求の実行時などに、ＮＡＮＤ１０にストアされている前記管理情報の一部あるいは全てが、ＤＲＡＭ５にロード（キャッシュ）される。ＤＲＡＭ５にキャッシュされた前記管理情報は、ＮＡＮＤ１０でバックアップされる。
【００１３】
ＤＲＡＭ５は、ＮＡＮＤ１０よりも高速アクセスが可能な揮発性の半導体メモリである。ＤＲＡＭ５の代わりにＳＲＡＭ（Static Random Access Memory）を用いても良い。前記管理情報は、アドレス変換テーブルとしての論理物理変換テーブル（L2P変換テーブル）６、モード管理情報としてのLBAセグメントモード情報７、ブロック管理情報（図示せず）などを含む。前記L2P変換テーブル６には、ホスト１によって指定される論理アドレスと、ＮＡＮＤ１０の物理アドレスとの対応関係を示すマッピングデータが登録されている。前記論理アドレスとしては、例えばLBA（Logical Block Addressing）が用いられる。物理アドレスは、データが記憶されているＮＡＮＤ１０上の記憶位置を示している。LBAセグメントモード情報７には、各LBAセグメントがラージクラスタモードで管理されているかノーマルクラスタモードで管理されているかを識別するためのクラスタモード情報がストアされている。別言すれば、LBAセグメントモード情報７によって、論理アドレスの管理単位としてLBAセグメントと、前記クラスタモード情報との対応関係が管理されている。LBAセグメントはＮ個のラージクラスタに対応するサイズを有する。Ｎは１以上の整数である。クラスタとは、ＮＡＮＤ１０の論理空間と物理空間とのアドレッシング単位である。
【００１４】
ブロック管理情報は、例えば以下の情報を含む。
・ブロック単位の消去回数（erase count）
・ブロックがアクティブブロックかフリーブロックかを区別する情報
・バッドブロックのブロックアドレス
【００１５】
アクティブブロックは、有効（valid）データが記録されている。フリーブロックは、有効データが記録されていない。フリーブロックは、データを消去した後、消去済みブロックとして再利用可能である。有効データとは、論理アドレスと対応付けられているデータであり、無効データとは論理アドレスが対応付けられていないデータである。消去済みブロックは、データが書き込まれると、アクティブブロックとなる。バッドブロックは、様々な要因で正常に動作せず、使用不可となっている。
【００１６】
メモリコントローラ２は、ホスト１からのライト要求に従ってＮＡＮＤ１０への書込みを制御する。また、ホスト１からのリード要求に従ってＮＡＮＤ１０からの読み出しを制御する。メモリコントローラ２は、Ｈｏｓｔ Ｉ／Ｆ（ホストインタフェース）２０、ＮＡＮＤ Ｉ／Ｆ３０、ＥＣＣ部４０、制御部５０、圧縮部６０、伸張部７０を備える。Ｈｏｓｔ Ｉ／Ｆ（ホストインタフェース）２０、ＮＡＮＤ Ｉ／Ｆ３０、ＥＣＣ部４０、制御部５０、圧縮部６０、伸張部７０、およびＤＲＡＭ５は、内部バス７５で接続されている。
【００１７】
ＨｏｓｔＩ／Ｆ２０は、ホスト１との間のインタフェース規格に従った処理を実行し、ホスト１から受信した命令、ユーザデータなどを内部バス７５に出力する。また、ＨｏｓｔＩ／Ｆ２０は、ＮＡＮＤ１０から読み出されたユーザデータ、制御部５０からの応答などをホスト１へ送信する。なお、本実施の形態では、ホスト１からの書込み要求によりＮＡＮＤ１０へ書き込まれるデータをユーザデータと呼ぶ。
【００１８】
ＮＡＮＤ Ｉ／Ｆ３０は、制御部５０の指示に基づいてライトデータをＮＡＮＤ１０へ書込む処理を行う。また、ＮＡＮＤ Ｉ／Ｆ３０は、制御部５０の指示に基づいてＮＡＮＤ１０からの読み出し処理を行う。
【００１９】
メモリシステム１００は、ホスト１からライト要求およびリード要求を受信する。前記ライト要求は、ライトコマンド、ライトアドレス、ライトデータを含む。前記リード要求は、リードコマンド、リードアドレスを含む。ホストＩ／Ｆ２０は、ライト要求を受信した場合、ライトコマンド、ライトアドレス、ライトデータを制御部５０に入力する。制御部５０は、L2P変換テーブル６を使って論理アドレスであるライトアドレスをＮＡＮＤ１０の物理アドレスに変換し、変換された物理アドレスにライトデータをライトする。ホストＩ／Ｆ２０は、リード要求を受信した場合、リードコマンド、リードアドレスを制御部５０に入力する。制御部５０は、L2P変換テーブル６を使って論理アドレスであるリードアドレスをＮＡＮＤ１０の物理アドレスに変換し、変換された物理アドレスからデータをリードする。制御部５０は、リードされたデータをホストＩ／Ｆ２０を介してホスト１へ送信する。
【００２０】
ＥＣＣ((Error Correction Code)部４０は、ライトデータに対して、誤り訂正の符号化処理を実施しパリティを生成する。ＥＣＣ部４０は、前記ライトデータおよび前記パリティを含む符号語をＮＡＮＤ Ｉ／Ｆ３０に入力する。ＥＣＣ部４０で行われる符号化の方式としてはどのような方式を用いてもよい。例えば、ＲＳ（Reed Solomon）符号化、ＢＣＨ(Bose Chaudhuri Hocquenghem)符号化、ＬＤＰＣ（Low Density Parity Check）符号化等を用いることができる。ＥＣＣ部４０は、ＮＡＮＤ Ｉ／Ｆ３０から入力されるリードデータに対し、誤り訂正の復号化処理を実行し、復号されたデータをホストＩ／Ｆ２０へ入力する。
【００２１】
制御部５０は、メモリシステム１００の各構成要素を統括的に制御する。制御部５０は、ＤＲＡＭ５にロードされたファームウェア（図示せず）を実行する１または複数のＣＰＵ（プロセッサ）および周辺回路によってその機能が実現される。制御部５０は、ホスト１からホストＩ／Ｆ２０経由でコマンドを受けた場合に、そのコマンドに従った制御を行う。例えば、制御部５０は、ホストＩ／Ｆ２０からライトコマンドを受信した場合、ライトデータを符号化することをＥＣＣ部４０へ指示する。また、制御部５０は、ＥＣＣ部４０により生成された符号語（データおよびパリティ）をＮＡＮＤ１０への書き込むことをＮＡＮＤＩ／Ｆ３０へ指示する。この書き込みに伴い、ＤＲＡＭ５で管理される、L2P変換テーブル６を含む管理情報を更新する。また、制御部５０は、ホストＩ／Ｆ２０からリードコマンドを受信した場合、L2P変換テーブル６に基づいてＮＡＮＤ１０からの符号語（ユーザデータおよびパリティ）の読出しを、ＮＡＮＤＩ／Ｆ３０へ指示する。また、制御部５０は、リードされた符号語を復号することをＥＣＣ部４０へ指示する。また、制御部５０は、復号されたユーザデータをホスト１へ送信することをホストＩ／Ｆ２０に指示する。
【００２２】
圧縮部６０は、制御部５０にしたがって、L2P変換テーブル６のマッピングデータを可逆圧縮（lossless compression）する。圧縮部６０は、前記LBAセグメント単位に、マッピングデータを圧縮する。圧縮対象のLBAセグメントは、ノーマルクラスタモードが適用されるLBAセグメントである。前記圧縮の手法は任意であるが、可逆圧縮可能な手法が採用される。圧縮部６０において可逆圧縮が使用されているため、データが圧縮されることを完全に補償できない。
【００２３】
伸張部７０は、圧縮部６０での圧縮処理と逆方向のデータ変換を行って、圧縮されたL2P変換テーブルを伸張し、元のL2P変換テーブルに復元する。
【００２４】
メモリシステムのストレージの容量に比例して、キャッシュされるL2P変換テーブル６の容量が大きくなる。キャッシュされるL2P変換テーブルを削減する手法の一つがラージクラスタである。クラスタとは、ＮＡＮＤ１０の論理空間と物理空間とのアドレッシング単位である。すなわち、L2P変換テーブル６は、クラスタ単位にアドレッシングがマッピングされている。クラスタは、例えば、ＮＡＮＤ１０のページをＭ個に分割した管理単位である。Ｍは１以上の整数である。ラージクラスタによってアドレッシング単位を大きくすることで、L2P変換テーブル６のエントリー数を削減し、メモリ量を削減することができる。
【００２５】
例えば、ラージクラスタを使用することによってアドレッシング単位をノーマルクラスタの２倍にすると、L2P変換テーブル６のエントリー数が1/2となり、メモリ量も1/2に削減される。しかし、ラージクラスタを使用すると、アドレッシング単位が大きくなり、ＮＡＮＤ１０のページ利用効率が低下し、WAF(Write Amplification Factor)が増加してしまい、ＳＳＤ１００の寿命低下、性能低下の原因となる。
【００２６】
そこで、本実施形態では、L2P変換テーブル６の各エントリーを、ラージクラスタモードおよびノーマルクラスタモードを含む２つのクラスタモードによって管理する。以下、ラージクラスタモードをLCモードと略し、ノーマルクラスタモードをNCモードと略す。また、本実施形態では、前記NCモードで管理されるマッピングデータを圧縮し、圧縮されたマッピングデータをL2P変換テーブル６にストアする。ＮＡＮＤ１０の論理アドレス空間は、LBAセグメント単位に、クラスタモードが管理される。すなわち、LBAセグメントモード情報７には、各LBAセグメントがLCモードで管理されているかNCモードで管理されているかを識別するためのクラスタモード情報がストアされている。このように本実施形態では、ラージクラスタの使用によってL2P変換テーブル量の削減を実現でき、さらにノーマルクラスタの使用および圧縮によってＮＡＮＤ１０のページ利用効率の向上を実現する。
【００２７】
図２は、LBAセグメントモード情報７を概念的に示す図である。図２の場合は、論理アドレス空間（LBA空間）は、所定サイズのLBAセグメントによってＫ個に分割されている。１つのLBAセグメントは、Ｎ個のラージクラスタに対応するサイズを有する。あるいは、LBAセグメントのサイズは、L2P変換テーブル６の複数個のエントリーに対応するサイズであるとも言える。LBAセグメントモード情報は、各LBAセグメントがLCモードで管理されているかNCモードで管理されているかを識別するためのクラスタモード情報を含む。図２の例では、LBAセグメント番号#0のクラスタモードは、LCモードである。番号#2のクラスタモードは、NCモードである。メモリシステム１００のデフォルト状態においては、全てのLBAセグメント#0〜#K-1がLCモードに設定される。以下の説明では、ＮＡＮＤ１０の１ページを16KBとし、LCモードでのクラスタサイズを8KBとし、NCモードでのクラスタサイズを4KBとする。LBAのアドレッシング単位は、512Bとする。なお、ラージクラスタおよびノーマルクラスタのサイズを他のサイズとしてもよく、ラージクラスタのサイズを、ノーマルクラスタのサイズの２倍以外としてもよい。
【００２８】
図３は、ライト要求を受信したときのメモリシステム１００の動作手順を示すフローチャートである。以下、図３にしたがってメモリシステム１００の動作例を説明する。ライトコマンド、ライトLBA、およびライトデータを含むライト要求をホスト１から受信すると(S100)、ホストＩ／Ｆ２０は、このライト要求を、制御部５０へ入力する。制御部５０は、取得したライト要求を、次のように、ラージクラスタサイズ単位（8KB）および／またはノーマルクラスタサイズ単位（4KB）に正規化する。
(a)ライト要求のデータサイズがラージクラスタサイズを超える場合は、受信したライト要求を、１または複数のラージクラスタサイズのライト要求と、１または複数のノーマルクラスタサイズのライト要求に分割する。
(b) ライト要求のデータサイズがノーマルクラスタサイズ未満の場合は、ライトデータはノーマルクラスタサイズのデータと見做して処理される。すなわち、ノーマルクラスタサイズの物理クラスタ上のライトLBAに対応する位置にライトデータがストアされる。
(c) ライト要求のデータサイズがノーマルクラスタサイズより大きく、かつラージクラスタサイズ未満である場合、ライトデータは２つのノーマルクラスタサイズのデータと見做して処理される。
【００２９】
制御部５０は、前記正規化が終了すると、ライトLBAが属するLBAセグメントのクラスタモード情報をLBAセグメントモード情報７から取得し(S110)、LBAセグメントがLCモードおよびNCモードの何れであるのかを判定する(S120)。
【００３０】
（LBAセグメントがLCモードの場合）
LBAセグメントがLCモードの場合(S120 Yes)、制御部５０は、式(1)に従って、ライトLBAを8KB単位のLCA論理クラスタアドレスLCAに変換する(S130)。「>>」は右シフトのビット演算子である。式(1)は、LBAを４ビット右シフトすること(LBAを16で除算すること)を示している。
LCA=LBA>>4    …式(1)
【００３１】
L2P変換テーブル６は、ＮＡＮＤ１０の論理クラスタアドレスLCAと物理クラスタアドレスPCAとの対応をマッピングしている。LBAはLCAへ変換され、さらにPCAに変換される。つぎに、制御部５０は、ライト要求が8KBか4KBのどちらであるかを判定する(S140)。
【００３２】
ライト要求が8KBである場合(S140 Yes)、制御部５０は、ライトデータの書き込み先の物理クラスタアドレスPCAを決定し、ライトデータを符号化することをＥＣＣ部４０へ指示する。また、制御部５０は、ＥＣＣ部４０により生成された符号語（データおよびパリティ）を、前記決定された物理クラスタアドレスPCAへ書き込むことをＮＡＮＤＩ／Ｆ３０へ指示する。これにより、ライトデータはパリティを付加された後、ＮＡＮＤ１０上の消去済みフリーブロック内の或るページである前記物理クラスタアドレスPCAに書き込まれる(S150)。制御部５０は、式(1)で変換された論理クラスタアドレスLCAと、書き込み先の物理クラスタアドレスPCAによってL2P変換テーブル６を更新する(S160)。
【００３３】
ライト要求が4KBである場合(S140 No)、制御部５０は、ライト要求の対象であるLBAセグメントに対して、LCモードからNCモードへの遷移条件が成立するか否かを判定する(S170)。この遷移条件としては、例えばLBAセグメント中の有効データ率を採用する。有効データ率は、LBAセグメント内の有効データの割合である。この有効データ率が所定の閾値より少ないときに、前記遷移条件が成立すると判定される。
【００３４】
前記遷移条件が成立しない場合(S170 No)、制御部５０は、LCモードを継続する。すなわち、制御部５０は、ライトデータの書き込み先の物理クラスタアドレスPCAを決定し、ライトデータを符号化することをＥＣＣ部４０へ指示する。また、制御部５０は、ＥＣＣ部４０により生成された符号語を、前記決定された物理クラスタアドレスPCAへ書き込むことをＮＡＮＤＩ／Ｆ３０へ指示する。これにより、ライトデータはパリティを付加された後、ＮＡＮＤ１０上の消去済みフリーブロック内の或るページである前記物理クラスタアドレスPCAに書き込まれる(S150)。制御部５０は、式(1)で変換された論理クラスタアドレスLCAと、書き込み先の物理クラスタアドレスPCAによってL2P変換テーブル６を更新する(S160)。
【００３５】
なお、クラスタサイズが8KBの場合における4KBデータの書き込み位置は、例えば以下の式(2)に従うものとする。書き込み位置=0の場合は、書き込み位置は8KBクラスタの前半領域とし、書き込み位置=1の場合は、書き込み位置は8KBクラスタの後半領域とする。「&」はＡＮＤ演算子である。式(2)は、LBAを３ビット右シフトし、その下位１ビットを取ることを示している。
書き込み位置= (LBA>>3)&1    …式(2)
【００３６】
前記遷移条件が成立する場合(S170 Yes)、制御部５０は、L2P変換テーブル６から当該LBAセグメントについてのL2P変換データ(マッピングデータ)を取得する(S180)。制御部５０は、ライトデータの書き込み先の物理クラスタアドレスPCAを決定し、式(1)で変換された論理クラスタアドレスLCAと、決定された物理クラスタアドレスPCAによって、取得されたL2P変換データを変更することで、今回のライト要求をL2P変換データに反映する。制御部５０は、ライト要求が反映されたL2P変換データに対しクラスタサイズ変換処理を実行する。なお、今回のライト要求が反映される前のL2P変換データに対しクラスタサイズ変換処理を実行してもよい。このクラスタサイズ変換処理は、例えば図４に示すように、8KB単位となっている論理クラスタアドレスLCAを、4KB単位の２つのLCA0およびLCA1に変換することを含む。図４において、「0x」は16進表記であることを示している。LCAの変換に関しては、8KB単位のLCAに２を乗じ、０と１を足すことで２つの4KB単位のLCAを得る。物理クラスタアドレスPCAについても、図５に示すように、8KB単位から4KB単位への変換を実行する。変換方法は、LCAの変換方法と同じである。このようにして、LCAおよびPCAを8KB単位から4KB単位へ変換することによって、当該LBAセグメントについての4KB単位のL2P変換データを作成する(S190)。
【００３７】
つぎに、制御部５０は、得られた4KB単位のL2P変換データを圧縮することを圧縮部６０に指示する。圧縮部６０は圧縮処理を実行後(S200)、圧縮率を制御部５０に通知する。制御部５０は、圧縮率を閾値Ｃｄと比較する。閾値Ｃｄは、例えば５０％である。閾値Ｃｄとして、他の任意の値を採用しても良い。圧縮率が閾値Ｃｄ以上である場合(S210 No)、制御部５０は、当該LBAセグメントについては、LCモードを継続すると判定する(S220)。この後、制御部５０は、ステップS150,S160を実行し、パリティを付加されたライトデータをＮＡＮＤ１０に書き込み、L2P変換テーブル６を更新する。
【００３８】
圧縮率が閾値Ｃｄ未満である場合(S210 Yes)、制御部５０は、当該LBAセグメントについては、クラスタモードをLCモードからNCモードに変更すると決定する(S230)。制御部５０は、ライトデータを符号化することをＥＣＣ部４０へ指示する。また、制御部５０は、ＥＣＣ部４０により生成された符号語を、前記決定された物理クラスタアドレスPCAへ書き込むことをＮＡＮＤＩ／Ｆ３０へ指示する。これにより、ライトデータはパリティを付加された後、ＮＡＮＤ１０上の消去済みフリーブロック内の或るページである前記物理クラスタアドレスPCAに書き込まれる(S240)。制御部５０は、圧縮かつモード変更が行われたL2P変換データによって、L2P変換テーブル６を更新する(S250)。さらに、制御部５０は、LBAセグメントモード情報７を更新し、当該LBAセグメントのクラスタモード情報をLCモードからNCモードに変更する(S260)。
【００３９】
なお、LCモードからNCモードへの遷移の際、LCモード時に利用効率の悪いラージクラスタにストアされたデータを集めて、アドレスが連続するノーマルクラスタに配置することによって、利用効率の改善に努めてもよい。この際にも、変更後のL2P変換データを圧縮したデータサイズが前記閾値Ｃｄ未満である場合のみ変更を適用する。
【００４０】
図６は、LCモードで管理される或るLBAセグメントに対応した各データの、ＮＡＮＤ１０上での配置例を示すものである。１ページ(=16KB)は、8KBである２つのラージクラスタを含む。8KBデータＤaはLCサイズと一致しているためクラスタの利用率は100%であるが、4KBデータＤb,ＤcはLCサイズよりも小さいため、クラスタの利用率は50%に低下する可能性がある。図４の例では、データＤb,Ｄcについては、式(2)より求まるクラスタ上の位置が等しかった場合を想定している。この場合、データＤbとデータＤcは同一のクラスタにストアできず、ＮＡＮＤ１０のページの利用効率が低下している。
【００４１】
（LBAセグメントがNCモードの場合）
LBAセグメントがNCモードの場合(S120 No)、制御部５０は、式(3)に従って、ライトLBAを4KB単位のLCA論理クラスタアドレスLCAに変換する(S300)。式(3)は、LBAを３ビット右シフトすること(LBAを8で除算すること)を示している。
LCA=LBA>>3    …式(3)
【００４２】
ライトLBAが属するLBAセグメントはLCA単位が4KBとなっており、且つ当該LBAセグメントに対応するL2P変換データがL2P変換テーブル６において圧縮されている。制御部５０は、当該LBAセグメントに対応する、読み出したL2P変換データを伸張部７０を用いて伸張する(S310)。
【００４３】
図７は、NCモードで管理される或るLBAセグメントに対応した各データの、ＮＡＮＤ１０上での配置例を示すものである。１ページ(=16KB)は、4KBである４つのノーマルクラスタを含む。NCモードの場合には、4KBデータの場合にもクラスタ利用率は100%であり、NANDページの利用効率が向上している。図７の場合、8KBデータＤaは、２つのクラスタに配置され、4KBデータＤb,Ｄcは、それぞれ１つのクラスタに配置されている。NCモードの場合、書き込みデータサイズに関係ないLCAが4KB単位となっているので、LCモードと比較するとL2P変換テーブル６のエントリー数は２倍となる。そのため、圧縮部６０を使用してLBAセグメントに対応するL2P変換データを圧縮したサイズが閾値Ｃｄを下回るときにのみ、このNCモードで動作することを許容している。よって、NCモードのL2P変換データは、LCモードと同一以下のデータ量とすることができ、かつLCAのアドレッシング単位を1/2に小さくすることができる。
【００４４】
L2P変換データが伸張されると(S310)、制御部５０は、式(3)で変換された論理クラスタアドレスLCAと、ライトデータの書き込み先に決定された物理クラスタアドレスPCAによって伸長済みL2P変換データを変更して、今回のライト要求をL2P変換データに反映する(S320)。
【００４５】
つぎに、制御部５０は、L2P変換データを圧縮することを圧縮部６０に指示する。圧縮部６０は圧縮処理を実行後(S330)、圧縮率を制御部５０に通知する。制御部５０は、圧縮率を閾値Ｃｄと比較する。圧縮率が閾値Ｃｄ未満である場合(S340 Yes)、制御部５０は、当該LBAセグメントについては、NCモードを継続すると判定する。この後、制御部５０は、ライトデータを符号化することをＥＣＣ部４０へ指示する。また、制御部５０は、ＥＣＣ部４０により生成された符号語を、前記決定された物理クラスタアドレスPCAへ書き込むことをＮＡＮＤＩ／Ｆ３０へ指示する。これにより、ライトデータはパリティを付加された後、ＮＡＮＤ１０上の消去済みフリーブロック内の或るページである前記物理クラスタアドレスPCAに書き込まれる(S350)。制御部５０は、圧縮されたL2P変換データによって、L2P変換テーブル６を更新する(S360)。
【００４６】
圧縮率が閾値Ｃｄ以上である場合(S340 No)、制御部５０は、当該LBAセグメントについては、クラスタモードをNCモードからLCモードに遷移すると判定する。制御部５０は、今回のライト要求が反映された、伸張済みのL2P変換データをLCモード対応に変更した後、変更後のL2P変換データによってL2P変換テーブル６を更新する(S370)。さらに、制御部５０はLBAセグメントモード情報７を更新し、当該LBAセグメントのクラスタモード情報をLCモードに変更する(S380)。また、制御部５０は、ＥＣＣ部４０およびＮＡＮＤＩ／Ｆ３０を制御し、パリティが付加されたライトデータを、ＮＡＮＤ１０上の消去済みフリーブロック内の或るページである前記物理クラスタアドレスPCAに書き込む(S390)。なお、ＮＡＮＤ１０へのデータ書き込み後、L2P変換テーブル６およびLBAセグメントモード情報７の更新を行ってもよい。
【００４７】
S370で行われる、NCモードからLCモードへの変更は次のように行われる。4KB単位となっている論理クラスタアドレスLCAを、図８に示すように、8KB単位のLCAおよびクラスタ上の位置へ変換する。クラスタ上の位置=0の場合は、クラスタ上の位置は8KBクラスタの前半領域とし、クラスタ上の位置=1の場合は、クラスタ上の位置は8KBクラスタの後半領域とする。LCAの変換は4KB単位のLCAを2で割ることによって行われる。クラスタ上の位置は、4KB単位LCAの最下位ビットを使用する。物理クラスタアドレスPCAについても、図９０に示すように、4KB単位から8KB単位への変換を実行する。変換方法は、LCAの変換方法と同じである。
【００４８】
次に、8KB単位に変換されたPCAが等しく且つ8KBクラスタ上の位置が等しい、4KB単位LCAのペアを探索する。この条件に合致するLCAペアは、4KB単位から8KB単位のアドレッシングへ変更された場合に、同一クラスタへ格納することができない。このため、前記ペアの少なくとも片方について、書き込み先を変更する。この変更は、NAND I/F３０を通じてＮＡＮＤ１０上のデータを実際に移動することによって行う。
【００４９】
図１０は、リード要求を受信したときのメモリシステム１００の動作手順を示すフローチャートである。以下、図１０にしたがってメモリシステム１００の動作例を説明する。リードコマンドおよびリードLBAを含むリード要求をホスト１から受信すると(S500)、ホストＩ／Ｆ２０は、このリード要求を制御部５０に入力する。
【００５０】
制御部５０は、リード要求を受信すると、つぎのような処理を実行する。
(a)ノーマルクラスタサイズ(4KB)未満のリード要求を受信した場合は、4KBのリード要求と見做して、4KBのリード要求が行われた場合と同様にリード処理が行われる。リードデータが得られた後、リード要求で指定されたリードLBSに対応するサイズのリードデータが抽出され、抽出されたリードデータのみがホスト１に返信される。
(b)ノーマルクラスタサイズより大きく、ラージクラスタサイズ(8KB)より小さいリード要求を受信した場合は、リードLBAが属する4KBのリード要求が２つ行われたと見做して処理が行われる。4KBのリードデータが２個得られた後、リード要求で指定されたリードLBSに対応するサイズのリードデータが抽出され、抽出されたリードデータのみがホスト１に返信される。
(c)ラージクラスタサイズを超えるリード要求を受信した場合は、受信したリード要求を、１または複数のラージクラスタサイズのリード要求と、１または複数のノーマルクラスタサイズのリード要求に分割する。
【００５１】
制御部５０は、LBAセグメントモード情報７に基づき、リードLBAが属するLBAセグメントのクラスタモードを取得し(S510)、リードLBAが属するLBAセグメントがLCモードおよびNCモードの何れであるのかを判定する(S520)。
【００５２】
（LBAセグメントがLCモードの場合）
LBAセグメントがLCモードの場合(S520 Yes)、制御部５０は、前記式(1)に従って、ライトLBAを8KB単位の論理クラスタアドレスLCAに変換する(S530)。制御部５０は、得られたLCAを使用してL2P変換テーブル６より読み出し先の物理クラスタアドレスPCAを取得する(S540)。制御部５０は、物理クラスタアドレスPCAからデータを読み出すことをＮＡＮＤＩ／Ｆ３０へ指示する。ＮＡＮＤＩ／Ｆ３０は、ＮＡＮＤ１０からデータをリードし(S550)、リードされたデータをＥＣＣ部４０に入力する。ＥＣＣ部４０はリードデータに対し誤り訂正の復号化処理を行う。制御部５０は、復号化されたデータに対し、前述したデータ抽出処理を適宜行った後、リードデータをホストＩ／Ｆ２０を介してホスト１へ送信する(S560)。
【００５３】
（LBAセグメントがNCモードの場合）
LBAセグメントがNCモードの場合(S520 No)、制御部５０は、前記式(3)に従って、ライトLBAを4KB単位の論理クラスタアドレスLCAに変換する(S570)。制御部５０は、論理クラスタアドレスLCAが所属するLBAセグメントに対応する、圧縮されたL2P変換データをL2P変換テーブル６から読み出し、読み出されたL2P変換データを伸長器７０を用いて伸長する(S580)。制御部５０は、前記式(3)で得られたLCAおよび伸張されたL2P変換データを使用して、読み出し先の物理クラスタアドレスPCAを取得する(S590)。制御部５０は、物理クラスタアドレスPCAからデータを読み出すことをＮＡＮＤＩ／Ｆ３０へ指示する。ＮＡＮＤＩ／Ｆ３０は、ＮＡＮＤ１０からデータをリードし(S550)、リードされたデータをＥＣＣ部４０に入力する。ＥＣＣ部４０はリードデータに対し誤り訂正の復号化処理を行う。制御部５０は、復号化されたデータに対し、前述したデータ抽出処理を適宜行った後、リードデータをホストＩ／Ｆ２０を介してホスト１へ送信する(S560)。
【００５４】
以上説明したようにこの実施形態では、ラージクラスタの使用によってL2P変換テーブル量の削減を実現でき、さらにノーマルクラスタの使用および圧縮によってＮＡＮＤ１０のページ利用効率を向上することが可能となり、メモリシステムの長寿命化および性能向上が可能となる。
【００５５】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５６】
１  ホスト装置、２  メモリコントローラ、６  Ｌ２Ｐ変換テーブル、７  LBAセグメントモード情報、２０  ホストインタフェース、３０  ＮＡＮＤインタフェース、４０  ＥＣＣ部、５０  制御部、６０  圧縮部、７０  伸張部、１００  メモリシステム。
【図１】
2018160059.tif 000003
【図２】
2018160059.tif 000004
【図３】
2018160059.tif 000005
【図４】
2018160059.tif 000006
【図５】
2018160059.tif 000007
【図６】
2018160059.tif 000008
【図７】
2018160059.tif 000009
【図８】
2018160059.tif 000010
【図９】
2018160059.tif 000011
【図１０】
2018160059.tif 000012