TWI389026B - 暫存器更名表的回復方法與回復系統 - Google Patents
暫存器更名表的回復方法與回復系統 Download PDFInfo
- Publication number
- TWI389026B TWI389026B TW098119113A TW98119113A TWI389026B TW I389026 B TWI389026 B TW I389026B TW 098119113 A TW098119113 A TW 098119113A TW 98119113 A TW98119113 A TW 98119113A TW I389026 B TWI389026 B TW I389026B
- Authority
- TW
- Taiwan
- Prior art keywords
- register
- rename
- renamed
- identification code
- renaming
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 14
- 238000011084 recovery Methods 0.000 title 1
- 230000009471 action Effects 0.000 claims description 13
- 230000008859 change Effects 0.000 claims description 8
- 239000008186 active pharmaceutical agent Substances 0.000 claims description 3
- 238000012790 confirmation Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 12
- FGUUSXIOTUKUDN-IBGZPJMESA-N C1(=CC=CC=C1)N1C2=C(NC([C@H](C1)NC=1OC(=NN=1)C1=CC=CC=C1)=O)C=CC=C2 Chemical compound C1(=CC=CC=C1)N1C2=C(NC([C@H](C1)NC=1OC(=NN=1)C1=CC=CC=C1)=O)C=CC=C2 FGUUSXIOTUKUDN-IBGZPJMESA-N 0.000 description 5
- 238000012423 maintenance Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000007689 inspection Methods 0.000 description 3
- GNFTZDOKVXKIBK-UHFFFAOYSA-N 3-(2-methoxyethoxy)benzohydrazide Chemical compound COCCOC1=CC=CC(C(=O)NN)=C1 GNFTZDOKVXKIBK-UHFFFAOYSA-N 0.000 description 2
- 229930091051 Arenine Natural products 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 1
- 230000006735 deficit Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process 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/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)
- Advance Control (AREA)
Description
本發明是有關於一種處理器的控制方法與系統,且特別是有關於一種處理器中的暫存器更名表的回復方法與回復系統。
目前處理器(processor)的技術日新月異,其目的皆在於提昇處理器的效率。以亂序(out-of-order processor)處理器為例,利用暫存器更名(register renaming)的觀念,可解決資料相依(data dependence)的問題,使得處理器不用依照原始程式碼的次序來執行指令(instruction)。
請參照第一圖A與B,其所繪示為沒有進行暫存器更名與進行暫存器更名的程式執行方式。如第一圖A的虛擬程式碼(pseudo code)可知。處理器第一步執行記憶體讀取(memory read)動作,並將位址(address)1024內的資料暫存於R1暫存器;處理器第二步執行R1暫存器內的資料加2的動作,並存回R1暫存器;處理器第三步執行記憶體寫入(memory write)動作,將R1暫存器中的資料寫入記憶體位址1032內;處理器第四步執行記憶體讀取動作,並將位址2048內的資料暫存於R1暫存器;處理器第五步執行R1暫存器內的資料加4的動作,並存回R1暫存器;以及,處理器第六步執行記憶體寫入動作,將R1暫存器中的資料寫入記憶體位址2056內。其中,R1暫存器可為處理器中的應用程式暫存器(application programming registers),此應用程式暫存器包括三大類:通用暫存器(general purpose registers)、節段暫存器(segment registers)以及狀態暫存器(status register),此處通用暫存器例如AX、BX、CX、DX而節段暫存器CS、DS等。
在沒有進行暫存器更名時,處理器執行必須依序(in-order)上述的步驟來執行程式。也就是說,處理器必須依據程式的先後次序,並耗費六個步驟的時間來執行第一圖A的程式。
然而,仔細分析第一圖A的程式可知,1~3步驟與4~6步驟皆是利用相同的R1暫存器。這種寫入相同位置的輸出相依(output dependence)的情形稱之為WAW危障(write-after-write hazard),如果可利用另外一個R2暫存器來執行4~6步驟,則1~3步驟與4~6步驟可以同時執行。也就是如第一圖B所示,利用處理器中的不同執行單元(execution unit)同時平行地(parallel)執行1~3步驟與4~6步驟。因此,上述的程式僅需耗費三個步驟的時間即可完成。值得注意地,處理器於執行完上述的程式後,必須自動地將R2暫存器內的資料寫回(write back)R1暫存器。因此,在程式的執行過程,利用另一個暫存器來取代原程式碼中的暫存器的觀念,即稱為暫存器更名(register renaming),並且將暫存器更名結果(result)放置於暫存器更名表(register rename table)中。
然而,當例外狀況(exception)或者分支預測錯誤(branch misprediction)發生時,有些暫存器已經被更名且無法回復(recover)至例外狀況或者分支預測錯誤發生之前正確的暫存器更名表內容,因此,程式的執行就會發生錯誤。
在程式尚未執行前,處理器內的解碼單元(decoding unit)會先將程式依序解碼,之後進入更名單元(rename unit)。而更名單元會依序將程式碼的目標暫存器(destination register)提供一個識別碼(ID),並更新於暫存器更名表。再者,若將所有更新的資訊記錄於一個歷史更名表(rename history table)中,在例外狀況或者分支預測錯誤發生時就有正確的資訊讓暫存器更名表回復。
舉例來說,第二圖的程式中有八個(a~h)步驟。第a步執行記憶體讀取(memory read)動作,並將位址(address)1024內的資料暫存於AX暫存器,此時,目標暫存器為AX暫存器;第b步執行AX暫存器內的資料加2並將結果置於BX暫存器,此時,目標暫存器為BX暫存器;第c步將CX暫存器內的資料置於BX暫存器,此時,目標暫存器為BX暫存器;第d步執行BX暫存器內的資料加5並將結果置於CX暫存器,此時,目標暫存器為CX暫存器;第e步執行AX暫存器內的資料加3並將結果置於DX暫存器,此時,目標暫存器為DX暫存器;第f步將CX暫存器內的資料置於AX暫存器,此時,目標暫存器為AX暫存器;第g步執行BX暫存器內的資料加4並將結果置於DX暫存器,此時,目標暫存器為DX暫存器;第h步執行AX暫存器內的資料加5並將結果置於BX暫存器,此時,目標暫存器為BX暫存器。
因此,如第三圖A所示,於第a步驟時,目標暫存器為AX暫存器,因此,暫存器更名表中表示AX暫存器更名為ID1(更名識別碼1),而由歷史更名表ID欄位1得知新增一ID1暫存器且由使用狀態(occupy)欄位設定為“1”得知ID1尚為有效,而在之後的指令如要執行內容如要參考到AX的資料,來源則是ID1伴隨的資料。若參考的資料是BX、CX、DX,如第三圖A所示,其標示為一“-”,則資料來源就直接是應用程式暫存器。如第三圖B所示,於第b步驟時,目標暫存器為BX暫存器,因此,更新暫存器更名表,其中AX暫存器更名為ID1而BX暫存器更名為ID2(更名識別碼2),而由歷史更名表ID欄位2得知新增一ID2暫存器且由使用狀態(occupy)欄位設定為“1”得知ID2尚為有效。如第三圖C所示,於第c步驟時,目標暫存器為BX暫存器,因此,更新暫存器更名表,其中AX暫存器更名為ID1而BX暫存器更名為ID3(更名識別碼3),而由歷史更名表ID欄位3得知新增一ID3暫存器且由使用狀態(occupy)欄位設定為“1”得知ID3尚為有效。如第三圖D所示,於第d步驟時,目標暫存器為CX暫存器,因此,更新暫存器更名表,其中AX暫存器更名為ID1、BX暫存器更名為ID3、而CX暫存器更名為ID4(更名識別碼4),而由歷史更名表ID欄位4得知新增一ID4暫存器且由使用狀態(occupy)欄位設定為“1”得知ID4尚為有效。如第三圖E所示,於第e步驟時,目標暫存器為DX暫存器,因此,更新暫存器更名表,其中AX暫存器更名為ID1、BX暫存器更名為ID3、CX暫存器更名為ID4、而DX暫存器更名為ID5(更名識別碼5),而由歷史更名表ID欄位5得知新增一ID5暫存器且由使用狀態(occupy)欄位設定為“1”得知ID5尚為有效。如第三圖F所示,於第f步驟時,目標暫存器為AX暫存器,因此,更新暫存器更名表,其中AX暫存器更名為ID6(更名識別碼6)、BX暫存器更名為ID3、CX暫存器更名為ID4、而DX暫存器更名為ID5,而由歷史更名表ID欄位6得知新增一ID6暫存器且由使用狀態(occupy)欄位設定為“1”得知ID6尚為有效。如第三圖G所示,於第g步驟時,目標暫存器為DX暫存器,因此,更新暫存器更名表,其中AX暫存器更名為ID6、BX暫存器更名為ID3、CX暫存器更名為ID4、而DX暫存器更名為ID7(更名識別碼7),而由歷史更名表ID欄位7得知新增一ID7暫存器且由使用狀態(occupy)欄位設定為“1”得知ID7尚為有效。如第三圖H所示,於第h步驟時,目標暫存器為BX暫存器,因此,更新暫存器更名表,其中AX暫存器更名為ID6、BX暫存器更名為ID8(更名識別碼8)、CX暫存器更名為ID4、而DX暫存器更名為ID7,而由歷史更名表ID欄位8得知新增一ID8暫存器且由使用狀態(occupy)欄位設定為“1”得知ID8尚為有效。
當指令經過處理器的執行單元執行結束後,將結果寫回(write back)暫存器,並且更改歷史更名表與暫存器更名表。舉例來說,如第三圖I所示,當ID3暫存器內的資料寫回(write back)BX暫存器後,歷史更名表中ID欄位中ID3所對應的使用狀態(occupy)欄位清除為“0”,代表更名為ID3暫存器的資料已寫回(write back)BX暫存器。由於更名為ID3暫存器的資料已寫回BX暫存器,如第三圖J所示,歷史更名表與暫存器更名表中所有關於ID3暫存器皆需被刪除。
同理,如第三圖K所示,當ID4暫存器內的資料寫回(write back)CX暫存器後,歷史更名表中ID欄位中ID4所對應的使用狀態(occupy)欄位清除為“0”,代表更名為ID4暫存器的資料已寫回(write back)CX暫存器。再者,如第三圖L所示,歷史更名表與暫存器更名表中所有關於ID4暫存器皆需被刪除。之後,ID3與ID4可再次使用於其他暫存器的更名。
由上述可知,歷史更名表在資料寫回時,會比較歷史更名表內的ID如果與寫回ID相同就會刪除之。一般來說,內容可定址記憶體(content addressable memory)就符合此功能的需求,此類記憶體有著速度快的優點。但是電路面積較大以及同一時間內可能有多個資料寫回動作,在進行歷史更名表的內容的查詢以及刪除會消耗相當大的功率卻是它的缺點。
以上的流程在正常的指令執行過程皆不會有任何的問題,然而,當例外狀況(exception)或者分支預測錯誤(branch misprediction)產生時,歷史更名表與暫存器更名表必須回復至發生例外狀況時的狀態。也就是說,當例外狀況或者分支預測錯誤發生時,在歷史更名表例外狀況或者分支預測錯誤發生點之後的所有資料都必須清除(flush),也就是將使用狀態欄位清除為“0”。再者,暫存器更名表也必須回復至尚未發生例外狀況時的狀態。如此才能夠確保程式的執行過程不會出現錯誤。
舉例來說,如第四圖所示的程式中有九個(a~i)步驟。相較於第二圖的程式新增步驟f,而步驟f以“cBranch”代表會發生分支預測錯誤。再者,如同第三圖A至L的描述,於ID3暫存器與ID4暫存器已經寫回的情況。
如第五圖A所示,當處理器執行的程式發生分支預測錯誤(cBranch)時。首先,在歷史更名表例外狀況發生點之後的所有資料都必須清除(flush)。因此,如第五圖B所示,ID欄位6、7、8與9中所有的資料都必須刪除,也就是說將其使用狀態欄位清除為“0”。再者,如第五圖C所示,暫存器更名表也必須回復至尚未發生例外狀況時的狀態。亦即,暫存器更名表回復至與ID欄位5中的資料同步。而新的更名動作,由ID6開始執行下去。
綜觀以上之習知技術,由於在資料寫回歷史更名表時,每一單位時間處理器必須讀取歷史更名表的內容並比較內容是否為相符合的ID,並進行刪除工作。此一寫回維護(write back maintenance)歷史更名表的動作,使用可定址記憶體雖然有著速度快的優點,但是功率消耗以及較大的面積卻是最主要的問題所在。再者,若歷史更名表所需欄位數目更多,為了達到相同的執行頻率需進行多次的比較,造成效能的減損。
本發明的目的在於提出一種暫存器更名表的回復方法與回復系統,在處理器不進行寫回維護動作的前提下,於例外狀況發生時能夠回復暫存器更名表。
本發明提出一種暫存器更名表的回復方法,包含下列步驟:根據一清除識別碼,進行一歷史更名表的一清除動作;由該歷史更名表中清除識別碼前一列內取出對應至一第一暫存器的一第一更名識別碼;當該第一更名識別碼為使用中時,於一暫存器更名表中將該第一暫存器更名為該第一更名識別碼;以及,當該第一更名識別碼不在使用中時,使該暫存器更名表中的該第一暫存器無對應。
本發明更提出一種暫存器更名表的回復系統,可接收一解碼單元輸出的複數個程式碼,包含:一決定單元,可根據該些程式碼中的多個目標暫存器設定相對應的多個更名識別碼,其中,該些目標暫存器包括多個應用程式暫存器;一暫存器更名表,記錄該些應用程式暫存器與該些更名識別碼最新的對應關係;一歷史更名表,記錄該些應用程式暫存器與該些更名識別碼所有的對應關係;一寫回指示器,可產生一寫回識別碼至該歷史更名表,且該寫回識別碼等於該些更名識別碼中的一第一更名識別碼時,於該歷史更名表內將該第一更名識別碼的一使用狀態由一使用狀態變更成一不使用狀態;一清除指示器,可產生一清除識別碼,使得該歷史更名表進行一清除動作;一使用狀態確認單元,可接收該歷史更名表中該些更名識別碼的使
用狀態以及該清除識別碼,並產生一使用狀態資訊;一多工單元組,可於該清除動作後,接收該使用狀態資訊並根據該歷史更名表中清除識別碼前一列內對應至一第一暫存器的一第一更名識別碼決定該第一更名識別碼的使用狀態;以及,一檢查單元,當該第一更名識別碼的使用狀態為一使用中時,於該暫存器更名表中將該第一更名識別碼對應至該第一暫存器,以及,當該第一更名識別碼的使用狀態為一未使用時,使該暫存器更名表中的該第一暫存器無對應;一第一多工單元,可於該清除動作時接收到一更名表回復控制信號,並依據該檢查單元的資料結果更新該暫存器更名表。
為了使 貴審查委員能更進一步瞭解本發明特徵及技術內容,請參閱以下有關本發明之詳細說明與附圖,然而所附圖式僅提供參考與說明,並非用來對本發明加以限制。
請參照第六圖,其所繪示為本發明暫存器更名表的回復系統。此更名表的回復系統位於更名單元200內,包括:決定單元202、第一多工單元204、暫存器更名表206、多工單元組230、檢查單元212、寫回指示器214、清除指示器216、使用狀態確認單元218、歷史更名表220。其中,當程式執行過程發生例外狀況時,清除指示器216會產生一清除ID(清除識別碼,flushed ID)至歷史更名表220,同時產生一更名表回復控制信號(R)至第一多工單元204用以進行暫存器更名表的回復動作。以下介紹本發明暫存器更名表以及歷史更名表的控制流程。
如第四圖所示的程式中有九個(a~i)步驟,而步驟f會產生分支預測錯誤。同理,於步驟f產生例外狀況也會使得本發明暫存器更名表以及歷史更名表具有相同的控制流程,因此不再贅述。再者,當更名表回復控制信號(R)尚未動作時,暫存器更名表206是根據決定單元202的指示來更新。
首先,解碼單元100會依序進行程式碼的解碼,之後傳遞至更名單元200。如第七圖A所示,決定單元202接收到由解碼單元100輸出的第a步驟的程式碼。由於目標暫存器為AX暫存器,因此,決定單元202將AX暫存器更名為ID1,並且傳遞至歷史更名表220以及經過第一多工單元204傳遞至暫存器更名表206。因此,由暫存器更名表206可知,AX暫存器更名為ID1,而由歷史更名表ID欄位1得知新增一ID1暫存器且由使用狀態(occupy)欄位設定為“1”得知ID1尚為有效。
同理,第b步驟至第i步驟更新暫存器更名表206以及建立歷史更名表220的方式皆相同,因此予以省略。而完成第i步驟後的暫存器更名表206以及歷史更名表220如第七圖B所示。
再者,當寫回動作發生時,寫回指示器214產生相對應的寫回ID(寫回識別碼,write back ID)至歷史更名表220、使用狀態確認單元218、決定單元202。根據本發明的實施例,歷史更名表220根據寫回指示器214產生的ID將相對應的使用狀態(occupy)欄位清除為“0”。而歷史更名表220不進行習知的寫回維護動作(write back maintenance)。舉例來說,假設關於ID3暫存器的程式碼已被執行完成,此時寫回指示器214產生ID3至歷史更名表220、使用狀態確認單元218以及決定單元202。如第七圖C所示,當ID3暫存器內的資料寫回(write back)BX暫存器後,歷史更名表中ID欄位中ID3所對應的使用狀態(occupy)欄位清除為“0”。再者,由於此時暫存器更名表206中並無關於ID3的記錄,因此,決定單元202不會進行暫存器更名表206的更新。再者,使用狀態確認單元218會在暫存器更名表206回復動作時才會動作,因此,使用狀態確認單元218接收到ID3時並不會動作。
同理,假設關於ID4暫存器的程式碼已被執行完成,此時寫回指示器214產生ID4至歷史更名表220、使用狀態確認單元218以及決定單元202。如第七圖D所示,當ID4暫存器內的資料寫回(write back)CX暫存器後,歷史更名表中ID欄位中ID4所對應的使用狀態(occupy)欄位清除為“0”。再者,由於此時暫存器更名表206中記錄ID4,因此,決定單元202會更新暫存器更名表206,將ID4刪除。同理,使用狀態確認單元218也不會動作。
如第七圖E所示,當處理器執行到分支預測錯誤(cBranch)時。清除指示器216會產生清除ID,亦即ID6,至歷史更名表220。因此,如第七圖F所示,ID欄位6、7、8與9中所有的資料都必須清除,也就是使用狀態欄位清除為“0”。同時,產生更名表回復控制信號(R)至第一多工單元204進行暫存器更名表206的回復。
根據本發明的實施例,多工單元組230中包括複數個多工單元,例如AX多工單元232、BX多工單元234、CX多工單元236、DX多工單元238。請參照第八圖A,其所繪示為回復暫存器更名表中AX暫存器的示意圖。由於清除指示器216輸出ID6,使得ID欄位6、7、8與9中所有的資料都必須清除,因此,回復暫存器更名表206必須以清除識別碼前一列ID欄位5中的資料為基礎進行回復。
再者,ID欄位5中AX暫存器係被更名為ID1,因此,AX多工單元232選擇端接收到ID1。再者,使用狀態確認單元218會接收歷史更名表220中使用狀態欄位內的資料以及寫回指示器214的資料,並產生使用狀態資訊(OC1~OC9)至AX多工單元232的輸入端。因此,AX多工單元232可根據選擇端接收到ID1進而輸出ID欄位1中的使用狀態欄位內的“1”(OC1)。接著,檢查單元212根據ID欄位1中的使用狀態欄位內的“1”(OC1),確認ID1為有效,因此ID1經由第一多工單元204回復至暫存器更名表中AX暫存器的欄位,也就是爾後的指令執行須參考到AX的資料,來源則是ID1伴隨的資料。
請參照第八圖B,其所繪示為回復暫存器更名表中BX暫存器的示意圖。由於ID欄位5中BX暫存器係被更名為ID3,因此,BX多工單元234選擇端接收到ID3。再者,使用狀態確認單元218會接收歷史更名表220中使用狀態欄位內的資料以及寫回指示器214的資料,並產生使用狀態資訊(OC1~OC9)至BX多工單元234的輸入端。因此,BX多工單元234可輸出ID欄位3中的使用狀態欄位內的“0”(OC3)。接著,檢查單元212根據ID欄位3中的使用狀態欄位內的“0”(OC3),確認ID3為無效,檢查單元212經由第一多工單元204刪除暫存器更名表中BX暫存器的欄位,並且表示成“-”,也就是爾後的指令執行須參考到BX的資料,來源就直接是應用程式暫存器。
請參照第八圖C,其所繪示為回復暫存器更名表中CX暫存器的示意圖。由於ID欄位5中CX暫存器係被更名為ID4,因此,CX多工單元236選擇端接收到ID4。再者,使用狀態確認單元218會接收歷史更名表220中使用狀態欄位內的資料以及寫回指示器214的資料,並產生使用狀態資訊(OC1~OC9)至CX多工單元236的輸入端。因此,CX多工單元236可輸出ID欄位4中的使用狀態欄位內的“0”(OC4)。接著,檢查單元212根據ID欄位4中的使用狀態欄位內的“0”(OC4),確認ID4為無效,檢查單元212經由第一多工單元204刪除暫存器更名表中CX暫存器的欄位,並且表示成“-”,也就是爾後的指令執行須參考到CX的資料,來源就直接是應用程式暫存器。
請參照第八圖D,其所繪示為回復暫存器更名表中DX暫存器的示意圖。由於ID欄位5中DX暫存器係被更名為ID5,因此,DX多工單元238選擇端接收到ID5。再者,使用狀態確認單元218會接收歷史更名表220中使用狀態欄位內的資料以及寫回指示器214的資料,並產生使用狀態資訊(OC1~OC9)至DX多工單元238的輸入端。因此,使得DX多工單元238可輸出ID欄位5中的使用狀態欄位內的“1”(OC5)。接著,檢查單元212根據ID欄位5中的使用狀態欄位內的“1”(OC5),確認ID5為有效,因此,ID5經由第一多工單元204回復至暫存器更名表中DX暫存器的欄位,也就是爾後的指令執行須參考到DX的資料,來源則是ID5伴隨的資料。
根據本發明的實施例,使用狀態確認單元218接收歷史更名表220中使用狀態欄位內的資料時,寫回指示器214同時產生一個寫回ID時,使用狀態確認單元218必須將歷史更名表220中相對應使用狀態欄位內的資料改為無效後才輸出使用狀態資訊(OC1~OC9)。
本發明的優點在於不需執行寫回維護動作,因此不需利用可定址記憶體來儲存歷史更名表。並且於例外情況發生時,可以根據歷史更名表的內容來正確的回復暫存器更名表。
綜上所述,雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何熟習此技藝者,在不脫離本發明之精神和範圍內,當可作各種更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
本案圖式中所包含之各元件列示如下:
100...解碼單元
200...更名單元
202...決定單元
204...第一多工單元
206...暫存器更名表
212...檢查單元
214...寫回指示器
216...清除指示器
218...使用狀態確認單元
220...歷史更名表
230...多工單元組
232...AX多工單元
234...BX多工單元
236...CX多工單元
238...DX多工單元
本案得藉由下列圖式及說明,俾得一更深入之了解:
第一圖A與B所繪示為虛擬程式碼。
第二圖所繪示為虛擬程式碼。
第三圖A至H所繪示為暫存器更名表以及歷史更名表的建立。
第三圖I至L所繪示為暫存器更名表以及歷史更名表的退去維持。
第四圖所繪示為具有例外狀況的虛擬程式。
第五圖A至C所繪示為例外情況產生時,暫存器更名表以及歷史更名表的回復。
第六圖所繪示為本發明暫存器更名表的回復系統。
第七圖A至B所繪示為本發明暫存器更名表以及歷史更名表的建立。
第七圖C至D所繪示為本發明暫存器寫回時,暫存器更名表以及歷史更名表的變化情形。
第七圖E至F所繪示為本發明例外情況產生時,歷史更名表的清除。
第八圖A至D所繪示為本發明暫存器更名表的回復流程示意圖。
100...解碼單元
200...更名單元
202...決定單元
204...第一多工單元
206...暫存器更名表
212...檢查單元
214...寫回指示器
216...清除指示器
218...使用狀態確認單元
220...歷史更名表
230...多工單元組
Claims (15)
- 一種暫存器更名表的回復方法,運用於一處理器,包含下列步驟:根據一清除識別碼,進行一歷史更名表的一清除動作;由該歷史更名表中依清除識別碼前一列內取出對應至一第一暫存器的一第一更名識別碼;當該第一更名識別碼為使用中時,於一暫存器更名表中將該第一暫存器更名為該第一更名識別碼;以及當該第一更名識別碼不在使用中時,使該暫存器更名表中的該第一暫存器無對應。
- 如申請專利範圍第1項所述之暫存器更名表的回復方法,其中該第一暫存器係為多個應用程式暫存器其中之一。
- 如申請專利範圍第2項所述之暫存器更名表的回復方法,其中該些應用程式暫存器包括:多個通用暫存器、多個節段暫存器以及狀態暫存器。
- 如申請專利範圍第3項所述之暫存器更名表的回復方法,其中該些通用暫存器包括AX暫存器、BX暫存器、CX暫存器、DX暫存器;以及該些節段暫存器包括CS暫存器、DS暫存器。
- 如申請專利範圍第1項所述之暫存器更名表的回復方法,其中當該處理器曾經產生一寫回識別碼,且該寫回識別碼等於該第一更名識別碼時,則該第一更名識別碼不在使用中。
- 如申請專利範圍第1項所述之暫存器更名表的回復方法,其中當該處理器曾經產生複數個寫回識別碼,且該些寫回識別碼皆不等於該第一更名識別碼時,則該第一更名識別碼在使用中。
- 如申請專利範圍第1項所述之暫存器更名表的回復方法,其中於一例外狀況或者一分支預測錯誤產生時,該處理器產生該清除識別碼。
- 如申請專利範圍第1項所述之暫存器更名表的回復方法,其中該歷史更名表中更包括對應至該第一更名識別碼的一使用狀態欄位,當該使用欄位被設定時,該第一更名識別碼為使用中;以及,當該使用欄位被清除時,該第一更名識別碼為不在使用中。
- 一種暫存器更名表的回復系統,可接收一解碼單元輸出的複數個程式碼,包含:一決定單元,可根據該些程式碼中的多個目標暫存器設定相對應的多個更名識別碼,其中,該些目標暫存器包括多個應用程式暫存器;一暫存器更名表,記錄該些應用程式暫存器與該些更名識別碼最新的對應關係;一歷史更名表,記錄該些應用程式暫存器與該些更名識別碼所有的對應關係;一寫回指示器,可產生一寫回識別碼至該歷史更名表,且該寫回識別碼等於該些更名識別碼中的一第一更名識別碼時,於該歷史更名表內將該第一更名識別碼的一使用狀態由一使用狀態變更成一不使用狀態;一清除指示器,可產生一清除識別碼,使得該歷史更名表進行一清除動作;一使用狀態確認單元,可接收該歷史更名表中該些更名識別碼的使用狀態以及該清除識別碼,並產生一使用狀態資訊;一多工單元組,可於該清除動作後,接收該使用狀態資訊並根據該歷史更名表中清除識別碼前一列內對應至一第一暫存器的一第一更名識別碼決定該第一更名識別碼的使用狀態;以及一檢查單元,當該第一更名識別碼的使用狀態為一使用中時,於該暫存器更名表中將該第一暫存器更名為該第一更名識別碼,以及,當該第一更名識別碼的使用狀態為一未使用時,使該暫存器更名表中的該第一暫存器無對應。
- 如申請專利範圍第9項所述之暫存器更名表的回復系統,其中該第一暫存器係為多個應用程式暫存器其中之一。
- 如申請專利範圍第10項所述之暫存器更名表的回復系統,其中該些應用程式暫存器包括:多個通用暫存器、多個節段暫存器以及狀態暫存器。
- 如申請專利範圍第11項所述之暫存器更名表的回復系統,其中該些通用暫存器包括AX暫存器、BX暫存器、CX暫存器、DX暫存器;以及該些節段暫存器包括CS暫存器、DS暫存器。
- 如申請專利範圍第9項所述之暫存器更名表的回復系統,其中於一例外狀況或者一分支預測錯誤產生時,該處理器產生該清除識別碼。
- 如申請專利範圍第9項所述之暫存器更名表的回復系統,其中更包括一第一多工單元,可於該清除動作時接收到一更名表回復控制信號,並依據該檢查單元的資料結果更新該暫存器更名表。
- 如申請專利範圍第9項所述之暫存器更名表的回復系統,其中該歷史更名表中更包括對應至該第一更名識別碼的一使用狀態欄位,當該使用欄位被設定時,該第一更名識別碼為使用中;以及,當該使用欄位被清除時,該第一更名識別碼為不在使用中。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW098119113A TWI389026B (zh) | 2009-06-08 | 2009-06-08 | 暫存器更名表的回復方法與回復系統 |
US12/619,876 US8583900B2 (en) | 2009-06-08 | 2009-11-17 | Register renaming table recovery method and system for use in a processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW098119113A TWI389026B (zh) | 2009-06-08 | 2009-06-08 | 暫存器更名表的回復方法與回復系統 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201044267A TW201044267A (en) | 2010-12-16 |
TWI389026B true TWI389026B (zh) | 2013-03-11 |
Family
ID=43301585
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW098119113A TWI389026B (zh) | 2009-06-08 | 2009-06-08 | 暫存器更名表的回復方法與回復系統 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8583900B2 (zh) |
TW (1) | TWI389026B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2498203B (en) | 2012-01-06 | 2013-12-04 | Imagination Tech Ltd | Restoring a register renaming map |
US9588770B2 (en) | 2013-03-15 | 2017-03-07 | Samsung Electronics Co., Ltd. | Dynamic rename based register reconfiguration of a vector register file |
US10353680B2 (en) * | 2014-07-25 | 2019-07-16 | Intel Corporation | System converter that implements a run ahead run time guest instruction conversion/decoding process and a prefetching process where guest code is pre-fetched from the target of guest branches in an instruction sequence |
US11281481B2 (en) | 2014-07-25 | 2022-03-22 | Intel Corporation | Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture |
US10241790B2 (en) * | 2015-12-15 | 2019-03-26 | International Business Machines Corporation | Operation of a multi-slice processor with reduced flush and restore latency |
CN106095393B (zh) * | 2016-06-22 | 2019-04-30 | 上海兆芯集成电路有限公司 | 在回退阶段期间合并部分写结果的***和方法 |
CN111984326B (zh) * | 2020-07-02 | 2023-12-19 | 江苏华创微***有限公司 | 混合式寄存器别名表恢复***和方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5694564A (en) * | 1993-01-04 | 1997-12-02 | Motorola, Inc. | Data processing system a method for performing register renaming having back-up capability |
WO1996012228A1 (en) * | 1994-10-14 | 1996-04-25 | Silicon Graphics, Inc. | Redundant mapping tables |
US5675759A (en) * | 1995-03-03 | 1997-10-07 | Shebanow; Michael C. | Method and apparatus for register management using issue sequence prior physical register and register association validity information |
US5794024A (en) * | 1996-03-25 | 1998-08-11 | International Business Machines Corporation | Method and system for dynamically recovering a register-address-table upon occurrence of an interrupt or branch misprediction |
US5961636A (en) * | 1997-09-22 | 1999-10-05 | International Business Machines Corporation | Checkpoint table for selective instruction flushing in a speculative execution unit |
US6633970B1 (en) * | 1999-12-28 | 2003-10-14 | Intel Corporation | Processor with registers storing committed/speculative data and a RAT state history recovery mechanism with retire pointer |
US7155599B2 (en) * | 2000-12-29 | 2006-12-26 | Intel Corporation | Method and apparatus for a register renaming structure |
US20070043934A1 (en) * | 2005-08-22 | 2007-02-22 | Intel Corporation | Early misprediction recovery through periodic checkpoints |
US20080077782A1 (en) * | 2006-09-26 | 2008-03-27 | Arm Limited | Restoring a register renaming table within a processor following an exception |
US20080148002A1 (en) * | 2006-12-13 | 2008-06-19 | Fleming Matthew D | Method and Apparatus for Allocating A Dynamic Data Structure |
US7721076B2 (en) * | 2006-12-18 | 2010-05-18 | Intel Corporation | Tracking an oldest processor event using information stored in a register and queue entry |
-
2009
- 2009-06-08 TW TW098119113A patent/TWI389026B/zh active
- 2009-11-17 US US12/619,876 patent/US8583900B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
TW201044267A (en) | 2010-12-16 |
US8583900B2 (en) | 2013-11-12 |
US20100312993A1 (en) | 2010-12-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI389026B (zh) | 暫存器更名表的回復方法與回復系統 | |
US9104399B2 (en) | Dual issuing of complex instruction set instructions | |
US10732981B2 (en) | Management of store queue based on restoration operation | |
US10592251B2 (en) | Register restoration using transactional memory register snapshots | |
US9262160B2 (en) | Load latency speculation in an out-of-order computer processor | |
US8386754B2 (en) | Renaming wide register source operand with plural short register source operands for select instructions to detect dependency fast with existing mechanism | |
US10540184B2 (en) | Coalescing store instructions for restoration | |
US11010192B2 (en) | Register restoration using recovery buffers | |
US20080077782A1 (en) | Restoring a register renaming table within a processor following an exception | |
CN110659256B (zh) | 多机房同步方法、计算设备及计算机存储介质 | |
WO2018193321A1 (en) | Register context restoration based on rename register recovery | |
US20080114966A1 (en) | Determining register availability for register renaming | |
US20180300153A1 (en) | Sharing snapshots across save requests | |
JP2014506371A (ja) | データ処理装置のトレース | |
US20180107510A1 (en) | Operation of a multi-slice processor implementing instruction fusion | |
CN113703832B (zh) | 一种立即数转移指令的执行方法、装置及介质 | |
WO2020180565A1 (en) | Device, processor, and method for splitting instructions and register renaming | |
KR100305935B1 (ko) | 데이타처리시스템및데이타처리시스템의데이타포착방법 | |
CN104216681A (zh) | 一种cpu指令处理方法和处理器 | |
CN116339830B (zh) | 一种寄存器管理方法、装置、电子设备及可读存储介质 | |
US10467008B2 (en) | Identifying an effective address (EA) using an interrupt instruction tag (ITAG) in a multi-slice processor | |
US10241905B2 (en) | Managing an effective address table in a multi-slice processor | |
US9323532B2 (en) | Predicting register pairs | |
US5784606A (en) | Method and system in a superscalar data processing system for the efficient handling of exceptions | |
US20170344379A1 (en) | Generating a mask vector for determining a processor instruction address using an instruction tag in a multi-slice processor |