用于支持存储器内处理的方法和存储器模块的制作方法

文档序号:9727094阅读:429来源:国知局
用于支持存储器内处理的方法和存储器模块的制作方法
【专利说明】
[0001] 本申请要求于2014年10月1日提交的第62/058, 568号美国临时申请以及2015 年4月15日提交的第14/687, 676号美国临时申请的优先权,所述美国临时申请的公开通 过引用全部合并于此。
技术领域
[0002] 本公开总体地涉及存储器。更具体地且不以限制的方式,在本公开中公开的各发 明方面的具体实施例涉及在存储器模块自身内总数计数操作(P0PC0UNT operation)和逻 辑逐位运算的处理。
【背景技术】
[0003] 延迟敏感处理和实时分析被预计占据超大规模数据中心中的处理周期的显著部 分,该超大规模数据中心可包括基于云的计算中心。实时分析是一个正在成长的市场,据估 计,到2018年将超过一百三十亿美金。位图(bitmap)操作是很多实时分析操作中的重要组 成部分(building block)。位图存储用户、事件、网页等的位阵列。此外,位图便于许多有 效的查询,诸如,事件的跟踪,或者,唯一访问者的数量的跟踪,数据挖掘等。对于位图的常 见的实时分析操作包括P0PC0UNT操作(在下面讨论)和逻辑逐位运算,例如,0R( "或")、 AND( "与")、X0R( "异或")、NAND( "与非")等。
[0004] 实时分析中的常见的用例是通过大位图(large bitmap)维护网站使用的各种统 计数据。P0PC0UNT(或总数计数)操作对位序列中的一(1)的数量进行计数。它的使用传 统上一直在密码学中,但近年来在实时数据分析域中越来越受到欢迎。例如,网站可通过位 向量(其中,每一个"1"位对应于一个用户)来跟踪每个用户的网页访问。因此,对给定 网页的唯一访问者的数量进行计数实际上是对位向量进行总数计数。作为示例,在具有4 百万用户的网站的情况下,需要考虑到所有的用户的位向量的大小为512千字节(KB)的数 量级上(=4MB(兆比特))。
[0005] 这里请注意,为了便于讨论,大写术语"P0PC0UNT(总数计数)"(它的非大写型式 "popcount")和术语"bitcount (位计数)"可以在本文中可互换地使用。类似地,为了便 于讨论,术语"位图"和"位向量"可以在下面可互换地使用,其实际上指位序列。

【发明内容】

[0006] 在一个实施例中,一种用于支持存储器内处理的方法可包括如下步骤:在存储器 模块处从主机接收用于对在存储器模块中存储的位向量执行总数计数操作的指令;以及, 在存储器模块内执行总数计数操作,而不将位向量传输到主机以执行总数计数操作。
[0007] 所述方法还可包括如下步骤:在存储器模块内存储执行总数计数操作的结果;以 及,将所述结果从存储器模块提供给主机。
[0008] 执行总数计数操作的步骤可包括:将位向量中的位划分成多个非重叠段;针对所 述多个非重叠段中的每一个非重叠段,计算段特定的位计数;以及,将所有的段特定的位计 数相加来产生所述结果。
[0009] 每一个非重叠段可包括8位。
[0010] 计算段特定的位计数的步骤可包括如下方式中的一个:使用在存储器模块中存储 的查找表(LUT)来获得段特定的位计数;以及,对所述多个非重叠段中的每一个非重叠段 执行一系列的移位和逻辑逐位运算来产生段特定的位计数。
[0011] 将所有的段特定的位计数相加的步骤可包括:使用每一个段特定的位计数作为对 于存储器模块内的多个加法器中的对应一个加法器的输入;以及,累积所述多个加法器中 的所有加法器的输出来产生所述结果。
[0012] 所述方法还可包括如下步骤:从主机接收存储器模块中的存储有位向量的相应部 分的存储器位置的物理地址;针对每一个接收到的物理地址,从存储器位置检索位向量的 相应部分;对检索到的位向量的部分执行部分位计数;以及,组合所有的部分位计数的结 果,来实现对位向量的总数计数操作的执行。
[0013] 所述方法还可包括如下步骤:在存储器模块内的预定义的存储位置中存储每一个 接收到的物理地址;访问预定义的存储位置,以获得用于检索位向量的相应部分的每一个 接收到的物理地址;以及,将所有的部分位计数的组合结果存储在预定义的存储位置中以 便提交给主机作为执行总数计数操作的最终结果。
[0014] 存储器模块可以是三维堆栈存储器模块、高带宽存储器模块、混合存储器立方体 存储器模块、固态驱动器、动态随机存取存储器模块、静态随机存取存储器、相变随机存取 存储器、电阻随机存取存储器、导电桥接随机存取存储器、磁随机存取存储器以及自旋转移 力矩磁随机存取存储器中的一个。
[0015] 位向量可通过加密算法而被生成。
[0016] 所述方法还可包括如下步骤:基于执行总数计数操作的结果,确定加密算法的加 密质量。
[0017] 位向量可被存储在存储器模块中。
[0018] 所述方法还可包括如下步骤:在存储器模块内存储执行总数计数操作的结果;以 及,将结果从存储器模块提供给主机。
[0019] 在另一个实施例中,一种用于支持存储器内处理的方法可包括如下步骤:在存储 器模块处从主机接收用于对在存储器模块中存储的两个或更多个位向量执行逻辑逐位运 算的指令;以及,在存储器模块内执行逻辑逐位运算,而没有将位向量传输到主机以便执 行。
[0020] 所述方法还可包括如下步骤:在存储器模块内存储执行逻辑逐位运算的结果;以 及,将所述结果从存储器模块提供给主机。
[0021] 逻辑逐位运算可以是或运算、与运算、非运算、非与运算、或非运算、以及,异或运 算中的一个。
[0022] 执行逻辑逐位运算的步骤可包括:将每一个位向量划分成多个位向量特定的非重 叠段;将来自所有的位向量的对应的位向量特定的非重叠段对齐成多组对齐的段;对每一 组对齐的段执行逻辑逐位运算,从而产生多个部分结果;以及,组合所有的部分结果,来实 现逻辑逐位操作的执行。
[0023] 每一个位向量特定的非重叠段可包括8位。
[0024] 所述方法还可包括在将每一个位向量划分成多个位向量特定的段之前执行如下: 从主机接收存储器模块中的存储有相应的位向量的存储器位置的物理地址;以及,从对应 的存储器位置检索位向量。
[0025] 所述方法还可包括:在存储器模块内的预定义的存储位置中存储每一个接收到的 物理地址;访问预定义的存储位置,以获得用于检索相应的位向量的每一个接收到的物理 地址;以及,在预定义的存储位置中存储组合所有的部分结果的最终结果,以便将来提交给 主机。
[0026] 存储器模块可以是三维堆栈存储器模块、高带宽存储器模块、混合存储器立方体 存储器模块、固态驱动器、动态随机存取存储器模块、静态随机存取存储器、相变随机存取 存储器、电阻随机存取存储器、导电桥接随机存取存储器、磁随机存取存储器以及自旋转移 力矩磁随机存取存储器中的一个。
[0027] 在另一个实施例中,一种存储器模块可包括:存储器芯片;以及,逻辑裸片,与存 储器芯片连接,并且控制存储器芯片和外部主机之间的数据传输,其中,逻辑裸片包括控制 器,该控制器执行对在存储器芯片中存储的第一位向量的总数计数操作和对在存储器芯片 中存储的两个或更多个第二位向量的逻辑逐位运算中的至少一个,其中,控制器响应于从 主机接收用于执行总数计数操作的指令而执行总数计数操作,而没有将第一位向量传输到 主机以便执行总数计数操作,以及,其中,控制器响应于从主机接收用于执行逻辑逐位运算 的指令而执行逻辑逐位运算,而没有将第二位向量传输到主机以便执行逻辑逐位运算。
[0028] 存储器模块可以是三维堆栈存储器模块、高带宽存储器模块、混合存储器立方体 存储器模块、固态驱动器、动态随机存取存储器模块、静态随机存取存储器、相变随机存取 存储器、电阻随机存取存储器、导电桥接随机存取存储器、磁随机存取存储器以及自旋转移 力矩磁随机存取存储器中的一个。
[0029] 逻辑裸片还可包括:寄存器,与控制器结合,其中,在总数计数操作的执行之后,寄 存器由控制器操作以存储执行总数计数操作的第一结果,并且控制器将第一结果发送到存 储器模块内的第一存储位置,以便由主机检索执行总数计数操作的第一结果,以及,其中, 在逻辑逐位运算的执行之后,寄存器由控制器操作以存储执行逻辑逐位运算的第二结果, 并且控制器将第二结果发送到存储器模块内的第二存储位置,以便由主机检索。
[0030] 控制器可包括:处理逻辑单元,包括多个加法器,其中处理逻辑单元执行作为执行 总数计数操作的部分的如下操作:从存储器芯片检索第一位向量;将第一位向量中的位划 分成多个非重叠段;针对所述多个非重叠段中的每一个非重叠段,计算段特定的位计数; 使用每一个段特定的位计数作为对于所述多个加法器中的对应一个的输入;在寄存器中累 积来自所述多个加法器中的所有加法器的输出;将所有累积的输出相加来产生第一结果; 以及,在寄存器中存储第一结果。
[0031] 根据本公开的各方面,建议了一种存储器内处理(P頂)模型,其中,与总数计数操 作和逻辑逐位运算有关的计算在存储器模块内而不是在主机中央处理单元(CPU)内实现。 存储器内执行由此消除了贯穿整个系统将数据从大的位向量移动的需要。通过将这些操作 的处理卸载到存储器,经由存储器-CPU接口的冗余数据传输被大大地减少,从而提高系统 性能和能效。存储器模块的逻辑裸片中的控制器和专用寄存器操作用来与主机连接并提供 由主机请求的总数计数操作和逻辑逐位运算的存储器内执行。本公开的PIM模型由此释放 CPU用于其他任务,因为现在可以在P頂使能存储器自身内执行许多实时分析任务。存储器 模块可以是三维堆栈(3DS)存储器或任何其他的半导体存储器。
【附图说明】
[0032] 在下面的部分中,将参考在附图中图示的示例性实施例来描述本公开的各发明方 面,在附图中:
[0033] 图1A示出根据本公开的一个实施例的系统的高度简化的局部布局;
[0034] 图1B示出作为示例的图1A中的系统的使用3DS存储器模块的另一个实施例;
[0035] 图2示出表示根据本公开的一个实施例的可如何执行总数计数操作的示例性流 程图;
[0036] 图3描绘示出根据本公开的一个实施例的可如何执行逻辑逐位运算的示例性流 程图;
[0037] 图4是描绘根据本公开的一个实施例的在图1A至1B的存储器模块内可如何执行 总数计数操作的示例性略图;
[0038] 图5示出根据本公开的一个实施例的用于对8位向量段中的位进行计数的示例性 伪代码;
[0039] 图6示出根据本公开的一个实施例的用于对16字节数据进行总数计数的全约简 树(full reduction tree)的不例;
[0040] 图7示出根据本公开的一个实施例的用于对16字节数据进行总数计数的紧凑约 简树(compact reduction tree)的不例;
[0041] 图8A至图8B示出根据本公开的具体实施例的在图1A的存储器模块内可如何执 行逻辑逐位运算的两个示例性实施方式;
[0042] 图9示出根据本公开的一个实施例的图1A中的存储器模块的逻辑部的示例性布 局;以及
[0043] 图10描绘根据本公开的一个实施例的图1A中的系统的整体布局。
【具体实施方式】
[0044] 在下面的详细描述中,为了提供对本公开的彻底的理解,阐述了大量的具体细节。 但是,本领域的技术人员将会理解,所公开的各发明方面可以在没有这些具体细节的情况 下被实践。在其他示例中,公知的方法、过程、部件和电路未被详细地描述,以便不模糊本公 开。此外,所描述的发明方面可被实现以在包括例如3DS以及非3DS存储器的任何的基于 半导体的存储系统中执行内存储器操作。
[0045] 贯穿本说明书中对"一个实施例"或"实施例"的提及是指,结合该实施例描述的 特定的特征、结构或特性被包括在本公开的至少一个实施例中。因此,在贯穿本说明书的不 同地方中短语"在一个实施例中"或"在实施例中"或"根据一个实施例"(或具有类似含义 的其他短语)的出现未必都指同一实施例。此外,特定的特征、结构或特性可以在一个或更 多个实施例中以任何合适的方式组合。另外,根据本文中讨论的情景,单数术语可包括其复 数形式,并且,复数术语可包括其单数形式。类
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1