我在CUDA上做了一些工作,并且在CPU上做了很多工作,我试图了解两者之间的区别。我的I5处理器有4个内核,售价200美元,我的NVidia 660有960个内核,成本差不多。
如果有人能够解释两种处理单元架构在能力优劣方面的主要区别,我会非常高兴。例如,CUDA核心是否有分支预测?
答案 0 :(得分:10)
这是一个计算机架构问题,需要很长的答案。我会尽量保持不准确的风险。
你基本上通过询问CUDA核心句柄分支预测自己回答了你的问题,答案是否定的。
CPU核心必须处理计算机执行的每一项操作,计算,内存提取,IO,中断,因此它具有庞大的复杂指令集,并且优化了取指令分支预测的速度。
它还具有大缓存和快速时钟速率。
要实现指令集,您需要更多逻辑,因此与GPU相比,每个核心的晶体管成本更高。
GPU内核具有更少的高速缓存,更简单的指令和更低的时钟速率,但是它们经过优化,可以作为一组进行更多的计算。 设置简单的指令,缓存内存越少,每个内核的成本就越低。
答案 1 :(得分:4)
它们现在原则上与CPU核心相同。很久以前,这不是真的,例如他们在2005年无法处理整数操作数。
当比较2核i5的CPU核心复杂性时,请记住原始的80386 CPU只有大约275K晶体管,而Core2Duo大约有2.3亿。 1000倍以上,所以数字很合适。
最大的区别是内存处理变得比我们需要分段寄存器的过去更加复杂。没有虚拟内存等,当您尝试移植正常的CPU程序时,它是非常薄的瓶颈,但真正的问题是非本地内存访问非常昂贵400-800个周期。他们使用的技术在GPU世界之外只有SUN Niagara T1 / T2通用CPU。在等待内存访问时,他们使用其他准备就绪的命令(称为换行)安排不同的线程集。但是如果所有线程都是非线性地跳过你的数据,你的性能就会失败。
答案 2 :(得分:4)
Cuda核心是矢量单元的更多通道,聚集成经线。实质上,cuda核心是更宽的AVX或VSX或NEON向量中的条目。
最接近CPU核心的是SMX。它可以处理多个上下文(warp,超线程,SMT),并具有多个并行执行流水线(6个FP32用于Kepler,2个用于Haswell,2个用于Power 8)。每个SMX都是独立的,就像任何核心或通用CPU一样。
答案 3 :(得分:3)