前言
最近做项目是关于大模型的AI推理与训练芯片,前期选型,由一开始的LPDDR4与LPDDR5,到最后选择GDDR6。对GDDR6有了一定的理解,将个人笔记整理出来;方便以后学习使用。
什么是GDDR?
GDDR的全称叫Graphics Double Data Rate;就是专门用于图像处理的DDR。
GDDR相对于DDR的优势和缺点:
优点
GDDR 传输速率更高,GDDR6能到20Gbps
缺点
(1)GDDR没有rank,芯片容量扩展困难。只能靠clamshell进行翻倍
(2)GDDR的延迟相对DDR较大。
综上看,GDDR适合于大带宽,对延迟不敏感的场景。所以GDDR一般只用于GPU;对于复杂场景的SOC,一般都是选择DDR或者LPDDR。
GDDR6的两种模式
根据颗粒的文档能看出,GDDR6有两种模式,一种是X16,就是一个channel的DQ位宽是16位;另外一种是x8,一个channel的DQ位宽是8位。
注意:这不是两颗不同的芯片,而是一颗芯片中的两种工作模式。
对于x8模式,就是clamshell。什么是clamshell,下面介绍。
Clamshell
什么是clamshell,就是在PCB板上,正反面贴。CA地址线共用,DQ拆分为两个x8使用。直接上图。
正常情况下,GDDR6有两个channel,一个channel的DQ位宽是16位的,phy这边正好一一对应。如果是clamshell模式,一个颗粒也是两个channel,但一个channel只有8bit位宽。phy这边一个channel是16bit,所以phy这边一个channel可以对应clamshell模式颗粒的两个channel。为了保证phy这边能同时控制两个颗粒,所以phy发出来的CA是共用的。为了方便CA的阻抗和延迟对应,所以将颗粒分布放在PCB的上层和底层。
但颗粒只有一种,那么顶层的颗粒是channelA的位置,正好对应底层颗粒channelB的位置。所以CA对应两个颗粒中不同的channel。
为了方便DQ的走线,选择哪个byte,厂家也是做了考究。让channelA的byte0和另外一个颗粒的channelB的byte1组合起来,这样在上下两层DQ不会出现正好上下对应的情况。方便DQ的布线。
clamshell可以使得容量扩容一倍,因为现有的GDDR6颗粒最大只有16Gb,而且没有CS,可以利用rank扩容,所以一般情况下,都会采用clamshell的方式进行扩容。clamshell对PCB的板的层数和布线会多一些要求。
为什么GDDR6能到20Gbps这么高的速率呢?
暂时没有看到合理的解释。如果WCK=10GHz,那么就是跟DDR一样的双倍采样。