一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

动态多存储体存储器命令合并的制作方法

2023-02-16 13:05:52 来源:中国专利 TAG:

动态多存储体存储器命令合并


背景技术:

1.相关技术描述
2.在计算机系统中,计算能力的增长一直快于存储器带宽。同时,已经提出新兴技术诸如存储器内处理(pim)来解决这个问题,但这些新兴技术正在转移动态随机存取存储器(dram)装置中的命令和数据带宽需求的平衡。这使存储器命令带宽成为新的潜在瓶颈。
附图说明
3.通过结合附图参考以下描述,可更好地理解本文描述的方法和机制的优点,在附图中:
4.图1是计算系统的一个具体实施的框图。
5.图2是支持pim的系统的一个具体实施的框图。
6.图3是存储器装置的一个具体实施的框图。
7.图4是存储器控制器的一个具体实施的框图。
8.图5是示出用于将存储器命令动态地合并为多存储体命令的方法的一个具体实施的一般化流程图。
9.图6是示出用于将存储器命令动态地合并为多存储体命令的方法的一个具体实施的一般化流程图。
10.图7是示出用于操作能够将多个命令合并为单个多存储体命令的存储器控制器的方法的一个具体实施的一般化流程图。
具体实施方式
11.在以下描述中,阐述了许多具体细节以提供对本文呈现的方法和机制的透彻理解。然而,本领域普通技术人员应当认识到,可在没有这些具体细节的情况下实践各种具体实施。在一些情况下,未详细示出众所周知的结构、部件、信号、计算机程序指令和技术,以避免模糊本文描述的方法。应当了解,为了简单和清楚说明,附图中所示的元件不一定按比例绘制。例如,这些元件中的一些元件的尺寸可相对于其它元件被放大。
12.本文公开了用于动态地合并多存储体存储器命令以提高命令吞吐量的各种系统、设备和方法。在一个具体实施中,一种系统包括用于在存储器控制器中实现请求的动态合并以实现多存储体存储器内处理(pim)命令的机制,这些命令更加带宽高效并且因此可提高有效命令带宽。这允许提高命令吞吐量是瓶颈的新兴工作负载的性能。这些机制使得新兴工作负载能够以更快速率向动态随机存取存储器(dram)供应命令并且因此在命令吞吐量是瓶颈的系统中更有效地利用存储器带宽。这些系统包括执行稀疏工作负载、不规则工作负载、目标数据尚未在通道中跨存储体完美地对准的工作负载和/或其它工作负载的支持pim的装置。虽然本文描述的技术是指动态地合并多存储体存储器命令,但应当理解,这些技术适用于共享控制接口(例如,共享命令总线)的任何存储器模块集合。另外,应当注意,“存储体”可更一般地称为“模块”,并且术语“多存储体”也可称为“多播”。
13.在一个具体实施中,一种系统包括支持pim的硬件。支持pim的硬件将计算移动成靠近存储器,利用靠近存储器的逻辑产生与主机可用存储器带宽相比更高的存储器带宽的益处。例如,可能的pim配置包括在每个dram存储体内添加矢量计算元件。在这种配置中,通过使得主机能够并行触发多个dram存储体处的计算而无需跨dram接口进行数据移动,支持pim的系统能够增加可实现的存储器带宽并且提高类别越来越多的数据有限工作负载的性能。
14.在一个具体实施中,存储器包括能够在存储器内执行计算的pim元件。处理器生成针对存储器的存储器请求,这些存储器请求被发送到存储器控制器。存储器控制器将从处理器接收的请求存储在一个或多个队列中,并且存储器控制器确定是否有机会将多个请求一起合并为单个多存储体请求。在将多个请求合并为单个组合请求之后,存储器控制器将单个请求和指定针对哪些存储体的多存储体代码跨存储器总线传送到多个单独存储体。存储器存储体并行地处理请求,并且pim元件处理接近每个相应存储体的数据。
15.在一个具体实施中,执行稀疏嵌入查找操作,这对于许多推荐机器学习网络是常见的,其中查找操作通常支配执行时间。该查找操作从(包含数百万个嵌入条目的)海量嵌入表中稀疏地读出大型嵌入物(例如,包含数百个元素的阵列)并且将这些大型嵌入物累积在一起。通常存在最少重用,因此性能对存储器带宽高度敏感。对于在dram中包括pim元件的系统,可避免跨dram接口进行数据传递,因此性能代替地受pim命令可被发送到dram的速率限制。将多个pim命令合并为单个多存储体命令增加了有效命令带宽并且提高了这些查找操作的总体性能。
16.现在参考图1,示出了计算系统100的一个具体实施的框图。在一个具体实施中,计算系统100至少包括处理器105a-105n、输入/输出(i/o)接口120、总线125、存储器控制器130、网络接口135、存储器装置140、显示控制器150以及显示器155。在其它具体实施中,计算系统100包括其它部件并且/或者计算系统100以不同方式布置。处理器105a-105n表示包括在系统100中的任何数量的处理器。
17.在一个具体实施中,处理器105a是通用处理器,诸如中央处理单元(cpu)。在该具体实施中,处理器105a执行用于控制系统100中其它处理器中的一个或多个其它处理器的操作的驱动器110(例如,图形驱动器)。应当注意,根据具体实施,驱动器110可使用硬件、软件和/或固件的任何合适的组合来实现。在一个具体实施中,处理器105n是具有高度并行架构的数据并行处理器。数据并行处理器包括图形处理单元(gpu)、数字信号处理器(dsp)、现场可编程门阵列(fpga)、专用集成电路(asic)等。在一些具体实施中,处理器105a-105n包括多个数据并行处理器。在一个具体实施中,处理器105n是向显示控制器150提供像素以便驱动到显示器155的gpu。
18.存储器控制器130表示可由处理器105a-105n访问的任何数量和类型的存储器控制器。虽然存储器控制器130被示出为与处理器105a-105n分离,但应当理解,这仅仅表示一个可能的具体实施。在其它具体实施中,存储器控制器130可嵌入处理器105a-105n中的一个或多个处理器内,并且/或者存储器控制器130可位于与处理器105a-105n中的一个或多个处理器相同的半导体芯片上。存储器控制器130耦接到任何数量和类型的存储器装置140。例如,存储器装置140中的存储器的类型包括高带宽存储器(hbm)、非易失性存储器(nvm)、动态随机存取存储器(dram)、静态随机存取存储器(sram)、nand快闪存储器、nor快
闪存储器、铁电随机存取存储器(feram)等。在一个具体实施中,存储器装置140包括用于执行更靠近数据的计算的存储器内处理(pim)装置145。
19.i/o接口120表示任何数量和类型的i/o接口(例如,外围部件互连(pci)总线、pci-扩展(pci-x)、pcie(pci高速)总线、吉比特以太网(gbe)总线、通用串行总线(usb))。各种类型的外围装置(未示出)耦接到i/o接口120。此类外围装置包括(但不限于)显示器、键盘、鼠标、打印机、扫描仪、操纵杆或其它类型的游戏控制器、媒体记录装置、外部存储装置、网络接口卡等。网络接口135用于跨网络(未示出)接收和发送网络消息。
20.在各种具体实施中,计算系统100是计算机、膝上型计算机、移动装置、游戏控制台、服务器、流式传输装置、可穿戴装置或各种其它类型的计算系统或装置中的任一种。应当注意,计算系统100的部件的数量因具体实施而异。例如,在其它具体实施中,存在比图1所示的数量更多或更少的每种部件。还应当注意,在其它具体实施中,计算系统100包括图1中未示出的其它部件。另外,在其它具体实施中,计算系统100以不同于图1所示的方式构造。
21.现在转向图2,示出了支持pim的系统200的一个具体实施的框图。在一个具体实施中,支持pim的系统200包括存储器芯片202和处理器芯片204的竖直芯片堆叠(图2的相对大小和位置不一定按比例绘制)。存储器芯片202包括堆叠存储器装置,其中堆叠芯片实现存储器电路,诸如dram、sram、rom等。处理器芯片204实现用于访问堆叠存储器芯片202的存储器电路的硬连线逻辑和布线逻辑。支持pim的系统200可使用多种3d集成电路制造工艺中的任一种工艺制造。应当注意,在其它具体实施中,可利用支持pim的系统的其它配置和结构,包括也可受命令带宽限制的非3d堆叠存储器。
22.在一个具体实施中,处理器芯片204和存储器芯片202被实现为具有有源器件和在有源表面处形成的一个或多个金属布线层的分离基板(例如,体硅)。该方法可包括晶圆上晶圆工艺,其中制造包括芯片矩阵的晶圆并对晶圆进行减薄,并且穿过体硅蚀刻出直通硅穿孔(tsv)。然后堆叠多个晶圆以实现所例示的层配置(例如,用于四个存储器层的包括存储器电路芯片的四个晶圆和用于处理器层的包括逻辑芯片的晶圆的堆叠),将多个晶圆对准,然后经由热压缩进行接合。切割所得的堆叠晶圆组以分离单独3d ic器件。在其它具体实施中,可利用用于制造支持pim的系统200的其它技术。
23.现在参考图3,示出了存储器装置300的一个具体实施的框图。为了访问存储器300中的数据,行解码器330a-330n激活存储体335a-335n中的对应于给定访问的地址310的行。这致使将行中的数据复制到与存储体335a-335n相关联的行缓冲区340a-340n。在将行复制到行缓冲区340a-340n之后,发送列命令以访问行缓冲区340a-340n内的特定列。应当注意,多个行解码器330a-330n可在单个循环中激活多个行,这取决于访问针对多少个存储体。如果访问正在针对多个存储体,则多存储体代码320将标识这多个存储体。多存储体代码320耦接到控制逻辑325,其中控制逻辑325的输出耦接到行解码器330a-330n和/或存储体335a-335n。在一个具体实施中,控制逻辑325将多存储体代码320解码成控制信号327,这些控制信号耦接到存储器300内的各个位置。
24.如果多存储体访问针对给定存储体335a-335n,则激活由对应的行解码器330a-330n所指定的行,并且将数据从存储体读出并且读入到对应的行缓冲区340a-340n中。应当注意,可在任何给定循环中将多个行从多个存储体335a-335n并行读出到多个行缓冲区
340a-340n中。然后,列解码器345a-345n从行缓冲区340a-340n读出所针对列,并且经由多路复用器360将数据提供到存储器数据总线。还将由列解码器345a-345n检索的数据提供到对应的pim装置350a-350n以供pim装置350a-350n进行操作,其中操作(例如,加法、乘法、xor)由操作符标识符(id)325指定。多个pim装置350a-350n可在任何给定循环中由对应的列命令激活。应当注意,存储器装置300是根据一个具体实施的可处理多存储体命令的存储器装置的一个示例。在其它具体实施中,具有其它类型的部件和/或以其它合适的方式构造的其它类型的存储器装置是可能的。
25.现在转向图4,示出了存储器控制器400的一个具体实施。在一个具体实施中,存储器控制器400包括数据队列405、请求队列410、控制逻辑430和总线435。存储器控制器400经由存储器通道470连接到任何数量的存储器装置(例如,图3的存储器装置300)。应当理解,存储器控制器400可包括图4中未示出以避免模糊附图的其它部件。应当注意,存储器控制器400旨在表示存储器控制器的部件和结构的一个具体实施。在其它具体实施中,存储器控制器400可包括其它部件和/或可以不同于图4所示的方式构造。
26.当存储器控制器400接收到针对可经由存储器通道470访问的存储器装置的请求时,将这些请求入队在请求队列410中。在一个具体实施中,请求队列410包含来自一个或多个数据客户端的请求。这一个或多个数据客户端可以是(图1的)处理器105a-105n的一个或多个部分。控制逻辑430分析这些请求以寻找机会来将对不同模块的多个请求重排序和/或组合为单个多播请求,以更有效地利用存储器通道470的有限带宽。当将多个请求组合为单个多播请求时,控制逻辑430还生成多模块代码以标识多播请求针对哪些模块。为了帮助寻找此类机会,请求队列410中的每个条目包括有利于由控制逻辑430执行分析的另外的字段。例如,除地址字段412和操作符id字段414之外,代表性条目411还包括行缓冲区命中字段416、共同行请求字段418和共同列请求字段420。在其它具体实施中,请求队列410中的每个条目可包括其它类型的字段。应当注意,字段416、418和420可统称为“匹配信息”。
27.在一个具体实施中,行缓冲区命中字段416存储指示符,该指示符指定在请求队列410中是否存在是该特定请求的行缓冲区命中的后续请求。另外,在一个具体实施中,共同行请求字段418存储指示符,该指示符指定在请求队列410中是否存在是对共同行但对不同存储体的请求的后续条目。取决于具体实施,共同行请求字段418中的指示符可以是指定请求队列410中的第一此类匹配的单个位、计数器或标识符。当存储器控制器400接收到新请求时,控制逻辑430搜索可与请求队列410的现有条目存在的行匹配和列匹配。如果在新请求与存储在现有条目中的任何请求之间发现命中,则更新匹配条目的匹配信息。
28.另外,在一个具体实施中,共同列请求字段420存储指示符,该指示符指定在请求队列410中是否存在是对共同列但对不同存储体的请求的后续条目。存储在共同列请求字段420中的指示符可以是指定请求队列410中的第一此类匹配的单个位、计数器或标识符。在一个具体实施中,当在新请求中检测到潜在的调度匹配或优化时,控制逻辑430尽可能靠近较旧请求插入新请求(根据匹配类型优先级在任何其它匹配请求之后)并且更新较旧请求中的匹配信息。在一个具体实施中,对于每个存储器存储体,控制逻辑430跟踪待决行信息以标示在不久的将来在当前激活的行缓冲区上是否预期命中。如本文所使用,术语“待决行信息”被定义为与每个存储体相关联的添加指示符,该添加指示符标示当前开放行是否已经作为合并请求的一部分被激活,并且在队列中是否存在对该行的待决列请求。这可意
指a)合并了对不同存储体的多个行激活,并且随后将发出相关联的列请求,或者b)可合并多个列操作,并且在此之前已经发出单独的行激活。
29.当多个请求能够组合为多存储体请求时,控制逻辑430生成多存储体代码460,该多存储体代码被提供到总线435。另外,地址440和操作符id450由请求队列410提供到总线435。多存储体代码460标识多存储体请求针对哪些存储体。应当注意,多存储体代码460在本文中也可称为“多存储体掩码”。尽管多存储体代码可称为多存储体掩码,但应当理解,多存储体掩码可以是位到存储体的子集的任何任意映射。函数可以是固定的或可编程的,并且所使用的位的数量和映射函数可基于由硬件或运行时软件传达的动态剖析或预期行为来确立。在一个具体实施中,多存储体请求通过存储器通道470发送到对应存储器装置(例如,图3的存储器装置300)。
30.可采用用于将多存储体请求通过存储器通道470传送到对应存储器装置的各种不同方法中的任一种方法,其中方法因具体实施而异。例如,在一个具体实施中,改换指定的操作码和/或目标地址组合的用途以指示到或从多存储体模式的切换。然后,多存储体模式使用具有有限操作id集合并且没有存储体地址位的减少的位集合。空闲接口位用于指定多存储体代码。在另一个具体实施中,当将pim操作信息存储在寄存器文件中以供后续pim命令索引时,将多存储体代码存储在这些寄存器中。在另一具体实施中,改换未使用或未充分使用的操作码的用途以表示单个固定类型或可编程类型的合并请求(例如,行激活)。在该具体实施中,存储器接口的存储体位用于指定该请求类型的多存储体代码。
31.为了找到用于合并命令的机会,控制逻辑430在存储在请求队列410中的请求之中检测对不同存储体但对相同行或列的请求。在一个具体实施中,控制逻辑430并行比较四个单独的位集合。这四个单独的位集合包括请求的操作符id位、存储体索引位、行索引位和列索引位。如果对于对不同存储体的多个不同请求,行索引位匹配,则控制逻辑430将多个行激活合并为多存储体命令。如果对于对不同存储体的多个不同请求,操作符id位匹配并且列索引位匹配,则控制逻辑430将多个列访问合并为多存储体命令。如本文所使用,术语“合并”被定义为在请求出队并且将要发出到存储器通道的时间点将多个请求、访问或激活组合为单个命令。
32.在一个具体实施中,每当将请求插入请求队列410中时,控制逻辑430就执行比较。在一个具体实施中,控制逻辑430针对匹配检查请求队列410中的所有请求。如果使用屏障分组约束重排序,则应当仅比较在最近的屏障分组之后到达的请求。在一个具体实施中,为了降低检测的成本,控制逻辑430在执行比较之前使用地址过滤器(例如,随每个屏障分组重置或循环性地重置的布隆过滤器)来检测潜在匹配。在另一具体实施中,控制逻辑430将匹配检测约束到存储器队列的子集。例如,在该具体实施中,可仅考虑队列中最近的n个请求进行匹配检测,其中n是正整数。如果将存储器请求组织到每存储体队列中,则还可通过限制考虑哪个(些)存储体进行匹配检测来减少检测开销。在一个具体实施中,仅考虑相邻存储体进行检测。然而,在该具体实施中,即使仅考虑相邻存储体进行检测,在可通过针对每个所检测到的匹配重复地查找相邻匹配来建立所检测到的匹配的链的情形下,所有存储体合并也仍然将是可能的。
33.现在参考图5,示出了用于将存储器命令动态地合并为多存储体命令的方法500的一个具体实施。出于讨论的目的,以顺序的次序示出该具体实施中以及图6至图7的那些具
体实施中的步骤。然而,应当注意,在所描述方法的各种具体实施中,同时地执行、以与所示不同的次序执行、或完全省略所描述元素中的一个或多个元素。还根据需要执行其它另外的元素。本文描述的各种系统或设备中的任一者被配置为实现方法500。
34.存储器控制器接收针对存储器装置的单独存储体的多个请求(框505)。存储器控制器确定多个请求是否满足一个或多个条件(框510)。在一个具体实施中,一个或多个条件包括这些请求针对不同存储体中的相同行。在另一具体实施中,一个或多个条件包括这些请求针对不同存储体中的相同列以及这些请求共享相同操作符id。在其它具体实施中,一个或多个条件包括其它类型的条件。
35.如果多个请求符合一个或多个条件(条件框515,“是”分支),则存储器控制器将多个命令组合为单个多存储体命令(框520),并且存储器控制器可触发另外的动作,这取决于合并逻辑的积极性。例如,在一个具体实施中,多个命令包括行激活命令。在另一具体实施中,多个命令包括列访问命令。在其它具体实施中,多个命令是与原始请求相关联的其它类型的命令。由存储器控制器触发的另外的动作可因具体实施而异。例如,对于与尚未开放的行的列匹配,存储器控制器首先针对该行生成行激活命令。对于来自队列中更靠后的请求(或请求链)的行匹配,存储器控制器将这些请求移动到先于对相同存储体的任何介入的请求。
36.另外,存储器控制器生成标识单个多存储体命令针对哪个存储体子集的多存储体代码(框525)。然后,存储器控制器在单个循环中将多存储体命令和多存储体代码传送到存储器(框530)。接下来,存储器装置在所针对存储体上并行处理多存储体命令(框535)。在框535之后,方法500结束。如果多个请求不符合一个或多个条件(条件框515,“否”分支),则存储器控制器将对应命令串行发送到存储器装置(框540)。接下来,存储器装置顺序地处理命令(框545)。在框545之后,方法500结束。
37.现在转向图6,示出了用于将存储器命令动态地合并为多存储体命令的方法600的一个具体实施。存储器控制器将所接收的请求入队在请求队列(例如,图4的请求队列410)中(框605)。当确定将哪个请求转发到存储器时,存储器控制器检查请求队列中的给定请求(框610)。如果请求符合一个或多个条件(条件框615,“是”分支),则存储器控制器将对应命令与一个或多个其它命令组合为多存储体命令(框620)。例如,在一个具体实施中,对应命令是行激活命令。在另一具体实施中,对应命令是列访问命令。在其它具体实施中,对应命令是与原始请求相关联的其它类型的命令。
38.在一个具体实施中,一个或多个条件包括该请求跨多个存储体针对与请求队列中的其它请求共同的行。在另一具体实施中,一个或多个条件包括该请求针对与请求队列中的其它请求共同的列但不同的存储体,同时还共享与其它请求共同的操作符id。在其它具体实施中,一个或多个条件包括其它类型的条件。在框620之后,存储器控制器将多存储体命令发送到存储器(框625)。在框625之后,方法600结束。否则,如果请求不符合一个或多个条件(条件框615,“否”分支),则存储器控制器本身将对应命令发送到存储器(框630)。在框630之后,方法600结束。
39.现在参考图7,示出了用于操作能够将多个命令合并为单个多存储体命令的存储器控制器的方法700的一个具体实施。存储器控制器检查请求队列中的下一个请求(框705)。如果由下一个请求定址的目标存储体中的目标行已经开放(条件框710,“是”分支),
那么如果存在对非待决存储体的任何共同列请求(条件框715,“是”分支),则存储器控制器发出针对这些存储体的行激活命令,如果必要的话(框720)。如本文所使用,“非待决存储体”被定义为具有待决行信息的存储体,该待决行信息并不指示未来列访问即将发生。接下来,存储器控制器发出多存储体列访问与指定正在访问哪些存储体的多存储体代码(框725)。然后,存储器控制器重置所访问存储体的待决信息,除非请求具有相关联的行命中,在这种情况下,利用相关联的命中信息更新存储体(框730)。如果不存在对非待决存储体的共同列请求(条件框715,“否”分支),则存储器控制器发出对目标存储体中的目标行的列访问(框735)。在框735之后,方法700结束。
40.如果由下一个请求定址的目标存储体中的目标行尚未开放(条件框710,“否”分支),那么如果目标存储体具有开放的待决行(条件框740,“是”分支),则存储器控制器清除开放行的待决信息(框745)。在另一具体实施中,在框745中,存储器控制器找到并且发出访问待决行的下一个请求,而不是清除待决信息。对针对框745使用哪种具体实施的选择取决于带宽优化的积极性。
41.如果目标存储体不具有开放的待决行(条件框740,“否”分支),则存储器控制器确定是否存在对非待决存储体的任何共同行请求(条件框750)。如果存在对非待决存储体的任何共同行请求(条件框750,“是”分支),则存储器控制器发出多存储体行激活命令并且设置对应存储体的待决信息(框755)。在框755之后,方法700结束。如果不存在对非待决存储体的共同行请求(条件框750,“否”分支),则存储器控制器向所针对行和所针对存储体发出单存储体行激活命令(框760)。在框760之后,方法700结束。应当注意,每当存储器控制器选择请求队列中的下一个请求时,就可执行方法700。
42.在各种具体实施中,软件应用程序的程序指令用于实现本文所描述的方法和/或机制。例如,设想到可由通用处理器或专用处理器执行的程序指令。在各种具体实施中,此类程序指令由高级编程语言表示。在其它具体实施中,将程序指令从高级编程语言编译成二进制、中间或其它形式。另选地,写入描述硬件的行为或设计的程序指令。此类程序指令由高级编程语言诸如c表示。另选地,使用硬件设计语言(hdl),诸如verilog。在各种具体实施中,将程序指令存储在多种非暂态计算机可读存储介质中的任一种非暂态计算机可读存储介质上。存储介质可在使用期间由计算系统访问以向计算系统提供程序指令以用于程序执行。一般来说,这种计算系统至少包括一个或多个存储器以及被配置为执行程序指令的一个或多个处理器。
43.应当强调的是,上述具体实施仅是具体实施的非限制性示例。一旦完全了解上述公开内容,许多变型和修改对于本领域技术人员将变得显而易见。旨在将以下权利要求书解释为涵盖所有此类变型和修改。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献