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

指令处理方法、数据处理方法及装置与流程

2022-03-01 21:51:00 来源:中国专利 TAG:


1.本发明涉及处理器技术领域,尤其涉及具有包括乘累加指令的指令集的指令处理装置,以及通过乘累加指令来进行神经网络权重保护的数据处理方法。


背景技术:

2.神经网络被广泛应用于模式识别、图像处理、自然语言处理、自动控制等多个领域。神经网络模型包括两部分,一部分是网络结构,包括神经网络的处理层的数量、各处理层的处理节点之间的连接关系等;另一部分是模型参数,包括神经网络各处理节点的权重、偏置等。
3.目前,针对不同的应用场景,开发者通常直接采用开源的通用神经网络结构(或者做少量改动),然后采用私有的、特定应用场景下的数据集来对神经网络进行训练,确定权重等参数,从而生成可应用于特定场景的神经网络模型。由于权重是针对特定的应用场景采用私有数据集训练生成,因此,有必要对神经网络模型的权重进行保护,以防止竞争对手的抄袭行为。
4.现有的权重保护方法主要有两种:
5.一种是采用可信执行环境(例如trustzone等)来保存神经网络权重,但这种方式会引入更复杂的软硬件设计,也会提高终端设备厂商的开发成本。
6.另一种是对权重进行加密存储,在进行神经网络前向计算时,再对权重进行解密。由于权重的数据量较大(远大于网络结构的数据量),因此对权重进行解密所消耗的时间较长,内存资源需求较大,难以满足神经网络前向计算的实时性要求。
7.为此,需要有一种简单、高效的神经网络权重保护方案。


技术实现要素:

8.为此,本发明提供一种指令处理方法、数据处理方法及装置,以力图解决或至少缓解上面存在的问题。
9.根据本发明的第一个方面,提供一种指令处理装置,包括:第一寄存器,适于存储多个第一源数据;第二寄存器,适于存储多个第二源数据;第三寄存器,适于存储顺序信息,顺序信息适于指示第二源数据的乘法操作执行顺序;解码器,适于接收乘累加指令并进行解码,乘累加指令指示:第一寄存器,作为第一操作数、第二寄存器,作为第二操作数、第三寄存器,作为第三操作数;执行单元,分别与第一、第二、第三寄存器和解码器耦接,适于执行解码后的乘累加指令,以便从第一寄存器中获取多个第一源数据,从第二寄存器中获取多个第二源数据,从第三寄存器中获取顺序信息,将多个第一源数据分别与顺序信息所指示的对应第二源数据相乘,以得到多个乘法结果,以及将多个乘法结果相加以得到乘累加结果。
10.根据本发明的第二个方面,提供一种指令处理方法,包括:接收乘累加指令并进行解码,乘累加指令指示第一寄存器为第一操作数、第二寄存器为第二操作数、第三寄存器为
第三操作数;执行解码后的乘累加指令,以便从第一寄存器中获取多个第一源数据,从第二寄存器中获取多个第二源数据,从第三寄存器中获取用于指示第二源数据的乘法操作执行顺序的顺序信息,将多个第一源数据分别与顺序信息所指示的对应第二源数据相乘以得到多个乘法结果,将多个乘法结果相加以得到乘累加结果。
11.根据本发明的第三个方面,提供一种数据处理方法,适于进行神经网络的前向计算,神经网络包括多个处理节点,神经网络的权重数据按照不同于各处理节点排列顺序的顺序进行存储,方法包括:将处理节点的多个输入数据、多个权重数据和顺序信息分别存储至第一寄存器、第二寄存器和第三寄存器,其中,顺序信息适于指示多个权重数据的乘法操作执行顺序;采用上述指令处理方法来计算多个输入数据与多个权重数据的乘累加结果,以得到处理节点的输出数据。
12.根据本发明的第四个方面,提供一种数据处理方法,包括:获取多个第一源数据、多个第二源数据和用于指示多个第二源数据的乘法操作执行顺序的顺序信息;根据顺序信息来确定第一源数据与第二源数据的对应关系;将多个第一源数据分别与对应的第二源数据相乘以得到多个乘法结果,将多个乘法结果相加以得到乘累加结果。
13.根据本发明的第五个方面,提供一种数据处理方法,适于进行神经网络的前向计算,神经网络包括多个处理节点,神经网络的权重数据按照不同于各处理节点排列顺序的顺序进行存储,方法包括:获取处理节点的多个输入数据、多个权重数据和顺序信息,顺序信息适于指示多个权重数据的乘法操作执行顺序;根据顺序信息来确定输入数据与权重数据的对应关系;根据各输入数据所对应的权重数据,对多个输入数据进行加权求和,以确定处理节点的输出数据。
14.根据本发明的第六个方面,提供一种计算设备,包括:至少一个处理器和存储有程序指令的存储器;当程序指令被处理器读取并执行时,使得计算设备执行上述指令处理方法或数据处理方法。
15.根据本发明的第七个方面,提供一种存储有程序指令的可读存储介质,当程序指令被计算设备读取并执行时,使得计算设备执行上述指令处理方法或数据处理方法。
16.根据本发明的第八个方面,提供一种片上系统,包括上述指令处理装置。
17.根据本发明的第九个方面,提供一种智能设备,包括上述片上系统。根据本发明的指令处理方案,可以对第二源数据进行保护。
18.在本发明的指令处理方案中,指令处理装置通过乘累加指令来对第一源数据和第二源数据进行乘累加运算,即:将第一源数据、第二源数据和顺序信息分别读入第一、第二、第三寄存器,然后解码器对乘累加指令进行解码,执行单元执行解码后的乘累加指令,根据顺序信息来确定第二源数据的乘法操作执行顺序,使第二源数据与第一源数据对应,将各第一源数据分别与对应的第二源数据相乘以得到多个乘法结果,然后将多个乘法结果相加以得到乘累加结果。
19.本发明的指令处理方案通过乘累加指令实现了对第二源数据的保护。第二源数据在存储器中以乱序存储,并设置用于指示第二源数据的乘法操作执行顺序的顺序信息。当需要对第二源数据进行乘累加运算时,可通过顺序信息来确定第二源数据的乘法操作执行顺序,即确定第一源数据与第二源数据的乘法对应关系。第二源数据在存储器中以乱序存储,即使他人通过非法手段盗取第二源数据,由于无法得知第二源数据的正确顺序,其也无
法使用第二源数据,从而实现了对第二源数据的保护。
20.此外,本发明的指令处理方案仅调整了第二源数据的排列顺序,第二源数据依旧可以被指令处理装置读入,并通过乘累加指令直接用于计算,不需要额外的软硬件结构,也不需要进行复杂、耗时的加解密步骤,从而实现了对第二源数据的简单、高效的保护。
21.第二源数据可以是神经网络的权重数据,相应地,本发明的数据处理方法能够实现对权重数据的简单、高效保护。权重数据在存储器中以乱序存储,并设置用于指示权重数据的乘法操作执行顺序的顺序信息。当进行神经网络的前向计算时,通过顺序信息来确定权重数据与输入数据的对应关系并进行乘累加运算。权重数据在存储器中以乱序存储,即使他人通过非法手段盗取权重数据,由于无法得知权重数据的正确排列顺序,其也无法使用该权重数据,从而实现了对权重数据的保护。
22.并且,本发明的数据处理方法仅调整了权重数据的排列顺序,权重数据依旧可以被读入并直接用于乘累加运算,不需要额外的软硬件结构,也不需要进行复杂、耗时的加解密步骤,从而实现了对权重数据的简单、高效保护,能够满足神经网络前向计算的实时性要求。
23.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
24.为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
25.图1示出了根据本发明一个实施例的指令处理装置100的示意图;
26.图2示出了根据本发明一个实施例的寄存器架构200的示意图;
27.图3示出了根据本发明一个实施例的指令处理装置300的示意图;
28.图4示出了根据本发明一个实施例的乘累加指令的处理过程的示意图;
29.图5示出了根据本发明另一个实施例的乘累加指令的处理过程的示意图;
30.图6示出了根据本发明一个实施例的指令处理方法600的流程图;
31.图7示出了根据本发明一个实施例的数据处理方法700的流程图;
32.图8示出了根据本发明一个实施例的神经网络的示意图;
33.图9示出了根据本发明一个实施例的数据处理过程的示意图;
34.图10示出了根据本发明一个实施例的数据处理方法1000的流程图;
35.图11示出了根据本发明一个实施例的数据处理方法1100的流程图;
36.图12示出了根据本发明一个实施例的处理器1200的示意图;
37.图13示出了根据本发明一个实施例的计算设备1300的示意图;
38.图14示出了根据本发明一个实施例的片上系统(soc)1400的示意图。
具体实施方式
39.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
40.图1是根据本发明一个实施例的指令处理装置100的示意图。指令处理装置100具有执行单元140,该执行单元包括可操作用于执行指令(包括根据本发明的乘累加指令)的电路。在一些实施例中,指令处理装置100可以是单核处理器、多核处理器的处理器核、或者电子系统中的处理元件。应当指出,此处的处理器包括但不限于中央处理器(central processing unit,cpu)、数字信号处理器(digital signal processor,dsp)、图形处理器(graphics processing unit,gpu)、神经网络处理器(neural-network processing unit,npu)等。
41.此外,需要说明的是,图1中的各个模块的划分是功能性的,并且为了物理实现可以进行重新布置和组合而没有脱离本发明的保护范围。
42.解码器130接收高级机器指令或宏指令形式的传入指令,并且解码这些指令以生成低级微操作、微代码进入点、微指令或其他低级指令或控制信号。低级指令或控制信号可以通过低级(例如,电路级或硬件级)操作来实现高级指令的操作。解码器130可以通过不同的方式来实现,包括但不限于微代码、查找表、硬件实现、可编程逻辑阵列(pla)等。本发明不受限于实现解码器130的方式,任何可以实现解码器130的方式均在本发明的保护范围之内。
43.解码器130可以接收来自高速缓存110、存储器120或其他源的传入指令。经解码的指令包括一个或多个微操作、微代码进入点、微指令、其他指令或其他控制信号,他们反应了所接收的指令或这从所接收的指令导出。这些经解码的指令被发送至执行单元140,并由执行单元140执行。执行单元140在执行这些指令时,从寄存器组150、高速缓存110和/或存储器120接收数据输入并向他们生成数据输出。
44.在一些实施例中,寄存器组150包括架构寄存器,架构寄存器也被称为寄存器。除非另外予以规定或清楚明显可知,在本文中,短语架构寄存器、寄存器组以及寄存器用于表示对软件和/或编程器可见(例如,软件可见的)和/或由宏指令指定来标识操作数的寄存器。这些寄存器不同于给定微架构中的其他非架构式寄存器(例如,临时寄存器、重排序缓冲器等)。
45.为了避免混淆描述,已示出和描述了相对简单的指令处理装置100。应当理解,其他实施例可具有超过一个执行单元。例如,指令处理装置100可包括多个不同类型的执行单元,例如算术单元、算术逻辑单元(alu)、整数单元、浮点单元等。指令处理装置的其他实施例可具有多个核、逻辑处理器或执行引擎。下文将参考图12-14提供指令处理装置100的多个实施例。
46.根据一种实施例,寄存器组150包括向量寄存器组152。向量寄存器组152包括多个向量寄存器152a,这些向量寄存器152a可以存储乘累加指令的操作数。每个向量寄存器152a的位宽可以是128位、256位、512位或者其他数值,本发明不限制向量寄存器152a的位宽。寄存器组150还可以包括通用寄存器组154。通用寄存器组154包括多个通用寄存器
154a,这些通用寄存器154a也可以存储乘累加指令的操作数。在本发明的实施例中,乘累加指令可以用作simd(single instruction multiple data)指令而对向量进行操作。
47.图2示出了根据本发明一个实施例的寄存器架构200的示意图。如图2所示,寄存器架构200中定义了16个128位的向量寄存器vr0~vr15,以及针对这16个向量寄存器进行的一系列数据处理simd指令。根据具体指令的定义,每个向量寄存器可以看作是由若干个8-bit、16-bit、32-bit甚至是64-bit的元素所组成的数组。另外,在寄存器架构200中还定义了32个32位的通用寄存器gr0~gr31。通用寄存器gr0~gr31可以存储simd指令处理期间的一些控制状态值(例如下文中的“顺序信息”),也可以存储一般指令处理期间的操作数。
48.根据一种实施例,图1中描述的向量寄存器组152可以采用图2所示的向量寄存器vr0~vr15中的一个或多个,图1中描述的通用寄存器组154可以采用图2所示的通用寄存器gr0~gr31中的一个或多个。
49.本领域技术人员可以理解,图2所示的寄存器架构200仅为一个示例,在其他的替代实施例中,寄存器架构可以使用不同位宽、不同类型、不同数量的寄存器组或寄存器,本发明对指令处理装置100的寄存器架构不做限制。
50.图3示出了根据本发明一个实施例的指令处理装置300的示意图。图3所示的指令处理装置300为图1所示的指令处理装置100的进一步扩展,并且为了便于描述而略去一些部件。因此,使用和图1中相同的标记来指示相同和/或相似的部件。
51.指令处理装置300适于执行乘累加指令。根据本发明的一种实施例,乘累加指令指示第一寄存器a0作为第一操作数、指定第二寄存器a1作为第二操作数、指定第三寄存器a2作为第三操作数。
52.第一寄存器a0和第二寄存器a1中分别存储有要用于进行乘法运算的多个第一源数据和多个第二源数据。除非特别说明,下文中,将第一寄存器a0中的多个第一源数据所组成的数组记为src0,将第一寄存器a0中的第i个第一源数据记为src0[i-1];将第二寄存器a1中的多个第二源数据所组成的数组记为src1,将第二寄存器a1中的第i个第二源数据记为src1[i-1]。
[0053]
对于第一寄存器a0中的每个第一源数据,在第二寄存器a1中有对应的第二源数据与之相乘。但是,第一源数据在第一寄存器a0中的存储顺序与第二源数据在第二寄存器a1中的存储顺序不同,与第一寄存器a0中的某个第一源数据对应的不一定是第二寄存器a1中相同位置的第二源数据(例如,第一寄存器a0中的第3个第一源数据src0[2]对应的不是第二寄存器a1中的第3个第二源数据src1[2],而是对应于第1个第二源数据src1[0])。
[0054]
应当指出,可以将第一源数据src0的排列顺序、第二源数据src1的排列顺序中的任意一种作为正确的排列顺序,相应地,另一个顺序为乱序。本领域技术人员可以理解,正确顺序与乱序是相对而言的,当指定某种顺序为正确顺序后,其他与该正确顺序不同的顺序均为乱序。例如,可以将第一源数据src0在第一寄存器a0中的排列顺序作为正确顺序,相应地,第二源数据src1在第二寄存器a1中以乱序存储。
[0055]
第三寄存器a2中存储有顺序信息seq,顺序信息适于指示第二源数据src1的乘法操作执行顺序,以便确定第一源数据src0与第二源数据src1的乘法对应关系。根据一种实施例,顺序信息seq包括分别与多个第一源数据对应的多个顺序标识,每个顺序标识适于指示相应第一源数据所对应的第二源数据在第二寄存器中的存储顺序,即,第i个顺序标识
seq[i-1]适于指示第i个第一源数据src0[i-1]所对应的第二源数据在第二寄存器a1中的存储顺序。
[0056]
根据一种实施例,乘累加指令还包括指定了第四寄存器a3的第四操作数。第四寄存器a3适于存储乘累加结果result。
[0057]
根据一种实施例,乘累加指令可以作为simd指令的一种,即作用于向量数据上,此时,第一、第二和第三寄存器均为向量寄存器。在另一种实施例中,乘累加指令也可以是作用于标量数据的常规指令,相应地,第一、第二和第三寄存器也可以是通用寄存器。本发明不受限于操作数的类型,所有可以执行乘累加操作的数据均在本发明的保护范围之内。下文以向量寄存器为例来对乘累加指令进行描述,本领域技术人员可以理解,后续描述的各个方面同样可以应用于其他类型的数据。
[0058]
如图3所示,解码器130适于对乘累加指令进行解码,以确定向量寄存器组152中与a0对应的第一寄存器、与a1对应的第二寄存器、与a2对应的第三寄存器。根据一种实施例,解码器130还确定与a3相对应的第四寄存器。
[0059]
执行单元140分别与第一寄存器a0、第二寄存器a1、第三寄存器a2和解码器130耦接,适于执行解码后的乘累加指令。
[0060]
具体地,执行单元140从第一寄存器a0中获取多个第一源数据src0[0]、src0[1]、src0[2]、

,从第二寄存器a1中获取多个第二源数据src1[0]、src1[1]、src1[2]、

,从第三寄存器a2中获取顺序信息seq。根据顺序信息seq来确定第二源数据src1的乘法操作执行顺序,从而确定第一源数据与第二源数据的乘法对应关系。将多个第一源数据src0[0]、src0[1]、src0[2]、

分别与顺序信息seq所指示的对应第二源数据相乘以得到多个乘法结果,以及将多个乘法结果相加以得到乘累加结果。
[0061]
例如,如图4所示,第一寄存器a0中存储有4个第一源数据src0[0]~src0[3],第二寄存器a1中存储有4个第二源数据src1[0]~src1[3]。第一寄存器a0、第二寄存器a1例如可以是128位的向量寄存器,第一源数据、第二源数据例如可以是32位的浮点数。
[0062]
第三寄存器a2中存储有顺序信息seq,顺序信息seq包括4个顺序标识seq[0]~seq[3]。
[0063]
顺序标识seq[0]~seq[3]分别用于指示第一源数据src0[0]~src0[3]所对应的第二源数据在第二寄存器a1中的存储顺序。例如,seq[0]=2,表示第一源数据src0[0]对应于第二源数据src1[2];seq[1]=1,表示第一源数据src0[1]对应于第二源数据src1[1];seq[2]=3,表示第一源数据src0[2]对应于第二源数据src1[3];seq[3]=0,表示第一源数据src0[3]对应于第二源数据src1[0]。
[0064]
根据顺序信息seq所指示的乘法操作执行顺序,确定每个第一源数据所对应的第二源数据,将第一源数据与相应的第二源数据相乘,得到多个乘法结果。即,将src0[0]与src1[2]相乘,将src0[1]与src1[1]相乘,将src0[2]与src1[3]相乘,将src0[3]与src1[0]相乘,得到4个乘法结果m0~m3,然后将4个乘法结果相加,得到乘累加结果result,将乘累加结果result存储至第四寄存器a3。
[0065]
根据一种实施例,第四寄存器a3中存储有累加数据src3。乘累加指令还包括选择标识acc。选择标识acc是一个立即数,解码器130在对乘累加指令进行解码时,还确定选择标识acc的值,并将acc的值发送至执行单元140。执行单元140根据选择标识acc的值来确定
如何进行加法操作。
[0066]
例如,如果不存在选择标识acc或者选择标识acc的值为0,则执行单元140不使用累加数据src3,而是直接将乘累加结果result存储至第四寄存器a3中以覆盖累加数据src3。如果存在选择标识acc或选择标识acc的值为1,则执行单元140使用累加数据src3,将乘累加结果result与累加数据src3相加以得到加法结果,并将该加法结果存储至第四寄存器a3中以替换累加数据src3。
[0067]
根据一种实施例,第一寄存器a0中的多个第一源数据被划分为多个数据组,执行单元140适于将每个数据组内的乘法结果相加,以得到多个乘累加结果。
[0068]
例如,如图5所示,第一寄存器a0中存储有16个第一源数据a0~a15,这16个第一源数据被分为四个数据组,每个数据组包括四个第一源数据,即,第一数据组包括第一源数据a0~a3,第二数据组包括第一源数据a4~a7,第三数据组包括第一源数据a8~a11,第四数据组包括第一源数据a12~a15。为了便于示出第一源数据的分组情况,图5中第二数据组、第四数据组以灰色背景展示。
[0069]
第二寄存器a1中存储有16个第二源数据b0~b15,第二源数据b0~b15的排列顺序与第一源数据a0~a15的排列顺序不同,与第一源数据ai(a=0,1,

,15)对应相乘的第二源数据不一定是bi。
[0070]
第三寄存器a2中存储有顺序信息,顺序信息可以确定第二源数据b0~b15的乘法操作执行顺序,即确定第一源数据a0~a15分别对应的第二源数据。如图5所示,顺序信息包括16个顺序标识,这16个顺序标识分别用于指示第一源数据a0~a15所对应的第二源数据在第二寄存器a1中的存储顺序。按照第三寄存器a2中的顺序信息的指示,第一源数据a0~a15分别对应于第二源数据b0、b14、b2、b13、b1、b5、b9、b7、b8、b4、b10、b3、b12、b11、b6、b15。
[0071]
将每个第一源数据分别与对应的第二源数据相乘(例如,将a0与b0相乘,将a1与b14相乘,将a2与b2相乘,等),得到16个乘法结果m0~m15。
[0072]
随后,将每个数据组内的乘法结果相加,每个数据组有一个乘累加结果,共得到四个乘累加结果。例如,将第一数据组内的四个乘法结果m0~m3相加,得到第一个乘累加结果c0;将第二数据组内的四个乘法结果m4~m7相加,得到第二个乘累加结果c1;将第三数据组内的四个乘法结果m8~m11相加,得到第三个乘累加结果c2;将第四数据组内的四个乘法结果m12~m15相加,得到第四个乘累加结果c3。将四个乘累加结果c0~c3存储至第四寄存器a3。
[0073]
根据一种实施例,乘累加结果的长度为多个第一源数据的长度之和。例如,如图4所示,第一寄存器a0例如可以是128位的向量寄存器,其中存储了4个32位的第一源数据,乘累加结果为这4个第一源数据的长度之和,即乘累加结果result的长度为128位。
[0074]
在图5所示的实施例中,第一寄存器a0、第二寄存器a1、第四寄存器a3例如均为128位的向量寄存器,第一源数据a0~a15、第二源数据b0~b15例如均为8位的无符号整型数据。第一源数据a0~a15被分为四个数据组,每个数据组包括4个第一源数据。每个数据组的乘累加结果为该数据组的所有第一源数据的长度之和,即每个数据组的乘累加结果的长度为4*8(数据组所包括的第一源数据的数量*第一源数据的长度)=32位。
[0075]
本发明的指令处理装置(例如前述指令处理装置100、300)通过乘累加指令来对第一源数据和第二源数据进行累加运算,即,将第一源数据、第二源数据和顺序信息分别读入
第一、第二、第三寄存器,然后解码器对乘累加指令进行解码,执行单元执行解码后的乘累加指令,根据顺序信息来确定第二源数据的乘法操作执行顺序,使第二源数据与第一源数据对应,将各第一源数据分别与对应的第二源数据相乘以得到多个乘法结果,然后将多个乘法结果相加以得到乘累加结果。
[0076]
本发明的指令处理方案通过乘累加指令实现了对第二源数据的保护。第二源数据在存储器中以乱序存储,并设置用于指示第二源数据的乘法操作执行顺序的顺序信息。当需要对第二源数据进行乘累加运算时,可通过顺序信息来确定第二源数据的乘法操作执行顺序,即确定第二源数据与第一源数据的乘法对应关系。第二源数据在存储器中以乱序存储,即使他人通过非法手段盗取第二源数据,由于无法得知第二源数据的正确顺序,其也无法使用第二源数据,从而实现了对第二源数据的保护。
[0077]
并且,本发明的指令处理方案仅调整了第二源数据的排列顺序,第二源数据依旧可以被指令处理装置读入,并通过乘累加指令直接用于计算,不需要额外的软硬件结构,也不需要进行复杂、耗时的加解密步骤,从而实现了对第二源数据的简单、高效的保护。
[0078]
根据一种实施例,第一源数据为神经网络中的处理节点的输入数据,第二源数据为处理节点的权重数据。权重数据在存储器(例如前述图1中的存储器120)中以乱序存储,并设置用于指示权重数据的乘法操作执行顺序(即正确排列顺序)的顺序信息。当进行神经网络的前向计算时,通过顺序信息来确定权重数据与输入数据的对应关系并进行乘累加运算。权重数据在存储器中以乱序存储,即使他人通过非法手段盗取权重数据,由于无法得知权重数据的正确排列顺序,其也无法使用该权重数据,从而实现了对权重数据的保护。
[0079]
并且,本发明的数据处理方法仅调整了权重数据的排列顺序,权重数据依旧可以被读入并直接用于乘累加运算,不需要额外的软硬件结构,也不需要进行复杂、耗时的加解密步骤,从而实现了对权重数据的简单、高效保护,能够满足神经网络前向计算的实时性要求。
[0080]
图6示出了根据本发明一个实施例的指令处理方法600的流程图。图6所示的指令处理方法适于在图1、图3、图12-图14描述的指令处理装置、处理器核心、计算设备和片上系统等中执行,并适于执行上面描述的乘累加指令。
[0081]
如图6所示,方法600始于步骤s610。
[0082]
在步骤s610中,接收乘累加指令并进行解码。
[0083]
参考上述图3的相关描述,乘累加指令指示第一寄存器a0作为第一操作数、指定第二寄存器a1作为第二操作数、指定第三寄存器a2作为第三操作数。
[0084]
第一寄存器a0和第二寄存器a1中分别存储有要用于进行乘法运算的多个第一源数据src0和多个第二源数据src1。
[0085]
根据一种实施例,第一寄存器a0中的第一源数据被划分为多个数据组。例如,如前述图5所示,第一源数据a0~a15被划分为四个数据组,每个数据组包括四个第一源数据。
[0086]
第二寄存器a1中的多个第二源数据的排列顺序与第一寄存器a0中的多个第一源数据的排列顺序不同,与第一寄存器a0中的某个第一源数据对应的不一定是第二寄存器a1中相同位置的第二源数据(例如,第一寄存器a0中的第3个第一源数据src0[2]对应的不是第二寄存器a1中的第3个第二源数据src1[2],而是对应于第1个第二源数据src1[0])。例如,可以将第一寄存器a0中的多个第一源数据的排列顺序为正确顺序,相应地,多个第二源
数据在第二寄存器中以乱序存储。
[0087]
根据一种实施例,第一源数据可以是神经网络前向计算过程中的处理节点的输入数据,第二源数据可以是处理节点的权重数据。
[0088]
第三寄存器a2中存储有顺序信息seq,顺序信息用于指示第二源数据的乘法操作执行顺序,以便确定第一源数据与第二源数据的乘法对应关系。根据一种实施例,顺序信息包括分别与多个第一源数据对应的多个顺序标识,每个顺序标识适于指示相应第一源数据所对应的第二源数据在第二寄存器中的存储顺序,例如,顺序标识seq[i-1]适于指示第一源数据src0[i-1]所对应的第二源数据在第二寄存器a1中的存储顺序。
[0089]
根据一种实施例,乘累加指令还指示第四寄存器a3作为第四操作数。第四寄存器a3适于存储乘累加结果。
[0090]
可选地,第四寄存器a3中存储有累加数据src3,乘累加指令还包括选择标识acc。选择标识acc是一个立即数,用于指示如何是否对累加数据src3进行加法操作。相应地,在步骤s610对乘累加指令进行解码时,还确定选择标识acc的值。
[0091]
随后,在步骤s620中,从第一寄存器中获取多个第一源数据,从第二寄存器中获取多个第二源数据,从第三寄存器中获取用于指示第二源数据的乘法操作执行顺序的顺序信息。
[0092]
例如,从第一寄存器a0中获取多个第一源数据src0[0]、src0[1]、src0[2]、

,从第二寄存器a1中获取多个第二源数据src1[0]、src1[1]、src1[2]、

,从第三寄存器a2中获取用于指示第二源数据的乘法操作执行顺序的顺序信息seq。
[0093]
随后,在步骤s630中,将多个第一源数据分别与顺序信息所指示的对应第二源数据相乘以得到多个乘法结果。
[0094]
顺序信息seq包括多个顺序标识,每个顺序标识适于指示相应第一源数据所对应的第二源数据在第二寄存器中的存储顺序,例如,顺序标识seq[i-1]适于指示第一源数据src0[i-1]所对应的第二源数据在第二寄存器a1中的存储顺序。根据顺序信息,即可将确定第二源数据的乘法操作执行顺序,即确定每个第一源数据所对应的第二源数据。分别将各个第一源数据与相应的第二源数据相乘,得到多个乘法结果。
[0095]
随后,在步骤s640中,将多个乘法结果相加以得到乘累加结果。
[0096]
根据一种实施例,在得到乘累加结果result后,将乘累加结果存储至第四寄存器a3。
[0097]
根据一种实施例,第四寄存器a3中存储有累加数据src3。如果乘累加指令中不存在选择标识acc或者选择标识acc的值为0,则不使用累加数据src3,而是直接将乘累加结果result存储至第四寄存器a3中以覆盖累加数据src3。如果存在选择标识acc或选择标识acc的值为1,则使用累加数据src3,将乘累加结果result与累加数据src3相加以得到加法结果,并将该加法结果存储至第四寄存器a3中以替换累加数据src3。
[0098]
根据一种实施例,参考前述图5,第一源数据被划分为多个数据组,相应地,在步骤s640中,分别将每个数据组内的乘法结果相加,以得到多个乘累加结果(每个数据组对应于一个乘法结果)。
[0099]
根据一种实施例,乘累加结果的长度为多个第一源数据的长度之和。例如,如图4所示,第一寄存器a0例如可以是128位的向量寄存器,其中存储了4个32位的第一源数据,乘
累加结果为这4个第一源数据的长度之和,即乘累加结果result的长度为128位。
[0100]
在图5所示的实施例中,第一寄存器a0、第二寄存器a1、第四寄存器a3例如均为128位的向量寄存器,第一源数据a0~a15、第二源数据b0~b15例如均为8位的无符号整型数据。第一源数据a0~a15被分为四个数据组,每个数据组包括4个第一源数据。每个数据组的乘累加结果为该数据组的所有第一源数据的长度之和,即每个数据组的乘累加结果的长度为4*8(数据组所包括的第一源数据的数量*第一源数据的长度)=32位。
[0101]
图7示出了根据本发明一个实施例的数据处理方法700的流程图。图6所示的数据处理方法适于在图1、图3、图12-图14描述的指令处理装置、处理器核心、计算设备和片上系统等中执行,适于根据上述指令处理方法600来进行神经网络的前向计算,对神经网络的权重数据进行简单、高效的保护。
[0102]
神经网络包括多个处理层,每个处理层包括至少一个处理节点。某一处理层的处理节点适于对前一层的节点的输出数据进行加权求和,以生成其自身的输出数据。
[0103]
例如,图8示出了一个相对简单的神经网络结构,在该神经网络中,节点4的输出数据y4为节点0~3的输出数据x0~x3的加权求和结果与节点4的偏置b4之和,即y4=x0*w40 x1*w41 x2*w42 x3*w43 b4;节点8的输出数据y8为节点4~7的输出数据y4~y7的加权求和结果与节点8的偏置b8之和,即y8=y4*w84 y5*w85 y6*w86 y7*w87 b8。
[0104]
目前,神经网络的权重数据通常按照各处理节点的排列顺序进行存储,以图8中的神经网络为例,处理节点4~9的权重数据(共24个)的存储顺序如下:w40、w41、w42、w43(处理节点4的权重数据),w50、w51、w52、w53(处理节点5的权重数据),w60、w61、w62、w63(处理节点6的权重数据),w70、w71、w72、w73(处理节点7的权重数据),w84、w85、w86、w87(处理节点8的权重数据),w94、w95、w96、w97(处理节点9的权重数据)。按照这种存储顺序,如果神经网络模型的网络结构文件和权重数据文件被他人非法盗取,他人即可根据这两个文件来得出神经网络模型,造成神经网络模型的外泄。
[0105]
为了实现对神经网络权重数据的简单、高效保护,在本发明的实施例中,神经网络的权重数据按照不同于各处理节点排列顺序的顺序(即乱序)进行存储,并设置用于指示权重数据的乘法操作执行顺序(即正确排列顺序)的顺序信息,权重数据和顺序信息存储在不同的文件中。这样,即使他人非法盗取权重数据,由于无法得知权重数据的正确排列顺序,其也无法使用该权重数据,从而实现了对权重数据以及神经网络模型的保护。
[0106]
例如,图8的神经网络的权重数据可以按照以下乱序存储至文件中:
[0107]
w40、w42、w43、w41,w50、w52、w53、w51,w60、w62、w63、w61,w70、w72、w73、w71,w84、w86、w87、w85,w94、w96、w97、w95。
[0108]
相应的顺序信息例如可以是0、3、1、2,用于指示处理节点4~9的权重数据的乘法操作执行顺序,即正确排列顺序。以处理节点4为例,按照顺序信息0、3、1、2,节点4的权重数据的正确排列顺序为:权重文件中的第1个权重数据w40、第4个权重数据w41、第2个权重数据w42、第3个权重数据w43。(因为目前程序中通常从0开始计数,而不是从1开始,因此程序中的顺序信息0、3、1、2分别代表第1个、第4个、第2个、第3个数据)。
[0109]
在上述实施例中,处理节点4~9的权重数据采用相同的顺序存储,并共用一个顺序信息0、3、1、2。根据一种实施例,为了进一步提高权重数据的保护强度,不同处理节点的权重数据可以采用不同的顺序存储,相应地,不同处理节点对应于不同的顺序信息。这样可
以使得权重数据的存储顺序更加无序,更加难以恢复出正确顺序。
[0110]
在一个实施例中,位于同一个处理层的处理节点的权重数据按照相同的顺序存储,位于不同处理层的处理节点的权重顺序按照不同的顺序存储;相应地,位于同一个处理层的处理节点采用相同的顺序信息,位于不同处理层的处理节点采用不同的顺序信息。例如,参考图8,节点4~7的权重数据按照顺序order1存储,对应的顺序信息为seq1;节点8、9的权重数据按照顺序order2存储,对应的顺序信息为seq2。
[0111]
在另一个实施例中,将神经网络中的处理节点划分为多组,每组处理节点的权重按照相同的顺序存储,采用相同的顺序信息;不同组的处理节点的权重按照不同的顺序存储,采用不同的顺序信息。例如,参考图8,处理节点4~9可以被分为3组,每组包括2个处理节点。节点4、5的权重数据按照顺序order1存储,对应的顺序信息为seq1;节点6、7的权重数据按照顺序order2存储,对应的顺序信息为seq2;节点8、9的权重数据按照顺序order3存储,对应的顺序信息为seq3。
[0112]
在另一个实施例中,甚至可以将神经网络中每个节点的权重数据按照不同的顺序存储,采用不同的顺序信息。例如,参考图8,处理节点4~9的权重数据分别按照不同的顺序存储,相应地,也采用不同的顺序信息。
[0113]
本领域技术人员可以理解,神经网络中权重数据的存储顺序的数量越多,对应的顺序信息的数量也越多,权重数据的保护强度越大。本领域技术人员可以根据实际需要来设置权重数据的存储顺序以及对应的顺序信息,本发明对权重数据的存储顺序和顺序信息的数量、粒度均不作限制。
[0114]
如图7所示,方法700始于步骤s710。
[0115]
在步骤s710中,将处理节点的多个输入数据、多个权重数据和顺序信息分别存储至第一寄存器、第二寄存器和第三寄存器,其中,顺序信息适于指示多个权重数据的乘法操作执行顺序。
[0116]
随后,在步骤s720中,采用上述指令处理方法600来计算多个输入数据与多个权重数据的乘累加结果,以得到处理节点的输出数据。
[0117]
仍以图8所示的神经网络结构为例,其权重数据按照以下乱序存储:
[0118]
w40、w42、w43、w41,w50、w52、w53、w51,w60、w62、w63、w61,w70、w72、w73、w71,w84、w86、w87、w85,w94、w96、w97、w95。
[0119]
对应的各处理节点的顺序信息为0、3、1、2。
[0120]
在步骤s710中,获取处理节点4的输入数据x0~x3,权重数据w40、w42、w43、w41和顺序信息,将三者分别存储至第一~第三寄存器a0~a2,如图9所示。
[0121]
随后,在步骤s720中,采用上述指令处理方法600,通过乘累加指令来计算得出输入数据x0~x3与权重数据w40、w42、w43、w41的乘累加结果result。输入数据x0~x3相当于方法600中的第一源数据,权重数据w40、w42、w43、w41相当于方法600中的第二源数据。
[0122]
乘累加指令中指定了第四寄存器a3,且选择标识acc为1,第四寄存器a3中存储有处理节点4的偏置b4。在得出输入数据与权重数据的乘累加结果result之后,将乘累加结果result与第四寄存器a3中的b4相加,得到加法结果y4,并将y4存储至第四寄存器a3中。y4即为处理节点4的输出数据。
[0123]
在上文所述的实施例中,指令处理装置通过乘累加指令来实现对第二源数据的保
护。在另一些实施例中,也可以不采用乘累加指令,而采用例如命令行、程序语句等方式来实现对第二源数据的保护。本领域技术人员可以理解,命令行、程序语句等其他方式与乘累加指令方式对第二源数据的保护原理是相同的,即均是通过在存储器中乱序存储第二源数据,当第二源数据进行乘累加运算时,通过顺序信息来确定第二源数据的乘法操作执行顺序来实现对第二源数据的简单、高效保护。
[0124]
图10示出了根据本发明一个实施例的数据处理方法1000的示意图。数据数理方法1000适于在图1、图3、图12-图14描述的指令处理装置、处理器核心、计算设备和片上系统等中执行,可以实现对第二源数据的简单、高效保护,并且可以通过诸如乘累加指令、命令行、程序语句等多种方式实现,而不局限于乘累加指令。
[0125]
如图10所示,方法1000始于步骤s1010。
[0126]
在步骤s1010中,获取多个第一源数据、多个第二源数据和用于指示上述多个第二源数据的乘法操作执行顺序的顺序信息。
[0127]
随后,在步骤s1020中,根据顺序信息来确定第一源数据与第二源数据的对应关系。
[0128]
随后,在步骤s1030中,将多个第一源数据分别与对应的第二源数据相乘以得到多个乘法结果,将多个乘法结果相加以得到乘累加结果。
[0129]
具体地,可以采用多个乘法器来实现多个第一源数据与对应的第二源数据的乘法运算,得到多个乘法结果。随后,采用加法器来将各乘法器的乘法结果相加,得到乘累加结果。
[0130]
上述数据处理方法1000可以应用于神经网络的前向计算过程中,以实现对神经网络权重数据的保护。即,本发明还提供一种数据处理方法1100,方法1100适于进行神经网络的前向计算,神经网络包括多个处理节点,神经网络的权重数据按照不同于各处理节点排列顺序的顺序进行存储。
[0131]
图11示出了根据本发明一个实施例的数据处理方法1100的示意图。如图11所示,方法1100始于步骤s1110。
[0132]
在步骤s1110中,获取处理节点的多个输入数据、多个权重数据和顺序信息,顺序信息适于指示上述多个权重数据的乘法操作执行顺序。
[0133]
随后,在步骤s1120中,根据顺序信息来确定输入数据与权重数据的对应关系。
[0134]
随后,在步骤s1130中,根据各输入数据所对应的权重数据,对多个输入数据进行加权求和,以确定处理节点的输出数据。
[0135]
具体地,可以采用多个乘法器来将所述多个输入数据与对应的权重数据相乘,得到多个乘法结果;采用加法器来将所述多个乘法结果相加,得到乘累加结果,根据所述乘累加结果来确定所述处理节点的输出数据。
[0136]
如上所述,根据本发明的指令处理装置可以实现为处理器核,且指令处理方法可以在处理器核中执行。处理器核可以不同的方式在不同的处理器中实现。例如,处理器核可以实现为用于通用计算的通用有序核、用于通用计算的高性能通用无序核、以及用于图形和/或科学(吞吐量)计算的专用核。而处理器可以实现为cpu(中央处理器)和/或协处理器,其中cpu可以包括一个或多个通用有序核和/或一个或多个通用无序核,而协处理器可以包括一个或多个专用核。这样的不同处理器的组合可以导致不同的计算机系统架构。在一种
计算机系统架构中,协处理器在与cpu分开的芯片上。在另一种计算机系统架构中,协处理器在与cpu相同的封装中但处于分开的管芯上。在还有一种计算机系统架构中,协处理器与cpu在相同管芯上(在该情况下,这样的协处理器有时被称为诸如集成图形和/或科学(吞吐量)逻辑等专用逻辑,或被称为专用核)。在还有一种称为片上系统的计算机系统架构中,可以将所描述的cpu(有时被称为应用核或应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上。
[0137]
图12示出了根据本发明一个实施例的处理器1200的示意图。如图12中的实线框所示,根据一种实施方式,处理器1200包括单个核1210-1、系统代理单元1220、总线控制器单元1230。如图12中的虚线框所示,根据本发明的另一个实施方式,处理器1200还可以包括多个核1210-n、处于系统代理单元1220中的集成存储器控制器单元1222以及专用逻辑1240。
[0138]
根据一种实施方式,处理器1200可以实现为中央处理器(cpu),其中专用逻辑1240是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),且核1210-1~1210-n是一个或多个通用核(例如,通用有序核、通用无序核、这两者的组合)。根据另一种实施方式,处理器1200可以实现为协处理器,其中核1210-1~1210-n是用于图形和/或科学(吞吐量)的多个专用核。根据还有一种实施方式,处理器1200可以实现为协处理器,其中核1210-1~1210-n是多个通用有序核。因此,处理器1200可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、gpgpu(通用图形处理单元)、高吞吐量的集成众核(mic)协处理器(包括30个或更多核)、或嵌入式处理器等。该处理器可以被实现在一个或多个芯片上。处理器1200可以是一个或多个衬底的一部分,和/或可以使用诸如例如bicmos、cmos或nmos等的多个加工技术中的任何一个技术将其实现在一个或多个衬底上。
[0139]
存储器层次结构包括在各核内的一个或多个级别的高速缓存、一个或多个共享高速缓存单元1250、以及耦接到集成存储器控制器单元1222的外部存储器(未示出)。该共享高速缓存单元1250可以包括一个或多个中间级高速缓存,诸如二级(l2)、三级(l3)、四级(l4)或其他级别的高速缓存、末级高速缓存(llc)、和/或其组合。尽管在一个实施例中,基于环的互连单元1252将集成图形逻辑1240、共享高速缓存单元1250以及系统代理单元1220/集成存储器控制器单元1222互连,本发明不受限于此,并且可使用任何数量的公知技术来将这些单元互连。
[0140]
系统代理单元1220包括协调和操作核1210-1~1210-n的那些组件。系统代理单元1220可包括例如功率控制单元(pcu)和显示单元。pcu可以包括调整核1210-1~1210-n和集成图形逻辑1240的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
[0141]
核1210-1~1210-n可以具有上面参考图1描述的核架构,并且在架构指令集方面可以是同构的或异构的。即,这些核1210-1~1210-n中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
[0142]
图13示出了根据本发明一个实施例的计算设备1300的示意图。图13所示的计算机设备1300可以是膝上型设备、台式机、手持pc、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(dsp)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备。本发明
不受限于此,所有可以纳入本说明书中所公开的处理器和/或其它执行逻辑的系统都在本发明的保护范围之内。
[0143]
如图13所示,系统1300可以包括一个或多个处理器1310、1315。这些处理器耦接到控制器中枢1320。在一个实施例中,控制器中枢1320包括图形存储器控制器中枢(gmch)1390和输入/输出中枢(ioh)1350(其可以在分开的芯片上)。gmch 1390包括与存储器1340和协处理器1345相耦接的存储器控制器和图形控制器。ioh 1350将输入/输出(i/o)设备1360耦接到gmch1390。做为选择,存储器控制器和图形控制器集成在处理器中,这样存储器1340和协处理器1345就直接耦接到处理器1310,此时控制器中枢1320仅仅包括ioh 1350。
[0144]
附加处理器1315的任选性质用虚线表示在图13中。每一处理器1310、1315可包括本文中描述的处理核中的一个或多个,并且可以是前述处理器1200的某一版本。
[0145]
存储器1340可以是例如动态随机访问存储器(dram)、相变存储器(pcm)或这两者的组合。对于至少一个实施例,控制器中枢1320经由诸如前侧总线(fsb)之类的多分支总线(multi-drop bus)、诸如快速通道互连(qpi)之类的点对点接口、或者类似的连接1395与处理器1310、1315进行通信。
[0146]
在一个实施例中,协处理器1345是专用处理器,诸如例如高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、或嵌入式处理器等等。在一个实施例中,控制器中枢1320可以包括集成图形加速器。
[0147]
在一个实施例中,处理器1310执行控制一般类型的数据处理操作的指令。嵌入在这些指令中的可以是协处理器指令。处理器1310识别如具有应当由附连的协处理器1345执行的类型的这些协处理器指令。因此,处理器1310在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1345。协处理器1345接受并执行所接收的协处理器指令。
[0148]
图14示出了根据本发明的一个实施例的片上系统(system on chip,soc)1400的示意图。图14所示的片上系统包含了图12所示的处理器1200,因此与图12中相似的部件具有同样的附图标记。如图14所示,互连单元1420耦接到应用处理器1410、系统代理单元1220、总线控制器单元1230、集成存储器控制器单元1222、一个或多个协处理器530、静态随机存取存储器(sram)单元1440、直接存储器存取(dma)单元1450以及用于耦合至一个或多个外部显示器的显示单元1460。应用处理器1410包括一个或多个核1210-1~1210-n的集合以及共享高速缓存单元1250。协处理器1430包括集成图形逻辑、图像处理器、音频处理器和视频处理器。在一个实施例中,协处理器1430包括专用处理器,诸如例如网络或通信处理器、压缩引擎、gpgpu、高吞吐量mic处理器、或嵌入式处理器等等。
[0149]
另外,上面描述的片上系统可以包含在智能设备中,以便在智能设备中实现相应的功能,包括但不限于执行相关控制程序、进行数据分析、运算和处理、网络通信、控制智能设备中的外设等。
[0150]
这样的智能设备包括专门的智能设备,如移动终端和个人数字终端等,这些设备中包括根据本发明的一个或者多个片上系统来进行数据处理,或者对设备中的外设进行控制。
[0151]
这样的智能设备还包括为了实现特定功能而构造的专门设备,例如智能音箱、和智能显示设备等。这些设备中包括根据本发明的片上系统来对音箱和显示设备进行控制,
从而赋予音箱和显示设备额外的通信、感知和数据处理等功能。
[0152]
这样的智能设备还包括各种iot和aiot设备。这些设备中包括根据本发明的片上系统进行数据处理,例如进行ai运算、数据通信和传输等,从而实现了更加密集且更加智能的设备分布。
[0153]
这样的智能设备还可以在车辆中使用,例如可以实现为车载设备、或者可以嵌入到车辆中,从而为车辆的智能驾驶提供数据处理能力。
[0154]
这样的智能设备还可以用于家庭和娱乐领域,例如可以实现为智能音箱、智能空调、智能冰箱、智能显示设备等。这些设备包括根据本发明的片上系统来进行数据处理和外设控制,从而实现了家庭和娱乐设备的智能化。
[0155]
另外,这样的智能设备还可以用于工业领域,例如可以实现为工控设备、感测设备、iot设备,aiot设备和制动设备等。这些设备中包括根据本发明的片上系统来进行数据处理和外设控制,从而实现了工业设备的智能化。
[0156]
以上对智能设备的描述仅仅是示意性的,根据本发明的智能设备不受限于此,所有可以利用根据本发明的片上系统进行数据处理的智能设备都在本发明的保护范围之内。
[0157]
本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
[0158]
应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
[0159]
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
[0160]
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0161]
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的
范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0162]
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
[0163]
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
[0164]
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献