亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

靜態(tài)實(shí)現(xiàn)數(shù)據(jù)旁路及寄存器文件數(shù)據(jù)寫入控制的處理器及編譯方法

文檔序號:6389474閱讀:232來源:國知局
專利名稱:靜態(tài)實(shí)現(xiàn)數(shù)據(jù)旁路及寄存器文件數(shù)據(jù)寫入控制的處理器及編譯方法
技術(shù)領(lǐng)域
本發(fā)明涉及微處理器及計(jì)算機(jī)系統(tǒng),更具體地說,本發(fā)明涉及一種靜態(tài)實(shí)現(xiàn)數(shù)據(jù)旁路和對寄存器文件數(shù)據(jù)寫入控制的處理器及編譯方法,特別地涉及媒體處理器中流水寄存器的編譯控制。
背景技術(shù)
現(xiàn)有DSP和媒體處理器通常采用了指令級并行(ILP)的設(shè)計(jì)。在傳統(tǒng)的有多個(gè)并行功能單元的ILP處理器中有一個(gè)限制了其規(guī)模的主要問題,這就是共享寄存器文件(RF)和功能單元FU之間的連接關(guān)系。當(dāng)超長指令(VLIW)構(gòu)造處理器需要支持大量并行操作時(shí)會(huì)遇到問題,尤其是在支持多個(gè)功能單元時(shí),RF和旁路電路變得十分復(fù)雜。
由于功能單元是采用流水的,為了減少指令數(shù)據(jù)相關(guān)引起的延時(shí),通常在處理器中都設(shè)計(jì)有旁路電路。旁路電路的任務(wù)是負(fù)責(zé)判斷流水中指令間數(shù)據(jù)的相關(guān)性以及提前將相關(guān)的數(shù)據(jù)傳送給需要的指令。硬件旁路電路的設(shè)計(jì)是根據(jù)在流水中指令寄存器操作數(shù)的地址來識別數(shù)據(jù)的相關(guān)性,較長的流水或多個(gè)流水線將大大增加旁路電路的復(fù)雜性。
另一方面,在傳統(tǒng)的流水線設(shè)計(jì)中,旁路電路在提前傳送旁路值的同時(shí),并沒有減少流水線對寄存器文件的寫入次數(shù)。通常,流水線在最后一級將輸出結(jié)果存儲到寄存器文件,以備后面指令進(jìn)一步使用。有時(shí)一個(gè)數(shù)據(jù)經(jīng)過旁路以后不再有指令使用這個(gè)數(shù)據(jù),此時(shí)已經(jīng)沒有必要將此結(jié)果寫入寄存器文件。

發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)中的不足,提供一種靜態(tài)實(shí)現(xiàn)數(shù)據(jù)旁路和對寄存器文件數(shù)據(jù)寫入控制的處理器及編譯方法。
為了解決上述技術(shù)問題,本發(fā)明是通過以下技術(shù)方案實(shí)現(xiàn)的
本發(fā)明提供了一種靜態(tài)實(shí)現(xiàn)數(shù)據(jù)旁路和對寄存器文件數(shù)據(jù)寫入控制的媒體處理器,該處理器沒有硬件旁路邏輯,包含6級流水,IF級是取指令和計(jì)算新PC值;ID級是指令譯碼,從寄存器文件中讀取數(shù)據(jù);DA級是計(jì)算源操作數(shù)的存儲地址;DM級是存儲訪問,從存儲器中讀取數(shù)據(jù);EX級是ALU操作和MAC操作,執(zhí)行指令操作;WB級是將ALU或load指令的輸出結(jié)果寫入寄存器文件。
本發(fā)明還提供了一種靜態(tài)實(shí)現(xiàn)數(shù)據(jù)旁路及寄存器文件數(shù)據(jù)寫入控制的編譯方法,在使用前述的媒體處理器時(shí),沒有硬件旁路邏輯,流水線旁路的數(shù)據(jù)通道用于傳送需要被旁路的數(shù)據(jù)。
本發(fā)明中,使用如權(quán)利要求1的媒體處理器時(shí)在寄存器文件數(shù)據(jù)通道上有使能控制,可以控制數(shù)據(jù)是否寫回寄存器文件。被旁路的數(shù)據(jù)是由對應(yīng)的流水寄存器提供的。提供旁路數(shù)據(jù)的流水寄存器被編號和命名,對編譯器是可見的,流水寄存器的編號和提供旁路數(shù)據(jù)的流水級是對應(yīng)的,編號既代表流水寄存器,也代表對應(yīng)的流水級。
本發(fā)明中被編號的流水寄存器對編譯器是可見的,但不能用于應(yīng)用程序的編程中,編譯器通過編譯信息s1和s2,只可以控制從哪個(gè)流水寄存器中讀取數(shù)據(jù)。2位的編譯信息允許至多連續(xù)五條指令的數(shù)據(jù)相關(guān)性在6級流水中經(jīng)過旁路解決。
本發(fā)明中在寄存器文件的寫入數(shù)據(jù)通道上有使能控制,該使能控制負(fù)責(zé)是否將數(shù)據(jù)寫入寄存器文件中。使能控制由編譯信息d提供,即由d決定是否將結(jié)果寫入寄存器文件。編譯信息d取決于寄存器的生存期,是指從指令寫目的寄存器到指令最后一次使用該寄存器值之間的指令數(shù),其計(jì)算是在全局范圍內(nèi)考慮而不是在基本塊內(nèi);本發(fā)明中寄存器生存期是根據(jù)處理器不同指令間的延遲計(jì)算的。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是用靜態(tài)實(shí)現(xiàn)數(shù)據(jù)旁路功能無需對每個(gè)旁路數(shù)據(jù)進(jìn)行比較,只需要硬件保留旁路的數(shù)據(jù)通道,硬件的結(jié)構(gòu)非常簡單。


圖1為本發(fā)明的匯編指令編碼格式;
圖2為本發(fā)明的提供旁路數(shù)據(jù)流水寄存器在流水中的位置及對應(yīng)的名字;圖3為本發(fā)明的編譯過程中計(jì)算寄存器生存期的示意圖;圖4為本發(fā)明編譯過程中經(jīng)過指令調(diào)度后計(jì)算寄存器生存期的示意圖;圖5為本發(fā)明的一個(gè)用于計(jì)算寄存器的生存期和對應(yīng)編譯信息算法流程圖。
具體實(shí)施例方式
下面結(jié)合附圖以具體示例對本發(fā)明進(jìn)行詳細(xì)描述通常,處理器在譯碼(ID)級對多個(gè)輸入數(shù)據(jù)進(jìn)行選擇是由旁路邏輯電路對數(shù)據(jù)的相關(guān)性進(jìn)行分析之后進(jìn)行的,即處理器硬件實(shí)現(xiàn)了旁路的功能。這同樣可由編譯器在編譯時(shí)(靜態(tài))就對指令之間的數(shù)據(jù)相關(guān)性進(jìn)行分析比較,由此將數(shù)據(jù)相關(guān)且需要旁路數(shù)據(jù)的信息進(jìn)行編碼,并將這個(gè)編碼信息放在指令的編碼中,在指令譯碼之后控制相關(guān)數(shù)據(jù)的傳送。圖1是所設(shè)計(jì)的指令集的幾種主要指令類型編碼格式,其中OPCODE占7位,寄存器Rs、Rt、Rd和立即數(shù)Shamt分別占5位,輔助尋址寄存器Arm、Arn和寄存器Dst、Src1、Src2分別占3位,地址偏移量dispm、dispn和尋址方式Modm、Modn分別占4位。在此我們特別安排了數(shù)據(jù)相關(guān)的編譯信息s1、s2分別占2位,這里跳轉(zhuǎn)指令不需要數(shù)據(jù)相關(guān)的編譯信息編碼,立即數(shù)指令只需要2位的編譯信息。
RE-type1和RE-type2類型的指令都是間接尋址方式,前者是通過輔助寄存器加減一個(gè)偏移量得到數(shù)據(jù)的地址,后者是通過輔助寄存器和索引寄存器的加減得到數(shù)據(jù)地址的。P-type類型是并行指令編碼格式,支持加法、減法和乘法的并行執(zhí)行,以及存儲(store)指令和算術(shù)、邏輯運(yùn)算指令的并行執(zhí)行,這里都安排了數(shù)據(jù)相關(guān)信息位。
數(shù)據(jù)相關(guān)的編譯信息s1和s2分別表示源操作數(shù)1和源操作數(shù)2的數(shù)據(jù)相關(guān)信息,表1是編譯信息位s1、s2的編碼和編譯信息對照,說明信息的語義。00表示該操作數(shù)沒有數(shù)據(jù)相關(guān)性,01表示該操作數(shù)需要從DM級的旁路數(shù)據(jù),10和11以此類推。旁路數(shù)據(jù)的傳送是根據(jù)數(shù)據(jù)相關(guān)信息s1和s2來控制的,例如一條指令的s1和s2的編碼為00和10,則表明該指令的第一個(gè)源操作數(shù)與前面的指令之間沒有相關(guān)性,而第二個(gè)源操作數(shù)需要前面指令在EX級的旁路值。編譯要做的是,在s1或s2為00時(shí),如果源操作數(shù)是間接尋址方式,則傳送回ID級的是DA級的旁路值。

表1

表2由于DA級是用于操作數(shù)的地址計(jì)算的,其輸出結(jié)果是操作數(shù)的存儲地址,這里不需要考慮存儲地址間及存儲地址和寄存器操作數(shù)間的數(shù)據(jù)相關(guān)性,因此,在考慮指令源操作數(shù)的相關(guān)性時(shí)不必考慮DA級的旁路值。這樣,傳送回到ID級的旁路值有DM級、EX級和WB級。為了使編譯器能夠?qū)λ月返闹颠M(jìn)行控制傳送,對流水寄存器分別給予名字和編號。與通常流水線中的流水寄存器不同,這里的流水寄存器對編譯器是可見的,編譯器可以控制何時(shí)從這些寄存器讀取數(shù)據(jù)。表2是流水寄存器名字和對應(yīng)的編號,對提供旁路值的流水寄存器給予名字和相應(yīng)的編號。提供數(shù)據(jù)旁路的流水寄存器在流水中的位置見圖2。

表3表3是一段所設(shè)計(jì)的處理器的匯編指令代碼以及對應(yīng)指令數(shù)據(jù)相關(guān)性的編譯信息。可以看出指令add和第一條lw指令數(shù)據(jù)相關(guān),指令add的第一個(gè)源操作數(shù)r2需要指令lw在DM級的旁路值RDM,這是因?yàn)閘w指令須等到DM級才能從內(nèi)存中讀到數(shù)據(jù)。同理,指令sub和第二條lw指令以及add指令數(shù)據(jù)相關(guān);指令sw需要sub指令在EX級的旁路值REX和指令lw在WB級的旁路值RWB。
編譯器分析指令之間的數(shù)據(jù)相關(guān)性基礎(chǔ)上,根據(jù)以下幾條規(guī)則得到指令數(shù)據(jù)相關(guān)的編譯信息對于load/store類指令,最早要在DM級才能得到數(shù)據(jù),其中store指令在DM級結(jié)束,而load指令進(jìn)入隨后的EX級和WB級。
對于算術(shù)運(yùn)算和邏輯運(yùn)算指令,最早要在EX級能取到旁路數(shù)據(jù),并進(jìn)入下一流水級WB。
對于跳轉(zhuǎn)指令不記錄其數(shù)據(jù)相關(guān)性的編譯信息。
在6級流水線的DSP結(jié)構(gòu)中,由于DA、DM、EX和WB流水級有旁路值,加上ID級的指令,至多連續(xù)五條指令的數(shù)據(jù)相關(guān)性在6級流水中可以經(jīng)過旁路解決。因此,編譯器在收集指令編譯信息s1和s2時(shí),指令相關(guān)性分析的窗口大小為五條指令,即編譯信息記錄的是連續(xù)五條指令之間的數(shù)據(jù)相關(guān)性。
如果數(shù)據(jù)相關(guān)指令之間的間距(兩數(shù)據(jù)相關(guān)指令之間的指令數(shù))大于上述規(guī)則中要求的流水級寄存器的編號(見表2),則以間距確定所要旁路的流水級;如果間距小于或等于上述規(guī)則中要求的流水級寄存器的編號,則以第一、第二條規(guī)則中的要求來確定所要旁路的流水級。
例如,sw和sub指令之間的間距為0,而sub指令按照第二條規(guī)則最早在EX級(寄存器的編號為10,即十進(jìn)制的2)可以得到旁路值,因間距0小于寄存器的編號,故采用規(guī)則b,由EX級的值作為指令sw的旁路值,故sw指令數(shù)據(jù)相關(guān)的編譯信息s1為10。
在圖1中,編譯信息d,占1位,這是控制WB級是否將數(shù)據(jù)寫回寄存器文件的使能控制編譯信息位。由于跳轉(zhuǎn)指令沒有目的寄存器,所以這里J-type類型指令不需要使能控制編譯信息位。除了J-type,其它所有的指令都安排了編譯信息位d。IE-type、RE-type1和RE-type2類型的指令都是間接尋址方式,前者是通過輔助寄存器加/減一個(gè)偏移量得到數(shù)據(jù)的地址,后者是通過輔助寄存器和索引寄存器的加/減得到數(shù)據(jù)地址的。

表4指令編碼格式中的使能控制編譯信息d是用于控制流水線WB級是否將輸出結(jié)果寫入寄存器文件的編譯信息。表4是編譯信息d的編碼和其語義對照表,當(dāng)d為0時(shí),表示允許將該指令的結(jié)果寫入寄存器文件,即進(jìn)行正常的流水操作;相反地,當(dāng)d為1時(shí),表示禁止將該指令的結(jié)果寫入寄存器文件。
在編譯時(shí),編譯器除了分析指令之間的數(shù)據(jù)相關(guān)性之外,還可以根據(jù)數(shù)據(jù)相關(guān)性確定每條指令目的寄存器的生存期,寄存器的生存期是指從指令寫目的寄存器到指令最后一次使用該寄存器值之間的指令數(shù)。圖3是描述了指令代碼的寄存器生存期分析結(jié)果,圓點(diǎn)表示寄存器定義指令到最后一次使用該寄存器的指令之間的各指令的相對位置,這里假定后面的指令不會(huì)使用此基本塊中定義的寄存器,即沒有RAW相關(guān)。
編譯器逐條掃描指令代碼,對有定義目的寄存器的指令,將掃描其后面與其有RAW相關(guān)的指令,記錄最后一次使用該寄存器的指令與定義指令之間的指令數(shù),這個(gè)指令數(shù)就是寄存器的生存期。如圖3中r2的生存期為4,r3的生存期為2,r4,r5的生存期為1等。
通過對寄存器生存期的分析,編譯器可以知道相關(guān)指令之間的存在的最大距離。數(shù)據(jù)的相關(guān)性是不限定在一個(gè)基本塊內(nèi)的,對寄存器生存期的分析應(yīng)在全局范圍內(nèi)進(jìn)行,這樣分析得到的結(jié)果才能真實(shí)反映實(shí)際的情況。因此,對寄存器生存期的分析是在全局范圍內(nèi),并對數(shù)據(jù)相關(guān)圖DDG(data dependence graph)中每條路徑進(jìn)行分析,以最長的寄存器生存期作為該寄存器生存期的最后的結(jié)果。
另外,對寄存器生存期的確定,還需要考慮指令之間不同類型的組合情況。因?yàn)椴煌闹噶铑愋椭g存在不同的延時(shí),只有考慮延時(shí)的存在,才能使編譯時(shí)得到的寄存器生存期與運(yùn)行時(shí)的實(shí)際情況相一致。延時(shí)是指指令之間由于數(shù)據(jù)相關(guān)出現(xiàn)的流水停頓,但這種流水停頓是可以通過指令調(diào)度加以利用的。對于所設(shè)計(jì)的6級流水媒體處理器,不同指令間的延時(shí)情況如下load/sotore指令之間的延時(shí)為2個(gè),算術(shù)/邏輯指令和store指令之間的延時(shí)為3個(gè),另外兩種指令類型之間沒有延時(shí),此外,轉(zhuǎn)移指令(branch)有1個(gè)延時(shí)。
圖3中代碼在流水線中的數(shù)據(jù)相關(guān)性情況說明,第一條LW指令和ADD、第二條LW和SUB、ADD和SUB之間都沒有延時(shí),但指令SUB和SW之間有3個(gè)延時(shí)。由于沒有用不相關(guān)指令調(diào)度或nop來利用延時(shí),這樣造成圖3中編譯分析得到的生存期與流水中實(shí)際情況是不相符的。因此,對寄存器生存期的分析還應(yīng)該考慮指令間延時(shí)的影響,圖4中的指令代碼是經(jīng)過指令調(diào)度或用nop利用延時(shí)后再分析得到寄存器生存期的。
延時(shí)對生存期的影響可以從旁路邏輯返回旁路值中清楚的看出,例如圖3中對寄存器r5生存期的分析結(jié)果是1,然而,從圖4中可以看出,SUB指令要到EX級才能將結(jié)果送回到ID級,這兩條指令之間有3個(gè)流水停頓存在。這樣,在實(shí)際代碼運(yùn)行中,r5的生存期為4,而不是前面分析的結(jié)果1。同樣地,r2的實(shí)際生存期為7而不是4。因此,考慮不同指令類型延時(shí)對寄存器的生存期的影響后,需要調(diào)整寄存器的生存期。
對于所設(shè)計(jì)的六級流水媒體處理器,有4個(gè)流水級可以返回旁路值,這樣允許最大的寄存器生存期為5,即從定義寄存器變量后的第五條指令的RAW相關(guān)還可以通過旁路來提供需要的值。寄存器生存期大于5的指令,只能從寄存器文件讀取操作數(shù)。為了得到使能控制編譯信息d,提出了計(jì)算寄存器生存期的算法,見圖5。
在指令調(diào)度和代碼優(yōu)化之后應(yīng)用此算法來計(jì)算寄存器生存期,并且遵循以下原則建立DDG是在全局范圍內(nèi)進(jìn)行的,而不是局限于基本塊內(nèi)。
對于DDG中存在多條路徑的情況,即RAW相關(guān)存在于不同的基本塊之間,此時(shí)以寄存器生存期最長的那個(gè)值作為產(chǎn)生編譯信息d的依據(jù)。
針對不同的指令類型,判別第一條RAW相關(guān)指令的相對位置以確定延時(shí)槽是否全部利用。如果延時(shí)沒有全部利用,則用nop填滿,然后調(diào)整DDG中的節(jié)點(diǎn)狀態(tài)值。
根據(jù)寄存器生存期確定編譯信息d的值。
利用寄存器生存期的分析結(jié)果,可以方便得到使能控制編譯信息d的值,見表3。對每條定義寄存器的指令都有相應(yīng)的使能控制編譯信息d,這樣,當(dāng)指令在流水線中執(zhí)行到最后一級WB時(shí),d將控制是否將指令的執(zhí)行結(jié)果寫回到寄存器文件。
從圖4可以看出,第二條LW、ADD和SUB的計(jì)算結(jié)果可以經(jīng)過旁路邏輯實(shí)現(xiàn)全部使用,這些值都不需要寫回寄存器文件,這些指令對應(yīng)的編譯信息d被置為1。第一條LW指令中的r2的值在流水線中經(jīng)過旁路邏輯只能部分利用,必須寫回寄存器文件以備指令SW繼續(xù)使用,編譯信息d置為0。
最后,還需要注意的是,以上列舉的僅是本發(fā)明的具體實(shí)施例子。顯然,本發(fā)明不限于以上實(shí)施例子,還可以有許多變形。本領(lǐng)域的普通技術(shù)人員能從本發(fā)明公開的內(nèi)容直接導(dǎo)出或聯(lián)想到的所有變形,均應(yīng)認(rèn)為是本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種靜態(tài)實(shí)現(xiàn)數(shù)據(jù)旁路及寄存器文件數(shù)據(jù)寫入控制的媒體處理器,其特征在于包含六級流水,其中IF級是取指令和計(jì)算新PC值;ID級是指令譯碼,從寄存器文件中讀取數(shù)據(jù);DA級是計(jì)算源操作數(shù)的存儲地址;DM級是存儲訪問,從存儲器中讀取數(shù)據(jù);EX級是ALU操作和MAC操作,執(zhí)行指令操作;WB級是將ALU或load指令的輸出結(jié)果寫入寄存器文件。
2.一種靜態(tài)實(shí)現(xiàn)數(shù)據(jù)旁路及寄存器文件數(shù)據(jù)寫入控制的編譯方法,其特征在于使用如權(quán)利要求1所述的媒體處理器,沒有硬件旁路邏輯,流水線旁路的數(shù)據(jù)通道用于傳送需要被旁路的數(shù)據(jù)。
3.如權(quán)利要求2所述的編譯方法,其特征在于使用如權(quán)利要求1的媒體處理器,在寄存器文件數(shù)據(jù)通道上有使能控制,可以控制數(shù)據(jù)是否寫回寄存器文件。
4.如權(quán)利要求2所述的編譯方法,其特征在于所述的被旁路的數(shù)據(jù)是由對應(yīng)的流水寄存器提供的。
5.如權(quán)利要求2所述的編譯方法,其特征在于所述的提供旁路數(shù)據(jù)的流水寄存器被編號和命名,對編譯器是可見的,流水寄存器的編號和提供旁路數(shù)據(jù)的流水級是對應(yīng)的,編號既代表流水寄存器,也代表對應(yīng)的流水級。
6.如權(quán)利要求5所述的編譯方法,其特征在于所述的被編號的流水寄存器對編譯器是可見的,但不能用于應(yīng)用程序的編程中,編譯器通過編譯信息s1和s2,只可以控制從哪個(gè)流水寄存器中讀取數(shù)據(jù)。
7.如權(quán)利要求5所述的編譯方法,其特征在于2位的編譯信息允許至多連續(xù)五條指令的數(shù)據(jù)相關(guān)性在6級流水中經(jīng)過旁路解決。
8.如權(quán)利要求3所述的編譯方法,其特征在于在寄存器文件的寫入數(shù)據(jù)通道上有使能控制,該使能控制負(fù)責(zé)是否將數(shù)據(jù)寫入寄存器文件中。
9.如權(quán)利要求8所述的編譯方法,其特征在于使能控制由編譯信息d提供,即由d決定是否將結(jié)果寫入寄存器文件。
10.如權(quán)利要求9所述的編譯方法,其特征在于所述的編譯信息d取決于寄存器的生存期,是指從指令寫目的寄存器到指令最后一次使用該寄存器值之間的指令數(shù),其計(jì)算是在全局范圍內(nèi)考慮而不是在基本塊內(nèi);寄存器生存期是根據(jù)處理器不同指令間的延遲計(jì)算的。
全文摘要
本發(fā)明公開了一種微處理器及計(jì)算機(jī)系統(tǒng),旨在提供一種靜態(tài)實(shí)現(xiàn)數(shù)據(jù)旁路和對寄存器文件數(shù)據(jù)寫入控制的處理器及編譯方法,特別是媒體處理器中流水寄存器的編譯控制。本發(fā)明提供了一種靜態(tài)實(shí)現(xiàn)數(shù)據(jù)旁路和對寄存器文件數(shù)據(jù)寫入控制的媒體處理器,該處理器沒有硬件旁路邏輯,包含6級流水。本發(fā)明還提供了一種靜態(tài)實(shí)現(xiàn)數(shù)據(jù)旁路及寄存器文件數(shù)據(jù)寫入控制的編譯方法,在使用前述的媒體處理器時(shí),沒有硬件旁路邏輯,流水線旁路的數(shù)據(jù)通道用于傳送需要被旁路的數(shù)據(jù)。本發(fā)明的有益效果是用靜態(tài)實(shí)現(xiàn)數(shù)據(jù)旁路功能無需對每個(gè)旁路數(shù)據(jù)進(jìn)行比較,只需要硬件保留旁路的數(shù)據(jù)通道,硬件的結(jié)構(gòu)非常簡單。
文檔編號G06F9/38GK1560732SQ20041001675
公開日2005年1月5日 申請日期2004年3月3日 優(yōu)先權(quán)日2004年3月3日
發(fā)明者琚小明, 史冊, 姚慶棟, 李東曉, 高磊, 劉鵬 申請人:浙江大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1