JP2023502574A - 演算論理回路レジスタの順序付け - Google Patents

演算論理回路レジスタの順序付け Download PDF

Info

Publication number
JP2023502574A
JP2023502574A JP2022524020A JP2022524020A JP2023502574A JP 2023502574 A JP2023502574 A JP 2023502574A JP 2022524020 A JP2022524020 A JP 2022524020A JP 2022524020 A JP2022524020 A JP 2022524020A JP 2023502574 A JP2023502574 A JP 2023502574A
Authority
JP
Japan
Prior art keywords
operand
register
registers
operands
during
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
JP2022524020A
Other languages
English (en)
Other versions
JP7490766B2 (ja
JPWO2021108384A5 (ja
Inventor
ホー ビン
チェン ジャーシェン
ファン ジャン
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2023502574A publication Critical patent/JP2023502574A/ja
Publication of JPWO2021108384A5 publication Critical patent/JPWO2021108384A5/ja
Application granted granted Critical
Publication of JP7490766B2 publication Critical patent/JP7490766B2/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
    • 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
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • 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/30101Special purpose registers
    • 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
    • G06F9/30112Register structure comprising data of variable length
    • 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/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/3824Operand accessing
    • 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
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • 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
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Nonlinear Science (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

グラフィックス処理ユニット(GPU)[100]は、オペランドレジスタのセット[106]へのオペランドの提供を順序付けし、GPUがオペランドレジスタの少なくとも1つを処理間で共有することを可能にする。GPUは、複数の演算論理回路(ALU)[108]を含み、少なくとも1つのALU[116]は倍精度演算を実行するように構成されている。GPUは、単精度オペランドを記憶するように構成されたオペランドレジスタのセットを含む。倍精度演算を要求する複数の実行スレッドの場合、GPUは、対応するオペランドをオペランドレジスタに記憶する。GPUは、オペランドレジスタのセットから指定された倍精度オペランドレジスタへのオペランドの転送を、複数の実行サイクルにわたって順序付けする。各実行サイクル中、倍精度ALUは、倍精度オペランドレジスタに記憶されたオペランドを使用して倍精度演算を実行する。【選択図】図1

Description

プロセッサは、プロセッサに代わって指定された操作を実行するように特別に設計され、構成された1つ以上の処理ユニットを使用する。例えば、一部のプロセッサは、グラフィックス及びベクトル処理操作を実行するためにグラフィックス処理ユニット(GPU)を採用している。プロセッサの中央処理装置(CPU)は、GPUにコマンドを提供し、GPUのコマンドプロセッサ(CP)は、コマンドを1つ以上の操作にデコードする。1つ以上の演算論理回路(ALU)等のGPUの実行ユニットは、グラフィックス及びベクトル処理操作を実行するための操作を実行する。ALUは、オペランドレジスタを使用して、処理用のオペランドを記憶する。特に、スレッドがGPUで実行されると、スレッドは、オペランドレジスタにオペランドを記憶し、オペコード又は他の制御情報をALUに提供して、オペランドを使用してALUにより実行される数学演算を制御する。多数のオペランドレジスタを使用することにより、GPUは、比較的多数のスレッドの同時実行をサポートすることができる。ただし、このような多数のオペランドレジスタは、電力や回路面積等の処理リソースを大量に消費する。
本開示は、添付図面を参照することによってより良好に理解することができ、その多くの特徴及び利点が当業者に明らかになる。異なる図面で同一の符号が使用されている場合、類似又は同一のアイテムを示している。
いくつかの実施形態による、オペランドレジスタの1つのセットからオペランドレジスタの別のセットへのオペランドの提供を順序付ける(sequence)ように構成されたグラフィックス処理ユニット(GPU)のブロック図である。 いくつかの実施形態による、図1のGPUのレジスタへのオペランドの提供を示すブロック図である。 いくつかの実施形態による、図1のGPUのオペランドレジスタ及び対応するALUの構成を示すブロック図である。 いくつかの実施形態による、図3のオペランドレジスタでのオペランド提供の例示的な順序付けの一部を示すブロック図である。 いくつかの実施形態による、図4の例示的な順序付けの別の一部を示すブロック図である。 いくつかの実施形態による、図4の例示的な順序付けのさらに別の一部を示すブロック図である。 いくつかの実施形態による、図5の例示的な順序付けのさらに別の一部を示すブロック図である。
図1~図7は、グラフィックス処理ユニット(GPU)がオペランドレジスタのセットへのオペランドの提供を順序付けし、それによってGPUがオペランドレジスタの少なくとも1つを処理間で共有することを可能にする技術を示す。GPUは、複数の演算論理回路(ALU)を含み、そのうち少なくとも1つのALUは、倍精度演算を実行するように構成されている。さらに、GPUは、単精度オペランドを記憶するように構成されたオペランドレジスタのセットを含む。倍精度演算を要求する複数の実行スレッドの場合、GPUは、対応するオペランドをオペランドレジスタに記憶する。GPUは、オペランドレジスタのセットから指定された倍精度オペランドレジスタへのオペランドの転送を、複数の実行サイクルにわたって順序付けする。各実行サイクル中、倍精度ALUは、倍精度オペランドレジスタに記憶されているオペランドを使用して倍精度演算を実行する。GPUは、このようにレジスタ間のオペランドの提供を順番付けすることにより、複数の処理ブロック(例えば、複数のベクトルシェーダプロセッサ等)が倍精度オペランドレジスタを共有することが可能になり、オペランドレジスタによって消費される回路領域及び電力が削減される。
図1は、いくつかの実施形態による、倍精度数学演算のためのオペランド提供の順序付けをサポートするGPU100を示す図である。説明のために、GPU100は、命令セット(例えば、コンピュータプログラム)を実行して、電子デバイスの代わりにタスクを実行するプロセッサの一部である。したがって、異なる実施形態において、GPU100は、デスクトップコンピュータ、ラップトップコンピュータ、サーバ、タブレット、スマートフォン、ゲームコンソール等の電子デバイスの一部である。さらに、GPU100を含むプロセッサは、命令のセットを実行する中央処理装置(CPU)を含む。
GPU100は、指定された操作をCPUに代わって実行するように設計され、製造されている。特に、GPU100は、CPUに代わってグラフィックス処理及びベクトル処理操作を実行する。例えば、いくつかの実施形態では、CPUは、命令を実行する過程で、グラフィックス及びベクトル処理操作に関連するコマンドを生成する。CPUは、GPU100にコマンドを提供し、GPU100は、コマンドプロセッサ(図示省略)を使用して、コマンドを、GPU100で実行するための命令セットにデコードする。
命令の実行を容易にするために、GPU100は、複数の計算ユニット(例えば、1つ以上の単一命令複数データ(SIMD)ブロック)を含み、各SIMDブロックは、対応する操作のスレッドを実行するように構成されている。いくつかの実施形態では、CPUから受信したコマンドをGPUのコマンドプロセッサがデコードし、コマンドに基づいてSIMDブロックで実行されるスレッドのセットを生成しスケジュールする。各SIMDブロックは、複数のベクトルシェーダプロセッサ(VSP)(例えば、VSP102,103,104)を含む。いくつかの実施形態では、各SIMDブロックは、4つの異なるVSPを含み、それにより、4つの異なるスレッドの同時実行をサポートする。したがって、各計算ユニットに4つのSIMDブロックが含まれ、各SIMDブロックに4つのVSPが含まれているとすると、各計算ユニットは、16スレッドの同時実行をサポートする。
実行中、スレッドは、対応するオペランドを使用して実行するための数学演算を生成する。数学演算の実行をサポートするために、GPU100は、オペランドレジスタのセット106(例えば、オペランドレジスタ111,112)及びALUのセット108(例えば、ALU114,116)を含む。オペランドレジスタ106は、数学演算のためのオペランドを記憶し、ALU108は、記憶されたオペランドを使用して数学演算を実行する。特に、数学演算を実行するために、スレッドは、以下でさらに説明するように、対応するオペランドを何れかのオペランドレジスタ106に記憶し、制御情報(図示省略)を何れかのALU108に提供する。制御情報に基づいて、ALUは、記憶されたオペランドを使用して数学演算を実行し、スレッドによる取得のために結果を結果レジスタ(図示省略)に記憶する。
本明細書では、説明を明確にするために、各オペランドレジスタ106が単一のブロックとして示されていることを理解されたい。しかしながら、いくつかの実施形態では、各オペランドレジスタ106が複数のオペランドを記憶する。一例が図2に示されており、ALU114のためにオペランドを記憶するオペランドレジスタ111を示している。図示した実施形態では、オペランドレジスタ111は3つのオペランドを記憶し、各オペランドは、対応するスレッドに対して「A」、「B」及び「C」と指定されている。
図1に戻ると、この図は、オペランドレジスタ106及びALU108がVSP102~104間で共有されていることを示すことが理解されよう。しかしながら、他の実施形態では、1つ以上のオペランドレジスタ106又は1つ以上のALU108が、個々のVSP専用とされる。したがって、例えば、いくつかの実施形態では、オペランドレジスタ106のサブセットがVSP102に割り当てられ、VSP103には異なるオペランドレジスタのサブセットが割り当てられる。その結果、各VSPは、別のVSPに割り当てられたオペランドレジスタを使用することができない。同様に、いくつかの実施形態では、ALU108のサブセットがVSP102に割り当てられ、VSP103には異なるALU108のサブセットが割り当てられる。その結果、各VSPは、別のVSPに割り当てられたALUに数学演算を割り当てることができない。
いくつかの実施形態では、実行中のスレッドによって生成される異なる数学演算のうち少なくともいくつかは、対応するオペランドの精度のレベルを示す、異なる精度に関連付けられている。例えば、いくつかの実施形態では、実行スレッドは、単精度数学演算及び倍精度数学演算を生成し、倍精度オペランド(すなわち、倍精度演算に使用されるオペランド)は、単精度オペランドの2倍の大きさである。オペランドレジスタ106のサブセットの各々は、単精度オペランドを記憶するサイズとされ、一方、オペランドレジスタ106の別のサブセットの各々は、倍精度オペランドを記憶するサイズとされる。いくつかの実施形態では、以下でより詳細に説明するように、オペランドレジスタ106の単精度オペランドレジスタは、倍精度オペランドの一部を記憶し、1つ以上のALU108による処理を待つ間、これらのオペランドを記憶する。
ALU108のサブセットの各々は、対応する精度による数学演算を、その精度のオペランドを使用して実行するための回路を含む。したがって、例えば、ALU114には、単精度の数学演算を(単精度のオペランドを使用して)実行する回路が含まれ、ALU116には、倍精度演算を(倍精度のオペランドを使用して)実行する回路が含まれる。いくつかの実施形態では、GPU100で実行されるスレッドは、比較的多数の単精度演算を要求し、比較的少数の倍精度演算を要求することが予想される。したがって、ALU108は、より多数の単精度ALUと、より少数の倍精度ALUと、を含む。さらに、オペランドレジスタ106は、より多数の単精度オペランドレジスタと、倍精度オペランドを記憶するより少数のオペランドレジスタと、を含む。いくつかの実施形態による例を図3に示す。図示した例では、ALU108は、15個の単精度(SP)ALUと、1個の倍精度ALUと、を含む。オペランドレジスタ106は、倍精度ALU116のための倍精度オペランドを記憶する、指定されたオペランドレジスタ321,322である1対のオペランドレジスタと共に、複数の単精度オペランドレジスタを含む。いくつかの実施形態では、オペランドレジスタ321は、倍精度オペランドの「上位」又は最上位ビットを記憶し、オペランドレジスタ322は、倍精度オペランドの「下位」又は最下位ビットを記憶する。いくつかの実施形態では、レジスタ321,322は、1つ以上のSP ALUのための単精度オペランドを異なる時間に記憶する。すなわち、実行されている所定の数値演算の精度に応じて、レジスタ321,322は、1つ以上のSP ALU(例えば、SP ALU323)による処理のための単精度オペランドを記憶するか、DP ALU116による処理のための倍精度のセットを一緒に記憶する。
上記のように、多くの場合、GPU100は、比較的多数の単精度演算を実行し、比較的少数の倍精度演算を実行することが予想される。したがって、専用の倍精度レジスタのセットを実行スレッド毎に有するコストを節約するため、GPU100は、レジスタ321,322への倍精度オペランドの順序付け(sequencing)を制御するためのオペランド順序付け制御モジュール110を含む。説明すると、いくつかの実施形態では、オペランドレジスタの少なくともサブセットが接続されており、オペランド順序付け制御モジュール110からの制御信号に応じて、制御信号を受信したオペランドレジスタの各々は、その記憶されたデータを別のオペランドレジスタに転送する。オペランドレジスタ間のデータ転送を制御することにより、オペランド順序付け制御モジュール110は、比較的少数のオペランドレジスタ及び倍精度ALU回路を使用しながら、複数の実行サイクルにわたる複数のスレッドに対する倍精度演算の実行をスケジュールし、それによってGPU100のリソースを節約する。いくつかの実施形態では、オペランド順序付け制御モジュール110は、VSP102~104でのスレッドの実行をスケジュールするGPU100のスケジューラ(図示省略)の一部である。
図4~図7は、合わせて、いくつかの実施形態による、GPU100が、レジスタ321,322への倍精度オペランドの提供を順序付けする例を示している。図4~図7の例は、GPU100の複数の実行サイクルを示している。いくつかの実施形態では、各実行サイクルは、GPU100の動作を同期させるために使用されるクロック(図示省略)の単一のクロックサイクルに対応する。他の実施形態では、各実行サイクルは、複数のクロックサイクルに対応する。図4~図7による例示のために、VSP102~104が集合的且つ同時に16個のスレッドを実行し、各スレッドは、DP ALU116で倍精度数値演算が実行されることを必要とする。演算を実行するために、GPUは、オペランドレジスタ106のうち、オペランドレジスタ430~439及びオペランドレジスタ321,322を使用する。いくつかの実施形態では、オペランドレジスタ321,322,430~439の各々は、独立した読み取り及び書き込みポートを含み、その結果、データは、単一の実行サイクル中にオペランドレジスタから読み取られ、オペランドレジスタに書き込まれる。
この例では、実行中の各スレッドは、DP ALU116で処理するための倍精度オペランドのセットを1つ提供する。以下でさらに説明するように、各スレッドは、対応する倍精度オペランドを2つの部分(すなわち、倍精度オペランドの最下位ビットを表す下位部分、及び、倍精度オペランドの最上位ビットを表す上位部分)において提供する。したがって、倍精度オペランドがそれぞれ64ビットであるとすると、オペランドの上位部分はオペランドの最上位32ビットであり、オペランドの下位部分はオペランドの最下位32ビットである。
図4は、いくつかの実施形態による、CYCLE0及びCYCLE1と呼ぶ、例示的な最初の2つの実行サイクルを示す。CYCLE0の間、GPU100のスケジューラは、スレッド0,4,8,12の倍精度オペランドの下位部分(それぞれ、0L,4L,8L,12Lと呼ぶ。)がオペランドレジスタに読み込まれるように、これらのスレッドの実行をスケジュールする。特に、下位部分のオペランド4Lがオペランドレジスタ430に記憶され、下位部分のオペランド0Lがオペランドレジスタ433に記憶され、下位部分のオペランド8Lがオペランドレジスタ434に記憶され、下位部分のオペランド12Lがオペランドレジスタ437に記憶される。少なくともいくつかの実施形態では、スレッド0,4,8,12の各々は、GPU100の異なるVSPで実行される。
CYCLE1の間、オペランド順序付け制御モジュール110は、オペランドレジスタ間でデータを転送するための制御信号を提供する。特に、オペランド0Lがオペランドレジスタ433からオペランドレジスタ321に転送され、オペランド8Lがオペランドレジスタ434からオペランドレジスタ433に転送され、オペランド12Lがオペランドレジスタ437からオペランドレジスタ434に転送される。
さらに、CYCLE1の間、スレッド0,4,8,12の倍精度オペランドの上位部分(それぞれ0H,4H,8H,12Hと呼ぶ。)がオペランドレジスタのサブセットに読み込まれる。特に、上位部分のオペランド4Hがオペランドレジスタ432に記憶され、上位部分のオペランド0Hがオペランドレジスタ322に記憶され、上位部分のオペランド8Hがオペランドレジスタ436に記憶され、上位部分のオペランド12Hがオペランドレジスタ439に記憶される。
CYCLE1の間、0L,0Hのオペランドが、オペランドレジスタ321,322に記憶され、したがって、DP ALU116による処理可能な状態にある。したがって、CYCLE1の間に、DP ALU116は、スレッド0によって要求された、0L,0Hのオペランドを使用する倍精度演算を開始する。特に、DP ALU116は、0L,0Hオペランドに基づいて、A、B及びCオペランドの上位部分と下位部分を連結し、結果として得られるA、B及びCオペランドを倍精度演算に使用する。
図5は、いくつかの実施形態による、例示的な順序付け操作の次の2つのサイクルである、CYCLE2及びCYCLE3と呼ばれるサイクルを示す。CYCLE2の間、オペランド順序付け制御モジュール110は、オペランドレジスタ間でさらにデータを転送するための制御信号を提供する。特に、オペランド4Lがオペランドレジスタ430からオペランドレジスタ433に転送され、オペランド8Lがオペランドレジスタ433からオペランドレジスタ321に転送され、オペランド8Hがオペランドレジスタ436からオペランドレジスタ322に転送され、オペランド12Hがオペランドレジスタ439からオペランドレジスタ436に転送される。したがって、CYCLE2の間、8L,8Hオペランドが、オペランドレジスタ321,322に記憶される。したがって、CYCLE2の間、DP ALU116は、スレッド8によって要求された8L,8Hオペランドを使用する倍精度演算を開始する。
CYCLE3の間、前の2つのサイクルと同様に、オペランド順序付け制御モジュール110は、オペランドレジスタ間でデータをさらに転送するための制御信号を提供する。特に、オペランド4Lがオペランドレジスタ433からオペランドレジスタ321に転送され、オペランド4Hがオペランドレジスタ432からオペランドレジスタ322に転送され、オペランド12Lがオペランドレジスタ434からオペランドレジスタ433に転送される。したがって、CYCLE3の間、4L,4Hオペランドがオペランドレジスタ321,322に記憶され、DP ALU116はスレッド4によって要求された4L,4Hオペランドを使用する倍精度演算を開始する。
図6は、いくつかの実施形態による、例示的な順序付け操作の次の2つのサイクルである、CYCLE4及びCYCLE5と呼ばれるサイクルを示す。CYCLE4の間、オペランド順序付け制御モジュール110は、オペランドの初期セットのうち最後のものをオペランドレジスタ間で転送するための制御信号を提供する。特に、オペランド12Hがオペランドレジスタ436からオペランドレジスタ322に転送され、オペランド12Lがオペランドレジスタ433からオペランドレジスタ321に転送される。したがって、CYCLE4の間、12L,12Hのオペランドが、オペランドレジスタ321,322に記憶される。したがって、CYCLE4の間、DP ALU116は、スレッド12によって要求された12L,12Hのオペランドを使用する倍精度演算を開始する。
さらに、CYCLE4の間、処理するオペランドの次のセットがオペランドレジスタに記憶される。図示するように、スレッド5,1,9,13の倍精度オペランドの下位部分(それぞれ5L,1L,9L,13Lと呼ぶ。)が、オペランドレジスタに読み込まれる。特に、オペランド5Lがオペランドレジスタ430に記憶され、オペランド1Lがオペランドレジスタ433に記憶され、オペランド9Lがオペランドレジスタ434に記憶され、オペランド13Lがオペランドレジスタ437に記憶される。
CYCLE5を参照すると、オペランド順序付け制御モジュール110は、オペランドレジスタ間でデータを転送するための制御信号を提供し、その結果、オペランド1Lがオペランドレジスタ433からオペランドレジスタ321に転送され、オペランド9Lがオペランドレジスタ434からオペランドレジスタ433に転送され、オペランド13Lがオペランドレジスタ437からオペランドレジスタ434に転送される。
さらに、CYCLE5の間に、スレッド5,1,9,13の倍精度オペランドの上位部分(それぞれ5H,1H,9H,13Hと呼ぶ。)がオペランドレジスタのサブセットに読み込まれる。特に、オペランド5Hがオペランドレジスタ432に記憶され、オペランド1Hがオペランドレジスタ322に記憶され、オペランド9Hがオペランドレジスタ436に記憶され、オペランド13Hがオペランドレジスタ439に記憶される。したがって、CYCLE5の間、1L,1Hのオペランドが、オペランドレジスタ321,322に記憶され、したがって、DP ALU116による処理可能な状態にある。したがって、CYCLE5の間に、DP ALU116は、スレッド1によって要求された1L,1Hオペランドを使用する倍精度演算を開始する。
図7は、いくつかの実施形態による、例示的な順序付け操作の次の3つのサイクルである、CYCLE6、CYCLE7及びCYCLE8と呼ばれるサイクルを示す。CYCLE6の間、オペランド順序付け制御モジュール110は、オペランドレジスタ間でデータをさらに転送するための制御信号を提供する。特に、オペランド5Lがオペランドレジスタ430からオペランドレジスタ433に転送され、オペランド9Lがオペランドレジスタ433からオペランドレジスタ321に転送され、オペランド9Hがオペランドレジスタ436からオペランドレジスタ322に転送され、オペランド13Hがオペランドレジスタ439からオペランドレジスタ436に転送される。したがって、CYCLE6の間、9L,9Hのオペランドが、オペランドレジスタ321,322に記憶される。したがって、CYCLE6の間に、DP ALU116は、スレッド9によって要求された9L,9Hのオペランドを使用する倍精度演算を開始する。
CYCLE7を参照すると、オペランド順序付け制御モジュール110は、オペランドレジスタ間でデータをさらに転送するための制御信号を提供する。特に、オペランド5Lがオペランドレジスタ433からオペランドレジスタ321に転送され、オペランド5Hがオペランドレジスタ432からオペランドレジスタ322に転送され、オペランド13Lがオペランドレジスタ434からオペランドレジスタ433に転送される。したがって、CYCLE7の間、5L,5Hのオペランドが、オペランドレジスタ321,322に記憶され、DP ALU116は、スレッド5によって要求された5L,5Hオペランドを使用する倍精度演算を開始する。
CYCLE8を参照すると、オペランド順序付け制御モジュール110は、オペランドセットの第2のセットのうち最後のものをオペランドレジスタ間で転送するための制御信号を提供する。特に、オペランド13Hがオペランドレジスタ436からオペランドレジスタ322に転送され、オペランド12Lがオペランドレジスタ433からオペランドレジスタ321に転送される。したがって、CYCLE8の間、13L,13Hのオペランドが、オペランドレジスタ321,322に記憶される。したがって、CYCLE8の間、DP ALU116は、スレッド13によって要求された13L,13Hオペランドを使用する倍精度演算を開始する。
さらに、CYCLE8の間、処理するオペランドの次のセットがオペランドレジスタに記憶される。図示するように、スレッド6,2,10,14の倍精度オペランドの下位部分(それぞれ6L,2L,9L,14Lと呼ぶ。)が、オペランドレジスタに読み込まれる。特に、オペランド6Lがオペランドレジスタ430に記憶され、オペランド2Lがオペランドレジスタ433に記憶され、オペランド10Lがオペランドレジスタ434に記憶され、オペランド14Lがオペランドレジスタ437に記憶される。
いくつかの実施形態では、GPU100は、図示したCYCLE0~CYCLE8と同様の方法で、オペランドレジスタへの及びオペランドレジスタ間でのオペランド提供の順序付けを継続して、スレッド2,3,6,7,10,11,14,15を含む残りのスレッドのオペランドを処理する。したがって、GPU100は、VSP102~104間で共有される倍精度オペランドレジスタの単一のセットを使用して、16個の同時に実行されるスレッドの各々についての倍精度演算の実行をサポートする。これにより、GPU100は、比較的少数のオペランドレジスタのセットで倍精度演算をサポートできるため、面積や電力等のプロセッサリソースを節約することができる。
いくつかの実施形態では、方法は、処理装置で実行される複数のスレッドについて、第1の演算論理回路(ALU)で処理するための複数のオペランドを受信することと、複数のオペランドを複数のレジスタに記憶することと、複数の実行サイクルにわたって、ALUで処理するために、複数のレジスタから第1のオペランドレジスタへの複数のオペランドの提供を順序付けすることと、を含む。一態様では、順序付けは、第1の実行サイクル中に、複数のオペランドのうち第1のオペランドの第1の部分を第1のオペランドレジスタに記憶することと、第2の実行サイクル中に、複数のオペランドのうち第2のオペランドの第1の部分を、複数のレジスタのうち第1のレジスタから第1のオペランドレジスタに転送することと、を含む。別の態様では、順序付けは、第1の実行サイクル中に、第1のオペランドの第2の部分を複数のレジスタのうち第2のレジスタに記憶することと、第2の実行サイクル中に、第1のオペランドの第2の部分を、ALUで処理するために第2のオペランドレジスタに転送することと、をさらに含む。
さらに別の態様では、方法は、第2の実行サイクル中に、ALUの第1のオペランドレジスタ及び第2のオペランドレジスタから第1のオペランドを読み取ることを含む。さらに別の態様では、第1のオペランドは倍精度オペランドであり、複数のレジスタの各々は、単精度オペランドを記憶するように構成されている。別の態様では、順序付けは、第2の実行サイクル中に、第3のオペランドの第1の部分を、複数のレジスタのうち第2のレジスタから複数のレジスタのうち第1のレジスタに転送することをさらに含む。さらに別の態様では、順序付けは、第3の実行サイクル中に、第3のオペランドの第1の部分を、複数のレジスタのうち第1のレジスタから第1のオペランドレジスタに転送することをさらに含む。さらに別の態様では、順序付けは、第2の実行サイクル中に、第4のオペランドの第1の部分を、複数のレジスタのうち第3のレジスタから複数のレジスタのうち第2のレジスタに転送することをさらに含む。
いくつかの実施形態では、プロセッサは、演算論理回路(ALU)を含む処理ユニットであって、対応する複数のスレッドを実行し、複数のスレッドは、ALUで処理される複数のオペランドを生成するように実行する、処理ユニットと、複数のオペランドを記憶するように構成された複数のレジスタと、複数の実行サイクルにわたって、ALUで処理するために、複数のレジスタから第1のオペランドレジスタへの複数のオペランドの提供を順序付けするように構成された順序付け制御モジュールと、を備える。一態様では、順序付けは、第1の実行サイクル中に、複数のオペランドのうち第1のオペランドの第1の部分を第1のオペランドレジスタに記憶することと、第2の実行サイクル中に、複数のオペランドのうち第2のオペランドの第1の部分を、複数のレジスタのうち第1のレジスタから第1のオペランドレジスタに転送することと、を含む。
一態様では、順序付けは、第1の実行サイクル中に、第1のオペランドの第2の部分を複数のレジスタのうち第2のレジスタに記憶することと、第2の実行サイクル中に、第1のオペランドの第2の部分を、ALUで処理するために第2のオペランドレジスタに転送することと、をさらに含む。別の態様では、ALUは、第2の実行サイクル中に、処理のために第1のオペランドレジスタ及び第2のオペランドレジスタから第1のオペランドを読み取るように構成されている。さらに別の態様では、第1のオペランドは倍精度オペランドであり、複数のレジスタの各々は、単精度オペランドを記憶するように構成されている。
一態様では、順序付けは、第2の実行サイクル中に、第3のオペランドの第1の部分を、複数のレジスタのうち第2のレジスタから複数のレジスタのうち第1のレジスタに転送することをさらに含む。別の態様では、順序付けは、第3の実行サイクル中に、第3のオペランドの第1の部分を、複数のレジスタのうち第1のレジスタから第1のオペランドレジスタに転送することをさらに含む。さらに別の態様では、順序付けは、第2の実行サイクル中に、第4のオペランドの第1の部分を、複数のレジスタのうち第3のレジスタから複数のレジスタのうち第2のレジスタに転送することをさらに含む。
いくつかの実施形態では、グラフィックス処理ユニット(GPU)は、対応する複数のスレッドを実行する複数のシェーダプロセッサであって、複数のスレッドは、複数のオペランドを生成するように実行する、複数のシェーダプロセッサと、演算論理回路(ALU)と、複数のオペランドを記憶するように構成された複数のレジスタと、複数の実行サイクルにわたって、複数のレジスタから第1のオペランドレジスタへの複数のオペランドの提供を順序付けしてALUで処理するように構成された順序付け制御モジュールと、を備える。一態様では、順序付けは、第1の実行サイクル中に、複数のオペランドのうち第1のオペランドの第1の部分を第1のオペランドレジスタに記憶することと、第2の実行サイクル中に、複数のオペランドのうち第2のオペランドの第1の部分を、複数のレジスタのうち第1のレジスタから第1のオペランドレジスタに転送することと、を含む。別の態様では、順序付けは、第1の実行サイクル中に、第1のオペランドの第2の部分を複数のレジスタのうち第2のレジスタに記憶することと、第2の実行サイクル中に、第1のオペランドの第2の部分を、ALUで処理するために第2のオペランドレジスタに転送することと、をさらに含む。さらに別の態様では、ALUは、第2の実行サイクル中に、処理のために第1のオペランドレジスタ及び第2のオペランドレジスタから第1のオペランドを読み取るように構成されている。
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行するプロセッシングシステムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)等のソリッドステート記憶デバイス、又は、他の1つ以上の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。

Claims (20)

  1. 処理装置で実行される複数のスレッドについて、演算論理回路(ALU)で処理するための複数のオペランドを受信することと、
    前記複数のオペランドを複数のレジスタに記憶することと、
    複数の実行サイクルにわたって、前記ALUで処理するために、前記複数のレジスタから第1のオペランドレジスタへの前記複数のオペランドの提供を順序付けすることと、を含む、
    方法。
  2. 前記順序付けすることは、
    第1の実行サイクル中に、前記複数のオペランドのうち第1のオペランドの第1の部分を前記第1のオペランドレジスタに記憶することと、
    第2の実行サイクル中に、前記複数のオペランドのうち第2のオペランドの第1の部分を、前記複数のレジスタのうち第1のレジスタから前記第1のオペランドレジスタに転送することと、を含む、
    請求項1の方法。
  3. 前記順序付けすることは、
    前記第1の実行サイクル中に、前記第1のオペランドの第2の部分を、前記複数のレジスタのうち第2のレジスタに記憶することと、
    前記第2の実行サイクル中に、前記第1のオペランドの前記第2の部分を、前記ALUで処理するために第2のオペランドレジスタに転送することと、を含む、
    請求項2の方法。
  4. 前記第2の実行サイクル中に、前記ALUの前記第1のオペランドレジスタ及び前記第2のオペランドレジスタから前記第1のオペランドを読み取ることを含む、
    請求項3の方法。
  5. 前記第1のオペランドは倍精度オペランドであり、前記複数のレジスタの各々は、単精度オペランドを記憶するように構成されている、
    請求項4の方法。
  6. 前記順序付けすることは、前記第2の実行サイクル中に、第3のオペランドの第1の部分を、前記複数のレジスタのうち第2のレジスタから前記複数のレジスタのうち前記第1のレジスタに転送することを含む、
    請求項2の方法。
  7. 前記順序付けすることは、第3の実行サイクル中に、前記第3のオペランドの前記第1の部分を、前記複数のレジスタのうち前記第1のレジスタから前記第1のオペランドレジスタに転送することを含む、
    請求項6の方法。
  8. 前記順序付けすることは、前記第2の実行サイクル中に、第4のオペランドの第1の部分を、前記複数のレジスタのうち第3のレジスタから前記複数のレジスタのうち前記第2のレジスタに転送することを含む、
    請求項6の方法。
  9. 演算論理回路(ALU)を含む処理ユニットであって、対応する複数のスレッドを実行し、前記複数のスレッドは、前記ALUで処理される複数のオペランドを生成するように実行する、処理ユニットと、
    前記複数のオペランドを記憶するように構成された複数のレジスタと、
    複数の実行サイクルにわたって、前記ALUで処理するために、前記複数のレジスタから第1のオペランドレジスタへの前記複数のオペランドの提供を順序付けするように構成された順序付け制御モジュールと、を備える、
    プロセッサ。
  10. 前記順序付けすることは、
    第1の実行サイクル中に、前記複数のオペランドのうち第1のオペランドの第1の部分を前記第1のオペランドレジスタに記憶することと、
    第2の実行サイクル中に、前記複数のオペランドのうち第2のオペランドの第1の部分を、前記複数のレジスタのうち第1のレジスタから前記第1のオペランドレジスタに転送することと、を含む、
    請求項9のプロセッサ。
  11. 前記順序付けすることは、
    前記第1の実行サイクル中に、前記第1のオペランドの第2の部分を、前記複数のレジスタのうち第2のレジスタに記憶することと、
    前記第2の実行サイクル中に、前記第1のオペランドの前記第2の部分を、前記ALUで処理するために第2のオペランドレジスタに転送することと、を含む、
    請求項10のプロセッサ。
  12. 前記ALUは、前記第2の実行サイクル中に、処理するために前記第1のオペランドレジスタ及び前記第2のオペランドレジスタから前記第1のオペランドを読み取るように構成されている、
    請求項11のプロセッサ。
  13. 前記第1のオペランドは倍精度オペランドであり、前記複数のレジスタの各々は、単精度オペランドを記憶するように構成されている、
    請求項12のプロセッサ。
  14. 前記順序付けすることは、前記第2の実行サイクル中に、第3のオペランドの第1の部分を、前記複数のレジスタのうち第2のレジスタから前記複数のレジスタのうち前記第1のレジスタに転送することを含む、
    請求項10のプロセッサ。
  15. 前記順序付けすることは、第3の実行サイクル中に、前記第3のオペランドの前記第1の部分を、前記複数のレジスタのうち前記第1のレジスタから前記第1のオペランドレジスタに転送することを含む、
    請求項14のプロセッサ。
  16. 前記順序付けすることは、前記第2の実行サイクル中に、第4のオペランドの第1の部分を、前記複数のレジスタのうち第3のレジスタから前記複数のレジスタのうち前記第2のレジスタに転送することを含む、
    請求項14のプロセッサ。
  17. 対応する複数のスレッドを実行する複数のシェーダプロセッサであって、前記複数のスレッドは、複数のオペランドを生成するように実行する、複数のシェーダプロセッサと、
    演算論理回路(ALU)と、
    前記複数のオペランドを記憶するように構成された複数のレジスタと、
    複数の実行サイクルにわたって、前記ALUで処理するために、前記複数のレジスタから第1のオペランドレジスタへの前記複数のオペランドの提供を順序付けするように構成された順序付け制御モジュールと、を備える、
    グラフィックス処理ユニット(GPU)。
  18. 前記順序付けすることは、
    第1の実行サイクル中に、前記複数のオペランドのうち第1のオペランドの第1の部分を前記第1のオペランドレジスタに記憶することと、
    第2の実行サイクル中に、前記複数のオペランドのうち第2のオペランドの第1の部分を、前記複数のレジスタのうち第1のレジスタから前記第1のオペランドレジスタに転送することと、を含む、
    請求項17のGPU。
  19. 前記順序付けすることは、
    前記第1の実行サイクル中に、前記第1のオペランドの第2の部分を、前記複数のレジスタのうち第2のレジスタに記憶することと、
    前記第2の実行サイクル中に、前記第1のオペランドの前記第2の部分を、前記ALUで処理するために第2のオペランドレジスタに転送することと、を含む、
    請求項18のプロセッサ。
  20. 前記ALUは、前記第2の実行サイクル中に、処理するために前記第1のオペランドレジスタ及び前記第2のオペランドレジスタから前記第1のオペランドを読み取るように構成されている、
    請求項19のプロセッサ。
JP2022524020A 2019-11-26 2020-11-24 演算論理回路レジスタの順序付け Active JP7490766B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/696,108 2019-11-26
US16/696,108 US11237827B2 (en) 2019-11-26 2019-11-26 Arithemetic logic unit register sequencing
PCT/US2020/061977 WO2021108384A1 (en) 2019-11-26 2020-11-24 Arithemetic logic unit register sequencing

Publications (3)

Publication Number Publication Date
JP2023502574A true JP2023502574A (ja) 2023-01-25
JPWO2021108384A5 JPWO2021108384A5 (ja) 2023-11-13
JP7490766B2 JP7490766B2 (ja) 2024-05-27

Family

ID=75971278

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022524020A Active JP7490766B2 (ja) 2019-11-26 2020-11-24 演算論理回路レジスタの順序付け

Country Status (6)

Country Link
US (2) US11237827B2 (ja)
EP (1) EP4066105A4 (ja)
JP (1) JP7490766B2 (ja)
KR (1) KR102644951B1 (ja)
CN (1) CN114868110A (ja)
WO (1) WO2021108384A1 (ja)

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3389379A (en) * 1965-10-05 1968-06-18 Sperry Rand Corp Floating point system: single and double precision conversions
US5901316A (en) * 1996-07-01 1999-05-04 Sun Microsystems, Inc. Float register spill cache method, system, and computer program product
US5909572A (en) 1996-12-02 1999-06-01 Compaq Computer Corp. System and method for conditionally moving an operand from a source register to a destination register
US7028170B2 (en) * 2000-03-08 2006-04-11 Sun Microsystems, Inc. Processing architecture having a compare capability
US8239439B2 (en) 2007-12-13 2012-08-07 International Business Machines Corporation Method and apparatus implementing a minimal area consumption multiple addend floating point summation function in a vector microprocessor
WO2010044242A1 (ja) 2008-10-14 2010-04-22 国立大学法人奈良先端科学技術大学院大学 データ処理装置
US8458444B2 (en) * 2009-04-22 2013-06-04 Oracle America, Inc. Apparatus and method for handling dependency conditions between floating-point instructions
US8533435B2 (en) 2009-09-24 2013-09-10 Nvidia Corporation Reordering operands assigned to each one of read request ports concurrently accessing multibank register file to avoid bank conflict
US9823928B2 (en) 2011-09-30 2017-11-21 Qualcomm Incorporated FIFO load instruction
US9508112B2 (en) * 2013-07-31 2016-11-29 Apple Inc. Multi-threaded GPU pipeline
KR101893814B1 (ko) * 2014-03-26 2018-10-04 인텔 코포레이션 3 소스 피연산자 부동 소수점 가산 프로세서, 방법, 시스템, 및 명령어
US9696992B2 (en) * 2014-12-23 2017-07-04 Intel Corporation Apparatus and method for performing a check to optimize instruction flow
US20160179470A1 (en) * 2014-12-23 2016-06-23 Shay Gueron Method and apparatus for performing big-integer arithmetic operations
US10754651B2 (en) * 2018-06-29 2020-08-25 Intel Corporation Register bank conflict reduction for multi-threaded processor

Also Published As

Publication number Publication date
WO2021108384A1 (en) 2021-06-03
US11789732B2 (en) 2023-10-17
US20220171621A1 (en) 2022-06-02
EP4066105A4 (en) 2023-11-22
CN114868110A (zh) 2022-08-05
EP4066105A1 (en) 2022-10-05
JP7490766B2 (ja) 2024-05-27
KR102644951B1 (ko) 2024-03-08
KR20220100891A (ko) 2022-07-18
US11237827B2 (en) 2022-02-01
US20210157581A1 (en) 2021-05-27

Similar Documents

Publication Publication Date Title
US9830156B2 (en) Temporal SIMT execution optimization through elimination of redundant operations
US8639882B2 (en) Methods and apparatus for source operand collector caching
CN109997115B (zh) 用于持久计算的低功率和低延迟gpu协处理器
US8615646B2 (en) Unanimous branch instructions in a parallel thread processor
US10007527B2 (en) Uniform load processing for parallel thread sub-sets
US20080109795A1 (en) C/c++ language extensions for general-purpose graphics processing unit
US20090240931A1 (en) Indirect Function Call Instructions in a Synchronous Parallel Thread Processor
US8572355B2 (en) Support for non-local returns in parallel thread SIMD engine
US9626191B2 (en) Shaped register file reads
CN114610394B (zh) 指令调度的方法、处理电路和电子设备
US8151095B1 (en) System and method for context migration across CPU threads
US11880683B2 (en) Packed 16 bits instruction pipeline
US8413151B1 (en) Selective thread spawning within a multi-threaded processing system
JP7490766B2 (ja) 演算論理回路レジスタの順序付け
US20220300326A1 (en) Techniques for balancing workloads when parallelizing multiply-accumulate computations
CN117501254A (zh) 使用近存储器计算为复杂操作提供原子性
US11550584B1 (en) Implementing specialized instructions for accelerating Smith-Waterman sequence alignments
US11822541B2 (en) Techniques for storing sub-alignment data when accelerating Smith-Waterman sequence alignments
US20230101085A1 (en) Techniques for accelerating smith-waterman sequence alignments
WO2022121275A1 (zh) 处理器、多线程处理方法、电子设备以及存储介质
US9542192B1 (en) Tokenized streams for concurrent execution between asymmetric multiprocessors

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220623

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231102

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20231102

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20231102

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240416

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: 20240423

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240515

R150 Certificate of patent or registration of utility model

Ref document number: 7490766

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150