JP7006858B1 - 情報処理装置及び情報処理方法 - Google Patents

情報処理装置及び情報処理方法 Download PDF

Info

Publication number
JP7006858B1
JP7006858B1 JP2021549697A JP2021549697A JP7006858B1 JP 7006858 B1 JP7006858 B1 JP 7006858B1 JP 2021549697 A JP2021549697 A JP 2021549697A JP 2021549697 A JP2021549697 A JP 2021549697A JP 7006858 B1 JP7006858 B1 JP 7006858B1
Authority
JP
Japan
Prior art keywords
information processing
packet
address
processing device
vector
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
JP2021549697A
Other languages
English (en)
Other versions
JPWO2021187027A1 (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Publication of JPWO2021187027A1 publication Critical patent/JPWO2021187027A1/ja
Application granted granted Critical
Publication of JP7006858B1 publication Critical patent/JP7006858B1/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/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0853Cache with multiport tag or data arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • 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
    • G06F9/355Indexed addressing

Abstract

情報処理装置は、独立して読み書き可能な記憶領域である複数のバンクを備える記憶装置と、複数のバンクに並行してアクセス可能な処理装置と、を備え、処理装置は、ループ制御文におけるループの単位で、インデックス配列のアドレスと、ベクトルデータの要素を格納するパケットを生成する生成手段と、を備え、複数のバンクのそれぞれは、パケットの単位で該当するアドレスに対応するデータの読み出しと演算処理と演算結果の値を格納する一連の処理を原子的に同時に行う。

Description

本発明は、情報処理装置及び情報処理方法に関する。
特許文献1には、ベクトルデータに関連付けられたマスク情報を受け取り、当該マスク情報によって示されるように複数のアドレスの各アドレスに対応する記憶位置から取得されたデータ要素をロードし、それらの記憶位置をその後の動作のためにリザーブする論理を有するプロセッサが、原子的な(atomic)SIMD(Single-Instruction Multiple Data)動作を実行することにより、効率的な同期およびリダクション演算を可能にするベクトル命令を提供する技術が開示されている。
日本国特開2014-099194号公報
次のような間接アドレス参照を含む総和演算のことをリスト総和演算と呼ぶ。
DO I = 1, N
X(L(I)) = X(L(I)) + Y(I)
ENDDO
リスト総和演算は、ベクトル演算処理の機構を備える装置において、間接参照のアドレスL(I)が重複することによりベクトル演算できない場合がある。この場合、ベクトル処理部ではベクトル処理できず、多数のスカラ処理とメモリアクセスによって処理せざるを得ない。
本発明の目的の一例は、上述した課題を解決する情報処理装置及び情報処理方法を提供することにある。
本発明の態様に係る情報処理装置は、独立して読み書き可能な記憶領域である複数のバンクを備える記憶装置と、複数のバンクに並行してアクセス可能な処理装置と、を備え、処理装置は、ループ制御文におけるループの単位で、インデックス配列のアドレスと、ベクトルデータの要素を格納するパケットを生成する生成手段と、を備え、複数のバンクのそれぞれは、パケットの単位で該当するアドレスに対応するデータの読み出しと演算処理と演算結果の値を格納する一連の処理を原子的に同時に行う。
本発明の態様に係る情報処理方法は、独立して読み書き可能な記憶領域である複数のバンクを備える記憶装置と、複数のバンクに並行してアクセス可能な処理装置と、を備える情報処理装置によって実行される情報処理方法であって、ループ制御文におけるループの単位で、インデックス配列のアドレスと、ベクトルデータの要素を格納するパケットを生成するステップと、前記複数のバンクのそれぞれにおいて、パケットの単位で該当するアドレスに対応するデータの読み出しと演算処理を演算結果の値を格納する一連の処理を原子的に行うステップを有する。
上記態様のうち少なくとも1つの態様によれば、値が重複する間接参照を含むリストベクトルの演算処理に係るメモリアクセスと命令発行数を減らすことができる。
一実施形態に係る情報処理装置の構成を示す図である。 一実施形態に係るループ制御文の一例を示す図である。 一実施形態に係る情報処理装置の動作を示すフローチャートである。 基本構成に係る情報処理装置の構成を示す図である。
〈第1の実施形態〉
《情報処理装置の構成》
以下、図面を参照しながら実施形態について詳しく説明する。
図1は、第1の実施形態に係る情報処理装置100の構成を示す図である。
第1の実施形態に係る情報処理装置100は、演算処理の対象となるデータを格納したベクトルレジスタに対し、LVA(List Vector Add)命令を発行し、キャッシュメモリ3(メモリの一例)において、演算処理の対象のデータを原子的に処理する装置である。原子的に処理するとは、アトミック性が保たれる、つまり、一連のものとして定義された処理が完了したか1つも実行されないかのどちらかとして扱われ、処理が完了した場合には完了した瞬間に一連の処理が実行されたものとすることである。
情報処理装置100はベクトル演算処理を行う。情報処理装置100は、演算処理の対象にループ制御文が含まれる場合に、キャッシュメモリ3の演算部312により当該ループ制御文に係る演算処理を行う。
情報処理装置100は、コア1と、キャッシュメモリ3と、を備える。コア1は処理装置(プロセッサの一例)の一例である。キャッシュメモリ3は記憶装置の一例である。
《コアの構成》
以下、コア1の構成について説明する。
コア1はCPU(Central Processing Unit)に設けられ、演算処理を行う装置である。図1に示す情報処理装置100はコア1を複数個備えるマルチコア計算機である。例えば、情報処理装置100は、コア1を1つ備えるシングルコア計算機、コア1を2つ備えるデュアルコア計算機、コア1を4個備えるクアッドコア計算機であっても良い。
コア1は、命令発行部11と、アドレス計算部12と、クロスバ13と、を備える。
命令発行部11は、コア1と接続している主記憶装置(図示しない)からソースプログラムを読み込み(フェッチ)、デコード、命令発行、演算処理等の処理を行う。
命令発行部11は、スカラ制御部111と、ベクトル制御部112と、を備える。
図2のようなループ制御文において、間接参照を含むループによって構成されるベクトルxを第1ベクトルと呼ぶ。間接参照を含むベクトルとは、別の配列によって添字を指定される配列をいう。また、図2のようなループ制御文において間接参照を含まないベクトルyを第2ベクトルと呼ぶ。また、図2のようなループ制御文において間接参照アドレスを示すベクトルlはインデックス配列の一例である。
スカラ制御部111は、LVA命令実行の前に、コア1と接続している主記憶装置(図示しない)から演算処理の対象となる第1ベクトルデータ、第2ベクトルデータを読み込む命令をベクトル制御部に対し発行する。
ベクトル制御部112は、第1ベクトルデータと、第2ベクトルデータを、それぞれ取得するVLD命令(Vector Load)を実行する。ベクトル制御部112は、VLD命令を実行することにより、第1ベクトルデータと、第2ベクトルデータを記憶している主記憶装置から第1ベクトルデータの値と第2ベクトルデータの値とを取得してそれぞれ別のベクトルレジスタに展開する。
ベクトル制御部112は、スカラ制御部111が発行したLVA命令を受け入れて、当該LVA命令で使用するベクトルレジスタに格納されたベクトルデータに基づいてLVA命令の処理を開始する。
ベクトル制御部112は、当該LVA命令に関わるベクトルレジスタに格納されたベクトルデータをアドレス計算部12に送出する。上記LVA命令に関わるベクトルレジスタに格納されたベクトルデータとは、図2に示す第1ベクトルデータの値と、第2ベクトルデータの値である。
第1ベクトルデータの値と、第2ベクトルデータの値は、ループ制御文の演算処理の前に予めベクトルレジスタに格納される。
例えば、情報処理装置100は以下の動作により第1ベクトルデータの値と、第2ベクトルデータの値とを、ベクトルレジスタに格納する。
アドレス計算部12は、ベクトル制御部112から第1ベクトルデータの値と第2ベクトルデータの値とを受け入れて、第1ベクトルデータの値を物理アドレスに変換する。また、アドレス計算部12はループ制御文におけるループの単位で、変換された第1ベクトルデータの物理アドレスと、第1要素と、第2要素とを格納するパケットを生成して、クロスバ13に当該パケットを送出する。この際、同一アドレスを指し示す第1要素は要素順にパケットとして送出されることで、重複していても順序が保証される。アドレス計算部12は生成手段の一例である。第1要素とは、第1ベクトルデータの要素である。第2要素とは、第2ベクトルデータの要素である。
クロスバ13はアドレス計算部12が送出したパケットを受け入れて、パケットに含まれたアドレスに基づいて、各パケットをキャッシュメモリ3の対応するバンク31に同時に送出する。クロスバ13は送出手段の一例である。
例えば、クロスバ13は、予め設定されたアドレスとバンク31とを関連付けた情報であるバンク情報に、アドレス計算部12が送出したパケットに含まれたアドレスを照らし合わせて、当該アドレスに関連付けられたバンク31を特定する。また、クロスバ13は、特定されたバンク31にパケットを送出する。
バンク情報において、各アドレスは異なるバンクと関連付けられる。すなわち、アドレスが異なると、クロスバ13により送出されるバンク31が異なる。
また、クロスバ13は同一アドレスに係るパケットを同時に送出することはないように設定される。すなわち、クロスバ13は、同じバンク31宛に同時に複数のパケットを送出しない。例えば、クロスバ13は、重複するアドレスにかかる複数のパケットを同時に送出しない。クロスバ13は、重複するアドレスを情報処理装置100が備えるバッファ(図示しない)に格納させ、一定のタイミングに当該アドレスにかかるパケットを1つずつ送出する。特定のアドレスにおいて重複するパケットが3つ存在する場合、クロスバ13は、当該アドレスに対応する特定のバンク31について、3回のパケットの送出を行う。重複するアドレスに係るパケットが存在する場合でも、クロスバ13が1つずつ送出するため、バンク31は原子的に演算処理をすることができる。
また、第1の実施形態における情報処理装置100は、出力ポートにより、コア1とキャッシュメモリ3とが有線で接続される。すなわち、クロスバ13は特定されたバンク31に対応する出力ポートにパケットを送出することにより、当該パケット対応するバンク31に当該パケットを送出する。
図1において、コア1と、キャッシュメモリ3との間で接続されている線はコア1とキャッシュメモリ3間のネットワークであるが、接続形態は問わない。
《キャッシュメモリの構成》
以下、キャッシュメモリ3の構成について説明する。
キャッシュメモリ3は、コア1を備えるCPUが情報を取得する際に主記憶装置の遅延を隠蔽し、CPUと主記憶装置の性能差を埋めるために用いる高速小容量メモリである。キャッシュメモリ3は、情報処理装置100が備える複数個のコア1からアクセス可能な共有メモリである。
図1に示すように、キャッシュメモリ3は複数個のバンク31A、31B、31C、・・・を備える。バンク31A、31B、31C、・・・を区別しない場合には、バンク31という。情報処理装置100が備える複数個のコア1は、一斉にキャッシュメモリ3に対しアクセスすることができ、キャッシュメモリ3が備えるバンク31の数の分だけ同時にアクセスすることができる。バンク31は独立して読み書き可能な記憶領域である。コア1は、複数のバンクに並行してアクセス可能である。
バンク31は、データアレイ311A、311B、311C、・・・と、演算部312A、312B、312C、・・・と、コントロール部313A、313B、313C、・・・と、を備える。なお、データアレイ311A、311B、311C、・・・を区別しない場合には、データアレイ311という。また、演算部312A、312B、312C、・・・を区別しない場合には、演算部312という。また、コントロール部313A、313B、313C、・・・を区別しない場合には、コントロール部313という。キャッシュメモリ3が備える複数のバンク31のそれぞれは、コントロール部313によるデータアレイ311の読み出し、演算部312による演算処理と、コントロール部313によるデータアレイ311の格納は、一例の処理として原子的に行われる。
コントロール部313は、キャッシュメモリ3の各バンク31に設けられ、アドレスに基づいてデータアレイ311にアクセスし、当該アドレスに対応するデータをデータアレイ311のキャッシュラインから読み出す。また、コントロール部313は、読み出した第1要素に対応するデータと第2要素を加算した値を再度同じアドレスに基づいてデータアレイ311のキャッシュラインに格納する。
演算部312は、キャッシュメモリ3の各バンク31に設けられ、コア1のクロスバ13から送出されたパケットを受け入れて、パケットの単位で演算処理を行う。
演算部312の詳細な動作については後述する。
《情報処理装置の動作》
以下、情報処理装置100の動作について説明する。
図3は、情報処理装置100の動作を示すフローチャートである。
情報処理装置100は、第1ベクトルデータの値と、第2ベクトルデータの値とを、取得するベクトルロード命令(VLD命令)を実行する(ステップS1)。これにより、情報処理装置100は、第1ベクトルデータの値と、第2ベクトルデータの値とを、ベクトルレジスタに格納する。スカラ制御部111は、主記憶装置からLVA命令を読み込み、ベクトル制御部112に送出する。
ベクトル制御部112はステップS1で送出されたLVA命令を受け入れて、当該LVA命令を実行する(ステップS2)。
ベクトル制御部112は、LVA命令に関わるベクトルレジスタに格納されたベクトルデータをアドレス計算部12に送出する(ステップS3)。上記LVA命令に関わるベクトルレジスタに格納されたベクトルデータとは、ステップS1のベクトルロードに係る第1ベクトルデータの値と、第2ベクトルデータの値である。
アドレス計算部12は、ステップS3の第1ベクトルデータの値と第2ベクトルデータの値とを受け入れて、第1ベクトルデータの値を物理アドレスに変換する。また、アドレス計算部12はループ制御文におけるループの単位で、変換された第1ベクトルデータの物理アドレスと、第2ベクトルデータの要素とを格納するパケットを生成して、クロスバ13に当該パケットを送出する(ステップS4)。
クロスバ13はステップS4のパケットを受け入れて、パケットに含まれたアドレスに基づいて、各パケットをキャッシュメモリ3の対応するバンク31に同時に送出する(ステップS5)。
各バンク31のコントロール部313は、ステップS5で送出されたパケットに含まれるアドレスに基づいて、当該バンク31のデータアレイ311に当該アドレスはあるか否かを判定する(ステップS6)。例えば、コントロール部313はアドレスを、アドレスとデータアレイ311とが関連付けられた情報であるデータアレイ情報に照らし合わせて、当該アドレスがデータアレイ311にあるか否かを判定する。
コントロール部313が、ステップS5で送出されたパケットのアドレスが、データアレイ311にあると判定した場合(ステップS6:YES)、当該アドレスに基づいてデータアレイ311にアクセスして、第1ベクトルデータの要素が示す第1要素を含むキャッシュラインを読み出す。その後、コントロール部313は、読み出したキャッシュラインから、パケットのアドレスから第1要素を抽出し、第2ベクトルデータの要素第2要素と共に第1要素を演算部312に送出する(ステップS7)。
ステップS7の後、演算部312は、ステップS7で送出された値である第1要素と第2要素に基づいて演算処理を行う(ステップS8)。すなわち、演算部312は第1要素であるアドレスに対応するデータと第2要素との加算処理を行う。
他方、コントロール部313が、ステップS8で送出されたパケットのアドレスが、データアレイ311に無いと判定した場合(ステップS6:NO)、コントロール部313は、当該アドレスに基づいて主記憶装置にアクセスして、アドレスに対応するデータを読み出す(ステップS9)。コントロール部313は、主記憶装置から読み出したデータをキャッシュラインに格納し、再度アドレスの比較一致の判定を行う。コントロール部313は、キャッシュラインからアドレスに対応するデータを読み出す。その後、コントロール部313は、読み出したキャッシュラインから、パケットのアドレスから第1要素を抽出し、第2要素と共に第1要素を演算部312に送出する(ステップS7)。
ステップS9の後、演算部312はステップS9で送出された値に基づいて演算処理を行う(ステップS8)。すなわち、演算部312は第1要素であるアドレスに対応するデータと第2要素との加算処理を行う。
コントロール部313は、ステップS8の演算処理により得られた値を、パケットのアドレスに基づいてデータアレイ311に格納する(ステップS10)。
ステップS7でデータアレイ311の読み出しが発生し、ステップS10においてデータアレイ311への格納がある間、当該データアレイ311への他のアクセスは生じさせない原子的な操作、つまりこれ以上分けることのできない操作とすることで、情報処理装置100は、LVA命令の対象となるアドレスに対する後続のストア等による書き換えを防ぐことができる。本発明の実施形態は、上記の具体的な実施形態に限定されるものでなく、キャッシュメモリ3の複数のバンクにおいて原子的に演算処理を行うことにより、所定のベクトル命令などを省略しなくても、メインメモリアクセスを減らして、演算処理を高速化できる。
また、クロスバ13は、アドレスに基づいてバンク31を特定してパケットを送出するため、同一アドレスに係る演算処理が行われる場合、同一のバンク31の演算部312での演算処理とデータアレイ311への格納が行われる。このような場合であっても、同一のバンク31に係るキャッシュメモリ3のバッファでパケットを待ち合わせて、順次的に演算処理が行われる。上記の実施形態と異なる構成の情報処理装置は、重複するアドレスを含む場合、バンクに対しスカラ制御部が複数回メモリアクセスを行い、スカラ制御部で加算を行い、バンクに書き込む必要がある。これに対し、第1の実施形態に係る情報処理装置100によれば、重複するアドレスを含む加算が1度のLVA命令で完了する。また、第1の実施形態に係る情報処理装置100は、バンク31に閉じて加算を複数回実行するのみであり、コア1からのメモリアクセス回数を削減することができる。
他方、各コア1が重複の無いアドレスに係るパケットを各バンク31に送出した場合、各バンク31の演算部312は並列して演算処理を行うことができ、演算処理に係るメモリアクセスを減らすことができる。
また、上記の実施形態における記憶装置はキャッシュメモリ3であるが、記憶装置はメインメモリであっても良い。
また、上記の実施形態においては、重複するアドレスに対しアドレス計算部12がパケットの送出順序を保証することで連続実行を可能としたが、コンパイラによって重複するアドレスを含むループをあらかじめ特定し、重複するアドレスの数だけ複数回のLVA命令を発行することでも効率を高めることができる。
また、上記の実施形態におけるキャッシュメモリ3はコア1と接続されているが、キャッシュメモリ3はコア1に設けられても良い。すなわち、情報処理装置100が備える記憶装置は、コア1が備えるキャッシュメモリであっても良い。
《作用・効果》
本発明の実施形態に係る情報処理装置100は、独立して読み書き可能な記憶領域である複数のバンク31を備える記憶装置と、複数のバンクに並行してアクセス可能な処理装置と、を備え、処理装置は、ループ制御文におけるループの単位で、インデックス配列のアドレスと、ベクトルデータの要素を格納するパケットを生成する生成手段と、を備え、複数のバンク31のそれぞれは、パケットの単位で該当するアドレスに対応するデータの読み出しと演算処理と演算結果の値を格納する一連の処理を原子的に同時に行う。
情報処理装置100は、記憶装置の複数のバンク31にてパケットの単位で演算処理と格納を原子的に行う。これにより、情報処理装置100のユーザは、値が重複する間接参照を含むリストベクトルの演算処理に係るメモリアクセスを減らすことができる。
また、情報処理装置100の処理装置は、パケットに格納されたインデックス配列のアドレスに基づいて、当該パケットを送出するバンク31を特定し、当該パケットを当該バンク31に送出する送出手段、を備え、バンク31は、送出されたパケットを受け入れて演算処理を行う。
情報処理装置100は、アドレスに基づいてパケットを送出するバンク31を特定する。情報処理装置100は、特定されたバンク31にてパケットの単位で演算処理を行う。これにより、情報処理装置100のユーザは、値が重複する間接参照を含むベクトルの演算処理に係るメモリアクセスを減らすことができる。
また、情報処理装置100の記憶装置は、処理装置と有線又は無線で接続される。
これにより、処理装置と記憶装置とが分離された状態の情報処理装置100であっても、情報処理装置100のユーザは、値が重複する間接参照を含むベクトルの演算処理に係るメモリアクセスを減らすことができる。
また、情報処理装置100の記憶装置は、処理装置の内部に設けられる。
これにより、記憶装置が処理装置の内部に設けられた情報処理装置100であっても、情報処理装置100のユーザは、値が重複する間接参照を含むベクトルの演算処理に係るメモリアクセスを減らすことができる。
また、情報処理装置100の記憶装置は、キャッシュメモリ3である。
これにより、情報処理装置100のユーザは、キャッシュメモリ3の複数のバンク31を用いて、値が重複する間接参照を含むベクトルの加算処理に係るメモリアクセスを減らすことができる。
本発明の実施形態に係る情報処理方法は、独立して読み書き可能な記憶領域である複数のバンク31を備える記憶装置と、複数のバンク31に並行してアクセス可能な処理装置と、を備える情報処理装置において、ループ制御文におけるループの単位で、インデックス配列のアドレスと、ベクトルデータの要素を格納するパケットを生成するステップと、複数のバンク31のそれぞれにおいて、パケットの単位で該当するアドレスに対応するデータの読み出しと演算処理と演算結果の値を格納する一連の処理を原子的に同時に行うステップを有する。
情報処理方法を用いると、記憶装置の複数のバンク31にてパケットの単位で演算処理を行うことができる。これにより、情報処理方法のユーザは、値が重複する間接参照を含むベクトルの演算処理に係るメモリアクセスを減らすことができる。
〈他の実施形態〉
以上、図面を参照して一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、様々な設計変更等をすることが可能である。
上記の実施形態における情報処理装置100は、各バンク31において演算処理を行うが、各バンク31にパケットの待ち合わせが可能なバッファ領域を設けて、複数のバンク31でパケットの演算処理を行っても良い。この場合、情報処理装置100は各バンク31における演算部312の演算処理を待たずに、他の演算部312を用いてパケットの演算処理を行うことができ、さらなる性能向上を実現できる。
また、各バンク31の演算部312は、SIMT(Single Instruction Multiple Threads)方式やSIMD(Single Instruction Multiple Data)方式で、パケットの演算処理を行っても良い。
また、情報処理装置100は、コア1の代わりにDMU(Direct Memory Unit)を備えても良い。すなわち、情報処理装置100は、DMA(Direct Memory Access)を制御するユニットであるDMUに接続されたキャッシュメモリ3に複数設けられたバンク31を用いて、パケットの演算処理を行っても良い。
また、上記の実施形態における演算部312は加算器であるが、演算部312は別の演算器でも良い。例えば、加算器に加え乗算器も備え、LVM(List Vector Multiply)命令を追加することで、上記の実施形態を乗算に置き換えた乗算の高速化も可能である。
〈基本構成〉
図4は、情報処理装置100の基本構成を示す概略ブロック図である。
上述した実施形態では、情報処理装置100の一実施形態として図1に示す構成について説明したが、情報処理装置100の基本構成は、図4に示すとおりである。
すなわち、基本構成に係る情報処理装置100の構成は、第1の実施形態に係る情報処理装置100の構成から、クロスバ13を備えない構成である。
基本構成に係る情報処理装置100は、独立して読み書き可能な記憶領域である複数のバンク31を備える記憶装置と、複数のバンクに並行してアクセス可能な処理装置と、を備え、処理装置は、ループ制御文におけるループの単位で、インデックス配列のアドレスと、ベクトルデータの要素を格納するパケットを生成する生成手段と、を備え、複数のバンク31のそれぞれは、パケットの単位で演算処理と演算結果の値を格納する一連の処理を原子的に同時に行う。
情報処理装置100は、記憶装置の複数のバンク31にてパケットの単位で演算処理と格納を原子的に行う。これにより、情報処理装置100のユーザは、値が重複する間接参照を含むベクトルの演算処理に係るメモリアクセスを減らすことができる。
この出願は、2020年3月18日に出願された日本国特願2020-047488号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
本発明の各態様は、情報処理装置及び情報処理方法に適用してもよい。
1 コア
3 キャッシュメモリ
11 命令発行部
12 アドレス計算部
13 クロスバ
31 バンク
111 スカラ制御部
112 ベクトル制御部
311 データアレイ
312 演算部
313 コントロール部

Claims (6)

  1. 独立して読み書き可能な記憶領域である複数のバンクを備える記憶装置と、
    複数の前記バンクに並行してアクセス可能な処理装置と、
    を備え、
    前記処理装置は、ループ制御文におけるループの単位で、インデックス配列のアドレスと、ベクトルデータの要素を格納するパケットを生成する生成手段と、を備え、複数の前記バンクのそれぞれは、前記パケットの単位で該当する前記アドレスに対応するデータの読み出しと演算処理と演算結果の値を格納する一連の処理を原子的に同時に行う
    情報処理装置。
  2. 前記処理装置は、前記パケットに格納された前記インデックス配列のアドレスに基づいて、当該パケットを送出する前記バンクを特定し、当該パケットを当該バンクに送出する送出手段、を備え、
    前記バンクは、送出された前記パケットを受け入れて前記演算処理を行う
    請求項1に記載の情報処理装置。
  3. 前記記憶装置は、前記処理装置と有線又は無線で接続される
    請求項1又は請求項2に記載の情報処理装置。
  4. 前記記憶装置は、前記処理装置の内部に設けられる
    請求項1又は請求項2に記載の情報処理装置。
  5. 前記記憶装置は、キャッシュメモリである
    請求項1から請求項4の何れか1項に記載の情報処理装置。
  6. 独立して読み書き可能な記憶領域である複数のバンクを備える記憶装置と、
    複数の前記バンクに並行してアクセス可能な処理装置と、
    を備える情報処理装置によって実行される情報処理方法であって、
    ループ制御文におけるループの単位で、インデックス配列のアドレスと、ベクトルデータの要素を格納するパケットを生成するステップと、
    複数の前記バンクのそれぞれにおいて、前記パケットの単位で該当する前記アドレスに対応するデータの読み出しと演算処理と演算結果の値を格納する一連の処理を原子的に同時に行うステップと、
    を有する情報処理方法。
JP2021549697A 2020-03-18 2021-02-24 情報処理装置及び情報処理方法 Active JP7006858B1 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2020047488 2020-03-18
JP2020047488 2020-03-18
PCT/JP2021/006864 WO2021187027A1 (ja) 2020-03-18 2021-02-24 情報処理装置及び情報処理方法

Publications (2)

Publication Number Publication Date
JPWO2021187027A1 JPWO2021187027A1 (ja) 2021-09-23
JP7006858B1 true JP7006858B1 (ja) 2022-01-24

Family

ID=77768107

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021549697A Active JP7006858B1 (ja) 2020-03-18 2021-02-24 情報処理装置及び情報処理方法

Country Status (4)

Country Link
US (1) US20220283947A1 (ja)
EP (1) EP4002106A4 (ja)
JP (1) JP7006858B1 (ja)
WO (1) WO2021187027A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0554059A (ja) * 1991-08-29 1993-03-05 Nec Corp ベクトル処理装置
JPH0619957A (ja) * 1992-06-16 1994-01-28 Nec Corp ベクトルデータ処理装置
JP2011514598A (ja) * 2008-03-28 2011-05-06 インテル コーポレイション 効率的な同期および並列リダクション演算を可能にするベクトル命令
JP2015530674A (ja) * 2012-09-28 2015-10-15 インテル・コーポレーション コンフリクト検出を実行し、レジスタの複数のコンテンツを別のレジスタの複数のデータ要素位置にブロードキャストするための複数のシステム、複数の装置及び複数の方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1994003860A1 (en) * 1992-08-07 1994-02-17 Thinking Machines Corporation Massively parallel computer including auxiliary vector processor
US6446165B1 (en) * 1999-07-30 2002-09-03 International Business Machines Corporation Address dependent caching behavior within a data processing system having HSA (hashed storage architecture)
JP2002108837A (ja) * 2000-09-29 2002-04-12 Nec Corp 計算機システムとその計算制御方法
US7627735B2 (en) * 2005-10-21 2009-12-01 Intel Corporation Implementing vector memory operations
US7792895B1 (en) * 2006-06-16 2010-09-07 Nvidia Corporation Efficient matrix multiplication on a parallel processing device
US10387151B2 (en) * 2007-12-31 2019-08-20 Intel Corporation Processor and method for tracking progress of gathering/scattering data element pairs in different cache memory banks
US20140115278A1 (en) * 2012-10-23 2014-04-24 Analog Devices, Inc. Memory architecture
US9201828B2 (en) * 2012-10-23 2015-12-01 Analog Devices, Inc. Memory interconnect network architecture for vector processor
US9612833B2 (en) * 2014-02-28 2017-04-04 Intel Corporation Handling compressed data over distributed cache fabric
CN115100016A (zh) * 2015-06-10 2022-09-23 无比视视觉技术有限公司 用于处理图像的图像处理器和方法
US10235299B2 (en) * 2016-11-07 2019-03-19 Samsung Electronics Co., Ltd. Method and device for processing data
US10776312B2 (en) * 2017-03-14 2020-09-15 Azurengine Technologies Zhuhai Inc. Shared memory access for a reconfigurable parallel processor with a plurality of chained memory ports
JP6673419B2 (ja) 2018-09-19 2020-03-25 株式会社オートネットワーク技術研究所 配線部材

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0554059A (ja) * 1991-08-29 1993-03-05 Nec Corp ベクトル処理装置
JPH0619957A (ja) * 1992-06-16 1994-01-28 Nec Corp ベクトルデータ処理装置
JP2011514598A (ja) * 2008-03-28 2011-05-06 インテル コーポレイション 効率的な同期および並列リダクション演算を可能にするベクトル命令
JP2015530674A (ja) * 2012-09-28 2015-10-15 インテル・コーポレーション コンフリクト検出を実行し、レジスタの複数のコンテンツを別のレジスタの複数のデータ要素位置にブロードキャストするための複数のシステム、複数の装置及び複数の方法

Also Published As

Publication number Publication date
EP4002106A4 (en) 2022-11-16
US20220283947A1 (en) 2022-09-08
JPWO2021187027A1 (ja) 2021-09-23
WO2021187027A1 (ja) 2021-09-23
EP4002106A1 (en) 2022-05-25

Similar Documents

Publication Publication Date Title
CN109522254B (zh) 运算装置及方法
US11868628B2 (en) On-chip atomic transaction engine
KR102304216B1 (ko) 벡터 계산 장치
TWI789358B (zh) 一種能支援不同位元寬運算資料的運算單元、方法及裝置
US4964035A (en) Vector processor capable of high-speed access to processing results from scalar processor
KR100538727B1 (ko) 멀티 프로세서 시스템
JPS6161436B2 (ja)
GB2297638A (en) Transferring data between memory and processor via vector buffers
CN107315717B (zh) 一种用于执行向量四则运算的装置和方法
CN110908716B (zh) 一种向量聚合装载指令的实现方法
JP6493088B2 (ja) 演算処理装置及び演算処理装置の制御方法
KR100281007B1 (ko) 마이크로 프로세서 및 이를 사용한 그래픽처리 장치 및 그래픽처리 방법
KR20220016993A (ko) 그래픽 처리 유닛(Graphics Processing Unit, GPU)의 명시적 독립 마스크 레지스터의 마스크 조작 방법
US5530889A (en) Hierarchical structure processor having at least one sub-sequencer for executing basic instructions of a macro instruction
US5710932A (en) Parallel computer comprised of processor elements having a local memory and an enhanced data transfer mechanism
JP7006858B1 (ja) 情報処理装置及び情報処理方法
JP4144153B2 (ja) ベクトルレジスタを備えたコンピュータにおけるベクトルテールゲーティング
JP2000353092A (ja) 情報処理装置及びそのレジスタファイル切替方法
US7594080B2 (en) Temporary storage of memory line while waiting for cache eviction
US20210089305A1 (en) Instruction executing method and apparatus
JP2008102599A (ja) プロセッサ
JP2020140284A (ja) ベクトル演算処理装置、ベクトル演算処理装置による配列変数初期化方法、及び、ベクトル演算処理装置による配列変数初期化プログラム
JPH10116191A (ja) 圧縮命令用バッファを備えたプロセッサ
JP2000099496A (ja) キャッシュ記憶装置
JPH07110769A (ja) Vliw型計算機

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210824

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20210824

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211220

R151 Written notification of patent or utility model registration

Ref document number: 7006858

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151