编译加速方法、路由单元和缓存技术

技术编号:22329798 阅读:48 留言:0更新日期:2019-10-19 12:13
本申请提供了一种编译加速方法、路由单元和缓存,本方法被路由单元所执行,路由单元用于实现如下一种或多种功能:缓冲自身产生的数据,转发数据,接收数据,验证接收的数据;路由单元与核单元一一对应,核单元用于执行线程;Cache中包括多个路由单元,各核单元执行的线程不同;线程为推测线程或确定线程;包括:满足中断条件时,控制第一核单元进入等待状态;第一核单元与第一路由单元对应,第一路由单元执行该方法;接收第一数据后,确定第二核单元,第二核单元执行第二线程,第二线程处理第一数据;若第二核单元与第一核单元相同,则控制第一核单元执行第二线程;否则,转发第一数据,实现RAW情况下的编译。

【技术实现步骤摘要】
编译加速方法、路由单元和缓存
本专利技术涉及计算机体系结构
,尤其涉及一种编译加速方法、路由单元和缓存。
技术介绍
在并行编译器中,串行程序被划分成为多个推测线程进行执行,每个推测线程执行程序的不同部分。推测多线程执行时需保证串行程序的顺序控制流,为多个并发执行的推测线程设定一个严格的逻辑顺序。线程代码是从串行程序顺序执行的代码中抽取出来,以推测的方式提前执行。程序的串行逻辑顺序即是多个并发线程提交其执行结果的顺序。通常用前驱(Predecessor)和后继(Successor)来定性描述两个线程之间的提交顺序关系以保持串行程序的语义,基于前驱/后继线程模式的线程级推测模型用来支持线程级的推测并行。为了便于描述推测多线程执行模型,首先给出两个定义:定义1,确定线程:又称为非推测线程或者头线程,该线程在整体上依串行逻辑顺序推进整个程序的执行,其执行产生的数据可以直接向安全存储器(如内存或者共享的高级缓存区)提交其执行结果。定义2,推测线程:指处于推测状态的线程,相对于确定线程,该线程产生的数据只能存储于推测缓冲区而不能直接提交安全存储器,直至其被撤销或者被验证成功而成为非推测线程。推测处理器的推测模式执行中,有且只能有一个线程是确定线程,其他所有并行执行的线程则都是推测线程。一个推测线程是由程序执行时遇到的一条激发(Spawn)指令产生的。Spawn指令所在的位置被称为线程激发点(SpawningPoint,SP);Spawn指令所指向的程序中另一个位置被称为准控制无关点(ControlQuasiIndependentPoint,CQIP)。SP和CQIP指令对唯一确定一个激发线程对。SP点指示在此可以激发一个新的线程来推测执行CQIP点以后的程序内容。当程序执行到激发指令时,如果现有资源允许激发,则将激发一个新的推测线程。当确定线程执行结束时将验证其直接后继线程。若验证正确,则确定线程向安全存储器提交其执行结果,然后将确定执行的权限传递给其直接后继线程。若验证失败,则撤销所有推测子线程并重新执行其直接后继线程。当推测线程执行遇到推测缓冲区溢出或线程执行完毕时,此线程将进入等待状态,直到被验证正确得到确定执行权限或者验证失败而被重启。一个推测线程并行执行的示意图如图1所示。串行程序中插入SP-CQIP点就被映射为推测线程程序,推测线程程序中忽略SP-CQIP就得到串行程序(如图1(a)所示)。CQIP点把程序分成多个代码段,当程序执行到SP点时,若现有资源允许激发,则会发起一个新的线程并推测执行CQIP点之后的那个代码段。执行过程中使用硬件检测线程的运行情况,如果线程推测执行成功,那么推测线程一直执行直到下一个CQIP点(如图1(b)所示)。验证失败或RAW(ReadafterWrite,写后读)内存依赖违规等则会导致推测执行失败。当出现验证失败时,由直接前驱线程串行执行此线程(如图1(c)所示)。当出现RAW依赖违规时(如图1(d)所示),则在当前的状态下重新启动该线程。在推测线程执行过程中,线程状态转换主要由下面几个线程控制操作进行处理:(1)线程发起。父线程发起子线程时,先向控制逻辑单元请求空闲的处理器核,然后为子线程做初始化工作。要做的初始化工作主要包括拷贝寄存器的值给子线程、将子线程Cache(缓存)中所有的数据置为无效、将子线程的程序计数器指向子线程开始位置等等。之后,父线程和子线程开始并行执行。(2)线程撤销。推测线程在发生数据依赖或者验证失败时被硬件机制强行提前终止。推测线程在执行时可能会因为发生数据依赖、寄存器依赖、线程级联撤销以及控制依赖违规等而被撤销,这些额外开销将会对程序并行执行的性能造成严重影响。(3)线程验证和提交。确定执行的线程执行到CQIP时需要验证其直接后继线程所使用的数据,包括寄存器的预测值和内存引用的预测值。当后继线程使用的数据与确定线程当前寄存器值或者内存引用值不一致时验证失败时,撤销后继线程。验证通过后确定线程将自己推测执行时产生并缓存在私有Cache中的数据写入主存,然后将所有的寄存器值传给后继线程。之后,线程将确定执行权传递给后继线程并退出,其后继线程成为新的确定线程继续执行。(5)线程的重启。推测线程在执行过程中通过硬件机制检测到有数据依赖发生,此时将撤销所有后继线程并自身重新执行。此时,作废推测执行时产生的所有数据,使用Cache中存储的寄存器值恢复寄存器,并将程序计数器指向线程体的开始处。通常,线程重启在一定程度上可以提高处理器核的利用率。然而对于图1(d)所示的情况,当发生RAW时,目前的做法是立即撤销并重新执行线程。此种做法会放弃推测线程已经执行的代码,再一次重新执行,降低了并行性。因此,需要提供一种针对如图1(d)所示的情况的编译加速方法。
技术实现思路
为解决上述问题,本申请实施例提出了一种编译加速方法、路由单元和缓存。为了达到上述目的,本专利技术采用的主要技术方案包括:一种编译加速方法,所述方法被路由单元所执行,所述路由单元用于实现如下一种或多种功能:缓冲自身产生的数据,转发数据,接收数据,验证接收的数据;所述路由单元与核单元一一对应,所述核单元用于执行线程;缓存Cache中包括多个路由单元,各核单元执行的线程不同;所述线程为推测线程,或者,确定线程;包括:S101,当确定满足中断条件时,控制第一核单元进入等待状态;所述第一核单元与第一路由单元对应,所述第一路由单元执行所述编译加速方法;S102,当接收到第一数据后,确定第二核单元,所述第二核单元执行第二线程,所述第二线程处理所述第一数据;S103,若第二核单元与第一核单元为同一核单元,则控制所述第一核单元执行第二线程;若第二核单元与第一核单元非同一核单元,则转发所述第一数据。为了达到上述目的,本专利技术采用的主要技术方案还包括:路由单元,所述路由单元与核单元一一对应;所述路由单元用于实现如下一种或多种功能:缓冲自身产生的数据,转发数据,接收数据,验证接收的数据;所述核单元用于执行线程;缓存Cache中包括多个路由单元,各核单元执行的线程不同;所述线程为推测线程,或者,确定线程;所述路由单元,用于执行上述方法任意一项的步骤。为了达到上述目的,本专利技术采用的主要技术方案还包括:一种缓存,所述缓存包括多个路由单元;所述路由单元数量与核单元数量相同;所述路由单元与所述核单元一一对应;所述路由单元用于实现如下一种或多种功能:缓冲自身产生的数据,转发数据,接收数据,验证接收的数据;所述核单元用于执行线程;各核单元执行的线程不同;所述线程为推测线程,或者,确定线程;任一路由单元,用于执行上述方法任意一项的步骤。本专利技术的有益效果是:本方法被路由单元所执行,路由单元用于实现如下一种或多种功能:缓冲自身产生的数据,转发数据,接收数据,验证接收的数据;路由单元与核单元一一对应,核单元用于执行线程;Cache中包括多个路由单元,各核单元执行的线程不同;线程为推测线程或确定线程;包括:当满足中断条件时,控制第一核单元进入等待状态;第一核单元与第一路由单元对应,第一路由单元执行编译加速方法;当接收到第一数据后,确定第二核单元,第二核单元执行第二线程,第二线程处理第一数据;若第二核单元与第一核单元相同,则控制第一核单元本文档来自技高网
...

【技术保护点】
1.一种编译加速方法,其特征在于,所述方法被路由单元所执行,所述路由单元用于实现如下一种或多种功能:缓冲自身产生的数据,转发数据,接收数据,验证接收的数据;所述路由单元与核单元一一对应,所述核单元用于执行线程;缓存Cache中包括多个路由单元,各核单元执行的线程不同;所述线程为推测线程,或者,确定线程;包括:S101,当确定满足中断条件时,控制第一核单元进入等待状态;所述第一核单元与第一路由单元对应,所述第一路由单元执行所述编译加速方法;S102,当接收到第一数据后,确定第二核单元,所述第二核单元执行第二线程,所述第二线程处理所述第一数据;S103,若第二核单元与第一核单元为同一核单元,则控制所述第一核单元执行第二线程;若第二核单元与第一核单元非同一核单元,则转发所述第一数据。

【技术特征摘要】
1.一种编译加速方法,其特征在于,所述方法被路由单元所执行,所述路由单元用于实现如下一种或多种功能:缓冲自身产生的数据,转发数据,接收数据,验证接收的数据;所述路由单元与核单元一一对应,所述核单元用于执行线程;缓存Cache中包括多个路由单元,各核单元执行的线程不同;所述线程为推测线程,或者,确定线程;包括:S101,当确定满足中断条件时,控制第一核单元进入等待状态;所述第一核单元与第一路由单元对应,所述第一路由单元执行所述编译加速方法;S102,当接收到第一数据后,确定第二核单元,所述第二核单元执行第二线程,所述第二线程处理所述第一数据;S103,若第二核单元与第一核单元为同一核单元,则控制所述第一核单元执行第二线程;若第二核单元与第一核单元非同一核单元,则转发所述第一数据。2.根据权利要求1所述的方法,其特征在于,所述中断条件为接收到中断传送信号;所述中断传送信号由第三路由单元发送,或者,所述中断传送信号由所述第一核单元发送;所述第三路由单元与第三核单元对应,所述第三核单元执行第三线程,所述第三线程与第一线程对应同一写后读RAW内存依赖关系,所述第一线程由所述第一核单元执行;或者,所述中断条件为第一线程具有RAW内存依赖关系且第一线程被执行过程中遇到引用。3.根据权利要求2所述的方法,其特征在于,所述第三路由单元发送中断传送信号的方法为:若第三线程具有RAW内存依赖关系,且第三线程被执行过程中遇到定值时,确定路由单元标识;若路由单元标识存在,则与第四路由单元完成握手后,向所述第四路由单元发送中断传输信号;所述第四路由单元与所述路由单元标识对应;所述第四路由单元对应第四核单元,所述第四核单元执行第四线程;根据所述RAW内存依赖关系,所述第四线程中引用所述定值。4.根据权利要求2所述的方法,其特征在于,当中断条件为第一线程具有RAW内存依赖关系且第一线程被执行过程中遇到引用;所述S102之前还包括:确定第一线程为推测线程。5.根据权利要求4所述的方法,其特征在于,若引用的数据为第一数据,且第一数据为多个,则所述S102包括:接收到任一第一数据后,确定对应的第二核单元,所述对应的第二核单元执行对应的第二线程,所述对应的第二线程处理所述任一第一数据;所述S103包括:若多个第一数据均接收到,且所有第二核单元与第一核单元均为同一核单元,则控制所述第一核单元处理所有第一数据;若多个第一数据均接收到,但存在与第一核单元不同的第二核单元,则向第五路由单元发送中断传送信号,与所述第五路由单元完成握手后,向所述第五路由单元发送不同的第二核单元所对应的第一数据;所述第五路由单元与不同的第二核单元对应。6.根据权利要求2至5任一权利要求所述的方法,其特征在于,RAW内存依赖关系位于关键数据依赖集中。7.根据权利要求6所述的方法,其特征在于,所述关键数据依赖集的建立方法包括:S201,获取串行程序,从所述串行程序中抽取线程,将抽取出的线程命名为第六线程,利用过程间指针分析和数据流分析技术,构造引用-定制链,检测各第六线程中的定值和引用;S202,根据各第六线程的定值和引用,将对应同一RAW内存依赖关系的多个第六线程分为一组;其中...

【专利技术属性】
技术研发人员:李远成蒋林施佳琪
申请(专利权)人:西安科技大学
类型:发明
国别省市:陕西,61

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

1