GPU架构(续)
2012-09-07 22:17
555 查看
6、Nvdia GPU Femi架构
![](http://articles.csdn.net/uploads/allimg/120820/1355092D7-0.png)
![](http://articles.csdn.net/uploads/allimg/120820/1355092534-1.png)
GTX480-Compute 2.0 capability:
有15个core或者说SM(Streaming Multiprocessors )。
每个SM,一般有32 cuda处理器。
共480个cuda处理器。
带ECC的global memory
每个SM内的线程按32个单位调度执行,称作warp。每个SM内有2个warp发射单元。
一个cuda核由一个ALU和一个FPU组成,FPU是浮点处理单元。
SIMT和SIMD
SIMT是指单指令、多线程。
硬件决定了多个ALU之间要共享指令。
通过预测来处理多个线程间的Diverage(是指同一个warp中的指令执行路径产生不同)。
NV把一个warp中执行的指令当作一个SIMT。SIMT指令指定了一个线程的执行以及分支行为。
SIMD指令可以得到向量的宽度,这点和X86 SSE向量指令比较类似。
SIMD的执行和管线相关
所有的ALU执行相同的指令。
根据指令可以管线分为不同的阶段。当第一条指令完成的时候(4个周期),下条指令开始执行。
![](http://articles.csdn.net/uploads/allimg/120820/1355095422-2.png)
Nvida GPU内存机制:
![](http://articles.csdn.net/uploads/allimg/120820/1355093012-3.png)
每个SM都有L1 cache,通过配置,它可以支持shared memory,也可以支持global memory。
48 KB Shared / 16 KB of L1 cache,16 KB Shared / 48 KB of L1 cache
work item之间数据共享通过shared memory
每个SM有32K的register bank
L2(768K)支持所有的操作,比如load,store等等
Unified path to global for loads and stores
![](http://articles.csdn.net/uploads/allimg/120820/13550962T-4.png)
和AMD GPU类似,Nv的GPU 内存模型和OpenCL内存模型的对应关系是:
shared memory对应local memory
寄存器对应private memory
7、Cell Broadband Engine
![](http://articles.csdn.net/uploads/allimg/120820/135509E44-5.png)
由索尼,东芝,IBM等联合开发,可用于嵌入式平台,也可用于高性能计算(SP3次世代游戏主机就用了cell处理器)。
Bladecenter servers提供OpenCL driver支持
如图所示,cell处理器由一个Power Processing Element (PPE) 和多个Synergistic Processing Elements (SPE)组成。
Uses the IBM XL C for OpenCL compiler 11
Cell Power/VMX CPU 的设备类型是CL_DEVICE_TYPE_CPU,Cell SPU 的设备类型是CL_DEVICE_TYPE_ACCELERATOR。
OpenCL Accelerator设备和CPU共享内存总线。
提供一些扩展,比如Device Fission、Migrate Objects来指定一个OpenCL对象驻留在什么位置。
不支持OpenCL image对象,原子操作,sampler对象以及字节内存地址。
8、OpenCL编译系统
![](http://articles.csdn.net/uploads/allimg/120820/1355091923-6.png)
LLVM-底层的虚拟机
Kernel首先在front-end被编译成LLVM IR
LLVM是一个开源的编译器,具有平台独立性,可以支持不同厂商的back_end编译,网址:http://llvm.org
9、Installable Client Driver
ICD支持不同厂商的OpenCL实施在系统中共存。
代码紧被链接接到libOpenCL.so
应用程序可在运行时选择不同的OpenCL实施(就是选择不同platform)
现在的GPU驱动还不支持跨厂商的多个GPU设备同时工作。
通过clGetPlatformIDs() 和clGetPlatformInfo() 来检测不同厂商的OpenCL平台。
![](http://articles.csdn.net/uploads/allimg/120820/1355096157-7.png)
原文作者:迈克老狼
![](http://articles.csdn.net/uploads/allimg/120820/1355092D7-0.png)
![](http://articles.csdn.net/uploads/allimg/120820/1355092534-1.png)
GTX480-Compute 2.0 capability:
有15个core或者说SM(Streaming Multiprocessors )。
每个SM,一般有32 cuda处理器。
共480个cuda处理器。
带ECC的global memory
每个SM内的线程按32个单位调度执行,称作warp。每个SM内有2个warp发射单元。
一个cuda核由一个ALU和一个FPU组成,FPU是浮点处理单元。
SIMT和SIMD
SIMT是指单指令、多线程。
硬件决定了多个ALU之间要共享指令。
通过预测来处理多个线程间的Diverage(是指同一个warp中的指令执行路径产生不同)。
NV把一个warp中执行的指令当作一个SIMT。SIMT指令指定了一个线程的执行以及分支行为。
SIMD指令可以得到向量的宽度,这点和X86 SSE向量指令比较类似。
SIMD的执行和管线相关
所有的ALU执行相同的指令。
根据指令可以管线分为不同的阶段。当第一条指令完成的时候(4个周期),下条指令开始执行。
![](http://articles.csdn.net/uploads/allimg/120820/1355095422-2.png)
Nvida GPU内存机制:
![](http://articles.csdn.net/uploads/allimg/120820/1355093012-3.png)
每个SM都有L1 cache,通过配置,它可以支持shared memory,也可以支持global memory。
48 KB Shared / 16 KB of L1 cache,16 KB Shared / 48 KB of L1 cache
work item之间数据共享通过shared memory
每个SM有32K的register bank
L2(768K)支持所有的操作,比如load,store等等
Unified path to global for loads and stores
![](http://articles.csdn.net/uploads/allimg/120820/13550962T-4.png)
和AMD GPU类似,Nv的GPU 内存模型和OpenCL内存模型的对应关系是:
shared memory对应local memory
寄存器对应private memory
7、Cell Broadband Engine
![](http://articles.csdn.net/uploads/allimg/120820/135509E44-5.png)
由索尼,东芝,IBM等联合开发,可用于嵌入式平台,也可用于高性能计算(SP3次世代游戏主机就用了cell处理器)。
Bladecenter servers提供OpenCL driver支持
如图所示,cell处理器由一个Power Processing Element (PPE) 和多个Synergistic Processing Elements (SPE)组成。
Uses the IBM XL C for OpenCL compiler 11
Cell Power/VMX CPU 的设备类型是CL_DEVICE_TYPE_CPU,Cell SPU 的设备类型是CL_DEVICE_TYPE_ACCELERATOR。
OpenCL Accelerator设备和CPU共享内存总线。
提供一些扩展,比如Device Fission、Migrate Objects来指定一个OpenCL对象驻留在什么位置。
不支持OpenCL image对象,原子操作,sampler对象以及字节内存地址。
8、OpenCL编译系统
![](http://articles.csdn.net/uploads/allimg/120820/1355091923-6.png)
LLVM-底层的虚拟机
Kernel首先在front-end被编译成LLVM IR
LLVM是一个开源的编译器,具有平台独立性,可以支持不同厂商的back_end编译,网址:http://llvm.org
9、Installable Client Driver
ICD支持不同厂商的OpenCL实施在系统中共存。
代码紧被链接接到libOpenCL.so
应用程序可在运行时选择不同的OpenCL实施(就是选择不同platform)
现在的GPU驱动还不支持跨厂商的多个GPU设备同时工作。
通过clGetPlatformIDs() 和clGetPlatformInfo() 来检测不同厂商的OpenCL平台。
![](http://articles.csdn.net/uploads/allimg/120820/1355096157-7.png)
原文作者:迈克老狼
相关文章推荐
- 智能手机上的显卡 解读ARM架构主流GPU
- Pascal GPU 架构详解
- DirectX支配游戏 历代GPU架构全解析
- 智能手机上的显卡 解读ARM架构主流GPU
- 从GPU-CPU工作架构上分析帧率卡顿问题
- 移动GPU三种主流架构优缺点浅析
- GPU(CUDA)学习日记(三)------ CUDA基本架构介绍以及编程入门!
- ARM GPU 架构简介
- NVIDIA_Fermi_GPU架构简单解析(转)
- GPU架构详解
- NVIDIA下代Pascal GPU架构提升深度学习速度
- [GPU体系结构/GPU架构]深度解析AMD GPU中的Hierarchical Z以及Early-z被诸多限制的原因
- Nvidia GPU 的存储架构 发展
- 看cuda初级教程视频笔记-GPU体系架构概述
- 三 GPU 并行编程的运算架构
- ARM GPU 架构
- GPU物理架构
- AMD Mantle再添新作,引发下代GPU架构猜想
- CUDA范例精解通用GPU架构-(2)其实写个矩阵相乘并不是那么难
- GPU架构变迁