TWI390445B - 用於在一多重執行緒處理器中之一管線的一分配點而封鎖一執行緒之方法、電腦程式產品及設備 - Google Patents

用於在一多重執行緒處理器中之一管線的一分配點而封鎖一執行緒之方法、電腦程式產品及設備 Download PDF

Info

Publication number
TWI390445B
TWI390445B TW095119465A TW95119465A TWI390445B TW I390445 B TWI390445 B TW I390445B TW 095119465 A TW095119465 A TW 095119465A TW 95119465 A TW95119465 A TW 95119465A TW I390445 B TWI390445 B TW I390445B
Authority
TW
Taiwan
Prior art keywords
thread
pipeline
blocking
instruction
allocation
Prior art date
Application number
TW095119465A
Other languages
English (en)
Other versions
TW200709053A (en
Inventor
Christopher Michael Abernathy
Jonathan James Dement
Albert James Van Norstrand Jr
David Shippy
Original Assignee
Google Inc
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 Google Inc filed Critical Google Inc
Publication of TW200709053A publication Critical patent/TW200709053A/zh
Application granted granted Critical
Publication of TWI390445B publication Critical patent/TWI390445B/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
    • 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
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching

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)
  • Advance Control (AREA)

Description

用於在一多重執行緒處理器中之一管線的一分配點而封鎖一執行緒之方法、電腦程式產品及設備
本發明一般係關於多重執行緒處理器中之一種封鎖機制,且更明確地說,係關於一種分配封鎖機制以允許執行緒效能之精細式控制。
多重執行緒技術允許二或更多種獨立執行緒在相同單一處理核心上執行。一執行緒是一應用程式之一部份或可獨立執行的一種指令群組。相對應地,一單一執行緒中之一指令群組必須以設定之順序執行,然而獨立執行緒中之一指令群組可獨立且可同時執行。一處理器中之多重執行緒使得處理器能夠妥善利用其資源。多重執行緒技術使得一單一處理器能夠讓軟體感覺其係二或更多種處理器之型態。
理想的情形中,每一執行緒可在指令管線及單元、執行管線及單元,及與其相似者上獨立作業。在實際的情形中,此種實作並不可行,因為晶片上之區域及資源量有限。因此,不同執行緒必須共享某些資源。舉例而言,多重執行緒可共享相同之指令發出單元或執行管線。關於多重執行緒處理器之效能,涉及共享資源、處置指令相依、及決定資源存取之優先性相關議題更顯重要,因為會產生一種資源「瓶頸」。
在執行緒之間共享資源之問題在於在一執行緒上具有一長潛時之一種指令可能會停頓另一執行緒上之指令的執行。舉例而言,執行緒1及執行緒2共享相同之指令發出單元。若執行緒1在指令單元中停頓許多週期,則執行緒2亦會停頓許多週期,因為該指令單元為兩者所共享。執行緒1可能因為正在執行一種非管線式作業而停頓,或一相依需等待許多週期才能清除。相對應地,執行緒2不依賴執行緒1,所以不會發出指令且必須等待執行緒1。此一問題會導致執行緒2之時間及資源的浪費。
解決此一問題的一種方法是將執行緒間之發出點退耦。這是一種有效的給掘方法,但其缺點在於會增加發出指令之複雜性,且其需要晶片上之大量區域。另一種方法是當偵測到一長潛時指令時,於分配處清除指令。其問題在於清除懲罰很可能不會符合該指令精確的潛時,這會導致浪費週期。很明顯地,需要一種簡單的系統或方法,其能夠使得共享相同資源之多重執行緒能夠真正地獨立作業而不會浪費週期,以便大幅改善先前技藝。
本發明提出一方法、一電腦程式產品、及一設備,以便藉由封鎖一多重執行緒處理器中之分配處的一執行緒,進行執行緒效能之精細式控制。多重執行緒共享一處理器中之一種管線。因此,一執行緒上之一指令的長潛時情況可能停頓共享該管線之所有執行緒。一長潛時情況可能是一種非管線式作業或一相依。當一編譯器可預測此種長潛時情況時,其可將一分配封鎖發信指令注入至編碼中,以封鎖該特定執行緒。在分配處,處理器可偵測此一指令並在指令所指明之一數量的週期(若偵測到額外潛時的時候,可加上硬體可加入之任何額外週期)中封鎖執行緒。封鎖之長度符合潛時之長度,所以當解決長潛時情況之後,管線可由封鎖之執行緒分配指令。在一種具體實施例中,分配封鎖發信指令是一種修改之OR指令,且在另一種具體實施例中,其為一種Nop指令。OR指令及Nop指令可在符合該情況之潛時的一特定數量的週期中封鎖一執行緒。修改之OR指令不會影響程式、暫存器檔案狀態、記憶體狀態、或輸入/輸出之執行,及其僅作為一種分配封鎖。藉由在分配處封鎖一執行緒,在封鎖過程中,處理器可從其他執行緒分配指令。這可確保在一執行緒上之一種長潛時情況不會導致多重執行緒上之停頓,且現用執行緒停頓之時期為精確之必須週期數目。
在下文討論中,將提出許多特定細節,以提供對本發明之完整理解。然而,習知技藝人士將可理解,能在欠缺這些特定細節的情形下實作本發明。在其他實施例中,已經以概要圖式或區塊圖之形式來闡明習知元件,以便避免用非必要知細節模糊本發明。此外,在大多數的情形中,省略了關於網路通訊、電磁發信技術、及與其相似者之細節,這是因為此類細節並非完整理解本發明所必須,且已公認其屬於習知技藝人士的理解範圍中。
應進一步注意,除非另為不同之表示,此處所數之所有功能皆可以硬體或軟體、或兩者之某種組合來執行。然而,在一種較佳具體實施例中,將該功能實作於硬體中,以便提供最有效率之實作。或者是,可由一種處理器例如一電腦或符合如電腦程式編碼之編碼的一種電子資料處理器、軟體、和/或經編碼可執行此類功能之積體電路,來執行這些功能,除非另為不同之表示。
第1圖為一區塊圖,闡明具有多重執行緒能力之一種處理器100。此一處理器含有記憶體控制器102。記憶體控制器102可控制進出處理器100的資料及指令流。相對應地,指令單元104可發出將傳送至執行單元106之指令。記憶體控制器102和一層級2(L2)快取108介面結合。L2快取l08可儲存指令及資料兩者。L2快取可和指令單元104及執行單元106上獨立之層級1(L1)快取介面結合。指令單元104有一L1快取110可儲存指令且執行單元106有一L1快取114可儲存資料。指令單元104可自L1快取110取得指令,且執行單元106可自L1快取114取得資料並將資料寫入其中。處理器100可含有許多第1圖中未顯示之其他元件。第1圖是一處理器的一種基本表示,且不應限制本發明之範圍。
第2圖為一區塊圖,闡明可容納多重執行緒之一種處理器中之一指令管線200。此一設備200位於第1圖之指令單元104中,且可容納三種獨立執行緒,執行緒0、執行緒1、及執行緒2(此處未顯示)。如前所述,一執行緒是一種程式或一指令群組,其可獨立執行。指令提取單元202可提取前述三種之全部執行緒之指令。指令提取單元202能夠以一種優先順序提取該指令。通常而言,指令提取單元202可在三種執行緒中輪替,以便讓每一執行緒能均等地接取指令管線。指令提取單元202可將這些指令傳輸到指令緩衝區。相對應地,IBUF 0 204可儲存執行緒0之指令、IBUF 1 206可儲存執行緒1之指令、且IBUF 2 208可儲存執行緒2之指令。指令緩衝區204、206、及208可將指令傳輸至分配機制210。第2圖闡明三種獨立執行緒,但這僅為一種任意的數目,且此一設備200類型可處理較多或較少之執行緒。
分配機制210是一種多工器(MUX)其可選擇用於分配至指令管線216的正確指令。第2圖運用一種MUX作為分配機制210,但可利用其他元件來達成相同之結果。分配機制210可在IBUF 0 204、IBUF 1 206、或IBUF 2 208的輸出之間進行雙態觸變,以便讓每一執行緒具有相等的優先性以及能均等地接取指令管線216。分配控制封鎖214可選擇對何種執行緒進行分配。若分配控制封鎖214偵測到修改之OR指令,其可中斷分配機制210之正常雙態觸變機制。在分配之後,指令可將指令管線216分段。指令管線216可饋給來自第1圖之執行單元106。執行單元106可執行該指令。本申請書參照一發出管線,且更明確地說是一種指令管線來描述說明性具體實施例。該具體實施例適用於一管線中之發生資源競爭之任一點。舉例而言,該具體實施例亦可適用於一執行管線。
說明性具體實施例係關於分配機制210、分配控制封鎖214、及編譯器(此處未顯示)。因此,一種會導致執行緒0停頓之指令議會引起執行緒1及2之停頓,因為三種執行緒皆共享指令管線216。該說明性具體實施例可在管線中之分配點(分配機制210)利用一分配封鎖發信指令進行一種封鎖機制。編譯器可控制分配機制210,而使得其能分配來自執行緒1及2之指令,同時在分配處封鎖執行緒0。這使得獨立執行緒1及2能夠繼續在指令管線216中執行指令,而能在分配處封鎖執行緒0。此一執行緒效能之精細式執行緒控制能替該多重執行緒處理器節省時間及資源。
在一種具體實施例中,編譯器可藉由利用插入至管線中之新形式OR指令來執行這些分配封鎖發信指令。這些指令可在分配處將一特定執行緒上之所有指令封鎖一可程式化之週期數目,這使得在一執行緒之封鎖過程中其他執行緒能接進分配機制210。特殊形式之OR指令不會影響系統中除了封鎖分配點之執行緒以外之部份。可輕易解碼這些OR指令並組態成不同封鎖時間,以便產生該編譯器之最佳結果。在一種具體實施例中,編譯器可針對每一種不同解碼指令類型各別組態封鎖延遲。
在一種說明性具體實施例中,分配封鎖發信指令是一種Nop指令。一Nop指令是一種不會影響程式、暫存器檔案狀態、記憶體狀態、或輸入/輸出之執行的指令。在此具體實施例中,Nop指令可以一種分配封鎖之形式作業。有不同類型之Nop指令,其中某些不會封鎖執行緒且不會進行任何動作。藉由設計Nop指令使其不會影響系統,處理器100可享有不消耗任何暫存器資源即可要求封鎖之利益。在一種實施例中,分配控制封鎖214必須將執行緒0封鎖10個週期。編譯器可分配10種Nop指令(正常),這可防止指令管線216發生停頓。這也使得能夠在分所過程中分配執行緒1及2。在一種具體實施例中,編譯器可分配一修改之Nop指令,其可將執行緒0延遲10個週期。皆由僅發出一種修改之Nop指令,編譯器可經由一種較小的編碼覆蓋區而節省時間及資源。
分配機制210有一種優先性方案。相對應地,分配機制210可在執行緒0、1、及2之間進行雙態觸變,以便使其能均等地接進指令管線。在本發明中,一修改之Nop(OR)指令會導致分配機制210忽略特定執行緒以及和其他執行緒間之雙態觸變。舉例而言,用於執行緒1上的10個週期之一Nop指令會引起分配機制210在執行緒0及2進行10個週期之雙態觸變。相對應地,執行緒0及2具有獨占之接進分配機制210而執行緒1則在分配處被封鎖。
作為修改之OR指令的一種實施例,下列OR指令會引起下列分配延遲。
OR 28,28,28//封鎖8個週期OR 29,29,29//封鎖10個週期OR 30,30,30//封鎖12個週期OR 31,31,31//封鎖16個週期這些週期數目之群組為任意提出的,且僅作修改之OR指令之為一種實施例。這些指令的固定時機程式化於軟體之中。因此,當編譯器偵測到會因指令管線停頓而導致延遲之一種特定指令順序時,其會發出一修改之OR指令以處置該延遲。相對應之OR作業可精確地符合長潛時情況或近似該長潛時情況。相對應地,若偵測到額外潛時的時候,該硬體可將週期加入至OR指令。
第3圖為一流程圖300,闡明在一多重執行緒指令管線中利用此一修改之分配封鎖機制。首先,在步驟302,指令提取單元202可提取指令。之後,在步驟304,指令緩衝區204、206及208可儲存該指令。在步驟306,分配機制210能夠以優先性之順序來分配非封鎖之指令。如前所述,分配機制210可在執行緒0、1、及2之間進行雙態觸變。在步驟308,分配機制210可決定是否有一修改之OR指令。若沒有一修改之OR指令,則在在步驟306,分配機制210可繼續以優先性之順序來分配非封鎖之指令。若有一修改之OR指令,則在步驟312,分配機制210可在該"OR"指令之長度中,封鎖執行緒使其無法進行分配,並使得非封鎖之其他執行緒能分配指令。相對應地,多重執行緒上之"OR"指令可導致分配機制210同時封鎖多重執行緒。此種封鎖類型一次不限於一種執行緒。
第4圖為一流程圖400,闡明用於封鎖一多重執行緒指令管線之一執行緒的一修改之OR機制之實施例。此一實施例涉及一種浮點加指令(FAA)其後有另一種依賴FAA之浮點加指令(FAB)。這兩種指令係位於第2圖之執行緒0之上。就此種實施例而言,執行緒0需要10個週期以執行或產生一結果。因此,相依作業FAB必須在指令管線216中停頓10個週期,以等候清除該相依性。相對應地,編譯器必須知道執行緒0上其後跟著一相依浮點加指令之一種浮點加指令係對應於OR指令OR 29,29,29。編譯器將此OR指令插入至執行緒0中。此處假定分配控制單元214在出現這些修改之OR指令中之一種時能立刻封鎖分配,以便即時封鎖相依指令FAB。若此一假設非真,且在封鎖分配之前有一潛時,則編譯器可將正常Nop指令置於該修改之OR指令之後,以進行補償。
首先,在步驟402,指令發出單元202可提取FAA、修改之OR指令、及FAB。在步驟404,IBUF 0 204可儲存FAA、"OR"、及FAB。FAB跟隨OR指令,後者又經由指令提取單元202及IBUF 0 204跟隨FAA。在步驟406,執行緒0必須分配FAA。之後在步驟407,執行緒0可分配修改之OR指令。在步驟408,OR指令將執行緒0封鎖10個週期,且在步驟412,分配控制單元214可啟用分配機制210以便在10個週期中分配來自執行緒1及2之指令。在步驟414,當經過10個週期之後,分配機制210可分配來自執行緒0、1及2之指令。執行緒1及2不會收到用於執行緒0之OR指令影響。實際上,由於在執行緒0上之分配封鎖,執行緒1及2能夠較快速地執行。
當一執行緒具有一非管線式作業時,此一修改之OR指令亦具有其優點。非管線式指令通常需要較長的時間來執行,且利用相同資源之後續指令則無法管線化。相對應地,後續指令必須等待直到該非管線式指結束成執行。這會導致在指令管線216中發生顯著的停頓,且會懲罰其他執行緒。若編譯器知道會產生此一停頓,則編譯器可在利用修改之OR指令以分配非管線式指令之後,將一執行緒封鎖一特定數量的週期。因此,非管線式指令可間接地停頓指令管線216。只要其他執行緒未使用和現在正在執行之非管線式指令相同的資源,便能夠分配及發出其他執行緒。可利用此一修改之OR指令來避免指令管線中之許多長潛時情況。即便在一執行緒具有一長潛時的情況下,由一共享之發出管線中的多重執行緒發出指令,對於先前技藝是一種明顯的改進。
第5圖為一區塊圖,闡明資料處理系統500,可根據本發明之一種具體實施例將其實作成,舉例而言,一伺服器、用戶端運算裝置、手持式裝置、筆記型電腦、或其他類型之資料處理系統。資料處理系統500可實作本發明之態樣,且可以是一種對稱多處理器(SMP)系統或一非同質系統其具有連接至系統匯流排506之多種處理器100及120。或者是,系統可含有一單一處理器100。
記憶體控制器/快取508提供一介面給本機記憶體509並連接至系統匯流排506。I/O匯流排橋接器510可連接至系統匯流排506並提供一介面給I/O匯流排512。可如圖示整合記憶體控制器/快取508及I/O匯流排橋接器510。連接至I/O匯流排512之週邊元件互連(PCI)匯流排橋接器514可提供一介面給PCI本機匯流排516。可將多種數據機連接至PCI本機匯流排516。傳統PCI匯流排實作可支援四種PCI擴充槽或附加聯接器。數據機518及網路配接卡520提供通訊連接至經由附加聯接器(此處未顯示)連接至PCI本機匯流排516之其他運算裝置。額外PCI匯流排橋接器522及524提供介面給額外PCI本機匯流排526及528,而該處可支援額外數據機或網路配接卡(此處未顯示)。如此一來,資料處理系統500可允許連接至多重網路電腦。一記憶體對映圖形配接器530及硬碟532亦可直接或間接地連接至I/O匯流排512’如圖所示。
相對應地,第5圖中所示之硬體可有所不同。舉例而言,其他週邊裝置,除了所繪之硬體之外,亦可利用例如光碟機及與其相似者,或以其取代之。所繪實施例並未暗指對本發明之架構的限制。舉例而言,資料處理系統500可以是,舉例而言、一種IBM深藍系統、CMT-5系統、International.Business Machines Corporation in Armonk,New York之產品、或其他多核心處理器系統,其可執行高階交談式(AIX)作業系統、LINUX作業系統、或其他作業系統。
可以理解,本發明可能有許多形式及具體實施例。相對應地,可對本設計進行多種變形而不致悖離本發明之範圍。此處概述之能力可用於多種網路模型中。不應將此揭露解釋為偏好任何特定網路模型,而應將之視為可在該基本概念上建構這些網路模型。
參照本發明之某些較佳具體實施例描述本發明之後,應注意所揭露之具體實施例的本質為說明性而非限制性,且上述揭露中欲涵括大量之變形、修改、改變、及取代,且在某些實施例中,可運用本發明之某些特徵而未相對應地運用其他特徵。習知技藝人士可在檢閱上述較佳具體實施例後,可得知許多此種理想之變形及修改。相對應地,可以理解,應以最寬廣之方式在符合本發明之範未的情形下解釋附隨申請專利範圍。
100、120...處理器
102...記憶體控制器
104指令單元
106...執行單元
108...L2快取
110、114...L1快取
200...指令管線
202...指令提取單元
204...IBUF 0
206...IBUF 1
208...IBUF 2
210...分配機制
214...分配控制封鎖
216...指令管線
500...資料處理系統
506...系統匯流排
508...記憶體控制器/快取
509...本機記憶體
510...I/O匯流排橋接器
512...I/O匯流排
514...週邊元件互連(PCI)匯流排橋接器
516...PCI本機匯流排
518...數據機
520...網路配接卡
522、524...額外PCI匯流排橋接器
526、528...額外PCI本機匯流排
530...記憶體對映圖形配接器
532...硬碟
為了完整了解本發明及其優點,參照上文實施方式連同附隨圖式來描述本發明,圖式如下:第1圖為一區塊圖,闡明具有多重執行緒能力之一種處理器;第2圖為一區塊圖,闡明可容納多重執行緒之一種處理器中的一指令管線;第3圖為一流程圖,闡明在一多重執行緒指令管線中利用一修改之分配封鎖機制;第4圖為一流程圖,闡明用於封鎖一多重執行緒指令管線之一種執行緒的一修改之OR機制的實施例;以及第5圖為一區塊圖,闡明一資料處理系統。
402...提取FAA、OR及FAB
404...將FAA、OR及FAB儲存至指令緩衝區0
406...分配FAA
407...分配OR
408...將執行緒0封鎖10個週期
412...在10個週期中分配來自執行緒1及2之指令
414...分配來自執行緒0、1及2之指令

Claims (20)

  1. 一種用於在一多重執行緒處理器中之一管線的一分配點而封鎖一執行緒之方法,其中該管線係由多重執行緒所共享,該方法至少包含:偵測管線中之一第一執行緒的一長潛時情況;決定關於長潛時情況之一確切潛時;產生一分配封鎖發信指令;回應該分配封鎖發信指令,在該分配點將該第一執行緒封鎖一數量的週期;在封鎖過程中,分配來自指令管線之其他非封鎖之執行緒的指令;以及在封鎖之後,分配來自指令管線之所有非封鎖之執行緒的指令。
  2. 如申請專利範圍第1項所述之方法,其中該方法係運用於一電腦系統或一資料處理系統中。
  3. 如申請專利範圍第1項所述之方法,其中該長潛時情況為一非管線式作業或一相依。
  4. 如申請專利範圍第1項所述之方法,其中該決定一確切潛時之步驟更包含:決定管線中每一可能長潛時情況之潛時;以及 程式化對應於進入多重執行緒處理器之每一潛時的週期時間。
  5. 如申請專利範圍第1項所述之方法,其中該產生一分配封鎖發信指令之步驟更包含產生一分配封鎖發信指令以將該第一執行緒封鎖一數量的週期以符合該確切潛時。
  6. 如申請專利範圍第5項所述之方法,其中該多重執行緒處理器將該分配封鎖發信指令插入至該第一執行緒中。
  7. 如申請專利範圍第6項所述之方法,其中該分配封鎖發信指令為一Nop指令,其可在分配點將該第一執行緒封鎖一數量的週期以符合該確切潛時。
  8. 如申請專利範圍第6項所述之方法,其中該分配封鎖發信指令為一修改之OR指令,其可在分配點將該第一執行緒封鎖一數量的週期以符合該確切潛時。
  9. 如申請專利範圍第1項所述之方法,其中該管線為一指令管線或一執行管線。
  10. 一種用於在一多重執行緒處理器中之一管線的一分配點而封鎖一執行緒之電腦程式產品,其中該管線係由多重 執行緒所共享,且該電腦程式產品具有一媒體其上嵌入一電腦程式,其中該電腦程式至少包含:用於偵測的電腦程式碼,其係用於在該管線中之一第一執行緒上偵測一長潛時情況;用於決定的電腦程式碼,其係用於決定關於該長潛時情況之一確切潛時;用於產生的電腦程式碼,其係用於產生一分配封鎖發信指令;用於封鎖的電腦程式碼,其係用於回應該分配封鎖發信指令,在該分配點將該第一執行緒封鎖一數量的週期;用於分配來自其他非封鎖之執行緒指令的電腦程式碼,其係用於在封鎖過程中,分配來自該指令管線之其他非封鎖之執行緒的指令;以及用於分配來自所有非封鎖之執行緒指令的電腦程式碼,其係用於在封鎖之後,分配來自該指令管線之所有非封鎖之執行緒的指令。
  11. 如申請專利範圍第10項所述之電腦程式產品,其中該長潛時情況為一非管線式作業或一相依。
  12. 如申請專利範圍第10項所述之電腦程式產品,其中該決定一確切潛時更包含:用於決定各可能長潛時的電腦程式碼,其係用於決定該 管線中每一可能長潛時情況之潛時;以及用於程式化的電腦程式碼,其係用於程式化對應於進入多重執行緒處理器之每一潛時的週期時間。
  13. 如申請專利範圍第10項所述之電腦程式產品,其中該產生一分配封鎖發信指令更包含以下電腦程式碼以用於:產生一分配封鎖發信指令以將該第一執行緒封鎖一數量的週期以符合該確切潛時;以及將該分配封鎖發信指令插入至該第一執行緒中。
  14. 如申請專利範圍第13項所述之電腦程式產品,其中該分配封鎖發信指令為一Nop指令,其可在該分配點將該第一執行緒封鎖一數量的週期以符合該確切潛時。
  15. 如申請專利範圍第13項所述之電腦程式產品,其中該分配封鎖發信指令為一修改之OR指令,其可在該分配點將該第一執行緒封鎖一數量的週期以符合該確切潛時。
  16. 如申請專利範圍第10項所述之電腦程式產品,其中該管線為一指令管線或一執行管線。
  17. 一種用於在一多重執行緒處理器中之一管線的一分配點而封鎖一執行緒之設備,其中該管線係由多重執行緒所 共享,其中該設備至少包含:一分配機制,其係耦合至該管線,而該管線至少經組態可分配來自多重執行緒之指令;一編譯器,其至少經組態可:偵測該指令管線中之一第一執行緒上的一長潛時情況;決定關於該長潛時情況之潛時;產生一分配封鎖發信指令,以便在該分配點將第一執行緒封鎖符合該潛時之一數量的週期;將該分配封鎖發信指令插入至該管線中;以及一分配控制封鎖,其耦合至該分配機制,且該編譯器至少經組態可:回應該分配封鎖發信指令而封鎖該第一執行緒上之指令的分配;以及在符合該潛時之該數量的週期之後,啟動分配所有非封鎖之執行緒上的指令。
  18. 如申請專利範圍第17項所述之設備,其中該多重執行緒處理器位於一電腦系統或一資料處理系統中。
  19. 如申請專利範圍第17項所述之設備,其中該分配封鎖發信指令為一Nop指令,其可將該第一執行緒封鎖符合該潛時之該數量的週期。
  20. 如申請專利範圍第17項所述之設備,其中該分配封鎖發信指令為一修改之OR指令,其可將該第一執行緒封鎖符合該潛時之該數量的週期。
TW095119465A 2005-06-16 2006-06-01 用於在一多重執行緒處理器中之一管線的一分配點而封鎖一執行緒之方法、電腦程式產品及設備 TWI390445B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/154,158 US7313673B2 (en) 2005-06-16 2005-06-16 Fine grained multi-thread dispatch block mechanism

Publications (2)

Publication Number Publication Date
TW200709053A TW200709053A (en) 2007-03-01
TWI390445B true TWI390445B (zh) 2013-03-21

Family

ID=37519386

Family Applications (1)

Application Number Title Priority Date Filing Date
TW095119465A TWI390445B (zh) 2005-06-16 2006-06-01 用於在一多重執行緒處理器中之一管線的一分配點而封鎖一執行緒之方法、電腦程式產品及設備

Country Status (5)

Country Link
US (1) US7313673B2 (zh)
JP (1) JP5047542B2 (zh)
KR (1) KR100951092B1 (zh)
CN (1) CN100462913C (zh)
TW (1) TWI390445B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI742032B (zh) * 2016-02-09 2021-10-11 美商英特爾股份有限公司 用於使用者等級執行緒暫止的方法、設備及指令

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710384B2 (en) 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
JP2009110209A (ja) * 2007-10-29 2009-05-21 Panasonic Corp 演算処理装置、プロセッサ、プログラム変換装置およびプログラム
US8260990B2 (en) * 2007-11-19 2012-09-04 Qualcomm Incorporated Selective preclusion of a bus access request
US8701111B2 (en) * 2008-07-09 2014-04-15 International Business Machines Corporation Lock windows for reducing contention
US7941644B2 (en) * 2008-10-16 2011-05-10 International Business Machines Corporation Simultaneous multi-thread instructions issue to execution units while substitute injecting sequence of instructions for long latency sequencer instruction via multiplexer
US9310875B2 (en) 2011-12-22 2016-04-12 Intel Corporation Instruction that specifies an application thread performance state
CN103246552B (zh) * 2012-02-14 2018-03-09 腾讯科技(深圳)有限公司 防止线程出现阻塞的方法和装置
EP2831721B1 (en) 2012-03-30 2020-08-26 Intel Corporation Context switching mechanism for a processing core having a general purpose cpu core and a tightly coupled accelerator
US10430190B2 (en) * 2012-06-07 2019-10-01 Micron Technology, Inc. Systems and methods for selectively controlling multithreaded execution of executable code segments
US9021493B2 (en) 2012-09-14 2015-04-28 International Business Machines Corporation Management of resources within a computing environment
CN103345422B (zh) * 2013-07-02 2019-01-29 厦门雅迅网络股份有限公司 一种基于Linux的多线程硬实时控制方法
JP6225554B2 (ja) 2013-08-14 2017-11-08 富士通株式会社 演算処理装置及び演算処理装置の制御方法
WO2015035336A1 (en) 2013-09-06 2015-03-12 Futurewei Technologies, Inc. Method and apparatus for asynchronous processor pipeline and bypass passing
CN104301253A (zh) * 2014-10-21 2015-01-21 合肥星服信息科技有限责任公司 线程池和共享池组合优化大负荷通讯服务器
US10185564B2 (en) 2016-04-28 2019-01-22 Oracle International Corporation Method for managing software threads dependent on condition variables
CN109213529B (zh) * 2017-07-07 2021-09-28 龙芯中科技术股份有限公司 流水线处理器调度指令的方法、装置及流水线处理器
CN111552574A (zh) * 2019-09-25 2020-08-18 华为技术有限公司 一种多线程同步方法及电子设备
CN110769046B (zh) * 2019-10-17 2022-11-18 新华三信息安全技术有限公司 一种报文获取方法、装置、电子设备及机器可读存储介质
US11372647B2 (en) * 2019-12-05 2022-06-28 Marvell Asia Pte, Ltd. Pipelines for secure multithread execution
GB2596872B (en) * 2020-07-10 2022-12-14 Graphcore Ltd Handling injected instructions in a processor
CN116521351B (zh) * 2023-07-03 2023-09-05 建信金融科技有限责任公司 多线程任务调度方法、装置、存储介质及处理器

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0644089A (ja) * 1992-05-18 1994-02-18 Matsushita Electric Ind Co Ltd 情報処理装置
US5584031A (en) * 1993-11-09 1996-12-10 Motorola Inc. System and method for executing a low power delay instruction
US6341347B1 (en) 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
US6694425B1 (en) * 2000-05-04 2004-02-17 International Business Machines Corporation Selective flush of shared and other pipeline stages in a multithread processor
US7363474B2 (en) * 2001-12-31 2008-04-22 Intel Corporation Method and apparatus for suspending execution of a thread until a specified memory access occurs
US20040111594A1 (en) * 2002-12-05 2004-06-10 International Business Machines Corporation Multithreading recycle and dispatch mechanism
US7657893B2 (en) * 2003-04-23 2010-02-02 International Business Machines Corporation Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (SMT) processor
US20040226011A1 (en) * 2003-05-08 2004-11-11 International Business Machines Corporation Multi-threaded microprocessor with queue flushing
US7373536B2 (en) * 2004-08-04 2008-05-13 Kabushiki Kaisha Toshiba Fine granularity halt instruction
US7266674B2 (en) * 2005-02-24 2007-09-04 Microsoft Corporation Programmable delayed dispatch in a multi-threaded pipeline

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI742032B (zh) * 2016-02-09 2021-10-11 美商英特爾股份有限公司 用於使用者等級執行緒暫止的方法、設備及指令
US12020031B2 (en) 2016-02-09 2024-06-25 Intel Corporation Methods, apparatus, and instructions for user-level thread suspension

Also Published As

Publication number Publication date
JP2006351008A (ja) 2006-12-28
US20060288192A1 (en) 2006-12-21
CN1881176A (zh) 2006-12-20
CN100462913C (zh) 2009-02-18
KR100951092B1 (ko) 2010-04-07
US7313673B2 (en) 2007-12-25
JP5047542B2 (ja) 2012-10-10
TW200709053A (en) 2007-03-01
KR20060131624A (ko) 2006-12-20

Similar Documents

Publication Publication Date Title
TWI390445B (zh) 用於在一多重執行緒處理器中之一管線的一分配點而封鎖一執行緒之方法、電腦程式產品及設備
US7451295B2 (en) Early data return indication mechanism for data cache to detect readiness of data via an early data ready indication by scheduling, rescheduling, and replaying of requests in request queues
US6728866B1 (en) Partitioned issue queue and allocation strategy
TW413787B (en) An apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor
JP5722396B2 (ja) 明示的サブルーチンコールの分岐予測動作をエミュレートするための方法および装置
US20090260013A1 (en) Computer Processors With Plural, Pipelined Hardware Threads Of Execution
JP6450705B2 (ja) 永続コミットプロセッサ、方法、システムおよび命令
US8635621B2 (en) Method and apparatus to implement software to hardware thread priority
CN106170768B (zh) 在计算机中分派多个线程
JP2008530714A5 (zh)
US11132201B2 (en) System, apparatus and method for dynamic pipeline stage control of data path dominant circuitry of an integrated circuit
CN114168202B (zh) 指令调度方法、指令调度装置、处理器及存储介质
CA1286782C (en) Cache storage priority
CN105468336A (zh) 用以改善在处理器中重新执行加载的装置与方法
KR101820221B1 (ko) 프로그래머블 로드 리플레이 억제 메커니즘
US20070162723A1 (en) Technique for reducing traffic in an instruction fetch unit of a chip multiprocessor
EP3032405B1 (en) Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor
CN113568663A (zh) 代码预取指令
KR101819315B1 (ko) 비순차 프로세서에서 작성 결합 메모리 공간 접근에 따라 로드 리플레이를 억제하기 위한 장치 및 방법
US6807628B2 (en) System and method for supporting precise exceptions in a data processor having a clustered architecture
US7124277B2 (en) Method and apparatus for a trace cache trace-end predictor
KR20160086765A (ko) 비순차 프로세서에서 캐시 불가­의존 로드 리플레이를 억제하는 메커니즘
KR101819314B1 (ko) 비순차 프로세서에서 오프­다이 제어 부재 접근에 따라 로드 리플레이를 억제하는 장치
KR101837816B1 (ko) 비순차 프로세서에서 i/o­의존 로드 리플레이를 불가능하게 하는 메커니즘
JP2001084143A (ja) 情報処理装置

Legal Events

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