当前课程知识点:移动图形概论 > 第一章 课程简介 > 1.2 GPU 相关基础知识 > GPU 相关基础知识
同学们 大家好
今天将要介绍gpu的相关知识
在上节课里面
我们多次提到了gpu这个词
这里我们将对它进行详细的介绍
介绍GPU的基本概念
介绍他的硬件架构
介绍它与CPU的区别
进而了解gpu为解决特定的问题
而经历的一个独特的演化过程
所谓gpu
就是专门进行图形相关的处理和计算的单元
这个在图形应用的早期是没有的
因为早期的计算机的图形任务 都是由CPU来完成
随着计算技术的不断发展
对图形的要求越来越高
很多时候如果完全由CPU来做这个图形计算的话
那么就会占用太多的cpu时间
处理器就没有更多的资源去做其他事情了
而且很多这样的图形的运算具有比较固定的运算模式
非常便于用硬件技术来进行加速
就这样
图形技术的很多功能 慢慢的就开始由硬件来代替完成
最早是在1984年 SGI公司发布了第一台
具有专用图形处理硬件的图形工作站
这还是一个比较简单的图形加速
还没有形成标准化
到了1995年的时候
3Dfx公司呢
发布了第一款消费级的图形加速卡也就是Voodoo卡
这个卡在早期的电脑游戏玩家里面非常的流行
很多人都会为自己的游戏能有更好的一个运行效果
来购买这样的一个加速硬件
到了98年的时候Imagination公司
在一款游戏机里面使用了自己的图形加速单元
这个照片就是当时那款游戏机的外观
具体来讲
图形处理硬件的主要任务就是在屏幕上显示图像
最简单的显卡
就是把计算机里保存的点阵数据显示在屏幕上
一般情况下
点阵数据由CPU进行计算生成
显卡仅仅负责显示
并没有任何的加速可言
图形技术的发展是一个非常好的软件 硬件协同发展的一个实例
最开始显示字符都是由处理器一个一个点来显示
后来显卡包含了硬件字库
处理器只要告诉显卡需要显示字符的Ascii码
显卡就能把它完整地显示在屏幕上
甚至原来屏幕上的光标闪烁的功能
如果由处理器来做的话 也是一种浪费资源
所以这个功能后来也用显卡来加速
逐渐一些更加高级的图形功能
包括缩放 色彩变换特别是最重要的3D相关的功能
慢慢的都由硬件来实现
把cpu从复杂的数学运算中解放了出来
在这个过程中 发展出了很多标准的图形处理api
包括我们比较熟悉的DirectX
还有就是opengl
CPU在处理图形任务上为什么有一些力不从心呢
这个就主要是由计算机的一个基本架构来决定
我们所熟悉的计算机就是冯诺依曼架构
这由冯诺依曼在20世纪40年代提出
它包括CPU 工作存储器 永久存储器 输入和输出来组成
CPU处于核心地位
所有的工作都要由他来进行
但这样就带来了一个瓶颈
CPU的典型工作模式就是读取指令并执行
这个指令是从系统存储器中读出来的
但是这个指令在执行的时候呢
还可能需要一些数据
这些数据依然要从系统存储器中读取
所以CPU就会频繁地访问这样的存储器
而且有的时候有一些操作
执行的功能比较单一
但是所需要的数据却比较多
CPU就会忙于在执行单元中和存储器里交换数据
这就是所谓的冯诺依曼瓶颈
突破此平静的一种解决方案
就是在CPU附近配备高速缓存
我们经常看到我们的处理器
会有三M高速缓存或者是五M高速缓存
而缓存越多 性能会越好 价格也越贵
CPU利用高速缓存啊
把数据提前从系统存储器中读入并送入缓存
以便于在执行的时候随需随取减轻CPU的负担
另外一种解决方案
是提高数据从系统存储器发送到CPU速度
这个就需要更好的硬件解决方案了
对于GPU来讲
他是专门用于处理图形数据的处理单元
也会面临这样的一个瓶颈
而图形处理
必然会使用到更多的数据
所以它所面临的这个瓶颈问题会更严重
因此 在gpu的设计中
也会在gpu附近配备高速的缓存
它的工作原理和CPU与缓存的关系是类似的
使用高速缓存的时候
gpu可以从系统存储器中检索数据
并保存在附近的缓存里面
另外
gpu往往会包含成百上千的线程模块
因此能够尽可能地并行处理更多的代码
这就意味着当一个线程必须等待访问存储器时
GPU可以处理另一个线程
这样可以掩藏访问存储器所产生的部分延时
从而提高了整体的效率
从下面这个图 我们可以看出 gpu和CPU的典型区别
因为CPU它所处理的功能和任务 往往是比较复杂的
所以CPU中包含了很大的一个功能模块用来进行流程控制
缓存的需求也往更多一些
但是gpu的功能比较单一
它会包含很多的计算模块
这些绿色的每一个方块都是一个计算单元
都可以并行运算
而他对控制和高速缓存的需求 就会比比CPU少一些
这个图是PowerVR的一款 GPU 结构
我们可以看到里面包含了典型的并行处理单元
非常丰富的Unified Shading Cluster Array
它们可以并行地执行GPU程序的相关代码
同时这里还按照图形处理的管线流程
包含一些处理特定图形功能的运算单元
比如处理顶点数据的VertexData Master
处理像素 纹理等相关数据的处理单元
这些结构和单元 都是为了更好更快速的完成图形处理任务
好 今天的课程就到这里
谢谢大家
-1.1 课程基本情况介绍
--课程基本情况介绍
-1.2 GPU 相关基础知识
-1.3 OpenGL ES 技术发展历史
-1.4 PowerVR SDK 安装和使用
-第一章测试
-2.1 OpenGL ES 基本概念
-2.2 编写第一个图形程序
-2.3 主要 API 介绍
-第二章测试
-3.1 矢量和矩阵知识基础
-3.2 旋转与位移变换
--旋转与位移变换
-3.3 OpenGL ES 变换基础
-第三章测试
-4.1 着色器编程语言介绍
-4.2 着色器编程实例
--着色器编程实例
-第四章测试
-5.1 颜色的基本概念
--颜色的基本概念
-5.2 纹理素材的使用
--纹理素材的使用
-5.3 立方体纹理
--立方体纹理
-第五章测试
-6.1 光照的基本概念
--光照的基本概念
-6.2 光源模型
--光源模型
-6.3 使用着色器渲染颜色
-6.4 反射与折射
--反射与折射
-第六章测试
-7.1 基于物理渲染的基本概念
-7.2 基于图像的照明
--基于图像的照明
-7.3 PBR 的实现
--PBR 的实现
-第七章测试
-8.1 Vulkan 介绍
-8.2 SDK 中的实用工具介绍
-综合测试

