(57)【要約】【課題】不揮発性メモリに対して高速にデータの書込みまたは読出しができる半導体記憶装置を提供する。【解決手段】制御回路１５は、書込み指示を示す制御信号を受けて、入出力バッファ１１内の書込みデータをライトバッファ１２に出力させるのと同時に、指定アドレスのデータを含む不揮発性メモリであるフラッシュメモリ１０内のブロックを更新ブロックとして特定し、更新ブロック内のすべてのデータを高速バス１６を介してワークメモリ１３へ出力させ、更新ブロックの番号をブロック番号レジスタ１８に書込む。制御回路１５は、読出し指示を示す制御信号を受けて、指定アドレスのデータを含むブロックを特定し、そのブロックのブロック番号とブロック番号レジスタ１８に格納されているブロック番号とが一致していれば、ワークメモリ１３内のデータを読出しデータとし、入出力バッファ１１に出力させる。【選択図】図１
2008181670.tif 000002
【特許請求の範囲】
【請求項１】
複数のブロックを含み、ブロック単位でデータの書換えが可能な不揮発性メモリと、
前記不揮発性メモリの各ブロックに対応する複数のブロックを含むワークメモリと、
前記ワークメモリと前記不揮発性メモリとを接続し、外部データバスよりもビット幅が広い内部データバスと、
制御回路とを備え、
前記制御回路は、ワークメモリをミラーメモリとして使用することを指示する制御信号が入力されたときには、前記不揮発性メモリ内の所定のブロックのデータを前記内部データバスを介して前記ワークメモリ内の対応するブロックへ出力させ、
前記制御回路は、読出しを指示する制御信号とアドレスとが入力されたときには、前記ワークメモリ内の前記アドレスで特定されるブロック内の前記アドレスで特定されるデータを外部へ出力させ、
前記制御回路は、書込みを指示する制御信号と、アドレスと、書込みデータとが入力されたときには、前記書込みデータを前記ワークメモリ内の前記アドレスで特定されるブロック内の前記アドレスに応じた位置に出力させ、
前記制御回路は、ワークメモリ内のデータを不揮発性メモリへバックアップすることを指示する制御信号が入力されたときには、前記不揮発性メモリ内の所定のブロックのデータを消去し、前記不揮発性メモリ内の前記所定のブロックに対応する前記ワークメモリ内のブロックのすべてのデータを、前記不揮発性メモリ内の前記所定のブロックに出力させる、半導体記憶装置。
【請求項２】
前記ワークメモリの各ブロックに対応させて、前記ブロック内のデータの更新の有無を示す更新フラグを記憶する記憶部を備え、
前記制御回路は、前記書込みを指示する制御信号が入力されたときに、前記書込みデータを前記ワークメモリ内のブロックに出力させたときには、前記書込みデータを受け取ったブロックに対応する更新フラグを更新有りに設定し、
前記制御回路は、前記ワークメモリ内のデータを不揮発性メモリへバックアップすることを指示する制御信号が入力されたときには、前記ワークメモリのブロックのうち、前記更新フラグが更新有りに設定されているブロックについてのみ、当該ブロックに対応する前記不揮発性メモリ内のブロックのデータを消去し、前記ワークメモリ内の前記ブロックのすべてのデータを前記不揮発性メモリ内の前記ブロックに出力させる、請求項１記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体記憶装置に関し、特に、ブロック単位でデータの書換えが可能なフラッシュメモリを備えた半導体記憶装置に関する。
【背景技術】
【０００２】
フラッシュメモリは、電気的にデータの消去および書換えができるＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）であり、現在、携帯電話、デジタルスチルカメラなどにおけるデータ記憶用のデバイスとして広く利用されている。フラッシュメモリのデータの書換えでは、通常では、フラッシュメモリ内の書換え対象となるデータを含むブロックが外部メモリに読出される。そして、この読出したブロックに、外部メモリの他の領域にあるデータが書込まれることによりブロックが更新され、その後、フラッシュメモリ内の読出しを行なったブロッックが消去され、消去されたブロックの位置に外部メモリ内の更新されたブロックが書込まれる。
【０００３】
このような通常のフラッシュメモリのデータの書込みに対して、たとえば、特許文献１では、データの書込みの高速化を図っている。すなわち、特許文献１では、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）を含むメモリカード装置において、バッファメモリを備える。データ書込み時に、外部からのデータがバッファメモリに送られ、その後、ＥＥＰＲＯＭのブロックがこのバッファメモリに読出される。バッファメモリでブロック内のデータの書換えが行なわれた後、このように更新が行なわれたブロックがＥＥＰＲＯＭに戻される。
【特許文献１】特開平５−４６４６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述の特許文献１では、外部からのデータがバッファメモリに送られた後、ＥＥＰＲＯＭのデータがバッファメモリに読出されるので、データの書込みの高速化がまだ十分に達成されない。
【０００５】
また、従来では、フラッシュメモリに対してのデータの読出しの高速化もまだ十分に達成されてない。
【０００６】
それゆえに、本発明の目的は、不揮発性メモリに対して高速にデータの書込みができる半導体記憶装置を提供することである。
【０００７】
また、本発明の他の目的は、不揮発性メモリに対して高速にデータの読出しができる半導体記憶装置を提供することである。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、この発明に係わる半導体記憶装置は、複数のブロックを含み、ブロック単位でデータの書換えが可能な不揮発性メモリと、外部から送られてくる書込みデータを記憶するためのライトバッファと、少なくとも前記不揮発性メモリの１個分のブロックと同一の大きさのブロックを記憶するためのワークメモリと、前記ワークメモリと前記不揮発性メモリとを接続し、外部データバスよりもビット幅が広い内部データバスと、外部から書込み指示を示す制御信号と、アドレスと、書込みデータとが入力されたときには、前記ライトバッファへ書込みデータを取込ませる取込み制御と、前記取込み制御と並行して、前記アドレスで特定させる不揮発性メモリ内のブロックのすべてのデータを前記内部データバスを介して前記ワークメモリへ出力させ、前記不揮発性メモリ内の前記ブロックのすべてのデータを消去するとともに、前記ライトバッファ内の書込みデータを前記ワークメモリ内の前記ブロック内の前記アドレスに応じた位置に出力させ、その後、前記ワークメモリ内の前記ブロックのすべてのデータを前記内部データバスを介して前記不揮発性メモリ内の前記ブロックの位置へ出力させる書込み制御を行なう制御回路とを備える。
【０００９】
また、本発明に係わる半導体記憶装置は、複数のブロックを含み、ブロック単位でデータの書換えが可能な不揮発性メモリと、外部から送られてくるデータを記憶するためのライトバッファと、少なくとも前記不揮発性メモリの１個分のブロックと同一の大きさのブロックを記憶するためのワークメモリと、前記ワークメモリと前記不揮発性メモリとを接続し、外部データバスよりもビット幅が広い内部データバスと、不揮発性メモリのブロックのブロック番号を記憶する第１記憶部を含む制御回路とを備え、前記制御回路は、外部から書込み指示を示す制御信号と、アドレスと、書込みデータとが入力されたときには、前記ライトバッファへ書込みデータを取込ませ、前記アドレスで特定させる不揮発性メモリ内のブロックのすべてのデータを前記内部データバスを介して前記ワークメモリへ出力させ、前記不揮発性メモリ内の前記ブロックのすべてのデータを消去するとともに、前記ライトバッファ内の書込みデータを前記ワークメモリ内の前記ブロックの前記アドレスに応じた位置に出力させ、その後前記ワークメモリ内の前記ブロックのすべてのデータを前記内部データバスを介して前記不揮発性メモリ内の前記ブロックの位置へ出力させ、前記第１記憶部に前記ブロックの番号を格納させ、前記制御回路は、外部から読出し指示を示す制御信号とアドレスが入力されたときには、アドレスで特定されるブロックの番号と前記第１記憶部内のブロック番号が同一であるときには、前記ワークメモリ内の前記ブロック内の前記アドレスで特定されるデータを外部へ出力させ、同一でないときには、不揮発性メモリ内の前記アドレスで特定されるデータを外部へ出力させる。
【発明の効果】
【００１０】
この発明に係わる半導体記憶装置によれば、制御回路は、外部から書込み指示を示す制御信号と、アドレスと、書込みデータとが入力されたときには、ライトバッファへ書込みデータを取込ませる取込み制御と、この取込み制御と並行して、アドレスで特定させる不揮発性メモリ内のブロックのすべてのデータを内部データバスを介してワークメモリへ出力させ、不揮発性メモリ内の前記ブロックのすべてのデータを消去するとともに、ライトバッファ内の書込みデータをワークメモリ内の前記ブロック内のアドレスに応じた位置に出力させ、その後、ワークメモリ内の前記ブロックのすべてのデータを内部データバスを介して不揮発性メモリ内の前記ブロックの位置へ出力させる書込み制御を行なうので、書込みデータの不揮発性メモリへの書込みを高速に行なうことができる。
【００１１】
また、この発明に係わる半導体記憶装置によれば、制御回路は、外部から書込み指示を示す制御信号と、アドレスと、書込みデータとが入力されたときには、アドレスで特定させる不揮発性メモリ内のブロックのすべてのデータを内部データバスを介してワークメモリへ出力させ、第１記憶部に前記ブロックの番号を格納させ、制御回路は、外部から読出し指示を示す制御信号とアドレスが入力されたときには、アドレスで特定されるブロックの番号と第１記憶部内のブロック番号が同一であるときには、ワークメモリ内のブロック内のアドレスで特定されるデータを外部へ出力させ、同一でないときには、不揮発性メモリ内のアドレスで特定されるデータを外部へ出力させるので、不揮発性メモリからのデータの読出しを高速に行なうことができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施の形態について、図面を用いて説明する。
＜第１の実施形態＞
本実施の形態では、書込みデータのライトバッファへの取込みと並行して、フラッシュメモリ内のブロックのデータをワークメモリへ出力させる半導体記憶装置に関する。
【００１３】
（構成）
図１は、本実施の形態に係わる半導体記憶装置の構成を示す。同図を参照して、この半導体記憶装置１００は、フラッシュメモリ１０と、入出力バッファ１１と、ライトバッファ１２と、ワークメモリ１３と、デコーダ１４と、制御回路１５と、データバス２０と、アドレスバス２１と、制御信号バス２２と、高速バス１６とを有する。
【００１４】
フラッシュメモリ１０は、複数個のブロックで構成される。１個のブロックの大きさは、３２Ｋワード（１ワードは３２ビット）であり、ｍ個のブロックにより、１つのバンクが構成される。
【００１５】
データバス２０は、外部と入出力バッファ１１との間で、書込みデータおよび読出しデータが流れるバスである。データバス２０のバス幅は、たとえば３２ビット幅である。
【００１６】
制御信号バス２２は、外部と制御回路１５との間で制御信号が流れるバスである。
高速バス１６は、フラッシュメモリ１０と、ワークメモリ１３と、入出力バッファ１１とをそれぞれ接続し、ライトバッファ１２とワークメモリ１３とを接続するバスである。高速バス１６のバス幅は、たとえば１２８〜２５６ビット幅である。
【００１７】
入出力バッファ１１は、データバス２０から入力されるデータ（書込みデータ）、またはデータバス２０へ出力されるデータ（読出しデータ）を一時的に記憶する。書込みデータおよび読出しデータの大きさは、たとえば３２ビットである。
【００１８】
ライトバッファ１２は、データバス２０から入力されて入出力バッファ１１に記憶されているデータ、つまり、書込みデータを記憶する。ライトバッファ１２は、１つまたは複数の書込みデータを記憶する容量を有する。
【００１９】
入出力バッファ１１およびライトバッファ１２は、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）形式でデータの入出力が行なわれる。
【００２０】
ワークメモリ１３は、フラッシュメモリ１０の１つのブロックのデータを記憶する容量を有する。ワークメモリ１３は、フラッシュメモリ１０から送られるブロックのデータを記憶する。ワークメモリ１３は、ライトバッファ１２から送られたデータを、上記記憶しているブロック内のデコードされたアドレスに応じた位置で記憶する。
【００２１】
デコーダ１４は、アドレスバス２１から入力されるアドレスをデコードする。
制御回路１５は、書込み動作フラグ格納部１７とブロック番号レジスタ１８とを備える。
【００２２】
書込み動作フラグ格納部１７は、外部から参照可能な書込み動作フラグを格納する。書込み動作フラグの値が「１」のときには、書込み動作が行なわれていることを示し、書込み動作フラグの値が「０」のときには、書込み動作が行なわれていないことを示す。
【００２３】
ブロック番号レジスタ１８は、ワークメモリ１３に格納されているブロックの番号を記憶する。
【００２４】
ここで、レジスタに格納されている値は、外部から参照および設定することが可能であり、フラグの値は、外部からは参照のみが可能であるものとする。これは、以下の実施形態でも同様であるものとする。
【００２５】
制御回路１５は、制御信号バス２２から入力される制御データに基づいて制御を行なう。
【００２６】
つまり、制御回路１５は、書込み時に以下の制御を行なう。制御回路１５は、書込み指示を示す制御信号を受けて、入出力バッファ１１内のデータを、ライトバッファ１２に出力させる。制御回路１５は、このライトバッファへのデータの出力と並行して、デコーダ１４によりデコードされたアドレスのデータを含むフラッシュメモリ１０内のブロック（更新ブロック）を特定し、そのブロックのすべてのデータをフラッシュメモリ１０から高速バス１６を介して、ワークメモリ１３へ取り出し、その後、この更新ブロックの番号をブロック番号レジスタ１８に書込む。さらに、制御回路１５は、制御回路１５内の書込み動作フラグを「１」に設定し、その後、ライトバッファ１２内のデータを、ワークメモリ１３内のデコードされたアドレスに応じた位置に出力させ、フラッシュメモリ１０内の更新ブロックのすべてのデータを消去する。そして、制御回路１５は、ワークメモリ１３内のすべてのデータを、高速バス１６を介して、フラッシュメモリ１０の更新ブロックに出力させる。制御回路１５は、データの書込み終了後に、書込み動作フラグを「０」に設定する。
【００２７】
制御回路１５は、読出し時において、以下の制御を行なう。制御回路１５は、読出し指示を示す制御信号を受けて、デコーダ１４によりデコードされたアドレスのデータを含むブロックを特定し、そのブロックのブロック番号と、ブロック番号レジスタ１８に格納されているブロック番号とを比較する。制御回路１５は、比較結果が一致であれば、ワークメモリ１３内のデータを読出しデータとして、高速バス１６を介して入出力バッファ１１に出力させる。制御回路１５は、比較結果が不一致であれば、デコードされたアドレスで特定されるフラッシュメモリ１０内のブロックのデータを読出しデータとして、高速バス１６を介して、入出力バッファ１１へ出力させる。
【００２８】
（書込み処理の動作）
次に、この半導体記憶装置１００の書込み処理の動作について説明する。図２は、書込み処理の動作手順を示すフローチャートである。
【００２９】
まず、外部より、書込み指示を示す制御信号と、書込みデータと、アドレスとが、それぞれ、制御回路１５、入出力バッファ１１、デコーダ１４に入力される（ステップＳ３０１）。
【００３０】
制御回路１５は、上記制御信号を受けて、入出力バッファ１１内の書込みデータを、ライトバッファ１２に出力させる。また、これと同時に、制御回路１５は、デコーダ１４でデコードされたアドレスのデータを含むフラッシュメモリ１０内のブロックを更新ブロックとして特定し、更新ブロック内のすべてのデータを高速バス１６を介してワークメモリ１３へ出力させる。制御回路１５は、この更新ブロックの番号をブロック番号レジスタ１８に書込む（ステップＳ３０２）。
【００３１】
次に、制御回路１５は、書込み動作フラグを「１」に設定し（ステップＳ３０３）、その後、ライトバッファ１２内の書込みデータを、ワークメモリ１３内のデコードされたアドレスに応じた位置に出力させる（ステップＳ３０４）。
【００３２】
制御回路１５は、フラッシュメモリ１０内の更新ブロック内のすべてのデータを消去する（ステップＳ３０５）。
【００３３】
次に、制御回路１５は、ワークメモリ１３に記憶されているすべてのデータを、フラッシュメモリ１０の更新ブロックに出力させる（ステップＳ３０６）。
【００３４】
次に、制御回路１５は、書込み動作フラグを「０」に設定する（ステップＳ３０７）。
（読出し処理の動作）
次に、この半導体記憶装置１００の読出し処理の動作について説明する。図３は、読出し処理の動作手順を示すフローチャートである。
【００３５】
まず、外部より、読出し指示を示す制御信号と、アドレスとが、それぞれ、制御回路１５、デコーダ１４に入力される（ステップＳ４０１）。
【００３６】
制御回路１５は、上記制御信号を受けて、デコーダ１４でデコードされたアドレスのデータを含むブロックを特定し、そのブロックのブロック番号と、ブロック番号レジスタ１８に格納されているブロックの番号とを比較する（ステップＳ４０２）。
【００３７】
制御回路１５は、比較結果が一致であれば、ワークメモリ１３に記憶されているデコードされたアドレスのデータを読出しデータとして、高速バス１６を介して入出力バッファ１１へ出力させる（ステップＳ４０３）。
【００３８】
制御回路１５は、比較結果が不一致であれば、フラッシュメモリ１０内のデコードされたアドレスのデータを、読出しデータとして、高速バス１６を介して、入出力バッファ１１へ出力させる（ステップＳ４０４）。
【００３９】
入出力バッファ１１内の読出しデータは、データバス２０を介して外部へ出力される（ステップＳ４０５）。
【００４０】
以上のように、本実施の形態に係わる半導体記憶装置では、制御回路１５は、書込み指示を示す制御信号を受けると、入出力バッファ１１内の書込みデータをライトバッファ１２に出力させるのと同時に、デコードされたアドレスのデータを含むフラッシュメモリ１０内のブロックを更新ブロックとして特定し、更新ブロック内のすべてのデータを高速バス１６を介してワークメモリ１３へ出力させるので、データの書込みを高速に行なうことができる。
【００４１】
また、制御回路１５は、この更新ブロックの番号をブロック番号レジスタ１８に書込み、制御回路１５は、読出し指示を示す制御信号を受けて、デコードされたアドレスのデータを含むブロックを特定し、そのブロックのブロック番号とブロック番号レジスタ１８に格納されているブロック番号とが一致していれば、ワークメモリ１３内のデータを読出しデータとして、高速バス１６を介して入出力バッファ１１に出力させるので、データの読出しを高速に行なうことができる。
【００４２】
また、制御回路１５は、書込みを指示する制御信号を受けると、ワークメモリ１３に記憶されているすべてのデータがフラッシュメモリ１０の更新ブロックに出力されるまで、書込み動作フラグの値を「１」に設定するので、外部では、この書込み動作フラグを参照して書込み動作フラグの値が「１」のときには、書込みを行なわないようにすることができる。
【００４３】
＜第２の実施形態＞
本実施の形態は、データの書込みに際して、フラッシュメモリ内のブロックのうち、有効なデータを含むブロックのみワークメモリへ出力させる半導体記憶装置に関する。
【００４４】
図４は、本実施の形態に係わる半導体記憶装置の構成を示す。同図の半導体記憶装置５０の構成要素のうち、第１の実施形態に係わる半導体記憶装置１００の構成要素と同一のものについては、同一の符号を付す。以下、第１の実施形態に係わる半導体記憶装置１００と相違する点について説明する。
【００４５】
フラッシュメモリ５６は、複数個のブロックを含み、有効性フラグ格納部５７を含む。有効性フラグ格納部５７は、ブロックごとに有効性フラグを格納する。有効性フラグの値が「１」のときには、対応するブロック内のデータが有効であることを示し、有効性フラグの値が「０」のときには、対応するブロック内のデータがすべて無効であることを示す。ここで、データが有効であるとは、そのデータが将来、使用される可能性のあるデータであることを意味し、データが無効であるとは、そのデータが将来、使用されることのないデータであることを意味し、上書きされてもよいことを意味する。フラッシュメモリ５６のどのブロックにも未だ何も書込まれていないときには、すべてのブロックの有効性フラグは、「０」に設定されている。
【００４６】
制御回路５５は、フラッシュメモリ５６内のブロックにデータを書込んだときに、そのブロックの有効性フラグを「１」に設定する。
【００４７】
制御回路５５は、フラッシュメモリ５６内の更新ブロックの有効性フラグの値が「１」のときには、第１の実施形態と同様に書込みデータの書込みを行なう。
【００４８】
一方、制御回路５５は、フラッシュメモリ５６内の更新ブロックの有効性フラグの値が「０」のときには、フラッシュメモリ５６内の更新ブロック内のすべてのデータを高速バス１６を介してワークメモリ１３へ出力させる処理を行なわず、フラッシュメモリ５６内の更新ブロック内のすべてのデータを消去する処理を行なわない。
【００４９】
（書込み処理の動作）
次に、この半導体記憶装置５０の書込み処理の動作について説明する。図５は、書込み処理の動作手順を示すフローチャートである。
【００５０】
まず、外部より、書込み指示を示す制御信号と、書込みデータと、アドレスとが、それぞれ、制御回路５５、入出力バッファ１１、デコーダ１４に入力される（ステップＳ５０１）。
【００５１】
制御回路５５は、上記制御信号を受けて、入出力バッファ１１内の上記書込みデータを、ライトバッファ１２に出力させる（ステップＳ５０２）。
【００５２】
制御回路５５は、デコーダ１４でデコードされたアドレスのデータを含むブロックを更新ブロックとして特定し、その更新ブロックの有効性フラグを調べる（ステップＳ５０３）。
【００５３】
制御回路５５は、有効性フラグの値が「１」であれば、更新ブロック内のすべてのデータをフラッシュメモリ５６から高速バス１６を介して、ワークメモリ１３へ出力させる（ステップＳ５０４）。
【００５４】
制御回路５５は、更新ブロックの番号をブロック番号レジスタ１８に書込む（ステップＳ５０５）。
【００５５】
次に、制御回路５５は、書込み動作フラグを「１」に設定し（ステップＳ５０６）、その後、ライトバッファ１２内の書込みデータを、ワークメモリ１３内のデコードされたアドレスに応じた位置に出力させる（ステップＳ５０７）。
【００５６】
制御回路５５は、フラッシュメモリ５６内の更新ブロック内のすべてのデータを消去する（ステップＳ５０８）。
【００５７】
次に、制御回路５５は、ワークメモリ１３に記憶されているすべてのデータを、フラッシュメモリ５６の更新ブロックに出力させる（ステップＳ５０９）。
【００５８】
次に、制御回路５５は、書込み動作フラグを「０」に設定する（ステップＳ５１０）。
一方、制御回路５５は、有効性フラグの値が「０」であれば、更新ブロックの番号をブロック番号レジスタ１８に書込む（ステップＳ５１１）。
【００５９】
次に、制御回路５５は、書込み動作フラグを「１」に設定し（ステップＳ５１２）、その後、ライトバッファ１２内の書込みデータを、ワークメモリ１３内のデコードされたアドレスに応じた位置に出力させる（ステップＳ５１３）。
【００６０】
次に、制御回路５５は、ワークメモリ１３に記憶されているすべてのデータを、フラッシュメモリ５６の更新ブロックに出力させる（ステップＳ５１４）。
【００６１】
次に、制御回路５５は、書込み動作フラグを「０」に設定する（ステップＳ５１５）。
次に、制御回路５５は、更新ブロックに対応する有効性フラグを「１」に設定する（ステップＳ５１６）。
【００６２】
（読出し処理の動作）
この半導体記憶装置５０の読出し処理の動作は、第１の実施形態に係わる半導体記憶装置１００の読出し処理の動作と同様なので、ここでは、説明は繰返さない。
【００６３】
以上のように、本実施の形態に係わる半導体記憶装置では、データの書込みに際して、フラッシュメモリ内のブロックのうち、有効なデータを含むブロックのみがワークメモリへ出力させるので、将来使用されることのない無効なデータのみからなるブロックはワークメモリへ出力されないので、データの書込みの高速化を図ることができる。
【００６４】
＜第３の実施形態＞
本実施の形態は、１個以上のブロックのデータを記憶するライトバッファを備えた半導体記憶装置に関する。
【００６５】
図６は、本実施の形態に係わる半導体記憶装置の構成を示す。同図の半導体記憶装置２００の構成要素のうち、第１の実施形態に係わる半導体記憶装置１００の構成要素と同一のものについては、同一の符号を付す。以下、第１の実施形態に係わる半導体記憶装置１００と相違する点について説明する。
【００６６】
半導体記憶装置２００は、複数個のライトバッファ２７ａ〜ｃを含む。各ライトバッファは、１つのブロックのデータを記憶する容量を有する。ライトバッファ２７ａ〜ｃは、順序付けられている。ライトバッファ２７ａは、第１番目、ライトバッファ２７ｂは、第２番目、ライトバッファ２７ｃは、第３番目に順序付けられる。
【００６７】
制御回路２５は、第１の実施形態と同様のブロック番号レジスタ１８を含む。
制御回路２５は、入出力バッファ１１に入力される複数個の書込みデータを、次のようにして、ライトバッファ２７ａ〜ｃに出力させる。
【００６８】
制御回路２５は、まず、入力バッファ１１に入力された書込みデータを第１番目のライトバッファ２７ａに出力させる。ライトバッファ２７ａ内の先頭の書込みデータの格納位置は、アドレスに応じた位置とする。制御回路２５は、ライトバッファ２７ａの末端の位置まで書込みデータが格納されたときには、書込みデータを第２番目のライトバッファ２７ｂに出力させる。さらに、制御回路２５は、ライトバッファ２７ｂの末端まで書込みデータが格納されたときには、書込みデータを３番目のライトバッファ２７ｃに出力させる。
【００６９】
制御回路２５は、ライトバッファ２７ａ〜ｃのうち、書込みデータが格納されているライトバッファであって、順序が先のライトバッファから順次、出力ライトバッファとして特定する。
【００７０】
制御回路２５は、デコーダ１４でデコードされたアドレスと、特定された出力ライトバッファの順序によって定まるフラッシュメモリ１０内のブロックを更新ブロックとして特定する。すなわち、制御回路２５は、出力ライトバッファが第１番目のライトバッファ２７ａのときには、デコードされたアドレスのデータを含むフラッシュメモリ１０内のブロックを更新ブロックとして特定し、出力ライトバッファが２番目のライトバッファ２７ｂのときには、デコードされたアドレスのデータを含むフラッシュメモリ１０内のブロックに後続する１番目のブロックを更新ブロックとして特定し、出力ライトバッファが３番目のライトバッファ２７ｃのときには、デコードされたアドレスのデータを含むフラッシュメモリ１０内のブロックに後続する２番目のブロックを更新ブロックとして特定する。
【００７１】
制御回路２５は、更新ブロックのすべてのデータを高速バス１６を介してワークメモリ１３へ出力させる。
【００７２】
制御回路２５は、出力ライトバッファ内のすべてのデータをワークメモリ１３に出力させる。ここで、出力ライトバッファからワークメモリ１３へ書込みデータを出力する時点までに、外部からの書込みデータがその出力ライトバッファに取込まれることが保証されているものとする。
【００７３】
制御回路２５は、フラッシュメモリ１０内の更新ブロック内のすべてのデータを消去する。制御回路２５は、ワークメモリ１３に記憶されているすべてのデータを、フラッシュメモリ１０の更新ブロックに出力させる。
【００７４】
（書込み処理の動作）
次に、この半導体記憶装置２００の書込み処理の動作について説明する。図７は、書込み処理の動作手順を示すフローチャートである。
【００７５】
まず、外部より、書込み指示を示す制御信号と、アドレスと、複数個の書込みデータとが、それぞれ、制御回路２５、デコーダ１４、入出力バッファ１１に入力される（ステップＳ６０１）。
【００７６】
制御回路２５は、入出力バッファ１１へ入力される書込みデータを、順序が先のライトバッファから順次、そのライトバッファへ出力させる（ステップＳ６０２）。
【００７７】
次に、制御回路２５は、書込みデータが格納されているライトバッファであって、順序が最先のライトバッファを出力ライトバッファとして特定する。また、制御回路２５は、デコーダ１４でデコードされたアドレスと、特定された出力ライトバッファの順序によって定まるフラッシュメモリ１０内のブロックを更新ブロックとして特定する（ステップＳ６０３）。
【００７８】
制御回路２５は、更新ブロックのすべてのデータを高速バス１６を介して、ワークメモリ１３へ出力させる（ステップＳ６０４）。
【００７９】
制御回路２５は、更新ブロックの番号をブロック番号レジスタ１８に書込む（ステップＳ６０５）。
【００８０】
制御回路２５は、出力ライトバッファ内のすべての書込みデータをワークメモリ１３へ出力させる（ステップＳ６０６）。
【００８１】
制御回路２５は、フラッシュメモリ１０内の更新ブロック内のすべてのデータを消去する（ステップＳ６０７）。
【００８２】
次に、制御回路２５は、ワークメモリ１３に記憶されているすべてのデータを、フラッシュメモリ１０の更新ブロックに出力させる（ステップＳ６０８）。
【００８３】
次に、制御回路２５は、いずれかのライトバッファに書込みデータが格納されている場合には、書込み処理を続行し、いずれのライトバッファにも書込みデータが格納されていない場合には、書込み処理を中止する（ステップＳ６０９）。
【００８４】
（読出し処理の動作）
この半導体記憶装置２００の読出し処理の動作は、第１の実施形態に係わる半導体記憶装置１００の読出し処理の動作と同様なので、ここでは、説明は繰返さない。
【００８５】
以上のように、本実施の形態に係わる半導体記憶装置では、ライトバッファが１個以上のブロックのデータを記憶し、制御回路が順次、ライトバッファ内の各ブロックのデータをフラッシュメモリの対応するブロックへ出力させるので、外部から連続してデータの書込みを行なうことができる。
【００８６】
＜第４の実施形態＞
本実施の形態は、ワークメモリをミラーメモリとして利用する半導体記憶装置に関する。ここで、ミラーメモリとは、外部からのフラッシュメモリへのデータの書込みおよび読込みに対して、フラッシュメモリに代わって外部からのデータ書込みおよび読込みに応じるメモリを意味する。
【００８７】
（構成）
図８は、本実施の形態に係わる半導体記憶装置の構成を示す。同図の半導体記憶装置３０の構成要素のうち、第１の実施形態に係わる半導体記憶装置１００の構成要素と同一のものについては、同一の符号を付す。以下、第１の実施形態に係わる半導体記憶装置１００と相違する点について説明する。
【００８８】
制御回路３５は、書込み制御レジスタ３６と、ワークメモリクリアレジスタ３７と、読出し完了フラグ格納部３８とを含む。
【００８９】
書込み制御レジスタ３６の値が「１」のときには、ワークメモリレジスタ３７の値が「０」であれば、ワークメモリ１３内のデータのフラッシュメモリ１０への出力が許可されている状態を示す。
【００９０】
書込み制御レジスタ３６の値が「０」のときには、ワークメモリ１３内のデータのフラッシュメモリ１０への出力が禁止されている状態を示す。
【００９１】
ワークメモリクリアレジスタ３７の値が「１」のときには、ワークメモリ１３内のすべてのデータが「０」に初期化され、書込み制御レジスタ３６の値が「１」であっても、ワークメモリ１３内のデータのフラッシュメモリ１０への出力が禁止されている状態を示す。
【００９２】
ワークメモリクリアレジスタ３７の値が「０」のときには、書込み制御レジスタ３６の値が「１」であれば、ワークメモリ内のデータのフラッシュメモリ１０への出力が許可されている状態を示す。
【００９３】
読出し完了フラグ格納部３８は、読出し完了フラグを格納する。読出し完了フラグの値が「１」のときには、ミラーメモリ設定が終了した状態、すなわち、フラッシュメモリ１０のブロックのデータのワークメモリへの読出しが完了した状態を示す。読出し完了フラグの値が「０」のときには、ミラーメモリ設定が終了していない状態を示す。
【００９４】
制御回路３５は、ミラーメモリ設定指示を示す制御信号が入力されると、デコードされたアドレスのデータを含むフラッシュメモリ１０内のブロックを２重化ブロックとして特定し、この２重化ブロックのすべてのデータを高速バス１６を介してワークメモリ１３へ出力させる。そして、制御回路３５は、読出し完了フラグを「１」に設定する。読出し完了フラグの値が「１」になった後に、外部より書込み指示を示す制御信号、または読出し指示を示す制御信号が入力される。制御回路３５は、２重化ブロックの番号をブロック番号レジスタ１８に書込み、書込み制御レジスタ３６の値を「０」に設定する。書込み制御レジスタ３６の値が「０」になると、ワークメモリ１３からフラッシュメモリ１０へのデータの出力が禁止される。
【００９５】
制御回路３５は、書込み指示を示す制御信号が入力されると、入出力バッファ１１内のデータを、ライトバッファ１２に出力させる。そして、制御回路３５は、デコードされたアドレスのデータを含むブロックのブロック番号と、ブロック番号レジスタ１８に格納されているブロック番号とを比較し、比較結果が一致しているときのみ、ライトバッファ１２内の書込みデータを、ワークメモリ１３内のデコードされたアドレスに応じた位置に出力させる。
【００９６】
制御回路３５は、読出し指示を示す制御信号が入力されると、第１の実施形態と同様の処理を行なう。すなわち、制御回路３５は、デコーダ１４によりデコードされたアドレスのデータを含むブロックを特定し、そのブロックのブロック番号と、ブロック番号レジスタ１８に格納されているブロック番号とを比較する。制御回路３５は、比較結果が一致であれば、ワークメモリ１３内のデータを読出しデータとして、高速バス１６を介して入出力バッファ１１に出力させる。制御回路３５は、比較結果が不一致であれば、デコードされたアドレスで特定されるフラッシュメモリ１０内のブロックのデータを読出しデータとして、高速バス１６を介して、入出力バッファ１１へ出力させる。
【００９７】
制御回路３５は、ミラーメモリのクリアを指示する制御信号が入力されると、ワークメモリクリアレジスタ３７の値を「１」に設定する。制御回路３５は、ワークメモリ内のデータを消去する。
【００９８】
制御回路３５は、バックアップを指示する制御信号が入力されると、書込み制御レジスタ３６の値を「１」に設定する。制御回路３５は、書込み制御レジスタ３６の値が「１」に設定され、かつワークメモリクリアレジスタ３７の値が「０」に設定されている場合に、フラッシュメモリ１０内の２重化ブロックのデータを消去し、ワークメモリ内のすべてのデータを高速バス１６を介してフラッシュメモリ１０の２重化ブロックに出力させる。
【００９９】
（ミラーメモリ設定処理の動作）
次に、この半導体記憶装置３０のミラーメモリ設定処理の動作について説明する。図９は、ミラーメモリ設定処理の動作手順を示すフローチャートである。
【０１００】
まず、外部より、ミラーメモリ設定指示を示す制御信号と、アドレスとが、それぞれ、制御回路３５、デコーダ１４に入力される（ステップ７０１）。
【０１０１】
次に、制御回路３５は、上記制御信号を受けて、デコーダ１４でデコードされたアドレスのデータを含むフラッシュメモリ１０内のブロックを２重化ブロックとして特定し、この２重化ブロックのすべてのデータを高速バス１６を介して、ワークメモリ１３へ出力させる（ステップＳ７０２）。
【０１０２】
制御回路３５は、読出し完了フラグを「１」に設定する（ステップＳ７０３）。
制御回路３５は、この２重化ブロックの番号をブロック番号レジスタ１８に書込む（ステップＳ７０４）。
【０１０３】
制御回路３５は、書込み制御レジスタ３６の値を「０」に設定する（ステップＳ７０５）。
【０１０４】
（読出し処理の動作）
読出し完了フラグが「１」に設定された後、外部より、読出し指示を示す制御信号と、アドレスとが、それぞれ、制御回路３５、デコーダ１４に入力される。以下の読出し動作は、第１〜第３の実施形態と同様なので、説明は繰返さない。
【０１０５】
（書込み処理の動作）
次に、この半導体記憶装置３０の書込み処理の動作について説明する。図１０は、書込み処理の動作手順を示すフローチャートである。
【０１０６】
読出し完了フラグが「１」に設定された後、外部より、書込み指示を示す制御信号と、書込みデータと、アドレスとが、それぞれ、制御回路３５、入出力バッファ１１、デコーダ１４に入力される（ステップＳ８０１）。
【０１０７】
制御回路３５は、上記制御信号を受けて、入出力バッファ１１内のデータを、ライトバッファ１２に出力させる（ステップＳ８０２）。
【０１０８】
制御回路３５は、上記制御信号を受けて、デコーダ１４でデコードされたアドレスのデータを含むブロックのブロック番号と、ブロック番号レジスタ１８に格納されているブロック番号とを比較する（ステップＳ８０３）。
【０１０９】
制御回路３５は、比較結果が一致しているときのみ、ライトバッファ１２内の書込みデータを、ワークメモリ１３内のデコードされたアドレスに応じた位置に出力させる（ステップＳ８０４）。
【０１１０】
（バックアップ処理の動作）
次に、この半導体記憶装置３０のバックアップ処理の動作について説明する。図１１は、バックアップ処理の動作手順を示すフローチャートである。
【０１１１】
外部より、ミラーメモリのクリアを指示する制御信号が、制御回路３５に入力されると（ステップＳ９０１）、制御回路３５は、ワークメモリクリアレジスタ３７の値を「１」に設定する（ステップＳ９０２）。
【０１１２】
制御回路３５は、ワークメモリ内のデータを消去する（ステップＳ９０３）。
外部より、ワークメモリのフラッシュメモリへのバックアップを指示する制御信号が制御回路３５に入力される（ステップＳ９０４）。
【０１１３】
制御回路３５は、上記制御信号を受けて、書込み制御レジスタ３６の値を「１」に設定する（ステップＳ９０５）。
【０１１４】
制御回路３５は、書込み制御レジスタ３６の値と、ワークメモリクリアレジスタ３７の値を調べる（ステップＳ９０６）。
【０１１５】
制御回路３５は、書込み制御レジスタ３６の値が「１」に設定され、かつワークメモリクリアレジスタ３７の値が「０」に設定されている場合に、フラッシュメモリ１０内の２重化ブロックのデータを消去する（ステップＳ９０７）。
【０１１６】
そして、制御回路３５は、ワークメモリ内のすべてのデータを高速バス１６を介してフラッシュメモリ１０の２重化ブロックに出力させる（ステップＳ９０８）。
【０１１７】
以上のように、本実施の形態に係わる半導体記憶装置によれば、制御回路３５は、ミラーメモリ設定指示を示す制御信号が入力されると、２重化ブロックのすべてのデータをワークメモリ１３へ出力させる。制御回路３５は、２重化ブロックの番号をブロック番号レジスタ１８に書込み、ワークメモリ１３からフラッシュメモリ１０へのデータの出力が禁止する。
【０１１８】
制御回路３５は、書込み指示を示す制御信号が入力されると、デコードされたアドレスのデータを含むブロックのブロック番号と、ブロック番号レジスタ１８に格納されているブロック番号とを比較し、比較結果が一致しているときのみ、ライトバッファ１２内の書込みデータをワークメモリ１３に出力させる。ワークメモリからフラッシュメモリへのデータの出力が常には行なわれることがないので、データの書込みを高速に行なうことができる。
【０１１９】
制御回路３５は、読出し指示を示す制御信号が入力されると、第１の実施形態と同様の処理を行なうので、データの読出しを高速に行なうことができる。
【０１２０】
また、本実施の形態に係わる半導体記憶装置では、制御回路３５は、バックアップを指示する制御信号が入力されると、ワークメモリ内のすべてのデータをフラッシュメモリ１０の２重化ブロックに出力させるので、外部からのデータをフラッシュメモリへ書込むことができる。
【０１２１】
＜第５の実施形態＞
本実施の形態では、フラッシュメモリ内のすべてのブロックと対応する複数個のブロックを含むワークメモリをミラーメモリとして利用する半導体記憶装置に関する。
【０１２２】
（構成）
図１２は、本実施の形態に係わる半導体記憶装置の構成を示す。同図の半導体記憶装置４０の構成要素のうち、第１の実施形態に係わる半導体記憶装置１００の構成要素と同一のものについては、同一の符号を付す。以下、第１の実施形態に係わる半導体記憶装置１００と相違する点について説明する。
【０１２３】
フラッシュメモリ５６は、第２の実施形態と同様に、複数個のブロックを含み、有効性フラグ格納部５７を含む。
【０１２４】
有効性フラグ格納部５７は、ブロックごとに有効性フラグを格納する。有効性フラグの値が「１」のときには、対応するブロック内のデータが有効であることを示し、有効性フラグの値が「０」のときには、対応するブロック内のデータが無効であることを示す。フラッシュメモリ５６のどのブロックにも未だ何も書込まれていないときには、すべてのブロックの有効性フラグは、「０」に設定されている。
【０１２５】
ワークメモリ４７は、フラッシュメモリ５６内のブロックと同数のブロックを含み、各ブロックは、それぞれフラッシュメモリ５６内に対応するブロックを有する。ワークメモリ４７は、有効性フラグ格納部４８と、更新フラグ格納部４９を備える。
【０１２６】
有効性フラグ格納部４８は、ブロックごとに有効性フラグを格納する。有効性フラグの値が「１」のときには、フラッシュメモリ５６の対応するブロックから、ワークメモリ４７内の対応するブロックにデータが出力されたことを示す。有効性フラグの値が「０」のときには、フラッシュメモリ５６の対応するブロックから、ワークメモリ４７内の対応するブロックにデータが出力されていないことを示す。
【０１２７】
更新フラグ格納部４９は、ブロックごとに更新フラグを格納する。更新フラグの値が「１」のときには、外部からの書込みデータが対応するブロックに出力されたことを示し、更新フラグの値が「０」のときには、外部からの書込みデータが対応するブロックに出力されていないことを示す。
【０１２８】
制御回路４５は、第４の実施形態と同様の読出し完了フラグ格納部３８と、第１書込み制御レジスタ４３と、第２書込み制御レジスタ４１と、第１ワークメモリ設定レジスタ４６と、第２ワークメモリ設定レジスタ４２とを含む。
【０１２９】
第１書込み制御レジスタ４３の値が「１」のときには、ワークメモリ４７内のデータのフラッシュメモリ５６への出力が許可されている状態を示す。第１書込み制御レジスタ４３の値が「０」のときには、ワークメモリ４７内のデータのフラッシュメモリ５６への出力が禁止されている状態を示す。
【０１３０】
第２書込み制御レジスタ４１は、複数のビットを格納する。先頭ビットの値が「１」のときには、ワークメモリ４７内のデータのフラッシュメモリ５６への出力が許可されている状態を示す。そして、先頭ビットの値が「１」のときには、後続するビットの値が、バックアップを行なうように指示されたブロックのブロック番号を示す。先頭ビットの値が「０」のときには、ワークメモリ４７内のデータのフラッシュメモリ５６への出力が禁止されている状態を示す。
【０１３１】
第１ワークメモリ設定レジスタ４６の値が「１」のときには、ミラーメモリ設定指示を受けた状態を示す。第１ワークメモリ設定レジスタ４６の値が「０」のときには、ミラーメモリ設定指示を受けていない状態を示す。
【０１３２】
第２ワークメモリ設定レジスタ４２は、複数のビットを格納する。先頭ビットの値が「１」のときには、ミラーメモリ設定指示を受けた状態を示す。そして、先頭ビットの値が「１」のときには、後続するビットの値は、ミラーメモリ設定を行なうように指示されたブロックのブロック番号を示す。先頭ビットの値が「０」のときには、ミラーメモリ設定指示を受けていない状態を示す。
【０１３３】
制御回路４５は、ミラーメモリ設定指示を示す制御信号を受けると、第１ワークメモリ設定レジスタ４６の値を「１」に設定し、フラッシュメモリ５６内のブロックのうち、有効性フラグが「１」のブロックを特定する。制御回路４５は、特定したフラッシュメモリ５６内のブロックのすべてのデータを高速バス１６を介してワークメモリ４７へ出力させる。その後、制御回路４５は、フラッシュメモリ５６からデータを受け取ったワークメモリ４７内のブロックの有効性フラグを「１」に設定し、読出し完了フラグを「１」に設定する。その後、制御回路４５は、第１書込み制御レジスタ４３の値および第２書込み制御レジスタ４１の先頭ビットの値を「０」に設定する。
【０１３４】
制御回路４５は、読出し指示を示す制御信号を受けると、ワークメモリ４７内のデコーダ１４でデコードされたアドレスのデータを、読出しデータとして入出力バッファ１１に出力させる。
【０１３５】
制御回路４５は、書込み指示を示す制御信号を受けると、入出力バッファ１１内の書込みデータを、ワークメモリ４７内のデコーダ１４でデコードされたアドレスに応じた位置に出力させる。その後、制御回路４５は、ワークメモリ４７内の書込みデータを受け取ったブロックの更新フラグを「１」に設定する。
【０１３６】
制御回路４５は、ミラーメモリの部分的再設定を指示する制御信号を受けると、第２ワークメモリ設定レジスタ４２の先頭ビットの値を「１」にするとともに、後続するビットの値をその指定ブロック番号にする。制御回路４５は、指定ブロック番号のフラッシュメモリ５６内のブロックの有効性フラグの値が「１」のときには、フラッシュメモリ５６内の指定ブロック番号のブロックのすべてのデータを高速バス１６を介してワークメモリ４７の対応するブロック出力させ、フラッシュメモリ５６からデータを受け取ったワークメモリ４７内のブロックの有効性フラグを「１」に設定し、読出し完了フラグの値を「１」に設定する。その後、制御回路４５は、第１書込み制御レジスタ４３の値および第２書込み制御レジスタ４１の先頭ビットの値を「０」に設定する。
【０１３７】
制御回路４５は、ワークメモリ４７のフラッシュメモリ５６へのバックアップを指示する制御信号を受けると、第１書込み制御レジスタ４３の値を「１」に設定し、ワークメモリ４７内のブロックのうち、有効性フラグが「１」で、かつ更新フラグが「１」のブロックを特定する。制御回路４５は、ワークメモリ４７内の特定したブロックに対応するフラッシュメモリ５６内のブロックのすべてのデータを消去し、ワークメモリ４７内の特定したブロックのすべてのデータを、フラッシュメモリ５６内の対応するブロックに出力させ、データを受け取ったフラッシュメモリ５６内の対応するブロックの有効性フラグを「１」に設定する。
【０１３８】
制御回路４５は、部分的バックアップを指示する制御信号を受けて、第２書込み制御レジスタ４１の先頭ビットの値を「１」にするとともに、後続するビットの値を指定ブロック番号にする。制御回路４５は、後続するビットで表わされる指定ブロック番号のワークメモリ４７内のブロックの有効性フラグの値が「１」で、かつ更新フラグの値が「１」のときには、ワークメモリ４７内の指定ブロック番号のブロックに対応するフラッシュメモリ５６内のブロックのすべてのデータを消去し、ワークメモリ４７内の指定ブロック番号のブロックのすべてのデータを、フラッシュメモリ５６内の対応するブロックに出力させる。その後、制御回路４５は、フラッシュメモリ５６のブロックの有効性フラグを「１」に設定する。
【０１３９】
（ミラーメモリ設定処理の動作）
次に、この半導体記憶装置４０のミラーメモリ設定処理の動作について説明する。図１３は、ミラーメモリ設定処理の動作手順を示すフローチャートである。
【０１４０】
まず、外部より、ミラーメモリ設定指示を示す制御信号が、制御回路４５に入力される（ステップＳ１００１）。
【０１４１】
制御回路４５は、上記制御信号を受けて、第１ワークメモリ設定レジスタ４６の値を「１」に設定する（ステップＳ１００２）。
【０１４２】
制御回路４５は、第１ワークメモリ設定レジスタ４６の値が「１」に設定されている場合に、フラッシュメモリ５６内のブロックのうち、有効性フラグが「１」のブロックを特定する（ステップＳ１００３）
制御回路４５は、特定したフラッシュメモリ５６内のブロックのすべてのデータを高速バス１６を介してワークメモリ４７へ出力させる（ステップＳ１００４）。
【０１４３】
制御回路４５は、フラッシュメモリ５６からデータを受け取ったワークメモリ４７内のブロックの有効性フラグを「１」に設定する（ステップＳ１００５）。
【０１４４】
制御回路４５は、読出し完了フラグを「１」に設定する（ステップＳ１００６）。
制御回路４５は、第１書込み制御レジスタ４３の値および第２書込み制御レジスタ４１の先頭ビットの値を「０」に設定する（ステップＳ１００７）。
【０１４５】
（読出し処理の動作）
次に、この半導体記憶装置４０の読出し処理の動作について説明する。図１４は、読出し処理の動作手順を示すフローチャートである。
【０１４６】
読出し完了フラグが「１」に設定された後、外部より、読出し指示を示す制御信号と、アドレスとが、それぞれ、制御回路４５、デコーダ１４に入力される（ステップＳ１１０１）。
【０１４７】
制御回路４５は、上記制御信号を受けて、ワークメモリ４７内のデコーダ１４でデコードされたアドレスのデータを、読出しデータとして入出力バッファ１１に出力させる（ステップＳ１１０２）。
【０１４８】
入出力バッファ１１内の読出しデータは、データバス２０を介して外部へ出力される（ステップＳ１１０３）。
【０１４９】
（書込み処理の動作）
次に、この半導体記憶装置４０の書込み処理の動作について説明する。図１５は、書込み処理の動作手順を示すフローチャートである。
【０１５０】
読出し完了フラグが「１」に設定された後、外部より、書込み指示を示す制御信号と、アドレスと、書込みデータとが、それぞれ、制御回路４５、デコーダ１４、入出力バッファ１１に入力される（ステップＳ１２０１）。
【０１５１】
制御回路４５は、上記制御信号を受けて、入出力バッファ１１内の書込みデータを、ワークメモリ４７内のデコーダ１４でデコードされたアドレスに応じた位置に出力させる（ステップＳ１２０２）。
【０１５２】
制御回路４５は、ワークメモリ４７内の書込みデータを受け取ったブロックの更新フラグを「１」に設定する（ステップＳ１２０３）。
【０１５３】
（ミラーメモリの部分的再設定処理の動作）
次に、この半導体記憶装置４０のミラーメモリ部分的再設定処理の動作について説明する。図１６は、ミラーメモリ部分的再設定処理の動作手順を示すフローチャートである。
【０１５４】
まず、外部より、ミラーメモリ部分的再設定を指示する制御信号と、再設定を行なうブロックを示す指定ブロック番号とが、制御回路４５に入力される（ステップ１３０１）。
【０１５５】
制御回路４５は、上記制御信号を受けて、第２ワークメモリ設定レジスタ４２の先頭ビットの値を「１」にするとともに、後続するビットの値を指定ブロック番号にする（ステップＳ１３０２）。
【０１５６】
制御回路４５は、第２ワークメモリ設定レジスタ４２の先頭ビットが「１」のときに、後続するビットの値である指定ブロック番号のフラッシュメモリ５６内のブロックの有効性フラグを調べる（ステップＳ１３０３）。
【０１５７】
制御回路４５は、有効性フラグの値が「１」のときには、フラッシュメモリ５６内の指定ブロック番号のブロックのすべてのデータを高速バス１６を介して、ワークメモリ４７の対応するブロックへ出力させる（ステップＳ１３０４）。
【０１５８】
制御回路４５は、フラッシュメモリ５６からデータを受け取ったワークメモリ４７内のブロックの有効性フラグを「１」に設定する（ステップＳ１３０５）。
【０１５９】
制御回路４５は、読出し完了フラグの値を「１」に設定する（ステップＳ１３０６）。
制御回路４５は、第１書込み制御レジスタ４３の値および第２書込み制御レジスタ４１の先頭ビットの値を「０」に設定する（ステップＳ１３０７）。
【０１６０】
（バックアップ処理の動作）
次に、この半導体記憶装置４０のバックアップ処理の動作について説明する。図１７は、バックアップ処理の動作手順を示すフローチャートである。
【０１６１】
外部より、ワークメモリ４７のフラッシュメモリ５６へのバックアップを指示する制御信号が、制御回路４５に入力される（ステップＳ１４０１）。
【０１６２】
制御回路４５は、上記制御信号を受けて、第１書込み制御レジスタ４３の値を「１」に設定する（ステップＳ１４０２）。
【０１６３】
制御回路４５は、第１書込み制御レジスタ４３の値が「１」に設定されている場合に、ワークメモリ４７内のブロックのうち、有効性フラグが「１」で、かつ更新フラグが「１」のブロックを特定する（ステップＳ１４０３）
制御回路４５は、ワークメモリ４７内の特定したブロックに対応するフラッシュメモリ５６内のブロックのすべてのデータを消去する（ステップＳ１４０４）。
【０１６４】
制御回路４５は、ワークメモリ４７内の特定したブロックのすべてのデータを、フラッシュメモリ５６内の対応するブロックに出力させる（ステップＳ１４０５）。
【０１６５】
制御回路４５は、このようにしてデータを受け取ったフラッシュメモリ５６内の対応するブロックの有効性フラグを「１」に設定する（ステップＳ１４０６）。
【０１６６】
（部分的バックアップ処理の動作）
次に、この半導体記憶装置４０の部分的バックアップ処理の動作について説明する。図１８は、部分的バックアップ処理の動作手順を示すフローチャートである。
【０１６７】
外部より、ミラーメモリの部分的バックアップを指示する制御信号と、バックアップを行なうブロックを示す指定ブロック番号とがが、制御回路４５に入力される（ステップＳ１５０１）。
【０１６８】
制御回路４５は、上記制御信号を受けて、第２書込み制御レジスタ４１の先頭ビットの値を「１」にするとともに、後続するビットの値を指定ブロック番号にする（ステップＳ１５０２）。
【０１６９】
制御回路４５は、第２書込み制御レジスタ４１の先頭ビットの値が「１」のときに、後続するビットで表わされる指定ブロック番号のワークメモリ４７内のブロックの有効性フラグと更新フラグを調べる（ステップＳ１５０３）。
【０１７０】
制御回路４５は、有効性フラグが「１」で、かつ更新フラグが「１」のときには、ワークメモリ４７内の指定ブロック番号のブロックに対応するフラッシュメモリ５６内のブロックのすべてのデータを消去する（ステップＳ１５０４）。
【０１７１】
制御回路４５は、ワークメモリ４７内の指定ブロック番号のブロックのすべてのデータを、フラッシュメモリ５６内の対応するブロックに出力させる（ステップＳ１５０５）。
【０１７２】
制御回路４５は、フラッシュメモリ５６のブロックの有効性フラグを「１」に設定する（ステップＳ１５０６）。
【０１７３】
以上のように、本実施の形態に係わる半導体記憶装置では、制御回路４５は、ミラーメモリの設定指示を示す制御信号を受けると、フラッシュメモリ５６内のブロックのうち、所定のブロックのすべてのデータをワークメモリ４７へ出力させ、ワークメモリ４７からフラッシュメモリ５６へのデータの出力を禁止する。
【０１７４】
制御回路４５は、読出し指示を示す制御信号を受けると、ワークメモリ４７内のデコードされたアドレスのデータを、読出しデータとして入出力バッファ１１に出力させるので、データを高速に読み出すことができる。
【０１７５】
制御回路４５は、書込み指示を示す制御信号を受けると、書込みデータを、ワークメモリ４７内のデコードされたアドレスに応じた位置に出力させるので、データを高速に書込みことができる。
【０１７６】
また、本実施の形態に係わる半導体記憶装置では、制御回路４５は、ワークメモリのフラッシュメモリへのバックアップを指示する制御信号を受けると、ワークメモリ４７内のブロックのうち、更新されたデータを含むブロックのみ、そのブロック内のデータをフラッシュメモリ５６内の対応するブロックに出力させるので、更新されたデータを含まないブロックのデータをフラッシュメモリへ出力する無駄を防止できる。
【０１７７】
（変形例）
本発明は、上記実施の形態に限定されるものではなく、以下の変形例も当然ながら包含する。
【０１７８】
（１）  不揮発性メモリ
本発明の実施形態におけるフラッシュメモリの代わりに、その他の電子的書換え可能な不揮発性メモリとしてもよい。
【０１７９】
（２）  書込み動作フラグ
第１の実施形態において、制御回路１５は、書込みを指示する制御信号を受けた後、更新ブロックの番号をブロック番号レジスタ１８に書込みを行なってから、ステップＳ３０３において、書込み動作フラグを「１」に設定したが、これに限定するものではない。制御回路１５は、書込みを指示する制御信号を受けた後、更新ブロックの番号をブロック番号レジスタ１８に書込みを行なうまでの任意の時点で書込み動作フラグを「１」に設定するものとしてもよい。
【０１８０】
（３）  フラッシュメモリのブロックの有効性フラグ
第２および第５の実施形態において、フラッシュメモリのブロックの有効性フラグを２ビットの値として、１ビット目で、データが書込まれているブロックか否かを識別し、２ビット目で、データが消去可能か否かを識別するものとしてもよい。
【０１８１】
（４）  ライトバッファ
第３の実施形態では、半導体記憶装置は、複数個のライトバッファ２７ａ〜ｃを含み、各ライトバッファは、１つのブロックのデータを記憶するものとしたが、これに限定するものではない。たとえば、１つのライトバッファが、１個または複数個のブロックのデータを記憶するものとしてもよい。
【０１８２】
（５）  ライトバッファから書込みデータを出力させるタイミング
第３の実施形態では、各ライトバッファからワークメモリへ書込みデータを出力する時点までに、外部からの書込みデータがそのライトバッファに取込まれることが保証されているものとした。
【０１８３】
各ライトバッファからワークメモリへ書込みデータを出力する時点までに、外部からの書込みデータがそのライトバッファに取込まれることが保証されていない場合には、次のような制御を行なうことができる。
【０１８４】
すなわち、書込み制御信号がアサートの期間は、外部から書込みデータが入力されている状態を示し、書込み制御信号がネゲートの期間は、外部から書込みデータが入力されていない状態を示すようにすれば、制御回路は、あるライトバッファの末端にまで書込みデータが格納されていないときには、書込み制御信号がネゲートになった後に、そのライトバッファからワークメモリへ書込みデータを出力させるようにすることができる。
【０１８５】
また、書込みデータの入力を開始するときに、外部から制御回路内の所定のレジスタのビットを１に設定し、書込みデータの入力を終了したときには、外部から所定のレジスタのビットを０にすることにすれば、制御回路は、あるライトバッファの末端にまで書込みデータが格納されていないときには、所定のレジスタのビットが０になった後に、そのライトバッファからワークメモリへ書込みデータを出力させるようにすることができる。
【０１８６】
あるいは、入力される書込みデータの個数が固定値のときには、制御回路は、あるライトバッファの末端にまで書込みデータが格納されていないときには、すべてのライトバッファに取込まれた書込みデータの総数がこの固定値になった後に、そのライトバッファからワークメモリへ書込みデータを出力させるようにすることができる。
【０１８７】
（６）  ワークメモリ
第３の実施形態では、ワークメモリは、フラッシュメモリ１０の１つのブロックのデータを記憶する容量を有するものとしたが、これに限定するものではない。たとえば、ワークメモリが、ライトバッファ２７ａ〜ｃに対応する第１〜第３の３個のブロック分の容量を備えるものとしてもよい。
【０１８８】
この場合には、ライトバッファ２７ａ内の書込みデータは、ワークメモリ内の第１ブロックに出力され、ライトバッファ２７ｂ内の書込みデータは、ワークメモリ内の第２ブロックに出力され、ライトバッファ２７ｃ内の書込みデータは、ワークメモリの第３ブロックに出力されるものとすることができる。
【０１８９】
第３の実施形態では、１つのブロックについて、Ｓ６０３〜Ｓ６０７の処理を連続して行った後、次のブロックについて、同様にＳ６０３〜Ｓ６０７の処理を連続して行ったのに対して、ワークメモリが３つのブロックを有する場合には、各ステップの処理を３つのブロックについて連続して行なった後、次のステップの処理を３つのブロックについて連続して行なうようにすることができる。
【０１９０】
第３の実施形態とこの変形例では、各処理を実行する順序においては相違するが、各ブロックについて、Ｓ６０３の処理と、Ｓ６０４の処理と、Ｓ６０５の処理と、Ｓ６０６の処理と、Ｓ６０７の処理とを行なうという点においては、同一である。
【０１９１】
（７）  ワークメモリの用途
第４および第５の実施形態では、ワークメモリをミラーメモリとして使用する例について説明したが、これに限定するものではない。ワークメモリを作業用のメモリや別のメモリとして使用するものとしてもよい。
【０１９２】
第５の実施形態において、ワークメモリを別のメモリとして使用した場合には、２倍の容量のメモリとなる。
【０１９３】
また、第５の実施形態において、ワークメモリを作業用のメモリとして使用した場合には、ワークメモリ内のブロックに対して移動やコピーなどを行なうことにより、外部メモリを使用せずにブロックに対する操作が可能となる。
【０１９４】
（８）  ワークメモリの容量
第４の実施形態において、ワークメモリは、１つのブロックを含むものとしたが、これに限定するものではなく、ワークメモリは、２以上の任意の数のブロックを含むものとしてもよい。
【０１９５】
（９）  ２ポートＲＡＭを用いたワークメモリ
第１〜第５の実施形態において、ワークメモリとして２ポートＲＡＭを用いることにより、ワークメモリへのデータの入力と、ワークメモリからのデータの出力を同時に行なうことができる。
【０１９６】
（１０）  入出力バッファ
第１〜第４の実施形態において、外部からの書込みデータを一旦入出力バッファに取込むものとしたが、これに限定するものではなく、外部からの書込みデータを直接ライトバッファに取込むものとしてもよい。
【０１９７】
（１１）  ライトバッファへのデータの取込みと、フラッシュメモリからワークメモリへのデータの出力の同時実行
第２〜第４の実施形態においても、第１の実施形態と同様に、制御回路が、書込み指示を示す制御信号を受けると、入出力バッファ１１内の書込みデータをライトバッファに出力させるのと同時に、デコードされたアドレスのデータを含むフラッシュメモリのブロックを更新ブロックとして特定し、更新ブロック内のすべてのデータをワークメモリへ出力させるものとしてもよい。
【０１９８】
（１２）  高速バス１６
本発明の実施形態では、フラッシュメモリ１０と、ワークメモリ１３と、入出力バッファ１１との間は、それぞれ高速バス１６（１２８〜２５６ビット幅）で接続し、ライトバッファ１２とワークメモリ１３との間は、高速バス１６（１２８〜２５６ビット幅）で接続するものとしたが、これに限定するものではない。ライトバッファ１２とワークメモリ１３との間は、フラッシュメモリ１０とワークメモリ１３との間を接続するバスよりも、低速なバスで接続するものとしてもよい。同様に、入出力バッファ１１と、ワークメモリ１３およびフラッシュメモリ１０との間は、フラッシュメモリ１０とワークメモリ１３との間を接続するバスよりも、低速なバスで接続するものとしてもよい。
【０１９９】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【０２００】
【図１】本発明の第１の実施の形態に係わる半導体記憶装置の構成を示す図である。
【図２】書込み処理の動作手順を示すフローチャートである。
【図３】読出し処理の動作手順を示すフローチャートである。
【図４】本発明の第２の実施の形態に係わる半導体記憶装置の構成を示す図である。
【図５】書込み処理の動作手順を示すフローチャートである。
【図６】本発明の第３の実施の形態に係わる半導体記憶装置の構成を示す図である。
【図７】書込み処理の動作手順を示すフローチャートである。
【図８】本発明の第４の実施の形態に係わる半導体記憶装置を示す図である。
【図９】ミラーメモリ設定処理の動作手順を示すフローチャートである。
【図１０】書込み処理の動作手順を示すフローチャートである。
【図１１】バックアップ処理の動作手順を示すフローチャートである。
【図１２】本発明の第５の実施の形態に係わる半導体記憶装置の構成を示す図である。
【図１３】ミラーメモリ設定処理の動作手順を示すフローチャートである。
【図１４】読出し処理の動作手順を示すフローチャートである。
【図１５】書込み処理の動作手順を示すフローチャートである。
【図１６】ミラーメモリ部分的再設定処理の動作手順を示すフローチャートである。
【図１７】バックアップ処理の動作手順を示すフローチャートである。
【図１８】部分的バックアップ処理の動作手順を示すフローチャートである。
【符号の説明】
【０２０１】
１０，５６  フラッシュメモリ、１１  入出力バッファ、１２  ライトバッファ、１３，４７  ワークメモリ、１４  デコーダ、１５、５５  制御回路、１６  高速バス、１７  書込み動作フラグ格納部、１８  ブロック番号レジスタ、２０  データバス、２１  アドレスバス、２２  制御信号バス、１５，２５，３５，４５，５５  制御回路、２６  ワークメモリ更新レジスタ、３６  書込み制御レジスタ、３７  ワークメモリクリアレジスタ、３８  読出し完了フラグ格納部、４１  第２書込み制御レジスタ、４２  第２ワークメモリ設定レジスタ、４３  第１書込み制御レジスタ、４６  第１ワークメモリ設定レジスタ、５７  有効性フラグ格納部、３０，４０，５０，１００，２００  半導体記憶装置。
【図１】
2008181670.tif 000003
【図２】
2008181670.tif 000004
【図３】
2008181670.tif 000005
【図４】
2008181670.tif 000006
【図５】
2008181670.tif 000007
【図６】
2008181670.tif 000008
【図７】
2008181670.tif 000009
【図８】
2008181670.tif 000010
【図９】
2008181670.tif 000011
【図１０】
2008181670.tif 000012
【図１１】
2008181670.tif 000013
【図１２】
2008181670.tif 000014
【図１３】
2008181670.tif 000015
【図１４】
2008181670.tif 000016
【図１５】
2008181670.tif 000017
【図１６】
2008181670.tif 000018
【図１７】
2008181670.tif 000019
【図１８】
2008181670.tif 000020