CN110322922B - 带内动态随机存取存储器纠错编码的设备和系统 - Google Patents
带内动态随机存取存储器纠错编码的设备和系统 Download PDFInfo
- Publication number
- CN110322922B CN110322922B CN201910193883.5A CN201910193883A CN110322922B CN 110322922 B CN110322922 B CN 110322922B CN 201910193883 A CN201910193883 A CN 201910193883A CN 110322922 B CN110322922 B CN 110322922B
- Authority
- CN
- China
- Prior art keywords
- metadata
- memory
- data
- memory address
- address
- 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.)
- Active
Links
- 238000012937 correction Methods 0.000 title claims abstract description 15
- 230000015654 memory Effects 0.000 claims abstract description 291
- 238000004364 calculation method Methods 0.000 claims description 27
- 238000013519 translation Methods 0.000 claims description 11
- 238000001514 detection method Methods 0.000 claims description 4
- 238000013507 mapping Methods 0.000 claims 1
- 238000007726 management method Methods 0.000 description 31
- 238000005516 engineering process Methods 0.000 description 20
- 238000000034 method Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 14
- 238000003780 insertion Methods 0.000 description 7
- 230000037431 insertion Effects 0.000 description 7
- 239000004065 semiconductor Substances 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 4
- 238000002513 implantation Methods 0.000 description 3
- 230000008859 change Effects 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
- 230000009977 dual effect Effects 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 230000000873 masking effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 239000003826 tablet Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000000919 ceramic Substances 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000007943 implant Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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
-
- 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/0607—Interleaved addressing
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- 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/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
-
- 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/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- 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/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种带内动态随机存取存储器纠错编码设备和系统。根据一个总体方面,一种设备可包括:存储器,被配置为存储数据和元数据二者,使得对于与元数据相关联的存储器部分,数据和元数据交错使得每个元数据单元位于2的幂的连续的数据单元之后。所述设备也可包括存储器管理电路。存储器管理电路可被配置为:接收对存储器的数据访问,其中,所述数据访问包括公共存储器地址。存储器管理电路可被配置为:确定公共存储器地址是否与元数据相关联。存储器管理电路可被配置为:如果公共存储器地址与元数据相关联,则将公共存储器地址转换为私有存储器地址。存储器管理电路可被配置为:在私有存储器地址完成所述数据访问。
Description
本申请要求于2018年3月28日提交的申请号为62/649,524标题为“带内DRAM ECC”的美国临时专利申请的优先权。该早先提交的申请的主题通过引用合并于此。
技术领域
本说明书涉及计算机存储器管理,更具体地涉及带内动态随机存取存储器(DRAM)纠错编码(ECC)。
背景技术
现代半导体存储器装置通常使用检错和纠错比特来为处理器或其它组件提供可靠的存储手段。通常,纠错码存储器(ECC存储器)是一种计算机数据贮存器,其中,所述计算机数据贮存器可检测和/或纠正最常见的多种类型的内部数据损坏。ECC存储器用于在任何情形下都无法容忍数据损坏的大多数计算机(诸如用于科学或金融计算)。
理想情况下,ECC存储器创建一种存储器系统,其中,即使实际被存储的单比特(或在某些情况下更多比特)已被翻转或改变为错误状态(例如,从“1”到“0”等),从每个字或存储器位置读取的数据也总是与写入所述每个字或存储器位置中的数据相同。传统上,提供存储器保护的方法是使用汉明(Hamming)码,其中,汉明码是基于每个存储字的数据部分所计算的,通常为32比特或64比特宽。通常,选择汉明码使得它可以纠正存储字中的单比特错误,并且检测最多总共两个错误的存储比特。
具有奇偶校验支持的一些非ECC存储器允许检测错误,但是不进行纠正;否则,错误不被检测。在这样的系统中,一个或更多个额外的数据比特被添加到存储器中。这些额外的比特指示实际数据或主题数据是否包括偶数或奇数个“1”。通常,利用这种系统,可以检测但不能纠正实际数据内的单比特的翻转。
通常,ECC码字或奇偶校验比特与数据字被并行地存储和取出,并且当存储器访问发生时,确认被生成(用于写入)和/或验证(用于读取)。通常,可以立即或基本上立即进行错误的纠正或检测。
发明内容
根据一个总体方面,一种设备可包括:存储器,被配置为存储数据和元数据二者,使得对于与元数据相关联的存储器部分,数据和元数据被交错使得每个元数据单元位于2的幂的连续的数据单元之后。所述设备也可包括存储器管理电路。存储器管理电路可被配置为:接收对存储器的数据访问,其中,所述数据访问包括公共存储器地址。存储器管理电路可被配置为:确定公共存储器地址是否与元数据相关联。存储器管理电路可被配置为:如果公共存储器地址与元数据相关联,则将公共存储器地址转换为私有存储器地址。存储器管理电路可被配置为:在私有存储器地址完成所述数据访问。
根据另一总体方面,一种设备可包括:第一接口,第一接口用于接收基于公共存储器地址的数据访问。所述设备可包括:第二接口,用于与存储器进行通信以实现数据访问,其中,所述设备被配置为促使存储器按照交错模式将数据和元数据一起存储,其中,在所述交错模式下,每个元数据单元位于2的幂的连续的数据单元之后。所述设备可包括:地址转换电路,被配置为按照考虑数据和元数据的交错的方式将公共存储器地址转换为私有存储器地址。
根据另一总体方面,一种系统可包括:存储器,被配置为存储数据和元数据二者,使得对于与元数据相关联的存储器部分,数据和元数据被交错使得每个元数据单元位于2的幂的连续的数据单元之后。所述系统可包括片上系统(SoC)。所述SoC可包括:处理器,请求数据访问;和存储器管理电路。所述存储器管理电路可被配置为:接收对存储器的数据访问,其中,所述数据访问包括公共存储器地址;确定公共存储器地址是否与元数据相关联;如果公共存储器地址与元数据相关联,则将公共存储器地址转换为私有存储器地址,以及在私有存储器地址完成所述数据访问。
在附图和以下描述中阐述了一个或多个实施方式的细节。根据说明书和附图以及权利要求,其他特征将是显而易见的。
基本上如附图中的至少一个附图所示和/或结合附图中的至少一个附图所描述的,如权利要求中更完整地阐述的那样,涉及一种用于计算机存储器管理的系统和/或方法,更具体地,涉及带内动态随机存取存储器(DRAM)纠错编码(ECC)。
附图说明
图1是根据公开的主题的系统的示例实施例的框图。
图2是根据公开的主题的数据结构的示例实施例的框图。
图3是根据公开的主题的技术的示例实施例的示图。
图4是根据公开的主题的系统的示例实施例的框图。
图5A是根据公开的主题的系统的示例实施例的框图。
图5B是根据公开的主题的系统的示例实施例的框图。
图6是可包括根据公开的主题的原理形成的多个装置的信息处理系统的示意性框图。
各附图中的相同的参考符号表示相同的元件。
具体实施方式
在下文中将参照示出了一些示例实施例的附图更全面地描述各种示例实施例。然而,本公开的主题可以以许多不同的形式实施,并且不应该被解释为限于这里阐述的示例实施例。相反,提供这些示例实施例是为了使本公开彻底和完整,并且将本公开的主题的范围全面地传达给本领域技术人员。为了清楚起见,在附图中,可夸大层和区域的尺寸和相对尺寸。
应当理解的是,当元件或层被称为“在另一元件或层上”、“连接到”或“耦接到”另一元件或层时,它可以直接在所述另一元件或层上、连接或耦接到所述另一元件或层,或者可以存在中间元件或层。相反,当元件被称为“直接在另一元件或层上”、“直接连接到”或“直接耦接到”另一元件或层时,不存在中间元件或层。相同的标号始终表示相同的元件。如这里所使用的,术语“和/或”包括一个或更多个相关所列项目的任意和所有组合。
应当理解,尽管这里可使用术语“第一”、“第二”、“第三”等来描述各种元件、组件,区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应受这些术语的限制。这些术语仅用于将一个元件、组件、区域、层或部分与另一区域、层或部分区分开。因此,在不脱离本公开的主题的教导的情况下,下面讨论的第一元件、第一组件、第一区域、第一层或第一部分可以被称为第二元件、第二组件、第二区域、第二层或第二部分。
在这里可以使用诸如“以下”、“下面”、“下方”、“上面”、“上方”等的空间相对术语,以便于说明书描述如图所示的一个元件或特征与另一元件或特征的关系。将理解的是,除了图中所示的朝向之外,空间相对术语还旨在包括使用或操作中的装置的不同的朝向。例如,如果图中的装置被翻转,则被描述为在其它元件或特征“下面”或“下方”的元件将被定向在所述其它元件或特征“之上”。因此,示例性术语“下方”可包括上方和下方的朝向。装置可以被另外地定向(旋转90度或朝向其它方向),并且应当相应地解释这里使用的空间相对描述符。
同样,这里可以使用诸如“高”、“低”、“上拉”、“下拉”、“1”、“0”等的电气术语,以便于说明书描述如图所示的相对于其它电压电平或相对于另一元件或特征的电压电平或电流。将理解的是,除了图中所示的电压或电流之外,电气相对术语旨在包含使用中或操作中的装置的不同参考电压。例如,如果图中的装置或信号被反转或使用其它参考电压、电流或电荷,那么与新的参考电压或电流相比,被描述为“高”或“拉高”的元件将是“低”或“拉低”。因此,示例性术语“高”可包括相对低的电压或电流或者相对高的电压或电流。该装置可以另外基于不同的电参考框架和这里使用的电气相对描述被相应地解释。
这里使用的术语仅用于描述特定示例实施例的目的,并且不旨在限制本公开的主题。如这里所使用的,除非上下文另有明确说明,否则单数形式旨在也包括复数形式。将进一步理解的是,当在本说明书中使用时,术语“包括”和/或“包含”指定所述特征、整数、步骤、操作、元件和/或组件的存在,但不排除存在一个或更多个其它特征、整数、步骤、操作、元素、组件和/或它们的组或添加一个或更多个其它特征、整数、步骤、操作、元素、组件和/或它们的组。
这里参照截面图示描述了示例实施例,其中,截面图示是理想化示例实施例(和中间结构)的示意图示。因此,可以预期由于例如制造技术和/或公差导致的图示形状的变化。因此,示例实施例不应被解释为限于这里示出的区域的特定形状,而是包括例如由制造导致的形状偏差。例如,示出为矩形的注入区域将通常在其边缘处具有圆形或弯曲的特征和/或注入浓度的梯度,而不是从注入区域到非注入区域的二元变化。同样地,通过注入形成的掩埋区域可以导致在掩埋区域和通过其进行注入的表面之间的区域中的一些注入。因此,附图中示出的区域本质上是示意性的,并且它们的形状不旨在示出装置的区域的实际形状,并且不旨在限制本公开的主题的范围。
除非另外地定义,否则这里使用的所有术语(包括技术术语和科学术语)具有与本公开的主题所属领域的普通技术人员通常理解的含义相同的含义。将进一步理解的是,除非在这里明确地定义,否则诸如在常用词典中定义的那些术语应该被解释为具有与其在相关领域的上下文中的含义一致的含义,并且将不被理解为理想化或过于正式的含义。
在下文中,将参照附图详细解释示例实施例。
图1是根据公开的主题的系统100的示例实施例的框图。在各种实施例中,系统100可包括计算装置,诸如,例如处理器、片上系统(SoC)、主板、膝上型计算机、台式机、工作站、个人数字助理、智能手机、平板计算机和其它适当的计算机或者虚拟机器或虚拟机器的虚拟计算装置。
在所示实施例中,系统100可包括处理器102。处理器102可以被配置为执行指令,诸如操作系统(OS)112。在各种实施例中,作为执行那些指令的一部分,处理器102可请求各种数据访问132(例如,读取操作、写入操作)。
在一些实施例中,系统100可包括存储器106,存储器106被配置为临时、永久、半永久或它们的组合地存储一条或多条数据。此外,存储器106可包括易失性存储器、非易失性存储器或它们的组合。在各种实施例中,系统100可包括存储介质,其中,所述存储介质被配置为以半永久或基本永久的形式存储数据。在各种实施例中,存储器106可包括所述存储介质(例如,硬盘驱动器、固态驱动器、闪存)。
在特定实施例中,存储器106可包括主系统存储器,其中,数据以传统上易失的方式临时地存储在主系统存储器中。在这样的实施例中,存储器106可包括动态随机存取存储器(DRAM)。然而,在另一实施例中,存储器106可包括磁阻随机存取存储器(MRAM)模块、相变存储器(PRAM)模块、电阻型存储器模块等。应理解,以上是几个说明性示例,公开的主题不限于此。
在所示实施例中,系统100可包括存储器管理电路104。存储器管理电路104可被配置为对从处理器102到存储器106的数据访问进行路由、管理和控制,反之亦然。在各种实施例中,存储器管理电路104可包括存储器(例如,DRAM)控制器电路。在另一实施例中,存储器管理电路104可以与处理器102或存储器106集成。应当理解,以上是几个说明性示例,公开的主题不限于此。
在所示实施例中,处理器102可发出数据访问108,其中,数据访问108包括多条数据132或与多条数据132相关联,并指示这样的存储器地址:数据132将被存储到所述存储器地址或从所述存储器地址被检索。在此上下文中,处理器102处理的或使用的这些地址被称为公共存储器地址122。
在所示实施例中,系统100可能希望将数据132与额外的多条元数据134一起存储。如上所述,在一个实施例中,元数据134可包括纠错/检错码(ECC)。历史上标准的DRAM和DRAM数据接口由于各种原因特别容易受到比特故障的影响。对成本敏感的系统需要一种使成本最小化(例如,没有额外的引脚或外部装置)并且使整体性能损失最小化的方案。在所示实施例中,这涉及将ECC信息(例如,元数据134)与受保护的数据132一起放置在大容量DRAM贮存器(即,存储器106)中,并且由DRAM控制器在系统运行期间即时进行ECC生成和纠正。
在各种其他实施例中,可使用其他形式的元数据134。例如,元数据134可包括压缩信息、文件属性、安全性或访问控制信息等。应理解的是,以上是几个说明性示例,公开的主题不限于此。
在所示实施例中,存储器106可被配置为存储以下系统,存储器管理电路104可被配置为管理该系统,其中,在该系统中元数据134按照对处理器102基本上不可见的方式存储在存储器106中。在这样的实施例中,存储器106可以以交错的方式存储数据132和元数据134,其中,元数据134被插入在数据132的旁边。然而,由于元数据134已导致数据132的放置被移位或偏移,因此这种插入可意味着用于存储数据132的实际存储器地址可以与处理器102期望的存储器地址不同。下文描述了这种差异的细节。
为了减轻处理器102担心由于交错的元数据134引起的该偏移或移位的负担,存储器管理电路104可被配置为将由处理器102提供的公共存储器地址122转换或转化为实际或私有存储器地址124。此外,在所示实施例中,存储器管理电路104可被配置为生成(或者在读取的情况下,验证)元数据134。
在这样的实施例中,当存储器管理电路104接收具有数据132和公共存储器地址122的数据访问108时,存储器管理电路104可被配置为将处理器的数据访问108重新格式化或转换成适合于由存储器106处理的形式(数据访问110)。作为该转换的一部分,存储器管理电路104可将公共存储器地址122适当地转换或偏移到私有存储器地址124。数据132(和元数据134)可存储在存储器106内的私有存储器地址124处。
图2是根据公开的主题的数据结构200的示例实施例的框图。如上所述,在各种实施例中,数据结构200可存储在存储器内。应理解的是,所示的数据结构是一个说明性示例,公开的主题不限于此。
在所示实施例中,各条数据202可存储在存储器中。存储器可被隔离或划分成各个部分。在所示实施例中,数据结构200被划分成包括数据和元数据二者的第一部分212、以及仅包括数据的第二部分214。
在各种实施例中,可通过存储器管理电路或处理器动态地调整分区的存在和放置。在这样的实施例中,用户、操作系统等可控制哪些数据与元数据相关联(例如,由ECC保护),哪些数据与元数据不相关联。如图所示,元数据204的添加包括存储器的使用,并且因此减少了实际数据202的存储量。此外,在各种实施例中,元数据204的含义可在数据/元数据部分212之间改变。例如,在一个这样的部分中,元数据204可包括ECC数据,而在另一个部分中,元数据204可包括安全数据。
在各种实施例中,当对仅数据部分214发生数据访问时,不会生成、检索或存储元数据204。此外,由于没有元数据204导致数据202被移位或偏移,因此公共存储器地址可与实际或私有存储器地址相同。
在所示实施例中,对于数据/元数据部分212,与各条或各单元数据202相关联的每条元数据204可以在各条数据202之后(或者在各种实施例中在各条数据202之前)立即被存储。在所示实施例中,每条或每单元元数据204(例如,Meta00)与八条数据202(例如,Data00、Data01、Data02、Data03、Data04、Data05、Data06和Data07)相关联。
在所示实施例中,数据202和元数据204可以以2的幂的比率(例如,8:1,16:1)被存储。在所示实施例中,比率为8:1。应理解,以上是一个说明性示例,公开的主题不限于此。
这种2的幂的比率与通常采用7:1比率的传统ECC存储方法不同。数据通常被存储为7个高速缓存行的数据和7个相应ECC字节。由于7个ECC字节通常存储在8字节的高速缓存行中,因此这浪费了一个字节的存储空间。此外,由于非2的幂的比率(乘以和除以7),因此处理器或存储器管理电路执行相当复杂的计算以确定适当的私有存储器地址。
类似地,第三种贮存器形式涉及将所有ECC数据放置在存储器空间的开始/结束处。因为计算了元数据地址并且使用不同的存储器页来存储数据/元数据,因此这还涉及到性能差。此外,将存储器划分或分离成仅数据部分和数据/元数据部分的操作变得困难或浪费大量存储空间。所示实施例避免了这些问题。
在所示实施例中,数据/元数据部分212可能不具有用于将数据202/元数据204完美地适合于数据/元数据部分212的大小。例如,对于8:1的比率,可能需要9个存储空间或高速缓存行以适合完整数据/元数据分组,并且数据/元数据部分212的大小可能不能被9整除。在这样的实施例中,数据结构200可包括处理器不能访问的未使用部分216(例如,除以9后的剩余空间)。在各种实施例中,由于这样的未使用部分216可受限于数据/元数据分组的大小(例如,少于9个高速缓存行),因此这样的未使用部分216可以相对最小或较小。这可以通过选择能够完全被9整除的数据/元数据部分212的大小来简单地避免。在另一实施例中,数据结构200可出于其他原因而包括未使用部分216。
图3是根据公开的主题的技术300的示例实施例的示图。在各种实施例中,技术300可以被诸如图1、图4、图5A、图5B或图6的系统使用或产生。此外,技术300的部分可用于产生诸如图2的数据结构。尽管如此,应理解的是,上文是一些说明性示例,公开的主题不限于这些说明性示例。应理解的是,公开的主题不限于技术300所示的动作的排序或数量。
在所示实施例中,示出了数据/元数据的两个分组(加上第三分组的一些)。应理解的是,上文是一些说明性示例,公开的主题不限于这些说明性示例。
在所示实施例中,数据访问可包括或提供公共存储器地址302。数据/元数据存储器部分中的第一地址可以被存储以供进一步使用,并且可以被称为基础存储器地址350。在所示实施例中,基础存储器地址350具有值0x2400000。
在所示实施例中,可以看出,所有数据都与相应的公共存储器地址302相关联。而元数据不与公共存储器地址302相关联。这是因为数据/元数据的存储格式和数据结构被隐藏或通常不是请求装置(例如,处理器)的关注点。虽然处理器可知道存储器部分包括元数据,但是处理器不负责调整处理器的(公共)存储器地址以将其考虑在内。在所示实施例中,列304示出了存储在地址处的数据的类型(例如,数据或元数据)。
在所示实施例中,存储器管理电路可被配置为计算存储器部分或块内的高速缓存行号306。在各种实施例中,这可通过执行数据访问的公共存储器地址302和基础存储器地址350的逐位异或(XOR),然后将该结果除以64(对于8:1比率的实施例)来完成。在各种实施例中,可通过将结果右移6位来执行除以64的操作。同样,与传统的7:1比率系统相比,这种通过简单移位来执行计算的能力是2的幂的比率系统的优势。在这样的实施例中,高速缓存行号306可指示在当前数据条之前有多少条(或高速缓存行)数据已(或能够)存储在该存储器部分(即,数据/元数据部分)中。
在所示实施例中,存储器管理电路可被配置为计算高速缓存行区块(chunk)字节地址310。在各种实施例中,这可通过将高速缓存行号306除以8(对于8:1比率的实施例)并将商设置为高速缓存行区块字节地址310来完成。在各种实施例中,可通过将高速缓存行号306右移3位来执行除以8的操作。在这样的实施例中,高速缓存行区块号308可指示在当前数据条之前有多少数据/元数据分组(例如,8条数据和1条元数据)已(或能够)存储在该存储器部分(即,数据/元数据部分)中。在各种实施例中,例如保证顺序存储器访问的实施例中,对于给定分组中的所有数据/元数据条,高速缓存行区块号308可以是相同的。在这样的实施例中,可以仅对分组中的第一条数据(例如,在该示例中为公共存储器地址0x2400000或0x2400200)执行计算。然而,在不存在这种保证的大多数实施例中,可以针对每个存储器访问执行计算。
在所示实施例中,存储器管理电路可被配置为计算高速缓存行区块字节地址310。在各种实施例中,这可以通过将高速缓存行区块号308乘以512来完成,其中,512是区块的大小或8个高速缓存行乘以每个高速缓存行64个字节。在各种实施例中,乘以512的操作可通过将高速缓存行区块号308左移9位来执行。在这样的实施例中,高速缓存行区块字节地址310可指示基础存储器地址350(例如,公共存储器地址0x2400000)与当前数据/元数据分组的起始处(例如,针对第二个分组的公共存储器地址0x2400200)之间的存储器地址的数量。同样,在保证顺序地址的实施例中,可以仅对分组中的第一条数据执行一些计算。
在所示实施例中,存储器管理电路可被配置为计算元数据块插入偏移312。在各种实施例中,这可通过将高速缓存行区块号308乘以64来完成。在各种实施例中,乘以64的操作可通过将高速缓存行区块号308左移6位来执行。在这样的实施例中,元数据块插入偏移312可指示数据访问的基础存储器地址350和公共存储器地址302之间的由多条元数据占据或使用的存储器地址的数量。同样,在保证顺序地址的实施例中,可以仅对分组中的第一条数据执行一些计算。
在所示实施例中,存储器管理电路可被配置为针对每条数据或元数据计算实际或私有存储器地址314。虽然公共存储器地址302和私有存储器地址314可对数据流的初始部分或数据/元数据部分的开始处(例如,地址0x2400000-0x24001C0)一致或同步,但可以看出随着新的多条元数据被插入或交错到数据中,它们开始出现分歧。例如,在到达最后一条数据(在该示例中,数据320)时,由于在存储器中(在私有存储器地址0x2400200处和0x2400440处)插入了两条元数据,因此公共存储器地址302是0x2400400,而私有存储器地址314是0x2400480。
在各种实施例中,存储器管理电路可被配置为通过将元数据块插入偏移312与公共存储器地址302相加来计算用于多条数据的私有存储器地址314。例如,可通过将0x40与0x24003C0相加得到0x2400400来计算用于数据320的私有存储器地址314。
在这样的实施例中,存储器管理电路可被配置为通过将元数据块插入偏移312加上高速缓存行区块字节地址310和高速缓存行分组大小(例如,在这个示例中为0x200,因为8个高速缓存行乘以每个高速缓存行64个字节等于512个字节)与基础存储器地址350相加来计算用于元数据条的私有存储器地址314。例如,可以通过将0x040加上0x200加上第二个0x200与0x2400000相加得到0x2400440来计算元数据318的私有存储器地址314。
在各种实施例中,由于元数据的插入,一定数量的公共存储器地址302可能是不可用的。在所示的实施例中,这由禁止部分322表示。由于元数据,这些公共存储器地址302不是浪费的存储器(如图2的未使用部分216),而是私有存储器地址空间中已经使用的幻像(phantom)或跳过的存储器地址值。例如,将注意到的是,在所示实施例中,私有存储器地址314停止在0x2400440,但是最后公开使用的地址302是0x24003C0。因此,公共存储器地址空间中的偏移用于将公共存储器地址302与私有存储器地址314对齐。在这种情况下,对于两个元数据部分,偏移是禁止部分322或公共存储器地址0x2400400和0x2400440。如果数据/元数据部分已经较大,则禁止部分322中的偏移幻像的数量或跳过的公共存储器地址值将更大。在这样的实施例中,禁止部分322可以出现在数据/元数据部分的末尾,以在仅数据部分的开始处(图3中未示出,但是示为图2的部分214)重新对齐公共/私有存储器空间,并且操作系统(或处理器)可以被告知不使用禁止部分322的公共存储器地址值。
应理解的是,以上是一个说明性示例,公开的主题不限于此。
图4是根据公开的主题的系统400的示例实施例的框图。如上所述,在各种实施例中,系统400可包括存储器管理控制器或电路。在特定实施例中,系统400可包括DRAM控制器或者被包括在DRAM控制器中。应理解的是,以上是一个说明性示例,公开的主题不限于此。
在所示实施例中,系统400可包括处理器侧接口402。如上所述,处理器侧接口402可被配置为发送或接收数据访问(例如,读取、写入),其中,数据访问包括公共存储器地址432、(至少部分地)基于公共存储器地址432或者与公共存储器地址432相关联。
在所示实施例中,系统400可包括存储器侧接口404。如上所述,存储器侧接口404可被配置为发送或接收数据访问(例如,读取、写入),其中,数据访问包括实际或私有存储器地址434、(至少部分地)基于实际或私有存储器地址434或者与实际或私有存储器地址434相关联。如上所述,系统400可被配置为使存储器以交错模式将数据和元数据一起存储,其中,在所述交错模式下,数据与元数据的比率是2的幂(例如,2n:1,其中n是正整数)。
在所示实施例中,系统400可包括地址转换电路406。在各种实施例中,地址转换电路406可被配置为按照考虑数据和元数据的交错的方式将公共存储器地址432转换为私有存储器地址434。如上文与图3相关所述或如下文与图5A和图5B相关所述的,在这样的实施例中,地址转换电路406可包括:用于计算高速缓存行号306的高速缓存行号计算电路412、用于计算高速缓存行区块号308的高速缓存行区块计算电路414、用于计算高速缓存行区块字节地址310的区块偏移计算电路416、用于计算元数据块插入偏移312的高速缓存行偏移计算电路418、以及预定偏移419(例如,高速缓存行分组大小),上述的每一个被配置为计算或确定它们各自的值。尽管如此,应理解的是,这些计算如何发生的细节是一些说明性示例,公开的主题不限于此。
在所示实施例中,系统400可包括存储器映射408。在各种实施例中,存储器映射408可包括比较器电路、寄存器和/或各种数据结构。如上所述,在这样的实施例中,存储器映射408可被配置为指示可公开寻址的存储器空间的哪个(哪些)部分与数据和元数据二者以及它们所需的禁止区域相关联,以及存储器的哪个(哪些)部分仅与数据相关联。在各种实施例中,可存在多个数据/元数据部分和多个仅数据部分。如上所述,在各种实施例中,存储器映射408可指示每个数据/元数据部分中的元数据表示什么(例如,ECC、安全信息、压缩信息)。
在所示实施例中,系统400可包括元数据生成器/检查器410。在一个实施例中,元数据生成器/检查器410可创建、计算或生成元数据(例如,ECC比特)。在一个实施例中,元数据生成器/检查器410可检查元数据是正确的(例如,在ECC元数据的情况下)或者与数据访问相关联的动作是可允许的(例如,在安全元数据的情况下)或者正确的。在这样的实施例中,系统400可被配置为向处理器(或其他电路)报告是否已发生错误。例如,如果ECC错误被检测到和/或不可纠正,则可发出中断。应理解的是,以上是一些说明性示例,公开的主题不限于此。
图5A是根据公开的主题的系统500的示例实施例的框图。如上所述,在各种实施例中,系统500可被包括在存储器控制器或管理电路中。
在所示实施例中,对于多条数据,系统500可用于将公共存储器地址522转换为实际或私有存储器地址524。应当理解的是,以上是一个说明性示例,公开的主题不限于此。
在所示实施例中,系统500可包括高速缓存行号计算电路,其中,高速缓存行号计算电路包括逐位XOR门或电路502和右移位电路504。在这样的实施例中,逐位XOR门或电路502可将公共存储器地址522和基础存储器地址520作为输入并产生结果512。在各种实施例中,可通过屏蔽(masking)公共存储器地址522来生成基础存储器地址520;但是,应理解的是,以上仅是一个说明性示例,公开的主题不限于此。右移位电路504可将该结果512作为输入,将结果512右移6位(或者由数据-元数据比率指示的位数),并产生高速缓存行号514。
在所示实施例中,系统500可包括高速缓存行区块计算电路,其中,高速缓存行区块计算电路包括右移位电路506。在这样的实施例中,右移位电路506可将高速缓存行号514作为输入并将其右移3位(或由数据-元数据比率指示的位数)来产生高速缓存行区块号516。在各种实施例中,高速缓存行号计算电路可与高速缓存行区块计算电路组合。
在所示实施例中,系统500可包括区块偏移计算电路,其中,区块偏移计算电路包括左移位电路508。在这样的实施例中,左移位电路508可将高速缓存行区块号516作为输入并将其左移9位(或由数据-元数据比率指示的位数)以产生高速缓存行区块字节地址518。在各种实施例中,这可以与先前的移位操作组合。
在所示实施例中,系统500可除了上述内容之外还包括数据地址计算电路,其中,数据地址计算电路包括数据加法器510。在这样的实施例中,数据加法器可将高速缓存行区块字节地址518与公共存储器地址522相加以产生私有(数据)存储器地址524。
图5B是根据公开的主题的系统550的示例实施例的框图。如上所述,在各种实施例中,系统550可被包括存储器控制器或管理电路包括中。
在所示实施例中,对于多条元数据,系统550可用于将公共存储器地址522转换为用于元数据的实际或私有存储器地址574。应理解的是,以上是一个说明性示例,公开的主题不限于此。
如上所述,在所示实施例中,系统550可包括逐位XOR门或电路502、右移位电路504和506以及左移位电路508。如上所述,在这样的实施例中,这些电路可分别产生结果512、高速缓存行号514、高速缓存行区块号516和高速缓存行区块字节地址518。
另外,系统550可包括高速缓存行偏移计算电路,其中,高速缓存行偏移计算电路包括左移位电路558。在这样的实施例中,左移位电路558可将高速缓存行区块号516作为输入并将其左移6位(或由数据-元数据比率指示的位数)来产生元数据块偏移568。
在所示实施例中,系统550可除了上述内容之外还包括元数据地址计算电路,其中,元数据地址计算电路包括元数据加法器560。在这样的实施例中,元数据加法器560将高速缓存行区块字节地址518、元数据块偏移568和预定偏移570(例如,0x200)与基础存储器地址520相加以产生私有(元数据)存储器地址574。
图6是可包括根据公开的主题的原理形成的半导体装置的信息处理系统600的示意性框图。
参照图6,信息处理系统600可包括根据公开的主题的原理所构造的一个或更多个装置。在另一个实施例中,信息处理系统600可采用或执行根据公开的主题的原理的一项或更多项技术。
在各种实施例中,信息处理系统600可包括计算装置,诸如,例如,膝上型计算机、台式机、工作站、服务器、刀片式服务器、个人数字助理、智能电话、平板计算机和其他适当的计算机或者虚拟机器或虚拟机器的虚拟计算装置。在各种实施例中,信息处理系统600可由用户(未示出)使用。
根据公开的主题的信息处理系统600还可包括中央处理器(CPU)、逻辑或处理器610。在一些实施例中,处理器610可包括一个或更多个功能单元块(FUB)或组合逻辑块(CLB)615。在这样的实施例中,组合逻辑块可包括:各种布尔(Boolean)逻辑运算(例如,NAND、NOR、NOT、XOR)、稳定逻辑装置(例如,触发器、锁存器)、其他逻辑装置或它们的组合。可以以简单或复杂的方式配置这些组合逻辑运算以对输入信号进行处理以得到期望的结果。应当理解的是,虽然描述了同步组合逻辑运算的一些说明性示例,但是公开的主题不限于此并且可包括异步运算或它们的混合。在一个实施例中,组合逻辑运算可包括多个互补金属氧化物半导体(CMOS)晶体管。在各种实施例中,这些CMOS晶体管可被布置成执行逻辑运算的门;但是应理解的是,可使用其他技术,并且这些技术也在公开的主题的范围内。
根据公开的主题的信息处理系统600还可包括易失性存储器620(例如,随机存取存储器(RAM))。根据公开的主题的信息处理系统600还可包括非易失性存储器630(例如,硬盘驱动器、光学存储器、NAND或闪存)。在一些实施例中,易失性存储器620、非易失性存储器630或它们的组合或部分可被称为“存储介质”。在各种实施例中,易失性存储器620和/或非易失性存储器630可被配置为以半永久或基本永久的形式存储数据。
在各种实施例中,信息处理系统600可包括一个或更多个网络接口640,其中,网络接口640被配置为允许信息处理系统600成为通信网络的一部分并经由通信网络进行通信。Wi-Fi协议的示例可包括但不限于电气和电子工程师协会(IEEE)802.11g,IEEE 802.11n。蜂窝协议的示例可包括但不限于:IEEE 802.16m(又名无线-MAN(城域网)增强型、长期演进(LTE)增强型、增强型数据速率GSM(全球移动通信系统)演进(EDGE)、演进型高速分组接入(HSPA+)。有线协议的示例可包括但不限于IEEE 802.3(又称以太网)、光纤信道、电力线通信(例如,HomePlug、IEEE 1901)。应理解的是,以上仅是一些说明性示例,公开的主题不限于此。
根据公开的主题的信息处理系统600还可包括用户接口单元650(例如,显示适配器、触觉接口、人机接口装置)。在各种实施例中,该用户接口单元650可被配置为接收来自用户的输入和/或向用户提供输出。其他类型的装置也可用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;可以接收来自用户的任何形式的输入,包括声学、语音或触觉输入。
在各种实施例中,信息处理系统600可包括一个或更多个其他装置或硬件组件660(例如,显示器或监视器、键盘、鼠标、相机、指纹读取器、视频处理器)。应理解的是,以上仅是一些说明性示例,公开的主题不限于此。
根据公开的主题的信息处理系统600还可包括一个或更多个系统总线605。在这样的实施例中,系统总线605可被配置为通信地耦接处理器610、易失性存储器620、非易失性存储器630、网络接口640、用户接口单元650和一个或更多个硬件组件660。由处理器610处理的数据或从非易失性存储器630的外部输入的数据可存储在非易失性存储器630或易失性存储器620中。
在各种实施例中,信息处理系统600可包括或执行一个或更多个软件组件670。在一些实施例中,软件组件670可包括操作系统(OS)和/或应用。在一些实施例中,OS可被配置为:向应用提供一个或更多个服务,并管理或充当应用与信息处理系统的各种硬件组件(例如,处理器610、网络接口640)之间的中介。在这样的实施例中,信息处理系统600可包括一个或更多个本机应用,其中,本机应用可本地安装(例如,在非易失性存储器630内)并且被配置为由处理器610直接执行并直接与OS交互。在这样的实施例中,本机应用可包括预编译的机器可执行代码。在一些实施例中,本机应用可包括脚本解释器(例如,C shell(csh)、AppleScript、AutoHotkey)或虚拟执行机器(VM)(例如,Java虚拟机器、Microsoft公共语言运行库),其中,脚本解释器或虚拟执行机器被配置为将源代码或目标代码转换成随后由处理器610执行的可执行代码。
可使用各种封装技术来对上述半导体装置进行封装。例如,可使用以下技术中的任意一种技术来封装根据公开主题的原理所构造的半导体装置:层叠封装(POP)技术、球栅阵列(BGA)技术、芯片级封装(CSP)技术、塑料引线芯片载体(PLCC)技术、塑料双列直插式封装(PDIP)技术、裸片格栅封装技术、裸片级晶片形式技术、板上芯片(COB)技术、陶瓷双列直插式封装(CERDIP)技术、塑料公制四方扁平封装(PMQFP)技术、塑料四方扁平封装(PQFP)技术、小外形封装(SOIC)技术、收缩小外形封装(SSOP)技术、薄型小外形封装(TSOP)技术、薄四方扁平封装(TQFP)技术、系统级封装(SIP)技术、多芯片封装(MCP)技术、晶圆级制造封装(WFP)技术、晶圆级加工的堆叠式封装(WSP)技术或本领域的技术人员将要知道的其他技术。
方法步骤可由执行计算机程序的一个或更多个可编程处理器执行,以通过对输入数据进行操作并生成输出来执行功能。方法步骤也可由专用逻辑电路(例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路))执行,并且设备可被实现为专用逻辑电路(例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路))。
在各种实施例中,计算机可读介质可包括指令,其中,所述指令在被执行时促使装置执行方法步骤的至少一部分。在一些实施例中,计算机可读介质可被包括在磁介质、光学介质、其他介质或它们的组合(例如,CD-ROM,硬盘驱动器、只读存储器、闪存驱动器)中。在这样的实施例中,计算机可读介质可以是有形且非暂时性体现的制品。
尽管已经参考示例实施例描述了公开的主题的原理,但是对于本领域技术人员来说显而易见的是,在不脱离这些公开的概念的精神和范围的情况下,可以对其进行各种改变和修改。因此,应理解的是,上述实施例不是限制性的,而仅是说明性的。因此,公开的概念的范围将由所附权利要求及其等同物的最宽泛的可允许的解释来确定,并且不应受前述描述的约束或限制。因此,应理解的是,所附权利要求旨在覆盖落入实施例范围内的所有这样的修改和变化。
Claims (20)
1.一种带内动态随机存取存储器纠错编码的设备,包括:
存储器,被配置为存储数据和元数据二者,使得对于与元数据相关联的存储器部分,数据和元数据被交错使得每个元数据单元位于2的幂的连续的数据单元之后;和
存储器管理电路,被配置为:
接收对存储器的数据访问,其中,所述数据访问包括公共存储器地址,
按照考虑数据和元数据的交错的方式将公共存储器地址转换为私有存储器地址,以及
在私有存储器地址完成所述数据访问,
其中,存储器管理电路被配置为通过以下操作将公共存储器地址转换为私有存储器地址:
通过将第一偏移与公共存储器地址相加来确定针对数据的每个高速缓存行的私有存储器地址;和
通过将公共存储器地址与第一偏移、第二偏移和预定偏移相加来确定针对元数据的每个高速缓存行的私有存储器地址。
2.如权利要求1所述的设备,其中,元数据包括纠错信息;并且对于与元数据相关联的存储器部分,数据与元数据的比率是8:1。
3.如权利要求1所述的设备,其中,存储器管理电路被配置为:将存储器的多个部分动态地映射为与元数据相关联;以及
其中,对于与元数据不相关的存储器部分,公共存储器地址与私有存储器地址相同。
4.如权利要求1所述的设备,其中,存储器管理电路被配置为:通过以下操作将公共存储器地址转换为私有存储器地址:
将公共存储器地址偏移一定量以考虑之前存储在存储器部分中的元数据,以及
对于数据,跳过存储器部分中交错的任何元数据。
5.如权利要求4所述的设备,其中,存储器管理电路被配置为如果所述数据访问包括写入操作,则进行以下操作:
生成元数据;
每次遇到被配置为存储元数据的私有存储器地址时,在公共存储器地址和私有存储器地址之间添加额外的偏移;和
将元数据仅存储在被配置为存储元数据的私有存储器地址处。
6.如权利要求1所述的设备,其中,存储器管理电路被配置为还通过以下操作转换公共存储器地址:
确定存储器的与公共存储器地址相关联的部分的高速缓存行号;和
确定公共存储器地址和基础存储器地址之间的元数据单元的数量。
7.如权利要求6所述的设备,
其中,第一偏移至少部分地基于在与公共存储器地址相关联的部分内数据与元数据按照数据与元数据的比率出现的次数,其中,第二偏移至少部分地基于所述高速缓存行号,所述预定偏移至少部分地基于数据与元数据的所述比率。
8.如权利要求1所述的设备,其中,存储器包括系统随机存取存储器。
9.一种带内动态随机存取存储器纠错编码的设备,包括:
第一接口,用于接收基于公共存储器地址的数据访问;
第二接口,用于与存储器进行通信以实现所述数据访问,其中,所述设备被配置为促使存储器以交错模式将数据和元数据一起存储,其中,在所述交错模式下,每个元数据单元位于2的幂的连续的数据单元之后;
地址转换电路,被配置为:按照考虑数据和元数据的交错的方式将公共存储器地址转换为私有存储器地址,
其中,地址转换电路被配置为:
通过将第一偏移与公共存储器地址相加来确定针对数据的每个高速缓存行的私有存储器地址;和
通过将公共存储器地址与第一偏移、第二偏移和预定偏移相加来确定针对元数据的每个高速缓存行的私有存储器地址。
10.如权利要求9所述的设备,其中,所述设备还包括:存储器映射,被配置为指示存储器的哪个部分或哪些部分与数据和元数据二者相关联,以及存储器的哪个部分或哪些部分仅与数据相关联;和
其中,地址转换电路被配置为:对于存储器的仅与数据相关联的部分,将私有存储器地址设置为等于公共存储器地址。
11.如权利要求9所述的设备,其中,地址转换电路包括:
高速缓存行号计算电路,被配置为确定存储器的与公共存储器地址相关联的部分的高速缓存行号;
高速缓存行区块计算电路,被配置为确定在与公共存储器地址相关联的部分内数据和元数据按照数据与元数据的比率出现的次数;
区块偏移计算电路,被配置为至少部分地基于在与公共存储器地址相关联的部分内数据和元数据按照数据与元数据的所述比率出现的次数来确定第一偏移;以及
高速缓存行偏移计算电路,被配置为至少部分地基于所述高速缓存行号来确定第二偏移。
12.如权利要求11所述的设备,其中,高速缓存行号计算电路包括逐位异或XOR电路和右移电路;
其中,高速缓存行区块计算电路包括右移电路;和
其中,区块偏移计算电路包括左移电路。
13.如权利要求11所述的设备,其中,所述预定偏移至少部分地基于数据与元数据的所述比率。
14.如权利要求9所述的设备,其中,所述数据访问包括数据和元数据二者,并且所述设备被配置为重新格式化使得数据和元数据按照8:1的比率被交错。
15.如权利要求9所述的设备,其中,所述数据访问包括写入访问而不包括元数据;和
其中,所述设备被配置为生成元数据。
16.如权利要求9所述的设备,其中,元数据是纠错/检错数据;
其中,所述数据访问包括写入访问;和
其中,所述设备被配置为将元数据与数据进行比较,并且如果检测到错误,则纠正或报告所述错误。
17.如权利要求9所述的设备,其中,地址转换电路包括逐位XOR电路、四个移位电路和加法器,其中,逐位XOR电路、四个移位电路和加法器用于生成用于元数据的私有存储器地址。
18.如权利要求9所述的设备,其中,地址转换电路包括逐位XOR电路、三个移位电路和加法器,其中,逐位XOR电路、三个移位电路和加法器用于生成用于数据的私有存储器地址。
19.一种带内动态随机存取存储器纠错编码的系统,包括:
存储器,被配置为存储数据和元数据二者,使得对于与元数据相关联的存储器部分,数据和元数据被交错使得每个元数据单元位于2的幂的连续的数据单元之后;和
片上系统,包括处理器和存储器管理器电路,其中,处理器请求数据访问,存储器管理电路被配置为:
接收对存储器的数据访问,其中,所述数据访问包括公共存储器地址,
按照考虑数据和元数据的交错的方式将公共存储器地址转换为私有存储器地址,以及
在私有存储器地址完成所述数据访问,
其中,存储器管理电路被配置为通过以下操作将公共存储器地址转换为私有存储器地址:
通过将第一偏移与公共存储器地址相加来确定针对数据的每个高速缓存行的私有存储器地址;和
通过将公共存储器地址与第一偏移、第二偏移和预定偏移相加来确定针对元数据的每个高速缓存行的私有存储器地址。
20.如权利要求19所述的系统,其中,存储器包括动态随机存取存储器。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862649524P | 2018-03-28 | 2018-03-28 | |
US62/649,524 | 2018-03-28 | ||
US16/026,008 US10853168B2 (en) | 2018-03-28 | 2018-07-02 | Apparatus to insert error-correcting coding (ECC) information as data within dynamic random access memory (DRAM) |
US16/026,008 | 2018-07-02 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110322922A CN110322922A (zh) | 2019-10-11 |
CN110322922B true CN110322922B (zh) | 2024-01-23 |
Family
ID=68054399
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910193883.5A Active CN110322922B (zh) | 2018-03-28 | 2019-03-14 | 带内动态随机存取存储器纠错编码的设备和系统 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10853168B2 (zh) |
KR (1) | KR20190113544A (zh) |
CN (1) | CN110322922B (zh) |
TW (1) | TWI800609B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11288188B1 (en) * | 2021-01-21 | 2022-03-29 | Qualcomm Incorporated | Dynamic metadata relocation in memory |
US11599415B2 (en) * | 2021-07-09 | 2023-03-07 | Microsoft Technology Licensing, Llc | Memory tiering techniques in computing systems |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0313787A2 (en) * | 1987-10-29 | 1989-05-03 | International Business Machines Corporation | A hardware mechanism for the dynamic customization of permutation using bit-matrix multiplication |
CN1505273A (zh) * | 1998-12-26 | 2004-06-16 | 三星电子株式会社 | 通信系统的交织/解交织装置和方法 |
CN1926772A (zh) * | 2004-03-18 | 2007-03-07 | 三星电子株式会社 | 使用内部存储器和外部存储器的去交织装置和方法 |
CN101069211A (zh) * | 2004-11-23 | 2007-11-07 | 高效存储技术公司 | 分页存储器及其智能存储器区段的交错寻址的多次缩略的方法和装置 |
CN103679786A (zh) * | 2012-09-11 | 2014-03-26 | 辉达公司 | 图形处理单元可编程着色器的纹元数据结构和其操作方法 |
CN106233258A (zh) * | 2014-04-30 | 2016-12-14 | 微软技术许可有限责任公司 | 可变宽度纠错 |
CN106462504A (zh) * | 2013-10-21 | 2017-02-22 | 马维尔国际贸易有限公司 | 最终级高速缓存系统和对应的方法 |
CN107799156A (zh) * | 2016-09-01 | 2018-03-13 | 三星电子株式会社 | 具有纠错的半导体存储器设备及操作其的方法 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020157057A1 (en) | 2001-04-20 | 2002-10-24 | Samsung Electronics Co., Ltd. | Optical information recording medium and data recording apparatus thereon |
US20050028067A1 (en) | 2003-07-31 | 2005-02-03 | Weirauch Charles R. | Data with multiple sets of error correction codes |
US9495241B2 (en) * | 2006-12-06 | 2016-11-15 | Longitude Enterprise Flash S.A.R.L. | Systems and methods for adaptive data storage |
US9116823B2 (en) * | 2006-12-06 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for adaptive error-correction coding |
CN101923896A (zh) | 2009-06-12 | 2010-12-22 | 威刚科技(苏州)有限公司 | 电子存储装置及其纠错方法 |
KR101653568B1 (ko) | 2009-07-03 | 2016-09-02 | 삼성전자주식회사 | 부분 셀프 리플레시 모드에서 전류 소모를 줄일 수 있는 반도체 메모리 장치 |
US9496009B2 (en) | 2012-06-06 | 2016-11-15 | Mosys, Inc. | Memory with bank-conflict-resolution (BCR) module including cache |
WO2012100087A2 (en) * | 2011-01-19 | 2012-07-26 | Fusion-Io, Inc. | Apparatus, system, and method for managing out-of-service conditions |
US8902653B2 (en) | 2011-08-12 | 2014-12-02 | Micron Technology, Inc. | Memory devices and configuration methods for a memory device |
JP5598493B2 (ja) * | 2012-03-30 | 2014-10-01 | 富士通株式会社 | 情報処理装置、演算装置および情報転送方法 |
JP5910332B2 (ja) | 2012-06-07 | 2016-04-27 | 富士通株式会社 | 情報処理装置、試験方法、およびプログラム |
US8924832B1 (en) * | 2012-06-26 | 2014-12-30 | Western Digital Technologies, Inc. | Efficient error handling mechanisms in data storage systems |
US20140089755A1 (en) * | 2012-09-27 | 2014-03-27 | Shveta KANTAMSETTI | Reliability enhancements for high speed memory - parity protection on command/address and ecc protection on data |
US9251067B1 (en) * | 2012-11-01 | 2016-02-02 | Western Digital Technologies, Inc. | High speed trim command processing in a solid state drive |
US8996951B2 (en) * | 2012-11-15 | 2015-03-31 | Elwha, Llc | Error correction with non-volatile memory on an integrated circuit |
US9720627B2 (en) * | 2013-01-17 | 2017-08-01 | Western Digital Technologies, Inc. | Data management for a data storage device |
US10445229B1 (en) * | 2013-01-28 | 2019-10-15 | Radian Memory Systems, Inc. | Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies |
US10031802B2 (en) * | 2013-06-28 | 2018-07-24 | Intel Corporation | Embedded ECC address mapping |
US10248328B2 (en) * | 2013-11-07 | 2019-04-02 | Netlist, Inc. | Direct data move between DRAM and storage on a memory module |
TWI603194B (zh) * | 2013-12-04 | 2017-10-21 | 慧榮科技股份有限公司 | 資料儲存裝置以及其資料存取方法 |
WO2015106162A1 (en) * | 2014-01-09 | 2015-07-16 | SanDisk Technologies, Inc. | Selective copyback for on die buffered non-volatile memory |
WO2015114754A1 (ja) * | 2014-01-29 | 2015-08-06 | 株式会社日立製作所 | ストレージ装置 |
US9875180B2 (en) * | 2014-02-24 | 2018-01-23 | Sandisk Technologies Llc | Systems and methods for managing storage compression operations |
JP6145227B2 (ja) | 2014-08-27 | 2017-06-07 | 株式会社日立製作所 | 半導体装置 |
KR102308780B1 (ko) * | 2014-10-31 | 2021-10-05 | 삼성전자주식회사 | 캐시 메모리의 관리 방법 및 그 장치 |
JP6346123B2 (ja) | 2015-05-25 | 2018-06-20 | 東芝メモリ株式会社 | コントローラ、制御方法 |
US9934148B2 (en) * | 2015-06-23 | 2018-04-03 | Advanced Micro Devices, Inc. | Memory module with embedded access metadata |
US10127101B2 (en) * | 2015-08-28 | 2018-11-13 | Intel Corporation | Memory device error check and scrub mode and error transparency |
US10114549B2 (en) * | 2016-03-17 | 2018-10-30 | Sandisk Technologies Llc | Error correction code processing and data shaping for reducing wear to a memory |
US10055164B2 (en) * | 2016-09-07 | 2018-08-21 | Sandisk Technologies Llc | Data storage at an access device |
US10069597B2 (en) * | 2016-09-07 | 2018-09-04 | Western Digital Technologies, Inc. | Aggregated metadata transfer at a data storage device |
US10540297B2 (en) * | 2017-08-03 | 2020-01-21 | Arm Limited | Memory organization for security and reliability |
-
2018
- 2018-07-02 US US16/026,008 patent/US10853168B2/en active Active
-
2019
- 2019-02-07 KR KR1020190014641A patent/KR20190113544A/ko active Search and Examination
- 2019-03-04 TW TW108106973A patent/TWI800609B/zh active
- 2019-03-14 CN CN201910193883.5A patent/CN110322922B/zh active Active
-
2020
- 2020-11-20 US US17/100,805 patent/US11467902B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0313787A2 (en) * | 1987-10-29 | 1989-05-03 | International Business Machines Corporation | A hardware mechanism for the dynamic customization of permutation using bit-matrix multiplication |
CN1505273A (zh) * | 1998-12-26 | 2004-06-16 | 三星电子株式会社 | 通信系统的交织/解交织装置和方法 |
CN1926772A (zh) * | 2004-03-18 | 2007-03-07 | 三星电子株式会社 | 使用内部存储器和外部存储器的去交织装置和方法 |
CN101069211A (zh) * | 2004-11-23 | 2007-11-07 | 高效存储技术公司 | 分页存储器及其智能存储器区段的交错寻址的多次缩略的方法和装置 |
CN103679786A (zh) * | 2012-09-11 | 2014-03-26 | 辉达公司 | 图形处理单元可编程着色器的纹元数据结构和其操作方法 |
CN106462504A (zh) * | 2013-10-21 | 2017-02-22 | 马维尔国际贸易有限公司 | 最终级高速缓存系统和对应的方法 |
CN106233258A (zh) * | 2014-04-30 | 2016-12-14 | 微软技术许可有限责任公司 | 可变宽度纠错 |
CN107799156A (zh) * | 2016-09-01 | 2018-03-13 | 三星电子株式会社 | 具有纠错的半导体存储器设备及操作其的方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20190113544A (ko) | 2019-10-08 |
TWI800609B (zh) | 2023-05-01 |
CN110322922A (zh) | 2019-10-11 |
US20210073073A1 (en) | 2021-03-11 |
US20190303238A1 (en) | 2019-10-03 |
US10853168B2 (en) | 2020-12-01 |
US11467902B2 (en) | 2022-10-11 |
TW202011188A (zh) | 2020-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102420098B1 (ko) | 고-대역폭 메모리 신뢰성, 접근성 및 유용성(ras) 캐시 구조 | |
US9654148B2 (en) | Reconfigurable ECC for memory | |
TWI447732B (zh) | 提供錯誤修正的記憶體系統及其方法 | |
US8010875B2 (en) | Error correcting code with chip kill capability and power saving enhancement | |
KR102491112B1 (ko) | Msr 코드를 위한 fpga 가속 시스템 | |
US20140344643A1 (en) | Hybrid memory protection method and apparatus | |
CN110580204B (zh) | 数据存储设备和数据存储系统 | |
US11467902B2 (en) | Apparatus to insert error-correcting coding (ECC) information as data within dynamic random access memory (DRAM) | |
US8707133B2 (en) | Method and apparatus to reduce a quantity of error detection/correction bits in memory coupled to a data-protected processor port | |
Manzhosov et al. | Revisiting Residue Codes for Modern Memories | |
WO2022146790A1 (en) | Providing host-based error detection capabilities in a remote execution device | |
CN108665940B (zh) | Ecc编码电路、解码电路以及存储器控制器 | |
EP4369201A1 (en) | Data processing method and apparatus | |
US11436101B2 (en) | Rebuild directory/block allocation map from embedded data block information in file system disk | |
Yang et al. | An MPCN-based BCH codec architecture with arbitrary error correcting capability | |
US20240184665A1 (en) | Data processing method and apparatus | |
CN117873913A (zh) | 工作参数的获取方法、装置、系统及计算机可读存储介质 | |
WO2023274531A1 (en) | Data storage system and method of managing the data storage system | |
JP2010140132A (ja) | メモリシステム及びメモリコントローラ | |
CN117811592A (zh) | 针对触发器的单粒子翻转纠错方法、装置和设备 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |