首页> 中国专利> 多任务递归神经网络

多任务递归神经网络

摘要

本发明属于递归神经网络技术领域,具体公开了方法,系统和装置,包括编码在计算机存储介质上的计算机程序,涉及多任务递归神经网络。其中,一种方法包括维护数据,该数据对于递归神经网络,指定多个存储区域中的每一个存储区域的单独的内部状态;接收当前输入;识别由当前输入限定的内存访问地址的特定内存区域;从维护的数据所指定的内部状态中选择特定内存区域的内部状态;根据所选择的特定内存区域的内部状态,使用递归神经网络来处理输入序列中的当前输入,从而:生成输出,该输出限定预测的内存访问地址的概率分布,以及更新所选择的特定存储区域的内部状态;并且在所维护的数据中将更新后的所选择的内部状态与特定内存区域相关联。

著录项

说明书

技术领域

本发明涉及递归神经网络技术领域,尤其涉及了一种多任务递归神经网络。

背景技术

神经网络是采用多层操作以从一个或多个输入预测一个或多个输出的机器学习模型。神经网络通常包括位于输入层和输出层之间的一个或多个隐藏层。每个隐藏层的输出用作下一层的输入,例如,下一个隐藏层或输出层。

神经网络的每个层指定对该层的输入要进行的一个或多个变换操作。一些神经网络层具有被称为神经元的操作。每个神经元接收一个或多个输入并产生由另一个神经网络层接收的输出。通常,每个神经元接收来自其它神经元的输入,以及每个神经元向一个或多个其它神经元提供输出。

每一层使用所述层的一组参数的当前值来产生一个或多个输出。训练神经网络包括不断地对输入执行正向传递,计算梯度值,以及更新每一层的一组参数的当前值。一旦神经网络被训练完成,最终的一组参数可以被用于在生产系统中进行预测。

一些神经网络是递归神经网络。递归神经网络是接收输入序列并从该输入序列生成输出序列的神经网络。特别地,递归神经网络可以在计算当前时间步长(timestep)的输出时使用来自前一时间步长的网络的部分或全部内部状态。这允许递归神经网络呈现动态时间行为。换句话说,递归神经网络将其接收到的所有信息综合到当前时间步长中,并且有能力捕获数据序列中的长期依赖性。

发明内容

本说明书描述了多任务递归神经网络,更具体地,描述了改善微处理器中的时间序列预测的多任务递归神经网络。

一种实现多任务递归神经网络的电路包括被配置为执行递归神经网络的操作的递归神经网络单元("RNN单元")。也就是说,RNN单元被配置为执行由递归神经网络中的每个层限定的变换操作。该电路还包括状态寄存器。每一状态寄存器被配置为:(i)存储递归神经网络的内部状态数据,(ii)对应于神经网络已被训练为要进行的多个任务中的相应任务。状态数据是跨循环持续的数据,即,在处理序列中的一个输入之后保持的数据,用于处理序列中的下一个输入。例如,如果递归神经网络是长短期记忆(LSTM)网络,则对于网络中的每个LSTM单元,状态数据可以包括隐藏状态h和单元状态c。

电路接收输入序列的当前输入和序列识别数据。该电路基于序列识别数据来识别特定任务。电路从对应于特定任务的状态寄存器获得内部状态数据。它向RNN单元提供所获得的内部状态数据和当前输入,以使RNN单元处理该获得的内部状态数据和当前输入,从而生成用于所识别的任务的神经网络输出和更新的内部状态数据。该电路从RNN单元接收用于所识别的任务的神经网络输出和更新的内部状态数据。最后,电路将更新的内部状态数据写入与特定任务对应的状态寄存器。

根据下面描述的方法,上述电路可以用于更精确地预测计算系统中的内存访问。该电路可以:维护递归神经网络的内部状态数据,所述递归神经网络被训练为预测计算机程序在多个内存区域中的内存访问地址,所述内部状态数据指定所述多个内存区域中的每一个内存区域的单独的内部状态;接收输入序列的当前输入,该输入序列限定所述计算机程序的在先内存访问地址序列;识别由输入序列中的当前输入限定的内存访问地址的特定内存区域;从维护的数据中指定的内部状态中选择特定内存区域的内部状态;根据所选择的特定内存区域的内部状态,使用递归神经网络来处理输入序列中的当前输入,以:(i)生成输出,该输出限定了预测的内存访问地址的概率分布,该预测的内存访问地址是特定内存区域中的计算机程序的未来内存访问地址,以及(ii)更新所选择的特定内存区域中的内部状态;以及在所维护的所述数据中,将更新的所选择的所述内部状态与所述特定内存区域相关联。

在一些实施例中,一个或多个计算机可读存储介质通过指令被编码,当这些指令由一个或多个处理装置执行时,使所述一个或多个处理装置执行包括根据本文所述的任何实施例或方面的方法和步骤的操作。

在一些实施例中,系统包括一个或多个计算机和存储指令的一个或多个存有指令的存储装置,所述指令在由一个或多个计算机执行时,实现根据本文所述的任何实施例或方面的方法和步骤。

本说明书中描述的主题可以在特定实施例中实现,以便实现以下优点中的一个或多个。通过硬件实现递归神经网络,包括将递归神经网络状态存储在耦合到递归神经网络的状态寄存器中,递归神经网络可以快速地执行被称为多任务的不同的任务。更具体地,每个状态寄存器可以存储用于相应任务的状态。递归神经网络可以从第一状态寄存器获得第一状态以处理第一输入序列,并且在第一输入序列的处理完成之前,从第二状态寄存器获得第二状态以处理第二个不同的输入序列。例如,实现递归神经网络的单个硬件电路可以简单地通过从相应的状态寄存器获得对应于这些任务之一的状态来预测内存访问、缓存丢失和分支。在状态寄存器中存储状态数据减少了RNN在每个时间步长中必须计算的顺序依赖性的数量,并且减少了输入序列的长度的总延迟。

本说明书还描述了如何根据潜在因素对输入序列进行分类和分解。在预取数据时,通过潜在因素分解的一个示例是,在内存的不同区域中分离内存访问地址的交错流。这些区域中的每一个可以具有不同的内存访问模式,如果在使用流作为递归神经网络的输入之间将流分开,则机器学习模型可以更有效地学习。在预取数据时通过潜在因素分解的另一个示例是,通过引起内存访问的数据结构来分开内存访问的流。同样,这样做可以使得机器学习模型更有效地学习。

本说明书主题的一个或多个实施例的细节在附图和以下描述中阐述。从说明书,附图和权利要求书中,主题的其它特征,方面和优点将变得显而易见。

附图说明

图1是在硬件中实现递归神经网络的示意图。

图2是具有状态寄存器和多路复用器的递归神经网络系统的示意图。

图3是使用硬件电路处理多任务递归神经网络的示例性过程的流程图。

图4是被配置成从内存预取数据的计算系统的示意图。

图5是用于预测在计算系统中执行的计算机程序的未来内存访问地址的示例性流程图。

在各个附图中,相同的附图标记和标号表示相同的元件。

具体实施方式

本说明书描述了多任务递归神经网络,更具体地,描述了改善微处理器中的时间序列预测的多任务递归神经网络。

图1是在硬件中实现的递归神经网络100的图。递归神经网络通常包括输入层,一个或多个隐藏层和输出层。

递归神经网络的输入层通常被配置为接收输入序列(包括在从0到当前时间步长N的每个时间步长的相应输入),并且处理输入序列以生成该序列的特征表示。

递归神经网络的隐藏层是递归层,这意味着它们在一系列的输入之间保持状态,并且将当前状态更新作为生成当前时间步长的输出的一部分。传统的递归神经网络具有计算该层的输出和下一状态的隐藏层,其中下一状态基于前一状态和当前输入。该状态跨循环维持,并且该状态捕获输入序列的相关性。

一种特定类型的递归神经网络是长短期记忆(LSTM,Long Short-Term Memory)网络。LSTM网络中的隐藏层包括在输入序列中的每个输入的一个LSTM单元。每个LSTM单元向自己层中的另一个LSTM单元提供输出,并向下一个隐藏层或输出层中的LSTM单元提供输出。每个LSTM单元包括隐藏状态h,单元状态c,输入门i,遗忘门f和输出门o。三个门中的每一个可以被认为是计算加权和的激活的独立的神经元。直观地,输入门控制新值流入所述单元的程度,遗忘门控制值保留在所述单元中的程度,而输出门控制所述单元中的值用于计算LSTM单元的输出激活的程度。换句话说,这些门控制LSTM单元"记住"什么,或它的状态如何受到在先状态的影响。

递归神经网络的输出层通常被配置为在每个时间步长中,从上一隐藏层接收输入并生成输出,例如预测。输出层可以是soft-max层,逻辑层,线性层等。Soft-max输出层在时间步长的可能的输出上生成离散概率分布。也就是说,每个可能的输出与离散的分数相关联。逻辑输出层在时间步长的可能的输出上生成分布的参数,例如平均,对数刻度或混合权重。线性层将前一隐藏层的输出投影到适当的输出空间。在一些实现中,递归神经网络不具有输出层,即,最后的隐藏层的输出就是递归神经网络的输出。

用于递归神经网络的训练数据包括输入序列和该输入序列的标签。每个标签对应于在特定输入序列的特定时间步长期望的或预期的输出。训练递归神经网络包括设置网络的权重,例如输入层,RNN单元和输出层的权重,以最小化给定输入序列的实际输出和预期输出之间的差异。如果对于给定的输入序列在实际输出和预期输出之间存在差异,则可以例如使用常规的通过时间训练的反向传播技术来更新递归神经网络的权重。本领域已知的其它技术也可用于更新递归神经网络的权重。

递归神经网络100是递归神经网络的硬件实现,该递归神经网络在每个隐藏层中包括一个状态寄存器和一个RNN单元。在一些实现中,每个RNN单元是多个处理单元收缩阵列中的一个处理单元。每个处理单元在硬件中执行矩阵乘法和递归神经网络层的其它操作,例如,包括一组共同执行矩阵乘法的乘法累加器和其他任何提供门控函数并按元素执行乘法的电路。

在时间步长N,输入单元110接收输入序列中的输入N,并生成该输入的特征表示。RNN单元120和130使用递归神经网络的固定参数和存储在每个隐藏层的状态寄存器中的状态数据来处理特征表示。然后将RNN单元130的输出提供给输出单元140,输出单元140产生时间步长N+1的输出。RNN单元120和130还更新它们各自的状态寄存器中的状态数据以反映该输入N。该状态数据捕获所有在先输入和状态。

图2是以不同方式利用状态寄存器的递归神经网络系统200的示意图。状态寄存器210a-210n可以各自存储指示递归神经网络的不同内部状态的数据。每个内部状态以及因此每个状态寄存器对应于神经网络被训练后而执行的相应不同的任务。举例来说,第一状态寄存器可存储指示对应于预测内存访问地址(即,加载和存储地址)的内部状态的数据,而第二状态寄存器可存储指示对应于预测计算机程序分支的内部状态的数据。同时,其它状态寄存器可存储例如指示对应于预测未来程序指令或缓存丢失的内部状态的数据。

作为多路复用器的RNN选择器220可以基于序列识别数据来选择递归神经网络在特定时间使用的特定内部状态。标识数据序列指定应该被加载到RNN计算单元230中的状态寄存器,并因此指定了应该被加载到RNN计算单元230中的内部状态。序列识别数据可以基于指定RNN计算单元230应当执行的特定任务的用户输入,例如,预测内存访问地址(与分支,程序指令或缓存丢失相反)。或者,序列识别数据可以基于对当前输入的观察。例如,序列识别数据可以基于当前输入是缓存地址的观察。在这种情况下,标识数据序列可以指定对应于预测缓存丢失的任务的内部状态应该被加载到RNN计算单元230中。

递归神经网络系统200还包括加载有一组固定参数的输入单元240。输入单元240可以接收当前输入,生成当前输入的特征表示,并将该特征表示提供给RNN计算单元230。

使用保持在RNN计算单元230中的所选择的状态,特征表示以及一组固定权重,RNN计算单元230可以生成预测和任务的下一状态。如果递归神经网络具有多个隐藏层,则RNN计算单元230可以向另一个RNN计算单元提供所生成的预测,而该另一个RNN计算单元具有它自己的状态寄存器和RNN选择器。此外,递归神经网络系统可以可选地包括输出单元。同时,RNN计算单元230可以将任务的下一状态提供给合适的状态寄存器210a-210n,从而覆盖该寄存器的在先状态。像上述那样训练多任务递归神经网络需要训练递归神经网络来执行每个任务。

或者,状态寄存器210a-210n可以各自存储数据,该数据对于被训练为预测计算机程序在多个内存区域中的内存访问地址的递归神经网络,指定多个内存区域中的每一个内存区域的单独的内部状态。以这种方法通过内存区域来分解内存访问可以提高内存访问预测,因为单个内存区域中的内存访问通常遵循比跨越两个或更多个内存区域的内存访问更可预测的模式。也就是说,当RNN计算单元230在特定内存区域而不是跨越整个地址空间预测内存访问时,RNN计算单元230生成更精确的预测。

图3是用于处理多任务递归神经网络的示例性过程300的流程图。过程300由合适的已编程的电路执行。该电路包括RNN单元,该RNN单元被配置为执行递归神经网络,多个状态寄存器和其它电路的操作。每个状态寄存器(i)被配置为存储用于递归神经网络的内部状态数据,和(ii)每个状态寄存器对应于神经网络被训练后而执行的多个任务中的相应任务。

该电路接收输入序列中的当前输入和序列识别数据(310)。输入序列包括在多个时间步长的每一个处的相应输入。该时间步长可以是连续的,也可以不是连续的。序列识别数据指定任务(并因此指定状态寄存器),通过该任务将内部状态数据加载到RNN单元中。

该电路基于序列识别数据来识别要执行的特定任务(320)。序列识别数据可以基于指定RNN单元应当执行的特定任务的用户输入,例如,预测内存访问地址(与分支,程序指令或内存丢失相反)。或者,序列识别数据可以基于对当前输入的观察。比如说,序列识别数据可以基于当前输入是缓存地址的观察。在这样的情况下,序列识别数据可以应将指示相应于预测缓存丢失的任务的内部状态加载到RNN单元中。

该电路从对应于所识别的任务的状态寄存器获得内部状态数据(330)。该电路向RNN单元提供所获得的内部状态数据和当前输入,以使RNN单元处理所获得的内部状态数据和当前输入,从而生成神经网络输出和所识别的任务的更新的内部状态数据(340)。

该电路从RNN单元接收神经网络的输出和所识别的任务的更新的内部状态数据(350)。最后,该电路将更新后的内部状态数据写入与所识别的任务相对应的状态寄存器中(360)。

参照图1和图2描述的示例性的递归神经网络以及参照图3描述的示例性的过程可用于预测计算系统中的未来内存访问地址。

计算机程序使得计算系统对存储在计算系统中的各个内存位置中的数据进行操作。通常,计算系统必须在对数据进行操作之前,从主内存或本地缓存加载数据到本地寄存器中。但是,通常由于主内存很大并且在物理上远离本地寄存器,从主内存加载数据特别慢。因此,常规地引起计算系统从主内存中检索数据的计算机程序比不从主内存中检索数据的计算机程序执行得更慢。通过在被需要之前,从主内存预取数据并将其保存在更快的本地缓存中,计算系统可以减少计算机程序的运行时间。递归神经网络可用于预测应该被预取的数据。

图4被配置为从内存预取数据并将该数据存储在本地缓存中的计算系统400的示意图。计算系统400可使用一个或多个(未图示)的处理器来执行计算机程序指令。特别地,计算系统400可以将计算机程序指令存储在指令内存中,然后以由计算机程序限定的顺序执行这些指令。

计算系统400具有程序计数器410。程序计数器,即指令地址寄存器,是存储指向要执行的下一个计算机程序指令的值的寄存器。也就是说,程序计数器410存储内存地址,在该内存地址中存储要执行的下一个计算机程序指令。

当指令周期开始时,计算系统400从程序计数器410指定的地址检索下一个计算机程序指令。存储在程序计数器410中的地址对应于指令内存422中的一个位置,该位置是内存420中的内存块。

典型地,给定的计算机程序指令指定操作(例如加载,存储,添加,减去,异或,分支等)、一个或多个源寄存器、以及目的地寄存器。计算系统400对存储在源寄存器中的数据执行指定的操作,并将结果存储在目的寄存器中。例如,计算机程序指令可以指定应当将存储在寄存器A中的数据添加到存储在寄存器B中的数据,并且应当将结果存储在寄存器C中。

通常,计算系统具有有限数量的本地寄存器,因此仅当需要时才将待操作的数据加载到那些本地寄存器中。但是从内存中获取数据是耗时的,并且减慢了计算机程序的执行。该问题的一个解决方案是预测将被操作的数据,预取该数据,并将其存储在诸如本地缓存430之类的较快的本地内存中。从本地缓存中获取数据比从主内存获取数据快,因为本地缓存通常在物理上比主内存更接近系统且比主内存更小。

但是因为本地缓存也具有有限的大小,所以计算系统可以在任何给定的时间内在本地缓存中仅存储主内存的小子集。因此,计算系统400可以有利地预测未来内存访问地址的子集,并且在本地缓存中存储来自那些地址的数据。如果计算系统做出准确的预测,则计算系统可以更快地执行计算机程序指令。

计算系统400的预测子系统440被配置为接收在先程序计数器地址和相应的内存访问地址的序列,并预测未来内存访问地址。预测子系统40包括神经网络子系统442。神经网络子系统442可以是参考图2描述的递归神经网络系统。除了参照图2描述的组件之外,神经网络子系统442还包括内存区域分类器444,该内存区域分类器444被配置成从多个内存区域中确定每个内存访问的特定内存区域。通过内存区域分隔内存访问可改进内存访问预测,因为单个内存区域内的内存访问通常遵循比跨越两个或更多个内存区域的内存访问更可预测的模式。将内存划分区域的重要性将参考图5更详细地描述。

预测子系统440可以在执行计算机程序的同一计算机上实现,也可在不同的计算机上实现。

在预测子系统440预测特定内存访问地址之后,计算系统400从该地址预取数据并将其存储在本地缓存430中。当执行计算机程序时,预测子系统440继续预测内存访问地址,且计算系统400继续从那些地址预取数据。从本地缓存430获取数据比从数据内存424获取数据快。这导致计算系统400更快地执行计算机程序。

尽管本说明书主要描述了数据预取,但是这里描述的递归神经网络系统可以被配置成在微处理器中进行其它时间序列预测。例如,系统可用于从指令内存预取指令。

该系统还可用于优化内存消歧。内存消歧是由执行无序内存访问指令的计算系统所采用的一组技术。所述技术检测或预测内存操作之间的依赖性以增加内存访问效率和速度。

本文所述的递归神经网络系统也可用于优化缓存替换策略。因为缓存具有有限的大小,所以当计算系统将数据放入缓存中时,它通常必须从缓存中去除相应量的数据。递归神经网络系统可以预测要从缓存中移除的最佳数据,例如,近期最不可能被计算系统使用的数据。或者,递归神经网络系统预测近期最可能被使用的数据并确保该数据保留在缓存中。例如,在"最近最少使用的"缓存中,即,在具有指定应该移除缓存中最近最少使用的数据以支持新数据的替换策略的缓存中,系统可以更新预测在近期将被使用的数据的"年龄位"。更新年龄位确保数据不会被新数据替换。

图5是用于预测在计算系统中执行的计算机程序的未来内存访问地址的示例性过程500的流程图。参照图2描述的递归神经网络系统可以执行示例性过程500。或者,过程500可以用软件来实现。为方便起见,过程500将被描述为由一个或多个位置中的一个或多个计算机的适当编程的系统执行。

该系统维护数据,该数据对于被训练为预测计算机程序在若干内存区域中的内存访问地址的递归神经网络,指定若干内存区域中的每一个内存区域的单独的内部状态(510)。

该系统接收限定计算机程序的在先内存访问地址序列的输入序列中的当前输入(520)。输入序列可以是在先程序计数器地址的序列和相应的增量值。每一增量值限定相应第一内存访问地址与相应第二内存访问地址之间的差异。第一内存访问地址是当执行由相应程序计数器地址所指向的指令时被访问的内存地址。例如,特定程序计数器地址可指向存储指令的内存地址,所述指令在被执行时从内存获取数据。在这种情况下,该数据的内存地址是第一内存访问地址。第二内存访问地址是在访问第一内存地址之前被访问的内存地址。每一在先内存访问地址是计算系统的主内存中的若干内存区域中的一个内存区域的地址。系统可通过识别内存访问所接触的内存页面来确定内存区域。或者,系统可通过将聚类算法(例如,k均值聚类算法)应用于内存访问来确定内存区域。

在一些实现中,系统生成当前输入的输入表示。例如,在当前输入是程序计数器地址和增量值的实现中,系统然后可以将程序计数器地址和增量值映射到高维度的空间中的数字嵌入,其用作输入表示。嵌入是高维度的实值向量。

系统可以使用由已训练的神经网络生成的查找表来生成嵌入。例如,程序计数器地址和增量值对可以被映射到索引,该索引可以被用于在查找表中查找嵌入。或者,系统可以通过直接向已训练的神经网络提供程序计数器地址和增量值来生成嵌入。

系统识别由输入序列中的当前输入所限定的内存访问地址的特定内存区域(530)。

系统从维护数据中指定的内部状态中选择特定内存区域的内部状态(540)。

根据为特定内存区域选择的内部状态,所述系统使用所述递归神经网络来处理所述输入序列中的当前输入,从而生成输出并更新所选择的内部状态(550)。该输出限定预测的内存访问地址的概率分布。预测的内存访问地址是计算机程序在特定内存区域中的未来内存访问地址。

系统可以设置阈值标准,并确定分布中的任何概率是否满足该阈值标准。例如,阈值标准可以是0.5的概率,即,特定内存地址有50%的概率将成为未来内存访问地址,即,计算机程序将使计算系统访问内存地址中的数据。系统可以动态调整阈值标准。例如,当内存带宽利用率高时,系统可以设置较高的阈值,而当内存带宽利用率低时,系统可以设置较低的阈值。

响应于确定概率分布中的特定概率确实满足阈值标准,系统可以从与该概率相关联的内存地址获取数据,并将该数据存储在本地缓存中。在一些情况下,系统可以确定多个满足阈值标准的概率,并且从与这些概率相关联的多个内存地址中预取数据。这样做增加了预取正确数据的可能性。这减少了在计算系统上执行的计算机程序的运行时间。

所述系统通常被配置为预测在已识别的内存区域中的下一内存访问地址。然而,可以训练递归神经网络来预测未来更远的内存访问地址。例如,可以训练递归神经网络来预测所识别的内存区域中的接下来第二个(N+2),接下来第四个(N+4)或接下来第八个(N+8)内存访问地址。例如,通过向递归神经网络提供增量值,递归神经网络可以被训练为预测接下来第二个内存访问地址,使用在时间步长N处的内存访问地址和在时间步长N-2处的内存访问地址来计算每个增量值,这与顺序内存访问地址相反。

在一些实现中,代替如上所述的预取数据,系统可以将取指令插入到计算机程序中。取指令的执行使得从与满足阈值标准的概率相关联的未来内存地址获取数据。必须在计算机程序的未来指令之前将取指令插入到计算机程序中,否则将导致从内存中获取数据。以这种方式,当执行未来指令时,未来指令需要的数据将已经在本地缓存中。然后,未来指令的执行将导致缓存命中而不是缓存丢失,并且系统将不需要从内存获取数据。这使得计算机程序运行更快,因为从内存中获取数据是费时的。如果满足阈值标准的概率多于一个,则系统可以将多于一个的取指令插入到计算机程序中。

在一些实现中,系统向递归神经网络提供附加特征。例如,系统可以提供最近的内存访问是加载还是存储的指示。该系统还可以向递归神经网络提供当前缓存的占用情况。如上所述,当前缓存的占用情况可以影响阈值标准。

最后,系统在所维护数据中将更新的所选择的内部状态与特定内存区域相关联(560)。

在本说明书中描述的主题和功能性操作的实施例可以在数字电子电路中,在明确的包含在计算机软件或固件中,在计算机硬件中实现,包括在本说明书中公开的结构及其结构等价物,或者在它们中的一个或多个的组合中实现。本说明书中描述的主题的实施例可以被实现为一个或多个计算机程序,即,在有形的非暂时性存储介质上编码的计算机程序指令的一个或多个模块,用于由数据处理装置执行或控制数据处理装置的操作。计算机存储介质可以是机器可读存储装置,机器可读存储衬底,随机或串行访问内存装置,或它们中的一个或多个的组合。可替换地或附加地,程序指令可以被编码在人工生成的传播信号上,例如,机器生成的电,光或电磁信号,该信号被生成以编码用于传输到适当的接收机装置的信息,以便由数据处理装置执行。

术语"数据处理装置"是指数据处理硬件,并且包括用于处理数据的所有类型的设备,装置和机器,包括例如可编程处理器,计算机,或多处理器或计算机。该装置还可以是或进一步包括现成的或定制的并行处理子系统,例如GPU或其它类型的专用处理子系统。该装置还可以是或进一步包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,该装置还可以可选地包括为计算机程序创建执行环境的代码,例如构成处理器固件,协议栈,数据库管理系统,操作系统或它们中的一个或多个的组合的代码。

还可以被称为或描述为程序,软件,软件应用,应用,模块,软件模块,脚本或代码的计算机程序可以以任何形式的编程语言来编写,包括编译或解释语言,或声明性语言或过程语言,并且可以以任何形式来部署,包括作为独立程序或作为模块。适用于计算环境的组件,子例程或其它单元。程序可以但不必须对应于文件系统中的文件。程序可以存储在保存其它程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本,存储在专用于所述程序的单个文件中,或者存储在多个相互协调的文件中,例如,存储在一个或多个模块,子程序或代码部分的文件中。计算机程序可被部署为在一个计算机上或在多个计算机上执行,多个计算机位于一个站点或分布在多个站点上、并通过数据通信网络互连。

如在本说明书中所使用的,"引擎"或"软件引擎"是指提供不同于输入的输出的软件实现的输入/输出系统。引擎可以是编码的功能块,例如库,平台,软件开发工具包("SDK")或对象。每个引擎可以在任何适当类型的计算装置上实现,例如,服务器,移动电话,平板计算机,笔记本计算机,音乐播放器,电子书阅读器,膝上型或台式计算机,PDA,智能电话,或包括一个或多个处理器和计算机可读介质的其它固定或便携式装置。另外,两个或更多个引擎可以在同一计算装置上实现,或者在不同的计算装置上实现。

本说明书中描述的过程和逻辑流程可以由一个或多个可编程计算机来执行,所述可编程计算机执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能。所述过程和逻辑流程也可由专用逻辑电路(例如,FPGA或ASIC)或由专用逻辑电路与一个或多个经编程计算机的组合来执行。

适于执行计算机程序的计算机可以基于通用或专用微处理器或两者,或任何其它类型的中央处理单元。通常,中央处理单元将从只读内存或随机存取内存或两者接收指令和数据。计算机的基本元件是用于执行或执行指令的中央处理单元以及用于存储指令和数据的一个或多个内存装置。中央处理单元和内存可以由专用逻辑电路补充或结合在专用逻辑电路中。通常,计算机还将包括或被可操作地耦合以从一个或多个大容量存储装置接收数据或向一个或多个大容量存储装置传送数据,所述大容量存储装置用于存储数据,例如磁盘,磁光盘或光盘。然而,计算机不必具有这样的装置。此外,计算机可以嵌入在另一装置中,例如移动电话,个人数字助理(PDA),移动音频或视频播放器,游戏控制台,全球定位系统(GPS)接收器,或便携式存储装置,例如通用串行总线(USB)闪存驱动器,仅举几个例子。

适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性内存,介质和内存装置,包括例如半导体内存装置,例如EPROM,EEPROM和闪存装置;磁盘,例如内部硬盘或可移动磁盘;磁光盘;CD-ROM和DVD-ROM盘。

为了提供与用户的交互,本说明书中描述的主题的实施例可以在计算机上实现,该计算机具有用于向用户显示信息的显示装置,例如CRT(阴极射线管)或LCD(液晶显示器)监视器,以及键盘和定点装置,例如鼠标,跟踪球,或存在敏感显示器,或用户可以通过其向计算机提供输入的其它表面。也可以使用其他类型的装置来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈,听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音,语音或触觉输入。此外,计算机可以通过向用户使用的装置发送文档和从用户使用的装置接收文档来与用户交互;例如,通过响应于从web浏览器接收的请求向用户装置上的web浏览器发送网页。此外,计算机可以通过向个人装置(例如,智能电话)发送文本消息或其它形式的消息,运行消息传送应用程序,以及接收来自用户的回应消息来与用户交互。

虽然本说明书包含许多具体的实现细节,但这些不应被解释为对任何发明的范围或所要求保护的范围的限制,而应被解释为对特定发明的特定实施例可能特定的特征的描述。本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独地或以任何合适的子组合来实现。此外,尽管上面可以将特征描述为在某些组合中起作用,并且甚至最初如此要求保护,但是在一些情况下,可以从组合中切下要求保护的组合的一个或多个特征,并且要求保护的组合可以针对子组合或子组合的变型。

类似地,虽然在附图中以特定顺序描述了操作,但这不应被理解为要求以所示的特定顺序或以顺序的顺序执行这些操作,或者要求执行所有示出的操作以获得期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为需要所有实施例中的这种分离,并且应当理解,所描述的程序组件和系统通常可以被集成到单个软件产品中或者被封装到多个软件产品中。

已经描述了本主题的特定实施例。其它实施例在所附权利要求的范围内。例如,权利要求中所述的动作可以以不同的顺序执行,并且仍然获得期望的结果。作为一个实例,附图中所示的过程不一定需要所示的特定顺序或顺序,以获得所需的结果。在某些情况下,多任务和并行处理可能是有利的。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号