TWI451333B - 亂序執行之微處理器以及相關執行指令之方法 - Google Patents
亂序執行之微處理器以及相關執行指令之方法 Download PDFInfo
- Publication number
- TWI451333B TWI451333B TW099123430A TW99123430A TWI451333B TW I451333 B TWI451333 B TW I451333B TW 099123430 A TW099123430 A TW 099123430A TW 99123430 A TW99123430 A TW 99123430A TW I451333 B TWI451333 B TW I451333B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- displacement
- indication
- condition code
- execution unit
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 20
- 238000006073 displacement reaction Methods 0.000 claims description 58
- 230000001419 dependent effect Effects 0.000 claims description 40
- 230000005540 biological transmission Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000013307 optical fiber Substances 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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/30094—Condition code generation, e.g. Carry, Zero 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/38—Concurrent instruction execution, e.g. pipeline, 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, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- 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, look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
Description
本發明係有關於具有一亂序執行(out-of-order execution)微架構之微處理器,特別是有關於具有一x86架構之微處理器。
x86架構中定義了當一x86位移指令(Shift Right(SHR)指令或Shift Left(SHL)指令,通稱為Shift(SHF)指令)具有一位移量為零時,旗標暫存器EFLAGS將不改變;否則,旗標暫存器EFLAGS的位元將被更新以反應位移操作的結果。然而,如此卻可能使得在對一x86位移指令(x86 SHF指令)之後的一個條件碼(Condition code,CC)指令進行相依性判斷時(亦即:旗標暫存器EFLAGS的讀取單元(reader),如跳躍條件碼(Jcc)/設置條件碼(Setcc)/移動條件碼Movcc)時,引發問題。以下的程式片段係用以說明這樣的問題:
若CL暫存器的值為零時,JZ指令將相依於ADD指令;反之,若CL暫存器的值非為零時,JZ指令將相依於SHR指令。不幸地,在暫存器別名表(register alias table,簡稱RAT)判斷相依性時,暫存器別名表無法得知CL暫存器的值為零或非為零。因此,在微處理器的一種舊式設計中:
a)RAT使得JZ指令相依於SHR指令;且
b)RAT使得SHR指令相依於ADD指令(即相依於最近的較舊旗標暫存器EFLAGS-修改指令)。
於此例中,由於SHR指令必須提供從ADD指令所接收到的旗標暫存器EFLAGS的數值至JZ指令,且依據x86架構的定義,當CL暫存器的值為零,SHR指令不會修改旗標暫存器EFLAGS的數值,因此當CL暫存器的值為零,SHR指令可從ADD指令接收其所需的旗標暫存器EFLAGS的數值。本發明之發明人觀察到一SHF指令(位移指令的通稱)在最近的較舊旗標暫存器EFLAGS-修改指令上的額外相依性,其係只於零位移(shift-by-zero)的例子中為必要,但是上述舊式設計卻會使得SHF指令其送至執行單元中的時間點晚於理想上必須傳送的時間點,進而造成系統效能的損害。須提醒的是,前述問題只會發生在格式為”SHF reg,reg”的SHF指令中,亦即,位移量係由一存有較舊的指令的一暫存器所提供;反之,對格式為”SHF reg,Imm”的SHF指令而言,因RAT可以從Imm欄位(Immediate field)上提早得知位移量是否為零並同時可正確地設定其相依性,故不會遭遇前述的問題。
有鑑於此,本發明實施例提供一種亂序執行之微處理器。微處理器包括一暫存器別名表,用以產生一第一指示,以指示一指令是否相依於一位移指令之一條件碼結果。微處理器也包括一第一執行單元,用以執行位移指令並且產生一第二指示,以指示位移指令之一位移量是否為零。微處理器也包括一第二執行單元,用以接收第一指示以及第二指示,並產生一重送訊號,以致使當第一指示指示指令係相依於位移指令之條件碼結果且第二指示指示位移指令之位移量係為零時,重送指令。
本發明實施例另提供一種執行指令之方法,用以執行一亂序執行處理器中之指令。方法包括產生一第一指示,以指示一指令是否相依於一位移指令之一條件碼結果之步驟。方法也包括執行位移指令並產生一第二指示之步驟,其中第二指示係指示位移指令之一位移量是否為零。方法也包括接收第一指示以及第二指示,並產生一重送訊號,以致使當第一指示指示指令係相依於位移指令之條件碼結果且第二指示指示上述位移指令之位移量係為零時,重送指令。
為使本發明之上述和其他目的、特徵、和優點能更明顯易懂,下文特舉出較佳實施例,並配合所附圖式,作詳細說明如下。
為了解決前述的效能問題,暫存器別名表(register alias table,簡稱RAT)永遠假設位移量非為零,如此一來,一個SHF指令不需相依於一旗標暫存器EFLAGS(亦即,不需相依於比SHF指令舊的最近的旗標暫存器EFLAGS-修改指令)。若稍後執行單元判斷出SHF指令的位移量為零,並且遇到一指令其指定(specify)一個條件碼結果作為一來源運算元,上述指令相依於一較舊(older)SHF指令的旗標暫存器EFLAGS結果時,重排序緩衝器(reorder buffer,簡稱ROB)將重送(replay)與SHF指令相依的指令。在一實施例中,上述條件碼結果例如是一x86架構的旗標暫存器EFLAGS結果,可以是旗標暫存器EFLAGS中的一數值。
參見第1圖,係顯示依據本發明施例之一亂序執行之微處理器100之區塊圖。微處理器100包含一指令快取單元102,用以快取x86指令,x86指令例如是SHF指令、使用旗標暫存器EFLAGS作為一來源運算元的一指令(例如前述範例程式片段中的JZ指令)或更新旗標暫存器EFLAGS的一指令(例如前述範例程式片段中的ADD指令)。一指令轉譯器104選擇性地將x86指令轉譯為提供至一暫存器別名表(RAT) 106的微指令。
RAT 106係產生一第一指示(indicator),此第一指示用以指示指令的相依性。特別來說,RAT 106係被修改以追蹤相依於”SHF Reg,Reg”指令之旗標暫存器EFLAGS結果的指令並設定一位元,此位元將與具有相依性的上述指令一起往下傳送以指示相依性,其係被稱為DERS位元108。RAT 106在一重排序緩衝器(ROB) 118中為每一指令配置一項目(entry)並且派送指令及其對應的相依性資訊至保留站112。
當一個指令準備好被發送時,亦即,當其來源運算元係有效且一合適的執行單元114係可用時,保留站112將送出指令至執行單元114執行。特別來說,保留站112隨著每一個指令提供DERS位元108至執行單元114。必要時,ROB 118會產生一重送訊號(replay signal)136至保留站112,以使得必要的指令將被重送至保留站112,例如,當一個指令係相依於一個具有一位移量為零的SHF指令時,相關細節將於下討論。
於第1圖的實施例中,分別顯示兩個執行單元,稱為執行單元A 114A以及執行單元B 114B。執行單元A 114A係用以執行上述SHF指令並且產生第二指示,此第二指示係用以指示上述SHF指令之一位移量是否為零。於第1圖的例子中,執行單元A 114A執行SHF指令;執行單元B 114B執行相依於SHF指令的指令。執行單元114A與114B係透過一7位元的條件碼旗標匯流排(flag condition code bus),FlagCC_Bus[6:0]132,彼此耦接,其中FlagCC_Bus[6:0]132的位元係定義如下:
[6]:SBZ(零位移)
[5]:OF
[4]:SF
[3]:ZF
[2]:AF
[1]:PF
[0]:CF
觀察前述位元定義可知,位元[5:0]中定義了旗標暫存器EFLAGS的通用條件碼位元(common condition code bits)。此外,FlagCC_Bus 132亦包含一個額外的位元[6],SBZ位元。執行單元A 114A藉由設定SBZ位元以指出一個SHF指令具有一個零位移量(例如,於前述程式例子中,CL暫存器具有一零值)。執行單元A 114A在FlagCC_Bus 132上轉送一個SHF指令的通用EFLAGS位元結果以及SBZ位元值至執行單元B 114B。若執行單元B 114B執行一已設定DERS位元108的指令(即相依於SHF指令)且SBZ位元係被清除時,則執行單元B 114B可使用位元[5:0]來執行相依於SHF的指令;反之,若SBZ位元係被設定時,執行單元B 114B設置(assert)一重送訊號134至ROB 118,以通知ROB 118重送與SHF指令相依的上述指令(可視為”相依指令”)。在某些情況下,當”相依”指令係未真的相依於SHF指令時,例如當”相依”指令係未真的相依於SHF指令是發生於指令被重送時,執行單元B 114B將接收一結構性的條件碼暫存器的數值,例如結構性的旗標暫存器EFLAGS 122的值。一般而言,條件碼暫存器用以儲存指令執行的狀態。
接著參見第2A圖以及第2B圖,係顯示一依據本發明實施例之第1圖的微處理器100的操作流程圖。流程開始於步驟202。
於步驟202,暫存器別名表RAT 106遇到一SHF指令(例如:”SHF Reg,Reg”指令)並且產生SHF指令的相依性。特別是,與習知的舊式設計相比,RAT 106假設SHF指令並不具有旗標暫存器EFLAGS的相依性。換句話說,RAT 106假設位移量為非零值,因此SHF指令將產生一個新的旗標暫存器EFLAGS的數值,其可於不需旗標暫存器EFLAGS的先前數值的情況下提供給任何相依指令。如前述,這可視為一個好處,因為其可比具有一旗標暫存器EFLAGS相依性的SHF指令更快致能欲送出的SHF指令加以執行,因此可提升微處理器100的總處理量(throughput)。接著執行步驟204。
於步驟204,RAT 106派送SHF指令至一保留站112。保留站112隨後發送SHF指令至第一執行單元(執行單元A 114A)。接著執行步驟206。
於步驟206,第一執行單元(執行單元A 114A)檢查一暫存器的位移量(於前述例子中,CL暫存器包含位移量)。接著執行判斷步驟208。
於判斷步驟208,若第一執行單元(執行單元A 114A)判斷出位移量為零時,則流程執行步驟212;否則,流程執行步驟214。
於步驟212,第一執行單元(執行單元A 114A)在FlagCC_Bus 132中設定(set)SBZ位元。為了滿足x86架構要求,當ROB 118引退(retire)SHF指令時,由於其位移量為零(shift by zero),因此結構性的旗標暫存器EFLAGS 122將不會被此SHF指令所更新。流程接著執行步驟222。
於步驟214,第一執行單元(執行單元A 114A)清除在FlagCC_Bus 132中的SBZ位元,並且依據SHF指令所定義的位移操作產生新的旗標暫存器EFLAGS結果。此旗標暫存器EFLAGS結果將接著被寫入至結構性的旗標暫存器EFLAGS 122中。流程接著執行步驟222。
於步驟216,RAT 106遇到一個指令,其指定(specify)EFLAGS作為一來源運算元,例如前述例子中的JZ指令。若此指令係相依於一較舊的SHF指令(如:”SHF Reg,Reg”指令)的旗標暫存器EFLAGS結果,則RAT 106將設定與相依指令關聯(associated)的DERS位元108。流程接著執行步驟218。
於步驟218,RAT 106派送相依指令至一保留站112。須注意的是,微處理器100可同時地執行步驟216與218或接續在步驟202與204之後再執行步驟216與218。亦即,RAT 106可於每個時脈週期中接收並派送多重指令,且雖然SHF指令係依據程式順序處理相依指令,RAT 106可在同一個時脈週期中對其進行處理。流程接著執行步驟218至步驟222。
於步驟222,保有(holding)相依指令的保留站112偵測SHF指令的執行,亦即,保留站112偵測SHF指令的旗標暫存器EFLAGS結果的有效性,例如:結果為有效,並且對應地發送相依指令至第二執行單元(執行單元B 114B)。流程接著執行步驟224。
於步驟224,第二執行單元(執行單元B 114B)執行具有相依性的指令(可視為相依指令),亦即第二執行單元(執行單元B 114B)檢查相依指令的DERS位元108以及來自FlagCC_Bus 132的SBZ位元。流程接著執行決定步驟226。
於決定步驟226,當部分的相依指令執行時,第二執行單元(執行單元B 114B)判斷與相依指令關聯的DERS位元108是否被設定以及第一執行單元(執行單元A 114A)在步驟212中所產生的SBZ位元是否被設定。若前述兩個位元同時被設定時,則流程執行步驟232;否則,流程執行步驟228。
於步驟228,第二執行單元(執行單元B 114B)從FlagCC_Bus 132中接收通用旗標暫存器EFLAGS位元並正常地執行相依指令,其中通用旗標暫存器EFLAGS位元係於SHF指令時在步驟212所產生。重排序緩衝器ROB 118隨後正常地引退相依指令。流程至步驟228結束。
於步驟232,第二執行單元(執行單元B 114B)設置重送訊號134至ROB 118,以通知ROB 118相依指令需要被重送,此重送的資訊ROB 118會註記(note)在為了相依指令所配置(allocate)的項目(entry)中。流程接著執行步驟234。
於步驟234,ROB 118重送相依指令。亦即,當此相依指令變為微處理器100中最舊的指令而使其準備被引退時,ROB 118重送從相依指令開始的所有未引退的指令。亦即,重送相依指令與之後的所有未引退的指令。上述的情況是必要的,這是因為RAT 106於步驟202假設SHF指令為一非零位移量指令,故SHF指令不能提供旗標暫存器EFLAGS的值至相依指令。值得一提的是,透過消除在EFLAGS上的SHF指令的相依性,微處理器100有機會在效能上獲得提升。值得注意的是,當相依指令係重送時,其將成為微處理器中最舊的指令,如此一來,相依指令的DERS位元將被清除,因此將不具任何相依性,並且僅是(simply)從結構性的旗標暫存器EFLAGS 122接收條件碼。流程於是結束於步驟234。
於一實施例中,保留站112可發送SHF指令至多個執行單元中的其中一個。此外,雖然第1圖只顯示執行單元A輸出至FlagCC_Bus 132,但是若執行單元在執行指令時,其指令會影響旗標暫存器EFLAGS,這些每一執行單元也將輸出至FlagCC_Bus 132,且可執行相依於EFLAGS的指令的每一執行單元將接收FlagCC_Bus 132作為其輸入。
雖然本發明可能需要相對適當數量的額外硬體的配合以及有可能需要進行指令重送,但是藉由本發明,微處理器能夠消除在一最舊旗標暫存器EFLAGS-修改指令上的SHF的相依性,在大量的混合指令(instruction mixes)中將可提升效能,並且提升於一超純量亂序微架構中的使用率。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何熟悉此項技藝者,在不脫離本發明之精神和範圍內,當可做些許更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。例如,軟體可致能,例如,功能、製造、模型化、模擬、描述及/或測試本發明所述之裝置以及方法。上述可藉由使用一般程式語言(例如:C、C++)、硬體描述語言(HDL)包括Verilog HDL、VHDL等等或其他有效的程式語言來實現。此類軟體可以以程式碼的型態包含於實體媒體,例如任何其他機器可讀取(如電腦可讀取)儲存媒體如半導體、軟碟、硬碟或光碟片(例如:CD-ROM、DVD-ROM等等),其中,當程式碼被機器,如電腦載入且執行時,此機器變成用以實行本發明之裝置。本發明之方法與裝置也可以以程式碼型態透過一些傳送媒體,如電線或電纜、光纖、或是任何傳輸型態進行傳送,其中,當程式碼被機器,如電腦接收、載入且執行時,此機器變成用以實行本發明之裝置。當在一般用途處理器實作時,程式碼結合處理器提供一操作類似於應用特定邏輯電路之獨特裝置。本發明所述之裝置以及方法可包含於一半導體智財核心例如一微處理器核心(嵌入於HDL),並轉換於積體電路生產時轉換為硬體產品。此外,本發明所述之裝置以及方法可實作於包含具有硬體以及軟體的組合的實體實施例。因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。特別地,本發明可被實作於一微處理器裝置中,其可被用於一一般用途電腦上。最後,任何熟悉此項技藝者,可基於本發明所揭露的概念以及特定實施例,在不脫離本發明之精神和範圍內,可做些許更動與潤飾以達到本發明之相同目的。
100...微處理器
102...指令快取單元
104...指令轉譯器
106...暫存器別名表(RAT)
108...DERS位元
112...保留站
114A...執行單元A
114B...執行單元B
118...重排序緩衝器(ROB)
122...結構性的旗標暫存器EFLAGS
132...條件碼旗標匯流排(FlagCC_Bus)
134、136...重送訊號
202、204、206、208、212、214、216、218、222、224、226、228、232、234...執行步驟
第1圖係顯示依據本發明實施例之一微處理器之區塊圖。
第2A圖以及第2B圖係顯示依據本發明實施例之第1圖的微處理器之操作流程圖。
100...微處理器
102...指令快取單元
104...指令轉譯器
106...暫存器別名表(RAT)
108...DERS位元
112...保留站
114A...執行單元A
114B...執行單元B
118...重排序緩衝器(ROB)
122...結構性的旗標暫存器EFLAGS
132...條件碼旗標匯流排(FlagCC_Bus)
134...重送訊號
136...重送訊號
Claims (10)
- 一種亂序執行之微處理器,包括:一暫存器別名表,用以產生一第一指示,上述第一指示用以指示一指令是否相依於一位移指令之一條件碼結果;一第一執行單元,用以執行上述位移指令並且產生一第二指示,上述第二指示用以指示上述位移指令之一位移量是否為零;以及一第二執行單元,用以接收上述第一指示以及上述第二指示,並產生一重送訊號,以致使當上述第一指示指示上述指令係相依於上述位移指令之上述條件碼結果且上述第二指示指示上述位移指令之上述位移量係為零時,重送上述指令。
- 如申請專利範圍第1項所述之微處理器,其中上述暫存器別名表假設上述位移量非為零,來產生上述位移指令之相依性。
- 如申請專利範圍第1項所述之微處理器,其中當上述第一執行單元判斷上述位移量非為零時,上述第一執行單元清除上述第二指示,並依據上述位移指令產生另一條件碼結果以寫入一結構性的條件碼暫存器。
- 如申請專利範圍第1項所述之微處理器,其中用以執行上述位移指令之上述第一執行單元包括用以產生上述位移指令之上述條件碼結果,其中若上述第二指示指示上述位移指令之上述位移量非為零時,上述第二執行單元係用以利用上述第一執行單元所產生之上述條件碼結果,以執行相依於上述位移指令之上述條件碼結果的上述指令。
- 如申請專利範圍第1項所述之微處理器,其中當上述指令重送時,上述第二執行單元係用以接收來自上述微處理器之一結構性的條件碼暫存器之上述條件碼結果以執行上述指令,上述暫存器別名表重送從上述指令與之後的所有未引退的指令。
- 一種執行指令之方法,用以執行一亂序執行微處理器中之指令,包括下列步驟:產生一第一指示,用以指示一指令是否相依於一位移指令之一條件碼結果;執行上述位移指令並產生一第二指示,其中上述第二指示係指示上述位移指令之一位移量是否為零;以及接收上述第一指示以及上述第二指示,並產生一重送訊號,以於上述第一指示指示上述指令係相依於上述位移指令之上述條件碼結果且上述第二指示指示上述位移指令之上述位移量係為零時,重送上述指令。
- 如申請專利範圍第6項所述之執行指令之方法,更包括:假設上述位移量非為零,產生上述位移指令之相依性。
- 如申請專利範圍第6項所述之執行指令之方法,其中當判斷上述位移量非為零時,清除上述第二指示,並依據上述位移指令產生另一條件碼結果以寫入一結構性的條件碼暫存器。
- 如申請專利範圍第6項所述之執行指令之方法,更包括:若上述第二指示指示上述位移指令之上述位移量非為零時,利用上述位移指令之上述條件碼結果,執行相依於上述位移指令之上述條件碼結果的上述指令。
- 如申請專利範圍第6項所述之執行指令之方法,其中上述重送上述指令之步驟包括:接收來自上述微處理器之一結構性的條件碼暫存器之上述條件碼結果以執行上述指令;以及重送從上述指令與之後的所有未引退的指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US23208209P | 2009-08-07 | 2009-08-07 | |
US12/634,187 US8332618B2 (en) | 2009-08-07 | 2009-12-09 | Out-of-order X86 microprocessor with fast shift-by-zero handling |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201106262A TW201106262A (en) | 2011-02-16 |
TWI451333B true TWI451333B (zh) | 2014-09-01 |
Family
ID=43535678
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW099123430A TWI451333B (zh) | 2009-08-07 | 2010-07-16 | 亂序執行之微處理器以及相關執行指令之方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8332618B2 (zh) |
TW (1) | TWI451333B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9442732B2 (en) | 2012-03-19 | 2016-09-13 | Via Technologies, Inc. | Running state power saving via reduced instructions per clock operation |
US10019260B2 (en) | 2013-09-20 | 2018-07-10 | Via Alliance Semiconductor Co., Ltd | Fingerprint units comparing stored static fingerprints with dynamically generated fingerprints and reconfiguring processor settings upon a fingerprint match |
US9330011B2 (en) | 2013-09-20 | 2016-05-03 | Via Alliance Semiconductor Co., Ltd. | Microprocessor with integrated NOP slide detector |
US9755902B2 (en) | 2014-05-20 | 2017-09-05 | Via Alliance Semiconductor Co., Ltd. | Dynamic system configuration based on cloud-collaborative experimentation |
US9575778B2 (en) | 2014-05-20 | 2017-02-21 | Via Alliance Semiconductor Co., Ltd. | Dynamically configurable system based on cloud-collaborative experimentation |
WO2016097800A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Power saving mechanism to reduce load replays in out-of-order processor |
KR101820221B1 (ko) * | 2014-12-14 | 2018-02-28 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 프로그래머블 로드 리플레이 억제 메커니즘 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6463522B1 (en) * | 1997-12-16 | 2002-10-08 | Intel Corporation | Memory system for ordering load and store instructions in a processor that performs multithread execution |
US7047397B2 (en) * | 2002-09-13 | 2006-05-16 | Intel Corporation | Method and apparatus to execute an instruction with a semi-fast operation in a staggered ALU |
TW200708750A (en) * | 2005-07-22 | 2007-03-01 | Koninkl Philips Electronics Nv | Testable integrated circuit, system in package and test instruction set |
TW200839611A (en) * | 2006-12-22 | 2008-10-01 | Ericsson Telefon Ab L M | Data-processing unit |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5497493A (en) * | 1993-09-30 | 1996-03-05 | Intel Corporation | High byte right-shift apparatus with a register alias table |
US6684323B2 (en) * | 1998-10-27 | 2004-01-27 | Stmicroelectronics, Inc. | Virtual condition codes |
US6629235B1 (en) * | 2000-05-05 | 2003-09-30 | International Business Machines Corporation | Condition code register architecture for supporting multiple execution units |
US8069339B2 (en) * | 2009-05-20 | 2011-11-29 | Via Technologies, Inc. | Microprocessor with microinstruction-specifiable non-architectural condition code flag register |
-
2009
- 2009-12-09 US US12/634,187 patent/US8332618B2/en active Active
-
2010
- 2010-07-16 TW TW099123430A patent/TWI451333B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6463522B1 (en) * | 1997-12-16 | 2002-10-08 | Intel Corporation | Memory system for ordering load and store instructions in a processor that performs multithread execution |
US7047397B2 (en) * | 2002-09-13 | 2006-05-16 | Intel Corporation | Method and apparatus to execute an instruction with a semi-fast operation in a staggered ALU |
TW200708750A (en) * | 2005-07-22 | 2007-03-01 | Koninkl Philips Electronics Nv | Testable integrated circuit, system in package and test instruction set |
TW200839611A (en) * | 2006-12-22 | 2008-10-01 | Ericsson Telefon Ab L M | Data-processing unit |
Also Published As
Publication number | Publication date |
---|---|
US8332618B2 (en) | 2012-12-11 |
TW201106262A (en) | 2011-02-16 |
US20110035573A1 (en) | 2011-02-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI451333B (zh) | 亂序執行之微處理器以及相關執行指令之方法 | |
US7949972B2 (en) | Method, system and computer program product for exploiting orthogonal control vectors in timing driven synthesis | |
US8074060B2 (en) | Out-of-order execution microprocessor that selectively initiates instruction retirement early | |
US9195466B2 (en) | Fusing conditional write instructions having opposite conditions in instruction processing circuits, and related processor systems, methods, and computer-readable media | |
KR101874726B1 (ko) | Pci 익스프레스 강화 | |
TWI411957B (zh) | 亂序執行微處理器、微處理器及其相關之提升效能之方法及執行方法 | |
CN101894009A (zh) | 乱序执行的微处理器以及相关执行指令的方法 | |
TW201042543A (en) | Out-of-order execution microprocessor and operation method thereof | |
TWI608412B (zh) | 適應性最佳化比較交換運算技術 | |
CN105765522A (zh) | 用于立即数处置和旗标处置的处理器和方法 | |
US7707389B2 (en) | Multi-ISA instruction fetch unit for a processor, and applications thereof | |
CN102163139B (zh) | 微处理器融合载入算术/逻辑运算及跳跃宏指令 | |
US20070028077A1 (en) | Pipeline processor, and method for automatically designing a pipeline processor | |
US7213136B2 (en) | Apparatus and method for redundant zero micro-operation removal | |
TWI423125B (zh) | 微處理器以及相關指令執行方法 | |
US8443030B1 (en) | Processing of floating point multiply-accumulate instructions using multiple operand pathways | |
US10509655B1 (en) | Processor circuit and operation method thereof | |
CN102193775B (zh) | 微处理器融合搬运/算术逻辑运算/条件跳跃指令 | |
US9069548B2 (en) | Reconfigurable instruction encoding method and processor architecture | |
JP2012010108A (ja) | データ処理回路及びデータ処理方法 | |
US10747542B2 (en) | Load store dependency predictor using separate alias tables for store address instructions and store data instructions | |
JP6399772B2 (ja) | マイクロプロセッサ及び装置 | |
JP6347629B2 (ja) | 命令処理方法及び命令処理装置 | |
US9268573B2 (en) | Methods for decoding and dispatching program instructions | |
JP2009217720A (ja) | プログラム生成装置およびプログラム生成方法 |