(57)【特許請求の範囲】
【請求項１】
暗号化された命令コードとなる暗号化コードが格納されるメモリと、
前記暗号化コードに対して、第１段階および前記第１段階を経て行われる第２段階を含む複数段階の復号化処理を行い、更に、前記複数段階のいずれかの段階となる第ｋ段階を設定して、前記第ｋ段階の復号化処理を経た命令コードを復号化コードとして出力する復号化部と、
前記復号化コードを実行する命令実行部とを備え、
前記復号化部は、前記命令実行部が前記復号化コードの実行サイクルの過程で分岐命令を発生した場合に、その分岐先の前記暗号化コードに対しては前記第ｋ段階の「ｋ」を小さい値に設定し、その後、前記命令実行部の実行サイクルが経過する毎に前記「ｋ」の値を大きい値に変化させながら前記復号化コードを出力することを特徴とする情報処理装置。
【請求項２】
請求項１記載の情報処理装置において、
前記復号化部は、
複数段のパイプラインを含み、前記暗号化コードを受けて前記複数段のパイプラインの各段毎に鍵を用いた復号化処理を行う復号化処理回路と、
選択信号に応じて前記複数段のパイプラインの各段の出力の中からいずれか１個の出力を選択して前記命令実行部に出力する選択回路と、
前記命令実行部が分岐命令を発生したことを検知しながら前記選択信号を生成する制御回路とを有することを特徴とする情報処理装置。
【請求項３】
請求項２記載の情報処理装置において、
前記復号化処理回路は、
前記暗号化コードが伝送される第１ノードと、
前記第１ノードと第２ノードの間に設けられた第１段目のパイプラインと、
前記第２ノードと第３ノードの間に設けられた第２段目のパイプラインとを含み、
前記第１段目のパイプラインは、
前記第１ノードと第１鍵を入力として排他的論理和の演算を行う第１ＥＸＯＲ回路と、
前記第１ＥＸＯＲ回路の出力を非線形変換する第１変換回路と、
前記第１ノードの信号を所定のサイクル数遅延される第１レジスタと、
前記第１変換回路の出力と前記第１レジスタの出力を入力として排他的論理和の演算を行い、この演算結果を前記第２ノードに出力する第２ＥＸＯＲ回路とを備え、
前記第２段目のパイプラインは、
前記第２ノードと第２鍵を入力として排他的論理和の演算を行う第３ＥＸＯＲ回路と、
前記第３ＥＸＯＲ回路の出力を非線形変換する第２変換回路と、
前記第２ノードの信号を所定のサイクル数遅延される第２レジスタと、
前記第２変換回路の出力と前記第２レジスタの出力を入力として排他的論理和の演算を行い、この演算結果を前記第３ノードに出力する第４ＥＸＯＲ回路とを備えることを特徴とする情報処理装置。
【請求項４】
請求項２記載の情報処理装置において、
前記制御回路は、
カウンタ回路と、
前記カウンタ回路のカウント値に応じて前記選択信号を出力する選択信号生成回路と、
前記カウンタ回路のカウント値に応じて第１信号を出力することで、前記命令実行部に対して前記復号化コードを出力するサイクルを通知する第１信号生成回路とを含み、
前記カウンタ回路は、前記メモリから前記暗号化コードを受信するサイクルが発生する毎にカウント動作を行い、更に、前記命令実行部が分岐命令を発生したことを検知した際にはカウント値を初期化することを特徴とする情報処理装置。
【請求項５】
請求項２記載の情報処理装置において、
前記複数段のパイプラインの各段毎の鍵は、それぞれ異なることを特徴とする情報処理装置。
【請求項６】
復号化回路を用い、各サイクル毎に入力された暗号化命令コードを順次変換しながら復号化命令コードを順次生成する暗号化命令コードの復号化方法であって、
前記復号化回路は、
各サイクル毎に入力された前記暗号化命令コードが分岐命令か否かを判別する第１処理と、
前記第１処理で前記暗号化命令コードが分岐命令であった場合に、前記暗号化命令コードが入力されたサイクルに続く第１サイクルで入力された第１暗号化命令コードに対して第１復号化処理を行い、第１復号化命令コードを生成する第２処理と、
前記第１サイクルに続く第２サイクルで入力された第２暗号化命令コードに対して、前記第１復号化処理に対応する暗号強度よりも高い暗号強度に対応する第２復号化処理を行い、第２復号化命令コードを生成する第３処理と、を実行することを特徴とする暗号化命令コードの復号化方法。
【請求項７】
請求項６記載の暗号化命令コードの復号化方法において、
前記第１復号化処理は、第１鍵を用いた演算処理を行うことで復号化を行い、
前記第２復号化処理は、前記第１鍵を用いた演算処理に加えて第２鍵を用いた演算処理を行うことで復号化を行うことを特徴とする暗号化命令コードの復号化方法。
【請求項８】
コンピュータシステムによるプログラム処理を用い、予め作成されたソース命令コードを変換して暗号化命令コードを生成する命令コードの暗号化方法であって、
前記コンピュータシステムは、
複数のアドレスに割り付けられる複数の前記ソース命令コードがそれぞれ分岐命令か否かを判別し、分岐命令であった場合にその分岐先となる第１アドレスと前記第１アドレスに割り付けられた第１ソース命令コードを認識する第１ステップと、
前記第１ソース命令コードを第１暗号化アルゴリズムを用いて変換し、第１暗号化命令コードを生成する第２ステップと、
前記第１アドレスの次に実行される第２アドレスに割り付けられた第２ソース命令コードを、前記第１暗号化アルゴリズムよりも暗号強度が高い第２暗号化アルゴリズムを用いて変換し、第２暗号化命令コードを生成する第３ステップと、を実行することを特徴とする命令コードの暗号化方法。
【請求項９】
請求項８記載の命令コードの暗号化方法において、
前記第１暗号化アルゴリズムは、第１鍵を用いた演算処理を行うことで暗号化を行い、
前記第２暗号化アルゴリズムは、前記第１鍵を用いた演算処理に加えて第２鍵を用いた演算処理を行うことで暗号化を行うことを特徴とする命令コードの暗号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置、命令コードの暗号化方法および暗号化命令コードの復号化方法に関し、特に、予めメモリに格納された暗号化命令コードをリアルタイムで復号化しながら所望の処理を行う情報処理装置に適用して有益な技術に関するものである。
【背景技術】
【０００２】
例えば、特許文献１には、外部記憶装置にコンピュータの実行プログラムを暗号化して記憶し、それを復号化しながら実行するデータ保護装置が記載されている。このデータ保護装置では、外部記憶装置のアドレス空間を例えば４アドレス毎に区切って暗号化を行っている。アドレスの下位２ビットが“１１”の暗号化データは、一つ前となる下位２ビットが“１０”の暗号化データを用いて作成され、同様に、“１０”および“０１”の暗号化データは、それぞれ、“０１”および“００”の暗号化データを用いて作成され、“００”の暗号化データは初期値を用いて作成される。そして、例えば、分岐命令に伴ってアドレスの下記２ビットが“１０”のデータ列を実行する場合には、その２つ前となる“００”の暗号化データから順次復号化を行い、“１０”の暗号化データに達するまでウエイトする。
【０００３】
また、特許文献２には、暗号化された命令を受け、それを復号化しながら実行する際のパイプライン処理を、ストールの発生を抑えて実行可能なマイクロプロセッサが記載されている。具体的には、命令フェッチ部の中に、２段のパイプラインを設けて、前段で命令フェッチ、後段で暗号化命令の復号化を実行する。
【特許文献１】特開平７−１２９４７３号公報
【特許文献２】特開２００５−１８４３４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
近年、ゲームソフト、映像コンテンツなどを代表にデジタルコンテンツの保護の重要性が増してきている。これらのデジタルコンテンツの保護は、暗号化や署名、その他様々な技術を用いて確保されているが、それらを制御するソフトウェア（ファームウェア）が改変されると、保護機能が無効化される恐れがある。例えば、ＤＶＤドライブのファームウェアを解析および改変することで著作権保護機能を無効化したり、ゲーム機のファームウェアを解析および改変することで違法ソフトのチェック機能を無効化することができ、映像コンテンツやゲームソフトの違法コピーなどが実現可能となる。
【０００５】
このようなファームウェアに対する保護技術としては、例えば、プログラムを難読化した上でＲＯＭ（Read Only Memory）に格納する方式や、特許文献１などに記載されているように、暗号化した上でＲＯＭに格納し、実行時に復号化する方式などが知られている。プログラムの難読化を行う方式では、例えば単純な１行の命令を判り難い複数行の命令に変換するなどで外部からの解析を困難にしているが、その分命令実行の際のオーバーヘッドが増加する。また、この方式の場合、改竄や複製に対する保護も十分とは言えない。一方、暗号化を行う方式では、解析、改竄および複製共に十分な保護を行うことが可能となるが、この場合には、相応の暗号強度を備える必要がある。ただし、一般的に、暗号強度を上げると、強度に比例してオーバーヘッドが増加するため、その両立をどのように図るかが重要となる。
【０００６】
こうした中、特許文献１の技術では、一つ前の暗号化コードを利用して次の暗号化コードを生成するような暗号化方式を用いることで、比較的高い暗号強度を実現している。ただし、この技術では、分岐命令が発生した場合に、その分岐先アドレスの値に応じて大きさが異なるオーバーヘッドが生じるため、オーバーヘッドが大きい分岐先アドレスに向けた分岐命令が多くなるほど、リアルタイムな処理が困難となる恐れがある。
【０００７】
そこで、本発明の目的の一つは、少ないオーバーヘッドでソフトウェアの保護を実現可能な情報処理装置、命令コードの暗号化方法および暗号化命令コードの復号化方法を提供することにある。なお、本発明の前記ならびにそれ以外の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
本願において開示される発明の代表的な実施の形態の概要を簡単に説明すれば、次のとおりである。
【０００９】
本発明の一実施の形態による情報処理装置は、暗号化コードが格納されるメモリと、この暗号化コードを復号化して復号化コードを生成する復号化部と、この復号化コードを実行する命令実行部とを備えたものとなっている。そして、復号化部は、命令実行部が分岐命令を発生した際に、その分岐先の暗号化コードに対しては低い暗号強度に対応する復号化を行うことで復号化コードを生成し、その後、命令実行部が分岐先からの処理を進めるにつれて段階的に高い暗号強度に対応する復号化を行うことで復号化コードを生成するものとなっている。
【００１０】
したがって、仮に、暗号強度を常に同等とした場合には、分岐命令発生後の最初の命令コードを実行するまでにある程度のオーバーヘッドが必要となるが、前述したような構成を用いることで、このオーバーヘッドを低減できる。これによって、例えば組み込み機器などにおいて、リアルタイムな処理が実現可能になる。さらに、この最初の命令コード以降は、段階的に暗号強度が高まっていくため、命令コード全体として見た場合に、十分な暗号強度を保つことができる。
【００１１】
また、前述した復号化部は、例えば、各段毎に鍵を用いた復号化処理を行う複数段のパイプラインと、この複数段のパイプラインの各段の出力の中からいずれか１個を選択して命令実行部に出力する選択回路と、命令実行部が分岐命令を発生したことを検知しながらこの選択回路を制御する制御回路とを有するものとなっている。このような構成を用いると、分岐命令発生直後は小さいパイプライン段数の出力を選択することで、暗号強度を低くした分少ないオーバーヘッドで復号化コードを生成できる。また、その後は、出力を選択するパイプライン段数を段階的に大きくしていくことで、高い暗号強度を実現できると共に、パイプライン処理によって効率的な時間で復号化コードを生成できる。
【００１２】
また、本発明の一実施の形態による命令コードの暗号化方法は、コンピュータシステムによるプログラム処理を用いて、予め作成されたソースコードを変換して暗号化コードを生成するものとなっている。この際に、コンピュータシステムは、まず、各アドレスに割り付けられた各ソースコードが分岐命令か否かを判別すると共に、その分岐先のアドレスを認識する。次いで、この分岐先アドレスのソースコードを第１暗号化アルゴリズムを用いて変換することで第１暗号化コードを生成し、更に、この分岐先アドレスの次のアドレスのソースコードを第２暗号化アルゴリズムを用いて変換することで第２暗号化コードを生成する。ここで、第２暗号化アルゴリズムは、第１暗号化アルゴリズムに比べて暗号強度が高いものとなっている。このような暗号化方法を用いて暗号化コードを生成し、それを前述した情報処理装置のメモリに格納することで前述したような効果を得ることが可能となる。
【発明の効果】
【００１３】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すると、少ないオーバーヘッドでソフトウェアの保護が実現可能となる。
【発明を実施するための最良の形態】
【００１４】
以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でも良い。また、以下の実施の形態において、その構成要素（要素ステップ等も含む）は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
【００１５】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１６】
図１は、本発明の一実施の形態による情報処理装置において、その構成概要の一例を示すブロック図である。図１の情報処理装置ＳＹＳは、例えば、ＤＶＤ機器、ゲーム機、携帯電話機器等を代表とする所謂組み込み機器に備わった情報処理部などである。この情報処理装置ＳＹＳは、バスＢＳと、ＢＳによって相互に接続された揮発性メモリ（ＲＡＭ：Random Access Memory）、不揮発性メモリ（ＲＯＭ）、プロセッサ（ＣＰＵ：Central Processing Unit）を含んでいる。ＲＯＭは、代表的には、フラッシュメモリやＥＥＰＲＯＭ（Electrically Erasable and Programmable Read Only Memory）などである。
【００１７】
ＲＯＭには、組み込み機器の制御を行うためのプログラム（即ちファームウェア）が格納されている。このファームウェアは、予め、パーソナルコンピュータ等を代表とする外部装置ＰＣを用いて暗号化された上で格納される。すなわち、外部装置ＰＣは、ソースコードＳＣに対してソフトウェアとなる暗号化コンパイラＣＰ＿ＥＮを用いて暗号化を行い、これによって生成された暗号化ソースコードＳＣ＿ＥＮをＲＯＭに格納する。
【００１８】
ＣＰＵは、復号化モジュールＤＥ＿ＭＤと、秘密鍵ＫＥＹと、プロセッサモジュールＣＰＵ＿ＭＤを含んでいる。復号化モジュールＤＥ＿ＭＤは、詳細は後述するが、ＲＯＭに格納された暗号化コードであるメモリ出力コードＩＣＤｍを受け、これを秘密鍵ＫＥＹを用いて復号化し、その結果となる復号化コードをＣＰＵ命令コードＩＣＤｃとしてＣＰＵ＿ＭＤに出力する。ＣＰＵ＿ＭＤは、一般的なプロセッサが行うように、この復号化されたＣＰＵ命令コードＩＣＤｃ（すなわちソースコードＳＣと等価）のフェッチ、デコード、実行等によって所定の処理を行う。秘密鍵ＫＥＹは、例えば、ＣＰＵ内部で、ハードウェア回路や不揮発性メモリ等を用いて予め設定される。
【００１９】
図２は、図１の情報処理装置において、その復号化モジュールＤＥ＿ＭＤの概略的な構成例および動作例を表す概念図である。図２に示すように、復号化モジュールＤＥ＿ＭＤは、バッファＢＦ１〜ＢＦ３、復号化回路ＤＥ１〜ＤＥ３、秘密鍵ＫＥＹ１〜ＫＥＹ３、セレクタＳＥＬ１などによって構成される。ＤＥ１は、ＢＦ１の出力をＫＥＹ１を用いて復号化した上でＢＦ２に伝達し、ＤＥ２は、ＢＦ２の出力をＫＥＹ２を用いて復号化した上でＢＦ３に伝達する。ＤＥ３は、ＢＦ３の出力をＫＥＹ３を用いて復号化する。セレクタＳＥＬ１は、ＤＥ１の出力、ＤＥ２の出力、ＤＥ３の出力の中からいずれか一つを選択して出力する。
【００２０】
このように、ＤＥ＿ＭＤは、複数段（ここでは３段）のパイプラインと、パイプラインの各段の出力を選択するセレクタＳＥＬ１を備えたことが主要な特徴となっている。このような場合、パイプラインの段数を経過する（すなわちＤＥ１からＤＥ３に向かう）ほど暗号強度が強くなるが、その分、例えば分岐命令発生直後の最初の出力を取り出すまでのオーバーヘッドが増大することになる。そこで、セレクタＳＥＬ１によって暗号強度を変えた出力を取り出せるようにし、これによってオーバーヘッドの低減を図る。
【００２１】
すなわち、例えば、分岐命令発生直後、メモリＭＥＭ（例えば図１のＲＯＭに対応）からのメモリ出力コードＩＣＤｍとして、サイクルｔ＝０で暗号化コードＣＤ’１が入力され、続いて、サイクルｔ＝１、ｔ＝２、ｔ＝３で暗号化コードＣＤ’２、ＣＤ’３、ＣＤ’４が順次入力された場合を想定する。この暗号化コードＣＤ’１〜ＣＤ’４は、順次バッファＢＦ１に入力され、パイプラインで処理される。
【００２２】
ここで、ＤＥ＿ＭＤは、１番目の入力コードとなるＣＤ’１に対しては、１段目のパイプライン（復号化回路ＤＥ１）を介して復号化した後にセレクタＳＥＬ１によって復号化コードＣＤ１［１］を出力する。次いで、２番目の入力コードとなるＣＤ’２に対しては、２段目のパイプライン（復号化回路ＤＥ１，ＤＥ２）を介して復号化した後にＳＥＬ１によって復号化コードＣＤ２［２］を出力する。その後、３番目以降の入力コードとなるＣＤ’３，ＣＤ’４に対しては、３段目のパイプライン（復号化回路ＤＥ１〜ＤＥ３）を介して復号化した後にＳＥＬ１によって復号化コードＣＤ３［３］，ＣＤ４［３］を出力する。なお、ＣＤｎ［ｋ］の［ｋ］はパイプラインの段数（暗号強度）を表している。
【００２３】
このような動作を用いると、ＣＤ１［１］はｔ＝１で出力され、ＣＤ２［２］はｔ＝３で出力され、ＣＤ３［３］、ＣＤ４［３］は、それぞれｔ＝５、ｔ＝６で出力されることになる。一方、仮に、暗号強度を変えない場合には、ＣＤ１［３］がｔ＝３で出力され、以降ＣＤ２［３］〜ＣＤ４［３］がｔ＝４〜ｔ＝６で順次出力されることになる。したがって、１番目と２番目の入力コード（ＣＤ’１，ＣＤ’２）に対しては、暗号強度を弱めた分、オーバーヘッドを低減でき、３番目以降の入力コード（ＣＤ’３，ＣＤ’４）に対しては、パイプライン処理に伴い特にオーバーヘッドもなく暗号強度を高めることができる。これによって、全体として見た場合に、少ないオーバーヘッドで高い暗号強度を実現可能となる。
【００２４】
なお、パイプラインの段数は、勿論、３段に限定されるものではなく、２段以上であればよい。例えば４段とした場合は、ＣＤ１［１］がｔ＝１で出力され、ＣＤ２［２］がｔ＝３で出力され、ＣＤ３［３］がｔ＝５で出力され、ＣＤ４［４］がｔ＝７で出力され、以降、ＣＤ５［４］、ＣＤ６［４］、…が、ｔ＝８、ｔ＝９、…で出力されることになる。この場合、ＣＤ’１〜ＣＤ’３の復号化に伴うオーバーヘッドを低減できる。このように、パイプラインの段数を多くする程、オーバーヘッドを低減可能なコード数が増加するため、本実施の形態の効果がより顕著なものとなる。また、分岐命令発生直後に少ない数の命令コードを実行して復帰するようなプログラムの場合にも、前述した効果がより顕著なものとなる。
【００２５】
図３は、図１の情報処理装置において、その復号化モジュールＤＥ＿ＭＤの詳細な構成例を示すブロック図である。図３の復号化モジュールＤＥ＿ＭＤは、暗号強度制御ブロックＣＴＬ＿ＢＫ、復号化ブロックＤＥ＿ＢＫ、およびセレクタＳＥＬ２を備えている。暗号強度制御ブロックＣＴＬ＿ＢＫは、プロセッサモジュールＣＰＵ＿ＭＤからの入力信号として、条件分岐発生信号ＢＲｃ、無条件分岐発生信号ＪＰｃ、バスコマンド信号ＢＣＭＤｃ、アドレス信号ＡＤＲｃ、データ信号ＤＡＴｃ、命令フェッチ信号ＩＦｃなどを受ける。ＢＲｃおよびＪＰｃは、ＣＰＵ＿ＭＤのプログラム実行過程で分岐が行われた場合にＣＰＵ＿ＭＤによって出力される。ＢＣＭＤｃ、ＡＤＲｃ、ＤＡＴｃは、メモリに向けたアクセス信号に該当する。ＩＦｃは、メモリに対するデータアクセスではなく、命令コードアクセスの場合に出力される。なお、命令コードアクセスの場合、メモリは、図１のＲＯＭか、命令コードをＲＡＭに展開して使用する場合には図１のＲＡＭに該当することになる。
【００２６】
ＣＴＬ＿ＢＫは、これらの入力信号をＣＰＵ＿ＭＤから受け、命令コードアクセスの場合に、メモリに対してＢＣＭＤｃ、ＡＤＲｃに対応するバスコマンド信号ＢＣＭＤｍおよびアドレス信号ＡＤＲｍを発行して命令コードアクセスを行う。メモリは、このＢＣＭＤｍおよびＡＤＲｍを受けて、メモリ出力コード（すなわち暗号化コード）ＩＣＤｍおよびバス準備信号ＢＲＤＹｍを出力する。このメモリ出力コード（暗号化コード）ＩＣＤｍは、復号化ブロックＤＥ＿ＢＫに入力され、バス準備信号ＢＲＤＹｍはＣＴＬ＿ＢＫに入力される。なお、バス準備信号ＢＲＤＹｍは、メモリからメモリ出力コードＩＣＤｍが読み出される毎に、当該サイクルで生成される信号である。
【００２７】
復号化ブロックＤＥ＿ＢＫは、ＩＣＤｍを復号化した後、セレクタＳＥＬ２の一方の入力に出力する。この復号化の際に、ＣＴＬ＿ＢＫは、図２で述べたような暗号強度（パイプライン段数）を制御するための選択信号Ｓと、復号化の鍵の一部として利用するアドレス信号ＡＤＲｍをＤＥ＿ＢＫに出力する。なお、セレクタＳＥＬ２の他方の入力には、ＩＣＤｍがＤＥ＿ＢＫを介さずに伝送される。ＣＴＬ＿ＢＫは、この選択信号Ｓを用いて暗号強度を制御する際に、条件分岐発生信号ＢＲｃ、無条件分岐発生信号ＪＰｃ、およびバス準備信号ＢＲＤＹｍを用いて制御を行う。すなわち、ＣＴＬ＿ＢＫは、図２で述べたように、ＢＲｃ，ＪＰｃを受けた際、その直後にメモリから読み出した命令コードの暗号強度を弱め、その後、ＢＲＤＹｍを受ける毎に暗号強度を強めていくような制御を行う。
【００２８】
また、ＣＴＬ＿ＢＫは、セレクタＳＥＬ２を選択信号Ｓｄｔによって制御すると共に、復号化ブロックＤＥ＿ＢＫからＳＥＬ２を介してＣＰＵ命令コード（すなわち復号化コード）ＩＣＤｃが出力される際には、当該サイクル毎にバス準備信号ＢＲＤＹｃを出力する。プロセッサモジュールＣＰＵ＿ＭＤは、このＣＰＵ命令コードＩＣＤｃとバス準備信号ＢＲＤＹｃを受けることで、所定の処理を行う。なお、ＳＥＬ２は、復号化を行わないサイクル（例えばメモリに対するデータアクセスなど）に対応するために備わっている。
【００２９】
図４は、図３の復号化モジュールＤＥ＿ＭＤにおいて、その復号化ブロックＤＥ＿ＢＫの詳細な構成例を示す回路図である。図４の復号化ブロックＤＥ＿ＢＫは、レジスタＲＥＧ４０，ＲＥＧ４１ａ〜ＲＥＧ４３ａ，ＲＥＧ４１ｂ〜ＲＥＧ４３ｂ、排他的論理和（ＥＸＯＲ）回路ＥＯＲ４０，ＥＯＲ４１ａ〜ＥＯＲ４３ａ，ＥＯＲ４１ｂ〜ＥＯＲ４３ｂ、非線形変換回路ＮＬ１〜ＮＬ３、セレクタＳＥＬ１，ＳＥＬ４１〜ＳＥＬ４４などによって構成される。
【００３０】
ＥＯＲ４０は、メモリ出力コードＩＣＤｍと当該コードが格納されていたアドレス信号ＡＤＲｍとのＥＸＯＲ演算を行う。この演算は、復号化アルゴリズム（暗号化アルゴリズム）の一部となる演算である。なお、ここでは、ＡＤＲｍから圧縮回路ＣＰＲを経てＥＯＲ４０に対する入力が行われているが、この圧縮回路ＣＰＲは、ＡＤＲｍとＩＣＤｍのビット幅を等しくするものであり、元々等しい場合には特に必要ない。ＲＥＧ４０は、暗号化コードフェッチ用の回路であり、このＥＯＲ４０の演算結果をラッチする。
【００３１】
ＲＥＧ４０の出力は、ＥＯＲ４１ａとＮＬ１とＥＯＲ４１ｂの処理を経ることで１段階目の復号化が行われる。ＥＯＲ４１ａは、ＲＥＧ４０の出力と秘密鍵ＫＥＹ１とのＥＸＯＲ演算を行い、ＮＬ１は、このＥＸＯＲ演算結果を非線形変換し、ＥＯＲ４１ｂは、この非線形変換結果とＲＥＧ４１ａに格納されている前サイクルのコードとをＥＸＯＲ演算する。ＮＬ１は、特に限定はされないが、例えば、テーブル等を用いて、あるビット列を他のビット列に変換する方式などが知られている。ＲＥＧ４１ａには、ＲＥＧ４０の出力がＳＥＬ４１の一方の入力を介して伝送される。また、ＲＥＧ４１ａの出力は、ＳＥＬ４４の一方の入力を介してＥＯＲ４１ｂに伝送される。
【００３２】
１段階目の復号化処理結果となるＥＯＲ４１ｂの出力は、ＥＯＲ４２ａとＮＬ２とＥＯＲ４２ｂの処理を経ることで２段階目の復号化が行われる。ＥＯＲ４２ａは、ＥＯＲ４１ｂの出力と秘密鍵ＫＥＹ２とのＥＸＯＲ演算を行い、ＮＬ２は、このＥＸＯＲ演算結果を非線形変換し、ＥＯＲ４２ｂは、この非線形変換結果とＲＥＧ４２ａに格納されている前サイクルのコードとをＥＸＯＲ演算する。ＲＥＧ４２ａには、ＥＯＲ４１ｂの出力がＳＥＬ４２の一方の入力を介して伝送される。また、ＲＥＧ４２ａの出力は、ＥＯＲ４２ｂに伝送される。
【００３３】
２段階目の復号化処理結果となるＥＯＲ４２ｂの出力は、ＥＯＲ４３ａとＮＬ３とＥＯＲ４３ｂの処理を経ることで３段階目の復号化が行われる。ＥＯＲ４３ａは、ＥＯＲ４２ｂの出力と秘密鍵ＫＥＹ３とのＥＸＯＲ演算を行い、ＮＬ３は、このＥＸＯＲ演算結果を非線形変換し、ＥＯＲ４３ｂは、この非線形変換結果とＲＥＧ４３ａに格納されている前サイクルのコードとをＥＸＯＲ演算する。ＲＥＧ４３ａには、ＥＯＲ４２ｂの出力がＳＥＬ４３の一方の入力を介して伝送される。また、ＲＥＧ４３ａの出力は、ＥＯＲ４３ｂに伝送される。
【００３４】
ＳＥＬ１は、１段階目の復号化処理結果（ＥＯＲ４１ｂの出力）、２段階目の復号化処理結果（ＥＯＲ４２ｂの出力）、および３段階目の復号化処理結果（ＥＯＲ４３ｂの出力）の中からいずれか一つを選択し、それをＣＰＵ命令コードＩＣＤｃとして出力する。選択信号Ｓ１が入力された場合には、ＥＯＲ４１ｂの出力が選択され、選択信号Ｓ２が入力された場合には、ＥＯＲ４２ｂの出力が選択され、選択信号Ｓ３が入力された場合には、ＥＯＲ４３ｂの出力が選択される。なお、ＳＥＬ４４の他方の入力は初期値ＩＶとなっており、この初期値ＩＶは、分岐命令発生直後の最初の命令コードに対して１段階目の復号化処理を行う際に、前サイクルのコードの代わりに用いられる。
【００３５】
また、ＲＥＧ４１ｂ〜ＲＥＧ４３ｂは、復号化処理の過程で割り込み命令が発生した際の退避レジスタとして用いられる。すなわち、割り込み命令が発生した際、ＲＥＧ４１ｂは、ＲＥＧ４１ａの出力（ＳＥＬ４４の出力）をラッチし、ＲＥＧ４２ｂは、ＲＥＧ４２ａの出力をラッチし、ＲＥＧ４３ｂは、ＲＥＧ４３ａの出力をラッチする。一方、割り込み命令から復帰する際には、ＲＥＧ４１ｂの出力が、ＳＥＬ４１の他方の入力を介してＲＥＧ４１ａに戻され、ＲＥＧ４２ｂの出力が、ＳＥＬ４２の他方の入力を介してＲＥＧ４２ａに戻され、ＲＥＧ４３ｂの出力が、ＳＥＬ４３の他方の入力を介してＲＥＧ４３ａに戻される。
【００３６】
図５は、図４の復号化ブロックＤＥ＿ＢＫの動作例を示す説明図である。図５において、ｆ１は、図４のＫＥＹ１によるＥＸＯＲ演算とその後のＮＬ１による非線形演算を表し、同様に、ｆ２は、ＫＥＹ２によるＥＸＯＲ演算とＮＬ２による非線形演算を表し、ｆ３は、ＫＥＹ３によるＥＸＯＲ演算とＮＬ３による非線形演算を表す。図４のＲＥＧ４０の出力として、例えば、サイクルｔ＝０で暗号化コードＣＤ’１、ｔ＝１でＣＤ’２、…、ｔ＝６でＣＤ’７が入力された場合を想定する。
【００３７】
この場合、１段階目の復号化処理結果として、ｔ＝１で復号化コード「ＣＤ１［１］＝ｆ１（ＣＤ’１）＋ＣＤ’０」（ここでＣＤ’０＝ＩＶ）が出力され、ｔ＝２で「ＣＤ２［１］＝ｆ１（ＣＤ’２）＋ＣＤ’１」が出力され、以降同様にして、式（１）で与えられる復号化コードが出力される。
【００３８】
ＣＤｎ［１］＝ｆ１（ＣＤ’ｎ）＋ＣＤ’ｎ−１      （１）
また、これらの処理と並行してパイプラインで２段階目の復号化処理が行われる。２段階目の復号化処理結果としては、ｔ＝２で復号化コード「ＣＤ１［２］＝ｆ２（ＣＤ１［１］）＋ｘｘ（ここでｘｘ＝不定）が出力され、ｔ＝３で「ＣＤ２［２］＝ｆ２（ＣＤ２［１］）＋ＣＤ１［１］」が出力され、以降同様にして、式（２）で与えられる復号化コードが出力される。
【００３９】
ＣＤｎ［２］＝ｆ２（ＣＤｎ［１］）＋ＣＤｎ−１［１］      （２）
さらに、これらの処理と並行してパイプラインで３段階目の復号化処理が行われる。３段階目の復号化処理結果としては、ｔ＝３で復号化コード「ＣＤ１［３］＝ｆ３（ＣＤ１［２］）＋ｘｘ（ここでｘｘ＝不定）が出力され、ｔ＝４で「ＣＤ２［３］＝ｆ３（ＣＤ２［２］）＋ＣＤ１［２］」が出力され、以降同様にして、式（３）で与えられる復号化コードが出力される。
【００４０】
ＣＤｎ［３］＝ｆ３（ＣＤｎ［２］）＋ＣＤｎ−１［２］      （３）
したがって、例えば、ｔ＝６の復号化コードＣＤ４［３］を得るためには、ｆ３に加えてその前サイクル（ｔ＝５）および前々サイクル（ｔ＝４）のＣＤ４［２］およびＣＤ３［２］が必要となる。更に、例えば、このｔ＝４のＣＤ３［２］を得るためには、ｆ２に加えて、その前サイクル（ｔ＝３）および前々サイクル（ｔ＝２）のＣＤ３［１］およびＣＤ２［１］が必要となる。更に、例えば、このｔ＝２のＣＤ２［１］を得るためには、ｆ１に加えて、ＣＤ’２およびＣＤ’１が必要となる。このようにして、ＣＤ４［３］を得るためには、結果的にｆ１〜ｆ３と、ＣＤ’１〜ＣＤ’４が必要となるため、高い暗号強度を実現できる。また、図５において、暗号化コードＣＤ’１が分岐命令直後の最初の命令コードである場合、ＣＰＵ命令コードＩＣＤｃとしては、図４のセレクタＳＥＬ１によってｔ＝１でＣＤ１［１］、ｔ＝３でＣＤ２［２］、ｔ＝５でＣＤ３［３］、ｔ＝６でＣＤ４［３］、ｔ＝７でＣＤ５［３］が得られる。
【００４１】
図６は、図３の復号化モジュールＤＥ＿ＭＤにおいて、その暗号強度制御ブロックＣＴＬ＿ＢＫの主要部の構成例を示すブロック図である。図６の暗号強度制御ブロックＣＴＬ＿ＢＫは、カウンタ部ＣＵＮＴ、選択信号制御部ＳＥＬ＿ＣＴＬ、プロセッサ命令フェッチ制御部ＩＦ＿ＣＴＬなどを備えている。これらは、例えば、ステートマシーンなどによって実現可能である。カウンタ部ＣＵＮＴは、プロセッサモジュールＣＰＵ＿ＭＤからの条件分岐発生信号ＢＲｃと無条件分岐発生信号ＪＰｃの論理和（ＯＲ６）出力を受けて、レジスタＲＥＧ６０の値をリセット（ＲＳＴ）する。そして、クロック信号ＣＬＫとバス準備信号ＢＲＤＹｍの論理積（ＡＤ６）出力を受けて、ＢＲＤＹｍが入力される（すなわちメモリから暗号化コードが到達する）サイクル毎に、加算回路ＡＤＤを介してＲＥＧ６０の値に「１」を加える。
【００４２】
選択信号制御部ＳＥＬ＿ＣＴＬは、ＲＥＧ６０のカウンタ値が「０」の場合、「２」の場合、「４」の場合にそれぞれ選択信号Ｓ１、Ｓ２、Ｓ３を出力し、以降「５」、「６」、…の場合に選択信号Ｓ３を出力する。プロセッサ命令フェッチ制御部ＩＦ＿ＣＴＬも、ＲＥＧ６０のカウンタ値が「０」の場合、「２」の場合、「４」の場合に、バス準備信号ＢＲＤＹｃとしてそれぞれ‘１’を出力し、以降「５」、「６」、…の場合にも‘１’を出力する。また、ＩＦ＿ＣＴＬは、カウンタ値が「１」、「３」の場合にはＢＲＤＹｃとして‘０’を出力する。
【００４３】
図７は、図３の復号化モジュールＤＥ＿ＭＤにおいて、図４および図６の構成例を用いた場合の動作例を示すシーケンス図である。図７においては、サイクルｔ＝１、ｔ＝２、ｔ＝３、…で、フェッチ暗号化コード（図４のＦＦ４０の出力）がそれぞれ、ＣＤ’１、ＣＤ’２、ＣＤ’３、…であった場合を想定する。ｔ＝１では、暗号強度制御ブロックＣＴＬ＿ＢＫより選択信号Ｓ１とバス準備信号ＢＲＤＹｃ＝‘１’が出力され、復号化ブロックＤＥ＿ＢＫは、選択信号Ｓ１に伴い、ＣＤ’１に対応する復号化コードＣＤ１［１］を出力する。ｔ＝３では、ＣＴＬ＿ＢＫより選択信号Ｓ２とＢＲＤＹｃ＝‘１’が出力され、ＤＥ＿ＢＫは、Ｓ２に伴い、ＣＤ’２に対応する復号化コードＣＤ２［２］を出力する。
【００４４】
ｔ＝５では、ＣＴＬ＿ＢＫより選択信号Ｓ３とＢＲＤＹｃ＝‘１’が出力され、ＤＥ＿ＢＫは、Ｓ３に伴い、ＣＤ’３に対応する復号化コードＣＤ３［３］を出力する。ｔ＝６以降では、連続する各サイクル毎にＣＴＬ＿ＢＫより選択信号Ｓ３とＢＲＤＹｃ＝‘１’が出力され、ＤＥ＿ＢＫは、この各サイクル毎に、ＣＤ’４、ＣＤ’５、…にそれぞれ対応する復号化コードＣＤ４［３］、ＣＤ５［３］、…を順次出力する。プロセッサモジュールＣＰＵ＿ＭＤは、このＢＲＤＹｃ＝‘１’のサイクルの復号化コード（すなわちソースコードと等価）をフェッチすることで所定の処理を行う。
【００４５】
図８は、図１の情報処理装置において、暗号化コードを生成する際に用いる暗号化コンパイラＣＰ＿ＥＮの動作例を示すフロー図である。図９は、図８の補足図である。図９に示すように、まず、暗号化前のソースコードＳＣとして、外部装置ＰＣの処理テーブルＴＢＬ上に、アドレス信号ＡＤＲｍの値「０〜５７、…」と、各ＡＤＲｍの値に順次割り付けられるソースコード「ＣＤ１〜ＣＤ５８、…」が予め作成されているものとする。暗号化コンパイラＣＰ＿ＥＮは、この処理テーブルＴＢＬを入力として暗号化処理を行い、アドレス信号ＡＤＲｍの値「０〜５７、…」毎に暗号化コード「ＣＤ’１〜ＣＤ’５８、…」を生成する。
【００４６】
暗号化コンパイラＣＰ＿ＥＮは、図８に示すように、まず、「ｊ＝１、ＡＤＲｍ＝０」とおく（Ｓ８０１）。次いで、当該ＡＤＲｍのソースコードが、分岐境界の先頭となるコードか否かを判定する。すなわち、図９において、例えば、ＡＤＲｍ＝４のソースコードＣＤ５がＡＤＲｍ＝５２のサブルーチンへ無条件分岐する命令であり、ＡＤＲｍ＝５５のソースコードＣＤ５６がサブルーチンから復帰する命令であったとする。このような場合、最初のコードとなるＣＤ１を含めて、サブルーチン復帰後の最初のコードとなるＡＤＲｍ＝５のＣＤ６と、サブルーチン分岐後の最初のコードとなるＡＤＲｍ＝５２のＣＤ５３と、何らかの形で分岐した後の最初のコードとなるＡＤＲｍ＝５６のＣＤ５７とが分岐境界の先頭コード（ＳＴＡ０〜ＳＴＡ３）となる。
【００４７】
図８において、ＣＰ＿ＥＮは、分岐境界の先頭であった場合にはｊ＝１とし（Ｓ８０７）、そうでない場合は、図４のＥＯＲ４０に復号化処理に対応する暗号化演算「ＣＤｎ＝ＡＤＲｍ＋ＣＤｎ」を行う（Ｓ８０３）。次いで、ｊの値を判別し、その値に応じた暗号化コードＣＤ’ｎを生成する（Ｓ８０４）。この際に、（ａ）ｊ＝１（すなわち、分岐境界の先頭アドレスのコード）の場合には、式（１）’を用いて１段階目の暗号化コードＣＤ’ｎ＝ＣＤ’ｎ［１］を生成する。ここで、式（１）’のｆ１’は、図５で説明したｆ１の逆演算であり、非線形逆変換を行った後にＫＥＹ１よるＥＸＯＲ演算を行うことを意味する。また、このｊ＝１の場合、式（１）’のＣＤｎ−１は図５で説明した初期値ＩＶとする。
【００４８】
ＣＤ’ｎ［１］＝ｆ１’（ＣＤｎ）＋ＣＤｎ−１      （１）’
また、Ｓ８０４において、（ｂ）ｊ＝２（すなわち、「分岐境界の先頭アドレス＋１」のコード）の場合には、式（２）’を用いて２段階目の暗号化コードＣＤ’ｎ＝ＣＤ’ｎ［２］を生成する。ここで、式（２）’のｆ２’は、図５で説明したｆ２の逆演算であり、非線形逆変換を行った後にＫＥＹ２よるＥＸＯＲ演算を行うことを意味する。また、この際の演算には、対象となっているソースコードに対する１段階目の暗号化コードとなるＣＤ’ｎ［１］とその前サイクルのソースコードに対する１段階目の暗号化コードとなるＣＤ’ｎ−１［１］を用いることになる。これらは式（１）’で与えられる。
【００４９】
ＣＤ’ｎ［２］＝ｆ２’（ＣＤ’ｎ［１］）＋ＣＤ’ｎ−１［１］      （２）’
更に、Ｓ８０４において、（ｃ）ｊ≧３（すなわち、「分岐境界の先頭＋２」以上のコード）の場合には、式（３）’を用いて３段階目の暗号化コードＣＤ’ｎ＝ＣＤ’ｎ［３］を生成する。ここで、式（３）’のｆ３’は、図５で説明したｆ３の逆演算であり、非線形逆変換を行った後にＫＥＹ３よるＥＸＯＲ演算を行うことを意味する。また、この際の演算には、対象となっているソースコードに対する２段階目の暗号化コードとなるＣＤ’ｎ［２］とその前サイクルのソースコードに対する２段階目の暗号化コードとなるＣＤ’ｎ−１［２］を用いることになる。これらは式（２）’で与えられる。また、この式（２）’の演算を行うためには式（１）’を用いることになる。
【００５０】
ＣＤ’ｎ［３］＝ｆ３’（ＣＤ’ｎ［２］）＋ＣＤ’ｎ−１［２］      （３）’
次いで、Ｓ８０５において、「ｊ＝ｊ＋１、ＡＤＲｍ＝ＡＤＲｍ＋１」を行い、Ｓ８０６において、ＡＤＲｍが最終アドレスか否かの判定を行う。最終アドレスの場合には暗号化の処理が終了となり、そうでない場合にはＳ８０２に戻って、次のＡＤＲｍのソースコードを対象に同様の処理を行う。そして、このようにして生成された暗号化ソースコードＳＣ＿ＥＮが図１の情報処理装置ＳＹＳ内のＲＯＭに格納される。
【００５１】
図１０は、本発明の一実施の形態による暗号化命令コードの復号化方法において、その処理の一例を示すフロー図である。図１０の復号化方法は、前述した図８の暗号化方法の逆演算を行うものであり、図２〜図７で説明した復号化動作を例えばプロセッサを用いたプログラム処理等によって行うような場合の処理フローとなる。図１０に示す各処理内容Ｓ１００１〜Ｓ１００７は、図８で説明した各処理内容Ｓ８０１〜Ｓ８０７とほぼ同様であり、図８のＳ８０３に対応するＳ１００３と、図８のＳ８０４に対応するＳ１００４のみが異なっている。
【００５２】
すなわち、Ｓ１００３では、暗号化コードＣＤ’ｎとそのアドレス信号ＡＤＲｍを受けて、図４のＥＯＲ４０に該当する復号化演算「ＣＤ’ｎ＝ＡＤＲｍ＋ＣＤ’ｎ」を行う。また、Ｓ１００４において、（ａ）ｊ＝１の場合には、図５で説明した式（１）を用いて１段階目の復号化コードＣＤｎ＝ＣＤｎ［１］を生成する。同様に、（ｂ）ｊ＝２の場合には、式（２）を用いて２段階目の復号化コードＣＤｎ＝ＣＤｎ［２］を生成し、（ｃ）ｊ≧３の場合には、式（３）を用いて３段階目の復号化コードＣＤｎ＝ＣＤｎ［３］を生成する。
【００５３】
なお、図１０において、分岐命令からの距離に応じてｊの値（暗号強度）を決定する処理（すなわちＳ１００１、Ｓ１００２、Ｓ１００５、Ｓ１００７に該当）は、図１の情報処理装置を用いた場合、図６の暗号強度制御ブロックＣＴＬ＿ＢＫによって行われる。また、図１０の処理を例えばプログラム処理で行う場合、アドレス信号ＡＤＲｍの増加（すなわちＳ１００５に該当）はプログラムカウンタ等の処理となる。
【００５４】
このようにプログラム処理によって復号化処理を行う場合、図４のような専用のハードウェアを用いる場合に比べると保護機能および実行速度共に低下するが、秘密鍵ＫＥＹを解読されない限り保護機能は確保できる。また、プログラム処理を用いた場合もハードウェア処理の場合と同様に、分岐命令発生直後から段階的に暗号強度が強まる（すなわち演算量が増えていく）ような復号化アルゴリズムとなっているため、分岐命令発生直後のオーバーヘッドを低減でき、高速化が図れる。
【００５５】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【００５６】
例えば、前述した実施の形態では、３段のパイプラインを用いて、分岐命令発生後に、ＣＤ１［１］、ＣＤ２［２］、ＣＤ３［３］、ＣＤ４［３］、…という順で復号化コードを生成する例を示したが、分岐命令発生直後の処理段数が小さく、その後、命令実行サイクルを経過する毎に処理段数を増やしていくような構成であれば種々変更可能である。例えば、４段のパイプラインを用いて、分岐命令発生後に２段目のパイプラインから出力させ、ＣＤ１［２］、ＣＤ２［３］、ＣＤ３［４］、ＣＤ４［４］、…という順で復号化コードを出力させることも可能である。また、例えば、例えば、５段のパイプラインを用いて、分岐命令発生後に１段飛ばしで処理段数を増やしていき、ＣＤ１［１］、ＣＤ２［３］、ＣＤ３［５］、ＣＤ４［５］、…という順で復号化コードを出力させることも可能である。
【産業上の利用可能性】
【００５７】
本発明の一実施の形態による情報処理装置は、ＲＯＭに格納されたファームウェアを用いて所望のハードウェア制御を行う組み込み機器などに適用して特に有益な技術であり、これに限らず、セキュリティが求められる情報処理機器全般に対して広く適用可能である。
【図面の簡単な説明】
【００５８】
【図１】本発明の一実施の形態による情報処理装置において、その構成概要の一例を示すブロック図である。
【図２】図１の情報処理装置において、その復号化モジュールの概略的な構成例および動作例を表す概念図である。
【図３】図１の情報処理装置において、その復号化モジュールの詳細な構成例を示すブロック図である。
【図４】図３の復号化モジュールにおいて、その復号化ブロックの詳細な構成例を示す回路図である。
【図５】図４の復号化ブロックの動作例を示す説明図である。
【図６】図３の復号化モジュールにおいて、その暗号強度制御ブロックの主要部の構成例を示すブロック図である。
【図７】図３の復号化モジュールにおいて、図４および図６の構成例を用いた場合の動作例を示すシーケンス図である。
【図８】図１の情報処理装置において、暗号化コードを生成する際に用いる暗号化コンパイラの動作例を示すフロー図である。
【図９】図８の補足図である。
【図１０】本発明の一実施の形態による暗号化命令の復号化処理方法において、その処理の一例を示すフロー図である。
【符号の説明】
【００５９】
ＰＣ  外部装置
ＳＣ  ソースコード
ＣＰ＿ＥＮ  暗号化コンパイラ
ＳＣ＿ＥＮ  暗号化ソースコード
ＳＹＳ  情報処理装置
ＢＳ  バス
ＣＰＵ＿ＭＤ  プロセッサモジュール
ＤＥ＿ＭＤ  復号化モジュール
ＫＥＹ  秘密鍵
ＩＣＤｍ  メモリ出力コード
ＩＣＤｃ  ＣＰＵ命令コード
ＢＦ  バッファ
ＤＥ  復号化回路
ＣＤ’  暗号化コード
ＣＤ  復号化コード
ＳＥＬ  セレクタ
ＣＴＬ＿ＢＫ  暗号強度制御ブロック
ＤＥ＿ＢＫ  復号化ブロック
ＢＲ  条件分岐発生信号
ＪＰ  無条件分岐発生信号
ＢＣＭＤ  バスコマンド信号
ＡＤＲ  アドレス信号
ＤＡＴ  データ信号
ＩＦ  命令フェッチ信号
ＢＲＤＹ  バス準備信号
Ｓ  選択信号
ＲＥＧ  レジスタ
ＥＯＲ  排他的論理和回路
ＮＬ  非線形変換回路
ＣＰＲ  圧縮回路
ＣＵＮＴ  カウンタ部
ＳＥＬ＿ＣＴＬ  選択信号制御部
ＡＤＤ  加算回路
ＡＤ  論理積回路
ＯＲ  論理和回路
ＣＬＫ  クロック信号
ＳＥＬ＿ＣＴＬ  選択信号制御部
ＩＦ＿ＣＴＬ  プロセッサ命令フェッチ制御部
【図１】
0005183279.tif 000002
【図２】
0005183279.tif 000003
【図３】
0005183279.tif 000004
【図４】
0005183279.tif 000005
【図５】
0005183279.tif 000006
【図６】
0005183279.tif 000007
【図７】
0005183279.tif 000008
【図８】
0005183279.tif 000009
【図９】
0005183279.tif 000010
【図１０】
0005183279.tif 000011