CN108269601B - 非易失性存储器中的处理器 - Google Patents
非易失性存储器中的处理器 Download PDFInfo
- Publication number
- CN108269601B CN108269601B CN201710833388.7A CN201710833388A CN108269601B CN 108269601 B CN108269601 B CN 108269601B CN 201710833388 A CN201710833388 A CN 201710833388A CN 108269601 B CN108269601 B CN 108269601B
- Authority
- CN
- China
- Prior art keywords
- data
- volatile memory
- processing units
- code
- selectable
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/24—Bit-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Memory System (AREA)
- Read Only Memory (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
在一个示例中,计算系统包括设备,该设备包括:被划分为多个可选位置的非易失性存储器,在非易失性存储器中的每个位被配置为具有被独立地更改的对应数据,其中可选位置被分组为多个数据行;以及一个或多个处理单元,其被耦合到非易失性存储器,处理单元的每一个与多个数据行中的数据行相关联,并且处理单元的每一个被配置为基于在多个数据行中的关联数据行中的数据来计算对应结果,其中非易失性存储器被配置为基于对应结果来将数据选择性地写入关联数据行的可选位置中,该可选位置被保留以存储来自与关联数据行相关联的处理单元的计算结果。
Description
技术领域
本公开一般涉及存储器领域,更具体地,涉及非易失性存储器中的处理器。
背景技术
在消费者、工业、军事和航空领域的所有现有设备中使用的存储器设备可以由非易失性存储器或易失性存储器组成。非易失性存储器与易失性存储器之间的主要区别是非易失性存储器在不需要持续电源的情况下能够保留数据。通常,可以从非易失性存储器读取数据,传输该数据并在易失性存储器中暂时存储该数据,然后使用处理单元来操纵数据,并将结果存储回到非易失性存储器中。通常,可能期望增加上述操作的总体速度。然而,可能由硬件带宽(例如,其中例如指令提取和数据操作不能同时在一个共享存储器总线上发生的冯诺依曼瓶颈)而在速度上限制了将数据从非易失性存储器传输到易失性存储器用于数据操纵。因此,需要新的处理单元和存储器架构来克服这个限制。
发明内容
在一个示例中,计算系统包括设备,该设备包括:非易失性存储器,其被划分为多个可选位置,非易失性存储器中的每个位被配置为具有被独立地更改的对应数据,其中可选位置被分组为多个数据行(data line);以及一个或多个处理单元,其被耦合到非易失性存储器,处理单元的每一个与多个数据行中的数据行相关联,并且处理单元的每一个被配置为基于在多个数据行中的关联数据行中的数据来计算对应结果,其中非易失性存储器被配置为基于对应结果来将数据选择性地写入关联数据行的可选位置中,这些可选位置被保留以存储来自与关联数据行相关联的处理单元的计算结果。
在另一示例中,一种方法包括由被耦合到非易失性存储器的一个或多个处理单元的特定处理单元、并且基于在与处理单元相关联的多个数据行的特定数据行中的数据计算对应结果,该非易失性存储器被划分为被分组为多个数据行的多个可选位置,其中非易失性存储器中的每个可选位置被配置为被独立地编程和擦除,其中处理单元的每个处理单元与多个数据行中的数据行相关联,并且其中一个或多个处理单元和非易失性存储器被包括在相同芯片上。在该示例中,方法还包括基于对应结果来选择性地更改在特定数据行的可选位置中的数据,这些可选位置被保留以存储来自与特定数据行相关联的处理单元的计算结果。
在另一示例中,存储器设备中的处理器包括多个装置,其用于基于在数据行中的数据来计算对应结果,该数据行的每一个包括被划分为多个可选位置的非易失性存储器的一个或多个可选位置,其中非易失性存储器中的每个可选位置被配置为被独立地编程和擦除,其中用于计算的多个装置的每一个与多个数据行中的数据行相关联,并且其中用于计算的多个装置和非易失性存储器被包括在相同芯片上;以及用于基于对应结果来选择性地更改在数据行的所选择的位置中的数据,这些所选择的位置被保留以存储来自与数据行相关联的用于计算的装置的计算结果。
在附图和下面的描述中阐述本公开中描述的技术的一个或多个示例的细节。该技术的其它特征、对象和优点将从说明书和附图以及从权利要求书中变得显而易见。
附图说明
图1是示出根据本公开的一个或多个技术的包括多个在非易失性存储存储器设备中的处理器(processor in non-volatile storage memory,PiNVSM)的示例系统的概念和示意框图。
图2是示出根据本公开的一个或多个技术的示例数据处理单元(data processingunit,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设备中的数据的示例技术的流程图。
具体实施方式
根据本公开的一个或多个技术,提出了一种计算机架构,在其中处理单元包括持久数据存储装置并且可以就地(in-place)处理数据。例如,在芯片上的非易失性存储器(PiNVSM)设备中的处理器可以能够持久地持久存储大量数据,并且就地处理所持久存储的数据。由于一个或多个处理单元和NVSM两者都被包括在相同芯片上,可以减少一个或多个处理单元可以访问由NVSM存储的数据的速率(即,等待时间)。为了说明的目的,PiNVSM设备可以是单个半导体芯片,并且可以包括被连接到非易失性存储器的关联存储器子阵列的数据处理单元。PiNVSM系统可以包括经由各种通信总线或信道(有线或无线)来以各种配置被连接到彼此的多个PiNVSM设备。以这种方式,PiNVSM设备可以避免诸如冯诺依曼瓶颈的存储器带宽限制问题。
可以由PiNVSM设备使用一个或多个处理单元来执行使用数学计算功能和/或逻辑功能的数学计算操作和/或逻辑操作。在一些示例中,PiNVSM设备包括一个或多个算术逻辑单元(arithmetic logic unit,ALU)。如下面更详细地讨论的,ALU可以每个被配置为执行整数运算和逻辑操作(例如,AND、NAND、OR、NOR、XOR、NOT)。在一些示例中,PiNVSM设备可以包括一个或多个浮点单元(floating poínt unit,FPU),其可以每个被配置为执行非整数计算,诸如可以生成分数或“浮点数”的除法操作。在一些示例中,PiNVSM设备可以包括一个或多个处理单元(processing unit,PU)、以及一个或多个现场可编程门阵列(fleld-programmable gate array,FPGA)。在一些实施例中的处理单元可以以硬件被预先制造以执行特定计算或数据操纵。例如,可以仅使用特定电路逻辑(诸如ASIC)来预先制造处理单元以执行特定计算。可替换地,处理单元可以是可以在现场被编程的可编程处理单元以基于执行代码来执行计算或数据操纵。例如,这样的处理单元可以包括FPGA、可编程ALU等。
在NVSM中,可以在可选位置级别执行数据的编程和擦除。例如,NVSM可以被划分为多个可选位置,并且处理单元可以能够在多个可选位置中的特定可选位置处编程数据或擦除数据,而不更改被存储在多个可选位置中的其他可选位置处的数据。NVSM的一些示例包括但不一定限于磁阻随机存取存储器(magnetoresistive random-access memory,MRAM)、铁电随机存取存储器(ferroelectric random-access memory,FeRAM)、NRAM、电阻随机存取存储器(resistive random-access memory,ReRAM)、相变存储器(Phase ChangeMemory,PCM)、Mott存储器等。
在一些示例中,可选位置可以是可寻址位置。例如,可选位置的每一个可以具有唯一的数字地址,并且可以经由特定可寻址位置的唯一地址来访问/读取/写入在特定可寻址位置处的数据。在一些示例中,可以经由访问系统来访问/读取/写入在特定可寻址位置处的数据。
在操作中,PiNVSM设备的一个或多个处理单元可以基于在PiNVSM设备的非易失性存储器的所选择的位置中的数据来执行数据操纵,生成数据操纵的对应结果,并使得非易失性存储器基于对应结果来选择性地编程或擦除在被保留以存储数据操纵的结果的可选位置中的数据。由于可以在可选位置级别执行数据的编程和擦除,一个或多个处理单元可以使得非易失性存储器选择性地编程和擦除在被保留以存储数据操纵的结果的可选位置中的数据,而不更改被存储在除被保留以存储数据操纵的结果的可选位置之外的可选位置处的数据。
如上所讨论,PiNVSM设备可以包括一个或多个处理单元。例如,PiNVSM设备可以包括可以执行任意操作的一个或多个专用处理单元。专用处理单元的示例包括但不一定限于算术逻辑单元(ALU)、处理单元(PU)、现场可编程门阵列(FPGA)、完全自定义逻辑(fullycustom logic)和浮点单元(FPU)。
在一些示例中,非易失性存储器空间可以在数据行和代码行之间被共享。通常,数据行可以包括用户数据。代码行可以包括能够被用于数据行的操纵的指令集(即,软件原语、执行代码)。数据行的每一个可以包括一个或多个可选位置,并且可以与处理单元相关联。换句话说,非易失性存储器的可选位置可以被分组为多个数据行。在一些示例中,在任何给定时间,特定可选位置可以仅被分组为单个数据行。因此,在一些示例中,PiNVSM设备可以具有在可选位置与数据行(或代码行)之间的唯一映射,使得单个可选位置不被同时包括在两个数据行(或两个代码行)中。
在一些示例中,将可选位置分组为数据行可以是随时间可调节的。例如,在第一时间,多个可选位置的第一组可选位置可以与与特定处理单元相关联的特定数据行相关联。在第二时间,多个可选位置的第二组可选位置可以与特定数据行相关联。第二组可选位置可以与第一组可选位置不同(即,包括不被包括在第一组中的可选位置且/或省略被包括在第一组中的可选位置)。
在操作中,可以以变化的频率使用指令集来操纵数据行。例如,可以以两倍于使用第二指令集的频率来使用第一指令集操纵数据。因此,可能期望PiNVSM设备基于最频繁使用的指令集来以比基于不那么频繁被使用的指令集更快的速率和/或更低的功耗来操纵数据。
另外,根据本公开中所描述的技术的相应方面,PiNVSM设备可以包括被编程为使用最频繁使用的指令集来操纵数据的一个或多个可编程处理单元。例如,在特定指令集是最频繁使用的指令集的情况下,PiNVSM设备可以将一个或多个可编程处理单元编程为使用特定指令集来操纵数据。在操作期间,一个或多个可编程处理单元可以使用特定指令集来操纵数据。以这种方式,非易失性存储器设备可以能够基于最频繁使用的指令集来以比基于不那么频繁被使用的指令集更快的速率和/或更低的功耗来操纵数据。
指令集的使用频率可以随时间而不一致。例如,在第一时间,第一指令集具有比第二指令集更高的使用频率,而在第二时间,第二指令集具有比第一指令集更高的使用频率。根据本公开的一个或多个技术,一个或多个可编程处理单元的编程可以是自适应的。例如,PiNVSM设备可以监视多个指令集的使用频率,并且周期性地将一个或多个可编程处理单元重新编程为使用当前最频繁使用的指令集来操纵数据。以这种方式,PiNVSM设备可以自我优化。
图1是示出根据本公开的一个或多个技术的包括在非易失性存储存储器(PiNVSM)设备中的多个处理器的示例系统的概念和示意框图。为了说明的目的,PiNVSM设备可以是单个半导体芯片,并且可以包括被连接到非易失性存储器的关联存储器子阵列的数据处理单元。如图1所示。如图1所示,计算系统5可以包括一个或多个数据处理单元(DPU)38A-38D(统称为“DPU38”)、一个或多个路由器40A-40I(统称为“路由器40”)、输入接口42、和输出接口44。在一些示例中,计算系统5可以是独立的计算系统,其中单独的主机设备可以不存在。例如,计算系统5可以不遵循传统的冯·诺依曼(Von Neumann)架构。
输入接口42可以被配置为获得输入数据。例如,输入接口42可以获得数字音频数据、数字视频数据、文本数据(即,经由键盘被输入)、位置数据(即,经由鼠标被输入)和任何其它类型的数字数据。
输出接口44可以被配置为提供输出数据。例如,输出接口44可以输出数字音频数据、数字视频数据、一个或多个管理动作和任何其它类型的输出数据。
路由器40可以每个被配置为在计算系统5周围路由数据。在一些示例中,路由器40可以形成片上网络(network on chip,NoC)架构,诸如于2015年10月26日提交的题为“Fabric Interconnection for Memory Banks Based on Network-On-ChipMethodology”的申请号为14/922,547的美国专利和/或于2015年10月27日提交的题为“Multilayer 3D Memory Based on Network-On-Chip Interconnection”的申请号为14/927,670的美国专利中讨论的NoC架构。如图1所示,路由器40可以经由导线、迹线或任何其它导电装置被互连。路由器40可以在计算系统5周围路由数据和/或指令。例如,路由器40可以使能在DPU 38、输入接口42和/或输出接口44之间的数据和/或指令的传送/传输/交换。通过使能NoC架构,路由器40可以使得计算系统5的尺寸减小(即,因为可以消除组件之间的单独迹线)。
DPU 38可以每个被配置为存储和处理数据。DPU 38可以包括多个PiNVSM设备,因为每个DPU 38可以包括一个或多个处理单元和非易失性存储器阵列。为了说明的目的,PiNVSM设备可以是单个半导体芯片,并且可以包括被连接到非易失性存储器的关联存储器子阵列的数据处理单元。DPU 38的示例DPU的更多细节将在下面参照图2讨论。
在操作中,DPU 38的处理单元可以基于被包括在DPU 38中的NVMA的所选择的位置中的数据来执行数据操纵,以生成数据操纵的对应结果。例如,被包括在DPU 38中的处理单元的每一个可以被配置为针对在关联数据行中的数据计算结果。作为一个示例,被包括在DPU 38中DPU的特定处理单元可以被配置为为在与特定处理单元相关联的数据行中的数据计算结果。计算的结果可以被存储在为结果所保留的关联数据行中。用于计算的初始数据在专门被用来覆写时仅被覆写。处理单元可以使得被包括在DPU 38中的NVMA基于对应结果来选择性地编程或擦除在被保留以存储数据操纵的结果的可选位置中的数据。例如,被包括在DPU 38中的处理单元的每一个可以被配置为基于对应结果来将数据选择性地写入关联数据行的结果部分中。作为一个示例,被包括在DPU 38的DPU中的特定处理单元被配置为将结果存储在与特定处理单元相关联的数据行的结果部分中。
在一些示例中,处理单元可以基于诸如执行代码的指令集来执行数据操纵。如下所述,在一些示例中,由DPU 38将指令集存储为诸如图3的代码行12A的代码行。在一些示例中,在代码行的每一个中的执行代码可以包含指令序列。在一些示例中,管理单元可以被配置为获得指令集。
如下面所讨论的,由于可以以变化的频率、使用指令集来操纵数据行,可能期望DPU 38能够基于最频繁使用的指令集来以比基于不那么频繁被使用的指令集更快的速率和/或更低的功耗来操纵数据。
根据本公开的一个或多个技术,被包括在DPU 38中的一个或多个可编程处理单元可以被编程为使用最频繁使用的指令集来操纵数据。可以被包括在DPU 38中的可编程处理单元的示例包括但不限于FPGA、查找表、用于矢量处理的矢量、ASIC、以一种特定方式(例如,可以存在多个块,并且编程涉及激活执行编程功能的块和使其他块掉电,即以提高性能和控制功耗)操纵数据的逻辑块(例如,简单加法器或高斯混合块、更多或更少的专门的块)、和可以被编程或配置为以某种方式来操纵数据的任何类似的结构。以这种方式,DPU38可以基于最频繁使用的指令集来以比基于不那么频繁被使用的指令集更快的速率和/或更低的功耗来操纵数据。
指令集的使用频率可以随时间而不一致。例如,在第一时间,第一指令集可以具有比第二指令集更高的使用频率,而在第二时间,第二指令集可以具有比第一指令集更高的使用频率。根据本公开的一个或多个技术,DPU 38的一个或多个可编程处理单元的编程可以是自适应的。例如,DPU 38的每一个的管理单元可以监视多个指令集的使用频率(即,DPU38使用指令集的频率),并周期性地将一个或多个可编程处理单元重新编程为使用当前最频繁使用的指令集来操纵数据。以这种方式,DPU 38可以自我优化。下面将参考图12讨论优化的进一步细节。
在一些示例中,为了确定哪个指令集最频繁被用于操纵数据,计算系统5可以维护包括对于相应指令集的、指示相应指令集被用于操纵数据的相对频率的相应使用值的队列(或多个队列,其可以是有序队列或无序队列)。管理单元可以从具有最高的相应使用值的队列中选择指令集组作为用于对DPU 38的一个或多个可编程处理单元进行编程的最频繁使用的指令集。下面将参考图13-图17讨论队列的一个示例的进一步细节。
在一些示例中,DPU 38的一个或多个专用处理单元的专用处理单元可能花费比DPU 38的一个或多个可编程处理单元中的可编程处理单元基于特定指令集来操纵数据所花费的时间更长的时间来基于相同的特定指令集来操纵数据。在一些示例中,时间可以是非确定性的,并且可以像在全局异步局部同步(Globally Asynchronous LocallySynchronous,GaLs)设备中那样跨多个处理单元不同步。
图2是示出根据本公开的一个或多个技术的示例数据处理单元(DPU)的进一步细节的框图。图2中的DPU 38Al可以是图1中的DPU 38A的示例。如图2所示,DPU 38A1包括算术逻辑单元(ALU)50A-50F(统称为“ALU 50”)、非易失性存储器阵列(NVMA)52A-52F(统称为“NVMA52”)、NVMA 54A和54B(统称为“NVMA 54”)和管理单元56。为了说明的目的,PiNVSM设备可以是单个半导体芯片,并且可以包括被连接到非易失性存储器(诸如NVMA 52A-52F中的关联的一个)的关联存储器子阵列的数据处理单元(诸如ALU 50A-50F中的一个)。
管理单元56可以被配置为控制DPU 38A1的一个或多个组件的操作。如图2所示,管理单元56可以控制ALU 50、NVMA 52和NVMA 54的操作。管理单元56可以与DPU 38A外部的诸如图1的路由器40A的一个或多个组件通信。
NVMA 52可以每个表示非易失性存储器的阵列,该非易失性存储器的阵列可以在可选位置处被编程和擦除,而不更改被存储在其他可选位置处的数据。在一些示例中,NVMA52可以包括如下任何类型的非易失性存储器设备,其可以执行可选位置级别的编程和擦除,而不更改被存储在其他可选级别处的数据。例如,在NVMA 52中的每个位可以是可独立地更改的,而不改变被存储在NVMA 52中的其他位中的数据。也就是说,NVMA 52可以被配置为写入任何单个位的“0”或“1”(或更改存储状态),而不更改在正常操作中的任何其他可访问位。在一些粒度(granularity)中,NVMA 52可以被配置为以按字节可更改的、按字可更改的、按双字可更改的、按四字可更改的等等。这有效地允许NVMA 52以低至单个位位置(downto a signal bit location)的任何粒度来使数据被覆写,而不必首先“擦除”整个块的位(如在传统的闪存存储器中那样)。在一些示例中,NVMA 52可以是存储类存储器。NVMA 52的一些示例包括但不限于相变存储器(PCM)设备、电阻随机存取存储器(ReRAM)设备、磁阻随机存取存储器(MRAM)设备、铁电随机存取存储器(FeRAM)、全息存储器设备以及能够在位置级别被写入而不更改被存储在其他可选级别处的数据的任何其它类型的非易失性存储器设备。
在一些示例中,NVMA 52和54可以使用多个级别的粒度来访问数据(即,不需要具有固定的页面大小)。例如,在可选位置的每一个中,NVMA 52和54可以一次使用页面,不用页面、使用4K、6K、18K等个数据块、或64字节、128字节、256字节等来工作。在一些示例中,NVMA 52和54的NVMA可以即时修改其内部组织。例如,在可选位置的每一个中,NVMA 52和54的NVMA可以改变分区、改变库(bank)组织、数据行关联、可寻址区域、可访问区域和/或块大小。
NVMA 54可以每个表示非易失性存储器的阵列,非易失性存储器的阵列可以在可选位置级别被编程和擦除,而不更改被存储在其他可选位置处的数据。在一些示例中,NVMA54可以被用作执行输送机(conveyor)。
ALU 50可以被配置为操纵被存储在NVMA 52内的数据。例如,ALU 50的每个相应的ALU可以被配置为操纵在NVMA 52的对应NVMA内的数据。具体地,ALU 50A可以被配置为操纵在NVMA 52A内的数据,ALU 50B可以被配置为操纵在NVMA 52B内的数据,……,并且ALU 50F可以被配置为操纵在NVMA 52F内的数据。在一些示例中,ALU 50的每个ALU可以是基本(elementary)ALU。
图2中的水平阴影箭头可以表示DPU 38A1的组件之间的管理和执行流。类似地,图2中的对角阴影箭头可以表示DPU 38A1的组件之间的指令集流。
图3是示出根据本公开的一个或多个技术的示例数据处理单元(DPU)的进一步细节的框图。图3中的DPU的38A2可以是图1的DPU 38A的另一示例。类似于DPU 38A1,DPU 38A2包括ALU 50、NVMA 52和管理单元56。另外,DPU 38A2包括第一多个路由器58A-58F(统称为“路由器58”)和第二多个路由器60A-60F(统称为“路由器60”),如图13所示,DPA 38A2可以不包括NVMA 54。
路由器58和路由器60可以用作DPU 38A2内的片上网络(NoC),以在DPU 38A2的组件之间移动数据。例如,路由器58和路由器60可以在ALU 50和/或NVMA 52之间移动数据。在一些示例中,路由器58和路由器60可以根据不同的优先级来以不同的通道和/或不同的操作协议和频率进行操作。
类似于图2的示例,图3中的水平阴影箭头可以表示DPU 38A2的组件之间的管理和执行流,并且图3中的对角阴影箭头之间可以表示DPU 38A2的组件之间的指令集流。
图4是示出根据本公开的一个或多个技术的PiNVSM设备的示例存储空间的概念图。如图4所示,存储空间8包括代码行10A-10D(统称为“代码行10”)和数据行12A-12L(统称为“数据行12”),如上所讨论的,数据行12可以每个包括一些用户数据。例如,数据行12的每个数据行可以是具有关联操作的数据项的阵列。同样如上所讨论的,代码行10可以每个包括可以被用于数据行12的用户数据的操纵的指令集(即,软件原语、执行代码)。换句话说,代码行10的代码行可以是具有可以被用于数据行12的用户数据的转换的预备环境的操作序列。
在一些示例中,代码可以被简单地存储为数据,并且其可以被视为数据行。否则,可以将代码复制到将被视为指令序列(代码行10)的特定位置(例如,具体地点或执行输送机)。在被用于操纵数据之后,代码行10的代码行可以在将要存储数据操纵的结果和/或可执行代码的数据行12的数据行中被转换。
图5是示出根据本公开的一个或多个技术的可以被包括在PiNVSM设备中的示例数据行的概念图。如图5所示,数据行12A包括数据部分14和结果部分16。数据部分14可以与存储数据的PiNVSM设备的一个或多个可选位置(诸如图2的NVMA 52的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 | 商品#2 | 商品#3 | 总和 | |
日期#1 | 4 | 5 | 6 | 15 |
日期#2 | 1 | 2 | 8 | 11 |
日期#3 | 10 | 2 | 12 | 24 |
总和 | 15 | 9 | 26 |
表1
如图7的示例所示,数据行12A-12C形成数据库表24的列(column),并且数据行l2D-l2F形成数据库表24的行(row)。同样如图7所示,对数据库表24的值的操作的结果被存储在数据行12的相应结果部分中。例如,数据库表24的每个相应列中的所有值的相应总和被存储在结果部分16A-16C的相应结果部分中。类似地,数据库表24的每个相应行中的所有值的相应总和被存储在结果部分16D-16F的相应结果部分中。
图8是示出根据本公开的一个或多个技术的与PiNVSM设备的数据行一起的示例代码行的概念图。如图6所示,代码行10A中的命令序列(即,命令#1、命令#2、命令#3、……、和命令#N)可以用作执行输送机。例如,每个命令可以描述顺序执行流中的一个基本操作。另外,在一些示例中,PiNVSM设备可以以并发的方式将每个命令应用于不同的数据行。例如,图1的DPU 38的管理单元可以并发地将命令#1应用于数据行12A,将命令#2应用于数据行12B,将命令#3应用于数据行12C,并且将命令#N应用于数据行12N。
图9是示出根据本公开的一个或多个技术的与PiNVSM设备的数据行一起的示例代码行的概念图。如图9所示,数据行12A-12N可以表示如下所示的表2。
商品#1 | 商品#2 | 商品#3 | … | 商品#N | |
日期#1 | 1 | 2 | 6 | … | 8 |
日期#2 | 4 | 7 | 1 | … | 2 |
日期#3 | 2 | 1 | 3 | … | 5 |
日期#4 | 3 | 5 | 4 | 7 | |
总和 | 10 | 15 | 14 | … | 22 |
表2
如图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所示,在时间#1处,PiNVSM设备的诸如DPU 38的一个或多个处理单元可以基于代码行10A的命令#N来操纵数据行12A中的数据。然后,在时间#2处,一个或多个处理单元可以基于代码行10A的命令#N+6来跳转六个位置并且操纵数据行12A中的数据。
图12是示出根据本公开的一个或多个技术的非易失性存储器设备的经优化的数据行的概念图。如图12所示,类似于图5的数据行12A,经优化的数据行62包括数据部分14和结果部分16。如上参考数据行12A所讨论的,被包括在数据部分14中的可选位置存储数据,一个或多个操作(即,加、减、乘和除操作)被连接到数据部分14,并且操作的结果在被包括在结果部分16中的可选位置处可用。然而,如图12所示,经优化的数据行62包括硬件操作63A和63B(统称为“硬件操作63”)。
可以由诸如图1的DPU 38的一个或多个可编程处理单元的一个或多个可编程处理单元来执行硬件操作63的每一个。如上所讨论,PiNVSM设备的一个或多个可编程处理单元可以被编程为使用最频繁使用的指令集来操纵数据。在图12的示例中,操作63可以与最频繁使用的指令集相对应。
图13是示出根据本公开的一个或多个技术的非易失性存储器设备的示例存储空间的概念图。如图13所示,类似于图4的存储空间8,存储空间9包括代码行10和数据行12。同样如图13所示,存储空间9包括ID表66。
ID表66可以存储每个指令集(即,代码行)的标识号。例如,ID表66可以存储代码行10A-10D的每一个的标识号68A-68D(统称为“ID 68”)的标识号。在一些示例中,ID 68的每一个可以是对应指令集的Inode ID、全局唯一标识符(globally unique identifíer,GUID)或哈希值。例如,ID 68A可以是被包括在代码行10A中的指令集的Inode ID或哈希值。在一些示例中,ID 68可以被称为它们对应指令集的指纹。在一些示例中,ID表66可以被包括在DPU(诸如图1的DPU 38的DPU)的哈希表中。
图14是示出根据本公开的一个或多个技术的可由DPU的管理单元维护的示例队列的概念图。如上所讨论的,图1的DPU 38中的PiNVSM设备可以维护包括对于相应指令集的、指示相应指令集被用于操纵数据的相对频率的相应使用值的一个队列(或多个队列)。如图14所示,队列70包括对于相应指令集(即,代码行10A-10H)的指示相应指令集被用于操纵数据的相对频率的相应使用值(即,频率71A-71H)。
在一些示例中,队列70可以是被配置为基于使用频率(即,执行频率)来对ID进行排序的竞争性队列。如果指令集的使用频率递增,则与指令集相对应的ID将从队列70的尾部朝向队列70的头部转移。类似地,很少被执行的指令集的ID可以朝向队列70的尾部转移,直到该ID被推出队列70。
在一些示例中,队列70最初可以是空的(即,可以不包含ID),并且可以在使用的统计被构造(即,指令集被执行)时被填充。在一些示例中,可以用被预测为被更频繁地使用的ID来预先配置队列70。在任一种情况下,可以基于指令集的实际使用频率来随时间更新队列70。
如上所讨论,DPU的管理单元可以从具有最高的相应使用值的队列中选择指令集组作为用于对DPU 38的一个或多个可编程处理单元进行编程的最频繁使用的指令集。在一些示例中,所选择的指令集组可以包括与优化窗口73中的ID相对应的指令集。
图15是示出根据本公开的一个或多个技术的用于在管理单元中维护指令集使用频率的队列的示例技术的流程图。DPU的其他可替代的实施例可以实现这里所示的相同技术。
根据本公开的一个或多个技术,DPU 38A可以执行具有对应ID N(1502)的指令集。例如,DPU 38A的一个或多个处理单元可以基于从具有对应ID68C的代码行10C获得的指令集来操纵在与数据行12A-12C的数据部分相对应的NVMA 52的数据可选位置中的数据,以生成结果。
DPU 38A可以确定ID N是否被包括在队列中(1504)。例如,DPU 38A可以确定图14的队列70包括ID 68C。如果ID N不被包括在队列中(1704的“否”分支),DPU 38A可以确定队列是否满(1506)。例如,DPU 38A可以确定被包括在队列中的标识符的数量是否大于使用值的阈值数量(例如,4、8、16、32、50、64、128等)。队列可以是特定大小,并且DPU 38A可能需要基于其大小限制和其他因素来维护队列。
如果队列满(1506的“是”分支),DPU 38A可以将具有最低频率的ID推出队列(1508)。例如,响应于确定被包括在队列70中的标识符的数量大于使用值的阈值数量,DPU38A可以从队列70移除具有最低使用值的标识符。
如果队列不满(1506的“否”分支),或者在将具有最低频率的ID推出队列之后,DPU38A可以将ID N添加到队列的尾部(1510)。例如,响应于确定队列70不包括与特定指令集相对应的标识符,DPU 38A可以将与特定指令集相对应的标识符添加到队列的尾部。
如果ID N不被包括在队列中(1504的“是”分支),或者在将ID N添加到队列之后,DPU 38A可以递增ID N的频率(1512)。例如,管理单元可以将图14的频率71C的值从52递增到53。
DPU 38A可以递减除ID N之外的被包括在队列中的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。
DPU 38A可以重新排列被包括在队列中的ID(1516)。例如,由于频率7lC的经递增的值(即53)现在大于频率71D的经递减的值(即52),存储器设备6A可以互换ID 68C和ID68D的位置。
在重新排序队列中的ID之后,DPU 38A可以确定被在包括在优化窗口中的ID中是否已经有改变。例如,在互换ID 68C和ID 68D的位置之后,DPU 38A可以确定ID 68C现在被包括在优化窗口73中,并且ID 68D不再被包括在优化窗口73中。响应于确定在被包括在优化窗口中的ID中已经有改变,DPU 38A可以将一个或多个可编程处理单元编程为使用与当前被包括在优化窗口中的ID相对应的指令集来操纵数据。例如,DPU 38A将被编程为使用从代码行10D获得的指令集来操纵数据的DPU 38A的一个或多个可编程处理单元编程为使用从代码行10C获得的指令集来操纵数据。
图16是示出根据本公开的一个或多个技术的在DPU中的队列维护的概念图。如上所讨论,DPU可以维护指示指令集的使用频率的队列。在一些示例中,可以由不同的软件原语和用不同的频率来处理不同的数据行。因此,在一些示例中,DPU可以维护多个队列。例如,DPU可以为多个数据行的每个相应数据行维护相应队列,该相应队列包括对于相应指令集的、指示相应指令集被用于操纵在相应数据行中的数据的相对频率的相应使用值。
如图16所示,DPU 38的DPU可以为数据行12A-12N的每一个维护队列70A-70N的相应队列。DPU可以以类似于维护图14的队列70的方式来维护队列70的每一个。例如,DPU可以使用图15的技术来维护队列70的每一个。具体地,在图16的示例中,响应于确定一个或多个处理单元基于从具有ID 68A的代码行10A获得的指令集来操纵过(或正在操纵)在数据行12A-12N中的数据,DPU可以用作为ID 68A的ID N来执行图15的技术以更新队列70A-70N的每一个。
图17是示出根据本公开的一个或多个技术的非易失性存储器设备的数据行的优化的概念图。如图17所示,经优化的数据行62包括数据部分14、结果部分16和队列70。如上所述,一个或多个可编程处理单元(诸如DPU 38的一个或多个可编程处理单元)可以被编程为使用被包括在队列的优化窗口中的指令集来操纵数据。如图17所示,基于包括与代码行10G、10B、10A和10D相对应的ID 68G、68H、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设备的具有不同专业性的不同部分的动态和面向数据的演进提供基础。存储数据格局(landscape)(布局)的改变可能导致非易失性存储器设备的内部的动态自我重新配置(即,一个或多个可编程处理单元的重新编程)。
图19是示出根据本公开的一个或多个技术的用于操纵在PiNVSM设备中的数据的示例技术的流程图。为了便于描述,将参考图1的DPU 38A描述图19的技术,尽管具有与DPU38A的配置不同的配置的PiNVSM设备可以执行图19的技术。
根据本公开的一个或多个技术,DPU 38A可以基于在非易失性存储器的所选择的位置中的数据来执行数据操纵(1902),以生成数据操纵的对应结果(1904)。例如,如图9的示例所示,DPU 38A的一个或多个处理单元可以基于从代码行10A获得的指令集来操纵在与数据行12A-12N的数据部分14A-14N相对应的DPU 38A的NVMA的可选位置中的数据,以生成结果(在该示例中的总和)。
DPU 38A可以基于对应结果来使得非易失性存储器选择性地编程和擦除在被保留以存储数据操纵的结果的可选位置中的数据(1906)。例如,DPU 38A的一个或多个处理单元可以使DPU 38A的NVMA选择性地编程和擦除在与数据行12A 12N的结果部分16A-16N相对应的可选位置中的数据,以存储所生成的数据操纵的结果。
图20是示出根据本公开的一个或多个技术的用于操纵在PiNVSM设备中的数据的示例技术的流程图。为了便于描述,将参考图1的DPU 38A描述图20的技术,尽管具有与DPU38A的配置不同的配置的PiNVSM设备可以执行图20的技术。
根据本公开的一个或多个技术,DPU 38A的ALU 50A可以基于在特定数据行中的数据来计算结果(2002)。例如,如图5的示例所示,ALU 50A可以计算在数据行12A(其可以包括NVMA 52A的一个或多个可选位置)的数据部分中的数据的一个或多个基本操作的结果。
ALU 50A可以基于所计算的结果来选择性地更改在被保留以存储数据操纵的结果的特定数据行的可选位置中的数据(2004)。例如,如图5的示例所示,ALU 50A可以基于所计算的结果来选择性地更改在数据行12A的结果部分16中的数据。
以下所编号的示例可以示出本公开的一个或多个方面:
示例1.一种包括设备的计算系统,设备包括:非易失性存储器,被划分为多个可选位置,非易失性存储器中的每个位被配置为具有被独立地更改的对应数据,其中可选位置被分组为多个数据行;以及一个或多个处理单元,被耦合到非易失性存储器,处理单元的每一个与多个数据行中的数据行相关联,并且处理单元的每一个被配置为基于在多个数据行中的关联数据行中的数据来计算对应结果,其中非易失性存储器被配置为基于对应结果来将数据选择性地写入关联数据行的可选位置中,该可选位置被保留以存储来自与关联数据行相关联的处理单元的计算结果。
示例2.示例1的计算系统,其中一个或多个处理单元被配置为基于执行代码来计算对应结果,计算系统还包括管理单元,被配置为:从包括代码行的非易失性存储器获得执行代码。
示例3.示例2的计算系统,其中在代码行的每一个中的执行代码包含指令序列。
示例4.示例3的计算系统,其中一个或多个处理单元的每一个被配置为基于由代码行中的代码行表示的指令序列中的相应指令来同时为多个数据行中的关联数据行计算结果。
示例5.示例1-4的任何组合的计算系统,其中指令序列中的指令包括基本操作。
示例6.示例1-5的任何组合的计算系统,其中设备包括集成电路(IC)。
示例7.示例1-6的任何组合的计算系统,其中设备是多个数据处理单元(DPU)的第一数据处理单元,其中多个数据处理单元的每一个包括相应非易失性存储器和相应一个或多个处理单元,计算系统还包括:被配置为在多个DPU之间传输数据和指令的一个或多个路由器。
示例8.示例1-7的任何组合的计算系统,其中更改在非易失性存储器中的位的对应数据包括编程或擦除对应数据,其中编程在非易失性存储器中的特定位的数据不更改非易失性存储器的其他位的数据,并且其中擦除在非易失性存储器中的特定位的数据不更改在非易失性存储器中的其他位的数据。
示例9.一种方法,包括:由被耦合到非易失性存储器的一个或多个处理单元中的特定处理单元并且基于在与处理单元相关联的多个数据行中的特定数据行中的数据来计算对应结果,非易失性存储器被划分为被分组为多个数据行的多个可选位置,其中非易失性存储器中的每个可选位置被配置为被独立地编程和擦除,其中处理单元中的每个处理单元与多个数据行中的数据行相关联,并且其中一个或多个处理单元和非易失性存储器被包括在相同芯片上;以及基于对应结果来选择性地更改在特定数据行的可选位置中的数据,该可选位置被保留以存储来自与特定数据行相关联的处理单元的计算结果。
示例10.示例9的方法,基于执行代码来计算对应结果,并且其中方法还包括:从包括代码行的非易失性存储器获得执行代码。
示例11.示例10的方法,其中在代码行的每一个中的执行代码包含指令序列。
示例12.示例11的方法,通过一个或多个处理单元中的相应处理单元并且基于由代码行中的代码行表示的指令序列中的相应指令来同时为与相应处理单元相关联的相应数据行计算结果。
示例13.示例9-12的任何组合的方法,其中在指令序列中的指令包括基本操作。
示例14.示例9-13的任何组合的方法,其中,芯片是多个数据处理单元(DPU)中的第一数据处理单元,多个数据处理单元的每一个包括相应的非易失性存储器和相应的一个或多个处理单元,方法还包括:通过一个或多个路由器来在多个DPU之间传输数据或指令。
示例15.示例9-14的任何组合的方法,还包括:在第一时间将多个可选位置中的第一组可选位置与多个数据行的特定数据行关联,特定数据行与多个处理单元中的特定处理单元相关联;以及在第二时间将多个可选位置中的第二组可选位置与特定数据行关联,其中第一组可选位置与第二组可选位置不同。
示例16.一种存储器设备中的处理器,包括:多个装置,用于基于在数据行中的数据来计算对应结果,数据行的每一个包括被划分为多个可选位置的非易失性存储器的一个或多个可选位置,其中在非易失性存储器中的每个可选位置被配置为被独立地编程和擦除,其中用于计算的多个装置的每一个与多个数据行中的数据行相关联,并且其中用于计算的多个装置和非易失性存储器被包括在相同芯片上;以及装置,用于基于对应结果来选择性地更改在数据行的所选择的位置中的数据,该所选择的位置被保留以存储来自与数据行相关联的用于计算的装置的计算结果。
示例17.示例16的存储器设备中的处理器,其中用于计算的多个装置被配置为基于执行代码来计算对应结果,处理器还包括:装置,用于从包括代码行的非易失性存储器获得执行代码。
示例18.示例16-17的任何组合的存储器设备中的处理器,其中在代码行的每一个中的执行代码包含指令序列,其中用于计算的多个装置的每一个被配置为基于由代码行的代码行表示的指令序列的相应指令来同时为多个数据行中的关联数据行计算结果。
示例19.示例16-18的任何组合的存储器设备中的处理器,其中在指令序列中的指令包括基本操作。
示例20.示例16-19的任何组合的存储器设备中的处理器,在存储器设备中的处理器是集成电路(IC)。
可以至少以部分、以硬件、软件、固件或其任何组合来实现本公开中描述的技术。例如,所描述的技术的各个方面可以在一个或多个处理器内被实现,该一个或多个处理器包括一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或任何其它等效的集成或离散逻辑电路、以及这些组件的任何组合。术语“处理器”或“处理电路”通常可以指单独的或与其他逻辑电路组合的前述逻辑电路或任何其他等效电路的任何电路。包括硬件的控制单元还可以执行本公开的技术的一个或多个技术。
这样的硬件、软件和固件可以在相同设备内或在单独的设备内被实现以支持本公开中所描述的各种技术。此外,任何所描述的单元、模块或组件可以一起或单独被实现为离散但可互操作的逻辑设备。作为模块或单元的不同特征的描绘旨在突出不同的功能方面,并不一定暗示这些模块或单元必须由单独的硬件、固件或软件组件来实现。相反,与一个或多个模块或单元相关联的功能可以由单独的硬件、固件或软件组件执行,或被集成在公共或单独的硬件、固件或软件组件中。
也可以在包括用指令编码的计算机可读存储介质的制品中实施或编码在本公开中所描述的技术。诸如当被包括或编码在计算机可读存储介质中的指令由一个或多个处理器执行时,在包括被编码的计算机可读存储介质的制品中所嵌入或编码的指令可以使得一个或多个可编程处理器或其他处理器实现本文所描述的一个或多个技术。计算机可读存储介质可以包括随机存取存储器(random access memory,RAM)、只读存储器(read onlymemory,ROM)、可编程只读存储器(programmable read only memory,PROM)、可擦除可编程只读存储器(erasable programmable read only memory,EPROM)、电可擦除可编程只读存储器(electronically erasable programmable read only memory,EEPROM)、硬盘、光盘ROM(CD-ROM)、软盘、盒式磁带、磁性介质、光学介质、或其他计算机可读介质。在一些示例中,制品可以包括一个或多个计算机可读存储介质。
在一些示例中,计算机可读存储介质可以包括非暂时性介质。术语“非暂时性”可以指示存储介质没有被实施在载波或传播信号中。在某些示例中,非暂时性可以存储能够(例如,在RAM或高速缓存中)随时间改变的介质的数据。
已经描述了各种示例。这些和其他示例在所附权利要求的范围内。
Claims (18)
1.一种包括设备的计算系统,所述设备包括:
非易失性存储器,被划分为多个可选位置,所述非易失性存储器中的每个位被配置为具有被独立地更改的对应数据,其中所述可选位置被分组为多个数据行;以及
一个或多个处理单元,被耦合到所述非易失性存储器,所述处理单元的每一个与所述多个数据行中的数据行相关联,并且所述处理单元的每一个被配置为基于在所述多个数据行中的关联数据行中的数据来计算对应结果,
其中所述非易失性存储器被配置为基于所述对应结果来将数据选择性地写入所述关联数据行的可选位置中,所述可选位置被保留以存储来自与所述关联数据行相关联的所述处理单元的所述计算的结果;以及
其中更改在所述非易失性存储器中的位的对应数据包括编程或擦除所述对应数据,其中编程在所述非易失性存储器中的特定位的数据不更改所述非易失性存储器的其他位的数据,并且其中擦除在所述非易失性存储器中的特定位的数据不更改在所述非易失性存储器中的其他位的数据。
2.根据权利要求1所述的计算系统,其中所述一个或多个处理单元被配置为基于执行代码来计算所述对应结果,所述计算系统还包括管理单元,被配置为:
从包括代码行的非易失性存储器获得所述执行代码。
3.根据权利要求2所述的计算系统,其中在所述代码行的每一个中的所述执行代码包含指令序列。
4.根据权利要求3所述的计算系统,其中所述一个或多个处理单元的每一个被配置为基于由所述代码行中的代码行表示的指令序列中的相应指令来同时为所述多个数据行中的关联数据行计算结果。
5.根据权利要求3或4所述的计算系统,其中所述指令序列中的指令包括基本操作。
6.根据权利要求1所述的计算系统,其中所述设备包括集成电路IC。
7.根据权利要求6所述的计算系统,其中所述设备是多个数据处理单元中的第一数据处理单元,其中所述多个数据处理单元的每一个包括相应的非易失性存储器和相应的一个或多个处理单元,所述计算系统还包括:被配置为在多个数据处理单元之间传输数据和指令的一个或多个路由器。
8.一种执行数据操纵的方法,包括:
由被耦合到非易失性存储器的一个或多个处理单元中的特定处理单元、并且基于在与所述处理单元相关联的多个数据行中的特定数据行中的数据来计算对应结果,所述非易失性存储器被划分为被分组为所述多个数据行的多个可选位置,
其中所述非易失性存储器中的每个可选位置被配置为被独立地编程和擦除,其中所述处理单元中的每个处理单元与所述多个数据行中的数据行相关联,并且其中所述一个或多个处理单元和所述非易失性存储器被包括在相同芯片上;以及
基于所述对应结果来选择性地更改在所述特定数据行的可选位置中的数据,所述可选位置被保留以存储来自与所述特定数据行相关联的所述处理单元的所述计算的结果;
所述的方法,还包括:
在第一时间将所述多个可选位置中的第一组可选位置与所述多个数据行中的特定数据行关联,所述特定数据行与所述多个处理单元中的特定处理单元相关联;以及
在第二时间将所述多个可选位置中的第二组可选位置与所述特定数据行关联,其中所述第一组可选位置与所述第二组可选位置不同。
9.根据权利要求8所述的方法,其中,基于执行代码来计算所述对应结果,并且其中所述方法还包括:
从包括代码行的非易失性存储器获得所述执行代码。
10.根据权利要求9所述的方法,其中在所述代码行的每一个中的所述执行代码包含指令序列。
11.根据权利要求10所述的方法,还包括:
通过所述一个或多个处理单元中的相应处理单元、并且基于由所述代码行中的代码行表示的指令序列中的相应指令来同时为与所述相应处理单元相关联的相应数据行计算结果。
12.根据权利要求10或11所述的方法,其中在所述指令序列中的指令包括基本操作。
13.根据权利要求8所述的方法,其中,所述芯片是多个数据处理单元中的第一数据处理单元,所述多个数据处理单元的每一个包括相应的易失性存储器和相应的一个或多个处理单元,所述方法还包括:
由一个或多个路由器来在所述多个数据处理单元之间传输数据或指令。
14.一种存储器设备中的处理器,包括:
多个装置,用于基于在多个数据行中的数据来计算对应结果,所述多个数据行的每一个数据行包括被划分为多个可选位置的非易失性存储器的一个或多个可选位置,其中在非易失性存储器中的每个可选位置被配置为被独立地编程和擦除,其中用于计算的所述多个装置的每一个与所述多个数据行中的数据行相关联,并且其中用于计算的所述多个装置和所述非易失性存储器被包括在相同芯片上;以及
装置,用于基于所述对应结果来选择性地更改在所述多个数据行的所选择的位置中的数据,所述所选择的位置被保留以存储来自与数据行相关联的用于计算的装置的计算的结果;
装置,用于在第一时间将所述多个可选位置中的第一组可选位置与所述多个数据行中的特定数据行关联,所述特定数据行与用于计算的所述多个装置中的特定装置相关联;以及
装置,用于在第二时间将所述多个可选位置中的第二组可选位置与所述特定数据行关联,其中所述第一组可选位置与所述第二组可选位置不同。
15.根据权利要求14所述的存储器设备中的处理器,其中用于计算的所述多个装置被配置为基于执行代码来计算所述对应结果,所述处理器还包括:
装置,用于从包括代码行的所述非易失性存储器获得所述执行代码。
16.根据权利要求15所述的存储器设备中的处理器,其中在所述代码行的每一个中的所述执行代码包含指令序列,其中用于计算的所述多个装置的每一个被配置为基于由所述代码行中的代码行表示的指令序列的相应指令来同时为所述多个数据行中的关联数据行计算结果。
17.根据权利要求16所述的存储器设备中的处理器,其中在所述指令序列中的所述指令包括基本操作。
18.根据权利要求14所述的存储器设备中的处理器,在存储器设备中的所述处理器是集成电路IC。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/395,474 US10885985B2 (en) | 2016-12-30 | 2016-12-30 | Processor in non-volatile storage memory |
US15/395,474 | 2016-12-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108269601A CN108269601A (zh) | 2018-07-10 |
CN108269601B true CN108269601B (zh) | 2021-09-03 |
Family
ID=62568005
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710833388.7A Active CN108269601B (zh) | 2016-12-30 | 2017-09-15 | 非易失性存储器中的处理器 |
Country Status (3)
Country | Link |
---|---|
US (2) | US10885985B2 (zh) |
CN (1) | CN108269601B (zh) |
DE (1) | DE102017121298A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110795144B (zh) * | 2019-10-30 | 2023-05-12 | 喻海松 | 一种代码共享的商业模式、方法及系统 |
US10971215B1 (en) * | 2020-02-24 | 2021-04-06 | Western Digital Technologies, Inc. | Dynamically adjust data transfer speed for non-volatile memory die interfaces |
TWI773106B (zh) * | 2021-01-28 | 2022-08-01 | 華邦電子股份有限公司 | 具有運算功能的記憶體裝置及其操作方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103946812A (zh) * | 2011-09-30 | 2014-07-23 | 英特尔公司 | 用于实现多级别存储器分级体系的设备和方法 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3533800C1 (de) | 1985-09-21 | 1987-02-05 | Hans-Werner Lang | Verfahren zum Betreiben eines hochintegrierten Wellenfront-Feldrechners sowie entsprechender Wellenfront-Feldrechner |
US5323335A (en) | 1991-07-05 | 1994-06-21 | General Electric Co. | Regular and fault-tolerant Kalman filter systolic arrays |
JP3403298B2 (ja) | 1996-10-25 | 2003-05-06 | シャープ株式会社 | 演算処理装置およびマイクロプロセッサ |
US5983321A (en) * | 1997-03-12 | 1999-11-09 | Advanced Micro Devices, Inc. | Cache holding register for receiving instruction packets and for providing the instruction packets to a predecode unit and instruction cache |
US6542955B1 (en) | 1999-06-03 | 2003-04-01 | Programmable Microelectronics Corporation | Microcontroller virtual memory system and method |
US20020004897A1 (en) * | 2000-07-05 | 2002-01-10 | Min-Cheng Kao | Data processing apparatus for executing multiple instruction sets |
US7546438B2 (en) * | 2001-07-19 | 2009-06-09 | Chung Shine C | Algorithm mapping, specialized instructions and architecture features for smart memory computing |
US20040003201A1 (en) | 2002-06-28 | 2004-01-01 | Koninklijke Philips Electronics N.V. | Division on an array processor |
US7665078B2 (en) * | 2003-08-21 | 2010-02-16 | Gateway, Inc. | Huffman-L compiler optimized for cell-based computers or other computers having reconfigurable instruction sets |
US7181599B2 (en) * | 2004-01-14 | 2007-02-20 | International Business Machines Corporation | Method and apparatus for autonomic detection of cache “chase tail” conditions and storage of instructions/data in “chase tail” data structure |
US7496908B2 (en) * | 2004-01-14 | 2009-02-24 | International Business Machines Corporation | Method and apparatus for optimizing code execution using annotated trace information having performance indicator and counter information |
US7318143B2 (en) * | 2004-10-20 | 2008-01-08 | Arm Limited | Reuseable configuration data |
US7587577B2 (en) * | 2005-11-14 | 2009-09-08 | Texas Instruments Incorporated | Pipelined access by FFT and filter units in co-processor and system bus slave to memory blocks via switch coupling based on control register content |
US8201159B2 (en) | 2006-08-04 | 2012-06-12 | International Business Machines Corporation | Method and apparatus for generating data parallel select operations in a pervasively data parallel system |
US7571300B2 (en) * | 2007-01-08 | 2009-08-04 | Integrated Device Technologies, Inc. | Modular distributive arithmetic logic unit |
JP5089776B2 (ja) | 2007-09-11 | 2012-12-05 | コア ロジック,インコーポレイテッド | 浮動小数点演算のための再構成アレイプロセッサ |
US20110004742A1 (en) * | 2009-07-06 | 2011-01-06 | Eonsil, Inc. | Variable-Cycle, Event-Driven Multi-Execution Flash Processor |
KR101634118B1 (ko) | 2010-03-22 | 2016-06-29 | 삼성전자주식회사 | 메모리 관리 장치 및 방법 |
US9880848B2 (en) * | 2010-06-11 | 2018-01-30 | Advanced Micro Devices, Inc. | Processor support for hardware transactional memory |
US20150324199A1 (en) | 2012-07-06 | 2015-11-12 | Koninklijke Philips N.V. | Computer processor and system without an arithmetic and logic unit |
US9304749B2 (en) * | 2013-09-12 | 2016-04-05 | Marvell World Trade Ltd. | Method and system for instruction scheduling |
WO2015045472A1 (ja) * | 2013-09-24 | 2015-04-02 | 富士通株式会社 | シミュレーション装置、シミュレーション方法およびシミュレーションプログラム |
US9003109B1 (en) * | 2014-05-29 | 2015-04-07 | SanDisk Technologies, Inc. | System and method for distributed computing in non-volatile memory |
JP6139807B2 (ja) * | 2014-12-04 | 2017-05-31 | 株式会社東芝 | ストレージ装置、ストレージ装置の制御方法、及びプログラムを記憶するコンピュータ読み取り可能な不揮発性記憶媒体 |
KR101814577B1 (ko) * | 2015-10-16 | 2018-01-03 | 삼성전자주식회사 | 프로세싱-인-메모리를 이용한 명령어 처리 방법 및 그 장치 |
-
2016
- 2016-12-30 US US15/395,474 patent/US10885985B2/en active Active
-
2017
- 2017-09-14 DE DE102017121298.1A patent/DE102017121298A1/de not_active Withdrawn
- 2017-09-15 CN CN201710833388.7A patent/CN108269601B/zh active Active
-
2020
- 2020-11-24 US US17/103,695 patent/US11705207B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103946812A (zh) * | 2011-09-30 | 2014-07-23 | 英特尔公司 | 用于实现多级别存储器分级体系的设备和方法 |
Also Published As
Publication number | Publication date |
---|---|
US20210082520A1 (en) | 2021-03-18 |
CN108269601A (zh) | 2018-07-10 |
US10885985B2 (en) | 2021-01-05 |
US20180188973A1 (en) | 2018-07-05 |
DE102017121298A1 (de) | 2018-07-05 |
US11705207B2 (en) | 2023-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11614878B2 (en) | Apparatuses and methods for data movement | |
US10114795B2 (en) | Processor in non-volatile storage memory | |
CN114168525B (zh) | 可重构并行处理 | |
US10976943B2 (en) | Apparatuses and methods to change data category values | |
US20230334008A1 (en) | Execution engine for executing single assignment programs with affine dependencies | |
US11705207B2 (en) | Processor in non-volatile storage memory | |
TW201911140A (zh) | 具有常駐在晶片上之參數的神經網路加速器 | |
CN111542826A (zh) | 支持模拟协处理器的数字架构 | |
JP2019537793A (ja) | ニューラルネットワーク計算タイル | |
KR20220054357A (ko) | 직렬 할당 데이터에 대해 pim(processing-in-memory) 연산을 수행하기 위한 방법, 및 관련 메모리 디바이스 및 시스템 | |
CN112236784A (zh) | 修改机器学习模型以改善局部性 | |
CN114341981A (zh) | 具有人工智能模式的存储器 | |
CN111183418A (zh) | 可配置硬件加速器 | |
CN116710912A (zh) | 一种矩阵乘法器及矩阵乘法器的控制方法 | |
Shang et al. | LACS: A high-computational-efficiency accelerator for CNNs | |
EP3108358B1 (en) | Execution engine for executing single assignment programs with affine dependencies | |
EP3859535A1 (en) | Streaming access memory device, system and method | |
Zeng | FPGA-based high throughput merge sorter | |
US20210288650A1 (en) | Semiconductor device and circuit layout method | |
ES2697693B2 (es) | Nucleo ip, arquitectura que comprende un nucleo ip y procedimiento de diseno de un nucleo ip | |
CN116721006A (zh) | 特征图处理方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |