内存那些事儿----内存带宽

字数 1994阅读 375评论 0赞 0

系列文章,欢迎阅读

内存那些事儿----基础知识I

https://www.talkwithtrend.com/Article/255113

 

内存那些事儿----基础知识II

https://www.talkwithtrend.com/Article/255115

 

通常做服务器基准性能测试时,内存带宽测试都是必测项目。内存带宽是CPU从内存读取数据或将数据存储到内存的速率。

 

# 理论带宽

理论带宽的计算公式为

带宽=内存核心频率×内存总线位数×倍增系数。

内存核心频率,内存总线位数,倍增系数的概念可以参考文章 内存那些事儿----基础知识I内存那些事儿----基础知识II 。这里再简单描述一下。

核心频率即为内存Cell阵列(Memory Cell Array)的工作频率,它是内存的真实运行频率;

从SDRAM-DDR时代,数据总线位宽时钟没有改变,都为64bit,但是采用双通道技术,可以获得64X2=128bit的位宽。

DDR采用时钟脉冲上升、下降沿各传一次数据,1个时钟信号可以传输2倍于SDRAM的数据,所以又称为双倍速率SDRAM。它的倍增系数就是2。

DDR2仍然采用时钟脉冲上升、下降支各传一次数据的技术(不是传2次),但是一次预读4bit数据,是DDR一次预读2bit的2倍,因此,它的倍增系数是2X2=4。

DDR3作为DDR2的升级版,最重要的改变是一次预读8bit,是DDR2的2倍,DDR的4倍,所以,它的倍增系数是2X2X2=8。

DDR4作为DDR3的升级版,最重要的改变是一次预读16bit,是DDR3的2倍,DDR的8倍,所以,它的倍增系数是2X2X2X2=16。

# 实际计算

下面计算一下一条标称DDR4 3200MHz的内存条在默认频率下的带宽:
3200是指有效数据传输频率,除以16才是核心频率。一条内存只用采用单通道模式,位宽为64bit。所以
内存带宽=(3200/16)×64×16=204,800 Mbit/s。由此可知,如果内存工作在标称频率的时候,可以直接用 标称频率×位宽,简化公式。

再根据8bit(位)=1Byte(字节),得204800/8=25600MByte/s=25.6GB/s (这里除以1000)。

所以标称 DDR4 3200的单条内存,内存带宽是 25.6GB/s。这是理论带宽也是最大带宽。

下面是常见的 DDR4 内存条理论带宽,可以自己算一下,验证一下。

常见DDR4内存理论带宽
DDR4 2133:17 GB/s
DDR4 2400:19.2 GB/s
DDR4 2666:21.3 GB/s
DDR4 3200:25.6 GB/s

# 实际带宽

实际带宽总是无法达到理论带宽,参考基础知识篇,内存在时钟周期内不是一直在吞吐用户数据。在CPU传入了行地址后,内存打开一行需要tRCD+tRP个时钟周期的延迟。输入列地址后,又需要等待CL个时钟周期。而内存作为易失性存储元器件,又需要定时对所有的行进行充电,来保证数据不丢失。

 

# 服务器内存带宽

上面说的是单个内存条的理论内存带宽,那么服务器的理论内存带宽如果计算呢?这就要考虑CPU的内存通道数,可以简单认为CPU有几个内存通道数就可以插几根内存条。以基于Power9 CPU的K1 Power Linux为例,如果使用的是内存通道数为4的Power9 CPU,内存条使用的是标称为 DDR3 2666MHz,那么单条内存的理论带宽是 26668=21.3GB/s, 那么 1socket Power9 的理论内存带宽就是 21.34=85.2GB/s,2 sockets 的服务器理论内存带宽就是 85.2*2=170.4GB/s。

Power9支持2种内存通道数,通道数分别是4和8。

 

# 服务器内存带宽测试

服务器内存带宽测试,现在常用的测试软件就是 Stream,其官网是 http://www.cs.virginia.edu/stream/

Stream是一套综合性能测试程序集,通过Fortran和C两种高级且高效的语言编写完成,由于这两种语言在数学计算方面的高效率,使得 Stream 测试例程可以充分发挥出内存的能力。 Stream 测试得到的是可持续运行的内存带宽最大值,而并不是一般的硬件厂商提供的理论最大值。

Stream主要有四种数组的运算,测试到内存带宽的性能,分别是:数组的复制(Copy)、数组的尺度变换(Scale)、数组的矢量求和(Add)、数组的复合矢量求和(Triad)。

以 K1 Power Linux 为例,使用 Stream 测试的过程和结果可以参考 https://blog.csdn.net/xuanjian_bjtu/article/details/107162461

 

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表