CN114816829A - 分布ecc比特以为元数据分配ecc比特 - Google Patents
分布ecc比特以为元数据分配ecc比特 Download PDFInfo
- Publication number
- CN114816829A CN114816829A CN202111569808.8A CN202111569808A CN114816829A CN 114816829 A CN114816829 A CN 114816829A CN 202111569808 A CN202111569808 A CN 202111569808A CN 114816829 A CN114816829 A CN 114816829A
- Authority
- CN
- China
- Prior art keywords
- memory
- data
- bits
- ecc
- line
- 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 claims abstract description 457
- 238000012937 correction Methods 0.000 claims abstract description 78
- 238000000034 method Methods 0.000 claims description 32
- 230000009977 dual effect Effects 0.000 claims description 13
- 230000001360 synchronised effect Effects 0.000 claims description 4
- 208000011580 syndromic disease Diseases 0.000 description 31
- 238000012545 processing Methods 0.000 description 29
- 238000010586 diagram Methods 0.000 description 25
- 238000003860 storage Methods 0.000 description 24
- 238000005192 partition Methods 0.000 description 17
- 238000012546 transfer Methods 0.000 description 15
- 238000004891 communication Methods 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 13
- 239000011159 matrix material Substances 0.000 description 13
- 230000002093 peripheral effect Effects 0.000 description 13
- 230000006870 function Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 11
- 238000001514 detection method Methods 0.000 description 9
- 230000004044 response Effects 0.000 description 9
- 230000008878 coupling Effects 0.000 description 8
- 238000010168 coupling process Methods 0.000 description 8
- 238000005859 coupling reaction Methods 0.000 description 8
- 239000004744 fabric Substances 0.000 description 8
- 238000007726 management method Methods 0.000 description 7
- 230000001413 cellular effect Effects 0.000 description 6
- 230000011664 signaling Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000011218 segmentation Effects 0.000 description 4
- 101000682328 Bacillus subtilis (strain 168) 50S ribosomal protein L18 Proteins 0.000 description 3
- 230000009471 action Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000009795 derivation Methods 0.000 description 3
- 230000007613 environmental effect Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000003032 molecular docking Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- CURLTUGMZLYLDI-UHFFFAOYSA-N Carbon dioxide Chemical compound O=C=O CURLTUGMZLYLDI-UHFFFAOYSA-N 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 239000000446 fuel Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 239000000126 substance Substances 0.000 description 2
- 230000009897 systematic effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- UGFAIRIUMAVXCW-UHFFFAOYSA-N Carbon monoxide Chemical compound [O+]#[C-] UGFAIRIUMAVXCW-UHFFFAOYSA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 229910002092 carbon dioxide Inorganic materials 0.000 description 1
- 239000001569 carbon dioxide Substances 0.000 description 1
- 229910002091 carbon monoxide Inorganic materials 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 239000005387 chalcogenide glass Substances 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004193 electrokinetic chromatography Methods 0.000 description 1
- 230000005670 electromagnetic radiation Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002070 nanowire Substances 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 230000001766 physiological effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
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/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/1044—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 with specific ECC/EDC distribution
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/19—Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Probability & Statistics with Applications (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
本公开总体涉及分布ECC比特以为元数据分配ECC比特。存储器子系统包括并行连接的多个存储器资源,包括第一存储器资源和第二存储器资源。存储器子系统可以将数据的一部分分割成多个子部分。分割成更小的部分,系统需要更少的ECC(错误校验和校正)比特来提供相同水平的ECC保护。该部分数据可包括用于错误校正的N个ECC比特,并且每个子部分可包括用于错误校正的(N‑M)个ECC比特的子部分。然后,系统可以将M比特的数据用于非ECC目的,例如元数据。
Description
技术领域
描述概括而言涉及存储器系统,更具体地,描述涉及数据存储和错误校正比特的系统管理。
背景技术
越来越大的存储器设备密度和操作速度,与存储器设备制造工艺的更小特征尺寸相结合,往往会导致存储器设备的运行时错误的增加。存储器系统采用错误校验和校正(error checking and correction,ECC)来校正否则可能导致系统故障的错误。DRAM(dynamic random access memory,动态随机存取存储器)设备经常被用在诸如DIMM(dualinline memory module,双列直插式存储器模块)之类的模块中,这种模块包括多个并行连接的DRAM设备。使用DIMM的存储器系统经常期望提供单设备数据校正(single devicedata correction,SDDC),其中DIMM的整个DRAM设备的故障可以得到校正。
即将推出的存储器设备标准预计会有更多的内部预取和更长的突发长度,以导致每个存储器设备访问事务(例如,读取或写入)的数据带宽更大。在每个事务有更多比特的情况下,传统的架构将所有可用的ECC带宽用于ECC。在所有额外的比特都被用于ECC的情况下,系统没有比特可用于除了ECC以外的系统级目的。
发明内容
本公开的一个实施例提供了一种存储器控制器,包括:硬件输入/输出(I/O)接口,用于耦合到多个存储器资源,所述多个存储器资源包括第一存储器资源和第二存储器资源;以及控制逻辑,用于将来自所述第一存储器资源的数据部分分布为所述第一存储器资源中的第一一半部分和所述第二存储器资源中的第二一半部分,所述数据部分包括N个错误校验和校正(ECC)比特以对所述数据部分提供错误校正,其中,所述第一一半部分和所述第二一半部分各自包括(N-M)/2个ECC比特以对这些一半部分提供错误校正;其中,所述控制逻辑用于在所述第一一半部分和所述第二一半部分之间分布M个非ECC比特。
本公开的另一实施例提供了一种用于存储器访问的方法,包括:将数据线分割成两个数据半线,第一半线和第二半线,其中,所述数据线包括N个错误校验和校正(ECC)比特以对所述数据线提供错误校正;为所述第一半线计算第一(N-M)/2个错误校验和校正(ECC)比特并且为所述第二半线计算第二(N-M)/2个ECC比特;为所述第一半线生成第一M/2个元数据比特并且为所述第二半线生成第二M/2个元数据比特;以及将所述第一半线连同所述第一(N-M)/2个ECC比特和所述第一M/2个元数据比特存储在第一存储器资源中,并且将所述第二半线连同所述第二(N-M)/2个ECC比特和所述第二M/2个元数据比特存储在与所述第一存储器资源分离的第二存储器资源中。
本公开的又一实施例提供了一种用于存储器访问的系统,包括:存储器,包括第一存储器资源和第二存储器资源;以及存储器控制器,与所述存储器耦合,所述存储器控制器包括:控制逻辑,用于将来自所述第一存储器资源的数据部分分布为所述第一存储器资源中的第一一半部分和所述第二存储器资源中的第二一半部分,所述数据部分包括N个错误校验和校正(ECC)比特以对所述数据部分提供错误校正,其中,所述第一一半部分和所述第二一半部分各自包括(N-M)/2个ECC比特以对这些一半部分提供错误校正;其中,所述控制逻辑用于在所述第一一半部分和所述第二一半部分之间分布M个非ECC比特。
附图说明
下面的描述包括对具有借由实现方式的示例给出的图示的附图的论述。应当以示例方式而不是限制方式来理解附图。如本文所使用的,提及一个或多个示例应被理解为描述本发明的至少一个实现方式中包括的特定特征、结构或特性。本文出现的诸如“在一个示例中”或“在替换示例中”之类的短语提供了本发明的实现方式的示例,而并不一定全都是指同一实现方式。然而,它们也不一定相互排斥。
图1是具有分割线访问控制的系统的示例的框图。
图2是其中分割线访问允许为元数据选择性地释放ECC容量的系统的示例的框图。
图3是具有应用突发切分(burst chop)的分割线访问的系统的示例的框图。
图4是用于双阶列10x4存储器模块的分割线访问的系统架构的示例的框图。
图5是用于在并行存储器资源之间分割数据和错误校正的过程的示例的流程图。
图6是应用矩阵来基于分割线ECC执行校验和校正的校验比特生成逻辑和征候(syndrome)比特生成逻辑的示例的框图。
图7是系统级错误校验和校正的示例的框图。
图8是其中可实现分割线存储器访问的存储器子系统的示例的框图。
图9是其中可实现分割线存储器访问的计算系统的示例的框图。
图10是其中可实现分割线存储器访问的移动设备的示例的框图。
图11是其中可实现分割线存储器访问的多节点网络的示例的框图。
以下对某些细节和实现方式进行描述,包括对附图的非限制性描述,这些附图可以描绘一些或所有示例,以及其他潜在的实现方式。
具体实施方式
如本文所述,存储器子系统包括并行连接的多个存储器资源,包括第一存储器资源和第二存储器资源。存储器子系统可以将数据的一部分分割成多个子部分。分割成更小的部分,系统需要更少的ECC(错误校验和校正)比特来提供相同水平的ECC保护。将数据分割成子部分以存储在并行的存储器资源中,可被称为分割线访问。该部分数据可包括用于错误校正的N个ECC比特,而每个子部分可包括用于错误校正的(N-M)个ECC比特的子部分。然后,系统可以将M比特的数据用于非ECC目的,例如元数据。
与JEDEC(Joint Electron Device Engineering Council,联合电子设备工程委员会,现在的JEDEC固态技术协会)即将推出的双数据速率版本5(double data rateversion 5,DDR5)标准兼容的DRAM(动态随机存取存储器)设备可具有4个数据总线信号线接口(DQ[0:3])。这样的设备可被称为x4设备,指的是4个DQ(数据)信号线接口。DIMM(双列直插式存储器模块)或其他存储器模块包括并行连接以处理访问命令的多个存储器设备,例如DRAM设备。并行的存储器设备通常共享命令总线,并且具有单独的数据总线接口。
DIMM可以由填充在构成该模块的板(例如,印刷电路板(printed circuit board,PCB))上的存储器设备的数目和设备类型来识别。一示例包括10x4 DIMM,指的是具有十(10)个并行设备、每个设备具有一x4接口的DIMM。因此,数据总线将具有40条信号线。10x4DIMM通常包括用于用户数据或者直接控制设备执行和操作的数据的8个存储器设备,以及用于诸如ECC数据和元数据之类的系统数据的2个存储器设备。
每个DDR5 x4 DRAM设备对于每个访问事务(例如,读取或写入)提供64比特的数据,在16UI突发或突发长度16(BL16)上在每个单位间隔(unit interval,UI)中交换4比特。对于DDR5 10x4 DIMM,8个数据设备将提供512比特(8*64),并且2个ECC设备(也可以被称为冗余设备)提供128比特(2*64)。为了提供允许对X4 DDR5设备故障进行完全校正的SDDC(单设备数据校正),需要128比特的ECC来恢复64比特的损失。在只有两个冗余设备的情况下,10x4 DIMM的所有非数据比特或所有ECC带宽都将被使用,从而没有为元数据使用留下系统比特。
为系统释放存储器存储空间的一个解决方案是简单地使用更少的ECC比特。完全设备故障的风险很小,这意味着来自元数据的系统特征能力的增大可以被认为是对设备内的瞬时多比特错误的罕见情况的合理权衡,这种罕见情况将导致错误无法校正。对于一些系统架构而言,RAS(reliability,accessibility,and serviceability,可靠性、可访问性和可服务性)要求使得这样的解决方案是不可接受的。
将会保留完全ECC能力并且提供额外的元数据比特的另一种解决方案是将额外的比特存储在隔绝存储器区域中。隔绝存储器在数据设备中为诸如元数据比特或ECC比特之类的系统比特保留了空间或容量。系统可以为ECC比特或者为元数据比特使用隔绝区域。
隔绝存储器以性能惩罚为代价来保留容量。有了用于ECC的隔绝存储器,64比特的ECC可被存储在DIMM上的一个冗余设备中(足以检测SDDC的错误,但不能校正它们),64比特的ECC可以分散在数据设备上的隔绝存储器空间或隔绝区域中,使另一个冗余设备中的64比特可用于元数据。错误检测可以用来自ECC设备的64比特来完成,并且响应于对错误的检测,系统可以取回隔绝的数据来执行错误校正。因此,如果没有检测到错误,则每个读取请求会导致一次读取,而在检测到错误的罕见情况下,会导致两次读取。然而,写入请求会导致数据的写入,以及隔绝的ECC数据的被读取修改的写入(read-modified-write,RMW),导致一次读取两次写入。
除了性能惩罚以外,隔绝存储器还可能导致容量惩罚。通过实质上隔绝出分散在八个数据设备上的一个额外冗余设备那么多的数据,高达大约1/8的存储器容量可被用在隔绝存储器中用于元数据。隔绝更少的存储器可能是可行的,但仍然会导致惩罚,即使容量惩罚减小了。
当分割线访问释放存储器容量来用作系统元数据时,所描述的分割线访问可以被称为“元数据的分割线访问”(split line access for metadata,SLAM)。元数据用途可包括可信域扩展(Trusted Domain Extension,TDX)、存储器内目录、两级存储器(two levelmemory,2LM)特征、或者其他元数据使用。元数据使用是指不是用户数据的数据容量的非ECC系统使用。
在一个示例中,可以在多个并行存储器资源上执行分割线访问。本文的描述一般描述了两个并行存储器资源的使用,实质上是将线访问在两个资源上分割成两半。分割线访问可以通过减少单个设备提供的比特的数目来减少SDDC所需的ECC比特的数目。例如,通过在两个不同的阶列(rank)上分割缓存线,用于存储缓存线的设备的数目加倍,从而将每个存储器设备的比特数目减半。
对于上面的DDR5示例,2阶列x4 DIMM可以对每个DRAM具有32比特。因此,对于SDDC,系统只需要校正32比特,这可以使所需要的ECC比特数目减半。在每个缓存线需要64比特ECC的情况下,将有64比特剩余来用作元数据比特。
因此,如果数据的正常部分的SDDC所需要的比特数目是N,那么数据的半部分或子部分的SDDC所需要的比特数目可以是(N-M)/2,其中M是一个数字,代表当数据分散在更多的存储器设备上时,相同水平的ECC的减少的比特要求。
图1是具有分割线访问控制的系统的示例的框图。系统100图示了与主机耦合的存储器。主机110代表主机计算系统。主机110包括主机硬件,例如处理器120和存储器控制器130。主机硬件还包括硬件互连和驱动器/接收器硬件,以提供主机110和存储器150之间的互连。存储器150包括与主机110耦合的并行存储器资源,资源152和资源154。存储器控制器130控制对存储器150的访问。
主机硬件支持在主机110上执行主机软件。主机软件可包括主机OS(操作系统)140。主机OS 140代表一软件平台,其他软件将在该平台下执行。主机OS 140提供控制来实现与硬件互连的对接以耦合到存储器设备160。
存储器150代表一硬件平台,它将一个或多个存储器设备连接到主机110。例如,存储器150可以是或者可以包括DIMM(双列直插式存储器模块)或多个DIMM,每个DIMM可包括多个存储器设备。存储器150可以提供路由和控制逻辑来控制主机110和存储器设备硬件之间的信令。
在执行期间,主机OS 140提供访问存储器的请求。这些请求可以直接来自主机OS软件,可以是通过API(application programming interface,应用编程接口)或供在主机OS 140下执行的程序请求存储器访问的其他机制的请求。响应于主机存储器访问请求,存储器控制器130将对存储器资源的基于主机的寻址映射到存储器150的物理地址位置。
在一个示例中,存储器控制器130包括ECC 132,它代表主机110中的错误逻辑,以检测和校正从存储器150读取的数据中的错误。ECC 132可以为写入数据生成校验比特,以发送至存储器150。然后ECC 132可以对传入的数据和来自存储器设备的ECC比特进行解码,以确定数据是否包括错误。对于可校正的错误(correctable error,CE),ECC 132可以在将数据返回给请求方代理——无论是主机OS 140还是在主机OS 140下执行的应用——之前校正数据中的错误。
SLAM控制134代表存储器控制器130中的逻辑,以提供对并行存储器资源中的一条或多条存储器线的分割线访问。在一个示例中,SLAM控制134使得能够对存储器150的选定区域动态应用分割线访问。
存储器150包括与资源154并行的资源152。在一个示例中,资源152和资源154代表存储器的不同阶列。在一个示例中,不同的阶列可以是多阶列DIMM的一部分。例如,2阶列DIMM可以用支持一个DRAM被作为两个不同部分进行访问的DRAM设备来实现。作为另一示例,存储器模块可包括多DRAM封装件以支持不同的阶列。在一个示例中,资源152和资源154代表不同的DIMM。在一个示例中,资源152和资源154代表存储器的另一个分区,例如按设备或存储体(bank),其中分割线访问可以提供所需ECC比特的减少。资源152可以被称为第一存储器资源,并且资源154可以被称为第二存储器资源,但名称是可以颠倒的。
资源152被图示为具有区域162,它可以代表存储器的一个区域或一条线。例如,区域162可以代表字线或缓存线。在一个示例中,区域162代表与字线不同的存储器划分。区域162包括ECC比特以为区域162的比特提供错误校正。
在一个示例中,系统100支持对分割线访问的选择性使用。因此,要用分割线访问来访问的存储器的区域可以按区域被选择,而整个资源不一定受到分割线访问。在一个示例中,资源152包括不用分割线访问来访问的区域162,以及用分割线访问来访问的区域172。区域172将与资源154的区域174配对,用于分割线访问。
通过分割线访问,存储器控制器130在并行资源中只存储一条线的比特的一个子部分。系统100只表示了两个并行资源,资源152和资源154。系统100可包括多于两个并行资源。在一个示例中,系统100可以把一条线分割成多于两路。将一条线分割成多于两路的逻辑层(logistic)可向系统中引入复杂性。不管添加的复杂性如何,对线进行分割以分散ECC覆盖可以用与本文所述类似的方式来完成。
本文的示例将主要集中在将一条线分割到两个并行资源上。在一个示例中,可以有多于两个并行资源,并且系统可以从多个可用资源中进行选择来选择分割对。
在一个示例中,区域172包括ECC和元数据(MD)。同样地,区域174包括ECC和元数据。区域172和区域174的组合用户数据可以等于区域162的用户数据的量,但区域172和区域174的组合ECC的量低于区域162的ECC。ECC的节省可以使得系统100能够提供区域172和区域174中图示的元数据。当该部分被分割到两个资源时,区域172和区域174的ECC和元数据的总组合将等于区域162中的ECC的量。
BIOS(基本输入/输出系统)112代表对系统100的启动控制。BIOS112在系统100最初被加电时控制系统100。处理器120可被配置为开始执行BIOS 112,BIOS 112然后可以指导处理器加载指令,这些指令将启动主机OS 140。BIOS 112可包括对主机110的配置,例如硬件初始化、配置设置、关于有多少存储器可用的信息、以及其他信息。在一个示例中,存储器控制器130和BIOS 112可以交换与存储器150中的将被用分割线访问来访问的区域有关的信息。
存储器控制器130的SLAM控制134可以代表控制逻辑,以提供分割线访问。该控制逻辑可包括在存储器控制器130的硬件资源上执行的逻辑。存储器控制器130是或者包括处理器或处理硬件来执行逻辑以管理对存储器150的访问。
在一个示例中,SLAM控制134确定分割对区域170的访问,该区域170代表可以与区域162相同的区域。不是将区域170完全存储在资源152中,而是区域170被图示为灰掉的。区域170可以被分散在资源152和资源154上的分割子区域所取代。区域172代表一个子区域,并且区域174代表另一个子区域。区域170将要求N个校验比特用于ECC,而区域172和区域174将各自要求某个较小数目的校验比特或ECC比特,这可被表示为N-M个比特。因此,对于区域170的总共M个元数据比特,每个区域可存储(N-M)/2个ECC比特和M/2个元数据比特。在一个示例中,M等于1/2N,但可以是N的不同分数。
图2是其中分割线访问允许为元数据选择性地释放ECC带宽的系统的示例的框图。DIMM 210代表不应用分割线访问的DIMM。DIMM 230代表实现分割线访问的DIMM。可以用SLAM控制220来控制DIMM 230,以使得能够在DIMM的不同阶列之间对线进行分割。DIMM 230可以是系统100的存储器150的示例。
DIMM 210代表阶列0和阶列1,其中阶列包括并行连接的X个设备(设备[0:(X-1)])。一般而言,存储器的阶列指的是共享使能信号的存储器设备,该使能信号使得设备对存储器访问命令并行作出响应。尽管共享使能或触发信号,但可以利用每设备可访问性(per-device accessibility,PDA)操作来访问阶列中的设备,这种操作选择单独的设备,例如用于配置。
DIMM 210的阶列0被图示为具有部分212,该部分可例如是存储在阶列0的设备[0:(X-1)]中的字线。在一个示例中,DIMM 210包括每个阶列的两个冗余设备,其中部分212在设备[0:(X-3)]中具有用户数据,并且在设备[(X-2):(X-1)]中具有ECC。就部分212而言,部分212的数据没有被存储在阶列1中。
在一个示例中,SLAM控制220使得DIMM 230将完整的数据部分存储为分散在阶列0和阶列1上的两个子部分。在DIMM 230中,部分232代表完整部分的一半,类似于DIMM 210的部分212。部分234代表该部分的另一半。因此,在部分232和部分234之间,有一个完整的数据部分。在一个示例中,基于DIMM 230的架构,将该部分分割在阶列0和阶列1上意味着可以用较少的ECC比特提供相同的ECC保护。因此,部分232包括设备[X-1]中的元数据(MD)比特,并且部分234包括设备[X-1]中的元数据(MD)比特。部分232中的设备[X-2]和部分234中的设备[X-2]的ECC比特足以实现与DIMM 210的设备[(X-2):(X-1)]的ECC比特相同的ECC保护水平。
在一个示例中,SLAM控制220可以明确地配置不同的存储器区域以使能或禁用分割线访问,从而仅在系统中需要时应用分割线访问。分割级别访问因此可以将性能影响限制在实现全设备错误校正、安全性和其他特征(例如,2LM)的区域。
考虑DDR DRAM设备的DIMM 230阶列的示例。SLAM控制220可以提供100%的SDDC,同时为要求元数据的服务器CPU提供全特征支持。分割线访问实现或设计的影响性能可被限制在使用元数据的区域。通过减少ECC所需要的比特的数目,分割线访问可以简单地用元数据比特替代ECC比特,或者用元数据带宽替代ECC带宽。因此,分割线访问可以减少或消除隔绝存储器所要求的额外存储器容量。
分割级别访问可以根据这样的原则进行操作:如果缓存线读取从每个存储器设备中取得的数据较少,那么校正设备故障所需的ECC比特的数目就会减少。在DDR5中,每次读取传统上从每个x4 DRAM设备取得64b的数据,其中8个DRAM被用来访问一个完整的512b缓存线。在具有分割线访问的DDR5中,在一个示例中,访问被分割到两倍那么多的DRAM上,其中16个DRAM被用来访问完整的512b数据,每个DRAM设备只提供32b的数据。在DRAM设备故障的情况下,只需要校正32b。为了校正32b,需要64b的ECC,而不是128b的ECC来校正64b故障。因此,系统可选择性地释放出64b来用作元数据,而不是将这些比特用于ECC。
将会理解,由于DDR总线上的“阶列切换”开销,在两个不同的阶列上分割数据可具有性能影响。选择性地用分割线访问来处理存储器区域的选项允许系统选择用于性能、安全性和系统特征的选项。可以通过不在并行资源之间分割数据来选择性能,但可能要求有较低的错误校正能力(较低的数据安全性),以便能够使用额外的系统特征。系统可以通过确保错误校正来选择数据安全性,这可能要通过将所有可用比特用于ECC而以系统特征为代价来实现,或者通过使用数据隔绝来使能完全ECC和系统特征而以安全性为代价来实现。可以通过使用隔绝或分割线访问而以性能为代价来选择系统特征,或者通过用元数据比特来替代ECC比特而以数据安全性为代价来选择系统特征。
在一个示例中,系统CPU(中央处理单元)或主机(通常通过存储器控制器)可以支持按存储器区域的分割线访问。在一个示例中,可以在运行时基于应用需求来动态地为存储器区域使能分割线访问。在一个示例中,OS(操作系统)在运行时动态地将未使用的存储器页分配到SLAM区域,并且在平台固件的协助下发起SLAM转变。在一个示例中,选择一存储器区域进行分割线访问将导致需要执行数据拷贝(在并行存储器资源之间分割数据)和ECC的重映射。在一个示例中,平台固件可以调用硬件流来为移动到分割线访问的区域执行数据拷贝和ECC重映射。在一个示例中,硬件流可以利用现有的CPU特征,从而基于现有服务器CPU系统中已经支持的特征来提供分割级别访问。
可以提到的服务器CPU系统的一个特征是ADDDC(自适应双数据设备校正),指的是在并行存储器资源之间共享数据以解决设备故障状况的架构。如本文所述的分割线访问可被认为具有与ADDDC类似的架构,并且可能可以重利用支持ADDDC的系统中的能力,以实现所描述的分割线访问。将会理解,ADDDC是对错误状况检测的错误管理响应,而分割线访问不是响应于错误检测而实现的,而是可被选择性地激活以使能系统特征。
ADDDC和分割线访问可以基于锁步数据分配或锁步配置或锁步合作的概念。锁步(lockstepping)传统上是指将错误校正数据分布在多个存储器资源上,以补偿一个存储器资源中的硬故障,该故障阻止了对共享内的故障存储器资源的确定性数据访问。由于数据的分布导致对于错误校正的ECC要求较低,所以锁步使得能够对硬故障进行补偿。分割线访问的锁步可以指在多个存储器资源上分布数据,以降低ECC要求,释放出比特来用于其他目的,而ADDDC对数据进行分布是因为在硬故障的情况下,比特不再可用。
图3是具有应用突发切分(burst chop)的分割线访问的系统的示例的框图。系统300代表根据系统100的示例的系统。系统300图示了根据所描述的分割线访问的任何示例的来自并行阶列的输出数据模式的示例。
阶列310代表一个阶列中的存储器设备,例如存储器模块上的设备,其中该阶列包括10个设备,标记为设备[0:9]。这些设备被图示为x4设备,这指的是与数据(DQ)总线的接口的信号线的数目。x4设备具有四条信号线,这些信号线在系统300中以16的突发长度输出数据。系统300代表了一种突发切分实现方式,其中只需要BL16的8个周期来交换数据。
如图所示,系统300以BL16或者16个单位间隔的突发长度来进行操作。每个设备对于每个单位间隔可以发送(对于读取操作)或接收(对于写入操作)4比特,每个设备每个操作或事务(无论是读取或写入)总共64比特。系统300具体图示了读取事务,其中设备的箭头代表信号线输出,并且突发顺序为从设备到控制器330的序列顺序。
不管比特的方向和突发顺序如何,一般而言,在一个示例中,在第一周期(突发周期0)期间,数据比特D[0:3]在数据总线上被传输,由数据312表示。对于第二周期(突发周期1),数据比特D[4:7]被传输,等等以此类推,直到突发周期7的数据比特D[28:31]为止。通常,阶列310的设备将继续提供数据,直到发送突发周期15的数据比特D[60:63]为止。在突发切分的情况下,在切分的突发周期BL[8:15]期间,没有数据被交换。
阶列320也代表一个阶列中的存储器设备,例如存储器模块上的设备,其中该阶列包括10个设备,标记为设备[0:9]。这些设备被图示为x4设备,具有BL16,其中阶列320用数据322实现突发切分。与阶列310的数据312类似,对于阶列320的数据322,在第一周期(突发周期0)期间,在数据总线上传输前四个比特的数据,接着是接下来的四个比特,等等以此类推,直到所有比特都被传送为止。
不是把数据322表示为突发周期0的数据比特D[0:3]、突发周期1的数据比特D[4:7]等等,数据322可被认为是数据312的第二部分。因此,对于突发周期0,数据322图示了数据比特D[32:35],在突发周期1期间,设备传送数据比特D[36:39],等等以此类推,直到突发周期7的数据比特D[60:63]为止。在突发切分的情况下,在切分的突发周期BL[8:15]期间,没有数据被交换。
将会理解,可以使用任何数据顺序。基于数据是被从控制器330发送到存储器设备,还是从存储器设备发送到控制器330,去到和来自阶列310以及去到和来自阶列320的比特顺序可被颠倒。对于不同系统中的不同数据量,可以使用不同的突发长度、不同的突发顺序、不同的数据总线接口(例如,x8或x16)。对于阶列310的数据设备和控制器330在数据总线上交换数据312,以及阶列320的数据设备和控制器330在数据总线上交换数据322,事务的原则将保持不变。
系统300图示了利用突发切分来访问每个阶列的两个一半缓存线。在一个示例中,存储器控制器对来自阶列310或其他存储器资源的数据的一半部分执行存储器访问,并且对来自阶列320或其他并行存储器资源的数据的另一半部分执行存储器访问。
突发切分模式对于存储器访问而言是低效的,会造成一些带宽损失。为了限制带宽损失,分割线访问的应用可被限制在需要元数据的存储器区域。在一个示例中,SLAM允许动态选择可以在SLAM模式或分割线访问模式(从两个阶列或其他并行存储器资源访问一个缓存线)或正常模式(从单个阶列或单个存储器资源访问一个缓存线)下访问的存储器区域。在一个示例中,系统可以应用优化的阶列周转,以便为突发切分模式允许更快的周转。更快的周转可以减小突发切分模式的性能影响。
系统300代表10x4模块配置的示例,指的是具有x4 DQ接口的10个存储器设备。在这样的配置中,通常设备[0:7]将是“数据”设备,并且设备[8:9]是“ECC”设备。数据设备是指用于读取或写入事务的实际用户数据。ECC设备是指存储校验比特或奇偶校验比特的设备,用于为数据比特解码ECC。在一个示例中,来自每个设备的64比特数据代表缓存线或字线或缓存线的一部分(例如,512比特缓存线的64比特)。因此,每个设备的整个比特集合代表了单条线或一条线的一部分的比特。
系统300将不同类型的数据图示为D0,D1,D2,...,用于设备[0:7]中的用户数据;P0,P1,P2,...,作为ECC比特或奇偶校验比特;以及M0,M1,M2,...,用于元数据比特。在系统300中,在一个示例中,阶列310的设备[8]的数据比特包括ECC比特P[0:31],并且阶列320的设备[8]的数据比特包括ECC比特P[32:63]。在一个示例中,阶列310的设备[9]的数据比特包括元数据比特M[0:31],并且阶列320的设备[9]的数据比特包括元数据比特M[32:63]。
系统300在控制器330中包括SLAM控制332,以代表系统300提供选择性分割线访问的能力。基于SLAM控制332,控制器330可以对某些数据只向一个阶列(阶列310或阶列320)提出访问请求,而对其他数据向两个阶列(阶列310和阶列320两者)都提出请求。当提出某些数据请求时,控制器330将通过突发切分知道这一半数据将来自每个阶列。控制器330将根据正在访问的数据来调度操作,无论是分割级别访问数据还是正常数据。
图4是用于双阶列10x4存储器模块的分割线访问的系统架构的示例的框图。系统400代表根据系统100的示例或者系统300的示例的系统。
DIMM 410具体图示了双阶列10x4实现方式的配置,每个阶列具有8个数据DRAM,DRAM[0:7],一个ECC DRAM,和一个元数据DRAM。所有的数据DRAM DRAM[0:7]、ECC DRAM和元数据DRAM被图示为具有x4接口,具有DQ[0:3]。在一个示例中,系统400可包括两个并行的单独DIMM,而不是一个两阶列DIMM。
在一个示例中,阶列0的DRAM连接到数据总线420,其中数据DRAM提供数据比特422,ECC DRAM提供ECC比特424,并且元数据DRAM提供元数据(MD)比特426。在一个示例中,阶列1的DRAM连接到数据总线430,其中数据DRAM提供数据比特432,ECC DRAM提供ECC比特434,并且元数据DRAM提供元数据(MD)比特436。
分割线数据428代表阶列0中的数据的一半部分,而分割线数据438代表阶列1中的数据的一半部分。控制器440代表主机设备的控制器,其控制对DIMM 410的存储器访问。错误控制442代表控制器440基于ECC比特对数据比特执行ECC的能力。对于在数据总线420上不被视为分割线数据的数据,错误控制442将基于存储在阶列0中的ECC来对数据比特执行ECC。对于在数据总线430上不是分割线数据的数据,错误控制442将基于存储在阶列1中的ECC来对数据比特执行ECC。在这两种情况下,阶列都将被单独处理。在这样的示例中,被识别为元数据DRAM的DRAM将为非分割线数据存储ECC数据。
在一个示例中,分割控制444确定将数据存储为两个阶列之间的分割数据,以释放ECC容量作为元数据。在一个示例中,分割控制444确定将阶列0的数据分割在阶列0和阶列1上。在一个示例中,分割控制444确定将阶列1的数据分割在阶列0和阶列1上。
图5是用于在并行存储器资源之间分割数据和错误校正的过程的示例的流程图。流程500代表根据本文的任何示例的向并行存储器资源应用分割线访问的过程的示例。过程500代表根据系统100、系统300和系统400可由存储器控制器执行的过程的示例。
在一个示例中,在502,控制器识别要用分割访问来控制的存储器部分,指的是在并行存储器资源上分割数据。在一个示例中,在504,控制器为所识别的部分执行分割存储器数据访问。在506,存储器数据访问可以是读取或写入。
对于写入访问,在506的写入分支,在一个示例中,在508,控制器为单独的子部分计算ECC。将为不同的子部分分开计算ECC的计算,并且ECC比特模式将不同于所有数据存储在一个存储器资源中而不是分散在多个资源上的ECC。当数据被分割在并行资源之间时,ECC比特更少。因此,对于分割数据访问,有可用的比特用于元数据。在一个示例中,在510,控制器为子部分生成元数据。在512,控制器可以用ECC数据和元数据来写入个体子部分。
对于读取访问,在506的读取分支,在一个示例中,在514,控制器读取期望数据的个体子部分,而不是从一个存储器资源中读取所有数据。在516,控制器为单独的子部分计算ECC。在一个示例中,在518,控制器为子部分解码元数据。
图6是应用矩阵来基于分割线ECC执行校验和校正的校验比特生成逻辑和征候比特生成逻辑的示例的框图。H矩阵610代表了由存储器控制器为系统ECC应用ECC的简化示例。
H矩阵610代表用于设备上ECC的代码矩阵的16比特的示例。将会理解,现代计算系统中的典型操作代码字包括多于16比特。然而,16比特H矩阵图示了ECC操作的原理,用于根据本文的任何示例在存储器上错误校验和校正中要使用的管芯上ECC,或者用于根据本文的任何示例由存储器控制器或错误控制进行的系统级ECC。
矩阵610可以是SEC汉明码的一部分,例如128比特代码字的汉明码。矩阵610只图示了16个代码,对于每个数据比特[15:0]有一个代码比特。在一个示例中,矩阵610的每一个代码都对应于一个数据比特。在图示的示例中,每个代码包括8个校验比特CB[0:7]。当从存储在存储器中的数据字和校验比特计算出征候时,ECC引擎可以确定该征候是否与矩阵610中的代码之一相对应。如果ECC引擎确定征候与代码之一相匹配,ECC引擎就会切换相应的数据比特以校正错误。图示了校验比特生成和征候比特生成的示例。
校验比特生成逻辑602代表执行ECC操作以生成校验比特的逻辑。征候比特生成逻辑604代表执行ECC操作以生成征候比特来与校验比特进行比较的逻辑。为了在图中图示的目的,只图示了与校验比特CB[0:2]有关的逻辑,并且相应地,只图示了征候比特SB[0:2]。
如图所示,征候可被完全编码在ECC逻辑中,用于校验比特生成和征候比特生成。在一个示例中,校验比特生成602包括异或门,以接收写入数据字620并且对代码的一比特执行异或操作。例如,关于图示的16个代码字比特的CB[0]的生成,比特D[10:0]都是一,而比特D[15:11]是零。因此,在一个示例中,CB[0]的计算包括通过异或622对代码字的比特D[10:0]进行异或操作。类似地,征候比特SB[0]的生成包括接收读取数据字630并且通过异或632对读取数据代码字的比特D[10:0]执行异或操作的逻辑。然后通过异或642将异或632的输出与CB[0]进行异或,以生成SB[0]。
将会理解,作为一个技术问题,真正异或操作只能对于两个输入存在,其中当且仅当输入之一为1时,输出为1。然而,通常的惯例是将异或操作的级联表示为多输入异或(意思是输入的数目大于2),例如用于CB[0]的异或622和用于SB[0]的异或632。异或操作具有交换性,并且多对输入的异或,然后这些操作的输出的串行异或,可以按任何顺序被互换,结果相同。因此,异或操作具有模2加法的实际效果,这也相当于奇数奇偶性检测。当在输入之中存在奇数个1时,奇数奇偶性检测提供“1”作为输出,而当输入之中存在偶数个1时,输出为0。
在另一个示例中,关于图示的16个代码字比特的CB[1]的生成,比特D[15:10]和D[4:1]是1,而比特D[9:5]和D[0]是0。异或624从1比特计算出CB[1]。类似地,对于CB[2]的生成,比特D[15:9]和D[2:0]是1,而比特D[8:3]是0。异或626从1比特计算出CB[2]。
征候比特生成604代表接收读取数据字630和校验比特字640并且通过CB计算与存储的校验比特的比较来生成征候比特的逻辑。类似地,关于图示的16个代码字比特的SB[1]的征候比特生成,异或634计算D[15:10]和D[4:1]的异或,然后异或644通过CB[1]与异或634的输出的异或来计算SB[1]。类似地,关于图示的16个代码字比特的SB[2]的征候比特生成,异或636计算D[15:9]和D[2:0]的异或,然后异或646通过CB[2]与异或636的输出的异或来计算SB[2]。
基于对校验比特和征候比特的确定,系统可以识别错误并且可能翻转比特,例如,对于被发现与征候比特相匹配的CB[7:0]的比特或列。ECS系统应用这种技术来对存储器地址执行清除。在一个示例中,系统应用ECC的错误检测来检测存储器错误,并且向存储器控制器提供错误信息,以允许存储器控制器检测错误模式并且根据本文的任何示例来调整错误清除操作。
图7是系统级错误校验和校正的示例的框图。系统700提供了根据本文的主机侧或存储器控制器ECC的任何示例的系统的系统级ECC电路的示例。主机710包括控制器714或者等同或替代的管理对存储器730的访问的逻辑或电路或组件。控制器714对从存储器730读取的数据执行外部ECC。在一个示例中,存储器730实现了管芯上ECC 734,以在通过总线732向主机710发送数据之前校验和校正来自阵列736的数据。
主机710包括处理器712,以执行将生成对存储在存储器730的阵列736中的数据的请求的操作。响应于写入数据的请求,控制器714可以通过写入路径720生成写入命令。对于读取请求,控制器714通过读取路径740接收读取数据。
写入路径720代表从处理器712写入到存储器730的数据的路径。处理器712提供数据722用于写入到存储器730。在一个示例中,控制器714用校验比特生成器724生成校验比特726,以与数据一起存储在存储器中。校验比特726可被称为ECC比特,并且使得能够对在写入到和读取自(一个或多个)存储器阵列时可能发生的错误进行错误校正。数据722和校验比特726可以作为代码字被包括在728中,它被写入到存储器730,通过数据总线732进入阵列736中。
读取路径740代表从存储器730读取到主机710的数据的路径。在一个示例中,写入路径720和读取路径740的至少某些硬件组件是相同的硬件。在一个示例中,存储器730响应于来自主机710的读取命令而取得数据。读取代码字742代表存储在阵列736中的数据和校验比特。数据744和校验比特746代表读取代码字742的数据和校验比特。读取代码字742代表由来自设备[0:(N-1)]的数据组成的代码字。在一个示例中,这些分别对应于在写入路径720中写入到读取命令的相同地址的数据722和校验比特726。
在一个示例中,写入代码字728被提供给多个并行资源,用于分割线访问。通过分割线访问,在一个示例中,控制器714可以生成元数据772。因此,写入代码字728可包括元数据772以保存到存储器730。在一个示例中,通过分割线访问,可包括元数据772,它可以与数据一起被提供给主机。在一个示例中,元数据可以绕过错误校正758。
读取路径740包括征候解码752,以对数据744和校验比特746应用H矩阵计算,以检测读取数据中的错误。征候解码752可以生成征候754,用于为读取数据生成适当的错误信息。数据744也可以被转发到错误校正758,以校正检测到的错误。
在一个示例中,征候解码752将征候754传递给征候生成器756以生成错误向量。在一个示例中,校验比特生成器724和征候生成器756完全由相应的H矩阵指定。在一个示例中,如果在读取数据中没有错误(例如,零征候754),则征候生成器756生成无错误信号762。在一个示例中,如果在读取数据中存在多个错误(例如,不与相应H矩阵中的任何列相匹配的非零征候754),则征候生成器756生成DUE(检测到未校正的错误)信号764。DUE信号764可以指示无法通过应用ECC来校正的多比特错误。
在一个示例中,如果存在单比特错误(例如,与相应的H矩阵的列之一相匹配的非零征候754),则征候生成器756可以生成具有错误位置的CE(已校正错误)信号760,这是给错误校正逻辑758的已校正错误指示。错误校正758可以将校正的错误应用于数据744中的指定位置,以生成校正的数据766,以便输出来提供给处理器712。
图8是其中可实现分割线存储器访问的存储器子系统的示例的框图。系统800包括计算设备中的存储器子系统的元素和处理器。系统800是根据系统100或系统300的示例的系统的示例。
在一个示例中,存储器设备840的控制器850包括ECC逻辑856。ECC逻辑856代表存储器设备840的管芯上ECC,以使能存储器中的错误校验和校正。在一个示例中,存储器控制器820包括错误控制828,它代表存储器控制器820内的逻辑,以根据本文的任何示例使得能够作出关于来自存储器的数据中的错误的确定。在一个示例中,错误控制828可以根据本文的任何描述执行ECC。在一个示例中,存储器控制器820包括分割控制(CTRL)892,以控制根据本文的任何示例利用分割线访问对作为并行资源的存储器设备840的访问。分割控制使得能够向多个资源提供数据,这释放了可被用作元数据而不是ECC数据的数据容量。在一个示例中,存储器阵列860包括分割数据890以表示根据本文的任何示例的分割数据。在一个示例中,存储器设备840包括突发切分862,以对分割访问数据执行突发切分。
处理器810代表计算平台的处理单元,该处理单元可以执行操作系统(OS)和应用,它们可以被统称为存储器的用户或主机。OS和应用执行导致存储器访问的操作。处理器810可包括一个或多个单独的处理器。每个单独的处理器可包括单个处理单元、多核处理单元、或者这些的组合。处理单元可以是主处理器,例如CPU(中央处理单元),外围处理器,例如GPU(图形处理单元),或者这些的组合。存储器访问也可以由诸如网络控制器或硬盘控制器之类的设备发起。这种设备在一些系统中可以与处理器集成,或者经由总线(例如,快速PCI)附接到处理器,或者这些的组合。系统800可以作为SOC(片上系统)来实现,或者用独立的组件来实现。
对存储器设备的提及可以适用于不同的存储器类型。存储器设备通常指的是易失性存储器技术。易失性存储器是在到设备的电力被中断的情况下其状态不确定(并且因此存储在其上的数据不确定)的存储器。非易失性存储器指的是即使在到设备的电力被中断的情况下其状态也是确定的存储器。动态易失性存储器要求刷新存储在设备中的数据以维持状态。动态易失性存储器的一个示例包括DRAM(动态随机存取存储器),或者某种变体,例如同步DRAM(SDRAM)。如本文所述的存储器子系统可以与多种存储器技术兼容,例如DDR4(双数据速率版本4,JESD79-4,最初由JEDEC(联合电子设备工程委员会,现在的JEDEC固态技术协会)于2012年9月发布),LPDDR4(低功率DDR版本4,JESD209-4,最初由JEDEC于2014年8月发布),WIO2(宽I/O 2(宽IO2),JESD229-2,最初由JEDEC于2014年8月发布),HBM(高带宽存储器DRAM,JESD235A,最初由JEDEC于2015年11月发布),DDR5(DDR版本5,最初由JEDEC于2020年7月发布),LPDDR5(LPDDR版本5,JESD209-5,最初由JEDEC于2019年2月发布),HBM2((HBM版本2),当前由JEDEC讨论中),或者其他存储器技术或存储器技术的组合,以及基于这种规范的衍生或扩展的技术。
除了易失性存储器以外,或者作为易失性存储器的替换,在一个示例中,存储器模块可以是持久性存储器DIMM或非易失性系统存储器,指的是连接到系统存储器总线的非易失性存储器。这样的存储器设备可包括三维交叉点(three dimensional crosspoint,3DXP)存储器设备。3DXP可以作为字节可寻址的非易失性存储器设备或者作为块可寻址的非易失性存储器设备来进行操作。存储器设备可包括非易失性的、字节可寻址的介质或者块可寻址的介质,它基于存储器单元的电阻状态或存储器单元的相位来存储数据。在一个示例中,存储器设备可以使用硫属化合物相变材料(例如,硫属化合物玻璃)。在一个示例中,系统存储器设备可以是或者可以包括NAND闪存、NOR闪存、单级或多级相变存储器(phase change memory,PCM)或者带开关的相变存储器(phase change memory withaswitch,PCMS)、电阻式存储器、纳米线存储器、铁电晶体管随机存取存储器(ferroelectric transistor random-access memory,FeTRAM)、结合了记忆体技术的磁阻随机存取存储器(magnetoresistive random-access memory,MRAM)存储器、或者自旋转移扭矩(spin transfer torque,STT)-MRAM,或者上述任何存储器的组合,或者其他存储器。
存储器控制器820代表系统800的一个或多个存储器控制器电路或设备。存储器控制器820代表控制逻辑,它响应于处理器810执行操作而生成存储器访问命令。存储器控制器820访问一个或多个存储器设备840。存储器设备840可以是根据上述任何提及的DRAM设备。在一个示例中,存储器设备840被组织和管理为不同的通道,其中每个通道耦合到总线和信号线,这些总线和信号线并行地耦合到多个存储器设备。每个通道是独立可操作的。因此,每个通道被独立访问和控制,并且对于每个通道,定时、数据传送、命令和地址交换以及其他操作都是单独的。耦合可以指电耦合、通信耦合、物理耦合,或者这些的组合。物理耦合可包括直接接触。电耦合包括允许组件之间的电气流动或者允许组件之间的信号传递或者两者兼有的接口或互连。通信耦合包括使得组件能够交换数据的连接,包括有线的或无线的。
在一个示例中,对于每个通道的设置是由单独的模式寄存器或其他寄存器设置来控制的。在一个示例中,每个存储器控制器820管理单独的存储器通道,但是系统800可被配置为由单个控制器管理多个通道,或者在单个通道上有多个控制器。在一个示例中,存储器控制器820是主机处理器810的一部分,例如与处理器在同一管芯上实现或者在同一封装空间中实现的逻辑。
存储器控制器820包括I/O接口逻辑822,以耦合到存储器总线,例如上文提及的存储器通道。I/O接口逻辑822(以及存储器设备840的I/O接口逻辑842)可包括引脚、焊盘、连接器、信号线、迹线或导线,或者用于连接设备的其他硬件,或者这些的组合。I/O接口逻辑822可包括硬件接口。如图所示,I/O接口逻辑822至少包括信号线的驱动器/收发器。通常,集成电路接口内的导线与焊盘、引脚或连接器耦合,以对接设备间的信号线或迹线或其他导线。I/O接口逻辑822可包括驱动器、接收器、收发器或端接,或者在设备之间的信号线上交换信号的其他电路或电路组合。信号的交换包括发送或接收中的至少一者。虽然被示为将I/O 822从存储器控制器820耦合到存储器设备840的I/O 842,但将会理解,在并行访问存储器设备840的群组的系统800的实现方式中,多个存储器设备可包括到存储器控制器820的相同接口的I/O接口。在包括一个或多个存储器模块870的系统800的实现方式中,除了存储器设备本身的接口硬件以外,I/O 842还可包括存储器模块的接口硬件。其他存储器控制器820将包括到其他存储器设备840的单独接口。
存储器控制器820和存储器设备840之间的总线可被实现为将存储器控制器820耦合到存储器设备840的多个信号线。总线通常可至少包括时钟(CLK)832,命令/地址(CMD)834,以及写入数据(DQ)和读取数据(DQ)836,以及零个或更多个其他信号线838。在一个示例中,存储器控制器820和存储器之间的总线或连接可被称为存储器总线。在一个示例中,存储器总线是多点分支总线。用于CMD的信号线可被称为“C/A总线”(或ADD/CMD总线,或者指示命令(C或CMD)和地址(A或ADD)信息的传送的某种其他名称),并且用于写入和读取DQ的信号线可被称为“数据总线”。在一个示例中,独立通道具有不同的时钟信号、C/A总线、数据总线和其他信号线。因此,在独立接口路径可被认为是单独总线的意义上,系统800可被认为具有多个“总线”。将会理解,除了明确示出的线路以外,总线还可包括选通信令线、警报线、辅助线或其他信号线中的至少一者,或者其组合。还将会理解,串行总线技术可被用于存储器控制器820和存储器设备840之间的连接。串行总线技术的一个示例允许控制器利用嵌入时钟在每个方向上在单个差分信号对上编码和传输高速数据。在一个示例中,CMD834代表与多个存储器设备并行共享的信号线。在一个示例中,多个存储器设备共享CMD834的编码命令信号线,并且每个设备具有单独的芯片选择(CS_n)信号线来选择个体存储器设备。
将会理解,在系统800的示例中,存储器控制器820和存储器设备840之间的总线包括附属命令总线CMD 834以及承载写入和读取数据的附属总线DQ 836。在一个示例中,数据总线可包括用于读取数据和用于写入/命令数据的双向线路。在另一个示例中,附属总线DQ836可包括用于从主机到存储器的写入和数据的单向写入信号线,并且可包括用于从存储器到主机的读取数据的单向线。根据所选择的存储器技术和系统设计,其他信号838可以伴随总线或子总线,例如选通线DQS。基于系统800的设计,或者如果一个设计支持多种实现方式则基于实现方式,数据总线对于每个存储器设备840可具有更大或更小的带宽。例如,数据总线可以支持具有x4接口、x8接口、x16接口或其他接口的存储器设备。惯例“xW”表示与存储器控制器820交换数据的信号线的数目,其中W是一个整数,指的是存储器设备840的接口的接口大小或宽度。存储器设备的接口大小是对于在系统800中每个通道可以同时使用多少个存储器设备或者向相同信号线并行耦合多少个存储器设备的一个控制因素。在一个示例中,高带宽存储器设备、宽接口设备、或者堆叠存储器配置、或者这些的组合,可以实现更宽的接口,例如x128接口、x256接口、x512接口、x1024接口,或者其他数据总线接口宽度。
在一个示例中,存储器设备840和存储器控制器820在数据总线上以突发或者连续数据传送序列的方式交换数据。该突发对应于传送周期的数目,该数目与总线频率有关。在一个示例中,对于发生在同一时钟或选通信号边缘(例如,在上升缘)上的传送,传送周期可以是整个时钟周期。在一个示例中,每个时钟周期,指的是系统时钟的一个周期,被分离成多个单位间隔(UI),其中每个UI是一个传送周期。例如,双数据速率传送在时钟信号的两个边缘(例如,上升和下降)上都触发。突发可以持续配置数目的UI,这可以是存储在寄存器中的配置,或者是即时触发的配置。例如,八个连续传送周期的序列可被认为是突发长度八(BL8),并且每个存储器设备840可以在每个UI上传送数据。因此,在BL8上操作的x8存储器设备可以传送64比特的数据(8条数据信号线乘以每条线在突发时传送的8个数据比特)。将会理解,这个简单的示例只是说明性的,并不是限制性的。
存储器设备840代表系统800的存储器资源。在一个示例中,每个存储器设备840是一个单独的存储器管芯。在一个示例中,每个存储器设备840可以与每个设备或管芯的多个(例如,2个)通道相对接。每个存储器设备840包括I/O接口逻辑842,其具有由设备的实现方式确定的带宽(例如,x16或x8或某个其他接口带宽)。I/O接口逻辑842使得存储器设备能够与存储器控制器820相对接。I/O接口逻辑842可包括硬件接口,并且可以按照存储器控制器的I/O 822,但在存储器设备端。在一个示例中,多个存储器设备840并行地连接到相同的命令和数据总线。在另一示例中,多个存储器设备840并行地连接到相同的命令总线,并且连接到不同的数据总线。例如,系统800可被配置有并行耦合的多个存储器设备840,其中每个存储器设备响应一个命令,并且访问每个设备内部的存储器资源860。对于写入操作,个体存储器设备840可以写入整体数据字的一部分,而对于读取操作,个体存储器设备840可以取得整体数据字的一部分。该字的剩余比特将由其他存储器设备并行提供或接收。
在一个示例中,存储器设备840被直接布置在计算设备的主板或主机系统平台(例如,布置有处理器810的PCB(印刷电路板))上。在一个示例中,存储器设备840可以被组织成存储器模块870。在一个示例中,存储器模块870代表双列直插式存储器模块(DIMM)。在一个示例中,存储器模块870代表多个存储器设备的其他组织,以共享访问或控制电路的至少一部分,该电路可以是来自主机系统平台的单独的电路、单独的设备或单独的板。存储器模块870可包括多个存储器设备840,并且存储器模块可包括对到配置在其上的所包括的存储器设备的多个单独通道的支持。在另一个示例中,存储器设备840可以被包含到与存储器控制器820相同的封装件中,例如通过诸如多芯片模块(multi-chip-module,MCM)、封装件堆叠、硅通孔(through-silicon via,TSV)或其他技术或组合之类的技术。类似地,在一个示例中,多个存储器设备840可以被包含到存储器模块870中,这些模块本身可以被包含到与存储器控制器820相同的封装件中。将会理解,对于这些和其他实现方式,存储器控制器820可以是主机处理器810的一部分。
每个存储器设备840包括一个或多个存储器阵列860。存储器阵列860代表数据的可寻址存储器位置或存储位置。通常,存储器阵列860被管理为数据的行,经由字线(行)和位线(行内的个体比特)控制来访问这些行。存储器阵列860可被组织为存储器的单独通道(channel)、阶列(rank)和存储体(bank)。通道可以指到存储器设备840内的存储位置的独立控制路径。阶列可以指并行的多个存储器设备(例如,不同设备内的相同行地址)上的共同位置。存储体可以指存储器设备840内的存储器位置的子阵列。在一个示例中,存储器的存储体被划分为子存储体,对于子存储体有至少一部分的共享电路(例如,驱动器、信号线、控制逻辑),从而允许单独的寻址和访问。将会理解,通道、阶列、存储体、子存储体、存储体群组或者存储器位置的其他组织,以及这些组织的组合,在其应用于物理资源时可以重叠。例如,相同的物理存储器位置可以作为特定的存储体通过特定的通道被访问,该特定存储体也可属于某个阶列。因此,将以包容而非排斥的方式来理解存储器资源的组织。
在一个示例中,存储器设备840包括一个或多个寄存器844。寄存器844代表一个或多个存储设备或存储位置,它们为存储器设备的操作提供配置或设置。在一个示例中,寄存器844可以为存储器设备840提供存储位置,以存储数据供存储器控制器820作为控制或管理操作的一部分而访问。在一个示例中,寄存器844包括一个或多个模式寄存器。在一个示例中,寄存器844包括一个或多个多用途寄存器。寄存器844内的位置的配置可以将存储器设备840配置为在不同的“模式”下操作,其中命令信息可以基于模式来触发存储器设备840内的不同操作。额外地或者替换地,不同的模式也可以依据模式而从地址信息或其他信号线来触发不同的操作。寄存器844的设置可以指示I/O设置的配置(例如,定时、端接或ODT(on-die termination,管芯上端接)846、驱动器配置、或者其他I/O设置)。
在一个示例中,存储器设备840包括ODT 846作为与I/O 842相关联的接口硬件的一部分。ODT 846可以如上所述那样被配置,并且提供对于要被应用于到指定信号线的接口的阻抗的设置。在一个示例中,ODT 846被应用于DQ信号线。在一个示例中,ODT 846被应用于命令信号线。在一个示例中,ODT 846被应用于地址信号线。在一个示例中,ODT 846可被应用于前述的任何组合。ODT设置可以基于存储器设备是访问操作的选定目标还是非目标设备而被改变。ODT 846设置可以影响端接的线上的信令的定时和反射。对ODT 846进行仔细控制可以实现更高速的操作,改善所应用的阻抗和负载的匹配。ODT 846可被应用于I/O接口842、822的特定信号线(例如,DQ线的ODT或CA线的ODT),而不一定被应用于所有信号线。
存储器设备840包括控制器850,它代表存储器设备内的控制逻辑,以控制存储器设备内的内部操作。例如,控制器850对由存储器控制器820发送的命令进行解码并且生成内部操作以执行或满足命令。控制器850可被称为内部控制器,并且与主机的存储器控制器820分离。控制器850可以基于寄存器844来确定选择什么模式,并且基于所选模式来配置访问存储器资源860的操作或其他操作的内部执行。控制器850生成控制信号来控制存储器设备840内的比特的路由,以便为所选模式提供适当的接口,并且将命令引导到适当的存储器位置或地址。控制器850包括命令逻辑852,它可以对在命令和地址信号线上接收到的命令编码进行解码。因此,命令逻辑852可以是或者可以包括命令解码器。通过命令逻辑852,存储器设备可以识别命令并且生成内部操作以执行所请求的命令。
再次参考存储器控制器820,存储器控制器820包括命令(CMD)逻辑824,它代表生成命令以发送到存储器设备840的逻辑或电路。命令的生成可以指在调度之前的命令,或者准备好被发送的排队命令的准备。一般而言,存储器子系统中的信令包括命令内或伴随命令的地址信息,以指示或选择存储器设备应当执行命令的一个或多个存储器位置。响应于对存储器设备840的事务的调度,存储器控制器820可以经由I/O 822发出命令,以使得存储器设备840执行命令。在一个示例中,存储器设备840的控制器850接收和解码经由I/O 842从存储器控制器820接收到的命令和地址信息。基于接收到的命令和地址信息,控制器850可以控制存储器设备840内的逻辑和电路的操作的定时,以执行命令。控制器850负责遵守存储器设备840内的标准或规范,例如定时和信令要求。存储器控制器820可以通过访问调度和控制来实现对标准或规范的遵守。
存储器控制器820包括调度器830,该调度器代表生成和排序事务以发送至存储器设备840的逻辑或电路。从一个角度看,存储器控制器820的主要功能可以说是调度存储器访问和其他事务到存储器设备840。这种调度可包括生成事务本身,以实现处理器810对数据的请求,并且维持数据的完好性(例如,与刷新有关的命令)。事务可包括一个或多个命令,并且导致在一个或多个定时周期(例如,时钟周期或单位间隔)上传送命令或数据或这两者。事务可用于访问,例如读取或写入或相关命令或组合,并且其他事务可包括用于配置、设置、数据完好性或其他命令或组合的存储器管理命令。
存储器控制器820通常包括诸如调度器830之类的逻辑,以允许对事务进行选择和排序来改善系统800的性能。因此,存储器控制器820可以选择哪些未完成的事务应当以何种顺序被发送到存储器设备840,这通常是用比简单的先进先出算法复杂得多的逻辑来实现的。存储器控制器820管理事务向存储器设备840的传输,并且管理与事务相关联的定时。在一个示例中,事务具有确定性的定时,这可以由存储器控制器820管理,并且被用于确定如何用调度器830来调度事务。
在一个示例中,存储器控制器820包括刷新(REF)逻辑826。刷新逻辑826可被用于易失性的并且需要被刷新以保持确定性状态的存储器资源。在一个示例中,刷新逻辑826指示刷新的位置,以及要执行的刷新的类型。刷新逻辑826可以在存储器设备840内触发自刷新,或者通过发送刷新命令来执行外部刷新(这可被称为自动刷新命令),或者这些的组合。在一个示例中,存储器设备840内的控制器850包括刷新逻辑854以在存储器设备840内应用刷新。在一个示例中,刷新逻辑854生成内部操作以根据从存储器控制器820接收到的外部刷新来执行刷新。刷新逻辑854可以确定刷新是否指向存储器设备840,以及响应于该命令要刷新哪些存储器资源860。
图9是其中可实现分割线存储器访问的计算系统的示例的框图。系统900代表根据本文的任何示例的计算设备,并且可以是膝上型计算机、桌面型计算机、平板计算机、服务器、游戏或娱乐控制系统、嵌入式计算设备、或者其他电子设备。系统900代表根据系统100或系统300的示例的系统。
在一个示例中,存储器控制器922包括分割控制992,以控制根据本文的任何示例利用分割线访问对作为并行资源的存储器930的访问。根据本文的任何示例,分割控制使得能够向多个资源提供数据,这释放了可被用作元数据而不是ECC数据的数据容量。在一个示例中,存储器930包括分割数据938以表示根据本文的任何示例的分割数据。
系统900包括处理器910,该处理器可包括任何类型的微处理器、中央处理单元(central processing unit,CPU)、图形处理单元(graphics processing unit,GPU)、处理核心、或者其他处理硬件、或者这些的组合,以为系统900提供指令的处理或执行。处理器910可以是主机处理器设备。处理器910控制系统900的整体操作,并且可以是或者可以包括一个或多个可编程通用或专用微处理器、数字信号处理器(digital signal processor,DSP)、可编程控制器、专用集成电路(application specific integrated circuit,ASIC)、可编程逻辑器件(programmable logic device,PLD)、或者这种设备的组合。
系统900包括引导/配置916,它表示存储引导代码(例如,基本输入/输出系统(basic input/output system,BIOS))、配置设置的存储装置,安全性硬件(例如,可信平台模块(trusted platform module,TPM)),或者在主机OS之外操作的其他系统级硬件。引导/配置916可包括非易失性存储设备,例如只读存储器(read-only memory,ROM)、闪存、或其他存储器设备。
在一个示例中,系统900包括与处理器910耦合的接口912,它可以代表更高速度的接口或者高吞吐量接口,用于需要更高带宽连接的系统组件,例如存储器子系统920或图形接口组件940。接口912代表接口电路,它可以是独立的组件,或者可被集成到处理器管芯上。接口912可以作为电路被集成到处理器管芯上,或者作为组件被集成在片上系统上。如果存在,则图形接口940与图形组件相对接,用于向系统900的用户提供视觉显示。图形接口940可以是独立的组件,或者被集成到处理器管芯或片上系统上。在一个示例中,图形接口940可以驱动向用户提供输出的高清晰度(high definition,HD)显示器或超高清(ultrahigh definition,UHD)显示器。在一个示例中,显示器可包括触摸屏显示器。在一个示例中,图形接口940基于存储在存储器930中的数据或基于由处理器910执行的操作或这两者而生成显示。
存储器子系统920代表系统900的主存储器,并且为将由处理器910执行的代码或者在执行例程时将要使用的数据值提供存储装置。存储器子系统920可包括一个或多个种类的随机存取存储器(RAM)(例如,DRAM)、3DXP(三维交叉点)、或者其他存储器设备、或者这种设备的组合。存储器930存储和托管——除其他外——操作系统(OS)932,以为系统900中的指令的执行提供软件平台。此外,应用934可以在存储器930中的OS 932的软件平台上执行。应用934代表具有其自己的操作逻辑的程序,以执行一个或多个功能的执行。进程936代表向OS 932或一个或多个应用934或者其组合提供辅助功能的代理或例程。OS 932、应用934和进程936提供软件逻辑以为系统900提供功能。在一个示例中,存储器子系统920包括存储器控制器922,它是用于生成和发出命令给存储器930的存储器控制器。将会理解,存储器控制器922可以是处理器910的物理部分或者接口912的物理部分。例如,存储器控制器922可以是集成的存储器控制器,与处理器910一起被集成到电路上,例如被集成到处理器管芯或片上系统上。
虽然没有具体图示,但将会理解,系统900可包括设备之间的一个或多个总线或总线系统,例如存储器总线、图形总线、接口总线或者其他总线。总线或其他信号线可以将组件通信地或电气地耦合在一起,或者同时将组件通信地且电气地耦合。总线可包括物理通信线路、点到点连接、桥接器、适配器、控制器、或者其他电路或者这些的组合。总线可包括例如以下各项中的一个或多个:系统总线、外围组件互连(Peripheral ComponentInterconnect,PCI)总线、超传输或工业标准架构(industry standard architecture,ISA)总线、小型计算机系统接口(small computer system interface,SCSI)总线、通用串行总线(universal serial bus,USB)、或者其他总线、或者这些的组合。
在一个示例中,系统900包括接口914,它可以耦合到接口912。接口914可以是比接口912更低速度的接口。在一个示例中,接口914代表接口电路,它可包括独立的组件和集成电路。在一个示例中,多个用户接口组件或外围组件或者这两者耦合到接口914。网络接口950向系统900提供通过一个或多个网络与远程设备(例如,服务器或其他计算设备)通信的能力。网络接口950可包括以太网适配器、无线互连组件、蜂窝网络互连组件、USB(通用串行总线)、或者其他基于有线或无线标准的或专有的接口。网络接口950可以与远程设备交换数据,这可包括发送存储在存储器中的数据或者接收要存储在存储器中的数据。
在一个示例中,系统900包括一个或多个输入/输出(I/O)接口960。I/O接口960可包括一个或多个接口组件,用户通过这些接口组件与系统900进行交互(例如,音频、字母数字、触觉/触摸或者其他接口)。外围接口970可包括上文没有具体提到的任何硬件接口。外设一般是指依赖性地连接到系统900的设备。依赖性连接是指这样的连接:系统900提供软件平台或硬件平台或者这两者,操作在该平台上执行,并且用户与该平台进行交互。
在一个示例中,系统900包括存储子系统980,来以非易失性方式存储数据。在一个示例中,在某些系统实现方式中,存储装置980的至少某些组件可以与存储器子系统920的组件重叠。存储子系统980包括(一个或多个)存储设备984,其可以是或者可以包括用于以非易失性方式存储大量数据的任何传统介质,例如一个或多个磁性的、固态的、NAND、3DXP或者基于光学的盘,或者这些的组合。存储装置984以持久的状态保存代码或指令和数据986(即,尽管到系统900的电力中断,该值仍被保留)。存储装置984可以被笼统地认为是“存储器”,虽然存储器930通常是执行或操作存储器,以提供指令给处理器910。存储装置984是非易失性的,而存储器930可包括易失性存储器(即,如果到系统900的电力被中断,则数据的值或状态是不确定的)。在一个示例中,存储子系统980包括控制器982来与存储装置984相对接。在一个示例中,控制器982是接口914或处理器910的物理部分,或者可包括处理器910和接口914两者中的电路或逻辑。
电源902向系统900的组件提供电力。更具体而言,电源902通常与系统900中的一个或多个电力供应源904相对接,以向系统900的组件提供电力。在一个示例中,电力供应源904包括AC到DC(交流电到直流电)适配器,以插入到壁式插座中。这种AC电力可以是可再生能量(例如,太阳能)电源902。在一个示例中,电源902包括DC电源,例如外部AC到DC转换器。在一个示例中,电源902或电力供应源904包括无线充电硬件,以经由接近充电场来充电。在一个示例中,电源902可包括内部电池或燃料电池源。
图10是其中可实现分割线存储器访问的移动设备的示例的框图。系统1000代表移动计算设备,例如计算平板电脑、移动电话或智能电话、可穿戴计算设备、或者其他移动设备、或者嵌入式计算设备。将会理解,某些组件被概括示出,并且在系统1000中没有示出这种设备的所有组件。系统1000代表根据系统100或系统300的示例的系统。
在一个示例中,存储器控制器1064包括分割控制1092,以控制根据本文的任何示例利用分割线访问对作为并行资源的存储器1062的访问。根据本文的任何示例,分割控制使得能够向多个资源提供数据,这释放了可被用作元数据而不是ECC数据的数据容量。在一个示例中,存储器1062包括分割数据1094以表示根据本文的任何示例的分割数据。
系统1000包括处理器1010,它执行系统1000的主要处理操作。处理器1010可以是主机处理器设备。处理器1010可包括一个或多个物理设备,例如微处理器、应用处理器、微控制器、可编程逻辑器件、或者其他处理装置。处理器1010执行的处理操作包括对其上执行应用和设备功能的操作平台或操作系统的执行。处理操作包括关于与人类用户或与其他设备的I/O(输入/输出)的操作、关于功率管理的操作、关于将系统1000连接到另一设备的操作,或者这些的组合。处理操作还可包括与音频I/O、显示I/O或其他接口有关的操作,或者这些的组合。处理器1010可以执行存储在存储器中的数据。处理器1010可以写入或编辑存储在存储器中的数据。
在一个示例中,系统1000包括一个或多个传感器1012。传感器1012代表嵌入式传感器或与外部传感器的接口,或者这些的组合。传感器1012使得系统1000能够监视或检测其中实现系统1000的环境或设备的一个或多个条件。传感器1012可包括环境传感器(例如,温度传感器、运动检测器、光检测器、相机、化学传感器(例如,一氧化碳、二氧化碳或其他化学传感器))、压力传感器、加速度计、陀螺仪、医疗或生理学传感器(例如,生物传感器、心率监视器、或者其他检测生理属性的传感器)、或者其他传感器、或者这些的组合。传感器1012还可包括用于生物识别系统的传感器,例如指纹识别系统、面部检测或识别系统、或者检测或识别用户特征的其他系统。传感器1012应当被广泛地理解,而不是对可以结合系统1000实现的许多不同类型的传感器进行限制。在一个示例中,一个或多个传感器1012经由与处理器1010集成的前端电路耦合到处理器1010。在一个示例中,一个或多个传感器1012经由系统1000的另一组件耦合到处理器1010。
在一个示例中,系统1000包括音频子系统1020,该音频子系统代表与向计算设备提供音频功能相关联的硬件(例如,音频硬件和音频电路)和软件(例如,驱动器、编解码器)组件。音频功能可包括扬声器或耳机输出,以及麦克风输入。用于这种功能的设备可被集成到系统1000中,或者连接到系统1000。在一个示例中,用户通过提供被处理器1010接收和处理的音频命令来与系统1000交互。
显示子系统1030代表提供视觉显示来呈现给用户的硬件(例如,显示设备)和软件组件(例如,驱动器)。在一个示例中,显示器包括触觉组件或触摸屏元件,以便用户与计算设备进行交互。显示子系统1030包括显示接口1032,该显示接口包括用于向用户提供显示器的特定屏幕或硬件设备。在一个示例中,显示接口1032包括与处理器1010(例如,图形处理器)分离的、执行与显示器有关的至少一些处理的逻辑。在一个示例中,显示子系统1030包括向用户提供输出和输入两者的触摸屏设备。在一个示例中,图形子系统1030包括向用户提供输出的高清晰度(HD)或超高清(UHD)显示器。在一个示例中,显示子系统包括或驱动触摸屏显示器。在一个示例中,显示子系统1030基于存储在存储器中的数据或者基于由处理器1010执行的操作或者这两者而生成显示信息。
I/O控制器1040代表关于与用户的交互的硬件设备和软件组件。I/O控制器1040可进行操作来管理作为音频子系统1020和/或显示子系统1030或者这两者的一部分的硬件。此外,I/O控制器1040例示了用于连接到系统1000的附加设备的连接点,通过这些附加设备用户可以与系统进行交互。例如,可被附接到系统1000的设备可包括麦克风设备、扬声器或立体声系统、视频系统或其他显示设备、键盘或小键盘设备、按钮/开关、或者用于特定应用的其他I/O设备,例如读卡器或其他设备。
如上所述,I/O控制器1040可与音频子系统1020和/或显示子系统1030或者这两者进行交互。例如,通过麦克风或其他音频设备的输入可以为系统1000的一个或多个应用或功能提供输入或命令。此外,取代显示输出,或者除了显示输出以外,可提供音频输出。在另一示例中,如果显示子系统包括触摸屏,则显示设备也充当输入设备,这可至少部分由I/O控制器1040来管理。在系统1000上也可以有额外的按钮或开关来提供由I/O控制器1040管理的I/O功能。
在一个示例中,I/O控制器1040管理诸如加速度计、相机、光传感器或其他环境传感器、陀螺仪、全球定位系统(global positioning system,GPS)之类的设备,或者可被包括在系统1000或传感器1012中的其他硬件。输入可以是直接用户交互的一部分,以及向系统提供环境输入以影响其操作(例如,对噪声的过滤,调整显示器以进行亮度检测,对相机应用闪光灯,或者其他特征)。
在一个示例中,系统1000包括电力管理1050,其管理电池电力使用、电池的充电、以及与节电操作有关的特征。电力管理1050管理来自电源1052的电力,该电源向系统1000的组件提供电力。在一个示例中,电源1052包括AC到DC(交流电到直流电)适配器,以插入到壁式插座中。这种AC电力可以是可再生能量(例如,太阳能、基于运动的电力)。在一个示例中,电源1052包括仅DC电力,这可由DC电源提供,例如外部AC到DC转换器。在一个示例中,电源1052包括无线充电硬件,以经由接近充电场来充电。在一个示例中,电源1052可包括内部电池或燃料电池源。
存储器子系统1060包括用于存储系统1000中的信息的(一个或多个)存储器设备1062。存储器子系统1060可包括非易失性存储器设备(如果到存储器设备的电力被中断,则状态不会变化)或者易失性存储器设备(如果到存储器设备的电力被中断,则状态不确定),或者这些的组合。存储器1060可存储应用数据、用户数据、音乐、照片、文档或其他数据,以及与系统1000的应用和功能的执行有关的系统数据(无论是长期的还是暂时的)。在一个示例中,存储器子系统1060包括存储器控制器1064(它也可以被认为是系统1000的控制的一部分,并且有可能被认为是处理器1010的一部分)。存储器控制器1064包括调度器,用于生成和发出命令,以控制对存储器设备1062的访问。
连通性1070包括硬件设备(例如,无线或有线连接器和通信硬件,或者有线和无线硬件的组合)和软件组件(例如,驱动器、协议栈)来使得系统1000能够与外部设备进行通信。外部设备可以是分开的设备,例如其他计算设备、无线接入点或基站,以及诸如耳麦、打印机或其他设备之类的外设。在一个示例中,系统1000与外部设备交换数据以存储在存储器中或显示在显示设备上。交换的数据可包括要存储在存储器中的数据,或者已经存储在存储器中的数据,以读取、写入或编辑数据。
连通性1070可包括多种不同类型的连通性。概括而言,系统1000被图示为具有蜂窝连通性1072和无线连通性1074。蜂窝连通性1072一般指的是由无线运营商提供的蜂窝网络连通性,例如经由GSM(global system for mobile communications,全球移动通信系统)或变体或衍生、CDMA(code division multiple access,码分多址接入)或变体或衍生、TDM(time division multiplexing,时分复用)或变体或衍生、LTE(长期演进—也称为“4G”)、5G或者其他蜂窝服务标准提供。无线连通性1074指的是非蜂窝的无线连通性,并且可包括个人区域网(例如,蓝牙)、局域网(例如,WiFi)或者广域网(例如,WiMax),或者其他无线通信,或者这些的组合。无线通信是指通过使用经调制的电磁辐射、通过非固体介质进行数据传送。有线通信是通过固体通信介质发生的。
外围连接1080包括硬件接口和连接器,以及软件组件(例如,驱动器、协议栈)来进行外围连接。将会理解,系统1000既可以是其他计算设备的外围设备(“去往”1082),也可以有外围设备连接到它(“来自”1084)。系统1000通常具有“对接(docking)”连接器来连接到其他计算设备,以便例如管理(例如,下载、上传、改变、同步)系统1000上的内容。此外,对接连接器可允许系统1000连接到某些外设,这些外设允许系统1000控制例如到视听或其他系统的内容输出。
除了专属对接连接器或其他专属连接硬件以外,系统1000还可经由常见的或者基于标准的连接器来进行外围连接1080。常见类型可包括通用串行总线(USB)连接器(其可包括若干种不同硬件接口中的任何一种)、包括微型显示端口(MiniDisplayPort,MDP)的显示端口,高清晰度多媒体接口(High Definition Multimedia Interface,HDMI)、或者其他类型。
图11是其中可实现分割线存储器访问的多节点网络的示例的框图。系统1100代表可以应用自适应ECC的节点的网络。在一个示例中,系统1100代表数据中心。在一个示例中,系统1100代表服务器场。在一个示例中,系统1100代表数据云或处理云。
系统1100的节点1130代表根据系统100或系统300的示例的系统。节点1130包括存储器1140。节点1130包括控制器1142,它代表存储器控制器,以管理对存储器1140的访问。在一个示例中,控制器1142包括分割控制(CTRL)1144,以控制根据本文的任何示例利用分割线访问对作为并行资源的存储器1140的访问。根据本文的任何示例,分割控制使得能够向多个资源提供数据,这释放了可被用作元数据而不是ECC数据的数据容量。在一个示例中,存储器1140包括分割数据1146以表示根据本文的任何示例的分割数据。
一个或多个客户端1102通过网络1104向系统1100发出请求。网络1104代表一个或多个本地网络,或者广域网,或者这些的组合。客户端1102可以是人类或机器客户端,它们生成对系统1100执行操作的请求。系统1100执行由客户端1102请求的应用或数据计算任务。
在一个示例中,系统1100包括一个或多个机架,其代表结构和互连资源,以容纳和互连多个计算节点。在一个示例中,机架1110包括多个节点1130。在一个示例中,机架1110托管多个刀片组件1120。托管指的是提供电力、结构或机械支持,以及互连。刀片(blade)1120可以指印刷电路板(PCB)上的计算资源,其中PCB容纳一个或多个节点1130的硬件组件。在一个示例中,刀片1120不包括除机架1110提供的以外的机箱或外壳或其他“盒子”。在一个示例中,刀片1120包括带有暴露的连接器以连接到机架1110中的外壳。在一个示例中,系统1100不包括机架1110,并且每个刀片1120包括可堆叠或以其他方式驻留在其他刀片附近并且允许节点1130的互连的机箱或外壳。
系统1100包括结构1170,它代表节点1130的一个或多个互连器。在一个示例中,结构1170包括多个交换机1172或路由器或其他硬件,以在节点1130之间路由信号。此外,结构1170可以将系统1100耦合到网络1104,以供客户端1102访问。除了路由设备以外,结构1170可被认为包括将节点1130耦合在一起的线缆或端口或其他硬件设备。在一个示例中,结构1170具有一个或多个关联的协议来管理通过系统1100的信号的路由。在一个示例中,该一个或多个协议至少部分取决于系统1100中使用的硬件设备。
如图所示,机架1110包括N个刀片1120。在一个示例中,除了机架1110之外,系统1100还包括机架1150。如图所示,机架1150包括M个刀片1160。M不一定与N相同;因此,将会理解,可以使用各种不同的硬件设备组件,并且通过结构1170将它们一起耦合到系统1100中。刀片1160可以与刀片1120相同或相似。节点1130可以是任何类型的节点,并且不一定都是相同类型的节点。系统1100不限于是同构的,也不限于不是同构的。
为简单起见,仅对刀片1120[0]中的节点进行详细图示。然而,系统1100中的其他节点可以是相同或相似的。至少一些节点1130是计算节点,具有处理器(proc)1132和存储器1140。计算节点指的是具有处理资源(例如,一个或多个处理器)的节点,该节点执行操作系统并且可以接收和处理一个或多个任务。在一个示例中,至少一些节点1130是服务器节点,具有作为由处理器1132和存储器1140表示的处理资源的服务器。存储服务器指的是具有比计算节点更多的存储资源的节点,并且不是具有用于任务执行的处理器,存储服务器包括处理资源来管理对存储服务器内的存储节点的访问。
在一个示例中,节点1130包括接口控制器1134,它代表控制节点1130对结构1170的访问的逻辑。该逻辑可包括硬件资源,以与物理互连硬件进行互连。该逻辑可包括软件或固件逻辑来管理互连。在一个示例中,接口控制器1134是或者包括主机结构接口,它可以是根据本文描述的任何示例的结构接口。
处理器1132可包括一个或多个单独的处理器。每个单独的处理器可包括单个处理单元、多核处理单元、或者这些的组合。处理单元可以是主处理器,例如CPU(中央处理单元),外围处理器,例如GPU(图形处理单元),或者这些的组合。存储器1140可以是或者可以包括存储器设备和存储器控制器。
一般而言,关于本文的描述,在一个示例中,一种存储器控制器包括:硬件输入/输出(I/O)接口,用于耦合到多个存储器资源,所述多个存储器资源包括第一存储器资源和第二存储器资源;以及控制逻辑,用于将来自所述第一存储器资源的数据部分分布为所述第一存储器资源中的第一一半部分和所述第二存储器资源中的第二一半部分,所述数据部分包括N个错误校验和校正(ECC)比特以对所述数据部分提供错误校正,其中,所述第一一半部分和所述第二一半部分各自包括(N-M)/2个ECC比特以对这些一半部分提供错误校正;其中,所述控制逻辑用于在所述第一一半部分和所述第二一半部分之间分布M个非ECC比特。
在所述存储器控制器的一个示例中,所述数据部分包括字线。根据所述存储器控制器的任何在前示例,在一个示例中,所述控制逻辑利用对所述第一存储器资源的数据的突发切分来执行对所述第一一半部分的访问,并且利用对所述第二存储器资源的数据的突发切分来执行对所述第二一半部分的访问。根据所述存储器控制器的任何在前示例,在一个示例中,所述第一存储器资源包括第一阶列,并且所述第二存储器资源包括第二阶列。根据所述存储器控制器的任何在前示例,在一个示例中,所述第一存储器资源包括第一双列直插式存储器模块(DIMM),并且所述第二存储器资源包括第二DIMM。根据所述存储器控制器的任何在前示例,在一个示例中,所述多个存储器资源包括10x4动态随机存取存储器(DRAM)设备。根据所述存储器控制器的任何在前示例,在一个示例中,N等于2*M。根据所述存储器控制器的任何在前示例,在一个示例中,N等于64个ECC比特以为512个数据比特提供错误校正,并且其中,M等于32个数据比特以为256个数据比特提供错误校正。根据所述存储器控制器的任何在前示例,在一个示例中,所述M个非ECC比特包括元数据比特。根据所述存储器控制器的任何在前示例,在一个示例中,所述M个元数据比特包括两级存储器(2LM)比特、可信域扩展(TDX)比特、或者存储器内目录比特。根据所述存储器控制器的任何在前示例,在一个示例中,所述N个ECC比特用于为所述数据部分提供单设备数据校正(SDDC),并且其中,所述(N-M)/2个ECC比特用于为数据的一半部分提供SDDC。根据所述存储器控制器的任何在前示例,在一个示例中,所述存储器资源包括根据双数据速率版本5(DDR5)标准的同步动态随机存取存储器(SDRAM)设备。
一般而言,关于本文的描述,在一个示例中,一种方法包括:将数据线分割成两个数据半线,第一半线和第二半线,其中,所述数据线包括N个错误校验和校正(ECC)比特以对所述数据线提供错误校正;为所述第一半线计算第一(N-M)/2个错误校验和校正(ECC)比特,并且为所述第二半线计算第二(N-M)/2个ECC比特;为所述第一半线生成第一M/2个元数据比特,并且为所述第二半线生成第二M/2个元数据比特;以及将所述第一半线连同所述第一(N-M)/2个ECC比特和所述M/2个元数据比特存储在第一存储器资源中,并且将所述第二半线连同所述第二(N-M)/2个ECC比特和所述第二M/2个元数据比特存储在与所述第一存储器资源分离的第二存储器资源中。
在所述方法的一个示例中,所述数据线包括字线。根据所述方法的任何在前示例,在一个示例中,将所述第一半线存储在所述第一存储器资源中并且将所述第二半线存储在所述第二存储器资源中包括利用突发切分来执行数据写入。根据所述方法的任何在前示例,在一个示例中,所述第一存储器资源包括第一阶列,并且所述第二存储器资源包括第二阶列。根据所述方法的任何在前示例,在一个示例中,所述第一存储器资源包括第一双列直插式存储器模块(DIMM),并且所述第二存储器资源包括第二DIMM。根据所述方法的任何在前示例,在一个示例中,所述第一存储器资源和所述第二存储器资源包括10x4动态随机存取存储器(DRAM)设备。根据所述方法的任何在前示例,在一个示例中,N等于2*M。根据所述方法的任何在前示例,在一个示例中,N等于64个ECC比特以为512个数据比特提供错误校正,并且其中,M等于32个数据比特以为256个数据比特提供错误校正。根据所述方法的任何在前示例,在一个示例中,所述M个元数据比特包括两级存储器(2LM)比特、可信域扩展(TDX)比特、或者存储器内目录比特。根据所述方法的任何在前示例,在一个示例中,所述N个ECC比特用于为所述数据部分提供单设备数据校正(SDDC),并且其中,所述(N-M)/2个ECC比特用于为数据半线提供SDDC。
一般而言,关于本文的描述,在一个示例中,一种系统包括:存储器,包括第一存储器资源和第二存储器资源;以及与所述存储器耦合的存储器控制器,所述存储器控制器包括控制逻辑,所述控制逻辑用于将来自所述第一存储器资源的数据部分分布为所述第一存储器资源中的第一一半部分和所述第二存储器资源中的第二一半部分,所述数据部分包括N个错误校验和校正(ECC)比特以对所述数据部分提供错误校正,其中,所述第一一半部分和所述第二一半部分各自包括(N-M)/2个ECC比特以对这些一半部分提供错误校正;其中,所述控制逻辑用于在所述第一一半部分和所述第二一半部分之间分布M个非ECC比特。
在所述系统的一个示例中,所述数据部分包括字线。根据所述系统的任何在前示例,在一个示例中,所述控制逻辑利用对所述第一存储器资源的数据的突发切分来执行对所述第一一半部分的访问,并且利用对所述第二存储器资源的数据的突发切分来执行对所述第二一半部分的访问。根据所述系统的任何在前示例,在一个示例中,所述第一存储器资源包括第一阶列,并且所述第二存储器资源包括第二阶列。根据所述系统的任何在前示例,在一个示例中,所述第一存储器资源包括第一双列直插式存储器模块(DIMM),并且所述第二存储器资源包括第二DIMM。根据所述系统的任何在前示例,在一个示例中,所述多个存储器资源包括10x4动态随机存取存储器(DRAM)设备。根据所述系统的任何在前示例,在一个示例中,N等于2*M。根据所述系统的任何在前示例,在一个示例中,N等于64个ECC比特以为512个数据比特提供错误校正,并且其中,M等于32个数据比特以为256个数据比特提供错误校正。根据所述系统的任何在前示例,在一个示例中,所述M个元数据比特包括两级存储器(2LM)比特、可信域扩展(TDX)比特、或者存储器内目录比特。根据所述系统的任何在前示例,在一个示例中,所述N个ECC比特用于为所述数据部分提供单设备数据校正(SDDC),并且其中,所述(N-M)/2个ECC比特用于为数据的一半部分提供SDDC。根据所述系统的任何在前示例,在一个示例中,所述存储器资源包括根据双数据速率版本5(DDR5)标准的同步动态随机存取存储器(SDRAM)设备。
本文图示的流程图提供了各种过程动作的序列的示例。流程图可以指示要被软件或固件例程执行的操作,以及物理操作。流程图可图示出有限状态机(finite statemachine,FSM)的状态的实现方式的示例,该有限状态机可以用硬件和/或软件来实现。虽然是按特定的序列或顺序示出的,但除非另有说明,否则可以修改动作的顺序。因此,图示的附图应当只被理解为示例,而过程可按不同的顺序被执行,并且一些动作可被并行执行。此外,可省略一个或多个动作;因此,并非所有实现方式都将执行所有动作。
在本文描述的各种操作或功能的范围内,它们可被描述或定义为软件代码、指令、配置、和/或数据。这些内容可以是直接可执行的(“对象”或“可执行”形式)、源代码、或者差异代码(“delta”或“补丁”代码)。本文描述的内容的软件内容可经由其上存储有该内容的制造品来提供,或者经由操作通信接口以经由该通信接口发送数据的方法来提供。机器可读存储介质可以使得机器执行描述的功能或操作,并且包括以机器(例如,计算设备、电子系统,等等)可访问的形式存储信息的任何机制,例如可记录/不可记录介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光学存储介质、闪存设备,等等)。通信接口包括与硬连线、无线、光学等等任何一种介质相接口的任何机制,以便与另一设备进行通信,例如存储器总线接口、处理器总线接口、互联网连接、盘控制器,等等。可通过提供配置参数和/或发送信号来配置通信接口,以使得通信接口准备好提供描述软件内容的数据信号。可经由向通信接口发送的一个或多个命令或信号来访问通信接口。
本文描述的各种组件可以是用于执行所描述的操作或功能的手段。本文描述的每个组件包括软件、硬件、或者这些的组合。这些组件可被实现为软件模块、硬件模块、专用硬件(例如,特定应用硬件、专用集成电路(ASIC)、数字信号处理器(DSP),等等)、嵌入式控制器、硬接线电路,等等。
除了本文描述的内容以外,还可对所公开的内容和本发明的实现方式做出各种修改,而不脱离其范围。因此,应当从说明意义而不是限制意义上来解释本文的说明和示例。应当仅通过参考所附权利要求来衡量本发明的范围。
Claims (25)
1.一种存储器控制器,包括:
硬件输入/输出(I/O)接口,用于耦合到多个存储器资源,所述多个存储器资源包括第一存储器资源和第二存储器资源;以及
控制逻辑,用于将来自所述第一存储器资源的数据部分分布为所述第一存储器资源中的第一一半部分和所述第二存储器资源中的第二一半部分,所述数据部分包括N个错误校验和校正(ECC)比特以对所述数据部分提供错误校正,其中,所述第一一半部分和所述第二一半部分各自包括(N-M)/2个ECC比特以对这些一半部分提供错误校正;
其中,所述控制逻辑用于在所述第一一半部分和所述第二一半部分之间分布M个非ECC比特。
2.如权利要求1所述的存储器控制器,其中,所述数据部分包括字线。
3.如权利要求1所述的存储器控制器,其中,所述控制逻辑利用对所述第一存储器资源的数据的突发切分来执行对所述第一一半部分的访问,并且利用对所述第二存储器资源的数据的突发切分来执行对所述第二一半部分的访问。
4.如权利要求1所述的存储器控制器,其中,所述第一存储器资源包括第一阶列,并且所述第二存储器资源包括第二阶列。
5.如权利要求1所述的存储器控制器,其中,所述第一存储器资源包括第一双列直插式存储器模块(DIMM),并且所述第二存储器资源包括第二DIMM。
6.如权利要求1所述的存储器控制器,其中,所述多个存储器资源包括10x4动态随机存取存储器(DRAM)设备。
7.如权利要求1所述的存储器控制器,其中,N等于2*M,其中,N等于64个ECC比特以为512个数据比特提供错误校正,并且其中,M等于32个数据比特以为256个数据比特提供错误校正。
8.如权利要求1所述的存储器控制器,其中,所述M个非ECC比特包括元数据比特。
9.如权利要求1所述的存储器控制器,其中,所述N个ECC比特为所述数据部分提供单设备数据校正(SDDC),并且其中,所述(N-M)/2个ECC比特为数据的一半部分提供SDDC。
10.如权利要求1所述的存储器控制器,其中,所述存储器资源包括根据双数据速率版本5(DDR5)标准的同步动态随机存取存储器(SDRAM)设备。
11.一种用于存储器访问的方法,包括:
将数据线分割成两个数据半线,第一半线和第二半线,其中,所述数据线包括N个错误校验和校正(ECC)比特以对所述数据线提供错误校正;
为所述第一半线计算第一(N-M)/2个错误校验和校正(ECC)比特并且为所述第二半线计算第二(N-M)/2个ECC比特;
为所述第一半线生成第一M/2个元数据比特并且为所述第二半线生成第二M/2个元数据比特;以及
将所述第一半线连同所述第一(N-M)/2个ECC比特和所述第一M/2个元数据比特存储在第一存储器资源中,并且将所述第二半线连同所述第二(N-M)/2个ECC比特和所述第二M/2个元数据比特存储在与所述第一存储器资源分离的第二存储器资源中。
12.如权利要求11所述的方法,其中,将所述第一半线存储在所述第一存储器资源中并且将所述第二半线存储在所述第二存储器资源中包括利用突发切分来执行数据写入。
13.如权利要求11所述的方法,其中,所述第一存储器资源包括第一阶列,并且所述第二存储器资源包括第二阶列。
14.如权利要求11所述的方法,其中,所述第一存储器资源包括第一双列直插式存储器模块(DIMM),并且所述第二存储器资源包括第二DIMM。
15.如权利要求11所述的方法,其中,所述第一存储器资源和所述第二存储器资源包括10x4动态随机存取存储器(DRAM)设备。
16.如权利要求11所述的方法,其中,N等于2*M,并且其中,N等于64个ECC比特以为512个数据比特提供错误校正,并且其中,M等于32个数据比特以为256个数据比特提供错误校正。
17.如权利要求11所述的方法,其中,所述M个元数据比特包括两级存储器(2LM)比特、可信域扩展(TDX)比特、或者存储器内目录比特。
18.如权利要求11所述的方法,其中,所述N个ECC比特为所述数据部分提供单设备数据校正(SDDC),并且其中,所述(N-M)/2个ECC比特为数据半线提供SDDC。
19.一种用于存储器访问的系统,包括:
存储器,包括第一存储器资源和第二存储器资源;以及
存储器控制器,与所述存储器耦合,所述存储器控制器包括:
控制逻辑,用于将来自所述第一存储器资源的数据部分分布为所述第一存储器资源中的第一一半部分和所述第二存储器资源中的第二一半部分,所述数据部分包括N个错误校验和校正(ECC)比特以对所述数据部分提供错误校正,其中,所述第一一半部分和所述第二一半部分各自包括(N-M)/2个ECC比特以对这些一半部分提供错误校正;
其中,所述控制逻辑用于在所述第一一半部分和所述第二一半部分之间分布M个非ECC比特。
20.如权利要求19所述的系统,其中,所述控制逻辑利用对所述第一存储器资源的数据的突发切分来执行对所述第一一半部分的访问,并且利用对所述第二存储器资源的数据的突发切分来执行对所述第二一半部分的访问。
21.如权利要求19所述的系统,其中,所述第一存储器资源包括第一阶列,并且所述第二存储器资源包括第二阶列。
22.如权利要求19所述的系统,其中,所述第一存储器资源包括第一双列直插式存储器模块(DIMM),并且所述第二存储器资源包括第二DIMM。
23.如权利要求19所述的系统,其中,所述多个存储器资源包括10x4动态随机存取存储器(DRAM)设备。
24.如权利要求19所述的系统,其中,N等于2*M,其中,N等于64个ECC比特以为512个数据比特提供错误校正,并且其中,M等于32个数据比特以为256个数据比特提供错误校正。
25.如权利要求19所述的系统,其中,所述N个ECC比特用于为所述数据部分提供单设备数据校正(SDDC),并且其中,所述(N-M)/2个ECC比特用于为数据的一半部分提供SDDC。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/156,399 | 2021-01-22 | ||
US17/156,399 US20210141692A1 (en) | 2021-01-22 | 2021-01-22 | Distribution of error checking and correction (ecc) bits to allocate ecc bits for metadata |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114816829A true CN114816829A (zh) | 2022-07-29 |
Family
ID=75846798
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111569808.8A Pending CN114816829A (zh) | 2021-01-22 | 2021-12-21 | 分布ecc比特以为元数据分配ecc比特 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20210141692A1 (zh) |
EP (1) | EP4033362A1 (zh) |
JP (1) | JP2022113100A (zh) |
CN (1) | CN114816829A (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023003902A2 (en) * | 2021-07-19 | 2023-01-26 | The Regents Of The University Of California | Method and apparatus for on-die and in-controller collaborative memory error correction |
US11636008B2 (en) * | 2021-09-01 | 2023-04-25 | Micron Technology, Inc. | Tracking host-provided metadata in a memory sub-system |
US11995006B2 (en) * | 2021-12-22 | 2024-05-28 | Intel Corporation | Algebraic and deterministic memory authentication and correction with coupled cacheline metadata |
US20240143437A1 (en) * | 2022-10-31 | 2024-05-02 | Astera Labs, Inc. | Memory control component with split auxiliary channel |
CN116455753B (zh) * | 2023-06-14 | 2023-08-18 | 新华三技术有限公司 | 一种数据平滑方法及装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9430324B2 (en) * | 2013-05-24 | 2016-08-30 | Rambus Inc. | Memory repair method and apparatus based on error code tracking |
US10725672B2 (en) * | 2016-10-12 | 2020-07-28 | Samsung Electronics Co., Ltd. | Memory module, memory controller and systems responsive to memory chip read fail information and related methods of operation |
US10606696B2 (en) * | 2017-12-04 | 2020-03-31 | International Business Machines Corporation | Internally-generated data storage in spare memory locations |
US10606713B2 (en) * | 2018-01-03 | 2020-03-31 | International Business Machines Corporation | Using dual channel memory as single channel memory with command address recovery |
US10546628B2 (en) * | 2018-01-03 | 2020-01-28 | International Business Machines Corporation | Using dual channel memory as single channel memory with spares |
US11210167B2 (en) * | 2019-10-28 | 2021-12-28 | Intel Corporation | Memory wordline isolation for improvement in reliability, availability, and scalability (RAS) |
-
2021
- 2021-01-22 US US17/156,399 patent/US20210141692A1/en active Pending
- 2021-09-23 EP EP21198643.5A patent/EP4033362A1/en active Pending
- 2021-09-24 JP JP2021155345A patent/JP2022113100A/ja active Pending
- 2021-12-21 CN CN202111569808.8A patent/CN114816829A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4033362A1 (en) | 2022-07-27 |
US20210141692A1 (en) | 2021-05-13 |
JP2022113100A (ja) | 2022-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3453022B1 (en) | Internal error checking and correction (ecc) with extra system bits | |
US10572343B2 (en) | Targeted aliasing single error correction (SEC) code | |
EP3370152B1 (en) | Integrated error checking and correction (ecc) in memory devices with fixed bandwidth interfaces | |
CN107924698B (zh) | Dram设备、错误校正管理的方法和存储器控制器 | |
EP3910475B1 (en) | Read retry to selectively disable on-die ecc | |
CN109661654B (zh) | 存储器中的差错校验和纠正码的扩展应用 | |
EP4033362A1 (en) | Distribution of error checking and correction (ecc) bits to allocate ecc bits for metadata | |
US20210224155A1 (en) | Reduction of latency impact of on-die error checking and correction (ecc) | |
US11704194B2 (en) | Memory wordline isolation for improvement in reliability, availability, and scalability (RAS) | |
US11657889B2 (en) | Error correction for dynamic data in a memory that is row addressable and column addressable | |
CN112631822A (zh) | 存储器、具有其的存储系统及其操作方法 | |
NL2029789B1 (en) | Adaptive error correction to improve for system memory reliability, availability, and serviceability (ras) | |
US20220093202A1 (en) | Adaptive dram (dynamic random access memory) burst length for inline ecc (error checking and correction) | |
US20220012173A1 (en) | Flexible configuration of memory module data width | |
CN115858438A (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 |