(57)【特許請求の範囲】
【請求項１】
不揮発性メモリを使用した半導体記憶装置であって、
前記不揮発性メモリ内に記憶されたユーザデータを読み出す際に外部から当該ユーザデータの記録位置を指定する第１アドレス情報を受け付けるインタフェース部と、
前記第１アドレス情報と前記不揮発性メモリ内での実際の記録位置を示す第２アドレス情報とを対応づけるアドレス変換テーブルと、
前記アドレス変換テーブルに従って前記第１アドレス情報を前記第２アドレス情報に変換する変換部と、
前記ユーザデータと前記第１アドレス情報とを１つのデータとして当該データに誤りがあるか否かを検査するための冗長データを生成する検査符号生成部と、
前記不揮発性メモリに対するデータの入出力を制御し、前記ユーザデータと前記第１アドレス情報と前記冗長データとを１つのデータセットとして前記不揮発性メモリにおける前記第２アドレス情報で示される記録位置に記録する入出力制御部と、
前記第１アドレス情報が指定する記録位置に記録された前記ユーザデータの読み出しを前記インタフェース部が受け付けた際、前記不揮発性メモリ内に記録されていた前記冗長データを用いて、前記不揮発性メモリ内に記録されていた前記ユーザデータと前記インタフェース部が受け付けた前記第１アドレス情報とに誤りがあるか否かを検査する検査部と、
を備え、
前記入出力制御部は、前記不揮発性メモリ内に記録されていた前記ユーザデータと前記インタフェース部が受け付けた前記第１アドレス情報とに誤りが無いことが前記検査部によって検出された場合、前記ユーザデータを前記インタフェース部を介して出力することを特徴とする半導体記憶装置。
【請求項２】
前記アドレス変換テーブルを格納する揮発性メモリをさらに備え、
前記アドレス変換テーブルは、複数の第２アドレス情報によって構成されるマトリクス状のビット配列における、ビット線方向のビット列に対して付与された第１パリティ符号と、ワード線方向のビット列に対して付与された第２パリティ符号とを備えることを特徴とする請求項１に記載の半導体記憶装置。
【請求項３】
前記揮発性メモリ内の前記アドレス変換テーブルを構成する前記ビット列を前記第１パリティ符号または前記第２パリティ符号を用いて訂正するパリティ処理部をさらに備え、
前記変換部は、前記揮発性メモリ内の前記アドレス変換テーブルの一部または全部を前記不揮発性メモリ内に転記し、
前記パリティ処理部は、前記変換部が前記揮発性メモリ内の前記アドレス変換テーブルの一部または全部を前記不揮発性メモリ内に転記する際、前記アドレス変換テーブルを構成する前記ビット列を前記第１パリティ符号または前記第２パリティ符号を用いて検査し、
前記変換部は、前記パリティ処理部によって誤りが検出された前記ビット列を前記第１および第２パリティ符号を用いて訂正することで前記揮発性メモリ内の前記アドレス変換テーブルを修復することを特徴とする請求項２に記載の半導体記憶装置。
【請求項４】
前記揮発性メモリ内の前記アドレス変換テーブルを構成する前記ビット列を前記第１パリティ符号または前記第２パリティ符号を用いて訂正するパリティ処理部をさらに備え、
前記パリティ処理部は、前記第１アドレス情報が指定する記録位置に記録された前記ユーザデータの読み出しを前記インタフェース部が受け付けた際、前記第１アドレス情報に対応づけられた前記第２アドレス情報を含むビット線方向のビット列を当該ビット列に付与された前記第１パリティ符号を用いて検査し、
前記変換部は、前記パリティ処理部によって誤りが検出された前記ビット列を前記第１および第２パリティ符号を用いて訂正することで前記揮発性メモリ内の前記第２アドレス情報を修復することを特徴とする請求項２に記載の半導体記憶装置。
【請求項５】
前記変換部は、前記パリティ処理部によって前記第１パリティ符号と前記第２パリティ符号との両方で誤りが検出された前記揮発性メモリ中のビットの値を反転することで、前記アドレス変換テーブルを修復することを特徴とする請求項３または４に記載の半導体記憶装置。
【請求項６】
前記検査部は、前記不揮発性メモリ内に記録されていた前記ユーザデータと前記インタフェース部が受け付けた前記第１アドレス情報とに誤りがあると検出した場合、前記不揮発性メモリ内に記録されていた前記ユーザデータおよび前記第１アドレス情報に誤りがあるか否かを再度検査し、前記不揮発性メモリ内に記録されていた前記ユーザデータおよび前記第１アドレス情報に誤りがあると判断した場合、前記アドレス変換テーブルに誤りがあると判断することを特徴とする請求項１に記載の半導体記憶装置。
【請求項７】
前記アドレス変換テーブルを格納する揮発性メモリをさらに備え、
前記変換部は、前記揮発性メモリに格納された前記アドレス変換テーブルを前記不揮発性メモリ内に転記し、前記揮発性メモリ内の前記アドレス変換テーブルに誤りがある場合、前記不揮発性メモリ内の前記アドレス変換テーブルを用いて前記揮発性メモリ内の前記アドレス変換テーブルを修復することを特徴とする請求項６に記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、半導体記憶装置に関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリ等の不揮発性メモリを用いた半導体記憶装置では、ウエアレベリング（Ｗｅａｒ  Ｌｅｖｅｌｉｎｇ）等の必要性から、記憶装置内部で個別のアドレス体系が管理される。外部からある論理アドレスへの書込み要求があった際には、記憶装置内部のアドレス体系に従って、要求された論理アドレスが現実の記録位置を示す物理アドレスに変換される。書込み対象のデータは、この物理アドレスが指しているフラッシュメモリ中の記録位置に記録される。
【０００３】
アドレス体系の管理には、通常、テーブルが用いられる。このアドレス体系を管理するテーブルを、以下、アドレス変換テーブルという。アドレス変換テーブルは、たとえば半導体記憶装置が備えるＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の揮発性メモリに格納される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−３４６８８７号公報
【特許文献２】再表９７／０３２２５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで近年では、半導体製造プロセスの微細化に伴い、ＳＲＡＭやＤＲＡＭ等にソフトエラーなどの誤りが生じることが増加している。この結果、アドレス変換テーブル自体に誤りが生じてしまう場合がある。そこで本発明の実施形態では、アドレス変換テーブル自体の誤りに対応可能な半導体記憶装置を開示する。
【課題を解決するための手段】
【０００６】
実施の形態による半導体記憶装置は、不揮発性メモリを使用した半導体記憶装置であって、前記不揮発性メモリ内に記憶されたユーザデータを読み出す際に外部から当該ユーザデータの記録位置を指定する第１アドレス情報を受け付けるインタフェース部と、前記第１アドレス情報と前記不揮発性メモリ内での実際の記録位置を示す第２アドレス情報とを対応づけるアドレス変換テーブルと、前記アドレス変換テーブルに従って前記第１アドレス情報を前記第２アドレス情報に変換する変換部と、前記ユーザデータと前記第１アドレス情報とを１つのデータとして当該データに誤りがあるか否かを検査するための冗長データを生成する検査符号生成部と、前記不揮発性メモリに対するデータの入出力を制御し、前記ユーザデータと前記第１アドレス情報と前記冗長データとを１つのデータセットとして前記不揮発性メモリにおける前記第２アドレス情報で示される記録位置に記録する入出力制御部と、前記第１アドレス情報が指定する記録位置に記録された前記ユーザデータの読み出しを前記インタフェース部が受け付けた際、前記不揮発性メモリ内に記録されていた前記冗長データを用いて、前記不揮発性メモリ内に記録されていた前記ユーザデータと前記インタフェース部が受け付けた前記第１アドレス情報とに誤りがあるか否かを検査する検査部と、を備える。前記入出力制御部は、前記不揮発性メモリ内に記録されていた前記ユーザデータと前記インタフェース部が受け付けた前記第１アドレス情報とに誤りが無いことが前記検査部によって検出された場合、前記ユーザデータを前記インタフェース部を介して出力する。
【図面の簡単な説明】
【０００７】
【図１】図１は、第１の実施形態による半導体記憶装置の模式図。
【図２】図２は、第１の実施形態による書込制御の流れを示す図。
【図３】図３は、図２に示すフローチャートを模式化した図。
【図４】図４は、第１の実施形態における正常時の読出し動作を示す図。
【図５】図５は、第１の実施形態における誤り時の読出し動作を示す図。
【図６】図６は、第１の実施形態による読出制御の流れを示す図。
【図７】図７は、図６に示すフローチャートを模式化した図。
【図８】図８は、第２の実施形態による半導体記憶装置の模式図。
【図９】図９は、第２の実施形態によるアドレス変換テーブルの一例の図。
【図１０】図１０は、第２の実施形態による読出制御の一部の流れを示す図。
【図１１】図１１は、第２の実施形態によるパリティ生成動作を示す図。
【図１２】図１２は、第３の実施形態による半導体記憶装置の模式図。
【図１３】図１３は、第３の実施形態による転記動作を示す図。
【図１４】図１４は、第３の実施形態によるＤＲＡＭ修復処理を示す図。
【発明を実施するための形態】
【０００８】
（第１の実施形態）
以下、第１の実施形態にかかる半導体記憶装置について、図面を参照して詳細に説明する。図１に示すように、第１の実施形態による半導体記憶装置１は、コントローラ１００と、インタフェース部２０と、ＮＡＮＤ型フラッシュメモリ（以下、単にフラッシュメモリという）１６０とを備える。ホストコンピュータ（以下、単にホストという）１０は、仮想メモリ空間に基づいて、半導体記憶装置１に対するデータの書き込みや読み出しを行う。フラッシュメモリ１６０は、実メモリ空間にデータを格納する。コントローラ１００は、仮想メモリ空間と実メモリ空間との対応関係を示すアドレス体系を管理する。
【０００９】
ホスト１０から出力されたデータの書込要求および読出要求は、インタフェース部２０で受け付けられる。書込要求には、書込対象のユーザデータＭと、ユーザデータＭの仮想メモリ空間上の書込位置を指定する論理アドレスＬとが含まれる。読出要求には、読出対象のユーザデータＭが格納された仮想メモリ空間上の位置を示す論理アドレスＬが含まれる。受け付けられた書込要求および読出要求は、内部バス３０を介してコントローラ１００に入力される。
【００１０】
コントローラ１００は、ホスト１０からのデータの書込要求および読出要求等に応じて、フラッシュメモリ１６０へのユーザデータの書き込みや、フラッシュメモリ１６０からのユーザデータの読み出し等を制御する。このコントローラ１００は、入出力制御部１１０と、変換部１２０と、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１３０と、検査符号生成部１４０と、検査部１５０と、訂正符号生成部１７０と、訂正部１８０とを備える。なお、ＤＲＡＭ１３０は、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）などの他の揮発性メモリに置き換えてもよい。
【００１１】
検査符号生成部１４０は、たとえば入出力制御部１１０からユーザデータＭおよび論理アドレスＬ（以下、検査対象データＭＬという）を入力し、このユーザデータＭおよび論理アドレスＬに対する誤り検査符号Ａ１を生成する。また、検査符号生成部１４０は、生成した誤り検査符号Ａ１をたとえば入出力制御部１１０に出力する。
【００１２】
検査部１５０は、たとえば入力制御部１１０から検査対象データＭＬとこれの誤り検査符号Ａ１とを入力し、誤り訂正符号Ａ１を用いて検査対象データＭＬに誤りがあるか否かを検査する。また、検査部１５０は、この検査結果をたとえば入力制御部１１０に出力する。
【００１３】
訂正符号生成部１７０は、たとえば入出力制御部１１０からユーザデータＭ、論理アドレスＬおよび誤り検査符号Ａ１（以下、訂正対象データＭＬＡ１という）を入力し、このユーザデータＭ、論理アドレスＬおよび誤り検査符号Ａ１、すなわち訂正対象データＭＬＡ１に対する誤り訂正符号Ａ２を生成する。また、訂正符号生成部１７０は、生成した誤り訂正符号Ａ２をたとえば入出力制御部１１０に出力する。
【００１４】
訂正部１８０は、たとえば入力制御部１１０から訂正対象データＭＬＡ１とこれの誤り訂正符号Ａ２とを入力し、誤り訂正符号Ａ２を用いて訂正対象データＭＬＡ１の誤りを訂正する。また、訂正部１８０は、この訂正結果をたとえば入力制御部１１０に出力する。
【００１５】
変換部１２０は、入出力制御部１１０を介して入力されたホスト１０からの要求に含まれる論理アドレスＬを、実メモリ空間上の物理アドレスＰに変換する。このアドレス変換には、ＤＲＡＭ１３０に格納されたアドレス変換テーブル１３１が用いられる。すなわち、アドレス変換テーブル１３１には、仮想メモリ空間上の論理アドレスＬと実メモリ空間上の物理アドレスＰとの対応関係が登録されている。この変換部１２０は、論理アドレスＬを用いてアドレス変換テーブル１３１を参照することで、この論理アドレスＬに対応づけられた物理アドレスＰを取得する。また、変換部１２０は、取得した物理アドレスＰを入出力制御部１１０に出力する。
【００１６】
フラッシュメモリ１６０は、入出力制御部１１０からデータの書き込みが命令されると、書込対象のデータセット１６１（たとえば図３参照）と実メモリ空間上の書込位置を示す物理アドレスＰとを入出力制御部１１０から受け付ける。つづいて、フラッシュメモリ１６０は、この受け付けたデータセット１６１を、物理アドレスＰの記録位置に書き込む。
【００１７】
また、フラッシュメモリ１６０は、入出力制御部１１０からデータの読み出しが命令されると、読出対象のデータが記録された実メモリ空間上の位置を示す物理アドレスＰを入出力制御部１１０から受け付ける。つづいて、フラッシュメモリ１６０は、この受け付けた物理アドレスＰの記録位置に記憶されているデータセット１６１を読み出し、この読み出したデータセット１６１を入出力制御部１１０に出力する。
【００１８】
入出力制御部１１０は、ホスト１０から書込要求または読出要求があった際に、各部に対するデータの入出力を制御する。また、入出力制御部１１０は、フラッシュメモリ１６０に対するデータの書込および読出も制御する。ここで、第１の実施形態による書込制御および読出制御について、図面を参照して説明する。
【００１９】
まず、書込制御について説明する。図２は、第１の実施形態による書込制御の流れを示すフローチャートである。図３は、図２に示すフローチャートを模式化した図である。
【００２０】
図２および図３に示すように、入出力制御部１１０は、ホスト１０からの書込要求を待機する（ステップＳ１０１；ＮＯ）。入出力制御部１１０は、ホスト１０からの書込要求をインタフェース部２０を介して受け付けると（ステップＳ１０１；ＹＥＳ）、書込要求に含まれるユーザデータＭと論理アドレスＬとを特定する（ステップＳ１０２）。つづいて、入出力制御部１１０は、特定した論理アドレスＬを変換部１２０に入力する。変換部１２０は、ＤＲＡＭ１３０内のアドレス変換テーブル１３１を参照することで、入力された論理アドレスＬに対応する物理アドレスＰを読み出す（ステップＳ１０３）。読み出された物理アドレスＰは、入出力制御部１１０に入力される。
【００２１】
また、入出力制御部１１０は、ステップＳ１０２で特定したユーザデータＭおよび論理アドレスＬを検査符号生成部１４０に入力する。検査符号生成部１４０は、入力されたユーザデータＭおよび論理アドレスＬを１つのデータとして、これに対する誤り検査用の誤り検査符号Ａ１を生成する。
【００２２】
また、入出力制御部１１０は、ステップＳ１０２で特定したユーザデータＭ、論理アドレスＬおよび誤り検査符号Ａ１を訂正符号生成部１７０に入力する。訂正符号生成部１７０は、入力されたユーザデータＭ、論理アドレスＬおよび誤り検査符号Ａ１を１つのデータ（訂正対象データＭＬＡ１）として、これに対する誤り訂正用の誤り訂正符号Ａ２を生成する。さらに、訂正符号生成部１７０は、誤り検査符号Ａ１および誤り訂正符号Ａ２をひとまとめにした冗長データＡを生成する（ステップＳ１０４）。この生成された冗長データＡは、入出力制御部１１０に入力される。
【００２３】
以上のようにして物理アドレスＰと冗長データＡとを取得すると、入出力制御部１１０は、図３に示すように、ユーザデータＭと論理アドレスＬと冗長データＡとを１つのデータセット１６１として、フラッシュメモリ１６０内の物理アドレスＰが指している記録位置に記録する（ステップＳ１０５）。その後、ステップＳ１０１に帰還して、次の書込要求を待機する。なお、この書込動作は、たとえば外部からの割込み終了によって終了する。
【００２４】
つぎに、読出制御について説明するにあたり、近年生じ得る読み出し時の不具合について説明する。近年では、半導体製造プロセスの微細化に伴い、ＤＲＡＭやＳＲＡＭなどにソフトエラー等の誤りが生じることが増加してきている。このため、アドレス変換テーブル自体に誤りが生じることがある。たとえば図４に示すように、アドレス変換テーブル１３１において論理アドレスＬ２が正しく物理アドレスＰ２に対応付けられている場合、論理アドレスＬ２を指定した読出要求に対しては、フラッシュメモリ１６０内の物理アドレスＰ２で示される記録位置からデータが読み出される。一方で、たとえば図５に示すように、アドレス変換テーブル１３１に誤りが生じた結果、論理アドレスＬ２に誤った物理アドレスＰ４が対応付けられている場合、論理アドレスＬ２を指定した読出要求に対しては、フラッシュメモリ１６０内の物理アドレスＰ４で示される記録位置からデータが読み出されてしまう。
【００２５】
アドレス変換テーブルに生じた誤りの検査や訂正には、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）やＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｏｄｅ）等のＥＤＣ（Ｅｒｒｏｒ  Ｄｅｔｅｃｔｉｎｇ  Ｃｏｄｅ）を付与することも考えられる。ただし、アドレス変換テーブルは、小さな単位でアクセスされる。このため、十分な検査能力や訂正能力を得るためには、たとえば３２ｂｉｔのデータに対して６ｂｉｔの冗長符号が必要になる。一方で、ＮＡＮＤ型フラッシュメモリを使用したＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の半導体記憶装置は、アドレス変換テーブルで管理する単位記憶領域を小さくすることでその性能が増加する。なお、１つの単位記憶領域には、１つの物理アドレスが割り当てられるものとする。ここで、単位記憶領域を小さくすると管理すべきアドレスの数も増加する。このため、各アドレスに冗長符号を付与すると、管理するデータ量が大幅に増加してしまう。このようなことから、アドレス変換テーブルで管理する単位記憶領域を小さくすることが困難な場合がある。
【００２６】
そこで第１の実施形態では、以下のような読出制御を実行する。図６は、第１の実施形態による読出制御の流れを示すフローチャートである。図７は、図６に示すフローチャートを模式化した図である。
【００２７】
図６および図７に示すように、入出力制御部１１０は、ホスト１０からの読出要求を待機する（ステップＳ１１１；ＮＯ）。入出力制御部１１０は、ホスト１０からの読出要求をインタフェース部２０を介して受け付けると（ステップＳ１１１；ＹＥＳ）、読出要求に含まれる論理アドレスＬｒを特定する（ステップＳ１１２）。つづいて、入出力制御部１１０は、特定した論理アドレスＬｒを変換部１２０に入力する。変換部１２０は、ＤＲＡＭ１３０内の変換テーブル１３１を参照することで、入力された論理アドレスＬｒに対応する物理アドレスＰを読み出す（ステップＳ１１３）。読み出された物理アドレスＰは、入出力制御部１１０に入力される。
【００２８】
つぎに、入出力制御部１１０は、フラッシュメモリ１６０中の物理アドレスＰで示される記録位置に記憶されているデータセット１６１（ユーザデータＭ、論理アドレスＬｓおよび冗長データＡ）を読み出す（ステップＳ１１４）。つづいて、入出力制御部１１０は、読み出したユーザデータＭおよび冗長データＡと、読出要求に含まれていた論理アドレスＬｒとを検査部１５０に入力する。検査部１５０は、ユーザデータＭと論理アドレスＬｒとを１つのデータとして、これに誤りがあるか否かを冗長データＡを用いて検査する（ステップＳ１１５）。この検査結果は、入出力制御部１１０に入力される。
【００２９】
ステップＳ１１５の結果、誤りが検出されなかった場合（ステップＳ１１６；ＮＯ）、入出力制御部１１０は、読み出したユーザデータＭを、インタフェース部２０を介してホスト１０に出力する（ステップＳ１１７）。その後、コントローラ１００は、ステップＳ１１１に帰還する。なお、この読出動作は、たとえば外部からの割込み終了によって終了する。
【００３０】
一方、ステップＳ１１５の結果、誤りが検出された場合（ステップＳ１１６；ＹＥＳ）、入出力制御部１１０は、今度は、読み出したデータセット１６１（ユーザデータＭ、論理アドレスＬｓおよび冗長データＡ）を検査部１５０に入力する。検査部１５０は、ユーザデータＭと論理アドレスＬｓとを１つのデータとして、これに誤りがあるか否かを冗長データＡを用いて検査する（ステップＳ１１８）。この検査結果は、入出力制御部１１０に入力される。
【００３１】
ステップＳ１１８の結果、誤りが検出された場合（ステップＳ１１９；ＹＥＳ）、コントローラ１００は、読み出したユーザデータＭ、論理アドレスＬｓまたは冗長データＡに誤りがあると判断し（ステップＳ１２０）、所定のエラー処理を実行する（ステップＳ１２１）。なお、所定のエラー処理とは、たとえばフラッシュメモリ１６０上のデータを誤り訂正符号Ａ２を用いて訂正することをであってもよい。
【００３２】
その後、コントローラ１００は、ステップＳ１２４において、エラー処理後の論理アドレスＬｓと論理アドレスＬｒとを比較する。論理アドレスＬｓと論理アドレスＬｒとが異なる場合（ステップＳ１２５；ＮＯ）、コントローラ１００は、ステップＳ１２２へ移行する。一方、論理アドレスＬｓと論理アドレスＬｒとが等しい場合（ステップＳ１２５；ＹＥＳ）、コントローラ１００は、ステップＳ１１１に帰還する。
【００３３】
また、ステップＳ１１８の結果、誤りが検出されなかった場合（ステップＳ１１９；ＮＯ）、コントローラ１００は、アドレス変換テーブル１３１から取得した物理アドレスＰ、すなわちアドレス変換テーブル１３１自体に誤りがあると判断し（ステップＳ１２２）、アドレス変換テーブル１３１を格納しているＤＲＡＭ１３０を修復する処理を実行する（ステップＳ１２３）。その後、コントローラ１００は、ステップＳ１１３へ帰還し、修復後のアドレス変換テーブル１３１に基づいて、以降の動作を実行する。
【００３４】
なお、ＤＲＡＭ修復処理では、たとえばフラッシュメモリ１６０に記憶されている論理アドレスＬｓが、これを格納している記録位置の物理アドレスＰとともに読み出される。その後、アドレス変換テーブル１３１において、読み出された論理アドレスＬｓに対応する物理アドレスＰの値が更新される。これにより、アドレス変換テーブル１３１が修復される。もしくは、たとえばフラッシュメモリ１６０に、アドレス変換テーブル１６０のコピーを格納しておいてもよい。この場合、このコピーされたアドレス変換テーブルを参照することで、容易にＤＲＡＭの修復が可能となるため、修復処理に要する時間を短縮することが可能となる。ただし、この方法は一例にすぎない。ＤＲＡＭを修復することが可能な方法であれば如何様にも変形することが可能であることは言うまでもない。
【００３５】
以上のように、第１の実施形態では、ユーザデータＭおよび論理アドレスＬを１つのデータとして冗長データＡを生成し、この冗長データＡをユーザデータＭおよび論理アドレスＬとともに１つのデータセット１６１としてフラッシュメモリ１６０内に格納しておく。これにより、アドレス変換テーブル１３１自体に誤りが生じた場合でも、これを特定することが可能となる。この結果、アドレス変換テーブル１３１自体の誤りに対しても対応が可能となる。
【００３６】
（第２の実施形態）
つぎに、第２の実施形態にかかる半導体記憶装置について、図面を参照して詳細に説明する。ただし、以下の説明において、第１の実施形態と同様の構成については、同一の符号を付し、重複する説明を省略する。第２の実施形態では、アドレス変換テーブルを直接的に誤り訂正可能にする。これにより、アドレス変換テーブル自体の誤りに対して簡素な構成で対処することができる。また、アドレス変換テーブル自体に誤りが生じたときの処理を高速にすることができる。
【００３７】
図８に示すように、第２の実施形態による半導体記憶装置２は、図１に示す半導体記憶装置１と同様の構成において、コントローラ１００がコントローラ２００に置き換えられている。
【００３８】
コントローラ２００は、入出力制御部２１０と、変換部２２０と、ＤＲＡＭ１３０に格納されたアドレス変換テーブル２３１と、検査符号生成部１４０と、検査部１５０と、訂正符号生成部１７０と、訂正部１８０とを備える。また、コントローラ２００は、アドレス変換テーブル２３１の誤りを訂正するための構成として、パリティ符号生成部２４０と、パリティ処理部２５０とを備える。
【００３９】
ここで図９に、第２の実施形態によるアドレス変換テーブル２３１の一例を示す。図９に示すように、本実施の形態によるアドレス変換テーブル２３１は、アドレス変換テーブル２３１中の誤りを訂正するための水平パリティ符号Ｅ１および垂直パリティ符号Ｅ２を備える。水平パリティ符号Ｅ１は、たとえばＤＲＡＭ１３０におけるビット線方向のビット列に生じた誤りを検査する際に用いられる。垂直パリティ符号Ｅ２は、たとえばＤＲＡＭ１３０におけるワード線方向のビット列に生じた誤りを検査する際に用いられる。アドレス変換テーブル２３１は、たとえば物理アドレスＰをワード線方向に配列したデータ構造である。したがって、水平パリティ符号Ｅ１は、物理アドレスＰ毎に生じた誤りを検査する際に用いられる。なお、図９では、１ビットの水平パリティ符号Ｅ１および垂直パリティ符号Ｅ２を例示するが、これに限るものではない。
【００４０】
変換部２２０は、第１の実施形態における変換部１２０と同様の機能を備える。加えて、変換部２２０は、たとえば論理アドレスＬと物理アドレスＰとの対応関係を追加または更新する際に、ＤＲＡＭ１３０の値をワード線毎またはビット線毎に読み出し、この読み出したビット列をパリティ符号生成部２４０に入力する。パリティ符号生成部２４０は、入力されたビット列に対する水平パリティ符号Ｅ１または垂直パリティ符号Ｅ２を生成し、これを変換部２２０に返す。このように生成された水平パリティ符号Ｅ１および垂直パリティ符号Ｅ２は、変換部２２０によってＤＲＡＭ１３０中のアドレス変換テーブル２３１に付与される。
【００４１】
また、変換部２２０は、ＤＲＡＭ１３０中のビット値をワード線毎またはビット線毎に読み出し、この読み出したビット列をパリティ処理部２５０に入力する。パリティ処理部２５０は、入力されたビット列における水平パリティ符号Ｅ１または垂直パリティ符号Ｅ２を特定し、この水平パリティ符号Ｅ１または垂直パリティ符号Ｅ２を用いてビット列中の誤りを訂正する。このように訂正されたビット列は、変換部２２０によってＤＲＡＭ１３０中のアドレス変換テーブル２３１に格納される。
【００４２】
つづいて、第２の実施形態による動作について、図面を参照して説明する。第２の実施形態による書込動作は、第１の実施形態による書込動作と同様である。第２の実施形態による読出動作は、図６に示す読出動作において、ステップＳ１１２とステップＳ１１３との間に、図１０に示す動作が挿入される。
【００４３】
図６のステップＳ１１１〜Ｓ１１２に示すように、ホスト１０からの読出要求に含まれる論理アドレスＬｒを特定すると（ステップＳ１１２）、入出力制御部２１０は、特定した論理アドレスＬｒを変換部２２０に入力する。図１０に示すように、変換部２２０は、入力された論理アドレスＬｒに対応付けられた物理アドレスＰに対するパリティチェックを実行する（ステップＳ２１１）。具体的には、たとえば、変換部２２０は、入力された論理アドレスＬｒに対応する物理アドレスＰを読み出し、この読み出した物理アドレスＰを水平パリティ符号Ｅ１を用いてチェックする。このチェック結果は、変換部２２０に入力される。
【００４４】
ステップＳ２１１のパリティチェックの結果、誤りがない場合（ステップＳ２１２；ＮＯ）、変換部２２０は、そのまま図６のステップＳ１１３へ移行する。
【００４５】
一方、ステップＳ２１１のパリティチェックの結果、誤りがある場合（ステップＳ２１２；ＹＥＳ）、変換部２２０は、誤りを訂正することが可能か否かを判断し（ステップＳ２１３）、可能である場合（ステップＳ２１３；ＹＥＳ）、水平パリティ符号Ｅ１および垂直パリティ符号Ｅ２を用いてＤＲＡＭ１３０中のビット列の誤りを訂正する（ステップＳ２１４）。具体的には、たとえばＤＲＡＭ１３０中のマトリクス状のビット配列のうち、水平パリティ符号Ｅ１および垂直パリティ符号Ｅ２の両方で誤りが検出された位置のビットの値を反転する。これにより、アドレス変換テーブル２３１に登録された物理アドレスＰが修復される。なお、誤りの訂正が可能か否かの判断は、たとえば誤りビット数が１であるかどうかによって判定することができる。また、ＤＲＡＭ１３０を修復後、変換部２２０は、図６のステップＳ１１２へ帰還して、再度、修復後のアドレス変換テーブル２３１から論理アドレスＬｒに対応づけられた物理アドレスＰを取得する。
【００４６】
一方、ステップＳ２１３の結果、誤りを訂正することができないと判断された場合（ステップＳ２１３；ＮＯ）、コントローラ２００は、図６のステップＳ１２３と同様のＤＲＡＭ修復処理を実行し（ステップＳ２１５）、その後、図６のステップＳ１１２へ帰還して、再度、修復後のアドレス変換テーブル２３１から論理アドレスＬｒに対応づけられた物理アドレスＰを取得する。
【００４７】
また、第２の実施形態では、たとえば論理アドレスＬと物理アドレスＰとの対応関係を追加または更新する際に、アドレス変換テーブル２３１に付与する水平パリティ符号Ｅ１および垂直パリティ符号Ｅ２を生成するパリティ生成動作を実行する。図１１は、第２の実施形態によるパリティ生成動作を示すフローチャートである。
【００４８】
図１１に示すように、変換部２２０は、ＤＲＡＭ１３０中のアドレス変換テーブル２３１の変更があるか否かを判断する（ステップＳ２２１）。アドレス変換テーブル２３１の変更がなければ（ステップＳ２２１；ＮＯ）、変換部２２０は、ステップＳ２２２へ移行しない。一方、アドレス変換テーブル２３１の変更がある場合（ステップＳ２２１；ＹＥＳ）、変換部２２０は、ＤＲＡＭ１３０から変更対象のビットに対応する垂直パリティ符号Ｅ２を読み出し（ステップＳ２２２）、読み出した垂直パリティ符号Ｅ２と変更対象の物理アドレスＰとをパリティ符号生成部２４０に入力する。パリティ符号生成部２４０は、入力された物理アドレスＰに対する水平パリティ符号Ｅ１と、該当する垂直パリティ行の垂直パリティ符号Ｅ２とを生成する（ステップＳ２２３）。生成された水平パリティ符号Ｅ１および垂直パリティ符号Ｅ２とは、変換部２２０に入力される。変換部２２０は、入力された水平パリティ符号Ｅ１および垂直パリティ符号Ｅ２でＤＲＡＭ１３０中のアドレス変換テーブル２３１を更新する（ステップＳ２２４）。その後、変換部２２０は、ステップＳ２２１へ帰還する。なお、このパリティ生成動作は、たとえば外部からの割込み終了によって終了する。
【００４９】
以上のように、第２の実施形態では、第１の実施の形態と同様の構成に加えて、アドレス変換テーブル２３１の誤りを訂正するための構成（水平パリティ符号Ｅ１、垂直パリティ符号Ｅ２、パリティ符号生成部２４０およびパリティ処理部２５０）を備える。その結果、アドレス変換テーブル２３１自体に生じた誤りを迅速に修正することが可能となる。その他の構成および動作は、第１の実施形態と同様であるため、ここでは重複する説明を省略する。
【００５０】
なお、第２の実施形態では、アドレス変換テーブル２３１自体の誤りを検査または訂正するための冗長データとしてパリティ符号を用いた。ただし、これに限るものではなく、種々の冗長データを用いることができる。なお、第２の実施形態のように、第１の実施形態による誤り検査（訂正）機能のような比較的大きな誤り検査（訂正）能力を備えている場合には、アドレス変換テーブル２３１自体の誤りを検査（訂正）するための構成には、パリティ符号のような比較的軽微な誤り検査（訂正）能力を用いるとよい。これにより、書込時や読出時の動作にかかる負荷を低減できる。
【００５１】
（第３の実施形態）
つぎに、第３の実施形態にかかる半導体記憶装置について、図面を参照して詳細に説明する。ただし、以下の説明において、第１または第２の実施形態と同様の構成については、同一の符号を付し、重複する説明を省略する。第３の実施形態では、コントローラ内のＤＲＡＭに格納されたアドレス変換テーブルの一部または全部を、フラッシュメモリ内に保存しておく。これにより、アドレス変換テーブル自体の誤りに対処する構成を簡素な構成とすることができる。また、アドレス変換テーブル自体に誤りが生じたときの処理を高速にすることができる。以下の説明では、第２の実施形態を引用して説明する。ただし、これに限らず、第１の実施形態に第３の実施形態を適用することも可能である。
【００５２】
図１２に示すように、第３の実施形態による半導体記憶装置３は、図８に示す半導体記憶装置２と同様の構成において、コントローラ２００がコントローラ３００に置き換えられている。コントローラ３００は、図８に示すコントローラ２００と同様の構成を備える。ただし、変換部２２０が変換部３２０に、それぞれ置き換えられている。また、第３の実施形態では、フラッシュメモリ１６０に、ＤＲＡＭ１３０に格納されているアドレス変換テーブル２３１の一部または全部のコピーであるアドレス変換テーブル３６１が格納されている。
【００５３】
ＤＲＡＭ１３０のアドレス変換テーブル２３１は、定期的または必要に応じて、フラッシュメモリ１６０内に転記される。ここで、フラッシュメモリ１６０へアドレス変換テーブル２３１の転記動作について、図面を参照して詳細に説明する。
【００５４】
図１３は、第３の実施形態による転記動作を示すフローチャートである。図１３に示すように、変換部３２０は、ＤＲＡＭ１３０中のアドレス変換テーブル２３１の変更を常時または定期的に監視する（ステップＳ３２１；ＮＯ）。アドレス変換テーブル２３１に変更があると（ステップＳ３２１；ＹＥＳ）、変換部３２０は、ＤＲＡＭ１３０からアドレス変換テーブル２３１を読み出す（ステップＳ３２２）。つづいて、変換部３２０は、読み出したアドレス変換テーブル３６１に対するパリティチェックを実行する（ステップＳ３２３）。具体的には、たとえば、変換部３２０は、アドレス変換テーブル２３１を構成するマトリクス状のビット配列における、ビット線方向のビット列およびワード線方向のビット列をそれぞれ読み出し、この読み出したビット列を水平パリティ符号Ｅ１または垂直パリティ符号Ｅ２を用いてチェックする。このチェック結果は、変換部３２０に入力される。
【００５５】
ステップＳ３２３のパリティチェックの結果、誤りがない場合（ステップＳ３２４；ＮＯ）、変換部３２０は、読み出したアドレス変換テーブル２３１をフラッシュメモリ１６０内の所定の記憶領域に転記する（ステップＳ３２８）。
【００５６】
一方、ステップＳ３２３のパリティチェックの結果、誤りがある場合（ステップＳ３２４；ＹＥＳ）、変換部３２０は、誤りを訂正することが可能か否かを判断し（ステップＳ３２５）、可能である場合（ステップＳ３２５；ＹＥＳ）、水平パリティ符号Ｅ１または垂直パリティ符号Ｅ２を用いてビット列中の誤りを訂正する（ステップＳ３２６）。具体的には、たとえばＤＲＡＭ１３０中のマトリクス状のビット配列のうち、水平パリティ符号Ｅ１および垂直パリティ符号Ｅ２の両方で誤りが検出された位置のビットの値を反転する。これにより、アドレス変換テーブル２３１に登録された物理アドレスＰが修復される。また、ＤＲＡＭ１３０を修復後、変換部３２０は、ステップＳ３２８に進む。
【００５７】
一方、ステップＳ３２５の結果、誤りを訂正することができないと判断された場合（ステップＳ３２５；ＮＯ）、コントローラ３００は、図６のステップＳ１２３と同様のＤＲＡＭ修復処理を実行し（ステップＳ３２７）、その後、ステップＳ３２８に進む。以降の動作を実行する。なお、この転記動作は、たとえば外部からの割込み終了によって終了する。
【００５８】
つづいて、第３の実施形態による動作について、図面を参照して説明する。第３の実施形態による書込動作は、第１の実施形態による書込動作と同様である。第３の実施形態による読出動作は、図６に示す読出動作において、ステップＳ１２３に示すＤＲＡＭ修復処理が、図１４に示す動作となる。
【００５９】
図１４に示すように、第３の実施形態によるＤＲＡＭ修復処理では、変換部３２０は、図６のステップＳ１１８の結果として、ステップＳ１１３で読み出した物理アドレスＰ、すなわちＤＲＡＭ１３０中のアドレス変換テーブル１３１に誤りがあると判断する（ステップＳ３１１）。すると、変換部３２０は、読出要求の論理アドレスＬｒに対応する物理アドレスＰｆをフラッシュメモリ１６０に保存されたアドレス変換テーブル３６１から取得する（ステップＳ３１２）。この際、変換部３２０は、読み出す物理アドレスＰｆに対応づけられた誤り訂正符号Ａ２も読み出す。
【００６０】
つづいて、変換部３２０は、読み出した物理アドレスＰｆおよび誤り訂正符号Ａ２をテーブル誤り訂正部３５０に入力して誤り訂正を実行する（ステップＳ３１３）。なお、ステップＳ３１３では、誤り訂正の必要がなければ、物理アドレスＰｆは、誤り訂正されない。
【００６１】
つぎに、変換部３２０は、誤り訂正された物理アドレスＰｆで、ＤＲＡＭ１３０中のアドレス変換テーブル１３１における物理アドレスＰを修正する（ステップＳ３１４）。これにより、ＤＲＡＭ１３０中のアドレス変換テーブル１３１が修正される。その後、動作が図６に示す読出動作へリターンされる。
【００６２】
以上のように、第３の実施形態では、第１の実施の形態と同様の構成に加えて、ＤＲＡＭ１３０中のアドレス変換テーブル１３１をフラッシュメモリ１６０中にバックアップしておく構成を備える。この結果、アドレス変換テーブル２３１自体に生じた誤りを迅速に修正することが可能となる。その他の構成および動作は、第１または第２の実施形態と同様であるため、ここでは重複する説明を省略する。
【００６３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６４】
１，２，３  半導体記憶装置、  １０  ホスト、  ２０  インタフェース部、  ３０  内部バス、  １００，２００，３００  コントローラ、  １１０，２１０  入出力制御部、  １３０  ＤＲＡＭ、  １３１，２３１，３６１  アドレス変換テーブル、  １２０，２２０，３２０  変換部、  １４０  検査符号生成部、  １５０  検査部、  １６０  フラッシュメモリ、  １６１  データセット、  ２４０  パリティ符号生成部、  ２５０  パリティ処理部、  Ａ  冗長データ、  Ａ１  誤り検査符号、  Ａ２  誤り訂正符号  Ｅ１  水平パリティ符号、  Ｅ２  垂直パリティ符号、  Ｌ，Ｌｒ，Ｌｓ  論理アドレス、  Ｍ  ユーザデータ、  Ｐ  物理アドレス
【図１】
0005221699.tif 000002
【図２】
0005221699.tif 000003
【図３】
0005221699.tif 000004
【図４】
0005221699.tif 000005
【図５】
0005221699.tif 000006
【図６】
0005221699.tif 000007
【図７】
0005221699.tif 000008
【図８】
0005221699.tif 000009
【図９】
0005221699.tif 000010
【図１０】
0005221699.tif 000011
【図１１】
0005221699.tif 000012
【図１２】
0005221699.tif 000013
【図１３】
0005221699.tif 000014
【図１４】
0005221699.tif 000015