CPU VS GPU

 

CPU vs GPU

  • 什么是GPU

GPU有负责不同功能的计算模块

Shader Core(渲染核/着色器核心):并行处理多个任务,如着色、贴图处理、几何计算等

Texture Unit(纹理单元/tex):负责纹理映射和处理。在渲染过程中,Texture Unit会对图形应用纹理,使得物体看起来更真实和细致。

Input Assembly(输入组装):GPU从内存中读取顶点和索引缓冲区;确定如何连接顶点以形成三角形;将这些数据传递给管线的后续阶段,为进一步的图形处理做准备。

Rasterizer(光栅化器):将图形从几何描述(如顶点数据)转换为像素数据;确定最终图像中哪些像素应该被涂上颜色,以及这些颜色是什么。

Output Blend(输出混合):负责将渲染的像素与帧缓冲区中的现有像素进行混合;它可以产生透明、半透明和其他的视觉效果。

Video Decode(视频解码):负责解码视频数据,以便在GPU上进行进一步的处理或显示;这使得GPU能够支持视频播放和视频游戏等功能。

Work Distributor(工作分配器):负责将图形处理任务分配给GPU上的不同处理单元;确保任务能够高效、并行地执行,从而提高整体性能。

SMs: GPU中的核心处理单元。每个SM包含多个处理核心,这些核心能够并行执行指令,从而加速图形渲染和计算密集型任务。SMs通常有自己的寄存器文件、指令缓存和共享内存,这使得它们可以独立地执行任务,同时与其他SMs协同工作。

SPs: SMs中的基本处理单元。每个SM包含多个SPs,这些SPs共享控制逻辑和指令缓存。这意味着当SM从指令缓存中取出一条指令时,所有SPs都可以同时执行这条指令。这种设计使得GPU能够并行处理大量数据,从而大大提高了处理速度。

  • 为了什么设计

GPU的设计主要是为了实现高吞吐量

CPU的设计则更注重低延迟。CPU需要处理各种不同的数据类型,进行逻辑判断,以及处理分支跳转和中断等复杂情况,这些都需要消耗一定的时间。因此,CPU在设计上需要优化指令的执行流程,减少等待时间,从而实现低延迟。

Ideas to design throuput oriented GPU

  • Idea 1 : 去除CPU中让CPU serialize code运行更快的

CPU中包含out of order execution, branch predictor, memory prefetch等机制让CPU运行serialize code fast,但是这些部分占用很大的memory和chip。

GPU去除这些部分。

  • Idea 2 :larger number of smaller simpler core

相比起使用small number of complex core, GPU的工作经常simple core就可以处理。

但也带来了挑战,需要programmer expose large parallel从而充分利用全部的core

  • idea 3:让simple core共享instruction stream,减少负责Fetch Decode的芯片面积

因为很多工作都是parallel的,所以多个small simple core共享instruction stream就可以,减少了chip上负责instruction stream的部分。

SIMT single instruction multiple threads.

SIMT 与 SIMD 有一些不一样。SIMT可以平行thread,而SIMD只可以平行instruction

  • idea 4:使用mask来解决branching

在CPU中使用branch prediction

在GPU中,使用mask来解决branching

  • idea 5:hide latency instead of reduce latency

fancy cache 指高级缓存系统,将缓存进行设计,使用高度并行化的存储器结构或数据命中率高 prefetch logic 使用预取技术完成对未来数据的预先读取,避免访问慢存储器,prefetch logic指实现预取功能的逻辑电路,常与缓存系统结合使用,实现高效数据预取功能 CPU通过fancy cache + prefetch logic来avoid stall

GPU通过lots of thread来hide latency。这依赖于fast switch to other threads, 也就需要keep lots of threads alive.

  • GPU Register 特点

GPU的register通常很大,在V100里与half L1 cahce+shared memory一样大

经常也被叫做inverted memory hierchy