单个CPU处理单元和单个GPU处理单元之间有什么区别?
我在互联网上看到的大多数地方都涵盖了两者之间的高级差异。我想知道每个处理单元可以执行哪些指令,以及它们的速度如何,这些处理单元如何集成在完整的架构中?
这似乎是一个需要长篇回答的问题。所以提供多个链接也可以。
编辑:
在CPU中,FPU运行实数操作。每个GPU核心中相同的操作速度如何?如果速度快,为什么会快?
我知道我的问题很笼统,但我的目标是回答这些问题。
单个CPU处理单元和单个GPU处理单元之间有什么区别?
我在互联网上看到的大多数地方都涵盖了两者之间的高级差异。我想知道每个处理单元可以执行哪些指令,以及它们的速度如何,这些处理单元如何集成在完整的架构中?
这似乎是一个需要长篇回答的问题。所以提供多个链接也可以。
编辑:
在CPU中,FPU运行实数操作。每个GPU核心中相同的操作速度如何?如果速度快,为什么会快?
我知道我的问题很笼统,但我的目标是回答这些问题。
GPU和CPU的主要区别在于,GPU设计用于并行执行同一操作的多个独立数据元素,而CPU设计用于尽可能快地执行单个指令流。
问题的一部分询问了:
CPU中,FPU运行实数操作。每个GPU核心中相同操作的速度有多快?如果速度很快,那么为什么速度很快?
这涉及到CPU和GPU中使用的浮点(FP)执行单元。主要区别不是单个FP执行单元的实现方式。相反,区别在于CPU核心只有几个FP执行单元,这些单元处理独立指令,而GPU则有数百个FP执行单元,这些单元同时处理独立数据。
GPU最初是为执行图形应用程序的计算而开发的。在这些应用程序中,同一操作会重复执行数百万次不同的数据点(想象一下应用于屏幕上每个像素的操作)。通过使用SIMD或SIMT操作,GPU减少了处理单个指令的开销,但需要多个指令锁定步骤进行操作。
后来,GPGPU编程变得流行,因为除了图形之外,还有许多类型的编程问题适合这种模型。主要特点是问题是数据并行的,即同一操作可以独立地在许多不同的数据元素上执行。
与GPU不同,CPU被优化为尽可能快地执行单个指令流。CPU使用流水线、缓存、分支预测、乱序执行等技术来实现这一目标。在执行单个浮点运算的大部分晶体管和能量都花费在管理指令流通过管道的开销上,而不是浮点运算单元本身。虽然GPU和CPU的浮点运算单元可能略有不同,但这并不是两种体系结构之间的主要区别。主要区别在于如何处理指令流。CPU还倾向于在不同核之间具有缓存一致性内存,而GPU则没有。movmsk
,多年来已经可以在SSE上实现。我可能需要就此提出一个问题。 - Z boson