(57)【要約】【課題】  マイクロコンピュータによる制御とマイクロコンピュータ用のレジスタをリセットするハード結線を設けることで、不揮発性半導体記憶装置の制御回路をコンパクトにすると同時に、高速動作・低消費電力化を可能とする。【解決手段】マイクロコンピュータ部２０からの停止信号に応じて、コマンド解析回路１６が、信号線１０２を介してリセット信号を出力する。前記リセット信号によって、マイクロコンピュータ部２０と電源回路部１４の動作が停止する。【選択図】図１
2008108361.tif 000002
【特許請求の範囲】
【請求項１】
記憶領域と周辺回路領域とを有する不揮発性半導体記憶装置であって、
前記記憶領域に形成されたメモリセルアレイ部と、
前記周辺回路領域に形成され、前記メモリセルアレイ部にリード用電圧またはこのリード用電圧より高電圧のライト用電圧または前記リード用電圧より高電圧のイレーズ用電圧を供給する電源回路部と、
前記メモリセルアレイ部の動作状態を示すデータが格納される第１のレジスタ部と、
前記電源回路部に前記リード用電圧を生成させるか、前記ライト用電圧を生成させるか、前記イレーズ用電圧を生成させるかを示すデータが格納される第２のレジスタ部と、
前記周辺回路領域に形成され、前記第１のレジスタ部に格納されたデータを読み出し、前記メモリセルアレイ部がライト状態、イレーズ状態のいずれの動作状態が終了したと判断した際に、前記電源回路部に前記リード用電圧を生成させるためのデータを前記第２のレジスタ部に格納し、その後に停止信号を出力するマイクロコンピュータ部と、
前記周辺回路領域に形成され、前記マイクロコンピュータ部にクロックを供給するクロック発生回路部と、
前記周辺回路領域に形成され、前記マイクロコンピュータ部から出力される前記停止信号に応じてリセット信号を出力するコマンド解析回路部とを具備し、前記マイクロコンピュータ部および前記クロック発生回路部は前記コマンド解析回路部から出力されるリセット信号に応じて動作を停止することを特徴とする不揮発性半導体記憶装置。
【請求項２】
前記コマンド解析回路部は、外部から前記メモリセルアレイ部に対するライト命令、またはイレーズ命令を受けた際に、リセット解除信号を出力し、前記マイクロコンピュータ部および前記クロック発生回路部は前記コマンド解析回路部から出力されるリセット解除信号に応じて動作を再開することを特徴とする請求項１記載の不揮発性半導体記憶装置。
【請求項３】
外部から入力される操作コマンドに応じて動作する不揮発性半導体記憶装置であって、
メモリセルアレイ部と、
前記メモリセルアレイ部の動作状態を示すデータが格納される第１のレジスタ部と、
前記メモリセルアレイ部に第１の電圧または前記第１の電圧より高電圧の第２の電圧を供給する電源回路部と、
前記電源回路部に前記第１の電圧を生成させるか前記第２の電圧を生成させるかを示すデータが格納される第２のレジスタ部と、
バスを介して前記第１のレジスタ部に格納されたデータを読み出すことにより前記メモリセルアレイ部の動作状態を認識すると共に、前記バスを介して前記第２のレジスタ部に前記電源回路部に対して前記第１の電圧を生成させるか前記第２の電圧を生成させるかを示すデータを格納するマイクロコンピュータ部とを具備したことを特徴とする不揮発性半導体記憶装置。
【請求項４】
記憶領域と周辺回路領域とを有する不揮発性半導体記憶装置であって、
前記周辺回路領域に形成され、前記記憶領域を制御するマイクロコンピュータ部と、
前記マイクロコンピュータ部に形成されたプロセッサ部と、
前記マイクロコンピュータ部に形成され、前記プロセッサ部から出力される命令アドレス信号に応じて、前記プロセッサ部用の命令コードを前記プロセッサ部に出力する、前記命令コードを記憶する命令記憶装置部と、
前記プロセッサ部に形成され、前記プロセッサ部が次に実行する命令コードを指定するプログラムカウンタと、
前記プロセッサ部に形成され、前記命令コードの実行を制御するプロセッサ制御部と、
前記プロセッサ制御部に形成され、前記命令記憶装置部からの前記命令コードを保持し、解析する命令レジスタと、
前記プロセッサ部に形成され、前記プロセッサ制御部の制御に応じて演算を行う演算部と、
前記演算部に形成され、算術演算を実行する演算器と、
前記演算部に形成され、前記演算器の演算結果を保持し、再び前記演算器の入力とすることが可能な第３のレジスタ部と、
前記第３のレジスタ部に保持された値が０かどうかを判定する０判定回路とを具備し、
外部から指定された回数を、前記演算器と前記第３のレジスタと前記０判定回路を使用して計算することで、前記回数の間、前記命令レジスタと前記プログラムカウンタの動作を止めておくことを特徴とする不揮発性半導体記憶装置
【請求項５】
記憶領域と周辺回路領域とを有する不揮発性半導体記憶装置であって、
前記周辺回路領域に形成され、前記記憶領域を制御するマイクロコンピュータ部と、
前記マイクロコンピュータ部に形成されたプロセッサ部と、
前記マイクロコンピュータ部に形成され、前記プロセッサ部から出力される命令アドレス信号に応じて、前記プロセッサ部用の命令コードを前記プロセッサ部に出力する、前記命令コードを記憶する命令記憶装置部と、
前記プロセッサ部に形成され、前記プロセッサ部が次に実行する命令コードを指定するプログラムカウンタと、
前記プロセッサ部に形成され、前記命令コードの実行を制御するプロセッサ制御部と、
前記プロセッサ制御部に形成され、前記命令記憶装置部からの前記命令コードを保持し、解析する命令レジスタと、
前記プロセッサ部に形成され、前記プロセッサ部の制御に応じて演算を行う演算部と、
前記演算部に形成され、前記命令コードの実行内容を示すデータが格納される第４のレジスタ部と、
前記プロセッサ部に形成され、前記第４のレジスタ部に格納されたデータに応じて、前記プログラムカウンタから設定された値か前記命令レジスタから設定された値のいずれか一つを選択して、命令記憶装置部に前記命令アドレスを出力するセレクタとを具備したことを特徴とする不揮発性半導体記憶装置。
【請求項６】
記憶領域と周辺回路領域とを有する不揮発性半導体記憶装置であって、
前記周辺回路領域に形成され、前記記憶領域を制御するマイクロコンピュータ部と、
前記マイクロコンピュータ部に形成され、命令コードを実行するプロセッサ部と、
前記マイクロコンピュータ部に形成され、前記プロセッサ部から出力される命令アドレスに応じて、前記命令コードを前記プロセッサ部に出力する、前記命令コードを記憶する命令記憶装置部と、
前記命令記憶装置部に形成され、前記命令コードを記憶する命令記憶装置と、
前記命令記憶装置部に形成され、前記命令コードの一部を置換する置換用命令コードを記憶した命令置換回路部とを具備し、
前記命令置換回路部は、前記置換用命令コードが記憶されている場合は前記置換回路用命令コードを、前記置換改良命令コードが記憶されていない場合は前記命令コードを、前記命令アドレスに応じて、前記プロセッサ部に出力することを特徴とする不揮発性半導体記憶装置
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体記憶装置に関する。
【背景技術】
【０００２】
フラッシュメモリは、操作コマンドを外部から入力して、メモリセルアレイへのデータ書き込みや消去等の動作制御を行う。前記操作コマンドとは、例えば書き込みやブロック消去といった内容のコマンドである。前記操作コマンドは、ＪＥＤＥＣによって標準化されている（例えば、非特許文献１参照。）。
【０００３】
また、前記動作制御は一般に、フラッシュメモリに内蔵されているライト・ステート・マシンで行われる（例えば、非特許文献１参照。）。前記ライト・ステート・マシンが使われている理由は、メモリセルにおける記憶状態が０もしくは１の２値で記憶するフラッシュメモリが主流であり、ライト・ステート・マシンで制御が可能な記憶状態数であったためである。
【０００４】
他方、ストレージ用途の広がりから、メモリ容量の大容量化への要求が高まってきている。更に、フラッシュメモリの浸透が著しい携帯型ストレージ市場においては、携帯型という特質から、メモリ容量は拡大しながらもフラッシュメモリの実装面積はコンパクトにすること、操作利便性を高めるための高速動作性、電池持ちを良くするための低消費電力化、といった要求が特に高くなっている。
【０００５】
この中で、実装面積がコンパクトながらメモリ容量を上げる方法として、例えば、００・０１・１０・１１の４値で記憶するといった、多値のメモリセルを持つるフラッシュメモリがあり、市場要求に適うものとして今後の主流になりつつある。
【０００６】
この多値のメモリセルを持つフラッシュメモリの動作制御について見てみる。例えば４値で記憶するフラッシュメモリの場合、従来の２値と比較すると、メモリセルの記憶状態が２値から４値に増えたことに加え、例えば記憶状態ごとのしきい値電圧の管理といった、状態自体が増えている（例えば、特許文献１参照。）。また、メモリセルの記憶状態を検出し次の記憶状態に遷移するといった、多値ならではのデバイスの状態制御が必要である。すなわち、状態の数が増えていることに加え、前記状態制御の処理が、２値のフラッシュメモリと比較して、桁違いに増えている。
【０００７】
したがって、２値のフラッシュメモリの延長で、多値のフラッシュメモリの制御部をライト・ステート・マシンで組んだ場合、ライト・ステート・マシンとメモリセルアレイ等の制御される回路との間の制御信号線数が増大し、コンパクトな実装面積を実現できないという課題がある。
【０００８】
また、制御手段が固定されたライト・ステート・マシンでは、制御手段の変更・修正にハード変更が必要になるため、市場の細かい要求に沿った制御手段のチューニングや制御手段の追加、といった作業は、即座に対応できないという課題がある。同時に、設計・製造工程のコストが増大するという課題もあった。
【０００９】
これらの課題を解決する方法として、フラッシュメモリの書き換え制御をマイコンとファームウェアで行う方法も提案されている（例えば、特許文献２参照。）。しかし、その制御手段は、マイコン一般の命令を使用して、新規のレジスタを制御するものであり、多値のメモリセルを持つフラッシュメモリを制御するのに最適でコンパクトな実装面積を持つマイコンの実現には踏み込んではいない。
【非特許文献１】ＳＨＡＲＰ社製フラッシュメモリ８Ｍビット品                    型名LH28F800BJE-PTTL70のデータシート  ５頁参照      ＳＨＡＲＰ社電子デバイスのホームページより、製品ラインナップの      データシート一覧にアクセスし、ＩＣ用の下記ｕｒｌより、      ２００５年４月１４日（木）１１：００にダウンロード      http://www.sharp.co.jp/products/device/lineup/data/ic/index.html
【特許文献１】特開２０００−２９８９９２号公報
【特許文献２】特開２００２−２６９０６５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明では、コンパクトな実装面積で、高速動作・低消費電力を実現する不揮発性半導体記憶装置を提供することを目的とする。  
【課題を解決するための手段】
【００１１】
上記目的を達成するために、本発明の一態様による不揮発性半導体記憶装置は、
記憶領域と周辺回路領域とを有する不揮発性半導体記憶装置であって、
前記記憶領域に形成されたメモリセルアレイ部と、
前記周辺回路領域に形成され、前記メモリセルアレイ部にリード用電圧またはこのリード用電圧より高電圧のライト用電圧または前記リード用電圧より高電圧のイレーズ用電圧を供給する電源回路部と、
前記メモリセルアレイ部の動作状態を示すデータが格納される第１のレジスタ部と、
前記電源回路部に前記リード用電圧を生成させるか、前記ライト用電圧を生成させるか、前記イレーズ用電圧を生成させるかを示すデータが格納される第２のレジスタ部と、
前記周辺回路領域に形成され、前記第１のレジスタ部に格納されたデータを読み出し、前記メモリセルアレイ部がライト状態、イレーズ状態のいずれの動作状態が終了したと判断した際に、前記電源回路部に前記リード用電圧を生成させるためのデータを前記第２のレジスタ部に格納し、その後に停止信号を出力するマイクロコンピュータ部と、
前記周辺回路領域に形成され、前記マイクロコンピュータ部にクロックを供給するクロック発生回路部と、
前記周辺回路領域に形成され、前記マイクロコンピュータ部から出力される前記停止信号に応じてリセット信号を出力するコマンド解析回路部とを具備し、前記マイクロコンピュータ部および前記クロック発生回路部は前記コマンド解析回路部から出力されるリセット信号に応じて動作を停止する。
【発明の効果】
【００１２】
本発明では、コンパクトな実装面積で、高速動作・低消費電力を実現する不揮発性半導体記憶装置を提供できる。
【発明を実施するための最良の形態】
【００１３】
（フラッシュメモリの構成）
以下、本発明の不揮発性記憶装置をＮＯＲ型フラッシュメモリに適用した実施形態について図面を用いて説明する。
【００１４】
図１は本実施形態のフラッシュメモリの構成を示すブロック図である。
【００１５】
本実施形態のフラッシュメモリ１は、記憶領域２および周辺回路領域３を有する。
【００１６】
（記憶領域の構成）
記憶領域２は、メモリセルアレイ部４、ロウデコーダ５、カラムデコーダ６、カラムゲート７、センスアンプ８、およびアドレスバス１１０を有する。
【００１７】
メモリセルアレイ部４には、ＮＯＲ型の複数のメモリセルがマトリクス状に配置されている。
【００１８】
ロウデコーダ５は、アドレスバス１１０を介して入力されたアドレスをデコードし、入力されたアドレスに対応したメモリセルアレイ部４内のワード線（ＷＬ）を選択する。
【００１９】
カラムデコーダ６は、アドレスバス１１０を介して入力されたアドレスをデコードし、入力されたアドレスに対応したカラムゲート７を選択して、メモリセルアレイ部４内のビット線（ＢＬ）をセンスアンプ８または後述するベリファイ回路１６に接続する。
【００２０】
センスアンプ８はカラムゲート７を介してメモリセルアレイ部４からから出力されたデータを増幅する。このセンスアンプ８はセンスアンプ用レジスタ９を持つ。
【００２１】
（周辺回路領域の構成）
周辺回路領域３は、アドレスバッファ部１０、データＩ／Ｏバッファ部１２、電源回路部１４、ベリファイ回路部１６、コマンド解析回路部１８、クロック発生回路部１９、マイクロコンピュータ部２０、バス１０９を有する。
【００２２】
アドレスバッファ部１０は外部から入力されたメモリセルアレイ部４のメモリセルを指定するためのアドレスをアドレスバス１１０に出力する。また、外部から入力された操作コマンド用のアドレスをコマンド解析回路部１８に出力する。このアドレスバッファ部１０はアドレスバッファ部用レジスタ１１を持つ。
【００２３】
データＩ／Ｏバッファ部１２は外部から入力されたデータをベリファイ回路部１６とコマンド解析回路部１８に出力する。また、センスアンプ８で増幅されたデータを外部に出力する。
【００２４】
電源回路部１４はメモリセルアレイ部４へのデータリード・データライト・データイレーズを実行するための電圧を供給する。この電源回路部１４は電源回路部用レジスタ１５を持つ。
【００２５】
ベリファイ回路部１６は、メモリセルアレイ部４へのデータライト時に、データＩ／Ｏバッファ部１２から入力されたデータから、メモリセルアレイ部４へ書き込むためのデータを生成し、カラムゲート７に出力する。また、センスアンプ８から読み出された書き込みデータと入力されたデータとを比較し、両データが一致しているか不一致であるかの確認を行う。このベリファイ回路部１６はベリファイ回路部用レジスタ１７を持つ。
【００２６】
コマンド解析回路部１８はデータＩ／Ｏバッファ部１２から入力された操作コマンドを解析し、信号線１０４を介してマイクロコンピュータ部２０に割り込み信号を、信号線１０５を介してマイクロコンピュータ部２０に動作内容を示すベクタ番号を出力する。また、コマンド解析回路部１８は、リセット信号とリセット解除信号を信号線１０２に出力する。
【００２７】
クロック発生回路部１９は信号線１０３を介して動作クロックをマイクロコンピュータ部２０に出力する。
【００２８】
マイクロコンピュータ部２０は、コマンド解析回路部１８から出力された割り込み信号とベクタ番号を基に、例えばメモリセルアレイ部４へのデータライトやデータイレーズの実行を制御する。この制御動作は、マイクロコンピュータ部２０がバス１０９を介して、例えばレジスタ９・レジスタ１１・レジスタ１５・レジスタ１７に所定のデータをセットすることで実行される。
【００２９】
マイクロコンピュータ部２０はプロセッサ部２１と命令記憶装置部２２から構成される。プロセッサ部２１はコマンド解析回路部１８から信号線１０４を介して出力された割り込み信号と、信号線１０５を介して出力されたベクタ番号を基に動作する。また、プロセッサ部２１には、クロック発生回路部１９から信号線１０３を介して、動作クロックが入力される。
【００３０】
命令記憶装置部２２はプロセッサ部２１用の命令コードを記憶している装置である。プロセッサ部２１は、コマンド解析回路から伝達されたベクタ番号を基に、命令コードを指定するための命令アドレスを信号線１０６を介して命令記憶装置部２２に出力する。命令記憶装置部２２は、この命令アドレスに応じて、信号線１０７を介して命令コードをプロセッサ部２１に出力する。
【００３１】
（レジスタの構成）
本実施形態では、マイクロコンピュータ部２０がバス１０９を介して、センスアンプ用レジスタ９、アドレスバッファ部１０用レジスタ１１、電源回路１４用レジスタ１５、ベリファイ回路部１６用レジスタ１７に所定のデータをセットすることで、例えばデータイレーズの実行がなされる。これら、レジスタ９、レジスタ１１、レジスタ１５、レジスタ１７について説明する。
【００３２】
センスアンプ用レジスタ９は、センスアンプ８の動作停止もしくは動作開始を指定するデータを、マイクロコンピュータ部２０がバス１０９を介して読み書きするレジスタである。
【００３３】
レジスタ９には信号線１０２が接続され、コマンド解析回路部１８からリセット信号が出力された場合、リセット信号に対応して、初期状態のデータが書き込まれる。この初期状態のデータはセンスアンプ８の動作停止を指定するデータであり、センスアンプ８は動作停止状態になる。
【００３４】
また、コマンド解析回路部１８からリセット解除信号が出力された場合には、レジスタ９にはリセット解除信号に対応したデータは書き込まれず、レジスタ９は変化しない。  
アドレスバッファ部用レジスタ１１は、アドレスバッファ部１０が外部からのアドレス入力を受け付けるか否かを設定するデータと、マイクロコンピュータ部２０が設定するアドレスを指定するためのレジスタである。レジスタ１１はマイクロコンピュータ部２０がバス１０９を介して読み書きされる。レジスタ１１には信号線１０２は接続されておらず、コマンド解析回路部１８からのリセット信号／リセット解除信号は入力されない。
【００３５】
電源回路部用レジスタ１５は、電源回路部１４から供給される電圧を設定するデータを、マイクロコンピュータ部２０がバス１０９を介して読み書きするレジスタである。レジスタ１５への設定データを変えることで電源回路部１４からデータライトやデータイレーズ用の詳細な電圧を供給する。初期状態のデータは電源回路部１４からデータリード用の電圧を供給する設定のデータである。
【００３６】
レジスタ１５には信号線１０２が接続されており、コマンド解析回路部１８からリセット信号が出力された場合、リセット信号に対応して、初期状態のデータが書き込まれる。従って、リセット信号が出力された場合、電源回路部１４はデータリード用の電圧を供給する設定となる。
【００３７】
また、コマンド解析回路部１８からリセット解除信号が出力された場合には、レジスタ１５にはリセット解除信号に対応したデータは書き込まれず、レジスタ１５は変化しない。  
ベリファイ回路部１６用レジスタ１７は、メモリセルアレイ部４へのデータライト或いはデータイレーズの結果がＯＫかＮＧかを示す第１のデータと、第１のデータの更新を指定する第２のデータと、第１のデータのリセットを指定する第３のデータが格納される。第１のデータ乃至第３のデータのいずれもマイクロコンピュータ部２０がバス１０９を介して読み出し可能である。
【００３８】
第１のデータはベリファイ回路部１６がレジスタ１７に書き込む。第２のデータと第３のデータは、マイクロコンピュータ部２０がバス１０９を介してレジスタ１７に書きこむ。第２のデータがレジスタ１７に書き込まれた場合に、ベリファイ回路部１６はレジスタ１７に第１のデータを書き込む。また、第３のデータがレジスタ１７に書き込まれた場合に第１のデータがリセットされ、データライト・データイレーズの結果はＮＧを示す値となる。
【００３９】
レジスタ１７には、信号線１０２が接続されており、コマンド解析回路部１８からリセット信号が出力された場合、リセット信号に対応して、初期状態のデータが書き込まれる。この初期状態のデータは第３のデータである。従って、リセット信号に対応して、レジスタ１７の第１のデータがリセットされ、データライト・データイレーズの結果はＮＧを示す値となる。
【００４０】
また、コマンド解析回路部１８からリセット解除信号が出力された場合には、レジスタ１７にはリセット解除信号に対応したデータは書き込まれず、レジスタ１７は変化しない。  
本実施形態では、レジスタ９を記憶領域２に、レジスタ１１、レジスタ１５及びレジスタ１７を周辺回路領域３に形成しているが、上述の内容を示すのであれば、記憶領域２もしくは周辺回路領域３以外に形成する構成も可能である。
【００４１】
（プロセッサ部の構成）
次に、図１のプロセッサ部２１の詳細構成について説明する。図２はプロセッサ部２１の構成を説明するためのブロック図である。
【００４２】
プロセッサ部２１は、プロセッサ制御部３０、フェッチ制御回路３３、プログラムカウンタ３４、命令アドレスセレクタ３５、プロセッサ演算部４０を有する。
【００４３】
プロセッサ制御部３０は、命令記憶装置部２２から信号線１０７を介して出力された命令コードを受け付ける命令レジスタ３１と、この命令レジスタから信号線２００を介して出力されるオペコードを受け付けてオペコードをデコードする命令デコード回路３２を有する。フェッチ制御回路３３はプロセッサ部２１が後述するＮＯＰ命令を実行する際に、信号線２０７を介して命令デコード回路３２から出力される動作開始指示信号を受け付け動作する。
【００４４】
プログラムカウンタ３４はプロセッサ部２１が現在実行している命令コードの命令記憶装置部２２内でのアドレス値をインクリメントし、インクリメントしたアドレス値を命令アドレスセレクタ３５に出力する。命令アドレスセレクタ３５は信号線３０１を介して命令レジスタ３１から出力されるアドレス値、信号線３０３を介して命令デコード回路３２から出力されるアドレス値、信号線３０４を介してプログラムカウンタ３４から出力されるアドレス値を受け付け、これら３つのアドレス値のいずれかひとつの値を命令記憶装置部２２およびプログラムカウンタ３４に出力する。
【００４５】
これらフェッチ制御回路３３、プログラムカウンタ３４、命令アドレスセレクタ３５は、プロセッサ演算部４０の演算結果を基に次の命令を実行するための命令アドレス値を出力する機能をもつ回路を構成する。なお、フェッチ制御回路３３は信号線２０７を介して、また命令アドレスセレクタ３５は信号線２０８を介して命令デコード回路３２から制御される。
【００４６】
プロセッサ演算部４０は、プロセッサ制御部３０から制御内容に基づき演算を行う回路で、Ｘマルチプレクサ（Ｘ−ＭＵＸ）４１、Ｙマルチプレクサ（Ｙ−ＭＵＸ）４２、ＡＬＵ（Arithmetic Logic Unit）４３、パイプラインレジスタ４４、状態レジスタ４５、汎用レジスタ４６、０判定回路４７、分岐判定回路４８を有する。
【００４７】
Ｘ−ＭＵＸ４１は、信号線３００を介して命令レジスタ３１から出力される数値、信号線３１０を介して汎用レジスタ４６から出力される数値、信号線３０８を介してパイプラインレジスタ４４から出力される数値を入力して、これらの数値の中からいずれかひとつの数値を信号線３０５を介してＡＬＵ４３のＸ入力端子へ出力する。
【００４８】
Ｙ−ＭＵＸ４２は、信号線３１０を介して汎用レジスタ４６から出力される数値を入力し、その数値を信号線３０６を介してＡＬＵのＹ入力端子へ出力する。
【００４９】
ＡＬＵ４３は論理演算ユニットで、Ｘ入力端子に入力される数値とＹ入力端子に入力される数値との演算を行い、その結果をＺ出力端子から信号線３０７に出力する。
【００５０】
パイプラインレジスタ４４はプロセッサ部２１のパイプライン動作のために使用されるレジスタであり、常にＡＬＵ４３から出力される演算結果に応じてその内容が更新される。パイプラインレジスタ４４は信号線３０７を介してＡＬＵ４３から出力される演算結果を記憶し、この記憶した演算結果を信号線３０８を介してＸ−ＭＵＸ４１および０判定回路４７に出力する。
【００５１】
状態レジスタ４５は本実施形態のフラッシュメモリ１が実行している状態を示す値を記憶する専用のレジスタである。状態レジスタ４５は信号線３０７を介してＡＬＵ４３から出力される演算結果を記憶し、この記憶した演算結果を信号線３０９を介して分岐判定回路４８に出力する。
【００５２】
汎用レジスタ４６は一般の演算時に使用されるレジスタである。汎用レジスタ４６は信号線３０７を介してＡＬＵ４３から出力される演算結果を記憶し、この記憶した演算結果を信号線３１０を介してＸ−ＭＵＸ４１、Ｙ−ＭＵＸ４２、分岐判定回路４８に出力する。
【００５３】
０判定回路４７はパイプラインレジスタ４４の出力値が０かどうかを判定する回路である。パイプラインレジスタ４４の出力値が０の場合、０判定回路４７は信号線２１０を介してその旨をフェッチ制御回路３３に出力する。
【００５４】
分岐判定回路４８は信号線３０２を介して命令レジスタ３１から出力される値と、信号線３０９を介して状態レジスタ４５から出力される値とを比較し、一致しているかどうかの結果を出力する回路である。この一致しているかどうかの結果は信号線２１１を介して命令アドレスセレクタ３５へ出力される。
【００５５】
なお、Ｘ−ＭＵＸ４１は信号線２０１を介して、Ｙ−ＭＵＸ４２は信号線２０２を介して、ＡＬＵ４３は信号線２０３を介して命令デコード回路３２により制御される。また、汎用レジスタ４６は信号線２０４を介して、状態レジスタ４５は信号線２０５を介して、分岐判定回路４８は信号線２０６を介して命令デコード回路３２により制御される。
【００５６】
（データリード・データライト・データイレーズ・サスペンド・レジューム動作）
次に、本実施形態のフラッシュメモリにおけるデータリード・データライト・データイレーズ・サスペンド・レジュームの動作を説明する。
【００５７】
データリードはフラッシュメモリからデータを読み出す操作である。データライトはフラッシュメモリにデータを書き込む操作である。データイレーズはフラッシュメモリに記憶されているデータを消去する操作である。
【００５８】
サスペンドは、フラッシュメモリからデータを読み出すために、データライト・データイレーズ中にデータライト・データイレーズ動作を一時的に中断する操作である。レジュームはサスペンドを終了しデータライト・データイレーズ動作に戻る場合の操作である。
【００５９】
本実施形態のフラッシュメモリは、一般のフラッシュメモリと同様に外部から入力される操作コマンドによって動作する。すなわち、外部からのデータリード、データライト、データイレーズ、サスペンド、レジュームのいずれかを示す操作コマンドに応じて動作する。
【００６０】
まず、データリード時の動作について説明する。
【００６１】
データＩ／Ｏバッファ部１２は外部から入力されたデータリードを指定する操作コマンドを信号線１０１を介してコマンド解析回路部１８に出力する。コマンド解析回路部１８は操作コマンドを解析し、データリードの場合ではリセット解除信号を出力しない。そのため、クロック発生回路部１９とマイクロコンピュータ部２０のリセットは解除されず、動作しない。
【００６２】
アドレスバッファ部１０は外部から入力されたアドレスを信号線１００を介してバス１１０に出力する。ロウデコーダ５とカラムでコーダ６は入力されたアドレスをデコードし、それぞれメモリセルアレイ部４とカラムゲート７に出力する。カラムゲート７はカラムデコーダからのデコーダ結果を基に、メモリセルアレイ部４からデータリードする。カラムゲート７は、リードデータをセンスアンプ８へ出力する。センスアンプ８はリードデータを増幅してデータＩ／Ｏバッファ部１２へ出力する。データＩ／Ｏバッファ部１２は増幅されたデータを外部に出力する。
【００６３】
次に、データライト・データイレーズ時の動作について説明する。
【００６４】
データＩ／Ｏバッファ部１２は外部から入力された操作コマンドを信号線１０１を介してコマンド解析回路部１８へ出力する。コマンド解析回路部１８は操作コマンドを解析し、データライト・データイレーズの場合ではリセット解除信号を信号線１０２を介して出力する。
【００６５】
リセット解除信号は、クロック発生回路部１９とマイクロコンピュータ部２０のリセットを解除し、動作を開始させる。また、リセット解除信号は、センスアンプ用レジスタ９、電源回路部用レジスタ１５、ベリファイ回路部用レジスタ１７の初期設定を保持し、センスアンプ８、電源回路１４、ベリファイ回路１６は初期設定に従った動作状態となる。引き続き、コマンド解析回路部１８は、操作コマンドを解析してマイクロコンピュータ部２０に、信号線１０４を介して割り込み信号を出力し、信号線１０５を介してマイクロコンピュータ部２０の動作内容を示すベクタ番号を出力する。
【００６６】
マイクロコンピュータ部２０は操作コマンドの内容に従って、周辺回路領域３の各回路を動作させる。このとき、マイクロコンピュータ部２０は、必ずベリファイ回路と電源回路を動作させる。
【００６７】
データライト・データイレーズ動作が終了した場合、終了動作として、マイクロコンピュータ部２０は、コマンド解析回路部１８に対して信号線１０８を介して停止信号を出力する。コマンド解析回路部１８はこの停止信号に応じて、リセット信号を信号線１０２を介して出力する。リセット信号は、クロック発生回路部１９とマイクロコンピュータ部２０の動作を停止させる。また、リセット信号は、センスアンプ用レジスタ９、電源回路部用レジスタ１５、ベリファイ回路部用レジスタ１７の設定を初期設定に戻す。ここで、データライト・データイレーズ動作が終了する。
【００６８】
このデータライト・データイレーズ時における、動作開始と終了については、後に詳述する。
【００６９】
次に、サスペンド・レジューム時の動作について説明する。
【００７０】
データＩ／Ｏバッファ部１２は外部から入力された操作コマンドを信号線１０１を介してコマンド解析回路部１８へ出力する。コマンド解析回路部１８は操作コマンドを解析してマイクロコンピュータ部２０に割り込みを入れ、サスペンドの実行を指示する。マイクロコンピュータ部２０は、例えば実行中のデータライトやデータイレーズ動作を中断した後に、停止する。
【００７１】
次に、中断したデータライトやデータイレーズ動作に戻る場合に、データＩ／Ｏバッファ部１２は外部から入力されたレジュームを指定する操作コマンドを信号線１０１を介してコマンド解析回路部１８へ出力する。コマンド解析回路部１８は操作コマンドを解析してマイクロコンピュータ部２０にレジュームの実行を指示する。マイクロコンピュータ部２０は中断したデータライトやデータイレーズ動作を再開する。
【００７２】
（動作停止／再開手順）
本実施形態のフラッシュメモリは、メモリセルアレイ部４のデータライト／データイレーズ動作が終了した場合に、電源回路部１４から供給される電圧をリード用電圧に設定し、外部からの操作コマンドを受け付けるのに必要な回路以外は、そのレジスタに初期状態のデータを設定して、直ちに停止する仕組みを持つ。次にフラッシュメモリ１を動作させるための操作コマンドを外部から受け付けた際に、動作を再開する機能を有する。以下、この動作停止／再開手順について説明する。
【００７３】
まず、フラッシュメモリ１の動作停止時の手順について図１と図３を用いて説明する。図３はフラッシュメモリ１の動作停止手順を説明するためのフローチャートである。
【００７４】
先ず、ベリファイ回路部１６はデータライト／データイレーズ動作それぞれにおいてデータのベリファイ動作を実行する。次に、マイクロコンピュータ部２０はレジスタ１７に第２のデータを書き込む。次に、第２のデータに応じて、ベリファイ回路部は、データが正確にデータライト／データイレーズできたと判断した際に、メモリセルアレイ部４へのデータライト／データイレーズ動作がＯＫであることを示す第１のデータをレジスタ１７に書き込む。
【００７５】
マイクロコンピュータ部２０はメモリセルへのデータライト／データイレーズ動作が完了すると、ベリファイ回路部１６用レジスタ１７に設定されているメモリセルアレイ部４の動作状態を示す第１のデータを読み出す（ステップＳ１）。
【００７６】
マイクロコンピュータ部２０はこのレジスタ１７を読み出し、メモリセルアレイ部４の状態を確認する。ステップＳ１においてメモリセルアレイ部４がデータライト／データイレーズのいずれの動作が完了したと判断された際、マイクロコンピュータ部２０はバス１０９を介して電源回路部１４用レジスタ１５にリード用電圧の生成を示すデータを設定する（ステップＳ２）。このデータ設定に従い、電源回路部１４はメモリセルアレイ部４に供給する電圧を初期値のリード用電圧に設定する。
【００７７】
本実施形態のフラッシュメモリはデータライト時にまずデータイレーズを行い、その後データライトを行う。従ってデータライト／データイレーズとも、データイレーズ動作が実行される。このデータイレーズ用の電圧は１０Ｖを超える場合があり、データイレーズ状態の電圧から急に電源回路部１４の動作を停止して電圧を下げるとメモリセルアレイ部４に保持されたデータが破壊される、或いはフラッシュメモリ１を構成する素子が破壊される可能性がある。
【００７８】
一方、データリード時の電圧はデータイレーズ時に供給されるほどの高電圧ではなく、上記保持データ破壊や素子破壊はないため、データリード時にはデータリードの実行が終了すれば電源回路部１４の動作を直ちに終了させることが可能である。そのため、メモリセルアレイ部４がデータライト／データイレーズ動作が終了した判断した際、マイクロコンピュータ部２０は、メモリセルアレイ部４に供給される電圧が必ず上記保持データ破壊や素子破壊が起こらないデータリード用の電圧になるように、電源回路部１４用レジスタ１５への設定を行う。
【００７９】
レジスタ１５にリード用電圧生成データを設定してから所定時間経過後、マイクロコンピュータ部２０は信号線１０８を介して、コマンド解析回路部１８に停止信号を出力する（ステップＳ３）。ここで、所定時間とは、レジスタ１５にリード用電圧の生成を示すデータが設定されてから実際に電源回路１４がリード用電圧を出力開始するまでに要する時間である。
【００８０】
停止信号を受け付けると、コマンド解析回路部１８は信号線１０２を介してリセット信号をプロセッサ部２１、クロック発生回路部１９、センスアンプ８用レジスタ９、電源回路部１４用レジスタ１５、ベリファイ回路部１６用レジスタ１７に一括出力する（ステップＳ４）。
【００８１】
プロセッサ部２１およびクロック発生回路部１９はリセット信号を受けると動作を停止する。レジスタ９、レジスタ１５、レジスタ１７にリセット信号に対応するデータが設定されると、（レジスタの構成）で説明した通り、センスアンプ８の動作が停止し、電源回路部１４はデータリード用の電圧を供給する設定を維持し、レジスタ１７の第１のデータがリセットされる（ステップＳ５）。なお、コマンド解析回路部１８は動作しており、外部からの操作コマンドを受け付けられる状態にある。
【００８２】
以上で、データライト／データイレーズ終了動作が終了する。
【００８３】
一般のマイクロコンピュータでは、使用したレジスタには初期状態のデータではなく使用した時点でのデータが設定されている。次の諸動作に備えて初期状態に戻すためには、マイクロコンピュータからレジスタを一つ一つ指定して初期状態のデータを設定する必要がある。
【００８４】
さらに、レジスタに初期状態のデータを設定するためには、例えば転送命令といったレジスタにデータを設定する命令を用いて、初期状態に戻したいレジスタを指定して初期状態のデータを設定する必要がある。すなわち、レジスタに初期状態のデータを設定するためには、データの設定とレジスタへのデータの転送という少なくとも２つのステップが必要となる。従って、プロセッサ用の命令記憶容量が増える傾向にある。
【００８５】
加えて、一般のマイクロコンピュータでは、初期状態に戻したいレジスタの数が多いほど、レジスタの指定とデータの設定というステップを、レジスタの数に相当する回数分繰り返す必要があり、処理時間が増える傾向にある。
【００８６】
一方、本実施形態では、リセット信号という専用の信号線を用いて各レジスタに一括して初期状態のデータを設定するため、マイクロコンピュータ部２０からレジスタを一つ一つ指定する必要がないため、レジスタへの初期状態のデータ設定というステップを減らすことができる。
【００８７】
さらに、レジスタへの初期状態のデータの設定は一括して行われるため、実行時間が一般のプロセッサに加えて短くなる。
【００８８】
したがって、本実施形態のフラッシュメモリでは、プロセッサ部２１を動作させるためのプログラムが格納された命令記憶装置部２２の記憶容量が小さくできることに加え、動作停止に至る実行時間が早い。
【００８９】
次に、本実施形態のフラッシュメモリ１の動作再開手順について、図１、図４を用いて説明する。
【００９０】
図４はフラッシュメモリ１の動作再開手順を示すフローチャートである。
【００９１】
上述したようにフラッシュメモリ１の動作停止時、コマンド解析回路部１８は動作しており、データＩ／Ｏバッファ部１２を介して入力された操作コマンドを受け付け可能な状態にある。
【００９２】
この状態で、データＩ／Ｏバッファ部１２が外部からの操作コマンドを受け付けると、データＩ／Ｏバッファ部１２は信号線１０２を介して受け付けた操作コマンドをコマンド解析回路部１８に出力する（ステップ１１）。
【００９３】
コマンド解析回路部１８は操作コマンドが入力されると、操作コマンドの解析を行い、操作コマンドがデータライト／データイレーズを示すのか、他の操作を示すものかを判断する（ステップＳ１２）。
【００９４】
操作コマンドがデータライト／データイレーズをのいずれかを示すものと判断した場合、コマンド解析回路部１８は信号線１０２を介してリセット解除信号出力する（ステップＳ１３）
コマンド解析回路部１８から出力されたリセット解除信号は信号線１０２を介して、マイクロコンピュータ部２０及びクロック発生回路部１９に供給される。
【００９５】
クロック発生回路部１９はリセット解除信号を受けると、動作クロックの出力を再開する。マイクロコンピュータ部２０はリセット信号を受けると、コマンド解析回路部１８からの割り込み信号とベクタ番号を受け付け動作を開始する（ステップＳ１４）。
【００９６】
以上の動作再開手順に従い、フラッシュメモリ１は動作可能状態に復帰する。
【００９７】
一般のマイクロコンピュータでは動作停止という概念がなく、何らかの命令コードを実行している。例えば前記所定の動作をしない場合は、何か他の命令コードを実行している状態にある。そのため、一般のマイクロコンピュータ用の命令記憶装置に何か他の命令コードを記憶させている。よって、この他の命令コード分、一般のマイクロコンピュータ用の命令記憶装置の容量が増えている。また、常にマイクロコンピュータが動作をしているため、消費電力が増える。
【００９８】
一方、本実施形態のフラッシュメモリは、動作開始の場面で、操作コマンドが入力されるまでは、クロック発生回路部１９とマイクロコンピュータプロセッサ部２０を停止させておく仕組みを備えている。従って、マイクロコンピュータ部２０に余分の命令コードを実行させる必要がなく、マイクロコンピュータ部２０内部の命令記憶装置部２２の記憶容量を減らすことが可能である。
【００９９】
また、クロック発生回路部１９とマイクロコンピュータ部２０が動作する時間を減らすことができるため、消費電力も低減できる効果がある。
【０１００】
（ＮＯＰ命令の実行制御）
次に、本実施形態のフラッシュメモリ１におけるＮＯＰ命令の実行制御について図２及び図５を用いて説明する。
【０１０１】
図５はＮＯＰ命令実行を説明するためのフローチャートである。
【０１０２】
ＮＯＰ命令とはデータの変更やレジスタへの書き込みなどを行わない無操作命令で、マイクロコンピュータの次処理までの待ち時間を作るためにマイクロコンピュータにより実行される命令である。
【０１０３】
プロセッサ部２１がＮＯＰ命令を実行させる必要のある動作待機状態、すなわち、電源回路部１４による電圧昇圧時やメモリセルアレイ部４のデータイレーズ中など、次の命令を実行する必要がないもしくはしてはならない状態になると、ＮＯＰ命令用の命令コード（以下ＮＯＰ命令と称する）が命令記憶装置部２２から信号線１０７を介して命令レジスタ３１に出力される。このＮＯＰ命令はオペコード＋ＮＯＰ回数情報の形式となっている（ステップＳ３１）。
【０１０４】
命令レジスタ３１がＮＯＰ命令を受けると、ＮＯＰ命令の命令コードをオペコードとＮＯＰ回数情報に分ける。次に、命令レジスタ３１は分離したオペコードを信号線２００を介して命令デコード回路３２に出力する。また、命令レジスタ３１は分離したＮＯＰ回数情報を信号線３００を介してＸ−ＭＵＸ４１に出力する（ステップＳ３２）。
【０１０５】
次に、命令デコード回路３２は次の４つの制御動作を行う。
【０１０６】
(1)Ｘ−ＭＵＸ４１の入力として信号線３００を介して入力された値を選択させる。
【０１０７】
(2)Ｙ−ＭＵＸ４２の動作を止める。
【０１０８】
(3)ＡＬＵ４３を−１演算モードにしてＺ＝Ｘ−１の設定を行う。
【０１０９】
(4)信号線２０７を介してフェッチ制御回路３３の動作を開始させる。
【０１１０】
(4)の結果、フェッチ回路３３は０判定回路４７の０判定結果が“０”になるまで、命令レジスタ３１とプログラムカウンタ３４の動作を停止する（ステップ３３）。
【０１１１】
命令デコード回路３２はパイプライン動作によるクロック数に基づいて計算回数を判定する（ステップＳ３４）。計算回数が最初の計算と判定された場合は、ステップＳ３３で設定したＸ−ＭＵＸ４１の入力値がＡＬＵ４３に出力される。
【０１１２】
命令デコード回路３２が２回目以降の計算回数と判定した場合、命令デコード回路３２はＸ−ＭＵＸ４１に、パイプラインレジスタ４４からの出力値をＸ−ＭＵＸ４１の入力として設定する（ステップＳ３５）。
【０１１３】
ＡＬＵ４３はＸ−ＭＵＸ４１からの出力値についてＺ＝Ｘ−１の演算を実行し、演算結果としてのＺの値を信号線３０７を介してパイプラインレジスタ４４に出力する（ステップＳ３６）。
【０１１４】
パイプラインレジスタ４４はＡＬＵ４３から出力されたＺ値を信号線３０８を介してＸ−ＭＵＸ４１と０判定回路４７に出力する（ステップＳ３７）。
【０１１５】
０判定回路４７はパイプラインレジスタ４４から出力されたＺ値が０か否か判定する（ステップ３８）。０でない場合、処理がステップＳ３４に戻り、ステップＳ３４からＳ３８の動作が繰り替えされる。０の場合、０判定回路４７はその旨を信号線３０９を介してフェッチ制御回路３３に出力する。
【０１１６】
フェッチ制御回路３３は０判定回路４７からＺ値が０である旨の通知を受けると、命令レジスタ３１とプログラムカウンタ３４の動作を開始させる（ステップＳ３９）。
【０１１７】
従来、マイクロコンピュータを所定時間だけ待機させる場合は、ＮＯＰ命令に回数指定ができないため、所定時間に相当する数のＮＯＰ命令を列挙する必要があった。マイクロコンピュータを周辺回路領域に形成したＮＯＲ型不揮発性半導体記憶装置にこの方法をそのまま採用すると、微妙なタイミング制御が必要で多数の待機時間の設定が必要なことからＮＯＰ命令数が膨大になり、ＲＯＭ容量が大きくなりチップ面積の増大につながる原因となっていた。
【０１１８】
本実施形態は回数を指定可能なＮＯＰ命令を持ち、ＮＯＰ命令を１回記述する中で、回数を指定できるため、ＮＯＰ命令を列挙する必要がない。従って、命令記憶装置部２２の記憶容量を減らすことが出来る。
【０１１９】
また、プロセッサ部２１は、例えばｎ回のクロックの間、動作を停止するという動作が可能であるため、ｎ回のクロック相当分の時間制御という精密な時間制御も可能である。
【０１２０】
（ＳＷ命令の実行制御）
ＳＷ命令とは状態レジスタ４５の値を参照・比較することで、次に実行する命令を決める命令である。
【０１２１】
ＳＷ命令は、サスペンドが実行され、レジューム動作により、データライト或いはデータイレーズの状態に戻る場合に動作する命令である。
【０１２２】
ＳＷ命令はオペコード＋分岐アドレス値＋比較値の形式となっている。ここで、分岐アドレス値とは信号線１０６を介して命令記憶装置部２２と命令置換回路２０に出力される命令アドレス値である。また、比較値とは分岐判定回路４８に設定する値である。
【０１２３】
本実施形態のフラッシュメモリ１におけるこのＳＷ命令の実行制御について図２、図６及び図７を用いて説明する。
【０１２４】
本実施形態では、サスペンドが実行される場合の準備のため、データイレーズ・データライトを実行する場合に、どこまでデータイレーズ・データライトが実行されたかを示すデータ、例えばアドレスの設定値や電源の昇圧状態を示すデータを状態値として一時的に状態レジスタに保持する。レジューム動作によって、データイレーズやデータライトに復帰する場合に、状態レジスタに保持された状態値を参照して動作を再開する。
【０１２５】
状態レジスタへの状態値を設定する時は、例えば、電源回路１４のチャージポンプが起動している時、メモリセルアレイ部４へのデータ書き込み中、或いはベリファイ回路部１６がデータライト／データイレーズの結果がレジスタ１７に書き込まれた後など、次の動作への切り替わり時である
以上の動作手順について、以下に説明する。
【０１２６】
まず、データイレーズとデータライトを実行する場合に、どこまでデータイレーズとデータライトが実行されたか示す状態値を、必ず状態レジスタに設定する。本実施形態のフラッシュメモリ１では、例えば転送命令を用いて状態値を状態レジスタに設定する。
【０１２７】
この設定手順について、図６を用いて説明する。
【０１２８】
図６はプロセッサ部２１が実行している状態を示す値を状態レジスタ４５へ設定する設定方法を説明するためのフローチャート、図７はＳＷ命令実行を説明するためのフローチャートである。
【０１２９】
命令記憶装置部２２は転送命令用の命令コード（以下、転送命令と称する）を信号線１０７を介して命令レジスタ３１に出力する（ステップＳ４１）。この転送命令はオペコード＋転送先情報＋状態値の形式である。
【０１３０】
命令レジスタ３１は転送命令を受け付けると、この転送命令をオペコードと転送先情報と状態値に分離する。次に、命令レジスタ３１は信号線２００を介して分離したオペコードと転送先情報を命令デコード回路３２に出力する。また、命令レジスタ３１は分離した状態値をＸ入力値信号３００を介してＸ−ＭＵＸ４１に出力する（ステップＳ４２）。
【０１３１】
命令デコード回路３２はオペコードと転送先情報を受け付け次の４つの動作を行う（ステップＳ３４）。
【０１３２】
(1)Ｘ−ＭＵＸ４１の入力として信号線３００を介して入力された値を選択する。
【０１３３】
(2)Ｙ−ＭＵＸ４２の動作を停止する。
【０１３４】
(3)ＡＬＵ４３を転送モードとし、Ｚ＝Ｘに設定する。
【０１３５】
(4)状態レジスタ４５の動作を開始させる。
【０１３６】
ＡＬＵ４３は命令デコード回路３２の設定によりＺ＝Ｘの演算を実行し、演算結果であるＺの値を信号線３０７を介して状態レジスタ４５に出力する（ステップＳ４４）。
【０１３７】
ＡＬＵ４３がＺ値を出力し、状態レジスタ４５に状態値が設定される（ステップＳ４５）。
【０１３８】
これで、状態レジスタ４５への状態値設定が終了する。
【０１３９】
次に、サスペンドコマンドによりフラッシュメモリ１へのデータイレーズまたはデータライトの動作が中断され、レジュームコマンドによりデータイレーズまたはデータライトの動作が再開される場合を想定する。
【０１４０】
例えばメモリセルアレイ４のデータイレーズ中にプロセッサ部２１に割り込みが入り、データリードを行った後に中断したデータイレーズ動作に復帰する、といった動作を想定する。
【０１４１】
このときにＳＷ命令によってデータイレーズ動作に復帰する。
【０１４２】
図２及び図７を用いてＳＷ命令の実行順序について説明する。
【０１４３】
まず、命令記憶装置部２２はＳＷ命令用の命令コード（以下、ＳＷ命令と称する）を、信号線１０７を介して命令レジスタ３１に出力する（ステップＳ５１）。ここで上述したとおり、ＳＷ命令はオペコード＋分岐アドレス値＋比較値の形式となっている。
【０１４４】
命令レジスタ３１はＳＷ命令を受け付けると、このＳＷ命令をオペコードと分岐アドレス値と比較値に分離して、次の３つの動作を行う（ステップＳ５２）。
【０１４５】
(1)信号線２００を介してオペコードを命令デコード回路３２に出力する。
【０１４６】
(2)信号線３０１を介して分岐アドレス値を、命令アドレスセレクタ３５に出力する。
【０１４７】
(3)信号線３０２を介して比較値を分岐判定回路４８に出力する。
【０１４８】
命令デコード回路３２はオペコードを受け付けると、分岐判定回路４８の動作を開始させる（ステップＳ５３）。この結果、分岐判定回路４８は比較値と状態レジスタ４５に設定された状態値を取り込む。
【０１４９】
分岐判定回路４８は取り込んだ比較値と状態値とを比較し、比較値と状態値とが一致するか否かを判定する（ステップＳ５４）。分岐判定回路４８は比較した結果を信号線２１１を介して命令アドレスセレクタ３５に出力する。
【０１５０】
比較した結果が“一致”の場合、命令アドレスセレクタ３５は、分岐アドレス値を選択し、信号線１０６を介してこの分岐アドレス値を命令記憶装置部２２に出力する（ステップＳ５５）。
【０１５１】
比較した結果が“不一致”の場合、命令アドレスセレクタ３５はプログラムカウンタ３４の値を選択し、信号線１０６を介してこのプログラムカウンタ３４値を命令記憶装置部２２に出力する（ステップＳ５６）。
【０１５２】
これで、ＳＷ命令の実行動作が終了する。
【０１５３】
一般のプロセッサでは、本実施形態のＳＷ命令と同様の分岐操作をするためには “分岐判定回路４８への値設定”と“状態レジスタ４５の値との比較”という２命令が必要である。これに対して、本実施形態では１命令で実現できるため命令記憶装置部に記憶する命令コード数を少なくでき、命令記憶装置部２２の容量を減らすことで実装面積を小さくできる。
【０１５４】
また、本実施形態のＳＷ命令は状態レジスタ４５の値を用いることで次に実行する命令を決めることができる。従って、ＳＷ命令を状態レジスタ４５の値に応じた分岐命令として使用することができる。例えば、状態レジスタ４５を３ビットとすると、中断する動作箇所に応じた状態レジスタ４５の値として１２８個確保可能となり、きめ細かい高速な復帰動作が可能となる。
【０１５５】
（命令置換動作）
次に、本実施形態によるフラッシュメモリの命令置換動作について、図８、図９を用いて説明する。図８は、図１に示す命令記憶装置部２２の内部構成を示すブロック図である。また、図９は図８の命令記憶装置部２２における命令置換動作を説明するためのフローチャートである。
【０１５６】
まず、命令記憶装置部２２の構成を説明する。
【０１５７】
命令記憶装置部２２は命令記憶装置５０、命令アドレス比較回路用レジスタ５１、命令アドレス比較回路５２、置換命令記憶装置５３、命令セレクタ５４を有する。
【０１５８】
命令記憶装置５０はプロセッサ部２１用の命令コードを置換前命令コードとして記憶する。この置換前命令コードとはプロセッサ部２１用の命令コード全てである。プロセッサ部２１から信号線１０６を介して入力された命令アドレスを基に、命令記憶装置５０にて置換前命令コードが選択され、選択された置換前命令コードが信号線４００を介して命令セレクタ５４に出力される。
【０１５９】
命令アドレス比較回路用レジスタ５１は命令アドレス比較回路５２の動作を“有効”とするか“無効”とするかを示すデータが設定されるレジスタと置換命令アドレスを記憶するレジスタとからなる。この置換命令アドレスとは置換したい命令コード用の命令アドレスである。プロセッサ部２１はバス１０９を介してレジスタ５１の内容を読み書き可能である。
【０１６０】
命令アドレス比較回路５２は動作設定が“有効”な場合、信号線１０６を介してプロセッサ部２１から入力された命令アドレスと信号線４０１を介してレジスタ５１から入力された置換命令アドレスとを比較して“一致“か”不一致“かの結果を検出する。この命令アドレス比較回路５２での比較結果は信号線４０２を介して命令セレクタ５１に出力される。
【０１６１】
動作設定が”無効”の場合、この命令アドレス比較回路５２は常に“不一致”の結果を命令セレクタ５１に出力する。
【０１６２】
置換命令記憶装置５３はプロセッサ部２１用の命令コードを置換用命令コードとして記憶する揮発性の命令記憶装置である。ここで、置換用命令コードとはプロセッサ部２１用の命令コードの一部を置換する命令コードである。また、置換命令記憶装置５３はこの置換用命令コードを命令セレクタ５１に信号線４０３を介して出力する。
【０１６３】
命令セレクタ５１は置換前命令コードと置換用命令コードのいずれか一つを選択し、選択した命令コードを信号線１０７を介してプロセッサ部２１に出力する。
【０１６４】
命令セレクタ５１は命令アドレス比較回路５２からの結果が“一致”の場合に置換用命令コードを選択出力し、“不一致”の場合は置換前命令コードを選択出力する。
【０１６５】
次に、図８及び図９を用いて命令置換動作について説明する。
【０１６６】
動作開始前には、置換命令アドレスと置換用命令コードがそれぞれレジスタ５１と置換命令記憶装置５３に記憶されているものとする。
【０１６７】
まず、プロセッサ部２１は、信号線１０６を介して命令アドレスを命令記憶装置５０と命令アドレス比較回路５２に出力する（ステップＳ６１）。
【０１６８】
命令アドレス比較回路５２はプロセッサ部２１から命令アドレスを受けると、命令アドレス比較回路用レジスタ５１に命令アドレス比較回路５２の動作が”有効”であることを示すデータが格納されているか“無効”であることを示すデータが格納されているかを判断する（ステップＳ６２）。
【０１６９】
“有効”の場合、命令アドレス比較回路５２は信号線１０６を介してプロセッサ部２１から入力された命令アドレスと信号線４０１を介して入力された置換命令アドレスとを比較して、両アドレスが一致しているか不一致であるかを検出する（ステップＳ６３）。
【０１７０】
両アドレスが一致していた場合、命令アドレス比較回路５２は“一致”を示すデータを信号線４０２を介して命令セレクタ５４に出力する（ステップＳ６４）。
【０１７１】
ステップＳ６２にて命令アドレス比較回路用レジスタ５１に命令アドレス比較回路５２の動作が“無効”であることを示すデータが格納されていると判断された場合、またステップＳ６３にて命令アドレス比較回路５２が両アドレスは“不一致”と判断した場合の、命令アドレス比較回路５２は信号線４０２を介して“不一致”を示すデータを命令セレクタ５１に出力する（ステップＳ６５）。
【０１７２】
命令セレクタ５４は命令アドレス比較回路５２から“一致”を示すデータが出力されると、置換命令記憶装置５３より信号線４０３を介して入力された置換用命令コードを命令コードとして選択し、信号線１０７を介してプロセッサ部２１に出力する（ステップＳ６６）。
【０１７３】
命令アドレス比較回路５２から“一致”を示すデータが出力されると、命令セレクタ５４は命令記憶装置５０より信号線１０７を介して入力された置換前命令コードを命令コードとして選択し、信号線１０７を介してプロセッサ部２１に出力する（ステップＳ６７）。
【０１７４】
本実施形態では、主にデバッグ用途に用いるために命令コードを置換している。命令コードの置換や書換えの手段として、フラッシュメモリセルの一部を用いる方法も考えられるが、フラッシュメモリセル自体の動作検証するデバッグ段階ではフラッシュメモリセルを用いることはできない。従って、フラッシュメモリ以外の命令記憶装置が必要となる。
【０１７５】
一般のプロセッサでは、命令コードを置換する場合は命令コード全体を書き換えている。そのため、一般のプロセッサにおける命令記憶装置は電気的に書き換え可能な不揮発性メモリで構成されている。この電気的に書き換え可能な不揮発性メモリは書き換えできない不揮発性メモリに比べて面積が大きくなるのが通常である。
【０１７６】
本実施形態では、命令コードを格納する命令記憶装置５０として予めデータを記憶させてある書き換えできない不揮発性半導体記憶装置を採用している。また、命令コードの一部を置換する置換命令記憶装置５３に揮発性半導体記憶装置を採用している。
【０１７７】
電気的に書き換えできない不揮発性半導体記憶装置、揮発性半導体記憶装置ともに、不揮発性メモリに比べ面積が小さくなるため、命令記憶装置部２１自体がコンパクトとなる。
【０１７８】
その結果、命令記憶装置部２１自体がコンパクトになり、デバッグが終了し次にハード変更が行われる場合でも、命令記憶装置部２１以外の回路への影響をなくすことができる。
【０１７９】
（その他の実施の形態）
上記に示す通り、本発明は実施の形態を用いて説明したが、この開示の一部をなす論述及び図面は、この発明の技術的思想を具体化するための装置や方法を例示するものであって、この発明の技術的思想は、構成部品の構造、配置等を上記に説明した形態に限定するものでない。この発明の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【図面の簡単な説明】
【０１８０】
【図１】フラッシュメモリの構成を示すブロック図。
【図２】プロセッサの構成を示すブロック図。
【図３】動作停止時の実行順序を説明するためのフローチャート。
【図４】動作開始時の実行順序を説明するためのフローチャート。
【図５】ＮＯＰ命令の実行順序を説明するためのフローチャート。
【図６】プロセッサ部が実行している状態を示す値を状態レジスタへ設定する実行順序を説明するためのフローチャート。
【図７】ＳＷ命令の実行順序を説明するためのフローチャート。
【図８】命令記憶装置部の内部を示すブロック図。
【図９】命令置換の実行順序を説明するためのフローチャート。
【符号の説明】
【０１８１】
１  フラッシュメモリ
２  記憶領域
３  周辺回路領域
４  メモリセルアレイ部
５  ロウデコーダ
６  カラムデコーダ
７  カラムゲート
８  センスアンプ
９  センスアンプ用レジスタ
１０  アドレスバッファ部
１１  アドレスバッファ部用レジスタ
１２  データＩ／Ｏバッファ部
１４  電源回路部
１５  電源回路部用レジスタ
１６  ベリファイ回路部
１７  ベリファイ回路部用レジスタ
１８  コマンド解析回路部
１９  クロック発生回路部
２０  マイクロコンピュータ部
２１  プロセッサ部
２２  命令記憶装置部
３０  プロセッサ制御部
３１  命令レジスタ
３２  命令デコード回路
３３  フェッチ制御回路
３４  プログラムカウンタ
３５  命令アドレスセレクタ
４０  プロセッサ演算部
４１  Ｘ入力用ＭＵＸ
４２  Ｙ入力用ＭＵＸ
４３  ＡＬＵ
４４  パイプラインレジスタ
４５  状態レジスタ
４６  汎用レジスタ
４７  ０判定回路
４８  分岐判定回路
５０  命令記憶装置
５１  命令アドレス比較回路用レジスタ
５２  命令アドレス比較回路
５３  置換命令記憶装置
５４  命令セレクタ
１０９  バス
１１０  アドレスバス
【図１】
2008108361.tif 000003
【図２】
2008108361.tif 000004
【図３】
2008108361.tif 000005
【図４】
2008108361.tif 000006
【図５】
2008108361.tif 000007
【図６】
2008108361.tif 000008
【図７】
2008108361.tif 000009
【図８】
2008108361.tif 000010
【図９】
2008108361.tif 000011