CN114115995A - 人工智能芯片及运算板卡、数据处理方法及电子设备 - Google Patents

人工智能芯片及运算板卡、数据处理方法及电子设备 Download PDF

Info

Publication number
CN114115995A
CN114115995A CN202010877800.7A CN202010877800A CN114115995A CN 114115995 A CN114115995 A CN 114115995A CN 202010877800 A CN202010877800 A CN 202010877800A CN 114115995 A CN114115995 A CN 114115995A
Authority
CN
China
Prior art keywords
data
format
continuous
buffer
conversion circuit
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
Application number
CN202010877800.7A
Other languages
English (en)
Inventor
何轲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202010877800.7A priority Critical patent/CN114115995A/zh
Publication of CN114115995A publication Critical patent/CN114115995A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Image Processing (AREA)

Abstract

一种AI芯片及运算板卡、数据处理方法及电子设备,用于提高AI芯片的处理效率。该AI芯片包括:依次连接的第一流水线模块和运算电路,第一流水线模块包括转换电路及与转换电路连接的多个缓冲器;其中,转换电路用于获取待转换的第一特征的数据,将第一特征的数据转换成第二特征的数据,第二特征的数据为运算电路进行运算时所适用的数据;并将第二特征数据交替式写入多个缓冲器;运算电路用于当多个缓冲器中一个缓冲器写满时,从已写满的缓冲器中读取第二特征的数据,对第二特征的数据进行运算,得到结果数据。本申请实施例中,增加硬件专用模块支持数据的转换功能,简化软件侧的算子调用,提升整体性能和简化调用开销和流程。

Description

人工智能芯片及运算板卡、数据处理方法及电子设备
技术领域
本申请涉及人工智能芯片领域,尤其涉及人工智能芯片及运算板卡、数据处理方法及电子设备。
背景技术
当前,随着智能设备的普及,人工智能(artificial intelligence,AI)技术迅速发展。人工智能是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用***。
作为人工智能领域重要的一个研究方向,通过深度学习(例如卷积神经网络)对高数量的样本进行不断地训练,获取样本具有的特征信息。这些特征信息在接触到一个新的测试样本时可以对照其中的特征信息进行识别,模型应用于机器中,使得机器获得类似人的识别能力。在样本训练,信息提取等阶段会涉及非常大的计算量,在这个运算这个过程中需要AI芯片对大量的数据进行运算。
如图1所示,AI芯片包括数据预处理模块(data preprocess)、缓存器(Cache)和运算电路。其中,由于运算电路对待处理的数据有要求,例如,对于数据的格式有要求(如需要数据为5D格式)。因此,数据预处理模块在进行数据转换时,需要软件介入调用多个算子,将多个算子映射到数据预处理模块,数据处理模块对数据进行转换。在软件侧,这些算子在调用时被视为额外的算子调用,增加软件侧算子调用次数,从而增加软件侧的执行开销,影响整体性能。并且通过调用算子映射到数据处理模块的方式中,数据处理模块需要对所有数据进行转换后,运算电路再进行计算,运算电路执行的过程中有等待的时间,芯片运算效率降低。
发明内容
本申请实施例提供了一种人工智能芯片及运算板卡、数据处理方法及电子设备,用于提高人工智能芯片的处理效率。
第一方面,本申请实施例提供了一种人工智能芯片,该AI芯片包括:依次连接的第一流水线模块和运算电路,第一流水线模块包括转换电路及与转换电路连接的多个缓冲器;其中,转换电路用于获取待转换的第一特征的数据,将第一特征的数据转换成第二特征的数据,第二特征的数据为运算电路进行运算时所适用的数据;转换电路将第二特征数据交替式写入多个缓冲器,其中,交替式写入多个缓冲器是指,将数据写入第一个缓冲器,当该缓冲器写满后,将数据继续写入第二个缓冲器,直到最后一个缓冲器被写满,然后,切换状态,再将数据写入第一个缓冲器,将数据写入第二个缓冲器等的循环操作;运算电路用于当多个缓冲器中一个缓冲器写满时,从已写满的缓冲器中读取第二特征的数据,对第二特征的数据进行运算,得到结果数据,并输出结果数据。
本示例中,在AI芯片中增加第一流水线模块,第一流水线模块中包括转换电路和多个缓冲器,例如,该转换电路用于支持连续转换和/或格式转换功能。本申请中,增加硬件专用模块,支持数据的转换功能,转换电路将第二特征数据交替式写入多个缓冲器,多个缓冲器用于实现乒乓缓存机制。当多个缓冲器中的一个缓冲器写满时,运算电路就可以启动,对读取到的数据进行运算。本申请中,不需要多次调用算子,来对数据进行预处理满足运算电路对于数据的要求,简化软件侧的算子调用,提升整体性能和简化调用开销和流程。并且,转换电路将转换之后的数据交替式写入多个缓冲器,当一个缓冲器写满后,运算电路直接从已写满的缓冲器读取数据,基于乒乓缓存机制实现细流水线操作,运算电路和转换电路并行处理数据,运算电路无需等待时间,相对于传统方法中,需要将所有数据进行预处理后,再进行运算的方法,本申请中,极大的提高芯片的处理效率。
在一个可选的实现方式中个,转换电路为第一格式转换电路,缓冲器为转换格式缓冲器;芯片还包括与运算电路连接的第二流水线模块,第二流水线模块包括第二格式转换电路及与第二格式转换电路连接的多个目标格式缓冲器;其中,第一格式转换电路用于将第一格式的数据转换成第二格式的数据,并将第二格式的数据交替式写入多个转换格式缓冲器;运算电路用于当多个转换格式缓冲器中一个转换格式缓冲器写满时,从转换格式缓冲器中读取第二格式数据,对第二格式数据进行处理,得到第二格式的结果数据;第二格式转换电路,用于将第二格式的结果数据转换成第一格式的结果数据,并将第一格式的结果数据交替式写入多个目标格式缓冲器。
本示例中,增加了两个流水线模块,第一流水线模块包括第一格式转换电路,第二流水线模块包括第二格式转换电路,增加了支持格式转换的专用电路来实现格式转换功能。不需要调用格式转换算子来实现格式转换,简化软件侧的算子调用,提升整体性能和简化调用开销和流程。基于乒乓缓存机制实现细流水线操作,第一格式转换电路,运算电路和第二格式转换电路并行处理数据,运算电路无需等待时间,极大的提高芯片的处理效率。
在一个可选的实现方式中,第一流水线模块还包括连续转换电路及与连续转换电路连接的多个连续数据缓冲器;其中,连续转换电路用于将不连续的数据转换成连续的数据,并将连续的数据交替式写入多个连续数据缓冲器;第一格式转换电路还用于当多个连续数据缓冲器中一个连续数据写满时,从已写满的连续数据缓冲器读取连续的数据,连续的数据为第一格式的数据,将第一格式的数据转换成第二格式的数据。
本示例中,第一流水线模块还包括连续转换电路,当待转换的数据为不连续的数据,且为第一格式的数据时,通过连续转换电路将不连续的数据转换成连续的数据,不需要调用连续转换算子来实现数据连续性转换,简化软件侧的算子调用,提升整体性能和简化调用开销和流程。基于乒乓缓存机制实现细流水线操作,连续转换电路和第一格式转换电路并行处理数据,运算电路无需等待时间,极大的提高芯片的处理效率。
在一个可选的实现方式中,转换电路为连续转换电路,缓冲器为连续数据缓冲器;其中,连续转换电路用于将不连续的数据转换成连续的数据,并将连续的数据交替式写入多个连续数据缓冲器;运算电路用于当多个连续数据缓冲器中一个连续数据写满时,从已写满的连续数据缓冲器中读取连续的数据,对连续的数据进行运算,得到结果数据,并输出结果数据。
本示例中,当待转换的数据为不连续的数据时,通过连续转换电路将不连续的数据转换成连续的数据,不需要调用连续转换算子来实现数据连续性转换,简化软件侧的算子调用,提升整体性能和简化调用开销和流程。基于乒乓缓存机制实现细流水线操作,连续转换电路和运算电路并行处理数据,运算电路无需等待时间,极大的提高芯片的处理效率。
在一个可选的实现方式中,运算电路包括卷积计算单元和/或向量计算单元。
在一个可选的实现方式中,芯片还包括第一缓存器和第二缓存器;其中,第一缓存器,用于将待转换的数据输出至第一流水线模块;第二缓存器,用于缓存结果数据。本申请中,增加了第一缓存器和第二缓存器,第一流水线模块从第一缓存器读取数据,而第二流水线模块将结果数据输出至第二缓存器,相对于传统方法,本申请减少了与外部存储器交互的次数,从而提升***性能。
第二方面,本申请提供了一种数据处理方法,该方法应用于人工智能芯片,芯片包括依次连接的第一流水线模块和运算电路,第一流水线模块包括转换电路及与转换电路连接的多个缓冲器,方法还包括:转换电路获取待转换的第一特征的数据,将第一特征的数据转换成第二特征的数据,第二特征的数据为运算电路进行运算时所适用的数据;并将第二特征数据交替式写入多个缓冲器;当多个缓冲器中一个缓冲器写满时,运算电路从已写满的缓冲器中读取第二特征的数据,对第二特征的数据进行运算,得到结果数据;并输出结果数据。
本示例中,在AI芯片中增加第一流水线模块,第一流水线模块中包括转换电路和多个缓冲器,例如,该转换电路用于支持连续转换和/或格式转换功能。本申请中,增加硬件专用模块,支持数据的转换功能,转换电路将第二特征数据交替式写入多个缓冲器,多个缓冲器用于实现乒乓缓存机制。当多个缓冲器中的一个缓冲器写满时,运算电路就可以启动,对读取到的数据进行运算。本申请中,不需要多次调用算子,来对数据进行预处理来满足运算电路对于数据的要求,简化软件侧的算子调用,提升整体性能和简化调用开销和流程。并且,转换电路将转换之后的数据交替式写入多个缓冲器,当一个缓冲器写满后,运算电路直接从已写满的缓冲器读取数据,基于乒乓缓存机制实现细流水线操作,运算电路和转换电路并行处理数据,运算电路无需等待时间,相对于传统方法中,需要将所有数据进行预处理后,再进行运算的方法,本申请中,极大的提高芯片的处理效率。
在一个可选的实现方式中,转换电路为第一格式转换电路,缓冲器为转换格式缓冲器;芯片还包括与运算电路连接的第二流水线模块,第二流水线模块包括第二格式转换电路及与第二格式转换电路连接的多个目标格式缓冲器;第一格式转换电路将第一格式的数据转换成第二格式的数据;并第二格式数据交替式写入多个转换格式缓冲器;运算电路从转换格式缓冲器中读取第二格式数据,对第二格式数据进行处理,得到第二格式的结果数据;第二格式转换电路将第二格式的结果数据转换成第一格式的结果数据,并将第一格式的结果数据交替式写入多个目标格式缓冲器。
本示例中,增加了两个流水线模块,第一流水线模块包括第一格式转换电路,第二流水线模块包括第二格式转换电路,即增加了支持格式转换的专用电路来实现格式转换功能。不需要调用格式转换算子来实现格式转换,简化软件侧的算子调用,提升整体性能和简化调用开销和流程。基于乒乓缓存机制实现细流水线操作,第一格式转换电路,运算电路和第二格式转换电路并行处理数据,运算电路无需等待时间,极大的提高芯片的处理效率。
在一个可选的实现方式中,第一流水线模块还包括连续转换电路及与连续转换电路连接的多个连续数据缓冲器;该方法还可以包括:连续转换电路将不连续的数据转换成连续的数据,并将连续的数据交替式写入多个连续数据缓冲器;当多个连续数据缓冲器中一个连续数据写满时,第一格式转换电路从已写满的连续数据缓冲器读取连续的数据,连续的数据为第一格式的数据。
本示例中,第一流水线模块还包括连续转换电路,当待转换的数据为不连续的数据,且为第一格式的数据时,通过连续转换电路将不连续的数据转换成连续的数据,不需要调用连续转换算子来实现数据连续性转换,简化软件侧的算子调用,提升整体性能和简化调用开销和流程。基于乒乓缓存机制实现细流水线操作,连续转换电路和第一格式转换电路并行处理数据,运算电路无需等待时间,极大的提高芯片的处理效率。
在一个可选的实现方式中,转换电路为连续转换电路,缓冲器为连续数据缓冲器;连续转换电路将不连续的数据转换成连续的数据,并将连续的数据交替式写入多个连续数据缓冲器;当多个连续数据缓冲器中一个连续数据缓冲器写满时,运算电路从已写满的连续数据缓冲器中读取连续的数据,对连续的数据进行运算,得到结果数据,并输出结果数据。
本示例中,当待转换的数据为不连续的数据时,通过连续转换电路将不连续的数据转换成连续的数据,不需要调用连续转换算子来实现数据连续性转换,简化软件侧的算子调用,提升整体性能和简化调用开销和流程。基于乒乓缓存机制实现细流水线操作,连续转换电路和运算电路并行处理数据,运算电路无需等待时间,极大的提高芯片的处理效率。
第三方面,本申请实施例还提供了一种人工智能运算板卡,其特征在于,包括通信接口及如上述第一方面任一项所述的人工智能芯片;其中,所述通信接口用于连接主机。
第四方面,本申请实施例还提供了一种电子设备,包括:处理器,与所述处理器耦合的存储器,及上述第二方面的人工智能运算板卡,所述处理器及所述存储器通过通信接口与所述人工智能运算板卡进行数据传输。
第五方面,本申请提供了一种芯片***,该芯片***包括处理器及上述第一方面的人工智能芯片,处理器及与所述人工智能芯片进行数据传输。在一种可能的设计中,芯片***还包括存储器,存储器,用于保存人工智能芯片待转换的数据,及人工智能芯片运算后的结果数据。
附图说明
图1为传统方法中人工智能芯片的一个示例的结构示意图;
图2为本申请实施例中人工智能芯片的一个示例的结构示意图;
图3为本申请实施例中人工智能芯片的另一个示例的结构示意图;
图4为本申请实施例中一种数据处理方法的一个示例的步骤流程示意图;
图5为本申请实施例中一种数据处理方法的另一个示例的步骤流程示意图;
图6为本申请实施例中一种数据处理方法的另一个示例的步骤流程示意图;
图7为本申请实施例中人工智能芯片的另一个示例的结构示意图;
图8为本申请实施例中一种数据处理方法的另一个示例的步骤流程示意图;
图9为本申请实施例中一种数据处理方法的另一个示例的步骤流程示意图;
图10为本申请实施例中人工智能芯片的另一个示例的结构示意图;
图11为本申请实施例中一种数据处理方法的另一个示例的步骤流程示意图;
图12为本申请实施例中一种数据处理方法的另一个示例的步骤流程示意图;
图13为本申请实施例中一种人工智能运算板卡的一个示例的结构示意图;
图14为本申请实施例中一种电子设备的一个示例的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。本申请中出现的术语“和/或”,可以是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本申请中字符“/”,一般表示前后关联对象是一种“或”的关系。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。
为了更好的理解本申请,首先对本申请中涉及的词语进行说明。
数据的格式(format):多维数据通过多维数组存储。通常软件中数据格式一般为4D格式,4D格式是指数据通过四维数组保存。例如,卷积神经网络的特征图用四维数组保存,四个维度分别为批量大小(batch,N)、特征图高度(height,H)、特征图宽度(width,W)以及特征图通道(channels,C)。由于数据只能线性存储,因为这四个维度有对应的顺序。不同深度学习框架会按照不同的顺序存储特征图数据。例如,排列顺序为[batch,channels,height,width],即NCHW格式(一种4D格式)。或者,排列顺序为[batch,height,width,channels],即NHWC格式(一种4D格式)。由于芯片设计中,其矩阵计算单元的大小要求有要求,例如,能支持16x16的矩阵运算。运算电路可以对5D格式(如6D,或其他格式等)的数据进行运算,可以理解为5D格式携带了硬件信息。其中,5D格式指采用NC1HWC0的五维数据格式。其中,五维度的“C0”与数据对齐强相关,示例性的,“C0,C1”是从“NCHW”的“C”维度进行了拆分,“C1=C/C0”,如果不能整除,则最后需要补零来对齐。其大致的拆解过程为:(1)将“NCHW”数据在C维度进行分割,分出C1份NHWC0。(2)将C1份“NHWC0”在内存中连续排列,变成了“NC1HWC0”。
数据的连续性:运算电路在进行数据运算时,对于待运算的数据有一定的要求,要求数据是连续的。这里的连续是指元素的顺序连续。可以理解为,张量(tensor)底层一维数组元素的存储顺序与tensor按行优先一维展开的元素顺序是否一致,若一致,则数据是连续的,若不一致,则认为数据是不连续的。tensor多维数组底层实现是使用一块连续内存的1维数组,Tensor在元信息里保存了多维数组的形状,在访问元素时,通过多维度索引转化成1维数组相对于数组起始位置的偏移量(步长stride)即可找到对应的数据,这个偏移量称为步长(stride)。在某些Tensor操作之后,相邻的元素位置发生变化,即数据不连续了。举一个例子:一个二维数组t如下:
Figure BDA0002653152420000061
将上述二维数组t按行优先转化成一维数组,该一维数组形式如下:
[0,1,2,3,4,5,6,7,8],式(2)
若上述二维数组的实际存储形式与式(2)一致,则数据是连续的。访问矩阵中的下一个元素通过偏移1个位置(stride=1)来实现。
若上述二维数组的实际存储形式为如下所示:
[0,3,6,1,4,7,2,5,8],式(3)
上述式(3)与式(2)不一致,则数据是不连续的。访问矩阵中的下一个元素通过偏移2个位置(stride=2)来实现。
第一特征的数据:“特征”包括格式和/或连续性。第一特征的数据可以为第一格式的数据(如4D)格式的数据。或者,第一特征的数据可以为非连续的数据。或者,第一特征的数据可以为,第一格式的数据且非连续的数据。
第二特征的数据:“特征”包括格式和/或连续性。第一特征的数据可以为第二格式的数据(如5D)格式的数据。或者,第二特征的数据可以为连续的数据。或者,第二特征的数据可以为第一格式的数据且连续的数据。
本申请实施例提供了一种AI芯片,AI芯片包括依次连接的第一流水线模块和运算电路,第一流水线模块包括转换电路及与转换电路连接的多个缓冲器(buffer)。运算电路在进行数据运算时,对于待运算的数据有一定的要求。示例性的,对于数据的格式有要求和/或对于数据的连续性有要求。转换电路将第二特征数据交替式写入多个缓冲器。其中,交替式写入多个缓冲器是指,将数据写入第一个缓冲器,当该缓冲器写满后,将数据继续写入第二个缓冲器,直到最后一个缓冲器被写满,然后,切换状态,再将数据写入第一个缓冲器,将数据写入第二个缓冲器等。例如,当缓冲器的数量为2个时,当第一缓冲器写满后,将数据写入第二缓冲器,然后切换状态,当第二缓冲器写满时,将数据写入第一缓冲器。当多个缓冲器中一个缓冲器写满时,转换电路从已写满的缓冲器中读取第二特征的数据,对第二特征的数据进行运算,得到结果数据,并输出结果数据。例如,当第一缓冲器写满时,运算电路从第一缓冲器读取数据,当第二缓冲器写满时,运算电路从第二缓冲器读取数据。
本申请实施例中,在AI芯片中增加第一流水线模块,第一流水线模块中包括转换电路和多个缓冲器,例如,该转换电路用于支持连续转换和/或格式转换的功能。本申请中,增加硬件专用模块,数据转换功能,转换电路将第二特征数据交替式写入多个缓冲器,多个缓冲器用于实现乒乓缓存机制。当多个缓冲器中的一个缓冲器写满时,运算电路就可以启动,对读取到的数据进行运算。本申请中,不需要多次调用算子,来对数据进行预处理来满足运算电路对于数据的要求,简化软件侧的算子调用,提升整体性能和简化调用开销和流程。并且,转换电路将转换之后的数据交替式写入多个缓冲器,当一个缓冲器写满后,运算电路直接从已写满的缓冲器读取数据,基于乒乓缓存机制实现细流水线操作,运算电路和转换电路并行处理数据,运算电路无需等待时间,相对于传统方法中,需要将所有数据进行预处理后,再进行运算的方法,本申请中,极大的提高芯片的处理效率。
本申请实施例中,可以根据转换电路的具体功能可以包括不同的实现方式。示例性的,1、当数据为非连续的数据,且数据格式为第一格式(如4D格式)时,转换电路可以为数据格式转换电路,第一流水线模块还包括连续转换电路。数据格式转换电路用于对数据的格式进行转换,连续转换电路用于将不连续的数据转换成连续的数据。2、当数据为连续的数据时,仅需要对数据格式进行转换,此种实现方式中,转换电路为格式转换电路。3、当数据为非连续的数据时,仅需要对数据进行连续性转换,不需要进行格式转换,此时,转换电路为连续转换电路。
示例一,当数据为非连续的数据,且数据的格式为第一格式的数据时,第一流水线模块包括格式转换电路和连续转换电路。请参阅图2所示,AI芯片包括依次连接的第一流水线模块201,运算电路202,第二流水线模块203。可选的,AI芯片还可以包括第一缓存器204和第二缓存器205。第一缓存器204的一端与存储器206连接,第一缓存器204的另一端与第一流水线模块201连接。第二缓存器205的一端与第二流水线模块203连接,第二缓存器205的另一端与存储器206连接。其中,该存储器206可以为外部存储器,也可以为AI芯片内部存储器。该存储器可以为动态随机存取存储器(dynamic random access memory,DRAM)。例如,存储器包括但不限于同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍速率同步动态随机存取存储器(dual data rate SDRAM,DDR SDRAM)等。
请参阅图3所示,第一流水线模块201包括第一格式转换电路2012及与其连接的多个转换格式缓冲器,连续转换电路2011及与其连接的多个连续数据缓冲器。第二流水线模块203包括第二格式转换电路2031及与第二格式转换电路2031连接的多个目标格式缓冲器。第一格式转换电路2012的存储格式需要根据运算电路对于数据的存储格式决定。
示例性的,该多个连续数据缓冲器至少包括第一连续数据缓冲器(记做“1-buffer_0”)20111和第二连续数据缓冲器(记做“1-buffer_1”)20112。
多个转换格式缓冲器至少包括第一转换格式缓冲器(记做“2-buffer_0”)20121和第二转换格式缓冲器(记做“2-buffer_1”)20122。
多个目标格式缓冲器至少包括第一目标格式缓冲器(记做“3-buffer_0”)20311,第一目标格式缓冲器(记做“3-buffer_1”)20312。
本示例中,连续数据缓冲器的数量、转换格式缓冲器的数量和目标格式缓冲器的数量仅以2个为例进行说明,在实际应用中,连续数据缓冲器的数量及大小、转换格式缓冲器的数量及大小,转换格式缓冲器的数量及大小均不限定。每个缓冲器的大小及数量可以根据运算电路的处理能力来确定。本示例中,多个连续数据缓冲器组成乒乓缓存。多个转换格式缓冲器组成乒乓缓存。多个目标格式缓冲器也组成乒乓缓存。通过乒乓缓存机制,AI芯片的数据处理实现细粒度流水线处理,即不需要等一个电路(如连续转换电路)将全部的数据都处理完,再继续下一个电路(如格式转换电路)的处理的流程。第一格式转换电路,运算电路和第二格式转换电路在大部分时间保持并行计算的状态,极大的提升了AI芯片的处理效率。
其中,连续转换电路2011,用于从第一缓存器读取数据,将不连续的数据转换成连续的数据,并将连续的数据交替式写入多个连续数据缓冲器。
AI芯片可以接收上位机发送的指令,根据该指令进行参数配置。将配置参数发送至连续转换电路2011、第一格式转换电路2012及第二格式转换电路2031。例如,配置连续转换电路2011的步长参数(如stride=2),连续转换电路2011根据该步长将不连续的数据转换成连续的数据。例如,请参阅上述式(3),若不连续的数据为:[0,3,6,1,4,7,2,5,8],连续转换电路2011需要将该不连续的数据转换成连续的数据,连续转换电路2011根据步长参数(如步长为2)读取数据,读取到的数据为[0,1,2,3,4,5,6,7,8]。
第一格式转换电路2012,用于从连续数据缓冲器读取第一格式的数据,将第一格式的数据转换成第二格式的数据,并将第二格式的数据交替式写入多个转换格式缓冲器。例如,第一格式转换电路2012根据格式参数(如5D参数)将第一格式的数据(如4D格式的数据)转换为第二格式的数据(如5D格式的数据),运算电路中数据的存储格式为第二格式的数据(如5D格式的数据)。将第一格式的数据转换成第二格式的数据的目的是:第二格式的数据适用于运算电路的数据存储格式,从而使运算电路可以对第二格式的数据进行运算。
运算电路202,当多个转换格式缓冲器中一个转换格式缓冲器写满时,从转换格式缓冲器中读取第二格式数据,对第二格式数据进行处理,得到第二格式的结果数据。
该运算电路可以包括多个处理单元(process engine,PE)。可选的,该处理单元可以为卷积计算单元,和/或,向量计算单元。
第二格式转换电路2031,用于从运算电路接收第二格式的结果数据,将第二格式的结果数据转换成第一格式的结果数据,并将第一格式的结果数据交替式写入多个目标格式缓冲器。该第二格式转换电路2031将第二格式的结果数据转换成第一格式的结果数据的目的是:输出的数据的格式可以适用于后续流程的数据格式。
第二缓存器,用于从目标格式缓冲器读取第一格式的结果数据,并输出该第一格式的结果数据。由于数据的处理均以张量为单位,经过转换后,数据占用空间均大于原始数据空间,所以通常会超过缓存器的容量,因此传统方法中,经过数据预处理后的数据通常需要写回到存储器中,增加了与存储器数据交互的次数。而本申请中,连续转换电路连接了多个连续数据缓冲器,当处理了一部分数据(即第一个连续数据缓冲器写满时)后,就可以启动下一个电路(第一格式转换电路)。同理,当一个转换格式缓冲器写满时,就启动运算电路,连续转换电路,第一格式转换电路,运算电路和第二格式转换电路都可以并行处理数据,因此需要缓存到缓存器中的数据量不会很大。本申请中,增加了第一缓存器和第二缓存器,第一流水线模块从第一缓存器读取数据,而第二流水线模块将结果数据输出至第二缓存器,相对于传统方法,减少了与存储器交互的次数,从而提升***性能。
需要说明的是,为了区分第一流水线模块(也可以称为前流水线模块)中的格式转换电路和第二流水线模块(也可以称为后流水线模块)中的格式转换电路,将第一流水线模块中的格式转换电路称为“第一格式转换电路”,将第二流水线模块中的格式转换电路称为“第二格式转换电路”。其中,第一格式转换电路用于将第一格式(如4D)的数据转换成第二格式(如5D)的数据,第二格式转换电路用于将第二格式(如5D)的数据转换成第一格式(如4D)的数据。为了区分第一格式转换电路的缓冲器和第一格式转换电路的缓冲器,将第一格式电路的缓冲器称为“转换格式缓冲器”,将第二格式电路的缓冲器称为“目标格式缓冲器”。
本示例中,AI芯片包括第一流水线模块,运算电路和第二流水线模块。其中,第一流水线模块包括连续转换电路及与其连接的多个连续数据缓冲器、第一格式转换电路及与其连接的多个转换格式缓冲器和运算电路。第二流水线模块包括第二格式转换电路及与其连接的多个目标格式缓冲器。首先,相对于传统方法,例如,在动态图架构的AI框架(如PyTorch)适配过程中,需要***大量的格式转换算子,软件侧需要考虑硬件实现的存储格式,增加了软件开发的难度和复杂度。本申请中,数据的连续性转换通过连续转换电路实现,数据的格式转换通过第一格式转换电路和第二格式转换电路实现,在软件侧减少算子调用次数,提高***整体性能。其次,在硬件实现方面,通过乒乓缓存机制,可以实现细粒度流水线的数据处理机制,各个电路并行处理,不需要等待时间,并且,总的执行时间与单纯进行运算(如卷积计算)的时间基本保持一致,各个电路保持并行计算的状态,提高芯片的数据处理效率。最后,对于第一流水线模块和第二流水线模块中的乒乓缓存结构,仅是针对部分数据进行缓冲,每个缓冲器的面积并不大,即可使用较少的面积开销可保证流水线机制的实行。
本实施例中,请参阅图4所示,一种数据处理方法,该方法应用于上述图2和图3对应的AI芯片,各个电路执行的步骤流程可以如下所示:
步骤401、连续转换电路将不连续的数据转换成连续的数据,并将连续的数据交替式写入多个连续数据缓冲器。
具体的,请参阅图5所示。
S10、连续转换电路从第一缓存器(cache_1)读取数据,将连续的第一格式数据写入到第一连续数据缓冲器(1-buffer_0)中。当第一连续数据缓冲器(1-buffer_0)写满时,启动第一格式转换电路。
S11、连续转换电路将连续的第一格式数据继续写入第二连续数据缓冲器(1-buffer_1)。继续执行S14。
步骤402、当多个连续数据缓冲器中一个连续数据写满时,第一格式转换电路从已写满的连续数据缓冲器读取连续的数据,连续的数据为第一格式的数据。
S12、第一格式转换电路从第一连续数据缓冲器(1-buffer_0)读取第一格式数据,将第一格式数据转换成第二格式数据,并将第二格式数据写入第一转换格式缓冲器(2-buffer_0)中。继续执行S13。
需要说明的是,上述步骤S11和步骤S12没有时序的前后关系,步骤S11和步骤S12同步执行,即连续转换电路和第一格式转换电路可以同步进行数据处理,不需要连续转换电路将所有的数据都读取完,再进行格式转换,连续转换电路读取一部分数据,即当第一1-buffer_0写满时,就可以启动运算电路,第一格式转换电路可以对“1-buffer_0”中的数据进行处理,而连续转换电路继续读取数据,连续转换电路和第一格式转换电路可以同步进行数据处理,从而提高AI芯片数据处理的效率。
步骤403、第一格式转换电路将第一格式的数据转换成第二格式的数据;并第二格式数据交替式写入多个转换格式缓冲器。
S13、当第二连续数据缓冲器(1-buffer_1)写满时,启动第一格式转换电路。第一格式转换电路从第二连续数据缓冲器(1-buffer_1)读取第一格式数据,将第一格式数据转换成第二格式数据,并将第二格式数据写入第二转换格式缓冲器(2-buffer_1)中。
S14、连续转换电路将连续的第一格式数据继续写入第一连续数据缓冲器(1-buffer_0)。
需要说明的是,上述步骤S13和步骤S14没有时序的前后关系,步骤S13和步骤S14同步执行,即连续转换电路和第一格式转换电路可以同步进行数据处理。
重复执行上述S11-S14。连续转换电路将读取的连续的第一格式数据交替的写入1-buffer_0和1-buffer_1中,第一格式转换电路从1-buffer_0和1-buffer_1中交替读取连续的第一格式数据,实现细粒度的流水线机制。
S15、当第一转换格式缓冲器(2-buffer_0)写满时,启动运算电路。运算电路从第一转换格式缓冲器(2-buffer_0)读取第二格式的数据,然后,运算电路对第二格式的数据进行运算操作(如进行卷积操作),得到结果数据(该结果数据为第二格式的数据)。继续执行S17。
S16、第一格式转换电路继续将第二格式的数据写入第二转换格式缓冲器(2-buffer_1)。继续执行S18。
需要说明的是,上述步骤S15和步骤S16没有时序的前后关系,步骤S15和步骤S16同步执行,即第一格式转换电路和运算电路可以同步进行数据处理,不需要第一格式转换电路将所有的数据都处理完,再进行运算操作,第一格式转换电路转换一部分数据,即当第一转换格式缓冲器(2-buffer_0)写满时,就可以启动运算电路,运算电路可以对“2-buffer_0”中的数据进行处理,而第一格式转换电路继续转换数据操作,第一格式转换电路和运算电路可以同步进行数据处理,从而提高AI芯片数据处理的效率。
步骤404、运算电路从转换格式缓冲器中读取第二格式数据,对第二格式数据进行处理,得到第二格式的结果数据;
S17、当第二转换格式缓冲器(2-buffer_1)写满时,启动运算电路,运算电路从第二转换格式缓冲器(2-buffer_1)读取第二格式的数据,然后,运算电路对第二格式的数据进行运算操作(如进行卷积操作),得到结果数据(该结果数据为第二格式的数据)。继续执行S20。
S18、第一格式转换电路继续将第二格式的数据写入第一转换格式缓冲器(2-buffer_0)。
需要说明是,上述步骤S17和S18同步执行,不限定先后顺序。本示例中,第一流水线模块包括多个转换格式缓冲器,读写过程在多个转换格式缓冲器中交替进行,不需要第一格式转换电路将所有的数据都转换完成后,再将第二格式的数据输出到运算电路,运算电路再进行卷积操作。而是当第一转换格式缓冲器写满后,就可以启动运算电路,运算电路就可以从第一转换格式缓冲器读取第一格式的数据,对第一格式的数据进行卷积操作,同步的,第一格式转换电路继续对第一格式的数据进行转换操作,也就是说,第一格式转换电路和运算电路同步执行数据操作,从而实现细粒度的流水线操作,节省AI芯片数据处理时间,提高数据处理效率。
重复执行上述步骤S15-步骤S18,一直到数据处理完毕。
然后,对第二流水线模块中的第二格式转换电路进行数据处理的过程进行说明:
步骤405、第二格式转换电路将第二格式的结果数据转换成第一格式的结果数据,并将第一格式的结果数据交替式写入多个目标格式缓冲器。
具体的,请参阅图6所示。
S20、运算电路将第二格式的结果数据输出到第二格式转换电路,并启动第二格式转换电路。
S21、第二格式转换电路对第二格式的结果数据进行转换,得到第一格式的结果数据,将第一格式的结果数据写入第一目标格式缓冲器(3-buffer_0)。
S23、当第一目标格式缓冲器(3-buffer_0)写满时,启动第二换存储器(cache_2),第二存储器从第一目标格式缓冲器(3-buffer_0)读取第一格式的结果数据。继续执行S26。
S24、第二格式转换电路将第一格式的结果数据写入第二目标格式缓冲器(3-buffer_1)。继续执行S25。
步骤S23和步骤S24同步执行。
S25、当第二目标格式缓冲器(3-buffer_1)写满时,第二格式转换电路将第一格式的结果数据写入第一目标格式缓冲器(3-buffer_0)。
S26、第二存储器从第二目标格式缓冲器(3-buffer_1)读取第一格式的结果数据。
步骤S25和步骤S26同步执行。
重复执行S21-S26,直到数据处理完成。
本示例中,首先,数据的连续性转换通过连续转换电路实现,数据的格式转换通过第一格式转换电路和第二格式转换电路实现,在软件侧减少算子调用次数,提高***整体性能。其次,在硬件实现方面,通过乒乓缓存机制,可以实现细粒度流水线的数据处理机制,各个电路不需要等待时间,并且,总的执行时间与单纯进行运算(如卷积计算)的时间基本保持一致,各个电路保持并行计算的状态,提高芯片的数据处理效率。最后,对于第一流水线模块和第二流水线模块中的乒乓缓存结构,仅是针对部分数据进行缓冲,每个缓冲器的面积并不大,即可使用较少的面积开销可保证流水线机制的实行。
示例二,当AI芯片获取到的数据为连续的数据时,仅需要对数据格式进行转换,此种实现方式中,转换电路为格式转换电路,格式转换电路用于对数据格式进行转换。本示例中与第一种实现方式的区别在于:第一流水线模块中不包括连续转换电路,转换电路为第一格式转换电路。请参阅图2和图7所示,第一流水线模块701中包括第一格式转换电路7012及与其连接的转换格式缓冲器。多个转换格式缓冲器的数量至少包括第一转换格式缓冲器(2-buffer_0)70121和第二转换格式缓冲器(2-buffer_1)70122,该多个转换格式缓冲器用于实现乒乓缓存机制。第二流水线模块703中包括第二格式转换电路7031及多个目标格式缓冲器。多个目标格式缓冲器至少包括第一目标格式缓冲器(3-buffer_0)70311和第二目标格式缓冲器((3-buffer_1)70312。
其中,第一格式转换电路7012,用于从第一缓存器(cache_1)读取第一格式的数据,将第一格式的数据转换成第二格式的数据,并将第二格式的数据交替式写入多个转换格式缓冲器。
运算电路702,用于当多个转换格式缓冲器中一个转换格式缓冲器写满时,从转换格式缓冲器中读取第二格式数据,对第二格式数据进行处理,得到第二格式的结果数据。
第二格式转换电路7031,用于从运算电路702接收第二格式的结果数据,将第二格式的结果数据转换成第一格式的结果数据,并将第一格式的结果数据交替式写入多个目标格式缓冲器。该第二格式转换电路7031将第二格式的结果数据转换成第一格式的结果数据的目的是:输出的数据的格式可以适用于后续流程的数据格式。
第二缓存器,用于从已写满的目标格式缓冲器读取第一格式的结果数据,并输出该第一格式的结果数据。
请参阅图8所示,本示例中数据处理方法包括如下步骤:
步骤801、第一格式转换电路将第一格式的数据转换成第二格式的数据;并将第二格式数据交替式写入多个转换格式缓冲器。
具体的,请参阅图9所示。
S31、第一格式转换电路从第一缓存器(cache_1)读取第一格式的数据,将第一格式的数据转换成第二格式的数据,并将第二格式的数据写入第一转换格式缓冲器(2-buffer_0)中。
S32、当第一转换格式缓冲器(2-buffer_0)写满时,启动运算电路。运算电路从第一转换格式缓冲器(2-buffer_0)读取第二格式的数据,然后,运算电路对第二格式的数据进行运算操作(如进行卷积操作),得到结果数据(该结果数据为第二格式的数据)。继续执行S34。
S33、第一格式转换电路继续将第二格式的数据写入第二转换格式缓冲器(2-buffer_1)。继续执行S35。
S31和S32同步执行,请参阅上述示例1中步骤S15和步骤S16相关说明,此处不赘述。
步骤802、运算电路从转换格式缓冲器中读取第二格式数据,对第二格式数据进行处理,得到第二格式的结果数据。
S34、当第二转换格式缓冲器(2-buffer_1)写满时,启动运算电路,运算电路从第二转换格式缓冲器(2-buffer_1)读取第二格式的数据,然后,运算电路对第二格式的数据进行运算操作(如进行卷积操作),得到结果数据(该结果数据为第二格式的数据)。
S35、第一格式转换电路继续将第二格式的数据写入第一转换格式缓冲器(2-buffer_0)。
S34和S35同步执行,请参阅上述示例1中步骤S17和步骤S18相关说明,此处不赘述。
步骤803、第二格式转换电路将第二格式的结果数据转换成第一格式的结果数据,并将第一格式的结果数据交替式写入多个目标格式缓冲器。
此步骤,请参阅上述示例1中步骤S20-S26相关说明,此处不赘述。
示例三,当AI芯片获取到的数据为非连续的数据时,数据的格式符合运算电路的要求,仅需要对数据的连续性进行转换,不需要对数据的格式进行转换,此种实现方式中,转换电路为连续转换电路。本示例中与第一种实现方式的区别在于:第一流水线模块中不包括第一格式转换电路,转换电路为连续转换电路。AI芯片中不包括第二流水线模块。
请参阅图10所示,AI芯片包括依次连接的第一缓存器901、第一流水线模块902、运算电路903和第二缓存储器904。其中,第一流水线模块902包括连续转换电路9021及多个连续数据缓冲器,例如,多个连续数据缓冲器至少包括第一连续数据缓冲器(1-buffer_0)90211和第二连续数据缓冲器(1-buffer_1)90212。
连续转换电路9021,用于从第一缓存器901中读取数据,将不连续的数据转换成连续的数据,并将连续的数据交替式写入多个连续数据缓冲器。
运算电路903,用于当多个连续数据缓冲器中一个连续数据写满时,从已写满的连续数据缓冲器中读取连续的数据,对连续的数据进行运算,得到结果数据,将结果数据输出至第二缓存器904。
请参阅图11所示,对本示例中数据处理的过程进行说明:
步骤1101、连续转换电路将不连续的数据转换成连续的数据,并将连续的数据交替式写入多个连续数据缓冲器。
具体的,请参阅图12所示。
S40、连续转换电路从第一缓存器(cache_1)读取数据,将连续的数据写入到第一连续数据缓冲器(1-buffer_0)中。当第一连续数据缓冲器(1-buffer_0)写满时,启动运算电路。
S41、连续转换电路将连续的数据继续写入第二连续数据缓冲器(1-buffer_1)。继续执行S42。
S42、当第二连续数据缓冲器(1-buffer_1)写满时,连续转换电路将连续的数据继续写入第一连续数据缓冲器(1-buffer_0)。
重复执行S41和S42。
步骤1102、当多个连续数据缓冲器中一个连续数据写满时,运算电路从已写满的连续数据缓冲器中读取连续的数据,对连续的数据进行运算,得到结果数据,并将结果数据输出至第二缓存器(cache_2)。
S43、当第一连续数据缓冲器(1-buffer_0)写满时,运算电路从第一连续数据缓冲器(1-buffer_0)读取连续的数据,对连续的数据进行运算(如卷积运算),得到结果数据,将结果数据输出至第二缓存器。
S41和S43同步执行。
S44、当第二连续数据缓冲器(1-buffer_1)写满时,运算电路从第二连续数据缓冲器(1-buffer_1)读取连续的数据,对连续的数据进行运算(如卷积运算),得到结果数据,将结果数据输出至第二缓存器。
S42和S44同步执行。重复执行S43-S44。
本示例中,当AI芯片获取到的数据为非连续的数据时,数据的格式符合运算电路的要求,仅需要对数据的连续性进行转换,不需要对数据的格式进行转换,节省数据处理流程。并且,数据的连续性转换通过连续转换电路实现,数据的格式转换通过第一格式转换电路和第二格式转换电路实现,在软件侧减少算子调用次数,提高***整体性能。在硬件实现方面,通过乒乓缓存机制,可以实现细粒度流水线的数据处理机制,各个电路不需要等待时间,并且,总的执行时间与单纯进行运算(如卷积计算)的时间基本保持一致,各个电路保持并行计算的状态,提高芯片的数据处理效率。
本申请实施例中提供了一种人工智能运算板卡,请参阅图13所示,人工智能运算板卡1300包括通信接口1301及上述各示例中的人工智能芯片1302。该通信接口可以为高速串行计算机扩展总线标准(peripheral component interconnect express,PCIE)接口,该PCIE接口用于连接主机。
请参阅图14所示,本申请实施例中还提供了一种电子设备1400,该电子设备可以为服务器,或者该电子设备也可以为终端设备。
例如,该电子设备以服务器为例进行说明。该服务器可因配置或性能不同而产生比较大的差异,可以包括一个或一个以***处理器(central processing units,CPU)1422(例如,一个或一个以上处理器)和存储器1432,一个或一个以上存储应用程序1442或数据1444的存储介质1430(例如一个或一个以上海量存储设备),及人工智能运算板卡1460。其中,存储器1432和存储介质1430可以是短暂存储或持久存储。存储在存储介质1430的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1422可以设置为与存储介质1430通信,在服务器上执行存储介质1430中的一系列指令操作。
本申请中,人工智能运算板卡1460从存储器读取待转换的数据,或,人工智能运算板卡1460向存储器输出运算后的结果数据。AI芯片作为协处理器挂载到CPU(也可以称为主CPU)上,CPU可以为人工智能芯片分配数据处理任务,CPU可以向AI芯片发送用于连续性转换的配置参数和/或格式转换的配置参数。AI芯片中的连续转换电路和/或格式转换电路(如第一格式转换电路和第二格式转换电路)可以根据配置参数对数据进行转换。
服务器还可以包括一个或一个以上电源1426,一个或一个以上有线或无线网络接口1450,一个或一个以上输入输出接口1458,和/或,一个或一个以上操作***1441,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
其中,上述任一处提到的处理器,可以是一个通用中央处理器(CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制上述第一方面无线通信方法的程序执行的集成电路。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (12)

1.一种人工智能芯片,其特征在于,包括:依次连接的第一流水线模块和运算电路,所述第一流水线模块包括转换电路及与所述转换电路连接的多个缓冲器;
所述转换电路,用于获取待转换的第一特征的数据,将所述第一特征的数据转换成第二特征的数据,所述第二特征的数据为所述运算电路进行运算时所适用的数据;并将所述第二特征数据交替式写入所述多个缓冲器;
所述运算电路,用于当所述多个缓冲器中一个缓冲器写满时,从已写满的缓冲器中读取所述第二特征的数据,对所述第二特征的数据进行运算,得到结果数据,并输出所述结果数据。
2.根据权利要求1所述的芯片,其特征在于,所述转换电路为第一格式转换电路,所述缓冲器为转换格式缓冲器;所述芯片还包括与所述运算电路连接的第二流水线模块,所述第二流水线模块包括第二格式转换电路及与所述第二格式转换电路连接的多个目标格式缓冲器;
所述第一格式转换电路,用于将第一格式的数据转换成第二格式的数据,并将所述第二格式的数据交替式写入所述多个转换格式缓冲器;
所述运算电路,用于当所述多个转换格式缓冲器中一个转换格式缓冲器写满时,从所述转换格式缓冲器中读取第二格式数据,对所述第二格式数据进行处理,得到第二格式的结果数据;
所述第二格式转换电路,用于将所述第二格式的结果数据转换成第一格式的结果数据,并将所述第一格式的结果数据交替式写入所述多个目标格式缓冲器。
3.根据权利要求2所述的芯片,其特征在于,所述第一流水线模块还包括连续转换电路及与所述连续转换电路连接的多个连续数据缓冲器;
所述连续转换电路,用于将不连续的数据转换成连续的数据,并将连续的数据交替式写入所述多个连续数据缓冲器;
所述第一格式转换电路,还用于当所述多个连续数据缓冲器中一个连续数据缓冲器写满时,从已写满的连续数据缓冲器读取连续的数据,所述连续的数据为第一格式的数据,将所述第一格式的数据转换成第二格式的数据。
4.根据权利要求1所述的芯片,其特征在于,所述转换电路为连续转换电路,所述缓冲器为连续数据缓冲器;
所述连续转换电路,用于将不连续的数据转换成连续的数据,并将连续的数据交替式写入所述多个连续数据缓冲器;
所述运算电路,用于当所述多个连续数据缓冲器中一个连续数据缓冲器写满时,从已写满的连续数据缓冲器中读取连续的数据,对所述连续的数据进行运算,得到结果数据,并输出所述结果数据。
5.根据权利要求1-4中任一项所述的芯片,其特征在于,所述运算电路包括卷积计算单元和/或向量计算单元。
6.根据权利要求1-4中任一项所述的芯片,其特征在于,所述芯片还包括第一缓存器和第二缓存器;
所述第一缓存器,用于将待转换的数据输出至所述第一流水线模块;
所述第二缓存器,用于缓存所述结果数据。
7.一种数据处理方法,其特征在于,所述方法应用于的人工智能芯片,所述芯片包括依次连接的第一流水线模块和运算电路,所述第一流水线模块包括转换电路及与所述转换电路连接的多个缓冲器,所述方法还包括:
所述转换电路获取待转换的第一特征的数据,将所述第一特征的数据转换成第二特征的数据,所述第二特征的数据为所述运算电路进行运算时所适用的数据;并将所述第二特征数据交替式写入所述多个缓冲器;
当所述多个缓冲器中一个缓冲器写满时,所述运算电路从已写满的缓冲器中读取所述第二特征的数据,对所述第二特征的数据进行运算,得到结果数据;并输出所述结果数据。
8.根据权利要求7所述的方法,其特征在于,所述转换电路为第一格式转换电路,所述缓冲器为转换格式缓冲器;所述芯片还包括与所述运算电路连接的第二流水线模块,所述第二流水线模块包括第二格式转换电路及与所述第二格式转换电路连接的多个目标格式缓冲器;
所述转换电路获取待转换的第一特征的数据,将所述第一特征的数据转换成第二特征的数据,并将所述第二特征数据交替式写入所述多个缓冲器,包括:
所述第一格式转换电路将第一格式的数据转换成第二格式的数据;并所述第二格式数据交替式写入所述多个转换格式缓冲器;
所述当所述多个缓冲器中一个缓冲器写满时,所述运算电路从已写满的缓冲器中读取所述第二特征的数据,对所述第二特征的数据进行运算,得到结果数据,包括:
当所述多个转换格式缓冲器中一个缓冲器写满时,所述运算电路从已写满的转换格式缓冲器中读取第二格式数据,对所述第二格式数据进行处理,得到第二格式的结果数据;
所述方法还包括:
所述第二格式转换电路将所述第二格式的结果数据转换成第一格式的结果数据,并将所述第一格式的结果数据交替式写入所述多个目标格式缓冲器。
9.根据权利要求8所述的方法,其特征在于,所述第一流水线模块还包括连续转换电路及与所述连续转换电路连接的多个连续数据缓冲器;
所述方法还包括:
所述连续转换电路将不连续的数据转换成连续的数据,并将连续的数据交替式写入所述多个连续数据缓冲器;
当所述多个连续数据缓冲器中一个连续数据写满时,所述第一格式转换电路从已写满的连续数据缓冲器读取连续的数据,所述连续的数据为第一格式的数据。
10.根据权利要求7所述的方法,其特征在于,所述转换电路为连续转换电路,所述缓冲器为连续数据缓冲器;
所述转换电路获取待转换的第一特征的数据,将所述第一特征的数据转换成第二特征的数据,并将所述第二特征数据交替式写入所述多个缓冲器,包括:
所述连续转换电路将不连续的数据转换成连续的数据,并将连续的数据交替式写入所述多个连续数据缓冲器;
所述当所述多个缓冲器中一个缓冲器写满时,所述运算电路从已写满的缓冲器中读取所述第二特征的数据,对所述第二特征的数据进行运算,得到结果数据,包括:
当所述多个连续数据缓冲器中一个连续数据缓冲器写满时,所述运算电路从已写满的连续数据缓冲器中读取连续的数据,对所述连续的数据进行运算,得到结果数据,并输出所述结果数据。
11.一种人工智能运算板卡,其特征在于,包括通信接口及如权利要求1-6中任一项所述的人工智能芯片;其中,所述通信接口用于连接主机。
12.一种电子设备,其特征在于,包括:处理器,与所述处理器耦合的存储器,及如权利要求11所述的人工智能运算板卡,所述处理器及所述存储器通过通信接口与所述人工智能运算板卡进行数据传输。
CN202010877800.7A 2020-08-27 2020-08-27 人工智能芯片及运算板卡、数据处理方法及电子设备 Pending CN114115995A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010877800.7A CN114115995A (zh) 2020-08-27 2020-08-27 人工智能芯片及运算板卡、数据处理方法及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010877800.7A CN114115995A (zh) 2020-08-27 2020-08-27 人工智能芯片及运算板卡、数据处理方法及电子设备

Publications (1)

Publication Number Publication Date
CN114115995A true CN114115995A (zh) 2022-03-01

Family

ID=80374424

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010877800.7A Pending CN114115995A (zh) 2020-08-27 2020-08-27 人工智能芯片及运算板卡、数据处理方法及电子设备

Country Status (1)

Country Link
CN (1) CN114115995A (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5594916A (en) * 1990-01-24 1997-01-14 Hitachi, Ltd. Neural network processing system using semiconductor memories and processing paired data in parallel
US20190065208A1 (en) * 2017-08-31 2019-02-28 Cambricon Technologies Corporation Limited Processing device and related products
US20190073584A1 (en) * 2016-04-15 2019-03-07 Cambricon Technologies Corporation Limited Apparatus and methods for forward propagation in neural networks supporting discrete data
US20190087708A1 (en) * 2017-09-21 2019-03-21 Raytheon Company Neural network processor with direct memory access and hardware acceleration circuits
CN109858622A (zh) * 2019-01-31 2019-06-07 福州瑞芯微电子股份有限公司 深度学习神经网络的数据搬运电路和方法
CN109960673A (zh) * 2017-12-14 2019-07-02 北京中科寒武纪科技有限公司 集成电路芯片装置及相关产品
CN110968285A (zh) * 2018-09-28 2020-04-07 上海寒武纪信息科技有限公司 信号处理装置及相关产品
CN116724316A (zh) * 2020-12-31 2023-09-08 华为技术有限公司 模型处理方法和装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5594916A (en) * 1990-01-24 1997-01-14 Hitachi, Ltd. Neural network processing system using semiconductor memories and processing paired data in parallel
US20190073584A1 (en) * 2016-04-15 2019-03-07 Cambricon Technologies Corporation Limited Apparatus and methods for forward propagation in neural networks supporting discrete data
US20190065208A1 (en) * 2017-08-31 2019-02-28 Cambricon Technologies Corporation Limited Processing device and related products
US20190087708A1 (en) * 2017-09-21 2019-03-21 Raytheon Company Neural network processor with direct memory access and hardware acceleration circuits
CN109960673A (zh) * 2017-12-14 2019-07-02 北京中科寒武纪科技有限公司 集成电路芯片装置及相关产品
CN110968285A (zh) * 2018-09-28 2020-04-07 上海寒武纪信息科技有限公司 信号处理装置及相关产品
CN109858622A (zh) * 2019-01-31 2019-06-07 福州瑞芯微电子股份有限公司 深度学习神经网络的数据搬运电路和方法
CN116724316A (zh) * 2020-12-31 2023-09-08 华为技术有限公司 模型处理方法和装置

Similar Documents

Publication Publication Date Title
US20210158484A1 (en) Information processing method and terminal device
CN112840356B (zh) 运算加速器、处理方法及相关设备
CN109657782B (zh) 运算方法、装置及相关产品
US7454451B2 (en) Method for finding local extrema of a set of values for a parallel processing element
CN109388595A (zh) 高带宽存储器***以及逻辑管芯
CN109685201B (zh) 运算方法、装置及相关产品
US20230359876A1 (en) Efficient utilization of processing element array
CN112219210B (zh) 信号处理装置和信号处理方法
US11990137B2 (en) Image retouching method and terminal device
US8166275B2 (en) Method and apparatus for accessing a multi ordered memory array
US10310998B2 (en) Direct memory access with filtering
CN113312283B (zh) 一种基于fpga加速的异构图学习***
US20210241070A1 (en) Hybrid convolution operation
US20220113944A1 (en) Arithmetic processing device
CN106227506A (zh) 一种内存压缩***中的多通道并行压缩解压***及方法
CN111124995A (zh) 通过人工智能处理器处理一维复数数组的方法和设备
US20240004650A1 (en) Data processing method and apparatus, and related product
CN114115995A (zh) 人工智能芯片及运算板卡、数据处理方法及电子设备
JP2017182480A (ja) 画像処理装置および画像処理方法
CN109711538B (zh) 运算方法、装置及相关产品
CN109740730B (zh) 运算方法、装置及相关产品
CN109711367B (zh) 运算方法、装置及相关产品
CN109740729B (zh) 运算方法、装置及相关产品
US11868875B1 (en) Data selection circuit
CN113393368B (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