计算系统最有价值的操作
计算系统最有价值的操作,按照价值从高到低的排序是 控制,计算,数据搬运,为了提高计算系统的运行效率,应该让专业的硬件处理专业的事情:
CPU/GPU/NPU架构特点
一图胜千言,关于CPU,GPU,NPU的结构上的区别,,如下图所示:
从优化的角度讲,CPU的目标函数是 "minimize laency", GPU是 "maximize throughput",NPU则在GPU的基础上,进一步提高了存储的利用率。
先从CPU和GPU的区别开始说起,CPU是中央处理器,是一个逻辑单元,CPU负责复杂且少量的串行计算。GPU主要负责大量且简单的并行计算,如下图:
GPU和CPU都属于通用算力,和NPU的区别明显,我们先对比GPU和CPU,最后再讨论NPU,作用上,GPU 是替代不了 CPU 的,同样,CPU 也替代不了 GPU。
从本质上说,CPU和GPU的区别是,CPU是向量机&标量机,GPU是阵列机。
从设计角度,传统处理器为减少每个核心上顺序代码的执行时间而优化,从而增加每个内核的复杂性是以提供功更少的核心为代价的,传统的处理器通常使用复杂的控制逻辑和大的缓存处理器,目的为了有效的处理条件分支,流水线STALL,数据局部性差的问题。
而GPU是基于以吞吐量为导向的设计,提供数千个简单核心和高带宽内存架构,这种设计可以最大限度地提高执行吞吐量,对于具有高度数据并行的应用程序,这些应用程序可能被分解为在程序数据空间中的不同位置上操作的大量线程,在这种设计中,当一些线程等待完成算术运算或内存访问的延迟时间较长时,可以调度其它线程,通过硬件调度器来隐藏延迟。这种机制可能会延长各个线程各自的执行时间,但会改进总的吞吐量。
从物理中的第一性原理触发,物质是基础。GPU和NPU将80%的面积用于构造计算单元,而CPU只有30%,所以显然GPU和NPU更加适合去做计算。而CPU用于做控制的面积比其他两个都要多,所以CPU更加擅长去做控制和逻辑。
打个比方,如果把CPU比作是曹操,谋略无双,具有政治家的智慧和军事家的远见,但是动手能力不行,执行力差,适合担任发号施令的角色。GPU应该是张辽,有勇也有谋,但这个谋特指军事上的谋略,政治上的智慧比老曹差太多,属于进可攻,退可守的将才。而NPU就是许褚了,有勇无谋,做个保镖,带刀侍卫啥的绰绰有余,算做发挥特长,带兵打仗的恐怕就难以胜任了。在举个比较荷尔蒙的例子,如果把数据看作女孩,GPU就是老实人,特点是嘴巴笨,只会行动。