“横空出世,莽昆仑,阅尽人间春色,飞起玉龙三百万,搅得周天寒彻。”
最近业界传闻,百度要成立芯片公司;作为互联网大厂,百度跨界做芯片,优势几何,成为最近的一个热门的话题。对于设计芯片,业界都已经对PPT造芯审美疲劳; Talk is cheap,show me the chip。百度的芯片究竟成色几何,还是需要眼见为实。
本文就ISSCC2021上,百度最新推出的昆仑AI处理器,管中窥豹,看一下百度在芯片设计上的一些思路和成果;
ISSCC被誉为芯片设计界的奥林匹克,是IC设计的顶级会议;芯片大厂Intel,AMD,NVIDIA,高通等都是常客;但中国设计芯片公司以前很少出现在ISSCC上,但最近情况发生变化,越来越多的中国芯片公司亮相ISSCC,其中最新一届的ISSCC2021上,百度《Kunlun – A 14nm highperformance AI processor for diversified workloads》就成为了会议第三部分Modern Digital SoCs的三篇文章之一;第一篇是微软和AMD定制的XBOX SERIES XSOC;第二篇是去年NVIDIA发布的A100的GPU;第三篇就是百度的昆仑 AI处理器;能够和AMD和,NVIDIA的芯片并列,说明百度的昆仑还有有一些独到之处的。
昆仑AI处理器芯片是基于三星的14nm的工艺流片,芯片面积504mm2;可以跑到大约1Ghz左右,典型工况可以到900Mhz;功耗约160W;外部接口主要有PCIe gen4X8,以及两个HBM接口,支持256GB/s的传输速率;外部通过2.5D封装封装了2个8GB的外部HBM(DRAM),多说一句,由于AI芯片对内存速度的要求,HBM已成为AI芯片对内存需求非常有效的解决方式;
从上面架构图,可以看到,昆仑在计算部分主要采用了两种的AI处理的架构;这个也是昆仑最重要的特点,这两个分别是:
1:XPU-SDNN;
2:XPU-cluster;
下面分别介绍一下:
一:XPU-SDNN;
XPU-SDNN类似谷歌第一代TPU的结构类似;百度称之为软件定义人工智能网络引擎;专门处理张量和向量,专门用于矩阵乘和卷积,属于DSA的架构;从图中可以看到,通过两个buffer输出到MAC array;一般情况下,一个buffer用于数据输入,另一个buffer用于权重输入(weight),然后进行矩阵乘法或者卷积运算;这其中设计思想与google的TPU有一些相似;
下图是TPU的架构以及部分操作流程,可以看出二者的设计思路的类似;以下步骤是TPU的一些操作
- Read\_Weights 将weight从内存中读取到TPU的 Weight FIFO 上。
- MatrixMultiply/Convolve 执行卷积或矩阵乘法操作。
- Activate 执行人工神经网络中的非线性操作和Pooling操作。
GOOGLE 第一代TPU,
从中看出,这些加速GEMM(通用矩阵乘)和卷积运算,是非常高效的,预计tensorflow的流程也是可以很好的适配在目前SDNN的架构上;
二:XPU-Cluster;
XPU-Cluster这个可以看做一个AI处理器集群;每个cluster 有16个处理器;支持256bit的SIMD的指令,每个处理器有自己16K的指令cache,并且有自己独有的local memory)16KB;;SIMD对数据并行计算也非常友好,这个架构更属于定制处理的范畴,也属于一种DSA处理器;如果说SDNN粒度更大;XPU-Cluster的粒度则更小,但是计算效率会比SDNN要差一点;
因此,从XPU-cluster的架构来看,这个可以算是一个众核的定制处理器,目前昆仑中是有8个XPU-cluster,那就是有128个核处理器;每个核的ALU单元都可以独立处理标量和矢量;同时16个核还公用一个SFU,处理这些特殊指令如(log, exp, sqrt, div pow),指令周期更长,面积更大,且应用频率较小的操作;
这个就类似NVIDIA的SM(流处理器),可以看到这个处理器架构的相似性;
下图为NVIDIA的SM处理器;可以看出其中的一些异同;
总结一下,目前昆仑由两种架构的AI处理单元,一种更固定SDNN(粒度更大,擅长矩阵乘/卷积),类似google第一代TPU,第二种是处理器cluster 更灵活,(类似可编程AI CPU,可以编译指令)类似NVIDIA的SM流多核处理器;混合计算结构这个是目前这颗芯片最重要的特色;
昆仑通过这两种混合硬件架构(XPU-SDNN和XPU-cluster),可以支持目前主流的深度学习的API;目前支持的框架如下,不过有一点让老哥没有想到的是,百度宣称这两个架构共用同一套指令集;看来作为互联网大厂,对于软件的优化工作一点也不比研发芯片的工作要小,这里面编译器,SDK的适配,以及相应的优化工作还是有很多的工作量的,单纯看PPT,这个研发难度是无从感知的;
昆仑有一点是容易可感知的,就是芯片版图,504个mm2的芯片面积还是非常大;从图中看到,对应了上下两个部分,细心的同学是不是发现上下是不对称的结构。老哥猜想,上部分是PCIe gen4X8 占据了一个部分,同时也连接到整个NOC上,而下部分就不用PCIe了,所以造成了上下不对称的原因;
除此之外,XPU-SDNN要比XPU-cluster的面积要大很多,目测有3倍,由于XPU-cluster是可编程的处理器,其效率比专用处理单元(XPU-SDNN)要小,老哥猜想,整个芯片的处理能力能应该大部分是由XPU-SDNN提供的,原因就是粒度更大,更类似ASIC,特别是后面宣称的处理能力;因为(Hennessy)和帕特森(Patterson)已经在《计算机体系结构:定量方法》告诉我们,常用的功能就要设计专门的硬件单元来处理,这个也是DSA的优势;
最后我们来看一下成品的样子,这个是用于云端的AI加速,从描述来看,主要应该用于AI推理;
最后是和Nvidia上一代的T4来做对比;总得找个靶子来比较一下,昆仑和上上代的T4相比,还是有一些优势的;如果用INT8的比较,则是有2.73倍的提升;
目前NVidia已经从架构上,从特斯拉tesla(T4),伏打volta(V100)进化到安培ampere(A100),这个是NVIDIA最新的A100和T4的比较;(int8/FP16)有12倍左右的提升;
芯片行业就是这么残酷,坐标都是动态的,不存在有人在跑,别人原地不动的场景;NVIDIA在AI领域,目前是所有玩家都绕不过去的大山;除了性能优势,NVIDIA可编程性,易用性方面,由于众多用户已经多年的使用,占据了云端AI加速市场97%(2019年数据),更是“一览众山小”;
“路漫漫其修远兮”;在AI芯片这个领域,国内厂商和NVIDIA的距离还是很大;但是在性能上超过2019年NVDIA发布的T4,对于百度自身也是一个里程碑式的胜利;
百度这颗芯片能够在ISSCC上“横空出世,莽昆仑,阅尽人间春色“,的确算是一个很大的进步,但是要达到“飞起玉龙三百万,搅得周天寒彻。”能够在商用市场上,成为有分量玩家之一,在市场份额上拥有一席之地,给用户带来价值,还需要继续迭代以及优化;这颗芯片既是百度成立芯片公司的底气,也是新的竞争的起点;
但是AI芯片这条路永远不会有终点,更强大的性能,更易用的软件配套,更便宜的价格一直会促进芯片的这些竞争;有了昆仑的百度芯片,可以说,有了参与这个竞争游戏的入场券了;
作者:歪睿老哥
来源:https://mp.weixin.qq.com/s/urNoDMt94jOk1UOmodeOXw
作者微信公众号
相关文章推荐
更多IC设计技术干货请关注IC设计技术专栏。