JP6308095B2 - 演算回路及び演算回路の制御方法 - Google Patents

演算回路及び演算回路の制御方法 Download PDF

Info

Publication number
JP6308095B2
JP6308095B2 JP2014207364A JP2014207364A JP6308095B2 JP 6308095 B2 JP6308095 B2 JP 6308095B2 JP 2014207364 A JP2014207364 A JP 2014207364A JP 2014207364 A JP2014207364 A JP 2014207364A JP 6308095 B2 JP6308095 B2 JP 6308095B2
Authority
JP
Japan
Prior art keywords
data
selector
operand
signal
mask
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
JP2014207364A
Other languages
English (en)
Other versions
JP2016076165A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014207364A priority Critical patent/JP6308095B2/ja
Priority to US14/833,602 priority patent/US10592247B2/en
Priority to EP15182753.2A priority patent/EP3007060A3/en
Priority to CN201510594336.XA priority patent/CN105512092A/zh
Publication of JP2016076165A publication Critical patent/JP2016076165A/ja
Application granted granted Critical
Publication of JP6308095B2 publication Critical patent/JP6308095B2/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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • 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
    • 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
    • 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/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
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/1733Controllable logic circuits
    • H03K19/1737Controllable logic circuits using multiplexers
    • 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

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 Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は,演算回路及び演算回路の制御方法に関する。
高速な演算処理を可能にするプロセッサの開発が活発に行われている。高性能計算を行う情報処理装置に搭載されるプロセッサは,演算処理を高速化するための様々な技術を採用している。複数の処理を並列に行うことで演算処理を高速化する技術として,複数のデータに対して1命令で同時に同じ演算処理を並列に実行するSIMD(Single Instruction Multiple Data)処理方式がある。
SIMDプロセッサは,複数のSIMD演算要素(SIMD演算エレメント)を有し,複数のデータに対して1つの命令を並列に実行する。特に,近年のプロセッサは,より高速化のためにSIMD演算エレメントの数を増やす傾向にある。以下,エレメントと要素は同じ意味である。
SIMDプロセッサは,1つの命令をデコードし,命令の処理対象のデータを複数のSIMD演算エレメントに入力して並列に演算処理するという単純な処理の場合は,単一命令のデコードと複数データの並列演算処理を行うことで,高速演算処理を達成することができる。
特開2002−229962号公報
しかしながら,各SIMD演算エレメントで生成した演算結果を他のSIMD演算エレメントで再度演算処理するなど,上記の単純な処理ではない場合は,SIMD演算エレメント間でデータの交換や分配を行う必要があり,演算効率の低下を招く場合がある。したがって,複数のSIMD演算エレメント間でのデータ交換などを行うエレメント間(要素間)演算回路が求められる。
しかしながら,SIMDプロセッサのSIMD幅を増やすことに伴い,演算処理装置の集積回路基板上に4個または8個,16個など多数のSIMD演算エレメントが搭載される。そのため,上記の要素間演算回路は,集積回路基板上の広い範囲にわたりデータ配線を設けることが必要になり,その回路規模が増大する。
そこで,実施の形態の第1の側面の目的は,回路規模を抑制して種々の要素間演算を行う演算回路及び演算回路の制御方法を提供することにある。
実施の形態の第1の側面は,第1のオペランドデータと第2のオペランドデータを入力する入力回路と,要求エレメント信号に基づいていずれかのエレメントのオペランドデータを選択するエレメントデータセレクタとを,それぞれ有する第1〜第N(Nは2以上の複数)のエレメント回路と,
前記各エレメントの入力回路から各エレメントの前記エレメントデータセレクタに前記各エレメントが入力するオペランドデータを供給するデータバスとを有し,
前記第1〜第Nのエレメント回路内の各エレメントデータセレクタは,制御信号が第1の状態のとき,前記第2のオペランドデータに含まれる前記要求エレメント信号に基づいて,いずれかのエレメントの前記第1のオペランドデータをそれぞれ選択して出力し,
前記第1〜第Nのエレメント回路のそれぞれは,前記制御信号が第2の状態のとき,自己のエレメント番号とシフト量に基づいて前記第1または第2のオペランドデータを選択して前記データバスに出力するオペランドセレクタと,前記自己のエレメント番号と前記シフト量とに基づいて前記要求エレメント信号を生成するエレメント連結左シフト用加算器とをそれぞれ有する,演算回路である。
第1の側面によれば,回路規模を抑制して種々の要素間演算を行うことができる。
本実施の形態における演算回路とSIMD演算器との一例を示す図である。 本実施の形態におけるフルエレメントパーミュテーション(Full Element Permutation:完全要素置換)の演算回路の一例を示す図である。 本実施の形態におけるエレメントコンカテネートシフトレフト(Element Concatenate Sift Left:要素結合左シフト)の演算回路の一例を示す図である。 本実施の形態におけるエレメントサムマスク(Element Sum Mask:要素加算マスク)の演算回路の一例を示す図である。 本実施の形態におけるエレメントコンプレス(Element Compress:エレメント圧縮)の演算回路の一例を示す図である。 完全要素置換を行う演算回路AL10−1の左半分を示す図である。 完全要素置換を行う演算回路AL10−1の右半分を示す図である。 要素連結左シフトを行う演算回路AL10−2の左半分を示す図である。 要素連結左シフトを行う演算回路AL10−2の右半分を示す図である。 加算器CSL-Adderの動作を説明する論理値表である。 要素加算マスクを行う演算回路AL10−3の左半分を示す図である。 要素加算マスクを行う演算回路AL10−3の右半分を示す図である。 要素圧縮を行う演算回路AL10−4の左半分を示す図である。 要素圧縮を行う演算回路AL10−4の右半分を示す図である。 コンプレスデコーダCompressの論理値表を示す図である。 本実施の形態における全機能を有する演算回路の左側を示す図である。 本実施の形態における全機能を有する演算回路の右側を示す図である。
[本実施の形態の概略]
図1は,本実施の形態における演算回路とSIMD演算器とを示す図である。図1には,プロセッサに設けられる4SIMD演算器が示されている。4SIMD演算器は,演算器AL1をそれぞれ有する4つのSIMD演算エレメントE_#0,E_#1,E_#2,E_#3を有する。SIMD幅を4(4SIMD)にするのは一例であり,少なくとも2つのSIMD演算エレメントを有する。そして,例えば8つのSIMD演算エレメントを有する8SIMDであってもよく,さらに16SIMDであってもよい。
各SIMD演算エレメントE_#0〜E_#3は,第1,第2のオペランドデータを保持する第1,第2のオペランドレジスタOP1,OP2と,第1,第2のオペランドデータを入力して演算する演算器AL1と,演算器AL1の演算結果を保持する結果レジスタR3と,結果レジスタR3が保持するデータを保持するリネーミングレジスタR2と,リネーミングレジスタR2が保持するデータを保持するSIMDレジスタR1とを有する。
そして,各SIMD演算エレメントは,更に,第1,第2のオペランドレジスタOP1,OP2の前段に結果レジスタR3とリネーミングレジスタR2とSIMDレジスタR1のいずれかを選択する2つのセレクタSA,SBと,複数の演算器AL1の出力を選択するセレクタSCとを有する。結果レジスタR3からのデータフォワーディングは他の箇所へも考えられるが、本件ではそれについて言及しない。
第1,第2のオペランドレジスタOP1,OP2のオペランドデータは,例えば64ビットである。同様に,SIMDレジスタR1,リネーミングレジスタR2,結果レジスタR3もそれぞれ64ビット幅を有する。しかし,本実施の形態は64ビットの幅には限定されない。
図示しないリザベーションステーションにエントリされたSIMD命令は,複数のSIMD演算エレメントに投入され,複数のSIMDエレメント内の演算器AL1が,複数組の第1,第2のオペランドデータを演算し,演算結果をそれぞれの結果レジスタR3に格納する。リネーミングレジスタR2は,演算器が複数の命令をアウトオブオーダで演算し,インオーダで出力するために一時的にデータを保持するレジスタである。
プロセッサは,4つのSIMD演算エレメントE_#0〜E_#3に対して横断的に設けられたエレメント間演算回路AL10を有する。この演算回路AL10は,各SIMD演算エレメントE_#0〜E_#3内の第1,第2のオペランドレジスタOP1,OP2内の第1,第2のオペランドデータを入力し,例えば,次のような演算を実行する。すなわち,(1)エレメント間データ置換(エレメントパーミュテーション),(2)エレメントのデータを連結して左シフトするエレメント連結左シフト(エレメントコンカテネートシフトレフト),(3)エレメントのデータを加算するエレメント加算マスク(エレメントサムマスク),(4)エレメントのデータを圧縮して並べるエレメントデータ圧縮(エレメントコンプレス)などを行う。演算回路AL10の演算結果は,SIMD演算エレメント内の結果レジスタR3に出力される。
エレメント間演算回路AL10は,上記のとおり,4つのSIMD演算エレメント間でデータの並べ替え,任意のエレメントのデータのマスク,任意のエレメントのデータを全エレメントに配布するブロードキャストなどの基本的な演算処理を行うことができる。それに加えて,エレメント間演算回路AL10は,各エレメントのデータに対する加算演算や特殊な並べ替え処理なども行うことができる。よって,エレメント間演算回路AL10は,2以上のSIMD演算エレメントを有するSIMD演算器による高速並列処理のメリットを最大限に生かすことができる。
図2は,本実施の形態におけるフルエレメントパーミュテーション(Full Element Permutation:完全要素置換)の演算回路の一例を示す図である。この演算回路AL10−1は,4つのSIMD演算エレメントE_#0〜E_#3の第1のオペランドレジスタOP1に格納されたデータのいずれかを選択し,4つのSIMD演算エレメントの結果レジスタR3のいずれかに出力するセレクタS1を有する。このセレクタS1は,例えば,4つのSIMD演算エレメントそれぞれに対応して設けられ,選択したデータをそれぞれの結果レジスタR3に出力する。セレクタS1の選択信号は,例えば,第2のオペランドレジスタ内の第2のオペランドデータに含めることができる。また,4つのSIMD演算エレメントの第1のオペランドレジスタOP1とセレクタS1の入力との間にデータ転送のためのデータバスが必要になる。
この演算回路AL10−1は,セレクタS1を設けることで,SIMD演算エレメント間のデータの並べ替えや,任意のSIMD演算エレメントのデータを全SIMD演算エレメントに配布するブロードキャストを行う。
さらに,後述するとおり,セレクタS1の出力または全て0のデータのいずれかを選択するマスクセレクタを設けることで,任意のSIMD演算エレメントのデータを全て0のデータにマスクすることもできる。
図3は,本実施の形態におけるエレメントコンカテネートシフトレフト(Element Concatenate Sift Left:要素結合左シフト)の演算回路の一例を示す図である。この演算回路AL10−2は,各SIMD演算エレメントのそれぞれ2つのオペランドデータを結合したエレメント数×2の数のデータを,任意のエレメント数だけ左シフトし,上位側から要素番号順に各SIMD演算エレメントの結果レジスタR3に格納する。
演算回路AL10−2は,SIMD演算エレメントの第1のオペランドレジスタOP1のデータと第2のオペランドレジスタOP2のデータとを結合した状態で,任意のシフト量左にシフトする左シフト回路SLを有する。左シフト回路SLの出力は,4つのSIMD演算エレメントの結果レジスタR3に順番に格納される。また,図示しないシフト量のデータが,左シフト回路SLに供給される。
例えばシフト量が2の場合,演算回路AL10−2は,エレメント#2の第1のオペランドデータ,エレメント#3の第1のオペランドデータ,エレメント#0の第2のオペランドデータ,エレメント#1の第2のオペランドデータを,エレメント#0−#3の結果レジスタR3にそれぞれ転送する。
演算回路AL10−2は,上記の左シフト回路SLと,SIMD演算エレメントE_#0〜E_#3の第1,第2のオペランドレジスタから左シフト回路SLにデータを供給するデータバスが必要になる。特に,データバスは,4つのSIMD演算エレメントが集積回路基板上の広い領域に配置されているため,回路の実装コストが大きくなる。本実施の形態では,完全要素置換演算回路AL10−1にわずかな回路を追加することで,要素結合左シフト演算回路AL10−2を実現する。
図4は,本実施の形態におけるエレメントサムマスク(Element Sum Mask:要素加算マスク)の演算回路の一例を示す図である。この演算回路AL10−3は,各エレメントがそれぞれ有効か否かを示す1ビットの有効データをカウントし,カウント値である有効なエレメントの数を全てのSIMD演算エレメントの結果レジスタR3に格納する。または,有効なエレメントの数を有効なエレメントの結果レジスタR3に格納するようにしてもよい。
演算回路AL10−3は,例えば,各エレメントの第2のオペランドレジスタOP2の第2のオペランドデータ内の1ビット,例えば最上位ビットの[63]を有効ビットとして使用する。演算回路AL10−3は,各エレメントの有効ビットを加算する有効ビット加算器AD−1を有し,有効ビット加算器AD−1の加算値,有効エレメント数,が全エレメントのそれぞれの結果レジスタR3に格納される。
また,演算回路AL10−3が,無効なエレメントの結果レジスタR3には全て0のデータでマスクする機能を有する場合は,有効ビット加算器AD−1のカウント値は,有効エレメントの結果レジスタにだけ格納され,無効エレメントの結果レジスタには全て0のデータが格納される。この場合は,全要素データ置換演算回路AL10−1のマスク回路を利用する。
図5は,本実施の形態におけるエレメントコンプレス(Element Compress:エレメント圧縮)の演算回路の一例を示す図である。この演算回路AL10−4は,各SIMD演算エレメントのオペランドデータとそのオペランドデータを使用するいか否かの制御信号Ctrl#0−#3を入力し,制御信号が有効を示すエレメントのオペランドデータを結合し,左側のエレメント#0からエレメント番号順に,つまり左詰めで,それぞれの結果レジスタに格納する。
図5の例では,制御信号Ctrl#0,#3が有効,Ctrl#1,#2が無効であり,エレメント#0,#3のオペランドデータが,エレメント#0,#1の結果レジスタR3に格納され,エレメント#2,#3の結果レジスタR3には全て0のデータが格納されている。
演算回路AL10−4は,制御信号が有効であるエレメントのデータを結合して必要な左シフトを行う回路10と,無効なエレメントの結果レジスタR3に全て0のデータを格納するマスク回路12を有する。本実施の形態によれば,演算回路AL10−4は,全要素データ置換演算回路AL10−1のエレメントデータセレクタS1とマスクセレクタ(図示せず)を利用して構成される。
[本実施の形態の演算回路]
次に,本実施の形態における4つの演算回路の詳細な構成例について説明する。さらに,4つの演算回路を統合した構成例についても説明する。
[完全要素置換演算回路AL10−1]
図6は,完全要素置換を行う演算回路AL10−1の左半分を示す図である。図7は,完全要素置換を行う演算回路AL10−1の右半分を示す図である。図1で説明したとおり,演算回路AL10−1は,4つのSIMD演算エレメントE_#0〜E_#3に対して横断的に重ねるように設けられる。そして,演算回路AL10−1は,図2で概略説明した機能を有する。
演算回路AL10−1は,4つのSIMD演算エレメントに対応する4つのエレメント回路element#0〜element#3を有する。そして,各エレメント回路は,X1〜X6及びUステージのパイプライン構造を有し,X2〜X6ステージにはそれぞれレジスタが設けられ,Uステージは結果レジスタR3に対応する。X2〜X6ステージのレジスタをそれぞれX2レジスタX2−R〜X6レジスタX6−Rと称する。図6の左側の回路と図7の右側の回路はエレメント番号を除いて左右対称である。
各エレメント回路element#0〜element#3は,対応するSIMD演算エレメント内の第1,第2のオペランドレジスタ内のオペランドデータop1[63:0], op2[63,1:0]をX1サイクルで読み出す。そして,各エレメント回路は,第1のオペランドデータop1[63:0]と,第2のオペランドデータop2[63:0]の最上位ビットop2[63]と最下位2ビットop2[1:0]とを,X2,X3サイクルでX2レジスタX2−R,X3レジスタX3−Rを介して,データ交換を行うセレクタ部100に転送する。第1のオペランドデータop1[63:0]に対するX3レジスタX3−Rの出力は,データdata[63:0]に,第2のオペランドデータop2[63:0]の最上位ビットop2[63]と最下位2ビットop2[1:0]に対する出力は,マスク信号mask,要求エレメント信号want_el[1:0]に,それぞれ対応する。
そして,各エレメント回路は,X4サイクルで,データdata[63:0]とマスク信号mask,要求エレメント信号want_el[1:0]を,X4レジスタX4−Rに格納し,エレメントデータセレクタS1と,マスクセレクタS2に供給される。各エレメント回路に共通に,全エレメントのデータdata[63:0]を全エレメント回路のエレメントデータセレクタS1の入力に供給するデータバスDBを有する。そして,X4サイクルで,エレメントデータセレクタS1は,要求エレメント信号want_el[1:0]が要求するエレメントのデータを選択する。また,マスクセレクタS2は,マスク信号maskが0の場合は選択したデータdata[63:0]を選択し,マスク信号maskが1の場合は全て0のデータを選択し,X5レジスタX5−Rに出力する。
したがって,X5レジスタX5−Rに出力されるのは,マスク信号maskが0の場合は,要求エレメント信号want_el[1:0]に基づいてエレメントデータセレクタS1が選択したエレメントのデータdata[63:0]であり,マスク信号maskが1の場合は,マスクセレクタS2が選択した全て0のマスクデータになる。
そして,上記の選択したエレメントデータdata[63:0]またはマスクデータが,X5サイクルでX5レジスタX5−Rに格納される。これにより,セレクタ部100が,選択したエレメントデータdata[63:0]または全て0のマスクデータを,各エレメント回路内のX6レジスタX6−Rに送出する。そして,送出されたデータは,X6サイクルでX6レジスタX6−Rに格納され,Uサイクルで結果レジスタR3に格納される。
上記のように,本実施の形態では,一例として,SIMD演算エレメント間で交換するデータは,第1のオペランドレジスタの第1のオペランドデータとして入力され,各種制御信号mask,want_el[1:0]は,第2のオペランドレジスタの第2のオペランドデータ内に含められて入力される。マスク機能が必要ない場合は,セレクタ部100はマスクセレクタS2は設けなくても良い。
[要素連結左シフト演算回路AL10−2]
図8は,要素連結左シフトを行う演算回路AL10−2の左半分を示す図である。図9は,要素連結左シフトを行う演算回路AL10−2の右半分を示す図である。演算回路AL10−2は,図3で概略説明したエレメントのデータを連結して左シフトする機能を有する。そして,図8,図9の演算回路AL10−2では,図6,図7の完全要素置換演算回路AL10−1の構成に追加して,各エレメント回路element#0-#3が,制御コードctrl_codeと,シフト量データshc[1:0]と,自要素番号element#[1:0]とを入力し,自要素番号element#[1:0]からシフト量データshc[1:0]を減算及び加算する要素連結左シフト用加算器CSL_Adderと,スイッチSW1,SW2と,要求エレメントセレクタS4と,第1,第2のオペランドデータop1[63:0],op2[63:0]のいずれかを選択するオペランドセレクタS3とを有する。
この演算回路AL10−2は,制御コードctrl_codeが1の場合に,上記の追加した構成が有効に動作して要素連結左シフトを行う演算回路になり,制御コードが0の場合に,図6,7の完全要素置換演算回路になる。
要素連結左シフトを行う演算回路AL10−2の動作について説明する。制御コードctrl_codeが1であり,要素連結左シフト動作信号ecsld_opが1になり,要求エレメントセレクタS4が加算器CSL_Adderの加算値sum[1:0]を選択して要求エレメント信号want_el[1:0]として出力する。また,スイッチSW1は,オペランドスイッチ信号op_switchを,オペランドセレクタS3のセレクト信号として出力する。このオペランドスイッチ信号op_switchは,加算器CSL-Adderが自要素番号element#[1:0]からシフト量データshc[1:0]を減算した時に発生するborrow値である。そして,スイッチSW2は0を出力し,マスク信号maskを0にして,マスクセレクタS2の選択を常にエレメントデータセレクタS1の出力に固定する。
図10は,加算器CSL-Adderの動作を説明する論理値表である。図10には,(A)各エレメント回路において,自要素番号element#[1:0]とシフト量データshc[1:0]に対応して,どのエレメントの第1,第2のオペランドデータのいずれを配置すべきかを示す表と,(B)加算器CSL-Adderが,自要素番号element#[1:0]からシフト量データshc[1:0]を減算した時に発生するborrow値op_switchの表と,(3)自要素番号element#[1:0]とシフト量データshc[1:0]を加算した加算値sum[1:0]の表とを示す。
図10(A)に示すとおり,自要素番号が0のエレメント回路element#0は,セレクタS1により,シフト量shc[1:0]が0の場合は,エレメント0の第1のオペランドデータを選択して格納し,同様に,シフト量が1,2,3の場合はエレメント1,2,3の第1のオペランドデータを選択して格納する。そして,エレメント回路element#1は,シフト量shc[1:0]が0,1,2の場合は,エレメント1,2,3の第1のオペランドデータを選択して格納し,同様に,シフト量が3の場合はエレメント0の第2のオペランドデータを選択して格納する。他のエレメントelement#2,#3もエレメント#1と同様である。
次に,図10(B)に示すとおり,エレメント回路element#0は,セレクタS3により,減算後のborrow値に応じて第1または第2のオペランドデータを選択する。例えば,シフト量が0の場合はborrow=0であるので第1のオペランドデータop1を選択し,シフト量が1,2,3の場合はborrow=1であるので第2のオペランドデータop2を選択する。他のエレメント回路も同様である。
一方,図10(C)に示すとおり,エレメント回路element#0は,シフト量が0〜3の場合に,加算値sum[1:0]に応じてエレメント回路element#0〜#3のデータをそれぞれ選択する。この選択は,エレメントデータセレクタS1により行われる。他のエレメント回路も同様である。なお,図10(C)の加算値は,図10(A)の選択する要素番号と同じになる。
そこで,図8,図9の要素結合左シフト演算回路AL10−2は,図10(A)(B)(C)を併せてみると,以下のとおりである。まず,シフト量が0の場合,エレメント回路element#0〜#3では,オペランドセレクタS3がborrow値であるオペランドスイッチ信号op_switch=0000に応じて第1のオペランドデータop1を選択し,エレメントデータセレクタS1が加算値sum=0123に応じてエレメント回路element#0, #1, #2, #3をそれぞれ選択する。
シフト量が1の場合,borrow値であるオペランドスイッチ信号op_switch=1000に応じて,エレメント回路element#0のオペランドセレクタS3が第2のオペランドデータop2を選択し,エレメント回路element#1〜#3のオペランドセレクタS3が第1のオペランドデータop1を選択し,エレメント回路element#0〜#3のエレメントデータセレクタS1が加算値sum=1230に応じてエレメント回路element#1, #2, #3, #0のデータをそれぞれ選択する。この場合,エレメント#0の第2のオペランドデータop2は,回路エレメント#3により選択される。
同様に,シフト量が2の場合,borrow値であるオペランドスイッチ信号op_switch=1100に応じて,エレメント回路element#0, #1のオペランドセレクタS3が第2のオペランドデータop2を選択し,エレメント回路element#2, #3のオペランドセレクタS3が第1のオペランドデータop1を選択し,エレメント回路element#0〜#3のエレメントデータセレクタS1が加算値sum=2301に応じてエレメント回路element#2, #3, #0, #1のデータをそれぞれ選択する。この場合,エレメント#0, #1の第2のオペランドデータop2は,回路エレメント#2, #3に選択される。
シフト量が3の場合も上記と同様である。
そして,要素結合左シフト演算回路AL10−2では,マスクセレクタS2の選択信号maskは制御コードctrl_code=1により常時0に固定されるので,マスク機能は働かない。したがって,第2のオペランドデータop2の最上位ビットop2[63]と最下位2ビットop2[1:0]は,マスク機能や選択機能を有しない。要素結合左シフト演算回路AL10−2では,主に,オペランドセレクタS3とエレメントデータセレクタS1により,要素結合左シフト機能が実現される。
図8,9の要素結合左シフト演算回路は,図6,7の完全要素置換演算回路AL10−1のオペランドセレクタS3とデータバスDBと,追加したオペランドセレクタS3を利用することで,図3で説明した要素結合左シフト機能を果たす。要素結合左シフト機能では,どのシフト量においても,各エレメントの結果レジスタに格納されるデータが第1または第2のオペランドデータである。したがって,セレクタ部100の前段のオペランドセレクタS3で第1または第2のオペランドデータを選択することで,セレクタ部100内のエレメントデータセレクタS1に送るデータバスを半減している。また,データバスDBとエレメントデータセレクタS1によりシフト動作を行わせて,新たに必要なシフト回路を削減している。
[要素加算マスク演算回路AL10−3]
図11は,要素加算マスクを行う演算回路AL10−3の左半分を示す図である。図12は,要素加算マスクを行う演算回路AL10−3の右半分を示す図である。演算回路AL10−3は,図4で概略説明した各エレメントの有効ビットを加算して全エレメントに格納する機能を有する。そして,図11,図12の演算回路AL10−3では,図6,図7の完全要素置換演算回路AL10−1の構成に追加して,セレクタ部100が,有効ビット加算器AD−1と,その加算値sum2[2:0]を制御コードctrl_code=1,要素加算マスク動作信号esummd_op=1により選択する加算値セレクタS5と,マスク信号maskと要素加算マスク動作信号esummd_opが入力されるORゲートOR1とを有する。マスクセレクタS2が,このORゲートOR1を介して供給される要素加算マスク動作信号esummd_op=1により,全て0のデータを選択する。
この演算回路AL10−3は,制御コードctrl_codeが1の場合に要素加算マスクを行う演算回路になり,制御コードが0の場合に図6,7の完全要素置換演算回路になる。
制御コードctrl_codeが1の場合,演算回路が要素加算マスク演算回路AL10−2となる。その場合,第1のオペランドデータop1と,第2のオペランドデータの最下位2ビットop2[1:0]は使用されず,第2のオペランドデータの最上位ビットop2[63]のみがエレメントの有効性を表すビットとして使用される。それに伴い最下位2ビットop2[1:0]の要求エレメント信号want_el[1:0]は機能せず,ORゲートOR1を介して供給される要素加算マスク信号esummd_op=1がマスクセレクタS2に供給され,マスクセレクタS2が,マスク信号maskに係わらず,全て0のデータを選択し,マスク機能が有効化される。そして,要素加算マスク動作信号esummd_op=1により,加算セレクタS5が,有効ビット加算器AD−1の加算値sum2[2:0]を全て0のデータに上書きする。
なお,加算値を上書きする加算セレクタS5は,マスクセレクタS2の全て0のデータの入力端子の前段に設けても良い。その場合は,有効ビットの加算値sum2[2:0]をall0データに上書きした入力を,マスクセレクタS2がセレクトし,X5レジスタX5−Rに出力する。
以上のように,要素加算マスク演算回路として機能する場合,エレメントデータセレクタS1は機能しないが,マスクセレクタS2は常にゼロマスク機能を有し,追加して設けられた加算値セレクタS5が,有効ビット加算器AD−1の加算値sum2[2:0]を選択し,all0のデータの最下位3ビットに上書きする。そして,加算値sum2[2:0]を含む63ビットのデータがX5レジスタX5−Rに出力される。したがって,図11,図12の演算回路は,図6,図7の完全要素置換演算回路のマスクセレクタS2と,追加した加算値セレクタS5を使用して要素加算マスク機能を実現する。
[要素圧縮演算回路AL10−4]
図13は,要素圧縮を行う演算回路AL10−4の左半分を示す図である。図14は,要素圧縮を行う演算回路AL10−4の右半分を示す図である。演算回路AL10−4は,図5で概略説明した有効なエレメントのデータを左側のエレメントに集めて格納する機能を有する。そして,図13,図14の演算回路AL10−4では,図6,図7の完全要素置換演算回路AL10−1の構成に追加して,セレクタ部100に,コンプレスデコーダCompressと,第1,第2のコンプレスセレクタS6,S7とを有する。
この演算回路AL10−4は,制御コードctrl_codeが1の場合に要素データの圧縮を行う演算回路になり,制御コードが0の場合に図6,7の完全要素置換演算回路になる。
制御コードctrl_codeが1の場合,要素圧縮動作信号ecpd_op=1となり,第1,第2のコンプレスセレクタS6,S7が,コンプレスデコーダCompressのデコード信号cmpr#[2]と,cmpr#[1:0]をそれぞれセレクトする。したがって,第2のオペランドデータの最下位2ビットop2[1:0]は使用されず,最上位ビットop2[63]はエレメントの有効ビットとして機能する。
コンプレスデコーダCompressは,その有効ビットの組合せに応じて,4つのエレメントそれぞれに出力する4つのデコード信号cmpr[2:0]を生成する。デコード信号cmpr#[2]はデータをマスクするか否かを示す信号であり,デコードcmpr#[1:0]はどのエレメントデータを選択するかを示す信号である。
また,第2のコンプレスセレクタS7は,op2[63]であるマスク信号maskではなく,デコード信号cmpr#[2]をセレクトする。さらに,第1のコンプレスセレクタS6は,要求エレメント信号want_el[1:0]ではなく,デコード信号cmpr#[1:0]をセレクトする。それに伴い,エレメントデータセレクタS1は,デコード信号cmpr#[1:0]に基づくエレメントデータをセレクトし,マスクセレクタS2は,デコード信号cmpr#[2]に応じてデータを全て0のデータをセレクトする。
図15は,コンプレスデコーダCompressの論理値表を示す図である。図15には,エレメント#0−#3に対するデコーダの論理値表が示されている。論理値表内の”X”は1または0のいずれかを示す。
たとえば,エレメント#0のデコーダでは,エレメント#0の有効ビットが1の場合(el#0=1),デコード信号cmpr0[2]=0,cmpr[1:0]=00となり,エレメント#0のデータを選択して結果レジスタに格納する。同様に,エレメント#0の有効ビットが0で,エレメント#1の有効ビットが1の場合(el#0=0,el#1=1),デコード信号cmpr0[2]=0,cmpr[1:0]=01となり,エレメント#1のデータを選択して結果レジスタに格納する。el#0=0,el#1=0,el#2=1の場合,el#0=0,el#1=0,el#2=0,el#=1の場合は,それぞれエレメント#2のデータ,エレメント#3のデータを選択する。それ以外(default)は,デコード信号cmpr0[2]=1になり全て0のデータが出力される。
他のエレメント#1,#2,#3のデコードも同様であり,図15の論理値表から理解できるので,説明は省略する。
以上のように,図13,図14の演算回路は,図6,図7の完全要素置換演算回路のエレメントデータセレクタS1,マスクセレクタS2,データベースDBと,追加したコンプレスデコーダCompressと,第1,第2のコンプレスセレクタS6,S7を使用して要素圧縮機能を実現する。
[全機能を有する演算回路]
以上,本実施の形態における4種類の演算回路について説明した。上記では,完全要素置換演算回路AL10−1と,要素連結左シフト演算回路AL10−2,要素加算マスク演算回路AL10−3,要素圧縮演算回路AL10−4それぞれの組合せについて説明した。
次に,こららの4種類の演算回路の機能を制御信号により切替可能にした全機能を有する演算回路について説明する。
図16は,本実施の形態における全機能を有する演算回路の左側を示す図である。図17は,本実施の形態における全機能を有する演算回路の右側を示す図である。図16,図17の全機能を有する演算回路は,2ビットの制御コードctrl_code[1:0]により4種類の機能に切替可能に構成されている。制御コードの割付は以下のとおりである。
制御コードctrl_code[1:0]=00:完全要素置換(フルエレメントパーミュテーション)
制御コードctrl_code[1:0]=01:要素連結左シフト(エレメントコンカテネートシフトレフト)
制御コードctrl_code[1:0]=10:要素加算マスク(エレメントサムマスク)
制御コードctrl_code[1:0]=11:要素圧縮(エレメントコンプレス)
全機能を有する演算回路は,セレクタ部100内に,エレメントデータセレクタS1と,マスクセレクタS2と,加算値セレクタS5と,第1,第2のコンプレスセレクタS6,S7と,有効ビット加算器AD−1と,コンプレスデコーダCompressとを有する。さらに,全機能を有する演算回路は,各エレメント回路element#0-#3の入力部内に,エレメント結合左シフト用加算器CSL-Adderと,オペランドセレクタS3と,要求エレメントセレクタS4と,スイッチSW1,SW2とを有する。そして,全機能を有する演算器は,制御コードctrl_code[1:0]をデコードして要素結合左シフト動作信号ecsld_op, 要素加算マスク動作信号esummd_opを生成するデコーダDを有する。図中のデコーダDの出力信号によりどちらのデコードを行っているかを理解できる。なお,要素圧縮動作信号ecpd_opは生成されず,要素加算マスク動作信号esummd_opと共に,制御コードctrl_code[1:0]の上位ビット[1]で代用される。
全機能を有する演算回路は,制御コードctrl_code[1:0]=00の場合に,完全要素置換を行う演算回路として動作する。制御コードが”00”であるので,全ての追加セレクタS3−S7は選択信号”0”側がセレクトされる。その結果,図6,図7の完全要素置換の演算回路AL10−1として動作する。
全機能を有する演算回路は,制御コードctrl_code[1:0]=01の場合に,要素連結左シフトを行う演算回路として動作する。制御コードが”01”であるので,要素結合左シフト動作信号ecsld_opが1になり,要求エレメントセレクタS4は”1”側の加算器の加算値sum[1:0]を選択し,スイッチSW1は加算器のborrow値op_switchをオペランドセレクタS3に出力し,スイッチSW2はマスク信号maskを”0”にする。また,制御コードの上位ビットctrl_code[1]=0により,加算値セレクタS5は”0”を選択し,第1,第2のコンプレスセレクタS6,S7は”0”側のマスク信号maskと要求エレメント信号want_el[1:0]をそれぞれ選択する。その結果,図8,図9の要素連結左シフトの演算回路AL10−2として動作する。
全機能を有する演算回路は,制御コードctrl_code[1:0]=10の場合に,要素加算マスクを行う演算回路として動作する。制御コードが”10”で,要素加算マスク動作信号esummd_opが”1”となり,制御コードの上位ビットctrl_code[1]=1となり,セレクタS5,S6,S7は全て”1”側を選択する。また,要素結合左シフト動作信号ecsld_op=0となり,スイッチSW1の出力が0となりセレクタS3は”0”側を選択し,スイッチSW2の出力は有効ビットop2[63]となり,セレクタS4は要求エレメントビットop2[1:0]を出力する。その結果,図11,図12の要素加算マスクの演算回路AL10−3として動作する。
なお,図11,12と異なり,セレクタS6が”1”側を選択してコンプレスデコーダのデコード信号cmpr[1:0]を出力し,エレメントデータセレクタS1がデコード信号cmpr[1:0]に基づいてエレメントのデータを選択している。しかしながら,要素加算マスク動作信号esummd_op=1によりORゲートOR1が”1”を出力し,制御コードの上位ビットctrl_code[1]=1によりセレクタS7がORゲートの出力”1”を選択するため,マスクセレクタS2が全て0のデータにマスクする。その後,要素加算マスク動作信号esummd_op=1によりセレクタS5が有効ビット加算値sum2[2:0]を選択して,有効ビット加算値をデータに上書きする。
つまり,Element Sum Mask時にはセレクタS6によるエレメント要求信号want_el[1:0]は不問である。よって,制御コードの上位ビットctrl_code[1]=1(Element Sum MaskもしくはElement Compressの場合)ならば,セレクタS6の”1”側を選択するようにすることで要素圧縮動作信号ecpd_opを生成するためのデコーダなどの回路を削減することができる。
最後に,全機能を有する演算回路は,制御コードctrl_code[1:0]=11の場合に,要素圧縮を行う演算回路として動作する。制御コードが”11”で,要素加算マスク動作信号esummd_op=0となり,制御コードの上位ビットctrl_code[1]=1となり,セレクタS5は”0”側を選択し,セレクタS6,S7は”1”側を選択する。また,要素結合左シフト動作信号ecsld_op=0となり,スイッチSW1の出力が0となりセレクタS3は”0”側を選択し,スイッチSW2の出力は有効ビットop2[63]となり,セレクタS4は要求エレメントビットop2[1:0]を出力する。その結果,図13,図14の要素圧縮の演算回路AL10−4として動作する。
以上の通り,本実施の形態によれば,3以上の複数のSIMD演算エレメントを有するプロセッサにおいて,複数のSIMD演算エレメントを横断する要素間演算回路AL10を有し,その要素間演算回路AL10が,多数のSIMD演算エレメント間のデータの置換,転送,圧縮や,データの加算値の集計などの演算機能を,制御コードにより切替可能に構成されているので,SIMD演算器の高速処理を最大限に生かすことができる。
以上の実施の形態をまとめると,次の付記のとおりである。
(付記1)
第1のオペランドデータと第2のオペランドデータを入力する入力回路と,要求エレメント信号に基づいていずれかのエレメントのオペランドデータを選択するエレメントデータセレクタとを,それぞれ有する第1〜第N(Nは3以上の複数)のエレメント回路と,
前記各エレメントの入力回路から各エレメントの前記エレメントデータセレクタに前記各エレメントが入力するオペランドデータを供給するデータバスとを有し,
前記第1〜第Nのエレメント回路内の各エレメントデータセレクタは,制御信号が第1の状態のとき,前記第2のオペランドデータに含まれる前記要求エレメント信号に基づいて,いずれかのエレメントの前記第1のオペランドデータをそれぞれ選択して出力し,
前記第1〜第Nのエレメント回路のそれぞれは,前記制御信号が第2の状態のとき,自己のエレメント番号とシフト量に基づいて前記第1または第2のオペランドデータを選択して前記データバスに出力するオペランドセレクタと,前記自己のエレメント番号と前記シフト量とに基づいて前記要求エレメント信号を生成するエレメント連結左シフト用加算器とをそれぞれ有する,演算回路。
(付記2)
さらに,前記制御信号が第3の状態のとき,前記第1〜第Nのエレメント回路が入力する第2のオペランドデータに含まれる有効ビットを加算する有効ビット加算器を有し,
前記第1〜第Nのエレメント回路それぞれは,前記制御信号が第3の状態のとき,前記有効ビット加算器が出力する加算値を,前記エレメントデータセレクタの出力に代えて,出力する加算値セレクタを有する,付記1に記載の演算回路。
(付記3)
前記第1〜第Nのエレメント回路それぞれは,前記エレメントデータセレクタの出力または全てゼロのデータのいずれかを選択するマスクセレクタを有し,
さらに,前記制御信号が第4の状態のとき,前記第1〜第Nのエレメント回路が入力する第2のオペランドデータに含まれる有効ビットに基づいて,マスク信号とエレメントデータ選択信号を有するコンプレスデコード信号を前記第1〜第Nのエレメント回路別に生成するコンプレスデコーダを有し,
前記第1〜第Nのエレメント回路それぞれは,前記制御信号が第4の状態のとき,前記エレメントデータ選択信号を前記要求エレメント信号に代えて選択する第1のコンプレスセレクタと,前記マスク信号を前記マスクセレクタに出力して前記全てゼロのデータを選択させる第2のコンプレスセレクタとを有する,付記1または2に記載の演算回路。
(付記4)
さらに,前記第1のオペランドデータを入力する第1のオペランドレジスタと,前記第2のオペランドデータを入力する第2のオペランドレジスタと,前記第1,第2のオペランドデータを入力して演算する演算器と,前記演算器が出力する演算結果を格納する結果レジスタとをそれぞれ有する第1〜第N(Nは3以上の整数)のSIMD演算エレメントを有する,付記1に記載の演算回路。
(付記5)
第1のオペランドデータと第2のオペランドデータを入力する入力回路と,要求エレメント信号に基づいていずれかのエレメントのオペランドデータを選択するエレメントデータセレクタとを,それぞれ有する第1〜第N(Nは3以上の複数)のエレメント回路と,
前記各エレメントの入力回路から各エレメントの前記エレメントデータセレクタに前記各エレメントが入力するオペランドデータを供給するデータバスとを有し,
前記第1〜第Nのエレメント回路内の各エレメントデータセレクタは,制御信号が第1の状態のとき,前記第2のオペランドデータに含まれる前記要求エレメント信号に基づいて,いずれかのエレメントの前記第1のオペランドデータを選択して出力し,
さらに,前記制御信号が第3の状態のとき,前記第1〜第Nのエレメント回路が入力する第2のオペランドデータに含まれる有効ビットを加算する有効ビット加算器を有し,
前記第1〜第Nのエレメント回路のそれぞれは,前記制御信号が第3の状態のとき,前記有効ビット加算器が出力する加算値を,前記エレメントデータセレクタの出力に代えて,出力する加算値セレクタを有する,演算回路。
(付記6)
さらに,前記第1のオペランドデータを入力する第1のオペランドレジスタと,前記第2のオペランドデータを入力する第2のオペランドレジスタと,前記第1,第2のオペランドデータを入力して演算する演算器と,前記演算器が出力する演算結果を格納する結果レジスタとをそれぞれ有する第1〜第N(Nは3以上の整数)のSIMD演算エレメントを有する,付記5に記載の演算回路。
(付記7)
第1のオペランドデータと第2のオペランドデータを入力する入力回路と,要求エレメント信号に基づいていずれかのエレメントのオペランドデータを選択するエレメントデータセレクタと,前記エレメントデータセレクタの出力または全てゼロのデータのいずれかを選択するマスクセレクタとを,それぞれ有する第1〜第N(Nは3以上の複数)のエレメント回路と,
前記各エレメントの入力回路から各エレメントの前記エレメントデータセレクタに前記各エレメントが入力するオペランドデータを供給するデータバスとを有し,
前記第1〜第Nのエレメント回路内の各エレメントデータセレクタは,制御信号が第1の状態のとき,前記第2のオペランドデータに含まれる前記要求エレメント信号に基づいて,いずれかのエレメントの前記第1のオペランドデータを選択して出力し,前記各マスクセレクタは,前記制御信号が第1の状態のとき,前記エレメントデータセレクタの出力を選択し,
さらに,前記制御信号が第4の状態のとき,前記第1〜第Nのエレメント回路が入力する第2のオペランドデータに含まれる有効ビットに基づいて,マスク信号とエレメントデータ選択信号を有するコンプレス信号を生成するコンプレスデコーダを有し,
前記第1〜第Nのエレメント回路のそれぞれは,前記制御信号が第4の状態のとき,前記エレメントデータ選択信号を前記要求エレメント信号に代えて選択する第1のコンプレスセレクタと,前記マスク信号を前記マスクセレクタに出力して前記全てゼロのデータを選択させる第2のコンプレスセレクタとを有する,演算回路。
(付記8)
さらに,前記第1のオペランドデータを入力する第1のオペランドレジスタと,前記第2のオペランドデータを入力する第2のオペランドレジスタと,前記第1,第2のオペランドデータを入力して演算する演算器と,前記演算器が出力する演算結果を格納する結果レジスタとをそれぞれ有する第1〜第N(Nは3以上の整数)のSIMD演算エレメントを有する,付記7に記載の演算回路。
(付記9)
第1のオペランドデータを入力する第1のオペランドレジスタと,第2のオペランドデータを入力する第2のオペランドレジスタと,前記第1,第2のオペランドデータを入力して演算する演算器と,前記演算器が出力する演算結果を格納する結果レジスタとをそれぞれ有する第1〜第N(Nは3以上の整数)のSIMD演算エレメントと,
前記第1のオペランドデータと前記第2のオペランドデータを入力する入力回路と,要求エレメント信号に基づいていずれかのエレメントのオペランドデータを選択するエレメントデータセレクタと,前記エレメントデータセレクタの出力または全てゼロのデータのいずれかを選択するマスクセレクタとを,それぞれ有する第1〜第Nのエレメント回路と,
前記各エレメントの入力回路から各エレメントの前記エレメントデータセレクタに前記各エレメントが入力するオペランドデータを供給するデータバスとを有し,
前記第1〜第Nのエレメント回路内の各エレメントデータセレクタは,前記第2のオペランドデータに含まれる前記要求エレメント信号に基づいて,いずれかのエレメントの前記第1のオペランドデータを選択し,前記各マスクセレクタは,前記選択する前記エレメントデータセレクタの出力または全てゼロのデータのいずれかを前記結果レジスタに出力する,演算回路。
(付記10)
前記第1〜第Nのエレメント回路内のエレメントデータセレクタは,制御信号が第1の状態のとき,前記第2のオペランドデータに含まれる前記要求エレメント信号に基づいて,いずれかのエレメントの前記第1のオペランドデータを選択し,
前記第1〜第Nのエレメント回路それぞれは,前記制御信号が第2の状態のとき,自己のエレメント番号とシフト番号に基づいて前記第1または第2のオペランドデータを選択して前記データバスに出力するオペランドセレクタと,前記自己のエレメント番号とシフト番号とに基づいて前記要求エレメント信号を生成するエレメント連結左シフト用加算器(CSL-Adder)とを有する,付記9に記載の演算回路。
(付記11)
前記第1〜第Nのエレメント回路内のエレメントデータセレクタは,制御信号が第1の状態のとき,前記第2のオペランドデータに含まれる前記要求エレメント信号に基づいて,いずれかのエレメントの前記第1のオペランドデータを選択し出力し,
さらに,前記制御信号が第3の状態のとき,前記第1〜第Nのエレメント回路が入力する第2のオペランドデータに含まれる有効ビットを加算する有効ビット加算器を有し,
前記第1〜第Nのエレメント回路それぞれは,前記制御信号が第3の状態のとき,前記有効ビット加算器が出力する加算値を,前記エレメントデータセレクタの出力に代えて,出力する加算値セレクタを有する,付記9に記載の演算回路。
(付記12)
前記第1〜第Nのエレメント回路内のエレメントデータセレクタは,制御信号が第1の状態のとき,前記第2のオペランドデータに含まれる前記要求エレメント信号に基づいて,いずれかのエレメントの前記第1のオペランドデータを選択し,前記マスクセレクタは,前記制御信号が第1の状態のとき,前記エレメントデータセレクタの出力を選択し,
さらに,前記制御信号が第4の状態のとき,前記第1〜第Nのエレメント回路が入力する第2のオペランドデータに含まれる有効ビットに基づいて,マスク信号とエレメントデータ選択信号を有するコンプレス信号を生成するコンプレスデコーダを有し,
前記第1〜第Nのエレメント回路それぞれは,前記制御信号が第4の状態のとき,前記エレメントデータ選択信号を前記要求エレメント信号に代えて選択する第1のコンプレスセレクタと,前記マスク信号を前記マスクセレクタに出力して前記全てゼロのデータを選択させる第2のコンプレスセレクタとを有する,付記9に記載の演算回路。
(付記13)
第1のオペランドデータを入力する第1のオペランドレジスタと,第2のオペランドデータを入力する第2のオペランドレジスタと,前記第1,第2のオペランドデータを入力して演算する演算器と,前記演算器が出力する演算結果を格納する結果レジスタとをそれぞれ有する第1〜第N(Nは3以上の整数)のSIMD演算エレメントと,
前記第1のオペランドデータと前記第2のオペランドデータを入力する入力回路と,要求エレメント信号に基づいていずれかのエレメントのオペランドデータを選択するエレメントデータセレクタと,前記エレメントデータセレクタの出力または全てゼロのデータのいずれかを選択するマスクセレクタとを,それぞれ有する第1〜第Nのエレメント回路と,
前記各エレメントの入力回路から各エレメントの前記エレメントデータセレクタに前記各エレメントが入力するオペランドデータを供給するデータバスとを有する演算回路の制御方法において,
前記第1〜第Nのエレメント回路内の各エレメントデータセレクタは,前記第2のオペランドデータに含まれる前記要求エレメント信号に基づいて,いずれかのエレメントの前記第1のオペランドデータを選択し,
前記各マスクセレクタは,前記選択する前記エレメントデータセレクタの出力または全てゼロのデータのいずれかを前記結果レジスタに出力する,演算回路の制御方法。
AL10−1:フルエレメントパーミュテーション(完全要素間置換)演算回路
AL10−2:エレメントコンカテネートシフトレフト(要素間連結左シフト)演算回路
AL10−3:エレメントサムマスク(要素間加算マスク)演算回路
AL10−4:エレメントコンプレス(要素間圧縮)演算回路
OP1,OP2:オペランドレジスタ
AL10:演算回路
element#0-#3:エレメント回路
100:セレクタ部
R1:SIMDレジスタ
R2:リネーミングレジスタ
R3:結果レジスタ
S1:第1のセレクタ(エレメントデータ交換セレクタ)
S2:第2のセレクタ(マスクセレクタ)
S3:第3のセレクタ(オペランドセレクタ)
S4:第4のセレクタ(要求エレメントセレクタ)
S5:第5のセレクタ(加算値セレクタ)
S6:第6のセレクタ(第1のコンプレスセレクタ)
S7:第7のセレクタ(第2のコンプレスセレクタ)
SW1,SW2:第1のスイッチ,第2のスイッチ
DB:エレメント間データバス群
OP1,OP2:X1レジスタ(オペランドレジスタ)
R−X2:X2レジスタ(入力レジスタ)
R−X3:X3レジスタ
R−X4:X4レジスタ
R−X5:X5レジスタ
R−X5:X6レジスタ
R3:Uレジスタ(結果レジスタ)
want_el[1:0]:要求エレメント信号
mask:マスク信号
CSL-Adder:エレメント結合左シフト用加算器
op-switch:加算器のborrow値
AD−1:有効ビット加算器
sum[2:0]:有効ビット加算値
Compress:コンプレスデコーダ
cmpr#[2]:コンプレスデコード値,マスク信号
cmpr#[1:0]:コンプレスデコード値,エレメントデータ選択信号
E_#0〜E_#3:SIMD演算エレメント

Claims (7)

  1. 第1のオペランドデータと第2のオペランドデータを入力する入力回路と,要求エレメント信号に基づいていずれかのエレメントのオペランドデータを選択するエレメントデータセレクタとを,それぞれ有する第1〜第N(Nは3以上の複数)のエレメント回路と,
    前記各エレメントの入力回路から各エレメントの前記エレメントデータセレクタに前記各エレメントが入力するオペランドデータを供給するデータバスとを有し,
    前記第1〜第Nのエレメント回路内の各エレメントデータセレクタは,制御信号が第1の状態のとき,前記第2のオペランドデータに含まれる前記要求エレメント信号に基づいて,いずれかのエレメントの前記第1のオペランドデータをそれぞれ選択して出力し,
    前記第1〜第Nのエレメント回路のそれぞれは,前記制御信号が第2の状態のとき,自己のエレメント番号とシフト量に基づいて前記第1または第2のオペランドデータを選択して前記データバスに出力するオペランドセレクタと,前記自己のエレメント番号と前記シフト量とに基づいて前記要求エレメント信号を生成するエレメント連結左シフト用加算器とをそれぞれ有する,演算回路。
  2. さらに,前記制御信号が第3の状態のとき,前記第1〜第Nのエレメント回路が入力する第2のオペランドデータに含まれる有効ビットを加算する有効ビット加算器を有し,
    前記第1〜第Nのエレメント回路それぞれは,前記制御信号が第3の状態のとき,前記有効ビット加算器が出力する加算値を,前記エレメントデータセレクタの出力に代えて,出力する加算値セレクタを有する,請求項1に記載の演算回路。
  3. 前記第1〜第Nのエレメント回路それぞれは,前記エレメントデータセレクタの出力または全てゼロのデータのいずれかを選択するマスクセレクタを有し,
    さらに,前記制御信号が第4の状態のとき,前記第1〜第Nのエレメント回路が入力する第2のオペランドデータに含まれる有効ビットに基づいて,マスク信号とエレメントデータ選択信号を有するコンプレスデコード信号を前記第1〜第Nのエレメント回路別に生成するコンプレスデコーダを有し,
    前記第1〜第Nのエレメント回路それぞれは,前記制御信号が第4の状態のとき,前記エレメントデータ選択信号を前記要求エレメント信号に代えて選択する第1のコンプレスセレクタと,前記マスク信号を前記マスクセレクタに出力して前記全てゼロのデータを選択させる第2のコンプレスセレクタとを有する,請求項1または2に記載の演算回路。
  4. 第1のオペランドデータと第2のオペランドデータを入力する入力回路と,要求エレメント信号に基づいていずれかのエレメントのオペランドデータを選択するエレメントデータセレクタとを,それぞれ有する第1〜第N(Nは3以上の複数)のエレメント回路と,
    前記各エレメントの入力回路から各エレメントの前記エレメントデータセレクタに前記各エレメントが入力するオペランドデータを供給するデータバスとを有し,
    前記第1〜第Nのエレメント回路内の各エレメントデータセレクタは,制御信号が第1の状態のとき,前記第2のオペランドデータに含まれる前記要求エレメント信号に基づいて,いずれかのエレメントの前記第1のオペランドデータを選択して出力し,
    さらに,前記制御信号が第3の状態のとき,前記第1〜第Nのエレメント回路が入力する第2のオペランドデータに含まれる有効ビットを加算する有効ビット加算器を有し,
    前記第1〜第Nのエレメント回路のそれぞれは,前記制御信号が第3の状態のとき,前記有効ビット加算器が出力する加算値を,前記エレメントデータセレクタの出力に代えて,出力する加算値セレクタを有する,演算回路。
  5. 第1のオペランドデータと第2のオペランドデータを入力する入力回路と,要求エレメント信号に基づいていずれかのエレメントのオペランドデータを選択するエレメントデータセレクタと,前記エレメントデータセレクタの出力または全てゼロのデータのいずれかを選択するマスクセレクタとを,それぞれ有する第1〜第N(Nは3以上の複数)のエレメント回路と,
    前記各エレメントの入力回路から各エレメントの前記エレメントデータセレクタに前記各エレメントが入力するオペランドデータを供給するデータバスとを有し,
    前記第1〜第Nのエレメント回路内の各エレメントデータセレクタは,制御信号が第1の状態のとき,前記第2のオペランドデータに含まれる前記要求エレメント信号に基づいて,いずれかのエレメントの前記第1のオペランドデータを選択して出力し,前記各マスクセレクタは,前記制御信号が第1の状態のとき,前記エレメントデータセレクタの出力を選択し,
    さらに,前記制御信号が第4の状態のとき,前記第1〜第Nのエレメント回路が入力する第2のオペランドデータに含まれる有効ビットに基づいて,マスク信号とエレメントデータ選択信号を有するコンプレス信号を生成するコンプレスデコーダを有し,
    前記第1〜第Nのエレメント回路のそれぞれは,前記制御信号が第4の状態のとき,前記エレメントデータ選択信号を前記要求エレメント信号に代えて選択する第1のコンプレスセレクタと,前記マスク信号を前記マスクセレクタに出力して前記全てゼロのデータを選択させる第2のコンプレスセレクタとを有する,演算回路
  6. 第1のオペランドデータを入力する第1のオペランドレジスタと,第2のオペランドデータを入力する第2のオペランドレジスタと,前記第1,第2のオペランドデータを入力して演算する演算器と,前記演算器が出力する演算結果を格納する結果レジスタとをそれぞれ有する第1〜第N(Nは3以上の整数)のSIMD演算エレメントと,
    前記第1のオペランドデータと前記第2のオペランドデータを入力する入力回路と,要求エレメント信号に基づいていずれかのエレメントのオペランドデータを選択するエレメントデータセレクタと,前記エレメントデータセレクタの出力または全てゼロのデータのいずれかを選択するマスクセレクタとを,それぞれ有する第1〜第Nのエレメント回路と,
    前記各エレメントの入力回路から各エレメントの前記エレメントデータセレクタに前記各エレメントが入力するオペランドデータを供給するデータバスとを有し,
    前記第1〜第Nのエレメント回路内の各エレメントデータセレクタは,前記第2のオペランドデータに含まれる前記要求エレメント信号に基づいて,いずれかのエレメントの前記第1のオペランドデータを選択し,前記各マスクセレクタは,前記選択する前記エレメントデータセレクタの出力または全てゼロのデータのいずれかを前記結果レジスタに出力する,演算回路。
  7. 第1のオペランドデータを入力する第1のオペランドレジスタと,第2のオペランドデータを入力する第2のオペランドレジスタと,前記第1,第2のオペランドデータを入力して演算する演算器と,前記演算器が出力する演算結果を格納する結果レジスタとをそれぞれ有する第1〜第N(Nは3以上の整数)のSIMD演算エレメントと,
    前記第1のオペランドデータと前記第2のオペランドデータを入力する入力回路と,要求エレメント信号に基づいていずれかのエレメントのオペランドデータを選択するエレメントデータセレクタと,前記エレメントデータセレクタの出力または全てゼロのデータのいずれかを選択するマスクセレクタとを,それぞれ有する第1〜第Nのエレメント回路と,
    前記各エレメントの入力回路から各エレメントの前記エレメントデータセレクタに前記各エレメントが入力するオペランドデータを供給するデータバスとを有する演算回路の制御方法において,
    前記第1〜第Nのエレメント回路内の各エレメントデータセレクタは,前記第2のオペランドデータに含まれる前記要求エレメント信号に基づいて,いずれかのエレメントの前記第1のオペランドデータを選択し,
    前記各マスクセレクタは,前記選択する前記エレメントデータセレクタの出力または全てゼロのデータのいずれかを前記結果レジスタに出力する,演算回路の制御方法。
JP2014207364A 2014-10-08 2014-10-08 演算回路及び演算回路の制御方法 Active JP6308095B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2014207364A JP6308095B2 (ja) 2014-10-08 2014-10-08 演算回路及び演算回路の制御方法
US14/833,602 US10592247B2 (en) 2014-10-08 2015-08-24 Arithmetic circuit and control method with full element permutation and element concatenate shift left
EP15182753.2A EP3007060A3 (en) 2014-10-08 2015-08-27 Arithmetic circuit and control method for arithmetic circuit
CN201510594336.XA CN105512092A (zh) 2014-10-08 2015-09-17 算术电路和用于算术电路的控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014207364A JP6308095B2 (ja) 2014-10-08 2014-10-08 演算回路及び演算回路の制御方法

Publications (2)

Publication Number Publication Date
JP2016076165A JP2016076165A (ja) 2016-05-12
JP6308095B2 true JP6308095B2 (ja) 2018-04-11

Family

ID=54035145

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014207364A Active JP6308095B2 (ja) 2014-10-08 2014-10-08 演算回路及び演算回路の制御方法

Country Status (4)

Country Link
US (1) US10592247B2 (ja)
EP (1) EP3007060A3 (ja)
JP (1) JP6308095B2 (ja)
CN (1) CN105512092A (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019074185A1 (en) * 2017-10-12 2019-04-18 Samsung Electronics Co., Ltd. ELECTRONIC APPARATUS AND CONTROL METHOD THEREOF
CN108052483B (zh) 2017-12-29 2021-10-22 南京地平线机器人技术有限公司 用于数据统计的电路单元、电路模块和装置
US11915125B2 (en) * 2019-10-31 2024-02-27 SK Hynix Inc. Arithmetic devices for neural network
US11954457B2 (en) 2019-10-31 2024-04-09 SK Hynix Inc. Arithmetic devices for neural network including a function storage circuit and an activation function circuit
US12014184B2 (en) 2019-10-31 2024-06-18 SK Hynix Inc. Arithmetic devices for neural network including an input distribution signal generation circuit, an output distribution signal generation circuit, and an output distribution signal compensation circuit
US20210133546A1 (en) 2019-10-31 2021-05-06 SK Hynix Inc. Arithmetic devices for neural network
CN111158756B (zh) 2019-12-31 2021-06-29 百度在线网络技术(北京)有限公司 用于处理信息的方法和装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07110798A (ja) * 1993-08-19 1995-04-25 Kofu Nippon Denki Kk 並列処理システム
JP2002229962A (ja) 2001-02-06 2002-08-16 Ricoh Co Ltd 総和値とピーク値を検出するsimd型マイクロプロセッサ
ATE404923T1 (de) 2001-03-02 2008-08-15 Mtek Vision Co Ltd Eine anordnung, um in einem datenprozessor den zugriff zu steuern
US7716264B2 (en) * 2005-08-16 2010-05-11 International Business Machines Corporation Method and apparatus for performing alignment shifting in a floating-point unit
JP4232838B2 (ja) * 2007-03-29 2009-03-04 日本電気株式会社 再構成可能なsimd型プロセッサ
KR101098758B1 (ko) * 2007-09-20 2011-12-26 서울대학교산학협력단 Fp-ra를 구성하는 pe 구조 및 그 fp-ra제어하는 fp-ra 제어 회로
GB0809192D0 (en) * 2008-05-20 2008-06-25 Aspex Semiconductor Ltd Improvements to data compression engines

Also Published As

Publication number Publication date
US10592247B2 (en) 2020-03-17
JP2016076165A (ja) 2016-05-12
US20160103680A1 (en) 2016-04-14
CN105512092A (zh) 2016-04-20
EP3007060A2 (en) 2016-04-13
EP3007060A3 (en) 2016-11-02

Similar Documents

Publication Publication Date Title
JP6308095B2 (ja) 演算回路及び演算回路の制御方法
US10417004B2 (en) Pipelined cascaded digital signal processing structures and methods
US7302627B1 (en) Apparatus for efficient LFSR calculation in a SIMD processor
KR20080015836A (ko) 구성가능한 프로세싱을 위한 장치 및 방법
US20130212354A1 (en) Method for efficient data array sorting in a programmable processor
EP0901068B1 (en) Near-orthogonal dual-mac instruction set architecture with minimal encoding bits
JP2014530408A (ja) プロセッシング装置及びスウィズルパターン生成器
US5844828A (en) Shift circuit and system having the same
US6675286B1 (en) Multimedia instruction set for wide data paths
US20120254271A1 (en) Arithmetic operation circuit and method of converting binary number
CN110858137B (zh) 除以整数常数的浮点除法
JP3940714B2 (ja) 演算装置、および、暗号・復号演算装置
CN113485751B (zh) 执行伽罗瓦域乘法的方法、运算单元和电子装置
JP5193358B2 (ja) 多項式データ処理演算
US9697005B2 (en) Thread offset counter
JP6829838B2 (ja) 演算装置及び演算システム
US20070233767A1 (en) Rotator/shifter arrangement
CN109977701B (zh) 一种定浮点运算装置
US8892623B2 (en) Data processing apparatus and method
JP2008102715A (ja) 演算装置
US20150039665A1 (en) Data processing apparatus and method for performing a narrowing-and-rounding arithmetic operation
JP2014164659A (ja) プロセッサ
WO2013095259A1 (en) Vector execution unit for digital signal processor
US8150949B2 (en) Computing apparatus
JP5116499B2 (ja) 演算処理回路

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170704

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180205

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180226

R150 Certificate of patent or registration of utility model

Ref document number: 6308095

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150