(57)【要約】【課題】  ループのプロローグまたはエピローグの無効演算を処理する装置及び方法を提供する。【解決手段】  本発明は、ソフトウェアパイプライン化されたループのプロローグまたはエピローグで無効演算を処理する装置に関するものである。本発明の一実施形態による無効演算処理装置は、データの有効状態を保存する第１領域とそのデータを保存する第２領域とを含むレジスタファイルと、そのレジスタファイルから入力される１つ以上の入力ソースの第１領域値に基づいて、演算の非有効性を判断し、第１領域値に基づいた値を含むデスティネーションを出力する機能ユニットと、を含みうる。【選択図】      図１
2013200873.tif 000002
【特許請求の範囲】
【請求項１】
データの有効状態を保存する第１領域とそのデータを保存する第２領域とを含むレジスタファイルと、
前記レジスタファイルから入力される１つ以上の入力ソースの第１領域値に基づいて、演算の有効性を判断し、前記１つ以上の入力ソースの第１領域値に基づいた値を含むデスティネーションを出力する機能ユニットと、
を含むループのプロローグまたはエピローグで無効演算を処理する装置。
【請求項２】
前記機能ユニットは、
前記入力ソースの第１領域の値をＡＮＤ演算して、その演算の有効性を判断する請求項１に記載の装置。
【請求項３】
前記機能ユニットは、
前記入力ソースの第１領域値をＡＮＤ演算した結果とプレディケートをさらにＡＮＤ演算して、その演算の有効性を判断する請求項２に記載の装置。
【請求項４】
前記デスティネーションの第１領域値に基づいて、そのデスティネーションに対する前記レジスタファイルへの書き込み要請を処理する制御部をさらに含む請求項１乃至３のいずれか一項に記載の装置。
【請求項５】
前記制御部は、
前記デスティネーションの第１領域値と書き込み許容（Ｗｒｉｔｅ  Ｅｎａｂｌｅ、ＷＥ）信号をＡＮＤ演算して、その結果によって、前記書き込み要請を処理する請求項４に記載の装置。
【請求項６】
前記制御部は、
リセット要請に応じて、前記レジスタファイル内の第１領域をリセットする請求項４又は５に記載の装置。
【請求項７】
前記制御部は、
前記リセット要請に応じて、ＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  ＩｎｓｔｒｕｃｔｉｏｎＷｏｒｄ）モードからＣＧＲＡ（Ｃｏａｒｓｅ  Ｇｒａｉｎｅｄ  Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ａｒｒａｙ）モードに伝送されるレジスタ値は除いてリセットする請求項６に記載の装置。
【請求項８】
データの有効状態を保存する第１領域とそのデータを保存する第２領域とを含むレジスタファイルから１つ以上の入力ソースが機能ユニットに入力される段階と、
前記機能ユニットが、前記各入力ソースの第１領域値に基づいて、演算の有効性を判断する段階と、
前記機能ユニットが、前記各入力ソースの第１領域値に基づいた値を含むデスティネーションを出力する段階と、
を含むループのプロローグまたはエピローグで無効演算を処理する方法。
【請求項９】
前記演算の有効性を判断する段階は、
前記入力ソースの第１領域の値をＡＮＤ演算して、その演算の有効性を判断する請求項８に記載の方法。
【請求項１０】
前記演算の有効性を判断する段階は、
前記入力ソースの第１領域値をＡＮＤ演算した結果とプレディケートをさらにＡＮＤ演算して、その演算の有効性を判断する請求項９に記載の方法。
【請求項１１】
前記デスティネーションの第１領域値に基づいて、そのデスティネーションの前記レジスタファイルへの記録を要請する、書き込み要請処理段階をさらに含む請求項８乃至１０のいずれか一項に記載の方法。
【請求項１２】
前記デスティネーションの書き込み要請処理段階は、
前記デスティネーションの第１領域値と書き込み許容（ＷＥ）信号をＡＮＤ演算して、その結果によって、前記書き込み要請を処理する請求項１１に記載の方法。
【請求項１３】
データと、そのデータが有効であるか否かを指示するデータの有効情報を保存するレジスタファイルと、
前記レジスタファイルからデータとそのデータの有効情報とを含む入力ソースを入力されて、そのデータの演算を行い、その入力ソースのデータの有効情報に基づいて、演算が有効であるか否かを決定して、その演算の有効性を指示する演算の有効情報が含まれたデスティネーションを出力する機能ユニットと、
を含むループのプロローグまたはエピローグで無効演算を処理する装置。
【請求項１４】
前記機能ユニットは、
入力ソースのデータの有効情報についての演算を行うことによって、その演算の有効性を判断し、
前記デスティネーションに含まれた演算の有効情報は、前記入力ソースのデータの有効情報に対して行われた演算の結果を含む請求項１３に記載の装置。
【請求項１５】
前記入力ソースのデータは、複数のデータビットを含み、前記データの有効情報は、データ有効ビットを含む請求項１３又は１４に記載の装置。
【請求項１６】
前記デスティネーションは、
前記入力ソースのデータに対する演算の遂行結果、データを含む請求項１３乃至１５のいずれか一項に記載の装置。
【請求項１７】
前記機能ユニットは、
レジスタファイルからデータとそのデータの有効情報とを含む複数の入力ソースを受信し、該受信されたあらゆる入力ソースに対する演算を行い、受信されたあらゆる入力ソースのデータの有効情報に基づいて、演算の有効性を決定して、その演算が有効であるか否かを指示する演算の有効情報を含むデスティネーションを出力する請求項１３乃至１６のいずれか一項に記載の装置。
【請求項１８】
前記機能ユニットは、
あらゆる入力ソースのデータの有効情報についてのＡＮＤ演算を行うことによって、演算の有効性を判断し、
前記デスティネーションに含まれた演算の有効情報は、前記ＡＮＤ演算の結果を含む請求項１７に記載の装置。
【請求項１９】
前記機能ユニットは、
プレディケートを受信し、
レジスタファイルからデータとそのデータの有効情報とを含む入力ソースを受信して、該受信された入力ソースに対する演算を行い、受信された入力ソースのデータの有効情報に基づいて、演算の有効性を決定して、その演算が有効であるか否かを指示する演算の有効情報を含むデスティネーションを出力する請求項１３乃至１８のいずれか一項に記載の装置。
【請求項２０】
前記機能ユニットは、
前記プレディケートと前記入力ソースのデータの有効情報をＡＮＤ演算して、演算の有効性を判断し、
前記デスティネーションに含まれた演算の有効情報は、前記プレディケートと入力ソースのデータの有効情報をＡＮＤ演算した結果を含む請求項１９に記載の装置。
【請求項２１】
前記デスティネーションの演算の有効情報に基づいて、前記レジスタファイルにそのデスティネーションを記録するように要請する書き込み要請を処理する制御部をさらに含む請求項１３乃至２０のいずれか一項に記載の装置。
【請求項２２】
前記制御部は、
前記デスティネーションの演算の有効情報と書き込み許容（ＷＥ）信号のＡＮＤ演算を行い、そのＡＮＤ演算の結果に基づいて、デスティネーションをレジスタファイルに記録するか否かを判断する請求項２１に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアパイプライン化されたループのプロローグまたはエピローグで無効演算を処理する技術に関する。
【背景技術】
【０００２】
プロセッサでソフトウェアパイプライン方法は、実行するソフトウェアを段階別に分けて、パイプライン形態で行う方法であって、処理能を大きく高めうる。しかし、ＣＧＲＡ（Ｃｏａｒｓｅ−Ｇｒａｉｎｅｄ  Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ）プロセッサは、モジュロスケジューリングを通じてプログラムをスケジューリングするために、ループのプロローグやエピローグで無効演算が含まれうる。
【０００３】
一般的に、ＣＧＲＡプロセッサは、ループのプロローグまたはエピローグの無効演算が、プログラム状態を変更しないようにする（ガーディング、ｇｕａｒｄｉｎｇ）ために、プレディケート情報を使う。ガーディングとは、その無効演算の実行を制御するものであって、その無効演算が機能ユニットで実際に行われても、レジスタファイルに記録されないようにすることを言う。そのプレディケート情報を使うためには、プレディケートのためのＣＧＲＡ内のルーティング情報が必要である。この際、プレディケートの計算とルーティングは、ＣＧＲＡコンパイラが担当するが、これは、コンパイラのスケジューリング過程を非常に複雑にする原因となり、複雑なループのカーネルの場合には、これによってスケジューリングを失敗する場合も発生する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、ループのプロローグまたはエピローグの無効演算を処理する装置及び方法を提供することである。
【課題を解決するための手段】
【０００５】
本発明の一態様によれば、ループのプロローグまたはエピローグで無効演算を処理する装置は、データの有効状態を保存する第１領域とそのデータを保存する第２領域とを含むレジスタファイルと、レジスタファイルから入力される１つ以上の入力ソースの第１領域値に基づいて、演算の有効性を判断し、１つ以上の入力ソースの第１領域値に基づいた値を含むデスティネーションを出力する機能ユニットと、を含みうる。
【０００６】
機能ユニットは、入力ソースの第１領域の値をＡＮＤ演算して、その演算の有効性を判断することができる。機能ユニットは、入力ソースの第１領域値をＡＮＤ演算した結果とプレディケートをさらにＡＮＤ演算して、その演算の有効性を判断することができる。
【０００７】
装置は、デスティネーションの第１領域値に基づいて、そのデスティネーションに対するレジスタファイルへの書き込み要請を処理する制御部をさらに含みうる。
【０００８】
制御部は、デスティネーションの第１領域値と書き込み許容（Ｗｒｉｔｅ  Ｅｎａｂｌｅ、ＷＥ）信号をＡＮＤ演算して、その結果によって、前記書き込み要請を処理することができる。
【０００９】
制御部は、リセット要請に応じて、レジスタファイル内の第１領域をリセットすることができる。制御部は、リセット要請に応じて、ＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）モードからＣＧＲＡ（Ｃｏａｒｓｅ  Ｇｒａｉｎｅｄ  Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ａｒｒａｙ）モードに伝送されるレジスタ値は除いてリセットすることができる。
【００１０】
本発明の一態様によれば、ループのプロローグまたはエピローグで無効演算を処理する方法は、データの有効状態を保存する第１領域とそのデータを保存する第２領域とを含むレジスタファイルから１つ以上の入力ソースが機能ユニットに入力される段階と、機能ユニットが、各入力ソースの第１領域値に基づいて、演算の有効性を判断する段階と、機能ユニットが、各入力ソースの第１領域値に基づいた値を含むデスティネーションを出力する段階と、を含みうる。
【００１１】
演算の有効性を判断する段階は、入力ソースの第１領域の値をＡＮＤ演算して、その演算の有効性を判断することができる。
【００１２】
演算の有効性を判断する段階は、入力ソースの第１領域値をＡＮＤ演算した結果とプレディケートをさらにＡＮＤ演算して、その演算の有効性を判断することができる。
【００１３】
その方法は、デスティネーションの第１領域値に基づいて、そのデスティネーションをレジスタファイルに記録するように要請する書き込み要請処理段階をさらに含みうる。
【００１４】
デスティネーションの書き込み要請処理段階は、デスティネーションの第１領域値と書き込み許容（ＷＥ）信号をＡＮＤ演算して、その結果によって、書き込み要請を処理することができる。
【００１５】
本発明の一態様によれば、ループのプロローグまたはエピローグで無効演算を処理する装置は、データと、そのデータが有効であるか否かを指示するデータの有効情報を保存するレジスタファイルと、レジスタファイルからデータとそのデータの有効情報とを含む入力ソースを入力されて、そのデータの演算を行い、その入力ソースのデータの有効情報に基づいて、演算が有効であるか否かを決定して、その演算の有効性を指示する演算の有効情報が含まれたデスティネーションを出力する機能ユニットと、を含みうる。
【００１６】
機能ユニットは、入力ソースのデータの有効情報についての演算を行うことによって、その演算の有効性を判断し、デスティネーションに含まれた演算の有効情報は、入力ソースのデータの有効情報に対して行われた演算の結果を含みうる。
【００１７】
入力ソースのデータは、複数のデータビットを含み、データの有効情報は、データ有効ビットを含みうる。デスティネーションは、入力ソースのデータに対する演算の遂行結果、データを含みうる。
【００１８】
機能ユニットは、レジスタファイルからデータとそのデータの有効情報とを含む複数の入力ソースを受信し、該受信されたあらゆる入力ソースに対する演算を行い、受信されたあらゆる入力ソースのデータの有効情報に基づいて、演算の有効性を決定して、その演算が有効であるか否かを指示する演算の有効情報を含むデスティネーションを出力することができる。
【００１９】
機能ユニットは、あらゆる入力ソースのデータの有効情報についてのＡＮＤ演算を行うことによって、演算の有効性を判断し、デスティネーションに含まれた演算の有効情報は、ＡＮＤ演算の結果を含みうる。
【００２０】
機能ユニットは、プレディケートを受信し、レジスタファイルからデータとそのデータの有効情報とを含む入力ソースを受信して、該受信された入力ソースに対する演算を行い、受信された入力ソースのデータの有効情報に基づいて、演算の有効性を決定して、その演算が有効であるか否かを指示する演算の有効情報を含むデスティネーションを出力することができる。
【００２１】
機能ユニットは、プレディケートと入力ソースのデータの有効情報をＡＮＤ演算して、演算の有効性を判断し、デスティネーションに含まれた演算の有効情報は、プレディケートと入力ソースのデータの有効情報をＡＮＤ演算した結果を含みうる。
【００２２】
その装置は、デスティネーションの演算の有効情報に基づいて、レジスタファイルにそのデスティネーションを記録するように要請する書き込み要請を処理する制御部をさらに含みうる。
【００２３】
制御部は、デスティネーションの演算の有効情報と書き込み許容（ＷＥ）信号のＡＮＤ演算を行い、そのＡＮＤ演算の結果に基づいて、デスティネーションをレジスタファイルに記録するか否かを判断することができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の一実施形態によるループのプロローグまたはエピローグの無効演算を処理する装置のブロック図である。
【図２】本発明の一実施形態による拡張されたデータとそのデータを支援するためのレジスタファイルの例である。
【図３】プロセッサのプレディケートを通じてガーディングする機能ユニットの構造である。
【図４】本発明の一実施形態による拡張されたデータを支援するための機能ユニットの例である。
【図５】再帰最小開始間隔（ｒｅｃｕｒｒｅｎｃｅ  ＭＩＩ（Ｍｉｎｉｍｕｍ  Ｉｎｉｔｉａｔｉｏｎ  Ｉｎｔｅｒｖａｌ））の例である。
【図６】本発明の一実施形態によるループのプロローグまたはエピローグの無効演算を処理する方法のフローチャートである。
【発明を実施するための形態】
【００２５】
その他の実施形態の具体的な事項は、詳細な説明及び図面に含まれている。本発明の利点及び特徴、そして、それらを果たす方法は、添付される図面と共に詳細に後述されている実施形態を参照すると、明確になる。しかし、本発明は、以下で開示される実施形態に限定されるものではなく、互いに異なる多様な形態で具現され、単に本実施形態は、本発明の開示を完全にし、当業者に発明の範疇を完全に知らせるために提供されるものであり、本発明は、請求項の範疇によって定義されるだけである。明細書の全体に亘って同じ参照符号は、同じ構成要素を指称する。
【００２６】
以下、本発明の実施形態によるループのプロローグまたはエピローグの無効演算を処理する装置及び方法を、図面を参考にして詳しく説明する。
【００２７】
図１は、本発明の一実施形態によるループのプロローグまたはエピローグの無効演算を処理する装置のブロック図である。本実施形態による無効演算処理装置１００は、ＣＧＲＡプロセッサの一構成であり得る。すなわち、ＣＧＲＡプロセッサは、多数の機能ユニットで構成され、各機能ユニットは、内部連結ネットワークで連結されている。また、多数のレジスタファイルとラッチとを含みうる。
【００２８】
ＣＧＲＡスケジューラは、ループのカーネルをマッピングするために、ソフトウェアパイプライニング技法を使う。ＣＧＲＡスケジューラは、高い稼働率を得るために、モジュロスケジューリング技法を利用するために、プロローグまたはエピローグでは、無効演算が含まれうる。一般的に、プレディケートを用いて、その無効演算をガーディングする方式が利用されるが、本実施形態では、以下で詳しく説明するように、コンパイラの性能向上のために、データの拡張概念を通じるガーディング方式が提示される。
【００２９】
図２は、本発明の一実施形態による拡張されたデータとそのデータを支援するためのレジスタファイルの例であって、図２の（ａ）は、データ（ｄａｔａ）の有効状態（例：有効−ｔｒｕｅ、無効−ｆａｌｓｅ）を表現する有効状態ビットｖ（例：１ビット）とそのデータを表現するデータビットｄａｔａ（例：１６、３２、６４、１２８）とからなる拡張されたデータの概念を表わす。図２の（ｂ）は、その拡張されたデータを支援するためのレジスタファイル１１０の構造を示したものである。
【００３０】
図１と図２とを参照して、本実施形態による無効演算処理装置１００を詳しく説明する。無効演算処理装置１００は、レジスタファイル１１０及び機能ユニット１２０を含み、追加的に制御部１３０をさらに含みうる。レジスタファイル１１０は、図２の（ａ）に例示された拡張されたデータ概念を支援するために、図２の（ｂ）に示したように、データの有効状態を保存する第１領域１１１とそのデータが保存される第２領域１１２とを含みうる。
【００３１】
一方、機能ユニット１２０は、１つ以上の入力ソースｉｎ＿ｓｒｃの第１領域値に基づいて、演算の有効性を判断する。この際、入力ソースｉｎ＿ｓｒｃは、レジスタファイル１１０または他の機能ユニット１２０から内部連結ネットワークを通じて入力されうる。機能ユニット１２０は、拡張されたデータ概念を支援することができる。すなわち、一般的なプレディケートを通じてループのプロローグまたはエピローグの無効演算をガーディングする方式だけではなく、１つ以上の入力ソースのデータの有効性が表現された第１領域の値を用いて、演算の有効性を判断し、ガーディング処理することができる。
【００３２】
また、機能ユニット１２０は、判断された演算の有効性によって、デスティネーションｏｕｔ＿ｄｓｔの第１領域値を生成させ、その第１領域とその演算の遂行結果を含む第２領域とを含むデスティネーションｏｕｔ＿ｄｓｔを出力する。判断の結果、その演算が無効な演算であれば、第１領域値であるその演算結果の有効性を‘ｆａｌｓｅ’として設定することができる。一方、その演算が有効な演算であれば、第１領域の値は、‘ｔｒｕｅ’として設定することができる。出力されたデスティネーションｏｕｔ＿ｄｓｔは、レジスタファイル１１０や他の機能ユニットに伝送される。
【００３３】
制御部１３０は、レジスタファイル１１０からデータを読み取る読み取り要請、レジスタファイル１１０に演算結果を記録する書き込み要請などを処理する。制御部１３０は、読み取り要請に応じて、図２の（ｂ）に示したように、レジスタファイル１１０から読み取りポートを通じて第１領域１１１のデータ有効状態値に関係なく、そのままデータを読み取る。
【００３４】
また、書き込み要請に応じて、機能ユニット１２０から出力されたデスティネーションｏｕｔ＿ｄｓｔをレジスタファイル１１０に記録する。この際、制御部１３０は、そのデスティネーションｏｕｔ＿ｄｓｔの第１領域値、すなわち、演算結果データの有効状態を表わすビット値に基づいて、書き込みを制御する。例えば、図２に示したように、制御部１３０は、デスティネーションｏｕｔ＿ｄｓｔの第１領域値を書き込み許容（ＷＥ）信号とＡＮＤ演算して、その結果が‘ｔｒｕｅ’である場合には、書き込みポートを通じてレジスタファイル１１０にそのデスティネーションｏｕｔ＿ｄｓｔを記録する。この際、第１領域の値は、レジスタファイルの第１領域に記録され、第２領域の値は、レジスタファイル１１０の第２領域に記録される。一方、その結果が‘ｆａｌｓｅ’である場合には、レジスタファイル１１０に記録しない。
【００３５】
また、制御部１３０は、ＣＧＲＡのループが始まると同時に発生するリセット要請に応じて、レジスタファイル１１０内の第１領域のデータ有効状態ビットをリセットすることができる。この際、ＶＬＩＷモードからＣＧＲＡモードに伝送されるレジスタ値は除いてリセットすることができる。
【００３６】
図３は、プロセッサのプレディケートを通じて無効演算をガーディングする機能ユニットの構造である。図４は、本発明の一実施形態による拡張されたデータを支援するための機能ユニットの例である。図３と図４とを参照して、機能ユニット１２０から拡張されたデータ概念を用いて、無効演算をガーディングする方法を説明する。
【００３７】
図３を参照すると、機能ユニットは、２つの入力ソース（Ｉｎｐｕｔ１、２）に対して無効演算を判断し、ガーディングするために別途のプレディケートを生成して、そのプレディケート情報（Ｐｒｅｄｉｃａｔｅ  Ｉｎｐｕｔ）がルーティングされなければならず、そのプレディケート情報を保存するための別途のレジスタファイルが必要である。また、構成メモリの無効な読み取り／書き込み演算もガーディングされる。しかし、図３に示したように、プレディケートを生成させ、その情報をルーティングすることは、コンパイラが担当するので、コンパイラのスケジューリング過程が非常に複雑になって、コンパイル性能が非常に落ちる。
【００３８】
図４を参照すると、機能ユニット１２０は、データの有効状態を表現したビットである第１領域の値とデータが表現された第２領域の値とを含むｎ個の入力ソースｉｎ＿ｓｒｃ  １〜ｉｎ＿ｓｒｃ  ｎを入力される。この際、入力ソースは、レジスタファイル１１０または他の機能ユニット１２０から入力される。
【００３９】
機能ユニット１２０は、入力されたｎ個の入力ソースｉｎ＿ｓｃｒ  １〜ｉｎ＿ｓｒｃ  ｎの第１領域値をＡＮＤ演算して、‘ｔｒｕｅ’である場合には、有効な演算と判断し、‘ｆａｌｓｅ’である場合には、無効演算と判断する。すなわち、何れか１つの入力ソースでも非有効なデータを含んだ場合には、無効な演算と判断する。
【００４０】
一方、追加的な態様によれば、プレディケート情報を必要に応じて独立して生成して、そのプレディケート情報と入力ソースｉｎ＿ｓｒｃ  １〜ｉｎ＿ｓｒｃ  ２の第１領域のデータ有効状態ビットとＡＮＤ演算を行って、無効演算か否かを判断することができる。
【００４１】
機能ユニット１２０は、その演算を行い、その遂行結果、データとその無効演算か否かの判断の結果を含んだデスティネーションｏｕｔ＿ｄｓｔを出力する。すなわち、デスティネーションｏｕｔ＿ｄｓｔの第１領域には、その無効演算か否かの判断の結果、有効であれば‘ｔｒｕｅ’、非有効であれば‘ｆａｌｓｅ’が保存され、第２領域には、その演算遂行結果が保存される。
【００４２】
図５は、機能ユニットで再帰最小開始間隔（ｒｅｃｕｒｒｅｎｃｅ  ＭＩＩ（Ｍｉｎｉｍｕｍ  Ｉｎｉｔｉａｔｉｏｎ  Ｉｎｔｅｒｖａｌ））を示す例である。図５を参照すると、プレディケートルーティングによるコンパイラのオーバーヘッドが分かる。すなわち、プレディケートを通じるガーディング方式は、機能ユニット、出力ラッチ、レジスタファイル、ＯＳラッチ、入力ラッチ、及び機能ユニット順に行われて、総サイクルは、５（演算待ち時間２＋ラッチ遅延３）である。一方、拡張されたデータ概念を利用した方式は、機能ユニット、レジスタファイル、ＯＳラッチ、入力ラッチ、機能ユニット順に行われ、総サイクルは、３（演算待ち時間１＋ラッチ遅延２）である。
【００４３】
これを通じて、コンパイラがプレディケートのルーティングにオーバーヘッドが多いことが分かる。したがって、プレディケートを使わないことによって、コンパイラの性能が大きく向上することが分かる。
【００４４】
図６は、本発明の一実施形態によるソフトウェアパイプライン化されたループのプロローグまたはエピローグの無効演算を処理する方法のフローチャートである。
【００４５】
図６を参照して、無効演算を処理する方法を説明する。まず、１つ以上の入力ソースｉｎ＿ｓｒｃ  １〜ｉｎ＿ｓｃｒ  ｎが機能ユニット１２０に入力される（段階３１０）。制御部１３０が、読み取り要請に応じてレジスタファイル１１０から読み取って機能ユニット１２０に入力することができる。レジスタファイルは、図２の（ｂ）に示したように、データ有効状態値が保存される第１領域１１０とそのデータ値が保存される第２領域１２０とを含みうる。制御部１３０は、読み取り要請に応じてデータを読み取る時、そのデータの有効状態、すなわち、第１領域の値は考慮せず、その状態の通りに読み取って機能ユニット１２０に入力することができる。
【００４６】
次いで、機能ユニット１２０が、１つ以上の入力ソースｉｎ＿ｓｒｃ  １〜ｉｎ＿ｓｃｒ  ｎの第１領域値に基づいて、演算の有効性を判断する（段階３２０）。すなわち、機能ユニット１２０は、入力されたｎ個の入力ソースｉｎ＿ｓｃｒ  １〜ｉｎ＿ｓｒｃ  ｎの第１領域値をＡＮＤ演算して、‘ｔｒｕｅ’である場合には、有効な演算と判断し、‘ｆａｌｓｅ’である場合には、無効演算と判断することができる。一方、必要に応じてプレディケート情報を独立して生成して、そのプレディケート情報と入力ソースｉｎ＿ｓｒｃ  １〜ｉｎ＿ｓｒｃ  ２の第１領域のデータ有効状態ビットとＡＮＤ演算を行って、無効演算か否かを判断することができる。
【００４７】
次いで、機能ユニット１２０は、その演算を行い、その遂行結果、データとその無効演算か否かの判断の結果を含んだデスティネーションｏｕｔ＿ｄｓｔを出力する（段階３３０）。機能ユニット１２０は、デスティネーションｏｕｔ＿ｄｓｔの第１領域の値でその無効演算か否かの判断の結果、有効であれば‘ｔｒｕｅ’、非有効であれば‘ｆａｌｓｅ’を生成させ、第２領域には、その演算遂行結果を含む。
【００４８】
最後に、制御部１３０は、そのデスティネーションｏｕｔ＿ｄｓｔの第１領域の値に基づいて、レジスタファイルにそのデスティネーションｏｕｔ＿ｄｓｔを記録するか否かを決定して、その決定によって、書き込み要請を処理することができる（段階３４０）。例えば、図２を参照すると、制御部１３０は、デスティネーションｏｕｔ＿ｄｓｔの第１領域の値を書き込み許容（ＷＥ）信号とＡＮＤ演算して、その結果が、‘ｔｒｕｅ’である場合には、レジスタファイル１１０にそのデスティネーションｏｕｔ＿ｄｓｔを記録する。この際、第１領域の値をレジスタファイルの第１領域に記録され、第２領域の値は、レジスタファイル１１０の第２領域に記録される。一方、その結果が、‘ｆａｌｓｅ’である場合には、レジスタファイル１１０に記録しない。
【００４９】
一方、本発明の実施形態は、コンピュータで読み取り可能な記録媒体にコンピュータで読み取り可能なコードとして具現しうる。コンピュータで読み取り可能な記録媒体は、コンピュータシステムによって読み取れるデータが保存されるあらゆる種類の記録装置を含む。
【００５０】
コンピュータで読み取り可能な記録媒体の例としては、ＲＯＭ、ＲＡＭ、ＣＤ−ＲＯＭ、磁気テープ、フロッピー（登録商標）ディスク、光データ保存装置などがあり、またキャリアウェーブ（例えば、インターネットを介した伝送）の形態で具現するものを含む。また、コンピュータで読み取り可能な記録媒体は、ネットワークで連結されたコンピュータシステムに分散されて、分散方式でコンピュータで読み取り可能なコードとして保存されて実行可能である。そして、本発明を具現するための機能的なプログラム、コード及びコードセグメントは、本発明が属する技術分野のプログラマーによって容易に推論されうる。
【００５１】
当業者なら、本発明が、その技術的思想や必須的な特徴を変更せずとも、他の具体的な形態で実施されることを理解できるであろう。したがって、前述した実施形態は、あらゆる面で例示的なものであり、限定的ではないということを理解しなければならない。本発明の範囲は、前記詳細な説明よりは後述する特許請求の範囲によって表われ、特許請求の範囲の意味及び範囲、そして、その均等概念から導出されるあらゆる変更または変形された形態が、本発明の範囲に含まれると解析しなければならない。
【産業上の利用可能性】
【００５２】
本発明は、ループのプロローグまたはエピローグの無効演算を処理する装置及び方法関連の技術分野に適用可能である。
【符号の説明】
【００５３】
１００  無効演算処理装置
１１０  レジスタファイル
１１１  第１領域
１１２  第２領域
１２０  機能ユニット
１３０  制御部
【図１】
2013200873.tif 000003
【図２】
2013200873.tif 000004
【図３】
2013200873.tif 000005
【図４】
2013200873.tif 000006
【図５】
2013200873.tif 000007
【図６】
2013200873.tif 000008