3.1 具有芯片共享存储器的一组 SIMT 多处理器

[复制链接]
查看11 | 回复3 | 2010-3-1 11:08:29 | 显示全部楼层 |阅读模式
Tesla 架构的构建以一个可伸缩的多线程流处理器(SM)阵列为中心。当主机 CPU 上的 CUDA 程序调用内核网格时,网格的块将被枚举并分发到具有可用执行容量的多处理器上。一个线程块的线程在一个多处理器上并发执行。在线程块终止时,将在空闲多处理器上启动新块。
多处理器包含 8 个标量处理器(SP)核心、两个用于先验(transcendental)的特殊函数单元、一个多线程指令单元以及芯片共享存储器。多处理器会在硬件中创建、管理和执行并发线程,而调度开销保持为0。它可通过一条内部指令实现 _syncthreads()_ 屏障同步。快速的屏障同步与轻量级线程创建和零开销的线程调度相结合,有效地为细粒度并行化提供了支持,举例来说,您可以为各数据元素(如图像中的一个像素、语音中的一个语音元素、基于网格的计算中的一个单元)分配一个线程,从而对问题进行细粒度分解。
为了管理运行各种不同程序的数百个线程,多处理器利用了一种称为 SIMT(单指令、多线程)的新架构。多处理器会将各线程映射到一个标量处理器核心,各标量线程使用自己的指令地址和寄存器状态独立执行。多处理器 SIMT 单元以 32 个并行线程为一组来创建、管理、调度和执行线程,这样的线程组称为 warp 块。(此术语源于第一种并行线程技术 weaving。半 warp 块可以是一个 warp 块的第一半或第二半。)构成 SIMT warp 块的各个线程在同一个程序地址一起启动,但也可随意分支、独立执行。
为一个多处理器指定了一个或多个要执行的线程块时,它会将其分成 warp 块,并由 SIMT 单元进行调度。将块分割为 warp 块的方法总是相同的,每个 warp 块都包含连续的线程,递增线程 ID,第一个 warp 块中包含线程 0。第 2.1 节介绍了线程 ID 与块中的线程索引之间的关系。
每发出一条指令时,SIMT 单元都会选择一个已准备好执行的 warp 块,并将下一条指令发送到该 warp 块的活动线程。Warp 块每次执行一条通用指令,因此在 warp 块的全部 32 个线程均认可其执行路径时,可达到最高效率。如果一个 warp 块的线程通过独立于数据的条件分支而分散,warp 块将连续执行所使用的各分支路径,而禁用未在此路径上的线程,完成所有路径时,线程重新汇聚到同一执行路径下。分支仅在 warp 块内出现,不同的 warp 块总是独立执行的——无论它们执行的是通用的代码路径还是彼此无关的代码路径。
SIMT 架构类似于 SIMD(单指令、多数据)向量组织方法,共同之处是使用单指令来控制多个处理元素。一项主要差别在于 SIMD 向量组织方法会向软件公开 SIMD 宽度,而 SIMT 指令指定单一线程的执行和分支行为。与 SIMD 向量机不同,SIMT 允许程序员为独立、标量线程编写线程级的并行代码,还允许为协同线程编写数据并行代码。为了确保正确性,程序员可忽略 SIMT 行为,但通过维护很少需要使一个 warp 块内的线程分支的代码,即可实现显著的性能提升。在实践中,这与传统代码中的超高速缓冲存储器线作用相似:在以正确性为目标进行设计时,可忽略超高速缓冲存储器线的大小,但如果以峰值性能为目标进行设计,在代码结构中就必须考虑其大小。另一方面,向量架构要求软件将负载并入向量,并手动管理分支。
如图 3-1 所示,每个多处理器都有一个属于以下四种类型之一的芯片存储器:
?
每个处理器上有一组本地 32 位寄存器;
?
并行数据缓存或共享存储器,由所有标量处理器核心共享,共享存储器空间就位于此处;
?
只读固定缓存,由所有标量处理器核心共享,可加速从固定存储器空间进行的读取操作(这是设备存储器的一个只读区域);
?
一个只读纹理缓存,由所有标量处理器核心共享,加速从纹理存储器空间进行的读取操作(这是设备存储器的一个只读区域),每个多处理器都会通过实现不同寻址模型和数据过滤的纹理单元访问纹理缓存,相关内容请参见第 4.3.4 节。
本地和全局存储器空间是设备存储器的读/写区域,不应缓存。
一个多处理器一次可处理的块数量取决于每个线程有多少个寄存器、每个块需要多少共享存储器来支持给定的内核,这是因为多处理器的寄存器和共享存储器对于一批块的所有线程来说都是分离的。如果没有足够的寄存器或共享存储器可供多处理器用于处理至少一个块,内核将启动失败。一个多处理器可并发执行多达 8 个线程块。
如果 warp 块执行的非原子指令为 warp 块的多个线程写入全局或共享存储器中的同一位置,针对此位置的串行化写入操作的数量和这些写入操作所发生的顺序将无法确定,但其中一项操作必将成功。如果 warp 块执行原子指令来为 warp 块的多个线程读取、修改和写入全局存储器中的同一位置,则针对该位置的每一项读取、修改或写入操作都将发生,且均为串行化操作,但这些操作所发生的顺序无法确定。

具有芯片共享存储器的一组 SIMT 多处理器
图 3-1. 硬件模型
回复

使用道具 举报

千问 | 2010-3-1 11:08:29 | 显示全部楼层
好资料
回复

使用道具 举报

千问 | 2010-3-1 11:08:29 | 显示全部楼层
楼主是一个资料多个帖子
回复

使用道具 举报

千问 | 2010-3-1 11:08:29 | 显示全部楼层


被你看穿了 嘎嘎
发到一个里 太拥挤了很长 给人感觉和不想看 所以分开了 顺便赚点分 玩玩 (*^__^*) 嘻嘻……
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行