首页 > 服务器 > Web服务器 > 正文

服务器内存与普通内存相关知识问与答

2024-09-01 13:44:29
字体:
来源:转载
供稿:网友

 说起服务器内存,很多人可能会觉得不明所以,其实服务器内存与普通内存还是有着很多共同点的,不过它加入了一些针对高端应用而设计的功能和特性,下面我就以一问一答的方式为各位介绍一下服务器内存。

  问:什么是服务器内存?它与普通PC机上的内存又有什么区别?

  答:服务器内存也是内存,它与我们平常在电脑城所见的普通PC机内存在外观和结构上没有什么明显实质性的区别,它主要是在内存上引入了一些新的技术,仅从外观上是不得出什么结论的。这样或许你就担心了,如果别人拿普通PC机的内存条当服务器内存条卖给怎么知道?这一般来说可以放心,这种可能性几乎为零。因为普通PC机上的内存在服务器上一般是不可用的,服务器认不到的,这就是说服务器内存不能随便为了贪便宜用普通PC机的内存来替代的原因了。至于其根本原因是什么那请请看后面了。

  有些人把具有某种技术的内存就称之为“服务器内存”,其实是不全面的,服务器的这些内存技术之所以在目前看来是服务器在专用,但不能保证永远只能是服务器专用。这些新技术之所以先在服务器上得以应用是因为服务器价格较贵,有条件得以应用,这些新技术由于价格的原因暂时在普通PC机上无法实现应用,这些新技术会随着配件价格的下降会逐步走向普通PC机,就象原来的奇偶校正内存一样原来也是最先应用在服务器上,现在不是很普遍了吗?所以服务器内存并不是一种特指,它是内存新技术在不同时间段上的应用。

  问: 目前主要些什么品牌的服务器内存?

  答:由于服务器内存在技术难度和加工工艺上比普通PC机上的内存有较大提高,所以在服务器内存品牌选择上没有象普通PC机内存一样那么杂,但目前服务器内存品牌也有逐步杂化的趋势,目前主要的服务器内存品牌主要有Kingmax、kinghorse、现代、三星、kingstone、IBM、VIKING、NEC等,但主要以前面几种在市面上较为常见,而且质量也能得到较好的保障。//本文转自www.45it.com电脑软硬件应用网

  问: 服务器内存技术的发展如何?

  答: 服务器内存也与任何其它产品一样,新技术是在不断开发,不断得到应用,然后逐步取代原有的技术,实现它的普及应用。ECC技术在目前来说是服务器内存的主流技术,但新的内存技术已在不断涌现,目前主要有IBM的Chipkill技术在被各内存生产厂商采用。在内存类型上目前主要已有DDR和RAMBUS公司的RDRAM来取代目前的SD内存,这种DDR目前也带有ECC技术。但上述主流内存技术也都是在围绕ECC技术这同一方向,同属于ECC技术范畴。

  问:什么是Chipkill技术?

  答: Chipkill技术是IBM公司为了解决目前服务器内存中ECC技术的不足而开发的,是一种新的ECC内存保护标准。我们知道ECC内存只能同时检测和纠正单一比特错误,但如果同时检测出两个以上比特的数据有错误,则一般无能为力。目前ECC技术之所以在服务器内存中广泛采用,一则是因为在这以前其它新的内存技术还不成熟,再则在目前的服务器中系统速度还是很高,在这种频率上一般来说同时出现多比特错误的现象很少发生,正因为这样才使得ECC技术得到了充分地认可和应用,使得ECC内存技术成为几乎所有服务器上的内存标准。

  但随着基于Intel处理器架构的服务器的CPU性能在以几何级的倍数提高,而硬盘驱动器的性能同期只提高了少数的倍数,因此为了获得足够的性能,服务器需要大量的内存来临时保存CPU上需要读取的数据,这样大的数据访问量就导致单一内存芯片上每次访问时通常要提供4(32位)或8(64位)比特以上的数据,一次性读取这么多数据,出现多位数据错误的可能性会大大地提高,而ECC又不能纠正双比特以上的错误,这样就很可能造成全部比特数据的丢失,系统就很快崩溃了。

  IBM的Chipkill技术是利用内存的子结构方法来解决这一难题。内存子系统的设计原理是这样的,单一芯片,无论数据宽度是多少,只对于一个给定的ECC识别码,它的影响最多为一比特。举个例子来说明的就是,如果使用4比特宽的DRAM,4比特中的每一位的奇偶性将分别组成不同的ECC识别码,这个ECC识别码是用单独一个数据位来保存的,也就是说保存在不同的内存空间地址。

  因此,即使整个内存芯片出了故障,每个ECC识别码也将最多出现一比特坏数据,而这种情况完全可以通过ECC逻辑修复,从而保证内存子系统的容错性,保证了服务器在出现故障时,有强大的自我恢复能力。采用这种内存技术的内存可以同时检查并修复4个错误数据位,服务器的可靠性和稳定得到了更加充分的保障。 

  问: 什么是RAMBUS内存?

  答:RAMBUS技术是RAMBUS公司开发的,运用这种RAMBUS技术的内存他们就把它称之为RAMDRAM,简称之为“RDRAM内存,它与目前市面上的ECC内存不同,但它可能同时带有ECC功能,也有不带ECC功能的。在RAMBUS内存上,你没有专门的ECC的检错芯片,因此从外观上很难区分ECC的RAMBUS内存和非ECC的RAMBUS内存,具有校验功能的RAMBUS内存芯片是18位,而无校验功能的普通RAMBUS内存芯片是16位,具有ECC功能的RDRAM只是在普通的RDRAM中增加了两个校验位,但随着数据位的增加检验位也要跟着增加,也就是说每16位增加两个检验位,照这样的算法推断如果是64MB具有ECC功能的RDRAM其实是72MB,128MB具有ECC功能的RDRAM其实是144MB。

  简单的说RAMBUS内存就是一种高性能、芯片对芯片接口技术的新一代存储产品,它使得新一代的处理器可以发挥出最佳的功能。RAMBUS公司宣称这种新的技术能够提供10倍于普通DRAM和三倍于PC100 SDRAM的性能,单根的RAMBUS DRAM,在16位的数据传输通道上速度可高达800MHz。但要注意的不是所有的机都能用这种RAMBUS内存,因为这种技术真正推出的时间较晚而且不怎么经济,所以目前只有比较早期的主板才能使用RAMBUS内存。 
  问:什么奇偶校验(Parity),它是服务器内存上专用的吗?

  答:直到目前还有人误认为带有“奇偶校正”的内存就是服务器内存,其实时到今日这种说法就完全不正确了,奇偶校正技术在目前来说已是“昨日黄花”了,早就有另外一种ECC技术取代它了,更别说是服务器内存的标准了。

  对于内存中的“奇偶校验(Parity)”要从比特概念说起,学过数字电路的人都知道在数字电路中最小的数据单位就是叫“比特(bit)”,也叫“位”,而电脑是一种数字产品,内存中存储的是数字信号,所以“比特”也是内存中的最小单位,它是通过“1”和“0”来表示数据高、低电平信号的。在数字电路中我们是将8个连续的比特叫做一个字节(byte),在内存中不带“奇偶校验”的内存中的每个字节只有8位,若它的某一位存储出了错误,就会使其中存储的相应数据发生改变而导致应用程序发生错误。

  而带有“奇偶校验”的内存在每一字节(8位)外又额外增加了一位作为错误检测之用。比如一个字节中存储了某一数值(1、0、1、0、1、0、1、1),把这每一位相加起来(1+0+1+0+1+0+1+1=5)。若其结果是奇数,校验位就定义为1,反之则为0。当CPU返回读取储存的数据时,它会再次相加前8位中存储的数据,检查结果是否与校验位相一致。当发现二者不同时就会试图纠正这些错误,但这只是Parity一厢情愿的,当内存检查到某个数据位有错误时,运用Parity技术却并不一定能确定错误在哪一个位,也就不一定能修正错误,所以带有奇偶校正的内存的主要功能仅是“发现错误”,并能纠正部分简单的错误。

  这种技术应用于服务器领域,那还是在72线内存时代(现在普遍是168线的内存),随着这种技术应用领域的深入和价格的下降,现在带有奇偶校正技术的内存普遍都是,广泛应用于普通PC机上,虽然这种技术功能不是很强大,但应用在普通PC机上还是很有效的,所以目前奇偶校正内存并不是服务器专用,而且目前服务器上所用的内存一般都是ECC内存,它比Parity内存更先进。要注意的一点就是现在的主板都可以使用带奇偶校验位或不带奇偶校验位两种内存条,但两种内存不能混用。

  问:什么是ECC内存?它比Parity(奇偶校正)内存有什么优点?

  答: 目前一谈到服务器内存,大家都一致强调要买ECC内存,认为ECC内存速度快,其实是一种错误地认识,ECC内存成功之处并不是因为它速度快(速度方面根本不关它事只与内存类型有关),而是因为它有特殊的纠错能力,使服务器保持稳定。ECC本身并不是一种内存型号,也不是一种内存专用技术,它是一种广泛应用于各种领域的计算机指令中,是一种指令纠错技术。

  ECC的英文全称是“ Error Checking and Correcting”,对应的中文名称就叫做“错误检查和纠正”,从这个名称我们就可以看出它的主要功能就是“发现并纠正错误”,它比奇偶校正技术更先进的方面主要在于它不仅能发现错误,而且能纠正这些错误,这些错误纠正之后计算机才能正确执行下面的任务,确保服务器的正常运行。

  之所以说它并不是一种内存型号,那是因为并不是一种影响内存结构和存储速度的技术,它可以应用到不同的内存类型之中,就象我们在前讲到的“奇偶校正”内存,它也不是一种内存,最开始应用这种技术的是EDO内存,现在的SD也有应用,而ECC内存主要是从SD内存开始得到广泛应用,而新的DDR、RDRAM也有相应的应用,目前主流的ECC内存其实是一种SD内存。

  如果要具体讲一下ECC与Parity的区别在哪能里,那还得它们所实现对应功能的机理来说起。上面我们知道Parity内存是通过在原来数据位的基础增加一个数据位来检查前8位数据的正确性,但随着数据位的增加Parity用来检验的数据位则成倍增加,也就是说当据位为16位时它需要增加2位用于检查,当数据位为32位时则需增加4位,依此类推。而ECC内存,它也是在原来的数据位上外加检验位来实现的。

  不同的是两都增加的方法不一样,这也就导致了两者的主要功能不太一样。它与Parity不同的是如果数据位是8位,则需要增加5位来进行ECC错误检查和纠正,数据位每增加一倍,ECC只增加一位检验位,也就是说当数据位为16位时ECC位为6,32位是为7位ECC位,数据位为64位时为8依此类推,数据位每增加一倍,ECC位只增加一位。关于两种内存技术所需增加的数据位现列表如下,从表中可以看出它们各自的优势在什么地方。

  数据位数 Parity需增加的数据`位数 ECC需增加的数据位数

  数据位数 Parity需增加的数据位数 ECC需增加的数据位数

  8 1 5

  16 2 6

  32 4 7

  64 8 8

  128 16 9

  256 32 10

  512 64 11

  … … …

  从上表可以看出,当数据的位数增加一倍,Parity也增加一倍,而ECC只需增加一位,当数据为64位时所用的ECC和Parity位数相同(都为8),仅从增加的位数来说,当数据为64位以上,ECC具有极大的优势,但在64位以下,ECC在位数上处于劣势,但ECC的优势不仅体现在这方面,它主要体现在它的纠错能力上,这是Parity内存所无法比拟的!在内存中ECC能够容许错误,并可以将错误更正,使系统得以持续正常操作,不致因错误而中断。但在这里需要说明的一点就是ECC内存也不是对所有错误都有能检测并纠正过来,一般来说它也只能同时发现并纠正一个比特的数据错误。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表