一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据处理方法、电子设备和介质与流程

2022-11-13 11:59:59 来源:中国专利 TAG:
1.本发明涉及数据处理
技术领域
:,具体涉及一种数据处理方法、电子设备和介质。
背景技术
::2.处理器的计算模块可以将接收到的向量数据以及相应的指令操作,通过对应的运算单元,完成对应的向量指令。其中的运算单元中可以包括加法器、乘法器、移位器、比较器等。3.在处理器的计算模块执行向量指令时,运算单元每次能够运算处理的向量数据的数据带宽是相同的。对于不同数据带宽的操作数据,需要通过软件算法改变向量数据的数据带宽,然后再执行对应的向量指令。例如,假设处理器的计算单元每个周期能够操作的数据带宽为32位,对于数据带宽为128位的输入向量数据,每次均需要通过软件算法将向量指令中的每个输入向量数据拆分为4个数据元素,得到4组数据元素,然后分别将每组数据元素输入运算单元进行数据处理,进而需要4个周期完成128位的输入向量数据的向量指令;对于数据带宽为64位的输入向量数据,每次均需要通过软件算法将向量指令中的每个输入向量数据拆分为2个数据元素,得到2组数据元素,然后分别将每组数据元素输入运算单元进行数据处理,进而需要2个周期完成64位的输入向量数据的向量指令。4.可见,目前的方案中的计算模块,在执行向量指令时,对于相同数据带宽的向量数据的向量指令的执行,需要通过多个周期完成,耗费时间较多,计算模块执行向量指令的速度较慢。技术实现要素:5.为解决上述处理器执行指令速度较慢的问题,本技术实施例提供了一种数据处理方法、电子设备和介质。6.第一方面,本技术实施例提供了一种数据处理方法,应用于处理器,处理器包括多个数据通路,每个数据通路包括至少一个运算单元;7.上述数据处理方法,包括:8.获取第一指令以及第一指令的第一操作数,第一操作数包括多个数据元素,每个数据元素为第一操作数的一部分;9.根据第一指令和第一操作数,确定第一指令的目标数据带宽,并在多个数据通路中确定至少两个数据通路为目标数据通路,其中,目标数据带宽表征了处理器在每个周期可以处理的第一操作数的长度;10.基于目标数据带宽和至少两个目标数据通路,确定各目标数据通路对应的目标数据片段,目标数据片段匹配于至少一个数据元素;11.将目标数据片段并行输入对应的目标数据通路,并根据第一指令进行运算处理。12.可以理解,目标数据片段匹配于至少一个数据元素,可以包括目标数据片段为一个数据元素;目标数据片段为至少两个数据元素,目标数据片段为数据元素的一部分。13.本技术实施例提供的数据处理方法,通过采用多个数据通路,可以控制每周期内执行的操作数的长度(即目标数据带宽),多个数据通路可以并行执行,使得每个周期可以同时处理多组数据元素,每组数据元素的执行不需要耗费一个周期。对于相同长度的输入指令对应的输入数据,每周期可以对不同的数据带宽进行运算,通过扩大每周期执行的数据带宽,减少数据处理所需要的时间,提高数据处理速度。14.在上述第一方面的一种可能的实现方式中,根据第一指令和第一操作数,确定第一指令的目标数据带宽,并在多个数据通路中确定至少两个数据通路为目标数据通路,包括:15.根据第一指令和第一操作数,确定目标数据带宽;16.根据目标数据带宽以及多个数据通路中的至少一个运算单元,确定目标数据通路。17.在上述第一方面的一种可能的实现方式中,根据第一指令和第一操作数,确定目标数据带宽,包括:18.根据多个数据通路中的各运算单元的最大执行数据带宽,确定目标数据带宽。19.在上述第一方面的一种可能的实现方式中,根据第一指令和第一操作数,确定目标数据带宽,包括:20.根据第一指令对应的运算类型和多个数据通路中的各运算单元的最大执行数据带宽,确定目标数据带宽。21.在上述第一方面的一种可能的实现方式中,根据第一指令和第一操作数,确定目标数据带宽,包括:22.根据第一指令的执行条件,确定目标数据带宽,其中,执行条件表征了第一指令与第二指令的执行依赖关系。23.在上述第一方面的一种可能的实现方式中,根据第一指令和第一操作数,确定目标数据带宽,包括:24.根据多个数据通道的执行模式,确定目标数据带宽;25.其中,执行模式包括并行执行模式和禁止执行模式,并行执行模式表征多个数据通道中的第一数据处理通道与第二数据通路在相同周期执行,禁止执行模式表征第一数据处理通道与第二数据通路在不同周期执行。26.在上述第一方面的一种可能的实现方式中,根据目标数据带宽以及多个数据通路中的至少一个运算单元,确定目标数据通路,包括:27.根据多个数据通路的至少一个运算单元,确定各数据通路的最大执行数据带宽;28.根据目标数据带宽和各数据通路的最大执行数据带宽,确定目标数据通路。29.在上述第一方面的一种可能的实现方式中,基于目标数据带宽和至少两个目标数据通路,确定各目标数据通路对应的目标数据片段,包括:30.若数据元素的长度小于或等于目标数据处理通路的最大执行数据带宽,则将数据元素作为目标数据片段;31.若数据元素的长度大于目标数据处理通路的最大执行数据带宽,则将数据元素中匹配于目标数据处理通路的最大执行数据带宽的部分数据片段,作为目标数据片段。32.在上述第一方面的一种可能的实现方式中,基于目标数据带宽和至少两个目标数据通路,确定各目标数据通路对应的目标数据片段,还包括:33.若多个数据元素中的至少两个数据元素的长度之和小于或等于目标数据处理通路的最大执行数据带宽,则将至少两个数据元素组成的数据片段作为目标数据片段。34.第二方面,本技术实施例提供了一种处理器,包括计算模块和控制模块,35.计算模块包括多个数据通路,各数据通路中包括至少一个运算单元;各数据通路基于输入至数据通路的数据片段,并行进行运算处理;36.控制模块,获取第一指令以及第一指令的第一操作数,根据第一指令和第一操作数,生成控制指令输出至计算模块;其中,第一操作数包括多个数据元素,每个数据元素为第一操作数的一部分;37.其中,控制指令,用于确定第一指令的目标数据带宽,并在计算模块包括的多个数据通路中确定至少两个数据通路为目标数据通路,其中,目标数据带宽表征了处理器在每个周期可以处理的第一操作数的长度;38.并且,控制指令用于,基于目标数据带宽和至少两个目标数据通路,确定各目标数据通路对应的目标数据片段,目标数据片段匹配于至少一个数据元素。39.在上述第二方面的一种可能的实现方式中,计算模块包括第一数据通路、第二数据通路、第三数据通路和第四数据通路;40.第一数据通路包括依次连接的第一乘法器、第一移位器、第一加法器、第二加法器、第三加法器;41.第二数据通路包括依次连接的第二乘法器、第二移位器、第一加法器、第二加法器、第三加法器;42.第一数据通路包括依次连接的第三乘法器、第三移位器、第四加法器、第二加法器、第三加法器;43.第二数据通路包括依次连接的第四乘法器、第四移位器、第四加法器、第二加法器、第三加法器。44.在上述第二方面的一种可能的实现方式中,计算模块还包括第五数据通路,第五数据通路包括依次连接的第五移位器、第三加法器。45.第三方面,本技术实施例提供了一种电子设备,一个或多个处理器;一个或多个存储器;一个或多个存储器存储有一个或多个程序,当一个或者多个程序被一个或多个处理器执行时,使得电子设备执行上述数据处理方法。46.第四方面,本技术实施例提供了一种计算机可读存储介质,存储介质上存储有指令,指令在计算机上执行时使所述计算机执行上述数据处理方法。47.第五方面,本技术实施例提供了一种计算机程序产品,计算机程序产品包括指令,该指令在执行时使计算机执行上述数据处理方法。附图说明48.图1所示为本技术实施例提供的一种处理器的硬件结构示意图;49.图2a所示为本实施例提供的一种计算模块的硬件结构示意图;50.图2b所示为本实施例提供的一种数据处理方法的执行过程示意图;51.图3所示为本技术实施例提供的一种计算模块的硬件结构示意图;52.图4所示为本技术实施例提供的一种数据处理方法的执行过程示意图;53.图5所示为本技术实施例提供的一种数据处理方法的流程示意图;54.图6所示为本技术实施例提供的一种多个线路同时执行指令的执行过程示意图;55.图7所示为本技术实施例提供的一种电子设备的结构示意图;56.图8所示为本技术实施例提供的一种片上系统的结构示意图。具体实施方式57.本技术的说明性实施例包括但不限于一种数据处理方法、电子设备和介质。下面将结合附图对本技术的实施例作进一步地详细描述。58.在以下的叙述中,为了使读者更好地理解本发明而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本发明各权利要求所要求保护的技术方案。59.图1所示为本技术实施例提供的一种处理器的硬件结构示意图。60.如图1所示,处理器100包括控制模块101、计算模块102和存储模块103。61.其中,控制模块101可以直接访问存储模块103,用于读取存储模块103中存储的指令和操作数,并根据指令以及对应的操作数控制操作数在计算模块102的分配,并控制计算模块中相对应的运算单元执行指令。在一些实施例中,控制模块101还可以接收主机(host)的数据处理指令,通过直接访问存储模块103,并控制计算模块102进行运算,其中host可以为主处理器、任务或者应用程序等。62.在一些实施例中,控制模块可以包括控制寄存器、指令/操作数分类单元、数据选择器等。其中,控制寄存器由host通过总线进行控制,控制寄存器对发送给处理器100的操作码进行分配。通过控制寄存器间接访问存储模块103。数据选择器用于选择指令指定的控制寄存器。指令/操作数分类单元通过确定指令的运算操作对指令池中的指令(包括伪指令)进行分类,并选择计算模块中对应的运算单元进行运算。63.可以理解,指令/操作数分类单元可以用硬件实现也可以用软件实现。指令/操作数分类单元在对指令进行分类前,会判断执行是否满足分类条件,具体地,判断指令执行所需的数据是否是另一指令执行完毕后的结果数据,如果是另一指令执行完毕后的结果数据且另一指令已执行完毕,则确定该指令的运算操作以对指令进行分类,如果是另一指令执行完毕后的结果数据但另一指令未执行完毕,则将该指令放回指令池中,如果不是另一指令执行完毕后的结果数据,则确定该指令的运算操作以对该指令进行分类。如果指令/操作数分类单元用硬件实现,则硬件维护一个执行结果列表,当软件配置一个指令和其操作数时,如果指令的执行是另一指令执行完毕后的结果数据,则在执行结果列表中查找另一指令的结果表示状态,如果状态为已执行完毕,则对该指令进行分类,如果状态表示未执行完毕,则将暂时不对该指令进行分类,将其放回指令池。64.其中,计算模块102可以包括由多个运算单元组成的数据通路,用于根据控制单元的控制分配结果,通过对应的运算单元执行运算。其中运算单元可以例如加法器、乘法器、移位器等。在一些实施例中,计算模块102可以包括多个不同种类的运算单元组成的数据通路。例如乘法器组成的数据通路1,加法器组成的数据通路2,移位器组成的数据通路3等。65.其中,存储模块103用于存储操作数和指令。可以理解,在一些实施例中,存储模块103中存储的操作数可以被划分为多个数据元素进行存储。例如,假设操作数为128位向量数据,每32位数据组成一个数据元素,128位向量数据可以包括4个数据元素。66.进一步地,在计算单元102对输入的操作数进行计算时,可以分别对输入的操作数的每组数据元素进行计算,然后每组数据元素的运算可以作为一个运算节拍(beat)。67.可以理解,本技术实施例中的处理器100为面积较小、制作成本较低的微型处理器。68.如前文所述,目前的方案中,计算模块102在执行指令时,运算单元每次能够运算处理的向量数据的数据带宽是相同的,数据带宽可以理解为每个周期可以处理的数据宽度。下面结合图2a和图2b对一种数据的处理方法进行介绍。69.图2a所示为本实施例提供的一种计算模块的结构示意图。70.图2b所述为本实施例提供的一种数据处理方法的流程图。71.如图2a所示,计算模块102包括乘法器1021、移位器1022和加法器1023。计算模块在接收到待执行的控制指令以及操作数时,会根据控制指令控制乘法器1021、移位器1022和加法器1023中的一个或多个运算单元,对每组数据元素进行运算,如图2b中的每个beat的运算,然后得到最终的运算结果。72.每组操作数的计算为一个周期,且运算单元在进行运算时,每次可以实现的运算的数据带宽是相同的,为32位数据带宽。73.可以理解,图2b中的a、b、c、d中的beat1至beat3位128位数据带宽的向量数据(即操作数)的运算,每个beat对应一个周期。74.可以理解,对于相同的长度为128位的向量数据,无论进行何种运算,均需要通过4个周期完成,每周期可以执行32位数据带宽。75.可见,上述方案中的计算模块102,在执行向量指令时,对于相同数据带宽的向量数据的向量指令的执行,需要通过多个周期完成,耗费时间较多,计算模块执行向量指令的速度较慢。76.为了解决上述问题,本技术实施例提供了一种数据处理方法及装置。例如,该数据处理装置为图1中的计算模块102,包括多个数据通路,多个数据通路可以通过控制模块101的控制,在一个周期内完成一组或多组数据元素的运算,每个数据元素为对应操作数的一部分。具体地,控制模块101根据接收到的操作数以及输入指令,确定每个周期内可以处理的目标数据带宽以及目标数据通路,控制模块101根据目标数据带宽以及目标数据通路生成控制指令并确定每个周期的目标操作数,控制模块101按照周期,将目标操作数以及控制指令输入对应的目标数据通路,运算模块102的各目标数据通路按照控制指令完成运算并输出运算结果。77.可以理解,控制模块101接收到的输入指令为前文中的第一指令,接收到的操作数为前文中的第一操作数。确定的每个周期的目标操作数为目标数据通路对应的目标数据片段,目标数据片段为操作数部分或全部。78.可以理解,每个数据通路可以包括至少一个运算单元,其中的运算单元可以例如执行加法运算的加法器、执行乘法运算的乘法器、执行移位运算的移位器、执行比较运算的比较器等等。进一步地,每个计算通路可以包括一种或多种运算类型,本技术对此不作限制。79.可以理解,其中的输入指令为对操作数进行的运算,例如加法运算指令、乘法运算指令、移位运算指令、累加运算指令、乘累加运算指令等。控制指令为根据指令生成的对各运算子单元的选择指令,被选中的运算子单元会对输入的部分操作数进行运算。80.可以理解,目标操作数为每个周期可以执行对应组别的数据元素,为输入的操作数的一部分。例如对于输入长度为128位的操作数,每个数据元素可以为32位,目标操作数可以为32位,也可以为64位,还可以为128位。81.可以理解,控制模块在确定目标数据带宽时,可以根据如下任意之一条件进行控制:82.根据每个数据通路中,各运算单元的功能进行确定,各运算单元的功能可例如乘法、加法、移位、比较等;83.根据输入指令对应的运算逻辑确认,指令对应的运算逻辑可例如指令是为累加指令、乘累加指令、混合运算指令等;84.根据指令的执行条件进行确认,执行条件可例如多条指令是否发生数据冲突等;85.根据多条指令的执行模式进行确认,多条指令的执行模式可例如当前指令是否依赖前一条指令的执行结果,在某些处理线路中指令是否被禁止等。86.本技术实施例提供的数据处理方法,通过采用多个数据通路,结合控制模块的控制指令,可以控制每周期内执行的操作数的长度,即多个数据通路可以并行运行,使得每个周期可以同时处理多组数据元素,每组数据元素的执行不需要耗费一个周期。对于相同长度的输入指令对应的输入数据,每周期可以对不同的数据带宽(操作数的长度)进行运算,通过扩大每周期执行的数据带宽,减少数据处理所需要的时间,提高数据处理速度。87.下面结合图3,对本技术实施例提供的计算模块进行详细介绍。88.如图3所示,计算模块包括四个加法器、五个移位器、四个乘法器组成的五个数据通路。其中四个乘法分别为乘法器311、乘法器321、乘法器331、乘法器341,五个移位器分别为移位器312、移位器322、移位器332、移位器342、移位器381,四个加法器分别为加法器351、加法器352、加法器361、加法器371。89.可以理解,乘法器311、移位器312、加法器351、加法器361和加法器371可以作为数据通路1,乘法器321、移位器322、加法器351、加法器361和加法器371可以作为数据通路2,乘法器331、移位器332、加法器352、加法器361和加法器371可以作为数据通路3,乘法器341、移位器342、加法器352、加法器361和加法器371可以作为数据通路4,移位器381作为数据通路5。控制模块101可以连接乘法器311、乘法器321、乘法器331、乘法器341、移位器381,同时向乘法器311、乘法器321、乘法器331、乘法器341、移位器381输入数据,进而乘法器311、乘法器321、乘法器331、乘法器341、移位器381可以同时进行运算。90.其中,移位器312和移位器322的输出结果可以通过加法器351进行加法运算,移位器332和移位器342的输出结果可以通过加法器352进行加法运算。91.其中,加法器351和加法器352的输出结果可以通过加法器361进行加法运算,加法器361和移位器381的运算结果可以通过加法器371进行加法运算。92.在一些实施例中,上述乘法器可以为16×16的乘法器,乘法运算的每个操作数最多为16位。93.具体地,如图4中的b阶段的运算为例,以计算模块102通过2个周期执行128位向量数据的输入指令,以每个beat可以执行32位的操作数的运算为例。在第一个周期可以将beat0中的数据元素的低16位作为乘法器311的输入的目标操作数,参与相应的运算,将beat0中的数据元素的高16位作为乘法器321的输入的目标操作数,参与相应的运算;将beat1中的数据元素的低16位作为乘法器331的输入的目标操作数,参与相应的运算,将beat1中的数据元素的高16位作为乘法器341的输入的目标操作数,参与相应的运算。94.例如,假设对操作数a和操作数b进行乘法运算,可以将beat0中的操作数a和操作数b的第一组32位数据元素中的低16位作为乘法器311的输入,进行乘法运算,将beat0中的操作数a和操作数b的第一组32位数据元素中的高16位作为乘法器321的输入,进行乘法运算;可以将beat1中的操作数a和操作数b的第二组32位数据元素中的低16位作为乘法器331的输入,进行乘法运算,将beat1中的操作数a和操作数b的第二组32位数据元素中的高16位作为器乘法器341的输入,进行乘法运算,此为图4中的b阶段的第一个周期。第二个周期同理,可以将beat2中的操作数a和操作数b的第三组32位数据元素中的低16位作为乘法器311的输入,进行乘法运算,将beat2中的操作数a和操作数b的第三组32位数据元素中的高16位作为乘法器321的输入,进行乘法运算;可以将beat3中的操作数a和操作数b的第四组32位数据元素中的低16位作为乘法器331的输入,进行乘法运算,将beat3中的操作数a和操作数b的第四组32位数据元素中的高16位作为器乘法器341的输入,进行乘法运算,此为图4中的b阶段的第二个周期。95.可以看出,对于128位的操作数a和操作数b的乘法运算,可以通过控制模块对多个数据通路的控制,在两个周期内完成,而不需要花费四个周期,大大节省了运算时间,提高运算速度。本技术实施例中的数据处理方法可以共享相同的硬件结构,而实现对操作数的不同数据带宽的数据处理。96.在一些实施例中,指令中还可以包括对操作数c的运算,例如a*b c,则可以采用上述方法对操作数a和操作数b进行乘法运算,还可以将beat0和beat1中的操作数c的第一组和第二组数据元素同时输入移位器381,然后将以为器381的输出结果和加法器361的输出结果进行加法运算,此过程对应图4中的b阶段的第一个周期。第二个周期同理,采用上述方法对操作数a和操作数b进行乘法运算,将beat2和beat3中的操作数c的第二组和第三组数据元素同时输入移位器381,然后将以为器381的输出结果和加法器361的输出结果进行加法运算,此过程对应图4中的b阶段的第二个周期。下面结合图5,对本技术实施例提供的数据处理方法进行详细介绍。97.图5所示为本技术实施例提供的一种数据处理方法的流程示意图。98.如图5所示,该方法包括:99.501:控制模块从存储模块中获取输入指令以及对应的操作数。100.可以理解,输入指令为对操作数进行的运算,可以为单类型运算,例如加法运算、乘法运算、比较运算、移位运算,还可以为多类型运算,例如乘法运算和加法运算的混合运算,乘法运算和移位运算的混合运算,先进行乘法运算在进行加法运算等等。本技术对此不作限制。101.在一些实施例中,输入指令中还可以包括除上述加法运算、乘法运算、比较运算、移位运算之外的其他运算,本技术对此不作限制。102.可以理解,操作数为待进行运算的数据,操作数可以为任意类型的数据。例如向量数据、标量数据、张量数据等。在其他实施例中,操作数还可以为其他类型的数据,本技术对此不作限制。103.可以理解,操作数可以为寄存器中标记的数据。例如,寄存器存储的数据长度为128位,将每32位数据片段作为一个数据元素,128位操作数被划分为4个数据元素,输入指令中对于操作数的每组数据元素的计算可以作为一个beat,且对应的4个数据元素被标记在相同的寄存器中。104.502:控制模块根据输入指令以及操作数,确定计算模块每周期可以执行目标数据带宽以及对应的目标数据通路。105.可以理解,目标数据带宽为每周期可以执行的数据宽度。例如每周期可以执行32位数据的运算,即执行一个beat,或者每周期可以执行64位数据的运算,即执行两个beat;再或者每周期可以执行128位数据的运算,即执行四个beat。106.可以理解,目标数据通路为控制模块根据输入指令以及操作数,确定的执行输入指令的数据通路。目标数据通路为计算模块中多个数据通路中的至少一个数据通路。107.其中,每个数据通路可以包括至少一个运算单元,其中的运算单元可以例如执行加法运算的加法器、执行乘法运算的乘法器、执行移位运算的移位器、执行比较运算的比较器等等。可以理解,运算单元为硬件部件,通过相应的硬件连接,实现函数逻辑。数据通路可以如图3中的各乘法器对应的数据通路,确定目标数据通路即确定操作数输入至乘法器311至乘法器341中的至少一个乘法器中。108.在一些实施例中,每个计算通路可以包括一种或多种运算类型,本技术对此不作限制。109.可以理解,不同输入指令或操作数确定的目标数据带宽可以是不同的,即对于不同的输入指令,在运算执行时,每周期执行的数据带宽可以不同,执行输入指令所需要的周期数也可以不同。110.可以理解,目标数据带宽的确定,可以根据输入指令以及对应的数据通路确定。此部分将在下文进行详细介绍,在此不作赘述。111.可以理解,本技术实施例通过上述多个数据通路的设计,可以实现现在共享硬件部件的基础上,可以根据不同输入指令以及操作数的特征,支持不同数据带宽的数据处理,不需要再通过软件编程、或通过多种计算模块,实现对不同数据带宽的数据处理,节省制造成本。112.在一些实施例中,目标数据带宽和目标数据通路的确定,可以根据多个数据通路的最大执行数据带宽、各运算单元的最大执行数据带宽、输入指令的运算类型、输入指令的执行条件、多个数据通路的执行模式等进行确定,具体将在下文进行说明,在此不作赘述。113.503:控制模块根据目标数据带宽以及目标数据通路,确定每周期执行的目标操作数,并生成控制指令。114.可以理解,目标操作数可以为每周期输入到计算模块的输入数据,可以为操作数的一部分,也可以为全部操作数。例如,对于被划分为4个数据元素的128位操作数,当确定目标数据带宽为32位时,目标操作数为128位操作数中的任意一个长度为32位的数据元素;当确定目标数据带宽为64位时,目标操作数为128位操作数中的相邻的两个长度为32位的数据元素;当确定目标数据带宽为128位时,目标操作数为128位操作数。115.可以理解,控制指令为根据指令生成的对各运算子单元的选择指令,被选中的运算子单元会对输入的部分操作数进行运算。116.在一些实施例中,控制指令中可以包括所有的运算单元、运算单元对应的标识、运算单元执行的顺序。117.可以理解,运算单元可以通过运算单元地址表征,也可以通过预设的特定id表示。118.可以理解,标识可以用于表征运算单元是否参与运算,例如标识为1,标识运算单元参与运算,标识为0标识运算单元不参与运算。119.在一些实施例中,控制指令中还可以不包括标识,每个运算单元均进行运算,可以通过控制运算单元的输入,控制多个运算单元实现输入指令对应的运算。例如,对于只包括加法运算的输入指令,可以将乘法器的一个乘数设为1,将移位器的移位数设为0,加法器的输入按照输入指令对应的操作数进行设置。120.其中,运算单元的执行顺序可以例如,运算单元执行的先后顺序。例如,通过控制指令中的运算单元的执行顺序,依次触发各运算单元执行运算。121.在一些实施例中,多个运算单元可以是固定连接的,不需要设置运算单元的执行顺序,可以通过控制运算单元的输入实现运算。例如图3中的计算模块,对于输入指令为操作数a与操作数b相加,可以将各乘法器的一个乘数设为1,将各移位器的移位值设为0,对操作数a和操作数b进行加法运算。122.在一些实施例中,控制模块在确定目标操作数时,还可以确定每个目标数据通路对应输入的目标数据片段,具体地,目标数据片段可以根据数据元素的长度以及目标数据通路的最大执行数据带宽确定。123.例如,对于操作数为16位的向量数据,每个数据元素为4位,每个乘法器最大执行数据带宽为16位,确定的目标数据带宽为16位。可以判断,数据元素的长度小于乘法器最大执行数据带宽。则目标数据片段可以为两个数据元素,即可以将16位向量数据的2个数据元素输入乘法器311中,另外两个数据元素输入乘法器321中;目标数据片段可以为一个数据元素,即可以将四个数据元素分别输入乘法器311、乘法器321、乘法器331和乘法器341。124.再例如,对于操作数为128位的向量数据,每个数据元素为32位,每个乘法器最大执行数据带宽为16位,确定的目标数据带宽为32位。可以判断,数据元素的长度大于乘法器最大执行数据带宽。则目标数据片段可以为数据元素的一部分,即将数据元素的低16位输入乘法器311,将数据元素的高16位输入乘法器331。125.504:控制模块将目标操作数、控制指令输入到计算模块中对应的目标数据通路。126.可以理解,步骤504具体可以为,控制模块根据目标数据通路,将目标操作数输入目标数据通路中的对应数据通路,并将控制指令也输入对应的目标数据通路。127.可以理解,多个数据通路的硬件结构可以如图3所示,控制模块将目标操作数、控制指令输入到计算模块中对应的目标数据通路,即控制模块将目标操作数以及控制指令输入对应的乘法器中。128.505:计算模块根据控制指令,采用目标数据通路,完成运算。129.可以理解,计算模块根据控制指令,采用目标数据通路完成运算,即计算模块在接受到控制指令后,以及输入到目标数据通路的目标操作数时,可以根据控制指令,依次采用目标数据通路中的各运算单元,依照控制指令,完成运算。130.506:计算模块输出运算结果,并存储至存储模块。131.可以理解,计算模块在计算得到运算结果后,可以将运算结果输出到存储模块,控制模块在需要根据运算结果执行下一次运算时,可以再次从存储模块中读取对应的操作数以及指令,完成下一次运算。132.可以理解,计算模块在完成上述步骤505和步骤506时,控制模块可以同步进行下一个指令的读取。当控制模块读取的操作数依赖于当前计算模块的运算结果时,控制模块的数据读取会暂停,此现象即overlap。或者当计算模块在进行计算的过程中,当前周期执行完成后,下一个周期的执行需要依赖控制模块的下一次数据获取,或者运算过程与其他指令同时执行可能发生数据冲突,则计算模块下一个周期会暂停执行,等到控制模块数据获取完成或者冲突指令执行完成,计算模块才开始执行下一个周期。133.下面结合图3,对上述步骤502进行进一步介绍。134.如图3所示,计算模块包括三种运算单元,乘法器、加法器和移位器。不同运算单元的最大执行数据带宽是不同的,具体可以如下表1所示。135.表1136.数据粒度8-bit16-bit32-bit乘法器4x8bit=32bit4x16bit=64bit1x32bit=32bit加法器4x8bit=32bit2x16bit=32bit1x32bit=32bit移位器4x8bit=32bit4x16bit=64bit4x32bit=128bit比较器4x8bit=32bit2x16bit=32bit1x32bit=32bit137.其中,数据粒度可以理解为每个数据元素的长度。138.例如对于乘法器,由于每个乘法器能输入的最大数据长度为16位(bit)。当输入的数据元素长度为8bit时,可以将4个数据元素分别输入图3中的4个乘法器,即输入图3中的4个乘法器,可以得到4个8×8的运算结果(16位);当输入的数据元素长度为16bit时,可以将4个数据元素分别输入图3中的4个乘法器,分别得到32位的运算结果;输入的数据元素长度为32bit时,可以将一个数据元素的低16位输入乘法器311中,高16位输入乘法器331中。139.对于加法器,每个加法器可以实现32位的计算结果,但由于加法器的计算依赖前级的乘法器和移位器的计算结果,加法器的运算需要考虑乘法器。当输入的数据元素长度为8bit时,可以将4个数据元素分别输入图3中的4个乘法器,即输入图3中的4个乘法器,进行乘1计算,然后再经过移位实现加法运算,具体在输入时,由于每周期可以进行两次相加运算,可以将需要相加的操作数分别放至乘法器的不同数据位;当输入的数据元素长度为16bit时,可以将2个数据元素分别输入图3中的4个乘法器进行乘1计算,然后再经过移位实现加法运算,由于最多能够进行两次相加,因此每周期可以实现32位加法运算;输入的数据元素长度为32bit时,可以将一个数据元素的低16位输入乘法器311中,高16位输入乘法器331中,进行乘1计算,然后再经过移位实现加法运算,每次可以执行32位加法运算。140.对于移位器,每个移位器可以实现32位的数据移位果。当输入的数据元素长度为8bit时,可以将4个数据元素分别输入图3中的4个乘法器,即输入图3中的4个乘法器,然后再进行移位运算,每周期可以实现32bit数据移位;当输入的数据元素长度为16bit时,可以将4个数据元素分别输入图3中的4个乘法器进行乘1计算,然后再进行移位运算,每周期可以实现32bit数据移位;输入的数据元素长度为32bit时,可以将四个数据元素分别放入四个乘法器的两个16中,进行乘1运算,然后再进行移位运算,每周期可以实现128bit数据移位。141.对于比较器,与加法器类似,在此不作赘述。142.可以理解,根据运算单元的最大执行数据带宽的不同,结合输入指令,可以确定出步骤502中的目标数据带宽。143.在一些实施例中,控制模块101在确定目标数据带宽时,可以根据如下任意之一条件进行控制:144.a)根据每个数据通路中,各运算单元的功能进行确定,各运算单元的功能可例如乘法、加法、移位、比较等;可以理解,不同运算单元执行的最大数据带宽是不同的,具体可以结合上述表1进行目标数据带宽的设置。145.b)根据输入指令对应的运算逻辑(即包括的运算类型)确认,指令对应的运算逻辑可例如指令是为包括多次加法运算的累加指令、包括乘法运算和加法运算的乘累加指令、其他混合运算指令等;可以理解,不同输入指令对应的运算逻辑是不同的,进而需要的运算单元也是不同的,由于每个运算单元执行的最大数据带宽是不同的,可以根据输入指令运算逻辑确定目标数据带宽。146.c)根据指令的执行条件进行确认,执行条件可例如多条指令是否发生数据冲突等;可以理解,由于处理器100可以并行执行多个指令,每个指令的执行可能会对其他指令产生影响,即输入指令可能依赖其他执行的执行结果,输入指令在其他指令之后执行,因此需要结合指令的执行条件确定目标数据带宽。147.d)根据多个数据通路的执行模式进行确认,其中执行模式可例如:多个数据通路是为并行执行模式,即多个数据通路是否可以在同周期并行执行;部分数据通路是否为禁止执行模式,即在某些数据通路中指令需要在不同周期执行等。148.例如,图6所示为本技术实施例提供的一种多个线路同时执行指令的执行过程示意图。149.如图6所示,在加载/存储线路中,c阶段的前两个周期是空白的,即c阶段对应的指令需要暂停或禁止,可能是c阶段的指令需要依靠计算线路b阶段的输出结果才能完成。150.再例如,在计算线路中,b阶段在进行计算的过程中,第一个周期执行完成后,第二个周期的执行需要依赖加载/存储线路中b阶段的beat3的输出,或者第二个周期的执行与其他指令同时执行可能发生数据冲突,则第二个周期会暂停执行,等到加载/存储线路中b阶段的beat3输出后或者冲突指令执行完成,计算模块才开始执行第二个周期。151.如图7所示,为能够实施本技术实施例所提供的技术方案的一种电子设备的系统结构示意框图。152.可以理解,电子设备包括但不限于手机、上网本、平板电脑、智能手表,或者其他桌面型设备、膝上型设备、手持型设备、可穿戴设备、智能家居设备和车载型设备等,例如超级移动个人计算机(ultra-mobilepersonalcomputer,umpc)、智能相机、上网本、个人数字助理(personaldigitalassistant,pda)、便携式多媒体播放器(portablemultimediaplayer,pmp)、ar(增强现实)/vr(虚拟现实)设备、飞行器、机器人等。电子设备还可以为终端设备(手机、平板电脑、笔记本)内的加速器,例如ai加速器等。本技术实施例对电子设备的具体类型和结构等不作限定。153.电子设备700可以包括耦合到系统控制逻辑703的一个或多个处理器701。对于至少一个实施例,系统控制逻辑703经由诸如前端总线(fsb)之类的多分支总线、诸如快速通道互连(qpi)之类的点对点接口、或者类似的连接与处理器701进行通信。处理器701执行控制一般类型的数据处理操作的指令。在一实施例中,系统控制逻辑703包括但不局限于,图形存储器系统控制逻辑(gmch)(未示出)和输入/输出中枢(ioh)(其可以在分开的芯片上)(未示出),其中gmch包括存储器和图形控制器并与ioh耦合。154.电子设备700还可包括耦合到系统控制逻辑703的协处理器702和存储器704。或者,存储器和gmch中的一个或两者可以被集成在处理器内(如本技术中所描述的),存储器704和协处理器702直接耦合到处理器701以及系统控制逻辑703,系统控制逻辑703与ioh处于单个芯片中。存储器704可以是例如动态随机存取存储器(dram)、相变存储器(pcm)或这两者的组合。155.在一个实施例中,电子设备700可以进一步包括网络接口(nic)1206。网络接口706可以包括收发器,用于为电子设备700提供无线电接口,进而与任何其他合适的设备(如前端模块,天线等)进行通信。在各种实施例中,网络接口706可以与电子设备700的其他组件集成。网络接口706可以实现上述实施例中的通信单元的功能。156.电子设备700可以进一步包括输入/输出(i/o)设备705。i/o705可以包括:用户界面,该设计使得用户能够与电子设备700进行交互;外围组件接口的设计使得外围组件也能够与电子设备700交互;和/或传感器设计用于确定与电子设备700相关的环境条件和/或位置信息。157.值得注意的是,图7仅是示例性的。即虽然图7中示出了电子设备700包括处理器701、系统控制逻辑703、存储器704等多个器件,但是,在实际的应用中,使用本技术各方法的系统,可以仅包括电子设备700各器件中的一部分器件,例如,可以仅包含处理器701和nic706。图7中可选器件的性质用虚线示出。158.图8所示为本技术提供的一种soc800的结构框图。在图8中,相似的部件具有同样的附图标记。另外,虚线框是更先进的soc的可选特征。在图8中,soc800包括:互连单元805,其被耦合至处理器801;系统代理单元807;总线控制器单元808;集成存储器控制单元804;一组或一个或多个协处理器802,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(sram)单元803;直接存储器存取(dma)单元806。在一个实施例中,协处理器801包括专用处理器,诸如例如网络或通信处理器、gpgpu、高吞吐量mic处理器、或嵌入式处理器等等。159.本技术公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本技术的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。160.可将程序代码应用于输入指令,以执行本技术描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本技术的目的,处理系统包括具有诸如例如数字信号处理器(dsp)、微控制器、专用集成电路(asic)或微处理器之类的处理器的任何系统。161.程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。包括但不局限于opencl、c语言、c 、java等。而对于c 、java之类语言,由于其会将存储进行转换,基于对于本技术实施例中的基于专用存储单元的数据存储方法的应用会有些差异,本领域技术人员可以基于具体地高级语言进行变换,均不脱离本技术实施例的范围。162.在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以被实现为由一个或多个暂时或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,其可以由一个或多个处理器读取和执行。例如,指令可以通过网络或通过其他计算机可读介质分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,包括但不限于,软盘、光盘、光碟、只读存储器(cd-roms)、磁光盘、只读存储器(rom)、随机存取存储器(ram)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、磁卡或光卡、闪存、或用于利用因特网以电、光、声或其他形式的传播信号来传输信息(例如,载波、红外信号数字信号等)的有形的机器可读存储器。因此,机器可读介质包括适合于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的机器可读介质。163.在附图中,可以以特定布置和/或顺序示出一些结构或方法特征。然而,应该理解,可能不需要这样的特定布置和/或排序。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中,可以不包括这些特征或者可以与其他特征组合。164.需要说明的是,本技术各设备实施例中提到的各单元/模块都是逻辑单元/模块,在物理上,一个逻辑单元/模块可以是一个物理单元/模块,也可以是一个物理单元/模块的一部分,还可以以多个物理单元/模块的组合实现,这些逻辑单元/模块本身的物理实现方式并不是最重要的,这些逻辑单元/模块所实现的功能的组合才是解决本技术所提出的技术问题的关键。此外,为了突出本技术的创新部分,本技术上述各设备实施例并没有将与解决本技术所提出的技术问题关系不太密切的单元/模块引入,这并不表明上述设备实施例并不存在其它的单元/模块。165.需要说明的是,在本专利的示例和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。166.虽然通过参照本技术的某些优选实施例,已经对本技术进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本技术的精神和范围。当前第1页12当前第1页12
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献