● 分支对GPU结构体系的挑战
分支和循环是最基本的流程控制,也是编程中最基本的概念。我们知道CPU是为单线程程序运行加速而设计的,GPU是为并行程序设计的。首先CPU是指令并行,只有指令间并行的架构才需要分支预测,而GPU是线程间并行,指令按顺序发射,没有分支预测。所以当GPU遇到分支问题时,性能会发生较大的变化,而且不同架构的性能变化幅度也不一样。
GPU起初是为了3D渲染设计的,涉及到大量同类型平行数据计算,数据吞吐量很大,因此GPU内部包含了大量的核心(抑或叫处理单元)以满足这种需求;相反的,CPU设计侧重于通用应用,其中很大一部分晶体管用于逻辑控制单元和缓存,适用于繁琐的计算。例如CPU控制单元可以分支预测,推测执行,多重嵌套分支执行(if条件判断等等),而GPU计算的时候则将数据全部扔进着色器核心运算输出,GPU内没有流水线,因此无法实现乱序执行等技术,同时GPU的分支能力是靠线程挂起来实现的,换而言之是频繁的线程切换把分支延迟都给掩盖了。
让我们通过一段简单的程序来了解分支的概念:
If (a)
b=f()
else
b=g()
一个典型的条件分支程序示意图
CPU可以容易地基于布尔变量a来求f()或g()函数。这种分支的性能特征相对容易理解:CPU内有相对较长的流水线和专门的功能单元,因此CPU能够正确地预测是否会采用一个特定的分支。如果这个预测能够成功地完成,通常分支会导致较小的损失。
而GPU没有这种功能单元,但是也可以进行分支运算的操作,而且分支在遇到不同结构的流处理器体系时表现的性能也是有很大差异的。在单指令多数据流(SIMD)的结构中,单一控制部件向每条流水线分派指令,同样的指令被所有处理部件同时执行。另外一种控制结构是多指令多数据流(MIMD),每条流水线都能够独立于其他流水线执行不同的程序。
从GeForce 6800 Ultra开始,NVIDIA公司GPU内部的顶点着色器流水线使用MIMD方式控制,像素着色器流水线使用SIMD结构,而AMD则一直全部使用SIMD结构。MIMD能比较有效率地执行分支程序,而SIMD体系结构运行条件语句时会造成很低的资源利用率。不过SIMD需要硬件少,可以大量添加运算单元,这是一个优势。
GPU可以通过线程分配器+各种临时资源的挂起能力来完成动态的线程分配,一旦某线程当前无法完成就把它挂起而不用等着,等它可以被完成了再送去其他单元进行处理,这是周边资源充足之后可以很轻松实现的东西。GPU内部的每个处理单元都不会闲着,处理不来马上换下一个线程,但这不是标准的乱序执行。乱序要和流水线衔接的,使流水线没有空闲是其目的。GPU中每个SP都是一个1级流水线的东西,流水线只能满载。所以CPU的乱序执行技术是流水线防欠载的手段,而GPU则是处理单元防欠载。这种宏观上的动态的线程分配和挂起能力决定了GPU可以利用计算来掩盖存储进行分支操作。
- 第1页:全文导读与内容简介
- 第2页:前言:通过GPU见证行业变革
- 第3页:第一章:GPU工作原理与并行计算
- 第4页:21世纪视觉需求与GPU变化
- 第5页:从山峰渲染了解GPU图形流水线
- 第6页:CPU与GPU的设计方向决定运算能力
- 第7页:GPU并行编程为何加速发展
- 第8页:GPU并行计算已成未来趋势
- 第9页:初识高性能并行计算
- 第10页:高性能并行计算发展历程
- 第11页:高性能并行计算单元分类
- 第12页:初识基于GPU系统的云计算
- 第13页:第二章:GPU结构与ATI产品发展
- 第14页:统一着色器架构释放GPU运算能力
- 第15页:传统GPU发展与着色器管线
- 第16页:传统SIMD结构流处理器指令细节
- 第17页:MIMD结构流处理器指令细节
- 第18页:R600时代对SIMD架构补充与优化
- 第19页:两种结构流处理器优劣对比
- 第20页:R300以来的芯片架构及其影响
- 第21页:ATI第一代统一渲染架构Xenos
- 第22页:统一渲染GPU R600临危受命
- 第23页:AMD对GPU架构的不断改进和优化
- 第24页:未来ATI图形芯片架构预测
- 第25页:第三章:GPU通用计算发展与细节
- 第26页:多核并行计算困惑与发展
- 第27页:基于AMD CPU+GPU异构计算平台
- 第28页:着色器模型变化历程与总结
- 第29页:Shader计算能力快速发展
- 第30页:揭秘GPU高性能计算关键
- 第31页:CPU与GPU的区别和发展方向
- 第32页:如何将GPU功能单元映射为通用单元
- 第33页:分支对GPU结构体系的挑战
- 第34页:GPU与CPU将如何演绎融合与吞并
- 第35页:第四章:GPU内部计算实现细节
- 第36页:GPU主要计算单元分布和职能
- 第37页:GPU内部通用计算代码运算过程
- 第38页:认识GPU浮点计算精度
- 第39页:整数运算能力与未来融合架构
- 第40页:GPU存储体系特点与变化
- 第41页:ATI GPU吞吐特性对比与分析
- 第42页:ATI GPU OPEN CL综合性能分析
- 第43页:先进混合架构之Larrabee展望
- 第44页:概念型融合架构之Fusion APU展望
- 第45页:GPU进化架构之Fermi分析
- 第46页:第五章:ATI GPU通用计算实例
- 第47页:ATI Stream技术发展与现状
- 第48页:OPEN CL接口技术与异构运算
- 第49页:Havok引擎与CPU+GPU异构运算
- 第50页:BOINC平台充沛的ATI GPU加速项目
- 第51页:最具影响力的Folding@home项目
- 第52页:GPU架构对于其他实例的适应性
- 第53页:全文总结与未来架构展望