以下、本発明の実施の形態について、図面を用いて説明する。
<第1の実施形態>
本実施の形態では、書込みデータのライトバッファへの取込みと並行して、フラッシュメモリ内のブロックのデータをワークメモリへ出力させる半導体記憶装置に関する。
(構成)
図1は、本実施の形態に係わる半導体記憶装置の構成を示す。同図を参照して、この半導体記憶装置100は、フラッシュメモリ10と、入出力バッファ11と、ライトバッファ12と、ワークメモリ13と、デコーダ14と、制御回路15と、データバス20と、アドレスバス21と、制御信号バス22と、高速バス16とを有する。
フラッシュメモリ10は、複数個のブロックで構成される。1個のブロックの大きさは、32Kワード(1ワードは32ビット)であり、m個のブロックにより、1つのバンクが構成される。
データバス20は、外部と入出力バッファ11との間で、書込みデータおよび読出しデータが流れるバスである。データバス20のバス幅は、たとえば32ビット幅である。
制御信号バス22は、外部と制御回路15との間で制御信号が流れるバスである。
高速バス16は、フラッシュメモリ10と、ワークメモリ13と、入出力バッファ11とをそれぞれ接続し、ライトバッファ12とワークメモリ13とを接続するバスである。高速バス16のバス幅は、たとえば128〜256ビット幅である。
入出力バッファ11は、データバス20から入力されるデータ(書込みデータ)、またはデータバス20へ出力されるデータ(読出しデータ)を一時的に記憶する。書込みデータおよび読出しデータの大きさは、たとえば32ビットである。
ライトバッファ12は、データバス20から入力されて入出力バッファ11に記憶されているデータ、つまり、書込みデータを記憶する。ライトバッファ12は、1つまたは複数の書込みデータを記憶する容量を有する。
入出力バッファ11およびライトバッファ12は、FIFO(First In First Out)形式でデータの入出力が行なわれる。
ワークメモリ13は、フラッシュメモリ10の1つのブロックのデータを記憶する容量を有する。ワークメモリ13は、フラッシュメモリ10から送られるブロックのデータを記憶する。ワークメモリ13は、ライトバッファ12から送られたデータを、上記記憶しているブロック内のデコードされたアドレスに応じた位置で記憶する。
デコーダ14は、アドレスバス21から入力されるアドレスをデコードする。
制御回路15は、書込み動作フラグ格納部17とブロック番号レジスタ18とを備える。
書込み動作フラグ格納部17は、外部から参照可能な書込み動作フラグを格納する。書込み動作フラグの値が「1」のときには、書込み動作が行なわれていることを示し、書込み動作フラグの値が「0」のときには、書込み動作が行なわれていないことを示す。
ブロック番号レジスタ18は、ワークメモリ13に格納されているブロックの番号を記憶する。
ここで、レジスタに格納されている値は、外部から参照および設定することが可能であり、フラグの値は、外部からは参照のみが可能であるものとする。これは、以下の実施形態でも同様であるものとする。
制御回路15は、制御信号バス22から入力される制御データに基づいて制御を行なう。
つまり、制御回路15は、書込み時に以下の制御を行なう。制御回路15は、書込み指示を示す制御信号を受けて、入出力バッファ11内のデータを、ライトバッファ12に出力させる。制御回路15は、このライトバッファへのデータの出力と並行して、デコーダ14によりデコードされたアドレスのデータを含むフラッシュメモリ10内のブロック(更新ブロック)を特定し、そのブロックのすべてのデータをフラッシュメモリ10から高速バス16を介して、ワークメモリ13へ取り出し、その後、この更新ブロックの番号をブロック番号レジスタ18に書込む。さらに、制御回路15は、制御回路15内の書込み動作フラグを「1」に設定し、その後、ライトバッファ12内のデータを、ワークメモリ13内のデコードされたアドレスに応じた位置に出力させ、フラッシュメモリ10内の更新ブロックのすべてのデータを消去する。そして、制御回路15は、ワークメモリ13内のすべてのデータを、高速バス16を介して、フラッシュメモリ10の更新ブロックに出力させる。制御回路15は、データの書込み終了後に、書込み動作フラグを「0」に設定する。
制御回路15は、読出し時において、以下の制御を行なう。制御回路15は、読出し指示を示す制御信号を受けて、デコーダ14によりデコードされたアドレスのデータを含むブロックを特定し、そのブロックのブロック番号と、ブロック番号レジスタ18に格納されているブロック番号とを比較する。制御回路15は、比較結果が一致であれば、ワークメモリ13内のデータを読出しデータとして、高速バス16を介して入出力バッファ11に出力させる。制御回路15は、比較結果が不一致であれば、デコードされたアドレスで特定されるフラッシュメモリ10内のブロックのデータを読出しデータとして、高速バス16を介して、入出力バッファ11へ出力させる。
(書込み処理の動作)
次に、この半導体記憶装置100の書込み処理の動作について説明する。図2は、書込み処理の動作手順を示すフローチャートである。
まず、外部より、書込み指示を示す制御信号と、書込みデータと、アドレスとが、それぞれ、制御回路15、入出力バッファ11、デコーダ14に入力される(ステップS301)。
制御回路15は、上記制御信号を受けて、入出力バッファ11内の書込みデータを、ライトバッファ12に出力させる。また、これと同時に、制御回路15は、デコーダ14でデコードされたアドレスのデータを含むフラッシュメモリ10内のブロックを更新ブロックとして特定し、更新ブロック内のすべてのデータを高速バス16を介してワークメモリ13へ出力させる。制御回路15は、この更新ブロックの番号をブロック番号レジスタ18に書込む(ステップS302)。
次に、制御回路15は、書込み動作フラグを「1」に設定し(ステップS303)、その後、ライトバッファ12内の書込みデータを、ワークメモリ13内のデコードされたアドレスに応じた位置に出力させる(ステップS304)。
制御回路15は、フラッシュメモリ10内の更新ブロック内のすべてのデータを消去する(ステップS305)。
次に、制御回路15は、ワークメモリ13に記憶されているすべてのデータを、フラッシュメモリ10の更新ブロックに出力させる(ステップS306)。
次に、制御回路15は、書込み動作フラグを「0」に設定する(ステップS307)。
(読出し処理の動作)
次に、この半導体記憶装置100の読出し処理の動作について説明する。図3は、読出し処理の動作手順を示すフローチャートである。
まず、外部より、読出し指示を示す制御信号と、アドレスとが、それぞれ、制御回路15、デコーダ14に入力される(ステップS401)。
制御回路15は、上記制御信号を受けて、デコーダ14でデコードされたアドレスのデータを含むブロックを特定し、そのブロックのブロック番号と、ブロック番号レジスタ18に格納されているブロックの番号とを比較する(ステップS402)。
制御回路15は、比較結果が一致であれば、ワークメモリ13に記憶されているデコードされたアドレスのデータを読出しデータとして、高速バス16を介して入出力バッファ11へ出力させる(ステップS403)。
制御回路15は、比較結果が不一致であれば、フラッシュメモリ10内のデコードされたアドレスのデータを、読出しデータとして、高速バス16を介して、入出力バッファ11へ出力させる(ステップS404)。
入出力バッファ11内の読出しデータは、データバス20を介して外部へ出力される(ステップS405)。
以上のように、本実施の形態に係わる半導体記憶装置では、制御回路15は、書込み指示を示す制御信号を受けると、入出力バッファ11内の書込みデータをライトバッファ12に出力させるのと同時に、デコードされたアドレスのデータを含むフラッシュメモリ10内のブロックを更新ブロックとして特定し、更新ブロック内のすべてのデータを高速バス16を介してワークメモリ13へ出力させるので、データの書込みを高速に行なうことができる。
また、制御回路15は、この更新ブロックの番号をブロック番号レジスタ18に書込み、制御回路15は、読出し指示を示す制御信号を受けて、デコードされたアドレスのデータを含むブロックを特定し、そのブロックのブロック番号とブロック番号レジスタ18に格納されているブロック番号とが一致していれば、ワークメモリ13内のデータを読出しデータとして、高速バス16を介して入出力バッファ11に出力させるので、データの読出しを高速に行なうことができる。
また、制御回路15は、書込みを指示する制御信号を受けると、ワークメモリ13に記憶されているすべてのデータがフラッシュメモリ10の更新ブロックに出力されるまで、書込み動作フラグの値を「1」に設定するので、外部では、この書込み動作フラグを参照して書込み動作フラグの値が「1」のときには、書込みを行なわないようにすることができる。
<第2の実施形態>
本実施の形態は、データの書込みに際して、フラッシュメモリ内のブロックのうち、有効なデータを含むブロックのみワークメモリへ出力させる半導体記憶装置に関する。
図4は、本実施の形態に係わる半導体記憶装置の構成を示す。同図の半導体記憶装置50の構成要素のうち、第1の実施形態に係わる半導体記憶装置100の構成要素と同一のものについては、同一の符号を付す。以下、第1の実施形態に係わる半導体記憶装置100と相違する点について説明する。
フラッシュメモリ56は、複数個のブロックを含み、有効性フラグ格納部57を含む。有効性フラグ格納部57は、ブロックごとに有効性フラグを格納する。有効性フラグの値が「1」のときには、対応するブロック内のデータが有効であることを示し、有効性フラグの値が「0」のときには、対応するブロック内のデータがすべて無効であることを示す。ここで、データが有効であるとは、そのデータが将来、使用される可能性のあるデータであることを意味し、データが無効であるとは、そのデータが将来、使用されることのないデータであることを意味し、上書きされてもよいことを意味する。フラッシュメモリ56のどのブロックにも未だ何も書込まれていないときには、すべてのブロックの有効性フラグは、「0」に設定されている。
制御回路55は、フラッシュメモリ56内のブロックにデータを書込んだときに、そのブロックの有効性フラグを「1」に設定する。
制御回路55は、フラッシュメモリ56内の更新ブロックの有効性フラグの値が「1」のときには、第1の実施形態と同様に書込みデータの書込みを行なう。
一方、制御回路55は、フラッシュメモリ56内の更新ブロックの有効性フラグの値が「0」のときには、フラッシュメモリ56内の更新ブロック内のすべてのデータを高速バス16を介してワークメモリ13へ出力させる処理を行なわず、フラッシュメモリ56内の更新ブロック内のすべてのデータを消去する処理を行なわない。
(書込み処理の動作)
次に、この半導体記憶装置50の書込み処理の動作について説明する。図5は、書込み処理の動作手順を示すフローチャートである。
まず、外部より、書込み指示を示す制御信号と、書込みデータと、アドレスとが、それぞれ、制御回路55、入出力バッファ11、デコーダ14に入力される(ステップS501)。
制御回路55は、上記制御信号を受けて、入出力バッファ11内の上記書込みデータを、ライトバッファ12に出力させる(ステップS502)。
制御回路55は、デコーダ14でデコードされたアドレスのデータを含むブロックを更新ブロックとして特定し、その更新ブロックの有効性フラグを調べる(ステップS503)。
制御回路55は、有効性フラグの値が「1」であれば、更新ブロック内のすべてのデータをフラッシュメモリ56から高速バス16を介して、ワークメモリ13へ出力させる(ステップS504)。
制御回路55は、更新ブロックの番号をブロック番号レジスタ18に書込む(ステップS505)。
次に、制御回路55は、書込み動作フラグを「1」に設定し(ステップS506)、その後、ライトバッファ12内の書込みデータを、ワークメモリ13内のデコードされたアドレスに応じた位置に出力させる(ステップS507)。
制御回路55は、フラッシュメモリ56内の更新ブロック内のすべてのデータを消去する(ステップS508)。
次に、制御回路55は、ワークメモリ13に記憶されているすべてのデータを、フラッシュメモリ56の更新ブロックに出力させる(ステップS509)。
次に、制御回路55は、書込み動作フラグを「0」に設定する(ステップS510)。
一方、制御回路55は、有効性フラグの値が「0」であれば、更新ブロックの番号をブロック番号レジスタ18に書込む(ステップS511)。
次に、制御回路55は、書込み動作フラグを「1」に設定し(ステップS512)、その後、ライトバッファ12内の書込みデータを、ワークメモリ13内のデコードされたアドレスに応じた位置に出力させる(ステップS513)。
次に、制御回路55は、ワークメモリ13に記憶されているすべてのデータを、フラッシュメモリ56の更新ブロックに出力させる(ステップS514)。
次に、制御回路55は、書込み動作フラグを「0」に設定する(ステップS515)。
次に、制御回路55は、更新ブロックに対応する有効性フラグを「1」に設定する(ステップS516)。
(読出し処理の動作)
この半導体記憶装置50の読出し処理の動作は、第1の実施形態に係わる半導体記憶装置100の読出し処理の動作と同様なので、ここでは、説明は繰返さない。
以上のように、本実施の形態に係わる半導体記憶装置では、データの書込みに際して、フラッシュメモリ内のブロックのうち、有効なデータを含むブロックのみがワークメモリへ出力させるので、将来使用されることのない無効なデータのみからなるブロックはワークメモリへ出力されないので、データの書込みの高速化を図ることができる。
<第3の実施形態>
本実施の形態は、1個以上のブロックのデータを記憶するライトバッファを備えた半導体記憶装置に関する。
図6は、本実施の形態に係わる半導体記憶装置の構成を示す。同図の半導体記憶装置200の構成要素のうち、第1の実施形態に係わる半導体記憶装置100の構成要素と同一のものについては、同一の符号を付す。以下、第1の実施形態に係わる半導体記憶装置100と相違する点について説明する。
半導体記憶装置200は、複数個のライトバッファ27a〜cを含む。各ライトバッファは、1つのブロックのデータを記憶する容量を有する。ライトバッファ27a〜cは、順序付けられている。ライトバッファ27aは、第1番目、ライトバッファ27bは、第2番目、ライトバッファ27cは、第3番目に順序付けられる。
制御回路25は、第1の実施形態と同様のブロック番号レジスタ18を含む。
制御回路25は、入出力バッファ11に入力される複数個の書込みデータを、次のようにして、ライトバッファ27a〜cに出力させる。
制御回路25は、まず、入力バッファ11に入力された書込みデータを第1番目のライトバッファ27aに出力させる。ライトバッファ27a内の先頭の書込みデータの格納位置は、アドレスに応じた位置とする。制御回路25は、ライトバッファ27aの末端の位置まで書込みデータが格納されたときには、書込みデータを第2番目のライトバッファ27bに出力させる。さらに、制御回路25は、ライトバッファ27bの末端まで書込みデータが格納されたときには、書込みデータを3番目のライトバッファ27cに出力させる。
制御回路25は、ライトバッファ27a〜cのうち、書込みデータが格納されているライトバッファであって、順序が先のライトバッファから順次、出力ライトバッファとして特定する。
制御回路25は、デコーダ14でデコードされたアドレスと、特定された出力ライトバッファの順序によって定まるフラッシュメモリ10内のブロックを更新ブロックとして特定する。すなわち、制御回路25は、出力ライトバッファが第1番目のライトバッファ27aのときには、デコードされたアドレスのデータを含むフラッシュメモリ10内のブロックを更新ブロックとして特定し、出力ライトバッファが2番目のライトバッファ27bのときには、デコードされたアドレスのデータを含むフラッシュメモリ10内のブロックに後続する1番目のブロックを更新ブロックとして特定し、出力ライトバッファが3番目のライトバッファ27cのときには、デコードされたアドレスのデータを含むフラッシュメモリ10内のブロックに後続する2番目のブロックを更新ブロックとして特定する。
制御回路25は、更新ブロックのすべてのデータを高速バス16を介してワークメモリ13へ出力させる。
制御回路25は、出力ライトバッファ内のすべてのデータをワークメモリ13に出力させる。ここで、出力ライトバッファからワークメモリ13へ書込みデータを出力する時点までに、外部からの書込みデータがその出力ライトバッファに取込まれることが保証されているものとする。
制御回路25は、フラッシュメモリ10内の更新ブロック内のすべてのデータを消去する。制御回路25は、ワークメモリ13に記憶されているすべてのデータを、フラッシュメモリ10の更新ブロックに出力させる。
(書込み処理の動作)
次に、この半導体記憶装置200の書込み処理の動作について説明する。図7は、書込み処理の動作手順を示すフローチャートである。
まず、外部より、書込み指示を示す制御信号と、アドレスと、複数個の書込みデータとが、それぞれ、制御回路25、デコーダ14、入出力バッファ11に入力される(ステップS601)。
制御回路25は、入出力バッファ11へ入力される書込みデータを、順序が先のライトバッファから順次、そのライトバッファへ出力させる(ステップS602)。
次に、制御回路25は、書込みデータが格納されているライトバッファであって、順序が最先のライトバッファを出力ライトバッファとして特定する。また、制御回路25は、デコーダ14でデコードされたアドレスと、特定された出力ライトバッファの順序によって定まるフラッシュメモリ10内のブロックを更新ブロックとして特定する(ステップS603)。
制御回路25は、更新ブロックのすべてのデータを高速バス16を介して、ワークメモリ13へ出力させる(ステップS604)。
制御回路25は、更新ブロックの番号をブロック番号レジスタ18に書込む(ステップS605)。
制御回路25は、出力ライトバッファ内のすべての書込みデータをワークメモリ13へ出力させる(ステップS606)。
制御回路25は、フラッシュメモリ10内の更新ブロック内のすべてのデータを消去する(ステップS607)。
次に、制御回路25は、ワークメモリ13に記憶されているすべてのデータを、フラッシュメモリ10の更新ブロックに出力させる(ステップS608)。
次に、制御回路25は、いずれかのライトバッファに書込みデータが格納されている場合には、書込み処理を続行し、いずれのライトバッファにも書込みデータが格納されていない場合には、書込み処理を中止する(ステップS609)。
(読出し処理の動作)
この半導体記憶装置200の読出し処理の動作は、第1の実施形態に係わる半導体記憶装置100の読出し処理の動作と同様なので、ここでは、説明は繰返さない。
以上のように、本実施の形態に係わる半導体記憶装置では、ライトバッファが1個以上のブロックのデータを記憶し、制御回路が順次、ライトバッファ内の各ブロックのデータをフラッシュメモリの対応するブロックへ出力させるので、外部から連続してデータの書込みを行なうことができる。
<第4の実施形態>
本実施の形態は、ワークメモリをミラーメモリとして利用する半導体記憶装置に関する。ここで、ミラーメモリとは、外部からのフラッシュメモリへのデータの書込みおよび読込みに対して、フラッシュメモリに代わって外部からのデータ書込みおよび読込みに応じるメモリを意味する。
(構成)
図8は、本実施の形態に係わる半導体記憶装置の構成を示す。同図の半導体記憶装置30の構成要素のうち、第1の実施形態に係わる半導体記憶装置100の構成要素と同一のものについては、同一の符号を付す。以下、第1の実施形態に係わる半導体記憶装置100と相違する点について説明する。
制御回路35は、書込み制御レジスタ36と、ワークメモリクリアレジスタ37と、読出し完了フラグ格納部38とを含む。
書込み制御レジスタ36の値が「1」のときには、ワークメモリレジスタ37の値が「0」であれば、ワークメモリ13内のデータのフラッシュメモリ10への出力が許可されている状態を示す。
書込み制御レジスタ36の値が「0」のときには、ワークメモリ13内のデータのフラッシュメモリ10への出力が禁止されている状態を示す。
ワークメモリクリアレジスタ37の値が「1」のときには、ワークメモリ13内のすべてのデータが「0」に初期化され、書込み制御レジスタ36の値が「1」であっても、ワークメモリ13内のデータのフラッシュメモリ10への出力が禁止されている状態を示す。
ワークメモリクリアレジスタ37の値が「0」のときには、書込み制御レジスタ36の値が「1」であれば、ワークメモリ内のデータのフラッシュメモリ10への出力が許可されている状態を示す。
読出し完了フラグ格納部38は、読出し完了フラグを格納する。読出し完了フラグの値が「1」のときには、ミラーメモリ設定が終了した状態、すなわち、フラッシュメモリ10のブロックのデータのワークメモリへの読出しが完了した状態を示す。読出し完了フラグの値が「0」のときには、ミラーメモリ設定が終了していない状態を示す。
制御回路35は、ミラーメモリ設定指示を示す制御信号が入力されると、デコードされたアドレスのデータを含むフラッシュメモリ10内のブロックを2重化ブロックとして特定し、この2重化ブロックのすべてのデータを高速バス16を介してワークメモリ13へ出力させる。そして、制御回路35は、読出し完了フラグを「1」に設定する。読出し完了フラグの値が「1」になった後に、外部より書込み指示を示す制御信号、または読出し指示を示す制御信号が入力される。制御回路35は、2重化ブロックの番号をブロック番号レジスタ18に書込み、書込み制御レジスタ36の値を「0」に設定する。書込み制御レジスタ36の値が「0」になると、ワークメモリ13からフラッシュメモリ10へのデータの出力が禁止される。
制御回路35は、書込み指示を示す制御信号が入力されると、入出力バッファ11内のデータを、ライトバッファ12に出力させる。そして、制御回路35は、デコードされたアドレスのデータを含むブロックのブロック番号と、ブロック番号レジスタ18に格納されているブロック番号とを比較し、比較結果が一致しているときのみ、ライトバッファ12内の書込みデータを、ワークメモリ13内のデコードされたアドレスに応じた位置に出力させる。
制御回路35は、読出し指示を示す制御信号が入力されると、第1の実施形態と同様の処理を行なう。すなわち、制御回路35は、デコーダ14によりデコードされたアドレスのデータを含むブロックを特定し、そのブロックのブロック番号と、ブロック番号レジスタ18に格納されているブロック番号とを比較する。制御回路35は、比較結果が一致であれば、ワークメモリ13内のデータを読出しデータとして、高速バス16を介して入出力バッファ11に出力させる。制御回路35は、比較結果が不一致であれば、デコードされたアドレスで特定されるフラッシュメモリ10内のブロックのデータを読出しデータとして、高速バス16を介して、入出力バッファ11へ出力させる。
制御回路35は、ミラーメモリのクリアを指示する制御信号が入力されると、ワークメモリクリアレジスタ37の値を「1」に設定する。制御回路35は、ワークメモリ内のデータを消去する。
制御回路35は、バックアップを指示する制御信号が入力されると、書込み制御レジスタ36の値を「1」に設定する。制御回路35は、書込み制御レジスタ36の値が「1」に設定され、かつワークメモリクリアレジスタ37の値が「0」に設定されている場合に、フラッシュメモリ10内の2重化ブロックのデータを消去し、ワークメモリ内のすべてのデータを高速バス16を介してフラッシュメモリ10の2重化ブロックに出力させる。
(ミラーメモリ設定処理の動作)
次に、この半導体記憶装置30のミラーメモリ設定処理の動作について説明する。図9は、ミラーメモリ設定処理の動作手順を示すフローチャートである。
まず、外部より、ミラーメモリ設定指示を示す制御信号と、アドレスとが、それぞれ、制御回路35、デコーダ14に入力される(ステップ701)。
次に、制御回路35は、上記制御信号を受けて、デコーダ14でデコードされたアドレスのデータを含むフラッシュメモリ10内のブロックを2重化ブロックとして特定し、この2重化ブロックのすべてのデータを高速バス16を介して、ワークメモリ13へ出力させる(ステップS702)。
制御回路35は、読出し完了フラグを「1」に設定する(ステップS703)。
制御回路35は、この2重化ブロックの番号をブロック番号レジスタ18に書込む(ステップS704)。
制御回路35は、書込み制御レジスタ36の値を「0」に設定する(ステップS705)。
(読出し処理の動作)
読出し完了フラグが「1」に設定された後、外部より、読出し指示を示す制御信号と、アドレスとが、それぞれ、制御回路35、デコーダ14に入力される。以下の読出し動作は、第1〜第3の実施形態と同様なので、説明は繰返さない。
(書込み処理の動作)
次に、この半導体記憶装置30の書込み処理の動作について説明する。図10は、書込み処理の動作手順を示すフローチャートである。
読出し完了フラグが「1」に設定された後、外部より、書込み指示を示す制御信号と、書込みデータと、アドレスとが、それぞれ、制御回路35、入出力バッファ11、デコーダ14に入力される(ステップS801)。
制御回路35は、上記制御信号を受けて、入出力バッファ11内のデータを、ライトバッファ12に出力させる(ステップS802)。
制御回路35は、上記制御信号を受けて、デコーダ14でデコードされたアドレスのデータを含むブロックのブロック番号と、ブロック番号レジスタ18に格納されているブロック番号とを比較する(ステップS803)。
制御回路35は、比較結果が一致しているときのみ、ライトバッファ12内の書込みデータを、ワークメモリ13内のデコードされたアドレスに応じた位置に出力させる(ステップS804)。
(バックアップ処理の動作)
次に、この半導体記憶装置30のバックアップ処理の動作について説明する。図11は、バックアップ処理の動作手順を示すフローチャートである。
外部より、ミラーメモリのクリアを指示する制御信号が、制御回路35に入力されると(ステップS901)、制御回路35は、ワークメモリクリアレジスタ37の値を「1」に設定する(ステップS902)。
制御回路35は、ワークメモリ内のデータを消去する(ステップS903)。
外部より、ワークメモリのフラッシュメモリへのバックアップを指示する制御信号が制御回路35に入力される(ステップS904)。
制御回路35は、上記制御信号を受けて、書込み制御レジスタ36の値を「1」に設定する(ステップS905)。
制御回路35は、書込み制御レジスタ36の値と、ワークメモリクリアレジスタ37の値を調べる(ステップS906)。
制御回路35は、書込み制御レジスタ36の値が「1」に設定され、かつワークメモリクリアレジスタ37の値が「0」に設定されている場合に、フラッシュメモリ10内の2重化ブロックのデータを消去する(ステップS907)。
そして、制御回路35は、ワークメモリ内のすべてのデータを高速バス16を介してフラッシュメモリ10の2重化ブロックに出力させる(ステップS908)。
以上のように、本実施の形態に係わる半導体記憶装置によれば、制御回路35は、ミラーメモリ設定指示を示す制御信号が入力されると、2重化ブロックのすべてのデータをワークメモリ13へ出力させる。制御回路35は、2重化ブロックの番号をブロック番号レジスタ18に書込み、ワークメモリ13からフラッシュメモリ10へのデータの出力が禁止する。
制御回路35は、書込み指示を示す制御信号が入力されると、デコードされたアドレスのデータを含むブロックのブロック番号と、ブロック番号レジスタ18に格納されているブロック番号とを比較し、比較結果が一致しているときのみ、ライトバッファ12内の書込みデータをワークメモリ13に出力させる。ワークメモリからフラッシュメモリへのデータの出力が常には行なわれることがないので、データの書込みを高速に行なうことができる。
制御回路35は、読出し指示を示す制御信号が入力されると、第1の実施形態と同様の処理を行なうので、データの読出しを高速に行なうことができる。
また、本実施の形態に係わる半導体記憶装置では、制御回路35は、バックアップを指示する制御信号が入力されると、ワークメモリ内のすべてのデータをフラッシュメモリ10の2重化ブロックに出力させるので、外部からのデータをフラッシュメモリへ書込むことができる。
<第5の実施形態>
本実施の形態では、フラッシュメモリ内のすべてのブロックと対応する複数個のブロックを含むワークメモリをミラーメモリとして利用する半導体記憶装置に関する。
(構成)
図12は、本実施の形態に係わる半導体記憶装置の構成を示す。同図の半導体記憶装置40の構成要素のうち、第1の実施形態に係わる半導体記憶装置100の構成要素と同一のものについては、同一の符号を付す。以下、第1の実施形態に係わる半導体記憶装置100と相違する点について説明する。
フラッシュメモリ56は、第2の実施形態と同様に、複数個のブロックを含み、有効性フラグ格納部57を含む。
有効性フラグ格納部57は、ブロックごとに有効性フラグを格納する。有効性フラグの値が「1」のときには、対応するブロック内のデータが有効であることを示し、有効性フラグの値が「0」のときには、対応するブロック内のデータが無効であることを示す。フラッシュメモリ56のどのブロックにも未だ何も書込まれていないときには、すべてのブロックの有効性フラグは、「0」に設定されている。
ワークメモリ47は、フラッシュメモリ56内のブロックと同数のブロックを含み、各ブロックは、それぞれフラッシュメモリ56内に対応するブロックを有する。ワークメモリ47は、有効性フラグ格納部48と、更新フラグ格納部49を備える。
有効性フラグ格納部48は、ブロックごとに有効性フラグを格納する。有効性フラグの値が「1」のときには、フラッシュメモリ56の対応するブロックから、ワークメモリ47内の対応するブロックにデータが出力されたことを示す。有効性フラグの値が「0」のときには、フラッシュメモリ56の対応するブロックから、ワークメモリ47内の対応するブロックにデータが出力されていないことを示す。
更新フラグ格納部49は、ブロックごとに更新フラグを格納する。更新フラグの値が「1」のときには、外部からの書込みデータが対応するブロックに出力されたことを示し、更新フラグの値が「0」のときには、外部からの書込みデータが対応するブロックに出力されていないことを示す。
制御回路45は、第4の実施形態と同様の読出し完了フラグ格納部38と、第1書込み制御レジスタ43と、第2書込み制御レジスタ41と、第1ワークメモリ設定レジスタ46と、第2ワークメモリ設定レジスタ42とを含む。
第1書込み制御レジスタ43の値が「1」のときには、ワークメモリ47内のデータのフラッシュメモリ56への出力が許可されている状態を示す。第1書込み制御レジスタ43の値が「0」のときには、ワークメモリ47内のデータのフラッシュメモリ56への出力が禁止されている状態を示す。
第2書込み制御レジスタ41は、複数のビットを格納する。先頭ビットの値が「1」のときには、ワークメモリ47内のデータのフラッシュメモリ56への出力が許可されている状態を示す。そして、先頭ビットの値が「1」のときには、後続するビットの値が、バックアップを行なうように指示されたブロックのブロック番号を示す。先頭ビットの値が「0」のときには、ワークメモリ47内のデータのフラッシュメモリ56への出力が禁止されている状態を示す。
第1ワークメモリ設定レジスタ46の値が「1」のときには、ミラーメモリ設定指示を受けた状態を示す。第1ワークメモリ設定レジスタ46の値が「0」のときには、ミラーメモリ設定指示を受けていない状態を示す。
第2ワークメモリ設定レジスタ42は、複数のビットを格納する。先頭ビットの値が「1」のときには、ミラーメモリ設定指示を受けた状態を示す。そして、先頭ビットの値が「1」のときには、後続するビットの値は、ミラーメモリ設定を行なうように指示されたブロックのブロック番号を示す。先頭ビットの値が「0」のときには、ミラーメモリ設定指示を受けていない状態を示す。
制御回路45は、ミラーメモリ設定指示を示す制御信号を受けると、第1ワークメモリ設定レジスタ46の値を「1」に設定し、フラッシュメモリ56内のブロックのうち、有効性フラグが「1」のブロックを特定する。制御回路45は、特定したフラッシュメモリ56内のブロックのすべてのデータを高速バス16を介してワークメモリ47へ出力させる。その後、制御回路45は、フラッシュメモリ56からデータを受け取ったワークメモリ47内のブロックの有効性フラグを「1」に設定し、読出し完了フラグを「1」に設定する。その後、制御回路45は、第1書込み制御レジスタ43の値および第2書込み制御レジスタ41の先頭ビットの値を「0」に設定する。
制御回路45は、読出し指示を示す制御信号を受けると、ワークメモリ47内のデコーダ14でデコードされたアドレスのデータを、読出しデータとして入出力バッファ11に出力させる。
制御回路45は、書込み指示を示す制御信号を受けると、入出力バッファ11内の書込みデータを、ワークメモリ47内のデコーダ14でデコードされたアドレスに応じた位置に出力させる。その後、制御回路45は、ワークメモリ47内の書込みデータを受け取ったブロックの更新フラグを「1」に設定する。
制御回路45は、ミラーメモリの部分的再設定を指示する制御信号を受けると、第2ワークメモリ設定レジスタ42の先頭ビットの値を「1」にするとともに、後続するビットの値をその指定ブロック番号にする。制御回路45は、指定ブロック番号のフラッシュメモリ56内のブロックの有効性フラグの値が「1」のときには、フラッシュメモリ56内の指定ブロック番号のブロックのすべてのデータを高速バス16を介してワークメモリ47の対応するブロック出力させ、フラッシュメモリ56からデータを受け取ったワークメモリ47内のブロックの有効性フラグを「1」に設定し、読出し完了フラグの値を「1」に設定する。その後、制御回路45は、第1書込み制御レジスタ43の値および第2書込み制御レジスタ41の先頭ビットの値を「0」に設定する。
制御回路45は、ワークメモリ47のフラッシュメモリ56へのバックアップを指示する制御信号を受けると、第1書込み制御レジスタ43の値を「1」に設定し、ワークメモリ47内のブロックのうち、有効性フラグが「1」で、かつ更新フラグが「1」のブロックを特定する。制御回路45は、ワークメモリ47内の特定したブロックに対応するフラッシュメモリ56内のブロックのすべてのデータを消去し、ワークメモリ47内の特定したブロックのすべてのデータを、フラッシュメモリ56内の対応するブロックに出力させ、データを受け取ったフラッシュメモリ56内の対応するブロックの有効性フラグを「1」に設定する。
制御回路45は、部分的バックアップを指示する制御信号を受けて、第2書込み制御レジスタ41の先頭ビットの値を「1」にするとともに、後続するビットの値を指定ブロック番号にする。制御回路45は、後続するビットで表わされる指定ブロック番号のワークメモリ47内のブロックの有効性フラグの値が「1」で、かつ更新フラグの値が「1」のときには、ワークメモリ47内の指定ブロック番号のブロックに対応するフラッシュメモリ56内のブロックのすべてのデータを消去し、ワークメモリ47内の指定ブロック番号のブロックのすべてのデータを、フラッシュメモリ56内の対応するブロックに出力させる。その後、制御回路45は、フラッシュメモリ56のブロックの有効性フラグを「1」に設定する。
(ミラーメモリ設定処理の動作)
次に、この半導体記憶装置40のミラーメモリ設定処理の動作について説明する。図13は、ミラーメモリ設定処理の動作手順を示すフローチャートである。
まず、外部より、ミラーメモリ設定指示を示す制御信号が、制御回路45に入力される(ステップS1001)。
制御回路45は、上記制御信号を受けて、第1ワークメモリ設定レジスタ46の値を「1」に設定する(ステップS1002)。
制御回路45は、第1ワークメモリ設定レジスタ46の値が「1」に設定されている場合に、フラッシュメモリ56内のブロックのうち、有効性フラグが「1」のブロックを特定する(ステップS1003)
制御回路45は、特定したフラッシュメモリ56内のブロックのすべてのデータを高速バス16を介してワークメモリ47へ出力させる(ステップS1004)。
制御回路45は、フラッシュメモリ56からデータを受け取ったワークメモリ47内のブロックの有効性フラグを「1」に設定する(ステップS1005)。
制御回路45は、読出し完了フラグを「1」に設定する(ステップS1006)。
制御回路45は、第1書込み制御レジスタ43の値および第2書込み制御レジスタ41の先頭ビットの値を「0」に設定する(ステップS1007)。
(読出し処理の動作)
次に、この半導体記憶装置40の読出し処理の動作について説明する。図14は、読出し処理の動作手順を示すフローチャートである。
読出し完了フラグが「1」に設定された後、外部より、読出し指示を示す制御信号と、アドレスとが、それぞれ、制御回路45、デコーダ14に入力される(ステップS1101)。
制御回路45は、上記制御信号を受けて、ワークメモリ47内のデコーダ14でデコードされたアドレスのデータを、読出しデータとして入出力バッファ11に出力させる(ステップS1102)。
入出力バッファ11内の読出しデータは、データバス20を介して外部へ出力される(ステップS1103)。
(書込み処理の動作)
次に、この半導体記憶装置40の書込み処理の動作について説明する。図15は、書込み処理の動作手順を示すフローチャートである。
読出し完了フラグが「1」に設定された後、外部より、書込み指示を示す制御信号と、アドレスと、書込みデータとが、それぞれ、制御回路45、デコーダ14、入出力バッファ11に入力される(ステップS1201)。
制御回路45は、上記制御信号を受けて、入出力バッファ11内の書込みデータを、ワークメモリ47内のデコーダ14でデコードされたアドレスに応じた位置に出力させる(ステップS1202)。
制御回路45は、ワークメモリ47内の書込みデータを受け取ったブロックの更新フラグを「1」に設定する(ステップS1203)。
(ミラーメモリの部分的再設定処理の動作)
次に、この半導体記憶装置40のミラーメモリ部分的再設定処理の動作について説明する。図16は、ミラーメモリ部分的再設定処理の動作手順を示すフローチャートである。
まず、外部より、ミラーメモリ部分的再設定を指示する制御信号と、再設定を行なうブロックを示す指定ブロック番号とが、制御回路45に入力される(ステップ1301)。
制御回路45は、上記制御信号を受けて、第2ワークメモリ設定レジスタ42の先頭ビットの値を「1」にするとともに、後続するビットの値を指定ブロック番号にする(ステップS1302)。
制御回路45は、第2ワークメモリ設定レジスタ42の先頭ビットが「1」のときに、後続するビットの値である指定ブロック番号のフラッシュメモリ56内のブロックの有効性フラグを調べる(ステップS1303)。
制御回路45は、有効性フラグの値が「1」のときには、フラッシュメモリ56内の指定ブロック番号のブロックのすべてのデータを高速バス16を介して、ワークメモリ47の対応するブロックへ出力させる(ステップS1304)。
制御回路45は、フラッシュメモリ56からデータを受け取ったワークメモリ47内のブロックの有効性フラグを「1」に設定する(ステップS1305)。
制御回路45は、読出し完了フラグの値を「1」に設定する(ステップS1306)。
制御回路45は、第1書込み制御レジスタ43の値および第2書込み制御レジスタ41の先頭ビットの値を「0」に設定する(ステップS1307)。
(バックアップ処理の動作)
次に、この半導体記憶装置40のバックアップ処理の動作について説明する。図17は、バックアップ処理の動作手順を示すフローチャートである。
外部より、ワークメモリ47のフラッシュメモリ56へのバックアップを指示する制御信号が、制御回路45に入力される(ステップS1401)。
制御回路45は、上記制御信号を受けて、第1書込み制御レジスタ43の値を「1」に設定する(ステップS1402)。
制御回路45は、第1書込み制御レジスタ43の値が「1」に設定されている場合に、ワークメモリ47内のブロックのうち、有効性フラグが「1」で、かつ更新フラグが「1」のブロックを特定する(ステップS1403)
制御回路45は、ワークメモリ47内の特定したブロックに対応するフラッシュメモリ56内のブロックのすべてのデータを消去する(ステップS1404)。
制御回路45は、ワークメモリ47内の特定したブロックのすべてのデータを、フラッシュメモリ56内の対応するブロックに出力させる(ステップS1405)。
制御回路45は、このようにしてデータを受け取ったフラッシュメモリ56内の対応するブロックの有効性フラグを「1」に設定する(ステップS1406)。
(部分的バックアップ処理の動作)
次に、この半導体記憶装置40の部分的バックアップ処理の動作について説明する。図18は、部分的バックアップ処理の動作手順を示すフローチャートである。
外部より、ミラーメモリの部分的バックアップを指示する制御信号と、バックアップを行なうブロックを示す指定ブロック番号とがが、制御回路45に入力される(ステップS1501)。
制御回路45は、上記制御信号を受けて、第2書込み制御レジスタ41の先頭ビットの値を「1」にするとともに、後続するビットの値を指定ブロック番号にする(ステップS1502)。
制御回路45は、第2書込み制御レジスタ41の先頭ビットの値が「1」のときに、後続するビットで表わされる指定ブロック番号のワークメモリ47内のブロックの有効性フラグと更新フラグを調べる(ステップS1503)。
制御回路45は、有効性フラグが「1」で、かつ更新フラグが「1」のときには、ワークメモリ47内の指定ブロック番号のブロックに対応するフラッシュメモリ56内のブロックのすべてのデータを消去する(ステップS1504)。
制御回路45は、ワークメモリ47内の指定ブロック番号のブロックのすべてのデータを、フラッシュメモリ56内の対応するブロックに出力させる(ステップS1505)。
制御回路45は、フラッシュメモリ56のブロックの有効性フラグを「1」に設定する(ステップS1506)。
以上のように、本実施の形態に係わる半導体記憶装置では、制御回路45は、ミラーメモリの設定指示を示す制御信号を受けると、フラッシュメモリ56内のブロックのうち、所定のブロックのすべてのデータをワークメモリ47へ出力させ、ワークメモリ47からフラッシュメモリ56へのデータの出力を禁止する。
制御回路45は、読出し指示を示す制御信号を受けると、ワークメモリ47内のデコードされたアドレスのデータを、読出しデータとして入出力バッファ11に出力させるので、データを高速に読み出すことができる。
制御回路45は、書込み指示を示す制御信号を受けると、書込みデータを、ワークメモリ47内のデコードされたアドレスに応じた位置に出力させるので、データを高速に書込みことができる。
また、本実施の形態に係わる半導体記憶装置では、制御回路45は、ワークメモリのフラッシュメモリへのバックアップを指示する制御信号を受けると、ワークメモリ47内のブロックのうち、更新されたデータを含むブロックのみ、そのブロック内のデータをフラッシュメモリ56内の対応するブロックに出力させるので、更新されたデータを含まないブロックのデータをフラッシュメモリへ出力する無駄を防止できる。
(変形例)
本発明は、上記実施の形態に限定されるものではなく、以下の変形例も当然ながら包含する。
(1) 不揮発性メモリ
本発明の実施形態におけるフラッシュメモリの代わりに、その他の電子的書換え可能な不揮発性メモリとしてもよい。
(2) 書込み動作フラグ
第1の実施形態において、制御回路15は、書込みを指示する制御信号を受けた後、更新ブロックの番号をブロック番号レジスタ18に書込みを行なってから、ステップS303において、書込み動作フラグを「1」に設定したが、これに限定するものではない。制御回路15は、書込みを指示する制御信号を受けた後、更新ブロックの番号をブロック番号レジスタ18に書込みを行なうまでの任意の時点で書込み動作フラグを「1」に設定するものとしてもよい。
(3) フラッシュメモリのブロックの有効性フラグ
第2および第5の実施形態において、フラッシュメモリのブロックの有効性フラグを2ビットの値として、1ビット目で、データが書込まれているブロックか否かを識別し、2ビット目で、データが消去可能か否かを識別するものとしてもよい。
(4) ライトバッファ
第3の実施形態では、半導体記憶装置は、複数個のライトバッファ27a〜cを含み、各ライトバッファは、1つのブロックのデータを記憶するものとしたが、これに限定するものではない。たとえば、1つのライトバッファが、1個または複数個のブロックのデータを記憶するものとしてもよい。
(5) ライトバッファから書込みデータを出力させるタイミング
第3の実施形態では、各ライトバッファからワークメモリへ書込みデータを出力する時点までに、外部からの書込みデータがそのライトバッファに取込まれることが保証されているものとした。
各ライトバッファからワークメモリへ書込みデータを出力する時点までに、外部からの書込みデータがそのライトバッファに取込まれることが保証されていない場合には、次のような制御を行なうことができる。
すなわち、書込み制御信号がアサートの期間は、外部から書込みデータが入力されている状態を示し、書込み制御信号がネゲートの期間は、外部から書込みデータが入力されていない状態を示すようにすれば、制御回路は、あるライトバッファの末端にまで書込みデータが格納されていないときには、書込み制御信号がネゲートになった後に、そのライトバッファからワークメモリへ書込みデータを出力させるようにすることができる。
また、書込みデータの入力を開始するときに、外部から制御回路内の所定のレジスタのビットを1に設定し、書込みデータの入力を終了したときには、外部から所定のレジスタのビットを0にすることにすれば、制御回路は、あるライトバッファの末端にまで書込みデータが格納されていないときには、所定のレジスタのビットが0になった後に、そのライトバッファからワークメモリへ書込みデータを出力させるようにすることができる。
あるいは、入力される書込みデータの個数が固定値のときには、制御回路は、あるライトバッファの末端にまで書込みデータが格納されていないときには、すべてのライトバッファに取込まれた書込みデータの総数がこの固定値になった後に、そのライトバッファからワークメモリへ書込みデータを出力させるようにすることができる。
(6) ワークメモリ
第3の実施形態では、ワークメモリは、フラッシュメモリ10の1つのブロックのデータを記憶する容量を有するものとしたが、これに限定するものではない。たとえば、ワークメモリが、ライトバッファ27a〜cに対応する第1〜第3の3個のブロック分の容量を備えるものとしてもよい。
この場合には、ライトバッファ27a内の書込みデータは、ワークメモリ内の第1ブロックに出力され、ライトバッファ27b内の書込みデータは、ワークメモリ内の第2ブロックに出力され、ライトバッファ27c内の書込みデータは、ワークメモリの第3ブロックに出力されるものとすることができる。
第3の実施形態では、1つのブロックについて、S603〜S607の処理を連続して行った後、次のブロックについて、同様にS603〜S607の処理を連続して行ったのに対して、ワークメモリが3つのブロックを有する場合には、各ステップの処理を3つのブロックについて連続して行なった後、次のステップの処理を3つのブロックについて連続して行なうようにすることができる。
第3の実施形態とこの変形例では、各処理を実行する順序においては相違するが、各ブロックについて、S603の処理と、S604の処理と、S605の処理と、S606の処理と、S607の処理とを行なうという点においては、同一である。
(7) ワークメモリの用途
第4および第5の実施形態では、ワークメモリをミラーメモリとして使用する例について説明したが、これに限定するものではない。ワークメモリを作業用のメモリや別のメモリとして使用するものとしてもよい。
第5の実施形態において、ワークメモリを別のメモリとして使用した場合には、2倍の容量のメモリとなる。
また、第5の実施形態において、ワークメモリを作業用のメモリとして使用した場合には、ワークメモリ内のブロックに対して移動やコピーなどを行なうことにより、外部メモリを使用せずにブロックに対する操作が可能となる。
(8) ワークメモリの容量
第4の実施形態において、ワークメモリは、1つのブロックを含むものとしたが、これに限定するものではなく、ワークメモリは、2以上の任意の数のブロックを含むものとしてもよい。
(9) 2ポートRAMを用いたワークメモリ
第1〜第5の実施形態において、ワークメモリとして2ポートRAMを用いることにより、ワークメモリへのデータの入力と、ワークメモリからのデータの出力を同時に行なうことができる。
(10) 入出力バッファ
第1〜第4の実施形態において、外部からの書込みデータを一旦入出力バッファに取込むものとしたが、これに限定するものではなく、外部からの書込みデータを直接ライトバッファに取込むものとしてもよい。
(11) ライトバッファへのデータの取込みと、フラッシュメモリからワークメモリへのデータの出力の同時実行
第2〜第4の実施形態においても、第1の実施形態と同様に、制御回路が、書込み指示を示す制御信号を受けると、入出力バッファ11内の書込みデータをライトバッファに出力させるのと同時に、デコードされたアドレスのデータを含むフラッシュメモリのブロックを更新ブロックとして特定し、更新ブロック内のすべてのデータをワークメモリへ出力させるものとしてもよい。
(12) 高速バス16
本発明の実施形態では、フラッシュメモリ10と、ワークメモリ13と、入出力バッファ11との間は、それぞれ高速バス16(128〜256ビット幅)で接続し、ライトバッファ12とワークメモリ13との間は、高速バス16(128〜256ビット幅)で接続するものとしたが、これに限定するものではない。ライトバッファ12とワークメモリ13との間は、フラッシュメモリ10とワークメモリ13との間を接続するバスよりも、低速なバスで接続するものとしてもよい。同様に、入出力バッファ11と、ワークメモリ13およびフラッシュメモリ10との間は、フラッシュメモリ10とワークメモリ13との間を接続するバスよりも、低速なバスで接続するものとしてもよい。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
10,56 フラッシュメモリ、11 入出力バッファ、12 ライトバッファ、13,47 ワークメモリ、14 デコーダ、15、55 制御回路、16 高速バス、17 書込み動作フラグ格納部、18 ブロック番号レジスタ、20 データバス、21 アドレスバス、22 制御信号バス、15,25,35,45,55 制御回路、26 ワークメモリ更新レジスタ、36 書込み制御レジスタ、37 ワークメモリクリアレジスタ、38 読出し完了フラグ格納部、41 第2書込み制御レジスタ、42 第2ワークメモリ設定レジスタ、43 第1書込み制御レジスタ、46 第1ワークメモリ設定レジスタ、57 有効性フラグ格納部、30,40,50,100,200 半導体記憶装置。