令之間的依賴性關(guān)系的延遲相對較大。在圖5的示例中,“vmuld”指令和“vadd”指令在關(guān)鍵的延遲路徑上。
[0059]圖6示出了對應于Java字節(jié)代碼460的本機代碼680的示例。利用由于冗余標志寄存器依賴性而受到限制的指令調(diào)度,Java字節(jié)代碼460被轉(zhuǎn)換成Thumb指令集的本機代碼680。在示例中,本機代碼580被重新排序,而沒有忽略冗余標志寄存器依賴性。在示例中,Thumb指令集中的大量指令(諸如指令“adds”)更新標志寄存器并且因此具有標志寄存器依賴性。由于具有標志寄存器依賴性的大量指令,調(diào)度范圍受到限制。在圖6的示例中,沒有訪問標志寄存器的“vldr”指令能夠在“vmuld”指令與“vadd”指令之間移動以隱藏兩個指令之間的部分延遲。
[0060]圖7示出了對應于Java字節(jié)代碼460的本機代碼780的示例。利用不受冗余標志寄存器依賴性限制的指令調(diào)度,Java字節(jié)代碼460被轉(zhuǎn)換成本機代碼780。在示例中,利用忽略的冗余標志寄存器依賴性來重新排序本機代碼580。在示例中,從行01到行11的指令是“def”指令或者非標志寄存器訪問指令。因此,從行01到行11的指令的標志寄存器依賴性是冗余的,并且可以在指令調(diào)度期間忽略冗余標志寄存器依賴性,以改善調(diào)度靈活性。因此,當指令不具有數(shù)據(jù)依賴性時,可以切換指令的順序。在圖7的示例中,指令781與指令782和指令784不具有數(shù)據(jù)依賴性,并且因此可以在指令784之后,將指令781進行移動以隱藏“vmuld”指令與“vadd”指令之間的延遲。因此,本機代碼780比本機代碼580和本機代碼680具有較少的總執(zhí)行延遲。
[0061]雖然已經(jīng)結(jié)合被提出作為示例的本公開內(nèi)容的具體實施例描述了本公開內(nèi)容的方面,然而可以對示例做出替選、修改和變型。因此,本文中闡述的實施例意在說明而非限制??梢栽诓黄x下面給出的權(quán)利要求的范圍的情況下做出各種變化。
【主權(quán)項】
1.一種用于指令調(diào)度的方法,包括: 接收指令的序列; 標識所述指令的基于冗余標志寄存器的依賴性;以及 在不受所述基于冗余標志寄存器的依賴性的限制的情況下,對所述指令進行重新排序。2.根據(jù)權(quán)利要求1所述的方法,其中標識所述指令的所述基于冗余標志寄存器的依賴性還包括: 基于針對標志寄存器訪問的預先確定的模式來標識所述基于冗余標志寄存器的依賴性。3.根據(jù)權(quán)利要求2所述的方法,其中基于針對所述標志寄存器訪問的所述預先確定的模式來標識所述基于冗余標志寄存器的依賴性還包括: 標識兩個或更多個連續(xù)的讀取標志寄存器訪問。4.根據(jù)權(quán)利要求2所述的方法,其中基于針對所述標志寄存器訪問的所述預先確定的模式來標識所述基于冗余標志寄存器的依賴性還包括: 標識三個或更多個連續(xù)的寫入標志寄存器訪問。5.根據(jù)權(quán)利要求1所述的方法,其中: 接收所述指令的序列以用于編譯;以及 輸出對應于重新排序的所述指令的已編譯代碼。6.根據(jù)權(quán)利要求1所述的方法,其中: 接收所述指令的序列以用于執(zhí)行;以及 根據(jù)重新排序的所述指令來控制所述執(zhí)行。7.根據(jù)權(quán)利要求1所述的方法,其中在不受所述基于冗余標志寄存器的依賴性關(guān)系的限制的情況下對所述指令進行重新排序還包括: 構(gòu)造具有頂點和所述頂點之間的邊的有向圖,所述頂點對應于所述指令,并且所述邊被延遲標記并且對應于數(shù)據(jù)依賴性和非冗余標志依賴性;以及 根據(jù)關(guān)鍵的延遲取向模型來對所述有向圖進行拓撲分類以減小執(zhí)行延遲。8.一種存儲程序指令的非瞬態(tài)計算機可讀介質(zhì),所述程序指令用于引起處理器執(zhí)行用于指令調(diào)度的操作,所述操作包括: 接收指令的序列; 標識所述指令的基于冗余標志寄存器的依賴性;以及 在不受所述基于冗余標志寄存器的依賴性的限制的情況下,對所述指令進行重新排序。9.根據(jù)權(quán)利要求8所述的非瞬態(tài)計算機可讀介質(zhì),其中標識所述指令的所述基于冗余標志寄存器的依賴性的操作還包括: 基于針對標志寄存器訪問的預先確定的模式來標識所述基于冗余標志寄存器的依賴性。10.根據(jù)權(quán)利要求9所述的非瞬態(tài)計算機可讀介質(zhì),其中基于針對所述標志寄存器訪問的所述預先確定的模式來標識所述基于冗余標志寄存器的依賴性的操作還包括: 標識兩個或更多個連續(xù)的讀取標志寄存器訪問。11.根據(jù)權(quán)利要求9所述的非瞬態(tài)計算機可讀介質(zhì),其中基于針對所述標志寄存器訪問的所述預先確定的模式來標識所述基于冗余標志寄存器的依賴性的操作還包括: 標識三個或更多個連續(xù)的寫入標志寄存器訪問。12.根據(jù)權(quán)利要求8所述的非瞬態(tài)計算機可讀介質(zhì),其中所述操作包括: 接收所述指令的序列以用于編譯;以及 輸出對應于重新排序的所述指令的已編譯代碼。13.根據(jù)權(quán)利要求8所述的非瞬態(tài)計算機可讀介質(zhì),其中所述操作包括: 接收所述指令的序列以用于執(zhí)行;以及 根據(jù)重新排序的所述指令來控制所述執(zhí)行。14.根據(jù)權(quán)利要求8所述的非瞬態(tài)計算機可讀介質(zhì),其中在不受所述基于冗余標志寄存器的依賴性關(guān)系的限制的情況下對所述指令進行重新排序的操作還包括: 構(gòu)造具有頂點和所述頂點之間的邊的有向圖,所述頂點對應于指令,并且所述邊被延遲標記并且對應于數(shù)據(jù)依賴性和非冗余標志依賴性;以及 根據(jù)關(guān)鍵的延遲取向模型來對所述有向圖進行拓撲分類以減小執(zhí)行延遲。15.一種裝置,包括: 處理器,所述處理器被配置為執(zhí)行指令;以及 存儲器,所述存儲器被配置為存儲用于引起所述處理器執(zhí)行以下操作的指令: 接收指令的序列; 標識所述指令的基于冗余標志寄存器的依賴性;以及 在不受所述基于冗余標志寄存器的依賴性的限制的情況下,對所述指令進行重新排序。16.根據(jù)權(quán)利要求15所述的裝置,其中所述存儲器被配置為存儲用于引起所述處理器執(zhí)行以下操作的指令: 基于針對標志寄存器訪問的預先確定的模式來標識所述基于冗余標志寄存器的依賴性。17.根據(jù)權(quán)利要求16所述的裝置,其中所述存儲器被配置為存儲用于引起所述處理器執(zhí)行以下操作中的至少一個操作的指令: 標識兩個或更多個連續(xù)的讀取標志寄存器訪問;以及 標識三個或更多個連續(xù)的寫入標志寄存器訪問。18.根據(jù)權(quán)利要求15所述的裝置,其中所述存儲器被配置為存儲用于引起所述處理器執(zhí)行以下操作的指令: 接收所述指令的序列以用于編譯;以及 生成對應于重新排序的所述指令的已編譯代碼。19.根據(jù)權(quán)利要求15所述的裝置,其中所述處理器被配置為存儲用于引起所述處理器執(zhí)行以下操作的指令: 接收所述指令的序列以用于執(zhí)行;以及 根據(jù)重新排序的所述指令來執(zhí)行所述指令。20.根據(jù)權(quán)利要求15所述的裝置,其中所述存儲器被配置為存儲用于引起所述處理器執(zhí)行以下操作的指令: 構(gòu)造具有頂點和所述頂點之間的邊的有向圖,所述頂點對應于指令,并且所述邊被延遲標記并且對應于數(shù)據(jù)依賴性和非冗余標志依賴性;以及 根據(jù)關(guān)鍵的延遲取向模型來對所述有向圖進行拓撲分類以減小執(zhí)行延遲。
【專利摘要】本公開內(nèi)容的方面提供了用于指令調(diào)度的方法。該方法包括:接收指令的序列,標識指令的基于冗余標志寄存器的依賴性,以及在不受基于冗余標志寄存器的依賴性的限制的情況下,對指令進行重新排序。
【IPC分類】G06F9/30
【公開號】CN105408859
【申請?zhí)枴緾N201480042512
【發(fā)明人】齊歆瑜, 簡寧勝, 黃海濤, 高麗萍
【申請人】馬維爾國際貿(mào)易有限公司
【公開日】2016年3月16日
【申請日】2014年9月4日
【公告號】EP3044675A2, US9304749, US20150074675, WO2015036867A2, WO2015036867A3