JP2022546785A - 迅速かつ広範な結果生成のための隣接simdユニットの再利用 - Google Patents

迅速かつ広範な結果生成のための隣接simdユニットの再利用 Download PDF

Info

Publication number
JP2022546785A
JP2022546785A JP2022515759A JP2022515759A JP2022546785A JP 2022546785 A JP2022546785 A JP 2022546785A JP 2022515759 A JP2022515759 A JP 2022515759A JP 2022515759 A JP2022515759 A JP 2022515759A JP 2022546785 A JP2022546785 A JP 2022546785A
Authority
JP
Japan
Prior art keywords
execution unit
instruction execution
instruction
result
instructions
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.)
Pending
Application number
JP2022515759A
Other languages
English (en)
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2022546785A publication Critical patent/JP2022546785A/ja
Pending legal-status Critical Current

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
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • G06F9/3875Pipelining a single stage, e.g. superpipelining
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Advance Control (AREA)

Abstract

拡張された結果を含む命令を処理するためのシステムは、プロセッサ命令を実行するための第1の結果バスを有する第1の命令実行ユニットを含む。システムは、プロセッサ命令を実行するための第2の結果バスを有する第2の命令実行ユニットをさらに含む。第1の命令実行ユニットは、第2の命令実行ユニットがプロセッサ命令を実行するために使用されない場合、ならびに受信したプロセッサ命令が第1の結果バスのデータ幅よりも大きな幅を有する結果を生じた場合、プロセッサ命令の実行中に、第1の命令実行ユニットによって計算された結果の一部を第2の命令実行ユニットに選択的に送信するように構成される。第2の命令実行ユニットは、第1の命令実行ユニットにより計算された結果の一部を受信し、受信した結果を第2の結果バスに載置するように構成される。

Description

本発明は、コンピュータシステムの分野に関し、より具体的には、より幅広い結果を生じる命令を処理するための隣接SIMD(単一命令多重データ)ユニットの再利用に関する。
世代間のシリコン技術の向上から得られる利益の減少に直面しながらも演算性能を向上させるために、設計はより複雑な演算プリミティブを実装するように移行している。汎用マイクロプロセッサでは、そのような演算プリミティブは、標準的な(受け継がれた)命令のセットの実装を担うプロセッサコアに緊密に結合されたアクセラレータ上に、拡張命令セットが実装されている形態をとることが多い。このようなアクセラレータは、ショートベクトルSIMD演算モデルを実装し、それによって、各命令は、広範なデータワードにわたって実行されるオペレーションを指定し、このデータワードは、特定の命令に依存してサブワードの少数(1~16)のベクトルとして解釈されるものである。そして、単一の命令は、複数のデータに対して複数のオペレーションを指定することができる。
本発明の実施形態は、拡張された結果を含む命令を処理するためのシステムに関する。システムは、プロセッサ命令を実行するための第1の結果バスを有する第1の命令実行ユニットを含む。システムは、プロセッサ命令を実行するための第2の結果バスを有する第2の命令実行ユニットをさらに含む。第2の命令実行ユニットは、第1命令実行部に通信可能に結合されている。第1の命令実行ユニットは、第2の命令実行ユニットがプロセッサ命令を実行するために使用されない場合、プロセッサ命令の実行中に、第1の命令実行ユニットによって計算された結果の一部を第2の命令実行ユニットに選択的に送信するように構成される。第2の命令実行ユニットは、第1の命令実行ユニットにより計算された結果の一部を受信し、受信した結果を第2の結果バスに載置するように構成される。
本発明の実施形態は、拡張された結果を含む命令を処理するための方法に関する。この方法は、受信したプロセッサ命令が第1の命令実行ユニットの第1の結果バスの幅よりも大きくかつ第2の命令実行ユニットの第2の結果バスの幅よりも大きなデータ幅を有する結果を生じるか否かを判定することを含む。受信したプロセッサ命令が第1の結果バスの幅よりも大きくかつ第2の結果バスの幅よりも大きなデータ幅を有する結果を生じるか否かを判定することに応答して、受信したプロセッサ命令を実行するために第2の命令実行ユニットが利用されないか否かの判定が行われる。第2の命令実行ユニットは、第1命令実行部に通信可能に結合されている。第1の命令実行ユニットによって計算された結果の一部は、第2の命令実行ユニットがプロセッサ命令を実行するために使用されないという判定に応答して、プロセッサ命令の実行中に第2の命令実行ユニットの第2の結果バスに選択的に送信される。
本発明の実施形態は、拡張された結果を含む命令を処理するためのコンピュータ・プログラム製品に関する。本コンピュータ・プログラム製品は、それを以て具現化されたプログラム命令を有するコンピュータ可読記憶媒体を含む。プログラム命令は、プロセッサに方法を実行させるプロセッサによって実行可能である。本方法の非制限的な例は、受信されたプロセッサ命令が第1の命令実行ユニットの第1の結果バスの幅よりも大きくかつ第2の命令実行ユニットの第2の結果バスの幅よりも大きなデータ幅を有する結果を生じるか否かを判定することを含む。受信したプロセッサ命令が第1の結果バスの幅よりも大きくかつ第2の結果バスの幅よりも大きなデータ幅を有する結果を生じるか否かを判定することに応答して、受信したプロセッサ命令を実行するために第2の命令実行ユニットが利用されないか否かの判定が行われる。第2の命令実行ユニットは、第1命令実行部に通信可能に結合されている。第1の命令実行ユニットによって計算された結果の一部は、第2の命令実行ユニットがプロセッサ命令を実行するために使用されないという判定に応答して、プロセッサ命令の実行中に第2の命令実行ユニットの第2の結果バスに選択的に送信される。
追加の技術的な特徴および恩恵は、本発明の手法を通じて理解される。本発明の実施形態および態様は、本明細書に詳細に記載され、特許請求の範囲に記載の主題の一部であるものと考えられる。さらに良く理解するために、詳細な記載および図面を参照されたい。
本明細書に記載された排他的な権利の詳細は、本明細書の結論で、特許請求の範囲において具体的に指示され明確に請求されている。本発明の実施形態の前出のおよび他の特徴および利点は、添付の図面と併せて用いられる以下の詳細な記載から明らかである。
本発明の実施形態による複数の単一命令多重データ(SIMD)実行ユニットを有するデータ処理システムの高レベルのブロック図である。 本発明の実施形態によるSIMD実行ユニット内の構成要素、およびSIMD実行ユニットとデータ処理システムとの間のインターフェースを図示する高レベルのブロック図である。 本発明の実施形態による隣接SIMD実行ユニットの不使用の結果出力を再利用するための論理を示す図である。 本発明の実施形態による、ベクトル浮動小数点ロード延長倍精度(DP)命令の強化を示す図である。 本発明の実施形態によるダイナミック・レーン・マスキング機能を示す図である。 本発明の実施形態による、迅速かつ広範な結果生成のために、隣接SIMD実行ユニットを再利用するための方法のフローチャートである。
本明細書に示される図は例示的なものである。本発明の趣旨から逸脱することなく、図やそこに記載されたオペレーションに多くのバリエーションがある。例えば、異なる順序でアクションを行うことができ、あるいはアクションを追加、削除、または修正することができる。また、用語「結合された」およびその変形は、2つの要素間の通信経路を有することを記載し、この要素間に介在する要素/接続のない要素間の直接的な接続を含意しない。これらのバリエーションの全てが、本明細書の一部であるものと考えられる。
添付の図面および以下の開示された実施形態の詳細な説明において、図面に示された様々な要素は、2桁または3桁の参照番号を付されている。少数の例外を除いて、各参照番号の左端の数字は、その要素が最初に図示されている図に対応する。
一般に、単一命令多重データ(SIMD)アーキテクチャは、命令パイプライン内の並列処理の量を最大にするように設計される。SIMDアーキテクチャでは、多重データ入力を処理するために、同じ命令が並行して実行される。SIMD命令は、多重データ入力のベクトルに対する単一の制御スレッドの制御オペレーションの実行および分岐挙動を指定する。ベクトルは、一次元アレイ内にパッキングされた一組のデータ要素を含む命令オペランドである。要素は、整数または浮動小数点値とすることができる。ほとんどのSIMD命令は、ベクトルオペランド上で動作する。ベクトルは、SIMDオペランドまたはパック・オペランドとも呼ばれる。オペランドおよびデータ経路幅は、データを一度にどの程度処理できるかを定義する。すなわち、より広範なデータ経路はより複雑な機能を実行することができるが、一般に、これはより高い実装コストで行われる。さらに、一部のベクトル命令は、命令入力要素と比較して、より幅広い結果を生じる。より広範な結果を生じる例示的な命令としては、データをより大きなデータ・フォーマットに変換するための命令、乗算オペレーションなどが挙げられるが、これらに限定されない。バイナリ浮動小数点数は、3つのデータ・フォーマット、すなわちショート、ロング、または拡張のいずれかで表すことができる。非限定的な例として、ショート・フォーマットは32ビット、ロング・フォーマット64ビット、拡張フォーマット128ビットを含む。したがって、ショート・フォーマットからロング・フォーマットへ、またはロング・フォーマットから拡張フォーマットへ変換することにより、幅広い結果が得られる。チップ上の配線に限りがあるため、従来のデータ処理システムでSIMD実行ユニットによって利用される結果バスは、サイズの制限された結果をもたらす。従来のデータ処理システムは、隣接SIMD実行ユニットが現在不使用であったとしても、多重命令サイクルにわたってより広範な結果を生じる上述のオペレーションを実行することに留意されたい。この非効率性により、データ処理システムのスループットが事実上低減し、待ち時間が増加する。
従来のデータ処理システムは、異なるアプローチを用いてこれらの問題に対処する。一部の従来のシステムは、パイプライン化されたオペレーションを含む分割命令トランザクション・モデルを採用する。このモデルは、最低2つのコプロセッサを必要とし、この場合、命令は、低い部分と高い部分とに分割され、各コプロセッサは、対応する部分を実行する。このアプローチでは、コプロセッサでオペレーションを実行してコプロセッサからのオペレーション結果を読み出すために、最低2つのコプロセッサ命令が必要である。例えば、第1のコプロセッサは、乗算オペレーションの高い部分を実行することができるのに対し、第2のプロセッサは、乗算オペレーションの低い部分を実行することができる。対照的に、本発明の実施形態は、単一のトランザクション・モデルを採用し、ここでは、単一のコプロセッサ命令のみがオペレーションを開始し、オペレーションの結果を提供するために必要とされる。
一般に、パイプライン化は、命令当たりのサイクル数(CPI)の低減を通じて主に中央処理ユニット(CPU)の性能を増大させるが、尤も、CPUのクロック周期をそれほど低減することもない。パイプライン化は、命令実行を一連のステップに分解する技術である。パイプライン内の各ステップは、パイプステージとして知られており、命令の完全な実行のうち指定された部分を完了する。各パイプステージは、組立ラインのステーションが製品の製造の完成度を増してゆくのと同じ方法で実行を増してゆく。ちょうど製品によって組立ラインが完全に組み立てられて残されるように、この命令によって、パイプラインの最終的なパイプステージが完全に実行されて残される。
理想的には、パイプラインを構成するパイプステージの数に等しい数の命令が、実行中に重複していてもよく、各命令は、異なるパイプステージを占有している。CPUが十分な資源を有し、それより前のパイプステージが後のパイプステージの完成した結果に依存しない場合、各パイプステージは、(現在占有されている命令に基づいて)その機能を他のパイプステージと並行して、独立して実行することができる。さらに、CPUが完全に命令を実行する必要がある平均時間をパイプステージ間で均等に分割すると、順次実行にわたるパイプライン化された実行のためのCPUスループットの高速化は、パイプライン化されたステージの数に等しいものとなる。そのため、5つのパイプステージからなる理想的なパイプラインについて、1つの命令を順次実行するのに必要な平均時間で5つの命令が実行されるものとなり、スループットの高速化が5倍となる。パイプラインは、単一の命令を実行するために平均時間を減少させないが、単位時間当たりより多くの命令を完了することによって全体の平均実行時間を減少させることに留意されたい。
浮動小数点オペレーションの実行によって生成されるさらに広範な結果を扱うために、一部のパイプライン化されたデータ処理システムは、結果を書き込むために多重サイクル(オペレーションを完了するのに必要な数の)を使用する。このアプローチは、レジスタのライト・バック(WB)オペレーションが完了するまで、パイプラインの遮断を必要とする。従来のデータ処理システムによって採用される前述のアプローチはどちらも、オペレーションの結果を生成するために多重の命令を必要とするため、もしくは結果を書き込むために多重サイクルを必要とするため、またはその両方のため、帯域幅を低減し、待ち時間を増加させることに留意されたい。上述のアプローチの別の欠点は、実行されたオペレーションの結果に関連付けられたデータ要素を再結合するために追加の多重化能力を必要とすることである。さらに別の欠点は、処理ステージ間でデータを再配置する必要があるために必要とされる余分な命令によって、コード密度が低減し、メモリおよびキャッシュ内により多くのメモリが必要となることである。データ転送ステージの間に必要とされる各追加サイクルは、典型的には、プロセッサの作業負荷の増大をもたらすことに留意されたい。
より広範な出力を生成する処理命令の従来の異なるアプローチは、より広範なデータ・バスを利用することである。しかし、この解決策は、設計上の追加的な複雑さとより高い実装コストとのために、あまり効率的ではない。同時に、この特定の解決策は、典型的には、限られた数の命令のみにこのような能力が必要となるため、より広範なデータ・バスの過少利用に繋がる。
一般に、複数の現在の問題を解決するために、より大きな出力を提供しかつレーン・マスキング能力を有する専用の命令を含む、ベクトルSIMDエンジンを採用することができる。例えば、少なくとも一部の人工知能(AI)エンジンは、精度の小さな入力を処理して、より精度の高い出力を蓄積し生成する。本発明の実施形態は、不使用の隣接SIMDエンジンを利用してより広範な結果を生成することによって、上述の問題の全てに対処する。
図を参照し、特に図1を参照すると、本発明の実施形態によるSIMD実行ユニットを有するデータ処理システムの高レベルのブロック図が示されている。図示のように、データ処理システム100は、命令バス108およびアドレス・バス110を介してメモリ114に結合されたSIMDエンジン102を含む。SIMDエンジン102は、メモリ114から命令をフェッチし、そのような命令を、命令ディスパッチ・バス112を介して、選択されたSIMD実行ユニット106a~106cにディスパッチする。メモリ114は、異なる速度および容量を有する異なるレベルで実装されてもよい。そのようなメモリのレベルは、階層内の任意の特定のレベルの観点から、プロセッサからの次の下位レベルがキャッシュであるものとされるように構築することができる。キャッシュメモリは、SIMDエンジン102に近いサイクル時間で、比較的遅くかつ増大してゆくメインメモリがSIMDエンジン102(または、次のさらに高いレベルのメモリ)にインターフェースすることができるバッファ機能を提供する補助メモリである。
図1に示す例では、複数の実行ユニット106a~106cは、SIMD実行ユニットである。そのため、データ処理システム100内では、SIMDエンジン102は、データ処理システム100内の実行ユニットのクラスのうちの他の「実行クラス」としてSIMD実行ユニット106a~106cとインターフェースする。少なくとも一部の実施形態では、SIMD実行ユニット106a~106cは、他のオペレーションの間で浮動小数点演算オペレーションを実行するために利用されてもよい。SIMD実行ユニット106a~106cは、バス118a~118cを介してメモリ114に結合されている。
データ処理システム100内の別の実行ユニットは、例えば、ロード/格納実行ユニット104を含んでいてもよい。バス116を介してメモリ114に結合されたロード/格納実行ユニット104を利用して、アドレスを計算し、メモリアクセスを必要とする命令の実行中にそのアドレスをメモリ114に提供する。ロード/格納実行ユニット104を利用して、他の実行ユニットでの命令の実行中にメモリ114にアドレスを提供してもよい。
ここで図2を参照すると、本発明の実施形態によるSIMD実行ユニット内の構成要素、およびSIMD実行ユニットとデータ処理システムとの間のインターフェースをさらに図示する高レベルのブロック図がある。図示のように、SIMD実行ユニット106、制御ユニット202と、複数の処理要素204とを含む。制御ユニット202は、コマンド・バス206を介して、選択された処理要素204にコマンドをディスパッチする。制御ユニット202は、データ・バス208を介して、処理要素204にデータを転送し同要素からデータを受信する。各処理要素204は、別々のデータ・バス208により制御ユニット202に結合されている。
制御ユニット202は、CPU210から命令バス212を介してベクトル処理命令を受信する。レベル2キャッシュ(L2キャッシュ)214を用いて、SIMD実行ユニット106を含めた全ての実行ユニットについてデータおよび命令を格納してもよい。L2キャッシュ214は、データ・バス216を介してCPU210に結合されている。L2キャッシュ214はまた、データ・バス218を介してSIMD実行ユニット106内の制御ユニット202に結合されている。キャッシュ・コントローラ220は、L2キャッシュ214にアドレス信号を提供する。このアドレス信号を生じるために利用されるアドレスは、ロード/格納実行ユニット104によって演算されてもよい(図1を参照)。
図3は、本発明の実施形態による隣接SIMD実行ユニットの不使用の結果出力を再利用するためのロジックを示す図である。図3の左側に示すSIMD実行部106aおよび106bは、分割命令トランザクション・モデルを採用している。SIMD実行部106aおよび106bは、それぞれの入力302aおよび302bを受信して、それぞれの出力304aおよび304bを生成する。実行されたオペレーションがさらに広範な結果を生じることが予想される場合、SIMD実行ユニット106aおよび106bは、多重サイクルを用いてオペレーションを実行する。これに対して、本発明の実施形態によれば、図3の右側に示すSIMD実行ユニット106a~106dは、分割命令トランザクション・モデルと単一トランザクション・モデルとの両方を採用しており、より広範な結果を送達するために隣接SIMD実行ユニットの不使用の結果出力を選択的に再利用するように構成されている。有利なことに、開示された単一トランザクション・モデルは、スループットを大幅に増加させ、データ処理システム100の待ち時間を低減する。さらに、単一トランザクション・モデルによって、より大きな結果バス304を実装する必要性が排除される。
具体的には、図3の右側に示す例示的な構成は、第1のSIMD実行ユニット106a、第2のSIMD実行ユニット106b、第3のSIMD実行ユニット106c、および第4のSIMD実行ユニット106dを含む。第1のsSIMD実行ユニット106aは、第1のローカル接続部308aを介して第2のSIMD実行ユニット106bに接続され、一方で、第3のSIMD実行ユニット106cは、第2のローカル接続部308bを介して第4のSIMD実行ユニット106dに接続されている。図3に示すように、第2のSIMD実行ユニット106bおよび第4のSIMD実行ユニット106dはそれぞれ、マルチプレクサ310bおよび310dを含む。第1のマルチプレクサ310bは、本明細書に記載されるように、第2のSIMD実行ユニット106bにより算出された結果と、隣接する第1のSIMD実行ユニット106aにより算出された結果の一部とを選択して合成するように構成されている。第2のマルチプレクサ310dは、第4のSIMD実行ユニット106dにより算出された結果と、隣接する第3のSIMD実行ユニット106cにより算出された結果の一部とを選択して合成するように構成されている。なお、隣接する第2のSIMD実行ユニット106bおよび第4のSIMD実行ユニット106dは、オペレーション実行中に利用可能である場合にのみ、データ処理システム100によって選択的に使用される。
本発明の一実施形態によれば、命令のサブセットが実装され、命令は、2つの隣接SIMD実行ユニット上で直接的に計算を実行して、1サイクルでより広範な結果を生成する。一実施形態では、実装される命令は、バイナリ浮動小数点データを使用してもよい。具体的には、本発明の一実施形態は、命令の実行の結果を戻すための追加の配線および論理を使用する必要性を排除し、少ない追加の論理を用いて1サイクルで実行させることが可能になり、それによって性能が向上し、消費電力が低減する。これらの命令は、例えば、ロード延長(ロード拡張とも呼ばれることがある)命令を含む。しかし、ロード延長命令は、バイナリ浮動小数点数上で動作するため、最初にバイナリ浮動小数点数に関する詳細が提供される。バイナリ浮動小数点数は、例えば、32ビット、64ビット、および128ビットフォーマットを含めた複数のフォーマットを有することができ、各フォーマットは、例えば、符号410、指数412、および仮数部416を含む表現を有する(図4に示す)。
一般に、ロード延長命令は、倍精度浮動小数点入力を使用し、拡張倍精度浮動小数点出力(すなわち、命令によって受信される入力よりも大きい出力)を生じる。図4は、本発明の実施形態による、ベクトル浮動小数点ロード延長倍精度(DP)命令の強化を示す図である。図4に示すように、従来のベクトル浮動小数点ロード延長命令は、2つのサイクル、すなわち第1のサイクル402と第2のサイクル404とを必要とし、64ビットを用いてそのオペレーションを完了する。第1のサイクル402の間、従来のベクトル浮動小数点ロード延長命令は、仮数部416の一部分406(例えば低い部分)上でオペレーションを実行する。仮数部416のサイズは大き過ぎるため、第2のサイクル404の間に動作されない。第2のサイクル404の間、従来のベクトル浮動小数点ロード延長命令は、符号410、指数412、および仮数部416の第2の部分414(高い部分)などの浮動小数点数の残りの部分上で動作する。
さらに、図4は、本発明の一実施形態による、強化型ベクトル浮動小数点ロード延長DP420の実施を示す。強化型ベクトル浮動小数点ロード延長命令は、128ビット422、424上で動作する。従来のベクトル浮動小数点ロード延長命令とは対照的に、強化型ベクトル浮動小数点ロード延長DP命令420は、1サイクル内の浮動小数点数の全ての構成要素406~414上で動作する。本明細書に記載されるように、強化型ベクトル浮動小数点ロード延長命令は、隣接SIMD実行ユニットの結果バスを利用して、1サイクルでより広範な結果を生じるオペレーションを完了することができる。
SIMDコンピュータでは、他の種類のコンピュータと同様に、一般にマスキングと呼ばれる基本概念が、処理要素における個々のオペレーションの条件付き実行のために必要とされる。マスキングは、処理要素に適用される命令シーケンスの異なる命令がそれらの処理要素において実装されることのみを可能とし、その場合、別々の処理要素に適用される特定のデータは、シーケンス内の特定の命令の条件を満たす。処理要素に適用される命令シーケンス内のいくらかの命令から特定の処理要素をマスクする異なる技術が、当該技術分野で知られている。マスキングを用いた現在のSIMDマシンの詳細な概要は、Horde, R. Michael, "Parallel Supercomputing in SIMD Architectures" 1990 CRC Press Inc, Boca Raton, Flaに見出すことができる。さらに、米国特許第4,907,148号および第5,045,995号も、これらの種類のシステムにおけるマスキングの論考を提供している。
図5は、本発明の実施形態によるダイナミック・レーン・マスキング機能を示す図である。図5は、レーン・マスキング能力を有する8レーン(SIMD実行ユニット)106a~106hを有するSIMD回路500による乗算オペレーションの一例を模式的に示す。一実施形態では、複数のSIMD実行ユニット106a~106hのそれぞれは、マスク・レジスタを含む。一実施形態では、マスク・レジスタは、単一のマスク・コンテキスト(MC)ビットを保持するマスク・コンテキスト・レジスタと、単一のグローバル応答フラグ(GRF)ビットを保持するグローバル応答フラグ・レジスタとをさらに含んでいてもよい。マスク・コンテキスト・ビットは、以下にさらに詳細に説明するように、命令コール中に特定のSIMD処理要素を有効化または無効化するために、命令における特定のマシン・オペレーションのマスキングのために選択されたビットにより、ビット毎にANDされる。
回路500内のSIMD実行ユニット106a~106hは、入力データ要素302a~302hを受信し、それに基づいて、それぞれの結果データ要素304a~304hの生成を生じる必要な乗算を実行する。各入力データ要素が32ビット幅であると仮定すると、各乗算データ要素は少なくとも64ビット幅となる。また、SIMDエンジン102(図1に示す)は、隣接SIMD処理要素106a~106hによる命令の選択的な実行を制御するロジックを含む。複数のSIMD実行ユニット106a~106hは、隣接SIMD処理ユニットの結果バスを利用して、本明細書に記載されるより広範な結果を生じるように構成される。SIMDエンジン102は、選択されたSIMD実行ユニット106a~106hに1サイクルで現在の指令を実行させるように構成されている。図5に示す例では、第2のSIMD実行ユニット106b、第4のSIMD実行ユニット106d、第6のSIMD実行ユニット106f、第7のSIMD実行ユニット106g、および第8のSIMD実行ユニット106hがマスクされている。本発明の一実施形態によれば、第1のSIMD実行ユニット106a、第3のSIMD実行ユニット106c、および第5のSIMD実行ユニット106eは、図5に示すように、それぞれの隣接するマスクされたSIMD実行ユニットの結果バスを使用するように構成されている。一実施形態では、隣接するマスクされたSIMD実行ユニットは、それぞれのSIMD実行ユニットから計算結果の対応する部分が受信されるまで、任意の命令の処理を遅延させるように構成される。
図6は、本発明の実施形態による、迅速かつ広範な結果生成のために、隣接SIMD実行ユニットを再利用するための方法のフローチャートである。ブロック602では、SIMDエンジン102は、処理すべき次の命令を発行バッファにロードする。全てのレーン・マスキング依存性が解消されるまで、SIMD命令が発行バッファに保持される。
ブロック604において、SIMD実行ユニット106は、受信した命令が、広範な結果を生じるSIMDオペレーションを表すか否かを判定する。例えば、SIMD実行ユニット106は、乗算を実行するように要求されることがあり、その場合、各入力データ要素は32ビット幅であり、結果データ要素は少なくとも64ビット幅であって結果バスよりも広範となる。より広範な結果を生じるSIMDオペレーションのいくつかの他の例としては、短いフォーマットから長いフォーマットへの変換、長いフォーマットから拡張フォーマットへの変換などが挙げられるが、これらに限定されない。受信した命令が広範な結果を生じるオペレーションを表していないと判定したこと(決定ブロック604、分岐「No」)に応答して、ブロック608では、SIMD実行ユニット106は、通常のスタンドアロン・モードで命令を発行する。
本発明の一実施形態によれば、受信した命令が広範な結果を生じるオペレーションを表しているものと判定したこと(決定ブロック604、分岐「Yes」)に応答して、ブロック606では、SIMD実行ユニット106は、隣接SIMD実行ユニットが利用可能であるか(マスクされているか不使用であるか)かを判定する。例えば、図5を参照すると、第1のSIMD実行ユニット106aは、第2のSIMD実行ユニット106bがマスクされているか否かを判定するように構成されてもよい。
本発明の一実施形態によれば、隣接SIMD実行ユニットが利用可能でないと判定したこと(決定ブロック604、分岐「No」)に応答して、ブロック610では、SIMD実行ユニット106は、図4に示される2サイクルの従来の狭い動作402、404として命令を発行する。隣接SIMD実行ユニットが利用可能であるとSIMD実行ユニット106が判定した場合に(決定ブロック606、分岐「Yes」)、ブロック612では、SIMD実行ユニット106は、図4に示される新規の1サイクルの広範なオペレーション420として命令を発行する。ブロック614では、SIMD実行ユニットは、発行された命令に関連付けられたオペレーションを実行する。
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照して本明細書に説明される。フローチャート図もしくはブロック図またはその両方の各ブロック、ならびにフローチャート図もしくはブロック図またはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実装できることが理解されよう。
本発明は、システム、方法、もしくはコンピュータ・プログラム製品、またはそれらの組合せであり得る。コンピュータ・プログラム製品は、プロセッサに本発明の態様を行わせるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(または複数の媒体)を含んでいてもよい。
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持および格納することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、以下に限定されないが、例えば、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または前述の任意の適した組合せとしてよい。コンピュータ可読記憶媒体のより具体的な例の非網羅的な一覧としては、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読出し専用メモリ(ROM)、消去可能なプログラム可能な読出し専用メモリ(EPROMまたはフラッシュメモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読出し専用メモリ(CDROM)、デジタル汎用ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、機械的に符号化されたデバイス、例えば、命令を上に記録したパンチ・カードまたは溝内の隆起構造など、および前述の任意の適切な組合せが挙げられる。コンピュータ可読記憶媒体は、本明細書で使用される際に、それ自体が電波または他の自由に伝搬する電磁波、導波管または他の伝送媒体(例えば、光ファイバ・ケーブルを通る光パルス)を伝搬する電磁波、またはワイヤを介して伝送される電気信号などの一時的な信号であるものと解釈されるべきではない。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各演算/処理デバイスに、またはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくは無線ネットワーク、またはそれらの組合せを介して外部コンピュータまたは外部記憶装置に、ダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバ、またはそれらの組合せを含むことができる。各演算/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、各演算/処理デバイス内のコンピュータ可読記憶媒体に格納するためにコンピュータ可読プログラム命令を送る。
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または1つもしくは複数のプログラミング言語の任意の組み合わせで書かれたソースコードもしくはオブジェクトコードのいずれかとしてよく、プログラミング言語としては、Smalltalk、C++などのオブジェクト指向プログラミング言語と、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語が挙げられる。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に、ユーザのコンピュータ上で部分的に、スタンドアロン・ソフトウェア・パッケージとして、ユーザのコンピュータ上で部分的にかつリモート・コンピュータ上に部分的に、またはリモート・コンピュータ上で部分的にもしくはリモート・コンピュータ上で全体的に、実行してもよい。後者のシナリオでは、リモート・コンピュータが、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含めた任意のタイプのネットワークを介してユーザのコンピュータに接続されていてもよいし、または接続が、外部コンピュータに(例えば、インターネットサービスプロバイダを用いてインターネットを介して)なされていてもよい。いくつかの実施形態では、例えば、プログラム可能なロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラム可能なロジックアレイ(PLA)を含めた電子回路は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報によって、コンピュータ可読プログラム命令を実行してもよい。
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されて、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令がフローチャートもしくはブロック図またはその両方の1つまたは複数のブロックにおいて指定された機能/動作を実装する手段を生成するように、機械を生成し得る。これらのコンピュータ可読プログラム命令はまた、コンピュータ、プログラム可能なデータ処理装置、もしくは他のデバイス、またはそれらの組合せを特定の方法で機能させることのできるコンピュータ可読記憶媒体に格納されてもよく、ゆえに、命令を中に格納したコンピュータ可読記憶媒体は、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックにおいて指定された機能/動作の態様を実装する命令を含む、製品を含み得る。
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能な装置、または他のデバイス上で実行される命令がフローチャートもしくはブロック図またはその両方の1つまたは複数のブロックにおいて指定された機能/動作を実装するように、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイス上にロードされて、一連の動作ステップをコンピュータ、他のプログラマブル装置、または他のデバイス上で実施させて、コンピュータ実装プロセスを生じる。
本発明の様々な実施形態は、関連する図面を参照して本明細書に記載されている。本発明の代替的な実施形態は、本発明の範囲から逸脱することなく考案することができる。以下の記載および図面には、様々な接続および位置関係(例えば、上、下、隣接など)が要素間に記載されている。これらの接続もしくは位置関係またはその両方は、別段に指定のない限り、直接的または間接的とすることができ、本発明はこの点において限定されることを意図されていない。したがって、エンティティの結合は、直接的または間接的な結合のどちらかを参照することができ、エンティティ間の位置関係は、直接的または間接的な位置関係とすることができる。さらに、本明細書に記載される様々なタスクおよびプロセスステップは、本明細書で詳細に記載されない追加のステップまたは機能性を有するさらに包括的な手順またはプロセスに組み込むことができる。
以下の定義および略語は、特許請求の範囲および本明細書の解釈に用いられるべきである。本明細書中で使用されるように、用語「含む(comprises)」、「含むこと(comprising)」、「含む(includes)」、「含むこと(including)」、「有する(has)」、「有すること(having)」、「含有する(contains)」、もしくは「含有すること(containing)」、またはそれらの任意のバリエーションは、非排他的な包含をカバーすることを意図されている。例えば、要素の列挙を含む組成物、混合物、プロセス、方法、物品、または装置は、必ずしもこれらの要素のみに限定されるものではなく、そのような組成物、混合物、プロセス、方法、物品、または装置に明示的に列挙されていないかまたは固有の他の要素を含むことができる。
さらに、「例示的」という用語は、本明細書では、「例、インスタンス、または例示としての機能を供する」ことを意味するために使用される。本明細書に記載される任意の実施形態または設計は、必ずしも、他の実施形態または設計よりも好ましいか、または有利であると解釈されるべきではない。用語「少なくとも1つ」および「1つまたは複数」とは、1以上の任意の整数、すなわち1、2、3、4、5などを含むものと理解され得る。用語「複数」とは、2以上任意の整数、すなわち2、3、4、5などを含むものと理解され得る。用語「接続「とは、間接的な「接続」と直接的な「接続」との両方を含み得る。
用語「約」、「実質的に」、「およそ」、およびそのバリエーションは、本願の出願時に利用可能な器具に基づくある具体的な量の測定に関連する誤差の程度を含むことが意図されている。例えば、「約」は、所与の値の±8%もしくは5%、または2%の範囲を含むことができる。
本発明の様々な実施形態の説明が、例示のために提示されるものとなるが、網羅的であること、または開示された実施形態に限定されることを意図するものではない。記載された実施形態の範囲および趣旨から逸脱することなく、多くの修正および変形が当業者には明らかになるであろう。本明細書で使用される用語は、実施形態の原理、実用的な適用、もしくは市場で発見された技術を超える技術的な改善を最も良く説明するために、または他の当業者が理解することを可能にするように選択されたものである。
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施形態のアーキテクチャ、機能性、および動作を説明する。この点に関して、フローチャートまたはブロック図の各ブロックは、指定されたロジック機能を実装するための1つまたは複数の実行可能な命令を含む、命令のモジュール、セグメント、または部分を表すことがある。いくつかの代替的な実施形態では、ブロックに記載された機能は、図に記載された順序の外に生じ得る。例えば、連続して示される2つのブロックが、実際には、実質的に同時に実行されてもよいし、またはブロックが、関与する機能性に応じて、逆の順序で実行されてもよい。また、ブロック図もしくはフローチャート図またはその両方の各ブロック、ならびにブロック図もしくはフローチャート図またはその両方におけるブロックの組合せは、指定された機能もしくは動作を実行するか、または専用ハードウェアとコンピュータ命令との組合せを実施する、専用ハードウェアベースのシステムによって実装できることに留意されたい。

Claims (20)

  1. 拡張された結果を含む命令を処理するシステムであって、
    プロセッサ命令を実行するための第1の結果バスを有する第1の命令実行ユニットと、
    前記第1の命令実行ユニットに通信可能に結合されており、プロセッサ命令を実行するための第2の結果バスを有する、第2の命令実行ユニットと
    を含み、
    前記第1の命令実行ユニットは、前記第2の命令実行ユニットが前記プロセッサ命令の実行に用いられない場合に、プロセッサ命令の実行中に、前記第1の命令実行ユニットにより計算された結果の一部を前記第2の命令実行ユニットに選択的に送信するように構成されており、前記第2の命令実行ユニットは、前記第1の命令実行ユニットにより計算された前記結果の一部を受信するように構成され、前記受信した部分を前記第2の結果バスに載置するように構成されている、
    システム。
  2. 前記システムは、1組の命令実行ユニットをさらに含み、前記結果の異なる部分は、予め定義されたレーン・マスクに基づいて、前記命令実行ユニットのサブセットの異なる命令実行ユニットによって計算される、請求項1に記載のシステム。
  3. 前記第1の命令実行ユニットおよび前記第2の命令実行ユニットは、単一の命令、多重データ(SIMD)処理ユニットを含み、前記プロセッサ命令はSIMD命令を含む、請求項2に記載のシステム。

  4. 前記第1の命令実行ユニットおよび前記第2の命令実行ユニットは、マスク・レジスタを含み、前記マスク・レジスタは、前記予め定義されたレーン・マスクを格納するように構成される、請求項3に記載のシステム。
  5. 前記実行されるプロセッサ命令によって生じる結果データの幅は、前記第1の結果バスの幅よりも大きく、前記第2の結果バスの幅よりも大きい、請求項1に記載のシステム。
  6. 前記第1の命令実行ユニットは、前記第2の命令実行ユニットに隣接して配置される、請求項1に記載のシステム。
  7. 前記プロセッサ命令は、ベクトル浮動小数点(FP)ロード延長命令を含む、請求項1に記載のシステム。
  8. 前記プロセッサ命令は、1つの演算サイクルで実行される、請求項1に記載のシステム。
  9. 前記第1の命令実行ユニットおよび前記第2の命令実行ユニットは、単一のトランザクション・モデルを採用するように構成される、請求項1に記載のシステム。
  10. 拡張された結果を含む命令を処理する方法であって、
    受信したプロセッサ命令が、第1の命令実行ユニットの第1の結果バスの幅よりも大きくかつ第2の命令実行ユニットの第2の結果バスの幅よりも大きなデータ幅を有する結果を生じるか否かを判定すること、
    前記受信したプロセッサ命令が、前記第1の結果バスの幅よりも大きくかつ前記第2の結果バスの幅よりも大きなデータ幅を有する結果を生じるか否かを判定することに応答して、前記受信したプロセッサ命令を実行するために前記第2の命令実行ユニットが利用されないか否かを判定することであって、前記第2の命令実行ユニットが、前記第1の命令実行ユニットに通信可能に結合されている、判定すること、
    前記第2の命令実行ユニットが前記プロセッサ命令を実行するために使用されないという判定に応答して、前記第1の命令実行ユニットによって計算された結果の一部が、前記プロセッサ命令の実行中に前記第2の命令実行ユニットの前記第2の結果バスに選択的に送信されること
    を含む方法。
  11. 前記第2の命令実行ユニットが、前記受信したプロセッサ命令を実行するために利用されないか否かを判定することは、前記第2の命令実行ユニットが、予め定義されたレーン・マスクに基づいて、前記受信したプロセッサ命令を実行するために利用されないか否かを判定することをさらに含む、請求項10に記載の方法。
  12. 前記第1の命令実行ユニットおよび前記第2の命令実行ユニットは、単一の命令、多重データ(SIMD)処理ユニットを含み、前記プロセッサ命令はSIMD命令を含む、請求項11に記載の方法。
  13. 前記第1の命令実行ユニットおよび前記第2の命令実行ユニットは、マスク・レジスタを含み、前記マスク・レジスタは、前記予め定義されたレーン・マスクを格納するように構成される、請求項12に記載の方法。

  14. 前記第1の命令実行ユニットは、前記第2の命令実行ユニットに隣接して配置される、請求項10に記載の方法。
  15. 前記プロセッサ命令は、ベクトル浮動小数点(FP)ロード延長命令を含む、請求項10に記載の方法。
  16. 前記プロセッサ命令は、1つの演算サイクルで実行される、請求項10に記載の方法。
  17. 前記第1の命令実行ユニットおよび前記第2の命令実行ユニットは、単一のトランザクション・モデルを採用するように構成される、請求項10に記載の方法。
  18. 拡張された結果を含む命令を処理するコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品は、それを以て具現化されたプログラム命令を有するコンピュータ可読記憶媒体を含み、前記プログラム命令は、1つまたは複数のプロセッサに、
    受信したプロセッサ命令が第1の命令実行ユニットの第1の結果バスの幅よりも大きくかつ第2の命令実行ユニットの第2の結果バスの幅よりも大きなデータ幅を有する結果を生じるか否かを判定すること、
    前記受信したプロセッサ命令が前記第1の結果バスの幅よりも大きくかつ第2の結果バスの幅よりも大きなデータ幅を有する結果を生じるか否かを判定することに応答して、前記受信したプロセッサ命令を実行するために前記第2の命令実行ユニットが利用されないか否かを判定すること、
    前記第2の命令実行ユニットが前記プロセッサ命令を実行するために使用されないという判定に応答して、前記第1の命令実行ユニットによって計算された結果の一部が、前記プロセッサ命令の実行中に前記第2の命令実行ユニットの前記第2の結果バスに選択的に送信されること
    を含む方法を実行させるように前記1つまたは複数のプロセッサによって実行可能である、コンピュータ・プログラム製品。
  19. 前記第2の命令実行ユニットが、前記受信したプロセッサ命令を実行するために利用されないか否かを判定することは、前記第2の命令実行ユニットが、予め定義されたレーン・マスクに基づいて、前記受信したプロセッサ命令を実行するために利用されないか否かを判定することをさらに含む、請求項18に記載のコンピュータ・プログラム製品。
  20. 前記第1の命令実行ユニットおよび前記第2の命令実行ユニットは、単一の命令、多重データ(SIMD)処理ユニットを含み、前記プロセッサ命令はSIMD命令を含む、請求項19に記載のコンピュータ・プログラム製品。
JP2022515759A 2019-09-10 2020-08-07 迅速かつ広範な結果生成のための隣接simdユニットの再利用 Pending JP2022546785A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/565,946 2019-09-10
US16/565,946 US11269651B2 (en) 2019-09-10 2019-09-10 Reusing adjacent SIMD unit for fast wide result generation
PCT/IB2020/057461 WO2021048653A1 (en) 2019-09-10 2020-08-07 Reusing adjacent simd unit for fast wide result generation

Publications (1)

Publication Number Publication Date
JP2022546785A true JP2022546785A (ja) 2022-11-08

Family

ID=74850944

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022515759A Pending JP2022546785A (ja) 2019-09-10 2020-08-07 迅速かつ広範な結果生成のための隣接simdユニットの再利用

Country Status (6)

Country Link
US (1) US11269651B2 (ja)
JP (1) JP2022546785A (ja)
CN (1) CN114365110A (ja)
DE (1) DE112020003313T5 (ja)
GB (1) GB2603339B (ja)
WO (1) WO2021048653A1 (ja)

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4766564A (en) * 1984-08-13 1988-08-23 International Business Machines Corporation Dual putaway/bypass busses for multiple arithmetic units
US5045995A (en) 1985-06-24 1991-09-03 Vicom Systems, Inc. Selective operation of processing elements in a single instruction multiple data stream (SIMD) computer system
US4907148A (en) 1985-11-13 1990-03-06 Alcatel U.S.A. Corp. Cellular array processor with individual cell-level data-dependent cell control and multiport input memory
US5903772A (en) * 1993-10-29 1999-05-11 Advanced Micro Devices, Inc. Plural operand buses of intermediate widths coupling to narrower width integer and wider width floating point superscalar processing core
US5513366A (en) 1994-09-28 1996-04-30 International Business Machines Corporation Method and system for dynamically reconfiguring a register file in a vector processor
US6029244A (en) * 1997-10-10 2000-02-22 Advanced Micro Devices, Inc. Microprocessor including an efficient implementation of extreme value instructions
US6308252B1 (en) * 1999-02-04 2001-10-23 Kabushiki Kaisha Toshiba Processor method and apparatus for performing single operand operation and multiple parallel operand operation
US6260133B1 (en) * 1999-02-08 2001-07-10 Kabushiki Kaisha Toshiba Processor having operating instruction which uses operation units in different pipelines simultaneously
US8424012B1 (en) 2004-11-15 2013-04-16 Nvidia Corporation Context switching on a video processor having a scalar execution unit and a vector execution unit
JP2008084009A (ja) 2006-09-27 2008-04-10 Toshiba Corp マルチプロセッサシステム
US7694112B2 (en) 2008-01-31 2010-04-06 International Business Machines Corporation Multiplexing output from second execution unit add/saturation processing portion of wider width intermediate result of first primitive execution unit for compound computation
US8051275B2 (en) 2009-06-01 2011-11-01 Arm Limited Result path sharing between a plurality of execution units within a processor
US9323521B2 (en) * 2011-12-19 2016-04-26 Silminds, Inc. Decimal floating-point processor
US9557993B2 (en) * 2012-10-23 2017-01-31 Analog Devices Global Processor architecture and method for simplifying programming single instruction, multiple data within a register
US10514928B2 (en) * 2014-04-17 2019-12-24 Arm Limited Preventing duplicate execution by sharing a result between different processing lanes assigned micro-operations that generate the same result
US9672043B2 (en) 2014-05-12 2017-06-06 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor
KR20190109572A (ko) * 2014-10-08 2019-09-25 선전 구딕스 테크놀로지 컴퍼니, 리미티드 지문센서에서 액티브 베이스라인 신호 취소
US11061672B2 (en) 2015-10-02 2021-07-13 Via Alliance Semiconductor Co., Ltd. Chained split execution of fused compound arithmetic operations
US10275391B2 (en) 2017-01-23 2019-04-30 International Business Machines Corporation Combining of several execution units to compute a single wide scalar result

Also Published As

Publication number Publication date
GB202203969D0 (en) 2022-05-04
GB2603339A (en) 2022-08-03
US11269651B2 (en) 2022-03-08
DE112020003313T5 (de) 2022-04-21
US20210073000A1 (en) 2021-03-11
GB2603339B (en) 2023-04-19
WO2021048653A1 (en) 2021-03-18
CN114365110A (zh) 2022-04-15

Similar Documents

Publication Publication Date Title
US10469397B2 (en) Processors and methods with configurable network-based dataflow operator circuits
US11086816B2 (en) Processors, methods, and systems for debugging a configurable spatial accelerator
US10558575B2 (en) Processors, methods, and systems with a configurable spatial accelerator
US10445451B2 (en) Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10416999B2 (en) Processors, methods, and systems with a configurable spatial accelerator
US10496574B2 (en) Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US10387319B2 (en) Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US20190004878A1 (en) Processors, methods, and systems for a configurable spatial accelerator with security, power reduction, and performace features
KR101964350B1 (ko) 다중 레지스터 메모리 액세스 명령어들, 프로세서들, 방법들 및 시스템들
US20190004945A1 (en) Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US8595280B2 (en) Apparatus and method for performing multiply-accumulate operations
CN112099852A (zh) 可变格式、可变稀疏矩阵乘法指令
JP6373425B2 (ja) 複数のビットを左にシフトし、複数の1を複数の下位ビットにプルインするための命令
RU2612597C1 (ru) Процессоры, способы, системы и команды с предикацией элементов упакованных данных
JP2002333978A (ja) Vliw型プロセッサ
JP2017107579A (ja) リードマスク及びライトマスクにより制御されるベクトル移動命令
US20140181466A1 (en) Processors having fully-connected interconnects shared by vector conflict instructions and permute instructions
KR20140118924A (ko) 마스킹된 전체 레지스터 액세스들을 이용한 부분적 레지스터 액세스들을 구현하기 위한 프로세서들, 방법들 및 시스템들
JPH04328637A (ja) 並列プロセッサー
JP5941488B2 (ja) 条件付きショート前方分岐の計算的に等価な述語付き命令への変換
US8977835B2 (en) Reversing processing order in half-pumped SIMD execution units to achieve K cycle issue-to-issue latency
US11830547B2 (en) Reduced instruction set processor based on memristor
KR100267092B1 (ko) 멀티미디어신호프로세서의단일명령다중데이터처리
JP2022546785A (ja) 迅速かつ広範な結果生成のための隣接simdユニットの再利用
JP2004503872A (ja) 共同利用コンピュータシステム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220315

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220518

RD16 Notification of change of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7436

Effective date: 20220330

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240402