JP6843187B2 - ダブルロード命令 - Google Patents
ダブルロード命令 Download PDFInfo
- Publication number
- JP6843187B2 JP6843187B2 JP2019113331A JP2019113331A JP6843187B2 JP 6843187 B2 JP6843187 B2 JP 6843187B2 JP 2019113331 A JP2019113331 A JP 2019113331A JP 2019113331 A JP2019113331 A JP 2019113331A JP 6843187 B2 JP6843187 B2 JP 6843187B2
- Authority
- JP
- Japan
- Prior art keywords
- register
- instruction
- stride
- load
- offset
- 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
- 238000013528 artificial neural network Methods 0.000 claims description 23
- 238000000034 method Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 4
- 238000012545 processing Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 18
- 230000009897 systematic effect Effects 0.000 description 14
- 238000004422 calculation algorithm Methods 0.000 description 13
- 238000013461 design Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000012447 hatching Effects 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000005303 weighing Methods 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- 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/30141—Implementation provisions of register files, e.g. ports
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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
- G06F9/3455—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Neurology (AREA)
- Executing Machine-Instructions (AREA)
Description
図1は、本開示の実施形態による、少なくとも1つの処理モジュール4を含むプロセッサの例を示す。実施形態では、プロセッサは、複数の処理モジュール4または「タイル」を含んでもよく、複数の処理モジュール4は、同じチップ(すなわち、ダイ)上に実装され、互いに通信できるようにする相互接続構造を介して共に接続される。
ldb16b16 $aDst0:Dst0+1,$mBase0,$mOffset++,$mDelta>>
base_addr=$mBase[20:0] // ベースレジスタからベースアドレスを読み取る。
woffset=$mOffset[31:16] // オフセットレジスタの第1のフィールドから重みオフセットを読み取る。
doffset=$mOffset[15:0] // オフセットレジスタの第2のフィールドからデータオフセットを読み取る。
delta=$mDelta[3:0] // デルタレジスタの最下位4ビットからストライドを読み取る。
EA[0]=base_addr+woffset // 重みアドレスオフセットをベースアドレスに加える。
EA[1]=base_addr+doffset // データアドレスオフセットをベースアドレスに加える。
woffset+=2 // 重みアドレスオフセットを2バイトだけインクリメントする。
mdelta=(delta+1)*2 // ストライドを演算する(単位:バイト)
doffset+=mdelta // データアドレスオフセットをストライドの分だけインクリメントする。
$mOffset:=(woffset<<16)|doffset // インクリメントしたオフセットをオフセットレジスタに書き戻す。
$mDelta:=$mDelta>>4 // 次のストライドを得るためにストライドデルタを4ビットだけ右にシフトする。
10 処理装置
11 ローカルメモリ
12 命令メモリ
13 パイプライン
14 フェッチ
16 復号
18 実行ユニット
22 データメモリ
26 コンテキストレジスタ
55 ロード/ストアユニット
58 論理ユニット
100 ニューラルネットワーク
102 ノード
104 エッジ
Claims (15)
- 実行ユニットと、メモリと、1つまたは複数のレジスタファイルとを含むプロセッサであって、前記実行ユニットが、命令セットにおいて定義される機械語命令のインスタンスを実行するように構成され、
前記命令セットは、前記メモリの送信元アドレスに存在する値を前記1つまたは複数のレジスタファイルの少なくとも1つにロードするためのダブルロード命令を含み、
前記実行ユニットは、前記ダブルロード命令の複数のインスタンスが実行されると、各インスタンスの実行毎に第1の送信元アドレスを固定ストライドの分だけインクリメントさせる第1のロード操作、および、各インスタンスの実行毎に第2の送信元アドレスを可変ストライドの分だけインクリメントさせる第2のロード操作を実行するように構成され、前記可変ストライドは、前記1つまたは複数のレジスタファイルのうち1つの可変ストライドレジスタにおいて指定される、プロセッサ。 - 前記第1のロード操作の後に前記固定ストライドを適用し、前記第2のロード操作の後に前記可変ストライドを適用するように構成されるロード/ストアユニットをさらに含む、請求項1に記載のプロセッサ。
- 前記ダブルロード命令は、前記第1の送信元アドレスと、前記第1のロード操作に対する前記1つまたは複数のレジスタファイルのうち1つの第1の送信先と、前記第2の送信元アドレスと、前記第2のロード操作に対する前記1つまたは複数のレジスタファイルのうち1つの第2の送信先と、を指定するオペランドを取り、前記第1の送信元アドレスは、前記1つまたは複数のレジスタファイルのうち1つのオフセットレジスタの第1のオフセットによって指定され、前記第2の送信元アドレスは、前記1つまたは複数のレジスタファイルのうち1つのオフセットレジスタの第2のオフセットによって指定され、
前記実行ユニットは、前記ダブルロード命令が実行されると、前記第1の送信元アドレスから前記第1の送信先に第1の値をロードすることによって前記第1のロード操作を実行し、前記固定ストライドを前記第1のオフセットに適用し、前記第2の送信元アドレスから前記第2の送信先に第2の値をロードすることによって前記第2のロード操作を実行し、前記可変ストライドを前記第2のオフセットに適用するように構成される、請求項1または2に記載のプロセッサ。 - 前記第1および第2のオフセットは、前記1つまたは複数のレジスタファイルのうち1つの同じオフセットレジスタの異なるフィールドに保持され、前記実行ユニットは、前記固定および可変ストライドを前記第1および第2のオフセットにそれぞれ加え、次いで、前記オフセットレジスタに書き戻すことによって、前記ストライドを適用するように構成される、請求項3に記載のプロセッサ。
- 前記オフセットレジスタは、前記ダブルロード命令のオペランドによって指定される、請求項4に記載のプロセッサ。
- 前記実行ユニットは、前記第1のオフセットを非ゼロベースアドレスに加えることによって前記第1の送信元アドレスを決定し、前記第2のオフセットを非ゼロベースアドレスに加えることによって前記第2の送信元アドレスを決定するように構成される、請求項3〜5のいずれか一項に記載のプロセッサ。
- 前記第1および第2の送信元アドレスに対して同じベースアドレスが使用される、請求項6に記載のプロセッサ。
- 前記ベースアドレスは、前記1つまたは複数のレジスタファイルのうちの1つのレジスタファイルのベースアドレスレジスタにおいて指定される、請求項7に記載のプロセッサ。
- 前記ダブルロード命令は、前記ベースアドレスを指定するオペランドを取る、請求項8に記載のプロセッサ。
- 前記ダブルロード命令は、前記可変ストライドレジスタを指定するオペランドを取る、請求項1〜9のいずれか一項に記載のプロセッサ。
- 前記可変ストライドレジスタは複数のフィールドを有し、前記可変ストライドレジスタの少なくともいくつかのフィールドのそれぞれにストライド値を保持するように構成され、前記実行ユニットは、ダブルロード命令の各インスタンスの実行毎に前記可変ストライドレジスタの異なるフィールドに保持されたストライド値を使用して前記可変ストライドの値の変更を実行するように構成される、請求項1〜10のいずれか一項に記載のプロセッサ。
- 前記実行ユニットは、前記ダブルロード命令の各インスタンスの実行毎に1つのフィールドに相当するビット数の分だけ前記可変ストライドレジスタのコンテンツをシフトすることによって前記可変ストライドの値の前記変更を実行するように構成される、請求項11に記載のプロセッサ。
- ニューラルネットワークの少なくとも一部を実現するプログラムを実行するようにプログラムされ、前記プログラムは、前記ダブルロード命令の複数のインスタンスを含み、各インスタンスでは、前記第1のロード操作は、ニューラルネットワークの重みをロードするために使用され、前記第2のロード操作は、前記ニューラルネットワークによる動作の基となるデータをロードするために使用される、請求項1〜12のいずれか一項に記載のプロセッサ。
- コンピュータ可読記憶媒体上で具体化されるコンピュータプログラムであって、請求項1〜13のいずれか一項に記載のプロセッサによって実行されるように構成されたコードであって、前記ダブルロード命令の複数のインスタンスを含むコードを含む、コンピュータプログラム。
- 実行ユニットと、メモリと、1つまたは複数のレジスタファイルとを含むプロセッサを操作するための方法であって、前記実行ユニットは、命令セットにおいて定義される機械語命令のインスタンスを実行するように構成され、
前記命令セットは、前記メモリの送信元アドレスに存在する値を前記1つまたは複数のレジスタファイルの少なくとも1つにロードするためのダブルロード命令を含み、
前記方法は、前記実行ユニットを通じて前記ダブルロード命令の複数のインスタンスを実行するステップを含み、前記実行ユニットは、前記ダブルロード命令の各インスタンスの実行毎に第1の送信元アドレスを固定ストライドの分だけインクリメントさせる第1のロード操作と、前記ダブルロード命令の各インスタンスの実行毎に第2の送信元アドレスを可変ストライドの分だけインクリメントさせる第2のロード操作とを実行することによって、前記ダブルロード命令の前記インスタンスの各々を実行するように構成され、前記可変ストライドが、前記1つまたは複数のレジスタファイルのうちの1つのレジスタファイルの可変ストライドレジスタにおいて指定される、方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1900848.1A GB2580664B (en) | 2019-01-22 | 2019-01-22 | Double load instruction |
GB1900848.1 | 2019-01-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2020119490A JP2020119490A (ja) | 2020-08-06 |
JP6843187B2 true JP6843187B2 (ja) | 2021-03-17 |
Family
ID=65656024
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019113331A Active JP6843187B2 (ja) | 2019-01-22 | 2019-06-19 | ダブルロード命令 |
Country Status (7)
Country | Link |
---|---|
US (1) | US11061679B2 (ja) |
JP (1) | JP6843187B2 (ja) |
CN (1) | CN111459548B (ja) |
CA (1) | CA3040894C (ja) |
DE (1) | DE102019112186A1 (ja) |
FR (1) | FR3091937B1 (ja) |
GB (1) | GB2580664B (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB202112803D0 (en) | 2021-09-08 | 2021-10-20 | Graphcore Ltd | Processing device using variable stride pattern |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002517038A (ja) | 1998-05-27 | 2002-06-11 | エイアールエム リミテッド | 再循環レジスタファイル |
AU2003286131A1 (en) | 2002-08-07 | 2004-03-19 | Pact Xpp Technologies Ag | Method and device for processing data |
US7275148B2 (en) * | 2003-09-08 | 2007-09-25 | Freescale Semiconductor, Inc. | Data processing system using multiple addressing modes for SIMD operations and method thereof |
US7487296B1 (en) * | 2004-02-19 | 2009-02-03 | Sun Microsystems, Inc. | Multi-stride prefetcher with a recurring prefetch table |
US8145877B2 (en) * | 2008-03-31 | 2012-03-27 | Xilinx, Inc. | Address generation for quadratic permutation polynomial interleaving |
US8458685B2 (en) * | 2009-06-12 | 2013-06-04 | Cray Inc. | Vector atomic memory operation vector update system and method |
US8850166B2 (en) | 2010-02-18 | 2014-09-30 | International Business Machines Corporation | Load pair disjoint facility and instruction therefore |
WO2013048369A1 (en) * | 2011-09-26 | 2013-04-04 | Intel Corporation | Instruction and logic to provide vector load-op/store-op with stride functionality |
US10049061B2 (en) * | 2012-11-12 | 2018-08-14 | International Business Machines Corporation | Active memory device gather, scatter, and filter |
US9619229B2 (en) * | 2012-12-27 | 2017-04-11 | Intel Corporation | Collapsing of multiple nested loops, methods and instructions |
US9582422B2 (en) * | 2014-12-24 | 2017-02-28 | Intel Corporation | Hardware prefetcher for indirect access patterns |
US20160313995A1 (en) * | 2015-04-24 | 2016-10-27 | Optimum Semiconductor Technologies, Inc. | Computer processor with indirect only branching |
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 |
US20170192783A1 (en) * | 2015-12-30 | 2017-07-06 | Elmoustapha Ould-Ahmed-Vall | Systems, Apparatuses, and Methods for Stride Load |
US20170192782A1 (en) * | 2015-12-30 | 2017-07-06 | Robert Valentine | Systems, Apparatuses, and Methods for Aggregate Gather and Stride |
US10108538B1 (en) | 2017-07-31 | 2018-10-23 | Google Llc | Accessing prologue and epilogue data |
US20190332924A1 (en) * | 2018-04-27 | 2019-10-31 | International Business Machines Corporation | Central scheduler and instruction dispatcher for a neural inference processor |
US10769070B2 (en) * | 2018-09-25 | 2020-09-08 | Arm Limited | Multiple stride prefetching |
GB2584268B (en) | 2018-12-31 | 2021-06-30 | Graphcore Ltd | Load-Store Instruction |
-
2019
- 2019-01-22 GB GB1900848.1A patent/GB2580664B/en active Active
- 2019-04-19 US US16/389,682 patent/US11061679B2/en active Active
- 2019-04-23 CA CA3040894A patent/CA3040894C/en active Active
- 2019-05-09 DE DE102019112186.8A patent/DE102019112186A1/de active Pending
- 2019-06-07 FR FR1906116A patent/FR3091937B1/fr active Active
- 2019-06-19 JP JP2019113331A patent/JP6843187B2/ja active Active
- 2019-06-25 CN CN201910558284.9A patent/CN111459548B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
GB2580664B (en) | 2021-01-13 |
CN111459548A (zh) | 2020-07-28 |
CN111459548B (zh) | 2024-03-22 |
FR3091937B1 (fr) | 2021-12-24 |
US11061679B2 (en) | 2021-07-13 |
JP2020119490A (ja) | 2020-08-06 |
DE102019112186A1 (de) | 2020-07-23 |
US20200233670A1 (en) | 2020-07-23 |
CA3040894C (en) | 2022-03-22 |
CA3040894A1 (en) | 2020-07-22 |
FR3091937A1 (fr) | 2020-07-24 |
GB2580664A (en) | 2020-07-29 |
GB201900848D0 (en) | 2019-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200394495A1 (en) | System and architecture of neural network accelerator | |
TWI787313B (zh) | 資料處理設備中的資料項中的計數元件 | |
JP6944974B2 (ja) | ロード/ストア命令 | |
CN112559051A (zh) | 使用脉动阵列和融合操作的深度学习实现方式 | |
KR102379899B1 (ko) | 벡터 술어 명령 | |
JP6918051B2 (ja) | マルチスレッドプロセッサの命令キャッシュ | |
GB2480338A (en) | Conditional compare instruction using a status register | |
TW201805835A (zh) | 一種能支援不同位元寬運算資料的運算單元、方法及裝置 | |
JP2019517060A (ja) | ベクトル演算を実行する際にアドレス衝突を管理するための装置及び方法 | |
US11907158B2 (en) | Vector processor with vector first and multiple lane configuration | |
JP2020501270A (ja) | パーティション・レプリケート命令 | |
CN115599742A (zh) | 用于阵列处理器的装置及相关方法 | |
JP6843187B2 (ja) | ダブルロード命令 | |
JP2020501274A (ja) | 要素レプリケート命令 | |
JP7377208B2 (ja) | データ処理 | |
US20230196124A1 (en) | Runtime predictors for neural network computation reduction | |
CN105404588B (zh) | 处理器和其中生成数据存储操作的一个或多个地址的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190628 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20200525 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20200818 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20201112 |
|
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: 20210202 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210222 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6843187 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |