(57)【要約】【課題】回路規模が小さく、履歴情報を基に条件分岐命令の分岐予測を行うことができる情報処理装置を提供することを課題とする。【解決手段】入力された命令内のオペコードをデコードし、前記入力された命令が条件分岐命令であるときには、前記入力された命令が条件分岐命令であることを示す条件分岐命令情報及びその条件分岐命令の種類を示す命令種類情報を生成し、前記入力された命令内のオペコードを削除した命令、前記条件分岐命令情報及び前記命令種類情報を命令キャッシュメモリに書き込むプリデコーダ（３０１）と、前記命令キャッシュメモリ内の条件分岐命令を読み出して実行した結果、その条件分岐命令が分岐したか否かを示す履歴情報を前記命令キャッシュメモリ内の条件分岐命令の前記オペコードが削除された場所に書き込む履歴情報書き込み部（４０５）とを有することを特徴とする情報処理装置が提供される。【選択図】図４
2008204357.tif 000002
【特許請求の範囲】
【請求項１】
命令を記憶するための命令キャッシュメモリと、
入力された命令内のオペコードをデコードし、前記入力された命令が条件分岐命令であるときには、前記入力された命令が条件分岐命令であることを示す条件分岐命令情報及びその条件分岐命令の種類を示す命令種類情報を生成し、前記入力された命令内のオペコードを削除した命令、前記条件分岐命令情報及び前記命令種類情報を前記命令キャッシュメモリに書き込むプリデコーダと、
前記命令キャッシュメモリ内の条件分岐命令を読み出して実行した結果、その条件分岐命令が分岐したか否かを示す履歴情報を前記命令キャッシュメモリ内の条件分岐命令の前記オペコードが削除された場所に書き込む履歴情報書き込み部と
を有することを特徴とする情報処理装置。
【請求項２】
前記プリデコーダは、前記命令種類情報を前記命令キャッシュメモリ内の条件分岐命令の前記オペコードが削除された場所に書き込むことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記履歴情報書き込み部は、前記命令キャッシュメモリに書き込まれている過去の履歴情報に今回の履歴情報を追加するように書き込むことを特徴とする請求項１記載の情報処理装置。
【請求項４】
さらに、前記命令キャッシュメモリ内の条件分岐命令が読み出されると、その条件分岐命令の履歴情報を基にその条件分岐命令が分岐するか否かを予測し、その予測した次の読み出しアドレスの生成を指示する分岐予測部を有することを特徴とする請求項１記載の情報処理装置。
【請求項５】
前記履歴情報書き込み部は、前記履歴情報を基に、前記履歴情報に対応する条件分岐命令が次に読み出されたときにその条件分岐命令が分岐するか否かを予測し、その予測情報を前記履歴情報と共に前記命令キャッシュメモリに書き込むことを特徴とする請求項１記載の情報処理装置。
【請求項６】
さらに、前記命令キャッシュメモリ内の条件分岐命令が読み出されると、その条件分岐命令の予測情報が示す次の読み出しアドレスを生成するアドレス生成部を有することを特徴とする請求項５記載の情報処理装置。
【請求項７】
前記命令キャッシュメモリは、前記入力された命令を分散して書き込むための複数の命令キャッシュメモリに分割されていることを特徴とする請求項１記載の情報処理装置。
【請求項８】
前記命令キャッシュメモリは、前記入力された命令内のオペコードを削除した命令、前記条件分岐命令情報及び前記命令種類情報を記憶するためのシングルポートメモリ及び前記履歴情報を記憶するためのデュアルポートメモリを有することを特徴とする請求項１記載の情報処理装置。
【請求項９】
前記プリデコーダは、入力された命令内のオペコードをデコードし、前記入力された命令が条件分岐命令でないときには、前記入力された命令が条件分岐命令でないことを示す条件分岐命令情報及び前記入力された命令を前記命令キャッシュメモリに書き込むことを特徴とする請求項１記載の情報処理装置。
【請求項１０】
さらに、前記命令キャッシュメモリ内の命令を読み出してデコード及び実行を行う命令実行部を有し、
前記履歴情報書き込み部は、前記命令実行部による条件分岐命令の実行の結果に応じて前記履歴情報を書き込むことを特徴とする請求項１記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関し、特に条件分岐命令を処理する情報処理装置に関する。
【背景技術】
【０００２】
図１０は、条件分岐命令を含む命令群１１０１の例を示す図である。第１行のＡｄｄ命令（加算命令）は、ＧＲ３＝ＧＲ１＋ＧＲ２を意味する。すなわち、このＡｄｄ命令は、レジスタＧＲ１及びＧＲ２の値を加算し、レジスタＧＲ３に格納する命令である。
【０００３】
第２行のＳｕｂｃｃ命令（減算命令）は、ＧＲ４＝ＧＲ３−０ｘ８（１６進数）を意味する。すなわち、このＳｕｂｃｃ命令は、レジスタＧＲ３の値から０ｘ８（１６進数）を減算し、レジスタＧＲ４に格納する命令である。その際、ゼロフラグは、演算結果が０であれば１になり、それ以外であれば０になる。
【０００４】
第３行のＢＥＱ命令（条件分岐命令）は、ゼロフラグが１であればラベル名Ｔａｒｇｅｔ０のアドレスへ分岐し、０であれば分岐せずに次のアドレスに進む命令である。すなわち、ゼロフラグが１であれば第６行のＡｎｄ命令に分岐し、ゼロフラグが１であれば第４行のＡｎｄ命令に進む。
【０００５】
第４行のＡｎｄ命令（論理積命令）は、ＧＲ１０＝ＧＲ８  ＆  ＧＲ４を意味する。すなわち、このＡｎｄ命令は、レジスタＧＲ８及びＧＲ４の値の論理積を演算し、レジスタＧＲ１０に格納する命令である。
【０００６】
第５行のＳｔ命令（ストア命令）は、ｍｅｍｏｒｙ（ＧＲ６＋ＧＲ７）＝ＧＲ１０を意味する。すなわち、このＳｔ命令は、レジスタＧＲ１０の値を、レジスタＧＲ６及びＧＲ７を加算した値のアドレスのメモリにストア（格納）する命令である。
【０００７】
ラベル名Ｔａｒｇｅｔ０のアドレスには、第６行のＡｎｄ命令が記憶されている。第６行のＡｎｄ命令は、ＧＲ１１＝ＧＲ４  ＆  ＧＲ９を意味する。すなわち、このＡｎｄ命令は、レジスタＧＲ４及びＧＲ９の値の論理積を演算し、レジスタＧＲ１１に格納する命令である。
【０００８】
第７行のＬｄ命令（ロード命令）は、ＧＲ１０＝ｍｅｍｏｒｙ（ＧＲ６＋ＧＲ７）を意味する。すなわち、このＬｄ命令は、レジスタＧＲ６及びＧＲ７を加算した値のアドレスのメモリから値をロード（読み出）し、レジスタＧＲ１０に格納する命令である。
【０００９】
ここで、第３行のＢＥＱ命令（条件分岐命令）は、ゼロフラグの値に応じて、分岐するか否かが決まる。したがって、ＢＥＱ命令（条件分岐命令）の実行後に命令実行されない時間（分岐ペナルティ）が生じる。通常、分岐ペナルティは、３〜５クロックサイクルであり、１０クロックサイクル以上のものもある。分岐ペナルティは、命令群１１０１の実行速度低下の原因になる。
【００１０】
図１１は、命令のパイプライン処理を示す図である。以下、分岐ペナルティが発生する理由を説明する。ステージ１３０〜１３４は、それぞれパイプラインステージを示す。まず、第１のステージ１３０では、命令読み出しのためのアドレスを計算する。次に、第２のステージ１３１では、命令キャッシュメモリから命令を読み出す。次に、第３のステージ１３２では、レジスタから値を読み出すと共に、命令の解釈（デコード）を行う。次に、第４のステージ１３３では、演算器により命令の演算実行を行う。次に、第５のステージ１３４では、演算結果をレジスタに書き込む。
【００１１】
図１０の命令群１１０１の場合、ＢＥＱ命令（条件分岐命令）の演算実行ステージ１３３の結果、分岐するか否かが決定する。分岐する場合には、ステップＳ１２０１により、第１のステージ１３０に戻り、分岐先のラベル名Ｔａｒｇｅｔ０のアドレスを計算する。その後、ステージ１３１〜１３３を行う。このため、ＢＥＱ命令（条件分岐命令）の演算実行ステージ１３３の後、次の分岐先のＡｎｄ命令の演算実行ステージ１３３を行うまでの間に分岐ペナルティが発生する。
【００１２】
以上のように、近年のマイクロプロセッサは、パイプライン化されている。パイプライン化は各ステージ１３０〜１３４が独立していることを前提に命令を並列処理する方式である。しかし、条件分岐命令についてはステージ間に依存があり、演算実行ステージ１３３と命令読み出しアドレスの計算ステージ１３０が関係しているため、演算実行ステージ１３３後に命令実行されない時間が生じる。これが分岐ペナルティの発生原因である。
【００１３】
パイプライン構造を採るマイクロプロセッサ等の情報処理装置において、条件分岐命令の実行によって制御の流れが分岐した場合に生じるパイプラインの乱れを抑える手法の一つに分岐予測がある。高い的中率の分岐予測を行うには、条件分岐命令毎に分岐の成否を予測する必要がある。そのための方法として、プログラム中の各条件分岐命令に対応する分岐予測情報を集めた分岐予測テーブルを設けることが考えられる。ところが、情報処理装置の内部に分岐予測テーブルを持たせたのではハードウェアの増大を招く。
【００１４】
下記の特許文献１には、分岐予測情報及び分岐履歴情報を分岐命令自体に備えるという方法が提案されている。しかし、この方法は、分岐先のアドレスを決定するオフセットアドレスに使用可能なビット数を減少させてしまうという問題がある。
【００１５】
また、下記の特許文献２には、分岐方向を指定する分岐予測情報を含む複数の分岐命令を格納する記憶手段と、前記分岐予測情報に応じて前記記憶手段から次に実行すべき命令を先取りする先取り手段と、前記分岐命令の実行結果に応じて該分岐命令の分岐予測情報を更新する更新手段とを含むことを特徴とする情報処理装置が記載されている。
【００１６】
【特許文献１】特開平１０−２２８３７７号公報
【特許文献２】特開昭６３−７５９３４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１７】
プログラム中の各条件分岐命令に対応する分岐予測情報を集めた分岐予測テーブルを情報処理装置の内部に設けると、その分岐予測テーブル専用のＲＡＭが必要になり、半導体チップの面積が増大する。また、分岐命令自体に分岐予測情報を格納させると、分岐命令内の分岐先アドレスに使用可能なビット数が減少してしまう。
【００１８】
本発明の目的は、回路規模が小さく、履歴情報を基に条件分岐命令の分岐予測を行うことができる情報処理装置を提供することである。
【課題を解決するための手段】
【００１９】
本発明の一観点によれば、命令を記憶するための命令キャッシュメモリと、入力された命令内のオペコードをデコードし、前記入力された命令が条件分岐命令であるときには、前記入力された命令が条件分岐命令であることを示す条件分岐命令情報及びその条件分岐命令の種類を示す命令種類情報を生成し、前記入力された命令内のオペコードを削除した命令、前記条件分岐命令情報及び前記命令種類情報を前記命令キャッシュメモリに書き込むプリデコーダと、前記命令キャッシュメモリ内の条件分岐命令を読み出して実行した結果、その条件分岐命令が分岐したか否かを示す履歴情報を前記命令キャッシュメモリ内の条件分岐命令の前記オペコードが削除された場所に書き込む履歴情報書き込み部とを有することを特徴とする情報処理装置が提供される。
【発明の効果】
【００２０】
条件分岐命令のオペコードが削除された場所に履歴情報を書き込むので、専用の履歴情報テーブルが必要なくなり、回路規模を小さくすることができる。また、条件分岐命令内の分岐先アドレスに使用可能なビット数を減らす必要がない。
【発明を実施するための最良の形態】
【００２１】
（第１の実施形態）
図１は、本発明の第１の実施形態による情報処理装置の構成例を示す図である。この情報処理装置は、第１のステージ１３０、第２のステージ１３１、第３のステージ１３２、第４のステージ１３３、第５のステージ１３４の５ステージのパイプライン処理を行う。
【００２２】
図２は、本実施形態によるパイプライン処理を示す図である。ステージ１３０〜１３４は、それぞれパイプラインステージを示す。まず、第１のステージ１３０では、命令フェッチ制御部１０４が命令読み出しのためのアドレスを計算する。次に、第２のステージ１３１では、命令フェッチ制御部１０４が命令キャッシュメモリ１０２から命令キュー１０３に命令を読み出す。次に、第３のステージ１３２では、命令デコーダ１０５が、レジスタ１０９から値を読み出して演算器１０７に出力すると共に、命令の解釈（デコード）を行う。次に、第４のステージ１３３では、演算器１０７は、命令の演算実行を行う。次に、第５のステージ１３４では、演算器１０７の演算結果をレジスタ１０９に書き込む。
【００２３】
以下、詳細に説明する。ＣＰＵ（中央演算処理装置）１０１は、マイクロプロセッサであり、バス１２０を介してメインメモリ１２１に接続される。メインメモリ１２１は、例えばＳＤＲＡＭであり、バス１２２を介して外部バス１２０に接続される。ＣＰＵ１０１は、命令キャッシュメモリ１０２、命令キュー（プリフェッチバッファ）１０３、命令フェッチ制御部１０４、命令デコーダ１０５、分岐ユニット１０６、演算器１０７、ロード及びストア部１０８、レジスタ１０９、変換回路１２３並びに選択回路１２４を有する。
【００２４】
変換回路１２３は、バス１１７ａを介して外部バス１２０に接続され、バス１１７ｂを介して命令キャッシュメモリ１０２に接続される。命令キュー１０３は、命令用バス１１２を介して命令キャッシュメモリ１０２に接続される。命令キャッシュメモリ１０２は、頻繁に使用する命令（プログラム）の一部を予めメインメモリ１２１から読み込み記憶し、逆に使用されないものから追い出していく。ＣＰＵ１０１が要求する命令が命令キャッシュメモリ１０２上にある場合をキャッシュヒットという。キャッシュヒットした場合には、ＣＰＵ１０１は命令キャッシュメモリ１０２から命令を受け取ることができる。それに対し、ＣＰＵ１０１が要求する命令が命令キャッシュメモリ１０２上にない場合をキャッシュミスという。キャッシュミスの場合は、命令キャッシュメモリ１０２がバスアクセス信号１１６によりメインメモリ１２１に命令の読み出し要求を行う。ＣＰＵ１０１は、命令キャッシュメモリ１０２を介してメインメモリ１２１から命令を読み出すことができる。バス１１２の転送速度は、外部バス１２０の転送速度に比べて極めて速い。したがって、キャッシュヒットした場合には、キャッシュミスした場合に比べ、命令読み出し速度が極めて速い。また、命令（プログラム）がシーケンシャルに読み出される可能性が高いことからキャッシュヒット率が高くなるので、命令キャッシュメモリ１０２を設けることにより、ＣＰＵ１０１の命令読み出し速度が全体的に速くなる。
【００２５】
変換回路１２３は、メインメモリ１２１及び命令キャッシュメモリ１０２間に接続され、メインメモリ１２１から読み出した命令が条件分岐命令である場合には、条件分岐命令を変換し、その変換した条件分岐命令を命令キャッシュメモリ１０２に書き込む書き込み回路を有する。その詳細は、後に図３を参照しながら説明する。
【００２６】
命令キュー１０３は、複数の命令を記憶可能であり、バス１１２を介して命令キャッシュメモリ１０２に接続され、バス１１５を介して命令デコーダ１０５に接続される。すなわち、命令キュー１０３は、命令キャッシュメモリ１０２からの命令を書き込み、その命令を読み出して命令デコーダ１０５に出力する。命令フェッチ制御部１０４は、命令キャッシュメモリ１０２に対してキャッシュアクセス制御信号１１０を入出力し、命令キュー１０３の入出力を制御する。命令デコーダ１０５は、命令キュー１０３に蓄えられた命令をデコードする。
【００２７】
演算器１０７は、複数の命令を同時実行可能である。選択回路１２４は、命令デコーダ１０５がデコードした命令のうち同時実行可能な命令があれば、同時実行させる複数の命令を選択して演算器１０７に出力する。なお、選択回路１２４は、省略可能である。演算器１０７は、レジスタ１０９から値を入力し、命令デコーダ１０５がデコードした命令を１命令単位で又は複数命令同時に演算実行する。レジスタ１０９には、演算器１０７の実行結果が書き込まれる。ロード及びストア部１０８は、命令デコーダ１０５がデコーダした命令がロード又はストア命令であるときに、レジスタ１０９及びメインメモリ１２１間でロード又はストアを行う。
【００２８】
演算器１０７の演算により条件分岐命令の直前の命令が実行され、実行結果がレジスタ１０９に書き込まれる。このレジスタ１０９内の実行結果１１９は、分岐ユニット１０６に入力される。演算器１０７の演算により条件分岐命令が実行され、分岐条件が成立したかを示す情報が例えばレジスタ１０９内に設けられたフラグを介して分岐ユニット１０６に入力される。命令デコーダ１０５は、命令デコーダ１０５がデコードした命令が条件分岐命令であるとき、条件分岐命令デコード通知信号１１３を分岐ユニット１０６に出力する。分岐ユニット１０６は、条件分岐命令デコード通知信号１１３及び条件分岐命令実行結果１１９に応じて、条件分岐命令実行通知信号１１４を命令フェッチ制御部１０４に出力する。すなわち、条件分岐命令の実行結果に応じて、条件分岐命令実行通知信号１１４を用いて分岐するか否かを通知する。命令フェッチ制御部１０４は、この条件分岐命令実行通知信号１１４を今回の分岐履歴情報として、命令キャッシュメモリ１０２に書き込む。分岐履歴情報は、条件分岐命令が分岐したか否かを示す情報である。
【００２９】
次に、命令フェッチ制御部１０４は、命令キャッシュメモリ１０２から読み出した命令が条件分岐命令であるとき、命令キャッシュメモリ１０２内の過去の分岐履歴情報を基に分岐するか否かを予測し、その予測した読み出しアドレスを計算し、その読み出しアドレスの命令をプリフェッチ要求する。具体的には、命令フェッチ制御部１０４は、キャッシュアクセス制御信号１１０を命令キャッシュメモリ１０２に出力することによりプリフェッチ要求する。プリフェッチ要求により、命令キャッシュメモリ１０２から命令キュー１０３に命令がプリフェッチされる。
【００３０】
このように条件分岐命令を実行する前の命令キャッシュメモリ１０２からの読み出しの段階で条件分岐先命令のプリフェッチ要求を行う。この後、条件分岐命令を実行した段階で、分岐の有無が決定する。すなわち、演算器１０７の演算により条件分岐命令の直前の命令が実行され、実行結果がレジスタ１０９に書き込まれる。このレジスタ１０９内の実行結果１１９は、分岐ユニット１０６に入力される。演算器１０７の演算により条件分岐命令が実行され、分岐条件が成立したかを示す情報が例えばレジスタ１０９内に設けられたフラグを介して分岐ユニット１０６に入力される。命令デコーダ１０５は、命令デコーダ１０５がデコードした命令が条件分岐命令であるとき、条件分岐命令デコード通知信号１１３を分岐ユニット１０６に出力する。分岐ユニット１０６は、条件分岐命令デコード通知信号１１３及び条件分岐命令実行結果１１９に応じて、条件分岐命令実行通知信号１１４を命令フェッチ制御部１０４に出力する。すなわち、条件分岐命令の実行結果に応じて、条件分岐命令実行通知信号１１４を用いて分岐するか否かを通知する。命令フェッチ制御部１０４は、この通知を基に上記の履歴情報を命令キャッシュメモリ１０２に書き込む。それと同時に、命令フェッチ制御部１０４は、上記分岐予測が外れていた場合には、上記でプリフェッチ要求した命令を無視し、正しい読み出しアドレスの命令のプリフェッチ、デコード及び実行を行う。また、命令フェッチ制御部１０４は、アクセスキャンセル信号１１１を命令キャッシュメモリ１０２に出力する。命令キャッシュメモリ１０２は、既に上記の分岐先のプリフェッチ要求を受けており、キャッシュミスした場合にはメインメモリ１２１にアクセスしようとしている。命令キャッシュメモリ１０２は、アクセスキャンセル信号１１１を入力すると、メインメモリ１２１へのアクセスをキャンセルする。これにより、不要なメインメモリ１２１へのアクセスをなくし、性能低下を防止できる。
【００３１】
なお、実行結果１１９は、説明の簡単のために、レジスタ１０９から分岐ユニット１０６に入力されるように示したが、実際にはバイパス回路を用いることにより実行ステージ１３３の実行完了を待たずに、実行結果１１９を分岐ユニット１０６に入力することができる。
【００３２】
命令フェッチ制御部１０４は、演算結果に応じて条件分岐命令が分岐したか否かを示す履歴情報を命令キャッシュメモリ１０２に書き込んでおく。これにより、図２のステージ１３１において、ステップＳ１３０１により命令フェッチ制御部１０４が命令キャッシュメモリ１０２から命令を読み出し、その命令が条件分岐命令であるときには、上記の履歴情報を基にその条件分岐命令が分岐するか否かを予測する。次に、ステップＳ１３０２により、ステージ１３０では、命令フェッチ制御部１０４は、その予測に応じて、読み出しアドレスを計算する。その後、パイプライン処理を続ける。その後、条件分岐命令の演算実行ステージ１３３により、分岐するか否かが確定する。予測が外れた場合には、その予測した命令をキャンセルし、ステップＳ１３０３により、ステージ１３０に戻り、命令フェッチ制御部１０４は、正しい読み出しアドレスを計算する。予測が当たった場合には、分岐ペナルティを削減することができる。
【００３３】
図３は、図１の変換回路１２３の構成例を示す図である。変換回路１２３は、メインメモリ１２１から入力した命令３１２が条件分岐命令である場合には、その条件分岐命令３１２を条件分岐命令３１３及び条件分岐命令情報ＣＢに変換し、条件分岐命令３１３及び条件分岐命令情報ＣＢを命令キャッシュメモリ１０２に書き込む。変換回路１２３は、プリデコーダ３０１を有する。条件分岐命令は、上記の図１０の説明と同じである。
【００３４】
条件分岐命令３１２がメインメモリ１２１から変換回路１２３に入力された場合を説明する。１命令は３２ビット（４バイト）長である。条件分岐命令３１２は、条件３２１、オペコード３２２及びオフセット（プログラムカウンタ相対分岐先アドレス）３２３を含む。条件３２１及びオペコード３２２は、条件分岐命令３１２の１６ビット目から３１ビット目までの１６ビットである。オフセット３２３は、条件分岐命令３１２の０ビット目から１５ビット目までの１６ビットである。条件３２１は、分岐するか否かの判定条件であり、例えばゼロフラグ又はキャリフラグ等である。ＢＥＱ命令の条件３２１は、ゼロフラグである。オペコード３２２は、命令の種類を示す。オフセット３２３は、プログラムカウンタ相対分岐先アドレスであり、プログラムカウンタ値を基準にした相対アドレスである。プログラムカウンタ値は、図１のレジスタ１０９内のプログラムカウンタから読み出した値であり、現在読み出して実行処理しているメインメモリ１２１内の３２ビットのアドレスを示す。条件分岐命令３１２が入力されると、プログラムカウンタ値は条件分岐命令３１２のアドレスと同じ値になる。条件分岐命令３１２が分岐する場合には、オフセット（プログラムカウンタ相対分岐先アドレス）３２３が示すアドレスに分岐する。
【００３５】
プリデコーダ３０１は、メインメモリ１２１から入力された命令３１２内のオペコード３２２をデコードし、前記入力された命令３１２が条件分岐命令であるときには、前記入力された命令３１２が条件分岐命令であることを示す条件分岐命令情報ＣＢ及びその条件分岐命令の種類を示す命令種類情報ＡＢを生成し、前記入力された命令３１２内のオペコード３２２を削除した命令、前記条件分岐命令情報ＣＢ及び前記命令種類情報ＡＢを命令キャッシュメモリ１０２に書き込む。具体的には、プリデコーダ３０１は、命令種類情報ＡＢを命令キャッシュメモリ１０２内の条件分岐命令のオペコード３２２が削除された場所に書き込む。すなわち、プリデコーダ３０１は、条件分岐命令３１３と条件分岐命令情報ＣＢとを対応させて命令キャッシュメモリ１０２に書き込む。条件分岐命令情報ＣＢは、それに対応する命令が条件分岐命令であるか否かを示す１ビットの情報であり、例えば１であれば条件分岐命令であることを示し、０であれば条件分岐命令でないことを示す。オペコード３２２は、条件分岐命令情報ＣＢ及び命令種類情報ＡＢに変換される。条件分岐命令であることを示す条件分岐命令情報ＣＢが書き込まれれば、オペコード３２２の大半の情報は不要になり、オペコード３２２はビット数の少ない命令種類情報ＡＢに変換される。例えば、オペコード３２２は１０ビットであり、命令種類情報ＡＢは２ビット又は３ビットである。
【００３６】
変換後の条件分岐命令３１３は、変換前の条件分岐命令３１２に対して、オペコード３２２を命令種類情報ＡＢ及び履歴情報ＢＢに置き換えたものである。すなわち、条件分岐命令３１３は、条件３２１、命令種類情報ＡＢ、履歴情報ＢＢ及びオフセット３２３を有する。履歴情報ＢＢは、初期時には履歴情報がないことを示す情報又は初期値となり、命令実行後には過去にその対応する条件分岐命令３１３が実際に分岐したか否かを示す情報となる。例えば、条件３２１は６ビット、オフセット３２３は１６ビットである。命令種類情報ＡＢは２ビット又は３ビット、履歴情報ＢＢは８ビット又は７ビットである。例えば、履歴情報ＢＢが８ビットであれば、過去の８回分の履歴情報を有する。履歴情報ＢＢについては、後に図４〜図７を参照しながら詳細に説明する。
【００３７】
なお、プリデコーダ３０１は、入力された命令３１２内のオペコード３２２をデコードし、前記入力された命令３１２が条件分岐命令でないときには、前記入力された命令３１２が条件分岐命令でないことを示す条件分岐命令情報ＣＢ及び前記入力された命令３１２を命令キャッシュメモリ１０２に書き込む。
【００３８】
図４〜図７は、本実施形態による情報処理装置の処理ステップを説明するための図である。命令実行部４０１は、図１の命令キュー１０３、命令デコーダ１０５、選択回路１２４、演算器１０７及びレジスタ１０９を含み、命令キャッシュメモリ１０２内の命令を読み出してデコード及び実行を行う。命令キャッシュメモリ１０２は、キャッシュＲＡＭ（ランダムアクセスメモリ）４０２を有する。命令フェッチ制御部１０４は、フェッチアドレス生成部４０３、分岐予測部４０４及び履歴情報生成部４０５を有する。
【００３９】
フェッチアドレス生成部４０３は、命令キャッシュメモリ１０２に読み出しアドレスＡＤを出力する。命令キャッシュメモリ１０２は、アドレスＡＤの命令がキャッシュＲＡＭ４０２内に記憶されていないときには、キャッシュミスとして、メインメモリ１２１に読み出し要求信号を出力する。
【００４０】
すると、図４に示すように、メインメモリ１２１は、アドレスＡＤの命令３１２を変換回路１２３を介して命令キャッシュメモリ１０２に出力する。命令３１２が条件分岐命令である場合、条件分岐命令３１２は、条件３２１、オペコード３２２及びオフセット３２３を有する。プリデコーダ３０１は、オペコード３２２をデコードし、命令種類情報ＡＢ及び条件分岐命令情報ＣＢを生成する。変換回路１２３は、条件分岐命令３１２を条件分岐命令３１３及び条件分岐命令情報ＣＢに変換し、条件分岐命令３１３及び条件分岐命令情報ＣＢを命令キャッシュメモリ１０２内のキャッシュＲＡＭ４０２に書き込む。条件分岐命令３１３は、条件３２１、命令種類情報ＡＢ、履歴情報ＢＢ及びオフセット３２３を有する。この時点では、条件分岐命令３１３の分岐履歴は存在しないので、履歴情報ＢＢは初期値となる。命令及び条件分岐命令情報ＣＢは対応付けされて記憶される。その命令が条件分岐命令であるときには、それに対応する条件分岐命令情報ＣＢは１になり、変換後の命令３１３がキャッシュＲＡＭ４０２に記憶される。その命令が条件分岐命令でないときには、それに対応する条件分岐命令情報ＣＢは０になり、メインメモリ１２１から出力された命令が変換されずにそのままキャッシュＲＡＭ４０２に記憶される。
【００４１】
次に、図５に示すように、命令キャッシュメモリ１０２は、フェッチアドレス生成部４０３が出力するアドレスＡＤの命令及び条件分岐命令情報ＣＢを命令フェッチ制御部１０４及び命令実行部４０１に出力する。なお、アドレスＡＤの命令がキャッシュＲＡＭ４０２内に存在し、キャッシュヒットした場合にも、図５の処理を行う。
【００４２】
次に、図６に示すように、分岐予測部４０４は、条件分岐命令情報ＣＢを基にその命令が条件分岐命令であるか否かを判断し、条件分岐命令であるときには履歴情報ＢＢを基にその条件分岐命令が分岐するか否かを予測し、その予測情報をフェッチアドレス生成部４０３に出力する。すなわち、分岐予測部４０４は、命令キャッシュメモリ１０２内の条件分岐命令が読み出されると、その条件分岐命令の履歴情報ＢＢを基にその条件分岐命令が分岐するか否かを予測し、その予測した次の読み出しアドレスの生成をフェッチアドレス生成部４０３に指示する。履歴情報ＢＢは、後に説明するように、過去の分岐履歴情報である。例えば、過去８回分の履歴がすべて分岐している場合には、今回の条件分岐命令も分岐するであろうと予測することができる。また、過去８回分の履歴がすべて分岐していない場合には、今回の条件分岐命令も分岐しないであろうと予測することができる。また、過去の履歴が「分岐する」と「分岐しない」が交互に出現している場合には、今回の条件分岐命令もそのパターンに従ったものになるであろうと予測することができる。履歴情報生成部４０５は、後に今回の履歴を含めた履歴情報を生成するために、履歴情報ＢＢを記憶しておく。この後、図２のステップＳ１３０２のように、フェッチアドレス生成部４０３は、分岐予測部４０４から入力した予測情報を基にフェッチアドレスＡＤを生成し、命令キャッシュメモリ１０２に対してプリフェッチ要求を出力する。
【００４３】
次に、図７に示すように、命令実行部４０１は、命令キャッシュメモリ１０２から入力した命令をデコード及び実行する。その命令が条件分岐命令である場合には、命令実行部４０１は、その条件分岐命令の実行結果に応じて、その条件分岐命令が分岐したか否かを示す履歴情報を履歴情報生成部４０５に出力し、上記の分岐予測が当たったか否かを示す予測結果情報をフェッチアドレス生成部４０３に出力する。分岐予測が外れた場合、フェッチアドレス生成部４０３は、次に実行すべき正しいアドレスＡＤを生成し、命令キャッシュメモリ１０２に出力する。履歴情報生成部４０５は、命令実行部４０１から入力した今回の履歴情報を上記の命令キャッシュメモリ１０２から入力した過去の履歴情報に追加した履歴情報ＢＢをキャッシュＲＡＭ４０２内の対応する命令内に書き込む。なお、履歴情報ＢＢのビット数は限られているので、例えば最新の７回又は８回分の履歴情報ＢＢを書き込む。
【００４４】
以上のように、履歴情報生成部（履歴情報書き込み部）４０５は、命令実行部４０１が命令キャッシュメモリ１０２内の条件分岐命令を読み出して実行した結果、その条件分岐命令が分岐したか否かを示す履歴情報ＢＢを命令キャッシュメモリ１０２内の条件分岐命令のオペコードが削除された場所に書き込む。具体的には、履歴情報生成部４０５は、命令キャッシュメモリ１０２に書き込まれている過去の履歴情報に今回の履歴情報を追加するように書き込む。
【００４５】
なお、分岐予測部４０４を履歴情報生成部４０５内に設けてもよい。すなわち、履歴情報生成部４０５は、命令実行部４０１から履歴情報を入力すると、その履歴情報を基に、その履歴情報に対応する条件分岐命令が次に読み出されたときにその条件分岐命令が分岐するか否かを予測し、その予測情報を履歴情報と共に命令キャッシュメモリ１０２に書き込む。履歴情報及び予測情報は、命令３１３内のオペコード３２２が削除された場所に書き込まれる。その後、フェッチアドレス生成部４０３は、命令キャッシュメモリ１０２内の条件分岐命令が読み出されると、その条件分岐命令の予測情報が示す次の読み出しアドレスを生成する。
【００４６】
本実施形態のキャッシュＲＡＭ４０２は、シングルポートＲＡＭであり、命令の読み出しと履歴情報ＢＢの書き込みのタイミングが競合すると、同時刻にはいずれか一方のみしか行えない。そこで、その課題を解決するための実施形態として、以下、本発明の第２及び第３の実施形態による情報処理装置を説明する。
【００４７】
（第２の実施形態）
図８は、本発明の第２の実施形態による情報処理装置の構成例を示す図である。以下、本実施形態が第１の実施形態と異なる点を説明する。本実施形態は、第１の実施形態のキャシュＲＡＭ４０２を２個のキャッシュＲＡＭ４０２ｅ及び４０２ｏに分割したものである。キャッシュＲＡＭ４０２ｅはキャッシュＲＡＭ４０２のうちの偶数アドレスの命令及び条件分岐命令情報ＣＢを記憶し、キャッシュＲＡＭ４０２ｏはキャッシュＲＡＭ４０２のうちの奇数アドレスの命令及び条件分岐命令情報ＣＢを記憶する。キャッシュＲＡＭ４０２ｅ及び４０２ｏは、それぞれキャッシュＲＡＭ４０２の半分の容量を有する。変換回路１２３は、メインメモリ１２１から入力した命令のアドレスが偶数であるときには命令及び条件分岐命令情報ＣＢをキャッシュＲＡＭ４０２ｅに書き込み、奇数であるときには命令及び条件分岐命令情報ＣＢをキャッシュＲＡＭ４０２ｏに書き込む。キャッシュＲＡＭ４０２ｅは、アドレスＡＤが奇数であるときにはアドレスＡＤの命令等８０２を読み出して出力する。キャッシュＲＡＭ４０２ｏは、アドレスＡＤが偶数であるときにはアドレスＡＤの命令等８０２を読み出して出力する。セレクタ８０１は、アドレスＡＤが偶数であるときにはキャッシュＲＡＭ４０２ｅが出力する命令等８０２を選択して命令フェッチ制御部１０４に出力し、アドレスＡＤが奇数であるときにはキャッシュＲＡＭ４０２ｏが出力する命令等８０２を選択して命令フェッチ制御部１０４に出力する。命令等８０２は、命令及び条件分岐命令情報ＣＢを含む。履歴情報生成部４０５は、履歴情報ＢＢに対応する命令のアドレスが偶数であるときには履歴情報ＢＢをキャッシュＲＡＭ４０２ｅに書き込み、履歴情報ＢＢに対応する命令のアドレスが奇数であるときには履歴情報ＢＢをキャッシュＲＡＭ４０２ｏに書き込む。キャッシュＲＡＭ４０２を２個のキャッシュＲＡＭ４０２ｅ及び４０２ｏに分割する場合を例に説明したが、３個以上に分割してもよい。命令キャッシュメモリは、入力された命令を分散して書き込むための複数の命令キャッシュメモリに分割されている。これにより、キャッシュＲＡＭ４０２ｅに履歴情報ＢＢを書き込むと同時にキャッシュＲＡＭ４０２ｏから命令等８０２を読み出したり、逆に、キャッシュＲＡＭ４０２ｏに履歴情報ＢＢを書き込むと同時にキャッシュＲＡＭ４０２ｅから命令等８０２を読み出すことができる。
【００４８】
（第３の実施形態）
図９は、本発明の第３の実施形態による情報処理装置の構成例を示す図である。以下、本実施形態が第１の実施形態と異なる点を説明する。本実施形態は、第１の実施形態のキャシュＲＡＭ４０２を２個のキャッシュＲＡＭ４０２ａ及び４０２ｂに分割したものである。キャッシュＲＡＭ４０２ａは、シングルポートＲＡＭであり、条件３２１、命令種類情報ＡＢ、オフセット３２３及び条件分岐命令情報ＣＢを記憶する。キャッシュＲＡＭ４０２ｂは、デュアルポートＲＡＭであり、履歴情報ＢＢを記憶する。すなわち、命令キャッシュメモリは、入力された命令内のオペコードを削除した命令（条件３２１、オフセット３２３を含む）、条件分岐命令情報ＣＢ及び命令種類情報ＡＢを記憶するためのシングルポートメモリ４０２ａ及び履歴情報ＢＢを記憶するためのデュアルポートメモリ４０２ｂを有する。変換回路１２３は、命令３２１、命令種類情報ＡＢ、オフセット３２３及び条件分岐命令情報ＣＢをキャッシュＲＡＭ４０２ａに書き込む。履歴情報生成部４０５は、履歴情報ＢＢをキャッシュＲＡＭ４０２ｂに書き込む。アドレスＡＤが入力されると、そのアドレスＡＤに対応し、キャッシュＲＡＭ４０２ａは命令等９０１を読み出して出力し、キャッシュＲＡＭＢＢは履歴情報ＢＢを読み出して出力する。命令等９０１は、命令３２１、命令種類情報ＡＢ、オフセット３２３及び条件分岐命令情報ＣＢを含む。命令等９０１及び履歴情報ＢＢを合わせた情報８０２は、命令フェッチ制御部１０４に出力される。読み出し及び書き込みのタイミングが競合する可能性があるのは、履歴情報ＢＢだけである。そこで、履歴情報ＢＢのみをデュアルポートＲＡＭ４０２ｂに記憶させる。デュアルポートＲＡＭ４０２ｂは、履歴情報ＢＢの読み出しと書き込みを同時に行うことができる。なお、第１の実施形態のキャッシュＲＡＭ４０２の全部をデュアルポートにしてもよい。ただし、デュアルポートＲＡＭは、シングルポートＲＡＭよりも高価であるため、本実施形態の方がコストを低減することができる。
【００４９】
以上のように、第１〜第３の実施形態によれば、プリデコード３０１は、入力された命令内のオペコード３２２をデコードし、前記入力された命令が条件分岐命令であるときには、前記入力された命令が条件分岐命令であることを示す条件分岐命令情報ＣＢ及びその条件分岐命令の種類を示す命令種類情報ＡＢを生成し、前記入力された命令内のオペコード３２２を削除した命令、条件分岐命令情報ＣＢ及び命令種類情報ＡＢを命令キャッシュメモリ１０２に書き込む。履歴情報生成部（履歴情報書き込み部）４０５は、命令キャッシュメモリ１０２内の条件分岐命令を読み出して実行した結果、その条件分岐命令が分岐したか否かを示す履歴情報ＢＢを命令キャッシュメモリ１０２内の条件分岐命令のオペコード３２２が削除された場所に書き込む。
【００５０】
条件分岐命令のオペコードが削除された場所に履歴情報ＢＢを書き込むので、専用の履歴情報テーブルが必要なくなり、回路規模を小さくすることができる。また、条件分岐命令内の分岐先アドレスに使用可能なビット数を減らす必要がない。また、分岐予測部４０４は、履歴情報ＢＢに基づく動的分岐予測を行うことができる。本実施形態では、メインメモリ１２１から命令キャッシュメモリ１０２に条件分岐命令を読み込んだ時にのみ、命令キャッシュメモリ１０２の内部で、条件分岐命令自体に分岐履歴情報ＢＢを格納することができる。
【００５１】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【００５２】
本発明の実施形態は、例えば以下のように種々の適用が可能である。
【００５３】
（付記１）
命令を記憶するための命令キャッシュメモリと、
入力された命令内のオペコードをデコードし、前記入力された命令が条件分岐命令であるときには、前記入力された命令が条件分岐命令であることを示す条件分岐命令情報及びその条件分岐命令の種類を示す命令種類情報を生成し、前記入力された命令内のオペコードを削除した命令、前記条件分岐命令情報及び前記命令種類情報を前記命令キャッシュメモリに書き込むプリデコーダと、
前記命令キャッシュメモリ内の条件分岐命令を読み出して実行した結果、その条件分岐命令が分岐したか否かを示す履歴情報を前記命令キャッシュメモリ内の条件分岐命令の前記オペコードが削除された場所に書き込む履歴情報書き込み部と
を有することを特徴とする情報処理装置。
（付記２）
前記プリデコーダは、前記命令種類情報を前記命令キャッシュメモリ内の条件分岐命令の前記オペコードが削除された場所に書き込むことを特徴とする付記１記載の情報処理装置。
（付記３）
前記履歴情報書き込み部は、前記命令キャッシュメモリに書き込まれている過去の履歴情報に今回の履歴情報を追加するように書き込むことを特徴とする付記１記載の情報処理装置。
（付記４）
さらに、前記命令キャッシュメモリ内の条件分岐命令が読み出されると、その条件分岐命令の履歴情報を基にその条件分岐命令が分岐するか否かを予測し、その予測した次の読み出しアドレスの生成を指示する分岐予測部を有することを特徴とする付記１記載の情報処理装置。
（付記５）
前記履歴情報書き込み部は、前記履歴情報を基に、前記履歴情報に対応する条件分岐命令が次に読み出されたときにその条件分岐命令が分岐するか否かを予測し、その予測情報を前記履歴情報と共に前記命令キャッシュメモリに書き込むことを特徴とする付記１記載の情報処理装置。
（付記６）
さらに、前記命令キャッシュメモリ内の条件分岐命令が読み出されると、その条件分岐命令の予測情報が示す次の読み出しアドレスを生成するアドレス生成部を有することを特徴とする付記５記載の情報処理装置。
（付記７）
前記命令キャッシュメモリは、前記入力された命令を分散して書き込むための複数の命令キャッシュメモリに分割されていることを特徴とする付記１記載の情報処理装置。
（付記８）
前記命令キャッシュメモリは、前記入力された命令内のオペコードを削除した命令、前記条件分岐命令情報及び前記命令種類情報を記憶するためのシングルポートメモリ及び前記履歴情報を記憶するためのデュアルポートメモリを有することを特徴とする付記１記載の情報処理装置。
（付記９）
前記プリデコーダは、入力された命令内のオペコードをデコードし、前記入力された命令が条件分岐命令でないときには、前記入力された命令が条件分岐命令でないことを示す条件分岐命令情報及び前記入力された命令を前記命令キャッシュメモリに書き込むことを特徴とする付記１記載の情報処理装置。
（付記１０）
さらに、前記命令キャッシュメモリ内の命令を読み出してデコード及び実行を行う命令実行部を有し、
前記履歴情報書き込み部は、前記命令実行部による条件分岐命令の実行の結果に応じて前記履歴情報を書き込むことを特徴とする付記１記載の情報処理装置。
（付記１１）
前記プリデコーダは、前記命令種類情報を前記命令キャッシュメモリ内の条件分岐命令の前記オペコードが削除された場所に書き込むことを特徴とする付記１０記載の情報処理装置。
（付記１２）
前記履歴情報書き込み部は、前記命令キャッシュメモリに書き込まれている過去の履歴情報に今回の履歴情報を追加するように書き込むことを特徴とする付記１１記載の情報処理装置。
（付記１３）
前記プリデコーダは、入力された命令内のオペコードをデコードし、前記入力された命令が条件分岐命令でないときには、前記入力された命令が条件分岐命令でないことを示す条件分岐命令情報及び前記入力された命令を前記命令キャッシュメモリに書き込むことを特徴とする付記１２記載の情報処理装置。
（付記１４）
さらに、前記命令キャッシュメモリ内の条件分岐命令が読み出されると、その条件分岐命令の履歴情報を基にその条件分岐命令が分岐するか否かを予測し、その予測した次の読み出しアドレスの生成を指示する分岐予測部を有することを特徴とする付記１３記載の情報処理装置。
（付記１５）
前記履歴情報書き込み部は、前記履歴情報を基に、前記履歴情報に対応する条件分岐命令が次に読み出されたときにその条件分岐命令が分岐するか否かを予測し、その予測情報を前記履歴情報と共に前記命令キャッシュメモリに書き込むことを特徴とする付記１３記載の情報処理装置。
（付記１６）
さらに、前記命令キャッシュメモリ内の条件分岐命令が読み出されると、その条件分岐命令の予測情報が示す次の読み出しアドレスを生成するアドレス生成部を有することを特徴とする付記１５記載の情報処理装置。
（付記１７）
前記命令キャッシュメモリは、前記入力された命令を分散して書き込むための複数の命令キャッシュメモリに分割されていることを特徴とする付記１３記載の情報処理装置。
（付記１８）
前記命令キャッシュメモリは、前記入力された命令内のオペコードを削除した命令、前記条件分岐命令情報及び前記命令種類情報を記憶するためのシングルポートメモリ及び前記履歴情報を記憶するためのデュアルポートメモリを有することを特徴とする付記１３記載の情報処理装置。
【図面の簡単な説明】
【００５４】
【図１】本発明の第１の実施形態による情報処理装置の構成例を示す図である。
【図２】第１の実施形態によるパイプライン処理を示す図である。
【図３】変換回路の構成例を示す図である。
【図４】第１の実施形態による情報処理装置の処理ステップを説明するための図である。
【図５】第１の実施形態による情報処理装置の処理ステップを説明するための図である。
【図６】第１の実施形態による情報処理装置の処理ステップを説明するための図である。
【図７】第１の実施形態による情報処理装置の処理ステップを説明するための図である。
【図８】本発明の第２の実施形態による情報処理装置の構成例を示す図である。
【図９】本発明の第３の実施形態による情報処理装置の構成例を示す図である。
【図１０】条件分岐命令を含む命令群の例を示す図である。
【図１１】命令のパイプライン処理を示す図である。
【符号の説明】
【００５５】
１０１  ＣＰＵ
１０２  命令キャッシュメモリ
１０３  命令キュー
１０４  命令フェッチ制御部
１０５  命令デコーダ
１０６  分岐ユニット
１０７  演算器
１０８  ロード及びストア部
１０９  レジスタ
１２１  メインメモリ
１２３  変換回路
１２４  選択回路
３０１  プリデコーダ
４０１  命令実行部
４０２  キャッシュＲＡＭ
４０３  フェッチアドレス生成部
４０４  分岐予測部
４０５  履歴情報生成部
【図１】
2008204357.tif 000003
【図２】
2008204357.tif 000004
【図３】
2008204357.tif 000005
【図４】
2008204357.tif 000006
【図５】
2008204357.tif 000007
【図６】
2008204357.tif 000008
【図７】
2008204357.tif 000009
【図８】
2008204357.tif 000010
【図９】
2008204357.tif 000011
【図１０】
2008204357.tif 000012
【図１１】
2008204357.tif 000013