TWI522922B - 多核心裝置以及其多執行緒排程方法 - Google Patents

多核心裝置以及其多執行緒排程方法 Download PDF

Info

Publication number
TWI522922B
TWI522922B TW102131948A TW102131948A TWI522922B TW I522922 B TWI522922 B TW I522922B TW 102131948 A TW102131948 A TW 102131948A TW 102131948 A TW102131948 A TW 102131948A TW I522922 B TWI522922 B TW I522922B
Authority
TW
Taiwan
Prior art keywords
thread
waiting time
critical
threads
mentioned
Prior art date
Application number
TW102131948A
Other languages
English (en)
Other versions
TW201413594A (zh
Inventor
張文彥
吳志聰
賴清宗
Original Assignee
宏達國際電子股份有限公司
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 宏達國際電子股份有限公司 filed Critical 宏達國際電子股份有限公司
Publication of TW201413594A publication Critical patent/TW201413594A/zh
Application granted granted Critical
Publication of TWI522922B publication Critical patent/TWI522922B/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/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
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Description

多核心裝置以及其多執行緒排程方法
本發明主要係關於多核心裝置(multi-core device),且特別有關於多核心裝置之多執行緒管理(multi-thread management)。
一排程器(scheduler)係為現代作業系統(OS)之資源仲裁設計(arbiter),用於決定所有可執行之執行緒(threads)或工作(tasks)之執行順序。傳統上,作業系統的排程規則係以優先權(priority)為考量。高優先權的執行緒優於低優先權的執行緒領先執行。此外,相較於低優先權的執行緒,高優先權的執行緒所配置得到的執行區間較長。
至於多核心裝置的作業系統,其排程器會定期將所有可執行之執行緒均勻配置給各中央處理單元,此動作稱為執行緒負載平衡(thread load balancing)。傳統上,執行緒負載平衡在考量執行緒優先權外,係以均衡不同中央處理單元之執行緒數量為目的。然而,僅考量執行緒數量或優先權的執行緒負載平衡並無法確實將各執行緒(或事件)實際的負載程度考慮於其中。因為,不同的執行緒對中央處理單元之資源的需求量不同。傳統技術無法保證各執行緒是配置由該些中央處理單元 中適當的該個中央處理單元執行。此外,執行緒效能危急時(critical problem),空等下一個傳統執行緒負載平衡時間區間到來可能會來不及處理當下危急的執行緒負載問題(本說明書所揭露技術將此類問題反映成執行緒效能危急狀況)。以上問題在行動裝置上更嚴重,因為行動裝置一般會將閒置的中央處理單元關閉以節省電池用電,如此會導致只有少數個中央處理單元得以用來分擔工作量。
本說明書揭露一種多核心裝置以及一種多執行緒排程方法。
根據本發明一種實施方式所實現的一多核心裝置包括:一多核心處理器,一隨機存取記憶體以及一程式碼儲存裝置。該多核心處理器包括複數個中央處理單元。該隨機存取記憶體係耦接該多核心處理器。該多核心處理器以該隨機存取記憶體儲存一執行緒的執行緒效能相關參數。該程式碼儲存裝置存有作業系統程式碼,經該多核心處理器執行,以提供一作業系統排程器於該等中央處理單元之間實行執行緒負載平衡。所述執行緒負載平衡係根據該執行緒的執行緒效能危急狀況實施。所述執行緒效能危急狀況係基於上述執行緒效能相關參數作判定。
另外有一種實施方式係揭露多核心裝置的一種多執行緒排程方法,包括以下步驟:紀錄一執行緒的執行緒效能相關參數;並且,於該多核心裝置的一多核心處理器的複數個中央處理單元之間實施執行緒負載平衡。所述執行緒負載平衡 係根據該執行緒的執行緒效能危急狀況實施。所述執行緒效能危急狀況係基於上述執行緒效能相關參數作判定。
下文特舉實施例,並配合所附圖示,詳細說明本發明的內容。
100‧‧‧多核心裝置
102‧‧‧多核心處理器
104‧‧‧程式碼儲存裝置
106‧‧‧隨機存取記憶體
108‧‧‧作業系統程式碼
202‧‧‧中斷計數
204‧‧‧等待時間資訊
206‧‧‧每秒百萬指令數/時脈數資訊
208‧‧‧危急標誌
210‧‧‧歷來等待時間資訊
212‧‧‧當下估算之等待時間
214‧‧‧歷來每秒百萬指令數/時脈數資訊
216‧‧‧當下估算之每秒百萬指令數/時脈數
302‧‧‧可執行狀態
304‧‧‧執行中狀態
306‧‧‧阻隔狀態
308‧‧‧消滅狀態
310‧‧‧判斷操作,判斷執行緒為可執行或是執行中
312‧‧‧判斷操作,判斷執行緒是否遭強制結束
314‧‧‧判斷操作,判斷執行緒乃遭強制結束或係程序結束
316‧‧‧判斷操作,判斷系統資源使用權是否被奪
322‧‧‧重置等待時間之計數、且將中斷計數歸零
324‧‧‧計算且確認等待時間、且確認執行緒效能是否危急、且使每秒百萬指令數/時脈數之計數重置
326‧‧‧中斷計數遞增1、且估算每秒百萬指令數/時脈數、且判斷執行緒效能是否危急、且重置等待時間之計數
328‧‧‧使每秒百萬指令數/時脈數之計數重置
330‧‧‧重置等待時間之計數、且使中斷計數歸零
400、500‧‧‧查表規則
APP1、APP2、APP3‧‧‧應用程式
CPU1…CPU4‧‧‧中央處理單元
PAP、PAP1、PAP2‧‧‧效能相關參數
S402…S414、S502…S514‧‧‧步驟
TI1、TI2‧‧‧執行緒傳統資訊
TH、TH1、TH2…TH7‧‧‧執行緒
(C)‧‧‧標誌,標示執行緒效能危急
(NC)‧‧‧標誌,標示執行緒非危急
第1圖以方塊圖圖解根據本發明一種實施方式所實施的一多核心裝置100;第2圖根據本發明一種實施方式圖解效能相關參數PAP的一種資料結構;第3圖根據本發明一種實施方式圖解一執行緒的狀態圖;第4A圖以及第4B圖用於說明基於歷來等待時間資訊(第2圖之210)以及當下估算之等待時間(第2圖之212)而作的執行緒效能判斷演算法(藉方塊324執行);第5A圖以及第5B圖用於說明基於歷來每秒百萬指令數/時脈數資訊(第2圖之214)以及當下估算之每秒百萬指令數/時脈數(第2圖之216)而作的執行緒效能判斷演算法(藉方塊326執行);第6圖圖解一多核心處理器之不同中央處理單元CPU1~CPU4之間的執行緒負載平衡。
以下敘述列舉本發明的多種實施例。以下敘述介紹本發明的基本概念,且並非意圖限制本發明內容。實際發明範圍應依照申請專利範圍界定之。
第1圖以方塊圖圖解根據本發明一種實施方式所實現的一多核心裝置(multi-core device)100。多核心裝置100包括一多核心處理器(multi-core processor)102、一程式碼儲存裝置104以及一隨機存取記憶體106。該多核心處理器102包括多個中央處理單元CPU1、CPU2、CPU3與CPU4。程式碼儲存裝置104存有作業系統程式碼108,由該多核心處理器102執行,以實現一作業系統排程器,對執行緒(thread)或工作(task)作管理。所述作業系統排程器負責執行緒效能估算,且於不同中央處理單元CPU1~CPU4之間實施執行緒負載平衡。藉由所述執行作業系統排程器,多核心處理器102估算各執行緒的效能,並基於所估算的執行緒效能分配執行緒至該些中央處理單元CPU1、CPU2、CPU3以及CPU4。多核心處理器102係採用隨機存取記憶體106儲存執行緒效能相關參數(PAP1、PAP2…),以做執行緒效能估算、且在該些中央處理單元CPU1~CPU4間作執行緒負載平衡。
以第1圖所示之實施方式為例,每一執行緒的效能相關參數係與傳統執行緒資訊(如,執行緒序文,thread context)一同暫時儲存在該隨機存取記憶體106中。如圖所示,執行緒TH1的效能相關參數PAP1與執行緒TH1的傳統執行緒資訊TI1一同儲存在隨機存取記憶體106中,執行緒TH2的效能相關參數PAP2與執行緒TH2的傳統執行緒資訊TI2一同儲存在隨機存取記憶體106中,其餘類推。
第2圖根據本發明一種實施方式圖解效能相關參數PAP的資料結構。關於執行緒TH,與傳統執行緒資訊TI一同 儲存在隨機存取記憶體中的效能相關參數PAP包括中斷計數202、等待時間資訊204、每秒百萬指令數/時脈數資訊206、以及危急標籤208。歷來等待時間資訊210以及當下估算之等待時間212都記錄在等待時間資訊204中。歷來每秒百萬指令數/時脈數資訊214以及當下估算之每秒百萬指令數/時脈數216都記錄在每秒百萬指令數/時脈數資訊206中。以下段落討論效能相關參數PAP如何應用在執行緒效能估算以及執行緒負載平衡上。
第3圖根據本發明一種實施方式圖解一執行緒如何在多種狀態間切換。在作業系統排程器操作下,一執行緒會在可執行狀態(runnable state)302、執行中狀態(running state)304、阻隔狀態(blocked state)306以及消滅狀態(dead state)308之間切換。在可執行狀態302,執行緒列隊於可執行佇列中,競爭處理器資源。當執行緒獲得處理器資源,執行緒係切換到執行中狀態304執行。當執行中的執行緒需暫停等待某事件(例如,輸入輸出中斷事件),執行緒係切換到阻隔狀態306。當執行緒所等待的事件發生但處理器資源已經被其他更高優先權的執行緒佔據時(對應判斷方塊310,釋放出來的執行緒僅為可執行但無法立即執行),釋放出的執行緒係切換至可執行狀態302且被推入可執行佇列;反之,釋放出的執行緒係切換回執行中狀態304完成後續動作。當執行緒遭強制終止或係程序結束(對應判斷方塊312、314),執行緒係切換到消滅狀態308。此外,執行中的執行緒會在面臨更高優先權之執行緒時被奪走處理器資源,因而延滯執行。被延滯執行的執行緒應 當脫離執行中狀態304且再次被推入可執行佇列成可執行狀態302。方塊322~330顯示效能相關參數PAP在不同執行緒狀態下如何變化與應用。效能危急判斷係由方塊324與326執行。
如方塊322所示,新執行緒產生時,需將其等待時間之計數重置、並將其中斷計數歸零。等待時間顯示執行緒切換至執行中狀態304前在可執行狀態302中等待多久。參閱方塊324,執行緒切換到執行中狀態304時,總結其滯留在可執行狀態302的等待時間,以據以判斷執行緒是否面臨效能危急問題。執行緒效能危急時,執行緒需要更多的處理器資源完成其工作。過長的等待時間可能表示執行緒效能危急。執行緒若被判定效能危急,即標記第2圖之危急標誌208(如,確認執行緒效能危急狀況)。
此外,參閱方塊324,每秒百萬指令數/時脈數係在執行緒切換至執行中狀態304時重置。每秒百萬指令數英文簡稱為MIPS,代表執行緒於執行中狀態304的執行速度,也可以時鐘之時脈計數代表(例如,將中央處理單元之頻率乘上一計時器輸出即可得之)。另外,參閱方塊326,每當執行緒對系統資源的使用優先權被超越(preempted),執行緒的中斷計數加1,該執行緒於執行中狀態304的每秒百萬指令數/時脈數遭總結,據以判斷執行緒的效能是否危急。低每秒百萬指令數/時脈數可代表執行緒效能低落。若執行緒效能危急,標記第2圖危急標誌208。
執行緒的等待時間可更在方塊326或方塊330重置,此時執行緒再次切換回可執行狀態302。每秒百萬指令數/ 時脈數可更如方塊328於執行緒自阻隔狀態306釋放切換至執行中狀態304時重置。此外,當阻隔狀態306所釋放出的執行緒是再次被推入可執行佇列(切換至可執行狀態302),如方塊330所示歸零其中斷計數。中斷計數可及時由第2圖所示、隨機存取記憶體106之欄位202紀錄。當下估算之等待時間(於方塊324觀察得)係最新計數的等待時間,可及時由第2圖所示、隨機存取記憶體106之欄位212紀錄。當下估算之每秒百萬指令數/時脈數係也是最新計數的結果,可及時由第2圖所示、隨機存取記憶體106之欄位216紀錄。此外,等待時間與每秒百萬指令數/時脈數的歷來資訊可由第2圖所示、隨機存取記憶體106之欄位210與214分別紀錄,係隨當下估算之等待時間212以及每秒百萬指令數/時脈數216更新。中斷計數係用於方塊324之執行緒效能判斷,決定歷來等待時間資訊210與當前估算之等待時間212之間的考量比例。中斷計數更用於方塊326之執行緒效能判斷,決定歷來每秒百萬指令數/時脈數資訊214與當下估算之每秒百萬指令數/時脈數216之間的考量比例。高中斷計數表示歷來資訊210或214需以更高比重做考量。
第4A圖以及第4B圖圖解基於歷來等待時間資訊(第2圖之210)以及當下估算之等待時間(第2圖之212)而形成的執行緒效能判斷演算法(藉方塊324執行)。參閱第4A圖,五數值Latency[0]、Latency[1]、Latency[2]、Latency[3]以及Latency[4]受監控,紀錄為歷來等待時間資訊210,其中:Latency[0]=Latency[0]x(A0-1)/A0+Curr_Latency/A0
Latency[1]=Latency[1]x(A1-1)/A1+Curr_Latency/A1
Latency[2]=Latency[2]x(A2-1)/A2+Curr_Latency/A2
Latency[3]=Latency[3]x(A3-1)/A3+Curr_Latency/A3
Latency[4]=Latency[4]x(A4-1)/A4+Curr_Latency/A4
Curr_Latency為當下估算之等待時間,由方塊324估算,且紀錄於欄位212。至於參數A0~A4,係A0<A1<A2<A3<A4;如,A0=1、A1=2、A2=4、A3=8且A4=16。隨著索引值增加,歷來等待時間資訊越具代表性。所揭露之演算法係根據一查表規則400操作,以下以第4B圖之流程圖說明之。
參閱第4B圖所描述之查表規則400,步驟S402負責將中斷計數之邏輯右移量n(用來做”>>n”邏輯運算)初始化為0。步驟S404判斷中斷計數作邏輯右移n位元後是否為0。若中斷計數邏輯右移n位元後還不為0,實施步驟S406,將n值加1。一旦中斷計數邏輯右移n位元後為0,實施步驟S408,將等待時間評斷值設定為Latency[n]。步驟S410判斷當下估算之等待時間Curr_Latency是否較該等待時間評斷值(Latency[n])長。若當下估算之等待時間Curr_Latency較該等待時間評斷值(Latency[n])長,實施步驟S412,判定執行緒效能危急,標記第2圖之危急標誌208。反之,實施步驟S414,判定執行緒效能不危急,無須標記(或,將清除)第2圖之危急標誌208(如,係顯示一執行緒效能危急狀況不成立)。
舉例來說,若中斷計數為4,邏輯右移運算將得出零值發生在邏輯右移3位元時(4>>3=0)。因此,數值Latency[3]被檢出,以與數值Curr_Latency比較。當數值Curr_Latency長於數值Latency[3],意指執行緒效能危急。反之,代表執行緒 效能不危急。
第5A圖以及第5B圖圖解基於歷來每秒百萬指令數/時脈數(第2圖之214)以及當下估算之每秒百萬指令數/時脈數(第2圖之216)而形成的執行緒效能判斷演算法(藉方塊326執行)。參閱第5A圖,五數值MIPS[0]、MIPS[1]、MIPS[2]、MIPS[3]以及MIPS[4]受監控,紀錄為歷來每秒百萬指令數/時脈數資訊214,其中:MIPS[0]=MIPS[0]x(A0-1)/A0+Curr_MIPS/A0
MIPS[1]=MIPS[1]x(A1-1)/A1+Curr_MIPS/A1
MIPS[2]=MIPS[2]x(A2-1)/A2+Curr_MIPS/A2
MIPS[3]=MIPS[3]x(A3-1)/A3+Curr_MIPS/A3
MIPS[4]=MIPS[4]x(A4-1)/A4+Curr_MIPS/A4
Curr_MIPS為當下估算之每秒百萬指令數/時脈數,由方塊326估算,且紀錄於欄位216。至於參數A0~A4,係A0<A1<A2<A3<A4;如,A0=1、A1=2、A2=4、A3=8且A4=16。隨著索引值增加,歷來每秒百萬指令數/時脈數越具代表性。所揭露之演算法係根據一查表規則500操作,以下以第5B圖之流程圖說明之。
參閱第5B圖所描述之查表規則500,步驟S502負責將中斷計數之邏輯右移量n(用來做”>>n”邏輯運算)初始化為0。步驟S504判斷中斷計數邏輯右移n位元後是否為0。若中斷計數作邏輯右移n位元後還不為0,實施步驟S506將n值加1。一旦中斷計數之邏輯右移n位元後為0,實施步驟S508將每秒百萬指令數/時脈數評斷值設定為MIPS[n]。步驟S510判斷當下估 算之每秒百萬指令數/時脈數Curr_MIPS是否較該每秒百萬指令數/時脈數評斷值(MIPS[n])低。若當下估算之每秒百萬指令數/時脈數Curr_MIPS較該每秒百萬指令數/時脈數評斷值(MIPS[n])低,實施步驟S512,判定執行緒效能危急,標記第2圖之危急標誌208。反之,實施步驟S514,判定執行緒效能不危急,無須標記(或,將清除)第2圖之危急標誌208(如,顯示一執行緒效能危急狀況不成立)。
舉例來說,若中斷計數為4,邏輯右移運算將得出零值發生在邏輯右移3位元時(4>>3=0)。因此,數值MIPS[3]被檢出,以與數值Curr_MIPS比較。當數值Curr_MIPS少於數值MIPS[3],意指執行緒效能危急。反之,代表執行緒效能不危急。
請留意評斷值候選並不限定為5個(不限定為Latency[0]~Latency[4]或MIPS[0]~MIPS[4]),並且,參數A0~A4並不限定為20~24,係可隨使用者需求設定。
在其他實施方式中,執行緒於可執行佇列之等待時間可無須納入考量;執行緒效能判斷係賴於每秒百萬指令數/時脈數。在某些實施方式中,每秒百萬指令數/時脈數可無須納入考量,執行緒效能判斷係賴於等待時間。
作業系統排程器的執行緒負載平衡程序將參考不同執行緒的危急標誌208操作。第6圖以圖例說明一多核心處理器不同中央處理單元CPU1~CPU4之間的執行緒負載平衡。如圖所示,多核心裝置上運行三個應用程式APP1、APP2與APP3。應用程式APP1包括三個執行緒TH1、TH2與TH3,危急標誌分 別為’C’、’NC’與’C’。以下以’C’代表執行緒效能危急,’NC’代表執行緒非效能危急。應用程式APP2包括兩個執行緒TH4以及TH5,危急標誌分別為’C’與’NC’。應用程式APP3包括兩個執行緒TH6以及TH7,危急標誌分別為’NC’與’C’。根據不同執行緒TH1~TH7各自的危急標誌,作業系統排程器所做的執行緒負載平衡程序將執行緒TH1~TH7分配給該些中央處理單元CPU1~CPU4以平衡工作量。如圖所示,判定為效能危急的該些執行緒TH1、TH3、TH4以及TH7係分散配置給不同的中央處理單元CPU1~CPU4。相較之,傳統執行緒負載平衡技術僅考量不同中央處理單元之執行緒數量平衡、而未考慮執行緒效能危急狀況。本說明書所揭露之執行緒負載平衡技術顯著提升多核心處理器整體效能。
此外,所揭露之執行緒負載平衡程序可更考量依據動態電壓與頻率調節(dynamic voltage and frequency sealing,DVFS)機制,以調升使用中的處理器頻率,緩解執行緒效能危急狀況。因此,所有中央處理單元上的危急之工作/執行緒數量可及時減少,因而增加整體系統效能。
此外,根據本說明書所揭露之執行緒效能判斷技術,節能模式(例如,睡眠模式)的中央處理單元可被喚醒以執行效能危急的執行緒。例如,若偵測到效能極危急之執行緒(例如,執行緒等待時間相當長、或者每秒百萬指令數/時脈數相當低),睡眠模式的中央處理單元可立即被喚醒,以緩解效能危急的執行緒。
另外有一種實施方式係有關於一多核心裝置的一 種多執行緒排程方法,包括以下步驟:估算各執行緒的執行緒效能;並且,基於所估算的執行緒效能分配執行緒給一多核心處理器的複數個中央處理單元。特別是,所揭露技術包括針對各執行緒估算效能相關參數,已實施執行緒效能估算、並在複數個中央處理單元之間實施負載平衡。
所揭露之多執行緒排程方法可如第1圖所示編碼入作業系統程式碼。然而,所揭露之多執行緒排程方法並不限定要以第1圖所示之計算機架構實現。任何基於所揭露之多執行緒排程方法而實現的多執行緒管理方式都屬本案所欲保護內容。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何熟悉此項技藝者,在不脫離本發明之精神和範圍內,當可做些許更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
302‧‧‧可執行狀態
304‧‧‧執行中狀態
306‧‧‧阻隔狀態
308‧‧‧消滅狀態
310‧‧‧判斷操作,判斷執行緒為可執行或是執行中
312‧‧‧判斷操作,判斷執行緒是否遭強制結束
314‧‧‧判斷操作,判斷執行緒乃遭強制結束或係程序結束
316‧‧‧判斷操作,判斷系統資源使用權是否被奪
322‧‧‧重置等待時間之計數、且將中斷計數歸零
324‧‧‧計算且確認等待時間、且確認執行緒效能是否危急、且使每秒百萬指令數/時脈數之計數重置
326‧‧‧中斷計數遞增1、且估算每秒百萬指令數/時脈數、且判斷執行緒效能是否危急、且重置等待時間之計數
328‧‧‧使每秒百萬指令數/時脈數之計數重置
330‧‧‧重置等待時間之計數、且使中斷計數歸零

Claims (16)

  1. 一種多核心裝置,包括:一多核心處理器,包括複數個中央處理單元;一隨機存取記憶體,耦接該多核心處理器,在該多核心處理器操作下儲存複數個執行緒各自的執行緒效能相關參數;以及一程式碼儲存裝置,儲存作業系統程式碼,在該多核心處理器執行下運作一作業系統排程器,於上述該等中央處理單元之間實施執行緒負載平衡,其中:該執行緒負載平衡係基於上述複數個執行緒各自的執行緒效能危急狀況而實施,將上述複數個執行緒中執行緒效能危急狀況標示為危急者配置至上述複數個中央處理單元分散執行,各執行緒上述執行緒效能危急狀況係基於各執行緒上述執行緒效能相關參數做判定;各執行緒上述執行緒效能危急狀況的評斷值包括考量歷來資訊,一中斷計數越高的執行緒所使用的上述評斷值考量越高比例之歷來資訊;且各執行緒係於產生時一併配予初始化為零的中斷計數,且係在對系統資源的優先權被超越時遞增其中斷計數。
  2. 如申請專利範圍第1項所述之多核心裝置,其中:各執行緒自阻隔狀態釋放切換至執行中狀態時其中斷計數重置。
  3. 如申請專利範圍第2項所述之多核心裝置,其中: 上述執行緒效能相關參數包括一等待時間,標示對應的該執行緒切換成一執行中狀態前於一可執行佇列的等待時間,上述執行緒效能危急狀況係基於對應的該執行緒上述等待時間作估算。
  4. 如申請專利範圍第3項所述之多核心裝置,其中:上述執行緒效能相關參數更包括歷來等待時間資訊;上述各執行緒一當下估算之等待時間係與一等待時間評斷值作比較,以評估對應的該執行緒之執行緒效能危急狀況是否確為危急;並且上述各執行緒對應的該等待時間評斷值係基於該執行緒對應的上述歷來等待時間資訊以及當下估算之等待時間而設定,越高的中斷計數對應上述歷來等待時間資訊考量比重越重的上述等待時間評斷值。
  5. 如申請專利範圍第2項所述之多核心裝置,其中:上述執行緒效能相關參數包括一每秒百萬指令數/時脈數,標示對應的該執行緒於一執行中狀態的執行速度,且上述執行緒的執行緒效能危急狀況係基於該執行緒的每秒百萬指令數/時脈數而估算。
  6. 如申請專利範圍第5項所述之多核心裝置,其中:上述執行緒效能相關參數更包括歷來每秒百萬指令數/時脈數資訊;上述各執行緒一當下估算之每秒百萬指令數/時脈數係與一每秒百萬指令數/時脈數評斷值作比較,以評估該執行緒之執行緒效能危急狀況是否確為危急;並且, 上述各執行緒對應的該每秒百萬指令數/時脈數評斷值係基於該執行緒對應的上述歷來每秒百萬指令數/時脈數資訊以及當下估算之每秒百萬指令數/時脈數而設定,越高的中斷計數對應上述歷來每秒百萬指令數/時脈數資訊考量比重越重的上述每秒百萬指令數/時脈數評斷值。
  7. 如申請專利範圍第2項所述之多核心裝置,其中:上述該等執行緒中一執行緒之執行緒效能危急狀況確為危急時,上述該等中央處理單元之一自一節能模式喚醒以執行該執行緒。
  8. 如申請專利範圍第2項所述之多核心裝置,其中:上述該等執行緒中一執行緒之執行緒效能危急狀況確為危急時,執行該執行緒的該中央處理單元之處理器頻率依據動態電壓與頻率調節機制而提升。
  9. 一種多核心裝置之多執行緒排程方法,包括:紀錄複數個執行緒各自的執行緒效能相關參數;以及於該多核心裝置的一多核心處理器的複數個中央處理單元間實施執行緒負載平衡,其中:上述執行緒負載平衡係根據上述複數個執行緒各自的一執行緒效能危急狀況而操作,將上述複數個執行緒中執行緒效能危急狀況標示為危急者配置至上述複數個中央處理單元分散執行,且各執行緒上述執行緒效能危急狀況係基於各執行緒上述執行緒效能相關參數而評斷;各執行緒上述執行緒效能危急狀況的評斷值包括考量歷來 資訊,一中斷計數越高的執行緒所使用的上述評斷值考量越高比例之歷來資訊;且各執行緒係於產生時一併配予初始化為零的中斷計數,且係在對系統資源的優先權被超越時遞增其中斷計數。
  10. 如申請專利範圍第9項所述之多執行緒排程方法,其中:各執行緒自阻隔狀態釋放切換至執行中狀態時其中斷計數重置。
  11. 如申請專利範圍第10項所述之多執行緒排程方法,其中:上述執行緒效能相關參數包括一等待時間,標示對應的該執行緒切換成一執行中狀態前於一可執行佇列的等待時間,且上述執行緒效能危急狀況係基於對應的該執行緒之等待時間而評斷。
  12. 如申請專利範圍第11項所述之多執行緒排程方法,其中:上述執行緒效能相關參數更包括歷來等待時間資訊;上述各執行緒一當下估算之等待時間係與一等待時間評斷值作比較,以評估對應的該執行緒之執行緒效能危急狀況是否確為危急;並且上述各執行緒對應的該等待時間評斷值係基於該執行緒對應的上述歷來等待時間資訊以及當下估算之等待時間而設定,越高的中斷計數對應上述歷來等待時間資訊考量比重越重的上述等待時間評斷值。
  13. 如申請專利範圍第10項所述之多執行緒排程方法,其中:上述執行緒效能相關參數包括一每秒百萬指令數/時脈數,標示對應的該執行緒於一執行中狀態的執行速度,且上述 執行緒的執行緒效能危急狀況係基於該執行緒的每秒百萬指令數/時脈數而估算。
  14. 如申請專利範圍第13項所述之多執行緒排程方法,其中:上述執行緒效能相關參數更包括歷來每秒百萬指令數/時脈數資訊;上述各執行緒一當下估算之每秒百萬指令數/時脈數係與一每秒百萬指令數/時脈數評斷值作比較,以評估該執行緒之執行緒效能危急狀況是否確為危急;並且,上述各執行緒對應的該每秒百萬指令數/時脈數評斷值係基於該執行緒對應的上述歷來每秒百萬指令數/時脈數資訊以及當下估算之每秒百萬指令數/時脈數而設定,越高的中斷計數對應上述歷來每秒百萬指令數/時脈數資訊考量比重越重的上述每秒百萬指令數/時脈數評斷值。
  15. 如申請專利範圍第10項所述之多執行緒排程方法,其中:上述該等執行緒中一執行緒之執行緒效能危急狀況確為危急時,上述該等中央處理單元之一自一節能模式喚醒以執行該執行緒。
  16. 如申請專利範圍第10項所述之多執行緒排程方法,其中:上述該等執行緒中一執行緒之執行緒效能危急狀況確為危急時,執行該執行緒的該中央處理單元之處理器頻率依據動態電壓與頻率調節機制而提升。
TW102131948A 2012-09-21 2013-09-05 多核心裝置以及其多執行緒排程方法 TWI522922B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201261704253P 2012-09-21 2012-09-21
US13/961,604 US9632822B2 (en) 2012-09-21 2013-08-07 Multi-core device and multi-thread scheduling method thereof

Publications (2)

Publication Number Publication Date
TW201413594A TW201413594A (zh) 2014-04-01
TWI522922B true TWI522922B (zh) 2016-02-21

Family

ID=50340259

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102131948A TWI522922B (zh) 2012-09-21 2013-09-05 多核心裝置以及其多執行緒排程方法

Country Status (2)

Country Link
US (1) US9632822B2 (zh)
TW (1) TWI522922B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11126470B2 (en) 2016-12-22 2021-09-21 Industrial Technology Research Institute Allocation method of central processing units and server using the same

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8813245B1 (en) 2013-01-25 2014-08-19 Amazon Technologies, Inc. Securing content using pipelines
US9678497B2 (en) * 2013-08-30 2017-06-13 Regents Of The University Of Minnesota Parallel processing with cooperative multitasking
CN105528203B (zh) * 2014-10-23 2019-04-12 深圳富泰宏精密工业有限公司 Cpu使用控制系统及方法
US9880953B2 (en) * 2015-01-05 2018-01-30 Tuxera Corporation Systems and methods for network I/O based interrupt steering
US9569264B2 (en) 2015-03-17 2017-02-14 Freescale Semiconductor,Inc. Multi-core system for processing data packets
US10102031B2 (en) * 2015-05-29 2018-10-16 Qualcomm Incorporated Bandwidth/resource management for multithreaded processors
US20170039093A1 (en) * 2015-08-04 2017-02-09 Futurewei Technologies, Inc. Core load knowledge for elastic load balancing of threads
US10073718B2 (en) 2016-01-15 2018-09-11 Intel Corporation Systems, methods and devices for determining work placement on processor cores
KR102464678B1 (ko) * 2016-03-18 2022-11-11 한국전자통신연구원 매니코어 시스템에서 쓰레드를 스케줄링 하는 방법 및 그 장치
US10592279B2 (en) * 2016-06-23 2020-03-17 Advanced Micro Devices, Inc. Multi-processor apparatus and method of detection and acceleration of lagging tasks
US10379904B2 (en) * 2016-08-31 2019-08-13 Intel Corporation Controlling a performance state of a processor using a combination of package and thread hint information
TWI735520B (zh) * 2017-01-24 2021-08-11 香港商阿里巴巴集團服務有限公司 調整元件邏輯執行緒數量的方法及裝置
US10452397B2 (en) * 2017-04-01 2019-10-22 Intel Corporation Efficient multi-context thread distribution
CN107203623B (zh) * 2017-05-26 2020-09-22 山东省科学院情报研究所 网络爬虫系统的负载均衡调节方法
TWI639955B (zh) * 2017-11-06 2018-11-01 晨星半導體股份有限公司 多處理器系統及其處理器管理方法
CN108549574B (zh) * 2018-03-12 2022-03-15 深圳市万普拉斯科技有限公司 线程调度管理方法、装置、计算机设备和存储介质
US11327766B2 (en) * 2020-07-31 2022-05-10 International Business Machines Corporation Instruction dispatch routing
CN112579278B (zh) * 2020-12-24 2023-01-20 海光信息技术股份有限公司 用于同步多线程的中央处理单元、方法、设备及存储介质
US20230040310A1 (en) * 2021-08-03 2023-02-09 Apple Inc. Cpu cluster shared resource management
CN114924801B (zh) * 2022-05-26 2023-09-15 中国人民解放军国防科技大学 基于缓存拓扑的多核处理器线程唤醒方法
CN118093348A (zh) * 2024-04-07 2024-05-28 荣耀终端有限公司 关键线程识别方法及应用启动时的线程优化方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5872972A (en) * 1996-07-05 1999-02-16 Ncr Corporation Method for load balancing a per processor affinity scheduler wherein processes are strictly affinitized to processors and the migration of a process from an affinitized processor to another available processor is limited
US7353517B2 (en) 2003-09-25 2008-04-01 International Business Machines Corporation System and method for CPI load balancing in SMT processors
US20060123423A1 (en) 2004-12-07 2006-06-08 International Business Machines Corporation Borrowing threads as a form of load balancing in a multiprocessor data processing system
US7996346B2 (en) 2007-12-19 2011-08-09 International Business Machines Corporation Method for autonomic workload distribution on a multicore processor
US8799914B1 (en) * 2009-09-21 2014-08-05 Tilera Corporation Managing shared resource in an operating system by distributing reference to object and setting protection levels
US8869160B2 (en) * 2009-12-24 2014-10-21 International Business Machines Corporation Goal oriented performance management of workload utilizing accelerators
US20120284729A1 (en) * 2011-05-03 2012-11-08 Microsoft Corporation Processor state-based thread scheduling
CN102184125B (zh) 2011-06-02 2013-11-13 首都师范大学 异构多核环境下基于程序行为在线分析的负载均衡方法
CN102609312B (zh) 2012-01-10 2015-08-19 中国科学技术大学苏州研究院 基于公平性考虑的短作业优先内存请求调度方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11126470B2 (en) 2016-12-22 2021-09-21 Industrial Technology Research Institute Allocation method of central processing units and server using the same

Also Published As

Publication number Publication date
US9632822B2 (en) 2017-04-25
US20140089936A1 (en) 2014-03-27
TW201413594A (zh) 2014-04-01

Similar Documents

Publication Publication Date Title
TWI522922B (zh) 多核心裝置以及其多執行緒排程方法
US9459918B2 (en) Scheduling threads
EP2885707B1 (en) Latency sensitive software interrupt and thread scheduling
US10108449B2 (en) Work item management among worker threads of a computing device
US9411649B2 (en) Resource allocation method
EP2666085A2 (en) Load balancing in heterogeneous computing environments
US10089155B2 (en) Power aware work stealing
JP6895235B2 (ja) 環境的に調整されたスラックを割り当てるためのシステム及び方法
CN103677997B (zh) 多核心装置以及其多线程调度方法
TW200411564A (en) Method and apparatus for implementing thread replacement for optimal performance in a two-tiered multithreading structure
EP2613257B1 (en) Systems and methods for use in performing one or more tasks
US9817696B2 (en) Low latency scheduling on simultaneous multi-threading cores
US20160170474A1 (en) Power-saving control system, control device, control method, and control program for server equipped with non-volatile memory
JP4614239B2 (ja) マルチタスクスケジューリング機能搭載装置及びプログラム
Yang et al. Improved blocking time analysis and evaluation for the multiprocessor priority ceiling protocol
Wada et al. Fast interrupt handling scheme by using interrupt wake-up mechanism
KR20120003088A (ko) 결정적 프로그레스 인덱스를 이용한 스레드 프로그레스 트래킹 방법 및 장치
Gaitan et al. Methods to improve the performances of the real-time operating systems for small microcontrollers
Ahmed et al. Prediction-based asynchronous CPU-budget allocation for soft-real-time applications
JP2022550064A (ja) マルチスレッドマイクロプロセッサにおける共有リソース割り当て
RU2239228C2 (ru) Способ распределения времени центрального процессора между задачами в автоматизированных системах управления технологическими процессами
Reddy et al. Scheduling latency comparison of two open-source RTOSs on CORTEX-M3
Ndoye et al. Preemptive multiprocessor real-time scheduling with exact preemption cost
Raveendran et al. Evaluation of priority based real time scheduling algorithms: choices and tradeoffs
Yan et al. Process Management of Linux in Embedded System Based on Priority-Driven Tactics

Legal Events

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