少なくともユーザープログラムを格納する第1の不揮発性メモリと、前記ユーザープログラムを実行する演算部と、前記第1の不揮発性メモリの書き換え履歴情報を格納する第2の不揮発性メモリと、前記第2の不揮発性メモリの書き換え履歴情報を書き込む検知処理シーケンス回路と、を有し、前記演算部は、前記第1の不揮発性メモリに対する書き込み指示が外部からの指示に基づき発生したか前記ユーザープログラムの実行結果に起因して発生したかを示すアクセス要因情報を生成し、前記検知処理シーケンス回路は、前記アクセス要因情報毎に前記第2の不揮発性メモリの異なるアドレスに前記書き換え履歴情報を書き込む半導体装置。前記第2の不揮発性メモリに格納されている前記書き換え履歴情報を保持する検知履歴レジスタを有し、前記検知処理シーケンス回路は、前記半導体装置のリセット動作に基づき前記第2の不揮発性メモリに格納された前記書き換え履歴情報を読み出して、前記検知履歴レジスタに格納する請求項1に記載の半導体装置。前記検知履歴レジスタに格納された前記書き換え履歴情報を参照し、前記書き換え履歴情報が予め定められた異常判定条件を満たした場合には前記半導体装置をリセット状態で維持する異常判定制御回路を有する請求項2に記載の半導体装置。前記検知処理シーケンス回路は、前記第1の不揮発性メモリへの書き込み指示が記憶領域を一括して消去するチップ消去書き込み指示であるか、前記記憶領域の所定のブロックを消去するブロック消去書き込み指示であるか、を示す消去履歴情報を前記アクセス要因情報とともに前記書き換え履歴情報に書き込む請求項1乃至3のいずれか1項に記載の半導体装置。前記第2の不揮発性メモリに書き込まれた情報を消去する消去制御回路と、前記演算部から前記半導体装置がテストモードであることの通知を受信した場合に前記消去制御回路を活性化するテストモード制御回路と、を有する請求項1乃至4のいずれか1項に記載の半導体装置。前記演算部からの指示に基づき前記第1の不揮発性メモリの書き込み動作を制御するプログラム制御回路を有し、前記第1の不揮発性メモリは、前記プログラム制御回路からの指示に基づき書き込みモードを設定すると共に前記演算部から書き込みデータを受信する請求項1乃至5のいずれか1項に記載の半導体装置。前記アクセス要因情報には、前記書き込みモードの種類を示す情報が含まれる請求項6に記載の半導体装置。前記第1の不揮発性メモリに対する書き込み動作が開始されるタイミングに応じて前記アクセス要因情報に基づく動作を前記検知処理シーケンス回路に指示する検知モードレジスタを有し、前記第2の不揮発性メモリは、一のアドレスに複数ビットで構成される前記書き換え履歴情報を格納し、前記検知処理シーケンス回路は、前記アクセス要因情報に対応したアドレスに格納された前記書き換え履歴情報を読み出す読み出し処理と、読み出した前記書き換え履歴情報に対して1ビットシフト演算を施すビット演算処理と、前記読み出し処理においてアクセスした前記第2の不揮発性メモリのアドレスに前記ビット演算処理後の前記書き換え履歴情報を書き戻す書き込み処理と、を行う請求項1乃至7のいずれか1項に記載の半導体装置。少なくともユーザープログラムを格納する第1の不揮発性メモリと、前記ユーザープログラムを実行する演算部と、前記第1の不揮発性メモリの書き換え履歴情報を格納する第2の不揮発性メモリと、を有する半導体装置のメモリ書き換え検知方法であって、前記演算部が前記第1の不揮発性メモリに対して実行する書き込み動作が前記半導体装置の外部から与えられた指示に基づき行われる場合、アクセスモードが第1のモードであることを示すアクセス要因情報を前記演算部から出力し、前記演算部が前記第1の不揮発性メモリに対して実行する書き込み動作が前記ユーザープログラムの実行結果に基づき行われる場合、前記アクセスモードが第2のモードであることを示す前記アクセス要因情報を前記演算部から出力し、前記アクセス要因情報に基づき、前記第1のモードの発生回数と、前記第2のモードの発生回数と、を前記第2の不揮発性メモリの異なるアドレス領域にそれぞれ前記書き換え履歴情報として記録する半導体装置のメモリ書き換え検知方法。MCU等の半導体装置に内蔵される不揮発性メモリは、外部からの指示に基づき書き込み動作が行われると共に、MCUの機能により内部的に書き換え動作を含むアクセスがなされる。そのため、一度、不揮発性メモリに記録された情報プログラム及びデータを含むが事後的に書き換えられることがある。このとき、本来書き換えが禁止されているプログラム又はデータが不正に書き換えられた場合、MCUの動作に不具合が生じる問題がある。このような、不正な書き換えが発生した場合には、不正な書き換えを行った書き換え要因に基づく不具合を解析する必要がある。しかし、特許文献1に記載の技術では、単にメモリセルの消去回数を記録しているのみであり、特許文献1に記載の消去回数記録を参照しただけでは如何なる要因で不具合が生じたかを解析できない問題がある。また、特許文献2に記載の技術では、半導体メモリ供給されるコマンドの発行元の装置について、ログを参照しても識別することができない。半導体装置2では、半導体メモリを利用するプログラムのデバッグを目的としており、コマンドの発行元の装置は特定されているため、特許文献2に記載の技術におけるログにコマンドの発行元の装置については記録する必要がないためである。つまり、特許文献2に記載の技術においても、不揮発性メモリに対する事後的な不正な書き換え動作については当該書き換え要因を特定できない問題がある。このように、特許文献1、2は、不揮発性メモリに関する書き換え履歴情報例えば、ログを記録する技術に関するものではあるが、他者による不正書き込みがなされたかどうかは分からないという問題がある。本発明にかかる半導体装置の一態様は、少なくともユーザープログラムを格納する第1の不揮発性メモリと、前記ユーザープログラムを実行する演算部と、前記第1の不揮発性メモリの書き換え履歴情報を格納する第2の不揮発性メモリと、前記第2の不揮発性メモリの書き換え履歴情報を書き込む検知処理シーケンス回路と、を有し、前記演算部は、前記第1の不揮発性メモリに対する書き込み指示が外部からの指示に基づき発生したか前記ユーザープログラムの実行結果に起因して発生したかを示すアクセス要因情報を生成し、前記検知処理シーケンス回路は、前記アクセス要因情報毎に前記第2の不揮発性メモリの異なるアドレスに前記書き換え履歴情報を書き込む。本発明にかかる半導体装置のメモリ書き換え検知方法の一態様は、少なくともユーザープログラムを格納する第1の不揮発性メモリと、前記ユーザープログラムを実行する演算部と、前記第1の不揮発性メモリの書き換え履歴情報を格納する第2の不揮発性メモリと、を有する半導体装置のメモリ書き換え検知方法であって、前記演算部が前記第1の不揮発性メモリに対して実行する書き込み動作が前記半導体装置の外部から与えられた指示に基づき行われる場合、アクセスモードが第1のモードであることを示すアクセス要因情報を前記演算部から出力し、前記演算部が前記第1の不揮発性メモリに対して実行する書き込み動作が前記ユーザープログラムの実行結果に基づき行われる場合、前記アクセスモードが第2のモードであることを示す前記アクセス要因情報を前記演算部から出力し、前記アクセス要因情報に基づき、前記第1のモードの発生回数と、前記第2のモードの発生回数と、を前記第2の不揮発性メモリの異なるアドレス領域にそれぞれ書き換え履歴情報として記録する。本発明にかかる技術によれば、第1の不揮発性メモリに対するアクセス要因の種類毎に履歴情報が記録される。そのため、当該履歴情報を参照することで、事後的に不正な書き換えがあったことを認識することができる。その結果、第1の不揮発性メモリに格納されたユーザープログラムに対するセキュリティを向上させることができる。本発明にかかる技術によれば、事後的な不正な書き換え動作の有無を認識することができ、結果、格納されたプログラムに対するセキュリティを向上することができる。実施の形態1以下、図面を参照して本発明の実施の形態について説明する。まず、図1に実施の形態1にかかる半導体装置1のブロック図を示す。図1に示すように、半導体装置1は、演算部10、第1の不揮発性メモリ11、プログラムモードデコーダ12、アクセスモードデコーダ13、プログラム制御回路14、ファームウェア格納領域15、第2の不揮発性メモリ16、検知モードレジスタ17、検知処理シーケンス回路18、検知履歴レジスタ22、テストモード制御回路23、消去制御回路24、リセットシーケンス回路25を有する。なお、図1では、第1の不揮発性メモリ11、ファームウェア格納領域15及び第2の不揮発性メモリ16を説明のために別の回路ブロックとして示したが、これらは1つの領域として形成され、かつ、異なるアクセス権限が設定される形態であっても良い。例えば、第1の不揮発性メモリ11、ファームウェア格納領域15及び第2の不揮発性メモリ16を一つの不揮発性メモリとして形成しても良い。また、図1では、第1の不揮発性メモリ11に対して情報を書き込む外部装置としてフラッシュプログラマを示した。フラッシュプログラマは、フラッシュライタと称されるものであり、予め準備したユーザープログラム等の情報を第1の不揮発性メモリ11に対して書き込む装置である。図1に示す例では、半導体装置1がシリアル入力端子TMを有し、フラッシュプログラマは、シリアル入力端子TMを介して書き込みデータをシリアル通信により半導体装置1に入力する。なお、フラッシュプログラマは、パラレル通信により書き込みデータを転送しても良い。まず、半導体装置1では、第1の不揮発性メモリ11にユーザープログラムが格納される。このユーザープログラムは、フラッシュライタから書き込まれるものである。また、ユーザープログラムは、半導体装置1の利用者がフラッシュライタを用いて書き込んでも良く、半導体装置1の製造者が出荷工程の工程中で書き込んでも良い。また、半導体装置1では、ファームウェア格納領域15に第1の不揮発性メモリ11を制御するプログラムを含むファームウェアが格納される。このファームウェアは、半導体装置1の製造者が出荷前に書き込むものである。第2の不揮発性メモリ16には、第1の不揮発性メモリ11に格納された情報の書き換え履歴情報が格納される。以下の説明では、第1の不揮発性メモリ11に対する書き換え動作と第2の不揮発性メモリ16に対する書き換え履歴情報の記録動作についてより詳細に説明する。演算部10は、通常動作においては、第1の不揮発性メモリ11に格納されているユーザープログラムを読み出して当該ユーザープログラムを実行する。また、演算部10は、ファームウェア格納領域15からファームウェアを読み出して、当該ファームウェアを実行することで第1の不揮発性メモリ11に対する書き込み動作を行う。ここで、演算部10は、第1の不揮発性メモリ11にアクセスを行う場合、当該アクセス動作が生じた要因を示すアクセス要因情報を生成する。このアクセス要因情報は、例えばアクセスモード信号として出力される。演算部10は、当該ファームウェアの実行がフラッシュプログラマからの指示に基づき行われる場合、アクセスモード信号を第1のモード例えば、シリアル書き込みモードとする。また、演算部10は、当該ファームウェアの実行がユーザープログラムの実行結果に基づき行われる場合、アクセスモード信号を第2のモード例えば、セルフ書き込みモードとする。また、演算部10は、第1の不揮発性メモリ11に対して書き込み指示を行う。この書き込み指示には、チップ消去書き込み指示、ブロック消去書き込み指示、書き込み指示、ベリファイ指示が含まれる。演算部10は、この書き込み指示を示す信号としてプログラムモード信号を出力する。なお、書き込み指示の情報は、アクセス要因情報の一つに含まれるものである。第1の不揮発性メモリ11は、半導体装置1で利用されるユーザープログラムが格納される記憶領域である。また、第1の不揮発性メモリ11には、ユーザープログラムの他、OSOperatingSystem、ユーザープログラムが利用するデータ等が格納されていても良い。第1の不揮発性メモリ11は、演算部10からの指示に基づき格納している情報を出力する。また、第1の不揮発性メモリ11は、書き込み動作を行う場合、プログラム制御回路14からの指示に基づき書き込みモードを切り換える。この書き込みモードには、チップ消去書き込みモード、ブロック消去書き込みモード、書き込みモード、ベリファイモードが含まれる。チップ消去書き込みモードでは、第1の不揮発性メモリ11は、全てのメモリセルの情報を消去して初期状態とする。ブロック消去書き込みモードでは、第1の不揮発性メモリ11は、指定されたブロックのメモリセルの情報を消去して初期状態とする。書き込みモードでは、第1の不揮発性メモリ11は、指定されたブロックのメモリセルに対して指定された情報を書き込む。ベリファイモードでは、第1の不揮発性メモリ11は、書き込み対象の情報と、書き込み済みの情報と、を比較して書き込み結果の正当性を判断する。プログラムモードデコーダ12は、演算部10が出力するプログラムモード信号をデコードしてプログラムモード指示値PMを出力する。このプログラムモード指示値PMは、プログラムモード信号がいずれの書き込みモードであるかを示す値である。例えば、プログラムモード指示値PMは、プログラムモード信号が示す書き込みモードが生じたことを記録する第2の不揮発性メモリ16のアドレス値である。アクセスモードデコーダ13は、演算部10が出力するアクセスモード信号をデコードしてアクセスモード指示値AMを出力する。このアクセスモード指示値PMは、アクセスモード信号がいずれのアクセスモードであるかを示す値である。例えば、アクセスモード指示値AMは、アクセスモード信号が示すアクセス要因が生じたことを記録する第2の不揮発性メモリ16のアドレス値である。プログラム制御回路14は、演算部10からの指示に基づき第1の不揮発性メモリ11の書き込み動作を制御する。より具体的には、プログラム制御回路14は、演算部10が出力したプログラムモード信号をプログラムモードデコーダ12がデコードしたプログラムモード指示値PMを受信する。そして、プログラム制御回路14は、プログラムモード指示値PMが示す書き込みモードで第1の不揮発性メモリ11が動作するように第1の不揮発性メモリ11を制御する。ファームウェア格納領域15には、第1の不揮発性メモリ11を制御するために用いられるプログラムを含むファームウェアが格納される。第2の不揮発性メモリ16は、第1の不揮発性メモリの書き換え履歴情報を格納する。第2の不揮発性メモリ16において、書き換え履歴情報は、アクセス要因情報毎に前記第2の不揮発性メモリの異なるアドレスに記録される。第2の不揮発性メモリ16は、半導体装置1の内部回路によりアクセス可能な記憶領域として設定される。つまり、第2の不揮発性メモリ16は、半導体装置1の外部端子を介してアクセスすることはできない。検知モードレジスタ17は、アクセス要因情報を格納し、検知処理シーケンス回路18に当該アクセス要因情報に基づく動作指示を与える。このアクセス要因情報には、アクセスモード指示値AM及びプログラムモード指示値PMが含まれる。また、検知モードレジスタ17は、プログラム制御回路14が第1の不揮発性メモリ11に対する書き込みモード指示を更新するタイミングで格納するアクセス要因情報を更新する。検知処理シーケンス回路18は、検知モードレジスタ17の指示又はリセットシーケンス回路25の指示に基づき第2の不揮発性メモリ16に対する読み出し処理及び書き込み処理を行う。検知処理シーケンス回路18は、読み出し制御回路19、ビット演算回路20、書き込み制御回路21を有する。読み出し制御回路19は、第2の不揮発性メモリ16に格納された書き換え履歴情報を読み出す。ビット演算回路20は、読み出し制御回路19が読み出した書き換え履歴情報に対してビット演算処理例えば、左シフト演算を施して、ビット演算処理により更新した書き換え履歴情報を出力する。書き込み制御回路21は、ビット演算回路20が出力した書き換え履歴情報を、読み出し制御回路19が書き換え履歴情報を読み出したアドレスに書き戻す。つまり、検知処理シーケンス回路18は、上記構成により、検知モードレジスタ17の指示に基づき動作する場合、検知モードレジスタ17に格納されたアクセス要因情報に対応したアドレスに格納された書き換え履歴情報を読み出す読み出し処理と、読み出した書き換え履歴情報に対して1ビットシフト演算を施すビット演算処理と、読み出し処理においてアクセスした第2の不揮発性メモリ16のアドレスにビット演算処理後の書き換え履歴情報を書き戻す書き込み処理と、を行う。また、検知処理シーケンス回路18は、半導体装置1のリセット動作に基づき第2の不揮発性メモリ16に格納された書き換え履歴情報を読み出して、検知履歴レジスタに格納する。そして、検知履歴レジスタ22は、第2の不揮発性メモリ16に格納されている書き換え履歴情報を保持する。検知履歴レジスタ22は、演算部10からのアクセスに基づき格納している書き換え履歴情報を演算部10に出力する。演算部10は、検知履歴レジスタ22から読み出した書き換え履歴情報に基づき不正な書き換えの有無を判断することができる。また、演算部10は、検知履歴レジスタ22から読み出した書き換え履歴情報を外部に出力しても良い。テストモード制御回路23は、演算部10から半導体装置1がテストモードであることの通知を受信した場合に消去制御回路24を活性化する。消去制御回路24は、活性化状態において、第2の不揮発性メモリ16に書き込まれた情報を消去する。つまり、第2の不揮発性メモリ16は、半導体装置1の出荷工程において全ての情報が消去された初期状態とされる。また、テストモードは、出荷工程でのみ有効になる動作モードである。そのため、消去制御回路24は、テストモード以外では第2の不揮発性メモリ16に対する消去動作を行わない。つまり、第2の不揮発性メモリ16は、ユーザーの操作により格納する書き換え履歴情報が消去されることはない。リセットシーケンス回路25は、半導体装置1の起動時、又は、半導体装置1の動作に起因するリセット処理時に、検知処理シーケンス回路18をリセット状態とする。検知処理シーケンス回路18は、リセットシーケンス回路25からリセット指示を受けた場合、第2の不揮発性メモリ16から書き換え履歴情報を読み出して、読み出した書き換え履歴情報を検知履歴レジスタ22に格納する。続いて、実施の形態1の半導体装置1の動作について説明する。実施の形態1にかかる半導体装置1は、第2の不揮発性メモリ16に格納する書き換え履歴情報と書き換え履歴情報の格納方法に特徴の1つを有する。そこで、以下の説明では、実施の形態1にかかる半導体装置1における第1の不揮発性メモリ11への情報の書き込み動作と第2の不揮発性メモリ16に書き換え履歴情報を格納する手順について詳細に説明する。まず、第2の不揮発性メモリ16の初期化手順について説明する。実施の形態1にかかる半導体装置1では、出荷工程中のテスト工程において半導体装置1をテストモードとする。半導体装置1がテストモードとされると、演算部10はテストモード制御回路23に半導体装置1がテストモードであることを通知する。そして、テストモード制御回路23は、当該通知に応じて消去制御回路24を活性化する。消去制御回路24は、第2の不揮発性メモリ16に対してチップ消去書き込み動作を行う。これにより、第2の不揮発性メモリ16は、記録されている情報が全て1例えば、データ1となる初期状態となる。ここで、第2の不揮発性メモリ16の初期状態を示す概略図を図2に示す。図2に示すように、第2の不揮発性メモリ16は、1つのアドレスに8ビットの値が格納される。初期状態では、全てのアドレスの値がFFhとなる。ここで、第2の不揮発性メモリ16の構成について詳細に説明する。図2に示す例では、第2の不揮発性メモリ16がN~N-4の5つのアドレスを有する。そして、アドレスN~N-4は、それぞれアクセス要因情報に対応する。図2に示す例では、アドレスNにチップ消去履歴が格納され、アドレスN-1にブロック消去履歴が格納され、アドレスN-2にセルフ書き込み履歴が格納され、アドレスN-3にシリアル書き込み履歴が格納され、アドレスN-4に異常アクセス履歴が格納される。チップ消去履歴は、チップ消去書き込みを指示するプログラムモード信号が発生した回数の履歴である。ブロック消去履歴は、ブロック消去書き込みを指示するプログラムモード信号が発生した回数の履歴である。セルフ書き込み履歴は、セルフ書き込みモードを示すアクセスモード信号が発生した回数の履歴である。なお、演算部10がユーザープログラムの実行結果に基づき第1の不揮発性メモリ11へのアクセスを行う場合にアクセスモード信号がセルフ書き込みモードを示す。シリアル書き込み履歴は、シリアル書き込みモードを示すアクセスモード信号が発生した回数の履歴である。なお、外部に設けられるフラッシュプログラマからの指示に基づき第1の不揮発性メモリ11へのアクセスが行われる場合にアクセスモード信号がシリアル書き込みモードを示す。異常アクセス履歴は、アクセスモード信号が示すアクセスモードとプログラムモード信号が示す書き込みモードとの組合せが明らかに不正な組合せであるアクセスが発生した回数の履歴である。例えば、アクセスモード信号が何等のモードを指定することなく、プログラムモード信号が書き込みを指示する場合が異常アクセスに該当する。続いて、実施の形態1にかかる半導体装置1においてシリアル書き込み動作を行った場合の半導体装置1の動作について説明する。実施の形態1にかかる半導体装置1においてシリアル書き込み動作を行った後の第2の不揮発性メモリの状態を示す概略図を図3に示す。このシリアル書き込み動作は、半導体装置1が外部に設けられたフラッシュプログラマから書き込み指示及び書き込み対象データを受信したことに応じて行われる。シリアル書き込み動作では、演算部10はシリアル書き込みモードを示すアクセスモード信号を出力する。また、演算部10は、フラッシュプログラマから書き込み指示を受信したことに応じて、ファームウェアを呼び出して当該ファームウェアを実行することで第1の不揮発性メモリ11への情報の書き込みを行う。また、フラッシュプログラマからは、書き込み対象データとして書き込みデータのイメージ情報及びベリファイ用のデータが半導体装置1にシリアル転送される。そして、半導体装置1は、ファームウェアを実行して、まず、第1の不揮発性メモリ11に対してチップ消去書き込みを実行する。続いて、半導体装置1は、フラッシュプログラマから受信した書き込みデータを第1の不揮発性メモリ11に書き込む。そして、半導体装置1は、書き込んだデータのベリファイを実行する。つまり、半導体装置1では、シリアル書き込み動作を行う場合、シリアル書き込みモードを指定するアクセスモード信号を生成し、プログラムモード信号をチップ消去書き込みモード、書き込みモード、ベリファイモードと順に遷移させる。このような動作が行われた場合、検知処理シーケンス回路18は、チップ消去履歴を示すアドレスNの書き換え書き込み履歴情報と、シリアル書き込み履歴を示すアドレスN-3の書き換え履歴情報と、を読み出す。その後、読み出した2つの書き込み履歴情報に対して左シフト演算を施して書き換え履歴情報を更新する。この更新により、チップ消去履歴とシリアル書き込み履歴は最下位ビットが0となる。つまり、チップ消去履歴及びシリアル書き込み履歴の書き換え履歴情報はFFhからFEhに更新される。そして、図3に示すように、検知処理シーケンス回路18は、第2の不揮発性メモリ16にチップ消去書き込み動作とシリアル書き込みモードが1回発生したことを示す書き換え履歴情報を格納する。このシリアル書き込み動作により、第1の不揮発性メモリ11には、ユーザープログラムが格納される。続いて、半導体装置1が第1の不揮発性メモリ11に格納されているユーザープログラムに基づき第1の不揮発性メモリ11へのアクセスを行うセルフ書き込み動作について説明する。実施の形態1にかかる半導体装置1においてセルフ書き込み動作を1回行った後の第2の不揮発性メモリの状態を示す概略図を図4に示す。セルフ書き込み動作では、演算部10はセルフ書き込みモードを示すアクセスモード信号を出力する。また、演算部10は、ユーザープログラムによりファームウェアを呼び出して当該ファームウェアを実行することで第1の不揮発性メモリ11への情報の書き込みを行う。そして、半導体装置1は、ファームウェアを実行して、まず、第1の不揮発性メモリ11に対してブロック消去書き込みを実行する。続いて、半導体装置1は、書き込み対象のデータを第1の不揮発性メモリ11に書き込む。そして、半導体装置1は、書き込んだデータのベリファイを実行する。つまり、半導体装置1では、セルフ書き込み動作を行う場合、セルフ書き込みモードを指定するアクセスモード信号を生成し、プログラムモード信号をブロック消去書き込みモード、書き込みモード、ベリファイモードと順に遷移させる。このような動作が行われた場合、検知処理シーケンス回路18は、ブロック消去履歴を示すアドレスN-1の書き換え書き込み履歴情報と、セルフ書き込み履歴を示すアドレスN-2の書き換え履歴情報と、を読み出す。その後、読み出した2つの書き込み履歴情報に対して左シフト演算を施して書き換え履歴情報を更新する。この更新により、ブロック消去履歴とセルフ書き込み履歴は最下位ビットが0となる。つまり、ブロック消去履歴とセルフ書き込み履歴の書き換え履歴情報は、FFhからFEhに更新される。そして、図4に示すように、検知処理シーケンス回路18は、第2の不揮発性メモリ16にブロック消去書き込み動作とセルフ書き込みモードが1回発生したことを示す書き換え履歴情報を格納する。このシリアル書き込み動作により、第1の不揮発性メモリ11に格納されているデータが更新される。さらに、セルフ書き込み動作を2回行った後の書き換え履歴情報について説明する。図5に実施の形態1にかかる半導体装置1においてセルフ書き込み動作を2回行った後の第2の不揮発性メモリの状態を示す概略図を示す。2回目のセルフ書き込み動作は、1回目のセルフ書き込み動作と同じであるため、動作の詳細の説明については省略する。図5に示すように、セルフ書き込み動作を2回行った場合、ブロック消去履歴とセルフ書き込み履歴は下位側の2ビットが0となる。つまり、ブロック消去履歴とセルフ書き込み履歴の書き換え履歴情報は、FEhからFChに更新される。このように、半導体装置1では、書き換え履歴情報は、対応するアクセス要因が発生する毎に下位ビット側から値が1からゼロへと変化する情報である。そして、半導体装置1では、この書き換え履歴情報をリセット処理の一処理として検知履歴レジスタ22に読み出す。検知履歴レジスタ22に格納された書き換え履歴情報は、演算部10を介して参照可能である。そのため、半導体装置1の利用者は、検知履歴レジスタ22に格納された書き換え履歴情報を参照することで、第1の不揮発性メモリ11に対してどのようなアクセス要因のアクセスが発生したかを知ることができる。上記説明より、実施の形態1にかかる半導体装置1は、少なくともユーザープログラムを格納する第1の不揮発性メモリ11と、ユーザープログラムを実行する演算部10と、第1の不揮発性メモリ11の書き換え履歴情報を格納する第2の不揮発性メモリ16と、を有する。そして、半導体装置1は、演算部10が第1の不揮発性メモリ11に対して実行する書き込み動作が半導体装置1の外部から与えられた指示に基づき行われる場合、アクセスモードが第1のモード例えば、シリアル書き込みモードであることを示すアクセス要因情報を演算部10が出力し、演算部10が第1の不揮発性メモリ11に対して実行する書き込み動作がユーザープログラムの実行結果に基づき行われる場合、アクセスモードが第2のモード例えば、セルフ書き込みモードであることを示すアクセス要因情報を演算部10から出力する。そして、半導体装置1は、アクセス要因情報に基づき第2の不揮発性メモリ16に、シリアル書き込みモードの発生回数と、セルフ書き込みモードの発生回数と、を第2の不揮発性メモリ16の異なるアドレス領域にそれぞれ書き換え履歴情報として記録する。これにより、半導体装置1では、第1の不揮発性メモリ11に対する書き込み動作が、どのようなアクセス要因に起因して何回行われたかを示す書き換え履歴情報が第2の不揮発性メモリ16に記録される。このように、第1の不揮発性メモリ11に対する書き込み動作を行ったアクセス要因の発生回数を参照することで、半導体装置1の利用者は、本来は発生しないアクセス要因により第1の不揮発性メモリ11の情報が書き換えられたことを事後的に知ることができる。また、不正な書き換えを行ったアクセス要因が特定できることから、半導体装置1を用いることで、不具合の解析性を高めることができる。例えば、不具合がシリアル書き込みモードに起因することがわかれば、不正なハッキングが生じたことを知ることができ、ユーザープログラムの動作に問題ないことがわかる。また、不具合がセルフ書き込みモードに起因することがわかれば、ユーザープログラムの不具合又は半導体装置1の暴走が生じたことを知ることができる。このような解析を通じて、半導体装置1は、第1の不揮発性メモリ11に格納されたユーザープログラムに対するセキュリティを向上させることができる。また、実施の形態1にかかる半導体装置1では、書き換え履歴情報にアクセスに利用されたアクセスモードの情報と書き込みモードの情報とを含むアクセス要因の発生回数を記録し、具体的なアクセスアドレス等の詳細な情報は記録しない。また、実施の形態1にかかる半導体装置1では、第1の不揮発性メモリ11に対するアクセスのうち読み出し動作、ベリファイ動作等の情報の改変に寄与しない動作に関する情報については書き換え履歴情報としては記録しない。このように、書き換え履歴情報として記録する情報の量を削減することで、解析が必要な情報を削減することができる。また、解析が必要な情報を削減することで、不具合を生じさせた原因となるアクセス要因の解析性を向上させると共に解析時間を短縮することができる。また、記録する情報の量を削減することで、第2の不揮発性メモリ16の記憶容量を削減することができる。さらに、実施の形態1にかかる半導体装置1では、第2の不揮発性メモリ16への書き込みを演算部10が直接行うことができない。これにより、半導体装置1では、第2の不揮発性メモリ16に格納される書き換え履歴情報が不正に書き換えられることを防止することができる。なお、半導体装置1のテスト工程においては、第2の不揮発性メモリ16の故障を確認するために演算部10からデータの書き込みが行われる。しかし、この書き込み動作は、テストモードでおいてのみ許可されるものであって、外部から特殊な操作例えば、テストモードの設定を行うことなく、演算部10が第2の不揮発性メモリ16に直接アクセスすることはできない。図1においては、特に図示していないが、半導体装置1は、テストモード以外では演算部10が第2の不揮発性メモリ16に直接アクセスすることを防止する構成を有する。実施の形態2実施の形態2にかかる半導体装置2のブロック図を図6に示す。図6に示すように、半導体装置2は、実施の形態1にかかる半導体装置1に異常判定制御回路30を追加したものである。また、半導体装置2では、異常判定制御回路30の追加に伴い、リセットシーケンス回路25をリセットシーケンス回路31に変更している。リセットシーケンス回路31は、リセットシーケンス回路25に異常判定制御回路30からの指示に基づきリセット状態を維持する機能を追加したものである。さらに、半導体装置2では、リセットシーケンス回路31が出力するリセット信号生成指示に基づきシステム初期化信号RSTを出力するリセット信号生成回路32を追加した。異常判定制御回路30は、検知履歴レジスタ22に読み出された書き換え履歴情報を参照し、書き換え履歴情報が予め設定された異常判定条件を満たす場合に、リセットシーケンス回路31にリセット状態を維持することを指示する。例えば、半導体装置1が第1の不揮発性メモリ11のセルフ書き込みが禁止される設定で利用されている場合は、セルフ書き込み履歴の値がFFh以外となった場合に半導体装置1の動作を停止することが異常判定条件として設定される。また、リセットシーケンス回路31は、半導体装置2の起動時、又は、半導体装置2の動作に起因するリセット処理時に、リセット信号生成回路32にリセット信号生成指示を与える。リセット信号生成回路32は、リセット信号生成指示に基づきシステム初期化信号RSTを生成する。このシステム初期化信号RSTは、システム全体をリセットする信号であり、例えば、演算部10内のレジスタ、検知履歴レジスタ22、検知モードレジスタ17等のレジスタの値を初期値とするものである。上記説明より、実施の形態2にかかる半導体装置2は、異常判定制御回路30を設けることで、検知履歴レジスタ22に読み出された書き換え履歴情報に基づいて動作を停止することができる。これにより、半導体装置2では、想定していない不正な書き換えが第1の不揮発性メモリ11に対して行われた場合には、システムを安全に停止することができる。より具体的には、リセットシーケンス回路31が出力するリセット信号生成指示に基づきリセット信号生成回路32がシステム初期化信号RSTをリセット状態に維持することでシステムは安全に停止することができる。また、このように不正な書き換えに対してシステムを安全に停止することで、半導体装置2は、実施の形態1にかかる半導体装置1よりも高い信頼性を確保することができる。なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上記実施の形態では、演算部10が出力するアクセスモード信号とプログラムモード信号をデコードして、アクセスモード指示値AMとプログラムモード指示値PMを生成する構成とした。しかし、演算部10を、直接アクセスモード指示値AMとプログラムモード指示値PMとを直接アクセスモード信号とプログラムモード信号として出力する構成とすることも可能である。