Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP7666333B2 - Processing Unit - Google Patents
[go: Go Back, main page]

JP7666333B2 - Processing Unit - Google Patents

Processing Unit Download PDF

Info

Publication number
JP7666333B2
JP7666333B2 JP2021571139A JP2021571139A JP7666333B2 JP 7666333 B2 JP7666333 B2 JP 7666333B2 JP 2021571139 A JP2021571139 A JP 2021571139A JP 2021571139 A JP2021571139 A JP 2021571139A JP 7666333 B2 JP7666333 B2 JP 7666333B2
Authority
JP
Japan
Prior art keywords
unit
data
calculation
memory
accumulator
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
JP2021571139A
Other languages
Japanese (ja)
Other versions
JPWO2021145218A1 (en
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.)
Sony Corp
Sony Group Corp
Original Assignee
Sony Corp
Sony Group 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 Sony Corp, Sony Group Corp filed Critical Sony Corp
Publication of JPWO2021145218A1 publication Critical patent/JPWO2021145218A1/ja
Application granted granted Critical
Publication of JP7666333B2 publication Critical patent/JP7666333B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Complex Calculations (AREA)

Description

本開示は、演算処理装置に関する。 The present disclosure relates to a computing device.

近年、脳神経系の仕組みを模した数学モデルであるディープニューラルネットワークの開発が進んでいる。当該ディープニューラルネットワークは、その演算量、係数容量を増加させることにより、高い性能を実現している。In recent years, there has been progress in the development of deep neural networks, which are mathematical models that mimic the mechanisms of the nervous system. These deep neural networks have achieved high performance by increasing the amount of calculations and coefficient capacity.

特開2018-26027号公報JP 2018-26027 A

Squeeze-and-Excitation Network J.Hu,L.Shen,and G. Sun、arXiv:1709.01507,2017(https://arxiv.org/pdf/1709.01507.pdf)Squeeze-and-Excitation Network J. Hu, L. Shen, and G. Sun, arXiv:1709.01507, 2017 (https://arxiv.org/pdf/1709.01507.pdf)

ディープニューラルネットワークにおける演算処理を行う演算処理装置に対しては、演算量が増加した場合であっても、その消費電力の増加を抑えることが求められている。そこで、ディープニューラルネットワークにおける演算の処理負担を軽減して、消費電力の増加を抑えるための種々の手法が提案されており、そのような提案のうちの1つが、上記特許文献1に開示された手法であるといえる。しかしながら、上記特許文献1に開示された技術等を適用した場合であっても、消費電力の増加を抑える効果についてはまだ十分とはいえず、さらなる改善が強く求められている。 For a processing device that performs arithmetic processing in a deep neural network, there is a demand for suppressing an increase in power consumption even when the amount of calculation increases. Therefore, various methods have been proposed for reducing the processing load of calculations in a deep neural network and suppressing an increase in power consumption, and one of such proposals is the method disclosed in the above-mentioned Patent Document 1. However, even when the technology disclosed in the above-mentioned Patent Document 1 is applied, the effect of suppressing an increase in power consumption is still insufficient, and further improvements are strongly required.

そこで、本開示では、ディープニューラルネットワークにおける演算処理を行う演算処理装置の消費電力の増加をより抑えることができる、演算処理装置を提案する。 Therefore, this disclosure proposes a processing device that can further reduce the increase in power consumption of a processing device that performs calculations in a deep neural network.

本開示によれば、第1及び第2のデータを読み出し、読み出した前記第1及び第2のデータを用いて演算を繰り返し行う演算回路部と、前記第1のデータを格納する第1の記憶部と、前記第2のデータを格納する第2の記憶部と、前記第1及び第2のデータのうち前記演算回路部で繰り返し用いられるデータを、前記第1の記憶部又は前記第2の記憶部から読み出して、一時的に保持するレジスタ部と、前記第1及び第2のデータのうち、前記レジスタ部に保持するデータを選択する第1のセレクタ部と、演算の種類、演算量、前記第1及び第2の記憶部の種類、前記第1及び第2の記憶部の容量、及び、前記演算回路部の種類のうちの少なくとも1つに基づいて、前記第1のセレクタ部を制御する制御部とを備える、演算処理装置が提供される。According to the present disclosure, there is provided an arithmetic processing device comprising: an arithmetic circuit unit that reads out first and second data and repeatedly performs an arithmetic operation using the read out first and second data; a first memory unit that stores the first data; a second memory unit that stores the second data; a register unit that reads out from the first memory unit or the second memory unit and temporarily holds data that is repeatedly used in the arithmetic circuit unit among the first and second data; a first selector unit that selects data to be held in the register unit among the first and second data; and a control unit that controls the first selector unit based on at least one of the type of arithmetic operation, the amount of arithmetic operation, the type of the first and second memory units, the capacity of the first and second memory units, and the type of the arithmetic circuit unit.

本開示の実施形態に係るディープニューラルネットワークの一例の概要について説明するための概念図(その1)である。FIG. 1 is a conceptual diagram (part 1) for explaining an overview of an example of a deep neural network according to an embodiment of the present disclosure. 本開示の実施形態に係るディープニューラルネットワークの一例の概要について説明するための概念図(その2)である。FIG. 2 is a conceptual diagram (part 2) for explaining an overview of an example of a deep neural network according to an embodiment of the present disclosure. 本開示の実施形態に係るディープニューラルネットワークの一例の概要について説明するための概念図(その3)である。FIG. 13 is a conceptual diagram (part 3) for explaining an overview of an example of a deep neural network according to an embodiment of the present disclosure. 本開示の第1の実施形態に係る演算処理装置10の機能ブロック図の一例である。1 is an example of a functional block diagram of a processing device 10 according to a first embodiment of the present disclosure. 本開示の第1の実施形態に係る演算部120の回路ブロック図の一例である。2 is an example of a circuit block diagram of a calculation unit 120 according to the first embodiment of the present disclosure. FIG. 本開示の第1の実施形態に係る積和器500の回路ブロック図の一例である。2 is an example of a circuit block diagram of a product adder 500 according to the first embodiment of the present disclosure. FIG. 本開示の第1の実施形態に係る演算処理方法の一例を示すフローチャートである。4 is a flowchart illustrating an example of a calculation processing method according to the first embodiment of the present disclosure. 本開示の第2の実施形態に係る演算部120aの回路ブロック図の一例である。FIG. 11 is an example of a circuit block diagram of a calculation unit 120a according to a second embodiment of the present disclosure. 本開示の一実施形態に係る演算処理装置10の機能を実現するコンピュータ1000の一例を示すハードウェア構成図である。1 is a hardware configuration diagram illustrating an example of a computer 1000 that realizes the functions of a processor 10 according to an embodiment of the present disclosure.

以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。また、本明細書及び図面において、異なる実施形態の類似する構成要素については、同一の符号の後に異なるアルファベットを付して区別する場合がある。ただし、類似する構成要素の各々を特に区別する必要がない場合、同一符号のみを付する。 Preferred embodiments of the present disclosure will be described in detail below with reference to the accompanying drawings. In this specification and drawings, components having substantially the same functional configuration will be given the same reference numerals to avoid duplicated explanations. In this specification and drawings, similar components in different embodiments may be distinguished by adding different alphabets after the same reference numerals. However, if there is no particular need to distinguish between similar components, only the same reference numerals will be used.

なお、説明は以下の順序で行うものとする。
1. 本開示に係る実施形態を創作するに至るまでの経緯
1.1 背景
1.2 経緯
1.3 本開示の実施形態の概要
2. 第1の実施形態
2.1. 演算処理装置10の機能構成例
2.2. 演算部120の構成例
2.3. 積和器500の構成例
2.4. 演算処理方法
3. 第2の実施形態
4. まとめ
5. ハードウェア構成について
6. 補足
The explanation will be given in the following order.
1. History leading to the creation of the embodiment of the present disclosure 1.1 Background 1.2 History 1.3 Outline of the embodiment of the present disclosure 2. First embodiment 2.1. Example of functional configuration of the arithmetic processing device 10 2.2. Example of configuration of the arithmetic unit 120 2.3. Example of configuration of the multiply-accumulator 500 2.4. Arithmetic processing method 3. Second embodiment 4. Summary 5. Regarding hardware configuration 6. Supplementary information

<<1. 本開示に係る実施形態を創作するに至るまでの経緯>>
<1.1 背景>
まず、本開示に係る実施形態の詳細を説明する前に、本発明者が本開示に係る実施形態を創作するに至る背景や経緯について説明する。まずは、図1を参照して、一般的なディープニューラルネットワークの一例である全結合層型のディープニューラルネットワークの概要について説明する。図1は、本開示の実施形態に係るディープニューラルネットワークの一例の概要について説明するための概念図である。
<<1. How the embodiment of the present disclosure was created>>
1.1 Background
First, before describing the details of the embodiment of the present disclosure, the background and process by which the present inventor created the embodiment of the present disclosure will be described. First, an overview of a fully connected layer type deep neural network, which is an example of a general deep neural network, will be described with reference to Fig. 1. Fig. 1 is a conceptual diagram for explaining the overview of an example of a deep neural network according to an embodiment of the present disclosure.

詳細には、図1に示す全結合層型のディープニューラルネットワークでの処理のイメージにおいては、当該全結合層型ディープニューラルネットワークは、少なくとも入力層、全結合層(中間層)、及び出力層を有し、すなわち階層的に演算処理を実行する。なお、当該全結合層型ディープニューラルネットワークにおいては、全結合層については1個に限定されるものではなく複数個、段階的に含まれていてもよい。言い換えると、当該全結合層型ディープニューラルネットワークは、入力層、複数の全結合層(中間層)、及び出力層を有することができる。In detail, in the image of processing in the fully connected layer type deep neural network shown in FIG. 1, the fully connected layer type deep neural network has at least an input layer, a fully connected layer (middle layer), and an output layer, i.e., performs hierarchical calculation processing. Note that in the fully connected layer type deep neural network, the fully connected layer is not limited to one, and multiple fully connected layers may be included in stages. In other words, the fully connected layer type deep neural network can have an input layer, multiple fully connected layers (middle layers), and an output layer.

そして、当該全結合層型ディープニューラルネットワークにおいては、入力層に複数の入力データX、X、…、Xが入力される。次に、各入力データX、X、…、Xがそれぞれ異なる所定の重み係数によって重みづけされて積算されることにより、全結合層の各ノードY、Y、…、Yn-1、Yの値となる(なお、これら複数の所定の重み係数をまとめることにより重み行列とすることができる)(Affine演算)。さらに、同様に、全結合層の各ノードY、Y、…、Yn-1、Yの値がそれぞれ異なる所定の重み係数によって重みづけされて積算されることにより、出力層の出力データZとなる。 In the fully connected layer type deep neural network, a plurality of input data X 1 , X 2 , ..., X m are input to the input layer. Next, each input data X 1 , X 2 , ..., X m is weighted by a different predetermined weighting coefficient and integrated to obtain the values of each node Y 1 , Y 2 , ..., Y n-1 , Y n of the fully connected layer (note that a weight matrix can be obtained by combining these multiple predetermined weighting coefficients) (Affine operation). Similarly, the values of each node Y 1 , Y 2 , ..., Y n-1 , Y n of the fully connected layer are weighted by a different predetermined weighting coefficient and integrated to obtain the output data Z of the output layer.

すなわち、図1に示す全結合層型のディープニューラルネットワークの例においては、入力層から全結合層を介して出力層へと向かって(単一方向)データが伝播するように演算が階層的に繰り返し実行されることとなる。さらに、当該全結合層型ディープニューラルネットワークにおいては、図1に示すように各層間のノードが全て結合していることから、繰り返し同じデータ(同じ入力データ)を用いて演算が実行されることとなる。言い換えると、全結合層型のディープニューラルネットワーク(Affine演算)においては、データ(入力データ)が再利用されるようにして演算が実行される。That is, in the example of the fully connected layer type deep neural network shown in FIG. 1, the calculations are repeatedly executed hierarchically so that data propagates (unidirectionally) from the input layer through the fully connected layer to the output layer. Furthermore, in the fully connected layer type deep neural network, since all the nodes between the layers are connected as shown in FIG. 1, the calculations are repeatedly executed using the same data (same input data). In other words, in the fully connected layer type deep neural network (Affine calculation), the calculations are executed so that the data (input data) is reused.

次に、図2及び図3を参照して、一般的なディープニューラルネットワークの一例である畳み込みディープニューラルネットワークの概要について説明する。図2及び図3は、本開示の実施形態に係るディープニューラルネットワークの一例の概要について説明するための概念図である。Next, an overview of a convolutional deep neural network, which is an example of a general deep neural network, will be described with reference to Figures 2 and 3. Figures 2 and 3 are conceptual diagrams for explaining the overview of an example of a deep neural network according to an embodiment of the present disclosure.

ところで、上述した全結合型ディープニューラルネットワークでは、同一層における各ノードのデータは、互いに独立して取り扱われており、言い換えると、同一層における各ノード間の関係性については考慮されて演算が実行されていない。このような場合、取り扱う入力データの特性により、演算により得られる出力データの精度が劣ることもある(例えば、入力データが画像データであった場合等)。そこで、同一層における各ノード間の関係性を考慮して演算を行うために、フィルタを用いて畳み込みを行う、畳み込みディープニューラルネットワークが考案された。以下に、画像処理(画像認識)に畳み込みディープニューラルネットワークを適用した場合を例にして、当該畳み込みディープニューラルネットワークを説明する。In the above-mentioned fully connected deep neural network, the data of each node in the same layer is treated independently of each other. In other words, the relationship between each node in the same layer is not taken into consideration when performing the calculation. In such a case, the accuracy of the output data obtained by the calculation may be poor depending on the characteristics of the input data being handled (for example, when the input data is image data). Therefore, in order to perform calculations while taking into consideration the relationship between each node in the same layer, a convolutional deep neural network was devised that performs convolution using a filter. Below, the convolutional deep neural network is explained using an example in which the convolutional deep neural network is applied to image processing (image recognition).

詳細には、図2に示す畳み込みディープニューラルネットワークでの処理のイメージにおいては、入力された画像データ(図2中では、Input)に対してフィルタ(図2の左端に図示)をかけることにより、画像データの特徴を抽出する。 In detail, in the image of processing in the convolutional deep neural network shown in Figure 2, features of the image data are extracted by applying a filter (shown on the left side of Figure 2) to the input image data (Input in Figure 2).

そこで、図3を参照して、フィルタによる画像データからの特徴の抽出の方法を説明する。具体的には、図3の左端に示すように、フィルタは、マトリックス状に分割され、各分割領域には重み係数が予め割り当てられているものとする。まずは、図3の中央に示すように、当該フィルタを画像データ(図3中では、Input)の所定の領域にかけあわせることにより(画像データの所定の領域の各特徴量に対して対応する位置のフィルタの重み係数をかけあわせ、積算する)、当該所定の領域における特徴を抽出し、図3の右側に示すように、出力データ(図3中では、Output)の所定の領域に抽出した特徴を割り当てる。さらに、図3の中央に示すように、当該フィルタを、画像データ上を順次スライドさせてかけあわせることにより、画像データの各領域における特徴を抽出し、出力データの所定の領域に抽出した特徴を割り当てていく。このように、畳み込みディープニューラルネットワークにおいては、フィルタを用いることで、画像データ上の位置関係を保持しながら画像データの特徴量を出力データに畳み込む(集約する)ことができる(Convolution演算)。 Therefore, referring to FIG. 3, a method of extracting features from image data using a filter will be described. Specifically, as shown in the left end of FIG. 3, the filter is divided into a matrix, and a weighting factor is assigned to each divided area in advance. First, as shown in the center of FIG. 3, the filter is applied to a predetermined area of the image data (Input in FIG. 3) (each feature amount in the predetermined area of the image data is multiplied by the weighting factor of the filter at the corresponding position and integrated), to extract features in the predetermined area, and as shown on the right side of FIG. 3, the extracted features are assigned to a predetermined area of the output data (Output in FIG. 3). Furthermore, as shown in the center of FIG. 3, the filter is applied by sliding it sequentially on the image data, to extract features in each area of the image data, and the extracted features are assigned to a predetermined area of the output data. In this way, in a convolutional deep neural network, by using a filter, the feature amount of the image data can be convoluted (aggregated) into the output data while maintaining the positional relationship on the image data (Convolution operation).

再び図2に戻り説明を続けると、図2中の上段に示すように、入力された画像データの左上端の領域に対してフィルタをかけることにより、左上端の領域の特徴を抽出し、抽出された特徴は、出力データ(図2中では、Output)として生成される。そして、図2に示すように、当該畳み込みディープニューラルネットワークにおいては、画像データの各領域に対してスライドさせながら順次フィルタをかけて、画像データの各領域の特徴を抽出することを繰り返し実行する。さらに、当該畳み込みディープニューラルネットワークにおいては、このような抽出を階層的に繰り返し実行することとなる。Returning to Figure 2, as shown in the top part of Figure 2, a filter is applied to the upper left region of the input image data to extract features of the upper left region, and the extracted features are generated as output data (Output in Figure 2). As shown in Figure 2, the convolutional deep neural network repeatedly applies a filter to each region of the image data while sliding it, extracting features of each region of the image data. Furthermore, in the convolutional deep neural network, such extraction is repeatedly performed hierarchically.

すなわち、図2及び図3に示す畳み込みディープニューラルネットワークの例では、フィルタを用いることで、画像データ上における上下左右の位置関係を考慮して演算を行うことができる。さらに、当該例においては、繰り返しフィルタ(重み係数)を用いて演算が実行されることとなる。言い換えると、畳み込みディープニューラルネットワーク(Convolution演算)においては、係数が再利用されるようにして演算が実行される。That is, in the example of the convolutional deep neural network shown in Figures 2 and 3, a filter is used to perform calculations taking into account the vertical and horizontal positional relationships on the image data. Furthermore, in this example, calculations are performed using a repetitive filter (weighting coefficient). In other words, in the convolutional deep neural network (convolution calculation), calculations are performed such that coefficients are reused.

そして、当該畳み込みディープニューラルネットワークにおいては、画像データ上における上下左右の位置関係を維持しながら抽出した特徴を階層的に結合して処理を行うことから、例えば画像認識等の処理において優れた性能を示すことができる。 Furthermore, this convolutional deep neural network hierarchically combines extracted features while maintaining the vertical and horizontal positional relationships on the image data, thereby enabling it to demonstrate excellent performance in processes such as image recognition.

なお、本開示の実施形態おいては、ディープニューラルネットワークにおける処理では、上述したAffine演算(全結合型ディープニューラルネットワーク)及びConvolution演算(畳み込みディープニューラルネットワーク)が組み合わされて実行されてもよく、特に限定されるものではない。In addition, in an embodiment of the present disclosure, the processing in the deep neural network may be performed in combination with the above-mentioned Affine operation (fully connected deep neural network) and Convolution operation (convolutional deep neural network), and is not particularly limited.

<1.2 経緯>
近年、先に説明したようなディープニューラルネットワークは、その演算量、係数容量を増加させることにより、高い性能を実現している。しかしながら、このような処理を行う演算処理装置に対しては、演算量が増加した場合であっても、その消費電力の増加を抑えることが求められている。
1.2 Background
In recent years, deep neural networks as described above have achieved high performance by increasing the amount of calculation and the coefficient capacity. However, for a processing device that performs such processing, even if the amount of calculation increases, it is required to suppress the increase in power consumption.

詳細には、ディープニューラルネットワークの例である全結合型ディープニューラルネットワークや畳み込みディープニューラルネットワークは、先に説明したように、Affine演算及びConvolution演算と呼ばれる積和演算の組み合わせにより、実現されている。このような多量の積和演算を実行するためには、演算で使用するデータを記憶部(メモリ)から読み出すメモリアクセスを多く実行することとなるが、演算処理装置の消費電力の増加を抑えるためには、当該メモリアクセスの回数の増加を抑えることが求められる。In detail, examples of deep neural networks, such as fully connected deep neural networks and convolutional deep neural networks, are realized by a combination of product-sum operations called affine operations and convolution operations, as explained above. To execute such a large number of product-sum operations, many memory accesses are executed to read data used in the operations from a storage unit (memory), but in order to suppress an increase in power consumption of the arithmetic processing device, it is necessary to suppress an increase in the number of such memory accesses.

先に説明したように、Affine演算(全結合型ディープニューラルネットワーク)及びConvolution演算(畳み込みディープニューラルネットワーク)においては、同一の入力データ又は係数を繰り返し用いて演算を行う。従って、Affine演算及びConvolution演算を実行する際に、一度記憶部(メモリ)から読み出した入力データ又は係数を再利用することができれば、メモリアクセス回数の増加を抑えることができる。As explained above, in the Affine operation (fully connected deep neural network) and the Convolution operation (convolutional deep neural network), the same input data or coefficients are repeatedly used to perform the operation. Therefore, if the input data or coefficients once read from the storage unit (memory) can be reused when performing the Affine operation and the Convolution operation, the increase in the number of memory accesses can be suppressed.

そこで、上記特許文献1に開示の技術においては、入力データ、係数を記憶部(メモリ)から1行分ずつ読み出し、それぞれを各レジスタ部に一時的に保持し、保持した入力データ、係数を演算部に出力する。具体的には、上記特許文献1に開示の技術においては、Convolution演算を実行する際、記憶部(メモリ)からレジスタ部に読み出された1行目分の入力データに対して、レジスタ部に保持された係数をスライドさせながら積和を行い、その途中結果を更なる他のレジスタ部に保持している。さらに、当該技術においては、2行目分の入力データと係数との積和、3行目分の入力データと係数の積和というように、順次、レジスタ部から読み出して同様の演算を繰り返し実行する。Therefore, in the technology disclosed in the above Patent Document 1, input data and coefficients are read out from the storage unit (memory) one row at a time, each of which is temporarily stored in each register unit, and the stored input data and coefficients are output to the calculation unit. Specifically, in the technology disclosed in the above Patent Document 1, when performing a convolution calculation, the coefficients stored in the register unit are slid to perform multiplication and accumulation on the first row of input data read out from the storage unit (memory) to the register unit, and the intermediate results are stored in yet another register unit. Furthermore, in this technology, the multiplication and accumulation of the second row of input data and coefficients, the multiplication and accumulation of the third row of input data and coefficients, and so on are sequentially read out from the register unit and similar calculations are repeatedly performed.

加えて、上記特許文献1に開示の技術においては、レジスタ部と演算部の間に、クロスバスイッチを設けることにより、レジスタ部に保持している入力データや係数を複数の演算部の間で共有できるようにしている。このようにすることで、レジスタ部の書き換え回数を減らしている。In addition, in the technology disclosed in the above-mentioned Patent Document 1, a crossbar switch is provided between the register unit and the arithmetic unit, so that the input data and coefficients stored in the register unit can be shared among multiple arithmetic units. In this way, the number of times the register unit needs to be rewritten is reduced.

以上のようにして、上記特許文献1に開示の技術においては、記憶部(メモリ)から読み出した入力データや係数をレジスタ部に一時的に保持して、再利用することにより、メモリアクセス回数の増加を抑えている。しかしながら、上記特許文献1に開示の技術においては、3つのレジスタ部を演算部ごとに設けていることから、1行分の入力データや係数、出力データが多い場合や並列数を挙げるために演算部を増加させた場合、回路規模の増大が懸念される。すなわち、上記特許文献1に開示の技術においては、メモリアクセス回数の増加を抑えることができたとしても、回路規模が増大することから消費電力の増加を抑えることが難しいことが想定される。In this way, in the technology disclosed in Patent Document 1, the input data and coefficients read from the storage unit (memory) are temporarily stored in the register unit and reused, thereby suppressing an increase in the number of memory accesses. However, in the technology disclosed in Patent Document 1, three register units are provided for each calculation unit, so there is a concern that the circuit size will increase when there is a large amount of input data, coefficients, or output data for one row, or when the number of calculation units is increased to increase the number of parallel operations. In other words, even if the technology disclosed in Patent Document 1 can suppress an increase in the number of memory accesses, it is expected that it will be difficult to suppress an increase in power consumption due to the increase in circuit size.

そこで、本発明者は、上述の状況を鑑み、ディープニューラルネットワークにおける演算処理を行う演算処理装置の消費電力の増加をより抑えることができる、本開示の実施形態に係る演算処理装置を創作するに至った。Therefore, in consideration of the above-mentioned situation, the inventor has created a processing device according to an embodiment of the present disclosure that can further reduce the increase in power consumption of a processing device that performs calculations in a deep neural network.

<1.3 本開示の実施形態の概要>
次に、本発明者が創作した本開示の実施形態に係る演算処理装置の概要を説明する。
1.3 Overview of the embodiment of the present disclosure
Next, an overview of a processing device according to an embodiment of the present disclosure created by the present inventor will be described.

本開示の実施形態に係る演算処理装置は、入力データ、係数等のデータ(第1のデータ、第2のデータ)を格納する2つの記憶部(メモリ)(第1の記憶部、第2の記憶部)と、これら記憶部からデータを読み出し、読み出したデータを用いて演算を繰り返し行う積和器(演算回路部)とを有する。さらに、当該演算処理装置は、上記積和器で繰り返し用いられるデータを、上記記憶部から読み出して一時的に保持するレジスタ部と、上記レジスタ部に保持するデータを選択するセレクタ部(第1のセレクタ部)とを有する。The arithmetic processing device according to the embodiment of the present disclosure has two storage units (memories) (first storage unit, second storage unit) that store input data, coefficients, and other data (first data, second data), and a multiplier/accumulator (arithmetic circuit unit) that reads data from these storage units and repeatedly performs calculations using the read data. Furthermore, the arithmetic processing device has a register unit that reads data from the storage units and temporarily holds the data that is repeatedly used in the multiplier/accumulator, and a selector unit (first selector unit) that selects the data to be held in the register unit.

そして、本開示の実施形態においては、レジスタ部の前に設置されたセレクタ部を制御して、記憶部からの読み出し回数(メモリアクセス回数)を減らすことができるように、レジスタ部に一時的に保持するデータ(入力データ又は係数)を選択する。そして、本開示の実施形態においては、レジスタ部に一時的に保持された入力データ又は係数は、積和器によって繰り返し再利用されることとなる。In an embodiment of the present disclosure, a selector unit installed before the register unit is controlled to select data (input data or coefficients) to be temporarily stored in the register unit so as to reduce the number of reads from the storage unit (number of memory accesses). In an embodiment of the present disclosure, the input data or coefficients temporarily stored in the register unit are repeatedly reused by the multiply-accumulator.

また、本開示の実施形態に係る演算処理装置は、上記積和器で演算された途中結果(部分和)を格納する記憶部(第3の記憶部)をさらに有していてもよい。 In addition, the processing device according to an embodiment of the present disclosure may further have a memory unit (third memory unit) for storing intermediate results (partial sums) calculated by the multiplier-accumulator.

加えて、本開示の実施形態においては、上記積和器は、複数の乗算器と、加算器と、累積器とを有していてもよい。さらに、本開示の実施形態においては、当該積和器は、次の加算の際に、上記累積器に一時的に保持された累積結果、又は、上記記憶部(第3の記憶部)に格納する途中結果(部分和)のいずれかを用いて加算を行うかを選択するセレクタ部(第2のセレクタ部)を有していてもよい。In addition, in an embodiment of the present disclosure, the multiplier-accumulator may have a plurality of multipliers, an adder, and an accumulator. Furthermore, in an embodiment of the present disclosure, the multiplier-accumulator may have a selector unit (second selector unit) that selects whether to perform the next addition using the accumulated result temporarily held in the accumulator or the intermediate result (partial sum) stored in the memory unit (third memory unit).

そして、本開示の実施形態においては、上述の各セレクタ部の選択動作は、演算の種類(例えばConvolution演算、Affine演算等)、演算量(例えば、カーネルサイズ、出力サイズ、アドレス、マップ数、ビット数)から決定されるメモリアクセスビット数、記憶部の種類(例えば、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)等)、記憶部の容量、及び、積和器の種類のうちの少なくとも1つに基づいて制御される。In an embodiment of the present disclosure, the selection operation of each of the selector units described above is controlled based on at least one of the type of calculation (e.g., convolution calculation, affine calculation, etc.), the number of memory access bits determined from the amount of calculation (e.g., kernel size, output size, address, number of maps, number of bits), the type of memory unit (e.g., DRAM (Dynamic Random Access Memory), SRAM (Static Random Access Memory), etc.), the capacity of the memory unit, and the type of multiplier/accumulator.

具体的には、実行する演算の種類がAffine演算である場合には、入力データと係数との積和演算が実行されることとなるが、当該積和演算においては、先に説明したように同一の入力データが繰り返し用いられることとなる。そこで、本開示の実施形態においては、Affine演算の場合には、繰り返し用いる入力データをレジスタ部に一時的に保持するようにすることで、メモリアクセス回数の増加を抑えることができ、その結果、消費電力の増加をより抑えることができる。Specifically, when the type of operation to be executed is an affine operation, a multiply-and-accumulate operation is executed between the input data and the coefficient, but in this multiply-and-accumulate operation, the same input data is used repeatedly as described above. Therefore, in the embodiment of the present disclosure, in the case of an affine operation, the repeatedly used input data is temporarily stored in a register unit, thereby suppressing an increase in the number of memory accesses, and as a result, an increase in power consumption can be further suppressed.

また、実行する演算の種類がConvolution演算である場合には、入力データと係数との積和演算が実行されることとなるが、当該積和演算においては、先に説明したように、同一の入力データ及び係数が繰り返し用いられることとなる。そこで、本開示の実施形態においては、Convolution演算の場合には、レジスタ部に一時的に保持して繰り返し用いることで記憶部(メモリ)からの読み出し回数(メモリアクセス回数)をできるだけ小さくすることができるデータを選択して、レジスタ部に一時的に保持する。その結果、本開示の実施形態においては、メモリアクセス回数の増加を抑えることができ、ひいては消費電力の増加をより抑えることができる。 In addition, when the type of operation to be performed is a convolution operation, a multiplication and accumulation operation between the input data and the coefficients is performed, but in this multiplication and accumulation operation, as described above, the same input data and coefficients are repeatedly used. Therefore, in the embodiment of the present disclosure, in the case of a convolution operation, data that can be temporarily stored in the register unit and repeatedly used to minimize the number of reads (memory access counts) from the storage unit (memory) is selected and temporarily stored in the register unit. As a result, in the embodiment of the present disclosure, it is possible to suppress an increase in the number of memory accesses, and thus to further suppress an increase in power consumption.

より具体的には、実行する演算の種類がConvolution演算である場合には、本開示の実施形態においては、演算量(例えば、カーネルサイズ、出力サイズ、アドレス、マップ数、ビット数)等に基づいて、レジスタ部に一時的に保持して繰り返し用いることで読み出し回数(メモリアクセス回数)をできるだけ小さくすることができるデータを選択する。本開示の実施形態によれば、このようにすることで、メモリアクセス回数の増加を抑えることができ、その結果、消費電力の増加をより抑えることができる。More specifically, when the type of calculation to be performed is a convolution calculation, in an embodiment of the present disclosure, data is selected based on the amount of calculation (e.g., kernel size, output size, address, number of maps, number of bits), etc., so that the number of reads (number of memory accesses) can be minimized by temporarily storing the data in a register and repeatedly using the data. According to an embodiment of the present disclosure, by doing so, it is possible to suppress an increase in the number of memory accesses, and as a result, it is possible to further suppress an increase in power consumption.

また、実行する演算の種類がConvolution演算である場合には、本開示の実施形態においては、演算量(例えば、カーネルサイズ、出力サイズ、アドレス、マップ数、ビット数)等に基づいて決まる上記記憶部の使用容量ができるだけ小さくなるように、レジスタ部に一時的に保持するデータを選択する。本実施形態においては、例えば、係数をレジスタ部に保持することにより、記憶部の使用容量が小さくなる場合には、係数をレジスタ部に一時的に保持するようにする。また、本実施形態においては、例えば、入力データをレジスタ部に保持することにより、記憶部の使用容量が小さくなる場合には、入力データをレジスタ部に一時的に保持するようにする。本開示の実施形態によれば、このようにすることで、メモリアクセス回数の増加やメモリアクセスに伴う消費電力の増加を抑えることができ、その結果、消費電力の増加をより抑えることができる。 In addition, when the type of calculation to be performed is a convolution calculation, in an embodiment of the present disclosure, data to be temporarily stored in the register unit is selected so that the capacity of the memory unit, which is determined based on the amount of calculation (e.g., kernel size, output size, address, number of maps, number of bits), is minimized. In this embodiment, for example, when the capacity of the memory unit is reduced by storing coefficients in the register unit, the coefficients are temporarily stored in the register unit. In addition, in this embodiment, for example, when the capacity of the memory unit is reduced by storing input data in the register unit, the input data is temporarily stored in the register unit. According to an embodiment of the present disclosure, by doing so, it is possible to suppress an increase in the number of memory accesses and an increase in power consumption associated with memory access, and as a result, it is possible to further suppress an increase in power consumption.

また、実行する演算の種類がConvolution演算である場合には、本開示の実施形態においては、記憶部にアクセスすることにより消費される電力をできるだけ小さくするように、レジスタ部に一時的に保持するデータを選択する。本実施形態においては、例えば、係数を格納する記憶部がDRAMであり、入力データを格納する記憶部がSRAMであった場合には、DRAMの方がアクセスにより消費される電力が大きいことから、係数をレジスタ部に一時的に保持するようにする。本開示の実施形態によれば、このようにすることで、消費電力の増加をより抑えることができる。 Furthermore, in the case where the type of calculation to be performed is a convolution calculation, in the embodiment of the present disclosure, data to be temporarily stored in the register unit is selected so as to minimize the power consumed by accessing the memory unit. In this embodiment, for example, if the memory unit that stores the coefficients is a DRAM and the memory unit that stores the input data is an SRAM, the coefficients are temporarily stored in the register unit because the DRAM consumes more power when accessed. According to the embodiment of the present disclosure, by doing so, it is possible to further suppress the increase in power consumption.

すなわち、本開示の実施形態によれば、ディープニューラルネットワークにおける演算処理を行う演算処理装置の消費電力の増加をより抑えることが可能である。以下に、本発明者が創作した本開示の実施形態の詳細を順次説明する。In other words, according to the embodiments of the present disclosure, it is possible to further suppress the increase in power consumption of a processing device that performs arithmetic processing in a deep neural network. Below, the details of the embodiments of the present disclosure created by the present inventor will be explained in order.

<<2. 第1の実施形態>>
<2.1. 演算処理装置10の機能構成例>
まずは、図4を参照して、本実施形態に係る演算処理方法を実現する演算処理装置10の機能構成例について説明する。図4は、本実施形態に係る演算処理装置10の機能ブロック図の一例である。
<<2. First embodiment>>
<2.1. Example of functional configuration of the arithmetic processing device 10>
First, an example of the functional configuration of a processor 10 that realizes the processor method according to the present embodiment will be described with reference to Fig. 4. Fig. 4 is an example of a functional block diagram of the processor 10 according to the present embodiment.

詳細には、図4に示すように、本実施形態に係る演算処理装置10は、入力部110、演算部120、記憶部130、及び出力部140を主に有する。以下に、当該演算処理装置10の各機能ブロックについて順次説明する。In detail, as shown in Fig. 4, the arithmetic processing device 10 according to this embodiment mainly has an input unit 110, a calculation unit 120, a memory unit 130, and an output unit 140. Below, each functional block of the arithmetic processing device 10 will be described in order.

(入力部110)
入力部110は、操作者による種々の入力操作を検出し、入力操作に係る入力データを受け付ける機能を有する。例えば、当該入力部110は、操作者による入力操作を検出するための各種の装置である、各種のボタン、キーボード、タッチパネル、マウス、スイッチ等により実現することができる。
(Input unit 110)
The input unit 110 has a function of detecting various input operations by an operator and receiving input data related to the input operations. For example, the input unit 110 can be realized by various devices for detecting input operations by an operator, such as various buttons, a keyboard, a touch panel, a mouse, and a switch.

(演算部120)
演算部120は、複数の入力データと、当該入力データにそれぞれ対応する複数の係数とに基づく演算を行い、出力データを算出する機能を有する。具体的には、本実施形態に係る演算部120は、先に説明したディープニューラルネットワークに係る演算を行うことができる。なお、当該演算部120の詳細は後述する。
(Calculation unit 120)
The calculation unit 120 has a function of performing calculations based on a plurality of input data and a plurality of coefficients corresponding to the input data, and calculating output data. Specifically, the calculation unit 120 according to this embodiment can perform calculations related to the deep neural network described above. The details of the calculation unit 120 will be described later.

(記憶部130)
記憶部130は、演算処理装置10が有する各ブロックで用いられるプログラム等を格納する機能を有する。
(Memory unit 130)
The storage unit 130 has a function of storing programs and the like used in each block of the arithmetic processing device 10 .

(出力部140)
出力部140は、操作者に対し種々の情報出力を行う機能を有する。例えば、出力部140は、演算部120による演算結果である出力データを出力する。詳細には、出力部140は、視覚情報を出力するディスプレイ装置を含んで構成されることができる。ここで、上記のディスプレイ装置は、例えば、CRT(Cathode Ray Tube)ディスプレイ装置、液晶ディスプレイ(LCD:Liquid Crystal Display)装置、OLED(Organic Light Emitting Diode)装置等であることができる。
(Output unit 140)
The output unit 140 has a function of outputting various information to the operator. For example, the output unit 140 outputs output data which is a result of the calculation by the calculation unit 120. In detail, the output unit 140 can be configured to include a display device which outputs visual information. Here, the above-mentioned display device can be, for example, a CRT (Cathode Ray Tube) display device, a Liquid Crystal Display (LCD) device, an OLED (Organic Light Emitting Diode) device, or the like.

以上、本実施形態に係る演算処理装置10の機能構成例について説明した。なお、上記で説明した機能構成例はあくまで一例であり、本実施形態に係る演算処理装置10の機能構成例は係る例に限定されない。本実施形態に係る演算処理装置10は、図4に示す以外の構成をさらに有していてもよい。例えば、演算処理装置10は、情報処理端末との情報通信を行う通信部等をさらに有していてもよい。すなわち、本実施形態に係る演算処理装置10の機能構成は、柔軟に設計変更することが可能である。The above describes an example of the functional configuration of the arithmetic processing device 10 according to this embodiment. Note that the functional configuration example described above is merely an example, and the functional configuration example of the arithmetic processing device 10 according to this embodiment is not limited to the above example. The arithmetic processing device 10 according to this embodiment may further have a configuration other than that shown in FIG. 4. For example, the arithmetic processing device 10 may further have a communication unit that communicates information with an information processing terminal. In other words, the functional configuration of the arithmetic processing device 10 according to this embodiment can be flexibly redesigned.

<2.2. 演算部120の構成例>
次に、図5を参照して、本実施形態に係る演算部120について説明する。図5は、本実施形態に係る演算部120の回路ブロック図の一例である。
2.2. Example of configuration of calculation unit 120
Next, the arithmetic unit 120 according to the present embodiment will be described with reference to Fig. 5. Fig. 5 is an example of a circuit block diagram of the arithmetic unit 120 according to the present embodiment.

詳細には、図5に示すように、本実施形態に係る演算部120は、記憶部200、202、204と、セレクタ部300、302、レジスタ部400(図5中ではREG)と、積和器500と、制御部600とを主に含む。以下に、演算部120の各回路ブロックについて順次説明する。In detail, as shown in Fig. 5, the calculation unit 120 according to this embodiment mainly includes memory units 200, 202, and 204, selector units 300 and 302, a register unit 400 (REG in Fig. 5), a product-sum calculator 500, and a control unit 600. Each circuit block of the calculation unit 120 will be described below in order.

(記憶部200、202)
記憶部(第1の記憶部)200は、例えば係数(第1のデータ)を格納し、記憶部(第2の記憶部)202は、例えば入力データ(第2のデータ)を格納することができる。本実施形態においては、これら記憶部200、202は、DRAM、SRAM等の揮発性メモリであってもよく、NAND等の不揮発性メモリであってもよい。しかしながら、アクセススピードの観点からは、これら記憶部200、202は、DRAM、SRAM等の揮発性メモリであることが好ましい。そして、本実施形態においては、記憶部200、202に格納された入力データ及び係数は、後述するレジスタ部400に一時的に保持されたり、レジスタ部400に保持されることなく積和器500により直接的に読み出されたりする。
(Storage units 200, 202)
The storage unit (first storage unit) 200 can store, for example, coefficients (first data), and the storage unit (second storage unit) 202 can store, for example, input data (second data). In this embodiment, these storage units 200 and 202 may be volatile memories such as DRAM and SRAM, or non-volatile memories such as NAND. However, from the viewpoint of access speed, these storage units 200 and 202 are preferably volatile memories such as DRAM and SRAM. In this embodiment, the input data and coefficients stored in the storage units 200 and 202 are temporarily held in a register unit 400 described later, or directly read out by a product-sum unit 500 without being held in the register unit 400.

(記憶部204)
記憶部204は、積和器500で演算された途中結果(部分和)を格納することができる。本実施形態においては、記憶部204は、DRAM、SRAM等の揮発性メモリであってもよく、NAND等の不揮発性メモリであってもよいが、アクセススピードの観点からは、DRAM、SRAM等の揮発性メモリであることが好ましい。そして、本実施形態においては、記憶部204に格納された途中結果は、積和器500で読み出されて演算に再利用されることとなる。
(Memory unit 204)
The storage unit 204 can store intermediate results (partial sums) calculated by the multiply-adder 500. In this embodiment, the storage unit 204 may be a volatile memory such as DRAM or SRAM, or a non-volatile memory such as NAND, but from the viewpoint of access speed, a volatile memory such as DRAM or SRAM is preferable. In this embodiment, the intermediate results stored in the storage unit 204 are read out by the multiply-adder 500 and reused in the calculation.

(セレクタ部300、302)
セレクタ部300、302は、論理回路等により構成され、後述する制御部600からの制御に従って、例えば記憶部200に格納された係数又は記憶部202に格納された入力データのうちから、後述するレジスタ部400に一時的に保持するデータを選択することができる。例えば、制御部600から選択信号「0」が入力された場合には、セレクタ部300は、記憶部200に格納された係数をレジスタ部400へ出力し、セレクタ部302は、記憶部202に格納された入力データを積和器500へ出力する。一方、例えば、制御部600から選択信号「1」が入力された場合には、セレクタ部300は、記憶部202に格納された入力データをレジスタ部400へ出力し、セレクタ部302は、記憶部200に格納された係数を積和器500へ出力する。
(Selector Units 300, 302)
The selector units 300 and 302 are configured with logic circuits and the like, and can select data to be temporarily held in the register unit 400 (described later) from, for example, the coefficients stored in the storage unit 200 or the input data stored in the storage unit 202, under the control of the control unit 600 (described later). For example, when a selection signal "0" is input from the control unit 600, the selector unit 300 outputs the coefficients stored in the storage unit 200 to the register unit 400, and the selector unit 302 outputs the input data stored in the storage unit 202 to the product-accumulator 500. On the other hand, when a selection signal "1" is input from the control unit 600, for example, the selector unit 300 outputs the input data stored in the storage unit 202 to the register unit 400, and the selector unit 302 outputs the coefficients stored in the storage unit 200 to the product-accumulator 500.

(レジスタ部400)
レジスタ部400は、上述したセレクタ部300、302によって選択された、記憶部200に格納された係数又は記憶部202に格納された入力データのうちのいずれかを、一時的に保持することができる。本実施形態においては、レジスタ部400は、CPU(Central Processing Unit)1100(図9 参照)に内蔵された論理回路(フリップフロップ等)等により構成され、上述した記憶部200、202等と比べて、容量が小さいものの、動作スピードが速い専用記憶装置であるものとする。このようなレジスタ部400は、専用記憶装置であることから、回路構成が簡略化されており、消費電力が小さい。従って、本実施形態においては、後述する積和器500で繰り返し使用するデータをレジスタ部400で一時的に保持して、後述する積和器500での演算で繰り返し再利用することにより、消費電力の増加を抑えることができる。
(Register unit 400)
The register unit 400 can temporarily hold either the coefficients stored in the memory unit 200 or the input data stored in the memory unit 202, selected by the selector units 300 and 302. In this embodiment, the register unit 400 is configured by logic circuits (flip-flops, etc.) built into the CPU (Central Processing Unit) 1100 (see FIG. 9 ), and is a dedicated storage device that has a smaller capacity but a faster operating speed than the above-mentioned storage units 200 and 202. Since the register unit 400 is a dedicated storage device, the circuit configuration is simplified and the power consumption is low. Therefore, in this embodiment, data to be repeatedly used in the product-adder 500 described later is temporarily held in the register unit 400 and repeatedly reused in the calculations in the product-adder 500 described later, thereby suppressing an increase in power consumption.

(積和器500)
積和器500は、入力データ、係数等のデータを記憶部200、202及びレジスタ部400から読み出し、読み出したデータを用いて演算を繰り返し行うことができる。さらに、積和器500は、演算結果(途中結果)を記憶部202、204等へ出力することもできる。本実施形態においては、積和器500は、演算処理等に応じて、デジタル回路であってもよく、アナログ回路であってもよく、特に限定されるものでない。なお、積和器500の詳細については後述する。
(Product Accumulator 500)
The product-accumulator 500 can read input data, coefficients, and other data from the storage units 200, 202 and the register unit 400, and repeatedly perform calculations using the read data. Furthermore, the product-accumulator 500 can output calculation results (intermediate results) to the storage units 202, 204, etc. In this embodiment, the product-accumulator 500 may be a digital circuit or an analog circuit depending on the calculation process, etc., and is not particularly limited. Details of the product-accumulator 500 will be described later.

(制御部600)
制御部600は、CPU1100(図9 参照)等から構成され、演算の種類、演算量(例えば、カーネルサイズ、出力サイズ、アドレス、マップ数、ビット数)、記憶部200、202の種類、容量、及び、積和器500の種類等に基づいて、セレクタ部300、302を制御することができる。また、制御部600は、記憶部200、202を制御することができる。
(Control unit 600)
The control unit 600 is composed of a CPU 1100 (see FIG. 9 ) and the like, and can control the selector units 300 and 302 based on the type of calculation, the amount of calculation (e.g., kernel size, output size, address, number of maps, number of bits), the type and capacity of the storage units 200 and 202, and the type of the product adder 500. The control unit 600 can also control the storage units 200 and 202.

具体的には、本実施形態においては、制御部600は、例えば、実行する演算の種類がAffine演算である場合には、繰り返し用いる入力データをレジスタ部400に一時的に保持するように制御を行う。Specifically, in this embodiment, for example, when the type of operation to be performed is an affine operation, the control unit 600 performs control so that the repeatedly used input data is temporarily stored in the register unit 400.

また、本実施形態においては、制御部600は、例えば、Convolution演算の場合には、レジスタ部400に一時的に保持して繰り返し用いることで、記憶部200、202からの読み出し回数(メモリアクセス回数)をできるだけ小さくすることができるデータを選択し、選択したデータをレジスタ部400に保持するように制御を行う。もしくは、本実施形態においては、例えば、制御部600は、演算量(例えば、カーネルサイズ、出力サイズ、アドレス、マップ数、ビット数)等に基づいて、レジスタ部400に一時的に保持して繰り返し用いることで読み出し回数(メモリアクセス回数)をできるだけ小さくすることができるデータを選択し、選択したデータをレジスタ部400に保持するように制御を行う。もしくは、制御部600は、例えば、演算量(例えば、カーネルサイズ、出力サイズ、アドレス、マップ数、ビット数)等に基づいて決まる上記記憶部200、202の使用容量ができるだけ小さくなるように、レジスタ部400に一時的に保持するデータを選択し、選択したデータをレジスタ部400に保持するように制御を行う。さらに、制御部600は、例えば、記憶部200、202にアクセスすることにより消費される電力をできるだけ小さくするように、記憶部200、202の種類(例えば、DRAM、SRAM等)に基づいて、レジスタ部400に一時的に保持するデータを選択し、選択したデータをレジスタ部400に保持するように制御を行う。In addition, in this embodiment, the control unit 600, for example, in the case of a convolution calculation, selects data that can be temporarily stored in the register unit 400 and repeatedly used to minimize the number of reads (memory accesses) from the storage units 200 and 202, and controls to store the selected data in the register unit 400. Alternatively, in this embodiment, for example, the control unit 600 selects data that can be temporarily stored in the register unit 400 and repeatedly used to minimize the number of reads (memory accesses) based on the amount of calculation (for example, kernel size, output size, address, number of maps, number of bits), etc., and controls to store the selected data in the register unit 400. Alternatively, the control unit 600 selects data to be temporarily stored in the register unit 400 so that the capacity used by the storage units 200 and 202, which is determined based on the amount of calculation (for example, kernel size, output size, address, number of maps, number of bits), etc., is minimized, and controls to store the selected data in the register unit 400. Furthermore, the control unit 600 selects data to be temporarily stored in the register unit 400 based on the type of the memory units 200 and 202 (e.g., DRAM, SRAM, etc.) so as to minimize the power consumed by accessing the memory units 200 and 202, and performs control so as to store the selected data in the register unit 400.

本実施形態においては、このように制御部600によってセレクタ部300、302を制御することにより、メモリアクセス回数の増加を抑えることができ、その結果、消費電力の増加をより抑えることができる。さらに、本実施形態によれば、多くのレジスタ部を設けることもないことから、回路規模が増大することもなく、その結果、消費電力の増加をより抑えることができる。In this embodiment, by controlling the selector units 300 and 302 by the control unit 600 in this manner, it is possible to suppress an increase in the number of memory accesses, and as a result, it is possible to further suppress an increase in power consumption. Furthermore, according to this embodiment, since there is no need to provide many register units, the circuit size does not increase, and as a result, it is possible to further suppress an increase in power consumption.

以上、本実施形態に係る演算部120の機能構成例について説明した。なお、上記で説明した機能構成例はあくまで一例であり、本実施形態に係る演算部120の機能構成例は係る例に限定されない。例えば、本実施形態に係る演算部120は、図5に示す以外の構成をさらに有していてもよい。The above describes an example of the functional configuration of the calculation unit 120 according to this embodiment. Note that the above-described example of the functional configuration is merely an example, and the example of the functional configuration of the calculation unit 120 according to this embodiment is not limited to the example. For example, the calculation unit 120 according to this embodiment may further have a configuration other than that shown in FIG. 5.

<2.3. 積和器500の構成例>
次に、図6を参照して、本実施形態に係る積和器500の例について説明する。図6は、本実施形態に係る積和器500の回路ブロック図の一例である。
<2.3. Example of the configuration of the product-accumulator 500>
Next, an example of the product-accumulator 500 according to this embodiment will be described with reference to Fig. 6. Fig. 6 is an example of a circuit block diagram of the product-accumulator 500 according to this embodiment.

詳細には、図6に示すように、本実施形態に係る積和器500は、複数の乗算器502と、セレクタ部504と、加算器506と、累積器508とを主に含む。なお、本実施形態においては、積和器500は、例えばディープニューラルネットワークにおける演算処理の処理層の数に応じて、演算部120に複数個設けられているものとする。以下に、積和器500の各回路ブロックについて順次説明する。In detail, as shown in FIG. 6, the product-sum calculator 500 according to this embodiment mainly includes a plurality of multipliers 502, a selector unit 504, an adder 506, and an accumulator 508. In this embodiment, a plurality of product-sum calculators 500 are provided in the arithmetic unit 120 according to the number of processing layers of the arithmetic processing in the deep neural network, for example. Each circuit block of the product-sum calculator 500 will be described below in order.

(乗算器502)
各乗算器502は、論理回路等により構成され、記憶部200、202に格納された入力データ又は係数、及び、レジスタ部400に一時的に保持された入力データ又は係数を読み出し、これらを順次乗算することができる。さらに、各乗算器502は、得られた演算結果を後述する加算器506に出力することができる。
(Multiplier 502)
Each multiplier 502 is configured with a logic circuit or the like, and can read input data or coefficients stored in the storage units 200 and 202 and input data or coefficients temporarily held in the register unit 400, and multiply them sequentially. Furthermore, each multiplier 502 can output the obtained calculation result to an adder 506, which will be described later.

(セレクタ部504)
セレクタ部504は、論理回路等により構成され、制御部600からの制御(選択信号)に従って、記憶部204に格納された途中結果(部分和)及び後述する累積器508で一時的に保持された累積結果のうちから、後述する加算器506に出力するデータ(第3のデータ)を選択することができる。例えば、制御部600から選択信号「0」が入力された場合には、セレクタ部504は、記憶部204に格納された途中結果(部分和)を加算器506へ出力する。一方、例えば、制御部600から選択信号「1」が入力された場合には、セレクタ部504は、累積器508に一時的に保持された累積結果を加算器506へ出力する。なお、本実施形態においては、当該セレクタ部504は、演算の種類等に応じて、制御部600によって制御されてもよく、もしくは、上述したセレクタ部300、302と同様に、消費電力の増加をより抑えるように制御部600によって制御されてもよい。
(Selector Unit 504)
The selector unit 504 is composed of a logic circuit or the like, and can select data (third data) to be output to the adder 506 described later from among the intermediate result (partial sum) stored in the memory unit 204 and the accumulated result temporarily held in the accumulator 508 described later, according to control (selection signal) from the control unit 600. For example, when a selection signal "0" is input from the control unit 600, the selector unit 504 outputs the intermediate result (partial sum) stored in the memory unit 204 to the adder 506. On the other hand, when a selection signal "1" is input from the control unit 600, the selector unit 504 outputs the accumulated result temporarily held in the accumulator 508 to the adder 506. In this embodiment, the selector unit 504 may be controlled by the control unit 600 depending on the type of calculation, or may be controlled by the control unit 600 to further suppress an increase in power consumption, similar to the above-mentioned selector units 300 and 302.

(加算器506)
加算器506は、論理回路等により構成され、上述した各乗算器502からの乗算結果と、上述したセレクタ部504によって選択された、記憶部204に格納された途中結果(部分和)及び累積器508で一時的に保持された累積結果のいずれか一方とを加算することができる。さらに、加算器506は、加算結果を、後述する累積器508や記憶部202、204に出力することができる。
(Adder 506)
The adder 506 is configured by a logic circuit or the like, and can add the multiplication results from each multiplier 502 described above to either the intermediate result (partial sum) stored in the memory unit 204 and the accumulated result temporarily held in the accumulator 508, selected by the selector unit 504 described above. Furthermore, the adder 506 can output the addition result to the accumulator 508 and the memory units 202 and 204 described below.

(累積器508)
累積器508は、上述した加算器506での加算結果を一時的に保持し、保持した累積結果を記憶部202、204へ出力したり、セレクタ部504の選択に従って加算器506へ出力したりすることができる。本実施形態によれば、累積器508内に保持された累積結果を用いて加算器506が演算を行うことができることから、記憶部200、202等への読み出し回数を減らして、積和器500内で閉じた演算を行うことが可能となる。また、累積器508には、累積した値を0にリセットするためのリセット信号が適宜入力されてもよい。
(Accumulator 508)
The accumulator 508 temporarily holds the addition result of the adder 506 described above, and can output the held accumulation result to the storage units 202, 204, or output it to the adder 506 according to the selection of the selector unit 504. According to this embodiment, the adder 506 can perform an arithmetic operation using the accumulation result held in the accumulator 508, so that it is possible to reduce the number of times data is read out to the storage units 200, 202, etc., and perform a closed arithmetic operation within the product-sum unit 500. In addition, a reset signal for resetting the accumulated value to 0 may be input to the accumulator 508 as appropriate.

当該累積器508は、例えばレジスタ部400と同様に、CPU1100(図9 参照)に内蔵された論理回路(フリップフロップ等)等により構成され、上述した記憶部200、202等と比べて、容量が小さいものの、動作スピードが速い専用の記憶装置であるものとする。このような累積器508は、専用記憶装置であることから、回路構成が簡略化されており、消費電力が小さい。従って、このような累積器508を用いることにより、消費電力の増加を抑えることができる。The accumulator 508 is configured, for example, like the register unit 400, by logic circuits (such as flip-flops) built into the CPU 1100 (see FIG. 9), and is a dedicated memory device with a smaller capacity but faster operating speed than the above-mentioned memory units 200, 202, etc. Such an accumulator 508 is a dedicated memory device, so that the circuit configuration is simplified and power consumption is low. Therefore, by using such an accumulator 508, it is possible to suppress an increase in power consumption.

以上、本実施形態に係る積和器500の機能構成例について説明した。なお、上記で説明した機能構成例はあくまで一例であり、本実施形態に係る積和器500の機能構成例は係る例に限定されない。例えば、本実施形態に係る積和器500は、図6に示す以外の構成をさらに有していてもよい。The above describes an example of the functional configuration of the product-accumulator 500 according to this embodiment. Note that the above-described example of the functional configuration is merely an example, and the example of the functional configuration of the product-accumulator 500 according to this embodiment is not limited to the example. For example, the product-accumulator 500 according to this embodiment may further have a configuration other than that shown in FIG. 6.

<2.4. 演算処理方法>
以上、本実施形態に係る演算処理装置10、演算部120及び積和器500の構成例について詳細に説明した。次に、本実施形態に係る演算処理方法について、図7を参照して説明する。図7は、本実施形態に係る演算処理方法の一例を示すフローチャートである。
2.4. Calculation processing method
The above is a detailed description of exemplary configurations of the arithmetic processing device 10, the arithmetic unit 120, and the product adder 500 according to this embodiment. Next, the arithmetic processing method according to this embodiment will be described with reference to Fig. 7. Fig. 7 is a flowchart showing an example of the arithmetic processing method according to this embodiment.

詳細には、図7に示すように、本実施形態に係る演算処理方法には、ステップS101からステップS116までの複数のステップが含まれている。以下に、本実施形態に係る演算処理方法に含まれる各ステップの詳細を説明する。In detail, as shown in Fig. 7, the calculation processing method according to this embodiment includes a number of steps from step S101 to step S116. Each step included in the calculation processing method according to this embodiment will be described in detail below.

まずは、制御部600は、ディープニューラルネットワークにおける演算処理の処理層のカウンタを0に設定する(リセットする)(ステップS101)。次に、制御部600は、各種処理のためのカウンタを初期化する(ステップS102)。First, the control unit 600 sets (resets) a counter for the processing layer of the arithmetic processing in the deep neural network to 0 (step S101). Next, the control unit 600 initializes counters for various processes (step S102).

次に、実行する演算の種類に応じて、制御部600は、制御信号、選択信号を生成し、演算部120の各ブロックへ出力する(ステップS103)。詳細には、制御部600は、演算の種類、演算量(例えば、カーネルサイズ、出力サイズ、アドレス、マップ数、ビット数)、記憶部200、202の種類、容量、及び、積和器500の種類等に基づいて、選択信号「0」又は選択信号「1」を生成し、セレクタ部300、302へ出力する。そして、本実施形態においては、制御部600は、レジスタ部400に一時的に保持して繰り返し用いることで、記憶部200、202からの読み出し回数(メモリアクセス回数)をできるだけ小さくすることができるデータを選択し、選択したデータをレジスタ部400に保持するように選択信号を生成する。本実施形態においては、このように制御部600によってセレクタ部300、302を制御する選択信号を生成することにより、メモリアクセス回数の増加を抑えることができ、その結果、消費電力の増加をより抑えることができる。Next, the control unit 600 generates a control signal and a selection signal according to the type of calculation to be performed, and outputs them to each block of the calculation unit 120 (step S103). In detail, the control unit 600 generates a selection signal "0" or a selection signal "1" based on the type of calculation, the amount of calculation (e.g., kernel size, output size, address, number of maps, number of bits), the type and capacity of the storage units 200 and 202, and the type of the multiplier-accumulator 500, and outputs them to the selector units 300 and 302. In this embodiment, the control unit 600 selects data that can be temporarily stored in the register unit 400 and used repeatedly to minimize the number of reads (memory access count) from the storage units 200 and 202, and generates a selection signal to store the selected data in the register unit 400. In this embodiment, by generating a selection signal that controls the selector units 300 and 302 in this way, it is possible to suppress an increase in the number of memory accesses, and as a result, it is possible to further suppress an increase in power consumption.

なお、実行する演算の種類がConvolution演算である場合には、先に説明したように、制御部600は、演算量(例えば、カーネルサイズ、出力サイズ、アドレス、マップ数、ビット数)等に基づいて決まる上記記憶部の使用容量をできるだけ小さくするように、レジスタ部400に一時的に保持するデータを選択してもよい。また、制御部600は、記憶部200、202にアクセスすることにより消費される電力をできるだけ小さくするように、レジスタ部400に一時的に保持するデータを選択してもよい。 When the type of calculation to be performed is a convolution calculation, as described above, the control unit 600 may select data to be temporarily stored in the register unit 400 so as to minimize the capacity used by the memory unit, which is determined based on the amount of calculation (e.g., kernel size, output size, address, number of maps, number of bits), etc. The control unit 600 may also select data to be temporarily stored in the register unit 400 so as to minimize the power consumed by accessing the memory units 200 and 202.

さらに、制御部600の制御により、記憶部200、202から係数及び入力データが読み出される(ステップS104)。 Furthermore, under the control of the control unit 600, coefficients and input data are read out from the memory units 200, 202 (step S104).

ここで、セレクタ部300、302は、制御部600からの選択信号が「0」であるかどうか判断を行う(ステップS105)。そして、セレクタ部300、302は、選択信号が「0」であると判断した場合(ステップS105:Yes)には、ステップS106の処理へ進み、選択信号が「0」でないと判断した場合(ステップS105:No)には、ステップS110の処理へ進む。Here, the selector units 300 and 302 determine whether the selection signal from the control unit 600 is "0" (step S105). If the selector units 300 and 302 determine that the selection signal is "0" (step S105: Yes), they proceed to processing in step S106, and if they determine that the selection signal is not "0" (step S105: No), they proceed to processing in step S110.

次に、制御部600から選択信号「0」が入力されたことに基づき、セレクタ部300は、記憶部200に格納された係数をレジスタ部400へ出力し、セレクタ部302は、記憶部202に格納された入力データを積和器500へ出力する。従って、レジスタ部400は、係数を一時的に保持することとなる(ステップS106)。Next, based on the selection signal "0" input from the control unit 600, the selector unit 300 outputs the coefficients stored in the memory unit 200 to the register unit 400, and the selector unit 302 outputs the input data stored in the memory unit 202 to the product-accumulator 500. Therefore, the register unit 400 temporarily holds the coefficients (step S106).

そして、積和器500は、レジスタ部400に一時的に保持された係数と、記憶部202から読み出した入力データとを用いて積和演算を行う(ステップS107)。次に、積和器500は、記憶部204から部分和を読み出し、上述したステップS107での積和結果に積算する(ステップS108)。さらに、積和器500は、上述したステップS108での積算結果を記憶部204へ出力する(ステップS109)。Then, the multiplier 500 performs a multiply-and-accumulate operation using the coefficients temporarily stored in the register unit 400 and the input data read from the memory unit 202 (step S107). Next, the multiplier 500 reads the partial sum from the memory unit 204 and multiplies it by the multiply-and-accumulate result of step S107 described above (step S108). Furthermore, the multiplier 500 outputs the multiplication result of step S108 described above to the memory unit 204 (step S109).

次に、制御部600から選択信号「1」が入力されたことに基づき、セレクタ部300は、記憶部202に格納された入力データをレジスタ部400へ出力し、セレクタ部302は、記憶部200に格納された係数を積和器500へ出力する。従って、レジスタ部400は、入力データを一時的に保持することとなる(ステップS110)。Next, based on the selection signal "1" input from the control unit 600, the selector unit 300 outputs the input data stored in the memory unit 202 to the register unit 400, and the selector unit 302 outputs the coefficients stored in the memory unit 200 to the product-accumulator 500. Therefore, the register unit 400 temporarily holds the input data (step S110).

そして、積和器500は、レジスタ部400に一時的に保持された入力データと、記憶部200から読み出した係数とを用いて積和演算を行う(ステップS111)。次に、積和器500は、累積器508から累積結果(部分和)を読み出し、上述したステップS111での積和結果に積算する(ステップS112)。本実施形態によれば、累積器508内に保持された累積結果を用いて加算器506が演算を行うことができることから、記憶部200、202等からの読み出し回数を減らして、積和器500内で閉じた演算を行うことが可能となる。Then, the multiplier-accumulator 500 performs a multiply-and-accumulate operation using the input data temporarily stored in the register unit 400 and the coefficients read from the memory unit 200 (step S111). Next, the multiplier-accumulator 500 reads the accumulation result (partial sum) from the accumulator 508 and adds it to the multiply-and-accumulate result in step S111 described above (step S112). According to this embodiment, since the adder 506 can perform an operation using the accumulation result stored in the accumulator 508, it is possible to reduce the number of times reads are made from the memory units 200, 202, etc. and perform a closed operation within the multiplier-accumulator 500.

さらに、積和器500は、上述したステップS112での積算結果を累積器508へ出力する(ステップS113)。 Furthermore, the multiplier-accumulator 500 outputs the accumulation result in step S112 described above to the accumulator 508 (step S113).

次に、制御部600は、対象となる処理層(対象層)についての全出力データを生成したかどうかの判断を行う(ステップS114)。そして、制御部600は、対象層についての全出力データを生成したと判断した場合(ステップS114:Yes)には、ステップS115の処理へ進み、対象層についての全出力データを生成していないと判断した場合(ステップS114:No)には、ステップS103の処理へ戻る。Next, the control unit 600 determines whether all output data for the target processing layer (target layer) has been generated (step S114). If the control unit 600 determines that all output data for the target layer has been generated (step S114: Yes), it proceeds to processing of step S115, and if the control unit 600 determines that all output data for the target layer has not been generated (step S114: No), it returns to processing of step S103.

次に、制御部600は、処理を行った対象層が最終層であるかどうかの判断を行う(ステップS115)。そして、制御部600は、処理を行った対象層が最終層であると判断した場合(ステップS115:Yes)には、演算処理を終了し、処理を行った対象層が最終層でないと判断した場合(ステップS115:No)には、ステップS116の処理へ進む。Next, the control unit 600 determines whether the target layer on which the processing has been performed is the final layer (step S115). If the control unit 600 determines that the target layer on which the processing has been performed is the final layer (step S115: Yes), it ends the calculation process, and if the control unit 600 determines that the target layer on which the processing has been performed is not the final layer (step S115: No), it proceeds to the process of step S116.

次に、制御部600は、処理層のカウンタを参照して、処理を行った対象層が最終層であるかどうかの判断を行う(ステップS115)。そして、制御部600は、処理を行った対象層が最終層であると判断した場合(ステップS115:Yes)には、演算処理を終了し、処理を行った対象層が最終層でないと判断した場合(ステップS115:No)には、ステップS116の処理へ進む。Next, the control unit 600 refers to the counter of the processing layer and determines whether the processed target layer is the final layer (step S115). If the control unit 600 determines that the processed target layer is the final layer (step S115: Yes), it ends the calculation process, and if the control unit 600 determines that the processed target layer is not the final layer (step S115: No), it proceeds to the process of step S116.

さらに、制御部600は、処理層のカウンタを1だけ増やし(ステップS116)、ステップS103の処理へ戻る。 Furthermore, the control unit 600 increments the processing layer counter by 1 (step S116) and returns to processing of step S103.

以上説明したように、本実施形態によれば、ディープニューラルネットワークにおける演算処理を行う演算処理装置10の消費電力の増加を抑えることができる。As described above, according to this embodiment, it is possible to suppress an increase in power consumption of the calculation processing device 10 that performs calculation processing in the deep neural network.

詳細には、本実施形態においては、レジスタ部400の前に設置されたセレクタ部300、302を制御して、記憶部200、202からの読み出し回数(メモリアクセス回数)を減らすことができるように、レジスタ部400に一時的に保持するデータ(入力データ又は係数)を選択する。従って、本実施形態によれば、メモリアクセス回数の増加を抑えることができ、その結果、消費電力の増加をより抑えることができる。In detail, in this embodiment, the selector units 300, 302 installed in front of the register unit 400 are controlled to select data (input data or coefficients) to be temporarily stored in the register unit 400 so as to reduce the number of reads (number of memory accesses) from the storage units 200, 202. Therefore, according to this embodiment, it is possible to suppress an increase in the number of memory accesses, and as a result, it is possible to further suppress an increase in power consumption.

また、本実施形態においては、セレクタ部300、302により、レジスタ部400内に保持されたデータを共有使用することができることから、多くのレジスタ部を設けることもない。従って、本実施形態によれば、回路規模が増大することもなく、その結果、消費電力の増加をより抑えることができる。In addition, in this embodiment, the selector units 300 and 302 can share and use the data stored in the register unit 400, so there is no need to provide many register units. Therefore, according to this embodiment, the circuit size does not increase, and as a result, the increase in power consumption can be further suppressed.

<<3. 第2の実施形態>>
ところで、上述した第1の実施形態においては、演算処理装置10は、Convolution演算、Affine演算等を行うものして説明したが、当該演算処理装置10は、他の演算にも適用することができる。
<<3. Second embodiment>>
Incidentally, in the above-mentioned first embodiment, the arithmetic processing device 10 has been described as performing convolution calculations, affine calculations, and the like, but the arithmetic processing device 10 can also be applied to other calculations.

例えば、先に説明したように、畳み込みディープニューラルネットワーク(Convolution演算)においては、同一層における各ノード間の関係性を考慮して演算を行っていた。しかしながら、畳み込みディープニューラルネットワーク(Convolution演算)においては、フィルタにより局所的な関係性を考慮して特徴を抽出し、畳み込む演算であり、入力データ全体(例えば、画像データ全体)における関係性を考慮した演算ではなかった。そこで、近年、入力データ全体における関係性を考慮して演算される、Squeeze-and-excitation networkという手法が検討されている(非特許文献1 参照)。当該、Squeeze-and-excitation networkにおいては、入力データ同士の積和を算出するフェーズ(SE Block)が存在する。詳細には、当該Squeeze-and-excitation networkにおいては、入力データのマップ毎に強調する度合いを決定するスケールファクタを、当該入力データから算出し、さらに当該入力データと当該スケールファクタとの積和を算出する。For example, as explained above, in a convolutional deep neural network (convolution operation), the operation is performed by taking into account the relationship between each node in the same layer. However, in a convolutional deep neural network (convolution operation), a filter is used to extract features by taking into account local relationships, and the operation is a convolution operation, and the operation does not take into account the relationship in the entire input data (for example, the entire image data). Therefore, in recent years, a method called a squeeze-and-excitation network, which performs an operation by taking into account the relationship in the entire input data, has been considered (see Non-Patent Document 1). In the squeeze-and-excitation network, there is a phase (SE Block) in which the sum of products of input data is calculated. Specifically, in the squeeze-and-excitation network, a scale factor that determines the degree of emphasis for each map of input data is calculated from the input data, and the sum of products of the input data and the scale factor is further calculated.

そこで、第2の実施形態においては、上述した第1の実施形態に係る演算部120の記憶部200に、係数の代わりに入力データ(スケール用データ)を格納して、当該演算部120に演算を行わせることにより、記憶部200、202からの読み出し回数(メモリアクセス回数)の増加を抑えることができ、その結果、消費電力の増加をより抑えることができる。以下に、このような第2の実施形態を説明する。Therefore, in the second embodiment, input data (scale data) is stored in place of coefficients in the memory unit 200 of the calculation unit 120 according to the first embodiment described above, and the calculation unit 120 performs calculations, thereby suppressing an increase in the number of reads (memory access count) from the memory units 200 and 202, and as a result, an increase in power consumption can be further suppressed. The second embodiment is described below.

なお、本実施形態に係る演算処理装置10の構成は、上述した第1の実施形態に係る演算処理装置10と同様であるため、ここでは、説明を省略する。 Note that the configuration of the arithmetic processing device 10 of this embodiment is similar to that of the arithmetic processing device 10 of the first embodiment described above, so description thereof will be omitted here.

図8を参照して、本実施形態に係る演算部120aについて説明する。図8は、本実施形態に係る演算部120aの回路ブロック図の一例である。図8に示すように、本実施形態に係る演算部120aは、第1の実施形態と同様に、記憶部200a、202、204と、セレクタ部300、302、レジスタ部400(図8中ではREG)と、積和器500と、制御部600とを含む。ただし、第1の実施形態と異なり、記憶部200aは、入力データの少なくとも一部(スケール用データ)を格納する。 The calculation unit 120a according to this embodiment will be described with reference to FIG. 8. FIG. 8 is an example of a circuit block diagram of the calculation unit 120a according to this embodiment. As shown in FIG. 8, the calculation unit 120a according to this embodiment includes memory units 200a, 202, 204, selector units 300, 302, a register unit 400 (REG in FIG. 8), a product adder 500, and a control unit 600, similar to the first embodiment. However, unlike the first embodiment, the memory unit 200a stores at least a portion of the input data (scale data).

なお、本実施形態に係る積和器500の構成は、上述した第1の実施形態に係る積和器500と同様であるため、ここでは、説明を省略する。 Note that the configuration of the multiplier-accumulator 500 in this embodiment is similar to that of the multiplier-accumulator 500 in the first embodiment described above, so its explanation will be omitted here.

本実施形態においては、例えば、制御部600から選択信号「0」が入力された場合には、セレクタ部300は、記憶部200に格納された入力データ(スケール用データ)をレジスタ部400へ出力し、セレクタ部302は、記憶部202に格納された入力データを積和器500へ出力する。そして、積和器500は、入力データ(スケール用データ)と、入力データとの積和を算出することができる。In this embodiment, for example, when a selection signal "0" is input from the control unit 600, the selector unit 300 outputs the input data (data for scaling) stored in the memory unit 200 to the register unit 400, and the selector unit 302 outputs the input data stored in the memory unit 202 to the product-accumulator 500. The product-accumulator 500 can then calculate the product-accumulator of the input data (data for scaling) and the input data.

本実施形態においても、演算部120の記憶部200aに、係数の代わりに入力データ(スケール用データ)を格納し、格納した入力データ(スケール用データ)をレジスタ部400で一時的に保持させて演算を行わせることにより、記憶部200、202からの読み出し回数(メモリアクセス回数)の増加を抑えることができる。その結果、本実施形態によれば、消費電力の増加をより抑えることができる。In this embodiment, too, input data (scaling data) is stored in the memory unit 200a of the calculation unit 120 instead of coefficients, and the stored input data (scaling data) is temporarily held in the register unit 400 for calculation, thereby suppressing an increase in the number of reads (memory access count) from the memory units 200 and 202. As a result, according to this embodiment, an increase in power consumption can be further suppressed.

さらに、上述からわかるように、本開示の実施形態に係る演算処理装置10は、セレクタ部300、302を演算に応じて制御することにより、様々なディープニューラルネットワークの演算にも対応することが可能である。 Furthermore, as can be seen from the above, the processing device 10 according to an embodiment of the present disclosure is capable of handling various deep neural network calculations by controlling the selector units 300, 302 according to the calculation.

<<4. まとめ>>
以上説明したように、上述した本開示の各実施形態によれば、ディープニューラルネットワークにおける演算処理を行う演算処理装置10の消費電力の増加を抑えることができる。
<<4. Summary>>
As described above, according to each of the above-described embodiments of the present disclosure, it is possible to suppress an increase in power consumption of the arithmetic processing device 10 that performs arithmetic processing in a deep neural network.

詳細には、本開示の各実施形態においては、レジスタ部400の前に設置されたセレクタ部300、302を制御して、記憶部200、202からの読み出し回数(メモリアクセス回数)を減らすことができるように、レジスタ部400に一時的に保持するデータ(入力データ又は係数)を選択する。従って、本開示の各実施形態によれば、メモリアクセス回数の増加を抑えることができ、その結果、消費電力の増加をより抑えることができる。In detail, in each embodiment of the present disclosure, the selector units 300, 302 installed in front of the register unit 400 are controlled to select data (input data or coefficients) to be temporarily stored in the register unit 400 so as to reduce the number of reads (number of memory accesses) from the storage units 200, 202. Therefore, according to each embodiment of the present disclosure, it is possible to suppress an increase in the number of memory accesses, and as a result, it is possible to further suppress an increase in power consumption.

また、本開示の各実施形態においては、セレクタ部300、302により、レジスタ部400内に保持されたデータを共有使用することができることから、多くのレジスタ部を設けることもない。従って、本開示の各実施形態によれば、回路規模が増大することもなく、その結果、消費電力の増加をより抑えることができる。In addition, in each embodiment of the present disclosure, the selector units 300 and 302 can share and use the data held in the register unit 400, so there is no need to provide many register units. Therefore, according to each embodiment of the present disclosure, the circuit size does not increase, and as a result, the increase in power consumption can be further suppressed.

<<5. ハードウェア構成について>>
上述してきた各実施形態に係る演算処理装置10は、例えば図9に示すような構成のコンピュータ1000によって実現される。以下、本開示の演算処理装置10を例に挙げて説明する。図9は、演算処理装置10の機能を実現するコンピュータ1000の一例を示すハードウェア構成図である。コンピュータ1000は、CPU1100、RAM1200、ROM(Read Only Memory)1300、HDD(Hard Disk Drive)1400、通信インターフェイス1500、及び入出力インターフェイス1600を有する。コンピュータ1000の各部は、バス1050によって接続される。
<<5. Hardware configuration>>
The arithmetic processing device 10 according to each of the above-described embodiments is realized by a computer 1000 having a configuration as shown in FIG. 9, for example. The arithmetic processing device 10 of the present disclosure will be described below as an example. FIG. 9 is a hardware configuration diagram showing an example of a computer 1000 that realizes the functions of the arithmetic processing device 10. The computer 1000 has a CPU 1100, a RAM 1200, a ROM (Read Only Memory) 1300, a HDD (Hard Disk Drive) 1400, a communication interface 1500, and an input/output interface 1600. Each unit of the computer 1000 is connected by a bus 1050.

CPU1100は、ROM1300又はHDD1400に格納されたプログラムに基づいて動作し、各部の制御を行う。例えば、CPU1100は、ROM1300又はHDD1400に格納されたプログラムをRAM1200に展開し、各種プログラムに対応した処理を実行する。The CPU 1100 operates based on the programs stored in the ROM 1300 or the HDD 1400 and controls each part. For example, the CPU 1100 expands the programs stored in the ROM 1300 or the HDD 1400 into the RAM 1200 and executes processing corresponding to the various programs.

ROM1300は、コンピュータ1000の起動時にCPU1100によって実行されるBIOS(Basic Input Output System)等のブートプログラムや、コンピュータ1000のハードウェアに依存するプログラム等を格納する。 ROM 1300 stores boot programs such as BIOS (Basic Input Output System) executed by CPU 1100 when computer 1000 is started, as well as programs that depend on the hardware of computer 1000.

HDD1400は、CPU1100によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を非一時的に記録する、コンピュータが読み取り可能な記録媒体である。具体的には、HDD1400は、プログラムデータ1450の一例である本開示に係る演算処理プログラムを記録する記録媒体である。HDD 1400 is a computer-readable recording medium that non-temporarily records programs executed by CPU 1100 and data used by such programs. Specifically, HDD 1400 is a recording medium that records the computational processing program related to the present disclosure, which is an example of program data 1450.

通信インターフェイス1500は、コンピュータ1000が外部ネットワーク1550(例えばインターネット)と接続するためのインターフェイスである。例えば、CPU1100は、通信インターフェイス1500を介して、他の機器からデータを受信したり、CPU1100が生成したデータを他の機器へ送信したりする。The communication interface 1500 is an interface for connecting the computer 1000 to an external network 1550 (e.g., the Internet). For example, the CPU 1100 receives data from other devices and transmits data generated by the CPU 1100 to other devices via the communication interface 1500.

入出力インターフェイス1600は、入出力デバイス1650とコンピュータ1000とを接続するためのインターフェイスである。例えば、CPU1100は、入出力インターフェイス1600を介して、キーボードやマウス等の入力デバイスからデータを受信する。また、CPU1100は、入出力インターフェイス1600を介して、ディスプレイやスピーカーやプリンタ等の出力デバイスにデータを送信する。また、入出力インターフェイス1600は、所定の記録媒体(メディア)に記録されたプログラム等を読み取るメディアインターフェイスとして機能してもよい。メディアとは、例えばDVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。The input/output interface 1600 is an interface for connecting the input/output device 1650 and the computer 1000. For example, the CPU 1100 receives data from an input device such as a keyboard or a mouse via the input/output interface 1600. The CPU 1100 also transmits data to an output device such as a display, a speaker, or a printer via the input/output interface 1600. The input/output interface 1600 may also function as a media interface that reads programs and the like recorded on a specified recording medium. The media may be, for example, optical recording media such as DVD (Digital Versatile Disc) and PD (Phase change rewritable Disk), magneto-optical recording media such as MO (Magneto-Optical disk), tape media, magnetic recording media, or semiconductor memory.

例えば、コンピュータ1000が本開示の実施形態に係る演算処理装置10として機能する場合、コンピュータ1000のCPU1100は、RAM1200上にロードされた演算処理プログラムを実行することにより、演算部120等の機能を実現する。また、HDD1400には、本開示の実施形態に係る演算処理プログラム等が格納される。なお、CPU1100は、プログラムデータ1450をHDD1400から読み取って実行するが、他の例として、外部ネットワーク1550を介して、他の装置からこれらのプログラムを取得してもよい。For example, when computer 1000 functions as arithmetic processing device 10 according to an embodiment of the present disclosure, CPU 1100 of computer 1000 executes an arithmetic processing program loaded onto RAM 1200 to realize functions of arithmetic unit 120, etc. Also, HDD 1400 stores arithmetic processing programs, etc. according to an embodiment of the present disclosure. Note that CPU 1100 reads and executes program data 1450 from HDD 1400, but as another example, these programs may be obtained from other devices via external network 1550.

また、本実施形態に係る演算処理装置10は、例えばクラウドコンピューティング等のように、ネットワークへの接続(または各装置間の通信)を前提とした、複数の装置からなるシステムに適用されてもよい。つまり、上述した本実施形態に係る演算処理装置10は、例えば、複数の装置により本実施形態に係る演算処理を行う演算処理システムとして実現することも可能である。 The arithmetic processing device 10 according to the present embodiment may also be applied to a system consisting of multiple devices, which is premised on connection to a network (or communication between devices), such as cloud computing. In other words, the arithmetic processing device 10 according to the present embodiment described above can also be realized as an arithmetic processing system that performs the arithmetic processing according to the present embodiment using multiple devices, for example.

<<6. 補足>>
なお、先に説明した本開示の実施形態は、例えば、コンピュータを本実施形態に係る演算処理装置として機能させるためのプログラム、及びプログラムが記録された一時的でない有形の媒体を含みうる。また、プログラムをインターネット等の通信回線(無線通信も含む)を介して頒布してもよい。
<<6. Supplementary Information>>
The above-described embodiment of the present disclosure may include, for example, a program for causing a computer to function as a processing device according to the present embodiment, and a non-transitory tangible medium on which the program is recorded. The program may also be distributed via a communication line (including wireless communication) such as the Internet.

また、上述した各実施形態の演算処理における各ステップは、必ずしも記載された順序に沿って処理されなくてもよい。例えば、各ステップは、適宜順序が変更されて処理されてもよい。また、各ステップは、時系列的に処理される代わりに、一部並列的に又は個別的に処理されてもよい。さらに、各ステップの処理方法についても、必ずしも記載された方法に沿って処理されなくてもよく、例えば、他の機能部によって他の方法で処理されていてもよい。 In addition, each step in the computational processing of each of the above-mentioned embodiments does not necessarily have to be processed in the order described. For example, each step may be processed in a different order as appropriate. Also, each step may be processed partially in parallel or individually instead of being processed in chronological order. Furthermore, the processing method of each step does not necessarily have to be processed in the manner described, and for example, each step may be processed in another manner by another functional unit.

以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。Although the preferred embodiment of the present disclosure has been described in detail above with reference to the attached drawings, the technical scope of the present disclosure is not limited to such examples. It is clear that a person with ordinary knowledge in the technical field of the present disclosure can conceive of various modified or revised examples within the scope of the technical ideas described in the claims, and it is understood that these also naturally fall within the technical scope of the present disclosure.

また、本明細書に記載された効果は、あくまで説明的または例示的なものであって限定的ではない。つまり、本開示に係る技術は、上記の効果とともに、または上記の効果に代えて、本明細書の記載から当業者には明らかな他の効果を奏しうる。In addition, the effects described herein are merely descriptive or exemplary and are not limiting. In other words, the technology disclosed herein may provide other effects that are apparent to a person skilled in the art from the description of this specification, in addition to or in place of the above effects.

なお、本技術は以下のような構成も取ることができる。
(1)
第1及び第2のデータを読み出し、読み出した前記第1及び第2のデータを用いて演算を繰り返し行う演算回路部と、
前記第1のデータを格納する第1の記憶部と、
前記第2のデータを格納する第2の記憶部と、
前記第1及び第2のデータのうち前記演算回路部で繰り返し用いられるデータを、前記第1の記憶部又は前記第2の記憶部から読み出して、一時的に保持するレジスタ部と、
前記第1及び第2のデータのうち、前記レジスタ部に保持するデータを選択する第1のセレクタ部と、
演算の種類、演算量、前記第1及び第2の記憶部の種類、前記第1及び第2の記憶部の容量、及び、前記演算回路部の種類のうちの少なくとも1つに基づいて、前記第1のセレクタ部を制御する制御部と、
を備える、
演算処理装置。
(2)
前記演算量は、カーネルサイズ、出力サイズ、アドレス、マップ数、及びビット数のうちの少なくとも1つを含む、上記(1)に記載の演算処理装置。
(3)
入力データを受け付ける入力部と、
前記演算回路部による演算結果を出力する出力部と、
をさらに備える、上記(1)又は(2)に記載の演算処理装置。
(4)
前記第1のデータは係数情報を含み、前記第2のデータは前記入力データを含む、上記(3)に記載の演算処理装置。
(5)
前記第1及び第2のデータは、前記入力データの少なくとも一部を含む、上記(3)に記載の演算処理装置。
(6)
前記演算回路部で演算された部分和を格納する第3の記憶部をさらに備える、
上記(1)~(5)のいずれか1つに記載の演算処理装置。
(7)
前記演算回路部は、
前記第1及び第2のデータを乗算する複数の乗算器と、
前記複数の乗算器の乗算結果と第3のデータとを加算する加算器と、
前記加算器の加算結果を一時的に保持する累積器と、
前記第3のデータの取得元として前記累積器又は前記第3の記憶部のいずれか選択する第2のセレクタ部と、
有し、
前記第2のセレクタ部は、前記制御部によって制御される、
上記(6)に記載の演算処理装置。
(8)
前記第1及び第2の記憶部は、揮発性メモリからなる、上記(1)~(7)のいずれか1つに記載の演算処理装置。
(9)
前記第1及び第2の記憶部は、不揮発性メモリからなる、上記(1)~(7)のいずれか1つに記載の演算処理装置。
(10)
前記演算回路部は、デジタル回路からなる、上記(1)~(9)のいずれか1つに記載の演算処理装置。
(11)
前記演算回路部は、アナログ回路からなる、上記(1)~(9)のいずれか1つに記載の演算処理装置。
The present technology can also be configured as follows.
(1)
an arithmetic circuit unit that reads out first and second data and repeatedly performs an arithmetic operation using the first and second data that have been read out;
a first storage unit that stores the first data;
a second storage unit that stores the second data;
a register unit that reads out from the first storage unit or the second storage unit data that is repeatedly used in the arithmetic circuit unit and temporarily holds the data;
a first selector unit that selects data to be held in the register unit from the first and second data;
a control unit that controls the first selector unit based on at least one of a type of operation, an amount of operation, a type of the first and second storage units, a capacity of the first and second storage units, and a type of the arithmetic circuit unit;
Equipped with
Processing unit.
(2)
The processing device according to (1) above, wherein the amount of calculation includes at least one of a kernel size, an output size, an address, a map number, and a number of bits.
(3)
An input unit that accepts input data;
an output unit that outputs a calculation result by the calculation circuit unit;
The processing device according to claim 1 or 2, further comprising:
(4)
The arithmetic processing device according to (3) above, wherein the first data includes coefficient information and the second data includes the input data.
(5)
The processor according to claim 3, wherein the first and second data include at least a portion of the input data.
(6)
a third storage unit for storing the partial sums calculated by the arithmetic circuit unit;
The processor according to any one of (1) to (5) above.
(7)
The arithmetic circuit unit includes:
a plurality of multipliers for multiplying the first and second data;
an adder that adds multiplication results of the plurality of multipliers and third data;
an accumulator for temporarily storing the sum of the adder;
a second selector unit that selects either the accumulator or the third storage unit as an acquisition source of the third data;
Has
The second selector unit is controlled by the control unit.
The processing device according to (6) above.
(8)
The arithmetic processing device according to any one of (1) to (7) above, wherein the first and second storage units are made of volatile memory.
(9)
The arithmetic processing device according to any one of (1) to (7) above, wherein the first and second storage units are made of non-volatile memory.
(10)
The arithmetic processing device according to any one of (1) to (9) above, wherein the arithmetic circuit unit is made of a digital circuit.
(11)
The arithmetic processing device according to any one of (1) to (9) above, wherein the arithmetic circuit unit is made of an analog circuit.

10 演算処理装置
110 入力部
120、120a 演算部
130 記憶部
140 出力部
200、200a、202、204 記憶部
300、302、504 セレクタ部
400 レジスタ部
500 積和器
502 乗算器
506 加算器
508 累積器
600 制御部
REFERENCE SIGNS LIST 10 Arithmetic processing device 110 Input section 120, 120a Arithmetic section 130 Memory section 140 Output section 200, 200a, 202, 204 Memory section 300, 302, 504 Selector section 400 Register section 500 Product-sum unit 502 Multiplier 506 Adder 508 Accumulator 600 Control section

Claims (8)

第1及び第2のデータを読み出し、読み出した前記第1及び第2のデータを用いて演算を繰り返し行う演算回路部と、
前記第1のデータを格納する第1の記憶部と、
前記第2のデータを格納する第2の記憶部と、
前記第1及び第2のデータのうち前記演算回路部で繰り返し用いられるデータを、前記第1の記憶部又は前記第2の記憶部から読み出して、一時的に保持するレジスタ部と、
前記第1及び第2のデータのうち、前記レジスタ部に保持するデータを選択する第1のセレクタ部と、
演算の種類、及び、演算量のうちの少なくとも1つに基づいて、前記第1のセレクタ部を制御する制御部と、
前記演算回路部で演算された部分和を格納する第3の記憶部と、
を備え、
前記演算回路部は、
前記第1及び第2のデータを乗算する複数の乗算器と、
前記複数の乗算器の乗算結果と第3のデータとを加算する加算器と、
前記加算器の加算結果を一時的に保持する累積器と、
前記第3のデータの取得元として前記累積器又は前記第3の記憶部のいずれか選択する第2のセレクタ部と、
有し、
前記第2のセレクタ部は、前記制御部によって制御される、
演算処理装置。
an arithmetic circuit unit that reads out first and second data and repeatedly performs an arithmetic operation using the first and second data that have been read out;
a first storage unit that stores the first data;
a second storage unit that stores the second data;
a register unit that reads out from the first storage unit or the second storage unit data that is repeatedly used in the arithmetic circuit unit and temporarily holds the data;
a first selector unit that selects data to be held in the register unit from the first and second data;
a control unit that controls the first selector unit based on at least one of a type of operation and an amount of operation;
a third storage unit for storing the partial sums calculated by the arithmetic circuit unit;
Equipped with
The arithmetic circuit unit includes:
a plurality of multipliers for multiplying the first and second data;
an adder that adds multiplication results of the plurality of multipliers and third data;
an accumulator for temporarily storing the sum of the adder;
a second selector unit that selects either the accumulator or the third storage unit as an acquisition source of the third data;
Has
The second selector unit is controlled by the control unit.
Processing unit.
入力データを受け付ける入力部と、
前記演算回路部による演算結果を出力する出力部と、
をさらに備える、請求項1に記載の演算処理装置。
An input unit that accepts input data;
an output unit that outputs a calculation result by the calculation circuit unit;
The processor of claim 1 further comprising:
前記第1のデータは係数情報を含み、前記第2のデータは前記入力データを含む、請求項に記載の演算処理装置。 The processor according to claim 2 , wherein the first data includes coefficient information and the second data includes the input data. 前記第1及び第2のデータは、前記入力データの少なくとも一部を含む、請求項に記載の演算処理装置。 The processor according to claim 2 , wherein the first and second data include at least a portion of the input data. 前記第1及び第2の記憶部は、揮発性メモリからなる、請求項1~4のいずれか1項に記載の演算処理装置。 The processor according to claim 1 , wherein the first and second storage units are made of volatile memories. 前記第1及び第2の記憶部は、不揮発性メモリからなる、請求項1~4のいずれか1項に記載の演算処理装置。 The processor according to claim 1 , wherein the first and second storage units are made of non-volatile memories. 前記演算回路部は、デジタル回路からなる、請求項1~6のいずれか1項に記載の演算処理装置。 The arithmetic processing device according to claim 1 , wherein the arithmetic circuit section is made up of a digital circuit. 前記演算回路部は、アナログ回路からなる、請求項1~6のいずれか1項に記載の演算処理装置。 The arithmetic processing device according to claim 1 , wherein the arithmetic circuit section is an analog circuit.
JP2021571139A 2020-01-14 2020-12-28 Processing Unit Active JP7666333B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2020003724 2020-01-14
JP2020003724 2020-01-14
PCT/JP2020/049134 WO2021145218A1 (en) 2020-01-14 2020-12-28 Calculation processing device

Publications (2)

Publication Number Publication Date
JPWO2021145218A1 JPWO2021145218A1 (en) 2021-07-22
JP7666333B2 true JP7666333B2 (en) 2025-04-22

Family

ID=76863974

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021571139A Active JP7666333B2 (en) 2020-01-14 2020-12-28 Processing Unit

Country Status (3)

Country Link
JP (1) JP7666333B2 (en)
CN (1) CN114930320A (en)
WO (1) WO2021145218A1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005338929A (en) 2004-05-24 2005-12-08 Renesas Technology Corp Semiconductor device
JP2012141810A (en) 2010-12-29 2012-07-26 Fujitsu Ltd Arithmetic processing unit and arithmetic processing method
JP2020521263A (en) 2017-05-19 2020-07-16 モヴィディウス リミテッド Method, system and device for improving convolution efficiency

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005338929A (en) 2004-05-24 2005-12-08 Renesas Technology Corp Semiconductor device
JP2012141810A (en) 2010-12-29 2012-07-26 Fujitsu Ltd Arithmetic processing unit and arithmetic processing method
JP2020521263A (en) 2017-05-19 2020-07-16 モヴィディウス リミテッド Method, system and device for improving convolution efficiency

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
安藤洸太ほか,深層畳込みニューラルネットワークに向けたデータ流再構成型演算器アレイアーキテクチャ,電子情報通信学会技術研究報告,日本,一般社団法人電子情報通信学会,2016年05月12日,Vol.116 No.53,29-34ページ

Also Published As

Publication number Publication date
JPWO2021145218A1 (en) 2021-07-22
CN114930320A (en) 2022-08-19
WO2021145218A1 (en) 2021-07-22

Similar Documents

Publication Publication Date Title
CN109919311B (en) Method for generating instruction sequence, method and device for executing neural network operation
CN107844828B (en) Convolutional Computational Methods and Electronic Devices in Neural Networks
JP6900487B2 (en) Performing average pooling in hardware
CN111915001B (en) Convolution calculation engine, artificial intelligent chip and data processing method
US10318290B2 (en) Merged floating point operation using a modebit
CN112074806A (en) Block floating point computations using reduced bit width vectors
US9424232B2 (en) Processing of linear systems of equations
CN111767986A (en) Operation method and device based on neural network
US10642578B2 (en) Approximating functions
JP7020485B2 (en) Arithmetic logic unit, arithmetic method and program
US20240220572A1 (en) Pipeline-parallel-dataflow artificial intelligence system for accelerating self-attention computations
JP2019016011A (en) Arithmetic processing device and control method of arithmetic processing device
JP2023000462A (en) Data processing device, program and data processing method
US11256940B1 (en) Method, apparatus and system for gradient updating of image processing model
CN109902821B (en) A data processing method, device and related components
JP7666333B2 (en) Processing Unit
CN118036682A (en) Method, device, equipment and medium for implementing in-memory computing of additive neural network
JP7370498B2 (en) Data analysis device, data analysis program and data analysis method
US20250224927A1 (en) Floating-point logarithmic number system scaling system for machine learning
US20250245290A1 (en) Arithmetic device
US20250291872A1 (en) Analysis device, analysis method, and recording medium
CN121729699A (en) Training optimization for low memory occupancy
JPWO2020170358A1 (en) Tensor decomposition processing system, method and program
KR20230159489A (en) Matrix approximation for matrix multiplication operations
CN116149602A (en) Data processing method, device, electronic equipment and storage medium

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20231127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20241112

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20241210

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20250324

R150 Certificate of patent or registration of utility model

Ref document number: 7666333

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150