GPU揭秘:为什么GPU没有分支预测?

在计算机体系结构领域,影响现代处理器性能的两大关键因素是cache和分支预测。分支预测技术被广泛用于优化指令流水线,提高执行效率。然而,GPU与CPU在分支预测方面存在显著差异。为什么GPU没有分支预测?原因有几个方面。


分支预测:CPU的黄金法则

分支预测技术是指处理器在遇到分支指令时不再傻傻地等待分支结果,而是直接在取指阶段预测分支“跳”或者“不跳”以及跳转目标地址,目的是根据预测结果来实现不间断的指令流,从而让处理器的CPI再度接近理想情况。

CPU面临的挑战:在取指令时,如果遇到分支指令,就需要等待分支条件的计算结果。为了解决这个问题,CPU引入了分支预测,通过预测分支的方向,让流水线能够继续流动。因此分支预测要预测两件事:分支指令的跳转方向,分支指令的跳转目标地址。


GPU的独特设计哲学

GPU相比CPU更注重优化大规模线程的执行吞吐量。这种设计思路在面对分支预测时呈现出不同的态度。

一方面GPU在图形学领域应用广泛,分支指令确实不是很多。另一个原因是一般的shader程序编译后的指令都不会很长,一般片上cache就基本能将一段shader程序(包括不同分支的指令)都装载到片上cache,那么分支预测也就没有存在的意义了。因此GPU对分支预测的需求不如CPU那样迫切。


多线程和线程切换的优势

另外,GPU的多线程执行方式和线程切换能力为其带来了独特的优势。

与CPU单线程不同,GPU可以同时执行大量线程,并通过线程切换来避免流水线阻塞。当GPU遇到分支指令时,它可以切换到其他线程执行,待分支条件计算结果就绪后再切换回来。这种设计策略有效地解决了分支带来的性能问题。


吞吐量为王的设计思想

在GPU设计中,降低延迟的成本远高于提高吞吐量所需的能耗和芯片面积。

因此,GPU更注重优化大规模线程的执行吞吐量,通过引入流水线内存通道和算术操作来降低芯片面积和功耗。虽然这些操作具有较长的延迟,但通过减小内存访问硬件和算术单元的面积和功耗,设计师们可以在芯片上集成更多这些单元,提高总体的执行吞吐量。


GPU的选择:浮点执行资源

另一重要因素是GPU能够容忍较长的延迟操作,因此无需像CPU那样投入大量芯片面积来设计缓存和分支预测。相反,GPU更专注于将芯片面积用于浮点执行资源,从而实现高效的浮点计算任务。


结语

在GPU架构中,吞吐量优化和延迟容忍是主要设计目标,这解释了为何GPU很少使用分支预测技术。

通过多线程执行、线程切换和以吞吐量为导向的设计思想,GPU在大规模数据处理和并行任务执行方面表现出色。对于不同的计算任务和架构特点,分支预测的应用与局限性也在不同体系中得到体现。


本文转自:深流微,转载此文目的在于传递更多信息,版权归原作者所有。如不支持转载,请联系小编demi@eetrend.com删除。

最新文章