TWI724505B - 提升cpu並行性能的方法及裝置和電子設備 - Google Patents
提升cpu並行性能的方法及裝置和電子設備 Download PDFInfo
- Publication number
- TWI724505B TWI724505B TW108130000A TW108130000A TWI724505B TW I724505 B TWI724505 B TW I724505B TW 108130000 A TW108130000 A TW 108130000A TW 108130000 A TW108130000 A TW 108130000A TW I724505 B TWI724505 B TW I724505B
- Authority
- TW
- Taiwan
- Prior art keywords
- code
- execute
- requests
- parallels
- jump
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 238000010586 diagram Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 3
- 230000009191 jumping Effects 0.000 description 3
- 238000002156 mixing Methods 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 239000006227 byproduct Substances 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000000265 homogenisation Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/456—Parallelism detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/441—Register allocation; Assignment of physical memory space to logical memory space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/503—Resource availability
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本發明實施例提供一種提升CPU並行性能的方法及裝置和電子設備,所述方法包括:獲取分配到同一CPU核心的相同類型的資料請求;確定獲取到的資料請求的請求個數;如果所述請求個數大於或者等於並行數,所述CPU核心獲取對應所述並行數的可執行代碼並執行;其中,所述並行數為所述CPU提供的最大平行線程的數量;所述可執行代碼為預先根據並行數編譯後鏈接而成的代碼程式。
Description
本發明實施例涉及互聯網技術領域,尤其涉及一種提升CPU並行性能的方法及裝置和電子設備。
在大資料處理場景下,資料呈現出越來越多的並行性,但是CPU(Central Processing Unit,中央處理器)的並行能力卻是有限的。
在相關技術中,為了提升CPU的並行性能,只有增加CPU更多的超執行緒,但是超執行緒會佔用更多CPU硬體開銷。因此,需要不斷增加CPU硬體上的性能,以滿足越來越高的並行要求。
然而,CPU硬體的開發週期較長並且硬體成本也高。
因此,如何在不增加CPU硬體的情況下,如何從軟體方面挖掘CPU更多的並行性能已經成為業內極待解決的問題。
本發明實施例提供的一種提升CPU並行性能的方法及裝置和電子設備:
根據本發明實施例的第一態樣,提供一種提升CPU並行性能的方法,所述方法包括:
獲取分配到同一CPU核心的相同類型的資料請求;
確定獲取到的資料請求的請求個數;
如果所述請求個數大於或者等於並行數,所述CPU核心獲取對應所述並行數的可執行代碼並執行;其中,所述並行數為所述CPU提供的最大平行線程的數量;所述可執行代碼為預先根據並行數編譯後鏈接而成的代碼程式。
可選的,所述方法還包括:
如果所述請求個數小於並行數,並且獲取次數小於並行數,執行所述獲取分配到同一CPU核心的相同類型的資料請求;其中,所述獲取次數為獲取資料請求的次數。
可選的,所述方法還包括:
如果所述請求個數小於並行數但大於0,並且獲取次數不小於並行數,所述CPU核心獲取對應所述請求個數的可執行代碼並執行;其中,所述獲取次數為獲取資料請求的次數。
可選的,所述方法還包括:
如果所述請求個數等於0,並且所述獲取次數不小於並行數,執行所述獲取分配到同一CPU核心的相同類型的資料請求。
可選的,在所述預先根據並行數編譯過程中:
如果並行數為2,代碼00和代碼10的跳轉指令都是向上跳轉,執行如下步驟:
步驟31:執行代碼00;
步驟32:執行代碼10;
步驟33:設置標誌位元設為第一標誌;
步驟34:根據代碼00的執行結果判斷是否需要繼續執行代碼00;如果需要執行步驟35,如果不需要執行步驟36;
步驟35:再次執行代碼00,並將標誌位元設為第二標誌,執行步驟36;
步驟36:根據代碼10的執行結果判斷是否需要繼續執行代碼10;如果需要執行步驟37,如果不需要執行步驟38;
步驟37:再次執行代碼10,並將標誌位元設為第二標誌,執行步驟38;
步驟38:判斷標誌位元是否第一標誌,如果不是,重複執行步驟33;直到標誌位元為第一標誌時,迴圈結束。
可選的,所述根據代碼的執行結果判斷是否需要再次執行代碼,具體包括:
如果代碼的執行結果符合閾值,確定需要再次執行代碼;
如果代碼的執行結果不符合閾值,確定不需要再次執行代碼。
可選的,在所述預先根據並行數編譯過程中:
如果並行數為2,代碼00和代碼10的跳轉指令都是向下跳轉,執行如下步驟:
步驟41:執行代碼00;
步驟42:執行代碼00的跳轉指令00,如果不跳轉執行步驟43;如果跳轉執行步驟44;
步驟43:循序執行指令,即執行步驟44;
步驟44:執行代碼10;
步驟45:執行代碼10的跳轉指令10,如果不跳轉執行步驟46;如果跳轉執行步驟47;
步驟46:循序執行指令,即執行步驟47;
步驟47:執行下一代碼01。
根據本發明實施例的第二態樣,提供一種提升CPU並行性能的裝置,所述裝置包括:
獲取單元,獲取分配到同一CPU核心的相同類型的資料請求;
確定單元,確定獲取到的資料請求的請求個數;
執行單元,如果所述請求個數大於或者等於並行數,所述CPU核心獲取對應所述並行數的可執行代碼並執行;其中,所述並行數為所述CPU提供的最大平行線程的數量;所述可執行代碼為預先根據並行數編譯後鏈接而成的代碼程式。
根據本發明實施例的第三態樣,提供一種電子設備,包括:
處理器;
用於儲存處理器可執行指令的記憶體;
其中,所述處理器被配置為上述任一項提升CPU並行性能的方法。
本發明實施例,提供了一種提升CPU並行性能的方案,充分利用大資料處理的特徵(執行資料請求的代碼幾乎相同,資料請求不具有資料相依性),透過預先根據並行數對相同代碼進行混合鏈接從而得到並行數對應的可執行代碼;在資料請求的請求個數大於或等於並行數時,直接獲取並行數對應的可執行代碼並執行。如此,在一個CPU核心運行中也可以產生並存執行資料請求的結果。實現了在不增加CPU硬體的情況下,提升了CPU並行處理性能。
這裡將詳細地對示例性實施例進行說明,其示例表示在圖式中。下面的描述涉及圖式時,除非另有表示,不同圖式中的相同數字表示相同或相似的要素。以下示例性實施例中所描述的實施方式並不代表與本發明相一致的所有實施方式。相反,它們僅是與如所附申請專利範圍中所詳述的、本發明的一些態樣相一致的裝置和方法的例子。
在本發明使用的術語是僅僅出於描述特定實施例的目的,而非旨在限制本發明。在本發明和所附申請專利範圍中所使用的單數形式的“一種”、“所述”和“該”也旨在包括多數形式,除非上下文清楚地表示其他含義。還應當理解,本文中使用的術語“和/或”是指並包含一個或多個相關聯的列出專案的任何或所有可能組合。
應當理解,儘管在本發明可能採用術語第一、第二、第三等來描述各種資訊,但這些資訊不應限於這些術語。這些術語僅用來將同一類型的資訊彼此區分開。例如,在不脫離本發明範圍的情況下,第一資訊也可以被稱為第二資訊,類似地,第二資訊也可以被稱為第一資訊。取決於語境,如在此所使用的詞語“如果”可以被解釋成為“在……時”或“當……時”或“回應於確定”。
在大資料處理場景下,資料呈現出越來越多的並行性,但是CPU的並行能力卻是有限的。
在相關技術中,為了提升CPU的並行性能,只有增加CPU更多的超執行緒,但是超執行緒會佔用更多CPU硬體開銷。因此,需要不斷增加CPU硬體上的性能,通常就是增加CPU核心數量,例如從32核CPU增加到64核CPU以滿足越來越高的並行要求。然而,CPU硬體的開發週期較長並且增加硬體的成本也高。在實際應用中,無法無限制地增加硬體,並且隨著增加的硬體越多,能提升的並行性能卻越小。
本發明透過分析大資料處理的特徵發現,大資料場景中的資料請求通常具有同質化現象,即批量的資料請求基本相同,僅是攜帶的參數不同,因此,執行這些資料請求的代碼也幾乎相同;並且,大資料場景中的資料請求之間不存在資料相依性,所述資料相依性可以是指執行某個資料請求之前,必須等待其它資料請求執行完成,以獲取其它資料請求執行結果,再帶入本資料請求中;也就是說具有資料相依性的資料請求的輸入資料是其它資料請求的輸出資料,例如某個資料請求是將使用者A的餘額減100;如果要執行該請求,那麼首先需要執行獲取使用者A的餘額;只有在獲取到用戶A的餘額後,才可以減100。
本發明提供了一種提升CPU並行性能的方案,就是充分利用大資料處理的特徵(執行資料請求的代碼幾乎相同,資料請求不具有資料相依性),透過預先根據並行數對相同代碼進行混合鏈接從而得到並行數對應的可執行代碼;在資料請求的請求個數大於或等於並行數時,直接獲取並行數對應的可執行代碼並執行。由於代碼之間彼此不存在資料相依性,因此在一個CPU核心運行中也可以產生並存執行資料請求的結果。實現了在不增加CPU硬體的情況下,提升了CPU並行處理性能。
以下請參考圖1所示的本發明提供了一種提升CPU並行性能的方法,該方法可以應用於CPU,所述方法包括:
步驟110:獲取分配到同一CPU核心的相同類型的資料請求;
步驟120:確定獲取到的資料請求的請求個數;
步驟130:如果所述請求個數大於或者等於並行數,所述CPU核心獲取對應所述並行數的可執行代碼並執行;其中,所述並行數為所述CPU提供的最大平行線程的數量;所述可執行代碼為預先根據並行數編譯後鏈接而成的代碼程式。
本發明實施例中,所述並行數為所述CPU提供的最大平行線程的數量。通常,CPU可以根據實際硬體資源確定最大平行線程的數量。
預先根據並行數將暫存器進行分組。當並行數為3個,暫存器為N個時,可以分為3份:當請求個數為1個時,將N個暫存器分為1份並編譯1個請求數對應的可執行代碼;
當請求個數為2個時,將N個暫存器分為2份(每份N/2)並編譯2個請求數對應的可執行代碼;
當請求個數大於或等於3個時,將N個暫存器分為3份(每份N/3)並編譯3個請求數對應的可執行代碼。
當分配到同一CPU核心的相同類型的資料請求的請求個數大於或等於並行數時,CPU核心可以獲取對應所述並行數的可執行代碼並執行。由於可執行代碼是根據並行數編譯後鏈接而成的代碼程式,執行該可執行代碼就可以處理所有資料請求。如此在單核CPU運行中也可以產生並存執行資料請求的結果。
在一實施例中,所述方法還包括:
如果所述請求個數小於並行數,並且獲取次數小於並行數,執行所述獲取分配到同一CPU核心的相同類型的資料請求;其中,所述獲取次數為獲取資料請求的次數。
當分配到同一CPU核心的相同類型的資料請求的請求個數小於並行數,並且獲取次數也小於並行數時,說明當前獲取到的資料請求的數量還沒有達到最大並行數量,因此可以再次執行步驟110以獲取更多的資料請求。
在一實施例中,所述方法還包括:
如果所述請求個數小於並行數但大於0,並且所述獲取次數不小於並行數,所述CPU核心獲取對應所述請求個數的可執行代碼並執行。
如果請求個數小於並行數,但大於0;並且獲取次數不小於並行數,說明已經多次獲取過資料請求,還是沒有達到最大並行數量,反映了當前待處理的資料請求並不多,可以直接處理這些已經獲取到的資料請求。具體地,可以根據請求個數獲取預先編譯好的可執行代碼。
在一實施例中,所述方法還包括:
如果所述請求個數等於0,並且所述獲取次數不小於並行數,執行所述獲取分配到同一CPU核心的相同類型的資料請求。
如果請求個數等於0,說明當前沒有待處理的資料請求,可以繼續執行步驟110以獲取待處理的資料請求。
以下如圖2所示以並行數為3的示例加以說明。假設使用分別將暫存器分為3組(請求數大於等於3時使用),2組(請求數為2時使用),1組(請求數為1時使用)。
步驟21:獲取請求,執行步驟22。
獲取分配到同一CPU核心的相同類型的資料請求。
步驟22:如果請求個數(即獲取到的資料請求的數量)大於或者等於並行數即3,執行步驟28;如果請求數小於3,則執行步驟23。
如果請求個數大於或者等於並行數,說明當前待執行的資料請求已經達到最大並行數量,需要並行處理這些資料請求。
步驟23:如果獲取次數(即獲取請求的次數)小於3次,執行步驟21;如果獲取次數不小於(大於或者等於)3次,則執行步驟24。
如果請求個數和獲取次數均小於3,說明還沒有達到最大並行數量,因此可以再次執行步驟21以獲取更多的資料請求;如果請求個數小於3,但獲取次數不小於(大於或者等於)3次,說明已經多次獲取過資料請求,還是沒有達到最大並行數量,反映了當前待處理的資料請求不多,直接處理這些已經獲取到的資料請求。
步驟24:如果請求個數等於2,執行步驟27;如果請求個數小於2,執行步驟25。
如果請求個數小於3但等於2,說明有2個資料請求,那麼可以針對這2個資料請求做並行處理。
步驟25:如果請求個數等於1,執行步驟26;如果請求個數小於1,執行步驟21。
如果請求個數小於3但等於1,說明僅有1個資料請求,那麼可以單獨進行處理,無需並行處理;如果請求個數小於1,說明沒有獲取到資料請求,對此重複執行步驟21以獲取待處理的資料請求。
步驟26:獲取請求數為1的可執行代碼。
如果所述請求個數等於1,所述CPU核心獲取預先編譯好的請求數為1的可執行代碼。
步驟27:獲取請求數為2的可執行代碼。
如果所述請求個數等於2,所述CPU核心獲取預先編譯好的請求數為2的可執行代碼。
步驟28:獲取請求數為3的可執行代碼。
如果所述請求個數大於或者等於3,所述CPU核心獲取預先編譯好的請求數為3的可執行代碼。
步驟29:完成。
整個CPU並行處理過程如上圖2所示。
其中,在實際應用中,由於所有資料請求的代碼相同,因此執行代碼過程中涉及的跳轉指令通常是一致的,例如跳轉指令都是向上跳轉,或者都是向下跳轉。此時,在簡單混編(混合編譯)時會出現得不到正確編譯結果的問題。
舉例說明,假設並行數為2時,有如下代碼:
代碼_00 代碼_10
跳轉指令_00 跳轉指令_10
代碼_01 代碼_11
跳轉指令_01 跳轉指令_11
簡單混編後:
代碼_00
跳轉指令_00
代碼_10
跳轉指令_10
代碼_01
跳轉指令_01
代碼_11
跳轉指令_11。
假設都是向下跳轉,則簡單混編後執行過程為:
執行代碼00,執行跳轉指令00;
由於跳轉指令00為向下跳轉,因此,有可能會跳過代碼10而執行代碼01;類似的,由於跳轉指令01也是向下跳轉,同樣可能會跳過代碼11而執行代碼02;這樣有關代碼10和代碼11都無法執行。
綜上,正常情況下CPU有n個暫存器,然後編譯器可以將高階程式語言用這n個暫存器進行編譯成CPU可執行的指令任務代碼。如果希望在一個CPU核心中並行運行3個任務,那麼先將相同的任務分別用n/3組暫存器,分別生成3份CPU可執行的指令任務代碼。為了能使這3份CPU可執行的指令任務代碼可以在一個CPU核心中運行,需要再次優化編譯器,使編譯器能夠在上面三份代碼的基礎上再次進行鏈接優化。
具體地,雖然需要以每個代碼為單位代碼進行混編,但對於同一任務所有編譯後的編譯結果,其跳轉指令方向都是一致的;因此只需要解決同時向上跳轉以及同時向下跳轉兩種情況的混編鏈接結果。
請參考圖3所示的兩個跳轉指令都為向上跳轉的代碼的編譯示意圖。假設並行數為2,代碼包括代碼00和代碼10。步驟如下:
步驟31:執行代碼00;
步驟32:執行代碼10;
步驟33:標誌位元設為0(第一標誌);
步驟34:根據代碼00的執行結果判斷是否需要繼續執行代碼00;如果需要執行步驟35,如果不需要執行步驟36;
步驟35:再次執行代碼00,並將標誌位元設為1(第二標誌),執行步驟36;
步驟36:根據代碼10的執行結果判斷是否需要繼續執行代碼10;如果需要執行步驟37,如果不需要執行步驟38;
步驟37:再次執行代碼10,並將標誌位元設為1,執行步驟38;
步驟38:判斷標誌位元是否0,如果不是,重複執行步驟33(進行迴圈);直到標誌位元為0時,結束迴圈。
其中,根據代碼的執行結果判斷是否需要再次執行代碼,具體包括:
如果代碼的執行結果符合閾值,確定需要再次執行代碼;
如果代碼的執行結果不符合閾值,確定不需要再次執行代碼。
其中,00,01,02,…,0n代表將暫存器分組後,使用其中一組對任務進行編譯的結果。
該實施例,每當有代碼需要再次執行時,都可以保證標誌位元不為0,因此,每當有代碼需要再次執行時,都可以再次進行迴圈,判斷有沒有代碼需要再次執行,避免當有代碼可以跳轉而有的代碼不能跳轉時,就結束整體並存執行的情況。
值得一提的是,當前方向為向下,與原始方向相反,例如原有向上跳轉的指令為Ja,因此向下跳轉指令只要變為Jbe即可。這種跳轉指令的修改非常簡單方便,透過CPU中的編譯器就可以實現;不需要借助額外其他工具。
請參考圖4所示的兩個跳轉指令都為向下跳轉的代碼的編譯示意圖。假設並行數為2,代碼包括代碼00和代碼10。步驟如下:
步驟41:執行代碼00;
步驟42:執行跳轉指令00,如果不跳轉執行步驟43;如果跳轉執行步驟44;
步驟43:循序執行指令;即執行步驟44;
步驟44:執行代碼10;
步驟45:執行跳轉指令10,如果不跳轉執行步驟46;如果跳轉執行步驟47;
步驟46:循序執行指令;即執行步驟47;
步驟47:執行下一代碼01。
其中,00,01,02,…,0n代表將暫存器分組後,使用其中一組對任務進行編譯的結果。
透過上述向上或向下跳轉的實施例,在混編鏈接的時候,把每一個跳轉模組作為混編的單位,處理了同時向上跳轉和同時向下跳轉兩種混合鏈接方式。
綜上,CPU在運行上面混編的結果的時候,由於是不同的暫存器,彼此不存在資料相依性,因此在一個CPU核心內部可以並行處理,最終提升任務處理的並行性。值得一提的是,本發明提供的方案,可以增加的並行數量取決於當前CPU暫存器的數量,因此在不增加硬體開銷的情況下,也可以提高CPU並行處理能力。
與前述提升CPU並行性能的方法實施例相對應,本發明還提供了提升CPU並行性能的裝置的實施例。
請參見圖5,為本發明一實施例提供的提升CPU並行性能的裝置的模組圖,所述裝置對應了圖1所示實施例,所述CPU中包含有暫存器,所述裝置包括:
獲取單元510,獲取分配到同一CPU核心的相同類型的資料請求;
確定單元520,確定獲取到的資料請求的請求個數;
執行單元530,如果所述請求個數大於或者等於並行數,所述CPU核心獲取對應所述並行數的可執行代碼並執行;其中,所述並行數為所述CPU提供的最大平行線程的數量;所述可執行代碼為預先根據並行數編譯後鏈接而成的代碼程式。
可選的,所述裝置還包括:
第一獲取子單元,如果所述請求個數小於並行數,並且獲取次數小於並行數,執行所述獲取分配到同一CPU核心的相同類型的資料請求;其中,所述獲取次數為獲取資料請求的次數。
可選的,所述裝置還包括:
第一執行子單元,如果所述請求個數小於並行數但大於0,並且獲取次數不小於並行數,所述CPU核心獲取對應所述請求個數的可執行代碼並執行;其中,所述獲取次數為獲取資料請求的次數。
可選的,所述裝置還包括:
第二獲取子單元,如果所述請求個數等於0,並且所述獲取次數不小於並行數,執行所述獲取分配到同一CPU核心的相同類型的資料請求。
可選的,在所述預先根據並行數編譯過程中:
如果並行數為2,代碼00和代碼10的跳轉指令都是向上跳轉,執行如下子單元:
第一執行子單元,執行代碼00;
第二執行子單元,執行代碼10;
第一設置子單元,設置標誌位元設為第一標誌;
第一判斷子單元,根據代碼00的執行結果判斷是否需要繼續執行代碼00;如果需要執行第三執行子單元,如果不需要執行第二判斷子單元;
第三執行子單元,再次執行代碼00,並將標誌位元設為第二標誌,執行第二判斷子單元;
第二判斷子單元,根據代碼10的執行結果判斷是否需要繼續執行代碼10;如果需要執行第四執行子單元,如果不需要執行標誌判斷子單元;
第四執行子單元,再次執行代碼10,並將標誌位元設為第二標誌,執行標誌判斷子單元;
標誌判斷子單元,判斷標誌位元是否第一標誌,如果不是,重複執行第一設置子單元;直到標誌位元為第一標誌時,迴圈結束。
可選的,所述根據代碼的執行結果判斷是否需要再次執行代碼,具體包括:
如果代碼的執行結果符合閾值,確定需要再次執行代碼;
如果代碼的執行結果不符合閾值,確定不需要再次執行代碼。
可選的,在所述預先根據並行數編譯過程中:
如果並行數為2,代碼00和代碼10的跳轉指令都是向下跳轉,執行如下子單元:
第一執行子單元,執行代碼00;
第一跳轉子單元,執行代碼00的跳轉指令00,如果不跳轉執行第一順序子單元;如果跳轉執行第二執行子單元;
第一順序子單元,循序執行指令,即執行第二執行子單元;
第二執行子單元,執行代碼10;
第二跳轉子單元,執行代碼10的跳轉指令10,如果不跳轉執行第二順序子單元;如果跳轉執行第三執行子單元;
第二順序子單元,循序執行指令,即執行第三執行子單元;
第三執行子單元,執行下一代碼01。
上述實施例闡明的系統、裝置、模組或單元,具體可以由電腦晶片或實體實現,或者由具有某種功能的產品來實現。一種典型的實現設備為電腦,電腦的具體形式可以是個人電腦、筆記型電腦、蜂巢式電話、相機電話、智慧型電話、個人數位助理、媒體播放機、導航設備、電子郵件收發設備、遊戲控制台、平板電腦、可穿戴設備或者這些設備中的任意幾種設備的組合。
上述裝置中各個單元的功能和作用的實現過程具體詳見上述方法中對應步驟的實現過程,在此不再贅述。
對於裝置實施例而言,由於其基本對應於方法實施例,所以相關之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離元件說明的單元可以是或者也可以不是實體上分開的,作為單元顯示的元件可以是或者也可以不是實體單元,即可以位於一個地方,或者也可以分佈到多個網路單元上。可以根據實際的需要選擇其中的部分或者全部模組來實現本發明方案的目的。本領域普通技術人員在不付出創造性勞動的情況下,即可以理解並實施。
以上圖5描述了提升CPU並行性能的裝置的內部功能模組和結構示意,其實質上的執行主體可以為一種電子設備,包括:
處理器;
用於儲存處理器可執行指令的記憶體;
其中,所述處理器被配置為:
獲取分配到同一CPU核心的相同類型的資料請求;
確定獲取到的資料請求的請求個數;
如果所述請求個數大於或者等於並行數,所述CPU核心獲取對應所述並行數的可執行代碼並執行;其中,所述並行數為所述CPU提供的最大平行線程的數量;所述可執行代碼為預先根據並行數編譯後鏈接而成的代碼程式。
可選的,還包括:
如果所述請求個數小於並行數,並且獲取次數小於並行數,執行所述獲取分配到同一CPU核心的相同類型的資料請求;其中,所述獲取次數為獲取資料請求的次數。
可選的,還包括:
如果所述請求個數小於並行數但大於0,並且獲取次數不小於並行數,所述CPU核心獲取對應所述請求個數的可執行代碼並執行;其中,所述獲取次數為獲取資料請求的次數。
可選的,還包括:
如果所述請求個數等於0,並且所述獲取次數不小於並行數,執行所述獲取分配到同一CPU核心的相同類型的資料請求。
可選的,在所述預先根據並行數編譯過程中:
如果並行數為2,代碼00和代碼10的跳轉指令都是向上跳轉,執行如下步驟:
步驟31:執行代碼00;
步驟32:執行代碼10;
步驟33:設置標誌位元設為第一標誌;
步驟34:根據代碼00的執行結果判斷是否需要繼續執行代碼00;如果需要執行步驟35,如果不需要執行步驟36;
步驟35:再次執行代碼00,並將標誌位元設為第二標誌,執行步驟36;
步驟36:根據代碼10的執行結果判斷是否需要繼續執行代碼10;如果需要執行步驟37,如果不需要執行步驟38;
步驟37:再次執行代碼10,並將標誌位元設為第二標誌,執行步驟38;
步驟38:判斷標誌位元是否第一標誌,如果不是,重複執行步驟33;直到標誌位元為第一標誌時,迴圈結束。
可選的,所述根據代碼的執行結果判斷是否需要再次執行代碼,具體包括:
如果代碼的執行結果符合閾值,確定需要再次執行代碼;
如果代碼的執行結果不符合閾值,確定不需要再次執行代碼。
可選的,在所述預先根據並行數編譯過程中:
如果並行數為2,代碼00和代碼10的跳轉指令都是向下跳轉,執行如下步驟:
步驟41:執行代碼00;
步驟42:執行代碼00的跳轉指令00,如果不跳轉執行步驟43;如果跳轉執行步驟44;
步驟43:循序執行指令,即執行步驟44;
步驟44:執行代碼10;
步驟45:執行代碼10的跳轉指令10,如果不跳轉執行步驟46;如果跳轉執行步驟47;
步驟46:循序執行指令,即執行步驟47;
步驟47:執行下一代碼01。
在上述電子設備的實施例中,應理解,該處理器可以是中央處理單元(英文:Central Processing Unit,簡稱:CPU),還可以是其他通用處理器、數位訊號處理器(英文:Digital Signal Processor,簡稱:DSP)、特定應用積體電路(英文:Application Specific Integrated Circuit,簡稱:ASIC)等。通用處理器可以是微處理器或者該處理器也可以是任何常規的處理器等,而前述的記憶體可以是唯讀記憶體(英文:read-only memory,縮寫:ROM)、隨機存取記憶體(英文:random access memory,簡稱:RAM)、快閃記憶體、硬碟或者固態硬碟。結合本發明實施例所公開的方法的步驟可以直接體現為硬體處理器執行完成,或者用處理器中的硬體及軟體模組組合執行完成。
本發明中的各個實施例均採用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對於電子設備實施例而言,由於其基本相似於方法實施例,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
本領域技術人員在考慮說明書及實踐這裡公開的發明後,將容易想到本發明的其它實施方案。本發明旨在涵蓋本發明的任何變型、用途或者適應性變化,這些變型、用途或者適應性變化遵循本發明的一般性原理並包括本發明未公開的本技術領域中的公知常識或慣用技術手段。說明書和實施例僅被視為示例性的,本發明的真正範圍和精神由下面的申請專利範圍指出。
應當理解的是,本發明並不局限於上面已經描述並在圖式中示出的精確結構,並且可以在不脫離其範圍進行各種修改和改變。本發明的範圍僅由所附的申請專利範圍來限制。
21~29:步驟
31~38:步驟
41~47:步驟
110:步驟
120:步驟
130:步驟
310:獲取單元
320:確定單元
330:執行單元
圖1是本發明一實施例提供的提升CPU並行性能的方法的流程圖;
圖2是本發明一實施例提供的以並行數為3的並行處理過程的示意圖;
圖3是本發明一實施例提供的兩個代碼跳轉指令都是向上跳轉的編譯示意圖;
圖4是本發明一實施例提供的兩個代碼跳轉指令都是向下跳轉的編譯示意圖;
圖5是本發明一實施例提供的提升CPU並行性能的裝置的模組示意圖。
Claims (9)
- 一種提升CPU並行性能的方法,該方法包括:獲取分配到同一CPU核心的相同類型的資料請求;確定獲取到的資料請求的請求個數;如果該請求個數大於或者等於並行數,該CPU核心獲取對應該並行數的可執行代碼並執行;其中,該並行數為該CPU提供的最大平行線程的數量;該可執行代碼為預先根據並行數編譯後鏈接而成的代碼程式,其中,在該預先根據並行數編譯過程中:如果並行數為2,代碼00和代碼10的跳轉指令都是向上跳轉,執行如下步驟:步驟31:執行代碼00;步驟32:執行代碼10;步驟33:設置標誌位元設為第一標誌;步驟34:根據代碼00的執行結果判斷是否需要繼續執行代碼00;如果需要執行步驟35,如果不需要執行步驟36;步驟35:再次執行代碼00,並將標誌位元設為第二標誌,執行步驟36;步驟36:根據代碼10的執行結果判斷是否需要繼續執行代碼10;如果需要執行步驟37,如果不需要執行步驟38;步驟37:再次執行代碼10,並將標誌位元設為第二標 誌,執行步驟38;步驟38:判斷標誌位元是否第一標誌,如果不是,重複執行步驟33;直到標誌位元為第一標誌時,迴圈結束。
- 一種提升CPU並行性能的方法,該方法包括:獲取分配到同一CPU核心的相同類型的資料請求;確定獲取到的資料請求的請求個數;如果該請求個數大於或者等於並行數,該CPU核心獲取對應該並行數的可執行代碼並執行;其中,該並行數為該CPU提供的最大平行線程的數量;該可執行代碼為預先根據並行數編譯後鏈接而成的代碼程式,其中,在該預先根據並行數編譯過程中:如果並行數為2,代碼00和代碼10的跳轉指令都是向下跳轉,執行如下步驟:步驟41:執行代碼00;步驟42:執行代碼00的跳轉指令00,如果不跳轉執行步驟43;如果跳轉執行步驟44;步驟43:循序執行指令,即執行步驟44;步驟44:執行代碼10;步驟45:執行代碼10的跳轉指令10,如果不跳轉執行步驟46;如果跳轉執行步驟47;步驟46:循序執行指令,即執行步驟47;步驟47:執行下一代碼01。
- 根據請求項1或2所述的方法,該方法還包括:如果該請求個數小於並行數,並且獲取次數小於並行數,執行該獲取分配到同一CPU核心的相同類型的資料請求;其中,該獲取次數為獲取資料請求的次數。
- 根據請求項1或2所述的方法,該方法還包括:如果該請求個數小於並行數但大於0,並且獲取次數不小於並行數,該CPU核心獲取對應該請求個數的可執行代碼並執行;其中,該獲取次數為獲取資料請求的次數。
- 根據請求項4所述的方法,該方法還包括:如果該請求個數等於0,並且該獲取次數不小於並行數,執行該獲取分配到同一CPU核心的相同類型的資料請求。
- 根據請求項1所述的方法,根據代碼的執行結果判斷是否需要再次執行代碼,具體包括:如果代碼的執行結果符合閾值,確定需要再次執行代碼;如果代碼的執行結果不符合閾值,確定不需要再次執行代碼。
- 一種提升CPU並行性能的裝置,該裝置包括:獲取單元,獲取分配到同一CPU核心的相同類型的資 料請求;確定單元,確定獲取到的資料請求的請求個數;執行單元,如果該請求個數大於或者等於並行數,所述CPU核心獲取對應該並行數的可執行代碼並執行;其中,該並行數為該CPU提供的最大平行線程的數量;該可執行代碼為預先根據並行數編譯後鏈接而成的代碼程式,其中,在該預先根據並行數編譯過程中:如果並行數為2,代碼00和代碼10的跳轉指令都是向上跳轉,執行如下步驟:步驟31:執行代碼00;步驟32:執行代碼10;步驟33:設置標誌位元設為第一標誌;步驟34:根據代碼00的執行結果判斷是否需要繼續執行代碼00;如果需要執行步驟35,如果不需要執行步驟36;步驟35:再次執行代碼00,並將標誌位元設為第二標誌,執行步驟36;步驟36:根據代碼10的執行結果判斷是否需要繼續執行代碼10;如果需要執行步驟37,如果不需要執行步驟38;步驟37:再次執行代碼10,並將標誌位元設為第二標誌,執行步驟38;步驟38:判斷標誌位元是否第一標誌,如果不是,重複執行步驟33;直到標誌位元為第一標誌時,迴圈結束。
- 一種提升CPU並行性能的裝置,該裝置包括:獲取單元,獲取分配到同一CPU核心的相同類型的資料請求;確定單元,確定獲取到的資料請求的請求個數;執行單元,如果該請求個數大於或者等於並行數,所述CPU核心獲取對應該並行數的可執行代碼並執行;其中,該並行數為該CPU提供的最大平行線程的數量;該可執行代碼為預先根據並行數編譯後鏈接而成的代碼程式,其中,在該預先根據並行數編譯過程中:如果並行數為2,代碼00和代碼10的跳轉指令都是向下跳轉,執行如下步驟:步驟41:執行代碼00;步驟42:執行代碼00的跳轉指令00,如果不跳轉執行步驟43;如果跳轉執行步驟44;步驟43:循序執行指令,即執行步驟44;步驟44:執行代碼10;步驟45:執行代碼10的跳轉指令10,如果不跳轉執行步驟46;如果跳轉執行步驟47;步驟46:循序執行指令,即執行步驟47;步驟47:執行下一代碼01。
- 一種電子設備,包括:處理器; 用於儲存處理器可執行指令的記憶體;其中,該處理器被配置為上述請求項1-6中任一項所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910175628.8A CN110032407B (zh) | 2019-03-08 | 2019-03-08 | 提升cpu并行性能的方法及装置和电子设备 |
CN201910175628.8 | 2019-03-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202036287A TW202036287A (zh) | 2020-10-01 |
TWI724505B true TWI724505B (zh) | 2021-04-11 |
Family
ID=67235153
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108130000A TWI724505B (zh) | 2019-03-08 | 2019-08-22 | 提升cpu並行性能的方法及裝置和電子設備 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10783004B1 (zh) |
EP (1) | EP3857362A1 (zh) |
CN (1) | CN110032407B (zh) |
TW (1) | TWI724505B (zh) |
WO (1) | WO2020185328A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110032407B (zh) | 2019-03-08 | 2020-12-22 | 创新先进技术有限公司 | 提升cpu并行性能的方法及装置和电子设备 |
CN114218017B (zh) * | 2022-02-18 | 2022-05-10 | 苏州浪潮智能科技有限公司 | 一种数据恢复方法、系统、装置及存储设备 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201351276A (zh) * | 2012-01-18 | 2013-12-16 | Nvidia Corp | 計算工作的排程和執行 |
TW201351277A (zh) * | 2012-03-05 | 2013-12-16 | Nvidia Corp | 平行執行緒子集合的均衡載入處理 |
TW201439905A (zh) * | 2012-11-05 | 2014-10-16 | Nvidia Corp | 使用一群組的執行緒執行循序碼的系統及方法和應用其之單一指令多執行緒處理器 |
TW201443825A (zh) * | 2012-12-10 | 2014-11-16 | Nvidia Corp | 運用於執行緒單一指令多重資料執行之編譯器控制區域排程 |
TW201504948A (zh) * | 2013-03-15 | 2015-02-01 | Soft Machines Inc | 執行群組爲區塊的多重執行緒指令的方法 |
TW201610838A (zh) * | 2014-03-27 | 2016-03-16 | 萬國商業機器公司 | 用於分派電腦中多執行緒之開始虛擬執行指令 |
TW201610855A (zh) * | 2014-03-27 | 2016-03-16 | 萬國商業機器公司 | 用於管理電腦中多執行緒之控制區 |
TW201610839A (zh) * | 2014-03-27 | 2016-03-16 | 萬國商業機器公司 | 多執行緒之動態致能 |
TW201629759A (zh) * | 2015-02-03 | 2016-08-16 | Alibaba Group Services Ltd | 一種cpu資源分配的方法、裝置及電子設備 |
TW201729071A (zh) * | 2015-09-23 | 2017-08-16 | 高通公司 | 在多核心架構上用於資料平行處理之適應性組塊大小調諧 |
TW201824002A (zh) * | 2016-12-20 | 2018-07-01 | 聯發科技股份有限公司 | 複數個執行緒的記憶體存取方法及系統 |
TW201823971A (zh) * | 2016-12-12 | 2018-07-01 | 美商英特爾股份有限公司 | 用於處理器架構的設備及方法 |
TW201843593A (zh) * | 2017-05-05 | 2018-12-16 | 南韓商三星電子股份有限公司 | 多處理器系統、資料管理方法及非暫時性電腦可讀媒體 |
TW201901608A (zh) * | 2017-05-12 | 2019-01-01 | 美商谷歌有限責任公司 | 在多核心影像處理器上之應用程式軟體之組態 |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103646009B (zh) * | 2006-04-12 | 2016-08-17 | 索夫特机械公司 | 对载明并行和依赖运算的指令矩阵进行处理的装置和方法 |
JP4936517B2 (ja) * | 2006-06-06 | 2012-05-23 | 学校法人早稲田大学 | ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ |
US8225325B2 (en) * | 2008-06-06 | 2012-07-17 | Apple Inc. | Multi-dimensional thread grouping for multiple processors |
US8286198B2 (en) * | 2008-06-06 | 2012-10-09 | Apple Inc. | Application programming interfaces for data parallel computing on multiple processors |
JP5547208B2 (ja) * | 2008-11-24 | 2014-07-09 | インテル コーポレイション | シーケンシャル・プログラムを複数スレッドに分解し、スレッドを実行し、シーケンシャルな実行を再構成するシステム、方法および装置 |
KR101626378B1 (ko) * | 2009-12-28 | 2016-06-01 | 삼성전자주식회사 | 병렬도를 고려한 병렬 처리 장치 및 방법 |
CN101989192A (zh) * | 2010-11-04 | 2011-03-23 | 浙江大学 | 一种程序自动并行化的方法 |
KR101738641B1 (ko) * | 2010-12-17 | 2017-05-23 | 삼성전자주식회사 | 멀티 코어 시스템의 프로그램 컴파일 장치 및 방법 |
US9361079B2 (en) * | 2012-01-30 | 2016-06-07 | Nvidia Corporation | Method for compiling a parallel thread execution program for general execution |
US9134974B2 (en) | 2012-11-12 | 2015-09-15 | Signalogic, Inc. | Source code separation and generation for heterogeneous central processing unit (CPU) computational devices |
EP2767904B1 (en) * | 2013-02-18 | 2018-07-04 | Hybridserver Tec IP GmbH | Method, processing modules and system for executing an executable code |
CN104216684B (zh) * | 2013-06-04 | 2017-05-31 | 阿里巴巴集团控股有限公司 | 一种多核并行系统及其数据处理方法 |
US10055228B2 (en) * | 2013-08-19 | 2018-08-21 | Shanghai Xinhao Microelectronics Co. Ltd. | High performance processor system and method based on general purpose units |
CN103714039B (zh) * | 2013-12-25 | 2017-01-11 | 中国人民解放军国防科学技术大学 | 通用计算数字信号处理器 |
JP6168635B2 (ja) * | 2014-03-28 | 2017-07-26 | 株式会社日立製作所 | データベース管理システム、計算機、データベース管理方法 |
US10523957B2 (en) * | 2014-10-08 | 2019-12-31 | Vid Scale, Inc. | Optimization using multi-threaded parallel processing framework |
CN105677297B (zh) * | 2014-11-18 | 2018-05-04 | 龙芯中科技术有限公司 | 套锁实现方法及装置 |
US9875192B1 (en) * | 2015-06-25 | 2018-01-23 | Amazon Technologies, Inc. | File system service for virtualized graphics processing units |
JP2017037370A (ja) * | 2015-08-06 | 2017-02-16 | 富士通株式会社 | 計算機、プロセス制御方法およびプロセス制御プログラム |
EP3208712B1 (en) * | 2016-02-22 | 2020-02-19 | Karlsruher Institut für Technologie | Computer system and method for parallel program code optimization and deployment |
WO2018094087A1 (en) * | 2016-11-17 | 2018-05-24 | The Mathworks, Inc. | Systems and methods for generating code for parallel processing units |
EP3343351B1 (en) * | 2016-12-28 | 2023-04-26 | Waseda University | Parallel program generating method and parallelization compiling apparatus |
US10261835B2 (en) * | 2017-03-21 | 2019-04-16 | Arm Limited | Hardware thread scheduling |
US11373242B2 (en) * | 2017-06-29 | 2022-06-28 | Chicago Mercantile Exchange Inc. | Optimization processor for electronic data multiple transaction request messages |
US10802831B2 (en) * | 2017-06-30 | 2020-10-13 | Sap Se | Managing parallel processing |
US10997180B2 (en) * | 2018-01-31 | 2021-05-04 | Splunk Inc. | Dynamic query processor for streaming and batch queries |
CN110032407B (zh) | 2019-03-08 | 2020-12-22 | 创新先进技术有限公司 | 提升cpu并行性能的方法及装置和电子设备 |
-
2019
- 2019-03-08 CN CN201910175628.8A patent/CN110032407B/zh active Active
- 2019-08-22 TW TW108130000A patent/TWI724505B/zh active
-
2020
- 2020-02-04 WO PCT/US2020/016607 patent/WO2020185328A1/en unknown
- 2020-02-04 EP EP20709055.6A patent/EP3857362A1/en not_active Withdrawn
- 2020-02-19 US US16/794,971 patent/US10783004B1/en active Active
- 2020-07-31 US US16/945,589 patent/US11080094B2/en active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201351276A (zh) * | 2012-01-18 | 2013-12-16 | Nvidia Corp | 計算工作的排程和執行 |
TW201351277A (zh) * | 2012-03-05 | 2013-12-16 | Nvidia Corp | 平行執行緒子集合的均衡載入處理 |
TW201439905A (zh) * | 2012-11-05 | 2014-10-16 | Nvidia Corp | 使用一群組的執行緒執行循序碼的系統及方法和應用其之單一指令多執行緒處理器 |
TW201443783A (zh) * | 2012-11-05 | 2014-11-16 | Nvidia Corp | 在單一指令多執行緒處理器上以函數呼叫編譯或執行時間執行一分叉-會合資料平行程式的系統及方法 |
TW201443825A (zh) * | 2012-12-10 | 2014-11-16 | Nvidia Corp | 運用於執行緒單一指令多重資料執行之編譯器控制區域排程 |
TW201504948A (zh) * | 2013-03-15 | 2015-02-01 | Soft Machines Inc | 執行群組爲區塊的多重執行緒指令的方法 |
TW201610838A (zh) * | 2014-03-27 | 2016-03-16 | 萬國商業機器公司 | 用於分派電腦中多執行緒之開始虛擬執行指令 |
TW201610855A (zh) * | 2014-03-27 | 2016-03-16 | 萬國商業機器公司 | 用於管理電腦中多執行緒之控制區 |
TW201610839A (zh) * | 2014-03-27 | 2016-03-16 | 萬國商業機器公司 | 多執行緒之動態致能 |
TW201629759A (zh) * | 2015-02-03 | 2016-08-16 | Alibaba Group Services Ltd | 一種cpu資源分配的方法、裝置及電子設備 |
TW201729071A (zh) * | 2015-09-23 | 2017-08-16 | 高通公司 | 在多核心架構上用於資料平行處理之適應性組塊大小調諧 |
TW201823971A (zh) * | 2016-12-12 | 2018-07-01 | 美商英特爾股份有限公司 | 用於處理器架構的設備及方法 |
TW201824002A (zh) * | 2016-12-20 | 2018-07-01 | 聯發科技股份有限公司 | 複數個執行緒的記憶體存取方法及系統 |
TW201843593A (zh) * | 2017-05-05 | 2018-12-16 | 南韓商三星電子股份有限公司 | 多處理器系統、資料管理方法及非暫時性電腦可讀媒體 |
TW201901608A (zh) * | 2017-05-12 | 2019-01-01 | 美商谷歌有限責任公司 | 在多核心影像處理器上之應用程式軟體之組態 |
Also Published As
Publication number | Publication date |
---|---|
CN110032407A (zh) | 2019-07-19 |
US20200364090A1 (en) | 2020-11-19 |
EP3857362A1 (en) | 2021-08-04 |
CN110032407B (zh) | 2020-12-22 |
US11080094B2 (en) | 2021-08-03 |
US10783004B1 (en) | 2020-09-22 |
TW202036287A (zh) | 2020-10-01 |
US20200285522A1 (en) | 2020-09-10 |
WO2020185328A1 (en) | 2020-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10198264B2 (en) | Sorting data and merging sorted data in an instruction set architecture | |
US8893104B2 (en) | Method and apparatus for register spill minimization | |
US9678790B2 (en) | Devices and methods implementing operations for selective enforcement of task dependencies | |
US11204859B2 (en) | Partial-results post-silicon hardware exerciser | |
TWI724505B (zh) | 提升cpu並行性能的方法及裝置和電子設備 | |
RU2635044C2 (ru) | Режим слежения в устройстве обработки в системах трассировки команд | |
TWI724065B (zh) | 包含用於控制流向終止的模式特定結束分支之處理器及系統 | |
CN112698888A (zh) | 应用程序的组件化、组件调用和组件初始化方法及其装置 | |
US9286125B2 (en) | Processing engine implementing job arbitration with ordering status | |
US9195404B2 (en) | Exposing protected memory addresses | |
Su et al. | An efficient GPU implementation of inclusion-based pointer analysis | |
JP2016510472A (ja) | ソフトウェア・モジュールの並行動作 | |
US10089088B2 (en) | Computer that performs compiling, compiler program, and link program | |
US10261904B2 (en) | Memory sequencing with coherent and non-coherent sub-systems | |
CN110955503A (zh) | 任务调度方法及装置 | |
JP2022550059A (ja) | プロセッサおよびその内部の割り込みコントローラ | |
US20230097765A1 (en) | Pseudorandom Thread Generation | |
CN114217856A (zh) | 面向AArch64架构的CPU指令微基准测试方法及系统 | |
US9875187B2 (en) | Interruption of a page miss handler | |
US11513841B2 (en) | Method and system for scheduling tasks in a computing system | |
US9141310B1 (en) | Methods and apparatuses for shared state information among concurrently running processes or threads | |
Lewis | Fundamentals of embedded software with the ARM Cortex-M3 | |
US11966726B2 (en) | Operating system (OS) scheduler and compiler for code generation optimization in a (simultaneous multi-threading) SMT enabled CPU | |
US10812075B2 (en) | Dynamic on-die termination | |
US20240004670A1 (en) | Computer system executing multiple operating systems |