现代GPU是基于RISC还是基于CISC?

时间:2013-11-24 00:31:59

标签: gpu cpu instruction-set

我试图弄清楚现代GPU是否具有精简指令集或复杂指令集。

维基百科说它不是指令集的大小,而是完成和指令需要多少个周期。

在RISC处理器中,每条指令都可以在一个周期内完成。

在CISC处理器中,完成一些指令需要几个周期。

我正在试图弄清楚现代GPU的情况。

3 个答案:

答案 0 :(得分:0)

RISC指令集:加载/存储单元独立于其他单元,因此基本上用于加载和存储特定指令

CISC insruction set:嵌入在instrction执行例程中的广告/存储单元,因此该指令比RISC指令更复杂,因为操作旁边的CISC指令将执行加载和存储阶段,这需要更多的晶体管逻辑用于一个ibstruction

答案 1 :(得分:0)

CISC的目标是采用通用的编码模式并以硬件加速它们。您可以在基本体系结构的不断扩展中看到这一点。参见Intel的MMX和SSE,以及AMD的3DNow!等。https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions这也有利于良好的市场营销,因为您需要升级到新处理器以加速最新的常见任务,并使编码人员忙于不断地转换其代码模式到新的扩展程序。

RISC的目标是相反的。它试图尽快执行一些基本功能。然后,编码人员需要继续将其常见的编码任务分解为那些简单的指令(尽管高级编程语言和代码包/库会为您完成此任务)。 RISC作为ARM处理器的体系结构继续生存下来。参见:https://en.wikipedia.org/wiki/Reduced_instruction_set_computer

我注意到GPU与RISC哲学类似,因为目标是尽可能快地执行许多相对简单的计算。向深度学习的转变产生了对数百万个相对简单的参数进行训练的需求,因此向高度并行,相对简单的架构发展。在计算机内部实现这两种理念是两全其美。

答案 2 :(得分:0)

如果您指的是Nvidia,那么它显然是RISC,因为其大多数GPU甚至在硬件中甚至没有整数除法和模运算,仅使用移位,按位运算和3种算术运算(加法,减法,乘法)来实现这2个。我找不到示例,但是这个问题(modular arithmetic on the gpu)表明mod使用了

实现一些复杂算法(大约50条指令甚至更多条指令)的程序

即使是称为PTX的NVVM(Nvidia虚拟机)语言也使用了更多的操作,其中的一些在转换为一种本地语言后仍会“烘焙”为一堆更简单的操作(由于GPU的性质,此类语言存在不同的版本以及他们的世代/家族,但这些统称为SASS。

您可以在此处看到所有可用的操作以及每个操作的描述,这些操作还很简短也不是很清楚(特别是如果您没有机器级编程的背景,例如知道“ scaled”意味着左移至操作数就像在x86的“ FSCALE”或“比例因子”等中一样): https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-ref

如果您的意思是AMDGPU,那么会有很多说明,并且不清楚,因为一些消息来源说,它们是在发布Southern Islands GPU时才从VLIW切换到某种东西。