x16为什么比x8慢?

x16为什么比x8慢?

一句话答案:x16的内存颗粒有2个bank group,而x8的内存颗粒有4个bank group:

我们拿Micron的8Gb内存颗粒[2]举例。同意提供8G bit的容量,它有三种Fuze:

分别是2G x 4;1G x 8;512M x 16。同样容量,厂家提供这三种配置有它们不同的应用场景:

1.x4主要用来搭建大容量内存条(想想为什么)。但因为每个rank都需要16个颗粒,所以信号完整性要求高,一般用在服务器领域。

2.x8是出货量最大的,最通用的配置,一般消费市场大部分就是这种配置。

3.x16因为只需要4个颗粒,应用于嵌入式或者PCB空间受限的场合,消费品市场见于低端产品。

x16和x8/x4的主要区别是Bank Group减半了:

我们来看一下x8的内部框图:

我们看到有4个Group。而x16只有2个group:

Bank Group是DDR4引入的,有助于提高性能。在不同BG读取或者写入数据时,可以部分并发,延迟较少。这里引入两个新的Timings:tCCD_S和tCCD_L。CCD代表“Column to Column Delay”。S是Short,L是Long。每个Group都可以单独工作,一次完整的8n prefetch不需要等待另一个group,所以是短的delay,也就是tCCD_S,一般是4。Group内部,每次都要等待一个更长的时间,也就是tCCD_L,tCCD_L随不同频率各不相同。我们这个例子颗粒中是多少呢?

tCCD_L是T10-T4,是6。比tCCD_S高了50%。

如果我们的数据十分凑巧,都分布在不同的group中,Bank Group会带来巨大的性能提升。最好情况下,2个bank groups和16n prefetch的提升一样,4个bank groups和32n prefetch一样。如果我们的数据刚好都在一个bank group中,频率又十分高,最坏情况,bank group不会带来任何好处。借助Bank interleave,我们的实际情况一般在最好和最坏之间。

x16只有两个bank group,而x8有四个bank group,这带来绝大的性能差异。如这位网友和Linus的结果,某些workload下有20%之多!这么大的性能差异,足以抵消一两代CPU带来的性能提升。

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值