(57)【要約】【課題】複雑な分岐条件を含み木構造により表される処理を実行する際に、その実行ステップ数を削減する。【解決手段】条件エントリ５０は、比較対象データの情報（レジスタ番号）と、比較結果に応じた次のエントリのインデックスとを含む。条件選択装置１では、この条件エントリ５０を読み込み、この条件エントリ５０から比較対象データのレジスタ番号を求め、レジスタファイル２３から対応するレジスタ値を取得して比較器１６により比較する。インデックス選択器１７は、比較結果に応じて条件エントリ５０中のエントリ（分岐先情報を示すインデックス）を選択してインデックス記憶部１１に記憶する。アドレス計算部１２は、インデックス記憶部１１に記憶されたインデックスに対応するメモリアドレスを算出し、メモリ２１からそのアドレスに対応する次の条件エントリ５０を取得して実行する。【選択図】図１
2011221710.tif 000002
【特許請求の範囲】
【請求項１】
条件選択処理を示す条件エントリであって比較対象となる１個以上のデータを示す条件情報と、前記データの比較結果に応じて実行される条件エントリが記憶されている領域を示すインデックスを２個以上含む次インデックス情報とを有する条件エントリを入力とし、前記条件情報により示される比較対象となるデータの比較結果に応じて次インデックス情報に含まれるインデックスのうちいずれか１つを選択し、選択したインデックスにより指定される条件エントリを新たな入力とする処理を順に実行する
ことを特徴とする条件選択装置。
【請求項２】
条件エントリが記憶されている領域を示すインデックスを記憶するインデックス記憶手段と、
前記インデックス記憶手段に記憶されているインデックスにより条件エントリを外部から読み出す条件エントリ取得手段と、
前記条件エントリ取得手段により読み出された条件エントリに含まれる条件情報により示されるデータを外部から読み出す比較対象データ取得手段と、
前記比較対象データ取得手段により読み出されたデータを比較する比較手段と、
前記比較手段の比較結果に応じて、読み出された前記条件エントリの次インデックス情報に含まれるインデックスからいずれか１つを選択し、選択したインデックスを前記インデックス記憶手段に記憶させるインデックス選択手段と
を備えることを特徴とする請求項１に記載の条件選択装置。
【請求項３】
前記インデックス記憶手段は、前記インデックス選択手段により選択されたインデックスが無効であった場合、記憶しているインデックスを更新しない
ことを特徴とする請求項２に記載の条件選択装置。
【請求項４】
前記次インデックス情報に含まれるインデックスは、複数の条件エントリが記憶されている領域を示すベースアドレスに対する差分であり、
前記条件エントリ取得手段は、前記ベースアドレスと、前記インデックスとに基づいて次に実行される条件エントリを外部から読み出す
ことを特徴とする請求項２又は請求項３のいずれかに記載の条件選択装置。
【請求項５】
前記次インデックス情報に含まれるインデックスは、次に実行される条件エントリが記憶されている領域を示すインデックスと、現在実行している条件エントリが記憶されている領域を示すインデックスとの差分であり、
前記インデックス記憶手段は、記憶しているインデックスと、前記インデックス選択手段により選択されたインデックスとから次に実行する条件エントリに対応するインデックスを算出して記憶する
ことを特徴とする請求項２から請求項４のいずれか１項に記載の条件選択装置。
【請求項６】
前記インデックス記憶手段は、
前記インデックス選択手段により選択されたインデックスが有効であるか否かを判定するインデックス有効性判定手段と、
前記インデックス有効性判定手段により前記インデックスが有効であると判定された場合、前記インデックスを記憶するインデックス保持手段と
を有することを特徴とする請求項２から請求項５のいずれか１項に記載の条件選択装置。
【請求項７】
前記条件エントリ取得手段により外部から取得される条件エントリを記憶する条件エントリ記憶手段を備え、
前記比較対象データ取得手段は、前記条件エントリ記憶手段に記憶されている条件エントリに含まれる条件情報により示されるデータを外部から読み出し、
前記インデックス選択手段は、前記条件エントリ記憶手段に記憶されている条件エントリに含まれる次インデックス情報に含まれるインデックスからいずれか１つを選択する
ことを特徴とする請求項２から請求項６のいずれか１項に記載の条件選択装置。
【請求項８】
前記条件情報は、比較演算子の種類を示す情報を含む
ことを特徴とする請求項１から請求項７のいずれか１項に記載の条件選択装置。
【請求項９】
前記条件情報は、データとして、少なくとも１つの即値を含む
ことを特徴とする請求項１から請求項８のいずれか１項に記載の条件選択装置。
【請求項１０】
請求項１から請求項９記載のいずれかに記載の条件選択装置と、
外部より命令を読み出し、読み出した命令の実行を制御するプロセッサ制御部と、
算術・論理演算処理を実行する算術・論理演算部と、
ロード・ストア処理を実行するロード・ストア演算部と、
前記条件選択装置、前記算術・論理演算部、及び前記ロード・ストア演算部との間でデータの入出力が行われるレジスタファイルと
を具備することを特徴とするプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複雑な条件判定を含む処理を効率的に実行する条件選択装置、及びプロセッサに関する。
【背景技術】
【０００２】
Ｃ言語の３項演算子は条件判定の結果に応じて出力を選択する演算子である。例えば、「Ｅ＝（Ａ＜Ｂ）？Ｃ：Ｄ；」という式は、変数Ａにより示される値が変数Ｂにより示される値未満であれば変数Ｃにより示される値を変数Ｅに代入し、そうでなければ変数Ｄにより示される値を変数Ｅに代入する、という意味である。また、３項演算子は、ネストすることができ、変数Ｃや変数Ｄの代わりに、３項演算子により表される式を組み込むことができる。これにより、複雑な条件に応じて出力を決定する式を表すことができる。
【０００３】
図２は、３項演算子をネスト（入れ子）構造にして記載したＣプログラムの一例を示す図である。図２に示すＣプログラムでは、３回ネストされた３項演算子が使用されている。図３は、図２に示すＣプログラムを２文木構造により示した図である。図２に示されている各条件は、ひし形により表されるノードとして示されている。ここで、図３は、「ｓｙ＞ｔｇ６７」の条件判定３０１を根（ＲＯＯＴ）とする２分木を表しており、ひし形のノードは条件判定を示し、丸のノードは出力の値を示している。そして、この２分木は、条件判定の結果が真であれば実線により示された枝（エッジ）をたどり、偽であれば破線により示された枝（エッジ）をたどりながら条件判定を繰り返し、葉（ＬＥＡＦ）にたどりついたらその値を出力することを表している。
【０００４】
しかしながら、このようなプログラムをパイプライン型ＲＩＳＣ（Reduced Instruction Set Computer：縮小命令セットコンピュータ）プロセッサで実現すると、実行ステップ数（命令数）が多くなるという問題があった。図４は、図２に示したＣプログラムをＲＩＳＣプロセッサにおけるアセンブリプログラムに変換した一例を示す図である。ここで、アセンブリプログラムの第１列は行につけられたラベル（記号アドレス）であり、第２列は命令名、第３列は命令のオペランドを表す。ｃｍｐ（compare）命令は比較命令、ｂｌｅ（branch less than equal)、及びｂｇｅ（branch grater than equal）命令は比較命令の結果を用いて分岐する分岐命令、ｓｔ（store）命令は結果をストアするストア命令、ｊｍｐ（jump)命令は指定されたラベルの行へジャンプするジャンプ命令である。
【０００５】
ＲＩＳＣプロセッサにおける３項演算子の処理は、図４に示すように、条件判定と分岐を繰り返す必要があるため、分岐時の分岐ペナルティが増えることが問題であった。図４に示したアセンブリプログラムでは、最も実行命令数が多い場合で１０命令の実行と、４回の分岐とが発生する（例：Ｌ１１→Ｌ１１１→Ｌ１１１１→Ｌ１１１１１へ順に分岐する場合）。このとき、分岐ペナルティを２サイクルとすると、このプログラムの実行には１８サイクル必要となる。
【０００６】
分岐ペナルティを軽減する手法として、分岐命令の遅延スロット中で分岐条件に依存しない命令を実行する手法が一般的である。しかし、図４のプログラムのように単純な分岐を繰り返す場合には分岐条件に依存しない命令がない。投機的に分岐先の条件判定（ｃｍｐ命令）を実行することもできるが、分岐しなかった場合の実行サイクル数が増えてしまい、平均実行サイクル数の増加につながってしまう。
【０００７】
実行サイクルの削減に関連するディジタル信号処理回路が特許文献１に記載されている。この特許文献１に記載のディジタル信号処理回路は、バイナリツリーのサーチを高速に行うことを目的にしている。このディジタル信号処理回路は、条件判定に用いる閾値をメモリ中に複数個格納しておき、サーチ対象のデータと閾値を比較しながら、メモリ・ポインタを操作してバイナリツリーのサーチを行う。
【０００８】
また、実行サイクルの削減に関連するレジスタファイルがある（特許文献２を参照）。この特許文献２に記載のレジスタファイルは、レジスタ間接指定によるレジスタアクセスを効率的に実行するレジスタファイルを提供することを目的としている。
【０００９】
また、実行サイクルの削減に関連するプロセッサ装置が特許文献３に記載されている。この特許文献３に記載のプロセッサ装置は、サイクル数の増加、命令長の増大を抑え、条件分岐処理を高速化する処理装置の提供を目的としている。このために、分岐判定で用いられる比較条件を設定する条件設定命令を設け、この条件設定命令を複合条件分岐命令に先立って実行することで、複合条件を構成する複数の比較条件を事前に設定しておく。そして、複合条件分岐命令の実行時に、条件分岐命令によって前もって設定された複数の条件の各々に対応する比較演算が、並列に実行されるようにして条件分岐処理の高速化を図るようにしている。
【００１０】
また、実行サイクルの削減に関連するプロセッサ装置が特許文献４に記載されている。この特許文献４に記載のプロセッサ装置は、サイクル数、命令長の増大を抑え、条件分岐処理を高速化する処理装置を提供することを目的としている。このために、条件設定命令によって複合条件を複数個記憶しておき、記憶された複合条件のうち、任意の複合条件を、複合条件分岐命令実行時に呼び出して、条件分岐処理を実行できるようにしたものである。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特公平５−６２７９６号公報
【特許文献２】特開２０００−０５６９６９号公報
【特許文献３】特開２００７−２７２３５３号公報
【特許文献４】特開２００８−３０５１８５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
上述した特許文献１に記載のディジタル信号処理回路では、比較対象となる変数が複数個ある図３に示す木構造のような複雑な条件判定を含む処理には対応できない。また、メモリ・ポインタの操作は外部から与えられる状態遷移信号によって行われるため柔軟性が低く、プログラムが変更され、木構造の構造が変更されても対応することができない。このため、複雑な条件判定を含む木構造の処理を高速に行う方法が求められていた。
【００１３】
また、特許文献２に記載されている技術は、レジスタ間接指定によるレジスタアクセスを効率的に実行する技術であって、複雑な分岐条件を含む命令の実行サイクルを削減する技術ではない。また、特許文献３及び特許文献４に記載されている技術は、ループ構造を有するプログラムにおける条件分岐処理を高速化する技術であって、複雑な分岐条件を含む命令の実行サイクルを削減する技術ではない。
【００１４】
本発明の主たる課題は、複雑な分岐条件を含み木構造により表される処理を実行する際に、その実行ステップ数を削減することができる、条件選択装置、及び該条件選択装置を備えるプロセッサを提供することにある。
【課題を解決するための手段】
【００１５】
本発明は上記課題を解決するためになされたものであり、本発明の条件選択装置は、条件選択処理を示す条件エントリであって比較対象となる１個以上のデータを示す条件情報と、前記データの比較結果に応じて実行される条件エントリが記憶されている領域を示すインデックスを２個以上含む次インデックス情報とを有する条件エントリを入力とし、前記条件情報により示される比較対象となるデータの比較結果に応じて次インデックス情報に含まれるインデックスのうちいずれか１つを選択し、選択したインデックスにより指定される条件エントリを新たな入力とする処理を順に実行することを特徴とする。
【００１６】
また、本発明のプロセッサは、本発明の条件選択装置と、外部より命令を読み出し、読み出した命令の実行を制御するプロセッサ制御部と、算術・論理演算処理を実行する算術・論理演算部と、ロード・ストア処理を実行するロード・ストア演算部と、前記条件選択装置、前記算術・論理演算部、及び前記ロード・ストア演算部との間でデータの入出力が行われるレジスタファイルとを具備することを特徴とする。
【発明の効果】
【００１７】
本発明の条件選択装置においては、比較対象となるデータを示す条件情報（例えば、分岐条件判定のためのデータを格納したレジスタ番号）と、データの比較結果に応じて選択されるインデックスを２個以上含む次インデックス情報（例えば、分岐条件の判定結果が真の場合の分岐先情報と、偽の場合の分岐先情報）と、で構成される条件エントリを入力とし、比較対象となるデータの比較結果に応じて選択されたインデックスを基に、次に実行する条件エントリを読み出して順に実行する。
これにより、条件の評価と、評価結果に基づく分岐とを併せて実行することができるので、複雑な分岐条件を含み木構造により表される処理を実行する際に、その実行ステップ数を削減することができる。これにより、複雑な分岐条件を含む処理を効率的に実行することができる。
【００１８】
また、本発明のプロセッサにおいては、本発明の条件選択装置を具備し、この条件選択装置により複雑な分岐命令を実行するようにしたので、ＲＩＳＣ等のプロセッサにおいて、複雑な分岐条件を含む命令を実行する際に、その実行ステップ数を削減することができる。これにより、複雑な分岐条件を含む処理を効率的に実行することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施形態の係わる条件選択装置の構成を示すブロック図である。
【図２】ネストされた３項演算子を用いるＣプログラムの例を示す図である。
【図３】図２に示すＣプログラムを２文木構造により示した図である。
【図４】ネストされた３項演算子を用いた処理をＲＩＳＣプロセッサで実行するときのアセンブリプログラムの例を示す図である。
【図５】図１に示す条件選択装置における条件エントリの構成例を示す図である。
【図６】図１に示す条件選択装置内のインデックス記憶部の構成を示す図である。
【図７】図１に示す条件選択装置内のアドレス計算部の構成を示す図である。
【図８】図１に示す条件選択装置の動作を示すフローチャートである。
【図９】図１に示す条件選択装置における条件エントリを格納するテーブルの例を示す図である。
【図１０】本発明の実施例におけるレジスタ内容の例を示す図である。
【図１１】本発明の実施例における条件選択装置の動作例における第１のステップを示す図である。
【図１２】条件選択装置の動作例における第２のステップを示す図である。
【図１３】条件選択装置の動作例における第３のステップを示す図である。
【図１４】条件選択装置の動作例における第４のステップを示す図である。
【図１５】本発明の実施例における出力値を格納するテーブルの例を示す図である。
【図１６】本発明の条件選択装置を用いたプログラムの例を示す図である。
【図１７】本発明の条件選択装置を用いたプロセッサの例を示す図である。
【図１８】本発明の条件選択装置の変形例の構成を示すブロック図である。
【図１９】図１８に示す条件選択装置を用いたプログラムの例を示す図である。
【発明を実施するための形態】
【００２０】
次に、発明を実施するための最良の形態について図面を参照して詳細に説明する。
図１は、本発明の実施形態に係る条件選択装置１の構成を示すブロック図である。図１を参照すると、条件選択装置１は、インデックス記憶部１１と、アドレス計算部１２と、メモリアクセス部１３と、条件エントリ解析部１４と、レジスタアクセス部１５と、比較器１６と、インデックス選択器１７とを備えている。
また、条件選択装置１は、少なくとも１つの条件エントリ５０を含む条件エントリテーブル２２が記憶されているメモリ２１に接続されている。
【００２１】
メモリアクセス部１３は、メモリ２１内の条件エントリテーブル２２から条件エントリ５０（図５を参照）を読み出し、読み出した条件エントリ５０を条件エントリ解析部１４に出力する。なお、条件エントリテーブル２２内には、後述するように少なくとも１つの条件エントリ５０が含まれ、順に配列されている（図９を参照）。条件エントリ解析部１４は、メモリアクセス部１３から入力された条件エントリ５０から条件情報（レジスタ番号）５１、及び次インデックス情報（次に実行する条件エントリ５０を示すアドレス修飾情報）５２を取り出し、レジスタ番号をレジスタアクセス部１５に出力し、次インデックス情報５２をインデックス選択器１７へ出力する。
【００２２】
レジスタアクセス部１５は、外部にあるレジスタファイル２３からレジスタ番号に対応するレジスタに記憶されているレジスタ値を読み出し、読み出したレジスタ値を比較器１６に出力する。比較器１６は、レジスタアクセス部１５から入力されたレジスタ値（データ）を比較し、比較結果をインデックス選択器１７に出力する。インデックス選択器１７は、比較器１６から入力される比較結果に応じて、条件エントリ解析部１４から入力される次インデックス情報（複数のインデックス）５２の中からインデックスを１つ選択し、選択したインデックスをインデックス記憶部１１へ出力する。
【００２３】
インデックス記憶部１１は、インデックス選択器１７から入力されるインデックスが有効なものであれば、記憶するインデックスを更新する。一方、インデックスが有効なものでなければ更新しない。また、インデックス記憶部１１は、記憶しているインデックスをアドレス計算部１２に出力する。なお、インデックス記憶部１１は、記憶しているインデックスを外部にインデックス信号として出力することができる。
アドレス計算部１２は、インデックス記憶部１１から入力されるインデックスを基に、次に実行する条件エントリ５０が記憶されているアドレス（インデックス）を算出し、算出したアドレスをメモリアクセス部１３に出力する。アドレス計算部１２におけるアドレスの算出は、後述するように、ベースアドレスと、インデックス記憶部１１から入力されるインデックスとを基に行われる。
メモリアクセス部１３は、メモリ２１において、アドレス計算部１２から入力されるアドレスにより示される領域に記憶されている条件エントリ５０を読み出し、読み出した条件エントリ５０を条件エントリ解析部１４に出力する。
【００２４】
図５は、本実施形態における条件エントリ５０の構成例を示す図である。条件エントリ５０には、条件情報５１と、次インデックス情報５２とが含まれている。条件情報５１には、１個以上のレジスタ番号が含まれている。ここでは、条件情報５１は、２つのレジスタ番号ｒＸとｒＹを含み、「ｒＸ＜ｒＹ」の条件判定をする場合について説明する。なお、条件情報５１に示される条件判定は、「ｒＸ＝ｒＹ」や「ｒＸ≦ｒＹ」を評価するようにしてもよい。
次インデックス情報５２は、次に実行する条件エントリ５０を示すための２個以上のインデックスを含む。次インデックス情報５２に含まれるインデックスからいずれか１つが、条件情報５１の条件判定の結果に応じて選択される。ここでは、次インデックス情報５２は、条件が真のときに使用する次インデックスＴｉｄｘと、偽のときに使用する次インデックスＦｉｄｘの２個のインデックスを含む場合について説明する。
【００２５】
図６は、本実施形態におけるインデックス記憶部１１の構成を示す概略ブロック図である。同図に示すように、インデックス記憶部１１は、インデックス選択器１７から入力されるインデックスを記憶するインデックスレジスタ１１２と、入力されるインデックスの有効性を判定する有効性判定器１１１とを備えている。ここでは、“−１”を無効なインデックスとする。すなわち、有効性判定器１１１は、入力されるインデックスを“−１”と比較し、等しくない場合にのみ有効信号をインデックスレジスタ１１２に出力する。
インデックスレジスタ１１２は、有効性判定器１１１から有効信号を入力されたとき、入力されるインデックスにより記憶している自身の値を更新する。有効信号を受け取らなかったときには自身の値を保持する。また、インデックスレジスタ１１２の値は、インデックス選択器１７から入力されるインデックスにより更新されるとともに、条件選択装置１の外部から参照したり変更したりすることもできる。
【００２６】
図７は、本実施形態におけるアドレス計算部１２の構成を示す概略ブロック図である。アドレス計算部１２は、ベースアドレスレジスタ１２１と、加算器１２２とを有している。ベースアドレスレジスタ１２１は、メモリ２１において条件エントリテーブル２２を記憶している領域を示すベースアドレスを記憶するレジスタである。また、ベースアドレスレジスタ１２１は、外部から入力されるベースアドレス更新信号により、記憶しているベースアドレスを更新する。
加算器１２２は、ベースアドレスレジスタ１２１に記憶されているベースアドレスと、インデックス記憶部１１から入力されるインデックス（より正確にはインデックスで示される数値）を加算することで、インデックスに対応する条件エントリ５０を記憶している領域を示すアドレスを算出する。
【００２７】
次に、図１及び図８を参照して本実施形態の全体の動作について詳細に説明する。
図８は、本実施形態における条件選択装置１の動作を表すフローチャートである。条件選択装置１において、まず、アドレス計算部１２は、インデックス記憶部１１中のインデックスレジスタ１１２の値を用いて、条件エントリ５０を記憶している領域を示すメモリアドレスを算出する。具体的には、アドレス計算部１２が有しているベースアドレスレジスタ１２１の値と、インデックスレジスタ１１２の値を加算することでアドレスを算出する（図８のステップＳ８０１）。
【００２８】
次に、メモリアクセス部１３は、アドレス計算部１２により計算されたアドレスに対応する条件エントリ５０を、メモリ２１内の条件エントリテーブル２２から読み出す（ステップＳ８０２）。そして、メモリアクセス部１３は、メモリ２１から読み出した条件エントリ５０を条件エントリ解析部１４に出力する。
条件エントリ解析部１４は、メモリアクセス部１３から入力された条件エントリ５０を解析する（ステップＳ８０３）。条件エントリ解析部１４は、条件エントリ５０に含まれる次インデックス情報５２をインデックス選択器１７に出力し、条件エントリ５０に含まれる条件情報（レジスタ番号）５１をレジスタアクセス部１５に出力する。例えば、図５に示す条件エントリ５０中の次インデックス情報（Ｔｉｄｘ及びＦｉｄｘ）５２をインデックス選択器１７に出力し、条件情報（レジスタ番号ｒＸ及びｒＹ）５１をレジスタアクセス部１５に出力する。
【００２９】
続いて、レジスタアクセス部１５は、条件エントリ５０の条件情報５１に含まれるレジスタ番号（例えば、レジスタ番号ｒＸ及びｒＹ）に対応するレジスタが記憶しているレジスタ値を読み出して取得する（ステップＳ８０４）。レジスタアクセス部１５は、レジスタファイル２３から読み出したレジスタ値を、比較器１６に出力する。比較器１６は、レジスタアクセス部１５から入力されたレジスタ値を比較し（ステップＳ８０５）、その比較結果をインデックス選択器１７に出力する。
【００３０】
続いて、インデックス選択器１７は、比較器１６から入力された比較結果に応じて、条件エントリ解析部１４から受け取った次インデックス情報５２に含まれる次に実行する条件エントリ５０を示すインデックス（例えば、ＴｉｄｘまたはＦｉｄｘ）のうちいずれか１つを選択する（ステップＳ８０６）。そして、インデックス選択器１７は、選択したインデックス（次インデックス）をインデックス記憶部１１に出力に出力する。
インデックス記憶部１１は、インデックス選択器１７から入力された次インデックスが有効かどうかを判定する（ステップＳ８０７）。そして、入力された次インデックスが有効である場合（ステップＳ８０７において有効）、インデックス記憶部１１は、インデックスレジスタ１１２の値を入力されたインデックスに基づいて更新する（ステップＳ８０８）。
【００３１】
なお、上記のフローチャートの説明では、条件選択装置１は、条件エントリ５０のメモリアドレスの算出（ステップＳ８０１）から動作を開始し、インデックスの更新（ステップＳ８０８）で動作を終了したが、動作の区切りは別の場所でもよい。
例えば、条件エントリ５０が記憶されている領域を示すアドレスは、前の条件判定の処理で算出されているものとして条件エントリ５０の取得（ステップＳ８０２）から動作を開始し、次の条件判定の処理における条件エントリ５０のアドレスを算出（ステップＳ８０１）してから動作を終了するようにしてもよい。
また、条件エントリ５０の読み出し後に区切りを入れて、条件エントリ５０の解析（ステップＳ８０３）から動作を開始して、次の条件エントリ５０の読み出し（ステップＳ８０２）により動作を終了してもよい。
【００３２】
具体的な、異なる構成例を以下に示す。
図１８は、第１の実施形態と異なる構成を有する条件選択装置２の構成を示す概略ブロック図である。図１８に示す条件選択装置２のように、第１実施形態の条件選択装置１（図１）に条件エントリ記憶部１８を追加し、条件エントリ解析部１４による解析（ステップＳ８０３）から動作を開始する。
具体的には、インデックス選択器１７により選択されたインデックスでインデックス記憶部１１を更新すると同時に、該更新したインデックスをアドレス計算部１２に出力してアドレス計算を行い（ステップＳ８０１）、メモリアクセス部１３により条件エントリ５０を読み出し（ステップＳ８０２）、条件エントリ記憶部１８に条件エントリ５０を記憶させてから動作を終了するようにしてもよい。この場合は、条件選択装置２により条件判定を実行する前に、条件エントリ記憶部１８に予め最初の条件エントリ５０を読み込んでおく必要がある。詳しくは図１９を用いて後述する。
【００３３】
また、条件エントリ５０の次インデックス情報５２に含まれるインデックスは、次に実行される条件エントリ５０を示すインデックスに替えて、次に実行される条件エントリ５０のインデックスと、現在実行している条件エントリ５０のインデックスとの差分としてもよい。例えば、インデックス選択器１７と、インデックス記憶部１１との間に加算器を設けることにより実現できる。このとき、無効なインデックスとして“０”を用いればインデックスは変わらないので、上記の説明と同等の機能の条件選択装置を実現できる。
【００３４】
また、インデックス記憶部１１に記憶されたインデックスと、アドレス計算部１２に記憶されたベースアドレスとを用いてアドレスを算出するのではなく、インデックス記憶部１１が、条件エントリ５０が記憶されている領域を示すアドレスそのものを記憶するようにしてもよい。このとき、条件エントリ５０の次インデックス情報５２に含まれるインデックスは、当該条件エントリ５０が記憶されている領域を示すアドレスと、次に実行される条件エントリ５０が記憶されている領域を示すアドレスとの差分を示すようにしてもよい。更に、アドレス計算部１２は、インデックス記憶部１１に記憶されているアドレスに、次インデックス情報５２により示される差分を加算することにより、次に実行する条件エントリ５０を記憶している領域を示すメモリアドレスを算出するようにしてもよい。
【００３５】
また、比較器１６の比較の条件は「＜」ではなく、「＝」や「＞」や「≦」など他の比較演算を行うよう構成してもよい。また、条件エントリ５０の条件情報５１にレジスタ番号ではなく即値を格納し、２個のレジスタ値の比較ではなく１個のレジスタ値と即値の比較を行うように構成してもよい。この場合、条件エントリ５０に含まれる条件情報５１に、比較演算を選択する情報や、レジスタ値と比較対象になる即値が含まれるようにしてもよい。
また、条件情報５１は、３個以上のレジスタを示す情報を含み、複数のレジスタ値を用いた条件判定を示すようにしてもよい。例えば、ｒＸ，ｒＹ，ｒＺのレジスタを示す情報が条件情報５１に含まれているとき、「ｒＸ＜（ｒＹ＋ｒＺ）」を評価するようにしてもよい。
【００３６】
また、比較演算の種類は、固定するのではなく、条件エントリ５０の条件情報５１に比較演算の種類も含めることで、条件選択装置１の動作時に比較演算の種類を動的に変更しながら比較するようにしてもよい。また、条件情報５１に、レジスタ同士の比較か、レジスタと即値の比較かを指定する情報を含めるようにしてもよい。
【００３７】
なお、比較結果により二者択一で選択するのではなく、複数個の中から次インデックスを選択するよう構成してもよい。例えば、ｒＸとｒＹとを比較し、「ｒＸ＜ｒＹ」、「ｒＸ＝ｒＹ」、及び「ｒＸ＞ｒＹ」の３つの条件に対応する次インデックスうちいずれか１つを選択するようにしてもよい。一般的に、比較器は、ｒＸ−ｒＹの減算を行い、減算におけるゼロフラグや符号フラグなどを元に大小判定を行う。このため、上述の３個の条件に対応する次インデックスから、成立する条件に対応する次インデックスを選択するときも１回の減算のみで対応することができる。このように、比較結果に応じて設定されるフラグを組み合わせて条件を評価することにより、３分木以上の木構造の処理にも対応することができる。
【実施例１】
【００３８】
次に、本発明の実施形態における具体的な実施例について説明する。以降、図３に示す処理を行う場合を例にして説明する。前述の通り、図３に示す処理は、図２に示すＣプログラムに相当する処理である。
【００３９】
図９は、図３の処理で使用する条件エントリテーブル２２の例を示す図である。ここでは、メモリのアドレスＬＵＴ０（記号アドレス）からインデックス「０」からインデックス「１４」の順に１５個の条件エントリが記憶されている場合について説明する。
同図に示すように、各条件エントリは、図５に示した構成である。また、図９には、条件エントリテーブルと、各条件エントリに対応する条件情報の意味が記述されている。例えば、インデックス「３」の条件エントリには、Ｔｉｄｘ「９」、Ｆｉｄｘ「１０」、ｒＸ「ｒ１」、及びｒＹ「ｒ０」が対応付けて記憶されており、意味「ｖｘ＜０」が対応している。
【００４０】
図１０は、本実施例におけるレジスタ番号と、レジスタ番号に対応付けられた変数（意味）と、レジスタ番号に対応するレジスタに記憶されている値との対応を示す図である。例えば、レジスタ番号ｒ６のレジスタは、ｔｇ６７という変数に対応しており、記憶している値が“４００”である。また、レジスタ番号ｒ４のレジスタは、ｓｙという変数に対応しており、記憶している値が“６７”である。
図９に戻って、条件エントリテーブルの一番上の条件エントリ（インデックス：０）は、レジスタ番号ｒＸがｒ６、レジスタ番号ｒＹがｒ４であり、これは「ｒ６＜ｒ４」すなわち「ｔｇ６７＜ｓｙ」という図３の条件３０１を表している。
【００４１】
図３に示す木構造の処理は、深さ４の処理である。条件選択装置は木構造の根（ＲＯＯＴ）から葉（ＬＥＡＦ）に到達するまで条件判定を繰り返す動作を行う。このため、深さ４の木構造の処理に対して、４回の条件判定が行われる。
【００４２】
図１１は、条件選択装置を用いて図３の処理を行うときの最初のステップ（最初の条件選択処理）を示す図である。ここで、インデックス記憶部１１中のインデックスレジスタ１１２の内容は“０”で初期化されており、アドレス計算部１２中のベースアドレスレジスタ１２１にはアドレスＬＵＴ０（図９）が格納されているものとする。なお、これは図３に示す木構造の根３０１についての条件判定処理に相当する。まず、アドレス計算部１２は、ベースアドレスレジスタ１２１の値とインデックスレジスタ１１２の値を加算し、アドレス“ＬＵＴ０＋０”を算出する。
【００４３】
次に、メモリアクセス部１３は、算出されたアドレス“ＬＵＴ０＋０”に対応する条件エントリをメモリ２１から読み出す。図９に示すように、アドレス“ＬＵＴ０＋０”に対応する条件エントリ５０の条件情報により示されるｒＸとｒＹは、それぞれレジスタ番号ｒ６とｒ４である。そして、条件エントリ解析部１４は、取得された条件エントリから２つのレジスタ番号ｒ６及びｒ４を取り出し、レジスタアクセス部１５が当該レジスタ番号に対応するレジスタ値を読み出す。
【００４４】
続いて、比較器１６が、レジスタアクセス部１５により読み出されたレジスタ番号ｒ６（＝ｔｇ６７）のレジスタ値である“４００”と、レジスタ番号ｒ４（＝ｔｇ２２）のレジスタ値である“６７”とを比較する。このとき、「４００＜６７（ｔｇ６７＜ｓｙ）」についての比較結果は偽となる。そこで、インデックス選択器１７は、条件エントリ解析部１４から入力された次インデックス情報のうち次インデックスＦｉｄｘ（＝２）を選択し、インデックス記憶部１１に出力する。
インデックス記憶部１１は、インデックス選択器１７から入力された次インデックスである“２”の有効性を判定する。インデックス“２”は、無効なインデックスを示す”−１”と異なるので、有効なインデックスであると判定され、インデックス記憶部１１においてインデックスレジスタ１１２がインデックス“２”により更新される。
【００４５】
図１２は、本実施例における第２のステップ（２回目の条件選択処理）を示す図である。同図に示す動作は、図３に示す木構造の頂点３０３に相当する。インデックスレジスタ１１２の値が“２”に更新され、アドレス計算部１２によりアドレス“ＬＵＴ０＋２”が算出され、対応する条件エントリ５０が読み出される。
図９に示すように、アドレス“ＬＵＴ０＋２”に対応する条件エントリ５０の条件情報５１により示されるｒＸとｒＹは、それぞれレジスタ番号ｒ４とｒ５である。レジスタアクセス部１５は、レジスタ番号ｒ４に対応するレジスタ値である“６７”と、レジスタ番号ｒ５に対応するレジスタ値である“１２０”とそれぞれを読み出す。
【００４６】
そして、比較器１６は、読み出されたレジスタ値により、「６７＜１２０（ｓｙ＜ｔｇ２２）」という比較を行い、真という比較結果をインデックス選択器１７に出力する。インデックス選択器１７は、条件エントリ解析部１４から入力された次インデックスのうち、比較結果「真」に対応するＴｉｄｘ “３”を選択し、選択したインデックス”３”をインデックス記憶部１１に出力する。インデックス“３”も有効なインデックスであるので、インデックス記憶部１１において、インデックスレジスタ１１２が次インデックスＴｉｄｘ（インデックス“３”）により更新される。
【００４７】
図１３は、本実施例における第３のステップ（３回目の条件選択処理）を示す図である。同図に示す動作は、図３に示す木構造の頂点３０４に相当する。インデックスレジスタ１１２の値が“３”となったので、アドレス計算部１２によりアドレス“ＬＵＴ０＋３”が算出され、対応する条件エントリが読み出される。
図９に示すように、アドレス“ＬＵＴ０＋３”に対応する条件エントリ５０の条件情報５１により示されるｒＸとｒＹは、それぞれレジスタ番号ｒ１とｒ０である。レジスタアクセス部１５は、レジスタ番号ｒ１に対応するレジスタ値である“３２”と、レジスタ番号ｒ０に対応するレジスタ値である“０”とそれぞれを読み出す。
【００４８】
そして、比較器１６は、読み出されたレジスタ値により、「３２＜０（ｖｘ＜０）」という比較を行い、偽という比較結果をインデックス選択器１７に出力する。インデックス選択器１７は、条件エントリ解析部１４から入力された次インデックスのうち、比較結果「偽」に対応するＦｉｄｘである“１０”を選択し、選択したインデックス”１０”をインデックス記憶部１１に出力する。インデックス“１０”も有効なインデックスであるので、インデックス記憶部１１において、インデックスレジスタ１１２が次インデックスＦｉｄｘ（インデックス“１０”）により更新される。
【００４９】
図１４は、本実施例における第４のステップ（４回目の条件選択処理）を示す図である。同図に示す動作は、図３の木構造の処理における葉３１４の部分に相当する。すなわち、これ以上の条件判定は不要であり、比較結果に関わらず次インデックスとして“−１”が選択される。インデックス“−１”は、無効なインデックスであるので、インデックス記憶部１１において、インデックスレジスタ１１２は、更新されずに “１０”を記憶している状態のままである。
【００５０】
最後に、インデックスレジスタ１１２の値を用いて図３の処理の出力値を取得する。
図１５は、本実施例における出力値のテーブルの例を示す図である。出力値は、インデックスレジスタ１１２の値と対応しており、メモリのアドレスＳＥＣ（記号アドレス）から順に１５個格納されている。アドレスＳＥＣと、インデックスレジスタ１１２の値を加算したアドレスにメモリアクセスすることにより、出力値を得ることができる。
条件選択装置１の４回目の条件選択処理の終了時には、インデックスレジスタ１１２が“１０”であった。これに対応する出力値は、アドレス“ＳＥＣ＋１０”に格納されている“４”である。これは、図３の木構造の処理における葉（ノード）３１４に相当する出力値である。
【００５１】
図１６は、本実施例における条件選択装置１を用いたアセンブリプログラム例を示す図である。また、図１７は、図１６に示したプログラムを実行するプロセッサ３の例を示す図である。図１７に示すプロセッサ３は、条件選択装置１と算術・論理演算部２１１とロード・ストア演算部２１２とを含む演算ユニット２１０と、レジスタファイル２３と、プロセッサ制御部２２０と、から構成される。プロセッサ３はプロセッサ制御部２２０を用いてメモリ２１からプログラムを読み込み、命令毎に適切な演算ユニット２１０を用いて演算を行う。例えば、加算命令や減算命令は算術・論理演算部２１１を用い、ロード命令やストア命令はロード・ストア演算部２１２を用いて演算を行う。
演算ユニット２１０はレジスタファイル２３と接続されており、レジスタファイル２３から入力データを読み込み、演算結果をレジスタファイル２３に書き込む。
【００５２】
図１６において、ｓｅｔｂａ命令は、アドレス計算部１２のベースアドレスを設定する命令であり、ｓｅｔｃｎｔ命令は、インデックス記憶部１１（図１を参照）のインデックスレジスタを設定する命令である。ｃｎｄｓｅｌ命令は、条件選択装置１による条件選択処理を実行させる命令であり、ｌｄ命令はメモリ２１からのロード命令である。
また、オペランドに記載されているＬＵＴ０は、条件エントリテーブル２２を示すアドレスを表している。ＳＥＣは、出力値のテーブルを示すアドレスを表している。Ｃｎｔは、インデックス記憶部１１のインデックスレジスタ１１２の値を表している。
【００５３】
図１６に示すプログラムでは、１行目において予めベースアドレスとしてアドレスＬＵＴ０を設定している。そして、２行目において、インデックスレジスタ１１２を“０”で初期化し、３行目から６行目のｃｎｄｓｅｌ命令により条件選択装置１を４回動作させている。最後に、ロード命令を用いて出力値の記憶されている領域を示すアドレスＳＥＣと、インデックスレジスタ１１２の値Ｃｎｔとにより指定されるアドレスから出力値をロードし、変数ｒｅｓに格納している。なお、図１６に示すアセンブリプログラムにおいて、４つのｃｎｄｓｅｌ命令が用いられているのは、処理対象を示す２分木の深さが４であることに対応している。したがって、処理対象を示す２分木の深さに応じて、用いられるｃｎｄｓｅｌ命令の数が決定される。
【００５４】
本実施形態において、ベースアドレスの設定はプログラムの最初に一度行えばよいため、図１６のプログラムは、図３の木構造の処理を２行目から７行目の６命令で実行できる。また、図３に示した木構造により表されるプログラムの処理において、分岐命令を必要とせず、そのため、分岐ペナルティも発生しない。
図４に示したプログラムを実行する場合、最もサイクル数が多いとき、１８サイクル必要であった処理を、ｃｎｄｓｅｌ命令が１サイクルで実行できるとすると、条件選択装置１を用いることで６サイクルに短縮できる。図４に示したプログラムは、最も少ない場合で、６命令と１回の分岐（ｊｍｐ）の実行が必要であり、その実行に最低８サイクルを必要とするので、条件選択装置１を用いたプロセッサ３は、常に実行ステップ数を削減できることがわかる。
【００５５】
Ｎ回の条件判定が含まれる深さｌｏｇ２（Ｎ）の大規模な木構造の処理において、一般的なＲＩＳＣプロセッサでは１回の条件判定につき比較命令と分岐命令と分岐ペナルティが必要であるため最悪「４ｌｏｇ２（Ｎ）＋２」サイクルを必要とするのに対して、本発明による条件選択装置１では「ｌｏｇ２（Ｎ）＋２」サイクルにより実行することができる。したがって、条件選択装置１は、複雑な分岐条件を含み木構造により表される処理を実行する際に、その実行サイクル数を削減することができる。
【００５６】
また、ｃｎｄｓｅｌ命令の実行に２サイクル必要であるとすると図１６のプログラムの実行には、１０サイクル必要となる。しかしながら、図３の木構造のどの葉も等確率で実行されると仮定したとき、一般的なＲＩＳＣプロセッサでは、平均１４．１２５サイクル必要であるのに対し、条件選択装置１を用いたプロセッサ３では常に１０サイクルで実行することができ、条件選択装置１は、複雑な分岐条件を含み木構造により表される処理の実行において、平均実行サイクル数を削減できることがわかる。
【００５７】
ところで、条件付実行命令を用いれば分岐ペナルティを削減することができるが、プログラムのすべての命令を実行する必要があるため、実行ステップ数は多くなる。例えば、条件付実行命令が使用できるとすると、図４のプログラムは分岐命令が不要となるため、条件付ｃｍｐ命令と条件付ｓｔ命令のみで書き直すことができる。これによりプログラムの長さは１６命令分となるが、全命令を実行する必要があるため１６サイクル必要となってしまう。すなわち、条件付実行命令を用いたとしても本発明による条件選択装置１の優位性は変わらない。
このように、条件選択装置１を用いることで、比較命令と分岐命令を繰り返すことなく木構造の条件判定処理を実行できる。分岐ペナルティも存在しないため、実行ステップ数を大幅に削減することができる。ここで、条件エントリの作成は、プログラムの作成時に行うものであり、プロセッサの実行時に動的に作成したり変更したりする必要はないので、実行時におけるオーバーヘッドを伴うことなく、実行サイクル数を削減することができる。
【００５８】
なお、本発明の条件選択装置１の適用用途は、３項演算子を用いた処理や２分木構造の処理に限るものではない。また、ｎ分木などの木構造の処理に限るものでもなく、条件判定と条件の選択を繰り返す処理であれば適用することができる。
また、インデックス記憶部１１が有する有効性判定器１１１の判定結果をレジスタなどの記憶手段に格納し、条件選択装置１の中や外から参照できるようにしてもよい。これにより、処理の木構造の深さだけ条件選択装置１を動作させるのではなく木構造の葉に達したときに条件選択装置１を停止させるようにしたり、木構造の深さが事前に不明な処理にも対応できるようにしたりすることができる。
【００５９】
なお、本発明の条件選択装置１をＶＬＩＷ（Very Long Instruction Word：超長命令語）型プロセッサに備えた場合、前記有効性判定結果を参照して無効になるまでループを繰り返す命令をｃｎｄｓｅｌ命令と並列に発行するようなプログラムとすることで、木構造の葉に達したときに条件選択装置１を停止させることができる。
また、ベースアドレスやインデックスをそれぞれ複数組格納できるようにし、条件選択装置１の動作時にそれらを指定して動作させられるように構成してもよい。これにより、複数の処理を繰り返して行う場合にもベースアドレスなどの再設定を行わなくてよいため、実行ステップ数を増加させずに対応することができる。
また、条件エントリを記憶させる場所はメモリではなく、汎用レジスタファイルや専用のレジスタファイルであってもよい。また、条件エントリの条件情報に含まれるレジスタ番号は、汎用レジスタファイルのレジスタ番号ではなく、専用のレジスタファイルのレジスタ番号であったり、特殊なレジスタやプロセッサの入力ポートを示す番号であったりしてもよい。
【００６０】
また、図１８に示したように、条件エントリ記憶部１８を追加した条件選択装置２の構成にしてもよい。条件選択装置２を用いるプロセッサでは、条件エントリ記憶部１８に格納された条件エントリ（次インデックス情報）で示されるレジスタ番号に対してレジスタアクセスを行い、アドレスを算出し、メモリアクセスを行うため、一般のロード命令のアドレス計算が複雑になったロード命令と扱うことができる。すなわち、条件選択装置により実行されるｃｎｄｓｅｌ命令は、ロード命令と同様の動作タイミングにより動作するので、ｃｎｄｓｅｌ命令を実行するプロセッサを実現することは容易である。
図１９は、図１８に示した条件選択装置２に対応するプログラム例を示す図である。ここで、ＣＮＤは条件選択装置２の条件エントリ記憶部１８を表す。図１６の場合と異なり、最初のｃｎｄｓｅｌ命令の前にＣＮＤ（条件エントリ記憶部１８）に、ラベルＬＵＴ０により示される条件エントリテーブル２２の最初の条件エントリ５０を読み込んでおく必要がある。これにより１命令だけ実行サイクル数が増加するが、最初に１回読み込むだけであり、本発明の優位性は変わらない。
【００６１】
なお、ここで本発明と上記実施形態の対応関係について補足して説明しておく。本発明における条件エントリは、図５に示す条件エントリ５０が対応し、本発明における条件情報は条件情報５１が対応し、本発明における次インデックス情報は次インデックス情報５２が対応する。また、本発明におけるメモリは、図１に示すメモリ２１が対応する。また、本発明における比較対象データ取得手段はレジスタアクセス部１５が対応し、本発明における比較手段は比較器１６が対応する。また、本発明におけるインデックス選択手段は、インデックス選択器１７が対応し、本発明におけるインデックス記憶手段は、インデックス記憶部１１が対応する。また、本発明における条件エントリ取得手段は、アドレス計算部１２とメモリアクセス部１３が対応し、本発明におけるインデックス有効性判定手段は、図６に示す有効性判定器１１１が対応し、本発明におけるインデックス保持手段は、インデックスレジスタ１１２が対応する。
【００６２】
また、図１７に示すプロセッサ３において、本発明におけるプロセッサ制御部はプロセッサ制御部２２０が対応し、本発明における条件選択装置は条件選択装置１が対応する。また、本発明における算術・論理演算部は、算術・論理演算部２１１が対応し、本発明におけるロード・ストア演算部は、ロード・ストア演算部２１２が対応し、本発明におけるレジスタファイルはレジスタファイル２３が対応する。
【００６３】
そして、図１に示す条件選択装置１は、条件選択処理を示す条件エントリであって、比較対象となる１個以上のデータを示す条件情報５１と、データの比較結果に応じて実行される条件エントリを示すインデックスを２個以上含む次インデックス情報５２とを有する条件エントリ５０を入力とし、条件情報により示される比較対象となるデータの比較結果に応じて、次インデックス情報に含まれるインデックスのうちいずれか１つを選択し、選択したインデックスにより指定される条件エントリ５０を新たな入力とする処理を順に実行する。
【００６４】
また、条件選択装置１は、条件選択処理を示す条件エントリであって比較対象となる１個以上のデータを示す条件情報５１と、データの比較結果に応じて実行される条件エントリが記憶されている領域を示すインデックスを２個以上含む次インデックス情報５２とを有する条件エントリが記憶されている領域を示すインデックスを記憶するインデックス記憶部１１と、インデックス記憶部１１に記憶されているインデックスにより条件エントリ５０を外部から読み出すアドレス計算部１２及びメモリアクセス部１３と、メモリアクセス部１３により読み出された条件エントリ５０に含まれる条件情報５１により示されるデータを外部から読み出すレジスタアクセス部１５と、レジスタアクセス部１５により読み出されたデータを比較する比較器１６と、比較器１６の比較結果に応じて、読み出された条件エントリ５０の次インデックス情報５２に含まれるインデックスからいずれか１つを選択し、選択したインデックスをインデックス記憶部１１に記憶させるインデックス選択器１７とを備える構成とした。
【００６５】
このような構成により、メモリアクセス部１３が、インデックス記憶部１１に記憶されたインデックスにより指定される領域から条件エントリ５０を読み出し、レジスタアクセス部１５が、読み出した条件エントリ５０に含まれる条件情報５１により示されるデータを読み出す。比較器１６が読み出したデータを予め定められた比較演算に基づいて比較する。そして、インデックス選択器１７が、このデータの比較結果を基に、条件エントリ５０中の次インデックス情報５２から対応するインデックスを選択し、選択したインデックスによりインデックス記憶部１１を更新する。また、メモリアクセス部１３は、インデックス記憶部１１に保持したインデックスを基に、次に実行する条件エントリ５０を読み出す。
これにより、条件選択装置１においては、複雑な分岐条件を含む命令を実行する際に、分岐命令などによる制御ハザード（分岐ハザード）を生じさせることなく、条件の評価と、評価結果に基づく分岐とを併せて実行することができるので、実行ステップ数を削減することができる。このため、複雑な分岐条件を含む処理を効率的に実行することができる。また、パイプライン処理により高速化が図られたプロセッサにおいても、実行ステップ数を削減することができる。
【００６６】
また、条件選択装置１において、インデックス記憶部１１は、インデックス選択器１７により選択されたインデックスが無効であった場合に記憶するインデックスを更新しないように構成される。
これにより、条件エントリにおいて、次インデックス情報に無効なインデックスを設定することにより、最終結果となるインデックスを記憶させたまま、条件エントリ５０により構成される実行ルーチンを終了させることができる。
【００６７】
また、条件選択装置１において、次インデックス情報５２に含まれるインデックスは、複数の条件エントリ５０が記憶されている領域を示すベースアドレスに対する差分を示す情報である。このとき、アドレス計算部１２が次インデックス情報５２に含まれるインデックスと、ベースアドレスとから次に実行する条件エントリ５０を記憶している領域のアドレスを算出し、メモリアクセス部１３が算出されたアドレスから次に実行する条件エントリ５０を読み出す。
このような構成の条件選択装置１においては、次の条件エントリのメモリアドレスを、ベースアドレスとインデックスとの加算により設定する。
これにより、条件エントリのメモリアドレスを指定する際に、ベースアドレスに対するインデックス（インデックス修飾）によりアドレス指定が行える。このため、ベースアドレスを変更することで条件エントリテーブルを切り替えることができ、プログラムの作成を容易にすることができる。
【００６８】
また、条件選択装置１において、次インデックス情報５２に含まれるインデックスは、次に実行される条件エントリ５０が記憶されている領域を示すインデックスと、現在実行している条件エントリ５０が記憶されている領域を示すインデックスとの差分である。このとき、インデックス記憶部１１は、インデックス選択器１７により選択されたインデックスと、記憶しているインデックスとから次に実行する条件エントリ５０に対応するインデックスを算出して記憶する。
これにより、次の条件エントリのインデックスを、現在実行している条件エントリのインデックスに対する相対アドレスとして容易に指定できる。例えば、多くの条件エントリを含む条件エントリテーブルを用いた場合、各条件エントリの記憶されている領域を示すためのインデックスを表すために要する記憶容量は大きくなるが、相対アドレスとして指定できるので、次インデックス情報を表すために要する記憶容量を小さくすることができる。これにより、プログラムのサイズを小さくすることができる。
【００６９】
また、条件選択装置１において、インデックス記憶部１１は、インデックス選択器１７により選択されたインデックスが有効であるか否かを判定する有効性判定器１１１と、有効性判定器１１１によりインデックスが有効であると判定された場合、選択されたインデックスを記憶するインデックスレジスタ１１２とを有している。  このような構成の条件選択装置１においては、例えば、“−１”を無効なインデックスとした場合、有効性判定器１１１が、入力される次インデックスを“−１”と比較し、等しくない場合にのみ有効信号をインデックスレジスタ１１２へ出力する。このように、インデックスレジスタ１１２は、有効信号を受け取ったときのみ次インデックスで自身の値を更新し、有効信号を受け取らなかったときには自身の値を保持するようにできる。
【００７０】
また、条件選択装置１において、条件情報５１は、データとして、少なくとも１つの即値即値を含む。
このような構成の条件選択装置１においては、条件エントリ５０の条件情報５１にレジスタ番号に加えて即値を格納して、１個のレジスタ値と、即値との比較を行うように構成してもよい。これにより、比較対象となるデータを指定する際の自由度が向上する。
【００７１】
また、条件選択装置１において、条件情報５１は、比較演算子の種類を示す情報を含む。
このような構成の条件選択装置１においては、比較演算の種類は固定するのではなく、条件エントリ５０の条件情報５１に比較演算の種類も含めることで、条件選択装置１の動作時に比較演算の種類を動的に変更しながら比較することができる。
【００７２】
また、図１８に示した条件選択装置２は、メモリアクセス部１３により外部から読み出された条件エントリ５０を記憶する条件エントリ記憶部１８を備え、レジスタアクセス部１５は、条件エントリ記憶部１８に記憶されている条件エントリ５０に含まれる条件情報５１により示されるデータを外部から読み出し、インデックス選択器１７は、条件エントリ記憶部１８に記憶されている条件エントリ５０に含まれる次インデックス情報５２に含まれるインデックスからいずれか１つを選択する
この条件選択装置２を用いるプロセッサでは、条件エントリ記憶部１８に格納された条件エントリが示すレジスタ番号に対してレジスタアクセスを行い、更新したインデックスを基にアドレスを算出し、メモリアクセスを行うため、一般のロード命令のアドレス計算が複雑な変形と捕らえることができる。すなわち、他の命令とのタイミングが同じとなるため、条件選択装置２を具備するプロセッサの実現をようにすることができる。
【００７３】
また、図１７に示すプロセッサ３は、プロセッサ内における命令の実行を制御するプロセッサ制御部２２０と、条件選択装置１（２）と、算術・論理演算処理を実行する算術・論理演算部２１１と、ロード・ストア処理を実行するロード・ストア演算部２１２と、条件選択装置１、算術・論理演算部２１１、及びロード・ストア演算部２１２との間でデータの入出力が行われるレジスタファイル２３とを具備する構成とする。
これにより、ＲＩＳＣ等のプロセッサにおいて、複雑な条件判定を含む処理を効率的に実行することが可能となる。
【００７４】
以上、本発明の実施の形態について説明したが、本発明の条件選択装置、及びプロセッサは、上述の図示例にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【産業上の利用可能性】
【００７５】
本発明は、ＲＩＳＣ等のプロセッサに適用できるほか、ディジタルカメラを含むディジタル信号処理装置における画像補正処理を含む一般的な処理の高速化といった用途にも適用できる。
【符号の説明】
【００７６】
１、２…条件選択装置
３…プロセッサ
１１…インデックス記憶部
１２…アドレス計算部
１３…メモリアクセス部
１４…条件エントリ解析部
１５…レジスタアクセス部
１６…比較器
１７…インデックス選択器
１８…条件エントリ記憶部
２１…メモリ
２２…条件エントリテーブル
２３…レジスタファイル
５０…条件エントリ
５１…条件情報
５２…次インデックス情報
１１１…有効性判定器
１１２…インデックスレジスタ
１２１…ベースアドレスレジスタ
１２２…加算器
２１０…演算ユニット
２１１…算術・論理演算部
２１２…ロード・ストア演算部
２２０…プロセッサ制御部
【図１】
2011221710.tif 000003
【図２】
2011221710.tif 000004
【図３】
2011221710.tif 000005
【図４】
2011221710.tif 000006
【図５】
2011221710.tif 000007
【図６】
2011221710.tif 000008
【図７】
2011221710.tif 000009
【図８】
2011221710.tif 000010
【図９】
2011221710.tif 000011
【図１０】
2011221710.tif 000012
【図１１】
2011221710.tif 000013
【図１２】
2011221710.tif 000014
【図１３】
2011221710.tif 000015
【図１４】
2011221710.tif 000016
【図１５】
2011221710.tif 000017
【図１６】
2011221710.tif 000018
【図１７】
2011221710.tif 000019
【図１８】
2011221710.tif 000020
【図１９】
2011221710.tif 000021