TW201439900A - 用於提前執行操作的指令分類 - Google Patents

用於提前執行操作的指令分類 Download PDF

Info

Publication number
TW201439900A
TW201439900A TW102140256A TW102140256A TW201439900A TW 201439900 A TW201439900 A TW 201439900A TW 102140256 A TW102140256 A TW 102140256A TW 102140256 A TW102140256 A TW 102140256A TW 201439900 A TW201439900 A TW 201439900A
Authority
TW
Taiwan
Prior art keywords
microprocessor
instruction
execution
logic
early
Prior art date
Application number
TW102140256A
Other languages
English (en)
Inventor
Magnus Ekman
Guillermo J Rozas
Alexander Klaiber
James Van Zoeren
Paul Serris
Brad Hoyt
Sridharan Ramakrishnan
Hens Vanderschoot
Ross Segelken
Darrell D Boggs
Original Assignee
Nvidia Corp
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 Nvidia Corp filed Critical Nvidia Corp
Publication of TW201439900A publication Critical patent/TW201439900A/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
    • 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/3842Speculative 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/3861Recovery, 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)

Abstract

本發明揭示的具體實施例關於用以若一指令的執行產生一提前執行觸發事件,則導致一微處理器進入一提前執行且在其中操作而不重新分發該指令的方法及裝置。在一實例中,提供一種微處理器。該實例微處理器包括:提取邏輯,用於擷取一指令;排程邏輯,用於分發由該提取邏輯擷取的該指令以便執行;及提前執行控制邏輯。該實例提前執行控制邏輯用以:若該排程邏輯所排程之該指令的執行產生一提前執行觸發事件,則導致該微處理器進入一提前執行模式且在其中操作而不重新分發該指令;且在該微處理器處於該提前執行模式中時實施提前執行策略,該等提前執行策略掌控該微處理器之操作並導致該微處理器以不同於不在該提前執行模式中時的方式操作。

Description

用於提前執行操作的指令分類
本發明是有關於一種指令分類且特別是有關於一種用於提前執行操作的指令分類。
微處理器中的指令通常因管線錯誤(pipeline error)或資料衝突(data hazard)而被重新分派一或多次以供執行。例如,當指令涉及尚未計算或擷取的結果時,必須重新分派指令。因無法使用的資訊所造成的未命中(miss)將導致微處理器停頓(stall)。因為在解析該未命中期間不知道其他無法預期的停頓是否將因其他未命中而出現,所以在解析初始未命中(initial miss)時,微處理器可執行經組態以偵測其他未命中的提前執行操作(runahead operation)。
在現代微處理器中,通常以管線(pipeline)執行架構級指令(architectural-level instruction)。此類指令可個別地或作為微操作束(bundles of micro-operations)分發至管線中的各種執行機構。無論指令在分發以供執行時採取的形式為何,當指令被分發時,並不知道指令的執行是否將會完成。換言之,在分派時並不知道在指令執行期間是否將出現未命中或異常(exception)。
常見可在指令執行期間出現的管線執行停頓是造成快取未 命中(cache miss)的載入操作(load operation)。此類快取未命中可觸發進入提前執行操作模式(runahead mode of operation)(以下稱為「提前執行(runahead)」),其經組態以在解析初始載入未命中時,偵測例如其他快取未命中、指令轉譯前瞻緩衝器未命中(instruction translation lookaside buffer miss)、或分支誤預測(branch mispredict)。如本文中所使用,提前執行是描述起因於長延時事件(long-latency event)(諸如所產生之載入事件自較慢存取記憶體位置去抓取(pull)遺失指令或資料的快取未命中)的任何合適推測式執行方案(speculative execution scheme)。一旦解析初始載入未命中,微處理器即退出提前執行,及指令被重新執行。因為其他未命中可出現,故指令可能可在指令完成之前被重新執行若干次。
一旦偵測到提前執行觸發事件(runahead-triggering event), 即檢查微處理器的狀態(如,暫存器及其他合適狀態),使得微處理器可在提前執行後返回該狀態。微處理器接著在提前執行期間在工作狀態中繼續執行。在一些設定中,微處理器可立即進入提前執行,及視情況可重新分發(reissue)導致微處理器進入提前執行的指令以便執行。因為重新分發指令會耗掉一些時間,所以會減少微處理器能夠在提前執行中時偵測新的潛在長延時事件的有效時間。在一些其他設定中,諸如載入未命中,微處理器可延緩進入提前執行,直到可決定一快取中的載入未命中是否可由記憶體層級中另一快取中的命中滿足。例如,在指令導致L1快取未命中的案例中,微處理器可延緩重新分發指令,使得指令一旦重新分發,即與L2快取的命中對準(line up)(如果該命中到達的話)。換言之,在此案例中,微處理器將短暫地停頓,而不會立即進入提前執行,接著重新分發指令。因為指令可在知道L2快取中是否將有命中之前重新分發,如果L2快取未命中,微處理器仍可進入提前執行。
然而,在以上設想的各案例中,有可能在不知道提前執行 觸發事件是否將會產生的情況下發出指令。因為一些指令在提前執行模式中可以不同於正常模式的方式加以對待,及因為可在分發時應用此等不同方式之一些,因此可能難以進入提前執行而不重新分發導致進入提前執行的指令。例如,一些微處理器動作若在提前執行期間執行,將不利地影響微處理器狀態,因為這些動作可造成快取污染(cache pollution)及/或使返回正常操作模式變得困難。
因此,本文說明的具體實施例有關用以若指令的執行產生 提前執行觸發事件,則導致微處理器進入提前執行模式及在其中操作而不重新分發指令的方法及硬體。在一些實例中,本文說明的具體實施例可在微處理器處於提前執行中時實施一或多個提前執行策略(runahead policy),該一或多個提前執行策略掌控(govern)微處理器的操作及導致微處理器以不同於不在提前執行中時的方式操作。換言之,取決於提前執行狀態,微處理器可針對一些指令採取不同動作。
例如,應明白,一些動作(action)在提前執行期間可相對於 非提前執行操作被排列不同的優先順序,及/或一些動作在提前執行期間可被視為選擇性。因此,在一些具體實施例中,一些動作可被分類為寬鬆型(permissive),而其他動作可被分類為絕對型(absolute)。
寬鬆型動作可為選擇性或相對於另一動作重排優先順序。 例如,寬鬆型動作可由微處理器執行以在提前執行期間節省功率及/或增強效能。此替代性對待可在提前執行期間節省處理時間,因為在提前執行期間偵測額外停頓條件可以是比可能無效的提前執行計算結果更關係重大的結果。在一些具體實施例中,寬鬆型動作可應用於在提前執行期間遇到之寬鬆型指令類別(permissive instruction category)所包括的一或多個指令,但不需應用於在提前執行期間遇到之如此分類的每一個指令。此外,寬鬆型動作可不應用於在偵測提前執行觸發事件之前分發之寬鬆型指令類別所包括的指令。
相反地,絕對型動作可表示實行適當的提前執行操作的動 作。換言之,省略絕對型動作或解除其優先順序將威脅適當的提前執行操作或在提前執行之後返回正常操作。例如,絕對型動作可包括保存微處理器正確性(correctness)的動作。如本文中所使用,微處理器正確性一般是指微處理器架構狀態的功能有效性,使得維護微處理器架構之功能有效性的動作維護微處理器的正確性。在一些具體實施例中,絕對型動作可應用於在提前執行期間遇到之絕對型指令類別(absolute instruction category)所包括的每一個指令。此外,在一些具體實施例中,絕對型動作可應用於在偵測提前執行觸發事件之前分發之絕對型指令類別所包括的指令。應用如本文說明的絕對型動作可保存及保護微處理器的正確性。
在一些設定中,影響微處理器正確性的動作將無法補救地 更改微處理器在提前執行之後重新啟動的能力。作為一實例,在一些具體實施例中,微處理器的一些暫存器可具有檢查副本,在進入提前執行時存在的狀態可在提前執行事件之後重新啟動時從檢查副本中復原。由於存在檢查副本,在提前執行期間寫入這些暫存器將不會妨礙在提前執行之後重新啟動。然而,一些暫存器可能沒有檢查副本。為了保存微處理器功能正確性,應該避免在提前執行期間寫入此類暫存器。在缺少快取保護機構的情況下,類似的顧慮可應用於快取寫入。
作為另一實例,在一些具體實施例中,在微處理器中可包 括變更及/或控制微處理器操作之行為/操作的控制暫存器。在一些此等設定中,對控制暫存器的變更(如,經由對該控制暫存器的寫入)可以難以在稍後時間解除的方式更改微處理器的行為。例如,在提前執行操作期間對控制暫存器做出變更將對微處理器造成難以取消的操作變更,潛在地導致後提前執行操作以不同於提前執行未發生時所預期的方式繼續進行。在一些此類具體實施例中,可在提前執行期間防止更改控制暫存器。
上述絕對型動作及寬鬆型動作可回應於在多級微處理器管 線(multi-stage microprocessor pipeline)之合適級(suitable stage)實施的相應提前執行策略而執行,使得提前執行操作可不重新分發提前執行觸發指令而開始。例如,在進入提前執行時,寬鬆型提前執行策略可比絕對型提前執行策略更早在多級管線中應用。繼而,在進入提前執行時,選擇性動作可因寬鬆型策略實施方案,應用於稍早在管線中(諸如在進入執行邏輯之前)的後續分發指令。因為這些動作屬於選擇性,已在執行邏輯中之指令的這些動作因為指令在進入提前執行時未被重新分發而不執行在提前執行期間將為可接受的。因實施絕對型提前執行策略所引起的強制動作可在管線中的稍後時間點應用於執行邏輯中的所有指令。例如,在從執行邏輯退出時或在後續交付或寫回邏輯應用絕對型提前執行策略,使得潛在受到提前執行影響的所有指令可接受合適的絕對型提前執行策略,如此可避免對微處理器正確性做出不利的更改。
在一些實例中,所揭示的具體實施例可偵測與在提前執行 期間分發之指令相關聯的一或多個指令類別。繼而,可在提前執行期間應用有關相應指令類別的一或多個提前執行策略。一些具體實施例可偵測在提前執行期間分發及/或執行的指令是否與絕對型指令類別及/或寬鬆型指令類別相關聯。在一案例中,可在指令被交付之前應用與絕對型指令類別相關聯的絕對型提前執行策略。例如,可在其中微處理器正確性會因交付指令而受影響的設定中,防止微處理器的檢查狀態在提前執行期間因不當寫回事件的潛在毀損。在另一案例中,可在指令被分發及/或執行之前,應用與寬鬆型指令類別相關聯的寬鬆型提前執行策略。若經應用,可在分發至執行邏輯後,立即由微處理器實現功率/效能優勢。
100‧‧‧微處理器
102‧‧‧管線
109‧‧‧暫存器
110‧‧‧記憶體層級
110A‧‧‧L1處理器快取
110B‧‧‧L2處理器快取
110C‧‧‧L3處理器快取
110D‧‧‧主要記憶體
110E‧‧‧次要儲存器
110F‧‧‧第三儲存器
110G‧‧‧記憶體控制器
120‧‧‧提取邏輯
122‧‧‧解碼邏輯
124‧‧‧排程邏輯
126‧‧‧偵測邏輯
128‧‧‧執行邏輯
130‧‧‧提前執行進入控制邏輯
131‧‧‧寬鬆型邏輯
132‧‧‧絕對型邏輯
134‧‧‧寫回邏輯
200‧‧‧方法
202-222‧‧‧步驟
300‧‧‧微處理器管線
圖1根據本發明之一具體實施例示意性顯示計算裝置的微處理器。
圖2A根據本發明之一具體實施例顯示在提前執行中執行微處理器而不重新分發導致微處理器進入提前執行之指令之方法的一部分。
圖2B顯示圖2A所示方法的另一部分。
圖3A根據本發明之一具體實施例示意性顯示在偵測提前執行事件時的微處理器管線。
圖3B顯示在進入提前執行之後之圖3A圖解的微處理器管線。
圖1示意性描繪可結合本文說明之系統及方法利用之微處理器100的具體實施例。微處理器100包括各種處理器暫存器109,並可包括記憶體層級(memory hierarchy)110,其可包括L1處理器快取110A、L2處理器快取110B、L3處理器快取110C、主要記憶體110D(如,一或多個DRAM晶片)、次要儲存器110E(如,固態、磁性及/或光學儲存單元)及/或第三儲存器110F(如,磁帶陣列(tape farm))。應明瞭,實例記憶體/儲存組件按存取時間及容量遞增的順序列出,但可能仍有例外。
記憶體控制器110G可用來處置協定(protocol)及提供主要記憶體110D所需要的信號介面、及排程記憶體存取。記憶體控制器可實施於微處理器晶粒或單獨晶粒上。應明瞭,上述記憶體層級不具限制性,及在不脫離本發明範疇的情形下,可使用其他記憶體層級。
微處理器100亦包括管線,其在圖1中以簡化的形式圖解為管線102。管線化可允許一個以上的指令同時存在於不同的擷取級及執行級中。換言之,可使指令集傳送通過管線102中所包括的各級,同時從記憶體擷取另一指令及/或資料。因此,可在上游擷取機構正等待記憶體傳回指令及/或資料、佔用諸如快取及分支預測器的各種結構時利用各級,使得可潛在地發現其他快取未命中及/或分支誤預測。相對於以個別的一系列方式擷 取及執行指令及/或資料的方法,此方法可潛在地加速微處理器的指令及資料處理。
如圖1所示,管線102包括提取邏輯(fetch logic)120、解碼邏 輯122(decode logic)、排程邏輯(scheduling logic)124、執行邏輯(execution)128、提前執行進入控制邏輯(runahead entry control logic)130、寬鬆型邏輯131、絕對型邏輯132、及寫回邏輯(writeback logic)134。提取邏輯120從記憶體層級110(通常從由L2-L3快取所支援的聯合或專用L1快取及主要記憶體)擷取指令。解碼邏輯122例如藉由剖析運算碼、運算元、及定址模式而解碼指令。在剖析後,接著由排程邏輯124排程指令以供執行邏輯128執行。
在一些具體實施例中,排程邏輯124可經組態以排程指令集 架構(instruction set architecture,ISA)指令之形式的指令以供執行。另外或替代地,在一些具體實施例中,排程邏輯124可經組態以排程微操作束以供執行,其中每個微操作對應於一或多個ISA指令或ISA指令的部分。應明白,在不脫離本發明範疇的情形下,可利用以微操作束排程指令的任何合適配置。例如,在一些具體實施例中,單一指令可排程在複數個微操作束中,而在一些具體實施例中,單一指令可排程為一微操作束。在又其他具體實施例中,複數個指令可排程為一微操作束。在又其他具體實施例中,排程邏輯124可排程個別指令或微操作,如,完全不包含束的指令或微操作。
如圖1描繪的具體實施例所示,排程邏輯124包括偵測邏輯 (detection logic)126,其用以偵測由提取邏輯120擷取之指令的預定指令類別。在一些具體實施例中,偵測邏輯126可識別與所擷取指令相關聯的絕對型指令類別。在一些其他具體實施例中,偵測邏輯126可識別與所擷取指令相關聯的寬鬆型指令類別。應明白,偵測邏輯126可偵測幾乎任何預定類別。
可使用所偵測的類別決定一或多個提前執行策略,該一或多個提前執行策略掌控在提前執行中執行相關聯指令時如何操作微處理 器,如下文更詳細解說。應明白,偵測邏輯126可在微處理器操作的任何合適部分期間偵測指令類別。例如,在一些具體實施例中,不管微處理器100是否正在提前執行模式中操作,偵測邏輯126均可偵測指令類別。在此類具體實施例中,甚至在指令已被分發用於執行之後,微處理器100仍然能夠對這些指令應用適當的提前執行策略。在一些其他具體實施例中,偵測邏輯126可經組態以僅在提前執行模式期間偵測指令類別。
儘管圖1將偵測邏輯126顯示為包括在排程邏輯124中,但應 明白,偵測邏輯126可包括在微處理器100的任何合適部分中。例如,寫回邏輯134可包括合適的偵測邏輯126。此外,應明白,偵測邏輯126的各種功能可分布在微處理器100的多於一個部分中。例如,排程邏輯124可包括經組態以偵測寬鬆型指令類別的偵測邏輯126,寫回邏輯134則可包括經組態以偵測絕對型指令類別的偵測邏輯126。
如圖1所示,所描繪之管線102的具體實施例包括執行邏輯 128,其可包括經組態以執行由排程邏輯124分發之指令的一或多個執行機構單元。任何合適數目及類型的執行機構單元可包括在執行邏輯128內。可包括在執行邏輯128內之執行機構單元的非限制實例包括算術處理單元、浮點處理單元、載入/儲存處理單元、跳躍統計/撤回單元(jump stats/retirement unit)、及/或整數執行單元。
圖1中顯示之微處理器100的具體實施例描繪提前執行控制 邏輯130。提前執行控制邏輯130控制微處理器100的進出提前執行模式。例如,在圖1所示的實例中,提前執行控制邏輯130發信號告知寬鬆型邏輯131及絕對型邏輯132,微處理器在偵測提前執行觸發事件時處於提前執行中。 繼而,寬鬆型邏輯131及絕對型邏輯132可藉由以下方式採取動作:將一或多個提前執行策略應用於將在提前執行期間被分發的指令。
在一些具體實施例中,寬鬆型邏輯131及絕對型邏輯132可與管線102及提前執行控制邏輯130通信,使得相應提前執行策略可在管線 102的不同級實施。繼而,在進入提前執行時,寬鬆型提前執行策略可比絕對型提前執行策略更早在管線102中應用。例如,寬鬆型邏輯131可指示排程邏輯124在提前執行期間在分發之前對指令應用寬鬆型提前執行策略。繼而,該指令的執行在提前執行中可因微處理器100在執行指令時採取的功率及/或效能管理動作而受到增強。作為另一實例,絕對型邏輯132可指示寫回邏輯134(其經組態以將執行操作的結果交付至適當位置(如,暫存器109))防止在提前執行期間的一或多個寫回動作。繼而,寫回邏輯134可防止可因在提前執行期間進行更改所造成的快取毀損(cache corruption),其說明如下。
在一些具體實施例中,提前執行控制邏輯130亦可控制有關 進出提前執行的記憶體操作。例如,在進入提前執行時,可檢查微處理器100的部分以在非檢查工作狀態版本(non-checkpointed working state version)的微處理器100在提前執行期間推測式地執行指令時,保存微處理器100的狀態。微處理器100可在提前執行期間檢查之部分的非限制實例包括緩衝器(未顯示)、暫存器109、及執行邏輯128的狀態。在一些此類具體實施例中,提前執行控制邏輯130可在退出提前執行時將微處理器100恢復至所檢查的狀態。
應明瞭,以上在管線102中顯示的各級係典型RISC實施方案 的圖解,並非用來限制。例如,在一些具體實施例中,可在管線上游提供提取邏輯及排程邏輯功能性,諸如編譯VLIW指令或程式碼變形(code-morphing)。在一些其他具體實施例中,排程邏輯可包括在微處理器的提取邏輯及/或解碼邏輯中。更一般而言,微處理器可包括提取、解碼、及執行邏輯,其中每一個可包含一或多個級,且由執行邏輯實施記憶體存取(mem)及寫回功能性。本發明同樣適用於這些及其他微處理器實施方案,包括可使用VLIW指令及/或其他邏輯指令的混合實施方案。
在所說明的實例中,可一次提取及執行一個指令,因而可 能需要多個時脈週期(clock cycle)。在此時間期間,資料路徑之相當多的部 分可能未被使用到。除了單一指令提取之外或取代單一指令提取,可使用預提取方法以增強效能及避免與讀取及儲存操作(如,讀取指令及將此類指令載入處理器暫存器及/或執行佇列)相關聯的延時瓶頸。因此,應明白,在不脫離本發明範疇的情形下,可使用提取、排程、及分派指令的幾乎任何合適方式。
圖2A及2B顯示方法200的具體實施例,其導致微處理器進 入提前執行且在其中操作而不重新分發導致微處理器進入提前執行的指令。例如,在一些具體實施例中,可使用方法200以在依序微處理器(如,指令根據預選程式順序執行的微處理器)中操作。然而,應明白,在不脫離本發明範疇的情形下,可使用方法200的具體實施例以在提前執行中操作任何合適微處理器。例如,圖3A及3B示意性顯示可實施方法200的具體實施例之微處理器管線300之具體實施例的一部分。
繼續看到圖2A,在202,方法200包括擷取要執行的指令, 及在204,排程要執行的指令。在206,方法200包括識別提前執行事件,及在208,導致微處理器進入提前執行而不重新分發導致進入提前執行的指令。
作為如何可執行方法200的圖解實例,圖3A及3B示意性顯 示執行一系列指令之微處理器管線300的具體實施例。在圖3A及3B顯示的實例中,由排程邏輯在稍早參考時間T=0分發指令A。在圖3A顯示的T=3,指令A觸發提前執行事件。微處理器管線300進入提前執行,及在圖3B顯示的T=4,分派下一個要執行的指令(指令A+3)而不重新分發觸發提前執行的指令。在一些例子中,重新分發觸發提前執行的指令可減少可在提前執行中處理之指令的數量。
例如,因為在分發之前不知道指令A會觸發進入提前執行, 在對指令A及在指令A之後分發的所有指令的分發不應用提前執行策略,如圖3A顯示之不確定窗所指示。如果指令A被重新分發,則在使微處理器返 回目前狀態的提前執行模式版本(如,藉由重新分發指令A、A+1、及A+2)時將消耗至少三個時脈週期的提前執行。然而,因為在前三個時脈週期期間僅指令A觸發提前執行,在這三個時脈週期期間沒有任何關於微處理器之潛在停頓條件的新資訊將被揭露。藉由在提前執行中執行而不重新分發提前執行觸發指令,另一潛在停頓條件很有可能將被揭露。轉變至提前執行而不重新分發提前執行觸發指令的潛在優點在其中提前執行觸發事件在執行邏輯深處發生的情況中會比較大。在此類情況中,若重新分發提前執行觸發指令,則可解析初始提前執行觸發事件,及在提前執行觸發指令到達初始產生提前執行事件的執行機構單元之前退出提前執行。
繼續看到圖2A,在微處理器在208進入提前執行之後,方法 200包括:在210,在提前執行期間根據一或多個提前執行策略操作微處理器。如本文中所使用,提前執行策略是指在提前執行期間掌控微處理器之操作的任何合適動作。實施一或多個提前執行策略可導致微處理器在提前執行期間以不同於不在提前執行中時的方式操作。
例如,提前執行策略可導致微處理器以不同於在提前執行 外所採取的方式對待一些指令且採取有關這些指令的替代性動作。此外,與相應指令相關聯的各種提前執行策略可導致微處理器在提前執行期間以彼此不同的方式對待相應指令。此類在對待上的差異可基於相應指令及/或對微處理器的潛在後果當中的差異。
在圖2A顯示的具體實施例中,在210在提前執行期間根據一 或多個提前執行策略操作微處理器包括:在212,偵測指令的指令類別,及在214,決定指令是否落入第一指令類別。在一些具體實施例中,指令類別可識別一或多個提前執行策略,其描述若偵測提前執行條件,在排程、執行、及/或撤回指令期間要由微處理器執行之一或多個動作。儘管本文說明的動作一般被視為正向動作(positive action),但應明白,可將在提前執行期間的任何合適負向動作(negative action)或無動作(inaction)考慮為在本發明 的範疇內。例如,動作可包括在提前執行期間可在提前執行之外發生的暫停活動。
如上文所介紹,可將一些動作視為在提前執行期間具有不 同的相對優先順序,使得可將一些動作分類為寬鬆型,而可將其他動作分類為絕對型。因此,在一些具體實施例中,決定指令是否落入第一類別可包括識別指令是否與寬鬆型指令類別相關聯。寬鬆型指令類別的非限制實例包括微處理器功率管理指令類別及微處理器效能管理類別。此外,在一些具體實施例中,決定指令是否落入第一類別可包括識別指令是否與絕對型指令類別相關聯。絕對型指令類別之一非限制實例包括微處理器正確性指令類別。
因為潛在提前執行動作可影響微處理器的操作穩定性,在 214在提前執行期間根據提前執行策略操作微處理器包括:在216,根據第一指令類別控制微處理器的操作。例如,在一些具體實施例中,可根據第一指令類別控制排程、執行、或撤回與第一指令類別相關聯的指令。額外地或替代性地,在一些具體實施例中,可根據第一指令類別控制排程、執行、或撤回不同指令。
在一些具體實施例中,在216根據第一指令類別控制微處理 器的操作可包括對微處理器應用寬鬆型提前執行策略。例如,如果第一指令類別與寬鬆型動作相關聯,則可將寬鬆型提前執行策略應用於微處理器。
應用寬鬆型提前執行策略可藉由改良一些指令可在管線中 執行的效率,增強在提前執行中針對這些指令的微處理器操作。在圖3A顯示的實例中,指令A+3被描繪為在觸發提前執行進入條件時可由排程邏輯分發的下一個指令。提前執行控制邏輯發送信號給寬鬆型邏輯,寬鬆型邏輯繼而發信號告知排程器偵測及應用提前執行策略。在一個時脈週期後(如,T=4),當圖3B顯示指令(A+3)*在執行單元EXECUTE 0時,指示對從排程邏輯分發的指令A+3應用寬鬆型提前執行策略。
儘管此實例有關在分發之前執行的策略,但應明白,合適 的寬鬆型邏輯可在一或多個合適位置與管線及/或執行邏輯通信。例如,包括有關功率及效能管理提前執行策略之邏輯的寬鬆型邏輯可與一或多個早先級的執行邏輯通信。在早先級的執行邏輯之間提供額外通信可容許對在觸發提前執行之後已經在執行邏輯中的指令應用寬鬆型提前執行策略(如,在不確定窗內),潛在地提供額外提前執行操作效率。
如上文所介紹,寬鬆型提前執行策略可造成微處理器在提 前執行期間的更有效操作。在一些具體實施例中,應用寬鬆型提前執行策略可導致微處理器將所選指令從第一類型(type)轉換為第二類型。此類具體實施例可為與微處理器功率管理指令類別相關聯之動作的實例。
例如,應用寬鬆型提前執行策略可導致將浮點運算指令轉 換為非運算指令。將浮點運算指令轉換為非運算指令可在提前執行期間節省功率及/或時間,因為浮點運算指令通常不用來計算位址或解析分支或另外揭露在提前執行期間的潛在停頓及未命中。在一些具體實施例中,應用寬鬆型提前執行策略可導致微處理器污染(poison)所選指令的目的地。例如,如果浮點運算指令被轉換為非運算指令,則帶有來自轉換指令之浮點資料的整數指令(如,使用浮點資料作為輸入的指令)將可能產生無效結果。 污染帶有浮點資料之指令(floating point data-seeded instruction)(在此實例中的整數指令)的目的地暫存器可減少潛在快取污染。
在一些具體實施例中,應用寬鬆型提前執行策略可導致微 處理器抑制已污染來源暫存器(poisoned source register)之指令的陷阱(trap)或故障條件(fault condition)。此類具體實施例可為與微處理器效能管理指令類別相關聯之動作的實例。因為陷阱及故障通常使微處理器操作終止,故遇到陷阱或故障會縮短在提前執行中的時間。抑制在提前執行期間的陷阱/故障條件可藉由提供解析分支及暴露未命中的額外機會,增強微處理器效能。
儘管微處理器可在提前執行中採取一些動作以增強操作, 但在一些設定中,可能需要微處理器執行一些動作以保存及保護微處理器的功能穩定性及正確性。在一些具體實施例中,在216根據第一指令類別控制微處理器的操作可包括對微處理器應用絕對型提前執行策略。例如,如果第一指令類別與絕對型動作相關聯,則可對微處理器應用絕對型提前執行策略以防止可影響微處理器正確性的動作。
因為保存微處理器正確性的動作通常與交付、寫回、或其 他記憶體操作相關聯,此類操作通常在執行邏輯即將結束時發生。例如,如可更新或另外影響微處理器之架構狀態(architectural state)的操作,輸入/輸出操作通常在執行邏輯晚期執行。因此,提前執行觸發事件通常是尚未到達此類操作的指令。繼而,在該指令之後分發至執行邏輯的指令亦不可能已到達這些操作。因此,在偵測提前執行時,絕對型提前執行策略可應用於在偵測提前執行之後從執行邏輯出現的任何指令,或到達可影響微處理器正確性的操作的任何指令。
在圖3A顯示的實例中,提前執行控制邏輯發信號告知絕對 型邏輯在偵測提前執行觸發事件時應用絕對型提前執行策略。繼而,絕對型邏輯發信號告知寫回邏輯取決於指令特性執行絕對型提前執行策略。例如,在圖3B顯示的實例中,將容許針對在提前執行觸發指令A之前的這些指令(如,指令(A-1)及更早的指令)進行寫回。絕對型提前執行策略將被應用於提前執行觸發指令A及指令(A+1)及(A+2)。儘管此實例有關在寫回時執行的策略,但應明白,可在管線內任何合適位置執行合適的絕對型提前執行策略,諸如在從執行邏輯退出時或在管線內的一或多個有關正確性的級。
在一些具體實施例中,應用絕對型提前執行策略可導致微 處理器在提前執行期間防止對微處理器的交付狀態做出更改。例如,絕對型提前執行策略可在提前執行期間防止對微處理器的非檢查狀態做出更新(update),潛在地促進在提前執行之後可靠地回復至原始狀態。作為另一實 例,絕對型提前執行策略可在提前執行期間防止可能具有在上文實例中說明之架構效應以外的架構效應的記憶體操作發生,諸如輸入/輸出操作、寫回操作等。在一些設定中,絕對型提前執行策略可防止對微處理器的記憶體系統做出影響微處理器架構狀態的更改。
應明白,指令可落入一個以上的指令類別,使得複數個提前執行策略可在執行指令時應用於指令。例如,寬鬆型及絕對型提前執行策略可在提前執行期間應用於指令。因此,在一些具體實施例中,在210在提前執行期間根據提前執行策略操作微處理器可包括:在218,決定該指令是否落入所選類別,及在220,根據第二指令類別控制該指令的執行。例如,第二合適提前執行策略可根據第二指令類別應用於指令。
一旦解析導致微處理器進入提前執行的條件,微處理器可退出提前執行。因此,方法200包括在222,導致微處理器退出提前執行。通常,微處理器藉由返回檢查狀態及重新分發觸發提前執行的指令,重新進入正常操作。
應明白,本文所說明方法僅為圖解說明之用而提供,並無意用來限制。因此,應明白,在不脫離本發明範疇的情形下,在一些具體實施例中,本文所說明方法可包括額外或替代程序,而在一些具體實施例中,本文所說明方法可包括可重新排序或省略的一些程序。此外,應明白,可使用任何合適的硬體(包括本文說明的硬體)執行本文所說明方法。
本書面說明使用實例揭示本發明(包括最佳模式),及亦使一般相關技術者能夠實踐本發明,包括製作及使用任何裝置或系統及執行任何結合的方法。本發明的專利範疇由申請專利範圍定義,及可包括一般技術者明瞭的其他實例。預期此類其他實例係落在申請專利範圍的範疇內。
100‧‧‧微處理器
102‧‧‧管線
109‧‧‧暫存器
110‧‧‧記憶體層級
110A‧‧‧L1處理器快取
110B‧‧‧L2處理器快取
110C‧‧‧L3處理器快取
110D‧‧‧主要記憶體
110E‧‧‧次要儲存器
110F‧‧‧三級儲存器
110G‧‧‧記憶體控制器
120‧‧‧提取邏輯
122‧‧‧解碼邏輯
124‧‧‧排程邏輯
126‧‧‧偵測邏輯
128‧‧‧執行邏輯
130‧‧‧提前執行進入控制邏輯
131‧‧‧寬鬆型邏輯
132‧‧‧絕對型邏輯
134‧‧‧寫回邏輯

Claims (10)

  1. 一種微處理器,包含:提取邏輯,用於擷取一指令;排程邏輯,用於分發由該提取邏輯擷取的該指令以便執行;及提前執行控制邏輯,用以:若該排程邏輯所排程之該指令的執行產生一提前執行觸發事件,則導致該微處理器進入一提前執行模式且在其中操作而不重新分發該指令;且在該微處理器處於該提前執行模式中時實施提前多個執行策略,該等提前執行策略掌控該微處理器的操作並導致該微處理器以不同於不在該提前執行模式中時的方式操作。
  2. 如申請專利範圍第1項所述之微處理器,另外包含偵測邏輯,其用於識別一所選指令在該提前執行模式期間是否與一絕對型指令類別或一寬鬆型指令類別相關聯。
  3. 如申請專利範圍第2項所述之微處理器,其中該排程邏輯係一多級管線之部分,及其中與該寬鬆型指令類別相關聯的一寬鬆型提前執行策略比與該絕對型指令類別相關聯的一絕對型提前執行策略更早在該多級管線中應用。
  4. 如申請專利範圍第1項所述之微處理器,其中針對一所選指令,該提前執行控制邏輯經組態以決定該所選指令是否落至一第一指令類別中,及如果該所選指令落至該第一指令類別中,則根據與該第一指令類別相關聯的一第一提前執行策略,控制該微處理器的操作。
  5. 如申請專利範圍第4項所述之微處理器,其中針對該所選指令,該提前 執行控制邏輯另外經組態以決定該所選指令是否落至一第二指令類別中,及如果該所選指令落至該第二指令類別中,則根據與該第二指令類別相關聯的一第二提前執行策略,控制該微處理器的操作。
  6. 如申請專利範圍第4項所述之微處理器,其中該第一提前執行策略導致該微處理器在該提前執行模式期間將該所選指令從一第一類型轉換至一第二類型。
  7. 如申請專利範圍第4項所述之微處理器,其中該所選指令係一帶有浮點資料的指令,及其中該第一提前執行策略導致該微處理器污染該所選指令之一目的地。
  8. 如申請專利範圍第4項所述之微處理器,其中該第一提前執行策略導致該微處理器抑制由該所選指令引起之與一污染來源暫存器相關聯的一故障條件。
  9. 如申請專利範圍第4項所述之微處理器,其中該第一提前執行策略導致該微處理器在該提前執行模式期間防止對一微處理器記憶體系統做出影響該微處理器之一架構狀態的多個更改。
  10. 如申請專利範圍第4項所述之微處理器,其中該第一提前執行策略導致該微處理器防止對該微處理器的一非檢查狀態做出一更新。
TW102140256A 2012-12-07 2013-11-06 用於提前執行操作的指令分類 TW201439900A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/708,544 US20140164738A1 (en) 2012-12-07 2012-12-07 Instruction categorization for runahead operation

Publications (1)

Publication Number Publication Date
TW201439900A true TW201439900A (zh) 2014-10-16

Family

ID=50778373

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102140256A TW201439900A (zh) 2012-12-07 2013-11-06 用於提前執行操作的指令分類

Country Status (4)

Country Link
US (1) US20140164738A1 (zh)
CN (1) CN103870240A (zh)
DE (1) DE102013224137A1 (zh)
TW (1) TW201439900A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI781588B (zh) * 2015-12-23 2022-10-21 美商英特爾股份有限公司 包含用於控制流向終止的模式特定結束分支之設備、系統及方法
TWI782754B (zh) * 2020-12-02 2022-11-01 美商聖圖爾科技公司 微處理器和在微處理器中實現的方法

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9875105B2 (en) 2012-05-03 2018-01-23 Nvidia Corporation Checkpointed buffer for re-entry from runahead
US10001996B2 (en) 2012-10-26 2018-06-19 Nvidia Corporation Selective poisoning of data during runahead
US9740553B2 (en) 2012-11-14 2017-08-22 Nvidia Corporation Managing potentially invalid results during runahead
US9632976B2 (en) 2012-12-07 2017-04-25 Nvidia Corporation Lazy runahead operation for a microprocessor
US9424138B2 (en) * 2013-06-14 2016-08-23 Nvidia Corporation Checkpointing a computer hardware architecture state using a stack or queue
US9582280B2 (en) 2013-07-18 2017-02-28 Nvidia Corporation Branching to alternate code based on runahead determination

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5752263A (en) * 1995-06-05 1998-05-12 Advanced Micro Devices, Inc. Apparatus and method for reducing read miss latency by predicting sequential instruction read-aheads
US5864692A (en) * 1996-12-16 1999-01-26 Hewlett-Packard Company Method and apparatus for protecting memory-mapped devices from side effects of speculative instructions
JP3705022B2 (ja) * 1999-07-09 2005-10-12 株式会社日立製作所 低消費電力マイクロプロセッサおよびマイクロプロセッサシステム
JP3676257B2 (ja) * 2001-05-21 2005-07-27 松下電器産業株式会社 データ処理装置
JP3564445B2 (ja) * 2001-09-20 2004-09-08 松下電器産業株式会社 プロセッサ、コンパイル装置及びコンパイル方法
US20060149931A1 (en) * 2004-12-28 2006-07-06 Akkary Haitham Runahead execution in a central processing unit
US7571304B2 (en) * 2005-03-18 2009-08-04 Sun Microsystems, Inc. Generation of multiple checkpoints in a processor that supports speculative execution
US7747841B2 (en) * 2005-09-26 2010-06-29 Cornell Research Foundation, Inc. Method and apparatus for early load retirement in a processor system
US20070186081A1 (en) * 2006-02-06 2007-08-09 Shailender Chaudhry Supporting out-of-order issue in an execute-ahead processor
CN102184127B (zh) * 2011-05-20 2013-11-06 北京北大众志微系统科技有限责任公司 一种实现处理器预执行的方法及相应的装置
US9009449B2 (en) * 2011-11-10 2015-04-14 Oracle International Corporation Reducing power consumption and resource utilization during miss lookahead

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI781588B (zh) * 2015-12-23 2022-10-21 美商英特爾股份有限公司 包含用於控制流向終止的模式特定結束分支之設備、系統及方法
US11650818B2 (en) 2015-12-23 2023-05-16 Intel Corporation Mode-specific endbranch for control flow termination
TWI782754B (zh) * 2020-12-02 2022-11-01 美商聖圖爾科技公司 微處理器和在微處理器中實現的方法

Also Published As

Publication number Publication date
US20140164738A1 (en) 2014-06-12
CN103870240A (zh) 2014-06-18
DE102013224137A1 (de) 2014-06-12

Similar Documents

Publication Publication Date Title
TW201439900A (zh) 用於提前執行操作的指令分類
US9740553B2 (en) Managing potentially invalid results during runahead
US9690581B2 (en) Computer processor with deferred operations
US9804854B2 (en) Branching to alternate code based on runahead determination
US10324725B2 (en) Fault detection in instruction translations
US9875105B2 (en) Checkpointed buffer for re-entry from runahead
US9891972B2 (en) Lazy runahead operation for a microprocessor
US10628160B2 (en) Selective poisoning of data during runahead
US9513925B2 (en) Marking long latency instruction as branch in pending instruction table and handle as mis-predicted branch upon interrupting event to return to checkpointed state
TW201030610A (en) Method for performing fast conditional branch instructions and executing two types of conditional branch instructions and related microprocessor, computer program product and pipelined microprocessor
US10049043B2 (en) Flushing control within a multi-threaded processor
CN108920190B (zh) 用于确定从其恢复指令执行的恢复点的装置和方法
TW201737060A (zh) 程式迴圈控制
US20140195790A1 (en) Processor with second jump execution unit for branch misprediction
US8516577B2 (en) Regulating atomic memory operations to prevent denial of service attack
US7941646B2 (en) Completion continue on thread switch based on instruction progress metric mechanism for a microprocessor
JP3769249B2 (ja) 命令処理装置および命令処理方法
US9323536B2 (en) Identification of missing call and return instructions for management of a return address stack
US20110296143A1 (en) Pipeline processor and an equal model conservation method
US12118355B2 (en) Cache coherence validation using delayed fulfillment of L2 requests
KR100649301B1 (ko) 마이크로쓰레드를 이용한 인터럽트 처리 장치