至少部分基于共享相同數據及/或存取相同存儲地址的任務分布的任務調度方法以及多 ...的制作方法
【專利說明】至少部分基于共享相同數據及/或存取相同存儲地址的任務分布的任務調度方法以及多核處理器系統中用于分配任務的相關非暫時性計算機可讀介質
[0001]交叉引用
[0002]本發明要求如下優先權:編號為61/904,072,申請日為2013年11月14日的美國臨時專利申請。上述美國臨時專利申請在此一并作為參考。
技術領域
[0003]本發明揭露的實施例涉及一種任務調度方案。特別地,本發明揭露的實施例涉及一種多核處理器系統(mult1-core processor system)中用于調度任務(例如,普通任務)的任務調度方法以及相關非暫時性計算機可讀介質(non-transitory computer readablemedium),其中上述任務調度方法至少部分基于共享相同特定數據及/或存取相同特定存儲地址的任務分布。
【背景技術】
[0004]現今,由于對運算能力的越來越多需求,多核系統變得普及。因此,多核系統的操作系統(operating system,OS)需要決定不同處理器核心調度的任務以維持較好的負載平衡及/或較高的系統資源利用。上述處理器核心可按照不同集群(cluster)進行分類,并且上述集群可分別隨著在高速緩存層中同級的分立高速緩存(cache)進行分配。例如,可配置不同集群以分別使用不同第二層(leVel-2,L2)的高速緩存。通常,在多核系統中實施高速緩存一致性互聯(cache coherent interconnect)以管理致力于不同集群的高速緩存之間的高速緩存一致性。然而,當L2高速緩存讀未命中或L2高速緩存書寫發生時,上述高速緩存一致性互聯具有一致性開銷(coherency overhead)。傳統任務調度設計簡單地找出最忙處理器核心,并且將最忙處理器核心的運行隊列中的任務移動至最空閑處理器核心的運行隊列。因此,傳統調度設計在不考慮高速緩存一致性開銷的情況下控制將任務從一個集群到另一個集群的轉移。
[0005]總之,需要創新的任務調度設計,其當將任務分配至集群中運行隊列時考慮高速緩存一致性開銷,這樣可緩解或避免高速緩存一致性開銷從而取得改善的任務調度性能。
【發明內容】
[0006]依據本發明實施例,提出至少部分基于共享相同特定數據及/或存取相同特定存儲地址的任務分布在多核處理器系統中分配任務的任務調度方法與非暫時性計算機可讀介質以解決上述問題。
[0007]根據本發明第一方面,揭露一種多核處理器系統的示例任務調度方法。該示例任務調度方法包含:當第一任務屬于當前在該多核處理器系統中的線程組時,其中,該線程組具有共享相同特定數據的多個任務,并且該多個任務包含該第一任務與至少一個第二任務,至少部分基于該至少一個第二任務的分布決定該多核處理器系統中的目標處理器核心,其中該至少一個第二任務位于該多核處理器系統中至少一個處理器核心的至少一個運行隊列中;以及將該第一任務分配至該目標處理器核心的運行隊列。
[0008]根據本發明第二方面,揭露一種多核處理器系統的示例任務調度方法。該示例任務調度方法包含:當第一任務屬于當前在該多核處理器系統中的線程組時,其中,該線程組具有存取相同特定存儲地址的多個任務,并且該多個任務包含該第一任務與至少一個第二任務,至少部分基于該至少一個第二任務的分布決定該多核處理器系統中的目標處理器核心,其中該至少一個第二任務位于該多核處理器系統中至少一個處理器核心的至少一個運行隊列中;以及將該第一任務分配至該目標處理器核心的運行隊列。
[0009]此外,本發明也提供一種存儲任務調度程序代碼的非短暫計算機可讀介質,其中當多核處理器系統執行該任務調度程序代碼時,該任務調度程序代碼引發該多核處理器系統執行上述任務調度方法。
[0010]在讀了用各種示圖描述的較佳實施例的詳細描述后,本領域技術人員可理解本發明的宗旨。
【附圖說明】
[0011]圖1是根據本發明實施例描述的多核處理器系統的示意圖;
[0012]圖2是根據本發明實施例描述的非暫時性計算機可讀介質的示意圖;
[0013]圖3是描述第一任務調度操作的示意圖,其中上述操作將一個單線程進程的任務分配入處理器核心的運行隊列;
[0014]圖4是描述第二任務調度操作的示意圖,其中上述操作將屬于線程組的一個任務分配入處理器核心的運行隊列;
[0015]圖5是描述第三任務調度操作的示意圖,其中上述操作將屬于線程組的一個任務分配入處理器核心的運行隊列;
[0016]圖6是描述第四任務調度操作的示意圖,其中上述操作將屬于線程組的一個任務分配入處理器核心的運行隊列;
[0017]圖7是描述第五任務調度操作的示意圖,其中上述操作將屬于線程組的一個任務分配入處理器核心的運行隊列;
[0018]圖8是描述第六任務調度操作的示意圖,其中上述操作將屬于線程組的一個任務從一集群中處理器核心的運行隊列轉移至另一集群中處理器核心的運行隊列;
[0019]圖9是描述第七任務調度操作的示意圖,其中上述操作將一個單線程進程的任務從一集群中處理器核心的運行隊列轉移至另一集群中處理器核心的運行隊列;
[0020]圖10是描述第八任務調度操作的示意圖,其中上述操作將一個單線程進程的任務從一集群中處理器核心的運行隊列轉移至另一集群中處理器核心的運行隊列;
[0021]圖11是描述第九任務調度操作的示意圖,其中上述操作將一個單線程進程的任務從一集群中處理器核心的運行隊列轉移至相同集群中處理器的運行隊列。
【具體實施方式】
[0022]在說明書及權利要求書當中使用了某些詞匯來指稱特定的元件。所屬技術領域的技術人員應可理解,硬件制造商可能會用不同的名詞來稱呼同一個元件。本說明書及權利要求書并不以名稱的差異作為區分元件的方式,而是以元件在功能上的差異作為區分的準貝1J。在通篇說明書及權利要求項中所提及的“包含”為一開放式的用語,故應解釋成“包含但不限定于”。此外,“耦接”一詞在此包含任何直接及間接的電氣連接手段。因此,若文中描述一個裝置耦接于另一裝置,則代表該一個裝置可直接電氣連接于該另一裝置,或通過其它裝置或連接手段間接地電氣連接至該另一裝置。
[0023]圖1是根據本發明實施例描述的多核處理器系統的示意圖。多核處理器系統10可在可攜式裝置中進行實施,例如移動電話、平板電腦、可穿戴式設備等。然而,上述說明并非對本發明的限制。即,任何使用所述任務調度方法的電子裝置皆落入本發明的保護范圍。在本實施例中,多核處理器系統10可具有多個集群112_1-112_N,其中N為正整數并且可基于實際設計考慮進行調整。即,本發明不限制多核處理器系統10中配置的集群數量。
[0024]對于集群112_1_112_N,每個集群可為一組處理器核心。例如,集群112_1可包含一個或多個處理器核心117,其中每個處理器核心117具有運算能力相同的相同處理器結構;以及集群112_N可包含一個或多個處理器核心118,其中每個處理器核心118具有運算能力相同的相同處理器結構。在一示例中,處理器核心117可具有運算能力不同的不同處理器結構。在另一示例中,處理器核心118可具有運算能力不同的不同處理器結構。在一示例設計中,多核處理器系統10可使用所述任務調度方法以及對稱多處理(symmetricmult1-processing, SMP)結構。因此,多核處理器系統10中的每個處理器核心可具有運算能力相同的相同處理器結構。在另一示例設計中,多核處理器系統10可使用所述任務調度方法以及異構多核(heterogeneous mult1-core)結構。例如,集群112_1的每個處理器核心117可具有支持第一運算能力的第一處理器結構,并且集群112_N的每個處理器核心Il8可具有支持第二運算能力的第二處理器結構,其中第二處理器結構與第一處理器結構不同,并且第二運算能力與第一運算能力不同。
[0025]值得注意的是,可基于實際設計考慮調整集群112_1_112_N的處理器核心數量。例如,集群112_1中的處理器核心117的數量可與集群112_N中的處理器核心118的數量相同或不同。
[0026]可配置集群112_1_112_N在同級的高速緩存層各自使用不同的高速緩存。在本示例中,可將一個專用L2高速緩存分配至每個集群。如圖1所示,多核處理器系統10可具有多個L2高速緩存114_1-114_N。因此,集群112_1可使用一個L2高速緩存114_1用于緩存數據,以及集群112_N可使用另一個L2高速緩存114_N用于緩存數據。另外,可使用高速緩存一致性互聯116管理集群112_1-112_N各自存取的L2高速緩存114_1_114_N之間的一致性。如圖1所示,存在通過高速緩存一致性互聯116耦接L2高速緩存114_1-114_N的主存儲器119。當L2高速緩存的高速緩存未命中發生時,從主存儲器119中重新得到請求數據然后存儲于L2高速緩存中。當L2高速緩存的高速緩存命中發生時,這意味著在L2高速緩存中請求數據是可用的,從而不需要存取主存儲器119。
[0027]在主存儲器119中的相同數據可存儲在相同存儲地址中。此外,可基于處理器核心產生的讀/寫請求中的存儲地址,存取L2高速緩存114_l-114_N的每一個中的高速緩存條目。所述任務調度方法可增加用于集群的L2高速緩存的高速緩存命中率,其中上述任務調度方法分配共享主存儲器119中的相同特定數據及/或存取主存儲器119中的相同特定存儲地址的多個任務至相同集群。例如,當運行在集群的一個處理器核心中的一個任務首先發出存儲地址處的請求數據的讀/寫請求時,L2高速緩存的高速緩存未命中可發生,并且從主存儲器119中重新取得存儲地址處的請求數據然后將其緩存入L2高速緩存中。接著,當運行在相同集群的一個處理器核心中的另一任務發出相同存儲地址處的相同請求數據的讀/寫請求時,L2高速緩存的高速緩存命中可發生,并且L2高速緩存可直接輸出緩存其中的請求數據以響應讀/寫請求,而不需要存取主存儲器119。當將共享主存儲器119中的相同特定數據及/或存取主存儲器119中的相同特定存儲地址的任務分配至相同集群時,可提高集群的L2高速緩存的高速緩存命中率。既然觸發高速緩存一致性的高速緩存未命中(讀/寫未命中)可引起高速緩存一致性開銷,所以,提高的高速緩存命中率可幫助減少高速緩存一致性開銷。因此,在本發明中,例如,可定義線程組(thread group)為具有共享主存儲器119中相同特定數據及/或存取主存儲器119中相同特定存儲地址的多個任務。一個任務可為單線程進程或多線程進程的一個線程。當將屬于相同線程組的大多數或所有任務安排在相同集群用于執行時,由于改進的高速緩存局部