经由并行和片上存储器进行时间、空间和能量高效神经推断的制作方法

文档序号:23185351发布日期:2020-12-04 14:14阅读:131来源:国知局
经由并行和片上存储器进行时间、空间和能量高效神经推断的制作方法



背景技术:

本公开的实施例涉及神经网络,并且更具体地,涉及适于经由并行和片上(on-chip)存储器提供时间、空间和能量高效的神经推断的神经推断芯片和核。



技术实现要素:

根据本公开的实施例,提供了神经推断芯片。在各种实施例中,神经推断芯片包括:多个神经核,所述多个神经核通过片上网络互连;第一片上存储器,用于存储神经网络模型,所述第一片上存储器通过所述片上网络连接到所述多个核中的每一个;第二片上存储器,用于存储输入和输出数据,所述第二片上存储器通过所述片上网络连接到所述多个核中的每一个。

根据本公开的实施例,提供了用于操作神经网络的方法和计算机程序产品。从神经推断芯片上的第一片上存储器读取神经网络模型。根据神经网络模型配置神经推断芯片上的多个神经核。从神经推断芯片上的第二片上存储器读取输入。将输入提供给多个神经核。所述输入被多个神经核变换成输出。将输出写入神经推断芯片上的第二片上存储器。

根据本公开的实施例,提供了用于配置神经推断芯片的方法和计算机程序产品。在运行时间之前,将神经网络模型加载到神经推断芯片上的第一片上存储器。在运行时间期间,根据神经网络模型配置神经推断芯片上的多个神经核。在运行时间期间,用输入数据更新神经推断芯片上的第二片上存储器。输入数据被多个神经核变换成输出数据。输出数据被写入神经推断芯片上的第二片上存储器。

根据本公开的实施例,提供了用于操作神经推断芯片的方法和计算机程序产品。输入数据被写入神经推断芯片的第二存储器。在一些实施例中,输入数据由神经推断芯片的主机写入。将输入数据提供给神经推断芯片的多个神经核。对于由所述神经推断芯片的第一存储器中的神经网络模型定义的神经网络的多个层中的每一个:将所述神经网络模型的一部分从所述第一存储器提供给所述多个神经核;从神经推断芯片的第四存储器向神经核提供指令的一部分;并且,输入数据被多个神经核变换成输出数据。聚集来自多个神经核的输出数据。将所聚集的输出数据写入到第二存储器。在一些实施例中,在多个神经核之间传递中间结果。在一些实施例中,由神经推断芯片的主机从第二存储器读取聚合的输出数据。

附图说明

现在将参考附图仅通过示例的方式描述本发明的实施例,在附图中:

图1描绘了根据本公开的实施例的神经推断芯片。

图2描绘了根据本公开的实施例的神经推断芯片。

图3描绘了根据本公开的实施例的神经推断芯片。

图4描绘了根据本公开的实施例的神经推断芯片。

图5描绘了根据本公开的实施例的神经推断芯片。

图6描绘了根据本公开的实施例的神经推断芯片。

图7描绘了根据本公开的实施例的神经推断芯片。

图8描绘了根据本公开的实施例的用于操作神经推断芯片的方法。

图9描述了根据本发明实施例的计算节点。

具体实施方式

人工神经元是其输出是其输入的线性组合的非线性函数的数学函数。如果一个神经元的输出是另一个神经元的输入,则两个神经元被连接。权重是对一个神经元的输出与另一个神经元的输入之间的连接的强度进行编码的标量值。

神经元通过将非线性激活函数应用于其输入的加权和来计算其输出,称为激活。加权和是通过将每个输入乘以相应的权重并累加乘积而计算的中间结果。部分和是输入子集的加权和。所有输入的加权和可以通过累加一个或多个部分和而分阶段计算。

神经网络是一个或多个神经元的集合。神经网络通常被分成称为层的神经元组。层是一个或多个神经元的集合,所述神经元全部从相同层接收输入并且全部向相同层发送输出,并且通常执行类似的功能。输入层是从神经网络外部的源接收输入的层。输出层是向神经网络外部的目标发送输出的层。所有其它层是中间处理层。多层神经网络是具有多于一层的神经网络。深度神经网络是具有多个层的多层神经网络。

张量是数值的多维阵列。张量块是张量中的元素的连续子阵列。

每个神经网络层与权重张量、参数张量、输入张量、输出张量和中间张量相关。权重张量包含将输入连接到层的所有权重。参数张量包含控制层中的神经元激活函数的所有参数。输入张量包含层作为输入消耗的所有数据。输出张量包含层作为输出计算的所有数据。中间张量包含层作为中间计算产生的任何数据,例如部分和。

现在参考图1,描绘了根据本公开实施例的神经核。神经核100是计算输出张量的一个块的可平铺计算单元。神经核100具有m个输入和n个输出。在各种实施例中,m=n。为了计算输出张量块,神经核将m×1输入张量块101乘以m×n加权张量块102,并将乘积累加为加权和,该加权和存储在1×n中间张量块103中。u×n参数张量块包含u参数,其指定了n个神经元激活函数中的每一个,所述n个神经元激活函数被应用于中间张量块103以产生1×n输出张量块105。

多个神经核可以平铺在神经核阵列中。在一些实施例中,阵列是2维的。

神经网络模型是一组常数,其共同指定由神经网络执行的整个计算,包括神经元之间的连接图以及每个神经元的权重和激活函数参数。训练是修改神经网络模型以执行期望的函数的过程。推断是将神经网络应用于输入以产生输出而不修改神经网络模型的过程。

推断处理单元是执行神经网络推断的一类处理器。神经推断芯片是推断处理单元的特定物理实例。

现在参考图2,描述了根据本公开实施例的神经推断芯片。芯片200包括用于在芯片操作期间存储数据的数据存储器201。存储器201容纳输入211和输出212,在一些实施例中,它们可从片外寻址。芯片200包括计算逻辑202,其可以包括被配置为实现多层神经网络内的中间处理层的一个或多个神经核。芯片200包括用于存储神经网络模型的模型存储器203,该神经网络模型可以包括用于计算逻辑202的配置参数。模型存储器203容纳输入231,在一些实施例中,其可从芯片外寻址。芯片200包括控制器逻辑204,其定义变换操作并引导片上存储器和计算逻辑之间的数据流。芯片200包括用于存储由控制逻辑执行的指令的指令存储器205。指令存储器205包括输入251,在一些实施例中,其可从芯片外寻址。提供了用于互连这些组件的片上网络(未示出)。

利用在芯片200上提供的用于神经网络模型、瞬态数据和控制器指令的存储器202、201、205,除了接收输入211和发送输出212之外,在计算期间不需要芯片外存储器访问。因此,与不提供这种片上存储器的替代方法相比,芯片200是快速且能量高效的。

计算逻辑202可以包括一个或多个神经核。在这样的实施例中,核由片上网络连接以允许中间和最终计算到其他核的直接通信。

如下所述,在各种实施例中,片上组件可以集中在核阵列之外,如图2所示,在其他实施例中,片上组件部分地分布在核之间。

现在参考图3,描述了根据本公开实施例的神经推断芯片。芯片300包括用于在芯片操作期间存储数据的数据存储器301。存储器301容纳输入311和输出312,在一些实施例中,它们可从片外寻址。芯片300包括计算逻辑302,其包括被配置为实现多层神经网络内的中间处理层的一个或多个神经核321。芯片300包括用于存储神经网络模型的模型存储器303,该神经网络模型可以包括用于计算逻辑302的配置参数。模型存储器303容纳输入331,在一些实施例中,其可从片外寻址。芯片300包括控制器逻辑304,其定义转换操作并引导片上存储器和计算逻辑之间的数据流。芯片300包括用于存储由控制逻辑执行的指令的指令存储器305。指令存储器305包括输入351,在一些实施例中,其可从片外寻址。提供片上网络306以便互连这些组件。

在该实施例中,计算分布在多个核321之间。

现在参考图4,描述了根据本公开实施例的神经推断芯片。芯片400包括用于在芯片操作期间存储数据的数据存储器401。存储器401容纳输入411和输出412,在一些实施例中,它们可从片外寻址。芯片400包括计算逻辑402,其包括被配置为实现多层神经网络内的中间处理层的一个或多个神经核421。芯片400包括用于存储神经网络模型的模型存储器403,该神经网络模型可以包括用于计算逻辑402的配置参数。模型存储器403容纳输入431,在一些实施例中,其可从片外寻址。芯片400包括控制器逻辑404,其定义变换操作并引导片上存储器和计算逻辑之间的数据流。芯片400包括用于存储由控制逻辑执行的指令的指令存储器405。指令存储器405包括输入451,在一些实施例中,其可从片外寻址。提供了片上网络406以用于互连这些组件。

在该实施例中,计算分布在多个核321之间。控制器逻辑和数据存储器部分地分布在多个核321之间。因此,存在芯片级控制器逻辑404和数据存储器401以及每个核控制器逻辑和数据存储器。

现在参考图5,描述了根据本公开实施例的神经推断芯片。芯片500包括用于在芯片操作期间存储数据的数据存储器501。存储器501容纳输入511和输出512,在一些实施例中,其可从片外寻址。芯片500包括计算逻辑502,其包括被配置为实现多层神经网络内的中间处理层的一个或多个神经核521。芯片500包括用于存储神经网络模型的模型存储器503,该神经网络模型可以包括用于计算逻辑502的配置参数。模型存储器503容纳输入531,在一些实施例中,其可从片外寻址。芯片500包括控制器逻辑504,其定义变换操作并引导片上存储器和计算逻辑之间的数据流。芯片500包括用于存储由控制逻辑执行的指令的指令存储器505。指令存储器505包括输入551,在一些实施例中,其可从芯片外寻址。提供了片上网络506以便互连这些组件。

在该实施例中,计算分布在多个核521中。控制器逻辑、数据存储器、模型存储器和指令存储器部分地分布在多个核521中。因此,存在芯片级控制器逻辑504、数据存储器501、模型存储器503和指令存储器505以及相应的每个核的实体。

现在参考图6,描述了根据本公开实施例的神经推断芯片。芯片600容纳输入611和输出612,在一些实施例中,它们可从片外寻址。芯片600包括计算逻辑602,其包括被配置为实现多层神经网络内的中间处理层的一个或多个神经核621。芯片600容纳输入631,在一些实施例中,其可从片外寻址。芯片600包括控制器逻辑604,其定义变换操作并引导片上存储器和计算逻辑之间的数据流。芯片600包括用于存储由控制逻辑执行的指令的指令存储器605。指令存储器605包括输入651,在一些实施例中,其可从片外寻址。提供了用于互连这些组件的片上网络(未示出)。

在该实施例中,计算分布在多个核621中。数据存储器和模型存储器也分布在多个核621中,而没有相应的芯片级实体。因此,输入611和输出612经由片上网络耦合到各个核621上的多个数据存储器实体。同样,输入631经由片上网络耦合到各个核621上的多个模型存储器实体。控制器逻辑和指令存储器部分地分布在多个核621中。因此,存在芯片级控制器逻辑604和指令存储器605以及相应的每个核的实体。

现在参考图7,描述了根据本公开实施例的神经推断芯片。芯片700容纳输入711和输出712,在一些实施例中,它们可从芯片外寻址。芯片700包括计算逻辑702,其包括被配置为实现多层神经网络内的中间处理层的一个或多个神经核721。芯片700容纳输入731,在一些实施例中,其可从片外寻址。芯片700容纳输入751,在一些实施例中,其可从片外寻址。提供了用于互连这些组件的片上网络(未示出)。

在该实施例中,计算分布在多个核721中。数据存储器、控制器逻辑、指令存储器和模型存储器也分布在多个核721中,而没有相应的芯片级实体。因此,输入711和输出712经由片上网络耦合到各个核721上的多个数据存储器实体。同样,输入731通过片上网络耦合到各个核721上的多个模型存储器实体,并且输入751通过片上网络耦合到各个核721上的多个指令存储器实体。

上述各种实施例提供了用于计算的分布式逻辑。在各种实施例中,多个分布式神经核并行地动作。这种并行性使得能够提高神经网络处理的速度,同时减少输入的呈现与输出的计算之间的等待时间。每个神经核实现给定问题的较大神经网络模型的一部分。每个神经核接收总芯片输入的一部分和总神经网络模型的一部分。这使得芯片和核能够模块化,从而使系统设计、调试和测试流线化。

上述各种实施例提供用于输入和输出数据的分布式存储器。因为数据存储器被分布到神经核,所以存储器和计算被进一步局部化,从而减少数据移动的能量。特别地,仅提供片外存储器的替代方法在将数据传输到芯片上和芯片外以及传输到每个单独的核时花费了大量的能量。在一些实施例中,在芯片级提供数据存储器,然后将数据的子集提供给个体神经核。在一些实施例中,在芯片级和每个核处都提供数据存储器。在这样的实施例中,芯片级数据存储器内容中的一些或全部可以被高速缓存在每个核的存储器中,从而提供数据局部性。在一些实施例中,在核级提供存储器。在一些这样的实施例中,存储器在核与核之间被复制。在一些实施例中,所有核的存储器被组合在单个虚拟存储器中。

如关于每个芯片上的模型存储器所提到的,上述各种实施例提供了分布式神经网络模型。将整个神经网络模型的各个部分分布到神经核。通过将存储神经网络模型的存储器的部分分布到相应的核,最小化了从中心位置传输该神经网络模型的需要。神经网络模型的公共或重用部分可以被集中存储,并且在需要时被发送到各个核。以此方式,可针对给定任务动态地重新配置核。同样,每个核不需要被提供有整个神经网络模型,从而最小化能量成本。

因此,本公开提供了适于实现神经网络的芯片。这样的神经网络可以基于输入数据提供推断和预测,并且可以包括一个或多个互连的中间处理层。特别地,在神经网络模型中,在输入层和输出层之间可以包括多个层。各种这样的布置在本领域中是已知的。如上所述,神经推断芯片的各种实施例包括用于存储神经网络模型的片上存储器、用于存储输入和输出数据的片上存储器、用于存储来自中间处理层的瞬态数据的片上存储器、用于实现中间处理层的计算逻辑、指定变换操作并引导片上存储器和计算逻辑之间的数据流的控制逻辑、用于存储由控制逻辑执行的指令的片上存储器、以及用于互连组件的片上网络。

在一些实施例中,计算逻辑被组织为一个或多个神经核的阵列,所述神经核可以经由一个或多个片上网络将中间和最终计算直接传送到其他神经核。

如参考以上附图所述,神经推断芯片的每个部件可以分布在神经核之间,集中在神经核阵列之外,或者部分分布和部分集中。

在各种实施方式中,神经推断芯片通过应用由神经网络模型指定的一层或多层计算将输入数据转换为输出数据。在一些这样的实施例中,中间处理层的输出被存储在数据存储器中。

在一些实施例中,计算每个中间层所需的参数被存储在神经网络模型存储器中。例如,在一些实施例中,参数包括突触权重或突触激活函数。

在一些实施例中,可以通过从神经网络模型存储器加载不同的参数集合来在线重新配置由每个神经核实现的计算。如上所述,神经网络模型存储器可以是每个神经核本地的、集中在芯片上的、或者部分分布式和部分集中的。

在一些实施例中,可以通过从数据存储器中的各种地址加载数据来在线重新配置到每个神经核的输入。这样,可以从片上存储器提供到神经网络的串行输入,而不花费用于片外访问的时间或能量。

在各种实施例中,在芯片被用于推断之前,用于神经网络模型的存储器被离线配置。在一些实施例中,用于指令的存储器同样被离线配置。在一些实施例中,在芯片用于推断的同时,用于输入和输出数据的存储器被在线更新。在一些实施例中,用于来自中间处理层的瞬态数据的存储器被在线更新。

在各种实施方式中,用于神经网络模型的存储器可以另外被在线配置或更新。同样,在一些实施例中,用于指令的存储器可以另外被在线配置或更新。

通常,根据本公开的芯片的操作可以被分解为在线和离线阶段,即,在计算期间和不在计算期间。如上所述,在一些实施例中,离线执行芯片配置。在芯片配置期间,神经网络模型被加载到芯片上。该神经网络模型可以是手工制作的,或者可以是使用学习算法(例如,深度学习或强化学习)离线学习的。控制器指令列表或控制器程序被加载到芯片上。该控制器程序可以是手工制作的,或者可以是从高级设计语言自动编译的。

一旦通过加载神经网络模型离线配置了芯片,则准备好在运行时以在线方式执行神经网络推断。在该阶段期间,输入或输入序列被提供给芯片,芯片分别产生输出或输出序列。芯片能够将输入转换为输出,而无需任何芯片外指令或程序,并且无需任何用于存储来自中间处理层的瞬态数据的芯片外存储器。

在各种实施例中,通过一个或多个片上网络来提供与神经核的通信。在各种实施例中,片上网络被用于将神经网络模型从集中模型存储器分发至神经核。在各种实施例中,片上网络被用于将控制器指令从集中指令存储器分发到神经核。在各种实施例中,片上网络被用于将输入数据分发到神经核并且聚集来自神经核的输出数据。

在具有多个神经核的各种实施例中,片上网络在相邻神经核之间传达中间计算。同样,在具有多个神经核的各个实施例中,片上网络在相邻神经核之间传达来自中间处理层的瞬态数据。

每个神经核根据从中心模型存储器加载到它的部分来实现整个神经网络模型的一部分。核经由片上网络协作以实现完整的结果。在各种实施例中,片上网络提供核之间的各种等级的连接性。在一些实施例中,核是完全互连的。在一些实施例中,神经核仅与其左边、右边、顶部和底部的核通信。

如上所述,在各种实施例中,控制器逻辑提供在芯片上。在一些实施例中,控制逻辑被实现为编排整个芯片的操作的可编程控制器,如由指令集架构所定义的。在一些实施例中,控制器是集中的,在整个芯片级执行可编程微代码。在一些实施例中,控制器分布在神经核之间,每个神经核在核级执行可编程微代码。在一些实施例中,控制器是分层的,具有在多个粒度级(例如,集中式芯片级、分布式核级、以及其间的零个或多个级)执行指令的组件。在一些实施例中,集中控制器组件执行芯片级指令以将核级指令分布到每个神经核中的控制器组件。

在各种实施例中,控制器是可编程的。因此,芯片级指令和核级指令共同指定芯片的操作。芯片级和核级指令确保整个芯片操作和每个核的操作被流水线化以获得非常高的吞吐量。在各种实施例中,指令集架构包括控制指令以协调芯片的操作。例如,指令可以包括生成神经网络存储器地址和读/写操作,指定要对数据执行的计算操作,指定核之间以及核与存储器之间的数据路由,生成输入、输出和数据存储器地址,以及读/写操作。

现在参考图8,根据本公开实施例图示了操作神经推断芯片的方法。在801,将输入数据写入神经推断芯片的第二存储器。在一些实施例中,输入数据由神经推断芯片的主机写入。在802,将输入数据提供给神经推断芯片的多个神经核。对于由所述神经推断芯片的第一存储器中的神经网络模型定义的神经网络的多个层中的每一层:在803,将神经网络模型的一部分从第一存储器提供给多个神经核;在804,将指令的一部分从神经推断芯片的第四存储器提供给神经核;以及在805,通过多个神经核将输入数据转换成输出数据。在806处,聚集来自多个神经核的输出数据。在807,将聚合的输出写入到第二存储器。在一些实施例中,在多个神经核之间传达中间结果。在一些实施方式中,由神经推断芯片的主机从第二存储器读取聚合的输出数据。

现在参考图9,示出了计算节点的示例的示意图。计算节点10仅是合适的计算节点的一个示例,并且不旨在对本文所述的本发明的实施例的使用范围或功能提出任何限制。无论如何,计算节点10能够被实现和/或执行上文阐述的任何功能。

在计算节点10中,存在计算机系统/服务器12,其可与许多其它通用或专用计算系统环境或配置一起操作。适合与计算机系统/服务器12一起使用的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户端、胖客户端、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络pc、小型计算机系统、大型计算机系统、以及包括任何上述系统或设备的分布式云计算环境等。

计算机系统/服务器12可以在计算机系统可执行指令的一般上下文中描述,诸如由计算机系统执行的程序模块。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统/服务器12可以在分布式云计算环境中实践,其中任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。

如图9所示,计算节点10中的计算机系统/服务器12以通用计算设备的形式示出。计算机系统/服务器12的组件可以包括但不限于一个或多个处理器或处理单元16、系统存储器28以及将包括系统存储器28的各种系统组件耦合到处理器16的总线18。

总线18表示若干类型的总线结构中的任何一种的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线体系结构中的任何一种的处理器或局部总线。作为示例而非限制,这些体系结构包括工业标准体系结构(isa)总线、微通道体系结构(mca)总线、增强型isa(eisa)总线、视频电子技术标准协会(vesa)局部总线和外围部件互连(pci)总线。

计算机系统/服务器12通常包括各种计算机系统可读介质。这样的介质可以是计算机系统/服务器12可访问的任何可用介质,并且它包括易失性和非易失性介质、可移动和不可移动介质。

系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图中未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd-rom,dvd-rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。

具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。

计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),所述计算机可读程序指令用于使处理器执行本发明的各方面。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”编程语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。

这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1