CN113791996B - 集成电路装置、电子设备、板卡和计算方法 - Google Patents

集成电路装置、电子设备、板卡和计算方法 Download PDF

Info

Publication number
CN113791996B
CN113791996B CN202111064063.XA CN202111064063A CN113791996B CN 113791996 B CN113791996 B CN 113791996B CN 202111064063 A CN202111064063 A CN 202111064063A CN 113791996 B CN113791996 B CN 113791996B
Authority
CN
China
Prior art keywords
data
computing
computing unit
stage
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
Application number
CN202111064063.XA
Other languages
English (en)
Other versions
CN113791996A (zh
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.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp Ltd
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 Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN202111064063.XA priority Critical patent/CN113791996B/zh
Publication of CN113791996A publication Critical patent/CN113791996A/zh
Application granted granted Critical
Publication of CN113791996B publication Critical patent/CN113791996B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (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中还示出了外部存储器605。如图6中所示的集成电路装置600可以包括数据接口601和多级计算单元,多级计算单元例如可以包括图6中所示的依次级联的计算单元602、计算单元603…计算单元604。数据接口601可以配置用于在集成电路装置和外部存储器605之间传递数据。在一个应用场景中,可以使用直接存储器访问(Direct Memory Access,“DMA”)接口作为前述的数据接口601,以便将外部存储器605的数据发送至多级计算单元中的第一级计算单元(例如图6中示例性明确示出的计算单元602)。
在一个实施例中,上述多级计算单元可以包括第一级计算单元(例如图6中的计算单元602)和多级下游计算单元(例如图6中的计算单元603…计算单元604)。基于不同的应用场景的需求,上述计算单元的级数可以为大于或等于2的任一正整数,例如2级、3级或5级等,以便充分利用内部资源进行运算操作,从而显著提高运算的效率。
基于上述结构,每级计算单元可以配置成接收第一数据,根据该第一数据和预先存储的第二数据进行计算以得到计算结果。在图6所示的实施例中,第一级计算单元602可以配置成经由所述数据接口601接收来自于所述外部存储器605的第一数据。多级下游计算单元中的每级可以配置成从上一级计算单元处接收第一数据,例如计算单元603可以从计算单元602处接收第一数据,计算单元604可以从其上一级下游计算单元处接收第一数据等。
对应地,所述多级计算单元中除最后一级计算单元604外的其他计算单元还可以配置成将所述第一数据发送至下一级计算单元,以便下一级计算单元根据第一数据和预先存储的第二数据进行相应计算。例如,计算单元602可以将第一数据发送至计算单元603,计算单元603可以将第一数据发送至计算单元604。
在一个实现场景中,每相邻两级计算单元之间可以通过两条DMA总线进行通信连接,并且两条DMA通信总线可以为全双工通信,带宽可达到例如128GB/s。
上述的第一数据例如可以包括神经网络中的神经元数据,第二数据例如可以包括神经网络中的权值数据。进一步,第一数据和第二数据可以为向量、矩阵、多维(三维或四维及以上)数据。根据不同的数据结构(例如不同的数据摆放规则),本公开的第一数据和/或第二数据可以各自包括一个或多个数据块。在一个运算场景中,当本公开的集成电路装置用于矩阵计算时,第一数据和/或第二数据还可以是矩阵中一定大小的分块,以用于矩阵的分块并行计算。
在一个实施场景中,上述每级计算单元可以基于不同应用场景的需求,根据第一数据和预先存储的第二数据进行相应的计算任务以得到计算结果。计算任务例如可以为人工智能领域(例如神经网络)中所涉及的卷积运算、矩阵乘矩阵运算、矩阵乘向量运算、偏置运算、全连接运算、GEMM运算、GEMV运算、激活运算中的一种或任意组合。
为了更好地理解本公开的集成电路装置如何进行运算,下面以图7中所示的集成电路装置700为例来说明本公开实施例的数据计算方法。为了描述简便,图7中仅示例性地示出了集成电路装置700包括三级计算单元的情况。如图7中所示,三级计算单元包括依次级联的计算单元702、计算单元703和计算单元704。在该三级计算单元中,计算单元702为第一级计算单元,计算单元703和计算单元704为下游计算单元。
假定集成电路装置700执行神经网络的相关计算,并且神经网络的输入数据为ina,其存储于外部存储器例如外部存储器705中。计算单元702中预先存储有第二数据b1,计算单元703中预先存储有第二数据b2,并且计算单元704中预先存储有第二数据b3。在执行运算的初始阶段,外部存储器705可以将输入数据ina经由数据接口701发送至计算单元702,作为该计算单元702接收的第一数据。计算单元702在获得第一数据ina后,可以根据第一数据ina和计算单元702中的第二数据b1执行相应计算任务(如卷积运算),得到计算结果c1。另外,为了便于计算单元703进行相应计算,计算单元702还将第一数据ina发送至计算单元703。
计算单元703在获得第一数据ina后,与计算单元702的计算方法类似地,其根据第一数据ina和计算单元703中的第二数据b2执行相应的计算任务(如矩阵乘矩阵运算),得到计算结果c2。另外,计算单元703也将第一数据ina发送至计算单元704,以便其根据第一数据ina和其中的第二数据b3执行相应计算(如GEMM运算),得到计算结果c3。本领域技术人员可以理解的是,上述每个计算单元中所执行的计算任务仅仅是示例性的而非限制性的,基于应用场景的不同,其还可执行前文所列举的其他计算任务,此处不再赘述。
上文结合图6和图7对本公开的集成电路装置的架构和功能进行了描述。根据本公开的方案,可以利用多级计算单元的多级架构来依次传递运算数据,从而显著减少了集成电路装置通过I/O总线与外部存储器进行数据交互的数据吞吐量并且克服了I/O总线带宽的瓶颈问题。另外,这样的架构和数据传输方式也充分利用了计算单元之间片上的高速带宽,从而提升了数据传输的运行效率。
为了进一步减少集成电路装置与外部存储器之间的数据交换,从而降低由于外部带宽限制而导致的I/O瓶颈问题,上述每级计算单元还可以包括主计算单元和多个从计算单元。基于此,主计算单元可以配置成接收第一数据,并将所述第一数据发送至对应的多个从计算单元。第一级计算单元的主计算单元经由所述数据接口接收来自于所述外部存储器的第一数据,每级下游计算单元的主计算单元从上一级计算单元处接收所述第一数据。另外,前述其他计算单元(多级计算单元中除最后一级计算单元外的计算单元)的主计算单元还可配置成将第一数据发送至下一级计算单元。
进一步,主计算单元还可以配置成从对应的多个从计算单元处接收中间结果,并根据多个所述中间结果计算得到所述计算结果。对应地,多个从计算单元中的每个从计算单元可以配置成根据所述第一数据和预先存储的第二数据进行计算以得到中间结果,并将所述中间结果发送至所述主计算单元。
下面以图8中所示的计算单元800为例来说明计算单元的架构及功能。由图8可以看出,计算单元800可以包括主计算单元801、从计算单元802、从计算单元803…从计算单元804。从计算单元的数目可以根据不同应用场景的需求设定为不同的数目,例如可以为三个、四个或七个等,本公开实施例对此不作限制。
基于此,主计算单元801可以配置成接收第一数据(例如前述的输入数据ina),并将所述第一数据ina划分为与从计算单元的数目匹配(例如相等)的多个第一子数据a11、a12…a13。接着,主计算单元801分别将第一子数据a11、a12…a13发送至从计算单元802、从计算单元803…从计算单元804。
关于第一数据的来源,假设计算单元800为第一级计算单元,则其可以经由所述数据接口接收来自于所述外部存储器的第一数据ina。假设计算单元800为下游计算单元,则其可以从上一级计算单元处接收所述第一数据ina。
假定计算单元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。
在计算单元800不是集成电路装置的多级计算单元的最后一级时,主计算单元801还可将第一数据ina发送至下一级计算单元,以使下一级计算单元根据该第一数据ina和其预先存储的第二数据进行计算得到计算结果。
根据上述描述可见,由于每个计算单元的中间结果可以存储于对应的计算单元中而无需存储于外部存储器中,从而可以减少与外部存储器之间的数据交换,进而进一步降低了由于外部带宽限制而导致的I/O瓶颈。另外,由于将计算单元的计算任务划分为多个计算子任务,从而加快了数据计算的速度,提高了数据处理效率。
上述实施例中仅示例性的描述了将第一数据和第二数据划分为与从计算单元的数目相等的第一子数据和第二子数据的情况。本领域技术人员可以理解的是,在某种应用场景中,还可以其他方式划分第一数据和第二数据,甚至不对该两个数据进行划分的情况。简言之,本公开方案还可以仅使用多个从计算单元中的一个(例如图8中的从计算单元802)来根据第一数据和第二数据执行计算而得到该计算单元的计算结果。
上文结合附图描述了计算单元的架构及数据计算流程。为了进一步减少与外部存储器之间的数据交换,上述多个从计算单元中的每个也可以包括主计算子单元和多个从计算子单元。基于此,所述主计算子单元可以配置成从对应的所述主计算单元处接收所述第一数据,并将所述第一数据发送至所述多个从计算子单元。另外,主计算子单元还可以配置成从多个从计算子单元处接收中间子结果,根据多个所述中间子结果计算得到所述中间结果,并将所述中间结果发送至对应的主计算单元。其中所述对应的主计算单元为向所述主计算子单元发送所述第一数据的主计算单元。对应地,多个从计算子单元中的每个从计算子单元可以配置成根据所述第一数据和预先存储的第二数据进行计算以得到所述中间子结果,并将所述中间子结果发送至所述主计算子单元。
基于不同的应用场景,主计算子单元可以按照多种传输路径传输给多个从计算子单元。例如,在一个实施场景中,所述主计算子单元可以配置成按照所述第一数据的输出通道将所述第一数据进行广播,以使所述多个从计算子单元获取所述第一数据。在另一个实施场景中,所述主计算子单元还可以配置成按照输出所述第一数据的各个维度将所述第一数据发送至所述多个从计算子单元或将所述第一数据进行广播,以使所述多个从计算子单元获取所述第一数据。
下面本公开将以图9中示出的从计算单元900为例来对从计算单元的架构及功能进行说明。由图9可以看出,从计算单元900可以包括主计算子单元901和多个从计算子单元902、从计算子单元903…从计算子单元904。从计算子单元的数目可以根据不同应用场景的需求设定为不同的数目,例如可以为两个、四个或六个等,本公开实施例对此不作限制。
基于此,所述主计算子单元901可以配置成从对应的所述主计算单元处接收所述第一数据(例如前述的第一子数据a11),并按照类似于前述计算单元的数据处理方式将所述第一子数据a11划分为与从计算子单元的数目匹配(例如相等)的多个二级子数据a111、a112…a113。接着,主计算子单元901可以将多个二级子数据a111、a112…a113分别发送至多个从计算子单元902、从计算子单元903…从计算子单元904。
假定从计算单元900中预先存储的第二子数据为b11。基于此,本公开的方案可以将第二子数据b11划分为与从计算子单元的数目对应(例如相等)的多个二级子数据b111、b112和b113,并将它们分别存储于对应的从计算子单元中。在本实施例中,设定将二级子数据b111存储于从计算子单元902,将二级子数据b112存储于从计算子单元903…,将二级子数据b113存储于从计算子单元904。
在在执行完上述数据划分和传送等操作后,从计算子单元902可以根据二级子数据a111和二级子数据b111执行相应的计算子任务(上述从计算单元900所执行的计算子任务的二级计算子任务),得到中间子结果c111。从计算子单元903可以根据二级子数据a112和二级子数据b112执行相应的计算子任务(上述从计算单元900所执行的计算子任务的二级计算子任务),得到中间子结果c112。以此类推,从计算子单元904可以根据二级子数据a113和二级子数据b113执行相应的计算子任务(上述从计算单元900所执行的计算子任务的二级计算子任务),得到中间子结果c113。在得到多个中间子结果后,从计算子单元902、从计算子单元903…从计算子单元904可以分别将对应的中间子结果c111、c112…c113发送至主计算子单元901。接着,主计算子单元901可以根据多个所述中间子结果c111、c112…c113计算得到所述中间结果c11以及将其发送至对应的主计算单元。假设图9中的从计算单元900为图8中的从计算单元802,则与其对应的主计算单元可以为图8中的主计算单元801。
根据上述描述可见,由于本公开的每个从计算单元的中间子结果也可以存储于对应的从计算单元中而无需存储于外部存储器中,从而可以进一步减少与外部存储器之间的数据交换,进而进一步降低了由于外部带宽限制而导致的I/O瓶颈。另外,由于将从计算单元的计算子任务进一步划分为多个二级计算子任务,从而进一步加快了数据计算的速度,进而进一步提高了数据处理的效率。
上述实施例中仅示例性的描述了将第一子数据和第二子数据划分为与从计算子单元的数目相等的二级子数据的情况。本领域技术人员可以理解的是,在某种应用场景中,还可以其他方式划分第一子数据和第二子数据,甚至不对该两个数据进行划分的情况。简言之,本公开方案还可以仅使用多个从计算子单元中的一个(例如图9中的从计算子单元902)来根据第一子数据和第二子数据执行计算而得到该计算单元的中间结果。
为了便于后续的调用并进行相关计算,在一个实施例中,多个所述主计算子单元中的每个还可配置成将所述中间结果发送至所述外部存储器,以使其进行存储。
前文中结合各实施例对计算单元的各种信息交互进行了描述。本领域技术人员可以理解的是,要实现上述信息的可靠交互,多级计算单元中的每级还可以包括控制单元。控制单元可以配置成控制该级计算单元中的所述主计算单元与所述多个从计算单元之间的信息交互。图10中示出了计算单元1000的示意架构图。由该图可以看出,计算单元1000可以包括主计算单元1001、多个从计算单元1002、从计算单元1003…从计算单元1004。计算单元1000还包括控制单元1005,控制单元1005可以控制所述主计算单元1001向多个从计算单元1002、从计算单元1003…从计算单元1004发送第一数据(或者为前文实施例所描述的第一子数据)。相应地,控制单元1005还可以控制从计算单元1002、从计算单元1003…从计算单元1004向主计算单元1001反馈中间结果等,从而可实现主计算单元1001以及各个从计算单元之间的可靠信息交互。
图11是示出根据本公开实施例的使用集成电路装置来执行计算的方法的简化流程图。根据前文的描述,可以理解这里的集成电路装置可以是结合前述各实施例所描述的集成电路装置,其具有所示出的内部连接关系并且支持附加的各类操作。
如图11所示,方法1100可以包括在步骤S1101处,接收第一数据。其中第一级计算单元经由数据接口接收来自于所述外部存储器的第一数据,多级下游计算单元中的每级从上一级计算单元处接收第一数据。另外,多级计算单元中除最后一级计算单元外的其他计算单元还可将第一数据发送至下一级计算单元。接着,方法1100执行步骤S1102,根据第一数据和预先存储的第二数据进行计算以得到计算结果。
以上为了简明的目的,仅结合图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、根据条款3所述的集成电路装置,其中多个所述主计算子单元中的每个还配置成将所述中间结果发送至所述外部存储器,以使其进行存储。
条款5、根据条款3或4中任一项所述的集成电路装置,其中所述主计算子单元还配置成按照所述第一数据的输出通道将所述第一数据进行广播,以使所述多个从计算子单元获取所述第一数据。
条款6、根据条款3或4中任一项所述的集成电路装置,其中所述主计算子单元还配置成按照输出所述第一数据的各个维度将所述第一数据发送至所述多个从计算子单元或将所述第一数据进行广播,以使所述多个从计算子单元获取所述第一数据。
条款7、根据条款2-4中任一项所述的集成电路装置,其中所述多级计算单元中的每级还包括:
控制单元,其配置成控制该级计算单元中的所述主计算单元与所述多个从计算单元之间的信息交互。
条款8、一种电子设备,包括根据条款1-7的任意一项所述的集成电路装置。
条款9、一种板卡,包括根据条款1-7的任意一项所述的集成电路装置。
条款10、一种使用集成电路装置来执行计算的方法,其中所述集成电路装置包括数据接口和多级计算单元,所述数据接口用于在所述集成电路装置和外部存储器之间传递数据,其中所述多级计算单元包括依次级联的第一级计算单元和多级下游计算单元,所述方法包括在每级计算单元处执行以下操作:
接收第一数据,其中所述第一级计算单元经由数据接口接收来自于所述外部存储器的第一数据,多级下游计算单元中的每级从上一级计算单元处接收第一数据,并且所述多级计算单元中除最后一级计算单元外的其他计算单元还将所述第一数据发送至下一级计算单元;以及
根据所述第一数据和预先存储的第二数据进行计算以得到计算结果。
应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
虽然本文已经示出和描述了本公开的多个实施例,但对于本领域技术人员显而易见的是,这样的实施例只是以示例的方式来提供。本领域技术人员可以在不偏离本公开思想和精神的情况下想到许多更改、改变和替代的方式。应当理解的是在实践本公开的过程中,可以采用对本文所描述的本公开实施例的各种替代方案。所附权利要求书旨在限定本公开的保护范围,并因此覆盖这些权利要求范围内的等同或替代方案。

Claims (10)

1.一种集成电路装置,包括:
数据接口,其配置用于在所述集成电路装置和外部存储器之间传递数据;以及
多级计算单元,其包括依次级联的第一级计算单元和多级下游计算单元,并且其中每级计算单元配置成:
接收第一数据,其中所述第一级计算单元配置成经由所述数据接口接收来自于所述外部存储器的第一数据,多级下游计算单元中的每级配置成从上一级计算单元处接收第一数据,并且所述多级计算单元中除最后一级计算单元外的其他计算单元还配置成将所述第一数据发送至下一级计算单元;以及
根据所述第一数据和预先存储的第二数据进行计算以得到计算结果;其中每级计算单元包括主计算单元和多个从计算单元,其中:
主计算单元配置成:
接收第一数据,并将所述第一数据发送至对应的多个从计算单元,其中第一级计算单元的主计算单元经由所述数据接口接收来自于所述外部存储器的第一数据,每级下游计算单元的主计算单元从上一级计算单元处接收所述第一数据,所述其他计算单元的主计算单元还配置成将所述第一数据发送至下一级计算单元;以及
从对应的多个从计算单元处接收中间结果,并根据多个所述中间结果计算得到所述计算结果。
2.根据权利要求1所述的集成电路装置,其中每个从计算单元配置成:
根据所述第一数据和预先存储的第二数据进行计算以得到中间结果;以及
将所述中间结果发送至所述主计算单元。
3.根据权利要求2所述的集成电路装置,其中所述多个从计算单元中的每个包括主计算子单元和多个从计算子单元,其中:
所述主计算子单元配置成:
从对应的所述主计算单元处接收所述第一数据,并将所述第一数据发送至所述多个从计算子单元;以及
从多个从计算子单元处接收中间子结果,根据多个所述中间子结果计算得到所述中间结果,并将所述中间结果发送至对应的主计算单元,其中所述对应的主计算单元为向所述主计算子单元发送所述第一数据的主计算单元;
每个从计算子单元配置成:
根据所述第一数据和预先存储的第二数据进行计算以得到所述中间子结果;以及
将所述中间子结果发送至所述主计算子单元。
4.根据权利要求3所述的集成电路装置,其中多个所述主计算子单元中的每个还配置成将所述中间结果发送至所述外部存储器,以使其进行存储。
5.根据权利要求3或4中任一项所述的集成电路装置,其中所述主计算子单元还配置成按照所述第一数据的输出通道将所述第一数据进行广播,以使所述多个从计算子单元获取所述第一数据。
6.根据权利要求3或4中任一项所述的集成电路装置,其中所述主计算子单元还配置成按照输出所述第一数据的各个维度将所述第一数据发送至所述多个从计算子单元或将所述第一数据进行广播,以使所述多个从计算子单元获取所述第一数据。
7.根据权利要求2-4中任一项所述的集成电路装置,其中所述多级计算单元中的每级还包括:
控制单元,其配置成控制该级计算单元中的所述主计算单元与所述多个从计算单元之间的信息交互。
8.一种电子设备,包括根据权利要求1-7的任意一项所述的集成电路装置。
9.一种板卡,包括根据权利要求1-7的任意一项所述的集成电路装置。
10.一种使用集成电路装置来执行计算的方法,其中所述集成电路装置包括数据接口和多级计算单元,所述数据接口用于在所述集成电路装置和外部存储器之间传递数据,其中所述多级计算单元包括依次级联的第一级计算单元和多级下游计算单元,其中每级计算单元包括主计算单元和多个从计算单元,所述方法包括在每级计算单元处执行以下操作:
接收第一数据,其中所述第一级计算单元经由数据接口接收来自于所述外部存储器的第一数据,多级下游计算单元中的每级从上一级计算单元处接收第一数据,并且所述多级计算单元中除最后一级计算单元外的其他计算单元还将所述第一数据发送至下一级计算单元;以及
根据所述第一数据和预先存储的第二数据进行计算以得到计算结果;
其中,每级主计算单元接收第一数据,并将所述第一数据发送至对应的多个从计算单元,其中第一级计算单元的主计算单元经由所述数据接口接收来自于所述外部存储器的第一数据,每级下游计算单元的主计算单元从上一级计算单元处接收所述第一数据,所述其他计算单元的主计算单元还配置成将所述第一数据发送至下一级计算单元;以及从对应的多个从计算单元处接收中间结果,并根据多个所述中间结果计算得到所述计算结果。
CN202111064063.XA 2021-09-10 2021-09-10 集成电路装置、电子设备、板卡和计算方法 Active CN113791996B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111064063.XA CN113791996B (zh) 2021-09-10 2021-09-10 集成电路装置、电子设备、板卡和计算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111064063.XA CN113791996B (zh) 2021-09-10 2021-09-10 集成电路装置、电子设备、板卡和计算方法

Publications (2)

Publication Number Publication Date
CN113791996A CN113791996A (zh) 2021-12-14
CN113791996B true CN113791996B (zh) 2024-02-06

Family

ID=79183191

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111064063.XA Active CN113791996B (zh) 2021-09-10 2021-09-10 集成电路装置、电子设备、板卡和计算方法

Country Status (1)

Country Link
CN (1) CN113791996B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110462640A (zh) * 2017-04-04 2019-11-15 海露科技有限公司 神经网络处理器中基于可配置且可编程的滑动窗口的存储器访问
US10606775B1 (en) * 2018-12-28 2020-03-31 Micron Technology, Inc. Computing tile
CN111199275A (zh) * 2018-11-20 2020-05-26 上海登临科技有限公司 用于神经网络的片上系统
CN112686379A (zh) * 2020-12-30 2021-04-20 上海寒武纪信息科技有限公司 集成电路装置、电子设备、板卡和计算方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109375951B (zh) * 2016-04-27 2020-10-09 中科寒武纪科技股份有限公司 一种用于执行全连接层神经网络正向运算的装置和方法
US11270197B2 (en) * 2019-03-12 2022-03-08 Nvidia Corp. Efficient neural network accelerator dataflows

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110462640A (zh) * 2017-04-04 2019-11-15 海露科技有限公司 神经网络处理器中基于可配置且可编程的滑动窗口的存储器访问
CN111199275A (zh) * 2018-11-20 2020-05-26 上海登临科技有限公司 用于神经网络的片上系统
US10606775B1 (en) * 2018-12-28 2020-03-31 Micron Technology, Inc. Computing tile
CN112686379A (zh) * 2020-12-30 2021-04-20 上海寒武纪信息科技有限公司 集成电路装置、电子设备、板卡和计算方法

Also Published As

Publication number Publication date
CN113791996A (zh) 2021-12-14

Similar Documents

Publication Publication Date Title
CN109543832B (zh) 一种计算装置及板卡
CN109522052B (zh) 一种计算装置及板卡
CN112799726B (zh) 数据处理装置、方法及相关产品
CN111047022B (zh) 一种计算装置及相关产品
CN110059797B (zh) 一种计算装置及相关产品
CN112686379B (zh) 集成电路装置、电子设备、板卡和计算方法
WO2023071238A1 (zh) 计算图的编译、调度方法及相关产品
CN109753319B (zh) 一种释放动态链接库的装置及相关产品
CN109711540B (zh) 一种计算装置及板卡
CN110059809B (zh) 一种计算装置及相关产品
CN113918221A (zh) 运算模块、流水优化方法及相关产品
CN111047021B (zh) 一种计算装置及相关产品
CN113791996B (zh) 集成电路装置、电子设备、板卡和计算方法
CN113469337B (zh) 用于优化神经网络模型的编译方法及其相关产品
CN113742266B (zh) 集成电路装置、电子设备、板卡和计算方法
WO2022134873A1 (zh) 数据处理装置、数据处理方法及相关产品
CN111368967A (zh) 一种神经网络计算装置和方法
CN111078625B (zh) 片上网络处理系统和片上网络数据处理方法
CN114281558A (zh) 多核处理器、用于多核处理器的方法及相应产品
CN113469365B (zh) 基于神经网络模型的推理和编译方法及其相关产品
CN111078624A (zh) 片上网络处理系统和片上网络数据处理方法
WO2022001454A1 (zh) 集成计算装置、集成电路芯片、板卡和计算方法
WO2022111013A1 (zh) 支援多种访问模式的设备、方法及可读存储介质
WO2022134872A1 (zh) 数据处理装置、数据处理方法及相关产品
WO2022001496A1 (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