显卡有自己的指令集吗?

时间:2009-11-08 20:32:41

标签: gpu instruction-set

显卡是否有自己的指令集? 我认为他们这样做,但我一直想知道它是否是专有的,或者是否有某种开放标准。

每条GPU指令都先于CPU指令还是无缝的? 那就是通过CPU在驱动程序层上调用OpenGL或DirectX,然后CPU向总线发送GPU指令或更精细。

6 个答案:

答案 0 :(得分:34)

是的,他们这样做。 AMD目前甚至提供高达HD4000系列的规格。

看看这里:http://developer.amd.com/wordpress/media/2012/10/R700-Family_Instruction_Set_Architecture.pdf

还有一个名为Nouveau的开源项目,它对NV指令集进行逆向工程。

请注意,NVIDIA的架构与AMD略有不同,因为它们不使用VLIW而是使用标量执行(尽管多个线程另外分组在所谓的Warp或Wavefront中)。

同样不是每个OpenGL / Direct3D调用都映射到“GPU指令”。例如,当绑定纹理时,驱动程序将只设置适当的硬件寄存器,告诉GPU使用哪个纹理内存进行采样。

真实程序仅在GPU上执行着色器或流处理内核时运行。

答案 1 :(得分:5)

目前,NVIDIA显卡使用某种称为PTX的中间ISA。您可以在本文档中阅读:

PTX ISA 1.1

PTX程序在安装时被转换为目标硬件指令集。

答案 2 :(得分:4)

是的,GPU有自己的专有指令集。 GPU指令独立于CPU指令执行。

答案 3 :(得分:4)

AMD图形核心下一步(GCN)

https://en.wikipedia.org/wiki/Graphics_Core_Next

第一代被称为"南部群岛"。

维基页面链接到记录ISA的AMD规范,例如:http://developer.amd.com/wordpress/media/2012/12/AMD_Southern_Islands_Instruction_Set_Architecture.pdf

甚至还有一个名为MIAOW https://github.com/VerticalResearchGroup/miaow的开放式RTL实现,虽然它可能侵犯了AMD目前仅在沉默中选择容忍的一些IP(source)。

SPIR-V

https://en.wikipedia.org/wiki/Standard_Portable_Intermediate_Representation是Krhonos标准中间语言。

它可能与现有的GPU ISA类似,因此它更易于实现并且具有更好的采用率,因此它应该能够很好地了解实际的GPU ISA。

如果这个标准确实流行起来,因为在Vulkan和OpenCL 2.1中采用它似乎就是这种情况,未来的实现可能会被设计为实现紧密有更好的性能。

如何获取和修改PTX

How to create or manipulate GPU assembler?

答案 4 :(得分:2)

请参阅:CUDA编程指南3.0版

设备的计算能力由主要版本号和次要版本定义 修订号。

具有相同主要版本号的设备具有相同的核心架构。该 基于Fermi架构的主要修订版设备数量为2.先前的设备 是所有计算能力1.x(他们的主要修订号是1)。

次要修订号对应于核心的增量改进 架构,可能包括新功能。

附录A所有支持CUDA的设备及其计算功能的列表。 附录G给出了每种计算能力的技术规范。

答案 5 :(得分:2)