TW201342230A - 微處理器、微處理器操作方法及其電腦程式產品 - Google Patents
微處理器、微處理器操作方法及其電腦程式產品 Download PDFInfo
- Publication number
- TW201342230A TW201342230A TW102123151A TW102123151A TW201342230A TW 201342230 A TW201342230 A TW 201342230A TW 102123151 A TW102123151 A TW 102123151A TW 102123151 A TW102123151 A TW 102123151A TW 201342230 A TW201342230 A TW 201342230A
- Authority
- TW
- Taiwan
- Prior art keywords
- register
- instruction
- sector
- new value
- microprocessor
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 22
- 238000004590 computer program Methods 0.000 title claims description 14
- 239000008186 active pharmaceutical agent Substances 0.000 claims abstract description 115
- 238000012545 processing Methods 0.000 claims description 5
- 238000011017 operating method Methods 0.000 claims description 3
- 238000004891 communication Methods 0.000 claims 8
- 230000003287 optical effect Effects 0.000 claims 2
- 230000001568 sexual effect Effects 0.000 claims 1
- 230000001960 triggered effect Effects 0.000 claims 1
- 230000008569 process Effects 0.000 abstract description 4
- 230000001419 dependent effect Effects 0.000 description 42
- 230000005540 biological transmission Effects 0.000 description 10
- 238000012546 transfer Methods 0.000 description 3
- 230000001105 regulatory effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000007 visual effect 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- 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/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- 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/3824—Operand accessing
-
- 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/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- 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
-
- 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
-
- 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/3842—Speculative instruction execution
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)
- Executing Machine-Instructions (AREA)
Abstract
本發明提供一種微處理器操作方法,適用於x86架構下之微處理器處理記憶體存取指令,其指示載入/儲存資料由/至微處理器的x86區段暫存器的記憶體區段,x86指令指示微處理器載入新值至x86資料區段暫存器,而x86指令尚未被微處理器引退。其操作方法包括下列步驟。判斷x86區段暫存器是否為DS/ES x86區段暫存器。若x86區段暫存器為DS/ES x86區段暫存器,則發送記憶體存取指令以利用DS/ES x86區段暫存器之目前值而非新值來執行。反之,則等候發送記憶體存取指令直到記憶體存取指令可利用新值而不是非DS/ES x86區段暫存器之目前值來執行。
Description
本發明係有關於微處理器領域之應用,特別是有關於微處理器領域之暫存器重新命名應用。
電腦程式設計者係將一電腦程式內的指令按照一特定的順序安排,通常這個特定順序稱為程式順序。電腦程式設計者藉由執行電腦程式的微處理器,根據程式順序,並依據如何執行指令的特定規則以執行電腦程式裡的各項指令。舉例來說,於第一個例子中,假設指令B的程式順序係於指令A之後,並且假設指令A寫入至微處理器的一暫存器,指令B從同一暫存器中讀取資料。於此例中,程式設計者係藉由微處理器,利用指令A所寫入的數值來執行指令B,而不是利用在指令A將其數值寫入至暫存器之前在暫存器中的數值。於第二個例子中,假設指令A由暫存器中讀取資料且指令B寫入至暫存器。於此例中,程式設計者係藉由微處理器,利用在指令B將其數值寫入至暫存器之前在暫存器中的數值來執行指令A。於第三個例子中,假設指令A以及指令B皆將資料寫入至暫存器,指令C的程式順序在指令B之後,並且指令C讀取暫存器的資料。於此例中,程式設計者係藉由微處理器,利用由指令B
寫入之數值來執行指令C,而不是指令A寫入之數值。
一種可以使微處理器根據上述的程式順序的規則執行的方法係簡單地根據程式順序來執行指令。然而,許多較先進的微處理器,特別是包含多個執行單元的超純量管線微處理器(superscalar pipelined microprocessor),可在一個單一時脈週期中發送多個指令,並且可藉由亂序(out-of-order),亦即不依照程式順序,來執行指令,以實現效能的提升。亂序執行特別利於在指令流中需要較長的時間來執行的特定的指令(通常為長延遲指令,例如浮點指令或記憶體讀取指令)的處理。
當一個有序(in-order)執行微處理器遇到(encounter)一長延遲指令時,執行單元可能在多個時槽(time slot)中(在一些情況下可為100個時槽)保持閒置(idle),用以等待長延遲指令完成。然而,在等待長延遲指令完成的同時,一個亂序執行微處理器試著去找到可被執行單元所執行的指令。這些指令通常為獨立指令,因為這些指令可以在不違反任何與程式順序有關的規則(例如上述討論三種)的情況下,不依照與長延遲指令有關的程式順序加以執行。相反地,有序執行微處理器必須等候執行與任何程式順序出現在之前的指令(例如長延遲指令)相關的指令。因此,可以發現一亂序執行超純量管線微處理器的多個執行單元的效能利用,可能受限於微處理器可在程式的指令流中找到的獨立指令的個數。
一種應用在亂序執行超純量管線微處理器上,用以增加指令流的獨立指令的數量的習知技術係為暫存器重新命名。特別地,暫存器重新命名可以幫助在上面第二以及第三
例子中的指令A以及指令B彼此獨立,使得微處理器可以不照順序執行指令A以及指令B。微處理器包括結構暫存器(architectural register),例如程式指令定義的運算元的來源暫存器或存放結果的目的暫存器。舉例來說,一個x86結構微處理器的整數結構暫存器包含EAX、EBX、ECX、EDX、ESI、EDI、ESP以及EBP暫存器等等。一個具有暫存器重新命名功能的微處理器包含比結構暫存器的數量更多的實體暫存器。舉例來說,一結構定義為8個整數暫存器的x86微處理器可能具有32個實體暫存器,其可重新命名8個結構暫存器。當微處理器遇到定義這些結構暫存器中的一暫存器為其目的暫存器的一指令時,重新命名硬體將結構暫存器“重新命名”為實體暫存器中其中一者。當微處理器執行此指令以產生結果時,微處理器便將結果寫入至實體暫存器。此外,假設一個指令定義結構暫存器中其中一者為一運算元的來源,重新命名硬體判斷與目前指令相依(關)的指令,該指令係在程式順序中將一結果寫入至定義好的來源結構暫存器的最新的指令但較早於目前指令。重新命名硬體將致使目前指令不去參考結構暫存器,而是去參考與目前指令相關的結構暫存器被重新命名後的實體暫存器。如此一來,將使得目前指令從適當地重新命名的實體暫存器中接收其來源運算元。
然而,藉由暫存器重新命名來提升效能可能會造成硬體晶元(die)空間、電源以及複雜度的大量增加。在許多暫存器重新命名微處理器上,這是存在的事實。因此,需要一種可在一亂序執行超純量管線微處理器上對效能/成本衝突提供
一良好平衡的解決方法。
有鑑於此,本發明提供一種可在一亂序執行超純量管線微處理器上對效能/成本衝突提供一良好平衡的解決方法。
本發明實施例提供一種微處理器操作方法,適用於x86架構下之一微處理器處理一記憶體存取指令,該記憶體存取指令指示載入/儲存資料由/至該微處理器的一x86區段暫存器的一記憶體區段,一x86指令指示該微處理器載入一新值至該x86資料區段暫存器,然而該x86指令尚未被該微處理器引退。該微處理器操作方法包括下列步驟。判斷該x86區段暫存器是否為複數DS/ES x86區段暫存器之一者。若該x86區段暫存器為該DS/ES x86區段暫存器時,則發送該記憶體存取指令以利用該DS/ES x86區段暫存器之一目前值而不是該新值來執行。然而,若該x86區段暫存器並非為該DS/ES x86區段暫存器時,則等候發送該記憶體存取指令直到該記憶體存取指令可利用該新值而不是一非DS/ES x86區段暫存器之一目前值來執行。
本發明實施例另提供一微處理器,用於x86架構下處理一記憶體存取指令,該記憶體存取指令指示載入/儲存資料由/至該微處理器的一x86區段暫存器的一記憶體區段,一x86指令指示該微處理器載入一新值至該x86資料區段暫存器,然而該x86指令尚未被該微處理器引退。該微處理器包括一微碼。該微碼引發以回應該x86指令,且該x86指令指示該微
處理器載入該新值至該x86資料區段暫存器。其中,若該x86區段暫存器並非為複數DS/ES x86區段暫存器之一者時,則該微碼執行一第一指令用以載入該新值至一非DS/ES x86區段暫存器,以致使該記憶體存取指令利用該新值而不是該非DS/ES x86區段暫存器之一目前值執行。其中,若該x86區段暫存器為該等DS/ES x86區段暫存器之一者時,則該微碼執行一第二指令用以比較該新值與該DS/ES x86區段暫存器之一目前值。其中若該目前值等於該新值時,則該微碼不執行載入該新值至該DS/ES x86區段暫存器的指令,以致使該記憶體存取指令利用該DS/ES x86區段暫存器之該目前值而非該新值執行。否則執行一第三指令以及一第四指令,該第三指令用以載入該新值至該DS/ES x86區段暫存器,而該第四指令用以將該記憶體存取指令清除並利用載入至該DS/ES x86區段暫存器之該新值重新執行該記憶體存取指令。
本發明另一實施例更提供一微處理器,用以執行一區段暫存器載入指令以及一記憶體存取指令,該區段暫存器載入指令將一新值載入至一區段暫存器,以及該記憶體存取指令存取該區段暫存器所描述之一記憶體區段,其中該記憶體存取指令之程式順序係於該區段暫存器載入指令之後。該微處理器包括複數區段暫存器以及複數執行單元。該等區段暫存器包括該區段暫存器,其中該微處理器不包括用於該等區段暫存器之一暫存器重新命名硬體。複數執行單元用以從該區段暫存器擷取一目前值,利用所擷取到的該目前值執行該記憶體存取指令,以及擷取該目前值後,判斷是否該目前值等於該新值。其
中若該新值等於該目前值,該微處理器則不載入該新值至該區段暫存器。其中若該新值不等於該目前值,該微處理器則載入該新值至該區段暫存器,從該區段暫存器擷取該新值,以及利用從該區段暫存器所擷取之該新值重新執行該記憶體存取指令。
本發明另一實施例更提供一種微處理器操作方法,適用於具有複數區段暫存器之一微處理器,其中該等區段暫存器包括互斥之第一子集合以及第二子集合。該操作方法包括以下步驟。遇到指示該等區段暫存器中之一區段暫存器載入一新值之一指令。若當該區段暫存器係於該第一子集合中,則將該新值直接載入至該區段暫存器中。而若當該區段暫存器係於該第二子集合中,於該新值不等於該區段暫存器中所儲存之一目前值時,則將該新值載入至該區段暫存器中,然而於該新值等於該區段暫存器中所儲存之該目前值時,則不載入該新值至該區段暫存器。
本發明另一實施例更提供一種電腦程式產品,編碼於至少一非暫態之電腦可讀取儲存媒體以用於一電腦裝置,該電腦程式產品包括一電腦可讀取程式碼。該電腦可讀取程式碼被應用於該儲存媒體,用於規範一微處理器,該微處理器具有複數區段暫存器,其中該等區段暫存器包括互斥之第一子集合以及第二子集合。該電腦可讀取程式碼包括一第一程式碼以及一第二程式碼。該第一程式碼用於規範一記憶體,其中該記憶體用以儲存一第一微碼常式以及一第二微碼常式。該第二程式碼用於規範一指令解碼器,其中該指令解碼器耦接至該
記憶體,用以遇到指示該等區段暫存器中之一區段暫存器載入一新值之一指令。其中當該區段暫存器係於該第一子集合中時,該指令解碼器係用以引發該第一微碼常式。其中當該區段暫存器係於該第二子集合中時,該指令解碼器係用以引發該第二微碼常式。其中該第一微碼常式係用以將該新值直接載入至該區段暫存器中。其中該第二微碼常式係用以於該新值不等於該區段暫存器中所儲存之一目前值時,將該新值載入至該區段暫存器中。其中該第二微碼常式亦用以於該新值等於該區段暫存器中所儲存之該目前值時,不載入該新值至該區段暫存器。
本發明另一實施例更提供一種電腦程式產品,編碼於至少一非暫態電腦可讀取儲存媒體以用於一電腦裝置,該電腦程式產品包括一電腦可讀取程式碼。該電腦可讀取程式碼被應用於該儲存媒體,用於規範一微處理器,該微處理器用以執行一區段暫存器載入指令以及一記憶體存取指令,該區段暫存器載入指令將一新值載入至一區段暫存器,以及該記憶體存取指令存取該區段暫存器所描述之一記憶體區段,其中該記憶體存取指令之程式順序係於該區段暫存器載入指令之後。該電腦可讀取程式碼包括一第一程式碼以及一第二程式碼。該第一程式碼用於規範該等區段暫存器,其中該等區段暫存器包括該區段暫存器,其中該微處理器不包括用於該等區段暫存器之一暫存器重新命名硬體。該第二程式碼用於規範複數執行單元。其中該等執行單元用以從該區段暫存器擷取一目前值,利用所擷取到的該目前值執行該記憶體存取指令,以及擷取該目前值後,判斷是否該目前值等於該新值。其中,若該新值等於該目
前值,該微處理器則不載入該新值至該區段暫存器。其中,若該新值不等於該目前值,該微處理器則載入該新值至該區段暫存器,從該區段暫存器擷取該新值,以及利用從該區段暫存器所擷取之該新值重新執行該記憶體存取指令。
本發明上述方法可以透過程式碼方式收錄於實體媒體中。當程式碼被機器載入且執行時,機器變成用以實行本發明之裝置。
為使本發明之上述和其他目的、特徵、和優點能更明顯易懂,下文特舉出較佳實施例,並配合所附圖式,作詳細說明如下。
100‧‧‧微處理器
102‧‧‧指令快取
104‧‧‧指令轉譯器
106‧‧‧相依性檢查單元
108‧‧‧保留站(RS)
112‧‧‧載入DS/ES暫存器微碼常式
114‧‧‧執行單元
116‧‧‧微碼唯讀記憶體
118‧‧‧重排序緩衝器(ROB)
122‧‧‧載入非DS/ES暫存器微碼常式
124‧‧‧發送邏輯單元
128‧‧‧暫時暫存器
132‧‧‧結構DS/ES暫存器
134‧‧‧比較器
138‧‧‧區段暫存器
142‧‧‧巨指令
144‧‧‧微指令
202-206‧‧‧執行步驟
302-308‧‧‧執行步驟
402-412‧‧‧執行步驟
第1圖係顯示一依據本發明實施例之微處理器之示意圖。
第2圖至第4圖係顯示依據本發明實施例之第1圖之微處理器之運作流程示意圖。
第1圖顯示依據本發明實施例之微處理器100。於本實施例中,微處理器100的巨結構係為一x86巨結構。一微處理器如果能正確地執行大部分被設計在一x86微處理器上執行的應用程式,則此微處理器被稱為具有一x86巨結構。若得到一個應用程式預期的結果時,該應用程式係被正確地執行。特別地,微處理器100可執行x86指令集中的指令並包括x86使用者可視暫存器(user-visible register)集。
x86使用者可視暫存器集包括區段暫存器(segment
register)138,亦即,CS、DS、ES、FS、GS以及SS暫存器。區段暫存器138係被程式用來定義(specify)不同的記憶體區段以及其屬性,例如基底位址(base address)、大小、特權層級(privilege level)、預設操作大小、可供系統軟體所使用、讀/寫/執行能力、是否存在記憶體中等等。存取記憶體的指令可取決於區段暫存器138的值。也就是說,為了能夠適當地執行記憶體存取指令,微處理器100必須存取區段暫存器138的值,以決定相關記憶體區段的屬性。
每一x86區段暫存器138在區段暫存器138的一使用者可視部分儲存有一16位元選擇器(selector)以及在區段暫存器138的一隱藏部分(亦即非使用者可視部分)儲存有一64位元區段描述符(descriptor)。選擇器係為儲存在系統記憶體中的描述符表(如全域描述符表(global descriptor table,GDT)或區域描述符表(local descriptor table,LDT))的一索引。描述符描述記憶體區段,亦即,定義其屬性,並且其係為微處理器中由選擇器值所索引的GDT或LDT描述符表項目(entry)的一區域性備份。x86指令集包括可允許一程式載入區段暫存器(例如,LDS,LES,LFS,LGS,LSS,POP segment_register以及MOV segment_register)的指令。這些指令定義一個運算元,其係為欲載入至區段暫存器138的選擇器的16位元選擇器值。除了根據前述指令中的其中一指令將新的選擇器值載入至區段暫存器138之外,微處理器也由新的選擇器值所索引的GDT或LDT項目中讀取描述符,並將描述符載入至區段暫存器138。
為了減少微處理器100的電力消耗以及複雜度,微
處理器100並不包含用以重新命名區段暫存器138的暫存器重新命名硬體。也就是說,微處理器100不包括提供執行區段暫存器138的暫存器重新命名所需的特定元件,例如相關重新命名表(relevant renaming table)、得分板項目(scoreboard)、相依性比較器(dependency comparator)以及轉送匯流排(forwarding bus),即使微處理器100需包括這些元件以執行其他結構暫存器(例如在通用整數、浮點數以及多媒體暫存器集裡的暫存器)的暫存器重新命名。因此,為了確保微處理器100可產生正確的程式結果,若微處理器100尚未將較舊的用以將一數值載入至一區段暫存器138的指令結果寫回時,微處理器100將依序(serialize)執行任何與區段暫存器載入指令相關的較新指令,亦即使用區段暫存器138作為一來源運算元的較新指令,其中上述微處理器中比上述區段暫存器載入指令更舊的指令係指於上述區段暫存器載入指令之前被提取的指令。於一實施例中,微處理器100依序執行一指令係藉由等到該指令成為微處理器100中最舊的指令時,才發送該指令加以執行,亦即,等到所有較舊的指令都被引退(retired)時。熟悉此技藝人士可由上述得知,如此將使得與區段暫存器載入指令相關的較新指令的效能降低。
下表一顯示一示範的程式片段,用以說明前述的相依性情形。
表一的程式中包括一個x86 LFS指令(將EBX暫存器的內容載入至FS區段暫存器以及將所選取的區段描述符由適當的描述符表中載入至區段暫存器的隱藏部分),並且按照一程式順序(儘管不一定要是連續地)接著一將EAX暫存器的內容儲存至一記憶體區段裡的一記憶體位置的x86 MOV指令,其中該記憶體區段係由FS區段暫存器描述符所描述,如組合語言碼中的區段跨越標記(segment override notation)所指示。第(2)列中的MOV指令係相依於第(1)列中的LFS指令,因為MOV指令使用由LFS指令所寫入的FS區段暫存器描述符值。
然而,有益地,發明人觀察各種程式,觀察當程式執行將一新值載入至DS或ES區段暫存器的一指令,特別是新值係頻繁地與舊值相同時的情形。觀察結果發現,依據本發明實施例之微處理器100不會使與一DS/ES載入指令相依的指令依序執行。微處理器100“預測”DS/ES載入指令所載入的新的DS/ES值將與舊的DS/ES值相同。也就是說,微處理器100在無須等待接收DS/ES載入指令中的新值的情形下,允許發送相依指令以執行並且使用DS/ES暫存器132中的舊值。為了檢查此預測以確保微處理器100產生正確的程式結果,微處理器100在允許使用舊的DS/ES值的相依指令更新結構狀態之前,也會檢查確認預測結果正確,亦即新值等於舊值。若新值不等於舊值時,在將新值載入至DS/ES區段暫存器之後,微處理器100清除(flush)管線中的相依指令,使得這些相依指令利用新值重新執
行。因此,微處理器100可以稱為預測地執行(speculatively execute)相依指令。
下表二顯示一示範的程式片段,用以說明前述的情形,其中微處理器100係藉由預測一個較舊的區段暫存器載入指令將寫入與ES暫存器的目前值相同的值至ES暫存器,以預測地執行一使用ES暫存器的相依記憶體存取指令。
表二的程式片段係類似於表一的程式片段,差別在於其包含ES區段暫存器,而不是FS區段暫存器。表二的程式包括一個x86 LES指令(將EBX暫存器的內容載入至ES區段暫存器),並且按照一程式順序(儘管不一定要是連續地)接著一將EAX暫存器的內容儲存至一記憶體區段裡的一記憶體位置的x86 MOV指令,其中該記憶體區段係由ES區段暫存器描述符所描述,如組合語言碼中的區段跨越標記所指示。第(4)列中的MOV指令係相依於第(3)列中的LES指令,因為MOV指令使用由LES指令所寫入的ES暫存器描述符值。
參考第1圖,微處理器100包括一指令快取102,耦接至一指令轉譯器104(亦可稱為指令解碼器);一相依性檢查單元106,耦接至指令轉譯器104;一微碼唯讀記憶體116,耦接至指令轉譯器104以及相依性檢查單元106;一保留站
(reservation station,RS)108,耦接至相依性檢查單元106;發送邏輯單元124(在一實施例中,發送邏輯單元為一指令排程器(instruction scheduler)),耦接至保留站108;執行單元114,其包括一比較器134,耦接至保留站108;區段暫存器138(亦可稱為結構區段暫存器),其包含DS/ES暫存器132,耦接至執行單元114;一暫時暫存器128(非結構暫存器),耦接至執行單元114以及區段暫存器138;以及一重排序緩衝器(reorder buffer,ROB)118,耦接至相依性檢查單元106、發送邏輯單元124以及執行單元114。於一實施例中,執行單元114包含一執行記憶體存取指令的載入/儲存單元(未繪示)。載入/儲存單元利用在區段暫存器138中的區段描述符值以執行記憶體存取指令。指令快取102由系統記憶體(未繪示)中快取包含記憶體存取指令以及載入區段暫存器138的程式指令。
微處理器也包括一指令轉譯器104,用以接收來自指令快取102的指令142。於一實施例中,這些指令可視為巨指令(macroinstruction)142,因為這些指令係來自微處理器100的巨指令集(例如x86結構指令集)的指令。指令轉譯器104將巨指令142轉譯為微指令144,其中微指令144係為微處理器100的微結構的微指令集的指令。特別地,指令轉譯器104將用以存取記憶體的巨指令142轉譯成與一區段暫存器載入指令相依的載入/儲存微指令。
微處理器100也包含一微碼唯讀記憶體(microcode ROM)116,用以儲存微碼常式(microcode routine)。本發明不限定於微碼唯讀記憶體116,於另一實施例中,亦可用其他儲存
裝置替代之。一般而言,微碼常式包含可實現載入一區段暫存器138的巨指令142的載入DS/ES暫存器微碼常式112以及載入非DS/ES暫存器微碼常式122。微處理器100的一微定序器(microsequencer)(未繪示)擷取載入DS/ES暫存器微碼常式112以及載入非DS/ES暫存器微碼常式122的指令,以提供給微處理器100管線的下一階段。請參照第2圖,用以說明載入區段暫存器微碼常式112/122的運作。
微處理器100進行一亂序執行。亦即,執行單元114可不依照原有的程式順序執行指令。特別地,相依性檢查單元106以預設在ROB 118中的一特定順序接收來自指令轉譯器104的微指令144,因此指令可依據此特定順序引退。然而,執行單元114也可不依照此順序執行微指令144。因此,依據本發明(例如,如下將描述的第3圖的步驟308),一個與原有的程式順序中的舊DS/ES載入指令所寫入DS/ES暫存器132的值相依的記憶體存取指令,可能實際上由執行單元114在舊DS/ES載入指令寫入新值至DS/ES暫存器132之前被執行。
請參照第2圖,其係顯示依據本發明實施例之第1圖中微處理器100的運作流程圖。
於步驟202,第1圖的指令轉譯器104遇到一個載入區段暫存器138的巨指令142,例如前述表一第(1)列的LFS指令或表二第(3)列的LES指令。接著執行判斷步驟204。
於判斷步驟204,指令轉譯器104判斷目的區段暫存器是否為DS或ES暫存器。若目的區段暫存器為DS或ES暫存器時,則執行步驟206;否則,執行步驟208。
於步驟206,指令轉譯器104暫停巨指令142的轉譯並且暫時地轉移控制至第1圖的載入DS/ES暫存器微碼常式112。載入DS/ES暫存器微碼常式112將於第4圖詳細說明。於是,流程於步驟206結束。
在步驟208,指令轉譯器104暫停巨指令142的轉譯並且暫時地轉移控制至第1圖的載入非DS/ES暫存器微碼常式122。載入非DS/ES暫存器微碼常式122可包括將非DS/ES載入巨指令142所定義的新值載入至非DS/ES暫存器並且接著返回控制給指令轉譯器104的微指令。於是,流程於步驟208結束。
請再參照第1圖,微處理器100也包括一相依性檢查單元106,其可接收來自指令轉譯器104以及來自微碼唯讀記憶體116的微指令144。相依性檢查單元106在ROB 118中對每一個指令配置一對應的項目。ROB 118的項目係依照程式順序設置,使得ROB 118可確保指令會依照程式順序引退。相依性檢查單元106也產生每一指令的相依資訊並且將指令的相依資訊提供給ROB 118,以儲存至與指令相關的ROB 118項目中。相依性檢查單元106接著提供指令至保留站108,使指令於保留站108中等候,直到發送邏輯單元124決定其係已經準備好要被發送至執行單元114加以執行。ROB 118更新每個指令的狀態,例如指示指令已被發送、已被執行完成或已被引退,發送邏輯單元124也用此以判斷一個指令是否已準備好被發送。
更特別來說,相依性檢查單元106保持追蹤在微處理器100中所有未引退指令的結果目的暫存器。當相依性檢查單元106接收到一指令時,其察看被指令所使用的複數來源運
算元暫存器(例如區段暫存器138),並且對每個來源運算元決定較舊的未引退指令(例如一區段載入指令)中的哪一個將被寫入至來源運算元暫存器,並指出該指令係相依於該較舊的未引退指令。若相依性檢查單元106找到許多寫入同一來源運算元暫存器的未引退指令,相依性檢查單元106判斷這些未引退指令中哪一個未引退指令最新,並指出目前接收的指令係相依於這些未引退指令中最新的一個。
發送邏輯單元124使用由相依性檢查單元106所產生的相依性資訊以決定保留站108中的哪一指令已準備好發送至執行單元114加以執行。一般來說,發送邏輯單元124將根據相依性資訊,等到所有的指令都被引退時(亦即利用其結果更新其目的暫存器)才發送一指令,其中相依性資訊表示指令係與其來源運算元相依。為求精確,微處理器100可透過轉送匯流排及/或重新命名暫存器,轉送其結果至相依指令中;亦即,結果可為有效的,致使發送邏輯單元124可在結果供應(result-supplying)指令實際更新結構暫存器並且引退之前,發送相依指令。然而,由相依性資訊所表示的結果供應指令必須在發送邏輯單元124可發送相依指令至執行單元114之前,產生其結果以及致使結果可有效於相依指令。關於發送邏輯單元124的細部運作,請參照第3圖。
請參照第3圖,其係顯示依據本發明實施例之第1圖中微處理器100的運作流程圖。流程係由步驟302開始。
於步驟302,發送邏輯單元124判斷在其中一保留站108中有一個指令,該指令係與載入其中之一區段暫存器138
的指令相依。也就是說,發送邏輯單元124判斷該指令係為一記憶體參考指令(例如表一第(2)列中或表二第(4)列中的MOV指令),使得微處理器100必須存取一區段暫存器138加以執行,並且區段暫存器138係為一較舊的未引退指令的目的暫存器。接著,執行判斷步驟304。
於判斷步驟304,發送邏輯單元124判斷相依指令係與DS/ES暫存器132相依或與區段暫存器(非DS/ES暫存器)138相依。若相依指令係與DS/ES暫存器132相依時,執行步驟308;否則執行步驟306。
於步驟306,如前述,發送邏輯單元124依序執行與載入一非DS/ES暫存器相依的指令。於一實施例中,相依性檢查單元106產生相依性資訊表示相依指令係與其本身相依以實現依序執行。也就是說,當相依性資訊表示相依指令係與其本身相依時,發送邏輯單元124將依照ROB 118所指示,等到相依指令係為微處理器100中最舊的指令時,才決定相依指令係已準備好要發送至執行單元114。特別地,因為執行單元114亂序執行指令,若相依性檢查單元106以及發送邏輯單元124並未依序執行相依指令,則載入/儲存單元可能使用一個陳舊的(stale)區段描述符值加以執行。然而,在本發明中,即使微處理器100不包含區段暫存器138的暫存器重新命名硬體,依序執行指令可確保正確的程式操作,如前述,因為其可確保相依指令在其可接收來自區段暫存器138的區段描述符的最新值前,不會被發送。也就是說,發送邏輯單元124可等到新值被載入至區段暫存器138之後,由該區段暫存器138中擷取新值,並且
利用擷取到的新值發送次一連續的指令加以執行。表一的第(2)列的MOV指令係為一個微處理器100將依序執行的指令的例子,因為其相依於表一的第(1)列的非DS/ES暫存器載入指令。於是,流程於步驟306結束。
於步驟308,發送邏輯單元124忽略記憶體存取指令關於DS/ES暫存器132的相依性。也就是說,只要所有用以使相依指令準備被發送的其他條件滿足(例如載入/儲存單元係可用的並且除了DS/ES暫存器132之外的所有其他來源運算元都有效),發送邏輯單元124發送指令至執行單元114並且DS/ES暫存器132將其目前值提供至執行單元114,藉此執行記憶體存取指令。於另一實施例中,發送邏輯單元124可由DS/ES暫存器132中擷取其目前值,並且發送使用擷取到的目前值作為來源運算元的記憶體存取指令加以執行,並以此執行結果更新微處理器100之結構狀態。有效地,發送邏輯單元124預測DS/ES暫存器132的目前值係與將藉由DS/ES載入指令寫入至DS/ES暫存器132的新值相等,並且預測地執行相依的記憶體存取指令。藉由前述預測並且進而發送相依指令,微處理器100有效地減少了執行包含DS/ES載入指令及其相依記憶體存取指令的程式所需的時間。表二的第(4)列的MOV指令係為一個微處理器100預測地執行的例子,因為其相依於表二的第(3)列的DS/ES暫存器載入指令。於是,流程於步驟308結束。
下表三顯示一示範的虛擬程式碼,用以描述第1圖的載入DS/ES暫存器微碼常式112的相關部分。此虛擬程式碼將與第4圖一併討論。
請參照第4圖,其係顯示依據本發明實施例之第1圖中微處理器100的運作流程圖。流程係由步驟402開始。
於步驟402,相應於遇到一將一值(區段暫存器值)載入第1圖的DS/ES暫存器132的指令,指令轉譯器104將轉移控制至載入DS/ES暫存器微碼常式112,如前述的第2圖的對應步驟206所示。載入DS/ES暫存器微碼常式112首先將指令所定義的值(區段暫存器值)自記憶體載入至第1圖的暫時暫存器128,如表三的第(1)列所示。接著,執行步驟404。
於步驟404,載入DS/ES暫存器微碼常式112比較第1圖的DS/ES暫存器132中的目前值與在步驟402時載入至暫時暫存器128中的值,如表三的第(2)列所示。於一實施例中,載入DS/ES暫存器微碼常式112可命令比較器134執行此步驟。接
著,執行決定步驟406。
於決定步驟406,載入DS/ES暫存器微碼常式112判斷第1圖的DS/ES暫存器132中的目前值與載入至暫時暫存器128中的值是否相等,如表三的第(3)列所示。若是,流程結束,如表三的第(4)列所示;否則,接著執行步驟408,如表三的第(5)列所示。
於步驟408,因為在第1圖的DS/ES暫存器132中的目前值不等於與載入至暫時暫存器128中的值(其係為將被DS/ES載入指令所載入的新值),載入DS/ES暫存器微碼常式112將暫時暫存器128中的值移至DS/ES暫存器132中,如表三的第(6)列所示。值得注意的是,執行表三的第(6)列的動作的微指令144係為載入DS/ES暫存器微碼常式112中的實際寫入新值至DS/ES暫存器132的指令。因此,於步驟308所描述的相依記憶體存取指令係相依於第(6)列中的指令,並且發送邏輯單元124忽略其相依性並預測由第(6)列中的指令所寫入的DS/ES暫存器132的新值係等於步驟308中所描述的相依記憶體存取指令所使用的DS/ES暫存器132的舊值。然而,在這種情形下,於決定步驟406將判斷出預測係為不正確的,亦即第(6)列中的指令所寫入的DS/ES暫存器132的新值係不等於步驟308中所描述的相依記憶體存取指令所使用的DS/ES暫存器132的舊值;因此,記憶體存取指令可能會使用錯誤的DS/ES暫存器132的值以執行,並且預測錯誤必須被更正以確保微處理器100產生正確的程式結果。接著,執行步驟412。
於步驟412,為了更正第3圖的步驟308的錯誤預測
結果,載入DS/ES暫存器微碼常式112清除管線中所有較新於表三的第(6)列的指令,包括相依記憶體存取指令,例如表二的第(4)列的MOV指令。載入DS/ES暫存器微碼常式112接著在如步驟202所述遇到載入DS/ES暫存器132的巨指令142(例如表二的第(3)列的LES指令)之後,重新開始擷取次一連續的巨指令。如此,將可正確地利用在步驟408中藉由第(6)列中的指令寫入至DS/ES暫存器132的新值重新發送以及重新執行相依記憶體存取指令,並以此執行結果更新微處理器100之結構狀態,因此更正了在步驟308的預測錯誤。於一實施例中,清除並跳至次一連續的巨指令係可藉由表三的第(7)列中的指令加以執行。於一實施例中,載入DS/ES暫存器微碼常式112可命令執行單元114執行此步驟。
雖然於上述實施例中,微處理器係具有一x86巨結構,然而本發明並不限於應用在x86巨結構。再者,實施例考慮微處理器具有一不同的巨結構,具有包括區段暫存器以及不包括區段暫存器重新命名硬體的一超純量微結構,也可利用前述技術,藉由預測由一較舊的指令所載入至一區段暫存器的新值係與區段暫存器的舊值相同並隨後忽略較新的記憶體存取指令在區段暫存器值的相依性,再於新值不等於舊值時,藉由清除並重新執行相依指令來確保正確的程式結果,進而預測地執行相依記憶體存取指令。
本發明之方法,或特定型態或其部份,可以以程式碼的型態包含於實體媒體,如軟碟、光碟片、硬碟、或是任何其他機器可讀取(如電腦可讀取)儲存媒體,其中,當程式碼
被機器,如電腦載入且執行時,此機器變成用以實施本發明之裝置。本發明之方法與裝置也可以以程式碼型態透過一些傳送媒體,如電線或電纜、光纖、或是任何傳輸型態進行傳送,其中,當程式碼被機器,如電腦接收、載入且執行時,此機器變成用以實施本發明之裝置。當在一般用途微處理器實作時,程式碼結合微處理器提供一操作類似於應用特定邏輯電路之獨特裝置。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何熟悉此項技藝者,在不脫離本發明之精神和範圍內,當可做些許更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100‧‧‧微處理器
102‧‧‧指令快取
104‧‧‧指令轉譯器
106‧‧‧相依性檢查單元
108‧‧‧保留站(RS)
112‧‧‧載入DS/ES暫存器微碼常式
114‧‧‧執行單元
116‧‧‧微碼唯讀記憶體
118‧‧‧重排序緩衝器(ROB)
122‧‧‧載入非DS/ES暫存器微碼常式
124‧‧‧發送邏輯單元
128‧‧‧暫時暫存器
132‧‧‧DS/ES暫存器
134‧‧‧比較器
138‧‧‧區段暫存器
142‧‧‧巨指令
144‧‧‧微指令
Claims (16)
- 一種微處理器操作方法,適用於x86架構下之一微處理器處理一記憶體存取指令,該記憶體存取指令指示載入/儲存資料由/至該微處理器的一x86區段暫存器的一記憶體區段,一x86指令指示該微處理器載入一新值至該x86資料區段暫存器,然而該x86指令尚未被該微處理器引退,該微處理器操作方法包括:判斷該x86區段暫存器是否為複數DS/ES x86區段暫存器之一者;若該x86區段暫存器為該DS/ES x86區段暫存器時,則:發送該記憶體存取指令以利用該DS/ES x86區段暫存器之一目前值而不是該新值來執行;以及若該x86區段暫存器並非為該DS/ES x86區段暫存器時,則:等候發送該記憶體存取指令直到該記憶體存取指令可利用該新值而不是一非DS/ES x86區段暫存器之一目前值來執行。
- 如申請專利範圍第1項所述之微處理器操作方法,更包括:若該x86區段暫存器為該等DS/ES x86區段暫存器之一者時,則:比較該新值與該DS/ES x86區段暫存器之該目前值;若該目前值等於該新值時,則:不載入該新值至該DS/ES x86區段暫存器;以及引退該記憶體存取指令;以及若該目前值不等於該新值時,則: 將該新值載入至該DS/ES x86區段暫存器。
- 如申請專利範圍第2項所述之微處理器操作方法,更包括:若該x86區段暫存器為該等DS/ES x86區段暫存器之一者時,則:若該目前值不等於該新值時,則:清除該記憶體存取指令並重新發出利用載入至該DS/ES x86區段暫存器之該新值執行的記憶體存取指令。
- 一微處理器,用於x86架構下處理一記憶體存取指令,該記憶體存取指令指示載入/儲存資料由/至該微處理器的一x86區段暫存器的一記憶體區段,一x86指令指示該微處理器載入一新值至該x86資料區段暫存器,然而該x86指令尚未被該微處理器引退,該微處理器包括:一微碼,引發以回應該x86指令,且該x86指令指示該微處理器載入該新值至該x86資料區段暫存器;其中,若該x86區段暫存器並非為複數DS/E S x86區段暫存器之一者時,則:該微碼執行一第一指令用以載入該新值至一非DS/ES x86區段暫存器,以致使該記憶體存取指令利用該新值而不是該非DS/ES x86區段暫存器之一目前值執行;其中,若該x86區段暫存器為該等DS/ES x86區段暫存器之一者時,則:該微碼執行一第二指令用以比較該新值與該DS/ES x86區段暫存器之一目前值,其中若該目前值等於該新值時,則該微碼不執行載入該新值至該DS/ES x86區段暫存器的指令,以致使該記憶體存取指令利用該DS/ES x86區 段暫存器之該目前值而非該新值執行,否則執行一第三指令以及一第四指令,該第三指令用以載入該新值至該DS/ES x86區段暫存器,而該第四指令用以將該記憶體存取指令清除並利用載入至該DS/ES x86區段暫存器之該新值重新執行該記憶體存取指令。
- 如申請專利範圍第4項所述之微處理器,更包括:一相依性檢查單元,其中若該微碼執行該第一指令,該相依性檢查單元藉由該記憶體存取指令產生一相依性資訊以等候該記憶體存取指令被發送而執行直到該新值載入至該DS/ES x86區段暫存器為止,否則不產生該相依性資訊。
- 如申請專利範圍第5項所述之微處理器,更包括:一指令發送邏輯單元;其中,若存在該相依性資訊,該指令發送邏輯單元等候該記憶體存取指令直到該記憶體存取指令可利用該新值而不是該非DS/ES x86區段暫存器之該目前值來執行;以及其中,若不存在該相依性資訊,該指令發送邏輯單元發送記憶體存取指令以利用該DS/ES x86區段暫存器之該目前值而不是該新值執行。
- 一微處理器,用以執行一區段暫存器載入指令以及一記憶體存取指令,該區段暫存器載入指令將一新值載入至一區段暫存器,以及該記憶體存取指令存取該區段暫存器所描述之一記憶體區段,其中該記憶體存取指令之程式順序係於該區段暫存器載入指令之後,該微處理器包括:複數區段暫存器,包括該區段暫存器,其中該微處理器不 包括用於該等區段暫存器之一暫存器重新命名硬體;以及複數執行單元,用以:從該區段暫存器擷取一目前值;利用所擷取到的該目前值執行該記憶體存取指令;以及擷取該目前值後,判斷是否該目前值等於該新值;其中,若該新值等於該目前值,該微處理器則:不載入該新值至該區段暫存器;以及其中,若該新值不等於該目前值,該微處理器則:載入該新值至該區段暫存器;從該區段暫存器擷取該新值;以及利用從該區段暫存器所擷取之該新值重新執行該記憶體存取指令。
- 如申請專利範圍第7項所述之微處理器,更包括:一暫時暫存器;其中,該微處理器更用以在該判斷該目前值是否等於該新值之步驟之前,將該新值由記憶體載入該暫時暫存器;以及其中,當判斷該目前值是否等於該新值時,該等執行單元比較由該記憶體載入至該暫時暫存器之該新值與該區段暫存器中之該目前值。
- 如申請專利範圍第7項所述之微處理器,更用以在利用從該區段暫存器所擷取之該新值重新執行該記憶體存取指令之步驟之前,清除該微處理器之一管線中之該記憶體存取指令。
- 一種微處理器操作方法,適用於具有複數區段暫存器之一微處理器,其中該等區段暫存器包括互斥之第一子集合以及第二子集合,該操作方法包括:遇到指示該等區段暫存器中之一區段暫存器載入一新值之一指令;若當該區段暫存器係於該第一子集合中,則:將該新值直接載入至該區段暫存器中;以及若當該區段暫存器係於該第二子集合中,則:於該新值不等於該區段暫存器中所儲存之一目前值時,將該新值載入至該區段暫存器中;以及於該新值等於該區段暫存器中所儲存之該目前值時,不載入該新值至該區段暫存器。
- 如申請專利範圍第10項所述之微處理器操作方法,其中區段暫存器之該第二子集合係由x86 DS以及ES區段暫存器所構成。
- 如申請專利範圍第10項所述之微處理器操作方法,更包括:若當該區段暫存器係於該第二子集合中,則:當該新值不等於該區段暫存器中所儲存之該目前值時,將所有較新於該指令之指令利用該新值重新執行。
- 一種電腦程式產品,編碼於至少一非暫態之電腦可讀取儲存媒體以用於一電腦裝置,該電腦程式產品包括:一電腦可讀取程式碼被應用於該儲存媒體,用於規範一微處理器,該微處理器具有複數區段暫存器,其中該等區段暫存器包括互斥之第一子集合以及第二子集合,該電腦可 讀取程式碼包括:一第一程式碼,用於規範一記憶體,其中該記憶體用以儲存一第一微碼常式以及一第二微碼常式;以及一第二程式碼,用於規範一指令解碼器,其中該指令解碼器耦接至該記憶體,用以遇到指示該等區段暫存器中之一區段暫存器載入一新值之一指令,其中當該區段暫存器係於該第一子集合中時,該指令解碼器係用以引發該第一微碼常式,其中當該區段暫存器係於該第二子集合中時,該指令解碼器係用以引發該第二微碼常式;其中該第一微碼常式係用以將該新值直接載入至該區段暫存器中;其中該第二微碼常式係用以於該新值不等於該區段暫存器中所儲存之一目前值時,將該新值載入至該區段暫存器中;以及其中該第二微碼常式係用以於該新值等於該區段暫存器中所儲存之該目前值時,不載入該新值至該區段暫存器。
- 如申請專利範圍第13項所述之電腦程式產品,其中該至少一非暫態之電腦可讀取儲存媒體可從光碟片,磁帶或其他磁性儲存媒體,光學儲存媒體,或電子儲存媒體,以及網路通訊媒體,有線通訊媒體,無線通訊媒體或其他通訊媒體之中來作選擇。
- 一種電腦程式產品,編碼於至少一非暫態之電腦可讀取儲存媒體以用於一電腦裝置,該電腦程式產品包括:一電腦可讀取程式碼被應用於該儲存媒體,用於規範一微 處理器,該微處理器用以執行一區段暫存器載入指令以及一記憶體存取指令,該區段暫存器載入指令將一新值載入至一區段暫存器,以及該記憶體存取指令存取該區段暫存器所描述之一記憶體區段,其中該記憶體存取指令之程式順序係於該區段暫存器載入指令之後,該電腦可讀取程式碼包括:一第一程式碼,用於規範該等區段暫存器,其中該等區段暫存器包括該區段暫存器,其中該微處理器不包括用於該等區段暫存器之一暫存器重新命名硬體;以及一第二程式碼,用於規範複數執行單元,其中該等執行單元用以:從該區段暫存器擷取一目前值;利用所擷取到的該目前值執行該記憶體存取指令;以及擷取該目前值後,判斷是否該目前值等於該新值;其中,若該新值等於該目前值,該微處理器則:不載入該新值至該區段暫存器;以及其中,若該新值不等於該目前值,該微處理器則:載入該新值至該區段暫存器;從該區段暫存器擷取該新值;以及利用從該區段暫存器所擷取之該新值重新執行該記憶體存取指令。
- 如申請專利範圍第15項所述之電腦程式產品,其中該至少一非暫態之電腦可讀取儲存媒體可從光碟片,磁帶或其他磁性儲存媒體,光學儲存媒體,或電子儲存媒體,以及網 路通訊媒體,有線通訊媒體,無線通訊媒體或其他通訊媒體之中來作選擇。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/369,132 US8880854B2 (en) | 2009-02-11 | 2009-02-11 | Out-of-order execution microprocessor that speculatively executes dependent memory access instructions by predicting no value change by older instructions that load a segment register |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201342230A true TW201342230A (zh) | 2013-10-16 |
TWI502500B TWI502500B (zh) | 2015-10-01 |
Family
ID=42513463
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102123151A TWI502500B (zh) | 2009-02-11 | 2010-02-01 | 微處理器、微處理器操作方法及其電腦程式產品 |
TW99102817A TWI411957B (zh) | 2009-02-11 | 2010-02-01 | 亂序執行微處理器、微處理器及其相關之提升效能之方法及執行方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW99102817A TWI411957B (zh) | 2009-02-11 | 2010-02-01 | 亂序執行微處理器、微處理器及其相關之提升效能之方法及執行方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8880854B2 (zh) |
CN (2) | CN101776989B (zh) |
TW (2) | TWI502500B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9733941B2 (en) * | 2012-10-09 | 2017-08-15 | Advanced Micro Devices, Inc. | Technique for translating dependent instructions |
US9823929B2 (en) * | 2013-03-15 | 2017-11-21 | Qualcomm Incorporated | Optimizing performance for context-dependent instructions |
WO2016097802A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude load replays dependent on long load cycles in an out-order processor |
US10133580B2 (en) * | 2014-12-14 | 2018-11-20 | Via Alliance Semiconductor Co., Ltd | Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor |
US11561792B2 (en) | 2015-06-08 | 2023-01-24 | Qualcomm Incorporated | System, apparatus, and method for a transient load instruction within a VLIW operation |
US10678542B2 (en) * | 2015-07-24 | 2020-06-09 | Apple Inc. | Non-shifting reservation station |
US10452434B1 (en) | 2017-09-11 | 2019-10-22 | Apple Inc. | Hierarchical reservation station |
KR102456176B1 (ko) * | 2020-05-21 | 2022-10-19 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
US11573891B2 (en) | 2019-11-25 | 2023-02-07 | SK Hynix Inc. | Memory controller for scheduling commands based on response for receiving write command, storage device including the memory controller, and operating method of the memory controller and the storage device |
US11531544B1 (en) | 2021-07-29 | 2022-12-20 | Hewlett Packard Enterprise Development Lp | Method and system for selective early release of physical registers based on a release field value in a scheduler |
US11687344B2 (en) | 2021-08-25 | 2023-06-27 | Hewlett Packard Enterprise Development Lp | Method and system for hard ware-assisted pre-execution |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7395412B2 (en) * | 2002-03-08 | 2008-07-01 | Ip-First, Llc | Apparatus and method for extending data modes in a microprocessor |
US6898697B1 (en) * | 2002-03-29 | 2005-05-24 | Advanced Micro Devices, Inc. | Efficient method for mode change detection and synchronization |
US6944744B2 (en) * | 2002-08-27 | 2005-09-13 | Advanced Micro Devices, Inc. | Apparatus and method for independently schedulable functional units with issue lock mechanism in a processor |
US7266673B2 (en) * | 2003-05-02 | 2007-09-04 | Advanced Micro Devices, Inc. | Speculation pointers to identify data-speculative operations in microprocessor |
US7210009B2 (en) * | 2003-09-04 | 2007-04-24 | Advanced Micro Devices, Inc. | Computer system employing a trusted execution environment including a memory controller configured to clear memory |
US7350056B2 (en) * | 2005-09-27 | 2008-03-25 | International Business Machines Corporation | Method and apparatus for issuing instructions from an issue queue in an information handling system |
JP2007272353A (ja) * | 2006-03-30 | 2007-10-18 | Nec Electronics Corp | プロセッサ装置及び複合条件処理方法 |
US8069340B2 (en) * | 2008-02-08 | 2011-11-29 | Via Technologies, Inc. | Microprocessor with microarchitecture for efficiently executing read/modify/write memory operand instructions |
-
2009
- 2009-02-11 US US12/369,132 patent/US8880854B2/en active Active
-
2010
- 2010-02-01 TW TW102123151A patent/TWI502500B/zh active
- 2010-02-01 TW TW99102817A patent/TWI411957B/zh active
- 2010-02-05 CN CN201010112024.8A patent/CN101776989B/zh active Active
- 2010-02-05 CN CN201310460683.4A patent/CN103488464B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN101776989A (zh) | 2010-07-14 |
CN103488464B (zh) | 2016-03-30 |
CN101776989B (zh) | 2014-05-14 |
TWI502500B (zh) | 2015-10-01 |
US20100205406A1 (en) | 2010-08-12 |
US8880854B2 (en) | 2014-11-04 |
TWI411957B (zh) | 2013-10-11 |
CN103488464A (zh) | 2014-01-01 |
TW201030613A (en) | 2010-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI502500B (zh) | 微處理器、微處理器操作方法及其電腦程式產品 | |
KR101148495B1 (ko) | 파이프라인 프로세서에서 조건 명령 실행을 촉진시키기 위해 로컬 조건 코드 레지스터를 이용하기 위한 방법 및 장치 | |
CN108139908B (zh) | 移动前缀指令 | |
US6247106B1 (en) | Processor configured to map logical register numbers to physical register numbers using virtual register numbers | |
EP2430526B1 (en) | Instruction cracking based on machine state | |
US8856496B2 (en) | Microprocessor that fuses load-alu-store and JCC macroinstructions | |
US11294680B2 (en) | Determining branch targets for guest branch instructions executed in native address space | |
US20110264896A1 (en) | Microprocessor that fuses mov/alu instructions | |
US9256427B2 (en) | Tracking multiple conditions in a general purpose register and instruction therefor | |
EP3171264B1 (en) | System and method of speculative parallel execution of cache line unaligned load instructions | |
WO2020024759A1 (en) | System and method for store instruction fusion in a microprocessor | |
GB2563116B (en) | Apparatus and method for determining a recovery point from which to resume instruction execution following handling of unexpected change in instruction flow | |
US6230262B1 (en) | Processor configured to selectively free physical registers upon retirement of instructions | |
US20220050684A1 (en) | Program counter (pc)-relative load and store addressing | |
US8464030B2 (en) | Instruction cracking and issue shortening based on instruction base fields, index fields, operand fields, and various other instruction text bits | |
US9588769B2 (en) | Processor that leapfrogs MOV instructions | |
Shah et al. | SPSIM: SuperScalar Processor SIMulater CS305 Project Report |