まず、本願発明の前提となる構成および動作について説明する(特許文献1に開示されている構成・動作と把握できる)。
図1は、コンピュータシステム1を示す図である。コンピュータシステム1は、一般的なパーソナルコンピュータとしての機能を有するコンピュータ2と、コンピュータ2のカードスロットに挿入されるメモリカード3とから構成される。コンピュータ2と演算装置50との間で論理アドレスが送受信され、演算装置50とメモリ4との間で物理アドレスが送受信される。
コンピュータ2は、例えば、記憶装置に記憶されているアプリケーションソフトウェア等のプログラムに従って動作し、必要に応じてメモリカード3に対してアクセス要求を送信する。
なお、以下に言うアクセス要求とは、ユーザデータの書き込み要求や、メモリカード3(図2に示すメモリ4)に記憶されているユーザデータの読み出し要求等である。したがって、書き込み要求の場合には、コンピュータ2は、書き込むユーザデータの書き込み位置を示す論理アドレスを生成する。また、読み出し要求の場合には、コンピュータ2は、読み込むユーザデータが格納されている位置を示す論理アドレスを生成する。コンピュータ2において生成されるアクセス要求には、論理アドレスが含まれており、インタフェースを介して、メモリカード3に送信される。
図2は、メモリカード3の構成を示すブロック図である。メモリカード3は、メモリ4と、メモリ4を制御するメモリコントローラ5とを備え、コンピュータ2に対して着脱自在な構造となっている。
図3は、メモリ4の内部構造を示す概略図である。図3に示すように、メモリ4は、複数の第1ブロック42から構成されるユーザ情報記憶領域40と、複数の予備ブロック43から構成される予備記憶領域41とを備えている。
図4は、メモリ4におけるブロック6(第1ブロック42及び予備ブロック43)の構造を示す図である。メモリ4が有する複数のブロック6は、図4に示すように、それぞれが複数の記憶素子60(記憶素子群)から構成され、互いに重複しない1の物理アドレス(第1物理アドレス)によってアクセスされる記憶素子の集まりである。
ここで、第1ブロック42に含まれる記憶素子60の数は、少なくとも、1の物理アドレスによって指定されるユーザデータを記憶するために必要な記憶素子60の数であればよい。すなわち、1回のアクセスで読み込まれる(又は、書き込まれる)ユーザデータの容量によって決定される。
また、予備ブロック43に含まれる記憶素子60の数は、少なくとも、第1ブロック42を個々に指定する物理アドレスを記憶するために必要な記憶素子60の数であればよい。すなわち、物理アドレスの長さ(容量)は、メモリ4が備える第1ブロック42の数によって決定される。
図5は、ユーザ情報記憶領域40を例示する図である。本明細書では、例えば、特定(A)の物理アドレス空間における物理アドレスを、「物理アドレスA」と総称し、そのうちのk番目の物理アドレスAを「物理アドレスAk」と称する(ただしkは0以上の整数)。
ユーザ情報記憶領域40は、先述のように、複数(N個)の第1ブロック42から構成される記憶領域であって、ユーザデータを記憶する(Nは自然数)。各第1ブロック42には、それぞれ重複しない物理アドレスPBA(物理アドレスPBA0乃至PBA(N−1))が割り当てられる。なお、メモリ4上の物理アドレスPBAは、本発明における第1物理アドレスに相当する。
一般に、製品としてのメモリ4に形成される第1ブロック42には、正常にアクセスすることができるもの(正常ブロック)と、アクセスすることができないもの(欠陥ブロック)とが存在する。欠陥ブロックに対してはアクセスすることができない(利用することができない)ので、欠陥ブロックにはユーザデータは記憶されず、論理アドレスが割り当てられることはない。また、欠陥の種類としては、工場出荷時などメモリ4の使用前において既に発生している初期欠陥と、メモリ4の使用において発生する後発欠陥とがある。
さらに、本願発明では、後発欠陥として、暫定後発欠陥および恒久的後発欠陥がある。暫定後発欠陥とは、メモリ4内のブロックに対する修復処理(リフレッシュ)により、当該ブロックを正常ブロックに戻すことができる場合に称される後発欠陥である。これに対して、恒久的後発欠陥とは、メモリ4内のブロックに対する修復処理(リフレッシュ)によっても、当該ブロックを正常ブロックに戻すことができない場合に称される後発欠陥である。
図示の都合上、図5では、正常ブロック420に「Good」、初期欠陥を有する初期欠陥ブロック421に「Initial Bad」が、それぞれ情報として格納されているかのように示している。しかし、実際には、ユーザデータを格納する1つの単位を第1ブロック42と定義するのであって、第1ブロック42には、ブロックの状態を示す情報は記憶しない。後述する実施の形態1以降の説明に入るまでのここでの説明では、欠陥ブロックは、初期欠陥ブロックのみであるとして、話を進める(実施の形態1以降の説明では、欠陥ブロックとして、初期欠陥ブロックの他に後発欠陥ブロックをも含めて説明する)。
図6は、図5に示すユーザ情報記憶領域40に対する予備記憶領域41を例示する図である。予備記憶領域41は、先述のように、複数(M個)の予備ブロック43から構成される記憶領域であって、冗長情報44(図2)を記憶する。冗長情報44とは、後述するメモリコントローラ5が論理アドレスを物理アドレスに変換する際に必要な情報である。
個々の予備ブロック43は、それぞれメモリ4上の物理アドレス(物理アドレスPBAN乃至PBA(N+M−1))が割り当てられている。なお、ユーザ情報記憶領域40における最後の第1ブロック42の物理アドレスは、物理アドレスPBA(N−1)であり、予備記憶領域41における先頭の予備ブロック43の物理アドレスは物理アドレスPBANである。すなわち、ユーザ情報記憶領域40と予備記憶領域41とは連続する記憶領域として割り当てられているが、もちろんこれに限定されるものではない。
また、予備ブロック43には、当該予備ブロック43が使用されていないことを示す無効情報(図6に示す「NOU」)、又は、初期欠陥ブロック421の物理アドレスPBA(図6に示す例では物理アドレスPBA3,5,7,15,20,21,27)を格納する。なお、予備ブロック43に格納する情報は、初期欠陥ブロック421の物理アドレスPBAを得ることができる情報であればよい。
初期欠陥ブロック421はメモリ4に対する検査工程等で検出され、その物理アドレスPBAがいずれかの予備ブロック43に記憶される。検出された初期欠陥ブロック421の物理アドレスPBAは、後述するメモリコントローラ5が予備記憶領域41を読み出す順序(予備ブロック43の物理アドレスPBAの昇順)に、順次(初期欠陥ブロック421の物理アドレスPBAの小さい順)に格納される。また、全ての初期欠陥ブロック421の検出が終了したときに、残りの予備ブロック43に無効情報NOUを格納する。
図2に戻って、メモリコントローラ5は、演算装置50、プログラム54を格納するROM51、SRAMとして構成されるコントローラメモリ52、及びコンピュータ2に接続するためのインタフェース53を備える。メモリコントローラ5は、コンピュータ2から受信するアクセス要求に応じて、メモリ4にアクセスする。
メモリコントローラ5の演算装置50は、ROM51に格納されているプログラム54に従って動作し、コントローラメモリ52に記憶されている参照情報55に基づいて、コンピュータ2から受信したアクセス要求に含まれる論理アドレスLBAから、アクセス要求された第1ブロック42の物理アドレスPBAを演算により得る。
演算装置50による演算処理の詳細は後述するが、演算装置50は、論理アドレスLBAとオフセットOFFとを用いて、「PBA=LBA+OFF、(式1)」により、アクセス要求された第1ブロック42の物理アドレスPBAを得る。
コントローラメモリ52は、メモリ4のブロック6を構成する記憶素子60よりも高速にアクセス可能な記憶素子(図示せず)で構成され(SRAMで構成され)、予備記憶領域41に記憶されている冗長情報44が転送された結果である参照情報55を記憶する。コントローラメモリ52に記憶された参照情報55は、演算装置50により参照される。なお、コントローラメモリ52を構成する記憶素子として、高速なアクセスを実現するために、揮発性の記憶素子を用いる。揮発性メモリとして、上記SRAMの他に、レジスタやフリップフロップ回路などを採用することができる。
図7は、図6に示す冗長情報44がコントローラメモリ52に参照情報55として記憶される状態を例示する図である。
コントローラメモリ52は、予備ブロック43に格納されている情報(複数の第1ブロックのうちの初期欠陥ブロックの第1物理アドレス)を個々に格納することが可能な複数(M個)の第2ブロック56を備えている。これら複数の第2ブロック56には、互いに重複しない物理アドレスRAD(第2物理アドレス)が割り当てられている。
メモリコントローラ5の演算装置50は、冗長情報44をコントローラメモリ52に転送する際に、予備記憶領域41の物理アドレスPBAの順に従って予備ブロック43にアクセスし、当該予備ブロック43に格納されている情報(初期欠陥ブロック421の物理アドレスPBA又は無効情報NOU)を、第2ブロック56の物理アドレスRADの順に、第2ブロック56に格納する。すなわち、演算装置50は、本発明における転送部としての機能も備えている。上記より分かるように、参照情報55は、冗長情報44と同一の情報としてコントローラメモリ52上に作成される。
このような参照情報55を作成することにより、第2ブロック56に格納されている初期欠陥ブロック421の物理アドレスPBAから、当該第2ブロック56の物理アドレスRADを引くと、その値は、当該第2ブロック56に格納されている初期欠陥ブロック421の物理アドレスPBAより前方に存在する正常ブロック420の個数(初期欠陥ブロック以外の第1ブロックの個数)を示すこととなる。
インタフェース53は、コンピュータ2のインタフェースとのデータの送受信を可能せしめる部分である。
次に、コンピュータシステム1の動作について説明する。
まず、メモリコントローラ5は、メモリカード3に電源が投入された否かを判定する。ここで、メモリカード3に電源が投入されるとは、メモリカード3への電源の供給が開始された場合であって、既に電源が投入されているコンピュータ2にメモリカード3が装着された場合を含む。
メモリカード3に電源が投入されたと判定すると、メモリコントローラ5(演算装置50)は、メモリ4の予備記憶領域41にアクセスして、そこに記憶されている冗長情報44を読み出し、読み出した冗長情報44のコントローラメモリ52への転送を開始する。なお、初期欠陥ブロックに対する図6で例示する情報は製品に固定であり、製品出荷時等にメモリ4に記憶されているものとする。
メモリコントローラ5は、予備記憶領域41を構成する予備ブロック43のうち、先頭の予備ブロック43から順に最後までアクセスして、アクセスした予備ブロック43に格納されている情報を、順次、第2ブロック56に転送する。これによって、図7に示すように、コントローラメモリ52には、図6に示す予備記憶領域41に記憶されている情報と同等の情報が記憶される。
その後、コンピュータ2がアクセス要求を生成して、メモリカード3に送信したとする。ここで、コンピュータ2から送信されるアクセス要求には、先述のように、論理アドレスLBAが含まれる。メモリカード3がアクセス要求(論理アドレスLBA)を受信すると、演算装置50が物理アドレスPBAを演算する。
当該演算処理を以下に説明する。なお、以下の説明では、演算装置50が注目する第2ブロック56の物理アドレスRADを「インデックスI」と称し、インデックスIで指定される第2ブロック56(注目する第2ブロック56)から読み出された値を「RDV(I)」と称する。また、複数の第2ブロック56のうち、オフセットOFFを求めるための第2ブロック56を「ターゲットブロック」と称する。
式1を演算するためには、演算装置50はオフセットOFFを決定する必要がある。演算装置50は、1つの論理アドレスLBAに対して1つのターゲットブロックを決定することによりオフセットOFFを演算により求める。言い換えれば、演算装置50は、論理アドレスLBAに基づいて、コントローラメモリ52に含まれる複数の第2ブロック56からターゲットブロックを検索し、オフセットOFFを求める。
まず、演算装置50は、インデックスIをRAD0(=0)にセットし、先頭の第2ブロック56に注目して、「RDV(I)−I=NUM、(式2)」を演算する。
すなわち、NUMの値は、現在のインデックスIで特定される注目している第2ブロック56に格納されている初期欠陥ブロック421の物理アドレスPBAから、当該注目している第2ブロック56の物理アドレスRADを減算した値となる。このNUMは、先述のように、注目している第2ブロック56に格納されている物理アドレスPBAによって特定される、初期欠陥ブロック421の前方に存在する正常ブロック420の個数(初期欠陥ブロック以外の第1ブロックの個数)を示す。
次に、演算装置50は、「NUM>LBA、(式3)」の真偽を判定する。
式3が「真」の場合は、インデックスI(物理アドレスRAD0)で指定される第2ブロック56をターゲットブロックと決定する。
一方、式3が「偽」の場合において、複数の第2ブロック56からターゲットブロックを検索する手法は、様々なバリエーションが考えられる。ここででは、2分探索法の一種を用いた例を説明する。
まず、カウンタに「n」にセットし、ターゲットブロックの候補として残っている第2ブロック56のうちで、中央に位置する第2ブロック56に注目するように、インデックスIを更新する。
ここで、偶数個の第2ブロック56が存在する場合、中央の第2ブロック56とは、物理アドレスRADの値の大きい方とする。例えば、物理アドレスRAD0乃至RAD3で指定される4個の第2ブロック56が候補として残っている場合、中央の第2ブロック56は、物理アドレスRAD2で指定される第2ブロック56とする。
インデックスIを更新すると、カウンタの値をチェックする。カウンタの値が「1」より大きければ、演算装置50は、再び、式2を演算してから、式3の真偽を判定する。
式3の判定結果が「真」であれば、インデックスIで示される第2ブロック56から後方の第2ブロック56(インデックスIで示される第2ブロック56を含む)を、ターゲットブロックの候補から除外する。そして、カウンタをデクリメントしてから、上記インデックスIの更新処理に戻る。
一方、式3の判定結果が「偽」であれば、インデックスIで示される第2ブロック56から前方の第2ブロック56(インデックスIで示される第2ブロック56を含む)を、ターゲットブロックの候補から除外する。そして、カウンタをデクリメントしてから、上記インデックスIの更新処理に戻る。
このようにして、M(2n)個の第2ブロック56が存在する場合、ターゲットブロックの候補から、不要な第2ブロック56を除外する処理をn−1回繰り返せば、ターゲットブロックの候補は1つに絞られる。
上記インデックスIの更新処理以後の動作を繰り返し実施され、カウンタの値が「1」となると(カウンタの値が1より大きくない)、演算装置50は、再び、式2を演算してから、式3の真偽を判定する。当該判定は、変換先の第1ブロック42が初期欠陥ブロック421であるか否かを判定することを意味する。
当該式3の真偽判定において「偽」と判定すると、変換先の第1ブロック42を1つ後方にずらすために、インデックスIをインクリメントし、インデックスIで指定される第2ブロック56をターゲットブロックとする。
一方、当該式3の真偽判定において「真」と判定すると、変換先は正常ブロック420であるから、インデックスIをインクリメントすることなく、インデックスIで指定される第2ブロック56をターゲットブロックとする。
上記においてターゲットブロックが決定されると、演算装置50は、インデックスI(ターゲットブロックを指定する物理アドレスRADとなっている)をオフセットOFFとし、式1を演算して、物理アドレスPBAを得る。
図8は、論理アドレスLBAと物理アドレスPBAとの対応を例示する図である。図8では、図5に示すように初期欠陥ブロック421が存在している例について示す。ここまでに示したように、論理アドレスLBAから物理アドレスPBAが求められることにより、コンピュータシステム1では、図8に示される変換関係となる。
ここで、N=32、M=2n=24=16であり、初期欠陥ブロック421が、図5に示すように存在している場合を例に、論理アドレスLBA5について物理アドレスPBAが求められる様子を示す。
まず、論理アドレスLBA5が与えられると、式3は「偽」となるので、上記2分探索法が実行され、カウンタにn(=4)がセットされる。そして、24-1+1=9であるから、インデックスIは中央の第2ブロック56として9番目の第2ブロック56を指定する「RAD(24-1)」にセットされる。
物理アドレスRAD(24-1)(すなわち、物理アドレス8)には、NOUが格納されている。ここで、NOUは充分に大きい値を採用しているとすると、式2によって得られるNUMは充分に大きい値となり、式3は「真」と判定される。したがって、物理アドレスRAD8より後方の第2ブロック56は、ターゲットブロックの候補から除外され、カウンタの値が「3」にデクリメントされる。
次に、インデックスIは、残った候補の中央の「RAD4」にセットされる。このとき、カウンタは「3」となっているので、当該カウンタの値「3」は「1」より大きい。したがって、演算器50は、再び式2を演算する。式2からNUM=16となる。今、与えられている論理アドレスは「LBA5」であるから、式3の判定結果は再び「真」となる。したがって、物理アドレスRAD4乃至RAD7が候補から除外され、カウンタの値が「2」にデクリメントされる。
次に、インデックスIは、残った候補の中央の「RAD2」にセットされる。このとき、カウンタは「2」となっているので、当該カウンタの値「3」は「1」より大きい。したがって、演算器50は、再び式2を演算する。式2からNUM=5となり、式3の判定結果は「偽」となる。したがって、物理アドレスRAD0乃至RAD2が候補から除外され、カウンタの値が「1」にデクリメントされる。
次に、インデックスIが「RAD3」にセットされるが、このとき候補は、アドレスRAD3で指定される第2ブロック56の1つに絞られており、カウンタの値は「1」であるので、式2からNUM=12となり、式3の判定結果は「真」となる。したがって、ターゲットブロックの物理アドレスは、物理アドレスRAD3であると決定され、オフセットOFFは「3」となる。
したがって、式1により、5+3=8となり、論理アドレスLBA5は、物理アドレスPBA8に変換される。すなわち、論理アドレスLBA5によってアクセスされる第1ブロック42は、物理アドレスPBA8で指定される第1ブロック42であることがわかる。
なお、演算装置50により、受信した論理アドレスLBAから物理アドレスPBAが求まると、メモリコントローラ5は、求められた物理アドレスPBAに基づいて、メモリ4にアクセスする。
このとき、アクセス要求が書き込み処理である場合は、求めた物理アドレスPBAで指定される第1ブロック42にユーザデータを書き込むようにメモリ4を制御する。一方、アクセス要求が読み出し処理である場合は、求めた物理アドレスPBAで指定される第1ブロック42に格納されているユーザデータを読み出すようにメモリ4を制御する。読み出されたユーザデータは、インタフェースを介してコンピュータ2に転送される。
今までの説明が、メモリ4に初期欠陥ブロックのみが存在し、リードディスターブなどに起因して後発欠陥ブロックが存在しない場合の論物変換説明である(以後、ここまでで説明した論物変換処理を、便宜上、第一の論物変換処理と称する)。
後述の各実施の形態では、出荷後においてメモリ4に後発欠陥ブロックが発生した場合の論物変換処理について説明する。
以下、この発明をその実施の形態を示す図面に基づいて具体的に説明する。
<実施の形態1>
本実施の形態では、後発欠陥ブロックが未だ発生していない上記状況の後、メモリ4に対する複数のアクセス要求(たとえば読み出し要求)により、リードディスターブ現象により暫定後発欠陥ブロックが発生した場合における、論物変換処理について説明する。
図9は、本実施の形態に係るメモリ4の構成を示す図である。
図9に示すように、メモリ4における予備記憶領域41は、二つの管理領域41A,41Bを有する。図9におけるユーザ情報記憶領域40の構成は、図3に示すユーザ情報記憶領域40の構成と同じである。ただし、本実施の形態では、後述するように、ユーザ情報記憶領域40には、ユーザ情報と複製ユーザ情報とが記憶されている。また、図9における第1管理領域41Aは、第1ブロック42のうちの初期欠陥ブロックの第1物理アドレス情報を個々に記憶・管理する領域である(図6参照)。図9における第2管理領域41Bは、第1ブロック42のうちの恒久的後発欠陥ブロックの第1物理アドレス情報を個々に記憶・管理する領域である。
各領域40,41A,41B内の各閉じた領域内において、各々複数のブロック42,43A,43Bが設けられており、当該閉じた領域内において、各ブロック42,43A,43Bには、連番にて物理アドレス付与されている。ここで、第1管理領域41Aを構成している各ブロックは、第1予備ブロック43Aであり、第2管理領域41Bを構成している各ブロックは、第2予備ブロック43Bである。
各第1予備ブロック43Aには、互いに重複せず連番にて物理アドレスが割り当てられている。また、各第2予備ブロック43Bにおいても、互いに重複せず連番にて物理アドレスが割り当てられている。
図6を用いて説明したように、初期欠陥ブロックはメモリ4に対する検査工程等で検出され、その物理アドレスが第1予備ブロック43Aに記憶される。検出された初期欠陥ブロックの第1物理アドレスは、メモリコントローラ5が予備記憶領域41を読み出す順序(第1予備ブロック43Aの物理アドレスの昇順)に、順次(初期欠陥ブロックの第1物理アドレスの小さい順)に格納される。つまり、第1予備ブロック43Aの物理アドレスが昇順するに連れて、各第1予備ブロック43Aに格納される初期欠陥ブロックの第1物理アドレスは昇順する。また、全ての初期欠陥ブロックの検出が終了したときに、残りの第1予備ブロック43Aに無効情報NOUを格納する。
恒久的後発欠陥ブロックはメモリ4の使用中において検出され、その第1物理アドレスが第2予備ブロック43Bに記憶される。検出された恒久的後発欠陥ブロックの第1物理アドレスは、メモリコントローラ5が予備記憶領域41を読み出す順序(第2予備ブロック43Bの物理アドレスの昇順)に、順次(恒久的後発欠陥が発生した順の恒久的後発欠陥ブロックの第1物理アドレスの順)に格納される。つまり、第2予備ブロック43Bの物理アドレスが昇順するに連れて、各第2予備ブロック43Bには、恒久的後発欠陥ブロックが発生した順に、当該恒久的後発欠陥ブロックの第1物理アドレスが格納される。また、恒久的後発欠陥ブロックの第1物理アドレスが記憶されていない第2予備ブロック43Bには、無効情報NOUが格納される。
当該恒久的後発欠陥ブロックの検出は、たとえば、メモリコントローラ5がメモリ4の所定の第1ブロック42にアクセスし、当該所定の第1ブロック42のアクセスの結果、読み出し・書き込み等が正常に終了せず、データの回復(リフレッシュ)にも成功しなかった信号をメモリ4から受信することにより、メモリコントローラ5が検出する。当該検出後、メモリコントローラ5は、直接またはコントローラメモリ52を介して、メモリ4の第2管理領域41Bに、当該所定の第1ブロック42の第1物理アドレスを記録する。
なお、現段階では、第1ブロック42において、未だ恒久的後発欠陥ブロックが発生しておらず、初期欠陥ブロックのみが発生しているものとする。したがって、第2管理領域41Bを構成する第2予備ブロック43Bには、第1物理アドレス情報は未だ格納されておらず、全第2予備ブロック43Bには無効情報NOUが格納されている。
さて、上記前提の下で、上記で説明したようにメモリカード3に電源が投入されると、メモリコントローラ5(演算装置50)は、メモリ4の予備記憶領域41にアクセスして、そこに記憶されている冗長情報44を読み出し、読み出した冗長情報44のコントローラメモリ52への転送を開始する。
なお、後述するように、第1管理領域41Aで記憶されている初期欠陥ブロックの第1物理アドレスの情報、および第2管理領域41Bで記憶されている恒久的後発欠陥ブロックの第1物理アドレスの情報は、メモリ4の使用状況に応じて更新される(つまり、恒久的後発欠陥ブロックの物理アドレスが随時記録される)。
メモリコントローラ5(演算装置50)は、第1管理領域41Aを構成する第1予備ブロック43Aのうち、先頭の第1予備ブロック43Aから順に最後までアクセスして、アクセスした第1予備ブロック43Aに格納されている情報を、順次、後述する第2ブロック52ba(図10参照)に転送する。これによって、コントローラメモリ52には、第1管理領域41Aに記憶されている情報と同等の情報が、参照情報55として記憶される。つまり、第2ブロック52baの第2物理アドレスI_RAD0〜I_RAD7が昇順するに連れて、各第2ブロック52baに格納される初期欠陥アドレスの第1物理アドレスは昇順する。
また、メモリコントローラ5(演算装置50)は、第2管理領域41Bを構成する第2予備ブロック43Bのうち、先頭の第2予備ブロック43Bから順に最後までアクセスして、アクセスした第2予備ブロック43Bに格納されている情報を、順次、後述する第4ブロック52bbに転送する(図10参照)。これによって、コントローラメモリ52には、第2管理領域41Bに記憶されている情報と同等の情報が、参照情報55として記憶される。つまり、第4ブロック52bbの第4物理アドレスFA_RAD0〜FA_RAD3が昇順するに連れて、各第4ブロック52bbには、メモリ4における恒久的後発欠陥ブロックが発生した順に、当該恒久的後発欠陥ブロックの第1物理アドレスが格納される。
図10は、冗長情報44がコントローラメモリ52に参照情報55として記憶される状態を例示する図である。
コントローラメモリ52における第1管理領域52Iは、複数の第2ブロック52baで構成されている。ここで、第1管理領域52I内において、第2ブロック52baのコントローラメモリ52における物理アドレス(第2物理アドレス)I_RAD0〜I_RAD7は連番である。
コントローラメモリ52における第2管理領域52FAは、複数の第4ブロック52bbで構成されている。ここで、第2管理領域52FA内において、第4ブロック52bbのコントローラメモリ52における物理アドレス(第4物理アドレス)FA_RAD0〜FA_RAD3は連番である。
第2ブロックには、互いに重複しない第2物理アドレスI_RAD0〜I_RAD7が個々に割り当てられており、第4ブロックには、互いに重複しない第4物理アドレスFA_RAD0〜FA_RAD3が個々に割り当てられている。
上記転送処理から分かるように、複数の第2ブロック52baは、複数の第1ブロック42のうちの初期欠陥ブロックの第1物理アドレスを個々に記憶するために設けられる。また、複数の第4ブロックは、複数の第1ブロック42のうちの恒久的後発欠陥ブロックの第1物理アドレスを個々に記憶するために設けられる。
上記転送の結果、図10に例示するように、第2ブロック52baの第2物理アドレスが昇順するに連れて(I_RAD0→I_RAD1・・・→I_RAD6→I_RAD7)、各第2ブロック52baに格納される初期欠陥アドレスの(第1)物理アドレスは昇順する(PBA3→PBA5・・・→PBA21→PBA27)。なお、未使用のブロック52baには、未使用であることを意味する無効情報「NOU」が格納されている。
また、第4ブロック52bbの第4物理アドレスが昇順するに連れて(FA_RAD0→FA_RAD1→FA_FRAD2→FA_RAD3)、各第4ブロック52bbには、メモリ4における恒久的後発欠陥ブロックが発生した順に、当該恒久的後発欠陥ブロックの(第1)物理アドレスが格納される。なお、上記のように、第1ブロック42において恒久的後発欠陥ブロックは、現段階では発生していない。したがって、全第4ブロック52bbには、未使用であることを意味する無効情報「NOU」が格納される。
また、本実施の形態では、コントローラメモリ52は、図10には図示してないが、図16に示すように、第1,2管理領域52I,52FAとは別に、第3管理領域52TAを有している。ここで、第3管理領域52TAは、複数の第3ブロック52bcで構成されている。ここで、第3管理領域52TA内において、第3ブロック52bcのコントローラメモリ52における物理アドレス(第3物理アドレス)TA_RAD0〜TA_RAD7は連番である。第3ブロック52bcには、互いに重複しない第3物理アドレスTA_RAD0〜TA_RAD7が個々に割り当てられている。
複数の第3ブロック52bcは、複数の第1ブロック42のうちの暫定後発欠陥ブロックの第1物理アドレスを個々に記憶するために設けられる。また、第3ブロック52bcの第3物理アドレスが昇順するに連れて(TA_RAD0→TA_RAD1・・・→TA_RAD6→TA_RAD7)、各第3ブロック52bcには、メモリ4における暫定後発欠陥ブロックが発生した順に、当該暫定後発欠陥ブロックの(第1)物理アドレスが格納される。なお、未使用のブロック52bcには、未使用であることを意味する無効情報「NOU」が格納されている。
図11(A)は、論理空間を模式的に例示した図である。また、図11(B)は、後発欠陥ブロック発生前(つまり、初期欠陥ブロックのみ発生)の物理空間を模式的に例示した図である。
図11(B)では、メモリ4のユーザ情報記憶領域40は、32個の第1ブロック42により構成されている。各第1ブロック42には、第1物理アドレスPBA0〜PBA31が昇順に設定されている。図11(A)では、当該第1ブロック42の数(=32)と同数の論理アドレスLBA0〜PBA31が、昇順に設定されている。
メモリ4のユーザ情報記憶領域40には、ユーザ情報および複製ユーザ情報が格納されており、図11の例では、当該ユーザ情報のデータ量は、第1ブロック42の10ブロック分である。複製ユーザ情報は、ユーザ情報の複製であるので、当該複製ユーザ情報のデータ量も、第1ブロック42の10ブロック分である。
したがって、図11(A)において、ユーザ情報にアクセスするための当該10ブロック分の論理アドレスLBA0〜LBA9が、昇順に設定される。また、複製ユーザ情報にアクセスするための当該10ブロック分の論理アドレスLBA10〜LBA19が、昇順に設定される。当該論理アドレスLBA10〜LBA19が設定されている領域を「論理ミラー領域」と称することとする。当該論理ミラー領域に属する論理アドレスLBA10〜LBA19を特に、ミラー論理アドレスと称する。
各論理アドレスLBA0〜LBA9は、各ミラー論理アドレスLBA10〜LBA19と一対一の対応関係が有る。たとえば、論理アドレスLBA0は、ミラー論理アドレスLBA10と1対1の関係を有し、論理アドレスLBA1は、ミラー論理アドレスLBA11と1対1の関係を有し、論理アドレスLBA2は、ミラー論理アドレスLBA12と1対1の関係を有する。つまり、当該論理アドレスとミラー論理アドレスとの1対1の関係は、論理アドレスの昇順に従って成立する(図12の論理アドレスとミラー論理アドレスとの対応表参照)。
上記から分かるように、論理ミラー領域の先頭位置は、ユーザ情報のデータ量により決定される。なお、図11(A)において、残りの論理アドレスLBA20〜LBA31は、不使用の論理アドレスである。
他方、図11(B)では、各第1ブロック42は、正常ブロックと初期欠陥ブロックとで構成されている。正常ブロック内には、便宜上、対応する論理アドレスが記載されている。また、初期欠陥ブロック(PBA3,PBA5,PBA7,PBA15,PBA20,PBA21,PBA27)内には、便宜上、「Initial Bad」が記載されている。上記第一の論物変換処理の結果、図11(B)に示される、第1物理アドレスと論理アドレスとの対応関係が成立する。各第1物理アドレスには、初期欠陥ブロックをとばして、論理アドレスが昇順に対応している。
図11(B)において、10ブロック分のユーザ情報は、初期欠陥ブロックをとばして、第1物理アドレスPBA0〜PBA12で特定される正常ブロックに格納される。また、10ブロック分の複製ユーザ情報は、初期欠陥ブロックをとばして、第1物理アドレスPBA13〜PBA25で特定される正常ブロックに格納される。当該複製ユーザ情報が格納されるブロック領域を、「物理ミラー領域」と称することとする。
上記から分かるように、昇順に設定された第1物理アドレスPBA0〜PBA31において、物理ミラー領域の先頭位置は、ユーザ情報のデータ量および、ユーザ情報の最初のデータが格納される第1ブロック42からユーザ情報の最後のデータが格納される第1ブロック42までに発生している初期欠陥ブロック数(図11(B)では3個)により決定される。なお、図11の例では、第1物理アドレスPBA26〜PBA31で特定される第1ブロック42は、未使用ブロックである。また、ユーザ情報を記憶する、複数の第1ブロック42のうちの複数の第1ブロックを、「ユーザ情報ブロック」と称する。また、複製ユーザ情報を記憶する、複数の第1ブロック42のうちの複数の第1ブロックを、「複製ユーザ情報ブロック」と称する。
なお、ユーザ情報ブロックに格納されるデータと、複製ユーザ情報ブロックに格納されるデータとの間には、所謂ミラー関係が成立する。たとえば、物理アドレスPBA0のユーザ情報ブロックに格納されるデータは、物理アドレスPBA13の複製ユーザ情報ブロックに格納されるデータと同じ内容のものである。物理アドレスPBA1のユーザ情報ブロックに格納されるデータは、物理アドレスPBA14の複製ユーザ情報ブロックに格納されるデータと同じ内容のものである。物理アドレスPBA2のユーザ情報ブロックに格納されるデータは、物理アドレスPBA16の複製ユーザ情報ブロックに格納されるデータと同じ内容のものである。物理アドレスPBA4のユーザ情報ブロックに格納されるデータは、物理アドレスPBA17の複製ユーザ情報ブロックに格納されるデータと同じ内容のものである。以下については、上記より対応関係が推測できる。図13では、同じデータを共有し合っている、ユーザ情報ブロックと複製ユーザ情報ブロックとの関係を、第1物理アドレスを用いて表記している。
図11の例に従い、図10に示す第1管理領域52Iの第2ブロック52baには、初期欠陥ブロックの第1物理アドレスPBA3,PBA5,PBA7,PBA15,PBA20,PBA21,PBA27が、昇順に記憶される。
さて、上記コントローラメモリ52への情報の転送後、コンピュータ2がアクセス要求を生成して、メモリカード3に送信したとする。ここで、コンピュータ2から送信されるアクセス要求には、先述のように、論理アドレスLBAが含まれる。メモリカード3がアクセス要求(論理アドレスLBA)を受信すると、演算装置50が上記第一の論物変換処理により、第1物理アドレスPBAを演算する。
メモリ4内の所定のユーザ情報ブロック42内の情報に、読み出しアクセスを複数回行ったとする。その結果、当該所定のユーザ情報ブロック42においてビット誤りが発生し、当該ビット誤り数が増大する。当該ビット誤り数が、予め設定されているしきい値を超えたとき、当該所定のユーザ情報ブロック42を暫定後発欠陥ブロックとして取り扱う。ここで、当該しきい値として、たとえば、「(メモリコントローラ5の誤り訂正能力)−1」の値を採用することができる。
当該暫定後発欠陥ブロック発生後の論物変換処理を、図14のフローチャートを用いて説明する。具体的に、入力された所定の論理アドレスに対応する所定のミラー論理アドレスと、第2ブロック52baに格納される情報とに基づいて、所定の論理アドレスに対応する第1物理アドレスを求める演算装置50の動作を、図14を用いて説明する。
ここで、演算装置50は、ユーザ情報ブロック42にアクセスするために入力される論理アドレスLBA0〜LBA9と一対一の対応関係(図12)が有り、複製ユーザ情報ブロックにアクセスするためのミラー論理アドレスLBA10〜LBA19を、情報として有している。
コンピュータ2は、メモリカード3に、論理アドレスLBA4を含むアクセス要求(たとえば読出し要求)を送信したとする。この場合には、演算装置50は、当該論理アドレスLBA4とコントローラメモリ52内の第1管理領域52Iの情報(第2ブロック52baに格納されている情報)とを用いた上記第一の論物変換処理により、論理アドレスLBA4に対応する第1物理アドレスPBA6を算出する(ステップS101)。
次に、演算装置50は、ステップS101で求めた第1物理アドレスPBA6で特定される第1ブロックが、たとえばリードディスターブ現象に起因した暫定後発欠陥ブロックであるか否かを判断する(ステップS102)。
演算装置50は、ステップS101で求めた第1物理アドレスPBA6で特定されるユーザ情報ブロック42のビット誤り数を測定する。そして、当該測定結果と、予め設定されているしきい値を超えたときに、演算装置50は、第1物理アドレスPBA6で特定されるユーザ情報ブロック42を、暫定後発欠陥ブロックであると判断する(ステップS102で「有」)。
本実施の形態の説明では、図15に示すように、第1物理アドレスPBA6で特定されるユーザ情報ブロック42において、暫定後発欠陥ブロックが発生したとする(図15では、暫定後発欠陥が発生したブロックには、便宜上、「暫定Bad」を表記している)。したがって、ここでの説明では、ステップS102で「有」で、演算装置50はステップS103の処理へと移行する。
なお、ここでの説明と異なるが、第1物理アドレスで特定されるユーザ情報ブロック42のビット誤りの測定数が、予め設定されているしきい値以下であるとする。この場合には、演算装置50は、当該第1物理アドレスで特定されるユーザ情報ブロック42を、暫定後発欠陥ブロックではないと判断する(ステップS102で「無」)。したがって、この場合には、演算装置50は、ステップS101で算出した第1物理アドレスを、入力された論理アドレスに対応する第1物理アドレスとして決定する。
さて、ステップS102で暫定後発欠陥ブロックであると判断したとき、演算装置50は、図16に示すように、第3ブロック52bcに、ステップS101で求めた第1物理アドレスPBA6を記録する(ステップS103)。なお、次回以降のアクセスにおいて、演算装置50は図16を参照し、ステップS101で求めた第1物理アドレスが第3ブロック52bcに格納されているかを判断する。そして、格納されていなければ、演算装置50は、ステップS101で求めた第1物理アドレスに対してアクセスを行う。他方、格納されていれば、演算装置50は、ステップS103を実施せず、後述するステップS104,S105を実行する。
さて、ステップS103後、演算装置50は、予め設定されている図12に示す対応関係に基づいて、論理アドレスLBA4に対応するミラー論理アドレスLBA14を決定する(ステップS104)。
次に、演算装置50は、ステップS104で決定したミラー論理アドレスLBA14とコントローラメモリ52内の第1管理領域52Iの情報(第2ブロック52baに格納されている情報)とを用いた上記第一の論物変換処理(ただし、論理アドレスをミラー論理アドレスと読み替える必要あり)により、ミラー論理アドレスLBA14(換言すれば、入力された論理アドレスLBA4)に対応する第1物理アドレスを算出する(ステップS105)。
上記第一の論物変換処理を適用すると、第1物理アドレスは「PBA18」である(図15参照)。ここで、図13に示すように、第1物理アドレスPBA18の複製ユーザ情報ブロック42には、第1物理アドレスPBA6のユーザ情報ブロック42に格納されていたユーザ情報の複製データが格納されている。
メモリコントローラ5は、上記で決定された第1物理アドレスPBA18の複製ユーザ情報ブロック42に対してアクセスを行う。
以上のように、本実施の形態では、演算装置50は、入力された所定の論理アドレスLBA0〜LBA9に対応する所定のミラー論理アドレスLBA10〜LBA19と、第2ブロック52baに格納される情報とに基づいて、所定の論理アドレスLBA0〜LBA9に対応する第1物理アドレスPBA13〜PBA19を求める。
このように、ミラー領域を設け、“リードディスターブ”現象により暫定後発欠陥ブロックが発生した場合には、論物変換処理を実施し、ミラー領域へのアクセスを可能としている。したがって、“リードディスターブ”現象により暫定後発欠陥ブロックが発生したとしても、データ読み出し処理に影響を及ぼすことの無いメモリシステムおよび、コンピュータシステムを提供することができる。
また、メモリにおいて後発欠陥が発生したとしても、多くのブロックに渡って論物変換の対応関係を変更する必要がないメモリシステム(メモリカード3)および、コンピュータシステム1を提供することができる。
また、本実施の形態では、第2ブロック52baには、互いに重複しない第2物理アドレスI_RAD0〜I_RAD7が個々に割り当てられており、第2ブロック52baに記憶される初期欠陥ブロックの第1物理アドレスPBA3,PBA5,PBA7,PBA15,PBA20,PBA21,PBA27は、第1物理アドレスの順に従って、第2物理アドレスI_RAD0〜I_RAD7の順に、第2ブロック52baに格納される。
したがって、第1物理アドレスを求めるために必要となる、第2ブロック52baの数を減らすことが可能となる。
また、本実施の形態では、演算装置50は、上記第一の論物変換処理により、論理アドレスに対応する第1物理アドレスを求める。
したがって、初期欠陥ブロック以外の第1ブロック42の物理アドレスを記憶する必要がない。あるいは、全てのブロックに関する特性(欠陥の有無)と転送先の物理アドレスとを記憶する必要がない。したがって、第2ブロック52baの数を減らすことが可能となる。
また、本実施の形態では、演算装置50は、ステップS101で求めた第1物理アドレスで特定される第1ブロック42が暫定後発欠陥ブロックであると判断したとき(ステップS102)、ステップS103〜S105に記載の処理を行う。
したがって、ステップS101で求めた第1物理アドレスにアクセスすることを防止でき、更なる論物変換処理を行うか否かの判断もできる。また、メモリにおいて後発欠陥が発生したとしても、多くのブロックに渡って論物変換の対応関係を変更する必要がないシステムを、簡易な方法で実現できる。
また、本実施の形態では、複数の第1ブロック42のうちの暫定後発欠陥ブロックの第1物理アドレスを個々に記憶するために設けられる複数の第3ブロック52bcを、さらに備えており、演算装置50は、第3ブロック52bcに、ステップS101で求めた第1物理アドレスを記録する。
したがって、更新された第3ブロック52bcの情報を元に、以後の論物変換処理を動的に行うことができる。
また、本実施の形態では、第2ブロック、第3ブロックおよび第4ブロックなどは、不揮発性メモリ(たとえば、SRAM、レジスタやフリップフロップ回路など)から成るコントローラメモリ52に保持される。したがって、演算装置50は、高速で第2ブロック、第3ブロックや第4ブロックにアクセスすることができる。よって、論物変換処理の高速化が可能となる。
<実施の形態2>
本実施の形態では、実施の形態1で暫定後発欠陥ブロックとなった第1ブロック(ユーザ情報ブロック)42の修復処理(リフレッシュ処理)について、説明する。図17は、本実施の形態に係るコンピュータシステム1の動作を示すフローチャートである。
実施の形態1で述べたメモリカード3における電源ON状態継続中において、メモリカード3が、コンピュータ2との関係でメモリカード3がアイドル期間を確保することができる所定のコマンドを、コンピュータ2から受信したとする(ステップS201)。メモリカード3が当該所定のコマンドを受信すると、メモリコントローラ5(たとえば、演算装置50)は、暫定後発欠陥ブロックに対して修復処理を実施する(ステップS202)。
具体的に、メモリコントローラ5(たとえば、演算装置50)は、ステップS102で暫定後発欠陥ブロックであると判断したユーザ情報ブロック42を、当該ユーザ情報ブロックに対応する複製ユーザ情報ブロック内の情報を用いて、修復する。ここで、ユーザ情報ブロックと複製ユーザ情報ブロックとの対応関係は、図13に示すとおりである。したがって、たとえば第1物理アドレスPBA6のユーザ情報ブロック42の修復処理を行う場合には、演算装置50は、第1物理アドレスPBA18の複製ユーザ情報ブロック42内の情報を、当該ユーザ情報ブロック42にコピーする。
暫定後発欠陥ブロックであったユーザ情報ブロック42(PBA6)に対する修復処理が、正常に終了したとする(ステップS203で「Y」)。この場合には、演算装置50は、第3ブロック52bcに格納されていた、当該修復完了後のブロックの第1物理アドレス情報である「PBA6」を、当該第3ブロック52bcから削除する(ステップS204)。
これに対して、暫定後発欠陥ブロックであったユーザ情報ブロック42(PBA6)に対する修復処理が、正常に終了しなかったとする(つまり、演算装置50が修復不可能と判断したとする。ステップS203で「N」)。この場合には、演算装置50は、第3ブロック52bcに格納されていた、当該修復処理対象であり修復不可能となった第1ブロックの第1物理アドレス情報である「PBA6」を、第3ブロック52bcからメモリ4(より具体的に、第2予備管理領域41B)内に転送する(ステップS205)。ここで、当該PBA6の情報は、未だ第1アドレスが格納されていない先頭第2予備ブロック43Bに、恒久的後発欠陥ブロックに関する情報として記憶される。また、前記と異なるフローとして次のフローがより一般的であるとも考えられる。
つまり、上記同様修復処理が正常に終了しなかったとする(ステップS203で「N」)。この場合には、演算装置50は、第3ブロック52bcに格納されていた、当該修復処理対象であり修復不可能となった第1ブロックの第1物理アドレス情報である「PBA6」を、恒久的後発欠陥ブロックの物理アドレス情報を管理する第4ブロック52bbに格納する。また、当該格納処理に前後してまたは同時に、演算装置50は、第1物理アドレス情報である「PBA6」を、第3ブロック52bcからメモリ4(より具体的に、第2予備管理領域41B)内に転送する。そして、演算装置50は、第3ブロック52bcから、第1物理アドレス情報である「PBA6」を削除する。ここで、当該PBA6の情報は、未だ第1アドレスが格納されていない、先頭第4ブロック52bbおよび先頭第2予備ブロック43Bに、恒久的後発欠陥ブロックに関する情報として記憶される。
以上のように、本実施の形態では、演算装置50は、暫定後発欠陥ブロックであると判断した第1ブロック42を、当該第1ブロック42に対応する複製ユーザ情報ブロック内の情報を用いて、修復する(ステップS202)。
したがって、暫定後発欠陥ブロックのデータ修復が可能となり、当該修復後の第1ブロック42へのアクセスを再開できる。
また、本実施の形態では、暫定後発欠陥ブロックの修復が不可能の場合には、演算装置50は、当該修復不可能となった暫定後発欠陥ブロックのアドレス情報を、第3ブロック52bcから第1ブロック42の一部で構成された第2予備管理領域41B管理領域に、恒久的後発欠陥ブロックに関する情報として転送する(ステップS205)。
したがって、修復不可能と判断された第1ブロック42の第1物理アドレス情報を、管理領域にバックアップとして、また恒久的後発欠陥ブロックであることを示す情報として保存することができる。
<実施の形態3>
実施の形態1では、(物理および論理)ミラー領域が一つである場合について説明した。つまり、ユーザ情報の複製は一つだけ用意されている場合である。これに対して、本実施の形態3では、(物理および論理)ミラー領域が複数ある場合について説明する。つまり、ユーザ情報の複製が、複数用意されている場合である。本実施の形態では、説明簡単化のため、(物理および論理)ミラー領域が二つである場合について説明する。
図18(A)は、論理空間を模式的に例示した図である。また、図18(B)は、後発欠陥ブロック発生前(つまり、初期欠陥ブロックのみ発生)の物理空間を模式的に例示した図である。
図18(B)では、メモリ4のユーザ情報記憶領域40は、16個の第1ブロック42により構成されている。各第1ブロック42には、第1物理アドレスPBA0〜PBA15が昇順に設定されている。図18(A)では、当該第1ブロック42の数(=16)と同数の論理アドレスLBA0〜PBA15が、昇順に設定されている。
メモリ4のユーザ情報記憶領域40には、ユーザ情報および複製ユーザ情報が格納されており、図18の例では、当該ユーザ情報のデータ量は、第1ブロック42の3ブロック分である。複製ユーザ情報は、ユーザ情報の複製であるので、当該複製ユーザ情報のデータ量も、第1ブロック42の3ブロック分である。なお、本実施の形態では、当該3ブロック分の複製ユーザ情報は、2組存在している。
したがって、図18(A)において、ユーザ情報にアクセスするための当該3ブロック分の論理アドレスLBA0〜LBA2が、昇順に設定される。また、第一の複製ユーザ情報にアクセスするための当該3ブロック分の論理アドレスLBA3〜LBA5が、昇順に設定される。また、第二の複製ユーザ情報にアクセスするための当該3ブロック分の論理アドレスLBA6〜LBA8が、昇順に設定される。
論理アドレスLBA3〜LBA5が設定されている領域を「第1論理ミラー領域」と称することとする。また、論理アドレスLBA6〜LBA8が設定されている領域を「第2論理ミラー領域」と称することとする。また、第1論理ミラー領域に属する論理アドレスLBA3〜LBA5を特に、第1ミラー論理アドレスと称する。また、第2論理ミラー領域に属する論理アドレスLBA6〜LBA8を特に、第2ミラー論理アドレスと称する。
論理アドレスLBA0〜LBA2は、第1ミラー論理アドレスLBA3〜LBA5と一対一の対応関係が有る(図19参照)。また、論理アドレスLBA0〜LBA2は、第2ミラー論理アドレスLBA6〜LBA8と一対一の対応関係が有る(図19参照)。当該図19に示す対応関係は、演算装置50において情報として設定されている。
なお、図18(A)において、残りの論理アドレスLBA9〜LBA15は、不使用の論理アドレスである。
他方、図18(B)では、実施の形態1(図11(B))でも説明したように、各第1ブロック42は、正常ブロックと初期欠陥ブロックとで構成されている。上記第一の論物変換処理の結果、図18(B)に示される、第1物理アドレスと論理アドレスとの対応関係が成立する。各第1物理アドレスには、初期欠陥ブロックをとばして、論理アドレスが昇順に対応している。
図18(B)において、3ブロック分のユーザ情報は、初期欠陥ブロックをとばして、第1物理アドレスPBA0〜PBA3で特定される正常ブロックに格納される。また、3ブロック分の第一の複製ユーザ情報は、初期欠陥ブロックをとばして、第1物理アドレスPBA4〜PBA8で特定される正常ブロックに格納される。また、3ブロック分の第二の複製ユーザ情報は、第1物理アドレスPBA9〜PBA11で特定される正常ブロックに格納される。第一の複製ユーザ情報が格納されるブロック領域を、「第1物理ミラー領域」と称することとする。また、第二の複製ユーザ情報が格納されるブロック領域を、「第2物理ミラー領域」と称することとする。
なお、図18の例では、第1物理アドレスPBA12〜PBA15で特定される第1ブロック42は、未使用ブロックである。また、複数の第1ブロック42のうちのユーザ情報を記憶する複数の第1ブロックを、「ユーザ情報ブロック」と称する。また、複数の第1ブロック42のうちの第一の複製ユーザ情報を記憶する複数の第1ブロックを、「第1複製ユーザ情報ブロック」と称する。また、複数の第1ブロック42のうちの第二の複製ユーザ情報を記憶する複数の第1ブロックを、「第2複製ユーザ情報ブロック」と称する。
ユーザ情報ブロック42に格納されるデータと、第1複製ユーザ情報ブロック42に格納されるデータとの間には、所謂ミラー関係が成立する(図20参照)。また、ユーザ情報ブロック42に格納されるデータと、第2複製ユーザ情報ブロック42に格納されるデータとの間には、所謂ミラー関係が成立する(図20参照)。たとえば、物理アドレスPBA0のユーザ情報ブロック42に格納されるデータは、物理アドレスPBA4,PBA9の第1,2複製ユーザ情報ブロック42に格納されるデータと同じ内容のものである。また、物理アドレスPBA3のユーザ情報ブロック42に格納されるデータは、物理アドレスPBA8,PBA11の第1,2複製ユーザ情報ブロック42に格納されるデータと同じ内容のものである。
上記構成において、メモリカード3に、論理アドレスLBA1を含むアクセス要求が入力され、演算装置50で、上記第一の論物変換処理を行った結果、第1物理アドレスとして「PBA2」が指定されたとする。その後、実施の形態1でも説明したように、第1物理アドレスPBA2で特定されるユーザ情報ブロック42において、暫定後発欠陥が発生したとする(図21参照)。この場合には、実施の形態1で説明した動作(図14参照)の結果、当該暫定後発欠陥発生後に論理アドレスLBA1が入力されたときには、メモリコントローラ5は、第1物理アドレスPBA5で特定される第1複製ユーザ情報ブロック42にアクセスを行う。ここでの説明において、図14のステップS104では、演算装置50は、図19を参照して、論理アドレスLBA1に対応するミラー論理アドレスとして、「LBA4」を決定する。
さて、演算装置50は、実施の形態1と同様に、上記で求めた第1物理アドレスPBA5で特定される第1複製ユーザ情報ブロック42が、暫定後発欠陥ブロックであるか否かを判断する。メモリカード3に、論理アドレスLBA1を含むアクセス要求が入力され続けた結果、第1物理アドレスPBA5で特定される第1複製ユーザ情報ブロック42においても、暫定後発欠陥が発生したとする(図21参照)。この場合には、演算装置50が、当該第1複製ユーザ情報ブロック42が暫定後発欠陥ブロックであると判断し、次の処理を行う。
演算装置50は、「PBA5」のアドレス情報を、コントローラメモリ52内の他の第2管理領域を構成するブロック(図示せず)に格納する(当該他の第2管理領域への格納の理由は、ステップS103で説明した第2管理領域52Iへの第1物理アドレス格納の理由と同じである)。そして、演算装置50は、図19を参照して、論理アドレスLBA1に対応する他のミラー論理アドレスとして、「LBA7」を決定する。
その後、図14のステップS105で説明したように、当該暫定後発欠陥発生後に論理アドレスLBA1が入力されたときには、演算装置50は、上記第一の論物変換処理を実施する。ここで、当該第一の論物変換処理においては、論理アドレスを他のミラー論理アドレスと読み替える必要ある。したがって、当該第一の論物変換処理とは、上記で決定した他のミラー論理アドレスLBA7とコントローラメモリ52内の第1管理領域52Iの情報(第2ブロック52baに格納されている情報)とを用いた処理である。
上記第一の論物変換処理により、他のミラー論理アドレスLBA7(換言すれば、入力された論理アドレスLBA1)に対応する第1物理アドレスPBA10を算出する。その後、メモリコントローラ5は、第1物理アドレスPBA10で特定される第2複製ユーザ情報ブロック42にアクセスを行う(図21参照)。
なお、本実施の形態においても、演算装置50は、実施の形態2で説明したリフレッシュ処理を行う。たとえば、演算装置50は、第1物理アドレスPBA10で特定される第2複製ユーザ情報ブロック42内の情報を用いて、暫定後発欠陥ブロックであると判断したユーザ情報ブロック42(PBA2)および第1複製ユーザ情報ブロック(PBA5)を、修復する。
当該修復の結果、修復が成功しなかったブロック42に対しては、以後、演算装置50は、実施の形態2で説明したように、当該ブロック42を恒久的後発欠陥ブロックとして取り扱い、そのための処理を行う(図17のステップS205参照)。つまり、修復不可能となった第1ブロックの第1物理アドレス情報を、第2管理領域(他の第2管理領域)からメモリ4の第2予備管理領域(他の第2予備管理領域)内に転送する。また、修復に成功した場合には、実施の形態2でも説明したように、演算装置50は、コントローラメモリ52の第2管理領域および他の第2管理領域から、修復された暫定後発欠陥ブロックの第1物理アドレス情報を削除する。
以上により、本実施の形態では、複数のミラー領域が用意されている。したがって、メモリシステムの更なる信頼性向上を図ることができる。
なお、上記では、(物理および論理)ミラー領域が二つである場合に言及した。しかし、(物理および論理)ミラー領域が三つ以上である場合についても、上記説明を適用することができる。下記において具体例を述べつつ、ミラー領域が三つ以上の構成の場合における動作を、簡単に説明する。
たとえば、論理空間における論理ミラー領域以外のアドレス領域(図18の例では、LBA0〜LBA2が属する領域)を、「論理オリジナル領域」と称することとする。また、物理空間における物理ミラー領域以外のアドレス領域(図18の例では、PBA0〜PBA3が属する領域)を、「物理オリジナル領域」と称することとする。また、ユーザ情報のデータ容量は、第1ブロック42のNu個分であるとする。
また、論理ミラー領域として、第1論理ミラー領域、第2論理ミラー領域、・・・、第Nm論理ミラー領域と、Nm個の論理ミラー領域が存在するとする。さらに、論理アドレス空間において、論理オリジナル領域、第1論理ミラー領域、第2論理ミラー領域、・・・第Nm論理ミラー領域と、当該順に論理アドレスの切れ目無く設けられているとする。また、論理オリジナル領域におけるn(=1〜Nu)番目の論理アドレスは、第α(=1〜Nm)ミラー領域におけるn番目の論理アドレスと、一対一の関係があるとする。なお、上記同様、当該一対一の関係は、演算装置50に予め設定されている。ここで、第2論理ミラー領域に属する論理アドレス、第3論理ミラー領域に属する論理アドレス、・・・、第Nm論理ミラー領域に属する論理アドレスが各々、他の論理ミラーアドレスであると把握できる。
物理ミラー領域として、第1物理ミラー領域、第2物理ミラー領域、・・・、第Nm物理ミラー領域と、Nm個の物理ミラー領域が存在するとする。ここで、各物理ミラー領域には、物理オリジナル領域に格納されているユーザ情報(データ量は、上記Nuブロック分である)の複製が、各々に格納されている。また、複数の第1ブロックにおいて、物理オリジナル領域、第1物理ミラー領域、第2物理ミラー領域、・・・第Nm物理ミラー領域と、第1物理アドレス(初期欠陥ブロックのアドレスは除く)切れ目無く設けられているとする。なお、第β(=1〜Nm)物理ミラー領域に格納されているユーザ情報のうち、n(=1〜Nu)ブロック番目のデータは、物理オリジナル領域に格納されているユーザ情報のうち、n(=1〜Nu)ブロック番目のデータの複製である。ここで、第2物理ミラー領域を構成するブロック、第3物理ミラー領域を構成するブロック、・・・、第Nm物理ミラー領域を構成するブロックが各々、他の複製ユーザ情報ブロックであると把握できる。
上記前提において、メモリカード3に、論理オリジナル領域におけるNu番目の論理アドレスが入力されたとき、演算装置50は第一の論物変換処理を実施し、物理オリジナル領域における第1物理アドレスAを算出する。
その後、第1物理アドレスAの第1ブロック42に暫定後発欠陥が発生したことを演算装置50が判断したとき、演算装置50は、コントローラメモリ52における第2−1管理領域に「A」を記録する。そして、演算装置50は、論理オリジナル領域におけるNu番目の論理アドレスと一対一の関係にある、第1論理ミラー領域におけるNu番目の論理アドレスを決定する。そして、当該決定した論理アドレスを用いて、上記第一の論物変換処理を実施し、第1物理ミラー領域における第1物理アドレスBを算出する。ここで、当該第1物理アドレスBの第1ブロック42には、第1物理アドレスAの第1ブロック42に格納されていたデータの複製が格納されている。なお、第2−1管理領域には「A」が格納されている。したがって、以後メモリカード3に論理オリジナル領域におけるNu番目の論理アドレスが入力されたとき、演算装置50は第2−1管理領域を参照し、「A」の記録の確認の後、上記第1論理ミラー領域におけるNu番目の論理アドレスの決定および上記第1物理アドレスBの算出を行う。
その後、第1物理アドレスBの第1ブロック42に暫定後発欠陥が発生したことを演算装置50が判断したとき、演算装置50は、コントローラメモリ52における第2−2管理領域に「B」を記録する。そして、演算装置50は、論理オリジナル領域におけるNu番目の論理アドレスと一対一の関係にある、第2論理ミラー領域におけるNu番目の論理アドレスを決定する。そして、当該決定した論理アドレスを用いて、上記第一の論物変換処理を実施し、第2物理ミラー領域における第1物理アドレスCを算出する。ここで、当該第1物理アドレスCの第1ブロック42には、第1物理アドレスAの第1ブロック42に格納されていたデータの複製が格納されている。なお、第2−1管理領域には「A」が格納されており、第2−2管理領域には「B」が格納されている。したがって、以後メモリカード3に論理オリジナル領域におけるNu番目の論理アドレスが入力されたとき、演算装置50は第2−1,2−2管理領域を参照し、「A」、「B」の記録の確認の後、上記第2論理ミラー領域におけるNu番目の論理アドレスの決定および上記第1物理アドレスCの算出を行う。
その後、第1物理アドレスCの第1ブロック42に暫定後発欠陥が発生したことを演算装置50が判断したとき、演算装置50は、コントローラメモリ52における第2−3管理領域に「C」を記録する。そして、演算装置50は、論理オリジナル領域におけるNu番目の論理アドレスと一対一の関係にある、第3論理ミラー領域におけるNu番目の論理アドレスを決定する。そして、当該決定した論理アドレスを用いて、上記第一の論物変換処理を実施し、第3物理ミラー領域における第1物理アドレスDを算出する。ここで、当該第1物理アドレスDの第1ブロック42には、第1物理アドレスAの第1ブロック42に格納されていたデータの複製が格納されている。なお、第2−1管理領域には「A」が格納されており、第2−2管理領域には「B」が格納されており、第2−3管理領域には「C」が格納されている。したがって、以後メモリカード3に論理オリジナル領域におけるNu番目の論理アドレスが入力されたとき、演算装置50は第2−1,2−2,2−3管理領域を参照し、「A」、「B」、「C」の記録の確認の後、上記第3論理ミラー領域におけるNu番目の論理アドレスの決定および上記第1物理アドレスDの算出を行う。
その後、繰り返し、新たに算出された第1物理アドレスの第1ブロック42に暫定後発欠陥が発生し、第Nm−1物理ミラー領域における第1物理アドレスNNの第1ブロック42に暫定後発欠陥が発生したとする。このとき、演算装置50は当該発生を判断し、コントローラメモリ52における第2−Γ管理領域に「NN」を記録する。そして、演算装置50は、論理オリジナル領域におけるNu番目の論理アドレスと一対一の関係にある、第Nm論理ミラー領域におけるNu番目の論理アドレスを決定する。そして、当該決定した論理アドレスを用いて、上記第一の論物変換処理を実施し、第Nm物理ミラー領域における第1物理アドレスΘを算出する。ここで、当該第1物理アドレスΘの第1ブロック42には、第1物理アドレスAの第1ブロック42に格納されていたデータの複製が格納されている。なお、第2−1管理領域には「A」が格納されており、第2−2管理領域には「B」が格納されており、第2−3管理領域には「C」が格納されており、・・・、第2−Γ管理領域には「NN」が格納されている。したがって、以後メモリカード3に論理オリジナル領域におけるNu番目の論理アドレスが入力されたとき、演算装置50は第2−1,2−2,2−3,・・・,2−Γ管理領域を参照し、「A」、「B」、「C」、・・・「NN」の記録の確認の後、上記第Nm論理ミラー領域におけるNu番目の論理アドレスの決定および上記第1物理アドレスNNの算出を行う。
<実施の形態4>
実施の形態2では、恒久的後発欠陥ブロックと判断された第1ブロック42の第1物理アドレス情報を、コントローラメモリ52内の第4ブロックおよびメモリ4の第2予備管理領域41Bに格納する場合に言及した。
本実施の形態では、暫定後発欠陥ブロックおよび恒久的後発欠陥ブロックが発生した場合における、論物変換処理の動作について説明する。当該恒久的後発欠陥ブロックは、たとえば、データ書き込み処理などを伴う上述したリフレッシュ処理(修復処理)などの際に発生しうる。
本実施の形態では、図11(A)に示した論理アドレスLBA20〜LBA31は、代替論理アドレスとして用いられる。ここで、メモリコントローラ5(演算装置50)は、代替論理アドレスLBA20〜LBA31のうちの最初のアドレス(先頭代替論理アドレス)として、「LBA20」が設定されている。
また、実施の形態1では、図11(B)において、第1物理アドレスPBA26〜PBA31の第1ブロック42は、未使用ブロックであった。しかし、本実施の形態では、図22に示すように、第1物理アドレスPBA26〜PBA31の第1ブロック42は、代替ブロックとして機能する。
次に、本実施の形態の動作について説明する。
演算装置50における論物変換処理前に、本実施の形態においても、演算装置50は、メモリ4の冗長情報44を、コントローラメモリ52へ参照情報55として転送する。ここで、図23に示すように、第1管理領域52Iには、図10に示す第1管理領域52Iと同じ情報が記憶される。これに対して、図23に示すように、本実施の形態では、第2管理領域52FAの第4ブロック52bbには、第1物理アドレス情報として、「PBA12」および「PBA18」が記憶されている。
上記でも説明したように、第4ブロック52bbの第4物理アドレスが昇順するに連れて(FA_RAD0→FA_RAD1→FA_FRAD2→FA_RAD3)、各第4ブロック52bbには、メモリ4における恒久的後発欠陥ブロックが発生した順に、当該恒久的後発欠陥ブロックの(第1)物理アドレスが格納される。したがって、図23の例では、第1物理アドレスPBA12の第1ブロック42が初めに恒久的後発欠陥ブロックとなり、その後、第1物理アドレスPBA18の第1ブロック42が恒久的後発欠陥ブロックとなったと理解できる。
また、本実施の形態では、第3管理領域52TAの第3ブロック52bcには、暫定後発欠陥ブロックの第1物理アドレス情報「PBA6」が記憶されている。
上記前提の下において本実施の形態では、演算装置50は図24に示すフローを実施する。
メモリカード3が、論理アドレスLBA4を含むアクセス要求(たとえば書き込み要求など)を受信したとする。この場合に、ステップS101でも説明したように、演算装置50は、上記第一の論物変換処理を実施する(図24のステップS401)。当該ステップS401により、演算装置50は、論理アドレスLBA4に対応する第1物理アドレスとして「PBA6」を決定する。
次に、演算装置50は、第3管理領域52TAを参照し、第3ブロック内に第1物理アドレス情報として「PBA6」が記憶されているか否かを判断する(ステップS402)。上記前提条件では、第1物理アドレスPBA6の第1ブロック42は、暫定後発欠陥ブロックである(図22および図23の第3管理領域52TA参照)。したがって、ステップS402で「Y」となり、演算装置50はステップS403の処理を開始する。
なお、上記前提とは異なり、第1物理アドレスPBA6の第1ブロック42が暫定後発欠陥ブロックで無いとする。この場合には(ステップS402で「N」)、演算装置50は、論理アドレスLBA4に対応する第1物理アドレスとして「PBA6」を決定する。そして、第1物理アドレスPBA6の第1ブロック42に対して、アクセス要求に従ったアクセスを実施する。
ステップS403では、ステップS104で説明したように、演算装置50は、図12に示す表を参照し、論理アドレスLBA4に対応するミラー論理アドレスLBA14を決定する。さらに、ステップS403では、ステップS105で説明したように、演算装置50は、決定したミラー論理アドレスLBA14とコントローラメモリ52内の第1管理領域52Iの情報(第2ブロック52baに格納されている情報)とを用いた上記第一の論物変換処理(ただし、論理アドレスをミラー論理アドレスと読み替える必要あり)により、ミラー論理アドレスLBA14(換言すれば、入力された論理アドレスLBA4)に対応する第1物理アドレスを算出する。
上記第一の論物変換処理を適用すると、第1物理アドレスは「PBA18」である(図22参照)。ここで、第1物理アドレスPBA18の複製ユーザ情報ブロック42が正常ブロックである場合には、当該複製ユーザ情報ブロック42には、第1物理アドレスPBA6のユーザ情報ブロック42に格納されていたユーザ情報の複製データが格納されている。
次に、演算装置50は、第2管理領域52FAを参照する。そして、演算装置50は、ステップS403で求めた第1物理アドレス「PBA18」が、第4ブロック52bbに格納されている情報と一致するか否かを判断する(ステップS404)。
ここで、ステップS404の判断処理は、恒久的後発欠陥ブロック発生数が少ない場合には、第4ブロック52bb全部に対して実施しても良い。これに対して、恒久的後発欠陥ブロック数が多い場合には、例えば電源起動時などに第2管理領域52FAをアドレス昇順に並び替えた、別テーブルを持ち、当該別テーブルにおける2分岐探索を実施しても良い。
上記前提条件では、図23に示すように第2管理領域52FAにおいて、2番目の物理アドレスFA_RAD1の第4ブロック53bbに、「PBA18」が格納されている。したがって、演算装置50は、第1物理アドレスPBA18の複製ユーザ情報ブロック42が恒久的後発欠陥ブロックであると判断する(図22参照)。そして、ステップS404で「Y」でステップS405へと移行する。
なお、上記前提とは異なり、第1物理アドレスPBA18の複製ユーザ情報ブロック42が恒久的後発欠陥ブロックで無いとする(つまり、第4ブロック52bbには「PBA18」の情報が格納されていないとする)。この場合には(ステップS404で「N」)、演算装置50は、論理アドレスLBA4に対応する第1物理アドレスとして「PBA18」を決定する。そして、第1物理アドレスPBA18の第1ブロック42に対して、アクセス要求に従ったアクセスを実施する。
さて、ステップS404の判断で一致していると判断したとき(ステップS404で「Y」)、演算装置50は、「代替論理アドレス=先頭代替論理アドレス+代替論理オフセット ・・・式A」により、代替論理アドレスを算出する(ステップS405)。
ここで、コンピュータ2およびメモリカード3には、先頭代替論理アドレスとして「LBA20」が予め設定されている。また、代替論理オフセットは、ステップS403で求めた第1物理アドレスが格納されている第4ブロック52bbの第2管理領域52FAにおける物理アドレス(第4物理アドレス)から、一義的定まる(当該第4アドレスの末尾の数字より一義的に定まる)。
たとえば、先頭の第4ブロック52bbに、ステップS403で求めた第1物理アドレスが格納されているとする。この場合は、当該先頭の第4ブロック52bbの第4物理アドレスは「FA_RAD0」であるので、代替論理オフセットは「0」と決定される。また、2番目の第4ブロック52bbに、ステップS403で求めた第1物理アドレスが格納されているとする。この場合は、当該2番目の第4ブロック52bbの第4物理アドレスは「FA_RAD1」であるので、代替論理オフセットは「1」と決定される。同様に、3番目の第4ブロック52bbに、ステップS403で求めた第1物理アドレスが格納されているとする。この場合は、当該3番目の第4ブロック52bbの第4物理アドレスは「FA_RAD2」であるので、代替論理オフセットは「2」と決定される。
さて、上記例では、第1物理アドレスPBA18である第1ブロック42は、2番目に恒久的後発欠陥ブロックとなっている。したがって、図23に示すように、第2管理領域52FAにおける第4物理アドレスFA_RAD1に、ステップS403で求めた「PBA18」が格納される。よって、代替論理オフセットは、「1」として決定される。
したがって、式Aにより、LBA20+1となり、演算装置50は、代替論理アドレスとして、LBA21を得る(「21」は、先頭代替論理アドレスの数字「20」と代替論理オフセットの値「1」との和である)。
次に、演算装置50は、上記で求めた代替論理アドレスLBA21とコントローラメモリ52内の第1管理領域52Iの情報(第2ブロック52baに格納されている情報)とを用いた上記第一の論物変換処理(ただし、論理アドレスを代替論理アドレスと読み替える必要あり)により、代替論理アドレスLBA21に対応する代替物理アドレスを算出する(ステップS405)。上記第一の論物変換処理を適用すると、代替物理アドレスは「PBA28」である。
そして、演算装置50は、上記で算出した代替物理アドレスPBA28を、入力された論理アドレスLBA4に対応する第1物理アドレスとして決定する(ステップS405;図22参照)。
以上のように、本実施の形態では、恒久的後発欠陥ブロックのアドレス情報を記憶する第4ブロック52bbを備えており、演算装置50は、ステップS403で求めた第1物理アドレスが、第4ブロック52bbに格納されている情報と一致するか否かを判断する(ステップS404)。
したがって、ステップS403で求めた第1物理アドレスにアクセスする際に、当該アクセスした第1ブロック42に恒久的後発欠陥が発生しているか否かの判断ができ、更なる論物変換処理を行うか否かの判断もできる。
また、本実施の形態では、アクセスした第1ブロック42に恒久的後発欠陥が発生していると判断したときには、演算装置50は、ステップS401で求めた第1物理アドレスを格納している第4ブロック52bbの第4物理アドレスと、予め用意されている先頭代替論理アドレスとに基づいて、代替論理アドレスを求める(ステップS405)。そして、当該代替論理アドレスと、第2ブロック52baに格納される情報とに基づいて、所定の論理アドレスに対応する第1物理アドレスを求める(ステップS405)。
したがって、複製ユーザ情報ブロック42が恒久的後発欠陥ブロックになった場合においても、簡易な方法で、入力された所定の論理アドレスに対応する代替先のブロック42を決定できる。
また、恒久的後発欠陥ブロックの第1物理アドレスは、恒久的後発欠陥が発生した順に従って、第4物理アドレスFA_RAD0〜FA_RAD3の順で、第4ブロックに52bb格納される。
したがって、第1物理アドレスを求めるために必要となる、第4ブロック52bbの数を減らすことが可能となる。