TWI493450B - 用於在微碼呼叫程式與微碼次常式之間傳遞別名參數的設備、方法、物件及系統 - Google Patents
用於在微碼呼叫程式與微碼次常式之間傳遞別名參數的設備、方法、物件及系統 Download PDFInfo
- Publication number
- TWI493450B TWI493450B TW100133945A TW100133945A TWI493450B TW I493450 B TWI493450 B TW I493450B TW 100133945 A TW100133945 A TW 100133945A TW 100133945 A TW100133945 A TW 100133945A TW I493450 B TWI493450 B TW I493450B
- Authority
- TW
- Taiwan
- Prior art keywords
- microcode
- location
- microinstruction
- alias
- parameter
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 57
- 230000008569 process Effects 0.000 claims description 22
- 239000000463 material Substances 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 11
- 238000004519 manufacturing process Methods 0.000 claims 3
- 230000000977 initiatory effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 26
- 238000012546 transfer Methods 0.000 description 26
- 230000003068 static effect Effects 0.000 description 22
- 238000012545 processing Methods 0.000 description 12
- 230000008901 benefit Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000000872 buffer Substances 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008707 rearrangement Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- -1 for example Substances 0.000 description 1
- 239000000696 magnetic material Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000013519 translation 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/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/22—Microcontrol or microprogram arrangements
- G06F9/226—Microinstruction function, e.g. input/output microinstruction; diagnostic microinstruction; microinstruction format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
- G06F9/26—Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
-
- 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/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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Description
各種不同實施例有關於處理指令之方法、設備、及系統。尤其,各種不同實施例有關於在微碼呼叫程式及微碼次常式之間傳遞參數的方法、設備、及系統。
某些處理器,及其他指令執行設備,傳統上實行較高階機器指令為較低階微指令。在一些情況中,微指令或微碼可被配置或邏輯分成微碼次常式及微碼呼叫程式。例如,微碼呼叫程式可呼叫微碼次常式以在共享的微碼次常式內使某些操作得以被履行。在對微碼次常式的呼叫中,及在自微碼次常式的返回中,典型於微碼呼叫程式與微碼次常式之間傳遞或傳輸參數。微碼次常式的使用可提供各種潛在的優點,諸如,例如,減少需儲存之微碼量的能力。然而,微碼次常式之用途及益處受限於某些態樣。
於下說明中,提出各種特定細節,諸如特定處理器組件及組態、特定暫存器大小、特定類型之參數等。然而,了解到可在無這些特定細節下施行本發明之實施例。在其他例子中,並未詳細顯示結構及技術以不混淆此說明之了解。
第1圖為具有微碼別名參數傳遞邏輯114之一實施例的處理器100之一實施例的區塊圖。處理器可為任何各種複雜指令集計算(CISC)處理器、各種減少指令集計算(RISC)處理器、各種極長指令(VLIW)處理器、上述各種的混合、或其他類型的處理器。
在一或更多實施例中,處理器可為通用處理器,諸如,例如,由美國加州聖塔克拉克(Santa Clara)的Intel Corporation所製造之通用處理器之一,雖此非必須。可得自Intel Corporation之適合的通用處理器之少數代表性範例包括,但不限於,IntelAtomTM
處理器、IntelCoreTM
處理器、IntelCoreTM
2處理器、IntelPentium處理器、及IntelCeleron處理器。
替代地,處理器可為特殊目的處理器。適合的特殊目的處理器之少數代表性範例包括,但不限於,網路處理器、通訊處理器、加密處理器、圖形處理器、共處理器、嵌入式處理器、及數位信號(DSP)處理器,僅舉例而言。這些處理器亦可基於CISC、RISC、VLIW、上述之混合、或其他類型的處理器。在又其他實施例中,處理器或指令處理設備可代表控制器(如微控制器),或能夠處理微碼或微指令之其他類型的邏輯電路。
處理器包括解碼器104。解碼器可接收並解碼較高階機器指令或微指令102。解碼器可產生並輸出基於該些微指令或自該些微指令導出之一或更多較低階微指令106A。從解碼器輸出之微指令可代表微操作(micro-operations、micro-ops、μops)、微碼進入點、或其他微指令。微指令可透過較低階(例如電路階級或硬體級)操作來實行較高階或機器階級指令之操作。處理器或設備可具有回應於微指令之特定電路。
可使用各種不同類型的機制來實行解碼器。適合類型的機制之範例包括,但不限於,微碼唯讀記憶體(ROM)、查詢表、硬體實行例、可編程邏輯陣列(PLA)等等。在一些情況中,解碼器可代表,或被取代或補充,指令仿真器、指令轉譯器、指令變種器(morpher)、指令解譯器、或其他指令轉換邏輯。各種不同類型的指令仿真器、指令變種器、指令轉譯器等等為此技藝中已知。可在硬體(例如電路)、韌體、軟體、或上述組合中實行解碼器或其他指令轉換邏輯。
再參照回第1圖,處理器亦包括微碼貯存108。微碼貯存儲存微碼或微指令之群組或序列。解碼器可提供某些指令至微碼貯存,並且微碼貯存可進一步解碼這些指令成為微指令106B。又如另外顯示,在一或更多實施例中,微碼貯存中之微碼可包括或可被邏輯分成,微碼呼叫程式110及微碼次常式112。微碼呼叫程式可呼叫微碼次常式以在微碼次常式內使某些操作得以被履行。微碼次常式可履行該些操作並返回至微碼呼叫程式。替代地,微碼次常式可代表由多個呼叫程式所共享之一共享的微碼常式,但不一定得返回至微碼呼叫程式。
使用微碼呼叫程式及次常式之一項潛在優點在於其可幫助減少微碼的整體大小。例如,可將操作(例如共同履行之操作)的微碼置於共享的次常式中,每次需要履行那些操作時可呼叫該共享的次常式。這可幫助避免在需履行與微碼次常式關聯的操作的每一位置重複或複製這些操作的微碼。減少微碼量可幫助減少儲存微碼所需之記憶體或貯存量,其可潛在幫助減少處理器之大小、成本、及電力消耗。
使用微碼次常式之另一項潛在優點為減少需經除錯及/或驗證之碼量。例如,微碼次常式之微碼可能僅需除錯及驗證一次,而若是微碼次常式不存在的話,可能需除錯及驗證微碼之多個複本,例如在需履行與微碼次常式關聯的操作的每一位置一次。減少需經除錯及驗證之碼量亦可幫助減少提供微碼之時間及成本。
然而,傳統上,微碼次常式之用途及益處已受限。一主要因素在於在呼叫中,以及在一些情況中,若有返回的話,在返回中,缺少在微碼呼叫程式與微碼次常式之間彈性傳遞參數的方式。例如,微碼次常式可預期參數(例如將對其加以操作之輸入值)在固定或靜態位置(例如,分配給那個參數之固定或靜態暫存器)中,且微碼呼叫程式(或那個微碼次常式之所有微碼呼叫程式)可能被迫使用那個固定或靜態位置。微碼呼叫程式可能需要確保參數實際上位在那個固定或靜態位置中。例如,若微碼次常式需要在第一固定暫存器(例如暫存器1)中有第一輸入參數及第二固定暫存器(例如暫存器2)中有第二輸入參數且需在第三固定暫存器(例如暫存器3)中儲存結果,則微碼次常式之每一微碼呼叫程式可能需要確保第一輸入參數係在第一固定暫存器(暫存器1)中;第二輸入參數係在第二固定暫存器(暫存器2)中;且需從第三固定暫存器(暫存器3)取得結果。
當輸入參數一開始不位在微碼次常式所預期之固定或靜態位置中時,微碼呼叫程式可能需要在呼叫微碼次常式前將輸入參數從初始位置重排到預期的固定或靜態位置。這會涉及履行額外的重排操作,例如,從初始位置移動或複製參數到最終位置。這種額外重排操作傾向於減少微碼性能及/或增加微碼的總量。此外,有時微碼呼叫程式要重排暫存器中的值是不可能或不實際的,例如,若微碼次常式所需之固定或靜態位置中的值卻被另一指令要求且無法藉由移動或複製值到那個暫存器來消耗(consume),在這情況中利用微碼次常式是不可能或不實際的。
再次參照第1圖,在一或更多實施例中,處理器可具有微碼別名參數傳遞邏輯114。微碼別名參數傳遞邏輯可邏輯上設置或耦合於解碼器及執行邏輯之間。微碼別名參數傳遞邏輯可使用別名來允許在微碼呼叫程式與微碼次常式之間彈性地傳遞或傳輸參數。例如,在一或更多實施例中,微碼別名參數傳遞邏輯可允許微碼呼叫程式彈性指定在微碼別名位置中之參數的暫存器或其他位置,使得參數不需位在微碼次常式所預期之固定或靜態暫存器中。可在硬體(例如電路)、軟體、韌體、或上述的組合中實行微碼別名參數傳遞邏輯。在一態樣中,微碼別名參數傳遞邏輯包括至少一些電路。該電路可為回應於微指令之特定電路。
處理器亦包括複數暫存器116及執行邏輯118。執行邏輯可包括一或更多執行核心,各具有一或更多執行單元。在一態樣中,執行單元可包括至少一些硬體(例如電路)。微碼貯存之微指令可由執行邏輯加以執行,其中潛在自暫存器存取來源資料,並潛在儲存結果至暫存器中。在虛線中顯示解碼器、執行邏輯、及暫存器,以指示其並非為本發明之實施例所需的組件。
為了避免混淆說明,已顯示並敘述相對簡單的處理器。應可認知到處理器可隨意包括一或更多其他熟知的組件,諸如,例如,一或更多的指令提取邏輯、分支預測邏輯、指令與資料快取、指令與資料轉譯旁看緩衝器、預取緩衝器、微指令佇列、微指令序列、匯流排介面單元、二階或更高階快取、指令排程邏輯、退出(retire)邏輯、暫存器重命名邏輯等等,及上述的各種組合。有此技藝中已知的這種組件之眾多不同可能的組合及組態,且本發明之範疇不限於任何這種組合或組態。此外,這些組件,若有的話,可為傳統或也許有對熟悉此技藝人士基於本揭露為顯見之些許調適的實值上傳統的。了解在此之實施例並不需要這些組件的進一步之說明,雖然,若希望的話,可在公開文獻中輕易找到進一步的說明。
第2圖為在微碼呼叫程式與微碼次常式之間傳遞參數的方法220之一實施例的區塊流程圖。在一或更多實施例中,可藉由處理器或其他指令處理設備及/或在其之內履行該方法。例如,在一或更多實施例中,可藉由第1圖的處理器100或類似者及/或在其之內履行該方法。替代地,可藉由與第1圖的處理器完全不同的處理器或其他指令處理設備及/或在其之內履行該方法220。
該方法包括,在區塊221,微碼次常式之微碼呼叫程式指定在由微碼次常式之微指令所指示之微碼別名位置中之參數的位置。舉例來說,在一或更多實施例中,微碼呼叫程式可具有微指令或流程標記的至少一者來指定參數的位置,例如,藉由在微碼別名位置中寫入代表儲存參數之特定暫存器的值。舉例來說,在一或更多實施例中,參數的位置可為來源資料的位置或即將儲存結果的位置。
再次參照第2圖,該方法亦包括,在區塊222,回應於微碼次常式之微指令,判定並輸出由微碼次常式之微指令所指示之微碼別名位置中所指定之參數的位置。在一或更多實施例中,微碼次常式之微指令可指示微碼別名位置為針對那個特定微指令及針對那個特定參數之固定或靜態微碼別名位置。在一或更多實施例中,微碼呼叫程式可動態映射或關聯那個特定參數之彈性位置(例如,為若干潛在可接受位置之任一者的位置)與微指令所指向或指示之固定或靜態微碼別名位置。
這可提供在微碼呼叫程式與微碼次常式之間傳遞參數的一種彈性方式。取代微碼呼叫程式必須確保參數實際位在微碼次常式之微指令所預期的固定或靜態暫存器中,並若並非初始位在那個固定或靜態暫存器的話移動或複製參數,微碼呼叫程式反而可動態指定在由微指令所指向或指示之固定或靜態微碼別名位置中之參數的彈性位置。有利地,這有助於避免移動、複製、或是重排參數的位置之需求,其藉由排除操作而有助於改善性能及/或有助於減少微碼的總量,其可潛在減少處理器的成本、大小、及電力消耗。
第3圖為微碼別名參數傳遞邏輯314之一實施例的區塊圖。在一或更多實施例中,邏輯314可包括在第1圖之處理器100,或類似者,或完全不同的指令處理設備中。在一或更多實施例中,邏輯314可履行第2圖之方法或類似者。然而,應了解到邏輯314可履行與第2圖所示那些不同之操作及方法。此外,可藉由與邏輯314相同,或類似,或完全不同的微碼別名參數傳遞邏輯來履行針對第2圖於上所述之操作或方法。
再次參照第3圖,微碼別名參數傳遞邏輯包括微碼貯存308。微碼貯存可代表可操作以儲存或儲存微碼之記憶體或儲存裝置。可以各種不同類型的記憶體或儲存裝置實行微碼貯存。適合類型的記憶體或儲存裝置之範例包括,但不限於,唯讀記憶體(ROM)、可編程邏輯陣列(PLA)、靜態隨機存取記憶體(SRAM)、及快閃記憶體。在一或更多實施例中,可以ROM實行微碼貯存,本發明之範疇不限於此態樣。可從微碼貯存存取微碼之微指令,例如,藉由微序列化器(未圖示),其可產生位址以步進通過微碼貯存中之微碼。
如第3圖中所示,微碼貯存可操作成儲存或儲存微碼呼叫程式310及微碼次常式312。將微碼呼叫程式廣泛解釋為微碼之一部分,其可操作成呼叫微碼次常式。例如,微碼呼叫程式可具有微指令、流程標記、或可操作成呼叫微碼次常式的微碼之其他邏輯或部分。微碼呼叫程式可包括不光是呼叫微碼次常式的微指令或流程標記。將微碼次常式廣泛解釋為微碼之一部分,其可操作成被微碼呼叫程式所呼叫。在實施例中,微碼次常式可返回至微碼呼叫程式。替代地,在另一實施例中,微碼次常式可代表由多個呼叫程式所共享的一共享微碼次常式,但可不非得返回至微碼呼叫程式。呼叫程式及/或次常式之微碼可包括將在處理器之具體或特定電路或其他邏輯(例如,與硬體及/或韌體結合之軟體)上執行的一或更多微指令。欲簡化圖示及說明,僅顯示單一微碼呼叫程式及單一微碼次常式,雖可應認知到各者可有複數個,包括相同共享微碼次常式之潛在多個微碼呼叫程式。
微碼別名參數傳遞邏輯亦包括複數微碼別名位置330。在所示的實施例中,微碼別名位置包括第一微碼別名位置330-1,以及第N個微碼別名位置330-N,其中N代表正整數,典型從二到約十的範圍中。在一特定示範實施例中,微碼別名位置的數量(N)可為四,雖本發明之範疇不限於此態樣。替代地,可僅有一個微碼別名位置。
在一或更多實施例中,每一個微碼別名位置330可操作成儲存或代表一值(例如整數)。在各種示範實施例中,微碼別名位置可為相同暫存器中的不同位置、不同暫存器中之不同位置、不同離散專用儲存位置、表中的不同位置、資料結構中的不同位置、或上述之組合,僅舉若干例子而言。在一特定示範實施例中,微碼別名位置可代表一共同微碼別名暫存器中的不同位置,雖本發明之範疇不限於此態樣。
微碼次常式包括一給定的微指令326。給定的微指令326可為各種不同類型,諸如加法微指令、互斥或微指令、載入微指令等。微指令具有或包括複數之微碼別名位置的指示328。在圖示的特定範例中,微指令326的指示328指向或指示第一微碼別名位置330-1,雖此僅為此範例之說明用,且非必須。該指示可為微指令隱含的,或該指示可由微指令明確指出(例如,透過位元值的欄位)。在一或更多實施例中,微碼別名位置的指示328可針對特定給定微指令326針對特定相應參數為固定或靜態的。換言之,微指令326可能需要或預期在由指示328所指向之固定或靜態微碼別名位置中找出特定相應參數的位置。同樣地,多個微指令,或在微碼次常式中之潛在每一個微指令,可指示其中預期參數位置之微碼別名位置。
微碼呼叫程式310可操作成寫入或是指定由微指令326的指示328所指向或指示之微碼別名位置(例如,在此範例中,微碼別名位置1330-1)中的特定相應參數之位置。在一或更多實施例中,微碼呼叫程式可包括專用微指令(例如,寫入微指令)、流程標記、附接至微指令之流程標記、或微碼呼叫程式之另一部分,以寫入或是指定微碼別名位置中之參數的位置。指定位置之流程標記或微指令不需為呼叫微碼次常式之相同的流程標記或微指令。通常在微碼次常式存取前,應在微碼別名位置中指定位置。然而,可在實際微指令或流程標記履行對微碼次常式的呼叫之前,例如,在呼叫微指令前從若干到許多微指令之任何地方,於微碼別名位置中指定位置。或者可在呼叫微指令本身中指定位置。處理器可具有電路或其他硬體以履行回應於微指令或流程標記之寫入。在一或更多實施例中,參數的位置可為指示其中儲存參數之暫存器或其他儲存位置的值。例如,在一或更多實施例中,在微碼別名位置中所指定的參數之位置可為整數,其中整數代表指定其中儲存參數之一特定暫存器之暫存器編號。儲存參數之暫存器可為整數暫存器、浮點暫存器、段暫存器、或控制暫存器,例如,取決於履行之操作的上下文及/或取決於微指令。
在一或更多實施例中,在微碼呼叫程式指定微碼別名位置(在此範例中,微碼別名位置1330-1)中之參數位置前,可預先知道或了解到微指令326包括針對相應參數的那個特定微碼別名位置(在此範例中,微碼別名位置1330-1)之指示328。例如,微編程器可能知道微指令326包括相應於特定參數之微碼別名位置(在此範例中,微碼別名位置1330-1)之指示328,且微編程器可編程微碼呼叫程式以寫入特定參數的位置到此所指示之微碼別名位置(在此範例中,微碼別名位置1330-1)。
在一或更多實施例中,這可允許微碼呼叫程式動態映射或關聯特定參數之彈性位置(例如,為若干潛在可接受位置之任一者的位置)與由微指令326的指示328所指向之固定或靜態微碼別名位置。有利地,這有助於避免微碼呼叫程式從初暫存器位置移動特定參數至微碼次常式之微指令所預期的固定或靜態暫存器位置。
各種不同類型的參數為適合。參數可代表在微碼呼叫程式與微碼次常式之間傳遞的參數。適合的參數範例包括,但不限於,一或更多來源資料(例如,第一來源資料及第二來源資料)、一或更多結果、一或更多立即資料、指定將履行的微操作之類型的參數(例如,是否將履行加法或減法類型的操作)、指定其中將履行一特定微操作的模式之參數(例如,是否以飽和、捨去等履行操作)、指定其中將使用一或更多算術旗標的模式或方式之參數(例如,是否以進位、溢位等履行加法)、及上述的組合,僅舉數例而言。在一或更多特定示範實施例中,參數可為第一來源資料、第二來源資料、及結果之一,或上述的組合,雖本發明之範疇不限於此態樣。
再次參照第3圖,微碼別名參數傳遞邏輯亦包括參數位置判定邏輯340。參數位置判定邏輯可包括硬體、軟體、韌體、或上述的組合。在一或更多實施例中,參數位置判定邏輯可包括至少一些電路。參數位置判定邏輯耦合複數微碼別名位置330。
參數位置判定邏輯可回應於次常式312的微指令326,以從微指令326接收微碼別名位置的指示328(在此範例中指示第一微碼別名位置330-1)。微碼呼叫程式310已指定在相應於指示328的微碼別名位置中之參數的位置334-1(其在此範例中為第一微碼別名位置330-1)。參數位置判定邏輯可操作成判定由指示328所指向或指示或相應於其的微碼別名位置中所指定的參數之位置334-1(其在此範例中為第一微碼別名位置330-1)。
參數位置判定邏輯可輸出參數之已判定位置342。舉例來說,可將參數的已判定位置往管線下傳遞,例如至或朝執行邏輯(例如,一或更多執行核心)或其他後端邏輯。在一態樣中,可在一週期中寫入或指定參數位置並在下一週期中輸出而無需在微碼呼叫程式(微碼別名位置寫入器)與微碼次常式(微碼別名位置讀取器)之間序列化。無限制地,執行邏輯可根據或對位在參數之新分解的位置中之參數執行與微指令關聯之操作。
有利地,微碼別名參數傳遞邏輯可提供在微碼呼叫程式與微碼次常式之間彈性傳遞的機制。取代微碼呼叫程式必須確保參數位在由微碼次常式之微指令所預期的固定或靜態暫存器中,並且若其初始不位在固定或靜態暫存器中移動或複製參數,微碼呼叫程式可反而在由微指令的指示所指向的固定或靜態微碼別名位置中指定參數的彈性位置。有利地,這有助於避免移動、複製、或是重排參數位置的需求,這有助於藉由排除操作而改善性能並有助於減少微碼之總量,其有助於減少處理器的成本及電力消耗。並且,相同共享微碼次常式之不同微碼呼叫程式可針對微碼次常式之相同特定微指令的相同特定參數選擇性指定不同位置。
第4圖為微碼別名參數傳遞邏輯414的一示範實施例之區塊圖,其具有微碼別名暫存器(UMAR)430的一特定示範實施例及參數位置判定邏輯440的一特定示範實施例。了解到示範微碼別名參數傳遞邏輯414,包括該特定微碼別名暫存器430及該特定參數位置判定邏輯440,僅為範例且非必須。
微碼別名參數傳遞邏輯亦包括微碼貯存408、微碼呼叫程式410、微碼次常式412、及微碼次常式的微指令426。微碼貯存408、微碼呼叫程式410、微碼次常式412、及微指令426可選擇性與第3圖之邏輯314的相應命名的組件類似或相同。為了避免混淆說明,將不非必要地贅述全部這些相似性,更確切地下列討論將傾向於集中在第4圖之邏輯414的不同及/或額外的特性上。
微碼別名暫存器(UMAR)430代表複數微碼別名位置之一示範實施例。微碼別名暫存器具有複數微碼別名暫存器位置。如示範實施例中所示,微碼別名暫存器具有四個微碼別名暫存器位置,在圖中標為UMAR0、UMAR1、UMAR2、及UMAR3,雖本發明之範疇不限於僅僅四個位置。
第5圖為16位元微碼別名暫存器(UMAR)530的一特定示範實施例之區塊圖。UMAR具有可邏輯分成多達四組的四連續位元之16位元。這四組4位元群組的每一組可用來儲存代表參數之位置的值。如所示,在一範例中,位元3:0可用來儲存UMAR0;位元7:4可用來儲存UMAR1;位元11:8可用來儲存UMAR2;位元15:12可用來儲存UMAR3。在一或更多實施例中,儲存在UMAR中的值可根據所履行之操作的上下文參照至整數、浮點、或段暫存器檔中的位置。這僅為UMAR的一示範實施例,且本發明之範疇不限於此特定示範UMAR。在替代實施例中,更少或更多位置,各具有針對每一位置更少或更多位之,針對每一位置不一定包括相同位元數量,亦為合適。
再次參照第4圖,微碼次常式的微指令426具有微碼別名暫存器位置(其在此範例中為UMAR0)的指示428。例如,該指示可為@UMAR0,其中符號@代表別名位置。微碼次常式的微碼呼叫程式可操作成寫入或是指定由微碼次常式的微指令所指示之微碼別名暫存器位置中的參數之位置。如所示,在一或更多實施例中,微碼呼叫程式可包括寫入指令424以寫入或指定位置。替代地,取代寫入微指令,流程標記、或附加至微指令的流程標記、或微碼呼叫程式的其他部分可寫入或指定位置。
選擇性地,寫入微指令可寫入微碼別名暫存器位置中的多個位置436。例如,如所示,寫入微指令可分別在四個微碼別名暫存器位置UMAR0、UMAR1、UMAR2、及UMAR3中寫入整數值7、1、2、及0。整數值7、1、2、及0僅為說明用的範例。這些整數值(亦即,7、1、2、及0)的每一者可代表暫存器編號或其他位置,其中儲存不同的相應參數(例如,暫存器7、暫存器1、暫存器2、及暫存器0)。在一或更多實施例中,可以來自微指令及/或微碼呼叫程式的直接欄位的值寫入該些值或位置。
參數位置判定邏輯440耦合微碼別名暫存器430。參數位置判定邏輯可操作成,回應於微碼次常式的微指令426,從微指令接收微碼別名暫存器位置的指示428。參數位置判定邏輯可操作成判定由微指令426的指示428(其在此特定範例中為@UMAR0)所指向之微碼別名暫存器位置中所指定之參數的位置436。
在圖中的示範參數位置判定邏輯包括多工器(MUX)441。MUX代表一適合的選擇電路或選擇邏輯,雖其他選擇電路、選擇邏輯、或此技藝中已知的MUX之替代者亦為合適。MUX耦合以接收每一微碼別名暫存器位置的輸出作為輸入。例如,如所示,線或路徑439可耦合UMAR0、UMAR1、UMAR2、及UMAR3的每一者的輸出與至MUX的相應輸入。MUX亦藉由線或路徑443耦合以接收微指令之微碼別名暫存器位置的指示428作為控制輸入。MUX可操作成選擇或判定相應於指示428或控制輸入、由指示428或控制輸入所指示、或基於指示428或控制輸入的輸入之一。
舉一範例而言,若微碼別名暫存器位置的指示428為@UMAR0,其中符號@表示一別名,則MUX可選擇或判定整數值7,其在此範例中儲存或表現於UMAR0中。MUX可輸出整數值7作為其之輸出。整數值7可代表與指示428關聯之相應參數的位置。舉例來說,整數值7可代表其中儲存參數之暫存器7。據此,微指令426的指示@UMAR0可經由微碼別名暫存器及參數位置判定邏輯轉變成指示其中儲存相應於該指示之參數的暫存器7之整數值7。
第6圖為微碼別名參數傳遞邏輯614之一示範實施例的區塊圖,其具有微碼別名暫存器(UMAR)630的一特定示範實施例及參數位置判定邏輯640的一特定示範實施例,以判定第一來源、第二來源、及結果的位置。應了解到示範微碼別名參數傳遞邏輯614,包括該特定微碼別名暫存器630及該特定參數位置判定邏輯640,僅為範例且非必須。
微碼別名參數傳遞邏輯亦包括微碼貯存608、微碼呼叫程式610、及微碼次常式612。微碼貯存608、微碼呼叫程式610、及微碼次常式612可選擇性與第3或4圖之邏輯的相應命名的組件類似或相同。為了避免混淆說明,將不作非必要地贅述全部這些相似性,更確切地下列討論將傾向於集中在第6圖之邏輯614的不同及/或額外的特性上。
所示的微碼別名暫存器(UMAR)具有四個微碼別名暫存器位置,標為UMAR0、UMAR1、UMAR2、及UMAR3,雖本發明之範疇不限於僅僅四個位置。取代微碼別名暫存器(UMAR),可替代地使用其他微碼別名位置。
微碼次常式的微指令626具有相應於微指令626所用之第一來源的第一微碼別名暫存器位置之第一指示628-1、相應於微指令626所用之第二來源的第二微碼別名暫存器位置之第二指示628-2、及相應於微指令626所用之結果的第三微碼別名暫存器位置之第三指示628-3。在一些情況中,針對來源及結果兩者可指示相同的微碼別名暫存器位置。
微碼次常式的微碼呼叫程式可操作成可操作成寫入或是指定由微指令的指示628所指示之微碼別名暫存器位置中的第一來源、第二來源、及結果之位置。微碼呼叫程式可指定由微指令所指示的第一微碼別名暫存器位置中之第一來源的第一位置(例如,代表第一暫存器的值);指定由微指令所指示的第二微碼別名暫存器位置中之第二來源的第二位置;及指定由微指令所指示的第三微碼別名暫存器位置中之結果的第三位置。
如所示,在一或更多實施例中,微碼呼叫程式可包括寫入指令624以寫入或指定位置。替代地,取代寫入微指令,流程標記、或附加至微指令的流程標記、或微碼呼叫程式的其他部分可寫入或指定位置。例如,如所示,寫入微指令可分別在四個微碼別名暫存器位置UMAR0、UMAR1、UMAR2、及UMAR3中寫入整數值7、1、2、及0。這些整數值(亦即,7、1、2、及0)的每一者可代表暫存器編號或其他位置,其中儲存不同的相應參數(例如,暫存器7、暫存器1、暫存器2、及暫存器0)。
參數位置判定邏輯640耦合微碼別名暫存器630。參數位置判定邏輯可操作成,回應於微碼次常式的微指令626,接收相應於第一來源的微碼別名暫存器位置之一的第一.指示628-1(例如,@UMAR0)、相應於第二來源的微碼別名暫存器位置之一的第二指示628-2(例如,@UMAR2)、及相應於結果的微碼別名暫存器位置之一的第三指示628-3(例如,@UMAR1)。
在示範實施例中針對第一來源、第二來源、及結果之示範參數位置判定邏輯包括多工器(MUX)641,雖其他選擇電路、選擇邏輯、或此技藝中已知的MUX之替代者亦為合適。每一MUX耦合以接收每一微碼別名暫存器位置的輸出作為輸入。例如,如所示,線或路徑639可耦合UMAR0、UMAR1、UMAR2、及UMAR3的每一者的輸出與這三個MUX的每一者的相應輸入。不與本揭露相關的其他輸入亦可選擇性提供至MUX,例如,與可變長度指令之不同欄位有關的那些。每一MUX亦藉由分別的線或路徑643耦合以接收針對參數之一相應者的微碼別名暫存器位置的指示628之一相應者作為控制輸入。例如,上MUX 641-1耦合以接收相應於第一來源的第一指示643-1作為控制輸入;中MUX 641-2耦合以接收相應於第二來源的第二指示643-2作為控制輸入;及下MUX 641-3耦合以接收相應於結果的第三指示643-3作為控制輸入。每一MUX可操作成從微碼別名暫存器選擇或判定相應於或基於提供至那個特定MUX的指示或控制輸入或由其所指示的輸入之一。
舉一範例而言,若微碼次常式之微指令的形式為結果=第一來源+第二來源,並且具有特定指示@UMAR1=@UMAR0+@UMAR2,其中符號@表示一別名,則上MUX 641-1可選擇或判定整數值7,其在此範例中係儲存或表現於UMAR0中;中MUX 641-2可選擇或判定整數值2,其在此範例中係儲存或表現於UMAR2中;且下MUX 641-3可選擇或判定整數值1,其在此範例中係儲存或表現於UMAR1中。舉例來說,整數值7可代表其中儲存第一來源資料之暫存器7;整數值2可代表其中儲存第二來源資料之暫存器2;且整數值1可代表其中儲存由微指令所產生的結果之暫存器1。延續此範例,微指令@UMAR1=@UMAR0+@UMAR2的別名指示可經由微碼別名暫存器及參數位置判定邏輯轉變成暫存器1=暫存器7+暫存器2。
某些處理器利用推測執行。推測執行一般指在確定知道需執行碼之前碼的推測性執行。常用推測執行的一個領域為分支預測。分支預測涉及在確定知道分支之正確的方向以前,預測分支的方向,例如,條件分支微指令之微分支的方向。例如,處理器可依據過去歷史來做出條件分支指令最有可能採取的方向的據理猜測。處理器可接著基於預測之分支方向為正確的假設,但在處理器知道預測的分支方向是否真的正確之前,開始推測性地執行指令。
預測的分支方向後續將變成正確或不正確。若預測的分支方向後續變成正確,則可利用推測執行的結果。在此情況中,推測執行提供在等待知道分支方向的正確方向時的管線級之更大利用價值,否則會是休眠或至少未充分利用。替代地,若預測的分支方向後續變成不正確,或錯誤預測分支方向,則通常應拋棄條件分支指令之後的推測執行,且通常應藉由跳躍或分支回到在控制流程中被錯誤預測的條件分支而倒回執行。控制流程可代表其中執行個別指令的順序。執行可接著以現在確定知道的正確分支方向現在非推測性地重新開始。在處理器中亦知道其他形式的推測執行。
一個挑戰係在於,當在微碼次常式中之分支或微分支被錯誤預測時,可能潛在會變更或改變在此揭露的微碼別名位置中所儲存的值,在其初始被寫入或指定時與檢測到錯誤預測的微分支時之間。若欲倒回執行,例如,藉由跳躍或分支回到在控制流程中被錯誤預測的條件分支而倒回,則對儲存在微碼別名位置中之值的改變或變更可能會導致這些值針對倒回的執行為損壞或無效。類似地,在錯誤、陷阱、中斷等中,在此揭露的儲存在微碼別名位置中之值可能被改變或變更。
在此揭露的實施例允許相應於在微碼呼叫程式與微碼次常式之間傳送的參數之在微碼別名位置中的值被儲存或保留在其他地方。其他實施例額外允許這種值,當或若後續需要的話(例如,在條件微分支的錯誤預測事件中)被還原到微碼別名位置。可理解到保存及還原這些值為可選且非必要。前述的微碼別名參數傳遞邏輯可在有或沒有保存及還原這些值下使用。
第7圖為保存或保留來自微碼別名位置之值的方法750之一實施例的區塊流程圖。在一或更多實施例中,可藉由處理器或其他指令處理設備及/或在其內履行該方法。例如,在一或更多實施例中,可藉由第1圖之處理器100或類似者及/或在其內履行該方法。替代地,可藉由與第1圖之處理器100不同的處理器或其他指令處理設備及/或在其內履行該方法750。
該方法包括在區塊751以微碼次常式的微碼呼叫程式指定複數微碼別名位置的複數值,其中每一值相應於在微碼呼叫程式與微碼次常式之間傳遞的參數。在一或更多實施例中,每一值可代表相應參數的位置,例如像是,儲存來源資料之暫存器或其中將儲存結果的暫存器,僅舉少數幾個例子。
接著,在區塊752,可接收到指示目的地儲存位置之保存微指令。在一或更多實施例中,可在對微碼次常式(其可能具有條件微分支指令)的呼叫前在微碼呼叫程式中發生該保存微指令。替代地,可在微碼次常式的條件分支之前,或在微碼別名暫存器位置的損壞之前,在微碼次常式中發生該保存微指令。在一或更多實施例中,目的地儲存位置可為暫存器,如暫時暫存器。
在區塊753,回應於保存微指令,可將在複數微碼別名位置中所指定的複數值儲存在由保存微指令所指示之目的地儲存位置中。在一或更多實施例中,除了微碼別名位置中的值外,保存微指令亦可操作成保存微指令指標在由保存微指令所指示之目的地儲存位置中。雖已將微指令稱為保存微指令,其可以移動微指令、複製微指令、寫入微指令、或能夠在目的地儲存位置中儲存值之微指令來加以實行。
第8圖為微碼別名參數值保存邏輯856的一實施例之區塊圖。在一或更多實施例中,邏輯856可包括在第1圖的處理器100或類似者,或完全不同的指令處理設備中。在一或更多實施例中,邏輯856可履行第7圖之方法或類似者。然而,應了解到邏輯856可履行與第7圖中所示不同的操作及方法。此外,針對第7圖於上所討論的操作或方法可藉由與邏輯856相同、或類似、或完全不同的微碼別名參數值保存邏輯加以履行。
微碼別名參數值保存邏輯包括微碼貯存808、儲存在微碼貯存中之微碼次常式812、儲存在微碼貯存中之微碼次常式的微碼呼叫程式810、及複數微碼別名位置830-1至830-N。微碼貯存808、微碼次常式812、微碼呼叫程式810、及微碼別名位置830可選擇性與第3、4、或6圖之相應命名的組件類似或相同。為了避免混淆說明,將不非必要地贅述全部這些相似性,更確切地下列討論將傾向於集中在第8圖之邏輯856的不同及/或額外的特性上。
微碼呼叫程式810具有保存微指令858。保存微指令具有目的地儲存位置864的指示860。指示860可為微指令隱含的,或指示860可由微指令明確指定(例如,透過位元值的一欄位)。在一或更多實施例中,目的地儲存位置的指示可針對特定保存微指令為固定。在一或更多實施例中,目的地儲存位置864可為暫存器,例如像是舉一特定範例來說,32位元暫時整數暫存器。
每一微碼別名位置830可操作成儲存,或儲存,值834-1至834-N。在圖中,第一微碼別名位置830-1可操作成儲存,或儲存,第一值834-1且第N微碼別名位置830-N可操作成儲存,或儲存,第N值834-N。每一值可相應於在微碼呼叫程式與微碼次常式之間傳遞的參數,諸如在呼叫中及在返回中若針對那個特定次常式有返回的話。例如,在一或更多實施例中,每一值可代表相應參數之位置,例如像是,儲存參數(例如,來源資料)之暫時暫存器。
別名參數值保存邏輯亦包括保存邏輯862。保存邏輯可包括硬體(例如,電路)、軟體、韌體、或上述的組合。在一或更多實施例中,保存邏輯可包括至少一些電路。保存邏輯耦合微碼別名位置830以從微碼別名位置接收值834。保存邏輯可操作成,回應於保存微指令858,儲存或保存來自微碼別名位置830之值834到由保存微指令858之指示860所指示之目的地儲存位置864(例如,一特定暫存器)。如圖中所示,值834-1至834-N可儲存在目的地儲存位置864作為保存微指令858之結果。有利地,這有效地保存或保留來自微碼別名位置之值834,所以若需要值的話,可後續還原它們(例如,若條件微分支指令的錯誤預測發生的話),即使若微碼別名位置被其他微指令覆寫。雖已將微指令稱為保存微指令,但其可以移動微指令、複製微指令、寫入微指令、或能夠在目的地儲存位置中保存或儲存值之微指令來加以實行。
第9圖為微碼別名參數值保存邏輯956的一示範實施例之區塊圖,其具有微碼別名暫存器(UMAR)930的一特定示範實施例及保存邏輯962的一特定示範實施例。應了解到示範的微碼別名參數值保存邏輯956,包括該特定微碼別名暫存器930及該特定保存邏輯962,僅為範例且非必須。
微碼別名暫存器(UMAR)代表複數微碼別名位置之一示範實施例。UMAR可與上述針對第4圖所示及所述之UMAR類似或相同。如示範實施例中所示,微碼別名暫存器具有四個微碼別名暫存器位置,在圖中標為UMAR0、UMAR1、UMAR2、及UMAR3,雖本發明之範疇不限於僅僅四個位置。替代實施例可具有少於或多於四個位置。諸如不同暫存器之其他微碼別名位置亦合適。
每一微碼別名暫存器位置具有一值。例如,如所示,可分別在四個微碼別名暫存器位置UMAR0、UMAR1、UMAR2、及UMAR3中儲存整數值7、1、2、及0。這些值僅為範例。在一或更多實施例中,這些整數值(亦即,7、1、2、及0)的每一者可代表其中儲存不同的相應參數之暫存器編號或其他位置(例如,暫存器7、暫存器1、暫存器2、及暫存器0)。
保存邏輯962之特定示範實施例包括串聯邏輯968及執行邏輯918。串聯邏輯耦合複數微碼別名位置。串聯邏輯耦合以接收每一微碼別名暫存器位置的輸出作為輸入。例如,如所示,線或路徑966可耦合UMAR0、UMAR1、UMAR2、及UMAR3的每一者的輸出與至串聯邏輯的相應輸入。串聯邏輯亦藉由線或路徑967耦合以接收控制輸入,諸如,例如,指示目的地儲存位置、或保存微指令之欄位、或衍生自或基於保存微指令之信號的保存微指令958。
串聯邏輯可操作成,回應於保存微指令,根據控制輸入的控制串聯或結合從微碼別名暫存器接收到的值或內容。例如,在一特定示範實施例中,串聯邏輯可結合來自微碼別名暫存器位置的四個不同的4位元整數值(例如,7、1、2、及0)成為具有7120之單一16位元整數值。
在一或更多實施例中,串聯邏輯可包括結合多工器(MUX)941,其可操作成串聯或結合若干組位元成為一結合或串聯組的位元。MUX代表串聯邏輯的一適合的範例。替代地,可使用其他位元或欄位串聯電路、邏輯、或此技藝中已知的MUX之替代者來取代MUX。邏輯968亦可接收與此揭露不相關的其他輸入(未圖示)(例如,與可變長度指令之不同欄位有關的那些)。
在一或更多實施例中,串聯邏輯可串聯、結合、或多工微碼別名暫存器中的值成為保存微指令之直接(immediate)或常數。在這一種實施例中,串聯邏輯可代表保存微指令之參數化的直接別名判定邏輯。可接著將具有結合值作為直接或常數970之保存微指令在管線中往下發送或是提供至執行邏輯918。
如所示,執行邏輯耦合串聯邏輯之輸出以接收具有直接970的保存微指令。執行邏輯可操作成,回應於保存微指令,將來自直接的值保存在由保存微指令所指示之目的地儲存位置中。如所示,執行可導致從直接或常數的值到由保存微指令所指示之目的地儲存位置之一寫入或其他保存972。
在一或更多實施例中,連同來自微碼別名位置之值,保存微指令可進一步操作成將微指令指標(例如,微指令指標堆疊位址之頂部)保存在由保存微指令所指示之目的地儲存位置中。正如微碼別名位置中之值於推測執行期間可能會被改變或損壞,微指令指標也是一樣。據此,在一或更多實施例中,保存微指令可一致儲存或保留微碼別名位置中之值還有微指令指標兩者。替代地,可以不同微指令個別保存微碼別名位置中的值及微指令指標。
在一或更多實施例中,可使用相同微指令或流程標記來寫入或指定微碼別名位置中的值還有保存或保留來自微碼別名位置的值到目的地儲存位置中。例如,寫入或指定微碼別名位置330中之位置336之第3圖中之微指令324,及/或寫入或指定微碼別名位置430中的位置436之第4圖的寫入UMAR微指令424可與儲存或保留來自微碼別名位置830之值834到目的地儲存位置864之第8圖中之保存微指令858及/或將來自微碼別名暫存器930之值寫入目的地儲存位置之第9圖中之保存微指令958相同的微指令。可在寫入位置或值到目的地儲存位置之前寫入它們到微碼別名位置中,這兩者皆回應於相同的微指令。替代地,一微指令或流程標記可寫入或是指定在微碼別名位置中的值,且另一不同的微指令或流程標記可將來自微碼別名位置的值保存到目的地儲存位置。
第10圖為適當的目的地儲存位置1064之一特定示範實施例的區塊圖。在一或更多實施例中,目的地儲存位置可為暫存器,諸如暫時整數暫存器,雖暫時整數暫存器非必須。目的地儲存位置可操作成儲存,或在其中已儲存,來自微碼別名位置之結合值1034及微指令指標值1074。目的地儲存位置之特定示範實施例具有32位元,其中位元15:0用來儲存微指令指標值1074且位元31:16用來儲存來自微碼別名位置之值1034(例如,7120),雖本發明之範疇不限於此。這僅為適當的目的地儲存位置之一示範實施例,且本發明之範疇不限於此特定示範UMAR。在各種替代實施例中,可取而代之使用具有不同數量之位元的暫存器,具有針對值及微指令指標潛在不同數量的位元,或在目的地儲存位置中無需與值一起儲存微指令指標。
在一或更多實施例中,若適當的話,諸如若在錯誤預測的條件微分支指令的事件中將倒回執行的話,可從目的地儲存位置還原值或位置到微碼別名位置或微碼別名暫存器。在一或更多實施例中,可藉由指示目的地儲存位置之還原微指令來還原這些值或位置。在一或更多實施例中,由還原微指令所指示之目的地儲存位置可與由保存微指令所指示的相同目的地儲存位置。在一或更多實施例中,還原微指令可為在微碼次常式或次次常式內的微指令,例如,其係在已知錯誤預測了次常式的條件微分支指令之後發生。
第11圖為微碼別名參數值還原邏輯1176之一實施例的區塊圖。在一或更多實施例中,邏輯1176可包括在第1圖之處理器100或類似者,或完全不同的指令處理設備中。
微碼別名參數值還原邏輯包括執行邏輯1118、目的地儲存位置1164、複數微碼別名位置1130-1至1130-N、及還原邏輯1178。微碼別名位置及目的地儲存位置可選擇性與前述圖中之相應命名的組件類似或相同。為了避免混淆說明,將不非必要地贅述全部這些相似性,更確切地下列討論將傾向於集中在第11圖之邏輯1176的不同及/或額外的特性上。
可提供具有目的地儲存位置1164的指示之還原微指令1180(例如來源運算元)至執行邏輯。還原微指令可隱含指示或明確指示目的地儲存位置。在一態樣中,目的地儲存位置之指示可針對特定還原微指令為固定。在一態樣中,目的地儲存位置1164可為與由前述保存微指令所指示之相同的目的地儲存位置。
執行邏輯可執行還原微指令。還原微指令的執行可導致從目的地儲存位置1164存取值1134-1至1134-N並提供至還原邏輯1178。例如,來自目的地儲存位置(例如,暫時暫存器)的值可發送回管線前端至還原邏輯。
還原邏輯1178可操作成寫入、移動、複製、或是儲存值到微碼別名位置作為還原值。還原邏輯可包括硬體(例如,電路)、軟體、韌體、或上述的組合。在一或更多實施例中,還原邏輯可包括至少一些電路。有利地,這允許即使若微碼別名位置後續被其他微指令覆寫/改變的話,仍可使用微碼別名位置中的值(例如,在條件微分支指令的錯誤預測後的倒回執行事件中)。
在所示範例中,還原邏輯1178針對每一微碼別名位置包括一MUX或其他選擇裝置1141。每一MUX可接收相應的還原值作為其之輸入。MUX亦可各耦合微碼呼叫程式之寫入微指令或在本文其他地方所述之其他替代者以在線1182上接收值作為額外輸入。MUX可操作成基於控制輸入1184在寫入來自寫入微指令之值或還原值之間做選擇。可由微碼(例如,寫入微碼別名位置之微指令)、執行單元(例如,作為還原微指令之結果)、或其組合提供控制輸入。
可在一或更多條線或互連1185上提供至該些值至還原邏輯1178。在一或更多實施例中,可經由載送來自跳躍執行單元的分支錯誤預測位址之匯流排還原該些值,雖此非必須。
在一或更多實施例中,除了從目的地儲存位置還原值到微碼別名位置外,亦可藉由還原微指令還原微指令指標堆疊。
又其他實施例有關於具有在此所揭露之一或更多處理器及/或履行在此所揭露之方法的一種系統(例如,電腦系統或其他電子裝置)。第12圖為一合適的電腦系統或電子裝置1286的一示範實施例的區塊圖。
電腦系統包括處理器1200。在一或更多實施例中,處理器可包括如本在其他地方所揭露之微碼別名參數傳遞邏輯及/或微碼別名參數保存及還原邏輯。
處理器可具有一或更多核心。在多核心處理器的情況中,多核心可為單體整合到單一積體電路(IC)晶片或晶粒上。在一態樣中,每一核心可包括至少一執行單元及至少-一快取。處理器亦可包括一或更多共享的快取。
在一特定實施例中,處理器可包括集成圖形控制器、集成視頻控制器、及集成記憶體控制器,各單體整合到通用微處理器的單一晶粒上,雖此非必須。替代地,這些組件的一些或全部可位在處理器外。例如,可從處理器省略集成記憶體控制器且晶片組可具有記憶體控制器集線器(MCH)。
處理器經由匯流排(如前端匯流排)或其他互連1287耦合到晶片組1288。互連可用來在處理器與系統中之其他組件經過晶片組傳送資料信號。
記憶體1289耦合到晶片組。在各種實施例中,記憶體可包括隨機存取記憶體(RAM)。動態RAM(DRAM)為用於一些但非全部電腦系統中之RAM的類型之一範例。
組件互連1290亦與晶片組耦合。在一或更多實施例中,組件互連可包括一或更多周邊組件互連快速(PCIe)介面。組件互連可允許其他組件透過晶片組耦合到系統之其餘部分。這種組件的一範例為圖形晶片或其他圖形裝置,雖此為選擇性且非必須。
資料貯存1291耦合到晶片組。在各種實施例中,資料貯存可包括硬碟機、軟碟機、CD-ROM裝置、快閃記憶體裝置、動態隨機存取記憶體(DRAM)等,或上述組合。
網路控制器1293亦耦合到晶片組。網路控制器可允許系統與網路耦合。
序列擴充埠1292亦與晶片組耦合。在一或更多實施例中,序列擴充埠可包括一或更多通用序列匯流排(USB)埠。序列擴充埠可允許各種其他類型的輸入/輸出裝置透過晶片組耦合到系統之其餘部分。
可選擇性與晶片組耦合的其他組件之少數例示性範例包括,但不限於,音頻控制器、無線收發器、及使用者輸入裝置(例如,鍵盤及滑鼠)。
在一或更多實施例中,電腦系統可執行WINDOWSTM
作業系統之一版本,其可得自Washington的Redmond之Microsoft Corporation。替代地,可用其他作業系統,諸如,例如,UNIX、Linux、或嵌入式系統。
這僅為合適電腦系統之一特定範例。針對膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、視頻遊戲裝置、機上盒、及具有處理器之各種其他電子裝置的此技藝中已知之其他系統設計及組態亦為合適。在一些情況中,系統可有多個處理器。
在說明書及申請專利範圍中,可使用「耦合」及「連接」一詞及其衍生詞。應了解到這些詞非意圖為彼此的同義詞。更確切地,在特定實施例中,「連接」可用來指示兩或更多元件為彼此直接實體或電接觸。「耦合」可指兩或更多元件直接實體或電接觸。然而,「耦合」也可指不彼此直接接觸但仍彼此共同合作或互動之兩或更多元件。
在上述說明中,為了解釋,已提出眾多特定細節以提供本發明之實施例的詳盡理解。然而,對熟悉此技藝人士很明顯地可在無部份這些特定細節下實行一或更多其他實施例。所述的特定實施例並非提供來限制本發明而是例示本發明之實施例。本發明之範疇不由上述提供之特定範例而是由下列申請專利範圍而定。在其他例子中,已經以區塊圖形式或無細節下顯示眾所皆知的電路、結構、裝置、及操作,以不混淆對說明之理解。在視為適當處,已經在圖中重複參考符號或參考符號的尾端部分以指示相應或類同元件,其可選擇性具有類似之特性。
已經說明各種操作及方法。已在流程圖中以基本形式說明一些方法,但可選擇性添加操作至方法或從方法移除操作。另外,雖流程圖顯示根據示範實施例之操作的特定順序,應了解到那個特定順序為示範性。替代實施例可選擇性以不同順序履行操作;結合某些操作;重疊某些操作等等。可對方法做出許多修改及調變且可設想得到。
可藉由硬體組件履行某些操作,或可在機器可執行或電路可執行指令中體現某些操作,該些指令可用來令,或至少導致編程有指令之電路或硬體履行操作。電路可包括通用或專用處理器,或邏輯電路,僅舉少數例子而言。亦可藉由硬體與軟體之組合選擇性履行操作。執行單元及/或處理器可包括具體或特定電路或其他邏輯,其回應於指令或微指令或從機器指令衍生而來的一或更多控制信號而履行某些操作。
一或更多實施例包括製造物件(例如,電腦程式產品),其包括機器可存取及/或機器可讀取媒體。媒體可包括一種機制,其提供,例如儲存或傳送,具有可由機器存取及/或讀取的形式之資訊。機器可存取及/或可讀取媒體可提供,或於上儲存有,一或更多或一序列的指令及/或資料結構,其若由機器執行的話會令或導致機器履行,及/或令機器履行,本文揭露之圖中所示的一或更多或一部分的操作或方法或技術。
在一實施例中,機器可讀取媒體可包括有形非短暫機器可讀取儲存媒體。例如,有形非短暫機器可讀取儲存媒體可包括軟碟片、光學儲存媒體、光碟、CD-ROM、磁碟、光磁碟、唯讀記憶體(ROM)、可編程ROM(PROM)、可抹除及可編程ROM(EPROM)、可電性抹除及可編程ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相變記憶體、或上述之組合。有形媒體可包括一或更多固態或有形實體材料,諸如,例如,半導體材料、相變材料、磁性材料等。
在另一實施例中,機器可讀取媒體可包括無形短暫機器可讀取通訊媒體。例如,短暫機器可讀取通訊媒體可包括電性、光學、音學、或其他形式的傳播信號,諸如載波、紅外線信號、數位信號等等。
合適機器的範例包括,但不限於,電腦系統、桌上型電腦、膝上型電腦、筆記型電腦、上網本、上網電腦(nettop)、行動網際網路裝置(MID)、網路裝置、路由器、交換器、手機、媒體播放器、及具有一或更多處理器或其他指令執行裝置之其他電子裝置。這種電子裝置通常包括與一或更多其他組件耦合的一或更多處理器,諸如一或更多儲存裝置(非短暫機器可讀取儲存媒體)、使用者輸入/輸出裝置(例如,鍵盤、觸碰螢幕、及/或顯示器)、及/或網路連結。處理器及其他組件的耦合通常係透過一或更多匯流排及橋接器(亦稱為匯流排控制器)。因此,一給定電子裝置之儲存裝置可儲存碼及/或資料以供那電子裝置之一或更多處理器執行。替代地,可使用軟體、韌體、及/或硬體的不同組合實行本發明之一實施例的一或更多部分。
應可認知到在整個本說明書中之對於「一實施例(one embodiment或an embodiment)」或「一或更多實施例」的參照,例如,意指特定特徵可包括在本發明之實施例的實行中。類似地,為了使揭露流暢且幫助了解各種發明態樣,應可認知到在說明中各種特徵有時在單一實施例、圖、或其之說明中群集在一起。然而,這種揭露方法不應解讀成反映本發明需要比在每一專利範圍中所明確提及還更多的特徵。更確切地,正如下申請專利範圍所反映,發明態樣可在比單一揭露的實施例之所有特徵還更少中。因此,在實施方式之後的申請專利範圍從而在此明確併入此實施方式中,其中每一專利範圍單獨成立作為本發明之一個別的實施例。
100...處理器
102...微指令
104...解碼器
106A...較低階微指令
106B...微指令
108...微碼貯存
110...微碼呼叫程式
112...微碼次常式
114...微碼別名參數傳遞邏輯
116...暫存器
118...執行邏輯
308...微碼貯存
310...微碼呼叫程式
312...微碼次常式
314...微碼別名參數傳遞邏輯
326...微指令
328...指示
330、330-1~330-N...微碼別名位置
334-1...位置
340...參數位置判定邏輯
342...已判定位置
408...微碼貯存
410...微碼呼叫程式
412...微碼次常式
414...微碼別名參數傳遞邏輯
424...寫入指令
426...微指令
428...指示
430...微碼別名暫存器
436...位置
439...線或路徑
440...參數位置判定邏輯
441...多工器
443...線或路徑
530...微碼別名暫存器
608...微碼貯存
610...微碼呼叫程式
612...微碼次常式
614...微碼別名參數傳遞邏輯
624...寫入指令
626...微指令
628...指示
628-1...第一指示
628-2...第二指示
628-3...第三指示
630...微碼別名暫存器
640...參數位置判定邏輯
641...多工器
643...線或路徑
639...線或路徑
641-1...上MUX
641-2...中MUX
641-3...下MUX
808...微碼貯存
810...微碼呼叫程式
812...微碼次常式
830-1~830-N...微碼別名位置
834-1~834-N...值
856...微碼別名參數值保存邏輯
858...保存微指令
860...指示
862...保存邏輯
864...目的地儲存位置
918...執行邏輯
930...微碼別名暫存器
941...結合多工器
956...微碼別名參數值保存邏輯
958...保存微指令
962...保存邏輯
966...線或路徑
967...線或路徑
968...串聯邏輯
970...直接或常數
972...寫入或其他保存
1034...結合值
1064...目的地儲存位置
1074...微指令指標值
1130-1~1130-N...微碼別名位置
1134-1~1134-N...值
1118...執行邏輯
1141...MUX或其他選擇裝置
1164...目的地儲存位置
1176...微碼別名參數值還原邏輯
1178...還原邏輯
1180...還原微指令
1182...線
1184...控制輸入
1185...線或互連
1200...處理器
1286...電腦系統或電子裝置
1287...匯流排或其他互連
1288...晶片組
1289...記憶體
1290...組件互連
1291...資料貯存
1292...序列擴充埠
1293...網路控制器
本發明可藉由參考用以說明本發明之實施例的下列描述及後附圖式而被最佳地理解。於圖式中:
第1圖為具有微碼別名參數傳遞邏輯之一實施例的處理器之一實施例的區塊圖。
第2圖為在微碼呼叫程式與微碼次常式之間傳遞參數的方法之一實施例的區塊流程圖。
第3圖為微碼別名參數傳遞邏輯之一實施例的區塊圖。
第4圖為微碼別名參數傳遞邏輯的一示範實施例之區塊圖,其具有微碼別名暫存器的一特定示範實施例及參數位置判定邏輯的一特定示範實施例。
第5圖為16位元微碼別名暫存器的一特定示範實施例之區塊圖。
第6圖為微碼別名參數傳遞邏輯之一示範實施例的區塊圖,其具有微碼別名暫存器的一特定示範實施例及參數位置判定邏輯的一特定示範實施例,以判定第一來源、第二來源、及結果的位置。
第7圖為保存或保留來自微碼別名位置之值的方法之一實施例的區塊流程圖。
第8圖為微碼別名參數值保存邏輯的一實施例之區塊圖。
第9圖為微碼別名參數值保存邏輯的一示範實施例之區塊圖,其具有微碼別名暫存器的一特定示範實施例及保存邏輯的一特定示範實施例。
第10圖為適當的目的地儲存位置之一特定示範實施例的區塊圖。
第11圖為微碼別名參數值還原邏輯之一實施例的區塊圖。
第12圖為一合適的電腦系統或電子裝置的一示範實施例的區塊圖。
100...處理器
102...微指令
104...解碼器
106A...較低階微指令
106B...微指令
108...微碼貯存
110...微碼呼叫程式
112...微碼次常式
114...微碼別名參數傳遞邏輯
116...暫存器
118...執行邏輯
Claims (30)
- 一種用於在微碼呼叫程式與微碼次常式之間傳遞別名參數的設備,包含:複數微碼別名位置;微碼貯存;儲存在該微碼貯存中之微碼次常式的微指令,該微指令具有微碼別名位置的指示;儲存在該微碼貯存中之該微碼次常式的微碼呼叫程式,該微碼呼叫程式可操作成指定由該微指令所指示之該微碼別名位置中之參數的位置;與該些微碼別名位置耦合之參數位置判定邏輯,並且回應於該微碼次常式之該微指令,以從該微指令接收該微碼別名位置之該指示,該邏輯可操作成判定在由該微指令所指示之該微碼別名位置中所指定的該參數之該位置;保存邏輯,用以當開始推測執行時,將在由該微碼次常式的該微指令所指示之該微碼別名位置中所指定的該參數之該位置保存至目的地儲存位置;以及還原邏輯,用以當該推測執行將被拋棄時,從該目的地儲存位置還原該參數之該位置到由該微碼次常式的該微指令所指示之該微碼別名位置。
- 如申請專利範圍第1項所述之設備,其中該微碼次常式之該微指令隱含地指示該微碼別名位置,以及其中針對該微碼次常式之該微指令該隱含指示的微碼別名位置為固定。
- 如申請專利範圍第1項所述之設備,其中該參數的該位置包含下列之一:其中儲存來源資料的位置;其中儲存結果資料的位置;其中儲存立即資料的位置;其中儲存指定該微碼次常式之該微指令的操作類型之參數的位置;其中儲存指定將執行該微碼次常式之該微指令的操作之模式的參數之位置;以及其中儲存指定將使用算術旗標的模式之參數的位置。
- 如申請專利範圍第3項所述之設備,其中該參數的該位置包含其中儲存來源資料的該位置及其中儲存結果資料的該位置之一。
- 如申請專利範圍第1項所述之設備,其中該微碼呼叫程式具有微指令及流程標記之至少一者以將該參數的該位置寫入該微碼別名位置中,其包含儲存位置。
- 如申請專利範圍第1項所述之設備,其中該微碼呼叫程式具有微指令及流程標記之至少一者以將該參數的該位置寫入該微碼別名位置中,以及其中該微指令及該流程標記之該至少一者亦寫入微指令指標。
- 如申請專利範圍第1項所述之設備,其中該複數微碼別名位置包含在微碼別名暫存器中之複數微碼別名暫存器位置。
- 如申請專利範圍第1項所述之設備,其中該複數微 碼別名位置包含複數儲存位置,其中該參數位置判定邏輯包含邏輯,其耦合以接收儲存在該些儲存位置的每一者中之位置並選擇及輸出該複數者之儲存位置的位置,其相應於由該微指令所指示之該微碼別名位置。
- 如申請專利範圍第1項所述之設備,其中該參數的該位置包含在暫存器中之位置,以及其中暫存器為整數暫存器、浮點暫存器、段暫存器、及控制暫存器的任一者。
- 如申請專利範圍第1項所述之設備,實行於通用微處理器中。
- 如申請專利範圍第10項所述之設備,其中該通用微處理器包含集成圖形控制器、集成視頻控制器、及集成記憶體控制器,其各整合於該通用微處理器之單一晶粒上。
- 一種用於在微碼呼叫程式與微碼次常式之間傳遞別名參數的方法,包含:以微碼呼叫程式在微碼別名位置中指定參數的位置,其中由微碼次常式的微指令指示該微碼別名位置;以及回應於該微碼次常式之該微指令,以參數位置判定邏輯輸出由該微碼次常式的該微指令所指示之該微碼別名位置中所指定的該參數之該位置;當開始推測執行時,將該參數之該位置保存在其他儲存位置中;以及在判斷該推測執行將被拋棄之後,將該參數之該位置還原到由該微碼次常式的該微指令所指示之該微碼別名位 置。
- 如申請專利範圍第12項所述之方法,其中該微碼次常式的微碼呼叫程式之微指令及流程標記之至少一者指定該參數的該位置,以及其中該微碼次常式之該微指令隱含地指示該微碼別名位置,以及其中針對該微碼次常式之該微指令該隱含指示的微碼別名位置為固定。
- 如申請專利範圍第12項所述之方法,其中該參數的該位置包含其中儲存來源資料的位置及其中待儲存結果資料的位置之一。
- 如申請專利範圍第12項所述之方法,其中該微碼次常式的微碼呼叫程式之微指令及流程標記之至少一者指定該參數的該位置,以及其中該微碼呼叫程式具有微指令及流程標記之至少一者以將該參數的該位置寫入該微碼別名位置中,以及其中該微指令及該流程標記之該至少一者亦寫入微指令指標。
- 一種用於在微碼呼叫程式與微碼次常式之間傳遞別名參數的製造物件,包含:機器可讀取儲存媒體,具有微指令儲存於其上,若加以執行會導致機器履行操作,包括,在微碼別名位置中指定參數的位置;以及以由微碼呼叫程式所呼叫的微碼次常式之第二微指令指示該微碼別名位置,該第二微指令指示該微碼別名位置為針對特定第二微指令及針對特定參數之固定微碼別名位置;以及 該微碼次常式使用該參數以指定其中將執行一操作的模式,包括是否以飽和(saturation)及捨入(rounding)之其中一者執行該操作。
- 如申請專利範圍第16項所述之製造物件,其中該些微指令包括該微碼呼叫程式之第一微指令以指定該參數的該位置,以及其中若執行該第一微指令進一步導致該機器履行操作,包含:寫入微指令指標。
- 如申請專利範圍第16項所述之製造物件,其中若執行該第二微指令進一步導致該機器履行操作,包含:輸出來自由該第二微指令所指示之該微碼別名位置的該參數之該指定位置。
- 一種用於在微碼呼叫程式與微碼次常式之間傳遞別名參數的系統,包含:處理器,其包括:複數微碼別名位置;微碼次常式的微指令,該微指令具有微碼別名位置的指示;該微碼次常式的微碼呼叫程式,該微碼呼叫程式可操作成指定由該微指令所指示之該微碼別名位置中之參數的位置;以及與該些微碼別名位置耦合之參數位置判定邏輯,並且回應於該微碼次常式之該微指令,以從該微指令接收該微碼別名位置之該指示,該邏輯可操作成判定在由該微指令 所指示之該微碼別名位置中所指定的該參數之該位置;保存邏輯,用以當開始推測執行時,將在由該微碼次常式的該微指令所指示之該微碼別名位置中所指定的該參數之該位置保存至目的地儲存位置;以及還原邏輯,用以當該推測執行將被拋棄時,從該目的地儲存位置還原該參數之該位置到由該微碼次常式的該微指令所指示之該微碼別名位置;以及與該處理器耦合之動態隨機存取記憶體(DRAM)。
- 如申請專利範圍第19項所述之系統,其中該參數的該位置包含其中儲存來源資料的位置及其中儲存結果資料的位置之一。
- 如申請專利範圍第19項所述之系統,其中該微碼次常式之該微指令隱含地指示該微碼別名位置,以及其中針對該微碼次常式之該微指令該隱含指示的微碼別名位置為固定。
- 一種用於在微碼呼叫程式與微碼次常式之間傳遞別名參數的設備,包含:微碼貯存;儲存在該微碼貯存中之微碼次常式;儲存在該微碼貯存中之該微碼次常式的微碼呼叫程式,該微碼呼叫程式具有指示目的地儲存位置的保存微指令;複數微碼別名位置,各個微碼別名位置可操作以儲存一值,其中在一微碼別名位置中之一值相應於在該微碼呼 叫程式與該微碼次常式之間傳遞的參數;以及與該些微碼別名位置耦合之保存邏輯,耦合該保存邏輯以從該些微碼別名位置接收該些值,該保存邏輯可操作以,回應於該保存微指令,將來自該些微碼別名位置的該些值保存到由該保存微指令所指示的該目的地儲存位置中,其中該目的地儲存位置不同於該複數微碼別名位置。
- 如申請專利範圍第22項所述之設備,其中該保存微指令還可操作以在將來自該些微碼別名位置的該些值保存到目的地儲存位置中之前,將該些值寫入到該些微碼別名位置。
- 如申請專利範圍第22項所述之設備,其中該保存邏輯包含值結合邏輯,被耦合以從該些微碼別名位置接收該些值,該值結合邏輯可操作以,回應於該保存微指令,結合該些值作為該保存微指令之直接(immediate)。
- 如申請專利範圍第22項所述之設備,其中該保存微指令還可操作保存微指令指標。
- 如申請專利範圍第22項所述之設備,其中在對該微碼次常式的呼叫之前,在該微碼呼叫程式中發生該保存微指令,且其中該微碼次常式具有條件微分支。
- 如申請專利範圍第22項所述之設備,其中在該微碼別名位置之該值表示在該微碼呼叫程式與該微碼次常式之間傳遞的該參數之位置,其中該參數包含來源資料及其中將儲存結果之目的地之其中一者,以及其中該微碼次常式具有一微指令,其具有該複數之微碼別名位置的指示。
- 如申請專利範圍第22項所述之設備,還包含與該目的地儲存位置及該些微碼別名位置耦合之還原邏輯,該還原邏輯可操作以,回應於指示該目的地儲存位置作為來源之一還原微指令,將來自該目的地儲存位置之該些值還原到該些微碼別名位置。
- 如申請專利範圍第22項所述之設備,其中該參數將由該微碼次常式使用以指定其中將執行一操作的模式。
- 如申請專利範圍第22項所述之設備,其中該參數將由該微碼次常式使用以指定其中將使用算術旗標的模式。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/890,292 US20120079248A1 (en) | 2010-09-24 | 2010-09-24 | Aliased Parameter Passing Between Microcode Callers and Microcode Subroutines |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201227503A TW201227503A (en) | 2012-07-01 |
TWI493450B true TWI493450B (zh) | 2015-07-21 |
Family
ID=45871873
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100133945A TWI493450B (zh) | 2010-09-24 | 2011-09-21 | 用於在微碼呼叫程式與微碼次常式之間傳遞別名參數的設備、方法、物件及系統 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20120079248A1 (zh) |
TW (1) | TWI493450B (zh) |
WO (1) | WO2012040531A2 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9329865B2 (en) | 2013-06-11 | 2016-05-03 | Intel Corporation | Context control and parameter passing within microcode based instruction routines |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200525355A (en) * | 2004-01-16 | 2005-08-01 | Ip First Llc | Microprocessor and apparatus for performing speculative load operation from a stack memory cache |
US7694110B1 (en) * | 2003-07-08 | 2010-04-06 | Globalfoundries Inc. | System and method of implementing microcode operations as subroutines |
TW201030612A (en) * | 2009-02-12 | 2010-08-16 | Via Tech Inc | Pipelined microprocessor with fast conditional branch instructions based on static exception state |
TW201033898A (en) * | 2009-03-04 | 2010-09-16 | Via Tech Inc | Microprocessor and method for executing instructions using the same |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6625759B1 (en) * | 2000-02-18 | 2003-09-23 | Hewlett-Packard Development Company, L.P. | Method and apparatus for verifying the fine-grained correctness of a behavioral model of a central processor unit |
US7721175B2 (en) * | 2007-08-21 | 2010-05-18 | Micron Technology, Inc. | System, apparatus, and method for memory built-in self testing using microcode sequencers |
-
2010
- 2010-09-24 US US12/890,292 patent/US20120079248A1/en not_active Abandoned
-
2011
- 2011-09-21 TW TW100133945A patent/TWI493450B/zh not_active IP Right Cessation
- 2011-09-23 WO PCT/US2011/052875 patent/WO2012040531A2/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7694110B1 (en) * | 2003-07-08 | 2010-04-06 | Globalfoundries Inc. | System and method of implementing microcode operations as subroutines |
TW200525355A (en) * | 2004-01-16 | 2005-08-01 | Ip First Llc | Microprocessor and apparatus for performing speculative load operation from a stack memory cache |
TW201030612A (en) * | 2009-02-12 | 2010-08-16 | Via Tech Inc | Pipelined microprocessor with fast conditional branch instructions based on static exception state |
TW201033898A (en) * | 2009-03-04 | 2010-09-16 | Via Tech Inc | Microprocessor and method for executing instructions using the same |
Also Published As
Publication number | Publication date |
---|---|
US20120079248A1 (en) | 2012-03-29 |
WO2012040531A2 (en) | 2012-03-29 |
TW201227503A (en) | 2012-07-01 |
WO2012040531A3 (en) | 2012-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6006248B2 (ja) | 命令エミュレーションプロセッサ、方法、およびシステム | |
CN108139908B (zh) | 移动前缀指令 | |
US20120066483A1 (en) | Computing Device with Asynchronous Auxiliary Execution Unit | |
US8938605B2 (en) | Instruction cracking based on machine state | |
US20160179542A1 (en) | Instruction and logic to perform a fused single cycle increment-compare-jump | |
CN109508206B (zh) | 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统 | |
US10747539B1 (en) | Scan-on-fill next fetch target prediction | |
GB2514882A (en) | Instruction emulation processors, methods, and systems | |
TW201224919A (en) | Execute at commit state update instructions, apparatus, methods, and systems | |
US9329865B2 (en) | Context control and parameter passing within microcode based instruction routines | |
US20200097291A1 (en) | Apparatus and method for tile gather and tile scatter | |
EP2660717A2 (en) | Apparatus for predicate calculation in processor instruction set | |
US9317285B2 (en) | Instruction set architecture mode dependent sub-size access of register with associated status indication | |
WO2012106716A1 (en) | Processor with a hybrid instruction queue with instruction elaboration between sections | |
KR101806279B1 (ko) | 명령어 순서 강제 명령어들의 쌍들, 프로세서들, 방법들, 및 시스템들 | |
US20060168485A1 (en) | Updating instruction fault status register | |
US20220035635A1 (en) | Processor with multiple execution pipelines | |
KR20080087171A (ko) | 피연산자의 빠른 조건부 선택 | |
CN112540792A (zh) | 指令处理方法及装置 | |
CN114253607A (zh) | 用于由集群化解码流水线对共享微代码定序器的乱序访问的方法、系统和装置 | |
US20200326940A1 (en) | Data loading and storage instruction processing method and device | |
US11150979B2 (en) | Accelerating memory fault resolution by performing fast re-fetching | |
TWI493450B (zh) | 用於在微碼呼叫程式與微碼次常式之間傳遞別名參數的設備、方法、物件及系統 | |
US9710389B2 (en) | Method and apparatus for memory aliasing detection in an out-of-order instruction execution platform | |
CN111813447B (zh) | 一种数据拼接指令的处理方法和处理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |