随着内存速率、颗粒密度和应用数量增加,内存故障率也随之增加,内存的RAS特性显得尤为重要。之前公众号的关于Memory RAS的文章介绍了目前常见的几种增强型的纠错黑科技SDDC、DDDC、ADDDC。DDR5相对于DDR4也中引入了一个新功能On-Die ECC来增强内存的RAS特性。本篇文章主要针对On-Die ECC展开下介绍。 SDDC、DDDC、ADDDC都是通过内存增加额外的ECC颗粒(暂且称之为Side-Band ECC),其原理可以复习下前面的文章,其过程由Memory Controller(MC)来实现,三种纠错都只允许每个burst的数据(72bit)错误出现在一个x4颗粒上,当每个burst错误出现在2个以上的颗粒上时,则无法保证准确纠错。 On-Die ECC则不同,它是针对单个DRAM颗粒每128bit长度的数据增加8bit的ECC校验位,校验位与Data一起存储在DRAM Array中。On-Die ECC计算与纠错过程完全由颗粒自主完成计算,可纠正single bit error,可以理解为对于MC来讲是透明的,在不增加MC负载的前提下增强了内存的RAS特性。 由前面介绍不难看出,On-Die ECC是对于内存现有ECC技术只能对单个burst单颗粒上的Single或multi biterror纠错的缺陷的一个补充,可以实现每个颗粒独立的对单次访问16个burst(128bit)的数据纠错,即多个颗粒同时出现single bit error也可以纠错,两者起着相辅相成的作用,其过程对比如下图所示。 On-Die ECC与SideBand ECC过程对比 前面讲到On-Die ECC是对每128bit长度的数据增加8bit的ECC校验位,
On-Die ECC除了支持对DRAM进行数据读写时进行ECC计算和校验纠错,也支持DRAM颗粒在空时刻自动进行存储数据校验清除以及手动控制对在存储数据进行扫描。根据JEDEC要求,DRAM在24小时内至少要对全部数据完成一次扫描纠错。其扫描纠错过程称之为“Read-Modify-Write”,简写为RMW,从字面理解也不难看出,其执行的过程就是将数据和ECC从DRAM Array中读出,对数据进行检错纠错,然后将纠错后的数据和ECC写回DRAM Array中。 以x4 DRAM颗粒为例,BL16模式下“Read-Modify-Write”框图如下: Read-Modify-Write框图 对于x4 DRAM颗粒BL16模式下Write过程,DRAM提供64bit数据用于组成128bit数据组合前,会先对读取出来的数据进行ECC校验,确保数据的正确性,不难推测出实际上读取出来的长度也是128bit,只是选取了其中的64bit用于组合写入数据生成ECC校验位。 X4 DRAM Write过程框图 对于x8与x16 DRAM颗粒,write操作在BC8与BL16两种模式对应着两种不同的情况,BC8模式下,每次传输的数据量与x4颗粒BL16相似只有64bit(x16颗粒的高低8位DQ分别在2个code word中,每个是64bit),因此,也需要RMW的过程用于补齐128bit;BL16模式下,每次传输数据刚好128bit,因此,不需要RMW过程来读取额外的数据便可以直接计算ECC校验位,然后将数据和ECC写入对应地址位,此种写入方式称为JW(Just Write)模式。 JESD79-5中介绍x4 DRAM还有一种BL32(Optional)的模式,此种模式下每次传输的数据也是128bit,写入方式同样为JW模式。 在读数据时,DRAM颗粒同样会对每个128bit数据组进行ECC校验,并纠正single bit error,但与RMW不同的是,读周期中并不会对将纠错的数据写回DRAM Array中。 |
|