説明

情報処理装置および情報処理の高速化方法

【課題】処理効率が向上する情報処理装置および処理の高速化方法を提供することにある。
【解決手段】情報処理装置は、命令実行制御部(11)と、演算実行部(12)と、コンディションコード生成部(13)とを具備する。情報処理装置が実行する命令は、複数の種類に分類される。命令実行制御部(11)は、プログラムを格納するメモリ(21)をアクセスして命令を取り出す。演算実行部(12)は、取り出した命令をマイクロ命令により実行する。コンディションコード生成部(13)は、命令が実行される順番に対応して定まる命令の種類の前後関係が所定の条件を満たすとき、命令の実行結果の状態を示すコンディションコードを生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置および、その情報処理の高速化方法に関する。
【背景技術】
【0002】
情報処理装置において、演算結果の状態を示すコンディションコードは、演算命令が実行されるたびに生成される。生成されたコンディションコードは、条件分岐命令や条件付き演算命令にて判定するために用いられている。従来のコンディションコードの制御方法に関する一例が、特開平8−305563号公報に記載されている。
【0003】
この公報に記載されたコンディションコード制御では、コンディションコードは演算命令が実行されるたびに生成される。指定の条件を満たすときに演算が実行される条件付き演算命令は、その指定する条件を示す条件指定フィールドを備える。この条件指定フィールドに指定された条件にコンディションコードが合致するか否か判定され、合致したときのみ条件付演算命令は実行される。
【0004】
このように、従来の方法では、コンディションコードは各演算命令の実行時に常に生成されることが多い。しかし、コンディションコードは、常時使用されるわけではなく、上述の条件付き演算命令や条件分岐命令など使用される範囲は限定される。プロセッサの実装方式やエミュレーション方式によっては、コンディションコードの判定よりもコンディションコードの生成処理に時間を要することもある。その場合、不要なコンディションコードを生成するために時間を費やすことになる。また、上記の条件付き演算命令は、その処理装置専用の命令であるため、他のソフトウェアやマイクロ命令との互換性を維持することは困難である。
【0005】
また、特開平10−69384号公報および特開平11−327901号公報には、遅延分岐方式のプロセッサにおける遅延分岐命令の分岐動作を制御する遅延分岐制御方法に関連して、条件フラグの書き換えを制御する条件フラグ書き換え制御方法が開示されている。この条件フラグ書き換え制御方法では、プログラムにおける命令の前後関係に基づいて、条件フラグの書き換えを許可するか禁止するかが制御される。
【0006】
特開昭57−5152号公報には、制御記憶装置の読出し制御方式に関する技術が開示されている。この方法は、制御記憶装置と、計数機能付きアドレスレジスタと、次番地アドレスを作成する手段と、分岐アドレスを格納する手段とを具備する。制御記憶装置は、マイクロプログラムを格納している。計数機能付きアドレスレジスタは、制御記憶装置に直接接続している。次番地アドレスを作成する手段は、マイクロ命令語を逐次読出すときに計数機能付きアドレスレジスタがその格納内容を計数して次番地アドレスを作成する。分岐アドレスを格納する手段は、分岐するときに制御記憶装置から読出されたマイクロ命令語に含まれた分岐アドレスを計数機能付きアドレスレジスタへ格納する。
【0007】
特開2003−99248号公報には、命令供給手段と、解読手段と、命令発行制御手段と、実行手段とを備えるプロセッサの制御機能に関する技術が開示されている。命令供給手段は、複数の命令を供給し、解読手段は、複数の命令を各々解読する。命令発行制御手段は、複数の命令中に各命令を実行するか否かを示す条件を指定する実行条件情報が指定され、実行条件情報で指定された条件を参照して、有効なオペレーションを実行する命令又は命令の集合を決定する。実行手段は、複数の命令中に各命令の動作が指定され、指定に基づいて1つ又は複数のオペレーションを実行する。このうち、命令発行制御手段は、次の機能をさらに有する。まず、命令発行制御手段は、実行条件情報で指定された条件を参照することにより、実行する必要のある有効な命令であるか、実行する必要のない無効な命令であるかを判断する。無効な命令であると判断した命令に関しては、命令発行制御手段は、その命令を実行手段へ発行する前に命令自体を削除するように制御する。そして、命令発行制御手段は、その命令に代えて後続する有効な命令を実行手段に発行するように制御する。
【0008】
【特許文献1】特開平8−305563号公報
【特許文献2】特開平10−69384号公報
【特許文献3】特開平11−327901号公報
【特許文献4】特開昭57−5152号公報
【特許文献5】特開2003−99248号公報
【発明の開示】
【発明が解決しようとする課題】
【0009】
本発明の目的は、処理効率が向上する情報処理装置および処理の高速化方法を提供することにある。
【0010】
本発明の他の目的は、プログラムのバイナリコードを変更せずに処理効率が向上する情報処理装置および処理の高速化方法を提供することにある。
【課題を解決するための手段】
【0011】
以下に、[発明を実施するための最良の形態]で使用される番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、[特許請求の範囲]の記載と[発明を実施するための最良の形態]との対応関係を明らかにするために付加されたものである。ただし、それらの番号・符号を、[特許請求の範囲]に記載されている発明の技術的範囲の解釈に用いてはならない。
【0012】
本発明の観点では、情報処理装置は、命令実行制御部(11)と、演算実行部(12)と、コンディションコード生成部(13)とを具備する。情報処理装置が実行する命令は、複数の種類に分類される。命令実行制御部(11)は、プログラムを格納するメモリ(21)をアクセスして命令を取り出す。演算実行部(12)は、取り出した命令をマイクロ命令により実行する。コンディションコード生成部(13)は、命令が実行される順番に対応して定まる命令の種類の前後関係が所定の条件を満たすとき、命令の実行結果の状態を示すコンディションコードを生成する。
【0013】
本発明の情報処理装置は、マイクロ命令記憶部(23)と、マイクロ命令制御記憶部(22)とをさらに具備する。マイクロ命令記憶部(23)は、マイクロ命令を格納する。マイクロ命令制御記憶部(22)は、マイクロ命令制御情報を命令コードに関連付けて格納する。マイクロ命令制御情報は、マイクロ命令の先頭アドレスと、命令の種類を示すCC生成フラグとを含む。マイクロ命令の先頭アドレスとは、各命令に対応するマイクロ命令がマイクロ命令記憶部(23)に格納されている領域の先頭アドレスであり、各命令に対応するマイクロ命令はこの先頭アドレスから実行される。コンディションコード生成部(13)は、このCC生成フラグに基づいて起動され、コンディションコードを生成する。
【0014】
本発明の情報処理装置は、マイクロ命令制御記憶部(22)から取り出したCC生成フラグを保持するフラグ保持部をさらに備える。このフラグ保持部に保持される過去に実行された命令のCC生成フラグと、マイクロ命令制御記憶部(22)から取り出す未実行の命令のCC生成フラグとに基づいて、コンディションコード生成部(13)は起動される。
【0015】
本発明において、実行される命令は、第1種類の命令と、第2種類の命令とを備える。第1種類の命令は、コンディションコードを生成するタイプの命令である。第2種類の命令は、コンディションコードを生成しないタイプの命令である。命令実行制御部(11)は、第1種類の命令の後に第2種類の命令をメモリ(21)から取り出したとき、コンディションコード生成部(13)を起動する。コンディションコード生成部(13)は、第1種類の命令の実行結果の状態を示すコンディションコードを生成する。
【0016】
また、本発明において、実行される第2種類の命令は、第3種類の命令と、第4種類の命令とにさらに分類されてもよい。第3種類の命令は、コンディションコードを参照するタイプの命令である。第4種類の命令は、コンディションコードを参照しないタイプの命令である。その場合、命令実行制御部(11)は、第1種類の命令に続いて第3種類の命令を取り出したとき、または、第1種類の命令、第4種類の命令に続いて第3種類の命令を取り出したとき、コンディションコード生成(13)を起動する。コンディションコード生成部(13)は、第1種類の命令の実行結果の状態を示すコンディションコードを生成する。
【0017】
本発明の他の観点では、情報処理装置の高速化方法は、フェッチステップ(ステップS21)と、実行ステップ(ステップS26)と、CC生成ステップ(ステップS24)とを具備する。この情報処理装置において、命令は複数の種類に分類される。フェッチステップ(ステップS21)は、プログラムを格納するメモリ(21)をアクセスして命令を取り出す。実行ステップ(ステップS26)は、取り出した命令をマイクロ命令により実行する。CC生成ステップ(ステップS24)は、命令が実行される順番に対応して定まる命令の種類の前後関係が所定の条件を満たすとき、命令を実行した結果の状態を示すコンディションコードを生成する。
【0018】
本発明の情報処理装置の高速化方法では、情報処理装置は、マイクロ命令記憶部(23)と、マイクロ命令制御テーブルとをさらに具備する。マイクロ命令記憶部(23)は、マイクロ命令を格納する。マイクロ命令制御テーブルは、マイクロ命令制御情報を命令の命令コードに関連付けて格納する。マイクロ命令制御情報は、命令に対応するマイクロ命令が格納されるマイクロ命令記憶部(23)の先頭アドレスと、命令の種類を示すCC生成フラグとを含む。フェッチステップは、命令コードに基づいてCC生成フラグを取り出し、所定の条件を満たすか否かを判定する判定ステップを備える。
【0019】
本発明の情報処理装置の高速化方法では、判定ステップおよびCC生成ステップは、次の命令がフェッチステップにより取り出された後に実行される。すなわち、フェッチステップ、判定ステップ、(条件に合致した場合は)前の命令の実行に対するCC生成ステップ、実行ステップの順に各ステップが実行される。
【0020】
本発明において、命令は、コンディションコードを生成する第1種類の命令と、コンディションコードを生成しない第2種類の命令とを備える。フェッチステップによって、第1種類の命令、第2種類の命令の順に取り出されたとき、CC生成ステップは、第1種類の命令の実行結果の状態を示すコンディションコードを生成するステップを含む。
【0021】
また、本発明において、第2種類の命令は、第3種類の命令と、第4種類の命令とを備えてもよい。第3種類の命令は、コンディションコードを参照するタイプの命令である。第4種類の命令は、コンディションコードを参照しないタイプの命令である。その場合、フェッチステップによって、第1種類の命令に続いて第3種類の命令が取り出されたとき、または、第1種類の命令、第4種類の命令に続いて第3種類の命令を取り出したとき、CC生成ステップは、第1種類の命令の実行結果の状態を示すコンディションコードを生成するステップを含む。
【0022】
また、本発明の他の観点では、プログラムは、フェッチ処理(ステップS21)と、実行処理(ステップS26)と、CC生成処理(ステップS24)とを情報処理装置に実行させるためのプログラムである。情報処理装置により実行される命令は、複数の種類に分類され、マイクロ命令により実行される。フェッチ処理(ステップS21)は、メモリをアクセスして命令を取り出す処理である。実行処理(ステップS26)は、取り出した命令をマイクロ命令により実行する。CC生成処理(ステップS24)は、フェッチ処理により取り出した命令が実行される順番に対応して定まる命令の種類の前後関係が所定の条件を満たすとき、命令を実行した結果の状態を示すコンディションコードを生成する。
【0023】
本発明のプログラムにおいて、CC生成処理は、所定の条件を満たすとき、次の命令がフェッチ処理により取り出された後に実行される。すなわち、フェッチ処理、条件に合致したとき前命令の実行に対するCC生成処理、実行処理の順にマイクロ命令が実行される。
【0024】
本発明のプログラムにおいて、マイクロ命令記憶部と、マイクロ命令制御テーブルとをさらに具備し、フェッチ処理は、命令コードに基づいてCC生成フラグを取り出して、所定の条件を満足するか否かを判定する判定処理を備える。マイクロ命令記憶部は、マイクロ命令を格納している。マイクロ命令制御テーブルは、マイクロ命令制御情報を命令の命令コードに関連付けて格納する。マイクロ命令制御情報は、命令に対応するマイクロ命令が格納されるマイクロ命令記憶部の先頭アドレスと、命令の種類を示すCC生成フラグと含む。
【0025】
本発明のプログラムにおいて、命令は、コンディションコードを生成する第1種類の命令と、コンディションコードを生成しない第2種類の命令とを備える。CC生成処理は、フェッチ処理により、第1種類の命令、第2種類の命令の順に命令が取り出されたとき、第1種類の命令の実行結果の状態を示すコンディションコードを生成する。
【0026】
また、本発明のプログラムにおいて、第2種類の命令は、コンディションコードを参照する第3種類の命令と、コンディションコードを参照しない第4種類の命令とを備えてもよい。その場合、CC生成処理は、フェッチ処理により、第1種類の命令に続いて第3種類の命令が取り出されたとき、または、第1種類の命令、第4種類の命令に続いて第3種類の命令が取り出されたとき、第1種類の命令の実行結果の状態を示すコンディションコードを生成する処理を含む。
【0027】
本発明の情報処理装置に実行させるためのプログラムは、情報処理装置により読み取り可能な記録媒体に記録される。
【発明の効果】
【0028】
本発明によれば、処理効率が向上する情報処理装置および処理の高速化方法を提供することができる。
【0029】
また、本発明によれば、プログラムのバイナリコードを変更せずに処理効率が向上する情報処理装置および処理の高速化方法を提供することができる。
【発明を実施するための最良の形態】
【0030】
図面を参照して本発明の実施の形態を説明する。図1は、第1の実施の形態に係る情報処理装置の構成を示すブロック図である。情報処理装置は、処理マシン部10と、データ部20とを具備する。処理マシン部10は、命令実行制御部11と、演算実行部12と、コンディションコード生成部13とを備える。データ部20は、プログラム記憶部21と、マイクロ命令制御記憶部22と、マイクロ命令記憶部23とを備える。
【0031】
プログラム記憶部21は、ソフトウェア命令の列を格納する。マイクロ命令記憶部23は、各ソフトウェア命令に対応して処理を実行するマイクロ命令の列を格納する。マイクロ命令制御記憶部22は、各ソフトウェア命令と、マイクロ命令の列とを関連付けるマイクロ命令制御情報50を格納する。
【0032】
処理マシン部10の命令実行制御部11、演算実行部12、コンディションコード生成部13は、マイクロ命令記憶部23に格納されるマイクロ命令を実行する。命令実行制御部11は、内蔵する命令カウンタに保持されているアドレスに基づいて、プログラム記憶部21に格納されているソフトウェア命令を読み出す。その後、命令実行制御部11は、マイクロ命令制御記憶部22を参照し、そのソフトウェア命令を処理する演算実行部12を起動する。演算実行部12は、ソフトウェア命令に指示される演算を実行する。コンディションコード生成部13は、必要に応じて起動され、演算実行部12の処理結果に基づいてコンディションコードを生成する。
【0033】
マイクロ命令制御記憶部22に格納されるマイクロ命令制御情報50は、図3に示されるように、ソフトウェア命令の命令コードに対応付けてマイクロ命令エントリアドレス51とCC生成情報52とを格納する。ここでは、命令コードを8ビットとすると、マイクロ命令制御情報50は256ワードの情報を保持する。マイクロ命令制御情報50の各ワードは、32ビットで構成され、上位28ビットがマイクロ命令のエントリアドレス51を示し、下位4ビットがCC生成情報52を示す。マイクロ命令エントリアドレス51は、その命令コードにより実行されるべき処理動作を行うマイクロ命令の先頭アドレスを示す。
【0034】
CC生成情報52は、図4(a)に示されるように、1ビットのCC生成フラグ55と3ビットのCC生成タイプ56とを備える。CC生成フラグ55は、図4(b)に示されるように、その命令コードを有するソフトウェア命令がコンディションコードを生成する種類の命令であるか否かを示す。すなわち、CC生成フラグ55は、“0”のときコンディションコードを生成しない種類のソフトウェア命令であることを示し、“1”のときコンディションコードを生成する種類の命令であることを示す。また、CC生成タイプ56は、図4(c)に示されるように、その命令コードを有するソフトウェア命令が生成するコンディションコードの種類を示す。例えば、生成タイプ56が“001”のとき、コンディションコードは、演算結果が“0”であれば“0”、演算結果が負であれば“1”、演算結果が正であれば“2”、演算結果がオーバフローであれば“3”に設定される。
【0035】
次に、上記の情報処理装置の動作が説明される。
図5から図7にソフトウェア命令を実行する処理手順が示される。ソフトウェア命令の1語は、図5に示される手順で実行される。まず、命令実行制御部11は、ソフトウェア命令の命令語をプログラム記憶部21から取り出す(ステップS11)。演算実行部12は、取り出したソフトウェア命令により指示される演算を実行する(ステップS16)。コンディションコード生成部13は、演算結果に基づいてコンディションコードを生成する(ステップS18)。この手順を繰り返してソフトウェア命令が順次実行される。
【0036】
単にこのループを繰り返すと、コンディションコードは演算命令ごとに毎回生成されることになる。例えば、加算結果がある値であるかを判定するプログラムは、加算する命令語と、その結果からある値を減算する命令語と、減算結果が0であるか判定して分岐する命令語の列になる。コンディションコードは加算、減算の演算する命令語を実行すると生成される。コンディションコードが使われるのは判定して分岐する命令語が実行されるときだけである。すなわち、減算の結果を反映するコンディションコードが生成されていればよく、加算する命令語によってコンディションコードが生成されなくても実行結果に影響はない。
【0037】
したがって、本発明では、このコンディションコードの生成は、図6に示されるように、次の命令語の取り出しの後に行われる。すなわち、図5に示されるステップS18のコンディションコードの生成が次の命令語の取り出し(ステップS11)の後まで延期されて実行される。さらに、コンディションコード生成の必要性があるか否かを判定し、必要なときだけコンディションコードを生成する。
【0038】
すなわち、ソフトウェア命令の1語は、以下の手順で実行される。まず、命令実行制御部11は、内蔵する命令カウンタによって指示されるソフトウェア命令の1語をプログラム記憶部21から取り出す(ステップS21)。
【0039】
命令実行制御部11は、取り出したソフトウェア命令の命令コードを抽出し、これをインデックスとしてマイクロ命令制御記憶部22に格納されるマイクロ命令制御情報50を参照する。マイクロ命令制御情報50のうち、CC生成フラグ55が“0”すなわちコンディションコードを生成しないソフトウェア命令である場合、前に実行されたソフトウェア命令がコンディションコードを生成するソフトウェア命令すなわちCC生成フラグ55が“1”であるか否か判定する(ステップS23)。
【0040】
前の命令のCC生成フラグ55が“1”のとき(ステップS23:1→0)、コンディションコード生成部13が起動される。コンディションコード生成部13は、すでに演算処理が終了しているソフトウェア命令のCC生成タイプ56に指定されるコンディションコードを生成する(ステップS24)。前の命令のCC生成フラグ55が“0”の場合、および、取り出したソフトウェア命令のCC生成フラグが“1”の場合(ステップS23:NO)、前のソフトウェア命令のコンディションコードは生成されない。すなわち、前のソフトウェア命令がコンディションコードを生成する種類の命令であり、取り出したソフトウェア命令がコンディションコードを生成しない種類の命令であるときのみコンディションコードが生成される。
【0041】
次のソフトウェア命令のCC生成フラグ55の判定のために、取り出したマイクロ命令制御情報50のCC生成情報52が保持されるとともに、マイクロ命令制御情報50のマイクロ命令エントリアドレス51を参照してその命令語が実行される(ステップS26)。
【0042】
演算実行部12は、図7に示されるように、命令語を実行する。まず、命令語に基づいてオペランドアドレスの計算が行われる。オペランドデータが演算レジスタに格納されている場合には演算レジスタ番号が計算され、オペランドデータが主メモリに格納されている場合には主メモリのアドレスが計算される(ステップS61)。
【0043】
オペランドアドレスに基づいてオペランドデータが取り出され(ステップS62)、所定の演算が行われる(ステップS63)。演算が終了すると、演算結果は指定された場所に格納される(ステップS64)。この命令語の実行は、図5に示されるステップS16においても同じである。
【0044】
この演算が終了した後、命令実行制御部11に内蔵される命令カウンタは、そのとき実行中のソフトウェア命令の命令語長だけ加算される。命令カウンタの値の更新は、ソフトウェア命令を取り出した後に行われてもよい。なお、ソフトウェア命令が分岐命令の場合には、演算結果の格納先は命令カウンタであり、命令カウンタは、分岐先を示す値に更新される。
【0045】
このように、CC生成フラグ55を参照してコンディションコード生成処理が必要なときのみ実行される。コンディションコード生成が不要の場合に処理が省略されるため、処理効率が向上する。
【0046】
次にソフトウェア命令の動作について説明する。メモリに格納されているデータを加算し、加算結果が“0”であったら分岐するプログラムを例とする。演算命令Aおよび演算命令Bは、メモリに格納されているデータを、そのアドレスを指定してレジスタに取り込むソフトウェア命令である。演算命令Aおよび演算命令Bの命令コードは同じであり、そのオペランドは異なる。これらは、コンディションコードを生成する種類の命令であるため、CC生成フラグ55に“1”、CC生成タイプ56に“0”が設定されている。CC生成情報52は、マイクロ命令制御情報50の所定の位置に設定されている。演算命令Cは、レジスタ間の加算を指示する命令であり、3つのレジスタをオペランドに指定する。演算命令Cは、加算結果に基づいてコンディションコードを生成する種類の命令であり、マイクロ命令制御情報50としてCC生成フラグ55に“1”、CC生成タイプ56に“1”が設定されている。分岐命令は、コンディションコードに“0”が設定されているとき、すなわち“演算結果が0である”ことを示すとき、分岐アドレスを命令カウンタに設定して分岐する。この分岐命令は、コンディションコードを生成しない。
【0047】
ソフトウェア命令は、図8に示されるように、演算命令A、演算命令B、演算命令C、分岐命令の順に実行される。従来のように、コンディションコードの生成がそのソフトウェア命令のシーケンスの中で行われると、演算命令A/B/Cの各命令でコンディションコードが生成される。
【0048】
すなわち、演算命令Aは、アドレスMMaで示されるメモリからメモリデータaをレジスタRegAに取り込む。レジスタRegAに“0”が格納される場合、コンディションコードは“0”が設定され、“0”以外のデータが格納されると、コンディションコードは“1”が設定される(ステップS71)。同じように、演算命令Bは、アドレスMMbで示されるメモリからメモリデータbをレジスタRegBに取り込む。レジスタRegBに“0”が格納されると、コンディションコードは“1”に、“0”以外のときは“1”が設定される(ステップS72)。演算命令Cは、レジスタRegAに格納されるデータとレジスタRegBに格納されるデータとを加算し、加算結果をレジスタRegCに格納する。演算命令CのCC生成タイプ56は“1”である。したがって、ここで生成されるコンディションコードは、図4(c)に示されるように、加算結果が0ならば“0”、負ならば“1”、正ならば“2”、オーバフローならば“3”となる(ステップS73)。分岐命令は、この演算命令Cにより設定されたコンディションコードが“0”を示すとき、分岐するように動作する(ステップS74)。したがって、演算命令Aおよび演算命令Bで生成されたコンディションコードは、使用されず、無駄に生成されたことになる。
【0049】
図6に示されるように、コンディションコードの生成を次の命令の命令語を取り出した後まで遅延すると、図9に示されるように、コンディションコードの生成を省略することができる。以下にその手順が示される。
【0050】
命令実行制御部11は、演算命令Aをフェッチする。プログラム記憶部21から取り出された演算命令Aの命令コードに基づいて、命令実行制御部11は、マイクロ命令制御記憶部22に格納されるマイクロ命令制御情報50を取り出す。演算命令Aは、CC生成フラグ55が“1”であるから、その前に実行された命令に影響されることなく、コンディションコード生成部13は起動されない。命令実行制御部11は、マイクロ命令制御情報50に設定されている演算命令Aのマイクロ命令エントリアドレス51に基づいて、演算実行部12を起動する。演算実行部12は、オペランドアドレスを算出し、アドレスMMaで示されるメモリからメモリデータaをレジスタRegAに取り込む(ステップS81)。
【0051】
命令実行制御部11は、演算命令Bをフェッチする。演算命令Bの命令コードは、演算命令Aの命令コードと同一であるため、マイクロ命令制御情報50は同じである。演算命令BもCC生成フラグ55が“1”であるから、コンディションコード生成部13は起動されない。したがって、演算命令Aによるコンディションコードは生成されない。命令実行制御部11は、演算命令Bのマイクロ命令の先頭アドレスに基づいて、演算実行部12を起動する。演算命令Aおよび演算命令Bは同じマイクロ命令の先頭アドレスであり、同じ動作をする。演算実行部12は、オペランドアドレスを算出し、アドレスMMbで示されるメモリからメモリデータbをレジスタRegBに取り込む(ステップS82)。
【0052】
命令実行制御部11は、演算命令Cをフェッチする。プログラム記憶部21から取り出された演算命令Cの命令コードに基づいて、命令実行制御部11は、マイクロ命令制御記憶部22に格納されるマイクロ命令制御情報50を取り出す。演算命令CもCC生成フラグ55が“1”であるから、コンディションコード生成部13は起動されない。したがって、演算命令Bによるコンディションコードは生成されない。命令実行制御部11は、マイクロ命令制御情報50に設定されている演算命令Cのマイクロ命令エントリアドレス51に基づいて、演算実行部12を起動する。演算実行部12は、レジスタRegAに格納されるデータaと、レジスタRegBに格納されるデータbとを加算する。加算した結果は、レジスタRegCに格納される(ステップS83)。
【0053】
命令実行制御部11は、分岐命令をフェッチする。プログラム記憶部21から取り出された分岐命令の命令コードに基づいて、命令実行制御部11は、マイクロ命令制御記憶部22に格納されるマイクロ命令制御情報50を取り出す。分岐命令は、CC生成フラグ55が“0”であるから、命令実行制御部11は、保持している前の命令のCC生成フラグ55を確認する。前の命令は演算命令Cであり、CC生成フラグ55は“1”であるから、コンディションコード生成部13が起動される。コンディションコード生成部13は、保持されている演算命令CのCC生成タイプ56に基づいて、コンディションコードを生成する。演算命令CのCC生成タイプ56は“1”であるから、コンディションコード生成部13は、加算結果が0ならば“0”、負ならば“1”、正ならば“2”、オーバフローならば“3”を設定する。その後、命令実行制御部11は、マイクロ命令制御情報50に設定されている分岐命令のマイクロ命令エントリアドレス51に基づいて、演算実行部12を起動する。演算実行部12は、マイクロ命令を実行し、このコンディションコードに基づいて分岐するか否か判定する。条件を満たさない場合は、分岐命令の実行処理は終了し、分岐する場合は分岐アドレスを算出して命令カウンタに設定する。これによって、分岐が行われる(ステップS84)。
【0054】
この後、さらに分岐命令が続く場合、ステップS84において実行される分岐命令のCC生成フラグ55が“0”であるから、コンディションコード生成部13は起動されない。コンディションコードは変化しないため、演算命令Cにより生成される可能性のあるコンディションコードそれぞれに対応する分岐命令を並べることにより、それぞれの条件における処理が可能になる。
【0055】
上述のように、分岐命令の直前の演算命令Cによるコンディションコードだけが生成され、演算命令Aおよび演算命令Bによるコンディションコードの生成は省略される。ソフトウェア命令の実行時にその実行順により生成が行われるか、省略されるかが決定される。そのため、次の命令により上書きされるような無駄なコンディションコードは生成されず、情報処理装置の処理効率が向上する。また、ソフトウェア命令の互換性は完全に維持される。
【0056】
図2に第2の実施の形態に係る情報処理装置の構成が示される。ここでは、情報処理装置のCPU(中央演算処理ユニット)部分が詳細に説明される。主メモリは、図示されていないが、バス30を介して接続される。CPUは、命令レジスタ31、マイクロ命令制御記憶部32、アドレス決定部33、マイクロ命令メモリ34、マイクロ命令レジスタ35、実行ユニット36、コンディションコードレジスタ(CC)37、CC生成フラグレジスタ(CF)40、プログラムカウンタ(PC)42、アドレスレジスタ(AR)44、データレジスタ(DR)45を具備する。
【0057】
命令レジスタ31は、バス30を介して主メモリからプログラムカウンタ42により指定されるアドレスに格納されるソフトウェア命令を取り出し、保持する。マイクロ命令制御記憶部32は、マイクロ命令制御情報50を格納する。すなわち、図3に示されるように、マイクロ命令制御記憶部32は、ソフトウェア命令の命令コードに関連付けて、マイクロ命令のエントリアドレス51とCC生成情報52とを格納している。CC生成情報52は、図4(a)に示されるように、CC生成フラグ55と、CC生成タイプ56とを含む。CC生成フラグ55は、図4(b)に示されるように、コンディションコードを生成する(種類の)ソフトウェア命令であるか否かを示す。CC生成タイプ56は、図4(c)に示されるように、生成されるコンディションコードの種類が示される。マイクロ命令制御記憶部32は、命令レジスタ31に保持されるソフトウェア命令の命令コードに対応付けられているエントリアドレス51をアドレス決定部33に、CC生成情報52をアドレス決定部33とCC生成フラグレジスタ40とに出力する。
【0058】
アドレス決定部33は、実行するマイクロ命令のアドレスを決定する。アドレス決定部33は、通常、実行アドレスを1ステップずつ歩進する。分岐するとき、アドレス決定部33は、CC生成フラグレジスタ40、マイクロ命令レジスタ35、マイクロ命令制御記憶部32、実行ユニット36から入力される分岐条件に基づいて、マイクロ命令制御記憶部32から出力されるエントリアドレス51、マイクロ命令メモリ34から出力される分岐先アドレスを取り込み、実行アドレスに設定する。
【0059】
アドレス決定部33から出力される実行アドレスに基づいて、マイクロ命令メモリ34がアクセスされる。マイクロ命令メモリ34から読み出されたマイクロ命令は、マイクロ命令レジスタ35に設定される。マイクロ命令レジスタ35に設定されたマイクロ命令はデコードされ、制御信号が実行ユニット36や各レジスタに供給される。
【0060】
実行ユニット36は、演算器および演算レジスタを備える。実行ユニット36は、バス30から取り込んだデータ、内蔵する演算レジスタに保持するデータ等に基づいて算術演算、論理演算を行い、内蔵する演算レジスタ、プログラムカウンタ42、アドレスレジスタ44、データレジスタ45に演算結果を格納する。また、演算時の状態をアドレス決定部33に出力する。
【0061】
プログラムカウンタ42は、ソフトウェア命令の実行アドレスを示し、通常実行毎に歩進する。プログラムカウンタ42は、分岐命令等が実行されるとき、実行ユニット36の出力を設定する。アドレスレジスタは、主メモリに格納されるデータのアドレスを格納する。主メモリアクセスのときに、アドレスレジスタは、バス30に主メモリのアドレスを供給する。データレジスタ45は、主メモリに格納すべきデータを保持する。通常、データレジスタ45に格納されるデータは、アドレスレジスタ44により指定されるアドレスにバス30を介して書き込まれる。
【0062】
図6を参照して、このCPUの動作が説明される。
プログラムカウンタ42に格納されている実行アドレスがバス30に供給され、ソフトウェア命令のフェッチが開始される。主メモリから読み出されたソフトウェア命令は、バス30を介して命令レジスタ31に格納される(ステップS21)。
【0063】
命令レジスタ31に格納されるソフトウェア命令の命令コードに基づいて、マイクロ命令制御記憶部32から命令コードに対応付けられたエントリアドレス51と、CC生成情報52とが出力される。アドレス決定部33は、フェッチしたソフトウェア命令のマイクロ命令制御記憶部32から出力されているCC生成フラグ55と、CC生成フラグレジスタ40から出力されている演算実行されたソフトウェア命令のCC生成フラグ55とに基づいて、コンディションコードを生成するか否か判定し、次に実行するアドレスを決定する(ステップS23)。
【0064】
CC生成フラグレジスタ40に格納されるフラグが“1”(コンディションコードを生成する種類の命令)であって、マイクロ命令制御記憶部32から出力されているフラグが“0”(コンディションコードを生成しない種類の命令)であるとき(ステップS23:1→0)、演算が終了しているソフトウェア命令のコンディションコードを生成するルーチンが開始される。すなわち、実行ユニット36から出力される演算状態が、CC生成フラグレジスタ40に格納されるCC生成タイプのどの種類のコンディションコードに合致するかマイクロ命令により判定される。その後、マイクロ命令によって、合致したコンディションコードがコンディションコードレジスタ37に設定される(ステップS24)。
【0065】
コンディションコードを生成しない場合(ステップS23:NO)、アドレス決定部33は、次のステップS26に相当するアドレスをマイクロ命令メモリに与え、コンディションコード生成のルーチンは実行されない。ここで、実行する命令語は、命令レジスタ31に格納されているため、プログラムカウンタ42の更新は、どのタイミングで行われてもよいが、実行ユニット36の状態を保持する観点から、このステップS26ステップS26の実行に先立ち更新されることが好ましい。
【0066】
次に、命令語の実行が行われる(ステップS26)。命令語の実行は、図7に示されるように、まず、オペランドアドレスの計算が行われる。オペランドデータが演算レジスタに格納されている場合は、実行ユニット36内の演算レジスタの番号が計算される。オペランドデータが主メモリに格納されている場合、実行ユニット36によりオペランドアドレスが計算されて、アドレスレジスタ44にオペランドアドレスが設定される(ステップS61)。アドレスレジスタ44によって指定されたオペランドデータは、バス30を介して実行ユニット36に供給される(ステップS62)。オペランドデータが揃うと、実行ユニット36は、指定される演算を実行する(ステップS63)。演算結果は、指定されるレジスタに格納される(ステップS64)。例えば、演算結果は、次の演算に備えて実行ユニット36内の演算レジスタに格納される。また、プログラムカウンタ42に格納される場合、その値は分岐命令の分岐先アドレスを示す。主メモリに演算結果を格納するとき、演算結果は、データレジスタに格納される。
【0067】
演算が終了すると、次のソフトウェア命令を取り出し(ステップS11)、CC生成フラグ55の状態に基づいて終了した演算のコンディションコードが生成されるか否か判定される(ステップS23)。このように、ソフトウェア命令の取り出しの後に、前に実行したソフトウェア命令のコンディションコードが必要に応じて生成される。このように、ソフトウェア命令が、マイクロ命令の制御により実行される。なお、ソフトウェア命令の実行動作は、第1の実施の形態と同じであるため、説明は省略される。
【0068】
このように、実行時のソフトウェア命令の並びに応じて、CC生成フラグ55の並びが決まり、必要に応じてコンディションコード生成のマイクロ命令が実行される。コンディションコードを生成しても使用されることがない場合は、コンディションコード生成が省略され、処理時間を短縮することができる。すなわち、CPUの処理効率を向上することが可能になる。また、コンディションコードの生成は、マイクロ命令制御記憶部32に格納されるCC生成フラグ55に基づいて行われるため、ソフトウェア命令やマイクロ命令の互換性を維持しつつ情報処理装置の処理効率を向上させることが可能となる。
【0069】
ここでは、CC生成フラグは、コンディションコードを生成する種類の命令か否かを1ビットで示した。命令の種類として、コンディションコードを生成する種類の命令、コンディションコードを使用する種類の命令、コンディションコードを維持する(無関係な)種類の命令などのように分類し、2ビット以上で示すことにより、さらにコンディションコードの生成処理を削減することが可能になる。例えば、演算命令(コンディションコードを生成する種類の命令)に後続する無条件分岐命令(コンディションコードを維持する種類の命令)の分岐先が演算命令(コンディションコードを生成する種類の命令)であるときに、先の演算命令のコンディションコード生成処理を省略することができる。このとき、分岐命令が、無条件分岐命令(コンディションコードを維持する種類の命令)ではなく、条件分岐命令(コンディションコードを使用する種類の命令)である場合には、先の演算命令のコンディションコード生成処理は実行される。このように、連続する複数のソフトウェア命令において、コンディションコードの必要性を判断することにより、さらにコンディションコード生成処理を削減することが可能となる。また、複数の命令を同時に実行する情報処理装置においても、コンディションコードの生成を削減することが可能となる。
【0070】
また、コンディションコードと同じように、他の情報に関しても関連する複数の命令の依存関係を分析し、マイクロ命令制御情報に追加して制御することにより命令セットの仕様通りに動作しなくても実質的な動作として問題にならない一部の処理を削減することも可能となる。
【0071】
CC生成フラグを設けることにより、プログラムの流れのなかでコンディションコードを生成する必要があるか否かを判定することができるようになり、不要の場合には、コンディションコード生成の処理を抑止することが可能になる。また、CC生成フラグは、ソフトウェア命令に対応するマイクロ命令を実行するときのパラメータとしてCC生成情報に設定されるため、ソフトウェア命令およびマイクロ命令を変更する必要がない。
【図面の簡単な説明】
【0072】
【図1】本発明の第1の実施の形態に係る情報処理装置の構成を示すブロック図である。
【図2】本発明の第2の実施の形態に係る情報処理装置の構成を示すブロック図である。
【図3】本発明の実施の形態に係るマイクロ命令制御情報を説明する図である。
【図4】同CC生成情報を説明する図である。
【図5】同ソフトウェア命令の実行の流れを説明する図である。
【図6】同ソフトウェア命令を実行するマイクロ命令の流れを示すフローチャートである。
【図7】同命令語の実行の流れを示すフローチャートである。
【図8】同ソフトウェア命令の実行シーケンスを説明する図である。
【図9】同コンディションコード生成処理が省略されることを説明する図である。
【符号の説明】
【0073】
10 処理マシン部
11 命令実行制御部
12 演算実行部
13 コンディションコード生成部
20 データ部
21 プログラム記憶部
22 マイクロ命令制御記憶部
23 マイクロ命令記憶部
30 バス
31 命令レジスタ
32 マイクロ命令制御記憶部
33 アドレス決定部
34 マイクロ命令メモリ
35 マイクロ命令レジスタ
36 実行ユニット
37 コンディションコードレジスタ
40 CC生成フラグレジスタ
42 プログラムカウンタ
44 アドレスレジスタ
45 データレジスタ
50 マイクロ命令制御情報
51 エントリアドレス部
52 CC生成情報部
55 CC生成フラグ
56 CC生成タイプ

【特許請求の範囲】
【請求項1】
プログラムを格納するメモリをアクセスして命令を取り出す命令実行制御部と、前記命令は、複数の種類に分類され、
取り出した前記命令をマイクロ命令により実行する演算実行部と、
前記命令が実行される順番に対応して定まる前記種類の前後関係が所定の条件を満たすとき、前記命令の実行結果の状態を示すコンディションコードを生成するコンディションコード生成部と
を具備する
情報処理装置。
【請求項2】
前記マイクロ命令を格納するマイクロ命令記憶部と、
前記命令に対応する前記マイクロ命令が格納される前記マイクロ命令記憶部の先頭アドレスと、前記種類を示すCC生成フラグとを含むマイクロ命令制御情報を前記命令の命令コードに関連付けて格納するマイクロ命令制御記憶部と
をさらに具備し、
前記CC生成フラグに基づいて前記コンディションコード生成部を起動して前記コンディションコードを生成する
請求項1に記載の情報処理装置。
【請求項3】
前記マイクロ命令制御記憶部から取り出した前記CC生成フラグを保持するフラグ保持部をさらに備え、
前記フラグ保持部に保持される実行済みの前記命令の前記CC生成フラグと、前記マイクロ命令制御記憶部から取り出す実行前の前記命令の前記CC生成フラグとに基づいて前記コンディションコード生成部を起動する
請求項2に記載の情報処理装置。
【請求項4】
前記命令は、
前記コンディションコードを生成する第1種類の命令と、
前記コンディションコードを生成しない第2種類の命令と
を備え、
前記命令実行制御部は、前記第1種類の命令の後に前記第2種類の命令を前記メモリから取り出したとき、前記コンディションコード生成部を起動し、
前記コンディションコード生成部は、前記第1種類の命令の実行結果の状態を示す前記コンディションコードを生成する
請求項1から請求項3のいずれかに記載の情報処理装置。
【請求項5】
前記第2種類の命令は、
前記コンディションコードを参照する第3種類の命令と、
前記コンディションコードを参照しない第4種類の命令と
を備え、
前記命令実行制御部は、前記第1種類の命令に続いて前記第3種類の命令を取り出したとき、または、前記第1種類の命令、前記第4種類の命令に続いて前記第3種類の命令を取り出したとき、前記コンディションコード生成を起動し、
前記コンディションコード生成部は、前記第1種類の命令の実行結果の状態を示す前記コンディションコードを生成する
請求項4に記載の情報処理装置。
【請求項6】
プログラムを格納するメモリをアクセスして命令を取り出すフェッチステップと、前記命令は、複数の種類に分類され、
取り出した前記命令をマイクロ命令により実行する実行ステップと、
前記命令が実行される順番に対応して定まる前記種類の前後関係が所定の条件を満たすとき、前記命令の実行結果の状態を示すコンディションコードを生成するCC生成ステップと
を具備する
情報処理装置の高速化方法。
【請求項7】
前記マイクロ命令を格納するマイクロ命令記憶部と、
前記命令に対応する前記マイクロ命令が格納される前記マイクロ命令記憶部の先頭アドレスと、前記種類を示すCC生成フラグとを含むマイクロ命令制御情報を前記命令の命令コードに関連付けて格納するマイクロ命令制御テーブルと
をさらに具備し、
前記フェッチステップは、前記命令コードに基づいて前記CC生成フラグを取り出し、前記所定の条件を満たすか否かを判定する判定ステップを備える
請求項6に記載の情報処理装置の高速化方法。
【請求項8】
前記判定ステップと前記CC生成ステップとは、次の命令を前記フェッチステップにより取り出した後に実行される
請求項7に記載の情報処理装置の高速化方法。
【請求項9】
前記命令は、
前記コンディションコードを生成する第1種類の命令と、
前記コンディションコードを生成しない第2種類の命令と
を備え、
前記フェッチステップにより、前記第1種類の命令、前記第2種類の命令の順に取り出したとき、前記CC生成ステップは、前記第1種類の命令の実行結果の状態を示す前記コンディションコードを生成するステップを含む
請求項6から請求項8のいずれかに記載の情報処理装置の高速化方法。
【請求項10】
前記第2種類の命令は、
前記コンディションコードを参照する第3種類の命令と、
前記コンディションコードを参照しない第4種類の命令と
を備え、
前記フェッチステップにより、前記第1種類の命令に続いて前記第3種類の命令を取り出したとき、または、前記第1種類の命令、前記第4種類の命令に続いて前記第3種類の命令を取り出したとき、前記CC生成ステップは、前記第1種類の命令の実行結果の状態を示す前記コンディションコードを生成するステップを含む
請求項9に記載の情報処理装置の高速化方法。
【請求項11】
メモリをアクセスして命令を取り出すフェッチ処理と、前記命令は、複数の種類に分類され、
取り出した前記命令をマイクロ命令により実行する実行処理と、
前記命令が実行される順番に対応して定まる前記種類の前後関係が所定の条件を満たすとき、前記命令を実行した結果の状態を示すコンディションコードを生成するCC生成処理と
を情報処理装置に実行させるためのプログラム。
【請求項12】
前記CC生成処理は、前記所定の条件を満たすとき、次の命令が前記フェッチ処理により取り出された後に実行される
請求項11に記載の情報処理装置に実行させるためのプログラム。
【請求項13】
前記マイクロ命令を格納するマイクロ命令記憶部と、
前記命令に対応する前記マイクロ命令が格納される前記マイクロ命令記憶部の先頭アドレスと、前記種類を示すCC生成フラグと含むマイクロ命令制御情報を前記命令の命令コードに関連付けて格納するマイクロ命令制御テーブルと
をさらに具備し、
前記フェッチ処理は、前記命令コードに基づいて前記CC生成フラグを取り出して前記所定の条件を満たすか否かを判定する判定処理を備える
請求項11または請求項12に記載の情報処理装置に実行させるプログラム。
【請求項14】
前記命令は、
前記コンディションコードを生成する第1種類の命令と、
前記コンディションコードを生成しない第2種類の命令と
を備え、
前記フェッチ処理により、前記第1種類の命令、前記第2種類の命令の順に命令が取り出されたとき、前記CC生成処理は、前記第1種類の命令の実行結果の状態を示す前記コンディションコードを生成する
請求項11から請求項13のいずれかに記載の情報処理装置に実行させるためのプログラム。
【請求項15】
前記第2種類の命令は、
前記コンディションコードを参照する第3種類の命令と、
前記コンディションコードを参照しない第4種類の命令と
を備え、
前記フェッチ処理により、前記第1種類の命令に続いて前記第3種類の命令が取り出されたとき、または、前記第1種類の命令、前記第4種類の命令に続いて前記第3種類の命令が取り出されたとき、前記CC生成処理は、前記第1種類の命令の実行結果の状態を示す前記コンディションコードを生成する処理を含む
請求項14に記載の情報処理装置に実行させるためのプログラム。
【請求項16】
請求項11から請求項15のいずれかに記載の情報処理装置に実行させるためのプログラムを記録した情報処理装置読み取り可能な記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2008−40658(P2008−40658A)
【公開日】平成20年2月21日(2008.2.21)
【国際特許分類】
【出願番号】特願2006−212038(P2006−212038)
【出願日】平成18年8月3日(2006.8.3)
【出願人】(000168285)エヌイーシーコンピュータテクノ株式会社 (572)
【Fターム(参考)】