專利名稱:?jiǎn)沃噶疃鄶?shù)據(jù)路徑處理器結(jié)構(gòu)的分支處理的制作方法
技術(shù)領(lǐng)域:
本發(fā)明是有關(guān)于單指令多數(shù)據(jù)路徑(single instruction multipledatapaths(SIMD))處理器結(jié)構(gòu)的條件程序(conditional processing)處理。
背景技術(shù):
并行處理是處理多數(shù)據(jù)項(xiàng)數(shù)組(array of data items)的有效方法。單指令多數(shù)據(jù)路徑處理器為并行處理數(shù)組結(jié)構(gòu)。每一數(shù)據(jù)路徑在一個(gè)時(shí)間內(nèi)只能處理一個(gè)數(shù)據(jù)項(xiàng)。舉一簡(jiǎn)單的例子,單指令多數(shù)據(jù)路徑處理器有四個(gè)數(shù)據(jù)路徑,具有四數(shù)據(jù)項(xiàng)數(shù)組的每一數(shù)據(jù)項(xiàng)將由對(duì)應(yīng)的四數(shù)據(jù)路徑其中一個(gè)來(lái)處理。
在單指令多數(shù)據(jù)路徑處理器程序執(zhí)行期間,在開始計(jì)算例如是如果-然后-其余(if-then-else)程序塊的條件程序塊之前,可以先使能多個(gè)數(shù)據(jù)路徑。在執(zhí)行條件程序塊前,每一數(shù)據(jù)路徑的PE狀態(tài),即是否使能或禁止的狀態(tài),一定要先存儲(chǔ)起來(lái)以免在執(zhí)行條件程序期間任何一種情況改變了PE狀態(tài)。此外,當(dāng)離開條件程序塊后,數(shù)據(jù)路徑的PE狀態(tài)必須要回復(fù)成進(jìn)入條件程序塊前的狀態(tài)。
發(fā)明內(nèi)容
本發(fā)明的目的在于,公開一種方法以判定執(zhí)行計(jì)算機(jī)程序時(shí)是否數(shù)據(jù)路徑應(yīng)執(zhí)行計(jì)算機(jī)程序的條件程序。方法包括判定是否所有數(shù)據(jù)路徑的PE狀態(tài)為禁止,且如果所有數(shù)據(jù)路徑的PE狀態(tài)為禁止則分支路徑繞過(guò)條件程序。也提供指令以執(zhí)行判定步驟和分支路徑。
在優(yōu)選的實(shí)施例中,如果程序被判定為確認(rèn),則不執(zhí)行分支路徑。
判定是否所有數(shù)據(jù)路徑的PE狀態(tài)為禁止包括評(píng)估與每一數(shù)據(jù)路徑相關(guān)的PE位。如果PE位為1則PE位為使能。如果PE位為0則PE位為禁止。
判定是否計(jì)算機(jī)程序?yàn)榇_認(rèn)包括評(píng)判定位。判定位為表示計(jì)算機(jī)程序?yàn)榇_認(rèn)的第一值,第二值表示計(jì)算機(jī)程序?yàn)榉谴_認(rèn)。
本發(fā)明的另一目的在于,指令結(jié)合分支路徑和在條件程序期間維持PE狀態(tài)的運(yùn)算。上述指令使數(shù)據(jù)路徑建立條件程序的數(shù)據(jù)路徑的PE狀態(tài)的狀態(tài),且如果所有數(shù)據(jù)路徑建立的PE狀態(tài)為禁止,則分支路徑繞過(guò)條件程序。
例如是如果條件塊的條件程序,在此例中指令也使數(shù)據(jù)路徑在建立條件程序狀態(tài)之前,存儲(chǔ)PE狀態(tài)的目前狀態(tài)。而條件程序也包括其它程序塊。
本發(fā)明實(shí)施例具有一個(gè)以上的下列優(yōu)點(diǎn)。
如果在進(jìn)入如果程序塊或其它程序塊之前禁止所有數(shù)據(jù)路徑,則這些塊中沒有任何工作需要完成。因此,分支路徑繞過(guò)這些工作使程序可以更快速地執(zhí)行。結(jié)合分支路徑的運(yùn)算和在條件程序中維持PE狀態(tài)的運(yùn)算能提供較快速、較有效率程序執(zhí)行,和較簡(jiǎn)化的程序。
測(cè)試判定的指標(biāo)提供程序代碼中相關(guān)的重迭(overriding)分支路徑且其必須滿足實(shí)時(shí)的限制。
本發(fā)明的其它特征和優(yōu)點(diǎn)出現(xiàn)在附圖的描述和權(quán)利要求中。
圖1單指令多數(shù)據(jù)路徑處理器(SIMD)的方框圖;和圖2具有分支程序而在某些情況下跳過(guò)條件程序的程序的方框圖。
具體實(shí)施例方式
類似的附圖標(biāo)記在不同的流程圖中表示類似的組件。
參考圖1,單指令多數(shù)據(jù)路徑處理器(SIMD)10包括指令超高速緩沖存儲(chǔ)器12,控制邏輯單元14,串行數(shù)據(jù)路徑16和多個(gè)并行數(shù)據(jù)路徑標(biāo)示為18a,18b,18c,18,…,18n。并行數(shù)據(jù)路徑18寫入內(nèi)存20。每一數(shù)據(jù)路徑18皆連結(jié)到PE位22。具體地說(shuō),并行數(shù)據(jù)路徑18a連結(jié)到PE位22a,并行數(shù)據(jù)路徑18b連結(jié)到PE位22b,以下類推。當(dāng)PE使能時(shí),所連結(jié)的并行數(shù)據(jù)路徑使能且并行數(shù)據(jù)路徑寫入數(shù)據(jù)項(xiàng)。舉例而言,PE 22a使能時(shí),并行數(shù)據(jù)路徑18a寫入數(shù)據(jù)項(xiàng);PE 22b使能時(shí),并行數(shù)據(jù)路徑18b寫入數(shù)據(jù)項(xiàng)。如果PE 22n使能時(shí),并行數(shù)據(jù)路徑18n寫入數(shù)據(jù)項(xiàng)。當(dāng)PE禁止時(shí),所連結(jié)的并行數(shù)據(jù)路徑禁止且并行數(shù)據(jù)路徑無(wú)法寫入數(shù)據(jù)項(xiàng)。
運(yùn)算時(shí),控制邏輯單元14從指令超高速緩沖存儲(chǔ)器12讀取指令。指令送往串行數(shù)據(jù)路徑16來(lái)提供指令給并行數(shù)據(jù)路徑18。除非個(gè)別處理器的使能位被禁止,否則每一并行數(shù)據(jù)路徑18同時(shí)讀取和同時(shí)寫入。
當(dāng)程序代碼(例如,程序塊包括一個(gè)以上的如果-然后-其它程序語(yǔ)句)的指令使單指令多數(shù)據(jù)路徑處理器10在程序代碼之間執(zhí)行條件程序塊時(shí),須計(jì)算每一數(shù)據(jù)路徑的目前PE狀態(tài),如此在條件程序塊執(zhí)行期間如果數(shù)據(jù)路徑的任何一PE狀態(tài)被修改,在完成條件程序塊時(shí)PE狀態(tài)就能被回復(fù)。條件程序塊經(jīng)常包括多個(gè)條件程序運(yùn)算,其中一些條件程序塊在其它條件程序運(yùn)算時(shí)執(zhí)行。為了保證優(yōu)選運(yùn)算,在進(jìn)入每一嵌套條件運(yùn)算前存儲(chǔ)每一數(shù)據(jù)路徑的PE狀態(tài),且在完成條件運(yùn)算后回復(fù)存儲(chǔ)的PE狀態(tài)。
參考圖2,程序代碼40包括如圖所示的條件程序塊42。在本例中條件程序塊42是如果-然后-其它程序塊,且包括后面跟隨其它程序塊46的如果程序塊44。很明顯的程序代碼40可能包括多個(gè)其他的條件程序塊42,而條件程序塊42可能包括附加的如果程序塊44和/或嵌套其中的其它程序塊46。本發(fā)明以單一條件程序塊為例,其具有如果程序塊44和其它程序塊46,在此僅作簡(jiǎn)單地描述。
在如果程序塊44開始時(shí),先存儲(chǔ)數(shù)據(jù)路徑18的目前PE狀態(tài),然后再執(zhí)行如果程序塊44。然后依據(jù)如果程序語(yǔ)句的結(jié)果來(lái)設(shè)定使能(PE=1)或禁止(PE=0)數(shù)據(jù)路徑18的PE狀態(tài)。唯有在數(shù)據(jù)路徑具有使能PE狀態(tài)時(shí)才執(zhí)行在如果程序塊44中的隨后程序。同樣地,如果所有數(shù)據(jù)路徑18的PE狀態(tài)設(shè)成禁止時(shí),將不會(huì)執(zhí)行在如果程序塊44中的隨后程序的工作。
在程序代碼40中的如果程序塊44的開始端插入分支程序50。在執(zhí)行如果程序語(yǔ)句時(shí)分支程序50測(cè)試數(shù)據(jù)路徑18的PE狀態(tài)。如果所有數(shù)據(jù)路徑18為禁止時(shí)(即PE=0),將跳過(guò)如果程序塊44的程序運(yùn)算而不影響程序代碼40的計(jì)算結(jié)果。由此,分支程序50經(jīng)52繞過(guò)如果程序塊44而到其它程序塊46。
在其它程序塊46的開始端也測(cè)試數(shù)據(jù)路徑18的PE狀態(tài)。如果所有數(shù)據(jù)路徑18為禁止時(shí)(即PE=0),將不執(zhí)行其它程序塊46的程序工作。由此,在本例中,分支程序60的分支路徑62繞過(guò)其它程序塊46而到程序代碼40的結(jié)束端64。
在一些情況下,程序代碼40的執(zhí)行須被確認(rèn)。因?yàn)橐粋€(gè)或其它原因(例如滿足實(shí)時(shí)的限制(deadline)),不管程序(例如具不具有其它程序塊46的如果程序塊44)是否可跳過(guò),須要以相同的時(shí)間量來(lái)執(zhí)行程序代碼40。如果如此,則由程序員來(lái)設(shè)定單指令多數(shù)據(jù)路徑處理器10的控制寄存器的程序判定碼(圖1的DET)。分支程序50和60測(cè)試DET位的狀態(tài)(0或1),如果DET位為1則不執(zhí)行分支路徑52和62。
一并公開(copending)的申請(qǐng)描述一種方法,用以在如果-然后-其它程序的條件程序期間存儲(chǔ)和維持PE狀態(tài)。分支程序50和60結(jié)合分支判定和PE狀態(tài)的設(shè)定和維持的運(yùn)算,以提供分別控制如果程序語(yǔ)句和其它程序語(yǔ)句所有所需要的工作的指令。
分支程序50結(jié)合PE狀態(tài)的存儲(chǔ)運(yùn)算和分支運(yùn)算,采取下面的形式if(SAVE_PE(Px),PE=Pn=0)go to X分支程序50以寄存器Px來(lái)存儲(chǔ)PE狀態(tài),然后設(shè)定寄存器Pn的內(nèi)容等于PE狀態(tài)。如果這些內(nèi)容為0時(shí)(即數(shù)據(jù)路徑的PE位全沒設(shè)定),分支程序50經(jīng)52至目的X(例如,隨后的其它程序塊46)。
如一并公開(copending)的申請(qǐng)所述,在一些條件下,數(shù)據(jù)路徑的PE狀態(tài)的轉(zhuǎn)換(例如,由1變0,0變1)優(yōu)先于其它程序塊。在一并公開(copending)的申請(qǐng)中上述轉(zhuǎn)換的指令稱作”FLIP”指令。分支程序60結(jié)合FLIP指令和分支運(yùn)算,采取下面的形式if (FLIP_PE(Px)) go to Y分支程序60將轉(zhuǎn)換適當(dāng)?shù)腜E位(依一并公開(copending)的申請(qǐng)的規(guī)則)且如果沒有一個(gè)PE狀態(tài)設(shè)定時(shí),將分支至目的Y(即,其它程序塊46的結(jié)束點(diǎn)64)。
其它實(shí)施例將包括在下列權(quán)利要求內(nèi)。
例如,分支程序50和60將使用其它指令來(lái)存儲(chǔ)及修正在條件程序期間的PE狀態(tài)。
在條件程序塊42的起始點(diǎn)可插入另一分支程序來(lái)判定是否禁止所有數(shù)據(jù)路徑18的PE狀態(tài)(即PE狀態(tài)優(yōu)先于任何條件程序語(yǔ)句)。如果所有PE狀態(tài)為禁止時(shí),在如果程序塊44或其它程序塊46期間將不執(zhí)行任一數(shù)據(jù)路徑18。因此,分支程序?qū)⒎种窂嚼@過(guò)整個(gè)條件程序塊42。如果判定位DET被設(shè)定時(shí),將不執(zhí)行分支程序50和60的分支路徑。
本發(fā)明的優(yōu)選實(shí)施例描述如上,然而,在不脫離本發(fā)明的精神和范圍內(nèi),可改變和改進(jìn)。此外,其余實(shí)施例皆在權(quán)利要求內(nèi)。
權(quán)利要求
1.一種用于判定是否多個(gè)執(zhí)行計(jì)算機(jī)程序的數(shù)據(jù)路徑應(yīng)執(zhí)行在計(jì)算機(jī)程序中的條件程序的方法,包括判定是否所有上述數(shù)據(jù)路徑的PE狀態(tài)為禁止;判定是否上述計(jì)算機(jī)程序?yàn)榇_認(rèn);以及如果所有上述數(shù)據(jù)路徑的上述PE狀態(tài)為禁止且上述計(jì)算機(jī)程序未確認(rèn)時(shí),則分支路徑繞過(guò)上述條件程序。
2.如權(quán)利要求1所述的方法,其中判定是否所有上述多個(gè)數(shù)據(jù)路徑的PE狀態(tài)為禁止,包括評(píng)估與上述多個(gè)數(shù)據(jù)路徑中的每一個(gè)相關(guān)的處理器使能位。
3.如權(quán)利要求2所述的方法,其中如果使能位的值為1,則處理器使能位為使能。
4.如權(quán)利要求2所述的方法,其中如果使能位的值為0,則處理器使能位為禁止。
5.如權(quán)利要求1所述的方法,其中判定是否上述計(jì)算機(jī)程序?yàn)榇_認(rèn)包括評(píng)估一判定位。
6.如權(quán)利要求5所述的方法,其中上述判定位包括第一值,以表示上述計(jì)算機(jī)程序?yàn)榇_認(rèn)。
7.如權(quán)利要求5所述的方法,其中上述判定位包括第二值,以表示上述計(jì)算機(jī)程序?yàn)槲创_認(rèn)。
8.一種用于判定是否多個(gè)執(zhí)行計(jì)算機(jī)程序的數(shù)據(jù)路徑應(yīng)執(zhí)行在計(jì)算機(jī)程序中的條件程序的方法,包括判定是否上述數(shù)據(jù)路徑的全部PE狀態(tài)為禁止;以及如果所有上述數(shù)據(jù)路徑的全部PE狀態(tài)為禁止,則分支路徑繞過(guò)上述條件程序塊。
9.如權(quán)利要求8所述的方法,其中判定還包括判定上述程序是否未確認(rèn)。
10.如權(quán)利要求9所述的方法,其中上述分支路徑還包括如果所有上述數(shù)據(jù)路徑的全部PE狀態(tài)為禁止且上述程序?yàn)槲创_認(rèn),則執(zhí)行分支路徑。
11.如權(quán)利要求9所述的方法,還包括如果上述程序?yàn)榇_認(rèn),則不執(zhí)行分支路徑。
12.一指令集,用以在條件程序期間由數(shù)據(jù)路徑來(lái)執(zhí)行,包括使上述數(shù)據(jù)路徑執(zhí)行下列步驟的一指令判定是否所有上述數(shù)據(jù)路徑的PE狀態(tài)為禁止;以及如果所有上述數(shù)據(jù)路徑的上述PE狀態(tài)為禁止,則分支路徑繞過(guò)上述條件程序。
13.如權(quán)利要求12所述的指令集,其中如果上述程序?yàn)榇_認(rèn),則不執(zhí)行上述分支路徑。
14.一指令集,用以在條件程序期間由數(shù)據(jù)路徑來(lái)執(zhí)行,包括使上述數(shù)據(jù)路徑執(zhí)行下列步驟的一指令建立上述條件程序的上述數(shù)據(jù)路徑的PE狀態(tài)的狀態(tài);判定是否所有上述數(shù)據(jù)路徑的上述建立的PE狀態(tài)為禁止;以及如果所有上述數(shù)據(jù)路徑的上述建立的PE狀態(tài)為禁止,則分支路徑繞過(guò)上述條件程序。
15.如權(quán)利要求14項(xiàng)所述的指令集,其中上述條件程序包括如果程序塊。
16.如權(quán)利要求15項(xiàng)所述的指令集,其中上述指令在建立之前還使數(shù)據(jù)路徑存儲(chǔ)上述PE狀態(tài)的當(dāng)前狀態(tài)。
17.如權(quán)利要求14項(xiàng)所述的指令集,其中上述條件程序包括其它程序塊。
18.如權(quán)利要求14項(xiàng)所述的指令集,其中如果程序?yàn)榇_認(rèn),則不執(zhí)行上述分支路徑。
全文摘要
一種方法,用以判定計(jì)算機(jī)程序(40)執(zhí)行時(shí)數(shù)據(jù)路徑(18a-18d)是否應(yīng)執(zhí)行條件程序塊(42),包括判定是否所有數(shù)據(jù)路徑(18a-18d)的PE(處理器使能)狀態(tài)(22a-22d)為禁止,且如果所有數(shù)據(jù)路徑(18a-18d)的PE狀態(tài)(22a-22d)為禁止,則分支路徑繞過(guò)條件程序(42,44,46)。即使所有數(shù)據(jù)路徑(18a-18d)的PE狀態(tài)(22a-22d)為禁止,如果程序(40)被判定為確認(rèn)(deterministic)時(shí),分支路徑不會(huì)執(zhí)行。而確認(rèn)是由評(píng)估確認(rèn)位的狀態(tài)(圖1的DET)。指令亦提供判定和分支運(yùn)算的執(zhí)行(carry out)。指令也結(jié)合了在條件程序期間維持PE狀態(tài)(22a-22d)的運(yùn)算。
文檔編號(hào)G06F9/44GK1486459SQ01821982
公開日2004年3月31日 申請(qǐng)日期2001年11月9日 優(yōu)先權(quán)日2000年11月28日
發(fā)明者約翰·L·雷福德, 約翰 L 雷福德 申請(qǐng)人:奇普賴茨設(shè)計(jì)公司