用于實(shí)現(xiàn)代碼劃分和在異構(gòu)處理器內(nèi)核上執(zhí)行的高效有向非循環(huán)圖模式匹配的制作方法
【專利說明】用于實(shí)現(xiàn)代碼劃分和在異構(gòu)處理器內(nèi)核上執(zhí)行的高效有向非 循環(huán)圖模式匹配
【背景技術(shù)】
[0001 ]移動(dòng)電子設(shè)備(例如,蜂窩電話、手表、頭戴式耳機(jī)、遠(yuǎn)程控制等等)與以往任何時(shí) 候相比變得更加復(fù)雜,并且現(xiàn)在通常包括多個(gè)處理器、片上系統(tǒng)(SoC)、以及允許移動(dòng)設(shè)備 用戶在其移動(dòng)設(shè)備上執(zhí)行復(fù)雜的和功率密集的軟件應(yīng)用(例如,視頻流、視頻處理等等)的 其它資源。隨著復(fù)雜度和功耗的增加,更好地利用移動(dòng)設(shè)備的資源和能力的新的和改進(jìn)的 處理技術(shù)正在開始涌現(xiàn)。
[0002] 這些新興的技術(shù)包括能夠?qū)Ρ辉O(shè)計(jì)用于在通用應(yīng)用處理器上執(zhí)行的代碼進(jìn)行編 譯,使得該代碼適合于在諸如數(shù)字信號(hào)處理器(或DSP)之類的輔助處理器上執(zhí)行的系統(tǒng)。特 別地,應(yīng)用程序可以被劃分成單元或塊,并且可以基于所識(shí)別的不同的處理部件(例如, DSP、圖形處理單元或GPU等等)的效率/能力來將單元/塊分布到該不同的處理部件。這使得 主或中央處理單元(CPU)或應(yīng)用處理器將其操作中的一些操作卸載到輔助處理器,以節(jié)省 功率和/或改善性能。
[0003] 但是,確定應(yīng)用程序如何被劃分以及哪些部分最適合于在輔助處理器上執(zhí)行,經(jīng) 常是困難的設(shè)計(jì)任務(wù)。也就是說,只要存在用于識(shí)別并且將給定的代碼段劃分成非常適合 于在不同類型的內(nèi)核或處理單元中執(zhí)行的部件的有效方式,將操作卸載到輔助處理器就可 以改善移動(dòng)設(shè)備的性能和功耗特性。
[0004] 現(xiàn)有的技術(shù)可以利用不同的技術(shù)來識(shí)別和/或處理代碼。一些技術(shù)可以利用自動(dòng) 代碼劃分,并且可以通過程序依賴圖來表示應(yīng)用代碼,用于使用固有的并行性和已知的通 信開銷來對(duì)代碼進(jìn)行劃分。這些技術(shù)沒有利用可能已知對(duì)特定的處理單元(諸如數(shù)字信號(hào) 處理器( DSP))有益的預(yù)定義的模式。其它技術(shù)可以檢測(cè)代碼(或二進(jìn)制)內(nèi)的慣用語法 (idiom)(或者已知的/預(yù)定義的指令集),并且利用硬件輔助指令(即,復(fù)雜指令集計(jì)算或 "CISC"指令)來取代慣用語法。這些技術(shù)通常只可以處理有限的粒度(大部分是直線型的指 令)和簡(jiǎn)單的模式,諸如精確的模式或者有限的自由度。另外,存在用于發(fā)現(xiàn)重復(fù)代碼和使 用高級(jí)源代碼來檢測(cè)克隆的某些技術(shù)。此外,圖模式匹配已經(jīng)被用在數(shù)據(jù)庫(kù)系統(tǒng)中。
[0005] 存在使用指令選擇算法的其它技術(shù),所述指令選擇算法利用樹型模式匹配來調(diào)整 代碼以包括低開銷指令。特別地,自底向上的重寫系統(tǒng)(或BURS)算法可以被用來通過迭代 地匹配與輸入代碼(例如,應(yīng)用、例程等等)有關(guān)的輸入樹內(nèi)的各個(gè)子樹以便發(fā)現(xiàn)最佳開銷 指令集(即,覆蓋整棵樹并且還提供最低開銷/最高利益的指令的組合),來確定針對(duì)輸入代 碼的最佳指令集?;谀J狡ヅ洌梢陨捎糜谠谟?jì)算設(shè)備上執(zhí)行的新的、改進(jìn)的指令集。
[0006] 但是,當(dāng)對(duì)使用基于圖形表示的復(fù)雜的代碼的部分進(jìn)行卸載時(shí),已知的技術(shù)可能 是不適合的。換言之,現(xiàn)有的技術(shù)可能不使用代碼的有向非循環(huán)表示進(jìn)行匹配來識(shí)別用于 異構(gòu)多核或分布式系統(tǒng)的最佳卸載方式的編譯器后端解決方案。
【發(fā)明內(nèi)容】
[0007] 在各個(gè)方面中,計(jì)算設(shè)備可以執(zhí)行用于當(dāng)可以自動(dòng)地確定輸入代碼的部分非常適 合于輔助處理器時(shí),將該輸入代碼的部分從CPU或應(yīng)用處理器("第一處理器")卸載到輔助 處理器的方法。一個(gè)方面方法可以包括:生成輸入代碼的基于圖形的中間表示,其中,輸入 代碼的基于圖形的中間表示可以是有向非循環(huán)圖(DAG),將每一個(gè)節(jié)點(diǎn)或節(jié)點(diǎn)的組合與預(yù) 定義的語法中的一種或多種模式進(jìn)行比較,其中每一種模式可以是DAG模式并且可以與開 銷度量相關(guān)聯(lián),基于比較來識(shí)別部分地覆蓋所述輸入代碼的基于圖形的中間表示的模式集 合,以及將輸入代碼的片段從第一處理器卸載到輔助處理器,所述輸入代碼的片段與所識(shí) 別的模式集合中具有最佳累積效應(yīng)的語法模式的組合相關(guān)聯(lián)。在一個(gè)方面中,將每一個(gè)節(jié) 點(diǎn)或節(jié)點(diǎn)的組合與預(yù)定義的語法中的一種或多種模式進(jìn)行比較可以包括:將每一個(gè)節(jié)點(diǎn)或 節(jié)點(diǎn)的組合與被存儲(chǔ)在啟發(fā)式表格中的模式信息進(jìn)行比較。在一個(gè)方面中,該計(jì)算設(shè)備可 以包括片上系統(tǒng)。在一個(gè)方面中,所述輔助處理器可以是數(shù)字信號(hào)處理器(DSP)和圖形處理 單元(GPU)中的一種。在一個(gè)方面中,已知所述預(yù)定義的語法中的模式非常適合于輔助處理 器。在一個(gè)方面中,最佳累積效應(yīng)可以是最低累積開銷和最高累積利益中的一種。在一個(gè)方 面中,該方法還可以包括:基于所述每一個(gè)節(jié)點(diǎn)或所述節(jié)點(diǎn)的組合與所述預(yù)定義的語法中 的一種或多種模式的比較來生成用于向開發(fā)者呈現(xiàn)的信息,所述信息指示可以被配置用于 輔助處理器的輸入代碼的片段。
[0008] 在另一個(gè)方面中,被配置為當(dāng)可以自動(dòng)地確定輸入代碼的部分非常適合于輔助處 理器時(shí)對(duì)該輸入代碼的部分進(jìn)行卸載的計(jì)算設(shè)備可以包括:用于執(zhí)行上面描述的方面方法 的功能的單元。
[0009] 在另一個(gè)方面中,被配置為當(dāng)可以自動(dòng)地確定輸入代碼的部分非常適合于輔助處 理器時(shí)對(duì)該輸入代碼的部分進(jìn)行卸載的計(jì)算設(shè)備可以包括:存儲(chǔ)器、輔助處理器、以及耦合 到所述存儲(chǔ)器和所述輔助處理器的處理器,其中所述處理器可以被配置有用于執(zhí)行上面描 述的方面方法的操作的處理器可執(zhí)行指令。
[0010] 在另一個(gè)方面中,一種非暫時(shí)性處理器可讀存儲(chǔ)介質(zhì),其具有被存儲(chǔ)在其上的處 理器可執(zhí)行軟件指令,所述處理器可執(zhí)行軟件指令被配置為使處理器執(zhí)行用于當(dāng)可以自動(dòng) 地確定輸入代碼的部分非常適合于輔助處理器時(shí)計(jì)算設(shè)備對(duì)該輸入代碼的部分進(jìn)行卸載 的操作,其中所存儲(chǔ)的操作包括上面描述的方面方法的操作。
【附圖說明】
[0011] 被并入本文并且構(gòu)成本說明書的一部分的附圖示出了本發(fā)明的示例性方面,并且 連同上面給出的概括描述以及下面給出的【具體實(shí)施方式】用來解釋本發(fā)明的特征。
[0012] 圖1是示出了用于基于有向非循環(huán)圖(DAG)模式匹配來將用于執(zhí)行的代碼從CPU或 應(yīng)用處理器卸載到輔助處理器的方面方法的過程流程圖。
[0013] 圖2是示出了用于基于有向非循環(huán)圖(DAG)模式匹配來將用于執(zhí)行的代碼從CPU或 應(yīng)用處理器卸載到輔助處理器的另一個(gè)方面方法的過程流程圖。
[0014] 圖3是示出了適合于與各個(gè)方面一起使用的示例性語法和代碼輸入DAG的圖。
[0015]圖4是示出了基于DAG模式匹配來將用于執(zhí)行的代碼部分從CPU或應(yīng)用處理器卸載 到輔助處理器的方面方法的過程流程圖。
[0016] 圖5是示出了適合于與各個(gè)方面一起使用的示例性語法和代碼輸入DAG的圖。
[0017] 圖6是適合于與各個(gè)方面一起使用的智能電話型移動(dòng)計(jì)算設(shè)備的部件框圖。
【具體實(shí)施方式】
[0018] 將參照附圖來詳細(xì)地描述各個(gè)方面。在任何可能的情況下,將貫穿附圖使用相同 的附圖標(biāo)記來指代相同的或者類似的部件。對(duì)于特定示例和實(shí)現(xiàn)方式的提及是出于說明性 的目的的,而不旨在限制本發(fā)明或者權(quán)利要求的范圍。
[0019] 本文使用詞語"示例性的"來意指"充當(dāng)示例、實(shí)例或說明"。本文中被描述為"示例 性的"任何實(shí)現(xiàn)方式不必然地被解釋為優(yōu)選的或者比其它實(shí)現(xiàn)方式具有優(yōu)勢(shì)。
[0020] 本文使用術(shù)語"移動(dòng)計(jì)算設(shè)備"或"計(jì)算設(shè)備"來指代下列各項(xiàng)中的任何一項(xiàng)或者 全部:蜂窩電話、智能電話(例如,iPhone?)、手寫電腦(web-pad)、平板計(jì)算機(jī)、具備互聯(lián) 網(wǎng)能力的蜂窩電話、具備WiFi能力的電子設(shè)備、個(gè)人數(shù)據(jù)助理(PDA)、膝上型計(jì)算機(jī)、個(gè)人計(jì) 算機(jī)、以及被裝備有至少應(yīng)用處理器(或通用處理器)和輔助處理器(例如,數(shù)字信號(hào)處理 器、協(xié)處理器、片上系統(tǒng)上的另一個(gè)處理器等等)的類似的電子設(shè)備。
[0021] 各個(gè)方面提供了用于基于模式匹配表示輸入代碼的有向非循環(huán)圖(DAG)來將用于 執(zhí)行的該輸入代碼的部分從CHJ或應(yīng)用處理器(在本文通常被稱為"第一處理器")卸載到計(jì) 算設(shè)備內(nèi)的輔助處理器的方法。計(jì)算設(shè)備可以執(zhí)行該方面方法,以自動(dòng)地和高效地檢測(cè)該 代碼中已知對(duì)于利用特定類型的內(nèi)核(例如,DSP、GPU等等)來進(jìn)行處理有好處的感興趣的 模式。計(jì)算設(shè)備可以自動(dòng)地識(shí)別部分地覆蓋輸入代碼的輸入數(shù)據(jù)流程圖的DAG模式集合,并 且可以當(dāng)在輔助處理器上執(zhí)行時(shí)對(duì)代碼中與最小開銷相關(guān)聯(lián)的部分進(jìn)行卸載,或者以其它 方式從卸載中提供最高的利益。這些方面方法可以在利用典型的輸入代碼(例如,典型的 Java語言源代碼)進(jìn)行工作的計(jì)算設(shè)備中實(shí)現(xiàn),并且因此可能不需要由代碼開發(fā)者進(jìn)行任 何特殊的預(yù)處理或者編排格式(例如,手動(dòng)地添加指示符、API調(diào)用、預(yù)定義的代碼格式化等 等)。實(shí)現(xiàn)各個(gè)方面的計(jì)算設(shè)備可以自動(dòng)地識(shí)別非常適合于卸載到輔助處理器的代碼部分, 并且使用傳統(tǒng)的機(jī)制來發(fā)送、傳送或者以別的方式規(guī)定對(duì)這樣識(shí)別的非常適合的代碼的卸 載。
[0022] 各個(gè)方面方法利用將DAG的節(jié)點(diǎn)與預(yù)定義的語法模式(其也包括DAG)進(jìn)行比較的 模式匹配算法。各個(gè)方面方法可以由計(jì)算設(shè)備來執(zhí)行,以確定代碼的中間表示(IR),并且生 成可以通過模式匹配算法來處理的DAG表示。這樣的算法可以嘗試將代碼的DAG表示中的模 式與被存儲(chǔ)在存儲(chǔ)器中的DAG模式(被稱為"語法")進(jìn)行匹配,所述被存儲(chǔ)在存儲(chǔ)器中的DAG 模式已知非常適合于在輔助處理器上執(zhí)行??梢詫?duì)DAG表示進(jìn)行修整,使得不存在循環(huán)。例 如,語法中的DAG模式可以與在數(shù)字信號(hào)處理器(DSP)上高效地執(zhí)行的某些簡(jiǎn)單的功能相對(duì) 應(yīng)。計(jì)算設(shè)備可以識(shí)別覆蓋整個(gè)DAG的語法模式(例如,表示輸入代碼中的代碼循環(huán)或方法 的DAG),并且可以基于與語法模式相關(guān)聯(lián)的開銷(或利益)來識(shí)別最佳匹配模式。例如,可以 將輸入代碼的特定DAG與語法內(nèi)的若干模式進(jìn)行匹配;但是,匹配模式中的一種匹配模式可 以具有在輔助處理器上執(zhí)行相關(guān)聯(lián)的代碼的相對(duì)低的開銷。計(jì)算設(shè)備可以執(zhí)行模式匹配, 使得在輸入IR代碼內(nèi)一次檢測(cè)預(yù)定義的語法中的多個(gè)已知的DAG模式。在各個(gè)方面中,計(jì)算 設(shè)備的操作可以在運(yùn)行時(shí)間執(zhí)行,例如,結(jié)合即時(shí)(JIT)編譯器一起執(zhí)行。換言之,利用與輸 入代碼相關(guān)聯(lián)的節(jié)點(diǎn)和邊的圖(即,在邊方向和節(jié)點(diǎn)類型不能被分離情況下的DAG),計(jì)算設(shè) 備可以執(zhí)行模式匹配操作,以尋找該圖中的節(jié)點(diǎn)/邊與語法內(nèi)的模式的精確匹配。從任一節(jié) 點(diǎn)類型(例如,在模式中的位置處的類型A或類型B)的意義上說,匹配模式本身可以是靈活 的。該精確匹配是針對(duì)輸入代碼的子圖上的完全模式的。所以,計(jì)算設(shè)備可以從語法中發(fā)現(xiàn) 均部分地覆蓋該輸入的、但是完全地覆蓋該輸入的子圖的模式。
[0023] 在一個(gè)方面中,對(duì)于輸入代碼的DAG中的每一個(gè)節(jié)點(diǎn)而言,計(jì)算設(shè)備可以計(jì)算與該 節(jié)點(diǎn)連同預(yù)定義的語法的匹配規(guī)則/模式相匹配的所有可能"類型"的表格(如可以在BURS 解決方案中類似地進(jìn)行)。計(jì)算設(shè)備還可以自動(dòng)地識(shí)別和/或存儲(chǔ)針對(duì)以每一個(gè)節(jié)點(diǎn)為根的 模式的累積開銷(如