CN113742266B - 集成电路装置、电子设备、板卡和计算方法 - Google Patents
集成电路装置、电子设备、板卡和计算方法 Download PDFInfo
- Publication number
- CN113742266B CN113742266B CN202111062383.1A CN202111062383A CN113742266B CN 113742266 B CN113742266 B CN 113742266B CN 202111062383 A CN202111062383 A CN 202111062383A CN 113742266 B CN113742266 B CN 113742266B
- Authority
- CN
- China
- Prior art keywords
- data
- computing
- sub
- unit
- units
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 118
- 238000000034 method Methods 0.000 claims abstract description 17
- 210000002569 neuron Anatomy 0.000 claims description 17
- 238000013528 artificial neural network Methods 0.000 claims description 14
- 238000012546 transfer Methods 0.000 claims description 14
- 230000003993 interaction Effects 0.000 claims description 13
- 108010001267 Protein Subunits Proteins 0.000 claims description 6
- 238000012545 processing Methods 0.000 abstract description 46
- 230000005540 biological transmission Effects 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 15
- 239000011159 matrix material Substances 0.000 description 13
- PSYGHMBJXWRQFD-UHFFFAOYSA-N 2-(2-sulfanylacetyl)oxyethyl 2-sulfanylacetate Chemical compound SCC(=O)OCCOC(=O)CS PSYGHMBJXWRQFD-UHFFFAOYSA-N 0.000 description 7
- 238000013135 deep learning Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000004044 response Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000011773 genetically engineered mouse model Methods 0.000 description 3
- 238000003062 neural network model Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 102000002067 Protein Subunits Human genes 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 2
- 210000004027 cell Anatomy 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000007418 data mining Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004146 energy storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 210000002364 input neuron Anatomy 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 210000004205 output neuron Anatomy 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1678—Details of memory controller using bus width
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本公开涉及一种集成电路装置、电子设备、板卡和使用前述集成电路装置来执行计算的方法。该集成电路装置可以包括在组合处理装置的计算装置中,该计算装置可以包括一个或多个集成电路装置。前述的组合处理装置还可以包括接口装置和处理装置。所述计算装置与处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和处理装置连接,用于存储该计算装置和处理装置的数据。本公开的方案可以降低内部设备与外部存储装置之间的数据传输量,由此最大程度地减少了由于带宽限制而导致的I/O瓶颈问题,从而可以提高集成电路装置的整体性能。
Description
技术领域
本公开一般地涉及数据处理领域。更具体地,本公开涉及一种集成电路装置、电子设备、板卡和计算方法。
背景技术
随着人工智能领域的发展,大规模神经网络涉及的运算数据量越来越大,对存储量的要求越来越高,例如反向传播中的卷积权重梯度等运算。在现有运算方式中,通常利用中央处理器(“CPU”)或者图像处理单元(“GPU”)等处理器进行运算。然而,即使采用并行计算的方式,由于处理器受制于内部寄存器资源的容量限制,庞大的数据运算量可能会导致处理器与外部存储设备之间产生大量的数据交互,从而降低设备的运算及处理效率。由于输入/输出(“I/O”)总线的带宽有限,由此可能会出现严重的I/O瓶颈问题,因此极大地降低了并行运算效率。另外,不仅I/O总线的带宽限制会成为性能的瓶颈,而且处理器与外部存储设备间大量的I/O访存量也会造成较大的计算和功耗开销。
发明内容
为了至少解决在上文中所提到的技术问题,本公开提供了可以减少与外部存储设备的数据传输量,最大程度地降低总线带宽限制带来的I/O瓶颈问题的解决方案。具体地,本公开在如下的多个方面中提供前述的解决方案。
在第一方面中,本公开提供了一种集成电路装置,包括:
数据接口,其配置用于在所述集成电路装置和外部存储器之间传递数据;
存储单元,其配置成:
经由所述数据接口从所述外部存储器获取第一数据并发送至多个计算单元;以及
存储从多个计算单元处接收到的多个计算结果;
多个计算单元,其中每个计算单元配置成:
从所述存储单元处接收来自于所述外部存储器的第一数据;以及根据所述第一数据和预先存储的第二数据进行计算以得到计算结果,并将所述计算结果发送至所述存储单元。
在第二方面中,本公开提供了一种电子设备,包括前述及其稍后描述的多个实施例的集成电路装置。
在第三方面中,本公开提供了一种板卡,包括根据前述及其稍后描述的多个实施例的集成电路装置。
在第三方面中,本公开提供了一种使用集成电路装置来执行计算的方法,其中所述集成电路装置包括数据接口、存储单元和多个计算单元,所述数据接口用于在所述集成电路装置和外部存储器之间传递数据,存储单元用于经由所述数据接口从所述外部存储器获取第一数据并发送至多个计算单元;所述方法包括在每个计算单元处执行以下操作:
从所述存储单元处接收来自于所述外部存储器的第一数据;
根据所述第一数据和预先存储的第二数据进行计算以得到计算结果;以及
将所述计算结果发送至所述存储单元,以使其进行存储。
通过利用本公开上述的集成电路装置、电子设备、板卡和计算方法,可以将接收到的数据(例如上述第一数据)和计算出的结果(例如上述计算结果)均可存储在存储单元中,从而使得在调用以上数据和结果进行相应操作时只需与存储单元交互而无需与外部存储器交互。因此,本公开方案可减少集成电路装置通过I/O总线与外部存储器进行数据交互的数据吞吐量,从而克服I/O总线带宽瓶颈的问题,进而可以提升集成电路装置、电子设备或板卡的整体性能。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1是示出根据本公开实施例的板卡的结构图;
图2是示出根据本公开实施例的集成电路装置的结构图;
图3是示出根据本公开实施例的单核计算装置的内部结构示意图;
图4是示出根据本公开实施例的多核计算装置的内部结构示意图;
图5是示出根据本公开实施例的处理器核的内部结构示意图;
图6是示出根据本公开实施例的一种集成电路装置的结构示意图;
图7是示出根据本公开实施例的集成电路装置的数据传送示意图;
图8是示出根据本公开实施例的一种计算单元的示意架构图;
图9是示出根据本公开实施例的一种从计算单元的示意架构图;
图10是示出根据本公开实施例的另一种集成电路装置的结构示意图;以及
图11是示出根据本公开实施例的使用集成电路装置来执行计算的方法的简化流程图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开公开的方案保护的范围。
下面结合附图来详细描述本公开的具体实施方式。
图1是示出根据本公开实施例的一种板卡10的结构示意图。可以理解的是图1所示结构和组成仅仅是一种示例,其并不用于在任何方面对本公开的方案进行限制。
如图1所示,板卡10包括芯片101,其可以是一种系统级芯片(System on Chip,SoC),也即本公开上下文中所描述的片上系统。在一个实施场景中,其可以集成有一个或多个组合处理装置。前述组合处理装置可以是一种人工智能运算单元,用以支持各类深度学习和机器学习算法,满足计算机视觉、语音、自然语言处理、数据挖掘等领域复杂场景下的智能处理需求,特别是深度学习技术大量应用在云端智能领域。云端智能应用的一个显著特点是输入数据量大,对平台的存储能力和计算能力有很高的要求,而本实施例的板卡10适用在云端智能应用,具有庞大的片外存储、片上存储和强大的计算能力。
进一步如图中所示,芯片101通过对外接口装置102与外部设备103相连接。根据不同的应用场景,外部设备103例如可以是服务器、计算机、摄像头、显示器、鼠标、键盘、网卡或wifi接口等。待处理的数据可以由外部设备103通过对外接口装置102传递至芯片101。芯片101的计算结果可以经由对外接口装置102传送回外部设备103。根据不同的应用场景,对外接口装置102可以具有不同的接口形式,例如PCIe接口等。
板卡10还可以包括用于存储数据的存储器件104,其包括一个或多个存储单元105。存储器件104通过总线与控制器件106和芯片101进行连接和数据传输。板卡10中的控制器件106可以配置用于对芯片101的状态进行调控。为此,在一个应用场景中,控制器件106可以包括单片机(Micro Controller Unit,MCU)。
图2是示出根据上述实施例的芯片101中的组合处理装置的结构图。如图2中所示,组合处理装置20可以包括计算装置201、接口装置202、处理装置203和动态随机存取存储器(Dynamic Random Access Memory,DRAM)DRAM 204。
计算装置201可以配置成执行用户指定的操作,主要实现为单核智能处理器或者多核智能处理器。在一些操作中,其可以用于执行深度学习或机器学习方面的计算,并且还可以通过接口装置202与处理装置203进行交互,以共同完成用户指定的操作。在本公开的方案中,计算装置可以配置成执行经优化的神经网络模型的各类任务,例如本公开稍后将要描述的各种操作。
接口装置202可以用于在计算装置201与处理装置203间传输数据和控制指令。例如,计算装置201可以经由接口装置202从处理装置203中获取输入数据,写入计算装置201片上的存储装置。进一步,计算装置201可以经由接口装置202从处理装置203中获取控制指令,写入计算装置201片上的控制缓存中。替代地或可选地,接口装置202也可以读取计算装置201的存储装置中的数据并传输给处理装置203。
处理装置203作为通用的处理装置,执行包括但不限于数据搬运、对计算装置201的开启和/或停止等基本控制。根据实现方式的不同,处理装置203可以是中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics Processing Unit,GPU)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application SpecificIntegrated circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本公开的计算装置201而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算装置201和处理装置203整合共同考虑时,二者视为形成异构多核结构。根据本公开的方案,当处理装置203实施为通用处理器时,其可以执行用于优化神经网络模型的编译操作,以便将神经网络模型编译成由计算装置可执行的二进制指令序列。
DRAM 204用以存储待处理的数据,为DDR内存,大小通常为16G或更大,用于保存计算装置201和/或处理装置203的数据。
图3示出了计算装置201为单核的内部结构示意图。单核计算装置301用以处理计算机视觉、语音、自然语言、数据挖掘等输入数据,单核计算装置301包括三大模块:控制模块31、运算模块32及存储模块33。
控制模块31用以协调并控制运算模块32和存储模块33的工作,以完成深度学习的任务,其包括取指单元(Instruction Fetch Unit,IFU)311及指令译码单元(InstructionDecode Unit,IDU)312。取指单元311用以获取来自处理装置203的指令,指令译码单元312则将获取的指令进行译码,并将译码结果作为控制信息发送给运算模块32和存储模块33。
运算模块32包括向量运算单元321及矩阵运算单元322。向量运算单元321用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算;矩阵运算单元322负责深度学习算法的核心计算,即矩阵乘及卷积。存储模块33用来存储或搬运相关数据,包括神经元存储单元(Neuron RAM,NRAM)331、参数存储单元(Weight RAM,WRAM)332、直接内存访问模块(Direct Memory Access,DMA)333。NRAM 331用以存储输入神经元、输出神经元和计算后的中间结果;WRAM 332则用以存储深度学习网络的卷积核,即权值;DMA 333通过总线34连接DRAM 204,负责单核计算装置301与DRAM 204间的数据搬运。
图4示出了计算装置201为多核的内部结构示意图。多核计算装置41采用分层结构设计,多核计算装置41作为一个片上系统,其包括根据本公开的至少一个集群(cluster),每个集群又包括多个处理器核。换言之,多核计算装置41是以片上系统-集群-处理器核的层次所构成的。以片上系统的层级来看,如图4所示,多核计算装置41包括外部存储控制器401、外设通信模块402、片上互联模块403、同步模块404以及多个集群405。
外部存储控制器401可以有多个(如图中示例性地示出2个),其用以响应处理器核发出的访问请求,访问外部存储设备,也即本公开上下文中的片外存储器(例如图2中的DRAM 204),从而自片外读取数据或是将数据写入。外设通信模块402用以通过接口装置202接收来自处理装置203的控制信号,启动计算装置201执行任务。片上互联模块403将外部存储控制器401、外设通信模块402及多个集群405连接起来,用以在各个模块间传输数据和控制信号。同步模块404是一种全局同步屏障控制器(Global Barrier Controller,GBC),用以协调各集群的工作进度,确保信息的同步。本公开的多个集群405是多核计算装置41的计算核心。尽管在图4中示例性地示出4个集群,然而,随着硬件的发展,本公开的多核计算装置41还可以包括8个、16个、64个、甚至更多的集群405。在一个应用场景中,集群405可以用于高效地执行深度学习算法。
以集群的层级来看,如图4所示,每个集群405可以包括多个处理器核(IPU core)406及一个存储核(MEM core)407,其例如可以包括本公开上下文所描述的高速缓冲存储器(例如LLC)。
处理器核406在图中示例性地示出为4个,本公开不限制处理器核406的数量,并且其内部架构如图5所示。每个处理器核406类似于图3的单核计算装置301,并且同样可以包括三个模块:控制模块51(包括取指单元511和指令译码单元512)、运算模块52(包括向量运算单元521和矩阵运算单元522)和存储模块53(包括NRAM 531、WRAM 532、IODMA 533和MVDMA 534)。控制模块51、运算模块52及存储模块53的功用及结构大致与控制模块31、运算模块32及存储模块33相同,此处不再赘述。需特别说明的是,存储模块53可以包括输入/输出直接内存访问模块(Input/Output Direct Memory Access,IODMA)533、搬运直接内存访问模块(Move Direct Memory Access,MVDMA)534。IODMA 533通过广播总线409控制NRAM531/WRAM 532与DRAM 204的访存;MVDMA 534则用以控制NRAM 531/WRAM 532与存储单元(SRAM)408的访存。
回到图4,存储核407主要用以存储和通信,即存储处理器核406间的共享数据或中间结果、以及执行集群405与DRAM 204之间的通信、集群405间彼此的通信、处理器核406间彼此的通信等。在其他实施例中,存储核407可以具有标量运算的能力,用以执行标量运算。
存储核407可以包括静态随机存取存储器(Static Random-Access Memory,SRAM)408、广播总线409、集群直接内存访问模块(Cluster Direct Memory Access,CDMA)410及全局直接内存访问模块(Global Direct Memory Access,GDMA)411。在一个实施场景中,SRAM 408可以承担高性能数据中转站的角色。由此,在同一个集群405内不同处理器核406之间所复用的数据不需要通过处理器核406各自向DRAM 204获得,而是经SRAM 408在处理器核406间中转。进一步,存储核407仅需要将复用的数据从SRAM 408迅速分发给多个处理器核406即可,从而可以提高核间通信效率,并显著减少片上片外的输入/输出访问。
广播总线409、CDMA 410及GDMA 411则分别用来执行处理器核406间的通信、集群405间的通信和集群405与DRAM 204的数据传输。以下将分别说明。
广播总线409用以完成集群405内各处理器核406间的高速通信,此实施例的广播总线409支持核间通信方式包括单播、多播与广播。单播是指点对点(例如单一处理器核至单一处理器核)的数据传输,多播是将一份数据从SRAM 408传输到特定几个处理器核406的通信方式,而广播则是将一份数据从SRAM 408传输到所有处理器核406的通信方式,属于多播的一种特例。
CDMA 410用以控制在同一个计算装置201内不同集群405间的SRAM 408的访存。GDMA 411与外部存储控制器401协同,用以控制集群405的SRAM 408到DRAM 204的访存,或是将数据自DRAM 204读取至SRAM 408中。从前述可知,DRAM 204与NRAM 431或WRAM 432间的通信可以经由2种方式来实现。第一种方式是通过IODAM 433直接和DRAM 204与NRAM 431或WRAM 432通信;第二种方式是先经由GDMA 411使得数据在DRAM 204与SRAM 408间传输,再经过MVDMA 534使得数据在SRAM 408与NRAM 431或WRAM 432间传输。尽管第二种方式可能需要更多的元件参与且数据流较长,但实际上在部分实施例中,第二种方式的带宽远大于第一种方式,因此通过第二种方式来执行DRAM 204与NRAM 431或WRAM 432间的通信可能更为有效。可以理解的是,这里所描述的数据传输方式仅仅是示例性的,并且本领域技术人员根据本公开的教导,也可以根据硬件的具体布置来灵活地选择和适用各种数据传输方式。
在其他的实施例中,GDMA 411的功能和IODMA 533的功能可以整合在同一部件中。尽管本公开为了方便描述,将GDMA 411和IODMA 533视为不同的部件,然而对于本领域技术人员来说,只要其实现的功能以及达到的技术效果与本公开类似,即属于本公开的保护范围。进一步地,GDMA 411的功能、IODMA 533的功能、CDMA 410的功能、MVDMA 534的功能也可以由同一部件来实现。
根据上述结合各实施例的描述,本领域技术人员可以理解本公开也公开了一种电子设备或装置,其可以包括一个或多个上述板卡、一个或多个上述芯片和/或一个或多个上述组合处理装置。
根据不同的应用场景,本公开的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本公开的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。
进一步,本公开的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本公开方案的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
以上结合图1-图5对本公开的硬件架构及其内部结构进行了详细的描述。可以理解的是上述描述仅仅是示例性的而非限制性的。根据不同的应用场景和硬件规格,本领域技术人员也可以对本公开的板卡及其内部结构进行改变,而这些改变依然落入本公开的保护范围内。下面将对本公开的方案进行详细地描述。
图6是示出根据本公开实施例的一种集成电路装置600的结构示意图。为了说明集成电路装置600和外部存储器之间的关系,图6中还示出了外部存储器606。如图6中所示,集成电路装置600可以包括数据接口601、存储单元602和多个计算单元。多个计算单元例如可以为图6中所示的计算单元603、计算单元604…计算单元605。数据接口601可以配置用于在集成电路装置600和外部存储器606之间传递数据。在一个应用场景中,可以使用直接存储器访问(Direct Memory Access,“DMA”)接口作为前述的数据接口601,以便将外部存储器606的数据通过存储单元602发送至上述多个计算单元。
在一个实施例中,上述存储单元602可以配置成经由数据接口601从外部存储器606获取第一数据并发送至上述多个计算单元,并且其还可以存储从上述多个计算单元处接收到的多个计算结果。
基于不同的应用场景,上述计算单元的数目可以为大于或等于2的任一正整数,例如2个、3个或5个等,以便满足不同应用场景的运算需求。例如,当系统中有3个节点需要获取相应计算结果时,可以设置计算单元的数目为3,以通过该3个计算单元分别计算上述的3个节点的相应计算结果。与此同理,当系统中有5个节点需要获取相应计算结果时,则可设置5个计算单元。
在一个实施例中,上述多个计算单元中的每个计算单元可以配置成从存储单元602处接收来自于外部存储器606的第一数据。进一步,所述每个计算单元还可配置成根据第一数据和预先存储的第二数据进行计算以得到计算结果,并将计算结果发送至存储单元602。
上述的第一数据例如可以包括神经网络中的神经元数据,第二数据例如可以包括神经网络中的权值。进一步,第一数据和第二数据可以为向量、矩阵、多维(三维或四维及以上)数据。根据不同的数据结构(例如不同的数据摆放规则),本公开的第一数据和/或第二数据可以各自包括一个或多个数据块。在一个运算场景中,当本公开的集成电路装置用于矩阵计算时,第一数据和/或第二数据还可以是矩阵中一定大小的分块,以用于矩阵的分块并行计算。
在一个实施场景中,上述每个计算单元可以基于不同应用场景的需求,根据第一数据和预先存储的第二数据进行相应的计算任务以得到计算结果。计算任务例如可以为人工智能领域(例如神经网络)中所涉及的卷积运算、矩阵乘矩阵运算、矩阵乘向量运算、偏置运算、全连接运算、GEMM运算、GEMV运算、激活运算中的一种或任意组合。
为了更好地理解本公开的集成电路装置如何进行运算,下面以图7中所示的集成电路装置700为例来说明本公开实施例的数据处理方法。为了描述简便,图7中仅示例性地示出了集成电路装置700包括三个计算单元的情况。如图7中所示,三个计算单元分别为计算单元703、计算单元704和计算单元705。
假定集成电路装置700执行神经网络的相关计算,并且神经网络的输入数据为ina,其存储于外部存储器例如外部存储器706中。计算单元703中预先存储有第二数据b1,计算单元704中预先存储有第二数据b2,并且计算单元705中预先存储有第二数据b3。在执行运算的初始阶段,外部存储器706可以将输入数据ina经由数据接口701发送至存储单元702,作为用于向上述多个计算单元发送的第一数据。
计算单元703在获得第一数据ina后,可以根据第一数据ina和计算单元703中的第二数据b1执行相应计算任务(如卷积运算),得到计算结果c1。计算单元704在获得第一数据ina后,可以根据第一数据ina和计算单元704中的第二数据b2执行相应的计算任务(如矩阵乘矩阵运算),得到计算结果c2。与上述两个计算单元同理,计算单元705可以根据第一数据ina和其中预先存储的第二数据b3执行相应的计算任务(如GEMM运算),得到计算结果c3。本领域技术人员可以理解的是,上述每个计算单元中所执行的计算任务仅仅是示例性的而非限制性的,基于应用场景的不同,其还可执行前文所列举的其他计算任务,此处不再赘述。
由上述描述可见,本公开的集成电路装置可以将第一数据发送至存储单元并由其分别向多个计算单元进行发送,以供其进行计算。因此,可以减少集成电路装置通过I/O总线与外部存储器进行数据交互的数据吞吐量,从而克服I/O总线带宽的瓶颈问题。另外,本公开方案中的各个计算单元可并行执行数据接收以及数据计算,因此可保证每个计算单元的计算速度,从而保证集成电路装置的数据处理效率。
上述计算单元703、704和705在计算出计算结果c1、c2和c3后,还可进一步将这些计算结果发送至存储单元702进行存储,从而便于后续通过计算结果进行其他操作(例如计算)。可见,该种方式使得在调用计算结果时也只需与存储单元进行数据交互即可,从而减少了集成电路装置通过I/O总线与外部存储器进行数据交互的数据吞吐量,进一步克服I/O总线带宽瓶颈的问题。
通过上述描述可见,在本公开的集成电路装置中,接收到的数据(例如上述第一数据)和计算出的结果(例如上述计算结果)均可存储在存储单元中,从而使得在调用以上数据和结果进行相应操作时只需与存储单元交互而无需与外部存储器交互。因此,本公开方案可减少集成电路装置通过I/O总线与外部存储器进行数据交互的数据吞吐量,从而克服了I/O总线带宽瓶颈的问题。
在一个实施例中,上述每个计算单元可以包括主计算单元和多个从计算单元。基于此,主计算单元可以配置成从上述存储单元处接收前述第一数据,将第一数据划分成多个第一子数据后分别发送至对应的多个从计算单元。在一个实施场景中,第一子数据的划分数目可与该计算单元所包含的从计算单元的数目相关联,例如第一子数据的划分数目可与该计算单元所包含的从计算单元的数目相等,从而使得每个从计算单元可以分配到第一子数据以进行后续计算。
另外,上述主计算单元还可以配置成从对应的多个从计算单元处接收中间结果,根据多个中间结果计算得到前述计算结果并发送至前述存储单元,以便其存储。对应地,每个从计算单元可以配置成根据上述第一子数据和预先存储的第二子数据进行计算以得到上述中间结果,并将该中间结果发送至上述主计算单元。此处的第二子数据为对该计算单元中预先存储的第二数据进行划分所形成的多个子数据中之一,并且第二数据划分形成的子数据的数目可与该计算单元所包含的从计算单元的数目相关联。例如第二数据划分形成的子数据的数目可与该计算单元所包含的从计算单元的数目相等,以便每个从计算单元可以分配到第二子数据并根据其进行相应计算。
为了进一步说明计算单元的架构及功能,下面将以图8中所示的计算单元800为例来进行详细描述。由图8可以看出,计算单元800可以包括主计算单元801和多个从计算单元。多个从计算单元例如可以为图8中所示的从计算单元802、从计算单元803…从计算单元804。从计算单元的数目可以根据不同应用场景的需求设定为不同的数目,例如可以为2个、4个或5个等,本公开实施例对此不作限制。
基于此,主计算单元801可以配置成从前述存储单元处接收第一数据。例如计算单元800为上述图7中的计算单元703时,则其可以从存储单元702处接收第一数据ina。在接收到第一数据ina后,主计算单元801可以将其划分为与从计算单元的数目相等的多个第一子数据a11、a12…a13。接着,主计算单元801可以将多个第一子数据a11、a12…a13分别发送至从计算单元802、从计算单元803…从计算单元804。
假定计算单元800中预先存储的第二数据为b1。基于对第一数据ina的划分,相应地,也可以将第二数据b1划分为与从计算单元的数目相等的多个第二子数据b11、b12…b13,并将它们分别存储于对应的从计算单元中。在本实施例中,设定将第二子数据b11存储于从计算单元802,将第二子数据b12存储于从计算单元803…,将第二子数据b13存储于从计算单元804。
在执行完上述数据划分和传送等操作后,从计算单元802可以根据第一子数据a11和第二子数据b11执行相应的计算子任务,得到中间结果c11。从计算单元803可以根据第一子数据a12和第二子数据b12执行相应的计算子任务,得到中间结果c12。以此类推,从计算单元804可以根据第一子数据a13和第二子数据b13执行相应的计算子任务,得到中间结果c13。在得到多个中间结果后,从计算单元802、从计算单元803…从计算单元804可以将对应的中间结果c11、c12…c13发送至主计算单元801。接着,主计算单元801可以根据多个中间结果c11、c12…c13计算(例如求和计算)得到计算结果c1并可进一步将该计算结果c1发送至存储单元(例如图7中的存储单元702)中进行存储,以便后续操作使用。
根据上述描述可见,由于每个计算单元的中间结果也可以存储于该计算单元中而无需存储于外部存储器中,从而可以减少集成电路装置与外部存储器之间的数据交换,进而可以降低由于外部带宽限制而导致的I/O瓶颈。另外,由于将计算单元的计算任务划分为多个计算子任务,并分别由主计算单元和多个从计算单元执行,从而提高了数据的处理效率。
进一步,为了便于进行例如上述中间结果等数据的存储,在一个实施例中,上述每个计算单元还可以分别包括一个存储单元。该存储单元可以存储从主计算单元处接收到的中间结果。另外,除了可以存储中间结果外,存储单元还可以存储计算单元接收到的第一数据、预先存储的第二数据、对第一数据划分形成的多个第一子数据、对第二数据划分形成的多个第二子数据以及计算出的计算结果等,而上述第一数据、多个第一子数据以及计算结果均可由主计算单元处接收。
上文结合附图描述了计算单元的架构及数据处理流程。本公开方案还可根据上述计算单元的架构来类似地构建上述从计算单元的内部架构。例如,上述多个从计算单元中的每个也可以包括主计算子单元和多个从计算子单元。基于此,主计算子单元可以配置成从对应的主计算单元处接收前述第一子数据,将第一子数据划分成多个第一原子数据后分别发送至对应的多个从计算子单元。在一个实施场景中,第一原子数据的划分数目可与该从计算单元所包含的从计算子单元的数目相关联,例如第一原子数据的划分数目可与该从计算单元所包含的从计算子单元的数目相等,从而使得每个从计算子单元可以分配到第一原子数据以进行后续计算。
另外,上述主计算子单元还可以配置成从对应的多个从计算子单元处接收中间子结果,根据多个所述中间子结果计算得到前述中间结果并将其发送至对应的主计算单元,以便其根据该中间结果计算得到最终的计算结果。此处对应的主计算单元为向该主计算子单元发送第一子数据的主计算单元。对应地,每个从计算子单元可以配置成根据上述第一原子数据和预先存储的第二原子数据进行计算以得到上述中间子结果,并将该中间子结果发送至上述主计算子单元。此处的第二原子数据为对该从计算单元中预先存储的第二子数据进行划分所形成的多个原子数据中之一,并且第二子数据划分形成的原子数据的数目可与该从计算单元中所包含的从计算子单元的数目相关联。例如第二子数据划分形成的原子数据的数目可与该从计算单元中所包含的从计算子单元的数目相等,以便每个从计算子单元可以分配到第二原子数据,并根据其进行相应计算。
为了进一步说明从计算单元的架构及功能,下面将以图9中示出的从计算单元900为例来进行详细描述。由图9可以看出,从计算单元900可以包括主计算子单元901和多个从计算子单元。多个从计算单元例如可以为图9中所示的多个从计算子单元902、从计算子单元903…从计算子单元904。从计算子单元的数目可以根据不同应用场景的需求设定为不同的数目,例如可以为2个、4个或6个等,本公开实施例对此不作限制。
基于此,所述主计算子单元901可以配置成从对应的主计算单元处接收所述第一子数据。例如,从计算单元900为上述图8中的从计算单元802时,则其可以从主计算单元801处接收第一子数据a11。在接收到第一子数据a11后,主计算子单元901可以按照类似于前述计算单元的数据处理方式将所述第一子数据a11划分为与从计算子单元的数目相等的多个第一原子数据a111、a112…a113。接着,主计算子单元901可以将多个第一原子数据a111、a112…a113分别发送至多个从计算子单元902、从计算子单元903…从计算子单元904。
假定从计算单元900中预先存储的第二子数据为b11。基于对第一子数据a11的划分,可以将第二子数据b11划分为与从计算子单元的数目相等的多个第二原子数据b111、b112…b113,并将它们分别存储于对应的从计算子单元中。在本实施例中,设定将第二原子数据b111存储于从计算子单元902,将第二原子数据b112存储于从计算子单元903…,将第二原子数据b113存储于从计算子单元904。
在执行完上述数据划分和传送等操作后,从计算子单元902可以根据第一原子数据a111和第二原子数据b111执行相应的计算子任务,得到中间子结果c111。从计算子单元903可以根据第一原子数据a112和第二原子数据b112执行相应的计算子任务,得到中间子结果c112。以此类推,从计算子单元904可以根据第一原子数据a113和第二原子数据b113执行相应的计算子任务,得到中间子结果c113。在得到多个中间子结果后,从计算子单元902、从计算子单元903…从计算子单元904可以分别将对应的中间子结果c111、c112…c113发送至主计算子单元901。接着,主计算子单元901可以根据多个中间子结果c111、c112…c113计算得到中间结果c11并可进一步将该中间结果c11发送至对应的主计算单元(例如上述的主计算单元801),以便根据其进行计算得到最终的计算结果(例如c1)。
根据上述描述可见,由于本公开的每个从计算单元的中间子结果也可以存储于该从计算单元中而无需存储于外部存储器中,从而可以减少集成电路装置与外部存储器之间的数据交换,进而可以降低由于外部带宽限制而导致的I/O瓶颈。另外,由于将从计算单元的计算子任务进一步划分为多个二级计算子任务,并分别由主计算子单元和多个从计算子单元执行,从而提高了数据的处理效率。
进一步,为了便于进行例如上述中间子结果等数据的存储,在一个实施例中,上述每个从计算单元还可以分别包括一个存储单元。该存储单元可以存储从主计算子单元处接收到的中间子结果。另外,除了可以存储中间子结果外,存储单元还可以存储从计算单元接收到的第一子数据、预先存储的第二子数据、对第一子数据划分形成的多个第一原子数据、对第二子数据划分形成的多个第二原子数据以及计算出的中间结果等,而上述第一子数据、多个第一原子数据以及中间结果均可由主计算子单元处接收。
前文中结合各实施例对计算单元的各种数据处理进行了描述。在一个实施例中,为了实现可靠的数据处理,集成电路装置还可以包括控制单元。在一个实施例中,控制单元可以配置成控制每个计算单元中的主计算单元与多个从计算单元之间的信息交互以及主计算单元和/或多个从计算单元的数据计算。图10是示出根据本公开实施例的另一种集成电路装置1000的结构示意图。由图10可以看出,该实施例中的集成电路装置1000可以包括存储单元1001、多个计算单元以及控制单元1005。多个计算单元例如可以为图10中所示的计算单元1002、计算单元1003…计算单元1004。本实施例中的存储单元1001和计算单元的架构以及功能等可参照前述实施例,此处不再赘述。
在一个实施例中,控制单元1005可以配置成控制计算单元1002、计算单元1003…计算单元1004中的主计算单元与多个从计算单元之间的信息交互以及这些计算单元中的主计算单元和/或多个从计算单元的数据计算。为了描述简便,本实施例中仅以对计算单元1002的控制为例进行说明。对于计算单元1002,控制单元1005可以控制计算单元1002中的主计算单元1010将接收到的第一数据划分成多个第一子数据并将它们分别发送至从计算单元1011、从计算单元1012…从计算单元1013。另外,控制单元1005还可以控制主计算单元1010从上述多个从计算单元处接收中间结果,并根据多个中间结果计算得到计算结果。
进一步,控制单元1005还可以控制从计算单元1011、从计算单元1012…从计算单元1013根据接收到的第一子数据和预先存储的第二子数据进行计算得到中间结果,并控制将中间结果发送至主计算单元1010。由此可见,通过控制单元的控制可使计算单元内部进行可靠的信息交互以及数据计算,从而保证计算单元的可靠数据处理。
进一步,为了保证计算单元和存储单元两者之间的信息交互,以实现可靠的数据读取和存储,在一个实施例中,上述控制单元还可以配置成控制每个计算单元中的主计算单元从存储单元处接收第一数据以及将计算结果发送至存储单元。仍以图10中的计算单元1002为例来说,控制单元1005还可配置成控制该计算单元1002中的主计算单元1010从存储单元1001处接收第一数据以及将计算结果发送至存储单元1001,从而保证计算单元1002和存储单元1001两者之间进行可靠的数据读取和存储。
上述实施例中仅示例性地列举了控制单元的部分控制功能,在另一些实施例中,该控制单元还可控制计算单元的主计算单元与多个从计算单元之间的其他信息交互、数据计算以及与其他设备(例如存储单元)之间的数据读取和存储,从而进一步保证计算单元的可靠数据处理以及与外部设备之间可靠的数据读取和存储。
为了计算不同节点处(例如不同的第一数据输出通道上)的计算结果,在一个实施例中,多个计算单元中的每个可分别位于不同的第一数据输出通道上,以使所述多个计算单元之间不复用第二数据。基于此,本公开方案可以利用第一数据和各个数据输出通道(第一数据输出通道)上的第二数据进行计算以得到不同数据输出通道上的计算结果。假设计算神经网络中不同神经元输出通道上的神经元输出数据,并且设置第一数据为神经元数据,第二数据为与各个神经元输出通道对应的权值。在该情况下,多个计算单元可以分别根据接收到的神经元数据和各个神经元输出通道的对应权值进行计算,从而得到不同神经元输出通道上的神经元输出数据。由此可见,本公开的方案可用于计算具有多个数据输出通道的系统中的多个输出数据。
正如上述实施例中所提到的,本公开方案中第一数据可以为神经网络的神经元数据,第二数据可以为神经网络的权值。基于此,多个计算单元中的每个还可配置成根据神经元数据和预先存储的权值进行卷积计算以得到所述计算结果,从而满足相应应用场景的需求。由此可知,针对不同的应用场景,多个计算单元中的每个还可配置成根据神经元数据和预先存储的权值进行其他计算以得到所述计算结果,此处的其他计算例如可以为前文所提到的神经网络中所涉及的矩阵乘矩阵运算、矩阵乘向量运算、偏置运算、全连接运算、GEMM运算、GEMV运算、激活运算中的一种或任意组合,此处不再详述。
图11是示出根据本公开实施例的使用集成电路装置来执行计算的方法的简化流程图。根据前文的描述,可以理解这里的集成电路装置可以是结合前述各实施例所描述的集成电路装置,其具有所示出的内部连接关系并且支持附加的各类操作。
如图11所示,方法1100可以包括在步骤S1101处,从前述存储单元处接收来自于外部存储器的第一数据。接着,方法1100执行步骤S1102,根据第一数据和预先存储的第二数据进行计算以得到计算结果。最后,方法1100执行步骤S1103,将该计算结果发送至上述存储单元,以使其进行存储。
以上为了简明的目的,仅结合图11描述了本公开的计算方法。本领域技术人员根据本公开的公开内容也可以想到本方法可以包括更多的步骤,并且这些步骤的执行可以实现前文结合各实施例所描述的本公开的各类操作,此处不再赘述。
需要说明的是,为了简明的目的,本公开将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本公开的方案并不受所描述的动作的顺序限制。因此,依据本公开的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本公开所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本公开某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本公开对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本公开某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本公开的公开和教导,本领域技术人员可以理解本公开所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本公开中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本公开实施例所述方案的目的。另外,在一些场景中,本公开实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本公开的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本公开实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于U盘、闪存盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或处理装置)可以通过适当的硬件处理器来实现,例如CPU、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(ResistiveRandom Access Memory,RRAM)、动态随机存取存储器(Dynamic Random Access Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,EDRAM)、高带宽存储器(High BandwidthMemory,HBM)、混合存储器立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。
依据以下条款可更好地理解前述内容:
条款1、一种集成电路装置,包括:
数据接口,其配置用于在所述集成电路装置和外部存储器之间传递数据;
存储单元,其配置成:
经由所述数据接口从所述外部存储器获取第一数据并发送至多个计算单元;以及
存储从多个计算单元处接收到的多个计算结果;
多个计算单元,其中每个计算单元配置成:
从所述存储单元处接收来自于所述外部存储器的第一数据;以及根据所述第一数据和预先存储的第二数据进行计算以得到计算结果,并将所述计算结果发送至所述存储单元。
条款2、根据条款1所述的集成电路装置,其中每个计算单元包括主计算单元和多个从计算单元,其中:
主计算单元配置成:
从所述存储单元处接收所述第一数据;
将所述第一数据划分成多个第一子数据后分别发送至对应的多个从计算单元,其中所述第一子数据的划分数目与该计算单元所包含的从计算单元的数目相关联;
从对应的多个从计算单元处接收中间结果;以及
根据多个所述中间结果计算得到所述计算结果并发送至所述存储单元;
每个从计算单元配置成:
根据所述第一子数据和预先存储的第二子数据进行计算以得到所述中间结果,其中所述第二子数据为对该计算单元中预先存储的所述第二数据进行划分所形成的多个子数据中之一,并且所述第二数据划分形成的子数据的数目与该计算单元所包含的从计算单元的数目相关联;以及
将所述中间结果发送至所述主计算单元。
条款3、根据条款2所述的集成电路装置,其中所述多个从计算单元中的每个包括主计算子单元和多个从计算子单元,其中:
主计算子单元配置成:
从对应的所述主计算单元处接收所述第一子数据;
将所述第一子数据划分成多个第一原子数据后分别发送至对应的多个从计算子单元,其中所述第一原子数据的划分数目与该从计算单元所包含的从计算子单元的数目相关联;
从对应的多个从计算子单元处接收中间子结果;以及
根据多个所述中间子结果计算得到所述中间结果并将其发送至对应的主计算单元,其中所述对应的主计算单元为向所述主计算子单元发送所述第一子数据的主计算单元;
每个从计算子单元配置成:
根据所述第一原子数据和预先存储的第二原子数据进行计算以得到所述中间子结果,其中所述第二原子数据为对该从计算单元中预先存储的第二子数据进行划分所形成的多个原子数据中之一,并且所述第二子数据划分形成的原子数据的数目与该从计算单元中所包含的从计算子单元的数目相关联;以及
将所述中间子结果发送至所述主计算子单元。
条款4、根据条款2所述的集成电路装置,还包括控制单元,其配置成控制每个所述计算单元中的所述主计算单元与所述多个从计算单元之间的信息交互以及所述主计算单元和/或所述多个从计算单元的数据计算。
条款5、根据条款4所述的集成电路装置,所述控制单元还配置成控制每个所述计算单元中的所述主计算单元从所述存储单元处接收所述第一数据以及将计算结果发送至所述存储单元。
条款6、根据条款1-5中任一项所述的集成电路装置,其中所述多个计算单元中的每个分别位于不同的第一数据输出通道上,以使所述多个计算单元之间不复用所述第二数据。
条款7、根据条款1-5中任一项所述的集成电路装置,其中所述第一数据为神经网络的神经元数据,所述第二数据为神经网络的权值,并且所述多个计算单元中的每个还配置成根据所述神经元数据和预先存储的权值进行卷积计算以得到所述计算结果。
条款8、一种电子设备,包括根据条款1-7的任意一项所述的集成电路装置。
条款9、一种板卡,包括根据条款1-7的任意一项所述的集成电路装置。
条款10、一种使用集成电路装置来执行计算的方法,其中所述集成电路装置包括数据接口、存储单元和多个计算单元,所述数据接口用于在所述集成电路装置和外部存储器之间传递数据,存储单元用于经由所述数据接口从所述外部存储器获取第一数据并发送至多个计算单元;所述方法包括在每个计算单元处执行以下操作:
从所述存储单元处接收来自于所述外部存储器的第一数据;
根据所述第一数据和预先存储的第二数据进行计算以得到计算结果;以及
将所述计算结果发送至所述存储单元,以使其进行存储。
应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
虽然本文已经示出和描述了本公开的多个实施例,但对于本领域技术人员显而易见的是,这样的实施例只是以示例的方式来提供。本领域技术人员可以在不偏离本公开思想和精神的情况下想到许多更改、改变和替代的方式。应当理解的是在实践本公开的过程中,可以采用对本文所描述的本公开实施例的各种替代方案。所附权利要求书旨在限定本公开的保护范围,并因此覆盖这些权利要求范围内的等同或替代方案。
Claims (9)
1.一种集成电路装置,包括:
数据接口,其配置用于在所述集成电路装置和外部存储器之间传递数据;
存储单元,其配置成:
经由所述数据接口从所述外部存储器获取第一数据并发送至多个计算单元;以及
存储从多个计算单元处接收到的多个计算结果;
多个计算单元,其中每个计算单元配置成:
从所述存储单元处接收来自于所述外部存储器的第一数据;以及
根据所述第一数据和预先存储的第二数据进行计算以得到计算结果,并将所述计算结果发送至所述存储单元;
其中每个计算单元包括主计算单元和多个从计算单元,其中:
主计算单元配置成:
从所述存储单元处接收所述第一数据;
将所述第一数据划分成多个第一子数据后分别发送至对应的多个从计算单元,其中所述第一子数据的划分数目与该计算单元所包含的从计算单元的数目相关联;
从对应的多个从计算单元处接收中间结果;以及
根据多个所述中间结果计算得到所述计算结果并发送至所述存储单元;
每个从计算单元配置成:
根据所述第一子数据和预先存储的第二子数据进行计算以得到所述中间结果,其中所述第二子数据为对该计算单元中预先存储的所述第二数据进行划分所形成的多个子数据中之一,并且所述第二数据划分形成的子数据的数目与该计算单元所包含的从计算单元的数目相关联;以及
将所述中间结果发送至所述主计算单元;
其中所述多个从计算单元中的每个包括主计算子单元和多个从计算子单元,其中:
主计算子单元配置成:
从对应的所述主计算单元处接收所述第一子数据;
将所述第一子数据划分成多个第一原子数据后分别发送至对应的多个从计算子单元,其中所述第一原子数据的划分数目与该从计算单元所包含的从计算子单元的数目相关联;
从对应的多个从计算子单元处接收中间子结果;以及
根据多个所述中间子结果计算得到所述中间结果并将其发送至对应的主计算单元,其中所述对应的主计算单元为向所述主计算子单元发送所述第一子数据的主计算单元。
2.根据权利要求1所述的集成电路装置,每个从计算子单元配置成:
根据所述第一原子数据和预先存储的第二原子数据进行计算以得到所述中间子结果,其中所述第二原子数据为对该从计算单元中预先存储的第二子数据进行划分所形成的多个原子数据中之一,并且所述第二子数据划分形成的原子数据的数目与该从计算单元中所包含的从计算子单元的数目相关联;以及
将所述中间子结果发送至所述主计算子单元。
3.根据权利要求1所述的集成电路装置,还包括控制单元,其配置成控制每个所述计算单元中的所述主计算单元与所述多个从计算单元之间的信息交互以及所述主计算单元和/或所述多个从计算单元的数据计算。
4.根据权利要求3所述的集成电路装置,所述控制单元还配置成控制每个所述计算单元中的所述主计算单元从所述存储单元处接收所述第一数据以及将计算结果发送至所述存储单元。
5.根据权利要求1-4中任一项所述的集成电路装置,其中所述多个计算单元中的每个分别位于不同的第一数据输出通道上,以使所述多个计算单元之间不复用所述第二数据。
6.根据权利要求1-4中任一项所述的集成电路装置,其中所述第一数据为神经网络的神经元数据,所述第二数据为神经网络的权值,并且所述多个计算单元中的每个还配置成根据所述神经元数据和预先存储的权值进行卷积计算以得到所述计算结果。
7.一种电子设备,包括根据权利要求1-6的任意一项所述的集成电路装置。
8.一种板卡,包括根据权利要求1-6的任意一项所述的集成电路装置。
9.一种使用集成电路装置来执行计算的方法,其中所述集成电路装置包括数据接口、存储单元和多个计算单元,所述数据接口用于在所述集成电路装置和外部存储器之间传递数据,存储单元用于经由所述数据接口从所述外部存储器获取第一数据并发送至多个计算单元,每个计算单元包括主计算单元和多个从计算单元,所述多个从计算单元中的每个包括主计算子单元和多个从计算子单元;所述方法包括在每个计算单元处执行以下操作:
从所述存储单元处接收来自于所述外部存储器的第一数据;
根据所述第一数据和预先存储的第二数据进行计算以得到计算结果;以及
将所述计算结果发送至所述存储单元,以使其进行存储;
在每个主计算单元处执行以下操作:
从所述存储单元处接收所述第一数据;
将所述第一数据划分成多个第一子数据后分别发送至对应的多个从计算单元,其中所述第一子数据的划分数目与该计算单元所包含的从计算单元的数目相关联;
从对应的多个从计算单元处接收中间结果;以及
根据多个所述中间结果计算得到所述计算结果并发送至所述存储单元;
在每个从计算单元处执行以下操作:
根据所述第一子数据和预先存储的第二子数据进行计算以得到所述中间结果,其中所述第二子数据为对该计算单元中预先存储的所述第二数据进行划分所形成的多个子数据中之一,并且所述第二数据划分形成的子数据的数目与该计算单元所包含的从计算单元的数目相关联;以及
将所述中间结果发送至所述主计算单元;
在每个主计算子单元处执行以下操作:
从对应的所述主计算单元处接收所述第一子数据;
将所述第一子数据划分成多个第一原子数据后分别发送至对应的多个从计算子单元,其中所述第一原子数据的划分数目与该从计算单元所包含的从计算子单元的数目相关联;
从对应的多个从计算子单元处接收中间子结果;以及
根据多个所述中间子结果计算得到所述中间结果并将其发送至对应的主计算单元,其中所述对应的主计算单元为向所述主计算子单元发送所述第一子数据的主计算单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111062383.1A CN113742266B (zh) | 2021-09-10 | 2021-09-10 | 集成电路装置、电子设备、板卡和计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111062383.1A CN113742266B (zh) | 2021-09-10 | 2021-09-10 | 集成电路装置、电子设备、板卡和计算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113742266A CN113742266A (zh) | 2021-12-03 |
CN113742266B true CN113742266B (zh) | 2024-02-06 |
Family
ID=78737990
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111062383.1A Active CN113742266B (zh) | 2021-09-10 | 2021-09-10 | 集成电路装置、电子设备、板卡和计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113742266B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107704923A (zh) * | 2017-10-19 | 2018-02-16 | 珠海格力电器股份有限公司 | 卷积神经网络运算电路 |
CN108885714A (zh) * | 2017-11-30 | 2018-11-23 | 深圳市大疆创新科技有限公司 | 计算单元、计算系统以及计算单元的控制方法 |
US10325631B1 (en) * | 2018-03-12 | 2019-06-18 | Micron Technology, Inc. | Power management integrated circuit with dual power feed |
CN111199275A (zh) * | 2018-11-20 | 2020-05-26 | 上海登临科技有限公司 | 用于神经网络的片上系统 |
CN112686379A (zh) * | 2020-12-30 | 2021-04-20 | 上海寒武纪信息科技有限公司 | 集成电路装置、电子设备、板卡和计算方法 |
CN112988238A (zh) * | 2021-05-06 | 2021-06-18 | 成都启英泰伦科技有限公司 | 一种基于可扩展指令集cpu内核的扩展运算装置及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112465129B (zh) * | 2019-09-09 | 2024-01-09 | 上海登临科技有限公司 | 片内异构人工智能处理器 |
-
2021
- 2021-09-10 CN CN202111062383.1A patent/CN113742266B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107704923A (zh) * | 2017-10-19 | 2018-02-16 | 珠海格力电器股份有限公司 | 卷积神经网络运算电路 |
CN108885714A (zh) * | 2017-11-30 | 2018-11-23 | 深圳市大疆创新科技有限公司 | 计算单元、计算系统以及计算单元的控制方法 |
US10325631B1 (en) * | 2018-03-12 | 2019-06-18 | Micron Technology, Inc. | Power management integrated circuit with dual power feed |
CN111199275A (zh) * | 2018-11-20 | 2020-05-26 | 上海登临科技有限公司 | 用于神经网络的片上系统 |
CN112686379A (zh) * | 2020-12-30 | 2021-04-20 | 上海寒武纪信息科技有限公司 | 集成电路装置、电子设备、板卡和计算方法 |
CN112988238A (zh) * | 2021-05-06 | 2021-06-18 | 成都启英泰伦科技有限公司 | 一种基于可扩展指令集cpu内核的扩展运算装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113742266A (zh) | 2021-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112799726B (zh) | 数据处理装置、方法及相关产品 | |
CN111047022B (zh) | 一种计算装置及相关产品 | |
CN112686379B (zh) | 集成电路装置、电子设备、板卡和计算方法 | |
CN116185942A (zh) | 数据处理方法、装置、存储介质以及电子设备 | |
WO2023045446A1 (zh) | 计算装置、数据处理方法及相关产品 | |
WO2022134873A1 (zh) | 数据处理装置、数据处理方法及相关产品 | |
WO2024149112A1 (zh) | 卷积算子的编译方法及相关产品 | |
CN113918221A (zh) | 运算模块、流水优化方法及相关产品 | |
CN113469337B (zh) | 用于优化神经网络模型的编译方法及其相关产品 | |
CN113742266B (zh) | 集成电路装置、电子设备、板卡和计算方法 | |
CN113791996B (zh) | 集成电路装置、电子设备、板卡和计算方法 | |
CN114281558A (zh) | 多核处理器、用于多核处理器的方法及相应产品 | |
CN112948001A (zh) | 设定张量硬件配置的方法、可读存储介质及装置 | |
CN114281561A (zh) | 处理单元、用于处理单元的同步方法及相应产品 | |
CN114692844A (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN113469365B (zh) | 基于神经网络模型的推理和编译方法及其相关产品 | |
CN112232498B (zh) | 一种数据处理装置、集成电路芯片、电子设备、板卡和方法 | |
CN113792867B (zh) | 运算电路、芯片和板卡 | |
WO2022134872A1 (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN113469328B (zh) | 执行转数穿过的装置、板卡、方法及可读存储介质 | |
CN113469327B (zh) | 执行转数提前的集成电路装置 | |
WO2022111013A1 (zh) | 支援多种访问模式的设备、方法及可读存储介质 | |
WO2022001454A1 (zh) | 集成计算装置、集成电路芯片、板卡和计算方法 | |
CN117742566A (zh) | 访存处理装置、处理器、芯片、板卡和指令执行方法 | |
CN112486775A (zh) | 统计模块吞吐的方法及可读存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |