System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种GPGPU流水线指令缓存、GPGPU架构和取指方法技术_技高网

一种GPGPU流水线指令缓存、GPGPU架构和取指方法技术

技术编号:42779563 阅读:0 留言:0更新日期:2024-09-21 00:40
本发明专利技术涉及GPGPU领域,具体是一种GPGPU流水线指令缓存、GPGPU架构和取指方法。本发明专利技术通过FIFO为流水线添加L0指令缓存,缓存L1指令Cache中的指令,通过预取指实现流水线的非阻塞赋值,节省流水线的取指耗时。并且L0指令缓存的缓存过程与流水线的执行调度过程相互独立,不占用流水线的指令执行时间,降低了流水线的停滞概率,提高了运算性能,同时,基于FIFO的L0指令缓存占用资源少,控制灵活,扩展性强,可针对活跃线程束数量及流水线效率合理配置FIFO大小,提高资源利用率。

【技术实现步骤摘要】

本专利技术涉及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预取指...

【专利技术属性】
技术研发人员:于帆赵鑫鑫姜凯王雄儒
申请(专利权)人:山东浪潮科学研究院有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1