(58)【調査した分野】(Int.Cl.,DB名)
前記メモリコントローラは、前記マスタ情報保持レジスタに保持されているマスタが前記中断コマンドを送信したマスタと異なる場合、前記実行中の書込み/消去処理の中断を禁止する、請求項3に記載の半導体装置。
前記メモリコントローラは、前記マスタ情報保持レジスタに保持されているマスタが前記中断コマンドを送信したマスタと同一である場合、前記実行中の書込み/消去処理の中断を許可する、請求項3に記載の半導体装置。
前記メモリコントローラは、前記マスタ情報保持レジスタに保持されているマスタの優先度が、前記中断コマンドを送信したマスタの優先度よりも高い場合、前記実行中の書込み/消去処理の中断を禁止する、請求項3に記載の半導体装置。
前記メモリコントローラは、前記マスタ情報保持レジスタに保持されているマスタの優先度が、前記中断コマンドを送信したマスタの優先度よりも低い場合、前記実行中の書込み/消去処理の中断を許可する、請求項3に記載の半導体装置。
前記メモリコントローラは、前記第1のマスタが前記フラッシュメモリに対して書込み/消去しているデータがフラグデータ及びセキュリティ鍵データの少なくとも一つである場合、前記実行中の書込み/消去処理の中断を禁止する、請求項1に記載の半導体装置。
【発明を実施するための形態】
【0012】
<実施の形態1>
以下、図面を参照して実施の形態1について説明する。
図1は、実施の形態1にかかる半導体装置を示すブロック図である。
図1に示すように、本実施の形態にかかる半導体装置1は、CPU(Central Processing Unit)10_1、10_2、メモリコントローラ11、フラッシュメモリ12、RAM(Random Access Memory)13_1、13_2、及び周辺バス15を備える。本実施の形態にかかる半導体装置1は、例えばマイクロコントローラである。なお、本明細書では、CPU10_1、CPU10_2をそれぞれ、CPU0、CPU1と記載する場合もある。また、CPU10_1、CPU10_2を総称してCPUと記載する場合もある。
【0013】
また、本明細書において、「フラッシュメモリへの書込み/消去処理」とは、「フラッシュメモリへの書込み処理」、又は「フラッシュメモリへの消去処理」を意味する。本明細書では、「フラッシュメモリへの書込み処理」と「フラッシュメモリへの消去処理」とを特に区別しない場合は、「フラッシュメモリへの書込み/消去処理」と記載する。
【0014】
各々のCPU(マスタ)10_1、10_2は、フラッシュメモリ12に格納されたデータに基づいて所定の処理を実行する。つまり、各々のCPU10_1、10_2は、フラッシュメモリ12に格納されているデータ(プログラム)を読み出し、この読み出したプログラムを実行することで所定の処理を実行するプロセッサである。このようにプログラムを実行することで、各々のCPU10_1、10_2はマイクロコントローラ1として機能することができる。なお、各々のCPU10_1、10_2は、フラッシュメモリ12に格納されているプログラムを各々のRAM13_1、13_2にロードしてから実行するようにしてもよい。
【0015】
図1に示す半導体装置1は、複数のCPUを備えた構成の一例として、CPU10_1、10_2を備えた構成を示している。各々のCPU10_1、10_2はそれぞれ、独立したマスタとして機能する。具体的には、CPU10_1が第1のマスタとして機能し、CPU10_2が第2のマスタとして機能する。
【0016】
各々のRAM13_1、13_2は、各々のCPU10_1、10_2に対応するように設けられている。具体的には、CPU10_1はRAM13_1に接続されている。CPU10_2はRAM13_2に接続されている。各々のRAM13_1、13_2は、各々のCPU10_1、10_2によって利用されるデータが格納される揮発性メモリである。各々のRAM13_1、13_2に格納されるデータには、各々のCPU10_1、10_2がプログラムを実行する際における演算処理中のデータ等が含まれる。また、上述したように、フラッシュメモリ12からロードしたプログラムを格納するように構成してもよい。
【0017】
フラッシュメモリ12は、各々のCPU10_1、10_2で利用されるデータが格納されている不揮発性メモリである。例えば、フラッシュメモリ12に格納されているデータとしては、各々のCPU10_1、10_2で実行されるプログラムデータ、フラッシュメモリ12の状態を示すフラグデータ、セキュリティ鍵データ等が挙げられる。
【0018】
メモリコントローラ11は、各々のCPU10_1、10_2からフラッシュメモリ12へのアクセスを制御する。具体的には、メモリコントローラ11は、各々のCPU10_1、10_2のフラッシュメモリ12への書込み/消去処理を制御する。つまり、メモリコントローラ11は、本実施の形態にかかるフラッシュメモリ制御方法を実施する。
【0019】
メモリコントローラ11は、各々のCPU10_1、10_2とフラッシュメモリ12との間に接続されている。具体的には、各々のCPU10_1、10_2は、周辺バス15を介してメモリコントローラ11に接続されている。また、メモリコントローラ11はフラッシュメモリ12に接続されている。なお、フラッシュメモリ12は、各々のCPU10_1、10_2にデータを出力することができるが、各々のCPU10_1、10_2はフラッシュメモリ12に直接アクセスすることができないように構成されている。
【0020】
つまり、各々のCPU10_1、10_2は、メモリコントローラ11を介さなければフラッシュメモリ12に対してデータの書込み及びデータの消去を実施できないようにしている。なお、各々のCPU10_1、10_2によるフラッシュメモリ12からのデータの読み出しは、上記の書込み/消去処理と同様にメモリコントローラ11を介さなければ実施できないようにしてもよく、メモリコントローラ11を介することなく直接実施できるようにしてもよい。
【0021】
次に、
図2を用いてメモリコントローラ11の構成について説明する。
図2に示すように、メモリコントローラ11は、アドレス受信部21、コマンド受信部23、及び制御部25を備える。
【0022】
アドレス受信部21は、CPU10_1、10_2から送信されたアドレスデータを周辺バス15を介して受信する。アドレスデータは、フラッシュメモリ12におけるアドレスを示すデータである。
図2に示すように、アドレス受信部21は、アドレス指定レジスタ22を有する。アドレス指定レジスタ22は、CPU10_1、10_2からアドレスデータが書き込まれるレジスタである。このアドレス指定レジスタ22へのCPU10_1、10_2からのアドレスデータの書込みは、アドレスデータの受信に相当する。
【0023】
コマンド受信部23は、CPU10_1、10_2から送信されたライトデータを、周辺バス15を介して受信する。ライトデータは、メモリコントローラ11が実施すべき制御内容を、CPU10_1、10_2がメモリコントローラ11に指示するために書き込むデータである。ライトデータで指定される制御内容としては、フラッシュメモリ12へのデータの書込み、及び、フラッシュメモリ12に格納されているデータの消去などがある。具体的には、CPU10_1、10_2は、予め定められた順序でライトデータをメモリコントローラ11に対して書き込むことで、メモリコントローラ11が実施する制御内容を指定する。この一連のライトデータは、メモリコントローラ11の制御内容を指定するコマンドに相当する。以下ではライトデータをコマンドという場合もある。
【0024】
コマンド受信部23は、コマンド指定レジスタ24を有する。コマンド指定レジスタ24は、CPU10_1、10_2からライトデータが書き込まれるレジスタである。このコマンド指定レジスタ24へのCPU10_1、10_2からのライトデータの書込みは、ライトデータの受信に相当する。
【0025】
制御部25は、フラッシュメモリ12の制御を実行する。具体的には、制御部25は、コマンド指定レジスタ24に書き込まれた一連のライトデータ(コマンド)に対応する制御を、フラッシュメモリ12における、アドレス指定レジスタ22に書き込まれたアドレスデータが示すアドレスに対して実施する。
【0026】
なお、
図2では、アドレス指定レジスタ22とコマンド指定レジスタ24とが別々に設けられている構成例を示したが、本実施の形態ではこのような構成に限定されない。例えば、アドレス指定レジスタ22とコマンド指定レジスタ24は、物理的に1つのレジスタを用いて構成してもよい。この場合、例えば、このレジスタに対して、アドレスデータの後に、ライトデータを書き込む等すればよい。
【0027】
次に、本実施の形態にかかる半導体装置1の動作について説明する。
図3は、本実施の形態にかかる半導体装置で用いられるコマンドの一例を示す図である。
図3に示すように、メモリコントローラ11を制御するコマンドとして、「(A)データ書込みコマンド」、「(B)データ消去コマンド」、「(C)中断禁止+データ書込みコマンド」、及び「(D)中断禁止+データ消去コマンド」が準備されている。
【0028】
まず、フラッシュメモリ12に対してデータを書き込む場合の動作について説明する。なお、以下では、CPU10_1、10_2のうちCPU10_1がフラッシュメモリ12にデータを書き込む場合について説明するが、CPU10_2がフラッシュメモリ12にデータを書き込む場合についても同様である。
【0029】
フラッシュメモリ12に対してデータを書き込む場合、CPU10_1は、周辺バス15を介して、アドレス指定レジスタ22(
図2参照)にアドレスデータを書き込む。これにより、フラッシュメモリ12のアドレスのうち、データを書き込むアドレスが指定される。
【0030】
その後、CPU10_1は、
図3に示す「(A)データ書込みコマンド」を示すライトデータをコマンド指定レジスタ24(
図2参照)に順次書き込む。具体的には、CPU10_1は、フラッシュメモリ12に対して4バイトのデータを書き込む場合には、
図3に示すように、「H’E8」、「H’02」、「4バイトのデータ(2バイトのデータを2回:N=2)」、「H’D0」の順番でライトデータをコマンド指定レジスタ24に順次書き込む。
【0031】
また、CPU10_1は、フラッシュメモリ12に対して16バイトのデータを書き込む場合には、
図3に示すように、「H’E8」、「H’08」、「16バイトのデータ(2バイトのデータを8回:N=8)」、「H’D0」の順番でライトデータをコマンド指定レジスタ24に順次書き込む。なお、「H’」は、それに続く数値が16進数表記であることを意味する。
【0032】
これに応じて、メモリコントローラ11の制御部25は、フラッシュメモリ12のアドレスのうちアドレス指定レジスタ22に書き込まれたアドレスデータが示すアドレスに対して、コマンド指定レジスタ24に対して書き込まれたデータを書き込む。すなわち、制御部25は、2回目の書込みで「H’02」が書き込まれた場合には、3〜4回目に書き込まれた4バイトのデータを、アドレスデータで指定されたアドレスから4バイト分の領域に書き込む。また、制御部10は、2回目の書込みで「H’08」が書き込まれた場合には、3〜10回目に書き込まれた16バイトのデータを、アドレスデータで指定されたアドレスから16バイト分の領域に書き込む。
【0033】
次に、フラッシュメモリ12のデータを消去する場合の動作について説明する。フラッシュメモリ12のデータを消去する場合、CPU10_1は、周辺バス15を介して、アドレス指定レジスタ22(
図2参照)にアドレスデータを書き込む。これにより、フラッシュメモリ12のアドレスのうち、データを消去するブロックのアドレスが指定される。
【0034】
その後、CPU10_1は、「(B)データ消去コマンド」を示すライトデータをコマンド指定レジスタ24に順次書き込む。具体的には、CPU10_1は、「H’20」、「H’D0」の順番でライトデータをコマンド指定レジスタ24に順次書き込む。
【0035】
これに応じて、メモリコントローラ11の制御部25は、フラッシュメモリ12のアドレスにおける、アドレス指定レジスタ22に書き込まれたアドレスデータが示すアドレスのブロックのデータを消去する。
【0036】
図4は、半導体装置の書込み/消去処理の動作を説明するためのタイミングチャートである。
図4に示すタイミングチャートは、上記で説明した「フラッシュメモリ12へのデータの書込み」および「フラッシュメモリ12のデータの消去」の際の動作を示している。なお、「フラッシュメモリ12へのデータの書込み」および「フラッシュメモリ12のデータの消去」の際のタイミングチャートは共通しているので、
図4では書込みコマンド及び消去コマンドを「書込み/消去コマンド」と記載し、書込み処理及び消去処理を「書込み/消去処理」と記載している。
図5、
図6、
図10、
図11に示すタイミングチャートについても同様である。
【0037】
メモリコントローラ11は、フラッシュメモリ12に対して書込み/消去処理を実行していない場合、待機状態(コマンド待ち状態)となっている。この状態でCPU10_1が周辺バス15に書込み/消去コマンドを出力すると(
図4のタイミングt1)、メモリコントローラ11は周辺バス15を介して書込み/消去コマンドを受信する。このとき、CPU10_1は周辺バス15にアドレスデータも出力する。
【0038】
メモリコントローラ11は、周辺バス15からアドレスデータを受信すると、アドレス指定レジスタ22(
図2参照)にアドレスデータを書き込む。これにより、フラッシュメモリ12のアドレスのうち、データを書き込むアドレスが指定される。
【0039】
また、メモリコントローラ11は、周辺バス15から書込み/消去コマンドを受信すると、コマンド指定レジスタ24(
図2参照)に書込み/消去コマンド(具体的には、
図3に示す「(A)データ書込みコマンド」、又は「(B)データ消去コマンド」である)を書き込む(タイミングt2)。これにより、書込み/消去処理が実行される。
【0040】
具体的には、メモリコントローラ11の制御部25は、アドレス指定レジスタ22に書き込まれたアドレスデータが示すアドレスに対して、コマンド指定レジスタ24に書き込まれたコマンドに対応する書込み/消去処理を実行する。このとき、メモリコントローラ11は、フラッシュメモリ12に対する書込み/消去パルス(電圧)の印加を指示するためのパルスビットを所定の期間ハイレベルにする。これにより、フラッシュメモリ12は書込み/消去処理を開始する。
【0041】
そして所定の期間が経過した後、メモリコントローラ11はフラッシュメモリ12に供給しているパルスビットをロウレベルにする。これによりフラッシュメモリ12に対する書込み/消去処理が終了する。その後、タイミングt3において、メモリコントローラ11はフラッシュメモリ12に対してハイレベルの検証ビットを出力する。これにより、フラッシュメモリ12への書込み/消去処理が正常に行われたか否かが検証される。検証処理が終了すると、メモリコントローラ11は再び待機状態(コマンド待ち状態)となる(タイミングt4)。
【0042】
上述の動作により、フラッシュメモリ12への書込み/消去処理が実施される。
【0043】
ところで、
図1に示すようなマルチマスタ構成の半導体装置1では、各々のマスタ(CPU10_1、CPU10_2)によるフラッシュメモリ12へのアクセスをメモリコントローラ11が制御している。このとき、メモリコントローラ11は、一方のマスタ(CPU10_1)がフラッシュメモリ12に書込み/消去処理を実行している期間に、他方のマスタ(CPU10_2)がフラッシュメモリ12にアクセスできるように、一方のマスタ(CPU10_1)の書込み/消去処理を中断することができる。
【0044】
以下、
図5に示すタイミングチャートを用いて、フラッシュメモリ12への書込み/消去処理を中断/再開する際の動作について説明する。なお、
図5に示す動作において、
図4に示した動作と共通する部分については説明を適宜省略する。
【0045】
図5に示すように、CPU10_1が周辺バス15に書込み/消去コマンドを出力すると(タイミングt101)、メモリコントローラ11は周辺バス15を介して書込み/消去コマンドを受信する。
【0046】
その後、メモリコントローラ11は、周辺バス15から受信したコマンドに対応する書込み/消去処理を実行する(タイミングt102)。このとき、メモリコントローラ11は、フラッシュメモリ12に対する書込み/消去パルス(電圧)の印加を指示するためのパルスビットを所定の期間ハイレベルにする。これにより、フラッシュメモリ12は書込み/消去処理を開始する。
【0047】
その後、タイミングt103において、他方のマスタであるCPU10_2が周辺バス15に中断コマンドを出力すると、メモリコントローラ11は周辺バス15を介して中断コマンドを受信する。パルスビットがハイレベルの状態でメモリコントローラ11が中断コマンドを受信すると、メモリコントローラ11は、パルスビットを所定の時間だけハイレベルにした後にアドレス情報の退避などの中断処理を実行する(タイミングt104)。中断処理が終了した後、メモリコントローラ11はコマンド待ち状態に遷移する(タイミングt105)。中断処理が実施されている間、他方のマスタであるCPU10_2は、フラッシュメモリ12に対して読出し/書込み/消去処理を実行することができる(この処理の図示は省略している)。
【0048】
他方のマスタであるCPU10_2による処理が終了した後、CPU10_2は周辺バス15に再開コマンドを出力する(タイミングt106)。メモリコントローラ11は、周辺バス15を介して再開コマンドを受信すると、退避情報の復帰などの再開処理を実行する(タイミングt107)。その後、メモリコントローラ11は、中断された書込み/消去処理を再開する(タイミングt108)。このとき、メモリコントローラ11は、フラッシュメモリ12に対する書込み/消去パルス(電圧)の印加を指示するためのパルスビットを再び所定の期間ハイレベルにする。これにより、フラッシュメモリ12は書込み/消去処理を開始する。
【0049】
そして所定の期間が経過した後、メモリコントローラ11はフラッシュメモリ12に供給しているパルスビットをロウレベルにする。これによりフラッシュメモリ12に対する書込み/消去処理が終了する。その後、タイミングt109において、メモリコントローラ11はフラッシュメモリ12に対してハイレベルの検証ビットを出力する。これにより、フラッシュメモリ12への書込み/消去処理が正常に行われたか否かが検証される。検証処理が終了すると、メモリコントローラ11は再び待機状態(コマンド待ち状態)となる(タイミングt110)。
【0050】
図5では、一方のCPU10_1がフラッシュメモリ12に書込み/消去処理を実行している間に、他方のCPU10_2がメモリコントローラ11に中断/再開処理を要求した場合の動作について示した。このように他方のCPU10_2が中断/再開処理を実行すると、システム上の問題が発生する場合がある。
【0051】
例えば、CPU10_1がセキュリティ処理のためにセキュリティ鍵データなどの重要なデータの書込み/消去処理をメモリコントローラ11に要求した後、CPU10_2が中断機能を使用すると、CPU10_1の書込み/消去処理が中断される。通常であれば、その後、再開処理によりCPU10_1の書込み/消去処理が再開されるが、何らかの問題が発生した場合は、再開処理を実施してもCPU10_1の書込み/消去処理が再開されない場合がある。このような場合は、セキュリティ鍵データの書込みエラーが発生し、セキュリティ上の問題が発生する場合がある。
【0052】
また、このようにフラッシュメモリ12への書込み/消去処理を中断/再開する処理を実行すると、書込み/消去処理の時間が長くなる。具体的には、
図5に示すように、中断/再開処理を実行すると、中断処理の開始(タイミングt104)から再開処理の終了(タイミングt108)までの時間が追加されるため、書込み/消去処理の時間が長くなる。
【0053】
このような状況を考慮して、本実施の形態にかかる半導体装置では、フラッシュメモリ12への書込み/消去処理の中断を禁止する機能を追加している。具体的には、メモリコントローラ11は、一方のマスタ(CPU10_1)がフラッシュメモリ12に対して書込み/消去処理を実行している間、他方のマスタ(CPU10_2)のフラッシュメモリ12へのアクセスに起因した、現在実行中の書込み/消去処理の中断を禁止することができるように構成されている。
【0054】
つまり、メモリコントローラ11は、一方のマスタ(CPU10_1)から受信したコマンドが、書込み/消去処理の中断を禁止している場合、一方のマスタ(CPU10_1)がフラッシュメモリ12に対して書込み/消去処理を実行している間、当該実行中の書込み/消去処理の中断を禁止する。
【0055】
具体的に説明すると、本実施の形態にかかる半導体装置1では、メモリコントローラ11を制御するコマンドとして、実行中の書込み/消去処理の中断を禁止するコマンドを有する。つまり、
図3に示すように、「(C)中断禁止+データ書込みコマンド」、及び「(D)中断禁止+データ消去コマンド」を有する。
【0056】
以下、
図3に示す「(C)中断禁止+データ書込みコマンド」、及び「(D)中断禁止+データ消去コマンド」を実行した場合の動作について、
図6に示すタイミングチャートを用いて説明する。なお、「フラッシュメモリ12へのデータの書込み」および「フラッシュメモリ12のデータの消去」の際のタイミングチャートは共通しているので、
図6では「(C)中断禁止+データ書込みコマンド」、及び「(D)中断禁止+データ消去コマンド」を合わせて、「中断禁止+書込み/消去コマンド」と記載している。また、「中断禁止+データ書込み処理」、及び「中断禁止+データ消去処理」を「中断禁止+書込み/消去処理」と記載している。
【0057】
メモリコントローラ11は、フラッシュメモリ12に対して書込み/消去処理を実行していない場合、待機状態(コマンド待ち状態)となっている。この状態でCPU10_1が周辺バス15に「中断禁止+書込み/消去処理コマンド」を出力すると(
図6のタイミングt11)、メモリコントローラ11は周辺バス15を介して「中断禁止+書込み/消去処理コマンド」を受信する。このとき、CPU10_1は周辺バス15にアドレスデータも出力する。
【0058】
メモリコントローラ11は、周辺バス15からアドレスデータを受信すると、アドレス指定レジスタ22(
図2参照)にアドレスデータを書き込む。これにより、フラッシュメモリ12のアドレスにおける、データを書き込むアドレスが指定される。なお、データ消去処理の場合は、ブロック単位で消去するので、フラッシュメモリ12のアドレスのうち、データを消去するブロックのアドレスが指定される。
【0059】
また、メモリコントローラ11は、周辺バス15から「中断禁止+書込み/消去処理コマンド」を受信すると、コマンド指定レジスタ24(
図2参照)に「中断禁止+書込み/消去処理コマンド」(具体的には、
図3に示す「(C)中断禁止+データ書込みコマンド」、又は「(D)中断禁止+データ消去コマンド」)を書き込む(タイミングt12)。これにより、「中断禁止+書込み/消去処理」が実行される。
【0060】
具体的には、メモリコントローラ11の制御部25は、アドレス指定レジスタ22に書き込まれたアドレスデータが示すアドレスに対して、コマンド指定レジスタ24に書き込まれたコマンドに対応する書込み/消去処理を実行する。このとき、メモリコントローラ11は、フラッシュメモリ12に対する書込み/消去パルス(電圧)の印加を指示するためのパルスビットを所定の期間ハイレベルにする。これにより、フラッシュメモリ12は書込み/消去処理を開始する。なお、コマンドを用いて書込み/消去処理を実行する際の動作については、
図3に示した「(A)データ書込みコマンド」および「(B)データ消去コマンド」を用いて書込み処理および消去処理を実行する場合の動作と同様である。
【0061】
また、メモリコントローラ11のコマンド指定レジスタ24には「中断禁止」を示すコマンドが書き込まれている。具体的には、
図3に示す「(C)中断禁止+データ書込みコマンド」では、1回目のライトデータ「H’17」が「中断禁止+データ書込み処理」を意味している。また、「(D)中断禁止+データ消去コマンド」では、1回目のライトデータ「H’DF」が「中断禁止+データ消去処理」を意味している。
【0062】
この場合は、メモリコントローラ11は、CPU10_1がフラッシュメモリ12に対して書込み/消去処理を実行している間、当該実行中の書込み/消去処理の中断を禁止する。つまり、
図6のタイミングt13に示すように、CPU10_2が周辺バス15を介してメモリコントローラ11に中断コマンドを供給した場合であっても、メモリコントローラ11はCPU10_2の中断コマンドを無視して、CPU10_1のフラッシュメモリ12への書込み/消去処理を続行する。
【0063】
所定の期間が経過した後、メモリコントローラ11はフラッシュメモリ12に供給しているパルスビットをロウレベルにする。これによりフラッシュメモリ12に対する書込み/消去処理が終了する。その後、タイミングt14において、メモリコントローラ11はフラッシュメモリ12に対してハイレベルの検証ビットを出力する。これにより、フラッシュメモリ12への書込み/消去処理が正常に行われたか否かが検証される。検証処理が終了すると、メモリコントローラ11は再び待機状態(コマンド待ち状態)となる(タイミングt15)。
【0064】
上述の動作により、フラッシュメモリ12への「中断禁止+書込み/消去処理」が実施される。
【0065】
このように、本実施の形態にかかる半導体装置では、一方のマスタ(CPU10_1)がフラッシュメモリ12に対して書込み/消去処理を実行している間は、他方のマスタ(CPU10_2)からフラッシュメモリ12へのアクセス要求があった場合であっても、一方のマスタ(CPU10_1)の実行中の書込み/消去処理が中断されないように構成している。
【0066】
これにより、フラッシュメモリへの重要なデータの書込み/消去処理が途中で中断されることを抑制することができるので、システム上の問題が発生することを抑制することができる。したがって、フラッシュメモリが搭載された半導体装置において安定した動作を実現することが可能な半導体装置、及びフラッシュメモリ制御方法を提供することができる。
【0067】
また、フラッシュメモリへの書込み/消去処理が途中で中断されることを抑制することで、フラッシュメモリへの書込み/消去処理に要する時間が長くなることを抑制することができる。
【0068】
また、本実施の形態では、例えば、マスタ(CPU10_1、CPU10_2)がフラッシュメモリに対して書込み/消去するデータがフラグデータ及びセキュリティ鍵データの少なくとも一つである場合に、実行中の書込み/消去処理の中断を禁止するようにしてもよい。
【0069】
つまり、フラグデータやセキュリティ鍵データなどは重要なデータであるため、このような重要なデータをフラッシュメモリに書込み/消去した際にエラーが発生すると、システムに大きな問題が発生する。このため、このような重要なデータをフラッシュメモリに書込み/消去する場合は、実行中の書込み/消去処理の中断を禁止することが好ましい。
【0070】
一方で、実行中の書込み/消去処理の中断を全て禁止してしまうと、システムの柔軟性が低下する。よって本実施の形態では、フラグデータやセキュリティ鍵データなどの重要なデータをフラッシュメモリに書込み/消去する場合は、実行中の書込み/消去処理の中断を禁止し、これ以外のデータ(重要ではない通常のデータ)をフラッシュメモリに書込み/消去する場合は、実行中の書込み/消去処理の中断を許可するようにしてもよい。
【0071】
つまり、扱うデータの重要度に応じて、
図3に示したコマンドの中から使用するコマンドを選択できるようにすることで、システムの柔軟性を保ちつつ、システムの動作を安定させることができる。具体的には、重要なデータをフラッシュメモリに書込み/消去する場合は、
図3の「(C)中断禁止+データ書込みコマンド」、「(D)中断禁止+データ消去コマンド」を選択し、これ以外のデータ(重要ではない通常のデータ)をフラッシュメモリに書込み/消去する場合は、
図3の「(A)データ書込みコマンド」、「(B)データ消去コマンド」を選択する。
【0072】
また、本実施の形態にかかる半導体装置は、複数のマスタを備える構成であればよく、各々のマスタの数は任意に設定することができる。
図1に示した半導体装置1では、2つのCPU10_1、10_2を備える構成例を示し、各々のCPU10_1、10_2がそれぞれ独立したマスタとして機能する例を示した。しかしながら、本実施の形態にかかる半導体装置では、3つ以上のCPUを備えていてもよい。
【0073】
また、本実施の形態では、
図7に示す半導体装置2のように、1つのCPU30と1つのRAM33とを備える構成としてもよい。この場合は、1つのCPU30が複数のマスタとして機能するように構成する。つまり、ハードウェア的には1つのCPU30で構成しているが、仮想化技術を用いて、CPU30の処理能力を分割することで、CPU30の中に複数の仮想CPUを含めることができる。例えば、仮想CPU_V1および仮想CPU_V2を同一のCPU30を用いて構成した場合、仮想CPU_V1が第1のマスタとして機能し、仮想CPU_V2が第2のマスタとして機能する。なお、このときの仮想CPUの数も任意に設定することができる。
【0074】
上記実施の形態によれば、フラッシュメモリが搭載された半導体装置において安定した動作を実現することが可能な半導体装置、及びフラッシュメモリ制御方法を提供することができる。
【0075】
<実施の形態2>
次に、実施の形態2について説明する。
実施の形態2にかかる半導体装置では、実施の形態1で説明した半導体装置1と比べてメモリコントローラの構成が異なる。これ以外については、実施の形態1で説明した半導体装置と同様であるので、重複した説明は適宜省略する。
【0076】
図8は、本実施の形態にかかる半導体装置が備えるメモリコントローラ40を示すブロック図である。
図8に示すように、メモリコントローラ40は、アドレス受信部41、コマンド受信部43、マスタ受信部45、及び制御部48を備える。
【0077】
アドレス受信部41は、アドレス指定レジスタ42を備える。なお、アドレス受信部41、及びアドレス指定レジスタ42の構成および動作については、
図2に示したアドレス受信部21、及びアドレス指定レジスタ22の構成および動作と同様であるので重複した説明は省略する。
【0078】
コマンド受信部43は、コマンド指定レジスタ44を備える。コマンド指定レジスタ44には、
図9に示すようなコマンド、つまり「(A)データ書込みコマンド」、「(B)データ消去コマンド」が書き込まれる。なお、コマンド受信部43、及びコマンド指定レジスタ44の構成および動作については、
図2に示したコマンド受信部23、及びコマンド指定レジスタ24の構成および動作と同様であるので、重複した説明は省略する。
【0079】
マスタ受信部45は、マスタ情報保持レジスタ46を備える。マスタ情報保持レジスタ46は、フラッシュメモリ12にアクセスしているマスタ、つまり、フラッシュメモリ12に書込み/消去処理を実行しているマスタ(
図1のCPU10_1又はCPU10_2)の情報を保持するレジスタである。各々のCPU10_1、10_2は、フラッシュメモリ12にアクセスする際にアドレスデータ、及びライトデータ(コマンド)を周辺バス15に出力する。マスタ情報保持レジスタ46は、このときコマンドを発行したマスタ情報(発行元のCPU情報)を周辺バス15から受信して保持する。例えば、マスタ情報は周辺バス15の信号線として提供されるマスタ情報である。
【0080】
制御部48は、フラッシュメモリ12の制御を実行する。具体的には、制御部48は、コマンド指定レジスタ44に書き込まれた一連のライトデータ(コマンド)に対応する制御を、フラッシュメモリ12のうち、アドレス指定レジスタ42に書き込まれたアドレスデータが示すアドレスに対して実施する。
【0081】
また、制御部48は、実行中の書込み/消去処理を中断する中断コマンドを受信した際、マスタ情報保持レジスタ46に保持されているマスタと、中断コマンドを送信したマスタと、の比較結果に基づいて、実行中の書込み/消去処理の中断を禁止するか否かを決定する。
【0082】
具体的には、制御部48は、マスタ情報保持レジスタ46に保持されているマスタが、中断コマンドを送信したマスタと異なる場合、実行中の書込み/消去処理の中断を禁止する。一方、制御部48は、マスタ情報保持レジスタ46に保持されているマスタが、中断コマンドを送信したマスタと同一である場合、実行中の書込み/消去処理の中断を許可する。
【0083】
次に、
図10、
図11を用いて本実施の形態にかかる半導体装置の動作について説明する。
図10は、フラッシュメモリ12への書込み/消去処理の動作を説明するためのタイミングチャートであり、マスタ情報保持レジスタ46に保持されているマスタと中断コマンドを送信したマスタとが異なる場合の動作を示している。
図11は、フラッシュメモリ12への書込み/消去処理の動作を説明するためのタイミングチャートであり、マスタ情報保持レジスタ46に保持されているマスタと中断コマンドを送信したマスタとが同一である場合の動作を示している。
【0084】
まず、
図10に示す動作について説明する。メモリコントローラ40がフラッシュメモリ12に対して書込み/消去処理を実行していない場合、メモリコントローラ40は待機状態(コマンド待ち状態)となっている。この状態でCPU10_1が周辺バス15に書込み/消去処理コマンド(
図9参照)を出力すると(タイミングt21)、メモリコントローラ40は周辺バス15を介して書込み/消去処理コマンドを受信する。このとき、CPU10_1は周辺バス15にアドレスデータも出力する。
【0085】
メモリコントローラ40は、周辺バス15からアドレスデータを受信すると、アドレス指定レジスタ42(
図8参照)にアドレスデータを書き込む。これにより、フラッシュメモリ12のアドレスのうち、データを書き込むアドレスが指定される。なお、データ消去処理の場合は、ブロック単位で消去するので、フラッシュメモリ12のアドレスのうち、データを消去するブロックのアドレスが指定される。
【0086】
また、メモリコントローラ40は、周辺バス15から書込み/消去処理コマンドを受信すると、コマンド指定レジスタ44(
図8参照)に書込み/消去処理コマンド(具体的には、
図9に示す「(A)データ書込みコマンド」、又は「(B)データ消去コマンド」)を書き込む(タイミングt22)。これにより、書込み/消去処理が実行される。
【0087】
具体的には、メモリコントローラ40の制御部48は、アドレス指定レジスタ42に書き込まれたアドレスデータが示すアドレスに対して、コマンド指定レジスタ44に書き込まれたコマンドに対応する書込み/消去処理を実行する。このとき、メモリコントローラ40は、フラッシュメモリ12に対する書込み/消去パルス(電圧)の印加を指示するためのパルスビットを所定の期間ハイレベルにする。これにより、フラッシュメモリ12は書込み/消去処理を開始する。なお、コマンドを用いて書込み/消去処理を実行する際の動作については、
図3に示した「(A)データ書込みコマンド」および「(B)データ消去コマンド」を用いて書込み処理および消去処理を実行する場合の動作と同様であるので、重複した説明は省略する。
【0088】
また、マスタ情報保持レジスタ46は、このとき(タイミングt21)コマンドを発行したマスタ(CPU10_1)の情報を周辺バス15から受信して保持する。
【0089】
この状態において、CPU10_2から周辺バス15に中断コマンドが出力されると、メモリコントローラ40は、周辺バス15を介してCPU10_2から出力された中断コマンドを受信する(タイミングt23)。そして、メモリコントローラ40は、マスタ情報保持レジスタ46に格納されているマスタ情報(CPU10_1)と、中断コマンドを送信したマスタ情報(CPU10_2)とを比較する。この場合は、マスタ情報保持レジスタ46に格納されているマスタ情報(CPU10_1)と、中断コマンドを送信したマスタ情報(CPU10_2)とが異なるので、メモリコントローラ40はCPU10_2の中断コマンドを無視して、CPU10_1のフラッシュメモリ12への書込み/消去処理を続行する。
【0090】
所定の期間が経過した後、メモリコントローラ40はフラッシュメモリ12に供給しているパルスビットをロウレベルにする。これによりフラッシュメモリ12に対する書込み/消去処理が終了する。その後、タイミングt24において、メモリコントローラ40はフラッシュメモリ12に対してハイレベルの検証ビットを出力する。これにより、フラッシュメモリ12への書込み/消去処理が正常に行われたか否かが検証される。検証処理が終了すると、メモリコントローラ40は再び待機状態(コマンド待ち状態)となる(タイミングt25)。
【0091】
上述の動作により、フラッシュメモリ12への書込み/消去処理が実施される。
図10に示す動作では、マスタ情報保持レジスタ46に保持されているマスタ(CPU10_1)が、中断コマンドを送信したマスタ(CPU10_2)と異なるので、現在実行中の書込み/消去処理の中断が禁止される。
【0092】
次に、マスタ情報保持レジスタ46に保持されているマスタと中断コマンドを送信したマスタとが同一である場合の動作について、
図11に示すタイミングチャートを用いて説明する。
【0093】
メモリコントローラ40がフラッシュメモリ12に対して書込み/消去処理を実行していない場合、メモリコントローラ40は待機状態(コマンド待ち状態)となっている。この状態でCPU10_1が周辺バス15に書込み/消去処理コマンド(
図9参照)を出力すると(タイミングt31)、メモリコントローラ40は周辺バス15を介して書込み/消去処理コマンドを受信する。このとき、CPU10_1は周辺バス15にアドレスデータも出力する。
【0094】
メモリコントローラ40は、周辺バス15からアドレスデータを受信すると、アドレス指定レジスタ42(
図8参照)にアドレスデータを書き込む。これにより、フラッシュメモリ12のアドレスのうち、データを書き込むアドレスが指定される。なお、データ消去処理の場合は、ブロック単位で消去するので、フラッシュメモリ12のアドレスにおける、データを消去するブロックのアドレスが指定される。
【0095】
また、メモリコントローラ40は、周辺バス15から書込み/消去処理コマンドを受信すると、コマンド指定レジスタ44(
図8参照)に書込み/消去処理コマンド(具体的には、
図9に示す「(A)データ書込みコマンド」、又は「(B)データ消去コマンド」)を書き込む(タイミングt32)。これにより、書込み/消去処理が実行される。
【0096】
具体的には、メモリコントローラ40の制御部48は、アドレス指定レジスタ42に書き込まれたアドレスデータが示すアドレスに対して、コマンド指定レジスタ44に書き込まれたコマンドに対応する書込み/消去処理を実行する。このとき、メモリコントローラ40は、フラッシュメモリ12に対する書込み/消去パルス(電圧)の印加を指示するためのパルスビットを所定の期間ハイレベルにする。これにより、フラッシュメモリ12は書込み/消去処理を開始する。なお、コマンドを用いて書込み/消去処理を実行する際の動作については、
図3に示した「(A)データ書込みコマンド」および「(B)データ消去コマンド」を用いて書込み処理および消去処理を実行する場合の動作と同様であるので、重複した説明は省略する。
【0097】
また、マスタ情報保持レジスタ46は、このとき(タイミングt31)コマンドを発行したマスタ(CPU10_1)の情報を周辺バス15から受信して保持する。
【0098】
この状態において、CPU10_1から周辺バス15に中断コマンドが出力されると、メモリコントローラ40は、周辺バス15を介してCPU10_1から出力された中断コマンドを受信する(タイミングt33)。そして、メモリコントローラ40は、マスタ情報保持レジスタ46に格納されているマスタ情報(CPU10_1)と、中断コマンドを送信したマスタ情報(CPU10_1)とを比較する。この場合は、マスタ情報保持レジスタ46に格納されているマスタ情報(CPU10_1)と、中断コマンドを送信したマスタ情報(CPU10_1)とが同一であるので、メモリコントローラ40はCPU10_1の中断要求を許可して、CPU10_1のフラッシュメモリ12への書込み/消去処理を中断する。
【0099】
つまり、パルスビットがハイレベルの状態でメモリコントローラ40が中断コマンドを受信すると、メモリコントローラ40は、パルスビットを所定の時間だけハイレベルにした後にアドレス情報の退避などの中断処理を実行する(タイミングt34)。中断処理が終了した後、メモリコントローラ40はコマンド待ち状態に遷移する(タイミングt35)。中断処理が実施されている間、CPU10_1は、フラッシュメモリ12に対して読出し/書込み/消去処理を実行することができる(この処理の図示は省略している)。
【0100】
なお、これ以降の処理(再開処理等)については、
図5のタイミングt107以降の処理と同様であるので、重複した説明は省略する。
【0101】
上述の動作により、フラッシュメモリ12への書込み/消去処理が実施される。
図11に示す動作では、マスタ情報保持レジスタ46に保持されているマスタ(CPU10_1)が、中断コマンドを送信したマスタ(CPU10_1)と同一であるので、現在実行中の書込み/消去処理の中断が許可される。
【0102】
本実施の形態にかかる半導体装置においても、フラッシュメモリへの重要なデータの書込み/消去処理が途中で中断されることを抑制することができるので、システム上の問題が発生することを抑制することができる。したがって、フラッシュメモリが搭載された半導体装置において安定した動作を実現することが可能な半導体装置、及びフラッシュメモリ制御方法を提供することができる。
【0103】
また、本実施の形態にかかる半導体装置では、
図11に示したように、同一マスタによる書込み/消去処理の中断が可能となる。このため、書込み/消去処理の優先度が他のマスタより高く、且つ、自マスタが現在実行している書込み/消去処理よりも優先度が高い処理が発生した場合に、現在実行している自マスタの書込み/消去処理を中断することができる。よって、各々の処理の優先度を考慮して、フラッシュメモリへの書込み/消去処理を適切に制御することができる。
【0104】
なお、本実施の形態において、同一マスタによる中断処理を禁止したい場合は、
図3に示したような「(C)中断禁止+データ書込みコマンド」、及び「(D)中断禁止+データ消去コマンド」を追加してもよい。
【0105】
また、本実施の形態では、マスタ情報保持レジスタ46に保持されているマスタと、中断コマンドを送信したマスタと、の比較結果に基づいて、実行中の書込み/消去処理の中断を禁止するか否かを決定する際、各々のマスタの優先度を用いてもよい。
【0106】
例えば、各々のマスタの優先度に関する情報は、メモリコントローラ40が備える制御部48に予め格納されており、制御部48は、マスタ情報保持レジスタ46に保持されているマスタの優先度と、中断コマンドを送信したマスタの優先度と、の比較結果に基づいて、実行中の書込み/消去処理の中断を禁止するか否かを決定してもよい。
【0107】
具体的には、メモリコントローラ40は、マスタ情報保持レジスタ46に保持されているマスタの優先度が、中断コマンドを送信したマスタの優先度よりも高い場合、実行中の書込み/消去処理の中断を禁止するようにしてもよい。また、メモリコントローラ40は、マスタ情報保持レジスタ46に保持されているマスタの優先度が、中断コマンドを送信したマスタの優先度よりも低い場合、実行中の書込み/消去処理の中断を許可するようにしてもよい。
【0108】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。