PG(中国大陆)电子·控股有限公司-官网

手把手教你从零设计一款算力超过 1000Tops 的智能驾驶芯片-PG电子控股有限公司
关闭
手把手教你从零设计一款算力超过 1000Tops 的智能驾驶芯片
作者:小编 日期:2025-05-31 点击数: 

  意味着,我们可以买 100 万个处理器,将这么多 CPU 堆起来,实现 1000Tops。也就是,通过 CPU 堆叠的方式实现 1000Tops 的算力,至少需要一个车厢。看来,在普通汽车上,通过堆 CPU 的方式来实现这么大的算力不太可能。

  办法从哪里开始考虑。我们从最本质的地方来考虑?智驾芯片解决什么问题?智驾芯片的本身是运行人工智能的算法。人工智能算法最核心的操作就是矩阵乘法。那么矩阵乘法的计算,就是智驾芯片要解决的核心问题。

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

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

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

  所以你可以设计一种电路。先做两个值的乘法,例如 a11 与 b11。在上面的例子中,就是 1X5=5;然后开始算,a12*b21;在上面的例子中,就是 2X7=14;然后与上一次的乘法结果(5)加起来。2X7 + 5 = 19

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

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

  恭喜你,你就得到了一个乘累加器。每个 MAC 就是一个乘累加器(Multiply Accumulate)。但是,现在问题又来了。一个乘累加器,只能计算一个点的。如果要并行,一个 NXN 的矩阵,那么就需要 NXN 个乘累加器。这样可以并行来计算。那如果计算这个 2X2 的矩阵,我们可以用 2X2,一共 4 个乘累加单元。这样可以并行来计算。

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

  矩阵 A 和矩阵 B 相乘。如同矩阵 A 从左往后移动,先向左移动 1,3,再移动 2,4而矩阵 B 从上往下移动,先往下移动 5,6,再移动 7,8;然后进行相乘。那么根据这个规律,就可以采用另一种叫做脉动阵列的方式来计算。这个脉动和某饮品没有啥关系。完全体现了数据的移动规律,如箭头方向所示。

  这样我们就得到了最终的矩阵相乘的值。通过累加器的脉动阵列,可以减少芯片内部的连接,因为每个累加器的输入只来自左边和右边。这样就可以放置很多的累加器,累加器比较容易做的很大。

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

  上面和左面的缓存中分为存储了原始的数据矩阵 A 和 B。在人工智能算法中,一个一般代表了权重矩阵(weight fifo),另一个代表激活矩阵。这样你就设计了一个面向人工智能应用的处理器(NPU)最核心的单元。矩阵乘法以及存储矩阵输入和输出的缓存。

  那么这个矩阵的行和列分别设置为多少合适?由于神经网络的每一层的计算都比较多。那么可以把行和列都设置成 8,16,32,64,96 或者更大。那我们就先把行和列设置成 96。那我们就得到了一个 96X96=9216 乘累加单元。为了存储要计算的矩阵数据,给这些数据设计了一个缓存(例如 32Mbyte)。对于矩阵乘法后的数据,还需要进行池化,激活函数,归一化等操作。在矩阵完成运算后。数据会被转移到激活硬件、池化硬件,并最终进入写入缓冲区以汇总结果。还要支持多种激活函数,包括修正线性单元(ReLU)、Sigmoid 线性单元(SiLU)和 TanH。于是在矩阵的输出结果后面又加上了 SIMD 单元可编程的处理以及池化,deconv 等模块。

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

  设计完毕后,马老板就提出了一个问题,这个 NPU 的性能是多少?有了前面的基础,这个问题就简单了。芯片的核心算力是这个 96X96 的矩阵计算单元(黄色部分)得来的。总计 9,216 个 MAC(乘累加)。

  所以,这个矩阵每次 hz 就是 18,432 次操作。做成芯片,这个 NPU 运行频率是 2Ghz。

  这个时候,马老板突然说了。才 37Tops 性能,这性能也太差了。你刚要解释一下,功耗,面积,编程友好,利用率这些原因。马老板才不管那套。性能至少翻倍,不能讨价还价。于是,你立马想到了。可以放两个 NPU,不就可以性能翻倍了吗?于是,你在一个 SOC 内部,放上了两个 NPU(黄色部分),这样,这个芯片的性能一下子就能从 76.86Tops 到 73.72Tops。四舍五入,就是 74Tops

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

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

  可以看到,整个提供算力的 NPU,几乎占了芯片面积的 50%左右。这玩意占面积也占成本。结果,芯片设计出来,马老板立马说,74Tops,这个性能指标还是太低。出去不好吹牛。至少要大于 100Tops。有了前面的经验,聪明的你立马想到了。直接在板子上放两颗不就行了。那么最后方案上,我们可以看到。

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

  系统采用了两颗 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,但是篇幅太长了,等下次再补上。有哪些PG电子游戏的经典攻略值得参考?有哪些PG电子游戏的经典攻略值得参考?

顶部