TWI501148B - 條件式比較指令 - Google Patents
條件式比較指令 Download PDFInfo
- Publication number
- TWI501148B TWI501148B TW100113216A TW100113216A TWI501148B TW I501148 B TWI501148 B TW I501148B TW 100113216 A TW100113216 A TW 100113216A TW 100113216 A TW100113216 A TW 100113216A TW I501148 B TWI501148 B TW I501148B
- Authority
- TW
- Taiwan
- Prior art keywords
- condition
- comparison
- conditional
- instruction
- state
- Prior art date
Links
- 238000012360 testing method Methods 0.000 claims description 161
- 238000000034 method Methods 0.000 claims description 38
- 230000008569 process Effects 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 8
- 230000004044 response Effects 0.000 claims description 6
- 238000003672 processing method Methods 0.000 claims description 3
- 230000001343 mnemonic effect Effects 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013101 initial test Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Tests Of Electronic Circuits (AREA)
- Debugging And Monitoring (AREA)
Description
本發明相關於資料處理領域。更特定而言,本發明相關於條件式比較指令。
已知可提供具有用以代表處理裝置之當前條件狀態的各種條件旗標(flag)的處理裝置。此種資料處理裝置的一範例為由設立在英國劍橋的ARM Limited所設計之執行ARM指令集的處理器。指令可經安排以條件式地執行,以使條件旗標的當前狀態在條件式指令執行時,控制是否要施行條件式運算。例如,對於一種條件式指令類型,在執行時測試當前條件狀態,且若當前條件狀態通過測試,則根據對兩運算元所施行的運算結果更新條件旗標。若當前條件狀態未通過測試,則指令作為不具功能的NOP指令,因此不改變條件旗標。
此種指令可用以實施一些測試與對測試結果之邏輯運算的組合。例如,可使用指令序列來估算(evaluate)邏輯陳式(A==B && C==D)∥E==F,此邏輯陳式包含初始測試A==B及隨後更進一步的測試鏈,並使用AND(&&)或OR(∥)運算將其每一者的結果與自先前運算產生的條件旗標結合,指令序列包含無條件式比較指令與一或多個條件式比較指令,每一個條件式比較指令被安排以僅在先前指令的結果滿足特定條件時更新條件旗標。
例如,陳式(A==B && C==D)∥E==F可由以下的指令序列估算出:
CMP A,B
CMPEQ C,D
CMPNE E,F
無條件式比較指令CMP A,B比較A與B的值,並根據比較結果設定條件旗標。若A與B相等,則條件旗標被置於EQ狀態,同時若A與B不相等,則條件旗標被置於NE狀態。
在執行條件式比較指令CMPEQ C,D時,若條件旗標為在EQ狀態中(亦即,測試A==B滿足),則施行C與D之間的比較,且根據比較結果更新條件旗標。另外,在條件旗標為在NE狀態中時(亦即,測試A==B未滿足),則CMPEQ指令作為NOP且不改變條件旗標。此意味著在執行首兩個指令之後,條件旗標將僅在A=B與C=D時指示EQ狀態,並將在其他情況指示NE狀態。此為使用AND運算結合A==B與C==D測試的正確結果。
接著,執行條件式比較指令CMPNE E,F,且若條件旗標為在EQ狀態中(亦即,測試A==B && C==D滿足),則CMPNE指令將被當作NOP,且因此條件碼將保持在EQ狀態中。另外,若條件旗標為在NE狀態中(亦即,測試A==B && C==D未滿足),則施行E與F的比較,且根據比較結果更新條件旗標。因此,若(A=B AND C=D)或E=F,最終結果將為EQ,且當這些測試都未滿足時最終結果將為NE。此為使用OR運算結合(A==B && C==D)與E==F測試的正確結果。
因此,條件式比較指令CMPEQ與CMPNE可用以估算為(A==B && C==D)∥E==F之形式的測試鏈。然而,僅可當鏈內所有的個別測試估算相同種類關係時,或在估算可被轉換成相同種類關係的不同種類關係時使用這些種類的指令。例如,在先前範例中,所有個別測試估算「相等」關係。或者,條件式指令可用以代表為(A>B && C<D)之形式的邏輯條件,因為關係C<D可被轉換成D>C,其與A>B為相同種類關係。然而,不可能測試諸如(例如)(A>B∥C==D) && E<=F或A==B && C!=D之邏輯陳式,因為被測試的關係不同且無法彼此轉換。
因此,這些條件式指令僅可用於測試特定種類的邏輯陳式。此意味著使用此等指令所能編譯的原始碼數量被限制,且對編譯器而言,測定條件式指令是否可用於特定應用係為複雜的。
本發明之第一態樣提供一種資料處理裝置,包含:處理電路,其用於處理資料;指令解碼器,其回應於程式指令以產生用於控制該處理電路以處理該資料的控制訊號;狀態儲存器,其用於儲存該處理電路的當前條件狀態,該當前條件狀態在處理該資料期間為可修改的;其中該等程式指令包含條件式比較指令,且該指令解碼器回應於該條件式比較指令以產生用於控制該處理電路以施行條件式比較運算的控制訊號,該條件式比較運算包含:
(i) 若該當前條件狀態通過測試條件,則對第一運算元與第二運算元施行比較運算,並設定該當前條件狀態為在該比較運算期間產生的結果條件狀態;以及
(ii) 若該當前條件狀態未通過該測試條件,則設定該當前條件狀態為由該條件式比較指令指定的未通過條件狀態。
本技術提供條件式比較指令,其控制處理電路以測定處理電路的當前條件狀態是否通過測試條件。獨立於當前條件狀態通過或未通過測試條件,當前條件狀態被更新。新的當前條件狀態值由不同方式測定,取決於當前條件狀態通過或未通過測試條件。若當前條件狀態通過測試條件,則對第一運算元與第二運算元施行比較運算,且當前條件狀態被設定為在比較運算期間產生的結果條件狀態。另一方面,若當前條件狀態未通過測試條件,則當前條件狀態被設定為由該條件式比較指令指定的未通過條件狀態。
能夠指定特定未通過條件狀態值(其在當前條件狀態未通過測試條件時取代當前條件狀態)的能力,使條件式比較指令能夠用以測試不同類型的比較序列鏈。此係因為,對於對應於鏈中的一個比較的條件式比較指令,未通過條件狀態可用以建立所需測試鏈中的下一個比較的特定條件狀態。因此可使用條件式比較指令,即使序列鏈中的關係無法被轉換成相同種類關係。例如,可測試為((S==T && U>=0)∥A!=B)&& C>D之形式的序列,即使被測試的個別關係==、>=、!=、>不同且無法彼此轉換。此意味著可更廣泛的使用條件式比較指令,相較於先前已知的條件式比較指令,且因此可更容易的由編譯器使用。
狀態儲存器可為任意種類之用於儲存當前條件狀態的儲存位置。在一範例具體實施例中,狀態儲存器可包含狀態暫存器。
裝置的當前條件狀態可包含儲存在狀態儲存器中的至少一個條件碼旗標的值。例如,可提供條件碼旗標以指示先前比較產生了負值、零值、進位、或是溢位。較後的比較隨後可依據條件旗標值被製成為條件式,以使較後比較的結果亦取決於較早的比較。此使較早的比較與較後的比較能夠被鏈結在一起以形成結合的邏輯條件。
條件式比較指令可包含用於指定測試條件的欄位。可由包含條件式比較指令之程式的程式設計師直接指定測試條件,或在條件式比較指令為代表所需邏輯陳式之程式指令序列的一部分時,可由編譯器自動地產生測試條件。
可由條件比較指令指定未通過條件狀態為一立即值(immediate value)。因此,立即值指示在條件式比較指令執行之時的當前條件狀態未通過測試條件時,當前條件狀態將被設定至的值。
代表未通過條件狀態的立即值,可為由包含條件式比較指令的程式之程式設計師設定的可程式值。此使程式設計師能夠直接控制未通過條件狀態。
另外,代表未通過條件狀態的立即值,亦可為由包含條件式比較指令的程式之編譯器設定的可程式值,編譯器根據所需條件選定可程式值,條件式比較指令的未通過條件狀態隨後必須通過此所需條件。在此情況中,編譯器可測定所需條件為何,且若測試條件未通過,則將所需條件轉換成將寫入當前條件狀態的可程式值。例如,若所需條件為EQ條件,則編譯器可選定一可程式值,其在發生測試條件未通過時被寫入條件旗標,並導致EQ條件被滿足。在多個可能的可程式值之每一者皆滿足所需條件的情況下,可安排編譯器來應用對於選定要使用哪一個可程式值的選擇準則,以確保編譯器每次皆以同樣的方式編譯一特定原始碼。例如,編譯器可選定最大或最小之滿足所需條件的可能值,或應用任意其他之對於選定用作未通過條件狀態值的一個值的規則。
未通過條件狀態值可被指定為N位元未通過條件狀態值,其中N為大於零的任意整數,且當前條件狀態可由N位元值代表。指令解碼器可控制處理電路,以在當前條件狀態未通過測試條件時,將N位元未通過條件狀態值寫入狀態儲存器中。可由相同方式編碼未通過條件狀態與當前條件狀態,以使未通過條件狀態值的特定位元在當前條件狀態未通過測試條件時,可簡單地被寫入至狀態儲存器中以更新當前條件狀態。
在一範例具體實施例中,當前條件狀態可能夠被設定至複數個條件狀態中之任意者,包含一預定條件狀態,且若指定預定條件狀態值為未通過條件狀態的條件式比較指令未通過測試條件,則當前條件狀態僅可被設定至預定條件狀態。
在條件式比較指令未通過其測試條件時,當前條件狀態被設定至在指令中指定的未通過條件狀態。在條件式比較指令通過其測試條件時,施行比較運算且根據比較運算結果更新當前條件狀態。因為由比較運算產生的被更新的條件狀態可與未通過條件狀態相同,所以不可能精確地測定測試條件為通過或未通過。
因此,在一範例具體實施例中,可提供無法出現於正常處理運算中的預定條件狀態。預定條件狀態為條件式比較指令所專有,以使處理電路僅可在指定預定條件狀態為其未通過條件狀態的條件式比較指令未通過其測試條件時,被置於預定條件狀態中。因此,有可能藉由測試隨著條件式比較指令的執行是否出現了預定條件狀態,以測定指定預定條件狀態為其未通過條件的條件式比較指令是否通過或未通過其測試條件。此可為有幫助的,例如,對於測試一特定資料值是否在一給定資料值範圍之中。
條件式比較指令可包含用於指定第一運算元與第二運算元的第一與第二運算元欄位。第一與第二運算元欄位之至少一者可指定儲存第一運算元或第二運算元的儲存位置。藉由指定用於儲存運算元之儲存位置(例如,暫存器)的數量,運算元欄位可用以識別在指令編碼中之具有大於可用於運算元欄位之位元數的位元數的運算元。再者,參照在運算元欄位中的儲存位置,允許在欲指定之相同指令的多次執行之間有差異的可變運算元。
指令解碼器可經組態以回應指定位元值預定組合的運算元欄位之一者,來控制處理電路以施行條件式比較運算,且第一與第二運算元之對應的一者具有零值。例如,一全1位元值(例如,0b11111)可作為用於指示零運算元的位元值預定組合。因此,位元值預定組合不被指令解碼器解譯(interprete)為儲存位置指定符(specifier),而是用以識別一零值。此為有幫助的,因為使用零值的比較是常見的,且因此能夠直接以指令語法編碼此種比較,意味著通常可避免需要存取儲存位置以獲得零運算元。
第一與第二運算元欄位之一者可指定一立即值為第一運算元或第二運算元。這種指令形式對於在可變值與固定值之間的比較可為有幫助的。在此情況中,運算元欄位之一者可用以指定儲存可變運算元的儲存位置,且其他運算元欄位可用以指定代表固定值的立即值。
若條件式比較指令的測試條件被滿足,則由處理電路施行的比較運算可為各種形式。例如,比較運算可包含以下步驟之任意一者:
(a) 將該第一運算元減去該第二運算元;
(b) 將該第一運算元加上該第二運算元;
(c) 對該第一運算元與該第二運算元施行按位元(bitwise)EOR(exclusive OR)運算;
(d) 對該第一運算元與該第二運算元施行按位元AND運算;
(e) 將該第一運算元、該第二運算元、與該狀態儲存器的進位位元相加;
(f) 對該第一運算元與該第二運算元施行按位元OR運算。
比較運算亦可包含對第一與第二運算元施行之另一算數或邏輯運算。
本發明之另一態樣提供一種資料處理裝置,包含:處理構件,用於處理資料;指令解碼器構件,用於回應於程式指令以產生控制訊號,該等控制訊號係用於控制該處理構件以處理該資料;狀態儲存器構件,用於儲存該處理構件的當前條件狀態,該當前條件狀態在處理該資料期間為可修改的;其中該等程式指令包含條件式比較指令,且該指令解碼器構件回應於該條件式比較指令以產生用於控制該處理構件以施行條件式比較運算的控制訊號,該條件式比較運算包含:
(i) 若該當前條件狀態通過測試條件,則對第一運算元與第二運算元施行比較運算,並設定該當前條件狀態為在該比較運算期間產生的結果條件狀態;以及
(ii) 若該當前條件狀態未通過該測試條件,則設定該當前條件狀態為由該條件式比較指令指定的未通過條件狀態。
本發明之另一態樣提供一種資料處理方法,包含以下步驟:回應於包含條件式比較指令的程式指令,產生用於控制處理電路以處理資料的控制訊號;儲存該處理電路的當前條件狀態,該當前條件狀態在處理該資料期間為可修改的;回應於該條件式比較指令,產生用於控制該處理電路以施行條件式比較運算的控制訊號,該條件式比較運算包含:
(i) 若該當前條件狀態通過測試條件,則對第一運算元與第二運算元施行比較運算,並設定該當前條件狀態為在該比較運算期間產生的結果條件狀態;以及
(ii) 若該當前條件狀態未通過該測試條件,則設定該當前條件狀態為由該條件式比較指令指定的未通過條件狀態。
本發明之另一態樣提供一種編譯由資料處理裝置執行之程式指令序列的方法,程式指令序列包含無條件式比較指令與至少一個條件式比較指令,無條件式比較指令係用於控制該資料處理裝置以對兩運算元施行無條件式比較運算,並設定該資料處理裝置之當前條件狀態為在該無條件式比較運算期間產生的結果條件狀態,至少一個條件式比較指令係用於控制該資料處理裝置以施行條件式比較運算,條件式比較運算包含以下步驟:(i) 若該資料處理裝置的該當前條件狀態通過測試條件,則對第一運算元與第二運算元施行比較運算,並設定該當前條件狀態為在該比較運算期間產生的結果條件狀態;以及(ii) 若該當前條件狀態未通過該測試條件,則設定該當前條件狀態為由該條件式比較指令指定的未通過條件狀態;該方法包含以下步驟:
(a) 接收定義使用一或多個AND或OR運算邏輯結合(logically combined)之N個比較運算的序列鏈的資料之輸入,其中N為大於1的整數,該等N個比較運算之每一者係測試各別的運算元是否滿足各別的預定準則;
(b) 產生對應該序列鏈之第一個比較運算的該無條件式比較指令;
(c) 對於在2與N之間的每個整數值i,施行下列步驟:
(i)測定該序列鏈之第i個比較運算是否使用AND運算或OR運算與部分序列鏈的結果邏輯結合,該部分序列鏈包含該序列鏈之第一個至第i-1個比較運算;
(ii) 若該第i個比較運算係使用AND運算與該部分序列鏈的該結果邏輯結合,則產生對應該第i個比較運算的條件式比較指令,該條件式比較指令係將在該第i-1個比較運算的該預定準則被滿足時通過的條件指定為該測試條件,並將對應該第i個比較運算的該預定準則未被滿足的條件狀態指定為該未通過條件狀態;
(iii) 若該第i個比較運算係使用OR運算與該部分序列鏈的該結果邏輯結合,則產生對應該第i個比較運算的條件式比較指令,該條件式比較指令係將在該第i-1個比較運算的該預定準則未被滿足時通過的條件指定為該測試條件,並將對應該第i個比較運算的該預定準則被滿足的條件狀態指定為該未通過條件狀態;
(d) 將至少在步驟(b)中產生的該無條件式比較指令與在步驟(c)中產生的N-1個該條件式比較指令輸出為該程式指令序列。
本技術之條件式比較指令可用以代表使用一或多個AND或OR運算邏輯結合的N個比較運算的序列鏈。N個比較運算之每一者測試各別的運算元是否滿足預定準則。本技術之條件式比較指令使比較運算之每一者能夠測試不同的準則。例如,比較運算之一者可測試一個運算元是否大於另一個運算元,而下一個比較運算可測試一個運算元是否等於另一個運算元,且另一個比較運算可測試一個運算元是否不等於另一個運算元。
注意到名詞「準則」係用於表示由特定比較(例如,A>B或C==D)測試的關係,儘管名詞「條件」表示控制條件式比較指令的比較運算是否被施行的測試(例如,用以看看當前條件狀態是否為HI狀態的測試、用以看看Z旗標是否被設定以表示先前結果為零的測試、或為用以看看N旗標是否被設定以表示先前結果為負的測試)。
可由產生對於每個比較運算的比較指令,一步步建構代表N個比較運算之序列鏈的程式指令的序列(N為大於一的整數)。每個比較運算指定預定準則(例如,A<B),且藉由AND或OR運算被鏈結至先前比較運算的部分序列鏈的結果。對於序列鏈中的第一個比較運算,產生一無條件式比較指令。對於第i個比較運算(i為2至N之間的任意整數),產生一條件式比較指令,且第i個條件式比較指令的測試條件與未通過條件狀態係取決於第i個比較運算是否以AND運算或OR運算與部分序列鏈的結果邏輯結合,部分序列鏈包含第一個至第i-1個比較運算。
若第i個比較運算係由AND運算與先前比較運算的部分序列鏈的結果邏輯結合,則第i個條件式比較指令指定在第i-1個比較的預定準則被滿足時通過的一條件為測試條件,且指定對應至未被滿足的第i個比較運算的預定準則的條件狀態為未通過條件狀態。此確保若第i-1個預定準則產生「未通過」結果,則第i個條件式比較指令將不會通過其測試條件,且因此回到其自身的未通過條件狀態,同時若第i-1個預定準則比較運算產生「通過」結果,則第i個比較運算將通過其測試條件,且將產生取決於第i個預定準則是否被滿足的結果條件狀態。因此,第i個與第i-1個比較的結合僅將在第i-1個與第i個預定準則皆被滿足時產生通過結果,其為AND運算所需的行為。
另一方面,若第i個比較運算係使用OR運算與先前比較運算的部分序列鏈的結果邏輯結合,則產生對應第i個比較運算的條件式比較指令,條件式比較指令指定在第i-1個比較運算的預定準則未被滿足時通過的條件為測試條件,且指定對應至第i個比較運算的預定條件被滿足的條件狀態為未通過條件狀態。此確保若第i-1個預定準則被滿足,則第i個條件式比較指令不通過其測試條件,且因此產生對應至第i個預定條件被滿足的「通過」條件狀態為其未通過條件狀態。另一方面,若第i-1個比較未滿足其預定準則,則第i個條件式比較指令通過其測試條件,且因此將產生取決於第i個預定準則是否被滿足的結果條件狀態。此意味著總體結果將為相關於第i個預定準則的「通過」條件,只要第i-1個與第i個預定準則之任意者被滿足。此為OR運算所需的行為。
因此,藉由產生為此形式的條件式比較指令串(string),可將比較序列鏈轉換成程式指令序列。所產生的指令序列隨後被輸出。
將認知到,產生無條件式比較指令與條件式比較指令的時間順序並不重要。例如,可由對應至比較運算序列鏈的時間順序產生指令(亦即,使計數器i從2遞增至N)。或者,可由序列鏈的反向時間順序產生指令(使計數器從N遞減至2),或可由任意其他時間順序。無論由何時間順序產生指令,所產生的指令的程式順序為相同,其中第一個指令為對應至鏈中第一個比較運算的無條件式比較指令,第二個指令為對應至鏈中第二個比較運算的條件式比較指令,以此類推。
可提供用於儲存電腦程式的電腦儲存媒體,電腦程式在由電腦執行時控制電腦以施行用於編譯如上所述之程式指令序列之方法。
本發明之另一態樣提供儲存電腦程式之非暫態性(non-transitory)電腦儲存媒體,電腦程式包含用於控制處理電路以施行條件式比較運算的條件式比較指令,條件式比較運算包含:
(i) 若該處理電路的當前條件狀態通過測試條件,則對第一運算元與第二運算元施行比較運算,並設定該當前條件狀態為在該比較運算期間產生的結果條件狀態;以及
(ii)若該當前條件狀態未通過該測試條件,則設定該當前條件狀態至由該條件式比較指令指定的未通過條件狀態。
本發明之上述與其他的目的、特徵與優點將顯然於下文之說明性具體實施例的實施方式,其需連同附加圖式閱讀。
第1圖圖示說明資料處理裝置2。資料處理裝置2包含用於處理資料的處理電路4。處理電路可包含各種部件,例如暫存器庫6、加法器8、移位器10與乘法器12。加法器8、移位器10與乘法器12一同處理儲存在暫存器庫6中的資料,並將處理結果寫回暫存器庫6。將認知到處理電路4並不限於此配置,且通常將包含許多其他部件,其為了簡明目的不在此圖示說明。資料處理裝置2包含解碼器14,其回應於程式指令以產生用於控制處理電路4以處理資料的控制訊號。
資料處理裝置2包含用於儲存狀態資料的狀態儲存器15,狀態資料包含處理電路4的至少一個當前條件狀態。在第1圖之範例中,狀態儲存器15為狀態暫存器,但儲存位置亦可包含其他形式的儲存位置。雖然在第1圖中圖示說明狀態暫存器15為在處理電路4中,在其他具體實施例中,狀態暫存器15可被定位於裝置2的另一部分中。在一具體實施例中,由儲存在狀態暫存器15中的一組條件碼旗標表示當前條件狀態。條件碼旗標表示由處理電路4產生的先前處理結果的條件。
在第2圖圖示說明之範例具體實施例中,狀態暫存器15的條件碼旗標包含用於表示先前處理結果是否為負數的負旗標N、用於表示先前處理結果是否為零的零旗標Z、用於表示在產生先前處理結果時是否發生了進位的進位旗標C、以及用於表示在產生先前處理結果時是否發生了溢位的溢位旗標V。因此,條件碼旗標的值提供了關於先前處理結果的資訊。旗標可被設定(set)以表示發生了負數、零值、進位或溢位,且可被清除(clear)以表示相反的狀況,或反之亦然。對於由條件碼旗標N、Z、C、V的不同組合所代表的資訊的範例,可見於第8圖與第10圖。
第3A圖圖示說明根據本技術的條件式比較指令CCMP的範例語法。條件式比較指令具有用於指定測試條件、兩個運算元、與未通過條件狀態的欄位。指令解碼器14係回應條件式比較指令以控制處理電路4,來測定儲存在狀態暫存器15中的當前條件狀態是否滿足與條件式比較指令相關的測試條件(cond)。若當前條件狀態滿足測試條件,則處理電路4對兩個運算元施行比較運算,且基於處理結果更新當前條件狀態(例如,若比較運算產生負值,則條件旗標N可被設定)。若在條件式比較指令執行之時的當前條件狀態不滿足測試條件,則比較運算不被施行,且由條件式比較指令指定的未通過條件狀態值被寫入至狀態暫存器15中以更新當前條件狀態。
第3B圖圖示說明第3A圖的條件式比較指令的範例編碼。在此範例中,指令包含用於指定測試條件的4位元欄位、用於指定運算元暫存器的兩個5位元欄位、以及用於指定未通過條件狀態的4位元欄位。將認知到,可依所需對每個欄位使用其他位元數量。在此範例中,4位元測試條件識別符#0b0000表示EQ條件。在指令被執行時,測試條件碼以看看是否滿足EQ測試條件。若滿足EQ測試條件,則比較儲存在運算元暫存器(在此範例中為暫存器R2與R9)內的值,且基於比較結果更新條件碼。若未滿足EQ測試條件,則寫入未通過條件狀態值(在此範例中為#0b0001)至條件碼NZCV中。
在第3A圖的語法中,條件式比較指令使用暫存器指定符Rn、Rm指定運算元之兩者。暫存器指定符Rn、Rm識別儲存欲比較之運算元的暫存器庫6的暫存器。欲比較的運算元可為整數或浮點數。
在如第4A圖所圖示之另一範例語法中,可指定運算元之一者#op為在條件式比較指令中的立即值。在欲比較變數與常數彼此時,此可為有用的。第4B圖圖示具有如第4A圖所圖示之語法的指令的範例編碼。若滿足測試條件(例如,LT),則比較儲存在運算元暫存器(例如,R7)中的值與立即值(例如,#19),且根據比較更新條件碼。若未滿足測試條件,則寫入未通過條件狀態碼#0b0000至條件碼NZCV中。
在使用暫存器指定符指定運算元時,指令解碼器14可選擇性地經配置以解譯特定暫存器指定符值為表示一零運算元,而非儲存在暫存器內的運算元。例如,在第3圖之具體實施例中,在暫存器指定符Rm指定全1位元值0b11111時,此可用以表示處理電路4需將儲存在暫存器Rn中的運算元與一零值比較。
在第3圖與第4圖兩者之語法中,指定未通過條件狀態為立即值,立即值代表若測試條件未通過則欲寫入狀態暫存器15的條件碼旗標的位元值。例如,使用如第2圖所圖示之NZCV條件碼旗標,代表0b0100之未通過條件狀態的立即值可表示需寫入0至負旗標N、進位旗標C與溢位旗標V,且需寫入1至零旗標Z。以此方式,若未通過測試條件,則條件式比較指令直接指定欲採取(adopt)的條件狀態。此為有用的,因為此使條件式比較指令能夠用以設定當前條件狀態為準備由隨後條件式指令使用之適當的值。
第5圖圖示說明一種用於使用本技術之條件式比較指令的資料處理方法。在步驟50,指令解碼器14解碼指令序列的下一個指令。在步驟60,解碼器14測定下一個指令是否為條件式比較指令。若下一個指令不為條件式比較指令,則在步驟70指令解碼器14產生對應於下一個指令的控制訊號,且控制處理電路4施行對應於下一個指令的運算。隨後程序進行至步驟80,在步驟80處測定是否還有任何指令需處理。若還有需處理的指令,則方法回到步驟50,且解碼下一個指令。若沒有欲處理的指令,則方法結束。
另一方面,若在步驟60下一個指令為條件式比較指令,則指令解碼器產生用於控制處理電路4的控制訊號以施行條件式比較運算。在步驟90,處理電路4測定由狀態暫存器15的條件碼旗標代表的當前條件狀態是否通過與條件式比較指令相關的測試條件。若當前條件狀態通過了測試條件,則在步驟100處理電路4被控制以對第一與第二運算元施行比較運算。隨後在步驟110更新狀態暫存器15,以設定當前條件狀態為於在步驟100施行比較運算的同時產生的結果條件狀態。
另一方面,若在步驟90當前條件狀態未通過測試條件,則在步驟120設定當前條件狀態為由條件式比較指令指定的未通過條件狀態。例如,寫入由條件式比較指令指定的立即值狀態至儲存器15的條件碼旗標。
無論在步驟90當前條件狀態是否通過了測試條件,方法隨後進行至步驟80,且測定是否仍有需處理的指令。若存在需處理的另一指令,則方法回到步驟50。若無,則方法結束。
第5圖圖示無論條件式比較指令的當前條件狀態是否通過測試條件,代表當前條件狀態的條件碼旗標被更新(相對於先前條件式指令,若測試條件未通過則其作為無作業(no-op)指令)。當前條件狀態的更新值取決於當前條件狀態是否通過測試條件。若當前條件狀態通過測試條件,則更新的條件狀態係基於比較第一與第二運算元的結果來測定,同時若當前條件狀態未通過測試條件,則更新值為由條件式比較指令指定的未通過條件狀態。此種指令係為有用的,因為若當前條件狀態未通過測試條件,則指定當前條件狀態需被更新至之未通過條件狀態的能力,使這些指令能夠用以代表一串測試不同種類之邏輯關係的比較運算鏈。
可提供各種類型的條件式比較指令,其每一者根據第5圖的步驟90-120來處理,但在步驟100使用不同的比較運算。第6A圖至第6F圖圖示說明這些條件式比較指令類型的範例。第6A圖至第6F圖圖示說明使用暫存器指定符識別第一與第二運算元之形式的指令,但亦可提供這些指令之每一者之替代形式,其中運算元之一者被指定為立即值。若為所需,則亦可修改這些指令的語法,以指定未通過條件狀態為助憶(mnemonic)條件而非為立即值#imm,如解釋於下文。
第6A圖圖示說明條件式比較正指令CCMP。若由條件式比較正指令指定的測試條件被通過,則處理電路4被控制以從第一運算元減去第二運算元,並寫入結果條件狀態至條件旗標,同時若測試條件未被通過,則寫入在指令中指定的未通過條件狀態#imm至條件旗標。此種指令對測試第一運算元是否大於、或等於第二運算元可為有用的。
第6B圖圖示說明條件式比較負指令CCMN。若由指令指定的測試條件由當前條件狀態通過,則第一與第二運算元被相加且結果條件狀態被寫入條件旗標,同時若當前條件狀態未通過測試條件,則寫入未通過條件狀態#imm至條件旗標。此種指令可幫助測試第一運算元是否大於由將第二運算元乘上-1所獲得的值(因為將第一與第二運算元相加,係等於從第一運算元減去(-1*第二運算元))。
第6C圖圖示說明條件式相等測試指令CTEQ。在執行此種類指令時,若由指令指定的測試條件被通過,則處理電路4經配置以對第一與第二運算元施行EOR運算,且將結果條件狀態寫回條件旗標,同時若測試條件未被通過,則由指令指定的未通過條件狀態#imm被寫回條件旗標。此種類指令可用以測試第一運算元是否相等於第二運算元。
第6D圖圖示說明條件式按位元測試指令CTST。在執行此類型指令時,若測試條件被通過,則處理電路對第一與第二運算元施行按位元AND運算,並將結果條件狀態寫入條件旗標,同時若測試條件未被通過,則將未通過條件狀態#imm寫入條件旗標。此類型指令可用以測試對應於在第二運算元中的「1」位元之位置的第一運算元的位元是否為全零或非全零。特別有用的情況為,在第二運算元正好包含一個「1」位元時,以及在指令測試第一運算元的對應位元是否為「0」或「1」時。
第6E圖圖示說明具有進位之條件式加法指令CADC。在執行此指令時,若測試條件被通過,則控制處理電路4以將第一運算元、第二運算元與在狀態暫存器15中的進位旗標C的當前值相加,並將此加法所產生的結果條件狀態寫入條件旗標中。另一方面,若測試條件未被通過,則寫入未通過測試條件#imm條件旗標,如對其他類型的條件式比較指令般。進位加法運算可用以代表多字加法(multi-word addition)之第二、第三或更進一步的字,進位位元表示多字加法的前一字是否產生了進位。
第6F圖圖示說明條件式按位元OR測試指令CORRT,其在執行時控制處理電路4以對第一與第二運算元施行按位元OR,若測試條件被通過。從按位元OR出現的結果條件狀態被寫入條件旗標。另一方面,若測試條件未被通過,則將未通過條件狀態#imm寫入條件旗標。此種指令可用以測試兩個暫存器是否皆儲存零值。此對於測試倍寬(double-width)資料值是否等於零特別有用。例如,倍寬128位元值RnHi/Lo可使用兩個64位元暫存器RnHi與RnLo儲存。按位元OR測試指令使倍值的兩半部分能夠被使用單一指令來對零測試,因為倍寬值的上部分與下部分的按位元OR僅當兩部分皆等於零時才具有零值。相較於個別地將倍寬值的每一部分對零比較,此可為更有效率。因此,(RnHi/Lo !==0)&&(RmHi/Lo==0)形式陳式可更有效率地使用兩個指令來估算:
ORRT RnHi,RnLo;//若RnHi/Lo=0則Z=1,且若為其他情況則Z=0)
CORRT NE,RmHi,RmLo,#0//若(ORRT設定Z為0 AND RmHi/Lo=0)則
Z=1,
//若為其他情況則
Z=0。
將認知到,在任意特定具體實施例中,指令解碼器可回應於任一個或更多的這些指令,以控制處理電路4來施行對應類型的條件式比較運算。例如,在一特定具體實施例中,解碼器14可經配置以回應於在第6A圖與第6B圖中圖示說明的條件式比較指令類型,但不回應其他種類的條件式比較指令。
條件式比較指令串可用以代表比較運算的序列鏈,其中在序列中的每個比較運算,係使用AND或OR運算與所有先前比較運算的結合結果結合(例如,序列(A<B && C==D)∥E>=F)。每個比較運算測試特定準則(例如,在上述範例中,第一比較運算測試A<B與否之準則,第二比較運算測試C=D與否之準則,且第三比較運算測試EF與否之準則)。不像在先前已知的條件式指令,本技術之條件比較指令可在比較運算鏈測試一個以上的準則種類時使用。
第7A圖與第7B圖圖示說明用以將特定比較運算序列鏈轉換成比較指令序列的方法之具體實施例。此種方法可例如由編譯器施行,編譯器接收定義比較運算序列的輸入,並產生對應的程式指令序列。
第7A圖圖示說明此種方法的第一具體實施例。在步驟200,輸入定義N個比較運算序列鏈的資料(N為大於1的任意整數)。在步驟202,設定計數變數i為等於N。在步驟204,測定結合序列鏈的第i個比較與序列鏈的第一個至第i-1個比較之結合結果的邏輯運算是否為AND運算或OR運算。例如,在序列(A<B && C==D)∥E>=F中,在i=3時序列的第i個比較(E>=F)經由OR運算∥被鏈結至第一個至第i-1個比較(A<B && C==D)的組合,且在i=2時序列的第i個比較(C==D)經由AND運算&&被鏈結至第i-1個比較(A<B)。
若在步驟204測定第i個比較運算與第一個至第i-1個比較運算之部分鏈係由AND運算鏈結,則在步驟206對第i個比較運算產生條件式比較指令,其中測試條件cond被設定為在第i-1個比較滿足其預定準則時通過的條件,且未通過條件狀態被設定為對應於第i個比較之準則未被滿足的任意值。
例如,當在上述範例中i=2時,在第i-1個比較(A<B)滿足其預定準則時通過的條件為條件LT(見第8圖一假定一帶正負號比較(signed comparison)),因為此將表示A<B。因此,對於第二個條件式比較指令運算的測試條件為LT。同樣的,對於i=2,在C不相等於D時第i個比較(C==D)之準則未被滿足,亦即第8圖圖示之NE狀態,其中Z旗標未被設定。因此,第i個條件式比較指令的未通過條件狀態值可被設定為將導致Z旗標被清除(例如,0b0000)的任意組合值。
另一方面,若在步驟204結合第i個比較運算與第一個至第i-1個比較運算之部分鏈的邏輯運算為OR運算,則在步驟208對第i個比較運算產生條件式比較指令,其中測試條件被設定為在第i個比較運算未滿足其準則時通過的條件,且未通過條件狀態值被設定為對應至第i個比較之準則被滿足的任意值。
例如,對於上述範例序列在i=3時,在第i-1個比較運算(C==D)未滿足其準則時通過的條件為第8圖之NE狀態,且因此對於第三個條件式比較運算的測試條件被設定為NE。同樣的,對於i=3,在E係大於或等於F時第i個比較(E>=F)之準則被滿足(例如,在對於帶正負號比較之GE狀態中-見第8圖)。因此,未通過條件狀態值可被設定為對應至GE狀態的條件旗標值之任意組合(例如,繼續參照第8圖,位元N與V為相同,且所有其他位元可具有任意值-亦即0b0000)。
無論邏輯運算是否為AND或OR運算,隨後在步驟210遞減計數變數i,且在步驟212測定新的計數變數i是否大於或等於2。若新的計數變數i係大於或等於2則對新的i值重複步驟204至212,以對另一比較運算產生另一條件式比較指令。以此方式對序列鏈之第二個至第N個比較運算產生條件式比較指令。
若在步驟212,i係小於2,則方法進行至步驟214,在步驟214對序列鏈的第一個比較產生無條件式比較指令。例如,在上述序列中,可產生測定A<B與否並根據比較結果更新條件碼旗標的無條件式比較指令。在步驟216,所有產生的指令由與產生順序反向的順序輸出,以形成代表比較運算之序列鏈的指令序列。
第7B圖圖示說明用於產生對應於比較運算之指令序列的方法的替代性具體實施例。第7B圖之步驟,其係與第7A圖之對應步驟相同,並以與第7A圖相同的元件符號標示。第7B圖與第7A圖不同在於指令係以在序列鏈中的對應比較運算的順序產生,而非如第7A圖中以反向順序產生。序列鏈的第一個比較運算的無條件式比較指令在第7B圖的步驟214產生。隨後在步驟220計數變數i被初始化至值2。隨後對第i個比較運算施行步驟204至208,其係與第7A圖之對應步驟相同,且在i於步驟222循序遞增的同時重複,直至在步驟226 i大於N。此意味著對於鏈中的第二個至第N個比較運算產生了條件式比較指令。一旦i大於N,則在步驟230所產生的指令由在步驟230產生的順序輸出,以形成程式指令序列。
如可見於第7A圖至第7B圖,對於第一個比較運算的無條件式比較指令以及對於第二個至第N個比較運算的條件式比較指令產生的順序並不特別重要,只要對第二個至第N個比較運算之每一者產生條件式比較指令並對第一個比較運算產生無條件式比較指令,且所產生的指令被由正確的程式順序輸出。在本發明領域具有通常知識者將可認知,亦可能使用除了第7A圖與第7B圖所圖示之產生順序以外的順序。
在第7A圖與第7B圖之步驟214產生的無條件式比較指令,可為具有與條件式指令不同的語法的指令。例如,無條件式比較指令可具有指定兩個運算元的語法,以使指令解碼器產生用於控制處理電路4的控制訊號,以比較運算元並根據比較結果更新條件碼旗標NZCV。無條件式比較指令語法可省略第3圖、第4圖或第6圖所圖示之條件式比較指令語法的測試條件與未通過條件狀態。在此種具體實施例中第8圖的AL(總是通過)條件狀態可被省略。
或者,無條件式比較指令與條件式比較指令可具有共同的語法,藉由設定測試條件cond為無論條件旗標值為何,而總是被滿足的條件狀態,可使用在第3圖、第4圖與第6圖中之任意者所圖示之條件式比較指令語法形成無條件式比較指令。例如,對於無條件式指令,測試條件cond可被設定為相等於第8圖之「總是」條件狀態AL,以使指令總是通過其條件碼(在此情況中,因為未通過條件狀態將不被需要,所以其可被設定為任意值)。因此,相同種類的指令語法可同時作為無條件式比較指令與條件式比較指令,取決於對指令指定的測試條件。此可增進指令編碼空間的使用效率。
第8圖圖示說明圖示條件碼旗標之不同組合的表,每個組合代表由特定條件後綴(suffix)(或條件「助憶」)標定(designate)的特定條件狀態。例如,PL狀態表示先前處理結果為正或零,且由「N」條件旗標為清除以標定。因此,NZCV的任意組合位元值0b0xxx(其中x為0或1之任意者)具有為清除的N位元,且因此可表示PL狀態。
下文更詳細解釋第7A圖與第7B圖的方法。
假設吾人現有「若(if)」測試,其為個別比較之序列鏈,諸如:
if(((s==t && u>=0)∥a !=b)&& c>d)
其中僅為示例之目的,吾人假定s、t與u為帶正負號變數且a、b、c與d為不帶正負號變數(他們同樣可為不帶正負號變數)。
用於對此種序列鏈產生碼序列之一組適合的規則為:
1. 將總是由對於鏈中最終個別比較之適合條件來反映結果。
2. 若序列鏈僅包含單一個別比較,則對其之兩個運算元使用無條件式比較(CMP)指令(見第7A圖與第7B圖之步驟214)。定義無條件式比較指令以根據比較結果產生第8圖的條件狀態之一者。
3. 其他情況下,序列鏈由較短的序列鏈與一個額外的個別比較AND或OR所組成。
4. 若序列鏈由較短的序列鏈與一個額外的比較AND所組成,則(見第7A圖與第7B圖之步驟206)對此較短的序列鏈產生指令序列,並於其後加上:
CCMP cond,op1,op2,#imm
其中:
cond為在較短的序列鏈通過時其產生的條件;op1與op2為用於額外比較的兩個運算元;以及imm為N、Z、C、V條件旗標值的任意組,其對應於所需的來自額外比較之「未通過」結果。此確保若較短的序列鏈產生其「未通過」條件,則額外的比較將產生其自身的「未通過」條件,且若較短的序列鏈產生其「通過」,則額外的比較將產生其自身的「未通過」結果或其自身的「通過」結果,取決於個別測試的結果,其為對於與額外比較AND之正確行為。
5. 若序列鏈由較短的序列鏈與一個額外的比較OR所組成(見第7A圖與第7B圖之步驟208),則對此較短的序列鏈產生指令序列,並於其後加上:
CCMP cond,op1,op2,#imm
其中:
cond為在較短的序列鏈未通過時其產生的條件;op1與op2為用於額外比較的兩個運算元;以及imm為N、Z、C、V條件旗標值的任意組,其對應於所需的來自額外比較之「通過」結果。此確保若較短的序列鏈產生其「通過」條件,則額外的比較將產生其自身的「通過」條件,且若較短的序列鏈產生其「未通過」條件,則額外的比較將產生其自身的「未通過」結果或其自身的「通過」結果,取決於個別測試的結果,其為對於與額外比較OR之正確行為。
為了說明上述用以產生碼序列的範例,對於(((s==t && u>=0)∥a !=b)&& c>d):
序列的最終比較為無正負號的>,所以遵循規則1,目標為在其通過時(亦即為TRUE)產生第8圖的HI條件,並在其未通過時(亦即為FALSE)產生第8圖的LS條件。因此,目標為:
......為尚未決定的碼序列......
//現若(((s==t && u>=0)∥a !=b)&& c>d)為TRUE
//則為HI,其他情況為LS
序列鏈(((s==t && u>=0)∥a !=b)&& c>d)係由較短的序列鏈((s==t && u>=0)∥a !=b)與額外比較c>d AND而成。遵循上述規則4:
*較短的序列鏈具有!=測試為其最終比較,若其通過則產生NE條件。
*所需之額外比較「未通過」結果為LS=(C==0)∥(Z=1)。挑選滿足此條件之NZCV旗標組的任意值,例如NZCV=0b0000。
且碼序列可經由第一步驟發展為:
......為尚未決定的碼序列......
//現若((s==t && u>=0)∥a !=b)為TRUE則為NE,
//其他情況為EQ
CCMP NE,Rc,Rd,#0b0000
//現若(((s==t && u>=0)||a !=b)&& c>d)為TRUE
//則為HI,其他情況為LS
序列鏈((s==t && u>=0)∥a !=b)係由較短的序列鏈(s==t && u>=0)與額外比較a!=b OR而成。遵循上述規則5:
*較短的序列鏈具有帶正負號>=測試為其最終比較,若其未通過則產生LT條件。
*所需之額外比較「通過」結果為NE=(Z==0)。挑選滿足此條件之NZCV旗標組的任意值,例如NZCV=0b0000。
且碼序列可經由第二步驟發展為:
......為尚未決定的碼序列......
//現若(s==t && u>=0)為TRUE則為GE,
//其他情況為LT
CCMP LT,Ra,Rb,#0b0000
//現若((s==t && u>=0)∥a !=b)為TRUE則為NE,
//其他情況為EQ
CCMP NE,Rc,Rd,#0b0000
//現若(((s==t && u>=0)∥a !=b)&& c>d)為TRUE
//則為HI,其他情況為LS
序列鏈(s==t && u>=0)係由較短的序列鏈s==t與額外比較u>=0 AND而成。遵循上述規則4:
*較短的序列鏈具有==測試為其最終比較,以若其通過則產生EQ條件。
*所需之額外比較「未通過」結果為LT=(N !=V)。挑選滿足此條件之NZCV旗標組的任意值,例如NZCV=0b0001。
且碼序列可經由第三步驟發展為:
......為尚未決定的碼序列......
//現若s==t為TRUE則為EQ,其他情況為NE
CCMP EQ,Ru,#0,#0b0001
//現若(s==t && u>=0)為TRUE則為GE,
//其他情況為LT
CCMP LT,Ra,Rb,#0b0000
//現若((s==t && u>=0)∥a !=b)為TRUE則為NE,
//其他情況為EQ
CCMP NE,Rc,Rd,#0b0000
//現若(((s==t && u>=0)∥a !=b)&& c>d)為TRUE
//則為HI,其他情況為LS
最後,序列鏈s==t僅為單一比較,故遵循上述規則2,如上所述對其使用無條件式比較指令。此產生完整碼序列:
CMP Rs,Rt
//現若s==t為TRUE則為EQ,其他情況為NE
CCMP EQ,Ru,#0,#0b0001
//現若(s==t && u>=0)為TRUE則為GE,
//其他情況為LT
CCMP LT,Ra,Rb,#0b0000
//現若((s==t && u>=0)∥a !=b)為TRUE則為NE,
//其他情況為EQ
CCMP NE,Rc,Rd,#0b0000
//現若(((s==t && u>=0)∥a !=b) && c>d)為TRUE
//則為HI,其他情況為LS
上述技術可由編譯器施行,以將所需邏輯陳式轉換成程式指令序列以估算陳式。指令不須以任意特定的順序測定或產生,只要指令以正確的程式順序被輸出,故可能存在不同的產生方法之具體實施例(見第7A圖與第7B圖)。
在上述範例中,由指令語法指定未通過條件狀態為立即值,立即值指定欲寫入狀態暫存器15中的條件碼的位元組合值。
然而,語法可替代性地指定未通過條件狀態為條件助憶(後綴),諸如第8圖所圖示之HI、LS、PL等等。在此指令形式中,程式設計師隨後可指定未通過條件狀態所需的條件助憶,且在組譯指令時組譯器(assembler)可將條件助憶轉換成特定的立即值。因此,從指令解碼器14的觀點看來,指令看起來與其他具體實施例相同,但從程式設計師的觀點看來指令語法更為直覺,因為相較於條件碼值,使用助憶可更清楚瞭解不同條件狀態的意義。
回應於特定條件助憶,組譯器可選定可寫入條件旗標,以使得由助憶表示的條件狀態被保持的任意未通過條件狀態。若存在對應至相同條件的複數個可能的立即值,則可提供用於選定對應至條件之值的規則給組譯器。例如,組譯器可選定最大或最小的可用值,以確保每次原始碼皆由相同方式組譯。例如在第8圖中,滿足EQ狀態的最大可能值為0b1111(且Z位元被設定)。
因此,在指定未通過條件狀態為條件助憶之具體實施例中,在上述範例中決定的最終指令序列可為:
CMP Rs,Rt
//現若s==t為TRUE則為EQ,其他情況為NE
CCMP EQ,Ru,#0,LT
//現若(s==t && u>=0)為TRUE則為GE,
//其他情況為LT
CCMP LT,Ra,Rb,NE
//現若((s==t && u>=0)∥a !=b)為TRUE則為NE,
//其他情況為EQ
CCMP NE,Rc,Rd,LS
//現若(((s==t && u>=0)∥a !=b)&& c>d)為TRUE
//則為HI,其他情況為LS
第9圖圖示說明可使用的虛擬機器實施。雖然上文所述的具體實施例依據用於操作支援所關切技術的特定處理硬體的裝置與方法來實施本發明,亦可能提供所謂的硬體裝置的虛擬機器實施。這些虛擬機器實施在運行支援虛擬機器程式510的主機作業系統520的主機處理器530上運行。通常需要大型強力的處理器來提供以妥當的速度執行的虛擬機器實施,但在特定環境下可調整此種作法,諸如在為了相容性或再使用的緣由而想要運行另一處理器專用的碼時。虛擬機器程式510提供應用程式介面給應用程式500,其與由虛擬機器程式510模型化的真實硬體所提供的應用程式介面相同。因此,程式指令,包含上文所述之對記憶體存取的控制,可使用虛擬機器程式510從應用程式500內執行,以模型化他們與虛擬機器硬體的互動。
第10圖圖示第8圖所圖示之條件狀態的可選延伸。在第10圖之範例中,處理電路4可被設定為一些不同條件狀態之任意者,包含預定條件狀態MZ,其專由條件式比較指令使用。處理裝置無法經由正常處理運算被置於MZ條件狀態中。MZ條件狀態僅在指定MZ條件狀態為其未通過條件狀態之條件式比較指令未通過其測試條件時出現。在第10圖之範例中,MZ狀態由N與Z旗標被設定來代表,表示「負零」結果。正常處理運算無法出現「負零」結果,因為正常處理運算將產生為零或為負之結果,但將不同時為零且為負。第10圖亦圖示OK狀態,其相反於MZ狀態。因此,OK狀態在N或Z旗標為清除時被滿足。
MZ狀態是有用的,因為其允許指令測試在之前的條件式比較指令是否通過或未通過其測試條件。可執行指定MZ狀態為未通過條件狀態的條件式比較指令。隨後的條件式指令可隨後測試條件旗標是在MZ狀態或在OK狀態。若條件旗標為在MZ狀態,則條件式比較指令未通過其測試條件,同時若條件旗標為在OK狀態,則條件式比較指令通過其測試條件。
第11圖圖示指定MZ狀態為未通過條件狀態的條件式比較指令如何可用以限制變數X為在給定範圍BOT至TOP中的範例。若X係在可允許的範圍BOT至TOP中,則X保持其原始值。若X係大於TOP,則X被設定為相等於TOP,同時若X係小於BOT,則X被設定為相等於BOT。因此,X被限制以使其最大可能值為TOP且其最小可能值為BOT。
第11圖圖示用於實施此對X值之限制的指令的範例序列。首先,比較指令CMP X,TOP被執行以觸發對X與TOP值的比較。隨後條件旗標基於比較結果被更新。若X<TOP,則條件旗標將被設定為LT條件狀態,同時若XTOP,則條件旗標將被設定為GE條件狀態。
接著,條件式比較指令CCMP LT,X,BOT,MZ被執行。若LT測試條件通過,則X與BOT被比較且基於比較結果更新條件旗標為LT與GE條件狀態之一者。另一方面,若LT測試條件未通過,則條件旗標被置於MZ狀態。
接著,條件式選定指令CSEL,MZ,X,TOP,X被執行。若MZ測試條件通過,則X被選定以具有TOP值,同時在其他情況下X保持其原始值。最後,條件式選定指令CSEL LT,X,BOT,X被執行。若LT測試條件通過,則X被選定以具有BOT值,同時在其他情況下X保持其原始值。
第10圖與第11圖圖示一範例,其中僅可由未通過其測試條件之條件式比較指令設定的條件狀態為MZ「負零」狀態,且N與Z旗標皆被設定。然而,在其他具體實施例中,可使用除了MZ狀態以外之任意無法在正常處理期間出現的條件旗標值的組合。
在第10圖之範例中,MZ狀態取代第8圖圖示的「總是」AL狀態,以提供總共16個可用的條件狀態,其可使用4位元識別符來識別。將認知到,在其他範例中可同時提供AL狀態與MZ狀態兩者。
雖然在此已參照附加圖式,詳盡描述了本發明之說明性具體實施例,將瞭解到本發明並不限於這些精確的具體實施例,且在本發明領域中具有通常知識者可進行各種改變與修改,而不脫離如附加申請專利範圍所定義之本發明的範圍與精神。
2‧‧‧資料處理裝置
4‧‧‧處理電路
6‧‧‧暫存器庫
8‧‧‧加法器
10‧‧‧移位器
12‧‧‧乘法器
14‧‧‧解碼器
15‧‧‧狀態儲存器
50-120‧‧‧步驟
200-230‧‧‧步驟
500‧‧‧應用程式
510‧‧‧虛擬機器程式
520‧‧‧主機作業系統
530‧‧‧主機處理器
第1圖簡要圖示說明資料處理裝置;第2圖簡要圖示說明條件碼旗標的範例;第3A圖與第3B圖各別圖示說明條件式比較指令的範例語法與範例編碼,條件式比較指令包含用於指定測試條件、兩個暫存器運算元與立即未通過條件狀態值的欄位;第4A圖與第4B圖各別圖示說明條件式比較指令的替代範例語法與範例編碼,其中運算元中之一者被指定為立即值;第5圖圖示說明用於處理條件式比較指令的方法;第6A圖至第6F圖圖示說明條件式比較指令的不同類型,其每一者對應至不同的比較運算;第7A圖與第7B圖圖示說明用於產生代表比較運算序列鏈的程式指令序列的範例方法;第8圖圖示說明各種條件狀態與代表每個條件狀態的條件旗標之組合;第9圖簡要圖示說明虛擬機器實施;第10圖圖示說明包含預定條件狀態的條件狀態範
例,預定條件狀態係為條件式比較指令所專用;以及第11圖圖示說明使用指定預定條件狀態為其未通過條件狀態之條件式比較狀態,限制變數X至給定範圍之資料值中的範例。
50-120...步驟
Claims (20)
- 一種資料處理裝置,包含:處理電路,其用於處理資料;一指令解碼器,其回應於程式指令以產生用於控制該處理電路以處理該資料的控制訊號;一狀態儲存器,其用於儲存該處理電路的一當前條件狀態,該當前條件狀態在處理該資料期間為可修改的;其中該等程式指令包含一條件式比較指令,且該指令解碼器回應於該條件式比較指令以產生用於控制該處理電路以施行一條件式比較運算的控制訊號,該條件式比較運算包含:(i) 若該當前條件狀態通過一測試條件,則對一第一運算元與一第二運算元施行一比較運算,並設定該當前條件狀態為在該比較運算期間產生的一結果條件狀態;以及(ii) 若該當前條件狀態未通過該測試條件,則設定該當前條件狀態為由該條件式比較指令指定的一未通過條件狀態。
- 如申請專利範圍第1項所述之資料處理裝置,其中該狀態儲存器包含:一狀態暫存器。
- 如申請專利範圍第1項所述之資料處理裝置,其中該當前條件狀態包含:儲存在該狀態儲存器中的至少一個條件碼旗標的值。
- 如申請專利範圍第1項所述之資料處理裝置,其中該條件式比較指令包含:用於指定該測試條件的一欄位。
- 如申請專利範圍第1項所述之資料處理裝置,其中該未通過條件狀態係由該條件式比較指令指定為一立即值。
- 如申請專利範圍第5項所述之資料處理裝置,其中該立即值為由包含該條件式比較指令的一程式之一程式設計師設定的一可程式值。
- 如申請專利範圍第5項所述之資料處理裝置,其中該立即值為由包含該條件式比較指令的一程式之一編譯器設定的一可程式值,該編譯器根據一所需條件選定該可程式值,該條件式比較指令的該未通過條件狀態將通過該所需條件。
- 如申請專利範圍第1項所述之資料處理裝置,其中該未通過條件狀態被指定為一N位元未通過條件狀態值,其中N為大於零的任意整數,且該當前條件狀態由一N位元值代表;且該指令解碼器控制該處理電路,以在該當前條件狀態未通過該測試條件時,將該N位元未通過條件狀態值寫入該狀態儲存器中。
- 如申請專利範圍第1項所述之資料處理裝置,其中該當前條件狀態能夠被設定至複數個條件狀態中之任意者,該等複數個條件狀態包含一預定條件狀態;且若指定該預定條件狀態為該未通過條件狀態的一條件式比較指令未通過該測試條件,則該當前條件狀態僅可被設定至該預定條件狀態。
- 如申請專利範圍第1項所述之資料處理裝置,其中該條件式比較指令包含:用於指定該第一運算元與該第二運算元的第一與第二運算元欄位。
- 如申請專利範圍第10項所述之資料處理裝置,其中該等第一與第二運算元欄位之至少一者指定儲存該第一運算元或該第二運算元的一儲存位置。
- 如申請專利範圍第11項所述之資料處理裝置,其中該指令解碼器回應指定一位元值預定組合的該等第一與第二運算元欄位之該至少一者,來控制該處理電路以施行該條件式比較運算,且該等第一與第二運算元之對應的一者具有一零值。
- 如申請專利範圍第10項所述之資料處理裝置,其中該等第一與第二運算元欄位之一者指定一立即值為該第一運算元或該第二運算元。
- 如申請專利範圍第1項所述之資料處理裝置,其中該比較運算包含以下步驟之任意一者:(a)將該第一運算元減去該第二運算元;(b)將該第一運算元加上該第二運算元;(c)對該第一運算元與該第二運算元施行一按位元(bitwise)EOR(exclusive OR)運算;(d)對該第一運算元與該第二運算元施行一按位元AND運算;(e)將該第一運算元、該第二運算元、與該狀態儲存器的一進位位元相加;及(f)對該第一運算元與該第二運算元施行一按位元OR運算。
- 一種資料處理裝置,包含:處理構件,用於處理資料;指令解碼器構件,用於回應於程式指令以產生控制訊號,該等控制訊號係用於控制該處理構件以處理該資料;狀態儲存器構件,用於儲存該處理構件的一當前條件狀態,該當前條件狀態在處理該資料期間為可修改的;其中該等程式指令包含一條件式比較指令,且該指令解碼器構件回應於該條件式比較指令以產生用於控制該處理構件以施行一條件式比較運算的控制訊號,該條件式比較運算包含:(i) 若該當前條件狀態通過一測試條件,則對一第一運算元與一第二運算元施行一比較運算,並設定該當前條件狀態為在該比較運算期間產生的一結果條件狀態;以及(ii) 若該當前條件狀態未通過該測試條件,則設定該當前條件狀態為由該條件式比較指令指定的一未通過條件狀態。
- 一種資料處理方法,包含以下步驟:回應於包含一條件式比較指令的程式指令,產生用於控制處理電路以處理資料的控制訊號;儲存該處理電路的一當前條件狀態,該當前條件狀態在處理該資料期間為可修改的;回應於該條件式比較指令,產生用於控制該處理電路以施行一條件式比較運算的控制訊號,該條件式比較運算包含:(i) 若該當前條件狀態通過一測試條件,則對一第一運算元與一第二運算元施行一比較運算,並設定該當前條件狀態為在該比較運算期間產生的一結果條件狀態;以及(ii) 若該當前條件狀態未通過該測試條件,則設定該當前條件狀態為由該條件式比較指令指定的一未通過條件狀態。
- 一種編譯由一資料處理裝置執行之一程式指令序列的方法,該程式指令序列包含一無條件式比較指令與至少一個條件式比較指令,該無條件式比較指令係用於控制該資料處理裝置以對兩運算元施行一無條件式比較運算,並設定該資料處理裝置之一當前條件狀態為在該無條件式比較運算期間產生的一結果條件狀態,該至少一個條件式比較指令係用於控制該資料處理裝置以施行一條件式比較運算,該條件式比較運算包含:(i)若該資料處理裝置的該當前條件狀態通過一測試條件,則對一第一運算元與一第二運算元施行一比較運算,並設定該當前條件狀態為在該比較運算期間產生的一結果條件狀態;以及(ii)若該當前條件狀態未通過該測試條件,則設定該當前條件狀態為由該條件式比較指令指定的一未通過條件狀態;該方法包含以下步驟:(a) 接收資料之輸入,其定義使用一或多個AND或OR運算邏輯結合之N個比較運算的一序列鏈,其中N為一大於1的整數,該等N個比較運算之每一者係測試各別的運算元是否滿足一各別的預定準則;(b) 產生對應該序列鏈之第一個比較運算的該無條件式比較指令;(c) 對於在2與N之間的每個整數值i,施行下列步驟:(i) 測定該序列鏈之一第i個比較運算是使用一AND運算或一OR運算來與一部分序列鏈的一結果邏輯結合,該部分序列鏈包含該序列鏈之第一個至第i-1個比較運算;(ii) 若該第i個比較運算係使用一AND運算與該部分序列鏈的該結果邏輯結合,則產生對應該第i個比較運算的一條件式比較指令,該條件式比較指令係將在該第i-1個比較運算的該預定準則被滿足時通過的一條件指定為該測試條件,並將對應該第i個比較運算的該預定準則未被滿足的一條件狀態指定為該未通過條件狀態;(iii) 若該第i個比較運算係使用一OR運算與該部分序列鏈的該結果邏輯結合,則產生對應該第i個比較運算的一條件式比較指令,該條件式比較指令係將在該第i-1個比較運算的該預定準則未被滿足時通過的一條件指定為該測試條件,並將對應該第i個比較運算的該預定準則被滿足的一條件狀態指定為該未通過條件狀態;(d) 將至少在步驟(b)中產生的該無條件式比較指令與在步驟(c)中產生的N-1個該條件式比較指令輸出為該程式指令序列。
- 一種由在一資料處理裝置上執行的一電腦程式提供的虛擬機器,該虛擬機器根據如申請專利範圍第1項所述之資料處理裝置提供一指令執行環境。
- 一種儲存一電腦程式之非暫態性電腦儲存媒體,該電腦程式在由一電腦執行時控制該電腦以施行如申請專利範圍第17項所述之方法。
- 一種儲存一電腦程式之非暫態性電腦儲存媒體,該電腦程式包含用於控制處理電路以施行一條件式比較運算的一條件式比較指令,該條件式比較運算包含:(i) 若該處理電路的一當前條件狀態通過一測試條件,則對一第一運算元與一第二運算元施行一比較運算,並設定該當前條件狀態為在該比較運算期間產生的一結果條件狀態;以及(ii)若該當前條件狀態未通過該測試條件,則設定該當前條件狀態至由該條件式比較指令指定的一未通過條件狀態。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1007890A GB2480285A (en) | 2010-05-11 | 2010-05-11 | Conditional compare instruction which sets a condition code when it is not executed |
GB1017144.5A GB2480338B (en) | 2010-05-11 | 2010-10-12 | Conditional compare instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201203101A TW201203101A (en) | 2012-01-16 |
TWI501148B true TWI501148B (zh) | 2015-09-21 |
Family
ID=42315168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100113216A TWI501148B (zh) | 2010-05-11 | 2011-04-15 | 條件式比較指令 |
Country Status (10)
Country | Link |
---|---|
US (1) | US9383999B2 (zh) |
EP (1) | EP2569694B1 (zh) |
JP (1) | JP5646737B2 (zh) |
KR (1) | KR101731238B1 (zh) |
CN (1) | CN102893254B (zh) |
GB (2) | GB2480285A (zh) |
IL (1) | IL222551A0 (zh) |
MY (1) | MY156502A (zh) |
TW (1) | TWI501148B (zh) |
WO (1) | WO2011141726A2 (zh) |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2484654B (en) * | 2010-10-12 | 2013-10-09 | Advanced Risc Mach Ltd | Conditional selection of data elements |
US9378019B2 (en) | 2011-04-07 | 2016-06-28 | Via Technologies, Inc. | Conditional load instructions in an out-of-order execution microprocessor |
US8880851B2 (en) | 2011-04-07 | 2014-11-04 | Via Technologies, Inc. | Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline |
US9292470B2 (en) | 2011-04-07 | 2016-03-22 | Via Technologies, Inc. | Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program |
US9128701B2 (en) | 2011-04-07 | 2015-09-08 | Via Technologies, Inc. | Generating constant for microinstructions from modified immediate field during instruction translation |
US9032189B2 (en) | 2011-04-07 | 2015-05-12 | Via Technologies, Inc. | Efficient conditional ALU instruction in read-port limited register file microprocessor |
US9336180B2 (en) | 2011-04-07 | 2016-05-10 | Via Technologies, Inc. | Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode |
US9274795B2 (en) | 2011-04-07 | 2016-03-01 | Via Technologies, Inc. | Conditional non-branch instruction prediction |
US9645822B2 (en) | 2011-04-07 | 2017-05-09 | Via Technologies, Inc | Conditional store instructions in an out-of-order execution microprocessor |
US9244686B2 (en) | 2011-04-07 | 2016-01-26 | Via Technologies, Inc. | Microprocessor that translates conditional load/store instructions into variable number of microinstructions |
US9176733B2 (en) | 2011-04-07 | 2015-11-03 | Via Technologies, Inc. | Load multiple and store multiple instructions in a microprocessor that emulates banked registers |
US9146742B2 (en) | 2011-04-07 | 2015-09-29 | Via Technologies, Inc. | Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA |
US8924695B2 (en) * | 2011-04-07 | 2014-12-30 | Via Technologies, Inc. | Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor |
US9043580B2 (en) | 2011-04-07 | 2015-05-26 | Via Technologies, Inc. | Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA) |
US8880857B2 (en) | 2011-04-07 | 2014-11-04 | Via Technologies, Inc. | Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor |
US9898291B2 (en) | 2011-04-07 | 2018-02-20 | Via Technologies, Inc. | Microprocessor with arm and X86 instruction length decoders |
US9141389B2 (en) | 2011-04-07 | 2015-09-22 | Via Technologies, Inc. | Heterogeneous ISA microprocessor with shared hardware ISA registers |
US9317288B2 (en) | 2011-04-07 | 2016-04-19 | Via Technologies, Inc. | Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline |
US20160092398A1 (en) * | 2014-09-29 | 2016-03-31 | Apple Inc. | Conditional Termination and Conditional Termination Predicate Instructions |
US10514911B2 (en) * | 2014-11-26 | 2019-12-24 | International Business Machines Corporation | Structure for microprocessor including arithmetic logic units and an efficiency logic unit |
GB2540216B (en) * | 2015-07-10 | 2020-01-01 | Advanced Risc Mach Ltd | Comparison of wide data types |
CN106201935A (zh) * | 2016-06-28 | 2016-12-07 | 田彬 | 用于处理存储队列中数据相关的装置及方法 |
US10761979B2 (en) * | 2016-07-01 | 2020-09-01 | Intel Corporation | Bit check processors, methods, systems, and instructions to check a bit with an indicated check bit value |
GB2556079A (en) * | 2016-11-17 | 2018-05-23 | Kumar Oberoi Bhushan | Magic card trick |
US10564965B2 (en) | 2017-03-03 | 2020-02-18 | International Business Machines Corporation | Compare string processing via inline decode-based micro-operations expansion |
US10789069B2 (en) | 2017-03-03 | 2020-09-29 | International Business Machines Corporation | Dynamically selecting version of instruction to be executed |
US10620956B2 (en) | 2017-03-03 | 2020-04-14 | International Business Machines Corporation | Search string processing via inline decode-based micro-operations expansion |
US10613862B2 (en) | 2017-03-03 | 2020-04-07 | International Business Machines Corporation | String sequence operations with arbitrary terminators |
US10255068B2 (en) | 2017-03-03 | 2019-04-09 | International Business Machines Corporation | Dynamically selecting a memory boundary to be used in performing operations |
US10324716B2 (en) | 2017-03-03 | 2019-06-18 | International Business Machines Corporation | Selecting processing based on expected value of selected character |
US10564967B2 (en) | 2017-03-03 | 2020-02-18 | International Business Machines Corporation | Move string processing via inline decode-based micro-operations expansion |
GB2564130B (en) * | 2017-07-04 | 2020-10-07 | Advanced Risc Mach Ltd | An apparatus and method for controlling execution of instructions |
US11709676B2 (en) | 2021-08-19 | 2023-07-25 | International Business Machines Corporation | Inferring future value for speculative branch resolution |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5471593A (en) * | 1989-12-11 | 1995-11-28 | Branigin; Michael H. | Computer processor with an efficient means of executing many instructions simultaneously |
TW569136B (en) * | 2002-05-09 | 2004-01-01 | Ip First Llc | Apparatus and method for conditional instruction execution |
US20060236078A1 (en) * | 2005-04-14 | 2006-10-19 | Sartorius Thomas A | System and method wherein conditional instructions unconditionally provide output |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5371862A (en) * | 1991-02-27 | 1994-12-06 | Kabushiki Kaisha Toshiba | Program execution control system |
JPH0827816B2 (ja) * | 1991-09-13 | 1996-03-21 | 日本電気株式会社 | ファジー三段論法推論システム |
US5717947A (en) * | 1993-03-31 | 1998-02-10 | Motorola, Inc. | Data processing system and method thereof |
JP3452655B2 (ja) * | 1993-09-27 | 2003-09-29 | 株式会社日立製作所 | ディジタル信号処理プロセッサおよびそれを用いて命令を実行する方法 |
JP3843594B2 (ja) * | 1998-04-08 | 2006-11-08 | 松下電器産業株式会社 | プロセッサ、コンパイラ及び命令列変換装置 |
US6009512A (en) | 1997-10-27 | 1999-12-28 | Advanced Micro Devices, Inc. | Mechanism for forwarding operands based on predicated instructions |
JP3830683B2 (ja) * | 1998-12-28 | 2006-10-04 | 富士通株式会社 | Vliwプロセッサ |
TWI226015B (en) * | 1999-08-31 | 2005-01-01 | Matsushita Electric Ind Co Ltd | Digital signal processor and control method of the same |
US6505345B1 (en) * | 2000-01-18 | 2003-01-07 | Intel Corporation | Optimization of initialization of parallel compare predicates in a computer system |
JP2001265592A (ja) * | 2000-03-17 | 2001-09-28 | Matsushita Electric Ind Co Ltd | 情報処理装置 |
US6732356B1 (en) * | 2000-03-31 | 2004-05-04 | Intel Corporation | System and method of using partially resolved predicates for elimination of comparison instruction |
JP3851228B2 (ja) * | 2002-06-14 | 2006-11-29 | 松下電器産業株式会社 | プロセッサ、プログラム変換装置及びプログラム変換方法、並びにコンピュータプログラム |
JP3816845B2 (ja) * | 2002-07-05 | 2006-08-30 | 富士通株式会社 | プロセッサ及び命令制御方法 |
JP3958662B2 (ja) * | 2002-09-25 | 2007-08-15 | 松下電器産業株式会社 | プロセッサ |
US7581088B1 (en) * | 2003-12-30 | 2009-08-25 | Altera Corporation | Conditional execution using an efficient processor flag |
KR100628573B1 (ko) * | 2004-09-08 | 2006-09-26 | 삼성전자주식회사 | 조건부실행명령어의 비순차적 수행이 가능한 하드웨어장치 및 그 수행방법 |
JP2007272353A (ja) * | 2006-03-30 | 2007-10-18 | Nec Electronics Corp | プロセッサ装置及び複合条件処理方法 |
JP3899114B2 (ja) * | 2006-04-28 | 2007-03-28 | 松下電器産業株式会社 | プロセッサ |
US8078846B2 (en) * | 2006-09-29 | 2011-12-13 | Mips Technologies, Inc. | Conditional move instruction formed into one decoded instruction to be graduated and another decoded instruction to be invalidated |
JP2008305185A (ja) | 2007-06-07 | 2008-12-18 | Nec Electronics Corp | プロセッサ装置及び複合条件処理方法 |
US8332620B2 (en) * | 2008-07-25 | 2012-12-11 | Freescale Semiconductor, Inc. | System, method and computer program product for executing a high level programming language conditional statement |
US8195923B2 (en) * | 2009-04-07 | 2012-06-05 | Oracle America, Inc. | Methods and mechanisms to support multiple features for a number of opcodes |
CN101593096B (zh) | 2009-05-22 | 2011-11-16 | 西安交通大学 | 一种共享寄存器相关性消除的实现方法 |
US8549504B2 (en) * | 2010-09-25 | 2013-10-01 | Intel Corporation | Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region |
US20120079245A1 (en) * | 2010-09-25 | 2012-03-29 | Cheng Wang | Dynamic optimization for conditional commit |
US9886277B2 (en) * | 2013-03-15 | 2018-02-06 | Intel Corporation | Methods and apparatus for fusing instructions to provide OR-test and AND-test functionality on multiple test sources |
-
2010
- 2010-05-11 GB GB1007890A patent/GB2480285A/en not_active Withdrawn
- 2010-10-12 GB GB1017144.5A patent/GB2480338B/en active Active
-
2011
- 2011-04-12 US US13/637,757 patent/US9383999B2/en active Active
- 2011-04-12 KR KR1020127030565A patent/KR101731238B1/ko active IP Right Grant
- 2011-04-12 WO PCT/GB2011/050719 patent/WO2011141726A2/en active Application Filing
- 2011-04-12 MY MYPI2012004164A patent/MY156502A/en unknown
- 2011-04-12 JP JP2013509616A patent/JP5646737B2/ja active Active
- 2011-04-12 CN CN201180023699.8A patent/CN102893254B/zh active Active
- 2011-04-12 EP EP11720829.8A patent/EP2569694B1/en active Active
- 2011-04-15 TW TW100113216A patent/TWI501148B/zh active
-
2012
- 2012-10-18 IL IL222551A patent/IL222551A0/en active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5471593A (en) * | 1989-12-11 | 1995-11-28 | Branigin; Michael H. | Computer processor with an efficient means of executing many instructions simultaneously |
TW569136B (en) * | 2002-05-09 | 2004-01-01 | Ip First Llc | Apparatus and method for conditional instruction execution |
US20060236078A1 (en) * | 2005-04-14 | 2006-10-19 | Sartorius Thomas A | System and method wherein conditional instructions unconditionally provide output |
Also Published As
Publication number | Publication date |
---|---|
GB2480338A (en) | 2011-11-16 |
WO2011141726A3 (en) | 2012-04-12 |
MY156502A (en) | 2016-02-26 |
JP5646737B2 (ja) | 2014-12-24 |
IL222551A0 (en) | 2012-12-31 |
GB2480338B (en) | 2013-07-31 |
EP2569694B1 (en) | 2020-12-16 |
KR20130100900A (ko) | 2013-09-12 |
US20130097408A1 (en) | 2013-04-18 |
EP2569694A2 (en) | 2013-03-20 |
CN102893254A (zh) | 2013-01-23 |
TW201203101A (en) | 2012-01-16 |
KR101731238B1 (ko) | 2017-04-28 |
GB201007890D0 (en) | 2010-06-23 |
JP2013530450A (ja) | 2013-07-25 |
CN102893254B (zh) | 2015-11-25 |
GB2480285A (en) | 2011-11-16 |
GB201017144D0 (en) | 2010-11-24 |
WO2011141726A2 (en) | 2011-11-17 |
US9383999B2 (en) | 2016-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI501148B (zh) | 條件式比較指令 | |
KR102413832B1 (ko) | 벡터 곱셈 덧셈 명령 | |
JP6971220B2 (ja) | スプライス演算を行うための装置および方法 | |
JP5209609B2 (ja) | ハードウェアエンドループ情報の命令へのコード化 | |
KR102256188B1 (ko) | 데이터 처리장치 및 벡터 오퍼랜드를 처리하는 방법 | |
KR20180066146A (ko) | 벡터 데이터 전송 명령어 | |
TWI740851B (zh) | 用於向量負載指示之資料處理設備、方法及電腦程式 | |
US11941402B2 (en) | Registers in vector processors to store addresses for accessing vectors | |
TW201737067A (zh) | 向量預測指令 | |
CN107851016B (zh) | 向量算术指令 | |
JP5326314B2 (ja) | プロセサおよび情報処理装置 | |
JP2008176453A (ja) | シミュレーション装置 | |
WO2020236368A1 (en) | True/false vector index registers | |
TW201723883A (zh) | 快速向量動態記憶衝突檢測 | |
US10338926B2 (en) | Processor with conditional instructions | |
JP7324754B2 (ja) | ベクトル・キャリー付き加算命令 | |
JP2011253253A (ja) | コンピュータ試験方法、コンピュータ試験装置およびコンピュータ試験プログラム | |
JP6803390B2 (ja) | 第1のアーキテクチャレジスタ番号および第2のアーキテクチャレジスタ番号を識別する符号化命令 | |
JP5732139B2 (ja) | データ要素の条件付き選択 | |
JP3515337B2 (ja) | プログラム実行装置 | |
Ali | Parallel Path Delay Fault Simulation for Multi/Many-Core Processors |