特開2019-212103(P2019-212103A)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 東芝メモリ株式会社の特許一覧

<>
  • 特開2019212103-メモリシステム 図000003
  • 特開2019212103-メモリシステム 図000004
  • 特開2019212103-メモリシステム 図000005
  • 特開2019212103-メモリシステム 図000006
  • 特開2019212103-メモリシステム 図000007
  • 特開2019212103-メモリシステム 図000008
  • 特開2019212103-メモリシステム 図000009
  • 特開2019212103-メモリシステム 図000010
  • 特開2019212103-メモリシステム 図000011
  • 特開2019212103-メモリシステム 図000012
  • 特開2019212103-メモリシステム 図000013
  • 特開2019212103-メモリシステム 図000014
  • 特開2019212103-メモリシステム 図000015
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2019-212103(P2019-212103A)
(43)【公開日】2019年12月12日
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
   G06F 12/06 20060101AFI20191115BHJP
   G06F 12/02 20060101ALI20191115BHJP
   G06F 12/00 20060101ALI20191115BHJP
【FI】
   G06F12/06 515Q
   G06F12/06 525A
   G06F12/02 570A
   G06F12/00 597U
【審査請求】未請求
【請求項の数】16
【出願形態】OL
【全頁数】23
(21)【出願番号】特願2018-108591(P2018-108591)
(22)【出願日】2018年6月6日
(71)【出願人】
【識別番号】318010018
【氏名又は名称】東芝メモリ株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】特許業務法人スズエ国際特許事務所
(72)【発明者】
【氏名】菅野 伸一
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AB26
5B160CA12
(57)【要約】
【課題】低コストで、並列にアクセスされるブロックの集合を制御することができるメモリシステムを実現する。
【解決手段】メモリシステムは、異なる不揮発性メモリチップにそれぞれ属する複数のブロックを各々が含む複数の並列アクセス単位を制御する。メモリシステムは、複数の並列アクセス単位の各々に含まれる不良ブロックの数が第1の数以下になるように規定された複数のアドレス変換ルールを示す情報を格納しており、各アドレス変換ルールは、各不揮発性メモリチップに送出されるブロックアドレスを別のブロックアドレスに変換するための数学的規則を示す。メモリシステム内のアドレス変換回路は、複数のアドレス変換ルールの各々の数学的規則に基づいて、各不揮発性メモリチップに送出されるブロックアドレスの各々を別のブロックアドレスに変換するアドレス変換動作を実行する。
【選択図】図10
【特許請求の範囲】
【請求項1】
メモリシステムであって、
各々が複数のブロックを含む複数の不揮発性メモリチップと、
前記複数の不揮発性メモリチップに電気的に接続され、異なる不揮発性メモリチップにそれぞれ属する複数のブロックを各々が含む複数の並列アクセス単位を制御するように構成されたコントローラとを具備し、
前記メモリシステムは、前記複数の並列アクセス単位の各々に含まれる不良ブロックの数が第1の数以下になるように規定された、前記複数の不揮発性メモリチップに対応する複数のアドレス変換ルールを示す情報を格納しており、前記複数のアドレス変換ルールの各々は、各不揮発性メモリチップに送出されるブロックアドレスを別のブロックアドレスに変換するための数学的規則を示し、
前記コントローラは、前記複数のアドレス変換ルールの各々の数学的規則に基づいて、各不揮発性メモリチップに送出されるブロックアドレスの各々を別のブロックアドレスに変換するアドレス変換動作を実行するように構成されたアドレス変換回路を具備する、メモリシステム。
【請求項2】
前記第1の数は、前記複数の不揮発性メモリチップにそれぞれ含まれる不良ブロックの数の平均値以下の整数に設定されている請求項1記載のメモリシステム。
【請求項3】
前記アドレス変換回路は、各不揮発性メモリチップに送出されるブロックアドレスの各々に同じアドレス変換動作を施すことによって、各不揮発性メモリチップに送出されるブロックアドレスの各々を別のブロックアドレスに変換するように構成されている請求項1記載のメモリシステム。
【請求項4】
前記アドレス変換回路は前記複数の不揮発性メモリチップに対応する複数のアドレス変換回路部を含み、前記複数のアドレス変換回路部の各々は、対応するアドレス変換ルールの数学的規則に基づいて、一つの不揮発性メモリチップに送出されるブロックアドレスの各々を別のブロックアドレスに変換するアドレス変換動作を実行するように構成されている請求項1記載のメモリシステム。
【請求項5】
前記複数のアドレス変換ルールの各々は、各不揮発性メモリチップに送出されるブロックアドレスに任意の整数を加える加算、前記ブロックアドレスから任意の整数を減ずる減算、各不揮発性メモリチップに対応する最大ブロックアドレスから前記ブロックアドレスを減ずる演算、または前記ブロックアドレスを表す複数のビットの一部または全てを反転する演算のうちの任意の一つまたは任意の2以上の組み合わせを示す請求項1記載のメモリシステム。
【請求項6】
前記情報は前記メモリシステムに永続的に格納されている請求項1記載のメモリシステム。
【請求項7】
前記情報は前記複数の不揮発性メモリチップの少なくとも一つに、または前記メモリシステムに含まれる他の不揮発性メモリのいずれかに永続的に格納されている請求項1記載のメモリシステム。
【請求項8】
各並列アクセス単位に含まれる複数のブロックそれぞれのブロックアドレスは、各並列アクセス単位を識別するアドレスから数学的規則に基づいて定められる請求項1記載のメモリシステム。
【請求項9】
メモリシステムであって、
各々が複数のプレーンを含む複数の不揮発性メモリチップと、
前記複数の不揮発性メモリチップに電気的に接続され、異なるプレーンにそれぞれ属する複数のブロックを各々が含む複数の並列アクセス単位を制御するように構成されたコントローラとを具備し、
前記メモリシステムは、前記複数の並列アクセス単位の各々に含まれる不良ブロックの数が第1の数以下になるように規定された、前記複数の不揮発性メモリチップに含まれる複数のプレーンに対応する複数のアドレス変換ルールを示す情報を格納しており、前記複数のアドレス変換ルールの各々は、各プレーンに送出されるブロックアドレスを別のブロックアドレスに変換するための数学的規則を示し、
前記コントローラは、前記複数のアドレス変換ルールの各々の数学的規則に基づいて、各プレーンに送出されるブロックアドレスの各々を別のブロックアドレスに変換するアドレス変換動作を実行するように構成されたアドレス変換回路を具備する、メモリシステム。
【請求項10】
前記第1の数は、前記複数のプレーンにそれぞれ含まれる不良ブロックの数の平均値以下の整数に設定されている請求項9記載のメモリシステム。
【請求項11】
前記アドレス変換回路は、各プレーンに送出されるブロックアドレスの各々に同じアドレス変換動作を施すことによって、各プレーンに送出されるブロックアドレスの各々を別のブロックアドレスに変換するように構成されている請求項9記載のメモリシステム。
【請求項12】
前記アドレス変換回路は前記複数のプレーンに対応する複数のアドレス変換回路部を含み、前記複数のアドレス変換回路部の各々は、対応するアドレス変換ルールの数学的規則に基づいて、一つのプレーンに送出されるブロックアドレスの各々を別のブロックアドレスに変換するアドレス変換動作を実行するように構成されている請求項9記載のメモリシステム。
【請求項13】
前記複数のアドレス変換ルールの各々は、各プレーンに送出されるブロックアドレスに任意の整数を加える加算、前記ブロックアドレスから任意の整数を減ずる減算、各プレーンに対応する最大ブロックアドレスから前記ブロックアドレスを減ずる演算、または前記ブロックアドレスを表す複数のビットの一部または全てを反転する演算のうちの任意の一つまたは任意の2以上の組み合わせを示す請求項9記載のメモリシステム。
【請求項14】
前記情報は前記メモリシステムに永続的に格納されている請求項9記載のメモリシステム。
【請求項15】
前記情報は前記複数の不揮発性メモリチップの少なくとも一つに、または前記メモリシステムに含まれる他の不揮発性メモリのいずれかに永続的に格納されている請求項9記載のメモリシステム。
【請求項16】
各並列アクセス単位に含まれる複数のブロックそれぞれのブロックアドレスは、各並列アクセス単位を識別するアドレスから数学的規則に基づいて定められる請求項9記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、不揮発性メモリを制御する技術に関する。
【背景技術】
【0002】
近年、不揮発性メモリを備えるメモリシステムが広く普及している。このようなメモリシステムの一つとして、NANDフラッシュ技術ベースのソリッドステートドライブ(SSD)が知られている。
SSDのようなメモリシステムにおいては、リード/ライト性能を改善するために、複数のブロック(物理ブロック)を並列にアクセスする技術が使用される場合がある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許出願公開第2015/0339223号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、通常、メモリシステムに搭載される個々の不揮発性メモリチップには、利用できない不良ブロックが存在する場合がある。並列にアクセスされるブロックの集合を構築するためには、このような不良ブロックの存在を考慮することが必要となる。
本発明が解決しようとする課題は、低コストで、並列にアクセスされるブロックの集合を制御することができるメモリシステムを提供することである。
【課題を解決するための手段】
【0005】
実施形態によれば、メモリシステムは、各々が複数のブロックを含む複数の不揮発性メモリチップと、前記複数の不揮発性メモリチップに電気的に接続され、異なる不揮発性メモリチップにそれぞれ属する複数のブロックを各々が含む複数の並列アクセス単位を制御するように構成されたコントローラとを具備する。前記メモリシステムは、前記複数の並列アクセス単位の各々に含まれる不良ブロックの数が第1の数以下になるように規定された、前記複数の不揮発性メモリチップに対応する複数のアドレス変換ルールを示す情報を格納しており、前記複数のアドレス変換ルールの各々は、各不揮発性メモリチップに送出されるブロックアドレスを別のブロックアドレスに変換するための数学的規則を示す。前記コントローラは、前記複数のアドレス変換ルールの各々の数学的規則に基づいて、各不揮発性メモリチップに送出されるブロックアドレスの各々を別のブロックアドレスに変換するアドレス変換動作を実行するように構成されたアドレス変換回路を具備する。
【図面の簡単な説明】
【0006】
図1】実施形態に係るメモリシステム(フラッシュストレージデバイス)を含む情報処理システムの構成例を示すブロック図。
図2】同実施形態のメモリシステムに含まれる不揮発性メモリの構成例を示すブロック図。
図3】同実施形態のメモリシステムにおいて使用される複数のチャンネルと複数のNAND型フラッシュメモリチップとの関係を示すブロック図。
図4】同実施形態のメモリシステムにおいて使用される複数のチャンネルと各々が複数のプレーンを含む複数のNAND型フラッシュメモリチップとの関係を示すブロック図。
図5】同実施形態のメモリシステムにおいて使用される、ある並列アクセス単位の構成例を示す図。
図6】同実施形態のメモリシステムにおいて使用される、ある並列アクセス単位の別の構成例を示す図。
図7】複数のNAND型フラッシュメモリチップに存在する不良ブロックのパターンの例を説明するための図。
図8】同実施形態のメモリシステムによって実行されるブロック再配置動作を説明するための図。
図9】同実施形態のメモリシステムによって実行されるアドレス変換動作の例を説明するための図。
図10】同実施形態のメモリシステムに含まれる複数のアドレス変換回路と複数のNAND型フラッシュメモリチップとの関係の例を示すブロック図。
図11】同実施形態のメモリシステムに含まれる複数のアドレス変換回路と複数のプレーンとの関係の例を示すブロック図。
図12】同実施形態のメモリシステムに含まれる複数のアドレス変換回路と複数のNAND型フラッシュメモリチップとの関係の別の例を示すブロック図。
図13】同実施形態のメモリシステムに含まれるアドレス変換回路の構成例を示すブロック図。
【発明を実施するための形態】
【0007】
以下、図面を参照して、実施形態を説明する。
まず、図1を参照して、一実施形態に係るメモリシステムを含む情報処理システム1の構成を説明する。
このメモリシステムは、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。このメモリシステムは、NANDフラッシュ技術ベースのフラッシュストレージデバイス3として実現されている。
【0008】
情報処理システム1は、ホスト(ホストデバイス)2と、フラッシュストレージデバイス3とを含む。ホスト2は、フラッシュストレージデバイス3をアクセスする情報処理装置(コンピューティングデバイス)である。ホスト2は、サーバコンピュータであってもよいし、パーソナルコンピュータであってもよい。
【0009】
ホスト2がサーバコンピュータとして実現されているケースにおいては、ホスト2は、ネットワーク50を介して複数のエンドユーザ端末(クライアント)51に接続されてもよい。ホスト2は、これらエンドユーザ端末61に対して様々なサービスを提供することができる。
【0010】
ホスト(サーバ)2によって提供可能なサービスの例には、(1)システム稼働プラットフォームを各クライアント(各エンドユーザ端末61)に提供するプラットホーム・アズ・ア・サービス(PaaS)、(2)仮想サーバのようなインフラストラクチャを各クライアント(各エンドユーザ端末61)に提供するインフラストラクチャ・アズ・ア・サービス(IaaS)、等がある。
【0011】
複数の仮想マシンが、このホスト(サーバ)2として機能する物理サーバ上で実行されてもよい。ホスト(サーバ)2上で走るこれら仮想マシンの各々は、対応する幾つかのクライアント(エンドユーザ端末61)に各種サービスを提供するように構成された仮想サーバとして機能することができる。
【0012】
フラッシュストレージデバイス3は、ホスト2として機能する情報処理装置の外部ストレージとして使用され得る。フラッシュストレージデバイス3は、この情報処理装置に内蔵されてもよいし、この情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
【0013】
ホスト2とフラッシュストレージデバイス3とを相互接続するためのインタフェースとしては、SCSI、Serial Attached SCSI(SAS)、ATA、Serial ATA(SATA)、PCI Express(PCIe)(登録商標)、Ethernet(登録商標)、Fibre channel、NVM Express(NVMe)(登録商標)等を使用し得る。
【0014】
フラッシュストレージデバイス3は、コントローラ4および不揮発性メモリ(NAND型フラッシュメモリ)5を備える。SSD3は、ランダムアクセスメモリ、例えば、DRAM6も備えていてもよい。
NAND型フラッシュメモリ5は、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイを含む。NAND型フラッシュメモリ5は、2次元構造のNAND型フラッシュメモリであってもよいし、3次元構造のNAND型フラッシュメモリであってもよい。
【0015】
NAND型フラッシュメモリ5のメモリセルアレイは、図2に示されているように、複数のブロックBLK0〜BLKm−1を含む。ブロックBLK0〜BLKm−1の各々は複数のページ(ここではページP0〜Pn−1)を含む。ブロックBLK0〜BLKm−1の各々は、消去動作の単位として機能する。ブロックは、「物理ブロック」、または「消去ブロック」と称されることもある。ページP0〜Pn−1の各々は、同一ワード線に接続された複数のメモリセルを含む。ページP0〜Pn−1は、データ書き込み動作およびデータ読み込み動作の単位である。
【0016】
本実施形態では、コントローラ4は、ブロック(物理ブロック)の集合を各々が含む複数の並列アクセス単位を制御する。並列アクセス単位は、「スーパーブロック」、または「論理ブロック」とも称される。各並列アクセス単位は、異なるNAND型フラッシュメモリチップにそれぞれ属する複数のブロック(物理ブロック)を含むブロックグループである。コントローラ4は、ある並列アクセス単位に含まれる複数のブロックに対するデータ書き込み動作およびデータ読み出し動作を並列に実行することができる。コントローラ4は、並列アクセス単位の単位で消去動作を実行する。したがって、並列アクセス単位は、実際上、消去動作の単位として機能する。
【0017】
図1に示されているように、NAND型フラッシュメモリ5に格納されるデータは、ユーザデータと、管理データとに大別される。ユーザデータはホスト2によってその書き込みが要求されたデータである。管理データは、コントローラ4の動作を制御するための様々な管理情報を含む。管理情報の例には、論理物理アドレス変換テーブルとして機能するルックアップテーブル(LUT)32、および並列アクセス単位にそれぞれ含まれる不良ブロックの数が均一になるように各チップ内のブロック間でブロックアドレスを入れ替えるためのルールセット33が含まれてもよい。
【0018】
コントローラ4は、Toggleインタフェース、オープンNANDフラッシュインタフェース(ONFI)のようなNANDインタフェース13を介して、不揮発性メモリであるNAND型フラッシュメモリ5に電気的に接続されている。コントローラ4は、NAND型フラッシュメモリ5を制御するように構成されたメモリコントローラ(制御回路)である。
【0019】
NAND型フラッシュメモリ5は、図3に示すように、複数のNAND型フラッシュメモリチップ(NAND型フラッシュメモリダイ)を含んでいてもよい。個々のNAND型フラッシュメモリチップは独立して動作可能である。このため、NAND型フラッシュメモリチップは、並列動作可能な単位として機能する。図3においては、NANDインタフェース13に16個のチャンネルCh.1〜Ch.16が接続されており、16個のチャンネルCh.1〜Ch.16の各々に2つのNAND型フラッシュメモリチップが接続されている場合が例示されている。この場合、チャンネルCh.1〜Ch.16に接続された16個のNAND型フラッシュメモリチップ#0〜#15がバンク#0として編成されてもよく、またチャンネルCh.1〜Ch.16に接続された残りの16個のNAND型フラッシュメモリチップ#16〜#31がバンク#1として編成されてもよい。バンクは、複数のメモリモジュールをバンクインタリーブによって並列動作させるための単位として機能する。図3の構成例においては、16チャンネルと、2つのバンクを使用したバンクインタリーブとによって、最大32個のNAND型フラッシュメモリチップを並列動作させることができる。
【0020】
本実施形態では、コントローラ4は、上述したように、各々が複数のブロックBLKから構成される複数の並列アクセス単位(以下、スーパーブロックと称する)を制御する。
一つのスーパーブロックは、これに限定されないが、NAND型フラッシュメモリチップ#0〜#31から一つずつ選択される計32個のブロックBLKを含んでいてもよい。図3においては、ハッチングによって示されるブロック(物理ブロック)それぞれは、ある一つのスーパーブロックに含まれるブロックを表している。
【0021】
なお、NAND型フラッシュメモリチップ#0〜#31の各々はマルチ・プレーン構成を有していてもよい。各プレーンは、複数のブロック(物理ブロック)を含む。例えば、NAND型フラッシュメモリチップ#0〜#31の各々が、図4に示されているように、2つのプレーン(PLANE0、PLANE1)を含むマルチ・プレーン構成を有する場合には、一つのスーパーブロックは、NAND型フラッシュメモリチップ#0〜#31に対応する64個のプレーンから一つずつ選択される計64個のブロックBLKを含んでいてもよい。図4においては、ハッチングによって示されるブロック(物理ブロック)それぞれは、ある一つのスーパーブロックに含まれるブロックを表している。
【0022】
図5には、32個のブロック(ここでは、NAND型フラッシュメモリチップ#0内のブロックBLK1、NAND型フラッシュメモリチップ#1内のブロックBLK2、NAND型フラッシュメモリチップ#2内のブロックBLK7、NAND型フラッシュメモリチップ#3内のブロックBLK4、NAND型フラッシュメモリチップ#4内のブロックBLK6、…NAND型フラッシュメモリチップ#31内のブロックBLK2)を含む一つのスーパーブロック(SB)が例示されている。
【0023】
このスーパーブロック(SB)へのデータの書き込みにおいては、コントローラ4は、NAND型フラッシュメモリチップ#0内のブロックBLK1のページ0、NAND型フラッシュメモリチップ#1内のブロックBLK2のページ0、NAND型フラッシュメモリチップ#2内のブロックBLK7のページ0、NAND型フラッシュメモリチップ#3内のブロックBLK4のページ0、NAND型フラッシュメモリチップ#4内のブロックBLK6のページ0、…、NAND型フラッシュメモリチップ#31内のブロックBLK2のページ0、NAND型フラッシュメモリチップ#0内のブロックBLK1のページ1、NAND型フラッシュメモリチップ#1内のブロックBLK2のページ1、…という順序でデータを書き込んでもよい。これにより、最大32ページへのデータ書き込みを並列に実行することができる。また、このスーパーブロック(SB)からのデータの読み出しにおいても、最大で32ページからのデータの読み出しを並列に実行することができる。
【0024】
図6には、64個のブロック(ここでは、NAND型フラッシュメモリチップ#0内のプレーン0のブロックBLK1、NAND型フラッシュメモリチップ#0内のプレーン1のブロックBLK0、NAND型フラッシュメモリチップ#1内のプレーン0のブロックBLK2、NAND型フラッシュメモリチップ#1内のプレーン1のブロックBLK3、NAND型フラッシュメモリチップ#2内のプレーン0のブロックBLK7、NAND型フラッシュメモリチップ#2内のプレーン1のブロックBLK6、NAND型フラッシュメモリチップ#3内のプレーン0のブロックBLK4、NAND型フラッシュメモリチップ#3内のプレーン1のブロックBLK4、NAND型フラッシュメモリチップ#4内のプレーン0のブロックBLK6、NAND型フラッシュメモリチップ#4内のプレーン1のブロックBLK2、…NAND型フラッシュメモリチップ#31内のプレーン0のブロックBLK2、NAND型フラッシュメモリチップ#31内のプレーン1のブロックBLK2)を含む一つのスーパーブロック(SB)が例示されている。
【0025】
次に、図1のコントローラ4の構成について説明する。
コントローラ4は、複数のチャンネル(例えば16個のチャンネル)を介して複数のNAND型フラッシュメモリチップに電気的に接続される。コントローラ4は、異なるNAND型フラッシュメモリチップ(または異なるプレーン)にそれぞれ属する複数のブロック(物理ブロック)を各々が含む複数のスーパーブロックを制御する。
【0026】
コントローラ4は、NAND型フラッシュメモリ5のデータ管理およびブロック管理を実行するように構成されたフラッシュトランスレーション層(FTL)として機能してもよい。このFTLによって実行されるデータ管理には、(1)論理アドレスそれぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、(2)NAND型フラッシュメモリ5の制約(例えば、ページ単位のリード/ライト動作とブロック(スーパーブロック)単位の消去動作)を隠蔽するための処理、等が含まれる。論理アドレスは、フラッシュストレージデバイス3の論理アドレス空間内の位置をアドレス指定するためにホスト2によって使用されるアドレスである。この論理アドレスとしては、LBA(logical block address(addressing))が使用され得る。
【0027】
論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングの管理は、論理物理アドレス変換テーブルとして機能するルックアップテーブル(LUT)32を用いて実行される。コントローラ4は、ルックアップテーブル(LUT)32を使用して、論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングを所定の管理サイズ単位で管理する。ある論理アドレスに対応する物理アドレスは、この論理アドレスのデータが書き込まれているNAND型フラッシュメモリ5内の最新の物理記憶位置を示す。アドレス変換テーブル(LUT32)は、フラッシュストレージデバイス3の電源オン時にNAND型フラッシュメモリ5からDRAM6にロードされてもよい。
【0028】
NAND型フラッシュメモリ5においては、ページへのデータ書き込みは1消去サイクル当たり1回のみ可能である。つまり、データが既に書き込まれているブロック内の領域に新たなデータを直接上書きすることができない。このため、既に書き込まれているデータを更新する場合には、コントローラ4はそのブロック内または別ブロックの未書き込み領域に新たなデータを書き込み、そして以前のデータを無効データとして扱う。換言すれば、コントローラ4は、ある論理アドレスに対応する更新データを、この論理アドレスに対応する以前のデータが格納されている物理記憶位置ではなく、別の物理記憶位置に書き込む。そして、コントローラ4は、LUT32を更新してこの論理アドレスをこの別の物理記憶位置に関連付けると共に、以前のデータを無効化する。
【0029】
ブロック管理には、不良ブロック(バッドブロック)の管理と、ウェアレベリングと、ガベージコレクション(GC)等が含まれる。不良ブロックはデータを正常にリード/ライトすることができない物理ブロックを意味する。ウェアレベリングは、ブロックそれぞれの消耗を均一化するための動作である。GCは、有効データと無効データとが混在する幾つかのブロック(GCソーススーパーブロック)内の有効データをフリーブロック(GCデスティネーションスーパーブロック)にコピーする。そして、コントローラ4は、ルックアップテーブル(LUT)32を更新して、コピーされた有効データの論理アドレスそれぞれにコピー先物理アドレスをマッピングする。有効データが別のブロック(GCデスティネーションスーパーブロック)にコピーされることによって無効データのみになったブロック(スーパーブロック)はフリーブロック(フリースーパーブロック)として解放される。これによって、このスーパーブロックはこのスーパーブロックに属するブロックの集合に対する消去動作が実行された後に再利用することが可能となる。
【0030】
ここで、有効データとは、ある論理アドレスに関連付けられている最新のデータを意味する。例えば、LUT32から参照されているデータ(すなわち論理アドレスから最新のデータとして紐付けられているデータ)は有効データである。有効データは、後にホスト2からリードされる可能性がある。無効データとは、もはやどの論理アドレスにも関連付けられていないデータを意味する。どの論理アドレスにも関連付けられていないデータは、ホスト2からリードされる可能性が無い。
【0031】
図1に示されているように、コントローラ4は、ホストインタフェース11、CPU12、NANDインタフェース13、DRAMインタフェース14、およびハードウェアロジック15、等を含む。これらホストインタフェース11、CPU12、NANDインタフェース13、DRAMインタフェース14、およびハードウェアロジック15は、バス10を介して相互接続される。
【0032】
ホストインタフェース11は、ホスト2との通信を実行するように構成されたホストインタフェース回路である。ホストインタフェース11は、ホスト2から様々な要求(コマンド)を受信する。これら要求(コマンド)には、ライト要求(ライトコマンド)、リード要求(リードコマンド)、アンマップ/トリム要求(アンマップ/トリムコマンド)、他の様々な要求(コマンド)が含まれる。
【0033】
CPU12は、ホストインタフェース11、NANDインタフェース13、DRAMインタフェース14、ハードウェアロジック15を制御するように構成されたプロセッサである。CPU12は、フラッシュストレージデバイス3の電源オンに応答してNAND型フラッシュメモリ5または図示しないROMから制御プログラム(ファームウェア)をDRAM6にロードし、そしてこのファームウェアを実行することによって様々な処理を行う。なお、ファームウェアはコントローラ4内の図示しないSRAM上にロードされてもよい。このCPU12は、ホスト2からの様々なコマンドを処理するためのコマンド処理等を実行することができる。CPU12の動作は、CPU12によって実行される上述のファームウェアによって制御される。なお、コマンド処理の一部または全部は、コントローラ4内の専用ハードウェアによって実行してもよい。
【0034】
CPU12は、ライト制御部21およびリード制御部22として機能することができる。これらライト制御部21およびリード制御部22の各々の一部または全部も、コントローラ4内の専用ハードウェアによって実現されてもよい。
ブロック(スーパーブロック)の状態は、有効データを格納しているアクティブブロックと、有効データを格納していないフリーブロックとに大別される。アクティブブロックである各スーパーブロックは、アクティブブロックプールと称されるリストによって管理される。一方、フリーブロックである各スーパーブロックは、フリーブロックプールと称されるリストによって管理される。
【0035】
ライト制御部21は、フリーブロックプールから選択された一つのフリーブロック(フリースーパーブロック)を、ホスト2から受信されるデータが書き込まれるべき書き込み先スーパーブロックとして割り当てる。そして、ライト制御部21は、ホスト2から受信されるライトデータを、書き込み先スーパーブロックに含まれる複数のブロックに並列に書き込むための処理を実行する。書き込み先スーパーブロック全体がデータで満たされた場合、この書き込み先スーパーブロックはアクティブブロックプールによって管理される。また、フリーブロックプールから新たな書き込み先スーパーブロックが割り当てられる。
【0036】
リード制御部22は、ホスト2から受信されるリードコマンドによって指定された論理アドレスに対応するデータを、このデータが格納されているスーパーブロック内の物理記憶位置から読み出す。
NANDインタフェース13は、CPU12の制御の下、NAND型フラッシュメモリ5を制御するように構成されたメモリ制御回路である。DRAMインタフェース14は、CPU12の制御の下、DRAM6を制御するように構成されたDRAM制御回路である。DRAM6の記憶領域の一部は、ライトデータを一時的に格納するためのライトバッファ(WB)31として使用されてもよい。また、DRAM6の記憶領域の他の一部は、NAND型フラッシュメモリ5からロードされるLUT32およびルールセット33を格納するために使用されてもよい。
【0037】
このルールセット33は、複数のスーパーブロックの各々に含まれる不良ブロックの数がある閾値以下になるように規定された複数のアドレス変換ルール(ルール#1、ルール#2、…、ルール#n)を含む。これらアドレス変換ルール(ルール#1、ルール#2、…、ルール#n)は、フラッシュストレージデバイス3に含まれる複数のNAND型フラッシュメモリチップにそれぞれ対応する。あるいは、各NAND型フラッシュメモリチップがマルチ・プレーン構成を有するケースにおいては、ルールセット33は、プレーンの総数に等しい数のアドレス変換ルール(ルール#1、ルール#2、…、ルール#n)を含んでもよい。この場合、これらアドレス変換ルール(ルール#1、ルール#2、…、ルール#n)は、これら複数のプレーンにそれぞれ対応する。つまり、ルールセット33は、複数のNAND型フラッシュメモリチップ(または複数のプレーン)にそれぞれ対応する複数のアドレス変換ルールを示す情報である。
【0038】
例えば、フラッシュストレージデバイス3の工場出荷前に、フラッシュストレージデバイス3に搭載される複数のNAND型フラッシュメモリチップの各々に存在する不良ブロックのパターンに基づいて、スーパーブロック間で不良ブロックの数を均一にするためアドレス変換ルールがチップ毎(またはプレーン毎)に決定される。そして、これら決定されたアドレス変換ルールを含むルールセット33は、フラッシュストレージデバイス3に永続的に格納される。例えば、ルールセット33は、複数のNAND型フラッシュメモリチップの少なくとも一つに永続的に格納されてもよい。あるいは、フラッシュストレージデバイス3がNAND型フラッシュメモリチップ以外の不揮発性メモリ(例えば、NOR型フラッシュメモリチップ)をさらに含む構成である場合においては、ルールセット33は、NAND型フラッシュメモリチップ以外のこの不揮発性メモリに永続的に格納されてもよい。
【0039】
一つのアドレス変換ルールは、このアドレス変換ルールに対応する一つの不揮発性メモリチップ(または一つのプレーン)に送出されるブロックアドレスを、このチップ(またはこのプレーン)の別のブロックアドレスに変換するための数学的規則を示す。ブロックアドレスは、あるNAND型フラッシュメモリチップ(または、あるプレーン)内の特定のブロック(物理ブロック)を一意に識別するためのアドレスであり、ブロック番号と称されることもある。使用可能な数学的規則の例は、各NAND型フラッシュメモリチップ(または各プレーン)に送出されるブロックアドレスに任意の整数を加える加算、ブロックアドレスから任意の整数を減ずる減算、各NAND型フラッシュメモリチップ(または各プレーン)に対応する最大ブロックアドレスからブロックアドレスを減ずる演算、またはブロックアドレスを表す複数のビットの一部または全てを反転する演算、等を含む。各アドレス変換ルールは、これら加算、減算、および2つの演算のうちの任意の一つまたは任意の2以上の組み合わせを示してもよい。
【0040】
ハードウェアロジック15は、アドレス変換回路151を含む。アドレス変換回路151は、ルールセット33に含まれるアドレス変換ルール(ルール#1、ルール#2、…、ルール#n)の各々の数学的規則に基づいて、各NAND型フラッシュメモリチップ(または各プレーン)に送出されるブロックアドレスの各々を、各NAND型フラッシュメモリチップ(または各プレーン)の別のブロックアドレスに変換するアドレス変換動作を実行するように構成された演算回路である。アドレス変換回路151は、複数のNAND型フラッシュメモリチップ(または複数のプレーン)にそれぞれに対応する複数のアドレス変換動作を時分割で実行してもよい。あるいは、アドレス変換回路151は複数のNAND型フラッシュメモリチップ(または複数のプレーン)にそれぞれに対応する複数のアドレス変換回路部を含んでいてもよい。この場合には、複数のNAND型フラッシュメモリチップ(または複数のプレーン)にそれぞれに対応する複数のアドレス変換動作を同時に実行することができる。
【0041】
図7の上部は、複数のNAND型フラッシュメモリチップに存在する不良ブロックのパターンの例を示す。
ここでは、フラッシュストレージデバイス3が8個のNAND型フラッシュメモリチップ(チップ#0〜チップ#7)を含み、8個のNAND型フラッシュメモリチップ(チップ#0〜チップ#7)の各々が32個のブロック(BLK0〜BLK31)を含んでおり、チップ#0〜チップ#7にそれぞれ属する8個のブロックが一つのスーパーブロックSBとして編成される場合を想定する。一つのスーパーブロックSBに属するべきブロックそれぞれのブロックアドレスは、このスーパーブロックSBを識別するアドレス(スーパーブロックアドレス)から数学的規則に基づいて定めることができる。
【0042】
スーパーブロックアドレスから数学的規則に基づいて一意にブロックアドレスの組み合わせを定めるというこの方法を使用することにより、スーパーブロック毎にこのスーパーブロックに属するブロックアドレスを保持する専用の管理テーブルを使用することなく、各スーパーブロックアドレスのみから各スーパーブロックに属するブロックアドレスの組み合わせを容易に特定することができる。
【0043】
この数学的規則としては、スーパーブロックアドレスから一意にブロックアドレスの組み合わせを決定することが可能な任意の規則を使用し得る。
ここでは、図示の簡単化のために、一つのスーパーブロックSBは、このスーパーブロックSBのスーパーブロックアドレスと同じブロックアドレスを有するブロックの集合を含む場合が例示されている。
【0044】
つまり、スーパーブロックSB0はチップ#0〜チップ#7にそれぞれ属する8個のブロックBLK0を含み、スーパーブロックSB1はチップ#0〜チップ#7にそれぞれ属する8個のブロックBLK1を含み、スーパーブロックSB2はチップ#0〜チップ#7にそれぞれ属する8個のブロックBLK2を含み、同様に、スーパーブロックSB31はチップ#0〜チップ#7にそれぞれ属する8個のブロックBLK31を含む。
【0045】
図7の上部において、クロスハッチングで示されるブロックは不良ブロックである。チップ#0は8個の不良ブロックを含み、チップ#1は2個の不良ブロックを含み、チップ#2は1個の不良ブロックを含み、チップ#3は1個の不良ブロックを含み、チップ#4は5個の不良ブロックを含み、チップ#5は1個の不良ブロックを含み、チップ#6は1個の不良ブロックを含み、チップ#7は1個の不良ブロックを含む。
【0046】
もし一つ以上の不良ブロックを含むスーパーブロックは使用しない、というポリシーが適用されたならば、一つ以上の不良ブロックを含むスーパーブロックに属する正常ブロック(シングルハッチングで示されるブロック)は利用不可能となる。図7においては、右上から左下に延びる実線でハッチングされたブロックは一つの不良ブロックを含むスーパーブロックに属する正常ブロック(利用不可能な正常ブロック)を示し、左上から右下に延びる実線でハッチングされたブロックは2以上の不良ブロックを含むスーパーブロックに属する正常ブロック(利用不可能な正常ブロック)を示している。
【0047】
図7の下部には、各チップに含まれる各不良ブロックを同じチップに属する不良ブロック以外のブロックで置き換える処理が示されている。
例えば、チップ#0においては、不良ブロックBLK3、不良ブロックBLK8、不良ブロックBLK13、不良ブロックBLK16、不良ブロックBLK19、不良ブロックBLK21は、チップ#0に属するブロックBLK25、ブロックBLK26、ブロックBLK28、ブロックBLK29、ブロックBLK30、ブロックBLK31でそれぞれ置換されてもよい。同様に、チップ#1においては、不良ブロックBLK10、不良ブロックBLK21は、チップ#1に属するブロックBLK30、ブロックBLK31でそれぞれ置換されてもよい。
【0048】
このように、各チップに含まれる各不良ブロックを同じチップに属する不良ブロック以外のブロックで置き換えることにより、各チップの先頭から合計24(=32−8)個のブロックは利用可能状態となる。しかし、各チップの残りのブロックBLK24〜BLK31は利用できない。よって、構築可能なスーパーブロックSBの数は、最も不良ブロックの多いチップ#0内の正常ブロックの数までに制限されてしまう。
【0049】
本実施形態では、スーパーブロックSB0〜SB31の各々に含まれる不良ブロックの数がある閾値以下になるようにチップ毎にアドレス変換ルールが予め決定されており、この決定されたアドレス変換ルールに基づいて、各チップに送出されるブロックアドレスの各々を他のブロックアドレスに変換するアドレス変換動作がコントローラ4によって実行される。
【0050】
図8の上部は複数のNAND型フラッシュメモリチップに存在する不良ブロックのパターンの例を示している。この不良ブロックのパターンは図7の上部で説明した不良ブロックのパターンと同じである。
図8の下部は、コントローラ4によって実行されるブロック再配置動作を示す。
【0051】
図8の下部に示されているように、本実施形態では、スーパーブロックSB0〜SB31の各々に含まれる不良ブロックの数がある閾値以下になるようにチップ毎にブロックが再配置される。ここでは、スーパーブロックSB0〜SB31の各々に含まれる不良ブロックの数が1以下になるようにチップ毎にブロックを再配置する場合が例示されているが、各スーパーブロックが含むことが許容される不良ブロックの数の上限は1に限定されず、例えば、チップそれぞれ含まれる不良ブロックの数の平均値以下の整数に設定されていればよい。ここでは、不良ブロックの総数が20で、チップ数が8であるので、各スーパーブロックが含むことが許容される不良ブロックの数の上限は平均不良ブロック数(=2.5)以下の整数であればよい。これにより、スーパーブロックSB0〜SB31それぞれに含まれる不良ブロック数の差をある範囲内に制限しつつ、図7の下部で説明したブロック再配置よりも、利用可能ブロックの数を増やすことができる。
【0052】
チップ当たりの不良ブロックの数はチップ毎にそれぞれ異なる。チップ間の不良ブロック数の差は、これらチップの製造工程数が増加するほど大きくなる傾向がある。三次元構造のフラッシュメモリのように、多くの層を含む現代のフラッシュメモリチップの製造には多くの数の製造工程が必要とされる。このため、チップ間の不良ブロック数の差は比較的大きい。また、一般に、ほとんどのチップは少ない不良ブロック数しか含まないが、一部のチップは多くの不良ブロック数を含むというケースが多い。
【0053】
図7の下部で説明したブロック再配置では、各チップ内の利用可能なブロック数は、最も不良ブロックの多いチップ#0内の正常ブロックの数(ここでは24)までに制限されてしまう結果となる。
一方、図8の下部で説明したブロック再配置では、各チップ内の利用可能なブロックの数は、最も不良ブロックの多いチップ#0内の正常ブロックの数に影響されない。したがって、全チップの不良ブロック数の合計が極端に大きくならない限り、スーパーブロックSB0〜SB31間の不良ブロック数の差をある範囲内に制限できるので、これらスーパーブロックSB0〜SB31それぞれのリード/ライト性能の差を許容範囲内に納めることができる。
【0054】
また、もしスーパーブロックそれぞれとこれらスーパーブロックの各々に属するブロックの集合との関係をテーブル形式の管理情報を使用して管理するという方法が使用されたならば、この管理情報の格納のために多くのメモリリソースが消費されることになる。例えば、この管理情報のサイズは、[全チップのブロック数の合計]×[チップアドレス+ブロックアドレス]となる。通常、一つのチップは1000〜2000程度のブロックを含む。また、[チップアドレス+ブロックアドレス]を表現するために必要な情報量は2バイト程度となる。よって、管理情報のサイズは非常に大きくなる。
【0055】
本実施形態では、数学的規則を示すアドレス変換ルールに基づくアドレス変換動作(加算、減算、ビット反転、等のような算術論理演算)によって各チップ内のブロック間でブロックアドレスが入れ替えられ、これによってブロック再配置が実行される。一つのアドレス変換ルールは、例えば、利用可能な幾つかの演算の一つとこの演算のために使用されるパラメータのみを指定すればよい。このため、一つのアドレス変換ルールの格納のために必要なデータ量は数ビット程度である。したがって、本実施形態では、ルールセット33のサイズは[総チップ数(または総プレーン数)]×[数ビット]となり、低コストで複数のスーパーブロックを制御することができる。
【0056】
図9は、コントローラ4のアドレス変換回路151によって実行されるアドレス変換動作の例を示す。
図9の上部は、複数のNAND型フラッシュメモリチップに存在する不良ブロックのパターンの例とチップ毎に適用されるアドレス変換ルールの例を示す。
【0057】
図9の上部では、図示の簡単化のために、フラッシュストレージデバイス3が4個のNAND型フラッシュメモリチップ(チップ#0〜チップ#3)を含み、4個のNAND型フラッシュメモリチップ(チップ#0〜チップ#3)の各々が8個のブロック(BLK0〜ブロックBLK7)を含み、チップ#0〜チップ#3にそれぞれ属する4個のブロックが一つのスーパーブロックSBとして編成される場合が想定されている。また、クロスハッチングで示されるブロックは不良ブロックである。
【0058】
一つのスーパーブロックSBに属するべきブロックそれぞれのブロックアドレスは、このスーパーブロックSBのアドレス(スーパーブロックアドレス)から数学的規則に基づいて定めることができる。ここでは、図示の簡単化のために、一つのスーパーブロックSBは、このスーパーブロックSBのスーパーブロックアドレスと同じブロックアドレスを有するブロックの集合を含む場合が想定されている。
【0059】
チップ#0においては、例えば、チップ#0に送出されるブロックアドレスに1を加える加算がアドレス変換ルール#0として適用されてもよい。
チップ#0に送出される3ビットのブロックアドレス(ブロック番号)が0(=“000”)を示すならば、この3ビットのブロックアドレス(ブロック番号)は1(=“001”)に変換され、ブロックアドレス(=“000”)を有するブロックBLK0の代わりに、ブロックアドレス(=“001”)を有するブロックBLK1がアクセスされる。
【0060】
チップ#0に送出される3ビットのブロックアドレス(ブロック番号)が1(=“001”)を示すならば、この3ビットのブロックアドレス(ブロック番号)は2(=“010”)に変換され、ブロックアドレス(=“001”)を有するブロックBLK1の代わりに、ブロックアドレス(=“010”)を有するブロックBLK2がアクセスされる。
【0061】
同様に、チップ#0に送出される3ビットのブロックアドレス(ブロック番号)が7(=“111”)を示すならば、この3ビットのブロックアドレス(ブロック番号)は0(=“000”)に変換され、ブロックアドレス(=“111”)を有するブロックBLK7の代わりに、ブロックアドレス(=“000”)を有するブロックBLK0がアクセスされる。
【0062】
このように、チップ#0に送出されるブロックアドレスそれぞれには同じアドレス変換動作(ここでは、ブロックアドレスに1を加える加算)が施され、これによってチップ#0の各ブロックの配置は図9の下部に示すように左側に1ブロック分だけシフトされる。この結果、チップ#0においては、不良ブロックBLK1は、スーパーブロックSB1に属するブロックではなく、スーパーブロックSB0に属するブロックとして扱われる。同様に、不良ブロックBLK3はスーパーブロックSB3に属するブロックではなく、スーパーブロックSB2に属するブロックとして扱われ、不良ブロックBLK4はスーパーブロックSB4に属するブロックではなく、スーパーブロックSB3に属するブロックとして扱われる。
【0063】
チップ#1においては、例えば、チップ#1に送出されるブロックアドレスから1を減ずる減算がアドレス変換ルール#1として適用されてもよい。
この場合、チップ#1に送出されるブロックアドレスそれぞれには同じアドレス変換動作(ここでは、ブロックアドレスから1を減ずる減算)が施され、これによってチップ#1の各ブロックの配置は図9の下部に示すように右側に1ブロック分だけシフトされる。この結果、チップ#1においては、不良ブロックBLK4は、スーパーブロックSB4に属するブロックではなく、スーパーブロックSB5に属するブロックとして扱われる。同様に、不良ブロックBLK3はスーパーブロックSB3に属するブロックではなく、スーパーブロックSB4に属するブロックとして扱われる。
【0064】
チップ#2においては、例えば、チップ#2に送出されるブロックアドレスに1を加える加算がアドレス変換ルール#2として適用されてもよい。
この場合、チップ#2に送出されるブロックアドレスそれぞれには同じアドレス変換動作(ここでは、ブロックアドレスに1を加える加算)が施され、これによってチップ#2の各ブロックの配置は図9の下部に示すように左側に1ブロック分だけシフトされる。この結果、チップ#2においては、不良ブロックBLK2は、スーパーブロックSB2に属するブロックではなく、スーパーブロックSB1に属するブロックとして扱われる。
【0065】
チップ#3においては、例えば、最大ブロックアドレス(=“111”)から、チップ#3に送出されるブロックアドレスを減じる演算がアドレス変換ルール#3として適用されてもよい。
この場合、チップ#3に送出される3ビットのブロックアドレス(ブロック番号)が0(=“000”)を示すならば、この3ビットのブロックアドレス(ブロック番号)は7(=“111”)に変換され、ブロックアドレス(=“000”)を有するブロックBLK0の代わりに、ブロックアドレス(=“111”)を有するブロックBLK7がアクセスされる。
【0066】
チップ#3に送出される3ビットのブロックアドレス(ブロック番号)が1(=“001”)を示すならば、この3ビットのブロックアドレス(ブロック番号)は6(=“110”)に変換され、ブロックアドレス(=“001”)を有するブロックBLK1の代わりに、ブロックアドレス(=“110”)を有するブロックBLK6がアクセスされる。
【0067】
同様に、チップ#3に送出される3ビットのブロックアドレス(ブロック番号)が7(=“111”)を示すならば、この3ビットのブロックアドレス(ブロック番号)は0(=“000”)に変換され、ブロックアドレス(=“111”)を有するブロックBLK7の代わりに、ブロックアドレス(=“000”)を有するブロックBLK0がアクセスされる。
【0068】
このように、チップ#3に送出されるブロックアドレスそれぞれには同じアドレス変換動作(ここでは、最大ブロックアドレスからブロックアドレスを減じる演算)が施され、これによってチップ#3の各ブロックの配置は、図9の下部に示すように、例えば、不良ブロックBLK0と正常ブロックBLK7の間で位置が入れ替えられる。
【0069】
なお、アドレス変換のために使用可能な数学的規則の例には、この他、以下の演算も含まれる。
(1)ブロックアドレスの最下位ビット[b0]のみを反転する演算: この演算はチップ(またはプレーン)当たりの総ブロック数が2の整数倍である場合に利用されてもよい。
【0070】
(2)ブロックアドレスの下位2ビット[b1,b0]によって表現される4通りの組み合わせを互いに入れ替える演算: この演算はチップ(またはプレーン)当たりの総ブロック数が4の整数倍である場合に利用されてもよい。例えば、下位2ビット[b1,b0]が[b0,b1]に変換されるように下位2ビット[b1,b0]の位置を互いに入れ替える演算が利用されてもよいし、下位2ビット[b1,b0]を反転する演算が利用されてもよい。
【0071】
(3)ブロックアドレスの下位3ビット[b2,b1,b0]によって表現される8通りの組み合わせを互いに入れ替える演算: この演算はチップ(またはプレーン)当たりの総ブロック数が8の整数倍である場合に利用されてもよい。
(4)ブロックアドレスの全ビットを反転する演算
図10は、フラッシュストレージデバイス3のコントローラ4に含まれる複数のアドレス変換回路151と複数のNAND型フラッシュメモリチップとの関係の例を示す。
【0072】
ここでは、フラッシュストレージデバイス3が8個のNAND型フラッシュメモリチップ(チップ#0〜チップ#7)を含み、チップ#0〜チップ#7にそれぞれ属する8個のブロックが一つのスーパーブロックSBとして編成される場合が想定されている。
【0073】
例えば、フラッシュストレージデバイス3の初期製造工程においては、フラッシュストレージデバイス3に搭載されるチップ#0〜チップ#7それぞれに存在する不良ブロックのパターンに基づいて、スーパーブロック間で不良ブロックの数を均一にするためアドレス変換ルールをチップ毎に決定するための学習処理200が実行される。この学習処理200は、コントローラ4ではなく、工場内のシステムによって実行される。このシステムは、チップ#0〜チップ#7にそれぞれ対応する8個のアドレス変換ルールを決定する。
学習処理200においては、個々のチップに適用すべきアドレス変換ルールが、予め定義された使用可能な複数種のアドレス変換ルールの中からそれぞれ選択されてもよい。決定された8個のアドレス変換ルールはルールセット33として8個のNAND型フラッシュメモリチップのいずれか一つに永続的に格納されるか、あるいはコントローラ4内の他の不揮発性メモリに永続的に格納される。
【0074】
フラッシュストレージデバイス3の工場出荷後においては、チップ#0に対応するアドレス変換回路#0は、チップ#0に対応するアドレス変換ルール#0によって示される数学的規則に基づき、チップ#0に送出されるブロックアドレスの各々を別のブロックアドレスに変換するアドレス変換動作を実行する。チップ#1に対応するアドレス変換回路#1は、チップ#1に対応するアドレス変換ルール#1によって示される数学的規則に基づき、チップ#1に送出されるブロックアドレスの各々を別のブロックアドレスに変換するアドレス変換動作を実行する。同様に、チップ#7に対応するアドレス変換回路#7は、チップ#7に対応するアドレス変換ルール#7によって示される数学的規則に基づき、チップ#7に送出されるブロックアドレスの各々を別のブロックアドレスに変換するアドレス変換動作(算術論理演算)を実行する。
【0075】
図11は、フラッシュストレージデバイス3のコントローラ4に含まれる複数のアドレス変換回路151と複数のプレーンとの関係の例を示す。
ここでは、フラッシュストレージデバイス3が8個のNAND型フラッシュメモリチップ(チップ#0〜チップ#7)を含み、チップ#0〜チップ#7の各々が2つのプレーン(PLANE0、PLANE1)を含み、総数16のプレーンにそれぞれ属する16個のブロックが一つのスーパーブロックSBとして編成される場合が想定されている。
【0076】
例えば、フラッシュストレージデバイス3の初期製造工程においては、フラッシュストレージデバイス3に搭載される総数16のプレーンそれぞれに存在する不良ブロックのパターンに基づいて、スーパーブロック間で不良ブロックの数を均一にするためアドレス変換ルールをプレーン毎に決定するための学習処理200が実行される。この学習処理200は、コントローラ4ではなく、工場内のシステムによって実行される。学習処理200においては、個々のプレーンに適用すべきアドレス変換ルールが、予め定義された使用可能な複数種のアドレス変換ルールの中からそれぞれ選択されてもよい。このシステムは、総数16のプレーンにそれぞれ対応する16個のアドレス変換ルールを決定する。16個のアドレス変換ルールはルールセット33として8個のNAND型フラッシュメモリチップのいずれか一つに永続的に格納されるか、あるいはコントローラ4内の他の不揮発性メモリに永続的に格納される。
【0077】
フラッシュストレージデバイス3の工場出荷後においては、チップ#0のPLANE0に対応するアドレス変換回路#0は、チップ#0のPLANE0に対応するアドレス変換ルール#0によって示される数学的規則に基づき、チップ#0のPLANE0に送出されるブロックアドレスの各々を別のブロックアドレスに変換するアドレス変換動作を実行する。チップ#0のPLANE1に対応するアドレス変換回路#1は、チップ#0のPLANE1に対応するアドレス変換ルール#1によって示される数学的規則に基づき、チップ#0のPLANE1に送出されるブロックアドレスの各々を別のブロックアドレスに変換するアドレス変換動作を実行する。
【0078】
同様に、チップ#7のPLANE0に対応するアドレス変換回路#14は、チップ#7のPLANE0に対応するアドレス変換ルール#14によって示される数学的規則に基づき、チップ#7のPLANE0に送出されるブロックアドレスの各々を別のブロックアドレスに変換するアドレス変換動作を実行する。チップ#7のPLANE1に対応するアドレス変換回路#15は、チップ#7のPLANE1に対応するアドレス変換ルール#15によって示される数学的規則に基づき、チップ#7のPLANE1に送出されるブロックアドレスの各々を別のブロックアドレスに変換するアドレス変換動作を実行する。
【0079】
図12は、フラッシュストレージデバイス3のコントローラ4に含まれる複数のアドレス変換回路151と複数のNAND型フラッシュメモリチップとの関係の別の例を示す。
ここでは、複数のアドレス変換回路151の各々に、ブロックアドレスではなく、アクセスされるべきスーパーブロックを示すスーパーブロックアドレスが供給される場合が想定されている。
【0080】
この場合、各アドレス変換回路151は、図13に示されているように、アドレス変換回路151aと、このアドレス変換回路151aの前段に設けられたブロックアドレス変換回路151bとを含んでいてもよい。例えば、チップ#0に対応するアドレス変換回路151#0のアドレス変換回路151aは、チップ#0に対応するアドレス変換ルール#0によって示される数学的規則に基づき、チップ#0に送出されるブロックアドレスの各々を別のブロックアドレスに変換する。チップ#0に対応するアドレス変換回路151#0のブロックアドレス変換回路151bは、アクセスされるべきスーパーブロックを示す特定のスーパーブロックアドレスをチップ#0内の特定のブロックを指定する特定のブロックアドレスに変換する。本実施形態では、一つのスーパーブロックに属するべきブロックそれぞれのブロックアドレスは、このスーパーブロックのスーパーブロックアドレスから特定の数学的規則に基づいて定められている。したがって、ブロックアドレス変換回路151bによる特定のスーパーブロックアドレスから特定のブロックアドレスへの変換は、この特定の数学的規則に基づいて実行することができる。なお、各スーパーブロックが、このスーパーブロックのスーパーブロックアドレス(スーパーブロック番号)と同じブロックアドレス(ブロック番号)を有するブロックの集合によって構成されている場合には、特定のブロックアドレスは特定のスーパーブロックアドレスと一致するので、ブロックアドレス変換回路151bは設けられていなくてよい。
【0081】
なお、複数のアドレス変換回路151の各々にスーパーブロックアドレスを供給する図12の構成は、複数のプレーンにそれぞれ対応する複数のアドレス変換回路151を含む図11の構成にも適用することができる。
以上説明したように、本実施形態によれば、複数の並列アクセス単位(スーパーブロック)の各々に含まれる不良ブロックの数が閾値(第1の数)以下になるように規定された複数のアドレス変換ルールの各々の数学的規則に基づいて、各不揮発性メモリチップ(または各プレーン)9に送出されるブロックアドレスの各々を別のブロックアドレスに変換するアドレス変換動作がアドレス変換回路151によって実行される。したがって、スーパーブロックそれぞれとこれらスーパーブロックの各々に属するブロックの集合との関係をテーブル形式の管理情報を使用して管理することなく、スーパーブロックそれぞれとこれらスーパーブロックの各々に属するブロックの集合との関係を変更することができ、これによってスーパーブロックそれぞれに含まれる不良ブロックの数をこれらスーパーブロック間でほぼ均一にすることが可能となる。よって、低コストで、並列にアクセスされるブロックの集合を効率よく制御することが可能となる。
【0082】
なお、本実施形態のフラッシュストレージデバイス3の構成は、以下のタイプ#1、タイプ#2を含む様々なタイプのストレージデバイスに適用可能である。
<タイプ#1ストレージデバイス>
タイプ#1のストレージデバイスは、LBAのような論理アドレスを指定するリード/ライトコマンドをホスト2から受信するように構成されている。リード/ライトコマンドは、論理アドレス、データの長さを指定するが、NAND型フラッシュメモリ5の物理アドレスを指定しない。フラッシュストレージデバイス3がタイプ#1のストレージデバイスとして実現されている場合には、図1のライト制御部21は、ホスト2から受信したライトコマンドに応じて、ホスト2から受信されるデータ(ライトデータ)を、書き込み先スーパーブロック内の利用可能な物理記憶位置に書き込む。そして、図1のライト制御部21は、LUT32を更新することによって、ライトデータが書き込まれた物理記憶位置を示す物理アドレスをこのライトデータの論理アドレスにマッピングする。図1のリード制御部22がホスト2からリードコマンドを受信した場合、リード制御部22は、LUT32を参照することによって、リードコマンドによって指定された論理アドレスに対応する物理アドレスを取得する。そして、リード制御部22は、この物理アドレスによって指定されるNAND型フラッシュメモリ5内の物理記憶位置からデータを読み出す。
【0083】
<タイプ#2ストレージデバイス>
タイプ#2のストレージデバイスは、NAND型フラッシュメモリ5の物理アドレスを指定するリード/ライトコマンドをホスト2から受信するように構成されている。フラッシュストレージデバイス3がタイプ#2のストレージデバイスとして実現されている場合には、論理アドレスそれぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間のマッピングを管理するための論理物理アドレス変換テーブルはホスト2に設けられる。
【0084】
図1のライト制御部21は、ブロックアドレスと論理アドレスとを指定するライトコマンドをホスト2から受信する。論理アドレスは、書き込むべきデータ(ライトデータ)を識別可能な識別子であり、例えば、LBAであってもよいし、あるいはキー・バリュー・ストアのキーであってもよいし、このキーのハッシュ値であってもよい。ライトコマンドを受信した場合、ライト制御部21は、まず、ホスト2からのライトデータを書き込むべき、この指定されたブロックアドレスを有するブロック(書き込み先ブロック)内の位置(書き込み先位置)を決定する。次いで、ライト制御部21は、ホスト2からのライトデータを、この書き込み先ブロックの書き込み先位置に書き込む。この場合、ライト制御部21は、ライトデータのみならず、このライトデータとこのデータの論理アドレスの双方を書き込み先ブロックに書き込むことができる。
【0085】
そして、ライト制御部21は、この書き込み先ブロックの上述の書き込み先位置を示すブロック内物理アドレスをホスト2に通知する。このブロック内物理アドレスは、この書き込み先ブロック内の書き込み先位置を示すブロック内オフセットによって表される。
【0086】
このように、ライト制御部21は、ホスト2から指定されたブロックアドレスを有するブロック内の書き込み先位置を自身で決定し、そしてホスト2からのライトデータをこのブロック内のこの書き込み先位置に書き込む。そして、ライト制御部21は、この書き込み先位置を示すブロック内物理アドレス(ブロック内オフセット)をライト要求に対応するレスポンス(返り値)としてホスト2に通知する。あるいは、ライト制御部21は、ブロック内物理アドレス(ブロック内オフセット)のみをホスト2に通知するのではなく、論理アドレスとブロックアドレスとブロック内物理アドレス(ブロック内オフセット)との組をホスト2に通知してもよい。
【0087】
したがって、フラッシュストレージデバイス3は、ブロックアドレスをホスト2にハンドリングさせつつ、ページ書き込み順序制約、バッドページ、ページサイズ等を隠蔽することができる。
この結果、ホスト2は、ブロック境界は認識できるが、ページ書き込み順序制約、バッドページ、ページサイズについては意識することなく、どのユーザデータがどのブロックに存在するかを管理することができる。
【0088】
ホスト2から受信されるライトコマンドによって指定されるブロックアドレスは物理ブロックのブロックアドレスであってもよいし、スーパーブロックのブロックアドレス(スーパーブロックアドレス)であってもよい。
フラッシュストレージデバイス3がタイプ#2のストレージデバイスとして実現されている場合には、図1のリード制御部22は、物理アドレス(すなわち、ブロックアドレスおよびブロック内オフセット)を指定するリード要求(リードコマンド)をホスト2から受信する。リードコマンドをホスト2から受信した場合、リード制御部22は、これらブロックアドレスおよびブロック内オフセットに基づいて、リード対象のブロック内のリード対象の物理記憶位置からデータをリードする。リード対象のブロックは、ブロック番号によって特定される。このブロック内のリード対象の物理記憶位置は、ブロック内オフセットによって特定される。
【0089】
ホスト2から受信されるリードコマンドによって指定されるブロックアドレスは物理ブロックのブロックアドレスであってもよいし、スーパーブロックのブロックアドレス(スーパーブロックアドレス)であってもよい。
リード/ライトコマンドによって指定されるブロックアドレスがある物理ブロックのブロックアドレスを示すケースにおいては、このブロックアドレスはチップアドレス(チップ番号)とブロックアドレス(ブロック番号)との組み合わせによって表されてもよいし、チップアドレス(チップ番号)とプレーン番号とブロックアドレス(ブロック番号)との組み合わせによって表されてもよい。
【0090】
なお、別の実施形態では、アドレス変換回路151は、例えば、CPU12内のALUによって実現されてもよい。
また、本実施形態では、不揮発性メモリとしてNAND型フラッシュメモリを例示した。しかし、本実施形態の機能は、例えば、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)のような他の様々な不揮発性メモリにも適用できる。
【0091】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0092】
2…ホスト、3…フラッシュストレージデバイス、4…コントローラ、5…NAND型フラッシュメモリ、21…ライト制御部、22…リード制御部、151…アドレス変換回路。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13