当前位置: 华文问答 > 科学

GPU compiler和driver是同一个东西么,如果不是他们分别负责什么?

2021-11-14科学

compiler是独立的模块,但通常是集成在用户态驱动里的一个组建。当调用编译相关的API时会调用到compiler,编译器后端会根据shader指令集将程序翻译为二进制格式。

驱动分为两大部分,用户态驱动以及内核态驱动,其中用户态是最重要的,用于管理图形渲染状态机的,vulkan甚至把原本在ogl中属于透明的一些状态管理逻辑搬到API层。

shader的功能跟图形本质上没有任何关系,硬件管线内部的图形命令有自己的译码逻辑,负责fix func图形功能。任务调度器是跟图形有关的并管理shader的,用于译码图形命令,并根据图形命令将相关程序地址,属性地址,纹理地址,uniform等各种各样的参数配置写入到warp的寄存器中,shader就像一个独立系统的虚拟机一样执行自己的一套指令逻辑,并最终由warp控制按序收集渲染结果。

shader指令集通常是定长寄存器寻址方式3地址向量指令,包含浮点,定点运算,逻辑移位条件跳转等,也就是ALU和FU部分,除此以外还有SFU,即特殊命令,通常是多个shader共享一些计算硬件来实现,所以有访问仲裁延迟,如超越函数,纹理采样等相关功能。

内核态驱动本质上跟图形没有任何关系,任何硬件都是需要内核驱动来通信,就是数据通道