注:本篇博文内容摘录自互联网,本人只做整理,整理的目的单纯只为自己学习积累,无任何商业目的,本人不承担任何责任和连带责任。 ECC内存

ECC内存,即应用了能够实现错误检查和纠正技术(ECC)的内存条。一般多应用在服务器及图形工作站上,这将使整个电脑系统在工作时更趋于安全稳定。ECC是“Error Checking and Correcting”的简写,中文名称是“错误检查和纠正”。

技术原理

要了解ECC技术,就不能不提到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位中存储的数据,计算结果是否与校验位相一致。当CPU发现二者不同时就作出视图纠正这些错误,但Parity有个缺点,当内存查到某个数据位有错误时,却并不一定能确定在哪一个位,也就不一定能修正错误,所以带有奇偶校验的内存的主要功能仅仅是“发现错误”,并能纠正部分简单的错误。

通过上面的分析我们知道Parity内存是通过在原来数据位的基础上增加一个数据位来检查当前8位数据的正确性,但随着数据位的增加Parity用来检验的数据位也成倍增加,就是说当数据位为16位时它需要增加2位用于检查,当数据位为32位时则需增加4位,依此类推。特别是当数据量非常大时,数据出错的几率也就越大,对于只能纠正简单错误的奇偶检验的方法就显得力不从心了,正是基于这样一种情况,一种新的内存技术应允而生了,这就是ECC(错误检查和纠正),这种技术也是在原来的数据位上外加校验位来实现的。不同的是两者增加的方法不一样,这也就导致了两者的主要功能不太一样。它与Parity不同的是如果数据位是8位,则需要增加5位来进行ECC错误检查和纠正,数据位每增加一倍,ECC只增加一位检验位,也就是说当数据位为16位时ECC位为6位,32位时ECC位为7位,数据位为64位时ECC位为8位,依此类推,数据位每增加一倍,ECC位只增加一位。总之,在内存中ECC能够容许错误,并可以将错误更正,使系统得以持续正常的操作,不致因错误而中断,且ECC具有自动更正的能力,可以将Parity无法检查出来的错误位查出并将错误修正。

目前一些厂商推出的入门级低端服务器使用的多是普通PC用的SD RAM,不带ECC功能,在选购时应该注意这个指标。

ECC内存误区

目前是一谈到服务器内存,大家都一致强调要买ECC内存,认为ECC内存速度快,其实是一种错误地认识,ECC内存成功之处并不是因为它速度快(速度方面根本不关它事只与内存类型有关),而是因为它有特殊的纠错能力,使服务器保持稳定。ECC本身并不是一种内存型号,也不是一种内存专用技术,它是一种广泛应用于各种领域的计算机指令中,是一种指令纠错技术。它的英文全称是“Error Checking and Correcting”,对应的中文名称就叫做“错误检查和纠正”,从这个名称我们就可以看出它的主要功能就是“发现并纠正错误”,它比奇偶校正技术更先进的方面主要在于它不仅能发现错误,而且能纠正这些错误,这些错误纠正之后计算机才能正确执行下面的任务,确保服务器的正常运行。之所以说它并不是一种内存型号,那是因为并不是一种影响内存结构和存储速度的技术,它可以应用到不同的内存类型之中,就象我们在前面讲到的“奇偶校正”内存,它也不是一种内存,最开始应用这种技术的是EDO内存,现在的SD也有应用,而ECC内存主要是从SD内存开始得到广泛应用,而新的DDR、RDRAM也有相应的应用,目前主流的ECC内存其实是一种SD内存。

带ECC校验的内存还得要主板支持,并在BIOS中进行相应的设置,目前只应用在大多数服务器主板。

FBD内存

FBD即Fully-buffer DIMM(全缓存模组技术),它是一种串行传输技术,可以提升内存的容量和传输带宽.是Intel在DDR2、DDR3的基础上发展出来的一种新型内存模组与互联架构,既可以搭配现在的DDR2内存芯片,也可以搭配未来的DDR3内存芯片。FB-DIMM可以极大地提升系统内存带宽并且极大地增加内存最大容量。

与现有的普通DDR2内存相比,FB-DIMM技术具有极大的优势:在内存频率相同的情况下目前能提供四倍于普通内存的带宽,并且能支持的最大内存容量也达到了普通内存的24倍,系统最大能支持192GB内存。FB-DIMM最大的特点就是采用已有的DDR2内存芯片(以后还将采用DDR3内存芯片),但它借助内存PCB上的一个缓冲芯片AMB(Advanced Memory Buffer,高级内存缓冲)将并行数据转换为串行数据流,并经由类似PCI Express的点对点高速串行总线将数据传输给处理器。

与普通的DIMM模块技术相比,FB-DIMM与内存控制器之间的数据与命令传输不再是传统设计的并行线路,而采用了类似于PCI-Express的串行接口多路并联的设计,以串行的方式进行数据传输。在这种新型架构中,每个DIMM上的缓冲区是互相串联的,之间是点对点的连接方式,数据会在经过第一个缓冲区后传向下一个缓冲区,这样,第一个缓冲区和内存控制器之间的连接阻抗就能始终保持稳定,从而有助于容量与频率的提升。

Register(REG内存、RDIMM内存)

Register即寄存器或目录寄存器,在内存上的作用我们可以把它理解成书的目录,有了它,当内存接到读写指令时,会先检索此目录,然后再进行读写操作,这将大大提高服务器内存工作效率。带有Register的内存一定带Buffer(缓冲),并且目前能见到的Register内存也都具有ECC功能,其主要应用在中高端服务器及图形工作站上,如IBM Netfinity 5000。

RDIMM:registered DIMM(Registered Dual In-line Memory Module),带寄存器的双线内存模块。表示控制器输出的地址和控制信号经过Reg寄存后输出到DRAM芯片,控制器输出的时钟信号经过PLL后到达各DRAM芯片。Registered内存本身有两种工作模式,即Registered模式和Buffered模式。在支持Registered工作模式的主板上工作时,Registered内存工作于Registered模式,这时主板上的地址信号和控制信号会比数据信号先一个时钟周期到达DIMM,送入Register芯片后会在其中停留一个时钟周期,然后在下一个时钟信号的上升沿从Register输出,与此时从主板上到达DIMM的数据信号一起同时传送到SDRAM。当Registered内存工作在普通的主板上时,为Buffered工作模式,这时所有的信号也基本上是同时到达DIMM再同时传送到SDRAM,Register芯片这时在功能上只相当于一个简单的Buffer,其输入到输出之间是直通的,只简单的起到改善地址信号和控制信号的作用,时序上与Unbuffered内存是一样的。比起UDIMM来由于有了寄存器,所以RDIMM处理速度各方面性能都有不少提升,有2种工作模式,适合不同的主板,并且RDIMM支持最高配置,不会受到内存插的数量限制。(一般用于服务器)

Chipkill(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个错误数据位,服务器的可靠性和稳定得到了更加充分的保障。

UDIMM内存(无缓冲内存)

UDIMM:无缓冲双信道内存模块 (Unbuffered Dual In-Line Memory Modules,UDIMM).(一般常用的内存条,用于一般家商用),UDIMM 表示控制器输出来的地址和控制的信号直接到达DIMM的DRAM芯片上。它不支持服务器内存满配,就是最高容量了,因为使用UDIMM内存时最大使用每通道只能用2个插槽,但支持3通道,所以只能每边插6条,一共12条内存,不能插满18个插槽,虽然性能会有所下降,但是对于预算比较有限的用户来说,是个很好的方案。

RDIMM支持两种工作模式,支持高性能的registered DIMM工作模式,可以达到内存容量的最高配,价格较高。

UDIMM只能工作在Unbuffered 模式,无法达到内存的最高配,性能不如RDIMM,但是价格相对较低。

转载于:https://blog.51cto.com/0bill0/447283

常见的服务器内存浅析相关推荐

  1. 服务器内存和常见内存的不同点在哪

    一般来说,内存越多,可用的缓存越多,计算机的运行速度也越快.类似地,服务器的内存越多,可用的缓存越多,站点的速度也就越快.服务器内存和普通内存有什么区别? 一.选购 我们通常会看到内存模块是DDR3还 ...

  2. 白话Elasticsearch67-不随意调节jvm和thread pool的原因jvm和服务器内存分配的最佳实践

    文章目录 概述 不随意调节jvm和thread pool的原因 jvm gc threadpool jvm和服务器内存分配的最佳实践 jvm heap分配 将机器上少于一半的内存分配给es 为什么不要 ...

  3. 服务器内存技术知识充电

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

  4. web 服务器 内存 影响_高性能服务器架构思路「不仅是思路」

    在服务器端程序开发领域,性能问题一直是备受关注的重点.业界有大量的框架.组件.类库都是以性能为卖点而广为人知.然而,服务器端程序在性能问题上应该有何种基本思路,这个却很少被这些项目的文档提及.本文正式 ...

  5. 线上服务器内存分析及问题排查

    转载自  线上服务器内存分析及问题排查 平常的工作中,在衡量服务器的性能时,经常会涉及到几个指标,load.cpu.mem.qps.rt等.每个指标都有其独特的意义,很多时候在线上出现问题时,往往会伴 ...

  6. 服务器内存类型UDIMM、RDIMM和LRDIMM比较

    Dual-Inline-Memory-Modules,即双列直插式存储模块 随着内存技术不断发展,服 务器上内存的容量.密度和速度也越来越高.目前在市场上出现的内存条最高密度可以做到每条内存条4个Ra ...

  7. 2020年常见的服务器都有哪些?都有什么优缺点?

    2020年常见的服务器都有哪些?都有什么优缺点? 不知道大家是不是跟我一样,刚入行时总是搞不清物理服务器(独立服务器).VPS服务器(虚拟专用).云服务器.虚拟主机.裸金属服务器这些概念.说实话,我刚 ...

  8. 服务器被攻击 常见的服务器攻击方式有哪些

    现在很多网站的服务器都被攻击过,这会给网站带来很大损失,所以应该采取一些防御措施.下面就带大家来看看怎样防止服务器被攻击,常见的服务器攻击方式有哪些.     怎样防止服务器被攻击   1.关闭端口, ...

  9. 服务器内存与台式机内存区别

    2019独角兽企业重金招聘Python工程师标准>>> 大家在自己DIY服务器或工作站时,不知选择哪种类型的内存.常见的内存类型有哪些,具体性能差异有哪些呢,如何给自己的服务器或工作 ...

最新文章

  1. IEC61850笔记--IEC61850应用入门(二)
  2. 神策数据:从产品与运营视角,了解教育行业转介绍
  3. CSSE*PTC student tutoring program student lecturers of 2018-2019 Academic Year.
  4. html将边框向下移的代码,设置margin-left实现div右移
  5. provider android简书,Android 使用ContentProvider在应用间共享数据
  6. python 封装_Python 面向对象三大特性之封装
  7. C#刷遍Leetcode面试题系列连载(2): No.38 - 报数
  8. 扩大swap分区--Ubuntu手记之系统配置
  9. OpenCV中的函数子
  10. (BFS)Dungeon Master(poj2251)
  11. 新勒索软件在受害者阅读两篇勒索软件文章后解密
  12. c语言计算器小程序,C语言计算器小程序(源代码+实习报告).doc
  13. 爱尚QQ网修改QQ在线机型源码
  14. flash基础动画制作
  15. 【强档推荐】动漫初音未来Ⅱ主题
  16. 微信小程序:计算器(附源码)
  17. php内部网,php – WordPress内部网址重写是如何工作的?
  18. ce修改面板属性_用CE脚本进行FGO一键修改局内属性
  19. Android肝帝战纪之基于上篇单Activity+多Fragment框架,开发电商式导航栏,多Fragment切换
  20. Java高并发系列---第1天(概念)

热门文章

  1. executing an update/delete query问题
  2. 构建之法 学习笔记06
  3. javascript编译与运行的几个实验
  4. 使用Spring2.5的Autowired实现注释型的IOC(转载)
  5. [转载 css]word-wrap,word-break,white-space,text-overflow的区别和用法
  6. 设置Golang的GOPATH
  7. 制作ubuntu16.04的docker镜像
  8. 开源ImageFilter库v0.2:新增7类滤镜,支持12种图片效果
  9. 【Objective-C学习笔记】变量和基本的数据类型
  10. spring事务管理 TransactionProxyFactoryBean源码分析