本发明专利技术提供一种寄存器堆缓存资源的动态释放方法、系统及一种处理器,能够在不增加且不修改指令的情况下对长延时事件进行实时监测,当监测到长延时事件时发送将被该长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求,收到请求后,寄存器堆缓存能够及时将该线程所占用的寄存器表项标记为可优先替换,之后若发现其他线程需要将其寄存器从主寄存器堆中调入寄存器堆缓存中,则可以优先将该线程替换出去,而其他线程不会受到影响。因此,与现有技术相比,采用本方案对长延时事件的监测更加灵敏且不需要对指令进行调整,对寄存器堆缓存资源的释放回收效率更高。
【技术实现步骤摘要】
本专利技术涉及多线程处理器设计的
,具体是一种寄存器堆缓存资源的动态释放方法、系统及一种处理器。
技术介绍
多线程处理器的寄存器堆通常采用多层次的寄存器堆结构的设计,包括主寄存器堆 MRF (Main Register File);和寄存器堆缓存 RFC (Register File Cache) ο主寄存器堆用于存放所有线程的通用寄存器,其容量大,但是端口有限,速度也比较慢。寄存器堆缓存端口较多,速度快,但是容量小,一般只为每个线程预留2-3个通用寄存器的存储空间。当某个线程需要读取的寄存器不在寄存器堆缓存中而在主寄存器堆中时,需要通过替换策略将该寄存器从主寄存器堆中取回到寄存器堆缓存使用,同时选取寄存器堆缓存的一个表项剔除出去,替换策略通常为最近最少使用(Least Recently Use) ?寄存器堆缓存为多线程共用,资源非常宝贵,在多线程处理器中,如何及时的将暂时挂起不运行的线程所占用的寄存器堆缓存资源释放回收,让需要的线程来使用,是多层次的寄存器堆设计需要考虑的重要问题。现有技术中,主要是由编译器在静态编译阶段查找出可能导致长延时的指令,这些指令在执行完成后的结果不写回寄存器堆缓存,直接写回主寄存器堆,这些可能导致长延时的指令包括系统指令和共享数据的访存指令,如ARMv8中的Exclusive Load。该方法存在以下技术问题:(I)编译器在静态编译阶段识别的指令过于泛泛,因为系统指令和访存指令在指令流中经常出现,但并不一定会导致长延时的停顿。如果所有这些指令的执行结果均不写回寄存器堆缓存而直接写回主寄存器堆的话会严重影响线程的执行效率且对寄存器堆缓存资源是一种浪费。(2)静态编译需要通过在指令中增加一些Hint类型的比特来告诉硬件这些指令需要对寄存器堆缓存进行Bypass的操作,相当于增加了新的指令,也会对线程执行效率带来影响。
技术实现思路
为此,本专利技术所要解决的技术问题在于现有技术中释放回收寄存器堆缓存资源的方法效率较低。为解决上述技术问题,本专利技术提供一种寄存器堆缓存资源的动态释放方法,包括以下步骤:监测每一线程是否有长延时事件发生;若有,则判断该长延时事件所在线程是否占用有效的寄存器堆缓存表项;若占用,则发送将被该长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求。优选地,所述寄存器堆缓存资源的动态释放方法,所述监测是否有发生长延时事件的线程的步骤包括:主动监测每一线程是否发生长延时事件;和/或接收发生长延时事件的线程发送的长延时信号。优选地,所述寄存器堆缓存资源的动态释放方法,发送将被该长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求包括:表项在寄存器堆缓存中的索引号以及优先替换指示信号。优选地,所述寄存器堆缓存资源的动态释放方法,在发送将被该长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求之后还包括:判断该长延时事件是否即将结束;若是,则发送恢复该长延时事件所在线程对寄存器堆缓存表项的占用的请求。本专利技术还提供一种寄存器堆缓存资源的动态释放方法,包括以下步骤:接收将被长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求;根据所述请求将长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换。优选地,所述寄存器堆缓存资源的动态释放方法,在接收将被长延时时间所在线程占用的寄存器堆缓存表项标记为优先替换的请求之前还包括:为寄存器堆缓存表项设置索引号和标识位;接收将被长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求中:所述请求包括表项的索引号和优先替换指示信号;根据所述请求将长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换中:根据索引号确定寄存器堆缓存表项,将该表项的标识位设置为优先替换指示信号。优选地,所述寄存器堆缓存资源的动态释放方法,在根据所述请求将长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换之后还包括:接收恢复该长延时事件所在线程对寄存器堆缓存表项的占用的请求;恢复该长延时事件所在线程对寄存器堆缓存表项的占用。本专利技术还提供一种寄存器堆缓存资源的动态释放系统,包括:监测单元,用于监测每一线程是否有长延时事件发生;判断单元,与所述监测单元相连,用于在所述监测单元监测到某一线程有长延时事件发生时,判断该长延时事件所在线程是否占用有效的寄存器堆缓存表项;发送单元,与所述判断单元相连,用于在所述判断单元判断该长延时事件所在线程占用有效的寄存器堆缓存表项时,发送将被该长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求。优选地,所述寄存器堆缓存资源的动态释放系统中,所述监测单元,用于主动监测每一线程是否发生长延时事件;和/或接收发生长延时事件的线程发送的长延时信号。优选地,所述寄存器堆缓存资源的动态释放系统中,所述发送单元发送的请求包括表项在寄存器堆缓存中的索引号以及优先替换指示信号。优选地,所述寄存器堆缓存资源的动态释放系统中,所述判断单元,还用于判断该长延时事件是否即将结束;所述发送单元,还用于在所述判断单元判断该长延时事件即将结束时,发送恢复该长延时事件所在线程对寄存器堆缓存表项的占用的请求。本专利技术还提供一种寄存器堆缓存,包括:接收单元,用于接收将被长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求;释放单元,与所述接收单元相连,用于根据所述请求将长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换。优选地,所述寄存器堆缓存,还包括设置单元:所述设置单元,用于为寄存器堆缓存表项设置索引号和标识位;所述接收单元,接收到的将被长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求包括表项的索引号和优先替换指示信号;所述释放单元,根据索引号确定对应的寄存器堆缓存表项,将该表项的标识位设置为优先替换指示信号。优选地,所述寄存器堆缓存,还包括恢复单元:所述接收单元,还用于接收恢复该长延时事件所在线程对寄存器堆缓存表项的占用的请求;所述恢复单元,与所述接收单元相连,用于恢复该长延时事件所在线程对寄存器堆缓存表项的占用。本专利技术还提供一种处理器,包括:当前第1页1 2 3 4 本文档来自技高网...
【技术保护点】
一种寄存器堆缓存资源的动态释放方法,其特征在于,包括以下步骤:监测每一线程是否有长延时事件发生;若有,则判断该长延时事件所在线程是否占用有效的寄存器堆缓存表项;若占用,则发送将被该长延时事件所在线程占用的寄存器堆缓存表项标记为优先替换的请求。
【技术特征摘要】
【专利技术属性】
技术研发人员:李晔,侯锐,张乾龙,张立新,
申请(专利权)人:苏州中晟宏芯信息科技有限公司,
类型:发明
国别省市:江苏;32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。