在多核心處理器中并行功能的高效率硬件分派及相關的處理器系統、方法及計算機可讀媒體的制作方法
【專利說明】在多核心處理器中并行功能的高效率硬件分派及相關的處理器系統、方法及計算機可讀媒體
[0001 ] 優先權請求
[0002]本申請案請求于2013年11月I日申請且題為“EFFICIENT HARDWARE DISPATCHINGOF ⑶NCURRENT FUNCT1NS IN INSTRUCT1N PROCESSING CIRCUITS,AND RELATEDPROCESSOR SYSTEMS,METHODS,AND COMPUTER-READABLE MEDIA” 的美國臨時專利申請案第61/898,745號的優先權,所述美國臨時專利申請案以引用的方式全部并入本文中。
[0003]本申請案還請求于2014年3月25日申請且題為“EFFICIENT HARDWAREDISPATCHING OF ⑶NCURRENT FUNCT1NS IN MULTI⑶RE PROCESSORS,AND RELATEDPROCESSOR SYSTEMS,METHODS,AND COMPUTER-READABLE MEDIA” 的美國專利申請案第 14/224,619號的優先權,所述美國專利申請案以引用的方式全部并入本文中。
技術領域
[0004]本發明的技術涉及在提供多個處理器核心和/或多個硬件線程的基于多核心處理器的系統中并行功能的處理。
【背景技術】
[0005]在當代數字計算機中發現的例如中央處理單元(CPU)的多核心處理器可包含多個處理器核心或獨立處理單元,用于讀取及執行程序指令。作為非限制性實例,每一處理器核心可包含一或多個硬件線程且也可包含可由硬件線程訪問的額外資源,例如,高速緩沖存儲器、浮點單元(FPU)和/或共享存儲器。硬件線程中的每一者包含能夠代管軟件線程及其上下文的私用實體寄存器的集合(例如,通用寄存器(GPR)、程序計數器及類似者)。多核心處理器可將一或多個硬件線程視為邏輯處理器核心,且因此可使多核心處理器能夠并行執行多個程序指令。以此方式,可改善總指令吞吐量及程序執行速度。
[0006]主流軟件行業在發展能夠充分開發提供多個硬件線程的現代多核心處理器的能力的并行軟件過程中具有長期面臨的挑戰。所關注的一個發展領域聚焦于利用由功能編程語言提供的固有平行性。功能編程語言建置于“純功能”的概念上。純功能為參考透明(即,其可在程序中用其值替換,而不改變程序的效果)且無副作用(即,其不修改外部狀態或與其外部的任何功能具有互動)的計算單元。不共享數據相依性的兩個或兩個以上純功能可由CPU以任何次序或并行地執行,且將產生相同結果。因此,所述功能可安全地分派至單獨硬件線程,以用于并行執行。
[0007]用于并行執行的分派功能引起許多問題。為了最大化可用硬件線程的利用,功能可異步分派至隊列中以用于評估。然而,此可能需要可由多個硬件線程訪問的共享數據區域或數據結構。結果,處置競爭問題變得很必要,所述競爭問題的數目可隨著硬件線程的數目增加而指數式地增加。因為功能可為相對小的計算單元,所以由競爭管理招致的管理額外開銷很快可超過功能的并行執行的所實現益處。
[0008]因此,需要對在多個硬件線程的上下文中功能的高效并行分派提供支持,同時最小化競爭管理額外開銷。
【發明內容】
[0009]本發明的實施例提供于多核心處理器中并行功能的高效率硬件分派及相關的處理器系統、方法及計算機可讀媒體。在一個實施例中,提供一種提供并行功能的高效率硬件分派的多核心處理器。多核心處理器包含包括多個硬件線程的多個處理核心。多核心處理器進一步包括可通信地耦合至多個處理核心的硬件先進先出(FIFO)隊列。多核心處理器也包括指令處理電路。指令處理電路經配置以在多個硬件線程中的第一硬件線程中檢測指示請求程控的并行轉移的操作的第一指令。指令處理電路經進一步配置以將對程控的并行轉移的請求排入硬件FIFO隊列中。指令處理電路也經配置以在多個硬件線程中的第二硬件線程中檢測指示分派硬件FIFO隊列中的對程控的并行轉移的請求的操作的第二指令。指令處理電路經另外配置以將對程控的并行轉移的請求自硬件FIFO隊列移出。指令處理電路也經配置以在第二硬件線程中執行程控的并行轉移。
[0010]在另一實施例中,提供一種提供并行功能的高效率硬件分派的多核心處理器。多核心處理器包含硬件FIFO隊列裝置,及包括多個硬件線程且可通信地耦合至硬件FIFO隊列裝置的多個處理核心。多核心處理器進一步包含指令處理電路裝置,所述指令處理電路裝置包括用于在多個硬件線程中的第一硬件線程中檢測指示請求程控的并行轉移的操作的第一指令的裝置。指令處理電路裝置也包括用于將對程控的并行轉移的請求排入硬件FIFO隊列裝置中的裝置。指令處理電路裝置進一步包括用于在多個硬件線程中的第二硬件線程中檢測指示分派硬件FIFO隊列裝置中的對程控的并行轉移的請求的操作的第二指令的裝置。指令處理電路裝置另外包括用于將對程控的并行轉移的請求自硬件FIFO隊列裝置移出的裝置。指令處理電路裝置也包括用于在第二硬件線程中執行程控的并行轉移的裝置。
[0011]在另一實施例中,提供一種用于并行功能的高效率硬件分派的方法。所述方法包括在多核心處理器的第一硬件線程中檢測指示請求程控的并行轉移的操作的第一指令。所述方法進一步包括將對程控的并行轉移的請求排入硬件FIFO隊列中。所述方法也包括在多核心處理器的第二硬件線程中檢測指示分派硬件FIFO隊列中的對程控的并行轉移的請求的操作的第二指令。所述方法另外包括將對程控的并行轉移的請求自硬件FIFO隊列移出。所述方法進一步包括在第二硬件線程中執行程控的并行轉移。
[0012]在另一實施例中,提供一種非暫時性計算機可讀媒體,其具有存儲于其上的計算機可執行指令以使處理器實施用于并行功能的高效率硬件分派的方法。由計算機可執行指令實施的所述方法包括在多核心處理器的第一硬件線程中檢測指示請求程控的并行轉移的操作的第一指令。由計算機可執行指令實施的所述方法進一步包括將對程控的并行轉移的請求排入硬件FIFO隊列中。由計算機可執行指令實施的所述方法也包括在多核心處理器的第二硬件線程中檢測指示分派硬件FIFO隊列中的對程控的并行轉移的請求的操作的第二指令。由計算機可執行指令實施的所述方法另外包括將對程控的并行轉移的請求自硬件FIFO隊列移出。由計算機可執行指令實施的所述方法進一步包括在第二硬件線程中執行程控的并行轉移。
【附圖說明】
[0013]圖1為說明用于提供并行功能的高效率硬件分派的多核心處理器的框圖,所述處理器包含指令處理電路;
[0014]圖2為說明由圖1的指令處理電路使用硬件先進先出(FIFO)隊列進行的示范性指令流的處理流的圖;
[0015]圖3為說明用于高效率地分派并行功能的圖1的指令處理電路的示范性操作的流程圖;
[0016]圖4為說明用于請求程控的并行轉移的繼續(CONTINUE)指令的要素以及所得的對程控的并行轉移的請求的要素的圖;
[0017]圖5為更詳細地說明用于將對程控的并行轉移的請求排入隊列的圖1的指令處理電路的示范性操作的流程圖;
[0018]圖6為更詳細地說明用于將對程控的并行轉移的請求移出隊列的圖1的指令處理電路的示范性操作的流程圖;
[0019]圖7為更詳細地說明由圖1的指令處理電路進行以提供并行功能的高效率硬件分派的示范性指令流的處理流的圖,所述指令處理電路包含用于將程控返回至原始硬件線程的機構;及
[0020]圖8為可包含圖1的多核心處理器及指令處理電路的示范性基于處理器的系統的框圖。
【具體實施方式】
[0021]現參看諸圖,描述本發明的若干示范性實施例。詞語“示范性”在本文中用以意謂“充當一實例、個例或例子”。不必將本文中描述為“示范性”的任何實施例解釋為比其它實施例優選或有利。
[0022]本發明的實施例提供在多核心處理器中并行功能的高效率硬件分派及相關的處理器系統、方法及計算機可讀媒體。在一個實施例中,提供一種提供并行功能的高效率硬件分派的多核心處理器。多核心處理器包含包括多個硬件線程的多個處理核心。多核心處理器進一步包括可通信地耦合至多個處理核心的硬件先進先出(FIFO)隊列。多核心處理器也包括指令處理電路。指令處理電路經配置以在多個硬件線程中的第一硬件線程中檢測指示請求程控的并行轉移的操作的第一指令。指令處理電路經進一步配置以將對程控的并行轉移的請求排入硬件FIFO隊列中。指令處理電路也經配置以在多個硬件線程中的第二硬件線程中檢測指示分派硬件FIFO隊列中的對程控的并行轉移的請求的操作的第二指