问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

LPDDR4 ECC机制及不同ECC对比

创作时间:
作者:
@小白创作中心

LPDDR4 ECC机制及不同ECC对比

引用
CSDN
1.
https://blog.csdn.net/sinat_30055139/article/details/142473194

ECC(Error Correction Code,错误检查与纠正码)是LPDDR4新增的带有校验功能的模块,提高了LPDDR4在读写及掩蔽写操作中数据信息的可靠性。本文将详细介绍LPDDR4的ECC机制及其工作原理,包括ECC的基本概念、工作流程、不同类型的ECC方案(side-band ECC和inline ECC)及其在LPDDR4中的应用。

ECC是LPDDR4新增的带有校验功能的模块,提高了LPDDR4在读写及掩蔽写操作中数据信息的可靠性,ECC模块是增加在存储阵列里的一个模块。数据到达ECC时为128比特,相对应的校验码为8比特,采用汉明码的算法可以对128比特的数据进行一位错码的定位与纠正,ECC模块在读写以及掩蔽写的操作过程中都能起到校验的作用。如图为带ECC功能与不带ECC功能的DRAM芯片,对比可以看到,ECC的DEAM的存储颗粒多一个,这个存储单元是用来保存ECC模块中计算得到的校验位的数据信息的。ECC模块的加入使得数据在稳定性上得到了提升,由于LPDDR4中占用面积最大的为存储阵列,ECC的加入就必须增加相应的存储阵列用来存储校验码,内存颗粒自然会变多但是ECC模块对芯片的尺寸几乎是没有影响的。LPDDR4本身即为低功耗的设备,工作电压仅为1.1v,ECC对功耗的影响也是微乎其微的。

对于存储器来说,数据只有先写入存储单元才能做读取操作。ECC在写入的操作中,128比特数据信息经过编码得到8比特校验码信息,一共136比特在写入时钟的高电平被锁存传输至存储单元。在读取操作的过程中,存储单元中本来就保存着136比特信息,其中128比特的读出数据以及8比特的校验码,校验码是用来对128比特数据信息做检测与纠错,当128比特数据到达ECC模块经过编码得到8比特校验码,为了校验数据在读出存储单元时是否出错,将新得到的8比特校验码与存储单元里本来就保存的8比特校验位做异或处理,最终得到8位校验码如若每一比特都为0,则说明数据没有错码生成;如若不全为0则说明数据信息有错码产生,并且可以根据这8比特校验码找到128比特数据中错码的位置信息,然后再对错误位取反纠正。

掩蔽写操作可以分为两种操作即首先做读取的操作,与正常读取的操作相同首先要判断存储单元中的数据是否有错误码产生,有则取反改之,然后在做写入的操作。掩蔽写操作涉及到掩蔽码的写入,掩蔽码的作用是读取数据与写入数据进行选择,掩蔽码一共16比特,每一比特的掩蔽码对应8比特的数据信息,当掩蔽码为1的时候选取写入的数据信息,当掩蔽码为0时,选择写入第一次内部读取操作的数据信息,最后得到128比特的数据信息,重新计算8比特的校验码,得到一共136比特的数据信息,重新写入存储单元中。以上即为ECC模块在LPDDR4-SDRAM中的读写以及掩蔽写操作中的纠错应用。ECC在不增加功耗的同时,提高了内存的容量和带宽,保持内存的稳定性。

ECC校验作为功能安全保证最重要的组成部分之一,广泛的应用于车载处理器的片内接口、IP总线以及存储介质中,用于提高系统的功能安全以及稳定性,其中用于执行程序、存放缓存以及交换数据的系统DDR的ECC校验则尤为重要。传统芯片解决方案必须额外外挂一片DDR存储器用来存放系统DDR计算ECC所得到的汉明码,故必须要求SoC具有两路以上的DDR通道,而且带来额外的成本负担。

ECC工作流程
ECC生成和校验顺序如下:
ECC数据由控制器根据实际的WR(写入)数据生成。内存同时存储写命令的数据和ECC数据。
在RD(读取)操作期间,控制器从内存读取数据和相应的ECC数据。控制器利用接收到的数据重新生成ECC数据,并将其与接收到的ECC数据进行比较。
如果两者匹配,则不会发生错误。如果不匹配,ECC SECDED机制允许控制器纠正任何单bit错误并检测双bit错误。
这种ECC方案提供端到端的保护,以防止可能在控制器和内存之间的内存子系统中发生的单bit错误。
基于ECC的实际存储,ECC方案可能有两种类型:side-band ECC或inline ECC。在side-band ECC中,ECC数据存储在单独的DRAM上;在inline ECC中,ECC数据与实际数据一起存储在同一个DRAM上。

Side-bandECC
side-band ECC方案通常在应用中使用标准DDR内存(如DDR4和DDR5)实现。顾名思义,ECC数据作为边带数据连同实际数据发送到内存。例如,对于64位数据宽度,增加8个数位用于ECC存储。因此,当今企业级服务器和数据中心常用的DDR4 ECC DIMM具有72位宽。这些DIMM有两个额外的x4DRAM或一个x8 DRAM,用于额外的8位ECC存储。因而在side-band ECC中,控制器会同时读写ECC数据和实际数据。此ECC方案不需要额外的WR或RD开销命令。如下图所示为side-band ECC方案的系统框图,其DDR ECC数据不能和原DDR数据同时存储,所以一般会通过多个DDR信道连接多片DDR存储设备来分别作为系统运行内存以及ECC汉明码存储介质。

Side-band ECC即为标准DDR内存的ECC,如上图,ECC的生成和校验均由Memory Controller来完成,Data通道宽度为64-bit,有额外专门的8-bitECC通道(一共72-bit),DIMM端也有专门的颗粒存储ECC。读写操作如下(如下图):
写:Memory Controller会根据64-bit Data计算出ECC,再经ECC通道写入DIMM端ECC位置。
读:Memory Controller会读取Data和ECC,Memory Controller再根据Data计算出ECC,然后通过对比读取的ECC和计算出的ECC进行校验
在完成 DDR 和 ECC 的初始化以及使能之后,若系统没有重新复写过 DDR 内容,系统运行期间进行读操作时,会读取实时的 DDR 数据以及上一次计算得到的 ECC data1 数值, 并基于此实时的 DDR 数据进行计算得到 ECC data2。若两次计算得到的 data1 和 data2 相同,则视为数据没有发生变化,不产生 ECC 错误;若两次计算得到的数据不同,则认为数据发生变化,产生 ECC 错误事件输出到 TDA4VM88 的 ESM 模块中,从而对 ECC 错误进行下一步的处理。
若在此期间系统有复写过 DDR 数据,则 DDR 控制器会首先自动根据复写后的数据产生 ECC data1 并将其更新到 ECC 存储的 DDR 中,并重复上述步骤进行校验。
传统的 DDR ECC 必须要挂载两片以上的 DDR,这就必须要求 SoC 芯片必须支持两路以上的 EMIF 接口,并且额外的 DDR 也会带来硬件设计以及软件开发上的成本负担。

Inline ECC
Inline ECC方案通常在使用LPDDR内存的应用中实现。LPDDR DRAM具有固定信道宽度(LPDDR5/4/4X信道宽度为16位),因此side-band ECC对于此类内存而言是一种昂贵的解决方案。例如,对于16位数据宽度,需要为7位或8位ECC位宽的inline ECC额外分配16位LPDDR信道。此外,7或8位ECC数据字段仅部分填充了16位额外的通路,导致存储效率低下,还给地址命令信道带来额外负载,可能会对性能有所影响。因此,inline ECC成为更适合用作LPDDR内存的解决方案。

Inline ECC中的控制器不需要额外的信道来存储ECC,而是将ECC数据存储在存储实际数据的同一DRAM信道中。因此,内存信道的总体数据宽度与实际数据宽度相同。

在inline ECC中,16位信道内存被分区,使得内存的专用部分被分配给ECC数据存储。当ECC数据未与读写数据一起发送时,控制器为ECC数据生成单独的开销WR和RD命令。因此,实际数据的每条WR和RD命令都伴有一条ECC数据的开销WR和RD命令。高性能控制器通过在一条ECC WR命令中封装几个连续地址的ECC数据,以此来降低此类ECC命令的损失。同样,控制器在一条ECC RD命令中读取内存发出的若干连续地址的ECC数据,并且可以将读出的ECC数据,应用于该连续地址产生的实际数据。因此,流量模式越有序,此类ECC开销命令造成的延迟损失越小。下图描述了inline ECC的WR和RD操作流程。

值得注意的是,Inline ECC不需要额外的DDR信道来存储汉明码数据,而是将汉明码数据和原DDR实际数据存储在同一片DDR中,其中每8bit DDR 数据计算得到1bit DDR ECC 汉明码,两者以交错的形式存储在DDR存储器中。并且此存储以及映射关系由Inline ECC 硬件完成,从系统以及软件的角度来看,其呈现的DDR 内存中的8/9数据单位与下一个8/9 数据单位为连续字节地址,但实际上中间硬件中由 1/9 的汉明码数据,只是软件无法访问而已。虽然软件无法访问,但是此物理存储是实际存在的, 所以DDR在初始化时,需要预留出预计DDR ECC区域大小1/9 的内存大小,作为DDR ECC计算结果的存储空间。其存储/映射关系如下图所示。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号