TW201636830A - 用以改善在處理器中重新執行載入之裝置與方法 - Google Patents

用以改善在處理器中重新執行載入之裝置與方法 Download PDF

Info

Publication number
TW201636830A
TW201636830A TW104138410A TW104138410A TW201636830A TW 201636830 A TW201636830 A TW 201636830A TW 104138410 A TW104138410 A TW 104138410A TW 104138410 A TW104138410 A TW 104138410A TW 201636830 A TW201636830 A TW 201636830A
Authority
TW
Taiwan
Prior art keywords
microinstruction
load
loading
execution
core
Prior art date
Application number
TW104138410A
Other languages
English (en)
Other versions
TWI624788B (zh
Inventor
吉拉德M 卡爾
柯林 艾迪
G 葛蘭 亨利
Original Assignee
上海兆芯集成電路有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 上海兆芯集成電路有限公司 filed Critical 上海兆芯集成電路有限公司
Publication of TW201636830A publication Critical patent/TW201636830A/zh
Application granted granted Critical
Publication of TWI624788B publication Critical patent/TWI624788B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一裝置包括了第一保留站和第二保留站。第一保留站派送第一載入微指令,且若第一載入微指令係指示從規定之資源而非從核心上之快取記憶體上擷取運算元之規定之載入微指令,在保留匯流排進行偵測和指示。第二保留站耦接至保留匯流排,且在第一數量之時脈週期後,派送相依之新微指令,以及若在保留匯流排上指示了第一載入微指令係規定之載入微指令,暫存新微指令之派送,直到第一載入微指令取得運算元。複數規定之資源包括經由記憶體匯流排耦接至亂序處理器之系統記憶體,其中規定之載入微指令用以決定系統記憶體之寫入結合之記憶體空間。

Description

用以改善在處理器中重新執行載入之裝置與方法
本發明說明書主要係有關於一微電子領域之技術,特別係有關改善在一亂序(out-of-order)處理器中重新執行載入之一節能機制。
機體裝置技術在過去四十年迅速地發展。尤其在微處理器之發展,從4位元、單一指令、10微米裝置開始,隨者半導體生產技術的進步,使得設計者能夠設計出在架構和密度越來越複雜的裝置。在80和90年代所謂的管線微處理器(pipeline microprocessor)和超純量處理器(superscalar),發展成可在單一晶片上包含百萬顆電晶體。20年後的現今,64位元、32-奈米裝置已被量產,其在單一晶片上具有十億顆電晶體,且包含多個微處理器核心(microprocessor core)來處理資料。
除了指令平行應用在現今的多核心處理器(multi-core processor),亂序執行(out-of-order execution)機制亦被廣泛的使用。根據亂序執行規則,指令以佇列的方式儲存在保留站(reservation station)以供執行單元來執行,且只有因為是舊指令(older instruction)之執行,而在等候一運算元(operand)之那些指令,才會被攔截到保留站,沒有在等候運算 元之指令則會直接被派送去執行。接下來,執行之結果會被依適當的順序以佇列的方式排列並放回暫存器。傳統上在一處理器階段(processor stage),會被稱為一收回狀態(retire state)。因此,指令並未依照原先程式之順序來執行。
因為除了在閒置之狀態,執行單元可用以當舊的指令在等候其運算元時,執行新的指令(younger instruction),因此亂序執行改善了龐大流量之問題。如同此領域具有通常知識者所了解的,指令不會總是成功地執行,因此當一給定之指令無法成功地執行時,那個指令和其他新的指令就必須被重新執行。因為目前的機制,處理器會停止目前之執行,退回機器狀態(machine state)至無法成功執行指令之前之時間點,且重新執行未成功執行之指令和在未成功執行之指令被派送前已派送或未派送之所有新的指令,因此這樣的概念被稱為"重新執行(replay)"。
然而,重新執行是一例外情況(exceptional case),且重新執行之效能影響通常係可忽略的。然而,暫存在保留站直到獲得其運算元之暫存指令之效能影響則很大,微處理器之設計者已發展了加速技術,以允許當在執行前,有很高的可能性可取得指令之運算元時,特定的指令會先被派送。不僅特定的指令會被派送,運行之機制可適當地及時提供這些指令所需之運算元。
在這應用中提出了一種加速技術,在此加速技術中,在其執行會導致從快取記憶體查詢運算元之一載入指令被派送後,需要被假設有很高的機率存在在一核心上之快取記憶 體之一運算元之新的指令,會根據一規定之數量之時脈週期被派送。因此,當載入指令被派送時,複數在等待運算元之新指令會被安置在各自的保留站中,直到所規定之數量之時脈週期結束,然後新指令會被派送,以進行具有高確定性之執行,也就是新指令將可取得其所需的運算元。
使用上述所提到之加速技術所產生之效能改善係顯著的,所以微處理器之設計者傳統上會全面地應用此技術在所有載入指令(例如:來自輸入/輸出的載入、不可快取之載入(uncacheable loads)、來自中斷暫存器(interrupt register)之載入、特定載入(special loads)等),儘管當有許多載入指令時確實會花費比制訂週期還要長的時間來取得其運算元,因此在預期可獲得運算元之情況下,需要重新執行所有被派送之新指令。使用上述之加速技術所產生之效能改善大大補償了,不常發生之重新執行所導致之效能損失。
但是隨著多核心處理器技術持續的進步,設計者發現了很少被存取之特定處理器資源,例如:層級2快取(level 2(L2)cache)、中斷控制器(interrupt controller)、熔絲陣列(fuse array)等,比較適合配置在多核心處理器晶片上一共有的區域,而不是複製(replicate)到每一核心中。因此,像是上面所提到之資源,會被處理器核心所共享。如同此領域具有通常知識者所了解的,從不在核心之資源(off-core resource)(例如:一熔絲陣列)中載入一運算元所花費的時間會比從一在核心之資源(on-core resource)(例如:一層級1快取(L1 cache))中載入還要長。此外,縱使根據上述加速技術需要重新執行被派送之 新指令所導致之效能損失並不大,但目前的發明人員發現到,其對電源使用之影響係值得注意的,對於龐大數量之指令在上述條件下被執行時,指令幾乎都會被重新執行。此外,這些指令之起始執行(initial execution)本質上其實係浪費電源的,因此,這樣的情況對於電池壽命(battery life)、熱輪廓(thermal profile)和可靠度(reliability)而言係不利的。
因此,能夠藉由改善重新執行之所需次數以節省處理器操作時所花費之電源之設備和方法係需要的。
此外,在一亂序處理器中,為了節省處理器之電源,降低附載重新載入之機制係需要的。
有鑑於上述先前技術之問題、缺點和限制,本發明提供了用以改善在一處理器重新執行載入之裝置和方法。
根據本發明之一實施例提供了一用以改善在一亂序處理器重新執行載入之裝置。上述裝置包括了一第一保留站以及一第二保留站。上述第一保留站用以派送一第一載入微指令,以及若上述第一載入微指令係指示從複數規定之資源之一者而非從核心上之快取記憶體上擷取一運算元之一規定之載入微指令,用以在一保留匯流排進行偵測和指示。上述第二保留站耦接至上述保留匯流排,且在上述第一載入微指令派送後之一第一數量之時脈週期之後,用以派送和上述第一載入微指令相依之一或複數新的微指令以進行執行,以及若在上述保留匯流排上指示了,上述第一載入微指令係上述規定之載入微指令,上述第二保留站用以暫存上述一或複數新的微指令之派 送,直到上述第一載入微指令取得上述運算元。上述複數規定之資源包括經由一記憶體匯流排耦接至上述亂序處理器之系統記憶體,其中上述規定之載入微指令係用以決定上述系統記憶體之寫入結合之記憶體空間。
根據本發明之另一實施例提供了一用以改善重新執行載入之裝置。上述裝置包括具有複數核心一多核心處理器。每一上述複數核心包括一第一保留站,以及一第二保留站。上述第一保留站用以派送一第一載入微指令,以及若上述第一載入微指令係指示從複數規定之資源之一者而非從核心上之快取記憶體上擷取一運算元之一規定之載入微指令,用以在一保留匯流排進行偵測和指示。上述第二保留站耦接至上述保留匯流排,且在上述第一載入微指令派送後之一第一數量之時脈週期之後,用以派送和上述第一載入微指令相依之一或複數新的微指令以進行執行,以及若在上述保留匯流排上指示了,上述第一載入微指令係上述規定之載入微指令,上述第二保留站用以暫存上述一或複數新的微指令之派送,直到上述第一載入微指令取得上述運算元。上述複數規定之資源包括經由一記憶體匯流排耦接至上述亂序處理器之系統記憶體,其中上述規定之載入微指令係用以決定上述系統記憶體之寫入結合之記憶體空間。
根據本發明之另一實施例提供了一用以改善在一亂序處理器重新執行載入之方法。上述方法之步驟包括:耦接上述亂序處理器至複數規定之資源,上述複數規定之資源包括經由一記憶體匯流排耦接至上述亂序處理器之一系統記憶 體;經由一第一保留站派送一第一載入微指令,以及若上述第一載入微指令係指示從複數規定之資源之一者而非從核心上之快取記憶體上擷取一運算元之一規定之載入微指令,在一保留匯流排進行偵測和指示,以及其中上述規定之載入微指令係用以決定上述系統記憶體之寫入結合之記憶體空間;以及經由耦接至上述保留匯流排之一第二保留站,在上述第一載入微指令派送後之一第一數量之時脈週期之後,派送和上述第一載入微指令相依之一或複數新的微指令以進行執行,以及若在上述保留匯流排上指示了,上述第一載入微指令係上述規定之載入微指令,暫存上述一或複數新的微指令之派送,直到上述第一載入微指令取得上述運算元。
關於本發明其他附加的特徵與優點,此領域之熟習技術人士,在不脫離本發明之精神和範圍內,當可根據本案實施方法中所揭露之執行聯繫程序之使用者裝置、系統、以及方法,做些許的更動與潤飾而得到。關於產業利用性,本發明可應用在一般目的或特別目的之運算裝置中使用之一微處理器。
100、200、300、400、500、600、700‧‧‧方塊圖
101、301‧‧‧核心1、核心2、核心3、核心4
102、302‧‧‧非核心資源
103、303‧‧‧層級2快取
104、304‧‧‧隨機存取記憶體
105、305‧‧‧匯流排單元
106、306‧‧‧輸入/輸出單元
107、307‧‧‧高階可編程中斷控制器
108、308‧‧‧熔絲陣列
110、310‧‧‧裝置晶片
111、311‧‧‧匯流排B1
112、312‧‧‧匯流排B2
113、313‧‧‧匯流排B3
114、314‧‧‧匯流排B4
201、401‧‧‧處理器核心
211、411‧‧‧提取層(單元)
212、412‧‧‧轉譯層
213、413‧‧‧更名層
214、414‧‧‧重新執行多工層
221.1~221.N、221L‧‧‧保留站RS1~保留站RSN、保留站RSL
222.1~222.N、222.L‧‧‧執行單元EU1~執行單元EUN、執行單元EUL
223、423‧‧‧層級1快取
224、424‧‧‧重排緩衝器
225、425‧‧‧收回單元
226、426‧‧‧暫存資料
230、430‧‧‧非核心資源
241、242、243、244、245、251.1~251.N、251.L、252、253、254、255、256、257、258、441、442、443、444、445、451.1~451.N、451.L、452、453、454、455、456、457、458‧‧‧匯流排
320‧‧‧重新執行縮減器元件
421.1~421.N、421L‧‧‧保留站RS1~保留站RSN、保留站ERSL
422.1~422.N、422.L‧‧‧執行單元EU1~執行單元EUN、執行單元EUL
461‧‧‧非核心暫存元件
462‧‧‧非核心未命中元件
501‧‧‧非核心載入運算元偵測邏輯電路
510、610、710‧‧‧微指令暫存器
511、611、711‧‧‧微指令標籤欄位OP TAG
512、612、712‧‧‧運算碼欄位MICRO OP
513、613、713‧‧‧資源A欄位SRC A
514、614、714‧‧‧資源B欄位SRC B
515、615、715‧‧‧資源C欄位SRC C
516、616、716‧‧‧標籤A欄位TAG A
517、617、717‧‧‧標籤B欄位TAG B
518、618、718‧‧‧標籤C欄位TAG C
601‧‧‧相依性檢查邏輯單元
701‧‧‧載入未命中排除邏輯電路
MEM‧‧‧匯流排
I/O‧‧‧匯流排
CTRL‧‧‧匯流排
MISS‧‧‧未命中信號
REPLAY‧‧‧重新執行信號
WB‧‧‧寫回信號
HOLDY‧‧‧保留和暫留信號、保留信號
READY‧‧‧備妥信號
NOMISS‧‧‧無未命中信號
第1圖係顯示目前使用配置在每一核心101外部之共用資源之多核心處理器之方塊圖100。
第2圖係顯示在第1圖中每一當前之核心101中例示性之核層(core stage)之方塊圖200。
第3圖係顯示根據本發明之實施例所述之對於來自非核心 資源之載入具有一節能機制之多核心處理器之區塊圖300。
第4圖係顯示在第3圖中每一核心301中例示性之核層(core stage)之方塊圖400。
第5圖係根據本發明之實施例所述之第4圖之非核心暫存元件461之區塊圖500。
第6圖係根據本發明之實施例所述之第4圖之每一保留站RS1-RSN之方塊圖600。
第7圖係根據本發明之實施例所述之第4圖之非核心未命中元件462之方塊圖700。
以下描述本發明的示例性和說明性的實施例。為了清楚起見,在該說明書中沒有對實際實現的所有功能進行描述,對於本領域具有通常知識者而言將會理解的是,在對於任何該實際實現的開發中,可以進行許多實施方案特定的決定,以實現特定目標,諸如符合系統相關和業務相關的約束,其可以根據實現方案而不同。此外,應該理解的是,該開發工作可能是複雜和耗時的,但是對於受益於本公開的本領域具有通常知識者而言其仍然是例行的任務。優選實施例的各種修改對於本領域具有通常知識者而言將是顯而易見的,並且本文中所界定的一般原理可應用於其它實施例。因此,本發明並不限於這裡示出和描述的具體實施例,而是應被賦予與這裡所公開的原理和新穎特徵相一致的最廣範圍。
本發明將參考附圖進行說明。在附圖中示意性地示出的各種結構、系統、和設備僅僅是出於解釋的目的,以便 使其不以本領域具有通常知識者所公知的細節來模糊了本發明。然而,包括附圖來描述和解釋本發明的說明性示例。應該理解的是,在此所用的字彙和片語應該被理解和解釋為具有與現有技術的本領域具有通常知識者對於這些字彙和片語的理解一致的含義。在此,術語或者短語的特定定義,(即不同於本領域具有通常知識者所理解的常規和習慣意思的定義)沒有通過術語或者短語的一貫的使用來暗示。對於用以具有特定含義(即具有不同於技術人員所理解的含義)的術語或短語,將以直接和毫不含糊地提供用於對於術語或短語的特定定義的定義方式來在說明書中清楚地闡明該特定的定義。
積體電路(Integrated Circuit,IC):組裝在半導體材料上之一小部分區塊(傳統上係矽晶片(silicon))之一電子電路集合。積體電路(IC)亦可稱為一晶片(chip)、微晶片(microchip),或一晶元(die)。
中央處理單元(Central Processing Unit,CPU):藉由對資料進行運算(包括算術運算(arithmetic operation)、邏輯運算(logic operation),以及輸入/輸出運算(input/output operation)),來執行電腦程式(也稱為“電腦應用”或“應用程式”)之指令之電子電路(即硬體)。
微處理器(Microprocessor):在一單一積體電路上具有如同中央處理單元功能之電子裝置。微處理器接收數位資料作為輸入,根據從一記憶體(在晶片上(on-die)或不在晶片上(off-die))擷取之指令來處理資料,以及將藉由指令指示之操作產生之結果作為輸出。一般目的之微處理器會使用在桌上型電 腦(desktop)、行動電話(mobile),或平板電腦(tablet computer)中,以及用來進行計算、文字編輯、多媒體播放,以及瀏覽網路。微處理器亦會被配置在一嵌入式系統以控制不同的裝置,這些包括電器用品(appliance)、行動電話、智慧型手機(smart phone),以及工業控制裝置(industrial control device)。
多核心處理器(Multi-Core Processor):亦可稱作一多核心微處理器(multi-core microprocessor)。多核心處理器係表示具有配置在一單一積體電路上之複數中央處理單元(核心)之微處理器。
指令集架構(Instruction Set Architecture,ISA)或指令集(Instruction Set):計算機結構中與程序設計有關的部分,包含了資料類型(data type),指令集,暫存器,尋址模式(addressing mode),記憶體結構(memory architecture),中斷(interrupt),異常處理(exception handling)以及輸入/輸出(input/output)。指令集架構包含運算碼(opcode)(即機器語言指令)集合之設定,以及由特定中央處理單元執行的原生指令(native command)。
x86-相容性微處理器(x86-Compatible Microprocessor):能夠執行根據x86指令集架構所轉譯之計算機應用之微處理器。
微程式碼(Microcode):用以進行與複數微指令(micro instruction)相關之項目。微指令(亦稱作原生指令(native instruction)),係在微處理器子單元(sub-unit)層級之指令。例示性之子單元包括整數單元(integer unit)、浮點單元(floating point unit)、多媒體單元(multimedia(MMX)unit),以及載入/儲存單元(load/store unit)。舉例來說,會藉由精簡指令集計算機(reduced instruction set computer,RISC)微處理器來直接執行微指令。複雜指令集計算機(complex instruction set computer,CISC)微處理器,例如:x86-相容性微處理器,x86指令會轉譯成相關之微指令,且相關的微指令會直接藉由一子單元或在複雜指令集計算機微處理器內的子單元來執行。
熔絲(Fuse):一導電結構,傳統上會以燈絲(filament)來配置,其能夠藉由讓電壓通過燈絲且/或電流流過燈絲,在所選取之位置被斷開。熔絲會藉由習知之製作技術(fabrication technology)配置在晶片表面型態上之特定的區域,以在所有可能程式化之區域都配置燈絲。一熔絲結構會熔斷(或不熔斷)在製作後,可提供配置在晶片上之對應裝置所想要之可程式化特性。
根據上述討論到之多核心處理器中載入機制之背景,以及為了從非核心(non-core)資源執行載入,使用在目前多核心處理器之相關技術,關於目前技術之限制及缺點之討論將藉由第1-2圖來做說明。接者,會藉由參考第3-7圖,來說明本發明之討論內容。
回到第1圖,第1圖係顯示目前使用配置在每一核心101外部之共用資源之多核心處理器之方塊圖100。方塊圖100顯示了一裝置晶片110,在裝置晶片110上配置了四個處理器核心101。特別說明的是,在此所述之四核心(即四個核心101)之多核心微處理器僅係用以說明,但並非用以限制本發 明。本發明所提出之原理和技術特徵亦可應用在具有不同數目之核心101之多核心微處理器。
如同本領域具有通常知識者所了解的,為了設計和/或商業相關的原因,設計者會在核心101間選擇共享某些處理器資源。以效能為考量而言,這些共享資源傳統上會如同核心101一樣被配置在相同的裝置晶片110上,且核心101會經由高速匯流排(high speed busses)111-114來存取這些共享資源。方塊圖100顯示了例式性之共享資源,例如:層級2快取103、隨機存取記憶體(random access memory,RAM)104、匯流排單元(bus unit)105、輸入/輸出單元106、高階可編程中斷控制器(Advanced Programmable Interrupt Controller,APIC)107,以及熔絲陣列108。整體而言,這些如同核心101配置在相同的裝置晶片110上,但卻是配置在在核心101外部之共享資源103-108,在之後內容將會視為非核心資源102。因此,匯流排B1 111使得核心1 101能夠存取非核心資源102。匯流排B2 112使得核心2 101能夠存取非核心資源102。匯流排B3 113使得核心3 101能夠存取非核心資源102。匯流排B4 114使得核心4 101能夠存取非核心資源102。在傳統上之配置,多核心處理器會耦接至在裝置晶片110外部之其他元件,例如:系統記憶體(經由一記憶體匯流排MEM進行存取)、輸入/輸出元件(經由匯流排I/O進行存取),以及系統控制元件(經由控制匯流排CTRL進行存取)。上述系統記憶體包括一或多頁表,用以儲存虛擬位址以及實體位址間的一或多映射,並且可進行上述一或多頁表之一頁表查找以擷取運算元。在其他實施 例中,非核心資源、系統記憶體、輸入/輸出元件或系統控制元件可能未和多核心處理器被安置在相同的晶片上,而藉由匯流排彼此耦接。
在操作上,每一核心101在作業系統控制下會執行從系統記憶體所擷取之相關的指令,以及執行對應想要執行之應用之運算元。一或多個核心101可存取一或多非核心資源102,且將經由對應之匯流排B1-B4以一控制之方式來存取一或多非核心資源102。舉例來說,在電源初始設定期間,一或多核心101會從熔絲陣列108執行載入操作以取得配置參數(熔絲陣列108儲存對應之核心的配置資料、對應的載入微指令),或會從隨機存取記憶體104執行載入操作以取得派送資訊(例如是:處理器之微程式碼)。在一般操作時,核心101會存取層級2快取103以讀取/寫入不在核心上快取(例如層級1快取)之記憶體運算元。核心101會存取匯流排單元105,以進行讀取/寫入記憶體系統之動作,或者核心101會存取輸入/輸出單元106以經由輸入/輸出匯流排執行輸入/輸出之操作。核心101更會存取高階可編程中斷控制器107以執行中斷操作。
現在來談論第2圖,第2圖係顯示在第1圖中每一當前之核心101中例示性之核層(core stage)之方塊圖200。在第2圖中顯示了配置在裝置晶片110之處理器核心201。處理器核心201包括經由匯流排241耦接至轉譯層(translator stage)212之一提取層(fetch stage)211。轉譯層212經由匯流排242耦接至更名層(rename stage)213。更名層213經由匯流排243耦接至重新執行多工層(replay mux stage)214。重新執行多 工層214經由匯流排244耦接至複數保留站RS1 221.1-RSN 221.N以及一載入保留站RSL 221.L。每一保留站RS1 221.1-RSN 221.N、RSL 221.L經由對應之派送匯流排251.1-251.N、251.L,耦接至一對應之執行單元EU1 222.1-EUN 222.N、EUL 222.L。保留站RS1 221.1-RSN 221.N、RSL 221.L經由匯流排245耦接至一暫存資料226。每一保留站用以在所對應之匯流排(保留匯流排)進行偵測和指示。
注意地是,除了執行單元EUL外,剩餘的執行單元EU1-EUN會包括典型超純量處理器所包含之單元,例如整數單元、浮點單元、多媒體單元以及儲存單元。接下來則特別說明執行單元EUL,執行單元EUL其主要功能係從不同資源載入運算元,不同資源可像是系統記憶體、系統輸入/輸出,以及如同第1圖所述之非核心資源230。
此外,執行單元EUL藉由匯流排254耦接至層級1快取223,以及藉由匯流排256耦接至非核心資源230。對於大部分記憶體運算元而言,載入單元222.L會先存取層級1快取223。若載入在層級1快取223中未命中MISS,載入單元222.L就必須存取在非核心資源230之層級2快取。執行單元EU1-EUN、EUL亦經由匯流排252耦接至一重排緩衝器(reorder buffer)224。此外,執行單元EUL藉由對應未命中信號MISS之匯流排253耦接至重排緩衝器224。重排緩衝器224藉由對應重新執行信號REPLAY之匯流排258耦接至重新執行多工層214,且藉由匯流排257耦接至收回單元(retire unit)225。收回單元藉由對應寫回信號WB(write back)之匯流排255耦接至暫 存資料226。
注意地是,在第2圖所示之核層中,處理器核心201僅係用以舉例說明一現今的超純量處理器,或亂序處理器核心,以及僅係用以為了說明本發明,但本發明並不以此為限。對於此領於具有通常知識者而言,處理器核層可根據不同的架構以及應用而有所變化。
在操作上,程式指令(未顯示)係提取層(提取單元)211從記憶體所提取。在一x86-相容性微處理器核心201中,這些程式指令和x86指令集架構一致。程式指令依序在匯流排241上提供給轉譯層212。轉譯層212轉譯這些程式指令成一或多個微指令,這些微指令用以在對應之執行單元EU1-EUN、EUL中來指示次操作(sub-operation),以執行程式指令所指示之操作。接著微指令會在匯流排242上提供給更名層213,其中在一些微指令所指示之結構暫存器(architectural register)(即運算元暫存位置)會重新映射至在處理器核心201中的硬體暫存器(未顯示),以加速對於獨立微指令串(micro instruction stream)之執行平行化(execution parallelism)。更名層213亦會根據串列之程式順序(serial program order)來標記(tag)每一微指令,且在微指令中的資源和目標欄位亦會被標記為和這些微指令之一或多運算元所相依之新微指令之標籤。接著,更名之微指令會在匯流排243上提供給重新執行多工層214。
重新執行多工層214執行在亂序處理器核心201中的多個指令。首先,重新執行多工層214會讀取在每一更名 之微指令中的運算元,以決定適當的執行單元EU1-EUN、EUL來進行執行。舉例來說,更名之整數微指令會藉由執行單元EU1來執行。浮點微指令會藉由執行單元EU2來執行等等。此外,在目前應用特別關注地是,更名之載入微指令會藉由執行單元EUL來執行。因此,重新執行多工層214會提供一或多個更名之微指令至一或多保留站RS1-RSN、RSL,以讓這些指令在保留站RS1-RSN、RSL等候被派送至對應之執行單元EU1-EUN、EUL。
每一保留站RS1-RSN、RSL存取暫存資料226以讀取佇列排序用以進行操作之更名之微指令所需之運算元。未標示為舊的更名之微指令之標籤之更名之微指令(即此更名之微指令並未和舊的更名之微指令相依(dependent))會立即被派送至對應之執行單元EU1-EUN、EUL進行執行。相依之更名之微指令(即包含有尚未完成執行之舊的更名之微指令之標籤之更名之微指令)會逐一的儲存到保留站RS1-RSN、RSL中,直到可獲得其被標示之相依之運算元時為止。當可獲得被標示之相依之運算元時,這些運算元會提供給其所相依之更名之微指令,且這些更名之微指令會被派送至對應之執行單元EU1-EUN、EUL進行執行。當執行單元EU1-EUN、EUL不執行微指令時,其會執行一節能功能。一般來說,當執行單元EU1-EUN、EUL不執行微指令時,在執行單元EU1-EUN、EUL內的時脈(clock)會停止以節省大量的電源。
更名之微指令以及其對應之相關結果會經由匯流排252提供給重排緩衝器224。重排緩衝器224會安置來自更 名之微指令之亂序執行所產生之所有結果,恢復到原來的程式順序。也就是說,來自更名程式暫存器之結果會重新映射至其所對應之結構暫存器(architectural register),且會根據執行之特定程式順序,將這些結果排序進入結構暫存器中。已經成功完成執行具有適當結果之微指令會在匯流排257上提供給收回單元225。收回之微指令之結果會在對應寫回信號WB之匯流排255上被寫回至暫存資料226中。
如同此領域具有通常知識者所了解的,有許多情況會造成更名之微指令無法成功地執行,舉例來說(但不以此為限),像是程式例外(program exception),一般中斷(general interrupt)、輸入/輸出中斷(I/O interrupt)、分支例外(branch exception)等等。當重排緩衝器224判斷更名之微指令無法成功地執行時,其必須和已發送用以執行之所有新的更名之微指令一起被重新發送(重新執行)。因此,重排緩衝器224會在對應重新執行信號REPLAY之匯流排258上,藉由提供無法成功被執行之更名之微指令之標籤,啟始一重新執行事件。
當一無法成功被執行之更名之微指令之標籤被提供給重新執行多工層214時,重新執行多工層214會回應一機器狀態,以和更名之微指令之執行相一致,其中此更名之微指令之執行係起始於其標籤在匯流排258上被提供之更名之微指令。
如同此領域具有通常知識者所了解,為了改善效能,微處理器之設計者經常對關於程式將如何執行作出假設。舉例來說,在此領域中所熟知之作法,不會採用具有龐大比例 之分支。因此,提取單元(提取層)211會根據這樣的假設用以讓指令排隊等候執行。若一分支未被採用,政體的執行速度就會被改善。若此分支被採用,所有比此分支還舊之指令必須被來自所採用之程式路徑之指令所取代。
微處理器之設計所做的另一假設為一載入微指令將會在一特定數目之時脈週期中,在層級1快取223命中(hit),且此假設係基於根據存取層級1快取223之設計,在所需時脈週期數目內,在層級1快取223命中之統計量,例如:百分之90之命中率。本發明中會採用4時脈週期來存取層級1快取223,然而,這僅係用以作為說明之目的,本發明並不以此為限。其他時脈週期之數目亦可被考慮。
此外,保留站RS1-RSN可包括邏輯元件。在派送舊的載入指令之後,邏輯元件用以暫存(stall)其標籤係對應舊的載入微指令之更名之微指令,直到過了四個時脈週期。然後,假設在四個時脈週期期間,舊的微止令將會在層級1快取223命中,且將可取得標示之運算元之情況下,派送新的更名之微指令至其所對應之執行單元EU1-EUN。雖然在第2圖未顯示,但必須注意地是,執行單元EU1-EUN、EUL亦可存取在載入操作可獲得之運算元,且提供這些運算元給目前執行之微指令。對於層級1快取223命中之載入而言,運算元會被提供給所派送之相依之新的微指令,其中此新的微指令執行完成之速度會快於提供原先之運算元之情況。但是對於無法在層級1快取223中命中之載入(根據百分之90之命中率之假設下,未命中之機率大概為百分之10)而言,在載入成功完成後,在 要命中之假設下,被派送之所有相依之新的微指令,都必須被重新執行。因此,當無法在層級1快取223命中時,執行單元EUL將會藉由在對應未命中信號MISS之匯流排253上指示未命中之載入指令之標籤,來通知重排緩衝器224,以啟動新的相依之指令之重新執行。
以效能的觀點來看這樣的方案係極有效的,對大多數目前的快取係非常有效率的,在一般施行的方式會在載入指令派送後,根據一假定之快取存取數目之時脈週期(例如:四個時脈週期),在此數目之時脈週期,暫存與一載入微指令相依之所有微指令。相依之微指令會停留在各自的保留站RS1-RSN中,且當假設規定在載入微指令之運算元可從層級1快取223獲得時,相依之微指令就會被派送。一般來說,此加速方法會使用在所有載入指令,這些載入指令包括了用以存取除了層級1快取223之外之資源的載入指令。因為這樣類型的載入指令比起記憶體載入指令係相對地不常見,所以關於重新執行存取除了記憶體之外之資源之載入指令對效能所產生之影響一般而言係可被忍受的。舉例來說,當取得一載入微指令超過一特定數量之時脈周期(例如:四個時脈週期)才成功執行(即解決(resolve)),執行單元EUL將會表示有一不命中在對應未命中信號之匯流排,因此造成了在完成載入後,相依之新的微指令會被重新執行。
上述技術在過去幾年良好地運用在改善超純量處理器201之效能,然而當這樣的方法被應用在如第1圖所示之多核心處理器之配置時,現今的發明人員發現到了會有額外的 挑戰因此產生出來。更具體地來說,像這樣的方法雖然藉由存取到層級1快取223所控制之配置中相當有效,但在電源之使用上並沒有效率,當此方法應用在越來越頻繁用以存取非核心資源230之一多核心處理器配置時,和使用在目前層級1快取223相比,對於非核心資源230之存取時間係非常慢的。
也就是說,任何用以特別指示非核心資源(規定資源)230(例如:熔絲陣列108、匯流排單元105(針對不能快取之載入)、高階可編程中斷控制器107、輸入/輸出單元106、層級2快取103、以及隨機存取記憶體104)之載入微指令,將導致具有來自非核心資源230之載入之標籤之相依之新的微指令重新執行。此外,目前發明人員觀察到,當沒有太多的效能命中(performance hit),這些相依之新微指令所浪費之起始執行(initial execution)會導致龐大的電源花費,由於保證被重新執行之載入微指令會被派送至執行單元EU1-EUN,因此將會使用到原本會藉由內部電源管理機制節省下來的電源。
本發明根據一新的方法,提供了藉由降低載入重新執行之次數,以節省亂序多核心處理器中的電源之一設備和方法,來克服了上述所關注之目前的載入機制之限制。此新的方法將會在底下參考第3-7圖來進行談論。
現在來參考第3圖。第3圖係顯示根據本發明之實施例所述之對於來自非核心資源之載入具有一節能機制之多核心處理器之區塊圖300。區塊圖300顯示了一裝置晶片310,在裝置晶片310配置了四個處理器核心301。特別說明的是,在此所述之四核心301僅係用以說明,但並非用以限制本 發明。本發明所提出之原理和技術特徵亦可應用在具有不同數目之核心301,其中來自非核心資源之載入操作所花費之存取時間,會長於在核心上快取之存取。
如同第1圖所示之多核心處理器,根據本發明之實施例所述之多核心處理器會包括非核心資源302,非核心資源302傳統上會如同核心301一樣配置在相同的晶片310上,且每一核心301會經由高速匯流排311-314來存取非核心資源302。區塊圖300顯示了例示性之共享資源,例如:層級2快取303、隨機存取記憶體304、匯流排單元305、輸入/輸出單元306、高階可編程中斷控制器307,以及熔絲陣列308,但本發明並不以此為限。因此,匯流排B1 311使得核心1 301能夠存取非核心資源302。匯流排B2 312使得核心2 301能夠存取非核心資源302。匯流排B3 313使得核心3 301能夠存取非核心資源302。匯流排B4 314使得核心4 301能夠存取非核心資源302。在傳統上之配置,多核心處理器會耦接至在晶片310外部之其他元件,例如:系統記憶體(經由一記憶體匯流排MEM進行存取)、輸入/輸出元件(經由匯流排I/O進行存取),以及系統控制元件(經由控制匯流排CTRL進行存取),但本發明並不以此為限。上述系統記憶體包括一或多頁表,用以儲存虛擬位址以及實體位址間的一或多映射,並且可進行上述一或多頁表之一頁表查找以擷取運算元。在其他實施例中,非核心資源、系統記憶體、輸入/輸出元件或系統控制元件可能未和多核心處理器被安置在相同的晶片上,而藉由匯流排彼此耦接。系統控制元件可包括,一快速週邊組件互連(Peripheral Component Interconnect Express,PCI-e)元件、一週邊組件互連(Peripheral Component Interconnect,PCI)元件、一通用序列匯流排(Universal Serial Bus,USB)元件、一圖形接合器(Graphics Adaptor)、一共處理器(co-processor),以及一處理器間(inter-processor)溝通元件,但並不以此為限。
和第1圖之多核心處理器相比較,本發明所述之多核心處理器在每一核心301中包括了重新執行縮減器(replay reducer)元件320。在一實施例中,重新執行縮減器元件320用以偵測除了在核心快取記憶體(未顯示)外用以指示資源之載入,以暫存派送之新的相依微指令直到載入結束,以及排除原本會導致重新執行之任何指示之判定。因此,在核心301之一或多執行單元(未顯示),由於暫存了新的相依微指令之派送的關係,會進入一電源管理模式,也因此可以節省晶片310上原本會浪費之電源。
在操作上,每一核心301在作業系統的控制下,會執行從系統記憶體中所擷取之相關的指令,且會執行對應預期應用之運算元上之操作。一或多個核心301會需要存取一或多非核心資源302,且會經由對應之匯流排B1-B4,透過一控制方法,存取一或多非核心資源302。舉例來說,在電源初始化期間,一或多核心301會從熔絲陣列308執行載入操作,以擷取配置參數(熔絲陣列308儲存對應之核心的配置資料、對應的載入微指令),或者會從隨機存取記憶體304執行執行載入操作,以擷取微碼插入(micro patch)且/或其他配置資訊(例如是:處理器之微程式碼)。在一般操作期間,核心301會存 取層級2快取303,以讀取/寫入已從系統記憶體快取之記憶體運算元,其中此記憶體運算元並不會出現在核心之快取中(例如:層級1快取)。核心301會存取匯流排單元305,以讀取/寫入系統記憶體,或者核心301會使用輸入/輸出單元306以經由輸入/輸出匯流排執行輸入/輸出之操作。核心301會存取匯流排單元305,以從控制元件讀取控制資料,或寫入控制資料至控制元件。核心301更會存取高階可編程中斷控制器307,以執行中斷操作。
並非自動地表示由於來自非核心資源302之載入之不命中,導致相依之新的微指令串之重新執行,而是重新執行縮減器元件320會暫存(延遲)相依之新的微指令串之執行,直到載入結束,因此使得執行單元之電源管理功能能夠被使用。在一實施例中,重新執行縮減器元件320亦會偵測未明確針對非核心資源308但原先被保證會造成未命中指示之其它類型之載入。其它類型之載入包括,輸入/輸出載入、需要一特定數量之週期之載入、習知之需要頁表查找(page table walk),以進行像是關於第二層級位址轉譯之載入(即巢狀呼叫(nested paging)、x86擴展頁面表(extended page table)載入),由x86特定匯流排周期(例如:關閉(shutdown)、暫停(halt)、清除(flush)等)之執行所產生之載入,以及已知解決無法快取記憶體空間之載入、或已知解決寫入結合之記憶體空間之載入。其中,上述之載入指令係用以決定系統記憶體之寫入結合之記憶體空間。在其它實施例中則考慮了任何類型之載入操作之偵測,其中這樣的做法有很大的可能性會花費比規定之數量之時脈周 期還長的時間來完成。
回到第4圖,第4圖係顯示在第3圖中每一核心301中例示性之核層(core stage)之方塊圖400。在方塊圖400中顯示了配置在晶片310之處理器核心401。處理器核心401包括經由匯流排441耦接至轉譯層(translator stage)412之一提取層(fetch stage)411。轉譯層412經由匯流排442耦接至更名層(rename stage)413。更名層413經由匯流排442耦接至重新執行多工層(replay mux stage)414。
重新執行多工層414經由對應保留和暫留信號HOLDY之匯流排244耦接至複數保留站RS1 421.1-RSN 421.N以及一增強載入保留站ERSL 421.L。增強載入保留站ERSL 421.L包含一非核心暫存元件461。每一保留站RS1-RSN、ERSL經由對應之派送匯流排451.1-451.N、451.L,耦接至一對應之執行單元EU1 422.1-EUN 422.N、EUL 422.L。保留站RS1-RSN、ERSL經由匯流排445耦接至一暫存資料426。每一保留站用以在所對應之匯流排(保留匯流排)進行偵測和指示。
注意地是,除了執行單元EUL外,剩餘的執行單元EU1-EUN會包括典型超純量處理器所包含之單元,例如整數單元、浮點單元、多媒體單元以及儲存單元。執行單元EUL係一載入單元422.L,且其主要功能係從不同資源載入運算元,不同資源可像是系統記憶體、系統輸入/輸出,以及如同第3圖所述之非核心資源430,但本發明並不以此為限。執行單元EUL更包括一非核心未命中元件(uncore miss)UMISS 462。
此外,執行單元EUL藉由匯流排454耦接至層級1快取423,以及藉由匯流排456耦接至非核心資源230。對於記憶體運算元而言,載入單元(執行單元)422.L會先存取層級1快取423。若載入在層級1快取423中未命中MISS,載入單元422.L就必須存取在非核心資源430之層級2快取(未顯示)。執行單元EU1-EUN、EUL亦經由匯流排452耦接至一重排緩衝器(reorder buffer)424。此外,執行單元EUL藉由對應未命中信號MISS之匯流排453耦接至重排緩衝器424。重排緩衝器424藉由用來對應重新執行信號REPLAY之匯流排458耦接至重新執行多工層414,藉由匯流排457耦接至收回單元(retire unit)425,以及藉由對應保留和暫留信號HOLDY之匯流排444耦接至保留站RS1-RSN、ERSL。收回單元藉由對應寫回信號WB(write back)之匯流排455耦接至暫存資料426。
注意地是,在第4圖所示之核層僅係用以舉例說明本發明,但本發明並不以此為限。因為第4圖所示之核層僅係以亂序處理器核心來做為例子,對於此領於具有通常知識者而言,能夠將本發明所提出之作法,應用在不同的架構以及應用所需的其它處理器核層之配置上
在操作上,程式指令(未顯示)係藉由提取層(提取單元)411從記憶體所提取。在一x86-相容性微處理器核心401中,這些程式指令和x86指令集架構一致。程式指令依序在匯流排441上提供給轉譯層412。轉譯層412轉譯這些程式指令成一或多個微指令,這些微指令用以在對應之執行單元EU1-EUN、EUL中來指示次操作(sub-operation),以執行程式 指令所指示之操作。接著微指令會在匯流排442上提供給更名層413,其中在一些微指令所指示之結構暫存器(architectural register)(即運算元暫存位置)會重新映射至在處理器核心401中的硬體暫存器(未顯示),以加速對於獨立微指令串(micro instruction stream)之執行平行化(execution parallelism)。更名層413亦會根據串列之程式順序(serial program order)來標記(tag)每一微指令,且在微指令中的資源和目標欄位亦會被標記為和這些微指令之一或多運算元所相依之新微指令之標籤。接著,更名之微指令會在匯流排443上提供給重新執行多工層414。
重新執行多工層414會讀取在每一更名之微指令中的運算元,以決定適當的執行單元EU1-EUN、EUL來進行執行,特別說明的是,更名之載入微指令會藉由載入之執行單元EUL來執行。因此,重新執行多工層414會提供一或多個更名之微指令至一或多保留站RS1-RSN、ERSL,以讓這些指令在保留站RS1-RSN、ERSL等候被派送至對應之執行單元EU1-EUN、EUL。
每一保留站RS1-RSN、ERSL存取暫存資料426以讀取佇列排序用以進行操作之更名之微指令所需之運算元。未標示為舊的更名之微指令之標籤之更名之微指令(即此更名之微指令並未和舊的更名之微指令相依(dependent))會立即被派送至對應之執行單元EU1-EUN、EUL進行執行。除了將在底下談論之內容,相依之更名之微指令(即包含有尚未完成執行之舊的更名之微指令之標籤之更名之微指令)會逐一的儲存到 保留站RS1-RSN、ERSL中,直到可獲得其被標示之相依之運算元時為止。當可獲得被標示之相依之運算元時,這些運算元會提供給其所相依之新的更名之微指令,且這些新的更名之微指令會被派送至對應之執行單元EU1-EUN、EUL進行執行。當執行單元EU1-EUN、EUL不執行微指令時,其可能會執行一節能功能。當執行單元EU1-EUN、EUL不執行微指令時,在執行單元EU1-EUN、EUL內的時脈(clock)會停止以節省大量的電源。
更名之微指令以及其對應之相關結果會經由匯流排452提供給重排緩衝器424。重排緩衝器424會安置來自更名之微指令之亂序執行所產生之所有結果,恢復到原來的程式順序。也就是說,來自更名程式暫存器之結果會重新映射至其所對應之結構暫存器(architectural register),且會根據執行之特定程式順序,將這些結果排序進入結構暫存器中。已經成功完成執行具有適當結果之微指令會在匯流排457上提供給收回單元425。收回之微指令之結果會在對應寫回之匯流排455上被寫回至暫存資料426中。
當重排緩衝器424判斷更名之微指令無法成功地執行時,其必須和已發送用以執行之所有新的更名之微指令一起被重新發送(重新執行)。因此,重排緩衝器424會在對應重新執行信號REPLAY之匯流排458上,藉由提供無法成功被執行之更名之微指令之標籤,啟始一重新執行事件。
當一無法成功被執行之更名之微指令之標籤被提供給重新執行多工層414時,重新執行多工層414會回應一機 器狀態,以和更名之微指令之執行相一致,其中此更名之微指令之執行係起始於其標籤在匯流排458上被提供之更名之微指令。
除了以下將會談論之內容外,本發明包括了用以暫存微指令之保留站RS1-RSN,其中在規定之數量之時脈周期,這些被暫存之微指令和一新載入微指令相依,且在載入微指令被派送後,假設此載入微指令將會在規定之數量之時脈周期,命中層級1快取。在一實施例中,規定之數量之時脈周期為4個時脈周期。其它數量之時脈周期亦可被考慮。
此外,除了以下將會談論之內容外,保留站RS1-RSN可包括邏輯元件。在派送舊的載入指令之後,邏輯元件用以暫存(stall)其標籤係對應舊的載入微指令之更名之微指令,直到過了四個時脈週期。然後,假設在四個時脈週期,舊的微指令將會在層級1快取423命中,且將可取得標示之運算元之情況下,派送新的更名之微指令至其所對應之執行單元EU1-EUN。雖然在第4圖未顯示,但必須注意地是,執行單元EU1-EUN、EUL亦可存取在載入操作可獲得之運算元,且提供這些運算元給目前執行之微指令。對於在少於所規定之數量之時脈周期完成之載入而言,例如:在層級1快取423命中之載入,運算元會被提供給所派送之相依之新的微指令,其中此新的微指令執行完成之速度會快於提供原先之運算元之情況。對於在超過所規定之數量之時脈周期完成之載入而言,例如:在層級1快取423未命中之載入,在載入成功完成後,在要命中之假設下,被派送之所有相依之新的微指令,都必須被重新執 行。因此,當無法在層級1快取423命中時,執行單元EUL將會藉由在匯流排453上指示未命中之載入指令之標籤,來通知重排緩衝器424,以啟動新的相依之指令之重新執行。
然而,在本發明中亦提供了有別於上述加速方法之作法,也就是在增強載入保留站ERSL 421.L中包含一非核心暫存元件461。非核心暫存元件461用以偵測一或多載入微指令類型,以藉由暫存新的微指令直到其取得算元,在一或多執行單元EU1-EUN中執行節能機制,其中新的微指令係和一或多載入微指令類型之微指令相依。非核心未命中元件462(UMISS)亦會偵測一或多載入微指令類型,以在當一或多載入微指令類型花費超過一規定之數量之時脈週期來取得其運算元時,排除在對應未命中信號MISS之匯流排上之不命中。藉由此做法,一或多載入微指令類型之微指令被允許完成執行,且因為新的相依之微指令已經在保留站RS1-RSN中暫存,所以不需要重新執行和一或多微指令類型之微指令相依之新的微指令。在本發明一實施例中,保留站RS1-RSN、ERSL會彼此進行關於偵測之一或多微指令類型之微指令之資訊的溝通,或藉由對應保留和暫留信號HOLDY之匯流排444和重排緩衝器424進行關於偵測之一或多微指令類型之微指令之資訊的溝通。當一或多載入微指令類型之微指令完成執行時,重排緩衝器42藉由提供已經在對應保留和暫留信號HOLDY匯流排444上完成執行之一或多載入微指令類型之微指令之標籤,來指示保留站RS1-RSN釋出(release)其所暫存新的相依之微指令以進行派送。
就優點而言,本發明之作法,在關於對應由系統記憶體快取之運算元之載入微指令上,提供了更有效之效能,以及大幅降低關於一或多微指令類型之微指令重新執行之次數,因此,使得執行單元EU1-EUN在因為本發明暫存相依之微指令之應用而變成空閒(empty)時,能夠進入節能模式(power saving mode)。
因此,舉例來說,特別用以指示一非核心資源(規定資源)430之一載入微指令,將不會導致具有來自非核心資源之載入之標籤之新的相依之微指令重新執行,其中非核心資源430可像是熔絲陣列308、匯流排單元305、高階可編程中斷控制器307、輸入/輸出單元306、層級2快取303、以及隨機存取記憶體304。
在一本發明一實施例中,一或多載入微指令類型會包括來自非核心資源430所規定之載入,其它類型之載入包括,輸入/輸出載入、需要一特定數量之週期之載入、已知之需要頁表查找(page table walk)之來自記憶體係統之載入、由於x86特定匯流排周期(例如:關閉(shutdown)、暫停(halt)、清除(flush)等)之執行所產生之載入、已知解決無法快取記憶體空間之載入、或已知解決寫入結合之記憶體空間之載入。在其它實施例中則考慮了任何類型之載入操作之偵測,其中這樣的做法有很大的可能性會花費比規定之數量之時脈周期還長的時間來完成。
在本發明一實施例中,非核心暫存元件461以及非核心未命中元件462(UMISS)會根據本發明所描述之偵測載 入微指令類型之作法,用以執行處理器核心401之初始化(開啟電源或重新設定)。本發明所描述之載入微指令類型會從熔絲陣列308特定的位置中被讀取,以進行初始化。在本發明另一實施例中,每一處理器核心401會用以經由熔絲陣列308中的程式設計來偵測不同類型之規定之載入微指令,其中關於每一處理器核心401之微指令之類型會被設在熔絲陣列308中所對應之位置。更在本發明一實施例中,當經由聯合測試工作群組(Joint Test Action Group,JTAG)介面(未顯示),在裝置晶片310開啟電源或重新設定時,規定之載入微指令之類型會被設計在隨機存取記憶體304中,其中規定之載入微指令之類型會根據來自隨機存取記憶體304之特定區域之後續的初始化之結果來被讀取。
現在來談論第5圖,第5圖係根據本發明之實施例所述之第4圖之非核心暫存元件461之區塊圖500。非核心暫存元件461包括一微指令暫存器510,其中微指令暫存器510耦接至非核心載入運算元偵測邏輯電路501。微指令暫存器510包括一微指令標籤欄位OP TAG 511、一運算碼欄位MICRO OP 512、一資源A欄位SRC A 513、一標籤A欄位TAG A 514、一資源B欄位SRC B 515、一標籤B欄位TAG B 516、一資源C欄位SRC C 517、以及一標籤C欄位TAG C 518。非核心載入運算元偵測邏輯電路501產生一保留信號HOLDY,且偵測邏輯電路501耦接至匯流排444。
如同本領域具有通常知識者所知,目前的指令集架構(ISA),例如:x86指令集架構,提供了許多不同的運算元 定址模式(operand addressing mode),運算元定址模式包括,直接定址(direct)、間接定址(indirect)、立即定址(immediate),以及相對定址(relative),但本發明並不以此為限。因此,資源欄位SRC A-SRC C之一或多者會包括,運算元、運算元之一或多規定之位置(包括結果之目標)。因此,為了允許擴張本發明之應用,以應用在更多數量之指令集上,非核心暫存元件461之運算元將以像是資源欄位SRC A-SRC C之一般認知之內容來做說明。
在操作上,如同重新執行多工層414所提供之微指令,載入微指令會被輸入至微指令暫存器510。微指令標籤欄位OP TAG 511具有目前在微指令暫存器510之微指令之標籤。運算碼欄位MICRO OP 512則具有目前在微指令暫存器510之微指令之運算元。標籤A欄位TAG A 514之內容包括和資源A(SRC A)所相依之舊的微指令之標籤。標籤B欄位TAG A 516之內容包括和資源B(SRC B)所相依之舊的微指令之標籤。標籤C欄位TAG C 518之內容包括和資源C(SRC C)所相依之舊的微指令之標籤。非核心載入運算元偵測邏輯電路501用以讀取運算碼欄位MICRO OP 512之內容。若運算碼欄位MICRO OP 512不包括規定之載入運算元之一者,非核心載入運算元偵測邏輯電路501會取消設置(deassert)保留信號HOLDY,以指示保留站RS1-RSN,暫存在其內部之新的微指令會在適當的時候被派送,其中規定之載入運算元係表示,上述會造成在和微指令暫存器510中目前的微指令相依之其他保留站RS1-RSN之新的微指令被暫存之運算元。然而,若運算 碼欄位MICRO OP 512包括規定之載入運算元之一者,非核心載入運算元偵測邏輯電路501會設置(assert)保留信號HOLDY以及在匯流排444上安置微指令標籤欄位OP TAG 511之內容,以指示保留站RS1-RSN,其內部之新的微指令必須被暫存直到微指令暫存器510中目前的微指令所規定之載入完成,以及載入之結果被提供給新的相依之微指令為止,其中規定之載入運算元係表示,上述會造成在和微指令暫存器510中目前的微指令相依之其他保留站RS1-RSN之新的微指令被暫存之運算元。當載入完成時,重排緩衝器424將取消設置保留信號HOLDY,並釋放暫存之微指令。
回到第6圖,第6圖係根據本發明之實施例所述之第4圖之每一保留站RS1-RSN之方塊圖600。每一保留站RS1-RSN包括微指令暫存器610,其中微指令暫存器610藕接至一相依性檢查邏輯單元601。微指令暫存器610包括一微指令標籤欄位OP TAG 611、一運算碼欄位MICRO OP 612、一資源A欄位SRC A 613、一標籤A欄位TAG A 614、一資源B欄位SRC B 615、一標籤B欄位TAG B 616、一資源C欄位SRC C 617、以及一標籤C欄位TAG C 618。相依性檢查邏輯單元601產生一備妥信號READY,且監測耦接至匯流排444之邏輯電路501所產生之保留信號HOLDY。
微指令暫存器610之欄位611-618之內容和第5圖中具有相同名稱之欄位相同,因此可參考第5圖所述之內容。相依性檢查邏輯單元601用以讀取資源之標籤欄位TAG A-TAG C之內容。若任何標籤欄位TAG A-TAG C之內容和設置 在保留信號HOLDY上之標籤相符,在微指令暫存器610中的微指令會被暫存,直到和在微指令暫存器610中的微指令相依之載入完成為止,此微指令經由載入取得之運算元,會被提供給對應之資源欄位SRC A-SRC C,且重排緩衝器424取消設置保留信號HOLDY。當保留信號HOLDY被取消設置,相依性檢查邏輯單元601設置備妥信號READY,以指示在微指令暫存器610中的微指令已準備好被派送至其所對應的執行單元EU1-EUN。
若標籤欄位TAG A-TAG C之內容和設置在保留信號HOLDY上之標籤不相符,相依性檢查邏輯單元601會設置備妥信號READY,以指示在微指令暫存器610中的微指令已準備好被派送至其所對應的執行單元EU1-EUN。
現在來參考第7圖,第7圖係根據本發明之實施例所述之第4圖之非核心未命中元件462之方塊圖700。非核心未命中元件462包括微指令暫存器710,其中微指令暫存器710耦接至一載入未命中排除邏輯電路701。微指令暫存器710包括一微指令標籤欄位OP TAG 711、一運算碼欄位MICRO OP 712、一資源A欄位SRC A 713、一標籤A欄位TAG A 714、一資源B欄位SRC B 715、一標籤B欄位TAG B 716、一資源C欄位SRC C 717、以及一標籤C欄位TAG C 718。載入未命中排除邏輯電路701產生一無未命中信號NOMISS(no miss signal)。
微指令暫存器710之欄位711-718之內容和第5-6圖中具有相同名稱之欄位相同,因此可參考第5-6圖所述之內 容。載入未命中排除邏輯電路701用以讀取運算碼欄位MICRO OP 712之內容。若運算碼欄位MICRO OP 712不包括規定之上述會造成新的微指令被暫存之運算元之一者,載入未命中排除邏輯電路701會取消設置無未命中信號NOMISS,以通知對應之載入執行單元EUL 422.L根據正常載入指令執行協定(normal load instruction execution protocol)管理無未命中信號NOMISS之狀態。若運算碼欄位MICRO OP 712包括規定之運算元之一者,載入未命中排除邏輯電路701會設置無未命中信號NOMISS,以通知對應之載入執行單元EUL 422.L在微指令暫存器710之微指令之執行期間排除無未命中信號NOMISS之設置。
本發明上述之元件係用以執行如同本發明中所談論之功能和操作。本發明所述之元件包括邏輯閘、電路、裝置或微程式碼(即微指令或客戶指令(native instruction)),或邏輯閘、電路、裝置或微程式碼之組合,或用以執行如同本發明中所談論之功能和操作之等效之元件。用以完成這些操作和功能之元件,會和在多核心處理器中用以執行其它功能且/或操作之其它電路或微程式碼等所共用。
本發明的各部分和相應的詳細描述利用軟體,或對計算機記憶體內的資料位元的操作之算法和符號表示予以呈現。這些描述和表示是本領域具有通常知識者借助其向本領域其它普通技術人員有效地傳達其工作的實質的描述和表示。如在此所使用的演算法(如其通常被使用的那樣)被設想為是導致希望結果的前後一致的步驟序列。這些步驟是物理量 的所需的物理操作。雖然未必需要,這些量通常係採用能夠被存儲、傳遞、組合、比較以及另外被操作之光、電,或磁之信號的形式。為了一般使用的原因,將這些信號視為位元、數值、元素、符號、字符、術語、數等是便利的。
應該牢記的是,上述所有或者類似的術語與適當的物理量相關,並且其僅僅用於方便標記所應用到的這些量。除非特別聲明,或者是從討論中可知,諸如“處理”,“計算”,“計劃”,“確定”,“顯示”或類似術語是指計算機系統、微處理器、中央處理單元、或類似的電子計算裝置的動作或者處理,其將在計算機系統的寄存器和存儲器內的表示物理、電子量的數據操縱和轉換為相似地表示在計算機系統存儲器或者寄存器,或者其他該種信息存儲器、傳輸或者顯示設備內的物理量的其他數據。
還要注意的是,在本發明的軟件實現方面,其被典型地編碼在某種形式的程序存儲介質上,或者被實施在幾種類型的傳輸介質上。程序存儲介質可以是電子的(例如,唯讀存儲器、快存唯讀存儲器、電可編程唯讀存儲器)、磁隨機存取存儲器(例如,軟碟或硬碟驅動器)、或光學器(例如,光碟唯讀存儲器、或CD-ROM”),並且其可以是只讀的或者是隨機存取的。同樣,傳輸介質可以是金屬跡線、雙絞線、同軸線纜、光纖、或本領域已知的一些其它合適的傳輸介質。本發明並不限於由任何給定的實施方式的這些方面。
上述的具體公開的實施例僅僅是說明性的,對於本領域技術人員將會理解的是,可以使用所公開的概念和特定 的實施例來作為基礎而設計或者修改出用於執行與本發明相同的目的的其他結構,並且可以在不脫離由所附的權利要求書所闡述的本發明的範圍的情況下,對本發明進行各種修改、替代、以及替換。
300‧‧‧方塊圖
301‧‧‧核心1、核心2、核心3、核心4
302‧‧‧非核心資源
303‧‧‧層級2快取
304‧‧‧隨機存取記憶體
305‧‧‧匯流排單元
306‧‧‧輸入/輸出單元
307‧‧‧高階可編程中斷控制器
308‧‧‧熔絲陣列
310‧‧‧裝置晶片
311‧‧‧匯流排B1
312‧‧‧匯流排B2
313‧‧‧匯流排B3
314‧‧‧匯流排B4
320‧‧‧重新執行縮減器元件
MEM‧‧‧匯流排
I/O‧‧‧匯流排
CTRL‧‧‧匯流排

Claims (21)

  1. 一用以改善在一亂序處理器重新執行載入之裝置,上述裝置包括:一第一保留站,用以派送一第一載入微指令,以及若上述第一載入微指令係指示從複數規定之資源之一者而非從核心上之快取記憶體上擷取一運算元之一規定之載入微指令,用以在一保留匯流排進行偵測和指示;一第二保留站,耦接至上述保留匯流排,且在上述第一載入微指令派送後之一第一數量之時脈週期之後,用以派送和上述第一載入微指令相依之一或複數新的微指令以進行執行,以及若在上述保留匯流排上指示了,上述第一載入微指令係上述規定之載入微指令,上述第二保留站用以暫存上述一或複數新的微指令之派送,直到上述第一載入微指令取得上述運算元;以及上述複數規定之資源,包括:一系統記憶體,經由一記憶體匯流排耦接至上述亂序處理器,其中上述規定之載入微指令係用以決定上述系統記憶體之寫入結合之記憶體空間。
  2. 如申請專利範圍第1項所述之裝置,其中上述亂序處理器包括一多核心處理器,以及其中在上述多核心處理器之每一核心包括上述第一保留站和上述第二保留站。
  3. 如申請專利範圍第2項所述之裝置,其中上述複數規定之資源之一者和上述每一核心被安置在相同的晶片上,但係配置在上述每一核心之外。
  4. 如申請專利範圍第2項所述之裝置,其中上述系統記憶體未和上述多核心處理器被安置在相同的晶片上。
  5. 如申請專利範圍第1項所述之裝置,更包括:一執行單元,耦接至上述第一保留站,用以接收和執行上述第一載入微指令,以及若無接收到微指令以進行執行時,用以進入一節能狀態。
  6. 如申請專利範圍第5項所述之裝置,其中若上述第一載入微指令非上述規定之載入微指令,當超過擷取上述運算元所需之上述第一數量之時脈週期,上述執行單元在一對應非命中之匯流排上指示,上述第一載入微指令未成功執行,且啟動上述一或複數新的微指令之重新執行。
  7. 如申請專利範圍第6項所述之裝置,其中若上述第一載入微指令係上述規定之載入微指令,當超過擷取上述運算元所需之上述第一數量之時脈週期,上述執行單元不會指示上述第一載入微指令未成功執行,且預防上述一或複數新的微指令之重新執行。
  8. 一用以改善重新執行載入之裝置,上述裝置包括:一多核心處理器,包括複數核心,其中每一上述複數核心包括:一第一保留站,用以派送一第一載入微指令,以及若上述第一載入微指令係指示從複數規定之資源之一者而非從核心上之快取記憶體上擷取一運算元之一規定之載入微指令,用以在一保留匯流排進行偵測和指示;一第二保留站,耦接至上述保留匯流排,且在上述第一載 入微指令派送後之一第一數量之時脈週期之後,用以派送和上述第一載入微指令相依之一或複數新的微指令以進行執行,以及若在上述保留匯流排上指示了,上述第一載入微指令係上述規定之載入微指令,上述第二保留站用以暫存上述一或複數新的微指令之派送,直到上述第一載入微指令取得上述運算元;以及上述複數規定之資源,包括:一系統記憶體,經由一記憶體匯流排耦接至上述亂序處理器,其中上述規定之載入微指令係用以決定上述系統記憶體之寫入結合之記憶體空間。
  9. 如申請專利範圍第8項所述之裝置,其中上述多核心處理器包括一x86-相容性多核心處理器。
  10. 如申請專利範圍第8項所述之裝置,其中上述複數規定之資源之一者和上述每一核心被安置在相同的晶片上,但係配置在上述每一核心之外。
  11. 如申請專利範圍第8項所述之裝置,其中上述系統記憶體未和上述多核心處理器被安置在相同的晶片上。
  12. 如申請專利範圍第8項所述之裝置,其中每一上述複數核心更包括:一執行單元,耦接至上述第一保留站,用以接收和執行上述第一載入微指令,以及若無接收到微指令以進行執行時,用以進入一節能狀態。
  13. 如申請專利範圍第12項所述之裝置,其中若上述第一載入微指令非上述規定之載入微指令,當超過擷取上述運算元 所需之上述第一數量之時脈週期,上述執行單元在一對應非命中之匯流排上指示,上述第一載入微指令未成功執行,且啟動上述一或複數新的微指令之重新執行。
  14. 如申請專利範圍第13項所述之裝置,其中若上述第一載入微指令係上述規定之載入微指令,當超過擷取上述運算元所需之上述第一數量之時脈週期,上述執行單元不會指示上述第一載入微指令未成功執行,且預防上述一或複數新的微指令之重新執行。
  15. 一用以改善在一亂序處理器重新執行載入之方法,上述方法包括:耦接上述亂序處理器至複數規定之資源,上述複數規定之資源包括經由一記憶體匯流排耦接至上述亂序處理器之一系統記憶體;經由一第一保留站派送一第一載入微指令,以及若上述第一載入微指令係指示從複數規定之資源之一者而非從核心上之快取記憶體上擷取一運算元之一規定之載入微指令,在一保留匯流排進行偵測和指示,以及其中上述規定之載入微指令係用以決定上述系統記憶體之寫入結合之記憶體空間;以及經由耦接至上述保留匯流排之一第二保留站,在上述第一載入微指令派送後之一第一數量之時脈週期之後,派送和上述第一載入微指令相依之一或複數新的微指令以進行執行,以及若在上述保留匯流排上指示了,上述第一載入微指令係上述規定之載入微指令,暫存上述一或複數新的微 指令之派送,直到上述第一載入微指令取得上述運算元。
  16. 如申請專利範圍第15項所述之方法,其中上述亂序處理器包括一多核心處理器,以及其中在上述多核心處理器之每一核心包括上述第一保留站和上述第二保留站。
  17. 如申請專利範圍第16項所述之方法,其中上述複數規定之資源之一者和上述每一核心被安置在相同的晶片上,但係配置在上述每一核心之外。
  18. 如申請專利範圍第16項所述之方法,其中上述系統記憶體未和上述多核心處理器被安置在相同的晶片上。
  19. 如申請專利範圍第15項所述之方法,更包括:經由耦接至上述第一保留站之一執行單元,接收和執行上述第一載入微指令,以及若無接收到微指令以進行執行時,進入一節能狀態。
  20. 如申請專利範圍第19項所述之方法,其中若上述第一載入微指令非上述規定之載入微指令,當超過擷取上述運算元所需之上述第一數量之時脈週期,在一對應非命中之匯流排上指示,上述第一載入微指令未成功執行,且啟動上述一或複數新的微指令之重新執行。
  21. 如申請專利範圍第20項所述之方法,其中若上述第一載入微指令係上述規定之載入微指令,當超過擷取上述運算元所需之上述第一數量之時脈週期,不會指示上述第一載入微指令未成功執行,且預防上述一或複數新的微指令之重新執行。
TW104138410A 2014-12-14 2015-11-20 用以改善在處理器中重新執行載入之裝置與方法 TWI624788B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
??PCT/IB2014/003171 2014-12-14
PCT/IB2014/003171 WO2016097792A1 (en) 2014-12-14 2014-12-14 Apparatus and method to preclude load replays dependent on write combining memory space access in out-of-order processor

Publications (2)

Publication Number Publication Date
TW201636830A true TW201636830A (zh) 2016-10-16
TWI624788B TWI624788B (zh) 2018-05-21

Family

ID=55719856

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104138410A TWI624788B (zh) 2014-12-14 2015-11-20 用以改善在處理器中重新執行載入之裝置與方法

Country Status (5)

Country Link
US (1) US10133580B2 (zh)
KR (1) KR101819315B1 (zh)
CN (2) CN105511841B (zh)
TW (1) TWI624788B (zh)
WO (1) WO2016097792A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114138341B (zh) * 2021-12-01 2023-06-02 海光信息技术股份有限公司 微指令缓存资源的调度方法、装置、程序产品以及芯片

Family Cites Families (88)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6735685B1 (en) 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US5636374A (en) 1994-01-04 1997-06-03 Intel Corporation Method and apparatus for performing operations based upon the addresses of microinstructions
US5649138A (en) 1996-01-04 1997-07-15 Advanced Micro Devices Time dependent rerouting of instructions in plurality of reservation stations of a superscalar microprocessor
US5809275A (en) 1996-03-01 1998-09-15 Hewlett-Packard Company Store-to-load hazard resolution system and method for a processor that executes instructions out of order
US7200737B1 (en) 1996-11-13 2007-04-03 Intel Corporation Processor with a replay system that includes a replay queue for improved throughput
US6163838A (en) 1996-11-13 2000-12-19 Intel Corporation Computer processor with a replay system
US5958041A (en) 1997-06-26 1999-09-28 Sun Microsystems, Inc. Latency prediction in a pipelined microarchitecture
US5889679A (en) 1997-07-15 1999-03-30 Integrated Device Technology, Inc. Fuse array control for smart function enable
US6678810B1 (en) 1999-12-30 2004-01-13 Intel Corporation MFENCE and LFENCE micro-architectural implementation method and system
US6549985B1 (en) 2000-03-30 2003-04-15 I P - First, Llc Method and apparatus for resolving additional load misses and page table walks under orthogonal stalls in a single pipeline processor
US7065632B1 (en) 2000-04-07 2006-06-20 Ip First Llc Method and apparatus for speculatively forwarding storehit data in a hierarchical manner
US6981129B1 (en) 2000-11-02 2005-12-27 Intel Corporation Breaking replay dependency loops in a processor using a rescheduled replay queue
DE60144022D1 (de) 2000-11-06 2011-03-24 Broadcom Corp Umkonfigurierbares verarbeitungssystem und -verfahren
US7203817B2 (en) 2001-09-24 2007-04-10 Broadcom Corporation Power consumption reduction in a pipeline by stalling instruction issue on a load miss
US6810466B2 (en) 2001-10-23 2004-10-26 Ip-First, Llc Microprocessor and method for performing selective prefetch based on bus activity level
US6952764B2 (en) 2001-12-31 2005-10-04 Intel Corporation Stopping replay tornadoes
US20060248319A1 (en) 2002-02-05 2006-11-02 Sun Microsystems, Inc. Validating branch resolution to avoid mis-steering instruction fetch
US6934830B2 (en) 2002-09-26 2005-08-23 Sun Microsystems, Inc. Method and apparatus for reducing register file access times in pipelined processors
US7111153B2 (en) 2003-09-30 2006-09-19 Intel Corporation Early data return indication mechanism
US7284117B1 (en) 2003-11-04 2007-10-16 Advanced Micro Devices, Inc. Processor that predicts floating point instruction latency based on predicted precision
TWI232457B (en) 2003-12-15 2005-05-11 Ip First Llc Early access to microcode ROM
US7330959B1 (en) * 2004-04-23 2008-02-12 Transmeta Corporation Use of MTRR and page attribute table to support multiple byte order formats in a computer system
WO2006114874A1 (ja) 2005-04-21 2006-11-02 Fujitsu Limited プロセッサ装置
JP4837305B2 (ja) 2005-05-10 2011-12-14 ルネサスエレクトロニクス株式会社 マイクロプロセッサ及びマイクロプロセッサの制御方法
JP2006146953A (ja) 2006-01-04 2006-06-08 Nec Electronics Corp プロセッサ、システムlsi、システムlsiの設計方法、及び、それを記録した記録媒体
US8812822B2 (en) 2006-02-09 2014-08-19 International Business Machines Corporation Scheduling instructions in a cascaded delayed execution pipeline to minimize pipeline stalls caused by a cache miss
US7721071B2 (en) 2006-02-28 2010-05-18 Mips Technologies, Inc. System and method for propagating operand availability prediction bits with instructions through a pipeline in an out-of-order processor
US7577825B2 (en) 2006-02-28 2009-08-18 Intel Corporation Method for data validity tracking to determine fast or slow mode processing at a reservation station
US20080005504A1 (en) 2006-06-30 2008-01-03 Jesse Barnes Global overflow method for virtualized transactional memory
US7502914B2 (en) 2006-07-31 2009-03-10 Advanced Micro Devices, Inc. Transitive suppression of instruction replay
WO2008029450A1 (fr) 2006-09-05 2008-03-13 Fujitsu Limited Dispositif de traitement d'informations comprenant un mécanisme de correction d'erreur de prédiction d'embranchement
US7647518B2 (en) 2006-10-10 2010-01-12 Apple Inc. Replay reduction for power saving
US8838663B2 (en) 2007-03-30 2014-09-16 Intel Corporation Method and apparatus for performing multiplicative functions
US7827390B2 (en) 2007-04-10 2010-11-02 Via Technologies, Inc. Microprocessor with private microcode RAM
CN101681261B (zh) 2007-06-20 2014-07-16 富士通株式会社 运算处理装置及其控制方法
US7861066B2 (en) 2007-07-20 2010-12-28 Advanced Micro Devices, Inc. Mechanism for predicting and suppressing instruction replay in a processor
US8190864B1 (en) 2007-10-25 2012-05-29 Oracle America, Inc. APIC implementation for a highly-threaded x86 processor
US9311085B2 (en) 2007-12-30 2016-04-12 Intel Corporation Compiler assisted low power and high performance load handling based on load types
GB2457303A (en) 2008-02-11 2009-08-12 Linear Algebra Technologies Randomly accessing elements of compressed matrix data by calculating offsets from non-zero values of a bitmap
US7937561B2 (en) 2008-04-03 2011-05-03 Via Technologies, Inc. Merge microinstruction for minimizing source dependencies in out-of-order execution microprocessor with variable data size macroarchitecture
US7937563B2 (en) 2008-05-27 2011-05-03 Advanced Micro Devices, Inc. Voltage droop mitigation through instruction issue throttling
US20090327657A1 (en) 2008-06-25 2009-12-31 Zeev Sperber GENERATING AND PERFORMING DEPENDENCY CONTROLLED FLOW COMPRISING MULTIPLE MICRO-OPERATIONS (uops)
US8566565B2 (en) 2008-07-10 2013-10-22 Via Technologies, Inc. Microprocessor with multiple operating modes dynamically configurable by a device driver based on currently running applications
CN101477454A (zh) 2009-01-22 2009-07-08 浙江大学 嵌入式处理器的乱序执行控制装置
CN101526895B (zh) 2009-01-22 2011-01-05 杭州中天微系统有限公司 基于指令双发射的高性能低功耗嵌入式处理器
US8880854B2 (en) * 2009-02-11 2014-11-04 Via Technologies, Inc. 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
CN101853150B (zh) 2009-05-29 2013-05-22 威盛电子股份有限公司 非循序执行的微处理器及其操作方法
CN101847094A (zh) 2009-05-29 2010-09-29 威盛电子股份有限公司 非循序执行的微处理器及其操作方法
US20100306509A1 (en) 2009-05-29 2010-12-02 Via Technologies, Inc. Out-of-order execution microprocessor with reduced store collision load replay reduction
US8464032B2 (en) 2009-07-10 2013-06-11 Via Technologies, Inc. Microprocessor integrated circuit with first processor that outputs debug information in response to reset by second processor of the integrated circuit
US8386755B2 (en) 2009-07-28 2013-02-26 Via Technologies, Inc. Non-atomic scheduling of micro-operations to perform round instruction
CN101894009B (zh) 2009-08-07 2013-05-22 威盛电子股份有限公司 乱序执行的微处理器以及相关执行指令的方法
US8533438B2 (en) 2009-08-12 2013-09-10 Via Technologies, Inc. Store-to-load forwarding based on load/store address computation source information comparisons
US20110078350A1 (en) 2009-09-30 2011-03-31 Via Technologies, Inc. Method for generating multiple serial bus chip selects using single chip select signal and modulation of clock signal frequency
CN101710272B (zh) 2009-10-28 2012-09-05 龙芯中科技术有限公司 指令调度装置和方法
US9104399B2 (en) 2009-12-23 2015-08-11 International Business Machines Corporation Dual issuing of complex instruction set instructions
US8918625B1 (en) 2010-11-24 2014-12-23 Marvell International Ltd. Speculative scheduling of memory instructions in out-of-order processor based on addressing mode comparison
JP5625903B2 (ja) 2010-12-29 2014-11-19 富士通株式会社 演算処理装置および演算処理方法
US8639884B2 (en) 2011-02-28 2014-01-28 Freescale Semiconductor, Inc. Systems and methods for configuring load/store execution units
US8880851B2 (en) * 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
EP3151110B1 (en) 2011-04-07 2019-12-25 VIA Technologies, Inc. Microprocessor that translates conditional load or store instructions into a variable number of microinstructions
US8862861B2 (en) 2011-05-13 2014-10-14 Oracle International Corporation Suppressing branch prediction information update by branch instructions in incorrect speculative execution path
DE112011105590T5 (de) 2011-09-06 2014-07-03 Intel Corp. Energieeffiziente Prozessorarchitektur
CN103827842B (zh) * 2011-09-29 2017-07-07 英特尔公司 向控制器存储器空间写入消息
US9009449B2 (en) 2011-11-10 2015-04-14 Oracle International Corporation Reducing power consumption and resource utilization during miss lookahead
WO2013147852A1 (en) 2012-03-30 2013-10-03 Intel Corporation Instruction scheduling for a multi-strand out-of-order processor
US9128725B2 (en) 2012-05-04 2015-09-08 Apple Inc. Load-store dependency predictor content management
US9645819B2 (en) 2012-06-15 2017-05-09 Intel Corporation Method and apparatus for reducing area and complexity of instruction wakeup logic in a multi-strand out-of-order processor
GB2503438A (en) 2012-06-26 2014-01-01 Ibm Method and system for pipelining out of order instructions by combining short latency instructions to match long latency instructions
US10241797B2 (en) 2012-07-17 2019-03-26 Advanced Micro Devices, Inc. Replay reduction by wakeup suppression using early miss indication
US9582276B2 (en) 2012-09-27 2017-02-28 Apple Inc. Processor and method for implementing barrier operation using speculative and architectural color values
US9582287B2 (en) 2012-09-27 2017-02-28 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
US10235180B2 (en) 2012-12-21 2019-03-19 Intel Corporation Scheduler implementing dependency matrix having restricted entries
US20140189328A1 (en) 2012-12-27 2014-07-03 Tomer WEINER Power reduction by using on-demand reservation station size
GB2514956B (en) 2013-01-21 2015-04-01 Imagination Tech Ltd Allocating resources to threads based on speculation metric
US9256428B2 (en) 2013-02-06 2016-02-09 International Business Machines Corporation Load latency speculation in an out-of-order computer processor
US9116817B2 (en) 2013-05-09 2015-08-25 Apple Inc. Pointer chasing prediction
KR20140139923A (ko) 2013-05-28 2014-12-08 한국전자통신연구원 멀티코어 프로세서 및 멀티코어 프로세서 시스템
US9606806B2 (en) 2013-06-25 2017-03-28 Advanced Micro Devices, Inc. Dependence-based replay suppression
US9715389B2 (en) 2013-06-25 2017-07-25 Advanced Micro Devices, Inc. Dependent instruction suppression
US9489206B2 (en) 2013-07-16 2016-11-08 Advanced Micro Devices, Inc. Dependent instruction suppression
US9483273B2 (en) 2013-07-16 2016-11-01 Advanced Micro Devices, Inc. Dependent instruction suppression in a load-operation instruction
GB2510655B (en) 2013-07-31 2015-02-25 Imagination Tech Ltd Prioritizing instructions based on type
TWI571797B (zh) 2013-08-21 2017-02-21 上海兆芯集成電路有限公司 組態資料的處理裝置及方法
US8879345B1 (en) 2013-08-21 2014-11-04 Via Technologies, Inc. Microprocessor mechanism for decompression of fuse correction data
US9495159B2 (en) 2013-09-27 2016-11-15 Intel Corporation Two level re-order buffer
US9389863B2 (en) 2014-02-10 2016-07-12 Via Alliance Semiconductor Co., Ltd. Processor that performs approximate computing instructions
US9710268B2 (en) 2014-04-29 2017-07-18 Apple Inc. Reducing latency for pointer chasing loads

Also Published As

Publication number Publication date
WO2016097792A1 (en) 2016-06-23
TWI624788B (zh) 2018-05-21
US10133580B2 (en) 2018-11-20
US20160350122A1 (en) 2016-12-01
CN105511841A (zh) 2016-04-20
CN105511842A (zh) 2016-04-20
CN105511841B (zh) 2019-04-09
CN105511842B (zh) 2018-11-09
KR101819315B1 (ko) 2018-01-16
KR20160086761A (ko) 2016-07-20

Similar Documents

Publication Publication Date Title
TWI559223B (zh) 用以改善在處理器中重新執行載入之裝置與方法
TWI616814B (zh) 用以改善在處理器中重新執行載入之裝置與方法
TWI559131B (zh) 用以改善在處理器中重新執行載入之裝置與方法
TWI616815B (zh) 用以改善在處理器中重新執行載入之裝置與方法
TWI581091B (zh) 用以改善在處理器中重新執行載入之裝置與方法
TWI571798B (zh) 用以改善在處理器中重新執行載入之裝置與方法
TWI624788B (zh) 用以改善在處理器中重新執行載入之裝置與方法
TWI596543B (zh) 用以改善在處理器中重新執行載入之裝置與方法
TWI588741B (zh) 用以改善在處理器中重新執行載入之裝置與方法
TWI588748B (zh) 用以改善在處理器中重新執行載入之裝置與方法
TWI581182B (zh) 用以改善在處理器中重新執行載入之裝置與方法
TWI621992B (zh) 用以改善在處理器中重新執行載入之裝置與方法
TWI564710B (zh) 用以改善在處理器中重新執行載入之裝置與方法
TWI554874B (zh) 用以改善在處理器中重新執行載入之裝置與方法
US20160170754A1 (en) Load replay precluding mechanism
US20160170757A1 (en) Programmable load replay precluding mechanism
US20160170764A1 (en) Apparatus and method for programmable load replay preclusion
US10146540B2 (en) Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor
US10120689B2 (en) Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor
US10175984B2 (en) Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor
US10083038B2 (en) Mechanism to preclude load replays dependent on page walks in an out-of-order processor
US20160170752A1 (en) Mechanism to preclude i/o-dependent load replays in an out-of-order processor
US20160170753A1 (en) Mechanism to preclude uncacheable-dependent load replays in out-of-order processor
US20160170759A1 (en) Mechanism to preclude shared ram-dependent load replays in an out-of-order processor