计算机组成原理报告
走进基于 PC-GPU 的通用计算时代
学 号:
姓 名:
指导教师:
提交日期:
成 绩:
4060121
XXX
袁静波
2008-5-14
教师签字:
东北大学秦皇岛分校计算机工程系
计算机组成原理 结课作业
走进基于 PC-GPU 的通用计算时代
学生姓名: XXX 指导教师:袁静波
(东北大学秦皇岛分校计算机工程系,河北 秦皇岛 066004)
Abstract
With the popularization of personal computers, the graphics computing needs of the PC users is always higher than
the development of CPU’s computing ability , therefore GPUs was brought to the world. After years of continuous
development, today a top-of-the-range graphics card might have 128 ALUs in it, which have a much too higher
computing ability than CPU and other processors. Especially on many Large-scale parallel computing programs,
comparing to CPUs the GPU could get a about one hundred times performance improvement.
Due to the Unified Shader, highly parallel nature of vector processors and the CUDA technology, GPU assisted
hardware stream processing can have a huge impact in specific data processing applications.
摘要:
随着个人计算机的普及化,用户对图形计算方面的需求不断超出 CPU 在计算能力方面的发展速度,于是 GPU 诞生了。经过不断的
发展,最新的 GPU 包含了 128 个算逻单元(ALU),其计算能力已经远远的超过了 CPU 和其他的处理器,尤其是在某些大规模并行
计算的应用上,相对于 CPU 而言性能可以提高达 100 倍以上。
借助于统一渲染架构、向量处理器高度并行的性质、CUDA 技术的辅助,GPU 协以流处理器将在具体数据处理程序中产生巨大影响。
关键词: GPGPU CUDA SISM 图形处理器 通用计算 Physx
1.综述
纵览今年国情,一月特大雪灾、汶川地震、北川泥石流等各种自然灾害给我国的气象部门提出了巨大挑战,与之关联最为密切的
就是大规模运算问题,随着数据库技术的成熟,数据挖掘应用,生物基因技术的发展,军事国防的需求,历史数据的几何级膨胀
等使得更多更强的高性能计算(High Performance Computing , HPC)成为必要。
就低端领域而言,随着软件的工程化程度逐渐提高,尤其是系统模拟技术的普遍应用,对 PC 计算能力的要求也成直线增长,因此,
如何使 HPC 走入低端计算领域,也已成为当今重要课题。
尽管通过分布式系统可以解决大部分的大型计算问题,但是分布式系统成本极高,通信开销大,故障率高;数据的存取结构复杂,
开销大;数据的安全性跟保密性较难控制等弱点。
由于这些弱点的存在,即使中等偏上规模的企业也很难承担起分布式系统的成本,于是新的解决方案被提上议程。随着计算机处
理器,特别是 GPU(Graphical Processing Unit)计算能力的飞速提高,使得高性能计算走入桌面成为可能。
本文以 Nvidia 系列 GPU 为例,简单介绍了 GPU 的发展,重点介绍了 GPU 新兴热门技术并综合所学课程和网络资料,从个人角度分
析推断了 GPU 的发展方向。
2.回顾发展
东北大学秦皇岛分校计算机系
第 1页
计算机组成原理 结课作业
历史上任何技术的发展和进步,都是由用户和市场的内在需求驱动的。回顾显卡的发展,用户对图形计算方面的需求不断的超出
了 CPU 在计算能力方面的发展速度。随着 CPU 计算能力的进步,人们一度认为可以将图形、视频等需要大量运算的功能都交与 CPU
完成。图形渲染适合并行处理,而擅长于执行串行工作的 CPU 实际上难以胜任这项任务,于是到 1995 年,PC 机领域第一款 GPU—
—3dfx Voodoo 出现,3D 图形的画质和速度才有了质的飞跃。GPU 功能更新迅速,平均一年多便有新的一代 GPU 诞生,运算速度也
越来越快。
Intel Core2Due Woodcrest
24 GFLOPS
GeForce 8800GT
520 GFLOPS
运算能力比较
GPU 快 21.6 倍
2006 年 GPU/CPU 计算能力比较
为了满足不断增强的速度需求,多条超长流水线,多级 cache,多线程和多处理器等新技术全部被引入 GPU 的设计中,GeForce 3 的
流水线就划分了 800 个阶段,而且在 GPU 中专门设置了 SIMD 指令来处理向量,一次可同时处理四路数据。可以说,GPU 在特定
的计算领域正在追赶甚至早已超过了 CPU 的运算能力。
3.现行技术
从现行 GPU 前沿看,现行 GPU 从底层到高层进行了大规模翻改,主要体现在:
1. 全新的 GPU 硬件架构(MIMD——多指令多数据引入)
a. 统一渲染架构(Unified Shader)
图 1-2.
新的 GPU 架构为PC 发展和高性能计算带来了新的春天。传统的 GPU 仅仅为图形计算而设计,其核心部件分为顶点着色器(Vertex
Shader,VS)和像素着色器(Pixel Shader,PS),执行矢量计算,而新型 GPU(从 G80 系列开始)采用统一渲染架构(Unified
Shader),由于 VS 和PS 的基本运算都是 4D 数据,因此,新的架构中将两个部件合并为一个统一的计算单元——流处理器(Stream
东北大学秦皇岛分校计算机系
第 2页
计算机组成原理 结课作业
Processor,SP)。每个 SP 中的 ALU 都呗设计为最基本的 1D 标量数据运算单元,在 GPU 中实现了 128 个这样的 1D 标量 SP,
当遇到 nD 计算时,GPU 将其分解为 n 个 1D 数据交给 n 个 SP 并行计算,再最大限度上满足一般性的计算需求。GPU 自身的运
算方式由基于矢量计算变为了基于标量的并行计算,这样 GPU 的计算能力和应用范围就从图形领域扩大到了通用计算领域。
b.线程分批技术(Thread Batching)
尽管在 Nvidia 的编程手册把这项技术划归到了软件领域,我个人以为,技术的本质是硬件层次的事情。还是以 G80 为例,G80
里面有 16 个 Multiprocessor. 每个 Multiprocessor 都有一组(G80 里面是 8 个)32 位的 Processor,每个 Processor 都是
SIMD 架构,还有共用的 Instruction Unit,在 G80 里面有两个 Instruction Unit 模块。在每一个时钟周期内,按照线程块
网格(warp,不是线程块,一个线程块目前最多含有 16 个 warp)为单位启动执行。每一个 warp 里面包含的 thread 数量是有
限的,现在的规定是 32 个。
如下图表述:
c.存储管理(多路缓存和共享数据存储)
两张示意图其实是从不同的层次上展示了同样的技术。在 Grid 模型图中,我们可以看到存储器的层次设计——Register—HW
一个时间周期
Shared Memory------HW 一个时钟周期
Local Memory --- DRAM,no cache,慢
Global Memory --- DRAM, no cache,慢
Constant Memory --- DRAM, cached, 1……10s……100s 个周期,这个和 cache 的 locality 有关。
Texture Memory --- DRAM,cached, 1……10s……100s 个周期,这个和 cache 的 locality 有关。
Instruction Memory(不可见)--- DRAM,cached
放到 Device 宏观设计上来看,Global Memory 和 Local Memory 都划在 Device Memory 内,只不过在谈论线程设计时分开比
较容易理解。每个 Processor 可以通过共享内存来共享数据,这有点像 DLL 中的共享数据区。
2.全新的 GPGPU 体系架构(CUDA——完整的 GPGPU 解决方案)
CUDA(Compute Unified Device Architecture)是一个新的基础架构,它是一个完整的 GPGPU 解决方案(包括软件、硬件及
其接口层),提供了硬件的直接访问接口。在架构上采用了一种全新的计算体系结构来使用 GPU 提供的硬件资源,从而给大
规模的数据计算应用提供了一种比 CPU 更加强大的计算能力。
从 CUDA 体系结构的组成来说,包含了三个部分:开发库、运行期环境和驱动。
东北大学秦皇岛分校计算机系
第 3页
计算机组成原理 结课作业
开发库是基于 CUDA 技术所提供的应用开发库。目前 CUDA 的 1.1 版提供了两个标准的数学运算库——CUFFT(离散快速傅立叶
变换)和 CUBLAS(离散基本线性计算)的实现。这两个数学运算库所解决的是典型的大规模的并行计算问题,也是在密集数
据计算中非常常见的计算类型。开发人员在开发库的基础上可以快速、方便的建立起自己的计算应用。此外,开发人员也可
以在 CUDA 的技术基础上实现出更多的开发库。
运行期环境提供了应用开发接口和运行期组件,包括基本数据类型的定义和各类计算、类型转换、内存管理、设备访问和执
行调度等函数。基本上囊括了所有在 GPGPU 开发中所需要的功能和能够使用到的资源接口,开发人员可以通过运行期环境的
编程接口实现各种类型的计算。
CUDA 提供了一般的 DRAM 内存寻址以实现更多的编程灵活性,如图 1-4 所示:分散和收集内存操作。从编程角度看,这转换为
就像在 CPU 上一样在 DRAM 的任何位置读取和写入数据的能力。
CUDA 还提供了具有非常快速的一般读写访问的并行数据高速缓存或芯片共享内存,线程可以使用它来互相共享数据。如图 1-5
所示,应用程序可以利用它来最小化对 DRAM 的过度提取和巡回,从而降低对 DRAM 内存带宽的依赖程度。
4.发展趋势
我个人认为,将来 GPU 的发展将向以下几个方向进行:
1.更快的 3D 图形处理能力,更强的运算速度,更方便的 API,通用计算
图形处理领域仍然是一块巨大的蛋糕,这从 Intel 公司的 Larrabee 计划上可以看的出来。从 2D 处理单元的独立(NVIO 技
术)的出现,到 H.264 BSP 的加入,常用功能专业细分化成为发展趋势。常规向量 GPU 已经逐渐走到尽头,并行的标量处
理 GPU 将会成为市场主流。
随着 Nvidia 对 AGEIA 的并购,Physx 技术将被 Nvidia 公开并运用到未来的 GPU 设计方面,事实上正如 AMD 在双核架构上
对 Intel 所做的一样,NV 系列显卡从 G80 起就已经支持 Physx 技术,所缺少的只是一款成功的驱动而已,PhysX 将会使设
计师在开发游戏的过程中使用复杂的物理效果而不需要像以往那样耗费漫长的时间开发一套物理引擎,而且使用了物理引
擎还会使一些配置较低的电脑无法流畅运行。AGEIA 更宣称 PhysX 执行物理运算的效率比当前的 CPU 与物理处理软件的
组合高出 100 倍。未来很有可能形成物理加速和图形加速的全新格局。
2.纯粹并行计算处理器,脱离图形显示的桎梏
NVIDIA 的 CUDA-enabled GPU 已经具有一个完整的产品线,Tesla 开始逐步进入批量发售阶段,Tesla 是专门面向 GPU 计算
的产品,本身不具有图形输出功能,TeslaS870 再一个 1U 高度的标准服务器内装备了四个 GPU,每个 GPU 具有 128 个 SP,
因此每个 1U 装置内总共具备 512 个 SP 和 6GB 存储器,非常适合有高密度,大规模数据计算需求的用户。GPU 已经完全可
以脱离显示领域,跨入并行运算领域。
GPU 提升空间
GPU 已经基本具有现代计算机体系和组成中的大部分新技术,如 MIMS 技术,超长指令流水线技术,并行计算技术,多级缓
存技术。为了提高 GPU 的运算能力和运算速度,可以考虑使用细分指令、更多级的流水线;功能分配、简化硬件设计;更
多核心、增加并行能力;更新缓存替换算法,提高缓存级别,增加缓存容量来增加缓存命中率的方法。
其他如,大规模使用并重新优化并行数据高速缓冲(Prarllel Data Cache)技术,优化线程执行管理器(Thread Execution
Manager)算法和硬件电路,采用新的封装方式,都可以提高 GPU 的运算速度和运算能力。
4.总结
东北大学秦皇岛分校计算机系
第 4页
计算机组成原理 结课作业
由于 GPU 的特点是处理密集型数据和并行数据计算,因此其非常适合需要大规模并行计算的领域,尽管现在该技术仍然不是很
成熟和普及,更多的应用于游戏,CG,科学计算,地质,生物模拟等领域,但是由于 GPU 本身的通用特性,我们可以放开思维,
推断一些应用场景,如搜索引擎中的排序,文本分类等相关算法,数据库,数据挖掘,军事模拟,导航识别等,这些领域都属
于大规模的数据密集型计算,因此我们完全有理由相信,在 GPU 的告诉发展和 CUDA 的驱动下,GPU 能够在这些领域建立一个属
于自己的新时代
参考文献
1. Matt Pharr 《GPU Gems 2》 [M]. [S. l.]:Tsinghua University Press, 2006.
2. 丁艺明. 《利用 GPU 进行高性能数据并行计算》 [ J ]: Programmer , 2008.04 97-99
3. NVIDIA 《CUDA-大规模并行计算的利器》 [ J ]. Programmer , 2008 03 32-37
4. 赵开勇 《CUDA 硬件实现分析》 [ J/OL] http:// blog.csdn.net/OpenHero/ , 2008 04
5. NVIDIA 《CUDA Compute Unified Device Architecture Programm Guide》 [M/OL] http://developer.nvidia.com ,2007 11
东北大学秦皇岛分校计算机系
第 5页