我想弄清楚现代GPU是精简指令集,还是复杂指令集。
维基百科说,它不是指令集的大小,而是完成和指令需要多少周期。
在RISC处理器中,每条指令可以在一个周期内完成。
在CISC处理器中,完成某些指令需要几个周期。
我试图弄清楚现代GPU的情况是什么。
发布于 2020-01-30 00:53:00
CISC的目标是采用通用的编码模式,并在硬件中加速它们。您可以在基本架构的常量扩展中看到这一点。参阅英特尔的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哲学,其目标是尽可能快地执行尽可能多的相对简单的计算。向深度学习的转变创造了训练数百万个相对简单的参数的需求,因此又回到了高度并行、相对简单的体系结构。在你的计算机中实现这两种哲学是两全其美的。
发布于 2017-07-04 15:17:56
RISC指令集:加载/存储单元独立于其他单元,因此基本上用于加载和存储特定的指令
CISC指令集:在指令执行例程中嵌入了ad/store单元,因此指令比RISC指令更复杂,因为CISC指令除了操作外,还将执行加载和存储阶段,这就需要为一条指令使用更多的晶体管逻辑
发布于 2020-09-17 03:00:42
如果你指的是Nvidia,那么它显然是精简指令集,因为它的大多数GPU在硬件中甚至没有整数除法和模运算,只有移位、按位运算和3种算术运算(加、减、乘)来实现这两种运算。我找不到示例,但这个问题(modular arithmetic on the gpu)显示mod使用
程序,实现了一些复杂的算法(大约50条指令甚至更多)
甚至被称为PTX的NVVM (NVVM)语言也使用了更多的操作,其中一些在转换为本地语言后被“烘焙”成一堆更简单的操作(由于GPU的性质和它们的代数/家族的不同,这些语言有不同的版本,但它们只是统称为SASS )。
你可以在这里看到所有可用的操作以及对每个操作的描述,它们都很简短,也不是很清楚(特别是如果你没有机器级编程的背景,比如知道“缩放”意味着1左移到操作数,就像在x86的"FSCALE“或"Scale factor”等):https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-ref
如果你的意思是AMDGPU,那么有很多指令,这不是那么清楚,因为一些消息来源告诉他们,他们从VLIW切换到一些东西,就在南部群岛GPU发布的时候。
https://stackoverflow.com/questions/20169699
复制相似问题