CN104750561B - 寄存器堆缓存资源的动态释放方法、***及一种处理器 - Google Patents
寄存器堆缓存资源的动态释放方法、***及一种处理器 Download PDFInfo
- Publication number
- CN104750561B CN104750561B CN201510175952.1A CN201510175952A CN104750561B CN 104750561 B CN104750561 B CN 104750561B CN 201510175952 A CN201510175952 A CN 201510175952A CN 104750561 B CN104750561 B CN 104750561B
- Authority
- CN
- China
- Prior art keywords
- register file
- thread
- long delay
- delay event
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种寄存器堆缓存资源的动态释放方法、***及一种处理器,能够在不增加且不修改指令的情况下对长延时事件进行实时监测,当监测到长延时事件时发送将被该长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求,收到请求后,寄存器堆缓存能够及时将该线程所占用的寄存器表项标记为可优先替换,之后若发现其他线程需要将其寄存器从主寄存器堆中调入寄存器堆缓存中,则可以优先将该线程替换出去,而其他线程不会受到影响。因此,与现有技术相比,采用本方案对长延时事件的监测更加灵敏且不需要对指令进行调整,对寄存器堆缓存资源的释放回收效率更高。
Description
技术领域
本发明涉及多线程处理器设计的技术领域,具体是一种寄存器堆缓存资源的动态释放方法、***及一种处理器。
背景技术
多线程处理器的寄存器堆通常采用多层次的寄存器堆结构的设计,包括主寄存器堆MRF(Main Register File);和寄存器堆缓存RFC(Register File Cache)。
主寄存器堆用于存放所有线程的通用寄存器,其容量大,但是端口有限,速度也比较慢。寄存器堆缓存端口较多,速度快,但是容量小,一般只为每个线程预留2-3个通用寄存器的存储空间。当某个线程需要读取的寄存器不在寄存器堆缓存中而在主寄存器堆中时,需要通过替换策略将该寄存器从主寄存器堆中取回到寄存器堆缓存使用,同时选取寄存器堆缓存的一个表项剔除出去,替换策略通常为最近最少使用(Least Recently Use)。寄存器堆缓存为多线程共用,资源非常宝贵,在多线程处理器中,如何及时的将暂时挂起不运行的线程所占用的寄存器堆缓存资源释放回收,让需要的线程来使用,是多层次的寄存器堆设计需要考虑的重要问题。
现有技术中,主要是由编译器在静态编译阶段查找出可能导致长延时的指令,这些指令在执行完成后的结果不写回寄存器堆缓存,直接写回主寄存器堆,这些可能导致长延时的指令包括***指令和共享数据的访存指令,如ARMv8中的Exclusive Load。该方法存在以下技术问题:
(1)编译器在静态编译阶段识别的指令过于泛泛,因为***指令和访存指令在指令流中经常出现,但并不一定会导致长延时的停顿。如果所有这些指令的执行结果均不写回寄存器堆缓存而直接写回主寄存器堆的话会严重影响线程的执行效率且对寄存器堆缓存资源是一种浪费。
(2)静态编译需要通过在指令中增加一些Hint类型的比特来告诉硬件这些指令需要对寄存器堆缓存进行Bypass的操作,相当于增加了新的指令,也会对线程执行效率带来影响。
发明内容
为此,本发明所要解决的技术问题在于现有技术中释放回收寄存器堆缓存资源的方法效率较低。
为解决上述技术问题,本发明提供一种寄存器堆缓存资源的动态释放方法,包括以下步骤:
监测每一线程是否有长延时事件发生;
若有,则判断该长延时事件所在线程是否占用有效的寄存器堆缓存表项;
若占用,则发送将被该长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求。
优选地,所述寄存器堆缓存资源的动态释放方法,所述监测是否有发生长延时事件的线程的步骤包括:
主动监测每一线程是否发生长延时事件;和/或
接收发生长延时事件的线程发送的长延时信号。
优选地,所述寄存器堆缓存资源的动态释放方法,发送将被该长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求包括:
表项在寄存器堆缓存中的索引号以及优先替换指示信号。
优选地,所述寄存器堆缓存资源的动态释放方法,在发送将被该长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求之后还包括:
判断该长延时事件是否即将结束;
若是,则发送恢复该长延时事件所在线程对寄存器堆缓存表项的占用的请求。
本发明还提供一种寄存器堆缓存资源的动态释放方法,包括以下步骤:
接收将被长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求;
根据所述请求将长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换。
优选地,所述寄存器堆缓存资源的动态释放方法,在接收将被长延时时间所在线程占用的寄存器堆缓存表项标记为优先替换的请求之前还包括:
为寄存器堆缓存表项设置索引号和标识位;
接收将被长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求中:所述请求包括表项的索引号和优先替换指示信号;
根据所述请求将长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换中:根据索引号确定寄存器堆缓存表项,将该表项的标识位设置为优先替换指示信号。
优选地,所述寄存器堆缓存资源的动态释放方法,在根据所述请求将长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换之后还包括:
接收恢复该长延时事件所在线程对寄存器堆缓存表项的占用的请求;
恢复该长延时事件所在线程对寄存器堆缓存表项的占用。
本发明还提供一种寄存器堆缓存资源的动态释放***,包括:
监测单元,用于监测每一线程是否有长延时事件发生;
判断单元,与所述监测单元相连,用于在所述监测单元监测到某一线程有长延时事件发生时,判断该长延时事件所在线程是否占用有效的寄存器堆缓存表项;
发送单元,与所述判断单元相连,用于在所述判断单元判断该长延时事件所在线程占用有效的寄存器堆缓存表项时,发送将被该长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求。
优选地,所述寄存器堆缓存资源的动态释放***中,所述监测单元,用于主动监测每一线程是否发生长延时事件;和/或
接收发生长延时事件的线程发送的长延时信号。
优选地,所述寄存器堆缓存资源的动态释放***中,所述发送单元发送的请求包括表项在寄存器堆缓存中的索引号以及优先替换指示信号。
优选地,所述寄存器堆缓存资源的动态释放***中,所述判断单元,还用于判断该长延时事件是否即将结束;
所述发送单元,还用于在所述判断单元判断该长延时事件即将结束时,发送恢复该长延时事件所在线程对寄存器堆缓存表项的占用的请求。
本发明还提供一种寄存器堆缓存,包括:
接收单元,用于接收将被长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求;
释放单元,与所述接收单元相连,用于根据所述请求将长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换。
优选地,所述寄存器堆缓存,还包括设置单元:
所述设置单元,用于为寄存器堆缓存表项设置索引号和标识位;
所述接收单元,接收到的将被长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求包括表项的索引号和优先替换指示信号;
所述释放单元,根据索引号确定对应的寄存器堆缓存表项,将该表项的标识位设置为优先替换指示信号。
优选地,所述寄存器堆缓存,还包括恢复单元:
所述接收单元,还用于接收恢复该长延时事件所在线程对寄存器堆缓存表项的占用的请求;
所述恢复单元,与所述接收单元相连,用于恢复该长延时事件所在线程对寄存器堆缓存表项的占用。
本发明还提供一种处理器,包括:
上述的寄存器堆缓存资源的动态释放***,和上述的寄存器堆缓存;
所述寄存器堆缓存,在接收到某一线程需要将寄存器从主寄存器堆调入的请求时,随机选择标记有优先替换的表项进行替换。
本发明的上述技术方案相比现有技术具有以下优点:
本发明所述的寄存器堆缓存资源的动态释放方法、***及一种处理器,能够在不增加且不修改指令的情况下对长延时事件进行实时监测,当监测到长延时事件时发送将被该长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求,收到请求后,寄存器堆缓存能够及时将该线程所占用的寄存器表项标记为可优先替换,之后若发现其他线程需要将其寄存器从主寄存器堆中调入寄存器堆缓存中,则可以优先将该线程替换出去,而其他线程不会受到影响。因此,与现有技术相比,采用本方案对长延时事件的监测更加灵敏且不需要对指令进行调整,对寄存器堆缓存资源的释放回收效率更高。
附图说明
为了使本发明的内容更容易被清楚的理解,下面根据本发明的具体实施例并结合附图,对本发明作进一步详细的说明,其中
图1是本发明实施例1一个具体示例所述的寄存器堆缓存资源的动态释放方法的流程图;
图2本发明实施例1一个具体示例所述的寄存器堆缓存资源的动态释放方法的流程图;
图3是本发明实施例2一个具体示例所述的寄存器堆缓存资源的动态释放方法的流程图;
图4是本发明实施例2一个具体示例所述的寄存器堆缓存资源的动态释放方法的流程图;
图5是本发明一个具体示例所述的寄存器堆缓存资源的动态释放***及寄存器堆缓存配合使用的原理框图;
图6是本发明一个具体示例所述的寄存器堆缓存资源的动态释放***及寄存器堆缓存配合使用的原理框图;
图7是本发明实施例5所述的寄存器堆缓存资源的动态释放过程的示意图。
具体实施方式
实施例1
本实施例提供一种寄存器堆缓存资源的动态释放方法,主要应用于多线程处理器中,用于对寄存器堆缓存进行操作,需要释放寄存器堆缓存资源时发送请求给寄存器堆缓存。如图1所示,具体包括如下步骤:
S11:监测每一线程是否有长延时事件发生,若有则进入步骤S12,否则继续监测。其中,可以设定时间阈值来判定是否是长延时事件,事件需要停顿的时间超过该时间阈值则认定为长延时事件。也可以不设置具体的时间阈值,而是在处理器设计的过程中根据经验确定的长延时事件,如访存缺失、写操作缓存写后读冲突(Store Buffer RAW)、分支预测错误,其中访问缺失例如TLB(Translation Look-aside Buffer)缺失、二级Cache缺失、三级Cache缺失、执行了栅栏类指令如Sync,T1bi等,这些都是处理器中公认的长延时事件。
S12:判断该长延时事件所在线程是否占用有效的寄存器堆缓存表项,若占用则进入步骤S13,否则返回步骤S11继续对线程进行监测。
S13:发送将被该长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求。
通过对线程进行实时监测,灵敏度更高,而且长延时事件也不泛泛的限定于***指令或者共享数据的访存指令,而是根据时间阈值判断,或者直接认定设计处理器时明确的长延时事件,在具体执行时具有更高的效率。
其中步骤S11中的监测方式可以有以下两种:
主动监测每一线程是否发生长延时事件,如监测指令发射队列的状态,判断其是否发射了一条栅栏类指令,如果是,说明这个线程在很长时间之内是停顿的。也可以接收发生长延时事件的线程发送的长延时信号,例如发生了Cache缺失或TLB缺失后,访存单元LSU(Load Store Unit)会发送将要有长时间停顿的长延时信号。
优选地,在步骤S13中,发送的将被该长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求包括表项在寄存器堆缓存中的索引号以及优先替换指示信号。通过表项标记索引号能够标记寄存器堆缓存中某一线程占用的所有寄存器,索引号可以采用线程号来表示,如此能很快确定需要优先替换的表项,其他运行中的线程在寄存器堆缓存中的寄存器条目(即存储内容)将不会被LRU替换出去,而是把该长延时事件的线程的寄存器条目优先替换,相当于给其他线程增加了寄存器堆缓存的使用资源。
进一步优选地,如图2所示,在所述步骤S13之后还包括如下步骤:
S14:判断该长延时事件是否即将结束,若是则进入步骤S15,否则重复本步骤。
S15:发送恢复该长延时事件所在线程对寄存器堆缓存表项的占用的请求。
通过上述操作,能够提前恢复该线程的一些寄存器堆缓存的寄存器条目,更有效的提高被恢复线程的寄存器堆缓存使用效率。
实施例2
本实施例提供一种寄存器堆缓存资源的动态释放方法,应用于多线程处理器中的寄存器堆缓存中,与实施例1中的方法配合,如图3所示,包括以下步骤:
S21:接收被长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求。
S22:根据所述请求将长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换。
当有其他线程需要将其寄存器从主寄存器堆中调入寄存器堆缓存时,则优先将寄存器堆缓存中标记为优先替换的条目替换出去。
优选地,在步骤S21之前还包括如下步骤:
S20:为寄存器堆缓存表项设置索引号和标识位,其中索引号可以为占用该寄存器的线程的线程号,标志位可以用最简单的“1”和“0”来表示,如“1”表示可以优先替换,“0”表示不可优先替换。
在步骤S21中,接收到的所述请求包括表项的索引号和优先替换指示信号。索引号即为线程号,优先替换指示信号即为“1”。
在步骤S22中,根据索引号确定对应的寄存器堆缓存的表项,将该表项的标识位设置为优先替换指示信号。根据线程号可以快速查找到该线程占用的寄存器,如果此时寄存器的标志位为“0”,则将其余接收到的优先替换指示信号“1”进行与操作,从而将标志位设置为“1”,即可进行优先替换。当有其他线程从主寄存器堆中调入至寄存器堆缓存中,占用了寄存器时,再将该标识位设置为“0”,表示该寄存器不可被替换。即只有该寄存器可以被替换时,标志位才会被设置为“1”。
优选地,如图4所示,在步骤S22之后还包括以下步骤:
S23:接收恢复该长延时事件所在线程对寄存器堆缓存表项的占用的请求。
S24:恢复该长延时事件所在线程对寄存器堆缓存表项的占用。该步骤可以选择在寄存器堆缓存和主寄存器堆之间的数据通路的空闲期进行。
通过提前恢复该线程的一些寄存器堆缓存条目,能够有效地提高被恢复线程的寄存器堆缓存的使用效率。
实施例3
本实施例提供一种寄存器堆缓存资源的动态释放***1,应用于多线程处理器中,与寄存器堆缓存2配合,如图5所示,包括:
监测单元101,用于监测每一线程是否有长延时事件发生。可以设定时间阈值来判定是否是长延时事件,事件需要停顿的时间超过该时间阈值则认定为长延时事件。也可以不设置具体的时间阈值,而是在处理器设计的过程中根据经验确定为的长延时事件,如访存缺失、写操作缓存写后读冲突(Store Buffer RAW)、分支预测错误,其中访问缺失例如TLB(Translation Look-aside Buffer)缺失、二级Cache缺失、三级Cache缺失、执行了栅栏类指令如Sync,Tlbi等,这些都是处理器中公认的长延时事件。
判断单元102,与所述监测单元101相连,用于在所述监测单元监测到某一线程有长延时事件发生时,判断该长延时事件所在线程是否占用有效地寄存器堆缓存表项。
发送单元103,与所述判断单元102相连,用于在所述判断单元102判断该长延时事件所在线程占用有效的寄存器堆缓存表项时,发送将被该长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求。
本方案通过对线程进行实时监测,灵敏度更高,而且长延时事件也不泛泛的限定于***指令或者共享数据的访存指令,而是根据时间阈值判断,或者直接认定设计处理器时明确的长延时事件,在具体执行时具有更高的效率。
优选地,所述监测单元101,用于主动监测每一线程是否发生长延时事件;和/或接收发生长延时事件的线程发送的长延时信号。其中:
主动监测每一线程是否发生长延时事件,如监测指令发射队列的状态,判断其是否发射了一条栅栏类指令,如果是,说明这个线程在很长时间之内是停顿的。也可以接收发生长延时事件的线程发送的长延时信号,例如发生了Cache缺失或TLB缺失后,访存单元LSU(Load Store Unit)发送通知信号给本实施例中的***。
进一步优选地,所述发送单元103发送的请求包括表项在寄存器堆缓存中的索引号以及优先替换指示信号。通过索引号标记寄存器堆缓存中该线程的所有寄存器,能很快确定需要优先替换的寄存器,其他运行中的线程在寄存器堆缓存中的寄存器条目将不会被LRU替换出去,而是把该长延时事件的线程的寄存器条目优先替换,相当于给其他线程增加了寄存器堆缓存的使用资源。
优选地,所述判断单元102,还用于判断该长延时事件是否即将结束。所述发送单元103,还用于在所述判断单元102判断该长延时事件即将结束时,发送恢复该长延时事件所在线程对寄存器堆缓存表项的占用的请求。这样能够提前恢复该线程的一些寄存器堆缓存的寄存器条目,更有效的提高被恢复线程的寄存器堆缓存使用效率。
实施例4
本实施例提供一种寄存器堆缓存2,与实施例3中所述的寄存器堆缓存线程的动态释放***1配合,如图5所示,包括:
接收单元201,用于接收被长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求。
释放单元202,与所述接收单元相连,用于根据所述请求将长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换。
当有其他线程需要将其寄存器从主寄存器堆中调入寄存器堆缓存时,则优先将寄存器堆缓存中标记有优先替换的表项替换出去。
优选地,还包括设置单元203,用于为寄存器堆缓存表项设置索引号和标识位。
所述接收单元201,接收到的被长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求包括表项的索引号和优先替换指示信号;其中索引号可以为占用该寄存器的线程的线程号,标志位可以用最简单的“1”和“0”来表示,如“1”表示可以优先替换,“0”表示不可优先替换。
所述释放单元202,根据索引号确定对应的寄存器堆缓存的表项,将该表项的标识位设置为优先替换指示信号。根据线程号可以快速查找到该线程占用的寄存器,如果此时寄存器的标志位为“0”,则将其与接收到的优先替换指示信号“1”进行或操作,从而将标志位设置为“1”,即可进行优先替换。当有其他线程从主寄存器堆中调入至寄存器堆缓存中,占用了寄存器时,再将该标识位设置为“0”,表示该寄存器不可被替换。即只有该寄存器可以被优先替换时,标志位才会被设置为“1”。
进一步优选地,如图6所示,还包括恢复单元204。所述接收单元201,还用于接收恢复该长延时事件所在线程对寄存器堆缓存表项的占用的请求。所述恢复单元204,与所述接收单元201相连,用于恢复该长延时事件所在线程对寄存器堆缓存表项的占用。通过提前恢复该线程的一些寄存器堆缓存条目,能够有效地提高被恢复线程的寄存器堆缓存的使用效率。
实施例5
本实施例提供一种处理器,包括实施例3所述的寄存器堆缓存资源的动态释放***和实施例4所述的寄存器堆缓存。所述寄存器堆缓存,在接收到其他线程需要将寄存器从主寄存器堆调入的请求时,随机选择标记有优先替换的表项进行替换。具体以数据操作的地址转换旁路缓冲(DTLB)缺失为例,该事件将导致其所属的线程要等待很长时间,直到硬件页表旁路缓冲器回填(Hardware table walk)结束把TLB回填,期间该线程可能需要停顿上百个时钟周期。具体过程如图7,图中每一表格表示的信息如下:
第一列:寄存器堆缓存资源的动态释放***发送的线程号和优先替换指示信号的联合控制信号;第二列:标识位,标识该线程在下一次替换时是否具有优先替换权;第三列:线程号;第四列:寄存器编号;需要和线程号进行结合来确定寄存器,例如:寄存器号为4,线程号为2,则对应的寄存器的值为线程2的4号寄存器的值;第五列:寄存器对应的值。
步骤1,访存单元3,即LSU(Load Store Unit)在执行过程当中发生了DTLB缺失,将缺失指示信号传递给寄存器堆缓存线程的动态释放***。
设在此例中是3号线程发生了该长延时事件,则在步骤2,寄存器堆缓存线程的动态释放***将线程号“3”和优先替换指示信号“1”,发送至寄存器堆缓存。
步骤3,寄存器堆缓存中通过或运算将该长延时线程的标志位替换为“1”。即将线程号为3的表项所对应的标志位均设为“1”。
步骤4,在接下来的寄存器堆缓存表项替换过程中,会优先从标志位为“1”的条目中随机选择进行替换,替换后该条目的标志位清零,当不存在标志位为“1”的条目时,继续使用原有的LRU算法进行替换。
本实施例中的方案通过硬件实时监测线程是否有长延时事件的方法,不需要修改指令格式本身或者增加新的指令,且对长延时事件检测灵敏,通过线程号标记寄存器堆缓存中该线程的所有寄存器,能很快的查找到可以背优先替换的寄存器,令其他运行中的线程受益,因为其他线程的在寄存器堆缓存中的条目将不会被LRU替换出去,而是把该停顿线程的寄存器条目优先替换,相当于给其他线程增加了寄存器堆缓存的使用资源。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
Claims (15)
1.一种寄存器堆缓存资源的动态释放方法,其特征在于,包括以下步骤:
监测每一线程是否有长延时事件发生;
若有,则判断该长延时事件所在线程是否占用有效的寄存器堆缓存表项;
若占用,则发送将被该长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求。
2.根据权利要求1所述的寄存器堆缓存资源的动态释放方法,其特征在于,所述监测是否有发生长延时事件的线程的步骤包括:
主动监测每一线程是否发生长延时事件;和/或
接收发生长延时事件的线程发送的长延时信号。
3.根据权利要求1所述的寄存器堆缓存资源的动态释放方法,其特征在于,发送将被该长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求包括:
表项在寄存器堆缓存中的索引号以及优先替换指示信号。
4.根据权利要求1所述的寄存器堆缓存资源的动态释放方法,其特征在于,在发送将被该长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求之后还包括:
判断该长延时事件是否即将结束;
若是,则发送恢复该长延时事件所在线程对寄存器堆缓存表项的占用的请求。
5.一种寄存器堆缓存资源的动态释放方法,其特征在于,包括以下步骤:
接收将被长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求;所述请求是由处理器监测到有线程发生长延时事件,且该长延时事件所在线程占用有效的寄存器堆缓存表项时所发送的;
根据所述请求将长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换。
6.根据权利要求5所述的寄存器堆缓存资源的动态释放方法,其特征在于,在接收将被长延时时间所在线程占用的寄存器堆缓存表项标记为优先替换的请求之前还包括:
为寄存器堆缓存表项设置索引号和标识位;
接收将被长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求中:所述请求包括表项的索引号和优先替换指示信号;
根据所述请求将长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换中:根据索引号确定寄存器堆缓存表项,将该表项的标识位设置为优先替换指示信号。
7.根据权利要求5所述的寄存器堆缓存资源的动态释放方法,其特征在于,在根据所述请求将长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换之后还包括:
接收恢复该长延时事件所在线程对寄存器堆缓存表项的占用的请求;
恢复该长延时事件所在线程对寄存器堆缓存表项的占用。
8.一种寄存器堆缓存资源的动态释放***,其特征在于,包括:
监测单元,用于监测每一线程是否有长延时事件发生;
判断单元,与所述监测单元相连,用于在所述监测单元监测到某一线程有长延时事件发生时,判断该长延时事件所在线程是否占用有效的寄存器堆缓存表项;
发送单元,与所述判断单元相连,用于在所述判断单元判断该长延时事件所在线程占用有效的寄存器堆缓存表项时,发送将被该长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求。
9.根据权利要求8所述的寄存器堆缓存资源的动态释放***,其特征在于:
所述监测单元,用于主动监测每一线程是否发生长延时事件;和/或
接收发生长延时事件的线程发送的长延时信号。
10.根据权利要求8所述的寄存器堆缓存资源的动态释放***,其特征在于:
所述发送单元发送的请求包括表项在寄存器堆缓存中的索引号以及优先替换指示信号。
11.根据权利要求8所述的寄存器堆缓存资源的动态释放***,其特征在于:
所述判断单元,还用于判断该长延时事件是否即将结束;
所述发送单元,还用于在所述判断单元判断该长延时事件即将结束时,发送恢复该长延时事件所在线程对寄存器堆缓存表项的占用的请求。
12.一种寄存器堆缓存,其特征在于,包括:
接收单元,用于接收将被长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求;所述请求是由处理器监测到有线程发生长延时事件,且该长延时事件所在线程占用有效的寄存器堆缓存表项时所发送的;
释放单元,与所述接收单元相连,用于根据所述请求将长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换。
13.根据权利要求12所述的寄存器堆缓存,其特征在于,还包括设置单元:
所述设置单元,用于为寄存器堆缓存表项设置索引号和标识位;
所述接收单元,接收到的将被长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求包括表项的索引号和优先替换指示信号;
所述释放单元,根据索引号确定对应的寄存器堆缓存表项,将该表项的标识位设置为优先替换指示信号。
14.根据权利要求12所述的寄存器堆缓存,其特征在于还包括恢复单元:
所述接收单元,还用于接收恢复该长延时事件所在线程对寄存器堆缓存表项的占用的请求;
所述恢复单元,与所述接收单元相连,用于恢复该长延时事件所在线程对寄存器堆缓存表项的占用。
15.一种处理器,其特征在于,包括:
包括权利要求8-11任一所述的寄存器堆缓存资源的动态释放***;
权利要求12-14任一所述的寄存器堆缓存;
所述寄存器堆缓存,在接收到某一线程需要将寄存器从主寄存器堆调入的请求时,随机选择标记有优先替换的表项进行替换。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510175952.1A CN104750561B (zh) | 2015-04-15 | 2015-04-15 | 寄存器堆缓存资源的动态释放方法、***及一种处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510175952.1A CN104750561B (zh) | 2015-04-15 | 2015-04-15 | 寄存器堆缓存资源的动态释放方法、***及一种处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104750561A CN104750561A (zh) | 2015-07-01 |
CN104750561B true CN104750561B (zh) | 2019-09-10 |
Family
ID=53590302
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510175952.1A Active CN104750561B (zh) | 2015-04-15 | 2015-04-15 | 寄存器堆缓存资源的动态释放方法、***及一种处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104750561B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109840150B (zh) * | 2017-11-29 | 2021-10-26 | 北京忆芯科技有限公司 | 存储器分配器 |
CN116185499B (zh) * | 2023-04-27 | 2023-07-25 | 深圳鲲云信息科技有限公司 | 寄存器数据传输方法、寄存器缓存模块、智能设备和介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6567839B1 (en) * | 1997-10-23 | 2003-05-20 | International Business Machines Corporation | Thread switch control in a multithreaded processor system |
CN101571836A (zh) * | 2008-04-29 | 2009-11-04 | 国际商业机器公司 | 用于替换缓存块的方法和*** |
CN103229152B (zh) * | 2010-11-26 | 2016-10-19 | 国际商业机器公司 | 高速缓存一致性控制方法、***和程序 |
CN102184127B (zh) * | 2011-05-20 | 2013-11-06 | 北京北大众志微***科技有限责任公司 | 一种实现处理器预执行的方法及相应的装置 |
-
2015
- 2015-04-15 CN CN201510175952.1A patent/CN104750561B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN104750561A (zh) | 2015-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200264980A1 (en) | Apparatus and method of handling caching of persistent data | |
CN102640124B (zh) | 用于数据流的储存感知预取的计算***、方法以及预取单元 | |
CN103383672B (zh) | 高速缓存控制以减少事务回滚 | |
US10599578B2 (en) | Dynamic cache bypassing | |
US20190004916A1 (en) | Profiling asynchronous events resulting from the execution of software at code region granularity | |
US8521982B2 (en) | Load request scheduling in a cache hierarchy | |
US11016763B2 (en) | Implementing a micro-operation cache with compaction | |
CN113853593A (zh) | 支持清空写入未命中条目的受害者高速缓存 | |
US20140122809A1 (en) | Control mechanism for fine-tuned cache to backing-store synchronization | |
US20130166846A1 (en) | Hierarchy-aware Replacement Policy | |
US8645612B2 (en) | Information processing device and information processing method | |
CN102934076A (zh) | 指令发行控制装置以及方法 | |
CN103443777A (zh) | 具有预填充能力的存储器管理单元 | |
CN101446923A (zh) | 一种响应于指令而清洗高速缓冲存储器线的装置和方法 | |
US20140195771A1 (en) | Anticipatorily loading a page of memory | |
US20100030966A1 (en) | Cache memory and cache memory control apparatus | |
CN107592927B (zh) | 管理扇区高速缓存 | |
CN105446889B (zh) | 一种内存管理方法、装置以及内存控制器 | |
US7617364B2 (en) | System, method and storage medium for prefetching via memory block tags | |
CN104750561B (zh) | 寄存器堆缓存资源的动态释放方法、***及一种处理器 | |
CN110291507A (zh) | 用于提供对存储器***的加速访问的方法和装置 | |
CN109189739B (zh) | 缓存空间回收方法和装置 | |
KR20200040294A (ko) | 트랜잭션 지원을 가진 선점형 캐시 후기록 | |
US20200065246A1 (en) | Coherency directory entry allocation based on eviction costs | |
JP2013041414A (ja) | 記憶制御システムおよび方法、置換方式および方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 215163 No. 9 Xuesen Road, Science and Technology City, Suzhou High-tech Zone, Jiangsu Province Patentee after: Hexin Technology (Suzhou) Co.,Ltd. Address before: 215163 building 3, No.9 Xuesen Road, science and Technology City, high tech Zone, Suzhou City, Jiangsu Province Patentee before: SUZHOU POWERCORE INFORMATION TECHNOLOGY Co.,Ltd. |