TWI428764B - 編譯器管理之多重處理器上之單執行緒程式之最佳化執行 - Google Patents

編譯器管理之多重處理器上之單執行緒程式之最佳化執行 Download PDF

Info

Publication number
TWI428764B
TWI428764B TW097146790A TW97146790A TWI428764B TW I428764 B TWI428764 B TW I428764B TW 097146790 A TW097146790 A TW 097146790A TW 97146790 A TW97146790 A TW 97146790A TW I428764 B TWI428764 B TW I428764B
Authority
TW
Taiwan
Prior art keywords
thread
core
execution
core processor
discrete
Prior art date
Application number
TW097146790A
Other languages
English (en)
Other versions
TW200935246A (en
Inventor
Michael A Paolini
Michael Jay Shapiro
Louis Bennie Capps Jr
Robert H Bell Jr
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 TW200935246A publication Critical patent/TW200935246A/zh
Application granted granted Critical
Publication of TWI428764B publication Critical patent/TWI428764B/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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Devices For Executing Special Programs (AREA)

Description

編譯器管理之多重處理器上之單執行緒程式之最佳化執行
本發明係關於多重處理器上之單執行緒程式之執行。
在多核心電腦系統中,不同系統資源(諸如CPU、記憶體、I/O頻寬、磁碟儲存器等)中各用於在多個指令執行緒上操作。與有效地操作此等多核心電腦系統相關聯之挑戰僅隨多重處理器電腦中之核心的數目及複雜性增長而增大。
與多核心積體電路之使用有關的一問題為通常難以寫入軟體以利用多核心。為了利用多核心處理器,任務通常需要被劃分成執行緒,且執行緒通常需要分布於可用核心上。與劃分及分布執行緒有關的一問題為在不存在足夠執行緒以保持所有核心被佔用之情況下如何有效地使用核心。隨核心之數目及類型增加,將存在以較為智慧之方式使用備用核心的機會。
根據本發明,闡述多核心過程,其中推測地執行程式碼之"備用"或閒置核心用於加速單執行緒任務。使用程式碼分析以在程式碼中預看,備用核心推測地執行可為無相依性的任何程式碼,且儲存結果。此過程實質上允許執行之主執行緒跳過指令(當到達程式碼之彼區段時)。更具體言之,多核心處理器使用備用核心以並行地執行單執行緒程式之單獨的部分。
在一實施例中,單執行緒程式如其在單一處理器上執行一般而經編譯。作業系統以邏輯邊界將單執行緒程式分裂成部分,管理且協調單獨程式部分在多重處理器之各核心上的執行。
在一實施例中,經編譯之單執行緒程式由單執行緒最佳化系統以可再定位且需要位址修正之函數邊界、指令塊邊界或動態鏈接程式庫(DLL)邊界分成片段。程式碼片段構成非推測性主執行緒及推測性子執行緒的圖表且在單獨的核心上並行執行。結果經組合且子執行緒在暫存器或記憶體位置結果中之衝突發生之情況下經重新執行。多核心處理器內之硬體或中斷機構用於儲存子執行緒中之記憶體存取以用於結果比較。
在另一實施例中,本發明係關於一種用於最佳化多核心處理器上之單執行緒程式之執行之方法,其包括在編譯單執行緒程式的同時將單執行緒程式劃分成複數個離散可執行分量,識別複數個離散可執行分量中之至少一些用於由多核心處理器內之閒置核心執行,及賦能複數個離散可執行分量中之至少一者在閒置核心上的執行。
在另一實施例中,本發明係關於一種用於最佳化多核心處理器上之單執行緒程式之執行之裝置,其包括用於在編譯單執行緒程式的同時將單執行緒程式劃分成複數個離散可執行分量之構件,用於識別複數個離散可執行分量中之至少一些用於由多核心處理器內之閒置核心執行之構件,及用於賦能複數個離散可執行分量中之至少一者在閒置核心上的執行之構件。
在另一實施例中,本發明係關於一種用於判定策略後續動作之電腦程式產品。該電腦程式產品包括一電腦可用媒體,該電腦可用媒體具有藉由其具體化之電腦可用程式碼。該電腦可用程式碼包括可由一處理器執行用於以下動作之指令:在編譯單執行緒程式的同時將單執行緒程式劃分成複數個離散可執行分量,識別複數個離散可執行分量中之至少一些用於由多核心處理器內之閒置核心執行,及賦能複數個離散可執行分量中之至少一者在閒置核心上的執行。
藉由參考隨附圖式,可較佳地理解本發明,且可使其眾多目標、特徵及優點對於熟習此項技術者為顯而易見的。相同參考數字在若干圖之使用始終指定相同或類似的元件。
揭示一種方法、系統及程式,其用於在作業系統控制下使用備用核心以分裂單執行緒以用於在多個核心上之並行執行。在一實施例中,存在一最佳化系統,其管理包括一個以上核心之多重處理器上的執行程式。最佳化系統協調如何執行程式之部分,管理為推測性的部分,且判定推測性執行衝突是否發生。
現將參看隨附圖式詳細描述本發明之各種說明性實施例。應理解本文中所述之流程圖說明及/或方塊圖可由專用硬體電路、韌體及/或電腦程式指令完全或部分地實施,該等指令經提供至通用電腦、專用電腦或其他可程式化資料處理裝置之處理器以產生機器,使得指令(其經由電腦或其他可程式化資料處理裝置之處理器執行)實施流程圖及/或方塊圖區塊中所規定的功能/動作。另外,雖然在以下描述中闡述各種細節,但將瞭解可在無此等特定細節之情況下實踐本發明,且可對本文中描述之本發明進行眾多實施特定決策以達成器件設計者之諸如與技術或設計相關之約束一致的特定目標,該等目標將自一實施至另一實施而變化。雖然此開發努力可能為複雜且耗時的,但對於受益於本揭示案之一般熟習此項技術者而言,其將仍然為常規任務。舉例而言,選定態樣以方塊圖形式而非以細節展示,以便避免限制或模糊本發明。另外,在電腦記憶體內之資料的演算法或操作之方面呈現本文中所提供之詳細描述的一些部分。此等描述及表示由熟習此項技術者用於描述其工作之實質且將其工作之實質傳達給其他熟習此項技術者。現將參看諸圖在下文詳細描述本發明之各種說明性實施例。
現參看圖1,說明根據本發明之選定實施例之多重處理器(MP)資料處理系統100的高階方塊圖,該多重處理器(MP)資料處理系統100提供單執行緒程式之改良執行。資料處理系統100具有配置於一或多個處理器群組中之一或多個處理單元,且如所描繪包括在處理器群組110中之四個處理單元111、121、131、141。在對稱多重處理器(SMP)實施例中,所有處理單元111、121、131、141通常相同,亦即,其均使用指令及協定之共同集合或子集合來操作,且通常具有相同架構。如以處理單元111所示,每一處理單元可包括一或多個處理器核心116a、116b,其實行程式指令以便操作電腦。例示性處理單元將為由國際商用機器公司(IBM)所銷售之POWER5TM 處理器,該處理器包含具有均由積體電路所形成之各種執行單元、暫存器、緩衝器、記憶體及其他功能單元的單積體電路超純量(superscalar)微處理器。處理器核心可根據精簡指令集計算(RISC)技術操作,且可使用指令之管線與亂序執行兩者以進一步改良超純量架構之效能。另外,多個處理單元及/或多個核心可包括於單積體電路晶片內。
如圖1中所進一步描繪,每一處理器核心116a、116b包括由高速記憶體器件建構之機載(L1)快取記憶體119a、119b(通常係單獨的指令及資料快取記憶體)。快取記憶體通常用於暫時儲存可由處理器重複存取之值,以便藉由避免系統記憶體161載入值之較長步驟而加速處理。處理單元可包括諸如第二層級(L2)快取記憶體112之另一快取記憶體,其連同快取記憶體控制器(未圖示)一起支援分別為核心116a及116b之部分的L1快取記憶體119a、119b兩者。可提供額外快取層級(諸如L3快取記憶體166),其經由系統互連或結構匯流排150可存取。自最高(L1)至最低(L3)之每一快取層級可成功地儲存較多資訊,但係以較長的存取為代價。舉例而言,處理器核心(例如,116a)中之機載L1快取記憶體(例如,119a)可具有128千位元組之記憶體的儲存容量,L2快取記憶體112可具有4百萬位元組之儲存容量,且L3快取記憶體166可具有132百萬位元組之儲存容量。為了促進有缺陷處理單元組件之修復/替換,每一處理單元111、121、131、141可以可替換電路板、可插入模組或類似的現場可替換單元(FRU)之形式建構,其可簡單地以模組化方式換入、安裝入或換出系統100。
處理單元經由系統互連或結構匯流排150與系統100之其他組件通信。結構匯流排150連接至一或多個服務處理器160、系統記憶體器件161、記憶體控制器162、共用或L3系統快取記憶體166及/或各種周邊器件169。處理器橋接器167可視需要用於互連額外處理器群組。儘管未圖示,但應理解資料處理系統100亦可包括韌體,其儲存系統之基本輸入/輸出邏輯,且只要首先開啟(啟動)電腦系統即自周邊設備中之一者搜尋出且載入作業系統。
如圖1中所描繪,資料處理系統100包括多個系統資源(例如,快取記憶體、記憶體控制器、互連、I/O控制器等),其共用於多個執行緒中。
系統記憶體器件161(隨機存取記憶體或RAM)以揮發性(暫時)狀態儲存由處理單元所使用之程式指令及運算元資料,該系統記憶體器件161包括作業系統161A及應用程式161B。單執行緒最佳化模組161C可以任何所要形式(諸如作業系統模組、超管理器或監督器組件等)儲存於系統記憶體中,且用於最佳化處理器單元之多個核心上之單執行緒程式的執行。儘管說明為系統記憶體內之設施,但熟習此項技術者應瞭解單執行緒最佳化模組161C可替代地在資料處理系統100之另一組件內實施。單執行緒最佳化模組161C經實施為可執行指令、程式碼及/或控制邏輯(包括可程式化暫存器),其操作以檢查在系統100上執行之程式碼的效能監視資訊,使用預定策略將優先值指派至程式碼,且以所指派之優先值標記每一指令以使得優先值隨指令而分布於系統100上,如下文所較為充分描述的。
處理器群組110亦包括效能監視器170,其包括相應執行緒暫存記憶體172。效能監視器170及執行緒暫存記憶體172由單執行緒最佳化模組161C在最佳化單執行緒程式之執行時使用。系統記憶體161亦包括一最佳化區域161D,其可用於由執行緒進行之對暫存器值的儲存且對於最佳化模組161C而言可存取。
圖2展示單執行緒最佳化模組161C之操作的流程圖。更具體言之,在操作中,準備好執行之經編譯單執行緒程式在步驟210由最佳化模組161C檢查。
接著在步驟220,單執行緒程式以程式碼中之可再定位且需要程式碼修正之函數(諸如,程式DLL、函數呼叫、基本塊邊界或超級塊邊界)被劃分成執行緒之階層(例如,主(亦即,母代)執行緒及至少一子執行緒(亦即,子代執行緒))。
執行緒之間的關係之精確控制圖表在步驟230由最佳化模組準備且維持。圖表包括主執行緒及子執行緒中之指令的定義、子執行緒開始執行之分叉點,及主執行緒及子執行緒會聚之接合點或等待點。子執行緒本身可含有子執行緒。
在步驟240,最佳化模組161C基於在圖表中之執行緒之間的關係在單獨的核心上並行指派且執行主執行緒及子執行緒。在某些實施例中,效能監視器170中之執行緒暫存記憶體172以出現次序動態地記錄由主或母代執行緒及子執行緒所存取之位址及彼等位置中的值之變化。在執行緒之執行之後或期間,最佳化模組161C可擷取由執行緒讀取或寫入之位址的清單。在替代實施例中,主或母代執行緒及子執行緒中之每一載入及儲存引起對執行緒暫存記憶體172之截獲以記錄存取之位址。
在步驟245中,當主執行緒或子執行緒經啟動以開始執行時,執行緒之暫存器值保存於最佳化區域161D中。子執行緒可在與其母代執行緒相同之核心或不同的核心上執行。子執行緒可在母代執行緒開始執行之前經指派至核心(亦即,靜態地指派至核心)且接著可與母代執行緒並行地開始執行,或其可動態地指派至核心且在母代執行緒執行期間的某點啟動。當子執行緒經指派至另一核心時,可能需要使用諸如DMA之複製機制將子執行緒之程式文字複製至最佳化區域161D,或者程式文字及資料可經由多重處理器系統之互連結構自然地可存取而無需明確的複製。在兩種狀況下,母代執行緒中之暫存器的內容均經複製至最佳化區域以使得將啟動子執行緒之執行的核心可對其加以存取。在所有狀況下,母代執行緒上下文(亦即,暫存器及記憶體)均可用於子執行緒且與暫存器及記憶體位置相關聯,該等位置將由子執行緒藉由自系統記憶體161之明確指令複製或DMA複製或藉由至最佳化區域161D中之硬體可存取性來存取。
最佳化模組161C在主執行緒及子執行緒執行期間在步驟250持續地檢查暫存器及記憶體位址存取衝突。暫存器衝突可在子執行緒在子執行緒執行時將新值寫入至由主執行緒所使用之暫存器但在子執行緒完成時該值不由子執行緒復原至舊值時發生。存在最佳化模組161C判定暫存器衝突是否發生之兩種方式。第一,在步驟230中所形成之執行緒執行圖表中的指令分析可判定是否將發生一些暫存器衝突。第二,使在步驟245啟動子執行緒時保存於最佳化區域161D中之主執行緒暫存器值與在步驟270子執行緒完成時保存於最佳化區域161D中之子執行緒暫存器值相比較。最佳化模組161C藉由持續地比較主或母代執行緒及子執行緒之記憶體寫入位址(在其儲存於執行緒暫存記憶體172中時)來判定記憶體位置衝突。衝突在寫入位址由執行緒使用但呈現不正確程式次序時發生。程式次序藉由分析圖表中之執行緒之指令來判定。
在步驟254,若衝突在主執行緒或子執行緒之執行期間發生,則最佳化模組161C引起主執行緒或子執行緒之停止,藉由復原保存於最佳化區域161D中之正確暫存器值及保存於執行緒暫存記憶體172中之正確記憶體位置值來丟棄來自主執行緒或子執行緒執行之結果,必要時改變控制圖表中之執行緒的執行關係及重新開始主執行緒或子執行緒。主執行緒或子執行緒之執行在步驟245再次開始。
接著,在步驟270,子執行緒藉由到達控制圖表中之接合點或等待點而完成執行。子執行緒基於子執行緒是否超出效能監視器170中之執行緒暫存記憶體172向最佳化模組指示子執行緒是否可完成。當主或母代執行緒到達與圖表中之接合或等待語句相關聯的指令(其需要來自子執行緒執行之結果)但子執行緒尚未到達同一點時,母代執行緒暫時中止其自身執行直至子執行緒完成或到達圖表中其可提供結果之點。
在步驟280,最佳化模組161C藉由分析執行圖表且檢查保存於最佳化區域161D中之暫存器值而將由子執行緒讀取及寫入之暫存器與由主或母代執行緒讀取及寫入之暫存器相比較。其亦比較保存於執行緒暫存記憶體172中之子執行緒的經修改記憶體位置與執行緒暫存記憶體172中所暫存之主或母代執行緒的相同相對位置。
最佳化模組161C使用分析以在步驟290判定子執行緒之結果是否有效。在一實施例中,最佳化模組161C執行三個檢查以判定子執行緒之結果是否有效。更具體言之,在子執行緒於啟動子執行緒之後未寫入由主或母代執行緒讀取之記憶體位置及主或母代執行緒於啟動主或母代執行緒之後未寫入由子執行緒讀取之記憶體位置的情況下,無衝突發生。又,若在啟動第一執行緒之後第一執行緒未寫入由第二執行緒讀取之暫存器或若第一執行緒確實寫入了暫存器但稍後對其加以復原(亦即,以正確程式次序適當地使用暫存器),則無衝突發生。又,若讀取或寫入之記憶體位置的數目不超出主執行緒或子執行緒之執行緒暫存記憶體172,則結果為有效的。若不存在衝突,則由子執行緒修改之記憶體位置藉由一系列儲存操作合併至主或母代執行緒之記憶體位置中。有可能在主或母代執行緒執行之後所有暫存器值無需為相同的。舉例而言,子執行緒之分析可判定在主或母代執行緒中改變之一些暫存器值不用於子執行緒中,或在子執行緒中改變之一些暫存器值不用於主或母代執行緒中。最佳化模組161C可在子執行緒開始執行之前儲存哪些暫存器為所關注的。若結果有效,則最佳化模組161C以其圖表中之程式次序執行下一程式碼。
在步驟290中最佳化模組160C中之衝突解決的額外最佳化為可能的。若子執行緒直至向後與母代執行緒接合為止為推測性的,則在斷定彼子執行緒之執行的變數原來係錯誤之情況下不需要檢查衝突。舉例而言,若母代執行緒產生僅基於計算比較或邏輯測試而執行之子執行緒且母代執行緒中之結果指示尚未執行程式碼,則不需要執行關於子執行緒暫存器或記憶體位置之衝突解決,且由子執行緒列出之記憶體更新不需要經由最佳化模組161C合併至母代執行緒記憶體位置中。
在某些實施例中,執行緒暫存記憶體172之大小在多重處理器設計中可為可程式化或固定的,且係基於對於多種工作負荷或用於預期用於多重處理器上之特定工作負荷,有多少位址通常經存取用於再定位之修正函數、DLL、基本塊或超級塊的統計。存在將導致很少衝突之大塊指令的許多狀況。舉例而言,在DLL、函數或指令塊用於列印出資訊或改變直至圖表中很後為止未使用的記憶體位置之狀況下,將存在很少(若存在)衝突。又,使用在堆疊上推入及取出暫存器之標準應用介面規範所編譯的功能將具有很少的暫存器衝突。程式設計師可利用此框架以藉由減少暫存器或記憶體位置衝突來改良效能但其將並非為減輕寫入多執行緒程式碼的負擔之程式化要求。
藉由將單執行緒程式分裂成主或母代執行緒及推測性子執行緒且在單獨的備用核心上自動地對其加以執行,可提取功能之許多固有並行性。由於多重處理器之程式化可為有挑戰的,故此方式減輕程式設計師並行化程式碼之負擔,且僅依賴於可信任分布式作業系統來分裂程式碼且管理單獨片段之程式碼的執行。此過程之一重要態樣為可再定位程式碼在邏輯邊界之自動分裂,可在並行執行之後針對一致性對邏輯邊界加以檢查。此執行模型可由程式設計師在其寫入單執行緒程式碼時理解且用於得到額外優點,但其並非必要。
參看圖3,展示在用於並行化單執行緒程式時單執行緒最佳化模組之操作的流程圖。更具體言之,當單執行緒程式在步驟310在多重處理器資料處理系統100之第一核心(例如,核心116a)上執行時,編譯器在步驟312分析程式且判定未來分支點。多重處理器資料處理系統100內之其他核心(例如,核心116b及146a)接著在步驟320以專用記憶體空間組態。接著,在單執行緒程式碼包括分支之兩側(例如,A側及B側)的實例中,其他核心中之一者(例如,核心2)經組態以在步驟330執行分支之A側且另一核心(例如,核心3)經組態以在步驟332執行分支之B側。
雖然分支之此等側在核心內執行,但第一核心在步驟340執行至分支之指令且判定分支之A側還是分支之B側為正確路徑。此判定之結果用於在步驟342選擇路徑中之一者。接著在步驟350,單執行緒最佳化模組161C檢查以判定核心1執行是否可向前跳躍至選定核心執行(亦即,是否可使用分支側中之一者的結果)。若為如此,則單執行緒最佳化模組161C可基於子執行緒結果繼續執行或在步驟352將母代執行緒之執行遷移至選定核心。若非如此,則單執行緒最佳化模組161C繼續在第一核心內之單執行緒的執行且可在步驟354重新啟動分支側A及B中之一者或兩者的執行。
參看圖4,展示推測性執行緒集區程式碼之實例。更具體言之,非推測性執行程式碼410由第一核心(核心1)執行。第一推測性執行緒(執行緒A 420)由第二核心執行。第二推測性執行緒(執行緒B 430)由第三核心執行。
在操作中,推測性核心(例如,非另外執行程式碼之核心)向前掃描分支或其他類型之推測性指令。當識別分支時,若兩個核心經分配以執行各別執行緒(且若執行緒準備好被執行(例如,執行緒不依賴於仍待計算之值)),則上下文經保存直至主要執行緒到達分支且判定哪一分支為將繼續進行之正確分支為止。適當分支結果接著與來自所保存上下文之主要執行緒結果合併且系統接著可重新開始掃描分支且循環重複。
可提前計算之分支的一實例可為:
若(debug_on)則記錄x、y、z。
在此實例中,資料至I/O器件(諸如檔案或端子)之記錄將不干擾x、y及z之值的並行使用,且因此對於子執行緒產生之記錄功能將在備用核心上執行而實質上不影響主或母代執行緒之執行時間。
可提前計算之分支的另一實例可為:
切換(語言)
x:load German;//format left to right
y:load Japanese;//format top to bottom.
在此實例中,不存在在執行格式之可能長且複雜之載入之子執行緒之間的可變交互作用。主或母代執行緒可執行額外工作且與x及y之載入並行地計算語言邏輯測試,且在計算測試之接合時,一x或y之結果將以對主或母代執行緒之執行時間之最低限度影響而與主或母代執行緒結果合併。
熟習此項技術者應瞭解資料處理系統100可包括許多額外組件或較少組件,諸如,I/O配接器、互連橋接器、非揮發性儲存器、用於連接至網路或附接器件之埠等。由於此等組件並非為理解本發明所必需的,因此其不在圖1中說明或在本文中進一步論述。然而,亦應理解由本發明所提供之增強適用於任何架構之多執行緒資料處理系統且絕不限於圖1中所說明之普遍MP架構。
舉例而言,單執行緒最佳化過程可以編譯器層級、以作業系統層級、以硬體層級(例如,藉由將功能性嵌入於積體邏輯電路內或經由超管理器或兩者之某一組合)或以編譯器層級、作業系統層級及硬體層級之某一組合來實施。
在編譯器層級,編譯器可明確地規定子執行緒之分叉及編譯碼中之子執行緒結果的接合或等待(亦即,單獨之圖表將不必需),且如上所述之最佳化模組硬體或編譯碼中之額外軟體指令將處理暫存器及記憶體位置存取之衝突解決及執行緒結果之合併。另外,編譯器可在編譯期間嵌入隱示或邊界指示符,其中隱示可為核心特定的(例如,將某些執行緒及子執行緒指引至某些核心)或一般地針對多核心處理器(例如,若多核心處理器具有一或多個閒置核心,則在該或該等閒置核心上執行某些執行緒及子執行緒)。此等隱示將為回溯相容的且可由單核心處理器忽略。編譯器亦可提供在建置時產生之程式輪廓(例如,經由圖表或藉由使用分叉及接合編譯碼)。此輪廓甚至可經最佳化以用於某些類型之多核心處理器(例如,兩核心或四核心類型之多核心處理器)。另外,編譯器亦可採取步驟以藉由將所有或許多相依性一起集合於單子執行緒內或藉由以減少暫存器及記憶體存取衝突且因此對執行緒之推測性執行較為有利的方式重新配置指令執行而使獨立執行較長且較為頻繁。
在作業系統及硬體層級,如何執行程式部分之協調可在有或無編譯器介入的情況下完成。舉例而言,在作業系統層級,經編譯之單執行緒程式以函數或動態鏈接程式庫(DLL)邊界由包括於作業系統內之單執行緒最佳化系統分成片段。作業系統接著產生非推測性主或母代執行緒及推測性子執行緒的圖表,且資料處理系統接著在單獨的核心上並行執行主或母代執行緒及子執行緒。作業系統將管理衝突且在有或無硬體協助的情況下明確地經由額外軟體合併結果。
另外,主或母代執行緒及子執行緒可跨越單資料處理系統內之多個核心,跨越單資料處理系統內之多個處理單元,跨越多個資料處理系統(例如,經由分布式作業系統收到控制),或跨越多個核心、多個處理單元及多個資料處理系統之某一組合來執行。
因此,本發明意欲僅由隨附申請專利範圍之精神及範疇來限制,從而給出對所有方面之等效物的全部認定。
100...多重處理器(MP)資料處理系統
110...處理器群組
111...處理單元
112...第二層級(L2)快取記憶體
116a...處理器核心
116b...處理器核心
119a...機載(L1)快取記憶體
119b...機載(L1)快取記憶體
121...處理單元
131...處理單元
141...處理單元
146a...核心
150...系統互連/結構匯流排
160...服務處理器
161...系統記憶體器件
161A...作業系統
161B...應用程式
161C...單執行緒最佳化模組
161D...最佳化區域
162...記憶體控制器
166...L3系統快取記憶體
167...處理器橋接器
169...周邊器件
170...效能監視器
172...執行緒暫存記憶體
410...非推測性執行程式碼
420...執行緒A
430...執行緒B
圖1說明多重處理器電腦架構,其中可實施本發明之選定實施例。
圖2展示單執行緒最佳化程式之流程圖。
圖3展示用於並行化單執行緒程式之系統之操作的流程圖。
圖4展示推測性執行緒集區程式碼之實例。
100...多重處理器(MP)資料處理系統
110...處理器群組
111...處理單元
112...第二層級(L2)快取記憶體
116a...處理器核心
116b...處理器核心
119a...機載(L1)快取記憶體
119b...機載(L1)快取記憶體
121...處理單元
131...處理單元
141...處理單元
146a...核心
150...系統互連/結構匯流排
160...服務處理器
161...系統記憶體器件
161A...作業系統
161B...應用程式
161C...單執行緒最佳化模組
161D...最佳化區域
162...記憶體控制器
166...L3系統快取記憶體
167...處理器橋接器
169...周邊器件
170...效能監視器
172...執行緒暫存記憶體

Claims (12)

  1. 一種用於最佳化一多核心處理器上之一單執行緒程式之執行之方法,其包含:在編譯該單執行緒程式的同時將該單執行緒程式劃分成複數個離散可執行分量;識別該複數個離散可執行分量中之至少一些用於由該多核心處理器內之一閒置核心執行;及賦能該複數個離散可執行分量中之該至少一者在該閒置核心上的執行;產生該複數個離散可執行分量之間的關係之一圖表,該圖表包含一主分量及複數個離散可執行次分量;指派該主分量在該多核心處理器之一第一核心上執行;及指派該複數個離散可執行次分量中之每一者在該多核心處理器之至少一閒置核心上執行;及動態地記錄由該主分量及該複數個離散可執行次分量所存取之位址,及以該等位址之值之變化出現在一清單上之次序動態地記錄該等變化;及其中該圖表將複數個相依性一起集合於一單子執行緒內以使該子執行緒之執行對於推測性執行緒較為有利,其中該等位址係藉由該主分量及該複數個離散可執行次分量所讀取或寫入之包括於位址之該清單中之記憶體位址。
  2. 如請求項1之方法,其中: 該劃分進一步包含將隱示嵌入於該單執行緒程式之一編譯版本中,該等隱示促進由該多核心處理器進行之該單執行緒程式的執行,該等隱示為回溯相容的以由單核心處理器忽略。
  3. 如請求項2之方法,其中:該等隱示指導某些離散可執行分量由該多核心處理器之某些核心執行。
  4. 如請求項1之方法,其進一步包含:最佳化某些類型之多核心處理器的該圖表。
  5. 一種用於最佳化一多核心處理器上之一單執行緒程式之執行之裝置,其包含:用於在編譯該單執行緒程式的同時將該單執行緒程式劃分成複數個離散可執行分量之構件;用於識別該複數個離散可執行分量中之至少一些用於由該多核心處理器內之一閒置核心執行之構件;及用於賦能該複數個離散可執行分量中之該至少一者在該閒置核心上的執行之構件;用於產生該複數個離散可執行分量之間的關係之一圖表之構件,該圖表包含一主分量及複數個離散可執行次分量;用於指派該主分量在該多核心處理器之一第一核心上執行之構件;及用於指派該複數個離散可執行次分量中之每一者在該多核心處理器之至少一閒置核心上執行之構件; 用於動態地記錄由該主分量及該複數個離散可執行次分量所存取之位址及以該等位址之值之變化出現在一清單上之次序動態地記錄該等變化之構件;及其中該圖表將複數個相依性一起集合於一單子執行緒內以使該子執行緒之執行對於推測性執行緒較為有利,其中該等位址係藉由該主分量及該複數個離散可執行次分量所讀取或寫入之包括於位址之該清單中之記憶體位址。
  6. 如請求項5之裝置,其中:用於劃分之該構件進一步包含用於將隱示嵌入於該單執行緒程式之一編譯版本中的構件,該等隱示促進由該多核心處理器進行之該單執行緒程式的執行,該等隱示為回溯相容的以由單核心處理器忽略。
  7. 如請求項5之裝置,其中:該等隱示指導某些離散可執行分量由該多核心處理器之某些核心執行。
  8. 如請求項5之裝置,其進一步包含:用於最佳化某些類型之多核心處理器的該圖表之構件。
  9. 一種用於判定策略後續動作之電腦程式產品,該電腦程式產品包含:一電腦可用媒體,該電腦可用媒體具有藉由其具體化之電腦可用程式碼,該電腦可用程式碼包含可由一處理器執行用於以下動作之指令: 在編譯該單執行緒程式的同時將單執行緒程式劃分成複數個離散可執行分量;識別該複數個離散可執行分量中之至少一些用於由多核心處理器內之一閒置核心執行;及賦能該複數個離散可執行分量中之該至少一者在該閒置核心上的執行;產生該複數個離散可執行分量之間的關係之一圖表,該圖表包含一主分量及複數個離散可執行次分量;指派該主分量在該多核心處理器之一第一核心上執行;及指派該複數個離散可執行次分量中之每一者在該多核心處理器之至少一閒置核心上執行;動態地記錄由該主分量及該複數個離散可執行次分量所存取之位址,及以該等位址之值之變化出現在一清單上之次序動態地記錄該等變化;及其中該圖表將複數個相依性一起集合於一單子執行緒內以使該子執行緒之執行對於推測性執行緒較為有利,其中該等位址係藉由該主分量及該複數個離散可執行次分量所讀取或寫入之包括於位址之該清單中之記憶體位址。
  10. 如請求項9之電腦程式產品,其中用於劃分之該等指令進一步包含用於以下動作之指令: 將隱示嵌入於該單執行緒程式之一編譯版本中,該等隱示促進由該多核心處理器進行之該單執行緒程式的執行,該等隱示為回溯相容的以由單核心處理器忽略。
  11. 如請求項9之電腦程式產品,其中:該等隱示指導某些離散可執行分量由該多核心處理器之某些核心執行。
  12. 如請求項9之電腦程式產品,其中該等指令進一步包含用於以下動作之指令:最佳化某些類型之多核心處理器的該圖表。
TW097146790A 2007-12-19 2008-12-02 編譯器管理之多重處理器上之單執行緒程式之最佳化執行 TWI428764B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/960,021 US8312455B2 (en) 2007-12-19 2007-12-19 Optimizing execution of single-threaded programs on a multiprocessor managed by compilation

Publications (2)

Publication Number Publication Date
TW200935246A TW200935246A (en) 2009-08-16
TWI428764B true TWI428764B (zh) 2014-03-01

Family

ID=40790056

Family Applications (1)

Application Number Title Priority Date Filing Date
TW097146790A TWI428764B (zh) 2007-12-19 2008-12-02 編譯器管理之多重處理器上之單執行緒程式之最佳化執行

Country Status (2)

Country Link
US (1) US8312455B2 (zh)
TW (1) TWI428764B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8392562B2 (en) * 2009-12-23 2013-03-05 Citrix Systems, Inc. Systems and methods for managing preferred client connectivity to servers via multi-core system
CN101916185B (zh) * 2010-08-27 2013-07-03 上海交通大学 多核平台下串行程序运行时的自动并行化加速方法
JP5488697B2 (ja) * 2010-08-30 2014-05-14 富士通株式会社 マルチコアプロセッサシステム、同期制御方法、および同期制御プログラム
EP2612235A4 (en) * 2010-09-03 2014-03-05 Siemens Ag METHOD FOR PARALLELIZING AUTOMATIC CONTROL PROGRAMS AND COMPILER
US8515882B2 (en) * 2010-11-18 2013-08-20 International Business Machines Corporation Efficient storage of individuals for optimization simulation
US8489526B2 (en) 2010-11-24 2013-07-16 International Business Machines Corporation Controlling quarantining and biasing in cataclysms for optimization simulations
US20120198458A1 (en) * 2010-12-16 2012-08-02 Advanced Micro Devices, Inc. Methods and Systems for Synchronous Operation of a Processing Device
US8782645B2 (en) * 2011-05-11 2014-07-15 Advanced Micro Devices, Inc. Automatic load balancing for heterogeneous cores
US9305257B2 (en) 2013-05-20 2016-04-05 International Business Machines Corporation Adaptive cataclysms in genetic algorithms
US10725889B2 (en) * 2013-08-28 2020-07-28 Micro Focus Llc Testing multi-threaded applications
US9965320B2 (en) * 2013-12-27 2018-05-08 Intel Corporation Processor with transactional capability and logging circuitry to report transactional operations
US10025624B2 (en) * 2016-03-30 2018-07-17 International Business Machines Corporation Processing performance analyzer and process manager
US10491524B2 (en) 2017-11-07 2019-11-26 Advanced Micro Devices, Inc. Load balancing scheme
JP7073933B2 (ja) * 2018-06-14 2022-05-24 株式会社デンソー マルチコアマイコン及び並列化方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030188141A1 (en) * 2002-03-29 2003-10-02 Shailender Chaudhry Time-multiplexed speculative multi-threading to support single-threaded applications
US7844801B2 (en) * 2003-07-31 2010-11-30 Intel Corporation Method and apparatus for affinity-guided speculative helper threads in chip multiprocessors
US20050071841A1 (en) * 2003-09-30 2005-03-31 Hoflehner Gerolf F. Methods and apparatuses for thread management of mult-threading
US20060047495A1 (en) * 2004-09-01 2006-03-02 Jesus Sanchez Analyzer for spawning pairs in speculative multithreaded processor
US8230422B2 (en) * 2005-01-13 2012-07-24 International Business Machines Corporation Assist thread for injecting cache memory in a microprocessor
US7937565B2 (en) * 2007-02-21 2011-05-03 Hewlett-Packard Development Company, L.P. Method and system for data speculation on multicore systems

Also Published As

Publication number Publication date
TW200935246A (en) 2009-08-16
US20090164755A1 (en) 2009-06-25
US8312455B2 (en) 2012-11-13

Similar Documents

Publication Publication Date Title
TWI428764B (zh) 編譯器管理之多重處理器上之單執行緒程式之最佳化執行
US8495636B2 (en) Parallelizing single threaded programs by performing look ahead operation on the single threaded program to identify plurality of instruction threads prior to execution
US8544006B2 (en) Resolving conflicts by restarting execution of failed discretely executable subcomponent using register and memory values generated by main component after the occurrence of a conflict
Ruprecht et al. Vm live migration at scale
US10430190B2 (en) Systems and methods for selectively controlling multithreaded execution of executable code segments
JP4222370B2 (ja) デバッグ支援装置及びデバッグ処理方法をコンピュータに実行させるためのプログラム
US7206966B2 (en) Fault-tolerant multi-core microprocessing
US9430353B2 (en) Analysis and visualization of concurrent thread execution on processor cores
KR101546033B1 (ko) Smt 기계에서 비교 및 전달 명령어를 사용한 안정적 실행
US20100268862A1 (en) Reconfigurable processor and method of reconfiguring the same
US20080195847A1 (en) Aggressive Loop Parallelization using Speculative Execution Mechanisms
Bolchini A software methodology for detecting hardware faults in VLIW data paths
US20020170034A1 (en) Method for debugging a dynamic program compiler, interpreter, or optimizer
JP2005166057A (ja) 障害検出コンピュータシステム
EP3652648B1 (en) Replaying time-travel traces relying on processor undefined behavior
US10838768B2 (en) Method for optimizing memory access in a microprocessor including several logic cores upon resumption of executing an application, and computer implementing such a method
US20090217087A1 (en) Computer device, continuing operation method for computer device, and program
Welton et al. Exposing hidden performance opportunities in high performance GPU applications
US20090133022A1 (en) Multiprocessing apparatus, system and method
JP2009175960A (ja) 仮想マルチプロセッサシステム
US7890740B2 (en) Processor comprising a first and a second mode of operation and method of operating the same
US7181652B2 (en) System and method for detecting and isolating certain code in a simulated environment
JP2004240953A (ja) コンピュータシステム、その同時多重スレッディング方法およびキャッシュコントローラシステム。
JP7236811B2 (ja) 情報処理装置
Szydlowski Multithreaded technology & multicore processors

Legal Events

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