JP5628435B2 - 半導体チップ上に実装されるベクトル論理的縮約動作 - Google Patents

半導体チップ上に実装されるベクトル論理的縮約動作 Download PDF

Info

Publication number
JP5628435B2
JP5628435B2 JP2013530381A JP2013530381A JP5628435B2 JP 5628435 B2 JP5628435 B2 JP 5628435B2 JP 2013530381 A JP2013530381 A JP 2013530381A JP 2013530381 A JP2013530381 A JP 2013530381A JP 5628435 B2 JP5628435 B2 JP 5628435B2
Authority
JP
Japan
Prior art keywords
vector
swizzle
logic
circuit
elements
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
Application number
JP2013530381A
Other languages
English (en)
Other versions
JP2013541098A (ja
Inventor
ヴィーデマイヤー,ジェフ
サムドララ,スリドハル
ゴリヴァー,ロジャー
Original Assignee
インテル コーポレイション
インテル コーポレイション
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 インテル コーポレイション, インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2013541098A publication Critical patent/JP2013541098A/ja
Application granted granted Critical
Publication of JP5628435B2 publication Critical patent/JP5628435B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7885Runtime interface, e.g. data exchange, runtime control
    • G06F15/7889Reconfigurable logic implemented as a co-processor
    • 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/30029Logical and Boolean instructions, e.g. XOR, NOT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明の分野は概括的にはコンピュータ・システムに、より詳細にはベクトル論理的縮約(vector logical reduction)を実行するプロセッサ・アーキテクチャに関する。
計算機科学の分野では二つの型のプロセッサ・アーキテクチャが広く認識されている。「スカラー」と「ベクトル」である。スカラー・プロセッサは単一セットのデータに対して演算を実行する命令を実行するよう設計される。一方、ベクトル・プロセッサは複数セットのデータに対して演算を実行する命令を実行するよう設計される。図1のAおよびBはスカラー・プロセッサとベクトル・プロセッサの間の基本的な相違を例証する比較例を示している。
図1のAは、単一オペランド・セットAおよびBがANDされて単数の(すなわち「スカラー」の)結果Cを生ずる(すなわちAB=C)スカラーAND命令の例を示している。これに対し、図1のBは、二つのオペランド・セットA/BおよびC/Dが並列にそれぞれANDされて同時にベクトル結果C、Fを生ずる(すなわちAB=C、DE=F)ベクトルAND命令の例を示している。
当技術分野においてよく知られるように、入力オペランドおよび出力結果はいずれも専用のレジスタに記憶される。たとえば、多くの命令は二つの入力オペランドをもつ。したがって、それぞれの入力オペランドを一時的に記憶するために二つの相異なる入力レジスタが使われる。さらに、これらの同じ命令は出力値を生じ、該出力値は一時的に第三の(結果)レジスタに記憶される。それぞれの入力101a、bおよび102a、bおよび結果レジスタ103a、bが図1のAおよびBにおいて観察される。特に、「スカラー」と「ベクトル」の特徴が容易に見て取れる。
すなわち、図1のAのスカラー設計の入力レジスタ101aおよび102aはスカラー値(それぞれAおよびB)のみを保持しているのが観察される。同様に、図1のAのスカラー設計の結果レジスタ103aもスカラー値(C)のみを保持しているのが観察される。これに対し、図1のBのベクトル・システムの入力レジスタ101bおよび102bはベクトル(レジスタ101bではA,D、レジスタ102bではB,E)を保持しているのが観察される。同様に、図1のBのベクトル・システムの結果レジスタ103bもベクトル値(C,F)を保持しているのが観察される。用語法として、図1のBのベクトル・システムのレジスタ101b、102bおよび103bのそれぞれの内容は全体的に「ベクトル」と称することができ、ベクトル内の個々のスカラー値のそれぞれは「要素」と称することができる。よって、たとえば、レジスタ101bは、「要素」Aおよび「要素」Dからなる「ベクトル」A,Dを記憶していることが観察される。
根底にあるプロセッサがスカラー設計かベクトル設計かによらず、いくつかのコンピュータ・システムは単一ベクトルの諸要素を横断しての論理演算を事実上必要とする。たとえば八入力AND演算の場合(その論理図を図2のAに示す)、八個の別個の入力(A、B、C、D、E、F、G、H)がANDされて最終的なスカラー結果(R)を生じる。スカラー・プロセッサの場合、スカラーAND命令の七回の反復工程にわたって結果を蓄積するループ動作をソフトウェアで書く必要がある(その擬似コードを図2のBに示す)。よって、スカラー・プロセッサの場合、複数の反復工程は、その計算を実行するために、スカラーAND命令の複数の実行を必要とする。
これに対し、ベクトル・プロセッサは、そのような演算を、当該論理演算をそのまま実行するよう設計された単一命令の実行で実装する展望がありうる。
本発明は、限定ではなく例として、付属の図面において例解される。図面において同様の参照符号は同様の要素を示す。
AおよびBはスカラーおよびベクトル論理演算を示す。 AおよびBは八入力AND関数およびスカラーAND命令を用いた対応する擬似コードの論理図である。 論理的縮約演算を実行するための、半導体プロセッサによって実行されるプロセスを示す。 図3のプロセスの第一の実施形態を示す。 図4のプロセスの第二の実施形態を示す。 図5のプロセスの第三の実施形態を示す。 スウィズル操作が同じである実施形態を示す。 図3のプロセスを実行できる電子回路の設計を示す。 半導体プロセッサの図である。 コンピューティング・システムの図である。
図3は、ベクトル命令を実行する機能のあるプロセッサ上で、「論理的縮約(logical reduction)」とも称される、ベクトルの諸要素を横断して論理演算を実行する方法論を示している。図4は、図3の方法論に従う八入力AND関数の例を示している。読者が図3の方法論を理解するのを助けるため、図3および図4の両方を参照する。図4の例では、ベクトル入力400が要素(A、B、C、D、E、F、G、H)をもち、これらが八入力ANDによってANDで結合されて出力結果R=ABCDEFGを生ずる。
図3の方法論によれば、ベクトル入力400に対して第一のスウィズル(swizzle)〔かき混ぜ〕演算が実行されて(301、401)第一のスウィズル・ベクトル402を生ずる。図4の例では、第一のスウィズル操作401は、挿入図420に示されるパターンに観察されるように、隣り合う要素対の位置が交換される二元スウィズル操作である。次いで当該縮約の論理演算のベクトル論理演算がベクトル入力400および第一のスウィズル・ベクトル402を入力ベクトルとして使って実行される(303、403)。図4の例では、論理的縮約は八入力AND関数に対応するので、論理演算303、403はベクトルAND演算に対応する。しかしながら、交換動作をもつ他の論理的縮約および対応する論理演算(OR、加算(ADD)および「乗算」(MUL)など)も図3のアプローチに整合させることができる。
論理演算303、403の結果は第一の中間結果404を生ずる。第一のスウィズル操作とは異なる第二のスウィズル操作305、405が第一の中間結果404に対して実行されて第二のスウィズル・ベクトル406を生ずる。図4の例では、第二のスウィズル操作405は、挿入図430に示されるパターンに観察されるように、近隣の要素の位置が交換される単独スウィズル操作である。次いで当該縮約の論理演算のもう一つのベクトル論理演算が第一の中間結果404および第二のスウィズル・ベクトル406を入力ベクトルとして使って実行される。
ここでもまた、図4の例が論理的AND縮約に対応するため、図4の論理演算407はベクトルAND演算に対応する。第二のベクトル論理演算307、407の結果が第二の中間結果408を生ずる。次いで、当該縮約の論理演算の論理演算が、第二の中間結果408の選択された要素に対して実行されて、求めるべき縮約結果410を生ずる。図4の例では、第二の中間結果の選択された要素は第二の中間結果408の一番目および八番目の位置における要素に対応する。しかしながら、第二の中間結果408を見てみれば、第一ないし第四の要素のうちの任意の一つおよび第五ないし第八の要素のうちの任意の一つを選択すれば正しい縮約結果が得られることがわかる。
最後の論理演算309、409を実行するための特化された論理および/またはマイクロコード演算の設計を防ぐために、いくつかのフォーマット・ステップが第二の中間結果408に対して実行されてもよい。それによりステップ303、403および307、407において使用された同じベクトル論理演算が、演算309、409(すなわち、図4の例の場合、ベクトルAND演算)を実装するために使われる。たとえば、選択された要素の一方が、他方の選択された要素と同じベクトル位置に置かれ、残りのベクトル要素値に0をパディングすることに従ったベクトルが構築されてもよい(たとえば、図4の例では、ベクトル408をフォーマットして、構築されたベクトル[0,0,0,0,0,0,0,ACBD]を構築)。構築されたベクトルおよび第二の中間結果408に対してベクトルAND演算を実行すると、出力ベクトルの同じベクトル位置に、所望される論理的縮約結果410を生ずる。ここで、選択されたオペランドは構築されたベクトル中に見出される(すなわち、上述の構築されたベクトルの例を使うと、R=0,0,0,0,0,0,0,ACBDHFGE)。
異なるスウィズル操作のシーケンスおよびスウィズル操作自身は実施形態によって変わりうることを注意しておくことは重要である。たとえば、図5は図4の例で、単独スウィズル・パターン530が二元スウィズル・パターン520より前に実行されるようにしたものに対応する。図4と図5の例を比較すると、利用可能な項は第二の中間ベクトル508において生成されて正しい結果が得られる。
また、上記で論じた単独および二元スウィズル・パターン420/520、430/530以外の異なるスウィズル・パターンを使ってもよいことを注意しておくことも重要である。たとえば、図6は、挿入図640において観察されるようなパターンで近隣の要素四つ組の位置が交換される四元スウィズル・パターンを使う十六要素ベクトルに対する論理的AND縮約の例を示している。
また、スウィズル・パターン自身が異なる必要はない。たとえば、図6bは、同じスウィズル・パターンが演算を通じて最初から最後まで利用される論理的AND縮約を示している。
いずれの実施形態についても、当業者は、適切なスウィズル・パターン、第二の中間ベクトルの対応する選択基準および最終ベクトル論理演算前の任意の関連するフォーマット整形を決定することができるであろう。さらに、上記の例はAND縮約を強調したが、同じ原理は論理的OR、加算および乗算といった交換性の動作をもつ任意の演算を実施するためにも適用できる。
上記で論じたように、論理的縮約アルゴリズムは、半導体プロセッサの命令セット内の命令として実装されてもよい。図7は、プロセッサの諸実行ユニット内で論理回路として実装されうる可能なデータ経路を示している。図7の回路図によれば、論理的縮約を通じて論理的に縮約されるべき要素をもつ入力ベクトルがレジスタ701に記憶されている。レジスタ701の出力は第一のスウィズル回路702の入力および第一のベクトル論理演算(たとえばベクトルAND、ベクトルORまたはベクトルXOR)を実行する第一のベクトル論理回路704の入力に流れ込む。第一のスウィズル回路702の出力は第一のスウィズル・レジスタ703に流れ込む。第一のスウィズル・レジスタ703の出力は第一のベクトル論理回路704に流れ込む。よって、第一のベクトル論理回路704はレジスタ701から第一の入力ベクトルを、レジスタ703から第二の入力ベクトルを受け入れる。
第一の中間値レジスタ705は第一のベクトル論理回路704によって生成される出力ベクトルを保持する。次いで、レジスタ705の内容は第二のスウィズル論理回路706および第二のベクトル論理演算を実行する第二のベクトル論理回路708に与えられる。第二のスウィズル論理回路706の出力は第二のスウィズル・レジスタ707に与えられ、第二のスウィズル・レジスタ707はその出力を第二のベクトル論理回路708に与える。第二のベクトル論理回路708はその出力を第二の中間レジスタ709に与える。選択およびフォーマット論理710は、第二の中間レジスタ709内のベクトルの、第三のベクトル論理回路711によって実行される最終的なベクトル論理演算のためのオペランドとして必要とされる要素を選択する(そしてその任意のものをフォーマット整形してもよい)。第三のベクトル論理回路711の結果は、最終結果(論理的縮約)に対応し、結果レジスタ712に記憶される。図3のアルゴリズムを実装するために、さらなる段のスウィズル回路、中間ベクトル・レジスタおよびベクトル論理回路(図示せず)が追加的に図7の回路に組み込まれてもよいことを注意しておく。
図7のコンポーネントのいくつかを使うがそれでも論理的縮約を実行するさまざまな代替的な論理設計も可能である。たとえば、論理的縮約のための回路が「直線」データ経路中の(たとえば、複数のマイクロ演算なし)論理的縮約命令の実行に専用である場合、レジスタ703、705、707、709の任意のものをなくしてもよい。これに対し、論理的縮約命令がいくつかの対応するマイクロ演算をもつマイクロコードを介して実行される場合には、図7の要素のいくつかがなくされ、一方、他が再利用されてもよい。
たとえば、レジスタ705およびレジスタ707のそれぞれの出力が入力として論理704にフィードバックされれば、第一および第二のベクトル論理演算はベクトル論理704を用いて実行できる(それによりベクトル論理708をなくせる)。(ここで、マイクロ演算制御マルチプレクサまたは他のデータ経路制御回路がアルゴリズムに従ってデータを適正に動かすことが理解される。)選択およびフォーマット論理710がレジスタ705からの入力を受け入れて、その出力を(第三かつ最終的な論理演算をも実行する)ベクトル論理704に与えるならば、ベクトル論理711をさらになくすことができる。
第一および第二のスウィズル回路702、706は、それぞれのチャネル選択入力値の状態に基づいて正しいスウィズル・パターンの間で切り換えを行う、マルチプレクサおよび/またはデマルチプレクサの共通のバンクにマージされることもできる。すなわち、マルチプレクサおよび/またはデマルチプレクサのチャネル選択入力が第一のスウィズル・パターンに対応する第一の入力値を受け取り、第二のスウィズル・パターンに対応する第二の入力値を受け取る。マルチプレクサおよび/またはデマルチプレクサは、所望されるスウィズル伝達(transfer)を実施するよう、チャネル選択値に応答してデータ経路を形成する。
拡張された実装では、レジスタ701に記憶されている入力ベクトルの要素の全部より少ないものが、論理的に縮約されることができる。その際、その論理的縮約のために考慮されない要素については、(レジスタ701に先行または後続する)フォーマット回路が入力ベクトル中に穏和な(benign)値を強制する。たとえば、論理的縮約が入力ベクトルA,B,C,D,E,F,G,Hの要素A、B、C、Dのみの論理的縮約である場合、フォーマット論理は、要素E、F、G、Hのそれぞれについてすべて1の値を挿入し、ベクトルA,B,C,D,[全部1],[全部1],[全部1],[全部1]が縮約のための入力ベクトルとして処理される。ORおよびXOR論理的縮約については、穏和な値は全部1ではなく全部0に対応する。
上記で図7を参照して論じたように、アルゴリズムは、半導体プロセッサの実行ユニットによって実行されるベクトル論理的縮約命令内で実装されてもよい。
図8は、複雑命令セット(CISC: Complex Instruction Set)、簡略化命令セット(RISC: Reduced Instruction Set)および超長命令語(VLIW: Very Long Instruction Word)のような多くの異なる型の処理コア・アーキテクチャを記述すると信じられる一般的な処理・コア800を示している。図8の一般的な処理コア800は次のものを含む:1)(たとえばキャッシュおよび/またはメモリから)命令をフェッチするフェッチ・ユニット803;2)命令をデコードするデコード・ユニット804;3)実行ユニット806への命令発行のタイミングおよび/または順序を決定するスケジュール・ユニット805(注意すべきことに、スケジューラは任意的である);4)命令を実行する実行ユニット806(典型的な命令実行ユニットはブランチ実行ユニット、整数算術実行ユニット(たとえばALU)浮動小数点算術実行ユニット(たとえばFPU)およびメモリ・アクセス実行ユニットを含む);および5)命令の成功裏の完了を示すリタイア・ユニット807。注意すべきことに、処理コア800はマイクロコード808を用いても用いなくてもよい。
マイクロコードのあるプロセッサの場合、マイクロ演算は典型的には、プロセッサがその上に構築される半導体チップ内の(読み出し専用メモリ(ROM: Read Only Memory)のような)不揮発性機械可読媒体に記憶され、プロセッサ内の実行ユニットに当該命令によって呼び出される所望される機能を実行させる。
論理的縮約命令を有するプロセッサは、さまざまなコンピューティング・システム中に実装することもできる。図9は、コンピューティング・システム(たとえばコンピュータ)のある実施形態を示している。図9の例示的なコンピューティング・システムは次のものを含む:1)ベクトル論理的縮約命令を含むよう設計されていてもよい一つまたは複数のプロセッサ901;2)メモリ・コントロール・ハブ(MCH: memory control hub)902;3)システム・メモリ903(これについてはDDR RAM、EDO RAMなどといった種々の型が存在する);4)キャッシュ904;5)I/Oコントロール・ハブ(ICH: I/O control hub)905;6)グラフィック・プロセッサ906;7)ディスプレイ/画面907(これについては陰極線管(CRT: Cathode Ray Tube)、薄膜トランジスタ(TFT: Thin Film Transistor)、液晶ディスプレイ(LCD: Liquid Crystal Display)、DPL等のような種々の型が存在する);8)一つまたは複数のI/O装置908。
前記一つまたは複数のプロセッサ901は、どんなものであれコンピューティング・システムが実装するソフトウェア・ルーチンを実行するために命令を実行する。命令はしばしば、データに対して実行される何らかの種類の操作に関わる。データおよび命令はいずれもシステム・メモリ903およびキャッシュ904に記憶される。キャッシュ904は典型的にはシステム・メモリ903より短いレイテンシー時間をもつよう設計される。たとえば、キャッシュ904は、プロセッサ(単数または複数)と同じシリコン・チップ(単数または複数)上に統合され、より高速のSRAMセルを用いて構築されてもよい。一方、システム・メモリ903はより低速のDRAMセルを用いて構築されてもよい。より頻繁に使用される命令およびデータをシステム・メモリ903ではなくキャッシュ904に記憶する傾向をもつことによって、コンピューティング・システムの全体的なパフォーマンス効率が改善される。
システム・メモリ903は意図的に、コンピューティング・システム内の他のコンポーネントに利用可能にされる。たとえば、コンピューティング・システムへのさまざまなインターフェース(たとえば、キーボードおよびマウス、プリンタ・ポート、LANポート、モデム・ポートなど)から受領されるまたはコンピューティング・システムの内部記憶要素(たとえばハードディスク・ドライブ)から取得されるデータは、しばしば、ソフトウェア・プログラムの実装において前記一つまたは複数のプロセッサ901によって操作される前に、システム・メモリ903中で一時的に待ち行列に入れられる。同様に、コンピューティング・システムからコンピューティング・システム・インターフェースの一つを通じて外部エンティティに送られるべきであるまたは内部記憶要素に記憶されるべきであるとソフトウェア・プログラムが判別するデータは、しばしば、伝送または記憶される前に、システム・メモリ903中で一時的に待ち行列に入れられる。
ICH 905は、そのようなデータがシステム・メモリ903とその適切な対応するコンピューティング・システム・インターフェース(およびコンピューティング・システムの設計によっては内部記憶装置)との間で適正に渡されることを保証することを受け持つ。MCH 902は、互いに時間的に近接して発生しうる、前記プロセッサ901、インターフェースおよび内部記憶要素の間でのシステム・メモリ903アクセスのさまざまな競合する要求を管理することを受け持つ。
一つまたは複数のI/O装置908も典型的なコンピューティング・システムにおいて実装される。I/O装置は一般に、コンピューティング・システムへおよび/またはコンピューティング・システムからデータを転送すること(たとえば、ネットワーク接続アダプター);あるいはコンピューティング・システム内の大規模な不揮発性記憶(たとえばハードディスク・ドライブ)を受け持つ。ICH 905は、自分自身と観察されるI/O装置905との間で双方向のポイントツーポイントのリンクをもつ。
以上の明細書では、本発明は、その個別的な例示的実施形態を参照して記述されてきた。しかしながら、付属の請求項において記載される本発明の広義の精神および範囲から外れることなく、さまざまな修正および変更がなされうることは明白であろう。よって、本明細書および図面は制約する意味ではなく例示的な意味で参酌されるものである。
いくつかの態様を記載しておく。
〔態様1〕
半導体プロセッサにおいて論理的縮約命令を実行する方法であって、前記実行は:
複数の要素をもつベクトルをレジスタに記憶する段階と;
前記ベクトルの要素をスウィズル回路によりスウィズルして第一のスウィズル・ベクトルを形成する段階と;
前記ベクトルおよび前記第一のスウィズル・ベクトルに対してベクトル論理回路によりベクトル論理演算を実行して第一の中間ベクトルを形成する段階と;
前記第一の中間ベクトルの要素をスウィズル回路によりスウィズルして第二のスウィズル・ベクトルを形成する段階と;
ベクトル論理回路により前記ベクトル論理演算を実行して第二の中間ベクトルを形成する段階と;
前記第二の中間ベクトルの要素の全部より少ない要素に対して前記論理演算を実行する段階とを含む、
方法。
〔態様2〕
前記ベクトル論理演算および前記論理演算がベクトルAND演算およびAND演算である、態様1記載の方法。
〔態様3〕
前記ベクトル論理演算および前記論理演算がベクトルOR演算およびOR演算である、態様1記載の方法。
〔態様4〕
前記ベクトル論理演算および前記論理演算がベクトルXOR演算およびXOR演算である、態様1記載の方法。
〔態様5〕
前記第二の中間ベクトルの要素の全部より少ない要素に対して実行される前記論理演算がベクトル論理演算である、態様1記載の方法。
〔態様6〕
前記第一のスウィズル・ベクトルを形成する前記スウィズル回路および前記第二のスウィズル・ベクトルを形成する前記スウィズル回路が同じスウィズル回路である、態様1記載の方法。
〔態様7〕
論理的縮約命令を実行する論理回路を有する半導体プロセッサであって、前記論理回路は:
ベクトルの要素をスウィズルしてスウィズル・ベクトルを形成するスウィズル回路と;
前記ベクトルおよび前記スウィズル・ベクトルに対してベクトル論理演算を実行するベクトル論理回路とを有する、
半導体プロセッサ。
〔態様8〕
態様7記載の半導体プロセッサであって、前記論理回路がさらに、前記ベクトル論理演算によって生成された結果的な中間ベクトルを記憶するレジスタに結合された第二のスウィズル回路を有しており、前記第二のスウィズル論理回路は前記中間ベクトルをスウィズルする、半導体プロセッサ。
〔態様9〕
前記スウィズル回路がマルチプレクサを含む、態様7記載の半導体プロセッサ。
〔態様10〕
前記スウィズル回路がデマルチプレクサを含む、態様7記載の半導体プロセッサ。
〔態様11〕
前記ベクトル論理回路の出力から前記ベクトル論理回路の入力までデータ経路が存在する、態様7記載の半導体プロセッサ。
〔態様12〕
前記論理的縮約命令を実装するために使われるマイクロ演算を記憶するROMをさらに有する、態様11記載の半導体プロセッサ。
〔態様13〕
前記ベクトル論理回路の出力に結合され、前記ベクトル論理回路からの中間値ベクトルをスウィズルして第二のスウィズル・ベクトルを生成する第二のスウィズル回路と;
前記ベクトル論理回路および前記第二のスウィズル回路の出力に結合され、前記中間値ベクトルおよび前記第二のスウィズル・ベクトルに対してベクトル論理演算を実行する第二のベクトル論理回路とをさらに有する、
態様11記載の半導体プロセッサ。
〔態様14〕
前記ベクトル論理演算が:
ベクトルAND;
ベクトルOR;
ベクトルXOR
のうちの一つである、態様11記載の半導体プロセッサ。
〔態様15〕
論理的縮約命令を実行する論理回路を有する半導体プロセッサ、グラフィック・プロセッサおよび前記グラフィック・プロセッサに結合された液晶ディスプレイを有するコンピューティング・システムであって、前記論理回路は:
入力ベクトルの要素をスウィズルしてスウィズル・ベクトルを形成するスウィズル回路と;
前記入力ベクトルおよび前記スウィズル・ベクトルに対してベクトル論理演算を実行するベクトル論理回路とを有する、
コンピューティング・システム。
〔態様16〕
態様15記載のコンピューティング・システムであって、前記論理回路がさらに、前記ベクトル論理演算によって生成された結果的な中間ベクトルを記憶するレジスタに結合された第二のスウィズル回路を有しており、前記第二のスウィズル論理回路は前記中間ベクトルをスウィズルする、コンピューティング・システム。
〔態様17〕
前記ベクトル論理回路の出力から前記ベクトル論理回路の入力までデータ経路が存在する、態様15記載のコンピューティング・システム。
〔態様18〕
前記論理的縮約命令を実装するために使われるマイクロ演算を記憶するROMをさらに有する、態様17記載のコンピューティング・システム。
〔態様19〕
前記ベクトル論理回路の出力に結合され、前記ベクトル論理回路からの中間値ベクトルをスウィズルして第二のスウィズル・ベクトルを生成する第二のスウィズル回路と;
前記ベクトル論理回路および前記第二のスウィズル回路の出力に結合され、前記中間値ベクトルおよび前記第二のスウィズル・ベクトルに対してベクトル論理演算を実行する第二のベクトル論理回路とをさらに有する、
態様15記載のコンピューティング・システム。
〔態様20〕
前記ベクトル論理演算が:
ベクトルAND;
ベクトルOR;
ベクトルXOR
のうちの一つである、態様15記載のコンピューティング・システム。

Claims (16)

  1. 半導体プロセッサにおいて論理的縮約命令を実行する方法であって、前記実行は:
    複数の要素をもつベクトルをレジスタに記憶する段階と;
    前記ベクトルの要素をスウィズル回路によりスウィズルして第一のスウィズル・ベクトルを形成する段階と;
    前記ベクトルおよび前記第一のスウィズル・ベクトルに対してベクトル論理回路によりベクトル論理演算を実行して第一の中間ベクトルを形成する段階と;
    前記第一の中間ベクトルの要素をスウィズル回路によりスウィズルして第二のスウィズル・ベクトルを形成する段階と;
    ベクトル論理回路により前記ベクトル論理演算を実行して第二の中間ベクトルを形成する段階と;
    前記第二の中間ベクトルの要素の全部より少ない要素に対して論理演算を実行する段階とを含む、
    方法。
  2. 前記ベクトル論理演算および前記論理演算がベクトルAND演算およびAND演算である、請求項1記載の方法。
  3. 前記ベクトル論理演算および前記論理演算がベクトルOR演算およびOR演算である、請求項1記載の方法。
  4. 前記ベクトル論理演算および前記論理演算がベクトルXOR演算およびXOR演算である、請求項1記載の方法。
  5. 前記第二の中間ベクトルの要素の全部より少ない要素に対して実行される前記論理演算がベクトル論理演算である、請求項1記載の方法。
  6. 前記第一のスウィズル・ベクトルを形成する前記スウィズル回路および前記第二のスウィズル・ベクトルを形成する前記スウィズル回路が同じスウィズル回路である、請求項1記載の方法。
  7. 論理的縮約命令を実行する論理回路を有する半導体プロセッサであって、前記論理回路は:
    ベクトルの要素をスウィズルして第一のスウィズル・ベクトルを形成するスウィズル回路と;
    前記ベクトルおよび前記第一のスウィズル・ベクトルに対してベクトル論理演算を実行して第一の中間ベクトルを形成するベクトル論理回路とを有しており
    前記スウィズル回路は、前記第一の中間ベクトルの要素をスウィズルして第二のスウィズル・ベクトルを形成し、前記ベクトル論理回路は前記ベクトル論理演算を実行して第二の中間ベクトルを形成し、前記論理回路は前記第二の中間ベクトルの要素の全部より少ない要素に対して論理演算を実行する、
    半導体プロセッサ。
  8. 前記スウィズル回路がマルチプレクサを含む、請求項7記載の半導体プロセッサ。
  9. 前記スウィズル回路がデマルチプレクサを含む、請求項7記載の半導体プロセッサ。
  10. 前記ベクトル論理回路の出力から前記ベクトル論理回路の入力までデータ経路が存在する、請求項7記載の半導体プロセッサ。
  11. 前記論理的縮約命令を実装するために使われるマイクロ演算を記憶するROMをさらに有する、請求項10記載の半導体プロセッサ。
  12. 前記ベクトル論理演算が:
    ベクトルAND;
    ベクトルOR;および
    ベクトルXOR
    のうちの一つである、請求項10記載の半導体プロセッサ。
  13. 論理的縮約命令を実行する論理回路を有する半導体プロセッサ、グラフィック・プロセッサおよび前記グラフィック・プロセッサに結合されたディスプレイを有するコンピューティング・システムであって、前記論理回路は:
    クトルの要素をスウィズルして第一のスウィズル・ベクトルを形成するスウィズル回路と;
    記ベクトルおよび前記第一のスウィズル・ベクトルに対してベクトル論理演算を実行して第一の中間ベクトルを形成するベクトル論理回路とを有しており
    前記スウィズル回路は、前記第一の中間ベクトルの要素をスウィズルして第二のスウィズル・ベクトルを形成し、前記ベクトル論理回路は前記ベクトル論理演算を実行して第二の中間ベクトルを形成し、前記論理回路は前記第二の中間ベクトルの要素の全部より少ない要素に対して論理演算を実行する、
    コンピューティング・システム。
  14. 前記ベクトル論理回路の出力から前記ベクトル論理回路の入力までデータ経路が存在する、請求項13記載のコンピューティング・システム。
  15. 前記論理的縮約命令を実装するために使われるマイクロ演算を記憶するROMをさらに有する、請求項14記載のコンピューティング・システム。
  16. 前記ベクトル論理演算が:
    ベクトルAND;
    ベクトルOR;および
    ベクトルXOR
    のうちの一つである、請求項13記載のコンピューティング・システム。
JP2013530381A 2010-09-24 2011-09-24 半導体チップ上に実装されるベクトル論理的縮約動作 Active JP5628435B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/890,485 2010-09-24
US12/890,485 US9141386B2 (en) 2010-09-24 2010-09-24 Vector logical reduction operation implemented using swizzling on a semiconductor chip
PCT/US2011/053153 WO2012040665A2 (en) 2010-09-24 2011-09-24 Vector logical reduction operation implemented on a semiconductor chip

Publications (2)

Publication Number Publication Date
JP2013541098A JP2013541098A (ja) 2013-11-07
JP5628435B2 true JP5628435B2 (ja) 2014-11-19

Family

ID=45871862

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013530381A Active JP5628435B2 (ja) 2010-09-24 2011-09-24 半導体チップ上に実装されるベクトル論理的縮約動作

Country Status (8)

Country Link
US (1) US9141386B2 (ja)
JP (1) JP5628435B2 (ja)
KR (1) KR101496597B1 (ja)
CN (2) CN103109262B (ja)
DE (1) DE112011103211T5 (ja)
GB (1) GB2498466A (ja)
TW (1) TWI531886B (ja)
WO (1) WO2012040665A2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120078931A1 (en) 2010-09-29 2012-03-29 International Business Machines Corporation Methods for managing ownership of redundant data and systems thereof
WO2012134532A1 (en) 2011-04-01 2012-10-04 Intel Corporation Vector friendly instruction format and execution thereof
KR101918464B1 (ko) * 2011-09-14 2018-11-15 삼성전자 주식회사 스위즐드 버추얼 레지스터 기반의 프로세서 및 스위즐 패턴 제공 장치
CN104011670B (zh) 2011-12-22 2016-12-28 英特尔公司 用于基于向量写掩码的内容而在通用寄存器中存储两个标量常数之一的指令
US20130311530A1 (en) * 2012-03-30 2013-11-21 Victor W. Lee Apparatus and method for selecting elements of a vector computation
US10013253B2 (en) * 2014-12-23 2018-07-03 Intel Corporation Method and apparatus for performing a vector bit reversal
US10049322B2 (en) 2015-05-21 2018-08-14 Google Llc Prefetching weights for use in a neural network processor
KR102659495B1 (ko) 2016-12-02 2024-04-22 삼성전자주식회사 벡터 프로세서 및 그 제어 방법
US10108581B1 (en) 2017-04-03 2018-10-23 Google Llc Vector reduction processor
GB2574817B (en) * 2018-06-18 2021-01-06 Advanced Risc Mach Ltd Data processing systems
US20240004647A1 (en) * 2022-07-01 2024-01-04 Andes Technology Corporation Vector processor with vector and element reduction method

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4791551A (en) * 1985-02-11 1988-12-13 Analog Devices, Inc. Microprogrammable devices using transparent latch
US4839845A (en) * 1986-03-31 1989-06-13 Unisys Corporation Method and apparatus for performing a vector reduction
JPH0644271B2 (ja) * 1986-08-30 1994-06-08 日本電気株式会社 演算装置
US4949250A (en) * 1988-03-18 1990-08-14 Digital Equipment Corporation Method and apparatus for executing instructions for a vector processing system
US5717947A (en) * 1993-03-31 1998-02-10 Motorola, Inc. Data processing system and method thereof
JPH0728786A (ja) * 1993-07-15 1995-01-31 Hitachi Ltd ベクトルプロセッサ
DE4430195B4 (de) * 1993-12-13 2004-09-23 Hewlett-Packard Co. (N.D.Ges.D.Staates Delaware), Palo Alto Verfahren zur Auswertung von Booleschen Ausdrücken
JP2001128067A (ja) 1999-10-26 2001-05-11 Natl Inst Of Advanced Industrial Science & Technology Meti 電子デバイス、並列処理方法、および記録媒体
US6745319B1 (en) * 2000-02-18 2004-06-01 Texas Instruments Incorporated Microprocessor with instructions for shuffling and dealing data
US7136953B1 (en) * 2003-05-07 2006-11-14 Nvidia Corporation Apparatus, system, and method for bus link width optimization
GB2409064B (en) 2003-12-09 2006-09-13 Advanced Risc Mach Ltd A data processing apparatus and method for performing in parallel a data processing operation on data elements
US7676647B2 (en) * 2006-08-18 2010-03-09 Qualcomm Incorporated System and method of processing data using scalar/vector instructions
US20080139301A1 (en) * 2006-12-11 2008-06-12 Ole-Ivar Holthe System and method for sharing gaming experiences
US7953684B2 (en) 2007-01-31 2011-05-31 International Business Machines Corporation Method and system for optimal parallel computing performance
WO2009058845A1 (en) * 2007-10-30 2009-05-07 Advanced Micro Devices Real-time mesh simplification using the graphics-processing unit
US8078836B2 (en) 2007-12-30 2011-12-13 Intel Corporation Vector shuffle instructions operating on multiple lanes each having a plurality of data elements using a common set of per-lane control bits
US7904700B2 (en) * 2008-03-10 2011-03-08 International Business Machines Corporation Processing unit incorporating special purpose register for use with instruction-based persistent vector multiplexer control
WO2009144681A1 (en) 2008-05-30 2009-12-03 Nxp B.V. Vector shuffle with write enable
US7814303B2 (en) 2008-10-23 2010-10-12 International Business Machines Corporation Execution of a sequence of vector instructions preceded by a swizzle sequence instruction specifying data element shuffle orders respectively

Also Published As

Publication number Publication date
KR101496597B1 (ko) 2015-02-26
US20120079233A1 (en) 2012-03-29
GB201304303D0 (en) 2013-04-24
US9141386B2 (en) 2015-09-22
TWI531886B (zh) 2016-05-01
JP2013541098A (ja) 2013-11-07
WO2012040665A3 (en) 2012-07-26
CN105740201A (zh) 2016-07-06
CN103109262A (zh) 2013-05-15
CN105740201B (zh) 2018-12-11
GB2498466A (en) 2013-07-17
WO2012040665A2 (en) 2012-03-29
CN103109262B (zh) 2016-10-26
DE112011103211T5 (de) 2013-07-04
KR20130064794A (ko) 2013-06-18
TW201229715A (en) 2012-07-16

Similar Documents

Publication Publication Date Title
JP5628435B2 (ja) 半導体チップ上に実装されるベクトル論理的縮約動作
US10469397B2 (en) Processors and methods with configurable network-based dataflow operator circuits
US10445098B2 (en) Processors and methods for privileged configuration in a spatial array
US10445234B2 (en) Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10445451B2 (en) Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
CN109313556B (zh) 可中断和可重启矩阵乘法指令、处理器、方法和系统
JP4277042B2 (ja) 演算処理装置
CN109062608B (zh) 用于独立数据上递归计算的向量化的读和写掩码更新指令
JP6466388B2 (ja) 方法及び装置
US9355061B2 (en) Data processing apparatus and method for performing scan operations
JP6092400B2 (ja) 複数のビットを左にシフトし、複数の1を複数の下位ビットにプルインするための命令
US9081564B2 (en) Converting scalar operation to specific type of vector operation using modifier instruction
JP5491071B2 (ja) 命令融合演算装置および命令融合演算方法
KR102256188B1 (ko) 데이터 처리장치 및 벡터 오퍼랜드를 처리하는 방법
US9965275B2 (en) Element size increasing instruction
US20120185670A1 (en) Scalar integer instructions capable of execution with three registers
US11709682B2 (en) Replicating logic blocks to enable increased throughput with sequential enabling of input register blocks
US7437544B2 (en) Data processing apparatus and method for executing a sequence of instructions including a multiple iteration instruction
JP4444305B2 (ja) 半導体装置
US11416261B2 (en) Group load register of a graph streaming processor
JP7487535B2 (ja) 演算処理装置
JP4502983B2 (ja) ベクトル制御回路、ベクトル処理装置、ベクトル制御方法、および、ベクトル制御プログラム。
JP5598114B2 (ja) 演算ユニット
Bartosiński et al. The Architecture and the Technology Characterization of an FPGA-Based Customizable Application-Specific Vector Coprocessor (ASVP)

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140311

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140401

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140627

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140704

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140723

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141001

R150 Certificate of patent or registration of utility model

Ref document number: 5628435

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250