JP2012252670A - 演算装置およびプログラム - Google Patents
演算装置およびプログラム Download PDFInfo
- Publication number
- JP2012252670A JP2012252670A JP2011127130A JP2011127130A JP2012252670A JP 2012252670 A JP2012252670 A JP 2012252670A JP 2011127130 A JP2011127130 A JP 2011127130A JP 2011127130 A JP2011127130 A JP 2011127130A JP 2012252670 A JP2012252670 A JP 2012252670A
- Authority
- JP
- Japan
- Prior art keywords
- calculation
- unit
- branch
- flag
- determination
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Abstract
【課題】複数の分岐条件を含む分岐構造の処理に要する命令数およびサイクル数を低減可能な演算装置およびプログラムを提供する。
【解決手段】実施形態の演算装置は、演算部と第1記憶部と読み出し部と出力部とを備える。演算部は、少なくとも2以上の分岐条件の各々について、当該分岐条件の判定を行い、当該分岐条件が成立した場合に行われる演算を実行する。第1記憶部は、判定の判定結果と、演算が有効であるか否かを示す演算情報とを対応付けて記憶する。読み出し部は、演算部の判定により得られた判定結果に対応する演算情報を第1記憶部から読み出す。出力部は、読み出し処理で読み出された演算情報によって有効であることが示された演算の結果を示す演算結果を出力する。
【選択図】図1
Description
本発明の実施形態は、演算装置およびプログラムに関する。
プロセッサなどの演算装置が実行する命令の一種に分岐命令がある。分岐命令とは、所定の分岐条件を満たしているか否かを判定し、その判定結果に応じて次に実行すべき命令を決定する命令である。分岐命令を実行する場合、条件判定を終えるまで次に実行すべき命令は分からない。そのため、命令の実行と次の命令の取得を同時に行うプロセッサでは、分岐命令を実行中に、次の命令を正しく取得することができず(分岐ハザード)、プロセッサの性能が低下する。
分岐ハザードによる性能低下を抑制する技術として、プレディケーション(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, pP177-189, January 1983
しかしながら、従来の技術では、複数の分岐条件を含む分岐構造を処理する場合は、次の命令の候補の実行結果の何れを選択するかを確定するために、複数の分岐条件のそれぞれの判定結果を用いた論理演算が必要となる。これにより、実行する命令の数およびサイクル数が増大するので、プロセッサの性能を十分に向上させることができないという問題がある。本発明が解決しようとする課題は、複数の分岐条件を含む分岐構造の処理に要する命令数およびサイクル数を低減可能な演算装置およびプログラムを提供することである。
実施形態の演算装置は、演算部と第1記憶部と読み出し部と出力部とを備える。演算部は、少なくとも2以上の分岐条件の各々について、当該分岐条件の判定を行い、当該分岐条件が成立した場合に行われる演算を実行する。第1記憶部は、判定の判定結果と、演算が有効であるか否かを示す演算情報とを対応付けて記憶する。読み出し部は、演算部の判定により得られた判定結果に対応する演算情報を第1記憶部から読み出す。出力部は、読み出し処理で読み出された演算情報によって有効であることが示された演算の結果を示す演算結果を出力する。また、実施形態のプログラムは、少なくとも2以上の分岐条件の各々について、当該分岐条件の判定を行う第1ステップと、分岐条件の各々について、当該分岐条件が成立した場合に行われる演算を実行する第2ステップと、判定の結果を示す判定結果と、演算が有効であるか否かを示す演算情報とを対応付けて記憶する第1記憶部から、第1ステップで得られた判定結果に対応する演算情報を読み出す第3ステップと、第3ステップで読み出された演算情報によって有効であることが示された演算の結果を示す演算結果を出力する第4ステップと、をコンピュータに実行させるためのプログラムである。
以下、添付図面を参照しながら、本発明に係る演算装置およびプログラムの実施の形態を詳細に説明する。図1は、本実施形態に係る演算装置100の概略構成例を示すブロック図である。この演算装置100は、複数の分岐条件を含む分岐構造を処理する分岐処理を実行する半導体装置である。図1に示すように、演算装置100は、データ記憶装置1と、制御情報記憶装置2と、制御装置3と、複数の演算ユニット4a〜4dと、第2記憶部5と、フラグセレクタ6と、第1記憶部7と、読み出し部8と、演算情報セレクタ9と、出力セレクタ10とを備える。なお、各演算ユニット4a〜4dを区別する必要が無い場合は、単に演算ユニット4と表記する。
データ記憶装置1には、各演算ユニット4で実行される処理に必要なデータ(「入力データ」と呼ぶ)が格納される。入力データは、外部装置11から供給される。制御情報記憶装置2には、分岐処理の実行に必要な各種の制御情報が格納される。各種の制御情報は、外部装置11から供給される。
制御装置3は、演算ユニット4、フラグセレクタ6および演算情報セレクタ9の各々の動作を制御する。本実施形態では、制御装置3は、制御情報記憶装置2に格納された各種の制御情報を読み出し、その読み出した制御情報を、演算ユニット4、フラグセレクタ6および演算情報セレクタ9へ転送することで、これらの動作を制御する。図1に示すように、各演算ユニット4には演算制御情報が供給され、フラグセレクタ6にはフラグ選択情報が供給され、演算情報セレクタ9にはテーブル選択情報が供給される。
演算ユニット4a〜4dの各々には、分岐処理の対象となる分岐構造に含まれる複数の分岐条件のうちの何れかが対応付けられ、各演算ユニット4は、制御装置3の制御の下、当該演算ユニット4に対応する分岐条件に関する条件判定を実行する。また、各演算ユニット4は、制御装置3の制御の下、当該演算ユニット4に対応する分岐条件が成立した場合に行われる演算を実行する。
いま、図2に例示される分岐構造が分岐処理の対象である場合を想定する。図2に示す分岐構造には、4つの分岐条件が含まれる。図2の例では、第1番目の分岐条件I1(if(x))は、xが0ではないことである。そして、第1番目の分岐条件I1が成立した場合は、入力値bに1を加える演算が実行されることが示されている。第2番目の分岐条件I2(else if(y))は、第1番目の分岐条件が不成立であって、かつ、yが0ではないことである。そして、第2番目の分岐条件I2が成立した場合は、入力値bに2を加える演算が実行されることが示されている。第3番目の分岐条件I3(else if(z))は、第1番目の分岐条件I1および第2番目の分岐条件I2が不成立であって、かつ、zが0ではないことである。そして、第3番目の分岐条件I3が成立した場合は、入力値bに3を加える演算が実行されることが示されている。第4番目の分岐条件I4(else)は、第1番目〜第3番目の各々の分岐条件I1〜I3が不成立であることである。そして、第4番目の分岐条件I4が成立した場合は、入力値bに4を加える演算が実行されることが示されている。
ここでは、演算ユニット4aには、第1番目の分岐条件I1が対応付けられ、演算ユニット4bには、第2番目の分岐条件I2が対応付けられ、演算ユニット4cには、第3番目の分岐条件I3が対応付けられ、演算ユニット4dには、第4番目の分岐条件I4が対応付けられる。また、各演算ユニット4は、当該演算ユニット4に対応する分岐条件が成立した場合に行われる演算を実行する。また、図2に示す分岐構造を処理する分岐処理が実行される期間は、サイクルAと、次のサイクルBとに分けられる。サイクルAにおいて、各演算ユニット4は条件判定を実行する一方、サイクルBにおいて、各演算ユニット4は演算を実行する。より具体的には、以下のとおりである。
演算ユニット4aには、入力データとして、xおよびbのそれぞれの値がデータ記憶装置1から供給される。条件判定を行うサイクルAにおいて、演算ユニット4aは、入力されたxの値が0であるか否かを判定し、その判定結果を示す判定フラグを第2記憶部5へ書き込む。xの値が0でない場合は、判定フラグは「1」に設定される一方、xの値が0である場合は、判定フラグは「0」に設定される。そして、次のサイクルBにおいて、b+1の演算を行い、データ記憶装置1への書き込みアドレスを指定して、その演算結果を出力セレクタ10へ供給する。
演算ユニット4bには、入力データとして、yおよびbのそれぞれの値が供給される。前述のサイクルAにおいて、演算ユニット4bは、入力されたyの値が0であるか否かを判定し、その判定結果を第2記憶部5へ書き込む。yの値が0でない場合は、判定フラグは「1」に設定される一方、yの値が0である場合は、判定フラグは「0」に設定される。そして、次のサイクルBにおいて、演算ユニット4bは、b+2の演算を行い、データ記憶装置1への書き込みアドレスを指定して、その演算結果を出力セレクタ10へ供給する。
演算ユニット4cには、入力データとして、zおよびbのそれぞれの値が供給される。前述のサイクルAにおいて、演算ユニット4cは、入力されたzの値が0であるか否かを判定し、その判定結果を第2記憶部5へ書き込む。zの値が0でない場合は、判定フラグは「1」に設定される一方、zの値が0である場合は、判定フラグは「0」に設定される。そして、次のサイクルBにおいて、b+3の演算を行い、データ記憶装置1への書き込みアドレスを指定して、その演算結果を出力セレクタ10へ供給する。
演算ユニット4dには、入力データとして、bの値が供給される。演算ユニット4dは、前述のサイクルAにおいては何もせずに、次のサイクルBにおいてb+4の演算を行い、データ記憶装置1への書き込みアドレスを指定して、その演算結果を出力セレクタ10へ供給する。
図1に示すフラグセレクタ6は、制御装置3から供給されるフラグ選択情報に従って、第2記憶部5に格納された判定フラグを読み出す。フラグ選択情報は、フラグセレクタ6が読み出すべき判定フラグを指定する情報である。ここでは、一例として、フラグ選択情報は、前述のサイクルAにおいて演算ユニット4a〜4cによって第2記憶部5に書き込まれた3つの判定フラグを指定する情報である。
第1記憶部7は、各演算ユニット4による判定の結果を示す判定結果と、各演算ユニット4による演算が有効であるか否かを示す演算情報とを対応付けて記憶する。本実施形態では、第1記憶部7は、それぞれが複数の分岐条件を含む複数種類の分岐構造ごとに、判定結果と演算情報との対応関係を示すテーブル12を記憶する。本実施形態では、第1記憶部7は、3種類のテーブル12a〜12cを記憶する。なお、各テーブル12a〜12cを区別する必要が無い場合は、単にテーブル12と表記する。図3は、ある分岐構造に対応するテーブル12aの一例を示す図である。ここでは、テーブル12aを例に挙げてその構成を説明するが、他のテーブル12bおよび12cも同様の構成である。なお、本実施形態では、テーブル12の内容は、外部装置12によって変更可能である。外部装置12は、テーブル12の内容を、処理すべき分岐構造に応じた内容に予め書き換えておくことができる。
図3に示すように、テーブル12aでは、フラグセレクタ6で選択される3つの判定フラグの値で識別されるエントリIDと、各演算ユニット4a〜4dによる演算の各々について、当該演算が有効であるか否かを示す演算情報とが対応付けられている。例えば演算ユニット4aの判定により得られた判定フラグが「0」、演算ユニット4bの判定により得られた判定フラグが「1」、演算ユニット4cの判定により得られた判定フラグが「1」である場合は、エントリIDは、この順に並べた「011」の左端にさらに「0」を付加した2進数表記「0011」で表され、その値は「3」となる。図3の例では、エントリIDは、「0」〜「15」のうちの何れかの値をとり得る。なお、これに限らず、エントリIDの決め方は任意である。要するに、エントリIDは、各演算ユニット4の判定結果に応じて識別されるものであればよい。
また、図3に示すように、演算情報は4ビットで表される。左から数えて第1番目のビットは演算ユニット4aに対応し、当該第1番目のビットが「1」の場合は、演算ユニット4aによる演算が有効であることを示し、当該第1番目のビットが「0」の場合は、演算ユニット4aによる演算が無効であることを示す。また、演算情報における第2番目のビットは演算ユニット4bに対応し、当該第2番目のビットが「1」の場合は、演算ユニット4bによる演算が有効であることを示し、当該第2番目のビットが「0」の場合は、演算ユニット4bによる演算が無効であることを示す。また、演算情報における第3番目のビットは演算ユニット4cに対応し、当該第3番目のビットが「1」の場合は、演算ユニット4cによる演算が有効であることを示し、当該第3番目のビットが「0」の場合は、演算ユニット4cによる演算が無効であることを示す。さらに、演算情報における第4番目のビットは演算ユニット4dに対応し、当該第4番目のビットが「1」の場合は、演算ユニット4dによる演算が有効であることを示し、当該第4番目のビットが「0」の場合は、演算ユニット4dによる演算が無効であることを示す。なお、これに限らず、演算情報の決め方は任意である。要するに、演算情報は、各演算ユニット4による演算が有効であるか否かを示すものであればよい。
フラグセレクタ6は、フラグ選択情報に従って読み出した3つの判定フラグの値で識別されるエントリIDを、読み出し部8へ供給する。読み出し部8は、テーブル12ごとに、フラグセレクタ6から供給されたエントリIDに対応する演算情報を読み出す読み出し処理を実行する。読み出し部8は、読み出し処理によって読み出した3つの演算情報を演算情報セレクタ9へ供給する。
演算情報セレクタ9に供給されるテーブル選択情報は、第1記憶部7に格納された3つのテーブル12a〜12cのうちの何れかを指定する情報である。演算情報セレクタ9は、テーブル選択情報で指定されるテーブル12から読み出された演算情報を選択し、その選択した演算情報を出力セレクタ10へ供給する。
出力セレクタ10は、演算情報セレクタ9から供給される演算情報によって有効であることが示された演算の結果を示す演算結果を選択(取得)し、その選択した演算結果を、データ記憶装置1のうち書き込みアドレスで特定される領域に書き込む。例えば、演算情報セレクタ9から供給された演算情報が「0100」である場合、出力セレクタ10は、演算ユニット4bによる演算結果を選択し、その選択した演算結果を、データ記憶装置1のうち書き込みアドレスで特定される領域に書き込む。データ記憶装置1は、出力セレクタ10により書き込まれた演算結果を外部装置11へ供給する。
次に、演算装置100が実行する分岐処理の一例を具体的に説明する。ここでは、図2に示す分岐構造を処理する場合について説明する。この場合に実行される命令は、図4に示す7つの命令C1〜C7である。命令C1は、入力されたxの値が0であるか否かの判定の実行を指示する命令であり、命令C2は、入力されたyの値が0であるか否かの判定の実行を指示する命令であり、命令C3は、入力されたzの値が0であるか否かの判定の実行を指示する命令である。
命令C4は、データ記憶装置1のレジスタr2に格納されたデータに1を加える演算の実行を指示する命令である。本実施形態では、レジスタr2にはbの値が格納される。したがって、命令C4は、入力されたbの値に1を加える演算の実行を指示する命令であると捉えることができる。また、命令C5は、データ記憶装置1のレジスタr2に格納されたデータに2を加える演算の実行を指示する命令である。命令C5は、入力されたbの値に2を加える演算の実行を指示する命令であると捉えることができる。また、命令C6は、データ記憶装置1のレジスタr2に格納されたデータに3を加える演算の実行を指示する命令である。命令C6は、入力されたbの値に3を加える演算の実行を指示する命令であると捉えることができる。さらに、命令C7は、データ記憶装置1のレジスタr2に格納されたデータに4を加える演算の実行を指示する命令である。命令C7は、入力されたbの値に4を加える演算の実行を指示する命令であると捉えることができる。なお、図4に示す「;;」は、当該「;;」と、直前の「;;」との間に複数の命令が存在する場合は、それらの命令間には依存関係が無いことを示し、命令の数だけ演算ユニット4があれば、それらの命令を1サイクルで実行できることを示す。
一例として、x=0、y=1、z=3、b=2である場合を想定する。まず、条件判定を行うサイクルAにおいて、制御装置3は、命令C1の実行を指示する演算制御情報を演算ユニット4aに供給し、命令C2の実行を指示する演算制御情報を演算ユニット4bに供給し、命令C3の実行を指示する演算制御情報を演算ユニット4cに供給する。これにより、演算ユニット4aは命令C1を実行する。この例では、x=0であるので、演算ユニット4aによる判定の結果は偽となり、演算ユニット4aは、「0」に設定した判定フラグを、第2記憶部5に書き込む。説明の便宜上、第2記憶部5のうち、演算ユニット4aによる判定結果を示す判定フラグが格納される領域をフラグ番号0と呼ぶ。
また、演算ユニット4bは命令C2を実行する。この例では、y=1であるので、演算ユニット4bによる判定の結果は真となり、演算ユニット4bは、「1」に設定した判定フラグを、第2記憶部5に書き込む。説明の便宜上、第2記憶部5のうち、演算ユニット4bによる判定結果を示す判定フラグが格納される領域をフラグ番号1と呼ぶ。
さらに、演算ユニット4cは命令C3を実行する。この例では、z=3であるので、演算ユニット4cによる判定の結果は真となり、演算ユニット4cは、「1」に設定した判定フラグを、第2記憶部5に書き込む。説明の便宜上、第2記憶部5のうち、演算ユニット4cによる判定結果を示す判定フラグが格納される領域をフラグ番号2と呼ぶ。なお、演算ユニット4dは、サイクルAにおいては何も行わない。
次に、サイクルBにおいて、制御装置3は、命令C4の実行を指示する演算制御情報を演算ユニット4aに供給し、命令C5の実行を指示する演算制御情報を演算ユニット4bに供給し、命令C6の実行を指示する演算制御情報を演算ユニット4cに供給し、命令C7の実行を指示する演算制御情報を演算ユニット4dに供給する。これにより、演算ユニット4aは命令C4を実行する。ここでは、bの値は「2」であるので、演算ユニット4aによる演算の結果は「3」となる。この例では、演算ユニット4aは、データ記憶装置1への書き込みアドレスとしてaddressAを指定し、演算結果「3」を出力セレクタ10へ出力する。
演算ユニット4bは命令C5を実行する。ここでは、bの値は「2」であるので、演算ユニット4bによる演算の結果は「4」となる。この例では、演算ユニット4bは、データ記憶装置1への書き込みアドレスとしてaddressAを指定し、演算結果「4」を出力セレクタ10へ出力する。また、演算ユニット4cは命令C6を実行する。ここでは、bの値は「2」であるので、演算ユニット4cによる演算の結果は「5」となる。この例では、演算ユニット4cは、データ記憶装置1への書き込みアドレスとしてaddressAを指定し、演算結果「5」を出力セレクタ10へ出力する。さらに、演算ユニット4dは命令C7を実行する。ここでは、bの値は「2」であるので、演算ユニット4dによる演算の結果は「6」となる。この例では、演算ユニット4dは、データ記憶装置1への書き込みアドレスとしてaddressAを指定し、演算結果「6」を出力セレクタ10へ出力する。
また、サイクルBにおいて、制御装置3は、第2記憶部5のうちフラグ番号0、1および2の各々に格納された判定フラグを選択することを示す選択情報をフラグセレクタ6へ供給する。これにより、フラグセレクタ6は、フラグ番号0、1および2の各々に格納された判定フラグを第2記憶部5から読み出し、その読み出した3つの判定フラグの値で識別されるエントリIDを読み出し部8へ供給する。この例では、フラグ番号0に格納された判定フラグは「0」、フラグ番号1に格納された判定フラグは「1」、フラグ番号2に格納された判定フラグは「1」であるので、エントリIDは、「0011」の2進数表記で表され、その値は「3」となる。そして、読み出し部8は、テーブル12ごとに、エントリID「3」に対応する演算情報を読み出す。
さらに、サイクルBにおいて、制御装置3は、図2の分岐構造に対応するテーブル12を選択することを示すテーブル選択情報を演算情報セレクタ9へ供給する。ここでは、図2の分岐構造に対応するテーブル12は、図3のテーブル12aであるとする。これにより、演算情報セレクタ9は、テーブル12aから読み出された、エントリID「3」に対応する演算情報「0100」(図3参照)を選択して出力セレクタ10へ出力する。したがって、出力セレクタ10は、演算ユニット4bの演算結果「6」を取得し、その取得した演算結果「6」を、データ記憶装置1のうちaddressAで特定される領域に書き込む。そして、データ記憶装置1は、addressAで特定される領域に書き込まれた演算結果「6」を、外部装置11へ出力する。以上で、図2に例示された分岐構造を処理する分岐処理が終了する。
以上に説明したように、本実施形態では、第1記憶部7には、各演算ユニット4による判定結果で識別されるエントリIDと、演算情報とが対応付けられたテーブル12が格納される。そして、複数の分岐条件を含む分岐構造を処理する場合において、演算装置100は、各演算ユニット4による判定結果で識別されるエントリIDに対応する演算情報をテーブル12から読み出し、その読み出した演算情報によって有効であることが示された演算の結果を示す演算結果を出力するので、複数の分岐条件を含む分岐構造を処理する場合における命令数およびサイクル数を低減できるという有利な効果を奏する。
ここで、前述のテーブル12を用いずに、図2の分岐構造を処理する場合を想定する。この場合に実行される命令は、図5に示す11個の命令C11〜Cbbである。命令C11は、入力されたxの値が0であるか否かの判定の実行を指示する命令であり、判定の結果、xの値が0でない場合は、フラグP1は「1」、フラグP2は「0」にセットされる一方、xの値が0である場合は、フラグP1は「0」、フラグP2は「1」にセットされることを示す。命令C22は、入力されたyの値が0であるか否かの判定の実行を指示する命令であり、判定の結果、yの値が0でない場合は、フラグP3は「1」、フラグP4は「0」にセットされる一方、yの値が0である場合は、フラグP3は「0」、フラグP4は「1」にセットされることを示す。命令C33は、入力されたzの値が0であるか否かの判定の実行を指示する命令であり、判定の結果、zの値が0でない場合は、フラグP5は「1」、フラグP6は「0」にセットされる一方、zの値が0である場合は、フラグP5は「0」、フラグP6は「1」にセットされることを示す。
命令C44は、図2の第2番目の分岐条件I2(第1番目の分岐条件I1が不成立であって、かつ、yが0でない)が成立するか否かの判定の実行を指示する命令である。より具体的には、フラグP2およびフラグP3の論理積の実行を指示する命令である。第1番目の分岐条件I1が不成立で、かつ、第2番目の分岐条件I2が成立する場合は、フラグP1=0、フラグP2=1、フラグP3=1、フラグP4=0となる。この場合、フラグP2およびフラグP3の論理積は「1」となり、フラグP7=1、フラグP8=0となる。すなわち、フラグP7=1、フラグP8=0の場合は、第2番目の分岐条件I2は成立すると判定される。一方、フラグP7=0、フラグP8=1の場合は、第2番目の分岐条件I2は成立しないと判定される。なお、命令C44は、命令C11および命令C22の実行結果を用いるので、これらの命令と並列に実行することはできない。
命令C55は、第1番目の分岐条件I1および第2番目の分岐条件I2の両方が不成立であるか否かの判定の実行を指示する命令である。より具体的には、フラグP2およびフラグP4の論理積の実行を指示する命令である。第1番目の分岐条件I1が不成立であって、かつ、第2番目の分岐条件I2も不成立であった場合は、フラグP1=0、フラグP2=1、フラグP3=0、フラグP4=1となる。この場合、フラグP2およびフラグP4の論理積は「1」となり、フラグP9=1、フラグP10=0となる。すなわち、フラグP9=1、フラグP10=0の場合は、第1番目の分岐条件I1および第2番目の分岐条件I2の両方が不成立であると判定される。一方、フラグP9=0、フラグP10=1の場合は、第1番目の分岐条件I1および第2番目の分岐条件I2のうちの何れかが成立していると判定される。なお、命令C55は、命令C11および命令C22の実行結果を用いるので、これらの命令と並列に実行することはできない。
命令C66は、図5の第3番目の分岐条件I3(第1番目の分岐条件I1および第2番目の分岐条件I2の両方が不成立であって、かつ、zが0でない)が成立するか否かの判定の実行を指示する命令である。より具体的には、フラグP9およびフラグP5の論理積の実行を指示する命令である。第1番目の分岐条件I1および第2番目の分岐条件I2の両方が不成立で、かつ、第3番目の分岐条件I3が成立する場合は、フラグP9=1、フラグP5=1となる。この場合、フラグP9およびフラグP5の論理積は「1」となり、フラグP11=1、フラグP12=0となる。すなわち、フラグP11=1、フラグP12=0の場合は、第3番目の分岐条件I3が成立すると判定される。一方、フラグP11=0、フラグP12=1の場合は、第3番目の分岐条件I3は成立しないと判定される。なお、命令C66は、命令C33および命令C55の実行結果を用いるので、これらの命令と並列に実行することはできない。
命令C77は、図5の第4番目の分岐命令I4(第1番目の分岐条件I1、第2番目の分岐条件I2、および、第3番目の分岐条件I3が何れも不成立)が成立するか否かの判定の実行を指示する命令である。より具体的には、フラグP9およびフラグP6の論理積の実行を指示する命令である。第1番目の分岐条件I1、第2番目の分岐条件I2、および、第3番目の分岐条件I3の何れも不成立の場合は、フラグP9=1、フラグP6=1となる。この場合、フラグP9およびフラグP6の論理積は「1」となり、フラグP13=1、フラグP14=0となる。すなわち、フラグP13=1、フラグP14=0の場合は、第4番目の分岐条件I4が成立すると判定される。一方、フラグP13=0、フラグP14=1の場合は、第4番目の分岐条件I4は成立しないと判定される。なお、命令C77は、命令C33および命令C55の実行結果を用いるので、これらの命令と並列に実行することはできない。
命令C88は、データ記憶装置1のレジスタr2に格納されたデータに1を加える演算の実行を指示する命令である。命令C99は、データ記憶装置1のレジスタr2に格納されたデータに2を加える演算の実行を指示する命令である。命令Caaは、データ記憶装置1のレジスタr2に格納されたデータに3を加える演算の実行を指示する命令である。命令Cbbは、データ記憶装置1のレジスタr2に格納されたデータに4を加える演算の実行を指示する命令である。
この場合の分岐処理では、第1番目のサイクルにおいて命令C11〜C33が実行され、第2番目のサイクルにおいて命令C44および命令C55が実行され、第3番目のサイクルにおいて命令C66および命令C77が実行され、第4番目のサイクルにおいて命令C88〜命令Cbbが実行される。つまり、分岐処理に必要な命令数は11、サイクル数は4となる。
これに対して、本実施形態によれば、図2の分岐構造を処理する分岐処理に必要な命令数は7、サイクル数は2つで済むので、テーブル12を用いずに分岐処理を実行する場合に比べて、命令数およびサイクル数を低減できるという利点がある。
なお、上述の実施形態において、演算装置100で実行される各種プログラム(分岐処理用の制御プログラム等)を、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また当該各種プログラムを、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供するように構成してもよい。
(変形例)
以上、本発明の実施形態を説明したが、この実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。以下に変形例を記載する。なお、以下に記載する変形例のうちの2以上を任意に組み合わせることもできる。
以上、本発明の実施形態を説明したが、この実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。以下に変形例を記載する。なお、以下に記載する変形例のうちの2以上を任意に組み合わせることもできる。
(変形例1)
上述の実施形態では、演算装置100内に、外部装置11から供給される各種の制御情報を、各演算ユニット4、フラグセレクタ6および演算情報セレクタ9へ転送するための制御情報記憶装置2および制御装置3が設けられているが、これに限らず、制御情報記憶装置2および制御装置3が演算装置100内に設けられない構成であってもよい。例えば図6に示すように、外部装置11が、各演算ユニット4、フラグセレクタ6および演算情報セレクタ9の各々に対して、制御情報を直接供給する構成であってもよい。要するに、制御情報に関する転送方法、生成方法、記憶方法などは任意である。
上述の実施形態では、演算装置100内に、外部装置11から供給される各種の制御情報を、各演算ユニット4、フラグセレクタ6および演算情報セレクタ9へ転送するための制御情報記憶装置2および制御装置3が設けられているが、これに限らず、制御情報記憶装置2および制御装置3が演算装置100内に設けられない構成であってもよい。例えば図6に示すように、外部装置11が、各演算ユニット4、フラグセレクタ6および演算情報セレクタ9の各々に対して、制御情報を直接供給する構成であってもよい。要するに、制御情報に関する転送方法、生成方法、記憶方法などは任意である。
(変形例2)
上述の実施形態では、第1記憶部7に格納されるテーブル12のデータは、書き換え可能であるが、これに限らず、第1記憶部7に格納されるテーブル12のデータは、書き換え不可能であってもよい。また、第1記憶部7に記憶されるテーブル12の数は任意である。例えば第1記憶部7は、ひとつのテーブル12のみを格納し、当該ひとつのテーブル12のデータは、処理対象の分岐構造に応じて書き換えられる構成であってもよい。この書き換えを行う主体は任意であり、外部装置12が行ってもよいし、制御装置3が行ってもよい。また、第1記憶部7に格納されるテーブル12が1つのみの場合、演算情報セレクタ9は不要となるので、構成が簡素化される。
上述の実施形態では、第1記憶部7に格納されるテーブル12のデータは、書き換え可能であるが、これに限らず、第1記憶部7に格納されるテーブル12のデータは、書き換え不可能であってもよい。また、第1記憶部7に記憶されるテーブル12の数は任意である。例えば第1記憶部7は、ひとつのテーブル12のみを格納し、当該ひとつのテーブル12のデータは、処理対象の分岐構造に応じて書き換えられる構成であってもよい。この書き換えを行う主体は任意であり、外部装置12が行ってもよいし、制御装置3が行ってもよい。また、第1記憶部7に格納されるテーブル12が1つのみの場合、演算情報セレクタ9は不要となるので、構成が簡素化される。
(変形例3)
また、テーブル12は、各演算ユニット4による判定結果と演算情報との対応関係を示すものであればよく、その構成は任意である。例えばテーブル12は、図7に示す構成であってもよい。図7の構成では、演算情報は3ビットの2進数表記で表される。一例として、演算情報の値が「0」の場合(2進数表記で「000」の場合)は、演算ユニット4aによる演算が有効であることを示し、演算情報の値が「1」の場合(2進数表記で「001」の場合)は、演算ユニット4bによる演算が有効であることを示し、演算情報の値が「2」の場合(2進数表記で「010」の場合)は、演算ユニット4cによる演算が有効であることを示し、演算情報の値が「3」の場合(2進数表記で「011」の場合)は、演算ユニット4dによる演算が有効であることを示す。
また、テーブル12は、各演算ユニット4による判定結果と演算情報との対応関係を示すものであればよく、その構成は任意である。例えばテーブル12は、図7に示す構成であってもよい。図7の構成では、演算情報は3ビットの2進数表記で表される。一例として、演算情報の値が「0」の場合(2進数表記で「000」の場合)は、演算ユニット4aによる演算が有効であることを示し、演算情報の値が「1」の場合(2進数表記で「001」の場合)は、演算ユニット4bによる演算が有効であることを示し、演算情報の値が「2」の場合(2進数表記で「010」の場合)は、演算ユニット4cによる演算が有効であることを示し、演算情報の値が「3」の場合(2進数表記で「011」の場合)は、演算ユニット4dによる演算が有効であることを示す。
また、演算情報の値が「5」の場合(2進数表記で「101」の場合)は、演算ユニット4aおよび演算ユニット4bのそれぞれによる演算が有効であることを示し、演算情報の値が「6」の場合(2進数表記で「110」の場合)は、演算ユニット4a、演算ユニット4bおよび演算ユニット4cのそれぞれによる演算が有効であることを示し、演算情報の値が「7」の場合(2進数表記で「111」の場合)は、演算ユニット4a、演算ユニット4b、演算ユニット4cおよび演算ユニット4dのそれぞれによる演算が有効であることを示す構成であってもよい。
出力セレクタ10は、1つの演算結果のみを選択することもできるし、書き込み先が異なる場合は、複数の演算結果を選択することもできるので、演算情報によって有効であることが示される演算の数は任意であり、1つに限られるものではない。
(変形例4)
また、上述の実施形態では、複数種類の分岐構造ごとに、当該分岐構造に対応するテーブル12が設けられているが、これに限らず、例えば演算ユニット4ごとに、当該演算ユニット4に対応するテーブル12が設けられる構成であってもよい。図8は、この構成の一例を示す図であり、図8の例では、演算ユニット4aに対応するテーブル12a2と、演算ユニット4bに対応するテーブル12b2と、演算ユニット4cに対応するテーブル12c2と、演算ユニット4dに対応するテーブル12d2とが設けられ、第1記憶部7(不図示)に格納される。各テーブル12では、エントリIDと、当該テーブル12に対応する演算ユニット4が実行する演算が有効であるか否かを示す1ビットの演算情報とが対応付けられている。
また、上述の実施形態では、複数種類の分岐構造ごとに、当該分岐構造に対応するテーブル12が設けられているが、これに限らず、例えば演算ユニット4ごとに、当該演算ユニット4に対応するテーブル12が設けられる構成であってもよい。図8は、この構成の一例を示す図であり、図8の例では、演算ユニット4aに対応するテーブル12a2と、演算ユニット4bに対応するテーブル12b2と、演算ユニット4cに対応するテーブル12c2と、演算ユニット4dに対応するテーブル12d2とが設けられ、第1記憶部7(不図示)に格納される。各テーブル12では、エントリIDと、当該テーブル12に対応する演算ユニット4が実行する演算が有効であるか否かを示す1ビットの演算情報とが対応付けられている。
(変形例5)
第2記憶部5に記憶される判定フラグの数は、少なくとも2以上であればよく、その数は任意である。また、演算ユニット4の数に応じた効果を得るためには、演算ユニット4の数以上の判定フラグを第2記憶部5に格納しておくことが好ましい。また、第2記憶部5に記憶される判定フラグの数が、エントリIDの特定に必要なビット数と同一の場合は、フラグセレクタ6は不要となる。一方、第2記憶部5に記憶される判定フラグの数が、エントリIDの特定に必要なビット数と異なる場合は、重複も含めて必要な判定フラグを選択するためにフラグセレクタ6が必要となる。
第2記憶部5に記憶される判定フラグの数は、少なくとも2以上であればよく、その数は任意である。また、演算ユニット4の数に応じた効果を得るためには、演算ユニット4の数以上の判定フラグを第2記憶部5に格納しておくことが好ましい。また、第2記憶部5に記憶される判定フラグの数が、エントリIDの特定に必要なビット数と同一の場合は、フラグセレクタ6は不要となる。一方、第2記憶部5に記憶される判定フラグの数が、エントリIDの特定に必要なビット数と異なる場合は、重複も含めて必要な判定フラグを選択するためにフラグセレクタ6が必要となる。
(変形例6)
上述の実施形態では、演算ユニット4の数は4つであるが、これに限らず、演算ユニット4の数は任意であり、例えば演算ユニット4の数は1つのみであってもよい。要するに、少なくとも2以上の分岐条件の各々について、当該分岐条件の判定を行い、当該分岐条件が成立した場合に行われる演算を実行するための演算ユニット4が1以上設けられていればよい。
上述の実施形態では、演算ユニット4の数は4つであるが、これに限らず、演算ユニット4の数は任意であり、例えば演算ユニット4の数は1つのみであってもよい。要するに、少なくとも2以上の分岐条件の各々について、当該分岐条件の判定を行い、当該分岐条件が成立した場合に行われる演算を実行するための演算ユニット4が1以上設けられていればよい。
(変形例7)
上述の実施形態では、演算ユニット4による判定結果が真の場合は判定フラグが「1」に設定される一方、判定結果が偽の場合は判定フラグが「0」に設定されるが、これに限らず、例えば演算ユニット4による判定結果が真の場合は判定フラグが「0」に設定される一方、判定結果が偽の場合は判定フラグが「1」に設定されてもよい。
上述の実施形態では、演算ユニット4による判定結果が真の場合は判定フラグが「1」に設定される一方、判定結果が偽の場合は判定フラグが「0」に設定されるが、これに限らず、例えば演算ユニット4による判定結果が真の場合は判定フラグが「0」に設定される一方、判定結果が偽の場合は判定フラグが「1」に設定されてもよい。
1 データ記憶装置
2 制御情報記憶装置
3 制御装置
4 演算ユニット
5 第2記憶部
6 フラグセレクタ
7 第1記憶部
8 読み出し部
9 演算情報セレクタ
10 出力セレクタ
11 外部装置
12 テーブル
100 演算装置
2 制御情報記憶装置
3 制御装置
4 演算ユニット
5 第2記憶部
6 フラグセレクタ
7 第1記憶部
8 読み出し部
9 演算情報セレクタ
10 出力セレクタ
11 外部装置
12 テーブル
100 演算装置
Claims (5)
- 少なくとも2以上の分岐条件の各々について、当該分岐条件の判定を行い、当該分岐条件が成立した場合に行われる演算を実行する演算部と、
前記判定の判定結果と、前記演算が有効であるか否かを示す演算情報とを対応付けて記憶する第1記憶部と、
前記演算部の前記判定により得られた前記判定結果に対応する前記演算情報を前記第1記憶部から読み出す読み出し処理を実行する読み出し部と、
前記読み出し処理で読み出された前記演算情報によって有効であることが示された前記演算の演算結果を出力する出力部と、を備える、
ことを特徴とする演算装置。 - 前記第1記憶部は、複数の前記分岐条件をそれぞれが含む複数種類の分岐構造ごとに、前記判定結果と前記演算情報とが対応付けられたテーブルを格納し、
前記読み出し部は、前記分岐構造に対応する前記テーブルを用いて前記読み出し処理を実行する、
ことを特徴とする請求項1に記載の演算装置。 - 複数の前記演算部の各々に何れかの前記分岐条件が対応付けられ、各前記演算部は、当該演算部に対応する前記分岐条件が成立した場合に行われる前記演算を実行し、
前記第1記憶部は、前記演算部ごとに、前記判定結果と、当該演算部で実行される前記演算が有効であるか否かを示す前記演算情報とが対応付けられたテーブルを格納し、
前記読み出し部は、前記演算部ごとに、前記判定結果に対応する前記演算情報を前記テーブルから読み出す、
ことを特徴とする請求項1に記載の演算装置。 - 前記判定結果を記憶する第2記憶部と、
前記第2記憶部に記憶された複数の前記判定結果のうち、前記読み出し処理に用いられる前記判定結果を選択する選択部と、をさらに備え、
前記読み出し部は、選択された前記判定結果に対応する前記演算情報を前記第1記憶部から読み出す、
ことを特徴とする請求項1に記載の演算装置。 - 少なくとも2以上の分岐条件の各々について、当該分岐条件の判定を行う第1ステップと、
前記分岐条件の各々について、当該分岐条件が成立した場合に行われる演算を実行する第2ステップと、
前記判定の結果を示す判定結果と、前記演算が有効であるか否かを示す演算情報とを対応付けて記憶する第1記憶部から、前記第1ステップで得られた前記判定結果に対応する前記演算情報を読み出す第3ステップと、
前記第3ステップで読み出された前記演算情報によって有効であることが示された前記演算の結果を示す演算結果を出力する第4ステップと、をコンピュータに実行させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011127130A JP2012252670A (ja) | 2011-06-07 | 2011-06-07 | 演算装置およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011127130A JP2012252670A (ja) | 2011-06-07 | 2011-06-07 | 演算装置およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012252670A true JP2012252670A (ja) | 2012-12-20 |
Family
ID=47525389
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011127130A Abandoned JP2012252670A (ja) | 2011-06-07 | 2011-06-07 | 演算装置およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012252670A (ja) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05274143A (ja) * | 1992-03-30 | 1993-10-22 | Toshiba Corp | 複合条件処理方式 |
WO1995009399A1 (fr) * | 1993-09-27 | 1995-04-06 | Ntt Mobile Communications Network Inc. | Multiprocesseur |
JPH08153000A (ja) * | 1994-11-30 | 1996-06-11 | Mitsubishi Electric Corp | 命令処理装置 |
JPH1153189A (ja) * | 1997-07-31 | 1999-02-26 | Toshiba Corp | 演算装置、演算方法及びコンピュータ読み取り可能な記録媒体 |
US20090125051A1 (en) * | 2007-11-13 | 2009-05-14 | Boston Scientific Scimed, Inc. | Combination coil and liquid embolic for embolization |
JP2011517493A (ja) * | 2008-03-11 | 2011-06-09 | クゥアルコム・インコーポレイテッド | 実行された命令の結果を選択的にコミットするためのシステムおよび方法 |
-
2011
- 2011-06-07 JP JP2011127130A patent/JP2012252670A/ja not_active Abandoned
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05274143A (ja) * | 1992-03-30 | 1993-10-22 | Toshiba Corp | 複合条件処理方式 |
WO1995009399A1 (fr) * | 1993-09-27 | 1995-04-06 | Ntt Mobile Communications Network Inc. | Multiprocesseur |
JPH08153000A (ja) * | 1994-11-30 | 1996-06-11 | Mitsubishi Electric Corp | 命令処理装置 |
JPH1153189A (ja) * | 1997-07-31 | 1999-02-26 | Toshiba Corp | 演算装置、演算方法及びコンピュータ読み取り可能な記録媒体 |
US20090125051A1 (en) * | 2007-11-13 | 2009-05-14 | Boston Scientific Scimed, Inc. | Combination coil and liquid embolic for embolization |
JP2011517493A (ja) * | 2008-03-11 | 2011-06-09 | クゥアルコム・インコーポレイテッド | 実行された命令の結果を選択的にコミットするためのシステムおよび方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5681473B2 (ja) | プログラムの最適化装置、最適化方法および最適化プログラム | |
JP6398725B2 (ja) | コンパイルプログラム、コンパイル方法およびコンパイラ装置 | |
US20210311744A1 (en) | Microprocessor with Multistep-Ahead Branch Predictor | |
US20140122836A1 (en) | Confidence-driven selective predication of processor instructions | |
KR20160065144A (ko) | 데이터 처리장치 및 추론적 벡터 액세스 연산의 수행방법 | |
JP4202244B2 (ja) | Vliw型dsp,及びその動作方法 | |
JP4865016B2 (ja) | プロセッサ | |
US8266416B2 (en) | Dynamic reconfiguration supporting method, dynamic reconfiguration supporting apparatus, and dynamic reconfiguration system | |
JP2009020696A (ja) | 情報処理装置及びシステム | |
JP4607958B2 (ja) | プロセッサおよびプログラム変換装置 | |
JP2006517322A (ja) | パイプライン化ディジタルプロセッサにおけるハザード検出および管理のための方法および装置 | |
KR20160066939A (ko) | 멀티 스레드를 실행하는 방법 및 장치 | |
KR102270789B1 (ko) | 프로세서 및 프로세서의 명령어 처리 방법 | |
JP2012252670A (ja) | 演算装置およびプログラム | |
KR102591988B1 (ko) | 데이터 처리장치에서의 벡터 인터리빙 | |
CN104866285A (zh) | 可编程序控制器 | |
TW201823972A (zh) | 向量產生指令 | |
JP2009069960A (ja) | 分岐予測装置、分岐予測方法、及びマイクロプロセッサ | |
JP6237241B2 (ja) | 処理装置 | |
JP5595304B2 (ja) | プログラム試験装置、プログラム試験装置のプログラム試験方法およびプログラム試験プログラム | |
JP2007334819A (ja) | ベクトルリネーミング方式およびベクトル型計算機 | |
JP2020126303A (ja) | 情報処理装置、情報処理プログラム、及び情報処理方法 | |
JP5263497B2 (ja) | 信号処理プロセッサ及び半導体装置 | |
JP2008107913A (ja) | プログラム、ソフトウェア変換装置及びコンピュータ | |
JP2015069220A (ja) | 性能評価プログラム生成装置、方法、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130909 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140430 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140513 |
|
A762 | Written abandonment of application |
Free format text: JAPANESE INTERMEDIATE CODE: A762 Effective date: 20140626 |