CN110609804A - 半导体器件和控制半导体器件的方法 - Google Patents
半导体器件和控制半导体器件的方法 Download PDFInfo
- Publication number
- CN110609804A CN110609804A CN201910453550.1A CN201910453550A CN110609804A CN 110609804 A CN110609804 A CN 110609804A CN 201910453550 A CN201910453550 A CN 201910453550A CN 110609804 A CN110609804 A CN 110609804A
- Authority
- CN
- China
- Prior art keywords
- data
- arithmetic
- parallel
- unit
- output
- 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.)
- Pending
Links
- 239000004065 semiconductor Substances 0.000 title claims abstract description 75
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000012545 processing Methods 0.000 claims abstract description 218
- 238000012546 transfer Methods 0.000 claims abstract description 70
- 230000005540 biological transmission Effects 0.000 claims description 98
- 230000015654 memory Effects 0.000 claims description 82
- 230000008569 process Effects 0.000 claims description 15
- 238000010586 diagram Methods 0.000 description 70
- 239000011159 matrix material Substances 0.000 description 52
- 230000004048 modification Effects 0.000 description 21
- 238000012986 modification Methods 0.000 description 21
- 238000004364 calculation method Methods 0.000 description 10
- 238000013528 artificial neural network Methods 0.000 description 8
- 101000685663 Homo sapiens Sodium/nucleoside cotransporter 1 Proteins 0.000 description 5
- 102100023116 Sodium/nucleoside cotransporter 1 Human genes 0.000 description 5
- 238000013135 deep learning Methods 0.000 description 5
- 101000786631 Homo sapiens Protein SYS1 homolog Proteins 0.000 description 4
- 102100025575 Protein SYS1 homolog Human genes 0.000 description 4
- 101000996032 Xenopus laevis Nodal homolog Proteins 0.000 description 3
- 230000004913 activation Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 101100521334 Mus musculus Prom1 gene Proteins 0.000 description 2
- 102100029469 WD repeat and HMG-box DNA-binding protein 1 Human genes 0.000 description 2
- 101710097421 WD repeat and HMG-box DNA-binding protein 1 Proteins 0.000 description 2
- 230000000052 comparative effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/177—Initialisation or configuration control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/53—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Microcomputers (AREA)
Abstract
本申请的各实施例涉及半导体器件和控制半导体器件的方法。一种半导体器件包括:动态重新配置处理器,该动态重新配置处理器对顺序地输入的输入数据执行数据处理并顺序地输出数据处理的结果作为输出数据;加速器,包括并行算术部分,并行算术部分在来自动态重新配置处理器的输出数据与多个预定数据中的每个预定数据之间并行地执行算术操作;以及数据传输单元,该数据传输单元按顺序选择加速器的多个算术操作结果并将它们输出到动态重新配置处理器。
Description
相关申请的交叉引用
于2018年6月15日提交的日本专利申请号2018-114861的公开内容(包括说明书、附图和摘要)通过引用的方式整体并入本文。
技术领域
本发明涉及半导体器件和其控制方法,并且更具体地涉及例如适合于实现高效算术处理的半导体器件和其控制方法。
背景技术
除了中央处理单元(CPU),存在执行高处理性能的动态重新配置处理器。动态重新配置处理器被称为可动态重新配置处理器(DRP)或阵列型处理器。动态重新配置处理器是能够通过根据顺序地给出的操作指令动态地切换多个处理器元件中的每个的操作内容和多个处理器之间的连接关系来对电路进行动态地重新配置的处理器。与动态重新配置处理器相关的技术被公开于例如日本专利No.3674515(专利文件1)作为阵列处理器。
另外,"SIMD"[在线](搜索于2018年1月26日),互联网<URL:https://ja.wikipedia.org/wiki/SIMD>(非专利文件1)和“Mechanisms for 30times fastermechanical learning with Google Tensor Processing Unit”[在线](搜索于2030年1月26日),互联网<URL:https://cloudplatform-jp.googleblog.com/2017/05/an-in-depth-look-at-googles-first-tensor-processing-unit-tpu.html>(非专利文件2)公开了与并行算术处理相关的技术。
发明内容
然而,专利文件1中公开的动态重新配置处理器的处理性能不足以执行大规模算术处理,诸如深度学习处理。其他目的和新颖特征将从本说明书的描述和附图中变得明显。
根据一个实施例,半导体器件包括:数据处理单元,其对顺序地输入的第一输入数据执行数据处理并顺序地输出数据处理的结果作为第一输出数据;并行算术单元,其在从数据处理单元顺序地输出的第一输出数据与多个预定数据中的每个预定数据之间并行地执行算术处理;保持电路,其保持算术处理的结果;以及第一数据传输单元,其顺序地选择由加速器按顺序保持的多个算术处理结果并顺序地输出算术处理的结果作为第一输入数据。
根据另一实施例,一种半导体器件的控制方法使用数据处理单元对顺序地输入的第一输入数据执行算术处理,顺序地输出算术处理的结果作为第一输出数据,使用加速器在从数据处理单元顺序地输出的第一输出数据与多个预定数据中的每个预定数据之间并行地执行算术处理,顺序地选择从加速器输出的多个算术处理结果,并且顺序地输出其作为第一输入数据。
根据上述实施例,能够提供一种半导体器件以及其控制方法,该半导体器件能够实现高效算术处理。
附图说明
图1是示出了根据第一实施例的半导体器件被安装于其中的半导体系统的配置示例的框图。
图2是图示了图1的半导体器件的特定配置示例的框图。
图3是图示了图2的并行算术单元的配置示例的框图。
图4是图示了神经网络结构的示例的示意图。
图5是示出了神经网络的算术过程的流的示意图;
图6是图示了根据第一实施例的半导体系统的过程流的定时图。
图7是矩阵算术的示意图。
图8是图示了存储在本地存储器中的默认信息的示意图。
图9是示出了数据矩阵In和矩阵数据W的第一行的乘法方程的示意图。
图10是根据第一实施例的加速器的配置示例的示意图;
图11是用于解释动态重新配置处理器的数据输出与数据输入之间的关系的定时图。
图12是用于解释由加速器对每层的矩阵数据的算术处理之间的关系的定时图。
图13是图示了根据第一实施例的半导体系统的操作的流程图。
图14是加速器的配置的比较示例。
图15是图示了并行算术单元的配置示例的示意图。
图16是图示了并行算术单元的第一修改的示意图。
图17是示出了并行算术单元的第二修改的示意图;
图18是图示了并行算术单元的第三修改的示意图。
图19是图示了并行算术单元的第四修改的示意图。
图20是示出了并行算术单元的第五修改的示意图。
图21是图示了并行算术单元的第六修改的示意图。
图22是图示了当输入模式是第一输入模式时加速器中的数据传输单元和并行算术单元的示意图。
图23是图示了当输入模式是第二输入模式时加速器中的数据传输单元和并行算术单元的示意图。
图24是图示了当输入模式是第三输入模式时加速器中的数据传输单元和并行算术单元的示意图。
图25是图示了当输入模式是第四输入模式时加速器中的数据传输单元和并行算术单元的示意图。
图26是图示了当输入模式是第五输入模式时加速器中的数据传输单元和并行算术单元的示意图。
图27是图示了当输入模式是第六输入模式时加速器中的数据传输单元和并行算术单元的示意图。
图28是图示了当输入模式是第七输入模式时加速器中的数据传输单元和并行算术单元的示意图。
图29是示出了当输出模式是第一输出模式时加速器中的并行算术单元和数据传输单元的示意图;
图30是示出了当输出模式是第二输出模式时加速器中的并行算术单元和数据传输单元的示意图;
图31是示出了当输出模式是第三输出模式时加速器中的并行算术单元和数据传输单元的示意图;
图32是图示了当输出模式是第四输出模式时加速器中的并行算术单元和数据传输单元的示意图。
图33是图示了当输出模式是第五输出模式时加速器12中的并行算术单元和数据传输单元14的示意图。
图34是图示了当输出模式是第六输出模式时加速器中的并行算术单元和数据传输单元的示意图。
图35是图示了当输出模式是第七输出模式时加速器中的并行算术单元和数据传输单元的示意图。
图36是图示了当在并行化的最大程度上设置输入数据的情况下执行操作时并行算术部分的操作过程的流的示意图。
图37是图示了当通过使输入数据的并行化最小来执行操作过程时并行算术部分的操作过程的流的示意图。
图38是图示了当通过在中等程度上并行地设置输入数据来执行操作过程时并行算术部分121的操作过程的流的示意图;
图39是图示了当针对两个输入数据中的每个执行并行算术操作时并行算术部分的操作过程的流的示意图。
图40是图示了根据第二实施例的半导体器件被安装于其中的半导体系统的配置的示例的框图。
具体实施方式
为说明的清楚性,以下描述和附图被适当地省略和简化。在附图中被描述为功能块的各个元件根据硬件可以通过CPU(中央处理单元)、存储器、以及其他电路来配置,并且根据软件通过加载于存储器中的程序来实现。因此,本领域技术人员应理解,这些功能块可以通过单单硬件、单单软件、其组合以各种方式来实现,并且本发明不限于它们中的任何。在附图中,相同的元件由相同的附图标记指代,并且对其的重复描述根据需要被省略。
以上描述的程序可以使用各种类型的非瞬态计算机可读介质被存储并提供给计算机。非瞬态计算机可读介质包括各种类型的有形存储介质。非瞬态计算机可读介质的示例包括磁性记录介质(例如,软盘、磁带、硬盘驱动器)、磁光记录介质(例如,磁光盘)、CD-ROM(只读存储器)、CD-R、CD-R/W、固态存储器(例如,掩膜的ROM、PROM(可编程ROM)、EPROM(可擦PROM、闪速ROM、RAM(随机访问存储器))。程序还可以通过各种类型的瞬态计算机可读介质被提供给计算机。瞬态计算机可读介质的示例包括电信号、光信号、以及电磁波。瞬态计算机可读介质可以经由有线或无线通信路径(诸如电线和光纤)将程序提供给计算机。
第一实施例
图1是示出了根据本发明的第一实施例的半导体系统1被安装于其上的半导体系统SYS1的配置示例的框图。根据本实施例的半导体器件1包括:加速器,其具有执行并行算术操作的并行算术部分;数据处理单元,诸如动态重新配置处理器,其顺序地执行数据交换;以及数据传输单元,其顺序地选择加速器的多个算术处理结果并将它们顺序地输出到数据处理单元。因此,根据本实施例的半导体器件1和包括半导体器件1的半导体系统SYS1可以使用加速器来执行大量常规数据处理,并且使用数据处理单元来执行其他数据处理,由此实现高效算术处理。在下文中,将给出简洁描述。
如图1所示,半导体系统SYS1包括半导体器件1、CPU2以及外部存储器3。半导体器件1包括动态重新配置处理器(下文中称为DRP)11、加速器12、数据传输单元13、数据传输单元14、以及直接存储器访问(DMA)15。
例如,DRP 11对从外部存储器3顺序地输入的数据执行算术处理,并且顺序地输出算术处理的结果作为数据DQout。以这种方式,DRP 11可以在每个循环发送并接收数据。这里,DRP 11是能够通过根据从提供在DRP 11中的配置数据存储器读取的操作指令动态地切换多个处理器元件中的每个的操作内容和多个处理器之间的连接来对电路进行动态地重新配置的数据处理器。
例如,DRP 11包括提供在阵列中的多个处理器元件、与多个处理器元件相对应地提供的多个切换元件、以及状态管理单元。状态管理单元将通过程序提前确定的指令指针发布到处理器元件中的每个。处理器元件中的每个包括例如至少指令存储器和算术单元。算术单元根据存储在指令存储器中的多个操作指令之中的由指令指针指定的操作指令来执行算术处理。算术单元可以例如为对16位宽数据执行算术处理的16位算术单元,或者对其他位宽数执行算术处理的算术单元。备选地,算术单元可以由多个算术单元配置。切换元件中的每个根据从对应的处理器元件的指令存储器读取的操作指令来设置对应的处理器元件与另一处理器元件之间的连接关系。由此,DRP 11可以根据顺序地应用的操作指令来动态地切换地电路。
在该实施例中,DRP 11被提供在半导体器件1中,但是其不限于此。例如,只要CPU对顺序地输入的数据执行算术处理,中央处理单元(CPU)可以代替DRP 11被提供。
数据传输单元13根据例如并行算术部分121所需的算术处理的并行化程序来分布数据DQout或对其进行序列化,并且输出数据作为数据DPin。
加速器12在从数据传输单元13顺序地输出的数据DPin与n(n是等于或大于2的整数)片预定数据D_0至D_(n-1)之间并行地执行算术操作。在以下描述中,预定数据D_0至D_(n-1)不被区分并且可以被简单地称为预定数据D。
具体地,加速器12包括并行算术部分121和本地存储器122。本地存储器122存储例如从外部存储器3读取的多片预定数据D_0至D_(n-1)和诸如偏置值b的初始设置信息。
例如,当组成具有k行和m列的矩阵数据的k×m个元素作为数据DPin被连续地输入到加速器12时,每行具有m个数据的k行被顺序地输入到加速器12,即,k×m个数据。然而,不管k的值如何,加速器12使用针对m个数据中的每个的预定数据D_0至D_(n-1)(其是针对一行的输入数据)用于算术处理。因此,n片预定数据D_0至D_(n-1),即与对应于一行输入数据的m个数据相对应的m×n片数据被存储在本地存储器122中。并行算术部分121由并行地执行算术处理的多个算术单元配置。并行算术部分121在数据DPin与多个预定数据D_0至D_(n-1)中的每个之间并行地执行算术操作,并且输出n个算术处理结果作为数据DPout。
数据传输单元14顺序地选择从加速器12并行地输出的n片数据DPout,并且顺序地输出所选择的数据片作为数据DQin。
DRP 11对从数据传输单元14顺序地输出的数据DQin执行算术处理,并且顺序地将算术处理的结果输出到例如外部存储器3。
例如,CPU 2根据从外部存储器3读取的控制指令来控制半导体器件1的操作。更具体地,CPU 2准备数据串(描述符)用于详细地指令加速器12以及数据传输单元13和14的操作,并且将数据串(描述符)存储在外部存储器3中。
DMA 15从外部存储器3读取描述符,解读内容,并且将操作指令发出到加速器12以及数据传输单元13和14。例如,DMA 15根据描述符中描述的指令将存储在外部存储器3中的初始设置信息传输到本地存储器122。DMA 15根据并行算术部分121的算术处理的并行化程序来指令数据传输单元13分布数据DPin或对其进行序列化。DMA 15根据并行算术部分121的算术处理的并行化程序来指令数据传输单元14对并行地输出的n片数据DPout进行组合或序列化。
当由一个描述符指定的操作完成时,DMA 15从外部存储器3读取下一描述符,并且将操作指令发出到加速器12以及以及数据传输单元13和14。优选的是,描述符在由紧挨着之前读取的描述符对操作的完成之前被读取。由此,处理延迟可以被隐藏。
描述符可以从运行于DRP 11而非CPU 2中的程序来应用,或者可以被提前生成。
图2是示出了半导体器件1的特定配置示例的框图。在图2中,DRP 11输出4个通道的64位宽的数据DQout作为数据DQout_0至DQout_3。DRP 11不限于输出四个通道的数据DQout_0至DQout_3,并且可以被适当地改变为用于输出任何数量的通道和任何数量的位宽的数据的配置。
在图2中,数据传输单元13将从DRP 11顺序地输出的64位宽数据DQout_0至DQout_3传输作为数据DPin_0至DPin_3。在图2中,数据DPin_0至DPin_3中的每个通过将由浮点数方法表示的四个16位宽操作结果捆绑在一起来组成64位宽数据,但是本发明不限于此。例如,16位宽数据、32位宽数据、以及48位宽数据可以通过将1至3个16位宽的操作结果进行捆绑来配置。
并行算术部分121包括例如并行算术单元MAC256_0至MAC256_3。并行算术单元MAC256_0至MAC256_3中的每个包括并行地执行算术处理的256个算术单元。数据DPin_0至DPin_3分别被输入到并行算术单元MAC256_0至MAC256_3。
并行算术单元MAC256_0通过相对于64位宽(16位宽×4组)数据DPin_0使用最大256个算术单元(四组64个单元)来并行地执行算术处理输出最大256个算术处理结果。
类似地,并行算术单元MAC256_1通过相对于64位宽(16位宽×4组)数据DPin_1使用最大256个算术单元(四组64个单元)来并行地执行算术处理输出最大256个算术处理结果。并行算术单元MAC256_2通过相对于64位宽(16位宽×4组)数据DPin_2使用最大256个算术单元(四组64个单元)来并行地执行算术处理输出最大256个算术处理结果。并行算术单元MAC256_3通过相对于具有64位宽(16位宽×4组)的数据DPin_3使用最大256个算术单元(四组64个单元)来并行地执行算术处理输出最大256个算术处理结果。
图3是示出了并行算术单元MAC256_0的配置示例的框图。图3还示出了在并行算术单元MAC256_0之前和之后提供的数据传输单元13和14。
如图3所示,并行算术单元MAC256_0包括并行算术单元MAC64_0至MAC64_3。并行算术单元MAC64_0至MAC64_3中的每个由并行地执行算术处理的64个算术单元组成。
64位宽数据DPin_0的第0位至第15位(在下文中被称为数据DPin_00)被输入到并行算术单元MAC64_0。64位宽数据DPin_0的第16位至第31位(在下文中被称为数据DPin_01)被输入到并行算术单元MAC64_1。64位宽数据DPin_0的第32位至第47位(在下文中被称为数据DPin_02)被输入到并行算术单元MAC64_2。64位宽数据DPin_0的第48位至第63位(在下文中被称为数据DPin_03)被输入到并行算术单元MAC64_3。
并行算术单元MAC64_0使用最大64个算术单元对16位宽数据DPin_00并行地执行算术处理并输出最大64个算术处理结果的算术处理结果,每个算术处理结果都具有16位宽。并行算术单元MAC64_1使用最大64个算术单元对16位宽数据DPin_01并行地执行算术处理并输出最大64个算术处理结果,每个算术处理结果都具有16位宽。并行算术单元MAC64_2可以使用最大64个算术单元对16位宽数据DPin_02并行地执行算术处理并输出最大64个算术处理结果,每个算术处理结果都具有16位宽。并行算术单元MAC64_3可以使用最大64个算术单元对16位宽数据DPin_03并行地执行算术处理并输出最大64个算术处理结果,每个算术处理结果都具有16位宽。
并行算术单元MAC256_1至MAC256_3具有与并行算术单元MAC256_0的配置相同的配置,并且因此其描述被省略。
返回到图2,将继续描述。并行算术单元MAC256_0对具有64位宽(16位宽×4组)的数据DPin_0执行算术处理,并且输出四组最大64个算术处理结果作为数据DPout_0,每个算术处理结果具有16位宽。
类似地,并行算术单元MAC256_1对数据DPin_1执行算术处理,并且输出四组最大64个算术处理结果作为数据DPout_1,每个算术处理结果具有16位宽。并行算术单元MAC256_2对数据DPin_2执行算术处理,并且输出四组最大64个算术处理结果作为数据DPout_2,每个算术处理结果具有16位宽。并行算术单元MAC256_3对数据DPin_3执行算术处理,并且输出四组最大64个算术处理结果作为数据DPout_3,每个算术处理结果具有16位宽。
数据传输单元14例如从包含于从并行处理器MAC256_0并行地输出的数据DPout_0中的四组中的每组(每组具有64个16位宽数据)中逐个地进行选择并顺序地输出包括四组的数据DQin_0,每组具有16位宽数据(即,64位宽的数据DQin_0)。如以上所描述的,数据传输单元14可以从每组中逐个地选择16位宽数据并顺序地输出其,或者可以顺序地输出针对每组的所有数据以便输出一组中的64个16位宽数据并且然后输出下一组中的64个16位宽数据,但是本发明不限于此。数据传输单元14的数据输出方法可以取决于模式而切换。
类似地,数据传输单元14顺序地例如从包含于从并行算术单元MAC256_1并行地输出的数据DPout_1中的四组中的每组(每组具有64个16位宽数据)中逐个地进行选择并顺序地输出包括四组16位宽数据的数据DQin_1(即,64位宽数据DQin_1)。另外,数据传输单元14从包含于从并行处理器MAC256_2并行地输出的数据DPout_2中的四组中的每组(每组具有64个16位宽数据)中逐个地进行选择并顺序地输出包括四组16位宽数据的数据DQin_2(即,64位宽数据DQin_2)。数据传输单元14顺序地例如从从并行处理器MAC256_3并行地输出的DPout_3中的四组中的每组(每组具有64个16位宽数据)中逐个地进行选择并输出包括四组16位宽数据的数据DQin_3(即,64位宽数据DQin_3)。
数据DQin_0至DQin_3的这些64位宽数据被输入到DRP 11。DRP 11对数据DQin_0至DQin_3执行算术处理,并且将算术处理结果顺序地输出到外部存储器3。数据DQin_0至DQin_3可以用于计算数据DQout_0至DQout_3。
如以上所描述的,根据本实施例的半导体器件1包括:加速器,其具有并行地执行算术处理的并行算术部分;数据处理单元,诸如DRP,其顺序地传输数据;以及数据传输单元,其顺序地选择加速器的多个算术处理结果并将它们输出到数据处理单元。因此,根据本实施例的半导体器件和包括其的半导体系统可以使用加速器来执行大量常规数据处理,并且使用数据处理单元来执行其他数据处理,使得能够甚至在大规模算术处理(诸如深度学习处理)中时效高效算术处理。
在下文中,将参考图4和图5描述使用根据本实施例的半导体器件1的神经网络的计算方法。图4是示出了神经网络结构的示例的示意图。图5是示意性地示出了神经网络的操作处理的流的示意图。
如图4所示,神经网络的操作采用以下流程:执行将输入数据乘以权重w(w′)的乘法累加计算操作,对结果执行诸如激活的操作,并且输出操作结果。
如图5所示,DRP 11从外部存储器3读出加速器12的算术处理所需的数据(步骤S1),并且根据需要重新安排计算器和数据(步骤S2)。其后,从外部存储器3读取的数据从DRP 11被顺序地输出到加速器12作为输入到加速器12的数据。加速器12通过按来自DRP 11的接收到的数据的顺序将从DRP 11顺序地输出的数据乘以存储在本地存储器中的数据(对应于权重)来执行并行乘法累加计算操作(步骤S4)。然后,加速器12的算术结果被顺序地输出到DRP 11(步骤S5)。DRP 11根据需要对从加速器12接收到的数据执行诸如相加和激活的操作(步骤S6)。DRP 11的处理结果被存储在外部存储器3中(步骤S7)。通过经由这样的处理时实现神经网络的处理并重复该处理,能够执行深度学习所需的算术处理。
以这种方式,在神经网络中,能够通过使用加速器12执行所需的操作之中的常规并行乘法累加计算操作来实现高速操作。另外,作为能够对电路进行动态地重新配置的数据处理器的DRP 11执行除了常规并行乘法累加计算操作之外的算术处理,灵活地在不同层(在图5的示例中为第一层和第二层)中设置诸如激活的处理变得可能。另外,DRP 11可以对电路配置进行重新配置使得乘法累加计算操作所需的输入数据根据可以由加速器12同时处理的并行操作大小被划分并从外部存储器3被读出以被输出到加速器12。由此,可以提供并行算术部分121的操作格式的自由度。
接下来,将参考图6描述半导体系统SYS1的操作。图6是示出了半导体系统SYS1的处理流的定时图。
在下文中,矩阵操作由加速器12执行的情况将被描述为示例。图7是示意性地示出了矩阵算术表达的示意图。在图7中,执行对由k行×m列的元素组成的矩阵数据与由m行×n列的元素组成的矩阵数据W的乘法操作,并且将偏置值b与乘法结果的每个元素相加的结果被输出为由k行×n列的元素组成的矩阵数据Out。
当加速器12对第一层的矩阵数据In执行计算操作时,与第一层的矩阵数据In相对应的包括矩阵数据W和偏置值b的初始设置信息被存储在加速器12的本地存储器122中(图6中的时间t1至t2)(参见图8)。更具体地,DMA 15根据由CPU 2生成的描述符的指令将从外部存储器3读取的初始设置信息传输到本地存储器122。注意,专用于加速器12的DMA(未示出)可以与DMA 15分离地提供,并且从外部存储器3读取的初始设置信息可以使用专用于加速器12的DMA被传输到本地存储器122。
其后,矩阵数据In的第一行数据(在下文中也称为行数据In1)从外部存储器3读取(图6中的时间t2)。DRP 11在根据需要执行预定过程之后将从外部存储器3读取的行数据In输出到加速器12(图6中的时间t3)。
加速器12将从本地存储器122读取的偏置值b设置为并行算术部分121的相应算术单元中的初始值,并且然后执行从本地存储器122读取的行数据In1(对应于数据DPin)和矩阵数据W(对应于预定数据D)的算术过程(图6中的时间t4)。
图9是示出了行数据In1(矩阵数据In的第一行数据)和矩阵数据W的乘法表达的特定示例的示意图。在图9中,假设行数据In1由元素b0至b19的29列组成。在矩阵数据W中,假设第一行数据由20列的元素a0,0a0,1...a0,19组成,第二行数据由20列的元素a1,0a1,1...a1,19组成,并且第20行数据(其是最后一行)由20列的元素a19,0a19,1...a19,19组成。
这里,加速器12对行数据In1的每列的元素(例如,b0)和矩阵数据W的每行的20列的元素(例如,a0,0a0,1...a0,19)并行地执行乘法操作,并且然后将每列中的20片的乘法操作结果相加以计算矩阵数据Out的每列的元素。
图10是示出了加速器12的特定配置示例的示意图。在图10的示例中,使用并行算术部分121中提供的多个算术单元之中的20个算术单元121_0至121_19。算术单元121_0至121_19中的每个包括乘法器MX1、加法器AD1、寄存器RG1以及寄存器RG2。
在算术单元121-j(j是0至19中的任一个)中,从本地存储器122读取的偏置值b被设置为寄存器RG1中的初始值(偏置值b未示出在图10中)。
其后,乘法器MX1将行数据In1(对应于16位宽数据DPin)中的第一列数据的元素b0乘以从本地存储器122读取的矩阵数据W中的第一行的元素a0,j(对应于16位宽的预定数据D_j)。加法器AD1将乘法器MX1的乘法结果(a0,j×b0)与存储在寄存器RG1中的值(偏置值b)相加并将加法结果传输到寄存器RG1。
在其之后,乘法器MX1将随后输入的行数据In1的第二列的元素b1乘以从本地存储器122读取的矩阵数据W中的第二行的元素a1,j。加法器AD1将乘法器MX1的乘法结果(a1,j×b1)与存储在寄存器RG1中的值(a0,j×b0)相加并将加法结果传输到寄存器RG1。
由于如以上所描述的乘法、加法以及存储的操作被重复20个循环,所以寄存器RG1存储矩阵数据Out中的第一行的元素((a0,j×b0)+(a1,j×b1)+·+·+(a19,j×b19))。其后,存储在寄存器RG1中的值被传输到寄存器RG2,并且存储在寄存器RG2中的值在图6中的时间t5之后被输出作为矩阵数据Out的第一行的元素。
当完成从寄存器RG1到寄存器RG2的数据传输(图6的时间t5)时,能够由算术单元121_j开始对第二行的数据(也称为行数据In2)的算术操作,第二行是矩阵数据In中的下一行(图6的时间t6)。由此,加速器12可以对行数据In2执行并行算术操作(图6中的时间t6至t9)同时将存储在寄存器RG2中的算术操作结果传输到数据传输单元14(对应于图6中的时间t7至t10)。因此,可以提高并行算术操作的效率。
因此,优选的是,DRP 11接收行加速器12在第二行数据In2的输出时段(其是从矩阵数据In中的第一行数据In1的输出的完成到第三行数据In3的输出的开始的时段)期间对数据In1的算术操作结果。
数据传输单元14顺序地选择从算术单元121_0至121_19输出的20个算术操作结果(每个具有16位宽)(对应于数据DPout),并且顺序地输出它们作为16位宽数据DQin。换言之,数据传输单元14顺序地输出矩阵数据Out的第一行的二十列的元素作为数据DQin。顺序地输出的数据DQin由DRP 11在图6中的时间t7至t10处接收。
在DRP 11中,例如,加法器AD2对从数据传输单元14顺序地输出的数据DQin执行加法处理,算术单元TN1基于双曲正切函数来执行预定算术操作,并且乘法器MX2执行乘法操作。操作结果被写入到外部存储器3,例如,在图6中的时间t8至t11处。
当加速器12完成针对从第一层的矩阵数据In的第一行到第k行的所有行数据的算术操作时,随后针对第二层的矩阵数据In执行相同算术操作。在对第二层的矩阵数据In执行算术操作之前,与第二层的矩阵数据In相对应的初始设置信息(即,矩阵数据W和偏置值b)被存储在本地存储器122中。加速器12重复这样的并行算术操作。
优选的是,本地存储器122具有存储与至少两层的矩阵数据In相对应的初始设置信息(即,矩阵数据W和偏置值b)的存储区域。由此,在对第一层的矩阵数据In执行矩阵操作期间,用于对第二层的矩阵数据In的操作的初始设置信息可以被传输到本地存储器122的自由区域。由此,在完成对第一层的矩阵数据的算术操作之后,针对第二层的矩阵数据的矩阵计算可以被快速执行而无需等待初始设置信息的传输,如图12所示。在这种情况下,优选的是,本地存储器122被配置为能够同时读写数据。
另一方面,即使本地存储器122不具有足够的存储空间来存储与一层矩阵数据In相对应的初始设置信息或者具有足够的空间来存储与一层矩阵数据In相对应的初始设置信息,初始设置信息也可以被划分和存储。在下文中,将参考图13给出简要描述。
图13是示出了半导体系统SYS1的操作的流程图。在图13的示例中,假设本地存储器122不具有足以存储与第三层的矩阵数据In相对应的初始设置信息的存储区域。
如图13所示,在步骤S101中,与第一层的矩阵数据In相对应的初始设置信息被存储在本地存储器122中。其后,在步骤S102中,并行算术部分121对第一层的矩阵数据In执行算术操作。其后,在步骤S103中,与第二层的矩阵数据In相对应的初始设置信息被存储在本地存储器122中。其后,在步骤S104中,并行算术部分121对第二层的矩阵数据In执行算术操作。其后,在步骤S105中,与第三层的矩阵数据In的部分相对应的初始设置信息被存储在本地存储器122中。在步骤S106中,并行算术部分121对第三层的矩阵数据In的部分执行算术操作。在步骤S107中,与第三层的剩余矩阵数据In相对应的初始设置信息被存储在本地存储器122中。在步骤S108中,并行算术部分121对第三层的剩余矩阵数据In执行算术操作。其后,在步骤S109中,在步骤S106中执行的算术操作的结果和在步骤S108中执行的算术处理的结果被相加。由此,能够实现对第三层的矩阵数据In的算术操作。
如以上所描述的,根据本实施例的半导体器件1包括:加速器,其具有并行地执行算术操作的并行算术部分;数据处理单元,诸如DRP,其顺序地传输数据;以及数据传输单元,其顺序地选择加速器的多个算术操作结果并将它们输出到数据处理单元。因此,根据本实施例的半导体器件和包括半导体器件的半导体系统可以使用加速器来执行大量常规数据处理,并且使用数据处理单元来执行其他数据处理,使得能够甚至在大规模算术处理(诸如深度学习处理)中时效高效算术处理。
在本实施例中,算术单元121_0至121_19中的每个除了包括乘法器MX1、加法器AD1和寄存器RG1之外还包括寄存器RG2的情况已经被描述为示例,但是本发明不限于此。算术单元121_0至121_19中的每个可以包括乘法器MX1、加法器AD1和寄存器RG1,并且可以不包括寄存器RG2。这进一步抑制电路规模。
在本实施例中,偏置值b被存储在本地存储器122中的情况已经被描述为示例,但是本发明不限于此。例如,偏置值b可以被存储在与本地存储器122分离地提供的寄存器等中,或者偏置值b可以为诸如0的固定值并且可以不被存储在本地存储器122中。
图14是根据比较示例的加速器52的配置示例的示意图。如图14所示,在加速器52中,算术单元121_0至121_19中的每个包括乘法器MX1、加法器AD1、寄存器RG1、加法器AD2、算术单元TN1、以及乘法器MX2。即,在加速器52中,提供在加速器12中的DPR 11中的加法器AD2、算术单元TN1以及乘法器MX2被提供在算术单元121_0至121_19中。
然而,在加速器52中,在每个算术单元中重复了由乘法器MX1、加法器AD1和寄存器RG1进行的算术操作处理20个循环之后,由加法器AD2、算术单元TN1以及乘法器MX2进行的算术操作处理被执行仅仅一个循环。即,在加速器52中,由于较不频繁地使用的加法器AD2、算术单元TN1以及乘法器MX 2被提供在多个算术单元中的全部中,所以存在电路规模增加的问题。
另一方面,在加速器12中,算术单元121_0至121_19不包括不频繁地使用的加法器AD2、算术单元TN1以及乘法器MX2,并且这些算术单元被配置和共同地使用在DRP 11的先前阶段中。由此,能够抑制电路规模的增加。
并行算术单元的配置示例
接下来,将描述并行算术部分121中提供的多个算术单元的特定配置实例。图15是示出了并行算术单元MAC64_0的特定配置示例的示意图。如图15所示,并行算术单元MAC64_0包括并行地执行算术操作处理的64个算术单元121_0至121_63。算术单元121_0至121_63中的每个包括乘法器MX1、加速器AD1、寄存器RG1、以及寄存器RG2。这里,算术单元121_0至121_63中的乘法器MX1、加速器AD1、寄存器RG1、以及寄存器RG2的路径对16位宽数据执行预定算术操作处理,并且输出16位宽数据。
由于并行算术单元MAC64_1至MAC64_3具有与并行算术单元MAC64_0的配置相同的配置,所以它们的描述被省略。
并行算术单元的第一修改
图16是示出了作为并行操作器MAC64a_0的并行算术单元MAC64_0的第一修改的示意图。如图16所示,并行算术单元MAC64a_0包括64个并行算术单元121a_0至121a_63。算术单元121a_0至121a_63中的每个包括选择器SL1、乘法器MX1、加法器AD1、寄存器RG1、以及寄存器RG2。
选择器SL1顺序地逐位地选择并输出从本地存储器122读取的16位宽数据。乘法器MX1、加法器AD1、寄存器RG1、以及寄存器RG2的路径使用从选择器SL1输出的1位宽数据和来自数据传输单元13的16位宽数据执行算术操作处理,并且输出16位宽数据。
以这种方式,甚至当并行算术单元MAC64a_0执行针对从本地存储器122读出的具有1位宽的数据的算术操作过程时,能够通过从本地存储器122读取具有16位宽的数据并且然后从具有16位宽的数据中顺序地选择一位并执行并行算术操作处理来抑制来自本地存储器122的读数的数量的增加。因此,能够降低功耗。
并行算术单元MAC64a_1至MAC64a_3具有与并行算术单元MAC64a_0的配置相同的配置,并且因此省略了对其的描述。
应当注意,当对从本地存储器122读出的1位宽数据执行算术操作处理时,多个处理单元将来自数据传输单元13的数据乘以+1或-1。因此,乘法累加计算操作将来自数据传输单元13的数据加到寄存器RG1中存储的数据或者从寄存器RG1中存储的数据减去来自数据传输单元13的数据。这还能够通过如图17所示的并行算术单元的配置来实现。
并行算术单元的第二修改
图17是示出了作为并行操作器MAC64b_0的并行操作器MAC64_0的第二修改的示意图。如图17所示,并行算术单元MAC64b_0包括64个并行算术单元121b_0至121b_63。算术单元121b_0至121b_63中的每个包括选择器SL1、加法器AD1、减法器SB1、选择器SL2、寄存器RG1、以及寄存器RG2。
这里,选择器SL1顺序地逐位地选择并输出从本地存储器122读取的16位宽数据。加法器AD1将来自数据传输单元13的16位宽数据与存储在寄存器RG1中的数据相加。减法器AD1从来自数据传输单元13的16位宽数据减去存储在寄存器RG1中的数据。选择器SL2基于从选择器SL1输出的1位宽数据的值来选择并输出加法器AD1的加法结果或减法器SB1的减法结果。从选择器SL2输出的数据被存储在寄存器RG1中。其后,存储在寄存器RG1中的数据被存储在寄存器RG2中并且然后输出到数据传输单元14。
并行算术单元MAC64b_0可以实现与并行算术单元MAC64a_0相同的操作。
并行算术单元MAC64b_1至MAC64b_3具有与并行算术单元MAC64b_0的配置相同的配置,并且因此省略了对其的描述。
并行算术单元的第三修改
图18(包括并行算术单元的多个算术单元的第三修改)示出了作为并行操作器MAC64c_0的并行算术单元MAC64_0的第三修改。如图18所示,并行算术单元MAC64c_0包括64个并行算术单元121c_0至121c_63。算术单元121c_0至121c_63中的每个以1位为单位在来自数据传输单元13的16片1位数据与从本地存储器122读取的16片1位数据之间执行算术操作处理。
算术单元121c_0至121c_63中的每个包括包含乘法器MX1、加法器AD1、寄存器RG1、以及寄存器RG2的16个路径。这里,每个路径通过使用来自数据传输单元13的16片1位数据之一和从本地存储器122读取的16片1位数据之一来执行算术操作处理并输出1位数据。1位数据在硬件中由1和0的二元值表示,并且这些1和0的值在含义上用于分别计算为+1和-1。
如以上所描述的,甚至当计算过程使用来自数据传输单元131的1位数据和从本地存储器122读取的1位数据来执行时,并行计算器MAC64c_0可以通过使用16位数据路径传输和读取数据来执行针对1位数据的16个算术操作过程。
图18中示出的配置的操作这还能够通过如图19所示的并行算术单元的配置来实现。
并行算术单元的第四修改
图19是示出了作为并行操作器MAC64d_0的并行操作器MAC64_0的第四修改的示意图。如图19所示,并行算术单元MAC64d_0包括64个并行算术单元121d_0至121d_63。算术单元121d_0至121d_63包括XNOR电路XNR1、弹出计数器CNT1、加法器AD1、寄存器RG1、以及寄存器RG2。
XNOR电路XNR1以1位为单位对来自数据传输单元13的16片1位数据和从本地存储器122读取的16片1位数据执行负异或操作。当XNOR电路XNR1的输出值以二元单位观察时,弹出计数器CNT1对“1”输出的值的数量进行计数。这里,当来自数据传输单元13的16位数据和从本地存储器122读取的16位数据被视为二元数时,当弹出计算器CNT1的输出值表示具有相同值的位的数量时,弹出计数器CNT1的输出值表示具有相同输出值的位的数量。通过加法器AD1将弹出计数器CNT1的输出数据加到存储在寄存器RG1中的数据。然而,由于要为+1和-1的值原先被计算为1和0,所以有必要校正输出值。还能够通过提前处理校正所需的偏置值来处理该问题。
如以上所描述的,并行算术单元MAC64d_0以1位为单位通过16片并行地在来自数据传输单元13的16片1位数据与从本地存储器122读取的16片位数据之间执行算术操作处理,将这些片的算术操作处理相加,并输出结果作为16位数据。由此,并行算术单元MAC64d_0可以实现与并行算术单元MAC64d_0的操作相同的操作。
并行算术单元MAC64d_1至MAC64d_3具有与并行算术单元MAC64d_0的配置相同的配置,并且因此省略了对其的描述。
并行算术单元的第五修改
图20(包括并行计算器的多个操作器的第五修改)示出了作为并行计算器MAC64e_0的并行计算器MAC64_0的第五修改。并行计算器MAC64e_0包括操作器121e_0至121e_63。
与算术单元121d_0至121d_63相比,算术单元121e_0至121e_63还包括用于将存储在寄存器RG1中的16位宽数据转换为1位宽数据的1位转换电路CNV1。1位转换电路CNV1可以通过当操作结果为负时输出0并且否则例如通过使用偏置值输出1来输出激活的值作为1位值。在这种情况下,来自算术单元121e_0至121e_63的64片1位数据被输入到数据传输单元14。应当注意,数据传输单元14还可以通过将他们捆绑在一起输出64片1位数据作为16位宽数据。因此,数据传输单元14可以以四个循环输出64片1位数据。
并行算术单元的第六修改
图21是示出了作为并行算术单元MAC64f_0的并行操作器MAC64_0的第六修改的示意图。并行算术单元MAC64f_0包括64个并行算术单元121e_0至121e_63。
算术单元121e_0包括算术单元121_0、121a_0、121c_0以及121e_0以及选择器SL3。选择器SL3根据模式来选择算术单元121_0、121a_0、121c_0以及121e_0之一并输出所选择的一个。算术单元MAC64e_1至MAC64e_3具有与算术单元MAC64e_0的配置相同的配置,并且因此省略了对其的描述。注意,算术单元121e_0的部分和算术单元121c_01的部分可以具有共同电路,并且是要按原样输出16位还是经由1位转换电路可以被选择。模式可以例如通过由CPU设置寄存器来固定地指定,或者可以通过描述要在描述符中指定的模式的信息来为每个描述符指定。
以这种方式,并行算术单元MAC64f_0可以根据所需的算术准确性、存储器使用和吞吐量来切换算术操作的内容。并行算术单元MAC64e_1至MAC64e_3具有与并行算术单元MAC64e_0的配置相同的配置,并且因此省略了对其的描述。
通过数据传输单元13的数据传输的示例
接下来,将描述通过数据传输单元13从DRP 11到加速器12的数据传输的示例在下文中,将描述根据其中数据经由数据传输单元13从DRP 11被输入到加速器12的操作模式(在下文中被称为输入模式)的通过数据传输单元13的数据传输的示例。
图22是示出了当输入模式是第一输入模式时并行算术单元MAC256_0、数据传输单元13以及加速器12的示意图。在这种情况下,数据传输单元13使用选择电路131输出64位(16位×4)数据DQout_0将其作为DPin_0。组成64位数据DPin_0的16位数据DPin_00至DPin_03分别被输入到并行算术单元MACMAC64_0至MAC64_3。
数据传输单元13与并行算术单元MAC256_1至MAC256_3之间的关系与数据传输单元13与并行算术单元MAC256_0之间的关系相同,对其的描述被省略。
图23是示出了当输入模式是第二输入模式时并行算术单元MAC256_0、数据传输单元13以及加速器12的示意图。在这种情况下,数据传输单元13使用选择电路131将数据DQout_00划分成组成32位(16位×2)的数据DQout_0的两个16位数据片DQout_00和DQout_02,并且输出所划分的16位数据片DPin_00和DPin_01,并且还将数据DQout_02划分成两个片并输出所划分的16位数据片DPin_02和DPin_03。这些16位数据DPin_00至DPin_03分别被输入到并行算术单元MACMAC64_0至MAC64_3。
数据传输单元13与并行算术单元MAC256_1至MAC256_3之间的关系与数据传输单元13与并行算术单元MAC256_0之间的关系相同,对其的描述被省略。
图24是示出了当输入模式是第三输入模式时并行算术单元MAC256_0、数据传输单元13以及加速器12的示意图。在这种情况下,数据传输单元13使用选择电路131将16位数据DQout_0分布成四个数据片,并且输出所划分的数据片作为16位数据DPin_00至DPin_03。这些16位数据DPin_00至DPin_03分别被输入到并行算术单元MACMAC64_0至MAC64_3。
数据传输单元13与并行算术单元MAC256_1至MAC256_3之间的关系与数据传输单元13与并行算术单元MAC256_0之间的关系相同,对其的描述被省略。
图25是示出了当输入模式是第四输入模式时并行算术单元MAC256_0、数据传输单元13以及加速器12的示意图。在这种情况下,数据传输单元13使用选择电路131备选地从组成64位数据DQout_0(16位×4)的16位数据DQout_00至DQout_03中选择16位数据DQout_00和DQout_01(在图25中示出的示例中,按此顺序选择B1、B2、B3、以及B4),将选择结果分布为两个,并且输出16位的数据DPin_00和DPin_01。剩余的16位数据DQout_02和DQout_03被备选地选择(在图25的示例中,按此顺序选择A1、A2、A3、以及A4),并且选择结果被划分成两个并且输出作为16位数据DPin_02和DPin_03。这些16位数据DPin_00至DPin_03分别被输入到并行算术单元MACMAC64_0至MAC64_3。
数据传输单元13与并行算术单元MAC256_1至MAC256_3之间的关系与数据传输单元13与并行算术单元MAC256_0之间的关系相同,对其的描述被省略。
此时,要在DRP 11的一个输出过程中输出的两个数据片被输入到加速器12的每个输入端子。因此,加速器12的处理速度通过将DRP 11的处理速度加倍来平衡。为了使加速器12的处理性能最大化,优选的是,将加速器12的处理速度调整为稍慢于DRP 11的处理速度的两倍。当数据从DRP 11间歇地输出时,优选的是,根据数据的间歇性的程度来增大DRP 11的处理速率,因为加速器12的处理性能可以被最大化。
图26是示出了当输入模式是第五输入模式时并行算术单元MAC256_0、数据传输单元13以及加速器12的示意图。在这种情况下,数据传输单元13使用选择电路131备选地选择组成32位数据DQout_0(16位×2)的16位数据DQout_00和DQout_01(在图26中示出的示例中,按此顺序选择A1、A2、A3、以及A4),将选择结果分布为四个,并且输出16位的数据DPin_00至DPin_03。这些16位数据DPin_00至DPin_03分别被输入到并行算术单元MACMAC64_0至MAC64_3。
数据传输单元13与并行算术单元MAC256_1至MAC256_3之间的关系与数据传输单元13与并行算术单元MAC256_0之间的关系相同,对其的描述被省略。
此时,要在DRP 11的一个输出过程中输出的两个数据片被输入到加速器12的每个输入端子。因此,加速器12的处理速度通过将DRP 11的处理速度加倍来平衡。为了使加速器12的处理性能最大化,优选的是,将加速器12的处理速度调整为稍慢于DRP 11的处理速度的两倍。当数据从DRP 11间歇地输出时,优选的是,根据数据的间歇性的程度来增大DRP 11的处理速率,因为加速器12的处理性能可以被最大化。
图27是示出了当输入模式是第六输入模式时并行算术单元MAC256_0、数据传输单元13以及加速器12的示意图。在这种情况下,数据传输单元13使用选择电路131按顺序选择组成48位的数据DQout_0(16位×3)的16位数据DQout_00至DQout_02(在图27中示出的示例中,按顺序选择A1、A2、A3、A4、A5、以及A6),将选择结果分布为四个,并且输出16位的数据DPin_00至DPin_03。这些16位数据DPin_00至DPin_03分别被输入到并行算术单元MACMAC64_0至MAC64_3。
数据传输单元13与并行算术单元MAC256_1至MAC256_3之间的关系与数据传输单元13与并行算术单元MAC256_0之间的关系相同,对其的描述被省略。
此时,要在DRP 11的一个输出过程中输出的三个数据片被输入到加速器12的每个输入端子。因此,如果加速器12的处理速度是DRP 11的处理速度的三倍,则其将被良好平衡。为了使加速器12的处理性能最大化,优选的是,将加速器12的处理速度调整为稍慢于DRP 11的处理速度的三倍。当数据从DRP 11间歇地输出时,优选的是,根据数据的间歇性的程度来增大DRP 11的处理速率,因为加速器12的处理性能可以被最大化。
图28是示出了当输入模式是第七输入模式时并行算术单元MAC256_0、数据传输单元13以及加速器12的示意图。在这种情况下,数据传输单元13使用选择电路131顺序地选择组成64位的数据DQout_0(16位×4)的16位数据DQout_00至DQout_03(在图28中示出的示例中,按此顺序选择A1、A2、A3、A4、A5、A6、A7以及A8),将选择结果分布为四个,并且输出16位的数据DPin_00至DPin_03。这些16位数据DPin_00至DPin_03分别被输入到并行算术单元MACMAC64_0至MAC64_3。
数据传输单元13与并行算术单元MAC256_1至MAC256_3之间的关系与数据传输单元13与并行算术单元MAC256_0之间的关系相同,对其的描述被省略。
此时,要在一个DRP 11输出过程中输出的四个数据片被输入到加速器12的每个输入端子。因此,如果加速器12的处理速度是DRP 11的处理速度的四倍,则其将被良好平衡。为了使加速器12的处理性能最大化,优选的是,将加速器12的处理速度调整为稍慢于DRP11的处理速度的四倍。当数据从DRP 11间歇地输出时,优选的是,根据数据的间歇性的程度来增大DRP 11的处理速率,因为加速器12的处理性能可以被最大化。
如以上所描述的,根据本实施例的半导体器件1可以任意地改变对经由数据传输单元13从DRP 11输入到加速器12的数据的并行算术处理的并行化程度。应当注意,当来自DRP 11的数据输出速率被调节以匹配加速器12的处理吞吐量时数据处理是高效的。具体地,如果来自DRP 11的数据输出速率被设置为稍高于加速器12的处理吞吐量,则加速器12的处理性能可以被最大化。
通过数据传输单元14的数据传输的示例
接下来,将描述通过数据传输单元14从加速器12到DRP 11的数据传输的示例在下文中,将描述根据其中数据经由数据传输单元14从加速器12被输出到DRP 11的操作模式(在下文中被称为输出模式)的通过数据传输单元14的数据传输的示例。数据DPout_0由数据DPout_00至DPout_03组成,其将在稍后描述。
图29是示出了当输出模式是第一输出模式时加速器12中的并行算术单元MAC256_0和数据传输单元14的示意图。在这种情况下,数据传输单元14使用选择电路141从从并行算术单元MAC64_0并行地输出的最大64个16位数据DPout_00中顺序地选择一个数据,并且顺序地输出所选择的数据作为16位数据DQin_00。另外,通过从具有从并行处理器MAC64_1并行地输出的最大64个16位数据的DPout_01中选择一个数据来顺序地输出16位数据DQin_01。另外,通过从具有从并行处理器MAC64_2并行地输出的最大64个16位数据的DPout_02中选择一个数据来顺序地输出16位数据DQin_02。另外,从并行处理器MAC64_3并行地输出的最大64个16位数据DPout_03被顺序地选择,并且顺序地输出所选择的数据作为16位数据DQin_03。即,数据传输单元14顺序地输出由16位数据DQin_00至DQin_03组成的64位宽数据DQin_0。
并行算术单元MAC256_1至MAC256_3与数据传输单元14之间的关系和并行算术单元MAC256_0与数据传输单元14之间的关系相同,并且其描述将被省略。
图30是示出了当输出模式是第二输出模式时加速器12中的并行算术单元MAC256_0和数据传输单元14的示意图。在这种情况下,数据传输单元14包括由第一选择电路141_1和第二选择电路141_2组成的选择电路141。
首先,选择电路141_1从从并行算术单元MAC64_0并行地输出的最大64个16位数据DPout_00中顺序地选择一个数据,并且顺序地输出所选择的数据作为16位数据DQin_00。另外,通过从具有从并行处理器MAC64_1并行地输出的最大64个16位数据的DPout_01中逐个地进行选择来顺序地输出16位数据DQin_01。另外,通过从具有从并行处理器MAC64_2并行地输出的最大64个16位数据的DPout_02中逐个地进行选择来顺序地输出16位数据DQin_02。另外,通过从具有从并行处理器MAC64_3并行地输出的最大64个16位数据的DPout_03中逐个地进行选择来顺序地输出16位数据DQin_03。
在此之后,选择电路141_2输出16位数据DQin_00,并且随后输出16位数据DQin_01。并行地,输出16位数据DQin_2,接着是16位数据DQin_3.即,数据传输单元14顺序地输出由从选择电路141_2输出的数据DQin_00和DQin_01之一与DQin_02和DQin_03之一组成的具有32位宽的数据DQin_0。
数据传输单元14可以备选地使用选择电路141_2输出16位数据DQin_00和16位数据DQin_01。16位数据DQin_02和16位数据DQin_03可以被备选地输出。
并行算术单元MAC256_1至MAC256_3与数据传输单元14之间的关系和并行算术单元MAC256_0与数据传输单元14之间的关系相同,并且其描述将被省略。
图31是示出了在输出模式是第三输出模式的情况下加速器12的并行算术单元MAC256_0和数据传输单元14的示意图。在这种情况下,数据传输单元14包括由第一选择电路141_1和第二选择电路141_2组成的选择电路141。
首先,选择电路141_1从从并行算术单元MAC64_0并行地输出的最大64个16位数据DPout_00中顺序地选择一个数据,并且顺序地输出所选择的数据作为16位数据DQin_00。另外,通过从具有从并行算术单元MAC64_1并行地输出的最大64个16位数据的DPout_01中逐个地进行选择来顺序地输出16位数据DQin_01。另外,通过从具有从并行算术单元MAC64_2并行地输出的最大64个16位数据的DPout_02中逐个地进行选择来顺序地输出16位数据DQin_02。另外,通过从具有从并行算术单元MAC64_3并行地输出的最大64个16位数据的DPout_03中逐个地进行选择来顺序地输出16位数据DQin_03。
其后,选择电路141_2从16位数据DQin_00至DQin_03中顺序地选择一个数据,并且顺序地输出所选择的数据作为16位宽数据DQin_0。
并行算术单元MAC256_1至MAC256_3与数据传输单元14之间的关系和并行算术单元MAC256_0与数据传输单元14之间的关系相同,并且其描述将被省略。
图32是示出了在输出模式是第四输出模式的情况下加速器12的并行算术单元MAC256_0和数据传输单元14的示意图。在这种情况下,数据传输单元14包括由第一选择电路141_1和第二选择电路141_2组成的选择电路141。
首先,选择电路141_1从从并行算术单元MAC64_0并行地输出的最大64个16位数据DPout_00中顺序地选择一个数据,并且顺序地输出所选择的数据作为16位数据DQin_00(在图32的示例中为C1,C2,C3,C4,...)。另外,16位数据DPout_01从从并行算术单元MAC64_01并行地输出的最大64个16位数据DPout_01中被顺序地逐个地选择,并且被顺序地输出作为16位数据DQin_01(在图32的示例中为D1,D2,D3,D4,...)。另外,从并行算术单元MAC64_2并行地输出的最大64个16位数据DPout_02被顺序地逐个地选择,并且所选择的数据被顺序地输出作为16位数据DQin_02(E1,E2,E3,E4,...)。另外,从并行算术单元MAC64_3并行地输出的最大64个16位数据DPout_03被顺序地逐个地选择,并且所选择的数据被顺序地输出作为16位数据DQin_03(在图32的示例中为F1,F2,F3,F4,...)。
其后,选择电路141_2备选地输出16位数据DQin_00和16位数据DQin_01作为32位数据。与此并行地,16位数据DQin_02和16位数据DQin_03被按顺序输出(在该示例中,按顺序四个元素)并且两个数据片被集体地输出作为32位数据。即,数据传输单元14顺序地输出64位宽数据DQin_0。
并行算术单元MAC256_1至MAC256_3与数据传输单元14之间的关系和并行算术单元MAC256_0与数据传输单元14之间的关系相同,并且其描述将被省略。
此时,数据以从加速器12输出的数据的1/2的速率被输入到DRP 11。因此,当加速器12的处理速度大约为DRP 11的处理速度的两倍时,在加速器12没有受DRP 11处理速率限制的情况下高效地执行了并行算术操作处理之后从加速器12输出的数据的数据传输速度可以被减小到DRP 11处理速度。
图33是示出了在输出模式是第五输出模式的情况下加速器12的并行算术单元MAC256_0和数据传输单元14的示意图。在这种情况下,数据传输单元14包括由第一选择电路141_1和第二选择电路141_2组成的选择电路141。
首先,选择电路141_1顺序地从从并行算术单元MAC64_0并行地输出的最大64个16位数据DPout_00中进行逐个地选择,并且顺序地输出所选择的数据作为16位数据DQin_00(在图33的示例中为C1,C2,C3,C4,...)。另外,从并行算术单元MAC64_1并行地输出的最大64个16位数据DPout_01被顺序地逐个地选择,并且被顺序地输出作为16位数据DQin_01(在图33的示例中为C1,C2,C3,C4,...)。另外,从并行算术单元MAC64_2并行地输出的最大64个16位数据DPout_02被顺序地逐个地选择,并且被顺序地输出作为16位数据DQin_02(在图33的示例中为E1,E2,E3,E4,...)。另外,从并行算术单元MAC64_3并行地输出的最大64个16位数据DPout_03被顺序地逐个地选择,并且被顺序地输出作为16位数据DQin_03(在图33的示例中为F1,F2,F3,F4,...)。
其后,选择电路141_2按顺序(在该示例中,按四个元素的顺序)顺序地输出16位数据DQin_00至DQin_03并收集两个数据片作为32位宽数据DQin_0。
并行算术单元MAC256_1至MAC256_3与数据传输单元14之间的关系和并行算术单元MAC256_0与数据传输单元14之间的关系相同,并且其描述将被省略。
此时,数据以从加速器12输出的数据的1/2的速率被输入到DRP 11。因此,特别地,当加速器12的处理速度大约为DRP 11的处理速度的两倍时,在加速器12没有受DRP 11处理速率限制的情况下高效地执行了并行算术处理之后从加速器12输出的数据的数据传输速度可以被减小到DRP 11处理速度。
图34是示出了在输出模式是第六输出模式的情况下加速器12的并行算术单元MAC256_0和数据传输单元14的示意图。在这种情况下,数据传输单元14包括由第一选择电路141_1和第二选择电路141_2组成的选择电路141。
首先,选择电路141_1顺序地从从并行算术单元MAC64_0并行地输出的最大64个16位数据DPout_00中进行逐个地选择,并且顺序地输出所选择的数据作为16位数据DQin_00(在图34的示例中为C1,C2,C3,C4,...)。另外,从并行算术单元MAC64_1并行地输出的最大64个16位数据DPout_01被顺序地逐个地选择,并且被顺序地输出作为16位数据DQin_01(在图34的示例中为C1,C2,C3,C4,...)。另外,从并行算术单元MAC64_2并行地输出的最大64个16位数据DPout_02被顺序地逐个地选择,并且被顺序地输出作为16位数据DQin_02(在图34的示例中为E1,E2,E3,E4,...)。另外,从并行算术单元MAC64_3并行地输出的最大64个16位数据DPout_03被顺序地逐个地选择,并且被顺序地输出作为16位数据DQin_03(在图34的示例中为F1,F2,F3,F4,...)。
其后,选择电路141_2按顺序(在该示例中,按四个元素的顺序)顺序地输出16位数据DQin_00至DQin_03并收集三个数据片作为48位宽数据DQin_0。
并行算术单元MAC256_1至MAC256_3与数据传输单元14之间的关系和并行算术单元MAC256_0与数据传输单元14之间的关系相同,并且其描述将被省略。
此时,数据以从加速器12输出的数据的三分之一的速率被输入到DRP 11。因此,当加速器12的处理速度大约为DRP 11的处理速度的三倍时,在加速器12没有受DRP 11处理速率限制的情况下高效地执行了并行算术处理之后从加速器12输出的数据的数据传输速度可以被减小到DRP 11处理速度。
图35是示出了在输出模式是第七输出模式的情况下加速器12的并行算术单元MAC256_0和数据传输单元14的示意图。在这种情况下,数据传输单元14包括由第一选择电路141_1和第二选择电路141_2组成的选择电路141。
首先,选择电路141_1顺序地从从并行算术单元MAC64_0并行地输出的最大64个16位数据DPout_00中进行逐个地选择,并且顺序地输出所选择的数据作为16位数据DQin_00(在图35的示例中为C1,C2,C3,C4,...)。另外,从并行算术单元MAC64_1并行地输出的最大64个16位数据DPout_01被顺序地逐个地选择,并且被顺序地输出作为16位数据DQin_01(在图35的示例中为C1,C2,C3,C4,...)。另外,16位数据DPout_02从从并行算术单元MAC64_02并行地输出的最大64个16位数据DPout_02中被顺序地逐个地选择,并且被顺序地输出作为16位数据DQin_02(在图35的示例中为E1,E2,E3,E4,...)。另外,16位数据DPout_03从从并行算术单元MAC64_03并行地输出的最大64个16位数据DPout_03中被顺序地逐个地选择,并且被顺序地输出作为16位数据DQin_03(在图35的示例中为F1,F2,F3,F4,...)。
其后,选择电路141_2按顺序(在该示例中,按四个元素的顺序)顺序地输出16位数据DQin_00至DQin_03并收集四个数据片作为64位宽数据DQin_0。
并行算术单元MAC256_1至MAC256_3与数据传输单元14之间的关系和并行算术单元MAC256_0与数据传输单元14之间的关系相同,并且其描述将被省略。
此时,数据以从加速器12输出的数据的1/4的速率被输入到DRP 11。因此,当加速器12的处理速度大约为DRP 11的处理速度的四倍时,在加速器12没有受DRP 11处理速率限制的情况下高效地执行了并行算术处理之后从加速器12输出的数据的数据传输速度可以被减小到DRP 11处理速度。
如以上所描述的,在根据本实施例的半导体器件1中,从加速器12经由数据传输单元14输出到DRP 11的数据可以被改变为任何位宽的数据。为了使加速器12的性能最大化,优选的是,由DRP 11接收的数据速率稍高于从加速器12输出的数据速率。
图36是示出了当利用最大程度的并行化对输入数据执行算术操作时并行算术部分121的算术操作处理的流的示意图。如图36所示,从DRP 11输出的数据DQout_0由数据传输单元13分别分布到并行算术单元MAC256_0至MAC256_3中提供的并行算术单元MAC64_0至MAC64_3并提供为数据DPin_0至DPin_3。此时,并行算术部分121可以通过使用高达1024个算术单元对数据DQout_0(数据DPin_0至DPin_3)并行地执行算术操作。注意,数据传输单元14被配置为选择性地输出从1024个算术单元中的每个并行地输出的算术操作结果,使得这些算术操作结果可以被转换成期望位宽的数据并输出到DRP 11。
图37是示出了在并行化的程度为最小单元的情况下对输入数据执行算术操作的情况下并行算术部分121的算术操作的流的示意图。如图37所示,从DRP 11输出的数据DQout_0由数据传输单元13被提供到并行算术单元MAC256_0中提供的并行算术单元MAC64_0作为数据DPin_0。此时,并行操作部分121可以通过使用并行算术单元MAC64_0中提供的64个算术单元之中的一至64个算术单元来对数据DQout_0(数据DPin_0)并行地执行算术操作。
图38是示出当利用以中等水平设置的并行化程度对输入数据执行算术操作时并行算术部分121的算术操作处理的流的示意图。在图38的实施例中,从DRP 11输出的数据DQout_0由数据传输单元13分别分布到并行算术单元MAC256_0中提供的并行算术单元MAC64_0至MAC64_3和并行算术单元MAC256_0中提供的并行算术单元MAC64_0至MAC64_2并提供为数据DPin_0和DPin_1。这里,并行算术部分121可以通过使用例如400个算术单元对数据DQout_0(数据DPin_0和DPin_1)并行地执行算术操作处理。
图39是示出了当对两个输入数据中的每个执行并行算术操作时并行算术部分121的算术操作的流的示意图。在图39的实施例中,从DRP 11输出的数据DQout_0由数据传输单元13分别分布到并行算术单元MAC256_0中提供的并行算术单元MAC64_0至MAC64_3和并行算术单元MAC256_1中提供的并行算术单元MAC64_0至MAC64_2并提供为数据DPin_0和DPin_1。另外,从DRP 11输出的数据DQout_2由数据传输单元13分布到并行算术单元中提供MAC256_2的并行算术单元MAC64_0和MAC64_1并提供为数据DPin_2。此时,并行算术部分121可以使用例如400个算术单元对数据DQout_0(数据DPin_0和DPin_1)并行地执行算术操作,并且使用例如120个算术单元对数据DQout_2(数据DPin_2)并行地执行算术操作。
例如,在使用彼此不同的多个算术单元对两个或更多个输入数据执行算术操作的情况下,用于针对一个输入数据的算术操作处理的多个算术单元和用于针对另一个输入数据的算术操作处理的多个算术单元可以被提供有从本地存储器122读出的个体预定数据,或者可以被提供有共同的预定数据。
第二实施例
图40是示出了根据第二实施例的半导体器件1a被安装于其上的半导体系统SYS1a的示例性配置的框图。与图1中示出的半导体器件1相比,图40中示出的半导体器件1a具有DRP 11a而非DRP 11。
DRP 11a具有例如两个状态管理单元(STC;状态转变控制器)111和112,使用一个状态管理单元111对从外部存储器3读出的数据执行算术操作,将算术操作结果输出到加速器12,使用另一个状态管理单元112对从加速器12输出的数据执行算术操作,将算术操作结果写入到外部存储器3。即,DRP 11a彼此独立地操作对要被发送到加速器12的数据的处理和对从加速器12接收到的数据的处理。结果,在DRP 11a中,能够使当执行动态重新配置时给出的操作指令(应用)比当执行动态重新配置操作(DRP 11)时的动态重新配置指令(应用)更简单。还允许DRP 11a比关于DRP 11更容易地对电路进行重新配置。
另外,DRP 11a被提供有用于独立地操作对要被发送到加速器12的数据的处理和对从加速器12接收到的数据的处理的两个状态管理单元,由此,例如,可以增加从外部存储器3读取的数据被输入到的外部输入端子、指向加速器12的数据被输出到的外部输出端子、来自加速器12的数据被输入到的外部输入端子、以及指向外部存储器3的写入数据被输出到的外部输出端子的布置的灵活程度。
如以上所描述的,根据第一实施例和第二实施例的半导体器件包括:加速器,其具有并行地执行算术操作的并行算术部分;数据处理单元,诸如DRP,其顺序地传输数据;以及数据传输单元,其顺序地选择加速器的多个算术操作处理结果并将它们输出到数据处理单元。因此,根据第一实施例和第二实施例的半导体器件和包括其的半导体系统可以通过使用加速器来执行大量常规数据处理,并且通过使用数据处理单元来执行其他数据处理,使得能够甚至在大规模算术处理(诸如深度学习处理)中执行高效算术操作。
尽管本发明人做出的本发明已经具体地基于实施例来描述,但是本发明不限于已经描述的实施例,并且毋庸置疑,可以在不偏离本发明的目标的情况下做出各种修改。
在以上描述的第一实施例和第二实施例中,描述了其中从本地存储器122读出的个体预定数据被提供到组成并行算术部分121的多个算术单元,但是本发明不限于此。从本地存储器122读取的公共预定数据可以被提供到组成并行算术部分121的多个算术单元中的全部或分组。在这种情况下,本地存储器122的电路规模和功耗可以被降低。
上述实施例中的一些或全部可以被描述为以下附录,但是本发明不限于下文。
(附录1)
一种半导体器件,包括:数据处理单元,其对顺序地输入的第一输入数据执行数据处理并顺序地输出数据处理的结果作为第一输出数据;并行算术单元,其在从数据处理单元顺序地输出的第一输出数据与多个预定数据中的每个预定数据之间并行地执行算术处理;保持电路,其保持算术处理的结果;以及第一数据传输单元,其顺序地选择由加速器保持的多个算术处理结果并顺序地输出算术处理的结果作为第一输入数据。
(附录2)
根据附录1所述的半导体器件,其中,数据处理单元是能够基于顺序地给出的操作命令来动态地重新配置的处理器。
(附录3)
一种半导体系统,包括:如附录3中所描述的半导体器件;外部存储器;以及控制单元,其基于从外部存储器读取的控制指令来控制半导体器件的操作。
Claims (19)
1.一种半导体器件,包括:
数据处理单元,被配置为对顺序地输入的第一输入数据执行数据处理,并且顺序地输出第一输出数据作为所述数据处理的结果;
加速器,具有并行算术部分,所述并行算术部分顺序地接收所述第一输出数据并且在所述第一输出数据与多个预定数据中的每个预定数据之间并行地执行算术操作;以及
第一数据传输单元,被配置为接收所述加速器的多个算术操作结果,按顺序输出所述多个算术操作结果作为所述第一输入数据。
2.根据权利要求1所述的半导体器件,其中所述并行算术部分包括多个算术单元,
其中所述第一输出数据被共同地输入到所述多个算术单元中的每个算术单元,
其中所述多个算术单元中的每个算术单元在所述多个预定数据中的对应的预定数据与所述第一输出数据之间执行所述算术操作。
3.根据权利要求2所述的半导体器件,其中所述多个算术单元中的每个算术单元包括加法器和乘法器以执行乘法累加操作。
4.根据权利要求1所述的半导体器件,
其中所述并行算术部分包括具有多个算术单元的第一算术单元组,并且
其中所述第一数据传输单元按顺序输出所述第一算术单元组的多个第一算术结果作为所述第一输入数据。
5.根据权利要求4所述的半导体器件,其中所述并行算术部分还包括与所述第一算术单元组不同的第二算术单元组,所述第二算术单元组包括多个算术单元,
其中所述第一数据传输单元顺序地输出所述第二算术单元组的多个第二算术结果作为第二输入数据,并且
所述数据处理单元与对所述第一输入数据的所述数据处理并行地执行对所述第二输入数据的所述数据处理。
6.根据权利要求5所述的半导体器件,
其中所述第一数据传输单元按顺序输出所述第一算术结果和所述第二算术结果作为所述第一输入数据。
7.根据权利要求4所述的半导体器件,其中所述第一数据传输单元基于所述加速器相对于所述数据处理单元的处理速度的处理速度而被设置为第一模式或第二模式,
其中,当所述第一数据传输单元被设置为所述第一模式时,所述第一数据传输单元按顺序输出所述第一算术单元的所述第一算术结果作为所述第一输入数据,并且
其中,当所述第一数据传输单元被设置为所述第二模式时,所述第一数据传输单元集体地选择所述第一算术结果中的至少两个算术结果以作为所述第一输入数据输出。
8.根据权利要求1所述的半导体器件,还包括第二数据传输单元,所述第二数据传输单元将所述第一输出数据选择性地输出到所述并行算术部分中的多个算术单元之中被分组为第一算术单元组的多个算术单元。
9.根据权利要求8所述的半导体器件,其中所述数据处理单元被配置为与所述第一输出数据并行地顺序地输出第二输出数据,并且所述第二数据传输单元还被配置为将所述第二输出数据选择性地输出到所述并行算术部分中的所述多个算术单元之中被分组为与所述第一算术单元组不同的第二算术单元组的多个算术单元。
10.根据权利要求9所述的半导体器件,其中所述第二数据传输单元被配置为将所述第一输出数据或所述第二输出数据选择性地输出到所述第二算术单元组。
11.根据权利要求9所述的半导体器件,其中所述第二数据传输单元选择所述第一输出数据和所述第二输出数据并将所述第一输出数据和所述第二输出数据按顺序输出到所述第一算术单元组和所述第二算术单元组。
12.根据权利要求9所述的半导体器件,
其中所述第二数据传输单元基于所述加速器相对于所述数据处理单元的处理速度的处理速度而被设置为第三模式或第四模式,
其中,当所述第二数据传输单元被设置为所述第三模式时,所述第二数据传输单元将所述第一输出数据和所述第二输出数据分别输出到所述第一算术单元组和所述第二算术单元组,
其中,当所述第二数据传输单元被设置为所述第四模式时,所述第二数据传输单元顺序地选择所述第一输出数据和所述第二输出数据并将所选择的结果输出到所述第一算术单元组和所述第二算术单元组。
13.根据权利要求1所述的半导体器件,其中所述并行算术部分包括多个算术单元,所述算术单元中的每个算术单元包括:多个算术电路,执行不同算术处理;和选择器,选择性地输出所述多个算术电路的结果。
14.根据权利要求1所述的半导体器件,其中所述数据处理单元顺序地输出所述第一输出数据作为对从外部存储器读取的数据的所述数据处理的结果,并且将对顺序地输入的所述第一输入数据的数据处理的结果提供给所述外部存储器。
15.根据权利要求14所述的半导体器件,其中所述数据处理单元包括:第一状态管理单元,所述第一状态管理单元控制用于生成所述第一输出数据的算术操作,以及第二状态管理单元,所述第二状态管理单元控制针对所述第一输入数据的算术操作,其中所述第二状态管理单元与所述第一状态管理单元不同。
16.根据权利要求1所述的半导体器件,其中所述加速器还包括存储所述多个预定数据的本地存储器。
17.根据权利要求16所述的半导体器件,其中组成所述并行算术单元的多个算术单元之中被分组为第一算术单元组的多个算术单元和被分组为第二算术单元组的多个算术单元被共同地提供有从所述本地存储器读出的所述多个预定数据。
18.根据权利要求16所述的半导体器件,
其中所述并行算术部分包括被分组为第一算术单元组的多个算术单元和被分组为第二算术单元组的多个算术单元,
其中所述第一算术单元组中的所述多个算术单元和所述第二算术单元组中的所述多个算术单元被分别提供有从所述本地存储器读出的不同的预定数据。
19.一种控制半导体器件的方法,包括:
使用数据处理单元来对顺序地输入的第一输入数据执行数据处理并且顺序地输出所述数据处理的结果作为第一输出数据;
使用加速器来在从所述数据处理单元顺序地输出的所述第一输出数据与多个预定数据中的每个预定数据之间并行地执行算术操作;
按顺序输出所述加速器的多个算术操作结果作为所述第一输入数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018114861A JP7038608B2 (ja) | 2018-06-15 | 2018-06-15 | 半導体装置 |
JP2018-114861 | 2018-06-15 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110609804A true CN110609804A (zh) | 2019-12-24 |
Family
ID=68839294
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910453550.1A Pending CN110609804A (zh) | 2018-06-15 | 2019-05-28 | 半导体器件和控制半导体器件的方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11249722B2 (zh) |
JP (1) | JP7038608B2 (zh) |
CN (1) | CN110609804A (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7370158B2 (ja) * | 2019-04-03 | 2023-10-27 | 株式会社Preferred Networks | 情報処理装置および情報処理方法 |
CN117882091A (zh) * | 2021-09-09 | 2024-04-12 | 罗姆股份有限公司 | 机器学习装置 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1994010638A1 (en) * | 1992-11-05 | 1994-05-11 | The Commonwealth Of Australia | Scalable dimensionless array |
US20010018733A1 (en) * | 2000-02-25 | 2001-08-30 | Taro Fujii | Array-type processor |
CN1392985A (zh) * | 2000-09-27 | 2003-01-22 | 索尼计算机娱乐公司 | 多处理器系统、数据处理系统、数据处理方法和计算机程序 |
CN1716210A (zh) * | 2004-06-30 | 2006-01-04 | 富士通株式会社 | 半导体器件 |
US20060012395A1 (en) * | 2002-05-09 | 2006-01-19 | Huppenthal Jon M | Reconfigurable processor element utilizing both course and fine grained reconfigurable elements |
JP2010160632A (ja) * | 2009-01-07 | 2010-07-22 | Mitsubishi Electric Corp | 動的再構成可能な積和演算装置および動的再構成可能プロセッサ |
JP2010206513A (ja) * | 2009-03-03 | 2010-09-16 | Renesas Electronics Corp | 半導体装置 |
US20120017066A1 (en) * | 2003-07-24 | 2012-01-19 | Martin Vorbach | Low latency massive parallel data processing device |
US20140019726A1 (en) * | 2012-07-10 | 2014-01-16 | Renesas Electronics Corporation | Parallel arithmetic device, data processing system with parallel arithmetic device, and data processing program |
CN104636289A (zh) * | 2013-11-07 | 2015-05-20 | 瑞萨电子株式会社 | 半导体装置 |
US20160342891A1 (en) * | 2015-05-21 | 2016-11-24 | Google Inc. | Neural Network Processor |
WO2017006512A1 (ja) * | 2015-07-08 | 2017-01-12 | 株式会社デンソー | 演算処理装置 |
US20180074712A1 (en) * | 2016-09-09 | 2018-03-15 | Fujitsu Limited | Parallel processing device, method for controlling parallel processing device, and controller used in parallel processing device |
JP2018049489A (ja) * | 2016-09-23 | 2018-03-29 | カシオ計算機株式会社 | 制御装置、電子時計、処理制御方法、及びプログラム |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005122303A (ja) * | 2003-10-14 | 2005-05-12 | Seiko Epson Corp | データ転送制御装置、電子機器及びデータ転送制御方法 |
EP1675014B1 (en) * | 2004-12-22 | 2009-09-09 | NEC Electronics Corporation | Data stream processor and information processing apparatus |
JP4753895B2 (ja) * | 2007-02-20 | 2011-08-24 | ルネサスエレクトロニクス株式会社 | 遅延調整回路を有するアレイ型プロセッサ |
KR101098758B1 (ko) * | 2007-09-20 | 2011-12-26 | 서울대학교산학협력단 | Fp-ra를 구성하는 pe 구조 및 그 fp-ra제어하는 fp-ra 제어 회로 |
EP2286347A4 (en) | 2008-06-04 | 2012-03-07 | Nec Lab America Inc | SYSTEM AND METHOD FOR PARALLELIZING AND ACCELERATING A LEARNING MACHINE TRAINING AND CLASSIFICATION THEREOF BY MEANS OF A MASSIVELY PARALLEL ACCELERATOR |
JP5785357B2 (ja) * | 2009-06-25 | 2015-09-30 | スパンション エルエルシー | リコンフィグ演算装置を備えるコンピュータシステムおよびリコンフィグ演算装置 |
US10037192B2 (en) * | 2015-10-21 | 2018-07-31 | Altera Corporation | Methods and apparatus for performing product series operations in multiplier accumulator blocks |
US20180046903A1 (en) * | 2016-08-12 | 2018-02-15 | DeePhi Technology Co., Ltd. | Deep processing unit (dpu) for implementing an artificial neural network (ann) |
US10936941B2 (en) * | 2016-08-12 | 2021-03-02 | Xilinx, Inc. | Efficient data access control device for neural network hardware acceleration system |
JP6945986B2 (ja) * | 2016-10-28 | 2021-10-06 | キヤノン株式会社 | 演算回路、その制御方法及びプログラム |
US11003985B2 (en) * | 2016-11-07 | 2021-05-11 | Electronics And Telecommunications Research Institute | Convolutional neural network system and operation method thereof |
US10032110B2 (en) * | 2016-12-13 | 2018-07-24 | Google Llc | Performing average pooling in hardware |
CN107679621B (zh) * | 2017-04-19 | 2020-12-08 | 赛灵思公司 | 人工神经网络处理装置 |
US10671349B2 (en) * | 2017-07-24 | 2020-06-02 | Tesla, Inc. | Accelerated mathematical engine |
US10872290B2 (en) * | 2017-09-21 | 2020-12-22 | Raytheon Company | Neural network processor with direct memory access and hardware acceleration circuits |
CN108197705A (zh) * | 2017-12-29 | 2018-06-22 | 国民技术股份有限公司 | 卷积神经网络硬件加速装置及卷积计算方法及存储介质 |
US10459876B2 (en) * | 2018-01-31 | 2019-10-29 | Amazon Technologies, Inc. | Performing concurrent operations in a processing element |
US10824584B1 (en) * | 2018-04-03 | 2020-11-03 | Xilinx, Inc. | Device with data processing engine array that enables partial reconfiguration |
US20190340490A1 (en) * | 2018-05-04 | 2019-11-07 | Apple Inc. | Systems and methods for assigning tasks in a neural network processor |
US10817260B1 (en) * | 2018-06-13 | 2020-10-27 | Amazon Technologies, Inc. | Reducing dynamic power consumption in arrays |
US10698842B1 (en) * | 2019-04-10 | 2020-06-30 | Xilinx, Inc. | Domain assist processor-peer for coherent acceleration |
-
2018
- 2018-06-15 JP JP2018114861A patent/JP7038608B2/ja active Active
-
2019
- 2019-05-13 US US16/410,825 patent/US11249722B2/en active Active
- 2019-05-28 CN CN201910453550.1A patent/CN110609804A/zh active Pending
-
2022
- 2022-01-05 US US17/569,135 patent/US11907681B2/en active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1994010638A1 (en) * | 1992-11-05 | 1994-05-11 | The Commonwealth Of Australia | Scalable dimensionless array |
US20010018733A1 (en) * | 2000-02-25 | 2001-08-30 | Taro Fujii | Array-type processor |
CN1392985A (zh) * | 2000-09-27 | 2003-01-22 | 索尼计算机娱乐公司 | 多处理器系统、数据处理系统、数据处理方法和计算机程序 |
US20060012395A1 (en) * | 2002-05-09 | 2006-01-19 | Huppenthal Jon M | Reconfigurable processor element utilizing both course and fine grained reconfigurable elements |
US20120017066A1 (en) * | 2003-07-24 | 2012-01-19 | Martin Vorbach | Low latency massive parallel data processing device |
CN1716210A (zh) * | 2004-06-30 | 2006-01-04 | 富士通株式会社 | 半导体器件 |
JP2010160632A (ja) * | 2009-01-07 | 2010-07-22 | Mitsubishi Electric Corp | 動的再構成可能な積和演算装置および動的再構成可能プロセッサ |
JP2010206513A (ja) * | 2009-03-03 | 2010-09-16 | Renesas Electronics Corp | 半導体装置 |
US20140019726A1 (en) * | 2012-07-10 | 2014-01-16 | Renesas Electronics Corporation | Parallel arithmetic device, data processing system with parallel arithmetic device, and data processing program |
CN104636289A (zh) * | 2013-11-07 | 2015-05-20 | 瑞萨电子株式会社 | 半导体装置 |
US20160342891A1 (en) * | 2015-05-21 | 2016-11-24 | Google Inc. | Neural Network Processor |
WO2017006512A1 (ja) * | 2015-07-08 | 2017-01-12 | 株式会社デンソー | 演算処理装置 |
US20180074712A1 (en) * | 2016-09-09 | 2018-03-15 | Fujitsu Limited | Parallel processing device, method for controlling parallel processing device, and controller used in parallel processing device |
JP2018049489A (ja) * | 2016-09-23 | 2018-03-29 | カシオ計算機株式会社 | 制御装置、電子時計、処理制御方法、及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
US11249722B2 (en) | 2022-02-15 |
JP7038608B2 (ja) | 2022-03-18 |
JP2019219753A (ja) | 2019-12-26 |
US11907681B2 (en) | 2024-02-20 |
US20190384574A1 (en) | 2019-12-19 |
US20220129247A1 (en) | 2022-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7171535B2 (en) | Serial operation pipeline, arithmetic device, arithmetic-logic circuit and operation method using the serial operation pipeline | |
KR0125623B1 (ko) | 데이타 프로세서 및 데이타 처리방법 | |
US11907681B2 (en) | Semiconductor device and method of controlling the semiconductor device | |
US20030061601A1 (en) | Data processing apparatus and method, computer program, information storage medium, parallel operation apparatus, and data processing system | |
JP4484756B2 (ja) | リコンフィギュラブル回路および処理装置 | |
CN109144469B (zh) | 流水线结构神经网络矩阵运算架构及方法 | |
CN108073549B (zh) | 卷积运算装置及方法 | |
US11288220B2 (en) | Cascade communications between FPGA tiles | |
US9361065B2 (en) | Processor and processing method | |
KR102635978B1 (ko) | 생성형 거대 언어 모델의 연산 가속을 위해 메모리대역폭 사용을 극대화하기 위한 혼합정밀도 mac 트리 구조 | |
CN111047037B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN113672285A (zh) | 针对轻量级处理器核心的风险减轻 | |
CN112074810B (zh) | 并行处理设备 | |
US11443014B1 (en) | Sparse matrix multiplier in hardware and a reconfigurable data processor including same | |
WO2019077933A1 (ja) | 演算回路および演算方法 | |
JP2019220003A (ja) | データ処理装置、データ処理方法、およびプログラム | |
JP2011517496A (ja) | 多項式データ処理演算 | |
JP4413052B2 (ja) | データフローグラフ処理装置および処理装置 | |
US20210117352A1 (en) | Semiconductor device and method of controlling the same | |
JP7078129B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
KR102447445B1 (ko) | 행렬 연산의 효율적 병렬처리를 위한 연산 장치 및 이를 포함하는 메모리 장치 | |
US20240037182A1 (en) | Concurrent matrix computations using split matrices with mulitiple stage processors | |
CN110300956B (zh) | 数据处理装置中的乘-累加 | |
JP2001160736A (ja) | デジタルフィルタ回路 | |
JP2010134713A (ja) | 演算処理装置および変換装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |