3.2.1 CPU计算能力分析
这里CPU计算能力用Intel的Haswell架构进行分析,Haswell架构上计算单元有2个FMA(fused multiply-add),每个FMA可以对256bit数据在一个时钟周期中做一次乘运算和一次加运算,所以对应32bit单精度浮点计算能力为:(256bit/32bit) 2(FMA) 2(乘和加) = 32 SP FLOPs/cycle,即每个时钟周期可以做32个单精度浮点计算。
CPU峰值浮点计算性能 = CPU核数 CPU频率 每周期执行的浮点操作数。已Intel的CPU型号E5-2620V3来计算峰值计算能力为 = 6(CPU核数) 2.4GHz(CPU频率) 32 SP FLOPs/cycle = 460.8 GFLOPs/s 即每秒460G峰值浮点计算能力。
CPU芯片结构是否可以充分发挥浮点计算能力?CPU的指令执行过程是:取指令 ->指令译码 ->指令执行,只有在指令执行的时候,计算单元才发挥作用,这样取指令和指令译码的两段时间,计算单元是不在工作的,如图4所示。
图4 CPU指令执行流程
CPU为了提高指令执行的效率,在当前指令执行过程的时候,预先读取后面几条指令,使得指令流水处理,提高指令执行效率,如图5所示。指令预先读取并流水执行的前提是指令之间不具有相关性,不能一个指令的如何执行需要等到前面一个指令执行完的结果才可以获知。
图5 CPU指令流水执行
CPU作为通用处理器,兼顾计算和控制,70%晶体管用来构建Cache 还有一部分控制单元,用来处理复杂逻辑和提高指令的执行效率,如图6所示,所以导致计算通用性强,可以处理计算复杂度高,但计算性能一般。
图6CPU结构
通过CPU计算性能分析,直接提高计算性能方向为:增加CPU核数、提高CPU频率、修改CPU架构增加计算单元FMA(fused multiply-add)个数。这3个方向中,直接增加CPU核数对于计算能力提升最高,但是带来芯片功耗和价格的增加,因为每个物理核中只有30%的晶体管是计算单元。提高CPU频率,提升的空间有限,而且CPU频率太高会导致芯片出现功耗过大和过热的问题,因此英特尔等芯片制造商目前走多核化的路线,即限制单个微处理器的主频,通过集成多个处理器内核来提高处理性能。修改CPU架构增加计算单元FMA个数,目前英特尔按照“Tick-Tock”二年一个周期进行CPU架构调整,从2016年开始放缓至三年,更新迭代周期较长。
3.2.2 GPU计算能力分析