非易失性存储存储器中的处理器的制作方法

文档序号:14912906发布日期:2018-07-10 23:54
在消费者、工业、军事和航空领域中的所有现有设备中使用的存储器设备可以由非易失性存储器或易失性存储器构成。非易失性存储器和易失性存储器之间的主要区别在于非易失性存储器能够在不需要持久性电源的情况下保留数据。典型地,数据可以从非易失性存储器被读取、传递和暂时存储在易失性存储器中,随后使用处理单元进行操作,并将结果存储回非易失性存储器中。通常,可能期望增加上述操作的总体速度。然而,将数据从非易失性存储器传递到易失性存储器用于数据操作可能受到硬件带宽的速度的限制(例如,冯诺依曼瓶颈(VonNeumannbottleneck)),其中例如指令获取和数据操作不能在共享存储器总线上同时发生)。因此,不断需要一个新的处理单元和存储器架构来克服这个限制。技术实现要素:在一个示例中,计算系统包括设备,该设备包括:被划分为多个可选择的位置的非易失性存储器,非易失性存储器中的每个比特被配置为具有被独立地编程和擦除的对应的数据,其中可选择的位置被分组成多个数据线;一个或多个处理单元,其耦合到非易失性存储器,该处理单元中的每一个与多个数据线中的数据线相关联,一个或多个处理单元包括一个或多个可重新配置的处理单元,该一个或多个可重新配置的处理单元被配置为:基于一个或多个指令集,操纵该多个数据线中的相关联的数据线中的数据以生成结果,该结果被存储在被保留以存储操纵的结果的相关联的数据线的可选择的位置中;确定指令集中的哪些指令集被一个或多个处理单元最频繁用来操纵数据;以及将一个或多个可重新配置的处理单元重新配置为使用所确定的最频繁使用的指令集来操纵数据。在另一示例中,一种方法包括:由耦合到非易失性存储器的一个或多个处理单元并基于一个或多个指令集和多个数据线中的相关联的数据线中的数据来计算对应的结果,其中该非易失性存储器被划分为多个可选择的位置,该可选择的位置被分组成多个数据线,其中非易失性存储器中的每个比特被配置为具有被独立地编程和擦除的对应的数据,其中处理单元中的每一个处理单元与多个数据线中的数据线相关联,并且其中该一个或多个处理单元包括一个或多个可重新配置的处理单元;基于对应的结果,选择性地改变被保留以存储对应的结果的相关联的数据线的选择的位置中的数据;维护队列,该队列包括对于相应的指令集的、指示相应的指令集被用于计算结果的相对频率的相应的使用值;从具有最高的相应的使用值的队列中选择一组指令集作为用于重新配置一个或多个可重新配置的处理单元的最频繁使用的指令集;以及将一个或多个可重新配置的处理单元重新配置为使用所选择的一组指令集来计算结果。在另一示例中,一种设备包括:用于基于一个或多个指令集以及非易失性存储器的多个数据线的相关联的数据线中的数据来计算对应的结果的装置,该非易失性存储器被划分为多个可选择的位置,该可选择的位置被分组成多个数据线,其中非易失性存储器中的每个比特被配置为具有被独立地编程和擦除的对应的数据,并且其中该用于计算的装置包括一个或多个可重新配置的处理单元;用于基于对应的结果、选择性地改变被保留以存储对应的结果的相关联的数据线的选择的位置中的数据的装置;用于维护队列的装置,该队列包括对于相应的指令集的、指示相应的指令集被用于计算结果的相对频率的相应的使用值;用于从具有最高的相应的使用值的队列中选择一组指令集作为用于重新配置一个或多个可重新配置的处理单元的最频繁使用的指令集的装置;以及用于将一个或多个可重新配置的处理单元重新配置为使用所选择的一组指令集来计算结果的装置。本公开中描述的技术的一个或多个示例的细节在附图和下面的描述中阐述。这些技术的其它特征对象和优点将从说明书和附图以及权利要求书中变得显而易见。附图说明图1是示出根据本公开的一个或多个技术的包括多个在非易失性存储存储器中的处理器(PiNVSM)设备的示例性的系统的概念和示意性框图。图2是示出根据本公开的一个或多个技术的示例性的数据处理单元(DataProcessingUnit,DPU)的进一步细节的框图。图3是示出根据本公开的一个或多个技术的示例性的数据处理单元(DPU)的进一步细节的框图。图4是示出根据本公开的一个或多个技术的PiNVSM设备的示例性的存储空间的概念图。图5是示出根据本公开的一个或多个技术的可以被包括在PiNVSM设备中的示例性的数据线的概念图。图6是示出根据本公开的一个或多个技术的可以被包括在PiNVSM设备中的示例性的代码线的概念图。图7是示出根据本公开的一个或多个技术的被包括PiNVSM设备中的数据线的示例性的布置的概念图。图8是示出根据本公开的一个或多个技术的与PiNVSM设备的数据线一起的示例性的代码线的概念图。图9是示出根据本公开的一个或多个技术的与PiNVSM设备的数据线一起的示例性的代码线的概念图。图10是示出根据本公开的一个或多个技术的可以使用命令偏移(shift)方案来执行的示例性的代码线的概念图。图11是示出根据本公开的一个或多个技术的包括跳转(jump)的示例性的代码线的概念图。图12是示出根据本公开的一个或多个技术的非易失性存储装置设备的优化的数据线的概念图。图13是示出根据本公开的一个或多个技术的非易失性存储装置设备的示例存储空间的概念图。图14是示出根据本公开的一个或多个技术的可以由管理单元维护的示例性的队列的概念图。图15是示出根据本公开的一个或多个技术在非易失性存储设备中维护指令集使用频率的队列的示例性的技术的流程图。图16是示出根据本公开的一个或多个技术的DPU中的队列维护的概念图。图17是示出根据本公开的一个或多个技术的非易失性存储设备的数据线的优化的概念图。图18是示出根据本公开的一个或多个技术的由PiNVSM设备存储的数据类型的概念图。图19是示出根据本公开的一个或多个技术的操纵PiNVSM设备中的数据的示例性的技术的流程图。图20是示出根据本公开的一个或多个技术的操纵PiNVSM设备中的数据的示例性的技术的流程图。具体实施方式根据本公开的一个或多个技术,提出了一种计算机架构,其中处理单元包括持久性数据存储装置并且可以就地处理数据。例如,芯片上的在非易失性存储存储器设备中的处理器(processorinnon-volatilestoragememory,PiNVSM)可以能够持久性地存储大量数据,并就地处理该持久性地存储的数据。由于一个或多个处理单元和NVSM都被包括在相同的芯片上,所以可以减小一个或多个处理单元可以访问由NVSM存储的数据的速率(即,延迟)。为了说明的目的,PiNVSM设备可以是单个半导体芯片,并且可以包括连接到非易失性存储器的相关联的存储器子阵列的数据处理单元。PiNVSM系统可以包括经由各种通信总线或信道(有线或无线)以各种配置彼此连接的多个PiNVSM设备。以这种方式,PiNVSM设备可以避免诸如冯诺依曼瓶颈的存储器带宽限制问题。使用数学计算功能和/或逻辑功能的数学计算操作和/或逻辑操作可以由PiNVSM设备使用一个或多个处理单元执行。在一些示例中,PiNVSM设备包括一个或多个运算逻辑单元(ArithmeticLogicUnit,ALU)。如下面更详细地讨论的,ALU可以每一个被配置为执行整数算术和逻辑运算(例如,AND、NAND、OR、NOR、XOR、NOT)。在一些示例中,PiNVSM设备可以包括一个或多个浮点单元(FloatingPointUnit,FPU),浮点单元可以每一个被配置为执行非整数计算,诸如可以生成分数或者“浮点”数的除法操作。在一些示例中,PiNVSM设备可以包括一个或多个处理单元(ProcessingUnit,PU)和一个或多个现场可编程门阵列(Field-ProgrammableGateArray,FPGA)。在一些实施例中,处理单元可以在硬件中预先制造以执行特定的计算或数据操纵。例如,处理单元可以仅用特定的电路逻辑(诸如专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC))来预先制造以执行特定计算。可替换地,处理单元可以是能够在现场编程为基于执行代码执行计算或数据操纵的可编程处理单元。例如,这样的处理单元可以包括FPGA、可编程ALU等。在NVSM中,数据的编程和擦除可以在可选择的位置级别处被执行。例如,NVSM可以被划分为多个可选择的位置,并且处理单元可以能够在不改变存储在多个可选择的位置中的其它可选择位置的数据情况下,在多个可选择的位置的特定的可选择的位置编程数据或擦除数据。NVSM的一些示例包括但不一定限于磁阻随机存取存储器(MagnetoresistiveRandom-AccessMemory,MRAM)、铁电随机存取存储器(FerroelectricRandom-AccessMemory,FeRAM)、NRAM、电阻随机存取存储器(ResistiveRandom-AccessMemory,ReRAM)、相变存储器(PhaseChangeMemory,PCM)、Mott存储器等。在一些示例中,可选择的位置可以是可寻址的位置。例如,可选择的位置中的每一个可以具有唯一的数字地址,并且可以经由特定的可寻址位置的唯一地址访问/读取/写入在特定的可寻址位置处的数据。在一些示例中,可以经由访问系统访问/读取/写入在特定的可寻址位置处的数据。在操作中,PiNVSM设备的一个或多个处理单元可以基于PiNVSM设备的非易失性存储器的选择的位置中的数据执行数据操纵、生成数据操纵的对应的结果、以及基于对应的结果使非易失性存储器选择性地编程和擦除被保留以存储数据操纵的结果的可选择的位置中的数据。由于数据的编程和擦除可以在可选择的位置级别执行,所以一个或多个处理单元可以使得非易失性存储器选择性地编程和擦除被保留以存储数据操纵的结果的可选择位置中的数据,而不改变被存储在除了被保留以存储数据操纵的结果的可选择的位置处之外的可选择的位置上的数据。如以上所讨论的,PiNVSM设备可以包括一个或多个处理单元。例如,PiNVSM设备可以包括可以执行任意操作的一个或多个专用处理单元。专用处理单元的示例包括但不一定限于运算逻辑单元(ALU)、处理单元(PU)、现场可编程门阵列(FPGA)、自定义逻辑、和浮点单元(FPU)。在一些示例中,非易失性存储器空间可以在数据线和代码线之间共享。通常,数据线可以包括用户数据。代码线可以包括能被用于操纵数据线的指令集(即,软件原语、执行代码)。数据线中的每一个可以包括一个或多个可选择的位置并可以与处理单元相关联。换句话说,非易失性存储器的可选择的位置可以被分组为多个数据线。在一些示例中,在任何给定时间,特定的可选择的位置可以仅仅被分组为单个的数据线。因而,在一些示例中,PiNVSM设备可以在可选择的位置和数据线(或代码线)之间具有唯一的映射,使得单个的可选择的位置不被同时包括在两个数据线(或两个代码线)中。在一些示例中,将可选择的位置分组成数据线可以随时间调整。例如,在第一时间,多个可选择的位置的第一组可选择的位置可以与特定数据线相关联,该特定数据线与特定的处理单元相关联。在第二时间,多个可选择的位置中的第二组可选择的位置可以与该特定的数据线相关联。第二组可选择的位置可以不同于第一组可选择的位置(即,包括不被包括在第一组中的可选择的位置和/或省略被包括在第一组中的可选择的位置)。在操作中,指令集可以被用于通过变化频率操作数据线。例如,第一指令集可以被用于以第二指令集操作数据线的频率的两倍来操纵数据线。因而,PiNVSM设备可能希望能够基于最频繁使用的指令集、以比不频繁使用的指令集更高的速率和/或更低的功耗来操纵数据。此外,根据本公开中所描述的技术的各个方面,PiNVSM设备可以包括被编程为使用最频繁使用的指令集来操纵数据的一个或多个可编程处理单元。例如,在特定指令集是最频繁使用的指令集的情况下,PiNVSM设备可以编程一个或多个可编程处理单元以使用特定指令集操纵数据。在操作期间,一个或多个可编程处理单元可以使用特定指令集来操纵数据。以这种方式,非易失性存储设备可以能够基于最频繁使用的指令集、以比不频繁使用的指令集更高的速率和/或更低的功耗来操纵数据。指令集的使用频率可以随时间的推移不一致。例如,第一指令集可以在第一时间具有比第二指令集更高的使用频率,而第二指令集可以在第二时间具有比第一指令集更高的使用频率。根据本公开的一个或多个技术,一个或多个可编程处理单元的编程可以是自适应的。例如,PiNVSM设备可以监视多个指令集的使用频率,并且周期性地重新编程一个或多个可编程处理单元以使用当前最频繁使用的指令集来操纵数据。以这种方式,PiNVSM设备可以自优化。图1是示出根据本公开的一个或多个技术的包括多个在非易失性存储存储器中的处理器(PiNVSM)设备的示例性的系统的概念和示意性框图。为了说明的目的,PiNVSM设备可以是单个半导体芯片,并且可以包括连接到非易失性存储器的相关联的存储器子阵列的数据处理单元。如图1所示,计算系统5可以包括一个或多个数据处理单元(DPU)38A-38D(共同地,“DPU38”)、一个或多个路由器40A-40I(共同地,“路由器40”)、输入接口42和输出接口44。在一些示例中,计算系统5可以是独立的计算系统,因为单独的主机设备可能不存在。例如,计算系统5可能不遵循传统的冯·诺依曼架构。输入接口42可以被配置为获得输入数据。例如,输入接口42可以获得数字音频数据、数字视频数据、文本数据(即,经由键盘输入)、位置数据(即,经由鼠标输入)、和任何其它类型的数字数据。输出接口44可以被配置为提供输出数据。例如,输出接口44可以输出数字音频数据、数字视频数据、一个或多个管理行为以及任何其它类型的输出数据。路由器40可以每个被配置为在计算系统5周围路由数据。在一些示例中,路由器40可以形成片上网络(NetworkonChip,NoC)架构,诸如于2015年10月26日提交的、美国专利申请号为:14/922547、名称为“FabricinterconnectionformemoryBanksbasedonnetwork-on-chipmethodology(基于片上网络方法的存储器组的结构互连)”中所讨论的NoC架构、和/或于2015年10月27日提交的、美国专利申请号为:14/927670、名称为“Multilayer3DmemoryBasedonNetworkOn-ChipInterconnection(基于片上网络互连的多层3D存储器)”中所讨论的NoC架构。如图1中所示,路由器40可以经由电线、迹线、或任何其它导电装置来被互联。路由器40可以在计算系统5周围路由数据和/或指令。例如,路由器40可以实现在DPU38、输入接口42、和/或输出接口44当中的数据和/或指令的传输/传递/交换。通过启用NoC架构,路由器40可以实现计算系统5的在尺寸上的减小(即,可以消除如组件之间的单独的轨迹)。DPU38可以每个被配置为存储和处理数据。DPU38可以包括多个PiNVSM设备,因为每个DPU38可以包括一个或多个处理单元和非易失性存储器阵列。为了说明的目的,PiNVSM设备可以是单个半导体芯片,并且可以包括连接到非易失性存储器的相关联的存储器子阵列的数据处理单元。以下参考图2讨论DPU38中的示例性DPU的更多细节。在操作中,DPU38的处理单元可以基于被包括在DPU38中的NVMA的选择的位置中的数据来执行数据操纵,以生成数据操纵的对应的结果。例如,被包括在DPU38中的处理单元中的每一个可以被配置为计算在相关联的数据线中的数据的结果。作为一个示例,被包括在DPU38中的DPU中的特定处理单元可以被配置为计算与特定处理单元相关联的数据线中的数据的结果。计算结果可以被存储在被保留用于结果的相关联的数据线中。用于计算的初始数据仅当专门打算用于覆写时被覆写。处理单元可以使被包括在DPU38中的NVMA基于对应的结果选择性地编程和擦除被保留以存储数据操纵的结果的可选择的位置中的数据。例如,被包括在DPU38中的处理单元中的每一个可以被配置为基于对应的结果,将数据选择性地写入相关联的数据线中的结果部分中。作为一个示例,被包括在DPU38中的DPU中的特定处理单元可以被配置为将结果存储在与特定处理单元相关联的数据线的结果部分中。在一些示例中,处理单元可以基于诸如执行代码的指令集执行数据操纵。如以下所讨论的,在一些示例中,由DPU38将指令集存储为代码线,诸如图3中的代码线12A。在一些示例中,代码线中的每一个中的执行代码可以包含指令序列。在一些示例中,管理单元可以被配置为获得指令集。如以下所讨论的,由于指令集可以被用于以变化频率操纵数据线,所以可能希望DPU38能够基于最频繁使用的指令集、以比不频繁使用的指令集更高的速率和/或更低的功耗来操纵数据。根据本公开的一个或多个技术,被包括在DPU38中的一个或多个可编程处理单元可以被编程为使用最频繁使用的指令集来操纵数据。可以被包括在DPU38中的可编程处理单元的示例包括但不限于FPGA、查找表、用于矢量处理的矢量、ASIC、以一种特定方式(例如,可能存在多个块,并且编程包括激活执行编程功能的块以及关闭其它块的电源,即提高性能和控制功耗)来操纵数据的逻辑块(例如,简单加法器或高斯混合块、更多或更少的专门的块)、以及可以被编程或配置为以某种方式操纵数据的任何类似的结构。以这种方式,DPU38可以基于最频繁使用的指令集,以比不频繁使用的指令集更高的速率和/或更低的功耗来操纵数据。指令集的使用频率可以随时间的推移不一致。例如,第一指令集可以在第一时间具有比第二指令集更高的使用频率,而第二指令集可以在第二时间具有比第一指令集更高的使用频率。根据本公开的一个或多个技术,DPU38中的一个或多个可编程处理单元的编程可以是自适应的。例如,DPU38中的每一个的管理单元可以监视多个指令集的使用频率(即,DPU38多长时间使用指令集一次),并且周期性地重新编程一个或多个可编程处理单元以使用当前最频繁使用的指令集来操作数据。以这种方式,DPU38可以自优化。以下参考图12讨论优化的更多细节。在一些示例中,为了确定哪些指令集被最频繁地用于操纵数据,计算系统5可以维护队列(或者可以是有序队列或无序队列的多个队列),该队列包括对于相应的指令集的、指示相应的指令集被用于操纵数据的相对频率的相应的使用值。管理单元可以从具有最高的相应的使用值的队列中选择一组指令集作为用于对DPU38的一个或多个编程处理单元进行编程的最频繁使用的指令集。下面参考图13-17讨论队列的一个示例的进一步细节。在一些示例中,DPU38中的一个或多个专用处理单元中的专用处理单元基于特定指令集操纵数据所花费的时间可能比DPU38中的一个或多个可编程处理单元中的可编程处理单元基于相同的特定指令集操纵数据所花费的时间更长。在一些示例中,时间可以是非确定性的,并且可以在跨多个处理单元之间不同步,例如在全局异步本地同步(GloballyAsynchronousLocallySynchronous,GaLs)设备中。图2是示出根据本公开的一个或多个技术的示例性的数据处理单元(DataProcessingUnit,DPU)的进一步细节的框图。图2中的DPU38A1可以是图1中的DPU38A的示例。如图2所示,DPU38A1包括运算逻辑单元(ALU)50A-50F(共同地,ALU50)、非易失性存储器阵列(Non-VolatileMemoryArray,NVMA)52A-52F(共同地,“NVMA52”)、NVMA54A和54B(共同地,“NVMA54”)、和管理单元56。为了例示的目的,PiNVSM设备可以是单个半导体芯片,并且可以包括连接到非易失性存储器的相关联的存储器子阵列(诸如NVMA52A-52F中的相关联的一个)的数据处理单元(诸如ALU50A-50F中的一个)。管理单元56可以被配置为控制DPU38A1的一个或多个组件的操作。如图2所示,管理单元56可以控制ALU50、NVMA52和NVMA54的操作。管理单元56可以与DPU38A1外部的一个或多个组件通信,诸如图1中的路由器40A。NVMA52可以每个表示可以在可选择的位置处被编程和擦除而不改变被存储在其它可选择的位置处的数据的非易失性存储器的阵列。在一些示例中,NVMA52可以包括可以执行可选择的位置级别编程和擦除而不改变被存储在其它可选择的位置处的数据的任何类型的非易失性存储器设备。例如,可以独立地改变NVMA52中的每个比特而不改变被存储在NVMA52中的其它比特中的数据。也就是说,NVMA52可以被配置成在正常操作中写入任何单个比特的“0”或“1”(或改变存储状态)而不改变被存储在NVMA52中的其它比特中的数据。在一些粒度中,NVMA52可以被配置为以字节方式(byte-wise)可变、以字方式(word-wise)可变、以双字方式(double-word-wise)可变、以四字方式(quad-word-wise)可变等。这有效地允许NVMA52以任何粒度将数据覆写到单个比特位置,而不必首先“擦除”整个比特块(如在传统的快闪存储器中)。在一些例子中,NVMA52可以是存储类存储器。NVMA52的一些示例包括但不限于相变存储器(PCM)设备、电阻随机存取存储器(ReRAM)设备、磁阻随机存取存储器(MRAM)设备、铁电随机存取存储器(FeRAM)、全息存储器设备、和能够在位置级别处被写入而不改变被存储在其它可选择的级别处的数据的任何其它类型的非易失性存储器设备。在一些示例中,NVMA52和54可以使用粒度的多个级别来访问数据(即,不需要具有固定的页面大小)。例如,在可选择的位置的每一个中,NVMA52和54可以使用页面、不使用页面、使用4K、6K、18K等的数据的块、或者一次使用64字节、128字节、256字节等。在一些示例中,NVMA52和54中的NVMA可以在运行中修改其内部组织。例如,在可选择的位置中的每一个中,NVMA52和54中的NVMA可以改变分区、改变存储体组织、数据线关联、可寻址区域、可访问区域、和/或块大小。NVMA54可以每个表示可以在可选择的位置级别处被编程和擦除而不改变被存储在其它可选择的位置处的数据的非易失性存储器的阵列。在一些示例中,NVMA54可以被用作执行传送器。ALU50可以被配置为操纵存储在NVMA52内的数据。例如,ALU50的每个相应的ALU可被配置为操纵NVMA52中的相应NVMA内的数据。特别地,ALU50A可以被配置为操纵NVMA52A内的数据,ALU50B可以被配置为操纵NVMA52B内的数据,...,以及ALU50F可被配置为操纵NVMA52F内的数据。在一些示例中,ALU50中的每个ALU可以是基本的ALU。图2中的水平阴影箭头可以表示DPU38A1的组件当中的管理和执行流。类似地,图2中的对角阴影箭头可以表示DPU38A1的组件当中的指令集流。图3是示出根据本公开的一个或多个技术的示例性的数据处理单元(DPU)的进一步细节的框图。图3中的DPU38A2可以是图1中的DPU38A的另一示例。类似于DPU38A1,DPU38A2包括ALU50、NVMA52和管理单元56。此外,DPU38A2包括第一多个路由器58A-58F(共同地,“路由器58”)和第二多个路由器60A-60F(共同地,“路由器60”)。如图13所示,DPU38A2可以不包括NVMA54。路由器58和路由器60可以起到DPU38A2内的片上网络(NoC)的作用,以在DPU38A2的组件当中移动数据。例如,路由器58和路由器60可以在ALU50和/或NVMA52当中移动数据。在一些示例中,路由器58和路由器60可以根据不同的优先级在不同的信道和/或不同的操作协议和频率上操作。类似于图2的示例,图3中的水平阴影箭头可以表示DPU38A2的组件当中的管理和执行流,并且图3中的对角阴影箭头可以表示DPU38A2的组件当中的指令集流。图4是示出根据本公开的一个或多个技术的PiNVSM设备的示例性的存储空间的概念图。如图4所示,存储空间8包括代码线10A-10D(共同地,“代码线10”)、和数据线12A-12L(共同地,“数据线12”)。如上述讨论的,数据线12可以每个包括一些用户数据。例如,数据线12中的每个数据线可以是具有相关联的操作的数据项的队列。并且如上所讨论的,代码线10可以每个包括能被用于操纵数据线12的用户数据的指令集(即,软件原语、执行代码)。换句话说,代码线10中的代码线可以是具有能被用于变换数据线12的用户数据的预备环境的操作序列。在一些示例中,代码可以被简单地存储为数据,并且能够将其视为数据线。否则,代码可以被复制到将被视为指令序列(代码线10)的特定位置(例如,特殊地方或执行传送器)。在被用于操纵数据之后,可以在将存储数据操纵的结果和/或可执行代码的数据线12中的数据线中变换代码线10中的代码线。图5是示出根据本公开的一个或多个技术的可以被包括在PiNVSM设备中的示例性的数据线的概念图。如图5所示,数据线12A包括数据部分14和结果部分16。数据部分14可以对应于存储数据的PiNVSM设备的一个或多个可选择的位置,诸如图2的NVMA52中的NVMA的一个或多个可选择的位置。结果部分16可以对应于存储诸如被存储在数据部分14中的数据的操纵结果的非易失性存储设备的一个或多个可选择的位置。数据线12A可以是逻辑结构,并且数据部分14和/或结果部分16的可选择的位置可以连续地或可以不连续地定位(换句话说,意味着可以具有也可以不具有顺序物理地址)。与数据部分14相对应的可选择的位置和与结果部分16相对应的可选择的位置可以考虑被分组为数据线12A。图6是示出根据本公开的一个或多个技术的可以被包括在PiNVSM设备中的示例性的代码线的概念图。如图6所示,代码线10A包括代码部分18、堆(heap)部分20、和栈(stack)部分22。代码部分18可以与存储可以被用于操纵数据的指令集(例如,软件原语)的非易失性存储设备的一个或多个可选择的位置相对应。堆部分20和栈部分22可以每个与在数据操纵期间分别用作堆和栈的非易失性存储设备的一个或多个可选择的位置相对应。代码线10A可以是逻辑结构,并且代码部分18、堆部分20、和/或堆栈部分22的可选择的位置可以是或可以不是连续定位的(换句话说,意味着这些部分18-22可以被存储或可以不被存储到具有顺序物理地址的存储器位置)。图7是示出根据本公开的一个或多个技术的被包括PiNVSM设备中的数据线的示例性的布置的概念图。在一些示例中,多个数据线可以形成诸如下面的表1所示的数据库表,其中,数据库表中的值被存储在数据线的数据部分中,并且数据库表的值的操作结果被存储在数据线中的结果部分。表1商品#1商品#2商品#3总和日期#145615日期#212811日期#31021224总和15926如图7的示例所示,数据线12A-12C形成列并且数据线12D-12F形成数据库表24的行。同样如图7所示,对数据库表24的值的操作的结果被存储在数据线12的相应的结果部分中。例如,数据库表24的每个相应的列中的所有值的相应的总和被存储在结果部分16A-16C中的相应的结果部分中。类似地,数据库表24的每个相应的行中的所有值的相应的总和被存储在结果部分16D-16F中的相应的结果部分中。图8是示出根据本公开的一个或多个技术的与PiNVSM设备的数据线一起的示例性的代码线的概念图。如图8所示,代码线10A中的命令序列(即,命令#1、命令#2、命令#3、...、和命令#N)可以起执行传送器的作用。例如,每个命令可以描述顺序执行流中的一个基本操作。此外,在一些示例中,PiNVSM设备可以以并行的方式将每个命令应用于不同的数据线。例如,图1的DPU38的管理单元可以并行地将命令#1应用到数据线12A、将命令#2应用到数据线12B、将命令#3应用到数据线12C、以及将命令N应用到数据线12N。图9是示出根据本公开的一个或多个技术的与PiNVSM设备的数据线一起的示例性的代码线的概念图。如图9所示,数据线12A-12N可以表示以下所示的表2。表2商品#1商品#2商品#3…商品#N日期#1426…8日期#2171…2日期#3213…5日期#4354…7总和101514…22如图9的示例所示,数据线12A-12N的数据部分14A-14N存储表2的列的值。如以上所讨论的,可能期望获得被存储在数据线12A-12N的数据部分14A-14N中的每一个的值的总和(即,表2的列中的值的总和)。在操作中,PiNVSM设备的一个或多个处理单元可以基于命令序列来操纵被存储在数据线12A-12N的数据部分14A-14N中的数据,并将数据操纵的结果存储在数据线12A-12N的结果部分16A-16N中。在图9的示例中,一个或多个处理单元可以基于由代码线10A定义的命令序列来操纵被存储在数据线12A-12N的数据部分14A-14N中的数据。如图9的示例中所示,代码线10A包含对于每列(对于数据线12A-12N中的每个数据线)的加法的操作。一个或多个处理单元可以从每一列中的第一行到最后一行应用若干次计算操作(加法)。换句话说,一个或多个处理单元可以重复加法操作,以便实现整个代码执行的结果。一个或多个处理单元可以将代码执行的结果(即,在该示例中的总和)存储在数据线12A-12N的结果部分16A-16N中。图10是示出根据本公开的一个或多个技术的可以使用命令偏移方案来执行的示例性的代码线的概念图。在一些示例中,可能期望PiNVSM设备的一个或多个处理单元使用相对更复杂的操作(例如,对特定数据线中的每个值重复单个操作的更复杂的操作)来操纵数据。根据本公开的一个或多个技术,代码线可以定义一个或多个处理单元可以顺序地应用于一个或多个数据线的命令序列。例如,如图10所示,在时间#1,一个或多个处理单元可以基于命令#1操纵数据线12A中的数据。在时间#2,一个或多个处理单元可以基于命令#2操纵数据线12A中的数据,并且基于命令#1操纵数据线12A中的数据。在时间#N,一个或多个处理单元可以基于命令#N来操纵数据线12A中的数据、基于命令#N-1操纵数据线12B中的数据、基于命令N-2操纵数据线12C中的数据、以及基于命令#1操纵数据线12N中的数据。图11是示出根据本公开的一个或多个技术的包括跳转的示例性的代码线的概念图。在一些示例中,可能希望PiNVSM设备的一个或多个处理单元当操纵数据时在代码线中跳转到不同的命令。根据本公开的一个或多个技术,代码线可以包括使得执行代码线的一个或多个处理单元跳转到代码线中的不同位置的一个或多个跳转命令。换句话说,在一些示例中,代码中的条件跳转和非条件跳转可以通过将多个位置上的命令序列立即移动到左方向或右方向的方式来实施。例如,如图11所示,PiNVSM设备的一个或多个处理单元(诸如DPU38)可以基于在时间#1的代码线10A的命令#N来操纵数据线12A中的数据。然后,在时间#2,PiNVSM设备的一个或多个处理单元可以跳转六个位置,并且基于代码线10A的命令#N+6操纵数据线12A中的数据。图12是示出根据本公开的一个或多个技术的非易失性存储设备的优化的数据线的概念图。如图12所示,类似于图5的数据线12A,优化的数据线62包括数据部分14和结果部分16。如以上参考数据线12A所讨论的,被包括在数据部分14中的可选择的位置存储数据,一个或多个操作(即,加法、减法、乘法和除法的基本操作)被连接到数据部分14,并且操作的结果在被包括在结果部分16中的可选择的位置处是可用的。然而,如图12所示,优化的数据线62包括硬件操作63A和63B(共同地,“硬件操作63”)。硬件操作63中的每一个可以由一个或多个可编程处理单元(诸如图1中的DPU38的一个或多个可编程处理单元)执行。如以上所讨论的,PiNVSM设备的一个或多个可编程处理单元可以被编程为使用最频繁使用的指令集来操纵数据。在图12的示例中,操作63可以对应于最频繁使用的指令集。图13是示出根据本公开的一个或多个技术的非易失性存储设备的示例性的存储空间的概念图。如图13所示,类似于图4中的存储空间8,存储空间9包括代码线10和数据线12。如图13所示,存储空间9包括ID表66。ID表66可以存储每个指令集(即,代码线)的标识号。例如,ID表66可以存储代码线10A-10D中的每一个的标识号68A-68D(共同地,“ID68”)的相应的标识号。在一些示例中,ID68中的每一个可以是索引节点(Inode)ID、全局唯一标识符(GUID)或相应的指令集的散列值。例如,ID68A可以是索引节点(Inode)ID或被包括在代码线10A中的指令集的散列值。在一些示例中,ID68可以被称为它们对应的指令集的指纹(fingerprint)。在一些示例中,ID表66可以被包括在DPU(诸如图1的DPU38中的DPU)的散列表中。图14是示出根据本公开的一个或多个技术的可以由DPU的管理单元维护的示例性的队列的概念图。如以上所讨论的,图1的DPU38中的PiNVSM设备可以维护一个队列(或多个队列),对于相应的指令集,队列包括指示相应的指令集被用于操纵数据的相对频率的相应的使用值。如图14所示,队列70包括对于相应的指令集(即,代码线10A-10H)的、指示相应的指令集被用于操纵数据的相对频率的相应的使用值(即,频率71A-71H)。在一些示例中,队列70可以是被配置为基于使用频率(即,执行频率)对ID进行排序的竞争性队列。如果指令集的使用频率增加,则与指令集相对应的ID将从队列70的尾部向队列70的头部迁移。类似地,很少被执行的指令集的ID可以朝着队列70的尾部迁移直到该ID被推出队列70。在一些示例中,队列70可以最初为空(即,可以不包含ID),并且可以在使用的统计被构造(即,执行指令集)时填充队列70。在一些示例中,队列70可以被预先配置为被预测将被更频繁地使用的ID。在任一种情况下,队列70可以随着时间的推移,基于指令集的实际使用频率来被更新。如以上所讨论的,DPU的管理单元可以从具有最高的相应的使用值的队列中选择一组指令集作为用于对DPU38的一个或多个可编程处理单元进行编程的最频繁使用的指令集。在一些示例中,所选择一组指令集可以包括与优化窗口73中的ID相对应的指令集。图15是示出根据本公开的一个或多个技术在管理单元中维护指令集使用频率的队列的示例性的技术的流程图。DPU的其它可替代实施例可以实施这里所示的相同技术。根据本公开的一个或多个技术,DPU38A可以执行具有对应的IDN(1502)的指令集。例如,DPU38A的一个或多个处理单元可以基于从具有对应的ID68C的代码线10C中获得的指令集,操纵与数据线12A-12C的数据部分相对应的NVMA52的数据可选择的位置中的数据,以生成结果。DPU38A可以确定IDN是否被包括在队列中(1504)。例如,DPU38A可以确定图14中的队列70是否包括ID68C。如果IDN不被包括在队列中(170的“否”分支),则DPU38A可以确定队列是否已满(1506)。例如,DPU38A可以确定被包括在队列中的标识符的数量是否大于使用值的阈值数量(例如,4、8、16、32、50、64、128等)。队列可以是特定大小,并且DPU38A可能需要基于其大小限制和其它因素来维护队列。如果队列已满(1506的“是”分支),则DPU38A可以将具有最低频率的ID推出队列(1508)。例如,响应于确定被包括在队列70中的标识符的数量大于使用值的阈值数量,DPU38A可以从队列70移除具有最低使用值的标识符。如果队列未满(1506的“否”分支)或者在将具有最低频率的ID推出队列之后,DPU38A可以将IDN添加到队列的尾部(1510)。例如,响应于确定队列70不包括对应于特定指令集的标识符,DPU38A可以将对应于特定指令集的标识符添加到队列的尾部。如果队列中不包括IDN(1504的“是”分支)或者在将IDN添加到队列之后,DPU38A可以增加IDN的频率(1512)。例如,管理单元可以将图14中的频率71C的值从52增加到53。DPU38A可以减少被包括队列中的除IDN之外的ID的频率(1514)。例如,DPU38A可以将图14中的频率71G的值从100减少到99,将图14中的频率71B的值从76减少到75,将图14中的频率71A的值从62减少到61,将图14中的频率71D从53减少到52,将图14中的频率71E从21减少到20,将图14中的频率71H从11减少到10,以及将图14中的频率71F从2减少到1。DPU38A可以对被包括在队列中的ID重新排序(1516)。例如,随着频率71C(即,53)的增加后的值现在大于频率7ID的减少后的值(即,52),存储设备6A可以交换ID68C和ID68D的位置。在将队列中的ID重新排序后,DPU38A可以确定被包括在优化窗口中的ID是否已经发生变化。例如,在交换ID68C和ID68D的位置后,DPU38A可以确定ID68C现在被包括在优化窗口73中,并且ID68D不再被包括在优化窗口73中。响应于确定被包括在优化窗口中的ID已经发生变化,DPU38A可以将一个或多个可编程处理单元编程为使用与当前被包括在优化窗口中的ID对应的指令集来操纵数据。例如,DPU38A可以编程DPU38A的一个或多个可编程处理单元,一个或多个可编程处理单元被编程为使用从代码线10D所获得的指令集来操纵数据、使用从代码线10C所获得的指令集来操纵数据。图16是示出根据本公开的一个或多个技术的DPU中的队列维护的概念图。如以上所讨论的,DPU可以维护指示指令集的使用频率的队列。在一些示例中,不同的数据线可以由不同的软件原语以及通过不同的频率来被处理。因而,在一些示例中,DPU可以维护多个队列。例如,DPU可以针对多个数据线的每个相应的数据线维护相应的队列,该相应队列包括对于相应的指令集的、指示相应的指令集用于操纵相应的数据线中的数据的相对频率的相应的使用值。如图16所示,DPU38中的DPU可以对于数据线12A-12N中的每一个维护队列70A-70N中的相应的队列。DPU可以以类似于图14的队列70的方式维护队列70中的每一个。例如,DPU可以使用图15的技术维护队列70中的每一个。具体地,在图16的示例中,响应于确定基于从具有ID68A的代码线10A获得的指令集在数据线12A-12N中已操纵(或正在操纵)数据的一个或多个处理单元,DPU可以执行通过将IDN当作ID68A来执行图15的技术以更新队列70A-70N中的每一个。图17是示出根据本公开的一个或多个技术的非易失性存储设备的数据线的优化的概念图。如图17所示,优化的数据线62包括数据部分14、结果部分16和队列70。如以上所讨论的,一个或多个可编程处理单元(诸如DPU38的一个或多个可编程处理单元)可以被编程为使用被包括在队列的优化窗口中的指令集来操纵数据。如图17所示,基于包括与代码线10G、10B、10A和10D相对应的ID68G、68B、68A和68D的队列70的优化窗口73,一个或多个可编程处理单元可以被编程为执行与从代码线10G、10B、10A和10D获得的指令集相对应的硬件操作72A-72D。如图17所示,硬件操作72A-72D可以操纵被存储在与数据部分14相对应的非易失性存储器的可选择的位置中的数据,并且将操纵的结果存储在与结果部分14相对应的非易失性存储器的可选择的位置中。图18是示出根据本公开的一个或多个技术的由PiNVSM设备存储的数据类型的概念图。PiNVSM设备的不同部分可以存储不同类型的数据。如图18所示,PiNVSM设备的第一部分可以存储数据库表,PiNVSM设备的第二部分可以存储文本数据,PiNVSM设备的第三部分可以存储声音数据,PiNVSM设备的第四部分可以存储存档数据,PiNVSM装置的第五部分可以存储图形数据,以及PiNVSM装置的第六部分可以存储视频数据。如以上所讨论的,PiNVSM设备可以自优化。例如,独立的数据线的优化可以通过不同的专门化来为相同的PiNVSM设备的不同部分的动态和面向数据的演进提供基础。存储数据格局(布局)的改变可能导致非易失性存储设备内部的动态自重新配置(即,重新编程一个或多个可编程处理单元)。图19是示出根据本公开的一个或多个技术的操纵PiNVSM设备中的数据的示例性的技术的流程图。虽然PiNVSM设备具有不同于可以执行图19中的技术的DPU38A的配置的配置,但为了便于描述,将参考图1中的DPU38A来描述图19的技术。根据本公开的一个或多个技术,DPU38A可以基于非易失性存储器的选择的位置中的数据执行数据操纵(1902),以生成数据操纵的对应的结果(1904)。例如,如图9中的示例所示,DPU38A的一个或多个处理单元可以基于从代码线10A中所获得的指令集操纵与数据线12A-12N的数据部分14A-14N相对应的DPU38A的NVMA的可选择的位置中的数据,以生成结果(该示例中的总和)。DPU38A可以基于对应的结果使得非易失性存储器选择性地编程和擦除被保留以用于存储数据操纵的结果的可选择的位置中的数据(1906)。例如,DPU38A的一个或多个处理单元可以使得DPU38A的NVMA选择性地编程和擦除与数据线12A-12N的结果部分16A-16N相对应的可选择的位置中的数据,以存储所生成的数据操纵的结果。图20是示出根据本公开的一个或多个技术的操纵PiNVSM设备中的数据的示例性的技术的流程图。虽然PiNVSM设备具有不同于可以执行图20中的技术的DPU38A的配置的配置,但为了便于描述,将参考图1中的DPU38A来描述图20的技术。根据本公开的一种或多种技术,DPU38A的ALU50A可以基于特定数据线中的数据计算结果(2002)。例如,如图5中的示例所示,ALU50A可以计算数据线12A的数据部分14(其可以包括NVMA52A的一个或多个可选择的位置)中的数据的一个或多个基本操作的结果。ALU50A可以基于计算结果选择性地改变被保留以用于存储数据操纵的结果的特定数据线的可选择的位置中的数据(2004)。例如,如图5的示例所示,ALU50A可以基于计算结果选择性地改变数据线12A的结果部分16中的数据。以下编号的示例可以示出本公开的一个或多个方面。示例1。一种包括设备的计算系统,该设备包括:非易失性存储器,其被划分为多个可选择的位置,非易失性存储器中的每个比特被配置为具有被独立地编程和擦除的对应的数据,其中可选择的位置被分组成多个数据线;耦合到非易失性存储器的一个或多个处理单元,处理单元中的每一个与多个数据线中的数据线相关联,一个或多个处理单元包括一个或多个可重新配置的处理单元,一个或多个处理单元被配置为:基于一个或多个指令集,操纵多个数据线中的相关联的数据线中的数据以生成结果,结果被存储在被保留以存储操纵的结果的相关联的数据线的可选择的位置中;确定指令集中的哪些指令集被一个或多个处理单元最频繁用来操纵数据;以及将一个或多个可重新配置的处理单元重新配置为使用所确定的最频繁使用的指令集来操纵数据。示例2。示例1中的计算系统,其中,为了确定指令集中的哪些指令集被一个或多个处理单元最频繁用来操纵数据,一个或多个处理单元被配置为:维护队列,队列包括对于相应的指令集的、指示相应的指令集被用于操纵数据的相对频率的相应的使用值;以及从具有最高的相应的使用值的队列中选择一组指令集作为用于重新配置一个或多个可重新配置的处理单元的最频繁使用的指令集。示例3。示例2中的计算系统,其中,队列还包括相应的指令集中的一个或多个指令集的相应的标识符。示例4。示例3中的计算系统,其中,一个或多个指令集的标识符包括一个或多个指令集的散列值、或一个或多个指令集的全局唯一标识符(GUID)。示例5。示例1-4的任何组合的计算系统的,其中,为了维护队列,一个或多个处理单元被配置为:确定特定指令集已被用于操纵数据;响应于确定队列包括与特定指令集相对应的标识符:增加特定指令集的使用值;以及减少除了特定指令集之外的指令集的使用值;以及响应于确定队列不包括与特定指令集相对应的标识符:在队列中插入与特定指令集相对应的标识符;增加特定指令集的使用值;以及减少除特定指令集之外的指令集的使用值。示例6。示例5中的计算系统,其中,响应于确定队列不包括与特定指令集相对应的标识符,一个或多个处理单元被配置为:响应于确定被包括在队列中的标识符的数量大于使用值的阈值数量,将具有最低使用值的标识符从队列中移除。示例7。示例1-6中的任何组合的计算系统,其中,为了维护队列,一个或多个处理单元被配置为:对于数据线中的每个相应的数据线维护相应的队列,相应的队列包括对于相应的指令集的、指示相应的指令集被用于操纵相应的数据线中的数据的相对频率的相应的使用值。示例8。示例1-7的任何组合的计算系统,其中,一个或多个处理单元被配置为:周期性地确定指令集中的哪些指令集被一个或多个处理单元最频繁用来操纵数据;以及周期性地将一个或多个可重新配置的处理单元重新配置为使用所确定的最频繁使用的指令集来操纵数据。示例9。示例1-8的任何组合的计算系统,其中,可编程处理单元包括现场可编程门阵列(FPGA)。示例10。示例1-9的任何组合的计算系统,其中,一个或多个处理单元包括一个或多个专用处理单元,其中,一个或多个专用处理单元中的专用处理单元基于特定指令集来操纵数据所花费的时间比一个或多个可重新配置的处理单元中的可重新配置的处理单元基于相同的特定指令集来操纵数据所花费的时间更长。示例11。示例1-10的任何组合的计算系统,其中,编程多个可选择的位置中的特定的可选择的位置处的数据不改变被存储在多个可选择的位置中的其它可选择的位置处的数据,并且其中擦除多个可选择的位置中的特定的可选择的位置处的数据不改变被存储在多个可选择的位置中的其它可选择的位置处的数据。示例12。一种方法包括:由耦合到非易失性存储器的一个或多个处理单元、并基于一个或多个指令集和多个数据线中的相关联的数据线中的数据来计算对应的结果,其中非易失性存储器被划分为多个可选择的位置,可选择的位置被分组成多个数据线,其中非易失性存储器中的每比特被配置为具有被独立地编程和擦除的对应的数据,其中处理单元中的每个处理单元与多个数据线中的数据线相关联,并且其中一个或多个处理单元包括一个或多个可重新配置的处理单元;基于对应的结果,选择性地改变被保留以存储对应的结果的相关联的数据线的选择的位置中的数据;维护队列,队列包括对于相应的指令集的、指示相应的指令集被用于计算结果的相对频率的相应的使用值;从具有最高的相应的使用值的队列中选择一组指令集作为用于重新配置一个或多个可重新配置的处理单元的最频繁使用的指令集;以及将一个或多个可重新配置的处理单元重新配置为使用所选择的一组指令集来计算结果。示例13。实施例12的方法,其中,队列还包括相应的指令集中的一个或多个指令集的对应的标识符。示例14。示例13的方法,其中用于一个或多个指令集的标识符包括一个或多个指令集的散列值、或一个或多个指令集的全局唯一标识符(GloballyUniqueIdentifier,GUID)。示例15。示例12-14的任何组合的计算系统的,其中,维护队列包括:确定特定指令集正被用于或已被用于计算结果;响应于确定队列包括与特定指令集相对应的标识符:增加特定指令集的使用值;以及减少除特定指令集之外的指令集的使用值;以及响应于确定队列不包括与特定指令集相对应的标识符:在队列中插入与特定指令集相对应的标识符;增加特定指令集的使用值;以及减少除特定指令集之外的指令集的使用值。示例16。示例15的方法,其中,响应于确定队列不包括与特定指令集相对应的标识符,方法还包括:响应于确定被包括在队列中的标识符的数量大于使用值的阈值数量,将具有最低使用值的标识符从队列中移除。示例17。实施例12-16的任意组合的方法,其中,维护队列包括:对于数据线中的每个相应的数据线维护相应的队列,其中相应的队列包括对于相应的指令集的、指示相应的指令集被用于计算相应的数据线的结果的相对频率的相应的使用值。示例18。示例12-17的任何组合的方法,其中,可编程处理单元包括现场可编程门阵列(FPGA)、ASIC、DSP、基本电路逻辑、或ALU。示例19。一种设备包括:用于基于一个或多个指令集以及非易失性存储器的多个数据线中的相关联的数据线中的数据来计算对应的结果的装置,其中非易失性存储器被划分为多个可选择的位置,可选择的位置被分组成多个数据线,其中非易失性存储器中的每个比特被配置为具有被独立地编程和擦除的对应的数据,并且其中用于计算的装置包括一个或多个可重新配置的处理单元;用于基于相应的结果选择性地改变被保留以存储对应的结果的相关联的数据线的选择的位置中的数据的装置;用于维护队列的装置,队列包括对于相应的指令集的、指示相应的指令集被用于计算结果的相对频率的相应的使用值;用于从具有最高的相应的使用值的队列中选择一组指令集作为用于重新配置一个或多个可重新配置的处理单元的最频繁使用的指令集的装置;以及用于将一个或多个可重新配置的处理单元重新配置为使用所选择的一组指令集来计算结果的装置。示例20。示例19的设备,其中,用于维护队列的装置包括:用于确定特定指令集正被用于或已被用于计算结果的装置;用于响应于确定队列包括与特定指令集相对应的标识符、增加特定指令集的使用值的装置;用于响应于确定队列包括与特定指令集相对应的标识符、减少除特定指令集之外的指令集的使用值的装置;用于响应于确定队列不包括与特定指令集相对应的标识符、在队列中插入与特定指令集相对应的标识符的装置;用于响应于确定队列不包括与特定指令集相对应的标识符、增加特定指令集的使用值的装置;用于响应于确定队列不包括与特定指令集相对应的标识符、减少除特定指令集之外的指令集的使用值的装置;以及用于响应于确定队列不包括与特定指令集相对应的标识符并且响应于确定被包括在队列中的标识符的数量大于使用值的阈值数量、将具有最低使用值的标识符从队列中移除的装置。示例21。示例19的设备,还包括用于执行示例12-18的任何组合的方法的装置。本公开中所描述的技术可以至少部分地在硬件、软件、固件或其中的任何组合中实现。例如,所描述的技术的各个方面可以在一个或多个处理器中被实施,包括一个或多个微处理器、数字信号处理器(DigitalSignalProcessor,DSP)、专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、现场可编程门阵列(FPGA)或任何其它等效的集成或分离逻辑电路,以及这些组件的任何组合。术语“处理器”或“处理电路”可以单独地或与其它的逻辑电路或任何其它等效电路组合地指代前述逻辑电路中的任何一个。包括硬件的控制单元也可以执行本公开的一个或多个技术。这样的硬件、软件和固件可以在相同设备内或在单独的设备内实施,以支持本公开中所描述的各种技术。此外,所描述的单元、模块或组件中的任何一个可以一起实施或作为分离但可互操作的逻辑设备单独实施。将不同特征描述为模块或单元旨在突出显示不同的功能方面,并不一定意味着这些模块或单元必须通过单独的硬件、固件、或软件组件来实施。相反,与一个或多个模块或单元相关联的功能可以通过单独的硬件、固件或软件组件,或集成在公共或单独的硬件,固件或软件组件中来执行。本公开中所描述的技术也可以在包括用指令编码的计算机可读存储介质的制品中实施或编码。被嵌入或被编码在包括计算机可读存储介质编码的制品中的指令可以使得一个或多个可编程处理器或其它处理器实现本文所描述的一个或多个技术,诸如当被包括或被编码在计算机可读存储器中的指令被一个或多个处理器运行时。计算机可读存储介质可以包括随机存取存储器(RandomAccessMemory,RAM)、只读存储器(ReadOnlyMemory,ROM)、可编程只读存储器(ProgrammableReadOnlyMemory,PROM)、可擦除可编程只读存储器(ErasableProgrammableReadOnlyMemory,EPROM)、电可擦除可编程只读存储器(ElectronicallyErasableProgrammableReadOnlyMemory,EEPROM)、硬盘、光盘ROM(CompactDiscROM,CD-ROM)、软盘、磁带、磁性介质、光学介质或其它计算机可读介质。在一些示例中,制品可以包括一个或多个计算机可读存储介质。在一些示例中,计算机可读存储介质可以包括非瞬时性介质。术语“非瞬时性”可以指示存储介质没有具体实现在载波或传播信号中。在某些示例中,非瞬时性存储介质可以存储随时间变化的数据(例如在RAM或高速缓存中)。已经描述了各种示例。这些和其它示例在所附权利要求的范围内。当前第1页1 2 3 
再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1