一种训练模型的方法及装置
技术领域
本申请涉及信息技术领域,尤其涉及一种训练模型的方法及装置。
背景技术
目前,服务提供商使用自己训练的模型为企业或个人等用户提供预测、风控、预警等服务的模式已经日渐成熟。在这种模式下,服务提供商所提供的服务质量的好坏很大程度上取决于其训练的模型是否准确。
众所周知,用于训练模型的样本越丰富、越多样化,训练得到的模型的准确度也会越高。但是在获取数据的时候,有时候会存在数据隐私问题。
基于现有技术,需要一种训练模型的方法,在保护用户隐私不泄露的情况下,提高服务提供商的模型的准确度。
发明内容
本说明书实施例提供一种训练模型的方法及装置,以解决如何在保护用户隐私不泄露的情况下,提高服务提供商的模型的准确度的问题。
为解决上述技术问题,本说明书实施例是这样实现的:
本说明书实施例提供的一种训练模型的方法,服务设备中具有可信区,所述方法包括:
所述服务设备接收用户设备发送的加密数据;
在所述可信区内,解密所述加密数据得到用户数据;
在所述可信区内,采用所述用户数据训练模型。
本说明书实施例提供的一种训练模型的方法,服务设备中具有可信区,所述方法包括:
用户设备对用户数据进行加密,得到加密数据;
将所述加密数据发送给服务设备,以使所述服务设备在所述可信区内,解密所述加密数据得到所述用户数据,并采用所述用户数据训练模型。
本说明书实施例提供的一种训练模型的装置,所述装置中具有可信区,所述装置包括:
接收模块,接收用户设备发送的加密数据;
解密模块,在所述可信区内,解密所述加密数据得到用户数据;
训练模块,在所述可信区内,采用所述用户数据训练模型。
本说明书实施例提供的一种训练模型的装置,服务设备中具有可信区,所述装置包括:
加密模块,对用户数据进行加密,得到加密数据;
发送模块,将所述加密数据发送给服务设备,以使所述服务设备在所述可信区内,解密所述加密数据得到所述用户数据,并采用所述用户数据训练模型。
本说明书实施例提供的一种服务设备,所述服务设备中具有可信区,所述服务设备包括一个或多个处理器及存储器,所述存储器存储有程序,并且被配置成由所述一个或多个处理器执行以下步骤:
接收用户设备发送的加密数据;
在所述可信区内,解密所述加密数据得到用户数据;
在所述可信区内,采用所述用户数据训练模型。
本说明书实施例提供的一种用户设备,服务设备中具有可信区,所述用户设备包括一个或多个处理器及存储器,所述存储器存储有程序,并且被配置成由所述一个或多个处理器执行以下步骤:
对用户数据进行加密,得到加密数据;
将所述加密数据发送给服务设备,以使所述服务设备在所述可信区内,解密所述加密数据得到所述用户数据,并采用所述用户数据训练模型。
由以上本说明书实施例提供的技术方案可见,在本说明书实施例中,在服务设备的可信区内对加密数据进行解密得到用户数据,以及在可信区内采用用户数据训练模型。如此一来,一方面,采用包含用户隐私的更为全面的用户数据训练模型,得到的模型准确度较高。另一方面,用户数据只暴露在可信区内,即便是服务设备的拥有者,也无法获取可信区内的用户数据,用户隐私也就不会泄露。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本说明书实施例提供的一种训练模型的方法流程图;
图2是本说明书实施例提供的一种训练系统架构图;
图3是本说明书实施例提供的另一种训练系统架构图;
图4是本说明书实施例提供的训练用于预测企业盈亏的模型的流程图;
图5是本说明书实施例提供的与图4对应的训练模型的示意图;
图6是本说明书实施例提供的训练用于评价用户信用能力的模型的流程图;
图7是本说明书实施例提供的与图6对应的训练模型的示意图;
图8是本说明书实施例提供的一种训练模型的装置示意图;
图9是本说明书实施例提供的另一种训练模型的装置示意图;
图10是本说明书实施例提供的用户设备示意图;
图11是本说明书实施例提供的服务设备示意图。
具体实施方式
如背景技术所述,现有技术中,服务提供商一般直接采用用户提供的数据作为样本对模型进行训练。显然,用户往往不会将涉及用户隐私的数据提供给服务提供商,这就导致用于训练模型的数据样本不够全面,进而导致服务提供商训练得到的模型准确性较低。
例如,假设服务提供商负责训练用于预测企业盈亏情况的模型,如果某个企业用户想要预测自己未来的盈亏情况,往往只会向服务提供商提供自己的销售数据,作为用于训练模型的样本。但服务提供商为了尽可能提升模型的准确度,往往还会要求该企业用户提供财务报表(财务报表能够精确的体现出企业的盈亏情况),以获取更为全面的用户数据作为样本。显然,财务报表对于很多企业来说都可能是隐私数据。
可见,在上述的服务模式中,如何在保护用户的隐私数据不泄露的情况下,提高服务提供商的模型的准确度,是一个亟待解决的问题。
本申请的核心思想是将服务设备中具有的可信区作为与外部隔离的执行环境,在所述可信区中对加密数据进行解密得到用户数据,以及在可信区内采用用户数据训练模型,使得整个训练模型的过程中,用户数据始终不会暴露给可信区之外,从而保护了用户隐私。其中,所述可信区可以具体位于服务设备的中央处理器(Central Processing Unit,CPU)内,也可以具体位于服务设备的其他组件内,例如图形处理器(Graphics ProcessingUnit,GPU)、内存等。为了描述的方便,在本说明书的一个或多个实施例中,以服务设备中的可信区具体位于服务设备的CPU中为例展开说明,但本领域技术人员应当理解,这并不构成对本申请所要求保护的技术方案的限制。
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1是本说明书实施例提供的训练模型的方法流程图,包括以下步骤:
S100:用户设备对用户数据进行加密,得到加密数据。
S102:用户设备将所述加密数据发送给服务设备。
在本说明书实施例中,用户设备是存储有训练模型所需的用户数据的设备,这些用户数据往往是隐私数据。例如,某个企业用户想要预测自己未来的盈亏情况,需要可以预测企业盈亏情况的模型的服务,那么该企业用户的服务器就可以是用户设备。用户设备中存储有用户数据,用户数据往往涉及用户的隐私。
而服务设备即为服务提供商的设备,是模型的拥有者,也是需要训练出模型的一方。服务设备训练模型需要使用用户设备提供的用户数据,使得通过训练得到的模型计算出的结果尽量贴近实际。
在本说明书实施例中,为了保护用户的隐私,用户设备可以对用户数据进行加密,加密后的用户数据即是所述加密数据。接着,用户设备可以将加密数据发送给服务设备,用于训练模型。
S104:服务设备接收用户设备发送的加密数据。
S106:在可信区内,解密所述加密数据得到用户数据。
S108:在可信区内,采用所述用户数据训练模型。
图2是本说明书实施例提供的训练系统架构图。如图2所示的架构,服务设备使用来自至少一个用户设备的加密数据训练模型。服务设备的CPU中具有可信区。所述的可信区可以是在CPU的存储区域中物理隔离出的区域,并且在所述可信区内仅能执行指定操作。例如,因特尔公司开发的可信区技术(Intel Software Guard Extensions),通常简称为“SGX”。当采用SGX技术时,如图2所示,用户设备在向服务设备发送加密数据的同时,还可以向服务设备发送可信区定义文件(.edl文件)和动态链接库文件(.dll文件或.so文件),服务设备中的加载器根据接收到的定义文件在CPU中定义可信区,并根据接收到的动态链接库文件,在定义的可信区内执行指定操作。当然,其他类似的可信区技术也可以应用于本方案,不再赘述。
在本说明书实施例中,上述的指定操作包括对加密数据进行解密的解密操作和部分(或全部)训练操作。如,根据用户数据和初始化的模型参数确定训练中间值属于一部分训练操作,调整模型参数也属于一部分训练操作。为了保证不泄露用户数据,在可信区中执行的部分训练操作具体可以是需要根据用户数据执行的训练操作,不需要根据用户数据执行的另一部分训练操作则可不在可信区内执行。除指定操作之外,诸如从可信区内提取用户数据,则无法在所述可信区内执行。通过所述可信区技术,可以做到在不泄露用户数据的前提下,以尽可能全面的用户数据作为样本训练模型。
当然,服务设备可以包括多个CPU。图3是本说明书实施例提供的另一种训练系统架构图。如图3所示,服务设备包括多个第一CPU和至少一个第二CPU,其中,各第一CPU中具有可信区。需要说明的是,图3所示的架构中同样包括存储器和加载器,只是在图3中未示出。在图3中,类似于图2,各用户设备分别向服务设备发送加密数据、可信区定义文件和动态链接库文件,每个第一CPU中的可信区都是由加载器定义的,每个第一CPU都从存储器中获取加密数据,在可信区中处理。
通常地,模型的预测效果是否贴近实际取决于模型的模型参数是否准确。在图3所示的架构下,服务设备训练模型实际上是根据数据样本,对初始化的模型参数进行迭代调整,直至模型参数足够准确。也即,图3所示的训练过程是一个迭代训练的过程。
在图3所示的架构下,服务设备接收多个用户设备发送的加密数据,将加密数据存储到存储器中。每个第一CPU可以仅获取并解密来自于一个用户设备的加密数据,也可以获取并解密来自于不止一个用户设备的加密数据,只要不同的第一CPU的可信区内所解密的加密数据来自于不同的用户设备即可,本申请对此不做具体限制。
继续参见图3,每个第一CPU在其可信区内对获取的加密数据进行解密得到用户数据,并根据用户数据和初始化的模型参数确定训练中间值。各第一CPU在确定出训练中间值后,将训练中间值输出给第二CPU,第二CPU根据接收到的各训练中间值,确定训练效果表征值。其中,训练中间值是每个第一CPU根据其所解密出的用户数据进行训练得到的结果值,不同的训练算法,计算训练中间值的方法也不同。例如,倘若采用线性回归算法,则训练中间值可以是第一CPU对一条用户数据的不同特征值求加权和得到的。为了描述的方便,下文以线性回归算法为例说明。
训练效果表征值是用于量化每一次迭代训练的效果的数值,是第二CPU根据各第一CPU输出的训练中间值确定的,是综合衡量各第一CPU训练效果的数值。具体而言,所述训练效果表征值可以是在一次迭代训练的过程中所得到的预测结果与实际结果之间的差异性表征值。
继续参见图3,第二CPU通过判断确定的训练效果表征值是否满足指定条件,来判断本次迭代中的模型参数是否准确(当前的模型是否符合预期)。其中,所述指定条件可以根据需要设定,例如,所述指定条件可以是所述训练效果表征值小于指定阈值。
若训练效果表征值满足指定条件,则训练流程结束,根据本次迭代中的模型参数生成模型。若训练效果表征值不满足指定条件,服务设备可以根据所述训练效果表征值调整所述模型参数,以使所述第二CPU和各第一CPU根据调整后的模型参数继续训练模型,直至训练的模型满足指定条件为止。
具体而言,服务设备可以通过第二CPU,根据训练效果表征值调整模型参数,并将调整后的模型参数发送给各第一CPU继续训练,以使所述第二CPU和各第一CPU根据调整后的模型参数继续训练模型;也可以通过第二CPU,将训练效果表征值发送给各第一CPU,以使每个第一CPU根据接收到的训练效果表征值调整模型参数,并使用调整后的模型参数继续训练模型(即开始下一次迭代)。
通过图1所示的方法,在服务设备的可信区内执行两项指定操作:1、对加密数据进行解密得到用户数据;2、部分训练操作。由于所述可信区内仅能执行指定操作,因此,可信区内解密的用户数据不能被输出到可信区的外部。也就是说,用户数据只暴露在可信区内,即便是服务设备的拥有者,也无法获取可信区内的用户数据,用户的隐私也就不会泄露。此外,由于整个训练模型的流程都在所述可信区内执行,训练模型的具体过程(即代码逻辑)也不会泄露或被修改。
另外,在本说明书的一个或多个实施例中,为了防止有人恶意操纵服务设备,使服务设备在所述可信区之外执行提取用户数据的操作,用户设备可以采用仅能在所述用户设备的CPU的可信区内执行的加密算法,对用户数据进行加密。
CPU的可信区实际上是在CPU的存储区域中物理隔离出的区域,可信区具有特定的物理参数,而仅能在CPU的可信区内执行的加密算法,即是需要使用可信区的物理参数的加密算法。相应地,服务设备可以在其CPU的可信区内采用与所述加密算法对应的解密算法对接收到的加密数据进行解密。与所述加密算法对应的解密算法仅能在所述服务设备的CPU的可信区内执行。
显然,解密算法中需要使用的可信区的物理参数与所述加密算法中使用的可信区的物理参数应当一致。也就是说,所述用户设备的CPU与所述服务设备的CPU的可信区的物理参数应当一致。一般的,同一CPU制造商制造的CPU可满足此要求。使用可信区的物理参数的加密算法与解密算法是已经成熟的技术,不再赘述。
下面分别以两种应用场景为例,对图3所示的训练架构进行详细说明。
图4是本说明书实施例提供的训练用于预测企业盈亏的模型的流程图,包括以下步骤:
S400:第二CPU向各第一CPU发送模型参数。
图5是本说明书实施例提供的与图4对应的训练模型的示意图。如图4所示,第二CPU将初始化的模型参数发送给各第一CPU。每个第一CPU接收到的模型参数是相同的,为n个权重值,即图中的W=(w1,w2,…,wn)。
S402:各第一CPU分别根据解密得到的用户数据和接收到的模型参数训练模型。
在训练用于预测企业盈亏的模型的场景下,用户数据可以是企业用户的财务报表。在图5中,以左边的第一CPU为例,该第一CPU获取企业用户A的加密数据(也就是经过加密的财务报表),并对加密数据进行解密,得到a1~an这n条用户数据。随后,该第一CPU使用初始化的模型参数,即n个权重值,将这n个权重值依次作为n条用户数据分别对应的权重值,从而计算得到各条用户数据的加权和,作为训练中间值。
类似地,右边的第一CPU也计算得到相应的训练中间值。
S404:各第一CPU将训练中间值发送给第二CPU。
S406:第二CPU根据各第一CPU发送的训练中间值确定训练效果表征值。
如图5所示,第二CPU综合各第一CPU发送的训练中间值,采用公式计算表征本次迭代训练结果与实际结果差异的训练效果表征值。其中,delta表示训练效果表征值,Y表示实际结果,sumA表示采用企业用户A的用户数据计算得到的训练中间值,sumB表示采用企业用户B的用户数据计算得到的训练中间值。当然,也可以采用其他公式计算训练效果表征值,如或等。
S408:第二CPU判断训练效果表征值是否满足指定条件,若是,则执行步骤S410,否则,执行步骤S412。
S410:第二CPU根据模型参数生成模型。
当第二CPU确定训练效果表征值满足指定条件时,由于各第一CPU使用的模型参数是相同的,因此,服务设备可将任一第一CPU使用的模型参数作为最终的模型参数。
S412:第二CPU根据训练效果表征值,对模型参数进行调整,并将调整后的模型参数发送给各第一CPU,返回步骤S402。
继续参见图5,若第二CPU确定训练效果表征值不满足指定条件,则根据训练效果表征值调整模型参数,也即根据既定的规则调整n个权重值的大小,将调整后的模型参数发送给各第一CPU,以使各第一CPU使用调整后的模型参数继续训练模型,直至第二CPU确定训练效果表征值满足指定条件。
在图5中,对加密数据进行解密以及根据模型参数和用户数据确定训练中间值,都是在第一CPU的可信区内执行的。
图6是本说明书实施例提供的训练用于评价个人信用能力的模型的流程图,包括以下步骤:
S600:针对每个第一CPU,该第一CPU确定初始化的模型参数。
S602:该第一CPU根据解密得到的用户数据和模型参数训练模型,得到训练中间值。
S604:该第一CPU将训练中间值发送给第二CPU。
在本说明书实施例中,每个第一CPU使用的初始化的模型参数可以是自身设置的,也可以是第二CPU发送的。
图7是本说明书实施例提供的与图6对应的训练模型的示意图。如图7所示,各第一CPU分别训练模型使用的模型参数是不同的,左边的第一CPU使用的模型参数为W={w1,w2,…,wt},右边的第一CPU使用的模型参数为W={w(t+1),w(t+2),…,wm}。
这是因为,在训练用于评价个人信用能力的模型的场景下,某个机构存储的用户数据可以是某人在该机构产生的信用记录。针对这个人而言,此人往往会在多个机构处产生信用记录。例如,机构A是某银行,机构B是某4S店,此人从机构A贷款,会产生相应的贷款记录,从机构B买车,会产生相应的购车记录。也就是说,针对这个人而言,此人在多个机构产生的信用记录的集合,才能够全面反映此人的信用能力。因此,个人在不同的机构产生的信用记录所对应的模型参数(各条信用记录分别对应的权重值)是不同的,也即不同的机构存储的用户数据所对应的模型参数是不同的。
如图7所示,左边的第一CPU获取机构A的用户数据,机构A的用户数据包括个人1~k在机构A产生的信用记录(每一行的用户数据是一个人的信用记录);右边的第一CPU获取机构B的用户数据,机构B的用户数据包括个人1~k在机构B产生信用记录。
各第一CPU对获取的加密数据进行解密,得到用户数据,根据用户数据和模型参数计算训练中间值(即针对每行用户数据,计算该行的各条用户数据的加权和),并将训练中间值发送给第二CPU。
S606:第二CPU根据各第一CPU发送的训练中间值确定训练效果表征值。
第二CPU根据公式计算训练效果表征值。其中,deltai表示用户i对应的训练效果表征值,sumi1表示通过机构A的用户数据计算得到的用户i对应的训练中间值,sumi2表示通过机构B的用户数据计算得到的用户i对应的训练中间值。
S608:第二CPU判断训练效果表征值是否满足指定条件,若是,则执行步骤S610,否则,执行步骤S612。
S610:第二CPU从各第一CPU获取模型参数,并根据获取的模型参数生成模型。
若第二CPU确定训练效果表征值满足指定条件,则获取各第一CPU在本次迭代中分别使用的模型参数,将获取的各模型参数组合成用于生成模型的模型参数。
S612:第二CPU将训练效果表征值发送给各第一CPU。
S614:针对每个第一CPU,该第一CPU根据所述训练效果表征值调整所述模型参数,并返回执行步骤S502。
若第二CPU确定训练效果表征值不满足指定条件,则将训练效果表征值发送给各第一CPU,由各第一CPU根据公式分别调整模型参数,并根据调整后的模型参数继续计算训练中间值。其中,针对每个第一CPU,W’表示上一次迭代中该第一CPU使用的模型参数,α为算法参数,可根据需要指定,deltai表示个人i对应的训练效果表征值,xi表示个人i对应的用户数据。
在图7中,对加密数据进行解密、根据模型参数和用户数据确定训练中间值,以及调整模型参数,都是在第一CPU的可信区内执行的。其中,由于用于调整模型参数公式需要使用用户数据,因此,在可信区内执行调整模型参数的操作,可以防止用户数据泄露出去。
最后还需要说明的是,本申请对训练模型使用的训练算法(如线性回归、逻辑回归、神经网络等),以及训练算法中涉及的计算训练中间值、计算训练效果表征值、调整模型参数的公式,都不做具体限制,本领域技术人员采用图2所示的架构,采用其他训练算法和计算公式进行模型的迭代训练,都应在本申请所要求的保护范围之内。
基于图1所示的训练模型的方法,本说明书实施例还对应提供了一种训练模型的装置,如图8所示,所述装置中具有可信区,所述装置包括:
接收模块801,所述服务设备接收用户设备发送的加密数据;
解密模块802,在所述可信区内,解密所述加密数据得到用户数据;
训练模块803,在所述可信区内,采用所述用户数据训练模型。
所述解密模块802,在所述可信区内,采用仅能在所述可信区内执行的解密算法,解密所述加密数据得到用户数据。
所述可信区位于所述服务设备的CPU中。
所述服务设备中包括多个第一CPU和至少一个第二CPU;
所述接收模块801,接收多个用户设备发送的加密数据;
所述解密模块802,分别在各第一CPU的可信区内,解密所述加密数据得到用户数据,不同的第一CPU的可信区内所解密的加密数据来自于不同的用户设备;
所述训练模块803,针对每个第一CPU,在该第一CPU的可信区内,根据该第一CPU解密得到的用户数据以及所述第二CPU发送的模型参数训练模型,得到训练中间值,并通过该第一CPU将所述训练中间值输出给所述第二CPU;通过所述第二CPU,根据各第一CPU分别输出的训练中间值,确定训练效果表征值;根据所述训练效果表征值调整所述模型参数,以使所述第二CPU和各第一CPU根据调整后的模型参数继续训练模型,直至训练的模型满足指定条件为止。
所述训练模块803,通过所述第二CPU,根据所述训练效果表征值调整所述模型参数,并将调整后的模型参数发送给各第一CPU,以使所述第二CPU和各第一CPU根据调整后的模型参数继续训练模型。
所述训练模块803,通过所述第二CPU,将所述训练效果表征值发送给各第一CPU,以使每个第一CPU根据所述训练效果表征值调整所述模型参数,并根据各调整后的模型参数继续训练模型。
基于图1所示的训练模型的方法,本说明书实施例还对应提供了另一种训练模型的装置,如图9所示,服务设备中具有可信区,所述装置包括:
加密模块901,用户设备对用户数据进行加密,得到加密数据;
发送模块902,将所述加密数据发送给服务设备,以使所述服务设备在所述可信区内,解密所述加密数据得到所述用户数据,并采用所述用户数据训练模型。
所述装置中具有可信区;
所述加密模块901,用户设备采用仅能在所述用户设备的可信区内执行的加密算法,对用户数据进行加密,以使所述服务设备采用与所述加密算法对应的解密算法对接收到的加密数据进行解密,其中,与所述加密算法对应的解密算法仅能在所述服务设备的可信区内执行。
基于图1所示的训练模型的方法,本说明书实施例对应提供了一种服务设备,如图10所示。所述服务设备中具有可信区,所述服务设备包括一个或多个处理器及存储器,所述存储器存储有程序,并且被配置成由所述一个或多个处理器执行以下步骤:
接收用户设备发送的加密数据;
在所述可信区内,解密所述加密数据得到用户数据;
在所述可信区内,采用所述用户数据训练模型。
基于图1所示的训练模型的方法,本说明书实施例对应提供了一种用户设备,如图11所示。服务设备中具有可信区,所述用户设备包括一个或多个处理器及存储器,所述存储器存储有程序,并且被配置成由所述一个或多个处理器执行以下步骤:
对用户数据进行加密,得到加密数据;
将所述加密数据发送给服务设备,以使所述服务设备在所述可信区内,解密所述加密数据得到所述用户数据,并采用所述用户数据训练模型。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于图10所示的服务设备和图11所示的用户设备而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。