JPWO2013057872A1 - シャッフルパターン生成回路、プロセッサ、シャッフルパターン生成方法、命令 - Google Patents

シャッフルパターン生成回路、プロセッサ、シャッフルパターン生成方法、命令 Download PDF

Info

Publication number
JPWO2013057872A1
JPWO2013057872A1 JP2013511424A JP2013511424A JPWO2013057872A1 JP WO2013057872 A1 JPWO2013057872 A1 JP WO2013057872A1 JP 2013511424 A JP2013511424 A JP 2013511424A JP 2013511424 A JP2013511424 A JP 2013511424A JP WO2013057872 A1 JPWO2013057872 A1 JP WO2013057872A1
Authority
JP
Japan
Prior art keywords
index
shuffle pattern
bit
shuffle
signal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013511424A
Other languages
English (en)
Other versions
JP5988222B2 (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.)
Panasonic Intellectual Property Management Co Ltd
Original Assignee
Panasonic Intellectual Property Management Co 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 Panasonic Intellectual Property Management Co Ltd filed Critical Panasonic Intellectual Property Management Co Ltd
Priority to JP2013511424A priority Critical patent/JP5988222B2/ja
Publication of JPWO2013057872A1 publication Critical patent/JPWO2013057872A1/ja
Application granted granted Critical
Publication of JP5988222B2 publication Critical patent/JP5988222B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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
    • G06F7/766Generation of all possible permutations
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

シフト複製部は、入力された4個(ビット幅は8ビット)のインデックス列(702)に基づいて、各インデックスを1ビット左ビットシフトし、各インデックスを2個ずつに複製したインデックス列(902)を出力する。そして、加算器は、インデックス列(902)に左端から順に1、0、1、0、1、0、1、0の値を加算したシャッフルパターン(703)を出力する。

Description

本発明は、シャッフル命令に用いるシャッフルパターンを生成するシャッフルパターン生成回路に関する。
複数のデータ要素がパッキングされたものが1つのデータとして入力されるプロセッサ(例えば、SIMD(Single Instruction Multiple Data)プロセッサ)においては、この1つのデータ内でのデータ要素の並び替えが必要となる場合がある。このような場合のために、データ要素を並び替えるシャッフル命令という命令がある。
シャッフル命令の一例として、非特許文献1記載のPSHUFB命令の動作例を説明する。
図1に示すように、PSHUFB命令は、シャッフルパターン101と、入力パックデータ102とを入力データとして、出力パックデータ103を出力する命令である。
シャッフルパターン101のインデックスの個数は8個で、各インデックスのビット幅は8ビットである。また、入力パックデータ102および出力パックデータ103は、データ要素の個数は8個で、各データ要素のビット幅は8ビットである。
入力パックデータ102の各データ要素位置の番号は、右端から左端へとかけてそれぞれ0、1、2、...、7と表される。この番号は、対応するデータ要素が、シャッフルパターン101のどのインデックスにシャッフルされるかを示すものである。
PSHUFB命令を実行すると、例えば、入力パックデータ102のデータ要素位置の左端の「A」のデータ要素には「7」というインデックスが対応しているので、シャッフルパターン101の右から2番目の「7」のインデックスの位置へとシャッフルされる。また、入力パックデータ102のデータ要素位置の右から2番目の「G」のデータ要素には「1」というインデックスが対応しているので、シャッフルパターン101の左から3番目と4番目の「1」のインデックスの位置へとシャッフルされる。
PSHUFB命令で用いられるシャッフルパターンの生成方法については、非特許文献1で開示されていない。
シャッフルパターンを生成するに際しては、高速化や低消費電力のためにもなるべく簡易な処理で実現できるようにすることが好ましい。
本発明は、このような背景の下になされたものであって、簡易な処理でシャッフルパターンを生成することができるシャッフルパターン生成回路を提供することを目的とする。
本発明に係るシャッフルパターン生成回路は、複数個のインデックスからなるインデックス列を入力とし、ビット数および複製の個数を示す信号を受け付けて、各インデックスを前記信号に示されるビット数だけ左ビットシフトし、かつ、各インデックスを前記信号に示される複製の個数ずつに複製した、インデックス列を出力するシフト複製部と、前記シフト複製部から出力されたインデックス列を入力とし、各インデックスに対する加算値を示す信号を受け付けて、前記各インデックスに対して前記信号に示される加算値を加算する加算部とを備えることを特徴としている。
本発明のシャッフルパターン生成回路によれば、左ビットシフト、複製および加算といった簡易な処理でもってシャッフルパターンを生成することができる。
PSHUFB命令の動作例を説明するための図 4×16シャッフルパターンを基にしたシャッフルを示す図 実施の形態1のシャッフルパターン生成回路を示す図 4×16シャッフルパターンから8×8シャッフルパターンを生成する流れを示す図 4×8シャッフルパターンを基にしたシャッフルを示す図 4×8シャッフルパターンから8×8シャッフルパターンを生成する流れを示す図 実施の形態2のシャッフルパターン生成回路を示す図 ビット単位信号の値と、各ブロックが行う処理内容の対応関係を表すテーブルを示す図 4×8シャッフルパターンから8×8シャッフルパターンを生成する流れを示す図 2×16シャッフルパターンから4×16シャッフルパターンを生成する流れを示す図 4×8シャッフルパターンから8×8シャッフルパターンを生成する流れを示す図 実施の形態2の変形例に係るシャッフルパターン生成回路を示す図 実施の形態2の変形例に係る4×8シャッフルパターンから8×8シャッフルパターンを生成する流れを示す図 (a)変形例に係るシャッフルパターン生成回路を示す図、(b)ビット単位信号A、Bの各値と、各ブロックが行う処理内容の対応関係を表すテーブルを示す図 実施の形態3のシャッフルパターン生成回路を示す図 4×16シャッフルパターンから8×8シャッフルパターンを生成する流れを示す図 2×32シャッフルパターンから4×16シャッフルパターンを生成する流れを示す図 2×32シャッフルパターンから8×8シャッフルパターンを生成する流れを示す図 実施の形態4のシャッフルパターン生成回路を示す図 2×8インデックステーブルを示す図 4×8インデックステーブルを示す図 実施の形態5のプロセッサを示す図 シャッフルパターン生成命令のフォーマットを示す図 シャッフルパターン生成命令のビットマップを示す図 シャッフルパターン生成方法の処理の流れ図 (a)シャッフルパターン生成命令のフォーマットを示す図(b)シャッフルパターン生成命令のビットマップを示す図
以下、本発明の実施の形態について、図面を参照しながら説明する。
(実施の形態1)
上述したPSHUFB命令は、それぞれビット幅が8ビットの8個のデータ要素に対するシャッフル命令であるところ、入力パックデータのデータ要素の各ビット幅や個数がPSHUFB命令の仕様と異なる場合には、上記PSHUFB命令をそのまま実行しにくいことがある。
この場合、シャッフルパターンのインデックスの各ビット幅や個数を、PSHUFB命令の仕様に合わせて生成し直す必要がある。なお、ビット幅や個数が異なってもシャッフルできるように、多種類のシャッフル命令を持たせるようにする対応もあり得るが、このような対応を実現できるかどうかはプロセッサの仕様に大きく依存するので、本実施の形態では採用しないこととしている。
このようなシャッフルパターンの生成が求められる場面の例を図2に示す。
図2の例では、それぞれビット幅16ビットの4個のインデックスからなる入力シャッフルパターン202から、それぞれビット幅8ビットの8個のインデックスからなる出力シャッフルパターン203を生成している。このようにしてPSHUFB命令の仕様に合ったシャッフルパターンを生成している。
そして、生成した出力シャッフルパターン203を用いて、実際は4個のビット幅16ビットの入力パックデータ204を、8個のビット幅8ビットのパックデータとみなしてシャッフルを行い、出力パックデータ205を得ている。
本実施の形態1では、入力シャッフルパターン202から出力シャッフルパターン203を生成するというように、あるシャッフルパターンから、PSHUFB命令の仕様に沿ったインデックスの個数やビット幅を有するシャッフルパターンを生成する構成について説明する。
図3に示すように、本実施の形態1のシャッフルパターン生成回路301は、入力シャッフルパターン202とビット単位信号304を入力とし、出力シャッフルパターン203を出力とする。
ビット単位信号304は、左ビットシフトのビット数、ビット幅の拡張または縮小の数、および各インデックスに加算する値など、シャッフルパターン生成回路301内の各ブロックの挙動を制御する信号である。
ビット単位信号304にしたがって、シフタ305は左ビットシフトを行い、ビット変更器306はビット幅の拡張または縮小を行い、加算器307は各インデックスに値を加算し、インターリーバー308はインデックスのインターリーブを行う。
図4に、シャッフルパターン生成回路301にて、4×16シャッフルパターン202から8×8シャッフルパターン203を生成する例を示す。なお、「A×Bシャッフルパターン」とは、インデックスの個数がA、各インデックスのビット幅がBであるシャッフルパターンを示す。
はじめに、シフタ305は、4×16シャッフルパターン202を1ビット左ビットシフトしたインデックス列401を生成する。
続いて、加算器307は、インデックス列401の各インデックスを1加算することでインデックス列402を生成する。
そして、ビット変更器306は、インデックス列401とインデックス列402のビット幅を16ビットから8ビットへと半分に縮小し、それぞれインデックス列404とインデックス列403を生成する。
最後に、インターリーバー308は、インデックス列403とインデックス列404のデータ要素をインターリーブ(交互に配置)し、8×8シャッフルパターン203を生成する。
シャッフルパターン生成が必要な他の例を、図5を用いて説明する。図5は、4×8シャッフルパターン202から生成した8×8シャッフルパターン203を用いて、4個の16ビットのデータ要素からなる入力パックデータ502をシャッフルし、4個の16ビットのデータ要素からなる出力パックデータ503を出力する例である。
このように、4×8シャッフルパターン202の総ビット幅(32ビット)と、入力パックデータ502のデータ要素の総ビット幅(64ビット)が異なるのは、4個の8ビットデータに対してSIMD演算を行った結果、演算結果の必要ビット数が増加し、データ要素のビット幅を拡張する必要がある場合などに起こる。ここで、上記PSHUFB命令のような、8個の8ビットデータ要素に対するシャッフル命令しかない場合、4個の16ビットデータ要素からなる入力パックデータ402を、8個の8ビットデータ要素からなるパックデータとみなしてシャッフルしなくてはならない。そこで、4×8シャッフルパターン202から8×8シャッフルパターン203を生成し、生成した8×8シャッフルパターン203を用いて入力パックデータ502を出力パックデータ503へとシャッフルしている。
図6に、シャッフルパターン生成回路301にて、4×8シャッフルパターン202から8×8シャッフルパターン203を生成する例を示す。
はじめに、シフタ305は、4×8シャッフルパターン202を1ビット左ビットシフトしたインデックス列601を生成する。
続いて、加算器307は、インデックス列601に1加算したインデックス列602を生成する。
そして、ビット変更器306は、インデックス列601とインデックス列602をそのままインターリーバー308に渡す。
最後に、インターリーバー308は、インデックス列601とインデックス列602のデータ要素をインターリーブ(交互に配置)し、8×8シャッフルパターン203を生成する。
以上、説明したように、本実施の形態によれば、シャッフルパターンのインデックスの各ビット幅や個数を、PSHUFB命令などシャッフル命令の仕様に合わせて生成することができる。これにより適切なシャッフルを実現することができる。
(実施の形態2)
実施の形態2は、より簡易な手法でシャッフルパターンを生成する。
図7は、実施の形態2におけるシャッフルパターン生成回路の機能ブロック図である。
シャッフルパターン生成回路701は、入力シャッフルパターン702とビット単位信号704を入力とし、出力シャッフルパターン703を出力とし、シフト複製部705(シフタ706および複製器707を含む。)と加算器708を備える。
ビット単位信号704は、左ビットシフトのビット数、各インデックスの複製の個数、および各インデックスに加算する値などを制御する信号である。
シフタ706、複製器707および加算器708は、このビット単位信号704を受け付けて、それぞれ左ビットシフト、各インデックスの複製および各インデックスへの値の加算を行う。ビット単位信号704の値と、各ブロックの挙動との対応を図8のテーブルに示す。
テーブル801は、「ビット単位信号」802の項目に対応して、シフタ706が行うべき「左ビットシフトのビット数」803、複製器707が行うべき「複製の個数」804、加算器708が加算を行うべき「各インデックスに加算する値」805を示す。シフタ706、複製器707および加算器708には、このようにビット単位信号の値に応じて行うべき処理が設定されている。
ビット単位信号0、2は、4×8シャッフルパターンから8×8シャッフルパターンの生成する場合、ビット単位信号1は、2×16シャッフルパターンから4×16シャッフルパターンの生成する場合に対応している。
このようなビット単位信号を複数用意しておくことで、シャッフル命令の仕様に合わせたシャッフルパターンを生成することができる。ビット単位信号の値ごとのシャッフルパターン生成回路701が行う処理の流れについて以下説明する。
<ビット単位信号0の場合>
図9は、4×8シャッフルパターン702から8×8シャッフルパターン703を生成する流れを示す。
まず、シフタ706は、4×8シャッフルパターン702の各インデックスを1ビット左ビットシフトして下位8ビットを抽出することで、インデックス列901を生成する。
続いて、複製器707は、シフタ706でシフトされたインデックス列901の各インデックスを2個ずつ複製し、インデックス列902を生成する。
最後に、加算器708は、複製器707で複製後のインデックス列902を受け取り、インデックス列902に左端から1、0、1、0、1、0、1、0を加算することで、8×8シャッフルパターン703を生成する。
<ビット単位信号1の場合>
図10は、2×16シャッフルパターン702から4×16シャッフルパターン703を生成する流れを示す。
まず、シフタ706は、2×16シャッフルパターン702の各インデックスを1ビット左ビットシフトして下位16ビットを抽出することで、インデックス列1001を生成する。
続いて、複製器707は、シフタ706でシフトされたインデックス列1001の各インデックスを2個ずつ複製し、インデックス列1002を生成する。
最後に、加算器708は、複製器707で複製後のインデックス列1002を受け取り、各インデックスに左端から1、0、1、0を加算することで、4×16シャッフルパターン703を生成する。
<ビット単位信号2の場合>
図9の例では、4個のインデックスから8個のインデックスを持つシャッフルパターンの生成を示したが、例えば2個の有効インデックスから8個のインデックスを持つシャッフルパターンの生成することもできる。この例をビット単位信号2の場合として説明する。
図11は、4×8シャッフルパターン702から8×8シャッフルパターン703を生成する流れを示す。
4×8シャッフルパターン702は、それぞれ8ビットの4個のインデックスからなる。
シフタ706は、ビット単位信号2という信号を受け付けると、入力されるシャッフルパターンのうちで、左から2番目のインデックスA0と左から4番目のインデックスA1とを有効なインデックスとして扱う旨が予め設定されている。
このシフタ706は、4×8シャッフルパターン702の有効なインデックスA0とA1を2ビット左ビットシフトして下位8ビットを抽出することで、インデックス列1101を生成する。
続いて、複製器707は、シフタ706でシフトされたインデックス列1101の各インデックスを4個ずつ複製し、インデックス列1102を生成する。
そして、加算器708は、複製器707で複製後のインデックス列1102を受け取り、各インデックスに左端から3、2、1、0、3、2、1、0を加算することで、8×8シャッフルパターン703を生成する。
以上説明したように、本実施の形態によれば、直列に接続したシフタ706、複製器707、加算器708によりシャッフルパターンを生成することにより、高速な生成が可能となる。また、左ビットシフト、複製、加算といった簡単な処理の組み合わせで足りるので、実施の形態1と比べて命令のサイクル数の削減や動作周波数の向上ができる。
また、ビット単位信号704で各ブロックの挙動を制御することによって、同一の回路構成でありながら、インデックスの個数や各インデックスのビット幅が相異なる多様なシャッフルパターン生成が可能となる。
なお、本実施の形態において、シフタ706、複製器707、加算器708の順に接続して処理を行っているが、例えば、複製器707でインデックスを複製した後にシフタ706でシフトするなど、処理の順序が異なってもよい。一例として、図12に示すシャッフルパターン生成回路701aは、複製器707で複製した後にシフタ706で左ビットシフトするシフト複製部705aを備える。
このようなシャッフルパターン生成回路701aにおいて、図9同様に、4×8シャッフルパターン702から8×8シャッフルパターン703を生成する流れを図13に示す。
図13では、まず、複製器707は、4×8シャッフルパターン702の各インデックスを2個ずつ複製し、インデックス列1301を生成する。
そして、シフタ706は、インデックス列1301を1ビット左ビットシフトして下位8ビットを抽出することで、インデックス列1302を生成する。
最後に、加算器708は、インデックス列1302を受け取り、インデックス列1302に左端から1、0、1、0、1、0、1、0を加算することで、8×8シャッフルパターン703を生成する。
また、本実施の形態において、ビット単位信号704を単一の信号としたが、シフタ706、複製器707、加算器708に対して個別または一部個別の信号を入力としてもよい。
また、ビット単位信号704を、入力シャッフルパターンを示すビット単位信号A、出力シャッフルパターンを示すビット単位信号Bと分けて実装してもよい。
このような実装の例を、図14を用いて説明する。
図14(a)に示すように、シフト複製部1405と加算器1408とを備えるシャッフルパターン生成回路1411は、ビット単位信号A1404aとビット単位信号B1404bとを入力とする。
図14(b)に示すように、ビット単位信号A1404aとビット単位信号B1404bは、それぞれ入力シャッフルパターンまたは出力シャッフルパターンの、インデックスの個数および各インデックスのビット幅を示す。
このビット単位信号A1404aとビット単位信号B1404bとの値の組み合わせに対応して、シフト複製部1405が行うべき「左ビットシフトのビット数」803や「複製の個数」804、加算器1408が加算を行うべき「各インデックスに加算する値」805が設定されている。
なお、本実施の形態で説明した、入力シャッフルパターンや出力シャッフルパターンのインデックスの個数や各インデックスのビット幅は一例であり、これに限られない。ビット幅を拡張したり、各ブロック(シフタ706、複製器707、加算器708)で処理するインデックスの個数を増やしたりすることもあり得る。あるいは、入力シャッフルパターンや出力シャッフルパターンのビット幅を縮小し、各ブロック(シフタ706、複製器707、加算器708)で処理するインデックスの個数を減らすこともあり得る。このようにビット幅やインデックスの個数を調整することにより多様なシャッフルパターンを生成することができる。
なお、本実施の形態においては、左ビットシフトによるあふれ(オーバーフロー)などを考慮して、シフタ706において結果の下位ビットを抽出するとしているが、シフタ706に限らず、複製器707や加算器708においても下位ビット抽出処理を行ってもよいし、それぞれで行わずに例えば加算の後などに一括して下位ビット抽出を行ってもよい。
また、下位ビット抽出に代えて、またはこれと組み合わせて飽和処理(ある値が指定されたビット幅の範囲の最大値または最小値を超えた場合に、ある値を最大値または最小値に置き換える処理)を行うようにしてもよい。
なお、図8の例では、ビット単位信号704のビット数は複数ビットであり、3種類以上のシャッフルパターン生成に対応していたが、ビット単位信号704のビット数はこれに限られない。例えば、1ビットとしてもよい。
また、本実施の形態において、シフタ706、複製器707、加算器708を専用の回路としているが、他の演算回路とすべてまたは一部を共用してもよい。
なお、本実施の形態において、加算器708において各インデックスに右端から0、1、2、…と加算する処理を、左端から0、1、2、…と加算する処理に変更することで、データ内のデータ要素のインデックスを左端から0、1、2、…とするシャッフルパターンの生成にも容易に対応できる。
(実施の形態3)
実施の形態3は、実施の形態2のシャッフルパターン生成回路に対して、ビット幅の縮小または拡張を行うビット変更器をさらに備えることで、ビット幅の縮小や拡張にも対応したシャッフルパターンの生成を図るものである。
図15に示すように、シャッフルパターン生成回路1501は、入力シャッフルパターン1502とビット単位信号1504を入力とし、出力シャッフルパターン1503を出力とし、シフト複製部1505(シフタ1506および複製器1507を含む。)と加算器1508とビット変更器1509を備える。
ビット単位信号1504は、左ビットシフトのビット数、各インデックスの複製の個数、および各インデックスに加算する値、ビット幅の縮小(拡張)の幅などを制御する信号である。
シフタ1506、複製器1507、加算器1508およびビット変更器1509は、このビット単位信号1504を受け付けて、それぞれ左ビットシフト、各インデックスの複製、各インデックスへの値の加算およびビット幅の変更を行う。
<ビット単位信号0の場合>
ビット単位信号1504が0の場合の動作を説明する。
図16は、4×16シャッフルパターン1502から8×8シャッフルパターン1503を生成する流れを示す。
まず、シフタ1506は、4×16シャッフルパターン1502の各インデックスを1ビット左ビットシフトして下位16ビットを抽出することで、インデックス列1601を生成する。
続いて、複製器1507は、インデックス列1601の各インデックスを2個ずつ複製し、インデックス列1602を生成する。
そして、加算器1508は、インデックス列1602に対して、各インデックスに左端から1、0、1、0、1、0、1、0を加算する。
最後に、ビット変更器1509は、加算により得られたインデックス列1603に対して、各インデックスの16ビットのうちの下位8ビットを抽出し、8×8シャッフルパターン1503を生成する。
<ビット単位信号1の場合>
ビット単位信号1504が1の場合の動作を説明する。
図17は、2×32シャッフルパターン1502から4×16シャッフルパターン1503を生成する流れを示す。
まず、シフタ1506は、2×32シャッフルパターン1502の各インデックスを1ビット左ビットシフトして下位32ビットを抽出することで、インデックス列1701を生成する。
続いて、複製器1507は、インデックス列1701の各インデックスを2個ずつ複製し、インデックス列1702を生成する。
そして、加算器1508は、インデックス列1702に対して、各インデックスに左端から1、0、1、0、を加算する。
最後に、ビット変更器1509は、加算により得られたインデックス列1703に対して、各インデックスの32ビットのうち下位16ビットを抽出し、4×16シャッフルパターン1503を生成する。
<ビット単位信号2の場合>
図16、図17のような例に限らず、2×32シャッフルパターンから8×8シャッフルパターンの生成も可能である。この例をビット単位信号2の場合として説明する。
図18は、2×32シャッフルパターン1502から8×8シャッフルパターン1503を生成する流れを示す。
まず、シフタ1506は、2×32シャッフルパターン1502の各インデックスを2ビット左ビットシフトして下位32ビットを抽出することで、インデックス列1801を生成する。
続いて、複製器1507は、インデックス列1801の各インデックスを4個ずつ複製し、インデックス列1802を生成する。
そして、加算器1508は、インデックス列1802に対して、各インデックスに左端から3、2、1、0、3、2、1、0を加算する。
最後に、ビット変更器1509は、加算により得られたインデックス列1803に対して、各インデックスの32ビットのうち下位8ビットを抽出し、8×8シャッフルパターン1503を生成する。
以上説明したように、本実施の形態によれば、直列に接続したシフタ1506、複製器1507、加算器1508、ビット変更器1509によりシャッフルパターンを生成することにより、高速な生成が可能となる。
また、特に、ビット変更器1509を備えるので、入力シャッフルパターンと出力シャッフルパターンのビット幅が同じである場合も高速なシャッフルパターン生成が可能となる。
また、ビット単位信号1504で各ブロックの挙動を制御することによって、同一の回路構成でありながら、インデックスの個数や各インデックスのビット幅が相異なる多様なシャッフルパターン生成が可能となる。
なお、本実施の形態で説明した、入力シャッフルパターンや出力シャッフルパターンのインデックスの個数や各インデックスのビット幅は一例であり、これに限られない。ビット幅を拡張したり、各ブロック(シフタ1506、複製器1507、加算器1508、ビット変更器1509)で処理するインデックスの個数を増やしたりすることもあり得る。あるいは、入力シャッフルパターンや出力シャッフルパターンのビット幅を縮小し、各ブロック(シフタ1506、複製器1507、加算器1508、ビット変更器1509)で処理するインデックスの個数を減らすこともあり得る。
なお、本実施の形態において、シフタ1506、複製器1507、加算器1508、ビット変更器1509の順で処理を行っているが、処理の順番はこれに限られない。実施の形態2の図12のように、複製器1507とシフタ1506の処理の順番を反転させてもよい。また、ビット変更器1509はシフタ1506の前段または後段、複製器1507の前段または後段、加算器1508の前段または後段のどの位置にも挿入され得る。
なお、本実施の形態において、ビット単位信号1504を複数ビットの信号としたが、ビット数はこれに限られない。例えば、0か1かを示す1ビットのビット単位信号としてもよい。
なお、本実施の形態において、ビット単位信号1504を単一の信号としたが、シフタ1506、複製器1507、加算器1508、ビット変更器1509に対して個別または一部個別の信号を入力としてもよい。また、図14のように入力シャッフルパターンを示すビット単位信号Aと、出力シャッフルパターンを示すビット単位信号Bとを用いても構わない。
なお、本実施の形態において、シフタ1506、複製器1507、加算器1508、ビット変更器1509を専用の回路としているが、他の演算回路とすべてまたは一部を共用してもよい。
その他、実施の形態2の後半で述べた様々な構成を本実施の形態に組み合わせてもよい。
(実施の形態4)
図19は、実施の形態4におけるシャッフルパターン生成回路の図である。
図19において、シャッフルパターン生成回路1901は、32ビットの入力シャッフルパターン1902から64ビットの出力シャッフルパターン1903を生成する。シャッフルパターン生成回路1901は、2×8インデックステーブル1905、4×8インデックステーブル1906、インデックステーブル参照器1907から構成される。
2×8インデックステーブル1905は、4個の8ビットインデックスを入力とし、入力インデックスそれぞれに対して、2個の8ビットインデックスを出力する。
図20に2×8インデックステーブル1905が保持するデータを示す。2×8インデックステーブル1905は、例えば入力された8ビットインデックスが0の場合、1と0の2個の8ビットインデックスを出力する。
4×8インデックステーブル1906は、2個の16ビットインデックスを入力とし、入力インデックスそれぞれに対して、4個の8ビットインデックスを出力する。図21に4×8インデックステーブル1906が保持するデータを示す。4×8インデックステーブル1906は、例えば入力された16ビットインデックスが0の場合、3、2、1、0の4個の8ビットインデックスを出力する。
インデックステーブル参照器1907は、入力されたビット単位信号1904を受け付けて、このビット単位信号1904が示すテーブルへとインデックスを渡す。そして、渡したインデックスに応じたインデックスをテーブルから受け取り、受け取ったインデックスを基にシャッフルパターンを生成する。
本実施の形態では、インデックステーブル参照器1907は、ビット単位信号1904が0の場合は2×8インデックステーブル1905へとインデックスを渡し、ビット単位信号1904が1の場合は4×8インデックステーブル1906へとインデックスを渡すものとする。以下、ビット単位信号1904が0の場合と1の場合それぞれの動作について説明する。
<ビット単位信号0の場合>
ビット単位信号1904が0の場合の動作を説明する。
入力シャッフルパターン1902は4個の8ビットのインデックスからなり、出力シャッフルパターン1903は8個の8ビットのインデックスからなる。インテックステーブル参照器1907は、シャッフルパターン1902の各インデックスを2×8インデックステーブル1905に渡す。
2×8インデックステーブル1905は、入力された1個のインデックスにつき2個のインデックスを出力し、インデックステーブル参照器1907に渡す。インデックステーブル参照器1907は、入力シャッフルパターンの左端のインデックスに対応するインデックス、その右隣のインデックスに対応するインデックス、と順に連結して、出力シャッフルパターン1903を生成する。
一例として、4個の8ビットのインデックスが、「0、1、2、3」とすると、
2×8インデックステーブル1905は、
「0」の入力インデックスから「1、0」、
「1」の入力インデックスから「3、2」、
「2」の入力インデックスから「5、4」、
「3」の入力インデックスから「7、6」、
の出力インデックスを出力する。
そして、インデックステーブル参照器1907は、これら4組の出力インデックスを左から順に連結して「1、0、3、2、5、4、7、6」というシャッフルパターンを生成する。
<ビット単位信号1の場合>
続いて、ビット単位信号1904が1の場合の動作を説明する。入力シャッフルパターン1902は2個の16ビットのインデックスからなり、出力シャッフルパターン1903は8個の8ビットのインデックスからなる。インテックステーブル参照器1907は、シャッフルパターン1902の各インデックスを4×8インデックステーブル1906に渡す。
4×8インデックステーブル1906は、入力された1個のインデックスにつき4個のインデックスを抽出し、インデックステーブル参照器1907に渡す。インデックステーブル参照器1907は、入力シャッフルパターンの左端のインデックスに対応するインデックス、その右隣のインデックスに対応するインデックス、と順に連結して、出力シャッフルパターン1903を生成する。
一例として、2個の16ビットのインデックスが、「0、1」とすると、
4×8インデックステーブル1906は、
「0」の入力インデックスから「3、2、1、0」、
「1」の入力インデックスから「7、6、5、4」、
の出力インデックスを出力する。
そして、インデックステーブル参照器1907は、これら2組の出力インデックスを左から順に連結して「3、2、1、0、7、6、5、4」というシャッフルパターンを生成する。
以上説明した実施の形態4に係る構成によれば、ビット単位信号1904によってインデックステーブルを切り替えることによって、複数のインデックスビット幅の組み合わせに対応したシャッフルパターン生成が可能となる。
なお、本実施の形態において、インデックステーブルに格納するインデックスの値やビット幅、1個のインデックスに対して出力されるインデックスの個数などは上で述べた値と異なってもよい。
なお、本実施の形態において、インデックステーブルの入力を複数個としたが、1個の入力だけを受け付けるインデックステーブルを複数持ってもよいし、テーブルではなく例えば多入力1出力セレクタなどの論理回路で構成してもよい。
なお、本実施の形態において、2×8インデックステーブル1905、4×8インデックステーブル1906、インデックステーブル参照器1907を専用の回路としているが、他の演算回路とすべてまたは一部を共用してもよい。
(実施の形態5)
図22は、実施の形態5のシャッフルパターン生成回路を含むプロセッサの図である。
図22において、プロセッサ2201は、32ビットの命令ビット列2202に対応する処理を行う。プロセッサ2201は、命令デコーダ2203、SIMDレジスタファイル2204、シャッフルパターン生成回路2205および2206、ALU2207、乗算器2208から構成される。シャッフルパターン生成回路2205は実施の形態2のシャッフルパターン生成回路701、シャッフルパターン生成回路2206は実施の形態3のシャッフルパターン生成回路1501と同じ構成である。
実施の形態2および3のシャッフルパターン生成回路701および1501における、入力シャッフルパターン702および1502がSIMDレジスタファイル2204から渡される入力シャッフルパターンに対応する。また、出力シャッフルパターン703および1503がSIMDレジスタファイル2204に渡す出力シャッフルパターン、ビット単位信号704および1504がビット単位信号2211および2212に対応する。
SIMDレジスタファイル2204は、32個の64ビットのSIMDレジスタを持ち、各SIMDレジスタはR0からR31で表す。
図23に、シャッフルパターン生成回路2205および2206を使用するシャッフルパターン生成命令の命令フォーマットを示す。
gensflptnl.8.8命令は、8×8シャッフルパターンから16×8シャッフルパターンを生成する命令である。8個の8ビットインデックスからなる入力シャッフルパターンをSIMDレジスタRaから取得し、16個の8ビットインデックスからなる出力シャッフルパターンを生成し、出力シャッフルパターンの上位64ビットをSIMDレジスタRb、下位64ビットをRbの次のレジスタ(Rb+1と表記)に格納する。
gensflptnl.16.16命令、gensflptnl.16.8命令も同様に、それぞれ、4×16シャッフルパターンから8×16シャッフルパターンを、4×16シャッフルパターンから16×8シャッフルパターンを生成する命令である。
gensflptn.16.8命令は、4×16シャッフルパターンから8×8シャッフルパターンを生成する命令である。4個の16ビットインデックスからなる入力シャッフルパターンをSIMDレジスタRaから取得し、8個の8ビットインデックスからなる出力シャッフルパターンを生成し、SIMDレジスタRbに格納する。
gensflptn.32.16命令、gensflptn.32.8命令も同様に、それぞれ、2×32シャッフルパターンから4×16シャッフルパターンを、2×32シャッフルパターンから8×8シャッフルパターンを生成する命令である。
gensflptnl.8命令、gensflptnl命令は、gensflptnl.8.8命令の別名である。また、gensflptnl.16命令はgensflptnl.16.16命令の別名である。同様に、gensflptn.16命令及びgensflptn命令はgensflptn.16.8命令の別名であり、gensflptn.32命令はgensflptn.32.16命令の別名である。
図24に、図23に示した命令フォーマットのビットマップを示す。ビットマップは、20ビットの命令識別コード、5ビットのRa領域、5ビットのRb領域、1ビットのIc領域、1ビットのId領域から構成される。
命令識別コードはgensflptnl命令またはgensflptn命令であることを示し、gensflptnl命令であれば0、gensflptn命令であれば1である。Ra領域は入力シャッフルパターンの格納レジスタを、Rb領域は出力シャッフルパターンの格納レジスタを示す。Ic領域は入力シャッフルパターンのインデックスのビット幅を示し、入力シャッフルパターンのインデックスのビット幅が16ならば0であり、32ならば1である。Id領域は出力シャッフルパターンのインデックスのビット幅を示し、出力シャッフルパターンのインデックスのビット幅が8ならば0であり、16ならば1である。
例として、プロセッサ2201におけるgensflptnl.8.8 R0:R1,R4命令の動作を説明する。命令デコーダ2203は、命令ビット列2202を取得し、命令識別コードからgensflptnl命令であることを検知する。そして、SIMDレジスタファイル2204に入力レジスタ番号信号2209、出力レジスタ番号信号2210を介して、入力および出力シャッフルパターンの格納SIMDレジスタがそれぞれR4およびR0であることを通知する。また、gensflptnl命令の場合はシャッフルパターン生成回路2205が駆動されるため、シャッフルパターン生成回路2205に、ビット単位信号2211を介して、入力および出力シャッフルパターンのインデックスのビット幅が8ビットであることを通知する。シャッフルパターン生成回路2206のビット単位信号2212には何も通知しない。SIMDレジスタファイル2204は、入力レジスタ番号信号2209に合わせてSIMDレジスタR4から64ビットのシャッフルパターンを取得し、シャッフルパターン生成回路2205に渡す。シャッフルパターン生成回路2205は、命令デコーダ2203からのビット単位信号2211に基づきシャッフルパターンを生成する。
シャッフルパターン生成回路2205は、実施の形態2のシャッフルパターン生成回路701と同じ動作をし、8×8シャッフルパターンから、16×8シャッフルパターンを生成する。SIMDレジスタファイルは、出力レジスタ番号信号2210に合わせて、シャッフルパターン生成回路2205から取得したシャッフルパターンの上位64ビットをSIMDレジスタR0に、下位64ビットをSIMDレジスタR1に格納する。
もう一つの例として、プロセッサ2201におけるgensflptn.16.8 R0,R4命令の動作を説明する。命令デコーダ2203は、命令ビット列2202を取得し、命令識別コードからgensflptn命令であることを検知する。そして、SIMDレジスタファイル2204に入力レジスタ番号信号2209、出力レジスタ番号信号2210を介して、入力および出力シャッフルパターンの格納SIMDレジスタがそれぞれR4およびR0であることを通知する。また、gensflptn命令の場合はシャッフルパターン生成回路2206が駆動されるため、シャッフルパターン生成回路2206に、ビット単位信号2212を介して、入力および出力シャッフルパターンのインデックスのビット幅がそれぞれ16ビット、8ビットであることを通知する。シャッフルパターン生成回路2205のビット単位信号2211には何も通知しない。SIMDレジスタファイル2204は、入力レジスタ番号信号2209に合わせてSIMDレジスタR4から64ビットのシャッフルパターンを取得し、シャッフルパターン生成回路2206に渡す。シャッフルパターン生成回路2206は、命令デコーダ2203からのビット単位信号2212に基づきシャッフルパターンを生成する。シャッフルパターン生成回路2206は、実施の形態3のシャッフルパターン生成回路1501と同じ動作をし、4×16シャッフルパターンから、8×8シャッフルパターンを生成する。SIMDレジスタファイルは、出力レジスタ番号信号2210に合わせて、シャッフルパターン生成回路2206から取得したシャッフルパターンをSIMDレジスタR0に格納する。
かかる構成によれば、シャッフルパターン生成を1命令で実行可能なプロセッサの実現が可能となる。
なお、本実施の形態において、シャッフルパターン生成回路2205はシャッフルパターン生成回路701と同じ構成、シャッフルパターン生成回路2206はシャッフルパターン生成回路1501と同じ構成であるとして説明したが、少なくともどちらか一方が実施の形態4で示すシャッフルパターン生成回路1901(図19)で構成されていてもよい。また、実施の形態2、3、4のいずれかのシャッフルパターン生成回路のみで構成されていてもよい。
なお、本実施の形態において、シャッフルパターン生成回路2205および2206、ALU2207、乗算器2208を持つとしたが、それぞれを複数持ってもよいし、他の演算器を持ってもよい。
また、ビット単位信号2211および2212を入力シャッフルパターンビット単位信号、出力シャッフルパターンビット単位信号などと分けて実装してもよい。また、例えばシャッフルパターン生成回路内のシフタのシフタ量などを直接指定する信号を持ってもよい。
なお、本実施の形態において、シャッフルパターン生成回路2205および2206を専用の回路としているが、ALU2207、乗算器2208や他の演算回路とすべてまたは一部を共用してもよい。
なお、本実施の形態において、SIMDレジスタファイル2204を持つとしたが、他の特殊なレジスタを持ってもよい。
なお、本実施の形態において、6種類の命令を持つとしたが、一部の命令を持ってもよいし、他のインデックスビット幅に対応したシャッフル命令を持ってもよい。
なお、本実施の形態において、一部の命令を別名として定義したが、記載のとおりに別名が対応しなくてもよいし、別名がなくてもよいし、別名とした命令のみを持つようにしてもよい。
なお、本実施の形態において、シャッフル命令のビットマップを、IcおよびIdに1ビットずつ割り当てたが、それぞれを複数ビットで示してもよい。
なお、本実施の形態において、ビットマップのIcおよびIdを別々のビット領域として示したが、1つの領域で示してもよい。また、例えば0の場合は8×8シャッフルパターンから16×8シャッフルパターン生成、1の場合は4×16シャッフルパターンから16×8シャッフルパターンの生成など、入力シャッフルパターンと出力シャッフルパターンのインデックスビット幅を組み合わせて指定する形式でもよい。
なお、本実施の形態において、ビットマップのIcおよびIdを命令識別コードと別のビットとして示したが、命令識別コードに含めてもよい。
なお、本実施の形態において、命令ビット列2202は32ビットとしたが、32以外のビット幅でもよい。
なお、本実施の形態において、SIMDレジスタファイル2204は32個の64ビットのレジスタを持つとしたが、32以外の個数、64以外のビット幅でもよい。
なお、図24に示すステップを含むシャッフルパターン方法として提供することも考えられる。
(実施の形態6)
本実施の形態では、実施の形態5の図23などで説明したシャッフルパターン生成に係る命令についてさらに詳しく説明する。
図26(a)は、シャッフルパターン生成命令のフォーマットを示す。
gensflptnl命令は、入力シャッフルパターンをSIMDレジスタRaから取得し、Rbの値に応じて規定される入出力のシャッフルパターンにしたがって出力シャッフルパターンを生成し、生成した出力シャッフルパターンの上位の所定数ビットをSIMDレジスタRcに下位の所定数ビットをRcの次のレジスタ(Rc+1と表記)に格納する。
gensflptn命令は、入力シャッフルパターンをSIMDレジスタRaから取得し、Rbの値に応じて規定される入出力のシャッフルパターンにしたがって出力シャッフルパターンを生成し、生成した出力シャッフルパターンをSIMDレジスタRcに格納する。
以下、命令の具体的な仕様について説明する。
(命令1)gensflptnl.8.8 Rb:Rb+1,Ra
(別名:gensflptnl.8、gensflptnl)
この命令は、Raの8x8シャッフルパターンから16x8シャッフルパターンを生成し、RbおよびRb+1に格納する。
本命令によれば、Raの8x8シャッフルパターンは、1ビット左シフトされ2個ずつ複製されて、1または0が選択加算されることにより、16x8シャッフルパターンが生成される。これは、シャッフルパターンの入力が8x8で出力が16x8であり、これは、図9で説明した入力が4×8で出力が8×8の処理と似ているため、入力・出力シャッフルパターンのイメージは図9を参照されたい。
なお、下記において、[B:A]は、A番目からB番目までのビット位置を示す。例えば、[63:56]は56番目から63番目までのビット位置を示す。また「<< 1」は、1ビット左ビットシフトを示す。

Rb[63:56] = ( Ra[63:56] << 1 ) + 1 ;
Rb[55:48] = ( Ra[63:56] << 1 ) + 0 ;
Rb[47:40] = ( Ra[55:48] << 1 ) + 1 ;
Rb[39:32] = ( Ra[55:48] << 1 ) + 0 ;
Rb[31:24] = ( Ra[47:40] << 1 ) + 1 ;
Rb[23:16] = ( Ra[47:40] << 1 ) + 0 ;
Rb[15: 8] = ( Ra[39:32] << 1 ) + 1 ;
Rb[ 7: 0] = ( Ra[39:32] << 1 ) + 0 ;
Rb+1[63:56] = ( Ra[31:24] << 1 ) + 1 ;
Rb+1[55:48] = ( Ra[31:24] << 1 ) + 0 ;
Rb+1[47:40] = ( Ra[23:16] << 1 ) + 1 ;
Rb+1[39:32] = ( Ra[23:16] << 1 ) + 0 ;
Rb+1[31:24] = ( Ra[15: 8] << 1 ) + 1 ;
Rb+1[23:16] = ( Ra[15: 8] << 1 ) + 0 ;
Rb+1[15: 8] = ( Ra[ 7: 0] << 1 ) + 1 ;
Rb+1[ 7: 0] = ( Ra[ 7: 0] << 1 ) + 0 ;
---------------------------------------------

(命令2)gensflptnl.16.16 Rb:Rb+1,Ra
(別名:gensflptnl.16)
この命令は、Raの4x16シャッフルパターンから8x16シャッフルパターンを生成し、RbおよびRb+1に格納する。

Rb[63:48] = ( Ra[63:48] << 1 ) + 1 ;
Rb[47:32] = ( Ra[63:48] << 1 ) + 0 ;
Rb[31:16] = ( Ra[47:32] << 1 ) + 1 ;
Rb[15: 0] = ( Ra[47:32] << 1 ) + 0 ;
Rb+1[63:48] = ( Ra[31:16] << 1 ) + 1 ;
Rb+1[47:32] = ( Ra[31:16] << 1 ) + 0 ;
Rb+1[31:16] = ( Ra[15: 0] << 1 ) + 1 ;
Rb+1[15: 0] = ( Ra[15: 0] << 1 ) + 0 ;
---------------------------------------------

(命令3)gensflptnl.16.8 Rb:Rb+1,Ra
(別名:gensflptn.16,gensflptn)
この命令は、Raの4x16シャッフルパターンから16x8シャッフルパターンを生成し、RbおよびRb+1に格納する。

Rb[63:56] = ( Ra[63:48] << 1 ) + 3 ;
Rb[55:48] = ( Ra[63:48] << 1 ) + 2 ;
Rb[47:40] = ( Ra[63:48] << 1 ) + 1 ;
Rb[39:32] = ( Ra[63:48] << 1 ) + 0 ;
Rb[31:24] = ( Ra[47:32] << 1 ) + 3 ;
Rb[23:16] = ( Ra[47:32] << 1 ) + 2 ;
Rb[15: 8] = ( Ra[47:32] << 1 ) + 1 ;
Rb[ 7: 0] = ( Ra[47:32] << 1 ) + 0 ;
Rb+1[63:56] = ( Ra[31:16] << 1 ) + 3 ;
Rb+1[55:48] = ( Ra[31:16] << 1 ) + 2 ;
Rb+1[47:40] = ( Ra[31:16] << 1 ) + 1 ;
Rb+1[39:32] = ( Ra[31:16] << 1 ) + 0 ;
Rb+1[31:24] = ( Ra[15: 0] << 1 ) + 3 ;
Rb+1[23:16] = ( Ra[15: 0] << 1 ) + 2 ;
Rb+1[15: 8] = ( Ra[15: 0] << 1 ) + 1 ;
Rb+1[ 7: 0] = ( Ra[15: 0] << 1 ) + 0 ;
---------------------------------------------

(命令4)gensflptn.16.8 Rb,Ra
この命令は、Raの4x16シャッフルパターンから8x8シャッフルパターンを生成し、Rbに格納する。

Rb[63:56] = ( Ra[63:48] << 1 ) + 1 ;
Rb[55:48] = ( Ra[63:48] << 1 ) + 0 ;
Rb[47:40] = ( Ra[47:32] << 1 ) + 1 ;
Rb[39:32] = ( Ra[47:32] << 1 ) + 0 ;
Rb[31:24] = ( Ra[31:16] << 1 ) + 1 ;
Rb[23:16] = ( Ra[31:16] << 1 ) + 0 ;
Rb[15: 8] = ( Ra[15: 0] << 1 ) + 1 ;
Rb[ 7: 0] = ( Ra[15: 0] << 1 ) + 0 ;
---------------------------------------------

(命令5)gensflptn.32.16 Rb,Ra
(別名:gensflptn.32)

この命令は、Raの2x32シャッフルパターンから4x16シャッフルパターンを生成し、Rbに格納する。

Rb[63:48] = ( Ra[63:32] << 1 ) + 1 ;
Rb[47:32] = ( Ra[63:32] << 1 ) + 0 ;
Rb[31:16] = ( Ra[31: 0] << 1 ) + 1 ;
Rb[15: 0] = ( Ra[31: 0] << 1 ) + 0 ;
---------------------------------------------

(命令6)gensflptn.32.8 Rb,Ra
この命令は、Raの2x32シャッフルパターンから8x8シャッフルパターンを生成し、Rbに格納する。

Rb[63:56] = ( Ra[63:32] << 1 ) + 3 ;
Rb[55:48] = ( Ra[63:32] << 1 ) + 2 ;
Rb[47:40] = ( Ra[63:32] << 1 ) + 1 ;
Rb[39:32] = ( Ra[63:32] << 1 ) + 0 ;
Rb[31:24] = ( Ra[31: 0] << 1 ) + 3 ;
Rb[23:16] = ( Ra[31: 0] << 1 ) + 2 ;
Rb[15: 8] = ( Ra[31: 0] << 1 ) + 1 ;
Rb[ 7: 0] = ( Ra[31: 0] << 1 ) + 0 ;

---------------------------------------------

(命令7)gensflptnl Rc:Rc+1,Ra,Rb
この命令は、Rbの値に応じて、Raからシャッフルパターンを生成し、RcおよびRc+1に格納する。Rb[1:0]の値により条件が分岐するIF ELSE文となっている。なお、Rb[1:0]が0、1、2以外の場合の処理は不定である。

if ( Rb[1:0]=0 ) [
Rc[63:56] = ( Ra[63:56] << 1 ) + 1 ;
Rc[55:48] = ( Ra[63:56] << 1 ) + 0 ;
Rc[47:40] = ( Ra[55:48] << 1 ) + 1 ;
Rc[39:32] = ( Ra[55:48] << 1 ) + 0 ;
Rc[31:24] = ( Ra[47:40] << 1 ) + 1 ;
Rc[23:16] = ( Ra[47:40] << 1 ) + 0 ;
Rc[15: 8] = ( Ra[39:32] << 1 ) + 1 ;
Rc[ 7: 0] = ( Ra[39:32] << 1 ) + 0 ;
Rc+1[63:56] = ( Ra[31:24] << 1 ) + 1 ;
Rc+1[55:48] = ( Ra[31:24] << 1 ) + 0 ;
Rc+1[47:40] = ( Ra[23:16] << 1 ) + 1 ;
Rc+1[39:32] = ( Ra[23:16] << 1 ) + 0 ;
Rc+1[31:24] = ( Ra[15: 8] << 1 ) + 1 ;
Rc+1[23:16] = ( Ra[15: 8] << 1 ) + 0 ;
Rc+1[15: 8] = ( Ra[ 7: 0] << 1 ) + 1 ;
Rc+1[ 7: 0] = ( Ra[ 7: 0] << 1 ) + 0 ;
] else if ( Rb[1:0]=1 ) [
Rc[63:48] = ( Ra[63:48] << 1 ) + 1 ;
Rc[47:32] = ( Ra[63:48] << 1 ) + 0 ;
Rc[31:16] = ( Ra[47:32] << 1 ) + 1 ;
Rc[15: 0] = ( Ra[47:32] << 1 ) + 0 ;
Rc+1[63:48] = ( Ra[31:16] << 1 ) + 1 ;
Rc+1[47:32] = ( Ra[31:16] << 1 ) + 0 ;
Rc+1[31:16] = ( Ra[15: 0] << 1 ) + 1 ;
Rc+1[15: 0] = ( Ra[15: 0] << 1 ) + 0 ;
] else if ( Rb[1:0]=2 ) [
Rc[63:56] = ( Ra[63:48] << 1 ) + 3 ;
Rc[55:48] = ( Ra[63:48] << 1 ) + 2 ;
Rc[47:40] = ( Ra[63:48] << 1 ) + 1 ;
Rc[39:32] = ( Ra[63:48] << 1 ) + 0 ;
Rc[31:24] = ( Ra[47:32] << 1 ) + 3 ;
Rc[23:16] = ( Ra[47:32] << 1 ) + 2 ;
Rc[15: 8] = ( Ra[47:32] << 1 ) + 1 ;
Rc[ 7: 0] = ( Ra[47:32] << 1 ) + 0 ;
Rc+1[63:56] = ( Ra[31:16] << 1 ) + 3 ;
Rc+1[55:48] = ( Ra[31:16] << 1 ) + 2 ;
Rc+1[47:40] = ( Ra[31:16] << 1 ) + 1 ;
Rc+1[39:32] = ( Ra[31:16] << 1 ) + 0 ;
Rc+1[31:24] = ( Ra[15: 0] << 1 ) + 3 ;
Rc+1[23:16] = ( Ra[15: 0] << 1 ) + 2 ;
Rc+1[15: 8] = ( Ra[15: 0] << 1 ) + 1 ;
Rc+1[ 7: 0] = ( Ra[15: 0] << 1 ) + 0 ;
]

---------------------------------------------

なお、上で示した、Rbの値やRbの参照するビットの位置はあくまでも一例であり、これに限られるものではない。また、Rb[1:0]が0、1、2の場合のみ記載しているが、それ以外の値が定義されていてもよいし、Rb[1:0]が0、1、2以外の場合の処理が不定ではなく、固定(例えば0と同じ、など)でもよい。これらは次の命令8についても同様である。

(命令8)gensflptn Rc,Ra,Rb
この命令は、Rbの値に応じて、Raからシャッフルパターンを生成し、Rcに格納する。Rb[1:0]が0、1、2以外の場合の処理は不定である。

if ( Rb[1:0]=0 ) [
Rc[63:56] = ( Ra[63:48] << 1 ) + 1 ;
Rc[55:48] = ( Ra[63:48] << 1 ) + 0 ;
Rc[47:40] = ( Ra[47:32] << 1 ) + 1 ;
Rc[39:32] = ( Ra[47:32] << 1 ) + 0 ;
Rc[31:24] = ( Ra[31:16] << 1 ) + 1 ;
Rc[23:16] = ( Ra[31:16] << 1 ) + 0 ;
Rc[15: 8] = ( Ra[15: 0] << 1 ) + 1 ;
Rc[ 7: 0] = ( Ra[15: 0] << 1 ) + 0 ;
] else if ( Rb[1:0]=1 ) [
Rc[63:48] = ( Ra[63:32] << 1 ) + 1 ;
Rc[47:32] = ( Ra[63:32] << 1 ) + 0 ;
Rc[31:16] = ( Ra[31: 0] << 1 ) + 1 ;
Rc[15: 0] = ( Ra[31: 0] << 1 ) + 0 ;
] else if ( Rb[1:0]=2 ) [
Rc[63:56] = ( Ra[63:32] << 1 ) + 3 ;
Rc[55:48] = ( Ra[63:32] << 1 ) + 2 ;
Rc[47:40] = ( Ra[63:32] << 1 ) + 1 ;
Rc[39:32] = ( Ra[63:32] << 1 ) + 0 ;
Rc[31:24] = ( Ra[31: 0] << 1 ) + 3 ;
Rc[23:16] = ( Ra[31: 0] << 1 ) + 2 ;
Rc[15: 8] = ( Ra[31: 0] << 1 ) + 1 ;
Rc[ 7: 0] = ( Ra[31: 0] << 1 ) + 0 ;
]

---------------------------------------------

<補足1>
(1)各実施の形態に係るシャッフルパターン生成回路は、シャッフルパターンを生成する方法として実施することもできる。図25に実施の形態2に対応する方法の流れを示す。この方法では、複数個のインデックスからなるインデックス列を取得(S2501)し、各インデックスをビット単位信号に示されるビット数だけ左ビットシフトし、かつ、各インデックスをビット単位信号に示される複製の個数ずつに複製し(S2502)、各インデックスに対してビット単位信号に示される加算値を加算する(S2503)という手順になっている。
(2)各実施の形態では、シャッフルパターン生成回路701に対して入力する情報を「入力シャッフルパターン」、シャッフルパターン生成回路701が生成する情報を「出力シャッフルパターン」と呼んだが、シャッフルパターン生成回路701における材料(入力)と生成物(出力)との区別を明確にするために、入力する情報を「インデックス列」と呼び、生成する情報を単に「シャッフルパターン」と呼んでも構わない。
(3)実施の形態5,6で説明した命令は、各種情報処理装置のプロセッサ、及びそのプロセッサに接続された各種回路に実行させることができる。
<補足2>
本実施の形態は、次の態様を含むものである。
(1)実施の形態に係るシャッフルパターン生成回路は、複数個のインデックスからなるインデックス列を入力とし、ビット数および複製の個数を示す信号を受け付けて、各インデックスを前記信号に示されるビット数だけ左ビットシフトし、かつ、各インデックスを前記信号に示される複製の個数ずつに複製した、インデックス列を出力するシフト複製部と、前記シフト複製部から出力されたインデックス列を入力とし、各インデックスに対する加算値を示す信号を受け付けて、前記各インデックスに対して前記信号に示される加算値を加算する加算部とを備える。
(2)また、前記信号に示される加算値は、複製元が同一の各インデックス間では相異なる値であるとしても構わない。
加算値を、複製元が同一の各インデックス間では相異なる値とすることで、重複や欠落のないシャッフルパターンの生成に貢献できる。
(3)前記複製の個数はN個(Nは2以上の整数)であって、前記複製元が同一の各インデックスでは、1個のインデックスの加算値は0であり、残りのN−1個のインデックスの加算値は、それぞれ、1、2、・・・、N−1であるとしても構わない。
この構成によれば、1個のインデックスの加算値を0とすることで、処理負荷を軽減できる。
(4)各インデックスに対するビット幅を示す信号を受け付けて、前記信号に示されるビット幅へと各インデックスのビット幅を変更するビット幅変更部を備えるとしても構わない。
この構成によれば、生成するシャッフルパターンのビット幅を調整することができる。
(5)前記シフト複製部は、前記各インデックスの左ビットシフト後に各インデックスの複製を行う、または、前記各インデックスの複製後に各インデックスの左ビットシフトを行うとしても構わない。
(6)実施の形態に係るシャッフルパターン生成回路は、j個のインデックスのそれぞれに対して、m個(ただし、mは2以上の整数)のkビットのインデックスを対応づけたm×kインデックステーブルと、インデックスのそれぞれに対して、n個(ただし、nはmと異なる2以上の整数)のlビットのインデックスを対応づけたn×lインデックステーブルと、j個のインデックスからなるシャッフルパターンと、いずれのインデックステーブルを参照するかを示す信号を受け付けて、前記信号に示されるインデックステーブルを参照して、j×m個またはj×n個のインデックスからなるシャッフルパターンを出力する参照部とを備える。
(7)上記シャッフルパターン生成回路を含むプロセッサであって、入力された命令をデコードし、前記命令に合わせて制御信号を生成する命令デコード部と、前記制御信号に基づいて、前記シャッフルパターン生成回路へのデータ供給および前記シャッフルパターン生成回路からのデータの格納を行うレジスタファイルとを備え、前記シャッフルパターン生成回路が受け付ける信号とは、前記制御信号であるプロセッサとしても構わない。
(8)実施の形態に係るシャッフルパターン生成方法は、複数個のインデックスからなるインデックス列を入力とし、ビット数および複製の個数を示す信号を受け付けて、各インデックスを前記信号に示されるビット数だけ左ビットシフトし、かつ、各インデックスを前記信号に示される複製の個数ずつに複製した、インデックス列を出力するシフト複製ステップと、前記シフト複製ステップにて出力されたインデックス列を入力とし、各インデックスに対する加算値を示す信号を受け付けて、前記信号に示される加算値を加算する加算ステップとを含む。
(9)前記シフト複製ステップは、前記各インデックスの左ビットシフト後に各インデックスの複製を行う、または、前記各インデックスの複製後に各インデックスの左ビットシフトを行うとしても構わない。
(10)実施の形態に係る命令は、複数個のインデックスからなるインデックス列、かつ、ビット数および複製の個数および各インデックスに対する加算値を示す制御データを入力とし、各インデックスを前記制御データに示されるビット数だけ左ビットシフトし、かつ、各インデックスを前記制御データに示される複製の個数ずつに複製し、かつ、各インデックスに前記制御データに示される加算値を加算した結果を出力する。
(11)(10)において、前記制御データにより示される加算値は、複製元が同一の各インデックス間では相異なる値であるとしても構わない。
(12)(11)において、前記複製の個数はN個(Nは2以上の整数)であって、前記複製元が同一の各インデックスでは、1個のインデックスの加算値は0であり、残りのN−1個のインデックスの加算値は、それぞれ、1、2、・・・、N−1であるとしても構わない。
(13)(10)において、前記制御データは各インデックスに対するビット幅を示し、
当該制御データに示されるビット幅へと各インデックスのビット幅を変更し、前記結果として出力するとしても構わない。
本発明にかかるシャッフルパターン生成回路によれば、シャッフルパターン生成命令を持つSIMDプロセッサなどの用途に有用である。
101 シャッフルパターン
202、702、1502、1902 入力シャッフルパターン(インデックス列)
203、703、1503、1903 出力シャッフルパターン
301、701、701a、1411、1501、1901、2205、2206 シャッフルパターン生成回路
304、704、802、1504、1904、2211、2212 ビット単位信号
305、706、1506 シフタ
306、1509 ビット変更器
307、708、1408、1508 加算器
401、402、403、404、601、602、901、902、1001、1002、1101、1102、1301、1302、1601、1602、1603、1701、1702、1703、1801、1802、1803 インデックス列
705、705a、1405、1505 シフト複製部
707、1507 複製器
1404a ビット単位信号A
1404b ビット単位信号B
1905 2×8インデックステーブル
1906 4×8インデックステーブル
1907 インデックステーブル参照器
2201 プロセッサ
2203 命令デコーダ
2204 SIMDレジスタファイル

Claims (13)

  1. 複数個のインデックスからなるインデックス列を入力とし、ビット数および複製の個数を示す信号を受け付けて、各インデックスを前記信号に示されるビット数だけ左ビットシフトし、かつ、各インデックスを前記信号に示される複製の個数ずつに複製した、インデックス列を出力するシフト複製部と、
    前記シフト複製部から出力されたインデックス列を入力とし、各インデックスに対する加算値を示す信号を受け付けて、前記各インデックスに対して前記信号に示される加算値を加算する加算部と
    を備えることを特徴とするシャッフルパターン生成回路。
  2. 前記信号に示される加算値は、複製元が同一の各インデックス間では相異なる値である
    ことを特徴とする請求項1に記載のシャッフルパターン生成回路。
  3. 前記複製の個数はN個(Nは2以上の整数)であって、
    前記複製元が同一の各インデックスでは、1個のインデックスの加算値は0であり、残りのN−1個のインデックスの加算値は、それぞれ、1、2、・・・、N−1である
    ことを特徴とする請求項2に記載のシャッフルパターン生成回路。
  4. 各インデックスに対するビット幅を示す信号を受け付けて、前記信号に示されるビット幅へと各インデックスのビット幅を変更するビット幅変更部を備える
    ことを特徴とする請求項1に記載のシャッフルパターン生成回路。
  5. 前記シフト複製部は、
    前記各インデックスの左ビットシフト後に各インデックスの複製を行う、または、前記各インデックスの複製後に各インデックスの左ビットシフトを行う
    ことを特徴とする請求項1に記載のシャッフルパターン生成回路。
  6. j個のインデックスのそれぞれに対して、m個(ただし、mは2以上の整数)のkビットのインデックスを対応づけたm×kインデックステーブルと、
    j個のインデックスのそれぞれに対して、n個(ただし、nはmと異なる2以上の整数)のlビットのインデックスを対応づけたn×lインデックステーブルと、
    j個のインデックスからなるシャッフルパターンと、いずれのインデックステーブルを参照するかを示す信号を受け付けて、前記信号に示されるインデックステーブルを参照して、j×m個またはj×n個のインデックスからなるシャッフルパターンを出力する参照部と
    を備えることを特徴とするシャッフルパターン生成回路。
  7. 請求項1または6に記載のシャッフルパターン生成回路を含むプロセッサであって、
    入力された命令をデコードし、前記命令に合わせて制御信号を生成する命令デコード部と、
    前記制御信号に基づいて、前記シャッフルパターン生成回路へのデータ供給および前記シャッフルパターン生成回路からのデータの格納を行うレジスタファイルとを備え、
    前記シャッフルパターン生成回路が受け付ける信号とは、前記制御信号である
    ことを特徴とするプロセッサ。
  8. 複数個のインデックスからなるインデックス列を入力とし、ビット数および複製の個数を示す信号を受け付けて、各インデックスを前記信号に示されるビット数だけ左ビットシフトし、かつ、各インデックスを前記信号に示される複製の個数ずつに複製した、インデックス列を出力するシフト複製ステップと、
    前記シフト複製ステップにて出力されたインデックス列を入力とし、各インデックスに対する加算値を示す信号を受け付けて、前記信号に示される加算値を加算する加算ステップと
    を含むことを特徴とするシャッフルパターン生成方法。
  9. 前記シフト複製ステップは、
    前記各インデックスの左ビットシフト後に各インデックスの複製を行う、または、前記各インデックスの複製後に各インデックスの左ビットシフトを行う
    ことを特徴とする請求項8に記載のシャッフルパターン生成方法。
  10. 複数個のインデックスからなるインデックス列、かつ、ビット数および複製の個数および各インデックスに対する加算値を示す制御データを入力とし、
    各インデックスを前記制御データに示されるビット数だけ左ビットシフトし、かつ、
    各インデックスを前記制御データに示される複製の個数ずつに複製し、かつ、
    各インデックスに前記制御データに示される加算値を加算した結果を出力する
    命令。
  11. 前記制御データにより示される加算値は、複製元が同一の各インデックス間では相異なる値である
    ことを特徴とする請求項10に記載の命令。
  12. 前記複製の個数はN個(Nは2以上の整数)であって、
    前記複製元が同一の各インデックスでは、1個のインデックスの加算値は0であり、残りのN−1個のインデックスの加算値は、それぞれ、1、2、・・・、N−1である
    ことを特徴とする請求項11に記載の命令。
  13. 前記制御データは各インデックスに対するビット幅を示し、
    当該制御データに示されるビット幅へと各インデックスのビット幅を変更し、前記結果として出力する
    ことを特徴とする請求項10に記載の命令。
JP2013511424A 2011-10-18 2012-09-13 シャッフルパターン生成回路、プロセッサ、シャッフルパターン生成方法、命令 Active JP5988222B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013511424A JP5988222B2 (ja) 2011-10-18 2012-09-13 シャッフルパターン生成回路、プロセッサ、シャッフルパターン生成方法、命令

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2011228892 2011-10-18
JP2011228892 2011-10-18
JP2013511424A JP5988222B2 (ja) 2011-10-18 2012-09-13 シャッフルパターン生成回路、プロセッサ、シャッフルパターン生成方法、命令
PCT/JP2012/005819 WO2013057872A1 (ja) 2011-10-18 2012-09-13 シャッフルパターン生成回路、プロセッサ、シャッフルパターン生成方法、命令

Publications (2)

Publication Number Publication Date
JPWO2013057872A1 true JPWO2013057872A1 (ja) 2015-04-02
JP5988222B2 JP5988222B2 (ja) 2016-09-07

Family

ID=48140543

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013511424A Active JP5988222B2 (ja) 2011-10-18 2012-09-13 シャッフルパターン生成回路、プロセッサ、シャッフルパターン生成方法、命令

Country Status (4)

Country Link
US (1) US9292286B2 (ja)
JP (1) JP5988222B2 (ja)
CN (1) CN103189837B (ja)
WO (1) WO2013057872A1 (ja)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104011644B (zh) 2011-12-22 2017-12-08 英特尔公司 用于产生按照数值顺序的相差恒定跨度的整数的序列的处理器、方法、系统和指令
US10223112B2 (en) 2011-12-22 2019-03-05 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset
CN104011646B (zh) 2011-12-22 2018-03-27 英特尔公司 用于产生按照数值顺序的连续整数的序列的处理器、方法、系统和指令
US9251377B2 (en) * 2012-12-28 2016-02-02 Intel Corporation Instructions processors, methods, and systems to process secure hash algorithms
US9514169B2 (en) * 2013-09-23 2016-12-06 Protegrity Corporation Columnar table data protection
US9772848B2 (en) * 2014-11-14 2017-09-26 Intel Corporation Three-dimensional morton coordinate conversion processors, methods, systems, and instructions
US20160139919A1 (en) * 2014-11-14 2016-05-19 Intel Corporation Machine Level Instructions to Compute a 3D Z-Curve Index from 3D Coordinates
US9772849B2 (en) * 2014-11-14 2017-09-26 Intel Corporation Four-dimensional morton coordinate conversion processors, methods, systems, and instructions
US20160139924A1 (en) * 2014-11-14 2016-05-19 Intel Corporation Machine Level Instructions to Compute a 4D Z-Curve Index from 4D Coordinates
US9958521B2 (en) 2015-07-07 2018-05-01 Q Bio, Inc. Field-invariant quantitative magnetic-resonance signatures
US10194829B2 (en) 2015-07-07 2019-02-05 Q Bio, Inc. Fast scanning based on magnetic resonance history
CN105022609A (zh) * 2015-08-05 2015-11-04 浪潮(北京)电子信息产业有限公司 一种数据混洗方法和数据混洗单元
US9665734B2 (en) * 2015-09-12 2017-05-30 Q Bio, Inc. Uniform-frequency records with obscured context
US10964412B2 (en) 2015-10-20 2021-03-30 Q Bio, Inc. Population-based medical rules via anonymous sharing
US10359486B2 (en) 2016-04-03 2019-07-23 Q Bio, Inc. Rapid determination of a relaxation time
US10222441B2 (en) 2016-04-03 2019-03-05 Q Bio, Inc. Tensor field mapping
KR102659495B1 (ko) * 2016-12-02 2024-04-22 삼성전자주식회사 벡터 프로세서 및 그 제어 방법
US11650195B2 (en) 2017-02-03 2023-05-16 Q Bio, Inc. Iterative medical testing of biological samples
US10936180B2 (en) 2017-03-16 2021-03-02 Q Bio, Inc. User interface for medical information
US11206815B2 (en) 2018-09-30 2021-12-28 Rollo Pet Company Llc Retractable leash locking assemblies, and systems and methods thereof
US11360166B2 (en) 2019-02-15 2022-06-14 Q Bio, Inc Tensor field mapping with magnetostatic constraint
US11354586B2 (en) 2019-02-15 2022-06-07 Q Bio, Inc. Model parameter determination using a predictive model
US11614509B2 (en) 2019-09-27 2023-03-28 Q Bio, Inc. Maxwell parallel imaging
KR102622283B1 (ko) 2019-09-27 2024-01-08 큐 바이오, 인코퍼레이티드 맥스웰 병렬 이미징
US11614508B1 (en) 2021-10-25 2023-03-28 Q Bio, Inc. Sparse representation of measurements
CN115061731B (zh) * 2022-06-23 2023-05-23 摩尔线程智能科技(北京)有限责任公司 混洗电路和方法、以及芯片和集成电路装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020035678A1 (en) * 2000-03-08 2002-03-21 Rice Daniel S. Processing architecture having field swapping capability
JP2004303203A (ja) * 2003-03-31 2004-10-28 Hewlett-Packard Development Co Lp レジスタから並列テーブルルックアップを行う可変再配列(mux)命令
JP2005174301A (ja) * 2003-12-09 2005-06-30 Arm Ltd レジスタとメモリとの間でデータを移動するためのデータ処理装置及び方法
JP2007526536A (ja) * 2003-06-30 2007-09-13 インテル コーポレイション データをシャッフルするための方法及び装置
JP2008513903A (ja) * 2004-09-21 2008-05-01 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ シャッフル演算のためのマイクロプロセッサデバイス及び方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4445177A (en) * 1981-05-22 1984-04-24 Data General Corporation Digital data processing system utilizing a unique arithmetic logic unit for handling uniquely identifiable addresses for operands and instructions
US6304991B1 (en) * 1998-12-04 2001-10-16 Qualcomm Incorporated Turbo code interleaver using linear congruential sequence
US7272622B2 (en) * 2001-10-29 2007-09-18 Intel Corporation Method and apparatus for parallel shift right merge of data
GB2409062C (en) 2003-12-09 2007-12-11 Advanced Risc Mach Ltd Aliasing data processing registers
CN101986262B (zh) 2010-11-25 2013-01-16 中国人民解放军国防科学技术大学 基于模式偏移的混洗开关矩阵压缩方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020035678A1 (en) * 2000-03-08 2002-03-21 Rice Daniel S. Processing architecture having field swapping capability
JP2004303203A (ja) * 2003-03-31 2004-10-28 Hewlett-Packard Development Co Lp レジスタから並列テーブルルックアップを行う可変再配列(mux)命令
JP2007526536A (ja) * 2003-06-30 2007-09-13 インテル コーポレイション データをシャッフルするための方法及び装置
JP2005174301A (ja) * 2003-12-09 2005-06-30 Arm Ltd レジスタとメモリとの間でデータを移動するためのデータ処理装置及び方法
JP2008513903A (ja) * 2004-09-21 2008-05-01 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ シャッフル演算のためのマイクロプロセッサデバイス及び方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6016016785; HANSEN,Craig: '"MicroUnity's MediaProcessor architecture"' IEEE Micro Volume:16 Issue: 4, 199608, Pages:34 - 41, IEEE *

Also Published As

Publication number Publication date
CN103189837B (zh) 2016-12-28
JP5988222B2 (ja) 2016-09-07
WO2013057872A1 (ja) 2013-04-25
CN103189837A (zh) 2013-07-03
US20130275718A1 (en) 2013-10-17
US9292286B2 (en) 2016-03-22

Similar Documents

Publication Publication Date Title
JP5988222B2 (ja) シャッフルパターン生成回路、プロセッサ、シャッフルパターン生成方法、命令
JP5047944B2 (ja) データアクセス及び置換ユニット
US10521232B2 (en) Data processing apparatus and method for processing a SIMD instruction specifying a control value having a first portion identifying a selected data size and a second portion identifying at least one control parameter having a number of bits that varies in dependence on a number of bits comprised by the first portion
US5859790A (en) Replication of data
EP0743592B1 (en) Reorganising of data objects within a data string
US5822619A (en) System and method for restructuring data strings
EP1073950B1 (en) Method and apparatus for performing shift operations on packed data
KR101099467B1 (ko) 레지스터와 메모리 사이에 데이터를 이동시키는 데이터처리장치 및 방법
US8200948B2 (en) Apparatus and method for performing re-arrangement operations on data
JP2009026106A (ja) 命令コード圧縮方法と命令フェッチ回路
WO2001089098A2 (en) A method and system for performing permutations with bit permutation instructions
US10089075B2 (en) Method and apparatus of instruction that merges and sorts smaller sorted vectors into larger sorted vector
US20120278591A1 (en) Crossbar switch module having data movement instruction processor module and methods for implementing the same
EP3007060A2 (en) Arithmetic circuit and control method for arithmetic circuit
JP4686435B2 (ja) 演算装置
JP5853177B2 (ja) データ処理装置、及びデータ処理方法
EP0932273B1 (en) Executing permutations
CN109947391B (zh) 一种数据处理方法和装置
JP2013517576A5 (ja)
EP3655852A1 (en) Vector interleaving in a data processing apparatus
US20090249032A1 (en) Information apparatus
JPH06103035A (ja) 擬似乱数を生成する方法および装置
JP2004139156A (ja) 演算処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160510

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160526

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160729

R151 Written notification of patent or utility model registration

Ref document number: 5988222

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151