JP2013200873A - ループのプロローグまたはエピローグの無効演算を処理する装置及び方法 - Google Patents

ループのプロローグまたはエピローグの無効演算を処理する装置及び方法 Download PDF

Info

Publication number
JP2013200873A
JP2013200873A JP2013060774A JP2013060774A JP2013200873A JP 2013200873 A JP2013200873 A JP 2013200873A JP 2013060774 A JP2013060774 A JP 2013060774A JP 2013060774 A JP2013060774 A JP 2013060774A JP 2013200873 A JP2013200873 A JP 2013200873A
Authority
JP
Japan
Prior art keywords
data
destination
validity
input source
valid
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.)
Granted
Application number
JP2013060774A
Other languages
English (en)
Other versions
JP6254352B2 (ja
Inventor
Seong-Hun Jeong
聖 勳 鄭
Egger Bernhard
エッガー ベルンハルト
Won-Sup Kim
元 燮 金
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Seoul National University Industry Foundation
Original Assignee
Samsung Electronics Co Ltd
Seoul National University Industry Foundation
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd, Seoul National University Industry Foundation filed Critical Samsung Electronics Co Ltd
Publication of JP2013200873A publication Critical patent/JP2013200873A/ja
Application granted granted Critical
Publication of JP6254352B2 publication Critical patent/JP6254352B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】 ループのプロローグまたはエピローグの無効演算を処理する装置及び方法を提供する。
【解決手段】 本発明は、ソフトウェアパイプライン化されたループのプロローグまたはエピローグで無効演算を処理する装置に関するものである。本発明の一実施形態による無効演算処理装置は、データの有効状態を保存する第1領域とそのデータを保存する第2領域とを含むレジスタファイルと、そのレジスタファイルから入力される1つ以上の入力ソースの第1領域値に基づいて、演算の非有効性を判断し、第1領域値に基づいた値を含むデスティネーションを出力する機能ユニットと、を含みうる。
【選択図】 図1

Description

本発明は、ソフトウェアパイプライン化されたループのプロローグまたはエピローグで無効演算を処理する技術に関する。
プロセッサでソフトウェアパイプライン方法は、実行するソフトウェアを段階別に分けて、パイプライン形態で行う方法であって、処理能を大きく高めうる。しかし、CGRA(Coarse−Grained Reconfigurable Architecture)プロセッサは、モジュロスケジューリングを通じてプログラムをスケジューリングするために、ループのプロローグやエピローグで無効演算が含まれうる。
一般的に、CGRAプロセッサは、ループのプロローグまたはエピローグの無効演算が、プログラム状態を変更しないようにする(ガーディング、guarding)ために、プレディケート情報を使う。ガーディングとは、その無効演算の実行を制御するものであって、その無効演算が機能ユニットで実際に行われても、レジスタファイルに記録されないようにすることを言う。そのプレディケート情報を使うためには、プレディケートのためのCGRA内のルーティング情報が必要である。この際、プレディケートの計算とルーティングは、CGRAコンパイラが担当するが、これは、コンパイラのスケジューリング過程を非常に複雑にする原因となり、複雑なループのカーネルの場合には、これによってスケジューリングを失敗する場合も発生する。
本発明は、ループのプロローグまたはエピローグの無効演算を処理する装置及び方法を提供することである。
本発明の一態様によれば、ループのプロローグまたはエピローグで無効演算を処理する装置は、データの有効状態を保存する第1領域とそのデータを保存する第2領域とを含むレジスタファイルと、レジスタファイルから入力される1つ以上の入力ソースの第1領域値に基づいて、演算の有効性を判断し、1つ以上の入力ソースの第1領域値に基づいた値を含むデスティネーションを出力する機能ユニットと、を含みうる。
機能ユニットは、入力ソースの第1領域の値をAND演算して、その演算の有効性を判断することができる。機能ユニットは、入力ソースの第1領域値をAND演算した結果とプレディケートをさらにAND演算して、その演算の有効性を判断することができる。
装置は、デスティネーションの第1領域値に基づいて、そのデスティネーションに対するレジスタファイルへの書き込み要請を処理する制御部をさらに含みうる。
制御部は、デスティネーションの第1領域値と書き込み許容(Write Enable、WE)信号をAND演算して、その結果によって、前記書き込み要請を処理することができる。
制御部は、リセット要請に応じて、レジスタファイル内の第1領域をリセットすることができる。制御部は、リセット要請に応じて、VLIW(Very Long Instruction Word)モードからCGRA(Coarse Grained Reconfigurable Array)モードに伝送されるレジスタ値は除いてリセットすることができる。
本発明の一態様によれば、ループのプロローグまたはエピローグで無効演算を処理する方法は、データの有効状態を保存する第1領域とそのデータを保存する第2領域とを含むレジスタファイルから1つ以上の入力ソースが機能ユニットに入力される段階と、機能ユニットが、各入力ソースの第1領域値に基づいて、演算の有効性を判断する段階と、機能ユニットが、各入力ソースの第1領域値に基づいた値を含むデスティネーションを出力する段階と、を含みうる。
演算の有効性を判断する段階は、入力ソースの第1領域の値をAND演算して、その演算の有効性を判断することができる。
演算の有効性を判断する段階は、入力ソースの第1領域値をAND演算した結果とプレディケートをさらにAND演算して、その演算の有効性を判断することができる。
その方法は、デスティネーションの第1領域値に基づいて、そのデスティネーションをレジスタファイルに記録するように要請する書き込み要請処理段階をさらに含みうる。
デスティネーションの書き込み要請処理段階は、デスティネーションの第1領域値と書き込み許容(WE)信号をAND演算して、その結果によって、書き込み要請を処理することができる。
本発明の一態様によれば、ループのプロローグまたはエピローグで無効演算を処理する装置は、データと、そのデータが有効であるか否かを指示するデータの有効情報を保存するレジスタファイルと、レジスタファイルからデータとそのデータの有効情報とを含む入力ソースを入力されて、そのデータの演算を行い、その入力ソースのデータの有効情報に基づいて、演算が有効であるか否かを決定して、その演算の有効性を指示する演算の有効情報が含まれたデスティネーションを出力する機能ユニットと、を含みうる。
機能ユニットは、入力ソースのデータの有効情報についての演算を行うことによって、その演算の有効性を判断し、デスティネーションに含まれた演算の有効情報は、入力ソースのデータの有効情報に対して行われた演算の結果を含みうる。
入力ソースのデータは、複数のデータビットを含み、データの有効情報は、データ有効ビットを含みうる。デスティネーションは、入力ソースのデータに対する演算の遂行結果、データを含みうる。
機能ユニットは、レジスタファイルからデータとそのデータの有効情報とを含む複数の入力ソースを受信し、該受信されたあらゆる入力ソースに対する演算を行い、受信されたあらゆる入力ソースのデータの有効情報に基づいて、演算の有効性を決定して、その演算が有効であるか否かを指示する演算の有効情報を含むデスティネーションを出力することができる。
機能ユニットは、あらゆる入力ソースのデータの有効情報についてのAND演算を行うことによって、演算の有効性を判断し、デスティネーションに含まれた演算の有効情報は、AND演算の結果を含みうる。
機能ユニットは、プレディケートを受信し、レジスタファイルからデータとそのデータの有効情報とを含む入力ソースを受信して、該受信された入力ソースに対する演算を行い、受信された入力ソースのデータの有効情報に基づいて、演算の有効性を決定して、その演算が有効であるか否かを指示する演算の有効情報を含むデスティネーションを出力することができる。
機能ユニットは、プレディケートと入力ソースのデータの有効情報をAND演算して、演算の有効性を判断し、デスティネーションに含まれた演算の有効情報は、プレディケートと入力ソースのデータの有効情報をAND演算した結果を含みうる。
その装置は、デスティネーションの演算の有効情報に基づいて、レジスタファイルにそのデスティネーションを記録するように要請する書き込み要請を処理する制御部をさらに含みうる。
制御部は、デスティネーションの演算の有効情報と書き込み許容(WE)信号のAND演算を行い、そのAND演算の結果に基づいて、デスティネーションをレジスタファイルに記録するか否かを判断することができる。
本発明の一実施形態によるループのプロローグまたはエピローグの無効演算を処理する装置のブロック図である。 本発明の一実施形態による拡張されたデータとそのデータを支援するためのレジスタファイルの例である。 プロセッサのプレディケートを通じてガーディングする機能ユニットの構造である。 本発明の一実施形態による拡張されたデータを支援するための機能ユニットの例である。 再帰最小開始間隔(recurrence MII(Minimum Initiation Interval))の例である。 本発明の一実施形態によるループのプロローグまたはエピローグの無効演算を処理する方法のフローチャートである。
その他の実施形態の具体的な事項は、詳細な説明及び図面に含まれている。本発明の利点及び特徴、そして、それらを果たす方法は、添付される図面と共に詳細に後述されている実施形態を参照すると、明確になる。しかし、本発明は、以下で開示される実施形態に限定されるものではなく、互いに異なる多様な形態で具現され、単に本実施形態は、本発明の開示を完全にし、当業者に発明の範疇を完全に知らせるために提供されるものであり、本発明は、請求項の範疇によって定義されるだけである。明細書の全体に亘って同じ参照符号は、同じ構成要素を指称する。
以下、本発明の実施形態によるループのプロローグまたはエピローグの無効演算を処理する装置及び方法を、図面を参考にして詳しく説明する。
図1は、本発明の一実施形態によるループのプロローグまたはエピローグの無効演算を処理する装置のブロック図である。本実施形態による無効演算処理装置100は、CGRAプロセッサの一構成であり得る。すなわち、CGRAプロセッサは、多数の機能ユニットで構成され、各機能ユニットは、内部連結ネットワークで連結されている。また、多数のレジスタファイルとラッチとを含みうる。
CGRAスケジューラは、ループのカーネルをマッピングするために、ソフトウェアパイプライニング技法を使う。CGRAスケジューラは、高い稼働率を得るために、モジュロスケジューリング技法を利用するために、プロローグまたはエピローグでは、無効演算が含まれうる。一般的に、プレディケートを用いて、その無効演算をガーディングする方式が利用されるが、本実施形態では、以下で詳しく説明するように、コンパイラの性能向上のために、データの拡張概念を通じるガーディング方式が提示される。
図2は、本発明の一実施形態による拡張されたデータとそのデータを支援するためのレジスタファイルの例であって、図2の(a)は、データ(data)の有効状態(例:有効−true、無効−false)を表現する有効状態ビットv(例:1ビット)とそのデータを表現するデータビットdata(例:16、32、64、128)とからなる拡張されたデータの概念を表わす。図2の(b)は、その拡張されたデータを支援するためのレジスタファイル110の構造を示したものである。
図1と図2とを参照して、本実施形態による無効演算処理装置100を詳しく説明する。無効演算処理装置100は、レジスタファイル110及び機能ユニット120を含み、追加的に制御部130をさらに含みうる。レジスタファイル110は、図2の(a)に例示された拡張されたデータ概念を支援するために、図2の(b)に示したように、データの有効状態を保存する第1領域111とそのデータが保存される第2領域112とを含みうる。
一方、機能ユニット120は、1つ以上の入力ソースin_srcの第1領域値に基づいて、演算の有効性を判断する。この際、入力ソースin_srcは、レジスタファイル110または他の機能ユニット120から内部連結ネットワークを通じて入力されうる。機能ユニット120は、拡張されたデータ概念を支援することができる。すなわち、一般的なプレディケートを通じてループのプロローグまたはエピローグの無効演算をガーディングする方式だけではなく、1つ以上の入力ソースのデータの有効性が表現された第1領域の値を用いて、演算の有効性を判断し、ガーディング処理することができる。
また、機能ユニット120は、判断された演算の有効性によって、デスティネーションout_dstの第1領域値を生成させ、その第1領域とその演算の遂行結果を含む第2領域とを含むデスティネーションout_dstを出力する。判断の結果、その演算が無効な演算であれば、第1領域値であるその演算結果の有効性を‘false’として設定することができる。一方、その演算が有効な演算であれば、第1領域の値は、‘true’として設定することができる。出力されたデスティネーションout_dstは、レジスタファイル110や他の機能ユニットに伝送される。
制御部130は、レジスタファイル110からデータを読み取る読み取り要請、レジスタファイル110に演算結果を記録する書き込み要請などを処理する。制御部130は、読み取り要請に応じて、図2の(b)に示したように、レジスタファイル110から読み取りポートを通じて第1領域111のデータ有効状態値に関係なく、そのままデータを読み取る。
また、書き込み要請に応じて、機能ユニット120から出力されたデスティネーションout_dstをレジスタファイル110に記録する。この際、制御部130は、そのデスティネーションout_dstの第1領域値、すなわち、演算結果データの有効状態を表わすビット値に基づいて、書き込みを制御する。例えば、図2に示したように、制御部130は、デスティネーションout_dstの第1領域値を書き込み許容(WE)信号とAND演算して、その結果が‘true’である場合には、書き込みポートを通じてレジスタファイル110にそのデスティネーションout_dstを記録する。この際、第1領域の値は、レジスタファイルの第1領域に記録され、第2領域の値は、レジスタファイル110の第2領域に記録される。一方、その結果が‘false’である場合には、レジスタファイル110に記録しない。
また、制御部130は、CGRAのループが始まると同時に発生するリセット要請に応じて、レジスタファイル110内の第1領域のデータ有効状態ビットをリセットすることができる。この際、VLIWモードからCGRAモードに伝送されるレジスタ値は除いてリセットすることができる。
図3は、プロセッサのプレディケートを通じて無効演算をガーディングする機能ユニットの構造である。図4は、本発明の一実施形態による拡張されたデータを支援するための機能ユニットの例である。図3と図4とを参照して、機能ユニット120から拡張されたデータ概念を用いて、無効演算をガーディングする方法を説明する。
図3を参照すると、機能ユニットは、2つの入力ソース(Input1、2)に対して無効演算を判断し、ガーディングするために別途のプレディケートを生成して、そのプレディケート情報(Predicate Input)がルーティングされなければならず、そのプレディケート情報を保存するための別途のレジスタファイルが必要である。また、構成メモリの無効な読み取り/書き込み演算もガーディングされる。しかし、図3に示したように、プレディケートを生成させ、その情報をルーティングすることは、コンパイラが担当するので、コンパイラのスケジューリング過程が非常に複雑になって、コンパイル性能が非常に落ちる。
図4を参照すると、機能ユニット120は、データの有効状態を表現したビットである第1領域の値とデータが表現された第2領域の値とを含むn個の入力ソースin_src 1〜in_src nを入力される。この際、入力ソースは、レジスタファイル110または他の機能ユニット120から入力される。
機能ユニット120は、入力されたn個の入力ソースin_scr 1〜in_src nの第1領域値をAND演算して、‘true’である場合には、有効な演算と判断し、‘false’である場合には、無効演算と判断する。すなわち、何れか1つの入力ソースでも非有効なデータを含んだ場合には、無効な演算と判断する。
一方、追加的な態様によれば、プレディケート情報を必要に応じて独立して生成して、そのプレディケート情報と入力ソースin_src 1〜in_src 2の第1領域のデータ有効状態ビットとAND演算を行って、無効演算か否かを判断することができる。
機能ユニット120は、その演算を行い、その遂行結果、データとその無効演算か否かの判断の結果を含んだデスティネーションout_dstを出力する。すなわち、デスティネーションout_dstの第1領域には、その無効演算か否かの判断の結果、有効であれば‘true’、非有効であれば‘false’が保存され、第2領域には、その演算遂行結果が保存される。
図5は、機能ユニットで再帰最小開始間隔(recurrence MII(Minimum Initiation Interval))を示す例である。図5を参照すると、プレディケートルーティングによるコンパイラのオーバーヘッドが分かる。すなわち、プレディケートを通じるガーディング方式は、機能ユニット、出力ラッチ、レジスタファイル、OSラッチ、入力ラッチ、及び機能ユニット順に行われて、総サイクルは、5(演算待ち時間2+ラッチ遅延3)である。一方、拡張されたデータ概念を利用した方式は、機能ユニット、レジスタファイル、OSラッチ、入力ラッチ、機能ユニット順に行われ、総サイクルは、3(演算待ち時間1+ラッチ遅延2)である。
これを通じて、コンパイラがプレディケートのルーティングにオーバーヘッドが多いことが分かる。したがって、プレディケートを使わないことによって、コンパイラの性能が大きく向上することが分かる。
図6は、本発明の一実施形態によるソフトウェアパイプライン化されたループのプロローグまたはエピローグの無効演算を処理する方法のフローチャートである。
図6を参照して、無効演算を処理する方法を説明する。まず、1つ以上の入力ソースin_src 1〜in_scr nが機能ユニット120に入力される(段階310)。制御部130が、読み取り要請に応じてレジスタファイル110から読み取って機能ユニット120に入力することができる。レジスタファイルは、図2の(b)に示したように、データ有効状態値が保存される第1領域110とそのデータ値が保存される第2領域120とを含みうる。制御部130は、読み取り要請に応じてデータを読み取る時、そのデータの有効状態、すなわち、第1領域の値は考慮せず、その状態の通りに読み取って機能ユニット120に入力することができる。
次いで、機能ユニット120が、1つ以上の入力ソースin_src 1〜in_scr nの第1領域値に基づいて、演算の有効性を判断する(段階320)。すなわち、機能ユニット120は、入力されたn個の入力ソースin_scr 1〜in_src nの第1領域値をAND演算して、‘true’である場合には、有効な演算と判断し、‘false’である場合には、無効演算と判断することができる。一方、必要に応じてプレディケート情報を独立して生成して、そのプレディケート情報と入力ソースin_src 1〜in_src 2の第1領域のデータ有効状態ビットとAND演算を行って、無効演算か否かを判断することができる。
次いで、機能ユニット120は、その演算を行い、その遂行結果、データとその無効演算か否かの判断の結果を含んだデスティネーションout_dstを出力する(段階330)。機能ユニット120は、デスティネーションout_dstの第1領域の値でその無効演算か否かの判断の結果、有効であれば‘true’、非有効であれば‘false’を生成させ、第2領域には、その演算遂行結果を含む。
最後に、制御部130は、そのデスティネーションout_dstの第1領域の値に基づいて、レジスタファイルにそのデスティネーションout_dstを記録するか否かを決定して、その決定によって、書き込み要請を処理することができる(段階340)。例えば、図2を参照すると、制御部130は、デスティネーションout_dstの第1領域の値を書き込み許容(WE)信号とAND演算して、その結果が、‘true’である場合には、レジスタファイル110にそのデスティネーションout_dstを記録する。この際、第1領域の値をレジスタファイルの第1領域に記録され、第2領域の値は、レジスタファイル110の第2領域に記録される。一方、その結果が、‘false’である場合には、レジスタファイル110に記録しない。
一方、本発明の実施形態は、コンピュータで読み取り可能な記録媒体にコンピュータで読み取り可能なコードとして具現しうる。コンピュータで読み取り可能な記録媒体は、コンピュータシステムによって読み取れるデータが保存されるあらゆる種類の記録装置を含む。
コンピュータで読み取り可能な記録媒体の例としては、ROM、RAM、CD−ROM、磁気テープ、フロッピー(登録商標)ディスク、光データ保存装置などがあり、またキャリアウェーブ(例えば、インターネットを介した伝送)の形態で具現するものを含む。また、コンピュータで読み取り可能な記録媒体は、ネットワークで連結されたコンピュータシステムに分散されて、分散方式でコンピュータで読み取り可能なコードとして保存されて実行可能である。そして、本発明を具現するための機能的なプログラム、コード及びコードセグメントは、本発明が属する技術分野のプログラマーによって容易に推論されうる。
当業者なら、本発明が、その技術的思想や必須的な特徴を変更せずとも、他の具体的な形態で実施されることを理解できるであろう。したがって、前述した実施形態は、あらゆる面で例示的なものであり、限定的ではないということを理解しなければならない。本発明の範囲は、前記詳細な説明よりは後述する特許請求の範囲によって表われ、特許請求の範囲の意味及び範囲、そして、その均等概念から導出されるあらゆる変更または変形された形態が、本発明の範囲に含まれると解析しなければならない。
本発明は、ループのプロローグまたはエピローグの無効演算を処理する装置及び方法関連の技術分野に適用可能である。
100 無効演算処理装置
110 レジスタファイル
111 第1領域
112 第2領域
120 機能ユニット
130 制御部

Claims (22)

  1. データの有効状態を保存する第1領域とそのデータを保存する第2領域とを含むレジスタファイルと、
    前記レジスタファイルから入力される1つ以上の入力ソースの第1領域値に基づいて、演算の有効性を判断し、前記1つ以上の入力ソースの第1領域値に基づいた値を含むデスティネーションを出力する機能ユニットと、
    を含むループのプロローグまたはエピローグで無効演算を処理する装置。
  2. 前記機能ユニットは、
    前記入力ソースの第1領域の値をAND演算して、その演算の有効性を判断する請求項1に記載の装置。
  3. 前記機能ユニットは、
    前記入力ソースの第1領域値をAND演算した結果とプレディケートをさらにAND演算して、その演算の有効性を判断する請求項2に記載の装置。
  4. 前記デスティネーションの第1領域値に基づいて、そのデスティネーションに対する前記レジスタファイルへの書き込み要請を処理する制御部をさらに含む請求項1乃至3のいずれか一項に記載の装置。
  5. 前記制御部は、
    前記デスティネーションの第1領域値と書き込み許容(Write Enable、WE)信号をAND演算して、その結果によって、前記書き込み要請を処理する請求項4に記載の装置。
  6. 前記制御部は、
    リセット要請に応じて、前記レジスタファイル内の第1領域をリセットする請求項4又は5に記載の装置。
  7. 前記制御部は、
    前記リセット要請に応じて、VLIW(Very Long InstructionWord)モードからCGRA(Coarse Grained Reconfigurable Array)モードに伝送されるレジスタ値は除いてリセットする請求項6に記載の装置。
  8. データの有効状態を保存する第1領域とそのデータを保存する第2領域とを含むレジスタファイルから1つ以上の入力ソースが機能ユニットに入力される段階と、
    前記機能ユニットが、前記各入力ソースの第1領域値に基づいて、演算の有効性を判断する段階と、
    前記機能ユニットが、前記各入力ソースの第1領域値に基づいた値を含むデスティネーションを出力する段階と、
    を含むループのプロローグまたはエピローグで無効演算を処理する方法。
  9. 前記演算の有効性を判断する段階は、
    前記入力ソースの第1領域の値をAND演算して、その演算の有効性を判断する請求項8に記載の方法。
  10. 前記演算の有効性を判断する段階は、
    前記入力ソースの第1領域値をAND演算した結果とプレディケートをさらにAND演算して、その演算の有効性を判断する請求項9に記載の方法。
  11. 前記デスティネーションの第1領域値に基づいて、そのデスティネーションの前記レジスタファイルへの記録を要請する、書き込み要請処理段階をさらに含む請求項8乃至10のいずれか一項に記載の方法。
  12. 前記デスティネーションの書き込み要請処理段階は、
    前記デスティネーションの第1領域値と書き込み許容(WE)信号をAND演算して、その結果によって、前記書き込み要請を処理する請求項11に記載の方法。
  13. データと、そのデータが有効であるか否かを指示するデータの有効情報を保存するレジスタファイルと、
    前記レジスタファイルからデータとそのデータの有効情報とを含む入力ソースを入力されて、そのデータの演算を行い、その入力ソースのデータの有効情報に基づいて、演算が有効であるか否かを決定して、その演算の有効性を指示する演算の有効情報が含まれたデスティネーションを出力する機能ユニットと、
    を含むループのプロローグまたはエピローグで無効演算を処理する装置。
  14. 前記機能ユニットは、
    入力ソースのデータの有効情報についての演算を行うことによって、その演算の有効性を判断し、
    前記デスティネーションに含まれた演算の有効情報は、前記入力ソースのデータの有効情報に対して行われた演算の結果を含む請求項13に記載の装置。
  15. 前記入力ソースのデータは、複数のデータビットを含み、前記データの有効情報は、データ有効ビットを含む請求項13又は14に記載の装置。
  16. 前記デスティネーションは、
    前記入力ソースのデータに対する演算の遂行結果、データを含む請求項13乃至15のいずれか一項に記載の装置。
  17. 前記機能ユニットは、
    レジスタファイルからデータとそのデータの有効情報とを含む複数の入力ソースを受信し、該受信されたあらゆる入力ソースに対する演算を行い、受信されたあらゆる入力ソースのデータの有効情報に基づいて、演算の有効性を決定して、その演算が有効であるか否かを指示する演算の有効情報を含むデスティネーションを出力する請求項13乃至16のいずれか一項に記載の装置。
  18. 前記機能ユニットは、
    あらゆる入力ソースのデータの有効情報についてのAND演算を行うことによって、演算の有効性を判断し、
    前記デスティネーションに含まれた演算の有効情報は、前記AND演算の結果を含む請求項17に記載の装置。
  19. 前記機能ユニットは、
    プレディケートを受信し、
    レジスタファイルからデータとそのデータの有効情報とを含む入力ソースを受信して、該受信された入力ソースに対する演算を行い、受信された入力ソースのデータの有効情報に基づいて、演算の有効性を決定して、その演算が有効であるか否かを指示する演算の有効情報を含むデスティネーションを出力する請求項13乃至18のいずれか一項に記載の装置。
  20. 前記機能ユニットは、
    前記プレディケートと前記入力ソースのデータの有効情報をAND演算して、演算の有効性を判断し、
    前記デスティネーションに含まれた演算の有効情報は、前記プレディケートと入力ソースのデータの有効情報をAND演算した結果を含む請求項19に記載の装置。
  21. 前記デスティネーションの演算の有効情報に基づいて、前記レジスタファイルにそのデスティネーションを記録するように要請する書き込み要請を処理する制御部をさらに含む請求項13乃至20のいずれか一項に記載の装置。
  22. 前記制御部は、
    前記デスティネーションの演算の有効情報と書き込み許容(WE)信号のAND演算を行い、そのAND演算の結果に基づいて、デスティネーションをレジスタファイルに記録するか否かを判断する請求項21に記載の装置。
JP2013060774A 2012-03-26 2013-03-22 ループのプロローグまたはエピローグの無効演算を処理する装置及び方法 Active JP6254352B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2012-0030695 2012-03-26
KR1020120030695A KR101910934B1 (ko) 2012-03-26 2012-03-26 루프의 프롤로그 또는 에필로그의 비유효 연산을 처리하는 장치 및 방법

Publications (2)

Publication Number Publication Date
JP2013200873A true JP2013200873A (ja) 2013-10-03
JP6254352B2 JP6254352B2 (ja) 2017-12-27

Family

ID=49213456

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013060774A Active JP6254352B2 (ja) 2012-03-26 2013-03-22 ループのプロローグまたはエピローグの無効演算を処理する装置及び方法

Country Status (3)

Country Link
US (1) US9411582B2 (ja)
JP (1) JP6254352B2 (ja)
KR (1) KR101910934B1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11507493B1 (en) * 2021-08-18 2022-11-22 Micron Technology, Inc. Debugging dataflow computer architectures

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003108387A (ja) * 2001-09-27 2003-04-11 Toshiba Corp ソフトウエア・パイプライニング処理方法及びソフトウエア・パイプライニング処理装置
US20040088526A1 (en) * 2002-10-30 2004-05-06 Stmicroelectronics, Inc. Predicated execution using operand predicates
US20070288930A1 (en) * 2006-06-12 2007-12-13 Samsung Electronics Co., Ltd. Multitasking method and apparatus for reconfigurable array
JP2009530924A (ja) * 2006-03-17 2009-08-27 アンテルユニヴェルシテール・ミクロ−エレクトロニカ・サントリュム・ヴェー・ゼッド・ドゥブルヴェ 再構成可能なマルチ処理粗粒アレイ
US20100268862A1 (en) * 2009-04-20 2010-10-21 Park Jae-Un Reconfigurable processor and method of reconfiguring the same
US20110099555A1 (en) * 2009-10-23 2011-04-28 Samsung Electronics Co., Ltd. Reconfigurable processor and method

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3006204B2 (ja) * 1991-09-13 2000-02-07 松下電器産業株式会社 情報処理装置
US5560003A (en) 1992-12-21 1996-09-24 Iowa State University Research Foundation, Inc. System and hardware module for incremental real time garbage collection and memory management
JPH1185512A (ja) 1997-09-03 1999-03-30 Fujitsu Ltd 命令圧縮格納および命令復元機能を有するデータ処理装置
KR100337149B1 (ko) * 2000-07-05 2002-05-18 권 기 홍 프로그램 테스트 및 디버깅이 용이한 중앙처리장치
US6925550B2 (en) * 2002-01-02 2005-08-02 Intel Corporation Speculative scheduling of instructions with source operand validity bit and rescheduling upon carried over destination operand invalid bit detection
US20030145309A1 (en) 2002-01-18 2003-07-31 Rajendra Inamdar Probe description language
US6986131B2 (en) 2002-06-18 2006-01-10 Hewlett-Packard Development Company, L.P. Method and apparatus for efficient code generation for modulo scheduled uncounted loops
US7415601B2 (en) * 2002-06-28 2008-08-19 Motorola, Inc. Method and apparatus for elimination of prolog and epilog instructions in a vector processor using data validity tags and sink counters

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003108387A (ja) * 2001-09-27 2003-04-11 Toshiba Corp ソフトウエア・パイプライニング処理方法及びソフトウエア・パイプライニング処理装置
US20040088526A1 (en) * 2002-10-30 2004-05-06 Stmicroelectronics, Inc. Predicated execution using operand predicates
JP2009530924A (ja) * 2006-03-17 2009-08-27 アンテルユニヴェルシテール・ミクロ−エレクトロニカ・サントリュム・ヴェー・ゼッド・ドゥブルヴェ 再構成可能なマルチ処理粗粒アレイ
US20070288930A1 (en) * 2006-06-12 2007-12-13 Samsung Electronics Co., Ltd. Multitasking method and apparatus for reconfigurable array
US20100268862A1 (en) * 2009-04-20 2010-10-21 Park Jae-Un Reconfigurable processor and method of reconfiguring the same
US20110099555A1 (en) * 2009-10-23 2011-04-28 Samsung Electronics Co., Ltd. Reconfigurable processor and method

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
IA-64 APPLICATION INSTRUCTION SET ARCHITECTURE GUIDE REVISION 1.0, JPN6017008621, 1999, pages Pages:3-1〜3-3, 4-5〜4-11 *
中西知嘉子,安藤秀樹,原哲也,中屋雅夫: "パス選択によるソフトウェアパイプライニング", 電子情報通信学会論文誌, vol. Vol:J80-D-I,No:9, JPN6017043576, 25 September 1997 (1997-09-25), JP, pages Pages:774〜786 *

Also Published As

Publication number Publication date
KR101910934B1 (ko) 2018-12-28
US20130254517A1 (en) 2013-09-26
JP6254352B2 (ja) 2017-12-27
US9411582B2 (en) 2016-08-09
KR20130108878A (ko) 2013-10-07

Similar Documents

Publication Publication Date Title
TWI594117B (zh) 剖析應用程式碼以識別用於fpga實施之程式碼部份
JP5707011B2 (ja) 統合分岐先・述語予測
US20140165208A1 (en) Method and apparatus for dynamic obfuscation of static data
US9164769B2 (en) Analyzing data flow graph to detect data for copying from central register file to local register file used in different execution modes in reconfigurable processing array
US20140317628A1 (en) Memory apparatus for processing support of long routing in processor, and scheduling apparatus and method using the memory apparatus
JP2011096254A (ja) 乗累算演算を実行するための装置および方法
JP6744199B2 (ja) 命令を処理するための複数の実行ユニットを備えるプロセッサ、プロセッサを使用して命令を処理するための方法、およびプロセッサの設計プロセスにおいて使用される設計構造
JP2011086298A (ja) プログラム・フロー制御
JP2014216021A (ja) バッチスレッド処理のためのプロセッサ、コード生成装置及びバッチスレッド処理方法
US9921838B2 (en) System and method for managing static divergence in a SIMD computing architecture
JP2004529405A (ja) 依存性を決定するためのコンテンツ・アドレス指定可能メモリを実装したスーパースケーラ・プロセッサ
JP4420055B2 (ja) マルチスレッドプロセッサ及びそれに用いるスレッド間同期操作方法
JP6254352B2 (ja) ループのプロローグまたはエピローグの無効演算を処理する装置及び方法
US9383981B2 (en) Method and apparatus of instruction scheduling using software pipelining
US20140013312A1 (en) Source level debugging apparatus and method for a reconfigurable processor
KR101293700B1 (ko) 코어스 그레인드 재구성 구조를 위한 코드 생성 장치 및 그 코드 생성 방법
US7886133B2 (en) Information processing apparatus and method for accelerating information processing
CN112445587A (zh) 一种任务处理的方法以及任务处理装置
KR102025694B1 (ko) 재구성 가능한 프로세서의 검증 방법
US9639357B2 (en) Processor, apparatus and method for generating instructions
JP6245820B2 (ja) 再構成可能プロセッサの検証支援装置及び方法並びに再構成可能プロセッサ
JP2004287919A (ja) 演算装置及び制御装置及び演算処理装置及び演算方法及び演算プログラム
KR100490438B1 (ko) 연산/저장을 병행하여 처리하는 장치 및 방법
JP2002318689A (ja) 資源使用サイクルの遅延指定付き命令を実行するvliwプロセッサおよび遅延指定命令の生成方法
Shah et al. SPSIM: SuperScalar Processor SIMulater CS305 Project Report

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160304

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170612

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171114

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171130

R150 Certificate of patent or registration of utility model

Ref document number: 6254352

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250