● 阶梯延伸的方向——NVIDIA的“融合”
与强调灵活度,仲裁及管理机制占去了大量资源比例且实行串行吞吐的CPU不同。从一般意义上来讲,“原教旨”的GPGPU是一个舍弃掉一部分提升灵活度的仲裁及控制机制,转而将这部分资源用来实现最大化强调吞吐的并行逻辑结构,它具有吞吐量巨大,在优化得当的前提下能够以最低的能耗实现最高性能的特征。
即便是Intel的GPGPU,同样也是要削减一部分仲裁机构的
原教旨GPGPU由大量单级流水线的简单处理单元以及“必要”的仲裁机构组成,处理单元负责快速处理已经被细化的简单任务,而仲裁机构则负责将任务并行化的输送给必要的处理单元。由于分派过程的合理性以及延迟决定了并行单元最终的吞吐效率,所以想要有效的提升GPGPU的有效吞吐,仲裁机构对于原教旨GPGPU来说依旧是必不可少的。但由于仲裁机制并不能直接产生Flops,同时仲裁过程所占据的能耗又是一个相当可观的数字,这明显与原教旨GPGPU的特征相悖,所以目前这种矛盾体的状态极大地限制了GPGPU结构的发展以及当前GPU在通用计算过程中的最终表现。
有没有解决矛盾的方法呢?有,答案是异构运算结构。
原教旨GPGPU中的仲裁机制大多采用了针对性极强的的专用处理器,这类处理器虽然有较高的执行效率,但因为不具备泛用性以及任何可通用的运算能力,所以原教旨GPGPU不仅需要多个不同用途的专用处理器共同完成全部的任务仲裁及分配过程并因此而产生实际上更高的能耗,而且这部分过程所消耗的能源全都无法直接转化成运算能力。如果用一个通用处理器以软件的形式来实现过去多个专用处理器实现的功能,同时进一步辅助运算单元输出有效运算过程,则不仅可以降低仲裁过程所产生的“非直接有效功耗”,还能进一步提升整个体系的总运算能力。由此可见,将通用处理器或者说CPU与GPU结合在一起,将对整个GPGPU体系的性能带来极大的帮助。
NVIDIA就是这么干的,它所提出的Kepler之后的图形/通用计算构架Maxwell,就是这样一个将通用处理器与常规GPGPU“融合”在一起的结构。
推荐经销商