CN110688248B - 一种可变动码率与更正能力内存控制方法 - Google Patents
一种可变动码率与更正能力内存控制方法 Download PDFInfo
- Publication number
- CN110688248B CN110688248B CN201910794137.1A CN201910794137A CN110688248B CN 110688248 B CN110688248 B CN 110688248B CN 201910794137 A CN201910794137 A CN 201910794137A CN 110688248 B CN110688248 B CN 110688248B
- Authority
- CN
- China
- Prior art keywords
- data
- module
- inline ecc
- coding
- inline
- 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
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/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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本发明公开了一种可变动码率与更正能力内存控制方法,在传统DRAM控制器与原本应用控制器中间设计一个错误更正的Inline ECC模块,该发明不同于主流作法使用额外内存颗粒来做为错误更正编译码机制,本控制方法提供一种无须额外颗粒,而能够达到超越冗余颗粒编码法的SoC实现机制,从而节省了成本。
Description
技术领域
本发明涉及内存控制方法技术领域,具体为一种可变动码率与更正能力内存控制方法。
背景技术
以目前的计算机系统与SOC来说,DDR4内存控制方法因为1组channel的宽度为64bit,所以能够同时读写8byte的数据,如果是具有ECC功能的内存控制器和ECC内存模块,那么1组 channel的宽度就是72bit,额外的8bit即是冗余颗粒,使得成本增加,因此,亟待一种改进的技术来解决现有技术中所存在的这一问题。
发明内容
本发明的目的在于提供一种可变动码率与更正能力内存控制方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:一种可变动码率与更正能力内存控制方法,包括以下步骤:
步骤一:在DRAM控制器与应用控制器之间设置用于错误更正的Inline ECC模块;
步骤二:Inline ECC模块接收到应用控制器发送的数据包;
步骤三:Inline ECC模块用收到的数据生成32个子封包;
步骤四:Inline ECC模块通过内部的编码模块进行编码,编码步骤为:空闲时写命令,数据输入,输入完成,数据输出,确认输出完成后重新进入空闲状态;
步骤五:Inline ECC模块通过内部的解码模块进行解码,解码步骤为:空闲时读命令,数据输入,读数据完成,检错纠错,完成所有子封包的纠错,数据输出,确认数据输出完成后重新进入空闲状态;
步骤六:DRAM中地址映像Inline ECC模块解码的数据。
优选的,所述步骤一中Inline ECC模块实现了AXI-lite控制流程以串接传统DRAM控制模块,所述Inline ECC模块实现了简单的R/W Interface来连接一般SoC的连接模块应用。
优选的,所述步骤四中编码模块内部设置有编码状态机、编码计算模块、校验码寄存器及写数据缓存区。
优选的,所述步骤五中解码模块门内部安装有解码状态机、解码计算模块、读数据缓存区及纠错信息寄存器。
与现有技术相比,本发明的有益效果是:
当内存的容量与制程随时间一直推演进步时,SOC内存控制器须要有自动错误更正的机制,不同于主流作法使用额外内存颗粒来做为错误更正编译码机制,本控制方法提供一种无须额外颗粒,而能够达到超越冗余颗粒编码法的SoC实现机制,从而节省了成本。
附图说明
图1为Inline ECC模组用简单的读/写接口连接原本的应用控制器(DATA_MASTER),并实现了用 AXI-lite接口串接传统DRAM控制模组示意图。
图2为Inline ECC模组接收DATA_MASTER发送的数据包示意图。
图3为Inline ECC用收到的数据生成32个子封包示意图。
图4为Inline ECC的编码状态机流程示意图。
图5为Inline ECC的内部编码模块结构示意图。
图6为Inline ECC的解码状态机流程示意图。
图7为Inline ECC的内部解码模块结构示意图。
图8为DRAM中的地址映像示意图。
图9为HC inline ECC其中两个mode针对RBER/UBER的效果。曲线由左至右分别为标准规格DDR4(64/72),DDR5(32/40),HC inline ECC mode1/inline ECC mode2的实现效果示意图。
图中:编码模块100、状态机101、编码计算模块102、校验码寄存器103、写数据缓存区104、解码模块200、解码状态机201、解码计算模块202、读数据缓存区203、纠错信息寄存器204。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供一种技术方案:一种可变动码率与更正能力内存控制方法,包括以下步骤:
步骤一:如图1所示,在传统DRAM控制器与原本应用控制器(DATA_MASTER)中间设计一个错误更正的Inline ECC模块;
步骤二:Inline ECC模块接收到应用控制器发送的数据包;
步骤三:Inline ECC模块用收到的数据生成32个子封包;
步骤四:Inline ECC模块通过内部的编码模块进行编码,编码步骤为:空闲时写命令,数据输入,输入完成,数据输出,确认输出完成后重新进入空闲状态;
步骤五:Inline ECC模块通过内部的解码模块进行解码,解码步骤为:空闲时读命令,数据输入,读数据完成,检错纠错,完成所有子封包的纠错,数据输出,确认数据输出完成后重新进入空闲状态;
步骤六:DRAM中地址映像Inline ECC模块解码的数据。
其中,步骤一中Inline ECC模块实现了AXI-lite控制流程以串接传统DRAM控制模块,Inline ECC模块实现了简单的R/W Interface来连接一般SoC的连接模块应用。
其中,步骤四中编码模块内部设置有编码状态机、编码计算模块、校验码寄存器及写数据缓存区。
其中,步骤五中解码模块门内部安装有解码状态机、解码计算模块、读数据缓存区及纠错信息寄存器。
其中,编码数据结构与流程中,每个编码子结构封包并不限于1Kbit编码,可以是2Kbit/3Kbit/…,不限固定长度的编码。每个编码封包并不限于32个1Kbit排列。可以是16/64/128 等不限子封包个数的编码。每个子结构封包更正能力并不限于mode1(4bit更正能力)/mode2(8bit 更正能力),可以是随机数量更正能力的编码。
实施例的:
如图2所示,HC Inline ECC支持多种格式数据包的编码:可变动的数据长度;可变动的元数据长度。
本例中的Inline ECC支持数据长度为4096字节和4160字节,元数据长度为4~32字节。
如图3所示,HC Inline ECC对接收到的数据包进行再分配。
本例中Inline ECC将数据分成32个子封包,每个子封包可生成独立的校验码,保存时紧随其对应的子封包数据之后。本例中对4096字节的数据包可以分成32个1024字节的子封包;对于4160 字节的数据包,将其多出的64字节数据平均分配在前4个分包内,这样既可以不浪费编码器的算力,又能使每个子封包的码率更平均。
如图4所示,HC Inline ECC的编码状态机。
本例中Inline ECC的编码状态机有三个状态:空闲、数据输入、数据输出。为了提高数据包的处理速度,本例中数据输入与编码同时进行,因此状态机中没有特别设立编码状态。
空闲状态:Inline ECC可以接收新的写命令,接收到写命令则进入数据输入阶段;
数据输入状态:Inline ECC可以接收数据包的输入,同时编码器可以计算校验码,如图3所示,每个子封包分别有一笔校验码,数据包输入完成(Inline ECC共生成32笔校验码)则进入数据输出阶段;
数据输出状态:Inline ECC输出数据包+校验码+元数据,按照“子封包数据、校验码、子封包数据、校验码……”的顺序输出,最后输出元数据,本例中Inline ECC支持数据与元数据分开存储,输出完成后进入空闲状态。
如图5所示,HC Inline ECC编码模块设计。
本例中编码模块100共有4个部分组成:编码状态机101、编码计算模块102、校验码寄存器103 和写数据缓存区104。
编码状态机101控制数据包的编码过程:DATA_MASTER输入数据包,校验码的计算,输出数据和校验码至DRAM控制模块;
编码计算模块102根据输入的数据计算并输出校验码,校验码保存在校验码寄存器103中;
校验码寄存器103在数据输入阶段存储32个子封包的校验码,在数据输出阶段由状态机控制输出;
写数据缓存区104在数据输入阶段存储整个数据包,在数据输出阶段由状态机控制输出;
数据输出的顺序为“子封包数据、校验码、子封包数据、校验码……”最后输出元数据。
如图6所示,HC Inline ECC的解码状态机。
本例中Inline ECC的解码状态机有4个状态:空闲、数据输入、检错纠错、数据输出。
空闲状态:Inline ECC可以接收新的读命令,接收到读命令后进入数据输入阶段;
数据输入状态:Inline ECC通过AXI-lite接口给DRAM控制器发送读数据命令,并接收DRAM 控制器返回的读数据(包含数据和校验码和元数据),然后Inline ECC,通过AXI-lite接口给 DRAM控制器发送读元数据命令,并接收DRAM控制器返回的元数据,接受完成后进入检错纠错阶段;
检错纠错:将一个子封包按照“子封包数据、校验码”的顺序写入解码计算模块,并将其输出的纠错信息保存在纠错信息缓存区内,收集纠错信息完成后对该子封包进行纠错操作。以这种方式对32 个子封包纠错完成后,进入数据输出阶段;
数据输出:Inline ECC将32笔子封包(不包括校验码)组成的数据包输出至DATA_MASTER,数据包后面接元数据,输出完成进入空闲状态。
如图7所示,Inline ECC解码模块设计。
本例中解码模块200共由4个部分块组成:解码状态机201、解码计算模块202、读数据缓存区 203和纠错信息寄存器204。
解码状态机201控制数据包的解码过程:解析DATA_MASTER发出的读命令、从DRAM读出码字和元数据、对码字检错纠错、输出解码后的数据和元数据至DATA_MASTER;
解码计算模块202根据输入的子码字计算并输出检错结果和纠错信息,检错信息保存在纠错信息寄存器204中;
读数据缓存区203在数据输入阶段存储整个码字,在检错纠错阶段由状态机控制输出码字或纠错,在数据输出阶段在状态机控制下输出数据(不输出校验码);
纠错信息存储器204在检错纠错阶段存储纠错信息,并由状态机201控制下输出纠错信息对读数据缓存区203内的码字纠错。
如图8所示,DRAM中的地址映像。
本例中地址偏移量为0,因此第一笔子封包存储地址即为数据起始地址,事实上,实际操作中只需发送第一笔子封包存储地址即可,之后的数据及校验码存储地址都是在其基础上相加得到。
如图中所示,每一笔子码字的格式都是“子封包+校验码”,在译码过程也是按此顺序输入解码计算模块。
实施例的,选用inline ECC mode1和inline ECC mode2与传统ECC控制方法作对比。
HC inline ECC mode1使用每1Kbit能够保护8bit随机错误的编/解码引擎。
HC inline ECC mode2使用每1Kbit能够保护4bit随机错误的编/解码引擎。
如图9所示,分别列出目前标准内存ECC控制方法中DDR4/DDR5的效果,与本发明中inline ECC 编码法的差异。
当原始的DRAM颗粒RBER为0.5E-4时,DDR4 ECC/DDR5 ECC编码法只能将UBER降到E-10.5与E-11,但本发明的inline ECC mode2编码机制可以更有效的将UBER降到E-13.8左右。
当原始的DRAM颗粒RBER为1.5E-4时,DDR4 ECC/DDR5 ECC编码法只能将UBER降到E-8.5与E- 9.5,但本发明的inline-ECC mode1编码机制可以更有效的将UBER降到E-18左右。
由redundant bit来看,DDR4有8/72=11%。
由redundant bit来看,DDR5有8/40=20%。
由redundant bit来看,HC inline ECC mode2有44/(1024+44)=4.12%。
由redundant bit来看,HC inline ECC mode1有88/(1024+88)=7.9%。
HC inline ECC使用了更少的redundant,但在SoC芯片的应用上实现出了更低的误码率。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (4)
1.一种可变动码率与更正能力内存控制方法,其特征在于:包括以下步骤:
步骤一:在DRAM控制器与应用控制器之间设置用于错误更正的Inline ECC模块;
步骤二:Inline ECC模块接收到应用控制器发送的数据包;
步骤三:Inline ECC模块用收到的数据生成32个子封包;
步骤四:Inline ECC模块通过内部的编码模块进行编码,空闲时写命令,数据输入,输入完成,数据输出,确认输出完成后重新进入空闲状态;
步骤五:Inline ECC模块通过内部的解码模块进行解码,空闲时读命令,数据输入,读数据完成,检错纠错,完成所有子封包的纠错,数据输出,确认数据输出完成后重新进入空闲状态;
步骤六:DRAM中地址映像Inline ECC模块解码的数据。
2.根据权利要求1所述的一种可变动码率与更正能力内存控制方法,其特征在于:所述步骤一中Inline ECC模块实现了AXI-lite控制流程以串接传统DRAM控制模块,所述InlineECC模块实现了简单的R/W Interface来连接一般SoC的连接模块应用。
3.根据权利要求1所述的一种可变动码率与更正能力内存控制方法,其特征在于:所述步骤四中编码模块内部设置有编码状态机、编码计算模块、校验码寄存器及写数据缓存区。
4.根据权利要求1所述的一种可变动码率与更正能力内存控制方法,其特征在于:所述步骤五中解码模块门内部安装有解码状态机、解码计算模块、读数据缓存区及纠错信息寄存器。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2019/105621 WO2021035811A1 (zh) | 2019-08-27 | 2019-09-12 | 一种可变动码率与更正能力内存控制方法 |
CN201910794137.1A CN110688248B (zh) | 2019-11-29 | 2019-11-29 | 一种可变动码率与更正能力内存控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910794137.1A CN110688248B (zh) | 2019-11-29 | 2019-11-29 | 一种可变动码率与更正能力内存控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110688248A CN110688248A (zh) | 2020-01-14 |
CN110688248B true CN110688248B (zh) | 2022-09-16 |
Family
ID=69108487
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910794137.1A Active CN110688248B (zh) | 2019-08-27 | 2019-11-29 | 一种可变动码率与更正能力内存控制方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110688248B (zh) |
WO (1) | WO2021035811A1 (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101036131A (zh) * | 2004-11-22 | 2007-09-12 | 英特尔公司 | 支持时间上多路复用的纠错编码的存储器事务猝发操作和存储器组件 |
CN109036493A (zh) * | 2018-06-11 | 2018-12-18 | 西北工业大学 | 一种具有检错纠错机制的NAND Flash控制器 |
CN110310693A (zh) * | 2018-12-26 | 2019-10-08 | 贵阳忆芯科技有限公司 | 具有缓存的In-Line ECC模块 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100337217C (zh) * | 2003-07-28 | 2007-09-12 | 深圳市朗科科技有限公司 | 存储控制芯片及数据存储控制方法 |
CN107483148B (zh) * | 2017-07-28 | 2020-10-13 | 北京北信源软件股份有限公司 | 差错处理方法及装置 |
KR102362229B1 (ko) * | 2017-08-10 | 2022-02-11 | 삼성전자주식회사 | 메모리 컨트롤러, 메모리 시스템 및 메모리 컨트롤러를 포함하는 어플리케이션 프로세서 |
US10346346B1 (en) * | 2017-12-21 | 2019-07-09 | Xilinx, Inc. | Inline ECC function for system-on-chip |
-
2019
- 2019-09-12 WO PCT/CN2019/105621 patent/WO2021035811A1/zh active Application Filing
- 2019-11-29 CN CN201910794137.1A patent/CN110688248B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101036131A (zh) * | 2004-11-22 | 2007-09-12 | 英特尔公司 | 支持时间上多路复用的纠错编码的存储器事务猝发操作和存储器组件 |
CN109036493A (zh) * | 2018-06-11 | 2018-12-18 | 西北工业大学 | 一种具有检错纠错机制的NAND Flash控制器 |
CN110310693A (zh) * | 2018-12-26 | 2019-10-08 | 贵阳忆芯科技有限公司 | 具有缓存的In-Line ECC模块 |
Non-Patent Citations (1)
Title |
---|
1G比特内嵌自检自修复DDR3 DRAM存储器芯片设计;谈杰等;《中国集成电路》;20180905(第09期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110688248A (zh) | 2020-01-14 |
WO2021035811A1 (zh) | 2021-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI455144B (zh) | 使用於快閃記憶體的控制方法與控制器 | |
US8239725B2 (en) | Data storage with an outer block code and a stream-based inner code | |
US8037390B2 (en) | Memory system and command handling method | |
US8707135B2 (en) | Method and system of dynamic data storage for error correction in a memory device | |
US7900118B2 (en) | Flash memory system and method for controlling the same | |
CN111294059B (zh) | 编码方法、译码方法、纠错方法及相关装置 | |
KR101990971B1 (ko) | 메모리, 메모리 시스템, 및 메모리에 대한 에러 검출/정정 방법 | |
US8656263B2 (en) | Trellis-coded modulation in a multi-level cell flash memory device | |
US8055982B2 (en) | Error correction system and method | |
TW200951961A (en) | Methods and apparatus for storing data in a multi-level cell flash memory device with cross-page sectors, multi-page coding and per-page coding | |
JP2010517117A (ja) | マルチレベル・セル・メモリ・デバイス内のデータをアレンジする方法 | |
US10222996B2 (en) | Read operation and soft decoding timing | |
CN101763903A (zh) | 快闪存储器控制器、其纠错码控制器及其方法和系统 | |
US20100241932A1 (en) | Error detector/corrector, memory controller, and semiconductor memory device | |
US7689895B2 (en) | On-the fly error checking and correction CODEC system and method for supporting non-volatile memory | |
JP4300462B2 (ja) | 情報記録再生方法及び装置 | |
CN110309014B (zh) | 一种全行编解码sram编码器数据读写结构及数据读写方法 | |
CN110688248B (zh) | 一种可变动码率与更正能力内存控制方法 | |
CN109872764B (zh) | 一种多级存储单元闪存的ecc多码率编解码系统及方法 | |
CN102456400B (zh) | 使用于闪存的控制方法与控制器 | |
CN115729746A (zh) | 一种基于crc和ecc存储数据保护方法 | |
TWI537971B (zh) | Storage device and access method thereof | |
WO2020199490A1 (zh) | 一种双模式检错内存及双模式检错方法 | |
US6754790B2 (en) | Method of accessing memory of de-interleaving unit | |
TWI740187B (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 |