本公開中描述的一些實(shí)施例涉及可重構(gòu)處理網(wǎng)格,更具體地,但不排他地,涉及在可重構(gòu)處理網(wǎng)格上執(zhí)行一個(gè)或多個(gè)數(shù)據(jù)流圖。
背景技術(shù):
1、如本文所用,術(shù)語“可重構(gòu)處理網(wǎng)格”是指包括多個(gè)可重構(gòu)邏輯元件的處理電路,所述多個(gè)可重構(gòu)邏輯元件通過多個(gè)可重構(gòu)數(shù)據(jù)路由結(jié)點(diǎn)連接,其中,在一次或多次迭代中的每次迭代中,可以操縱多個(gè)可重構(gòu)邏輯元件以及附加地或替代地多個(gè)可重構(gòu)數(shù)據(jù)路由結(jié)點(diǎn)來執(zhí)行一個(gè)或多個(gè)操作。如本文所用,術(shù)語數(shù)據(jù)流表示將軟件程序中的至少一部分建模為在操作之間流動(dòng)的數(shù)據(jù)的有向圖(數(shù)據(jù)流圖)的計(jì)算機(jī)編程范式,使得一系列操作被應(yīng)用于數(shù)據(jù)流圖的數(shù)據(jù)元素序列中的每個(gè)數(shù)據(jù)元素。可選地,數(shù)據(jù)流圖包括多個(gè)節(jié)點(diǎn)以及多個(gè)有向邊,每個(gè)節(jié)點(diǎn)對數(shù)據(jù)元素應(yīng)用操作,每個(gè)有向邊連接多個(gè)節(jié)點(diǎn)中的兩個(gè)并指示所述兩個(gè)節(jié)點(diǎn)之間的數(shù)據(jù)流。在計(jì)算機(jī)科學(xué)領(lǐng)域,執(zhí)行線程是可以由調(diào)度程序獨(dú)立管理的計(jì)算機(jī)指令序列。為了簡潔起見,術(shù)語“線程”用于表示“執(zhí)行線程”,并且這些術(shù)語在本文中可互換使用。線程可以實(shí)現(xiàn)數(shù)據(jù)流圖。如本文所用,術(shù)語“投射”是指以下過程:操縱可重構(gòu)處理網(wǎng)格的一個(gè)或多個(gè)可重構(gòu)邏輯元件,并且附加地或替代地,操縱可重構(gòu)處理網(wǎng)格的一個(gè)或多個(gè)可重構(gòu)數(shù)據(jù)路由結(jié)點(diǎn)來以執(zhí)行數(shù)據(jù)流圖。因此,將實(shí)現(xiàn)數(shù)據(jù)流圖的線程投射到可重構(gòu)處理網(wǎng)格上是指:通過操縱可重構(gòu)處理網(wǎng)格的一個(gè)或多個(gè)可重構(gòu)邏輯元件來配置可重構(gòu)處理網(wǎng)格,并且附加地或替代地,操縱可重構(gòu)處理網(wǎng)格的一個(gè)或多個(gè)可重構(gòu)數(shù)據(jù)路由結(jié)點(diǎn)來執(zhí)行由線程實(shí)現(xiàn)的數(shù)據(jù)流圖。
2、在計(jì)算機(jī)科學(xué)領(lǐng)域中,并發(fā)計(jì)算是指同時(shí)執(zhí)行軟件程序的多個(gè)執(zhí)行線程。同時(shí)執(zhí)行軟件程序的多個(gè)線程允許提高系統(tǒng)的整體性能和響應(yīng)度。用于測量系統(tǒng)性能的指標(biāo)包括但不限于:系統(tǒng)在指定的時(shí)間量內(nèi)執(zhí)行的任務(wù)量(吞吐量)、完成任務(wù)執(zhí)行的時(shí)間量(延遲)和系統(tǒng)在運(yùn)行時(shí)使用的計(jì)算機(jī)存儲器量。并發(fā)計(jì)算可以用于提高吞吐量并減少系統(tǒng)的延遲。
3、可以是:多個(gè)并發(fā)線程中的每一個(gè)包括一個(gè)或多個(gè)已識別操作。當(dāng)對可重構(gòu)處理網(wǎng)格同時(shí)執(zhí)行多個(gè)并發(fā)線程時(shí),多個(gè)并發(fā)線程中的每個(gè)并發(fā)線程被投射到可重構(gòu)處理網(wǎng)格的一部分上,即,可重構(gòu)處理網(wǎng)格的多個(gè)邏輯元件中的一些邏輯元件被操縱以執(zhí)行并發(fā)線程,例如以執(zhí)行由并發(fā)線程實(shí)現(xiàn)的數(shù)據(jù)流圖。
4、存在計(jì)算機(jī)指令完成的延遲不一致的情況。當(dāng)執(zhí)行多于一次時(shí),這樣的操作可需要不同的執(zhí)行時(shí)間量,并且附加地或替代地可需要比其他指令多的時(shí)間來完成。這種不一致延遲操作的一些示例包括但不限于存儲器訪問、對外圍設(shè)備的訪問和執(zhí)行計(jì)算內(nèi)核。
技術(shù)實(shí)現(xiàn)思路
1、本公開中描述的一些實(shí)施例的目的在于提供一種系統(tǒng)和一種方法,用于通過將多個(gè)線程上下文(每個(gè)線程上下文用于多個(gè)并發(fā)線程中的一個(gè))存儲在上下文存儲裝置中并使用上下文存儲裝置管理可重構(gòu)處理網(wǎng)格上多個(gè)并發(fā)線程的執(zhí)行來執(zhí)行多個(gè)并發(fā)線程,其中每個(gè)線程上下文針對多個(gè)并發(fā)線程中的一個(gè)??蛇x地,被操縱以執(zhí)行第一線程的已識別操作的一個(gè)或多個(gè)邏輯元件用于執(zhí)行執(zhí)行第二線程的已識別操作,而第一線程正在等待第一線程的已識別操作的完成,而無需重新配置一個(gè)或多個(gè)邏輯元件來執(zhí)行第二線程的已識別操作??蛇x地,已識別操作具有不一致延遲。
2、前述目的和其他目的通過獨(dú)立權(quán)利要求的特征實(shí)現(xiàn)。根據(jù)從屬權(quán)利要求、說明書和附圖可以明顯看出進(jìn)一步的實(shí)現(xiàn)形式。
3、根據(jù)第一方面,一種用于處理多個(gè)并發(fā)線程的系統(tǒng)包括:至少一個(gè)可重構(gòu)處理網(wǎng)格,包括多個(gè)邏輯元件以及上下文存儲裝置,該上下文存儲裝置被配置為存儲多個(gè)線程上下文,每個(gè)線程上下文針對多個(gè)并發(fā)線程中的一個(gè),每個(gè)并發(fā)線程實(shí)現(xiàn)包括多個(gè)操作的數(shù)據(jù)流圖,多個(gè)操作包括至少一個(gè)已識別操作,其中,針對所述多個(gè)并發(fā)線程中的并發(fā)線程的多個(gè)線程上下文中的每個(gè)線程上下文包括由并發(fā)線程實(shí)現(xiàn)的數(shù)據(jù)流圖的至少一個(gè)運(yùn)行時(shí)上下文值;以及至少一個(gè)硬件處理器,被配置為配置至少一個(gè)可重構(gòu)處理網(wǎng)格以進(jìn)行以下操作執(zhí)行多個(gè)并發(fā)線程中的第一線程以及在執(zhí)行第一線程的同時(shí),將第一線程的至少一個(gè)運(yùn)行時(shí)上下文值存儲在上下文存儲裝置中;在等待多個(gè)邏輯元件中的至少一個(gè)已識別邏輯元件完成對第一線程的多個(gè)操作中的至少一個(gè)已識別操作的執(zhí)行的同時(shí),至少一個(gè)已識別邏輯元件執(zhí)行多個(gè)并發(fā)線程中的第二線程的至少一個(gè)已識別操作;以及當(dāng)?shù)谝痪€程的至少一個(gè)已識別操作的執(zhí)行完成時(shí),從上下文存儲裝置中檢索第一線程的至少一個(gè)運(yùn)行時(shí)上下文值;并且執(zhí)行第一線程的多個(gè)操作中的至少一個(gè)其他操作。在上下文存儲裝置中存儲針對多個(gè)并發(fā)線程中的每一個(gè)的線程上下文使得能夠暫停和重新開始多個(gè)并發(fā)線程中的一個(gè)或多個(gè)的執(zhí)行而無需操縱處理網(wǎng)格,因此降低了減少一個(gè)或多個(gè)已識別邏輯元件處于空閑而等待第一線程的一個(gè)或多個(gè)操作的執(zhí)行完成的時(shí)間量的復(fù)雜度。這有利于:提高系統(tǒng)的吞吐量并減少在執(zhí)行系統(tǒng)的一個(gè)或多個(gè)任務(wù)時(shí)的系統(tǒng)延遲。
4、根據(jù)第二方面,一種處理多個(gè)并發(fā)線程的方法包括:執(zhí)行多個(gè)并發(fā)線程中的第一線程,每個(gè)并發(fā)線程實(shí)現(xiàn)包括多個(gè)操作的數(shù)據(jù)流圖,多個(gè)操作包括至少一個(gè)已識別操作;并且在執(zhí)行第一線程的同時(shí),將由第一線程實(shí)現(xiàn)的數(shù)據(jù)流圖的至少一個(gè)運(yùn)行時(shí)上下文值存儲在上下文存儲裝置中,其中,上下文存儲裝置被配置為存儲多個(gè)線程上下文,每個(gè)線程上下文針對多個(gè)并發(fā)線程中的一個(gè),其中,針對多個(gè)并發(fā)線程中的并發(fā)線程,多個(gè)線程上下文中的每一個(gè)包括由并發(fā)線程實(shí)現(xiàn)的數(shù)據(jù)流圖的至少一個(gè)運(yùn)行時(shí)上下文值;在等待由多個(gè)邏輯元件中的至少一個(gè)已識別邏輯元件對第一線程的多個(gè)操作中的至少一個(gè)已識別操作的執(zhí)行完成的同時(shí),由至少一個(gè)已識別邏輯元件執(zhí)行多個(gè)并發(fā)線程中的第二線程的至少一個(gè)已識別操作;并且當(dāng)?shù)谝痪€程的至少一個(gè)已識別操作的執(zhí)行完成時(shí),從上下文存儲裝置中檢索第一線程的至少一個(gè)運(yùn)行時(shí)上下文值、并且執(zhí)行第一線程的多個(gè)操作中的至少一個(gè)其他操作。
5、根據(jù)第三方面,一種用于執(zhí)行多個(gè)并發(fā)線程的軟件程序產(chǎn)品包括:非暫時(shí)性計(jì)算機(jī)可讀存儲介質(zhì);第一程序指令,用于執(zhí)行多個(gè)并發(fā)線程中的第一線程,每個(gè)并發(fā)線程實(shí)現(xiàn)包括多個(gè)操作的數(shù)據(jù)流圖,多個(gè)操作包括至少一個(gè)已識別操作;以及第二程序指令,用于在執(zhí)行第一線程的同時(shí),將由第一線程實(shí)現(xiàn)的數(shù)據(jù)流圖的至少一個(gè)運(yùn)行時(shí)上下文值存儲在上下文存儲裝置中,其中,上下文存儲裝置被配置為存儲多個(gè)線程上下文,每個(gè)線程上下文針對多個(gè)并發(fā)線程中的一個(gè),其中,針對多個(gè)并發(fā)線程中的并發(fā)線程,多個(gè)線程上下文中的每一個(gè)包括由并發(fā)線程實(shí)現(xiàn)的數(shù)據(jù)流圖的至少一個(gè)運(yùn)行時(shí)上下文值;在等待由多個(gè)邏輯元件中的至少一個(gè)已識別邏輯元件對第一線程的多個(gè)操作中的至少一個(gè)已識別操作的執(zhí)行完成的同時(shí),由至少一個(gè)已識別邏輯元件執(zhí)行多個(gè)并發(fā)線程中的第二線程的至少一個(gè)已識別操作;并且當(dāng)?shù)谝痪€程的至少一個(gè)已識別操作的執(zhí)行完成時(shí):從上下文存儲裝置中檢索第一線程的至少一個(gè)運(yùn)行時(shí)上下文值;并且執(zhí)行第一線程的多個(gè)操作中的至少一個(gè)其他操作;其中,第一程序指令和第二程序指令由來自非暫時(shí)性計(jì)算機(jī)可讀存儲介質(zhì)的至少一個(gè)計(jì)算機(jī)化處理器執(zhí)行。
6、參照第一方面和第二方面,在第一方面和第二方面的第一可行實(shí)現(xiàn)中,上下文存儲裝置包括多個(gè)上下文條目,每個(gè)上下文條目用于存儲多個(gè)線程上下文中的線程上下文的多個(gè)運(yùn)行時(shí)上下文值。使用上下文條目存儲多個(gè)線程上下文中的一個(gè)線程上下文的多個(gè)運(yùn)行時(shí)上下文值允許獨(dú)立于其他線程恢復(fù)多個(gè)線程中的每個(gè)線程,從而增加一個(gè)或多個(gè)已識別邏輯元件的使用靈活性,因此減少一個(gè)或多個(gè)已識別邏輯元件處于空閑而等待第一線程的一個(gè)或多個(gè)操作的執(zhí)行完成的時(shí)間量。
7、參照第一方面和第二方面、或第一方面和第二方面的第一實(shí)現(xiàn),在第一方面和第二方面的第二可行實(shí)現(xiàn)中,針對多個(gè)并發(fā)線程中的至少一個(gè)線程,至少一個(gè)線程的多個(gè)運(yùn)行時(shí)上下文值存儲在多個(gè)上下文條目中的多于一個(gè)上下文條目中。使用多于一個(gè)上下文條目來存儲一個(gè)線程的多個(gè)運(yùn)行時(shí)上下文值允許線程具有較大上下文,該較大上下文具有一定量的非容納于單個(gè)條目中的運(yùn)行時(shí)上下文值,與將線程的多個(gè)運(yùn)行時(shí)上下文值存儲在單個(gè)條目中相比,這提高了系統(tǒng)的可用性。可選地,將多個(gè)上下文條目組織在具有多行的表中,一行針對多個(gè)上下文條目中的每個(gè)上下文條目??蛇x地,多行中的每行具有多列,使得存儲在行中的線程上下文的多個(gè)運(yùn)行時(shí)上下文值中的每個(gè)運(yùn)行時(shí)上下文值存儲在多列中的列中。將多個(gè)上下文條目組織在表中,這增加了多個(gè)上下文條目的易用性,從而允許通過條目的索引號以及附加地或替代地通過列的索引號來引用值??蛇x地,至少一個(gè)可重構(gòu)處理網(wǎng)格還被配置為在執(zhí)行第一線程的同時(shí):將第一線程的至少一個(gè)運(yùn)行時(shí)上下文值存儲在上下文存儲裝置的至少一個(gè)已識別列中;并將第一線程的至少一個(gè)其他運(yùn)行時(shí)上下文值存儲在上下文存儲裝置的至少一個(gè)已識別列中。重用上下文條目允許減少實(shí)現(xiàn)上下文存儲裝置所需的存儲量,從而降低實(shí)現(xiàn)成本??蛇x地,數(shù)據(jù)流圖包括多個(gè)節(jié)點(diǎn)和多個(gè)邊。可選地,多個(gè)節(jié)點(diǎn)中的至少一個(gè)節(jié)點(diǎn)實(shí)現(xiàn)查找表,并且配置至少一個(gè)可重構(gòu)處理網(wǎng)格以執(zhí)行第一線程包括將查找表存儲在多列中的至少一其他列中。將查找表存儲在上下文存儲裝置的一列或多列中允許比在應(yīng)用存儲器中實(shí)現(xiàn)快地訪問查找表的值,從而減少線程訪問查找表中的值的時(shí)間量,并且附加地或替代地減少當(dāng)上下文值從查找表驅(qū)動(dòng)時(shí)為線程創(chuàng)建上下文的時(shí)間量。
8、參照第一方面和第二方面、或第一方面和第二方面的第一實(shí)現(xiàn),在第一方面和第二方面的第三可行實(shí)現(xiàn)中,至少一個(gè)可重構(gòu)處理網(wǎng)格還被配置為:當(dāng)?shù)谝痪€程的至少一個(gè)已識別操作的執(zhí)行完成時(shí),在多個(gè)上下文條目中的上下文條目中存儲至少一個(gè)結(jié)果值,其中,上下文條目用于存儲第一線程的線程上下文的至少一部分,該至少一個(gè)結(jié)果值是執(zhí)行第一線程的至少一個(gè)已識別操作的結(jié)果。在上下文條目中存儲結(jié)果值提高了在一個(gè)或多個(gè)已識別操作的執(zhí)行完成之后重新開始時(shí)線程上下文的準(zhǔn)確度。
9、參照第一方面和第二方面、或第一方面和第二方面的第一實(shí)現(xiàn),在第一方面和第二方面的第四可行實(shí)現(xiàn)中,多個(gè)上下文條目中的第一上下文條目存儲第一線程的多個(gè)運(yùn)行時(shí)上下文值,并且至少一個(gè)可重構(gòu)處理網(wǎng)格還被配置為:根據(jù)應(yīng)用于第一上下文條目的多個(gè)運(yùn)行時(shí)上下文值的至少一個(gè)測試的結(jié)果來計(jì)算第一上下文完整的標(biāo)識,并且檢索第一線程的至少一個(gè)運(yùn)行時(shí)上下文值并受第一上下文完整的標(biāo)識的約束執(zhí)行至少一個(gè)其他操作??蛇x地,至少一個(gè)可重構(gòu)處理網(wǎng)格還包括:調(diào)度電路,用于將至少一個(gè)測試應(yīng)用于多個(gè)運(yùn)行時(shí)上下文值??蛇x地,將至少一個(gè)測試應(yīng)用于多個(gè)運(yùn)行時(shí)上下文值包括:調(diào)度電路執(zhí)行測試指令集。使用執(zhí)行測試指令集的調(diào)度電路允許通過針對每個(gè)測試執(zhí)行不同的測試指令集來實(shí)現(xiàn)多于一個(gè)測試,從而有助于提高應(yīng)用一個(gè)或多個(gè)測試的結(jié)果的準(zhǔn)確度,因此提高對第一上下文完整的標(biāo)識的準(zhǔn)確度??蛇x地,第一上下文條目包括多個(gè)有效位,每個(gè)有效位與多個(gè)運(yùn)行時(shí)上下文值中的一個(gè)相關(guān)聯(lián);并且將至少一個(gè)測試應(yīng)用于多個(gè)運(yùn)行時(shí)上下文值包括將已識別按位掩碼應(yīng)用于多個(gè)有效位。將按位掩碼應(yīng)用于多個(gè)有效位減少了檢查多個(gè)運(yùn)行時(shí)上下文值的多個(gè)有效性值所需的時(shí)間??蛇x地,至少一個(gè)可重構(gòu)處理網(wǎng)格還被配置為:根據(jù)調(diào)度策略來選擇第一線程以執(zhí)行第一線程的多個(gè)操作中的至少一個(gè)其他操作。與由處理網(wǎng)格外部的處理電路選擇第一線程——例如當(dāng)一個(gè)或多個(gè)硬件處理器不是一個(gè)或多個(gè)處理網(wǎng)格的一部分時(shí)——相比,由一個(gè)或多個(gè)可重構(gòu)處理網(wǎng)格選擇第一線程減少了直到一個(gè)或多個(gè)其他操作的執(zhí)行為止的延遲??蛇x地,在選擇第一線程之前,至少一個(gè)可重構(gòu)處理網(wǎng)格還被配置為:在選擇第一線程之前,根據(jù)將至少一個(gè)測試應(yīng)用于至少一個(gè)其他上下文條目的至少一個(gè)其他多個(gè)運(yùn)行時(shí)上下文值的至少一個(gè)其他結(jié)果來計(jì)算至少一個(gè)其他上下文完成的另一標(biāo)識。在選擇第一線程之前識別一個(gè)或多個(gè)其他上下文完成允許:靈活地選擇要執(zhí)行哪個(gè)線程,例如,上下文是一個(gè)或多個(gè)其他上下文的另一線程,與僅限于選擇第一線程相比,這有助于提高整體系統(tǒng)性能??蛇x地,至少一個(gè)可重構(gòu)處理網(wǎng)格還被配置為:受添加到多個(gè)上下文條目中的一個(gè)或多個(gè)上下文條目的標(biāo)記的約束,其中一個(gè)或多個(gè)上下文條目用于存儲第一線程的線程上下文的至少一部分,執(zhí)行下列中至少一個(gè):拒絕執(zhí)行第一線程的多個(gè)操作中的至少一個(gè)其他操作;以及將第一線程的多個(gè)線程上下文值中的至少一個(gè)提供給至少一個(gè)其他軟件對象。使用標(biāo)記允許:靈活地選擇要執(zhí)行哪個(gè)線程以及由誰執(zhí)行,與局限于重新開始第一線程的執(zhí)行并在第一線程重新開始之后終止線程相比,這有助于提高整體系統(tǒng)性能。
10、參照第一方面和第二方面,在第一方面和第二方面的第五可能實(shí)現(xiàn)中,數(shù)據(jù)流圖包括多個(gè)節(jié)點(diǎn)和多個(gè)邊。可選地,至少一個(gè)已識別操作在數(shù)據(jù)流圖中由多個(gè)節(jié)點(diǎn)中的至少一個(gè)已識別節(jié)點(diǎn)表示??蛇x地,至少一個(gè)硬件處理器還被配置為在數(shù)據(jù)流圖中識別子圖(殘差子圖),使得殘差子圖由多個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)子集和多個(gè)邊的邊子集組成,其中,在數(shù)據(jù)流圖中,在至少一個(gè)已識別節(jié)點(diǎn)中的任兩個(gè)節(jié)點(diǎn)之間不存在路徑,其中,對于節(jié)點(diǎn)子集中的每個(gè)節(jié)點(diǎn),在數(shù)據(jù)流圖中,在至少一個(gè)已識別節(jié)點(diǎn)與節(jié)點(diǎn)之間不存在路徑,并且其中,對于邊子集中的每個(gè)邊,在數(shù)據(jù)流圖中,在至少一個(gè)已識別節(jié)點(diǎn)與邊之間不存在路徑,并且至少一個(gè)運(yùn)行時(shí)上下文值是邊子集中的至少一個(gè)邊的至少一個(gè)邊值。使用殘差子圖作為流的上下文,其中,在數(shù)據(jù)流圖中在一個(gè)或多個(gè)已識別節(jié)點(diǎn)與殘差子圖中的任何節(jié)點(diǎn)之間不存在路徑,當(dāng)一個(gè)或多個(gè)已識別操作的執(zhí)行完成時(shí),這增加了上下文的準(zhǔn)確度,因?yàn)閿?shù)據(jù)流圖中不是殘差子圖的其他部分的執(zhí)行不影響殘差子圖的執(zhí)行,反之亦然。可選地,數(shù)據(jù)流圖是有向圖??蛇x地,多個(gè)邊中的每一個(gè)具有多個(gè)節(jié)點(diǎn)中的頭節(jié)點(diǎn)和多個(gè)節(jié)點(diǎn)中的尾節(jié)點(diǎn),節(jié)點(diǎn)子集包括一個(gè)或多個(gè)入口節(jié)點(diǎn),使得一個(gè)或多個(gè)入口節(jié)點(diǎn)中的每一個(gè)都是殘差子圖的入口節(jié)點(diǎn),其中,入口節(jié)點(diǎn)不是邊子集中的任一個(gè)邊的頭節(jié)點(diǎn),至少一個(gè)運(yùn)行時(shí)上下文值是一個(gè)或多個(gè)入口節(jié)點(diǎn)中的至少一個(gè)入口節(jié)點(diǎn)的至少一個(gè)輸入值。
11、參照第一方面和第二方面,在第一方面和第二方面的第六可行實(shí)現(xiàn)中,至少一個(gè)已識別操作包括下列中至少一個(gè):存儲器訪問操作、浮點(diǎn)數(shù)學(xué)運(yùn)算、執(zhí)行另一計(jì)算圖、對協(xié)處理器的訪問、以及對連接到至少一個(gè)可重構(gòu)處理網(wǎng)格的外圍設(shè)備的訪問。
12、參照第一方面和第二方面,在第一方面和第二方面的第七可行實(shí)現(xiàn)中,多個(gè)并發(fā)線程是并發(fā)線程集的子集,并發(fā)線程集中的每一個(gè)實(shí)現(xiàn)數(shù)據(jù)流圖??蛇x地,系統(tǒng)還包括:緩沖存儲裝置,用于存儲另外多個(gè)線程上下文,每個(gè)線程上下文用于并發(fā)線程集中的至少一個(gè)并發(fā)線程??蛇x地,其中,至少一個(gè)硬件處理器還被配置為進(jìn)一步配置至少一個(gè)可重構(gòu)處理網(wǎng)格,以進(jìn)行以下操作:在緩沖存儲裝置中存儲一個(gè)或多個(gè)等待線程的一個(gè)或多個(gè)附加運(yùn)行時(shí)上下文值,其中,一個(gè)或多個(gè)等待線程不是多個(gè)并發(fā)線程的成員;并且在多次迭代中的每次迭代中識別多個(gè)并發(fā)線程中的至少一個(gè)附加線程的執(zhí)行已完成,對于一個(gè)或多個(gè)等待線程中的至少一個(gè),從緩沖存儲裝置中檢索至少一個(gè)等待線程的至少一個(gè)附加運(yùn)行時(shí)上下文值,以及將至少一個(gè)等待線程添加到多個(gè)并發(fā)線程,以供多個(gè)邏輯元件執(zhí)行。使用緩沖存儲裝置來存儲不是多個(gè)并發(fā)線程的成員的等待線程的一個(gè)或多個(gè)附加運(yùn)行時(shí)上下文值允許:重新使用多個(gè)邏輯元件來執(zhí)行比上下文存儲裝置一次支持的線程多的線程,從而進(jìn)一步提高系統(tǒng)在減少延遲方面的整體性能,并且附加地或替代地提高吞吐量??蛇x地,至少一個(gè)可重構(gòu)處理網(wǎng)格還包括:注冊電路,用于跟蹤一個(gè)或多個(gè)等待線程;以及附加調(diào)度電路,用于管理多個(gè)并發(fā)線程的執(zhí)行??蛇x地,附加調(diào)度電路被配置為:從注冊電路中選擇至少一個(gè)等待線程;從緩沖存儲裝置中檢索至少一個(gè)等待線程的至少一個(gè)附加運(yùn)行時(shí)上下文值;以及將至少一個(gè)等待線程添加到多個(gè)并發(fā)線程,以供多個(gè)邏輯元件執(zhí)行。與管理一個(gè)或多個(gè)硬件處理器的執(zhí)行相比,使用注冊電路來跟蹤一個(gè)或多個(gè)等待線程并使用附加調(diào)度電路來管理多個(gè)并發(fā)線程的執(zhí)行減少了調(diào)度多個(gè)并發(fā)線程中的一個(gè)或多個(gè)線程以進(jìn)行執(zhí)行的延遲??蛇x地,將至少一個(gè)等待線程添加到多個(gè)并發(fā)線程包括:將至少一個(gè)等待線程的至少一個(gè)附加運(yùn)行時(shí)上下文值存儲在上下文存儲裝置中??蛇x地,附加調(diào)度電路還被配置為:將至少一個(gè)等待線程中的每一個(gè)與上下文標(biāo)識值相關(guān)聯(lián),上下文標(biāo)識值指示上下文存儲裝置中的等待線程的線程上下文??蛇x地,附加調(diào)度電路還被配置為:在多次迭代的第一迭代中,將已識別上下文標(biāo)識值與一個(gè)或多個(gè)等待線程中的第一等待線程相關(guān)聯(lián);在多次迭代的第二迭代中,標(biāo)識第一個(gè)等待線程的執(zhí)行已完成;以及將已識別上下文標(biāo)識值與一個(gè)或多個(gè)等待線程中的第二等待線程相關(guān)聯(lián)??蛇x地,緩沖存儲裝置包括多個(gè)緩沖條目,每個(gè)緩沖條目用于存儲一個(gè)或多個(gè)等待線程中的至少一個(gè)等待線程的線程上下文??蛇x地,注冊電路包括多個(gè)注冊條目,每個(gè)注冊條目用于跟蹤一個(gè)或多個(gè)等待線程中的至少一個(gè)??蛇x地,附加調(diào)度電路還被配置為:對于一個(gè)或多個(gè)等待線程中的至少一組等待線程,在緩沖存儲裝置中生成與至少一組等待線程中的每個(gè)等待線程相關(guān)聯(lián)的公共線程上下文;在注冊電路中生成與至少一組等待線程中的每個(gè)等待線程相關(guān)聯(lián)的公共注冊條目;并且當(dāng)從注冊電路中選擇至少一組等待線程中的新線程作為至少一個(gè)等待線程時(shí),計(jì)算新線程的至少一個(gè)私有上下文值??蛇x地,注冊電路還被配置為:停止并發(fā)線程集中的至少一些線程的執(zhí)行,直到一個(gè)或多個(gè)等待線程的數(shù)量超過閾值。等待一個(gè)或多個(gè)等待線程的量超過閾值允許:將一個(gè)或多個(gè)等待線程批量添加到多個(gè)并發(fā)線程中,從而減少這種配置的開銷,與在等待線程可用時(shí)執(zhí)行等待線程相比,這有助于進(jìn)一步提高系統(tǒng)性能。
13、參照第一方面和第二方面,在第一方面和第二方面的第八可行實(shí)現(xiàn)中,多個(gè)邏輯元件是多個(gè)可重構(gòu)邏輯元件,多個(gè)可重構(gòu)邏輯元件被組織為多個(gè)計(jì)算組,并且至少一個(gè)已識別的邏輯元件是多個(gè)計(jì)算組的子集。
14、參照第一方面和第二方面,在第一方面和第二方面的第九可行實(shí)現(xiàn)中,數(shù)據(jù)流圖的運(yùn)行時(shí)上下文值是數(shù)據(jù)流圖的多個(gè)節(jié)點(diǎn)中的節(jié)點(diǎn)的輸入值或輸出值。
15、參照第一方面和第二方面,在第一方面和第二方面的第十可行實(shí)現(xiàn)中,至少一個(gè)硬件處理器還被配置為配置至少一個(gè)可重構(gòu)處理網(wǎng)格,以在多次線程迭代中的每一次中執(zhí)行第一線程??蛇x地,上下文存儲裝置包括至少一個(gè)附加上下文條目,以存儲數(shù)據(jù)流圖的附加的多個(gè)運(yùn)行時(shí)上下文值,其中,附加的多個(gè)運(yùn)行時(shí)上下文值對于多次線程迭代是共同的;并且,當(dāng)?shù)谝痪€程的至少一個(gè)已識別操作的執(zhí)行完成時(shí),可重構(gòu)處理網(wǎng)格還被配置用于從上下文存儲裝置中檢索附加的多個(gè)運(yùn)行時(shí)上下文值中的至少一個(gè)。與為多次線程迭代中的多于一次線程迭代復(fù)制附加上下文值相比,使用一個(gè)或多個(gè)附加上下文條目來存儲對于多次線程迭代是共同的附加上下文值允許減小上下文存儲裝置的大小,從而降低實(shí)現(xiàn)成本。
16、參照第一方面和第二方面,在第一方面和第二方面的第十一可行實(shí)現(xiàn)中,至少一個(gè)可重構(gòu)處理網(wǎng)格還包括至少一個(gè)其他上下文存儲裝置??蛇x地,至少一個(gè)硬件處理器還被配置為:配置至少一個(gè)可重構(gòu)處理網(wǎng)格,以便當(dāng)?shù)谝痪€程的至少一個(gè)已識別操作的執(zhí)行完成時(shí),將第一線程的至少一個(gè)附加運(yùn)行時(shí)上下文值存儲在至少一個(gè)其他上下文存儲裝置中,進(jìn)一步執(zhí)行第一線程,以及在進(jìn)一步執(zhí)行第一線程的同時(shí),在等待多個(gè)邏輯元件中的至少一個(gè)其他已識別邏輯元件對第一線程的多個(gè)操作中的至少一個(gè)其他已識別操作的進(jìn)一步執(zhí)行完成的同時(shí),由至少一個(gè)其他已識別邏輯元件執(zhí)行多個(gè)線程中的另一第二線程的至少一個(gè)其他已識別操作。使用多于一個(gè)上下文存儲裝置允許:級聯(lián)多于一個(gè)不可預(yù)測延遲操作的單獨(dú)調(diào)度,從而進(jìn)一步在減少延遲方面提高系統(tǒng)性能,并附加地或替代地增加吞吐量。
17、參照第一方面和第二方面,在第一方面和第二方面的第十二可行實(shí)現(xiàn)中,至少一個(gè)可重構(gòu)處理網(wǎng)格還包括至少一個(gè)計(jì)數(shù)器,多個(gè)并發(fā)線程包括與至少一個(gè)計(jì)數(shù)器相關(guān)聯(lián)的一組并發(fā)線程,并且,至少一個(gè)運(yùn)行時(shí)上下文值包括通過訪問至少一個(gè)計(jì)數(shù)器從至少一個(gè)計(jì)數(shù)器讀取的至少一個(gè)計(jì)數(shù)器值。維護(hù)與一組并發(fā)線程相關(guān)聯(lián)的公共計(jì)數(shù)器允許:為一組并發(fā)線程中的每個(gè)并發(fā)線程提供唯一值,其中其他上下文值是公共的,從而提高一組并發(fā)線程的操作準(zhǔn)確度??蛇x地,一組并發(fā)線程中的每個(gè)并發(fā)線程實(shí)現(xiàn)已識別數(shù)據(jù)流圖??蛇x地,訪問至少一個(gè)計(jì)數(shù)器包括原子訪問,原子訪問包括:讀取至少一個(gè)計(jì)數(shù)器并遞增至少一個(gè)計(jì)數(shù)器??蛇x地,至少一個(gè)計(jì)數(shù)器是計(jì)數(shù)器序列。可選地,遞增至少一個(gè)計(jì)數(shù)器包括:使用模運(yùn)算來遞增計(jì)數(shù)器序列中的第一計(jì)數(shù)器,并且受第一計(jì)數(shù)器在被遞增之后回繞的約束,遞增計(jì)數(shù)器序列中與第一計(jì)數(shù)器連續(xù)的第二計(jì)數(shù)器??蛇x地,至少一個(gè)計(jì)數(shù)器是計(jì)數(shù)器序列,并且遞增至少一個(gè)計(jì)數(shù)器包括:遞增計(jì)數(shù)器序列中的第一計(jì)數(shù)器,并且受第一計(jì)數(shù)器超過最大值的約束,遞增計(jì)數(shù)器序列中與第一計(jì)數(shù)器連續(xù)的第二計(jì)數(shù)器,并且至少執(zhí)行下列中至少一個(gè):將第一計(jì)數(shù)器設(shè)置為使用第二計(jì)數(shù)器計(jì)算的新值,并且將最大值設(shè)置為使用第二計(jì)數(shù)器計(jì)算的另一新值。
18、本領(lǐng)域普通技術(shù)人員在閱讀以下附圖和詳細(xì)描述后,本公開的其他系統(tǒng)、方法、特征和優(yōu)點(diǎn)將會顯而易見或變得顯而易見。意圖是,所有這樣的附加系統(tǒng)、方法、特征和優(yōu)點(diǎn)都包括在本說明書中,在本公開的范圍內(nèi),并受所附權(quán)利要求的保護(hù)。
19、除非另有定義,否則本文使用的所有技術(shù)術(shù)語和/或科學(xué)術(shù)語具有與實(shí)施例所屬領(lǐng)域的普通技術(shù)人員通常理解的相同的含義。雖然在實(shí)施例的實(shí)踐或測試中可以使用與本文所述的方法和材料相似或等效的方法和材料,但下文描述了示例性方法和/或材料。在沖突的情況下,以專利說明書——包括定義——為準(zhǔn)。此外,材料、方法和示例僅是說明性的,而非旨在一定是限制性的。