随着内存技术不断发展,服务器上内存的容量、密度和速度也越来越高。目前在市场上出现的
内存条最高密度可以做到每条内存条 4 个 Rank,容量达到 32GB/条,最高速度达到 1.6GHz。
高密度高频率也意味着较高的价格,也可能会带来更高的功耗。那么到底应该怎么根据实际的
需要来选择内存条呢?
内存的种类
目前服务器的内存总线技术基本上没有太大的变化,依旧使用 DDR3 技术。DDR3 是并行传输
技术,因此要保证并行数据传输的有效性,就必须在内存条上下功夫。目前内存条的种类有三种:
UDIMM, RDIMM, LRDIMM。
1.UDIMM:也称为 Unbuffered DIMM。当数据从 CPU 传到每个内存颗粒时,UDIMM 要求保证
CPU 到每个内存颗粒之间的数据传输距离相等,这样并行传输才会有效。这需要极高的制造工艺,
极难做到高密度、高频率。因此 UDIMM 容量和频率都较低。不过,UDIMM 由于在 CPU 和内存之
间没有任何缓存,因此同频率下时延较小。目前常见的是单条容量 2GB/4GB,最高主频也只能到达
1.33GHz。
2.RDIMM:也称为 Registered DIMM。为了保证并行传输的有效性,RDIMM 在内存条上加了
一个寄存器进行转发。它位于 CPU 和内存颗粒之间,这样就减少了并行传输的距离。同时由于寄存
器效率很高,因此 RDIMM 的密度和频率就容易提高。RDIMM 目前是较为主流的内存条,单条容
量在 2~32GB 之间,频率也有 1.33GHz 和 1.6GHz 两种选择。绝大多数 2 路通用配置的服务器出厂
时通常都会配置这种类型的内存。
3.LRDIMM:也称为 Load Reduced DIMM。RDIMM 虽然提高了传输有效性,但由于寄存器大
小有限,当单条内存中内存颗粒以最高的密度 4 Rank 进行部署时,并行传输的有效性和频率就会大
大下降。例如在使用 32G RDIMM 时,在服务器的每个内存通道上最多只能部署 2 条内存条,而且
只能运行在 800MHz。
总结一下:
1.从价格的角度看, RDIMM 比较适中。小容量的 UDIMM 较为便宜,但是由于制造工艺要求高,
大容量的 UDIMM 价格甚至超过 RDIMM。LRDIMM 价格高于 RDIMM 与 UDIMM。 
2.从容量的角度看,只有 LRDIMM 能够支持到最大化的总内存容量。不过主要应用所需要的内
存容量一般通过部署 RDIMM 就可以达到。 
3.从主频的角度看,目前只有 RDIMM 支持 1.6GHz,可以拥有更大带宽和小时延。
4.从时延的角度看,虽然同频率下 UDIMM 时延最小,但是 RDIMM 可以支持 1.6GHz,用更高
的频率来降低时延。 
5.从功耗的角度看,LRDIMM 最高,RDIMM 和 UDIMM 较低。
结论:
如果需要最大的内存容量,就必须使用 LRDIMM;如果不需要最大的内存容量,使用 RDIMM
(1.6GHz)性能、价格和可扩展性较好;如果考虑功耗,可以使用低电压 DDR3L 内存,并控制其
运行在较低频率下。

关于内存类型 UDIMM、RDIMM、LRDIMM 的学习结论(转)的更多相关文章

  1. D3D的内存类型

    一.对D3D中AGP显存.内存.显存三种内存的解释 三种内存AGP内存(非本地显存),显存(本地内存),系统内存,其中我们都知道系统内存就是咱那内存条,那这AGP内存是个啥玩意啊?其实是因为在以前显卡 ...

  2. MTRR内存类型范围寄存器

    1.MTRR的概念 内存类型范围寄存器(MTRRs,翻译过来真别扭,后面都以MTRR直接来说了)提供了一种机制,这种机制其实就是确定在系统内存中物理一段内存的类型.这个类型其实是正对CPU来说的,见图 ...

  3. JVM内存回收机制——哪些内存需要被回收(JVM学习系列2)

    上一篇文章中讨论了Java内存运行时的各个区域,其中程序计数器.虚拟机栈.本地方法栈随线程生灭,且创建时需要多少内存,基本上在译期间就决定的了,所以在内存回收时无需特殊的关注.而堆和方法区则不同,首先 ...

  4. JS类型(2)_JS学习笔记(2016.10.02)

    undefined undefined是全局对象(window)的一个特殊属性,其值是未定义的.但 typeof undefined 返回 'undefined' . 虽然undefined是有特殊含 ...

  5. JS类型(1)_JS学习笔记(2016.10.02)

    js类型 js中的数据类型有undefined,boolean,number,string,null,object等6种,前5种为原始类型(基本类型),基本类型的访问是按值访问的,就是说你可以操作保存 ...

  6. python的内存管理与垃圾回收机制学习

    一.python内存申请: 1.python的内存管理分为六层:最底的两层有OS控制.第三层是调用C的malloc和free等进行内存控制.第四层第五层是python的内存池.最上层使我们接触的直接对 ...

  7. 类型和变量(C#学习笔记02)

    类型和变量 [C#类型和变量(原文参考官方教程)]https://docs.microsoft.com/zh-cn/dotnet/csharp/tour-of-csharp/types-and-var ...

  8. JavaScript 类型、原型与继承学习笔记

    目录 一.概览 二.数据类型 1. JavaScript中的数据类型 2. 什么是基本类型(Primitive Data Type) 2.1 概念 2.2 七个基本类型 2.3 基本类型封装对象 3. ...

  9. C#匿名类型(Anonymous Type)学习日记

    当我们不要定义复杂的方法,事件,构造函数这样复杂的类的时候,可以动态的生成一个自定义的数据类型 --> 匿名类型. 1.定义匿名类型 定义一个匿名类型时,需要用到 var 关键字和对象初始化语法 ...

随机推荐

  1. Java11-java基础语法(十)类设计综合案例

    Java11-java语法基础(十)类设计综合案例 一.类综合设计方法 1.类设计步骤 (1)分析数据成员 (2)分析成员方法和构造方法 (3)画出类图 (4)编码测试 2.具体问题 1)分析数据成员 ...

  2. android显示通知栏Notification以及自定义Notification的View

    遇到的最大的问题是监听不到用户清除通知栏的广播.所以是不能监听到的. 自定义通知栏的View,然后service运行时更改notification的信息. /** * Show a notificat ...

  3. WorkerMan源码分析(resetStd方法,PHP中STDIN, STDOUT, STDERR的重定向)

    WorkerMan中work.php中 resetStd 方法中代码如下 public static function resetStd() { if (!static::$daemonize || ...

  4. 快速掌握Ajax-Ajax基础实例(Ajax返回Json在Java中的实现)

    (转)实例二:Ajax返回Json在Java中的实现 转自http://www.cnblogs.com/lsnproj/archive/2012/02/09/2341524.html#2995114 ...

  5. execute() 和 sumbit() 的区别

    execute()内部实现 1.首次通过workCountof()获知当前线程池中的线程数, 如果小于corePoolSize, 就通过addWorker()创建线程并执行该任务: 否则,将该任务放入 ...

  6. (O)JS高阶函数应用——函数节流

    在一些函数需被频繁调用的场景,如:window.onresize.mousemove.scroll滚动事件.上传进度等等,操作频繁导致性能消耗过高,而造成浏览器卡顿现象,我们可以通过函数节流的方式解决 ...

  7. python面向对象的三大特征

    1.封装: 封装就是对类和对象的成员访问进行限制,设定可以访问的方式和不可以访问的方式. 分类: 私有化的封装:当前类/对象种可以使用,类/对象外和子类/对象都不可以用 受保护的封装:当前类/对象和子 ...

  8. 网页定时器setTimeout( )

    不斷重複執行的 setTimeout( ) setTimeout( ) 預設只是執行一次, 但我們可以使用一個循環方式, 使到一個setTimeout( ) 再啟動自己一次, 就會使到第二個 setT ...

  9. IOS初级:UIView和UIButton

    AppDelegate.m - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDict ...

  10. c#使用Stopwatch来计算时间间隔

    今天要记录一个接口的耗时情况,就要求去写一段测试各个代码运行时间的方法,于是就加了这么一段代码.原来的做法是在代码执行之前和之后获取系统时间,然后相减.被改成了使用c#里的Stopwatch来计算时间 ...