本發(fā)明涉及數(shù)據(jù)流體系結(jié)構(gòu)技術(shù)領(lǐng)域,特別涉及一種流式數(shù)據(jù)流體系結(jié)構(gòu)關(guān)鍵路徑的加速方法、加速系統(tǒng)、裝置及芯片。
背景技術(shù):
當(dāng)前超級(jí)計(jì)算領(lǐng)域首功耗限制在推向e級(jí)計(jì)算這一節(jié)點(diǎn)時(shí)遇到了巨大的阻力,數(shù)據(jù)流體系結(jié)構(gòu)以其優(yōu)秀的并行特點(diǎn)和性能功耗比再次獲得了廣泛的關(guān)注。數(shù)據(jù)流體系結(jié)構(gòu)計(jì)算大規(guī)模的科學(xué)計(jì)算,首先需要使用數(shù)據(jù)流語(yǔ)言編寫可在數(shù)據(jù)流體系結(jié)構(gòu)中執(zhí)行的程序;之后需要將數(shù)據(jù)流語(yǔ)言編寫的程序翻譯成數(shù)據(jù)流圖,表明程序中模塊之間的依賴關(guān)系以及指令之間的依賴關(guān)系;得到數(shù)據(jù)流圖之后,需要將數(shù)據(jù)流圖映射到物理的數(shù)據(jù)流處理單元上;最后需要計(jì)算的數(shù)據(jù),以流的方式源源不斷地注入數(shù)據(jù)流處理器中執(zhí)行。數(shù)據(jù)流體系中的數(shù)據(jù)可以直接在指令之間傳遞,緩解了傳統(tǒng)馮諾依曼結(jié)構(gòu)中存在的指令相關(guān)和數(shù)據(jù)相關(guān)問題帶來的時(shí)延和功耗問題,提高了指令的并行度。
數(shù)據(jù)流內(nèi)核部分需要支持?jǐn)?shù)據(jù)流指令到數(shù)據(jù)流圖的正確映射,傳統(tǒng)的映射方式是將數(shù)據(jù)流圖中的操作(這里的操作,既可以指單條指令,也可以指多條順序指令構(gòu)成的指令集,可以使指令、模塊、任務(wù)等粒度)與數(shù)據(jù)流圖中的節(jié)點(diǎn)一一映射(一條操作只對(duì)應(yīng)數(shù)據(jù)流圖中的一個(gè)節(jié)點(diǎn))。在一個(gè)數(shù)據(jù)流圖當(dāng)中,不同的節(jié)點(diǎn)的執(zhí)行效率是不同的,在數(shù)據(jù)流圖中常常存在著有相同后繼節(jié)點(diǎn)的不同節(jié)點(diǎn),例如加法操作節(jié)點(diǎn)中的2個(gè)操作數(shù)來自于不同的2個(gè)前驅(qū)節(jié)點(diǎn)(前驅(qū)節(jié)點(diǎn)可能是訪存節(jié)點(diǎn),也可能是其他的計(jì)算幾點(diǎn)等)。由于節(jié)點(diǎn)之間的執(zhí)行速率不同,那么存在節(jié)點(diǎn)中需要執(zhí)行的源數(shù)據(jù)不能同時(shí)到達(dá),而節(jié)點(diǎn)需要所有源數(shù)據(jù)到達(dá)之后才能夠執(zhí)行。那么節(jié)點(diǎn)的執(zhí)行的開始時(shí)間取決于最晚到達(dá)節(jié)點(diǎn)源數(shù)據(jù)的時(shí)間,而數(shù)據(jù)流動(dòng)慢的相互間存在依賴的節(jié)點(diǎn)集稱之為關(guān)鍵路徑。如圖1所示,如果節(jié)點(diǎn)3較節(jié)點(diǎn)2執(zhí)行速率慢,那么將路徑1-3-4稱之為關(guān)鍵路徑。關(guān)鍵路徑會(huì)造成數(shù)據(jù)流圖中的節(jié)點(diǎn)的功能部件利用率低,并且也直接決定單個(gè)數(shù)據(jù)流圖中的數(shù)據(jù)流圖執(zhí)行效率。
為了能夠緩解數(shù)據(jù)流圖中關(guān)鍵操作(關(guān)鍵路徑上的低效率的操作)給程序帶來的長(zhǎng)延遲的影響,提高數(shù)據(jù)流圖中節(jié)點(diǎn)中功能部件的執(zhí)行效率,通常采用的方法是將整個(gè)數(shù)據(jù)流圖復(fù)制多份,形成多個(gè)操作數(shù)存儲(chǔ)空間,給數(shù)據(jù)提供了多條通路,使得程序中不同的操作數(shù)存儲(chǔ)空間能夠并行的執(zhí)行,掩蓋掉關(guān)鍵路徑中的關(guān)鍵操作帶來的延遲影響,如圖1所示。但是使用復(fù)制多套數(shù)據(jù)流圖的方法存在著以下2個(gè)關(guān)鍵問題:
1、復(fù)制多個(gè)操作數(shù)存儲(chǔ)空間的方法并不能解決操作數(shù)存儲(chǔ)空間中關(guān)鍵操作執(zhí)行慢的問題。采用上面的方法,是給數(shù)據(jù)提供了多條可走的通路,但是對(duì)于每條通路而言,數(shù)據(jù)通路執(zhí)行效率還是沒有改變的。
2、采用多個(gè)操作數(shù)存儲(chǔ)空間的方法會(huì)導(dǎo)致存儲(chǔ)空間爆炸。采用這個(gè)方法,當(dāng)關(guān)鍵操作的執(zhí)行效率足夠慢時(shí),必須要足夠多的儲(chǔ)存空間來掩蓋關(guān)鍵操作帶來的延遲影響。而一個(gè)操作數(shù)存儲(chǔ)空間為整個(gè)數(shù)據(jù)流圖的物理存儲(chǔ)空間,并且會(huì)對(duì)數(shù)據(jù)流處理器之間傳輸數(shù)據(jù)帶來壓力。當(dāng)需要足夠多的操作數(shù)存儲(chǔ)空間時(shí),會(huì)導(dǎo)致存儲(chǔ)空間爆炸。
基于以上存在的問題,傳統(tǒng)的加速關(guān)鍵路徑操作的方法對(duì)硬件的要求巨大,而且并沒有從根本上緩解單個(gè)操作數(shù)存儲(chǔ)空間的關(guān)鍵路徑的執(zhí)行效率,需要一種在可接受的存儲(chǔ)空間的范圍內(nèi),對(duì)數(shù)據(jù)流圖關(guān)鍵路徑的加速方法。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)的不足,本發(fā)明提出一種加速數(shù)據(jù)流圖關(guān)鍵路徑的方法,系統(tǒng)及其裝置。
本發(fā)明首先提供一種流式數(shù)據(jù)流圖關(guān)鍵路徑的加速方法,包括以下步驟:
確定數(shù)據(jù)流中的關(guān)鍵節(jié)點(diǎn);
在所述關(guān)鍵節(jié)點(diǎn)之前增加前驅(qū)節(jié)點(diǎn),在所述關(guān)鍵節(jié)點(diǎn)之后增加后繼節(jié)點(diǎn);
復(fù)制關(guān)鍵節(jié)點(diǎn)形成多個(gè)關(guān)鍵子節(jié)點(diǎn);
待傳輸數(shù)據(jù)經(jīng)過所述前驅(qū)節(jié)點(diǎn)后,選擇其中一個(gè)可用的關(guān)鍵子節(jié)點(diǎn),并經(jīng)由選定的所述關(guān)鍵子節(jié)點(diǎn)從所述后繼節(jié)點(diǎn)中輸出所述待傳輸數(shù)據(jù)。
根據(jù)本發(fā)明提出的流式數(shù)據(jù)流圖關(guān)鍵路徑的加速方法,其中,所述前驅(qū)節(jié)點(diǎn)包括第一標(biāo)志位,第一選擇邏輯和第一轉(zhuǎn)發(fā)邏輯;所述第一標(biāo)志位用于表示所述關(guān)鍵子節(jié)點(diǎn)能否接收數(shù)據(jù),所述第一選擇邏輯根據(jù)所述第一標(biāo)志位從多個(gè)關(guān)鍵子節(jié)點(diǎn)中選擇一個(gè)可用的關(guān)鍵子節(jié)點(diǎn),所述第一轉(zhuǎn)發(fā)邏輯用于接收所述第一選擇邏輯選定的關(guān)鍵子節(jié)點(diǎn),并將待傳輸數(shù)據(jù)轉(zhuǎn)發(fā)至所述選定的關(guān)鍵子節(jié)點(diǎn)。
根據(jù)本發(fā)明提出的流式數(shù)據(jù)流圖關(guān)鍵路徑的加速方法,其中,所述后繼節(jié)點(diǎn)包括第二標(biāo)志位,第二選擇邏輯和第二轉(zhuǎn)發(fā)邏輯;所述第二標(biāo)志位用于表示所述關(guān)鍵子節(jié)點(diǎn)中的數(shù)據(jù)是否有效,所述第二選擇邏輯根據(jù)所述第二標(biāo)志位選擇數(shù)據(jù)有效的關(guān)鍵子節(jié)點(diǎn),所述第二轉(zhuǎn)發(fā)邏輯通過所述第二選擇邏輯選擇的數(shù)據(jù)有效的關(guān)鍵子節(jié)點(diǎn),將待傳輸數(shù)據(jù)通過所述后繼節(jié)點(diǎn)輸出。
根據(jù)本發(fā)明提出的流式數(shù)據(jù)流圖關(guān)鍵路徑的加速方法,其中,當(dāng)其中一個(gè)所述關(guān)鍵子節(jié)點(diǎn)中存有數(shù)據(jù)時(shí),其對(duì)應(yīng)的所述第一標(biāo)志位置為“該關(guān)鍵子節(jié)點(diǎn)不可用”;當(dāng)其中一個(gè)所述關(guān)鍵子節(jié)點(diǎn)中未存有數(shù)據(jù)時(shí),其對(duì)應(yīng)的所述第一標(biāo)志位置為“該關(guān)鍵子節(jié)點(diǎn)可用”;當(dāng)其中一個(gè)所述關(guān)鍵子節(jié)點(diǎn)中存儲(chǔ)的數(shù)據(jù)有效時(shí),其對(duì)應(yīng)的所述第二標(biāo)志位置為“可以轉(zhuǎn)發(fā)該關(guān)鍵節(jié)點(diǎn)的數(shù)據(jù)”;當(dāng)其中一個(gè)所述關(guān)鍵子節(jié)點(diǎn)中存儲(chǔ)的數(shù)據(jù)無效時(shí),其對(duì)應(yīng)的所述第二標(biāo)志位置為“不能轉(zhuǎn)發(fā)該關(guān)鍵節(jié)點(diǎn)的數(shù)據(jù)”。
本發(fā)明還提供一種流式數(shù)據(jù)流圖關(guān)鍵路徑的加速系統(tǒng),包括:
多個(gè)關(guān)鍵子節(jié)點(diǎn),由數(shù)據(jù)流中的一個(gè)關(guān)鍵節(jié)點(diǎn)復(fù)制而成,所述多個(gè)關(guān)鍵子節(jié)點(diǎn)能夠執(zhí)行相同的操作;
前驅(qū)節(jié)點(diǎn),位于所述多個(gè)關(guān)鍵子節(jié)點(diǎn)之前,用于從所述多個(gè)關(guān)鍵子節(jié)點(diǎn)中選擇可用的關(guān)鍵子節(jié)點(diǎn)以傳輸數(shù)據(jù);
后置節(jié)點(diǎn),位于所述多個(gè)關(guān)鍵子節(jié)點(diǎn)之前,用于從所述多個(gè)關(guān)鍵子節(jié)點(diǎn)中選擇數(shù)據(jù)有效的關(guān)鍵子節(jié)點(diǎn),并將其中的有效數(shù)據(jù)傳送出去。
根據(jù)本發(fā)明提出的流式數(shù)據(jù)流圖關(guān)鍵路徑的加速系統(tǒng),其中,所述前驅(qū)節(jié)點(diǎn)包括第一標(biāo)志位,第一選擇邏輯和第一轉(zhuǎn)發(fā)邏輯;所述第一標(biāo)志位用于表示所述關(guān)鍵子節(jié)點(diǎn)能否接收數(shù)據(jù),所述第一選擇邏輯根據(jù)所述第一標(biāo)志位從多個(gè)關(guān)鍵子節(jié)點(diǎn)中選擇一個(gè)可用的關(guān)鍵子節(jié)點(diǎn),所述第一轉(zhuǎn)發(fā)邏輯用于接收所述第一選擇邏輯選定的關(guān)鍵子節(jié)點(diǎn),并將待傳輸數(shù)據(jù)轉(zhuǎn)發(fā)至所述選定的關(guān)鍵子節(jié)點(diǎn)。
根據(jù)本發(fā)明提出的流式數(shù)據(jù)流圖關(guān)鍵路徑的加速系統(tǒng),其中,所述后繼節(jié)點(diǎn)包括第二標(biāo)志位,第二選擇邏輯和第二轉(zhuǎn)發(fā)邏輯;所述第二標(biāo)志位用于表示所述關(guān)鍵子節(jié)點(diǎn)中的數(shù)據(jù)是否有效,所述第二選擇邏輯根據(jù)所述第二標(biāo)志位選擇數(shù)據(jù)有效的關(guān)鍵子節(jié)點(diǎn),所述第二轉(zhuǎn)發(fā)邏輯通過所述第二選擇邏輯選擇的數(shù)據(jù)有效的關(guān)鍵子節(jié)點(diǎn),將待傳輸數(shù)據(jù)通過所述后繼節(jié)點(diǎn)輸出。
根據(jù)本發(fā)明提出的流式數(shù)據(jù)流圖關(guān)鍵路徑的加速系統(tǒng),其中,當(dāng)其中一個(gè)所述關(guān)鍵子節(jié)點(diǎn)中存有數(shù)據(jù)時(shí),其對(duì)應(yīng)的所述第一標(biāo)志位置為“該關(guān)鍵子節(jié)點(diǎn)不可用”;當(dāng)其中一個(gè)所述關(guān)鍵子節(jié)點(diǎn)中未存有數(shù)據(jù)時(shí),其對(duì)應(yīng)的所述第一標(biāo)志位置為“該關(guān)鍵子節(jié)點(diǎn)可用”;當(dāng)其中一個(gè)所述關(guān)鍵子節(jié)點(diǎn)中存儲(chǔ)的數(shù)據(jù)有效時(shí),其對(duì)應(yīng)的所述第二標(biāo)志位置為“可以轉(zhuǎn)發(fā)該關(guān)鍵節(jié)點(diǎn)的數(shù)據(jù)”;當(dāng)其中一個(gè)所述關(guān)鍵子節(jié)點(diǎn)中存儲(chǔ)的數(shù)據(jù)無效時(shí),其對(duì)應(yīng)的所述第二標(biāo)志位置為“不能轉(zhuǎn)發(fā)該關(guān)鍵節(jié)點(diǎn)的數(shù)據(jù)”。
本發(fā)明同時(shí)還提供一種包括上述流式數(shù)據(jù)流圖關(guān)鍵路徑的加速系統(tǒng)的裝置。
本發(fā)明同時(shí)還提供一種包括上述流式數(shù)據(jù)流圖關(guān)鍵路徑的加速系統(tǒng)的芯片。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于:
本發(fā)明只對(duì)數(shù)據(jù)流圖當(dāng)中單個(gè)操作數(shù)存儲(chǔ)空間進(jìn)行優(yōu)化,使得單個(gè)操作數(shù)存儲(chǔ)空間當(dāng)中的關(guān)鍵路徑中的關(guān)鍵操作可以并行執(zhí)行,從而縮短了數(shù)據(jù)流圖中關(guān)鍵路徑的執(zhí)行時(shí)間,執(zhí)行效率較傳統(tǒng)結(jié)構(gòu)有明顯優(yōu)勢(shì)。
附圖說明
圖1為傳統(tǒng)數(shù)據(jù)流圖關(guān)鍵路徑加速實(shí)現(xiàn)方式;
圖2為流式數(shù)據(jù)流結(jié)構(gòu)的關(guān)鍵路徑加速方法相對(duì)傳統(tǒng)方法改變;
圖3為map節(jié)點(diǎn)的結(jié)構(gòu)圖;
圖4為merge節(jié)點(diǎn)的結(jié)構(gòu)圖;
圖5為流式數(shù)據(jù)流結(jié)構(gòu)的關(guān)鍵路徑加速方法實(shí)施例。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有付出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
請(qǐng)參閱圖2,其中左邊為傳統(tǒng)的數(shù)據(jù)流體系結(jié)構(gòu),右邊為使用本發(fā)明的方法的得到的新的數(shù)據(jù)流圖。其中圖2左邊的節(jié)點(diǎn)3為關(guān)鍵操作節(jié)點(diǎn),圖2右邊3.1和3.2是關(guān)鍵子節(jié)點(diǎn),并且可以做同樣的操作,子節(jié)點(diǎn)3.1、3.2均連接同一個(gè)map節(jié)點(diǎn)和merge節(jié)點(diǎn)。
本發(fā)明提出的一種加速關(guān)鍵路徑的方法具體包括:
在單個(gè)操作數(shù)存儲(chǔ)空間當(dāng)中,將關(guān)鍵操作節(jié)點(diǎn)復(fù)制多份得到多個(gè)關(guān)鍵子節(jié)點(diǎn)。每一個(gè)關(guān)鍵子節(jié)點(diǎn)可以做相同的操作,但是關(guān)鍵子節(jié)點(diǎn)之間沒有依賴關(guān)系,并且所有關(guān)鍵子節(jié)點(diǎn)具有相同的前驅(qū)節(jié)點(diǎn)(map)和后繼節(jié)點(diǎn)(merge),前驅(qū)節(jié)點(diǎn)和后繼節(jié)點(diǎn)中具有可以識(shí)別數(shù)據(jù)去向/來自于哪個(gè)關(guān)鍵子節(jié)點(diǎn)的標(biāo)志位。復(fù)制多份的關(guān)鍵操作的節(jié)點(diǎn)就是給操作數(shù)存儲(chǔ)空間在關(guān)鍵路徑上提供了多條數(shù)據(jù)通路,對(duì)于每一次的數(shù)據(jù),其流過的指令個(gè)數(shù)和傳統(tǒng)結(jié)構(gòu)是一樣的。
在關(guān)鍵操作子節(jié)點(diǎn)之前加入map節(jié)點(diǎn),即所有的關(guān)鍵子節(jié)點(diǎn)的前驅(qū)節(jié)點(diǎn)就是map節(jié)點(diǎn),在沒有加入map節(jié)點(diǎn)的時(shí)候,只有一個(gè)關(guān)鍵節(jié)點(diǎn),數(shù)據(jù)只有單條通路。在加入了map節(jié)點(diǎn)之后,并且有多個(gè)相同的關(guān)鍵子節(jié)點(diǎn),提供了多條數(shù)據(jù)通路。map節(jié)點(diǎn)負(fù)責(zé)將前驅(qū)節(jié)點(diǎn)的數(shù)據(jù)分發(fā)給關(guān)鍵子節(jié)點(diǎn)。map節(jié)點(diǎn)的結(jié)構(gòu)如圖3所示,在map節(jié)點(diǎn)中存在標(biāo)志位,選擇邏輯及轉(zhuǎn)發(fā)邏輯三個(gè)模塊。標(biāo)志位為關(guān)鍵子節(jié)點(diǎn)給予map節(jié)點(diǎn)的反饋,標(biāo)志著關(guān)鍵子節(jié)點(diǎn)中是否空閑,如果關(guān)鍵子節(jié)點(diǎn)不空閑,則標(biāo)志位標(biāo)志著不能夠繼續(xù)向該關(guān)鍵子節(jié)點(diǎn)傳輸數(shù)據(jù),如果關(guān)鍵子節(jié)點(diǎn)空閑,則在標(biāo)志位當(dāng)中標(biāo)志著可以向該關(guān)鍵子節(jié)點(diǎn)傳輸數(shù)據(jù)。選擇邏輯的主要功能為從其眾多后繼節(jié)點(diǎn)的標(biāo)志位當(dāng)中選取一個(gè)可用的關(guān)鍵子節(jié)點(diǎn),選取了這個(gè)子節(jié)點(diǎn)之后,選擇邏輯清空這個(gè)子節(jié)點(diǎn)的標(biāo)志位,置該關(guān)鍵子節(jié)點(diǎn)的標(biāo)志位為“該節(jié)點(diǎn)不空閑”。轉(zhuǎn)發(fā)邏輯的功能是接收選擇邏輯選取的關(guān)鍵節(jié)點(diǎn),將該次數(shù)據(jù)轉(zhuǎn)發(fā)到此關(guān)鍵節(jié)點(diǎn)。
在關(guān)鍵子節(jié)點(diǎn)之后加入merge節(jié)點(diǎn),也是所有關(guān)鍵子節(jié)點(diǎn)的后繼節(jié)點(diǎn),在傳統(tǒng)的操作數(shù)存儲(chǔ)空間當(dāng)中,只有一條數(shù)據(jù)通路,在新提出的加速關(guān)鍵路徑的方法,基于以上提出的兩種結(jié)構(gòu),有多個(gè)關(guān)鍵子節(jié)點(diǎn)形成了多條數(shù)據(jù)通路,merge節(jié)點(diǎn)的主要功能是將關(guān)鍵子節(jié)點(diǎn)中的數(shù)據(jù)串行發(fā)送給后繼節(jié)點(diǎn)。merge節(jié)點(diǎn)的結(jié)構(gòu)如圖4所示,在merge節(jié)點(diǎn)中存在著標(biāo)志位、選擇邏輯、轉(zhuǎn)發(fā)邏輯三個(gè)模塊。其中標(biāo)志位為關(guān)鍵子節(jié)點(diǎn)給予merge節(jié)點(diǎn)的反饋,標(biāo)志著關(guān)鍵子節(jié)點(diǎn)給予merge節(jié)點(diǎn)的數(shù)據(jù)是否有效,如果數(shù)據(jù)無效,則標(biāo)志位標(biāo)志著merge不能轉(zhuǎn)發(fā)該關(guān)鍵子節(jié)點(diǎn)的數(shù)據(jù),如果關(guān)鍵子節(jié)點(diǎn)數(shù)據(jù)有效,則在標(biāo)志位當(dāng)中標(biāo)志著可以轉(zhuǎn)發(fā)該關(guān)鍵子節(jié)點(diǎn)傳輸過來的數(shù)據(jù)。選擇邏輯的主要功能為從其眾多后繼節(jié)點(diǎn)的標(biāo)志位當(dāng)中選取一個(gè)可用的關(guān)鍵子節(jié)點(diǎn),選取了這個(gè)子節(jié)點(diǎn)之后,選擇邏輯清空這個(gè)子節(jié)點(diǎn)的標(biāo)志位,置該關(guān)鍵子節(jié)點(diǎn)為“數(shù)據(jù)無效”。轉(zhuǎn)發(fā)邏輯的功能是接收選擇邏輯選取的關(guān)鍵子節(jié)點(diǎn),將該關(guān)鍵子節(jié)點(diǎn)的數(shù)據(jù)轉(zhuǎn)發(fā)到merge節(jié)點(diǎn)的后繼節(jié)點(diǎn)。
map節(jié)點(diǎn)和merge節(jié)點(diǎn)的結(jié)構(gòu)均有標(biāo)志位、選擇邏輯、轉(zhuǎn)發(fā)邏輯三個(gè)模塊,并且標(biāo)志位均為關(guān)鍵子節(jié)點(diǎn)對(duì)這兩個(gè)特殊節(jié)點(diǎn)的反饋。不同的是,map節(jié)點(diǎn)中的標(biāo)志位是標(biāo)志著關(guān)鍵子節(jié)點(diǎn)中是否空閑可用,是否能向其轉(zhuǎn)發(fā)新的數(shù)據(jù);而merge節(jié)點(diǎn)中的標(biāo)志位則標(biāo)志著關(guān)鍵子節(jié)點(diǎn)中的數(shù)據(jù)是否有效可用,是否能夠?qū)㈥P(guān)鍵子節(jié)點(diǎn)的數(shù)據(jù)轉(zhuǎn)發(fā)出去。map節(jié)點(diǎn)是將數(shù)據(jù)分發(fā)至關(guān)鍵子節(jié)點(diǎn),merge節(jié)點(diǎn)是將關(guān)鍵子節(jié)點(diǎn)的數(shù)據(jù)轉(zhuǎn)發(fā)出來。另外,map節(jié)點(diǎn)是一條數(shù)據(jù)流分發(fā)到多條數(shù)據(jù)通路中的一條,而merge節(jié)點(diǎn)是將多條數(shù)據(jù)通路中的數(shù)據(jù),選擇一條至其后繼節(jié)點(diǎn)。從物理上看,map節(jié)點(diǎn)的通路是一對(duì)多通路,而merge節(jié)點(diǎn)的通路是多對(duì)一的通路,但是從邏輯上來看,map節(jié)點(diǎn)與merge節(jié)點(diǎn)數(shù)據(jù)只有一條邏輯通路。
與傳統(tǒng)的加速關(guān)鍵路徑方法不同,傳統(tǒng)的方法是通過復(fù)制多個(gè)操作數(shù)存儲(chǔ)空間來增加指令之間的并行,是在指令級(jí)層面上增加程序的并行性,其每復(fù)制一次操作數(shù)存儲(chǔ)空間,就需要將整個(gè)數(shù)據(jù)流圖復(fù)制一份,每一個(gè)操作數(shù)存儲(chǔ)空間的關(guān)鍵路徑仍然存在。而本發(fā)明中提出的方法為對(duì)操作數(shù)存儲(chǔ)空間進(jìn)行優(yōu)化,對(duì)于同一個(gè)操作數(shù)存儲(chǔ)空間提出了多條數(shù)據(jù)通路,是更細(xì)粒度的優(yōu)化方法,并且本發(fā)明提出的方法與傳統(tǒng)方法可以復(fù)用,以達(dá)到更高的執(zhí)行效率。
同時(shí)本發(fā)明還提出了一種流式數(shù)據(jù)流圖關(guān)鍵路徑的加速系統(tǒng)及包含該系統(tǒng)的裝置。
請(qǐng)繼續(xù)參閱圖5,本實(shí)施例中將會(huì)說明單個(gè)操作數(shù)存儲(chǔ)空間在6個(gè)基礎(chǔ)時(shí)間基礎(chǔ)拍內(nèi),操作數(shù)存儲(chǔ)空間中的數(shù)據(jù)流動(dòng)情況,其中a節(jié)點(diǎn)與b節(jié)點(diǎn)為關(guān)鍵子節(jié)點(diǎn),其均可以實(shí)現(xiàn)相同的功能。假設(shè)在初始化的時(shí)候,數(shù)據(jù)圖中并沒有數(shù)據(jù)流通,從第1個(gè)時(shí)間拍開始,數(shù)據(jù)流圖中開始灌入第n次的數(shù)據(jù)。假設(shè)關(guān)鍵子節(jié)點(diǎn)執(zhí)行需要2-3個(gè)時(shí)間拍才能夠結(jié)束。
步驟501:第n次數(shù)據(jù)到達(dá)map節(jié)點(diǎn),map節(jié)點(diǎn)判斷其后繼節(jié)點(diǎn),發(fā)現(xiàn)a節(jié)點(diǎn)與b節(jié)點(diǎn)均處于空閑狀態(tài),其狀態(tài)位為11,其將數(shù)據(jù)轉(zhuǎn)發(fā)至a節(jié)點(diǎn)(假設(shè)第n次數(shù)據(jù)需要在關(guān)鍵操作中執(zhí)行3個(gè)時(shí)間拍),并且將狀態(tài)位置為01。節(jié)點(diǎn)a接收到第n次數(shù)據(jù),開始執(zhí)行(執(zhí)行了第1個(gè)時(shí)間拍);節(jié)點(diǎn)b中沒有數(shù)據(jù),沒有執(zhí)行。而merge節(jié)點(diǎn)的狀態(tài)位為00,沒有有效數(shù)據(jù),所以其并沒有向其后繼結(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)。
步驟502:第n+1次數(shù)據(jù)到達(dá)map節(jié)點(diǎn),map節(jié)點(diǎn)判斷其后繼節(jié)點(diǎn),發(fā)現(xiàn)狀態(tài)位為01,map節(jié)點(diǎn)將第n+1次數(shù)據(jù)轉(zhuǎn)發(fā)至b節(jié)點(diǎn)(假設(shè)第n+1次數(shù)據(jù)需要執(zhí)行2個(gè)時(shí)間拍),并且將狀態(tài)位置為00。節(jié)點(diǎn)a正在執(zhí)行第n次的數(shù)據(jù)(執(zhí)行了1個(gè)時(shí)間拍),節(jié)點(diǎn)b開始執(zhí)行第n+1次數(shù)據(jù)(執(zhí)行了0個(gè)時(shí)間拍)。而merge節(jié)點(diǎn)的狀態(tài)位為00,沒有有效數(shù)據(jù),所以其并沒有向其后繼結(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)。
步驟503:第n+2次數(shù)據(jù)到達(dá)map節(jié)點(diǎn),map節(jié)點(diǎn)判斷其后繼節(jié)點(diǎn),發(fā)現(xiàn)狀態(tài)位為00,并沒有轉(zhuǎn)發(fā)n+2次的數(shù)據(jù)。節(jié)點(diǎn)a正在執(zhí)行第n次的數(shù)據(jù)(執(zhí)行了2個(gè)時(shí)間拍),節(jié)點(diǎn)b開始執(zhí)行第n+1次數(shù)據(jù)(執(zhí)行了1個(gè)時(shí)間拍)。而merge節(jié)點(diǎn)的狀態(tài)位為00,沒有有效數(shù)據(jù),所以其并沒有向其后繼結(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)。
步驟504:因?yàn)樯洗蝞+2次數(shù)據(jù)沒有被轉(zhuǎn)發(fā),所以當(dāng)拍還是第n+2次數(shù)據(jù)到達(dá)map節(jié)點(diǎn),map節(jié)點(diǎn)判斷其后繼節(jié)點(diǎn),發(fā)現(xiàn)狀態(tài)位為00,并沒有轉(zhuǎn)發(fā)n+2次的數(shù)據(jù)。節(jié)點(diǎn)a正在執(zhí)行第n次的數(shù)據(jù)(執(zhí)行了3個(gè)時(shí)間拍),節(jié)點(diǎn)b開始執(zhí)行第n+1次數(shù)據(jù)(執(zhí)行了2個(gè)時(shí)間拍)。節(jié)點(diǎn)a的數(shù)據(jù)和節(jié)點(diǎn)b的數(shù)據(jù)同時(shí)執(zhí)行完畢,并且將merge節(jié)點(diǎn)的狀態(tài)位置為11;merge節(jié)點(diǎn)的狀態(tài)位為11,選取b節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā),并且將其狀態(tài)位置為10。
步驟505:因?yàn)樯洗蝞+2次數(shù)據(jù)沒有被轉(zhuǎn)發(fā),所以當(dāng)拍還是第n+2次數(shù)據(jù)到達(dá)map節(jié)點(diǎn),map節(jié)點(diǎn)判斷其后繼節(jié)點(diǎn),發(fā)現(xiàn)狀態(tài)位為11,map節(jié)點(diǎn)將第n+2次數(shù)據(jù)轉(zhuǎn)發(fā)至b節(jié)點(diǎn)(假設(shè)第n+2次數(shù)據(jù)需要執(zhí)行2個(gè)時(shí)間拍),并且將狀態(tài)位置為10。節(jié)點(diǎn)a處于空閑狀態(tài),節(jié)點(diǎn)b開始執(zhí)行第n+2次數(shù)據(jù)(執(zhí)行了0個(gè)時(shí)間拍)。merge節(jié)點(diǎn)的狀態(tài)位為10,選取a節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā),并且將其狀態(tài)位置為00。
步驟506:第n+3次數(shù)據(jù)到達(dá)map節(jié)點(diǎn),map節(jié)點(diǎn)判斷其后繼節(jié)點(diǎn),發(fā)現(xiàn)狀態(tài)位為01,map節(jié)點(diǎn)將第n+3次數(shù)據(jù)轉(zhuǎn)發(fā)至a節(jié)點(diǎn)(假設(shè)第n+3次數(shù)據(jù)需要執(zhí)行2個(gè)時(shí)間拍),并且將狀態(tài)位置為00。節(jié)點(diǎn)a開始執(zhí)行第n+3次的數(shù)據(jù)(執(zhí)行了0個(gè)時(shí)間拍),節(jié)點(diǎn)b開始執(zhí)行第n+2次數(shù)據(jù)(執(zhí)行了1個(gè)時(shí)間拍)。merge節(jié)點(diǎn)的狀態(tài)位為00,沒有有效數(shù)據(jù),所以其并沒有向其后繼結(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)。
本領(lǐng)域普通技術(shù)人員可以理解:附圖只是一個(gè)實(shí)施例的示意圖,附圖中的模塊或流程并不一定是實(shí)施本發(fā)明所必須的。
本領(lǐng)域普通技術(shù)人員可以理解:實(shí)施例中的裝置中的模塊可以按照實(shí)施例描述分布于實(shí)施例的裝置中,也可以進(jìn)行相應(yīng)變化位于不同于本實(shí)施例的一個(gè)或多個(gè)裝置中。上述實(shí)施例的模塊可以合并為一個(gè)模塊,也可以進(jìn)一步拆分成多個(gè)子模塊。
最后應(yīng)說明的是:以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明實(shí)施例技術(shù)方案的精神和范圍。