TWI483180B - 重疊原子區域執行的方法 - Google Patents

重疊原子區域執行的方法 Download PDF

Info

Publication number
TWI483180B
TWI483180B TW101150121A TW101150121A TWI483180B TW I483180 B TWI483180 B TW I483180B TW 101150121 A TW101150121 A TW 101150121A TW 101150121 A TW101150121 A TW 101150121A TW I483180 B TWI483180 B TW I483180B
Authority
TW
Taiwan
Prior art keywords
atomic
region
atomic region
regions
execution
Prior art date
Application number
TW101150121A
Other languages
English (en)
Other versions
TW201346721A (zh
Inventor
鄭在雄
王正
吳玉芬
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 TW201346721A publication Critical patent/TW201346721A/zh
Application granted granted Critical
Publication of TWI483180B publication Critical patent/TWI483180B/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/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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • G06F9/528Mutual exclusion algorithms by using speculative mechanisms
    • 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
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30116Shadow registers, e.g. coupled registers, not forming part of the register space
    • 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
    • G06F9/3834Maintaining memory consistency
    • 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory

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)

Description

重疊原子區域執行的方法
本發明關於處理器中的重疊原子區域。
電腦系統執行各種代碼之指令。往往,該代碼並非針對特定處理器所設計,而其在給定平台上之效能可受損。有效的編譯器最佳化可改善效能並減低功率消耗。已研究了數十年,以開發諸如部份冗餘消除(例如:消除冗餘之作業)、載入提升(load hoisting)(例如:在執行流程中早期將載入排程)等等的最佳化技術。很遺憾地,理論上可行的這些技術通常不易採用,或是僅可以有限的最佳化範圍來加以應用。萬一推測編譯器最佳化失敗,許多整體及企業應用中常見的複雜控制流程會需要精密的復原碼。現代處理器的複雜記憶體模型係強烈地阻礙編譯器針對多執行緒程式來將記憶體作業重新排程。
對於原子執行的架構支援有助於減少實行推測編譯器最佳化的複雜度。原子執行之硬體基元係允許將指令群組封閉於一區域中,並以原子方式加以執行(也就是說,所有或毫無指令被執行),且是以被隔離之方式(因無區域之中間結果被暴露於系統的其他部份)。使用該基元,編譯器可藉由單純地回復該區域之無效推測執行並將其重新開始而不進行推測,來避免產生複雜的推測最佳化之補償碼。該區域中的記憶體作業之原子執行係允許編譯器在該 區域內積極地將該等作業重新排序。
在消除用於實行推測最佳化之大量編譯器負擔的同時,用於原子執行的現存硬體設計會對鬆散式記憶體模型的基本硬體平台帶來不必要的嚴格記憶體排序限制,諸如弱一致性和全儲存排序(TSO)。在原子區域中自動執行記憶體作業的過程中,當該區域提交時,該區域之邊界係作用如記憶體柵欄,使得該等記憶體作業對系統的其他部份為可見。這些記憶體柵欄係限制記憶體作業不依程式順序在區域邊界以外被執行,即使是當原子區域被用來在鬆散式記憶體模型中最佳化可無序執行記憶體作業的一部份碼段時(例如,針對其記憶體不存取同步變數且因此可無順序弱一致性而加以執行的單執行緒應用來沿著熱路徑最佳化該代碼)。另外,運用於多執行緒應用,原子區域也會限制不同原子區域之間的記憶體作業之重新排序。它們可被以可串聯化之排程來加以執行(換言之,它們執行之效應必須如同它們是一個接著一個被執行)。因此,記憶體作業必須完全被排序(使得所有的處理器皆同意其總體執行順序)。因而限制了效能的最佳化。
在多個實施例中,可允許不同的代碼區域,更具體來說,不同的原子區域(如由軟體(如被寫成或藉由編譯)所定義)以至少部份重疊之方式來執行。此原子區域之重疊在本文中被稱為重疊原子區域(OAR)。以此方式,可 放寬原子區域硬體設計之不必要的記憶體排序限制。實施例因此允許以部份重疊之方式執行來自相同執行緒的原子區域,如第1圖所示。如所見,係允許區域2之代碼的執行與區域1之代碼的執行重疊。以此方式,可將依該程式順序之較新原子區域的記憶體作業以較舊原子區域的來加以重新排序。為了易於討論,係說明兩個原子區域的重疊。但熟習該項技藝者應了解實施例並不限於此,且可能會有多於兩個的原子區域重疊。
根據多個實施例,取決於哪些記憶體作業將被重新排序而有兩類型的OAR。第一類型的OAR,在此稱之為OAR-SL,係允許將來自較新原子區域的儲存及載入兩者以較舊原子區域的來加以重新排序。對於允許無同步存取而將儲存及載入兩者重新排序的弱一致性,此類型的重疊執行是有用的。第二類型的OAR,在此稱之為OAR-L,僅允許將來自較新原子區域的載入重新排序。對於完全將儲存排序的鬆散式記憶體模型(例如:SPARCTM 處理器和x86處理器),此類型的重疊執行可為足夠的,因無法不管區域邊界而將儲存重新排序。
實施例可在處理器的私用快取中提供延伸狀態資訊,使得原子區域可使用該私用快取記憶體來作為推測緩衝器。此係允許歷久之原子區域被重疊,並使較廣範圍的編譯器最佳化成為可能。注意到,在多個實施例中,將被重疊的原子區域可為10,000個以上之指令的等級。同樣地,原子區域的尺寸並不受限於處理器的內部管線結構。 藉由對原子區域之間的衝突利用快取一致性協定,可在多核心處理器的環境中支援重疊原子執行。如以下進一步所述,可使用實施例來支持有序處理器和無序處理器兩者。
現在參照第2圖,所示為根據本發明實施例之重疊原子區域執行的高階概觀之流程圖。如第2圖所示,方法10可以諸如多核心處理器之處理器來加以實行,其中原子區域可以至少部份重疊之方式來執行。在第2圖的實施例中,可藉由開始執行一執行緒的第一原子區域(方塊20)來開始方法10。注意到,如此處所使用的,用語「原子區域」是指由將被執行之軟體所識別而不被該群組之外的其他指令所中斷的一群組之指令。之後,在方塊30,可開始執行第二原子區域,且其至少部份與第一原子區域重疊。如進一步在此所討論的,當這些區域的每一者開始執行時,可依據所指區域來設定最後區域識別符(LRID)值,並將其標註於該區域之指令。此外,在每次開始執行一原子區域時,可更新原子區域計數器(ARC)暫存器值,例如:將其增值。此外,在執行這些原子區域的指令期間,可據此更新處理器之私用快取中所存在的各種推測場(speculative field)。
因此,在執行該等原子區域的某一者或另一者之指令期間,可判斷是否偵測到衝突(菱形40)。在一實施例中,此衝突之判斷可依據接收到快取線的給定快取一致性訊息,因該等推測場的各種推測指示符之一個以上已被設定,如此指出在該給定原子區域的執行期間已存取該執行 緒。
如第2圖中所見,若偵測到衝突,則控制前進至菱形45,在該處可判斷此衝突是對於哪個原子區域。若衝突是不利於第一區域,則控制前進至方塊70,在該處可中止該等原子區域。可就該中止這些區域來實行各種作業,包括重作(roll back)、清除某狀態資訊等等,如將於以下進一步加以討論。反之,若衝突是不利於第二區域,則控制前進至方塊80,在該處可設定與第二原子區域相關之毒害指示符(poison indicator),以指出其注定要失敗。注意到,此區域可繼續執行,且回應於此設定之毒害指示符及其結束區域指令,該原子區域將中止(方塊90)。
反之,若未偵測到衝突,則控制從菱形40前進至方塊50,在該處可提交第一原子區域的結果。然後,當第二原子區域完成時,亦可提交其結果(方塊60)。雖然在第2圖的實施例中以此高階來加以顯示,應了解到各種作業是與第2圖所示之高階動作有關,如將於以下進一步加以說明。
在多個實施例中,可使用所謂的毒害指示符來管理注定之較新原子區域,而允許簡化之硬體處理活原子區域和將被中止之原子區域的正確重疊執行。此外,可針對較新原子區域實行逐步暫存器檢查點,其係允許在較舊原子區域的算術邏輯單元(ALU)/載入作業尚未被執行時,較新原子區域開始執行。
現在參照第3圖,所示為根據本發明實施例之處理器 的方塊圖。如第3圖所示,處理器100可為一部份多核心處理器的高階觀點。在第3圖之實施例中所具體見到的為核心110。應了解到,雖然給定核心可包括各種元件及邏輯,諸如一個以上的前端單元、執行單元、後端單元等等,但係以高階來顯示該核心,以顯示根據本發明實施例之對於重疊原子區域執行所使用的該等結構。如第3圖所示,核心110包括一對影子暫存器檔案1120 和1121 ,它們分別與原子區域關聯。應了解到,可將這些影子暫存器檔案與諸如通用暫存器檔案的一個以上之習知暫存器檔案分離,其中該等通用暫存器檔案可屬於整數、浮點、向量或其他格式。
另外,核心110包括原子區域計數器(ARC)暫存器113,其被組態為儲存已開始執行但尚未提交的數個重疊原子區域。亦如所見,可存在LRID儲存器114,以儲存目前所執行之原子區域的指示符。如進一步所見,可將毒害指示符儲存於毒害儲存器1150 -1151 ,其每一者皆可為單位元,以指出給定原子區域何時注定要失敗。
為了在執行原子區域期間供以儲存推測資料,在原子區域的執行期間,可使用在多個實施例中為一階以上之私用快取結構的私用快取120來作為推測緩衝器,以儲存所存取及修改之值。如所見,快取120可包括複數個登錄1210 -121n 。各個登錄或快取線可包含多種資訊,包括諸如快取一致性狀態資訊(例如:有效位元、共用位元、已使用位元(dirty bit)等等)的狀態資料、標籤資訊、以及 位址資訊。此外,根據本發明實施例,可將各個快取線組態為包括推測場。如第3圖的實施例所示,各個快取線可包括與第一原子區域關聯之第一推測場1220 和與另一原子區域關聯之第二推測場1221
在第3圖的實施例中,可提供每快取線四位元,以追蹤由各原子區域所致之推測位址讀取或寫入。針對推測讀取,也就是由尚未提交至處理器之機器狀態(藉由正確地撤回該區域)的原子區域所致之讀取,而設定被稱為SR位元的推測讀取之第一狀態指示符。針對推測寫入,也就是在提交之前由原子區域所致之寫入,而設定被稱為SW位元的推測寫入之第二狀態指示符。如此將推測資料緩衝於私用快取中,直到該原子區域提交為止。注意到,雖然是顯示兩個結構來對兩個重疊區域提供資訊,但應了解本發明的範圍並不限於此,且在其他實施例中,可能讓多於兩個的重疊區域執行,且可將該處理器組態為針對這些額外的原子區域提供額外的結構,諸如額外影子暫存器檔案、毒害指示符以及推測場。
如進一步於第3圖所見,更可存在衝突偵測邏輯130,並將其用於識別衝突,例如:根據快取一致性協定資訊。因此,在多個實施例中,可透過與私用快取120關聯之快取控制器來實行衝突偵測邏輯130。雖然在第3圖的實施例中是以此特定實作來加以顯示,應了解本發明的範圍並不限於此。
本發明實施例中所提供的進一步狀態資訊包括所謂的 最後區域識別符(LRID),其可被儲存於LRID暫存器114,且可自動將此值標註於屬於一區域之指令。以此方式,不會對現存ISA加以改變而麻煩編譯器以二進制碼標註區域資訊。
使用begin_region指令來開始原子區域,並使用end_region指令來提交該原子區域。該begin_region係採用替代程式計數器以跳越至該原子區域被中止時。ARC暫存器113係計數未處理原子區域的數量,若該值擊中固線式最大值,則防止新的原子區域被執行。在一實施例中,ARC暫存器113的最大值被設定為二,以支援兩個未處理原子區域。當原子區域開始時,可使用影子暫存器檔案1100 和1101 來採用暫存器檢查點。
LRID暫存器114為索引暫存器,以指出哪個推測場是由最新原子區域所佔用。其被初始化為零,並在begin_region指令被配送至有序處理器之第一執行階段,以及該指令輸入無序處理器之指令視窗時反轉(toggle)。當下一個原子區域開始時,該等值係反轉回去。如此,該值恆被依程式順序所標註。
在begin_region指令之後的指令被標註有該LRID值,以指出該等指令屬於哪個區域,以及針對推測執行使用哪個硬體資源。舉例來說,若記憶體作業的標註值為0,則該作業使用推測場1220 的SR〔0〕位元和SW〔0〕位元。end_region指令亦被標註有該LRID值,使得原子區域知道當其提交時,應操縱該等推測場中的哪個位元 對。
若無效訊息擊中具有SR位元或SW位元的快取線,或是資料共用訊息擊中具有SW位元的快取線,則以快取連貫邏輯(其可在衝突偵測邏輯130中加以實行)檢查來偵測原子區域之間的衝突。沒有衝突的話,原子區域係藉由廢除暫存器檢查點並成群清除僅其推測場之SR位元和SW位元來提交。偵測到衝突的話,藉由以設定之SW位元來使該等快取線無效、將該暫存器檢查點重新儲存至該核心之暫存器檔案(為易於解說而未顯示於第3圖)、以及成群清除該等SR位元和該等SW位元、並報告衝突之SR/SW位元對(亦即0或1)的索引,而將該原子區域重作。為了簡化,亦可藉由諸如尋頁錯失、中斷、及上下文交換的系統等級事件來中止原子區域。容量溢位亦會中止原子區域。
為了設計之簡潔,僅中止較舊原子區域(連同較新原子區域,若其存在的話),以便可避免較新原子區域被中止而舊原子區域繼續進行的複雜情況。這意味著,若僅較新原子區域有衝突,其必須等到較舊原子區域提交為止。為了記住原子區域注定要被中止,可使用暫存器1150 和1151 的毒害位元。衝突之SR/SW位元對的索引被用來針對注定之原子區域設定毒害位元。當原子區域以end_region指令提交時,其係檢查其毒害位元,以看出其是否被注定。若是,則其係清除該位元並中止其本身。當較舊原子區域被中止時,該位元亦被清除。
由於可存在多個未處理原子區域,一個核心可能會需要對相同的記憶體位置處理多個資料版本。舉例來說,假設有兩個重疊原子區域。在此情況中,一給定記憶體位置可有三個資料版本:最後提交的版本、用於較舊原子區域的推測版本、以及用於較新原子區域的另一推測版本。若較舊原子區域即將要修改含有最後提交的版本之已使用快取線,則首先自推測快取(也就是該核心的私用快取階層)清除該快取線,以在記憶體階層的非推測部份中使該最後提交的版本保持安全。此清除可因此將該提交的版本提供至共享快取記憶體,諸如末階快取。
可假設該處理器將對相同快取線之記憶體存取串聯化,使得僅在舊原子區域對該快取線的所有記憶體作業完成之後,由較新原子區域建立第二個推測版本。同樣地,較新原子區域對該快取線的第一個記憶體作業,不論是載入或儲存,可導致複製或仿製具有第一個推測版本且SR/SW位元被清除之快取線,其可被插入至推測快取中。然後,據此更新由被標註於該記憶體作業的LRID值所索引之SR/SW位元對。從這一點開始,該較新原子區域的所有記憶體作業皆會藉由檢查該快取線的位址標籤是否匹配,以及由它們的標註之LRID值所索引的SR/SW位元中之任一者是否被設定,而前往此仿製之快取線。若該較舊原子區域之前並未存取該快取線,則不需要對該較新原子區域仿製該快取線。
為了支援較新原子區域的暫存器檢查點,可使用多個 影子暫存器檔案110,也就是與各個重疊原子區域關聯之影子暫存器檔案。將使用的影子暫存器檔案是由被標註於較新原子區域的begin_region指令之LRID值所索引。由於可在該較舊原子區域的所有指令撤回之前開始執行該較新原子區域,可藉由較舊原子區域的未處理指令而以可能的暫存器值改變來更新由該指令所採用之暫存器檢查點。
在一實施例中,每當該較舊原子區域的未處理指令修改暫存器值時,可將該暫存器檢查點更新。該檢查點更新是藉由以下所完成:1)檢查ARC暫存器值是否為二,以確認較新原子區域的存在,且若是;2)將目前的LRID暫存器值和被標註於指令之LRID值做比較,以識別來自較舊原子區域者;以及3)針對該較新原子區域更新影子暫存器檔案,其中是藉由反轉被標註於該等指令之LRID值而獲得該較新原子區域的索引。
為了確保來自相同執行緒的原子區域被依程式順序提交,可在發出階段,以及在發出end_region指令之前判斷:1)ARC暫存器值是否為二(亦即,存在兩個未處理原子區域);以及2)LRID暫存器值是否等於被標註於該指令之LRID值(亦即,此原子區域為較新的)。若兩個條件皆被滿足,則不會將該end_region指令加以排程,直到ARC暫存器值被更新為一(亦即,較舊原子區域已被提交)為止。
現在參照第4圖,所示為根據本發明實施例之與實行重疊原子區域執行有關的細節之流程圖。如第4圖所示, 方法200可藉由接收第一原子區域的開始區域指令而開始(方塊205)。回應於接收到此指令,該核心之一個以上的暫存器檔案之目前狀態的檢查點可被採用及儲存,例如:在與該原子區域關聯之檢查點暫存器檔案中。此外,在方塊215,可設定LRID以指出第一原子區域為現用。
據此,在這一點,控制係前進至方塊220,在該處可開始在此第一原子區域內發出指令。這些指令可被標註有此第一原子區域的LRID值。據此,在方塊225可執行給定指令。接著可判斷此指令是否導致修改已使用快取線,亦即先前已被修改,但未被寫回至系統記憶體的私用快取記憶體內之快取線(菱形230)。若是,則控制前進至方塊235,在該處可將已使用資料驅逐至記憶體階層。舉例來說,可將被驅逐之資料送至末級快取,其中可將該資料儲存在該處,以如此維持更新之資訊,使得此資料在將該原子區域中止的情況中不會遺失。控制接下來前進至方塊240,在該處可將結果儲存在推測快取中,並可更新與該等結果關聯之推測狀態。更具體地如上所述,可將先前被驅逐之資料寫入至所識別之快取線,並可在該快取線內設定推測狀態,例如:第一原子區域的推測寫入指示符。
如所見,控制接下來前進至出現於第5圖中的菱形250。在該處可判斷是否偵測到衝突。若否,則可判斷該原子區域是否已終止(菱形265)。若否,則控制前進至上面的方塊220,以發出該區域的下一個指令。
反之,若在菱形250判斷偵測到衝突,則控制前進至 方塊255,在該處可連同推測狀態一起更新快取一致性狀態,而且,可重新儲存檢查點。也就是說,可將檢查點暫存器檔案值寫回至暫存器,以將該狀態置回該原子區域開始時的樣子,而且,可將此原子區域的推測狀態,亦即私用快取的推測場加以更新,例如:全部清除。此外,控制前進至方塊260,在該處可設定與此第一原子區域關聯之毒害指示符。
繼續參照第5圖,若在菱形265判斷該區域的終止已發生,例如:透過結束區域指令,則控制前進至菱形270,在該處可判斷是否針對此區域而設定毒害指示符。若是,則清除該指示符,並可中止該一個以上的原子區域(方塊280)。反之,若未設定該指示符,則控制前進至方塊290,在該處該原子區域可提交,並可據此刪除儲存在檢查點暫存器檔案中的值,且推測狀態被更新,例如:全部被清除以指出私用快取中的值為被提交之值。雖然在第4圖和第5圖的實施例中是以此高階來加以顯示,應了解到本發明的範圍並不限於此。
現在參照第6圖,所示為對較新原子記憶體區域的推測暫存器檔案實行逐步更新的流程圖。如所見,方法300可由判斷是否存在重疊原子區域所開始(菱形310)。舉例來說,此判斷可以ARC計數器為基礎。若有多個原子區域,則可判斷較舊原子區域的指令是否修改暫存器值(菱形320)。此判斷可,例如,以目前的LRID值和標註之指令的LRID之比較為基礎。若此對於暫存器值之更 新發生於該較舊原子區域內,則控制前進至方塊330,在該處可更新較新原子區域的影子暫存器檔案中之暫存器,以如此提供逐步設定暫存器檢查點的能力。
現在參照第7圖,所示為根據本發明實施例之用於控制較新原子區域的提交之方法的流程圖。如第7圖所示,方法400可由接收結束區域指令所開始(方塊410)。接著,在菱形420可判斷是否存在重疊原子區域。此判斷可如上,亦即藉由對ARC計數器之存取。若有多個區域,則控制前進至菱形430,在該處可判斷該LRID值是否等於結束區域指令的LRID值。若是,這表示該指令是屬於較新原子區域,但較舊原子區域尚未提交。據此,控制前進返回至上面的菱形420。反之,若在菱形420和430任一者的判斷為否定的,則控制前進至方塊440,在該處可將結束區域指令排程,以如此允許終結之原子區域提交。雖然是以第7圖之實施例中的此特定實作來加以顯示,應了解本發明的範圍不限於此。
雖然第一類型之重疊原子區域,OAR-SL,的實作允許超出區域邊界將來自兩個原子區域的載入和儲存兩者重新排序,這對於諸如TSO模型和x86記憶體模型之完全將儲存排序的鬆散式記憶體模型而言極具殺傷力,因無法在較舊原子區域的任何儲存之前執行較新原子區域的儲存。此外,若編譯器可將原子區域之載入朝原子區域的開始往上移,以增加載入和消耗載入之值的指令之間的指令距離,則只要藉由僅允許較新原子區域之載入與較舊原子區 域重疊即可獲得來自重疊兩個原子區域的大部份益處。
利用這些觀察,根據第二類型之重疊原子區域,亦即OAR-L類型,的處理器可屬於簡化之硬體設計,如第8圖所示。如所見,可將此處理器100組態為與第3圖的相同,但只有與較舊原子區域關聯之單一推測寫入位元。因此,如第8圖所示,與各快取線關聯之狀態指示符可包括每快取線每原子區域一SR位元,但對較舊原子區域只有一SW位元,因不會將較新原子區域的儲存排程以供執行,直到較舊原子區域提交為止。為了確保正確的排程,儲存係在發出狀態檢查ARC暫存器113,且只有在此暫存器值為一時才被視為準備好執行(換言之,較舊原子區域已提交)。由於可有多至兩個資料版本之相同記憶體位置(亦即,最後提交之版本和用於較舊原子區域的推測版本),故可針對OAR-L而避免OAR-SL設計之額外的快取邏輯針對另一推測版本仿製快取線並將該線與位址標籤和SR/SW位元匹配。因此如所見,比起OAR-SL,實行OAR-L類型之重疊原子區域的實施例可具有較簡單之組合邏輯和較少位元儲存器,且很適合完全將儲存排序的鬆散式記憶體模型。據此,藉由每快取線僅包括SR位元(不增加SW位元,除了對較舊原子區域之外),可藉由僅隱藏最嚴重的載入失誤損失來實現大部份的效能益處。
無序處理器可利用來自OAR的提高記憶體排序彈性,而有序處理器則依程式順序發出指令且可能無法利用OAR。為了允許軟體排程利用OAR,可將區域ID位元、 單位元加至具有記憶體作業來作為其語意的指令(例如:外顯記憶體指令、具有記憶體運算元的ALU指令等等)。亦將此位元加至begin_region指令。在多個實施例中,若未在區域邊界以外實行軟體排程,則可將此位元設定為零。如此處所使用的,用語區域邊界為原子區域之間的邏輯定界符。若在將第一原子區域的結束區域指令排程之前將第二原子區域之指令排程,則稱該第二原子區域的指令被排程在其區域邊界以外。當編譯器將指令排程在區域邊界以外時,該指令的區域ID位元被設定為一,如第9圖所示,其為根據本發明實施例之原始碼(a)和軟體排程後之相同碼(b)的說明。如所見,在指令被發出時,並非將其標註有LRID暫存器,而是標註該LRID暫存器和該區域ID位元的互斥或值。此係允許將該指令當作部份下一個原子區域來執行。該編譯器因而使用此區域位元來將指令排程在區域邊界以外。注意到,此位元僅被用於被排程在區域邊界以外之指令。
現在參照第10圖,所示為根據本發明一實施例之處理器核心的方塊圖。如第10圖所示,處理器核心500可為多級管線無序處理器,且可作業於不同的電壓和頻率(不管是否處於加速模式)。如第10圖中所見,核心500包括前端單元510,其可被用來提取將被執行之指令並將它們備妥以供稍後在處理器中使用。舉例來說,前端單元510可包括提取單元501、指令快取503、指令解碼器505以及發出邏輯507。在某些實作中,前端單元510可進一 步包括追蹤快取,連同微代碼儲存器以及微作業儲存器。提取單元501可例如從記憶體或指令快取503提取巨集指令,並將它們饋送至指令解碼器505,以將它們解碼為基元,亦即由處理器所執行的微作業。然後,發出邏輯507可排程並發出指令。在多個實施例中,發出邏輯507可包括用以將LRID位元附加至指令,並判斷是否允許發出諸如較新原子區域的結束區域指令之指令的邏輯。
耦合於前端單元510和執行單元520之間的是無序(OOO)引擎515,其可被用來接收微指令並將它們備妥以供執行。更具體來說,OOO引擎515可包括各種緩衝器,以將微指令流程重新排序,並分配執行所需的各種資源,以及將邏輯暫存器的重新命名提供至諸如暫存器檔案530和延伸暫存器檔案535之各種暫存器檔案內的儲存器位置上。暫存器檔案530可包括用於整數和浮點作業的分離暫存器檔案。延伸暫存器檔案535可提供向量尺寸單位的儲存器,例如:每暫存器256或512位元。如進一步所見,可在原子區域之開始時提供影子暫存器檔案538,以各自儲存暫存器值之檢查點。另外,重疊原子區域狀態儲存器539可被用來儲存各種狀態,諸如ARC值、LRID、毒害指示符等等。
在其他專門的硬體之間,執行單元520中可出現各種資源,包括,例如,各種整數、浮點、以及單一指令多重資料(SIMD)邏輯單元。舉例來說,在其他的此等執行單元之中,此等執行單元可包括一個以上的算術邏輯單元 (ALU)522。
可將來自該等執行單元的結果提供至撤回邏輯,也就是重新排序緩衝器(ROB)540。更具體來說,ROB 540可包括各種陣列及邏輯,以接收與被執行之指令關聯的資訊。接著由ROB 540來檢驗此資訊,以判斷該等指令是否可被有效地撤回且結果資料被提交至處理器的架構狀態,或是否發生一個以上之例外而阻止適當地撤回該等指令。當然,ROB 540可處理其他與撤回關聯的作業。
如第10圖所示,ROB 540被耦合至快取550,該快取550在某一實施例中可為低階快取(例如:L1快取),雖然本發明的範圍不限於此。快取550可為可被用來當作推測緩衝器的私用快取,如在此所述。如進一步所見,快取550可包括快取控制器555(或與其關聯),該快取控制器555可根據本發明實施例來實行衝突偵測。另外,可將執行單元520直接耦合至快取550。從快取550可發生與較高階之快取、系統記憶體等等的資料通訊。雖然在第10圖的實施例中是以此高階來加以顯示,應了解本發明的範圍不限於此。舉例來說,雖然第10圖的實作是關於無序機,諸如所謂的x86 ISA,但本發明的範圍並不限於此。換言之,可以有序處理器、諸如以ARM為基之處理器的精簡指令集計算(RISC)處理器、或是可透過仿真引擎和關聯之邏輯電路來模擬不同ISA之指令和作業的另一類型之ISA的處理器來實行其他實施例。
可以許多不同的系統類型來實行實施例。現在參照第 11圖,所示為根據本發明實施例之系統的方塊圖。如第11圖所示,多處理器系統600為點對點互連系統,且包括經由點對點互連650所耦合的第一處理器670和第二處理器680。如第11圖所示,處理器670和680各別可為多核心處理器,包括第一和第二處理器核心(亦即處理器核心674a和674b以及處理器核心684a和684b),雖然在該等處理器中有可能會存在更多個核心。該等處理器各別可包括各種硬體及/或邏輯以允許原子區域的重疊,如本文中所述。
繼續參照第11圖,第一處理器670進一步包括記憶體控制器集線器(MCH)672以及點對點(P-P)介面676和678。同樣地,第二處理器680包括MCH 682以及P-P介面686和688。如第11圖所示,MCH 672和682將該等處理器耦合至各自之記憶體,也就是記憶體632和記憶體634,該等記憶體可為局部附接至各自之處理器的系統記憶體(例如:DRAM)之部份。第一處理器670和第二處理器680可分別經由P-P互連652和654而耦合至晶片組690。如第11圖所示,晶片組690包括P-P介面694和698。
此外,晶片組690包括介面692,以藉由P-P互連639將晶片組690與高性能繪圖引擎638耦合。然後,晶片組690可經由介面696而耦合至第一匯流排616。如第11圖所示,各種輸入/輸出(I/O)裝置614可被耦合至第一匯流排616,連同將第一匯流排616耦合至第二匯流排 620的匯流排橋接器618。在一實施例中,可將各種裝置耦合至第二匯流排620,包括:例如,鍵盤/滑鼠622、通訊裝置626、以及資料儲存單元628,諸如磁碟驅動器或可包括代碼630的其他大量儲存裝置。另外,可將聲頻I/O 624耦合至第二匯流排620。可將實施例併入其他種類之系統,包括諸如智慧型手機、平板電腦、輕省筆電等等的行動裝置。
實施例可以代碼來加以實行,並可被儲存在非暫時性儲存媒體上,其中該非暫時性儲存媒體上儲存有指令,該等指令可被用來將系統程式化以執行該等指令。該儲存媒體可包括,但不限於,任何類型的碟片,包括:軟碟、光碟、固態驅動器(SSD)、光碟唯讀記憶體(CD-ROM)、可複寫光碟(CD-RW)、以及磁光碟、諸如唯讀記憶體(ROM)的半導體裝置、諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)的隨機存取記憶體(RAM)、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電子可抹除可程式化唯讀記憶體(EEPROM)、磁性或光學卡、或任何其他類型之適用於儲存電子指令的媒體。
雖然以就有限數量之實施例來敘述本發明,但熟習該項技藝者將可理解其多種修改及變更。所附申請專利範圍應涵蓋所有的此等修改及變更,而不超出本發明的實質精神及範圍。
110‧‧‧核心
1120 、1121 ‧‧‧影子暫存器檔案
113‧‧‧原子區域計數器(ARC)暫存器
114‧‧‧LRID儲存器
1150 、1151 ‧‧‧毒害儲存器
120‧‧‧私用快取
1210 -121n ‧‧‧登錄
1220 ‧‧‧第一推測場
1221 ‧‧‧第二推測場
130‧‧‧衝突偵測邏輯
500‧‧‧處理器核心
510‧‧‧前端單元
501‧‧‧提取單元
503‧‧‧指令快取
505‧‧‧指令解碼器
507‧‧‧發出邏輯
515‧‧‧無序(OOO)引擎
520‧‧‧執行單元
522‧‧‧算術邏輯單元(ALU)
530‧‧‧暫存器檔案
535‧‧‧延伸暫存器檔案
538‧‧‧影子暫存器檔案
539‧‧‧重疊原子區域狀態儲存器
540‧‧‧重新排序緩衝器(ROB)
550‧‧‧快取
555‧‧‧快取控制器
600‧‧‧多處理器系統
614‧‧‧輸入/輸出(I/O)裝置
616‧‧‧第一匯流排
618‧‧‧匯流排橋接器
620‧‧‧第二匯流排
622‧‧‧鍵盤/滑鼠
624‧‧‧聲頻I/O
626‧‧‧通訊裝置
628‧‧‧資料儲存單元
630‧‧‧代碼
632、634‧‧‧記憶體
638‧‧‧高性能繪圖引擎
639‧‧‧P-P互連
670‧‧‧第一處理器
672、682‧‧‧記憶體控制器集線器(MCH)
674a、674b、684a、684b‧‧‧處理器核心
676、678、686、688、694、698‧‧‧點對點(P-P)介面
680‧‧‧第二處理器
690‧‧‧晶片組
692、696‧‧‧介面
第1圖為根據本發明一實施例之重疊原子記憶體區域的圖解說明。
第2圖為根據本發明實施例之重疊原子區域執行的高階概觀之流程圖。
第3圖為根據本發明實施例之處理器的方塊圖。
第4圖為根據本發明實施例之與實行重疊原子區域執行有關的細節之流程圖。
第5圖為根據本發明實施例之與實行重疊原子區域執行有關的進一步細節之流程圖。
第6圖為根據本發明一實施例之對較新原子記憶體區域之推測暫存器檔案實行逐步更新的流程圖。
第7圖為根據本發明實施例之用於控制較新原子區域的提交之方法的流程圖。
第8圖為根據本發明另一實施例之處理器的方塊圖。
第9圖為根據本發明實施例之原始碼和軟體排程後的相同碼之說明圖。
第10圖為根據本發明一實施例之處理器核心的方塊圖。
第11圖為根據本發明實施例之系統的方塊圖。
100‧‧‧處理器
110‧‧‧核心
1120 、1121 ‧‧‧影子暫存器檔案
113‧‧‧原子區域計數器(ARC)暫存器
114‧‧‧LRID儲存器
1150 、1151 ‧‧‧毒害儲存器
120‧‧‧私用快取
1210 -121n ‧‧‧登錄
1220 ‧‧‧第一推測場
1221 ‧‧‧第二推測場
130‧‧‧衝突偵測邏輯

Claims (6)

  1. 一種重疊原子區域執行的方法,包含:在處理器內開始執行緒的第一原子區域之執行;在該第一原子區域之執行終止之前,在該處理器內開始與該第一原子區域部分重疊的該執行緒的第二原子區域之執行;以及判斷在該第二原子區域之執行期間是否發生衝突,若是,則設定與該第二原子區域關聯之毒害指示符,以指出該第二原子區域注定要失敗並繼續該第二原子區域之執行。
  2. 如申請專利範圍第1項的方法,更包含回應於所設定之毒害指示符和該第二原子區域的結束區域指令而中止該第二原子區域。
  3. 如申請專利範圍第1項的方法,更包含判斷在該第一原子區域之執行期間是否發生衝突,若是,則中止該第一和第二原子區域。
  4. 如申請專利範圍第1項的方法,更包含經由編譯器來識別該第一和第二原子區域。
  5. 如申請專利範圍第1項的方法,更包含防止該第二原子區域之提交,直到該第一原子區域提交為止。
  6. 如申請專利範圍第1項的方法,更包含在該第一原子區域之指令修改該處理器的暫存器檔案之值時,更新與該第二原子區域關聯之影子暫存器檔案中的暫存器。
TW101150121A 2011-12-30 2012-12-26 重疊原子區域執行的方法 TWI483180B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/068013 WO2013101144A1 (en) 2011-12-30 2011-12-30 Overlapping atomic regions in a processor

Publications (2)

Publication Number Publication Date
TW201346721A TW201346721A (zh) 2013-11-16
TWI483180B true TWI483180B (zh) 2015-05-01

Family

ID=48698378

Family Applications (4)

Application Number Title Priority Date Filing Date
TW101150121A TWI483180B (zh) 2011-12-30 2012-12-26 重疊原子區域執行的方法
TW103145804A TWI525534B (zh) 2011-12-30 2012-12-26 用於重疊原子區域執行的系統
TW103145803A TWI540502B (zh) 2011-12-30 2012-12-26 用於重疊原子區域執行的處理器
TW105113272A TWI592868B (zh) 2011-12-30 2012-12-26 用於重疊原子區域執行的處理器

Family Applications After (3)

Application Number Title Priority Date Filing Date
TW103145804A TWI525534B (zh) 2011-12-30 2012-12-26 用於重疊原子區域執行的系統
TW103145803A TWI540502B (zh) 2011-12-30 2012-12-26 用於重疊原子區域執行的處理器
TW105113272A TWI592868B (zh) 2011-12-30 2012-12-26 用於重疊原子區域執行的處理器

Country Status (3)

Country Link
US (1) US9710280B2 (zh)
TW (4) TWI483180B (zh)
WO (1) WO2013101144A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11182294B2 (en) 2016-09-28 2021-11-23 Arm Limited Apparatus and method for providing an atomic set of data accesses

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10042761B2 (en) * 2016-05-03 2018-08-07 International Business Machines Corporation Read and write sets for transactions of a multithreaded computing environment
US10733091B2 (en) * 2016-05-03 2020-08-04 International Business Machines Corporation Read and write sets for ranges of instructions of transactions
US10261843B2 (en) * 2017-03-16 2019-04-16 International Business Machines Corporation Speculative execution management in a coherent accelerator architecture
US10514913B2 (en) 2017-06-23 2019-12-24 International Business Machines Corporation Compiler controls for program regions
US10684852B2 (en) 2017-06-23 2020-06-16 International Business Machines Corporation Employing prefixes to control floating point operations
US10379851B2 (en) 2017-06-23 2019-08-13 International Business Machines Corporation Fine-grained management of exception enablement of floating point controls
US10725739B2 (en) 2017-06-23 2020-07-28 International Business Machines Corporation Compiler controls for program language constructs
US10481908B2 (en) 2017-06-23 2019-11-19 International Business Machines Corporation Predicted null updated
US10740067B2 (en) 2017-06-23 2020-08-11 International Business Machines Corporation Selective updating of floating point controls
US10657057B2 (en) * 2018-04-04 2020-05-19 Nxp B.V. Secure speculative instruction execution in a data processing system
US10635417B2 (en) * 2018-06-12 2020-04-28 Intel Corporation Techniques for compiler sheltered non-volatile memory stores
US10884720B2 (en) * 2018-10-04 2021-01-05 Microsoft Technology Licensing, Llc Memory ordering annotations for binary emulation

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080016325A1 (en) * 2006-07-12 2008-01-17 Laudon James P Using windowed register file to checkpoint register state
US20090217020A1 (en) * 2004-11-22 2009-08-27 Yourst Matt T Commit Groups for Strand-Based Computing
CN102103485A (zh) * 2009-12-16 2011-06-22 英特尔公司 用于x86中动态二进制优化的两阶段提交区域
US20110202729A1 (en) * 2010-02-18 2011-08-18 International Business Machines Corporation Executing atomic store disjoint instructions

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7263599B2 (en) * 2004-02-06 2007-08-28 Infineon Technologies Thread ID in a multithreaded processor
US7350034B2 (en) * 2005-06-20 2008-03-25 International Business Machines Corporation Architecture support of best-effort atomic transactions for multiprocessor systems
US8180977B2 (en) * 2006-03-30 2012-05-15 Intel Corporation Transactional memory in out-of-order processors
US7802136B2 (en) * 2006-12-28 2010-09-21 Intel Corporation Compiler technique for efficient register checkpointing to support transaction roll-back
US7689788B2 (en) * 2007-01-23 2010-03-30 Sun Microsystems, Inc. System and method for executing transactions
US9292221B2 (en) * 2011-09-29 2016-03-22 Intel Corporation Bi-directional copying of register content into shadow registers

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090217020A1 (en) * 2004-11-22 2009-08-27 Yourst Matt T Commit Groups for Strand-Based Computing
US20080016325A1 (en) * 2006-07-12 2008-01-17 Laudon James P Using windowed register file to checkpoint register state
CN102103485A (zh) * 2009-12-16 2011-06-22 英特尔公司 用于x86中动态二进制优化的两阶段提交区域
US20110202729A1 (en) * 2010-02-18 2011-08-18 International Business Machines Corporation Executing atomic store disjoint instructions

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11182294B2 (en) 2016-09-28 2021-11-23 Arm Limited Apparatus and method for providing an atomic set of data accesses
TWI758317B (zh) * 2016-09-28 2022-03-21 英商Arm股份有限公司 用於提供資料存取行為原子集的裝置及方法

Also Published As

Publication number Publication date
US20140122845A1 (en) 2014-05-01
TWI592868B (zh) 2017-07-21
TWI525534B (zh) 2016-03-11
TW201346721A (zh) 2013-11-16
TW201512982A (zh) 2015-04-01
WO2013101144A1 (en) 2013-07-04
TW201516862A (zh) 2015-05-01
US9710280B2 (en) 2017-07-18
TWI540502B (zh) 2016-07-01
TW201702865A (zh) 2017-01-16

Similar Documents

Publication Publication Date Title
TWI483180B (zh) 重疊原子區域執行的方法
CN108292221B (zh) 事务结束加上持续性提交指令、处理器、方法和系统
JP5118652B2 (ja) アウトオブオーダープロセッサにおけるトランザクショナルメモリ
CN101308462B (zh) 管理对共享存储器单元的存储器访问的方法和计算系统
KR101025354B1 (ko) 가상 트랜잭션 메모리를 위한 글로벌 오버플로우 방법
CN109375949B (zh) 一种具有多个核的处理器
TWI476595B (zh) 用於交易式記憶體事件處置之硬體中使用者處置器的登錄
CN106648843B (zh) 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置
US20180011748A1 (en) Post-retire scheme for tracking tentative accesses during transactional execution
RU2501071C2 (ru) Механизм запроса поздней блокировки для пропуска аппаратной блокировки (hle)
JP2017532643A (ja) 永続ストアフェンスプロセッサ、方法、システム、及び命令
TWI585683B (zh) 用以實施具備使用分散結構的動態派遣窗之虛擬載入儲存佇列的失序處理器與電腦系統
US20110208921A1 (en) Inverted default semantics for in-speculative-region memory accesses
TWI585685B (zh) 用於在使用共享記憶體資源的記憶體一致性模型內失序載入之鎖定式與同步式方法
EP2641171B1 (en) Preventing unintended loss of transactional data in hardware transactional memory systems
TWI559221B (zh) 實現從載入儲存重新排序與最佳化所導致的推測性轉送錯失預測/錯誤當中復原之方法及系統
TWI627584B (zh) 具有在依序從記憶體讀取構成載入的記憶體一致性模型內失序載入之旗標語方法及系統
CN105164637B (zh) 用于执行循环的方法、系统、装置和处理器以及机器可读介质
JP2017509083A (ja) バイナリトランザクションベースのプロセッサによるロックエリジョン
TW201804322A (zh) 用於實施載入儲存重新排序與最佳化之指令定義
US11960922B2 (en) System, apparatus and method for user space object coherency in a processor
TW201428615A (zh) 過濾儲存避免所有儲存針對快取的所有字元進行窺探檢查之方法及系統

Legal Events

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