(57)【要約】【課題】暗号化された命令のパイプライン処理が、ストールの発生を抑えて、実行可能なマイクロプロセッサを提供する。【解決手段】マイクロプロセッサ１へ命令ＲＯＭ２から送られた暗号化された命令は、命令フェッチ部１１の命令レジスタ１１１に格納された後、暗号化命令復号化部１１２で復号化され、復号化された命令は復号化命令レジスタ１１３に保持される。その後、復号化命令レジスタ１１３に保持された復号化された命令は、セレクタ１１４および命令キャッシュ１１５を介して命令デコード部１２に入力されてデコードされ、演算実行部１３で演算処理が行われる。これにより、暗号化された命令の命令列のパイプライン処理が、命令フェッチ部１１、命令デコード部１２、演算実行部１３で、順次、並列に実行される。【選択図】  図１
2005018434.tif 000002
【特許請求の範囲】
【請求項１】
外部から与えられる命令を格納する記憶手段と、前記記憶手段に格納された暗号化命令を復号化する暗号化命令復号化手段と、前記暗号化命令復号化手段により復号化された命令を保持する復号化命令保持手段と、前記記憶手段の出力または前記復号化命令保持手段の出力のいずれかを選択して出力する選択手段を有する命令フェッチ部と、
前記命令フェッチ部から出力される命令をデコードする命令デコード手段と、
前記命令デコード手段から出力される信号に基づき演算を実行する演算実行手段と、
前記命令デコード手段から出力される制御信号により前記暗号化命令復号化手段の復号化の実行を制御するとともに、前記選択手段を制御する復号化制御手段とを具備し、
前記命令フェッチ部の前記記憶手段に格納された前記命令が暗号化命令であるときに、前記復号化制御手段が、前記暗号化命令復号化手段に前記暗号化命令の復号化を実行させるとともに、前記選択手段に前記復号化命令保持手段の出力を選択させて出力させることを特徴とするマイクロプロセッサ。
【請求項２】
命令の実行が、命令フェッチステージ、暗号化命令の復号化ステージ、命令のデコードステージ、演算の実行ステージの順でパイプライン処理されるマイクロプロセッサであって、
前記暗号化命令の復号化ステージでの処理と前記命令フェッチステージでの処理が前記命令フェッチ部で実行されることを特徴とする請求項１に記載のマイクロプロセッサ。
【請求項３】
前記暗号化命令の復号化ステージでの現在の命令の処理と並列に、前記命令フェッチステージが次の命令の処理を実行することを特徴とする請求項２に記載のマイクロプロセッサ。
【請求項４】
前記復号化手段における復号の開始が復号化開始命令により制御され、復号の終了が復号化終了命令により制御されることを特徴とする請求項１に記載のマイクロプロセッサ。
【請求項５】
前記復号化開始命令が、一群の暗号化命令の命令列の直前に実行されることを特徴とする請求項４に記載のマイクロプロセッサ。
【請求項６】
前記復号化終了命令が、一群の暗号化命令の命令列の最後に実行されることを特徴とする請求項４に記載のマイクロプロセッサ。
【請求項７】
前記復号化開始命令が、復号化開始を指令するオペレーションコードと復号化に使用する暗号鍵データから構成されることを特徴とする請求項４に記載のマイクロプロセッサ。
【請求項８】
前記復号化開始命令がデコードされて前記命令デコード手段から出力された前記暗号鍵データが、前記暗号化命令復号化手段に入力されて、復号化の実行の間は前記暗号化命令復号化手段に保持されることを特徴とする請求項７に記載のマイクロプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロプロセッサに関し、特にパイプライン処理を行うマイクロプロセッサに関する。
【０００２】
【従来の技術】
マイクロプロセッサの高速化技術の一つにパイプライン処理がある。パイプライン処理では、命令の実行をいくつかのステージに分け、複数の命令を少しずつ時間をずらして同時並行的に実行する。これにより、複数のステージを並列に動作させることができ、マイクロプロセッサの処理効率が向上する。このとき、総てのステージを常に並列に動作させることができれば、高い処理効率が得られる。
【０００３】
一方、マイクロプロセッサに与えられる命令が、ソフトウェアの機密保護等の目的で暗号化されることがある。この場合、マイクロプロセッサの外部にある命令ＲＯＭに格納される命令（オブジェクトコード）が暗号化されているため、マイクロプロセッサでこの命令を実行するためには、マイクロプロセッサの内部で暗号化されたコードを暗号化される前の元のコードに戻す復号化を行わなければならない。
【０００４】
図７（ａ）に、この暗号化された命令の復号化のステージを含むパイプライン処理のステージ構成の一例を示す。この例では、命令は、命令フェッチ（Ｆ）、暗号化命令の復号化（ＤＡ）、命令のデコード（ＤＢ）、演算の実行（Ｅ）、データキャッシュアクセス（Ｍ）、結果の書き込み（Ｗ）の６つのステージで順次処理されて行く。ここで、暗号化命令の復号化（ＤＡ）ステージと命令のデコード（ＤＢ）ステージは、マイクロプロセッサのデコード部で実行される。
【０００５】
図７（ｂ）に、複数の暗号化された命令である暗号化命令１、暗号化命令２、・・・が、上述の６つのステージで順次パイプライン処理されている様子を示す。この場合、暗号化命令の復号化（ＤＡ）ステージと命令のデコード（ＤＢ）ステージがデコード部で実行されているため、暗号化命令１の処理が演算の実行（Ｅ）ステージに移行しないと、暗号化命令２の暗号化命令の復号（ＤＡ）ステージの実行が開始できない。そのため、暗号化命令の復号化（ＤＡ）ステージの前でパイプラインの停止（ストール）が発生する（サイクル３）。
【０００６】
同様に、暗号化命令３では、サイクル４、５でストールが発生し、暗号化命令４では、サイクル５、６、７でストールが発生して、パイプラインの処理効率が低下する。
【０００７】
このようにパイプライン処理でストールが発生する要因をハザードと言い、パイプライン処理を行うマイクロプロセッサでは、このハザードに対する対策を考慮する必要がある。
【０００８】
その対策の一つとして、通常のステージの他にハザード処理ステージを設け、ハザードの発生を検出したときには、ハザード処理ステージを動作させてパイプライン処理が続行されるようにしたものがある（例えば、特許文献１参照。）。
【０００９】
【特許文献１】
特開２０００−１０５６９８号公報（第７−９頁、図１）
【００１０】
【発明が解決しようとする課題】
しかしながら、上述のようなハザード処理を専用に行うステージを設ける方法では、ハザードが発生したときに、マイクロプロセッサの処理に要するステージ数が通常の処理よりも多くなる。
【００１１】
そこで、本発明の目的は、ストールの発生を抑えて、暗号化された命令のパイプライン処理が可能なマイクロプロセッサを提供することにある。
【００１２】
【課題を解決するための手段】
本発明の一態様によれば、外部から与えられる命令を格納する記憶手段と、前記記憶手段に格納された暗号化命令を復号化する暗号化命令復号化手段と、前記暗号化命令復号化手段により復号化された命令を保持する復号化命令保持手段と、前記記憶手段の出力または前記復号化命令保持手段の出力のいずれかを選択して出力する選択手段を有する命令フェッチ部と、前記命令フェッチ部から出力される命令をデコードする命令デコード手段と、前記命令デコード手段から出力される信号に基づき演算を実行する演算実行手段と、前記命令デコード手段から出力される制御信号により前記暗号化命令復号化手段の復号化の実行を制御するとともに、前記選択手段を制御する復号化制御手段とを具備し、前記命令フェッチ部の前記記憶手段に格納された前記命令が暗号化命令であるときに、前記復号化制御手段が、前記暗号化命令復号化手段に前記暗号化命令の復号化を実行させるとともに、前記選択手段に前記復号化命令保持手段の出力を選択させて出力させることを特徴とするマイクロプロセッサが提供される。
【００１３】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施の形態を説明する。
【００１４】
（実施の形態）
図１は、本発明の実施の形態に係るマイクロプロセッサの構成を示すブロック図である。
【００１５】
マイクロプロセッサ１は、マイクロプロセッサ１の外部にある命令ＲＯＭ２から読み出された命令をフェッチする命令フェッチ部１１と、命令フェッチ部１１から出力された命令をデコードするデコード部１２と、デコード部１２から出力される制御信号により演算を実行する演算実行部１３とを含み、さらに、命令ＲＯＭ２から読み出された命令が暗号化命令であるときに、その暗号化命令の復号化を制御する復号化制御部１４を有している。
【００１６】
このうち、命令フェッチ部１１は、命令ＲＯＭ２から入力された命令を格納する命令レジスタ１１１と、命令レジスタ１１１に格納された命令が暗号化命令であるときは、その復号化を行う暗号化命令復号化部１１２と、暗号化命令復号化部１１２で復号化された復号化命令を保持する復号化命令レジスタ１１３と、命令レジスタ１１１の出力と復号化命令レジスタ１１３の出力のいずれかを選択して出力するセレクタ１１４と、セレクタ１１４の出力が入力される命令キャッシュ１１５から構成され、命令キャッシュ１１５の出力が命令フェッチ部１１の出力となる。
【００１７】
ここで、一群の暗号化命令の命令列の命令が実行されるときは、その実行の直前に後述する復号化開始命令が実行され、デコード部１２から復号化開始信号が復号化制御部１４へ出力される。復号化開始信号が入力される（ＯＮにされる）と、復号化制御部１４は暗号化命令復号化部１１２へ復号化の開始を指示する。
【００１８】
一方、一群の暗号化命令の命令列の命令の最後には、これも後述する復号化終了命令が実行され、デコード部１２から復号化終了信号が復号化制御部１４へ出力される。復号化終了信号が入力されると、復号化制御部１４は暗号化命令復号化部１１２へ復号化の終了（ＯＦＦ）を指示する。。
【００１９】
この復号化の開始が指示されている間（ＯＮの間）、暗号化命令復号化部１１２は、命令レジスタ１１１に格納されている命令を読み込んで、暗号の復号化を実行する。
【００２０】
なお、復号化開始命令には、暗号化に使用した暗号鍵（ユーザ鍵）データが記述されており、デコード部１２を介して、このユーザ鍵データが暗号化命令復号化部１１２へ与えられる。
【００２１】
また、セレクタ１１４も、復号化制御部１４から出力される復号化制御信号がＯＮであるときは、命令ＲＯＭ２から入力された命令を暗号化された命令であるとして、復号化命令レジスタ１１３の出力を選択して復号化命令を出力する。
【００２２】
一方、復号化制御信号がＯＦＦであるときは、命令ＲＯＭ２から入力された命令を暗号化されていない命令であるとして、セレクタ１１４は命令レジスタ１１１に格納された命令をそのまま出力する。
【００２３】
図２は、図１の暗号化命令復号化部１１２の内部構成を示すブロック図である。
【００２４】
暗号化命令復号化部１１２は、復号化制御信号がＯＮのときのみライト信号を出力する書き込み制御回路１１２１と、書き込み制御回路１１２１からのライト信号で外部からの命令を書き込む暗号化命令格納レジスタ１１２２と、復号化制御信号がＯＮのときユーザ鍵データを書き込むユーザ鍵格納レジスタ１１２３とを有している。
【００２５】
また、暗号化命令格納レジスタ１１２２のデータに対して後述するミラー変換を行うミラー変換回路１１２４と、ユーザ鍵格納レジスタ１１２３に格納されたユーザ鍵データを上位桁側にコピーして２倍の長さのデータへ拡張するユーザ鍵拡張回路１１２５と、ミラー変換回路１１２４の出力とユーザ鍵拡張回路１１２５の出力のビットごとの排他的論理和（ｘｏｒ）演算を行うビットごとの排他的論理和（ｘｏｒ）演算回路１１２６を有しており、ビットごとの排他的論理和（ｘｏｒ）演算回路１１２６の出力が、復号化命令となる。
【００２６】
ここで、暗号化命令復号化部１１２の復号化のアルゴリズムを説明するが、その前に本実施の形態のマイクロプロセッサの命令の暗号化で用いられている暗号化の方式を説明しておく。
【００２７】
図３は、本実施の形態のマイクロプロセッサの命令の暗号化で用いられている暗号化の過程を説明するための図である。以下、暗号化の過程を順を追って説明する。
【００２８】
（１）ユーザ専用の暗号鍵である１６ビットの長さのユーザ鍵をそのまま２つ並べて３２ビットの長さに拡張したユーザ鍵を予め用意する。
【００２９】
（２）３２ビットの長さの命令（機械語）と、上記３２ビットの長さの拡張されたユーザ鍵のビットごとの排他的論理和（ｘｏｒ）演算を行う。
【００３０】
ここで、命令の各ビットをＩｎ、拡張されたユーザ鍵のビットをＫｎと表わし、上記の演算結果をＩｎ  ｘｏｒ  Ｋｎと表わすものとし、この演算結果をユーザ鍵でマスクされた命令と称するものとする。
【００３１】
（３）上記ユーザ鍵でマスクされた命令の各ビットのミラー変換を行う。
【００３２】
ミラー変換とは、ｎビット目のデータを（３１−ｎ）ビット目のデータと入れ替えるものであり、上記の場合、０ビット目のデータは３１ビット目と、１ビット目のデータは３０ビット目と、・・・、３１ビット目のデータは０ビット目と入れ替えられる。
【００３３】
このミラー変換の結果得られたデータが暗号化された命令、すなわち暗号化命令である。
【００３４】
次に、暗号化命令復号化部１１２の復号化のアルゴリズムを説明する。
【００３５】
図４は、暗号化命令復号化部１１２における暗号化命令の復号化の過程を説明するための図である。以下、復号化の過程を順を追って説明する。
【００３６】
（１）暗号化命令格納レジスタ１１２２に格納された暗号化命令をミラー変換回路１１２４でミラー変換する。
【００３７】
この結果、暗号化命令は、上述したユーザ鍵でマスクされた命令に戻る。
【００３８】
（２）ユーザ鍵でマスクされた命令とユーザ鍵拡張回路１１２５で拡張されたユーザ鍵データとの間でビットごとの排他的論理和（ｘｏｒ）演算を行う。
【００３９】
このとき、ユーザ鍵でマスクされた命令は、Ｉｎ  ｘｏｒ  Ｋｎと表わされるので、この演算は、（Ｉｎ  ｘｏｒ  Ｋｎ）  ｘｏｒ  Ｋｎと表わされる。この論理式を変形すると、Ｉｎ  ｘｏｒ  （Ｋｎ  ｘｏｒ  Ｋｎ）となる。
【００４０】
ここで、同一のデータどうしの排他的論理和（ｘｏｒ）演算は０であるので、（Ｋｎ  ｘｏｒ  Ｋｎ）＝０となり、上式は、Ｉｎ  ｘｏｒ  ０＝Ｉｎとなる。
【００４１】
すなわち、この演算により、復号化された命令データＩｎが得られるものである。
【００４２】
図５は、本実施の形態のマイクロプロセッサ１に与えられる復号化開始命令および復号化終了命令のフォーマットを示す図である。
【００４３】
図５（ａ）は、復号化開始命令のフォーマットである。復号化開始命令は３２ビット長の命令であり、１６ビットの復号化開始オペレーション（ＯＰ）コードと１６ビットのユーザ鍵から構成される。
【００４４】
図５（ｂ）は、復号化終了命令のフォーマットである。復号化終了命令は１６ビット長の命令であり、１６ビットの復号化開始オペレーション（ＯＰ）コードからのみ構成される。ただし、復号化終了命令は暗号化された命令の命令列の最後におかれるため、マイクロプロセッサ１に与えられるときは、暗号化された３２ビット長の命令となっている。
【００４５】
図６は、本実施の形態のマイクロプロセッサ１において、暗号化された命令の命令列である暗号化命令１、暗号化命令２、・・・をパイプライン処理したときのステージの遷移を表わす図である。
【００４６】
図６（ａ）に示すように、マイクロプロセッサ１においては、暗号化命令は、命令フェッチ（Ｆｅ）、暗号化命令の復号化（Ｆｕ）、命令のデコード（Ｄ）、演算の実行（Ｅ）、データキャッシュアクセス（Ｍ）、結果の書き込み（Ｗ）の６つのステージで順次処理される。
【００４７】
このうち、命令フェッチ（Ｆｅ）ステージと暗号化命令の復号化（Ｆｕ）ステージが命令フェッチ部１１で処理される。
【００４８】
また、命令のデコード（Ｄ）ステージはデコード部１２で処理され、演算の実行（Ｅ）ステージ以降の処理は演算実行部１３で処理される。
【００４９】
上述のように、マイクロプロセッサ１では、命令フェッチ（Ｆｅ）ステージと暗号化命令の復号化（Ｆｕ）ステージが命令フェッチ部１１で処理されるが、このとき、命令フェッチ（Ｆｅ）ステージには命令レジスタ１１１が用いられ、暗号化命令の復号化（Ｆｕ）ステージには復号化命令レジスタ１１３が用いられる。
【００５０】
したがって、本実施の形態のマイクロプロセッサ１においては、命令フェッチ（Ｆｅ）ステージでの処理と暗号化命令の復号化（Ｆｕ）ステージの処理を同時に並列に行うことができる。
【００５１】
そのため、図６（ｂ）に示すように、本実施の形態のマイクロプロセッサ１で暗号化命令の命令列のパイプライン処理を行う場合、各ステージ間でストールが発生することなく、総てのステージを並列に動作させることが可能となる。
【００５２】
これより、この図６（ｂ）の例を、従来のパイプライン処理の例の図７（ｂ）と比較すると、例えば、従来１２サイクルの間に４個の暗号化命令しか処理できなかったものが、本実施の形態では７個の暗号化命令の処理が実行できるようになる。
【００５３】
すなわち、従来に比べて、本実施の形態のマイクロプロセッサ１は、暗号化命令のパイプライン処理のスループットを向上させることができる。
【００５４】
【発明の効果】
本発明のマイクロプロセッサによれば、ストールの発生を抑えて、暗号化された命令のパイプライン処理を実行することができる。そのため、暗号化された命令のパイプライン処理のスループットの向上を図ることができる。
【図面の簡単な説明】
【図１】本発明の実施の形態に係るマイクロプロセッサの構成を示すブロック図。
【図２】本発明の実施の形態に係るマイクロプロセッサの暗号化命令復号化部の構成を示すブロック図。
【図３】命令の暗号化の過程を説明するための図。
【図４】本発明の実施の形態に係るマイクロプロセッサにおける暗号化命令の復号化の過程を説明するための図。
【図５】本発明の実施の形態に係るマイクロプロセッサに与えられる復号化開始命令および復号化終了命令のフォーマットを示す図。
【図６】本発明の実施の形態に係るマイクロプロセッサにおけるパイプライン処理を説明するためのステージ遷移図。
【図７】従来のマイクロプロセッサにおけるパイプライン処理を説明するためのステージ遷移図。
【符号の説明】
１  マイクロプロセッサ
２  命令ＲＯＭ
１１  命令フェッチ部
１２  デコード部
１３  演算実行部
１４  復号化制御部
１１１  命令レジスタ
１１２  暗号化命令復号化部
１１３  復号化命令レジスタ
１１４  セレクタ
１１５  命令キャッシュ
１１２１  書き込み制御回路
１１２２  暗号化命令格納レジスタ
１１２３  ユーザ鍵格納レジスタ
１１２４  ミラー変換回路
１１２５  ユーザ鍵拡張回路
１１２６  ビットごとの排他的論理和（ｘｏｒ）回路
【図１】
2005018434.tif 000003
【図２】
2005018434.tif 000004
【図３】
2005018434.tif 000005
【図４】
2005018434.tif 000006
【図５】
2005018434.tif 000007
【図６】
2005018434.tif 000008
【図７】
2005018434.tif 000009