CN111242293B - 一种处理部件、数据处理的方法以及电子设备 - Google Patents
一种处理部件、数据处理的方法以及电子设备 Download PDFInfo
- Publication number
- CN111242293B CN111242293B CN202010035196.3A CN202010035196A CN111242293B CN 111242293 B CN111242293 B CN 111242293B CN 202010035196 A CN202010035196 A CN 202010035196A CN 111242293 B CN111242293 B CN 111242293B
- Authority
- CN
- China
- Prior art keywords
- data
- processed
- component
- input
- operation result
- 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
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/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本申请公开了一种处理部件、数据处理的方法以及电子设备,用于提升处理部件的运行效率。本申请处理部件包括至少一个算术逻辑单元ALU,ALU包括译码与参数输入通道、数据输入通道、运算组件、第一端口交叉开关矩阵以及第二端口交叉开关矩阵;译码与参数输入通道,用于接收执行参数;数据输入通道,用于接收第一待处理数据以及第二待处理数据;第一端口交叉开关矩阵,用于将第一待处理数据输入至运算组件;第二端口交叉开关矩阵,用于将第二待处理数据输入至运算组件;运算组件,用于根据执行参数对第一待处理数据以及第二待处理数据进行处理,得到目标运算结果。
Description
技术领域
本申请涉及芯片技术领域,尤其涉及一种处理部件、数据处理的方法以及电子设备。
背景技术
伴随着半导体技术的发展,硬件的计算能力得到了迅速的增强,各种大数据的处理时间逐渐减少。基于此,人工神经网络技术也得到了进一步发展。而神经网络通常都非常庞大,这也意味着这些神经网络需要大量的计算资源和存储资源,因此,对深度学习处理器的处理效率也有更好地要求。
目前,通常采用基于多路选通的算术逻辑单元(arithmetic and logic unit,ALU)设计,即设计中设置有加法、乘法、移位以及比较等操作,然后将多个运算单元并列,通过输入和输出选择器来实现运算过程。
然而,在ALU中每次只能使一个运算单元完成运算,即一次输入的数据在一个运算周期内只能执行一次计算,其中,一个运算周期表示数据输入至ALU直至从ALU中输出的一个周期。如果需要执行多次运算,则需要在不同的运算周期内通过不同的指令来执行,从而降低了处理部件的运行效率。
发明内容
本申请实施例提供了一种处理部件、数据处理的方法以及电子设备,可以通过超长指令字配置后,实现连续数据输入下的连续运算,从而提升处理部件的运行效率。
有鉴于此,本申请第一方面提供一种处理部件,处理部件包括至少一个算术逻辑单元ALU,ALU包括译码与参数输入通道、数据输入通道、运算组件、第一端口交叉开关矩阵以及第二端口交叉开关矩阵;
译码与参数输入通道,用于接收执行参数,其中,执行参数为基于超长指令字的解析后得到的;
数据输入通道,用于接收第一待处理数据以及第二待处理数据;
第一端口交叉开关矩阵,用于将第一待处理数据输入至运算组件;
第二端口交叉开关矩阵,用于将第二待处理数据输入至运算组件;
运算组件,用于根据执行参数对第一待处理数据以及第二待处理数据进行处理,得到目标运算结果。
本申请第二方面提供一种数据处理的方法,方法应用于处理部件,处理部件包括至少一个算术逻辑单元ALU,ALU包括译码与参数输入通道、数据输入通道、运算组件、第一端口交叉开关矩阵以及第二端口交叉开关矩阵,包括:
通过译码与参数输入通道接收执行参数,其中,执行参数为基于超长指令字的解析后得到的;
通过数据输入通道接收第一待处理数据以及第二待处理数据;
通过第一端口交叉开关矩阵将第一待处理数据输入至运算组件;
通过第二端口交叉开关矩阵将第二待处理数据输入至运算组件;
根据超长指令字中的执行参数,通过运算组件对第一待处理数据以及第二待处理数据进行处理,得到目标运算结果。
在一种可能的设计中,在本申请实施例的第二方面的第一种实现方式中,执行参数携带运算模式标识;
数据处理的方法还包括:
通过数据输入通道接收数据写入地址;
通过第一端口交叉开关矩阵将第一待处理数据输入至运算组件,包括:
根据执行参数,通过第一端口交叉开关矩阵从第一读取地址所对应的数据输入通道读取第一待处理数据;
通过第二端口交叉开关矩阵将第二待处理数据输入至运算组件,包括:
根据执行参数,通过第二端口交叉开关矩阵从第二读取地址所对应的数据输入通道读取第二待处理数据;
根据超长指令字中的执行参数,通过运算组件对第一待处理数据以及第二待处理数据进行处理,得到目标运算结果,包括:
根据执行参数,通过运算组件采用运算模式标识所对应的运算模式对数据进行处理,得到中间运算结果;
通过运算组件对中间运算结果进行处理,得到目标运算结果;
通过运算组件将目标运算结果输入至第一端口交叉开关矩阵;
根据数据写入地址,通过第一端口交叉开关矩阵输出目标运算结果。
在一种可能的设计中,在本申请实施例的第二方面的第二种实现方式中,数据处理的方法还包括:
通过数据输入通道接收控制信号以及窗口标识;
其中,控制信号包括特征图结束标识以及数据有效标识中的至少一项,其中,特征图结束标识表示一个特征图内的最后一个数据,数据有效标识表示启动ALU;
窗口标识包括起始窗口标识以及结束窗口标识中的至少一项,起始窗口标识表示一个窗口内的第一个数据,结束窗口标识表示一个窗口内的最后一个数据。
在一种可能的设计中,在本申请实施例的第二方面的第三种实现方式中,数据输入通道至少包括张量输入通道、标量输入通道以及地址输入通道;
通过张量输入通道接收第一待处理数据和第二待处理数据中的至少一种,其中,第一待处理数据与第二待处理数据均属于张量所包含的数据;
通过标量输入通道接收第二待处理数据,其中,第二待处理数据属于标量所对应的数据;
通过地址输入通道接收结果输出地址,其中,结果输出地址为写入存储器的地址。
在一种可能的设计中,在本申请实施例的第二方面的第四种实现方式中,第二端口交叉开关矩阵包括延迟调节器;
通过第一端口交叉开关矩阵将第一待处理数据输入至运算组件,包括:
通过第一端口交叉开关矩阵在第一时钟周期内,将第一待处理数据输入至运算组件;
根据执行参数,通过运算组件对第一待处理数据以及第二待处理数据进行处理,得到目标运算结果,包括:
通过运算组件在第二时钟周期内,向第一端口交叉开关矩阵输出中间运算结果,其中,中间运算结果为根据第一待处理数据运算后得到的,第二时钟周期与第一时钟周期之间间隔M个时钟周期,M为大于或等于1的整数;
通过第一端口交叉开关矩阵在第三时钟周期内,将中间运算结果输入至运算组件,其中,第三时钟周期与第一时钟周期之间间隔N个时钟周期,N为大于或等于M的整数;
通过延迟调节器在第三时钟周期内,将第二待处理数据输入至运算组件。
在一种可能的设计中,在本申请实施例的第二方面的第五种实现方式中,运算组件至少包括第一运算组件;
通过第一端口交叉开关矩阵将第一待处理数据输入至运算组件,包括:
通过第一端口交叉开关矩阵将第一待处理数据输入至第一运算组件;
通过第二端口交叉开关矩阵将第二待处理数据输入至运算组件,包括:
通过第二端口交叉开关矩阵将第二待处理数据输入至第一运算组件;
根据执行参数,通过第一运算组件对第一待处理数据进行处理,得到中间运算结果;
通过第一运算组件向第一端口交叉开关矩阵输出中间运算结果;
通过第一端口交叉开关矩阵将中间运算结果输入至第一运算组件;
根据执行参数,通过第一运算组件对中间运算结果以及第二待处理数据进行处理,得到目标运算结果。
在一种可能的设计中,在本申请实施例的第二方面的第六种实现方式中,运算组件至少包括第一运算组件;
通过第一端口交叉开关矩阵将第一待处理数据输入至运算组件,包括:
通过第一端口交叉开关矩阵将第一待处理数据输入至第一运算组件;
通过第二端口交叉开关矩阵将第二待处理数据输入至运算组件,包括:
通过第二端口交叉开关矩阵将第二待处理数据输入至第一运算组件;
根据执行参数,通过第一运算组件对第一待处理数据以及第二待处理数据进行处理,得到中间运算结果;
通过第一运算组件向第一端口交叉开关矩阵输出中间运算结果;
通过第一端口交叉开关矩阵将中间运算结果输入至第一运算组件;
根据执行参数,通过第一运算组件对中间运算结果以及第二待处理数据进行处理,得到目标运算结果。
在一种可能的设计中,在本申请实施例的第二方面的第七种实现方式中,运算组件至少包括第一运算组件,数据处理的方法还包括:
通过数据输入通道接收第三待处理数据;
通过第一端口交叉开关矩阵将第一待处理数据输入至运算组件,包括:
通过第一端口交叉开关矩阵将第一待处理数据输入至第一运算组件;
通过第二端口交叉开关矩阵将第二待处理数据输入至运算组件,包括:
通过第二端口交叉开关矩阵将第二待处理数据以及第三待处理数据输入至第一运算组件;
根据执行参数,通过第一运算组件对第一待处理数据以及第二待处理数据进行处理,得到中间运算结果;
通过第一运算组件向第一端口交叉开关矩阵输出中间运算结果;
通过第一端口交叉开关矩阵将中间运算结果输入至第一运算组件;
根据执行参数,通过第一运算组件对中间运算结果以及第三待处理数据进行处理,得到目标运算结果。
在一种可能的设计中,在本申请实施例的第二方面的第八种实现方式中,运算组件至少包括第一运算组件以及第二运算组件;
通过第一端口交叉开关矩阵将第一待处理数据输入至运算组件,包括:
通过第一端口交叉开关矩阵将第一待处理数据输入至第一运算组件;
通过第二端口交叉开关矩阵将第二待处理数据输入至运算组件,包括:
通过第二端口交叉开关矩阵将第二待处理数据输入至第二运算组件;
根据执行参数,通过第一运算组件对第一待处理数据进行处理,得到中间运算结果;
通过第一运算组件向第一端口交叉开关矩阵输出中间运算结果;
通过第一端口交叉开关矩阵将中间运算结果输入至第二运算组件;
根据执行参数,通过第二运算组件对中间运算结果以及第二待处理数据进行处理,得到目标运算结果。
在一种可能的设计中,在本申请实施例的第二方面的第九种实现方式中,运算组件至少包括第一运算组件以及第二运算组件;
通过第一端口交叉开关矩阵将第一待处理数据输入至运算组件,包括:
通过第一端口交叉开关矩阵将第一待处理数据输入至第一运算组件;
通过第二端口交叉开关矩阵将第二待处理数据输入至运算组件,包括:
通过第二端口交叉开关矩阵将第二待处理数据输入至第一运算组件以及第二运算组件;
根据执行参数,通过第一运算组件对第一待处理数据以及第二待处理数据进行处理,得到中间运算结果;
通过第一运算组件向第一端口交叉开关矩阵输出中间运算结果;
通过第一端口交叉开关矩阵将中间运算结果输入至第二运算组件;
根据执行参数,通过第二运算组件对中间运算结果以及第二待处理数据进行处理,得到目标运算结果。
在一种可能的设计中,在本申请实施例的第二方面的第十种实现方式中,运算组件至少包括第一运算组件以及第二运算组件,数据处理的方法还包括:
通过数据输入通道接收第三待处理数据;
通过第一端口交叉开关矩阵将第一待处理数据输入至第一运算组件;
通过第二端口交叉开关矩阵将第二待处理数据输入至第一运算组件,以及将第三待处理数据输入至第二运算组件;
根据执行参数,通过第一运算组件对第一待处理数据以及第二待处理数据进行处理,得到中间运算结果;
通过第一运算组件向第一端口交叉开关矩阵输出中间运算结果;
通过第一端口交叉开关矩阵中间运算结果输入至第二运算组件;
根据执行参数,通过第二运算组件对中间运算结果以及第三待处理数据进行处理,得到目标运算结果。
在一种可能的设计中,在本申请实施例的第二方面的第十一种实现方式中,运算组件包括比较器、加法器、乘法器以及查表器中的至少一项;
通过比较器对至少一个待处理数据进行数值比较操作;
通过加法器对至少一个待处理数据进行数值求和操作;
通过乘法器对两个待处理数据进行数值相乘操作;
通过查表器根据待处理数据进行查表操作,或,根据待处理数据进行线性插值操作以及查表操作。
在一种可能的设计中,在本申请实施例的第二方面的第十二种实现方式中,ALU还包括精度转换模块,数据处理的方法还包括:
通过数据输入通道将第一待处理数据以及第二待处理数据输入至精度转换模块,其中,第一待处理数据对应于第一数据格式,第二待处理数据对应于第二数据格式;
通过精度转换模块将第一待处理数据由第一数据格式转换为第三数据格式,并输出转换后的第一待处理数据;
通过精度转换模块将第二待处理数据由第二数据格式转换为第四数据格式,并输出转换后的第二待处理数据,其中,第四数据格式与第二数据格式为不同的数据格式;
通过运算组件将目标运算结果输入至第一端口交叉开关矩阵,其中,目标运算结果对应于第五数据格式;
通过第一端口交叉开关矩阵将目标运算结果输入至精度转换模块;
通过精度转换模块将目标运算结果输由第五数据格式转换为第六数据格式,并输出转换后的目标运算结果。
本申请第三方面提供一种电子设备,电子设备包括至少一个算术逻辑单元ALU,ALU包括译码与参数输入通道、数据输入通道、运算组件、第一端口交叉开关矩阵以及第二端口交叉开关矩阵;
电子设备包括:
一个或多个处理器;
一个或多个存储器;
一个或多个存储器存储有一个或多个计算机程序,一个或多个计算机程序包括指令,当指令被一个或多个处理器执行时,使得电子设备执行上述各方面所述的方法。
本申请第四方面提供一种芯片系统,包括:
一个或多个处理器;
一个或多个通信接口;
一个或多个存储器,所述存储器、所述通信接口,和所述至少一个处理器通过线路互联,所述至少一个存储器中存储有指令,所述指令被所述处理器执行,使得所述处理器执行上述各方面所述的方法。
本申请的第五方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请实施例中,提供了一种处理部件,该处理部件包括至少一个ALU,ALU包括译码与参数输入通道、数据输入通道、运算组件、第一端口交叉开关矩阵以及第二端口交叉开关矩阵,其中译码与参数输入通道用于接收执行参数,而该执行参数为基于超长指令字的解析后得到的,数据输入通道用于接收第一待处理数据以及第二待处理数据,第一端口交叉开关矩阵用于将第一待处理数据输入至运算组件,第二端口交叉开关矩阵用于将第二待处理数据输入至运算组件,运算组件用于根据执行参数,对第一待处理数据以及第二待处理数据进行处理,从而得到目标运算结果。通过上述方式,第一端口交叉开关矩阵以及第二端口交叉开关矩阵对数据的输入进行控制,使得数据流向运算组件,运算组件可以基于执行参数,在一个运算周期对数据进行多次处理,最终输出超长指令字后的运算结果,从而提升处理部件的运行效率。
附图说明
图1为本申请实施例中处理部件一个架构示意图;
图2为本申请实施例中处理部件一个实施例示意图;
图3为本申请实施例中待处理数据一个实施例示意图;
图4为本申请实施例中处理部件另一实施例示意图;
图5为本申请实施例中的一个数据流向示意图;
图6为本申请实施例中的另一数据流向示意图;
图7为本申请实施例中的另一个数据流向示意图;
图8为本申请实施例中的另一个数据流向示意图;
图9为本申请实施例中的一个数据流向示意图;
图10为本申请实施例中的一个数据流向示意图;
图11为本申请实施例中数据处理的方法一个实施例示意图。
具体实施方式
本申请实施例提供了一种处理部件、数据处理的方法以及电子设备,可以通过超长指令字配置后,实现连续数据输入下的连续运算,从而提升处理部件的运行效率。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“对应于”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应理解,本申请的处理部件可以应用于深度学习处理器中,其计算类型包括但不限于张量计算,向量计算以及标量计算,其中,张量运算包括但不限于卷积运算以及多批量(batch)下的矩阵间运算,向量运算则可以对三维张量中各个深度下的每个二维平面上,进行基于滑窗的运算,向量运算针对不存在深度方向的操作,例如池化(pool)、上采样(upsampling)、深度可分离卷积结构(depthwise separable convolution)、激活(activation)函数以及pointwise操作等,其中,pointwise操作可以是由两个高度宽度以及深度均相同的张量,将其对应位置元素之间的加、减、乘、除或比较等操作。标量运算可以实现控制操作,参数运算以及循环次数调度等。通常采用基于多路选通的算术逻辑单元(arithmetic and logic unit,ALU)设计,即设计中设置有加法、乘法、移位以及比较等操作,然后将多个运算单元并列,通过输入和输出选择器来实现前述运算。
为了提升深度学习处理器的运行效率,本申请实施例提供了一种处理部件,请参阅图1,图1为本申请实施例中处理部件一个架构示意图,如图所示,处理部件至少一个算术逻辑单元(arithmetic and logic unit,ALU),而该ALU可以包括译码与参数输入通道、数据输入通道、运算组件、第一端口交叉开关矩阵(Port Crossbar)、第二端口交叉开关矩阵、精度转换模块、选择器以及延迟调节器。且该运算组件可以包括但不限于比较器,乘法器,加法器以及查表器,数据输入通道包括但不限于张量输入通道,标量输入通道,以及地址输入通道,精度转换模块可以包括至少一个精度转换模块。
译码与参数输入通道可以接收查表处理处理参数,加法处理处理参数,乘法处理处理参数,令以及比较处理参数,而前述处理参数经过译码之后可以得到运算组件所设定的执行参数,即前述处理指令可携带运算参数,通过译码与参数输入通道将运算参数传递给对应的运算组件,例如,比较器可以接收到译码与参数输入通道传输的比较运算参数,乘法器可以接收到译码与参数输入通道传输的乘法运算参数,加法器可以接收到译码与参数输入通道传输的加法运算参数,而查表器可以接收到译码与参数输入通道传输的查表运算参数。需要说明的是,查找表是可配置的,在运算之前可以配置好,且表内数据固定,在后续的运算中可以直接根据数据值进行查表。
张量输入通道可以接收张量数据A(Ta_in),张量数据B(Tb_in)以及张量数据C(Tc_in),标量输入通道可以接收标量数据A(a_in)、标量数据B(b_in)以及标量数据C(c_in)。上述数据可以通过张量输入通道以及标量输入通道输入至精度转换模块A,由精度转换模块A对数据进行格式转换。精度转换模块A将格式转换后的张量数据A(Ta_temp)输入至第一端口交叉开关矩阵,还可以将格式转换后的标量数据A(a_temp)、标量数据B(b_temp)以及标量数据C(c_temp)输入至第二端口交叉开关矩阵,或者将格式转换后的张量数据A(Ta_temp)、张量数据B(Tb_temp)以及张量数据C(Tc_temp)输入至第二端口交叉开关矩阵中的延迟调节器(delay adjust),延迟调节器与选择器相连,选择器可以对张量数据A(Ta_temp)、张量数据B(Tb_temp)以及张量数据C(Tc_temp)进行通路选择,延迟调节器可以在时钟周期内将选择器所传输的数据输入至运算组件。需要说明的是,延迟调节器可为一个或多个,延迟调节器的最大数量可以与输入张量的通道数量一致。
第一端口交叉开关矩阵可以将精度转换模块A输入的标量数据A(a_temp)输入至比较器、乘法器、加法器以及查表器中的任一运算组件,第二端口交叉开关矩阵可以将A(Ta_temp)、张量数据B(Tb_temp)、张量数据C(Tc_temp)、标量数据A(a_temp)、标量数据B(b_temp)以及标量数据C(c_temp)输入至比较器、乘法器、加法器以及查表器任一运算组件。应理解,在实际应用中,需要通过第二端口交叉开关矩阵对标量数据A(a_temp)、标量数据B(b_temp)以及标量数据C(c_temp)进行复制,将各标量数据展开为一个各元素相同的向量,再将该向量输入至比较器、乘法器、加法器以及查表器任一运算组件。
运算组件可以根据译码与参数输入通道输入的比较运算参数,乘法运算参数,加法运算参数以及查表运算参数中至少两个参数,对第一端口交叉开关矩阵以及第二端口交叉开关矩阵传输的数据进行运算处理,从而得到目标运算结果(T_out),然后将该目标运算结果(T_out)输入至第一端口交叉开关矩阵,第一端口交叉开关矩阵再将目标运算结果(T_out)输入至精度转换模块B,然后精度转换模块B可以对目标运算结果(T_out)进行格式转换,并将格式转换后的目标运算结果(T_out)输出,至此完成数据处理。其次,运算组件中的比较器还可以根据比较运算参数,对第一端口交叉开关矩阵以及第二端口交叉开关矩阵传输的数据进行运算处理,从而得到中间运算结果,然后将该中间运算结果输入至第一端口交叉开关矩阵,第一端口交叉开关矩阵将该中间运算结果输入以及第二端口交叉开关矩阵传输的数据输入至运算组件中的乘法器,乘法器根据乘法运算参数进行运算处理后可以得到目标运算结果(T_out),然后乘法器将该目标运算结果(T_out)输入至第一端口交叉开关矩阵,第一端口交叉开关矩阵再将目标运算结果(T_out)输入至精度转换模块B,然后精度转换模块B可以对目标运算结果(T_out)进行格式转换,并将格式转换后的目标运算结果(T_out)输出,至此完成数据处理。
虽然图1中仅示出了1个译码与参数输入通道,1个数据输入通道,4个运算组件,1个第一端口交叉开关矩阵,1个第二端口交叉开关矩阵,2个精度转换模块,1个选择器以及1个延迟调节器,但应理解,图1中的示例仅用于理解本方案,在实际应用中,处理部件中器件的数量均应当结合实际情况灵活确定。
结合上述介绍,本申请提出了一种处理部件,下面对本申请中的处理部件进行详细描述,请参阅图2,图2为本申请实施例中处理部件一个实施例示意图,如图所示,处理部件包括至少一个ALU,ALU可以包括:
译码与参数输入通道101、数据输入通道102、运算组件103、第一端口交叉开关矩阵104以及第二端口交叉开关矩阵105;
译码与参数输入通道101,用于接收执行参数,其中,执行参数为基于超长指令字的解析后得到的;
数据输入通道102,用于接收第一待处理数据以及第二待处理数据;
第一端口交叉开关矩阵104,用于将第一待处理数据输入至运算组件103;
第二端口交叉开关矩阵105,用于将第二待处理数据输入至运算组件103;
运算组件103,用于根据执行参数对第一待处理数据以及第二待处理数据进行处理,得到目标运算结果。
本实施例中,运算组件103可以包括运算组件A至运算组件D中至少一种运算组件,每种类型的运算组件可以是一个,也可以是多个。虽然图2中仅以一个ALU作为示例进行说明,但应当理解,图2中的示例仅用于理解本方案,在实际应用中,ALU的数量均应当结合实际情况灵活确定,且该ALU中的器件数量也应当结合实际情况灵活确定。
译码与参数输入通道101可以接收超长指令字(very long instruction word,VLIW),通过,该执行参数为基于超长指令字的解析后得到的,具体地,超长指令字可以在ALU运行之前配置执行参数,应理解,超长指令字可以对应一个操作,超长指令字也可以对应多个操作,本实施例中以超长指令字对应多个操作为示例进行说明,在实际应用中,需要根据实际情况确定。请参阅图2,译码与参数输入通道101接收到基于超长指令字的解析后得到的执行参数,超长指令字可以包括查表处理指令,加法处理指令,乘法处理指令以及比较处理指令,每个处理指令携带有对应的运算参数,译码与参数输入通道101可以将运算参数传递给对应的运算组件103。例如,查表处理指令可以携带查表运算参数,加法处理指令可以携带加法运算参数,应理解,在实际应用中,超长指令字还可以包括其他指令以及对应的运算参数,在此不做穷举。
数据输入通道102可以接收第一待处理数据以及第二待处理数据,请参阅图2,数据输入通道可以接收张量数据A(Ta_in)、张量数据B(Tb_in)、张量数据C(Tc_in)、标量数据A(a_in)、标量数据B(b_in)、标量数据C(c_in)以及结果输出地址。第一待处理数据可以为张量数据A,第二待处理数据可以为张量数据A,张量数据B,张量数据C,标量数据A,标量数据B以及标量数据C中任一数据。具体地,张量数据A,张量数据B以及张量数据C来源于片上缓存,标量数据A、标量数据B以及标量数据C则可以来源于指令参数,前述数据的精度包括但不限于int8,uint8,int32,双精度浮点数(double precision floating-point,fp64)、单精度浮点数(single precision floating-point,fp32)以及半精度浮点数(half-precision floating-point,fp16)。
在数据输入通道102向第一端口交叉开关矩阵104输入第一待处理数据后,第一端口交叉开关矩阵104可以将第一待处理数据输入至运算组件103。而数据输入通道102向第二端口交叉开关矩阵105输入第二待处理数据后,第二端口交叉开关矩阵105可以将该第二待处理数据输入至运算组件103。当运算组件103接收到基于超长指令字的解析后得到的执行参数后,根据该执行参数对第一端口交叉开关矩阵104输入的第一待处理数据,以及第二端口交叉开关矩阵105输入的第二待处理数据进行处理,从而得到目标运算结果,第一端口交叉开关矩阵104输出目标运算结果。应理解,因为存在求平方的需求,需要第一待处理数据从第一端口交叉开关矩阵104以及第二端口交叉开关矩阵105同时输入至运算组件103,因此数据输入通道102可以向第一端口交叉开关矩阵104输入第一待处理数据,还可以向第二端口交叉开关矩阵105输入第一待处理数据以及第二待处理数据。
为了便于理解,请参与表1以及表2,表1为常规处理部件在各个时钟周期内的部件运行状态示意表,而表2为本实施例中处理部件在各个时钟周期内的部件运行状态示意表,应理解,表1以及表2仅为了便于理解本实施例,在实际应用中,时钟周期以及器件还可以为其他,在此不进行穷举。
表1
器件 | 时钟周期1 | 时钟周期2 | 时钟周期3 | 时钟周期4 | 时钟周期5 | 时钟周期6 | 时钟周期7 |
载入器 | 取指 | 译码 | 执行 | 写回 | 取指 | 译码 | 执行 |
乘法器 | - | 取指 | 译码 | 执行 | 写回 | 取指 | 译码 |
加法器 | - | - | 取指 | 译码 | 执行 | 写回 | 取指 |
存储器 | - | - | - | 取指 | 译码 | 执行 | 写回 |
表2
器件 | 时钟周期1 | 时钟周期2 | 时钟周期3 | 时钟周期4 | 时钟周期5 | 时钟周期6 | 时钟周期7 |
载入器 | 取指 | 译码 | 执行 | 执行 | 执行 | 执行 | 执行 |
乘法器 | 取指 | 译码 | 等待 | 执行 | 执行 | 执行 | 执行 |
加法器 | 取指 | 译码 | 等待 | 等待 | 执行 | 执行 | 执行 |
存储器 | 取指 | 译码 | 等待 | 等待 | 等待 | 执行 | 执行 |
由表1可知,器件的运行状态顺序根据时钟周期进行变化,在一个时钟周期内部不会出现重复运行状态,当进行张量数据计算时,则针对每个深度下的张量数据需要一条或多条指令,令取指单元和译码单元始终处于运行状态。也就是说,一个周期执行一条指令,这个指令可为运算指令、等待指令或者执行指令等。只有在执行运算指令时,才会驱动ALU,而不是每个时钟周期都可驱动ALU,从而降低了效率。由表2可知,在一个时钟周期内部可以出现重复运行状态,支持复合操作和ALU中多个部件的并行执行,因此,本申请提供的技术方案相对于常规的技术方案具有更高的处理效率。
本申请实施例中,提供了一种处理部件,第一端口交叉开关矩阵以及第二端口交叉开关矩阵对数据的输入进行控制,使得数据流向运算组件,运算组件可以基于执行参数,在一个运算周期对数据进行多次处理,最终输出超长指令字后的运算结果,从而提升处理部件的运行效率。
可选地,在上述图2所对应的实施例的基础上,本申请实施例提供的处理部件的另一实施例中,执行参数携带运算模式标识;
数据输入通道102,还用于接收数据写入地址;
第一端口交叉开关矩阵104,具体用于从第一读取地址所对应的数据输入通道读取第一待处理数据;
第二端口交叉开关矩阵105,具体用于从第二读取地址所对应的数据输入通道读取第二待处理数据;
运算组件103,具体用于根据执行参数,采用运算模式标识所对应的运算模式对数据进行处理,得到中间运算结果;
对中间运算结果进行处理,得到目标运算结果;
将目标运算结果输入至第一端口交叉开关矩阵;
第一端口交叉开关矩阵,还用于根据数据写入地址,输出目标运算结果。
本实施例中,ALU外部的地址生成单元(address generation unit,AGU)可以生成动态的地址,比如生成第一读取地址和第二读取地址。其中,该第一读取地址对应于一个数据输入通道102,第一端口交叉开关矩阵104可以根据该执行参数,从第一读取地址所对应的数据输入通道102读取第一待处理数据。第二读取地址对应于一个数据输入通道102,因此第二端口交叉开关矩阵105可以根据该执行参数,从第二读取地址所对应的数据输入通道102读取第二待处理数据。
执行参数可以携带运算模式标识,该运算模式标识可以指示所对应的运算模式,因此根据该执行参数,运算组件103可以采用运算模式标识所对应的运算模式对数据进行处理,得到中间运算结果,然后根据该执行参数携带的第一读取地址,将中间运算结果输出至该第一读取地址。另外,第一待处理数据以及第二待处理数据可以包含随路的控制信号,例如window_start以及window_end等,该控制信号可以和第一待处理数据以及第二待处理数据一起随路传递,在ALU的各个模块中,根据配置参数确定使用哪个随路的控制信号作为有效的触发信号,因此运算组件103可以根据前述触发信号采用对应的运算模式对数据进行处理,得到目标运算结果,然后根据该执行参数携带的第二读取地址,将目标运算结果输出至该第二读取地址。具体地,运算模式可以包括但不限于比较(compare,CMP)运算模式、加法(add,ADD)运算模式、乘法(multiplication,MUL)运算模式以及查表(look up table,LUT)运算模式。
比较运算模式可以用于数据的对比。具体地,FindMax(A)可以搜索单输入数据起止之间的最大值,FindMin(A)可以搜索单输入数据起止之间的最小值。
Max(A,B)用于双输入,可以在每个时钟周期中从端口交叉开关矩阵中取两个数据并获得两者中的最大值,Min(A,B)也用于双输入,可以在每个时钟周期中从端口交叉开关矩阵中取两个数据并获得两者中的最小值。
Abs(A)用于单输入,可以取输入数据的绝对值。
(data>scalar_a)if data:scalar_b以及(data<scalar_a)if data:scalar_b均用于三输入,也就是在括号内的条件为真时,则输出冒号前对应数据,在括号内的条件为假时,则输出冒号后对应数据,例如scalar_a为-1,scalar_b为1,data为0,那么(data>scalar_a)if data:scalar_b可以输出0,(data<scalar_a)if data:scalar_b可以输出1。
Max(Min(A,scalar_a),scalar_b)where scalar_a>scalar_b用于三输入,主要用于上下钳位,上下钳位包括两个阈值,当大于或者小于阈值,就输出为阈值,上下钳位只能输出上下阈值之间的数值,例如阈值1和-1,当输入数据为-5时,则输出数据为-1,而当数据为3时,则输出数据为1。
加法运算模式可以将两个数据相加,具体地,Add(A,B)用于双输入,可以每个时钟周期从端口交叉开关矩阵中取两个数据并获得两者之和,适用于标量数据,例如在一个时钟周期中获取到两个数据分别为2以及6,那么Add(A,B)可以输出8。应理解,在实际应用中,向量处理器可以包括多个ALU,每个ALU对应C方向的一个通道,当加法器配置为Add(A,B)模式时,所有C通道的ALU同时实现加法操作,输出一个向量,而对应其中的一个ALU,输出向量中的一个元素,此时该元素可以称为一个标量,因此也可以进行Add(A,B)模式的运算。
Accumulator(A)用于单输入,可以在数据起止之间的数据求和,例如第一个时钟周期输入的数据为5,而第二个时钟周期输入的数据为8,根据Accumulator(A)可以输出13。
Sub(A,B)用于双输入,可以每个时钟周期从端口交叉开关矩阵中取两个数据并获得两者之差,并且仅用于标量数据和数据量数据,例如在一个时钟周期中获取到两个数据分别为6以及2,那么Sub(A,B)可以输出4。乘法运算模式与加法运算模式类似。
查表运算模式可以采用查表与线性插值的实现方式,为了便于理解,请参阅表3,表3为本实施例中查表运算模式下的一个示意表。
表3
键(key) | 值(value) |
1 | 5 |
3 | 6 |
5 | 7 |
7 | 8 |
9 | 9 |
11 | 10 |
由表3可见,查表运算模式对应的示例表中,输入数据与输出数据有着一一对应的关系,例如,若输入数据为3,则可以查表得到值为6。若输入数据为8,则需要通过线性插值得到值,将输入数据8插入至7以及9之间,从而模拟出一个值,例如8.5。应理解,本实施例仅以取平均值为示例进行说明,在实际应用中,还可以根据方差以及标准差等其他方式进行计算,本实施例中不予以限定。
应理解,为了便于理解,本实施例中以中间运算为一个时钟周期内输出的一个值为示例进行说明,在实际应用中,中间运算结果表示一个时钟周期内输出的一个运算结果,该运算结果可以为向量,而对于多个时钟周期而言,会得到相应的数据流。
本申请实施例中,通过上述方式,运算组件可以基于执行参数,确定运算模式并对数据进行处理,最终向对应的输出地址输出运算后的运算结果,从而提升处理部件的准确度以及运行效率。
可选地,在上述图2所对应的实施例的基础上,本申请实施例提供的处理部件的另一实施例中,数据输入通道102还用于接收控制信号以及窗口标识;
其中,控制信号包括特征图结束标识以及数据有效标识中的至少一项,其中,特征图结束标识表示一个特征图内的最后一个数据,数据有效标识表示启动ALU;
窗口标识包括起始窗口标识以及结束窗口标识中的至少一项,起始窗口标识表示一个窗口内的第一个数据,结束窗口标识表示一个窗口内的最后一个数据。
本实施例中,数据输入通道102还可以接收控制信号以及窗口标识,该控制信号包括特征图结束标识以及数据有效标识中的至少一项,并且该特征图结束标识可以表示一个特征图内的最后一个数据,数据有效标识表示启动ALU,具体用于驱动ALU中当前操作所需的执行部件,比如当前操作为运算操作,则驱动ALU中与数据转发、运算和精度转换相关的部件。而窗口标识则包括起始窗口标识(window_start)以及结束窗口标识(window_end)中的至少一项,起始窗口标识可以表示一个窗口内的第一个数据,结束窗口标识表示一个窗口内的最后一个数据。
为了便于理解,以待处理数据为张量数据为示例进行说明,请参与图3,图3为本申请实施例中待处理数据一个实施例示意图,如图所示,图3中(A)所示的张量A1可以存储在片外存储器中,若张量A1的数据量较大,则需要通过步骤S1从片外存储器中加载该张量A1的一部分,获取到一个子张量A2。具体地,张量A1的高和宽较大的情况下,假设张量A1为1024(高)*1024(宽)*128(深度)时,在步骤S1中可以先切割深度128的张量,然后对该张量进行切割得到子张量A2。张量A1的高和宽较小的情况下,假设张量A1为128(高)*128(宽)*128(深度),在步骤S1中可以直接将张量A1切割若干份,得到子张量A2,需要说明的是,A2的深度小于或等于A1深度。
通过步骤S1得到子张量A2后,若子张量A2的深度为M,而ALU的数量为m,则可以截取子张量A2深度为m的一部分,由此得到图3中(A)所示张量数据A3,假设张量数据A3的深度为m,可以将该张量数据A3在高度和宽度的方向上进行滑窗,可以得到深度为m的窗口数据A4。
ALU外的AGU可以根据控制部分的地址读取模块的参数配置,将窗口以步幅(stride)为单位在各个深度的二维数据上,每滑动一个位置,将窗口数据A4内的数据从片上缓存内顺次读出,此时,多个窗口数据A4读出的数据形成连续不断的数据流。在每个时钟周期,将窗口内同一坐标下,且不同深度的m个数据分别输入至m个ALU进行运算。窗口数据A4中可以包括多个数据(比如3*3*m个数据)。如图3中(B)所示出为窗口数据A4中的多个数据。一个张量中第一个窗口的第一个向量数据可以携带有数据有效标识,而一个特征图中的最后一个向量数据可以携带特征图结束标识,将窗口数据A4输入至ALU A5,ALU A5可以通过数据输入通道接收控制信号,控制信号中包括特征图结束标识以及数据有效标识中的至少一项,若ALU A5获取到数据有效标识,则可以启动ALU并开始执行运算,而当ALU A5获取到特征图结束标识,则表示完成对特征图的运算。
张量数据A3中可以包括m个特征图,因此m个特征图中均可以包括多个数据,从而构成一个向量,如图3中(C)所示的多个窗口下的数据,为了区分不同窗口所对应的数据,可以在每个窗口中的第一个数据和最后一个数据中加入标识。例如,一个窗口Z1中的第一个数据A41携带有起始窗口标识,该窗口Z1中的最后一个数据A42可以携带结束窗口标识,又例如下一个窗口Z2中的第一个数据A61携带有起始窗口标识,而该窗口Z2中的最后一个数据A62携带结束窗口标识,将窗口Z1以及窗口Z2中的数据输入至ALU A5,向ALU A5可以通过数据输入通道接收窗口标识,窗口标识包括起始窗口标识以及结束窗口标识中的至少一项,因此当ALU A5获取第一个数据A41携带的起始窗口标识,则可以确定当前计算的为窗口Z1内的数据,而当ALU A5获取最后一个数据A42携带的结束窗口标识,则可以确定当前窗口Z1内的数据已输入完成。而当ALU A5获取第一个数据A61携带的起始窗口标识,则确定当前计算的为窗口Z2内的数据,而当ALU A5获取最后一个数据A62携带的结束窗口标识,则可以确定当前窗口Z2内的数据已输入完成。
应理解,图3中的示例仅用于理解本方案,在实际应用中,特征图以及ALU的数量均应当结合实际情况灵活确定。
需要说明的是,在执行窗口相关的操作时,如FindMax(A),FindMin(A),Accumulator(A),则在起始窗口标识使能时将第一个数据写入内部寄存器,在结束窗口标识使能时,使能输出数据有效信号,并将内部寄存器清零。对于逐点(pointwise)操作,则每个数据即是窗口的第一个数据,也是窗口内的最后一个数据,起始窗口标识和结束窗口标识始终同时使能。
基于上述介绍,对于处理部件而言可以包括多个ALU,假设存在一个ALU以及与该ALU并行的另一个ALU(即称为并行ALU)。与ALU类似,并行ALU与ALU共享相同的执行参数和控制参数,然后在目标时钟周期内输出并行运算结果,与此同时,ALU也在该目标时钟周期内输出目标运算结果。需要说明的是,处理部件中有Y个ALU并行工作,则在同一个时钟周期内输出Y个运算结果。对于单个ALU而言输出的是标量的数据流,而对于多个ALU而言,输出的是向量。
本申请实施例中,数据输入通道还可以接收控制信号以及窗口标识,通过上述方式,ALU可以通过控制信号中携带的标识启动或者停止对数据输入,无需打断数据流,无需重新译码,即可调整ALU运算部件的执行方式,保证ALU运算部件的连续运行,由此提升处理部件的运行效率。
可选地,在上述图2所对应的实施例的基础上,请进一步参阅图4,本申请实施例提供的处理部件的另一实施例中,数据输入通道102至少包括张量输入通道1021、标量输入通道1022以及地址输入通道1023;
张量输入通道1021,用于接收第一待处理数据和第二待处理数据中的至少一种,其中,第一待处理数据与第二待处理数据均属于张量所包含的数据;
标量输入通道1022,用于接收第二待处理数据,其中,第二待处理数据属于标量所对应的数据;
地址输入通道1023,用于接收结果输出地址,其中,结果输出地址为写入存储器的地址。
本实施例中,数据输入通道102至少包括张量输入通道1021、标量输入通道1022以及地址输入通道1023,其中,张量输入通道1021可以接收第一待处理数据和第二待处理数据中的至少一种。标量输入通道1022可以接收第二待处理数据,该第二待处理数据属于标量所对应的数据,地址输入通道1023可以接收结果输出地址,该结果输出地址为写入存储器的地址。
具体地,张量输入通道1021可以接收张量数据A(Ta_in),张量数据B(Tb_in)以及张量数据C(Tc_in),标量输入通道1022可以接收标量数据A(a_in)、标量数据B(b_in)以及标量数据C(c_in)。张量输入通道1023可以向第一端口交叉开关矩阵104输入张量数据A(Ta_in),还可以向第二端口交叉开关矩阵105输入张量数据A(Ta_in),张量数据B(Tb_in)以及张量数据C(Tc_in)。而标量输入通道1022可以向第二端口交叉开关矩阵105输入标量数据A(a_in),标量数据B(b_in)以及标量数据C(c_in),且地址输入通道1023可以接收结果输出地址,该结果输出地址可以指示最终写入存储器的地址。
虽然图4中仅以1个张量输入通道、1个标量输入通道以及1个地址输入通道作为示例进行说明,但应当理解,图4中的示例仅用于理解本方案,在实际应用中,张量输入通道、标量输入通道以及地址输入通道的数量均应当结合实际情况灵活确定。
本申请实施例中,通过上述方式,将原本alu执行中,异步读取数据的方式,改为数据流的同步输入,提升了数据读取的效率和稳定性,由此提升处理部件的准确度以及运行效率。
可选地,在上述图2所对应的实施例的基础上,本申请实施例提供的处理部件的另一实施例中,第二端口交叉开关矩阵105包括延迟调节器1051;
第一端口交叉开关矩阵104,具体用于在第一时钟周期内,将第一待处理数据输入至运算组件103;
运算组件103,具体用于在第二时钟周期内,向第一端口交叉开关矩阵104输出中间运算结果,其中,中间运算结果为根据第一待处理数据运算后得到的,第二时钟周期与第一时钟周期之间间隔M个时钟周期,M为大于或等于1的整数;
第一端口交叉开关矩阵104,具体用于在第三时钟周期内,将中间运算结果输入至运算组件103,其中,第三时钟周期与第一时钟周期之间间隔N个时钟周期,N为大于或等于M的整数;
延迟调节器1051,用于在第三时钟周期内,将第二待处理数据输入至运算组件103。
本实施例中,第二端口交叉开关矩阵105还可以包括延迟调节器1051,而第一端口交叉开关矩阵104可以在第一时钟周期内,将第一待处理数据输入至运算组件103,然后运算组件103在第二时钟周期内,根据第一待处理数据运算后得到中间运算结果,并向第一端口交叉开关矩阵104输出中间运算结果,该第二时钟周期与第一时钟周期之间间隔M个时钟周期,进一步地,第一端口交叉开关矩阵104还可以在第三时钟周期内,将该中间运算结果输入至运算组件103,该第三时钟周期与第一时钟周期之间间隔N个时钟周期。延迟调节器1051在第三时钟周期内,将第二待处理数据输入至运算组件103,其中M为大于或等于1的整数,N为大于或等于M的整数。具体地,可以依据处理部件的执行频率确定时钟周期,例如当处理部件的执行频率为1千兆赫(GHz)时,则一个时钟周期为1纳秒(ns)。
应理解,因为标量数据是静态的,但是张量数据是动态的,因此,当第二待处理数据若为张量数据时,第二待处理数据需要进入延迟调节器1051,由延迟调节器1051对第二待处理数据进行延迟处理。延迟调节器1051可以向运算组件103输入第二待处理数据输入。若第二待处理数据若为标量数据时,则第二待处理数据不需要输入延迟调节器1051,直接输入至第二端口交叉开关矩阵105的传输通道。
为了便于理解,请参与表4,表4为基于延迟调节器控制下不同时钟周期所对应的部件状态示意表,应理解,表4仅为了便于理解本实施例,在实际应用中,时钟周期数量以及器件的类型还可以为其他,在此不进行穷举。
表4
由表4可见,在时钟周期1中,第一端口交叉开关矩阵104,第二端口交叉开关矩阵105,运算组件103以及延迟调节器1051均可以获取到超长指令字的解析结果。在时钟周期2中,第一端口交叉开关矩阵104,第二端口交叉开关矩阵105,运算组件103以及延迟调节器1051可以进行译码操作,因此第一端口交叉开关矩阵104可以对第一待处理数据进行译码处理,第二端口交叉开关矩阵105可以对第二待处理数据进行译码处理。在时钟周期3中,第一端口交叉开关矩阵104将译码后读取返回的第一待处理数据输入至运算组件103,第二端口交叉开关矩阵105通过延迟调节器1051将译码后读取返回的第二待处理数据输入至运算组件103,然后在时钟周期4中,由运算组件103对第一待处理数据以及第二待处理数据进行运算,得到中间运算结果。在时钟周期5中,运算组件103向第一端口交叉开关矩阵104输出中间运算结果。在时钟周期6中,第一端口交叉开关矩阵104将该中间运算结果输入至运算组件103,且第二端口交叉开关矩阵105通过延迟调节器1051将第二待处理数据输入至运算组件103,使得运算组件103完成复合运算。应理解,本实施例仅描述一个第一待处理数据与一个第二待处理数据的运算过程,并且处理部件中的器件在一个时钟周期内处理一组数据,在实际应用中,还可以对多个第一待处理数据与多个第二待处理数据进行计算,并且实施例处理部件中的器件还可以在一个时钟周期内处理多组数据,在此不做限定。
本申请实施例中,通过上述方式,第二待处理数据可以在第一待处理数据在完成运算后再进行输入,控制数据输入,保证连续输入下数据运算的正确性。
可选地,在上述图2所对应的实施例的基础上,请进一步参阅图5,本申请实施例提供的处理部件的另一实施例中,运算组件103至少包括第一运算组件1031;
第一端口交叉开关矩阵104,具体用于将第一待处理数据输入至第一运算组件1031;
第二端口交叉开关矩阵105,具体用于将第二待处理数据输入至第一运算组件1031;
第一运算组件1031,用于根据执行参数,对第一待处理数据进行处理,得到中间运算结果;
第一运算组件1031,还用于向第一端口交叉开关矩阵104输出中间运算结果;
第一端口交叉开关矩阵104,具体用于将中间运算结果输入至第一运算组件1031;
第一运算组件1031,还用于根据超执行参数,对中间运算结果以及第二待处理数据进行处理,得到目标运算结果。
本实施例中,运算组件103至少可以包括第一运算组件1031,第一运算组件1031包括至少一个相同类型的运算组件,例如包括一个加法器,或者包括两个比较器。第一端口交叉开关矩阵104可以将第一待处理数据输入至一个第一运算组件1031,第二端口交叉开关矩阵105可以将第二待处理数据输入至另一个第一运算组件1031。第一运算组件1031可以根据执行参数,对第一待处理数据进行处理得到中间运算结果,并且第一运算组件1031向第一端口交叉开关矩阵104输出该中间运算结果。第一端口交叉开关矩阵104可以将中间运算结果输入至另一个第一运算组件1031,该第一运算组件1031根据执行参数,对中间运算结果以及第二待处理数据进行处理,从而得到目标运算结果。例如,当为1个ALU时,则可以为加法器向第一端口交叉开关矩阵104输出中间运算结果,然后第一端口交叉开关矩阵104将中间运算结果输入至比较器,为2个ALU时,则可以为加法器A向第一端口交叉开关矩阵104输出中间运算结果,然后第一端口交叉开关矩阵104将中间运算结果输入至加法器B,或者比较器A。
如图5所示,第一运算组件1031包括第一运算组件A以及第一运算组件B,在步骤L1中,可以通过第一端口交叉开关矩阵104,将第一待处理数据输入至一个第一运算组件1031中的第一运算组件A。在步骤L2中,该第一运算组件A根据该执行参数对获取到的第一待处理数据进行处理,得到中间运算结果。在步骤L3中,由第一端口交叉开关矩阵104将中间运算结果输入至第一运算组件1031中的第一运算组件B,与此同时,在步骤L4中,由第二端口交叉开关矩阵105,将第二待处理数据输入至该第一运算组件B,于是该第一运算组件B可以采用执行参数对中间运算结果以及第二待处理数据进行处理,得到目标运算结果。
其中,译码与参数输入通道101可以获取执行参数,并向第一运算组件1031中的第一运算组件A输入该执行参数,向第一运算组件1031中的第一运算组件B输入该执行参数。
以运算模式为比较运算模式,且第一运算组件均采用Max(A,B)为示例进行说明,假设第一运算组件1031包括比较器A和比较器B。在步骤L1中,通过第一端口交叉开关矩阵104,将第一待处理数据15输入至比较器A,与此同时,在步骤L2中,通过第二端口交叉开关矩阵105,将第二待处理数据8输入至比较器A,比较器A通过Max(A,B)对第一待处理数据15以及第二待处理数据8进行处理,可以得到中间运算结果15。在步骤L3中,通过比较器A向第一端口交叉开关矩阵104输出中间运算结果15,在步骤L4中,通过第一端口交叉开关矩阵104将中间运算结果15输入至比较器B,比较器B可以通过Max(A,B)对中间运算结果15以及第二待处理数据8进行处理,得到目标运算结果15。
虽然图5中以第一运算组件中包括2个组件为例进行说明,但应当理解,图5中的示例仅用于理解本方案,在实际应用中,第一运算组件可以是多个组件组成的,且多个组件为同一类型的运算模式,例如第一运算组件包括3个比较器,或者第一运算组件包括2个乘法器,需要说明的是,同一类型的运算模式可以采用不同的运算函数,本实施例中以采用相同的运算函数为例进行介绍,然而这不应理解为对本申请的限定。该第一运算组件中的组件数量应当结合实际情况灵活确定。
本申请实施例中,通过上述方式,可以通过第一运算组件的多个运算组件进行同种运算,降低数据处理冲突,从而提升处理部件的运行效率。
可选地,在上述图2所对应的实施例的基础上,请参阅图6,本申请实施例提供的处理部件的另一实施例中,运算组件103至少包括第一运算组件1031;
第一端口交叉开关矩阵104,具体用于将第一待处理数据输入至第一运算组件1031;
第二端口交叉开关矩阵105,具体用于将第二待处理数据输入至第一运算组件1031;
第一运算组件1031,用于根据执行参数对第一待处理数据以及第二待处理数据进行处理,得到中间运算结果;
第一运算组件1031,还用于向第一端口交叉开关矩阵104输出中间运算结果;
第一端口交叉开关矩阵104,具体用于将中间运算结果输入至第一运算组件1031;
第一运算组件1031,还用于根据执行参数对中间运算结果以及第二待处理数据进行处理,得到目标运算结果。
本实施例中,运算组件103至少可以包括第一运算组件1031,第一端口交叉开关矩阵104可以将第一待处理数据输入至一个第一运算组件1031,而第二端口交叉开关矩阵105可以将第二待处理数据输入至该第一运算组件1031,其中,第一待处理数据输入以及第二待处理数据为同时输入。然后第一运算组件1031可以根据执行参数,对第一待处理数据以及第二待处理数据进行处理,得到中间运算结果,第一运算组件1031还可以向第一端口交叉开关矩阵104输出所得到的中间运算结果。接下来,第一端口交叉开关矩阵104将得到的中间运算结果输入至另一个第一运算组件1031,最后该第一运算组件1031可以根据执行参数,对中间运算结果以及第二待处理数据进行处理,得到目标运算结果。
如图6所示,第一运算组件1031包括第一运算组件A以及第一运算组件B,在步骤M1中,通过第一端口交叉开关矩阵104,将第一待处理数据输入至第一运算组件1031中的第一运算组件A,在步骤M2中,通过第二端口交叉开关矩阵105,将第二待处理数据输入至第一运算组件1031中的第一运算组件A,需要说明的是,步骤M1与步骤M2之间为同时进行。第一运算组件1031可以接收到执行参数,即第一运算组件1031中的第一运算组件A可以根据该执行参数,对步骤M1获取到的第一待处理数据以及步骤M2获取到的第二待处理数据进行处理,得到中间运算结果。在步骤M3中,通过该第一运算组件A向第一端口交叉开关矩阵104输出该中间运算结果,在步骤M4中,通过第一端口交叉开关矩阵104将中间运算结果输入至第一运算组件1031中的第一运算组件B,在步骤M5中,通过第二端口交叉开关矩阵105将第二待处理数据也输入至该第一运算组件1031中的第一运算组件B,由该第一运算组件B可以根据前述得到的执行参数,对中间运算结果以及第二待处理数据进行处理,得到目标运算结果。
以运算模式为比较运算模式,且第一运算组件均采用Max(A,B)为示例进行说明,假设第一运算组件1031包括比较器A和比较器B。在步骤M1中,通过第一端口交叉开关矩阵104,将第一待处理数据15输入至比较器A,在步骤M2中,通过第二端口交叉开关矩阵105,将第二待处理数据28输入至比较器A,应理解,步骤M1与步骤M2为同时进行,比较器A通过Max(A,B)对第一待处理数据15以及第二待处理数据28进行处理,可以得到中间运算结果28。在步骤M3中,通过比较器A向第一端口交叉开关矩阵104输出中间运算结果28,在步骤M4中,通过第一端口交叉开关矩阵104将中间运算结果28输入至比较器B,比较器B可以通过Max(A,B)对中间运算结果28以及第二待处理数据28进行处理,得到目标运算结果28。
虽然图6中以第一运算组件中包括2个组件为例进行说明,但应当理解,图6中的示例仅用于理解本方案,在实际应用中,第一运算组件可以是多个组件组成的,且多个组件为同一类型的运算模式,例如第一运算组件包括3个比较器,或者第一运算组件包括2个乘法器,需要说明的是,同一类型的运算模式可以采用不同的运算函数,本实施例中以采用相同的运算函数为例进行介绍,然而这不应理解为对本申请的限定。该第一运算组件中的组件数量应当结合实际情况灵活确定。
本申请实施例中,通过上述方式,可以对不同数据进行同时处理,从而提升处理部件的运行效率。
可选地,在上述图2所对应的实施例的基础上,请参阅图7,本申请实施例提供的处理部件的另一实施例中,运算组件103至少包括第一运算组件1031;
数据输入通道102,还用于接收第三待处理数据;
第一端口交叉开关矩阵104,具体用于将第一待处理数据输入至第一运算组件1031;
第二端口交叉开关矩阵105,具体用于将第二待处理数据以及第三待处理数据输入至第一运算组件1031;
第一运算组件1031,用于根据执行参数对第一待处理数据以及第二待处理数据进行处理,得到中间运算结果;
第一运算组件1031,还用于向第一端口交叉开关矩阵104输出中间运算结果;
第一端口交叉开关矩阵104,具体用于将中间运算结果输入至第一运算组件1031;
第一运算组件1031,还用于根据执行参数对中间运算结果以及第三待处理数据进行处理,得到目标运算结果。
本实施例中,运算组件103至少可以包括第一运算组件1031,并且数据输入通道102还可以接收第三待处理数据,第一端口交叉开关矩阵104可以将第一待处理数据输入至一个第一运算组件1031,而第二端口交叉开关矩阵105可以将第二待处理数据以及第三待处理数据输入至该第一运算组件1031,然后第一运算组件1031根据执行参数,对第一待处理数据以及第二待处理数据进行处理,从而得到中间运算结果。第一运算组件1031还可以向第一端口交叉开关矩阵104输出该中间运算结果,由第一端口交叉开关矩阵104将中间运算结果输入至另一个第一运算组件1031,该第一运算组件1031根据执行参数,对中间运算结果以及第三待处理数据进行处理,得到目标运算结果。应理解,第二端口交叉开关矩阵105将第二待处理数据以及第三待处理数据输入至第一运算组件1031为同时进行。
如图7所示,第一运算组件1031包括第一运算组件A以及第一运算组件B,在步骤N1中,可以通过第一端口交叉开关矩阵104,将第一待处理数据输入至第一运算组件1031中的第一运算组件A,在步骤N2中,可以通过第二端口交叉开关矩阵105,将第二待处理数据以及第三待处理数据输入至一个第一运算组件1031中的第一运算组件A,步骤N1与步骤N2之间为同时进行。第一运算组件1031中的第一运算组件A可以接收到执行参数,而第一运算组件1031中的第一运算组件B也可以接收到执行参数,第一运算组件A可以根据该执行参数,对第一待处理数据以及第二待处理数据进行处理,得到中间运算结果,在步骤N3中,通过第一运算组件A向第一端口交叉开关矩阵104输出该中间运算结果,在步骤N4中,通过第一端口交叉开关矩阵104将中间运算结果输入至第一运算组件1031中的第一运算组件B。在步骤N5中,通过数据输入通道102可以接收第三待处理数据,然后向第二端口交叉开关矩阵105输入该第三待处理数据。进而在步骤N6中,通过第二端口交叉开关矩阵105将第三待处理数据输入至第一运算组件1031中的第一运算组件B,使得第一运算组件B根据前述得到的执行参数,对中间运算结果以及第三待处理数据进行处理,得到目标运算结果。
应理解,本实施例图7所示出的为第一待处理数据为张量数据的流程图,在实际应用中,若第一待处理数据为张量数据,则第一待处理数据向第一端口交叉开关矩阵104输入,并且由该第一端口交叉开关矩阵104向第一运算组件1031中的第一运算组件A输入数据。若第一待处理数据,第二待处理数据以及第三待处理数据均为张量数据,则第一待处理数据仅向第一端口交叉开关矩阵104输入,由该第一端口交叉开关矩阵104向第一运算组件1031中的第一运算组件A输入数据,而第二待处理数据以及第三待处理数据仅向第二端口交叉开关矩阵105输入,由该第二端口交叉开关矩阵105向第一运算组件1031中的第一运算组件A输入数据。若第一待处理数据,第二待处理数据以及第三待处理数据均为标量数据,则第一待处理数据,第二待处理数据以及第三待处理数据仅向第二端口交叉开关矩阵105输入,由该第二端口交叉开关矩阵105向第一运算组件1031中的第一运算组件A输入数据。
进一步地,以运算模式为比较运算模式,且第一运算组件均采用Max(A,B)为示例进行说明,假设第一运算组件1031包括比较器A和比较器B。在步骤N1中,通过第一端口交叉开关矩阵104,将第一待处理数据15输入至比较器A,在步骤N2中,通过第二端口交叉开关矩阵105,将第二待处理数据28输入至比较器A,比较器A通过Max(A,B)对第一待处理数据15以及第二待处理数据28进行处理,可以得到中间运算结果28。在步骤N3中,通过比较器A向第一端口交叉开关矩阵104输出中间运算结果28。在步骤N4中,通过第一端口交叉开关矩阵104将中间运算结果28输入至比较器B,与此同时,在步骤N5中,通过第二端口交叉开关矩阵105将第三待处理数据50输入至比较器B,比较器B可以通过Max(A,B)对中间运算结果28以及第三待处理数据50进行处理,得到目标运算结果50。
虽然图7中以第一运算组件中包括2个组件为例进行说明,但应当理解,图7中的示例仅用于理解本方案,在实际应用中,第一运算组件可以是多个组件组成的,且多个组件为同一类型的运算模式,例如第一运算组件包括3个比较器,或者第一运算组件包括5个乘法器,需要说明的是,同一类型的运算模式可以采用不同的运算函数,本实施例中以采用相同的运算函数为例进行介绍,然而这不应理解为对本申请的限定。该第一运算组件中的组件数量应当结合实际情况灵活确定。
应理解,为了便于理解,本实施例中以中间运算为一个时钟周期内输出的一个值为示例进行说明,在实际应用中,中间运算结果表示一个时钟周期内输出的一个运算结果,该运算结果可以为向量,而对于多个时钟周期而言,会得到相应的数据流。
本申请实施例中,通过上述方式,可以通过第一运算组件的多个运算组件进行同种运算,降低数据处理冲突,其次还可以对多个数据进行同时处理,从而提升处理部件的运行效率。
可选地,在上述图2所对应的实施例的基础上,请参阅图8,本申请实施例提供的处理部件的另一实施例中,运算组件103至少包括第一运算组件1031以及第二运算组件1032;
第一端口交叉开关矩阵104,具体用于将第一待处理数据输入至第一运算组件1031;
第二端口交叉开关矩阵105,具体用于将第二待处理数据输入至第二运算组件1032;
第一运算组件1031,用于根据执行参数对第一待处理数据进行处理,得到中间运算结果;
第一运算组件1031,还用于向第一端口交叉开关矩阵104输出中间运算结果;
第一端口交叉开关矩阵104,具体用于将中间运算结果输入至第二运算组件1032;
第二运算组件1032,用于根据执行参数对中间运算结果以及第二待处理数据进行处理,得到目标运算结果。
本实施例中,运算组件103至少可以包括第一运算组件1031以及第二运算组件1032,其中,第一运算组件1031以及第二运算组件1032属于不同运算模式所对应的运算组件,比如第一运算组件1031为加法器,第二运算组件1032为乘法器。第一端口交叉开关矩阵104用于将第一待处理数据输入至第一运算组件1031。第二端口交叉开关矩阵105用于将第二待处理数据输入至第二运算组件1032。应理解,第二端口交叉开关矩阵105将第二待处理数据输入至第一运算组件1032的为同时进行,只要在第二运算组件1032对中间运算结果以及第二待处理数据进行处理之前,对第二待处理数据进行输入即可。第一运算组件1031根据执行参数,对第一待处理数据进行处理得到中间运算结果,第一运算组件1031向第一端口交叉开关矩阵104输出该中间运算结果,然后第一端口交叉开关矩阵104将接收到的中间运算结果输入至第二运算组件1032,第二运算组件1032可以根据执行参数,对接收到的中间运算结果以及第二待处理数据进行处理,从而得到目标运算结果。
如图8所示,在步骤K1中,可以通过第一端口交叉开关矩阵104,将第一待处理数据输入至第一运算组件1031,在步骤K2中,该第一运算组件1031根据该执行参数对获取到的第一待处理数据进行处理,得到中间运算结果。在步骤K3中,通过第一端口交叉开关矩阵104将中间运算结果输入至第二运算组件1032,与此同时,在步骤K4中,由第二端口交叉开关矩阵105,将第二待处理数据输入至该第二运算组件1032,步骤K3与步骤K4为同时进行。于是该第二运算组件1032采用执行参数对中间运算结果以及第二待处理数据进行处理,得到目标运算结果。
其中,译码与参数输入通道101可以获取执行参数,并向第一运算组件1031输入该执行参数,向第二运算组件1032输入该执行参数。
以第一运算组件1031对应的运算模式为查表运算模式,而第二运算组件1032对应的运算模式为比较运算模式,且第二运算组件1032采用Max(A,B)为示例进行说明,在步骤K1中,通过第一端口交叉开关矩阵104,将第一待处理数据5输入至第一运算组件1031,第一运算组件1031通过查表运算模式对第一待处理数据5进行处理,再次参阅表3,如表3所示,输入数据为5所对应的值为7,因此可以得到中间运算结果7。在步骤K2中,第一运算组件1031向第一端口交叉开关矩阵104输出中间运算结果7。在步骤K3中,通过第二端口交叉开关矩阵105,将第二待处理数据5输入至第二运算组件1032,与此同时,在步骤K4中,通过第二端口交叉开关矩阵105将第二待处理数据5输入至第二运算组件1032,第二运算组件1032可以通过Max(A,B)对中间运算结果7以及第二待处理数据5进行处理,得到目标运算结果7。
虽然图8中以一个第一运算组件一个第二运算组件为例进行说明,但应当理解,图8中的示例仅用于理解本方案,在实际应用中,还可以包括有其他不同运算模式对应的运算组件,例如还可以包括第三运算组件以及第四运算组件,该不同运算模式所对应运算组件数量应当结合实际情况灵活确定。
本申请实施例中,通过上述方式,可以通过不同给的运算组件进行复合运算,从而提升处理部件的运行效率。
可选地,在上述图2所对应的实施例的基础上,请参阅图9,本申请实施例提供的处理部件的另一实施例中,运算组件103至少包括第一运算组件1031以及第二运算组件1032;
第一端口交叉开关矩阵104,具体用于将第一待处理数据输入至第一运算组件1031;
第二端口交叉开关矩阵105,具体用于将第二待处理数据输入至第一运算组件1031以及第二运算组件1032;
第一运算组件1031,用于根据执行参数对第一待处理数据以及第二待处理数据进行处理,得到中间运算结果;
第一运算组件1031,还用于向第一端口交叉开关矩阵104输出中间运算结果;
第一端口交叉开关矩阵401,具体用于将中间运算结果输入至第二运算组件1032;
第二运算组件1032,用于根据执行参数对中间运算结果以及第二待处理数据进行处理,得到目标运算结果。
本实施例中,运算组件103至少可以包括第一运算组件1031以及第二运算组件1032,第一端口交叉开关矩阵104可以将第一待处理数据输入至第一运算组件1031,第二端口交叉开关矩阵105可以将第二待处理数据输入至第一运算组件1031以及第二运算组件1032,应理解,第一待处理数据输入以及第二待处理数据输入为同时进行。第一运算组件1031可以根据执行参数,对第一待处理数据以及第二待处理数据进行处理,得到中间运算结果,进而第一运算组件1031还可以向第一端口交叉开关矩阵104输出所得到的中间运算结果,第一端口交叉开关矩阵104将得到的中间运算结果输入至第二运算组件1032,最后第二运算组件1032可以根据执行参数,对中间运算结果以及第二待处理数据进行处理,得到目标运算结果。
如图9所示,在步骤P1中,通过第一端口交叉开关矩阵104,将第一待处理数据输入至第一运算组件1031,在步骤P2中,通过第二端口交叉开关矩阵105,将第二待处理数据输入至第一运算组件1031,需要说明的是,步骤P1与步骤P2之间为同时进行。译码与参数输入通道101可以获取执行参数,并向第一运算组件1031输入该执行参数,以及向第二运算组件1032输入该执行参数,第一运算组件1031可以根据该执行参数,对第一待处理数据以及第二待处理数据进行处理,得到中间运算结果,在步骤P3中,通过第一运算组件1031向第一端口交叉开关矩阵104输出该中间运算结果。在步骤P4中,通过第一端口交叉开关矩阵104将中间运算结果输入至第二运算组件1032,与此同时,在步骤P5中,通过第二端口交叉开关矩阵105将第二待处理数据也输入至第二运算组件1032,第二运算组件1032可以根据前述得到的执行参数,对中间运算结果以及第二待处理数据进行处理,得到目标运算结果。
以第一运算组件1031对应的运算模式为比较运算模式,并采用比较运算模式中Min(A,B),而第二运算组件1032对应的运算模式为乘法运算模式为示例进行说明,在步骤P1中,通过第一端口交叉开关矩阵104,将第一待处理数据10输入至第一运算组件1031,在步骤P2中,通过第二端口交叉开关矩阵105,将第二待处理数据15输入至第一运算组件1031,第一运算组件1031通过Min(A,B)对第一待处理数据10以及第二待处理数据15进行处理,可以得到中间运算结果10,在步骤P3中,通过第一运算组件1031向第一端口交叉开关矩阵104输出中间运算结果10,在步骤P4中,通过第一端口交叉开关矩阵104将中间运算结果10输入至第二运算组件1032,与此同时,在步骤P5中,通过第二端口交叉开关矩阵105将将第二待处理数据15输入至第二运算组件1032,第二运算组件1032可以通过乘法运算模式对中间运算结果10第二待处理数据15进行处理,得到目标运算结果150。
虽然图9中仅以一个第一运算组件以及一个第二运算组件为示例进行说明,但应当理解,图9中的示例仅用于理解本方案,在实际应用中,还可以包括有其他不同运算模式对应的运算组件,例如还可以包括第三运算组件以及第四运算组件,该不同运算模式所对应运算组件数量应当结合实际情况灵活确定。
应理解,为了便于理解,本实施例中以中间运算为一个时钟周期内输出的一个值为示例进行说明,在实际应用中,中间运算结果表示一个时钟周期内输出的一个运算结果,该运算结果可以为向量,而对于多个时钟周期而言,会得到相应的数据流。
本申请实施例中,通过上述方式,数据流的操作保证每个时钟周期都有数据被有效运到执行部件,而无需额外的等待开销。因此在运行过程中,除去数据导入和导出的开销,每个部件可以得到100%的执行效率,为复合操作时,可以进一步提升前述处理部件的执行效率。
可选地,在上述图2所对应的实施例的基础上,请参阅图10,本申请实施例提供的处理部件的另一实施例中,运算组件103至少包括第一运算组件1031以及第二运算组件1032;
数据输入通道102,还用于接收第三待处理数据;
第一端口交叉开关矩阵104,具体用于将第一待处理数据输入至第一运算组件1031;
第二端口交叉开关矩阵105,具体用于将第二待处理数据输入至第一运算组件1031,以及将第三待处理数据输入至第二运算组件1032;
第一运算组件1031,用于根据执行参数对第一待处理数据以及第二待处理数据进行处理,得到中间运算结果;
第一运算组件1031,还用于向第一端口交叉开关矩阵104输出中间运算结果;
第一端口交叉开关矩阵104,具体用于将中间运算结果输入至第二运算组件1032;
第二运算组件1032,用于根据执行参数对中间运算结果以及第三待处理数据进行处理,得到目标运算结果。
本实施例中,运算组件103至少可以包括第一运算组件1031以及第二运算组件1032,且数据输入通道102还可以接收第三待处理数据。第一端口交叉开关矩阵104可以将第一待处理数据输入至第一运算组件1031,第二端口交叉开关矩阵105可以将第二待处理数据输入至第一运算组件1031,然后第一运算组件1031根据执行参数,对第一待处理数据以及第二待处理数据进行处理,从而得到中间运算结果。第一运算组件1031还可以向第一端口交叉开关矩阵104输出该中间运算结果,第一端口交叉开关矩阵104将中间运算结果输入至第二运算组件1032,且第二端口交叉开关矩阵105将第三待处理数据输入至第二运算组件1032。第二运算组件1032根据执行参数,对中间运算结果以及第三待处理数据进行处理,得到目标运算结果。
如图10所示,数据输入通道102接收到第三待处理数据,并向第二端口交叉开关矩阵105输入该第三待处理数据。在步骤Q1中,可以通过第一端口交叉开关矩阵104,将第一待处理数据输入至第一运算组件1031,在步骤Q2中,通过第二端口交叉开关矩阵105,将第二待处理数据输入至第一运算组件1031。译码与参数输入通道101可以获取执行参数,并向第一运算组件1031输入该执行参数,向第二运算组件1032输入该执行参数。在步骤Q3中,第一运算组件1031可以根据该执行参数,对第一待处理数据以及第二待处理数据进行处理,得到中间运算结果,通过第一运算组件1031向第一端口交叉开关矩阵104输出该中间运算结果。在步骤Q4中,通过第一端口交叉开关矩阵104将中间运算结果输入至第二运算组件1032,在步骤Q5中,数据输入通道102接收到第三待处理数据,并向第二端口交叉开关矩阵105输入该第三待处理数据,然后在步骤Q6中,通过第二端口交叉开关矩阵105将该第三待处理数据输入至第二运算组件1032,第二运算组件1032根据前述得到的执行参数,对中间运算结果以及第三待处理数据进行处理,得到目标运算结果。
以第一运算组件1031对应的运算模式为乘法运算模式,第二运算组件1032对应的运算模式为加法运算模式中的Add(A,B)为示例进行说明,在步骤Q1中,通过第一端口交叉开关矩阵104,将第一待处理数据8输入至第一运算组件1031,在步骤Q2中,通过第二端口交叉开关矩阵105,将第二待处理数据5至第一运算组件1031,第一运算组件1031通过乘法运算模式对第一待处理数据8以及第二待处理数据5进行处理,可以得到中间运算结果40。在步骤Q3中,通过第一运算组件1031向第一端口交叉开关矩阵104输出中间运算结果40,在步骤Q4中,通过第一端口交叉开关矩阵104将中间运算结果40输入至第二运算组件1032,因此第二运算组件1032可以通过Add(A,B)对中间运算结果40以及第三待处理数据60进行相加,得到目标运算结果100。
虽然图10中仅以一个第一运算组件以及一个第二运算组件为示例进行说明,但应当理解,图10中的示例仅用于理解本方案,在实际应用中,还可以包括有其他不同运算模式对应的运算组件,例如还可以包括第三运算组件以及第四运算组件,该不同运算模式所对应运算组件数量应当结合实际情况灵活确定。
应理解,为了便于理解,本实施例中以中间运算为一个时钟周期内输出的一个值为示例进行说明,在实际应用中,中间运算结果表示一个时钟周期内输出的一个运算结果,该运算结果可以为向量,而对于多个时钟周期而言,会得到相应的数据流。
本申请实施例中,通过上述方式,可以通过不同给的运算组件进行多次复合运算,处理部件的运行效率,其次,不同运算组件依次运算,还降低数据处理冲突。
可选地,在上述图2所对应的实施例的基础上,本申请实施例提供的处理部件的另一实施例中,运算组件包括比较器、加法器、乘法器以及查表器中的至少一项;
比较器,用于对至少一个待处理数据进行数值比较操作;
加法器,用于对至少一个待处理数据进行数值求和操作;
乘法器,用于对两个待处理数据进行数值相乘操作;
查表器,用于根据待处理数据进行查表操作,或,根据待处理数据进行线性插值操作以及查表操作。
本实施例中,运算组件还可以包括比较器、加法器、乘法器以及查表器中的至少一项。可以理解的是,上述实施例已对比较器、加法器、乘法器以及查表器的功能进行介绍,此处不做赘述。
为了便于理解,以输入的待处理数据为5以及7为示例进行说明,若比较器采用比较运算模式中的Max(A,B),则可以对待处理数据5以及待处理数据7比较操作,并将两个待处理数据中的最大值作为输出,即比较器可以输出7。若采用比较运算模式中的Min(A,B),则可以对待处理数据5以及待处理数据7比较操作,并将两个待处理数据中的最小值作为输出,即比较器可以输出。可选地,若加法器采用加法运算模式的Add(A,B),则可以对待处理数据5以及待处理数据7进行数值求和操作,即加法器可以输出12。可选地,若乘法器采用乘法运算模式,则可以对待处理数据5以及待处理数据7进行数值相乘操作,即乘法器可以输出35。可选地,由于查表器可以采用查表与线性插值的实现方式,请再参阅表3,根据表3可以看到输入的待处理数据5所对应的输出数据为7,而输入的待处理数据7所对应的输出数据为8,即查表器可以输出7以及8。
本申请实施例中,通过上述方式,运算组件可以根据不同的器件完成不同的运算模式中的运算操作,提升了不同的运算的效率以及准确度,从而提升处理部件的运行效率以及准确度。
可选地,在上述图2所对应的实施例的基础上,本申请实施例提供的处理部件的另一实施例中,ALU还包括精度转换模块;
数据输入通道102,还用于将第一待处理数据以及第二待处理数据输入至精度转换模块,其中,第一待处理数据对应于第一数据格式,第二待处理数据对应于第二数据格式;
精度转换模块,用于将第一待处理数据由第一数据格式转换为第三数据格式,并输出转换后的第一待处理数据;
精度转换模块,还用于将第二待处理数据由第二数据格式转换为第四数据格式,并输出转换后的第二待处理数据,其中,第四数据格式与第二数据格式为不同的数据格式;
运算组件103,还用于将目标运算结果输入至第一端口交叉开关矩阵104,其中,目标运算结果对应于第五数据格式;
第一端口交叉开关矩阵104,还用于将目标运算结果输入至精度转换模块;
精度转换模块,还用于将目标运算结果输由第五数据格式转换为第六数据格式,并输出转换后的目标运算结果。
本实施例中,ALU还可以包括精度转换模块,为了便于理解,请参阅图1,精度转换模块可以包括两个模块,分别为精度转换模块A和精度转换模块B,数据输入通道102将第一待处理数据以及第二待处理数据输入至精度转换模块A,该第一待处理数据对应于第一数据格式,该第二待处理数据对应于第二数据格式,然后精度转换模块可以将第一待处理数据由第一数据格式转换为第三数据格式,并输出转换后的第一待处理数据,该第三数据格式与第一数据格式为不同的数据格式。精度转换模块A将第二待处理数据由第二数据格式转换为第四数据格式,并输出转换后的第二待处理数据,该第四数据格式与第二数据格式为不同的数据格式。进一步地,运算组件103可以将目标运算结果输入至第一端口交叉开关矩阵104,该目标运算结果对应于第五数据格式,应理解,数据经过第一端口交叉开关矩阵、第二端口交叉开关矩阵以及运算组件的过程中不改变所对应的数据格式。第一端口交叉开关矩阵104将目标运算结果输入至精度转换模块B,最后精度转换模块B可以将目标运算结果输由第五数据格式转换为第六数据格式,并输出转换后的目标运算结果,该第六数据格式与第五数据格式为不同的数据格式。
具体地,精度转换模块可以将标准的输入精度转化为ALU内部计算所需精度,ALU内部计算所需精度比输入精度表达更准确,表示的数值范围更大。例如外部精度为FP16,ALU内部计算所需精度可以为FP32、FP64或者整型(int)48等不同格式而精度表达更高的精度。应理解,第一数据格式与第二数据格式可以为相同数据格式也可以为不同数据格式,例如第一数据格式为int8或者fp16,而第二数据格式可以为int8,半精度浮点数(Half-precision floating-point,fp16)以及其他数据格式。而第三数据格式与第四数据格式可以为相同数据格式也可以为不同数据格式,但第三数据格式与第四数据格式的数据精度均大于第一数据格式与第二数据格式,例如第一数据格式为int8,则精度转换模块可以将第一待处理数据转化为第三数据格式int32,又例如第二数据格式为fp16,则精度转换模块可以将第二待处理数据转化为第四数据格式fp32。第四数据格式与第五数据格式通常是相同的数据格式,但第四数据格式与第六数据格式可以为相同数据格式也可以为不同数据格式,例如第四数据格式为fp32,第五数据格式可以为fp32,精度转换模块可以将目标运算结果转化为第六数据格式fp16。
本申请实施例中,通过上述方式,在对输入数据进行精度转换时,将精度提升使得该数据精度表达更准确,表示的数值范围更大,从而提升运算精确度,而在对目标运算结果进行精度转换时,将精度降低使得输出数据占用传输资源较少,从而降低数据传输消耗,由此提升处理部件的运算精确度,以及降低处理部件中降低数据传输消耗。
结合上述介绍,本申请提出了一种数据处理的方法,下面将对本申请中数据处理的方法进行介绍,该方法应用于处理部件,处理部件包括至少一个ALU,ALU包括译码与参数输入通道、数据输入通道、运算组件、第一端口交叉开关矩阵以及第二端口交叉开关矩阵,请参阅图11,图11为本申请实施例中数据处理的方法一个实施例示意图,如图所示,本申请实施例中数据处理的方法一个实施例包括:
101、通过译码与参数输入通道接收执行参数,其中,执行参数为基于超长指令字的解析后得到的;
本实施例中,数据处理装置可以通过译码与参数输入通道接收执行参数,并且该执行参数为基于超长指令字的解析后得到的。具体地,超长指令字可以包括查表处理指令,加法处理指令,乘法处理指令以及比较处理指令,每个处理指令携带有对应的运算参数,并且译码与参数输入通道可以将运算参数传递给对应的各个运算组件。例如查表处理指令可以携带查表运算参数,加法处理指令可以携带加法运算参数,乘法处理指令可以携带乘法运算参数,以及比较处理指令可以携带比较运算参数,应理解,在实际应用中,超长指令字还可以包括其他指令,并携带其他指令对应的运算参数,在此不做穷举。
数据处理装置可以部署于处理器或者芯片中,此处不做限定。
102、通过数据输入通道接收第一待处理数据以及第二待处理数据;
本实施例中,数据处理装置还可以通过数据输入通道接收第一待处理数据以及第二待处理数据,具体地,第一待处理数据可以为张量数据,而第二待处理数据可以为张量数据或者标量数据。张量数据可以来源于片上缓存,标量数据则可以来源于指令参数,另外,前述数据的精度可以包括但不限于为FP64、FP32以及FP16。
103、通过第一端口交叉开关矩阵将第一待处理数据输入至运算组件;
本实施例中,通过数据输入通道向第一端口交叉开关矩阵输入第一待处理数据后,数据处理装置可以通过第一端口交叉开关矩阵可以将第一待处理数据输入至运算组件。
104、通过第二端口交叉开关矩阵将第二待处理数据输入至运算组件;
本实施例中,通过数据输入通道向第二端口交叉开关矩阵输入第二待处理数据后,数据处理装置可以通过第二端口交叉开关矩阵可以将第二待处理数据输入至运算组件。应理解,步骤203与步骤204之间为同时进行。
105、根据超长指令字中的执行参数,通过运算组件对第一待处理数据以及第二待处理数据进行处理,得到目标运算结果。
本实施例中,可以根据执行参数,对通过步骤203与步骤204获取到第一待处理数据以及第二待处理数据进行处理,从而得到目标运算结果。
步骤201至步骤205中涉及到的处理部件的功能可参阅上述实施例,此处不做赘述。
本申请实施例中,提供了一种数据处理的方法,通过上述方式,可以通过第一端口交叉开关矩阵以及第二端口交叉开关矩阵对数据的输入进行控制,使得数据流向运算组件,并且基于执行参数,在一个运算周期对数据进行多次处理,最终输出超长指令字后的运算结果,从而提升数据处理的效率。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (16)
1.一种处理部件,其特征在于,所述处理部件包括至少一个算术逻辑单元ALU,所述ALU包括译码与参数输入通道、数据输入通道、运算组件、第一端口交叉开关矩阵以及第二端口交叉开关矩阵;
所述译码与参数输入通道,用于接收执行参数,其中,所述执行参数为基于超长指令字的解析后得到的;
所述数据输入通道,用于接收第一待处理数据以及第二待处理数据;
所述第一端口交叉开关矩阵,用于将所述第一待处理数据输入至所述运算组件;
所述第二端口交叉开关矩阵,用于将所述第二待处理数据输入至所述运算组件;
所述运算组件,用于根据所述执行参数对所述第一待处理数据以及所述第二待处理数据进行处理,得到目标运算结果;所述运算组件具体用于在同一个时钟周期内对数据进行多次处理;
所述数据输入通道包括张量输入通道;所述张量输入通道,用于接收所述第一待处理数据和所述第二待处理数据中的至少一种,其中,所述第一待处理数据与第二待处理数据均属于张量所包含的数据;
所述第二端口交叉开关矩阵包括延迟调节器;
所述第一端口交叉开关矩阵,具体用于在第一时钟周期内,将所述第一待处理数据输入至所述运算组件;
所述运算组件,具体用于在第二时钟周期内,向所述第一端口交叉开关矩阵输出中间运算结果,其中,所述中间运算结果为根据所述第一待处理数据运算后得到的,所述第二时钟周期与所述第一时钟周期之间间隔M个时钟周期,所述M为大于或等于1的整数;
所述第一端口交叉开关矩阵,具体用于在第三时钟周期内,将所述中间运算结果输入至所述运算组件,其中,所述第三时钟周期与所述第一时钟周期之间间隔N个时钟周期,所述N为大于或等于所述M的整数;
所述延迟调节器,用于在所述第三时钟周期内,将所述第二待处理数据输入至所述运算组件。
2.根据权利要求1所述的处理部件,其特征在于,所述执行参数携带运算模式标识;
所述数据输入通道,还用于接收数据写入地址;
所述第一端口交叉开关矩阵,具体用于从第一读取地址所对应的数据输入通道读取所述第一待处理数据;
所述第二端口交叉开关矩阵,具体用于从第二读取地址所对应的数据输入通道读取所述第二待处理数据;
所述运算组件,具体用于根据所述执行参数,采用所述运算模式标识所对应的运算模式对数据进行处理,得到中间运算结果;
对所述中间运算结果进行处理,得到所述目标运算结果;
将所述目标运算结果输入至所述第一端口交叉开关矩阵;
所述第一端口交叉开关矩阵,还用于根据所述数据写入地址,输出所述目标运算结果。
3.根据权利要求1所述的处理部件,其特征在于,所述数据输入通道还用于接收控制信号以及窗口标识;
其中,所述控制信号包括特征图结束标识以及数据有效标识中的至少一项,其中,所述特征图结束标识表示一个特征图内的最后一个数据,所述数据有效标识表示启动ALU;
所述窗口标识包括起始窗口标识以及结束窗口标识中的至少一项,所述起始窗口标识表示一个窗口内的第一个数据,所述结束窗口标识表示一个窗口内的最后一个数据。
4.根据权利要求1所述的处理部件,其特征在于,所述数据输入通道还包括标量输入通道以及地址输入通道;
所述标量输入通道,用于接收所述第二待处理数据,其中,所述第二待处理数据属于标量所对应的数据;
所述地址输入通道,用于接收结果输出地址,其中,所述结果输出地址为写入存储器的地址。
5.根据权利要求1至4中任一项所述的处理部件,其特征在于,所述运算组件至少包括第一运算组件;
所述第一端口交叉开关矩阵,具体用于将所述第一待处理数据输入至所述第一运算组件;
所述第二端口交叉开关矩阵,具体用于将所述第二待处理数据输入至所述第一运算组件;
所述第一运算组件,用于根据所述执行参数,对所述第一待处理数据进行处理,得到中间运算结果;
所述第一运算组件,还用于向所述第一端口交叉开关矩阵输出所述中间运算结果;
所述第一端口交叉开关矩阵,具体用于将所述中间运算结果输入至所述第一运算组件;
所述第一运算组件,还用于根据所述执行参数,对所述中间运算结果以及所述第二待处理数据进行处理,得到所述目标运算结果。
6.根据权利要求1至4中任一项所述的处理部件,其特征在于,所述运算组件至少包括第一运算组件;
所述第一端口交叉开关矩阵,具体用于将所述第一待处理数据输入至所述第一运算组件;
所述第二端口交叉开关矩阵,具体用于将所述第二待处理数据输入至所述第一运算组件;
所述第一运算组件,用于根据所述执行参数对所述第一待处理数据以及所述第二待处理数据进行处理,得到中间运算结果;
所述第一运算组件,还用于向所述第一端口交叉开关矩阵输出所述中间运算结果;
所述第一端口交叉开关矩阵,具体用于将所述中间运算结果输入至所述第一运算组件;
所述第一运算组件,还用于根据所述执行参数对所述中间运算结果以及所述第二待处理数据进行处理,得到所述目标运算结果。
7.根据权利要求1至4中任一项所述的处理部件,其特征在于,所述运算组件至少包括第一运算组件;
所述数据输入通道,还用于接收第三待处理数据;
所述第一端口交叉开关矩阵,具体用于将所述第一待处理数据输入至所述第一运算组件;
所述第二端口交叉开关矩阵,具体用于将所述第二待处理数据以及所述第三待处理数据输入至所述第一运算组件;
所述第一运算组件,用于根据所述执行参数对所述第一待处理数据以及所述第二待处理数据进行处理,得到中间运算结果;
所述第一运算组件,还用于向所述第一端口交叉开关矩阵输出所述中间运算结果;
所述第一端口交叉开关矩阵,具体用于将所述中间运算结果输入至所述第一运算组件;
所述第一运算组件,还用于根据所述执行参数对所述中间运算结果以及所述第三待处理数据进行处理,得到所述目标运算结果。
8.根据权利要求1至4中任一项所述的处理部件,其特征在于,所述运算组件至少包括第一运算组件以及第二运算组件;
所述第一端口交叉开关矩阵,具体用于将所述第一待处理数据输入至所述第一运算组件;
所述第二端口交叉开关矩阵,具体用于将所述第二待处理数据输入至所述第二运算组件;
所述第一运算组件,用于根据所述执行参数所述第一待处理数据进行处理,得到中间运算结果;
所述第一运算组件,还用于向所述第一端口交叉开关矩阵输出所述中间运算结果;
所述第一端口交叉开关矩阵,具体用于将所述中间运算结果输入至所述第二运算组件;
所述第二运算组件,用于根据所述执行参数对所述中间运算结果以及所述第二待处理数据进行处理,得到所述目标运算结果。
9.根据权利要求1至4中任一项所述的处理部件,其特征在于,所述运算组件至少包括第一运算组件以及第二运算组件;
所述第一端口交叉开关矩阵,具体用于将所述第一待处理数据输入至所述第一运算组件;
所述第二端口交叉开关矩阵,具体用于将所述第二待处理数据输入至所述第一运算组件以及所述第二运算组件;
所述第一运算组件,用于根据所述执行参数对所述第一待处理数据以及所述第二待处理数据进行处理,得到中间运算结果;
所述第一运算组件,还用于向所述第一端口交叉开关矩阵输出所述中间运算结果;
所述第一端口交叉开关矩阵,具体用于将所述中间运算结果输入至所述第二运算组件;
所述第二运算组件,用于根据所述执行参数对所述中间运算结果以及所述第二待处理数据进行处理,得到所述目标运算结果。
10.根据权利要求1至4中任一项所述的处理部件,其特征在于,所述运算组件至少包括第一运算组件以及第二运算组件;
所述数据输入通道,还用于接收第三待处理数据;
所述第一端口交叉开关矩阵,具体用于将所述第一待处理数据输入至所述第一运算组件;
所述第二端口交叉开关矩阵,具体用于将所述第二待处理数据输入至所述第一运算组件,以及将所述第三待处理数据输入至所述第二运算组件;
所述第一运算组件,用于根据所述执行参数对所述第一待处理数据以及所述第二待处理数据进行处理,得到中间运算结果;
所述第一运算组件,还用于向所述第一端口交叉开关矩阵输出所述中间运算结果;
所述第一端口交叉开关矩阵,具体用于将所述中间运算结果输入至所述第二运算组件;
所述第二运算组件,用于根据所述执行参数对所述中间运算结果以及所述第三待处理数据进行处理,得到所述目标运算结果。
11.根据权利要求1至4中任一项所述的处理部件,其特征在于,所述运算组件包括比较器、加法器、乘法器以及查表器中的至少一项;
所述比较器,用于对至少一个待处理数据进行数值比较操作;
所述加法器,用于对至少一个待处理数据进行数值求和操作;
所述乘法器,用于对两个待处理数据进行数值相乘操作;
所述查表器,用于根据待处理数据进行查表操作,或,根据待处理数据进行线性插值操作以及查表操作。
12.根据权利要求1所述的处理部件,其特征在于,所述ALU还包括精度转换模块;
所述数据输入通道,还用于将所述第一待处理数据以及所述第二待处理数据输入至所述精度转换模块,其中,所述第一待处理数据对应于第一数据格式,所述第二待处理数据对应于第二数据格式;
所述精度转换模块,用于将所述第一待处理数据由所述第一数据格式转换为第三数据格式,并输出转换后的第一待处理数据;
所述精度转换模块,还用于将所述第二待处理数据由所述第二数据格式转换为第四数据格式,并输出转换后的第二待处理数据;
所述运算组件,还用于将所述目标运算结果输入至所述第一端口交叉开关矩阵,其中,所述目标运算结果对应于第五数据格式;
所述第一端口交叉开关矩阵,还用于将所述目标运算结果输入至所述精度转换模块;
所述精度转换模块,还用于将所述目标运算结果输由所述第五数据格式转换为第六数据格式,并输出转换后的目标运算结果。
13.根据权利要求1所述的处理部件,其特征在于,所述处理部件中的所述至少一个ALU还包括与所述ALU关联的并行ALU;
所述并行ALU,用于根据所述执行参数,生成并行运算结果;
所述并行ALU,还用于在目标时钟周期内输出所述并行运算结果;
所述ALU,用于在所述目标时钟周期内输出所述目标运算结果。
14.一种数据处理的方法,其特征在于,所述方法应用于处理部件,所述处理部件包括至少一个算术逻辑单元ALU,所述ALU包括译码与参数输入通道、数据输入通道、运算组件、第一端口交叉开关矩阵以及第二端口交叉开关矩阵,所述第二端口交叉开关矩阵包括延迟调节器;所述方法包括:
通过所述译码与参数输入通道接收执行参数,其中,所述执行参数为基于超长指令字的解析后得到的;
通过所述数据输入通道接收第一待处理数据以及第二待处理数据;所述数据输入通道包括张量输入通道;所述张量输入通道,用于接收所述第一待处理数据和所述第二待处理数据中的至少一种,其中,所述第一待处理数据与第二待处理数据均属于张量所包含的数据;
通过所述第一端口交叉开关矩阵,在第一时钟周期内,将所述第一待处理数据输入至所述运算组件;
通过所述运算组件,在第二时钟周期内,向所述第一端口交叉开关矩阵输出中间运算结果,其中,所述中间运算结果为根据所述第一待处理数据运算后得到的,所述第二时钟周期与所述第一时钟周期之间间隔M个时钟周期,所述M为大于或等于1的整数;
通过所述第一端口交叉开关矩阵,在第三时钟周期内,将所述中间运算结果输入至所述运算组件,其中,所述第三时钟周期与所述第一时钟周期之间间隔N个时钟周期,所述N为大于或等于所述M的整数;
通过所述第二端口交叉开关矩阵中的所述延迟调节器,在所述第三时钟周期内,将所述第二待处理数据输入至所述运算组件;
根据所述超长指令字中的所述执行参数,通过所述运算组件对所述第一待处理数据以及所述第二待处理数据进行处理,得到目标运算结果;所述运算组件用于在同一个时钟周期内对数据进行多次处理。
15.一种电子设备,其特征在于,所述电子设备包括至少一个算术逻辑单元ALU,所述ALU包括译码与参数输入通道、数据输入通道、运算组件、第一端口交叉开关矩阵以及第二端口交叉开关矩阵;所述第二端口交叉开关矩阵包括延迟调节器;
所述电子设备包括:
一个或多个处理器;
一个或多个存储器;
所述一个或多个存储器存储有一个或多个计算机程序,所述一个或多个计算机程序包括指令,当所述指令被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:
通过所述译码与参数输入通道接收执行参数,其中,所述执行参数为基于超长指令字的解通过析后得到的;
通过所述数据输入通道接收第一待处理数据以及第二待处理数据;所述数据输入通道包括张量输入通道;所述张量输入通道,用于接收所述第一待处理数据和所述第二待处理数据中的至少一种,其中,所述第一待处理数据与第二待处理数据均属于张量所包含的数据;
通过所述第一端口交叉开关矩阵,在第一时钟周期内,将所述第一待处理数据输入至所述运算组件;
通过所述运算组件,在第二时钟周期内,向所述第一端口交叉开关矩阵输出中间运算结果,其中,所述中间运算结果为根据所述第一待处理数据运算后得到的,所述第二时钟周期与所述第一时钟周期之间间隔M个时钟周期,所述M为大于或等于1的整数;
通过所述第一端口交叉开关矩阵,在第三时钟周期内,将所述中间运算结果输入至所述运算组件,其中,所述第三时钟周期与所述第一时钟周期之间间隔N个时钟周期,所述N为大于或等于所述M的整数;
通过所述第二端口交叉开关矩阵中的所述延迟调节器,在所述第三时钟周期内,将所述第二待处理数据输入至所述运算组件;
通过所述运算组件根据所述执行参数对所述第一待处理数据以及所述第二待处理数据进行处理,得到目标运算结果;所述运算组件具体用于在同一个时钟周期内对数据进行多次处理。
16.一种芯片系统,其特征在于,所述芯片系统包括:
一个或多个处理器;
一个或多个通信接口;
一个或多个存储器,所述存储器、所述通信接口和所述至少一个处理器通过线路互联,所述至少一个存储器中存储有指令,所述指令被所述处理器执行,使得所述处理器执行如权利要求14所述的数据处理的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010035196.3A CN111242293B (zh) | 2020-01-13 | 2020-01-13 | 一种处理部件、数据处理的方法以及电子设备 |
PCT/CN2020/120164 WO2021143217A1 (zh) | 2020-01-13 | 2020-10-10 | 一种处理部件、数据处理的方法以及相关装置 |
US17/579,489 US20220137927A1 (en) | 2020-01-13 | 2022-01-19 | Processing component, data processing method, and related device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010035196.3A CN111242293B (zh) | 2020-01-13 | 2020-01-13 | 一种处理部件、数据处理的方法以及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111242293A CN111242293A (zh) | 2020-06-05 |
CN111242293B true CN111242293B (zh) | 2023-07-18 |
Family
ID=70874509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010035196.3A Active CN111242293B (zh) | 2020-01-13 | 2020-01-13 | 一种处理部件、数据处理的方法以及电子设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220137927A1 (zh) |
CN (1) | CN111242293B (zh) |
WO (1) | WO2021143217A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111242293B (zh) * | 2020-01-13 | 2023-07-18 | 腾讯科技(深圳)有限公司 | 一种处理部件、数据处理的方法以及电子设备 |
CN111506520B (zh) * | 2020-07-01 | 2020-09-22 | 腾讯科技(深圳)有限公司 | 一种地址生成的方法、相关装置以及存储介质 |
CN117608861A (zh) * | 2024-01-18 | 2024-02-27 | 上海芯联芯智能科技有限公司 | 一种中央处理器cpu装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102360344A (zh) * | 2011-10-10 | 2012-02-22 | 西安交通大学 | 矩阵处理器及其指令集和嵌入式系统 |
CN107315574A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行矩阵乘运算的装置和方法 |
CN107315715A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行矩阵加/减运算的装置和方法 |
CN108804077A (zh) * | 2017-04-28 | 2018-11-13 | 英特尔公司 | 用来执行用于机器学习的浮点和整数操作的指令和逻辑 |
CN109871510A (zh) * | 2019-01-08 | 2019-06-11 | 广东浪潮大数据研究有限公司 | 二维卷积运算处理方法、系统、设备及计算机存储介质 |
CN110197111A (zh) * | 2018-02-27 | 2019-09-03 | 意法半导体国际有限公司 | 用于深度学习引擎的加速单元 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7949856B2 (en) * | 2004-03-31 | 2011-05-24 | Icera Inc. | Method and apparatus for separate control processing and data path processing in a dual path processor with a shared load/store unit |
CN101957743B (zh) * | 2010-10-12 | 2012-08-29 | 中国电子科技集团公司第三十八研究所 | 并行数字信号处理器 |
CN103218344A (zh) * | 2013-04-28 | 2013-07-24 | 上海大学 | 采用数据驱动机制多处理器间数据通信电路 |
US10275243B2 (en) * | 2016-07-02 | 2019-04-30 | Intel Corporation | Interruptible and restartable matrix multiplication instructions, processors, methods, and systems |
WO2018107476A1 (zh) * | 2016-12-16 | 2018-06-21 | 华为技术有限公司 | 访存设备、计算设备和应用于卷积神经网络运算的设备 |
CN107844322B (zh) * | 2017-07-20 | 2020-08-04 | 上海寒武纪信息科技有限公司 | 用于执行人工神经网络正向运算的装置和方法 |
CN109522254B (zh) * | 2017-10-30 | 2022-04-12 | 上海寒武纪信息科技有限公司 | 运算装置及方法 |
US10747844B2 (en) * | 2017-12-12 | 2020-08-18 | Tesla, Inc. | Systems and methods for converting a matrix input to a vectorized input for a matrix processor |
CN107957977B (zh) * | 2017-12-15 | 2020-04-24 | 中科寒武纪科技股份有限公司 | 一种计算方法及相关产品 |
CN112463115A (zh) * | 2017-12-15 | 2021-03-09 | 安徽寒武纪信息科技有限公司 | 一种计算方法及相关产品 |
CN108037908B (zh) * | 2017-12-15 | 2021-02-09 | 中科寒武纪科技股份有限公司 | 一种计算方法及相关产品 |
US11816483B2 (en) * | 2017-12-29 | 2023-11-14 | Intel Corporation | Systems, methods, and apparatuses for matrix operations |
WO2019133829A1 (en) * | 2017-12-29 | 2019-07-04 | Spero Devices, Inc. | Digital architecture supporting analog co-processor |
CN111242293B (zh) * | 2020-01-13 | 2023-07-18 | 腾讯科技(深圳)有限公司 | 一种处理部件、数据处理的方法以及电子设备 |
-
2020
- 2020-01-13 CN CN202010035196.3A patent/CN111242293B/zh active Active
- 2020-10-10 WO PCT/CN2020/120164 patent/WO2021143217A1/zh active Application Filing
-
2022
- 2022-01-19 US US17/579,489 patent/US20220137927A1/en active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102360344A (zh) * | 2011-10-10 | 2012-02-22 | 西安交通大学 | 矩阵处理器及其指令集和嵌入式系统 |
CN107315574A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行矩阵乘运算的装置和方法 |
CN107315715A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行矩阵加/减运算的装置和方法 |
CN108804077A (zh) * | 2017-04-28 | 2018-11-13 | 英特尔公司 | 用来执行用于机器学习的浮点和整数操作的指令和逻辑 |
CN110197111A (zh) * | 2018-02-27 | 2019-09-03 | 意法半导体国际有限公司 | 用于深度学习引擎的加速单元 |
CN109871510A (zh) * | 2019-01-08 | 2019-06-11 | 广东浪潮大数据研究有限公司 | 二维卷积运算处理方法、系统、设备及计算机存储介质 |
Non-Patent Citations (2)
Title |
---|
A low-latency sparse-Winograd accelerator for convolutional neural networks;Wang H等;《International Conference on Acoustics, Speech and Signal Processing》;第1448-1452页 * |
基于BWDSP的众核深度学习加速器的研究;邓文齐;《中国优秀硕士学位论文全文数据库 信息科技辑》(第12期);第I140-106页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111242293A (zh) | 2020-06-05 |
WO2021143217A1 (zh) | 2021-07-22 |
US20220137927A1 (en) | 2022-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111242293B (zh) | 一种处理部件、数据处理的方法以及电子设备 | |
US10445451B2 (en) | Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features | |
Trivedi et al. | Design & analysis of 16 bit RISC processor using low power pipelining | |
EP3343388A1 (en) | Processors, methods, and systems with a configurable spatial accelerator | |
CN111512292A (zh) | 用于可配置空间加速器中的非结构化数据流的装置、方法和系统 | |
US5991785A (en) | Determining an extremum value and its index in an array using a dual-accumulation processor | |
US20190004955A1 (en) | Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features | |
US7725520B2 (en) | Processor | |
US20190004945A1 (en) | Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features | |
JP2001520775A (ja) | 算術プロセッサ | |
US20130159665A1 (en) | Specialized vector instruction and datapath for matrix multiplication | |
US20210109711A1 (en) | Processor and method for processing mask data | |
Sun et al. | An I/O bandwidth-sensitive sparse matrix-vector multiplication engine on FPGAs | |
He et al. | A configurable SIMD architecture with explicit datapath for intelligent learning | |
CN116710912A (zh) | 一种矩阵乘法器及矩阵乘法器的控制方法 | |
CN112712172B (zh) | 用于神经网络运算的计算装置、方法、集成电路和设备 | |
CN111178492B (zh) | 计算装置及相关产品、执行人工神经网络模型的计算方法 | |
CN114117896A (zh) | 面向超长simd管线的二值规约优化实现方法及系统 | |
Hosseini et al. | Fast implementation of dense stereo vision algorithms on a highly parallel SIMD architecture | |
CN113867799A (zh) | 计算装置、集成电路芯片、板卡、电子设备和计算方法 | |
Kang et al. | Datapath Extension of NPUs to Support Nonconvolutional Layers Efficiently | |
Zhou et al. | A configurable circuit for cross-correlation in real-time image matching | |
Rust et al. | Implementation of a low power low complexity ASIP for various sphere decoding algorithms | |
Digeser et al. | Instruction set extension in the NIOS II: A floating point divider for complex numbers | |
Kwon et al. | A 0.18/spl mu/m implementation of a floating-point unit for a processing-in-memory system |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40023739 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |