硬件辅助的动态随机存取存储器(DRAM)行合并的制作方法


硬件辅助的动态随机存取存储器(dram)行合并


背景技术:



1.必须刷新动态随机存取存储器(dram)行以确保数据完整性。动态随机存取存储器的刷新构成存储器模块使用的功率的显著部分。在一些环境中,动态随机存取存储器的多个行存储相同的值。
附图说明
2.图1是根据一些实施方案的用于硬件辅助的dram行合并的示例性系统的框图。
3.图2是根据一些实施方案的用于硬件辅助的dram行合并的示例性方法的流程图。
4.图3是根据一些实施方案的用于硬件辅助的dram行合并的示例性方法的流程图。
5.图4是根据一些实施方案的用于硬件辅助的dram行合并的示例性方法的流程图。
6.图5是根据一些实施方案的用于硬件辅助的dram行合并的示例性方法的流程图。
7.图6是根据一些实施方案的用于硬件辅助的dram行合并的示例性方法的流程图。
8.图7是根据一些实施方案的用于硬件辅助的dram行合并的示例性方法的流程图。
9.图8是根据一些实施方案的用于硬件辅助的dram行合并的示例性方法的流程图。
具体实施方式
10.在一些实施方案中,硬件辅助的动态随机存取存储器(dram)行合并包括除其它元件外由存储器控制器在dram模块中识别存储相同数据的多个行。硬件辅助的dram行合并还包括在映射表中存储将多个行中的一个行或多个行映射到另一行的数据,并且从dram模块的刷新排除该一个或多个行。
11.在一些实施方案中,硬件辅助的dram行合并进一步包括更新位图以指示该一个或多个行被排除在刷新之外。在此类实施方案中,从刷新中排除一个行或多个行包括由存储器控制器向dram模块提供位图。在一些实施方案中,另一行包括多个行中的行。在其它实施方案中,另一行包括在dram模块的一个或多个保留行中包括的保留行。在一些实施方案中,硬件辅助的dram行合并进一步包括确定单个行被映射到保留行。响应于此类确定,存储器控制器在单个行中存储被存储在保留行中的数据并更新映射表以移除该单个行到保留行的映射。在一些实施方案中,硬件辅助的dram行合并进一步包括保持指示被映射到保留行的行的数目的计数器。在此类实施方案中,确定该单个行被映射到该保留行基于计数器。在一些实施方案中,硬件辅助的dram行合并进一步包括保持存储映射表的一部分的映射表缓存。在一些实施方案中,硬件辅助的dram行合并进一步包括接收针对该一个或多个行中的行的读取请求。响应于接收到读取请求,存储器控制器基于映射表确定该行被映射到另一行并且提供存储在另一行中的数据。在一些实施方案中,硬件辅助的dram行合并进一步包括接收针对该一个或多个行中的特定行的写入请求。响应于写入请求,存储器控制器在一个或多个行的特定行中存储被存储在保留行中的数据。然后,存储器控制器执行写入请求并更新映射表以移除特定行到保留行的映射。
12.在一些实施方案中,用于硬件辅助的dram行合并的存储器控制器执行步骤,该步
骤包括:除其它元件外由存储器控制器在dram模块中识别存储相同数据的多个行。该步骤进一步包括在映射表中存储将该多个行中的一个行或多个行映射到另一行的数据,并且从dram模块的刷新排除该一个或多个行。
13.在一些实施方案中,该步骤进一步包括更新位图以指示该一个或多个行被排除在该刷新之外。在此类实施方案中,从刷新中排除一个行或多个行包括由存储器控制器向dram模块提供位图。在一些实施方案中,另一行包括多个行中的行。在其它实施方案中,另一行包括在dram模块的一个或多个保留行中包括的保留行。在一些实施方案中,该步骤进一步包括确定单个行被映射到保留行。响应于此类确定,存储器控制器在单个行中存储被存储在保留行中的数据并更新映射表以移除该单个行到保留行的映射。在一些实施方案中,该步骤进一步包括保持指示被映射到保留行的行的数目的计数器。在此类实施方案中,确定该单个行被映射到该保留行基于计数器。在一些实施方案中,该步骤进一步包括保持存储映射表的一部分的映射表缓存。在一些实施方案中,该步骤进一步包括接收针对该一个或多个行中的行的读取请求。响应于接收到读取请求,存储器控制器基于映射表确定该行被映射到另一行并且提供存储在另一行中的数据。在一些实施方案中,该步骤进一步包括接收针对该一个或多个行中的特定行的写入请求。响应于写入请求,存储器控制器在一个或多个行的特定行中存储被存储在保留行中的数据。然后,存储器控制器执行写入请求并更新映射表以移除特定行到保留行的映射。
14.在一些实施方案中,用于硬件辅助的dram行合并的装置包括存储器控制器,该存储器控制器执行步骤,该步骤包括:除其它元件外由存储器控制器在dram模块中识别存储相同数据的多个行。该步骤进一步包括在映射表中存储将该多个行中的一个行或多个行映射到另一行的数据,并且从dram模块的刷新排除该一个或多个行。
15.在一些实施方案中,该步骤进一步包括更新位图以指示该一个或多个行被排除在该刷新之外。在此类实施方案中,从刷新中排除一个行或多个行包括由存储器控制器向dram模块提供位图。
16.图1是非限制性示例性系统100的框图。示例性系统100可以在各种设备中实现,该设备包括中央处理单元(cpu)、图形处理单元(gpu)等。系统100包括存储器控制器102和一个或多个动态随机存取存储器(dram)模块106。dram模块104各自包括用于存储数据的多个行106。存储器控制器102处理向dram模块104发出的读取和写入请求。例如,存储器控制器102保持读取请求和写入请求的队列,并且将排队的请求发出到该请求所指向的特定dram模块104。
17.行106是用于存储数据的易失性存储器。由于行106是易失性的,因此必须周期性地刷新行106以保持所存储数据的完整性。这些刷新构成dram模块104使用的功率的显著部分。在许多环境中,在同一dram模块104内的多个行106存储相同的数据。也就是说,一个行106中的每个值与一个或多个其它行106中的每个值相同。例如,在其中多个虚拟机在同一硬件上运行并且该虚拟机执行相同的软件或操作系统的环境中,存储在dram的针对每个虚拟机分配的部分中的数据将至少部分地相同。
18.用于寻址跨dram的行的相同数据的现有解决方案包括由管理程序或其它代理管理的软件模块,该软件模块对来自相同行的数据进行去重。然而,为了减少涉及对dram内容去重的瓶颈,这些模块通常仅在系统中的总可用存储器下降到阈值以下才执行。此外,由于
这些解决方案是基于软件的,因此需要计算开销和资源以便对存储在dram中的数据去重。
19.代替使用基于软件的解决方案(该方案需要相当大的计算开销并且被限制为当总系统存储器下降到阈值以下时执行),系统100使用基于硬件的方法来合并dram模块104内存储相同数据的行106。存储器控制器102在dram模块104中识别存储相同数据的多个行。例如,该多个行可以各自包括dram模块104的行106。作为另一示例,该多个行可以包括与保留行108共享相同数据的一个或多个行106。保留行108是dram模块104中的存储器的被保留用于存储来自行106的数据的行,该行106被识别为存储相同的数据。换句话说,虽然行106用于服务来自其它过程或代理的读取和写入操作,但是保留行108专门用于存储来自被识别为存储相同的数据的行106的数据。
20.在一些实施方案中,以预定间隔或响应于另一事件来执行识别存储相同的数据的多个行。例如,存储器控制器102响应于事件的发生而在行106内识别存储相同数据的行106中的两个或更多个行。作为另一示例,存储器控制器102响应于事件的发生而在行106内识别存储与保留行108相同的数据的一个或多个行106。在一些实施方案中,响应于向行106发出的读取或写入请求而执行识别多个行。例如,存储器控制器102将从自行106读取或要写入该行的数据与另一行106中的数据或与保留行108进行比较。在一些实施方案中,这包括执行从行106读取的或写入该行的数据的校验和110或哈希,并且将其与一个或多个存储的校验和110进行比较,如下文将更详细地描述。
21.然后,存储器控制器102在映射表112中存储将多个行中的一个行或多个行映射到另一行的数据。映射表112的每个条目将dram模块104中的行106映射到另一行,其中该另一行存储与在其映射到的行106中最后存储的数据相同的数据。尽管映射表112被示出为存储在dram模块104中,但是应当理解,在一些实施方案中,映射表112替代地存储在存储器控制器102中。
22.在一些实施方案中,存储将一个或多个行映射到另一行的数据包括存储将多个已识别行106中的一个或多个行106映射到多个已识别行106中的另一行106的数据。例如,假设存储器控制器102将行106a、106b、106c和106d识别为各自存储相同数据。在此类示例中,存储器控制器102在映射表112中存储将行106a、106b和106c映射到行106d的条目。在此示例中,行106d被认为是

代表性行

,因为其余行被映射到该行106d。此外,在此示例中,任意选择行106d作为代表性行,并且应当理解,其它行106是可能的代表性行。
23.又如,假设存储器控制器102将行106a、106b、106c和106d识别为各自存储相同数据。然后,存储器控制器102在保留行108中存储等同于在行106a、106b、106c和106d中的数据,并且在映射表112中存储将行106a、106b、106c和106d映射到保留行108的条目。在另一示例中,假设存储器控制器102将行106a、106b和106c识别为存储与已经存储在保留行108中的数据等同的数据。然后,存储器控制器102在映射表112中存储将行106a、106b和106c映射到保留行108的条目。
24.然后,存储器控制器102从dram模块104的刷新排除一个或多个行106(例如,映射到映射表112中的另一行的那些行106)。例如,存储器控制器102向dram模块104提供在下一次刷新操作期间应该或不应被刷新的那些行106的指示。在一些实施方案中,存储器控制器102保持刷新位图114。每个行106对应于刷新位图114中的位。在行106被映射到另一行(例如,到代表性行或保留行108)的情况下,对应于映射行106的位被设置(例如,为
″1″
)以指示
在下一次刷新期间应跳过映射行106。例如,当创建映射表112条目以映射特定行106时,刷新位图114中对应于特定行106的位被设置为指示该特定行106被排除在下一次刷新之外。因此,在一些实施方案中,从该刷新中排除一个行或多个行106包括向dram模块104提供刷新位图114。dram模块104然后基于刷新位图114执行刷新操作。
25.根据上文阐述的方法,从刷新操作排除存储与另一行(例如,代表性行或保留行108)相同的数据的一个或多个行106,从而在与刷新那些行106相比时节省能量。此类行106在下文中被称为

合并行106

。通过访问映射表112来服务针对这些合并行106的读取操作,以确定合并行106被映射的位置(例如,映射的目标),然后从映射的目标加载对应数据。
26.如上所阐述,合并行106另选地映射到代表性行(包括在行106中)或映射到保留行108。由于代表性行仍然能够是写入请求的目标,因此当写入时映射到代表性行呈现显著开销的风险。例如,当写入代表性行时,应将存储在代表性行中的数据复制到另一行,并且应将映射至代表性行的任何映射表112条目更新至该另一行。因此,当保留行108仅写入以便存储合并行106的数据时,在优选实施方案中,将要合并的行106映射到保留行108。
27.在一些实施方案中,对于每个保留行108,存储器控制器112保持对应的计数器116,该计数器指示映射到保留行108的合并行106的数目。例如,当创建映射表112条目将合并行106映射到保留行108时,存储器控制器102使对应于保留行108的计数器116递增。当合并行106停止映射到保留行108时(例如,响应于针对合并行106的写入),对应于保留行108的计数器116被递减。在一些实施方案中,计数器116在相同的数据结构中保持为针对每个保留行108的校验和110。例如,数据结构中的每个条目对应于保留行108。针对对应的保留行108,数据结构中的每个条目指示存储在保留行108(如果有的话)中的数据的校验和110以及指示映射到保留行108的合并行106的数目的计数器116。
28.因此,在一些实施方案中,存储器控制器102确定单个行106何时被映射到保留行108。例如,存储器控制器102确定对应于保留行108的计数器116何时被设置为
″1″
。作为另一示例,存储器控制器108访问映射到保留行108的映射表112条目,并确定单个映射表112映射到保留行108。
29.响应于确定单个行106被映射到保留行108,该存储器控制器102在单个行106中存储已存储在保留行108中的数据。例如,存储器控制器102将命令发送到dram模块104,该dram模块使存储在保留行108中的数据被复制或克隆到被映射到保留行106的单个行106。这确保了单个行106在先前存储在单个行106中的数据由于缺乏刷新而已削弱的情况下存储正确的数据。然后,存储器控制器102更新映射表112以移除单个行106到保留行108的映射。在一些实施方案中,存储器控制器102然后将对应于保留行108的计数器递减到零。在一些实施方案中,这指示了保留行108未被分配并且可用于存储用于映射其它行106以进行合并的其它数据。在一些实施方案中,存储器控制器102更新刷新位图114以指示现在不再映射到任何保留行108的单个行106应该包括在下一个刷新中。
30.如上所述,在一些实施方案中,存储器控制器102保持针对存储在每个保留行108中的数据的校验和110。该校验和108促进确定从行106读取或写入该行的数据是否匹配保留行108。例如,响应于对行106的写入请求,存储器控制器102确定要写入的数据与保留行108匹配。代替执行写入请求,存储器控制器102创建将作为写入请求的目标的行106映射到保留行108的映射表112条目。在一些实施方案中,存储器控制器102然后更新刷新位图114
以指示作为写入请求的目标的行106(现在为合并行106)被排除在dram模块104的刷新之外。作为另一示例,响应于对行106的读取请求,存储器控制器102基于校验和110确定读取数据与存储在保留行108中的数据匹配。然后,存储器控制器102创建将读取行106映射到保留行108的映射表112条目,并且更新刷新位图114以从dram模块104的刷新排除读取行106。
31.在一些实施方案中,存储器控制器102保持映射表缓存118,该映射表缓存存储在映射表112中最近或最频繁使用的映射。例如,存储器控制器102访问映射表112以确定作为读取或写入请求的目标的行106是否被映射到另一行(例如,代表性行或保留行108)。在存储器控制器102到映射表112中的匹配的情况下,存储器控制器102更新映射表缓存118以包括该匹配映射表112条目。因此,在访问映射表112之前,首先将读取或写入请求与映射表缓存118中的条目进行比较,从而减少确定特定行106是否已合并并映射到另一行所需的对该dram模块104的访问次数。
32.响应于指向dram模块104的行106的读取请求,该存储器控制器102确定行106是否已合并并且被映射到另一行(例如,代表性行或保留行108)。例如,存储器控制器102访问映射表缓存118以确定映射行106的条目是否存在。如果没有到条目,或者未实现映射表缓存118,则存储器控制器102访问映射表112以确定映射行106的条目是否存在。如果映射表缓存118或映射表112中存在条目,则检索作为在访问的条目中指示的映射的目标的行和已存储的数据。然后响应于读取请求返回此数据。在一些实施方案中,将映射表112的所识别条目添加到映射表缓存118中。
33.响应于指向dram模块104中的行106的写入请求,该存储器控制器102确定行106是否已合并并且被映射到保留行108。例如,存储器控制器102访问映射表缓存118以确定是否存在将行106映射到保留行108的条目。如果没有到条目,或者未实现映射表缓存118,则存储器控制器102访问映射表112以确定是否存在将行106映射到保留航108的条目。
34.如果映射表缓存118或映射表112中存在条目,则访问保留行108,并将保留行108的内容复制到作为写入请求的目标的行106。然后将写入请求应用于行106。移除将行106映射到保留行108的映射表112条目(以及如果存在的话,映射表缓存118条目)。在一些实施方案中,对应于保留行108的计数器116递减。
35.为了进一步解释,图2阐述了说明用于硬件辅助的dram行合并的示例性方法的流程图。该方法包括在dram模块104中识别202(例如,由存储器控制器102)存储相同数据的多个行。例如,该多个行各自包括dram模块104的行106。作为另一示例,多个行包括一个或多个行106和保留行108,其中该一个或多个行106与保留行108共享相同的数据。例如,在一些实施方案中,保留行108借助于先前合并以及将其它行106映射到保留行来存储数据。
36.在一些实施方案中,以预定间隔或响应于另一事件来执行识别202存储相同的数据的该多个行。例如,存储器控制器102响应于事件的发生而在行106内识别存储相同数据的行106中的两个或更多个行。作为另一示例,存储器控制器102在行106内识别存储与保留行108相同的数据的一个或多个行106。在一些实施方案中,响应于向行106发出的读取或写入请求而执行识别多个行。例如,存储器控制器102将从自行106读取或要写入该行的数据与另一行106中的数据或与保留行108进行比较。
37.图2的方法还包括在映射表112中存储204将多个行中的一个行或多个行106映射到另一行的数据。映射表112的每个条目将dram模块104中的行106映射到另一行,其中该另
一行存储与在其映射到的行106中最后存储的数据相同的数据。在一些实施方案中,另一行包括dram模块104的行106(例如,能够作为读取和写入请求的行106)。在其它实施方案中,行106被映射到的另一行包括保留行108,该保留行被保留用于存储数据并且被映射到行106。尽管映射表112被示出为存储在dram模块104中,但是应当理解,在一些实施方案中,映射表112替代地存储在存储器控制器102中。
38.在一些实施方案中,存储204将一个或多个行106映射到另一行的数据包括存储将多个已识别行106中的一个或多个行106映射到多个已识别行106中的另一行106的数据。例如,假设存储器控制器102将行106a、106b、106c和106d识别为各自存储相同数据。在此类示例中,存储器控制器102在映射表112中存储将行106a、106b和106c映射到行106d的条目。在此示例中,行106d被认为是

代表性行

,因为其余行106被映射到该行106d。此外,在此示例中,任意选择行106d作为代表性行,并且应当理解,其它行106是可能的代表性行并且可以根据各种标准选择该代表性行。
39.又如,假设存储器控制器102将行106a、106b、106c和106d识别为各自存储相同数据。然后,存储器控制器102在保留行108中存储等同于在行106a、106b、106c和106d中的数据,并且在映射表112中存储将行106a、106b、106c和106d映射到保留行108的条目。在另一示例中,假设存储器控制器102将行106a、106b和106c识别为存储与已经存储在保留行108中的数据等同的数据。然后,存储器控制器102在映射表112中存储将行106a、106b和106c映射到保留行108的条目。
40.图2的方法进一步包括从dram模块104的刷新排除206(例如,由存储器控制器102)一个或多个行106(例如,在映射表112中映射到另一行的那些行106)。具有映射表112中的条目以及将从刷新排除的行106被认为是

合并行

106。在一些实施方案中,从刷新排除206一个行或多个行106包括向dram模块104提供在下一次刷新操作期间应该或不应该被刷新的那些行106的指示。然后,dram模块104根据接收到的指示执行刷新。
41.为了进一步的解释,图3阐述了根据本公开的实施方案的用于硬件辅助的dram行合并的方法。图3的方法类似于图2,相似之处在于图3的方法包括识别202存储相同数据的多个行,在映射表112中存储204将多个行中的一个或多个行106映射到另一行的数据,以及从dram模块104的刷新排除206一个或多个行106。
42.图3与图2不同之处在于图3包括更新302位图(例如,刷新位图114)以指示一个或多个行106被排除在刷新之外。例如,在一些实施方案中,存储器控制器102保持刷新位图114。每个行106对应于刷新位图114中的位。在行106被映射到另一行(例如,到代表性行或保留行108)的情况下,对应于映射行106(例如,具有映射表112条目的行106)的位被设置(例如,为
″1″
)以指示在下一次刷新期间应跳过映射行106。例如,当创建映射表112条目以映射特定行106时,刷新位图114中对应于特定行106的位被设置为指示该特定行106被排除在下一次刷新之外。
43.图3的方法进一步与图3不同,不同之处在于从刷新排除206一个行或多个行106包括向dram模块104提供304位图(例如,刷新位图114)。dram模块104然后基于该接收的位图执行刷新操作。
44.为了进一步的解释,图4阐述了根据本公开的实施方案的用于硬件辅助的dram行合并的方法。图4的方法类似于图2,相似之处在于图4的方法包括识别202存储相同数据的
多个行,在映射表112中存储204将多个行中的一个或多个行106映射到另一行的数据,以及从dram模块104104的刷新排除206一个或多个行106。
45.假设一个或多个行106被映射到的另一行是保留行108。图4与图2不同,不同之处在于图4的方法包括确定402单个行106被映射到保留行108。假设在多个行106被映射到保留行108之后,但是所有这些行106停止映射到保留行108。例如,执行针对映射行106而非单个行106的写入操作。这将导致作为写入操作的目标的行106存储不同于映射的保留行108的值,从而迫使行106不再被映射到保留行108。
46.在一些实施方案中,确定402单个行106被映射到保留行108包括确定指示映射到保留行108的行106的数目的计数器116何时被设置为
″1″
。作为另一个示例,确定402单个行106被映射到保留行108包括访问映射到保留行108的映射表112条目并确定单个映射表112映射到保留行108。
47.图4的方法进一步包括在单个行106中存储404已存储在保留行108中的数据。例如,存储器控制器102将命令发送到dram模块104,该dram模块使存储在保留行108中的数据被复制或克隆到被映射到保留行106的单个行106。这确保了单个行106在先前存储在单个行106中的数据由于缺乏刷新而已降级的情况下存储正确的数据。
48.图4的方法进一步包括更新406映射表112以移除单个行106到保留行108的映射。在一些实施方案中,存储器控制器102然后将对应于保留行108的计数器116递减到零。在一些实施方案中,这指示了保留行108未被分配并且可用于存储用于映射其它行106以进行合并的其它数据。在一些实施方案中,存储器控制器102更新刷新位图114以指示现在不再映射到任何保留行108的单个行106应该包括在下一个刷新中。
49.为了进一步的解释,图5阐述了根据本公开的实施方案的用于硬件辅助的dram行合并的方法。图5的方法类似于图4,类似之处在于图5的方法包括识别202存储相同数据的多个行,在映射表112中存储204将多个行中的一个或多个行106映射到另一行的数据,以及从dram模块104的刷新排除206一个或多个行106,确定402单个行106被映射到保留行108,在单个行106中存储404已存储在保留行108中的数据,以及更新406映射表112以移除单个行106到保留行108的映射。
50.图5的方法与图4不同,不同之处在于图5的方法包括保持502指示映射到保留行108的行106的数目的计数器116。例如,对于每个保留行108,存储器控制器102保持对应的计数器116,该计数器指示映射到保留行108的合并行106的数目。例如,当创建映射表112条目将合并行106映射到保留行108时,存储器控制器102使对应于保留行108的计数器116递增。当合并行106停止映射到保留行108时(例如,响应于针对合并行106的写入),对应于保留行108的计数器116被递减。在一些实施方案中,计数器116在相同的数据结构中保持为针对每个保留行108的校验和110。例如,数据结构中的每个条目对应于保留行108。针对对应的保留行108,数据结构中的每个条目指示存储在保留行108(如果有的话)中的数据的校验和110以及指示映射到保留行108的合并行106的数目的计数器116。
51.图5的方法与图4进一步不同,不同之处在于确定402单个行106被映射到保留行108包括基于计数器116确定504单个行106被映射到保留行108。例如,存储器控制器102访问用于保留行108的计数器116,并且确定计数器116被设置为
″1″

52.为了进一步的解释,图6阐述了根据本公开的实施方案的用于硬件辅助的dram行
合并的方法。图6的方法类似于图2,相似之处在于图6的方法包括识别202存储相同数据的多个行,在映射表112中存储204将多个行中的一个或多个行106映射到另一行的数据,以及从dram模块104的刷新排除206一个或多个行106。
53.图6与图2不同,不同之处在于图6包括(例如,由存储器控制器102)保持602存储映射表112的一部分的映射表缓存118。映射表缓存118存储映射表112中最近或最频繁使用的映射。例如,存储器控制器102访问映射表112以确定作为读取或写入请求的目标的行106是否被映射到另一行(例如,代表性行或保留行108)。在存储器控制器102到映射表112中的匹配的情况下,存储器控制器102更新映射表缓存118以包括该匹配映射表112条目。因此,在访问映射表112之前,首先将读取或写入请求与映射表缓存118中的条目进行比较,从而减少确定特定行106是否已合并并映射到另一行所需的对该dram模块104的访问次数。
54.为了进一步的解释,图7阐述了根据本公开的实施方案的用于硬件辅助的dram行合并的方法。图7的方法类似于图2,相似之处在于图7的方法包括识别202存储相同数据的多个行,在映射表112中存储204将多个行中的一个或多个行106映射到另一行的数据,以及从dram模块104的刷新排除206一个或多个行106。
55.图7与图2不同,不同之处在于图7包括(例如,由存储器控制器102)接收702对一个或多个行106中的行106(例如,先前映射到另一行并从刷新排除的合并行106)的读取请求。例如,假设行106a、106b和106c被识别为202存储相同数据并映射到保留行108。进一步假设读取请求用于存储在行106a中的数据。随着存储在行106a中的数据已被排除在刷新之外,存储在行106a中的数据易于损失完整性。
56.图7的方法进一步包括基于映射表112确定704行106被映射到另一行。继续上述示例,存储器控制器102基于映射表112确定行106a被映射到其对应的保留行108。例如,在一些实施方案中,存储器控制器102从dram模块104访问映射表112,并且识别映射表112中的针对行106a的条目。该条目然后指示对应的保留行108。在其它实施方案中,存储器控制器102首先访问映射表缓存118以确定是否存储了针对行106a的条目。如果存储了条目,则存储器控制器基于映射表缓存118中的条目识别对应的保留行108。如果没有发现针对行108a的条目,则存储器控制器102然后如上所述从dram模块104访问映射表112。
57.图7的方法还包括响应于读取请求而提供706存储在另一行(例如,在映射表112中识别并且合并行106被映射到的行)中的数据。例如,存储器控制器102从在映射表112中识别的行读取,并且提供所请求的数据作为对读取请求的响应。因此,响应地,针对合并行106的读取请求接收存储在映射表112中识别的行中的数据作为合并行106的映射的目标。
58.为了进一步的解释,图8阐述了根据本公开的实施方案的用于硬件辅助的dram行合并的方法。图8的方法类似于图2,相似之处在于图8的方法包括识别202存储相同数据的多个行,在映射表112中存储204将多个行中的一个或多个行106映射到另一行的数据,以及从dram模块104的刷新排除206一个或多个行106。
59.假设一个或多个行106被映射到保留行108。图8不同于图2,不同之处在于图8的方法包括接收802针对一个或多个行106中的行106(例如,映射到保留行108并从刷新排除的合并行106)的写入请求。例如,假设行106a、106b和106c被识别为202存储相同数据并映射到保留行108。进一步假设读取请求用于存储在行106a中的数据。随着存储在行106a中的数据已被排除在刷新之外,存储在行106a中的数据易于损失完整性。
60.图8的方法还包括在一个或多个行106中的行106中存储804已存储在保留行108中的数据。继续上述示例,存储器控制器102基于映射表112确定行106a被映射到其对应的保留行108。例如,在一些实施方案中,存储器控制器102从dram模块104访问映射表112,并且识别映射表112中的针对行106a的条目。该条目然后指示对应的保留行108。在其它实施方案中,存储器控制器102首先访问映射表缓存118以确定是否存储了针对行106a的条目。如果存储了条目,则存储器控制器基于映射表缓存118中的条目识别对应的保留行108。如果没有发现针对行108a的条目,则存储器控制器102然后如上所述从dram模块104访问映射表112。然后,存储器控制器102加载存储在所识别的保留行108中的数据并将该数据存储在行a中。
61.图8的方法还包括执行806该写入请求。例如,存储器控制器102向dram模块104发出写入请求以用于应用。因此,将写入请求的任何操作应用于在写入请求中指示的行106,该行106现在存储其对应保留行108的数据。
62.图8的方法还包括更新808映射表112以移除行106到保留行108的映射。当行106已被写入时,其不再存储与保留行108相同的数据。因此,从映射表112移除行106到保留行108的映射。在实现映射表缓存118的情况下,还从映射表缓存118移除行106到保留行108的任何映射。
63.鉴于以上阐述的解释,读者将认识到硬件辅助的dram行合并的有益效果包括:
64.·
通过抑制刷新具有相同数据的选定行而减少执行dram刷新所需的能量来改进计算系统的性能。
65.·
与用于dram中的数据去重的基于软件的解决方案相比,通过需要更少的计算开销来改进计算系统的性能。
66.本公开的优点和特征可通过以下陈述进一步描述:
67.1.一种用于硬件辅助的动态随机存取存储器(dram)行合并的方法,所述方法包括:由存储器控制器在dram模块中识别存储相同数据的多个行;在映射表中存储将所述多个行中的一个行或多个行映射到另一行的数据;以及从所述dram模块的刷新排除所述一个或多个行。
68.2.根据陈述1所述的方法,包括:更新位图以指示从所述刷新排除所述一个或多个行,其中从所述刷新排除所述一个或多个行包括由所述存储器控制器向所述动态随机存取存储器(dram)模块提供所述位图。
69.3.根据陈述1至2中任一项所述的方法,其中所述另一行包括所述多个行中的行。
70.4.根据陈述1至3中任一项所述的方法,其中所述另一行包括包含在所述动态随机存取存储器(dram)模块的一个或多个保留行中的保留行。
71.5.根据陈述1至4中任一项所述的方法,还包括:确定单个行被映射到所述保留行;在所述单个行中存储已存储在所述保留行中的数据;以及更新所述映射表以移除所述单个行到所述保留行的映射。
72.6.根据陈述1至5中任一项所述的方法,还包括:保持指示映射到所述保留行的行的数目的计数器,其中确定所述单个行被映射到所述保留行基于所述计数器。
73.7.根据陈述1至6中任一项所述的方法,还包括保持存储所述映射表的一部分的映射表缓存。
74.8.根据陈述1至7中任一项所述的方法,还包括:接收对所述一个或多个行中的行的读取请求;基于所述映射表确定所述行被映射到所述另一行;以及响应于所述读取请求而提供存储在所述另一行中的数据。
75.9.根据陈述1至8中任一项所述的方法,还包括:接收对所述一个或多个行中的特定行的写入请求;在所述一个或多个行中的所述特定行中存储已存储在所述保留行中的数据;执行所述写入请求;以及更新所述映射表以移除所述特定行到所述保留行的映射。
76.10.一种用于硬件辅助的动态随机存取存储器(dram)行合并的存储器控制器,所述存储器控制器被配置为执行包括以下的步骤:在dram模块中识别存储相同数据的多个行;在映射表中存储将所述多个行中的一个行或多个行映射到另一个行的数据;以及从所述dram模块的刷新排除所述一个或多个行。
77.11.根据陈述10所述的存储器控制器,其中所述步骤还包括:更新位图以指示已从所述刷新排除所述一个或多个行,其中从所述刷新排除所述一个或多个行包括由所述存储器控制器向所述dram模块提供所述位图。
78.12.根据陈述10至11中任一项所述的存储器控制器,其中所述另一行包括所述多个行中的行。
79.13.根据陈述10至12中任一项所述的存储器控制器,其中所述另一行包括包含在所述动态随机存取存储器(dram)模块的一个或多个保留行中的保留行。
80.14.根据陈述10至13中任一项所述的存储器控制器,其中所述步骤包括:确定单个行被映射到所述保留行;在所述单个行中存储被存储在所述保留行中的数据;以及更新所述映射表以移除所述单个行到所述保留行的映射。
81.15.根据陈述10至14中任一项所述的存储器控制器,其中所述步骤还包括:保持指示映射到所述保留行的行的数目的计数器,其中确定所述单个行被映射到所述保留行基于所述计数器。
82.16.根据陈述10至15中任一项所述的存储器控制器,其中所述步骤还包括保持存储所述映射表的一部分的映射表缓存。
83.17.根据陈述10至16中任一项所述的存储器控制器,其中所述步骤还包括:接收对所述一个或多个行中的行的读取请求;基于所述映射表确定所述行被映射到所述另一行;以及响应于所述读取请求而提供存储在所述另一行中的数据。
84.18.根据陈述10至17中任一项所述的存储器控制器,其中所述步骤还包括:接收对所述一个或多个行中的特定行的写入请求;在所述一个或多个行的特定行中存储被存储在所述保留行中的数据;执行所述写入请求;以及更新所述映射表以移除所述行到所述保留行的映射。
85.19.一种用于硬件辅助的动态随机存取存储器(dram)行合并的装置,所述装置包括:存储器控制器,所述存储器控制器被配置为执行包括以下的步骤:在dram模块中识别存储相同数据的多个行;在映射表中存储将所述多个行中的一个行或多个行映射到另一个行的数据;以及从所述dram模块的刷新排除所述一个或多个行。
86.20.根据陈述19所述的装置,其中所述步骤还包括:更新位图以指示已从所述刷新排除所述一个或多个行;并且其中从所述刷新排除所述一个行或多个行包括由所述存储器控制器向所述dram模块提供所述位图。
87.图中的流程图和框图示出了根据本公开的各种实施方案的系统、方法和计算机程序产品的可能具体实施的体系结构、功能和操作。就这一点而言,流程图或框图中的每个框可表示指令的包括用于实现指定逻辑功能的一个或多个可执行指令的模块、段或部分。在一些另选的具体实施中,框中指出的功能可不按照图中指出的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可基本上同时执行,或者这些框有时可以相反顺序执行。还将注意到,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可由执行指定功能或动作或者执行专用硬件和计算机指令的组合的基于专用硬件的系统来实现。
88.从前面的描述将理解,可在本公开的各种实施方案中进行修改和改变。本说明书中的描述仅用于说明目的,而不应以限制性意义进行解释。本公开的范围仅由所附权利要求书的语言限定。

技术特征:


1.一种用于硬件辅助的动态随机存取存储器(dram)行合并的方法,所述方法包括:由存储器控制器在dram模块中识别存储相同数据的多个行;在映射表中存储将所述多个行中的一个行或多个行映射到另一行的数据;以及从所述dram模块的刷新排除所述一个或多个行。2.根据权利要求1所述的方法,还包括:更新位图以指示已从所述刷新排除所述一个或多个行,其中从所述刷新排除所述一个或多个行包括由所述存储器控制器向所述动态随机存取存储器(dram)模块提供所述位图。3.根据权利要求1所述的方法,其中所述另一行包括所述多个行中的行。4.根据权利要求1所述的方法,其中所述另一行包括包含在所述动态随机存取存储器(dram)模块的一个或多个保留行中的保留行。5.根据权利要求4所述的方法,还包括:确定单个行被映射到所述保留行;在所述单个行中存储已存储在所述保留行中的数据;以及更新所述映射表以移除所述单个行到所述保留行的映射。6.根据权利要求5所述的方法,所述方法还包括:保持指示映射到所述保留行的行的数目的计数器,其中确定所述单个行被映射到所述保留行基于所述计数器。7.根据权利要求1所述的方法,还包括保持存储所述映射表的一部分的映射表缓存。8.根据权利要求1所述的方法,还包括:接收针对所述一个或多个行中的行的读取请求;基于所述映射表确定所述行被映射到所述另一行;以及响应于所述读取请求而提供存储在所述另一行中的数据。9.根据权利要求4所述的方法,还包括:接收针对所述一个或多个行中的特定行的写入请求;在所述一个或多个行的特定行中存储被存储在所述保留行中的数据;执行所述写入请求;以及更新所述映射表以移除所述特定行到所述保留行的映射。10.一种用于硬件辅助的动态随机存取存储器(dram)行合并的存储器控制器,所述存储器控制器被配置为执行包括以下的步骤:在dram模块中识别存储相同数据的多个行;在映射表中存储将所述多个行中的一个行或多个行映射到另一个行的数据;以及从所述dram模块的刷新排除所述一个或多个行。11.根据权利要求10所述的存储器控制器,其中所述步骤还包括:更新位图以指示已从所述刷新排除所述一个或多个行,其中从所述刷新排除所述一个或多个行包括由所述存储器控制器向所述dram模块提供所述位图。12.根据权利要求10所述的存储器控制器,其中所述另一行包括所述多个行中的行。13.根据权利要求10所述的存储器控制器,其中所述另一行包括包含在所述动态随机存取存储器(dram)模块的一个或多个保留行中的保留行。14.根据权利要求13所述的存储器控制器,其中所述步骤包括:
确定单个行被映射到所述保留行;在所述单个行中存储被存储在所述保留行中的数据;以及更新所述映射表以移除所述单个行到所述保留行的映射。15.根据权利要求14所述的存储器控制器,其中所述步骤还包括:保持指示映射到所述保留行的行的数目的计数器,其中确定所述单个行被映射到所述保留行基于所述计数器。16.根据权利要求10所述的存储器控制器,其中所述步骤还包括保持存储所述映射表的一部分的映射表缓存。17.根据权利要求10所述的存储器控制器,其中所述步骤还包括:接收针对所述一个或多个行中的行的读取请求;基于所述映射表确定所述行被映射到所述另一行;以及响应于所述读取请求而提供存储在所述另一行中的数据。18.根据权利要求13所述的存储器控制器,其中所述步骤还包括:接收针对所述一个或多个行中的特定行的写入请求;在所述一个或多个行的所述特定行中存储被存储在所述保留行中的数据;执行所述写入请求;以及更新所述映射表以移除所述行到所述保留行的映射。19.一种用于硬件辅助的动态随机存取存储器(dram)行合并的装置,所述装置包括:存储器控制器,所述存储器控制器被配置为执行包括以下的步骤:在dram模块中识别存储相同数据的多个行;在映射表中存储将所述多个行中的一个行或多个行映射到另一个行的数据;以及从所述dram模块的刷新排除所述一个或多个行。20.根据权利要求19所述的装置,其中所述步骤还包括:更新位图以指示已从所述刷新排除所述一个或多个行;并且其中从所述刷新排除所述一个行或多个行包括由所述存储器控制器向所述dram模块提供所述位图。

技术总结


硬件辅助的动态随机存取存储器(DRAM)行合并包括:由存储器控制器在DRAM模块中识别存储相同数据的多个行;在映射表中存储将多个行中的一个行或多个行映射到另一个行的数据;以及从DRAM模块的刷新排除该一个或多个行。及从DRAM模块的刷新排除该一个或多个行。及从DRAM模块的刷新排除该一个或多个行。


技术研发人员:

贾格迪什

受保护的技术使用者:

超威半导体公司

技术研发日:

2021.04.15

技术公布日:

2022/12/16

本文发布于:2024-09-21 14:38:26,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/40161.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:所述   多个   存储器   控制器
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议