CN116710900A - 存储器中的动态元数据重定位 - Google Patents
存储器中的动态元数据重定位 Download PDFInfo
- Publication number
- CN116710900A CN116710900A CN202180088795.4A CN202180088795A CN116710900A CN 116710900 A CN116710900 A CN 116710900A CN 202180088795 A CN202180088795 A CN 202180088795A CN 116710900 A CN116710900 A CN 116710900A
- Authority
- CN
- China
- Prior art keywords
- data
- metadata
- memory page
- location
- data location
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims description 401
- 238000000034 method Methods 0.000 claims description 48
- 230000000153 supplemental effect Effects 0.000 description 11
- 238000013507 mapping Methods 0.000 description 8
- 230000004044 response Effects 0.000 description 8
- 208000011580 syndromic disease Diseases 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 238000012937 correction Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000012447 hatching Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0215—Addressing or allocation; Relocation with look ahead addressing means
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/46—Caching storage objects of specific type in disk cache
- G06F2212/466—Metadata, control data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
元数据在DRAM中从没有映射到相关联数据所在的同一DRAM行的虚拟页面动态地重定位到同一DRAM行。如果数据访问请求的目标是第一页面中被配置为存储元数据而不是数据的位置,则可以确定第二页面中的第二位置,并且可以在第二位置处访问所请求的数据。可以在第一页面中的位置处访问相关联的元数据,该位置在虚拟域中被配置为存储数据,但是在物理域中被配置为存储与第一页面中的数据相关联的元数据。
Description
背景技术
计算设备可以包括经由总线或其他互连件相互通信的多个子系统。这类计算设备可以为例如便携式计算设备(“PCD”),诸如膝上型计算机或掌上型计算机、蜂窝电话或智能电话、便携式数字助理、便携式游戏控制台等。通信子系统可以被包括在同一集成电路芯片中或不同的芯片中。“片上系统”或“SoC”是集成了许多组件以提供系统级功能性的这类芯片的一个示例。例如,SoC可以包括一种或多种类型的处理器,诸如中央处理单元(“CPU”)、图形处理单元(“GPU”)、数字信号处理器(“DSP”)和神经处理单元(“NPU”)。SoC可以包括其他子系统,诸如提供无线连接的收发器或“调制解调器”子系统、存储器子系统等。SoC可以经由数据通信链路耦合到一个或多个存储器芯片。各种处理引擎可以用存储器执行存储器事务。PCD和其他计算设备中的主存储器或系统存储器通常包括动态随机存取存储器(“DRAM”)。DRAM被组织成行(row)和列(column)的阵列。必须先打开一行,然后才能访问其数据。任何时候只能打开一行。DRAM行有时被称为(物理)页面。
术语“冲突”是指指向关闭的DRAM行的存储器事务,而同时另一行(事务未指向的行)是打开的。如果存储器事务存在冲突,则必须首先关闭打开的行,然后打开事务指向的行。冲突会增加存储器延迟,即响应处理引擎的事务请求而完成存储器事务的时间量。存储器延迟有可能影响计算设备性能,并且最终影响用户体验。最小化存储器延迟也可能是任务关键或安全关键计算设备中的重要目标,诸如那些用于控制自动车辆、无人驾驶飞机等的设备。
一些类型的数据具有相关联的元数据。例如,“校正子(syndrome)”是与经过纠错算法的数据相关联的元数据。标志和其他元数据可以与经过压缩算法的数据相关联。签名、散列等可以与经过认证算法的数据相关联。还有其他类型的元数据是已知的,诸如存储器标记扩展(“MTE”)。元数据通常以如下方式存储在存储器中:在访问相关联数据时能够访问该元数据。
发明内容
公开了DRAM中的元数据重定位的系统、方法、计算机可读介质和其他示例。元数据可以从没有映射到相关联数据所在的同一DRAM行的虚拟页面动态地重定位到该同一DRAM行。
DRAM中的元数据重定位的示例性方法可以包括:接收第一请求,该第一请求用以访问DRAM的第一存储器页面中的第一数据位置处的数据和DRAM的第二存储器页面中的第一元数据位置处的相关联的元数据。该方法可以包括:确定第一存储器页面中的第一数据位置是否被配置为存储元数据。该方法还可以包括:如果第一存储器页面中的第一数据位置未被配置为存储元数据,则访问第一存储器页面中的第一数据位置处的数据。该方法另外可以包括如果第一存储器页面中的第一数据位置未被配置为存储元数据,则确定第一存储器页面中的元数据位置。该方法还另外可以包括如果第一存储器页面中的第一数据位置未被配置为存储元数据,则访问第一存储器页面中的元数据位置处的相关联的元数据。该方法可以包括如果第一存储器页面中的第一数据位置被配置为存储元数据,则确定第二存储器页面中的第二数据位置。该方法另外可以包括如果第一存储器页面中的第一数据位置被配置为存储元数据,则访问第二存储器页面中的第二数据位置处的数据。该方法又另外可以包括如果第一存储器页面中的第一数据位置被配置为存储元数据,则访问第一存储器页面中的第一数据位置处的相关联的元数据。
用于元数据重定位的示例性系统可以包括DRAM和处理器。该处理器可以被配置为接收第一请求,该第一请求用以访问第一存储器页面中的第一数据位置处的数据和第二存储器页面中的第一元数据位置处的相关联的元数据。处理器还可以被配置为确定第一存储器页面中的第一数据位置是否被配置为存储元数据。如果第一存储器页面中的第一数据位置未被配置为存储元数据,则处理器另外可以被配置为访问第一存储器页面中的第一数据位置处的数据。如果第一存储器页面中的第一数据位置未被配置为存储元数据,则处理器还另外可以被配置为确定第一存储器页面中的元数据位置。如果第一存储器页面中的第一数据位置未被配置为存储元数据,则处理器又另外可以被配置为访问第一存储器页面中的元数据位置处的相关联的元数据。如果第一存储器页面中的第一数据位置被配置为存储元数据,则处理器可以被配置为确定第二存储器页面中的第二数据位置。如果第一存储器页面中的第一数据位置被配置为存储元数据,则处理器另外可以被配置为访问第二存储器页面中的第二数据位置处的数据。如果第一存储器页面中的第一数据位置被配置为存储元数据,则处理器又另外可以被配置为访问第一存储器页面中的第一数据位置处的相关联的元数据
用于DRAM中的元数据重定位的另一示例性系统可以包括用于接收第一请求的部件,该第一请求用以访问DRAM的第一存储器页面中的第一数据位置处的数据和DRAM的第二存储器页面中的第一元数据位置处的相关联的元数据。该系统可以包括用于确定第一存储器页面中的第一数据位置是否被配置为存储元数据的部件。该系统还可以包括用于如果第一存储器页面中的第一数据位置未被配置为存储元数据,则访问第一存储器页面中的第一数据位置处的数据的部件。该系统另外可以包括用于如果第一存储器页面中的第一数据位置未被配置为存储元数据,则确定第一存储器页面中的元数据位置的部件。该系统还另外可以包括用于如果第一存储器页面中的第一数据位置未被配置为存储元数据,则访问第一存储器页面中的元数据位置处的相关联的元数据的部件。该系统可以包括用于如果第一存储器页面中的第一数据位置被配置为存储元数据,则确定第二存储器页面中的第二数据位置的部件。该系统另外可以包括用于如果第一存储器页面中的第一数据位置被配置为存储元数据,则访问第二存储器页面中的第二数据位置处的数据的部件。该系统又另外可以包括用于如果第一存储器页面中的第一数据位置被配置为存储元数据,则访问第一存储器页面中的第一数据位置处的相关联的元数据的部件。
用于DRAM中的元数据重定位的示例性计算机可读介质可以包括具有以计算机可执行形式存储在其上的指令的非暂时性计算机可读介质。指令在由处理器执行时,可以将处理器配置为接收第一请求,该第一请求用以访问第一存储器页面中的第一数据位置处的数据和第二存储器页面中的相关联的元数据。指令可以将处理器配置为确定第一存储器页面中的第一数据位置是否被配置为存储元数据。如果第一存储器页面中的第一数据位置未被配置为存储元数据,则指令还可以将处理器配置为访问第一存储器页面中的第一数据位置处的数据。如果第一存储器页面中的第一数据位置未被配置为存储元数据,则指令又另外可以将处理器配置为确定第一存储器页面中的元数据位置。如果第一存储器页面中的第一数据位置未被配置为存储元数据,则指令还另外可以将处理器配置为访问第一存储器页面中的元数据位置处的相关联的元数据。如果第一存储器页面中的第一数据位置被配置为存储元数据,则指令可以将处理器配置为确定第二存储器页面中的第二数据位置。如果第一存储器页面中的第一数据位置被配置为存储元数据,则指令另外可以将处理器配置为访问第二存储器页面中的第二数据位置处的数据。如果第一存储器页面中的第一数据位置被配置为存储元数据,则指令又另外可以将处理器配置为访问第一存储器页面中的第一数据位置处的相关联的元数据。
附图说明
在附图中,除非另有说明,否则各视图中相同的附图标记指代相同的部件。对于具有字母字符标记的参考数字,例如“102A”或“102B”,字母字符标记可以区分出现在同一附图中的两个相似的部件或元件。当在所有附图中,一个参考数字旨在涵盖具有相同参考数字的所有部件时,可以省略参考数字的字母字符标记。
图1是概念性地图示根据示例性实施例的动态随机存取存储器(DRAM)中的元数据重定位的框图。
图2是根据示例性实施例的DRAM中的元数据重定位系统的框图。
图3是图示DRAM中的数据和相关联的元数据的常规位置的存储器映射图。
图4是图示根据示例性实施例的DRAM中的元数据的重定位的存储器映射图。
图5是图示根据示例性实施例的不具有相关联的元数据的数据位置的存储器映射图。
图6是图示根据示例性实施例的DRAM中的元数据重定位的方法的流程图。
图7是图示根据示例性实施例的在图6的重定位方法中转换数据地址的示例的地址图。
图8是图示图7的转换的方面的存储器映射图。
图9类似于图8,示出了实际存储器地址的示例。
图10是图示根据示例性实施例的在图6的重定位方法中转换元数据地址的示例的地址图。
图11是图示根据示例性实施例的DRAM中的元数据的重定位的存储器映射图,其中DRAM包括多个存储体组。
图12是图示根据示例性实施例的DRAM中的元数据的重定位的另一存储器映射图,其中DRAM包括多个存储体组。
图13是根据示例性实施例的计算设备的框图。
具体实施方式
本文所使用的“示例性”一词表示“用作示例、实例或说明”。“说明性的”一词在本文中可以用作“示例性的”的同义词。本文中描述为“示例性”的任何方面不一定被解释为比其他方面更优选或更有利。
如图1中的概念性形式所示,在系统100中,客户端102可以发出指向动态随机存取存储器(“DRAM”)104的存储器事务请求。尽管为清楚起见没有图示,但是系统100可以包括在任何类型的计算设备中。客户端102也可以为任何类型的。如本领域普通技术人员所理解的,客户端102可以通过应用程序、线程等在处理器上的执行来实现。客户端102也可以被称为处理引擎或总线主控器。如本领域普通技术人员所理解的,总线主控器是启动与系统资源的总线事务的任何设备,其中DRAM 104是一个示例。DRAM 104可以为任何类型的,诸如双数据速率同步DRAM(“DDR-SDRAM”),有时为了简单起见被称为“DDR”。随着DDR技术的进化,已经开发了诸如第四代低功率DDR(“LPDDR4”)和第五代低功率DDR(“LPDDR5”)的DDR版本。DRAM 104可以为例如LPDDR4、LPDDR5等。
客户端102可以发出的各种存储器事务请求可以包括从DRAM 104读取数据的请求和向DRAM 104写入数据(即存储数据)的请求。存储器事务请求也可以被称为访问DRAM 104的请求。每个存储器事务请求可以包括虚拟地址或位置。当作为读取事务请求的主题的数据已经被返回到客户端102时,读取事务完成。当作为写入事务请求的对象的数据已经被写入DRAM 104时,写入事务完成。
可以被存储在DRAM 104中的某些类型的数据具有与数据相关联的元数据。元数据处理器106可以以客户端102接收存储器事务请求,并且确定作为事务请求主题的数据是否具有相关联的元数据。元数据处理器106可以基于虚拟地址确定数据是否具有相关联的元数据。例如,如果虚拟地址在第一地址范围内,则元数据处理器106可以确定数据具有相关联的元数据,而如果虚拟地址在第二地址范围内,则元数据处理器106可以确定数据不具有相关联的元数据。不同的地址范围可以对应于不同类型的元数据。取决于数据是否具有相关联的元数据以及元数据类型,元数据处理器106可以相应地处理数据。例如,如果虚拟地址对应于经过纠错特征的类型的数据,则在写入访问的情况下,元数据处理器106可以生成将与数据相关联地存储在DRAM 104中的校正子元数据,或者在读取访问的情况下,可以使用从DRAM 104读取的相关联校正子元数据对数据执行纠错算法。本文所描述的实施例解决的问题是如何有效地访问元数据以及数据。
数据和相关联的元数据可以被存储在DRAM 104的第一区域(即地址范围)108中。虚线箭头110概念性地指示示例性数据行(line)及其元数据之间的关联。不具有任何相关联的元数据的类型的数据可以存储在DRAM 104的第二区域112中。尽管出于示例的目的,在图1中仅示出了一个此类“第一”区域108和一个此类“第二”区域112,但是可以存在不止一个存储数据和相关联的元数据的区域,以及不止一个存储不具有任何相关联的元数据的数据的区域。尽管图1中未示出,由存储器事务请求提供的虚拟地址(在虚拟域中)转换或映射到DRAM 104中的物理地址(在物理域中)。
应理解,虚拟域中的数据位置和元数据位置是指,有时通俗地说,客户端102“看到”或“感知”正在存储的数据和元数据的位置。如下面另外详细描述的,从客户端的角度(即,在虚拟域中),DRAM 104的部分可以被配置为存储数据,而DRAM 104的其他部分可以被配置为存储元数据。换一种说法,虚拟或客户端域涉及客户端102用来间接引用DRAM 104中的数据和元数据存储位置的寻址方案。相反,物理域涉及在DRAM 104中使用的寻址方案,以物理地访问可以存储数据和元数据的存储位置。对应地,可以指出在物理域中,DRAM 104的部分可以被配置为存储数据,而DRAM 104的其他部分可以被配置为存储元数据。
如图2所示,系统200可以包括客户端202、系统高速缓存204、协处理器206、存储器控制器208和DRAM 210。系统200可以为上述系统100(图1)的示例。客户端202、协处理器206和DRAM 210可以分别是上述客户端102、元数据处理器106和DRAM 104的示例。系统高速缓存204可以被插入在客户端202和协处理器206之间的数据流中。如本领域普通技术人员所理解的,系统高速缓存204可以按常规方式操作。因此,一些存储器事务请求可以使用系统高速缓存204来完成,从而避免了访问DRAM 210的需要。系统高速缓存204可以按被称为高速缓存行或为简洁起见称为“行(line)”的单元来组织数据。使用系统高速缓存204而不是DRAM 210来完成存储器事务请求与本公开不直接相关。相反,本公开涉及通过访问DRAM210完成的存储器事务请求。然而,应理解,客户端202、系统高速缓存204和协处理器206均在虚拟域中处理数据,因此通过DRAM 210中的虚拟页面地址(即,页面码)和虚拟行地址(即,行号)而不是物理地址来对数据进行寻址。客户端202发出存储器事务请求,这些存储器事务请求通过虚拟页面码和虚拟页面内的行号来指示虚拟地址。
除其他功能外,协处理器206可以处理元数据,诸如纠错、存储器标记、DRAM认证、DRAM新鲜度(freshness)、DRAM压缩等中的一项或多项。协处理器206可以确定客户端是否正在请求访问具有相关联的元数据的类型的数据。访问具有相关联的元数据的数据的请求可以产生也访问相关联的元数据的请求。协处理器206因此可以向存储器控制器208提供不仅访问由客户端202所请求的数据而且访问相关联的元数据的请求。例如,响应于来自客户端202的将经过错误校正的类型的数据写入到DRAM 210的请求,协处理器206可以生成校正子元数据和对存储器控制器208的请求,以将校正子元数据与数据相关联地存储在DRAM210中。同样地,响应于从DRAM 210读取经过纠错的类型的数据的请求,协处理器206可以向存储器控制器208生成从DRAM 210读取相关联校正子元数据的请求。协处理器206然后可以使用从DRAM 210读取的校正子元数据对数据执行纠错算法。
除其他功能外,存储器控制器208可以将存储器事务请求转换为DRAM事务,包括常规方式的DRAM命令和物理地址。由于本领域普通技术人员很好地理解了存储器控制器208的这种常规功能和相关功能,因此本文不描述存储器控制器208的这些方面。
DRAM 210可以具有常规结构并以常规方式运行。DRAM 210可以为例如LPDDR4、LPDDR5等。尽管本领域普通技术人员很好地理解了这类DRAM的结构和操作,但是下面的简要描述是作为背景提供的。
DRAM 210可以包括一个或多个存储体212。例如,DRAM 210可以具有M个存储体212,它们可以被称为“Bank_0”至“Bank_M-1”每个存储体212可以包括存储位置的二维阵列213,其中通过选择行和列来访问阵列中的存储位置。为了清楚起见,阵列213在图2中以概念性的方式示出;阵列213可以具有比所示更多的行和列,并且每个存储位置可以被配置为存储一定量的数据,例如一个字节(“B”)。图2中突出显示了示例性的行和列(用交叉影线表示)。因此,由存储器控制器208提供的DRAM物理地址可以包括行地址、列地址和存储体地址。响应于存储体地址,存储体地址解码逻辑(未示出)可以选择存储体212中的一个存储体。响应于行地址,行地址解码器214可以选择所选存储体212中的行中的一个行。类似地,响应于列地址,列地址解码器216可以选择所选存储体212中的列中的一个列。读取锁存器218可以缓冲读取数据,并且写入锁存器220可以缓冲写入数据。输入/输出(“I/O”)逻辑222可以引导从所选择的存储器位置读取数据和向所选择的存储器位置写入数据。
每个存储体212可以具有行缓冲器224。行缓冲器224存储所选行的内容(有时称为物理“页面”)。在写入或读取行之前,必须激活或“打开”该行。一旦行被打开,DRAM 210可以响应于读取或写入命令从行缓冲器224中读取或向行缓冲器224中写入任意数目的列。在读取或写入命令之后,数据以称为“突发”的单元在存储器控制器208和DRAM 210之间串行传输,该单元包括一些预定数目的数据列。突发大小可以例如与上述行大小相同。在向行缓冲器224写入或从行缓冲器224读取之后,必须恢复或“关闭”该行。每个存储体212中每次只有一行可以保持打开。
存储器控制器208可以基于DRAM存储体212的当前状态,将每个事务标识为“命中”、“未命中”或“冲突”。命中是对存储器控制器208确定在存储器控制器208处理事务请求时已经打开的行(在存储体212中)的读取或写入事务。命中具有低延迟。也就是说,命中的事务可以在相对较短的时间内完成。未命中是对存储器控制器208确定在存储器控制器202处理事务请求时关闭的行(在存储体212中)的读取或写入事务。如果存储器控制器208将读取或写入事务标识为未命中,则存储器控制器208必须在从该行读取或向该行写入之前首先打开该行。未命中比命中具有更高的延迟。也就是说,未命中的事务比命中的事务需要更多的时间来完成。冲突是对存储器控制器208确定在存储器控制器208处理事务请求时关闭的行(在存储体212中)的读取或写入事务,而存储器控制器208则确定对同一存储体的另一行(存储器事务未指向)在该时间打开。如果存储器控制器208将读取或写入事务标识为冲突,则存储器控制器208必须首先关闭该存储体212中的打开行,然后在从该行读取或向该行写入之前打开该事务所指向的行。冲突比未命中具有更高的延迟。也就是说,作为冲突的事务比作为未命中或命中的事务花费更多的时间来完成。
如果数据及其相关联的元数据未存储在DRAM 210的同一行中,则存储器访问可以导致冲突,从而导致高延迟。本文所描述的系统、方法、计算机可读介质等的示例性实施例涉及以使数据和相关联的元数据的存储器访问不会导致冲突的可能性最大化的方式动态地映射或重定位元数据。通过将数据及其相关联的元数据存储在同一DRAM行中,当DRAM行打开时,可以同时访问数据和元数据,从而避免冲突。
如图3所示,常规寻址方案或配置300可以将存储器地址范围或区域302配置为包括数据区域304和元数据区域306。也就是说,区域302被配置为将数据存储在数据区域304中,并且将其相关联的元数据存储在元数据区域306中。数据区域304可以被配置为两个或更多个数据页面308A(“PD0”)、308B(“PD1”)等,直至最后的数据页面(未示出)。(数据页面308B后面的省略号(“...”)指示可以存在任何数目的另外的数据页面。)类似地,元数据区域306可以被配置作为一个或多个元数据页面310。
数据页面308A、308B等中的每个数据页面可以被配置为多个(“Z”)数据行:第一数据行L0、第二数据行L1等,直至最后的数据行LZ-1。类似地,一个或多个元数据页面310中的每个元数据页面可以被配置为Z个元数据行:第一元数据行L0、第二元数据行L1等,直至最后的元数据行LZ-1。与存储在第一数据页面308A中的数据相关联的所有元数据可以被存储在元数据页面310的第一元数据行L0中(“PMD0”)。类似地,与存储在第二数据页面308B中的数据相关联的所有元数据可以被存储在元数据页面310的第二元数据行L1中。如上关于前两个数据页面308A和308B所描述的数据和相关联的元数据的相同相对位置适用于所有另外的数据页面(未示出),并且因此与存储在最后一个数据页面(未示出)中的数据相关联的元数据可以存储在元数据页面310的最后一行LZ-1中。每个数据页面308A、308B等,以及每个元数据页面310可以具有页面大小(“SP”)和行大小(“SL”),其示例在下面描述。虚拟域中的页面中的每一个可以被转换成(例如,通过存储器控制器208)物理域中的不同DRAM行。虚拟域中的页面的行中的每行可以被转换成对应于该页面的行中的一个或多个DRAM列的组。
为了访问数据及其相关联的元数据,客户端可以发出事务请求,该事务请求包括通过页面码和行号标识请求目标的虚拟地址。也就是说,客户端可以使用虚拟域地址方案,该方案对数据页面308A、308B等中的数据进行寻址,并且对元数据页面310中的相关联的元数据进行寻址。在示例性配置300中,数据页面308A、308B等中的每个数据页面、以及元数据页面310在物理域中映射或转换到不同的DRAM行。从示例性配置300中可以理解,因为数据及其相关联的元数据没有存储在同一DRAM行中,所以存储器访问可以导致冲突。
如图4所示,示例性寻址方案或配置400可以将地址范围或区域402配置为包括数据区域404和伪元数据区域406。为了访问数据及其相关联的元数据,客户端可以按与上面关于图3所描述的相同的方式发出事务请求,该事务请求包括区域402中的虚拟地址,该虚拟地址通过页面码和行号来标识请求的目标。也就是说,客户端可以使用虚拟域地址方案,该方案对数据页面408A、408B等中的数据进行寻址,并且对伪元数据区域406的元数据页面410中的相关联的元数据进行寻址。在示例性配置400中,数据页面408A、408B等中的每个数据页面、以及元数据页面410在物理域中映射或转换到不同的DRAM行。然而,与上述常规配置300(图3)中的元数据区域306相比,伪元数据区域406在虚拟(即,客户端)域中被配置为元数据区域,但是如图4所示,在物理(即,存储器控制器和DRAM)域中被配置为补充数据区域,以存储已经从数据区域404“重定位”的数据。换句话说,客户端202以与上面关于图3描述的相同的方式“看见”或“感知”如存储在伪元数据区域406中的元数据,即使元数据实际上没有(在物理域中)存储在映射到伪元数据区域406的DRAM行中。
相反,在物理域中,元数据可以存储在数据区域404中的数据页面408A、408B等中的每个数据页面的预定行(例如最后一行)中。换句话说,本文所描述的示例性实施例在物理域中操作,就好像数据页面的最后一行与元数据页面的行交换一样,该元数据页面的行包括虚拟域中该数据页面的元数据。例如,在物理域中,与存储在第一数据页面408A的第一行至倒数第二行(即,数据行L0至LZ-2)中的数据相关联的元数据可以存储在第一数据页面408A的最后一行中。类似地,在物理域中,与存储在第二数据页面408B的第一行至倒数第二行(即,数据行L0至LZ-2)中的数据相关联的元数据可以存储在第二数据页面408B的最后一行中。如上关于前两个数据页面408A和408B所描述的数据和相关联的元数据的相同相对位置适用于所有另外的数据页面(未示出),因此在物理域中,与存储在最后一个数据页面(未示出)的第一行至倒数第二行(即,数据行L0至LZ-2)中的数据相关联的元数据可以存储在该最后一个数据页面的最后一行中。
伪元数据区域406可以在物理域中被配置作为一个或多个补充数据页面410,以存储虚拟域中存储在(即,客户端“看到”或“感知”为存储在)数据页面408A、408B等中的每个数据页面的最后一行(即,数据行LZ-1)中的数据,而不是元数据。举例来说,补充数据页面410的第一行可以在物理域中被配置为以存储在虚拟域中与第一数据页面408A的最后一行相关联的数据,补充数据页面410的第二行可以被配置为存储在虚拟域中与第二数据页面408B的最后一行相关联的数据,等等。
总之,在虚拟域中,或从客户端202(图2)的角度来看,数据页面408A、408B等中的每个数据页面的最后一行被配置为存储数据,但是在物理域中,或者从存储器控制器208和DRAM 210(图2)的角度来看,数据页面408A、408B等中的每个数据页面的最后一行被配置为存储与页面408A、408B等中的那一个相关联的所有元数据。另外,在虚拟域中,或者从客户端202(图2)的角度来看,伪元数据区域406被配置为存储与数据页面408A、408B等相关联的元数据,但是在物理域中,或者从存储器控制器208和DRAM 210的角度来看,伪元数据区域406被配置为存储从客户端202(图2)的角度来看存储在数据页面408A、408B等中的每个数据页面的最后一行中的数据。换一种说法,数据页面408A、408B等中的每个数据页面的最后一行是虚拟域数据位置,同时也是被配置为存储与数据页面408A、408B等中的一个数据页面相关联的所有元数据的物理域元数据位置。另外,补充数据页面410的每一行(在伪元数据区域406中)是虚拟域元数据位置,同时是对应于数据页面408A、408B等中的每个数据页面的最后一行的物理域数据位置。应理解,最后一行是可以存储元数据的预定行的示例,并且在其他实施例中,元数据可以存储在任何其他预定行中。例如,在另一实施例(未示出)中,第一行可以为被配置为存储元数据的行。在又一实施例(未示出)中,第二行可以为被配置为存储元数据等的行。
如图5所示,可以注意到,上述涉及或映射数据和元数据位置的寻址方案或配置400(图4)可以与不具有任何相关联的元数据的数据的寻址方案或配置500共存。配置500可以将DRAM 210的地址范围或区域502配置为仅由数据区域504组成,而没有相关联的元数据区域。地址范围或区域502和402(图4)可以为同一DRAM 210(图2)的两个地址范围或区域。数据区域504可以被配置为两个或更多个DRAM数据页面508A、508B等。
如图6所示,DRAM系统中的元数据重定位的示例性方法600可以包括下文针对框602-614所描述的事件或动作。方法600反映了以上关于图4描述的数据和元数据的映射或重定位可以动态地发生,即,响应于来自客户端202(图2)的存储器事务请求。方法600可以由例如上述协处理器206或者由协处理器206和存储器控制器208的组合来执行或以其它方式控制。协处理器206、存储器控制器208或者协处理器206和存储器控制器208的组合可以为用于执行下面关于方法600描述的功能的装置的示例。在方法600的以下描述中,术语“第一”、“第二”等可以用于区分元件或步骤,而不是描述或意指任何顺序、次序、等级等。例如,方法600中对“第一”和“第二”页面的引用不限于以上参考图4描述的相应的数据页面408A和408B或者可以为连续的任何其他页面,而是可以指数据页面408A、408B等中的任何两个,或任何其他两页面。类似地,对“第一”和“第二”数据位置的引用不限于相应的行L0和L1或任何其他可能连续的数据位置,而是可以指任何两个位置。
如框602所示,方法600可以包括接收用以访问第一页面中的第一数据位置处的数据和第二页面中的第一元数据位置处的相关联的元数据的请求。该请求可以包括两个访问请求:一个请求用以访问数据,而另一个请求用以访问与该数据相关联的元数据。访问请求可以由例如协处理器206的一部分接收。
如框604所示,可以确定第一页面中的第一数据位置是否被配置为存储元数据。例如,如上关于图4所述,数据页面408A、408B等中的每个数据页面的最后一行可以被配置为存储元数据。因此,在每个数据页面的最后一行被配置为存储元数据而不是数据的示例性实施例中,可以确定(框604)第一数据位置是否是数据页面的最后一行。也就是说,可以确定数据访问请求的目标是否是数据页面的最后一行。应理解,在本文所描述的示例性实施例中,协处理器206被配置为使用上面参考图4描述的映射或配置400,并且因此可以确定特定物理域数据位置是被配置为存储元数据(而不是数据)还是被配置为存储数据(而不是元数据)。也就是说,在示例性实施例中,协处理器206可以确定数据访问请求的目标是否是数据页面的最后一行。被配置为存储元数据的第一数据位置也可以被称为第二元数据位置。
如框606所示,如果确定(框604)第一页面中的第一数据位置未被配置为存储元数据,则可以访问第一页面中的第一数据位置处的数据。例如,存储器控制器208(图2)可以通过向DRAM 210发出命令、与DRAM 210进行数据通信等来访问数据,如上关于图2所述。再次参考上面关于图4描述的映射或配置400,如果第一数据位置对应于数据页面408A、408B等中的一个数据页面的第一行至倒数第二行(即,数据行L0至LZ-2)中的一行,则可以访问物理域数据位置。
如框612所示,如果确定(框604)第一页面中的第一数据位置未被配置为存储元数据,则可以确定第一页面中的(“第二”)元数据位置。再次参考上面关于图4描述的示例,伪元数据区域406的补充数据页面410的每一行被映射到数据页面408A、408B等中的一个的最后一行。因此,在此示例中,第一页面中的“第二”元数据位置是第一页面的最后一行。例如,如果第一页面是数据页面408A,则第二元数据位置可以被确定为数据页面408A的最后一行。类似地,如果第一页面是数据页面408B,则第二元数据位置可以被确定为数据页面408B的最后一行。第二元数据位置是已经从伪元数据区域406“重定位”的元数据的位置。如框613所示,在第一页面中的(“第二”)元数据位置被确定之后(框612),可以在第一页面中的该元数据位置处访问相关联的元数据。
根据框606访问数据位置可以包括(例如,由存储器控制器208)将虚拟域数据位置转换为物理域数据位置。用以访问数据的请求可以按虚拟页面码和行号的形式提供第一数据位置。同样,用以访问元数据的请求可以按虚拟页面码和行号的形式提供第一元数据位置。虚拟域中的页面码可以对应于物理域中的DRAM行,并且因此(例如,由存储器控制器208)转换成物理域中的DRAM行。虚拟域中的行号可以对应于并且因此被转换成该行中的一个或多个DRAM列的组。(每个数据行的DRAM列的数目可以为预定的,即,在实施例的整个操作中是恒定的。)
如框608所示,如果确定(框604)第一页面中的第一数据位置被配置为存储元数据,则可以基于第一数据位置确定第二页面中的第二数据位置。再次参考上面关于图4描述的映射或配置示例,如果确定所请求的或目标数据位置是数据页面408A、408B等中的一个数据页面的最后一行(即,数据行LZ-1)。则可以确定伪元数据区域406中的补充数据页面410的哪一行对应于该数据页面。在此示例中,补充数据页面410是上文提及的“第二”页面,并且补充数据页面410中的行是“第二”数据位置。
如框610所示,一旦确定了第二页面中的第二数据位置(框608),就可以访问该第二数据位置。在读取访问的情况下,访问第二数据位置处的数据可以包括存储器控制器208(图2)从DRAM 210读取数据。在写入访问的情况下,访问数据可以包括确保数据已经被写入,即存储在DRAM 210中的存储器控制器208。
如框614所示,如果确定(框604)第一页面中的第一数据位置配置为存储元数据,则可以在该第一数据位置处访问相关联的元数据。访问相关联的元数据可以包括将虚拟域中的第一数据位置转换(例如,通过存储器控制器208)到物理域中。虚拟域中的页面码可以对应于物理域中的DRAM行,并且因此被转换为物理域中的DRAM行。虚拟域中的行号可以对应于并且因此被转换成该行中的一个或多个DRAM列的组。
注意,在第一页面中的第一数据位置被配置为存储数据(即,未被配置为存储元数据)的情况下,则第一数据位置与元数据位置在同一DRAM行中。参考图4中的示例性映射,在目标数据位置是在物理域中对应于第一DRAM行的数据页面408A的数据行L0至LZ-2中的任何数据行的情况下,则存储器控制器208(图2)不会遇到冲突,因为目标元数据位置在相同的第一DRAM行中。同样,在目标数据位置是在物理域中对应于第二DRAM行的数据页面408B的数据行L0至LZ-2中的任何数据行的情况下,则存储器控制器208(图2)不会遇到冲突,因为目标元数据位置在相同的第二DRAM行中。然而,在第一页面中的第一数据位置被配置为存储元数据的情况下(即,第一数据位置已经被配置为第二元数据位置),则第二数据位置(目标数据已经被重定位的位置)将不会与第二元数据位置在同一DRAM行中。再次参考图4中的示例性映射,在转换或重定位的数据位置在补充DRAM数据页面410中的情况下,则存储器控制器208遇到冲突,因为转换或重定位的元数据位置是数据页面408A、408B等中的一个数据页面的最后一行。冲突比命中更不可能(即,无冲突),因为在每个DRAM页面中,Z行中只有一行(例如,最后一行)被重定位到补充DRAM数据页面410。平均而言,每Z个访问数据和相关联的元数据的请求中只有一个会发生冲突。
注意,上述方法600(图6)涉及访问具有相关联的元数据的数据的请求。尽管在图6中未示出,但是如果接收到访问不具有任何相关联的元数据的数据的请求,则可以按常规方式确定和访问另一存储器页面中的数据位置,诸如上述页面508A或508B(图5)。也就是说,方法600可以有条件地执行,这取决于所请求的数据是具有相关联的元数据的类型还是不具有相关联的元数据的另一种类型。
参考图7,可以描述方法600(图6)的框608中的确定示例。也就是说,图7图示了将数据区域404(图4)中的地址702转换成伪元数据区域406中的地址的示例。在此示例中,DRAM页面大小SP是2kB,并且行大小SL是64B。在该示例中,数据区域402(图4)的大小可以为32GB,包括上述2kB页面中的16k,并且元数据区域404的大小可以为1GB。也就是说,此示例所涉及的数据类型的数据与元数据的比率是32:1。
在该示例中,地址长度为36位。地址位可以通过它们的位置编号来引用,从位置“0”中的最低有效位(“LSB”)或为简洁起见,“位0”,到位置“35”中的最高有效位(“MSB”),或为简洁起见,“位35”。地址可以按位组组织。最低位组中的位的大小或数目是6,因为该位组的大小是行大小SL(图4)的以2为底的对数(“log2”)。位组中位的大小或数目是5,因为此位组的大小是每页面行数的log2,在此示例中是每2kB页面64B行的数目。下一个位组中的位的大小或数目是25,因为该位组的大小是32GB的数据区域大小的log2。
在图8中,图示了将存储区402的数据区404(图4)中的地址转换为存储区402的伪元数据区406中的物理地址。存储器区域402可以由数据区域404的数据区域开始地址(“DataStartAddr”)和数据区域结束地址(“DataEndAddr”)以及元数据区域406中的元数据区域开始地址(“MdataStartAddr”)和元数据区域结束地址(“MdataEndAddr”)来表征。“DataAddr”是对应于所请求的虚拟域数据位置的数据页面408A、408B(图8中未单独示出)等中的一个中的64B行的地址。尽管图8中未示出,但是数据页面408A、408B等的最后一行的地址可以被称为“LastLineDataAddr”。在下面的等式中,箭头符号“->”可以用于指示从等式的左侧获得结果(即,等式的右侧)。在一些等式中,箭头可以意指运算。
在该示例中,根据框604(图6)的确定可以通过确定数据地址的位6至位10是否均为1,即是否DataAddr[10:6]=‘11111’来执行。如果数据地址的位6至位10是‘11111’,则对应于所请求的或目标数据位置的行是数据页面408A、408B等中的一个数据页面的最后一行。如果数据地址的位6至位10是‘11111’,则数据区域404(图4)中的所请求的地址可以被转换成伪元数据区域406中的地址。
继续此示例,根据框608(图6)的确定可以通过首先确定最后一行距起始地址的地址偏移量(“LastLineDataAddrOffset”)来执行。地址偏移量可以通过从LastLineDataAddr中减去数据区起始地址来确定:
LastDataLineAddr-DataStartAddr->LastLineDataAddrOffset(等式1)
数据页面内最后一行的地址偏移量可以由LastLineDataAddrOffset确定:
LastLineDataAddrOffset->DataPageAddrOffset(等式2)
在上述等式2中,箭头符号(“->”)意指丢弃地址位6至10(即页面内的行偏移量)的运算。结果,LastLineDataAddrOffset是需要添加到伪元数据区域起始地址MdataStartAddr的数据行的偏移地址。然后,伪元数据区域406中的重定位的数据行的地址(“NewDataAddr”)可以通过将数据页面内最后一行的地址偏移量加到元数据区域起始地址来确定:
DataPageAddrOffset+MdataStartAddr->NewDataAddr(等式3)
在图9中,显示了存储器区域402中的地址值示例。因为DataAddr[10:6]的值为‘11111’,所以等式1求值为:0x8_000107C0–0xc000_0000->0x7_4001_07C0。等式2求值为:0x7_4001_07C0->0x3A00_0800。等式3求值为:0x3A00_0800+0x8000_0000->0xBA00_0800。因此,在此示例中,伪元数据区域406中的重定位的数据行(NewDataAddr)的地址是0xBA00_0800。
参考图10,可以描述方法600(图6)的框612中的确定示例。也就是说,图10图示了将伪元数据区域406中的地址802转换成数据区域404中的地址804的示例。因为作为所请求的或目标数据位置的DataAddr是数据页面408A、408B等中的一个数据页面的最后一行,因此在该示例中,框612(图6)中的确定可以如图10和等式4所示来执行:
DataAddr->LastLineDataAddrOffset(MdataAddr)(等式4)
在上述等式4中,箭头符号(“->”)意指地址位6至10被强制为‘11111’的操作。使用来自以上关于图9描述的示例的值,数据区域404中的相关联的元数据的地址(MdataAddr)将是0x8_0001_07FE。
上述方法600(图6)也可以应用于将DRAM 210(图2)以多个存储体组(“BG”)组织的实施例,其中数据交错,诸如以“存储体组模式”(也称为“存储体组掩码”)配置的LPDDR5。如图11所示,示例性存储器区域1100(例如,在DRAM 210中)可以在虚拟域中被组织为四个虚拟页面的组,在图11中被称为:“虚拟页面0”、“虚拟页面1”、“虚拟页面2”和“虚拟页面3”。类似于上述(例如,关于图4)的先前实施例,其中DRAM 210没有被组织在多个BG中,在此实施例中,数据可以在虚拟域中通过虚拟页面码和行号(未示出)来寻址。例如,客户端202(图2)可以通过指示虚拟页面0-虚拟页面3中的一个虚拟页面和该虚拟页面内的行号来请求访问数据。
在LPDDR5寻址方案中,位14-13寻址存储体,位[10:8]寻址BG,并且位[5:0]寻址DRAM阵列中的起始列(图11中未示出)。在所示的示例中,DRAM可以被配置为四个BG,在图11中称为:“BG0”、“BG1”、“BG2”和“BG3”。每个存储体组可以包括四个存储体。虚拟页面中的每个虚拟页面可以按行组织,在图11中由阴影块表示。不同类型的阴影将存储体组彼此区分开,如图11中的图例所示。每个虚拟页面和每个行可以分别具有例如2kB和64B的大小,如在上述先前的实施例中(例如,关于图4)。注意,四个虚拟页面,虚拟页面0-虚拟页面3是虚拟或客户端域存储器区域,而BG和存储体是物理或DRAM域结构。
与先前实施例相似,每行数据均具有相关联的元数据。虚拟元数据页面(未示出)可以被配置(即,在虚拟域中)来存储相关联的元数据。因此,访问数据和相关联的元数据的请求可以对虚拟页面0-虚拟页面3中的一个虚拟页面中的数据进行寻址,并且对虚拟元数据页面中的元数据进行寻址。
LPDDR5存储体组模式使存储体(可以称为“B0”、“B1”、“B2”和“B3”)在存储体组之间交错。注意,在图11中,每个虚拟页面列表示64B访问,由位[7:6]寻址。图11中未指示发生存储体交错的模式,即连续存取跨BG从一个存储体移动到另一存储体的模式,并且如所属领域的技术人员所理解,并且该模式可以为任何模式。将元数据映射或重定位到何处的问题提出了挑战,因为交错与页面大小不一致。例如,在LPDDR5存储体组模式实施例中,其中虚拟页面大小为2kB,存储体组不在与虚拟页面相同的大小边界(例如,2kB)处交错。将元数据映射或重定位到何处的问题表示了一种挑战,因为即使元数据被重定位到虚拟数据页面(类似于LPDDR5)中的最后一行,也不能保证数据和元数据将被放置在DDR中的同一物理存储体组页面中。当存储体组在小于页面大小的边界处交错时,单个虚拟页面将被映射到不同存储体组中的不同物理页面。
可以通过配置每个存储体组的一个行(即,在物理域中)来存储元数据(见图11中的键)来解决这一挑战。注意,在图11所示的示例中,每个存储体组BG0、BG1、BG2和BG3中的存储体B3的最后一行被配置为存储元数据。
在图12中,以替代方式描绘了上述映射(图11)。在图12中,虚拟页面1200(诸如上述虚拟页面0-虚拟页面3中的任何一个虚拟页面)和物理或DRAM存储位置之间的示例性映射由虚线箭头指示。每个映射的存储体组部分1202具有类似于上面参考图2描述的DRAM210的存储结构。也就是说,存储体B0-B3中的每个存储体包括由行和列寻址的存储位置的阵列。在阵列的每一行中,一组预定数目的存储位置或列可以对应于虚拟域中的一行(例如,64B)。
存储体组BG0-BG3内的阴影块表示所有四个虚拟页面——虚拟页面0-虚拟页面3,到物理(DRAM)域的映射。作为存储体组交错的结果,在每个存储体组BG0-BG3中,每个虚拟页面——虚拟页面0-虚拟页面3的一部分映射到存储体B0-B3中的一个的一部分,例如存储体B0的圆圈部分1202。值得注意的是,所有元数据行(见图11中的键)映射到相同的DRAM页面,为了清楚起见,在图12中描绘为每个存储体组BG0-BG3的存储体B0中从顶部起的第四行。然而,在其他示例中,元数据行可以映射到任何DRAM页面。
在图11-12所示的示例中,客户请求访问虚拟页面1200中除与所请求的数据相同的存储体组中的存储体B3的最后一行之外的任何行中的数据不会导致冲突,因此不执行所请求的数据地址的重定位。注意,尽管每次可以打开存储体组中的存储体B0-B3中的每个存储体中的仅一个页面,但是不同存储体中的页面可以同时打开。例如,包含元数据行的页面(例如,四行构成图12中的B3存储体的物理页面)可以为打开的,而包含B0、B1或B2中的所请求的数据行的页面也是打开的。在所示的示例中,只有指向存储体B3的最后一行的数据访问请求将导致冲突,因为该行在物理域中被配置为存储元数据而不是数据。如果确定数据访问请求指向存储体B3的最后一行,则执行所请求的数据地址的重定位。由于在所示的示例中,任何存储体的每个物理页面中均有32行,因此数据访问请求成为冲突的概率是32分之一。在数据与元数据的比率为1/32的情况下(如图11中的示例所示),对DRAM物理页面的总共32次访问中的31次访问具有位于存储体组内的相同物理页面中的元数据。针对该31行的数据访问之后的任何元数据访问均不会导致页面冲突,因为元数据访问将导致页面命中。对页面的最后一行的数据访问被重定位到伪元数据页面中的一行(映射到不同的DRAM页面),导致页面缺失/冲突。因此,页面冲突的概率是1/32。
根据框604(图6)的确定可以通过首先确定具有与低阶页面位(Addr[12:11])交换的存储体组掩码位(Addr[10:8])的地址(“DataAddrSwapped”)来执行。如果DataAddrSwapped的位6至10是‘11111”,则对应于所请求的或目标数据位置的行是页面虚拟页面0-虚拟页面3中的一个虚拟页面的最后一行。如果数据地址的位6至10是‘11111”,则根据框608(图6)的确定可以通过将所请求的数据地址转换到最后一个存储体组的最后一行来执行(参见上面的等式1)。页面内最后一行的地址偏移量可以由LastLineDataAddrOffset确定(参见上面的等式2)。然后,重定位的数据行的地址(NewDataAddr)可以通过将数据页面内最后一行的地址偏移量加到元数据区域起始地址来确定(参见上面的等式3)。
使用图9所示的相同示例性地址值0x8_0001_07C0,因为在将存储体组位与低阶页面位交换后,DataAddr[10:6]的值不是‘11111’,所以可以确定数据地址不是存储体组页面的最后一行。因此,不执行数据地址重定位。元数据地址可以通过将存储体组掩码位(Addr[10:8])与低阶页面位(Addr[12:11])交换以形成DataAddrSwapped来确定。然后,可以确定元数据地址(参见等式4)。使用0x8_001_07C0的DataAddr值,相关联的元数据(MdataAddr)的重定位地址将是0x8_0001_1FD6。
在另一示例中,地址值可以为0x0_F000_FFC0。因为在用低阶页面位交换存储体组位之后,DataAddr[10:6]的值是‘11111’,所以可以确定数据地址是存储体组页面的最后一行。根据框612(图6)的确定可以通过首先确定最后一行距起始地址的地址偏移量来执行。地址偏移量可以通过从LastLineDataAddr中减去数据区起始地址来确定(参见上面的等式1)。然后,可以确定页面内最后一行的地址偏移量(参见上面的等式2)。重定位的数据行的地址(“NewDataAddr”)可以通过将数据页面内最后一行的地址偏移量加到元数据区域起始地址来确定(参见上面的等式3)。在该示例中,地址值为0x0_F000_FFC0,等式1求值为:0x0_F000_FFC0–0xC000_0000->0x3000_FFC0。等式2求值为:0x3000_FFC0->0x180_07C0。等式3的求值为:0x3000_FFC0+0x8000_0000->0x8180_FFC0。因此,重定位的数据行的地址为0x8180_FFC0。
经重定位的元数据地址可以通过将存储体组掩码位(Addr[10:8])与低阶页面位(Addr[12:11])交换以形成DataAddrSwapped来确定。然后,可以确定元数据地址(参见等式4)。使用0x0_F000_FFC0的DataAddr的值,相关联的元数据(MdataAddr)的重定位地址将是0xF000_FFFE。
如图13所示,可以在便携式计算设备(“PCD”)1300中提供DRAM系统中的元数据重定位的系统和方法的示例性实施例。PCD 1300可以为上述系统100(图1)或200(图2)的示例。
PCD 1300可以包括SoC 1302。SoC 1302可以包括CPU 1304、GPU 1306、DSP 1307、模拟信号处理器1308或其他处理器。CPU 1304可以包括多个核,诸如第一核1304A、第二核1304B等,直至第N个核1304N。
显示器控制器1310和触摸屏控制器1312可以耦合到CPU 1304。SoC 1302外部的触摸屏显示器1314可以耦合到显示器控制器1310和触摸屏控制器1312。PCD 1300还可以包括耦合到CPU 1304的视频解码器1316。视频放大器1318可以耦合到视频解码器1316和触摸屏显示器1314。视频端口1320可以耦合到视频放大器1318。通用串行总线(“USB”)控制器1322也可以耦合到CPU 1304,并且USB端口1324可以耦合到USB控制器1322。用户标识模块(“SIM”)卡1326也可以耦合到CPU 1304。
一个或多个存储器可以耦合到CPU 1304。一个或多个存储器可以包括易失性和非易失性存储器。易失性存储器的示例包括静态随机存取存储器(“SRAM”)1328和动态RAM(“DRAM”)1330和1331。此类存储器可以在SoC 1302的外部(诸如DRAM 1330),或者在SoC1302的内部(诸如DRAM 1331)。耦合到CPU 1304的DRAM控制器1332可以控制向DRAM 1330和DRAM 1331写入数据以及从DRAM 1330和DRAM 1331读取数据。在其他实施例中,此类DRAM控制器可以被包括在处理器中,诸如CPU 1304。DRAM控制器1332可以为存储器控制器208(图2)或与协处理器206结合的存储器控制器208的示例。DRAM 1330和DRAM 1331中的任何一个DRAM均可以为DRAM 210(图2)的示例。
立体声编解码器1334可以耦合到模拟信号处理器1308。另外,音频放大器1336可以耦合到立体声编解码晶片1334。第一立体声扬声器和第二立体声扬声器1338和1340可以分别耦合到音频放大器1336。此外,麦克风放大器1342可以耦合到立体声编解码晶片1334,并且麦克风1344可以耦合到麦克风放大器1342。调频(“FM”)无线电调谐器1346可以耦合到立体声编解码器1334。FM天线1348可以耦合到FM无线电调谐器1346。另外,立体声耳机1350可以耦合到立体声编解码器1334。可以耦合到CPU 1304的其他设备包括一个或多个数字(例如,CCD或CMOS)相机1352。
调制解调器或射频收发器1354可以耦合到模拟信号处理器1308。RF开关1356可以耦合到RF收发器1354和RF天线1358。另外,小键盘1360、具有麦克风的单声道耳机1362和振动器设备1364可以耦合到模拟信号处理器1308。
SoC 1302可以具有一个或多个内部或片内热传感器1370A,并且可以耦合到一个或多个外部或片外热传感器1370B。模数转换器(“ADC”)控制器1372可以将热传感器1370A和1370B产生的电压降转换成数字信号。电源1374和电源管理集成电路(“PMIC”)1376可以向SoC 1302供电。
固件或软件可以被存储在任何上述存储器中,诸如DRAM 1330或1331、SRAM 1328等,或者可以存储在可以由软件或固件在其上执行的处理器硬件直接访问的本地存储器中。此类固件或软件的执行可以控制任何上述方法的方面或者配置任何上述系统的方面。任何这类存储器或其他具有以计算机可读形式存储在其中用于由处理器硬件执行的固件或软件的非暂时性存储介质可以为“计算机可读介质”的示例,正如该术语在专利词典中所理解的那样。
对于本发明所属领域的普通技术人员而言,在不脱离其精神和范围的情况下,替代实施例将变得显而易见。因此,尽管已经详细说明和描述了所选择的方面,但是应理解,在不脱离由所附权利要求限定的本发明的精神和范围的情况下,可以在其中进行各种替换和变更。
实施方式示例在以下编号条款中进行描述:
1.一种用于动态随机存取存储器(DRAM)中的元数据重定位的方法,包括:
接收第一请求,该第一请求用以访问DRAM的第一存储器页面中的第一数据位置处的第一数据和DRAM的第二存储器页面中的相关联的元数据;
确定第一存储器页面中的第一数据位置是否被配置为存储元数据;
如果第一存储器页面中的第一数据位置未被配置为存储元数据,则访问第一存储器页面中的第一数据位置处的第一数据;
如果第一存储器页面中的第一数据位置未被配置为存储元数据,则确定第一存储器页面中的元数据位置;
如果第一存储器页面中的第一数据位置未被配置为存储元数据,则访问第一存储器页面中的元数据位置处的相关联的元数据;
如果第一存储器页面中的第一数据位置被配置为存储元数据,则确定第二存储器页面中的第二数据位置;
如果第一存储器页面中的第一数据位置被配置为存储元数据,则访问第二存储器页面中的第二数据位置处的第一数据;以及
如果第一存储器页面中的第一数据位置被配置为存储元数据,则访问第一存储器页面中的第一数据位置处的相关联的元数据。
2.根据条款1所述的方法,其中如果第一存储器页面中的第一数据位置未被配置为存储元数据,则访问第一存储器页面中的元数据位置处的相关联的元数据与访问第一存储器页面中的第一数据位置处的第一数据同时发生。
3.根据条款2所述的方法,其中:
访问第一存储器页面中的元数据位置处的相关联的元数据包括访问DRAM行;并且
访问第一存储器页面中的第一数据位置处的第一数据包括访问DRAM行。
4.根据条款1所述的方法,还包括:
接收第二请求,该第二请求用以访问第三存储器页面中的第二数据位置处的第二数据,该第二数据不具有相关联的元数据;以及
访问第三存储器页面中的第二数据位置处的第二数据。
5.根据条款1所述的方法,其中确定第一存储器页面中的第一数据位置是否被配置为存储元数据包括确定第一数据位置是否是第一存储器页面中的最后一行。
6.根据条款1所述的方法,其中访问第一存储器页面中的第一数据位置处的第一数据包括访问第一存储器页面中的多行的最后一行。
7.根据条款1所述的方法,其中访问第一存储器页面中的元数据位置处的相关联的元数据包括访问第一存储器页面中的多行的最后一行,该最后一行包括与第一存储器页面中所有其他行中的数据相关联的元数据。
8.根据条款1所述的方法,其中存储器具有两个或更多个存储体组,每个存储体组包括两个或多于两个存储体,并且第一存储器页面中的元数据位置是每个存储体组中的最后一个存储体的最后一行。
9.一种用于元数据重定位的系统,包括:
动态随机存取存储器(DRAM);以及
处理器,被配置为:
接收第一请求,该第一请求用以访问第一存储器页面中的第一数据位置处的第一数据和第二存储器页面中的相关联的元数据;
确定第一存储器页面中的第一数据位置是否被配置为存储元数据;
如果第一存储器页面中的第一数据位置未被配置为存储元数据,则访问第一存储器页面中的第一数据位置处的第一数据;
如果第一存储器页面中的第一数据位置未被配置为存储元数据,则确定第一存储器页面中的元数据位置;
如果第一存储器页面中的第一数据位置未被配置为存储元数据,则访问第一存储器页面中的元数据位置处的相关联的元数据;
如果第一存储器页面中的第一数据位置被配置为存储元数据,则确定第二存储器页面中的第二数据位置;
如果第一存储器页面中的第一数据位置被配置为存储元数据,则访问第二存储器页面中的第二数据位置处的第一数据;以及
如果第一存储器页面中的第一数据位置被配置为存储元数据,则访问第一存储器页面中的第一数据位置处的相关联的元数据。
10.根据条款9所述的系统,其中处理器被配置为:如果第一存储器页面中的第一数据位置未被配置为存储元数据,则与访问第一存储器页面中的第一数据位置处的第一数据同时地,访问第一存储器页面中的元数据位置处的相关联的元数据。
11.根据条款10所述的系统,其中:
处理器被配置为:通过访问DRAM行来访问第一存储器页面中的元数据位置处的相关联的元数据;并且
处理器被配置为:通过访问DRAM行来访问第一存储器页面中的第一数据位置处的第一数据。
12.根据条款9所述的系统,其中所述处理器还被配置为:接收第二请求,该第二请求用以访问第三存储器页面中的第二数据位置处的第二数据,该第二数据不具有相关联的元数据;以及访问第三存储器页面中的第二数据位置处的第二数据。
13.根据条款9所述的系统,其中处理器被配置为:通过确定第一数据位置是否是第一存储器页面中的最后一行,来确定第一存储器页面中的第一数据位置是否被配置为存储元数据。
14.根据条款9所述的系统,其中处理器被配置为:通过访问第一存储器页面中的多行的最后一行,来访问第一存储器页面中的第一数据位置处的第一数据。
15.根据条款9所述的系统,其中处理器被配置为:通过访问第一存储器页面中的多行的最后一行来访问第一存储器页面中的元数据位置处的相关联的元数据,该最后一行包括与第一存储器页面中的所有其他行中的数据相关联的元数据。
16.根据条款9所述的系统,其中存储器具有两个或多于两个存储体组,每个存储体组包括两个或多于两个存储体,并且第一存储器页面中的元数据位置是每个存储体组中的最后一个存储体的最后一行。
17.一种用于动态随机存取存储器(DRAM)中的元数据重定位的系统,包括:
用于接收第一请求的部件,该第一请求用以访问DRAM的第一存储器页面中的第一数据位置处的第一数据和DRAM的第二存储器页面中的相关联的元数据;
用于确定第一存储器页面中的第一数据位置是否被配置为存储元数据的部件;
用于如果第一存储器页面中的第一数据位置未被配置为存储元数据,则访问第一存储器页面中的第一数据位置处的第一数据的部件;
用于如果第一存储器页面中的第一数据位置未被配置为存储元数据,则确定第一存储器页面中的元数据位置的部件;
用于如果第一存储器页面中的第一数据位置未被配置为存储元数据,则访问第一存储器页面中的元数据位置处的相关联的元数据的部件;
用于如果第一存储器页面中的第一数据位置被配置为存储元数据,则确定第二存储器页面中的第二数据位置的部件;
用于如果第一存储器页面中的第一数据位置被配置为存储元数据,则访问第二存储器页面中的第二数据位置处的第一数据的部件;以及
用于如果第一存储器页面中的第一数据位置被配置为存储元数据,则访问第一存储器页面中的第一数据位置处的相关联的元数据的部件。
18.根据条款17所述的系统,其中用于访问第一存储器页面中的元数据位置处的相关联的元数据的部件包括:用于如果第一存储器页面中的第一数据位置未被配置为存储元数据,则与访问第一存储器页面中的第一数据位置处的第一数据的同时地,访问相关联的元数据的部件。
19.根据条款18所述的系统,其中:
用于访问第一存储器页面中的元数据位置处的相关联的元数据的部件包括:用于访问DRAM行的部件;以及
用于访问第一存储器页面中的第一数据位置处的第一数据的部件包括:用于访问DRAM行的部件。
20.根据条款17所述的系统,还包括:
用于接收第二请求的部件,该第二请求用以访问第三存储器页面中的第二数据位置处的第二数据,该第二数据不具有相关联的元数据;以及
用于访问第三存储器页面中的第二数据位置处的第二数据的部件。
21.根据条款17所述的系统,其中用于确定第一存储器页面中的第一数据位置是否被配置为存储元数据的部件包括:用于确定第一数据位置是否是第一存储器页面中的最后一行的部件。
22.根据条款17所述的系统,其中用于访问第一存储器页面中的第一数据位置处的第一数据的部件包括:用于访问第一存储器页面中的多行的最后一行的部件。
23.根据条款17所述的系统,其中用于访问第一存储器页面中的元数据位置处的相关联的元数据的部件包括:用于访问第一存储器页面中的多行的最后一行的部件,该最后一行包括与第一存储器页面中的所有其他行中的数据相关联的元数据。
24.根据条款17所述的系统,其中存储器具有两个或多于两个存储体组,每个存储体组包括两个或多于两个存储体,并且第一存储器页面中的元数据位置是每个存储体组中最后一个存储体的最后一行。
25.一种用于动态随机存取存储器(DRAM)中的元数据重定位的计算机可读介质,包括非暂时性计算机可读介质,该非暂时性计算机可读介质具有以计算机可执行形式存储在其上的指令,该指令在由处理器执行时,将处理器配置为:
接收第一请求,该第一请求用以访问第一存储器页面中的第一数据位置处的第一数据和第二存储器页面中的相关联的元数据;
确定第一存储器页面中的第一数据位置是否被配置为存储元数据;
如果第一存储器页面中的第一数据位置未被配置为存储元数据,则访问第一存储器页面中的第一数据位置处的第一数据;
如果第一存储器页面中的第一数据位置未被配置为存储元数据,则确定第一存储器页面中的元数据位置;
如果第一存储器页面中的第一数据位置未被配置为存储元数据,则访问第一存储器页面中的元数据位置处的相关联的元数据;
如果第一存储器页面中的第一数据位置被配置为存储元数据,则确定第二存储器页面中的第二数据位置;
如果第一存储器页面中的第一数据位置被配置为存储元数据,则访问第二存储器页面中的第二数据位置处的第一数据;以及
如果第一存储器页面中的第一数据位置被配置为存储元数据,则访问第一存储器页面中的第一数据位置处的相关联的元数据。
26.根据条款25所述的计算机可读介质,其中如果第一存储器页面中的第一数据位置未被配置为存储元数据,则指令将处理器配置为在访问第一存储器页面中的第一数据位置处的第一数据的同时,访问第一存储器页面中的元数据位置处的相关联的元数据。
27.根据条款26所述的计算机可读介质,其中指令将处理器配置为:
通过访问DRAM行,来访问第一存储器页面中的元数据位置处的相关联的元数据;以及
通过访问DRAM行,来访问第一存储器页面中的第一数据位置处的第一数据。
28.根据条款25所述的计算机可读介质,其中指令还将处理器配置为:
接收第二请求,该第二请求用以访问第三存储器页面中的第二数据位置处的第二数据,该第二数据不具有相关联的元数据;以及
访问第三存储器页面中的第二数据位置处的第二数据。
29.根据条款25所述的计算机可读介质,其中指令将处理器配置为:通过确定第一数据位置是否是第一存储器页面中的最后一行来确定第一存储器页面中的第一数据位置是否被配置为存储元数据。
30.根据条款25所述的计算机可读介质,其中指令将处理器配置为:通过访问第一存储器页面中的多行的最后一行来访问第一存储器页面中的第一数据位置处的第一数据。
Claims (30)
1.一种用于动态随机存取存储器(DRAM)中的元数据重定位的方法,包括:
接收第一请求,所述第一请求用以访问所述DRAM的第一存储器页面中的第一数据位置处的第一数据和所述DRAM的第二存储器页面中的相关联的元数据;
确定所述第一存储器页面中的所述第一数据位置是否被配置为存储元数据;
如果所述第一存储器页面中的所述第一数据位置未被配置为存储元数据,则访问所述第一存储器页面中的所述第一数据位置处的所述第一数据;
如果所述第一存储器页面中的所述第一数据位置未被配置为存储元数据,则确定所述第一存储器页面中的元数据位置;
如果所述第一存储器页面中的所述第一数据位置未被配置为存储元数据,则访问所述第一存储器页面中的所述元数据位置处的所述相关联的元数据;
如果所述第一存储器页面中的所述第一数据位置被配置为存储元数据,则确定所述第二存储器页面中的第二数据位置;
如果所述第一存储器页面中的所述第一数据位置被配置为存储元数据,则访问所述第二存储器页面中的所述第二数据位置处的所述第一数据;以及
如果所述第一存储器页面中的所述第一数据位置被配置为存储元数据,则访问所述第一存储器页面中的所述第一数据位置处的所述相关联的元数据。
2.根据权利要求1所述的方法,其中如果所述第一存储器页面中的所述第一数据位置未被配置为存储元数据,则访问所述第一存储器页面中的所述元数据位置处的所述相关联的元数据与访问所述第一存储器页面中的所述第一数据位置处的所述第一数据同时发生。
3.根据权利要求2所述的方法,其中:
访问所述第一存储器页面中的所述元数据位置处的所述相关联的元数据包括访问DRAM行;并且
访问所述第一存储器页面中的所述第一数据位置处的所述第一数据包括访问所述DRAM行。
4.根据权利要求1所述的方法,还包括:
接收第二请求,所述第二请求用以访问第三存储器页面中的第二数据位置处的第二数据,所述第二数据不具有相关联的元数据;以及
访问所述第三存储器页面中的所述第二数据位置处的所述第二数据。
5.根据权利要求1所述的方法,其中确定所述第一存储器页面中的所述第一数据位置是否被配置为存储元数据包括:确定所述第一数据位置是否是所述第一存储器页面中的最后一行。
6.根据权利要求1所述的方法,其中访问所述第一存储器页面中的所述第一数据位置处的所述第一数据包括:访问所述第一存储器页面中的多行的最后一行。
7.根据权利要求1所述的方法,其中访问所述第一存储器页面中的所述元数据位置处的所述相关联的元数据包括:访问所述第一存储器页面中的多行中的最后一行,所述最后一行包括与所述第一存储器页面中的所有其他行中的数据相关联的元数据。
8.根据权利要求1所述的方法,其中所述存储器具有两个或多于两个存储体组,每个存储体组包括两个或多于两个存储体,并且所述第一存储器页面中的所述元数据位置是每个存储体组中的最后一个存储体的最后一行。
9.一种用于元数据重定位的系统,包括:
动态随机存取存储器(DRAM);以及
处理器,被配置为:
接收第一请求,所述第一请求用以访问第一存储器页面中的第一数据位置处的第一数据和第二存储器页面中的相关联的元数据;
确定所述第一存储器页面中的所述第一数据位置是否被配置为存储元数据;
如果所述第一存储器页面中的所述第一数据位置未被配置为存储元数据,则访问所述第一存储器页面中的所述第一数据位置处的所述第一数据;
如果所述第一存储器页面中的所述第一数据位置未被配置为存储元数据,则确定所述第一存储器页面中的元数据位置;
如果所述第一存储器页面中的所述第一数据位置未被配置为存储元数据,则访问所述第一存储器页面中的所述元数据位置处的所述相关联的元数据;
如果所述第一存储器页面中的所述第一数据位置被配置为存储元数据,则确定所述第二存储器页面中的第二数据位置;
如果所述第一存储器页面中的所述第一数据位置被配置为存储元数据,则访问所述第二存储器页面中的所述第二数据位置处的所述第一数据;以及
如果所述第一存储器页面中的所述第一数据位置被配置为存储元数据,则访问所述第一存储器页面中的所述第一数据位置处的所述相关联的元数据。
10.根据权利要求9所述的系统,其中所述处理器被配置为:
如果所述第一存储器页面中的所述第一数据位置未被配置为存储元数据,则与访问所述第一存储器页面中的所述第一数据位置处的所述第一数据同时地,访问所述第一存储器页面中的所述元数据位置处的所述相关联的元数据。
11.根据权利要求10所述的系统,其中:
所述处理器被配置为:通过访问DRAM行来访问所述第一存储器页面中的所述元数据位置处的所述相关联的元数据;并且
所述处理器被配置为:通过访问所述DRAM行,来访问所述第一存储器页面中的所述第一数据位置处的所述第一数据。
12.根据权利要求9所述的系统,其中所述处理器还被配置为:
接收第二请求,所述第二请求用以访问第三存储器页面中的第二数据位置处的第二数据,所述第二数据不具有相关联的元数据;以及
访问所述第三存储器页面中的所述第二数据位置处的所述第二数据。
13.根据权利要求9所述的系统,其中所述处理器被配置为:通过确定所述第一数据位置是否是所述第一存储器页面中的最后一行,来确定所述第一存储器页面中的所述第一数据位置是否被配置为存储元数据。
14.根据权利要求9所述的系统,其中所述处理器被配置为:通过访问所述第一存储器页面中的多行的最后一行,来访问所述第一存储器页面中的所述第一数据位置处的所述第一数据。
15.根据权利要求9所述的系统,其中所述处理器被配置为:通过访问所述第一存储器页面中的多行的最后一行,来访问所述第一存储器页面中的所述元数据位置处的所述相关联的元数据,所述最后一行包括与所述第一存储器页面中的所有其他行中的数据相关联的元数据。
16.根据权利要求9所述的系统,其中所述存储器具有两个或多于两个存储体组,每个存储体组包括两个或多于两个存储体,并且所述第一存储器页面中的所述元数据位置是每个存储体组中的最后一个存储体的最后一行。
17.一种用于动态随机存取存储器(DRAM)中的元数据重定位的系统,包括:
用于接收第一请求的部件,所述第一请求用以访问所述DRAM的第一存储器页面中的第一数据位置处的第一数据和所述DRAM的第二存储器页面中的相关联的元数据;
用于确定所述第一存储器页面中的所述第一数据位置是否被配置为存储元数据的部件;
用于如果所述第一存储器页面中的所述第一数据位置未被配置为存储元数据,则访问所述第一存储器页面中的所述第一数据位置处的所述第一数据的部件;
用于如果所述第一存储器页面中的所述第一数据位置未被配置为存储元数据,则确定所述第一存储器页面中的元数据位置的部件;
用于如果所述第一存储器页面中的所述第一数据位置未被配置为存储元数据,则访问所述第一存储器页面中的所述元数据位置处的所述相关联的元数据的部件;
用于如果所述第一存储器页面中的所述第一数据位置被配置为存储元数据,则确定所述第二存储器页面中的第二数据位置的部件;
用于如果所述第一存储器页面中的所述第一数据位置被配置为存储元数据,则访问所述第二存储器页面中的所述第二数据位置处的所述第一数据的部件;以及
用于如果所述第一存储器页面中的所述第一数据位置被配置为存储元数据,则访问所述第一存储器页面中的所述第一数据位置处的所述相关联的元数据的部件。
18.根据权利要求17所述的系统,其中用于访问所述第一存储器页面中的所述元数据位置处的所述相关联的元数据的所述部件包括:用于如果所述第一存储器页面中的所述第一数据位置未被配置为存储元数据,则与访问所述第一存储器页面中的所述第一数据位置处的所述第一数据同时地,访问所述相关联的元数据的部件。
19.根据权利要求18所述的系统,其中:
用于访问所述第一存储器页面中的所述元数据位置处的所述相关联的元数据的所述部件包括:用于访问DRAM行的部件;并且
用于访问所述第一存储器页面中的所述第一数据位置处的所述第一数据的所述部件包括:用于访问所述DRAM行的部件。
20.根据权利要求17所述的系统,还包括:
用于接收第二请求的部件,所述第二请求用以访问第三存储器页面中的第二数据位置处的第二数据,所述第二数据不具有相关联的元数据;以及
用于访问所述第三存储器页面中的所述第二数据位置处的所述第二数据的部件。
21.根据权利要求17所述的系统,其中用于确定所述第一存储器页面中的所述第一数据位置是否被配置为存储元数据的所述部件包括:用于确定所述第一数据位置是否是所述第一存储器页面中的最后一行的部件。
22.根据权利要求17所述的系统,其中用于访问所述第一存储器页面中的所述第一数据位置处的所述第一数据的所述部件包括:用于访问所述第一存储器页面中的多行的最后一行的部件。
23.根据权利要求17所述的系统,其中用于访问所述第一存储器页面中的所述元数据位置处的所述相关联的元数据的所述部件包括:用于访问所述第一存储器页面中的多行的最后一行的部件,所述最后一行包括与所述第一存储器页面中的所有其他行中的数据相关联的元数据。
24.根据权利要求17所述的系统,其中所述存储器具有两个或多于两个存储体组,每个存储体组包括两个或多于两个存储体,并且所述第一存储器页面中的所述元数据位置是每个存储体组中的最后一个存储体的最后一行。
25.一种用于动态随机存取存储器(DRAM)中的元数据重定位的计算机可读介质,包括非暂时性计算机可读介质,所述非暂时性计算机可读介质具有以计算机可执行形式存储在其上的指令,所述指令在由处理器执行时,将所述处理器配置为:
接收第一请求,所述第一请求用以访问第一存储器页面中的第一数据位置处的第一数据和第二存储器页面中的相关联的元数据;
确定所述第一存储器页面中的所述第一数据位置是否被配置为存储元数据;
如果所述第一存储器页面中的所述第一数据位置未被配置为存储元数据,则访问所述第一存储器页面中的所述第一数据位置处的所述第一数据;
如果所述第一存储器页面中的所述第一数据位置未被配置为存储元数据,则确定所述第一存储器页面中的元数据位置;
如果所述第一存储器页面中的所述第一数据位置未被配置为存储元数据,则访问所述第一存储器页面中的所述元数据位置处的所述相关联的元数据;
如果所述第一存储器页面中的所述第一数据位置被配置为存储元数据,则确定所述第二存储器页面中的第二数据位置;
如果所述第一存储器页面中的所述第一数据位置被配置为存储元数据,则访问所述第二存储器页面中的所述第二数据位置处的所述第一数据;以及
如果所述第一存储器页面中的所述第一数据位置被配置为存储元数据,则访问所述第一存储器页面中的所述第一数据位置处的所述相关联的元数据。
26.根据权利要求25所述的计算机可读介质,其中所述指令将所述处理器配置为:如果所述第一存储器页面中的所述第一数据位置未被配置为存储元数据,则与访问所述第一存储器页面中的所述第一数据位置处的所述第一数据同时地,访问所述第一存储器页面中的所述元数据位置处的所述相关联的元数据。
27.根据权利要求26所述的计算机可读介质,其中所述指令将所述处理器配置为:
通过访问DRAM行,来访问所述第一存储器页面中的所述元数据位置处的所述相关联的元数据;以及
通过访问所述DRAM行,来访问所述第一存储器页面中的所述第一数据位置处的所述第一数据。
28.根据权利要求25所述的计算机可读介质,其中所述指令还将所述处理器配置为:
接收第二请求,所述第二请求用以存取第三存储器页面中的第二数据位置处的第二数据,所述第二数据不具有相关联的元数据;以及
访问所述第三存储器页面中的所述第二数据位置处的所述第二数据。
29.根据权利要求25所述的计算机可读介质,其中所述指令将所述处理器配置为:通过确定所述第一数据位置是否是所述第一存储器页面中的最后一行,来确定所述第一存储器页面中的所述第一数据位置是否被配置为存储元数据。
30.根据权利要求25所述的计算机可读介质,其中所述指令将所述处理器配置为:通过访问所述第一存储器页面中的多行的最后一行,来访问所述第一存储器页面中的所述第一数据位置处的所述第一数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/154,345 | 2021-01-21 | ||
US17/154,345 US11288188B1 (en) | 2021-01-21 | 2021-01-21 | Dynamic metadata relocation in memory |
PCT/US2021/062064 WO2022159184A1 (en) | 2021-01-21 | 2021-12-06 | Dynamic metadata relocation in memory |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116710900A true CN116710900A (zh) | 2023-09-05 |
Family
ID=79021686
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180088795.4A Pending CN116710900A (zh) | 2021-01-21 | 2021-12-06 | 存储器中的动态元数据重定位 |
Country Status (7)
Country | Link |
---|---|
US (1) | US11288188B1 (zh) |
EP (1) | EP4281874A1 (zh) |
KR (1) | KR102580484B1 (zh) |
CN (1) | CN116710900A (zh) |
BR (1) | BR112023013833A2 (zh) |
TW (1) | TW202232310A (zh) |
WO (1) | WO2022159184A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112199039B (zh) * | 2020-09-04 | 2022-08-05 | 星宸科技股份有限公司 | 虚拟存储管理方法及处理器 |
US11972126B2 (en) * | 2021-03-26 | 2024-04-30 | Intel Corporation | Data relocation for inline metadata |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150006993A1 (en) * | 2013-06-28 | 2015-01-01 | Pete D. Vogt | Embedded ecc address mapping |
US20150318870A1 (en) * | 2014-04-30 | 2015-11-05 | Microsoft Corporation | Variable width error correction |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012051039A1 (en) | 2010-10-12 | 2012-04-19 | Rambus Inc. | Facilitating error detection and recovery in a memory system |
US20120297256A1 (en) * | 2011-05-20 | 2012-11-22 | Qualcomm Incorporated | Large Ram Cache |
US20130124778A1 (en) | 2011-11-10 | 2013-05-16 | Greenliant Llc | Method of storing host data and meta data in a nand memory, a memory controller and a memory system |
US20180211046A1 (en) * | 2017-01-26 | 2018-07-26 | Intel Corporation | Analysis and control of code flow and data flow |
CN108733316B (zh) * | 2017-04-17 | 2021-08-31 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法和管理器 |
CN110058953B (zh) | 2018-01-18 | 2023-02-28 | 伊姆西Ip控股有限责任公司 | 用于改变存储系统的类型的方法、设备和存储介质 |
FR3077655A1 (fr) | 2018-02-05 | 2019-08-09 | Proton World International N.V. | Gestion d'une memoire non volatile |
US10853168B2 (en) * | 2018-03-28 | 2020-12-01 | Samsung Electronics Co., Ltd. | Apparatus to insert error-correcting coding (ECC) information as data within dynamic random access memory (DRAM) |
US10747677B2 (en) * | 2018-07-27 | 2020-08-18 | EMC IP Holding Company LLC | Snapshot locking mechanism |
CN109976947B (zh) * | 2019-03-11 | 2020-11-27 | 北京大学 | 一种面向混合内存的掉电恢复的方法和系统 |
US11645241B2 (en) * | 2019-09-13 | 2023-05-09 | Oracle International Corporation | Persistent memory file store for directly mapped persistent memory database |
JP2021114164A (ja) * | 2020-01-20 | 2021-08-05 | 富士通株式会社 | ストレージ装置及びストレージ制御方法 |
US11494301B2 (en) * | 2020-05-12 | 2022-11-08 | EMC IP Holding Company LLC | Storage system journal ownership mechanism |
US11726921B2 (en) * | 2020-05-21 | 2023-08-15 | Seagate Technology Llc | Combined page footer for parallel metadata storage |
CN112214805B (zh) * | 2020-10-15 | 2024-02-02 | 华中科技大学 | 基于混合dram-nvm内存的安全oram内存及其访问方法 |
-
2021
- 2021-01-21 US US17/154,345 patent/US11288188B1/en active Active
- 2021-12-06 BR BR112023013833A patent/BR112023013833A2/pt unknown
- 2021-12-06 EP EP21830887.2A patent/EP4281874A1/en active Pending
- 2021-12-06 CN CN202180088795.4A patent/CN116710900A/zh active Pending
- 2021-12-06 WO PCT/US2021/062064 patent/WO2022159184A1/en active Application Filing
- 2021-12-06 KR KR1020237024206A patent/KR102580484B1/ko active IP Right Grant
- 2021-12-13 TW TW110146492A patent/TW202232310A/zh unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150006993A1 (en) * | 2013-06-28 | 2015-01-01 | Pete D. Vogt | Embedded ecc address mapping |
US20150318870A1 (en) * | 2014-04-30 | 2015-11-05 | Microsoft Corporation | Variable width error correction |
Also Published As
Publication number | Publication date |
---|---|
EP4281874A1 (en) | 2023-11-29 |
WO2022159184A1 (en) | 2022-07-28 |
US11288188B1 (en) | 2022-03-29 |
KR102580484B1 (ko) | 2023-09-19 |
KR20230110838A (ko) | 2023-07-25 |
BR112023013833A2 (pt) | 2023-10-24 |
TW202232310A (zh) | 2022-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8145876B2 (en) | Address translation with multiple translation look aside buffers | |
US3761881A (en) | Translation storage scheme for virtual memory system | |
US9405703B2 (en) | Translation lookaside buffer | |
KR102580484B1 (ko) | 메모리에서의 동적 메타데이터 재배치 | |
US20120297139A1 (en) | Memory management unit, apparatuses including the same, and method of operating the same | |
US7245539B2 (en) | Memory card, semiconductor device, and method of controlling semiconductor memory | |
US11030088B2 (en) | Pseudo main memory system | |
JP6945544B2 (ja) | プロセッサベースシステムにおけるメモリ内の圧縮メモリラインの優先度ベースのアクセス | |
JP2017501504A5 (zh) | ||
CN112199040B (zh) | 存储访问方法及智能处理装置 | |
KR101821633B1 (ko) | 메모리 시스템 | |
US20060059320A1 (en) | Memory control device | |
US7343469B1 (en) | Remapping I/O device addresses into high memory using GART | |
CN115481054A (zh) | 数据处理方法、装置及系统、系统级soc芯片及计算机设备 | |
WO2020135209A1 (zh) | 减少存储体冲突的方法 | |
US10102125B2 (en) | PCI device, interface system including the same, and computing system including the same | |
CN114616556B (zh) | 存储体组交错 | |
JP6228523B2 (ja) | メモリ制御回路および半導体記憶装置 | |
KR20210037216A (ko) | 이종 메모리를 이용하여 메모리 주소 변환 테이블을 관리하는 메모리 관리 유닛 및 이의 메모리 주소 관리 방법 | |
CN114925002A (zh) | 电子装置、电子设备和地址转换方法 | |
CN113490923A (zh) | 加速对数据存储系统中的存储器组的访问 | |
US11086806B2 (en) | Memory access system to access abstracted memory | |
CN117851290B (zh) | 页表管理方法、系统、电子组件及电子设备 | |
JPH01229345A (ja) | データ処理装置 | |
US8762683B2 (en) | Device and method for memory addressing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |