如果你经常和DMIPS,TOPS,GFLOPS等评价芯片性能的单位打交道,又不知道这些单位意味着什么,那看这篇文章就对了

TOPS

TOPS是Tera Operation Per Second的缩写,表示每秒钟可以进行的操作数量,用于衡量自动驾驶的算力,有时还会拿TOPS/W来说明功耗,即单位功耗下的运算能力。

智能驾驶主流芯片算力对比(自动驾驶芯片性能评价指标)(1)

智能驾驶主流芯片算力对比(自动驾驶芯片性能评价指标)(2)

众所周知,CV算法会消耗很大一部分自动驾驶芯片的算力,在车上堆摄像头的同时也需要堆TOPS,那么视觉处理能力为什么用TOPS评估呢?通常计算机视觉算法是基于卷积神经网络的,而卷积神经网络的本质是累积累加算法(Multiply Accumulate)。

智能驾驶主流芯片算力对比(自动驾驶芯片性能评价指标)(3)

上图是一个非常生动的卷积过程

MAC

乘积累加运算MAC(Multiply Accumulate)是在数字信号处理器或一些微处理器中的特殊运算。实现此运算操作的硬件电路单元,被称为“乘数累加器”。这种运算的操作,是将乘法的乘积结果和累加器 A 的值相加,再存入累加器:

智能驾驶主流芯片算力对比(自动驾驶芯片性能评价指标)(4)

若没有使用 MAC 指令,上述的程序可能需要二个指令,但 MAC 指令可以使用一个指令完成。而许多运算(例如卷积运算、点积运算、矩阵运算、数字滤波器运算、乃至多项式的求值运算)都可以分解为数个 MAC 指令,因此可以提高上述运算的效率。

MAC矩阵是AI芯片的核心,但这是很成熟的架构,在机器学习大背景下焕发了新春。

智能驾驶主流芯片算力对比(自动驾驶芯片性能评价指标)(5)

上图为特斯拉自动驾驶芯片架构,占很大一部分面积的是处理神经网络的NPU。

总体设计相对简单。每个周期,从SRAM读取256byte字节的激活数据和另外128byte的权重数据到MAC阵列中。每个NPU拥有96x96 MAC,另外在精度方面,乘法为8x8bit,加法为32bit,两种数据类型的选择很大程度上取决于他们降功耗的努力(例如32bitFP加法器的功耗大约是32bit整数加法器的9倍)。在2GHz的工作频率下,每个NPU的算力为36.86TOPS,FSD芯片峰值算力为73.7TOPS。在点积运算之后,数据转移到激活硬件,最后写入缓存,以汇总结果。FSD支持许多激活功能,包括ReLU、SiLU和TanH。每个周期,将128byte的数据写回SRAM。所有操作同时且连续地进行,重复直到完成整个计算。

智能驾驶主流芯片算力对比(自动驾驶芯片性能评价指标)(6)

在每个周期中,将在整个MAC阵列中广播输入数据的底行和权重的最右列。每个单元独立执行适当的乘法累加运算。在下一个循环中,将输入数据向下推一行,而将权重网格向右推一行。在整个数组中广播输入数据的最底行和权重的最右列,重复此过程。单元继续独立执行其操作。全点积卷积结束时,MAC阵列一次向下移动一行96个元素,这也是SIMD单元的吞吐量。

智能驾驶主流芯片算力对比(自动驾驶芯片性能评价指标)(7)

TOPS计算

回到正题,TOPS是MAC在1秒内操作的数,计算公式为:

TOPS = MAC矩阵行 * MAC矩阵列 * 2 * 主频

每个NPU的为96 * 96 * 2 * 2G = 36.864TOPS

DMIPS

DMIPS是Dhrystone Million Instructions Per Second的缩写,每秒处理的百万级的机器语言指令数。

CPU执行指令

程序编译和运行过程中,代码会经过编译器转化成机器可以理解的指令。CPU每个指令周期分为取指令、指令译码、指令执行三个过程,只有在指令执行时才真正有效,在取指令和指令译码时,CPU时间是白白浪费的,而同样的运算在不同架构不同指令集需要的指令数也不一样。

智能驾驶主流芯片算力对比(自动驾驶芯片性能评价指标)(8)

除了 Instruction Cycle 这个指令周期,在 CPU 里面我们还会提到另外两个常见的 Cycle。一个叫 Machine Cycle,机器周期或者 CPU 周期。CPU 内部的操作速度很快,但是访问内存的速度却要慢很多。每一条指令都需要从内存里面加载而来,所以我们一般把从内存里面读取一条指令的最短时间,称为 CPU 周期。

还有一个是Clock Cycle,也就是时钟周期以及我们机器的主频。一个 CPU 周期,通常会由几个时钟周期累积起来。一个 CPU 周期的时间,就是这几个 Clock Cycle 的总和。

对于一个指令周期来说,我们取出一条指令,然后执行它,至少需要两个 CPU 周期。取出指令至少需要一个 CPU 周期,执行至少也需要一个 CPU 周期,复杂的指令则需要更多的 CPU 周期。

智能驾驶主流芯片算力对比(自动驾驶芯片性能评价指标)(9)

从上图可以看出,时钟周期是固定的,但是每个指令执行用时不同,所以需要提高CPU执行效率。

智能驾驶主流芯片算力对比(自动驾驶芯片性能评价指标)(10)

智能驾驶主流芯片算力对比(自动驾驶芯片性能评价指标)(11)

当前提升CPU性能的方法有:流水线技术、流水线冒险/预测、超标量Superscalar、超长指令字设计VLIW、单指令多数据流SIMD等技术(将来慢慢介绍)。尤其是SIMD 技术,是一种“指令级并行”的加速方案,或者说是一种“数据并行”的加速方案。在处理向量计算的情况下,同一个向量的不同维度之间的计算是相互独立的。而CPU 里的寄存器,又能放得下多条数据。于是,我们可以一次性取出多条数据,交给 CPU 并行计算。

DMIPS

如前文所言,不同的CPU指令集不同、硬件加速器不同、CPU架构不同,导致不能简单的用核心数和CPU主频来评估性能,所以出了一个跑分算法叫Dhrystone:程序用来测试CPU整数计算性能,其输出结果为每秒钟运行Dhrystone的次数,即每秒钟迭代主循环的次数。

Dhrystone所代表的处理器分数比MIPS(million instructions per second 每秒钟执行的指令数)更有意义,因为在不同的指令系统中,比如RISC(Reduced Instruction Set Computer精简指令集计算机)系统和CISC(Complex Instruction Set Computer复杂指令集计算机)系统,Dhrystone的得分更能表现其真正性能。

由于在一个高级任务中,RISC可能需要更多的指令,但是其执行的时间可能会比在CISC中的一条指令还要快。由于Dhrystone仅将每秒钟程序执行次数作为指标,所以可以让不同的机器用其自身的方式去完成任务。

另一项基于Dhrystone的分数为DMIPS(DhrystoneMIPS),其含义为每秒钟执行Dhrystone的次数除以1757(这一数值来自于VAX 11/780机器,此机器在名义上为1MIPS机器,它每秒运行Dhrystone次数为1757次)。

,