美文网首页
图形处理器GPU的一些理论知识

图形处理器GPU的一些理论知识

作者: 曹波波 | 来源:发表于2018-04-18 10:59 被阅读75次

什么是GPU?

图形处理器(英语:Graphics Processing Unit,缩写:GPU),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑工作站、游戏机和一些移动设备(如平板电脑智能手机等)上图像运算工作的微处理器

基本工作原理

时下的GPU多数拥有2D或3D图形加速功能。如果CPU想画一个二维图形,只需要发个指令给GPU,如“在坐标位置(x, y)处画个长和宽为a×b大小的长方形”,GPU就可以迅速计算出该图形的所有像素,并在显示器上指定位置画出相应的图形,画完后就通知CPU “我画完了”,然后等待CPU发出下一条图形指令。
有了GPU,CPU就从图形处理的任务中解放出来,可以执行其他更多的系统任务,这样可以大大提高计算机的整体性能。

扩展说明

GPU通用计算技术发展已经引起业界不少的关注,事实也证明在浮点运算并行计算等部分计算方面,GPU可以提供数十倍乃至于上百倍于CPU的性能,如此强悍的“新星”难免会让CPU厂商老大英特尔为未来而紧张, NVIDIA和英特尔也经常为CPU和GPU谁更重要而展开口水战。GPU通用计算方面的标准目前有OpenCL、CUDA、ATI STREAM。其中,OpenCL(全称Open Computing Language,开放运算语言)是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器(DSP)等其他并行处理器,在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景,AMD-ATI、NVIDIA时下的产品都支持OPEN CL。

移动端设备利用GPU加速原理

屏幕显示图像的原理
图片.png

首先从过去的 CRT 显示器原理说起。CRT 的电子枪按照上面方式,从上到下一行行扫描,扫描完成后显示器就呈现一帧画面,随后电子枪回到初始位置继续下一次扫描。为了把显示器的显示过程和系统的视频控制器进行同步,显示器(或者其他硬件)会用硬件时钟产生一系列的定时信号。当电子枪换到新的一行,准备进行扫描时,显示器会发出一个水平同步信号(horizonal synchronization),简称 HSync;而当一帧画面绘制完成后,电子枪回复到原位,准备画下一帧前,显示器会发出一个垂直同步信号(vertical synchronization),简称 VSync。显示器通常以固定频率进行刷新,这个刷新率就是 VSync 信号产生的频率。尽管现在的设备大都是液晶显示屏了,但原理仍然没有变。

图片.png

通常来说,计算机系统中 CPU、GPU、显示器是以上面这种方式协同工作的。CPU 计算好显示内容提交到 GPU,GPU 渲染完成后将渲染结果放入帧缓冲区,随后视频控制器会按照 VSync 信号逐行读取帧缓冲区的数据,经过可能的数模转换传递给显示器显示。

在最简单的情况下,帧缓冲区只有一个,这时帧缓冲区的读取和刷新都都会有比较大的效率问题。为了解决效率问题,显示系统通常会引入两个缓冲区,即双缓冲机制。在这种情况下,GPU 会预先渲染好一帧放入一个缓冲区内,让视频控制器读取,当下一帧渲染好后,GPU 会直接把视频控制器的指针指向第二个缓冲器。如此一来效率会有很大的提升。

双缓冲虽然能解决效率问题,但会引入一个新的问题。当视频控制器还未读取完成时,即屏幕内容刚显示一半时,GPU 将新的一帧内容提交到帧缓冲区并把两个缓冲区进行交换后,视频控制器就会把新的一帧数据的下半段显示到屏幕上,造成画面撕裂现象,如下图:

图片.png

为了解决这个问题,GPU 通常有一个机制叫做垂直同步(简写也是 V-Sync),当开启垂直同步后,GPU 会等待显示器的 VSync 信号发出后,才进行新的一帧渲染和缓冲区更新。这样能解决画面撕裂现象,也增加了画面流畅度,但需要消费更多的计算资源,也会带来部分延迟。

那么目前主流的移动设备是什么情况呢?从网上查到的资料可以知道,iOS 设备会始终使用双缓存,并开启垂直同步。而安卓设备直到 4.1 版本,Google 才开始引入这种机制,目前安卓系统是三缓存+垂直同步。

关于垂直同步和三重缓冲

“垂直同步”所解决的问题是画面撕裂,而垂直同步会导致“操作延迟”的副作用,“三重缓冲”是为了解决“垂直同步”所引起的操作延迟的操作。

1、垂直同步解决画面撕裂的原理:

开启垂直同步,就相当于在帧缓冲区里架设了红绿灯。当显示器尚未完成一帧画面的刷新时,红灯亮起,两个缓冲区不允许交换;当显示器刷新完一帧画面时,绿灯亮起,此时缓冲区可以进行交换了。这样以后就杜绝了“在进行数据传输的过程中交换缓冲区“的可能,自然也就解决了画面撕裂的问题。

2、三重缓冲解决操作延迟的原理:

三重缓冲在双重缓冲的基础上再加入了一个帧缓冲区,组成了一个前缓冲区,两个后缓冲区的规格。程序来回向两个后缓冲区写入图像,每次显示器刷新时,前缓冲区就和最近完成写入的那个后缓冲区交换。可以看到,即便有一个缓冲区要受到红绿灯的管控,另外两个缓冲区还是可以来回写入图像,于是就不需要人为增加画面延迟了。

参考文章:
iOS 保持界面流畅的技巧
https://blog.ibireme.com/2015/11/12/smooth_user_interfaces_for_ios/

相关文章

  • 图形处理器GPU的一些理论知识

    什么是GPU? 图形处理器(英语:Graphics Processing Unit,缩写:GPU),又称显示核心、...

  • Unity 与计算机图形学

    从GPU讲到游戏引擎再到游戏 1.GPU/硬件原理 GPU(图形处理器)硬件原理:(个人理解)高效的绘制图形 ,显...

  • 2018年小白比特币挖矿Q&A

    1.GPU和CPU GPU和CPU均可用来计算。日常应用主要是CPU(中央处理器)进行总的处理,GPU(图形处理器...

  • 显示卡的“心脏” GPU工作原理介绍

    图形处理器(英语:Graphics Processing Unit,缩写:gpu),又称显示核心、视觉处理器、显示...

  • iOS Rendering 一: 计算机渲染原理

    CPU 与 GPU 的架构 GPU全称是GraphicProcessing Unit--图形处理器,其最大的作用就...

  • GPU加速在前端的应用

    1,概述 GPU(Graphics Processing Unit) 图形处理单元,又称图形处理器,是我们所周知的...

  • nforce芯片 GPU

    NVIDIA nForce® 媒体通信处理器(MCP)是搭载NVIDIA GeForce GPU(图形处理器)的最...

  • 杂项

    1.GPU 个人理解:GPU是图形处理器(或者 图形加载器),开启后,可以提升像素填充和渲染的效率,提升加载速度,...

  • GPU,你是怎么被"ZAO"的?

    GPU小常识: GPU(Graphics Processing Unit),中文名:图形处理器,曾用名:显卡。 1...

  • 性能优化之UI绘制优化

    UI绘制优化 一.CPU与GPU工作流程 cpu:中央处理器(用于计算) gpu:图形处理器(用于显示) C...

网友评论

      本文标题:图形处理器GPU的一些理论知识

      本文链接:https://www.haomeiwen.com/subject/omxvkftx.html