(57)【要約】      （修正有）【課題】フラッシュメモリに記憶された重要なデータが失われてしまうことを防止し、物理ブロックの品質を維持することができるメモリコントローラを提供する。【解決手段】メモリシステム１において、メモリコントローラ１２は、ホストシステム２から与えられるコマンドに基づいて、複数のページを含む物理ブロックを複数含むフラッシュメモリ１１に対するアクセスを制御する。メモリコントローラは、第１の論理領域の論理ブロックと第１の物理領域の物理ブロックとの対応関係を示す第１の対応関係を第１の記憶部に記憶し、第１の物理領域を、ホストシステムから与えられる第１の論理領域へのデータの書き込みのコマンドに基づかずに、第１の論理領域の論理ブロックと対応関係にある第１の物理領域の物理ブロックに保存されているデータを移動する処理を禁止する領域として管理する。【選択図】図１
2020086748.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムから与えられるコマンドに基づいて、複数のページを含む物理ブロックを複数含むフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
第１の論理領域の論理ブロックと第１の物理領域の前記物理ブロックとの対応関係を示す第１の対応関係を第１の記憶部に記憶し、
前記第１の物理領域を、前記ホストシステムから与えられる前記第１の論理領域へのデータの書き込みのコマンドに基づかずに、前記第１の論理領域の論理ブロックと対応関係にある前記第１の物理領域の物理ブロックに保存されているデータを移動する処理を禁止する領域として管理する、
メモリコントローラ。
【請求項２】
前記ホストシステムから前記第１の論理領域へのデータの書き込みのコマンドを与えられた場合に、前記第１の対応関係に基づいて、前記第１の物理領域の物理ブロックにデータを書き込む第１の処理を行い、
前記第１の処理は、前記第１の論理領域の論理ブロックの状態に基づいて、前記第１の物理領域の書き込み可能な物理ブロックのうち、最小消去回数または最大消去回数の物理ブロックにデータを書き込む処理である、
請求項１に記載のメモリコントローラ。
【請求項３】
前記第１の論理領域とは異なる第２の論理領域の論理ブロックと前記第１の物理領域とは異なる第２の物理領域の物理ブロックとの対応関係を示す第２の対応関係を第２の記憶部に記憶し、
前記第２の物理領域を、前記ホストシステムから与えられる前記第２の論理領域へのデータの書き込みのコマンドに基づかずに、前記第２の論理領域の論理ブロックと対応関係にある前記第２の物理領域の物理ブロックに保存されているデータを移動させる処理を許可する領域として管理する、
請求項１または請求項２に記載のメモリコントローラ。
【請求項４】
複数のページを含む物理ブロックを複数含むフラッシュメモリと、ホストシステムから与えられるコマンドに基づいて、前記フラッシュメモリに対するアクセスを制御するメモリコントローラと、を備えるメモリシステムであって、
前記メモリコントローラは、
第１の論理領域の論理ブロックと第１の物理領域の前記物理ブロックとの対応関係を示す第１の対応関係を第１の記憶部に記憶し、
前記第１の物理領域を、前記ホストシステムから与えられる前記第１の論理領域へのデータの書き込みのコマンドに基づかずに、前記第１の論理領域の論理ブロックと対応関係にある前記第１の物理領域の物理ブロックに保存されているデータを移動する処理を禁止する領域として管理する、
メモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ、及びメモリシステムに関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリは、複数の物理ブロックにより構成され、各物理ブロックは、複数のページにより構成され、ページの単位でデータが読み書きされ、物理ブロックの単位でデータが消去される。ＮＡＮＤ型フラッシュメモリのメモリコントローラは、一般に、複数の物理ブロックの消去回数を平均化する、すなわち、メモリコントローラは、ウェアレベリング処理を行う。
【０００３】
例えば、特許文献１のウェアレベリング処理は、次の通りである。すなわち、フラッシュメモリを構成する複数の物理ブロックの各々について消去回数が管理されている。最大消去回数と最小消去回数との差が閾値を超えた場合に、最小消去回数の物理ブロックに書かれているデータがスペアブロックのうちのコピー先物理ブロックにコピーされ、コピー先物理ブロックが、コピー元物理ブロック（最小消去回数の物理ブロック）に代えてコピー元物理ブロックの割り当て先の論理アドレスに割り当てられ、コピー元物理ブロックが、スペアブロックとして管理される。スペアブロックは、消去済みの物理ブロックのことであり、書き込み可能な物理ブロックのことである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−２７５７２２号公報
【特許文献２】特許第５８５８０８１号公報
【特許文献３】特許第４９５２７４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、ホストシステムからの書き込みコマンドが無いときに、重要なデータが書き込まれた物理ブロックの当該データがウェアレベリングによって移動させられると、そのときにホストシステムの電源が落ちた場合などに、当該データが失われてしまうことがあった。
また、消去回数が多い物理ブロックでは、セルの品質が悪くデータが劣化し、読み出しエラーが発生することがあった。
【０００６】
本発明は、このような事情を考慮してなされたもので、フラッシュメモリに記憶された重要なデータが失われてしまうことを防止し、物理ブロックの品質を維持することができるメモリコントローラ、及びメモリシステムを提供することを課題とする。
【課題を解決するための手段】
【０００７】
本発明の一態様は、ホストシステムから与えられるコマンドに基づいて、複数のページを含む物理ブロックを複数含むフラッシュメモリに対するアクセスを制御するメモリコントローラであって、第１の論理領域の論理ブロックと第１の物理領域の前記物理ブロックとの対応関係を示す第１の対応関係を第１の記憶部に記憶し、前記第１の物理領域を、前記ホストシステムから与えられる前記第１の論理領域へのデータの書き込みのコマンドに基づかずに、前記第１の論理領域の論理ブロックと対応関係にある前記第１の物理領域の物理ブロックに保存されているデータを移動する処理を禁止する領域として管理する、メモリコントローラである。
【０００８】
本発明の一態様は、複数のページを含む物理ブロックを複数含むフラッシュメモリと、ホストシステムから与えられるコマンドに基づいて、前記フラッシュメモリに対するアクセスを制御するメモリコントローラと、を備えるメモリシステムであって、前記メモリコントローラは、第１の論理領域の論理ブロックと第１の物理領域の前記物理ブロックとの対応関係を示す第１の対応関係を第１の記憶部に記憶し、前記第１の物理領域を、前記ホストシステムから与えられる前記第１の論理領域へのデータの書き込みのコマンドに基づかずに、前記第１の論理領域の論理ブロックと対応関係にある前記第１の物理領域の物理ブロックに保存されているデータを移動する処理を禁止する領域として管理する、メモリシステムである。
【発明の効果】
【０００９】
本発明によれば、フラッシュメモリに記憶された重要なデータが失われてしまうことを防止し、物理ブロックの品質を維持することができる。
【図面の簡単な説明】
【００１０】
【図１】実施形態に係るメモリシステムの構成の一例を示す図である。
【図２】実施形態に係るホストアドレスとメモリシステムのアドレス変換の一例を示す図である。
【図３】実施形態に係る物理ブロックの書き換えの一例を示す図である。
【図４】実施形態に係る論理ブロックと物理ブロックとの対応関係の一例を示す図である。
【図５】実施形態に係る禁止物理ゾーンの設定の処理の手順の一例を示す図である。
【図６】実施形態に係るホストデータの書き込みの手順の一例を示す図である。
【図７】実施形態に係るスタティックウェアレベリングの処理の手順の一例を示す図である。
【発明を実施するための形態】
【００１１】
＜実施形態＞
以下、本発明の実施形態について、図面を参照して説明する。
【００１２】
＜メモリシステムの構成＞
図１は、実施形態に係るメモリシステム１の構成の一例を示す図である。
メモリシステム１は、ホストシステム２と接続されている。
メモリシステム１は、フラッシュメモリ１１と、メモリコントローラ１２を備える。
【００１３】
フラッシュメモリ１１は、様々なフラッシュメモリであってもよい。例えば、フラッシュメモリ１１が備える各セルは、ＳＬＣ（Single  Level  Cell）であってもよく、ＭＬＣ（Multi Level Cell）であってもよく、ＴＬＣ（Triple  Level  Cell）であってもよい。
実施形態では、一例として、フラッシュメモリ１１が、ＮＡＮＤ型のフラッシュメモリである場合について説明する。
【００１４】
フラッシュメモリ１１では、ページの単位で、データの書き込み、および、データの読み出しを行う。また、フラッシュメモリ１１では、物理ブロックの単位で、データの消去を行う。
１個の物理ブロックに含まれるページの数は、規定の数である。当該規定の数は、複数タイプあり、例えば、３２、６４、１２８、２５６などである。
このように、フラッシュメモリ１１は、物理ブロック単位およびページ単位で管理される。
【００１５】
フラッシュメモリ１１は、メモリコントローラ１２によって制御される。実施形態において、フラッシュメモリ１１が備える複数の物理ブロックのうちの少なくとも一部は、メモリコントローラ１２によって第１領域１１Ａ、第２領域１１Ｂ、第３領域１１Ｃのうちのいずれかとして指定されている。
【００１６】
ここで、本実施形態では、説明の便宜上、それぞれの領域（第１領域１１Ａ〜第３領域１１Ｃ）は、フラッシュメモリ１１の物理ブロックに相当しているとして説明する。
また、本実施形態では、説明の便宜上、３個の領域（第１領域１１Ａ〜第３領域１１Ｃ）を示したが、例えば、さらに他の領域が設けられてもよい。
【００１７】
第１領域１１Ａは、フラッシュメモリ１１が備える複数の物理ブロックのうち、フラッシュメモリ１１へのアクセスを制御する所定のファームウェアがメモリコントローラ１２によって書き込まれる物理ブロックの領域である。
当該ファームウェアが更新（アップデート）されるときには、例えば、当該ファームウェアが格納される先の物理ブロックのすべてが消去されて書き込まれる。なお、当該ファームウェアの一部の書き換えは行われない。
【００１８】
第２領域１１Ｂは、管理情報がメモリコントローラ１２によって書き込まれる物理ブロック（説明の便宜上、「管理ブロック」という）の領域である。管理情報には、例えば、フラッシュメモリ１１内における第１領域１１Ａの位置を示す情報、フラッシュメモリ１１内における第３領域１１Ｃの位置を示す情報、フラッシュメモリ１１内に他の領域がある場合に当該他の領域の位置を示す情報、フラッシュメモリ１１のタイプを示す情報、メモリシステム１の設定情報等の情報が含まれている。
【００１９】
ここで、メモリシステム１の設定情報は、例えば、１個のメモリシステム１に備えられるフラッシュメモリ１１の数（説明の便宜上、「チップ数」という。）を示す情報、コマンドのサポート情報、機能のサポート情報などのうちの１以上が含まれてもよい。
本実施形態では、説明の便宜上、メモリコントローラ１２に接続されているフラッシュメモリ１１の数を１個としてあり、つまり、チップ数が１である場合を示す。なお、チップ数が２以上であってもよく、この場合、メモリコントローラ１２は、複数のフラッシュメモリのそれぞれへのイネーブル信号をアサートすることで、一つのフラッシュメモリごとに命令を与える。なお、メモリコントローラ１２が複数のチャネルを使用して２個以上のフラッシュメモリにほぼ同時に命令を与えて、並列で制御してもよい。
【００２０】
ここで、フラッシュメモリ１１内における位置を示す情報は、例えば、フラッシュメモリ１１内におけるアドレスの情報であってもよい。
また、フラッシュメモリ１１のタイプを示す情報は、例えば、フラッシュメモリ１１が有する物理ブロックの数を示す情報、１個の物理ブロックに含まれるページの数を示す情報、１ページに格納することが可能な最大のバイト数を示す情報などを含む。１ページに格納することが可能な最大のバイト数は、ページサイズの大きさと捉えられてもよい。ページサイズは、１ページ当たりのバイト数を表す。
また、フラッシュメモリ１１のタイプを示す情報は、例えば、複数のフラッシュメモリ１１が接続されて使用される場合には、その接続の順序を示す情報を含んでもよい。当該順序を示す情報は、例えば、番号（説明の便宜上、「チップ番号」という。）であってもよい。
【００２１】
なお、第２領域１１Ｂには、メモリシステム１の初期化以降、少なくとも、フラッシュメモリ１１のタイプを示す情報と、フラッシュメモリ１１内における第１領域１１Ａの位置を示す情報を含む。
メモリシステム１の初期化は、メモリコントローラ１２によるフラッシュメモリ１１の初期化である。当該初期化において、メモリコントローラ１２は、フラッシュメモリ１１が有する記憶領域のうちの少なくとも一部のなかから、第１領域１１Ａ、第２領域１１Ｂ、第３領域１１Ｃのそれぞれとして機能させる領域を指定し、必要な情報を書き込む。
第３領域１１Ｃは、ホストシステム２から受信されたデータがメモリコントローラ１２によって書き込まれる物理ブロック（説明の便宜上、「ユーザデータブロック」という）の領域である。ユーザデータは、ホストシステム２によって書き込まれたデータである。また、ホストデータは、ホストシステム２からメモリシステム１に送信されるデータで、ユーザデータに含まれる。
【００２２】
ここで、メモリコントローラ１２は、ホストシステム２によって指定される論理アドレスと、フラッシュメモリ１１における物理アドレスとの対応関係を示す情報を記憶部に記憶して管理する。当該記憶部は、例えば、フラッシュメモリ１１内で管理情報を有する管理ブロックであってもよい。
また、第１領域１１Ａ〜第３領域１１Ｃのそれぞれには、それぞれの領域を識別する情報（説明の便宜上、「領域識別情報」という。）が書き込まれる。
【００２３】
メモリコントローラ１２は、ホストシステム２から与えられたコマンドに基づいて、フラッシュメモリ１１に対するアクセスを制御する。
メモリコントローラ１２は、プロセッサー１２Ａと、ＲＯＭ１２Ｂと、第１ＲＡＭ１２Ｃと、第２ＲＡＭ１２Ｄと、バッファ１２Ｅと、第１インターフェース１２Ｆと、第２インターフェース１２Ｇを備える。
【００２４】
プロセッサー１２Ａは、メモリシステム１の全体を制御する。プロセッサー１２Ａは、例えば、ＣＰＵ（Central  Processing  Unit）である。なお、プロセッサー１２Ａは、ＣＰＵに代えて、ＦＰＧＡ（Field-Programmable  Gate  Array）等の他のプロセッサーであってもよい。
本実施形態では、メモリコントローラ１２において行われる処理は、プロセッサー１２Ａによって実行される。
【００２５】
ＲＯＭ１２Ｂは、例えばマスクＲＯＭであり、メモリシステム１を起動させる所定のファームウェアが書き込まれるＲＯＭである。このため、ＲＯＭ１２Ｂは、メモリコントローラ１２の起動時などに、プロセッサー１２Ａにより参照される。そして、プロセッサー１２Ａは、メモリコントローラ１２の起動時などに、当該ファームウェアを読み出して、当該ファームウェアに基づく処理を行う。
ＲＯＭ１２Ｂは、起動時などでフラッシュメモリ１１からアクセスを制御するファームウェアを読み出す処理などを行うファームウェアを格納する。
【００２６】
ここで、本実施形態では、メモリコントローラ１２の起動時は、プロセッサー１２Ａに駆動電圧が供給され、プロセッサー１２Ａが正常に動作可能になったタイミングである。例えば、ホストシステム２にメモリシステム１が接続されることによって、プロセッサー１２Ａに駆動電圧が供給される。
なお、メモリコントローラ１２の起動時は、プロセッサー１２Ａが正常に動作可能になったタイミングよりも後のタイミングであってもよい。
また、メモリコントローラ１２の起動時は、プロセッサー１２Ａが正常に動作可能になったタイミングまたはそれよりも後のタイミングに代えて、プロセッサー１２Ａに応じた他のタイミングであってもよい。
【００２７】
第１ＲＡＭ１２Ｃは、第２領域１１Ｂから読み出された管理情報がプロセッサー１２Ａによって書き込まれるＲＡＭである。
また、第１ＲＡＭ１２Ｃは、例えば、プロセッサー１２Ａの作業領域として使用される。
【００２８】
第２ＲＡＭ１２Ｄは、第１領域１１Ａから読み出されたアクセスを制御するファームウェアがプロセッサー１２Ａによって書き込まれるＲＡＭである。また、第２ＲＡＭ１２Ｄは、ホストシステム２から受信したメモリシステム１の初期化用のファームウェアがプロセッサー１２Ａによって書き込まれるＲＡＭである。
このように、第２ＲＡＭ１２Ｄは、プロセッサー１２Ａが処理するファームウェアが置かれる。
ここで、メモリシステム１の初期化用のファームウェアは、メモリシステム１を初期化するファームウェアである。また、アクセスを制御するファームウェアは、メモリシステム１に対するアクセスを制御するファームウェアである。
【００２９】
バッファ１２Ｅは、ホストシステム２からメモリコントローラ１２に受信されたデータを保持する。また、バッファ１２Ｅは、メモリコントローラ１２からホストシステム２へ送信するデータを保持する。
また、バッファ１２Ｅは、フラッシュメモリ１１からメモリコントローラ１２に読み出されたデータを保持する。また、バッファ１２Ｅは、メモリコントローラ１２からフラッシュメモリ１１へ書き込むデータを保持する。
このように、バッファ１２Ｅは、メモリコントローラ１２とホストシステム２とのデータ転送、およびメモリコントローラ１２とフラッシュメモリ１１とのデータ転送に使用される。
【００３０】
第１インターフェース１２Ｆは、メモリコントローラ１２とホストシステム２とのインターフェースであり、信号あるいはデータを送受信する。第１インターフェース１２Ｆは、メモリコントローラ１２とホストシステム２との間を通信可能に接続することができるインターフェースであれば、如何なるインターフェースであってもよい。
【００３１】
第２インターフェース１２Ｇは、メモリコントローラ１２とフラッシュメモリ１１とのインターフェースであり、信号の送受信あるいはデータの読み書きを行う。第２インターフェース１２Ｇは、メモリコントローラ１２とフラッシュメモリ１１との間を通信可能に接続することができるインターフェースであれば、如何なるインターフェースであってもよい。
【００３２】
ホストシステム２は、任意の機器であってもよく、一例として、ワークステーション等のように所定のＯＳ（Operating  System）によって動作する産業機器であってもよい。なお、他の例として、ホストシステム２は、産業機器に代えて、ＰＣ（Personal  Computer）等のように家庭用の機器であってもよく、あるいは、多機能携帯電話端末（スマートフォン）等の機器であってもよい。
【００３３】
本実施形態では、メモリシステム１は、ホストシステム２からの要求に応じて、ホストシステム２から受信されたデータをフラッシュメモリ１１に記憶する。また、メモリシステム１は、ホストシステム２からの要求に応じて、フラッシュメモリ１１に記憶されたデータのうち、当該要求に応じたデータをホストシステム２に送信する。
【００３４】
また、プロセッサー１２Ａは、ＲＯＭ１２Ｂに記憶された起動用のファームウェアを読み出し、読み出された当該ファームウェアに基づいてフラッシュメモリ１１に書き込まれているアクセスを制御するファームウェアを検索する。そして、プロセッサー１２Ａは、フラッシュメモリ１１に書き込まれている当該ファームウェアを検出すると、検出された当該ファームウェアを第２ＲＡＭ１２Ｄに読み出して実行することで、当該ファームウェアに書き込まれているそれぞれの処理を行う。これにより、プロセッサー１２Ａは、当該ファームウェアに基づいて、フラッシュメモリ１１へのアクセスを制御する。
【００３５】
＜フラッシュメモリの構造＞
フラッシュメモリ１１は、複数の物理ブロックを有する。
それぞれの物理ブロックは、複数のページを有する。
物理ブロックは消去単位であり、ページは読み書き単位である。ページサイズは、１ページのバイト数である。
【００３６】
＜空き物理ブロック＞
フラッシュメモリ１１では、データを物理ブロックの先頭ページからページ単位で順に書き込み、データの上書きは行われず、物理ブロックを消去した後に新たなデータが書き込まれる。
本実施形態では、メモリコントローラ１２は、ユーザデータブロックのそれぞれの物理ブロックについて、書き込み可能であるか否かの状態と、消去回数を管理する。メモリコントローラは、このような管理を、例えば、テーブルを用いて行ってもよい。ここで、書き込み可能であることは、少なくとも一部のページが有効または無効なデータの記憶に使用されていないことに対応し、逆に、書き込み可能ではないことは、すべてのページが有効または無効なデータの記憶に使用されていて、そのうちの少なくとも一部のページが有効なデータの記憶に使用されていることに対応する。このように、有効なデータが書かれている物理ブロックについても、最後のページまで有効または無効なデータが書かれていなければ、有効または無効なデータが書かれていないページに対して、データを書き込むことが可能である。
さらに、メモリコントローラは、それぞれの物理ブロックについて、不良物理ブロックであるか否かを管理してもよい。なお、不良物理ブロックについては、使用不可能である（書き込みおよび消去が可能ではない）ため、すべてのページに有効または無効なデータが記憶されていて、そのうちの少なくとも一部のページに有効なデータが記憶されているとみなされて管理されてもよい。
不良物理ブロックは、何らかの原因によってデータの書き込みに使用不可能な物理ブロックであり、本実施形態では、詳しい説明を省略する。
【００３７】
本実施形態では、説明の便宜上、すべてのページが有効または無効なデータの記憶に使用されていない物理ブロックを空き物理ブロックと呼んで説明する。
空き物理ブロックには、データが消去されて記憶されていない消去済みの物理ブロック、および、無効なデータが記憶されているが消去待ちである物理ブロックが含まれる。
メモリコントローラ１２は、それぞれの物理ブロックに有効なデータが記憶されているか否かを管理しているため、有効でないデータが記憶されている物理ブロックを無効な物理ブロックとして、データの消去対象として管理する。
【００３８】
ここで、有効なデータとは、同じホストアドレスを持つデータで、最新のもの（最後に書かれたもの）で、ホストシステム２から消去要求されていないデータを表す。また、無効なデータとは、有効なデータと同じホストアドレスを持ち、有効なデータよりも前に書き込まれたデータまたは、ホストシステム２から消去要求されたデータを表す。
【００３９】
＜アドレスの管理＞
アドレスの管理について説明する。
図２は、実施形態に係るホストアドレスとメモリシステムのアドレス変換の一例を示す図である。
メモリコントローラ１２は、ホストシステム２のホストアドレスと論理ブロックとが対応付けられる。また、論理ブロックとフラッシュメモリ１１の物理ブロックとが対応付けられる。
メモリコントローラ１２は、アドレス管理テーブルを用いて、これらのアドレスの対応関係を管理する。
【００４０】
ホストシステム２は、ホストアドレス群１１１について、ＬＢＡ（Logical Block Addressing）でアドレスを管理する。ホストアドレス群１１１では、論理セクタごとに論理アドレスを順番に付して管理する。論理セクタは、５１２バイトのデータのブロックである。
【００４１】
図２の例では、ＬＢＡ  ０〜ＬＢＡ  ｍｎ−１の論理アドレスがある。ここで、ｎ、ｍは、それぞれ、１以上の整数を表す。
ＬＢＡ  ０から順番に、ｎ個の連続した論理アドレスごとに１個の論理ブロックが割り当てられる。図２の例では、ｍ個の論理ブロックがある。
【００４２】
メモリコントローラ１２は、それぞれの論理ブロック０〜ｍ−１ごとに、物理ブロックを割り当てる。
なお、メモリコントローラ１２は、データが書き込まれていない論理ブロックには、物理ブロックを割り当てない。
また、物理ブロックのなかでは、ホストデータはＬＢＡの順でなくてもよい。各論理ブロックに割り当てられる物理ブロックは任意の場所の物理ブロックでもよい。
【００４３】
ホストシステム２が論理セクタ単位でアドレスを管理し、メモリコントローラ１２も物理セクタ単位でアドレスを管理する。物理セクタは、例えば、５１２バイトのデータブロックである。
フラッシュメモリ１１は、データの消去単位である物理ブロックでアドレスを管理する。
物理ブロックのなかでは、書き込み単位であるページでアドレスが管理される。ページのなかは、データの単位である物理セクタごとに分割されている。
例えば、ページサイズが８ｋバイトである場合、一例として、１６個の物理セクタのデータ領域と、１６個の物理セクタに対する誤り訂正符号（ＥＣＣ）の領域が含まれる。
物理ブロックの物理セクタの数は、論理ブロックの論理セクタの数以上となる。つまり、論理ブロックの論理セクタに対して、物理ブロックの物理セクタは余っていてもよい。
【００４４】
＜ウェアレベリング＞
メモリコントローラ１２は、フラッシュメモリ１１における各物理ブロックの消去回数を管理する。
本実施形態では、２種類のウェアレベリングの処理が行われる場合を示す。
１つ目の種類として、ホストシステム２からの書き込みコマンドに基づいてデータを移動する第１のウェアレベリング（説明の便宜上、「ダイナミックウェアレベリング」ともいう。）の処理が行われる。
２つ目の種類として、ホストシステム２からの書き込みコマンドに基づかないでデータを移動する第２のウェアレベリング（説明の便宜上、「スタティックウェアレベリング」ともいう。）の処理が行われる。
【００４５】
＜ダイナミックウェアレベリング＞
メモリコントローラ１２は、ホストシステム２から送信されるデータの書き込みコマンドが受信されたことに応じて、ダイナミックウェアレベリングの処理を行う。
ダイナミックウェアレベリングでは、書き込みが行われる論理ブロックに対して割り当てられる物理ブロックの消去回数を平均化する。ただし、ダイナミックウェアレベリングでは、データが書き換えられない物理ブロックについては、書き換えを実行しないので、その物理ブロックが消去されず、その物理ブロックの消去回数が変わらない。
【００４６】
ダイナミックウェアレベリングの処理としては、様々な処理が用いられてもよい。
例えば、ダイナミックウェアレベリングの処理として、特許文献２に記載された第２ウェアレベリング処理と同様な処理が用いられてもよい。
本実施形態におけるダイナミックウェアレベリングの処理を説明する。
本実施形態におけるダイナミックウェアレベリングの処理では、Ｗｒｉｔｅコマンドでホストシステム２から受信されたデータを書き込むときに、論理ブロックの書き換え頻度にしたがって、空き物理ブロックのなかで最大消去回数の空き物理ブロックにデータを書き込む（書き換え頻度が低い場合）か、最小消去回数の空き物理ブロックにデータを書き込む（書き換え頻度が高い場合）。いずれの書き込みを行うかは、例えば、ホストシステム２によって指定されてもよく、あるいは、ランダムに決められてもよい。
【００４７】
図３は、実施形態に係る物理ブロックの書き換えの一例を示す図である。
図３には、論理ブロックと物理ブロックとの割り当て状態の一例を示してある。
なお、図３では、例示のための指標であるu、s、x、y、v、z、a、b、c、dは数値を表す。
【００４８】
図３の例では、論理ブロック群１２１において、論理ブロック０〜ｕ−１を示してある。また、それぞれの論理ブロック０〜ｕ−１に割り当てられた物理ブロック群１３１の物理ブロックを示してある。論理ブロック０と物理ブロックｘとが対応している。論理ブロック１と物理ブロックｙとが対応している。論理ブロックｓと物理ブロックｖとが対応している。論理ブロックｕ−１と物理ブロックｚとが対応している。
物理ブロックｘの消去回数をＥＣｘとする。物理ブロックｙの消去回数をＥＣｙとする。物理ブロックｖの消去回数をＥＣｖとする。物理ブロックｚの消去回数をＥＣｚとする。
なお、図３の例では、説明の便宜上、すべての論理ブロックに物理ブロックが割り当てられる場合を示したが、有効なデータが無い論理ブロックについては物理ブロックが割り当てられない。
【００４９】
図３に示される割り当て状態から行われる（処理Ｔ１）〜（処理Ｔ４）を示す。
本例では、物理ブロックｘおよび物理ブロックｙについては、データの書き込みのコマンドが発生しないとし、データが移動されないとする。
本例では、所定の条件を満たす空き物理ブロックが検索される。当該所定の条件としては、例えば、ダイナミックウェアレベリングの処理によって検索される空き物理ブロックの条件が用いられる。
なお、最小消去回数の空き物理ブロックにホストデータを書き込むのは、一般的なダイナミックウェアレベリングの処理である。一般的なダイナミックウェアレベリングの処理でなければ、空き物理ブロックは消去回数に関係なく取得して、消去回数は平均化しない。
【００５０】
説明を簡単にするために、Ｗｒｉｔｅコマンドは、常に物理ブロックの物理セクタすべてに書き込みを行うという条件が成り立つとする。
（処理Ｔ１）
メモリコントローラ１２は、論理ブロックｓに対してデータの書き込みがあった場合、消去回数が所定の条件を満たす空き物理ブロック（物理ブロックａとする。）に当該データを書き込む。そして、メモリコントローラ１２は、物理ブロックｖのデータを消去する。また、メモリコントローラ１２は、物理ブロックｖの消去回数ＥＣｖに１を加算して更新する。
メモリコントローラ１２は、物理ブロックｖを空き物理ブロックとして管理し、論理ブロックｓと物理ブロックａとを対応付けて管理する。
なお、物理ブロックａの消去回数をＥＣａとする。
また、本例では、メモリコントローラ１２は、消去回数が最小である空き物理ブロックにデータを書き込む場合を示すが、他の例として、論理ブロックの状態によって消去回数が最大または最小である空き物理ブロックを取得し、その取得した空き物理ブロックにデータ書き込むこともある。
【００５１】
（処理Ｔ２）
メモリコントローラ１２は、論理ブロックｕ−１に対してデータの書き込みがあった場合、消去回数が所定の条件を満たす空き物理ブロック（物理ブロックｃとする。）に当該データを書き込む。そして、メモリコントローラ１２は、物理ブロックｚのデータを消去する。また、メモリコントローラ１２は、物理ブロックｚの消去回数ＥＣｚに１を加算して更新する。
メモリコントローラ１２は、物理ブロックzを空き物理ブロックとして管理し、論理ブロックｕ−１と物理ブロックｃとを対応付けて管理する。
なお、物理ブロックｃの消去回数をＥＣｃとする。
【００５２】
（処理Ｔ３）
メモリコントローラ１２は、論理ブロックｓに対してデータの書き込みがあった場合、消去回数が所定の条件を満たす空き物理ブロック（物理ブロックｂとする。）に当該データを書き込む。そして、メモリコントローラ１２は、物理ブロックａのデータを消去する。また、メモリコントローラ１２は、物理ブロックａの消去回数ＥＣａに１を加算して更新する。
メモリコントローラ１２は、物理ブロックａを空き物理ブロックとして管理し、論理ブロックｓと物理ブロックｂとを対応付けて管理する。
なお、物理ブロックｂの消去回数をＥＣｂとする。
【００５３】
（処理Ｔ４）
メモリコントローラ１２は、論理ブロックｕ−１に対してデータの書き込みがあった場合、消去回数が所定の条件を満たす空き物理ブロック（物理ブロックｄとする。）に当該データを書き込む。そして、メモリコントローラ１２は、物理ブロックｃのデータを消去する。また、メモリコントローラ１２は、物理ブロックｃの消去回数ＥＣｃに１を加算して更新する。
メモリコントローラ１２は、物理ブロックｃを空き物理ブロックとして管理し、論理ブロックｕ−１と物理ブロックｄとを対応付けて管理する。
なお、物理ブロックｄの消去回数をＥＣｄとする。
【００５４】
このような処理が繰り返して行われることで、データの書き換えが発生しない物理ブロック（本例では、物理ブロックｘと物理ブロックｙ）以外の物理ブロックの消去回数が大きくなっていく。
【００５５】
このように、ダイナミックウェアレベリングでは、メモリコントローラ１２は、ホストシステム２からのデータを空き物理ブロックへ書き込むときに、消去回数がダイナミックウェアレベリングの処理で規定された条件を満たす空き物理ブロックを選択することで、物理ブロックの消去回数を平均化する。例えば、特許文献２に記載された方法を使用すると、最小消去回数の空き物理ブロックを取得する方法より、消去回数が平均化するが、十分でない。
例えば、書き換えが長い間発生しないデータを保存する物理ブロック（本例では、物理ブロックｘと物理ブロックｙ）については、消去回数が増えず、物理ブロックの消去回数にばらつきが発生し得る。
【００５６】
＜スタティックウェアレベリング＞
メモリコントローラ１２のスタティックウェアレベリングの処理は、例えば、スタティックウェアレベリングの処理を行うための条件が設定されて、当該条件を常時監視し、そして、当該条件が満たされた場合に、スタティックウェアレベリングの処理を行う、といったものである。このため、メモリコントローラ１２は、ホストシステム２からのデータの書き込みコマンドとは無関係に、物理ブロックに書き込まれているデータを空き物理ブロックに書き換えることによってウェアレベリングの処理を行う。
スタティックウェアレベリングでは、データの書き換えが長い間発生しない論理ブロックに対して割り当てられる物理ブロックの消去回数が小さいので、最大消去回数の空き物理ブロックにその論理ブロックの現在有効なデータを移動する。この論理ブロックは、書き換えがあまり発生しないので、この論理ブロックに割り当てられた物理ブロックは、消去回数が増えない。また、データが書き込まれていた物理ブロックは消去され、その後、書き換え頻度が比較的高い論理ブロックに割り当てられることによって消去回数が増える。これによって物理ブロックの消去回数を平均化する。
【００５７】
書き込みがあまり発生しない論理ブロックの数が多いと、一部の物理ブロックに書き込みが集中する。そして、書き込みが集中した物理ブロックの寿命が尽きて空き物理ブロックがなくなると、メモリシステム１の全体が書き込み不可となる。しかしながら、書き込みがあまり発生しない論理ブロックに割り当てられている物理ブロックの消去回数は小さいため、消去回数が寿命よりもはるかに小さい物理ブロックが多数ありシステム全体の消去回数が小さいにも関わらず、フラッシュメモリ１１の寿命が尽きる。
また、フラッシュメモリ１１では、データが物理ブロックに書き込まれてから時間が経つと、時間経過によって当該データが劣化し、当該データの信頼性が落ちる場合がある。このため、データが書き込まれてから経過時間が長いデータについては別の物理ブロックに移動することが良い場合がある。
【００５８】
そこで、スタティックウェアレベリングでは、フラッシュメモリ１１の寿命を延ばすために、物理ブロックの全体にわたって、消去回数を均等にすることを図る。
スタティックウェアレベリングでは、書き込みがあまり発生しない論理ブロックに対しても書き換え処理を行って、すべての物理ブロックの消去回数を平均化する。
なお、書き込みの回数が小さい論理ブロックであっても、最近に書き込みが発生した場合には、書き換える必要は無い。
【００５９】
スタティックウェアレベリングの処理としては、様々な処理が用いられてもよい。
例えば、スタティックウェアレベリングの処理として、特許文献２に記載された第１ウェアレベリング処理と同様な処理が用いられてもよい。
本実施形態におけるスタティックウェアレベリングの処理を説明する。
メモリコントローラ１２は、ホストシステム２からのデータを書き込むとき、そのときのフラッシュメモリ１１の最大消去回数に対応する値を論理ブロックに保存し、その後、その最大消去回数に対応する値と現在のフラッシュメモリ１１の最大消去回数に対応する値との差が閾値以上なら、その論理ブロックのデータを他の物理ブロック（空き物理ブロックのうち最大消去回数のもの）へ移動させる。
【００６０】
ここで、フラッシュメモリ１１の最大消去回数に対応する値は、フラッシュメモリ１１に書き込みが行われると以前のデータが書き込まれている物理ブロックを消去することによって増える値なので、この値が小さいと書き込みが古いということになる。このため、現在のフラッシュメモリ１１の最大消去回数に対応する値と、論理ブロックが持つフラッシュメモリ１１の最大消去回数に対応する値との差が大きいと、メモリコントローラ１２は、この論理ブロックはしばらく更新されていないと判断し、この論理ブロックに割り当てられている物理ブロックの消去回数も大きくないと判断する。
この論理ブロックを書き換えると、データがリフレッシュされ、書き換え前の物理ブロックは、書き換え頻度が比較的高い別の論理ブロックのホストデータの書き込みに使用され、消去回数が増えることが期待される。また、スタティックウェアレベリングの処理でデータが書き込まれた物理ブロックは、最大消去回数の空き物理ブロックなので消去回数が大きく、この論理ブロックの書き換え頻度が比較的低いため、この物理ブロックの消去回数は、しばらく更新されない。
消去回数が小さい物理ブロックは、書き換え頻度が比較的高い論理ブロックに割り当てられるので消去回数が増加し、消去回数が大きい物理ブロックは、書き換え頻度が比較的低い論理ブロックに割り当てられるので、消去回数が更新されないため、消去回数が平均化する。
【００６１】
具体例を示す。
ここで、システム最大消去回数は、物理ブロックを管理する情報に基づいて得られ、フラッシュメモリ１１における最大の消去回数を示す。
登録消去回数は、論理ブロックごとに、割り当てられている物理ブロックとともに管理される回数であり、当該物理ブロックの消去回数ではなく、当該物理ブロックが割り当てられたときのシステム最大消去回数に対応する値を示す。
最小登録消去回数は、最小の登録消去回数を示す。
空き最大消去回数は、物理ブロックを管理する情報に基づいて得られ、１以上の空き物理ブロックのそれぞれに対応した１以上の消去回数のうちの最大の消去回数を示す。
【００６２】
メモリコントローラ１２は、システム最大消去回数に対応する値と最小登録消去回数との差が所定の閾値Ｔｈ１未満であるか否かを判断する。この判断結果が否定である場合、メモリコントローラ１２は、システム最大消去回数と空き最大消去回数との差が所定の閾値Ｔｈ２未満であるか否かを判断する。この判断が肯定である場合、メモリコントローラ１２は、最小登録消去回数の論理ブロックに割り当てられている物理ブロック（コピー元物理ブロック）から空き最大消去回数に対応した空き物理ブロック（コピー先物理ブロック）にデータをコピーする。メモリコントローラ１２は、コピー先物理ブロックを、コピー元物理ブロックに代えてコピー元物理ブロックの割り当て先の論理ブロックに割り当てる。メモリコントローラ１２は、コピー元物理ブロックからデータを消去し、コピー元物理ブロックの消去回数を更新し、コピー元物理ブロックを空き物理ブロックとして管理する。このとき、コピーするデータは、有効なデータだけを行ってもよく、また、論理アドレス順に行ってもよい。
一方、上記の２つの判断において、システム最大消去回数に対応する値と最小登録消去回数との差が所定の閾値Ｔｈ１未満である場合、または、システム最大消去回数と空き最大消去回数との差が所定の閾値Ｔｈ２未満ではない場合には、メモリコントローラ１２は、データコピー処理を行わない。
【００６３】
スタティックウェアレベリングの処理では、書き換えが長い間（所定の閾値以上の時間）発生していない論理ブロックで決定する。なお、書き換えが長い間発生していないことは、必ずしも、消去回数が小さいことではない。
図３の例では、例えば、物理ブロックｘ（消去回数ＥＣｘ）あるいは物理ブロックｙ（消去回数ＥＣｙ）などについて、スタティックウェアレベリングの処理を行うための条件を満たせば、スタティックウェアレベリングの処理が行われる。
【００６４】
このように、スタティックウェアレベリングでは、メモリコントローラ１２は、書き換えが長い間発生していない物理ブロックのデータについて、ホストシステム２からの書き込みコマンドが発生しない場合においても、他の物理ブロックへデータを移動することが行われる。これにより、書き換えが長い間発生していない物理ブロックが空き物理ブロックになり、その物理ブロックに対してデータの書き換えが頻繁に起こるようになり、物理ブロックの消去回数が全体で平均化される。
すなわち、スタティックウェアレベリングは、書き込みがあまり発生しない論理ブロックに対する書き換え処理である。
【００６５】
＜スタティックウェアレベリングの問題点＞
スタティックウェアレベリングは、バックグラウンドで行われる。バックグラウンドは、メモリコントローラ１２がコマンド処理またはリセット処理を実行していないときの状態である。バックグラウンドでは、ホストシステム２は、メモリコントローラ１２が何も実行していないと判断して、メモリコントローラ１２の電源を遮断することがある。
フラッシュメモリ１１へのデータの書き込み中に突然の電源遮断があった場合、メモリコントローラ１２はデータを正常に書き込めない可能性があり、当該データを次に読み出すときに正常に読み出せないことがある。つまり、当該データが失われることがある。なお、次回の起動時で電源遮断のリカバリ処理が行われても、完全であるとは言えない。
なお、スタティックウェアレベリングの処理では、Ｗｒｉｔｅコマンドで、ホストデータを書き込む前に、すべてのユーザデータブロックで最小消去回数のブロックを検索して、それが有効なデータが書き込まれている物理ブロックである場合には、この物理ブロックの有効なデータを最大消去回数の空き物理ブロックに移動して、最小消去回数の物理ブロックにホストデータを書き込むという方法もある。この方法は、コマンド中の書き換えなので、電源遮断を気にすることはないが、コマンド時間が長くなり、パフォーマンスが悪くなる。また、ホストがタイムアウトを設定していると、コマンドがタイムアウトしたりする。そのため、Ｗｒｉｔｅコマンドでのスタティックウェアレベリングの処理はほとんど行われない。
本実施形態では、バックグラウンドでのスタティックウェアレベリングの処理で説明する。
【００６６】
＜スタティックウェアレベリングの禁止論理ゾーン＞
スタティックウェアレベリングの処理を行わない論理ブロックの範囲をスタティックウェアレベリングの禁止論理ゾーン（説明の便宜上、単に「禁止論理ゾーン」という）という。また、スタティックウェアレベリングの処理を行う論理ブロックの範囲（禁止論理ゾーン以外のすべての論理ブロック）をスタティックウェアレベリングの許可論理ゾーン（説明の便宜上、単に「許可論理ゾーン」という）という。
本実施形態に係る禁止論理ゾーンについて説明する。
フラッシュメモリ１１に重要なデータが書き込まれている場合、電源遮断によるエラーを避けることが望まれる。そこで、メモリコントローラ１２では、重要なデータのＬＢＡの範囲に対応する論理ブロックに対してバックグラウンドでの書き換えを行わないことが望まれる。
ここで、重要なデータとしては、例えば、オペレーティングシステム（ＯＳ）のシステムデータなどがある。本実施形態では、ホストシステム２が重要なデータを決定する。重要なデータは、あらかじめ定められていてもよい。
【００６７】
本実施形態では、メモリコントローラ１２では、論理領域に禁止論理ゾーンを設定する。本実施形態では、メモリシステム１の初期化において、ホストシステム２がスタティックウェアレベリングの処理を行わないＬＢＡ範囲を指定することで、メモリコントローラ１２は、そのスタティックウェアレベリングの処理を行わないＬＢＡ範囲が含まれるすべての論理ブロックを禁止論理ゾーンとして設定する。つまり、本実施形態では、メモリコントローラ１２は、ホストシステム２からの指定にしたがって、禁止論理ゾーンを設定する。
禁止論理ゾーンの設定は、例えば、特許文献３に記載された方法で設定されてもよい。
【００６８】
ここで、フラッシュメモリ１１では、一般的に消去回数の増加に従って、セルの品質が悪くなっていくと言われている。フラッシュメモリ１１では、消去回数の増加で、書き込みまたは消去の時間がかかったりして、最後は、書き込みまたは消去ができなくなる。また、フラッシュメモリ１１では、消去回数の増加で、データの保持能力が落ちたりして、読み出しエラーが発生する。
禁止論理ゾーンを設定することで、その範囲では、スタティックウェアレベリングの処理での書き込み中の電源遮断によるデータの損失がなくなる。
【００６９】
また、仮に、禁止論理ゾーンと許可論理ゾーンとの両方について同じ物理ブロックが使用されるとすると、禁止論理ゾーンに対しても消去回数が大きい物理ブロックを使用する可能性が高くなってしまう。この場合、当該物理ブロックの品質が悪く、データの劣化が発生し得る。
そこで、本実施形態では、禁止論理ゾーンの論理ブロックに割り当てられる物理ブロックの領域を固定する。この物理ブロックの領域をスタティックウェアレベリングの禁止物理ゾーン（説明の便宜上、単に「禁止物理ゾーン」という）とし、許可論理ゾーンの論理ブロックに割り当てられる物理ブロックの領域をスタティックウェアレベリングの許可物理ゾーン（説明の便宜上、単に「許可物理ゾーン」という）とする。
メモリコントローラ１２は、論理領域に設定される禁止論理ゾーンに対するホストデータを、物理領域に設定される禁止物理ゾーンの物理ブロックに書き込む。
本実施形態では、禁止論理ゾーンには重要なデータが割り当てられることが想定されており、書き換えが許可論理ゾーンよりも少ないため、禁止論理ゾーンに対応する禁止物理ゾーンを設定することで、禁止論理ゾーンに割り当てられる物理ブロックの品質を下げないことができる。
【００７０】
なお、本実施形態では、ホストシステム２は論理領域のアドレスであるＬＢＡを用いてスタティックウェアレベリングの禁止範囲を指定するため、論理ブロックの境目ではないところに、スタティックウェアレベリングの禁止のＬＢＡ範囲と許可のＬＢＡ範囲との境目が設定される場合があり得る。このため、本実施形態では、メモリコントローラ１２は、例えば、スタティックウェアレベリングの禁止のＬＢＡ範囲が少しでも存在する論理ブロックのすべての論理セクタを禁止論理ゾーンとして設定する。
【００７１】
メモリコントローラ１２は、論理領域に設定される許可論理ゾーンに対するスタティックウェアレベリングおよびダイナミックウェアレベリングの処理でユーザデータを、物理領域に設定される許可物理ゾーンの物理ブロックに書き込む。それによって、許可物理ゾーンのなかで、物理ブロックの消去回数は平均化される。
なお、許可論理ゾーンについて、ダイナミックウェアレベリングの処理は、論理ブロックの書き換え頻度によって最小消去回数または最大消去回数の空き物理ブロックを取得する方法を行ってもよく、論理ブロックの書き換え頻度に関係なく最小消去回数の空き物理ブロックを取得する方法を行ってもよい。また、このとき、どちらの方法を行うかをホストシステム２が指定してもよい。
また、許可論理ゾーンについて、ダイナミックウェアレベリングの処理は行われなくてもよいが、本実施形態のようにダイナミックウェアレベリングの処理を行うと、消去回数の平均化をより図ることができる。
【００７２】
メモリコントローラ１２は、禁止論理ゾーンに対するダイナミックウェアレベリングの処理では、ホストデータを禁止物理ゾーンの物理ブロックに書き込む。禁止論理ゾーンに対するダイナミックウェアレベリングの処理は、論理ブロックの書き換え頻度によって最小消去回数または最大消去回数の空き物理ブロックを取得する方法を行ってもよく、論理ブロックの書き換え頻度に関係なく最小消去回数の空き物理ブロックを取得する方法を行ってもよい。また、このとき、どちらの方法を行うかをホストシステム２が指定してもよい。
また、禁止論理ゾーンについて、ダイナミックウェアレベリングの処理は行われなくてもよいが、禁止論理ゾーンのそれぞれの論理ブロックに対して書き換え回数に差がある場合、ダイナミックウェアレベリングの処理を行うと、物理ブロックの消去回数は適宜平均化される。禁止論理ゾーンのなかでは、スタティックウェアレベリングは行われないため、物理ブロックの消去回数が不均等になってもよい。
【００７３】
本実施形態では、ホストシステム２は、メモリシステム１の初期化の際に、論理領域に設定される禁止論理ゾーンおよび許可論理ゾーンに対して、ダイナミックウェアレベリングの処理を指定する。ここで、禁止論理ゾーンおよび許可論理ゾーンに対する空き物理ブロックの取得手法は、メモリコントローラ１２にとっては任意で良いため、本実施形態では、ホストシステム２が指定する。
【００７４】
ホストシステム２は、スタティックウェアレベリングの禁止範囲を設定したＬＢＡのみでアクセスする。ホストシステム２は、スタティックウェアレベリングの処理を禁止するＬＢＡの範囲を複数設定してもよい。
【００７５】
メモリコントローラ１２は、ホストシステム２から指定されたスタティックウェアレベリングの禁止ＬＢＡの範囲から禁止論理ゾーンを決定する。そして、メモリコントローラ１２は、禁止論理ゾーンの論理ブロック数から禁止物理ゾーンの物理ブロックの数を求め、その物理ブロック数の物理ブロックをユーザデータブロックに指定し、その物理ブロックが存在する範囲を禁止物理ゾーンとする。
なお、禁止論理ゾーンの論理ブロック数に所定数を加算した結果の数の物理ブロックを禁止物理ゾーンとして設定してもよい。当該所定数は、メモリコントローラ１２において設定される。当該所定数は、あらかじめメモリコントローラ１２に設定されてもよい。また、許可物理ゾーンは、ユーザデータブロックの残りの物理ブロックとする。
【００７６】
一般的なダイナミックウェアレベリングの処理では、ホストデータの書き込みを最小消去回数の空き物理ブロックに行う。
さらに、特許文献２に記載された手法では、論理ブロックへの書き込み頻度によって空き物理ブロックを変更する。
また、特許文献２には、スタティックウェアレベリングの処理についても記載がある。
また、特許文献３には、スタティックウェアレベリングの処理を禁止する禁止範囲について記載がある。
禁止論理ゾーンおよび許可論理ゾーンにおけるダイナミックレベルウェアレベリングの処理は、２つの手法を選択することが可能であってもよく、あるいは、１つの手法が固定的に設定されてもよい。
【００７７】
図４は、実施形態に係る論理ブロックと物理ブロックとの対応関係の一例を示す図である。
図４の例では、論理ブロック群２１１において、論理ブロック０〜９９が禁止論理ゾーンになっており、論理ブロック１００〜８９９が許可論理ゾーンになっている。ここで、図４に示されるこれらの０〜８９９は論理ブロック番号である。
また、図４の例では、物理ブロック群２２１において、物理ブロック０〜１０３が禁止物理ゾーンになっており、物理ブロック１０４〜１０２３が許可物理ゾーンになっている。ここで、図４に示されるこれらの０〜１０２３は物理ブロック番号である。
【００７８】
図４の例では、まず、ホストシステム２は、スタティックウェアレベリングの禁止範囲のＬＢＡを設定する。
メモリコントローラ１２は、禁止論理ゾーンとする論理ブロック０〜９９を設定する。また、メモリコントローラ１２は、禁止物理ゾーンとする物理ブロック０〜１０３を設定する。メモリコントローラ１２は、禁止論理ゾーンとする論理ブロック０〜９９と、禁止物理ゾーンとする物理ブロック０〜１０３との対応関係を記憶して管理する。また、メモリコントローラ１２は、許可論理ゾーンとする論理ブロック１００〜８９９と、許可物理ゾーンとする物理ブロック１０４〜１０２３との対応関係を記憶して管理する。
【００７９】
＜メモリコントローラにおける処理＞
図５は、実施形態に係る禁止物理ゾーンの設定の処理の手順の一例を示す図である。
（ステップＳ１）
ホストシステム２からスタティックウェアレベリングの禁止範囲をＬＢＡの範囲を受信する。そして、ステップＳ２の処理へ移行する。
【００８０】
（ステップＳ２）
メモリコントローラ１２は、ホストシステム２から受信したスタティックウェアレベリングの禁止範囲のＬＢＡ範囲に対応する禁止論理ゾーンおよび禁止論理ゾーンの論理ブロック数を決定する。そして、ステップＳ３の処理へ移行する。
【００８１】
（ステップＳ３）
メモリコントローラ１２は、決定した禁止論理ゾーンの論理ブロック数から禁止物理ゾーンの物理ブロック数を決定し、ユーザデータブロックに禁止物理ゾーンの物理ブロックを設定する。そして、ステップＳ４の処理へ移行する。
【００８２】
（ステップＳ４）
メモリコントローラ１２は、設定したこれらの情報を保存する。そして、本フローの処理を終了する。
設定した情報の保存は、フラッシュメモリ１１の管理情報などに行う。
ここで、禁止論理ゾーン以外の論理ブロックは、許可論理ゾーンに存在する。また、禁止物理ゾーン以外のユーザデータブロックの物理ブロックは、許可物理ゾーンに存在する。なお、許可論理ゾーンおよび許可物理ゾーンがいずれであるかは保存しなくても、禁止論理ゾーン以外の論理ブロックは、すべて許可論理ゾーンであると判断することができ、禁止物理ゾーン以外のユーザデータブロックの物理ブロックは、すべて許可物理ゾーンの物理ブロックであると判断することができる。
【００８３】
図６は、実施形態に係るホストデータの書き込みの手順の一例を示す図である。
（ステップＳ２１）
メモリコントローラ１２は、ホストシステム２からデータの書き込みのコマンドを受ける。そして、ステップＳ２２の処理へ移行する。
【００８４】
（ステップＳ２２）
メモリコントローラ１２は、ホストシステム２からの書き込み指定された論理アドレスが禁止論理ゾーンであるか否かを判定する。
この結果、メモリコントローラ１２は、ホストシステム２からの書き込み指定された論理アドレスが禁止論理ゾーンであると判定した場合には（ステップＳ２２：ＹＥＳ）、ステップＳ２３の処理へ移行する。
一方、メモリコントローラ１２は、ホストシステム２からの書き込み指定された論理アドレスが禁止論理ゾーンではないと判定した場合には（ステップＳ２２：ＮＯ）、ステップＳ２４の処理へ移行する。
【００８５】
（ステップＳ２３）
メモリコントローラ１２は、禁止物理ゾーンの物理ブロックにホストデータの書き込みを行い、本実施形態では、ダイナミックウェアレベリングの処理を行う。そして、本フローの処理を終了する。
（ステップＳ２４）
メモリコントローラ１２は、許可物理ゾーンの物理ブロックにホストデータの書き込みを行い、本実施形態では、ダイナミックウェアレベリングの処理を行う。そして、本フローの処理を終了する。
なお、メモリコントローラ１２は、許可論理ゾーンでは、スタティックウェアレベリングの処理を行う。
【００８６】
禁止論理ゾーンあるいは許可論理ゾーンにおいてダイナミックウェアレベリングの処理を行う場合、メモリコントローラ１２は、論理ブロックの書き換え回数によって最小消去回数または最大消去回数の空き物理ブロックを取得する方法を行うか、論理ブロックの書き換え回数に関わらず最小消去回数の空き物理ブロックを取得する方法を行う。また、どちらの方法を行うかをホストシステム２が指定してもよい。また、いずれの方法にも対応しない場合もあり得る。
【００８７】
図７は、実施形態に係るスタティックウェアレベリングの処理の手順の一例を示す図である。
（ステップＳ４１）
メモリコントローラ１２は、対象の論理ブロックが許可論理ゾーンであるか否かを判定する。
この判定の結果、メモリコントローラ１２は、対象の論理ブロックが許可論理ゾーンであると判定した場合には（ステップＳ４１：ＹＥＳ）、ステップＳ４２の処理へ移行する。
一方、この判定の結果、メモリコントローラ１２は、対象の論理ブロックが許可論理ゾーンではない（つまり、禁止論理ゾーンである）と判定した場合には（ステップＳ４１：ＮＯ）、本フローの処理を終了する。
【００８８】
（ステップＳ４２）
メモリコントローラ１２は、対象の論理ブロックの登録消去回数をチェックして、書き換え対象であるか否かを判定する。
この判定の結果、メモリコントローラ１２は、対象の論理ブロックが書き換え対象であると判定した場合には（ステップＳ４２：ＹＥＳ）、ステップＳ４３の処理へ移行する。
一方、この判定の結果、メモリコントローラ１２は、対象の論理ブロックが書き換え対象ではないと判定した場合には（ステップＳ４２：ＮＯ）、本フローの処理を終了する。
【００８９】
（ステップＳ４３）
メモリコントローラ１２は、許可物理ゾーンから最大消去回数の空き物理ブロックを取得し、書き換え対象の論理ブロックのデータを移動する。このとき、メモリコントローラ１２は、消去回数から書き換えの可否の判定を行う。そして、本フローの処理を終了する。
【００９０】
＜実施形態のまとめ＞
本実施形態に係るメモリシステム１におけるメモリコントローラ１２では、論理領域に設定される禁止論理ゾーンにおいて、ウェアレベリングを適宜行いつつも、フラッシュメモリに記憶された重要なデータが失われてしまうことを防止することができる。
本実施形態に係るメモリコントローラ１２では、許可物理ゾーンの物理ブロックの消去回数は多くなり信頼性が低くなることから、禁止論理ゾーンに対する禁止物理ゾーンを固定したことで、禁止論理ゾーンに対する物理ブロックの品質を維持し、データの信頼性の低下を抑制することができる。これは、禁止論理ゾーンと許可論理ゾーンに対応してそれぞれ禁止物理ゾーンと許可物理ゾーンに分けたことによる効果であり、例えば、ホストシステム２が禁止論理ゾーンに対して書き込みを許可論理ゾーンほど行わなければ、禁止論理ゾーンに対する禁止物理ゾーンの物理ブロックの消去回数が許可論理ゾーンに対する許可物理ゾーンの物理ブロックの消去回数ほど大きくならない。
本実施形態に係るメモリコントローラ１２では、それぞれの物理ゾーンの物理ブロックの消去回数を管理することができる。
【００９１】
スタティックウェアレベリングの禁止範囲は、ホストシステム２によってＬＢＡで指定される。例えば、本実施形態とは違って、スタティックウェアレベリングにおいて、すべての物理ブロックのなかから空き物理ブロックが選択されると、消去回数の大きい（つまり、品質の悪い）空き物理ブロックに重要なデータが記憶されることがあり、当該データが劣化し易くなる場合がある。
そこで、本実施形態に係るメモリコントローラ１２では、重要なデータが書き込まれている禁止論理ゾーンのデータについては、禁止物理ゾーンにある消去回数の小さい（つまり、品質の良い）空き物理ブロックへ書き込むようにする。禁止論理ゾーンでは、データの書き換えがあまり発生しないことから、データが更新されることが比較的少なく、禁止物理ゾーンの物理ブロックの消去回数が増加しにくい。
【００９２】
本実施形態に係るメモリコントローラ１２では、禁止論理ゾーンに対する禁止物理ゾーンを指定することで、禁止論理ゾーンと禁止物理ゾーンとを対応させ、許可論理ゾーンと許可物理ゾーンとを対応させる。そして、メモリコントローラ１２では、禁止論理ゾーンのなかで、ダイナミックウェアレベリングの処理を行う。これにより、許可物理ゾーンと比べて、禁止物理ゾーンの物理ブロックは、消去回数が小さくなり、状態の良い物理ブロックとなることが図られる。
【００９３】
ここで、本実施形態では、ダイナミックウェアレベリングの処理として、ホストデータの書き込みにおいて、論理ブロックの状態から、最小消去回数または最大消去回数の空き物理ブロックへデータを書き込む処理を行う。
他の例として、このような処理の代わりに、消去回数が所定の条件により小さいと判定される空き物理ブロックへデータを書き込む処理が用いられてもよい。当該所定の条件としては、例えば、消去回数が所定の閾値以下である場合に消去回数が小さいと判定する条件が用いられてもよく、あるいは、消去回数が最小である方から所定値だけ大きいところまでを消去回数が小さいと判定する条件が用いられてもよい。なお、条件が満たされる空き物理ブロックが２個以上ある場合には、例えば、ランダム、あるいは、あらかじめ定められた任意の条件によって、１個の空き物理ブロックが決定されてもよい。
また、他の例として、論理ブロックの状態に関わらず最小消去回数の空き物理ブロックへホストデータを書き込む処理を行ってもよい。
また、ホストシステム２によって、これらのいずれかの処理を指定してもよい。
【００９４】
また、スタティックウェアレベリングの処理では、データの移動を行う論理ブロックを決定するための条件としては、様々な条件が用いられてもよい。なお、条件が満たされる論理ブロックが２個以上ある場合には、例えば、ランダム、あるいは、あらかじめ定められた任意の条件によって、１個の物理ブロックが決定されてもよい。
また、スタティックウェアレベリングの処理では、データの移動先とする消去回数が大きい物理ブロックを決定するための条件としては、様々な条件が用いられてもよい。当該条件としては、例えば、最大消去回数の空き物理ブロックを採用する条件が用いられてもよく、消去回数が所定の閾値を超える空き物理ブロックを採用する条件が用いられてもよく、あるいは、消去回数が最大である方から所定値だけ小さいところまでの空き物理ブロックを採用する条件が用いられてもよい。なお、条件が満たされる空き物理ブロックが２個以上ある場合には、例えば、ランダム、あるいは、あらかじめ定められた任意の条件によって、１個の空き物理ブロックが決定されてもよい。
【００９５】
以上のように、本実施形態では、スタティックウェアレベリングの処理を行う許可論理ゾーンと、スタティックウェアレベリングの処理を行わない禁止論理ゾーンが設定される。スタティックウェアレベリングの処理は、基本的にバックグラウンドで行われるため、データの書き込み中の電源遮断によるデータの損失防止が必要である。
また、本実施形態では、禁止論理ゾーンに対応する禁止物理ゾーンを固定する。禁止論理ゾーンは、重要なデータが書き込まれることが多く、消去回数が小さい物理ブロック（つまり、品質が良い物理ブロック）に書き込まれることが好ましい。なお、フラッシュメモリ１１では、物理ブロックの品質は当該物理ブロックの消去回数の増加にともなって劣化していく。
禁止論理ゾーンの範囲は、連続した範囲であってもよく、あるいは、連続しない複数の範囲であってもよい。
【００９６】
ダイナミックウェアレベリングの処理で、論理ブロックの状態によって最小消去回数または最大消去回数の空き物理ブロックを取得することと、論理ブロックの状態に関わらず最小消去回数の空き物理ブロックを取得することを選択する場合、ホストシステム２は、メモリシステム１の初期化で指定する。
他の例として、このような指定の代わりに、ランダムにいずれかが選択されて実行されてもよい。ここで、禁止論理ゾーンに対する空き物理ブロックの取得手法は、メモリコントローラ１２にとっては任意で良いため、本実施形態では、ホストシステム２が指定する。
【００９７】
特許文献２に記載されたダイナミックウェアレベリングの処理は、Ｗｒｉｔｅコマンドでの書き込みにおいて、書き換え頻度が高い論理ブロックの書き換えに対しては、最小消去回数の空き物理ブロックに対してデータが書き込まれる。一方、書き換え頻度が低い論理ブロックの書き換えに対しては、最大消去回数の空き物理ブロックに対してデータが書き込まれる。
スタティックウェアレベリングの処理は、書き込みが行われてから相対的に長い時間が経過した論理ブロックに対して、新しい物理ブロックへの書き換えを行う。このときの物理ブロックは、最大消去回数の空き物理ブロックとする。
【００９８】
論理領域に設定される禁止論理ゾーンに対するダイナミックウェアレベリングの処理について説明する。
禁止論理ゾーンに対するＷｒｉｔｅコマンドの書き込みで、論理ブロックの書き換え頻度によるダイナミックウェアレベリングの処理が行われる場合、当該禁止論理ゾーンの論理ブロックに対する書き込み頻度が低いことが多いため、最大消去回数の空き物理ブロックへの書き込みになる可能性が高い。
禁止論理ゾーンに対応する禁止物理ゾーンにおける物理ブロックの消去回数は、書き換え頻度が低い場合には、それほど大きくならないことから、ダイナミックウェアレベリングの処理が行われてもよいが、禁止物理ゾーンにおける物理ブロックの消去回数を均等にするためには、論理ブロックの書き換え頻度に関わらず最小消去回数の空き物理ブロックを使用する方が好ましい。
禁止論理ゾーンと許可論理ゾーンの境目が同居する論理ブロックは、書き込みが少ないとは限らず、この論理ブロックでは書き込みが多い可能性がある。こういうような場合、禁止論理ゾーンの論理ブロックの書き換え頻度の差が論理ブロックによって大きな差があり、論理ブロックの書き換え頻度によって最小消去回数または最大消去回数の空き物理ブロックを取得する方法を使用した方がよい。
禁止物理ゾーンでは、ランダムに空き物理ブロックを取得してもよいが、可能であれば、上記の２つの手法のいずれかが好ましい。このため、本実施形態では、ホストシステム２がいずれかを指定する。
【００９９】
論理領域に設定される許可論理ゾーンに対するダイナミックウェアレベリングの処理では、論理ブロックの書き換え頻度によって最小消去回数または最大消去回数の空き物理ブロックを取得する方法が物理ブロックの消去回数を最も均等に行うことができる。この代わりに、論理ブロックの書き換え頻度に関わらず最小消去回数の空き物理ブロックを取得する手法が用いられてもよい。
なお、許可論理ゾーンでは、ランダム取得でもよいが、論理ブロックの書き換え頻度によって最小消去回数または最大消去回数の空き物理ブロックを取得する方法にした方がより物理ブロックの消去回数が平均化する。論理ブロックの書き換え頻度に関わらず最小消去回数を取得すると、書き換えがあまり発生しない論理ブロックで消去回数が小さい物理ブロックに書き込まれると、スタティックウェアレベリングの対象になるまで、その物理ブロックの消去回数がそのままなので、消去回数が他の物理ブロックと大きな差になる。
【０１００】
一構成例として、メモリコントローラ１２は、ホストシステム２から与えられるコマンドに基づいて、複数のページを含む物理ブロックを複数含むフラッシュメモリ１１に対するアクセスを制御する。
メモリコントローラ１２は、論理領域に設定される第１の論理領域の論理ブロック（本実施形態では、禁止論理ゾーンに対応する論理ブロック）と物理領域に設定される第１の物理領域の物理ブロック（本実施形態では、禁止物理ゾーンに対応する物理ブロック）との対応関係を示す第１の対応関係を第１の記憶部（本実施形態では、例えば、フラッシュメモリ１１）に記憶する。
メモリコントローラ１２は、第１の物理領域を、ホストシステム２から第１の論理領域へのデータの書き込みのコマンドを受けなくてもデータを移動する処理を禁止する領域として管理する。
【０１０１】
一構成例として、メモリコントローラ１２は、ホストシステム２から第１の論理領域へのデータの書き込みのコマンドを受けた場合に、第１の処理によって、第１の対応関係に基づいて、第１の物理領域にデータを書き込む処理を行う。
第１の処理（本実施形態では、ダイナミックウェアレベリングの処理の例）は、第１の論理領域の論理ブロックの状態に基づいて、第１の物理領域の書き込み可能な物理ブロックのうち、最小消去回数または最大消去回数の物理ブロックに前記データを書き込む処理である。
【０１０２】
一構成例として、メモリコントローラ１２は、ホストシステム２から第１の論理領域へのデータの書き込みのコマンドを受けた場合に、第１の処理によって、第１の対応関係に基づいて、第１の物理領域にデータを書き込む処理を行う。
第１の処理は、第１の物理領域の書き込み可能な物理ブロックのうち、最小消去回数の物理ブロックにデータを書き込む処理である。
【０１０３】
一構成例として、メモリコントローラ１２は、ホストシステム２から第１の論理領域へのデータの書き込みのコマンドを受けた場合に、第１の処理によって、第１の対応関係に基づいて、第１の物理領域にデータを書き込む処理を行う。
第１の処理は、第１の論理領域の論理ブロックの状態に基づいて、第１の物理領域の書き込み可能な物理ブロックのうち、最小消去回数または最大消去回数の物理ブロックにデータを書き込む処理と、第１の物理領域の書き込み可能な物理ブロックのうち、最小消去回数の物理ブロックにデータを書き込む処理と、のうちで、ホストシステム２から指定されたいずれかである。
【０１０４】
一構成例として、メモリコントローラ１２は、論理領域に第１の論理領域とは異なる第２の論理領域の論理ブロック（本実施形態では、許可論理ゾーンに対応する論理ブロック）を、物理領域に第１の物理領域とは異なる第２の物理領域の物理ブロック（本実施形態では、許可物理ゾーンに対応する物理ブロック）をそれぞれ設定し、それらの対応関係を示す第２の対応関係を第２の記憶部（本実施形態では、例えば、フラッシュメモリ１１）に記憶する。
メモリコントローラ１２は、ホストシステム２から第２の論理領域へのデータの書き込みのコマンドを受けた場合に、第１の処理によって、第２の対応関係に基づいて、第２の物理領域にデータを書き込む処理を行う。
メモリコントローラ１２は、第２の物理領域を、ホストシステム２から第２の論理領域へのデータの書き込みのコマンドを受けなくてもデータを移動する第２の処理（本実施形態では、スタティックウェアレベリングの処理の例）を許可する領域として管理する。
第１の処理は、第２の論理領域の論理ブロックの状態に基づいて、第２の物理領域の書き込み可能な物理ブロックのうち、最小消去回数または最大消去回数の物理ブロックにデータを書き込む処理である。
【０１０５】
一構成例として、メモリコントローラ１２は、第１の論理領域とは異なる第２の論理領域の論理ブロックと第１の物理領域とは異なる第２の物理領域の物理ブロックとの対応関係を示す第２の対応関係を第２の記憶部に記憶する。
メモリコントローラ１２は、ホストシステム２から第２の論理領域へのデータの書き込みのコマンドを受けた場合に、第１の処理によって、第２の対応関係に基づいて、第２の物理領域にデータを書き込む処理を行う。
メモリコントローラ１２は、第２の物理領域を、ホストシステム２から第２の論理領域へのデータの書き込みのコマンドを受けなくてもデータを移動する第２の処理を許可する領域として管理する。
第１の処理は、第２の物理領域の書き込み可能な物理ブロックのうち、最小消去回数の物理ブロックにデータを書き込む処理である。
【０１０６】
一構成例として、メモリコントローラ１２は、第１の論理領域とは異なる第２の論理領域の論理ブロックと第１の物理領域とは異なる第２の物理領域の物理ブロックとの対応関係を示す第２の対応関係を第２の記憶部に記憶する。
メモリコントローラ１２は、ホストシステム２から第２の論理領域へのデータの書き込みのコマンドを受けた場合に、第１の処理によって、第２の対応関係に基づいて、第２の物理領域にデータを書き込む処理を行う。
メモリコントローラ１２は、第２の物理領域を、ホストシステム２から第２の論理領域へのデータの書き込みのコマンドを受けなくてもデータを移動する第２の処理を許可する領域として管理する。
第１の処理は、第２の論理領域の論理ブロックの状態に基づいて、第２の物理領域の書き込み可能な物理ブロックのうち、最小消去回数または最大消去回数の物理ブロックにデータを書き込む処理と、第２の物理領域の書き込み可能な物理ブロックのうち、最小消去回数の物理ブロックにデータを書き込む処理と、のうちで、ホストシステム２から指定されたいずれかである。
なお、通常、第１の論理領域以外の論理領域が第２の論理領域となり、第１の物理領域以外の物理領域が第２の物理領域となるため、第２の対応関係は記憶しておかなくても良い。
【０１０７】
一構成例として、複数のページを含む物理ブロックを複数含むフラッシュメモリ１１と、ホストシステム２から与えられるコマンドに基づいて、フラッシュメモリ１１に対するアクセスを制御する上記構成例のメモリコントローラ１２と、を備えるメモリシステム１である。
【０１０８】
以上、本発明の実施形態について図面を参照して詳述したが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【０１０９】
また、以上に説明した装置（例えば、メモリコントローラ１２など）における任意の構成部の機能を実現するためのプログラムを、コンピューター読み取り可能な記録媒体に記録し、そのプログラムをコンピューターシステムに読み込ませて実行するようにしてもよい。なお、ここでいう「コンピューターシステム」とは、ＯＳ（Operating  System）あるいは周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ（Compact  Disk）−ＲＯＭ等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークあるいは電話回線等の通信回線を介してプログラムが送信された場合のサーバーあるいはクライアントとなるコンピューターシステム内部の揮発性メモリー（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【０１１０】
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピューターシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピューターシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）あるいは電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【符号の説明】
【０１１１】
１…メモリシステム、２…ホストシステム、１１…フラッシュメモリ、１１Ａ…第１領域、１１Ｂ…第２領域、１１Ｃ…第３領域、１２…メモリコントローラ、１２Ａ…プロセッサー、１２Ｂ…ＲＯＭ、１２Ｃ…第１ＲＡＭ、１２Ｄ…第２ＲＡＭ、１２Ｅ…バッファ、１２Ｆ…第１インターフェース、１２Ｇ…第２インターフェース、１１１…ホストアドレス群、１２１、２１１…論理ブロック群、１３１、２２１…物理ブロック群
【図１】
2020086748.tif 000003
【図２】
2020086748.tif 000004
【図３】
2020086748.tif 000005
【図４】
2020086748.tif 000006
【図５】
2020086748.tif 000007
【図６】
2020086748.tif 000008
【図７】
2020086748.tif 000009