随着服务器内存容量需求的不断增长,对内存可靠性的要求也必须随之不断提高,道理很简单,越多的内存被使用,内存存取错误的可能性就越容易发生。于是,关于内存可靠性的各种保障措施也日益受到重视。
下面我们一起探讨一下关于内存的数据保护技术:
奇偶校验技术
我们知道,一般的个人计算机上也有使用内存的检错技术,称为奇偶校验(Parity
Checking),奇偶校验实现的方式比较简单,即在传送字符的各位之外,再传送1位奇/偶校验位,可采用奇校验或偶校验。这种技术能够检测出信息传输过程中的部分误码(1位误码能检出,2位及2位以上误码不能检出),由于其实现简单,在中低端领域到了广泛使用。同时,由于其检错方式过于简单,因此它只能发现单比特错误,而且不能纠错,在发现错误后,只能要求重发。
ECC技术
而服务器内存中,由于对可靠性的要求要高得多,所以都采用ECC技术。ECC技术除了可以检测并纠正单比特错误外,还可以检测出2~4比特的错误。当发现多比特错误时,ECC内存产生一个不可屏蔽的中断,通知系统数据出现错误。在ECC编码方案中,每个数据块有一个8比特的校验用的数据,用于纠正单比特的错误。每次把数据写入内存时,ECC采用特殊的算法生成校验码。该算法把所有的校验和累加起来,得到一个校验和(Checksum),该校验和与数据存储在一起。当从内存中读取数据的时候,需要重新计算校验和,并且与原来的校验和进行比较。如果计算出的校验和与原来的校验和相等,那么说明存储的数据是正确的,可以继续下一步工作;如果与原来的校验和不相等,那么说明存储的数据是错误的。这时,将把出现错误的数据隔离起来,并且报告给系统。如果出现的是单比特错误,那么可以对其进行纠正,输出正确的数据,系统继续正常工作。
高级ECC技术
ECC内存对于许多应用可以提供充分的保护,但是,随着内存容量的增加,ECC内存保护的效率开始降低。为了解决这一问题,HP公司开发了高级ECC内存技术,并得到广泛应用。标准的ECC内存在从DIMM内存读取数据时,只能发现单比特的错误,而高级ECC内存可以发现DRAM内存芯片中的多比特错误,从而可以纠正DRAM内存芯片的问题。在高级ECC内存技术中,有4比特的存储设备,每个芯片对应一个数据字中的4位。这4比特都和一个ECC设备相连,因此如果一个芯片的数据发生错误,则产生4个独立的单比特错误,从而可以得到纠正。
因为每个ECC设备可以纠正单比特的错误,所以高级ECC技术实际上能够纠正发生在同一个DRAM芯片中的多比特错误。因此,高级ECC技术可以提供很好的内存数据保护。
内存热备技术
这是一种基于冗余备份思想的技术,在进行内存热备时,做热备份的内存在正常情况下是不使用的,也就是说系统是看不到这部分内存容量的。每个内存通道中有一个DIMM不被使用,预留为热备内存。芯片组中设置有内存校验错误次数的阈值,
即每单位时间发生错误的次数。当工作内存的故障次数达到这个“容错阈值”,系统开始进行双重写动作,一个写入主内存,一个写入热备内存,当系统检测到两个内存数据一致后,热备内存就代替主内存工作,故障内存被禁用,这样就完成了热备内存接替故障内存工作的任务,有效避免了系统由于内存故障而导致数据丢失或系统宕机。这个做热备的内存容量应大于等于所在通道的最大内存条的容量,以满足内存数据迁移的最大容量需求。
内存镜像技术
内存镜像(Memory
Mirroring)技术的工作原理与硬盘的热备份类似,为了确保当某个DIMM存储芯片失效的时候,内存保护技术能够自动利用备用的比特位自动找回数据,从而保证服务器的平稳运行。该技术可以纠正发生在每对DIMM内存中多达4个连续比特位的错误。当出现随机性的软内存错误,可以通过使用热备份的比特位来解决;如果出现永久性的硬件错误,也将利用热备份的比特位使得DIMM内存芯片继续工作,直到被替换为止。内存镜像会将内存数据做两个拷贝,分别放在主内存和镜像内存中。系统工作时会向两个内存中同时写入数据,因此使得内存数据有两套完整的备份。由于采用通道间交叉镜像的方式,所以每个通道都有一套完整的内存数据拷贝。
内存镜像需要内存中的所有数据均存有副本,系统正常运行时所使用的是原本,而当其中一份宿主失效时,另外那份就随即补替工作,有效防止了由于内存通道故障导致的数据丢失,极大提升了服务器可靠性。这同磁盘系统中的RAID
1非常相似,因此,实现这一功能需要双倍的物理内存,而实际容量的利用率只有50%。
内存镜像跟内存热备的区别是:内存镜像主要是希望通过备份内存上的数据来恢复出错内存的数据,而内存热备则是彻底用备份内存接替出错内存的所有工作。
内存刷洗技术
内存刷洗(Memory
Scrubbing)技术—系统会间歇地测试内存的存取错误,当错误被侦查到时,系统会向用户发出警告,并调用备用内存替换出现错误的部分,而这一替换任务便交给在线备用内存(On-line
Spare Memory)技术来完成—在原本中有一部分是保留内存,不能够用作常规性的操作,当使用的内存块出现错误时,保留内存便被激活以代替其工作。
可以看到,内存镜像技术是完整和全面的保护措施,而内存刷洗技术则是对原本内存可靠性的保证。当然,内存刷洗技术也会同时对副本内存进行操作,试想倘若没有内存刷洗技术的支持,副本内存中的数据又如何得到保证,连副本都不能确保正常,那么内存镜像意义何在呢。
双通道内存互备技术
这种技术是针对双通道内存工作模式而言的,在Intel的Nocona平台北桥芯片E7520、E7525和E7320芯片组中融入了这种技术:当E7520的主板以双通道状态工作时,如果由于某种意外导致内存双通道失效,那么系统可立刻切换到单通道内存工作模式,此时虽然内存性能会大幅度下降,但却保证了系统的正常运作,而这一功能的实现也要归功于内存刷洗技术不断地侦查内存子系统的潜在错误。
|