寄存器堆緩存資源的動(dòng)態(tài)釋放方法、系統(tǒng)及一種處理器的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及多線(xiàn)程處理器設(shè)計(jì)的技術(shù)領(lǐng)域,具體是一種寄存器堆緩存資源的動(dòng)態(tài)釋放方法、系統(tǒng)及一種處理器。
【背景技術(shù)】
[0002]多線(xiàn)程處理器的寄存器堆通常采用多層次的寄存器堆結(jié)構(gòu)的設(shè)計(jì),包括主寄存器堆 MRF (Main Register File);和寄存器堆緩存 RFC (Register File Cache) ο
[0003]主寄存器堆用于存放所有線(xiàn)程的通用寄存器,其容量大,但是端口有限,速度也比較慢。寄存器堆緩存端口較多,速度快,但是容量小,一般只為每個(gè)線(xiàn)程預(yù)留2-3個(gè)通用寄存器的存儲(chǔ)空間。當(dāng)某個(gè)線(xiàn)程需要讀取的寄存器不在寄存器堆緩存中而在主寄存器堆中時(shí),需要通過(guò)替換策略將該寄存器從主寄存器堆中取回到寄存器堆緩存使用,同時(shí)選取寄存器堆緩存的一個(gè)表項(xiàng)剔除出去,替換策略通常為最近最少使用(Least Recently Use) ?寄存器堆緩存為多線(xiàn)程共用,資源非常寶貴,在多線(xiàn)程處理器中,如何及時(shí)的將暫時(shí)掛起不運(yùn)行的線(xiàn)程所占用的寄存器堆緩存資源釋放回收,讓需要的線(xiàn)程來(lái)使用,是多層次的寄存器堆設(shè)計(jì)需要考慮的重要問(wèn)題。
[0004]現(xiàn)有技術(shù)中,主要是由編譯器在靜態(tài)編譯階段查找出可能導(dǎo)致長(zhǎng)延時(shí)的指令,這些指令在執(zhí)行完成后的結(jié)果不寫(xiě)回寄存器堆緩存,直接寫(xiě)回主寄存器堆,這些可能導(dǎo)致長(zhǎng)延時(shí)的指令包括系統(tǒng)指令和共享數(shù)據(jù)的訪(fǎng)存指令,如ARMv8中的Exclusive Load。該方法存在以下技術(shù)問(wèn)題:
[0005](I)編譯器在靜態(tài)編譯階段識(shí)別的指令過(guò)于泛泛,因?yàn)橄到y(tǒng)指令和訪(fǎng)存指令在指令流中經(jīng)常出現(xiàn),但并不一定會(huì)導(dǎo)致長(zhǎng)延時(shí)的停頓。如果所有這些指令的執(zhí)行結(jié)果均不寫(xiě)回寄存器堆緩存而直接寫(xiě)回主寄存器堆的話(huà)會(huì)嚴(yán)重影響線(xiàn)程的執(zhí)行效率且對(duì)寄存器堆緩存資源是一種浪費(fèi)。
[0006](2)靜態(tài)編譯需要通過(guò)在指令中增加一些Hint類(lèi)型的比特來(lái)告訴硬件這些指令需要對(duì)寄存器堆緩存進(jìn)行Bypass的操作,相當(dāng)于增加了新的指令,也會(huì)對(duì)線(xiàn)程執(zhí)行效率帶來(lái)影響。
【發(fā)明內(nèi)容】
[0007]為此,本發(fā)明所要解決的技術(shù)問(wèn)題在于現(xiàn)有技術(shù)中釋放回收寄存器堆緩存資源的方法效率較低。
[0008]為解決上述技術(shù)問(wèn)題,本發(fā)明提供一種寄存器堆緩存資源的動(dòng)態(tài)釋放方法,包括以下步驟:
[0009]監(jiān)測(cè)每一線(xiàn)程是否有長(zhǎng)延時(shí)事件發(fā)生;
[0010]若有,則判斷該長(zhǎng)延時(shí)事件所在線(xiàn)程是否占用有效的寄存器堆緩存表項(xiàng);
[0011]若占用,則發(fā)送將被該長(zhǎng)延時(shí)事件所在線(xiàn)程占用的寄存器堆緩存表項(xiàng)標(biāo)記為優(yōu)先替換的請(qǐng)求。
[0012]優(yōu)選地,所述寄存器堆緩存資源的動(dòng)態(tài)釋放方法,所述監(jiān)測(cè)是否有發(fā)生長(zhǎng)延時(shí)事件的線(xiàn)程的步驟包括:
[0013]主動(dòng)監(jiān)測(cè)每一線(xiàn)程是否發(fā)生長(zhǎng)延時(shí)事件;和/或
[0014]接收發(fā)生長(zhǎng)延時(shí)事件的線(xiàn)程發(fā)送的長(zhǎng)延時(shí)信號(hào)。
[0015]優(yōu)選地,所述寄存器堆緩存資源的動(dòng)態(tài)釋放方法,發(fā)送將被該長(zhǎng)延時(shí)事件所在線(xiàn)程占用的寄存器堆緩存表項(xiàng)標(biāo)記為優(yōu)先替換的請(qǐng)求包括:
[0016]表項(xiàng)在寄存器堆緩存中的索引號(hào)以及優(yōu)先替換指示信號(hào)。
[0017]優(yōu)選地,所述寄存器堆緩存資源的動(dòng)態(tài)釋放方法,在發(fā)送將被該長(zhǎng)延時(shí)事件所在線(xiàn)程占用的寄存器堆緩存表項(xiàng)標(biāo)記為優(yōu)先替換的請(qǐng)求之后還包括:
[0018]判斷該長(zhǎng)延時(shí)事件是否即將結(jié)束;
[0019]若是,則發(fā)送恢復(fù)該長(zhǎng)延時(shí)事件所在線(xiàn)程對(duì)寄存器堆緩存表項(xiàng)的占用的請(qǐng)求。
[0020]本發(fā)明還提供一種寄存器堆緩存資源的動(dòng)態(tài)釋放方法,包括以下步驟:
[0021]接收將被長(zhǎng)延時(shí)事件所在線(xiàn)程占用的寄存器堆緩存表項(xiàng)標(biāo)記為優(yōu)先替換的請(qǐng)求;
[0022]根據(jù)所述請(qǐng)求將長(zhǎng)延時(shí)事件所在線(xiàn)程占用的寄存器堆緩存表項(xiàng)標(biāo)記為優(yōu)先替換。
[0023]優(yōu)選地,所述寄存器堆緩存資源的動(dòng)態(tài)釋放方法,在接收將被長(zhǎng)延時(shí)時(shí)間所在線(xiàn)程占用的寄存器堆緩存表項(xiàng)標(biāo)記為優(yōu)先替換的請(qǐng)求之前還包括:
[0024]為寄存器堆緩存表項(xiàng)設(shè)置索引號(hào)和標(biāo)識(shí)位;
[0025]接收將被長(zhǎng)延時(shí)事件所在線(xiàn)程占用的寄存器堆緩存表項(xiàng)標(biāo)記為優(yōu)先替換的請(qǐng)求中:所述請(qǐng)求包括表項(xiàng)的索引號(hào)和優(yōu)先替換指示信號(hào);
[0026]根據(jù)所述請(qǐng)求將長(zhǎng)延時(shí)事件所在線(xiàn)程占用的寄存器堆緩存表項(xiàng)標(biāo)記為優(yōu)先替換中:根據(jù)索引號(hào)確定寄存器堆緩存表項(xiàng),將該表項(xiàng)的標(biāo)識(shí)位設(shè)置為優(yōu)先替換指示信號(hào)。
[0027]優(yōu)選地,所述寄存器堆緩存資源的動(dòng)態(tài)釋放方法,在根據(jù)所述請(qǐng)求將長(zhǎng)延時(shí)事件所在線(xiàn)程占用的寄存器堆緩存表項(xiàng)標(biāo)記為優(yōu)先替換之后還包括:
[0028]接收恢復(fù)該長(zhǎng)延時(shí)事件所在線(xiàn)程對(duì)寄存器堆緩存表項(xiàng)的占用的請(qǐng)求;
[0029]恢復(fù)該長(zhǎng)延時(shí)事件所在線(xiàn)程對(duì)寄存器堆緩存表項(xiàng)的占用。
[0030]本發(fā)明還提供一種寄存器堆緩存資源的動(dòng)態(tài)釋放系統(tǒng),包括:
[0031]監(jiān)測(cè)單元,用于監(jiān)測(cè)每一線(xiàn)程是否有長(zhǎng)延時(shí)事件發(fā)生;
[0032]判斷單元,與所述監(jiān)測(cè)單元相連,用于在所述監(jiān)測(cè)單元監(jiān)測(cè)到某一線(xiàn)程有長(zhǎng)延時(shí)事件發(fā)生時(shí),判斷該長(zhǎng)延時(shí)事件所在線(xiàn)程是否占用有效的寄存器堆緩存表項(xiàng);
[0033]發(fā)送單元,與所述判斷單元相連,用于在所述判斷單元判斷該長(zhǎng)延時(shí)事件所在線(xiàn)程占用有效的寄存器堆緩存表項(xiàng)時(shí),發(fā)送將被該長(zhǎng)延時(shí)事件所在線(xiàn)程占用的寄存器堆緩存表項(xiàng)標(biāo)記為優(yōu)先替換的請(qǐng)求。
[0034]優(yōu)選地,所述寄存器堆緩存資源的動(dòng)態(tài)釋放系統(tǒng)中,所述監(jiān)測(cè)單元,用于主動(dòng)監(jiān)測(cè)每一線(xiàn)程是否發(fā)生長(zhǎng)延時(shí)事件;和/或
[0035]接收發(fā)生長(zhǎng)延時(shí)事件的線(xiàn)程發(fā)送的長(zhǎng)延時(shí)信號(hào)。
[0036]優(yōu)選地,所述寄存器堆緩存資源的動(dòng)態(tài)釋放系統(tǒng)中,所述發(fā)送單元發(fā)送的請(qǐng)求包括表項(xiàng)在寄存器堆緩存中的索引號(hào)以及優(yōu)先替換指示信號(hào)。
[0037]優(yōu)選地,所述寄存器堆緩存資源的動(dòng)態(tài)釋放系統(tǒng)中,所述判斷單元,還用于判斷該長(zhǎng)延時(shí)事件是否即將結(jié)束;
[0038]所述發(fā)送單元,還用于在所述判斷單元判斷該長(zhǎng)延時(shí)事件即將結(jié)束時(shí),發(fā)送恢復(fù)該長(zhǎng)延時(shí)事件所在線(xiàn)程對(duì)寄存器堆緩存表項(xiàng)的占用的請(qǐng)求。
[0039]本發(fā)明還提供一種寄存器堆緩存,包括:
[0040]接收單元,用于接收將被長(zhǎng)延時(shí)事件所在線(xiàn)程占用的寄存器堆緩存表項(xiàng)標(biāo)記為優(yōu)先替換的請(qǐng)求;
[0041]釋放單元,與所述接收單元相連,用于根據(jù)所述請(qǐng)求將長(zhǎng)延時(shí)事件所在線(xiàn)程占用的寄存器堆緩存表項(xiàng)標(biāo)記為優(yōu)先替換。
[0042]優(yōu)選地,所述寄存器堆緩存,還包括設(shè)置單元:
[0043]所述設(shè)置單元,用于為寄存器堆緩存表項(xiàng)設(shè)置索引號(hào)和標(biāo)識(shí)位;
[0044]所述接收單元,接收到的將被長(zhǎng)延時(shí)事件所在線(xiàn)程占用的寄存器堆緩存表項(xiàng)標(biāo)記為優(yōu)先替換的請(qǐng)求包括表項(xiàng)的索引號(hào)和優(yōu)先替換指示信號(hào);
[0045]所述釋放單元,根據(jù)索引號(hào)確定對(duì)應(yīng)的寄存器堆緩存表項(xiàng),將該表項(xiàng)的標(biāo)識(shí)位設(shè)置為優(yōu)先替換指示信號(hào)。
[0046]優(yōu)選地,所述寄存器堆緩存,還包括恢復(fù)單元:
[0047]所述接收單元,還用于接收恢復(fù)該長(zhǎng)延時(shí)事件所在線(xiàn)程對(duì)寄存器堆緩存表項(xiàng)的占用的請(qǐng)求;
[0048]所述恢復(fù)單元,與所述接收單元相連,用于恢復(fù)該長(zhǎng)延時(shí)事件所在線(xiàn)程對(duì)寄存器堆緩存表項(xiàng)的占用。
[0049]本發(fā)明還提供一種處理器,包括:
[0050]