(57)【要約】【課題】容易に低コストで処理速度の低下などを招くことなく、第三者によるプログラムの不正コピーや改ざんなどを防止する。【解決手段】プログラミング言語をコンパイルする際に、任意の法則に沿ってプログラムの命令コードの並べ替えを行い、不揮発性半導体メモリ８に書き込みする。並べ替え部７ａは、不揮発性半導体メモリ８に格納されたプログラムの命令コードを順番に読み出し、コンパイル時に並び替えられた命令コードを正常な順番に並び替えてインストラクションバッファ７ｂに格納する。ＣＰＵ４は、インストラクションバッファ７ｂに格納された正規の順番からなる命令コードを順次読み出すことにより、プログラムの実行を行う。【選択図】  図１
2008021127.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性半導体メモリが外部接続される半導体集積回路装置であって、
前記不揮発性半導体メモリに格納された任意の法則によって命令コードの順番が並べ替えられたプログラムを読み出し、中央処理装置がプログラムを実行できるように並べ替えするプログラム並べ替え制御部を備えたことを特徴とする半導体集積回路装置。
【請求項２】
請求項１記載の半導体集積回路装置において、
前記プログラム並べ替え部は、
前記不揮発性半導体メモリに格納されたプログラムを読み出し、中央処理装置がプログラムを実行できるように前記命令コードを正規の順番に並べ替える並べ替え部と、
前記並べ替え部が命令コードを並べ替えたプログラムを格納するバッファ部とを備え、
前記中央処理装置は、前記バッファ部にアクセスしてプログラムを実行することを特徴とする半導体集積回路装置。
【請求項３】
任意の法則によって命令コードの順番が並べ替えられたプログラムが格納された不揮発性半導体メモリと、
前記不揮発性半導体メモリに格納されたプログラムを読み出し、中央処理装置がプログラムを実行できるように並べ替えするプログラム並べ替え制御部とを備えたことを特徴とする半導体集積回路装置。
【請求項４】
請求項３記載の半導体集積回路装置において、
前記プログラム並べ替え部は、
前記不揮発性半導体メモリに格納されたプログラムを読み出し、中央処理装置がプログラムを実行できるように前記命令コードを正規の順番に並べ替える並べ替え部と、
前記並べ替え部が命令コードを並べ替えたプログラムを格納するバッファ部とを備え、
前記中央処理装置は、前記バッファ部にアクセスしてプログラムを実行することを特徴とする半導体集積回路装置。
【請求項５】
請求項１〜４のいずれか１項に記載の半導体集積回路装置において、
識別フラグを格納するフラグ格納部を備え、
前記フラグ格納部に格納された識別フラグがアクティブの際には、
前記中央処理装置が、前記バッファ部に格納されているプログラムを実行し、
前記フラグ格納部に格納された識別フラグがインアクティブの際には、
前記不揮発性半導体メモリに格納されているプログラムを実行することを特徴とする半導体集積回路装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの保護技術に関し、特に、不揮発性半導体メモリに格納された半導体集積回路装置におけるプログラムのコピー、書き換えの防止に適用して有効な技術に関するものである。
【背景技術】
【０００２】
近年、電子機器の開発・改善の期間短縮を図るため、制御用のプログラムやデータの書き換えが容易な不揮発性半導体メモリを用いる半導体集積回路装置に対するニーズが高まっている。
【０００３】
不揮発性半導体メモリに格納されたプログラムなどの不正な読み出しや不正使用などを防止するために、たとえば、不揮発性半導体メモリを内蔵した半導体集積回路装置では、機密保持のため該不揮発性半導体メモリに格納されたアプリケーションプログラムなどの書き換えなどを禁止するプロテクト機能を有するものがある。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところが、上記のような半導体集積回路装置におけるプロテクト技術では、次のような問題点があることが本発明者により見い出された。
【０００５】
すなわち、不揮発性半導体メモリにプロテクトをかけた状態であっても、半導体集積回路装置に設けられたＣＰＵのワークエリアとして用いられるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）の内容を読み出し、どのような命令を実行しているかなどを解析することによって、該アプリケーションプログラムの内容が推測されてしまう恐れがある。
【０００６】
また、不揮発性半導体メモリを内蔵せず、外部接続される構成の半導体集積回路装置では、不揮発性半導体メモリと半導体集積回路装置とを接続する信号線をモニタすることによってプログラムの解読や解析が容易に行われてしまうという問題がある。
【０００７】
本発明の目的は、不揮発性半導体メモリが外部接続された半導体集積回路装置であっても、容易に低コストで処理速度の低下などを招くことなく、第三者によるプログラムの不正コピーや改ざんなどを防止することのできる技術を提供することにある。
【課題を解決するための手段】
【０００８】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【０００９】
本発明は、不揮発性半導体メモリが外部接続される半導体集積回路装置であって、該不揮発性半導体メモリに格納された任意の法則によって命令コードの順番が並べ替えられたプログラムを読み出し、中央処理装置がプログラムを実行できるように並べ替えするプログラム並べ替え制御部を備えたものである。
【００１０】
また、本発明の半導体集積回路装置は、任意の法則によって命令コードの順番が並べ替えられたプログラムが格納された不揮発性半導体メモリと、該不揮発性半導体メモリに格納されたプログラムを読み出し、中央処理装置がプログラムを実行できるように並べ替えするプログラム並べ替え制御部とを備えたものである。
【００１１】
また、本願のその他の発明の概要を簡単に示す。
【００１２】
本発明は、前記プログラム並べ替え部が、不揮発性半導体メモリに格納されたプログラムを読み出し、中央処理装置がプログラムを実行できるように命令コードを正規の順番に並べ替える並べ替え部と、該並べ替え部が命令コードを並べ替えたプログラムを格納するバッファ部とを備え、中央処理装置は、バッファ部にアクセスしてプログラムを実行することを特徴とする半導体集積回路装置。
【００１３】
また、本発明は、識別フラグを格納するフラグ格納部を備え、該フラグ格納部に格納された識別フラグがアクティブの際には、中央処理装置が、バッファ部に格納されているプログラムを実行し、フラグ格納部に格納された識別フラグがインアクティブの際には、不揮発性半導体メモリに格納されているプログラムを実行するものである。
【発明の効果】
【００１４】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００１５】
（１）半導体集積回路装置の処理速度の低下を招くことなく、不揮発性半導体メモリに格納されたプログラムの機密性を保持することができる。
【００１６】
（２）また、半導体集積回路装置の大型化を防止しながら、不揮発性半導体メモリに格納されたプログラムの機密性を保持することができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１８】
図１は、本発明の一実施の形態による半導体集積回路装置の一例を示すブロック図、図２は、図１の半導体集積回路装置に設けられたプログラム並べ替え制御部の動作例を説明する説明図である。
【００１９】
本実施の形態において、半導体集積回路装置１は、たとえば、シングルチップマイクロコンピュータからなる。半導体集積回路装置１は、図１に示すように、周辺回路２、バスコントローラ３、中央処理装置となるＣＰＵ４、ＲＡＭ５、Ｉ／Ｏ６、およびプログラム並べ替え制御部７から構成されている。
【００２０】
周辺回路２は、Ａ／Ｄ変換器、シリアルコミュニケーションインタフェース 、ウォッチドッグタイマ、ならびにタイマパルスユニットなどの各種機能モジュールによって構成されている。
【００２１】
Ａ／Ｄ変換器は、外部端子から入力されたアナログ信号をデジタル信号に変換する。シリアルコミュニケーションインタフェースは、外部デバイスとのシリアルデータ通信を行うインタフェースである。ウォッチドッグタイマは、半導体集積回路装置１の暴走などの監視を行う。タイマパルスユニットは、ＰＷＭ（Ｐｕｌｓｅ  Ｗｉｄｔｈ  Ｍｏｄｕｌａｔｉｏｎ）波形を出力することのできるタイマである。
【００２２】
バスコントローラ３は、半導体集積回路装置１内外のアドレスバスやデータバスの制御を行う。ＣＰＵ４は、半導体集積回路装置１におけるすべての制御を司る。ＲＡＭ５は、随時読み出し／書き込みが可能な揮発性メモリであり、入出力データや演算データなどを一時的に格納する。
【００２３】
Ｉ／Ｏ６は、たとえば、入出力バッファからなり、外部接続されるデバイスとのインタフェースとして設けられる。プログラム並べ替え制御部７は、命令コードの並べ替えが行われたプログラムをＣＰＵ４が実行できるように正常な状態に該プログラムの命令コードを並べ替える。
【００２４】
そして、これら周辺回路２、バスコントローラ３、ＣＰＵ４、ＲＡＭ５、Ｉ／Ｏ６、ならびにプログラム並べ替え制御部７は、内部のバスＢを介して相互に接続されている。
【００２５】
半導体集積回路装置１には、バスコントローラ３を介して不揮発性半導体メモリ８が外部接続されている。不揮発性半導体メモリ８は、命令コードの並べ替えが行われたプログラムを格納する。
【００２６】
また、プログラム並べ替え制御部７は、並べ替え部７ａとバッファ部として機能するインストラクションバッファ７ｂとから構成されている。並べ替え部７ａは、不揮発性半導体メモリ８から読み出されたプログラムの命令コードを任意の法則により正規の順番に並べ替えする。インストラクションバッファ７ｂは、並べ替え部７ａが並べ替えしたプログラムの命令コードを格納する。
【００２７】
ＣＰＵ４には、フラグ格納部として機能し、識別フラグを格納するレジスタを有している。レジスタに格納される識別フラグは、不揮発性半導体メモリ８に格納されるプログラムの命令コードが並べ替えられているか否かを示す。
【００２８】
次に、本実施の形態におけるプログラム並べ替え制御部７の作用について、図２を用いて説明する。
【００２９】
まず、Ｃ言語などのプログラミング言語をコンパイラによってコンパイルする際に、任意の法則に沿ってプログラムの命令コードの並べ替えを行う。たとえば、図２の左側に示すように、プログラムの命令コードが正常な場合には、命令１、命令２、命令３〜、最後に各種情報という順番になっていると、コンパイラは、コンパイル時に、図２の中央部に示しように、命令２、各種情報、命令１〜、最後に命令３というように任意の法則によって命令コードを並べ替える。
【００３０】
そして、コンパイラによって命令コードの並べ替えが行われたプログラムは、不揮発性半導体メモリ８に書き込みされる。
【００３１】
続いて、並べ替え部７ａは、不揮発性半導体メモリ８に格納されたプログラムの命令コードを順番に読み出し、コンパイル時に並び替えられた命令コード（図２，中央）を、図２の右側に示すように、正常な順番に並び替えてインストラクションバッファ７ｂに格納する。
【００３２】
ＣＰＵ４は、前述したレジスタの識別フラグがアクティブになっているか否かを判断し、アクティブの際には、インストラクションバッファ７ｂに格納された正規の順番からなる命令コードを順次読み出すことにより、プログラムの実行を行う。
【００３３】
また、レジスタの識別フラグがインアクティブの際には、不揮発性半導体メモリ８に格納されているプログラムが、コンパイル時に命令コードが並び替えられていないものであるので、インストラクションバッファ７ｂからではなく、不揮発性半導体メモリ８から読み出したプログラムがＣＰＵ４によって実行される。
【００３４】
ここで、識別フラグは、レジスタに格納する構成ではなく、たとえば、半導体集積回路装置１に専用の識別信号用ピンを備え、該識別信号用ピンを介して’１’、または’０’の信号を入力し、その信号状態により、アクティブとインアクティブとを識別するようにしてもよい。
【００３５】
それにより、本実施の形態によれば、専用のハードウェアによって命令コードの並び替えを行うので、半導体集積回路装置１の処理速度の低下を招くことなく、不揮発性半導体メモリ８に格納されたプログラムの機密性を保持することができる。
【００３６】
また、命令コードを並び替えするだけであるので、プログラム実行の際のアルゴリズムを簡単化することができるので、プログラム並べ替え制御部７の回路構成を小型化することができ、半導体集積回路装置１を低コストに製造することができる。
【００３７】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【００３８】
たとえば、前記実施の形態では、プログラム並べ替え制御部７をバスＢを介して接続した構成としたが、プログラム並べ替え制御部７は、バスＢを介して接続される構成でなくともよく、たとえば、ＣＰＵ４に設けるようにしてもよい。
【産業上の利用可能性】
【００３９】
本発明は、不揮発性半導体メモリに格納されたプログラムなどを第三者による不正コピーや改ざんなどを防止する技術に適している。
【図面の簡単な説明】
【００４０】
【図１】本発明の一実施の形態による半導体集積回路装置の一例を示すブロック図である。
【図２】図１の半導体集積回路装置に設けられたプログラム並べ替え制御部の動作例を説明する説明図である。
【符号の説明】
【００４１】
１  半導体集積回路装置
２  周辺回路
３  バスコントローラ
４  ＣＰＵ
５  ＲＡＭ
６  Ｉ／Ｏ
７  プログラム並べ替え制御部
７ａ  並べ替え部
７ｂ  インストラクションバッファ
８  不揮発性半導体メモリ
Ｂ  バス
【図１】
2008021127.tif 000003
【図２】
2008021127.tif 000004