当前位置: 华文问答 > 数码

为什么GPU运算速度比CPU的运算速度快

2011-06-16数码

来澄清这个问题,个人认为应该从这两个方面来看:

1. 首先 CPU 和 GPU 是为了不同的计算任务而设计的:

a)CPU 主要为串行指令而优化,而 GPU 则是为大规模的并行运算而优化。

b)从并行的角度来看,现代的多核 CPU 针对的是指令集并行(ILP)和任务并行(TLP),而 GPU 则是数据并行(DLP)。

c)在同样面积的芯片之上,CPU 更多的放置了多级缓存(L1/L2/LLC)和指令并行相关的控制部件(乱序执行,分支预测等等),而 GPU 上则更多的是运算单元(整数、浮点的乘加单元,特殊运算单元等等)

d)GPU 往往拥有更大带宽的 Memory,也就是所谓的显存,因此在大吞吐量的应用中也会有很好的性能。

2. 其次 GPU 真正的速度优势并没有宣传中的那么大,这主要是因为:

a)我们所看到的这些比较中,并没有很好的利用上 CPU 中的 SIMD 运算部件。(如 Intel 的 SSE)

b)GPU的运算任务无法独立于CPU而执行,运算任务与数据也必须通过总线在GPU与CPU之间传输,因此很多任务是无法达到理论加速的。

c)具体可以参考这篇 [ISCA'10] Debunking the 100X GPU vs. CPU myth: an evaluation of throughput computing on CPU and GPU http:// citeseerx.ist.psu.edu/v iewdoc/download?doi=10.1.1.170.2755&rep=rep1&type=pdf

题外话:怎样更好的综合这两者的优势正是未来的发展方向,可能的思路包括可重构可配置的芯片设计,或者直接将两者整合在一起(如 AMD 的 APU),以及非对称的多核设计(比如大核配多个小核)