JP2021507352A - メモリ装置及びそれを制御するための方法 - Google Patents
メモリ装置及びそれを制御するための方法 Download PDFInfo
- Publication number
- JP2021507352A JP2021507352A JP2020531604A JP2020531604A JP2021507352A JP 2021507352 A JP2021507352 A JP 2021507352A JP 2020531604 A JP2020531604 A JP 2020531604A JP 2020531604 A JP2020531604 A JP 2020531604A JP 2021507352 A JP2021507352 A JP 2021507352A
- Authority
- JP
- Japan
- Prior art keywords
- storage
- storage blocks
- block
- blocks
- storage block
- 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
Links
- 238000000034 method Methods 0.000 title claims description 44
- 238000003860 storage Methods 0.000 claims abstract description 395
- 230000015654 memory Effects 0.000 claims description 124
- 238000012545 processing Methods 0.000 claims description 119
- 230000036316 preload Effects 0.000 claims description 39
- 238000004364 calculation method Methods 0.000 claims description 22
- 230000003068 static effect Effects 0.000 claims description 3
- 230000008878 coupling Effects 0.000 claims 1
- 238000010168 coupling process Methods 0.000 claims 1
- 238000005859 coupling reaction Methods 0.000 claims 1
- 238000013528 artificial neural network Methods 0.000 description 26
- 238000004891 communication Methods 0.000 description 17
- 230000000875 corresponding effect Effects 0.000 description 15
- 238000013135 deep learning Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 230000009471 action Effects 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 239000000872 buffer Substances 0.000 description 6
- 239000011159 matrix material Substances 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000013506 data mapping Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 230000001276 controlling effect Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000003638 chemical reducing agent Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000008278 dynamic mechanism Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000003754 machining Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000013341 scale-up Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000000946 synaptic effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Memory System (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
- Semiconductor Memories (AREA)
Abstract
Description
[0001] 本出願は、「An Efficient SRAM Organization to Enable a Wider Single Instruction Multiple Data Machine and Software Pipelining」という名称の2017年12月22日に出願された米国仮特許出願第62/610,089号に基づき、その優先権を主張するものであり、その全内容は、参照により本明細書に組み込まれる。
[0002] ディープニューラルネットワークアルゴリズムは、大多数の行列計算を伴い、一般に、非常に広範な単一命令複数データ(SIMD)処理ユニット及び大容量のオンチップストレージを伴うハードウェアアーキテクチャをもたらす。ディープラーニングの本質により、時折、異なるSIMDレーンがデータを交換する必要がある。クロスレーンデータ処理及び演算を提供する多くのメモリアーキテクチャが存在するが、これらのアーキテクチャは、メモリアクセス待ち時間、バンクコンフリクト問題、性能問題などの受け入れ難い増加などのいくつかの理由のために不完全である。
[0003] 本開示は、SIMDアーキテクチャを有する演算デバイスに含まれるスタティックランダムアクセスメモリ(SRAM)装置を提供する。例示的な実施形態のいくつかは、コアのメモリ装置を対象とする。メモリ装置は、第1の演算層(computation layer)における読み取り記憶ブロックのセットとして及び第2の演算層における書き込み記憶ブロックのセットとして動作するように構成された第1の記憶ブロックのセットを含む。第2の演算層は、第1の演算層に続く。第2の記憶ブロックのセットは、第1の演算層における書き込み記憶ブロックのセットとして及び第2の演算層における読み取り記憶ブロックのセットとして動作するように構成される。
[0011] 本開示の実施形態及び様々な態様は、以下の詳細な説明及び添付の図に示される。図に示される様々な特徴は、原寸に比例しない。
[0024] 以下の説明は、添付の図面を参照し、添付の図面では、異なる図面の同じ番号は、別段の表現がない限り、同じ又は同様の要素を表す。例示的な実施形態の以下の説明に記載される実装形態は、本発明と一致するすべての実装形態を表すわけではない。代わりに、それらの実装形態は、添付の特許請求の範囲に記述されるように、本発明に関連する態様と一致する装置及び方法の単なる例である。
A=sigmoid(b+X*W1) (式1)
のベクトル演算を演算し、これは、ディープラーニングアルゴリズムにおいて呼び出される場合が多いニューラルネットワークの層200における代表的な演算である。式1を参照すると、「b」は、一定の値を含み得、「X」は、共有入力オペランド274を含み得、「W1」は、プライベート入力オペランド272を含み得る。
a1=sigmoid(b+x1*W111+x2*W121+x3*W131+x4*W141) (式2)
a2=sigmoid(b+x1*W112+x2*W122+x3*W132+x4*W142) (式3)
a3=sigmoid(b+x1*W113+x2*W123+x3*W133+x4*W143) (式4)
a4=sigmoid(b+x1*W114+x2*W124+x3*W134+x4*W144) (式5)
Claims (39)
- 少なくとも1つのコアのメモリ装置であって、
第1の演算層における読み取り記憶ブロックのセットとして及び第2の演算層における書き込み記憶ブロックのセットとして動作するように構成された第1の記憶ブロックのセットであって、前記第2の演算層は、前記第1の演算層に続く、第1の記憶ブロックのセットと、
前記第1の演算層における書き込み記憶ブロックのセットとして及び前記第2の演算層における読み取り記憶ブロックのセットとして動作するように構成された第2の記憶ブロックのセットと、
前記第1及び第2の記憶ブロックのセットの各記憶ブロックに通信可能に結合された第1の読み取りポートであって、前記読み取り記憶ブロックのセットの第1の読み取り記憶ブロックからオペランドを受信し、且つ前記受信されたオペランドを前記少なくとも1つのコアの少なくとも1つの処理ユニットに提供するように構成された第1の読み取りポートと、
前記第1及び第2の記憶ブロックのセットの各記憶ブロックに通信可能に結合された第2の読み取りポートであって、前記読み取り記憶ブロックのセットの第2の読み取り記憶ブロックから1つ又は複数のオペランドを受信し、且つ前記受信された1つ又は複数のオペランドを前記少なくとも1つのコアの前記少なくとも1つの処理ユニットに提供するように構成された第2の読み取りポートと、
前記第1及び第2の記憶ブロックのセットの各記憶ブロックに通信可能に結合された第1の書き込みポートであって、格納のために1つ又は複数のオペランドを前記書き込み記憶ブロックのセットの第1の書き込み記憶ブロックに提供するように構成された第1の書き込みポートと
を含むメモリ装置。 - 前記第1及び第2の記憶ブロックのセットの各記憶ブロックに通信可能に結合された第2の書き込みポートであって、格納のためにオペランドを前記書き込み記憶ブロックのセットの第2の書き込み記憶ブロックに提供するように構成された第2の書き込みポートをさらに含む、請求項1に記載のメモリ装置。
- 前記第1の記憶ブロックのセットは、第1及び第2の記憶ブロックを含み、及び前記第1の演算層内において、前記第1の記憶ブロックのセットの第1及び第2の記憶ブロックは、演算モードで動作するように構成され、それにより、前記第1の記憶ブロックのセットの前記第1及び第2の記憶ブロックは、前記第1の演算層において実行される演算で使用される前記オペランドを、それぞれ前記第1及び第2の読み取りポートを介して前記少なくとも1つの処理ユニットへと読み取るように構成される、請求項1又は2に記載のメモリ装置。
- 前記第2の記憶ブロックのセットは、第1の記憶ブロック及び第2の記憶ブロックを含み、及び前記第1の演算層内において、前記第2の記憶ブロックのセットの前記第1の記憶ブロックは、結果モードで動作するように構成され、それにより、前記第2の記憶ブロックのセットの前記第1の記憶ブロックは、前記第1の演算層における前記実行された演算の結果を前記第1の記憶ブロック内に書き込むように構成される、請求項1〜3のいずれか一項に記載のメモリ装置。
- 前記第1の演算層内において、前記第1の記憶ブロックのセットの前記第2の記憶ブロックは、プリロードモードで動作するように構成され、それにより、前記第2の記憶ブロックは、第2の演算層において実行される演算で使用されるプリロードオペランドを前記第2の記憶ブロック内に書き込むように構成される、請求項2〜4のいずれか一項に記載のメモリ装置。
- 前記演算モード、前記結果モード及び前記プリロードモードの少なくとも1つは、各演算層の開始時、前記第1及び第2の記憶ブロックのセットの前記第1及び第2の記憶ブロックに動的に割り当てられる、請求項3〜5のいずれか一項に記載のメモリ装置。
- 前記第2の演算層中、前記第2の記憶ブロックのセットは、前記演算モードで動作するように構成され、それにより、前記第2の記憶ブロックのセットは、前記第1の演算層内で前記第2の記憶ブロックのセットによって書き込まれたオペランドを、前記第2の演算層の演算を実行するために前記少なくとも1つの処理ユニットへと読み取るように構成される、請求項3〜6のいずれか一項に記載のメモリ装置。
- 前記第2の演算層中、前記第1の記憶ブロックのセットの前記第1の記憶ブロックは、前記結果モードで動作するように構成され、それにより、前記第1の記憶ブロックは、前記第2の演算層における実行された演算の結果を前記第1の記憶ブロック内に書き込むように構成される、請求項3〜7のいずれか一項に記載のメモリ装置。
- 前記第2の演算層中、前記第1の記憶ブロックのセットの前記第2の記憶ブロックは、プリロードモードで動作するように構成され、それにより、前記第2の記憶ブロックは、プリロードオペランドを前記第2の記憶ブロック内に書き込むように構成され、前記プリロードオペランドは、第3の演算層において実行される演算で使用される、請求項3〜8のいずれか一項に記載のメモリ装置。
- 前記第1及び第2の記憶ブロックのセットの各記憶ブロックは、単一の読み取り/書き込みスタティックランダムアクセスメモリ(1R/W SRAM)である、請求項1〜9のいずれか一項に記載のメモリ装置。
- 前記第1及び第2の記憶ブロックのセットの各記憶ブロックは、それぞれのN:1マルチプレクサを介して前記第1及び第2の書き込みポートに通信可能に結合され、且つそれぞれのM:1マルチプレクサを介して前記第1及び第2の読み取りポートに通信可能に結合され、ここで、Nは、前記メモリ装置内の記憶ブロックの数であり、及びMは、前記メモリ装置における書き込みポートの数である、請求項2〜10のいずれか一項に記載のメモリ装置。
- 前記コアは、単一命令複数データ(SIMD)アーキテクチャを含む、請求項1〜11のいずれか一項に記載のメモリ装置。
- メモリ装置を制御するための方法であって、
第1の演算層のために、
前記メモリ装置の読み取りポートを介して少なくとも1つの処理ユニットにオペランドを提供することを可能にする読み取り記憶ブロックのセットとして動作する第1の記憶ブロックのセットを選択することと、
格納のために前記メモリ装置の書き込みポートを介してオペランドを受信することを可能にする書き込み記憶ブロックのセットとして動作する第2の記憶ブロックのセットを選択することと、
前記第1の演算層に続く第2の演算層において、
前記書き込み記憶ブロックのセットとして動作する前記第1の記憶ブロックのセットを選択することと、
前記読み取り記憶ブロックのセットとして動作する前記第2の記憶ブロックのセットを選択することと
を含む方法。 - 各演算層のために前記メモリ装置の前記第1及び第2の記憶ブロックのセットの動作モードを制御する命令を生成することをさらに含み、前記命令は、前記第1及び第2の記憶ブロックのセットの前記動作モードを設定する、請求項13に記載の方法。
- 前記命令は、各演算層の開始時、動的に前記第1及び第2の記憶ブロックのセットの前記動作モードをさらに設定する、請求項14に記載の方法。
- 前記動作モードを設定するための前記命令は、前記第1の記憶ブロックのセットの前記動作モードを演算モードに設定することをさらに含み、それにより、前記第1の記憶ブロックのセットは、前記少なくとも1つの処理ユニットを介して、前記第1の演算層において実行される演算で使用されるオペランドを読み取るように構成される、請求項14又は15に記載の方法。
- 前記第2の記憶ブロックのセットは、第1の記憶ブロック及び第2の記憶ブロックを含み、前記動作モードを設定するための前記命令は、前記第2の記憶ブロックのセットの第1の記憶ブロックの前記動作モードを結果モードに設定することをさらに含み、それにより、前記第1の記憶ブロックは、前記第1の演算層における前記実行された演算の結果を前記第1の記憶ブロック内に書き込むように構成される、請求項14〜16のいずれか一項に記載の方法。
- 前記第1の記憶ブロックのセットは、第1の記憶ブロック及び第2の記憶ブロックを含み、前記動作モードを設定するための前記命令は、前記第1の記憶ブロックのセットの第2の記憶ブロックの前記動作モードをプリロードモードに設定することをさらに含み、それにより、前記第2の記憶ブロックは、前記第2の演算層において実行される演算で使用されるプリロードオペランドを前記第2の記憶ブロック内に書き込むように構成される、請求項14〜17のいずれか一項に記載の方法。
- 前記動作モードを設定するための命令は、前記第2の記憶ブロックのセットを前記演算モードで動作するように設定することをさらに含み、それにより、前記第2の記憶ブロックのセットは、前記第1の演算層内で前記第2の記憶ブロックのセットによって書き込まれたオペランドを、前記第2の演算層の演算を実行するために前記少なくとも1つの処理ユニットへと読み取るように構成される、請求項14〜18のいずれか一項に記載の方法。
- 前記動作モードを設定するための命令は、前記第1の記憶ブロックのセットの前記第1の記憶ブロックの前記動作モードを前記結果モードに設定することをさらに含み、それにより、前記第1の記憶ブロックは、前記第2の演算層における実行された演算の結果を前記第1の記憶ブロック内に書き込むように構成される、請求項14〜19のいずれか一項に記載の方法。
- 前記動作モードを設定するための命令は、前記第1の記憶ブロックのセットの前記第2の記憶ブロックの前記動作モードを前記プリロードモードに設定することをさらに含み、それにより、前記第2の記憶ブロックは、第3の演算層において実行される演算で使用されるプリロードオペランドを前記第2の記憶ブロック内に書き込むように構成される、請求項14〜20のいずれか一項に記載の方法。
- 少なくとも1つの処理ユニットと関連付けられたメモリ装置を含むアクセラレータであって、前記メモリ装置は、
第1の記憶ブロックのセット、
第2の記憶ブロックのセット、
それぞれ前記第1及び第2の記憶ブロックのセットの各記憶ブロックに通信可能に結合された読み取りポートのセット、及び
それぞれ前記第1及び第2の記憶ブロックのセットの各記憶ブロックに通信可能に結合された書き込みポートのセット
を含む、アクセラレータと、
コンピュータコードを複数の命令にコンパイルするように構成されたホストユニットであって、前記複数の命令は、
第1の演算層のために、
前記読み取りポートのセットを介して前記少なくとも1つの処理ユニットにオペランドを提供することを可能にする読み取り記憶ブロックのセットとして動作する前記第1の記憶ブロックのセットを選択することと、
格納のために前記書き込みポートのセットを介してオペランドを受信することを可能にする書き込み記憶ブロックのセットとして動作する前記第2の記憶ブロックのセットを選択することと、
前記第1の演算層に続く第2の演算層のために、
前記書き込み記憶ブロックのセットとして動作する前記第1の記憶ブロックのセットを選択することと、
前記読み取り記憶ブロックのセットとして動作する前記第2の記憶ブロックのセットを選択することと
を行う、ホストユニットと
を含むシステム。 - メモリ装置によって実行可能な命令のセットを格納する非一時的コンピュータ可読媒体であって、前記命令のセットは、
第1の演算層のために、
前記メモリ装置の読み取りポートを介して少なくとも1つの処理ユニットにオペランドを提供することを可能にする読み取り記憶ブロックのセットとして動作する第1の記憶ブロックのセットを選択することと、
格納のために前記メモリ装置の書き込みポートを介してオペランドを受信することを可能にする書き込み記憶ブロックのセットとして動作する第2の記憶ブロックのセットを選択することと、
前記第1の演算層に続く第2の演算層において、
前記書き込み記憶ブロックのセットとして動作する前記第1の記憶ブロックのセットを選択することと、
前記読み取り記憶ブロックのセットとして動作する前記第2の記憶ブロックのセットを選択することと
を前記メモリ装置に実行させる、非一時的コンピュータ可読媒体。 - 前記メモリ装置によって実行可能な前記命令のセットは、
各演算層のために前記第1及び第2の記憶ブロックのセットの動作モードを制御することと、
前記受信された命令に基づいて前記第1及び第2の記憶ブロックのセットの前記動作モードを設定することと
を前記メモリ装置に実行させる、請求項23に記載のコンピュータ可読媒体。 - 前記メモリ装置によって実行可能な前記命令のセットは、前記第1の記憶ブロックのセットの前記動作モードを演算モードに設定することを前記メモリ装置に実行させ、それにより、前記第1の記憶ブロックのセットは、前記少なくとも1つの処理ユニットを介して前記第1の演算層において実行される演算で使用されるオペランドを読み取るように構成される、請求項24に記載のコンピュータ可読媒体。
- 前記第2の記憶ブロックのセットは、第1の記憶ブロック及び第2の記憶ブロックを含み、前記メモリ装置によって実行可能な前記命令のセットは、前記第2の記憶ブロックのセットの第1の記憶ブロックの前記動作モードを結果モードに設定することを前記メモリ装置に実行させ、それにより、前記第1の記憶ブロックは、前記第1の演算層における前記実行された演算の結果を前記第1の記憶ブロック内に書き込むように構成される、請求項24又は25に記載のコンピュータ可読媒体。
- 前記第1の記憶ブロックのセットは、第1の記憶ブロック及び第2の記憶ブロックを含み、前記メモリ装置によって実行可能な前記命令のセットは、前記第1の記憶ブロックのセットの第2の記憶ブロックの前記動作モードをプリロードモードに設定することを前記メモリ装置に実行させ、それにより、前記第2の記憶ブロックは、前記第2の演算層において実行される演算で使用されるプリロードオペランドを前記第2の記憶ブロック内に書き込むように構成される、請求項24〜26のいずれか一項に記載のコンピュータ可読媒体。
- 前記メモリ装置によって実行可能な前記命令のセットは、前記第2の記憶ブロックのセットの前記動作モードを前記演算モードで動作するように設定することを前記メモリ装置に実行させ、それにより、前記第2の記憶ブロックのセットは、前記第1の演算層内で前記第2の記憶ブロックのセットによって書き込まれたオペランドを、前記第2の演算層の演算を実行するために前記少なくとも1つの処理ユニットへと読み取るように構成される、請求項24〜27のいずれか一項に記載のコンピュータ可読媒体。
- 前記メモリ装置によって実行可能な前記命令のセットは、前記第1の記憶ブロックのセットの前記第1の記憶ブロックの前記動作モードを前記結果モードに設定することを前記メモリ装置に実行させ、それにより、前記第1の記憶ブロックは、前記第2の演算層における実行された演算の結果を前記第1の記憶ブロック内に書き込むように構成される、請求項24〜28のいずれか一項に記載のコンピュータ可読媒体。
- 前記メモリ装置によって実行可能な前記命令のセットは、前記第1の記憶ブロックのセットの前記第2の記憶ブロックの前記動作モードを前記プリロードモードに設定することを前記メモリ装置に実行させ、それにより、前記第2の記憶ブロックは、第3の演算層において実行される演算で使用されるプリロードオペランドを前記第2の記憶ブロック内に書き込むように構成される、請求項24〜29のいずれか一項に記載のコンピュータ可読媒体。
- メモリ装置を制御するための方法であって、
第1の演算層のために、
前記メモリ装置の読み取りポートを介して処理ユニットにオペランドを提供することを可能にする読み取り記憶ブロックのセットとして第1の記憶ブロックのセットを動作させることと、
格納のために前記メモリ装置の書き込みポートを介してオペランドを受信することを可能にする書き込み記憶ブロックのセットとして第2の記憶ブロックのセットを動作させることと、
前記第1の演算層に続く第2の演算層のために、
前記書き込み記憶ブロックのセットとして前記第1の記憶ブロックのセットを動作させることと、
前記読み取り記憶ブロックのセットとして前記第2の記憶ブロックのセットを動作させることと
を含む方法。 - 各演算層のために前記第1及び第2の記憶ブロックのセットの動作モードを制御する命令をコンパイラから受信することと、
前記受信された命令に基づいて前記第1及び第2の記憶ブロックのセットの前記動作モードを設定することと
をさらに含む、請求項31に記載の方法。 - 前記受信すること及び設定することは、各演算層の開始時に動的に起こる、請求項32に記載の方法。
- 前記設定することは、前記第1の記憶ブロックのセットの前記動作モードを演算モードに設定することをさらに含み、それにより、前記第1の記憶ブロックのセットは、前記少なくとも1つの処理ユニットを介して前記第1の演算層において実行される演算で使用されるオペランドを読み取るように構成される、請求項32又は33に記載の方法。
- 前記第2の記憶ブロックのセットは、第1の記憶ブロック及び第2の記憶ブロックを含み、前記設定することは、前記第2の記憶ブロックのセットの第1の記憶ブロックの前記動作モードを結果モードに設定することをさらに含み、それにより、前記第1の記憶ブロックは、前記第1の演算層における前記実行された演算の結果を前記第1の記憶ブロック内に書き込むように構成される、請求項32〜34のいずれか一項に記載の方法。
- 前記第1の記憶ブロックのセットは、第1の記憶ブロック及び第2の記憶ブロックを含み、前記設定することは、前記第1の記憶ブロックのセットの第2の記憶ブロックの前記動作モードをプリロードモードに設定することをさらに含み、それにより、前記第2の記憶ブロックは、前記第2の演算層において実行される演算で使用されるプリロードオペランドを前記第2の記憶ブロック内に書き込むように構成される、請求項32〜35のいずれか一項に記載の方法。
- 前記設定することは、前記第2の記憶ブロックのセットを前記演算モードで動作するように設定することをさらに含み、それにより、前記第2の記憶ブロックのセットは、前記第1の演算層内で前記第2の記憶ブロックのセットによって書き込まれたオペランドを、前記第2の演算層の演算を実行するために前記少なくとも1つの処理ユニットへと読み取るように構成される、請求項32〜36のいずれか一項に記載の方法。
- 前記設定することは、前記第1の記憶ブロックのセットの前記第1の記憶ブロックの前記動作モードを前記結果モードに設定することをさらに含み、それにより、前記第1の記憶ブロックは、前記第2の演算層における実行された演算の結果を前記第1の記憶ブロック内に書き込むように構成される、請求項32〜37のいずれか一項に記載の方法。
- 前記設定することは、前記第1の記憶ブロックのセットの前記第2の記憶ブロックの前記動作モードを前記プリロードモードに設定することをさらに含み、それにより、前記第2の記憶ブロックは、第3の演算層において実行される演算で使用されるプリロードオペランドを前記第2の記憶ブロック内に書き込むように構成される、請求項32〜38のいずれか一項に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762610089P | 2017-12-22 | 2017-12-22 | |
US62/610,089 | 2017-12-22 | ||
PCT/US2018/067370 WO2019126793A2 (en) | 2017-12-22 | 2018-12-21 | A memory apparatus and method for controlling the same |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2021507352A true JP2021507352A (ja) | 2021-02-22 |
JP7264897B2 JP7264897B2 (ja) | 2023-04-25 |
Family
ID=66951237
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020531604A Active JP7264897B2 (ja) | 2017-12-22 | 2018-12-21 | メモリ装置及びそれを制御するための方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10761851B2 (ja) |
EP (1) | EP3729289A4 (ja) |
JP (1) | JP7264897B2 (ja) |
CN (1) | CN111656339B (ja) |
WO (1) | WO2019126793A2 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11295205B2 (en) * | 2018-09-28 | 2022-04-05 | Qualcomm Incorporated | Neural processing unit (NPU) direct memory access (NDMA) memory bandwidth optimization |
US11609792B2 (en) * | 2019-03-19 | 2023-03-21 | Alibaba Group Holding Limited | Maximizing resource utilization of neural network computing system |
WO2020220935A1 (zh) * | 2019-04-27 | 2020-11-05 | 中科寒武纪科技股份有限公司 | 运算装置 |
US11016775B2 (en) | 2019-06-26 | 2021-05-25 | Amazon Technologies, Inc. | Neural network operation reordering for parallel execution |
US11922292B2 (en) | 2020-01-27 | 2024-03-05 | Google Llc | Shared scratchpad memory with parallel load-store |
CN115269008B (zh) * | 2022-09-29 | 2023-02-28 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、装置、介质及电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012174016A (ja) * | 2011-02-22 | 2012-09-10 | Renesas Electronics Corp | データ処理装置およびそのデータ処理方法 |
JP6250780B1 (ja) * | 2016-12-01 | 2017-12-20 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | キャッシュメモリ又はニューラルネットワークユニットメモリとして動作可能なメモリアレイを有するプロセッサ |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030050944A1 (en) * | 2001-08-21 | 2003-03-13 | Olivier Gay-Bellile | Device for computing discrete transforms |
JP4256210B2 (ja) * | 2003-06-12 | 2009-04-22 | 株式会社半導体理工学研究センター | 同期バンク型メモリ |
CN101095115A (zh) * | 2004-11-05 | 2007-12-26 | 数据机器人技术公司 | 存储系统条件指示器和方法 |
US8316074B2 (en) * | 2005-03-11 | 2012-11-20 | Network Appliance, Inc. | Network-accessible memory |
US7596643B2 (en) * | 2007-02-07 | 2009-09-29 | Siliconsystems, Inc. | Storage subsystem with configurable buffer |
US8533384B2 (en) * | 2007-12-27 | 2013-09-10 | Sandisk Enterprise Ip Llc | Flash memory controller garbage collection operations performed independently in multiple flash memory groups |
CN101639901A (zh) * | 2009-09-03 | 2010-02-03 | 王连明 | 基于多核技术的前馈神经网络硬件实现方法 |
US8533435B2 (en) * | 2009-09-24 | 2013-09-10 | Nvidia Corporation | Reordering operands assigned to each one of read request ports concurrently accessing multibank register file to avoid bank conflict |
CN101699413B (zh) * | 2009-10-30 | 2011-12-07 | 成都市华为赛门铁克科技有限公司 | 硬盘数据读写控制方法和装置 |
US8547774B2 (en) * | 2010-01-29 | 2013-10-01 | Mosys, Inc. | Hierarchical multi-bank multi-port memory organization |
WO2014077918A1 (en) | 2012-11-19 | 2014-05-22 | Board Of Regents, The University Of Texas System | Robustness in a scalable block storage system |
KR20150086718A (ko) * | 2014-01-20 | 2015-07-29 | 삼성전자주식회사 | 메모리를 이용하여 파이프라인이 데이터를 처리하는 방법 및 장치 |
EP3035204B1 (en) * | 2014-12-19 | 2018-08-15 | Intel Corporation | Storage device and method for performing convolution operations |
US10678544B2 (en) | 2015-09-19 | 2020-06-09 | Microsoft Technology Licensing, Llc | Initiating instruction block execution using a register access instruction |
-
2018
- 2018-12-21 JP JP2020531604A patent/JP7264897B2/ja active Active
- 2018-12-21 US US16/231,323 patent/US10761851B2/en active Active
- 2018-12-21 WO PCT/US2018/067370 patent/WO2019126793A2/en unknown
- 2018-12-21 EP EP18890824.8A patent/EP3729289A4/en active Pending
- 2018-12-21 CN CN201880079719.5A patent/CN111656339B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012174016A (ja) * | 2011-02-22 | 2012-09-10 | Renesas Electronics Corp | データ処理装置およびそのデータ処理方法 |
JP6250780B1 (ja) * | 2016-12-01 | 2017-12-20 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | キャッシュメモリ又はニューラルネットワークユニットメモリとして動作可能なメモリアレイを有するプロセッサ |
Also Published As
Publication number | Publication date |
---|---|
WO2019126793A2 (en) | 2019-06-27 |
US20190196831A1 (en) | 2019-06-27 |
CN111656339A (zh) | 2020-09-11 |
WO2019126793A3 (en) | 2020-03-26 |
CN111656339B (zh) | 2023-06-13 |
EP3729289A4 (en) | 2021-03-03 |
EP3729289A2 (en) | 2020-10-28 |
US10761851B2 (en) | 2020-09-01 |
JP7264897B2 (ja) | 2023-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7264897B2 (ja) | メモリ装置及びそれを制御するための方法 | |
JP7266602B2 (ja) | ニューラルネットワークプロセッサに対する統合メモリ構造 | |
US11693657B2 (en) | Methods for performing fused-multiply-add operations on serially allocated data within a processing-in-memory capable memory device, and related memory devices and systems | |
US8086806B2 (en) | Systems and methods for coalescing memory accesses of parallel threads | |
US11609792B2 (en) | Maximizing resource utilization of neural network computing system | |
US8392669B1 (en) | Systems and methods for coalescing memory accesses of parallel threads | |
EP3735638A1 (en) | A deep learning accelerator system and methods thereof | |
US11921814B2 (en) | Method and device for matrix multiplication optimization using vector registers | |
US11409839B2 (en) | Programmable and hierarchical control of execution of GEMM operation on accelerator | |
US11544189B2 (en) | System and method for memory management | |
CN112906877A (zh) | 用于执行神经网络模型的存储器架构中的数据布局有意识处理 | |
US10915317B2 (en) | Multiple-pipeline architecture with special number detection | |
US12073317B2 (en) | Method and system for processing a neural network | |
CN115858427A (zh) | 用于处理器中的加速的嵌入式可编程逻辑器件 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20211126 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20221130 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20221130 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230222 |
|
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: 20230403 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230413 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7264897 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |