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

文档序号:9727094阅读:来源:国知局
实际的实施方式中,系统10可包括多于一个的3DS存储器模块--所有 的3DS存储器模块可以属于相同的类型或者可以属于不同的类型。在一个实施例中,在处 理器14的操作控制下,系统10可包括3DS以及非3DS存储器模块和半导体存储器。此外, 这样理解,作为图1B中的系统10的部分而被示出的单元自身可包含其他复杂的组件。但 是,这种组件由于缺乏与本公开的相关性而未在图1B中示出。
[0064] 尽管下面的讨论可经常参考图1B中的基于DRAM的存储器配置,但是,这种参考本 质上纯粹是示例性的;图1B中的配置仅仅被用来便于讨论根据本公开的具体实施例的pm 模型。这样理解,本公开的教导仍然适用于任何基于半导体的存储器或存储系统,诸如,前 述的SRAM、PRAM、RRAM、CBRAM等。为了简要起见,当在图1A至1B中示出的存储器模块的 情景中解释本公开的教导时,没有提及所有的这样的基于半导体的存储系统/存储器。 [0065] 在下面的讨论中,假设要执行总数计数操作的位向量或位图已经被存储在存储器 模块12中的一个或更多个半导体存储器芯片(例如,存储器模块13中的DRAM芯片18)中。 类似地,还假设要执行逻辑逐位运算的两个或更多个位向量也被存储在一个或更多个DRAM 芯片18中。关于这些位图如何被存储在存储器芯片中或者这些位向量的源的信息与本公 开无关,因此,不对此进行进一步的详述。
[0066] 图2示出表示根据本公开的一个实施例可如何执行总数计数操作的示例性流程 图25。流程图25中示出的处理可由存储器模块12执行。更具体地,在一个实施例中,图 2中示出的步骤可由可实施在存储器模块12 (诸如,如图9所示的逻辑部95中的P頂控制 器97)中的控制器执行。最初,在框27处,存储器模块12可从主机14接收指令,以对在存 储器模块12中的一个或更多个存储器中存储的位向量执行P0P0C0UNT操作。如前所述,且 如框28所示,存储器模块12可以是具有一个或更多个存储器18的3DS存储器模块13,或 者,可以是任何其他的基于半导体的存储器(其一些示例在前面被给出)。3DS存储器模块 13可以是HBM存储器模块或者HMC存储器模块。响应于在框27处的来自主机的指令,在 框29处所指出的,存储器模块12可在存储器模块自身内执行P0PC0UNT操作一一而没有将 位向量传输到主机以便执行总数计数操作。因此,与总数计数操作的传统的基于处理器/ CPU的执行形成对照,图2中的实施例提供用于总数计数操作的基于存储器的执行,从而显 著地消除了在主机/处理器14和存储器模块12之间传输大的数据集的需要。通过这种存 储器内处理来消除冗余数据移动,改善了指令执行时间并减少了系统延迟和高速缓冲存储 器污染(由于更少需要在高速缓存器中存储位向量),同时节省系统能量和功率。由此,本 文中公开的P頂模型减少CPU负载并释放CPU/主机用于其它任务。稍后下面参考图4至 7的讨论来提供存储器模块12可如何执行总数计数操作的一些示例性细节。
[0067] 如在框30处所指出的,在执行总数计数操作之后,存储器模块12可在存储器模块 12内存储处理的结果一一即,在框27处输入的位向量的总数计数值。如稍后讨论的,在一 个实施例中,这种结果可作为执行总数计数操作的最终结果被存储在存储器模块12内的 预定义的存储位置中以便提交给主机。随后,在框31处,存储器模块12可在诸如主机14 访问存储器模块12以检索结果时将总数计数操作的结果提供或发送给主机14。
[0068] 图3描绘示出根据本公开的一个实施例可以如何执行逻辑逐位运算的示例性流 程图33。除了其关注逻辑逐位运算以外,图3中的流程图33基本上类似于图2中的流程图 25,因此,这里仅仅提供图3的简要描述。如图2中的情况一样,图3中的流程图33中图示 的处理也可以由存储器模块12执行。更具体地讲、,在一个实施例中,图3中图示的步骤可 以由逻辑裸片20中的控制器(例如,图9中的P頂控制器97)执行。最初,在框35处,存储 器模块12可从主机14接收指令,以对在存储器模块12中的一个或更多个存储器(例如, 3DS存储器模块13中的存储器18)中存储的两个或更多个位向量执行逻辑逐位操作。如前 所述,且如在框36处所示,存储器模块12可以是3DS存储器模块,例如,HBM存储器模块或 者HMC存储器模块,并且,逻辑逐位运算可以是,例如,OR、AND、NOT、NAND、X0R或N0R运算。 稍后下面在图8A和8B的讨论的情景中讨论示例性的逻辑逐位AND运算。通常,如前所述, 存储器模块12可以是任何基于半导体的存储系统,并且,逻辑逐位运算可以是任何逻辑运 算,而不管它是否在这里被明确提到。响应于在框35处的来自主机的指令,如在框37处所 指出的,存储器模块12可在存储器模块自身内执行指定的逻辑逐位运算一一而没有将位向 量传输到主机来执行。因此,基于存储器的执行显著地消除了系统中的冗余数据移动并提 高系统性能,同时节省系统能量和功率。逻辑逐位运算的执行的P頂模型也减少CPU负载 并释放CPU/主机用于其它任务。
[0069] 如在框38处所指出的,在执行逻辑逐位运算之后,存储器模块12可在存储器模块 12内存储处理的结果。如稍后讨论的,在一个实施例中,这种结果可被存储在存储器模块 12内的预定义的存储位置中,以提交给主机。在框39处,存储器模块12可在诸如主机14 访问存储器模块12以检索结果时将结果提供给主机14。
[0070] 在下面的讨论中,参考图4至7提供总数计数操作的存储器内实施方式的细节,并 且,参考图8A至8B提供逻辑逐位运算的存储器内实施方式的细节。在具体实施例中,对于 逻辑逐位运算,可适当地修改或共享图4至7中图示的总数计数特定的实施昂视,也如下所 述。
[0071] 图4是描绘根据本公开的一个实施例在图1A的存储器模块12 (或者图1B的3DS 存储器模块13)内可如何执行总数计数操作的示例性略图42。如图2中的框27所指出的, 在一个实施例中,存储器模块12可响应于来自主机14的指令来启动P0PC0UNT操作,以执 行总数计数。图4中的框44指示这种由存储器模块12进行的P0PC0UNT操作的启动。在 一个实施例中,总数计数操作可按两个步骤实施。最初,如在框45处所指出的,存储器模块 12可对预定义的小数据类型(对特定的位向量)(诸如,对位向量的每一个8位部分)执行 总数计数。此后,如在框46处所指出的,存储器模块12可使用约简树(稍后讨论)来累积 中间结果并产生最终总数计数。因此,在一个实施例中,在框45处的结果可以是用于在框 46处的约简树的输入。更具体地讲,如稍后参考图6至7所讨论的,在框45处的操作可形 成在框46处的约简树的第一阶段。
[0072] 作为在框45处的总数计数的一部分,在一个实施例中,存储器模块12 (例如,3DS 存储器模块13中的逻辑裸片20)可将位向量中的位划分成每一个为8位的多个非重叠段。 然后,存储器模块12可针对每一段计算段特定的位计数。然后,可使用约简树来将所有的 这种段特定的位计数相加来产生最终的总数计数值。这样理解,8位长度的段被选择仅是示 例。在不同的实施例中,在框45处的预定义的数据类型可以小于或大于8位。
[0073] 在图4中,列出两个示例性方法来执行在框45处的部分位计数一一(i)基于查找 表(LUT)的计数(框47)或者(ii)通过一系列的移位和逻辑逐位运算的计数(框48)。在 要对其执行总数计数的位向量的8位段的情况中,LUT可能需要256个条目(28 = 256)-- 每一个条目保持与被表示为LUT的地址输入的8位向量段对应的位计数结果(未示出)。 在一个实施例中,在框47处的基于LUT的总数计数可在单个时钟循环中被执行。
[0074] 可替换地,如在框48处所指出的,针对8位向量段的位计数可通过一系列的移位 和逻辑逐位运算来实施。图5示出根据本公开的一个实施例的用于对8位向量段中的位进 行计数的示例性伪代码。为了便于关联,在图5中使用相同的附图标记"48"来指用于在图 4中的框48处的计数操作的伪代码。在图5中,逻辑逐位运算AND用和(号指示,并 且,使用不同的十六进制数(使用"〇x"前缀(例如,在"0x33333333"中)表示)来实现移 位。
[0075] 参考图4中的框46,例如使用约简树,可以将对小数据尺寸的总数计数(框45)相 加。在图4中指出约简树的两个示例性配置:(i)如图6所示的全约简树(框49)(下面讨 论)或者(ii)紧凑约简树(框50),该紧凑约简树可重新使用加法器来缩小约简树的总尺 寸,如图所示(下面讨论)。
[0076] 图6示出根据本公开的一个实施例的用于对16字节数据进行总数计数的全约简 树49的示例。在一个实施例中,全约简树49可以是在存储器模块12内实施的专用功能块。 在另一个实施例中,全约简树49可被实施为专用功能块,该专用功能块被实现为3DS存储 器模块13的逻辑裸片20中的逻辑单元。在另一个实施例中,如图9所示,这种逻辑单元可 以被实施为PM控制器97的一部分。在图6中,位向量的(要对其执行总数计数)16字节 部分由8位块B0至B15标识--使用附图标记"55"统一标识。每一个这样的8位块被输 入到对应的位计数单元。在图6中,所有这样的位计数单元被统一指示为"CNT8"块,并且, 为了便于图示,使用附图标记"57"被统一标识。CNT8块57构成约简树49的第一阶段,并 且实施在图4中的框45处所指出的总数计数操作。因此,在一个实施例中,图6中的每一 个CNT8块可使用图4中的框47的基于LUT的方法来执行8位总数计数。可选择地,在另 一个实施例中,每一个CNT8块可使用图5中的示例性伪代码48来对8位执行总数计数,该 伪代码表示图4中的移位和逻辑逐位计数步骤48。约简树49中的随后的级/阶段可以是 简单的加法器。例如,如图6所示,约简树49的第二级可包括被指示为"ADD0"块且使用附 图标记"59"统一标识的加法器,约简树49的第三级可包括被指示为"ADD1"块且使用附图 标记"61"统一标识的加法器,约简树49的第四级可包括被指示为"ADD2"块且使用附图标 记"63"统一标识的加法器,并且约简树49的第五级可包括被指示为"ADD3"块且使用附图 标记"65"统一标识的加法器。由图6可知,随着从约简树49中的第二级59到更高级进行 加法,加法器可变宽。
[0077] 可使用来自第二级的对应加法器59将来自每一对的CNT8块的位计数相加,然后, 可使用来自第三级的对应加法器61将来自第二级的一对加法器的输出相加,等等。最后, 加法器65的输出可被存储在累积器单元(Accumulator Unit) 66中,在一个实施例中,累积 器单元66可以是图9中示出且稍后下面讨论的P頂结果寄存器99。此后,与(对其正在 执行POPCOUNT操作的)位向量相关联的另一个16字节块数据可从适当的存储器芯片(诸 如,图1B中的存储器芯片18)中被检索并被应用于约简树49以进行总数计数。以这样的方 式,每一个16字节块的向量数据的位计数可被累积并在单元66中被相加,以产生针对正在 考虑的位向量的POPCOUNT操作的最终结果。然后,最终POPCOUNT值可由处理器14检索。
[0078] 图7是根据本公开的一个实施例的用于对16字节数据进行总数计数的紧凑约简 树50的示例。与图6中的全约简树49形成对照,图7中的紧凑约简树50对于与给定的总 数计数操作相关联的每一次约减迭代(reduction iteration)重新使用相同组的加法器。 结果,图7中的实施方式可减少加法器的数量,但是,可能会增加执行约简所需的时间的成 本。由于需要使用一级中的加法器的输出作为下一级中的加法器的输入,所以也可能会增 加路由矩阵的复杂性。在一种实施方式中,紧凑约简树50可包括一般的加法器单元70,该 加法器单元可被存储器模块12中的其他组件(例如,存储器模块13中的基片逻辑裸片20 中的组件)共享。在一个实施例中,紧凑约简树50可作为图9中示出的P頂控制器97的 一部分而被包括。加法器单元70在图7中以虚线示出。到加法器单元70的输入可以是来 自CNT8单元57的最初的总数计数(表示图4中的框45)。加法器单元70可包括多个复 用器(被指示为"MUX"块并使用附图标记"72"统一标识),以从形成约简树的第一阶段的 CNT8单元57接收对应的输入。复用器72也可以接收以加法器单元70中的"ADD"块的输 出的形式的第二组输入。"ADD"或加法器块使用附图标记"7
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1