[发明专利]图形处理器中的前端动态共享方法在审
申请号: | 201510364637.3 | 申请日: | 2015-06-26 |
公开(公告)号: | CN105045564A | 公开(公告)日: | 2015-11-11 |
发明(设计)人: | 季锦诚;梁晓峣 | 申请(专利权)人: | 季锦诚 |
主分类号: | G06F9/38 | 分类号: | G06F9/38;G06F9/54 |
代理公司: | 南京瑞弘专利商标事务所(普通合伙) 32249 | 代理人: | 陈建和 |
地址: | 200000 上海*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 图形 处理器 中的 前端 动态 共享 方法 | ||
技术领域
本发明属于通用图形处理器芯片设计领域,特别涉及处理器芯片的前端部分,可用于芯片运行时,基本不损失性能的前提下,最大程度的节约能耗。
背景技术
近年来,图形处理器GPU作为通用和高通量设备经历了巨大的增长。图形处理器厂商不断增加架构创新来推进多核图形处理器的并行处理能力大幅度高于多核中央处理器。但另一方面,现代的图形处理器芯片消耗了相对于中央处理器数倍的能量,因此研究人员提出各架构方案以期提高图形处理器的能量效率。在英伟达的术语中,一个典型的图形处理器是由多个称为流多处理器(SM)的计算引擎组成。每个流多处理器的流水线前端包含取指令,指令译码和发射指令通常需要一部分晶体管工作,平均占图形处理器的总动态功耗的18%,而且仅仅是取指令单元占了图形处理器总功耗的12%,是第四最耗电的部件。受此现象引导,我们试图在图形处理器流水线前端组件上设计架构方案来节约能耗。
如nVidiaGPU使用了CUDA编程模型,对硬件进行抽象,包括三个基本概念:线程组的层次,共享内存,同步。提供了细粒度数据并行和线程并行,循环的粗粒度数据并行和任务并行。CUDA有可扩展的多线程流处理器(SMs)阵列构成。当执行CUDA的kernel时,grid的块就被分布到多处理器上。一个多处理器由8个标量处理器(SP)。每个SM有两个warpscheduler和dispatchunit。
CUDA线程模型:GPU上的thread有三个层次。最高层是grid,grid内的thread执行相同的kernel,每个grid可以有2^16-1个blocks,blocks组织成一维或者二维形式。中间层是block,每个block内部的thread可以组织成三维,最多可以有512个threads。同一block内部的thread可以通过一个低延迟的片上共享内存共享数据,对数据进行原子操作,并通过__syncthreads原语进行同步。最后,硬件将thread分为warp执行以提高访存性能。
CUDAkernel函数是C函数,在被调用时按照指定的grid维数和线程块维数并行的执行。CUDA可以通过内置的threadIdx变量获得线程ID。kernel的限制:不能包含循环,静态变量,参数的个数必须固定。threadIdx是一个三元矢量,所以可以将线程按照一维,二维或者三维来划分。在kernel内可以通过内置的blockIdx变量和blockDim变量访问某个线程块。同一网格中不同线程块中的线程不能互相通信和同步。Block内的线程通过sharedmemory,atomicoperations和barriersynchronization协同工作,不同block内的线程不能通信。Kernel启动时内置变量和函数参数存放在sharedmemory中。
每个线程有私有本地内存,每个线程块有共享内存,所有线程可以访问全局内存。所有线程还可以访问二个只读内存空间,常量和纹理内存空间。Kernel内的数组存储在localmemory中。Sharedmemory,G80上为16个bank,4bytes为单位进行寻址,bankID=4-byteaddress%16,相邻的4-byte地址映射为相邻的bank,每一个bank的带宽为4bytesperclockcycle。对同一个bank的同时访问导致bankconflict,只能顺序处理。解决方法,padding,transpose。Coalescedglobalmemoryaccesses,在half-warp层对访问globalmemory进行协调,
CUDA将32个标量线程称为warp,以warp为单位来进行创建,管理,调度,执行。一个warp共享和执行相同的指令,由于每个SM有8个core,执行一个warp指令需要4个cycles,类似于一组矢量指令的流,所以标量线程可以看成矢量处理单元。一个cycle一条指令从L1指令cache加载到指令buffer中,当warp的数据都可用时被选择执行。Block内的thread按顺序分配到不同的warp中,但是warp的顺序可能随着GPU的更新而变化。GPU调度线程零开销。执行结构为单指令多线程SIMT,SM将线程块中的每一个线程映射到一个标量处理器,每一个标量线程独立的在自己的指令空间和寄存器状态运行。SIMT与SIMD的不同指出在于后者指定了数据宽度,然而SIMT中的每一个线程可以执行不同的代码路径。SIMT可以使得程序员编写指令级并行代码。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于季锦诚,未经季锦诚许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510364637.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:接口变更的提示方法和接口变更的提示系统
- 下一篇:一种反码加法器