TWI391857B - 處理非同步管線之資料快取失誤亂序之裝置及方法 - Google Patents

處理非同步管線之資料快取失誤亂序之裝置及方法 Download PDF

Info

Publication number
TWI391857B
TWI391857B TW096103667A TW96103667A TWI391857B TW I391857 B TWI391857 B TW I391857B TW 096103667 A TW096103667 A TW 096103667A TW 96103667 A TW96103667 A TW 96103667A TW I391857 B TWI391857 B TW I391857B
Authority
TW
Taiwan
Prior art keywords
load
command
data
item
ltag
Prior art date
Application number
TW096103667A
Other languages
English (en)
Other versions
TW200805151A (en
Inventor
Christopher M Abernathy
Jeffrey P Bradford
Ronald P Hall
Timothy H Heil
David Shippy
Original Assignee
Ibm
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 Ibm filed Critical Ibm
Publication of TW200805151A publication Critical patent/TW200805151A/zh
Application granted granted Critical
Publication of TWI391857B publication Critical patent/TWI391857B/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/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/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/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • 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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Description

處理非同步管線之資料快取失誤亂序之裝置及方法
本發明一般係關於一種改良的資料處理系統。特別是,本發明係關於用於處理非同步管線之資料快取失誤亂序之裝置與方法。
目前多數的計算系統係利用快取以幫助加速資料轉移與指令執行。這些暫時的快取係作為集結區域(staging area),且其內容係持續地改變。記憶體快取係連結主記憶體與微處理器晶片之處理器的記憶體庫(memory bank)。記憶體快取較主記憶體快,並且允許以較快地速度執行指令及讀寫資料。
指令與資料係使用一前瞻演算法從主記憶體轉移至區塊中之快取。在路由中的指令愈連續的被執行或是資料愈連續的被讀取或寫入,下一個所需的項目將有比較大的可能性已經在快取中,而有較佳之性能。
層級1(L1)快取係建構至微處理晶片中之一記憶體庫。其亦已知為“主要快取”,L1快取係最接近處理器之記憶體。層級2(L2)快取係一第二集結區域,其提供L1快取。增加L2快取之大小可能加速一些應用程式,但對其他則無影響。L2快取可建構於微處理器晶片中,譬如位於多重晶片封裝模組中之一獨立晶片上,或為主機板上的獨立晶片庫。快取一般為靜態隨機存取記憶體(SRAM),而主記憶體一般為某種類型的動態隨機存取記憶體(DRAM)。
除了資料與指令之快取外,許多目前的計算系統使用了管線,以執行同時的或平行的處理線。操作之重疊係藉由同步地將資料及/或指令移動至具有所有階層的管線處理之一概念管線。舉例來說,當要執行一指令時,電腦解碼下一個指令。在向量處理器中,可同步地處理在浮點運算中的幾個步驟。
微處理器與管線可為有序的(in-order)或亂序的(out-of-order)。有序的微處理器或管線以其被發送之順序來處理指令及資料。亂序的微處理器或管線可能以不同於其被發送順序之順序來處理指令與資料。亂序的執行架構採用被寫入及編譯而以一特定順序執行之程式碼、可能的話重新安排指令之次序以對處理器資源有最大化的利用、執行它們、接著安排它們回其原始順序以使結果可寫出至記憶體。對於使用者而言,執行看起來像是一有序、連續的指令流進入至處理器,以及出現一相同有序的、連續的計算結果流。僅有處理器知道程式之指令實際上以何種順序執行。
當遭遇L1資料快取失誤時(譬如為回應管線中之一負載指令之執行),在一有序的微處理器中將產生複雜度。因為有序的微處理器需要被有序處理之指令與資料,於是多數有序微處理器立即地清除比失誤負載(missed load)新的指令。也就是,在失誤負載指令後放置於管線中的指示不是由管線來執行,因為其假設這些指令係相依於失誤負載指令,或可能另外的修改相關於失誤負載指令之資料。
或者,某些有序的微處理器等待清除管線中的指令及資料,直至遇到失誤的負載指令上之相依性。這個程序係較佳地執行,因為其允許執行比失誤負載指令新的非相依指令,即便有之後需再被執行之一較舊的未解決指令(即失誤負載指令)。因為失誤負載指令在當該資料出現於L1資料快取中必須重新發出,所以這會導致在一有序處理器中的亂序行為,其為與其餘程式流程相關的實際亂序。
當存在負載指令必須行經之多重管線時,進一步之複雜度便會出現,且管線彼此不同步。當路徑產生與快取存取藉由第一管線而完成,且藉由與第一管線不同步之第二管線來完成放置資料於結構暫存器時,便可能出現這樣的情況。當存在可能刪除其中一個非同步管線中的負載指令之例外時(有時候非常遲),額外的複雜度便會發生。
鑑於上述,具有用以處理微處理器中之L1資料快取失誤的改良機制是有利的。而具有用以處理在具有多重非同步管線之微處理器中之L1資料快取失誤的改良機制是更有利的。再者,具有用以處理可在每一個非同步管線中容納例外之L1資料快取失誤之改良機制是有利的。本發明之描述性實施例提供了這樣的改良機制。
藉由此描述性實施例,針對每一管線提供負載表資料結構與負載目標緩衝於一微處理器中,其中每一管線非同步於其他管線。負載目標緩衝包含負載表資料結構與狀態機,用以控制藉由基於負載指令之目前狀態(其係決定自負載表資料結構)之管線所發佈之負載指令之處理。
藉由傳送到兩或多個非同步管線之負載指令,此描述性實施例之機制將負載標籤(LTAG)識別符與負載指令結合。LTAG係用來追蹤跨越多重管線的每一個負載指令,且用以索引負載表資料結構,以擷取一負載表項目。
在負載指令正常操作下,與負載指令相關之資料即可得自於或擷取自使用第一管線之L1資料快取。擷取之資料係放置於由相應之負載指令之LTAG所索引之項目中的負載目標緩衝之負載表資料結構中。在寫入至暫存器檔案前,此負載目標緩衝基本上作為負載資料之改名暫存器(rename register)。相應的負載表標為“碰撞(hit)”,其指示資料已經準備妥當且有效,供第一管線現在使用。當相同之相應負載指令已能夠自第二管線發佈時,其LTAG便使用以索引進入負載目標緩衝之負載表並且擷取正確資料以載入至暫存器檔案。LTAG可接著解除配置(de-allocated)以供未來負載指令使用,且負載表中相應的項目係標示為解除配置(de-allocate)或”dealloc”。
當負載指令“失誤”負載/儲存管線中之L1資料快取,即此資料不能在正常時間下獲得以放置於負載目標緩衝中時,由LTAG所索引之負載表中之相應項目係標示為“失誤”。負載失誤佇列係通知為快取“失誤”,且等待資料自L2快取或其他記憶體次系統中再利用(recycle)。一旦資料自L2快取或其他記憶體次系統中返回時,其係放置於L1快取中,並與相應於負載指令之LTAG一起傳送至負載目標緩衝。這便允許負載資料以任何次序(即不需要與當資料之請求傳送至L2快取或其他記憶體次系統時的次序相同)自L2快取或其他記憶體次系統中再利用。如果再利用資料有效的話,則相應負載表項目標示為一“碰撞”。
指令管線中之相應負載在此時可在指令管線中之任何位置。負載可仍然在指令管線中或是可已嘗試發佈或存取負載表。針對第一個例子,當此再利用操作完成時,相應負載表項目在負載指令自指令管線發佈前從“失誤”變為“碰撞”。就負載指令之觀點而言,此失誤從來沒發生,且負載指令以一正常之方式發佈,使得用於負載指令之資料載入至暫存器檔案。
當負載指令自指令管線發佈且發現其在負載表中之相應項目標示為“失誤”時,負載指令之發佈效用便取消,且負載指令係儲存於負載表中供未來再發佈至指令管線。負載表有效地作為一負載失誤佇列項目,直到負載資料變為可得的。當再利用操作完成時,負載表中之相應項目標示為“碰撞”,且負載指令再發佈至指令管線,如往常般執行。
在進一步之描述性實施例中,負載表項目具有用於決定負載指令是否由於一例外而失效的機制。外,提供一額外之中間狀態於負載指令之發佈與LTAGs及負載表項目之解除配置之間,以幫助處理新的例外。
在一描述性實施例中,提供了在具有指令管線與負載/儲存管線之資料處理裝置中用以處理負載指令之方法。方法可包含接收一負載指令、結合負載指令與一負載標籤(LTAG)、發佈負載指令與LTAG至負載/儲存管線、以及嘗試擷取相應於自第一快取之負載指令之資料。於是可做出關於擷取相應於負載指令之資料的嘗試是否會造成快取命中或快取失誤之決定。在負載目標緩衝之負載表資料結構中之項目可能基於LTAG與嘗試擷取相應於負載指令之資料的結果而產生。
負載表資料結構中項目之產生可包含在負載表中產生一項目,其中負載表係藉由與負載指令相關之LTAG而索引,以及基於擷取相應於負載指令之嘗試是否會造成快取命中或快取失誤的決定而標示項目為快取命中或是快取失誤。如果決定之結果指示為快取失誤,本方法可進一步包含自記憶體次系統中再利用相應於負載指令之資料,以及將再利用資料儲存於負載表之項目中。
來自記憶體次系統之相應於負載指令之資料的再利用可包含:在負載失誤佇列單元中維持識別相關於負載指令之LTAG及相關於對應正在再循環之資料之負載指令之負載位址的一資料結構。再利用可進一步包含:基於在負載失誤佇列單元中之資料結構,而關聯該再利用資料與負載指令,以回應來自記憶體次系統之資料的再利用。再利用資料可基於在負載失誤佇列單元之資料結構中所識別之負載指令之LTAG,而儲存於負載表之項目中。
此方法可進一步包含只有再利用資料為有效時才標示在負載表中之項目為一快取命中。或者,如果再利用資料為無效,標示在負載表中之項目為一快取失誤。
除了上面所述之外,此方法可進一步包含發佈負載指令與LTAG至指令管線,以及自指令管線發佈負載指令至負載目標緩衝。基於相關於發佈負載指令之LTAG,可識別對應發佈負載指令之負載表中之一項目。基於負載表之識別項目是否標示為一快取失誤或一快取命中,而決定是否儲存對應負載指令之資料於一暫存器檔案中。
如果決定識別的項目係標示為一快取命中,則可儲存對應負載指令之資料於暫存器檔案中。在負載表中之LTAG與項目可依循著儲存相應於在暫存器檔案中之負載指令之資料來解除配置。在儲存對應負載指令之資料於暫存器檔案中後,可解除配置LTAG及負載表中之項目。
如果決定在負載表之識別項目係標示為一快取失誤的話,可取消來自指令管線之負載指令之發佈的任何效應。如果決定在負載表中之識別項目係標示為一快取失誤的話,可更新負載表中之識別項目為具有一未定狀態。
如果決定在負載表之識別項目係標示為一快取失誤,可儲存負載指令之表示於負載表之識別項目中。負載指令可基於識別項目中之負載指令之表示,而重新發佈負載指令至指令管線,以回應對應於自一記憶體次系統再利用之負載指令之資料。
指令管線與負載/儲存管線可彼此互為不同步。資料處理裝置可為一處理器或可為一多重處理器異質資料處理系統之部分。多重處理器異質資料處理系統可包含一控制處理器及一或多個共同處理器。資料處理裝置可為一或多個控制處理器或是一多重處理器異質資料處理系統中之共同處理器。
在另一描述性實施例中,提供了一裝置,其包含一發佈單元、耦合至發佈單元之一指令管線、耦合至發佈單元之一負載/儲存管線、以及耦合至指令管線與負載/儲存管線之一負載目標緩衝。發佈單元可接收一負載指令、將負載指令與一負載標籤(LTAG)相關連、以及發佈負載指令及LTAG至負載/儲存管線。負載/儲存管線可嘗試擷取相應於來自第一級快取之負載指令之資料,並決定擷取對應負載指令之資料的嘗試是否會造成一快取命中或一快取失誤。負載目標緩衝可基於LTAG以及擷取對應負載指令之資料之嘗試的結果,而產生一項目於負載目標緩衝之負載表資料結構中。
此負載目標緩衝可藉由在與負載指令相關連之LTAG所索引之負載表中產生一項目,而在負載表資料結構中產生一項目。負載目標緩衝可進一步基於決定擷取對應負載指令之資料的嘗試是否會造成一快取命中或一快取失誤,而標示項目為一快取命中或一快取失誤。
此裝置可進一步包含耦合至負載/儲存管線之負載失誤佇列單元。如果對於嘗試擷取相應於負載指令之資料是否會造成一快取命中或一快取失誤之決定結果為一快取失誤的話,,此負載失誤佇列可自第二級快取再利用對應負載指令之資料,並儲存再利用資料於負載目標緩衝之負載表中之項目。負載失誤佇列單元可藉由以下而自第二級快取中再利用對應負載指令之資料:在負載失誤佇列單元中,在負載失誤佇列單元中維持識別相關於負載指令之LTAG的資料結構及相關於相應正在再利用之資料之負載指令的負載位址。負載失誤佇列單元可基於在負載失誤佇列單元中之資料結構而關聯再利用資料與負載指令,以回應來自第二級快取之資料的再利用。再利用資料可基於在負載失誤佇列單元之資料結構中所識別之負載指令的LTAG而儲存在負載表之項目中。
負載目標緩衝僅有在再利用資料係為有效時才會標示負載表中之項目為一快取命中。如果再利用資料無效的話,負載目標緩衝便標示負載表中之項目為一快取失誤。
發佈單元可發佈負載指令及LTAG至指令管線,而指令管線可發佈負載指令至負載目標緩衝。負載目標緩衝可基於相關於發佈負載指令之LTAG而識別在相應於發佈負載指令之負載表中的一項目。負載目標緩衝可基於在負載表中之識別項目是否標示為一快取失誤或是一快取命中而決定是否儲存相應於負載指令的資料於一暫存器檔案中。
如果決定識別項目係標示為一快取命中,則負載目標緩衝儲存對應負載指令之資料於暫存器檔案中。負載目標緩衝在儲存對應負載指令之資料於暫存器檔案中後,可初始化LTAG及負載表中之項目的解除配置。如果決定負載表中之識別項目係標示為一快取失誤,則負載目標緩衝可進一步取消來自指令管線之負載指令之發佈的任何效應。如果決定在負載表中之識別項目係標示為一快取失誤的話,則負載目標緩衝也可更新負載表中之識別項目為具有一未定狀態。
除此之外,如果決定在負載表之識別項目係標示為一快取失誤,則負載目標緩衝可儲存負載指令之表示於負載表之識別項目中。再者,負載目標緩衝可基於識別項目中之負載指令之表示,而重新發佈負載指令至指令管線,以回應對應於自記憶體次系統而再利用之負載指令之資料
裝置可為一多重處理器異質資料處理系統之部分。多重處理器異質資料處理系統可包含一控制處理器及一或多個共同處理器。裝置可為一或多個控制處理器或是一共同處理器。
在進一步之描述性實施例中,提供了包含具有電腦可讀程式之電腦可用媒體的電腦程式產品。當於一計算裝置執行時,電腦可讀程式可使此計算裝置執行先述方法之各種操作。
在以下對本發明描述性實施例的詳細描述中,本發明之這些與其他特徵與優點將會描述且可由熟此技藝者了解。
在一描述性實施例中,提供了用以處理非同步管線之資料快取失誤亂序之裝置與方法。描述性實施例之機制可實現於具有資料快取與一或多個非同步管線之任何微處理器中。圖1提供了資料處理系統之一個例子,其可實現描述性實施例之範例方面。圖1僅提供作為一例子,而非意圖陳述或暗示有關本發明可實施之特定結構之任何限制。可在不違背本發明之精神與範疇下對所描繪之結構做出許多修改。
圖1係資訊處理裝置之一範例方塊圖,其可實現描述性實施例之範例方面。圖1所示之範例資料處理系統係一單元寬帶引擎結構(CBEA)資料處理系統之範例。雖然在此描述性實施例之說明中使用CBEA,然本發明並不限於此,熟此技藝者藉接下來之描述將可輕易了解。
如圖1所示此CBEA 100包含具有處理器(PPU)116與其L1及L2快取112及114之功率處理器元件(PPE)110,以及多重綜效處理器元件(SPEs)120-134,其中每一SPEs 120-134皆有其自己的綜效處理器單元(SPU)140-154、記憶體流程控制155-162、局部記憶體或儲存(LS)163-170、以及匯流排介面單元(BIU unit)180-194,而BIU單元180-194可例如為直接記憶體存取(DMA)、記憶體管理單元(MMU)與匯流排介面單元之組合。也可提供高頻寬內部元件互連匯流排(EIB)196、匯流排介面控制器(BIC)197、以及記憶體介面控制器(MIC)198。
CBEA 100可為一晶片上系統,使圖1所示之每一元件皆可提供於單一微處理器晶片上。外,CBEA 100係一異質處理環境,其中每一SPUs可接收來自系統中的每一個其他SPUs的不同指令。外,SPUs的指令組係不同於PPU,例如PPU可執行以降低指令組電腦(RISC)為基礎之指令,而SPU執行向量化指令。
SPEs 120-134係彼此耦合且透過EIB 196耦合至L2快取114。外,SPEs 120-134透過EIB 196耦合至MIC 198與BIC 197。MIC 198提供至共享記憶體199的一通訊介面。BIC 197提供一通訊介面於CBEA 100與其他外部匯流排及裝置之間。
PPE 110係一雙重線程(dual threaded)PPE 110。雙重線程PPE 100與八個SPEs 120-134之組合使得CBEA 100能夠處理10個同時的線程以及超過128個未解決之記憶體請求。PPE 100做為處理絕大部分之計算工作負載之八個SPEs 120-134之控制器。當SPEs 120-134執行例如向量化浮點程式碼執行時,PPE 100可用以執行傳統之作業系統。
SPEs 120-134包含一綜效處理單元(SPU)140-154、記憶體流程控制單元155-162、局部記憶體或儲存器160-174、以及一介面單元180-194。在一示範性實例中,局部記憶體或儲存器160-174包含一256 KB指令及資料記憶體,其對於PPE 100為可見的且可直接地由軟體來尋址。
PPE 110可載入SPEs 120-134及小程式或線程,將SPEs串連起來以處理複雜操作中的每一步驟。舉例來說,併入CBEA 100之視訊解碼器(set-top box)可載入程式以讀取一DVD、視頻與音頻解碼並顯示,且資料將從SPE至SPE進行,直到其最終結束於輸出顯示器為止。在4 GHz,每一SPE 120-134給予理論的32 GFLOPS性能,而PPE 110具有一相似層級之性能。
記憶體流程控制單元(MFCs)155-162當作SPU與其餘系統及其他元件之一介面。MFCs 155-162提供用於資料傳輸、保護、及在主儲存器與局部儲存器160-174間之同步的主要機制。對在處理器中之每一SPU而言,邏輯上有一MFC。某些實施可在多重SPUs間共享單一MFC之資源。在這樣一例子中,所有針對MFC所定義之設施與指令需獨立於每一SPU之軟體而出現。共享MFC之效應係限制為實施相依之設施與指令。
描述性實施例提供以一亂序的方式為非同步管線處理資料快取失誤之機制。舉例來說,描述性實施例之機制可實施於圖1所示架構中之任何SPUs或PPU。機制包含用於每一非同步管線之負載表資料結構與負載目標緩衝單元。負載表資料結構係用來控制一造成資料快取失誤之負載指令之亂序處理。
圖2係一範例方塊圖,其顯示一描述性實施例之主要元件的操作。圖2所示元件可出現於包含一或多個SPUs與PPU之圖1所示的任何或所有處理器。因此,圖2所示的各種元件可例如提供為部份之積體電路晶片、晶片上系統、多晶片封裝或類似物。
如圖2所示,描述性實施例之機制的主要元件包含發佈單元210、第一管線220(用來自資料快取載入資料以及儲存資料至資料快取(其例如L1資料快取))、以及用於指示執行之第二管線230。除此之外,還提供了具有負載表資料結構250之負載目標緩衝(LTB)240、負載失誤佇列單元260、及暫存器檔案儲存裝置270。
在描述性實施例中,負載指令係藉由發佈單元210發佈至兩個非同步管線220與230。發佈單元210產生並將負載標籤(LTAG)識別符與負載指令相關連,其係於將其發送至非同步管線220與230時為之。此LTAG係用來追蹤橫跨多重管線220與230的每一負載指令,且用來索引進入負載目標緩衝240之負載表資料結構250,以擷取相應之負載表項目。
在負載指令之正常操作下,與負載指令相關之資料可自使用負載/儲存管線220之L1資料快取280中得到及擷取。擷取之資料係放置在由相應負載指令之LTAG所索引之項目中之負載目標緩衝240的負載表資料結構250。負載目標緩衝250在寫進暫存器檔案儲存裝置270前,基本上係作為負載資料之改名暫存器。相應之負載表項目會係標示為一“碰撞”,指示資料已經準備好且為有效而可供第二管線230現在使用。當相同之相應的負載指令準備好自第二管線230發佈時,其LTAG便用來索引進入負載目標緩衝240之負載表250,並擷取正確資料以載入暫存器檔案儲存裝置270。LTAG可接著解除配置,供未來負載指令使用,且負載表250中之相應項目係標示為解除配置或是“dealloc”。
雖然當資料可在L1資料快取280中獲得時,此操作會相當地簡單,但當負載指令“失誤”第一管線220中之L1資料快取280時(即當資料不能自L1資料快取280中獲得而必須自系統記憶體或其他儲存器重新載入至L1資料快取280時),複雜度便會發生。在這個例子中,負載指令係傳送至管線220與230兩者。相應於負載指令之資料係嘗試透過負載/儲存管線220而自L1資料快取280擷取。如果資料在L1資料快取280內不可得的話,負載/儲存管線220便傳送一“失誤”訊息至負載目標緩衝250中。基於負載指令之LTAG而識別之負載表資料結構240中的相應項目係標示為“失誤”,藉此識別此項目中之資料為無效。
除此之外,管線220傳送一訊息至負載失誤佇列(LMQ)單元260,以通知快取失誤之LMQ單元260。LMQ單元260請求並等待資料自一記憶體次系統(譬如為L2快取290)之零件擷取或再利用。應了解,資料之再利用可在不考慮資料係來自記憶體次系統中之何處而執行,且不限於使用L2快取290。舉例來說,資料之再利用可直接地自主要系統記憶體或類似物執行。為了說明此描述性實施例,將會假設再利用操作會在考慮L2快取290而執行,然而本發明並不僅限於此。
一旦負載指令之資料回到LMQ單元260,即再利用操作使用L2快取290來完成,則此返回資料便會自動放置於L1快取,且與相應於自L2快取或其他記憶體次系統再利用之負載指令的LTAG一起自LMQ單元260傳送至負載目標緩衝250中。
LMQ單元260或L2快取290根據特定實行追蹤相關於每一L2再利用之LTAGs。換句話說,LMQ單元260或L2快取290可針對遭遇L2再利用操作之每一負載指令而維持識別LTAG、負載位址、及類似物之資料結構。當資料返回時,LMQ單元260或L2快取290可使用負載位址將資料與資料結構中之特定項目相關連。相應之LTAG可接著伴隨著資料返回。這允許負載資料以任何次序自L2快取290中再利用,即並不一定要與對傳送出去至L2快取290之資料的請求具有相同之次序。
自LMQ單元260傳送至負載目標緩衝240之LTAG與資料係用來存取負載表資料結構250之相應項目。基於LTAG,項目係更新以包含再利用資料,且如果再利用資料有效,則項目便標示為“碰撞”。LMQ單元260決定再利用資料是否有效,且當提供它至負載目標緩衝240時識別再利用資料為有效/無效。再利用資料可為無效,譬如當一推測再利用之再利用資料係來自L2快取時,其本身儲存無效資料。在進一步之例子中,如果在再利用資料需要重新傳送之再利用操作中具有衝突,則再利用資料可能無效。因此,在某些例子中,再利用資料可能不一定有效,在這樣的例子中相應之負載表資料結構250項目係標示為“失誤”。
指令管線230中之負載指令於再利用資料儲存於負載目標緩衝240時可在管線230之任何位置。舉例來說,負載指令可仍然在管線230中或可已嘗試發佈及存取負載目標緩衝240中之負載表資料結構250。
如果當來自L2快取290之資料再利用完成時負載指令仍在管線230中,此相應負載表資料結構250項目在負載指令自管線230中發佈前,從“失誤”狀態改變為“碰撞”狀態。從負載指令之觀點,其好似資料下載在第一位置從無“失誤”,且負載指令係正常地發佈。因此,負載目標緩衝240中之負載表資料結構250項目係基於LTAG而讀取,以收集相應於項目之資料並儲存那個資料至暫存器檔案280。關連於負載指令之LTAG與負載表資料結構250項目可接著解除配置,使得如此LTAG可與接下來之負載指令一起使用。
如果負載指令已經自管線230發佈,處理L1資料快取“失誤”會更複雜。當負載指令自指令管線230發佈且其在由LTAG決定之負載表資料結構250中之相應項目中係標示為“失誤”時,來自已發佈之負載指令之任何效應必須取消。舉例來說,必須採取步驟以確保此無效負載資料不會寫至暫存器檔案280、不會對相關於負載指令之LTAG解除配置、及類似者。因此,對於描述性實施例之機制,當負載表資料表250中之項目係指示“失誤”時,此項目之資料將不被讀取或寫入至暫存器檔案280、或是自此項目寫入至暫存器檔案280之資料在暫存器檔案280中為無效,譬如暫存器檔案280中之有效性位元係設定為一無效狀態值。此外,LTAG與負載表資料結構250項目沒有解除配置。而是,負載表資料結構250中之項目的狀態從“失誤”狀態更新為“暫停”狀態,其指示此項目正等待來自L2快取290之資料再利用。
除此之外,負載指令本身或是負載指令之某些相似物係儲存於負載表資料結構250項目,供未來重新發佈。以這個方式,負載表資料結構250項目有效地當作負載失誤佇列項目,直至負載資料已自L2快取290中變成可得且有效。當資料之再利用自L2快取290中發生時,由LTAG所識別之負載表資料結構250中的相應項目係標示為一“碰撞”。因此,儲存在負載表資料結構250項目之負載指令係回復至管線230,且最後自管線230重新發佈。當重新發佈之負載指令從管線230中發佈時,其係正常地進行,即資料係讀取自負載目標緩衝240之負載表資料結構250,且寫入暫存器檔案280中,而LTAG與負載表資料結構250項目係解除配置。
如上所述,來自L2快取290之負載指令資料的再利用可為推測的,且因此重新載入至負載目標緩衝240之資料可能為無效。在這樣的例子中,相應之負載表資料結構250項目係標示為“失誤”。因此,當負載指令從指令管線230重新發佈時,上述程序便再次重複,直到儲存在負載表資料結構250項目之資料為有效。項目最後必定變成有效,因為有效資料最後必定自記憶體次系統到達。
圖3A為根據一描述性實施例而繪示之負載目標緩衝之負載表的範例圖。描述性實施例之負載目標緩衝包含圖3A顯示之負載表以及圖3B顯示其狀態與轉變之狀態機。如圖3A所示,負載表300中之項目係由負載指令之LTAG 310索引至其相應之處。負載表300之項目可包含相應於負載指令之資料320、指令330以及負載指令之目前狀態340。應注意到,雖然為了描述之用,圖3A顯示LTAG 310為負載表300中項目之部份,但實際上此LTAG 310係作為進入負載表300之索引,且實際上可能並非項目本身的部份。然而,在另一可選擇的實施例中,LTAG可作為部分之負載表300。在這樣的實施例中,用以執行LTAG 310之查表的程序將用以在負載表300中尋找特定項目。此可選擇的實施例將比在較佳實施例中之由LTAG 310來索引負載表300更昂貴且更慢。
如圖3A所示,至負載表300之輸入包含來自指令管線之發佈指令342。輸入344亦自負載/儲存管線中提供,其指示負載指令之LTAG、L1資料快取命中或失誤是否已發生之指標、及負載指令之資料(若發生L1資料快取命中)。本發明提供了來自負載失誤佇列單元之進一步輸入346,其包含負載指令之LTAG及自L2資料快取再利用之負載指令的資料。
當適當地發佈負載指令且負載指令之資料於負載表300中呈現且為有效時,來自負載表300之輸出包含來自儲存於暫存器檔案之負載表項目之資料的輸出350。當資料自L2資料快取再利用時,進一步之輸出352為回復於指令管線中之再利用負載指令。此外,提供了輸出354,以解除配置或取消LTAG與相應負載表項目。
如果負載指令成功地發佈而無例外,則其LTAG可藉由使用輸出354之“解除配置”行之不同的負載指令而解除配置,供未來使用。LTAGs藉由個別LTAG管理裝置而維持(圖未示),其基於自圖2之發佈單元210發佈指令而配置,並如上述般解除配置。輸出354之“取消”行進行至含有暫存器檔案之執行單元。“取消”輸出根據負載之不成功的發佈而宣稱,其具有一例外或是使得負載資料無效之某些其他問題。取消的負載無法使其LTAG解除配置。“取消”輸出係有效地取消執行單元中之負載,避免其結束及寫入其結果至暫存器檔案中。
圖3B係根據一描述性實施例之範例狀態圖,其繪示圖3A之負載目標緩衝之負載表中之項目狀態。如圖3B所示,項目狀態開始於解除配置或“dealloc”狀態360。“dealloc”狀態360指示LTAG係可用於負載指令之配置。當負載指令傳送至非同步管線且發生L1資料快取命中(即負載指令之資料係呈現於L1資料快取且被擷取)時,項目轉變372之狀態便到“碰撞”狀態370。在“碰撞”狀態370中,LTAG係配置至負載指令,且負載指令之資料在負載表之相應項目中變得可得。
從“碰撞”狀態370,當負載指令自指令管線發佈時,將造成從“碰撞”狀態370至“dealloc”狀態360之轉變374,其中資料係載入或儲存至暫存器檔案中,且負載表項目係解除配置。
當負載指令傳送至非同步管線且L1資料快取失誤發生(即負載指令之資料並沒有呈現於L1資料快取或為無效)時,項目轉變狀態362從“dealloc”狀態360至“失誤”狀態380。在“失誤”狀態380中,LTAG係配置至負載指令,但負載指令之資料並沒有透過負載表中之項目而變為可得。
從“失誤”狀態380,當有效資料自L2資料快取再利用時,造成至“碰撞”狀態370之轉變382。在此轉變過程中,資料係載入至相應於負載指令之LTAG的負載表項目中。當然,如果藉由再利用操作而返回之資料為無效的話,則負載表之項目便會維持“失誤”狀態380。如果負載指令自指令管線發佈,同時負載表中之負載指令的項目處於“失誤”狀態380的話,負載指令發佈之任何效應係取消且負載表轉變384中之項目的狀態便暫停或至“暫停”狀態390。在此“暫停”狀態390中,相應於負載指令之資料為不可得,且負載指令使L2資料快取再利用操作暫停。
自“暫停”狀態390,一旦負載指令之有效資料自L2資料快取再利用,將造成自“暫停”狀態390至“碰撞”狀態370之轉變。做為此轉變之部分,再利用資料係載入至負載表中,且負載指令係回復至指令管線中。
應注意,在比負載指令舊的指示上可能發生例外,此為描述性實施例之機制的主題。這意指在非同步管線中之負載指令必定會無效。在此描述性實施例中,提供了用來處理這個可能性之兩個不同的方法。
在第一個方法中,負載指令係立即失效於其本身的非同步管線中。舉例來說,這可能牽涉到在負載指令上設定一位元或標籤,指示其為無效。舉例來說,如果無效化之時間固定,指令管線中之負載指令的位置可能重新創造且負載指令可能會失效。如果無效化之時間不固定的話,則可使用以標籤為基礎的方法,其中一清除操作傳播一標籤,使負載指令可識別且因此使其本身為無效。如果負載指令已自負載/儲存管線發佈至負載目標緩衝及/或負載失誤佇列單元,則在負載表中之項目及/或相應負載指令之負載失誤佇列單元必定也為無效,即其狀態係重新設定為“dealloc”且LTAG係解除配置。
在另一方法中,負載指令在負載/資料管線及/或負載失誤佇列單元中係立即地失效,但是在負載表之項目由於例外而僅標示為正在失效中。此標示係藉以下而完成:引入“F”位元至每一負載表項目、且當項目由於已經發生的例外而無效時設定此“F”。負載指令在指令管線中無效,但係允許發佈及存取負載表。如果負載發佈且相應之“F”位元係設定在負載表之相應項目的話,則負載指令之效應便取消,即載入或儲存至暫存器檔案之資料係無效化等等。負載指令之LTAG也可解除配置,因為負載指令因一例外而清除。此另一方法比第一個方法容易實現,因其避免了需要去找尋及立即地無效化指令管線中負載指令之複雜度,特別是如果有因為指令管線而為非同步之負載/儲存管線所造成的例外。
圖4A為根據另一描述性實施例描述負載表之一範例圖式。圖4A所示之負載表非常類似圖3A所示之負載表,除了加上負載表400之項目中之“F”位元410。如圖4A所示,當例外發生時,此例外會導致針對相應於在負載/儲存管線中之負載指令的負載表項目之“F”位元410被設定。舉例來說,負載表400中之使其“F”位元被設定的特定項目可基於這些負載指令之LTAG而識別。
圖4B為根據一描述性實施例描述圖4A之負載表中之項目狀態的一範例狀態圖。狀態圖係相似於圖3B,主要的不同在於增加“失誤”、“碰撞”、及“暫停”狀態與“dealloc”狀態之間的轉變440-460。伴隨著這些轉變,名詞“issueF”意指一負載及其設定於負載表中之F位元的發布。如果負載指令之負載表項目係處於“碰撞”狀態或是“失誤”狀態,且項目之F位元被設定的話,負載指令之發佈效應便取消且LTAG與負載表項目係解除配置(轉變440與450)。如果負載指令之負載表項目係處於“暫停”狀態且項目之F位元被設定時,負載指令之LTAG係解除配置且此項目標示為處於“dealloc”狀態。此例中不需要等待L2再利用操作。
大多數有序處理器在管線中具有一最終例外點,無任何例外可允許通過該點且沒有任何結構暫存器已更新。在這樣的處理器中,在例外上之清除指令係相當簡單,因為指令可自管線中移除或標示為無效,且簡單地重新取得並以上述方法而沿著正常執行路徑重新發佈。然而,處理器可能允許例外通過這個點(即新的例外),其增加了顯著的複雜度,因其不再可能僅僅標示指令為無效且重新取得它們。
對於此新的例外之一個解決方案為處理器執行特別的“管線再利用”機制,其中比已經被發佈之例外新的指令必須在管線中局部地重新發佈。此方式之範例實施係提供於與本發明共同讓渡且同為申請中的美國專利申請號11/184,349(代理人登錄號AUS920050230US1),發明名稱為“藉由橫跨不同執行管線不再需要均勻競爭點以改善有序處理器之性能(Improving Performance of a In-order Processor By No Longer Requiring a Uniform Completion Point Across Different Execution Pipeline)”。
新的“I”狀態可提供至負載已發佈處。圖5係顯示此新的“I”狀態包含至圖4B之狀態圖中之範例狀態圖式。在負載指令對其本身解除配置前重新發佈之後,“I”狀態係最終休息點。當負載指令發佈時,負載表項目係暫時置於“I”狀態510中(轉變512)。負載指令在發布後保持在此“I”狀態510,直到負載指令通過新的例外點。如果在負載指令於新的例外點之後沒有任何新的例外來促使局部的重新發佈的話,則負載指令可解除配置(轉變514)。如果有一新的例外促使負載指令局部地發佈,則負載指令之負載表項目返回至“碰撞”狀態,等待重新發佈且此程序重複其本身。
應注意,負載指令如果發佈的話可立即自“碰撞”狀態解除配置,且標示為已清除,不需等待到新的例外點。如果負載處於暫停狀態,且發生L2資料快取再利用操作,則導致一正常的轉變至“碰撞”狀態,且接著至“I”狀態,如同負載指令第一次以“碰撞”來發佈。如果當負載指令處於暫停狀態時發生新的例外的話,對負載指令來說並沒有關係,因為它還沒發佈。
圖6與7係概述一描述性實施例之範例操作的流程圖。將瞭解到,流程圖說明的每一方塊及流程圖說明中方塊的組合可由電腦程式指令實施。這些電腦程式指令可提供至處理器或其他可程式化之資料處理裝置,以產生一機器,使得執行於處理器或其他可程式化之資料處理裝置上之指令產生用以實施流程圖方塊所指定功能的手段。這些電腦程式指令亦可儲存於電腦可讀記憶體或儲存媒體中,其可指示處理器或其他可程式化之資料處理裝置以一特定之方式運作,使得儲存於電腦可讀之記憶體或儲存媒體之指令產生包含實施流程圖方塊所指定功能之指令手段的製成品。
因此,流程圖說明的方塊支援用以實施特定功能之手段的組合、用以實施特定功能之步驟的組合、及用以實施特定功能之程式指令。亦可瞭解到,流程圖說明的每一方塊及流程圖說明中方塊的組合可藉由執行特定功能或步驟之特定用途之以硬體為基礎的電腦系統來實施、或藉由特定用途之硬體與電腦指令之組合來實施。
圖6係依據一說明性實施例概述負載/儲存管線之範例操作之一流程圖。如圖6所示,操作開始於發佈單元發佈一負載指令至兩或多個非同步管線(步驟610)。負載/儲存管線嘗試自L1資料快取擷取負載指令之資料(步驟615)、並決定嘗試是否會造成一快取“碰撞”(步驟620)。如果嘗試造成快取“碰撞”,負載表緩衝便在負載表中產生一項目,並伴隨負載指令之LTAG與相應於擷取自L1資料快取之負載指令之資料,並標示項目具有“碰撞”狀態(步驟625)。
負載/儲存管線決定例外是否出現在負載表中之項目上(步驟630)。如果不是,操作終止。如果出現例外,負載/儲存管線針對相應之LTAG項目而標示“F”位元(步驟635),接著操作終止。應注意,圖6中所指的例外係產生自負載/儲存管線之例外。
如果自L1快取中擷取資料之嘗試造成快取“失誤”,負載失誤佇列單元在具有負載指令之LTAG的負載表中產生一項目,並標示此項目具有“失誤”狀態(步驟640)。負載失誤佇列單元決定是否有由快取“失誤”所產生之例外(步驟645)。如果例外已經發生,則標示相應之LTAG項目的“F”位元(步驟650),且操作終止。
如果在步驟645中沒有發生例外,負載失誤佇列單元自L2資料快取中請求負載指令之資料(步驟655)。接著接收來自L2資料快取之資料(660),並做出在擷取來自L2資料快取之資料的過程中是否發生例外之決定(步驟665)。如果沒有例外發生,來自L2資料快取之有效資料便載入至負載表中之相應項目(步驟680),且此項目係標示為“碰撞”(步驟685)。
如果例外係在擷取來自L2資料快取之資料的過程中產生(步驟665),便做出負載表中之LTAG項目是否處於暫停狀態之決定(步驟670)。若否,則設定於負載表中之相應LTAG項目的“F”位元(步驟635)。如果負載表中之LTAG項目係處於暫停狀態(步驟670),則LTAG解除配置且LTAG項目進行至解除配置狀態(步驟675)。接著終止操作。
圖7係依據一描述性實施例而概述指令管線之範例操作的流程圖。如圖7所示,操作開始於指令管線發佈負載指令(步驟710)。負載目標緩衝識別相應於所發佈負載指令之LTAG的負載表資料結構中之項目(步驟720),且做出此項目之“F”位元是否已設定之決定(步驟730)。若如此,負載目標緩衝驅動負載指令之“取消”操作(步驟740),且LTAG與負載表項目係解除配置(步驟750)。
如果相應於所發佈之負載指令之LTAG之項目的“F”位元沒有設定(步驟730),則負載目標緩衝決定項目是否標示為“碰撞”(步驟760)。如果項目係標示為“碰撞”,則負載目標緩衝載入負載表之項目中的資料於暫存器檔案中(步驟820)。負載目標緩衝決定是否已發生一新的例外(步驟830)。應注意,根據圖7,例外係由指令管線與其執行單元所產生之例外。
如果沒有新例外發生,LTAG與負載表項目便解除配置(步驟750)。如果新例外已發生,負載目標緩衝便執行負載指令之局部重新發佈(步驟840),且操作返回至步驟820。
如果項目沒有標示為“碰撞”,負載目標緩衝取消負載指令之發佈的任何效應(步驟770),且儲存負載表資料結構項目中之指令,等待來自L2資料快取之資料的擷取(步驟780)。負載目標緩衝決定有效的負載資料是否自L2資料快取返回(步驟790)。若否,操作返回至步驟790,直至有效資料從L2資料快取中返回。如果負載指令之有效的負載資料係從L2資料快取中再利用,負載目標緩衝便儲存再利用負載資料於負載指令之負載表項目(步驟800)。負載目標緩衝接著標示項目為“碰撞”並重新發佈負載指令至指令管線(步驟810)。操作接著進行至步驟820-840,如前述。
因此,本發明之描述性實施例提供了處理用於非同步管線之資料快取失誤亂序之機制。描述性實施例之機制進一步提供處理非同步管線中之新例外的方法。
描述性實施例之機制可提供於微處理器結構之一或多個處理器中。如此一來,描述性實施例之機制便可實行於積體電路晶片上之積體電路中。晶片設計可產生於圖形化電腦程式語言中,並儲存於電腦儲存媒體(譬如磁碟、磁帶、實體硬碟、或像是在儲存存取網路中之虛擬硬碟)。如果設計者並沒有製造晶片或是用來製造晶片之微影光罩,則設計者直接或間接地藉由物理方法(譬如藉由提供儲存設計之儲存媒體之複製)或是電子地(譬如透過網際網路)傳輸所形成的設計至這類實體。所儲存的設計接著轉換至用於製造微影光罩之的適當格式(譬如GDSII),其一般包含將形成於晶圓上之所討論晶片設計的多重複製。微影光罩係用來定義將蝕刻或做其他處理之晶圓區域(及/或其上之層)。
形成之積體電路晶片之分佈可由製造者以裸晶圓形式為之(即作為具有多重未封裝晶片之單一晶圓,如裸晶),或以封裝形式為之。在後者的例子中,晶片係嵌於單一晶片封裝中(如一塑膠載體,其具有附著於主機板或其他較高階載體之鉛導線)、或是在多晶片封裝中(如具有表面互連及/或埋式互連之陶瓷載體)。在任何情況下,晶片接著與其他晶片、離散電路元件、及/或做為中間產品(像是主機板)或最終產品之部分的其他信號處理裝置整合在一起。最終產品可為包含積體電路晶片之任何產品,範圍由玩具與其他低階應用分佈至具有顯示器、鍵盤或其他輸入裝置、及中央處理器之進階電腦產品。
描述性實施例之說明已呈現供說明及描述之用,並無意圖詳盡無遺或是限制本發明於所揭露的形式。許多修改或變化對熟此技藝者而言為顯而易知的。實施例的選擇及描述係用以較佳地理解本發明原理、實際應用、並使熟此技藝者可瞭解到各種實施例及各種修改係適合於預期的特定使用。
100...單元寬帶引擎結構
110...功率處理器元件
112...L1快取
114...L2快取
116...處理器
120、122、124、126、128、130、132、134...多重綜效處理器元件
140、142、144、146、148、150、152、154...綜效處理器單元
155、156、157、158、159、160、161、162...記憶體流程控制
163、164、165、166、167、168、169、170...局部記憶體或儲存
180、182、184、186、188、190、192、194...匯流排介面單元
196...高頻寬內部元件互連匯流排
197...匯流排介面控制器
198...記憶體介面控制器
199...共享記憶體
210...發佈單元
220...第一管線
230...第二管線
240...負載目標緩衝
250...負載目標緩衝
260...負載失誤佇列單元
270...暫存器檔案儲存裝置
280...L1資料快取
290...L2快取
300...負載表
310...LTAG
320...資料
330...指令
340...狀態
342...指令
344、346...輸入
350、352、354...輸出
360、370、380、390...狀態
362、372、374、382、384、392...轉變
400...負載表
410...F位元
440、450、460...轉變
本發明之新穎特徵會於後附之申請專利範圍中提出。然而,本發明本身及較佳的使用模式、其他的目的、及其優點可藉由在閱讀描述性實施例之詳細說明時參考伴隨的圖式來而有較佳的了解,其中:圖1係資訊處理裝置之一範例方塊圖,其可實現描述性實施例之範例方面;圖2係一範例方塊圖,其顯示一描述性實施例之主要元件的操作;圖3A為根據一描述性實施例而繪示之負載目標緩衝之負載表的範例圖;圖3B係根據一描述性實施例之範例狀態圖,其繪示圖3A之負載目標緩衝之負載表中之項目狀態;圖4A為根據另一描述性實施例描述負載表之一範例圖式;圖4B為根據一描述性實施例描述圖4A之負載表中之項目狀態的一範例狀態圖;圖5為根據一描述性實施例描述新的“I”狀態包含至圖4B之狀態圖的一範例狀態圖;圖6為根據一描述性實施例概述負載/儲存管線之範例操作的流程圖;以及圖7為根據一描述性實施例概述指令管線之範例操作的流程圖。
100...單元寬帶引擎結構
110...功率處理器元件
112...L1快取
114...L2快取
116...處理器
120、122、124、126、128、130、132、134...多重綜效處理器元件
140、142、144、146、148、150、152、154...綜效處理器單元
155、156、157、158、159、160、161、162...記憶體流程控制
163、164、165、166、167、168、169、170...局部記憶體或儲存
180、182、184、186、188、190、192、194...匯流排介面單元
196...高頻寬內部元件互連匯流排
197...匯流排介面控制器
198...記憶體介面控制器
199...共享記憶體

Claims (24)

  1. 一種在具有一指令管線及一負載/儲存管線之一資料處理裝置中用以處理負載指令之方法,包含:接收一負載指令;將該負載指令與一負載標籤(LTAG)相關連;發佈該負載指令及該LTAG至該負載/儲存管線;嘗試擷取對應來自一第一快取之該負載指令之資料;決定擷取對應該負載指令之該資料之該嘗試是否會造成一快取命中或一快取失誤;以及基於該LTAG以及擷取對應該負載指令之資料之該嘗試之結果,而產生一項目於一負載目標緩衝之一負載表資料結構中;其中,在該負載表資料結構中產生一項目包含:在由與該負載指令相關連之該LTAG所索引之該負載表中產生一項目;以及基於決定擷取對應該負載指令之該資料之該嘗試是否會造成一快取命中或一快取失誤,而標示該項目為一快取命中或一快取失誤;以及其中,如果該決定結果為一快取失誤,該方法進一步包含:自一記憶體次系統再利用(recycle)對應該負載指令之該資料;以及儲存該再利用資料於該負載表之該項目中。
  2. 如請求項1所述之方法,其中自一記憶體次系統再利用對應該負載指令之該資料包含:在一負載失誤佇列單元中,對應正被再利用之該資料,維持識別相關於該負載指令之該LTAG及相關於該負載指令之一負載位址的一資料結構;以及基於在該負載失誤佇列單元中之該資料結構,關聯該再利用資料與該負載指令,以回應來自該記憶體次系統之該資料之該再利用,其中基於在該負載失誤佇列單元之該資料結構中之該負載指令之該LTAG,而儲存該再利用資料於該負載表之該項目中。
  3. 如請求項1所述之方法,進一步包含:只有該再利用資料為有效時才標示在該負載表中之該項目為一快取命中;以及如果該再利用資料為無效,標示在該負載表中之該項目為一快取失誤。
  4. 一種在具有一指令管線及一負載/儲存管線之一資料處理裝置中用以處理負載指令之方法,包含:接收一負載指令;將該負載指令與一負載標籤(LTAG)相關連;發佈該負載指令及該LTAG至該負載/儲存管線;嘗試擷取對應來自一第一快取之該負載指令之資料;決定擷取對應該負載指令之該資料之該嘗試是否會造 成一快取命中或一快取失誤;基於該LTAG以及擷取對應該負載指令之資料之該嘗試之結果,而產生一項目於一負載目標緩衝之一負載表資料結構中;發佈該負載指令與該LTAG至該指令管線;自該指令管線發佈該負載指令至該負載目標緩衝;基於相關於該發佈負載指令之該LTAG,識別對應該發佈負載指令之該負載表中之一項目;以及基於該負載表之該識別的項目是否標示為一快取失誤或一快取命中,決定是否儲存對應該負載指令之該資料於一暫存器檔案中。
  5. 如請求項4所述之方法,進一步包含:如果決定該識別的項目係標示為一快取命中,則儲存對應該負載指令之該資料於該暫存器檔案中。
  6. 如請求項5所述之方法,進一步包含:在儲存對應該負載指令之該資料於該暫存器檔案中後,解除配置該LTAG及該負載表中之該項目。
  7. 如請求項4所述之方法,進一步包含:如果決定在該負載表之該識別的項目係標示為一快取失誤的話,取消來自該指令管線之該負載指令之該發佈之任何效應;以及 如果決定在該負載表中之該識別的項目係標示為一快取失誤的話,更新該負載表中之該識別的項目為具有一未定狀態。
  8. 如請求項7所述之方法,進一步包含:如果決定在該負載表之該識別的項目係標示為一快取失誤,儲存該負載指令之一表示於該負載表之該識別項目中;以及基於該識別項目中之該負載指令之該表示而重新發佈該負載指令至該指令管線,以回應對應於自一記憶體次系統而再利用之該負載指令之該資料。
  9. 如請求項1所述之方法,其中該指令管線與該負載/儲存管線彼此為非同步。
  10. 如請求項1所述之方法,其中該資料處理裝置係一處理器。
  11. 如請求項1所述之方法,其中該資料處理裝置係一多重處理器異質資料處理系統之部分。
  12. 如請求項11所述之方法,其中該多重處理器異質資料處理系統包含一控制處理器以及一或多個共同處理器,以及其中該資料處理裝置係一或多個該控制處理器或一共同處理器。
  13. 一種處理指令的裝置,包含:一發佈單元;一指令管線,耦合至該發佈單元;一負載/儲存管線,耦合至該發佈單元;一負載目標緩衝,耦合至該指令管線與該負載/儲存管線;以及一負載失誤佇列單元,耦合至該負載/儲存管線,其中:該發佈單元接收一負載指令、將該負載指令與一負載標籤(LTAG)相關連、以及發佈該負載指令及該LTAG至該負載/儲存管線;該負載/儲存管線嘗試擷取對應來自一第一級快取之該負載指令之資料,並決定擷取對應該負載指令之該資料之該嘗試是否會造成一快取命中或一快取失誤,以及該負載目標緩衝基於該LTAG以及擷取對應該負載指令之資料之該嘗試之結果,而產生一項目於一負載目標緩衝之一負載表資料結構中;其中,該負載目標緩衝藉由以下而產生一項目於該負載表資料結構中:在由與該負載指令相關連之該LTAG所索引之該負載表中產生一項目;以及基於決定擷取對應該負載指令之該資料之該嘗試是否會造成一快取命中或一快取失誤,而標 示該項目為一快取命中或一快取失誤;以及其中,如果該決定結果為一快取失誤,該負載失誤佇列單元自一第二級快取中再利用對應該負載指令之該資料,並儲存該再循環資料於該負載目標緩衝之該負載表中之該項目。
  14. 如請求項13所述之裝置,其中該負載失誤佇列單元藉由以下而自該第二級快取中再利用對應該負載指令之該資料:在一負載失誤佇列單元中,維持識別相關於該負載指令之該LTAG及相關於對應正被再利用之該資料之該負載指令之一負載位址的一資料結構;以及基於在該負載失誤佇列單元中之該資料結構,關聯該再利用資料與該負載指令,以回應來自該第二級快取之該資料之該再利用,其中基於在該負載失誤佇列單元之該資料結構中之該負載指令之該LTAG,而儲存該再利用資料於該負載表之該項目中。
  15. 如請求項13所述之裝置,其中該負載目標緩衝只有該再利用資料為有效時才標示在該負載表中之該項目為一快取命中,且如果該再利用資料為無效,則標示在該負載表中之該項目為一快取失誤。
  16. 一種處理指令的裝置,包含:一發佈單元; 一指令管線,耦合至該發佈單元;一負載/儲存管線,耦合至該發佈單元;以及一負載目標緩衝,耦合至該指令管線與該負載/儲存管線,其中:該發佈單元接收一負載指令、將該負載指令與一負載標籤(LTAG)相關連、以及發佈該負載指令及該LTAG至該負載/儲存管線;該負載/儲存管線嘗試擷取對應來自一第一級快取之該負載指令之資料,並決定擷取對應該負載指令之該資料之該嘗試是否會造成一快取命中或一快取失誤,以及該負載目標緩衝基於該LTAG以及擷取對應該負載指令之資料之該嘗試之結果,而產生一項目於一負載目標緩衝之一負載表資料結構中;該發佈單元發佈該負載指令與該LTAG至該指令管線;該指令管線發佈該負載指令至該負載目標緩衝;以及該負載目標緩衝基於相關於該發佈負載指令之該LTAG而識別對應該發佈負載指令之該負載表中之一項目,並基於該負載表之該識別的項目是否標示為一快取失誤或一快取命中,決定是否儲存對應該負載指令之該資料於一暫存器檔案中。
  17. 如請求項16所述之裝置,其中如果決定該識別的項目係標 示為一快取命中,則負載目標緩衝儲存對應該負載指令之該資料於該暫存器檔案中。
  18. 如請求項17所述之裝置,其中在儲存對應該負載指令之該資料於該暫存器檔案中後,該負載目標緩衝初始化對該LTAG及該負載表中之該項目的解除配置。
  19. 如請求項16所述之裝置,其中如果決定在該負載表之該識別的項目係標示為一快取失誤的話,則取消來自該指令管線之該負載指令之該發佈之任何效應,且如果決定在該負載表中之該識別的項目係標示為一快取失誤的話,則更新該負載表中之該識別的項目為具有一未定狀態。
  20. 如請求項19所述之裝置,其中如果決定在該負載表之該識別的項目係標示為一快取失誤,則該負載目標緩衝儲存該負載指令之一表示於該負載表之該識別項目中,並基於該識別項目中之該負載指令之該表示而重新發佈該負載指令至該指令管線,以回應對應於自一記憶體次系統而再利用之該負載指令之該資料。
  21. 如請求項13所述之裝置,其中該指令管線與該負載/儲存管線彼此為非同步。
  22. 如請求項13所述之裝置,其中該裝置係一多重處理器異質 資料處理系統之部分。
  23. 如請求項22所述之裝置,其中該多重處理器異質資料處理系統包含一控制處理器以及一或多個共同處理器,以及其中該裝置係一或多個該控制處理器或一共同處理器。
  24. 一種包含具有一電腦可讀程式之一電腦可用媒體之電腦程式產品,其中當該電腦可讀程式執行於一計算裝置上時,將使該計算裝置執行請求項1至12中任一項之該方法,在具有一指令管線及一負載/儲存管線之該計算裝置中用以處理負載指令。
TW096103667A 2006-02-02 2007-02-01 處理非同步管線之資料快取失誤亂序之裝置及方法 TWI391857B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/345,922 US7461239B2 (en) 2006-02-02 2006-02-02 Apparatus and method for handling data cache misses out-of-order for asynchronous pipelines

Publications (2)

Publication Number Publication Date
TW200805151A TW200805151A (en) 2008-01-16
TWI391857B true TWI391857B (zh) 2013-04-01

Family

ID=38323511

Family Applications (1)

Application Number Title Priority Date Filing Date
TW096103667A TWI391857B (zh) 2006-02-02 2007-02-01 處理非同步管線之資料快取失誤亂序之裝置及方法

Country Status (4)

Country Link
US (2) US7461239B2 (zh)
JP (1) JP5105887B2 (zh)
CN (1) CN100583029C (zh)
TW (1) TWI391857B (zh)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090113182A1 (en) * 2007-10-24 2009-04-30 Abernathy Christopher M System and Method for Issuing Load-Dependent Instructions from an Issue Queue in a Processing Unit
US7991979B2 (en) * 2008-09-23 2011-08-02 International Business Machines Corporation Issuing load-dependent instructions in an issue queue in a processing unit of a data processing system
JP2010146084A (ja) * 2008-12-16 2010-07-01 Toshiba Corp キャッシュメモリ制御部を備えるデータ処理装置
CN101526896B (zh) * 2009-01-22 2011-11-23 杭州中天微系统有限公司 嵌入式处理器的加载/存储单元
US8099582B2 (en) * 2009-03-24 2012-01-17 International Business Machines Corporation Tracking deallocated load instructions using a dependence matrix
US8171220B2 (en) * 2009-04-24 2012-05-01 International Business Machines Corporation Cache architecture with distributed state bits
US8140758B2 (en) * 2009-04-24 2012-03-20 International Business Machines Corporation Data reorganization in non-uniform cache access caches
US8103894B2 (en) * 2009-04-24 2012-01-24 International Business Machines Corporation Power conservation in vertically-striped NUCA caches
CN101847094A (zh) * 2009-05-29 2010-09-29 威盛电子股份有限公司 非循序执行的微处理器及其操作方法
US8806135B1 (en) * 2011-09-30 2014-08-12 Applied Micro Circuits Corporation Load store unit with load miss result buffer
US8793435B1 (en) * 2011-09-30 2014-07-29 Applied Micro Circuits Corporation Load miss result buffer with shared data lines
US9442861B2 (en) * 2011-12-20 2016-09-13 Intel Corporation System and method for out-of-order prefetch instructions in an in-order pipeline
US20150121046A1 (en) * 2013-10-25 2015-04-30 Advanced Micro Devices, Inc. Ordering and bandwidth improvements for load and store unit and data cache
CN104461758B (zh) * 2014-11-10 2017-08-25 中国航天科技集团公司第九研究院第七七一研究所 一种容忍cache缺失快速清空流水线的异常处理方法及其处理结构
CN104572528A (zh) * 2015-01-27 2015-04-29 东南大学 一种二级Cache对访问请求的处理方法及系统
CN106293978A (zh) * 2015-05-22 2017-01-04 炬芯(珠海)科技有限公司 一种数据反馈的方法及设备
US20170090508A1 (en) * 2015-09-25 2017-03-30 Qualcomm Incorporated Method and apparatus for effective clock scaling at exposed cache stalls
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US9934033B2 (en) 2016-06-13 2018-04-03 International Business Machines Corporation Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
US10592414B2 (en) 2017-07-14 2020-03-17 International Business Machines Corporation Filtering of redundantly scheduled write passes
US10585797B2 (en) 2017-07-14 2020-03-10 International Business Machines Corporation Operating different processor cache levels
US10402263B2 (en) * 2017-12-04 2019-09-03 Intel Corporation Accelerating memory fault resolution by performing fast re-fetching
CN108519858B (zh) * 2018-03-22 2021-06-08 雷科防务(西安)控制技术研究院有限公司 存储芯片硬件命中方法
US10725783B2 (en) * 2018-11-02 2020-07-28 International Business Machines Corporation Splitting load hit store table for out-of-order processor
CN110413679B (zh) * 2019-07-31 2023-01-24 深圳前海微众银行股份有限公司 数据库信息处理方法、装置、设备及可读存储介质
CN117453435B (zh) * 2023-12-20 2024-03-15 北京开源芯片研究院 缓存数据读取方法、装置、设备及存储介质
CN117573573B (zh) * 2024-01-15 2024-04-23 北京开源芯片研究院 缓存请求的处理方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5828860A (en) * 1992-10-16 1998-10-27 Fujitsu Limited Data processing device equipped with cache memory and a storage unit for storing data between a main storage or CPU cache memory
US6216219B1 (en) * 1996-12-31 2001-04-10 Texas Instruments Incorporated Microprocessor circuits, systems, and methods implementing a load target buffer with entries relating to prefetch desirability
US20030061470A1 (en) * 2001-09-24 2003-03-27 Tse-Yu Yeh Power consumption reduction mechanism for pipeline stalls
TW561399B (en) * 2000-06-09 2003-11-11 Cirrus Logic Inc Math coprocessor

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6438834A (en) * 1987-08-04 1989-02-09 Nec Corp Information processor
US5185871A (en) * 1989-12-26 1993-02-09 International Business Machines Corporation Coordination of out-of-sequence fetching between multiple processors using re-execution of instructions
EP0663083B1 (en) * 1992-09-29 2000-12-20 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US5590368A (en) * 1993-03-31 1996-12-31 Intel Corporation Method and apparatus for dynamically expanding the pipeline of a microprocessor
JP3732234B2 (ja) * 1996-07-16 2006-01-05 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド スーパースカラマイクロプロセッサのための非ブロッキングロードを実現するロード/ストアユニットおよびロード/ストアバッファから非ブロッキング的にロードを選択する方法
US6173410B1 (en) * 1996-08-21 2001-01-09 Texas Instruments Incorporated Microprocessor circuits, systems and methods for conditioning information prefetching based on resource burden
JP3864509B2 (ja) * 1997-08-19 2007-01-10 株式会社日立製作所 マルチプロセッサシステム
JP3628653B2 (ja) * 2000-01-19 2005-03-16 富士通株式会社 記憶制御装置及び記憶制御方法
JP2002007209A (ja) * 2000-06-26 2002-01-11 Fujitsu Ltd データ処理装置
US20030126379A1 (en) * 2001-12-31 2003-07-03 Shiv Kaushik Instruction sequences for suspending execution of a thread until a specified memory access occurs
JP3577052B2 (ja) * 2002-03-19 2004-10-13 株式会社東芝 命令発行装置及び命令発行方法
US6931109B1 (en) * 2003-06-12 2005-08-16 Sprint Communications Company L.P. Link selection parameter modification for network access selection
US7096043B1 (en) * 2003-10-24 2006-08-22 Nortel Networks Limited Call origination control
US7475232B2 (en) * 2005-07-19 2009-01-06 International Business Machines Corporation Performance of an in-order processor by no longer requiring a uniform completion point across different execution pipelines

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5828860A (en) * 1992-10-16 1998-10-27 Fujitsu Limited Data processing device equipped with cache memory and a storage unit for storing data between a main storage or CPU cache memory
US6216219B1 (en) * 1996-12-31 2001-04-10 Texas Instruments Incorporated Microprocessor circuits, systems, and methods implementing a load target buffer with entries relating to prefetch desirability
TW561399B (en) * 2000-06-09 2003-11-11 Cirrus Logic Inc Math coprocessor
US20030061470A1 (en) * 2001-09-24 2003-03-27 Tse-Yu Yeh Power consumption reduction mechanism for pipeline stalls

Also Published As

Publication number Publication date
CN100583029C (zh) 2010-01-20
TW200805151A (en) 2008-01-16
CN101013361A (zh) 2007-08-08
JP5105887B2 (ja) 2012-12-26
US7900024B2 (en) 2011-03-01
US7461239B2 (en) 2008-12-02
US20070180221A1 (en) 2007-08-02
JP2007207238A (ja) 2007-08-16
US20090043995A1 (en) 2009-02-12

Similar Documents

Publication Publication Date Title
TWI391857B (zh) 處理非同步管線之資料快取失誤亂序之裝置及方法
US6249846B1 (en) Distributed data dependency stall mechanism
JP3661614B2 (ja) キャッシュメモリ制御方法及びマルチプロセッサシステム
US9244724B2 (en) Management of transactional memory access requests by a cache memory
US10613792B2 (en) Efficient enforcement of barriers with respect to memory move sequences
US9798577B2 (en) Transactional storage accesses supporting differing priority levels
US20040123078A1 (en) Method and apparatus for processing a load-lock instruction using a scoreboard mechanism
US10152322B2 (en) Memory move instruction sequence including a stream of copy-type and paste-type instructions
US20080104326A1 (en) Facilitating store reordering through cacheline marking
US6105108A (en) Method and apparatus for releasing victim data buffers of computer systems by comparing a probe counter with a service counter
US10108464B2 (en) Managing speculative memory access requests in the presence of transactional storage accesses
US7080209B2 (en) Method and apparatus for processing a load-lock instruction using a relaxed lock protocol
US20180052605A1 (en) Memory access in a data processing system utilizing copy and paste instructions
US6202126B1 (en) Victimization of clean data blocks
US10346164B2 (en) Memory move instruction sequence targeting an accelerator switchboard
JP2002530735A5 (zh)
US10126952B2 (en) Memory move instruction sequence targeting a memory-mapped device
US10331373B2 (en) Migration of memory move instruction sequences between hardware threads
US7321964B2 (en) Store-to-load forwarding buffer using indexed lookup
CN114430819B (zh) 数据处理系统及其处理单元和处理方法
TWI483184B (zh) 用於消除移動操作之微架構

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees