JP6894377B2 - 専用プロセッサ用ハードウェア命令生成ユニット - Google Patents
専用プロセッサ用ハードウェア命令生成ユニット Download PDFInfo
- Publication number
- JP6894377B2 JP6894377B2 JP2017545214A JP2017545214A JP6894377B2 JP 6894377 B2 JP6894377 B2 JP 6894377B2 JP 2017545214 A JP2017545214 A JP 2017545214A JP 2017545214 A JP2017545214 A JP 2017545214A JP 6894377 B2 JP6894377 B2 JP 6894377B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- instructions
- operand
- dedicated processor
- processor
- 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.)
- Active
Links
- 239000000872 buffer Substances 0.000 claims description 66
- 238000012545 processing Methods 0.000 claims description 65
- 239000013598 vector Substances 0.000 claims description 53
- 230000015654 memory Effects 0.000 claims description 31
- 238000000034 method Methods 0.000 claims description 31
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 238000007792 addition Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 10
- 230000000007 visual effect Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 7
- 238000011161 development Methods 0.000 description 7
- 238000005457 optimization Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 238000003491 array Methods 0.000 description 5
- 230000004888 barrier function Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 238000012163 sequencing technique Methods 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 238000012369 In process control Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 4
- 210000004544 dc2 Anatomy 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000004190 ion pair chromatography Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000000875 corresponding effect Effects 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 3
- 238000012795 verification Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
- G06F9/3881—Arrangements for communication of instructions and data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/4552—Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Devices For Executing Special Programs (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- User Interface Of Digital Computer (AREA)
- Image Processing (AREA)
Description
本願は、2015年2月25日に出願された「専用プロセッサ用ハードウェア命令コンパイラ」と題する米国仮特許出願第62/120,603号の関連出願であり、米国特許法第119条(e)の下でこの仮特許出願に基づく優先権を主張する。この仮出願は、完全且つ十分に本明細書に記載されているように全体があらゆる目的のために援用されることによって、本願に組み込まれている。
ホストコンピュータを専用プロセッサに接続する方法、装置及びシステムが開示される。一実施形態では、ホストコンピュータを専用プロセッサに接続するように構成された命令生成ユニットは、ホストプログラムのオペレーションコードと、第1仮想ホストプログラムオペランドと、をホストコンピュータから受信するように構成された属性ステージ(attribute stage)を備える。ここで、第1仮想ホストプログラムオペランドは、専用プロセッサの第1オペランドを表す。本実施形態では、属性ステージは、第1仮想ホストプログラムオペランドを第1オペランド記述子に拡張するようにさらに構成されている。ここで、第1オペランド記述子は、1つ以上のオペランド属性に関して第1オペランドの記述を提供する。命令生成ユニットは、第1オペランド記述子と、ホストプログラムのオペレーションコードと、を属性ステージから受信し、ホストプログラムのオペレーションコードを、専用プロセッサが実行するために1つ以上のデコードした命令に変換し、デコードした命令を専用プロセッサが実行するときに使用する記憶領域を割り当てるように構成されたデコードステージ(decode stage)を備える。本実施形態の命令生成ユニットは、デコードした命令をデコードステージから受信し、1つ以上のデコードした命令を1つ以上の命令キューに配置し、専用プロセッサが実行するために、デコードした命令を1つ以上の命令キューのうち少なくとも1つから発行するように構成された命令バッファステージ(instruction buffer stage)をさらに備える。
本明細書で説明するオブジェクトクラスライブラリ及びハードウェア命令コンパイラと共に使用可能な専用プロセッサの一例は、米国特許第9,183,694号に記載されているタイルプロセッサである。この特許は、十分且つ完全に本明細書に記載されているものとし、参照することによって本明細書に組み込まれるものとする。タイルプロセッサは、画像処理に使用されるような二次元の相関データセットの効率的な高スループット処理に適合される。上述した特許出願で詳述されているように、タイルプロセッサは、ハードウェアベースの処理を実行するために、メモリ分割及び命令シーケンシングの新規技術を含む複数の特徴を用いる。しかしながら、本明細書に記載するカスタムコンパイルの方法及びシステムは、特定のタイプの専用プロセッサでの使用に限定されない。
・タイルパスは、レジスタファイル及びDMEMに対して幅広いRAMを必要としない。SIMDは、は64ビットか32ビットのデータパスを想定すると最大2048ビット幅のRAMと同等のRAMを必要とするが、タイルパスは、典型的な32ビット(又は16ビット)のデータパスとの違いがない。
・ローカルな近傍のピクセルにアクセスする場合、大きな多重化構造を必要としない。SIMDでは、所定位置の左右のピクセルにアクセスする要求が、多数のデータパスにわたってRAM出力を多重化するオーバーヘッドのために、通常、両側の2〜3ピクセルに制限される。タイルパスでは、事実上完全に相互接続されているものの、相互接続が桁違いに簡素化されているため、このようなアクセスに関する制限はない。
・SIMDは、32又は64ピクセルの単位で割り当てられるのに対し、タイルパスは、1ピクセルの単位で動的に割り当てられるので、タイルパスのエネルギー効率はSIMDより高い。この割り当ては命令毎に行われる。このため、例えば、1024幅のベクトルに対するオペレーションでは256のタイルパスを使用でき、その直後のオペレーションでは、512幅のベクトルに対して128のタイルパスのみを使用し、残りの128のパスのクロックを停止する。
・相互接続でのデータ転送の単位はスカラーであり、システムレベルではスカラーのストリームである。SIMDは、一般的に、例えばSIMDの幅のクロスバー等のベクトルレベルの相互接続を必要とし、システムレベルのデータは、SIMDに転送される前に、場合によってはピクセルのインターリーブやデインターリーブを用いてベクトルに集約される必要がある。これにより、システムの相互接続がタイルパスに比べて複雑になるだけでなく、処理の遅延が生じる。単一のタイルパスは、他のタイルパスとは独立して、スカラー入力を受信すると直ぐに処理を開始することができる。ベクトルはシステムレベルで露出しないので、明示的なピクセルのインターリーブやデインターリーブがない。代わりに、ピクセルのフォーマットは、タイルアレイ内でスカラーから抽象的なベクトルをアセンブルするために、プログラムがどのように記述されるかによって決定される。
・ストールによって、同じサイクルで全てのデータパスがアイドル状態になるわけではない。その代わりに、タイルパスは、独立してストール状態を検出し、ストール状態を連続するサイクルで命令パイプラインを介して伝搬する。極端なケースを例として用いると、64のタイルパスは、ストールによって1サイクルを無駄にするだけで、64の独立したストール状態を解決することができる。実際、全てのパスにわたって検出されるストール状態の総数は、ストールを解決するのに必要なサイクルの総数よりもはるかに大きく、2〜3倍以上になることもある。これにより、潜在的なシステムレベルの競合の可能性がかなり高いにもかかわらず、サイクル当たりの命令(IPC)レートがかなり高くなる。
タイルアレイの命令生成は、任意の適切なローカルホストISAに適合された独特なメカニズムを使用する。ツールチェーンがC++や同等の機能を備えたオブジェクト指向言語に基づいている限り、ISA用の既存のソフトウェアツールチェーンに変更を加える必要がほとんどない(ある意味で全くない)。したがって、これは、ホストISAの拡張であり、本明細書では、命令のセットをまとめてビジュアルプロセッシング拡張(VPX)と呼ぶ。
一実施形態では、タイルアレイのアプリケーションは、C++のクラスライブラリに基づいている。このクラスライブラリは、仮想タイルアレイの機能を2つの異なる形式で実装する。第1の形式は、純粋にソフトウェアで実装されており、タイルアレイと完全に同等の機能を有するが、ハードウェア上で実行されないため非常に実行が遅い。第2の形式は、単にVPX命令をインラインで発行するものであり、クラスライブラリへのプロシージャコールのオーバーヘッドがなく、スーパースカラーパイプラインで、他のホスト命令と可能な限り並列に、1サイクルで実行する効果がある。
DataVector<int> a(width), b(width), c;
…
c = a + b:
図3は、本明細書で説明されるシステム及び方法を実施する際に使用されるホストコンピュータ300の例示的な実施形態の簡略化したブロック図である。図3に具体的に示される構成要素に加え、ホストコンピュータは、当業者が理解するような従来のコンピュータの方法で相互接続された、従来のコンピュータの構成要素(例えば、電源及び電源への接続のための構成要素等)を含む。一実施形態では、本明細書で説明されるオブジェクトクラスライブラリを用いて従来のコンパイラによってコンパイルされたプログラムを、図3に示すようなホストコンピュータで実行する。一般的なレベルでは、図3の中央右側部分に示すIGU302以外の要素は、従来のプロセッサでも見られる要素である。
・IGUは、全ての制御、順序付け及びコヒーレンシのオペレーションを実行する。逐次実行モデルを採用しており、例えば、メモリへの書き込みは、同じ位置の読み出しよりも常に先行し、全ての読み出しは、後続の書き込みの前に実行される。タイルアレイにおける実行は、大規模なアウトオブオーダであるが、逐次実行モデルに基づくタイルパス命令において提供される情報を用いて、順次オーダが等価的に維持されている。
・IGUは、システムインタフェースとグローバルテーブルのオペレーションを管理する。例えば、IGUは、ベールアドレス及びアクセス幅をタイルパスとは独立に提供する。これらのオペレーションは、完全にタイルパスの外側で行われる。タイルパスは、グローバルな詳細と全く関わることなく、ロード、ストア及びヒストグラムのオペレーションを単に実行し、ローカルオフセットとデータを提供する。
・IGUは、タイルパスに対して全てのレジスタ及びメモリの割り当てを行う。この割り当ては、レジスタのスピル/フィルを含み、(オプションで)アキュムレータを割り当てて積和演算を合成する。この割り当ては、従来のコンパイラが処理しなければならない場合に行う割り当てと同等で、一般的であり、実際にはより効果的である。なぜならば、カスタム命令のストリームには、分岐がなければ手続きの呼び出しもなく、明示的な手続のリンクの必要もないからである。スピルされる全てのオブジェクトは、DMEMの位置が割り当てられるが、この位置は、スピルが必要なときにのみ割り当てられる。十分な数のレジスタ(通常、1つのピクセル位置に対して256個)があれば、スピルはめったに起こらないし、フィルはさらに珍しい。なぜならば、オブジェクトは、手続きからの復帰(又は削除)でデストラクトされ、再び使用されることがないからである。
・IGUは、共有データをコヒーレンシが保たれるように管理する。例えば、レジスタはタイルパス間で共有されないので、共有データは、一時的な評価時以外にレジスタに割り当てられない。
・命令は、1つのオペレーションが如何なる数のデータタイプに対しても定義できるように、タイプのタグを使用する。例えば、符号付/符号無整数の加算と浮動小数点の加算は、データタイプを識別するフィールドを除いて同一である。これは、基礎となるオペレーションをサポートするようにタイルパスが設計されていると仮定すると、固定小数点等のユーザ定義のタイプを含むように拡張することができる。
図4は、図3のIGU302の構成及びオペレーションを示す例示的なブロック図である。上述したように、IGUは、ホストのデータパス内の機能ユニットとして実装されるが、VPX命令を直接実行するのではなく、それらを解釈する。この機能ユニットの例示的な構成は、2つの入力オペランド(ホストdataA及びホストdataB)を有し、1つの結果(ホスト結果)を返す。ホストdataAは、ほとんどの場合オブジェクトトラッカを含むが、例外として、コンストラクタ命令に対してはオブジェクトのパラメータを有し得る。ホストdataBが存在する場合、ホストdataBは、もう1つのオブジェクトトラッカ、固定値(即値)又はコンストラクタ情報の何れかを含む。ホスト結果が命令で定義されている場合は、ホスト結果は、通常、命令の結果に対してIGUが割り当てたオブジェクトトラッカである。しかしながら、ホストに戻されるVectorSummaryオブジェクト内のスカラー値であってもよい。
属性ステージは、ホストプロセッサへのメインインタフェースを実装し、VPXオペコードとdataA及びdataBとを受信し、結果のオブジェクトトラッカを返す。主な機能は、1)オブジェクト記述子を属性テーブルに書き込み、コンストラクタ命令を実行する。2)これらの記述子を、命令実行に伴う要求により更新する。3)記述子を削除して、デストラクタ命令を実行する。4)VPX命令をタイルパス命令に変換するのにデコードステージが必要な情報を集める。属性ステージは、この情報をデコードステージに出力する。
図4の中央に示すIGUのデコードステージは、命令及び属性情報を属性ステージから受信し、レジスタ割り当てフラグとレジスタ割り当てキューとを用いて、レジスタの割り当て及び割り当ての解除を行う。また、デコードステージは、専用プロセッサのための命令を形成し、その命令を命令バッファステージに渡す。デコードステージは、VPX命令のシーケンスを、機能的に同等のタイルパス命令のシーケンスに変換する。高レベルでは、これは、例えばVPXのaddからタイルパスのaddのように、命令を一つのフォーマットから他のフォーマットに単に変換するだけである。しかしながら、レジスタ割り当て、スピル/フィル位置のDMEM割り当てを含むレジスタのスピル/フィル、命令に依存情報を注釈することも含まれる。デコードステージは、図1に示すテーブルシステムユニット114に対する制御インタフェースを実装し、システムアクセス及びテーブルアクセスに対する依存性の追跡及び管理を含む。
図4の下部に示すハードウェア命令コンパイラのI−バッファステージは、スカラーレジスタとスカラー機能ユニットとを含み、専用プロセッサからスカラーデータを受信し、ホストプロセッサによって提供された他のスカラーオペランドを用いてスカラーデータに動作し、スカラー結果を記憶する。また、I−バッファステージは、最適化キューと命令再実行バッファとを含み、専用プロセッサによる命令の実行を管理する。タイルアレイを専用プロセッサとして有する実施形態では、I−バッファステージが、米国特許第9,183,614号に記載された「主プロセッサ」の命令取得及びシーケンシングオペレーションを実行する。タイルプロセッサを専用プロセッサとする実施形態では、I−バッファステージは、デコードステージの最適化キューから命令を受信し、2つの命令バッファを管理する。1つの命令バッファはベクトル命令用(べクトル命令再実行バッファ414)であって、もう一つの命令バッファはスカラー命令用(スカラー命令キュー416)である。ベクトル命令はタイルパスによって実行され、I−バッファステージは、ベクトルI−パイプへの命令のシーケンシングを管理する。スカラー命令は、例えばベクトル内の最大値を求めるオペレーションのようにベクトル内オペレーションで生成されるスカラーを必要とするいくつかの命令を除いて、IGUによって直接実行される。後者の命令は、スカラー結果とベクトルオペレーションとを同期させるために、ベクトルバッファとスカラバッファの両方に配置される。
図5及び図6は、属性ステージのオペレーションのトップレベルのフロー図である。このステージは、デコードステージが機能停止状態(ステップ502)でなく、属性ステージから情報を受信可能な場合(この指標は、I−バッファステージが、デコードステージから命令を受信する状態にあるか否かも反映し得る)にのみ動作する。このレベルでの主要なオペレーションは、属性テーブル(図5)の状態に直接影響を与える命令に応答することであって、デコードステージ(図6)に対してオペランドを設定することである。
図7は、デコードステージのオペレーション全般のフローチャートである。図7のページ外コネクタとして、レジスタ割り当てのフローチャートを図8に示す。デコードステージの主要なオペレーションは、「VPX命令のデコード」(ステップ702)として示されている。このオペレーションは、VPX命令のシーケンスを、例えばタイルパス命令等のように専用プロセッサ用と同等の命令シーケンスに変換する。この処理は、ほとんど機械的に行れ、この開示内容と、関連する専用プロセッサの命令セットの見地から、命令セットアーキテクチャの当業者には明白であろう(ただし、VPX命令は標準であると想定されるが、IGUが実行する仮想化のために、タイルパス命令が固定である必要はない点に注意)。以下の議論では、この中心となるデコードタスクを取り巻く特定のタスクについて説明する。
図9は、タイルプロセッサが専用プロセッサである場合におけるI−バッファステージのトップレベルでのオペレーションのフローチャートである。このステージは、機能停止状態に無い場合にのみ、新たな命令を最適化キューから取り込む(ステップ902,904)(そして、デコードステージが機能停止している場合には、新たな命令を受信しな可能性がある)。機能停止しているか否かにかかわらず、I−バッファステージは、上述したようにサイドバンド信号を常に提供し(ステップ906)、ベクトルI−パイプが異常に長い時間休止しているか否か、又は、バリア条件が満たされたか否かを検出する。
Claims (13)
- ホストコンピュータを専用プロセッサに接続するように構成された命令生成ユニットであって、
ホストプログラムのオペレーションコードと、第1仮想ホストプログラムオペランドと、をホストコンピュータから受信し、第1仮想ホストプログラムオペランドに対応する第1オペランド記述子を識別するように構成された属性ステージであって、第1仮想ホストプログラムオペランドは、専用プロセッサの第1オペランドを表し、第1オペランド記述子は、1つ以上のオペランド属性に関して第1オペランドの記述を提供する、属性ステージと、
第1オペランド記述子と、ホストプログラムのオペレーションコードと、を属性ステージから受信し、ホストプログラムのオペレーションコードと第1オペランド記述子とを用いて、専用プロセッサが実行するための1つ以上の変換された命令を形成し、変換された命令を専用プロセッサが実行するときに使用する記憶領域を割り当てるように構成されたデコードステージと、
変換された命令をデコードステージから受信し、1つ以上の変換された命令を1つ以上の命令キューに配置し、専用プロセッサが実行するために、変換された命令を1つ以上の命令キューのうち少なくとも1つから発行するよう構成された命令バッファステージと、
を備える、命令生成ユニット。 - 専用プロセッサは、少なくとも2つの相互接続された処理ユニットのアレイを含み、
各処理ユニットは、
命令バッファと、
少なくとも2つの領域に分割されたデータメモリと、を備える、
請求項1の命令生成ユニット。 - 第1オペランドは、専用プロセッサの1つ以上のデータメモリの複数の領域にわたって記憶された二次元データアレイを含む、
請求項2の命令生成ユニット。 - デコードステージによって割り当ててられた記憶領域は、専用プロセッサの処理ユニッ
ト内に存在する、
請求項2の命令生成ユニット。 - 相互接続された処理ユニットの各々の命令バッファは、1つの処理ユニットから次の処理ユニットへ順次命令を伝えるように構成された命令パイプラインによって接続されており、
1つ以上の命令キューは、ベクトル命令キューとスカラー命令キューとを備え、
命令バッファステージは、変換された命令を1つ以上の命令キューから発行することに関連して、変換された命令をベクトル命令キューから命令パイプラインに配置するように構成されている、
請求項2の命令生成ユニット。 - 専用プロセッサ用の命令を生成する方法であって、
ホストプログラムのオペレーションコードと、第1仮想ホストプログラムオペランドと、をホストプロセッサから受信することであって、第1仮想ホストプログラムオペランドは、専用プロセッサの第1オペランドを表す、ことと、
第1仮想ホストプログラムオペランドに対応する第1オペランド記述子を識別することであって、第1オペランド記述子は、1つ以上のオペランド属性に関して第1オペランドの記述を提供する、ことと、
ホストプログラムのオペレーションコードと第1オペランド記述子とを用いて、専用プロセッサが実行するための1つ以上の変換された命令を形成することと、
変換された命令を実行するときに専用プロセッサによって使用される記憶領域を割り当てることと、
1つ以上の変換された命令を1つ以上の命令キューに配置することと、
変換された命令を、専用プロセッサが実行するために1つ以上の命令キューのうち少なくとも1つから発行することと、
を含む、方法。 - 専用プロセッサは、少なくとも2つの相互接続された処理ユニットのアレイを含み、
各処理ユニットは、
命令バッファと、
少なくとも2つの領域に分割されたデータメモリと、を備える、
請求項6の方法。 - 第1オペランドは、専用プロセッサの1つ以上のデータメモリの複数の領域にわたって記憶された二次元データアレイを含む、
請求項7の方法。 - 記憶領域を割り当てることは、専用プロセッサの処理ユニット内に存在する記憶領域を割り当てることを含む、
請求項7の方法。 - 相互接続された処理ユニットの各々の命令バッファは、1つの処理ユニットから次の処理ユニットへ順次命令を伝えるように構成された命令パイプラインによって接続されており、
1つ以上の命令キューは、ベクトル命令キューとスカラー命令キューとを備え、
変換された命令を1つ以上の命令キューから発行することは、変換された命令をベクトル命令キューから命令パイプラインに配置することを含む、
請求項7の方法。 - コンパイルしたプログラムを実行するように構成されたホストプロセッサと、
専用プロセッサと、
ホストプロセッサ及び専用プロセッサと動作可能に接続された命令生成ユニットと、を備え、
命令生成ユニットは、
ホストプログラムのオペレーションコードと、仮想ホストプログラムオペランドとを、コンパイルしたプログラムから受信することであって、仮想ホストプログラムオペランドは、専用プロセッサのオペランドを表すことと、
専用プロセッサが実行するために、ホストプログラムのオペレーションコードと仮想ホストプログラムオペランドとを用いて、1つ以上の変換された命令を形成することと、
変換された命令を実行するときに専用プロセッサによって使用される記憶領域を割り当てることと、
1つ以上の変換された命令を1つ以上の命令キューに配置することと、
変換された命令を、専用プロセッサが実行するために1つ以上の命令キューのうち少なくと1つから発行することと、を実行するように構成されている、
データ処理システム。 - 専用プロセッサは、少なくとも2つの相互接続された処理ユニットのアレイを備え、
各処理ユニットは、
命令バッファと、
少なくとも2つの領域に分割されたデータメモリと、を備える、
請求項11のデータ処理システム。 - 相互接続された処理ユニットの各々の命令バッファは、1つの処理ユニットから次の処理ユニットへ順次命令を伝えるように構成された命令パイプラインによって接続されており、
1つ以上の命令キューは、ベクトル命令キューとスカラー命令キューとを備え、
命令生成ユニットは、変換された命令を1つ以上の命令キューから発行することに関連して、変換された命令をベクトル命令キューから命令パイプラインに配置するように構成されている、
請求項12のデータ処理システム。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562120603P | 2015-02-25 | 2015-02-25 | |
US15/054,118 US9898292B2 (en) | 2015-02-25 | 2016-02-25 | Hardware instruction generation unit for specialized processors |
US15/054,118 | 2016-02-25 | ||
PCT/IB2016/052248 WO2016135712A1 (en) | 2015-02-25 | 2016-04-20 | Hardware instruction generation unit for specialized processors |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018529132A JP2018529132A (ja) | 2018-10-04 |
JP6894377B2 true JP6894377B2 (ja) | 2021-06-30 |
Family
ID=56693176
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017545214A Active JP6894377B2 (ja) | 2015-02-25 | 2016-04-20 | 専用プロセッサ用ハードウェア命令生成ユニット |
Country Status (8)
Country | Link |
---|---|
US (1) | US9898292B2 (ja) |
EP (1) | EP3262503B1 (ja) |
JP (1) | JP6894377B2 (ja) |
KR (1) | KR20180079224A (ja) |
CN (1) | CN107347253B (ja) |
GB (1) | GB2553442A (ja) |
HK (1) | HK1246444A1 (ja) |
WO (1) | WO2016135712A1 (ja) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11436045B2 (en) | 2015-05-26 | 2022-09-06 | Blaize, Inc. | Reduction of a number of stages of a graph streaming processor |
US11150961B2 (en) | 2015-05-26 | 2021-10-19 | Blaize, Inc. | Accelerated operation of a graph streaming processor |
US10437637B1 (en) | 2015-05-26 | 2019-10-08 | Thin CI, Inc. | Configurable scheduler for graph processing on multi-processor computing systems |
US11416282B2 (en) * | 2015-05-26 | 2022-08-16 | Blaize, Inc. | Configurable scheduler in a graph streaming processing system |
US11379262B2 (en) | 2015-05-26 | 2022-07-05 | Blaize, Inc. | Cascading of graph streaming processors |
US10642617B2 (en) * | 2015-12-08 | 2020-05-05 | Via Alliance Semiconductor Co., Ltd. | Processor with an expandable instruction set architecture for dynamically configuring execution resources |
GB2558220B (en) | 2016-12-22 | 2019-05-15 | Advanced Risc Mach Ltd | Vector generating instruction |
US10817293B2 (en) * | 2017-04-28 | 2020-10-27 | Tenstorrent Inc. | Processing core with metadata actuated conditional graph execution |
US10534881B2 (en) * | 2018-04-10 | 2020-01-14 | Advanced Micro Devices, Inc. | Method of debugging a processor |
CN110545489A (zh) * | 2018-05-28 | 2019-12-06 | 中国电信股份有限公司 | 自适应流媒体的播放方法、系统及客户端 |
US11409530B2 (en) * | 2018-08-16 | 2022-08-09 | Arm Limited | System, method and apparatus for executing instructions |
GB2580165B (en) * | 2018-12-21 | 2021-02-24 | Graphcore Ltd | Data exchange in a computer with predetermined delay |
US20200264921A1 (en) * | 2019-02-20 | 2020-08-20 | Nanjing Iluvatar CoreX Technology Co., Ltd. (DBA "Iluvatar CoreX Inc. Nanjing") | Crypto engine and scheduling method for vector unit |
CN111782577B (zh) * | 2019-04-04 | 2023-03-24 | 安徽寒武纪信息科技有限公司 | 数据处理装置及方法以及相关产品 |
CN111782267B (zh) * | 2019-04-04 | 2022-12-09 | 安徽寒武纪信息科技有限公司 | 数据处理方法及装置以及相关产品 |
JP7073581B2 (ja) | 2019-04-04 | 2022-05-23 | 中科寒武紀科技股▲分▼有限公司 | データ処理装置及び関連製品 |
KR102550451B1 (ko) * | 2019-04-04 | 2023-06-30 | 캠브리콘 테크놀로지스 코퍼레이션 리미티드 | 데이터 처리방법과 장치 및 관련 제품 |
CN111831337B (zh) * | 2019-04-19 | 2022-11-29 | 安徽寒武纪信息科技有限公司 | 数据同步方法及装置以及相关产品 |
CN111782133A (zh) * | 2019-04-04 | 2020-10-16 | 安徽寒武纪信息科技有限公司 | 数据处理方法及装置以及相关产品 |
CN111831329B (zh) * | 2019-04-19 | 2022-12-09 | 安徽寒武纪信息科技有限公司 | 数据处理方法及装置以及相关产品 |
CN111782274B (zh) * | 2019-04-04 | 2023-03-31 | 安徽寒武纪信息科技有限公司 | 数据处理装置及相关产品 |
CN111857828B (zh) * | 2019-04-25 | 2023-03-14 | 安徽寒武纪信息科技有限公司 | 处理器操作方法及装置以及相关产品 |
CN111831722A (zh) * | 2019-04-19 | 2020-10-27 | 安徽寒武纪信息科技有限公司 | 数据同步方法及装置以及相关产品 |
CN111857829A (zh) * | 2019-04-25 | 2020-10-30 | 安徽寒武纪信息科技有限公司 | 处理器操作方法及装置以及相关产品 |
CN111783992A (zh) * | 2019-04-04 | 2020-10-16 | 安徽寒武纪信息科技有限公司 | 数据处理装置及相关产品 |
CN110377339B (zh) * | 2019-08-17 | 2024-03-01 | 中昊芯英(杭州)科技有限公司 | 长延时指令处理装置、方法以及设备、可读存储介质 |
CN110780922B (zh) * | 2019-10-22 | 2022-06-17 | 珠海格力电器股份有限公司 | 指令生成方法、装置、电子设备及存储介质 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6292879B1 (en) * | 1995-10-25 | 2001-09-18 | Anthony S. Fong | Method and apparatus to specify access control list and cache enabling and cache coherency requirement enabling on individual operands of an instruction of a computer |
US5796974A (en) * | 1995-11-07 | 1998-08-18 | Advanced Micro Devices, Inc. | Microcode patching apparatus and method |
US6016395A (en) * | 1996-10-18 | 2000-01-18 | Samsung Electronics Co., Ltd. | Programming a vector processor and parallel programming of an asymmetric dual multiprocessor comprised of a vector processor and a risc processor |
US6212628B1 (en) * | 1998-04-09 | 2001-04-03 | Teranex, Inc. | Mesh connected computer |
US6477683B1 (en) | 1999-02-05 | 2002-11-05 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
JP3879350B2 (ja) * | 2000-01-25 | 2007-02-14 | 富士ゼロックス株式会社 | 構造化文書処理システム及び構造化文書処理方法 |
US7293159B2 (en) * | 2004-01-15 | 2007-11-06 | International Business Machines Corporation | Coupling GP processor with reserved instruction interface via coprocessor port with operation data flow to application specific ISA processor with translation pre-decoder |
US7934079B2 (en) * | 2005-01-13 | 2011-04-26 | Nxp B.V. | Processor and its instruction issue method |
US20070118832A1 (en) | 2005-11-18 | 2007-05-24 | Huelsbergen Lorenz F | Method and apparatus for evolution of custom machine representations |
US20100153934A1 (en) | 2008-12-12 | 2010-06-17 | Peter Lachner | Prefetch for systems with heterogeneous architectures |
US9170816B2 (en) * | 2009-01-15 | 2015-10-27 | Altair Semiconductor Ltd. | Enhancing processing efficiency in large instruction width processors |
US9183614B2 (en) * | 2011-09-03 | 2015-11-10 | Mireplica Technology, Llc | Processor, system, and method for efficient, high-throughput processing of two-dimensional, interrelated data sets |
-
2016
- 2016-02-25 US US15/054,118 patent/US9898292B2/en not_active Expired - Fee Related
- 2016-04-20 EP EP16720179.7A patent/EP3262503B1/en active Active
- 2016-04-20 WO PCT/IB2016/052248 patent/WO2016135712A1/en active Application Filing
- 2016-04-20 KR KR1020177027109A patent/KR20180079224A/ko not_active Application Discontinuation
- 2016-04-20 JP JP2017545214A patent/JP6894377B2/ja active Active
- 2016-04-20 GB GB1715408.9A patent/GB2553442A/en not_active Withdrawn
- 2016-04-20 CN CN201680011565.7A patent/CN107347253B/zh not_active Expired - Fee Related
-
2018
- 2018-05-08 HK HK18105948.2A patent/HK1246444A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
CN107347253B (zh) | 2021-07-06 |
US9898292B2 (en) | 2018-02-20 |
HK1246444A1 (zh) | 2018-09-07 |
GB2553442A (en) | 2018-03-07 |
US20160246599A1 (en) | 2016-08-25 |
GB201715408D0 (en) | 2017-11-08 |
JP2018529132A (ja) | 2018-10-04 |
EP3262503A1 (en) | 2018-01-03 |
WO2016135712A1 (en) | 2016-09-01 |
KR20180079224A (ko) | 2018-07-10 |
CN107347253A (zh) | 2017-11-14 |
EP3262503B1 (en) | 2020-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6894377B2 (ja) | 専用プロセッサ用ハードウェア命令生成ユニット | |
Auerbach et al. | A compiler and runtime for heterogeneous computing | |
Newburn et al. | Offload compiler runtime for the Intel® Xeon Phi coprocessor | |
CN111566616B (zh) | 多处理器系统的编程流程 | |
Keryell et al. | Khronos SYCL for OpenCL: a tutorial | |
EP2438545A2 (en) | Improvements in embedded system development | |
JP2013533533A (ja) | コンピューティング・プラットフォーム内のワークロードの分配及び並列化 | |
Hormati et al. | Macross: Macro-simdization of streaming applications | |
Mikushin et al. | KernelGen--The Design and Implementation of a Next Generation Compiler Platform for Accelerating Numerical Models on GPUs | |
Keryell et al. | Early experiments using SYCL single-source modern C++ on Xilinx FPGA: Extended abstract of technical presentation | |
US8429394B1 (en) | Reconfigurable computing system that shares processing between a host processor and one or more reconfigurable hardware modules | |
Doumoulakis et al. | Sycl c++ and opencl interoperability experimentation with trisycl | |
Ohno et al. | A GPGPU programming framework based on a shared-memory model | |
Amiri et al. | FLOWER: A comprehensive dataflow compiler for high-level synthesis | |
Ohshima et al. | OMPCUDA: OpenMP execution framework for CUDA based on omni OpenMP compiler | |
US20230305845A1 (en) | Techniques to selectively store data | |
Salcic et al. | GALS-HMP: A heterogeneous multiprocessor for embedded applications | |
GB2612160A (en) | Memory allocation using graphs | |
Harvey et al. | Parallel programming in actor-based applications via OpenCL | |
US20030135535A1 (en) | Transferring data between threads in a multiprocessing computer system | |
Stitt et al. | Thread warping: Dynamic and transparent synthesis of thread accelerators | |
Kalra | Design and evaluation of register allocation on gpus | |
Guide | Cuda c best practices guide | |
US20230005097A1 (en) | Memory deallocation using graphs | |
Diamos | Harmony: an execution model for heterogeneous systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190328 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20200129 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20200303 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200603 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20201124 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20210222 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210413 |
|
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: 20210506 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210603 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6894377 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |