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