(57)【要約】 【課題】複数の分岐条件を含む分岐構造の処理に要する命令数およびサイクル数を低減可能な演算装置およびプログラムを提供する。【解決手段】実施形態の演算装置は、演算部と第１記憶部と読み出し部と出力部とを備える。演算部は、少なくとも２以上の分岐条件の各々について、当該分岐条件の判定を行い、当該分岐条件が成立した場合に行われる演算を実行する。第１記憶部は、判定の判定結果と、演算が有効であるか否かを示す演算情報とを対応付けて記憶する。読み出し部は、演算部の判定により得られた判定結果に対応する演算情報を第１記憶部から読み出す。出力部は、読み出し処理で読み出された演算情報によって有効であることが示された演算の結果を示す演算結果を出力する。【選択図】図１
2012252670.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも２以上の分岐条件の各々について、当該分岐条件の判定を行い、当該分岐条件が成立した場合に行われる演算を実行する演算部と、
前記判定の判定結果と、前記演算が有効であるか否かを示す演算情報とを対応付けて記憶する第１記憶部と、
前記演算部の前記判定により得られた前記判定結果に対応する前記演算情報を前記第１記憶部から読み出す読み出し処理を実行する読み出し部と、
前記読み出し処理で読み出された前記演算情報によって有効であることが示された前記演算の演算結果を出力する出力部と、を備える、
ことを特徴とする演算装置。
【請求項２】
前記第１記憶部は、複数の前記分岐条件をそれぞれが含む複数種類の分岐構造ごとに、前記判定結果と前記演算情報とが対応付けられたテーブルを格納し、
前記読み出し部は、前記分岐構造に対応する前記テーブルを用いて前記読み出し処理を実行する、
ことを特徴とする請求項１に記載の演算装置。
【請求項３】
複数の前記演算部の各々に何れかの前記分岐条件が対応付けられ、各前記演算部は、当該演算部に対応する前記分岐条件が成立した場合に行われる前記演算を実行し、
前記第１記憶部は、前記演算部ごとに、前記判定結果と、当該演算部で実行される前記演算が有効であるか否かを示す前記演算情報とが対応付けられたテーブルを格納し、
前記読み出し部は、前記演算部ごとに、前記判定結果に対応する前記演算情報を前記テーブルから読み出す、
ことを特徴とする請求項１に記載の演算装置。
【請求項４】
前記判定結果を記憶する第２記憶部と、
前記第２記憶部に記憶された複数の前記判定結果のうち、前記読み出し処理に用いられる前記判定結果を選択する選択部と、をさらに備え、
前記読み出し部は、選択された前記判定結果に対応する前記演算情報を前記第１記憶部から読み出す、
ことを特徴とする請求項１に記載の演算装置。
【請求項５】
少なくとも２以上の分岐条件の各々について、当該分岐条件の判定を行う第１ステップと、
前記分岐条件の各々について、当該分岐条件が成立した場合に行われる演算を実行する第２ステップと、
前記判定の結果を示す判定結果と、前記演算が有効であるか否かを示す演算情報とを対応付けて記憶する第１記憶部から、前記第１ステップで得られた前記判定結果に対応する前記演算情報を読み出す第３ステップと、
前記第３ステップで読み出された前記演算情報によって有効であることが示された前記演算の結果を示す演算結果を出力する第４ステップと、をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、演算装置およびプログラムに関する。
【背景技術】
【０００２】
プロセッサなどの演算装置が実行する命令の一種に分岐命令がある。分岐命令とは、所定の分岐条件を満たしているか否かを判定し、その判定結果に応じて次に実行すべき命令を決定する命令である。分岐命令を実行する場合、条件判定を終えるまで次に実行すべき命令は分からない。そのため、命令の実行と次の命令の取得を同時に行うプロセッサでは、分岐命令を実行中に、次の命令を正しく取得することができず（分岐ハザード）、プロセッサの性能が低下する。
【０００３】
分岐ハザードによる性能低下を抑制する技術として、プレディケーション（Predicated Execution）と呼ばれる技術が知られている。この技術では、分岐命令を実行中に、次の命令の候補を取得しておき、分岐命令の実行結果（判定結果）を示す分岐フラグをフラグ記憶装置に格納する。そして、次の命令の候補を投機的に実行し、その実行結果を、分岐フラグの真偽に応じて選択する。これにより、分岐ハザードによる性能低下が抑制される。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】J. R. Allen, K. Kennedy, C. Porterfield, and J. Warren: "Conversion of control dependence to data dependence" In Proceedings of the 10th ACM Symposium on Principles of Programming Languages, pＰ１77-189, January 1983
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の技術では、複数の分岐条件を含む分岐構造を処理する場合は、次の命令の候補の実行結果の何れを選択するかを確定するために、複数の分岐条件のそれぞれの判定結果を用いた論理演算が必要となる。これにより、実行する命令の数およびサイクル数が増大するので、プロセッサの性能を十分に向上させることができないという問題がある。本発明が解決しようとする課題は、複数の分岐条件を含む分岐構造の処理に要する命令数およびサイクル数を低減可能な演算装置およびプログラムを提供することである。
【課題を解決するための手段】
【０００６】
実施形態の演算装置は、演算部と第１記憶部と読み出し部と出力部とを備える。演算部は、少なくとも２以上の分岐条件の各々について、当該分岐条件の判定を行い、当該分岐条件が成立した場合に行われる演算を実行する。第１記憶部は、判定の判定結果と、演算が有効であるか否かを示す演算情報とを対応付けて記憶する。読み出し部は、演算部の判定により得られた判定結果に対応する演算情報を第１記憶部から読み出す。出力部は、読み出し処理で読み出された演算情報によって有効であることが示された演算の結果を示す演算結果を出力する。また、実施形態のプログラムは、少なくとも２以上の分岐条件の各々について、当該分岐条件の判定を行う第１ステップと、分岐条件の各々について、当該分岐条件が成立した場合に行われる演算を実行する第２ステップと、判定の結果を示す判定結果と、演算が有効であるか否かを示す演算情報とを対応付けて記憶する第１記憶部から、第１ステップで得られた判定結果に対応する演算情報を読み出す第３ステップと、第３ステップで読み出された演算情報によって有効であることが示された演算の結果を示す演算結果を出力する第４ステップと、をコンピュータに実行させるためのプログラムである。
【図面の簡単な説明】
【０００７】
【図１】実施形態に係る演算装置のブロック図。
【図２】分岐構造の一例を示す図。
【図３】テーブルの構成例を示す図。
【図４】分岐処理で実行される命令の一例を示す図。
【図５】対比例における分岐処理で実行される命令の一例を示す図。
【図６】変形例に係る演算装置のブロック図。
【図７】変形例に係るテーブルの構成例を示す図。
【図８】変形例に係るテーブルの構成例を示す図。
【発明を実施するための形態】
【０００８】
以下、添付図面を参照しながら、本発明に係る演算装置およびプログラムの実施の形態を詳細に説明する。図１は、本実施形態に係る演算装置１００の概略構成例を示すブロック図である。この演算装置１００は、複数の分岐条件を含む分岐構造を処理する分岐処理を実行する半導体装置である。図１に示すように、演算装置１００は、データ記憶装置１と、制御情報記憶装置２と、制御装置３と、複数の演算ユニット４ａ〜４ｄと、第２記憶部５と、フラグセレクタ６と、第１記憶部７と、読み出し部８と、演算情報セレクタ９と、出力セレクタ１０とを備える。なお、各演算ユニット４ａ〜４ｄを区別する必要が無い場合は、単に演算ユニット４と表記する。
【０００９】
データ記憶装置１には、各演算ユニット４で実行される処理に必要なデータ（「入力データ」と呼ぶ）が格納される。入力データは、外部装置１１から供給される。制御情報記憶装置２には、分岐処理の実行に必要な各種の制御情報が格納される。各種の制御情報は、外部装置１１から供給される。
【００１０】
制御装置３は、演算ユニット４、フラグセレクタ６および演算情報セレクタ９の各々の動作を制御する。本実施形態では、制御装置３は、制御情報記憶装置２に格納された各種の制御情報を読み出し、その読み出した制御情報を、演算ユニット４、フラグセレクタ６および演算情報セレクタ９へ転送することで、これらの動作を制御する。図１に示すように、各演算ユニット４には演算制御情報が供給され、フラグセレクタ６にはフラグ選択情報が供給され、演算情報セレクタ９にはテーブル選択情報が供給される。
【００１１】
演算ユニット４ａ〜４ｄの各々には、分岐処理の対象となる分岐構造に含まれる複数の分岐条件のうちの何れかが対応付けられ、各演算ユニット４は、制御装置３の制御の下、当該演算ユニット４に対応する分岐条件に関する条件判定を実行する。また、各演算ユニット４は、制御装置３の制御の下、当該演算ユニット４に対応する分岐条件が成立した場合に行われる演算を実行する。
【００１２】
いま、図２に例示される分岐構造が分岐処理の対象である場合を想定する。図２に示す分岐構造には、４つの分岐条件が含まれる。図２の例では、第１番目の分岐条件Ｉ１（if(x)）は、ｘが０ではないことである。そして、第１番目の分岐条件Ｉ１が成立した場合は、入力値ｂに１を加える演算が実行されることが示されている。第２番目の分岐条件Ｉ２（else if(y)）は、第１番目の分岐条件が不成立であって、かつ、ｙが０ではないことである。そして、第２番目の分岐条件Ｉ２が成立した場合は、入力値ｂに２を加える演算が実行されることが示されている。第３番目の分岐条件Ｉ３（else if(z)）は、第１番目の分岐条件Ｉ１および第２番目の分岐条件Ｉ２が不成立であって、かつ、ｚが０ではないことである。そして、第３番目の分岐条件Ｉ３が成立した場合は、入力値ｂに３を加える演算が実行されることが示されている。第４番目の分岐条件Ｉ４（else）は、第１番目〜第３番目の各々の分岐条件Ｉ１〜Ｉ３が不成立であることである。そして、第４番目の分岐条件Ｉ４が成立した場合は、入力値ｂに４を加える演算が実行されることが示されている。
【００１３】
ここでは、演算ユニット４ａには、第１番目の分岐条件Ｉ１が対応付けられ、演算ユニット４ｂには、第２番目の分岐条件Ｉ２が対応付けられ、演算ユニット４ｃには、第３番目の分岐条件Ｉ３が対応付けられ、演算ユニット４ｄには、第４番目の分岐条件Ｉ４が対応付けられる。また、各演算ユニット４は、当該演算ユニット４に対応する分岐条件が成立した場合に行われる演算を実行する。また、図２に示す分岐構造を処理する分岐処理が実行される期間は、サイクルＡと、次のサイクルＢとに分けられる。サイクルＡにおいて、各演算ユニット４は条件判定を実行する一方、サイクルＢにおいて、各演算ユニット４は演算を実行する。より具体的には、以下のとおりである。
【００１４】
演算ユニット４ａには、入力データとして、ｘおよびｂのそれぞれの値がデータ記憶装置１から供給される。条件判定を行うサイクルＡにおいて、演算ユニット４ａは、入力されたｘの値が０であるか否かを判定し、その判定結果を示す判定フラグを第２記憶部５へ書き込む。ｘの値が０でない場合は、判定フラグは「１」に設定される一方、ｘの値が０である場合は、判定フラグは「０」に設定される。そして、次のサイクルＢにおいて、ｂ＋１の演算を行い、データ記憶装置１への書き込みアドレスを指定して、その演算結果を出力セレクタ１０へ供給する。
【００１５】
演算ユニット４ｂには、入力データとして、ｙおよびｂのそれぞれの値が供給される。前述のサイクルＡにおいて、演算ユニット４ｂは、入力されたｙの値が０であるか否かを判定し、その判定結果を第２記憶部５へ書き込む。ｙの値が０でない場合は、判定フラグは「１」に設定される一方、ｙの値が０である場合は、判定フラグは「０」に設定される。そして、次のサイクルＢにおいて、演算ユニット４ｂは、ｂ＋２の演算を行い、データ記憶装置１への書き込みアドレスを指定して、その演算結果を出力セレクタ１０へ供給する。
【００１６】
演算ユニット４ｃには、入力データとして、ｚおよびｂのそれぞれの値が供給される。前述のサイクルＡにおいて、演算ユニット４ｃは、入力されたｚの値が０であるか否かを判定し、その判定結果を第２記憶部５へ書き込む。ｚの値が０でない場合は、判定フラグは「１」に設定される一方、ｚの値が０である場合は、判定フラグは「０」に設定される。そして、次のサイクルＢにおいて、ｂ＋３の演算を行い、データ記憶装置１への書き込みアドレスを指定して、その演算結果を出力セレクタ１０へ供給する。
【００１７】
演算ユニット４ｄには、入力データとして、ｂの値が供給される。演算ユニット４ｄは、前述のサイクルＡにおいては何もせずに、次のサイクルＢにおいてｂ＋４の演算を行い、データ記憶装置１への書き込みアドレスを指定して、その演算結果を出力セレクタ１０へ供給する。
【００１８】
図１に示すフラグセレクタ６は、制御装置３から供給されるフラグ選択情報に従って、第２記憶部５に格納された判定フラグを読み出す。フラグ選択情報は、フラグセレクタ６が読み出すべき判定フラグを指定する情報である。ここでは、一例として、フラグ選択情報は、前述のサイクルＡにおいて演算ユニット４ａ〜４ｃによって第２記憶部５に書き込まれた３つの判定フラグを指定する情報である。
【００１９】
第１記憶部７は、各演算ユニット４による判定の結果を示す判定結果と、各演算ユニット４による演算が有効であるか否かを示す演算情報とを対応付けて記憶する。本実施形態では、第１記憶部７は、それぞれが複数の分岐条件を含む複数種類の分岐構造ごとに、判定結果と演算情報との対応関係を示すテーブル１２を記憶する。本実施形態では、第１記憶部７は、３種類のテーブル１２ａ〜１２ｃを記憶する。なお、各テーブル１２ａ〜１２ｃを区別する必要が無い場合は、単にテーブル１２と表記する。図３は、ある分岐構造に対応するテーブル１２ａの一例を示す図である。ここでは、テーブル１２ａを例に挙げてその構成を説明するが、他のテーブル１２ｂおよび１２ｃも同様の構成である。なお、本実施形態では、テーブル１２の内容は、外部装置１２によって変更可能である。外部装置１２は、テーブル１２の内容を、処理すべき分岐構造に応じた内容に予め書き換えておくことができる。
【００２０】
図３に示すように、テーブル１２ａでは、フラグセレクタ６で選択される３つの判定フラグの値で識別されるエントリＩＤと、各演算ユニット４ａ〜４ｄによる演算の各々について、当該演算が有効であるか否かを示す演算情報とが対応付けられている。例えば演算ユニット４ａの判定により得られた判定フラグが「０」、演算ユニット４ｂの判定により得られた判定フラグが「１」、演算ユニット４ｃの判定により得られた判定フラグが「１」である場合は、エントリＩＤは、この順に並べた「０１１」の左端にさらに「０」を付加した２進数表記「００１１」で表され、その値は「３」となる。図３の例では、エントリＩＤは、「０」〜「１５」のうちの何れかの値をとり得る。なお、これに限らず、エントリＩＤの決め方は任意である。要するに、エントリＩＤは、各演算ユニット４の判定結果に応じて識別されるものであればよい。
【００２１】
また、図３に示すように、演算情報は４ビットで表される。左から数えて第１番目のビットは演算ユニット４ａに対応し、当該第１番目のビットが「１」の場合は、演算ユニット４ａによる演算が有効であることを示し、当該第１番目のビットが「０」の場合は、演算ユニット４ａによる演算が無効であることを示す。また、演算情報における第２番目のビットは演算ユニット４ｂに対応し、当該第２番目のビットが「１」の場合は、演算ユニット４ｂによる演算が有効であることを示し、当該第２番目のビットが「０」の場合は、演算ユニット４ｂによる演算が無効であることを示す。また、演算情報における第３番目のビットは演算ユニット４ｃに対応し、当該第３番目のビットが「１」の場合は、演算ユニット４ｃによる演算が有効であることを示し、当該第３番目のビットが「０」の場合は、演算ユニット４ｃによる演算が無効であることを示す。さらに、演算情報における第４番目のビットは演算ユニット４ｄに対応し、当該第４番目のビットが「１」の場合は、演算ユニット４ｄによる演算が有効であることを示し、当該第４番目のビットが「０」の場合は、演算ユニット４ｄによる演算が無効であることを示す。なお、これに限らず、演算情報の決め方は任意である。要するに、演算情報は、各演算ユニット４による演算が有効であるか否かを示すものであればよい。
【００２２】
フラグセレクタ６は、フラグ選択情報に従って読み出した３つの判定フラグの値で識別されるエントリＩＤを、読み出し部８へ供給する。読み出し部８は、テーブル１２ごとに、フラグセレクタ６から供給されたエントリＩＤに対応する演算情報を読み出す読み出し処理を実行する。読み出し部８は、読み出し処理によって読み出した３つの演算情報を演算情報セレクタ９へ供給する。
【００２３】
演算情報セレクタ９に供給されるテーブル選択情報は、第１記憶部７に格納された３つのテーブル１２ａ〜１２ｃのうちの何れかを指定する情報である。演算情報セレクタ９は、テーブル選択情報で指定されるテーブル１２から読み出された演算情報を選択し、その選択した演算情報を出力セレクタ１０へ供給する。
【００２４】
出力セレクタ１０は、演算情報セレクタ９から供給される演算情報によって有効であることが示された演算の結果を示す演算結果を選択（取得）し、その選択した演算結果を、データ記憶装置１のうち書き込みアドレスで特定される領域に書き込む。例えば、演算情報セレクタ９から供給された演算情報が「０１００」である場合、出力セレクタ１０は、演算ユニット４ｂによる演算結果を選択し、その選択した演算結果を、データ記憶装置１のうち書き込みアドレスで特定される領域に書き込む。データ記憶装置１は、出力セレクタ１０により書き込まれた演算結果を外部装置１１へ供給する。
【００２５】
次に、演算装置１００が実行する分岐処理の一例を具体的に説明する。ここでは、図２に示す分岐構造を処理する場合について説明する。この場合に実行される命令は、図４に示す７つの命令Ｃ１〜Ｃ７である。命令Ｃ１は、入力されたｘの値が０であるか否かの判定の実行を指示する命令であり、命令Ｃ２は、入力されたｙの値が０であるか否かの判定の実行を指示する命令であり、命令Ｃ３は、入力されたｚの値が０であるか否かの判定の実行を指示する命令である。
【００２６】
命令Ｃ４は、データ記憶装置１のレジスタｒ２に格納されたデータに１を加える演算の実行を指示する命令である。本実施形態では、レジスタｒ２にはｂの値が格納される。したがって、命令Ｃ４は、入力されたｂの値に１を加える演算の実行を指示する命令であると捉えることができる。また、命令Ｃ５は、データ記憶装置１のレジスタｒ２に格納されたデータに２を加える演算の実行を指示する命令である。命令Ｃ５は、入力されたｂの値に２を加える演算の実行を指示する命令であると捉えることができる。また、命令Ｃ６は、データ記憶装置１のレジスタｒ２に格納されたデータに３を加える演算の実行を指示する命令である。命令Ｃ６は、入力されたｂの値に３を加える演算の実行を指示する命令であると捉えることができる。さらに、命令Ｃ７は、データ記憶装置１のレジスタｒ２に格納されたデータに４を加える演算の実行を指示する命令である。命令Ｃ７は、入力されたｂの値に４を加える演算の実行を指示する命令であると捉えることができる。なお、図４に示す「；；」は、当該「；；」と、直前の「；；」との間に複数の命令が存在する場合は、それらの命令間には依存関係が無いことを示し、命令の数だけ演算ユニット４があれば、それらの命令を１サイクルで実行できることを示す。
【００２７】
一例として、ｘ＝０、ｙ＝１、ｚ＝３、ｂ＝２である場合を想定する。まず、条件判定を行うサイクルＡにおいて、制御装置３は、命令Ｃ１の実行を指示する演算制御情報を演算ユニット４ａに供給し、命令Ｃ２の実行を指示する演算制御情報を演算ユニット４ｂに供給し、命令Ｃ３の実行を指示する演算制御情報を演算ユニット４ｃに供給する。これにより、演算ユニット４ａは命令Ｃ１を実行する。この例では、ｘ＝０であるので、演算ユニット４ａによる判定の結果は偽となり、演算ユニット４ａは、「０」に設定した判定フラグを、第２記憶部５に書き込む。説明の便宜上、第２記憶部５のうち、演算ユニット４ａによる判定結果を示す判定フラグが格納される領域をフラグ番号０と呼ぶ。
【００２８】
また、演算ユニット４ｂは命令Ｃ２を実行する。この例では、ｙ＝１であるので、演算ユニット４ｂによる判定の結果は真となり、演算ユニット４ｂは、「１」に設定した判定フラグを、第２記憶部５に書き込む。説明の便宜上、第２記憶部５のうち、演算ユニット４ｂによる判定結果を示す判定フラグが格納される領域をフラグ番号１と呼ぶ。
【００２９】
さらに、演算ユニット４ｃは命令Ｃ３を実行する。この例では、ｚ＝３であるので、演算ユニット４ｃによる判定の結果は真となり、演算ユニット４ｃは、「１」に設定した判定フラグを、第２記憶部５に書き込む。説明の便宜上、第２記憶部５のうち、演算ユニット４ｃによる判定結果を示す判定フラグが格納される領域をフラグ番号２と呼ぶ。なお、演算ユニット４ｄは、サイクルＡにおいては何も行わない。
【００３０】
次に、サイクルＢにおいて、制御装置３は、命令Ｃ４の実行を指示する演算制御情報を演算ユニット４ａに供給し、命令Ｃ５の実行を指示する演算制御情報を演算ユニット４ｂに供給し、命令Ｃ６の実行を指示する演算制御情報を演算ユニット４ｃに供給し、命令Ｃ７の実行を指示する演算制御情報を演算ユニット４ｄに供給する。これにより、演算ユニット４ａは命令Ｃ４を実行する。ここでは、ｂの値は「２」であるので、演算ユニット４ａによる演算の結果は「３」となる。この例では、演算ユニット４ａは、データ記憶装置１への書き込みアドレスとしてaddressAを指定し、演算結果「３」を出力セレクタ１０へ出力する。
【００３１】
演算ユニット４ｂは命令Ｃ５を実行する。ここでは、ｂの値は「２」であるので、演算ユニット４ｂによる演算の結果は「４」となる。この例では、演算ユニット４ｂは、データ記憶装置１への書き込みアドレスとしてaddressAを指定し、演算結果「４」を出力セレクタ１０へ出力する。また、演算ユニット４ｃは命令Ｃ６を実行する。ここでは、ｂの値は「２」であるので、演算ユニット４ｃによる演算の結果は「５」となる。この例では、演算ユニット４ｃは、データ記憶装置１への書き込みアドレスとしてaddressAを指定し、演算結果「５」を出力セレクタ１０へ出力する。さらに、演算ユニット４ｄは命令Ｃ７を実行する。ここでは、ｂの値は「２」であるので、演算ユニット４ｄによる演算の結果は「６」となる。この例では、演算ユニット４ｄは、データ記憶装置１への書き込みアドレスとしてaddressAを指定し、演算結果「６」を出力セレクタ１０へ出力する。
【００３２】
また、サイクルＢにおいて、制御装置３は、第２記憶部５のうちフラグ番号０、１および２の各々に格納された判定フラグを選択することを示す選択情報をフラグセレクタ６へ供給する。これにより、フラグセレクタ６は、フラグ番号０、１および２の各々に格納された判定フラグを第２記憶部５から読み出し、その読み出した３つの判定フラグの値で識別されるエントリＩＤを読み出し部８へ供給する。この例では、フラグ番号０に格納された判定フラグは「０」、フラグ番号１に格納された判定フラグは「１」、フラグ番号２に格納された判定フラグは「１」であるので、エントリＩＤは、「００１１」の２進数表記で表され、その値は「３」となる。そして、読み出し部８は、テーブル１２ごとに、エントリＩＤ「３」に対応する演算情報を読み出す。
【００３３】
さらに、サイクルＢにおいて、制御装置３は、図２の分岐構造に対応するテーブル１２を選択することを示すテーブル選択情報を演算情報セレクタ９へ供給する。ここでは、図２の分岐構造に対応するテーブル１２は、図３のテーブル１２ａであるとする。これにより、演算情報セレクタ９は、テーブル１２ａから読み出された、エントリＩＤ「３」に対応する演算情報「０１００」（図３参照）を選択して出力セレクタ１０へ出力する。したがって、出力セレクタ１０は、演算ユニット４ｂの演算結果「６」を取得し、その取得した演算結果「６」を、データ記憶装置１のうちaddressAで特定される領域に書き込む。そして、データ記憶装置１は、addressAで特定される領域に書き込まれた演算結果「６」を、外部装置１１へ出力する。以上で、図２に例示された分岐構造を処理する分岐処理が終了する。
【００３４】
以上に説明したように、本実施形態では、第１記憶部７には、各演算ユニット４による判定結果で識別されるエントリＩＤと、演算情報とが対応付けられたテーブル１２が格納される。そして、複数の分岐条件を含む分岐構造を処理する場合において、演算装置１００は、各演算ユニット４による判定結果で識別されるエントリＩＤに対応する演算情報をテーブル１２から読み出し、その読み出した演算情報によって有効であることが示された演算の結果を示す演算結果を出力するので、複数の分岐条件を含む分岐構造を処理する場合における命令数およびサイクル数を低減できるという有利な効果を奏する。
【００３５】
ここで、前述のテーブル１２を用いずに、図２の分岐構造を処理する場合を想定する。この場合に実行される命令は、図５に示す１１個の命令Ｃ１１〜Ｃｂｂである。命令Ｃ１１は、入力されたｘの値が０であるか否かの判定の実行を指示する命令であり、判定の結果、ｘの値が０でない場合は、フラグＰ１は「１」、フラグＰ２は「０」にセットされる一方、ｘの値が０である場合は、フラグＰ１は「０」、フラグＰ２は「１」にセットされることを示す。命令Ｃ２２は、入力されたｙの値が０であるか否かの判定の実行を指示する命令であり、判定の結果、ｙの値が０でない場合は、フラグＰ３は「１」、フラグＰ４は「０」にセットされる一方、ｙの値が０である場合は、フラグＰ３は「０」、フラグＰ４は「１」にセットされることを示す。命令Ｃ３３は、入力されたｚの値が０であるか否かの判定の実行を指示する命令であり、判定の結果、ｚの値が０でない場合は、フラグＰ５は「１」、フラグＰ６は「０」にセットされる一方、ｚの値が０である場合は、フラグＰ５は「０」、フラグＰ６は「１」にセットされることを示す。
【００３６】
命令Ｃ４４は、図２の第２番目の分岐条件Ｉ２（第１番目の分岐条件Ｉ１が不成立であって、かつ、ｙが０でない）が成立するか否かの判定の実行を指示する命令である。より具体的には、フラグＰ２およびフラグＰ３の論理積の実行を指示する命令である。第１番目の分岐条件Ｉ１が不成立で、かつ、第２番目の分岐条件Ｉ２が成立する場合は、フラグＰ１＝０、フラグＰ２＝１、フラグＰ３＝１、フラグＰ４＝０となる。この場合、フラグＰ２およびフラグＰ３の論理積は「１」となり、フラグＰ７＝１、フラグＰ８＝０となる。すなわち、フラグＰ７＝１、フラグＰ８＝０の場合は、第２番目の分岐条件Ｉ２は成立すると判定される。一方、フラグＰ７＝０、フラグＰ８＝１の場合は、第２番目の分岐条件Ｉ２は成立しないと判定される。なお、命令Ｃ４４は、命令Ｃ１１および命令Ｃ２２の実行結果を用いるので、これらの命令と並列に実行することはできない。
【００３７】
命令Ｃ５５は、第１番目の分岐条件Ｉ１および第２番目の分岐条件Ｉ２の両方が不成立であるか否かの判定の実行を指示する命令である。より具体的には、フラグＰ２およびフラグＰ４の論理積の実行を指示する命令である。第１番目の分岐条件Ｉ１が不成立であって、かつ、第２番目の分岐条件Ｉ２も不成立であった場合は、フラグＰ１＝０、フラグＰ２＝１、フラグＰ３＝０、フラグＰ４＝１となる。この場合、フラグＰ２およびフラグＰ４の論理積は「１」となり、フラグＰ９＝１、フラグＰ１０＝０となる。すなわち、フラグＰ９＝１、フラグＰ１０＝０の場合は、第１番目の分岐条件Ｉ１および第２番目の分岐条件Ｉ２の両方が不成立であると判定される。一方、フラグＰ９＝０、フラグＰ１０＝1の場合は、第１番目の分岐条件Ｉ１および第２番目の分岐条件Ｉ２のうちの何れかが成立していると判定される。なお、命令Ｃ５５は、命令Ｃ１１および命令Ｃ２２の実行結果を用いるので、これらの命令と並列に実行することはできない。
【００３８】
命令Ｃ６６は、図５の第３番目の分岐条件Ｉ３（第１番目の分岐条件Ｉ１および第２番目の分岐条件Ｉ２の両方が不成立であって、かつ、ｚが０でない）が成立するか否かの判定の実行を指示する命令である。より具体的には、フラグＰ９およびフラグＰ５の論理積の実行を指示する命令である。第１番目の分岐条件Ｉ１および第２番目の分岐条件Ｉ２の両方が不成立で、かつ、第３番目の分岐条件Ｉ３が成立する場合は、フラグＰ９＝１、フラグＰ５＝１となる。この場合、フラグＰ９およびフラグＰ５の論理積は「１」となり、フラグＰ１１＝１、フラグＰ１２＝０となる。すなわち、フラグＰ１１＝１、フラグＰ１２＝０の場合は、第３番目の分岐条件Ｉ３が成立すると判定される。一方、フラグＰ１１＝０、フラグＰ１２＝１の場合は、第３番目の分岐条件Ｉ３は成立しないと判定される。なお、命令Ｃ６６は、命令Ｃ３３および命令Ｃ５５の実行結果を用いるので、これらの命令と並列に実行することはできない。
【００３９】
命令Ｃ７７は、図５の第４番目の分岐命令Ｉ４（第１番目の分岐条件Ｉ１、第２番目の分岐条件Ｉ２、および、第３番目の分岐条件Ｉ３が何れも不成立）が成立するか否かの判定の実行を指示する命令である。より具体的には、フラグＰ９およびフラグＰ６の論理積の実行を指示する命令である。第１番目の分岐条件Ｉ１、第２番目の分岐条件Ｉ２、および、第３番目の分岐条件Ｉ３の何れも不成立の場合は、フラグＰ９＝１、フラグＰ６＝１となる。この場合、フラグＰ９およびフラグＰ６の論理積は「１」となり、フラグＰ１３＝１、フラグＰ１４＝０となる。すなわち、フラグＰ１３＝１、フラグＰ１４＝０の場合は、第４番目の分岐条件Ｉ４が成立すると判定される。一方、フラグＰ１３＝０、フラグＰ１４＝１の場合は、第４番目の分岐条件Ｉ４は成立しないと判定される。なお、命令Ｃ７７は、命令Ｃ３３および命令Ｃ５５の実行結果を用いるので、これらの命令と並列に実行することはできない。
【００４０】
命令Ｃ８８は、データ記憶装置１のレジスタｒ２に格納されたデータに１を加える演算の実行を指示する命令である。命令Ｃ９９は、データ記憶装置１のレジスタｒ２に格納されたデータに２を加える演算の実行を指示する命令である。命令Ｃａａは、データ記憶装置１のレジスタｒ２に格納されたデータに３を加える演算の実行を指示する命令である。命令Ｃｂｂは、データ記憶装置１のレジスタｒ２に格納されたデータに４を加える演算の実行を指示する命令である。
【００４１】
この場合の分岐処理では、第１番目のサイクルにおいて命令Ｃ１１〜Ｃ３３が実行され、第２番目のサイクルにおいて命令Ｃ４４および命令Ｃ５５が実行され、第３番目のサイクルにおいて命令Ｃ６６および命令Ｃ７７が実行され、第４番目のサイクルにおいて命令Ｃ８８〜命令Ｃｂｂが実行される。つまり、分岐処理に必要な命令数は１１、サイクル数は４となる。
【００４２】
これに対して、本実施形態によれば、図２の分岐構造を処理する分岐処理に必要な命令数は７、サイクル数は２つで済むので、テーブル１２を用いずに分岐処理を実行する場合に比べて、命令数およびサイクル数を低減できるという利点がある。
【００４３】
なお、上述の実施形態において、演算装置１００で実行される各種プログラム（分岐処理用の制御プログラム等）を、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また当該各種プログラムを、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital Versatile Disk）等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供するように構成してもよい。
【００４４】
（変形例）
以上、本発明の実施形態を説明したが、この実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。以下に変形例を記載する。なお、以下に記載する変形例のうちの２以上を任意に組み合わせることもできる。
【００４５】
（変形例１）
上述の実施形態では、演算装置１００内に、外部装置１１から供給される各種の制御情報を、各演算ユニット４、フラグセレクタ６および演算情報セレクタ９へ転送するための制御情報記憶装置２および制御装置３が設けられているが、これに限らず、制御情報記憶装置２および制御装置３が演算装置１００内に設けられない構成であってもよい。例えば図６に示すように、外部装置１１が、各演算ユニット４、フラグセレクタ６および演算情報セレクタ９の各々に対して、制御情報を直接供給する構成であってもよい。要するに、制御情報に関する転送方法、生成方法、記憶方法などは任意である。
【００４６】
（変形例２）
上述の実施形態では、第１記憶部７に格納されるテーブル１２のデータは、書き換え可能であるが、これに限らず、第１記憶部７に格納されるテーブル１２のデータは、書き換え不可能であってもよい。また、第１記憶部７に記憶されるテーブル１２の数は任意である。例えば第１記憶部７は、ひとつのテーブル１２のみを格納し、当該ひとつのテーブル１２のデータは、処理対象の分岐構造に応じて書き換えられる構成であってもよい。この書き換えを行う主体は任意であり、外部装置１２が行ってもよいし、制御装置３が行ってもよい。また、第１記憶部７に格納されるテーブル１２が１つのみの場合、演算情報セレクタ９は不要となるので、構成が簡素化される。
【００４７】
（変形例３）
また、テーブル１２は、各演算ユニット４による判定結果と演算情報との対応関係を示すものであればよく、その構成は任意である。例えばテーブル１２は、図７に示す構成であってもよい。図７の構成では、演算情報は３ビットの２進数表記で表される。一例として、演算情報の値が「０」の場合（２進数表記で「０００」の場合）は、演算ユニット４ａによる演算が有効であることを示し、演算情報の値が「１」の場合（２進数表記で「００１」の場合）は、演算ユニット４ｂによる演算が有効であることを示し、演算情報の値が「２」の場合（２進数表記で「０１０」の場合）は、演算ユニット４ｃによる演算が有効であることを示し、演算情報の値が「３」の場合（２進数表記で「０１１」の場合）は、演算ユニット４ｄによる演算が有効であることを示す。
【００４８】
また、演算情報の値が「５」の場合（２進数表記で「１０１」の場合）は、演算ユニット４ａおよび演算ユニット４ｂのそれぞれによる演算が有効であることを示し、演算情報の値が「６」の場合（２進数表記で「１１０」の場合）は、演算ユニット４ａ、演算ユニット４ｂおよび演算ユニット４ｃのそれぞれによる演算が有効であることを示し、演算情報の値が「７」の場合（２進数表記で「１１１」の場合）は、演算ユニット４ａ、演算ユニット４ｂ、演算ユニット４ｃおよび演算ユニット４ｄのそれぞれによる演算が有効であることを示す構成であってもよい。
【００４９】
出力セレクタ１０は、１つの演算結果のみを選択することもできるし、書き込み先が異なる場合は、複数の演算結果を選択することもできるので、演算情報によって有効であることが示される演算の数は任意であり、１つに限られるものではない。
【００５０】
（変形例４）
また、上述の実施形態では、複数種類の分岐構造ごとに、当該分岐構造に対応するテーブル１２が設けられているが、これに限らず、例えば演算ユニット４ごとに、当該演算ユニット４に対応するテーブル１２が設けられる構成であってもよい。図８は、この構成の一例を示す図であり、図８の例では、演算ユニット４ａに対応するテーブル１２ａ２と、演算ユニット４ｂに対応するテーブル１２ｂ２と、演算ユニット４ｃに対応するテーブル１２ｃ２と、演算ユニット４ｄに対応するテーブル１２ｄ２とが設けられ、第１記憶部７（不図示）に格納される。各テーブル１２では、エントリＩＤと、当該テーブル１２に対応する演算ユニット４が実行する演算が有効であるか否かを示す１ビットの演算情報とが対応付けられている。
【００５１】
（変形例５）
第２記憶部５に記憶される判定フラグの数は、少なくとも２以上であればよく、その数は任意である。また、演算ユニット４の数に応じた効果を得るためには、演算ユニット４の数以上の判定フラグを第２記憶部５に格納しておくことが好ましい。また、第２記憶部５に記憶される判定フラグの数が、エントリＩＤの特定に必要なビット数と同一の場合は、フラグセレクタ６は不要となる。一方、第２記憶部５に記憶される判定フラグの数が、エントリＩＤの特定に必要なビット数と異なる場合は、重複も含めて必要な判定フラグを選択するためにフラグセレクタ６が必要となる。
【００５２】
（変形例６）
上述の実施形態では、演算ユニット４の数は４つであるが、これに限らず、演算ユニット４の数は任意であり、例えば演算ユニット４の数は１つのみであってもよい。要するに、少なくとも２以上の分岐条件の各々について、当該分岐条件の判定を行い、当該分岐条件が成立した場合に行われる演算を実行するための演算ユニット４が１以上設けられていればよい。
【００５３】
（変形例７）
上述の実施形態では、演算ユニット４による判定結果が真の場合は判定フラグが「１」に設定される一方、判定結果が偽の場合は判定フラグが「０」に設定されるが、これに限らず、例えば演算ユニット４による判定結果が真の場合は判定フラグが「０」に設定される一方、判定結果が偽の場合は判定フラグが「１」に設定されてもよい。
【符号の説明】
【００５４】
１  データ記憶装置
２  制御情報記憶装置
３  制御装置
４  演算ユニット
５  第２記憶部
６  フラグセレクタ
７  第１記憶部
８  読み出し部
９  演算情報セレクタ
１０  出力セレクタ
１１  外部装置
１２  テーブル
１００  演算装置
【図１】
2012252670.tif 000003
【図２】
2012252670.tif 000004
【図３】
2012252670.tif 000005
【図４】
2012252670.tif 000006
【図５】
2012252670.tif 000007
【図６】
2012252670.tif 000008
【図７】
2012252670.tif 000009
【図８】
2012252670.tif 000010