学习原文:深入GPU硬件架构及运行机制
注: 像素网格被分成2*2的像素组,称为quad; 且一般来说,TILE的大小为32x32或者16x16像素。—— 基于TILE的渲染
拓展笔记:随手笔记Real-time rendering Chapter 23
GPU是显卡(Video card、Display card、Graphics card)最核心的部件,但除了GPU,显卡还有扇热器、通讯元件、与主板和显示器连接的各类插槽。
本章学习解答问题:
文章目录
-
-
-
-
-
- 1、GPU是如何与CPU协调工作的?
- 2、GPU也有缓存机制吗?有几层?它们的速度差异多少?
- 3、GPU的渲染流程有哪些阶段?它们的功能分别是什么?
- 4、Early-Z技术是什么?发生在哪个阶段?这个阶段还会发生什么?会产生什么问题?如何解决?
- 5、SIMD和SIMT是什么?它们的好处是什么?co-issue呢?
- 6、GPU是并行处理的么?若是,硬件层是如何设计和实现的?
- 7、GPC、TPC、SM是什么?Warp又是什么?它们和Core、Thread之间的关系如何?
- 8、顶点着色器(VS)和像素着色器(PS)可以是同一处理单元吗?为什么?
- 9、像素着色器(PS)的最小处理单位是1像素吗?为什么?会带来什么影响?
- 10、Shader中的if、for等语句会降低渲染效率吗?为什么?
- 11、如下图,渲染相同面积的图形,三角形数量少(左)的还是数量多(右)的效率更快?为什么?
- 12、GPU Context是什么?有什么作用?
- 13、造成渲染瓶颈的问题很可能有哪些?该如何避免或优化它们?
-
-
-
-
1、GPU是如何与CPU协调工作的?
CPU读取原始数据,计算顶点数据信息等,将数据放在内存中,要渲染的命令通过驱动程序分批次发给GPU执行(发出DrawCall指令),GPU根据指令拷贝数据到显存,对收到的顶点信息及原始数据在屏幕上进行绘制操作;
2、GPU也有缓存机制吗?有几层?它们的速度差异多少?
部分架构的GPU与CPU类似,也有多级缓存结构:寄存器、L1缓存、L2缓存、GPU显存、系统显存。
存储类型 寄存器 共享内存 L1缓存 L2缓存 纹理、常量缓存 全局内存 访问周期 1 1~32 1~32 32~64 400~600 400~600 这种架构的特点是ALU多,GPU上下文(Context)多,吞吐量高,依赖高带宽与系统内存交换数据。
3、GPU的渲染流程有哪些阶段?它们的功能分别是什么?
GPU逻辑管线
【大致总结成顶点着色器、裁剪剔除、像素着色器、深度测试及混合的工作】
1.程序通过图形API发出drawcall指令,驱动程序检查指令合法性后发送到GPU可读取的Pushbuffer中;
2.一段时间或显式调用flush时,驱动程序把Pushbuffer的内容一起发给GPU,GPU通过Host接口接收,用前端Front End处理这些命令;
3.图元分配器中开始工作分配, 处理indexbuffer中的顶点, 产生三角形分成批次(batches),然后发送给多个相应的PGCs处理。
4.在GPC中,每个SM中的Poly Morph Engine负责通过三角形索引(triangle indices)取出三角形的数据(vertex data);
5.Warp是典型的单指令多线程(多个指令同时执行相同指令)的实现; 在获取数据之后,在SM中以32个线程为一组的线程束(Warp)来调度,来开始处理顶点数据。;
6.SM的warp调度器会按照顺序分发指令给整个warp,单个warp中的线程会锁步(lock-step)执行各自的指令,如果线程碰到不激活执行的情况也会被遮掩(be masked out)。;
7.warp中的指令可能被一次完成也可能经过多次调度;
8.某些指令比如内存加载耗时较长时,warp调度器可能会切换到其他的warp;为了加快切换&#