CN112579042B - 计算装置及方法、芯片、电子设备及计算机可读存储介质 - Google Patents
计算装置及方法、芯片、电子设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN112579042B CN112579042B CN201910934627.7A CN201910934627A CN112579042B CN 112579042 B CN112579042 B CN 112579042B CN 201910934627 A CN201910934627 A CN 201910934627A CN 112579042 B CN112579042 B CN 112579042B
- Authority
- CN
- China
- Prior art keywords
- data
- instruction
- multiply
- matrix
- memory
- 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
- 238000000034 method Methods 0.000 title abstract description 11
- 239000011159 matrix material Substances 0.000 claims abstract description 153
- 230000015654 memory Effects 0.000 claims abstract description 124
- 238000009825 accumulation Methods 0.000 claims abstract description 76
- 238000004364 calculation method Methods 0.000 claims abstract description 50
- 230000004044 response Effects 0.000 claims description 8
- 230000011218 segmentation Effects 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 5
- 238000012545 processing Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000004087 circulation Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000010668 complexation reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000004575 stone Substances 0.000 description 1
- 239000000126 substance Substances 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Software Systems (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
本发明提供一种计算装置及方法、芯片、电子设备及存储介质。装置包括取指单元,从存储器中取出乘累加指令,乘累加指令包括指令名、目的地址寄存器、第一源地址寄存器和第二源地址寄存器;解码单元,解码乘累加指令;执行单元,执行解码后的乘累加指令,以根据第一源地址寄存器的指示从存储器中读取第一数据,根据第二源地址寄存器的指示从存储器中读取第二数据,根据乘累加指令对第一数据和第二数据执行乘累加运算,将乘累加运算的结果保存至目的地址寄存器指示的存储器中,其中,第一数据和第二数据中的至少一个为矩阵。根据单条乘累加指令完成矩阵和矩阵(或向量、或标量)的乘累加运算,底层程序简单、提高运算效率和计算速度。
Description
技术领域
本发明涉及数据运算技术领域,具体涉及一种计算装置、一种计算方法、一种芯片、一种电子设备以及一种计算机可读存储介质。
背景技术
随着科学技术的发展,人类社会正在快速进入智能时代。智能时代的重要特点,就是人们获得数据的种类越来越多,获得数据的量越来越大,而对处理数据的速度要求越来越高,例如,矩阵运算。
芯片是数据处理的基石,它从根本上决定了人们处理数据的能力。从应用领域来看,芯片主要有两条路线:一条是通用芯片路线,例如中央处理器(Central ProcessingUnit,CPU)等,它们能提供极大的灵活性,但是在处理特定领域算法时有效算力比较低;另一条是专用芯片路线,例如张量处理器(Tensor Processing Unit,TPU)等,它们在某些特定领域,能发挥较高的有效算力,但是面对灵活多变的比较通用的领域,它们处理能力比较差甚至无法处理。
现有技术一中,如果单核CPU实现矩阵运算,其会将矩阵拆解成标量进行运算,通过组合标量指令实现矩阵和矩阵乘累加运算;如果多核CPU实现矩阵运算,可能会通过多个核并行执行各自的标量指令,组合实现整个矩阵和矩阵乘累加运算。
但是,现有技术一中存在以下缺点:
1、底层程序复杂,一般需要多层循环实现矩阵和矩阵乘累加运算;
2、通过通用计算指令实现矩阵和矩阵乘累加运算,效率低,需要多次分支跳转;
3、CPU的缓存有限,实现比较大的矩阵和矩阵乘累加运算需要多次从片外搬数,影响效率;
4、CPU需要多次进行数据的存取,会增加实现矩阵和矩阵乘累加的计算时间和计算功耗;
5、如果是多核并行计算,核间的通信复杂,通信性能可能成为瓶颈。
现有技术二中,GPU会将矩阵和矩阵乘累加运算拆解成多条指令运算,这些指令主要是向量指令,通过组合执行向量指令实现矩阵和矩阵乘累加运算。
但是,现有技术二中存在以下缺点:
1、底层程序复杂,一般需要多层循环实现矩阵和矩阵乘累加运算;
2、通过向量指令多次组合实现矩阵和矩阵乘累加运算,效率较低;
3、GPU需要多次进行数据的存取,会增加实现矩阵和矩阵乘累加的计算时间和计算功耗;
4、GPU的缓存有限,实现比较大的矩阵和矩阵乘累加运算需要多次从片外搬数,影响效率。
发明内容
本发明旨在至少解决现有技术中存在的技术问题之一,提供一种计算装置、一种计算方法、一种芯片、一种电子设备以及一种计算机可读存储介质。
本发明的一个方面,提供一种计算装置,包括:
取指单元,用于从存储器中取出乘累加指令,所述乘累加指令包括指令名、目的地址寄存器、第一源地址寄存器和第二源地址寄存器,所述乘累加指令为单条指令;
解码单元,用于解码所述乘累加指令;
执行单元,用于执行所述解码后的乘累加指令,以根据第一源地址寄存器的指示从所述存储器中读取第一数据,根据第二源地址寄存器的指示从所述存储器中读取第二数据,根据所述乘累加指令对所述第一数据和所述第二数据执行乘累加运算,将所述乘累加运算的结果保存至所述目的地址寄存器指示的所述存储器中,其中,所述第一数据和所述第二数据中的至少一个为矩阵。
本实施例中,取指单元仅从存储器中取出乘累加指令,该乘累加指令为单条指令,执行单元便可以根据该指令完成矩阵和矩阵(或向量、或标量)的乘累加运算,底层程序非常简单。可以设计全硬件电路实现完整的矩阵和矩阵(或向量、或标量)的乘累加运算,这可以极大提高运算效率和计算速度。此外,所有的数据只会从存储器中读一次,中间数据不会存入存储器,可以大大节省计算时间以及降低功耗。此外,在指令格式采用RISC-V的指令格式时,可以提高该指令的通用性,并可以灵活配置输入矩阵的大小。
可选地,所述执行单元包括控制单元和运算单元阵列,所述运算单元阵列中的每个运算单元均包括输出寄存器、第一输入寄存器和第二输入寄存器;
所述根据所述乘累加指令对所述第一数据和所述第二数据执行乘累加运算,包括:
所述控制单元用于以预设的分配方式将所述读取的第一数据逐个依序分配给所述运算单元阵列中的参与运算的运算单元的第一输入寄存器中;
所述控制单元还用于以预设的分配方式将所述读取的第二数据逐个依序分配给所述运算单元阵列中的所述参与运算的运算单元的第二输入寄存器中;
所述参与运算的运算单元中的每个运算单元对自身的所述第一输入寄存器中存储的第一数据和第二输入寄存器中存储的第二数据进行乘运算得到第一结果,所述参与运算的运算单元以预设累加方式执行累加操作得到最终累加结果,由得到所述最终累加结果的运算单元将所述最终乘累加结果传输至所述目的地址寄存器指示的存储器中。
可选地,所述预设的分配方式包括:
若第一数据为矩阵,第二数据为矩阵,则将所述第一数据和所述第二数据中位于相同行列位置的第一矩阵数据和第二矩阵数据分别分配给同一个运算单元的第一输入寄存器和第二输入寄存器;或,
若第一数据为矩阵,第二数据为向量,则将所述第二数据中的向量以行或列的方向复制为与所述第一数据相同的形状,将所述第一数据和所述复制后的第二数据分别分配给同一个运算单元的第一输入寄存器和第二输入寄存器;或,
若第一数据为矩阵,第二数据为标量,则将所述第二数据中标量复制为与所述第一数据相同的形状,将所述第一数据和所述复制后的第二数据分别分配给同一个运算单元的第一输入寄存器和第二输入寄存器。
可选地,所述参与运算的运算单元以预设累加方式执行累加操作得到最终累加结果,包括:
所述参与运算的运算单元依次将自身计算的所述第一结果按照行方向发送至下一所述参与运算的运算单元执行累加计算,得到所述最终累加结果;或,
所述参与运算的运算单元依次将自身计算的所述第一结果按照列方向发送至下一所述参与运算的运算单元执行累加计算,得到所述最终累加结果;或,
所述参与运算的运算单元依次将所述第一结果全部累加操作得到所述最终累加结果。
可选地,所述第一源地址寄存器的指示包括:所述第一数据在所述存储器中的首地址;
所述第二源地址寄存器的指示包括:所述第二数据在所述存储器中的首地址;
所述目的地址寄存器的指示包括:所述输出结果在所述存储器中的首地址。
可选地,所述执行单元根据第一源地址寄存器的指示从所述存储器中读取第一数据,包括:
所述执行单元,还用于根据所述第一数据在所述存储器中的首地址以及所述第一数据的属性,从所述存储器中读取所述第一数据;以及,
所述执行单元根据第二源地址寄存器的指示从所述存储器中读取第二数据,包括:
所述执行单元,还用于根据所述第二数据在所述存储器中的首地址以及所述第二数据的属性,从所述存储器中读取所述第二数据;
所述将所述输出结果保存至所述目的地址寄存器指示的所述存储器中,包括:
所述执行单元,还用于根据所述输出结果在所述存储器中的首地址和所述输出结果属性将所述输出结果保存至所述存储器中。
可选地,还包括定制寄存器,所述定制寄存器用于保存所述第一数据的属性、所述第二数据的属性和所述输出结果的属性;
所述数据属性包括数据形状、数据行列方向间隔,所述输出结果属性包括输出长度。
可选地,每个所述运算单元包括切分子单元和判断子单元;
所述判断子单元,用于判断所述第一数据或所述第二数据的形状是否超过所述运算单元阵列的形状;
响应于所述第一数据或所述第二数据的形状超过所述运算单元阵列的形状,所述切分子单元对所述第一数据或所述第二数据的形状进行切分。
本发明的另一个方面,提供一种计算方法,包括:
从存储器中取出乘累加指令,所述乘累加指令包括指令名、目的地址寄存器、第一源地址寄存器和第二源地址寄存器,所述乘累加指令为单条指令;
解码所述乘累加指令;
执行所述解码后的乘累加指令,以根据第一源地址寄存器的指示从所述存储器中读取第一数据,根据第二源地址寄存器的指示从所述存储器中读取第二数据,根据所述乘累加指令对所述第一数据和所述第二数据执行乘累加运算,将所述乘累加运算的运算结果保存至所述目的地址寄存器指示的所述存储器中,其中,所述第一数据和所述第二数据中的至少一个为矩阵。
可选地,所述根据所述乘累加指令对所述第一数据和所述第二数据执行乘累加运算,包括:
以预设的分配方式将所述读取的第一数据逐个依序分配给运算单元阵列中的参与运算的运算单元的第一输入寄存器中;
以预设的分配方式将所述读取的第二数据逐个依序分配给所述运算单元阵列中的所述参与运算的运算单元的第二输入寄存器中;
所述参与运算的运算单元中的每个运算单元对自身的所述第一输入寄存器中存储的第一数据和第二输入寄存器中存储的第二数据进行乘运算得到第一结果,所述参与运算的运算单元以预设累加方式执行累加操作得到最终累加结果,由得到所述最终累加结果的运算单元将所述最终乘累加结果传输至所述目的地址寄存器指示的存储器中。
可选地,所述预设的分配方式包括:
若第一数据为矩阵,第二数据为矩阵,则将所述第一数据和所述第二数据中位于相同行列位置的第一矩阵数据和第二矩阵数据分别分配给同一个运算单元的第一输入寄存器和第二输入寄存器;或,
若第一数据为矩阵,第二数据为向量,则将所述第二数据中的向量以行或列的方向复制为与所述第一数据相同的形状,将所述第一数据和所述复制后的第二数据分别分配给同一个运算单元的第一输入寄存器和第二输入寄存器;或,
若第一数据为矩阵,第二数据为标量,则将所述第二数据中标量复制为与所述第一数据相同的形状,将所述第一数据和所述复制后的第二数据分别分配给同一个运算单元的第一输入寄存器和第二输入寄存器。
可选地,所述参与运算的运算单元以预设累加方式执行累加操作得到最终累加结果,包括:
所述参与运算的运算单元依次将自身计算的所述第一结果按照行方向发送至下一所述参与运算的运算单元执行累加计算,得到所述最终累加结果;或,
所述参与运算的运算单元依次将自身计算的所述第一结果按照列方向发送至下一所述参与运算的运算单元执行累加计算,得到所述最终累加结果;或,
所述参与运算的运算单元依次将所述第一结果全部累加操作得到所述最终累加结果。
可选地,所述第一源地址寄存器的指示包括:所述第一数据在所述存储器中的首地址;
所述第二源地址寄存器的指示包括:所述第二数据在所述存储器中的首地址;
所述目的地址寄存器的指示包括:所述输出结果在所述存储器中的首地址。
可选地,所述根据第一源地址寄存器的指示从所述存储器中读取第一数据,包括:
根据所述第一数据在所述存储器中的首地址以及所述第一数据的属性,从所述存储器中读取所述第一数据;以及,
所述根据第二源地址寄存器的指示从所述存储器中读取第二数据,包括:
根据所述第二数据在所述存储器中的首地址以及所述第二数据的属性,从所述存储器中读取所述第二数据;
所述将所述输出结果保存至所述目的地址寄存器指示的所述存储器中,包括:
根据所述输出结果在所述存储器中的首地址和所述输出结果属性将所述输出结果保存至所述存储器中。
可选地,所述数据属性包括数据形状、数据行列方向间隔,所述输出结果属性包括输出长度。
可选地,所述方法还包括:
判断所述第一数据或所述第二数据的形状是否超过所述运算单元阵列的形状;
响应于所述第一数据或所述第二数据的形状超过所述运算单元阵列的形状,对所述第一数据或所述第二数据的形状进行切分。
本发明的另一个方面,提供一种芯片,包括前文记载的所述的计算装置。
本发明的另一个方面,提供一种电子设备,包括:
一个或多个处理器;
存储单元,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,能使得所述一个或多个处理器实现根据前文记载的所述的计算方法。
本发明的另一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时能实现根据前文记载的所述的计算方法。
本发明的计算装置及计算方法、芯片、电子设备和存储介质,取指单元仅从存储器中取出乘累加指令,该乘累加指令为单条指令,执行单元便可以根据该指令完成矩阵和矩阵(或向量、或标量)的乘累加运算,底层程序非常简单。可以设计全硬件电路实现完整的矩阵和矩阵(或向量、或标量)的乘累加运算,这可以极大提高运算效率和计算速度。此外,所有的数据只会从存储器中读一次,中间数据不会存入存储器,可以大大节省计算时间以及降低功耗。此外,在指令格式采用RISC-V的指令格式时,可以提高该指令的通用性,并可以灵活配置输入矩阵的大小。
附图说明
图1为本发明第一实施例中计算装置的结构示意图;
图2为本发明第二实施例中乘累加运算示意图;
图3为本发明第三实施例中执行单元的结构示意图;
图4为本发明第四实施例中运算单元阵列的结构示意图;
图5为本发明第五实施例中运算单元的结构示意图;
图6为本发明第六实施例中乘累加的功能示意图;
图7为本发明第七实施例中存储器内的数据存储示意图;
图8为本发明第八实施例中计算方法的流程图。
具体实施方式
为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本发明作进一步详细描述。
如图1所示,本发明的一个方面,涉及一种计算装置,包括取指单元110、解码单元120以及执行单元130。然而,对本领域的技术人员将明显的是,可以对这些单元中的一个或多个进行组合。例如,可以将解码单元120和执行单元130组合形成单个的单元。
取指单元110用于从存储器200中取出乘累加指令,该乘累加指令包括指令名、目的地址寄存器、第一源地址寄存器和第二源地址寄存器,该乘累加指令为单条指令。
该取指单元110可以根据如由程序计数器(PC)指示的程序(按程序顺序)从存储器200中提取乘累加指令,该乘累加指令即可完成后续的矩阵运算。取指单元110可以在一个处理周期内从存储器200中提取乘累加指令,在一个时钟周期内可以具有一个处理周期,或者,在一个时钟周期内具有多个处理周期,亦或者,多个时钟周期形成一个处理周期等等。
一旦取指单元110从存储器200中提取了乘累加指令,其就向解码单元120提供该指令,解码单元120便根据接收到的指令进行解码,以便执行单元130能够识别并执行该条乘累加指令。
需要说明的是,本领域技术人员可以根据实际需要,自行定义乘累加指令的格式,在本实施例中,乘累加指令的格式,可以选择遵循RISC-V的指令格式,如下表1所示:
在表1中,.mm表示指令的后缀,一般通过该后缀可以区分该条乘累加指令的操作数的种类,dim0表示最后累加的方向,例如,行累加、列累加或全部累加等等,具体可以根据实际需求定义。
表1
需要说明的是,上述表1仅仅是对乘累加指令的一个举例说明,并不是对本发明乘累加指令的限定,本领域技术人员还可以根据实际需要,设计乘累加指令的其他一些形式。例如,如下表2所示,为乘累加指令的一些变种:
表2
根据表1和表2,本领域技术人员不难理解,在根据乘累加指令得出输出结果为向量时,目的地址寄存器为目的向量地址寄存器,在根据乘累加指令得到输出结果为标量时,目的地址寄存器也可以为目的标量地址寄存器。
为了便于说明计算装置的计算方法,下文将以第一数据和第二数据均为矩阵,输出结果为输出向量进行说明,也即第一数据为第一输入矩阵的数据,第二数据为第二输入矩阵的数据,相应地,第一数据所对应的第一源地址寄存器应当为第一矩阵地址寄存器、第二数据所对应的第二源地址寄存器应当为第二矩阵地址寄存器,目的地址寄存器为目标向量地址寄存器。
如图2所示,执行单元130在接收到解码后的乘累加指令后,便可以执行该指令,也即执行单元130根据第一矩阵地址寄存器的指示从存储器200中读取第一输入矩阵的数据,也即输入矩阵一。执行单元130根据第二矩阵地址寄存器的指示从存储器200中读取第二输入矩阵的数据,也即输入矩阵二。执行单元130根据指令对第一输入矩阵的数据和第二输入矩阵的数据执行乘累加运算得到输出向量,并将输出向量保存至目的向量地址寄存器指示的存储器200中。
如图3所示,在执行单元130中,其可以包括各种单元电路中一个或多个电路,例如,算术运算单元、逻辑运算单元、浮点运算单元、存取数据单元以及浮点运算单元电路中的一个或多个,由它们完成矩阵运算。不同的指令,用到的单元电路不一定一样,还可能是多个单元电路的组合。例如矩阵和矩阵乘累加指令只需要用到算术单元电路。不难理解,执行单元130除了可以包括如图3所示的一些单元电路以外,本领域技术人员根据实际需求,还可以增加或删减一些单元电路。
需要说明的是,对于存储器200的具体结构并没有作出限定,例如,该存储器200可以是随机存取存储器(RAM)、只读存储器(ROM)、闪存(Flash Memory)、先进先出存储器(FIFO)以及先进后出存储器(FILO)等等。此外,乘累加指令和数据可以共用一个存储器,也可以分别存储在不同的存储器中,具体可以根据实际需要确定。
此外,计算装置除了包括前文记载的一些结构以外,还可以包括其他一些功能模块,例如,如图1所示,计算装置还可以包括控制单元140,该控制单元140分别与取指单元110、解码单元120以及执行单元130相连,控制单元140可以根据时钟周期、时钟信号或者控制信号控制取指单元110、解码单元120以及执行单元130的工作状态。
本实施例的计算装置,取指单元仅从存储器中取出乘累加指令,该乘累加指令为单条指令,执行单元便可以根据该指令完成矩阵和矩阵(或向量、或标量)的乘累加运算,底层程序非常简单。可以设计全硬件电路实现完整的矩阵和矩阵(或向量、或标量)的乘累加运算,这可以极大提高运算效率和计算速度。此外,所有的数据只会从存储器中读一次,中间数据不会存入存储器,可以大大节省计算时间以及降低功耗。此外,在指令格式采用RISC-V的指令格式时,可以提高该指令的通用性,并可以灵活配置输入矩阵的大小。
如图4和图5所示,执行单元130包括控制单元和运算单元阵列PU1,1、PU1,2…PU1,N、PU2,1、PU2,2…PU2,N…PUM,1、PUM,2…PUM,N,运算单元阵列的每个运算单元均包括输出寄存器Rout、第一输入寄存器Rin1和第二输入寄存器Rin2。
具体地,控制单元用于以预设的分配方式将读取的第一输入矩阵数据逐个依序分配给运算单元阵列中的参与运算的运算单元的第一输入寄存器Rin1中。控制单元还用于以预设的分配方式将读取的第二输入矩阵数据逐个依序分配给运算单元阵列中的参与运算的运算单元的第二输入寄存器Rin2中。参与运算的运算单元中的每个运算单元对自身的第一输入寄存器Rin1中存储的第一数据和第二输入寄存器Rin2中存储的第二数据进行乘运算得到第一结果,参与运算的运算单元以预设累加方式执行累加操作得到最终累加结果,由得到最终累加结果的运算单元将最终乘累加结果传输至目的向量地址寄存器指示的存储器200中,这里提及参与运算的运算单元,是因为运算单元阵列的形状可能与输入矩阵的形状不同,由于输入矩阵的形状不同,将会导致运算单元阵列中参与运算的运算单元不同。
下文以其中一种分配方式和累加方式进行举例说明:
例如,一并结合图6和图7,第一输入矩阵M1的数据分别为a11、a12…a1N、a21、a22…a2N…aM1、aM2…aMN。第二输入矩阵M2的数据分别为b11、b12…b1N、b21、b22…b2N…bM1、bM2…bMN。
下面先描述运算单元阵列的形状大于或等于输入矩阵阵列的情况,即运算单元阵列为X行Y列,X大于或等于M,Y大于或等于N,X、Y、M、N均为正整数。
控制单元将第一输入矩阵M1数据a11、a12…a1N…aM1、aM2…aMN逐个依序分配给运算单元PU1,1、PU1,2…PU1,N…PUM,1、PUM,2…PUM,N中,即数据a11分配给运算单元PU1,1并存储在PU1,1的第一输入寄存器Rin1中,数据a12分配给运算单元PU1,2并存储在PU1,2的第一输入寄存器Rin1中,…数据aMN分配给运算单元PUM,N并存储在PUM,N的第一输入寄存器Rin1中。
控制单元将第二输入矩阵M2的数据b11、b12…b1N、b21、b22…b2N…bM1、bM2…bMN逐个依序分配给运算单元PU1,1、PU1,2…PU1,N…PUM,1、PUM,2…PUM,N,即数据b11分配给运算单元PU1,1并存储在PU1,1的第二输入寄存器Rin2中,b12分配给运算单元PU1,2并存储在PU1,2的第二输入寄存器Rin2中,…数据bMN分配给运算单元PUM,N并存储在PUM,N的第二输入寄存器Rin2中。
每个运算单元PU1,1、PU1,2、…PUMN分别将自身第一输入寄存器Rin1存储的第一矩阵的数据a11、a12…aMN与第二输入寄存器Rin2存储的第二矩阵的数据b11、b21…bMN进行乘运算,得到中间数据c11、c12…cMN,中间数据分别保存至参与运算的运算单元PU1,1、PU1,2、…PUMN的输出寄存器中。
对所有的中间数据c11、c12…c1N、c21、c22…c2N…cM1、cM2…cMN按照行向量累加方式执行累加运算得到输出向量V,输出向量V的数据分别为V1、V2…VN。
上述矩阵运算过程具体为:
PU1,1、PU1,2、…PU1N将存储的c11、c12…c1N分别发送至下一行的处理单元PU2,1、PU2,2、…PU2N中,分别由PU2,1、PU2,2、…PU2N执行c11、c12…c1N与自身存储的c21、c22…c2N的求和,然后,PU2,1将计算结果∑c11+c21,发送至下一个行的处理单元PU3,1,PU2,2将计算结果∑c12+c22,发送至下一个行的处理单元PU3,2,……,以此类推,PUM,1、PUM,2、…PUMN接收上一行处理单元的数据并将自身的数据与上一行处理单元的数据执行求和计算,分别得到并由PUM,1、PUM,2、…PUMN将/> 各个数据组合在一起构成为得到最终的输出向量V,也即:
需要说明的是,除了上述分配方式和累加方式以外,本领域技术人员还可以根据实际需要,设计其他一些数据分配方式和累加方式,例如,对于运算单元PU1,1而言,可以将第一输入矩阵的第一列数据以及第二输入矩阵的第一列数据依序发给PU1,1,由一个PU1,1完成第一输入矩阵和第二输入矩阵第一列数据相乘和累加,以此类推,PU1,N完成第一输入矩阵和第二输入矩阵第N列数据的相乘和累加。
当然,累加方式还可以是列方向累加形成列向量,或者将中间矩阵的所有数据相加等等,在此不做过多描述。
在一些可选地实施方式中,第一矩阵地址寄存器的指示包括:第一输入矩阵在存储器中的首地址。第二矩阵地址寄存器的指示包括:第二输入矩阵在存储器中的首地址。目的地址寄存器的指示包括:输出向量在存储器中的首地址。
在一些可选地实施方式中,计算装置还包括定制寄存器150,定制寄存器150用于保存第一输入矩阵的属性、第二输入矩阵的属性和输出向量的属性。输入矩阵属性可以包括输入矩阵形状(例如,输入矩阵形状为M×N,也即M行N列)、输入矩阵行列方向间隔,输出向量属性可以包括输出向量长度。
除此以外,如图1所示,在一些可选地实施方式中,计算装置还可以包括向量寄存器160和通用寄存器170,该向量寄存器160可以用于某些向量运算等,目的向量地址寄存器、第一矩阵地址寄存器和第二矩阵地址寄存器均可以为通用寄存器170。
在一些可选地实施方式中,执行单元130可以根据第一输入矩阵在存储器200中的首地址以及第一输入矩阵形状和行列方向间隔,从存储器200中读取第一输入矩阵。执行单元130根据第二输入矩阵在存储器200中的首地址以及第二输入矩阵形状和行列方向间隔,从存储器200中读取第二输入矩阵的数据。执行单元130还根据输出向量在存储器200中的首地址和输出向量长度将输出向量保存至存储器200中。
不难理解,在这种实施方式中,执行单元130可以连续读取存储在存储器200中的第一输入矩阵数据和第二输入矩阵数据,并连续存储输出输出向量。执行单元130也可以不连续读取存储在存储器200中的第一输入矩阵数据和第二输入矩阵数据,并可以不连续存储输出输出向量。至于连续取数或存数与否,取决于所定义的行列方向间隔。
在一些可选地实施方式中,每个运算单元还包括切分子单元和判断子单元。判断子单元,用于判断输入矩阵的形状是否超过运算单元阵列的形状。响应于输入矩阵的形状超过运算单元阵列的形状,切分子单元对输入矩阵的形状进行切分。
在本实施方式中,对于运算单元阵列而言,其一旦被设定以后,该运算单元阵列的形状便固定。对于运算单元阵列的形状小于输入矩阵阵列的情况,即运算单元阵列为X行Y列,X小于M,Y小于N,X、Y、M、N均为正整数,此时,需要将输入矩阵的形状切分为形状小于或等于运算单元阵列的形状的子矩阵。之后,运算单元阵列可以对子矩阵进行运算,运算次数等于切分的数量,拆分后的子矩阵的计算方法与前述完整矩阵的计算方法相同,但是需要注意的是,如果是计算行累加,则对矩阵进行列切分,如果计算列累加,则进行行切分,以利于累加执行,在此不做详细描述输出向量。
应当理解的是,上述仅对第一源地址寄存器、第二源地址寄存器、目的地址寄存器的一种情况进行了具体说明,在第一源地址寄存器、第二源地址寄存器、目的地址寄存器为其他类型的寄存器时,计算过程也可以参考前文记载的相关方法,在此不作赘述。
本发明的第二方面,如图8所示,提供一种计算方法S100,该计算方法S100可以采用前文记载的计算装置,计算装置的具体结构可以参考前文相关记载,在此不作赘述。
计算方法S100包括:
S110、从存储器中取出乘累加指令,乘累加指令包括指令名、目的地址寄存器、第一源地址寄存器和第二源地址寄存器,所述乘累加指令为单条指令。
S120、解码乘累加指令。
S130、执行解码后的乘累加指令,以根据第一源地址寄存器的指示从存储器中读取第一数据,根据第二源地址寄存器的指示从存储器中读取第二数据,根据乘累加指令对第一数据和第二数据执行乘累加运算,将所述乘累加运算的结果保存至目的地址寄存器指示的存储器中,其中,所述第一数据和第二数据中的至少一个为矩阵。
本实施例的计算方法,仅从存储器中取出乘累加指令,该乘累加指令为单条指令,根据该指令完成矩阵和矩阵(或向量、或标量等)的乘累加运算,底层程序非常简单。可以设计全硬件电路实现完整的矩阵和矩阵(或向量、或标量等)的乘累加运算,这可以极大提高运算效率和计算速度。此外,所有的数据只会从存储器中读一次,中间数据不会存入存储器,可以大大节省计算时间以及降低功耗。此外,在指令格式采用RISC-V的指令格式时,可以提高该指令的通用性,并可以灵活配置输入矩阵的大小。
在一些可选地实施方式中,根据乘累加指令对第一数据和第二数据执行乘累加运算,包括:
以预设的分配方式将读取的第一数据逐个依序分配给参与运算的运算单元阵列中的参与运算的运算单元中;
以预设的分配方式将读取的第二数据逐个依序分配给所述参与运算的运算单元中;
所述参与运算的运算单元对分配的第一数据和第二数据进行乘运算得到第一结果,以预设累加方式执行累加操作得到最终累加结果,并由得到最终累加结果的运算单元将最终乘累加结果传输至目的地址寄存器指示的存储器中。
具体地,在本步骤中,为了储存数据,可以在参与运算的运算单元中设置不同的寄存器,例如,可以在每个参与运算的运算单元中设置三个通用的寄存器,分别为第一输入寄存器、第二输入寄存器和输出寄存器。当然,除此以外,还可以设置其他一些存储器件,在此不作具体限定。
在一些可选地实施方式中,预设的分配方式包括:
若第一数据为矩阵,第二数据为矩阵,则将所述第一数据和第二数据中位于相同行列位置的第一矩阵数据和第二矩阵数据分别分配给参与运算的同一个运算单元的第一输入寄存器和第二输入寄存器。
若第一数据为矩阵,第二数据为向量,则将所述第二数据中的向量以行或列的方向复制为与所述第一数据相同的形状,将所述第一数据和所述复制后的第二数据分别分配给同一个运算单元的第一输入寄存器和第二输入寄存器。
若第一数据为矩阵,第二数据为标量,则将所述第二数据中标量复制为与所述第一数据相同的形状,将所述第一数据和所述复制后的第二数据分别分配给同一个运算单元的第一输入寄存器和第二输入寄存器。
在一些可选地实施方式中,所述参与运算的不同运算单元以预设累加方式执行累加操作得到最终累加结果,包括:
所述参与运算的不同运算单元依次将自身计算的所述第一结果按照行方向发送至下一所述参与运算的运算单元执行累加计算,得到最终累加结果;或,所述参与运算的运算单元依次将所述第一结果按照列方向发送至下一所述参与运算的运算单元执行累加计算,得到所述最终累加结果。或者,所述参与运算的运算单元依次将所述第一结果全部累加操作得到所述最终累加结果。
在一些可选地实施方式中,第一源地址寄存器的指示包括:第一数据在存储器中的首地址。第二源地址寄存器的指示包括:第二数据在存储器中的首地址。目的地址寄存器的指示包括:输出结果在存储器中的首地址。
在一些可选地实施方式中,根据第一源地址寄存器的指示从存储器中读取第一数据,包括:
根据第一数据在存储器中的首地址以及第一数据的属性,从存储器中读取第一数据;以及,
根据第二源地址寄存器的指示从存储器中读取第二数据,包括:
根据第二数据在存储器中的首地址以及第二数据的属性,从存储器中读取第二数据;
将输出结果保存至目的地址寄存器指示的存储器中,包括:
根据输出结果在存储器中的首地址和输出结果属性将输出结果保存至存储器中。
在一些可选地实施方式中,数据属性包括数据形状、数据行列方向间隔,输出结果属性包括输出长度。
在一些可选地实施方式中,计算方法还包括:
判断第一数据或第二数据的形状是否超过参与运算的运算单元阵列的形状;
响应于第一数据或第二数据的形状超过参与运算的运算单元阵列的形状,对第一数据或第二数据的形状进行切分。
本发明的第三方面,提供一种芯片,包括前文记载的计算装置,该计算装置的具体结构可以参考前文相关记载,在此不作赘述。
本实施例的芯片,具有前文记载的计算装置,仅从存储器中取出乘累加指令,该指令为单条指令,根据该指令完成矩阵和矩阵乘累加运算,底层程序非常简单。可以设计全硬件电路实现完整的矩阵和矩阵乘累加运算,这可以极大提高运算效率和计算速度。此外,所有的数据只会从存储器中读一次,中间数据不会存入存储器,可以大大节省计算时间以及降低功耗。此外,在指令格式采用RISC-V的指令格式时,可以提高该指令的通用性,并可以灵活配置输入矩阵的大小。
本发明的第四方面,提供一种电子设备,包括:
一个或多个处理器;
存储单元,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,能使得一个或多个处理器实现根据前文记载的计算方法。
本发明的第五方面,提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时能实现根据前文记载的计算方法。
其中,计算机可读介质可以是本发明的装置、设备、系统中所包含的,也可以是单独存在。
其中,计算机可读存储介质可是任何包含或存储程序的有形介质,其可以是电、磁、光、电磁、红外线、半导体的系统、装置、设备,更具体的例子包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、光纤、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件,或它们任意合适的组合。
其中,计算机可读存储介质也可包括在基带中或作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码,其具体的例子包括但不限于电磁信号、光信号,或它们任意合适的组合。
可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。
Claims (14)
1.一种计算装置,其特征在于,包括:
取指单元,用于从存储器中取出乘累加指令,所述乘累加指令包括指令名、目的地址寄存器、第一源地址寄存器和第二源地址寄存器,所述乘累加指令为单条指令;
解码单元,用于解码所述乘累加指令;
执行单元,用于执行所述解码后的乘累加指令,以根据第一源地址寄存器的指示从所述存储器中读取第一数据,根据第二源地址寄存器的指示从所述存储器中读取第二数据,根据所述乘累加指令对所述第一数据和所述第二数据执行乘累加运算得到输出结果,将所述输出结果保存至所述目的地址寄存器指示的所述存储器中,其中,所述第一数据和第二数据中的至少一个为矩阵;
所述执行单元包括控制单元和运算单元阵列,所述运算单元阵列中的每个运算单元均包括第一输入寄存器和第二输入寄存器;
所述根据所述乘累加指令对所述第一数据和所述第二数据执行乘累加运算,包括:
所述控制单元用于以预设的分配方式将所述读取的第一数据逐个依序分配给所述运算单元阵列中的参与运算的运算单元的第一输入寄存器中;
所述控制单元还用于以预设的分配方式将所述读取的第二数据逐个依序分配给所述运算单元阵列中的所述参与运算的运算单元的第二输入寄存器中;
所述参与运算的运算单元中的每个运算单元对自身的所述第一输入寄存器中存储的第一数据和第二输入寄存器中存储的第二数据进行乘运算得到第一结果,所述参与运算的运算单元以预设累加方式执行累加操作得到最终累加结果,由得到所述最终累加结果的运算单元将最终乘累加结果传输至所述目的地址寄存器指示的存储器中;
所述预设的分配方式包括:
若第一数据为矩阵,第二数据为矩阵,则将所述第一数据和所述第二数据中位于相同行列位置的第一矩阵数据和第二矩阵数据分别分配给同一个运算单元的第一输入寄存器和第二输入寄存器;或,
若第一数据为矩阵,第二数据为向量,则将所述第二数据中的向量以行或列的方向复制为与所述第一数据相同的形状,将所述第一数据和所述复制后的第二数据分别分配给同一个运算单元的第一输入寄存器和第二输入寄存器;或,
若第一数据为矩阵,第二数据为标量,则将所述第二数据中标量复制为与所述第一数据相同的形状,将所述第一数据和所述复制后的第二数据分别分配给同一个运算单元的第一输入寄存器和第二输入寄存器。
2.根据权利要求1所述的计算装置,其特征在于,所述运算单元阵列中的每个运算单元还均包括输出寄存器。
3.根据权利要求2所述的计算装置,其特征在于,所述参与运算的运算单元以预设累加方式执行累加操作得到最终累加结果,包括:
所述参与运算的运算单元依次将自身计算的所述第一结果按照行方向发送至下一所述参与运算的运算单元执行累加计算,得到所述最终累加结果;或,
所述参与运算的运算单元依次将自身计算的所述第一结果按照列方向发送至下一所述参与运算的运算单元执行累加计算,得到所述最终累加结果;或,
所述参与运算的运算单元依次将所述第一结果全部累加操作得到所述最终累加结果。
4.根据权利要求1-3任一项所述的计算装置,其特征在于,
所述第一源地址寄存器的指示包括:所述第一数据在所述存储器中的首地址;
所述第二源地址寄存器的指示包括:所述第二数据在所述存储器中的首地址;
所述目的地址寄存器的指示包括:所述输出结果在所述存储器中的首地址。
5.根据权利要求4所述的计算装置,其特征在于,所述执行单元根据第一源地址寄存器的指示从所述存储器中读取第一数据,包括:
所述执行单元,还用于根据所述第一数据在所述存储器中的首地址以及所述第一数据的属性,从所述存储器中读取所述第一数据;以及,
所述执行单元根据第二源地址寄存器的指示从所述存储器中读取第二数据,包括:
所述执行单元,还用于根据所述第二数据在所述存储器中的首地址以及所述第二数据的属性,从所述存储器中读取所述第二数据;
所述将所述输出结果保存至所述目的地址寄存器指示的所述存储器中,包括:
所述执行单元,还用于根据所述输出结果在所述存储器中的首地址和所述输出结果属性将所述输出结果保存至所述存储器中。
6.根据权利要求5所述的计算装置,其特征在于,还包括定制寄存器,所述定制寄存器用于保存所述第一数据的属性、所述第二数据的属性和所述输出结果的属性;
所述数据属性包括数据形状、数据行列方向间隔,所述输出结果属性包括输出长度。
7.根据权利要求2-3任一项所述的计算装置,其特征在于,每个所述运算单元包括切分子单元和判断子单元;
所述判断子单元,用于判断所述第一数据或所述第二数据的形状是否超过所述运算单元阵列的形状;
响应于所述第一数据或所述第二数据的形状超过所述运算单元阵列的形状,所述切分子单元对所述第一数据或所述第二数据的形状进行切分。
8.根据权利要求4所述的计算装置,其特征在于,每个所述运算单元包括切分子单元和判断子单元;
所述判断子单元,用于判断所述第一数据或所述第二数据的形状是否超过所述运算单元阵列的形状;
响应于所述第一数据或所述第二数据的形状超过所述运算单元阵列的形状,所述切分子单元对所述第一数据或所述第二数据的形状进行切分。
9.根据权利要求5所述的计算装置,其特征在于,每个所述运算单元包括切分子单元和判断子单元;
所述判断子单元,用于判断所述第一数据或所述第二数据的形状是否超过所述运算单元阵列的形状;
响应于所述第一数据或所述第二数据的形状超过所述运算单元阵列的形状,所述切分子单元对所述第一数据或所述第二数据的形状进行切分。
10.根据权利要求6所述的计算装置,其特征在于,每个所述运算单元包括切分子单元和判断子单元;
所述判断子单元,用于判断所述第一数据或所述第二数据的形状是否超过所述运算单元阵列的形状;
响应于所述第一数据或所述第二数据的形状超过所述运算单元阵列的形状,所述切分子单元对所述第一数据或所述第二数据的形状进行切分。
11.一种计算方法,其特征在于,包括:
从存储器中取出乘累加指令,所述乘累加指令包括指令名、目的地址寄存器、第一源地址寄存器和第二源地址寄存器,所述乘累加指令为单条指令;
解码所述乘累加指令;
执行解码后的乘累加指令,以根据第一源地址寄存器的指示从所述存储器中读取第一数据,根据第二源地址寄存器的指示从所述存储器中读取第二数据,根据所述乘累加指令对所述第一数据和所述第二数据执行乘累加运算得到输出结果,并将所述输出结果保存至所述目的地址寄存器指示的所述存储器中,其中,所述第一数据和第二数据中的至少一个为矩阵;
所述根据所述乘累加指令对所述第一数据和所述第二数据执行乘累加运算,包括:
以预设的分配方式将所述读取的第一数据逐个依序分配给运算单元阵列中的参与运算的运算单元中;
以预设的分配方式将所述读取的第二数据逐个依序分配给所述运算单元阵列中的所述参与运算的运算单元中;
所述参与运算的运算单元对分配的所述第一数据和所述第二数据进行乘运算得到第一结果,以预设累加方式执行累加操作得到最终累加结果,并由得到所述最终累加结果的运算单元将最终乘累加结果传输至所述目的地址寄存器指示的存储器中;
所述预设的分配方式包括:
若第一数据为矩阵,第二数据为矩阵,则将所述第一数据和所述第二数据中位于相同行列位置的第一矩阵数据和第二矩阵数据分别分配给同一个运算单元的第一输入寄存器和第二输入寄存器;或,
若第一数据为矩阵,第二数据为向量,则将所述第二数据中的向量以行或列的方向复制为与所述第一数据相同的形状,将所述第一数据和所述复制后的第二数据分别分配给同一个运算单元的第一输入寄存器和第二输入寄存器;或,
若第一数据为矩阵,第二数据为标量,则将所述第二数据中标量复制为与所述第一数据相同的形状,将所述第一数据和所述复制后的第二数据分别分配给同一个运算单元的第一输入寄存器和第二输入寄存器。
12.一种芯片,其特征在于,包括权利要求1-10任一项所述的计算装置。
13.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储单元,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,能使得所述一个或多个处理器实现根据权利要求11所述的计算方法。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,
所述计算机程序被处理器执行时能实现根据权利要求11所述的计算方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910934627.7A CN112579042B (zh) | 2019-09-29 | 2019-09-29 | 计算装置及方法、芯片、电子设备及计算机可读存储介质 |
PCT/CN2020/096384 WO2021057111A1 (zh) | 2019-09-29 | 2020-06-16 | 计算装置及方法、芯片、电子设备、存储介质及程序 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910934627.7A CN112579042B (zh) | 2019-09-29 | 2019-09-29 | 计算装置及方法、芯片、电子设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112579042A CN112579042A (zh) | 2021-03-30 |
CN112579042B true CN112579042B (zh) | 2024-04-19 |
Family
ID=75111174
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910934627.7A Active CN112579042B (zh) | 2019-09-29 | 2019-09-29 | 计算装置及方法、芯片、电子设备及计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112579042B (zh) |
WO (1) | WO2021057111A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114265561B (zh) * | 2021-12-24 | 2024-08-20 | 上海集成电路装备材料产业创新中心有限公司 | 一种数据读取控制方法、芯片和介质 |
CN118094074B (zh) * | 2024-04-28 | 2024-07-23 | 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) | 矩阵乘计算结果累加方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103221916A (zh) * | 2010-09-24 | 2013-07-24 | 英特尔公司 | 执行乘乘累加指令 |
CN106325812A (zh) * | 2015-06-15 | 2017-01-11 | 华为技术有限公司 | 一种针对乘累加运算的处理方法及装置 |
CN107315574A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行矩阵乘运算的装置和方法 |
CN109522254A (zh) * | 2017-10-30 | 2019-03-26 | 上海寒武纪信息科技有限公司 | 运算装置及方法 |
CN109992743A (zh) * | 2017-12-29 | 2019-07-09 | 华为技术有限公司 | 矩阵乘法器 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7395298B2 (en) * | 1995-08-31 | 2008-07-01 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed data |
US7430578B2 (en) * | 2001-10-29 | 2008-09-30 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed byte data |
CN101739235A (zh) * | 2008-11-26 | 2010-06-16 | 中国科学院微电子研究所 | 将32位dsp与通用risc cpu无缝混链的处理器装置 |
CN101986264B (zh) * | 2010-11-25 | 2013-07-31 | 中国人民解放军国防科学技术大学 | 用于simd向量微处理器的多功能浮点乘加运算装置 |
US11513796B2 (en) * | 2017-02-23 | 2022-11-29 | Arm Limited | Multiply-accumulation in a data processing apparatus |
WO2019104695A1 (zh) * | 2017-11-30 | 2019-06-06 | 深圳市大疆创新科技有限公司 | 用于神经网络的运算装置、芯片、设备及相关方法 |
-
2019
- 2019-09-29 CN CN201910934627.7A patent/CN112579042B/zh active Active
-
2020
- 2020-06-16 WO PCT/CN2020/096384 patent/WO2021057111A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103221916A (zh) * | 2010-09-24 | 2013-07-24 | 英特尔公司 | 执行乘乘累加指令 |
CN106325812A (zh) * | 2015-06-15 | 2017-01-11 | 华为技术有限公司 | 一种针对乘累加运算的处理方法及装置 |
CN107315574A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行矩阵乘运算的装置和方法 |
CN109522254A (zh) * | 2017-10-30 | 2019-03-26 | 上海寒武纪信息科技有限公司 | 运算装置及方法 |
CN109992743A (zh) * | 2017-12-29 | 2019-07-09 | 华为技术有限公司 | 矩阵乘法器 |
Also Published As
Publication number | Publication date |
---|---|
CN112579042A (zh) | 2021-03-30 |
WO2021057111A1 (zh) | 2021-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11989258B2 (en) | Performing matrix multiplication in hardware | |
CN107315574B (zh) | 一种用于执行矩阵乘运算的装置和方法 | |
KR102258024B1 (ko) | 엘리먼트 폭들을 변경시키는 명령들을 사용하여 가변 길이 벡터들에 대해 연산하도록 구성된 벡터 프로세서 | |
KR101766183B1 (ko) | 벡터 소팅 알고리즘 및 다른 알고리즘들을 지원하기 위한 트리 구조를 갖춘 기능 유닛 | |
US8595280B2 (en) | Apparatus and method for performing multiply-accumulate operations | |
US9355061B2 (en) | Data processing apparatus and method for performing scan operations | |
US10713059B2 (en) | Heterogeneous graphics processing unit for scheduling thread groups for execution on variable width SIMD units | |
WO2021088563A1 (zh) | 卷积运算电路、装置以及方法 | |
US8595467B2 (en) | Floating point collect and operate | |
CN102640131A (zh) | 并行线程处理器中的一致分支指令 | |
CN112579042B (zh) | 计算装置及方法、芯片、电子设备及计算机可读存储介质 | |
US20140281386A1 (en) | Chaining between exposed vector pipelines | |
KR20210084220A (ko) | 부분 판독/기입을 갖는 재구성 가능한 시스톨릭 어레이를 위한 시스템 및 방법 | |
CN114503126A (zh) | 矩阵运算电路、装置以及方法 | |
US11726757B2 (en) | Processor for performing dynamic programming according to an instruction, and a method for configuring a processor for dynamic programming via an instruction | |
US9569211B2 (en) | Predication in a vector processor | |
CN112348182A (zh) | 一种神经网络maxout层计算装置 | |
CN112074810B (zh) | 并行处理设备 | |
JP2004503872A (ja) | 共同利用コンピュータシステム | |
CN112579971B (zh) | 矩阵运算电路、矩阵运算装置及矩阵运算方法 | |
CN117389512B (zh) | 一种算术逻辑单元alu系统、电子设备和存储介质 | |
CN113362878A (zh) | 用于存储器内计算的方法和用于计算的系统 | |
Yang et al. | Design of the Kydon-RISC processor | |
JPS6361330A (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Country or region after: China Address after: Room 201, No. 6 Fengtong Heng Street, Huangpu District, Guangzhou City, Guangdong Province, 510799 Applicant after: Guangzhou Ximu Semiconductor Technology Co.,Ltd. Address before: Building 202-24, No. 6, Courtyard 1, Gaolizhang Road, Haidian District, Beijing Applicant before: Beijing SIMM Computing Technology Co.,Ltd. Country or region before: China |
|
GR01 | Patent grant | ||
GR01 | Patent grant |