具体实施方式
本说明书实施例提供算法组件化、基于算法组件建模方法、装置以及电子设备。
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
图1为本说明书的方案在一种实际应用场景下涉及的一种整体架构示意图。该整体架构主要包括:算法组件化设备、建模设备。该整体架构的工作流程可以包括以下步骤:算法组件化设备定义算法的元数据,并根据定义的元数据对算法进行封装得到算法组件,再由建模设备将一个或多个算法组件进行实例化,并利用实例化后的算法组件构建所需模型。
基于上述整体架构,下面对本说明书的方案进行详细说明。
本说明书实施例提供了一种算法组件化方法,具体可以参考图2所示。
图2为本说明书实施例提供的一种算法组件化方法的流程示意图,该流程可以包含以下步骤:
S102:确定为各算法定义的元数据,所述元数据包括:对应算法的输入输出的格式数据,以及参数的格式数据。
各算法可以基于同一计算框架,也可以基于不同计算框架。在定义元数据时,可以对每一个算法的元数据分别进行定义;也可以将一些可以共用的参数定义为一个元数据,这样可以减少工作量,也有利于元数据复用。
在算法组件化后,不同的算法组件之间可能需要进行数据传输,为了实现这种需求,对于算法中一些较重要的元数据,例如算法中的输入输出的格式数据和参数的格式数据,需要单独进行定义。一般地,需要使得算法组件的输出的格式与接收该数据的算法组件的输入的格式能够匹配,所述匹配可以指所述输出的格式与所述输入的格式相同或者能够自动转换。
例如,若某一个算法组件需要与另两个算法组件相连,这两个算法组件,分别接收JSON格式数据和二进制数据,那么在最初定义该算法组件时,就需要定义数据输入输出的格式包括:JSON格式和二进制格式。
S104:根据所述元数据,对至少一个所述算法进行封装,得到对应的算法组件。
在进行算法封装时,根据实际情况,可以将一个算法封装为一个算法组件,也可以将多个算法封装为一个算法组件。例如,如果某一个算法经常被单独使用,或者与其他算法的搭配不固定,则可以将这个算法单独封装为一个算法组件;如果某一个算法往往与另一个或另几个算法固定地搭配使用,则也可以将这些算法共同封装,得到包含多个算法的算法组件,如此,后续建模时更加方便,也有利于简化模型结构。
在本说明书实施例中,所述输入输出的格式数据支持以下至少一种输入输出方式:基于格式化文本进行输入输出的方式,或通过服务接口进行输入输出的方式。所述格式化文本比如可以是JSON文本等。
例如,当相互连接的两个算法组件的输入输出的格式相同时,可以直接通过服务接口实现这两个算法组件之间的数据传输;当连接的算法组件之间的数据的输入输出格式不相同时,可以基于格式化文本将要传输数据进行格式转换后,再进行输入输出。
为了便于支持不同的业务场景,为单个算法定义的元数据包括的参数的格式数据或输入输出的格式数据可以有多种。后续使用时,比如可以将该算法组件支持的格式的范围设置为一个活动窗口,可以由用户输入某一个所需格式,也可以由用户通过该活动窗口的下拉菜单选择所需格式。
为了方便各种不同算法组件之间的数据交互,可以在算法组件中设置能够对数据进行格式转换的功能模块。进一步地,还可以将用于数据格式转换的功能模块单独封装成组件,用于连接算法组件。
在本说明书实施例中,对于步骤S104,所述根据所述元数据,对至少一个所述算法进行封装,得到对应的算法组件,具体可以包括以下两个步骤:
首先,获取预定义的支持可视化操作的算法组件模型;算法组件模型可以是开发人员预定义的,其可以由用户进一步地增加自定义设置,比如设置颜色、字体等;算法组件模型也可以由用户自己定义。由于算法组件模型支持可视化操作,因此,用户在对算法组件模型进行操作时更加简单、直观,操作难度较低。
然后,通过根据定义的元数据将所述算法向所述算法组件模型映射并封装得到对应的可视化算法组件,所述算法组件优选地可以支持拖拉拽操作。所述映射具体可以包括:将定义的元数据分别映射到可视化的算法组件模型中对应的控件。映射并封装的优点在于:后续使用算法组件时,若要进行参数设置,用户无需对底层程序进行修改,而是可以直接对该算法组件对应的可视化控件进行设置,如此,可以简化用户操作,提高便利性。
通过可视化的拖拉拽的操作,用户可以直观地而便利地对算法组件的位置、形状或大小等属性进行调整,而无需操作代码。
在本说明书实施例中,当所述至少一个所述算法包括多个所述算法时,对于步骤S104,所述根据所述元数据,对至少一个所述算法进行封装,得到对应的算法组件,具体可以包括:根据业务场景,确定多个所述算法之间的依赖关系;根据所述元数据和所述依赖关系,将多个所述算法向所述算法组件模型映射并封装,得到对应的可视化的算法组件,所述算法组件用于所述业务场景。
所述依赖关系是指在一定的业务场景下至少两个算法之间相互依赖的关系。若两个算法中其中一个算法的输出结果影响另一算法的输入或输出,则这两个算法之间具有依赖关系。
依赖关系一般可以根据业务场景确定,业务场景发生变化时,算法之间的依赖关系也可能相应地发生变化,在算法组件化后,算法组件之间的依赖关系可以参照对应算法之间的依赖关系。当然,依赖关系也可以不根据业务场景确定,而是根据算法本身的逻辑或者用法确定。
进一步地,所述元数据还可以包括用于执行其对应算法的计算框架的相关数据,所述相关数据比如可以是计算框架的标识、接口信息或计算框架本身。所述算法优选地可以包括机器学习算法;所述机器学习算法比如可以是卷积神经网络(ConvolutionalNeural Networks,CNN)、深度神经网络(Deep Neural Networks,DNN)、递归神经网络(Recurrent Neural Networks,RNN)等,所述计算框架比如可以是Caffee、MXnet、TensorFlow、Spark等。可以为同一个算法组件定义分别对应于多个计算框架的元数据,如此,便于在使用该算法组件时,对应的算法可以由所述多个计算框架中的任意计算框架执行。
本说明书实施例中,所述得到对应的算法组件后,还可以执行:将所述算法组件在可视化建模平台上发布上线,所述可视化建模平台用于基于所述算法组件进行建模。
进一步地,所述将所述算法组件在可视化建模平台上发布上线前,还可以执行:确定所述算法组件对应的计算框架已与所述可视化建模平台对接。其中,可以在算法组件化之前,判断计算框架与可视化建模平台是否对接;也可以在算法组件配置完成后,判断计算框架与可视化建模平台是否对接。若计算框架与所述可视化建模平台已对接,优选地可以对算法组件的正确性进行测试,测试通过后将算法组件发布上线。
本说明书实施例提供了一种先判断计算框架与可视化建模平台是否对接,再进行算法组件化和算法组件发布上线的方案,结合图3进行说明。图3为本说明书实施例提供的一种典型的算法组件发布的流程示意图。
图3中的流程可以包括以下步骤:
判断算法组件对应的计算框架与所述可视化建模平台是否已经对接,如果没有对接,则对接该计算框架;
完成计算框架的对接后,将算法封装为算法组件;
在配置后台对算法组件进行配置;
配置算法组件后,测试算法组件的正确性,如果测试通过,将算法组件发布上线。
基于同样的思路,本说明书实施例还提供的一种基于算法组件建模方法,该算法组件优选地可以是通过图2的方法得到的算法组件,该建模方法可以在上述的可视化建模平台上实施。图4为该基于算法组件建模方法的流程示意图,该流程可以包括以下步骤:
S202:获取根据业务场景确定的业务数据。
可以根据业务场景,获取建模所需的业务数据。
例如,可以通过预先封装的组件,对业务场景进行分析,得到所需的业务数据;或者,也可以人工根据经验选择业务数据。
S204:根据所述业务数据,确定通过对各算法进行封装得到的多个算法组件,以及对所述多个所述算法组件进行实例化。
在本说明书实施例中,可以先分析业务场景,再根据分析结果确定算法组件;当然,也可以不依赖于业务场景直接确定算法组件用于建模,如果建模效果不理想,再重新确定至少部分算法组件。
为了便于算法组件之间相互连接以及传输数据,在对定义算法的元数据时,可以定义多种输入输出的格式数据,进一步地,还可以预定义有支持各种输入输出的格式的服务接口,有利于提高建模人员的工作效率。
S206:根据所述实例化后的各算法组件,进行建模。
在本说明书实施例中,优选地可以在可视化建模平台执行算法组件实例化以及后续建模动作,可视化建模平台可以包含各算法组件,以便于用户建模,进一步地,后续在使用构建出的模型时,可以通过可视化建模平台调用对应的计算框架以执行算法。
在建模过程中,已实例化的算法组件还可以根据需要进行调整,以便于构建模型评估效果较优的模型。
在本说明书实施例中,对于步骤S202,所述获取根据业务场景确定的业务数据,具体可以包括:建模人员基于业务场景提出对应的建模方案,通过预先封装的数据探索组件对业务场景进行分析,根据获取的分析结果,获取建模所需的业务数据。当然,业务数据的获取也未必要依赖于数据探索组件,比如,业务数据也可以通过人工分析业务场景获得。
在本说明书实施例中,对于步骤S204,所述根据所述业务数据,确定通过对各算法进行封装得到的多个算法组件,具体可以包括:
通过预先封装的特征筛选组件对所述业务数据进行特征筛选,得到筛选出的算法特征。另外,若业务数据量较少,也可以由建模人员根据经验在业务特征中进行筛选。
可以根据所述算法特征,确定所述建模所需的多个算法组件,该算法组件是通过对各算法进行封装得到。算法组件的选择,是构建模型的基础,直接影响模型的效果;所以,在选择算法组件时,需要根据实际的业务场景,通过准确分析来确定;以便于更快、更好的构建业务模型。
在本说明书实施例中,所述对多个算法组件进行实例化,具体可以包括:
根据所述业务数据和/或所述算法特征,配置所述多个算法组件;
根据所述多个算法组件支持的输入输出的格式数据,联通所述配置的多个算法组件之间的依赖关系,以及调试所述配置的多个算法组件中的参数,得到实例化后的多个算法组件。
具体进行配置时,可以由建模人员以手动输入参数的方式配置,也可以通过下拉菜单进行选择的方式配置。
所述输入输出的格式数据支持以下至少一种输入输出方式:基于格式化文本进行输入输出的方式,或通过服务接口进行输入输出的方式。
在联通所述配置的多个算法组件之间的依赖关系时,判断算法组件中定义的输入输出的格式是否匹配,根据判断结果选择所需的输入输出的格式,实现联通多个算法组件之间的依赖关系。例如,当两个需要相互联通的算法组件之间的数据输入输出的格式不匹配时,将待传输数据格式进行统一后,联通上述两个算法组件之间的依赖关系。当两个需要相互联通的算法组件之间的数据输入输出的格式相同时,可以通过服务接口联通上述两个算法组件之间的依赖关系。不需要进行格式转换,简化数据输入输出的步骤,提升运行效率。
调试所述配置的多个算法组件中的参数,得到实例化后的多个算法组件。在算法组件进行实例化时,其中一些用于配置算法组件的参数还需要进一步调试,或者,还有可能重新配置参数。
在本说明书实施例中,对于步骤S206,所述根据所述实例化后的各算法组件,进行建模,具体可以包括:获取预先根据所述业务场景配置的组件流程,根据所述组件流程,以及所述实例化后的各算法组件,进行建模。如果上述模型还需要进一步地优化或训练,进一步地,根据所述组件流程,以及所述实例化后的各算法组件,生成执行脚本,所述执行脚本用于执行通过所述建模构建出的模型中包含的各算法组件;最终得到较优的模型。
根据所述组件流程,以及所述实例化后的各算法组件,生成执行脚本,该执行脚本中可以包含各算法组件的信息、参数和执行流程等信息;执行所述执行脚本,得到构建出的模型。
为了便于理解,下面结合实际应用场景举例说明。
图5为本说明书实施例提供的一种算法组件可视化配置界面示意图,所述实例化得到的所述算法组件是可视化的组件。基于图5的界面,建模人员可以更加直观地配置算法组件,而无需了解底层实现。
如图5所示,可以将需要建模人员设置的参数,通过可视化控件的形式展示给建模人员,例如,基础控件、字段选择控件、基础设置等,基础设置中还包括控件类型、标签、提示文本等。
图6为本说明书实施例提供的一种算法组件可视化配置后台的原理示意图。如图6所示,Node_def,Node_meta等是算法组件对应的元数据;基本信息、输入输出配置等是组件模型中的控件;通过将元数据映射到对应的控件,可以得到可视化的算法组件;同时,在组件模型上还定义有JSON文件和服务接口。进一步地,可以在配置后台中实例化算法组件,通过可视化算法组件中的各控件配置算法组件的参数。
图7为本说明书实施例提供的建模方案的原理示意图。图7涉及以下动作:
首先,将算法封装为算法组件,所述封装需要基于定义的算法的元数据实现,元数据的定义可以包括多个输入输出的格式数据的定义,多个参数格式数据的定义和对应的一个控件的定义,一般地,元数据定义与输入输出的格式数据的定义以及参数的格式数据的定义是1:N的关系,元数据定义与控件的定义是1:1的关系。
接下来,实例化算法组件,具体可以包括多个输入输出实例化,多个参数实例化和对应的一个控件实例化,一般地,算法组件实例化与输入输出实例化、参数实例化是1:N的关系,算法组件实例化与控件实例化是1:1的关系。
最后,建模以及执行相应的算法组件;根据算法定义元数据,对算法进行封装得到的算法组件,执行多个参数定义。
在完成算法组件实例化后,算法组件以一种可视化的单元模块的形式体现,建模人员可以拖动所述实例化得到的所述算法组件到可视化建模平台;根据组件流程,对各算法组件通过拖拉拽等操作进行建模。
图8为本说明书实施例提供的一种建模界面示意图。如图8所示,连接在所述可视化建模平台上的多个所述算法组件,获取构建的模型。具体来说,建模人员可以通过点击选定一个算法组件的输出端口,然后通过拖动或直接点击另一个算法组件的输入端口,即可实现两个组件之间的连接。完成每一步连接后,可视化建模平台中都会提示该连接是否成功,如果提示有问题,可能是因为两个算法组件之间是输入输出的格式不匹配,需要建模人员打开对应的算法组件,对其中的输入输出的格式进行重新设置;如果有必要,还需要检查一下其他参数是否进行了正确的设置。
对可视化建模平台中的所需的组件完成连接后,进行初步运行测试,检测一下组件之间的连接是否正确。如果不正确,按照错误提示,对算法组件的排序或其中的一些参数进行检查并调整。如果正确,接下来需要对整个模型进行评估。评估过程中,需要反复调整算法组件中的参数。综合评估结果,筛选出最优的模型,并将该模型投入使用。如果评估结果都不符合要求,则需要按照上述步骤,重新选取业务数据、算法组件等,重新构建模型。
基于上述实施例,在获得构建的模型后,还可以对模型进行评估,如果效果不理想需要进行建模流程的迭代,如图9为本说明书实施例提供的一种模型评估迭代方法的流程示意图,该图9具体步骤如下:
S302:对通过所述建模得到的建模结果进行分析评估以及参数调优,以筛选得到所需的模型;
完成建模后,将该建模结果与用于评估的组件连接,或者用户将一组预测参数输入到该模型当中,直接对该建模结果进行评估;其中,该建模结果可以是一个所需的可部署生产的模型,也可以是需要进一步优化的模型。
为了获得更好的模型,可以通过调整所述模型中的参数,获得多个评估结果;根据多个模型对应的评估结果,筛选出最优的模型。所述最优的模型是相对而言更适合业务场景的一个模型,具体的选择标准需要根据用户需求和业务场景要求来确定。
进一步地,步骤S304,若通过所述筛选未得到所需的模型,对所述建模的流程进行迭代。如果没有得到符合要求的评估结果,则需要进一步的对建模流程进行迭代,重复上述步骤重新构建模型,直到获得符合要求的最优模型。
通过基于不同计算框架,将多种不同的算法进行组件化,使得各算法组件支持多种输入输出的格式,可以实现各种算法组件的标准化,有利于降低利用多种算法组件建模连接的工作难度,有效的提升建模人员的工作效率,进而有效的提升了用户体验。
为了更好的理解本发明的构思,基于上述实施例,具体举例说明一种算法组件化建模的方法,如图10为一种基于算法组件建模的典型流程示意图;
假定预先搭建了机器学习平台(Platform of Artificial Intelligence,PAI),该PAI包含各预先封装的算法组件,用户可以使用PAI提供的算法组件在建模流程中无差别调用,算法建模人员使用PAI的典型建模流程如下:
S402:建模人员根据业务场景,理解业务需求后,提成可行的建模方案;S404,在PAI平台中的“数据探索”类目下,找到所需组件,进行数据分析和探索,提取业务数据;S406,找到业务数据后,在PAI平台的“特征工程”类目下,找到所需组件,进行特征的筛选、生成等计算,将原数据转换为算法特征参数;S408,选取合适算法组件进行建模;S410,对建模结果信息评估,在此期间可以对参数进行调整,得到多个评估结果;S412,从多个评估建模结果中,筛选出最优模型;S414,部署生产;如果没有最优模型,S416,进行流程迭代。
基于同样的思路,本说明书还提供了一种算法组件化装置,图11为本说明书实施例提供的对应于图2的一种算法组件化装置的结构示意图,如图11所示结构,具体可以包括:
定义模块11,确定为各算法定义的元数据,所述元数据包括:对应算法的输入输出的格式数据,以及参数的格式数据;其中,定义模块11定义的所述输入输出的格式数据支持以下至少一种进行输入输出方式:基于格式化文本进行输入输出的方式,或通过服务接口直接进行输入输出的方式。
封装模块12,根据定义后的所述元数据,对至少一个所述算法进行封装,得到对应的算法组件。具体来说,所述封装模块12,获取预定义的支持可视化操作的算法组件模型;通过根据元数据将所述算法向所述算法组件模型映射并封装,得到对应的可视化的算法组件,所述算法组件支持拖拉拽操作。
由于算法组件模型是支持可视化操作,而且算法组件也支持拖拉拽的可视化操作,所以在进行算法封装时,可以比较直观、快速的进行算法封装,得到对应的算法组件;完成封装后的算法组件,在使用时,也可以很方便的通过鼠标、手、或实体或虚拟的工具,对所需的算法组件进行拖拉拽的操作,快速完成建模工作任务,有助于提升工作效率,进而提升用户体验。
可选地,当所述至少一个所述算法包括多个所述算法时,所述封装模块12,所述根据所述元数据,所述封装模块对至少一个所述算法进行封装,得到对应的算法组件,具体可以包括:根据业务场景,确定多个所述算法之间的依赖关系;根据所述元数据和所述依赖关系,将多个所述算法向所述算法组件模型映射并封装,得到对应的可视化的算法组件,所述算法组件用于所述业务场景。
在将多个算法封装为同一个算法组件,需要考虑业务场景,或者根据经验、使用习惯等,进行选择性的封装。因为,不同的业务场景,所需要的算法组件是不同的,对应的引起各算法之间的依赖关系也发生变化。
可选地,所述元数据还包括用于执行其对应算法的计算框架的相关数据,所述算法包括机器学习算法。这里所述相关数据,可以是计算框架、计算框架的接口信息、指示信息等,目的是为了实现各算法组件对应的各计算框架与可视化建模平台的对接。
可选地,所述得到对应的算法组件后,还包括:将所述算法组件在可视化建模平台上发布上线,所述可视化建模平台用于基于所述算法组件进行建模;所述将所述算法组件在可视化建模平台上发布上线前,还包括:确定所述算法组件对应的计算框架已与所述可视化建模平台对接。
基于同样的思路,本说明书还提供了一种算法组件化建模装置,图12为本说明书实施例提供的对应于图4的一种基于算法组件建模装置的结构示意图,如图12所示结构,具体可以包括:
一种算法组件化建模装置,包括:
业务分析模块21,获取根据业务场景确定的业务数据;其中,所述业务分析模块,获取预先封装的数据探索组件对业务场景的分析结果;根据所述分析结果,获取所述建模所需的业务数据。
算法组件实例化模块22,根据业务数据,确定通过对各算法进行封装得到的多个算法组件,以及对所述多个算法组件进行实例化。
具体可以包括:算法组件实例化模块22,通过预先封装的特征筛选组件对所述业务数据进行特征筛选,得到筛选出的算法特征;
根据所述算法特征,确定所述建模所需的多个所述算法组件,所述算法组件通过对各算法进行封装得到。
所述算法组件实例化模块22,所述对所述多个算法组件进行实例化;具体可以包括:根据所述业务数据和/或所述算法特征,配置所述多个算法组件;根据所述多个算法组件支持的输入输出的格式数据,联通所述配置的多个算法组件之间的依赖关系,以及调试所述配置的多个算法组件中的参数,得到实例化后的多个算法组件。
所述算法组件建模模块23,获取预先根据所述业务场景配置的组件流程;根据所述算法组件流程,以及所述实例化后的各算法组件,进行建模。
可选地,在进行建模前,根据所述组件流程,以及所述实例化后的各算法组件,生成执行脚本,所述执行脚本用于执行通过所述建模构建出的模型中包含的各算法组件,最终得到较优的模型。
可选地,所述输入输出的格式支持以下至少一种输入输出方式:基于格式化文本进行数据的输入输出的方式,或通过服务接口直接进行数据的输入输出的方式。
所述基于算法组件建模装置还包括评估模块24;
所述评估模块24,通过对所述建模得到的建模结果进行分析评估以及参数调优,以筛选得到所需的模型;以及,
若通过所述筛选未得到所需的模型,对所述建模的流程进行迭代。
基于同样的思路,本说明书还提供了一种电子设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
为确定为各算法定义的元数据,所述元数据包括:对应算法的输入输出的格式数据,以及参数的格式数据;
根据定义后的所述元数据,对至少一个所述算法进行封装,得到对应的算法组件。
基于同样的思路,本说明书还提供了另一种电子设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
为获取根据业务场景确定的业务数据;
根据所述业务数据,确定通过对各算法进行封装得到的多个算法组件,以及对所述多个算法组件进行实例化;
根据所述实例化后的各算法组件,进行建模。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、非易失性计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书实施例提供的装置、电子设备、非易失性计算机存储介质与方法是对应的,因此,装置、电子设备、非易失性计算机存储介质也具有与对应方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述对应装置、电子设备、非易失性计算机存储介质的有益技术效果。
在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),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。