TWI489386B - 由多個指令集使用之暫存器之間的映射 - Google Patents
由多個指令集使用之暫存器之間的映射 Download PDFInfo
- Publication number
- TWI489386B TWI489386B TW100108781A TW100108781A TWI489386B TW I489386 B TWI489386 B TW I489386B TW 100108781 A TW100108781 A TW 100108781A TW 100108781 A TW100108781 A TW 100108781A TW I489386 B TWI489386 B TW I489386B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- register
- registers
- program
- instruction set
- Prior art date
Links
- 238000013507 mapping Methods 0.000 title claims description 63
- 238000012545 processing Methods 0.000 claims description 107
- 230000002159 abnormal effect Effects 0.000 claims description 19
- 238000000034 method Methods 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 4
- 238000004590 computer program Methods 0.000 claims 1
- 210000003813 thumb Anatomy 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 238000012546 transfer Methods 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30138—Extension of register space, e.g. register cache
-
- 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
-
- 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/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
-
- 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/30181—Instruction operation extension or modification
-
- 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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- 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/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
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)
- Advance Control (AREA)
Description
本發明係關於資料處理系統之領域。更特定言之,本發明係關於支援多個指令集之資料處理系統,以及可提供由彼等多個指令集使用的暫存器之方式。
提供支援多個指令集之資料處理系統係為已知。此等資料處理系統之一些實例為設立於英國Cambridge的ARM Limited所製造之處理器設計,該等處理器設計支援ARM指令集(ARM instruction set)及Thumb指令集(Thumb instruction set)。ARM指令係以32-位元編碼,且指定對保存於32-位元暫存器內之資料值所執行之32-位元資料處理操作(例如,ADD、SUB、LDR、STR等)。Thumb指令係以16-位元編碼,且指定對儲存於32-位元暫存器內之32-位元資料值所執行之32-位元資料處理操作。
由ARM Limited所設計的Neon及VFP延伸架構,分別提供對儲存於具有在程式控制下所指定之大小的暫存器內之資料值操作的單一指令多重資料(single instruction multiple data;SIMD)及浮點指令。
希望在提供處理器時減少所需要的電路資源量。提供電路元件以形成表示一個此電路資源的暫存器。
本發明的一個態樣提供一種用於處理資料之裝置,其包含:複數個暫存器,其經配置以儲存待處理之資料值;處理電路,其耦合至該複數個暫存器,且經配置以對儲存於該複數個暫存器中之資料值執行資料處理操作;一指令解碼器,其耦合至該處理電路,且回應一程式指令串流以控制該處理電路,以執行該資料處理操作;其中該指令解碼器回應一第一指令集之程式指令,以控制該處理電路,以使用由該複數個暫存器所提供之N-位元架構暫存器來執行該資料處理操作,其中,N為一正整數值;該指令解碼器回應一第二指令集之程式指令,以控制該處理電路,以使用由該複數個暫存器所提供之M-位元架構暫存器來執行該資料處理操作,其中,M為一正整數值,且該複數個暫存器中的至少一些暫存器係由該第一指令集之程式指令及該第二指令集之程式指令共享;該指令解碼器係經配置以當判定欲存取該複數個暫存器中之哪一個暫存器,以作為呈現給該第一指令集之程式指令以使用之一第一組N-位元架構暫存器之部分時,解碼在該第一指令集之一程式指令內之一暫存器指定欄位;該指令解碼器係經配置以當判定欲存取該複數個暫存器中之哪一個暫存器,以作為呈現給該第二指令集之程式指令以使用之一第二組M-位元架構暫存器之部分時,解碼在該第二指令集之一程式指令內之一暫存器指定欄位;且該指令解碼器係經配置以提供在該第一指令集之程式指令內之該暫存器指定欄位之值與該複數個暫存器之間的一第一映射,及在該第二指令集之程式指令內之該暫存器指定欄位之值與該複數個暫存器之間的一第二映射,該第一映射不同於該第二映射,且該第一映射及該第二映射使得該第一組之各個暫存器皆具有至該第二組之一暫存器之一預定一對一映射,並與該第二組之該暫存器共享在該複數個暫存器內之一共用暫存器之一共享部分,該共用暫存器之一非共享部分係無法使用該第一指令集之指令存取;,以及儲存可使用該第二組之一暫存器存取之一值。
本發明技術認知到,即使不同指令集對不同寬度的架構暫存器操作,對於不同指令集而言,共享複數個暫存器之資源亦為可能。此外,藉由在由兩個指令集所使用之暫存器指定符之間安排預定一對一映射,對於該等指令集中之至少一者而言,存取由另一指令集儲存於暫存器內之所有值為可能的。此舉有益於以兩個指令集撰寫之程式的可互操作性,例如,在使用兩個指令集中之不同者所撰寫的程式之間共享資料值。將理解,指令通常可含有一個以上的暫存器指定欄位。一些指令亦可由隱含方式來指定特定暫存器之使用,例如,PUSH指令及POP指令以隱含方式指定了堆疊指標暫存器之使用。
雖然如呈現給第一指令集之第一組暫存器與如呈現給第二指令集之第二組暫存器在數量上可能不同,但是至少在較佳實施例中,第一組及第二組包括相同數量的暫存器。此有助於達成所提供的暫存器資源之高水平的再利用性,並且促進兩個指令集之間有效率的互操作。
M-位元架構暫存器可為2N-位元架構暫存器。
複數個暫存器可為2N-位元暫存器,以促進藉由第二指令集來操縱2N-位元資料值。在此狀況下,第一指令集可經安排以存取2N-位元暫存器之最低有效N-位元。
暫存器大小及資料寬度可變化,但是在至少一些較佳實施例中,N=32。
可藉由在程式指令內之暫存器指定欄位來完全指定待存取之暫存器。或者,附加狀態(諸如,當前異常狀態)可與暫存器指定欄位之值相結合,以判定欲存取哪一個架構暫存器。在本發明之至少一些較佳實施例中,第一指令集以此方式操作。
當異常狀態在指定對於暫存器指定欄位之一給定值將使用哪一個架構暫存器中,提供額外自由度時,將使用暫存器指定欄位及不同異常狀態之共用值存取的架構暫存器之群稱為暫存器之成組群。此安排可有助於輔助快速異常處理。
將理解,在使用暫存器重新命名(例如)來促進亂序(out-of-order)處理之實施例中,映射至架構暫存器之實體暫存器將改變,且在處理中任何給定點處,可能存在對應於相同架構暫存器之多個實體暫存器,但係在程式順序之不同點處。
為簡化指令解碼及識別待使用之正確架構暫存器,由指令解碼器使用的映射可使得在暫存器之成組群內,第一指令集之程式指令內的暫存器指定欄位之最低有效位元之值,其指定彼等成組暫存器中之一者,係安排為與第二指令集之程式指令之暫存器指定欄位的最低有效位元共用的值,其映射至相同讀架構暫存器。此舉簡化了解碼。
利用上述關於成組暫存器之安排的一些實施例之特徵在於,指令解碼器係經配置以提供映射,使得對於對應於在第二組之程式指令內的暫存器指定欄位之增量值序列的第二組之部分暫存器而言,在第一指令集之程式指令內之暫存器指定欄位的對應值在兩個值之間交替。
當用該第二指令集之一程式指令來存取時,本發明所提供之該複數個暫存器包括一空值暫存器,該空值暫存器儲存一預定空值,並且該第一指令集並不具有映射至該空值暫存器之暫存器。當讀此空值暫存器時,其可傳回空值,且將空值暫存器指定為待寫入之暫存器之指令,係解譯為廢除結果。
在一些實施例中,該空值為零。
在一些實施例中,當執行該第一指令集之程式指令時,一程式計數器暫存器儲存一值,該值指示正執行之一程式指令之一記憶體位址,且該程式計數器暫存器在映射至該第二組暫存器的該第一組之外。因此,由如以上所論述之指令解碼器所提供之一對一映射並未包括該程式計數器暫存器。
本發明的另一態樣提供一種用於處理資料之裝置,其包含:複數個暫存器構件,用於儲存待處理之資料值;處理構件,用於對儲存於該複數個暫存器構件中之資料值執行資料處理操作;指令解碼構件,用於回應於一程式指令串流而控制該處理電路,以執行該資料處理操作;其中該指令解碼構件回應一第一指令集之程式指令,以控制該處理構件,以使用由該複數個暫存器構件所提供之N-位元架構暫存器構件來執行該資料處理操作,其中,N為一正整數值;該指令解碼構件回應一第二指令集之程式指令,以控制該處理構件,以使用由該複數個暫存器構件所提供之M-位元架構暫存器構件來執行該資料處理操作,其中,M為一正整數值,且該複數個暫存器構件中的至少一些暫存器係由該第一指令集之程式指令及該第二指令集之程式指令共享;該指令解碼器構件係經配置以當判定欲存取該複數個暫存器構件中之哪一個暫存器,以作為呈現給該第一指令集之程式指令以使用之一第一組N-位元架構暫存器構件之部分時,解碼在該第一指令集之一程式指令內之一暫存器指定欄位;該指令解碼器構件係經配置以當判定欲存取該複數個暫存器構件中之哪一個暫存器,以作為呈現給該第二指令集之程式指令以使用之一第二組M-位元架構暫存器構件之部分時,解碼在該第二指令集之一程式指令內之一暫存器指定欄位;且該指令解碼構件係經配置以提供在該第一指令集之程式指令內之該暫存器指定欄位之值與該複數個暫存器構件之間的一第一映射,及在該第二指令集之程式指令內之該暫存器指定欄位之值與該複數個暫存器構件之間的一第二映射,該第一映射不同於該第二映射,且該第一映射及該第二映射使得該第一組之各個暫存器構件皆具有至該第二組之一暫存器構件之一預定一對一映射,並與該第二組之該暫存器構件共享在該複數個暫存器構件內之一共用暫存器構件之一共享部分,以及無法使用該第一指令集之指令存取的該共用暫存器構件之一非共享部分,並儲存可使用該第二組之一暫存器構件存取之一值。
本發明的另一態樣提供一種處理資料之方法,其包含以下步驟:儲存步驟,在複數個暫存器中儲存待處理之資料值;執行步驟,對儲存於該複數個暫存器中之資料值執行資料處理操作;解碼步驟,解碼一程式指令串流,以控制該執行步驟;其中該解碼步驟回應一第一指令集之程式指令,以控制該執行步驟,該資料處理操作之該執行步驟使用由該複數個暫存器所提供之N-位元架構暫存器,其中,N為一正整數值;該解碼步驟回應一第二指令集之程式指令,以控制該資料處理之該執行步驟,該資料處理之該執行步驟使用由該複數個暫存器所提供之M-位元架構暫存器,其中,M為一正整數值,且該複數個暫存器中之至少一些暫存器係由該第一指令集之程式指令及該第二指令集之程式指令共享;當判定欲存取該複數個暫存器中之哪一個暫存器,以作為呈現給該第一指令集之程式指令呈現以使用之一第一組N-位元架構暫存器之部分時,該解碼步驟解碼在該第一指令集之一程式指令內之一暫存器指定欄位;當判定欲存取該複數個暫存器中之哪一個暫存器以作為呈現給該第二指令集之程式指令以使用之一第二組M-位元架構暫存器之部分時,該解碼步驟解碼在該第二指令集之一程式指令內之一暫存器指定欄位;且該解碼步驟提供在該第一指令集之程式指令內之該暫存器指定欄位之值與該複數個暫存器之間的一第一映射,及在該第二指令集之程式指令內之該暫存器指定欄位之值與該複數個暫存器之間的一第二映射,該第一映射不同於該第二映射,且該第一映射及該第二映射使得該第一組之各個暫存器皆具有至該第二組之一暫存器之一預定一對一映射,並與該第二組之該暫存器共享在該複數個暫存器內之一共用暫存器之一共享部分,以及無法使用該第一指令集之指令存取的該共用暫存器之一非共享部分,並儲存可使用該第二組之一暫存器存取之一值。
本發明的另一態樣提供一種用於處理資料之裝置,其包含:複數個暫存器,其經配置以儲存待處理之資料值;處理電路,其耦合至該複數個暫存器,且經配置以對儲存於該複數個暫存器中之資料值執行資料處理操作;一指令解碼器,其耦合至該處理電路,且回應一程式指令串流以控制該處理電路,以執行該資料處理操作;其中該指令解碼器回應一第一指令集之程式指令,以控制該處理電路,以使用由該複數個暫存器所提供之一第一組架構暫存器來執行該資料處理操作;當執行該第一指令集之程式指令時,該裝置係經配置以在複數個異常狀態中操作,且該指令解碼器係經配置以當判定欲使用哪一個架構暫存器時,將在該第一指令集之一程式指令內的該暫存器指定欄位及該複數個異常狀態之一當前異常狀態一起解碼;該指令解碼器回應一第二指令集之程式指令,以控制該處理電路,以使用一第二組架構暫存器來執行該資料處理操作,該第二組架構暫存器係由該複數個暫存器提供且與該第一指令集之程式指令共享;且該指令解碼器係經配置以當判定欲使用哪一個架構暫存器時,在不依賴異常狀態的情況下解碼在該第二指令集之一程式指令內之一暫存器指定欄位。
本發明的另一態樣提供一種用於處理資料之裝置,其包含:複數個暫存器構件,用於儲存待處理之資料值;處理構件,用於對儲存於該複數個暫存器構件中之資料值執行資料處理操作;指令解碼構件,用於回應於一程式指令串流而控制該處理電路,以執行該資料處理操作;其中該指令解碼器構件回應一第一指令集之程式指令,以控制該處理構件,以使用由該複數個暫存器構件所提供之一第一組架構暫存器來執行該資料處理操作;當執行該第一指令集之程式指令時,該裝置係經配置以在複數個異常狀態中操作,且該指令解碼器係經配置以當判定欲使用哪一個架構暫存器時,將在該第一指令集之一程式指令內的該暫存器指定欄位及該複數個異常狀態之一當前異常狀態一起解碼;該指令解碼器構件回應一第二指令集之程式指令,以控制該處理構件,以使用一第二組架構暫存器來執行該資料處理操作,該第二組架構暫存器係由該複數個暫存器構件提供且與該第一指令集之程式指令共享;且該指令解碼器構件係經配置以當判定欲使用哪一個架構暫存器時,在不依賴異常狀態的情況下解碼在該第二指令集之一程式指令內之一暫存器指定欄位。
本發明的另一態樣提供一種處理資料之方法,其包含以下步驟:一儲存步驟,在複數個暫存器中儲存待處理之資料值;一執行步驟,對儲存於該複數個暫存器中之資料值執行資料處理操作;一解碼步驟,解碼一程式指令串流,以控制該資料處理操作之該執行步驟;其中該解碼步驟回應一第一指令集之程式指令,以控制該資料處理操作之該執行步驟,該資料處理操作之該執行步驟使用由該複數個暫存器所提供之一第一組架構暫存器;當執行該第一指令集之程式指令時,在複數個異常狀態中之一者中操作,且將在該第一指令集之一程式指令內的該暫存器指定欄位及該複數個異常狀態之一當前異常狀態一起解碼,以判定欲使用哪一個架構暫存器;該解碼步驟回應一第二指令集之程式指令,以控制該資料處理操作之該執行步驟,該資料處理操作之該執行步驟使用一第二組架構暫存器,該第二組架構暫存器係由該複數個暫存器提供且與該第一指令集之程式指令共享;且當判定欲使用哪一個架構暫存器時,該解碼步驟在不依賴異常狀態的情況下解碼在該第二指令集之一程式指令內之一暫存器指定欄位。
本發明之以上及其他目標、特徵及優點將由結合隨附圖式閱讀之說明性實施例之以下詳細描述可更加明白。
第1圖示意地圖示包括耦合至記憶體6之處理器4的資料處理系統2。處理器4包括複數個暫存器8,其被形成為31*64-位元通用暫存器,加上總是傳回零值之空暫存器。此等係由並未使用暫存器重新命名之實施例中之處理器4之硬體所提供的暫存器。在使用暫存器重新命名之實施例中,架構暫存器(例如,如由指令指定的及如在程式設計師的模型中考慮的暫存器)可映射至不同實體暫存器,且多個實體暫存器可同時保存在程式命令不同時間處對應於相同架構暫存器之值。
暫存器8之使用係經由呈現給第一指令集之第一組暫存器(一組32-位元架構暫存器),且係經由呈現給第二指令集之第二組暫存器(一組64-位元架構暫存器),該第一指令集包含以32-位元編碼且對32-位元資料值(32-位元指令)操作之指令,該第二指令集包含以32-位元編碼且對64-位元資料值(64-位元指令)操作之指令。此等指令集內之指令係依照使用32-位元來編碼,但是由此等指令集所作用之資料值之寬度卻不同。
處理電路10係耦合至複數個暫存器8,且為包括乘法器12、移位器14及加法器16之資料路徑之形式。指令解碼器18(其包括暫存器映射電路)回應由指令解碼器18所解碼之程式指令而產生控制訊號20。此等控制訊號20控制且配置處理電路10,且控制對複數個通用暫存器8內之暫存器的存取。將理解到,處理電路10係以簡化形式來展示以提高明確性,且實務上將可具有更多電路元件。
資料處理系統2使用狀態資料(其可能為或可能不為使用者可讀式),來控制是將程式指令解碼為第一指令集之程式指令還是第二指令集之程式指令,例如,可將模式位元或模式狀態設定為指示哪一個指令集為在使用中。在不同指令集內之指令之編碼可為非正交(non-orthogonal),因為相同指令位元型樣可發生於兩個指令集中且對應於彼等指令集內之不同指令。
待解碼之程式指令係自儲存第一指令集之程式24及第二指令集之程式26之記憶體6,提取至指令管線22中。當程式指令在指令管線22內到達解碼階段時,則將其傳遞至指令解碼器18以解碼,而產生控制訊號20。指令解碼器18亦回應來自指令集選擇電路28之訊號,以指示哪一個指令集當前為在使用中,且相應地由指令管線22所呈現以解碼之程式指令是應解碼為第一指令集之32-位元指令還是第二指令集之64-位元指令。當指令解碼器18正解碼來自第一指令集之指令(32-位元指令)時,則指令解碼器亦回應來自32-位元異常模式電路30之指示處理器4當前為在哪一模式中操作之訊號。如以下將描述的,當執行第一指令集之程式指令時需要當前異常模式,以指定呈現至第一指令集之第一組暫存器中之哪一個暫存器將被使用。
第2圖圖示來自第1圖之複數個通用暫存器8中之一者。此通用暫存器為64-位元暫存器。當執行第一指令集之程式指令(32-位元指令)時,存取並操縱第2圖之暫存器之最低有效位元部分。在較佳實施例中,儘管最高有效位元部分可調至零或設為一些未定義之值,但是在此等操縱期間其仍保持不變。當第2圖之暫存器係由第二指令集之程式指令來存取時,利用暫存器之全部64個位元。因此,即使兩個指令集對不同資料寬度操作,其仍可共享提供於第1圖之複數個暫存器8中之實體暫存器。暫存器之最高有效32-位元為兩個指令集之間非共享的暫存器之一部分。
第3圖示意地圖示使用暫存器以執行來自第一指令集之加法運算中。如將可見的,利用各個暫存器之較低部分來為所執行的處理操作提供輸入運算元或目的地。忽略暫存器之較高部分,且在較佳實施例中該較高部分保持不變。
在第4圖中,以類似方式來圖示第二指令集之加法運算(64-位元指令)。自第4圖將可見,在此狀況下,所有輸入運算元及目的地利用第2圖之暫存器之全部寬度。
第5圖示意地圖示包括三個暫存器指定欄位之第一指令集之指令(32-位元指令)。此等暫存器指定欄位為4-位元欄位,該等4-位元欄位允許由各個暫存器指定欄位指定16個不同值。圖示兩個源暫存器指定欄位,即,Rm
及Rn
。圖示一個目的地暫存器指定欄位,即,Rd
。於第5圖中示意地圖示之指令之剩餘者,為用以指示將執行哪一個資料處理操縱之作業碼。暫存器指定欄位亦可與自暫存器指定符之其他位元分離的暫存器指定符之一些位元不相連。
第6圖類似於第5圖,只是在此情況下圖示來自第二指令集之指令(64-位元指令)。在此情況下,暫存器指定欄位為5-位元欄位,該等5-位元欄位允許指示各個暫存器指定欄位之達32個不同值。源暫存器指定欄位為Xm
及Xn
,並且目的地暫存器指定欄位為Xd
。
第7圖圖示呈現至第一指令集之第一組架構暫存器。此為呈現至由英國Cambridge的ARM Limited所設計之處理器中之ARM指令集的架構暫存器之組。暫存器指定欄位為4-位元欄位,該等4-位元欄位允許指定介於0與15之間的值。暫存器R15係保留以用作程式計數器。如以下所討論的,將R15用作程式計數器為專用使用,且程式計數器並不形成呈現至ARM指令集(第一指令集)之第一組架構暫存器中之一者,該ARM指令集係映射至呈現至64-位元指令集之第二組架構暫存器。
如第7圖中所圖示,使用者及系統模式具備十五個通用暫存器R0至R14。在如第5圖中所圖示之指令內之暫存器指定欄位,係用以指定此等暫存器中之哪一個將被存取為正執行之資料處理操作之部分。將理解到,許多資料處理操作指定待存取之多個暫存器。
實務上,暫存器R13係保留以用作堆疊指標,而暫存器R14係用作返回位址暫存器,例如,用於儲存關於函數調用之返回位址。
第7圖圖示當處理器4正在異常模式(如由32-位元異常模式電路30對指令解碼器18指示者)中之一者中操作時,不同架構暫存器係在使用特定暫存器指定值時提供至第一指令集。因此,如一個實例,當暫存器指定值為「13」時,存在可使用(在任何暫存器重新命名前)之七個不同架構暫存器。此等架構暫存器中之第一個係用於使用者或系統模式中。視當前異常模式或處理器是否正在超管理器模式中執行而定,選擇此等架構暫存器中之剩餘六個,該等架構暫存器係有效替代用於使用者或系統模式中之架構暫存器。如第1圖中所圖示,若處理器4正在超管理器模式中執行,則此狀況係由輸入至指令解碼器18之訊號來指示。
可替代使用者或系統模式之R13暫存器之六個架構暫存器,係作為稱為成組異常暫存器之群。將可見,不同架構暫存器具有不同數目的成組等效物,且並非所有架構暫存器具有成組等效物。在一些情況下,提供此等成組暫存器可促進更快的異常處理。
第8圖示意地圖示當呈現至第二指令集時之第二組架構暫存器。與圖示於第7圖中之第一組架構暫存器相比,此第二組架構暫存器具有簡化結構。第二組架構暫存器包含每一個皆為64-位元暫存器之三十一個通用暫存器。此等係表示為X0至X30。使用圖示於第6圖中之五位元暫存器指定欄位來指定將存取此等架構暫存器中之哪一個。圖示於第8圖中之架構暫存器係存取為64-位元暫存器,並且所有64個位元均由指定的資料處理操作來操縱。與此相反,即使基本實體暫存器為如圖示於第2圖中之64-位元暫存器,第7圖之架構暫存器仍存取為32-位元暫存器。
亦圖示於第8圖中的為儲存空值(例如,0)之空暫存器X31。每當讀此空暫存器時,則傳回空值。每當寫入此暫存器時,則空值仍然儲存於空暫存器內,而不顧嘗試之寫入。如在第7圖中所圖示,在呈現至第一指令集之架構暫存器中不存在第8圖之空暫存器之等效物。因此,空暫存器並未包括在從屬於第一組與第二組之暫存器之間的一對一映射之第二組架構暫存器內。
第9圖圖示第一組之暫存器與第二組之暫存器之間的映射。如圖所示,暫存器X0至X7與暫存器R0至R7分別存取相同64-位元暫存器。對於更多的暫存器,延續如圖示之映射。應注意之特徵在於,對於暫存器R13及R14而言,使用於第一指令集中之暫存器指定符之最低有效位元對應於用於第二指令集中之對應暫存器之暫存器指定符之最低有效位元。此簡化了用以選擇實體暫存器之暫存器指定符及異常模式的解碼。此映射之另一特徵在於,用於暫存器X16至X23之暫存器指定符之增量序列,對應於R14及R13之第一指令集中之值,兩暫存器值係交替。
自第9圖可見,在呈現至第一指令集之第一組暫存器與呈現至第二指令集之第二組暫存器之間存在一對一映射。第一組之所有暫存器可被第二指令集之程式指令存取。此促進指令集之間的互操作。因此,當執行第一指令集之指令時,保存在成組暫存器內之一些值可能並不為程式指令可用,因為當前異常模式並未將彼等成組暫存器映射至使用中。然而,切換至執行第二指令集之指令將第一組之所有暫存器均映射至第二組之暫存器,使得其全部可在任何當前模式中存取。
第10圖為示意地圖示指令解碼器18之操作的流程圖。在步驟32處,處理程序等待,直至收到指令為止。在步驟34處,執行關於指令是否來自第二指令集(亦即,指令為64-位元指令)之判定。若指令為64-位元指令,則步驟36解碼該64-位元指令。步驟38將待使用之暫存器映射至5-位元欄位之暫存器指定欄位。接著,步驟40存取由5-位元暫存器指定欄位指定之暫存器。步驟42執行指令。
若在步驟34處判定指令並非為64-位元指令,則步驟44將該指令解碼為32-位元指令。如先前所論述的,步驟46使用4-位元暫存器指定欄位及當前異常模式(及超管理器狀態)來映射待使用之暫存器。接著,步驟40及步驟42存取已識別之暫存器,且執行指令。
第11圖示意地圖示當由部分指令解碼器18來執行時,來自不同指令集之程式指令的解碼。此等指令集為編碼為操縱32-位元資料值之32-位元指令的ARM指令集、編碼為操縱32-位元資料值之16-位元指令的Thumb指令集及編碼為操縱64-位元資料值之32-位元指令的64-位元指令集。ARM指令包括長度為y-位元(例如,允許指定16個不同架構暫存器之4個位元)之暫存器欄位。Thumb指令使用x個位元的暫存器指定欄位,其由一H位元擴充以用於一些指令,例如,3個位元允許正常定址8個架構暫存器,且由一H位元擴充以對一些指令允許定址16個架構暫存器。64-位元指令使用z-位元暫存器指定欄位,例如,允許定址32個架構暫存器之5位元暫存器指定欄位。
在處理器4內之狀態控制哪一個指令集當前為在使用中。在一些實施例中,此狀態可為程式設計師可見。可藉由使用指令集選擇指令來選擇當前在使用中之指令集,該等指令集選擇指令有時可與分支操作(例如,用指令集之切換來分支)相關聯。不同指令集之指令編碼為非正交的,結果,指定ARM指令之相同32-位元型樣可對應於在64-位元指令集內之不同指令。此32-位元型樣之正確解碼可結合識別哪一個指令集當前為在使用中之狀態來執行。
藉由使用轉換電路50首先將x個位元及H位元轉換為y-位元欄位,來執行Thumb指令之暫存器指定欄位之解碼。此y-位元欄位對應於ARM指令中之y-位元欄位。接著,視ARM指令集或Thumb指令集中之哪一個當前為在使用中而定,多工器52選擇將來自轉換電路50之y-位元暫存器指定欄位或將讀自ARM指令之y位元指定欄位傳遞至成組暫存器映射電路54。
如先前結合第7圖所描述的,ARM指令集(及Thumb指令集)提供成組暫存器。為存取特定架構暫存器,需要藉由成組暫存器映射電路54來解碼y-位元暫存器指定欄位及當前異常模式,以產生z-位元架構平坦暫存器編號(architecturally flat register number;AFRN)。舉例而言,自ARM指令或Thumb指令產生之給定y-位元暫存器指定欄位可指定暫存器R13。然而,如第7圖中所示,存在每個皆對應於此y-位元欄位之七個架構暫存器,且使用當前異常模式在此七個不同架構暫存器之間選擇,以產生相應架構平坦暫存器編號。
64-位元指令集並不使用成組暫存器。因此,可將z-位元暫存器指定欄位直接用作架構平坦暫存器編號,以指定待存取之架構暫存器。多工器56在讀自64-位元指令之架構平坦暫存器編號或由成組暫存器映射電路54所產生之架構平坦暫存器編號之間選擇,以提供向前傳遞至暫存器重新命名電路58之架構平坦暫存器編號。暫存器重新命名電路可根據已知亂序處理技術執行暫存器重新命名操作,以產生暫存器指定符z',該暫存器指定符z'係用以在複數個暫存器60內定址實體暫存器。
第11圖之安排允許在不同指令集之間共享暫存器重新命名電路58,以及複數個暫存器60之共享。架構平坦暫存器編號之共同產生簡化了解碼及複數個暫存器60之共享。不必在所有實施例中均提供暫存器重新命名電路58。
第12圖圖示可使用之虛擬機實施。雖然先前所描述之實施例自用於操作支援有關技術之特定處理硬體之裝置及方法的角度來實施本發明,但是提供所謂的硬體設備之虛擬機實施亦為可能的。此等虛擬機實施在主機處理器530上執行,主機處理器530執行支援虛擬機程式510之主機作業系統520。通常,需要大型強大處理器來提供以合理速度執行之虛擬機實施,但是在一些情況下(諸如,當出於兼容性或再利用性之原因而希望將本機編碼執行至另一處理器時)可調整此方法。虛擬機程式510向應用程式500提供應用程式介面,該應用程式介面與將由真實硬體來提供之應用程式介面相同,該真實硬體為正由虛擬機程式510模型化之裝置。因此,可使用虛擬機程式510在應用程式500內執行程式指令(包括以上所描述之記憶體存取之控制),以模型化其與虛擬機硬體之交互作用。
儘管已在本文中參閱隨附圖式詳細地描述本發明之說明性實施例,但熟習此項技術者應理解,本發明不限於彼等精確實施例,且在不脫離由附加申請專利範圍界定之本發明之範疇及精神的情況下,可在其中實現各種變化及修改。
2...資料處理系統
4...處理器
6...記憶體
8...暫存器
10...處理電路
12...乘法器
14...移位器
16...加法器
18...指令解碼器
20...控制訊號
22...指令管線
24...程式
26...程式
28...指令集選擇電路
30...32-位元異常模式電路
32...步驟
34...步驟
36...步驟
38...步驟
40...步驟
42...步驟
44...步驟
46...步驟
50...轉換電路
52...多工器
54...成組暫存器映射電路
56...多工器
58...暫存器重新命名電路
60...複數個暫存器
500...應用程式
510...虛擬機程式
520...主機作業系統
530...主機處理器
第1圖示意地圖示支援對32-位元資料值操作之第一指令集及對64-位元資料值操作之第二指令集的資料處理系統;
第2圖示意地圖示第1圖之資料處理系統的64-位元通用暫存器;
第3圖示意地圖示使用第2圖之通用暫存器對32-位元資料處理值操作之資料處理指令的動作;
第4圖示意地圖示使用第2圖之通用暫存器對64-位元資料處理值操作之資料處理指令的動作;
第5圖示意地圖示對32-位元資料處理值操作且包括暫存器指定欄位之指令的實例;
第6圖示意地圖示對64-位元資料處理值操作且包括暫存器指定欄位之指令的實例;
第7圖示意地圖示呈現至對32-位元資料處理值操作之第一指令集程式指令的暫存器;
第8圖示意地圖示呈現至對64-位元資料處理值操作之第二指令集的暫存器;
第9圖示意地圖示第7圖與第8圖之間的映射;
第10圖為示意地圖示指令之解碼的流程圖;
第11圖示意地圖示來自不同指令集之程式指令之暫存器指定欄位的解碼;以及
第12圖示意地圖示虛擬機實施。
Claims (20)
- 一種用於處理資料的裝置,該裝置包含:複數個暫存器,其經配置以儲存待處理之資料值;處理電路,其耦合至該複數個暫存器,且經配置以對儲存於該複數個暫存器中之資料值執行資料處理操作;一指令解碼器,其耦合至該處理電路,且回應一程式指令串流以控制該處理電路,以執行該資料處理操作;其中該指令解碼器回應一第一指令集之程式指令,以控制該處理電路,以使用由該複數個暫存器所提供之N-位元架構暫存器來執行該資料處理操作,其中,N為一正整數值;該指令解碼器回應一第二指令集之程式指令,以控制該處理電路,以使用由該複數個暫存器所提供之M-位元架構暫存器來執行該資料處理操作,其中,M為不同於N的一正整數值,且該複數個暫存器中的至少一些暫存器係由該第一指令集之程式指令及該第二指令集之程式指令共享;該指令解碼器係經配置以當判定欲存取該複數個暫存器中之哪一暫存器,以作為呈現給該第一指令集之程式指令以使用之一第一組N-位元架構暫存器之部分時,解碼在該第一指令集之一程式指令內之一暫存器指定欄位; 該指令解碼器係經配置以當判定欲存取該等複數個暫存器中之哪一暫存器,以作為呈現給該第二指令集之程式指令以使用之一第二組M-位元架構暫存器之部分時,解碼在該第二指令集之一程式指令內之一暫存器指定欄位;且該指令解碼器係經配置以提供在該第一指令集之程式指令內之該暫存器指定欄位之值與該等複數個暫存器之間的一第一映射,及在該第二指令集之程式指令內之該暫存器指定欄位之值與該等複數個暫存器之間的一第二映射,該第一映射係不同於該第二映射,且該第一映射及該第二映射經配置使得該第一組之各個暫存器皆具有至該第二組之一暫存器之一預定一對一映射,並與該第二組之該暫存器共享在該等複數個暫存器內之一共用暫存器之一共享部分,該共用暫存器之一非共享部分係無法使用該第一指令集之指令存取,以及儲存可使用該第二組之一暫存器存取之一值,其中當執行該第一指令集之程式指令時,該裝置係經配置以在複數個異常狀態中操作,且該指令解碼器係經配置以當判定欲存取該等複數個暫存器中之哪一暫存器時,將在該第一指令集之一程式指令內之該暫存器指定欄位及該等複數個異常狀態之一當前異常狀態一起解碼,且在該第一組內之一群暫存器為一成組暫存器群,該群暫存器對應於在該第一指令集之該程式指令內之該暫存器指定欄位之一共用值及不同異常狀態, 其中在該成組暫存器群內,該第一指令集之該程式指令內的該暫存器指定欄位之一最低有效位元之一值與該第二指令集之該程式指令內的該暫存器指定欄位之一最低有效位元之一值共用,其中該指令解碼器係經配置以提供該第一映射與該第二映射,其中,對於對應於在該第二指令集之該程式指令內之該暫存器指定欄位之一增量值序列的該第二組之該等暫存器之一部分而言,在該第一指令集之該程式指令內之該暫存器指定欄位的對應值在兩個值之間交替。
- 如請求項1所述之裝置,其中,M=2N。
- 如請求項1所述之裝置,其中,該第一組及該第二組包括相同數量的暫存器。
- 如請求項1所述之裝置,其中,該等複數個暫存器包含複數個M-位元暫存器,且該第一指令集之程式指令存取該等M-位元暫存器之一最低有效N-位元。
- 如請求項1所述之裝置,其中,N=32。
- 如請求項1所述之裝置,其中,當用該第二指令集之一程式指令來存取時,該等複數個暫存器包括一空值暫存器,該空值暫存器儲存一預定空值。
- 如請求項6所述之裝置,其中,該第一組暫存器不具有映射至該空值暫存器之架構暫存器。
- 如請求項1所述之裝置,其中,當執行該第一指令集之程式指令時,一程式計數器暫存器儲存一值,該值指示正執行之一程式指令之一記憶體位址,且該程式計數器暫存器在映射至該第二組暫存器的該第一組之外。
- 如請求項1所述之裝置,其中,當該共用暫存器係由該第一指令集之一程式指令來存取時,該非共享部分為調至零、不變及設定為一未定義值中之一者。
- 一種用於處理資料的裝置,該裝置包含:複數個暫存器構件,用於儲存待處理之資料值;處理構件,用於對儲存於該等複數個暫存器構件中之資料值執行資料處理操作;指令解碼構件,用於回應於一程式指令串流而控制該處理構件,以執行該資料處理操作;其中該指令解碼構件回應一第一指令集之程式指令,以控制該處理構件,以使用由該等複數個暫存器構件所提供之N-位元架構暫存器構件來執行該資料處理操作,其中,N為一正整數值;該指令解碼構件回應一第二指令集之程式指令,以控 制該處理構件,以使用由該等複數個暫存器構件所提供之M-位元架構暫存器構件來執行該資料處理操作,其中,M為不同於N的一正整數值,且該等複數個暫存器構件中的至少一些暫存器係由該第一指令集之程式指令及該第二指令集之程式指令共享;該指令解碼器構件係經配置以當判定欲存取該等複數個暫存器構件中之哪一暫存器,以作為呈現給該第一指令集之程式指令以使用之一第一組N-位元架構暫存器構件之部分時,解碼在該第一指令集之一程式指令內之一暫存器指定欄位;該指令解碼器構件係經配置以當判定欲存取該等複數個暫存器構件中之哪一暫存器,以作為呈現給該第二指令集之程式指令以使用之一第二組M-位元架構暫存器構件之部分時,解碼在該第二指令集之一程式指令內之一暫存器指定欄位;且該指令解碼構件係經配置以提供在該第一指令集之程式指令內之該暫存器指定欄位之值與該等複數個暫存器構件之間的一第一映射,及在該第二指令集之程式指令內之該暫存器指定欄位之值與該等複數個暫存器構件之間的一第二映射,該第一映射係不同於該第二映射,且該第一映射及該第二映射經配置使得該第一組之各個暫存器構件皆具有至該第二組之一暫存器構件之一預定一對一映射,並與該第二組之該暫存器構件共享在該等複數個暫存器構件內之一共用暫存器構件之一 共享部分,以及無法使用該第一指令集之指令存取的該共用暫存器構件之一非共享部分,以及儲存可使用該第二組之一暫存器構件可存取之一值,其中當執行該第一指令集之程式指令時,該裝置經配置而在複數個異常狀態中操作,且當判定欲存取該等複數個暫存器中之哪一暫存器時,該指令解碼構件將在該第一指令集之程式指令內之該暫存器指定欄位及該等複數個異常狀態之一當前異常狀態一起解碼,且在該第一組內之一群暫存器為一成組暫存器群,該群暫存器對應於在該第一指令集之該程式指令內之該暫存器指定欄位之一共用值及不同異常狀態,其中在該成組暫存器群內,該第一指令集之該程式指令內的該暫存器指定欄位之一最低有效位元之一值與該第二指令集之該程式指令內的該暫存器指定欄位之一最低有效位元之一值共用,其中該指令解碼構件經配置以提供該第一映射與該第二映射,其中,對於對應於在該第二指令集之該程式指令內之該暫存器指定欄位之一增量值序列的該第二組之該等暫存器之一部分而言,在該第一指令集之該程式指令內之該暫存器指定欄位的對應值在兩個值之間交替。
- 一種處理資料之方法,該方法包含以下步驟:儲存步驟,在複數個暫存器中儲存待處理之資料值; 執行步驟,對儲存於該等複數個暫存器中之資料值執行資料處理操作;解碼步驟,解碼一程式指令串流,以控制該執行步驟;其中該解碼步驟回應一第一指令集之程式指令,以控制該執行步驟,該執行步驟使用由該等複數個暫存器所提供之N-位元架構暫存器,其中N為一正整數值;該解碼步驟回應一第二指令集之程式指令,以控制該執行步驟,該執行步驟使用由該等複數個暫存器所提供之M-位元架構暫存器,其中,M為不同於N的一正整數值,且該等複數個暫存器中之至少一些暫存器係由該第一指令集之程式指令及該第二指令集之程式指令共享;當判定欲存取該等複數個暫存器中之哪一暫存器,以作為呈現給該第一指令集之程式指令以使用之一第一組N-位元架構暫存器之部分時,該解碼步驟解碼在該第一指令集之一程式指令內之一暫存器指定欄位;當判定欲存取該等複數個暫存器中之哪一暫存器,以作為呈現給該第二指令集之程式指令以使用之一第二組M-位元架構暫存器之部分時,該解碼步驟解碼在該第二指令集之一程式指令內之一暫存器指定欄位;且該解碼步驟提供在該第一指令集之程式指令內之該暫存器指定欄位之值與該等複數個暫存器之間的一第一映射,及在該第二指令集之程式指令內之該暫存器指 定欄位之值與該等複數個暫存器之間的一第二映射,該第一映射係不同於該第二映射,且該第一映射及該第二映射使得該第一組之各個暫存器皆具有至該第二組之一暫存器之一預定一對一映射,並與該第二組之該暫存器共享在該等複數個暫存器內之一共用暫存器之一共享部分,該共用暫存器之一非共享部分係無法使用該第一指令集之指令存取,以及儲存可使用該第二組之一暫存器存取之一值,其中當執行該第一指令集之程式指令時,在複數個異常狀態中之一者中操作,且當判定欲存取該等複數個暫存器中之哪一暫存器時,該解碼步驟將在該第一指令集之程式指令內之該暫存器指定欄位及該等複數個異常狀態之一當前異常狀態一起解碼,且在該第一組內之一群暫存器為一成組暫存器群,該群暫存器對應於在該第一指令集之該程式指令內之該暫存器指定欄位之一共用值及不同異常狀態,其中在該成組暫存器群內,該第一指令集之該程式指令內的該暫存器指定欄位之一最低有效位元之一值與該第二指令集之該程式指令內的該暫存器指定欄位之一最低有效位元之一值共用,其中該解碼步驟提供該映射,使得對於對應於在該第二指令集之該程式指令內之該暫存器指定欄位之一增量值序列的該第二組之該等暫存器之一部分而言,在該第一指令集之該程式指令內之該暫存器指定欄位的對應值在兩個值之間交替。
- 如請求項11所述之方法,其中,M=2N。
- 如請求項11所述之方法,其中,該第一組及該第二組包括相同數量的暫存器。
- 如請求項11所述之方法,其中,該等複數個暫存器包含複數個M-位元暫存器,且該第一指令集之程式指令存取該M-位元暫存器之一最低有效N-位元。
- 如請求項11所述之方法,其中,N=32。
- 如請求項11所述之方法,其中,當用該第二指令集之一程式指令來存取時,該等複數個暫存器包括一空值暫存器,該空值暫存器儲存一預定空值。
- 如請求項16所述之方法,其中,該第一組暫存器不具有映射至該空值暫存器之架構暫存器。
- 如請求項11所述之方法,其中,當執行該第一指令集之程式指令時,一程式計數器暫存器儲存一值,該值指示正執行之一程式指令之一記憶體位址,且該程式計數器暫存器在映射至該第二組暫存器的該第一組暫存器之外。
- 如請求項11所述之方法,其中,當該共用暫存器係由該第一指令集之一程式指令來存取時,該非共享部分為調至零、不變及設定為一未定義值中之一者。
- 一種虛擬機,其由在一資料處理裝置上執行之一電腦程式提供,該虛擬機提供對應於如請求項1所述之裝置之一指令執行環境。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1004293.5A GB2478726B (en) | 2010-03-15 | 2010-03-15 | Mapping between registers used by multiple instruction sets |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201203110A TW201203110A (en) | 2012-01-16 |
TWI489386B true TWI489386B (zh) | 2015-06-21 |
Family
ID=42261608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100108781A TWI489386B (zh) | 2010-03-15 | 2011-03-15 | 由多個指令集使用之暫存器之間的映射 |
Country Status (10)
Country | Link |
---|---|
US (1) | US9092215B2 (zh) |
EP (1) | EP2524303B1 (zh) |
JP (1) | JP5646656B2 (zh) |
KR (1) | KR101812569B1 (zh) |
CN (1) | CN103098020B (zh) |
GB (1) | GB2478726B (zh) |
IL (1) | IL220987A (zh) |
MY (1) | MY156118A (zh) |
TW (1) | TWI489386B (zh) |
WO (1) | WO2011114121A1 (zh) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9631528B2 (en) * | 2009-09-03 | 2017-04-25 | Clean Emissions Technologies, Inc. | Vehicle reduced emission deployment |
US9158541B2 (en) * | 2010-11-03 | 2015-10-13 | Apple Inc. | Register renamer that handles multiple register sizes aliased to the same storage locations |
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 |
US9378019B2 (en) | 2011-04-07 | 2016-06-28 | Via Technologies, Inc. | Conditional load instructions in an out-of-order execution microprocessor |
US9176733B2 (en) | 2011-04-07 | 2015-11-03 | Via Technologies, Inc. | Load multiple and store multiple instructions in a microprocessor that emulates banked registers |
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) |
US9244686B2 (en) | 2011-04-07 | 2016-01-26 | Via Technologies, Inc. | Microprocessor that translates conditional load/store instructions into variable number of microinstructions |
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 |
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 |
US9898291B2 (en) | 2011-04-07 | 2018-02-20 | Via Technologies, Inc. | Microprocessor with arm and X86 instruction length decoders |
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 |
US9274795B2 (en) | 2011-04-07 | 2016-03-01 | Via Technologies, Inc. | Conditional non-branch instruction prediction |
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 |
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 |
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 |
US9645822B2 (en) | 2011-04-07 | 2017-05-09 | Via Technologies, Inc | Conditional store instructions in an out-of-order execution microprocessor |
US9141389B2 (en) | 2011-04-07 | 2015-09-22 | Via Technologies, Inc. | Heterogeneous ISA microprocessor with shared hardware ISA 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 |
US8914615B2 (en) | 2011-12-02 | 2014-12-16 | Arm Limited | Mapping same logical register specifier for different instruction sets with divergent association to architectural register file using common address format |
US9430243B2 (en) | 2012-04-30 | 2016-08-30 | Apple Inc. | Optimizing register initialization operations |
EP2704001B1 (en) * | 2012-08-31 | 2016-10-19 | VIA Technologies, Inc. | Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode |
EP3179363B1 (en) * | 2012-08-31 | 2019-04-24 | VIA Technologies, Inc. | Microprocessor that enables arm isa program to access general purpose registers written by x86 isa program |
US10228941B2 (en) * | 2013-06-28 | 2019-03-12 | Intel Corporation | Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register |
US9582295B2 (en) | 2014-03-18 | 2017-02-28 | International Business Machines Corporation | Architectural mode configuration |
US9588774B2 (en) | 2014-03-18 | 2017-03-07 | International Business Machines Corporation | Common boot sequence for control utility able to be initialized in multiple architectures |
US9916185B2 (en) | 2014-03-18 | 2018-03-13 | International Business Machines Corporation | Managing processing associated with selected architectural facilities |
KR102180972B1 (ko) * | 2014-04-23 | 2020-11-20 | 에스케이하이닉스 주식회사 | 메모리 컨트롤 유닛 및 그것을 포함하는 데이터 저장 장치 |
GB2538237B (en) * | 2015-05-11 | 2018-01-10 | Advanced Risc Mach Ltd | Available register control for register renaming |
GB2546465B (en) | 2015-06-05 | 2018-02-28 | Advanced Risc Mach Ltd | Modal processing of program instructions |
GB2540971B (en) * | 2015-07-31 | 2018-03-14 | Advanced Risc Mach Ltd | Graphics processing systems |
US20170046160A1 (en) * | 2015-08-14 | 2017-02-16 | Qualcomm Incorporated | Efficient handling of register files |
GB2547912B (en) * | 2016-03-02 | 2019-01-30 | Advanced Risc Mach Ltd | Register access control |
CN115525343B (zh) * | 2022-10-31 | 2023-07-25 | 海光信息技术股份有限公司 | 一种并行译码的方法、处理器、芯片及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4825355A (en) * | 1985-10-25 | 1989-04-25 | Hitachi, Ltd. | Instruction format for program control type data processing systems |
US6499046B1 (en) * | 1999-05-20 | 2002-12-24 | International Business Machines Corporation | Saturation detection apparatus and method therefor |
TW200949825A (en) * | 2005-08-09 | 2009-12-01 | Panasonic Corp | Recording medium and playback apparatus |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2289354B (en) * | 1994-05-03 | 1997-08-27 | Advanced Risc Mach Ltd | Multiple instruction set mapping |
GB2349252B (en) * | 1996-06-10 | 2001-02-14 | Lsi Logic Corp | An apparatus and method for detecting and decompressing instructions from a variable-length compressed instruction set |
US6981132B2 (en) * | 2000-08-09 | 2005-12-27 | Advanced Micro Devices, Inc. | Uniform register addressing using prefix byte |
US20030126520A1 (en) * | 2001-12-31 | 2003-07-03 | Globespanvirata | System and method for separating exception vectors in a multiprocessor data processing system |
JP2004157636A (ja) * | 2002-11-05 | 2004-06-03 | Renesas Technology Corp | データ処理装置 |
EP1447742A1 (en) * | 2003-02-11 | 2004-08-18 | STMicroelectronics S.r.l. | Method and apparatus for translating instructions of an ARM-type processor into instructions for a LX-type processor |
TWI224281B (en) * | 2003-07-16 | 2004-11-21 | Sunplus Technology Co Ltd | A processor executing script with different length and method thereof |
TW200511111A (en) * | 2003-07-30 | 2005-03-16 | Koninkl Philips Electronics Nv | Microcontroller with an interrupt structure having programmable priority levels with each priority level associated with a different register set |
US7263621B2 (en) * | 2004-11-15 | 2007-08-28 | Via Technologies, Inc. | System for reducing power consumption in a microprocessor having multiple instruction decoders that are coupled to selectors receiving their own output as feedback |
US8245016B2 (en) * | 2007-09-28 | 2012-08-14 | International Business Machines Corporation | Multi-threaded processing |
GB2478731B (en) * | 2010-03-15 | 2013-08-21 | Advanced Risc Mach Ltd | Operand size control |
-
2010
- 2010-03-15 GB GB1004293.5A patent/GB2478726B/en active Active
-
2011
- 2011-02-16 EP EP11705237.3A patent/EP2524303B1/en active Active
- 2011-02-16 MY MYPI2012003358A patent/MY156118A/en unknown
- 2011-02-16 KR KR1020127025937A patent/KR101812569B1/ko active IP Right Grant
- 2011-02-16 CN CN201180014383.2A patent/CN103098020B/zh active Active
- 2011-02-16 JP JP2012557603A patent/JP5646656B2/ja active Active
- 2011-02-16 WO PCT/GB2011/050306 patent/WO2011114121A1/en active Application Filing
- 2011-02-22 US US12/929,865 patent/US9092215B2/en active Active
- 2011-03-15 TW TW100108781A patent/TWI489386B/zh active
-
2012
- 2012-07-17 IL IL220987A patent/IL220987A/en active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4825355A (en) * | 1985-10-25 | 1989-04-25 | Hitachi, Ltd. | Instruction format for program control type data processing systems |
US6499046B1 (en) * | 1999-05-20 | 2002-12-24 | International Business Machines Corporation | Saturation detection apparatus and method therefor |
TW200949825A (en) * | 2005-08-09 | 2009-12-01 | Panasonic Corp | Recording medium and playback apparatus |
Also Published As
Publication number | Publication date |
---|---|
IL220987A (en) | 2016-05-31 |
JP5646656B2 (ja) | 2014-12-24 |
MY156118A (en) | 2016-01-15 |
US9092215B2 (en) | 2015-07-28 |
US20110225397A1 (en) | 2011-09-15 |
KR101812569B1 (ko) | 2017-12-27 |
EP2524303A1 (en) | 2012-11-21 |
IL220987A0 (en) | 2012-09-24 |
WO2011114121A1 (en) | 2011-09-22 |
KR20130016246A (ko) | 2013-02-14 |
GB201004293D0 (en) | 2010-04-28 |
JP2013522749A (ja) | 2013-06-13 |
CN103098020B (zh) | 2016-04-27 |
EP2524303B1 (en) | 2019-08-07 |
CN103098020A (zh) | 2013-05-08 |
GB2478726B (en) | 2013-12-25 |
GB2478726A (en) | 2011-09-21 |
TW201203110A (en) | 2012-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI489386B (zh) | 由多個指令集使用之暫存器之間的映射 | |
TWI397857B (zh) | 微處理器、用以處理微處理器之儲存巨指令之方法及用於計算裝置之電腦程式產品 | |
US20180189066A1 (en) | Processor | |
US7437532B1 (en) | Memory mapped register file | |
KR101597774B1 (ko) | 마스킹된 전체 레지스터 액세스들을 이용한 부분적 레지스터 액세스들을 구현하기 위한 프로세서들, 방법들 및 시스템들 | |
US9804851B2 (en) | Operand size control | |
US20190065201A1 (en) | Implicit global pointer relative addressing for global memory access | |
CN107111489B (zh) | 莫顿坐标调整处理器、方法、系统和指令 | |
JPH09311786A (ja) | データ処理装置 | |
JPH0926878A (ja) | データ処理装置 | |
KR20110055629A (ko) | 단일 명령 다중 데이터(simd)데이터 처리기에서 확장된 어드레싱 모드들의 제공 | |
CN107851013B (zh) | 数据处理装置和方法 | |
CN101802779A (zh) | 具有可重新组构的浮点单元的处理器 | |
TW201738758A (zh) | 用以提供基底暫存器交換狀態驗證功能之指令及邏輯 | |
TWI559219B (zh) | 用於選擇向量運算之元素的裝置及方法(二) | |
US11451241B2 (en) | Setting values of portions of registers based on bit values | |
WO2019046723A1 (en) | RELATED ADDRESSING OF GLOBAL POINTER IMPLICIT FOR ACCESS TO GLOBAL MEMORY | |
EP1367485B1 (en) | Pipelined processing | |
EP1367484B1 (en) | Instruction encoding | |
EP1050800A1 (en) | A pipelined execution unit | |
JP2019519864A (ja) | ベクトルレジスタのアクセス | |
EP4052121A1 (en) | Shadow latches in a shadow-latch configured register file for thread storage | |
JPH1185514A (ja) | 情報処理装置 |