System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及gpgpu领域,尤其涉及一种gpgpu流水线指令缓存、gpgpu架构和取指方法。
技术介绍
1、gpgpu(general-purpose computing on graphics processing units,通用计算图形处理单元)是一种将图形处理单元(gpu)的计算能力扩展到通用计算任务的技术。通过这种技术,gpgpu不仅仅用于图形渲染,还能够高效地执行各种通用计算任务,包括科学计算、数据分析、深度学习等。
2、gpgpu存储系统通常由外部全局存储器、sm级共享存储器以及运算单元级寄存器文件组成,gpgpu大量线程的并行计算需要数据的高速传输,但外部全局存储器的带宽有限,无法满足大量线程的同时访问需求。因此,gpgpu架构通常在全局内存与共享内存之间、共享内存与局部内存之间还有l2 cache和l1 cache,将全局内存中的数据缓存,减少线程对全局存储器的访问。但是相对于寄存器级的文件访问,针对l1 cache的访问速度仍然较慢,在流水线执行指令过程中,从l1指令cache中取指将不可避免的造成流水线停滞,降低流水线效率与计算速度。
3、gpgpu一般使用五级流水线实现指令的执行,取指、译码、发射、执行和写回。其中取指阶段需要从l1指令cache中读取指令,虽然l1指令cache通过合并访存方式从全局存储器中缓存指令,降低了访存耗时,但相对于寄存器级的执行速度来说依旧较慢,并且对l1指令cache的访问依旧存在缓存缺失的情况,不可避免的造成访存耗时加长,使得流水线停滞,降低了计算
技术实现思路
1、针对现有技术的缺陷,本专利技术提供一种gpgpu流水线指令缓存、gpgpu架构和取指方法,通过fifo为流水线添加l0指令缓存,缓存l1指令cache中的指令,通过预取指实现流水线的非阻塞赋值,节省流水线的取指耗时,并且l0指令缓存的缓存过程与流水线的执行调度过程相互独立,不占用流水线的指令执行时间,降低了流水线的停滞概率,提高了运算性能。
2、为了解决所述技术问题,本专利技术采用的技术方案是:一种gpgpu流水线指令缓存,其是由fifo构建的l0指令缓存,l0指令缓存从l1指令cache缓存指令,为流水线提供寄存器级的指令读取;包括fifo、读控制模块、仲裁器和交叉开关,fifo用于缓存从l1指令cache中读取的指令,读控制模块与fifo相连,监测fifo的满标志信号,若fifo未满,则生成l1指令cache读请求,并将读请求发送至仲裁器;仲裁器与读控制模块相连,接收多个读控制模块发送的读请求并仲裁,生成读请求队列;仲裁器与l1指令cache相连,向l1指令cache发送读请求队列中的读请求,交叉开关连接于l1指令cache与fifo之间,交叉开关接收l1指令cache返回的指令,并根据tag标志判断该指令归属的fifo,然后将返回的指令写入到相应的fifo中。
3、进一步的,fifo与读控制模块构成硬件缓存单元,l0指令缓存包括多组硬件缓存单元,每组硬件缓存单元相互独立,并行实现。
4、进一步的,l0指令缓存从l1指令cache预取指。
5、进一步的,l0指令缓存的缓存过程与流水线的执行调度过程相互独立。
6、进一步的,根据缓存指令的数量、流水线效率以及可调度活跃线程束数配置fifo大小及数量。
7、进一步的,fifo大小与缓存指令的数量正相关,与流水线效率负相关。
8、进一步的,fifo数量与sm单元支持的最大调度线程束数量相等。
9、本专利技术还公开一种gpgpu架构,包括sm模块,sm模块包括流水线,流水线包括取指、译码、发射、执行和结果写回五个阶段,取指阶段基于上述gpgpu流水线指令缓存实现。
10、本专利技术还公开一种基于gpgpu流水线指令缓存的取指方法,包括以下步骤:
11、s01)、运算任务启动后,线程束调度模块将初始pc发送至l0指令缓存;
12、s02)、l0指令缓存的读控制模块检测fifo是否未满,若fifo未满,则根据初始pc生成l1指令cache读请求;
13、s03)、仲裁器接收多个读控制模块发送的读请求并仲裁,生成读请求队列,将读请求队列中首个被执行的读请求发送至l1指令cache;
14、s04)、l1指令cache接收到读请求后,根据请求地址查找cache内是否有相应数据,若cache命中,则将相应数据输出至交叉开关,若cache未命中,则将请求转发至l2 cache或全局内存,等待相应存储器返回数据,再将数据输出至交叉开关;
15、s05)、仲裁器确定l1指令cache处理读请求队列中首个被执行的读请求后,出列下一读请求至l1指令cache,剩余读请求继续排队,等待当前读请求被处理后出列下一读请求,重复此过程;
16、s06)、交叉开关接收到l1指令cache返回的指令后,根据tag判断当前指令所属的fifo,并将其写入相应的fifo中;
17、s07)、当fifo不全为空时,向线程束调度模块发送ready信号,线程束调度模块开始调度线程束进入流水线执行;
18、s08)、流水线执行取指阶段时,从相应fifo中出列指令,然后进入译码阶段。
19、进一步的,流水线在执行指令时发生分支跳转,执行l0指令缓存的分支机制,包括以下步骤:
20、s11)、当分支跳转指令进行到流水线的执行阶段时,流水线会产生标志下一指令为分支指令的branch信号,将其送入线程束调度模块;
21、s12)、线程束调度模块检测到branch信号后,生成clear信号,并将clear信号、线程束wid和分支指令的pc送入l0指令缓存;
22、s13)、l0指令缓存检测到clear信号后,根据线程束wid清空相应缓存单元组的fifo,并根据分支指令的pc生成l1指令cache读请求,重新缓存指令;
23、s14)、当线程束执行下一指令时,流水线在取指阶段从fifo中出列的指令即为分支指令,继续流水线的执行。
24、本专利技术的有益效果:本专利技术为流水线添加l0指令缓存,缓存l1指令cache中的指令,通过预取指实现流水线的非阻塞取指,节省流水线的取指耗时。
25、l0指令缓存的缓存过程与流水线的指令调度过程相互独立,不占用流水线的指令执行时间,降低了流水线的停滞概率,提高了运算性能。
26、基于fifo的l0指令缓存占用资源少,控制灵活,扩展性强,可根据活跃线程束数量及流水线效率合理配置fifo大小,提高资源利用率。
本文档来自技高网...【技术保护点】
1.一种GPGPU流水线指令缓存,其特征在于:其是由FIFO构建的L0指令缓存,L0指令缓存从L1指令Cache缓存指令,为流水线提供寄存器级的指令读取;包括FIFO、读控制模块、仲裁器和交叉开关,FIFO用于缓存从L1指令Cache中读取的指令,读控制模块与FIFO相连,监测FIFO的满标志信号,若FIFO未满,则生成L1指令Cache读请求,并将读请求发送至仲裁器;仲裁器与读控制模块相连,接收多个读控制模块发送的读请求并仲裁,生成读请求队列;仲裁器与L1指令Cache相连,向L1指令Cache发送读请求队列中的读请求,交叉开关连接于L1指令Cache与FIFO之间,交叉开关接收L1指令Cache返回的指令,并根据tag标志判断该指令归属的FIFO,然后将返回的指令写入到相应的FIFO中。
2.根据权利要求1所述的GPGPU流水线指令缓存,其特征在于:FIFO与读控制模块构成硬件缓存单元,L0指令缓存包括多组硬件缓存单元,每组硬件缓存单元相互独立,并行实现。
3.根据权利要求1所述的GPGPU流水线指令缓存,其特征在于:L0指令缓存从L1指令Cache预
4.根据权利要求1所述的GPGPU流水线指令缓存,其特征在于:L0指令缓存的缓存过程与流水线的执行调度过程相互独立。
5.根据权利要求1所述的GPGPU流水线指令缓存,其特征在于:根据缓存指令的数量、流水线效率以及可调度活跃线程束数配置FIFO大小及数量。
6.根据权利要求5所述的GPGPU流水线指令缓存,其特征在于:FIFO大小与缓存指令的数量正相关,与流水线效率负相关。
7.根据权利要求5所述的GPGPU流水线指令缓存,其特征在于:FIFO数量与SM单元支持的最大调度线程束数量相等。
8.一种GPGPU架构,包括SM模块,SM模块包括流水线,流水线包括取指、译码、发射、执行和结果写回五个阶段,其特征在于:取指阶段基于权利要求1-7任一项所述GPGPU流水线指令缓存实现。
9.一种取指方法,其特征在于:基于权利要求1-7任一项所述GPGPU流水线指令缓存实现,包括以下步骤:
10.根据权利要求9所述的取指方法,其特征在于:流水线在执行指令时发生分支跳转,执行L0指令缓存的分支机制,包括以下步骤:
...【技术特征摘要】
1.一种gpgpu流水线指令缓存,其特征在于:其是由fifo构建的l0指令缓存,l0指令缓存从l1指令cache缓存指令,为流水线提供寄存器级的指令读取;包括fifo、读控制模块、仲裁器和交叉开关,fifo用于缓存从l1指令cache中读取的指令,读控制模块与fifo相连,监测fifo的满标志信号,若fifo未满,则生成l1指令cache读请求,并将读请求发送至仲裁器;仲裁器与读控制模块相连,接收多个读控制模块发送的读请求并仲裁,生成读请求队列;仲裁器与l1指令cache相连,向l1指令cache发送读请求队列中的读请求,交叉开关连接于l1指令cache与fifo之间,交叉开关接收l1指令cache返回的指令,并根据tag标志判断该指令归属的fifo,然后将返回的指令写入到相应的fifo中。
2.根据权利要求1所述的gpgpu流水线指令缓存,其特征在于:fifo与读控制模块构成硬件缓存单元,l0指令缓存包括多组硬件缓存单元,每组硬件缓存单元相互独立,并行实现。
3.根据权利要求1所述的gpgpu流水线指令缓存,其特征在于:l0指令缓存从l1指令cache预取指...
【专利技术属性】
技术研发人员:于帆,赵鑫鑫,姜凯,王雄儒,
申请(专利权)人:山东浪潮科学研究院有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。