• 正文
    • 一,炼气期(L1)——算力的概念
    • 二,筑基期(L2)——矩阵乘法
    • 三,金丹期(L3)——乘累加器
    • 四,元婴期(L4)——NPU
    • 五,大乘期(L5)——智能驾驶芯片
  • 相关推荐
申请入驻 产业图谱

手把手教你从零设计一款算力超过1000Tops的智能驾驶芯片

03/25 10:30
146
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

智能驾驶已经逐渐成为汽车的标配。

智驾芯片当然是智能驾驶的算力基石,而这玩意也常常被车企拿来宣传。如今,已经有车企开始宣传研发了1000Tops的智驾芯片。智驾芯片就如同汽车的大脑,非常的重要。那么,开发一款智驾芯片也是非常具有极高的技术含量的。今天,本文手把手教大家从零设计一款算力1000Tops的智驾芯片。

一,炼气期(L1)——算力的概念

那我们就先搞清楚这个智驾芯片算力1000Tops意味着什么

熟悉计算机的同学说这还不简单,

OPS的意思就是Operations Per Second。

每秒钟操作多少次。

计算机每秒钟算一次为1ops。

那么1T ops需要计算机算多少次?

1Tops

=1000Gops

=1000,000Mops

=1000,000,000Kops

=1000,000,000,000ops

计算完毕,每秒钟操作10的十二次方次,也就是1Tops。

我们假设有一个单发射1Ghz的CPU

如果要达到1Tops的话,基本上需要1000个这样的CPU。

如果要是达到100Tops的处理性能,则需要100000个,

也就是10万个这样的CPU才行。

如果是达到1000Tops,则需要1,000,000,也就是100万个1Ghz的处理器

这意味着什么?

意味着,我们可以买100万个处理器,将这么多CPU堆起来,实现1000Tops。

这么多处理器,至少需要一个火车车厢才能装下。

也就是,通过CPU堆叠的方式实现1000Tops的算力,至少需要一个车厢。

看来,在普通汽车上,通过堆CPU的方式来实现这么大的算力不太可能。

那么就需要另外想办法了。

二,筑基期(L2)——矩阵乘法

办法从哪里开始考虑。

我们从最本质的地方来考虑?

智驾芯片解决什么问题?

智驾芯片的本身是运行人工智能的算法。

人工智能算法最核心的操作就是矩阵乘法。

那么矩阵乘法的计算,就是智驾芯片要解决的核心问题。

我们用一点时间把矩阵乘法梳理一下。

例如,我们有两个原始矩阵。

矩阵A,m行,n列。

矩阵B,n行,P列

然后,我们计算矩阵C=A*B;

C是矩阵A和矩阵B的乘法结果:m行,p列

也可以写作:

我们举一个例子

两个2X2的矩阵相乘,可以如下所示。

对于一个N*N的矩阵,那么总共需要N*(N*N)次乘法和N*(N*(N-1))次加法。

所以,对于一个2*2的矩阵,里面一共用到了8次乘法,4次加法,才能得到答案。

三,金丹期(L3)——乘累加器

根据上面的分析,我们可以看到,矩阵相乘,需要的最小的算子单元就是乘法和加法。

所以你可以设计一种电路

先做两个值的乘法,例如a11与b11。

在上面的例子中,就是1X5=5;

然后开始算,a12*b21

在上面的例子中,就是2X7=14;

然后与上一次的乘法结果(5)加起来。

2X7 + 5 = 19

每次都可以把上一次的结果与当次乘法的结果加起来,这样就可以实现矩阵一行与一列的先相乘后求和的过程。

恭喜你,你就得到了一个乘累加器

每个MAC就是一个乘累加器(Multiply Accumulate)。

但是,现在问题又来了。

一个乘累加器,只能计算一个点的。

如果要并行,一个NXN的矩阵,那么就需要NXN个乘累加器。

这样可以并行来计算。

那如果计算这个2X2的矩阵,

我们可以用2X2,一共4个乘累加单元。

这样可以并行来计算。

下图就是这个乘累加矩阵,一共4个,可以同时进行计算。

通过上图,眼尖的你,一定发现了规律。

矩阵A和矩阵B相乘。

如同矩阵A从左往后移动,先向左移动1,3,再移动2,4

而矩阵B从上往下移动,先往下移动5,6,再移动7,8

然后进行相乘。

那么根据这个规律,就可以采用另一种叫做脉动阵列的方式来计算。

这个脉动和某饮品没有啥关系。

完全体现了数据的移动规律,如箭头方向所示。

第一步,按照规律,往右移动移动1和以及往下移动5;

 

第二步,以此类推

 

第三步,

 

第四步,

 

第五步,

这样我们就得到了最终的矩阵相乘的值。

通过累加器的脉动阵列,可以减少芯片内部的连接,因为每个累加器的输入只来自左边和右边。

这样就可以放置很多的累加器,累加器比较容易做的很大。

于是,把累加器从2X2扩展一下,可以做的很大,如下图所示:

到此,你就设计了一个矩阵乘法处理单元;

上面和左面的缓存中分为存储了原始的数据矩阵A和B。

在人工智能算法中,一个一般代表了权重矩阵(weight fifo),另一个代表激活矩阵。

这样你就设计了一个面向人工智能应用的处理器(NPU)最核心的单元。

矩阵乘法以及存储矩阵输入和输出的缓存。

四,元婴期(L4)——NPU

那么这个矩阵的行和列分别设置为多少合适?

由于神经网络的每一层的计算都比较多。

那么可以把行和列都设置成8,16,32,64,96或者更大。

那我们就先把行和列设置成96。

那我们就得到了一个96X96=9216乘累加单元。

为了存储要计算的矩阵数据,给这些数据设计了一个缓存(例如32Mbyte)。

对于矩阵乘法后的数据,还需要进行池化,激活函数,归一化等操作。

在矩阵完成运算后。

数据会被转移到激活硬件、池化硬件,并最终进入写入缓冲区以汇总结果。

还要支持多种激活函数,包括修正线性单元(ReLU)、Sigmoid线性单元(SiLU)和TanH。

于是在矩阵的输出结果后面又加上了SIMD单元可编程的处理以及池化,deconv等模块。

这样,恭喜你,你现在就设计完毕了一个NPU。

如下图所示:

设计完毕后,马老板就提出了一个问题,这个NPU的性能是多少?

有了前面的基础,这个问题就简单了。

芯片的核心算力是这个96X96的矩阵计算单元(黄色部分)得来的。

总计9,216个MAC(乘累加)。

一次乘加算两次操作。

乘+加,所以是两次

所以,这个矩阵每次hz就是18,432次操作。

做成芯片,这个NPU运行频率是2Ghz。

也就是2GX18432 = 36864Gops=36.864Tops。

是不是很简单又清楚。

五,大乘期(L5)——智能驾驶芯片

这个时候,马老板突然说了。

才37Tops性能,这性能也太差了。

你刚要解释一下,功耗,面积,编程友好,利用率这些原因。

马老板才不管那套。

性能至少翻倍,不能讨价还价。

于是,你立马想到了。

可以放两个NPU,不就可以性能翻倍了吗?

于是,你在一个SOC内部,放上了两个NPU(黄色部分),

这样,这个芯片的性能一下子就能从76.86Tops到73.72Tops。

四舍五入,就是74Tops

当然,除了提供核心算力的NPU之外。

还有系统控制作用的CPU,3个四核Cortex-A72集群,总共12个CPU,运行频率为2.2GHz;

还有图像处理作用的GPU,一个Mali G71 MP12 GPU,运行频率为1GHz

至此,恭喜你,你设计了特斯拉的智驾芯片,FSD芯片。

然后,这个芯片采用了三星的14nm工艺,整个芯片260 mm² die size(20 mm x 13 mm die size)

这是最后的芯片版图。

可以看到,整个提供算力的NPU,几乎占了芯片面积的50%左右。

这玩意占面积也占成本。

结果,芯片设计出来,马老板立马说,74Tops,这个性能指标还是太低。

出去不好吹牛。

至少要大于100Tops。

有了前面的经验,聪明的你立马想到了。

直接在板子上放两颗不就行了。

那么最后方案上,我们可以看到。

系统采用了两颗FSD芯片,智驾系统的总的算力,也达到了148TOPS。

这样,算力立马达到了高阶智驾的门槛。

即使是这样,也没有达到1000Tops的算力。

如果要达到1000Tops的算力。

根据上面的计算,增加算力,可以加多个NPU,也可以增加乘累加矩阵(MAC  array)的面积。

更大的矩阵乘法单元带来了更大的算力。

看来,只要是简单的堆乘累加矩阵就可以了?

这个看起来很简单。

例如,128*128个MAC的NPU,

单个NPU如果2Ghz处理能力,

其算力就能>64Tops。

一个芯片四个NPU,单芯片就能达到256T处理能力。

板载4个芯片就能达到1024Tops的处理能力。

所以,有了前面的基础,看起来不费劲。

不要笑,可能有人问?

算力怎么能这么粗暴的叠加。

要知道,某家车企就是用了四颗智驾芯片(orin-X),宣称达到了1024Tops。

我很怀疑,他们是不是把算力都用上了,是不是扣到两颗芯片发现智驾也能工作。

其实,即使大家没有智驾软件的基础。

也能明白:

智驾软件用到的算力不等于实际硬件提供的能力。

通过小学数学也能知道,无限扩大这个乘累加器矩阵,最终的利用率就会不断降低。

例如,我们算一个96X96的矩阵,而用128X128的硬件单元算,或者256X256的矩阵单元算。

就有一大部分都空闲。

这个就是硬件利用率的问题。

所以,有句老话说的好,

算力不是万能的。

但是光有算力也是万万不能的。

看的见是智驾芯片的算力,

看不见的是智驾芯片上跑的软件和算法。

这些软件和算法的能力,其实更是制约各家智驾水平的差异的地方。

所以说:

芯片的算力,

算法的智力,

系统的合力,

唯有三者形成合力,才能驱动智能驾驶突破现有边界。

穿梭三界(全地形全天候)亦如履平地,至此方证“无人驾驶”天道。

后记:

本来,除了FSD还要写另外两款典型的智驾芯片英伟达的orin-x和华为的昇腾610,但是篇幅太长了,等下次再补上。

我是歪睿老哥,一个喜欢写作的架构师,如果你觉得本文还不错,欢迎写出你的观点,点赞,在看,分享。

点赞
收藏
评论
分享
加入交流群
举报

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录