TW201528133A - 於多核心處理器中並行功能之高效率硬體分派及相關之處理器系統、方法及電腦可讀媒體 - Google Patents

於多核心處理器中並行功能之高效率硬體分派及相關之處理器系統、方法及電腦可讀媒體 Download PDF

Info

Publication number
TW201528133A
TW201528133A TW103135562A TW103135562A TW201528133A TW 201528133 A TW201528133 A TW 201528133A TW 103135562 A TW103135562 A TW 103135562A TW 103135562 A TW103135562 A TW 103135562A TW 201528133 A TW201528133 A TW 201528133A
Authority
TW
Taiwan
Prior art keywords
hardware
request
program control
parallel transfer
instruction
Prior art date
Application number
TW103135562A
Other languages
English (en)
Other versions
TWI633489B (zh
Inventor
Michael William Paddon
Castro Lopo Erik Asmussen De
Matthew Christian Duggan
Kento Tarui
Craig Matthew Brown
Original Assignee
Qualcomm 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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of TW201528133A publication Critical patent/TW201528133A/zh
Application granted granted Critical
Publication of TWI633489B publication Critical patent/TWI633489B/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/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/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/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

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)
  • Executing Machine-Instructions (AREA)

Abstract

本發明之實施例提供於多核心處理器中並行功能之高效率硬體分派及相關之處理器系統、方法及電腦可讀媒體。在一個實施例中,在一多核心處理器之一第一硬體執行緒中偵測指示請求程式控制之一並行轉移之一操作的一第一指令。將對程式控制之該並行轉移的一請求排入一硬體先進先出(FIFO)佇列中。在該多核心處理器之一第二硬體執行緒中偵測指示分派該硬體FIFO佇列中之對程式控制之該並行轉移的該請求之一操作的一第二指令。將對程式控制之該並行轉移的該請求自該硬體FIFO佇列移出,且在該第二硬體執行緒中執行程式控制之該並行轉移。以此方式,功能可在多個硬體執行緒之情況下高效地且並行地分派,同時最小化競爭管理費用。

Description

於多核心處理器中並行功能之高效率硬體分派及相關之處理器系統、方法及電腦可讀媒體 [優先權主張]
本申請案主張於2013年11月1日申請且題為「EFFICIENT HARDWARE DISPATCHING OF CONCURRENT FUNCTIONS IN INSTRUCTION PROCESSING CIRCUITS,AND RELATED PROCESSOR SYSTEMS,METHODS,AND COMPUTER-READABLE MEDIA」之美國臨時專利申請案第61/898,745號之優先權,該美國臨時專利申請案被以引用之方式全部併入本文中。
本發明之技術係關於於提供多個處理器核心及/或多個硬體執行緒之基於多核心處理器之系統中並行功能之處理。
在當代數位電腦中發現之諸如中央處理單元(CPU)之多核心處理器可包括多個處理器核心或獨立處理單元,用於讀取及執行程式指令。作為非限制性實例,每一處理器核心可包括一或多個硬體執行緒且亦可包括可由硬體執行緒存取之額外資源,諸如,快取記憶體、浮點單元(FPU)及/或共用記憶體。硬體執行緒中之每一者包括能夠代管 軟體執行緒及其內容脈絡之私用實體暫存器之集合(例如,通用暫存器(GPR)、程式計數器及類似者)。多核心處理器可將一或多個硬體執行緒視為邏輯處理器核心,且因此可使多核心處理器能夠並行執行多個程式指令。以此方式,可改良總指令輸送量及程式執行速度。
主流軟體行業在發展能夠充分開發提供多個硬體執行緒之現代多核心處理器之能力的並行軟體過程中具有長期面臨之挑戰。所關注之一個發展領域聚焦於利用由功能程式設計語言提供之固有平行性。功能程式設計語言建置於「純功能」之概念上。純功能為參考透明(亦即,其可在程式中用其值替換,而不改變程式之效應)且無副作用(亦即,其不修改外部狀態或與其外部之任何功能具有互動)之計算單元。不共用資料相依性之兩個或兩個以上純功能可由CPU以任何次序或並行地執行,且將產生相同結果。因此,此等功能可安全地分派至單獨硬體執行緒,以用於並行執行。
用於並行執行之分派功能引起許多問題。為了最大化可用硬體執行緒之利用,功能可非同步分派至佇列中以用於評估。然而,此可能需要可由多個硬體執行緒存取之共用資料區域或資料結構。結果,處置競爭問題變得很必要,該等競爭問題之數目可隨著硬體執行緒之數目增加而指數式地增加。因為功能可為相對小的計算單元,故由競爭管理招致之管理費用很快可超過功能之並行執行的所實現益處。
因此,需要對在多個硬體執行緒之內容脈絡中功能之高效並行分派提供支援,同時最小化競爭管理費用。
本發明之實施例提供於多核心處理器中並行功能之高效率硬體分派及相關之處理器系統、方法及電腦可讀媒體。在一個實施例中,提供一種提供並行功能之高效率硬體分派之多核心處理器。多核心處理器包括包含複數個硬體執行緒之複數個處理核心。多核心處理器進 一步包含可通信地耦接至複數個處理核心之硬體先進先出(FIFO)佇列。多核心處理器亦包含指令處理電路。指令處理電路經組態以在複數個硬體執行緒中之第一硬體執行緒中偵測指示請求程式控制之並行轉移之操作的第一指令。指令處理電路經進一步組態以將對程式控制之並行轉移的請求排入硬體FIFO佇列中。指令處理電路亦經組態以在複數個硬體執行緒中之第二硬體執行緒中偵測指示分派硬體FIFO佇列中之對程式控制之並行轉移的請求之操作的第二指令。指令處理電路經另外組態以將對程式控制之並行轉移的請求自硬體FIFO佇列移出。指令處理電路亦經組態以在第二硬體執行緒中執行程式控制之並行轉移。
在另一實施例中,提供一種提供並行功能之高效率硬體分派之多核心處理器。多核心處理器包括硬體FIFO佇列構件,及包含複數個硬體執行緒且可通信地耦接至硬體FIFO佇列構件之複數個處理核心。多核心處理器進一步包括指令處理電路構件,該指令處理電路構件包含用於在複數個硬體執行緒中之第一硬體執行緒中偵測指示請求程式控制之並行轉移之操作的第一指令之構件。指令處理電路構件亦包含用於將對程式控制之並行轉移的請求排入硬體FIFO佇列構件中之構件。指令處理電路構件進一步包含用於在複數個硬體執行緒中之第二硬體執行緒中偵測指示分派硬體FIFO佇列構件中之對程式控制之並行轉移的請求之操作的第二指令之構件。指令處理電路構件另外包含用於將對程式控制之並行轉移的請求自硬體FIFO佇列構件移出之構件。指令處理電路構件亦包含用於在第二硬體執行緒中執行程式控制之並行轉移之構件。
在另一實施例中,提供一種用於並行功能之高效率硬體分派之方法。該方法包含在多核心處理器之第一硬體執行緒中偵測指示請求程式控制之並行轉移之操作的第一指令。該方法進一步包含將對程式 控制之並行轉移的請求排入硬體FIFO佇列中。該方法亦包含在多核心處理器之第二硬體執行緒中偵測指示分派硬體FIFO佇列中之對程式控制之並行轉移的請求之操作的第二指令。該方法另外包含將對程式控制之並行轉移的請求自硬體FIFO佇列移出。該方法進一步包含在第二硬體執行緒中執行程式控制之並行轉移。
在另一實施例中,提供一種非暫時性電腦可讀媒體,其具有儲存於其上之電腦可執行指令以使處理器實施用於並行功能之高效率硬體分派之方法。由電腦可執行指令實施之該方法包含在多核心處理器之第一硬體執行緒中偵測指示請求程式控制之並行轉移之操作的第一指令。由電腦可執行指令實施之該方法進一步包含將對程式控制之並行轉移的請求排入硬體FIFO佇列中。由電腦可執行指令實施之該方法亦包含在多核心處理器之第二硬體執行緒中偵測指示分派硬體FIFO佇列中之對程式控制之並行轉移的請求之操作的第二指令。由電腦可執行指令實施之該方法另外包含將對程式控制之並行轉移的請求自硬體FIFO佇列移出。由電腦可執行指令實施之該方法進一步包含在第二硬體執行緒中執行程式控制之並行轉移。
10‧‧‧多核心處理器
12‧‧‧指令處理電路
14‧‧‧處理器外組件
16‧‧‧系統匯流排
18(0)‧‧‧處理器核心
18(Z)‧‧‧處理器核心
20(0)‧‧‧硬體執行緒
20(X)‧‧‧硬體執行緒
22(0)‧‧‧硬體執行緒
22(Y)‧‧‧硬體執行緒
24‧‧‧暫存器
26‧‧‧暫存器
28‧‧‧暫存器
30‧‧‧暫存器
32‧‧‧共用記憶體
34‧‧‧硬體FIFO佇列
36‧‧‧指令串流
38‧‧‧指令
40‧‧‧指令
42‧‧‧指令
44‧‧‧指令
46‧‧‧指令串流
48‧‧‧指令
50‧‧‧指令
52‧‧‧指令
54‧‧‧指令
56‧‧‧請求
68‧‧‧目標位址
70‧‧‧暫存器遮罩
72‧‧‧可選識別符
74‧‧‧目標位址
76‧‧‧暫存器標識
78‧‧‧暫存器內容
112‧‧‧指令串流
114‧‧‧指令
116‧‧‧指令
118‧‧‧指令
120‧‧‧指令
122‧‧‧指令
124‧‧‧指令
126‧‧‧指令串流
128‧‧‧指令
130‧‧‧指令
132‧‧‧指令
134‧‧‧指令
136‧‧‧請求
138‧‧‧請求
140‧‧‧基於處理器之系統
142‧‧‧快取記憶體
144‧‧‧系統匯流排
146‧‧‧記憶體控制器
148‧‧‧記憶體系統
150‧‧‧輸入裝置
152‧‧‧輸出裝置
154‧‧‧網路介面裝置
156‧‧‧顯示控制器
158‧‧‧網路
160(0)‧‧‧記憶體單元
160(N)‧‧‧記憶體單元
162‧‧‧顯示器
164‧‧‧視頻處理器
圖1為說明用於提供並行功能之高效率硬體分派之多核心處理器之方塊圖,該處理器包括指令處理電路;圖2為說明由圖1之指令處理電路使用硬體先進先出(FIFO)佇列進行之例示性指令串流的處理流之圖;圖3為說明用於高效率地分派並行功能的圖1之指令處理電路之例示性操作之流程圖;圖4為說明用於請求程式控制之並行轉移的繼續(CONTINUE)指令之要素以及所得的對程式控制之並行轉移的請求之要素之圖;圖5為更詳細地說明用於將對程式控制之並行轉移之請求排入佇 列的圖1之指令處理電路之例示性操作之流程圖;圖6為更詳細地說明用於將對程式控制之並行轉移之請求移出佇列的圖1之指令處理電路之例示性操作之流程圖;圖7為更詳細地說明由圖1之指令處理電路進行以提供並行功能之高效率硬體分派之例示性指令串流的處理流之圖,該指令處理電路包括用於將程式控制返回至原始硬體執行緒之機構;及圖8為可包括圖1之多核心處理器及指令處理電路的一例示性基於處理器之系統之方塊圖。
現參看諸圖,描述本發明之若干例示性實施例。詞語「例示性」在本文中用以意謂「充當一實例、個例或例子」。不必將本文中描述為「例示性」之任何實施例解釋為比其他實施例較佳或有利。
本發明之實施例提供於多核心處理器中並行功能之高效率硬體分派及相關之處理器系統、方法及電腦可讀媒體。在一個實施例中,提供一種提供並行功能之高效率硬體分派之多核心處理器。多核心處理器包括包含複數個硬體執行緒之複數個處理核心。多核心處理器進一步包含可通信地耦接至複數個處理核心之硬體先進先出(FIFO)佇列。多核心處理器亦包含一指令處理電路。指令處理電路經組態以在複數個硬體執行緒中之第一硬體執行緒中偵測指示請求程式控制之並行轉移之操作的第一指令。指令處理電路經進一步組態以將對程式控制之並行轉移的請求排入硬體FIFO佇列中。指令處理電路亦經組態以在複數個硬體執行緒中之第二硬體執行緒中偵測指示分派硬體FIFO佇列中之對程式控制之並行轉移的請求之操作的第二指令。指令處理電路經另外組態以將對程式控制之並行轉移的請求自硬體FIFO佇列移出。指令處理電路亦經組態以在第二硬體執行緒執行程式控制之並行轉移。
就此而言,圖1為用於並行功能之高效率硬體分派的一例示性多核心處理器10之方塊圖。詳言之,多核心處理器10提供用於將對程式控制之並行轉移的請求排入佇列及分派該等請求之一指令處理電路12。多核心處理器10包含各元件當中的任何已知數位邏輯元件、半導體電路、處理核心及/或記憶體結構中之一或多者或其組合。本文中所描述之實施例並不限於元件之任何特定排列,且所揭示之技術可容易地擴展至半導體晶粒或封裝上之各種結構及佈局。多核心處理器10可經由系統匯流排16可通信地耦接至一或多個處理器外組件14(例如,作為非限制性實例,記憶體、輸入裝置、輸出裝置、網路介面裝置及/或顯示控制器)。
圖1之多核心處理器10包括複數個處理器核心18(0)至18(Z)。處理器核心18中之每一者為可獨立於其他處理器核心18及與其他處理器核心18並行地讀取及處理電腦程式指令(未圖示)之處理單元。如圖1中所見,多核心處理器10包括兩個處理器核心18(0)及18(Z)。然而,應理解,一些實施例可包括比圖1中所說明之兩個處理器核心18(0)及18(Z)多之處理器核心18。
多核心處理器10之處理器核心18(0)及18(Z)分別包括硬體執行緒20(0)至20(X)及硬體執行緒22(0)至22(Y)。硬體執行緒20、22中之每一者獨立執行,且多核心處理器10及/或正由多核心處理器10執行之作業系統或其他軟體(未圖示)可將該等硬體執行緒中之每一者視為邏輯核心。以此方式,處理器核心18及硬體執行緒20、22可提供准許程式指令之並行多執行緒執行之超純量架構。在一些實施例中,處理器核心18可包括比圖1中所展示少或多之硬體執行緒20、22。硬體執行緒20、22中之每一者可包括用於儲存程式執行之當前狀態之專用資源,諸如,通用暫存器(GPR)及/或控制暫存器。在圖1之實例中,硬體執行緒20(0)及20(X)分別包括暫存器24及26,而硬體執行緒22(0)及 22(Y)分別包括暫存器28及30。在一些實施例中,硬體執行緒20、22亦可與正在同一處理器核心18上執行之其他硬體執行緒20、22共用其他儲存或執行資源。
硬體執行緒20、22之獨立執行能力使多核心處理器10能夠將不共用資料相依性之功能(亦即,純功能)分派至硬體執行緒20、22以用於並行執行。一種用於最大化硬體執行緒20、22之利用的方法為非同步地將功能分派至佇列中以用於評估。然而,此方法可能需要共用資料區域或資料結構,諸如,圖1之共用記憶體32。由多個硬體執行緒20、22使用共用記憶體32可導致競爭問題,該等競爭問題之數目可隨著硬體執行緒20、22之數目增加而指數式地增加。結果,由處置此等競爭問題所引發的管理費用可超過由硬體執行緒20、22進行之功能之並行執行的所實現益處。
就此而言,圖1之指令處理電路12由多核心處理器10提供以用於並行功能之高效率硬體分派。指令處理電路12可包括處理器核心18,且進一步包括硬體FIFO佇列34。如本文中所使用,「硬體FIFO佇列」包括任何FIFO裝置,針對該FIFO裝置,競爭管理在硬體中及/或在微碼中加以處置。在一些實施例中,硬體FIFO佇列34可完全在晶粒上實施,及/或使用由專用暫存器(未圖示)管理之記憶體實施。
指令處理電路12定義用於將來自硬體執行緒20、22中之一者的對程式控制之並行轉移的請求排入硬體FIFO佇列34中之機器指令(未圖示)。指令處理電路12進一步定義用於將請求自硬體FIFO佇列34移出及在硬體執行緒20、22中之當前正執行之一者中執行程式控制之所請求轉移之機器指令(未圖示)。藉由提供用於將對程式控制之並行轉移的請求排入硬體FIFO佇列34及將該等請求自硬體FIFO佇列34移出之機器指令,指令處理電路12可實現多個硬體執行緒20、22在多核心處理環境中之更高效利用。
根據本文中所描述之一些實施例,單一硬體FIFO佇列34可經提供以用於將對程式控制之並行轉移的請求排入佇列以供在硬體執行緒20、22中之任一者中執行。一些實施例可提供多個硬體FIFO佇列34,其中一個硬體FIFO佇列34專用於硬體執行緒20、22中之每一者。在此等實施例中,可將對硬體執行緒20、22中之指定者中之功能之並行執行的請求排入對應於硬體執行緒20、22中之指定者的硬體FIFO佇列34中。在一些實施例中,額外硬體FIFO佇列亦可經提供以用於將對程式控制之並行轉移的請求排入佇列,該等請求不針對硬體執行緒20、22中之特定者,及/或可在硬體執行緒20、22中之任一者中執行。
為了說明由圖1之指令處理電路12使用硬體FIFO佇列34進行之例示性指令串流之處理流,提供圖2。圖2展示指令串流36,其包含正在由圖1之硬體執行緒20(0)執行之一系列指令38、40、42及44。類似地,指令串流46包括正由硬體執行緒22(0)執行之一系列指令48、50、52及54。應理解,儘管在下文依序描述指令串流36及46之處理流,但指令串流36及46正由各別硬體執行緒20(0)及22(0)並行地執行。將進一步理解,指令串流36及46中之每一者可在硬體執行緒20、22中之任一者中執行。
如圖2中所見,指令串流36中之指令之執行自指令38進行至指令40,且接著進行至指令42。在此實例中,指令38及40分別標明為Instr0及Instr1,且可表示可由多核心處理器10執行之任何指令。執行接著繼續至指令42,指令42為包括參數<addr>之排入佇列(Enqueue)指令。排入佇列指令42指示向由參數<addr>指定之位址請求程式控制之並行轉移的操作。換言之,排入佇列指令42請求使其第一指令儲存於由參數<addr>指定之位址處之功能在硬體執行緒20(0)中之處理繼續時並行地執行。
回應於偵測排入佇列指令42,指令處理電路12將請求56排入硬體FIFO佇列34中。請求56包括由排入佇列指令42之參數<addr>指定之位址。在將請求56排入佇列後,硬體執行緒20(0)中之指令串流36之處理繼續在排入佇列指令42之後的下一指令44(標明為Instr2)。
硬體執行緒22(0)之指令串流46中之指令執行與上文所描述的硬體執行緒20(0)中之指令串流36之程式流並行地自指令48進行至指令50,且接著進行至指令52。指令48及50分別標明為Instr3及Instr4,且可表示可由多核心處理器10執行之任何指令。指令52為使硬體FIFO佇列34中之最舊請求(在此個例中為請求56)自硬體FIFO佇列34分派之移出佇列(Dequeue)指令。移出佇列指令52亦使硬體執行緒22(0)中之程式控制轉移至由請求56指定之位址<addr>。如圖2中所見,移出佇列指令52因此將硬體執行緒22(0)中之程式控制轉移至位址<addr>處之指令54(標明為Instr5)。硬體執行緒22(0)中之指令串流46之處理接著繼續在指令54之後的下一指令(未圖示)。以此方式,以指令54開始之功能可與硬體執行緒20(0)中之指令串流36之執行並行地在硬體執行緒22(0)中執行。
圖3為說明用於高效率地分派並行功能的圖1之指令處理電路12之例示性操作之流程圖。為了清晰起見,在描述圖3時參考圖1及2之元件。圖3中之處理開始於指令處理電路12在多核心處理器10之第一硬體執行緒20中偵測指示請求程式控制之並行轉移之操作的第一指令42(區塊58)。在一些實施例中,第一指令42可為由多核心處理器10提供之繼續(CONTINUE)指令。第一指令42可指定程式控制將並行地轉移至之目標位址。如下文更詳細論述,第一指令42可視情況包括指示可轉移一或多個暫存器(諸如,暫存器24、26、28、30)之內容的暫存器遮罩。一些實施例可提供,可視情況包括目標硬體執行緒之識別符,以指示將進行程式控制之並行轉移所至的硬體執行緒20、22。
指令處理電路12接著將對程式控制之並行轉移的請求56排入硬體FIFO佇列34中(區塊60)。請求56可包括指示程式控制將並行地轉移至之位址的位址參數。如下文進一步論述,請求56在一些實施例中可包括對應於由第一指令42之可選暫存器遮罩指定之一或多個暫存器的一或多個暫存器標識及一或多個暫存器內容。
指令處理電路12接下來在多核心處理器10之第二硬體執行緒22中偵測指示分派硬體FIFO佇列34中之對程式控制之並行轉移的請求56之操作的第二指令52(區塊62)。在一些實施例中,第二指令52可為由多核心處理器10提供之分派(DISPATCH)指令。指令處理電路12將對程式控制之並行轉移的請求56自硬體FIFO佇列34移出(區塊64)。接著在第二硬體執行緒22中執行程式控制之並行轉移(區塊66)。
如上文所指出,指示對程式控制之並行轉移的請求之指令(諸如,圖2之第一指令42)可包括用於指定待轉移之暫存器內容以及用於指定目標硬體執行緒之可選參數。因此,提供圖4以說明用於請求程式控制之並行轉移之例示性排入佇列指令42的組成元素以及對程式控制之並行轉移之例示性請求56的元素。在圖4之實例中,排入佇列指令42為繼續指令。應理解,在一些實施例中,排入佇列指令42可由不同指令名稱標明。排入佇列指令42包括目標位址68(「<addr>」)以及可選暫存器遮罩70(「<regmask>」)及目標硬體執行緒之可選識別符72(「<thread>」)。目標位址68指定請求程式控制轉移至之位址,且包括在請求56中作為目標位址74(「<addr>」)。
在一些實施例中,排入佇列指令42亦可包括暫存器遮罩70,暫存器遮罩70指示一或多個暫存器(諸如,暫存器24、26、28或30中之一或多者)。若存在暫存器遮罩70,則指令處理電路12在請求56中針對由暫存器遮罩70所指定之每一暫存器包括一或多個暫存器標識76(「<reg_identity>」)及一或多個暫存器內容78(「<reg_content>」)。 使用一或多個暫存器標識76及一或多個暫存器內容78,在其中執行排入佇列指令42的第一硬體執行緒之當前內容脈絡隨後可在分派第二硬體執行緒中之請求56後恢復。
一些實施例可提供,排入佇列指令42包括需要程式控制並行轉移至之目標硬體執行緒之可選識別符72。因此,在執行排入佇列指令42時,識別符72可由指令處理電路12使用以選擇多個硬體FIFO佇列34中之將請求56排入其中的一者。舉例而言,在一些實施例中,指令處理電路12可將請求56排入對應於由識別符72指定之硬體執行緒20、22之硬體FIFO佇列34中。一些實施例亦可提供專用於將請求排入佇列之硬體FIFO佇列34,針對該硬體FIFO佇列34,排入佇列42不提供識別符72。
圖5為更詳細地說明用於將對程式控制之並行轉移的請求56排入佇列(如上文在圖3之區塊60中所參考)的圖1之指令處理電路12之例示性操作之流程圖。為了清晰性之目的,在描述圖5時參考圖1、圖2及圖4之元件。在圖5之實例中,關於硬體執行緒20(0)之指令串流36(如圖2中所見)論述用於將對程式控制之並行轉移的請求56排入佇列之操作。然而,應理解,圖5之操作可在硬體執行緒20、22中之任一者中之指令串流中執行。
在圖5中,操作開始於指令處理電路12判定是否在硬體執行緒20(0)中之指令串流36中偵測到指示請求程式控制之並行轉移之操作的第一指令42(區塊80)。在一些實施例中,第一指令42可為繼續指令。若未偵測到第一指令42,則處理在區塊82處重新開始。若在區塊80處偵測到指示請求程式控制之並行轉移之操作的第一指令42,則指令處理電路12建立對程式控制之並行轉移的包括目標位址74之請求56(區塊84)。
指令處理電路12接下來檢查第一指令42是否指定暫存器遮罩70 (區塊86)。在一些實施例中,暫存器遮罩70可指定硬體執行緒20(0)之一或多個暫存器24,該等暫存器24之內容可包括在請求56中以保持硬體執行緒20(0)之當前內容脈絡。若未指定暫存器遮罩70,則處理在區塊88處繼續。然而,若在區塊86處判定暫存器遮罩70由第一指令42指定,則指令處理電路12在請求56中包括對應於由暫存器遮罩70指定之每一暫存器24的一或多個暫存器標識76及一或多個暫存器內容78(區塊90)。
指令處理電路12接著判定第一指令42是否指定目標硬體執行緒之識別符72(區塊88)。若未指定識別符72(亦即,第一指令42未請求至具體硬體執行緒的程式控制之並行轉移),則請求56經排入可用於所有硬體執行緒20、22之硬體FIFO佇列34中(區塊92)。處理接著於區塊94處繼續。若指令處理電路12於區塊88處判定目標硬體執行緒之識別符72由第一指令42指定,則請求56經排入具體針對對應於識別符72之硬體執行緒20、22中之一者的硬體FIFO佇列34中(區塊96)。
指令處理電路12接下來判定用於將請求56排入硬體FIFO佇列34中之排入佇列操作是否成功(區塊94)。若成功,則處理於區塊82處繼續。若請求56不能排入於硬體FIFO佇列34中(例如,因為硬體FIFO佇列34已滿),則引起中斷(區塊98)。處理接著繼續執行指令串流36中之下一指令(區塊82)。
圖6更詳細地說明用於將對程式控制之並行轉移的請求56移出佇列(如上文在圖3之區塊64中所參考)的圖1之指令處理電路12之例示性操作。為了清晰性之目的,在描述圖6時參考圖1、圖2及圖4之要素。在圖6之實例中,關於硬體執行緒22(0)之指令串流46(如圖2中所見)論述用於將對程式控制之並行轉移的請求56移出佇列之操作。然而,應理解,圖6之操作可在硬體執行緒20、22中之任一者中之指令串流中執行。
如圖6中所見,操作開始於指令處理電路12判定是否在指令串流46中偵測到指示分派對程式控制之並行轉移之請求56之操作的第二指令52(區塊100)。在一些實施例中,第二指令52可包含分派(DISPATCH)指令。若未偵測到第二指令52,則處理於區塊102處繼續。若在指令串流46中偵測到第二指令52,則由指令處理電路12將請求56自硬體FIFO佇列34移出(區塊104)。
指令處理電路12接著檢查請求56以判定該請求56中是否包括一或多個暫存器標識76及一或多個暫存器內容78(區塊106)。若否,則處理於區塊108處繼續。若請求56中包括一或多個暫存器標識76及一或多個暫存器內容78,則指令處理電路12將請求56中之一或多個暫存器內容78恢復至硬體執行緒22(0)之對應於一或多個暫存器標識76之一或多個暫存器28中(區塊110)。以此方式,硬體執行緒20(0)之內容脈絡在將請求56排入佇列中時可在硬體執行緒22(0)中恢復。指令處理電路12接著將硬體執行緒22(0)中之程式控制轉移至請求56中之目標位址74(區塊108)。處理繼續執行指令串流46中之下一指令(區塊102)。
圖7為更詳細地說明由圖1之指令處理電路12進行以提供並行功能之高效率硬體分派的例示性指令串流之處理流之圖。詳言之,圖7說明可藉以在並行轉移之後將程式控制返回至原始硬體執行緒之機構。在圖7中,由圖1之硬體執行緒20(0)執行包含一系列指令114、116、118、120、122及124之指令串流112,而由硬體執行緒22(0)執行包括一系列指令128、130、132及134之指令串流126。應理解,儘管在下文依序描述指令串流112及126之處理流,但指令串流112及126由各別硬體執行緒20(0)及22(0)並行地執行。將進一步理解,指令串流112及126中之每一者可在硬體執行緒20、22中之任一者中執行。
如圖7中所展示,指令串流112開始於加載(LOAD)指令114、116 及118,該等指令中之每一者將值儲存於硬體執行緒20(0)之暫存器24中之一者中。第一加載指令114指示值<parameter>將儲存於被稱作R0之暫存器中。值<parameter>可為意欲由將與指令串流112並行地執行之功能消耗的輸入值。指令串流112中執行之下一指令為加載指令116,該指令指示值<return_addr>將儲存於暫存器24中之一者(標明為R1)中。儲存於R1中之值<return_addr>表示一旦並行執行之功能完成其處理,程式控制即將返回至之硬體執行緒20(0)中之位址。加載指令116之後為加載指令118,其指示值<curr_thread>將儲存於暫存器24中之一者(在此被稱作R2)中。值<curr_thread>表示硬體執行緒20(0)之識別符72,且指示一旦並行執行之功能結束其處理程式控制應返回至之硬體執行緒20。
繼續指令120接著由指令處理電路12在指令串流112中執行。繼續指令120指定參數<target_addr>及暫存器遮罩<R0-R2>。繼續指令120之參數<target_addr>指示將並行執行的功能之位址。參數<R0-R2>為暫存器遮罩70,其指示對應於硬體執行緒20(0)之暫存器R0、R1及R2的暫存器標識76及暫存器內容78將包括在對程式控制之並行轉移的請求56中,該請求藉由執行繼續指令120而產生。
在偵測及執行繼續指令120後,指令處理電路12將請求136排入硬體FIFO佇列34中。在此實例中,請求136包括由繼續指令120之參數<target_addr>指定之位址,且進一步包括用於暫存器R0至R2之暫存器標識76(標明為<ID R0-R2>)及暫存器R0至R2之對應暫存器內容78(被稱作<Content R0-R2>)。在將請求136排入佇列中後,指令串流112之處理繼續該繼續指令120之後的下一指令。
指令串流126與上文所描述的硬體執行緒20(0)中之指令串流112之程式流並行地在硬體執行緒22(0)中執行,最終到達分派指令128。分派指令128指示分派硬體FIFO佇列34中之最舊請求(在此個例中為請 求136)之操作。在分派請求136之後,指令處理電路12使用請求136之暫存器標識76<ID R0-R2>及暫存器內容78<Content R0-R2>以恢復硬體執行緒22(0)中的暫存器28之暫存器R0至R2的值,該等暫存器對應於硬體執行緒20(0)之暫存器R0-R2。接著將硬體執行緒22(0)之程式控制轉移至位於由請求136之參數<target_address>指示之位址處的指令130。
指令串流126之執行繼續指令130。在此實例中,指令130經標明為Instr0,且可表示用於進行所要的功能性或計算所要的結果之一或多個指令。指令Instr0可將原先儲存於硬體執行緒20(0)中之暫存器R0中且當前儲存於硬體執行緒22(0)之暫存器R0中之值用作輸入以計算結果值(「<result>」)。指令串流126接下來進行至加載指令132,其指示計算結果值<result>將加載至硬體執行緒22(0)之暫存器R0中。
繼續指令134接著由指令處理電路12在指令串流126中執行。繼續指令134指定包括硬體執行緒22(0)之暫存器R1之內容、暫存器遮罩<R0>及硬體執行緒22(0)之暫存器R2之內容的參數。如上文所指出,硬體執行緒22(0)之暫存器R1之內容為儲存在硬體執行緒20(0)之暫存器R1中之值<return_addr>,且指示處理將在硬體執行緒20(0)中重新開始之返回位址。暫存器遮罩<R0>指示對應於硬體執行緒22(0)之暫存器R0的暫存器標識76及暫存器內容78將包括在回應於繼續指令134所產生之對程式控制之並行轉移的請求中。如上文所指出,硬體執行緒22(0)之暫存器R0儲存並行執行之功能的結果。硬體執行緒22(0)之暫存器R2之內容為儲存在硬體執行緒20(0)之暫存器R2中之值<curr_thread>,且指示應將由繼續指令134所產生之請求移出佇列之硬體執行緒20、22。
回應於偵測到繼續指令134,指令處理電路12將請求138排入硬體FIFO佇列34中。在此實例中,請求138包括由繼續指令134之參數 R0所指定的值<return_addr>,且進一步包括用於硬體執行緒22(0)之暫存器R0的暫存器標識76(標明為<ID R0>)及硬體執行緒22(0)之暫存器R0的暫存器內容78(被稱作<Content R0>)。在將請求138排入佇列中後,指令串流126之處理繼續在該繼續指令134之後的下一指令。
現返回至硬體執行緒20(0)中之指令串流112,在指令串流112中遇到分派(DISPATCH)指令122。分派指令122指示自硬體FIFO佇列34分派硬體FIFO佇列34中之最舊請求(在此個例中為請求138)之操作。在分派請求138之後,指令處理電路12使用請求138之暫存器標識<ID R0>及暫存器內容<Content R0>恢復硬體執行緒20(0)中之暫存器24中之一者的值,該一者對應於硬體執行緒22(0)之暫存器R0。接著將硬體執行緒20(0)之程式控制轉移至位於由請求138之參數<return_address>指示之位址處的指令124(在此實例中被稱作Instr0)。
根據本文中所揭示之實施例的於多核心處理器中並行功能之高效率硬體分派及相關之處理器系統、方法及電腦可讀媒體可提供於任何基於處理器之裝置中或整合至任何基於處理器之裝置中。實例包括(但不限於)機上盒、娛樂單元、導航裝置、通信裝置、固定位置資料單元、行動位置資料單元、行動電話、蜂巢式電話、電腦、攜帶型電腦、桌上型電腦、個人數位助理(PDA)、監視器、電腦監視器、電視機、調諧器、收音機、衛星收音機、音樂播放器、數位音樂播放器、攜帶型音樂播放器、數位視頻播放器、視頻播放器、數位視頻光碟(DVD)播放器及攜帶型數位視頻播放器。
就此而言,圖8說明可提供圖1之多核心處理器10及指令處理電路12的基於處理器之系統140之一實例。在此實例中,多核心處理器10可包括指令處理電路12,且可具有用於快速存取暫時儲存之資料的快取記憶體142。多核心處理器10耦接至系統匯流排144且可使基於處理器之系統140中包括之主裝置與從裝置相互耦接。眾所周知,多核 心處理器10藉由經由系統匯流排144交換位址、控制及資料資訊而與此等其他裝置通信。舉例而言,多核心處理器10可將匯流排異動請求傳達至作為從裝置之一實例的記憶體控制器146。儘管圖8中未說明,但可提供多個系統匯流排144。
其他主裝置及從裝置可連接至系統匯流排144。如圖8中所說明,作為實例,此等裝置可包括一記憶體系統148、一或多個輸入裝置150、一或多個輸出裝置152、一或多個網路介面裝置154及一或多個顯示控制器156。輸入裝置150可包括任何類型之輸入裝置,包括(但不限於)輸入鍵、開關、語音處理器等。輸出裝置152可包括任何類型之輸出裝置,包括(但不限於)音訊、視頻、其他視覺指示器等。網路介面裝置154可為經組態以允許將資料交換至網路158及交換來自網路158之資料的任何裝置。網路158可為任何類型之網路,包括(但不限於)有線或無線網路、私用或公用網路、區域網路(LAN)、廣泛區域網路(WLAN)及網際網路。網路介面裝置154可經組態以支援所要的任何類型之通信協定。記憶體系統148可包括一或多個記憶體單元160(0-N)。
多核心處理器10亦可經組態以經由系統匯流排144存取顯示控制器156以控制發送至一或多個顯示器162之資訊。顯示控制器156經由一或多個視頻處理器164將待顯示之資訊發送至顯示器162,該等視頻處理器將待顯示之資訊處理成適合於顯示器162之格式。顯示器162可包括任何類型之顯示器,包括(但不限於)陰極射線管(CRT)、液晶顯示器(LCD)、電漿顯示器等。
熟習此項技術者將進一步瞭解,結合本文中所揭示之實施例而描述之各種說明性邏輯區塊、模組、電路及演算法可實施為電子硬體、儲存於記憶體中或另一電腦可讀媒體中且可藉由處理器或其他處理裝置執行之指令,或二者之組合。作為實例,本文中所描述之仲裁 器、主裝置及從裝置可用於任何電路、硬體組件、積體電路(IC)或IC碼片中。本文中所揭示之記憶體可為任何類型及大小之記憶體且可經組態以儲存所要的任何類型之資訊。為清晰地說明此互換性,上文已大體上在其功能性方面描述各種說明性組件、區塊、模組、電路及步驟。如何實施此功能性視特定應用、設計選擇及/或強加於整個系統之設計約束而定。對於每一特定應用而言,熟習此項技術者可以變化之方式實施所描述之功能性,但不應將此等實施決策解釋為引起脫離本發明之範疇。
可藉由處理器、數位信號處理器(DSP)、特殊應用積體電路(ASIC)、場可程式化閘陣列(FPGA)或其他可程式化邏輯裝置、離散閘或電晶體邏輯、離散硬體組件或其經設計以執行本文中所描述功能的任何組合來實施或執行結合本文中所揭示之實施例而描述的各種說明性邏輯區塊、模組及電路。處理器可為微處理器,但在替代例中,處理器可為任何習知之處理器、控制器、微控制器或狀態機。處理器亦可經實施為計算裝置之組合,例如,一DSP與一微處理器之組合、複數個微處理器、一或多個微處理器結合一DSP核心或任一其他此組態。
本文中所揭示之實施例可體現於硬體及儲存於硬體中之指令中,且可駐留在(例如)隨機存取記憶體(RAM)、快閃記憶體、唯讀記憶體(ROM)、電可程式化ROM(EPROM)、電可抹除可程式化ROM(EEPROM)暫存器、硬碟、抽取式磁碟、CD-ROM或此項技術中已知之任何其他形式之電腦可讀媒體中。一例示性儲存媒體耦接至處理器以使得處理器可自儲存媒體讀取資訊及將資訊寫入至儲存媒體。在替代例中,儲存媒體可整合至處理器。處理器及儲存媒體可駐留於ASIC中。該ASIC可駐留於遠端台中。在替代例中,該處理器及該儲存媒體可作為離散組件而駐留於遠端台、基地台或伺服器中。
亦注意,描述本文中之例示性實施例中之任一者中所描述的操作步驟以提供實例及論述。可以不同於所說明之順序的眾多不同順序來執行所描述之操作。此外,實際上可以許多不同步驟來執行在單一操作步驟中所描述之操作。另外,可組合在例示性實施例中所論述之一或多個操作步驟。應理解,如熟習此項技術者將顯而易見的,流程圖中所說明之操作步驟可經受眾多不同修改。熟習此項技術者亦將理解,可使用多種不同技術及技藝中之任一者來表示資訊及信號。舉例而言,可由電壓、電流、電磁波、磁場或磁粒子、光場或光粒子或其任何組合來表示可貫穿以上描述所參考之資料、指令、命令、資訊、信號、位元、符號及碼片。
提供本發明之先前描述以使任何熟習此項技術者能夠製造或使用本發明。對本發明之各種修改對於熟習此項技術者而言將易於顯而易見的,且可在不脫離本發明之精神或範疇的情況下將本文中所定義之一般原理應用於其他變體。因而,本發明不意欲限於本文中所描述之實例及設計,而應符合與本文中所揭示之原理及新穎特徵相一致的最廣泛範疇。
10‧‧‧多核心處理器
12‧‧‧指令處理電路
14‧‧‧處理器外組件
16‧‧‧系統匯流排
18(0)‧‧‧處理器核心
18(Z)‧‧‧處理器核心
20(0)‧‧‧硬體執行緒
20(X)‧‧‧硬體執行緒
22(0)‧‧‧硬體執行緒
22(Y)‧‧‧硬體執行緒
24‧‧‧暫存器
26‧‧‧暫存器
28‧‧‧暫存器
30‧‧‧暫存器
32‧‧‧共用記憶體
34‧‧‧硬體FIFO佇列

Claims (20)

  1. 一種提供並行功能之高效率硬體分派之多核心處理器,其包含:複數個處理核心,該複數個處理核心包含複數個硬體執行緒;一硬體先進先出(FIFO)佇列,該佇列可通信地耦接至該複數個處理核心;及一指令處理電路,其經組態以:在該複數個硬體執行緒中之一第一硬體執行緒中偵測指示請求程式控制之一並行轉移之一操作的一第一指令;將對程式控制之該並行轉移的一請求排入至該硬體FIFO佇列中;在該複數個硬體執行緒中之一第二硬體執行緒中偵測指示分派該硬體FIFO佇列中之對程式控制之該並行轉移的該請求之一操作的一第二指令;將對程式控制之該並行轉移的該請求自該硬體FIFO佇列移出;及在該第二硬體執行緒中執行程式控制之該並行轉移。
  2. 如請求項1之多核心處理器,其中該指令處理電路經組態以藉由在該請求中包括對應於該第一硬體執行緒之一或多個暫存器的一或多個暫存器標識以及該一或多個暫存器中之各別者的一暫存器內容,將對程式控制之該並行轉移的該請求排入佇列。
  3. 如請求項2之多核心處理器,其中該指令處理電路經組態以藉由以下操作將對程式控制之該並行轉移的該請求移出佇列:擷取該請求中包括的該一或多個暫存器中之該等各別者之該 暫存器內容;及在執行程式控制之該並行轉移之前,將該一或多個暫存器中之該等各別者之該暫存器內容恢復至該第二硬體執行緒之一對應的一或多個暫存器中。
  4. 如請求項1之多核心處理器,其中該指令處理電路經組態以藉由在該請求中包括一目標硬體執行緒之一識別符,將對程式控制之該並行轉移的該請求排入佇列。
  5. 如請求項4之多核心處理器,其中該指令處理電路經組態以藉由判定該請求中包括的該目標硬體執行緒之該識別符將該第二硬體執行緒識別為該目標硬體執行緒,將對程式控制之該並行轉移的該請求移出佇列。
  6. 如請求項1之多核心處理器,其中該指令處理電路經進一步組態以:判定對程式控制之該並行轉移的該請求是否成功排入佇列;及回應於判定對程式控制之該並行轉移的該請求未成功排入佇列,引起一中斷。
  7. 如請求項1之多核心處理器,其係整合至一積體電路中。
  8. 如請求項1之多核心處理器,其係整合至選自由以下各者組成之群組之一裝置內:一機上盒、一娛樂單元、一導航裝置、一通信裝置、一固定位置資料單元、一行動位置資料單元、一行動電話、一蜂巢式電話、一電腦、一攜帶型電腦、一桌上型電腦、一個人數位助理(PDA)、一監視器、一電腦監視器、一電視機、一調諧器、一收音機、一衛星收音機、一音樂播放器、一數位音樂播放器、一攜帶型音樂播放器、一數位視頻播放器、一視頻播放器、一數位視頻光碟(DVD)播放器及一攜帶型數位視 頻播放器。
  9. 一種提供並行功能之高效率硬體分派之多核心處理器,其包含:一硬體先進先出(FIFO)佇列構件;複數個處理核心,其包含複數個硬體執行緒且可通信地耦接至該硬體FIFO佇列構件;及一指令處理電路構件,其包含:一構件,其用於在該複數個硬體執行緒中之一第一硬體執行緒中偵測指示請求程式控制之一並行轉移之一操作的一第一指令;一構件,其用於將對程式控制之該並行轉移的一請求排入至該硬體FIFO佇列構件中;一構件,其用於在該複數個硬體執行緒中之一第二硬體執行緒中偵測指示分派該硬體FIFO佇列構件中之對程式控制之該並行轉移的該請求之一操作的一第二指令;一構件,其用於將對程式控制之該並行轉移的該請求自該硬體FIFO佇列構件移出;及一構件,其用於在該第二硬體執行緒中執行程式控制之該並行轉移。
  10. 一種用於並行功能之高效率硬體分派之方法,其包含:在一多核心處理器之一第一硬體執行緒中偵測指示請求程式控制之一並行轉移之一操作的一第一指令;將對程式控制之該並行轉移的一請求排入一硬體先進先出(FIFO)佇列中;在該多核心處理器之一第二硬體執行緒中偵測指示分派該硬體FIFO佇列中之對程式控制之該並行轉移的該請求之一操作的 一第二指令;將對程式控制之該並行轉移的該請求自該硬體FIFO佇列移出;及在該第二硬體執行緒中執行程式控制之該並行轉移。
  11. 如請求項10之方法,其中將對程式控制之該並行轉移的該請求排入佇列包含在該請求中包括對應於該第一硬體執行緒之一或多個暫存器的一或多個暫存器標識,及該一或多個暫存器中之各別者的一暫存器內容。
  12. 如請求項11之方法,其中將對程式控制之該並行轉移的該請求移出佇列包含:擷取該請求中包括的該一或多個暫存器中之該等各別者之該暫存器內容;及在執行程式控制之該並行轉移之前,將該一或多個暫存器中之該等各別者之該暫存器內容恢復至該第二硬體執行緒之一對應的一或多個暫存器中。
  13. 如請求項10之方法,其中將對程式控制之該並行轉移的該請求移出佇列,包含在該請求中包括一目標硬體執行緒之一識別符。
  14. 如請求項13之方法,其中將對程式控制之該並行轉移的該請求移出佇列包含判定該請求中包括的該目標硬體執行緒之該識別符將該第二硬體執行緒識別為該目標硬體執行緒。
  15. 如請求項10之方法,其進一步包含:判定對程式控制之該並行轉移的該請求是否成功排入佇列;及回應於判定對程式控制之該並行轉移的該請求未成功排入佇列,引起一中斷。
  16. 一種非暫時性電腦可讀媒體,其具有儲存於其上之電腦可執行指令以使一處理器實施用於並行功能之高效率硬體分派之一方法,該方法包含:在一多核心處理器之一第一硬體執行緒中偵測指示請求程式控制之一並行轉移之一操作的一第一指令;將對程式控制之該並行轉移的一請求排入一硬體先進先出(FIFO)佇列中;在該多核心處理器之一第二硬體執行緒中偵測指示分派該硬體FIFO佇列中之對程式控制之該並行轉移的該請求之一操作的一第二指令;將對程式控制之該並行轉移的該請求自該硬體FIFO佇列移出;及在該第二硬體執行緒中執行程式控制之該並行轉移。
  17. 如請求項16之非暫時性電腦可讀媒體,其具有儲存於其上之該等電腦可執行指令以使該處理器實施該方法,其中將對程式控制之該並行轉移的該請求排入佇列,包含在該請求中包括對應於該第一硬體執行緒之一或多個暫存器的一或多個暫存器標識,及該一或多個暫存器中之各別者的一暫存器內容。
  18. 如請求項17之非暫時性電腦可讀媒體,其具有儲存於其上之該等電腦可執行指令以使該處理器實施該方法,其中將對程式控制之該並行轉移的該請求移出佇列包含:擷取該請求中包括的該一或多個暫存器中之該等各別者之該暫存器內容;及在執行程式控制之該並行轉移之前,將該一或多個暫存器中之該等各別者之該暫存器內容恢復至該第二硬體執行緒之一對應的一或多個暫存器中。
  19. 如請求項16之非暫時性電腦可讀媒體,其具有儲存於其上之該等電腦可執行指令以使該處理器實施該方法,其中將對程式控制之該並行轉移的該請求排入佇列,包含在該請求中包括一目標硬體執行緒之一識別符。
  20. 如請求項19之非暫時性電腦可讀媒體,其具有儲存於其上之該等電腦可執行指令以使該處理器實施該方法,其中將對程式控制之該並行轉移的該請求移出佇列,包含判定在該請求中包括的該目標硬體執行緒之該識別符將該第二硬體執行緒識別為該目標硬體執行緒。
TW103135562A 2013-11-01 2014-10-14 於多核心處理器中並行功能之高效率硬體分派及相關之處理器系統、方法及電腦可讀媒體 TWI633489B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201361898745P 2013-11-01 2013-11-01
US61/898,745 2013-11-01
US14/224,619 US20150127927A1 (en) 2013-11-01 2014-03-25 Efficient hardware dispatching of concurrent functions in multicore processors, and related processor systems, methods, and computer-readable media
US14/224,619 2014-03-25

Publications (2)

Publication Number Publication Date
TW201528133A true TW201528133A (zh) 2015-07-16
TWI633489B TWI633489B (zh) 2018-08-21

Family

ID=51946028

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103135562A TWI633489B (zh) 2013-11-01 2014-10-14 於多核心處理器中並行功能之高效率硬體分派及相關之處理器系統、方法及電腦可讀媒體

Country Status (8)

Country Link
US (1) US20150127927A1 (zh)
EP (1) EP3063623A1 (zh)
JP (1) JP2016535887A (zh)
KR (1) KR20160082685A (zh)
CN (1) CN105683905A (zh)
CA (1) CA2926980A1 (zh)
TW (1) TWI633489B (zh)
WO (1) WO2015066412A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2533414B (en) * 2014-12-19 2021-12-01 Advanced Risc Mach Ltd Apparatus with shared transactional processing resource, and data processing method
US10445271B2 (en) * 2016-01-04 2019-10-15 Intel Corporation Multi-core communication acceleration using hardware queue device
US10387154B2 (en) * 2016-03-14 2019-08-20 International Business Machines Corporation Thread migration using a microcode engine of a multi-slice processor
US10489206B2 (en) * 2016-12-30 2019-11-26 Texas Instruments Incorporated Scheduling of concurrent block based data processing tasks on a hardware thread scheduler
US10635526B2 (en) * 2017-06-12 2020-04-28 Sandisk Technologies Llc Multicore on-die memory microcontroller
CN109388592B (zh) * 2017-08-02 2022-03-29 伊姆西Ip控股有限责任公司 采用用户空间存储驱动器内的多个排队结构来提高速度
US11119972B2 (en) * 2018-05-07 2021-09-14 Micron Technology, Inc. Multi-threaded, self-scheduling processor
US11513838B2 (en) * 2018-05-07 2022-11-29 Micron Technology, Inc. Thread state monitoring in a system having a multi-threaded, self-scheduling processor
US11360809B2 (en) * 2018-06-29 2022-06-14 Intel Corporation Multithreaded processor core with hardware-assisted task scheduling
US10733016B1 (en) * 2019-04-26 2020-08-04 Google Llc Optimizing hardware FIFO instructions

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1236092A4 (en) * 1999-09-01 2006-07-26 Intel Corp BRANCH COMMAND FOR A PROCESSOR
US6526430B1 (en) * 1999-10-04 2003-02-25 Texas Instruments Incorporated Reconfigurable SIMD coprocessor architecture for sum of absolute differences and symmetric filtering (scalable MAC engine for image processing)
US20020199179A1 (en) * 2001-06-21 2002-12-26 Lavery Daniel M. Method and apparatus for compiler-generated triggering of auxiliary codes
US7743376B2 (en) * 2004-09-13 2010-06-22 Broadcom Corporation Method and apparatus for managing tasks in a multiprocessor system
GB0420442D0 (en) * 2004-09-14 2004-10-20 Ignios Ltd Debug in a multicore architecture
WO2006074024A2 (en) * 2004-12-30 2006-07-13 Intel Corporation A mechanism for instruction set based thread execution on a plurality of instruction sequencers
US7490184B2 (en) * 2005-06-08 2009-02-10 International Business Machines Corporation Systems and methods for data intervention for out-of-order castouts
US20070074217A1 (en) * 2005-09-26 2007-03-29 Ryan Rakvic Scheduling optimizations for user-level threads
US8341604B2 (en) * 2006-11-15 2012-12-25 Qualcomm Incorporated Embedded trace macrocell for enhanced digital signal processor debugging operations
US8661227B2 (en) * 2010-09-17 2014-02-25 International Business Machines Corporation Multi-level register file supporting multiple threads

Also Published As

Publication number Publication date
CN105683905A (zh) 2016-06-15
EP3063623A1 (en) 2016-09-07
TWI633489B (zh) 2018-08-21
US20150127927A1 (en) 2015-05-07
WO2015066412A1 (en) 2015-05-07
KR20160082685A (ko) 2016-07-08
CA2926980A1 (en) 2015-05-07
JP2016535887A (ja) 2016-11-17

Similar Documents

Publication Publication Date Title
TWI633489B (zh) 於多核心處理器中並行功能之高效率硬體分派及相關之處理器系統、方法及電腦可讀媒體
US9317434B2 (en) Managing out-of-order memory command execution from multiple queues while maintaining data coherency
JP2017050001A (ja) 効果的なニューラルネットワークの配置に用いるシステム及び方法
CN106462394B (zh) 使用共享硬件资源的群集处理器核心中硬件线程的动态负载平衡以及相关的电路、方法和计算机可读媒体
CN109716292B (zh) 在块原子数据流架构中提供存储器相依性预测
EP2972787B1 (en) Eliminating redundant synchronization barriers in instruction processing circuits, and related processor systems, methods, and computer-readable media
CN103608776A (zh) 异构型处理设备上的动态工作划分
US20160026607A1 (en) Parallelization of scalar operations by vector processors using data-indexed accumulators in vector register files, and related circuits, methods, and computer-readable media
KR20140117578A (ko) 다중스레드 컴퓨팅
JP2011008732A (ja) プライオリティ回路、演算処理装置及び演算処理方法
JP6317339B2 (ja) レジスタ関連優先度に基づく実行パイプラインへの命令の発行、ならびに関係する命令処理回路、プロセッサシステム、方法、およびコンピュータ可読媒体
US20090172684A1 (en) Small low power embedded system and preemption avoidance method thereof
TWI752354B (zh) 提供預測性指令分派節流以防止在基於亂序處理器(oop)的設備中的資源溢出
JP2024501454A (ja) 高スループット及び低オーバーヘッドカーネルローンチのための圧縮されたコマンドパケット
US20220300312A1 (en) Hybrid push and pull event source broker for serverless function scaling
US20240045736A1 (en) Reordering workloads to improve concurrency across threads in processor-based devices
JP3908237B2 (ja) データ処理装置、データ処理プログラム及びデータ処理方法
TW202236103A (zh) 通過在基於處理器的裝置中的應用程式入口來啟用周邊裝置訊息傳遞

Legal Events

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