GPU是什么意思?

Infocode蓝畅 互联网开发 1833

GPU是什么意思?

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

GPU是图形处理器,一般GPU就是焊接在显卡上的, 大部分情况下,我们所说GPU就等于指显卡,但是实际情况是GPU是显示卡的“心脏”,是显卡的一个核心零部件,核心组成部分。它们是“寄生与被寄生”关系。GPU本身并不能单独工作,只有配合上附属电路和接口,才能工作。这时候,它就变成了显卡。

理器”。(图像处理单元)GPU是相对于CPU的一个概念,由于在现代的计算机中(特别是家用系统,游戏的发烧友)图形的处理变得越来越重要,需要一个专门的图形的核心处理器。

GPU是什么意思
GPU是什么意思

GPU工作原理

简单说GPU就是能够从硬件上支持T&L(Transform and Lighting,多边形转换和光源处理)的显示芯片,由于T&L是3D渲染中的一个重要部分,其作用是计算多边形的3D位置与处理动态光线效果,也能称为“几何处理”。

一个好的T&L单元,能提供细致的3D物体和高级的光线特效;只不过大多数PC中,T&L的大部分运算是交由CPU处理的(这就也就是所谓软件T&L),因为CPU的任务繁多,除了T&L之外,还要做内存管理和输入响应等非3D图形处理工作,所以在实际运算的时候性能会大打折扣。




请在浏览器中启用JavaScript来完成此表单。
请输入姓名或昵称
如果您有任何疑问、需要更多信息或希望与我们建立合作请留言
=
( function() { const style = document.createElement( 'style' ); style.appendChild( document.createTextNode( '#wpforms-17950-field_1-container { position: absolute !important; overflow: hidden !important; display: inline !important; height: 1px !important; width: 1px !important; z-index: -1000 !important; padding: 0 !important; } #wpforms-17950-field_1-container input { visibility: hidden; } #wpforms-conversational-form-page #wpforms-17950-field_1-container label { counter-increment: none; }' ) ); document.head.appendChild( style ); document.currentScript?.remove(); } )();
加载

回复

共1条回复 我来回复
  • Infocode蓝畅
    Infocode蓝畅 评论

    与CPU相比,专用图形硬件唯一的计算优势是速度,但速度却至关重要。

     

    这里首先介绍一下GPU中的数据并行处理通用策略,不同的处理器体系结构使用了不同的策略来避免延迟。CPU通常采用存取速度较快的本地缓存来避免延迟问题,还可以通过使用诸如分支预测、指令重新排序、寄存器重命名和缓存预取技术来避免延迟。

     

    而GPU采用不同的策略,GPU芯片上的大部分区域都集成的shader core。shader core是由一大组(通常上千个)处理器(processors)构成的并行处理单元。GPU是一个流处理器,依次处理有序的相似数据集。比如一组顶点或片元就是相似的数据集。因此GPU可以以大规模并行的方式处理这些数据。另一个重要的因素是,数据处理是尽可能独立的,因此它们不需要来自邻近的(顶点,片元)信息,也不共享可写的内存位置。这个规则有时会被打破,但会带来多余的延迟。

     

    GPU对数据处理速度做了单独的优化,但是也有其自己的弊端。由于高速缓存(cache memory)和控制逻辑(control logic)的芯片面积更少。每个着色核心(shader core)的延迟通常比CPU处理器遇到的延迟要高得多。

     

    这里以GPU运行时由于读取纹理时遇到的延迟来举例。这是最常见的发生延迟的情况,因为纹理通常存储在外部内存(显存)上而不是靠近shader core 的cache。读取通常需要成百上千个时钟周期。假如现在有100个片元等待计算。处理器正在执行第一个片元着色器,并按以下步骤执行:1.做一个简单的代数计算。2.读取纹理。为了隐藏第二步读取纹理时的延迟,处理器会在等待数据传输时先切换到第二个片元着色器,并执行第二个片元着色器的第一步1.做一个简单的代数计算。然后第二个片元着色器会读取纹理,接着切换到第三个……一直到100个片元着色器的第一步都执行完毕。然后第一个片元着色器的纹理读取此时已经完成,开始执行第一个片元着色器的后续步骤。

     

    在上述例子中,GPU通过切换片元来保持繁忙来隐藏延迟。更进一步,gpu通过将指令执行逻辑与数据分离来使得这个设计更进一步。称为single instruction, multiple data(SIMD)。顾名思义,这种设计使一组固定数量着色程序同步执行相同的指令,虽然计算时它们各自的数据可能有所不同。相比起单个逻辑和调度单元来运行每个程序,这样会节省大量功耗以及减少用以处理,交换数据的芯片。

     

    现在把上述的例子转换成GPU中常用术语。对每个片元着色器的调用称为线程(thread)。与cpu的线程稍微有点不用的是,GPU的线程需要为着色器程序的输入准备少量的内存资源,同时还有执行期间的寄存器资源。使用相同着色器程序的线程被打包成组(比如一组内都是片元着色器或者顶点着色器)。这样的一组被称为warps(NVIDIA)或者wavefronts (AMD)。warp会由一些数量的shader core使用SIMD方案执行(sahder core的数量8到64不等 )。warp中的每一个线程(tread)对应了一个SIMD lane(可以理解为一个待执行线程对应着SIMD并行处理架构中的一个处理通道。)

     

    现在用一个新的例子,这里有2000个片元着色器待处理。也就是2000个线程(thread)。nividia通常把32个线程绑定为一个warp。也就是分成了 2000/32 = 62.5 个warp。这里取整数也就是63个warp,第63个warp中少放点线程就行。warp中的32个线程会以在32个处理器上同步执行。当warp执行到内存读取这种延迟较高的步骤时,此时warp中的32个线程因为同步,都在执行当前内存读取的指令。为了减少延迟,这32个处理器会切换到下一个warp执行。和上文提到的单个处理器例子类似,只是处理器的数量和对应的线程数量变成了原来的32倍。但是切换时的速度还是和单核的一样快。

    2年前 0条评论
已关闭回复。