一种基于查找表的GPGPU指令执行效率优化方法与流程

    技术2024-11-01  50


    本发明涉及gpgpu,具体的说是一种基于查找表的gpgpu指令执行效率优化方法。


    背景技术:

    1、在计算机科学领域,图形处理器单元(graphics processing unit, gpu)作为高性能计算的关键组件,以其卓越的并行处理能力和浮点运算能力,在图形渲染、科学计算、人工智能、深度学习等领域发挥着不可替代的作用。gpgpu指令是指通用图形处理单元(gpgpu)中的指令集,它们用于指导gpu进行各种计算任务。其中,指令的调度和执行是核心环节,直接关系到gpgpu的性能表现和效率。为了确保指令的正确执行顺序和避免资源冲突,传统的gpgpu采用了记分牌(scoreboard)机制。这种机制通过为每个线程束的资源分配状态位来跟踪资源的使用情况,从而解决了资源冲突和依赖关系问题。例如,它可以通过为每个寄存器分配1bit来标识其写状态,其中0表示寄存器已完成写回并更新,而1则表示尚未写回。这样的机制使得即使某一线程束因数据依赖而被阻塞时,其他线程束的指令也能继续被调度和执行,从而提高了整体的执行效率。

    2、记分牌机制虽然能有效避免指令执行过程中由raw(read after write,读后写冲突,是指在一个线程中,先写入数据,然后另一个线程读取这个刚刚写入的数据。)和waw(write after write,写后写冲突,是指在一个线程中,两次写入操作之间没有其他线程的干扰,导致第二次写入覆盖了第一次写入的数据)冒险而引起的资源争抢、非依赖关系指令阻塞等问题,且简单易于实现。然而,为每个线程的每个寄存器分配1bit标识位,假设当前存在64个待发射的线程束,且每个线程束可分配64个寄存器,那么就需要4kbit的存储空间。随着线程束数量的增加,所需的存储空间理论上会持续扩大。在有限的硬件资源下,过大的记分牌会增加硬件开销,限制寄存器文件的大小,从而影响线程束的并行度,增加流水线的停滞时间,降低gpgpu的指令执行效率。


    技术实现思路

    1、在高性能计算领域尤其是gpgpu架构中,伴随着gpgpu的架构不断演进,计算单元数量、指令集的复杂性以及线程束的并行度和每个线程束可分配的寄存器数量的也在不断增加,传统的记分牌机制这种只能单纯依赖增加硬件开销解决指令依赖关系的方法显然已到瓶颈,不能满足gpgpu指令执行效率与硬件开销之间的有效平衡,本发明针对目前技术发展的需求和不足之处,提供一种基于查找表的gpgpu指令执行效率优化方法。

    2、本发明的一种基于查找表的gpgpu指令执行效率优化方法,解决上述技术问题采用的技术方案如下:

    3、一种基于查找表的gpgpu指令执行效率优化方法,其以线程束索引为地址构建寄存器状态查找表,通过不断地轮询指令缓存区和写回缓冲区完成查找表表项的存储及释放;当从指令缓冲区的指令内检测到新的目的寄存器编号,则根据线程束id将其记录存储到对应的表项内;当从写回缓冲区的信息内检测到线程束id和已经记录过的寄存器编号rid,则根据该线程束id将表项内的rid复位,释放该存储空间。

    4、可选的,所涉及寄存器状态查找表根据并行线程束的数量构建与之对应的表项;

    5、每条表项包含多个寄存器编号rid、偏移量和表项空满标志,其中:

    6、rsrid表示源寄存器,其下标rid表示源寄存器的编号;rdrid表示目的寄存器,其下标rid表示目的寄存器编号;

    7、rid表示该表项所对应的线程束当前正在执行的若干指令中将要写回的目的寄存器rdrid的编号;

    8、偏移量表示当指令中写回的目的寄存器为多个连续的寄存器时,只需要存储首个寄存器编号rid,剩余的寄存器编号rid根据首个寄存器编号rid、以1为步进单位逐渐递增,最大值为首个寄存器编号rid与偏移量的和;偏移量根据指令集的不同分配不同寄存器编号rid的存储空间;

    9、表项空满标志表示该表项存储的寄存器编号rid是否已达到最大值,默认分配1bit;该标志位为1时表示当前表项已满,此时若该表项对应的线程束包含写回寄存器的待发射指令,则需要等待表项释放出可用的寄存器存储空间。

    10、进一步可选的,所涉及寄存器编号rid的存储空间大小由线程束可分配的寄存器数量来决定;

    11、寄存器编号rid的存储空间支持根据需要进行动态调整,以适应不同的情况或优化资源使用。

    12、进一步可选的,针对寄存器状态查找表的每条表项:

    13、默认每个寄存器id分配6bit存储空间,寄存器编号rid范围是0到63,初始值为0;

    14、偏移量默认分配2bit的存储空间,这使得偏移量支持最多3个连续目的寄存器写回操作;

    15、默认每条表项支持记录4组寄存器编号rid和对应的偏移量,每条表项宽度为4*(6+2)+1=33bit。

    16、可选的,所涉及的一种基于查找表的gpgpu指令执行效率优化方法,其具体实现包括以下内容:

    17、s1、计算任务在gpgpu中的调度和取指过程:gpgpu在处理计算任务时,线程调度单元产生活跃的线程束,并按照轮询调度方式依次取指、译码,将信息缓存至指令缓冲区;

    18、s2、在gpgpu中处理指令缓存区和写回缓冲区的过程:gpgpu在处理计算任务时,通过轮询方式检测指令缓存区和写回缓冲区,优先处理写回信息,然后读取并判断译码信息以确定是否有raw冲突风险,若否则将指令信息缓存至待发射缓冲区;

    19、s3、冲突风险判断和指令信息缓存:gpgpu在处理计算任务时,检测并解决raw和waw冲突,并将无冲突的指令缓存到待发射缓冲区;

    20、s4、处理阻塞与写回更新:gpgpu在处理计算任务时,当检测到raw冲突时,相关指令被阻塞,随后通过写回缓冲区更新,解决阻塞并发射指令;

    21、s5、在gpgpu的指令处理流程中,针对表项已满导致的阻塞,通过写回缓冲区更新解决指令阻塞问题,确保指令能够按正确的顺序发射执行。

    22、进一步可选的,所涉及步骤s1具体包括以下执行流程:

    23、s1.1、上位机产生的计算任务达到gpgpu后,线程调度单元处理这些计算任务,产生m个活跃的线程束,标记为w0到wm,使用轮询调度方法分配优先级,其中w0具有最高优先级,依次递减至wm;

    24、s1.2、取指单元根据线程束w0的程序计数器pc0取出指令i0.1,将指令i0.1发送到译码单元进行译码,译码后,解析出指令i0.1中包含的源寄存器编号和目的寄存器编号,之后根据线程束编号将译码信息缓存到对应的指令缓冲区0内;

    25、s1.3、取指单元移至下一线程束w1,并根据其程序计数器pc1取出指令i1.1,重复步骤s1.2中的译码和信息存储过程,直至所有线程束w0到wm都被轮询一遍;完成一轮后,取指单元返回到w0,并继续进行下一轮的取指操作。

    26、进一步可选的,所涉及步骤s2具体包括以下执行流程:

    27、s2.1、通过轮询的方式依次检测指令缓存区i-buffer和写回缓冲区wb-buffer,写回缓冲区wb-buffer的优先级高于指令缓冲区i-buffer,优先处理写回缓冲区的信息;

    28、s2.2、若写回缓冲区wb-buffer为空、并且检测到线程束w0对应的指令缓冲区0不为空时,查找表单元读取指令缓冲区0内指令i0.1的译码信息;

    29、s2.3、若指令i0.1只包含源寄存器rsr2、不存在写回的目的寄存器,则以线程束w0为索引地址,读取对应的查找表表项,判断该表项的空满状态,如果空满标志位为0,则将表项内存储的四组寄存器编号rid与指令i0.1内源寄存器rsr2的编号r2进行对比,若对比结果为编号不相等,则表明没有raw冲突风险,将指令i0.1的信息缓存到待发射缓冲区内,等待后续的发射执行。

    30、进一步可选的,所涉及步骤s3具体包括以下执行流程:

    31、s3.1、继续轮询写回缓冲区wb-buffer、且确认其为空,在检测到指令缓冲区1不为空时,查找表单元读取指令缓冲区1内的指令i1.1的译码信息;

    32、s3.2、若指令i1.1的译码信息内同时包含源寄存器rsr1和目的寄存器rdr5,编号分别为r1和r5,则以线程束w1为索引地址,读取对应的查找表表项,判断该表项的空满状态;

    33、s3.3、当空满标志位为0时,将表项内存储的四组寄存器编号rid与指令i1.1内源寄存器rsr1的编号r1、目的寄存器rdr5的编号r5分别对比,若均不相等,表明没有raw和waw冲突风险,同时记录存储下目的寄存器rdr5的编号r5,偏移量为0;

    34、s3.4、将指令i1.1的信息缓存到待发射缓冲区内,等待后续的发射执行。

    35、进一步可选的,所涉及步骤s4具体包括以下执行流程:

    36、s4.1、若写回缓冲区wb-buffer均为空状态、且不存在raw和waw冲突风险,指令的处理过程与步骤s2或步骤s3相同,直到轮询到缓冲区m,至此完成一轮指令信息的读取;

    37、s4.2、当再次轮询到指令缓冲区1时,查找表单元读取缓冲区内的指令i1.2的译码信息;

    38、s4.3、若指令i1.2的译码信息内只包含源寄存器rsr5,编号为r5,则以线程束w1为索引地址,读取对应的查找表表项,如果空满标志位为0,则将表项内存储的四组寄存器编号rid与指令i1.2内源寄存器rsr5对比,源寄存器rsr5的编号为r5,对比发现存在相等的寄存器编号时,由步骤s3可知线程束w1的表项已经记录过编号为r5的目的寄存器rdr5并且期间未发生写回动作,表明此编号为r5的寄存器不能读取,否则会发生raw冲突,因此,指令i1.2不能发射,发生阻塞;

    39、s4.4、继续轮询读取写回缓冲区wb-buffer时,写回缓冲区wb-buffer不空,此时查找表单元读取写回缓冲区wb-buffer中的信息,根据其内的线程束w1及寄存器编号r5找到对应的表项,将已经记录的寄存器r5复位置0,释放存储空间,表明寄存器r5完成写回,寄存器的值已经更新完毕可以读取;

    40、s4.5、当下一轮轮询到指令缓冲区1时,指令缓冲区1内的指令仍然为i1.2,此时由于寄存器r5已完成写回即表项内不存在r5的记录,则将指令i1.2的信息缓存到待发射缓冲区内,等待后续的发射执行。

    41、进一步可选的,所涉及步骤s5具体包括以下执行流程:

    42、s5.1、步骤s1-s4是在表项不满的情况下进行,当线程束wx的指令ix.y只包含编号为rm的目的寄存器时,且对应表项的空满标志为1,即表项记录存储空间已满时,指令ix.y也不能发射,发生指令阻塞;

    43、s5.2、当某一时刻轮询检测到写回缓冲区wb-buffer不空时,查找表单元读取写回缓冲wb-buffer区中的信息,根据其内的线程束wx及寄存器编号rx找到对应的表项,并将已经记录的寄存器rx复位置0,释放其存储空间;

    44、s5.3、等到下一轮再次轮询到线程束wx对应的指令缓冲区时,将寄存器rm存储到rx释放的空间内,指令ix.y的信息缓存到待发射缓冲区内,等待后续的发射执行。

    45、本发明的一种基于查找表的gpgpu指令执行效率优化方法,与现有技术相比具有的有益效果是:

    46、1、本发明的gpgpu中指令执行优化流程包括线程束的管理和调度、指令的取指和译码、写回缓冲区和指令缓冲区的轮询检测、冲突风险的判断和处理、以及表项满时的指令阻塞和处理,这些步骤共同确保了gpgpu能够高效、准确地执行计算任务,降低了存储空间的开销,同时通过灵活调整查找表的深度和宽度,优化资源分配,提高了gpgpu的指令执行效率;

    47、2、本发明涉及的寄存器状态查找表所需的存储空间明显小于记分牌机制所需的存储空间,并且伴随着线程束以及每个线程束可分配寄存器的数量的增加,本优化方法将会更加节省硬件开销,同时查找表可根据并行线程束的数量动态调整查找表深度以及根据每个线程束可分配的寄存器数目灵活调整查找表表项宽度,在提高线程束并行度以及gpgpu指令执行效率的同时做到硬件资源最优化分配。


    技术特征:

    1.一种基于查找表的gpgpu指令执行效率优化方法,其特征在于,该方法以线程束索引为地址构建寄存器状态查找表,通过不断地轮询指令缓存区和写回缓冲区完成查找表表项的存储及释放;当从指令缓冲区的指令内检测到新的目的寄存器编号,则根据线程束id将其记录存储到对应的表项内;当从写回缓冲区的信息内检测到线程束id和已经记录过的寄存器编号rid,则根据该线程束id将表项内的rid复位,释放该存储空间。

    2.根据权利要求1所述的一种基于查找表的gpgpu指令执行效率优化方法,其特征在于,寄存器状态查找表根据并行线程束的数量构建与之对应的表项;

    3.根据权利要求2所述的一种基于查找表的gpgpu指令执行效率优化方法,其特征在于,寄存器编号rid的存储空间大小由线程束可分配的寄存器数量来决定;

    4.根据权利要求3所述的一种基于查找表的gpgpu指令执行效率优化方法,其特征在于,针对寄存器状态查找表的每条表项:

    5.根据权利要求4所述的一种基于查找表的gpgpu指令执行效率优化方法,其特征在于,所述方法的具体实现包括以下内容:

    6.根据权利要求5所述的一种基于查找表的gpgpu指令执行效率优化方法,其特征在于,所述步骤s1具体包括以下执行流程:

    7.根据权利要求6所述的一种基于查找表的gpgpu指令执行效率优化方法,其特征在于,所述步骤s2具体包括以下执行流程:

    8.根据权利要求7所述的一种基于查找表的gpgpu指令执行效率优化方法,其特征在于,所述步骤s3具体包括以下执行流程:

    9.根据权利要求8所述的一种基于查找表的gpgpu指令执行效率优化方法,其特征在于,所述步骤s4具体包括以下执行流程:

    10.根据权利要求9所述的一种基于查找表的gpgpu指令执行效率优化方法,其特征在于,所述步骤s5具体包括以下执行流程:


    技术总结
    本发明公开一种基于查找表的GPGPU指令执行效率优化方法,涉及GPGPU技术领域,该方法以线程束索引为地址构建寄存器状态查找表,通过不断地轮询指令缓存区和写回缓冲区完成查找表表项的存储及释放;当从指令缓冲区的指令内检测到新的目的寄存器编号,则根据线程束ID将其记录存储到对应的表项内;当从写回缓冲区的信息内检测到线程束ID和已经记录过的寄存器编号RID,则根据该线程束ID将表项内的RID复位,释放该存储空间。本发明可以确保GPGPU能够高效、准确地执行计算任务,降低存储空间的开销。

    技术研发人员:李乐乐,王帅,赵鑫鑫,姜凯
    受保护的技术使用者:山东浪潮科学研究院有限公司
    技术研发日:
    技术公布日:2024/10/24
    转载请注明原文地址:https://symbian.8miu.com/read-21434.html

    最新回复(0)