(57)【要約】【課題】処理効率が向上する情報処理装置および処理の高速化方法を提供することにある。【解決手段】情報処理装置は、命令実行制御部（１１）と、演算実行部（１２）と、コンディションコード生成部（１３）とを具備する。情報処理装置が実行する命令は、複数の種類に分類される。命令実行制御部（１１）は、プログラムを格納するメモリ（２１）をアクセスして命令を取り出す。演算実行部（１２）は、取り出した命令をマイクロ命令により実行する。コンディションコード生成部（１３）は、命令が実行される順番に対応して定まる命令の種類の前後関係が所定の条件を満たすとき、命令の実行結果の状態を示すコンディションコードを生成する。【選択図】図６
2008040658.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを格納するメモリをアクセスして命令を取り出す命令実行制御部と、前記命令は、複数の種類に分類され、
取り出した前記命令をマイクロ命令により実行する演算実行部と、
前記命令が実行される順番に対応して定まる前記種類の前後関係が所定の条件を満たすとき、前記命令の実行結果の状態を示すコンディションコードを生成するコンディションコード生成部と
を具備する
情報処理装置。
【請求項２】
前記マイクロ命令を格納するマイクロ命令記憶部と、
前記命令に対応する前記マイクロ命令が格納される前記マイクロ命令記憶部の先頭アドレスと、前記種類を示すＣＣ生成フラグとを含むマイクロ命令制御情報を前記命令の命令コードに関連付けて格納するマイクロ命令制御記憶部と
をさらに具備し、
前記ＣＣ生成フラグに基づいて前記コンディションコード生成部を起動して前記コンディションコードを生成する
請求項１に記載の情報処理装置。
【請求項３】
前記マイクロ命令制御記憶部から取り出した前記ＣＣ生成フラグを保持するフラグ保持部をさらに備え、
前記フラグ保持部に保持される実行済みの前記命令の前記ＣＣ生成フラグと、前記マイクロ命令制御記憶部から取り出す実行前の前記命令の前記ＣＣ生成フラグとに基づいて前記コンディションコード生成部を起動する
請求項２に記載の情報処理装置。
【請求項４】
前記命令は、
前記コンディションコードを生成する第１種類の命令と、
前記コンディションコードを生成しない第２種類の命令と
を備え、
前記命令実行制御部は、前記第１種類の命令の後に前記第２種類の命令を前記メモリから取り出したとき、前記コンディションコード生成部を起動し、
前記コンディションコード生成部は、前記第１種類の命令の実行結果の状態を示す前記コンディションコードを生成する
請求項１から請求項３のいずれかに記載の情報処理装置。
【請求項５】
前記第２種類の命令は、
前記コンディションコードを参照する第３種類の命令と、
前記コンディションコードを参照しない第４種類の命令と
を備え、
前記命令実行制御部は、前記第１種類の命令に続いて前記第３種類の命令を取り出したとき、または、前記第１種類の命令、前記第４種類の命令に続いて前記第３種類の命令を取り出したとき、前記コンディションコード生成を起動し、
前記コンディションコード生成部は、前記第１種類の命令の実行結果の状態を示す前記コンディションコードを生成する
請求項４に記載の情報処理装置。
【請求項６】
プログラムを格納するメモリをアクセスして命令を取り出すフェッチステップと、前記命令は、複数の種類に分類され、
取り出した前記命令をマイクロ命令により実行する実行ステップと、
前記命令が実行される順番に対応して定まる前記種類の前後関係が所定の条件を満たすとき、前記命令の実行結果の状態を示すコンディションコードを生成するＣＣ生成ステップと
を具備する
情報処理装置の高速化方法。
【請求項７】
前記マイクロ命令を格納するマイクロ命令記憶部と、
前記命令に対応する前記マイクロ命令が格納される前記マイクロ命令記憶部の先頭アドレスと、前記種類を示すＣＣ生成フラグとを含むマイクロ命令制御情報を前記命令の命令コードに関連付けて格納するマイクロ命令制御テーブルと
をさらに具備し、
前記フェッチステップは、前記命令コードに基づいて前記ＣＣ生成フラグを取り出し、前記所定の条件を満たすか否かを判定する判定ステップを備える
請求項６に記載の情報処理装置の高速化方法。
【請求項８】
前記判定ステップと前記ＣＣ生成ステップとは、次の命令を前記フェッチステップにより取り出した後に実行される
請求項７に記載の情報処理装置の高速化方法。
【請求項９】
前記命令は、
前記コンディションコードを生成する第１種類の命令と、
前記コンディションコードを生成しない第２種類の命令と
を備え、
前記フェッチステップにより、前記第１種類の命令、前記第２種類の命令の順に取り出したとき、前記ＣＣ生成ステップは、前記第１種類の命令の実行結果の状態を示す前記コンディションコードを生成するステップを含む
請求項６から請求項８のいずれかに記載の情報処理装置の高速化方法。
【請求項１０】
前記第２種類の命令は、
前記コンディションコードを参照する第３種類の命令と、
前記コンディションコードを参照しない第４種類の命令と
を備え、
前記フェッチステップにより、前記第１種類の命令に続いて前記第３種類の命令を取り出したとき、または、前記第１種類の命令、前記第４種類の命令に続いて前記第３種類の命令を取り出したとき、前記ＣＣ生成ステップは、前記第１種類の命令の実行結果の状態を示す前記コンディションコードを生成するステップを含む
請求項９に記載の情報処理装置の高速化方法。
【請求項１１】
メモリをアクセスして命令を取り出すフェッチ処理と、前記命令は、複数の種類に分類され、
取り出した前記命令をマイクロ命令により実行する実行処理と、
前記命令が実行される順番に対応して定まる前記種類の前後関係が所定の条件を満たすとき、前記命令を実行した結果の状態を示すコンディションコードを生成するＣＣ生成処理と
を情報処理装置に実行させるためのプログラム。
【請求項１２】
前記ＣＣ生成処理は、前記所定の条件を満たすとき、次の命令が前記フェッチ処理により取り出された後に実行される
請求項１１に記載の情報処理装置に実行させるためのプログラム。
【請求項１３】
前記マイクロ命令を格納するマイクロ命令記憶部と、
前記命令に対応する前記マイクロ命令が格納される前記マイクロ命令記憶部の先頭アドレスと、前記種類を示すＣＣ生成フラグと含むマイクロ命令制御情報を前記命令の命令コードに関連付けて格納するマイクロ命令制御テーブルと
をさらに具備し、
前記フェッチ処理は、前記命令コードに基づいて前記ＣＣ生成フラグを取り出して前記所定の条件を満たすか否かを判定する判定処理を備える
請求項１１または請求項１２に記載の情報処理装置に実行させるプログラム。
【請求項１４】
前記命令は、
前記コンディションコードを生成する第１種類の命令と、
前記コンディションコードを生成しない第２種類の命令と
を備え、
前記フェッチ処理により、前記第１種類の命令、前記第２種類の命令の順に命令が取り出されたとき、前記ＣＣ生成処理は、前記第１種類の命令の実行結果の状態を示す前記コンディションコードを生成する
請求項１１から請求項１３のいずれかに記載の情報処理装置に実行させるためのプログラム。
【請求項１５】
前記第２種類の命令は、
前記コンディションコードを参照する第３種類の命令と、
前記コンディションコードを参照しない第４種類の命令と
を備え、
前記フェッチ処理により、前記第１種類の命令に続いて前記第３種類の命令が取り出されたとき、または、前記第１種類の命令、前記第４種類の命令に続いて前記第３種類の命令が取り出されたとき、前記ＣＣ生成処理は、前記第１種類の命令の実行結果の状態を示す前記コンディションコードを生成する処理を含む
請求項１４に記載の情報処理装置に実行させるためのプログラム。
【請求項１６】
請求項１１から請求項１５のいずれかに記載の情報処理装置に実行させるためのプログラムを記録した情報処理装置読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および、その情報処理の高速化方法に関する。
【背景技術】
【０００２】
情報処理装置において、演算結果の状態を示すコンディションコードは、演算命令が実行されるたびに生成される。生成されたコンディションコードは、条件分岐命令や条件付き演算命令にて判定するために用いられている。従来のコンディションコードの制御方法に関する一例が、特開平８−３０５５６３号公報に記載されている。
【０００３】
この公報に記載されたコンディションコード制御では、コンディションコードは演算命令が実行されるたびに生成される。指定の条件を満たすときに演算が実行される条件付き演算命令は、その指定する条件を示す条件指定フィールドを備える。この条件指定フィールドに指定された条件にコンディションコードが合致するか否か判定され、合致したときのみ条件付演算命令は実行される。
【０００４】
このように、従来の方法では、コンディションコードは各演算命令の実行時に常に生成されることが多い。しかし、コンディションコードは、常時使用されるわけではなく、上述の条件付き演算命令や条件分岐命令など使用される範囲は限定される。プロセッサの実装方式やエミュレーション方式によっては、コンディションコードの判定よりもコンディションコードの生成処理に時間を要することもある。その場合、不要なコンディションコードを生成するために時間を費やすことになる。また、上記の条件付き演算命令は、その処理装置専用の命令であるため、他のソフトウェアやマイクロ命令との互換性を維持することは困難である。
【０００５】
また、特開平１０−６９３８４号公報および特開平１１−３２７９０１号公報には、遅延分岐方式のプロセッサにおける遅延分岐命令の分岐動作を制御する遅延分岐制御方法に関連して、条件フラグの書き換えを制御する条件フラグ書き換え制御方法が開示されている。この条件フラグ書き換え制御方法では、プログラムにおける命令の前後関係に基づいて、条件フラグの書き換えを許可するか禁止するかが制御される。
【０００６】
特開昭５７−５１５２号公報には、制御記憶装置の読出し制御方式に関する技術が開示されている。この方法は、制御記憶装置と、計数機能付きアドレスレジスタと、次番地アドレスを作成する手段と、分岐アドレスを格納する手段とを具備する。制御記憶装置は、マイクロプログラムを格納している。計数機能付きアドレスレジスタは、制御記憶装置に直接接続している。次番地アドレスを作成する手段は、マイクロ命令語を逐次読出すときに計数機能付きアドレスレジスタがその格納内容を計数して次番地アドレスを作成する。分岐アドレスを格納する手段は、分岐するときに制御記憶装置から読出されたマイクロ命令語に含まれた分岐アドレスを計数機能付きアドレスレジスタへ格納する。
【０００７】
特開２００３−９９２４８号公報には、命令供給手段と、解読手段と、命令発行制御手段と、実行手段とを備えるプロセッサの制御機能に関する技術が開示されている。命令供給手段は、複数の命令を供給し、解読手段は、複数の命令を各々解読する。命令発行制御手段は、複数の命令中に各命令を実行するか否かを示す条件を指定する実行条件情報が指定され、実行条件情報で指定された条件を参照して、有効なオペレーションを実行する命令又は命令の集合を決定する。実行手段は、複数の命令中に各命令の動作が指定され、指定に基づいて１つ又は複数のオペレーションを実行する。このうち、命令発行制御手段は、次の機能をさらに有する。まず、命令発行制御手段は、実行条件情報で指定された条件を参照することにより、実行する必要のある有効な命令であるか、実行する必要のない無効な命令であるかを判断する。無効な命令であると判断した命令に関しては、命令発行制御手段は、その命令を実行手段へ発行する前に命令自体を削除するように制御する。そして、命令発行制御手段は、その命令に代えて後続する有効な命令を実行手段に発行するように制御する。
【０００８】
【特許文献１】特開平８−３０５５６３号公報
【特許文献２】特開平１０−６９３８４号公報
【特許文献３】特開平１１−３２７９０１号公報
【特許文献４】特開昭５７−５１５２号公報
【特許文献５】特開２００３−９９２４８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明の目的は、処理効率が向上する情報処理装置および処理の高速化方法を提供することにある。
【００１０】
本発明の他の目的は、プログラムのバイナリコードを変更せずに処理効率が向上する情報処理装置および処理の高速化方法を提供することにある。
【課題を解決するための手段】
【００１１】
以下に、［発明を実施するための最良の形態］で使用される番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］との対応関係を明らかにするために付加されたものである。ただし、それらの番号・符号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１２】
本発明の観点では、情報処理装置は、命令実行制御部（１１）と、演算実行部（１２）と、コンディションコード生成部（１３）とを具備する。情報処理装置が実行する命令は、複数の種類に分類される。命令実行制御部（１１）は、プログラムを格納するメモリ（２１）をアクセスして命令を取り出す。演算実行部（１２）は、取り出した命令をマイクロ命令により実行する。コンディションコード生成部（１３）は、命令が実行される順番に対応して定まる命令の種類の前後関係が所定の条件を満たすとき、命令の実行結果の状態を示すコンディションコードを生成する。
【００１３】
本発明の情報処理装置は、マイクロ命令記憶部（２３）と、マイクロ命令制御記憶部（２２）とをさらに具備する。マイクロ命令記憶部（２３）は、マイクロ命令を格納する。マイクロ命令制御記憶部（２２）は、マイクロ命令制御情報を命令コードに関連付けて格納する。マイクロ命令制御情報は、マイクロ命令の先頭アドレスと、命令の種類を示すＣＣ生成フラグとを含む。マイクロ命令の先頭アドレスとは、各命令に対応するマイクロ命令がマイクロ命令記憶部（２３）に格納されている領域の先頭アドレスであり、各命令に対応するマイクロ命令はこの先頭アドレスから実行される。コンディションコード生成部（１３）は、このＣＣ生成フラグに基づいて起動され、コンディションコードを生成する。
【００１４】
本発明の情報処理装置は、マイクロ命令制御記憶部（２２）から取り出したＣＣ生成フラグを保持するフラグ保持部をさらに備える。このフラグ保持部に保持される過去に実行された命令のＣＣ生成フラグと、マイクロ命令制御記憶部（２２）から取り出す未実行の命令のＣＣ生成フラグとに基づいて、コンディションコード生成部（１３）は起動される。
【００１５】
本発明において、実行される命令は、第１種類の命令と、第２種類の命令とを備える。第１種類の命令は、コンディションコードを生成するタイプの命令である。第２種類の命令は、コンディションコードを生成しないタイプの命令である。命令実行制御部（１１）は、第１種類の命令の後に第２種類の命令をメモリ（２１）から取り出したとき、コンディションコード生成部（１３）を起動する。コンディションコード生成部（１３）は、第１種類の命令の実行結果の状態を示すコンディションコードを生成する。
【００１６】
また、本発明において、実行される第２種類の命令は、第３種類の命令と、第４種類の命令とにさらに分類されてもよい。第３種類の命令は、コンディションコードを参照するタイプの命令である。第４種類の命令は、コンディションコードを参照しないタイプの命令である。その場合、命令実行制御部（１１）は、第１種類の命令に続いて第３種類の命令を取り出したとき、または、第１種類の命令、第４種類の命令に続いて第３種類の命令を取り出したとき、コンディションコード生成（１３）を起動する。コンディションコード生成部（１３）は、第１種類の命令の実行結果の状態を示すコンディションコードを生成する。
【００１７】
本発明の他の観点では、情報処理装置の高速化方法は、フェッチステップ（ステップＳ２１）と、実行ステップ（ステップＳ２６）と、ＣＣ生成ステップ（ステップＳ２４）とを具備する。この情報処理装置において、命令は複数の種類に分類される。フェッチステップ（ステップＳ２１）は、プログラムを格納するメモリ（２１）をアクセスして命令を取り出す。実行ステップ（ステップＳ２６）は、取り出した命令をマイクロ命令により実行する。ＣＣ生成ステップ（ステップＳ２４）は、命令が実行される順番に対応して定まる命令の種類の前後関係が所定の条件を満たすとき、命令を実行した結果の状態を示すコンディションコードを生成する。
【００１８】
本発明の情報処理装置の高速化方法では、情報処理装置は、マイクロ命令記憶部（２３）と、マイクロ命令制御テーブルとをさらに具備する。マイクロ命令記憶部（２３）は、マイクロ命令を格納する。マイクロ命令制御テーブルは、マイクロ命令制御情報を命令の命令コードに関連付けて格納する。マイクロ命令制御情報は、命令に対応するマイクロ命令が格納されるマイクロ命令記憶部（２３）の先頭アドレスと、命令の種類を示すＣＣ生成フラグとを含む。フェッチステップは、命令コードに基づいてＣＣ生成フラグを取り出し、所定の条件を満たすか否かを判定する判定ステップを備える。
【００１９】
本発明の情報処理装置の高速化方法では、判定ステップおよびＣＣ生成ステップは、次の命令がフェッチステップにより取り出された後に実行される。すなわち、フェッチステップ、判定ステップ、（条件に合致した場合は）前の命令の実行に対するＣＣ生成ステップ、実行ステップの順に各ステップが実行される。
【００２０】
本発明において、命令は、コンディションコードを生成する第１種類の命令と、コンディションコードを生成しない第２種類の命令とを備える。フェッチステップによって、第１種類の命令、第２種類の命令の順に取り出されたとき、ＣＣ生成ステップは、第１種類の命令の実行結果の状態を示すコンディションコードを生成するステップを含む。
【００２１】
また、本発明において、第２種類の命令は、第３種類の命令と、第４種類の命令とを備えてもよい。第３種類の命令は、コンディションコードを参照するタイプの命令である。第４種類の命令は、コンディションコードを参照しないタイプの命令である。その場合、フェッチステップによって、第１種類の命令に続いて第３種類の命令が取り出されたとき、または、第１種類の命令、第４種類の命令に続いて第３種類の命令を取り出したとき、ＣＣ生成ステップは、第１種類の命令の実行結果の状態を示すコンディションコードを生成するステップを含む。
【００２２】
また、本発明の他の観点では、プログラムは、フェッチ処理（ステップＳ２１）と、実行処理（ステップＳ２６）と、ＣＣ生成処理（ステップＳ２４）とを情報処理装置に実行させるためのプログラムである。情報処理装置により実行される命令は、複数の種類に分類され、マイクロ命令により実行される。フェッチ処理（ステップＳ２１）は、メモリをアクセスして命令を取り出す処理である。実行処理（ステップＳ２６）は、取り出した命令をマイクロ命令により実行する。ＣＣ生成処理（ステップＳ２４）は、フェッチ処理により取り出した命令が実行される順番に対応して定まる命令の種類の前後関係が所定の条件を満たすとき、命令を実行した結果の状態を示すコンディションコードを生成する。
【００２３】
本発明のプログラムにおいて、ＣＣ生成処理は、所定の条件を満たすとき、次の命令がフェッチ処理により取り出された後に実行される。すなわち、フェッチ処理、条件に合致したとき前命令の実行に対するＣＣ生成処理、実行処理の順にマイクロ命令が実行される。
【００２４】
本発明のプログラムにおいて、マイクロ命令記憶部と、マイクロ命令制御テーブルとをさらに具備し、フェッチ処理は、命令コードに基づいてＣＣ生成フラグを取り出して、所定の条件を満足するか否かを判定する判定処理を備える。マイクロ命令記憶部は、マイクロ命令を格納している。マイクロ命令制御テーブルは、マイクロ命令制御情報を命令の命令コードに関連付けて格納する。マイクロ命令制御情報は、命令に対応するマイクロ命令が格納されるマイクロ命令記憶部の先頭アドレスと、命令の種類を示すＣＣ生成フラグと含む。
【００２５】
本発明のプログラムにおいて、命令は、コンディションコードを生成する第１種類の命令と、コンディションコードを生成しない第２種類の命令とを備える。ＣＣ生成処理は、フェッチ処理により、第１種類の命令、第２種類の命令の順に命令が取り出されたとき、第１種類の命令の実行結果の状態を示すコンディションコードを生成する。
【００２６】
また、本発明のプログラムにおいて、第２種類の命令は、コンディションコードを参照する第３種類の命令と、コンディションコードを参照しない第４種類の命令とを備えてもよい。その場合、ＣＣ生成処理は、フェッチ処理により、第１種類の命令に続いて第３種類の命令が取り出されたとき、または、第１種類の命令、第４種類の命令に続いて第３種類の命令が取り出されたとき、第１種類の命令の実行結果の状態を示すコンディションコードを生成する処理を含む。
【００２７】
本発明の情報処理装置に実行させるためのプログラムは、情報処理装置により読み取り可能な記録媒体に記録される。
【発明の効果】
【００２８】
本発明によれば、処理効率が向上する情報処理装置および処理の高速化方法を提供することができる。
【００２９】
また、本発明によれば、プログラムのバイナリコードを変更せずに処理効率が向上する情報処理装置および処理の高速化方法を提供することができる。
【発明を実施するための最良の形態】
【００３０】
図面を参照して本発明の実施の形態を説明する。図１は、第１の実施の形態に係る情報処理装置の構成を示すブロック図である。情報処理装置は、処理マシン部１０と、データ部２０とを具備する。処理マシン部１０は、命令実行制御部１１と、演算実行部１２と、コンディションコード生成部１３とを備える。データ部２０は、プログラム記憶部２１と、マイクロ命令制御記憶部２２と、マイクロ命令記憶部２３とを備える。
【００３１】
プログラム記憶部２１は、ソフトウェア命令の列を格納する。マイクロ命令記憶部２３は、各ソフトウェア命令に対応して処理を実行するマイクロ命令の列を格納する。マイクロ命令制御記憶部２２は、各ソフトウェア命令と、マイクロ命令の列とを関連付けるマイクロ命令制御情報５０を格納する。
【００３２】
処理マシン部１０の命令実行制御部１１、演算実行部１２、コンディションコード生成部１３は、マイクロ命令記憶部２３に格納されるマイクロ命令を実行する。命令実行制御部１１は、内蔵する命令カウンタに保持されているアドレスに基づいて、プログラム記憶部２１に格納されているソフトウェア命令を読み出す。その後、命令実行制御部１１は、マイクロ命令制御記憶部２２を参照し、そのソフトウェア命令を処理する演算実行部１２を起動する。演算実行部１２は、ソフトウェア命令に指示される演算を実行する。コンディションコード生成部１３は、必要に応じて起動され、演算実行部１２の処理結果に基づいてコンディションコードを生成する。
【００３３】
マイクロ命令制御記憶部２２に格納されるマイクロ命令制御情報５０は、図３に示されるように、ソフトウェア命令の命令コードに対応付けてマイクロ命令エントリアドレス５１とＣＣ生成情報５２とを格納する。ここでは、命令コードを８ビットとすると、マイクロ命令制御情報５０は２５６ワードの情報を保持する。マイクロ命令制御情報５０の各ワードは、３２ビットで構成され、上位２８ビットがマイクロ命令のエントリアドレス５１を示し、下位４ビットがＣＣ生成情報５２を示す。マイクロ命令エントリアドレス５１は、その命令コードにより実行されるべき処理動作を行うマイクロ命令の先頭アドレスを示す。
【００３４】
ＣＣ生成情報５２は、図４（ａ）に示されるように、１ビットのＣＣ生成フラグ５５と３ビットのＣＣ生成タイプ５６とを備える。ＣＣ生成フラグ５５は、図４（ｂ）に示されるように、その命令コードを有するソフトウェア命令がコンディションコードを生成する種類の命令であるか否かを示す。すなわち、ＣＣ生成フラグ５５は、“０”のときコンディションコードを生成しない種類のソフトウェア命令であることを示し、“１”のときコンディションコードを生成する種類の命令であることを示す。また、ＣＣ生成タイプ５６は、図４（ｃ）に示されるように、その命令コードを有するソフトウェア命令が生成するコンディションコードの種類を示す。例えば、生成タイプ５６が“００１”のとき、コンディションコードは、演算結果が“０”であれば“０”、演算結果が負であれば“１”、演算結果が正であれば“２”、演算結果がオーバフローであれば“３”に設定される。
【００３５】
次に、上記の情報処理装置の動作が説明される。
図５から図７にソフトウェア命令を実行する処理手順が示される。ソフトウェア命令の１語は、図５に示される手順で実行される。まず、命令実行制御部１１は、ソフトウェア命令の命令語をプログラム記憶部２１から取り出す（ステップＳ１１）。演算実行部１２は、取り出したソフトウェア命令により指示される演算を実行する（ステップＳ１６）。コンディションコード生成部１３は、演算結果に基づいてコンディションコードを生成する（ステップＳ１８）。この手順を繰り返してソフトウェア命令が順次実行される。
【００３６】
単にこのループを繰り返すと、コンディションコードは演算命令ごとに毎回生成されることになる。例えば、加算結果がある値であるかを判定するプログラムは、加算する命令語と、その結果からある値を減算する命令語と、減算結果が０であるか判定して分岐する命令語の列になる。コンディションコードは加算、減算の演算する命令語を実行すると生成される。コンディションコードが使われるのは判定して分岐する命令語が実行されるときだけである。すなわち、減算の結果を反映するコンディションコードが生成されていればよく、加算する命令語によってコンディションコードが生成されなくても実行結果に影響はない。
【００３７】
したがって、本発明では、このコンディションコードの生成は、図６に示されるように、次の命令語の取り出しの後に行われる。すなわち、図５に示されるステップＳ１８のコンディションコードの生成が次の命令語の取り出し（ステップＳ１１）の後まで延期されて実行される。さらに、コンディションコード生成の必要性があるか否かを判定し、必要なときだけコンディションコードを生成する。
【００３８】
すなわち、ソフトウェア命令の１語は、以下の手順で実行される。まず、命令実行制御部１１は、内蔵する命令カウンタによって指示されるソフトウェア命令の１語をプログラム記憶部２１から取り出す（ステップＳ２１）。
【００３９】
命令実行制御部１１は、取り出したソフトウェア命令の命令コードを抽出し、これをインデックスとしてマイクロ命令制御記憶部２２に格納されるマイクロ命令制御情報５０を参照する。マイクロ命令制御情報５０のうち、ＣＣ生成フラグ５５が“０”すなわちコンディションコードを生成しないソフトウェア命令である場合、前に実行されたソフトウェア命令がコンディションコードを生成するソフトウェア命令すなわちＣＣ生成フラグ５５が“１”であるか否か判定する（ステップＳ２３）。
【００４０】
前の命令のＣＣ生成フラグ５５が“１”のとき（ステップＳ２３：１→０）、コンディションコード生成部１３が起動される。コンディションコード生成部１３は、すでに演算処理が終了しているソフトウェア命令のＣＣ生成タイプ５６に指定されるコンディションコードを生成する（ステップＳ２４）。前の命令のＣＣ生成フラグ５５が“０”の場合、および、取り出したソフトウェア命令のＣＣ生成フラグが“１”の場合（ステップＳ２３：ＮＯ）、前のソフトウェア命令のコンディションコードは生成されない。すなわち、前のソフトウェア命令がコンディションコードを生成する種類の命令であり、取り出したソフトウェア命令がコンディションコードを生成しない種類の命令であるときのみコンディションコードが生成される。
【００４１】
次のソフトウェア命令のＣＣ生成フラグ５５の判定のために、取り出したマイクロ命令制御情報５０のＣＣ生成情報５２が保持されるとともに、マイクロ命令制御情報５０のマイクロ命令エントリアドレス５１を参照してその命令語が実行される（ステップＳ２６）。
【００４２】
演算実行部１２は、図７に示されるように、命令語を実行する。まず、命令語に基づいてオペランドアドレスの計算が行われる。オペランドデータが演算レジスタに格納されている場合には演算レジスタ番号が計算され、オペランドデータが主メモリに格納されている場合には主メモリのアドレスが計算される（ステップＳ６１）。
【００４３】
オペランドアドレスに基づいてオペランドデータが取り出され（ステップＳ６２）、所定の演算が行われる（ステップＳ６３）。演算が終了すると、演算結果は指定された場所に格納される（ステップＳ６４）。この命令語の実行は、図５に示されるステップＳ１６においても同じである。
【００４４】
この演算が終了した後、命令実行制御部１１に内蔵される命令カウンタは、そのとき実行中のソフトウェア命令の命令語長だけ加算される。命令カウンタの値の更新は、ソフトウェア命令を取り出した後に行われてもよい。なお、ソフトウェア命令が分岐命令の場合には、演算結果の格納先は命令カウンタであり、命令カウンタは、分岐先を示す値に更新される。
【００４５】
このように、ＣＣ生成フラグ５５を参照してコンディションコード生成処理が必要なときのみ実行される。コンディションコード生成が不要の場合に処理が省略されるため、処理効率が向上する。
【００４６】
次にソフトウェア命令の動作について説明する。メモリに格納されているデータを加算し、加算結果が“０”であったら分岐するプログラムを例とする。演算命令Ａおよび演算命令Ｂは、メモリに格納されているデータを、そのアドレスを指定してレジスタに取り込むソフトウェア命令である。演算命令Ａおよび演算命令Ｂの命令コードは同じであり、そのオペランドは異なる。これらは、コンディションコードを生成する種類の命令であるため、ＣＣ生成フラグ５５に“１”、ＣＣ生成タイプ５６に“０”が設定されている。ＣＣ生成情報５２は、マイクロ命令制御情報５０の所定の位置に設定されている。演算命令Ｃは、レジスタ間の加算を指示する命令であり、３つのレジスタをオペランドに指定する。演算命令Ｃは、加算結果に基づいてコンディションコードを生成する種類の命令であり、マイクロ命令制御情報５０としてＣＣ生成フラグ５５に“１”、ＣＣ生成タイプ５６に“１”が設定されている。分岐命令は、コンディションコードに“０”が設定されているとき、すなわち“演算結果が０である”ことを示すとき、分岐アドレスを命令カウンタに設定して分岐する。この分岐命令は、コンディションコードを生成しない。
【００４７】
ソフトウェア命令は、図８に示されるように、演算命令Ａ、演算命令Ｂ、演算命令Ｃ、分岐命令の順に実行される。従来のように、コンディションコードの生成がそのソフトウェア命令のシーケンスの中で行われると、演算命令Ａ／Ｂ／Ｃの各命令でコンディションコードが生成される。
【００４８】
すなわち、演算命令Ａは、アドレスＭＭａで示されるメモリからメモリデータａをレジスタＲｅｇＡに取り込む。レジスタＲｅｇＡに“０”が格納される場合、コンディションコードは“０”が設定され、“０”以外のデータが格納されると、コンディションコードは“１”が設定される（ステップＳ７１）。同じように、演算命令Ｂは、アドレスＭＭｂで示されるメモリからメモリデータｂをレジスタＲｅｇＢに取り込む。レジスタＲｅｇＢに“０”が格納されると、コンディションコードは“１”に、“０”以外のときは“１”が設定される（ステップＳ７２）。演算命令Ｃは、レジスタＲｅｇＡに格納されるデータとレジスタＲｅｇＢに格納されるデータとを加算し、加算結果をレジスタＲｅｇＣに格納する。演算命令ＣのＣＣ生成タイプ５６は“１”である。したがって、ここで生成されるコンディションコードは、図４（ｃ）に示されるように、加算結果が０ならば“０”、負ならば“１”、正ならば“２”、オーバフローならば“３”となる（ステップＳ７３）。分岐命令は、この演算命令Ｃにより設定されたコンディションコードが“０”を示すとき、分岐するように動作する（ステップＳ７４）。したがって、演算命令Ａおよび演算命令Ｂで生成されたコンディションコードは、使用されず、無駄に生成されたことになる。
【００４９】
図６に示されるように、コンディションコードの生成を次の命令の命令語を取り出した後まで遅延すると、図９に示されるように、コンディションコードの生成を省略することができる。以下にその手順が示される。
【００５０】
命令実行制御部１１は、演算命令Ａをフェッチする。プログラム記憶部２１から取り出された演算命令Ａの命令コードに基づいて、命令実行制御部１１は、マイクロ命令制御記憶部２２に格納されるマイクロ命令制御情報５０を取り出す。演算命令Ａは、ＣＣ生成フラグ５５が“１”であるから、その前に実行された命令に影響されることなく、コンディションコード生成部１３は起動されない。命令実行制御部１１は、マイクロ命令制御情報５０に設定されている演算命令Ａのマイクロ命令エントリアドレス５１に基づいて、演算実行部１２を起動する。演算実行部１２は、オペランドアドレスを算出し、アドレスＭＭａで示されるメモリからメモリデータａをレジスタＲｅｇＡに取り込む（ステップＳ８１）。
【００５１】
命令実行制御部１１は、演算命令Ｂをフェッチする。演算命令Ｂの命令コードは、演算命令Ａの命令コードと同一であるため、マイクロ命令制御情報５０は同じである。演算命令ＢもＣＣ生成フラグ５５が“１”であるから、コンディションコード生成部１３は起動されない。したがって、演算命令Ａによるコンディションコードは生成されない。命令実行制御部１１は、演算命令Ｂのマイクロ命令の先頭アドレスに基づいて、演算実行部１２を起動する。演算命令Ａおよび演算命令Ｂは同じマイクロ命令の先頭アドレスであり、同じ動作をする。演算実行部１２は、オペランドアドレスを算出し、アドレスＭＭｂで示されるメモリからメモリデータｂをレジスタＲｅｇＢに取り込む（ステップＳ８２）。
【００５２】
命令実行制御部１１は、演算命令Ｃをフェッチする。プログラム記憶部２１から取り出された演算命令Ｃの命令コードに基づいて、命令実行制御部１１は、マイクロ命令制御記憶部２２に格納されるマイクロ命令制御情報５０を取り出す。演算命令ＣもＣＣ生成フラグ５５が“１”であるから、コンディションコード生成部１３は起動されない。したがって、演算命令Ｂによるコンディションコードは生成されない。命令実行制御部１１は、マイクロ命令制御情報５０に設定されている演算命令Ｃのマイクロ命令エントリアドレス５１に基づいて、演算実行部１２を起動する。演算実行部１２は、レジスタＲｅｇＡに格納されるデータａと、レジスタＲｅｇＢに格納されるデータｂとを加算する。加算した結果は、レジスタＲｅｇＣに格納される（ステップＳ８３）。
【００５３】
命令実行制御部１１は、分岐命令をフェッチする。プログラム記憶部２１から取り出された分岐命令の命令コードに基づいて、命令実行制御部１１は、マイクロ命令制御記憶部２２に格納されるマイクロ命令制御情報５０を取り出す。分岐命令は、ＣＣ生成フラグ５５が“０”であるから、命令実行制御部１１は、保持している前の命令のＣＣ生成フラグ５５を確認する。前の命令は演算命令Ｃであり、ＣＣ生成フラグ５５は“１”であるから、コンディションコード生成部１３が起動される。コンディションコード生成部１３は、保持されている演算命令ＣのＣＣ生成タイプ５６に基づいて、コンディションコードを生成する。演算命令ＣのＣＣ生成タイプ５６は“１”であるから、コンディションコード生成部１３は、加算結果が０ならば“０”、負ならば“１”、正ならば“２”、オーバフローならば“３”を設定する。その後、命令実行制御部１１は、マイクロ命令制御情報５０に設定されている分岐命令のマイクロ命令エントリアドレス５１に基づいて、演算実行部１２を起動する。演算実行部１２は、マイクロ命令を実行し、このコンディションコードに基づいて分岐するか否か判定する。条件を満たさない場合は、分岐命令の実行処理は終了し、分岐する場合は分岐アドレスを算出して命令カウンタに設定する。これによって、分岐が行われる（ステップＳ８４）。
【００５４】
この後、さらに分岐命令が続く場合、ステップＳ８４において実行される分岐命令のＣＣ生成フラグ５５が“０”であるから、コンディションコード生成部１３は起動されない。コンディションコードは変化しないため、演算命令Ｃにより生成される可能性のあるコンディションコードそれぞれに対応する分岐命令を並べることにより、それぞれの条件における処理が可能になる。
【００５５】
上述のように、分岐命令の直前の演算命令Ｃによるコンディションコードだけが生成され、演算命令Ａおよび演算命令Ｂによるコンディションコードの生成は省略される。ソフトウェア命令の実行時にその実行順により生成が行われるか、省略されるかが決定される。そのため、次の命令により上書きされるような無駄なコンディションコードは生成されず、情報処理装置の処理効率が向上する。また、ソフトウェア命令の互換性は完全に維持される。
【００５６】
図２に第２の実施の形態に係る情報処理装置の構成が示される。ここでは、情報処理装置のＣＰＵ（中央演算処理ユニット）部分が詳細に説明される。主メモリは、図示されていないが、バス３０を介して接続される。ＣＰＵは、命令レジスタ３１、マイクロ命令制御記憶部３２、アドレス決定部３３、マイクロ命令メモリ３４、マイクロ命令レジスタ３５、実行ユニット３６、コンディションコードレジスタ（ＣＣ）３７、ＣＣ生成フラグレジスタ（ＣＦ）４０、プログラムカウンタ（ＰＣ）４２、アドレスレジスタ（ＡＲ）４４、データレジスタ（ＤＲ）４５を具備する。
【００５７】
命令レジスタ３１は、バス３０を介して主メモリからプログラムカウンタ４２により指定されるアドレスに格納されるソフトウェア命令を取り出し、保持する。マイクロ命令制御記憶部３２は、マイクロ命令制御情報５０を格納する。すなわち、図３に示されるように、マイクロ命令制御記憶部３２は、ソフトウェア命令の命令コードに関連付けて、マイクロ命令のエントリアドレス５１とＣＣ生成情報５２とを格納している。ＣＣ生成情報５２は、図４（ａ）に示されるように、ＣＣ生成フラグ５５と、ＣＣ生成タイプ５６とを含む。ＣＣ生成フラグ５５は、図４（ｂ）に示されるように、コンディションコードを生成する（種類の）ソフトウェア命令であるか否かを示す。ＣＣ生成タイプ５６は、図４（ｃ）に示されるように、生成されるコンディションコードの種類が示される。マイクロ命令制御記憶部３２は、命令レジスタ３１に保持されるソフトウェア命令の命令コードに対応付けられているエントリアドレス５１をアドレス決定部３３に、ＣＣ生成情報５２をアドレス決定部３３とＣＣ生成フラグレジスタ４０とに出力する。
【００５８】
アドレス決定部３３は、実行するマイクロ命令のアドレスを決定する。アドレス決定部３３は、通常、実行アドレスを１ステップずつ歩進する。分岐するとき、アドレス決定部３３は、ＣＣ生成フラグレジスタ４０、マイクロ命令レジスタ３５、マイクロ命令制御記憶部３２、実行ユニット３６から入力される分岐条件に基づいて、マイクロ命令制御記憶部３２から出力されるエントリアドレス５１、マイクロ命令メモリ３４から出力される分岐先アドレスを取り込み、実行アドレスに設定する。
【００５９】
アドレス決定部３３から出力される実行アドレスに基づいて、マイクロ命令メモリ３４がアクセスされる。マイクロ命令メモリ３４から読み出されたマイクロ命令は、マイクロ命令レジスタ３５に設定される。マイクロ命令レジスタ３５に設定されたマイクロ命令はデコードされ、制御信号が実行ユニット３６や各レジスタに供給される。
【００６０】
実行ユニット３６は、演算器および演算レジスタを備える。実行ユニット３６は、バス３０から取り込んだデータ、内蔵する演算レジスタに保持するデータ等に基づいて算術演算、論理演算を行い、内蔵する演算レジスタ、プログラムカウンタ４２、アドレスレジスタ４４、データレジスタ４５に演算結果を格納する。また、演算時の状態をアドレス決定部３３に出力する。
【００６１】
プログラムカウンタ４２は、ソフトウェア命令の実行アドレスを示し、通常実行毎に歩進する。プログラムカウンタ４２は、分岐命令等が実行されるとき、実行ユニット３６の出力を設定する。アドレスレジスタは、主メモリに格納されるデータのアドレスを格納する。主メモリアクセスのときに、アドレスレジスタは、バス３０に主メモリのアドレスを供給する。データレジスタ４５は、主メモリに格納すべきデータを保持する。通常、データレジスタ４５に格納されるデータは、アドレスレジスタ４４により指定されるアドレスにバス３０を介して書き込まれる。
【００６２】
図６を参照して、このＣＰＵの動作が説明される。
プログラムカウンタ４２に格納されている実行アドレスがバス３０に供給され、ソフトウェア命令のフェッチが開始される。主メモリから読み出されたソフトウェア命令は、バス３０を介して命令レジスタ３１に格納される（ステップＳ２１）。
【００６３】
命令レジスタ３１に格納されるソフトウェア命令の命令コードに基づいて、マイクロ命令制御記憶部３２から命令コードに対応付けられたエントリアドレス５１と、ＣＣ生成情報５２とが出力される。アドレス決定部３３は、フェッチしたソフトウェア命令のマイクロ命令制御記憶部３２から出力されているＣＣ生成フラグ５５と、ＣＣ生成フラグレジスタ４０から出力されている演算実行されたソフトウェア命令のＣＣ生成フラグ５５とに基づいて、コンディションコードを生成するか否か判定し、次に実行するアドレスを決定する（ステップＳ２３）。
【００６４】
ＣＣ生成フラグレジスタ４０に格納されるフラグが“１”（コンディションコードを生成する種類の命令）であって、マイクロ命令制御記憶部３２から出力されているフラグが“０”（コンディションコードを生成しない種類の命令）であるとき（ステップＳ２３：１→０）、演算が終了しているソフトウェア命令のコンディションコードを生成するルーチンが開始される。すなわち、実行ユニット３６から出力される演算状態が、ＣＣ生成フラグレジスタ４０に格納されるＣＣ生成タイプのどの種類のコンディションコードに合致するかマイクロ命令により判定される。その後、マイクロ命令によって、合致したコンディションコードがコンディションコードレジスタ３７に設定される（ステップＳ２４）。
【００６５】
コンディションコードを生成しない場合（ステップＳ２３：ＮＯ）、アドレス決定部３３は、次のステップＳ２６に相当するアドレスをマイクロ命令メモリに与え、コンディションコード生成のルーチンは実行されない。ここで、実行する命令語は、命令レジスタ３１に格納されているため、プログラムカウンタ４２の更新は、どのタイミングで行われてもよいが、実行ユニット３６の状態を保持する観点から、このステップＳ２６ステップＳ２６の実行に先立ち更新されることが好ましい。
【００６６】
次に、命令語の実行が行われる（ステップＳ２６）。命令語の実行は、図７に示されるように、まず、オペランドアドレスの計算が行われる。オペランドデータが演算レジスタに格納されている場合は、実行ユニット３６内の演算レジスタの番号が計算される。オペランドデータが主メモリに格納されている場合、実行ユニット３６によりオペランドアドレスが計算されて、アドレスレジスタ４４にオペランドアドレスが設定される（ステップＳ６１）。アドレスレジスタ４４によって指定されたオペランドデータは、バス３０を介して実行ユニット３６に供給される（ステップＳ６２）。オペランドデータが揃うと、実行ユニット３６は、指定される演算を実行する（ステップＳ６３）。演算結果は、指定されるレジスタに格納される（ステップＳ６４）。例えば、演算結果は、次の演算に備えて実行ユニット３６内の演算レジスタに格納される。また、プログラムカウンタ４２に格納される場合、その値は分岐命令の分岐先アドレスを示す。主メモリに演算結果を格納するとき、演算結果は、データレジスタに格納される。
【００６７】
演算が終了すると、次のソフトウェア命令を取り出し（ステップＳ１１）、ＣＣ生成フラグ５５の状態に基づいて終了した演算のコンディションコードが生成されるか否か判定される（ステップＳ２３）。このように、ソフトウェア命令の取り出しの後に、前に実行したソフトウェア命令のコンディションコードが必要に応じて生成される。このように、ソフトウェア命令が、マイクロ命令の制御により実行される。なお、ソフトウェア命令の実行動作は、第１の実施の形態と同じであるため、説明は省略される。
【００６８】
このように、実行時のソフトウェア命令の並びに応じて、ＣＣ生成フラグ５５の並びが決まり、必要に応じてコンディションコード生成のマイクロ命令が実行される。コンディションコードを生成しても使用されることがない場合は、コンディションコード生成が省略され、処理時間を短縮することができる。すなわち、ＣＰＵの処理効率を向上することが可能になる。また、コンディションコードの生成は、マイクロ命令制御記憶部３２に格納されるＣＣ生成フラグ５５に基づいて行われるため、ソフトウェア命令やマイクロ命令の互換性を維持しつつ情報処理装置の処理効率を向上させることが可能となる。
【００６９】
ここでは、ＣＣ生成フラグは、コンディションコードを生成する種類の命令か否かを１ビットで示した。命令の種類として、コンディションコードを生成する種類の命令、コンディションコードを使用する種類の命令、コンディションコードを維持する（無関係な）種類の命令などのように分類し、２ビット以上で示すことにより、さらにコンディションコードの生成処理を削減することが可能になる。例えば、演算命令（コンディションコードを生成する種類の命令）に後続する無条件分岐命令（コンディションコードを維持する種類の命令）の分岐先が演算命令（コンディションコードを生成する種類の命令）であるときに、先の演算命令のコンディションコード生成処理を省略することができる。このとき、分岐命令が、無条件分岐命令（コンディションコードを維持する種類の命令）ではなく、条件分岐命令（コンディションコードを使用する種類の命令）である場合には、先の演算命令のコンディションコード生成処理は実行される。このように、連続する複数のソフトウェア命令において、コンディションコードの必要性を判断することにより、さらにコンディションコード生成処理を削減することが可能となる。また、複数の命令を同時に実行する情報処理装置においても、コンディションコードの生成を削減することが可能となる。
【００７０】
また、コンディションコードと同じように、他の情報に関しても関連する複数の命令の依存関係を分析し、マイクロ命令制御情報に追加して制御することにより命令セットの仕様通りに動作しなくても実質的な動作として問題にならない一部の処理を削減することも可能となる。
【００７１】
ＣＣ生成フラグを設けることにより、プログラムの流れのなかでコンディションコードを生成する必要があるか否かを判定することができるようになり、不要の場合には、コンディションコード生成の処理を抑止することが可能になる。また、ＣＣ生成フラグは、ソフトウェア命令に対応するマイクロ命令を実行するときのパラメータとしてＣＣ生成情報に設定されるため、ソフトウェア命令およびマイクロ命令を変更する必要がない。
【図面の簡単な説明】
【００７２】
【図１】本発明の第１の実施の形態に係る情報処理装置の構成を示すブロック図である。
【図２】本発明の第２の実施の形態に係る情報処理装置の構成を示すブロック図である。
【図３】本発明の実施の形態に係るマイクロ命令制御情報を説明する図である。
【図４】同ＣＣ生成情報を説明する図である。
【図５】同ソフトウェア命令の実行の流れを説明する図である。
【図６】同ソフトウェア命令を実行するマイクロ命令の流れを示すフローチャートである。
【図７】同命令語の実行の流れを示すフローチャートである。
【図８】同ソフトウェア命令の実行シーケンスを説明する図である。
【図９】同コンディションコード生成処理が省略されることを説明する図である。
【符号の説明】
【００７３】
１０  処理マシン部
１１  命令実行制御部
１２  演算実行部
１３  コンディションコード生成部
２０  データ部
２１  プログラム記憶部
２２  マイクロ命令制御記憶部
２３  マイクロ命令記憶部
３０  バス
３１  命令レジスタ
３２  マイクロ命令制御記憶部
３３  アドレス決定部
３４  マイクロ命令メモリ
３５  マイクロ命令レジスタ
３６  実行ユニット
３７  コンディションコードレジスタ
４０  ＣＣ生成フラグレジスタ
４２  プログラムカウンタ
４４  アドレスレジスタ
４５  データレジスタ
５０  マイクロ命令制御情報
５１  エントリアドレス部
５２  ＣＣ生成情報部
５５  ＣＣ生成フラグ
５６  ＣＣ生成タイプ
【図１】
2008040658.tif 000003
【図２】
2008040658.tif 000004
【図３】
2008040658.tif 000005
【図４】
2008040658.tif 000006
【図５】
2008040658.tif 000007
【図６】
2008040658.tif 000008
【図７】
2008040658.tif 000009
【図８】
2008040658.tif 000010
【図９】
2008040658.tif 000011