TWI450189B - 微處理器融合載入算術/邏輯運算及跳躍巨指令 - Google Patents
微處理器融合載入算術/邏輯運算及跳躍巨指令 Download PDFInfo
- Publication number
- TWI450189B TWI450189B TW100112726A TW100112726A TWI450189B TW I450189 B TWI450189 B TW I450189B TW 100112726 A TW100112726 A TW 100112726A TW 100112726 A TW100112726 A TW 100112726A TW I450189 B TWI450189 B TW I450189B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- micro
- microprocessor
- instructions
- macro
- Prior art date
Links
- 238000000034 method Methods 0.000 claims description 21
- 239000000872 buffer Substances 0.000 claims description 20
- 239000012536 storage buffer Substances 0.000 claims description 9
- 238000013519 translation Methods 0.000 claims description 9
- 230000008707 rearrangement Effects 0.000 claims description 8
- 230000014509 gene expression Effects 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 3
- 238000004891 communication Methods 0.000 claims description 2
- 230000004044 response Effects 0.000 claims 4
- 238000004590 computer program Methods 0.000 claims 3
- 230000009191 jumping Effects 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 10
- 230000004927 fusion Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000001934 delay Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000012360 testing method 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
-
- 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/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 or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
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)
Description
本發明係有關於微處理器指令轉譯領域,特別是指一種在轉譯過程中融合巨指令集的微處理器。
許多近代的微處理器都具有使用者可視的架構(有時被稱為巨觀架構(macroarchitecture)),即指令集和程式工程師可能用的資源(resource)及一明顯可區隔的微觀架構(microarchitecture)。巨指令是一微處理器架構指令集中的指令,相對地,微運算指令(micro-op)是微觀架構下的一微觀指令集(microinstruction set)中的指令。微處理器執行單元實際所執行的是微運算指令而不是巨指令。一個指令轉譯器轉譯巨指令成一個或更多個微運算指令114,而這該些微運算指令將被送到執行單元去執行。微處理器可以處理一程式巨指令的處理量(throughput)或速率,大約就是指令轉譯器轉譯巨指令成一個或多個微運算指令的函數,這點對超大純量(superscaler)及/或非循序(out-of-order)執行的微處理器而言更是如此。
本發明揭露一種微處理器,用以接收該微處理器的指令集架構之第一及第二程式相鄰巨指令,第一巨指令命令該微處理器從該微處理器記憶體的一位置去載入一運算元以執行一算術/邏輯運算,使用所載入的運算元產生一運算結果,回存該運算結果到該記憶體位置。若該更新條件碼滿足該第二巨指令所指定的條件,則第二巨指令命令微處理器跳躍至一目標位址,否則執行下一個順位指令。一指令轉譯同時轉譯該第一及第二程式相鄰巨指令成第一、第二、和第三運算式以供該些執行單元執行。第一微運算指令命令執行單元計算該記憶體位置之位址,並從該記憶體位置之位址去載入運算元至該微處理器;第二微運算指令命令該些執行單元運用所載入運算載入的運算元執行該算術/邏輯運算以產生運算結果,並據以去更新微處理器之條件碼,若已更新的條件碼滿足了該條件則跳至該目標位址,否則去執行該下一順位指令;第三微運算指令命令執行單元去回存該運算結果於該記憶體位置。
本發明復揭露一種微處理器處理該微處理器的指令集架構之第一及第二程式相鄰巨指令的方法,其中上述第一巨指令命令該微處理器從微處理器記憶體的一位置去載入一運算元以執行一算術/邏輯運算以產生一運算結果,回存該運算結果到該記憶體位置,該微處理器依據該運算結果去更新微處理器的條件碼,其中上述之第二巨指令在該更新條件滿足第二巨指令所指定的條件時命令微處理器跳躍至一目標位址,否則執行下一個順位指定。該方法至少包含:同時轉譯該第一及第二程式相鄰巨指令成第一、第二、和第三運算式以供微處理器之一些執行單元執行;其中第一微運算指令命令該些執行單元計算該記憶體位置之位址,並從該記憶體位置之位址去載入運算元至該微處理器;其中上述之第二微運算指令令該些執行單元執行該算術/邏輯運算,用所載入運算載入的運算元產生運算結果,並據以去更新微處理器之條件碼,若已更新的條件碼滿足了該條件則跳至該目標位址,否則去執行該下一順位指令;其中上述之第三微運算指令令執行單元去回存該運算結果於該記憶體位置。
請參考圖1,其圖示根據本發明一微處理器100的方塊圖。微處理器100包含一指令快取102及一指令擷取單元103,用以從指令快取102擷取巨指令104。指令快取102包含一指令指標暫存器107(architectural instruction pointer)。當一指令集的一指令引退(retired)時,指令指標暫存器107就被指令流中的下一指令的位址所更新。在所提取的指令不屬於現有分支的情況下,指令流中的下一指令的位址就是下個順序的指令。在所提取的指令是屬於有分支的情況下,指令流中的下一指令的位址就是依分支指令所分派之目標位址。大部分時間下,擷取單元103所提供的提取位址給指令快取102將不同於指令指標暫存器107的值。這是因為微處理器100的管道特性(pipelined nature)、以及因為微處理器包含一分支預測器(branch predictor),其預先給分支指令所分派目標位址的時間,必須早於管道中指令被引退的時間。巨指令104是由微處理器100的指令集架構所指定。依照本發明的一實施例,微處理器100的指令集架構大致符合了x86的架構(請參考IA-32),而巨指令104則是來自x86的架構。一處理器被稱為是一x86架構處理器,若它可以正確地執行一些應用程式的主要部分,並且該些應用程式是設計給x86處理器執行。一應用程式能正確地執行即是指能獲得預期的運算結果,特別是指當微處理器100執行x86指令集並且包含x86使用者可視的暫存器集(register set)之時。
微處理器100也包含指令轉譯器108,用以轉譯巨指令104成微運算指令114,以被微處理器100的一些個執行單元124所執行。以下將對指令轉譯器108進一步說明。
微處理器100也包含一微碼單元112,其包含一微碼記憶體,用以儲存微碼或微碼程序(microcode routine)和微數列(microsequencer),用以從微碼記憶體指令提取微碼,微碼也是微運算指令114。
微處理器100也包含一暫存器配置表(register allocation table(RAT) 116,用以依程式指令順序,從指令轉譯器108及微碼單元112中接收微運算指令114,暫存器配置表(RAT)116是一個產生及維護微運算指令114依附資訊的配置表。暫存器配置表116耦接於執行單元124、一子系統記憶體132及一微處理器100的重排緩衝器(Reorder Buffer,ROB) 128。執行單元124執行微運算指令114,圖2將有更多的細節描述。子系統記憶體132包含一數據快取138或快取層次(hierarchy)、儲存緩衝器134和一載入緩衝器136。儲存緩衝器134保有(Hold)待寫入記憶體,如數據快取的數據;載入緩衝器136接收提取自記憶體,如等待載入結構體暫存器148或者微處理器之非結構體暫存器(未圖示)的數據。依據本發明的一實施例,結構體暫存器148包括已知的x86 EFLAGS(旗標)暫存器。
ROB 128是一環形佇列(queue)或陣列的欄位(entry),其結構將詳述於圖5。每一ROB 128欄位432儲存資訊給一不相同的微運算指令114。暫存器配置表116也在每一微運算指令114被分派到保留站(未圖示)之前,在ROB 128中配置一欄位給它,而保留站係微運算指令114等待分派至一執行單元124前的儲存處。因此,ROB 128維護著微運算指令114在程式中的執行順序,其使得ROB 128可依據微運算指令114及它們所對應的巨指令104被轉譯的順序來進行指令的引退。
本發明的優點是指令轉譯器108可用以融合兩個巨指令104成三個微運算指令114。亦即,當指令轉譯器108偵測到它接收到二個相鄰近的巨指令104,而且該二個相鄰近的巨指令104是巨指令流(stream of macroinstruction)的一指定型時,指令轉譯器108能夠解碼和轉譯該兩個相鄰近型的巨指令104成為三個微運算指令114,而該些運算式114指令係聯合起來共同執行一功能、或依兩個融合巨指令104之指示來執行。更特別的是,指令轉譯器108所融合兩個相鄰近巨指令104中的第一個是一載入-算術-邏輯單元(load-alu-store:(LdAluSt))型巨指令而第二個則是條件跳躍巨指令。一LdAluSt型巨指令的例子是x86 ADD[mem],EAX指令,其命令微處理器100由[mem]內指定位址的記憶體位置載入運算元於微處理器100中,在將運算元與EAX暫存器內的值相加之後,再儲存加總的結果到[mem]指定的位址。一條件跳躍巨指令也是×86的Jcc指令,如JNE(跳若不等於的話),JZ(跳若是0)等等,它們會在條件為真之下令微處理器100跳到一目標的位址(從指令本身起算的偏離值是由Jcc指令所指定),否則就去提取下一順序的指令。雖然LdAluSt型巨指令和條件跳躍巨指令如上所述,吾人當可理解許多的LdAluSt型巨指令和條件跳躍巨指令是存在的且在將來還有新的,但本發明實施例仍可應用其中。
一傳統的指令轉譯器可轉譯如上所述之兩個巨指令104成4個不同的微運算指令114。特別的是,傳統的指令轉譯器108可轉譯LdAluSt巨指令104成3個微運算指令114及轉譯條件跳躍巨指令成一第4個微運算指令114。不過,在本發明實施例中,指令轉譯器108可融合兩個巨指令104成3個微運算指令114,這樣的好處是它可增加每個時脈周期下的指令數量、或是微處理器100的處理量,因為微處理器100可以較少的資源去處理兩個相鄰LdAluSt/條件跳躍巨指令104。例如,因為在本發明所揭露之指令轉譯器108下,將少了1微運算指令114被分派到微處理器100的管線,而每一暫存器配置表116、保留站及ROB 128都可以少消耗了1個欄位,這樣可以有效增加非循序微處理器100的預視(lookahead)能力,於是可利用指令層級平行(instruction-level parallelism)的機制。此外,由於少佔用了一個執行序列(slot)於執行單元124,該執行序列就可以用於執行其它的微運算指令114。巨指令的融合對指令轉譯器108也是有好處的,因為它可以使指令轉譯器108在每一時脈周期中消耗更多的巨指令104,於是可以在每一時脈周期中最多發出3個微運算指令114。還有,比起指令轉譯器108必須等一額外的時脈周期才能轉譯條件跳躍巨指令的情況來說,在相同時脈周期下具有轉譯兩個巨指令的能力,可允許指令轉譯器108能看到(see)以及很快地轉譯下一巨指令,這點對於下一個巨指令是分支指令的情形是更形重要的。更進一步的說,有能力在一時脈周期引退LdAluSt和條件跳躍巨指令也可增加處理量。最後,一個三個指令寬的指令轉譯器108要比四指令的指令轉譯器108具有更小、更快、且較低電耗的處理潛力。
微處理器100也包含一控制暫存器105,其包含一位元,該位元可以依據在此描繪之融合特徵,用以通知指令轉譯器108是否執行指令融合之操作。
請參考圖2的功能方塊圖,其更詳細的描繪圖1中的執行單元124。圖2中的實施例包含7個個別的執行單元124,並以204至228表示。第一個執行單元記作媒體(MEDIA)A 204,其執行微運算指令114的浮點運算。第二個執行單元記作媒體B 208,其執行乘微運算指令114(multiply micro-ops)。第三個執行單元記作SINT(簡單整數)212,其執行整數ALU微運算指令114,即執行整數算式或邏輯操作。第四個執行單元記作SINT/BR(搬(move)/分支)216,當融合LdAluSt和條件跳躍型巨指令時,即執行搬遷(move)或分支微運算指令114及簡單的ALU運算,並當融合LdAluSt和條件跳躍型巨指令時,執行由指令轉譯器108所產生之ALU/JCC微運算指令114(圖3將有詳述)。第五個執行單元標記為LD 220,當融合LdAluSt和條件跳躍型巨指令時,為微運算指令114(例如圖3中的LD/STA,係由指令轉譯器108所產生)從記憶體提取來源運算元並儲存至微處理器100的暫存器中。為了從記憶體提取來源運算元,LD 220為執行記憶體載入操作的微運算指令114(例如LD/STA微運算指令)計算來源記憶體位址。依據本發明一實施例,LD單元220是執行單元124中,唯一一個為執行記憶體載入或讀取操作的微運算指令114計算來源記憶體位址的執行單元。第六個執行單元記作STA 224(儲存位址),其計算目的記憶體位址提供給微運算指令114(例如LD/STA微運算指令114)執行存入或寫入記憶體操作。在本發明實施例中,STA 224也是唯一一個為執行記憶體儲存、寫入計算之微運算指令114,計算目的記憶體位址的執行單元。STA 224也將所計算的目的記憶體位址寫入於儲存緩衝器134中,此儲存緩衝器134是先前配置給微運算指令114者。第七個執行單元記作STD(儲存數據)228,其將微運算指令114的運算結果,從先前配置給微運算指令114(例如LD/STA微運算指令114等執行記憶體儲存者,請同時參考圖3)之暫存器儲存至由STA所指定的記憶體位址,該指令係當LdAluSt和條件跳躍巨指令104融合時由指令轉譯器108所產生。雖然圖中顯示7個執行單元124,其它的實施例可能包含更多或較少的執行單元124,其視設計的要求及限制而定。
請參考圖3的功能方塊圖,其描繪x86 LdAluSt型巨指令104和x86 JCC條件跳躍巨指令,及其被圖1中的指令轉譯器108所融合成LDSTA、ALU/JCC及STD微運算指令114的情形。
依據本發明LDALUST巨指令104包含一運算碼欄位302,位址來源欄位306,數據來源欄位304。位址來源欄位306指定運算元來源,如圖1中結構體暫存器148的暫存器,被提供予LD單元220和STA 224(請同時參考圖2)用以計算一記憶體位址。此記憶體位址係指定在運算碼欄位302的算術/邏輯運算操作中的第一數據運算元的記憶體所在,而該記憶體位址同時也指定了算術/邏輯運算後結果之目的記憶體位址。數據來源欄位304指定了算術/邏輯運算之第二數據運算元的來源。
JCC巨指令104包含一運算碼欄位312和一偏離欄位314,偏離欄位314指定了一偏離值,其係在運算碼欄位312所指定的條件滿足時,擷取單元103需轉換控制權並計算目的位址時使用之。
LDSTA微運算指令114包含一運算碼欄位322、位址來源欄位324和一目的欄位326。指令轉譯器108將LDALUST巨指令104之位址來源欄位306的值轉送至LDSTA微運算指令114之位址來源欄位324。指令轉譯器108則以指定微處理器100之一暫時暫存器(temporary register) 502的值來填入(populate)目的欄位326(請同時參考圖5)。
ALU/JCC微運算指令114包含運算碼332、來源A 334、來源B 335、目的值336及偏離值338等欄位。指令轉譯器108將LDALUST巨指令104之來源欄位304的值轉送至ALU/JCC微運算指令114之來源欄位A 334。指令轉譯器108將JCC巨指令104的偏離欄位314的值轉送到ALU/JCC微運算指令114之偏離欄位338。指令轉譯器108以指定一暫時暫存器(temporary register) 502來填入ALU/JCC微運算指令114之來源欄位B 335及目的欄位336。
STD微運算指令114包含一運算碼欄位342及一來源欄位344。指令轉譯器108從STD微運算指令114取出來源欄位344的值,用以指定該暫時暫存器(temporary register) 502。
請參考圖4的功能方塊圖,其更詳細的描繪圖1中的ROB 128的欄位432。該欄位包含一結果欄位402以儲存微運算指令114的一運算結果,一已完成旗標404、例外旗標406、一下一順序指令指標欄位(NSIP;next sequential instruction pointer)408、一已融合旗標412、一LD/STA旗標414,及一STAu3完成旗標416。
當一執行單元124執行完一個微運算指令114,它就會設定完成旗標404。LDSTA微運算指令114實際上是由兩個執行單元124,亦即LD單元220和STA單元224來執行,在此有更詳細的描繪。當LD單元220完成LDSTA微運算指令114時,它就會設定完成旗標404。然而,當STA單元224完成LDSTA微運算指令114時,它設定的是STA完成旗標416而不是完成旗標404,這可以致能(enable)ROB 128去偵測一LDSTA微運算指令114(可由LD/STA旗標414之設定而得知)已完成,此即當完成旗標404和STA完成旗標416兩者都被設定時。
當一執行單元124偵測到一微運算指令114導致了一例外條件時,執行單元124會在配置給微運算指令114的欄位432中設定例外旗標(except flag) 406。當微運算指令114準備引退時,若ROB 128偵測到例外旗標406被設定時,ROB 128就採取必要動作,例如禁止以微運算指令114的運算結果來更新微處理器100的結構狀態,及/或禁止引發(invoke)微碼單元112的例外操作器(exception handler,詳如下述)。
已融合旗標412用以指示該微運算指令114是否被指令轉譯器108經由融合兩個巨指令104而來。
NSIP欄位408所持有(hold)的是下一順序指令指標欄位NSIP,其是巨指令104被轉譯為微運算指令114之後的下一順位指令的記憶體位址。NSIP隨微運算指令114的執行向下遞增。在融合巨指令104的情況下,NSIP欄位408所持有的是上一個融合巨指令104被轉譯為微運算指令114後的下一順序指令。有関NSIP欄位408的使用,將在後面圖6之方塊654做更進一步的描繪。
請參考圖5和圖6分別所示的功能方塊圖及流程圖,其說明了圖1之微處理器100執行指令融合、以及所轉譯微運算指令114之執行結果。圖5的描繪將搭配圖6的流程圖來進行,流程開始於方塊604。
於方塊604中,指令轉譯器108從指令快取102接收了x86 LDALUST型的巨指令104和一相鄰的x86JCC型巨指令104,如圖5所示。接著前進到方塊608。
於方塊608中,指令轉譯器108轉譯於方塊604中所接收之巨指令104成為LDSTA,ALU/JCC及STD微運算指令114,如圖5所示。此外,指令轉譯器108也計算上一個融合巨指令104的NSIP,亦即在JCC巨指令104之後的巨指令104之記憶體位址。接著前進到方塊614。
於方塊614中,暫存器配置表116接收了LDSTA、ALU/JCC及STD微運算指令114並且計算它們與其它指令及它們之間的相關性。特別的是,ALU/JCC微運算指令114與LDSTA微運算指令114從LD單元220執行載入數據相關,而STD微運算指令114則與ALU/JCC微運算指令114的執行結果相關。亦即,ALU/JCC微運算指令114一直要到從LDSTA微運算指令114所載入的數據對它有效(available)了才執行(即已載入數據),而STD微運算指令114也一直要到從ALU/JCC微運算指令(micro-ops) 11的運算結果對它有效了(即有了結果了)才執行。接著前進到方塊618。
於方塊618中,暫存器配置表116於ROB 128內分別給LDSTA,ALU/JCC及STD微運算指令114配置了三個欄位432(圖5中分別以指標值7、8、9表示)。暫存器配置表116在三個欄位432的每一個也分別設定了已融合旗標412,以指示它們已被融合巨指令104所轉譯,如圖5所示。此外,暫存器配置表116以在方塊608計算所得的NSIP,填入該些欄位432中的每一個NSIP欄位408。暫存器配置表116也在配置給LDSTA微運算指令114的欄位432中的LD/STA旗標414進行設定,如圖5所示。最後,暫存器配置表116分派三個微運算指令114到保留站以供執行單元124執行,如圖5所示。更特別的是,暫存器配置表116分派LDSTA微運算指令114到LD單元220及單元STA 224、分派ALU/JCC微運算指令114至SINT/BR單元216、以及分派STD微運算指令114至STD單元228。流程推進到方塊624。
於方塊624中,子系統記憶體132監測(snoop)暫存器配置表116匯流排並偵測LDSTA微運算指令114的分派狀況,並以配置一載入緩衝器136和儲存緩衝器134做回應。流程由方塊628推進至632。
於方塊628中,LD單元220從圖3所示之位址來源欄位324計算載入操作之記憶體位址,並檢視是否此載入產生了例外。如果是,則LD單元220於ROB欄位432設定例外旗標406。若否,則LD單元220於子系統記憶體132已從記憶體提取載入的數據至載入緩衝器136(在方塊624中所配置的)中,並且載入的數據已被寫到TEMP暫存器502時,LD單元220將設定ROB欄位432中的完成旗標404,如圖5所示。流程由方塊628推進至632。
在方塊634中,SINT/BR單元216執行ALU操作,此ALU操作是由ALU/JCC微運算指令114作用在TEMP暫存器502內的運算元,而該運算元是ALU/JCC微運算指令114之來源A欄位334所指定,然後回存運算結果於TEMP暫存器502,如圖5所示。SINT/BR單元216也依據寫到TEMP暫存器502內之ALU操作值產生一立即性的EFLAGS結果(intermediate EFLAGS result)。此外,依據立即性的EFLAGS結果,SINT/BR單元216執行ALU/JCC微運算指令114中的選擇性跳躍部分。亦即,SINT/BR單元216判斷立即性的EFLAGS是否滿足指定條件並解出正確之跳躍的標的位址。若條件滿足,SINT/BR單元216將提供一信號至擷取單元103以開始進行目標位址的提取動作。在一實施例中,微處理器100包含了一分支預測器(predictor),用以預測條件分支指令(像是融合JCC巨指令104)的方向與目標位址。在此實施例中,SINT/BR單元216對它所預測的方向及條件分支指令之目標位址與實際的方向與目標位址進行比較。若預測不正確,則SINT/BR單元216以信號通知擷取單元103以矯正錯誤。最後,SINT/BR單元216設定完成旗標404,如圖5所示。流程由方塊634推進至638。
於方塊638中,STD單元228將由TEMP暫存器502而來的ALU/JCC微運算指令114運算結果,寫入至配置於方塊624所述之儲存緩衝器134內,並且設定完成旗標404,一如圖5之所示。在一實施例中,向前進的匯流排(forwarding bus)將執行單元124的運算結果送回到執行單元124,以避免經由ROB128進行儲存運算結果所致之延遲。流程由方塊638推進至644。
於方塊632中,STA 224從圖3所示之位址來源欄位324來計算儲存記憶體位址,並檢視是否此儲存產生了例外。如果是,則STA 224於ROB欄位432設定例外旗標406。若否,則STA 224將所計算之位址儲存至方塊624所配置的緩衝器134中,並設定完成旗標404,如圖5所示。流程由方塊632推進至644。
於方塊644中,ROB 128偵測到LDSTA、ALU/JCC及STD114等微運算指令114是ROB 128內最舊的已完成微運算指令114。亦即,ROB 128偵測到LD/STA、ALU/JCC及STD等微運算指令欄位432是位於ROB 128的頂端(head),而它們的完成旗標412已被設定,並且在這種情況下,LDSTA微運算指令114的STA完成旗標416也已設定。流程前進至判斷方塊648。
於判斷方塊648,ROB 128判斷是否LD/STA、ALU/JCC及STD微運算指令114已造成例外條件,亦即,ROB 128將判斷配置給LD/STA、ALU/JCC及STD微運算指令114的ROB欄位432中的任一個例外旗標406是否被設定。若是,則流程至方塊664,否則到方塊654。
於判斷方塊654,ROB 128引退了LDALUS及JCC巨指令。在一實施例中,ROB128在同一時脈周期中除了引退巨指令104,同時還更新結構指令指標暫存器107。若ALU/JCC微運算指令114不被採用(亦即在方塊234所計算之立即的EFLAGS結果不滿足ALU/JCC微運算指令114所指定的條件),則結構性指令指標暫存器107被STD微運算指令114儲存於NSIP 408的值所更新(此值和LD/STA及ALU/JCC微運算指令114之儲存於NSIP 408之值相同)。否則,結構性指令指標暫存器107將以於方塊634所計算之目標位址做更新。在此實施例中,微處理器100如方塊634所述將包含一分支預示測器,因此其結構性指令指標暫存器107僅在分支方向或預測之目標位址不正確時被更新。此外,引退LdAluSt巨指令104時,也會以方塊634所產生的立即的EFLAGS結果更新結構性EFLAGS暫存器。流程前進至方塊658。
於方塊658,子系統記憶體132將儲存緩衝器134的值(在方塊638所寫入)寫到記憶體。流程終止於方塊658。
方塊664中,因為一例外已被偵測,ROB 128不以LD/STA、ALU/JCC及STA微運算指令114之運算結果更新微處理器100之結構狀態,而是引發於微碼單元112的一例外操作器。例外操作器致使擷取單元103清除(flush)微處理器100管道內所有比LDSATA微運算指令114更新(newer)的指令。例外操作器也設定圖1之控制暫存器105內的融合關閉位元(fusing off bit),以使擷取單元103分支回到第一個融合巨指令104,亦即x86 LdAluSt巨指令104,這將使指令轉譯器108去再次轉譯LdAluSt巨指令104及JCC巨指令104。但此時的指令轉譯器108將不會把兩個巨指令104融合,而是以習知方式轉譯成4個不同的微運算指令114。亦即,指令轉譯器指令轉譯器108將轉譯LdAluSt巨指令104成一個LDSTA微運算指令114、一ALU巨指令104和一STD巨指令104,而且將轉譯JCC巨指令104成JCC微運算指令114。因此,暫存器配置表116將對配置給4個微運算指令114之ROB 432欄位432的已融合旗標412進行設定。暫存器配置表116亦將以JCC巨指令104的記憶體位址填入傳統的LDSTA、ALU、STD微運算指令114之NSIP欄位408,並且以JCC巨指令104之後的下一順位巨指令104的記憶體位址填入JCC微運算指令114之NSIP欄位408。因此,當從兩個巨指令104轉譯成微運算指令114的操作再次發生時,可能由ROB 128來判斷兩個巨指令104的其中一個致使例外之產生,所以微處理器100可以適當的操作處理此例外情形。在一實施例中,例外操作器寫入控制暫存器105內的融合關閉位元,這樣將引發一脈衝至一指令轉譯器108,以使其不去融合它所遭遇到的下一巨指令104(即JCC巨指令104之後的LdAluSt巨指令104),但之後可能在任何時間內恢復融合指令的狀態。流程終止於方塊664。
本發明雖以較佳實例闡明如上,然其並非用以限定本發明精神與發明實體僅止於上述實施例。凡熟悉相関電腦技術者,當可輕易了解並利用各種變化來產生相同的功效。是以,在不脫離本發明之精神與範疇內所作之修改,均應包含在下述之申請專利範圍內。例如,軟體可使功能、製造、模組化,模擬,描繪及/或裝置的測試及在此所抽描述之方法。這些都可人使用一般的程式語言像C,C++,硬體描繪語言(HDL)包含Verilog HDL,VHDL等等,或其它的有效程式語言。可以用各種儲存媒體如磁帶、半導體、磁碟、光碟片(CD-ROM,DVD-ROM)有線網路、無線網路,或其它通訊媒體。在此所描繪的裝置和方法也可包含半導體智財權的核心,如微處理器核心(嵌入於HDL)及轉成硬體(積體電路產品)。此外,在此所描繪的裝置和方法也可包含硬體及軟體的結合。因此,本發明並不限於以上描繪之實施例,而是依據於以下的專利申請範圍及其等效。本發明也可實施於一般目的電腦的一微處理器。最後,本發明雖以較佳實例闡明如上,然其並非用以限定本發明精神與發明實體僅止於上述實施例。凡熟悉此項技術者,當可輕易了解並利用其它元件或方式來產生相同的功效。是以,在不脫離本發明之精神與範疇內所作之修改,均應包含在下述之申請專利範圍內。
100...微處理器
102...指令快取
103...擷取單元
104...X86巨指令
105...控制暫存器
108...指令轉譯器
112...微碼單元
114...微運算指令(micro-ops)
116...暫存器配置表
124...執行單元
128...重排緩衝器(ROB)
134...儲存緩衝器
132...子系統記憶體
138...數據快取
136...載入緩衝器
148...結構性暫存器
204...媒體A單元
208...媒體B單元
212...SINT單元
216...SINT/BR單元
220...LD單元
224...STA單元
228...STD單元
302...運算碼欄位
304...數據來源欄位
306...位址來源欄位
312...運算碼欄位
314...偏離欄位
332...運算碼欄位
334...來源A欄位
335...來源B欄位
336...目的欄位
338...偏離欄位
322...運算碼欄位
324...位址來源欄位
344...來源欄位
342...運算碼欄位
402...結果欄位
404...已完成旗標
406...例外旗標
408...下一順序指令指標欄位(NSIP)
412...已融合旗標
414...LD/STA旗標
416...STA完成旗標
502...TEMP暫存器
604,608,614,618,624,632,628,634,638,644,648,654,658,664...圖6流程圖步驟
圖1描繪依據本發明的微處理器之方塊圖。
圖2說明依據本發明的一些個執行單元之方塊圖。
圖3依據本發明的功能方塊圖,其描繪x86 LdAluSt型巨指令和x86 JCC條件跳躍巨指令及其被圖1中的指令轉譯器所融合成為LDSTA,ALU/JCC及STD微運算指令的功能方塊圖。
圖4的功能方塊圖描繪圖1中的ROB的一欄位。
圖5功能方塊圖,為圖1的微處理器操作執行指令融合及轉譯結果之微運算指令的執行。
圖6示一流程圖,為圖1的微處理器操作執行指令融合及轉譯結果之微運算指令的執行。
100...微處理器
102...指令快取
103...擷取單元
104...X86巨指令
105...控制暫存器
108...指令轉譯器
112...微碼單元
114...微運算指令(micro-ops)
116...暫存器配置表
124...執行單元
128...重排緩衝器(ROB)
134...儲存緩衝器
132...子系統記憶體
138...數據快取
148...結構性暫存器
136...載入緩衝器
Claims (22)
- 一種微處理器用以接收該微處理器的指令集架構之第一及第二程式相鄰巨指令,其中該第一巨指令命令該微處理器從該微處理器記憶體的一位置去載入一運算元,以所載入的運算元去執行一算術/邏輯運算以產生一運算結果,回存該運算結果到該記憶體位置,該微處理器依據該運算結果去更新微處理器的條件碼,其中若該更新條件滿足該第二巨指令所指定的條件,該第二巨指令命令微處理器跳躍至一目標位址,否則執行該下一個順位指令,該微處理器至少包含:多個執行單元;及一指令轉譯器,用以同時轉譯該第一及第二程式相鄰巨指令成第一、第二、和第三運算式以供該些執行單元執行;其中該第一微運算指令命令該些執行單元計算該記憶體位置之位址,並從該記憶體位置之位址去載入該運算元至該微處理器;其中該第二微運算指令命令該些執行單元執行該算術/邏輯運算,用所載入運算元產生該運算結果,並據以去更新微處理器之該條件碼,若已更新的條件碼滿足了該條件則跳至該目標位址,否則執行該下一順位指令;其中上述之第三微運算指令命令該些執行單元去回存該運算結果於該記憶體位置。
- 如申請專利範圍第1項所述之微處理器,其中上述之微處理器之指令集架構大致符合x86架構。
- 如申請專利範圍第1項所述之微處理器,其中上述之該些執行單元包含:一第一執行單元,因應於所接收之第一微運算指令用以計算該記憶體位置之位址,並使該待載入之運算元從該記憶體位置之位址載入至該微處理器之一暫存器:一第二執行單元,因應於所接收之第二微運算指令,用以使用該暫存器內之該運算元去進行該算術/邏輯運算以產生該運算結果,並依據該運算結果去更新條件碼,若已更新的條件碼滿足了該條件則跳至該目標位址,否則執行該下一順位指令;及一第三執行單元,因應於所接收之第三微運算指令,用以回存該運算結果於該記憶體位置。
- 如申請專利範圍第3項所述之微處理器,其中上述之第二執行單元,使用該暫存器內之運算元去執行該算術/邏輯運算以產生該運算結果,並據以去更新該條件碼,若已更新的該條件碼滿足了該條件則跳至該目標位址,件,否則在該微處理器之一時脈周期內去執行該下一順位指令。
- 如申請專利範圍第3項所述之微處理器,更包含:一儲存緩衝器,用以在等待寫入記憶體時保持該運算結果;其中該些執行單元更包含:一第四執行單元,因應於該第一微運算指令(micro-ops),用以計算該記憶體位置之位址,並寫入所計算之記憶體位置之位址至該儲存緩衝器。
- 如申請專利範圍第5項所述之微處理器,更包含:一重排緩衝器,其中每一欄位都伴隨不同的微運算指令(micro-ops)並包含一由該第一執行單元所設定之第一旗標,以指示該第一微運算指令(micro-ops)的部分已完成,及一由該第四執行單元所設定之第二旗標,以指示該第一微運算指令(micro-ops)的部分已完成;及一引退單元,直到該第一旗標及該第二旗標已被設定時,寫入所更新的微處理器之架構狀態。
- 如申請專利範圍第3項所述之微處理器,其中上述之第二執行單元更用以計算該目標位址。
- 申請專利範圍第1項所述之微處理器,其中上述之第二微運算指令(micro-ops)更用以命令該些執行單元計算該目標位址。
- 如申請專利範圍第1項所述之微處理器,其中若上述一或一者以上之第一、第二、第三微運算指令(micro-ops)造成例外條件時,該微處理器使該指令轉譯器去重新轉譯該第一及第二程式相鄰巨指令成為多於三個微運算指令(micro-ops),並使該些執行單元去執行該多於三個之微運算指令;其中該多於三個之微運算指令中的第一個命令該執行單元使用該載入之運算元去執行該算術/邏輯運算以產生該運算結果,並據以去更新該條件碼;其中該多於三個之微運算指令中的第二個命令該些執行單元在已更新的條件碼滿足該條件時跳躍至該目標位址,否則執行該下一順位指令。
- 如申請專利範圍第9項所述之微處理器,更包含:一重排緩衝器,其每一欄位都伴隨不同的微運算指令(micro-ops),並有一欄位保有一下一順位指令指標;其中因應於該指令轉譯器同時轉譯該第一及第二程式相鄰巨指令成第一、第二及第三個微運算指令(micro-ops),該微處理器以緊隨該第二巨指令後之一巨指令的記憶體位址,填入該第一、第二及第三個微運算指令的相關欄位中;其中因應於該指令轉譯器再轉譯該第一及第二程式相鄰巨指令成為多於三個微運算指令(micro-ops),該微處理器以該第一和第二巨指令中,從該處微運算指令(micro-ops)被轉譯一個記憶體位址,填入至該多於三個微運算指令的每一微運算指令的相關欄位。
- 如申請專利範圍第10項所述之微處理器,更包含:一微處理器的結構指令指標器;及一引退單元,其中該第一、第二及第三個微運算指令中若沒有一個造成例外條件,並且若更新條件碼的條件沒滿足的話,該引退單元在同一個時脈周期下同時引退該第一及第二巨指令,並以緊隨該第二巨指令後之該巨指令的記憶體位址去更新該結構性指令指標暫存器。
- 如申請專利範圍第9項所述之微處理器,更包含:一重排緩衝器,其中每一欄位都與不同的微運算指令(micro-ops)相關並具有一旗標;其中因應於該指令轉譯器同時轉譯該第一及第二程式相鄰巨指令成第一、第二及第三個微運算指令(micro-ops),該微處理器對每一該第一、第二及第三個微運算指令的相關欄位之旗標設定一第一預設值;其中因應於該指令轉譯器再轉譯該第一及第二程式相鄰巨指令,該微處理器對每一該多於三個微運算指令的該些相關欄位的旗標設定一第二預設值,該第二預設值不同於該第一預設值。
- 一種微處理器處理該微處理器的指令集架構之第一及第二程式相鄰巨指令的方法,其中上述第一巨指令命令該微處理器從該微處理器記憶體的一位置去載入一運算元,以所載入的運算元執行一算術/邏輯運算,以產生一運算結果,回存該運算結果到該記憶體位置,該微處理器依據該運算結果去更新微處理器的條件碼,其中若該更新條件滿足該第二巨指令所指定的條件則上述之第二巨指令命令微處理器跳至一目標位址,否則執行該下一個順位指定,該方法至少包含:同時轉譯該第一及第二程式相鄰巨指令成第一、第二、和第三運算式以供微處理器之一些執行單元執行;其中該第一微運算指令命令該些執行單元計算該記憶體位置之位址,並從該記憶體位置之位址去載入該運算元至該微處理器;其中該第二微運算指令命令該些執行單元用所載入的運算元執行該算術/邏輯運算以產生該運算結果,並據以去更新微處理器之條件碼,若已更新的條件碼滿足該條件則跳至該若目標位址,否則執行該下一順位指令;其中上述之第三微運算指令命令該執行單元回存該運算結果於該記憶體位置。
- 如申請專利範圍第13項所述之方法,其中上述之微處理器之指令集架構大致符合×86架構。
- 如申請專利範圍第13項所述之方法,其中上述之第一微運算指令(micro-ops)更令該些執行單元去寫入所計算之記憶體位置之位址至該微處理器之一儲存緩衝器,該微處理器之儲存緩衝器是用以在寫入至記憶體時能保有該運算結果。
- 如申請專利範圍第15項所述之方法,其中上述之微處理器也包含一重排緩衝器,其中每一欄位都與不同的微運算指令(micro-ops)相關,並具有一可設定之第一旗標,由該些執行單元的一第一執行單元所設定,以指示該第一微運算指令(micro-ops)的部分已完成,以及一可設定之第二旗標由該些執行單元的第二個所設定,以指示該第一微運算指令(micro-ops)的部分已完成,該方法更包含:直到該第一旗標及該第二旗標已被設定時,寫入所更新的微處理器之架構狀態。
- 如申請專利範圍第13項所述之方法,其中上述之第二執行單元更用以計算該目標位址。
- 申請專利範圍第13項所述之方法,更包含:若該第一、第二、第三微運算指令(micro-ops)之一者或多者造成一例外條件,則重轉譯該第一及第二程式相鄰巨指令成為多於三個之微運算指令(micro-ops),並使該些執行單元去執行該多於三個之微運算指令;其中該多於三個之微運算指令中的第一個命令該執行單元使用該載入之運算元去執行該算術/邏輯運算以產生該運算結果,並據以去更新該條件碼;其中該多於三個之微運算指令中的第二個命令該些執行單元在已更新的條件碼滿足該條件時跳躍至該目標位址,否則執行該下一順位指令。
- 如申請專利範圍第13項所述之方法,其中上述之微處理器也包含一重排緩衝器,其中每一欄位都與不同的微運算指令(micro-ops)相關並具有一欄位,用以保有一下一順位的指令指標,該方法更包含:因應於同時轉譯該第一及第二程式相鄰巨指令成為該第一、第二、和第三運算式的步驟,以緊隨該第二巨指令後之該巨指令的記憶體位址,填入相關於該第一、第二和第三微運算指令(micro-ops)之該欄位;及因應於該再轉譯該第一及第二程式相鄰巨指令成為該多於三個之微運算指令的步驟,該微處理器以該第一和第二巨指令中,從該處微運算指令(micro-ops)被轉譯一個記憶體位址,填入至該多於三個微運算指令的每一微運算指令的相關欄位。
- 如申請專利範圍第19項所述之方法,其中上述之微處理器包含一結構指令指標器及一引退單元,該方法包含:在同一個時脈周期下同時引對該第一及第二巨指令,並以緊隨該第二巨指令後之該巨指令的記憶體位址去更新該結構性指令指標暫存器,若該第一及第二巨指令沒有一個造成例外條件,並且若更新條件碼的條件沒滿足的話。
- 一種計算機程式產品,記錄於至少一種計算機可讀的媒體內以供電腦使用,該計算機程式產品至少包含:一計算機可讀的程式碼,寫錄於該媒體內,以供指定一微處理器去接收該微處理器的指令集架構之第一及第二程式相鄰巨指令,其中該第一巨指令命令該微處理器從該微處理器記憶體的一位置去載入一運算元,以所載入的該運算元執行一算術/邏輯運算,以產生一運算結果,回存該運算結果到該記憶體位置,該微處理器依據該運算結果去更新微處理器的條件碼,其中該第二巨指令在該更新條件滿足該第二巨指令所指定的條件時命令微處理器跳躍至一目標位址,否則執行該下一個順位指定,該計算機可讀的程式碼至少包含:第一程式碼以指定一指令轉譯器,用以同時轉譯該第一及第二程式相鄰巨指令成第一、第二、和第三運算式以供該些執行單元執行;其中該第一微運算指令命令該些執行單元計算該記憶體位置之位址,並從該記憶體位置之位址去載入運算元至該微處理器;其中該第二微運算指令命令該些執行單元執行該算術/邏輯運算,用所載入運算載入的運算元產生該運算結果,並據以去更新微處理器之條件碼,若已更新的條件碼滿足了該條件則跳至該目標位址,否則執行該下一順位指令;其中該第三微運算指令命令執行單元回存該運算結果於該記憶體位置。
- 如申請專利範圍第21項所述之計算機程式產品,其中上述之計算機可讀的媒體是選自光碟、磁帶或磁碟、或電子儲存媒體有線網路、無線網路,或其它通訊媒體。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US32852410P | 2010-04-27 | 2010-04-27 | |
US13/034,808 US8856496B2 (en) | 2010-04-27 | 2011-02-25 | Microprocessor that fuses load-alu-store and JCC macroinstructions |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201203106A TW201203106A (en) | 2012-01-16 |
TWI450189B true TWI450189B (zh) | 2014-08-21 |
Family
ID=44816779
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100112726A TWI450189B (zh) | 2010-04-27 | 2011-04-12 | 微處理器融合載入算術/邏輯運算及跳躍巨指令 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8856496B2 (zh) |
TW (1) | TWI450189B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9195466B2 (en) * | 2012-05-16 | 2015-11-24 | Qualcomm Incorporated | Fusing conditional write instructions having opposite conditions in instruction processing circuits, and related processor systems, methods, and computer-readable media |
US9477476B2 (en) * | 2012-11-27 | 2016-10-25 | Qualcomm Incorporated | Fusing immediate value, write-based instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media |
US9329936B2 (en) | 2012-12-31 | 2016-05-03 | Intel Corporation | Redundant execution for reliability in a super FMA ALU |
US9483266B2 (en) * | 2013-03-15 | 2016-11-01 | Intel Corporation | Fusible instructions and logic to provide OR-test and AND-test functionality using multiple test sources |
US9886277B2 (en) * | 2013-03-15 | 2018-02-06 | Intel Corporation | Methods and apparatus for fusing instructions to provide OR-test and AND-test functionality on multiple test sources |
US20160179542A1 (en) * | 2014-12-23 | 2016-06-23 | Patrick P. Lai | Instruction and logic to perform a fused single cycle increment-compare-jump |
US10324724B2 (en) * | 2015-12-16 | 2019-06-18 | Intel Corporation | Hardware apparatuses and methods to fuse instructions |
US10387988B2 (en) | 2016-02-26 | 2019-08-20 | Google Llc | Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform |
US10275217B2 (en) | 2017-03-14 | 2019-04-30 | Samsung Electronics Co., Ltd. | Memory load and arithmetic load unit (ALU) fusing |
US11269647B2 (en) * | 2017-12-18 | 2022-03-08 | International Business Machines Corporation | Finish status reporting for a simultaneous multithreading processor using an instruction completion table |
US11144324B2 (en) * | 2019-09-27 | 2021-10-12 | Advanced Micro Devices, Inc. | Retire queue compression |
US11061677B1 (en) * | 2020-05-29 | 2021-07-13 | Microsoft Technology Licensing, Llc | Recovering register mapping state of a flushed instruction employing a snapshot of another register mapping state and traversing reorder buffer (ROB) entries in a processor |
US11163571B1 (en) | 2020-07-29 | 2021-11-02 | International Business Machines Corporation | Fusion to enhance early address generation of load instructions in a microprocessor |
US12008369B1 (en) * | 2021-08-31 | 2024-06-11 | Apple Inc. | Load instruction fusion |
US20240004665A1 (en) * | 2022-06-30 | 2024-01-04 | Advanced Micro Devices, Inc. | Apparatus, system, and method for making efficient picks of micro-operations for execution |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090204800A1 (en) * | 2008-02-08 | 2009-08-13 | Via Technologies, Inc. | Microprocessor with microarchitecture for efficiently executing read/modify/write memory operand instructions |
US20090254735A1 (en) * | 2008-04-03 | 2009-10-08 | Via Technologies, Inc. | Merge microinstruction for minimizing source dependencies in out-of-order execution microprocessor with variable data size macroarchitecture |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69412504T2 (de) | 1993-10-12 | 1999-03-25 | Samsung Electronics Co. Ltd., Suwon, Kyungki | Hardware-unterstützter zählungsänderungsbefehl |
US6338136B1 (en) * | 1999-05-18 | 2002-01-08 | Ip-First, Llc | Pairing of load-ALU-store with conditional branch |
US6370625B1 (en) | 1999-12-29 | 2002-04-09 | Intel Corporation | Method and apparatus for lock synchronization in a microprocessor system |
US6647489B1 (en) | 2000-06-08 | 2003-11-11 | Ip-First, Llc | Compare branch instruction pairing within a single integer pipeline |
US6675376B2 (en) | 2000-12-29 | 2004-01-06 | Intel Corporation | System and method for fusing instructions |
US7051190B2 (en) | 2002-06-25 | 2006-05-23 | Intel Corporation | Intra-instruction fusion |
US6920546B2 (en) | 2002-08-13 | 2005-07-19 | Intel Corporation | Fusion of processor micro-operations |
US7529914B2 (en) | 2004-06-30 | 2009-05-05 | Intel Corporation | Method and apparatus for speculative execution of uncontended lock instructions |
US8082430B2 (en) | 2005-08-09 | 2011-12-20 | Intel Corporation | Representing a plurality of instructions with a fewer number of micro-operations |
US20090164758A1 (en) | 2007-12-20 | 2009-06-25 | Haertel Michael J | System and Method for Performing Locked Operations |
US9690591B2 (en) | 2008-10-30 | 2017-06-27 | Intel Corporation | System and method for fusing instructions queued during a time window defined by a delay counter |
-
2011
- 2011-02-25 US US13/034,808 patent/US8856496B2/en active Active
- 2011-04-12 TW TW100112726A patent/TWI450189B/zh active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090204800A1 (en) * | 2008-02-08 | 2009-08-13 | Via Technologies, Inc. | Microprocessor with microarchitecture for efficiently executing read/modify/write memory operand instructions |
US20090254735A1 (en) * | 2008-04-03 | 2009-10-08 | Via Technologies, Inc. | Merge microinstruction for minimizing source dependencies in out-of-order execution microprocessor with variable data size macroarchitecture |
Also Published As
Publication number | Publication date |
---|---|
US20110264897A1 (en) | 2011-10-27 |
US8856496B2 (en) | 2014-10-07 |
TW201203106A (en) | 2012-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI450189B (zh) | 微處理器融合載入算術/邏輯運算及跳躍巨指令 | |
TWI450190B (zh) | 微處理器融合搬運/算術邏輯運算/條件跳躍指令 | |
TWI470548B (zh) | 具有條件指令之微處理器、其處理方法及電腦程式產品 | |
TWI470546B (zh) | 微處理器、管線式微處理器、快速執行條件分支指令之方法、以及解析第一或第二類別條件分支指令之方法 | |
TWI514265B (zh) | 將條件載入/儲存指令轉譯為數量可變的微指令之微處理器 | |
TWI423122B (zh) | 微處理器以及指令執行方法 | |
TWI450188B (zh) | 具有條件指令之微處理器、其處理方法及電腦程式產品 | |
EP2430526B1 (en) | Instruction cracking based on machine state | |
TWI416407B (zh) | 執行複數快速條件分支指令的方法以及相關之微處理器以及電腦程式產品 | |
US20160055004A1 (en) | Method and apparatus for non-speculative fetch and execution of control-dependent blocks | |
CN107832083B (zh) | 具有条件指令的微处理器及其处理方法 | |
TW201445441A (zh) | 融合if-then指令之微處理器 | |
US20100306506A1 (en) | Microprocessor with selective out-of-order branch execution | |
CN102163139B (zh) | 微处理器融合载入算术/逻辑运算及跳跃宏指令 | |
EP1296228B1 (en) | Instruction Issue and retirement in processor having mismatched pipeline depths | |
CN102193775B (zh) | 微处理器融合搬运/算术逻辑运算/条件跳跃指令 |