まず、本願発明の前提となる構成および動作について説明する(特許文献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の使用において発生する後発欠陥とがある。
図示の都合上、図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>
図9は、本実施の形態に係るメモリ4の構成を示す図である。
図9に示すように、メモリ4における予備記憶領域41は、二つの管理領域41A,41Bを有する。図9におけるユーザ情報記憶領域40の構成は、図3に示すユーザ情報記憶領域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予備ブロックには、互いに重複せず連番にて物理アドレスが割り当てられている。また、各第2予備ブロックにおいても、互いに重複せず連番にて物理アドレスが割り当てられている。
図6を用いて説明したように、初期欠陥ブロックはメモリ4に対する検査工程等で検出され、その物理アドレスが第1予備ブロック43Aに記憶される。検出された初期欠陥ブロックの物理アドレスは、メモリコントローラ5が予備記憶領域41を読み出す順序(第1予備ブロック43Aの物理アドレスの昇順)に、順次(初期欠陥ブロックの物理アドレスの小さい順)に格納される。つまり、第1予備ブロック43Aの物理アドレスが昇順するに連れて、各第1予備ブロック43Aに格納される初期欠陥ブロックの(第1)物理アドレスは昇順する。また、全ての初期欠陥ブロックの検出が終了したときに、残りの第1予備ブロック43Aに無効情報NOUを格納する。
後発欠陥ブロックはメモリ4の使用中において検出され、その第1物理アドレスが第2予備ブロック43Bに記憶される。検出された後発欠陥ブロックの物理アドレスは、メモリコントローラ5が予備記憶領域41を読み出す順序(第2予備ブロック43Bの物理アドレスの昇順)に、順次(後発欠陥が発生した順の後発欠陥ブロックの物理アドレスの順)に格納される。つまり、第2予備ブロック43Bの物理アドレスが昇順するに連れて、各第2予備ブロック43Bには、後発欠陥ブロックが発生した順に、当該後発欠陥ブロックの(第1)物理アドレスが格納される。また、後発欠陥ブロックの検出・記憶されて、残りの第2予備ブロック43Bに無効情報NOUを格納する。
当該後発欠陥ブロックの検出は、たとえば、メモリコントローラ5がメモリ4の所定の第1ブロック42にアクセスし、当該所定の第1ブロックのアクセスの結果、読み出し・書き込み等が正常に終了しなかった信号をメモリ4から受信することにより、メモリコントローラ5が検出する。当該検出後、メモリコントローラ5は、直接またはコントローラメモリ52を介して、メモリ4の第2管理領域41Bに、当該所定の第1ブロックの第1物理アドレスを記録する。
次に、後発欠陥ブロックが発生した後の論物変換処理の動作について説明する。
上記で説明したように、メモリカード3に電源が投入されたと判定すると、メモリコントローラ5(演算装置50)は、メモリ4の予備記憶領域41にアクセスして、そこに記憶されている冗長情報(第1,2管理領域41A,41Bに記憶されている情報)44を読み出し、読み出した冗長情報44のコントローラメモリ52への転送を開始する。
なお、後述するように、第1管理領域41Aで記憶されている情報および第2管理領域41Bで記憶されている情報は、メモリ4の使用状況に応じて更新される(つまり、欠陥ブロックの物理アドレスが随時記録される)。
メモリコントローラ5(演算装置50)は、第1管理領域41Aを構成する第1予備ブロック43Aのうち、先頭の第1予備ブロック43Aから順に最後までアクセスして、アクセスした第1予備ブロック43Aに格納されている情報を、順次、第2ブロックに転送する。これによって、コントローラメモリ52には、第1管理領域41Aに記憶されている情報と同等の情報が、参照情報55として記憶される。つまり、第2ブロックの第2物理アドレスが昇順するに連れて、各第2ブロックに格納される初期欠陥アドレスの(第1)物理アドレスは昇順する。
また、メモリコントローラ5(演算装置50)は、第2管理領域41Bを構成する第2予備ブロック43Bのうち、先頭の第2予備ブロック43Bから順に最後までアクセスして、アクセスした第2予備ブロック43Bに格納されている情報を、順次、第3ブロックに転送する。これによって、コントローラメモリ52には、第2管理領域41Bに記憶されている情報と同等の情報が、参照情報55として記憶される。つまり、第3ブロックの第3物理アドレスが昇順するに連れて、各第3ブロックには、メモリ4における後発欠陥ブロックが発生した順に、当該後発欠陥ブロックの(第1)物理アドレスが格納される。
図10は、冗長情報44がコントローラメモリ52に参照情報55として記憶される状態を例示する図である。
コントローラメモリ52における第1管理領域52Iは、複数の第2ブロック52baで構成されている。ここで、第1管理領域52I内において、第2ブロック52baのコントローラメモリ52における物理アドレス(第2物理アドレス)は連番である。
コントローラメモリ52における第2管理領域52Aは、複数の第3ブロック52bbで構成されている。ここで、第2管理領域52A内において、第3ブロック52bbのコントローラメモリ52における物理アドレス(第3物理アドレス)は連番である。第2ブロックには、互いに重複しない第2物理アドレスI_RAD0〜I_RAD7が個々に割り当てられており、第3ブロックには、互いに重複しない第3物理アドレスA_RAD0〜A_RAD3が個々に割り当てられている。
上記転送処理から分かるように、複数の第2ブロック52baは、複数の第1ブロック42のうちの初期欠陥ブロックの第1物理アドレスを個々に記憶するために設けられる。また、複数の第3ブロックは、複数の第1ブロック42のうちの後発欠陥ブロックの第1物理アドレスを個々に記憶するために設けられる。
上記転送の結果、図10に例示するように、第2ブロック52baの第2物理アドレスが昇順するに連れて(I_RAD0→I_RAD1・・・→I_RAD6→I_RAD7)、各第2ブロック52baに格納される初期欠陥アドレスの(第1)物理アドレスは昇順する(PBA3→PBA5・・・→PBA21→PBA27)。
また、第3ブロック52bbの第3物理アドレスが昇順するに連れて(A_RAD0→A_RAD1→A_RAD2→A_RAD3)、各第3ブロック52bbには、メモリ4における後発欠陥ブロックが発生した順に、当該後発欠陥ブロックの(第1)物理アドレスが格納される。したがって、第1物理アドレスPBA12の第1ブロック42において最初に後発欠陥が発生し、次に、第1物理アドレスPBA6の第1ブロック42において後発欠陥が発生し、次に、第1物理アドレスPBA17において第1ブロック42において後発欠陥が発生したと理解できる。なお、未使用のブロック52ba,52bbには、未使用であることを意味する無効情報「NOU」が格納されている。
さて、上記コントローラメモリ52への情報の転送後、コンピュータ2がアクセス要求を生成して、メモリカード3に送信したとする。ここで、コンピュータ2から送信されるアクセス要求には、先述のように、論理アドレスLBAが含まれる。メモリカード3がアクセス要求(論理アドレスLBA)を受信すると、演算装置50が第1物理アドレスPBAを演算する。演算装置50における当該演算動作を、図10、図11および図12を用いて説明する。
ここで、図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の20ブロック分である。したがって、図11(A)において、当該20ブロック分の論理アドレスLBA0〜LBA19が昇順に設定される。なお、図11(A)において、残りの論理アドレスLBA20〜LBA31は、「代替論理アドレス」として、昇順に設定されている。上記から分かるように、昇順に設定された論理アドレスLBA0〜LBA31が、代替論理アドレスに属するか否かの境界は、ユーザ情報のデータ量により決定される。また、代替論理アドレスLBA20〜LBA31が属する領域を、図11(A)において「代替領域」と表記している。
他方、図11(B)では、正常ブロックと、初期欠陥ブロックとで構成されている。正常ブロック内には、便宜上、対応する論理アドレスが記載されている。また、初期欠陥ブロック(PBA3,PBA5,PBA7,PBA15,PBA20,PBA21,PBA27)内には、便宜上、「Initial Bad」が記載されている。上記第一の論物変換処理の結果、図11(B)に示される、第1物理アドレスと論理アドレスとの対応関係が成立する。各第1物理アドレスには、初期欠陥ブロックをとばして、論理アドレスが昇順に対応している。なお、正常ブロックには、上記データ量のユーザ情報が格納されている。
また、図11(B)に示すように、第1物理アドレスの昇順に、正常ブロックにユーザ情報が順次格納された結果、第1物理アドレスPBA25の第1ブロック42がユーザ情報の末尾に当たる。したがって、第1物理アドレスPBA26〜PBA31は、「代替物理アドレス」として、昇順に設定される。なお、代替物理アドレスPBA26〜PBA31が属する領域を、図11(B)において「代替領域」と表記している。
第1物理アドレスPBA27の第1ブロック42は、初期欠陥ブロックである。したがって、第1物理アドレスPBA27は、代替物理アドレスとはならない。上記から分かるように、昇順に設定された第1物理アドレスPBA0〜PBA31が、代替物理アドレスに属するか否かの境界は、ユーザ情報のデータ量および、先頭の第1ブロック42から当該ユーザ情報の最後のデータが格納された第1ブロック42までに発生している初期欠陥ブロック数(図11(B)では6個)により決定される。
図11の例に従い、図10に示す第1管理領域52Iの第2ブロック52baには、初期欠陥ブロックの第1物理アドレスPBA3,PBA5,PBA7,PBA15,PBA20,PBA21,PBA27が、昇順に記憶される。
さて、メモリ4の使用の結果、第1物理アドレスPBA12,PBA6,PBA17の第1ブロックが、当該順に後発欠陥ブロックとなったとする。この場合には、図10に示すように、第2管理領域52Aの第3ブロック52bbには、後発欠陥発生順に、後発欠陥ブロックの第1物理アドレスPBA12,PBA6,PBA17が、当該順に記憶される。
当該後発欠陥ブロック発生後の論物変換処理を、図12のフローチャートを用いて説明する。具体的に、論理アドレスと、第2ブロック52baに格納される情報と、第3ブロック52bbに格納される情報とに基づいて、論理アドレスに対応する第1物理アドレスを求める演算装置50の動作を、図12を用いて説明する。
コンピュータ2は、メモリカード3に、論理アドレスLBA4を含むアクセス要求(たとえば読出し要求)を送信したとする。この場合には、演算装置50は、当該論理アドレスLBA4とコントローラメモリ52内の第1管理領域52Iの情報(第2ブロック52baに格納されている情報)とを用いた上記第一の論物変換処理により、論理アドレスLBA4に対応する第1物理アドレスPBA6を算出する(ステップS101)。
次に、演算装置50は、コントローラメモリ52内の第2管理領域52A内の情報を検索する。具体的に、演算装置50は、全ての第3ブロック52bb内の情報を検索する。そして、第3ブロック52bb内に、ステップS101で算出した第1物理アドレスである「PBA6」の情報があるか否かを検索する(ステップS102)。換言すれば、演算装置50は、ステップS101で求めた第1物理アドレスが、第3ブロック52bbに格納されている情報(第1物理アドレス)と一致するか否かを判断する(ステップS102)。
ここで、この検索は、後発欠陥ブロック発生数が少ない場合には、第3ブロック52bb全部に対して検索処理を実施しても良い。これに対して、後発欠陥ブロック数が多い場合には、例えば電源起動時などに第2管理領域をアドレス昇順に並び替えた、別テーブルを持ち、当該別テーブルにおける2分岐探索を実施しても良い。
図10の例では、第2管理領域52Aにおける2つ目の番地である第3物理アドレスA_RAD1には、第1物理アドレスPBA6が記憶されている。したがって、ステップS102で「有」で、演算装置50はステップS103の処理へと移行する。
ステップS103において、演算装置50は、下式11により、代替論理アドレスを算出する。
代替論理アドレス=先頭代替論理アドレス+代替論理オフセット ・・・式11
ここで、図11(A)の例では、先頭代替論理アドレス(図11(A)における代替領域の先頭アドレス)は「LBA20」であり、コンピュータ2およびメモリカード3には、予めこの値が設定されている。また、代替論理オフセットは、ステップS101で求めた第1物理アドレスが格納されている第3ブロック52bbの第2管理領域52Aにおける物理アドレス(第3物理アドレス)から、一義的定まる(第3物理アドレスの連番の数値より一義的に決まる)。
たとえば、先頭の第3ブロック52bbに、ステップS101で求めた第1物理アドレスが格納されているとする。この場合は、当該先頭の第3ブロック52bbの第3物理アドレスは「A_RAD0」であるので、代替論理オフセットは「0」と決定される。また、2番目の第3ブロック52bbに、ステップS101で求めた第1物理アドレスが格納されているとする。この場合は、当該2番目の第3ブロック52bbの第3物理アドレスは「A_RAD1」であるので、代替論理オフセットは「1」と決定される。同様に、3番目の第3ブロック52bbに、ステップS101で求めた第1物理アドレスが格納されているとする。この場合は、当該3番目の第3ブロック52bbの第3物理アドレスは「A_RAD2」であるので、代替論理オフセットは「2」と決定される。
さて、上記例では、第1物理アドレスPBA6である第1ブロック42は、2番目に後発欠陥ブロックとなっている。したがって、図10に示すように、第2管理領域52Aにおける第3物理アドレスA_RAD1に、ステップS101で求めた「PBA6」が格納される。よって、代替論理オフセットは、「1」として決定される。
したがって、式11によりLBA20+1となり、演算装置50は、代替論理アドレスとして、LBA21を得る(「21」は、先頭代替論理アドレスの数字「20」と代替論理オフセットの値「1」との和である)。
次に、演算装置50は、ステップS103で求めた代替論理アドレスLBA21とコントローラメモリ52内の第1管理領域52Iの情報(第2ブロック52baに格納されている情報)とを用いた上記第一の論物変換処理(ただし、論理アドレスを代替論理アドレスと読み替える必要あり)により、代替論理アドレスLBA21に対応する代替物理アドレスを算出する(ステップS104)。上記第一の論物変換処理を適用すると、代替物理アドレスは「PBA28」である。
そして、演算装置50は、ステップS104で算出した代替物理アドレスPBA28を、入力された論理アドレスLBA4に対応する第1物理アドレスとして決定する。
さて次に、コンピュータ2は、メモリカード3に、論理アドレスLBA5を含むアクセス要求(たとえば読出し要求)を送信したとする。この場合には、演算装置50は、ステップS101により、論理アドレスLBA5に対応する第1物理アドレスPBA8を算出する。
ステップS102の検索の結果、第2管理領域52Aを構成する全第3ブロック52bb内に、ステップS101で求めた第1物理アドレスPBA8の情報が無い。この場合には、ステップS102で「無」となり、演算装置50は、ステップS101で算出した第1物理アドレスPBA8を、入力された論理アドレスLBA5に対応する第1物理アドレスとして決定する。
また、コンピュータ2は、メモリカード3に、論理アドレスLBA9を含むアクセス要求(たとえば読出し要求)を送信したとする。この場合には、演算装置50は、ステップS101により、論理アドレスLBA9に対応する第1物理アドレスPBA12を算出する。
図10の例では、第2管理領域52Aにおける1つ目の番地である第3物理アドレスA_RAD0には、第1物理アドレスPBA12が記憶されている。したがって、ステップS102で「有」で、演算装置50はステップS103の処理へと移行する。ステップS103において、演算装置50は、式11により、代替論理アドレスを算出する。今の場合、式11によりLBA20+0となり、演算装置50は、代替論理アドレスとして、LBA20を得る(「20」は、先頭代替論理アドレスの数字「20」と代替論理オフセットの値「0」との和である)。
次に、演算装置50は、ステップS104により、代替論理アドレスLBA20に対応する代替物理アドレスPBA26を算出する。そして、演算装置50は、ステップS104で算出した代替物理アドレスPBA26を、入力された論理アドレスLBA9に対応する第1物理アドレスとして決定する。
また、コンピュータ2は、メモリカード3に、論理アドレスLBA13を含むアクセス要求(たとえば読出し要求)を送信したとする。この場合には、演算装置50は、ステップS101により、論理アドレスLBA13に対応する第1物理アドレスPBA17を算出する。
図10の例では、第2管理領域52Aにおける3つ目の番地である第3物理アドレスA_RAD2には、第1物理アドレスPBA17が記憶されている。したがって、ステップS102で「有」で、演算装置50はステップS103の処理へと移行する。ステップS103において、演算装置50は、式11により、代替論理アドレスを算出する。今の場合、式11によりLBA20+2となり、演算装置50は、代替論理アドレスとして、LBA22を得る(「22」は、先頭代替論理アドレスの数字「20」と代替論理オフセットの値「2」との和である)。
次に、演算装置50は、ステップS104により、代替論理アドレスLBA22に対応する代替物理アドレスPBA29を算出する。そして、演算装置50は、ステップS104で算出した代替物理アドレスPBA29を、入力された論理アドレスLBA13に対応する第1物理アドレスとして決定する。
なお、メモリコントローラ5は、上記で決定された第1物理アドレスの第1ブロック42に対してアクセスを行う。後発欠陥ブロック発生後の図12を用いて説明した動作の結果、図13に示す論理アドレスと第1物理アドレスとの対応関係が成立する。
図13において、正常ブロック内には、便宜上、対応する論理アドレスが記載されている。また、初期欠陥ブロック(PBA3,PBA5,PBA7,PBA15,PBA20,PBA21,PBA27)内には、便宜上、「Initial Bad」が記載されている。また、後発欠陥ブロック(PBA6,PBA12,PBA17)内には、便宜上、「後発Bad」が記載されている。なお、代替アドレスPBA30,PBA31の第1ブロック42内には、未使用であるので、便宜上、「未使用」と記載されている。
以上のように、本実施の形態では、演算装置50は、論理アドレスLBA0〜LBA31と、第2ブロック52baに格納される情報と、第3ブロック52bbに格納される情報とに基づいて、入力された論理アドレスに対応する第1物理アドレスPBA0〜PBA31を求める。ここで、第3ブロック52bbは、後発欠陥ブロックの第1物理アドレスPBA0〜PBA31を個々に記憶するために設けられる。
したがって、メモリ4において後発欠陥が発生したとしても、多くのブロックに渡って論物変換の対応関係を変更する必要がないメモリシステムおよび、コンピュータシステム1を提供することができる。
また、本実施の形態では、第2ブロック52baに記憶される初期欠陥ブロックの第1物理アドレスPBA0〜PBA31は、第1物理アドレスPBA0〜PBA31の順に従って、第2物理アドレスI_RAD0〜I_RAD7の順に、第2ブロック52baに格納される。
したがって、第1物理アドレスPBA0〜PBA31を求めるために必要となる、第2ブロック52baの数を減らすことが可能となる。
また、本実施の形態では、第3ブロック52bbに記憶される後発欠陥ブロックの第1物理アドレスPBA0〜PBA31は、後発欠陥が発生した順に従って、第3物理アドレスA_RAD0〜A_LAD3の順で、第3ブロック52bbに格納される。
したがって、第1物理アドレスPBA0〜PBA31を求めるために必要となる、第3ブロック52bbの数を減らすことが可能となる。
また、本実施の形態では、演算装置50は、ターゲットブロックを検索し、ターゲットブロックから読み出される初期欠陥ブロックの第1物理アドレスPBA0〜PBA31と、ターゲットブロックの第2物理アドレスI_RAD0〜I_RAD7とに基づいて、ターゲットブロックから読み出された初期欠陥ブロックの第1物理アドレスPBA0〜PBA31より前方に存在する、初期欠陥ブロック以外の第1ブロック42の個数を求め、論理アドレスLBA0〜LBA31と当該個数とに基づいて、入力された論理アドレスに対応する第1物理アドレスPBA0〜PBA31を求める。
したがって、正常な第1ブロック42の第1物理アドレスPBA0〜PBA31を記憶する必要がない。あるいは、全てのブロックに関する特性(欠陥の有無)と転送先の物理アドレスとを記憶する必要がない。したがって、第2ブロック52baの数を減らすことが可能となる。
また、本実施の形態では、演算装置50は、ステップS101で求めた第1物理アドレスPBA0〜PBA31が、第3ブロック52bbに格納されている情報と一致するか否かを判断する(ステップS102)。
したがって、当該求めた第1物理アドレスPBA0〜PBA31にアクセスすることを防止でき、更なる論物変換処理を行うか否かの判断もできる。
また、本実施の形態では、演算装置50は、第3ブロック52bbの第3物理アドレスA_RAD0〜A_RAD3と、予め用意されている先頭代替論理アドレス(ここでは、LBA20)とに基づいて、代替論理アドレスLBA20〜LBA31を求める(ステップS103)。そして、代替論理アドレスLBA20〜LBA31と、第2ブロック52baに格納される情報とに基づいて、入力された論理アドレスに対応する第1物理アドレスPBA0〜PBA31を求める(ステップS104)。
したがって、メモリ4において後発欠陥が発生したとしても、多くのブロックに渡って論物変換の対応関係を変更する必要がないメモリシステムおよびコンピュータシステム1を、容易な方法で提供することができる。
また、本実施の形態では、第1予備ブロック43aに記憶されている情報を第2ブロック52baに転送し、第2予備ブロック43bに記憶されている情報を第3ブロック52bbに転送する演算装置(転送部)50を、備えている。
したがって、たとえばバックアップとして第1,2予備ブロック43a,43bに格納されていた情報を、演算装置50での高速演算が可能となる第2ブロック52baおよび第3ブロック52bbに、転送させることができる。
また、本実施の形態では、第2ブロック52baおよび第3ブロック52bbは、揮発性メモリ(たとえば、SRAM、レジスタやフリップフロップ回路など)で構成されるコントローラメモリ52に保持される。
したがって、演算装置50は、高速で第2ブロック52baおよび第3ブロック52bbにアクセスすることができる。よって、論物変換処理の高速化が可能となる。
<実施の形態2>
さて、メモリ4の所定の第1ブロック42に対する消去または書き込みに関するアクセス要求が、コンピュータ2からメモリカード3に送信される。当該アクセス要求には所定の論理アドレスが含まれており、演算装置50では実施の形態1で説明した入力されてきた所定の論理アドレスに対する第1物理アドレスを算出する。そして、メモリコントローラ5は、当該算出後の第1物理アドレスにアクセスする。当該アクセスのときに、上記所定の第1ブロック42が後発欠陥ブロックとなることもある。
本実施の形態は、上記状況に鑑みてなされたものである。以下、本実施の形態に係る論理アドレスと第1物理アドレスとの変換動作について説明する。
上記で説明したように、メモリカード3に電源が投入されたと判定すると、メモリコントローラ5(演算装置50)は、メモリ4の予備記憶領域41にアクセスして、そこに記憶されている冗長情報(第1,2管理領域41A,41Bに記憶されている情報)44を読み出し、読み出した冗長情報44のコントローラメモリ52への転送を開始する。つまり、実施の形態1で説明したように、演算装置50は、入力されてきた論理アドレスに対応する第1物理アドレスの導出前に、第1管理領域(図9の符号41A参照)の情報を第2ブロック(図14の符号52ba参照)に転送し、第2管理領域(図9の符号41B参照)の情報を第3ブロック(図14の符号52bb)に転送する。実施の形態1で説明した当該転送後には、コントローラメモリ52内の第1管理領域52Iと第2管理領域52Aには、図14に示す情報が記憶される。
図14に示す第1管理領域52Iの構成および当該第1管理領域52Iに格納される情報は、図10に示す第1管理領域52Iと同じである。これに対して、図14に示す第2管理領域52Aは、図10に示す第2管理領域52Aと同様に第3ブロック52bbで構成されているが、当該第3ブロック52bbに格納されている情報は、図14に示す第2管理領域52Aと図10に示す第2管理領域52Aとで異なる。つまり、第1物理アドレスPBA12,PBA6で特定される第1ブロック42のみが、既に当該順に後発欠陥が発生している。
さて、上記コントローラメモリ52への情報の転送後、コンピュータ2がアクセス要求(消去要求または書き込み要求)を生成して、メモリカード3に送信したとする。ここで、コンピュータ2から送信される当該アクセス要求には、論理アドレスLBA13が含まれているものとする。メモリカード3がアクセス要求(論理アドレスLBA13)を受信すると、演算装置50が第1物理アドレスを演算する。具体的に、演算装置50は、当該論理アドレスLBA13とコントローラメモリ52内の第1管理領域52Iの情報(第2ブロック52baに格納されている情報)とを用いた上記第一の論物変換処理により、論理アドレスLBA13に対応する第1物理アドレスPBA17を算出する(ステップS101参照)。
ステップS102の検索の結果、図14では第2管理領域52Aを構成する全第3ブロック52bb内に、ステップS101で求めた第1物理アドレスPBA17の情報が無い。この場合には、ステップS102で「無」となり、演算装置50は、ステップS101で算出した第1物理アドレスPBA17を、入力された論理アドレスLBA13に対応する第1物理アドレスとして決定する。
以後、図15のフローチャートを参照しつつ、説明を進める。
そして、メモリコントローラ5は、メモリ4における第1物理アドレスPBA17に対して、上記アクセス要求に基づいたアクセスを行う(ステップS201)。
次に、本実施の形態では、演算装置50は、ステップS101で求めた第1物理アドレスPBA17で特定される第1ブロック42が後発欠陥ブロックであるか否かを判断する(具体的に、上記アクセス時に、当該第1ブロック42に対して後発欠陥が発生したか否かを判断する。ステップS202。)。
ここで、本実施の形態では、図16に示すように、上記アクセス時に、第1物理アドレスPBA17で特定される第1ブロック42に対して後発欠陥が発生したとする。図16では、第1物理アドレスPBA17で特定される第1ブロック42内には、便宜上、「後発Bad発生」と記載している。したがって、本実施の形態では、演算装置50は、第1物理アドレスPBA17で特定される第1ブロック42が後発欠陥ブロックであると判断する(ステップS202で「Y」)。当該判断は、たとえば、メモリコントローラ5がメモリ4からの、上記アクセスが正常に行われたか否かを示す信号を受信することにより、実施できる。
なお、上記と異なるが、演算装置50が、第1物理アドレスPBA17で特定される第1ブロック42が後発欠陥ブロックでないと判断した場合には(ステップS202で「N」)、アクセス要求に従ったメモリ4に対する処理を継続する。
さて、ステップS202で「Y」と判断されると、図17に示すように、演算装置50は、第2管理領域52Aに、ステップS101で求めた第1物理アドレスPBA17を記録する(ステップS203)。ここで、第3ブロック52bbにおいて、1番目および2番目の番地A_RAD0,A_RAD1には、既に第1物理アドレス情報が格納されている(図17参照)。そこで、第1物理アドレスPBA17の情報は、第1物理アドレスの情報を格納していない先頭の第3ブロック(A_RAD2)に記録される(図17参照)。
次に、ステップS204において、演算装置50は、式11により、代替論理アドレスを算出する。ここで、図11(A)の例と同様に本実施の形態においても、先頭代替論理アドレスはLBA20であり、コンピュータ2およびメモリカード3には、予めこの値が設定されているものとする。また、代替論理オフセットは、ステップS101で求めた第1物理アドレスPBA17が格納されている第3ブロック52bbの第2管理領域52Aにおける物理アドレス(第3物理アドレス)A_RAD2から、「2」が一義的定まる。
したがって、式11によりLBA20+2となり、演算装置50は、代替論理アドレスとして、LBA22を得る(「22」は、先頭代替論理アドレスの数字「20」と代替論理オフセットの値「2」との和である)。
次に、演算装置50は、ステップS204で求めた代替論理アドレスLBA22とコントローラメモリ52内の第1管理領域52Iの情報(図14の第2ブロック52baに格納されている情報)とを用いた上記第一の論物変換処理(ただし、論理アドレスを代替論理アドレスと読み替える必要あり)により、代替論理アドレスLBA22に対応する代替物理アドレスを算出する(ステップS205)。上記第一の論物変換処理を適用すると、代替物理アドレスは「PBA29」である(図16参照)。
そして、演算装置50は、ステップS205で算出した代替物理アドレスPBA29を、入力された論理アドレスLBA13に対応する第1物理アドレスとして決定する。その後、メモリコントローラ5は、当該決定した第1物理アドレスPBA29に対して、上記アクセス要求に従った処理を実施する。
また、上記アクセス要求に従った処理終了後、次のアクセス要求が生成されるまでのアイドル期間において、メモリコントローラ5(演算装置50)は、コントローラメモリ52の第1管理領域52Iを構成する第2ブロック52baの情報を、メモリ4の第1ブロック42の一部で構成された第1管理領域(図9の符号41A)に転送する。さらに、メモリコントローラ5(演算装置50)は、コントローラメモリ52の第2管理領域52Aを構成する第3ブロック52bbの情報を、メモリ4の第1ブロック42の他の一部で構成された第2管理領域(図9の符号41B)に転送する。
なお、当該転送後において、第1管理領域52Iと第1管理領域41Aとの間において、管理・記録される各情報の位置関係は、メモリ4からコントローラメモリ52への転送のときと同様に、同じである。また、当該転送後において、第2管理領域52Aと第2管理領域41Bとの間において、管理・記録される各情報の位置関係も、メモリ4からコントローラメモリ52への転送のときと同様に、同じである。
以上のように、本実施の形態では、演算装置50は、ステップS101で求めた第1物理アドレスで特定される第1ブロック42が後発欠陥ブロックであるか否かを判断する(ステップS202)。
したがって、ステップS101で求めた第1物理アドレスにアクセスする際に、当該アクセスした第1ブロック42に後発欠陥が発生しているか否かの判断ができ、更なる論物変換処理を行うか否かの判断もできる。
また、本実施の形態では、演算装置50は、第1物理アドレスの情報を格納していない先頭の第3ブロック52bbに、ステップS101で求めた第1物理アドレスを記録する(ステップS203)。
したがって、更新された第3ブロック52bbの情報を元に、以後の論物変換処理を動的に行うことができる。
また、本実施の形態では、演算装置50は、ステップS203の後に、第3ブロック52bbにおける第3物理アドレスと、予め用意されている先頭代替論理アドレス(ここでは、LBA20)とに基づいて、代替論理アドレスを求める(ステップS204)。そして、代替論理アドレスと、第2ブロック52baに格納される情報とに基づいて、論理アドレスに対応する第1物理アドレスを求める(ステップS205)。
したがって、更新された第3ブロック52bbの情報を用いた形で、実施の形態1で説明した効果(多くのブロックに渡って論物変換の対応関係を変更する必要がない)を、容易な方法で提供することができる。
<実施の形態3>
さて、実施の形態1,2において、算出された代替物理アドレスで特定される第1ブロック42が、後発欠陥ブロックとなることも十分に想定される。本実施の形態は、当該状況に鑑みて創作されたものである。実施の形態2では、論理アドレスLBA13に対応する第1物理アドレスとして「PBA29」を決定した。本実施の形態では、当該「PBA29」で特定される第1物理アドレスで、後発欠陥が発生した場合を例にとって説明を行う。なお、本実施の形態に係る論物変換処理の動作を、図18に示すフローチャートを用いて説明する。
メモリコントローラ5は、当該第1物理アドレスPBA29に対して、コンピュータ2からのアクセス要求に基づいたアクセスを行う。本実施の形態では、演算装置50は、代替物理アドレスである第1物理アドレスPBA29で特定される第1ブロック42が後発欠陥ブロックであるか否かを判断する(具体的に、上記アクセス時に、当該第1ブロック42に対して後発欠陥が発生したか否かを判断する。ステップS301。)。
ここで、本実施の形態では、図19に示すように、上記アクセス時に、第1物理アドレスPBA29で特定される第1ブロック42に対して後発欠陥が発生したとする。図19では、第1物理アドレスPBA29で特定される第1ブロック42内には、便宜上、「後発Bad発生」と記載している。したがって、本実施の形態では、演算装置50は、第1物理アドレスPBA29で特定される第1ブロック42が後発欠陥ブロックであると判断する(ステップS301で「Y」)。当該判断は、たとえば、メモリコントローラ5がメモリ4からの、上記アクセスが正常に行われたか否かを示す信号を受信することにより、実施できる。
なお、上記と異なるが、演算装置50が、第1物理アドレスPBA29で特定される第1ブロック42が後発欠陥ブロックでないと判断した場合には(ステップS301で「N」)、アクセス要求に従ったメモリ4(第1物理アドレスPBA29の第1ブロック42)に対する処理を継続する。
さて、ステップS301で「Y」と判断されると、図20に示すように、演算装置50は、第1管理領域52Iに、後発欠陥ブロックとなった第1物理アドレスPBA29を記録する(ステップS302)。ここで、先頭番地からI_RAD6番地までの第2ブロック52bbには、第1物理アドレス情報が格納されている(図20参照)。そこで、当該第1物理アドレスPBA29の情報は、第1物理アドレスの情報を格納していない先頭の第2ブロック(I_RAD7)に記録される(図20参照)。
また、ここで注目すべきことは、1度代替された第1ブロック42(代替領域における第1ブロック42)において後発欠陥が発生した場合には、当該後発欠陥となった第1ブロック42の第1物理アドレスは、第2管理領域52Aでなく、第1管理領域52Iに追加・記録されるということである。
実施の形態2でも説明したように、第1物理アドレスPBA29で特定される第1ブロック42は、既に他の第1ブロック42の後発欠陥発生により、代替されたブロックである。当該代替先となった第1ブロック42において後発欠陥が発生した。そこで、第1物理アドレスPBA29のアドレス情報は、第1管理領域52Iに追加・記録される。
また、代替された複数の第1ブロック42において後発欠陥が時系列的に発生し、当該後発欠陥が発生した順に、第1物理アドレスの情報を、第1物理アドレスの情報が未だ格納していない先頭の第2ブロックに順次記録する。こうすることにより、記録後の第1管理領域52Iは、第2物理アドレスI_RAD0〜I_RAD7の昇順に、第1物理アドレスPBA0〜PBA31が昇順に格納されることになる。つまり、上記のように、第1管理領域52Iへ、第1物理アドレスPBA26〜PBA31を記録する。これにより、第2ブロック52baに格納されている情報を、第2物理アドレスI_RAD0〜I_RAD7の昇順に、第1物理アドレスPBA0〜PBA31が昇順に格納されるように並び替える必要がなくなる。
次に、演算装置50は、ステップS204で求めた代替論理アドレスLBA22とコントローラメモリ52内の第1管理領域52Iの情報(「PBA29」が記録された図20に示す第1管理領域52Iの情報であり、第2ブロック52baに格納されている情報)とを用いた上記第一の論物変換処理(ただし、論理アドレスを代替論理アドレスと読み替える必要あり)により、代替論理アドレスLBA22に対応する代替物理アドレスを算出する(ステップS303)。上記第一の論物変換処理を適用すると、代替物理アドレスは「PBA30」である(図19参照)。
そして、演算装置50は、ステップS303で算出した代替物理アドレスPBA30を、入力された論理アドレスLBA13に対応する第1物理アドレスとして決定する。その後、メモリコントローラ5は、当該決定した第1物理アドレスPBA30に対して、上記アクセス要求に従った処理を実施する。
ここで、ステップS303で算出した代替物理アドレスPBA30で特定される第1ブロック42が、さらに後発欠陥ブロックである場合も想定される。そこで、算出された代替物理アドレスで特定される第1ブロック42が正常ブロックと判断されるまで、ステップS301〜S303のフローを繰り返し実施することが好ましい。
また、上記アクセス要求に従った処理終了後、次のアクセス要求が生成されるまでのアイドル期間において、メモリコントローラ5(演算装置50)は、コントローラメモリ52の第1管理領域52Iを構成する第2ブロック52baの情報を、メモリ4の第1ブロック42の一部で構成された第1管理領域(図9の符号41A)に転送する。さらに、メモリコントローラ5(演算装置50)は、コントローラメモリ52の第2管理領域52Aを構成する第3ブロック52bbの情報を、メモリ4の第1ブロック42の他の一部で構成された第2管理領域(図9の符号41B)に転送する。
なお、当該転送後において、第1管理領域52Iと第1管理領域41Aとの間において、管理・記録される各情報の位置関係は、メモリ4からコントローラメモリ52への転送のときと同様に、同じである。また、当該転送後において、第2管理領域52Aと第2管理領域41Bとの間において、管理・記録される各情報の位置関係も、メモリ4からコントローラメモリ52への転送のときと同様に、同じである。
なお、本実施の形態では、実施の形態2の動作を前提に話を進めた。しかし、実施の形態1の動作を前提として、本実施の形態を適用することもできる。つまり、実施の形態1に従い代替物理アドレスを求め、その後当該代替物理アドレスで特定される第1ブロック42において後発欠陥が発生した場合も、本実施の形態を適用することができる(つまり、図18のフローを適用することができる)。
つまり、演算装置50は、ステップS104で求めた代替物理アドレスである第1物理アドレスで特定される第1ブロック42が後発欠陥ブロックであるか否かを判断する(ステップS301)。そして、後発欠陥ブロックであると判断したとき、演算装置50は、第1管理領域52Iに、後発欠陥ブロックと判定された、ステップS104で求めた第1物理アドレスの情報を、第1物理アドレスの情報を格納していない先頭の第2ブロック52baに記録する(ステップS302)。そして、演算装置50は、ステップS103で求めた代替論理アドレスとコントローラメモリ52内の第1管理領域52Iの情報とを用いた上記第一の論物変換処理(ただし、論理アドレスを代替論理アドレスと読み替える必要あり)により、代替論理アドレスに対応する代替物理アドレスを算出する(ステップS303)。そして、演算装置50は、ステップS303で算出した代替物理アドレスを、入力された論理アドレスに対応する第1物理アドレスとして決定する。
以上のように、本実施の形態では、演算装置50は、ステップS104またはステップS205で求めた第1物理アドレスで特定される第1ブロック(代替ブロック)42が、後発欠陥を有するか否かを判断する(ステップS301)。
したがって、代替後の第1ブロック42にアクセスする際に、当該アクセスした第1ブロック42に後発欠陥が発生しているか否かの判断ができ、更なる論物変換処理を行うか否かの判断もできる。
また、本実施の形態では、演算装置50は、ステップS104またはステップS205で求めた第1物理アドレスを、第1物理アドレスの情報を格納していない先頭の第2ブロック52baに記録する(ステップS302)。
したがって、更新された第2ブロック52baの情報を元に、以後の論物変換処理を動的に行うことができる。
また、本実施の形態では、演算装置50は、ステップS103またはステップS204で求めた代替論理アドレスと、ステップS302後の第2ブロック52baに格納される情報とに基づいて、論理アドレスに対応する第1物理アドレスを求める(ステップS303)。
したがって、更新された第2ブロック52baの情報を用いた形で、実施の形態1で説明した効果(多くのブロックに渡って論物変換の対応関係を変更する必要がない)を、容易な方法で提供することができる。
また、本実施の形態においても、実施の形態2と同様に、第2ブロック52baの情報を第1ブロック42の一部で構成された第1管理領域41Aに転送し、第3ブロック52bbの情報を第1ブロック42の他の一部で構成されたる第2管理領域41Bに転送する、演算装置(転送部)50を、備えている。
したがって、第1ブロック52baおよび第2ブロック52bb内の情報を、第1管理領域41Aおよび第2管理領域41Bにバックアップとして保存することができる。
なお、実施の形態1でも説明したように、演算装置(転送部)50は、論理アドレスに対応する第1物理アドレスの導出前に、第1管理領域41Aの情報を第2ブロック52baに転送し、第2管理領域41Bの情報を第3ブロック52bbに転送する。
したがって、たとえばバックアップとして第1,2管理領域41A,41Bに格納されていた情報を、演算装置50での高速演算が可能となる第2ブロック52baおよび第3ブロック52bbに、転送させることができる。