freeCodeCamp/guide/chinese/computer-hardware/gpu/index.md

98 lines
8.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
title: GPU
localeTitle: GPU
---
## GPU
GPU代表图形处理单元。大多数计算机使用这些来渲染视频或玩视频游戏。
GPU就像CPU但具有不同的优点和缺点。 CPU非常擅长快速运行几项任务。 GPU在同时运行许多任务方面要好得多但速度较慢。典型的GPU可以运行超过10,000个任务但是要同时运行这么多任务它们必须共享内存和其他资源。 GPU通常会反复运行非常重复的任务以免CPU浪费时间。有些CPU具有内置GPU但拥有单独的GPU几乎总是更强大。
GPU可用于计算以及视频渲染。常见的方法包括OpenACCCUDAOpenCL和OpenGL。一些应用程序包括GPU实现以减少应用程序运行所需的时间。
GPU最初主要用于3D游戏渲染以提高分辨率和帧率。但是现在更广泛地利用这些功能来改善许多领域的计算工作量;例如财务建模,尖端科学研究和石油和天然气勘探。 GPU也被用作比特币挖掘的资源因为它们能够轻松地运行重复任务而不会占用CPU的资源这允许您在具有低端CPU的计算机上运行操作系统同时仍然可以使用比特币使用GPU
有两个主要品牌生产GPUNVidia和AMD。他们通常被称为“绿色团队”和“红色团队”表明他们的标志的主要颜色。
着名的GPU制造商包括Nvidia和AMD / ATI。
## GPU的起源
GPU的大多数原始背景可以映射到VGA虚拟图形阵列控制器的时代。但这些实际上并不是一个整体处理单元而是充当显示功能的支持单元。 VGA控制器是连接到动态RAM和显示发生器的简单存储器控制器。 VGA的主要功能是接收图像数据正确排列并将其发送到视频设备视频设备主要是计算机监视器或连接到游戏控制台进行显示的电视屏幕。
第一个成熟的图形加速处理单元由NVIDIA于1999年开发并销售“GeForce 256”。较旧的3D加速器必须依靠CPU来执行图形计算。新的“GeForce 256”作为CPU的协处理器将帧速率提高了50以上并降低了总成本从而在消费市场中扩展自己。
## GPU与CPU
CPU针对最小延迟进行了优化即“在给定的时间窗口内能够执行尽可能多的属于单个串行线程的指令”。处理器必须能够在操作之间快速切换。为了在CPU上获得大量延迟CPU中有许多基础设施比如大型缓存可以随时执行数据大量的无序执行控制单元以及一些ALU内核。 CPU的ISA以更通用的方式设计并且可以执行广泛的操作。 虽然CPU是为通用计算和指令而设计的但GPU是为图形计算而发展的。对于图形的2D / 3D渲染需要对数百和数千个像素执行相同的计算。因此GPU主要针对最大吞吐量进行了优化。这是在单一架构中使用大量ALU实现的。 L2缓存缩小因为在从DRAM获取数据之前GPU核心需要执行大量计算从而将CPU停顿时间与大量并行性重叠。这称为延迟隐藏。
## GPU架构的演变
GPU最初是以图形管道的概念为蓝本的。图形管道是一个理论模型包括如何使用GPU和软件如OpenGLDirectX发送和执行图形数据的级别。管道基本上将3D空间坐标转换为2D像素化数据以供设备显示。以下是“传统固定功能图形管道”的说明这是迄今为止普遍接受的管道。
### 第0代
Silicon Graphics Inc.SGI的“Reality Engine”板标志着GPU硬件和图形管道的出现。但该技术仍然依赖于上半年的CPU。此外速度限制为每个时钟周期执行一个像素。该引擎使用OpenGL一种广泛使用的2D / 3D应用程序编程。
### 1stGeneration
“3dfx Voodoo”1996演变为第一款真正的3D游戏加速器之一。它处理纹理映射光栅化和z缓冲但CPU仍然必须进行顶点转换。
### 2ndGeneration
这是第一款真正的GPU即NVIDIA的“GeForce 256”在共同市场上发布的时刻。这一代的GPU使用了加速图形端口AGP提供了多种纹理硬件几何变换光照贴图和照明等新功能。传统的管道被称为“固定功能”管道因为一旦开发人员将图形数据发送到GPU的管道数据就无法更改。
### 第三代
通过这一代CPU可编程流水线技术应运而生。现在以前的不可编程部件可以由程序员编程。 2001年NVIDIA发布了GeForce3。
### 第四代
随着21世纪初第一个“完全可编程显卡”已经达到了消费者的目的。 NVIDIA GeForce FXATI Radeon 9700是第一款。这些GPU可以执行逐像素操作以及像素着色器和可编程顶点。但是顶点着色器和像素着色器处理需要单独的专用硬件。
### 第五代
GPU正在不断发展并以其最高速率发展而这一代GPU是第一批使用PCI-express总线的GPU。引入了多个渲染缓冲区64位支持纹理访问等以及GPU内存的增加。
### 第六代
2006年NVIDIA GeForce 8系列GPU的发布通过将GPU作为大规模并行处理器引入彻底改变了GPU产业和范围。它是第一个拥有“统一”和“可编程”着色器或者换句话说可编程统一处理器。统一意味着图形管道的所有过程都在一个处理器上执行任何阶段都不需要外部单元。下面讨论基本的Unified GPU架构组件。
自9XX系列NVidia GPU发布以来各代之间的性能提升只会更好。从980Ti到1080Ti以及新推出的208Tis性能提升了一倍多。 AMD也开始生产更好的GPU如RX 580和Vega 64尽管这仍然远不及Nvidia的水平。 就在最近Nvidia推出了一系列名为RTX的GPU其中包括2080Ti2080和2070等高端显卡.RTX代表“光线追踪”这是一种渲染技术用于生成图像但追踪光路在一个场景中。
## 基本的统一GPU架构组件
统一GPU架构基于许多可编程处理器的并行阵列其中图形流水线的所有阶段即顶点几何光栅化以及像素着色器处理和同一核心上的并行计算与早期的GPU相比。处理器阵列与固定功能处理器高度集成用于压缩和解压缩光栅化光栅操作纹理过滤抗锯齿视频解码和高清视频处理。
以下讨论的体系结构侧重于在许多处理器核上有效地执行许多并行线程。
### 处理器阵列
处理器阵列由许多处理核心组成。统一的GPU处理器阵列具有典型的多线程多处理器组织结构。为了执行每个线程涉及多处理器并且在每个GPU多处理器也称为流处理多处理器SM有许多流处理器排列在队列中。所有处理器都通过互连网络连接到DRAM分区。
### 多线程
如前所述GPU针对高吞吐量和延迟隐藏进行了优化。大规模多线程缩小了DRAM的内存负载延迟。由于要完成加载或提取指令线程处于停顿状态处理器可以执行另一个线程。此外由于高规模多线程GPU支持细粒度并行图形着色器编程模型和细粒度并行计算机编程模型。
### 多处理器架构
除了SM中的多个处理器内核外还有特殊功能单元多线程指令单元指令和常量高速缓存以及共享内存。此外每个核心由大型多线程寄存器文件RF组成。每个流处理器核心由整数和浮点运算单元组成它们可以一起处理大多数操作。
### SIMT
流式多处理器使用“单指令多线程SIMT”架构。指令在称为warps的并行线程组中执行。每个并行线程属于同一类型并在同一程序地址处一起启动。 SIMT处理器架构与SIMD架构非常相似。在SIMT中特定指令独立地在多个并行线程中执行而在SIMD中在同步组中的多个数据通道中执行相同的指令。
### 流处理器
它执行所有基本的FP操作以及算术比较转换和逻辑PTX指令。 特别功能单位 一些线程指令在SFU上执行同时在SP上执行其他线程指令。
#### 更多信息:
* [维基百科](https://en.wikipedia.org/wiki/Graphics_processing_unit)
* [OpenACC的](https://www.openacc.org/)
* [CUDA](https://developer.nvidia.com/cuda-zone)
* [OpenCL的](https://www.khronos.org/opencl/)
* [OpenGL的](https://www.opengl.org/)
* [nVidia博客](https://blogs.nvidia.com/blog/2009/12/16/whats-the-difference-between-a-cpu-and-a-gpu/)
* [的NVidia](https://www.nvidia.com/)
* [AMD](http://www.amd.com/en-us/products/graphics)