專利名稱:一種基于Atom處理器的指令并行分發(fā)方法
技術領域:
本發(fā)明涉及嵌入式系統(tǒng)高性能并行計算設計領域,尤其涉及一種基于Atom處理 器的指令并行分發(fā)方法。
背景技術:
隨著半導體技術的發(fā)展,單塊硅片上所能容納的晶體管數(shù)量迅猛增長,CPU技術已 經(jīng)進入了多核時代。目前市場上的主流工藝已經(jīng)能使晶體管內(nèi)的溝道長度達到了 45nm,而 即將投產(chǎn)的新一代工藝則能使晶體管內(nèi)的溝道長度達到32nm。根據(jù)摩爾定律,可以預見半 導體工藝仍將有繼續(xù)發(fā)展的巨大空間。先進的工藝固然為CPU技術的發(fā)展提供了優(yōu)異的條 件,但也帶來了對傳統(tǒng)理論和技術的一些思考。在多核時代下,提高程序執(zhí)行的并行度已經(jīng)成為了一個重要的問題。在傳統(tǒng)的馮 諾依曼結(jié)構(gòu)之下,計算機順序執(zhí)行指令,完成既定工作。這一步驟雖然經(jīng)過多次重大革新, 但其本質(zhì)依然沒有改變。在多核CPU這種要求充分利用程序并行度才能發(fā)揮性能優(yōu)勢的體 系結(jié)構(gòu)中,順序執(zhí)行指令的方式逐漸顯露出了它的弊病。這就要求研究者盡可能地挖掘現(xiàn) 有程序的可并行的潛力,把系統(tǒng)的效率進一步提高。目前的程序無法很好地耦合多核體系結(jié)構(gòu)是一個重要的問題。硬件發(fā)展受制于內(nèi) 存的局限性也沒有很好地解決。多核需要程序有很高的并行化程度才能發(fā)揮它的性能優(yōu) 勢。因為對單個核來講,它自身的性能并沒有非常大的提高。大多數(shù)研究工作都著眼于如 何更好的分發(fā)程序以獲取較好的并行程度,如何改進多核體系架構(gòu)以提高通訊帶寬,降低 緩存的缺失率(又稱cache miss rate)等等。事實上,多核的發(fā)展還并不成熟。尤其是當核的數(shù)量大大增加后,核間通訊的代價 會導致大量的資源浪費。除了盡量降低通訊代價之外,一個好的分發(fā)指令的策略會使得核 間通訊總量大大降低。如何分發(fā)是一個已經(jīng)被研究了很長一段時間的問題。它必須考慮體 系結(jié)構(gòu),數(shù)據(jù)依賴,控制依賴等條件。分發(fā)可以挖掘程序的并行度,使得多核體系結(jié)構(gòu)的高 度并行化的優(yōu)勢得以發(fā)揮,又可以降低頻繁的核間數(shù)據(jù)通信,提高性能。對核間路由結(jié)構(gòu)進 行考量的分發(fā)還可以加快通信速度。
發(fā)明內(nèi)容
本發(fā)明是針對多核體系結(jié)構(gòu),從多核體系結(jié)構(gòu)和現(xiàn)有程序耦合度不足這一現(xiàn)實出 發(fā),以提高程序并行度、挖掘程序并行潛力、降低核間通訊量為目的,提出一種基于Atom處 理器的指令并行分發(fā)方法,該方法是一套能夠改進程序運行效率、減少核間通訊量和挖掘 程序可并行潛力的架構(gòu)。為實現(xiàn)本發(fā)明的上述目的,本發(fā)明采用的技術方案如下一種基于Atom處理器的指令并行分發(fā)方法,其特征在于包括如下步驟1)從第一條指令開始,逐條掃描指令,將有控制依賴的指令予以標記;2)從第一條指令開始,逐條分析數(shù)據(jù)依賴,其步驟如下
2. 1當當前指令之前沒有被標記過的指令,且當前指令與當前指令之前的指令存 在數(shù)據(jù)依賴關系,則對當前指令予以標記,然后進入下一條指令,按步驟2. 2繼續(xù)分析數(shù)據(jù) 依賴;2. 2當當前指令與當前指令的前一條已經(jīng)標記的指令以及該前一條已經(jīng)標記的指 令與當前指令之間的指令存在數(shù)據(jù)依賴關系時,則對當前指令予以標記,然后進入下一條 指令,仍按照該步驟b)繼續(xù)分析,直至將所有有數(shù)據(jù)依賴的指令均予以標記;所述控制依賴的指令和數(shù)據(jù)依賴的指令的標記是相同的,均是將存在依賴的指令 的標志位賦值為“1”;3)從第一條指令開始逐條掃描,按如下步驟進行分發(fā)處理3. 1將第一條有標記的指令之前的所有指令并行分發(fā)到不同的核上運行,然后進 入下一條未分發(fā)的指令,按步驟3. 2繼續(xù)進行分發(fā)處理;3. 2從當前未被分發(fā)的第一條指令起開始掃描,遇到下一條有標記的指令時,將下 一條有標記的指令之前所有未被分發(fā)的指令并行分發(fā)到不同的核上運行,然后進入下一條 未分發(fā)的指令,仍按照該步驟3. 2繼續(xù)執(zhí)行分發(fā)處理;3. 3當當前未被分發(fā)的第一條指令為最后一條有標記的指令,則將所有未被分發(fā) 的指令并行分發(fā)到不同的核上運行,分發(fā)結(jié)束。本發(fā)明的方法是針對API架構(gòu)的特點而設計,能夠去除訪問沖突,提高執(zhí)行效率。 與背景技術相比,本發(fā)明具有如下優(yōu)點1)簡便性。本系統(tǒng)的算法實現(xiàn)簡單,使用的是一種在線算法,只需要很小的存儲空 間就能工作。2)無數(shù)據(jù)沖突。本系統(tǒng)所使用的分發(fā)算法,在標記相關依賴指令后就能迅速分發(fā) 到各個核上運行。由于本系統(tǒng)掃描分發(fā)后的每一個指令集合之內(nèi)都不再有任何依賴,因此 此時分發(fā)到各個核心上運行的指令不存在數(shù)據(jù)沖突關系,使得核間通訊總量大大下降,提 高了系統(tǒng)整體性能。3)高并行度。本系統(tǒng)的并行粒度為指令級,且對整個程序段都進行了掃描標記,因 此程序的每一個部分都在本系統(tǒng)下實現(xiàn)了并行優(yōu)化,大大提高了原有程序的并行度。
圖1是本發(fā)明實施例中的指令序列圖;圖2是本發(fā)明實施例中的指令數(shù)據(jù)流圖;圖3是本發(fā)明實施例中的指令依賴標記圖;圖4是本發(fā)明實施例中的指令分發(fā)依據(jù)時間關系在核上的分布圖。
具體實施例方式下面,以一個程序段為例,對本發(fā)明具體實施方式
作具體說明。本實施例的基于Atom處理器的指令并行分發(fā)方法,其具體實現(xiàn)過程如下圖1是一段載入數(shù)據(jù)并進行計算的指令的操作。為了直觀地看到指令間的依賴關 系,這里不列出匯編代碼,而用具體的指令操作代替。每一個操作都可以對應一條匯編指 令。為直觀起見,每一條指令都有編號。從0開始,也與計算機的計數(shù)規(guī)律相對應。這段程
4序主要做了求和,移位和跳轉(zhuǎn)等操作。從圖1中可以清晰地看出程序所要使用的每一個寄存器和數(shù)據(jù)依賴。該程序段執(zhí) 行的操作是從內(nèi)存中載入四個數(shù)到寄存器$t0 $t3中(第0至第3條指令的操作)。將 這四個數(shù)進行相加后,輸出到$16,并將其移位(第4至第9條指令的操作)。最后,在第10 條,程序跳轉(zhuǎn)到地址為10000的指令處。在串行執(zhí)行的處理器中,執(zhí)行這段程序需要11個 指令周期,但對其進行并行優(yōu)化后可以大大改善。在這里,可以看到以下這些數(shù)據(jù)依賴關系首先,掃描控制依賴,可以看到,在本實施例中,控制依賴只存在第10條。首先將 第10條指令標記為依賴。所述有控制依賴的指令,是指可能引起程序不按順序執(zhí)行的指 令,如跳轉(zhuǎn)和分支指令。然后,分析數(shù)據(jù)依賴。第4條指令需要依賴第0和第1條指令的執(zhí)行結(jié)果才能運 行,第5條指令依賴第2和第3條。第6條指令依賴第4條,第7條指令依賴第5條,第8 條指令依賴第6和第7條,第9條指令依賴第8條。對數(shù)據(jù)依賴進行分析后,可得到如圖2 所示的數(shù)據(jù)流圖。從圖2的數(shù)據(jù)流圖可以清晰地看到它的并行性。位于數(shù)據(jù)流圖第一行的第0 3 條指令顯然可以并行執(zhí)行。位于第二行的兩個虛線框內(nèi)的指令之間也可以并行運行,最后 一個虛線框內(nèi)的指令存在依賴,不可以并行執(zhí)行。從圖4中可以看到,運行這11條指令需 要6個指令周期,最大并行度為4,也就是第一行同時有四個指令并行執(zhí)行。因此,可以看到第4條,第6條,第8條,第9條指令和第10條指令是存在依賴的 指令。在掃描過程中,它們被標記成“依賴”,如圖3所示。在實際操作中,通常是將存在依 賴的指令的標志位賦值為“ 1 ”。下面,對指令進行分發(fā)處理。當這段被標記上依賴標志位的程序運行時,首先這段指令代碼被讀入指令分發(fā)結(jié) 構(gòu),指令分發(fā)結(jié)構(gòu)將識別到依賴位標記為“1”的指令。在這段程序中,第一條被讀入的依賴 指令是第4條。因此,第0條到第3條被發(fā)射到四個核上。如圖2中虛線框所示。每個虛 線框表示一個運行該指令的核。可見第0到第3條被發(fā)射到四個不同的核上運行。這四條 指令之間不存在數(shù)據(jù)依賴,可以并行運行,且該四個不同的核可以同時訪問寄存器。隨后,指令分發(fā)結(jié)構(gòu)掃描到第6條指令。這說明第4條指令和第5條指令之間沒 有依賴關系,可以被并行運行。因此指令發(fā)射結(jié)構(gòu)將第4條和第5條指令發(fā)射到兩個不同 的核上。與前一個周期的運行情況類似,第4條和第5條這兩條指令也不存在數(shù)據(jù)依賴性, 可以并行運行。指令分發(fā)結(jié)構(gòu)繼續(xù)掃描,遇到第8條指令,發(fā)現(xiàn)它的依賴標記為“ 1”,說明該 指令與前面的指令存在數(shù)據(jù)依賴。則第6條和第7條指令被發(fā)射出去。第6條和第7條指 令之間沒有依賴關系,可以并行運行。接著指令分發(fā)結(jié)構(gòu)發(fā)現(xiàn)第9條指令也存在依賴。這 說明第8條和第9條指令存在依賴,則發(fā)射第8條后,再發(fā)射第9條。如果這兩條指令同時 運行,就會產(chǎn)生數(shù)據(jù)沖突。最后發(fā)射第10條指令。如圖2所示。由圖2可見,有六條指令存在依賴關系。每一條指令所要檢測的依賴從它前一條 依賴指令開始算起。比如第6條指令的依賴關系只檢測第4和第5條。因為第4條指令是 它之前一條有依賴的指令。類似的情況還有,第8條指令僅檢查與第6和第7條指令的數(shù) 據(jù)依賴性,因為第6條指令是它之前的一條依賴指令。第9條指令僅檢查第8條的數(shù)據(jù)依 賴性,因為第8條指令是它之前的一條依賴指令。指令發(fā)射時就根據(jù)依賴位的標識,以依賴指令為界,分批發(fā)射。在本例中,第0到第3條被指令分發(fā)結(jié)構(gòu)同時發(fā)射到四個核上運行, 它們由于沒有數(shù)據(jù)依賴,可以并行運行。與此類似,同樣情況的4和5,6和7也可以被同時 發(fā)射并行運行。 指令分發(fā)結(jié)構(gòu)根據(jù)這一依賴掃描結(jié)果發(fā)射指令,在一個多于四核的處理器上,指 令執(zhí)行順序如圖4所示。X軸代表時鐘周期,可以看到第一個周期有4條指令并行執(zhí)行,第 2個和第3個周期有2條指令并行執(zhí)行,第4、第5和第6周期均為單指令執(zhí)行。
權利要求
一種基于Atom處理器的指令并行分發(fā)方法,其特征在于包括如下步驟1)從第一條指令開始,逐條掃描指令,將有控制依賴的指令予以標記;2)從第一條指令開始,逐條分析數(shù)據(jù)依賴,其步驟如下2.1當當前指令之前沒有被標記過的指令,且當前指令與當前指令之前的指令存在數(shù)據(jù)依賴關系,則對當前指令予以標記,然后進入下一條指令,按步驟2.2繼續(xù)分析數(shù)據(jù)依賴;2.2當當前指令與當前指令的前一條已經(jīng)標記的指令以及該前一條已經(jīng)標記的指令與當前指令之間的指令存在數(shù)據(jù)依賴關系時,則對當前指令予以標記,然后進入下一條指令,仍按照該步驟b)繼續(xù)分析,直至將所有有數(shù)據(jù)依賴的指令均予以標記;所述控制依賴的指令和數(shù)據(jù)依賴的指令的標記是相同的,均是將存在依賴的指令的標志位賦值為“1”;3)從第一條指令開始逐條掃描,按如下步驟進行分發(fā)處理3.1將第一條有標記的指令之前的所有指令并行分發(fā)到不同的核上運行,然后進入下一條未分發(fā)的指令,按步驟3.2繼續(xù)進行分發(fā)處理;3.2從當前未被分發(fā)的第一條指令起開始掃描,遇到下一條有標記的指令時,將下一條有標記的指令之前所有未被分發(fā)的指令并行分發(fā)到不同的核上運行,然后進入下一條未分發(fā)的指令,仍按照該步驟3.2繼續(xù)執(zhí)行分發(fā)處理;3.3當當前未被分發(fā)的第一條指令為最后一條有標記的指令,則將所有未被分發(fā)的指令并行分發(fā)到不同的核上運行,分發(fā)結(jié)束。
全文摘要
本發(fā)明公開了一種基于Atom處理器的指令并行分發(fā)方法,它包括如下步驟逐條掃描指令,將有控制依賴的指令予以標記;逐條分析數(shù)據(jù)依賴,若當前指令與當前指令的前一條已經(jīng)標記的指令以及該前一條已經(jīng)標記的指令與當前指令之間的指令存在數(shù)據(jù)依賴關系,則對當前指令予以標記;將當前第一條未被分發(fā)的指令與下一條有標記的指令之前所有未被分發(fā)的指令并行分發(fā)到不同的核上運行。本發(fā)明能夠改進程序運行效率,減少核間通訊量,可以用來挖掘多核處理器的潛在計算能力。
文檔編號G06F9/38GK101986265SQ201010525030
公開日2011年3月16日 申請日期2010年10月29日 優(yōu)先權日2010年10月29日
發(fā)明者居立晗, 胡同森, 陳天洲, 黃文 申請人:浙江大學