JP6253514B2 - プロセッサ - Google Patents
プロセッサ Download PDFInfo
- Publication number
- JP6253514B2 JP6253514B2 JP2014108852A JP2014108852A JP6253514B2 JP 6253514 B2 JP6253514 B2 JP 6253514B2 JP 2014108852 A JP2014108852 A JP 2014108852A JP 2014108852 A JP2014108852 A JP 2014108852A JP 6253514 B2 JP6253514 B2 JP 6253514B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- element data
- memory
- read
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 239000013598 vector Substances 0.000 claims description 168
- 239000000872 buffer Substances 0.000 claims description 113
- 238000004364 calculation method Methods 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 19
- 238000000034 method Methods 0.000 description 82
- 238000012545 processing Methods 0.000 description 63
- 230000008569 process Effects 0.000 description 26
- 238000010586 diagram Methods 0.000 description 20
- 101100042610 Arabidopsis thaliana SIGB gene Proteins 0.000 description 16
- 230000008707 rearrangement Effects 0.000 description 16
- 101100042617 Arabidopsis thaliana SIGE gene Proteins 0.000 description 10
- 101100421503 Arabidopsis thaliana SIGA gene Proteins 0.000 description 9
- 101100042613 Arabidopsis thaliana SIGC gene Proteins 0.000 description 8
- 101100042615 Arabidopsis thaliana SIGD gene Proteins 0.000 description 8
- 230000010354 integration Effects 0.000 description 8
- 101100294408 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) MOT2 gene Proteins 0.000 description 7
- 101150117326 sigA gene Proteins 0.000 description 7
- 238000013480 data collection Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000003491 array Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000002250 progressing effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/217—Database tuning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90339—Query processing by using parallel associative memories or content-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30141—Implementation provisions of register files, e.g. ports
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/16—General purpose computing application
- G06F2212/163—Server or database system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Description
図1は、本実施の形態1にかかるプロセッサ20を含むデータ処理装置1000の構成を示すブロック図である。データ処理装置1000は、メモリ10とプロセッサ20とを備える。メモリ10は、データ集合11及び12等が格納された記憶装置である。メモリ10は、いわゆる主記憶装置に相当し、プロセッサ20の外に存在するものである。メモリ10は、プロセッサ20との間でメモリバス(不図示)により接続されている。
図4は、本実施の形態2にかかるプロセッサ20bを含むデータ処理装置2000の構成を示すブロック図である。データ処理装置2000は、メモリ10とプロセッサ20bとを備える。尚、メモリ10は、図1と同等であるため説明を省略する。
ここで、本実施の形態で解決しようとする課題について改めて説明する。まず、複数のメンバ変数を含む構造体のデータが構造体配列としてメモリに連続して格納されているものとする。このとき、複数の構造体配列について同一のメンバ変数同士をベクトル演算する場合がある。このようなベクトルデータをメモリから収集するためには、通常、構造体ごとの各メンバ変数ごとにメモリからの読み出し命令をプロセッサに対して指示しなければならない。また、ベクトル演算の結果としての複数のベクトルデータをメモリに格納するためにも、通常、構造体ごとの各メンバ変数ごとにプロセッサ内のレジスタからメモリへの書き込み命令をプロセッサに対して指示しなければならない。
これに対しては、既存手法1として従来からギャザ命令及びスキャタ命令がプロセッサに実装されていることが多い。一般に、ギャザ命令及びスキャタ命令は、プロセッサに対する1回の命令により、プロセッサからメモリに対する複数回のメモリアクセス処理を発行するものである。例えば、以下のような処理の流れになる。
(1)プロセッサは、ギャザ命令を受け付けて、非連続的な領域に格納された各データに対する複数回のメモリアクセス処理を発行し、読み出された各データを1つのレジスタにロードする。
(2)プロセッサは、レジスタにロードされた各データを複数のベクトルデータとしてベクトル演算を適用する。
(3)プロセッサは、スキャタ命令を受け付けて、レジスタの各要素を個別に読み出して、都度、メモリに対して書き込みを行うためのメモリアクセス命令を発行し、読み出された各データを非連続な領域にメモリアドレスに書き込む。
既存手法2は、複数ワードのアクセスが可能なバンド幅を活用し、複数ワードのメモリアクセス命令を活用するものである。つまり、既存手法2では、一度、複数ワードのメモリアクセス処理により、メモリの連続した領域に格納されたデータ群を一旦、ベクトルレジスタに格納する。この段階では、各ベクトルレジスタには、構造体単位のデータ群が格納されることになる。そこで、この後、各構造体における同じメンバ変数が同一のベクトルレジスタに格納されるように、並べ替え処理を実行する。このため、ベクトル演算を適用する前後に、ベクトルレジスタ内の並べ替え処理という余計な命令を挿入する必要が生じる。よって、既存手法2でも処理時間が増大し、効率が悪い。
struct {
int a,
int b,
...
int p;
} z[Q];
そして、メモリ30には、各構造体のメンバ変数に対応するデータ値が隣接する領域に格納されているものとする。尚、メモリ30には、その他、プロセッサ40で実行可能な各種の命令が格納されているものとする。
・読み出し元のメモリの先頭メモリアドレスA(例えば、構造体配列の先頭の格納領域に相当する)
・書き込み先の先頭のレジスタ番号k(kは、読み出し対象の構造体数Qに相当し、ウェイ数Wの上限以下の自然数。)
・連続してメモリアクセスするワード数N(Nは、2以上かつP以下の自然数)
・メモリアドレスを更新するためのサイズC(Cは、構造体のサイズPと同一とする)
本実施の形態4は、上述した実施の形態2の改良例である。また、上述した既存手法1におけるスキャタ命令や既存手法2における複数ワードのストア命令において発生する課題を解決するものである。尚、既存手法1及び2における課題は、ギャザ命令及び複数ワードのロード命令において発生するものと同等である。
・書き込み先のメモリの先頭メモリアドレスA(例えば、構造体配列の先頭の格納領域に相当する)
・読み出し元の先頭のレジスタ番号k(kは、読み出し対象の構造体数Qに相当し、ウェイ数Wの上限以下の自然数。)
・連続してメモリアクセスするワード数N(Nは、2以上かつP以下の自然数)
・メモリアドレスを更新するためのサイズC(Cは、構造体のサイズPと同一とする)
本実施の形態5は、上述した実施の形態3及び4を組み合わせたものである。本実施の形態5にかかるプロセッサは、例えば、上述した図7のプロセッサ40及び40aの構成を備えるものであればよい。また、本実施の形態5にかかるデータ処理装置は、例えば、例えば、上述した図7のデータ処理装置3000及び3000aの構成を備えるものであればよい。つまり、本実施の形態5にかかるプロセッサは、実施の形態3にかかるギャザ命令及び実施の形態4にかかるスキャタ命令を実行可能なものである。尚、本実施の形態5にかかるプロセッサの構成は、プロセッサ40及び40aの構成のうち共通する部分は適宜、同一の構成を用いるとよい。
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non−transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
(付記1)
データ集合に含まれる複数の要素データのそれぞれと対応する複数の記憶部と、
複数の前記データ集合が格納されたメモリから、隣接する格納領域に格納された前記複数の要素データを、前記データ集合ごとにまとめて読み出し、前記読み出した各要素データを、前記複数の記憶部のうち当該要素データに対応する記憶部に分類して、前記データ集合ごとに書き込む制御部と、
を備えるプロセッサ。
(付記2)
前記制御部は、
前記読み出した各要素データについての分類先の各記憶部における書込み位置を、前記データ集合ごとに対応させて書き込む
付記1に記載のプロセッサ。
(付記3)
前記制御部は、
前記メモリから読み出された各要素データを、前記メモリにおける前記隣接する格納領域の順序に従って前記複数の記憶部のいずれかに分類し、
前記分類された各要素データを、当該分類先の各記憶部へ書き込む、
付記2に記載のプロセッサ。
(付記4)
前記制御部は、
複数のベクトルデータを収集するための命令に応じて、前記データ集合ごとに当該ベクトルデータの数分の連続した前記格納領域から前記複数の要素データを読み出すためのリクエストを前記メモリに対して発行し、
前記リクエストに応じて前記メモリから読み出された各要素データを、当該リクエストごとに前記複数の記憶部のいずれかに分類する
付記3に記載のプロセッサ。
(付記5)
前記制御部は、
前記複数のベクトルデータを収集するための命令に応じて、前記リクエストを発行すると共に、前記データ集合ごとに、前記書込み位置を指定し、
前記分類された各要素データを、当該分類先の各記憶部における前記指定された書込み位置へ書き込む
付記4に記載のプロセッサ。
(付記6)
前記複数の記憶部は、前記データ集合内の各要素データの前記格納領域に対応した複数のバッファと、各バッファに対応した複数のレジスタとを含み、
前記制御部は、
前記複数のバッファのうち前記格納領域ごとに異なる書込み先のバッファを指定して、当該指定されたバッファに各要素データを分類して書き込み、
前記複数のデータ集合の全てにおける前記複数の要素データの読み出し後に、前記複数のバッファごとに、当該バッファに書き込まれた全要素データを、当該バッファに対応する前記レジスタへまとめて書き込む
付記2に記載のプロセッサ。
(付記7)
前記複数の記憶部の間で対応する書込み位置ごとに所定の演算をまとめて実行するベクトル演算部をさらに備える
付記2に記載のプロセッサ。
(付記8)
前記ベクトル演算部は、前記複数の記憶部の少なくとも2以上を対象として前記所定の演算を実行する
付記7に記載のプロセッサ。
(付記9)
前記複数のデータ集合は、前記複数の要素データをメンバ変数とする構造体であり、
前記複数の記憶部は、前記メンバ変数に対応付けられており、
前記制御部は、
前記読み出した各要素データを、各メンバ変数に対応付けられた前記複数の記憶部に分類して書き込む、
付記1乃至8のいずれか1項に記載のプロセッサ。
(付記10)
複数の領域に区分けされ、それぞれに複数の要素データが格納された複数の記憶部と、
各記憶部の間で対応する領域に格納された各要素データを前記複数の記憶部のそれぞれから読み出し、当該対応する領域ごとに、当該読み出された要素データ同士をまとめてデータ集合とし、当該データ集合内の各要素データをメモリ内の隣接する格納領域に書き込む制御部と、
を備えるプロセッサ。
(付記11)
前記制御部は、
前記読み出した各要素データについての前記格納領域を、前記複数の記憶部ごとに対応させて書き込む
付記10に記載のプロセッサ。
(付記12)
前記制御部は、
前記複数のベクトルデータを前記メモリへ格納するための命令に応じて、前記複数の領域ごとに、前記複数の記憶部のそれぞれの前記対応する領域から各要素データを読み出し、
前記複数の領域ごとに、前記対応する領域から読み出された各要素データを統合して前記データ集合とし、
前記複数の領域のそれぞれについて当該ベクトルデータの数分の連続した前記格納領域へ前記統合したデータ集合の各要素データを格納するためのリクエストを前記メモリに対して発行する、
を備える付記11に記載のプロセッサ。
(付記13)
前記制御部は、
複数のベクトルデータを前記メモリへ格納するための命令に応じて、前記リクエストを発行すると共に、前記複数の領域ごとに、前記領域を指定し、
前記指定された領域を前記対応する領域として前記複数の記憶部のそれぞれから各要素データを読み出す
付記12に記載のプロセッサ。
(付記14)
前記複数の記憶部は、前記区分された全領域の単位で読み書き可能な複数のレジスタと、各レジスタに対応し、個別の前記領域の単位で読み書き可能な複数のバッファとを含み、
前記制御部は、
前記複数のレジスタのそれぞれに格納された前記複数の要素データの全てを読み出して、各レジスタに対応する各バッファへまとめて書き込み、
各レジスタの間で対応する領域ごとに、各バッファにおける当該領域に格納された各要素データを読み出し、
当該対応する領域ごとに、当該読み出された要素データ同士をまとめて書込み用のデータ集合とし、
当該データ集合内の各要素データをメモリ内の隣接する格納領域に書き込む
付記11に記載のプロセッサ。
(付記15)
前記複数の記憶部の間で対応する書込み位置ごとに所定の演算をまとめて実行し、当該複数の記憶部へ当該所定の演算の結果を書き込むベクトル演算部をさらに備え、
前記制御部は、前記ベクトル演算部による前記所定の演算の結果の書き込み後に、前記読み出しを開始する
付記11に記載のプロセッサ。
(付記16)
プロセッサが、
メモリ内の隣接する領域に格納された第1及び第2の要素データを、当該メモリからまとめて読み出し、
前記読み出した第1の要素データを第1の記憶部の第1の領域へ、かつ、前記読み出した第2の要素データを第2の記憶部の前記第1の領域に対応する領域へ、それぞれ書き込み、
前記メモリ内の隣接する領域に格納された第3及び第4の要素データを、当該メモリからまとめて読み出し、
前記読み出した第3の要素データを前記第1の記憶部の第2の領域へ、かつ、前記読み出した第4の要素データを前記第2の記憶部の前記第2の領域に対応する領域へ、それぞれ書き込む、
データ収集方法。
(付記17)
プロセッサが、
第1の記憶部の第1の領域から第1の要素データを読み出し、
第2の記憶部の前記第1の領域に対応する領域から第2の要素データを読み出し、
前記第1の要素データ及び前記第2の要素データをメモリ内の隣接する格納領域にまとめて書き込み、
前記第1の記憶部の第2の領域から第3の要素データを読み出し、
前記第2の記憶部の前記第2の領域に対応する領域から第4の要素データを読み出し、
前記第3の要素データ及び前記第4の要素データを前記メモリ内の前記格納領域以外の隣接する格納領域にまとめて書き込む、
データ書き込み方法。
(付記18)
複数のデータ集合が格納されたメモリと、
前記複数のデータ集合のそれぞれに含まれる複数の要素データのそれぞれと対応する複数の記憶部を有するプロセッサとを備え、
前記プロセッサは、
前記メモリから、隣接する格納領域に格納された前記複数の要素データを、前記データ集合ごとにまとめて読み出し、
前記読み出した各要素データを、前記複数の記憶部のうち当該要素データに対応する記憶部に分類して書き込む
データ処理装置。
(付記19)
メモリと、
複数の領域に区分けされ、それぞれに複数の要素データが格納された複数の記憶部と、各記憶部の間で対応する領域に格納された各要素データを前記複数の記憶部のそれぞれから読み出し、当該対応する領域ごとに、当該読み出された要素データ同士をまとめてデータ集合とし、当該データ集合内の各要素データを前記メモリ内の隣接する格納領域に書き込む制御部と、を備えるプロセッサと、
を備えるデータ処理装置。
1000a データ処理装置
2000 データ処理装置
2000a データ処理装置
10 メモリ
10a メモリ
11 データ集合
12 データ集合
101 要素データa
102 要素データb
103 要素データc
104 要素データd
20 プロセッサ
20a プロセッサ
20b プロセッサ
20c プロセッサ
21 記憶部
22 記憶部
201 領域
202 領域
203 領域
204 領域
23 制御部
23a 制御部
23b 制御部
23c 制御部
rgk レジスタ
rgk+1 レジスタ
rgk+N−1 レジスタ
w0 ウェイ
w1 ウェイ
wQ−1 ウェイ
3000 データ処理装置
3000a データ処理装置
30 メモリ
31 構造体
32 構造体
33 構造体
40 プロセッサ
41 命令フェッチ回路
42 命令デコード回路
43 命令制御回路
43a 命令制御回路
44 演算回路
45 メモリアクセス制御回路
45a メモリアクセス制御回路
450 リクエスト発行部
450a リクエスト発行部
451 切替部
452 切替部
451a 切替部
452a 切替部
453 データ分類部
454 データ統合部
46 バッファ群
461 バッファ
462 バッファ
47 ベクトルレジスタ群
471 ベクトルレジスタ
472 ベクトルレジスタ
47n ベクトルレジスタ
SIG0 メモリ読み込みリクエスト信号
SIG1 書き込み先制御信号
SIG2 書き込み先制御信号
SIG3 メモリ書き込みリクエスト信号
SIG4 読み出し元制御信号
SIG5 読み出し元制御信号
9000 データ処理装置
9000a データ処理装置
90 プロセッサ
90a プロセッサ
91 命令フェッチ回路
92 命令デコード回路
93 命令制御回路
93a 命令制御回路
94 演算回路
95 メモリアクセス制御回路
95a メモリアクセス制御回路
96 バッファ
97 ベクトルレジスタ群
Claims (10)
- データ集合に含まれる複数の要素データのそれぞれと対応する複数の記憶部と、
複数の前記データ集合が格納されたメモリから、隣接する格納領域に格納された前記複数の要素データを、前記データ集合ごとにまとめて読み出し、前記読み出した各要素データを、前記複数の記憶部のうち当該要素データに対応する記憶部に分類して、前記データ集合ごとに書き込む制御部と、
を備え、
前記制御部は、
前記読み出した各要素データについての分類先の各記憶部における書込み位置を、前記データ集合ごとに対応させて書き込み、
前記複数の記憶部は、前記データ集合内の各要素データの前記格納領域に対応した複数のバッファと、各バッファに対応した複数のレジスタとを含み、
前記複数のバッファのそれぞれは、前記各要素データを格納するための複数の領域を有し、当該領域単位で読み書き可能であり、
前記複数のレジスタのそれぞれは、前記複数の領域を一括した単位で読み書き可能であり、
前記制御部は、
前記複数のバッファのうち前記格納領域ごとに異なる書込み先のバッファを指定して、当該指定されたバッファに各要素データを分類して書き込み、
前記複数のデータ集合の全てにおける前記複数の要素データの読み出し後に、前記複数のバッファごとに、当該バッファに書き込まれた全要素データを、当該バッファに対応する前記レジスタへまとめて書き込む
プロセッサ。 - 前記制御部は、
前記メモリから読み出された各要素データを、前記メモリにおける前記隣接する格納領域の順序に従って前記複数の記憶部のいずれかに分類し、
前記分類された各要素データを、当該分類先の各記憶部へ書き込む、
請求項1に記載のプロセッサ。 - 前記制御部は、
複数のベクトルデータを収集するための命令に応じて、前記データ集合ごとに当該ベクトルデータの数分の連続した前記格納領域から前記複数の要素データを読み出すためのリクエストを前記メモリに対して発行し、
前記リクエストに応じて前記メモリから読み出された各要素データを、当該リクエストごとに前記複数の記憶部のいずれかに分類する
請求項2に記載のプロセッサ。 - 前記制御部は、
前記複数のベクトルデータを収集するための命令に応じて、前記リクエストを発行すると共に、前記データ集合ごとに、前記書込み位置を指定し、
前記分類された各要素データを、当該分類先の各記憶部における前記指定された書込み位置へ書き込む
請求項3に記載のプロセッサ。 - 前記複数の記憶部の間で対応する書込み位置ごとに所定の演算をまとめて実行するベクトル演算部をさらに備える
請求項1に記載のプロセッサ。 - 前記ベクトル演算部は、前記複数の記憶部の少なくとも2以上を対象として前記所定の演算を実行する
請求項5に記載のプロセッサ。 - 複数の領域に区分けされ、それぞれに複数の要素データが格納された複数の記憶部と、
各記憶部の間で対応する領域に格納された各要素データを前記複数の記憶部のそれぞれから読み出し、当該対応する領域ごとに、当該読み出された要素データ同士をまとめてデータ集合とし、当該データ集合内の各要素データをメモリ内の隣接する格納領域に書き込む制御部と、
を備え、
前記制御部は、
前記読み出した各要素データについての前記格納領域を、前記複数の記憶部ごとに対応させて書き込み、
前記複数の記憶部は、前記区分された全領域の単位で読み書き可能な複数のレジスタと、各レジスタに対応し、個別の前記領域の単位で読み書き可能な複数のバッファとを含み、
前記制御部は、
前記複数のレジスタのそれぞれに格納された前記複数の要素データの全てを読み出して、各レジスタに対応する各バッファへまとめて書き込み、
各レジスタの間で対応する領域ごとに、各バッファにおける当該領域に格納された各要素データを読み出し、
当該対応する領域ごとに、当該読み出された要素データ同士をまとめて書込み用のデータ集合とし、
当該データ集合内の各要素データをメモリ内の隣接する格納領域に書き込む
プロセッサ。 - 前記制御部は、
複数のベクトルデータを前記メモリへ格納するための命令に応じて、前記複数の領域ごとに、前記複数の記憶部のそれぞれの前記対応する領域から各要素データを読み出し、
前記複数の領域ごとに、前記対応する領域から読み出された各要素データを統合して前記データ集合とし、
前記複数の領域のそれぞれについて当該ベクトルデータの数分の連続した前記格納領域へ前記統合したデータ集合の各要素データを格納するためのリクエストを前記メモリに対して発行する、
を備える請求項7に記載のプロセッサ。 - 前記制御部は、
前記複数のベクトルデータを前記メモリへ格納するための命令に応じて、前記リクエストを発行すると共に、前記複数の領域ごとに、前記領域を指定し、
前記指定された領域を前記対応する領域として前記複数の記憶部のそれぞれから各要素データを読み出す
請求項8に記載のプロセッサ。 - 前記複数の記憶部の間で対応する書込み位置ごとに所定の演算をまとめて実行し、当該複数の記憶部へ当該所定の演算の結果を書き込むベクトル演算部をさらに備え、
前記制御部は、前記ベクトル演算部による前記所定の演算の結果の書き込み後に、前記読み出しを開始する
請求項7に記載のプロセッサ。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014108852A JP6253514B2 (ja) | 2014-05-27 | 2014-05-27 | プロセッサ |
US14/694,026 US10235398B2 (en) | 2014-05-27 | 2015-04-23 | Processor and data gathering method |
EP15167062.7A EP2950202A1 (en) | 2014-05-27 | 2015-05-11 | Processor and data gathering method |
CN201510276210.8A CN105320469B (zh) | 2014-05-27 | 2015-05-26 | 处理器和数据收集方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014108852A JP6253514B2 (ja) | 2014-05-27 | 2014-05-27 | プロセッサ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015225427A JP2015225427A (ja) | 2015-12-14 |
JP6253514B2 true JP6253514B2 (ja) | 2017-12-27 |
Family
ID=53174845
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014108852A Active JP6253514B2 (ja) | 2014-05-27 | 2014-05-27 | プロセッサ |
Country Status (4)
Country | Link |
---|---|
US (1) | US10235398B2 (ja) |
EP (1) | EP2950202A1 (ja) |
JP (1) | JP6253514B2 (ja) |
CN (1) | CN105320469B (ja) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9875214B2 (en) * | 2015-07-31 | 2018-01-23 | Arm Limited | Apparatus and method for transferring a plurality of data structures between memory and a plurality of vector registers |
US20170177352A1 (en) * | 2015-12-18 | 2017-06-22 | Intel Corporation | Instructions and Logic for Lane-Based Strided Store Operations |
US10509726B2 (en) | 2015-12-20 | 2019-12-17 | Intel Corporation | Instructions and logic for load-indices-and-prefetch-scatters operations |
US20170177359A1 (en) * | 2015-12-21 | 2017-06-22 | Intel Corporation | Instructions and Logic for Lane-Based Strided Scatter Operations |
US20170177363A1 (en) * | 2015-12-22 | 2017-06-22 | Intel Corporation | Instructions and Logic for Load-Indices-and-Gather Operations |
US10019262B2 (en) * | 2015-12-22 | 2018-07-10 | Intel Corporation | Vector store/load instructions for array of structures |
US20170192782A1 (en) * | 2015-12-30 | 2017-07-06 | Robert Valentine | Systems, Apparatuses, and Methods for Aggregate Gather and Stride |
US20170192783A1 (en) * | 2015-12-30 | 2017-07-06 | Elmoustapha Ould-Ahmed-Vall | Systems, Apparatuses, and Methods for Stride Load |
US10289416B2 (en) | 2015-12-30 | 2019-05-14 | Intel Corporation | Systems, apparatuses, and methods for lane-based strided gather |
US10901940B2 (en) | 2016-04-02 | 2021-01-26 | Intel Corporation | Processors, methods, systems, and instructions to atomically store to memory data wider than a natively supported data width |
CN106126195B (zh) * | 2016-06-30 | 2019-01-15 | 联想(北京)有限公司 | 一种信息处理方法及电子设备 |
GB2552154B (en) | 2016-07-08 | 2019-03-06 | Advanced Risc Mach Ltd | Vector register access |
GB2552153B (en) * | 2016-07-08 | 2019-07-24 | Advanced Risc Mach Ltd | An apparatus and method for performing a rearrangement operation |
US10776118B2 (en) * | 2016-09-09 | 2020-09-15 | International Business Machines Corporation | Index based memory access using single instruction multiple data unit |
US10809978B2 (en) * | 2017-06-02 | 2020-10-20 | Texas Instruments Incorporated | Merge sort accelerator |
US20190272175A1 (en) * | 2018-03-01 | 2019-09-05 | Qualcomm Incorporated | Single pack & unpack network and method for variable bit width data formats for computational machines |
JP7035751B2 (ja) * | 2018-04-12 | 2022-03-15 | 富士通株式会社 | コード変換装置、コード変換方法、及びコード変換プログラム |
US10795678B2 (en) * | 2018-04-21 | 2020-10-06 | Microsoft Technology Licensing, Llc | Matrix vector multiplier with a vector register file comprising a multi-port memory |
JP7075067B2 (ja) * | 2018-06-22 | 2022-05-25 | 日本電気株式会社 | ストレージ装置 |
JP2020004247A (ja) * | 2018-06-29 | 2020-01-09 | ソニー株式会社 | 情報処理装置、情報処理方法およびプログラム |
US20200004535A1 (en) * | 2018-06-30 | 2020-01-02 | Intel Corporation | Accelerator apparatus and method for decoding and de-serializing bit-packed data |
US20200097291A1 (en) * | 2018-09-24 | 2020-03-26 | Intel Corporation | Apparatus and method for tile gather and tile scatter |
US10838734B2 (en) | 2018-09-24 | 2020-11-17 | Intel Corporation | Apparatus and method for processing structure of arrays (SoA) and array of structures (AoS) data |
US10896043B2 (en) | 2018-09-28 | 2021-01-19 | Intel Corporation | Systems for performing instructions for fast element unpacking into 2-dimensional registers |
CN111949318A (zh) * | 2019-05-17 | 2020-11-17 | 上海寒武纪信息科技有限公司 | 指令处理方法、装置及相关产品 |
WO2020250419A1 (ja) * | 2019-06-14 | 2020-12-17 | 日本電気株式会社 | 制御装置、制御方法、及び制御プログラムが格納された非一時的なコンピュータ可読媒体 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1989003091A1 (en) * | 1987-09-25 | 1989-04-06 | Hitachi, Ltd. | Method of sorting vector data and a vector processor adapted thereto |
US20020032710A1 (en) * | 2000-03-08 | 2002-03-14 | Ashley Saulsbury | Processing architecture having a matrix-transpose capability |
US20040236920A1 (en) * | 2003-05-20 | 2004-11-25 | Sheaffer Gad S. | Methods and apparatus for gathering and scattering data associated with a single-instruction-multiple-data (SIMD) operation |
GB2409066B (en) * | 2003-12-09 | 2006-09-27 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
US20070226469A1 (en) | 2006-03-06 | 2007-09-27 | James Wilson | Permutable address processor and method |
JP5633122B2 (ja) * | 2009-06-16 | 2014-12-03 | 富士通セミコンダクター株式会社 | プロセッサ及び情報処理システム |
JP5165662B2 (ja) * | 2009-10-27 | 2013-03-21 | 株式会社高速屋 | ビット列キー分類・分配装置、分類・分配方法及びプログラム |
US8972698B2 (en) | 2010-12-22 | 2015-03-03 | Intel Corporation | Vector conflict instructions |
JP5658556B2 (ja) * | 2010-12-24 | 2015-01-28 | 富士通株式会社 | メモリ制御装置、及びメモリ制御方法 |
US9274591B2 (en) * | 2013-07-22 | 2016-03-01 | Globalfoundries Inc. | General purpose processing unit with low power digital signal processing (DSP) mode |
-
2014
- 2014-05-27 JP JP2014108852A patent/JP6253514B2/ja active Active
-
2015
- 2015-04-23 US US14/694,026 patent/US10235398B2/en active Active
- 2015-05-11 EP EP15167062.7A patent/EP2950202A1/en not_active Withdrawn
- 2015-05-26 CN CN201510276210.8A patent/CN105320469B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN105320469A (zh) | 2016-02-10 |
US20150347475A1 (en) | 2015-12-03 |
EP2950202A1 (en) | 2015-12-02 |
JP2015225427A (ja) | 2015-12-14 |
CN105320469B (zh) | 2019-12-13 |
US10235398B2 (en) | 2019-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6253514B2 (ja) | プロセッサ | |
JP6106752B2 (ja) | 状態機械エンジンのための結果生成 | |
JP6280121B2 (ja) | 状態機械エンジンにおける命令挿入 | |
JP6177418B2 (ja) | ステートマシンエンジンによって受信されるデータを提供するための方法及び装置 | |
TWI515669B (zh) | 用於狀態機中資料分析之系統與方法 | |
US10203878B2 (en) | Near memory accelerator | |
JP2015533231A (ja) | 状態機械エンジンにおいて状態ベクトルデータを使用するための方法およびシステム | |
US20200401553A1 (en) | Devices for time division multiplexing of state machine engine signals | |
WO2016082362A1 (zh) | 数据位宽转换方法、装置和设备 | |
JP2016115092A (ja) | 多数の要素からなる配列をソートする装置、方法およびプログラム | |
US20140317383A1 (en) | Apparatus and method for compressing instruction for vliw processor, and apparatus and method for fetching instruction | |
GB2525613A (en) | Reduction of processing duplicates of queued requests | |
JP5278538B2 (ja) | コンパイルシステム、コンパイル方法およびコンパイルプログラム | |
JP7038608B2 (ja) | 半導体装置 | |
US11531869B1 (en) | Neural-network pooling | |
JPWO2019156060A1 (ja) | 並列ユニオン制御装置、並列ユニオン制御方法、および並列ユニオン制御用プログラム | |
WO2016063667A1 (ja) | 再構成可能デバイス | |
JP7408954B2 (ja) | メモリ制御方法、メモリ制御装置、プログラム | |
JPWO2017082323A1 (ja) | 分散処理システム、分散処理装置、分散処理方法およびプログラム | |
JP5659772B2 (ja) | 演算処理装置 | |
KR20210100076A (ko) | 벡터 술어 요약 생성 | |
US20230289397A1 (en) | Fast fourier transform device, digital filtering device, fast fourier transform method, and non-transitory computer-readable medium | |
WO2022053032A1 (zh) | 矩阵计算电路、方法、电子设备及计算机可读存储介质 | |
CN116126750B (zh) | 一种基于硬件特性的数据处理的方法及装置 | |
KR102631214B1 (ko) | 대규모 언어 모델 추론을 가속화하기 위한 효율적인 데이터 포워딩 방법 및 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20161003 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20170620 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170704 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170830 |
|
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: 20171107 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20171128 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6253514 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |