看懂服务器 CPU 内存支持,学会计算内存带宽
大家好,我是飞哥!在深入相识服务器 CPU 的型号、代际、片内与片间互联架构一文中我们相识了服务器 CPU 的内部架构。在其中我们看到有一个内存控制器。
关于CPU内存控制器中会有许多专技术细节。例如下面是Skylake 代际 CPU 对内存的支持情况。参见https://en.wikichip.org/wiki/intel/microarchitectures/skylake_(server)
DRAM
6 channels of DDR4, up to 2666 MT/s
RDIMM and LRDIMM
bandwidth of 21.33 GB/s
aggregated bandwidth of 128 GB/s对于这个输出我们给大家抛出几个问题
[*]其中的 6 channle 是什么意思?
[*]RDIMM、LRDIMM 又分别代表的是什么内存?
[*]为什么内存带宽中 bandwidth 是 21.33 GB/s,aggregated bandwidth 128 GB/s?
以是本日我们就具体展开对 CPU 内存控制器相关参数展开介绍。
内存通道数与带宽
下图是 Skylake 的 CPU 的总体布局图。
https://i-blog.csdnimg.cn/blog_migrate/15772df8fee4eb78f83cdddb9f15e8f8.jpeg该 CPU 有两个内存控制器(IMC,Integrate Memory Controller)。每个内存控制器上都有一个 DDR PHY。DDR PHY 是连接 DDR 内存条和 内存控制器的桥梁。它负责把内存控制器发过来的数据转化成符合 DDR 协议的信号,并传给内存颗粒。也负责把内存返回给 CPU 的数据转化成内存控制器认识的信号,最终交给 CPU 核来处置惩罚。
每个 DDR PHY 有 3 个 DDR4 channels(通道)。每个 channel 有两个内存插槽,也就是说可接 2 条 DIMM(关于 DIMM 背面会介绍,这里把它明白为一个内存条就可以了)。
以是该代际 CPU 统共有 6 channels,最多可支持插入 12 条内存条。
每个内存通道都是可以独立工作的。该 CPU 支持的内存数据频率是 2666MT/s,理论上每秒钟可以传输 2666M 次数据。由于如今都是 64 位的计算机。以是,可以算得
[*]单通道内存带宽 = 2666M * 64 比特 = 2666M * 8 字节 = 21.33 GB/s
[*]6个通道的总带宽 = 21.33 GB/s * 6 = 128 GB/s
内存条模块规格
我们再来看 Skylake 内存控制器中支持的 RDIMM and LRDIMM。那么 RDIMM 和 LRDIMM 范例的内存是什么呢?我们先来看 DIMM。
DIMM 是双列直插内存模块,是当代最常用的内存条模块的规格,英文全名 Dual In-Line Memory Module。表示的是信号接触在金手指两侧,而且在 DIMM 条的边沿作为信号接触面。
根据它的名称可以看出汗青上曾出现过 SIMM(Single-Inline Memory Module)。SIMM 的位宽是 32 位,这是 32 位机期间的产物。到了 64 位机期间后,就同一都用 DIMM 了。Dual 的意思是 32 位的双倍,64 位。这种规格同等连续至今。
针对不同的应用场景,内存条的标准也是不太一样的。大致可以分为如下几种。
UDIMM:无缓冲双列直插内存模块,是 Unbuffered DIMM 的缩写。
指地点和控制信号不经缓冲器,无需做任何时序调整,直接到达 DIMM 上的各个 DRAM 芯片。这种内存要求 CPU 到每个内存颗粒之间的传输距离相称,这样并行传输才有用。而保证 CPU 到每个颗粒之间传输距离须要较高的制造工艺,这样就对内存的容量和频率都产生了限制。这种内存由于容量小,以是在个人台式机上用的比力多。
下图是一个台式机的 UDIMM 16GB 内存条。该内存条反面是空的,统共有八个黑色的内存颗粒。
https://i-blog.csdnimg.cn/blog_migrate/1a5ec26b00445a5bab3356b40adb64f8.png别的上面这个内存条还标识了 16 GB 2R*8 PC4-3200AA-U82-11。
SO-DIMM:小外形模块,是 Small Outline DIMM 的缩写。
在条记本电脑出现后,对内存的体积和功耗都要求更小一些。SO-DIMM 就是针对条记本电脑界说的标准。其宽度标准是 67.6 mm。如下图是两个条记本内存条,可见体积要比台式机小不少。
https://i-blog.csdnimg.cn/blog_migrate/fe4434f6be0c3b6ce16c272ee59be5eb.pnghttps://i-blog.csdnimg.cn/blog_migrate/58ef53e16c8bc6a4555651598a720f88.png
RDIMM:带寄存器双列直插模块,是 Registered DIMM 的缩写。RDIMM 在内存条上加了一个寄存缓存器(RCD,Register Clock Driver)进行传输。控制器输出的地点和控制信号经过Register芯片寄存后输出到DRAM芯片。
CPU 访问数据时都先经过寄存器再到内存颗粒。减少了 CPU 到内存颗粒的距离,使得频率可以提高。而且不再像之前一样要求每个内存颗粒传输距离相称,工艺复杂度因寄存缓存器的引入而下降,使得容量也可以提高到 32 GB。重要用在服务器上。
下图是一个服务器RDIMM 32 GB 内存条。这个服务器内存条不光正面有许多内存颗粒,连反面也有。可见服务器内存的颗粒数量比普通条记本电脑、个人台式机的颗粒都要多许多。最关键的是内存条正中央位置的较大颗粒的寄存缓存器,表明了这是一条RDIMM内存。
https://i-blog.csdnimg.cn/blog_migrate/9647e4357a2661ff4f9f2e7c348e776f.pnghttps://i-blog.csdnimg.cn/blog_migrate/e30eb99b249107e51b24be7a644b0c94.png
从图中可见内存的参数标识是 32 GB 2R*4 PC4-2666V-RB2-12-DB1。
LRDIMM:低负载双列直插内存模块,是 Load Reduced DIMM 的缩写。
LRDIMM 相比 RDIMM 在引入寄存缓存器 RCD 的底子上,又进一步引入了数据缓冲器 DB(Data Buffer)。引入数据缓冲器作用是缓冲来自内存控制器或内存颗粒的数据信号。实现了对地点、控制信号、数据的全缓冲。成本更高,但可以支持更大容量。
https://i-blog.csdnimg.cn/blog_migrate/41e1cd879d1ac0fb027b78875a979482.pngECC 内存
DRAM 内存是一种易失性的存储,它是根据电容的电位高低来判断存储的是 0 或 1 的。但是电容电位固然有定时刷新来作为保障,却仍旧不能保证其读取出来的数据和当时存进去的同等。如果出现了不同等,那这种现象就叫做比特翻转。一根 8 GB 的内存条均匀大约每小时会出现 1 - 5 个这样的错误。
我们个人在办公的时间,由于内存重要都用来处置惩罚图片、视频等数据。即使内存出现了比特翻转,可能影响的只是一个像素值,没有太大的影响,也很难感觉出来。
在服务器应用中,处置惩罚的一样平常都是非常告急的计算,可能是一些推荐计算,也可能是一笔订单交易,对出错的容忍度是很低的。别的一台服务器常常是连续要运行几个月甚至是几年。因此总的来说,服务器对稳固性的要求极高,不允许比特翻转错误发生。
ECC 是一种内存专用的技术。它的英文全称是 “Error Checking and Correcting”,对应的中文名称就叫做“错误检查和纠正”。从它的名称中我们可以看出,ECC 不光能发现内存中的错误,而且还可以进行纠正。
在实现上,ECC 内存会板上额外再添加一个内存颗粒来专门负责检查错误并纠正错误。
https://i-blog.csdnimg.cn/blog_migrate/d2b93e11131013dabc833c78fd337b0c.png而不带 ECC 的功能是没有多出来的这个颗粒的。
https://i-blog.csdnimg.cn/blog_migrate/fcf56641f63a04306ac5a3e7cff6d909.pngCPU 每个 channel 支持同时支持 72 位的读写,其中 64 位是数据,别的 8 位用于 ECC 校验。
由于有额外的硬件引入。以是 ECC 内存的价格会比普通内存要贵一些,速率也会慢 2% 左右。
总结
服务器 CPU 比普通家用 CPU 贵的缘故原由之一就是它对内存的支持和普通家用 CPU 不一样。
起首就是服务器的 CPU 对内存通道数的支持。普通家用 CPU 一样平常只有双通道,最多也是四通道。而本文中提到的 Skylake 是 2015 年的服务器 CPU,就已经支持了多达 6 个内存通道,最多可以支持 12 个内存条。2023 年 1 月发布的第四代英特尔至强(Intel Xeon)更是支持了 8 内存通道。可以插更多的内存条。
别的就是服务器模块。服务器 CPU 支持 RDIMM(带寄存器双列直插模块)和 LRDIMM(低负载双列直插内存模块)内存。这两种内存单条都有更大的容量。
https://i-blog.csdnimg.cn/blog_migrate/f002b4d1d9a339fa84e3915439c97d3e.png compare.png 别的就是服务器几乎全系都支持 ECC 内存。而家用 CPU 只有最近几年才开始支持 ECC。
我们再回到开篇提到的三个问题。
问题1:其中的 6 channle 是什么意思?这值得是 CPU 支持的内存通道数量为 6 ,不同的通道可以并行工作,通道数量越高,访问内存性能越好。
问题2:RDIMM、LRDIMM 又分别代表的是什么内存?RDIMM、LRDIMM 是在控制信号上、或者数据信号上加了一些硬件缓存,有了这些缓存可以支持单条做到更大的容量。制作工艺比力复杂,价格也会偏贵一些。
问题3:为什么内存带宽中 bandwidth 是 21.33 GB/s,aggregated bandwidth 128 GB/s?单通道内存的带宽是根据内存的数据频率计算出来的,由于数据频率是 2666M,以是算得单通道带宽为 21.33 GB/s。由于统共有 6 个通道,以是总的带宽可以达到 128 GB/s。
不外要注意的是,厂商的参数中都指的是理论最大带宽。而实际运行的过程中,内存硬件中会有各种耽误,实际带宽到不了这么高。
https://i-blog.csdnimg.cn/blog_migrate/8ff225703ca650bc5d65f22ad66af3f4.png
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]