(57)【要約】  【課題】  従来技術の場合、分岐命令にかかわる分岐先アドレスもプログラムにおいて明示される形態となっている。しかしながら、第三者が不正な行為により、分岐命令の実行によってプログラムを解析すれば、プログラムの内容が把握されてしまうおそれがあり、セキュリティが保護できないという課題がある。  【解決手段】  記憶装置１４０に格納してあるプログラム１５０は、プログラム内容が分岐命令のときは、その分岐命令は分岐先アドレスを指定しないもの（アドレス非指定の分岐命令）として格納されている。その代わりに、分岐先アドレス格納部１０１を設けて、この分岐先アドレス格納部１０１に分岐先アドレスを格納する構成をとっている。さらに、分岐先アドレスを指定しないアドレス非指定の分岐命令がプログラム１５０上でフェッチされたときに分岐先アドレスの制御を行う分岐先アドレス制御部１２０を備えている。【選択図】  図１
2005250763.tif 000002
【特許請求の範囲】
【請求項１】
マイクロプロセッサと記憶装置からなり、
前記記憶装置は、分岐命令については分岐先アドレスを指定しない形態でプログラムを格納するように構成され、
前記マイクロプロセッサは、
前記記憶装置に対してアクセスを行うためのアドレスを指示するプログラムカウンタと、
前記アドレスを一時記憶し、前記アドレスを前記プログラムカウンタに供給するアドレスレジスタと、
前記アドレス非指定の分岐命令についての分岐先アドレスを格納する分岐先アドレス格納部と、
前記記憶装置からの読み出し命令が前記アドレス非指定の分岐命令であるときに、前記分岐先アドレス格納部から前記分岐先アドレスを読み出して前記アドレスレジスタに送出する分岐先アドレス制御部とを備えた構成とされているマイクロプロセッサシステム。
【請求項２】
マイクロプロセッサと記憶装置からなり、
前記記憶装置は、分岐命令については分岐先アドレスを指定しない形態でプログラムを格納するように構成され、
前記マイクロプロセッサは、
前記記憶装置に対してアクセスを行うためのアドレスを指示するプログラムカウンタと、
前記アドレスを一時記憶し、前記アドレスを前記プログラムカウンタに供給するアドレスレジスタと、
前記アドレス非指定の分岐命令についての分岐先アドレスの複数を格納するアドレステーブルと、
前記記憶装置からの読み出し命令が前記アドレス非指定の分岐命令であるときに、その読み出し回数をカウントする分岐命令読み出し回数カウント部と、
前記アドレステーブルの複数の前記分岐先アドレスのうち、分岐命令読み出し回数カウント部からの読み出し回数に応じた分岐先アドレスを読み出して前記アドレスレジスタに送出する分岐先アドレス制御部とを備えた構成とされているマイクロプロセッサシステム。
【請求項３】
さらに、前記アドレステーブルにおける複数の分岐先アドレスを書き換え可能なアドレステーブル書き換え手段を備えている請求項２に記載のマイクロプロセッサシステム。
【請求項４】
前記アドレステーブルは、前記マイクロプロセッサの外部に設けられている請求項２または請求項３に記載のマイクロプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサシステムにかかわり、特にはプログラム保護機能を向上させる技術に関する。
【背景技術】
【０００２】
近年、携帯電話やコンピュータは内部にマイクロプロセッサとプログラムを内蔵し、そのプログラムによって高度で複雑な動作を行っている。
【０００３】
マイクロプロセッサは、プログラムを格納した記憶装置と、アクセスするアドレスを一時的に格納するレジスタを備えることで、プログラムを逐次実行する（例えば、特許文献１参照）。
【０００４】
また、下記に述べる回路も一般的に知られている。
【０００５】
図３は従来のマイクロプロセッサシステムの概略図である。
【０００６】
マイクロプロセッサ３０４のプログラムカウンタ３０２は、記憶装置３０５に対してアドレスＳ３０２を与え、記憶装置３０５の該当アドレスにあるプログラム３０６の命令が読み出され、読み出された命令が実行される。そして、プログラムカウンタ３０２は、アドレスインクリメンタ３０３によって次にアクセスするアドレスへ書き換えられる。
【０００７】
この従来例では、分岐命令にかかわる分岐先アドレスＳ３０５がプログラム３０６において明示される形態となっている。プログラム３０６上で分岐命令が来たとき、プログラム３０６自体に書かれた分岐先アドレスＳ３０５が読み出され、アドレスレジスタ３０１に書き込まれる。そして、アドレスレジスタ３０１に格納された分岐先アドレスＳ３０５がプログラムカウンタ３０２に格納され、プログラムカウンタ３０２が指し示した記憶装置３０５のアドレスの命令が実行される。
【特許文献１】特開平１０−２２８４２１号公報（第５−６頁、第３図）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上記の従来技術の場合、分岐命令にかかわる分岐先アドレスもプログラムにおいて明示される形態となっている。しかしながら、第三者が不正な行為により、分岐命令の実行によってプログラムを解析すれば、プログラムの内容が把握されてしまうおそれがあり、セキュリティが保護できないという課題がある。
【課題を解決するための手段】
【０００９】
本発明は、上記の課題を解決するために次のような手段を講じる。
【００１０】
原則として、記憶装置に格納するプログラムにおいて、分岐命令の場合には、その分岐先アドレスを指定しない形態でプログラミングを行うものである。その代わりに、分岐命令にかかわる分岐先アドレスを格納するための分岐先アドレス格納部を記憶装置とは別に設ける。
【００１１】
すなわち、本発明によるマイクロプロセッサシステムは、マイクロプロセッサと記憶装置からなるものであり、次のように構成されている。前記記憶装置は、分岐命令については分岐先アドレスを指定しない形態でプログラムを格納するものとして構成されている。また、前記マイクロプロセッサは、前記記憶装置に対してアクセスを行うためのアドレスを指示するプログラムカウンタと、前記アドレスを一時記憶し、前記アドレスを前記プログラムカウンタに供給するアドレスレジスタと、前記アドレス非指定の分岐命令についての分岐先アドレスを格納する分岐先アドレス格納部と、前記記憶装置からの読み出し命令が前記アドレス非指定の分岐命令であるときに、前記分岐先アドレス格納部から前記分岐先アドレスを読み出して前記アドレスレジスタに送出する分岐先アドレス制御部とを備えたものとして構成されている。
【００１２】
プログラムカウンタのアドレスによって記憶装置にアクセスし、記憶装置のプログラムから命令を読み出す。そして、読み出した命令が分岐命令でなければ、分岐先アドレス制御部は不動作となる。一方、読み出した命令が分岐命令のときは、その分岐命令は分岐先アドレスを指定しないのであるが、この場合、分岐先アドレス制御部が分岐先アドレス格納部から分岐先アドレスを読み出してアドレスレジスタに格納し、さらにプログラムカウンタに格納した上で、記憶装置にアクセスし、分岐が完了する。記憶装置のプログラムは、分岐命令のときは分岐先アドレスを指定しないものであるので、第三者がプログラムを解析するだけでは、アドレス非指定の分岐命令を含むプログラムの実行フローは理解困難となり、プログラムのセキュリティーを向上できる。
【００１３】
また、本発明によるマイクロプロセッサシステムは、マイクロプロセッサと記憶装置からなるものであり、次のように構成されている。前記記憶装置は、分岐命令については分岐先アドレスを指定しない形態でプログラムを格納するように構成されている。また、前記マイクロプロセッサは、前記記憶装置に対してアクセスを行うためのアドレスを指示するプログラムカウンタと、前記アドレスを一時記憶し、前記アドレスを前記プログラムカウンタに供給するアドレスレジスタと、前記アドレス非指定の分岐命令についての分岐先アドレスの複数を格納するアドレステーブルと、前記記憶装置からの読み出し命令が前記アドレス非指定の分岐命令であるときに、その読み出し回数をカウントする分岐命令読み出し回数カウント部と、前記アドレステーブルの複数の前記分岐先アドレスのうち、分岐命令読み出し回数カウント部からの読み出し回数に応じた分岐先アドレスを読み出して前記アドレスレジスタに送出する分岐先アドレス制御部とを備えたものとして構成とされている。
【００１４】
プログラムカウンタのアドレスによって記憶装置にアクセスし、記憶装置のプログラムから命令を読み出す。そして、読み出した命令が分岐命令でなければ、分岐命令読み出し回数カウント部および分岐先アドレス制御部は不動作となる。一方、読み出した命令が分岐命令のときは、その分岐命令は分岐先アドレスを指定しないのであるが、この場合、分岐命令読み出し回数カウント部がアドレス非指定の分岐命令の読み出し回数をカウントし、カウント結果の読み出し回数を分岐先アドレス制御部に与え、分岐先アドレス制御部が読み出し回数に応じた分岐先アドレスをアドレステーブルから読み出してアドレスレジスタに格納し、さらにプログラムカウンタに格納した上で、記憶装置にアクセスし、分岐が完了する。記憶装置のプログラムは、分岐命令のときは分岐先アドレスを指定しないものであり、しかも、アドレステーブルで用いる分岐先アドレスが複数ある。プログラムで記述されたアドレス非指定の単一の分岐命令に対して、分岐先アドレスは複数の異なるものとなっているため、プログラムを解析するだけでは、その時々の分岐先アドレスが判らないという作用を有する。すなわち、第三者がプログラムを解析することによる、アドレス非指定の分岐命令を含むプログラムの実行フローはさらに理解困難となり、プログラムのセキュリティーを一層向上することができる。
【００１５】
上記構成において、さらに、前記アドレステーブルにおける複数の分岐先アドレスを書き換え可能なアドレステーブル書き換え手段を備えている場合には、分岐先アドレスの書き換えによって、セキュリティをさらに強固にできる。
【００１６】
なお、前記アドレステーブルの配置については、マイクロプロセッサの内部でもよいし外部でもよい。
【発明の効果】
【００１７】
以上のように本発明によれば、プログラム上に分岐先アドレスを記述せず、分岐先アドレス格納部やアドレステーブルに格納された分岐先アドレスを分岐先アドレス制御部がアドレスレジスタへ格納し分岐するため、記憶装置上のプログラムを解析するだけではプログラムの分岐先アドレスが判らず、プログラムの実行フローは理解困難となり、プログラムの高い保護機能を発揮させることができる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明にかかわるマイクロプロセッサシステムの実施の形態を、図面を参照しながら説明する。
【００１９】
（実施の形態１）
まず、本発明の実施の形態１のマイクロプロセッサシステムについて説明する。図１は、本発明の実施の形態１におけるマイクロプロセッサシステムの構成を示すブロック図である。
【００２０】
図１に示すシステムは、マイクロプロセッサ１６０と、マイクロプロセッサ１６０に対してバスを介して接続された記憶装置１４０から構成されている。本実施の形態においては、記憶装置１４０に格納してあるプログラム１５０は、プログラム内容が分岐命令のときは、その分岐命令は分岐先アドレスを指定しないもの（アドレス非指定の分岐命令）として格納されている。その代わりに、分岐先アドレス格納部１０１を設けて、この分岐先アドレス格納部１０１に分岐先アドレスを格納する構成をとっている。これが本実施の形態の原則である。
【００２１】
マイクロプロセッサ１６０は、次に実行するプログラムのアドレスを一時記憶するアドレスレジスタ１３０と、アドレスレジスタ１３０からのアドレスを受け取って格納し、プログラム１５０上の該当アドレスの命令・データを読み出すために記憶装置１４０に対してアドレスＳ１３２を与えるプログラムカウンタ１３２と、プログラムカウンタ１３２の値を１繰り上げるインクリメンタ１３４を備えているとともに、さらに、分岐先アドレスＳ１０１を格納する分岐先アドレス格納部１０１と、プログラム１５０上の分岐先アドレスを指定しないアドレス非指定の分岐命令がフェッチされたときに分岐先アドレスの制御を行う分岐先アドレス制御部１２０とを備えた構成となっている。アドレスレジスタ１３０は、分岐先アドレス制御部１２０からの分岐先アドレスＳ１２２も一時記憶するようになっている。記憶装置１４０には、マイクロプロセッサ１６０で実行されるべきプログラム１５０が格納されている。Ｓ１４０は記憶装置１４０から出力される命令またはデータである。
【００２２】
分岐先アドレスの格納場所について、従来では、プログラム上に記述されていた。これに対して、本実施の形態では、分岐先アドレス格納部１０１に分岐先アドレスＳ１０１を格納するようになっている。分岐先アドレス制御部１２０は、アドレス非指定の分岐命令がフェッチされたときに、アドレス要求信号Ｓ１２１を生成して分岐先アドレス格納部１０１に出力し、その結果、分岐先アドレス格納部１０１から読み出した分岐先アドレスＳ１０１を分岐先アドレスＳ１２２としてアドレスレジスタ１３０に格納するように構成されている。
【００２３】
以下に、上記構成のマイクロプロセッサシステムの動作を説明する。
【００２４】
初期状態において、アドレスレジスタ１３０は何も格納していないか、または記憶装置１４０の先頭アドレスを格納している。また、プログラムカウンタ１３２は記憶装置１４０の先頭アドレスを格納している。
【００２５】
プログラムカウンタ１３２が出力するアドレスＳ１３２に基づいて記憶装置１４０のプログラム１５０の命令が読み出される。これに伴って、プログラムカウンタ１３２はインクリメンタ１３４によりインクリメントされる。
【００２６】
プログラムカウンタ１３２が指し示す記憶装置１４０のアドレスから読み出された命令Ｓ１４０が分岐命令以外の通常の命令であるときは、分岐先アドレス制御部１２０は不動作であり、分岐先アドレス格納部１０１に対するアドレス要求信号Ｓ１２１は生成しない。マイクロプロセッサ１６０は、通常の命令を実行する。
【００２７】
一方、読み出された命令Ｓ１４０が分岐命令のときは、その分岐命令は分岐先アドレスを指定しないものであるというのが本実施の形態の原則であるが、この場合、分岐先アドレス制御部１２０は、分岐先アドレス格納部１０１に対してアドレス要求信号Ｓ１２１を出力する。その結果、分岐先アドレス格納部１０１は分岐先アドレスＳ１０１を分岐先アドレス制御部１２０に出力する。分岐先アドレスＳ１０１を受け取った分岐先アドレス制御部１２０は、受け取った分岐先アドレスＳ１０１を分岐先アドレスＳ１２２としてアドレスレジスタ１３０に格納する。この分岐先アドレスＳ１２２がさらにプログラムカウンタ１３２に格納される。プログラムカウンタ１３２によるアドレスＳ１３２にて記憶装置１４０のプログラム１５０がアクセスされ、分岐が完了する。
【００２８】
以上のように本実施の形態によれば、記憶装置１４０のプログラム１５０について、分岐命令のときは分岐先アドレスを指定しないことを原則としているので、プログラム１５０を解析するだけでは、アドレス非指定の分岐命令を含むプログラムの実行フローを理解することが困難なものとなる。その結果として、プログラム１５０のセキュリティーを向上させることができる。
【００２９】
（実施の形態２）
次に、本発明の実施の形態２のマイクロプロセッサシステムについて説明する。図２は、本発明の実施の形態２のマイクロプロセッサシステムの構成を示すブロック図である。
【００３０】
図２に示すシステムは、マイクロプロセッサ２７０と、マイクロプロセッサ２７０に対してバスを介して接続された記憶装置２４０と、分岐先アドレステーブル専用記憶装置２０２と、アドレステーブル書き換え部２０７とから構成されている。本実施の形態においては、記憶装置２４０に格納してあるプログラム２５０は、プログラム内容が分岐命令のときは、その分岐命令は分岐先アドレスを指定しないもの（アドレス非指定の分岐命令）として格納されている。その代わりに、分岐先アドレステーブル専用記憶装置２０２にアドレステーブル２０１を内蔵させて、このアドレステーブル２０１に複数の分岐先アドレスを格納する構成をとっている。これが本実施の形態の原則である。
【００３１】
マイクロプロセッサ２７０は、次に実行するプログラムのアドレスを一時記憶するアドレスレジスタ２３０と、アドレスレジスタ２３０からのアドレスを受け取って格納し、プログラム２５０上の該当アドレスの命令・データを読み出すために記憶装置２４０に対してアドレスＳ２３２を与えるプログラムカウンタ２３２と、プログラムカウンタ２３２の値を１繰り上げるインクリメンタ２３４を備えているとともに、プログラム２５０上の分岐先アドレスを指定しないアドレス非指定の分岐命令がフェッチされたときに、その回数をカウントする分岐命令読み出し回数カウント部２６０と、この分岐命令読み出し回数カウント部２６０による読み出し回数信号Ｓ２６０に応じて分岐先アドレスの選択制御を行う分岐先アドレス制御部２２０とを備えた構成となっている。
【００３２】
アドレスレジスタ２３０は、分岐先アドレス制御部２２０からの分岐先アドレスＳ２２２も一時記憶するようになっている。記憶装置２４０には、マイクロプロセッサ２７０で実行されるべきプログラム２５０が格納されている。Ｓ２４０は記憶装置２４０から出力される命令またはデータである。
【００３３】
分岐先アドレスの格納場所について、従来では、プログラム上に記述されていた。これに対して、本実施の形態では、マイクロプロセッサ２７０の外部に分岐先アドレステーブル専用記憶装置２０２を設け、この分岐先アドレステーブル専用記憶装置２０２におけるアドレステーブル２０１に複数の分岐先アドレスＳ２０１を格納するようにしている。そして、分岐先アドレス制御部２２０によって、読み出し回数信号Ｓ２６０に応じてアドレステーブル２０１から所定の分岐先アドレスＳ２０１を読み出すようになっている。
【００３４】
分岐先アドレステーブル専用記憶装置２０２は、そのアドレステーブル２０１の内容である複数の分岐先アドレスがアドレステーブル書き換え部２０７によって書き換え可能に構成されている。
【００３５】
分岐先アドレス制御部２２０は、アドレス非指定の分岐命令がフェッチされたときに、読み出し回数信号Ｓ２６０に応じてアドレス要求信号Ｓ２２１を生成して分岐先アドレステーブル専用記憶装置２０２に出力し、その結果、アドレステーブル２０１から読み出した読み出し回数に応じた分岐先アドレスＳ２０１を分岐先アドレスＳ２２２としてアドレスレジスタ２３０に格納するように構成されている。
【００３６】
以下に、上記構成のマイクロプロセッサシステムの動作を説明する。
【００３７】
初期状態において、アドレスレジスタ２３０は何も格納していないか、または記憶装置２４０の先頭アドレスを格納している。また、プログラムカウンタ２３２は記憶装置２４０の先頭アドレスを格納している。
【００３８】
プログラムカウンタ２３２が出力するアドレスＳ２３２に基づいて記憶装置２４０のプログラム２５０の命令が読み出される。これに伴って、プログラムカウンタ２３２はインクリメンタ２３４によりインクリメントされる。
【００３９】
プログラムカウンタ２３２が指し示す記憶装置２４０のアドレスから読み出された命令Ｓ２４０が分岐命令以外の通常の命令であるときは、分岐命令読み出し回数カウント部２６０はカウント動作をしない。また、分岐先アドレス制御部２２０は、分岐先アドレステーブル専用記憶装置２０２に対するアドレス要求信号Ｓ２２１は生成しない。マイクロプロセッサ２７０は、通常の命令を実行する。
【００４０】
一方、読み出された命令Ｓ２４０が分岐命令のときは、その分岐命令は分岐先アドレスを指定しないものであるというのが本実施の形態の原則であるが、この場合、分岐命令読み出し回数カウント部２６０はアドレス非指定の分岐命令の読み出し回数をカウントし、その読み出し回数に応じた読み出し回数信号Ｓ２６０を分岐先アドレス制御部２２０に伝える。読み出し回数信号Ｓ２６０を受けた分岐先アドレス制御部２２０は、読み出し回数信号Ｓ２６０が示す読み出し回数に応じたアドレス要求信号Ｓ２２１を分岐先アドレステーブル専用記憶装置２０２に送信し、アドレス要求信号Ｓ２２１に対応した分岐先アドレスＳ２０１をアドレステーブル２０１から読み出す。分岐先アドレスＳ２０１を受け取った分岐先アドレス制御部２２０は、受け取った分岐先アドレスＳ２０１を分岐先アドレスＳ２２２としてアドレスレジスタ２３０に格納する。この分岐先アドレスＳ２２２がさらにプログラムカウンタ２３２に格納される。プログラムカウンタ２３２によるアドレスＳ２３２にて記憶装置２４０のプログラム２５０がアクセスされ、分岐が完了する。
【００４１】
実施の形態１の場合は、アドレス非指定の分岐命令の分岐先アドレスが１つのみであるのに対して、本実施の形態ではアドレス非指定の分岐命令の分岐先アドレスが複数、アドレステーブル２０１に格納された構成となっている。その結果、本実施の形態によれば、プログラム２５０の命令実行フローはさらに複雑なものとなり、プログラム２５０を解析するだけでは、アドレス非指定の分岐命令を含むプログラムの実行フローを理解することが一層困難なものとなる。しかも、アドレステーブル書き換え部２０７によってアドレステーブル２０１の内容を書き換えることも可能である。すなわち、プログラム２５０のセキュリティーをさらに向上させることができる。
【産業上の利用可能性】
【００４２】
本発明のマイクロプロセッサは、高度なセキュリティが要求されるコンピュータや携帯電話等の中央演算処理装置として有用である。
【図面の簡単な説明】
【００４３】
【図１】本発明の実施の形態１におけるマイクロプロセッサシステムの構成を示すブロック図
【図２】本発明の実施の形態２におけるマイクロプロセッサシステムの構成を示すブロック図
【図３】従来のマイクロプロセッサシステムの構成を示すブロック図
【符号の説明】
【００４４】
１０１  分岐先アドレス格納部
１２０  分岐先アドレス制御部
１３０  アドレスレジスタ
１３２  プログラムカウンタ
１３４  インクリメンタ
１４０  記憶装置
１５０  プログラム
１６０  マイクロプロセッサ
Ｓ１０１  分岐先アドレス
Ｓ１２１  アドレス要求信号
Ｓ１２２  分岐先アドレス
Ｓ１３２  アドレス
Ｓ１４０  命令またはデータ
２０１  アドレステーブル
２０２  分岐先アドレステーブル専用記憶装置
２０７  アドレステーブル書き換え部
２２０  分岐先アドレス制御部
２３０  アドレスレジスタ
２３２  プログラムカウンタ
２３４  インクリメンタ
２４０  記憶装置
２５０  プログラム
２６０  分岐命令読み出し回数カウント部
２７０  マイクロプロセッサ
Ｓ２０１  分岐先アドレス
Ｓ２２１  アドレス要求信号
Ｓ２２２  分岐先アドレス
Ｓ２３２  アドレス
Ｓ２４０  命令またはデータ
Ｓ２６０  読み出し回数信号
【図１】
2005250763.tif 000003
【図２】
2005250763.tif 000004
【図３】
2005250763.tif 000005