JP7006858B1 - 情報処理装置及び情報処理方法 - Google Patents
情報処理装置及び情報処理方法 Download PDFInfo
- 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
Links
- 230000010365 information processing Effects 0.000 title claims abstract description 77
- 238000003672 processing method Methods 0.000 title claims description 11
- 230000005540 biological transmission Effects 0.000 claims description 4
- 238000000034 method Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 7
- 238000003491 array Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Images
Classifications
-
- 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/3001—Arithmetic instructions
-
- 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
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0853—Cache with multiport tag or data arrays
-
- 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
- G06F12/0875—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System 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/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
Abstract
Description
DO I = 1, N
X(L(I)) = X(L(I)) + Y(I)
ENDDO
リスト総和演算は、ベクトル演算処理の機構を備える装置において、間接参照のアドレスL(I)が重複することによりベクトル演算できない場合がある。この場合、ベクトル処理部ではベクトル処理できず、多数のスカラ処理とメモリアクセスによって処理せざるを得ない。
《情報処理装置の構成》
以下、図面を参照しながら実施形態について詳しく説明する。
図1は、第1の実施形態に係る情報処理装置100の構成を示す図である。
第1の実施形態に係る情報処理装置100は、演算処理の対象となるデータを格納したベクトルレジスタに対し、LVA(List Vector Add)命令を発行し、キャッシュメモリ3(メモリの一例)において、演算処理の対象のデータを原子的に処理する装置である。原子的に処理するとは、アトミック性が保たれる、つまり、一連のものとして定義された処理が完了したか1つも実行されないかのどちらかとして扱われ、処理が完了した場合には完了した瞬間に一連の処理が実行されたものとすることである。
情報処理装置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は、スカラ制御部111と、ベクトル制御部112と、を備える。
ベクトル制御部112は、当該LVA命令に関わるベクトルレジスタに格納されたベクトルデータをアドレス計算部12に送出する。上記LVA命令に関わるベクトルレジスタに格納されたベクトルデータとは、図2に示す第1ベクトルデータの値と、第2ベクトルデータの値である。
例えば、情報処理装置100は以下の動作により第1ベクトルデータの値と、第2ベクトルデータの値とを、ベクトルレジスタに格納する。
例えば、クロスバ13は、予め設定されたアドレスとバンク31とを関連付けた情報であるバンク情報に、アドレス計算部12が送出したパケットに含まれたアドレスを照らし合わせて、当該アドレスに関連付けられたバンク31を特定する。また、クロスバ13は、特定されたバンク31にパケットを送出する。
また、クロスバ13は同一アドレスに係るパケットを同時に送出することはないように設定される。すなわち、クロスバ13は、同じバンク31宛に同時に複数のパケットを送出しない。例えば、クロスバ13は、重複するアドレスにかかる複数のパケットを同時に送出しない。クロスバ13は、重複するアドレスを情報処理装置100が備えるバッファ(図示しない)に格納させ、一定のタイミングに当該アドレスにかかるパケットを1つずつ送出する。特定のアドレスにおいて重複するパケットが3つ存在する場合、クロスバ13は、当該アドレスに対応する特定のバンク31について、3回のパケットの送出を行う。重複するアドレスに係るパケットが存在する場合でも、クロスバ13が1つずつ送出するため、バンク31は原子的に演算処理をすることができる。
また、第1の実施形態における情報処理装置100は、出力ポートにより、コア1とキャッシュメモリ3とが有線で接続される。すなわち、クロスバ13は特定されたバンク31に対応する出力ポートにパケットを送出することにより、当該パケット対応するバンク31に当該パケットを送出する。
以下、キャッシュメモリ3の構成について説明する。
キャッシュメモリ3は、コア1を備えるCPUが情報を取得する際に主記憶装置の遅延を隠蔽し、CPUと主記憶装置の性能差を埋めるために用いる高速小容量メモリである。キャッシュメモリ3は、情報処理装置100が備える複数個のコア1からアクセス可能な共有メモリである。
演算部312は、キャッシュメモリ3の各バンク31に設けられ、コア1のクロスバ13から送出されたパケットを受け入れて、パケットの単位で演算処理を行う。
演算部312の詳細な動作については後述する。
以下、情報処理装置100の動作について説明する。
図3は、情報処理装置100の動作を示すフローチャートである。
ベクトル制御部112は、LVA命令に関わるベクトルレジスタに格納されたベクトルデータをアドレス計算部12に送出する(ステップS3)。上記LVA命令に関わるベクトルレジスタに格納されたベクトルデータとは、ステップS1のベクトルロードに係る第1ベクトルデータの値と、第2ベクトルデータの値である。
ステップS9の後、演算部312はステップS9で送出された値に基づいて演算処理を行う(ステップS8)。すなわち、演算部312は第1要素であるアドレスに対応するデータと第2要素との加算処理を行う。
本発明の実施形態に係る情報処理装置100は、独立して読み書き可能な記憶領域である複数のバンク31を備える記憶装置と、複数のバンクに並行してアクセス可能な処理装置と、を備え、処理装置は、ループ制御文におけるループの単位で、インデックス配列のアドレスと、ベクトルデータの要素を格納するパケットを生成する生成手段と、を備え、複数のバンク31のそれぞれは、パケットの単位で該当するアドレスに対応するデータの読み出しと演算処理と演算結果の値を格納する一連の処理を原子的に同時に行う。
これにより、処理装置と記憶装置とが分離された状態の情報処理装置100であっても、情報処理装置100のユーザは、値が重複する間接参照を含むベクトルの演算処理に係るメモリアクセスを減らすことができる。
これにより、記憶装置が処理装置の内部に設けられた情報処理装置100であっても、情報処理装置100のユーザは、値が重複する間接参照を含むベクトルの演算処理に係るメモリアクセスを減らすことができる。
これにより、情報処理装置100のユーザは、キャッシュメモリ3の複数のバンク31を用いて、値が重複する間接参照を含むベクトルの加算処理に係るメモリアクセスを減らすことができる。
以上、図面を参照して一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、様々な設計変更等をすることが可能である。
図4は、情報処理装置100の基本構成を示す概略ブロック図である。
上述した実施形態では、情報処理装置100の一実施形態として図1に示す構成について説明したが、情報処理装置100の基本構成は、図4に示すとおりである。
すなわち、基本構成に係る情報処理装置100の構成は、第1の実施形態に係る情報処理装置100の構成から、クロスバ13を備えない構成である。
3 キャッシュメモリ
11 命令発行部
12 アドレス計算部
13 クロスバ
31 バンク
111 スカラ制御部
112 ベクトル制御部
311 データアレイ
312 演算部
313 コントロール部
Claims (6)
- 独立して読み書き可能な記憶領域である複数のバンクを備える記憶装置と、
複数の前記バンクに並行してアクセス可能な処理装置と、
を備え、
前記処理装置は、ループ制御文におけるループの単位で、インデックス配列のアドレスと、ベクトルデータの要素を格納するパケットを生成する生成手段と、を備え、複数の前記バンクのそれぞれは、前記パケットの単位で該当する前記アドレスに対応するデータの読み出しと演算処理と演算結果の値を格納する一連の処理を原子的に同時に行う
情報処理装置。 - 前記処理装置は、前記パケットに格納された前記インデックス配列のアドレスに基づいて、当該パケットを送出する前記バンクを特定し、当該パケットを当該バンクに送出する送出手段、を備え、
前記バンクは、送出された前記パケットを受け入れて前記演算処理を行う
請求項1に記載の情報処理装置。 - 前記記憶装置は、前記処理装置と有線又は無線で接続される
請求項1又は請求項2に記載の情報処理装置。 - 前記記憶装置は、前記処理装置の内部に設けられる
請求項1又は請求項2に記載の情報処理装置。 - 前記記憶装置は、キャッシュメモリである
請求項1から請求項4の何れか1項に記載の情報処理装置。 - 独立して読み書き可能な記憶領域である複数のバンクを備える記憶装置と、
複数の前記バンクに並行してアクセス可能な処理装置と、
を備える情報処理装置によって実行される情報処理方法であって、
ループ制御文におけるループの単位で、インデックス配列のアドレスと、ベクトルデータの要素を格納するパケットを生成するステップと、
複数の前記バンクのそれぞれにおいて、前記パケットの単位で該当する前記アドレスに対応するデータの読み出しと演算処理と演算結果の値を格納する一連の処理を原子的に同時に行うステップと、
を有する情報処理方法。
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)
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)
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 | 株式会社オートネットワーク技術研究所 | 配線部材 |
-
2021
- 2021-02-24 JP JP2021549697A patent/JP7006858B1/ja active Active
- 2021-02-24 WO PCT/JP2021/006864 patent/WO2021187027A1/ja unknown
- 2021-02-24 EP EP21771978.0A patent/EP4002106A4/en active Pending
- 2021-02-24 US US17/637,621 patent/US20220283947A1/en active Pending
Patent Citations (4)
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 |