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


众所周知,CV算法会花费很大一部分自动驾驶芯片的算力,在车上堆摄像头的同时也须要堆TOPS,那么视觉处理能力为什么用TOPS评估呢?常日打算机视觉算法是基于卷积神经网络的,而卷积神经网络的实质是累积累加算法(Multiply Accumulate)。
上图是一个非常生动的卷积过程
MAC
乘积累加运算MAC(Multiply Accumulate)是在数字旗子暗记处理器或一些微处理器中的分外运算。实现此运算操作的硬件电路单元,被称为“乘数累加器”。这种运算的操作,是将乘法的乘积结果和累加器 A 的值相加,再存入累加器:
若没有利用 MAC 指令,上述的程序可能须要二个指令,但 MAC 指令可以利用一个指令完成。而许多运算(例如卷积运算、点积运算、矩阵运算、数字滤波器运算、乃至多项式的求值运算)都可以分解为数个 MAC 指令,因此可以提高上述运算的效率。
MAC矩阵是AI芯片的核心,但这是很成熟的架构,在机器学习大背景下抖擞了新春。
上图为特斯拉自动驾驶芯片架构,占很大一部分面积的是处理神经网络的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。所有操作同时且连续地进行,重复直到完玉成部打算。
在每个周期中,将在全体MAC阵列中广播输入数据的底行和权重的最右列。每个单元独立实行适当的乘法累加运算。不才一个循环中,将输入数据向下推一行,而将权重网格向右推一行。在全体数组中广播输入数据的最底行和权重的最右列,重复此过程。单元连续独立实行其操作。全点积卷积结束时,MAC阵列一次向下移动一行96个元素,这也是SIMD单元的吞吐量。
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韶光是白白摧残浪费蹂躏的,而同样的运算在不同架构不同指令集须要的指令数也不一样。
除了 Instruction Cycle 这个指令周期,在 CPU 里面我们还会提到其余两个常见的 Cycle。一个叫 Machine Cycle,机器周期或者 CPU 周期。CPU 内部的操作速率很快,但是访问内存的速率却要慢很多。每一条指令都须要从内存里面加载而来,以是我们一样平常把从内存里面读取一条指令的最短韶光,称为 CPU 周期。
还有一个是Clock Cycle,也便是时钟周期以及我们机器的主频。一个 CPU 周期,常日会由几个时钟周期累积起来。一个 CPU 周期的韶光,便是这几个 Clock Cycle 的总和。
对付一个指令周期来说,我们取出一条指令,然后实行它,至少须要两个 CPU 周期。取出指令至少须要一个 CPU 周期,实行至少也须要一个 CPU 周期,繁芜的指令则须要更多的 CPU 周期。
从上图可以看出,时钟周期是固定的,但是每个指令实行用时不同,以是须要提高CPU实行效率。
当前提升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次)。









