(57)【要約】【課題】フラッシュメモリが搭載された半導体装置において安定した動作を実現することが可能な半導体装置を提供することである。【解決手段】一実施の形態によれば、メモリコントローラ１１は、第１及び第２のマスタ１０_１、１０_２のフラッシュメモリ１２への書込み／消去処理を制御する際、第１のマスタ１０_１がフラッシュメモリ１２に対して書込み／消去処理を実行している間、第２のマスタ１０_２のフラッシュメモリ１２へのアクセスに起因した実行中の書込み／消去処理の中断を禁止可能に構成されている。【選択図】図１
2019008642.tif 000002
【特許請求の範囲】
【請求項１】
所定の処理を実行可能な第１及び第２のマスタと、
データを書き換え可能なフラッシュメモリと、
前記第１及び第２のマスタの前記フラッシュメモリへの書込み／消去処理を制御するメモリコントローラと、を備え、
前記メモリコントローラは、前記第１のマスタが前記フラッシュメモリに対して書込み／消去処理を実行している間、前記第２のマスタの前記フラッシュメモリへのアクセスに起因した前記実行中の書込み／消去処理の中断を禁止可能に構成されている、
半導体装置。
【請求項２】
前記メモリコントローラは、前記第１のマスタから受信したコマンドが、前記書込み／消去処理の中断を禁止している場合、前記第１のマスタが前記フラッシュメモリに対して書込み／消去処理を実行している間、当該実行中の書込み／消去処理の中断を禁止する、請求項１に記載の半導体装置。
【請求項３】
前記メモリコントローラは、
前記第１及び第２のマスタから受信したコマンドが書込まれるコマンド指定レジスタを備え、
前記コマンド指定レジスタに書込まれた前記第１のマスタから受信したコマンドが前記書込み／消去処理の中断を禁止している場合、前記第１のマスタが前記フラッシュメモリに対して書込み／消去処理を実行している間、当該実行中の書込み／消去処理の中断を禁止する、
請求項２に記載の半導体装置。
【請求項４】
前記メモリコントローラは、前記フラッシュメモリに書込み／消去処理を実行しているマスタの情報を保持するマスタ情報保持レジスタを備え、
前記メモリコントローラは、前記実行中の書込み／消去処理を中断する中断コマンドを受信した際、前記マスタ情報保持レジスタに保持されているマスタと、前記中断コマンドを送信したマスタと、の比較結果に基づいて、前記実行中の書込み／消去処理の中断を禁止するか否かを決定する、
請求項１に記載の半導体装置。
【請求項５】
前記メモリコントローラは、前記マスタ情報保持レジスタに保持されているマスタが前記中断コマンドを送信したマスタと異なる場合、前記実行中の書込み／消去処理の中断を禁止する、請求項４に記載の半導体装置。
【請求項６】
前記メモリコントローラは、前記マスタ情報保持レジスタに保持されているマスタが前記中断コマンドを送信したマスタと同一である場合、前記実行中の書込み／消去処理の中断を許可する、請求項４に記載の半導体装置。
【請求項７】
前記メモリコントローラは、前記マスタ情報保持レジスタに保持されているマスタの優先度が、前記中断コマンドを送信したマスタの優先度よりも高い場合、前記実行中の書込み／消去処理の中断を禁止する、請求項４に記載の半導体装置。
【請求項８】
前記メモリコントローラは、前記マスタ情報保持レジスタに保持されているマスタの優先度が、前記中断コマンドを送信したマスタの優先度よりも低い場合、前記実行中の書込み／消去処理の中断を許可する、請求項４に記載の半導体装置。
【請求項９】
前記メモリコントローラは、前記第１のマスタが前記フラッシュメモリに対して書込み／消去しているデータがフラグデータ及びセキュリティ鍵データの少なくとも一つである場合、前記実行中の書込み／消去処理の中断を禁止する、請求項１に記載の半導体装置。
【請求項１０】
前記第１のマスタは第１のプロセッサを用いて構成されており、
前記第２のマスタは第２のプロセッサを用いて構成されている、
請求項１に記載の半導体装置。
【請求項１１】
前記第１のマスタは、第１の仮想ＣＰＵであり、
前記第２のマスタは、第２の仮想ＣＰＵであり、
前記第１及び第２の仮想ＣＰＵは、同一のプロセッサを用いて構成されている、
請求項１に記載の半導体装置。
【請求項１２】
第１及び第２のマスタによるフラッシュメモリへの書込み／消去処理を制御するフラッシュメモリ制御方法であって、
前記第１のマスタが前記フラッシュメモリに対して書込み／消去処理を実行している間、前記第２のマスタの前記フラッシュメモリへのアクセスに起因した前記実行中の書込み／消去処理の中断を禁止する、
フラッシュメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置、及びフラッシュメモリ制御方法に関し、例えば複数のマスタがフラッシュメモリへの書込み／消去処理を実行する際の制御技術に関する。
【背景技術】
【０００２】
複数のマスタを備える半導体装置では、各々のマスタが１つのフラッシュメモリを共有するように構成されている場合がある。このような構成の半導体装置では、例えばメモリコントローラが各々のマスタのフラッシュメモリへのアクセスを制御している。
【０００３】
特許文献１には、フラッシュメモリへの書込み／消去処理を中断／再開する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−３４０４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一般的に、特定のマスタがフラッシュメモリへの書込み／消去処理を実行している間は、他のマスタがフラッシュメモリに対して読出し、書込み、消去処理を実行することができない。ここで、フラッシュメモリへの書込み／消去処理には時間を要するため、このように特定のマスタがフラッシュメモリに対して書込み／消去処理を実行している間は、他のマスタがフラッシュメモリに長時間アクセスすることができず、待ち時間が長くなる場合があった。
【０００６】
このような問題を解決するために、特許文献１に開示されている半導体装置では、フラッシュメモリへの書込み／消去処理が実行されている場合であっても、この書込み／消去処理を中断して他の処理（読出し、書込み、消去処理）を実行することができるようにしている。
【０００７】
しかしながら、フラッシュメモリへの書込み／消去処理の中には重要な処理が含まれている場合があり、このような重要な書込み／消去処理が途中で中断されると、システム上の問題が発生し、半導体装置の動作が不安定になるという問題があった。
【０００８】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００９】
一実施の形態によれば、メモリコントローラは、第１及び第２のマスタのフラッシュメモリへの書込み／消去処理を制御する際、前記第１のマスタが前記フラッシュメモリに対して書込み／消去処理を実行している間、前記第２のマスタの前記フラッシュメモリへのアクセスに起因した前記実行中の書込み／消去処理の中断を禁止可能に構成されている。
【発明の効果】
【００１０】
前記一実施の形態によれば、フラッシュメモリが搭載された半導体装置において安定した動作を実現することが可能な半導体装置、及びフラッシュメモリ制御方法を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１にかかる半導体装置を示すブロック図である。
【図２】実施の形態１にかかる半導体装置が備えるメモリコントローラを示すブロック図である。
【図３】実施の形態１にかかる半導体装置で用いられるコマンドの一例を示す図である。
【図４】フラッシュメモリへの書込み／消去処理の動作を説明するためのタイミングチャートである。
【図５】フラッシュメモリへの書込み／消去処理を中断／再開する際の動作を説明するためのタイミングチャートである。
【図６】フラッシュメモリへの書込み／消去処理の動作を説明するためのタイミングチャートである。
【図７】実施の形態１にかかる半導体装置の他の構成例を示すブロック図である。
【図８】実施の形態２にかかる半導体装置が備えるメモリコントローラを示すブロック図である。
【図９】実施の形態２にかかる半導体装置で用いられるコマンドの一例を示す図である。
【図１０】フラッシュメモリへの書込み／消去処理の動作を説明するためのタイミングチャートである。
【図１１】フラッシュメモリへの書込み／消去処理の動作を説明するためのタイミングチャートである。
【発明を実施するための形態】
【００１２】
＜実施の形態１＞
以下、図面を参照して実施の形態１について説明する。
図１は、実施の形態１にかかる半導体装置を示すブロック図である。図１に示すように、本実施の形態にかかる半導体装置１は、ＣＰＵ（Central Processing Unit）１０_１、１０_２、メモリコントローラ１１、フラッシュメモリ１２、ＲＡＭ（Random Access Memory）１３_１、１３_２、及び周辺バス１５を備える。本実施の形態にかかる半導体装置１は、例えばマイクロコントローラである。なお、本明細書では、ＣＰＵ１０_１、ＣＰＵ１０_２をそれぞれ、ＣＰＵ０、ＣＰＵ１と記載する場合もある。また、ＣＰＵ１０_１、ＣＰＵ１０_２を総称してＣＰＵと記載する場合もある。
【００１３】
また、本明細書において、「フラッシュメモリへの書込み／消去処理」とは、「フラッシュメモリへの書込み処理」、又は「フラッシュメモリへの消去処理」を意味する。本明細書では、「フラッシュメモリへの書込み処理」と「フラッシュメモリへの消去処理」とを特に区別しない場合は、「フラッシュメモリへの書込み／消去処理」と記載する。
【００１４】
各々のＣＰＵ（マスタ）１０_１、１０_２は、フラッシュメモリ１２に格納されたデータに基づいて所定の処理を実行する。つまり、各々のＣＰＵ１０_１、１０_２は、フラッシュメモリ１２に格納されているデータ（プログラム）を読み出し、この読み出したプログラムを実行することで所定の処理を実行するプロセッサである。このようにプログラムを実行することで、各々のＣＰＵ１０_１、１０_２はマイクロコントローラ１として機能することができる。なお、各々のＣＰＵ１０_１、１０_２は、フラッシュメモリ１２に格納されているプログラムを各々のＲＡＭ１３_１、１３_２にロードしてから実行するようにしてもよい。
【００１５】
図１に示す半導体装置１は、複数のＣＰＵを備えた構成の一例として、ＣＰＵ１０_１、１０_２を備えた構成を示している。各々のＣＰＵ１０_１、１０_２はそれぞれ、独立したマスタとして機能する。具体的には、ＣＰＵ１０_１が第１のマスタとして機能し、ＣＰＵ１０_２が第２のマスタとして機能する。
【００１６】
各々のＲＡＭ１３_１、１３_２は、各々のＣＰＵ１０_１、１０_２に対応するように設けられている。具体的には、ＣＰＵ１０_１はＲＡＭ１３_１に接続されている。ＣＰＵ１０_２はＲＡＭ１３_２に接続されている。各々のＲＡＭ１３_１、１３_２は、各々のＣＰＵ１０_１、１０_２によって利用されるデータが格納される揮発性メモリである。各々のＲＡＭ１３_１、１３_２に格納されるデータには、各々のＣＰＵ１０_１、１０_２がプログラムを実行する際における演算処理中のデータ等が含まれる。また、上述したように、フラッシュメモリ１２からロードしたプログラムを格納するように構成してもよい。
【００１７】
フラッシュメモリ１２は、各々のＣＰＵ１０_１、１０_２で利用されるデータが格納されている不揮発性メモリである。例えば、フラッシュメモリ１２に格納されているデータとしては、各々のＣＰＵ１０_１、１０_２で実行されるプログラムデータ、フラッシュメモリ１２の状態を示すフラグデータ、セキュリティ鍵データ等が挙げられる。
【００１８】
メモリコントローラ１１は、各々のＣＰＵ１０_１、１０_２からフラッシュメモリ１２へのアクセスを制御する。具体的には、メモリコントローラ１１は、各々のＣＰＵ１０_１、１０_２のフラッシュメモリ１２への書込み／消去処理を制御する。つまり、メモリコントローラ１１は、本実施の形態にかかるフラッシュメモリ制御方法を実施する。
【００１９】
メモリコントローラ１１は、各々のＣＰＵ１０_１、１０_２とフラッシュメモリ１２との間に接続されている。具体的には、各々のＣＰＵ１０_１、１０_２は、周辺バス１５を介してメモリコントローラ１１に接続されている。また、メモリコントローラ１１はフラッシュメモリ１２に接続されている。なお、フラッシュメモリ１２は、各々のＣＰＵ１０_１、１０_２にデータを出力することができるが、各々のＣＰＵ１０_１、１０_２はフラッシュメモリ１２に直接アクセスすることができないように構成されている。
【００２０】
つまり、各々のＣＰＵ１０_１、１０_２は、メモリコントローラ１１を介さなければフラッシュメモリ１２に対してデータの書込み及びデータの消去を実施できないようにしている。なお、各々のＣＰＵ１０_１、１０_２によるフラッシュメモリ１２からのデータの読み出しは、上記の書込み／消去処理と同様にメモリコントローラ１１を介さなければ実施できないようにしてもよく、メモリコントローラ１１を介することなく直接実施できるようにしてもよい。
【００２１】
次に、図２を用いてメモリコントローラ１１の構成について説明する。図２に示すように、メモリコントローラ１１は、アドレス受信部２１、コマンド受信部２３、及び制御部２５を備える。
【００２２】
アドレス受信部２１は、ＣＰＵ１０_１、１０_２から送信されたアドレスデータを周辺バス１５を介して受信する。アドレスデータは、フラッシュメモリ１２におけるアドレスを示すデータである。図２に示すように、アドレス受信部２１は、アドレス指定レジスタ２２を有する。アドレス指定レジスタ２２は、ＣＰＵ１０_１、１０_２からアドレスデータが書き込まれるレジスタである。このアドレス指定レジスタ２２へのＣＰＵ１０_１、１０_２からのアドレスデータの書込みは、アドレスデータの受信に相当する。
【００２３】
コマンド受信部２３は、ＣＰＵ１０_１、１０_２から送信されたライトデータを、周辺バス１５を介して受信する。ライトデータは、メモリコントローラ１１が実施すべき制御内容を、ＣＰＵ１０_１、１０_２がメモリコントローラ１１に指示するために書き込むデータである。ライトデータで指定される制御内容としては、フラッシュメモリ１２へのデータの書込み、及び、フラッシュメモリ１２に格納されているデータの消去などがある。具体的には、ＣＰＵ１０_１、１０_２は、予め定められた順序でライトデータをメモリコントローラ１１に対して書き込むことで、メモリコントローラ１１が実施する制御内容を指定する。この一連のライトデータは、メモリコントローラ１１の制御内容を指定するコマンドに相当する。以下ではライトデータをコマンドという場合もある。
【００２４】
コマンド受信部２３は、コマンド指定レジスタ２４を有する。コマンド指定レジスタ２４は、ＣＰＵ１０_１、１０_２からライトデータが書き込まれるレジスタである。このコマンド指定レジスタ２４へのＣＰＵ１０_１、１０_２からのライトデータの書込みは、ライトデータの受信に相当する。
【００２５】
制御部２５は、フラッシュメモリ１２の制御を実行する。具体的には、制御部２５は、コマンド指定レジスタ２４に書き込まれた一連のライトデータ（コマンド）に対応する制御を、フラッシュメモリ１２における、アドレス指定レジスタ２２に書き込まれたアドレスデータが示すアドレスに対して実施する。
【００２６】
なお、図２では、アドレス指定レジスタ２２とコマンド指定レジスタ２４とが別々に設けられている構成例を示したが、本実施の形態ではこのような構成に限定されない。例えば、アドレス指定レジスタ２２とコマンド指定レジスタ２４は、物理的に１つのレジスタを用いて構成してもよい。この場合、例えば、このレジスタに対して、アドレスデータの後に、ライトデータを書き込む等すればよい。
【００２７】
次に、本実施の形態にかかる半導体装置１の動作について説明する。図３は、本実施の形態にかかる半導体装置で用いられるコマンドの一例を示す図である。図３に示すように、メモリコントローラ１１を制御するコマンドとして、「（Ａ）データ書込みコマンド」、「（Ｂ）データ消去コマンド」、「（Ｃ）中断禁止＋データ書込みコマンド」、及び「（Ｄ）中断禁止＋データ消去コマンド」が準備されている。
【００２８】
まず、フラッシュメモリ１２に対してデータを書き込む場合の動作について説明する。なお、以下では、ＣＰＵ１０_１、１０_２のうちＣＰＵ１０_１がフラッシュメモリ１２にデータを書き込む場合について説明するが、ＣＰＵ１０_２がフラッシュメモリ１２にデータを書き込む場合についても同様である。
【００２９】
フラッシュメモリ１２に対してデータを書き込む場合、ＣＰＵ１０_１は、周辺バス１５を介して、アドレス指定レジスタ２２（図２参照）にアドレスデータを書き込む。これにより、フラッシュメモリ１２のアドレスのうち、データを書き込むアドレスが指定される。
【００３０】
その後、ＣＰＵ１０_１は、図３に示す「（Ａ）データ書込みコマンド」を示すライトデータをコマンド指定レジスタ２４（図２参照）に順次書き込む。具体的には、ＣＰＵ１０_１は、フラッシュメモリ１２に対して４バイトのデータを書き込む場合には、図３に示すように、「Ｈ’Ｅ８」、「Ｈ’０２」、「４バイトのデータ（２バイトのデータを２回：Ｎ＝２）」、「Ｈ’Ｄ０」の順番でライトデータをコマンド指定レジスタ２４に順次書き込む。
【００３１】
また、ＣＰＵ１０_１は、フラッシュメモリ１２に対して１６バイトのデータを書き込む場合には、図３に示すように、「Ｈ’Ｅ８」、「Ｈ’０８」、「１６バイトのデータ（２バイトのデータを８回：Ｎ＝８）」、「Ｈ’Ｄ０」の順番でライトデータをコマンド指定レジスタ２４に順次書き込む。なお、「Ｈ’」は、それに続く数値が１６進数表記であることを意味する。
【００３２】
これに応じて、メモリコントローラ１１の制御部２５は、フラッシュメモリ１２のアドレスのうちアドレス指定レジスタ２２に書き込まれたアドレスデータが示すアドレスに対して、コマンド指定レジスタ２４に対して書き込まれたデータを書き込む。すなわち、制御部２５は、２回目の書込みで「Ｈ’０２」が書き込まれた場合には、３〜４回目に書き込まれた４バイトのデータを、アドレスデータで指定されたアドレスから４バイト分の領域に書き込む。また、制御部１０は、２回目の書込みで「Ｈ’０８」が書き込まれた場合には、３〜１０回目に書き込まれた１６バイトのデータを、アドレスデータで指定されたアドレスから１６バイト分の領域に書き込む。
【００３３】
次に、フラッシュメモリ１２のデータを消去する場合の動作について説明する。フラッシュメモリ１２のデータを消去する場合、ＣＰＵ１０_１は、周辺バス１５を介して、アドレス指定レジスタ２２（図２参照）にアドレスデータを書き込む。これにより、フラッシュメモリ１２のアドレスのうち、データを消去するブロックのアドレスが指定される。
【００３４】
その後、ＣＰＵ１０_１は、「（Ｂ）データ消去コマンド」を示すライトデータをコマンド指定レジスタ２４に順次書き込む。具体的には、ＣＰＵ１０_１は、「Ｈ’２０」、「Ｈ’Ｄ０」の順番でライトデータをコマンド指定レジスタ２４に順次書き込む。
【００３５】
これに応じて、メモリコントローラ１１の制御部２５は、フラッシュメモリ１２のアドレスにおける、アドレス指定レジスタ２２に書き込まれたアドレスデータが示すアドレスのブロックのデータを消去する。
【００３６】
図４は、半導体装置の書込み／消去処理の動作を説明するためのタイミングチャートである。図４に示すタイミングチャートは、上記で説明した「フラッシュメモリ１２へのデータの書込み」および「フラッシュメモリ１２のデータの消去」の際の動作を示している。なお、「フラッシュメモリ１２へのデータの書込み」および「フラッシュメモリ１２のデータの消去」の際のタイミングチャートは共通しているので、図４では書込みコマンド及び消去コマンドを「書込み／消去コマンド」と記載し、書込み処理及び消去処理を「書込み／消去処理」と記載している。図５、図６、図１０、図１１に示すタイミングチャートについても同様である。
【００３７】
メモリコントローラ１１は、フラッシュメモリ１２に対して書込み／消去処理を実行していない場合、待機状態（コマンド待ち状態）となっている。この状態でＣＰＵ１０_１が周辺バス１５に書込み／消去コマンドを出力すると（図４のタイミングｔ１）、メモリコントローラ１１は周辺バス１５を介して書込み／消去コマンドを受信する。このとき、ＣＰＵ１０_１は周辺バス１５にアドレスデータも出力する。
【００３８】
メモリコントローラ１１は、周辺バス１５からアドレスデータを受信すると、アドレス指定レジスタ２２（図２参照）にアドレスデータを書き込む。これにより、フラッシュメモリ１２のアドレスのうち、データを書き込むアドレスが指定される。
【００３９】
また、メモリコントローラ１１は、周辺バス１５から書込み／消去コマンドを受信すると、コマンド指定レジスタ２４（図２参照）に書込み／消去コマンド（具体的には、図３に示す「（Ａ）データ書込みコマンド」、又は「（Ｂ）データ消去コマンド」である）を書き込む（タイミングｔ２）。これにより、書込み／消去処理が実行される。
【００４０】
具体的には、メモリコントローラ１１の制御部２５は、アドレス指定レジスタ２２に書き込まれたアドレスデータが示すアドレスに対して、コマンド指定レジスタ２４に書き込まれたコマンドに対応する書込み／消去処理を実行する。このとき、メモリコントローラ１１は、フラッシュメモリ１２に対する書込み／消去パルス（電圧）の印加を指示するためのパルスビットを所定の期間ハイレベルにする。これにより、フラッシュメモリ１２は書込み／消去処理を開始する。
【００４１】
そして所定の期間が経過した後、メモリコントローラ１１はフラッシュメモリ１２に供給しているパルスビットをロウレベルにする。これによりフラッシュメモリ１２に対する書込み／消去処理が終了する。その後、タイミングｔ３において、メモリコントローラ１１はフラッシュメモリ１２に対してハイレベルの検証ビットを出力する。これにより、フラッシュメモリ１２への書込み／消去処理が正常に行われたか否かが検証される。検証処理が終了すると、メモリコントローラ１１は再び待機状態（コマンド待ち状態）となる（タイミングｔ４）。
【００４２】
上述の動作により、フラッシュメモリ１２への書込み／消去処理が実施される。
【００４３】
ところで、図１に示すようなマルチマスタ構成の半導体装置１では、各々のマスタ（ＣＰＵ１０_１、ＣＰＵ１０_２）によるフラッシュメモリ１２へのアクセスをメモリコントローラ１１が制御している。このとき、メモリコントローラ１１は、一方のマスタ（ＣＰＵ１０_１）がフラッシュメモリ１２に書込み／消去処理を実行している期間に、他方のマスタ（ＣＰＵ１０_２）がフラッシュメモリ１２にアクセスできるように、一方のマスタ（ＣＰＵ１０_１）の書込み／消去処理を中断することができる。
【００４４】
以下、図５に示すタイミングチャートを用いて、フラッシュメモリ１２への書込み／消去処理を中断／再開する際の動作について説明する。なお、図５に示す動作において、図４に示した動作と共通する部分については説明を適宜省略する。
【００４５】
図５に示すように、ＣＰＵ１０_１が周辺バス１５に書込み／消去コマンドを出力すると（タイミングｔ１０１）、メモリコントローラ１１は周辺バス１５を介して書込み／消去コマンドを受信する。
【００４６】
その後、メモリコントローラ１１は、周辺バス１５から受信したコマンドに対応する書込み／消去処理を実行する（タイミングｔ１０２）。このとき、メモリコントローラ１１は、フラッシュメモリ１２に対する書込み／消去パルス（電圧）の印加を指示するためのパルスビットを所定の期間ハイレベルにする。これにより、フラッシュメモリ１２は書込み／消去処理を開始する。
【００４７】
その後、タイミングｔ１０３において、他方のマスタであるＣＰＵ１０_２が周辺バス１５に中断コマンドを出力すると、メモリコントローラ１１は周辺バス１５を介して中断コマンドを受信する。パルスビットがハイレベルの状態でメモリコントローラ１１が中断コマンドを受信すると、メモリコントローラ１１は、パルスビットを所定の時間だけハイレベルにした後にアドレス情報の退避などの中断処理を実行する（タイミングｔ１０４）。中断処理が終了した後、メモリコントローラ１１はコマンド待ち状態に遷移する（タイミングｔ１０５）。中断処理が実施されている間、他方のマスタであるＣＰＵ１０_２は、フラッシュメモリ１２に対して読出し／書込み／消去処理を実行することができる（この処理の図示は省略している）。
【００４８】
他方のマスタであるＣＰＵ１０_２による処理が終了した後、ＣＰＵ１０_２は周辺バス１５に再開コマンドを出力する（タイミングｔ１０６）。メモリコントローラ１１は、周辺バス１５を介して再開コマンドを受信すると、退避情報の復帰などの再開処理を実行する（タイミングｔ１０７）。その後、メモリコントローラ１１は、中断された書込み／消去処理を再開する（タイミングｔ１０８）。このとき、メモリコントローラ１１は、フラッシュメモリ１２に対する書込み／消去パルス（電圧）の印加を指示するためのパルスビットを再び所定の期間ハイレベルにする。これにより、フラッシュメモリ１２は書込み／消去処理を開始する。
【００４９】
そして所定の期間が経過した後、メモリコントローラ１１はフラッシュメモリ１２に供給しているパルスビットをロウレベルにする。これによりフラッシュメモリ１２に対する書込み／消去処理が終了する。その後、タイミングｔ１０９において、メモリコントローラ１１はフラッシュメモリ１２に対してハイレベルの検証ビットを出力する。これにより、フラッシュメモリ１２への書込み／消去処理が正常に行われたか否かが検証される。検証処理が終了すると、メモリコントローラ１１は再び待機状態（コマンド待ち状態）となる（タイミングｔ１１０）。
【００５０】
図５では、一方のＣＰＵ１０_１がフラッシュメモリ１２に書込み／消去処理を実行している間に、他方のＣＰＵ１０_２がメモリコントローラ１１に中断／再開処理を要求した場合の動作について示した。このように他方のＣＰＵ１０_２が中断／再開処理を実行すると、システム上の問題が発生する場合がある。
【００５１】
例えば、ＣＰＵ１０_１がセキュリティ処理のためにセキュリティ鍵データなどの重要なデータの書込み／消去処理をメモリコントローラ１１に要求した後、ＣＰＵ１０_２が中断機能を使用すると、ＣＰＵ１０_１の書込み／消去処理が中断される。通常であれば、その後、再開処理によりＣＰＵ１０_１の書込み／消去処理が再開されるが、何らかの問題が発生した場合は、再開処理を実施してもＣＰＵ１０_１の書込み／消去処理が再開されない場合がある。このような場合は、セキュリティ鍵データの書込みエラーが発生し、セキュリティ上の問題が発生する場合がある。
【００５２】
また、このようにフラッシュメモリ１２への書込み／消去処理を中断／再開する処理を実行すると、書込み／消去処理の時間が長くなる。具体的には、図５に示すように、中断／再開処理を実行すると、中断処理の開始（タイミングｔ１０４）から再開処理の終了（タイミングｔ１０８）までの時間が追加されるため、書込み／消去処理の時間が長くなる。
【００５３】
このような状況を考慮して、本実施の形態にかかる半導体装置では、フラッシュメモリ１２への書込み／消去処理の中断を禁止する機能を追加している。具体的には、メモリコントローラ１１は、一方のマスタ（ＣＰＵ１０_１）がフラッシュメモリ１２に対して書込み／消去処理を実行している間、他方のマスタ（ＣＰＵ１０_２）のフラッシュメモリ１２へのアクセスに起因した、現在実行中の書込み／消去処理の中断を禁止することができるように構成されている。
【００５４】
つまり、メモリコントローラ１１は、一方のマスタ（ＣＰＵ１０_１）から受信したコマンドが、書込み／消去処理の中断を禁止している場合、一方のマスタ（ＣＰＵ１０_１）がフラッシュメモリ１２に対して書込み／消去処理を実行している間、当該実行中の書込み／消去処理の中断を禁止する。
【００５５】
具体的に説明すると、本実施の形態にかかる半導体装置１では、メモリコントローラ１１を制御するコマンドとして、実行中の書込み／消去処理の中断を禁止するコマンドを有する。つまり、図３に示すように、「（Ｃ）中断禁止＋データ書込みコマンド」、及び「（Ｄ）中断禁止＋データ消去コマンド」を有する。
【００５６】
以下、図３に示す「（Ｃ）中断禁止＋データ書込みコマンド」、及び「（Ｄ）中断禁止＋データ消去コマンド」を実行した場合の動作について、図６に示すタイミングチャートを用いて説明する。なお、「フラッシュメモリ１２へのデータの書込み」および「フラッシュメモリ１２のデータの消去」の際のタイミングチャートは共通しているので、図６では「（Ｃ）中断禁止＋データ書込みコマンド」、及び「（Ｄ）中断禁止＋データ消去コマンド」を合わせて、「中断禁止＋書込み／消去コマンド」と記載している。また、「中断禁止＋データ書込み処理」、及び「中断禁止＋データ消去処理」を「中断禁止＋書込み／消去処理」と記載している。
【００５７】
メモリコントローラ１１は、フラッシュメモリ１２に対して書込み／消去処理を実行していない場合、待機状態（コマンド待ち状態）となっている。この状態でＣＰＵ１０_１が周辺バス１５に「中断禁止＋書込み／消去処理コマンド」を出力すると（図６のタイミングｔ１１）、メモリコントローラ１１は周辺バス１５を介して「中断禁止＋書込み／消去処理コマンド」を受信する。このとき、ＣＰＵ１０_１は周辺バス１５にアドレスデータも出力する。
【００５８】
メモリコントローラ１１は、周辺バス１５からアドレスデータを受信すると、アドレス指定レジスタ２２（図２参照）にアドレスデータを書き込む。これにより、フラッシュメモリ１２のアドレスにおける、データを書き込むアドレスが指定される。なお、データ消去処理の場合は、ブロック単位で消去するので、フラッシュメモリ１２のアドレスのうち、データを消去するブロックのアドレスが指定される。
【００５９】
また、メモリコントローラ１１は、周辺バス１５から「中断禁止＋書込み／消去処理コマンド」を受信すると、コマンド指定レジスタ２４（図２参照）に「中断禁止＋書込み／消去処理コマンド」（具体的には、図３に示す「（Ｃ）中断禁止＋データ書込みコマンド」、又は「（Ｄ）中断禁止＋データ消去コマンド」）を書き込む（タイミングｔ１２）。これにより、「中断禁止＋書込み／消去処理」が実行される。
【００６０】
具体的には、メモリコントローラ１１の制御部２５は、アドレス指定レジスタ２２に書き込まれたアドレスデータが示すアドレスに対して、コマンド指定レジスタ２４に書き込まれたコマンドに対応する書込み／消去処理を実行する。このとき、メモリコントローラ１１は、フラッシュメモリ１２に対する書込み／消去パルス（電圧）の印加を指示するためのパルスビットを所定の期間ハイレベルにする。これにより、フラッシュメモリ１２は書込み／消去処理を開始する。なお、コマンドを用いて書込み／消去処理を実行する際の動作については、図３に示した「（Ａ）データ書込みコマンド」および「（Ｂ）データ消去コマンド」を用いて書込み処理および消去処理を実行する場合の動作と同様である。
【００６１】
また、メモリコントローラ１１のコマンド指定レジスタ２４には「中断禁止」を示すコマンドが書き込まれている。具体的には、図３に示す「（Ｃ）中断禁止＋データ書込みコマンド」では、１回目のライトデータ「Ｈ’１７」が「中断禁止＋データ書込み処理」を意味している。また、「（Ｄ）中断禁止＋データ消去コマンド」では、１回目のライトデータ「Ｈ’ＤＦ」が「中断禁止＋データ消去処理」を意味している。
【００６２】
この場合は、メモリコントローラ１１は、ＣＰＵ１０_１がフラッシュメモリ１２に対して書込み／消去処理を実行している間、当該実行中の書込み／消去処理の中断を禁止する。つまり、図６のタイミングｔ１３に示すように、ＣＰＵ１０_２が周辺バス１５を介してメモリコントローラ１１に中断コマンドを供給した場合であっても、メモリコントローラ１１はＣＰＵ１０_２の中断コマンドを無視して、ＣＰＵ１０_１のフラッシュメモリ１２への書込み／消去処理を続行する。
【００６３】
所定の期間が経過した後、メモリコントローラ１１はフラッシュメモリ１２に供給しているパルスビットをロウレベルにする。これによりフラッシュメモリ１２に対する書込み／消去処理が終了する。その後、タイミングｔ１４において、メモリコントローラ１１はフラッシュメモリ１２に対してハイレベルの検証ビットを出力する。これにより、フラッシュメモリ１２への書込み／消去処理が正常に行われたか否かが検証される。検証処理が終了すると、メモリコントローラ１１は再び待機状態（コマンド待ち状態）となる（タイミングｔ１５）。
【００６４】
上述の動作により、フラッシュメモリ１２への「中断禁止＋書込み／消去処理」が実施される。
【００６５】
このように、本実施の形態にかかる半導体装置では、一方のマスタ（ＣＰＵ１０_１）がフラッシュメモリ１２に対して書込み／消去処理を実行している間は、他方のマスタ（ＣＰＵ１０_２）からフラッシュメモリ１２へのアクセス要求があった場合であっても、一方のマスタ（ＣＰＵ１０_１）の実行中の書込み／消去処理が中断されないように構成している。
【００６６】
これにより、フラッシュメモリへの重要なデータの書込み／消去処理が途中で中断されることを抑制することができるので、システム上の問題が発生することを抑制することができる。したがって、フラッシュメモリが搭載された半導体装置において安定した動作を実現することが可能な半導体装置、及びフラッシュメモリ制御方法を提供することができる。
【００６７】
また、フラッシュメモリへの書込み／消去処理が途中で中断されることを抑制することで、フラッシュメモリへの書込み／消去処理に要する時間が長くなることを抑制することができる。
【００６８】
また、本実施の形態では、例えば、マスタ（ＣＰＵ１０_１、ＣＰＵ１０_２）がフラッシュメモリに対して書込み／消去するデータがフラグデータ及びセキュリティ鍵データの少なくとも一つである場合に、実行中の書込み／消去処理の中断を禁止するようにしてもよい。
【００６９】
つまり、フラグデータやセキュリティ鍵データなどは重要なデータであるため、このような重要なデータをフラッシュメモリに書込み／消去した際にエラーが発生すると、システムに大きな問題が発生する。このため、このような重要なデータをフラッシュメモリに書込み／消去する場合は、実行中の書込み／消去処理の中断を禁止することが好ましい。
【００７０】
一方で、実行中の書込み／消去処理の中断を全て禁止してしまうと、システムの柔軟性が低下する。よって本実施の形態では、フラグデータやセキュリティ鍵データなどの重要なデータをフラッシュメモリに書込み／消去する場合は、実行中の書込み／消去処理の中断を禁止し、これ以外のデータ（重要ではない通常のデータ）をフラッシュメモリに書込み／消去する場合は、実行中の書込み／消去処理の中断を許可するようにしてもよい。
【００７１】
つまり、扱うデータの重要度に応じて、図３に示したコマンドの中から使用するコマンドを選択できるようにすることで、システムの柔軟性を保ちつつ、システムの動作を安定させることができる。具体的には、重要なデータをフラッシュメモリに書込み／消去する場合は、図３の「（Ｃ）中断禁止＋データ書込みコマンド」、「（Ｄ）中断禁止＋データ消去コマンド」を選択し、これ以外のデータ（重要ではない通常のデータ）をフラッシュメモリに書込み／消去する場合は、図３の「（Ａ）データ書込みコマンド」、「（Ｂ）データ消去コマンド」を選択する。
【００７２】
また、本実施の形態にかかる半導体装置は、複数のマスタを備える構成であればよく、各々のマスタの数は任意に設定することができる。図１に示した半導体装置１では、２つのＣＰＵ１０_１、１０_２を備える構成例を示し、各々のＣＰＵ１０_１、１０_２がそれぞれ独立したマスタとして機能する例を示した。しかしながら、本実施の形態にかかる半導体装置では、３つ以上のＣＰＵを備えていてもよい。
【００７３】
また、本実施の形態では、図７に示す半導体装置２のように、１つのＣＰＵ３０と１つのＲＡＭ３３とを備える構成としてもよい。この場合は、１つのＣＰＵ３０が複数のマスタとして機能するように構成する。つまり、ハードウェア的には１つのＣＰＵ３０で構成しているが、仮想化技術を用いて、ＣＰＵ３０の処理能力を分割することで、ＣＰＵ３０の中に複数の仮想ＣＰＵを含めることができる。例えば、仮想ＣＰＵ_Ｖ１および仮想ＣＰＵ_Ｖ２を同一のＣＰＵ３０を用いて構成した場合、仮想ＣＰＵ_Ｖ１が第１のマスタとして機能し、仮想ＣＰＵ_Ｖ２が第２のマスタとして機能する。なお、このときの仮想ＣＰＵの数も任意に設定することができる。
【００７４】
上記実施の形態によれば、フラッシュメモリが搭載された半導体装置において安定した動作を実現することが可能な半導体装置、及びフラッシュメモリ制御方法を提供することができる。
【００７５】
＜実施の形態２＞
次に、実施の形態２について説明する。
実施の形態２にかかる半導体装置では、実施の形態１で説明した半導体装置１と比べてメモリコントローラの構成が異なる。これ以外については、実施の形態１で説明した半導体装置と同様であるので、重複した説明は適宜省略する。
【００７６】
図８は、本実施の形態にかかる半導体装置が備えるメモリコントローラ４０を示すブロック図である。図８に示すように、メモリコントローラ４０は、アドレス受信部４１、コマンド受信部４３、マスタ受信部４５、及び制御部４８を備える。
【００７７】
アドレス受信部４１は、アドレス指定レジスタ４２を備える。なお、アドレス受信部４１、及びアドレス指定レジスタ４２の構成および動作については、図２に示したアドレス受信部２１、及びアドレス指定レジスタ２２の構成および動作と同様であるので重複した説明は省略する。
【００７８】
コマンド受信部４３は、コマンド指定レジスタ４４を備える。コマンド指定レジスタ４４には、図９に示すようなコマンド、つまり「（Ａ）データ書込みコマンド」、「（Ｂ）データ消去コマンド」が書き込まれる。なお、コマンド受信部４３、及びコマンド指定レジスタ４４の構成および動作については、図２に示したコマンド受信部２３、及びコマンド指定レジスタ２４の構成および動作と同様であるので、重複した説明は省略する。
【００７９】
マスタ受信部４５は、マスタ情報保持レジスタ４６を備える。マスタ情報保持レジスタ４６は、フラッシュメモリ１２にアクセスしているマスタ、つまり、フラッシュメモリ１２に書込み／消去処理を実行しているマスタ（図１のＣＰＵ１０_１又はＣＰＵ１０_２）の情報を保持するレジスタである。各々のＣＰＵ１０_１、１０_２は、フラッシュメモリ１２にアクセスする際にアドレスデータ、及びライトデータ（コマンド）を周辺バス１５に出力する。マスタ情報保持レジスタ４６は、このときコマンドを発行したマスタ情報（発行元のＣＰＵ情報）を周辺バス１５から受信して保持する。例えば、マスタ情報は周辺バス１５の信号線として提供されるマスタ情報である。
【００８０】
制御部４８は、フラッシュメモリ１２の制御を実行する。具体的には、制御部４８は、コマンド指定レジスタ４４に書き込まれた一連のライトデータ（コマンド）に対応する制御を、フラッシュメモリ１２のうち、アドレス指定レジスタ４２に書き込まれたアドレスデータが示すアドレスに対して実施する。
【００８１】
また、制御部４８は、実行中の書込み／消去処理を中断する中断コマンドを受信した際、マスタ情報保持レジスタ４６に保持されているマスタと、中断コマンドを送信したマスタと、の比較結果に基づいて、実行中の書込み／消去処理の中断を禁止するか否かを決定する。
【００８２】
具体的には、制御部４８は、マスタ情報保持レジスタ４６に保持されているマスタが、中断コマンドを送信したマスタと異なる場合、実行中の書込み／消去処理の中断を禁止する。一方、制御部４８は、マスタ情報保持レジスタ４６に保持されているマスタが、中断コマンドを送信したマスタと同一である場合、実行中の書込み／消去処理の中断を許可する。
【００８３】
次に、図１０、図１１を用いて本実施の形態にかかる半導体装置の動作について説明する。図１０は、フラッシュメモリ１２への書込み／消去処理の動作を説明するためのタイミングチャートであり、マスタ情報保持レジスタ４６に保持されているマスタと中断コマンドを送信したマスタとが異なる場合の動作を示している。図１１は、フラッシュメモリ１２への書込み／消去処理の動作を説明するためのタイミングチャートであり、マスタ情報保持レジスタ４６に保持されているマスタと中断コマンドを送信したマスタとが同一である場合の動作を示している。
【００８４】
まず、図１０に示す動作について説明する。メモリコントローラ４０がフラッシュメモリ１２に対して書込み／消去処理を実行していない場合、メモリコントローラ４０は待機状態（コマンド待ち状態）となっている。この状態でＣＰＵ１０_１が周辺バス１５に書込み／消去処理コマンド（図９参照）を出力すると（タイミングｔ２１）、メモリコントローラ４０は周辺バス１５を介して書込み／消去処理コマンドを受信する。このとき、ＣＰＵ１０_１は周辺バス１５にアドレスデータも出力する。
【００８５】
メモリコントローラ４０は、周辺バス１５からアドレスデータを受信すると、アドレス指定レジスタ４２（図８参照）にアドレスデータを書き込む。これにより、フラッシュメモリ１２のアドレスのうち、データを書き込むアドレスが指定される。なお、データ消去処理の場合は、ブロック単位で消去するので、フラッシュメモリ１２のアドレスのうち、データを消去するブロックのアドレスが指定される。
【００８６】
また、メモリコントローラ４０は、周辺バス１５から書込み／消去処理コマンドを受信すると、コマンド指定レジスタ４４（図８参照）に書込み／消去処理コマンド（具体的には、図９に示す「（Ａ）データ書込みコマンド」、又は「（Ｂ）データ消去コマンド」）を書き込む（タイミングｔ２２）。これにより、書込み／消去処理が実行される。
【００８７】
具体的には、メモリコントローラ４０の制御部４８は、アドレス指定レジスタ４２に書き込まれたアドレスデータが示すアドレスに対して、コマンド指定レジスタ４４に書き込まれたコマンドに対応する書込み／消去処理を実行する。このとき、メモリコントローラ４０は、フラッシュメモリ１２に対する書込み／消去パルス（電圧）の印加を指示するためのパルスビットを所定の期間ハイレベルにする。これにより、フラッシュメモリ１２は書込み／消去処理を開始する。なお、コマンドを用いて書込み／消去処理を実行する際の動作については、図３に示した「（Ａ）データ書込みコマンド」および「（Ｂ）データ消去コマンド」を用いて書込み処理および消去処理を実行する場合の動作と同様であるので、重複した説明は省略する。
【００８８】
また、マスタ情報保持レジスタ４６は、このとき（タイミングｔ２１）コマンドを発行したマスタ（ＣＰＵ１０_１）の情報を周辺バス１５から受信して保持する。
【００８９】
この状態において、ＣＰＵ１０_２から周辺バス１５に中断コマンドが出力されると、メモリコントローラ４０は、周辺バス１５を介してＣＰＵ１０_２から出力された中断コマンドを受信する（タイミングｔ２３）。そして、メモリコントローラ４０は、マスタ情報保持レジスタ４６に格納されているマスタ情報（ＣＰＵ１０_１）と、中断コマンドを送信したマスタ情報（ＣＰＵ１０_２）とを比較する。この場合は、マスタ情報保持レジスタ４６に格納されているマスタ情報（ＣＰＵ１０_１）と、中断コマンドを送信したマスタ情報（ＣＰＵ１０_２）とが異なるので、メモリコントローラ４０はＣＰＵ１０_２の中断コマンドを無視して、ＣＰＵ１０_１のフラッシュメモリ１２への書込み／消去処理を続行する。
【００９０】
所定の期間が経過した後、メモリコントローラ４０はフラッシュメモリ１２に供給しているパルスビットをロウレベルにする。これによりフラッシュメモリ１２に対する書込み／消去処理が終了する。その後、タイミングｔ２４において、メモリコントローラ４０はフラッシュメモリ１２に対してハイレベルの検証ビットを出力する。これにより、フラッシュメモリ１２への書込み／消去処理が正常に行われたか否かが検証される。検証処理が終了すると、メモリコントローラ４０は再び待機状態（コマンド待ち状態）となる（タイミングｔ２５）。
【００９１】
上述の動作により、フラッシュメモリ１２への書込み／消去処理が実施される。図１０に示す動作では、マスタ情報保持レジスタ４６に保持されているマスタ（ＣＰＵ１０_１）が、中断コマンドを送信したマスタ（ＣＰＵ１０_２）と異なるので、現在実行中の書込み／消去処理の中断が禁止される。
【００９２】
次に、マスタ情報保持レジスタ４６に保持されているマスタと中断コマンドを送信したマスタとが同一である場合の動作について、図１１に示すタイミングチャートを用いて説明する。
【００９３】
メモリコントローラ４０がフラッシュメモリ１２に対して書込み／消去処理を実行していない場合、メモリコントローラ４０は待機状態（コマンド待ち状態）となっている。この状態でＣＰＵ１０_１が周辺バス１５に書込み／消去処理コマンド（図９参照）を出力すると（タイミングｔ３１）、メモリコントローラ４０は周辺バス１５を介して書込み／消去処理コマンドを受信する。このとき、ＣＰＵ１０_１は周辺バス１５にアドレスデータも出力する。
【００９４】
メモリコントローラ４０は、周辺バス１５からアドレスデータを受信すると、アドレス指定レジスタ４２（図８参照）にアドレスデータを書き込む。これにより、フラッシュメモリ１２のアドレスのうち、データを書き込むアドレスが指定される。なお、データ消去処理の場合は、ブロック単位で消去するので、フラッシュメモリ１２のアドレスにおける、データを消去するブロックのアドレスが指定される。
【００９５】
また、メモリコントローラ４０は、周辺バス１５から書込み／消去処理コマンドを受信すると、コマンド指定レジスタ４４（図８参照）に書込み／消去処理コマンド（具体的には、図９に示す「（Ａ）データ書込みコマンド」、又は「（Ｂ）データ消去コマンド」）を書き込む（タイミングｔ３２）。これにより、書込み／消去処理が実行される。
【００９６】
具体的には、メモリコントローラ４０の制御部４８は、アドレス指定レジスタ４２に書き込まれたアドレスデータが示すアドレスに対して、コマンド指定レジスタ４４に書き込まれたコマンドに対応する書込み／消去処理を実行する。このとき、メモリコントローラ４０は、フラッシュメモリ１２に対する書込み／消去パルス（電圧）の印加を指示するためのパルスビットを所定の期間ハイレベルにする。これにより、フラッシュメモリ１２は書込み／消去処理を開始する。なお、コマンドを用いて書込み／消去処理を実行する際の動作については、図３に示した「（Ａ）データ書込みコマンド」および「（Ｂ）データ消去コマンド」を用いて書込み処理および消去処理を実行する場合の動作と同様であるので、重複した説明は省略する。
【００９７】
また、マスタ情報保持レジスタ４６は、このとき（タイミングｔ３１）コマンドを発行したマスタ（ＣＰＵ１０_１）の情報を周辺バス１５から受信して保持する。
【００９８】
この状態において、ＣＰＵ１０_１から周辺バス１５に中断コマンドが出力されると、メモリコントローラ４０は、周辺バス１５を介してＣＰＵ１０_１から出力された中断コマンドを受信する（タイミングｔ３３）。そして、メモリコントローラ４０は、マスタ情報保持レジスタ４６に格納されているマスタ情報（ＣＰＵ１０_１）と、中断コマンドを送信したマスタ情報（ＣＰＵ１０_１）とを比較する。この場合は、マスタ情報保持レジスタ４６に格納されているマスタ情報（ＣＰＵ１０_１）と、中断コマンドを送信したマスタ情報（ＣＰＵ１０_１）とが同一であるので、メモリコントローラ４０はＣＰＵ１０_１の中断要求を許可して、ＣＰＵ１０_１のフラッシュメモリ１２への書込み／消去処理を中断する。
【００９９】
つまり、パルスビットがハイレベルの状態でメモリコントローラ４０が中断コマンドを受信すると、メモリコントローラ４０は、パルスビットを所定の時間だけハイレベルにした後にアドレス情報の退避などの中断処理を実行する（タイミングｔ３４）。中断処理が終了した後、メモリコントローラ４０はコマンド待ち状態に遷移する（タイミングｔ３５）。中断処理が実施されている間、ＣＰＵ１０_１は、フラッシュメモリ１２に対して読出し／書込み／消去処理を実行することができる（この処理の図示は省略している）。
【０１００】
なお、これ以降の処理（再開処理等）については、図５のタイミングｔ１０７以降の処理と同様であるので、重複した説明は省略する。
【０１０１】
上述の動作により、フラッシュメモリ１２への書込み／消去処理が実施される。図１１に示す動作では、マスタ情報保持レジスタ４６に保持されているマスタ（ＣＰＵ１０_１）が、中断コマンドを送信したマスタ（ＣＰＵ１０_１）と同一であるので、現在実行中の書込み／消去処理の中断が許可される。
【０１０２】
本実施の形態にかかる半導体装置においても、フラッシュメモリへの重要なデータの書込み／消去処理が途中で中断されることを抑制することができるので、システム上の問題が発生することを抑制することができる。したがって、フラッシュメモリが搭載された半導体装置において安定した動作を実現することが可能な半導体装置、及びフラッシュメモリ制御方法を提供することができる。
【０１０３】
また、本実施の形態にかかる半導体装置では、図１１に示したように、同一マスタによる書込み／消去処理の中断が可能となる。このため、書込み／消去処理の優先度が他のマスタより高く、且つ、自マスタが現在実行している書込み／消去処理よりも優先度が高い処理が発生した場合に、現在実行している自マスタの書込み／消去処理を中断することができる。よって、各々の処理の優先度を考慮して、フラッシュメモリへの書込み／消去処理を適切に制御することができる。
【０１０４】
なお、本実施の形態において、同一マスタによる中断処理を禁止したい場合は、図３に示したような「（Ｃ）中断禁止＋データ書込みコマンド」、及び「（Ｄ）中断禁止＋データ消去コマンド」を追加してもよい。
【０１０５】
また、本実施の形態では、マスタ情報保持レジスタ４６に保持されているマスタと、中断コマンドを送信したマスタと、の比較結果に基づいて、実行中の書込み／消去処理の中断を禁止するか否かを決定する際、各々のマスタの優先度を用いてもよい。
【０１０６】
例えば、各々のマスタの優先度に関する情報は、メモリコントローラ４０が備える制御部４８に予め格納されており、制御部４８は、マスタ情報保持レジスタ４６に保持されているマスタの優先度と、中断コマンドを送信したマスタの優先度と、の比較結果に基づいて、実行中の書込み／消去処理の中断を禁止するか否かを決定してもよい。
【０１０７】
具体的には、メモリコントローラ４０は、マスタ情報保持レジスタ４６に保持されているマスタの優先度が、中断コマンドを送信したマスタの優先度よりも高い場合、実行中の書込み／消去処理の中断を禁止するようにしてもよい。また、メモリコントローラ４０は、マスタ情報保持レジスタ４６に保持されているマスタの優先度が、中断コマンドを送信したマスタの優先度よりも低い場合、実行中の書込み／消去処理の中断を許可するようにしてもよい。
【０１０８】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【０１０９】
１、２  半導体装置
１０_１、１０_２、３０  ＣＰＵ（マスタ）
１１  メモリコントローラ
１２  フラッシュメモリ
１３_１、１３_２、３３  ＲＡＭ
１５  周辺バス
２１  アドレス受信部
２２  アドレス指定レジスタ
２３  コマンド受信部
２４  コマンド指定レジスタ
２５  制御部
４０  メモリコントローラ
４１  アドレス受信部
４２  アドレス指定レジスタ
４３  コマンド受信部
４４  コマンド指定レジスタ
４５  マスタ受信部
４６  マスタ情報保持レジスタ
４８  制御部
【図１】
2019008642.tif 000003
【図２】
2019008642.tif 000004
【図３】
2019008642.tif 000005
【図４】
2019008642.tif 000006
【図５】
2019008642.tif 000007
【図６】
2019008642.tif 000008
【図７】
2019008642.tif 000009
【図８】
2019008642.tif 000010
【図９】
2019008642.tif 000011
【図１０】
2019008642.tif 000012
【図１１】
2019008642.tif 000013