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

文档序号:9727094阅读:来源:国知局
似地,带连号的术语(例如,"real-time (实 时)","pre_defined(预定义)","CPU-based(基于CPU的)"等)可以偶尔与其不带连号 的型式(例如,"real time (实时)'"predefined (预定义)","CPU based (基于 CPU 的)" 等)可互换地使用,并且,大写条目(例如," POPCOUNT(总数计数)"、"Logic Die(逻辑裸 片)"等)可与其非大写型式(例如,"popcount (总数计数)"、"logic die(逻辑裸片)") 可互换地使用。这种偶尔可互换使用不应被视为相互不一致。
[0046] -开始就请注意,术语"结合"、"操作地结合"、"被连接"、"连接"、"被电连接"等在 本文中可互换地使用,通常指的是以可操作的方式电气/电子连接的状态。类似地,当第一 实体将信息信号(无论是否包含地址、数据或控制信息)电发送(无论通过有线还是无线 方式)到(多个)第二实体并且/或者从第二实体接收该信息信号时,第一实体被认为是 与第二实体"通信",而不管这些信号的类型(模拟或数字)如何。进一步请注意,本文中示 出和讨论了的各图(包括部件图)仅仅是出于示范性的目的,而不是按比例绘制。
[0047] 如本文中使用的术语"第一"、"第二"等被用作它们之前的名词的标签,并不意指 任何类型的排序(例如,空间,时间,逻辑等),除非明确定义为这样。
[0048] 目前,所有的实时分析框架依赖于用于存储数据集的存储器,而POPCOUNT操作或 逻辑逐位运算在中央处理单元(CPU)中被执行。结果,大量的数据需要从存储器(在这种 存储器中保存有数据或位图)传输到CPU以便计算。因此,执行总数计数操作或逻辑逐位 运算(诸如,早先提及的超大规模数据中心)的系统的性能受存储器和CPU之间的多次往 返数据传输的约束。
[0049] 在具有4百万用户的网站的前一示例的情况中,大量的数据需要从存储器传输到 CPU以便计算。但是,总数计数操作的CPU生成的结果可以只是约3个字节长,因为222 = 512KB,并因此,CPU可输出log2(222) = 22个二进制位3字节)作为表示512KB位向 量的总数计数值。这类似于使用三个二进制位来计数到八(8),或者使用四个二进制位来计 数到十六(16),等等。因此,总数计数实质上是在大的位向量之上的缩位运算(reduction operation)。但是,如上所述,传统的计算模型是低效的,因为计算时间和能量由大数据集 贯穿系统从存储器到CPU并返回的冗余动作主导。这种低效被进一步加剧,因为通常只有 最终总数计数结果总是被程序使用,并且所有的中间位向量或者数据集将被丢弃。
[0050] 在一个实施例中,存储器模块可被配置为包括控制器,该控制器可包括硬件和/ 或软件以支持总数计数操作和逻辑逐位运算的存储器内实施。在一个实施例中,存储器 模块可以是三维堆栈(3DS)存储器模块,其基片(base)或逻辑裸片(logic die)可被配 置为包括控制器。例如,在POPCOUNT操作的情况中,根据本公开的教导的处理内存储器 (PIM:Processing-In-Memory)模型可向存储器模块(或者,3DS存储器的基片/逻辑裸片) 提供如下的附加物。(i)每次可计算(最多)全动态随机存取存储器(DRAM)页的总数计 数的基于硬件的约简树。(ii)可使能横横跨一个DRAM页不同的尺寸的向量的硬件逻辑。 (iii)特殊寄存器(本文中被称为"P頂结果寄存器(PMResultRegister)"),可存储最终 结果(即,总数计数值)并可由存储器的主机用来检索最终的总数计数值。在特定的实施 例中,在向量尺寸大于DRAM页时,该寄存器也可以用来保持中间结果。在这种情况中,该寄 存器可累积所有的中间结果来最后存储最终结果以供主机后续检索。(iv)接口(诸如,应 用编程接口(API)),主机可使用该接口来启动总数计数并从P頂结果寄存器读取结果。在 一个实施例中,这种操作启动和结果检索可通过对存储器模块中的一个或更多个预定义的 存储位置进行读写来进行。例如,在一个实施例中,API可暴露P頂结果寄存器作为存储有 最终总数计数值的这样一个预定义的存储器位置。因此,对该特殊存储器位置的任何访问 是对PM结果寄存器的直接访问。
[0051] 用于上述的总数计数的存储器内实施的硬件/软件配置可适当地与逻辑逐位运 算的存储器内实施共享。此外,主机接口 API可通过附加指令被适当地扩大,其中每一个附 加指令对应于特定的逻辑功能(OR、AND、NAND等)。因此,在3DS存储器模块的情况中,根 据本公开的教导,3DS存储器模块的逻辑裸片可被配置为使得存储器模块能够在存储器模 块自身内完全处理总数计数操作和逻辑逐位运算。
[0052] 在处理内存储器(P頂)模型中,与总数计数操作和其他的逻辑逐位运算有关的计 算在存储器模块内实现/执行,而无需贯穿整个系统来移动数据。在具体实施例中,存储器 模块可以是基于动态随机存取存储器(DRAM)的三维堆栈(3DS)存储器模块,诸如,高带宽 存储器(HBM)模块,或混合存储器立方体(HMC)存储器模块。在具体实施例中,本公开的教 导也可适用于固态驱动器(SSD)、非3DS DRAM模块和任何其他基于半导体的存储系统,例 如,静态随机存取存储器(SRAM)、相变随机存取存储器(PRAM或PCRAM)、电阻随机存取存储 器(RRAM 或 ReRAM)、导电桥接 RAM(CBRAM)、磁 RAM(MRAM)、自旋转移力矩 MRAM(STT-MRAM) 等。通过将总数计数操作和逻辑逐位运算的处理卸载到存储器,对于存储器-CPU接口(以 及也对其他系统接口)的冗余数据传输被大大地减少,从而提高系统性能和能效。根据本 公开的具体实施例的教导的PM模型由此释放CPU以用于其它任务,减少整个存储器系统 的高速缓冲存储器污染,并通过大大地减少对于存储器-CHJ接口的事物来节省存储器带 宽。
[0053] 因此,本公开的具体实施例提供用于在存储器模块自身内进行总数计数操作和逻 辑逐位运的实施方式,从而消除将大的位向量从存储器移动到CPU的需要。而且,存储器模 块可对较大的向量并行地执行位计数约简树,由此与传统的CPU实施方式相比进一步提高 性能。使用根据本公开的教导的PM方法,可在PM使能存储器自身内执行多个实时分析 任务,从而提高整体系统性能并节省系统功耗/能耗。
[0054] 图1A示出根据本公开的一个实施例的系统10的高度简化的局部布局。如图所 示,系统10可包括存储器模块12,该存储器模块12通过一个或更多个高速链路16与处理 器或主机14连接和通信。在这里的讨论中,附图标记"12"也指存储器模块的封装或壳体。 封装12可包括一个或更多个存储器芯片(未示出),诸如,DRAM(或其他基于半导体的存 储器)芯片。在本公开中,诸如每个存储器模块的裸片/芯片的数量、每个芯片的存储器组 (memory bank)的数量和芯片中的存储器组的内部配置、或每个芯片的存储容量的细节是 不相关的,因此,在本文中没有提供这样的细节。
[0055] 在本公开的具体实施例中,P頂控制器(诸如,图9中的P頂控制器97)可被实现 为存储器模块12的部分。P頂控制器可与主机14交互并管理/促进下面更详细地讨论的 P0PC0UNT操作和逻辑逐位运算的存储器内执行。在具体实施例中,用于P0PC0UNT操作和 逻辑逐位运算的PIM逻辑(或P頂控制器)可在存储器模块12内被实现,而不管"传统的" 存储器控制器是否作为存储器模块的逻辑裸片的部分被集成。
[0056] 在一个实施例中,主机14可以是CPU,该CPU可以是通用微处理器。在这里的讨 论中,为了便于讨论,术语"处理器"和"CPU"可以可互换地使用。但是,这样理解,替代CPU 或作为CPU的补充,处理器14可包含任何其他类型的处理器,诸如,微控制器、数字信号处 理器(DSP)、图形处理单元(GPU)、专用集成电路(ASIC)处理器等。此外,在一个实施例中, 处理器/主机14可包括多于一个的CPU,这些CPU可在分布式处理环境中操作。处理器 14可被配置为根据特定的指令集架构(ISA)(诸如,x86指令集架构(32位或64位型式)、 PowerPC? ISA或者依赖于RISC (精简指令集计算机)ISA的MIPS (无互锁流水阶段的微 处理器)指令集架构)来执行指令和处理数据。在一个实施例中,除了处理器或CPU功能 以外,外部主机还可为具有功能的片上系统(SoC)。
[0057] 存储器模块12和外部主机14之间的高速链路16可提供宽的高速本地总线,用于 存储器模块12和主机14之间的数据移动。如下面稍后更详细地讨论的,在一个实施例中, 在存储器模块12最初被安装在系统10中时,可通过例如由存储器模块12提供给主机14 的应用编程接口(API)来促进基于逻辑裸片的P頂控制器和主机14之间的交互。如图1A 中象征性地示出的,API可通过连接链路16被提供给主机处理器14。如前面指出和稍后在 下面更详细地讨论的,主机14可使用API来启动总数计数和读取总数计数的结果。此外, 主机接口 API可通过附加指令被适当地扩大,每一个附加指令对应于特定的逻辑功能(例 如,OR、AND、NAND等),以便允许存储器模块12在存储器模块自身内执行逻辑逐位运算。
[0058] 这里请注意,仅仅为了便于示出,在图1A中,只有单个存储器模块12作为系统10 的部分被示出。在实际的实施中,系统10可包括多于一个的存储器模块一一所有的存储器 模块可以属于相同的类型或者可以属于不同的类型。在一个实施例中,在处理器14的操作 控制下,系统10可包括3DS以及非3DS存储器模块。通常,存储器模块12可以是任何基 于半导体的存储器或存储系统,早先提及了其一些示例(而且,为了简要起见,这里不再重 复)。此外,这样理解,作为图1A中或图10中的系统10的部分示出的单元自身可包含其他 复杂的组件。但是,这种组件由于缺乏与本公开的相关性而未在图1A或图10中示出。
[0059] 图1B示出使用3DS存储器模块13作为示例的图1A中的系统10的另一个实施例。 附图标记" 13"也指存储器模块的3D封装或壳体。这样理解,3DS存储器配置可提供比相 同尺寸的经典DRAM存储器高的带宽和单元密度。此外,与传统的DRAM存储器(比如双数 据速率2、3或4(DDR2/DDR3/DDR4)存储器)相比,3DS存储器模块可消耗更少的功率并以 更高的频率操作。在一个实施例中,3DS存储器模块13可以是HBM模块。在另一个实施例 中,3DS存储器模块13可以是HMC存储器模块。
[0060] 在图1B的示例性实施例中,3D封装13被示出为包括堆叠在彼此的顶部上的四个 (4) DRAM裸片/芯片18以及在堆栈的DRAM芯片的底部上的基片/逻辑裸片20。虽然每一 个DRAM芯片使用附图标记18-1至18-4被单独地标识,但是,它们可以由附图标记"18"统 称。DRAM芯片18可以是同步DRAM (SDRAM)存储器,其可使用穿硅通孔(TSV)和/或微凸 (未示出)相互连接并连接到逻辑基片20。在另一个实施例中,在存储器模块13中可存在 多于或少于四个的DRAM的裸片。
[0061] 在3DS存储器配置中,存储器控制器功能可作为单独的逻辑裸片(例如,图1B中 的逻辑裸片20)被集成到存储器封装中。逻辑裸片20可提供外部主机/处理器14与DRAM 芯片18之间的必要的接口。因此,存储器模块13和主机14之间的数据和控制信息的所有 传输可通过逻辑裸片20并由其控制。在本公开的具体实施例中,P頂控制器(诸如,图9中 的P頂控制器97)可被实施为逻辑裸片20的部分。如前所述,用于P0PC0UNT操作和逻辑 逐位运算的PIM逻辑(或P頂控制器)可在存储器模块13内被实施,而不管"传统的"存 储器控制器是否作为存储器模块的逻辑裸片20的部分被集成。
[0062] 逻辑裸片20和外部主机14之间的高速链路16可提供宽、高速本地总线以用于 3DS存储器模块13和主机14之间的数据移动。如下面稍后更详细地讨论的,在一个实施例 中,在存储器模块13最初被安装在系统10中时,可通过诸如由3DS存储器模块13的逻辑 裸片20提供给主机14的API来促进基于逻辑裸片的P頂控制器和主机14之间的交互。
[0063] 这里请注意,仅仅为了便于图示,在图1B中,只有单个存储器模块13作为系统10 的部分被示出。在
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1