TWI726899B - 用於簡化用於有效平行計算的以任務為基礎的運行時間之方法 - Google Patents

用於簡化用於有效平行計算的以任務為基礎的運行時間之方法 Download PDF

Info

Publication number
TWI726899B
TWI726899B TW105123620A TW105123620A TWI726899B TW I726899 B TWI726899 B TW I726899B TW 105123620 A TW105123620 A TW 105123620A TW 105123620 A TW105123620 A TW 105123620A TW I726899 B TWI726899 B TW I726899B
Authority
TW
Taiwan
Prior art keywords
simple task
task
core
processor
indicator
Prior art date
Application number
TW105123620A
Other languages
English (en)
Other versions
TW201717004A (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 TW201717004A publication Critical patent/TW201717004A/zh
Application granted granted Critical
Publication of TWI726899B publication Critical patent/TWI726899B/zh

Links

Images

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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

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)
  • Advance Control (AREA)
  • Multi Processors (AREA)

Abstract

態樣包括用於在不設置一任務結構的情況下實施藉由一執行緒直接進行的作為簡單任務之輕型核之排程及執行的計算裝置、系統及方法。一計算裝置可判定一任務佇列中之一任務指標是否為用於該輕型核之一簡單任務指標。該計算裝置可排程用於該輕型核之一第一簡單任務以供藉由該執行緒執行。該計算裝置可自一簡單任務表之一輸入項擷取用於該輕型核之一核指標。該簡單任務表中之該輸入項可與該簡單任務指標相關聯。該計算裝置可將該輕型核作為該簡單任務而直接執行。

Description

用於簡化用於有效平行計算的以任務為基礎的運行時間之方法 相關申請案
本申請案主張在35 U.S.C.§119(e)下的2015年7月30日申請之標題為「Method For Simplified Task-based Runtime For Efficient Parallel Computing」之美國臨時申請案第62/198,830號的優先權益,該申請案的全部內容特此以引用之方式併入。
任務平行性為計算程式碼在多個處理器上平行化的平行化之形式。充當平行計算環境中之基本可排程單元的計算任務體現含或不含某些輸入及輸出之計算程序(下文被稱作「核(kernel)」)。以任務為基礎之平行程式設計運行時間允許程式設計師以任務之形式表達演算法,且使用排程器在多個處理器上分配任務且達成諸如同步化及負載平衡之維護功能性。隨著以任務為基礎之運行時間系統成熟且提供更多特徵,任務抽象化變得愈加複雜,從而對任務產生、管理及毀壞造成顯著負擔。舉例而言,以任務為基礎之運行時間系統在以下項中產生負擔:設置任務;判定任務是否屬於異質裝置執行路徑;參考及不參考任務以追蹤任務之生命週期;及自排程器請求獨佔式所有權。
由於產生、分派及管理任務之負擔與實際計算相當,因此傳統的以任務為基礎之運行時間系統向輕型核添加顯著負擔。效能及能效兩者歸因於與任務管理相關聯的不可避免之負擔而得以減弱。隨著在 較低頻率下歸因於此等限制出現平行化,完全成熟的以任務為基礎之運行時間系統適用於具有複雜相依性及同步化需求之重型核。
各種實施例之方法及設備提供用於在一計算裝置中排程及執行輕型核之電路及方法。各種實施例可包括:判定一任務佇列中之一第一任務指標是否為用於一輕型核之一簡單任務指標;回應於判定出該第一任務指標為一簡單任務指標,排程用於該輕型核之一第一簡單任務以供藉由一第一執行緒執行;自一簡單任務表之一輸入項擷取用於該輕型核之一核指標,其中該輸入項與該簡單任務指標相關聯;及將該輕型核作為該第一簡單任務而直接執行。
一些實施例可進一步包括完成該第一簡單任務之執行及更新該簡單任務表之該輸入項之一核反覆計數器的資料。
一些實施例可進一步包括判定該輕型核之核反覆是否可劃分,及回應於判定出該輕型核之該等核反覆可劃分,將該輕型核之該等核反覆劃分成反覆部分。在此等實施例中,排程用於該輕型核之一第一簡單任務以供藉由一第一執行緒執行可包括向該第一簡單任務指派輕型核至少一個反覆部分;完成該第一簡單任務之執行可包括完成該第一簡單任務之若干執行,該等執行之一數目等於被指派至該第一簡單任務之該至少一個反覆部分之反覆的一數目;及更新該簡單任務表之該輸入項之一核反覆計數器的資料可包括更新該核反覆計數器之該資料,以反映被指派至該第一簡單任務之該至少一個反覆部分之該數目個反覆的完成。
一些實施例可進一步包括自該核反覆計數器之該資料判定該第一簡單任務之所有反覆是否完成,及回應於判定出該第一簡單任務之該等所有反覆均完成而清除該簡單任務表之該輸入項。
一些實施例可進一步包括識別用於執行該輕型核之一限制。在 此等實施例中,該限制可包括以下項中之一者:用於執行該輕型核之一指定執行緒,該指定執行緒包括一主執行緒、一臨界執行緒,及一非臨界執行緒;用於執行該輕型核之一潛時要求;及執行該第一執行緒之一處理器至儲存該輕型核之一記憶體的一近接性。在此等實施例中,排程用於該輕型核之一第一簡單任務以供藉由一第一執行緒執行可包括:基於用於執行該輕型核之該限制而選擇該第一執行緒。
一些實施例可進一步包括:判定該任務佇列中之一第二任務指標是否為用於該輕型核之該簡單任務指標;回應於判定出該第二任務指標為該簡單任務指標,排程用於該輕型核之一第二簡單任務以供藉由一第二執行緒執行;自該簡單任務表之該輸入項擷取用於該輕型核之該核指標,其中該輸入項與該簡單任務指標相關聯;及將該輕型核作為該第二簡單任務而直接執行。
一些實施例可進一步包括將該第一簡單任務之一第一輸出與該第二簡單任務之一第二輸出組合。
一些實施例可進一步包括:判定一所請求處理程序是否包括該輕型核;回應於判定出該所請求處理程序包括該輕型核而判定該簡單任務表是否係滿的;回應於判定出該簡單任務表並非為滿的而在該簡單任務表中產生用於該輕型核之該輸入項;將與該輸入項相關聯之該簡單任務指標添加至該任務佇列;及回應於判定出該簡單任務表係滿的而將與該輕型核相關聯之一正常任務指標添加至該任務佇列。
各種實施例可包括一計算裝置,該計算裝置包括經組態有處理器可執行指令以執行上述該等實施例方法中之一或多者之操作的一處理器。
各種實施例可包括一計算裝置,該計算裝置具有用於執行上述該等實施例方法中之一或多者之功能的構件。
各種實施例可包括一非暫時性處理器可讀儲存媒體,該非暫時 性處理器可讀儲存媒體上儲存有處理器可執行指令,該等處理器可執行指令經組態以使得一計算裝置之一處理器執行上述該等實施例方法中之一或多者的操作。
10‧‧‧計算裝置
12‧‧‧系統單晶片(SoC)
14‧‧‧處理器
14a‧‧‧中央處理單元(CPU)
14b‧‧‧圖形處理單元(GPU)
14c‧‧‧加速處理單元(APU)
16‧‧‧記憶體
18‧‧‧通信介面
20‧‧‧儲存記憶體介面
22‧‧‧通信組件
24‧‧‧儲存記憶體
26‧‧‧天線
28‧‧‧網路介面
30‧‧‧無線網路
32‧‧‧無線連接
40‧‧‧網際網路
44‧‧‧有線連接
50‧‧‧遠端計算裝置
200‧‧‧處理器核心0
201‧‧‧處理器核心1
202‧‧‧處理器核心2
203‧‧‧處理器核心3
204‧‧‧處理器快取記憶體控制器
206‧‧‧處理器快取記憶體
300‧‧‧系統單晶片(SoC)快取記憶體控制器
302‧‧‧系統單晶片(SoC)快取記憶體
304‧‧‧主記憶體控制器
306‧‧‧主記憶體
308‧‧‧儲存記憶體控制器
310‧‧‧通信匯流排
400‧‧‧任務佇列
402-410‧‧‧槽
500‧‧‧簡單任務表
502‧‧‧核識別符行
504‧‧‧核指標行
506‧‧‧核反覆計數器行
508-516‧‧‧輸入項
600‧‧‧排程器
602‧‧‧執行緒
604‧‧‧輕型核
606‧‧‧任務佇列
608‧‧‧簡單任務指標
610‧‧‧簡單任務指標
612‧‧‧輸入項
614‧‧‧輕型核
616‧‧‧記憶體位置
618‧‧‧記憶體位置
620‧‧‧簡單任務
622‧‧‧簡單任務
700‧‧‧方法
702-718‧‧‧區塊
800‧‧‧方法
802-818‧‧‧區塊
900‧‧‧方法
902-920‧‧‧區塊
1000‧‧‧行動計算裝置
1002‧‧‧處理器
1004‧‧‧觸控式螢幕控制器
1006‧‧‧內部記憶體
1008‧‧‧收發器
1010‧‧‧天線
1012‧‧‧觸控式螢幕面板
1014‧‧‧揚聲器
1016‧‧‧蜂巢式網路無線數據機晶片
1018‧‧‧周邊裝置連接介面
1020‧‧‧殼體
1022‧‧‧電源
1024‧‧‧實體按鈕
1026‧‧‧電力按鈕
1100‧‧‧膝上型電腦
1111‧‧‧處理器
1112‧‧‧揮發性記憶體
1113‧‧‧磁碟機
1114‧‧‧軟碟驅動器
1115‧‧‧緊密光碟(CD)驅動器
1116‧‧‧無線資料鏈路及/或蜂巢式電話收發器
1117‧‧‧觸控板
1118‧‧‧鍵盤
1119‧‧‧顯示器
1200‧‧‧伺服器
1201‧‧‧多核心處理器組合件
1202‧‧‧揮發性記憶體
1203‧‧‧網路存取埠
1204‧‧‧磁碟機
1205‧‧‧網路
1206‧‧‧軟碟驅動器/緊密光碟(CD)/DVD光碟驅動器
併入本文中且構成本說明書之部分的隨附圖式說明本發明之實例態樣,且與上文給出的一般描述及下文給出的具體描述一起用以解釋本發明之特徵。
圖1為說明適用於實施各種實施例之計算裝置的組件方塊圖。
圖2為說明適用於實施各種實施例之實例多核心處理器的組件方塊圖。
圖3為說明適用於實施各種實施例之實例系統單晶片(SoC)的組件方塊圖。
圖4為根據各種實施例的實例任務佇列之說明。
圖5為根據各種實施例的實例簡單任務表之說明。
圖6為說明根據各種實施例的運行時間簡單任務排程及執行之過程流程圖。
圖7為說明用於將簡單任務排入佇列之實施例方法的過程流程圖。
圖8為說明用於排程簡單任務之實施例方法的過程流程圖。
圖9為說明用於執行簡單任務之實施例方法的過程流程圖。
圖10為說明適用於與各種實施例一起使用之實例行動計算裝置的組件方塊圖。
圖11為說明適用於與各種實施例一起使用之實例行動計算裝置的組件方塊圖。
圖12為說明適用於與各種實施例一起使用之實例伺服器的組件方塊圖。
將參考隨附圖式來詳細地描述各種態樣。在任何可能之處,將在整個圖式中使用相同參考數字來指相同或相似部分。對特定實例及實施的參考係為了說明性目的,且並不意欲限制本發明或申請專利範圍之範疇。
術語「計算裝置」及「行動計算裝置」在本文中可互換地使用,以指以下項中之任一者或全部:蜂巢式電話、智慧型手機、個人或行動多媒體播放器、個人資料助理(PDA)、膝上型電腦、平板電腦、智慧筆記型電腦、超級本、掌上型電腦、無線電子郵件接收器、具備多媒體網際網路能力之蜂巢式電話、無線遊戲控制器及包括記憶體及多核心可程式化處理器之類似個人電子裝置。雖然各種態樣特別適用於具有有限記憶體及電池資源之行動計算裝置(諸如智慧型手機),但該等態樣通常對實施複數個記憶體裝置之任何電子裝置及降低處理器之功率消耗可延長行動計算裝置之電池操作時間的有限功率預算有用。
術語「系統單晶片」(SoC)在本文中用以指通常(但非獨占式地)包括硬體核心、記憶體及通信介面的一組互連電子電路。硬體核心可包括多種不同類型的處理器,諸如通用處理器、中央處理單元(CPU)、數位信號處理器(DSP)、圖形處理單元(GPU)、加速處理單元(APU)、輔助處理器、單核心處理器及多核心處理器。硬體核心可進一步體現其他硬體及硬體組合,諸如場可程式化閘陣列(FPGA)、特殊應用積體電路(ASIC)、其他可程式化邏輯裝置、離散閘邏輯、電晶體邏輯、效能監視硬體、看門狗硬體及時間參考。積體電路可經組態以使得積體電路之組件駐留於單塊諸如矽之半導體材料上。
經組態以在現代計算裝置上執行的許多應用程式必然伴有相依性及同步化要求易於滿足的可高度平行之輕型計算程序(下文被稱作 「核」)。舉例而言,一些應用程式包括每一反覆執行極少計算工作的背對背環路之執行。傳統的以任務為基礎之運行時間系統中的產生、分派及管理任務之負擔向平行化此等輕型核添加顯著負擔,此係由於該負擔與實際計算相當,且平行化可出現在高速率下。
各種實施例包括簡單任務管理方法,其繞過運行時間中之正常任務管理階段且減少與正常任務管理相關聯之負擔。可藉由運行時間管理簡單任務表來達成簡化任務管理。簡單任務表之每一項可儲存輕型核之指標。簡單任務可表示為簡單任務表中之一項的簡單任務指標。此機制可在不干涉現存排程邏輯的情況下簡化運行時間排程器之工作。排程器可在其將針對任何正常任務時自任務佇列擷取任務指標。任務指標可為投射至正常任務之正常任務指標,且排程器可使用正常程序來排程正常任務。任務指標可為投射至用於輕型核之核指標的簡單任務表中之項之簡單任務指標。對於簡單任務指標,排程器可將輕型核指派至執行緒,以供作為簡單任務藉由處理器或處理器核心直接執行。簡單任務可允許排程器排程一任務以供藉由執行緒執行,如同該簡單任務係正常任務,但執行該簡單任務,即執行緒可在不將任務結構執行個體化、管理任務之執行及分派任務結構的情況下直接執行輕型核。
圖1說明一系統,該系統包括適用於與各種實施例一起使用的與遠端計算裝置50通信之計算裝置10。計算裝置10可包括具有處理器14、記憶體16、通信介面18及儲存記憶體介面20之SoC 12。計算裝置可進一步包括諸如有線或無線數據機之通信組件22、儲存記憶體24、用於建立至無線網路30之無線連接32的天線26,及/或用於連接到至網際網路40之有線連接44的網路介面28。處理器14可包括多種硬體核心中之任一者以及若干處理器核心。SoC 12可包括一或多個處理器14。計算裝置10可包括一個以上SOC 12,由此增加處理器14及處理 器核心的數目。計算裝置10亦可包括不與SoC 12相關聯之一或多個處理器14。個別處理器14可為如下文參看圖2所描述之多核心處理器。處理器14可出於特定目的各自經組態為可與計算裝置10之其他處理器14相同或不同。具有相同或不同組態的處理器14及處理器核心中之一或多者可分組在一起。處理器14或處理器核心之群組可被稱為一多處理器叢集。
SoC 12之記憶體16可為經組態用於儲存資料及處理器可執行碼以供藉由處理器14存取的揮發性或非揮發性記憶體。計算裝置10及/或SoC 12可包括經組態用於各種目的的一或多個記憶體16。在各種實施例中,一或多個記憶體16可包括諸如隨機存取記憶體(RAM)或主記憶體之揮發性記憶體,或快取記憶體。此等記憶體16可經組態以臨時保留自非揮發性記憶體請求、基於多種因素預期未來存取而自非揮發性記憶體載入至記憶體16的有限量資料及/或處理器可執行碼指令,及/或由處理器14產生且臨時儲存以供未來快速存取而非儲存於非揮發性記憶體中的中間處理資料及/或處理器可執行碼指令。
記憶體16可經組態以至少臨時地儲存處理器可執行碼,該處理器可執行碼自諸如另一記憶體16或儲存記憶體24之另一記憶體裝置被載入至記憶體16,以供藉由處理器14中之一或多者存取。被載入至記憶體16之處理器可執行碼可回應於藉由處理器14對功能之執行而予以載入。處理器可執行碼回應於功能之執行而載入至記憶體16可起因於至記憶體16的不成功的或錯過的記憶體存取請求,此係由於所請求的處理器可執行碼並非位於記憶體16中。回應於錯過,可進行至另一記憶體裝置之記憶體存取請求,以將來自另一記憶體裝置的所請求之處理器可執行碼載入至記憶體裝置16。處理器可執行碼回應於功能之執行而載入至記憶體16可起因於至另一記憶體裝置的記憶體存取請求,且處理器可執行碼可載入至記憶體16以供稍後存取。
通信介面18、通信組件22、天線26及/或網路介面28可一致工作以使得計算裝置10能夠經由無線連接32在無線網路30上通信及/或經由有線網路44與遠端計算裝置50通信。無線網路30可使用包括(例如)用於無線通信之射頻頻譜的多種無線通信技術實施以提供連接至網際網路40的計算裝置10,藉由該網際網路,該計算裝置可與遠端計算裝置50交換資料。
儲存記憶體介面20及儲存記憶體24可一致工作,以允許計算裝置10將資料及處理器可執行碼儲存於非揮發性儲存媒體上。儲存記憶體24可經組態非常類似於記憶體16之各種實施例,其中儲存記憶體24可儲存資料及/或處理器可執行碼以供藉由處理器14中之一或多者存取。非揮發性的儲存記憶體24可甚至在計算裝置10之電力已被切斷之後保留資訊。當電力恢復且計算裝置10重啟時,儲存於儲存記憶體24上之資訊可能可用於計算裝置10。儲存記憶體介面20可控制對儲存記憶體24之存取,且允許處理器14自儲存記憶體24讀取資料及將資料寫入至該儲存記憶體。
計算裝置10之組件中的一些或全部可以不同方式配置及/或組合,同時仍為必要功能提供服務。此外,計算裝置10可不受限於組件中之每一者中的一者,且每一組件之多個個例可包括於計算裝置10之各種組態中。
圖2說明適用於實施各種實施例之多核心處理器14。參看圖1,多核心處理器14可具有複數個均質或異質處理器核心200、201、202、203。處理器核心200、201、202、203可為均質的,此係因為單一處理器14之處理器核心200、201、202、203可經組態用於相同目的且具有相同或類似效能特性。舉例而言,處理器14可為通用處理器,且處理器核心200、201、202、203可為均質的通用處理器核心。替代地,處理器14可為圖形處理單元或數位信號處理器,且處理器核心 200、201、202、203可分別為均質的圖形處理器核心或數位信號處理器核心。為了易於參考,術語「處理器」及「處理器核心」可在本文中互換地使用。
處理器核心200、201、202、203可為異質的,此係因為單一處理器14之處理器核心200、201、202、203可經組態用於不同目的及/或具有不同效能特性。此等異質處理器核心之一實例可包括被稱為「大小核(big.LITTLE)」架構之物,其中較慢的低功率處理器核心可與較強大且高耗電性之處理器核心耦接。此等異質處理器核心之異質性可包括不同指令集架構、管線、操作頻率等。
在圖2中所說明之實例中,多核心處理器14包括四個處理器核心200、201、202、203(亦即,處理器核心0、處理器核心1、處理器核心2及處理器核心3)。為易於解釋,本文中之實例可指圖2中所說明的四個處理器核心200、201、202、203。然而,圖2中所說明且本文中所描述之四個處理器核心200、201、202、203僅作為一實例而提供,且並非意欲將各種態樣限制為四個核心處理器系統。計算裝置10、SoC 12或多核心處理器14可個別地或以組合包括少於或多於本文中所說明且描述之四個處理器核心200、201、202、203的處理器核心。
此外,多核心處理器14可包括處理器快取記憶體控制器204及處理器快取記憶體206。處理器快取記憶體206可以類似方式組態為記憶體16(參考圖1)。處理器快取記憶體控制器204及處理器快取記憶體206可一致工作以允許處理器核心200、201、202、203存取有限量的資料及/或處理器可執行碼,且將其臨時保留於揮發性儲存媒體上。處理器快取記憶體控制器204可控制對處理器快取記憶體206之存取,且允許處理器核心200、201、202、203自處理器快取記憶體206讀取及寫入至該處理器快取記憶體。處理器核心200、201、202、203可共用處理器快取記憶體206,且/或個別處理器核心200、201、202、203 可與專用處理器快取記憶體206相關聯。為易於說明而使用單對處理器快取記憶體控制器204及處理器快取記憶體206,且不意欲限制可包括於多核心處理器14上之處理器快取記憶體控制器204及處理器快取記憶體206的數目。
圖3說明適用於實施各種實施例之實例SoC 12。參考圖1、圖2及圖3,SoC 12可包括處理器14、SoC快取記憶體控制器300、SoC快取記憶體302、主記憶體控制器304、主記憶體306及諸如上述SoC 12之組件的其他組件。SoC 12亦可包括或以通信方式連接至儲存記憶體控制器308及儲存記憶體24。SoC 12之組件及連接至SoC 12之組件可經由通信匯流排310彼此連接。SoC快取記憶體302、主記憶體306及儲存記憶體24中之每一者可經組態以儲存記憶體內容,諸如資料及/或處理器可執行碼。記憶體內容可儲存於藉由SoC快取記憶體302、主記憶體306及儲存記憶體24之實體位址識別的特定位置中。
在一態樣中,可使用虛擬位址進行對記憶體24、302、306之記憶體存取請求,該虛擬位址可經轉譯成各別記憶體24、302、306之實體位址,以便擷取記憶體存取請求的所請求之記憶體內容。資料及/或處理器可執行碼中之任一者的儲存位置可隨時間變化。可在映射資料及/或處理器可執行碼之位置的資料結構中更新與資料及/或處理器可執行碼相關聯之實體位址,以供藉由處理器14存取。
SoC快取記憶體302可經組態以臨時儲存資料及/或處理器可執行碼,以供相比存取主記憶體306或儲存記憶體24可達成的更快存取。SoC快取記憶體302可專門由諸如CPU 14a、GPU 14b或APU 14c之單一處理器14使用,或共用於諸如CPU 14a、GPU 14b及APU 14c之任何組合及/或SoC 12之子系統(圖中未示)的多個處理器14之間。SoC快取記憶體302可以類似方式組態為記憶體16(參考圖1)及處理器快取記憶體206(參考圖2)。SoC快取記憶體控制器300可管理藉由SoC 12之各種 處理器14a-14c及子系統(圖中未示)對SoC快取記憶體302之存取。SoC快取記憶體控制器300亦可管理用於自SoC快取記憶體控制器300存取至主記憶體306及儲存記憶體24的記憶體存取請求,該等記憶體存取請求用於擷取可藉由處理器14a-14c自SoC快取記憶體302請求但未出現在SoC快取記憶體302中從而導致快取錯過的記憶體內容。
主記憶體306可經組態以臨時儲存資料及/或處理器可執行碼,以供相比在存取儲存記憶體24時的更快存取。主記憶體306可能可用於藉由一或多個SOC 12之處理器14a-14c及/或SoC 12之子系統(圖中未示)存取。主記憶體控制器304可管理藉由SoC 12及計算裝置之處理器14a-14c及子系統(圖中未示)對主記憶體306的存取。主記憶體控制器304亦可管理用於藉由主記憶體控制器304存取儲存記憶體24的記憶體存取請求,該等記憶體存取請求用於擷取可藉由處理器14a-14c或SoC快取記憶體控制器300自主記憶體306請求但未出現在主記憶體306中從而導致主記憶體錯過的記憶體內容。
儲存記憶體24可經組態以提供資料及/或處理器可執行碼之持久儲存,以供在計算裝置未被供以動力時保留。儲存記憶體24可具有相比SoC快取記憶體302及主記憶體306儲存更多資料及/或處理器可執行碼,且儲存包括彼等未被使用或預測以供藉由SoC 12之處理器14a-14c或子系統(圖中未示)用於不遠未來的資料及/或處理器可執行碼的容量。儲存記憶體24可能可用於藉由一或多個SOC 12之處理器14a-14c及/或SoC 12之子系統(圖中未示)存取。儲存記憶體控制器308可管理藉由SoC 12及計算裝置之各種處理器14a-14c及子系統(圖中未示)對儲存記憶體24的存取。儲存記憶體控制器308亦可管理用於自SoC快取記憶體控制器300及主記憶體控制器304至儲存記憶體24之存取的記憶體存取請求,該等記憶體存取請求用於擷取可藉由處理器14a-14c自SoC快取記憶體302或主記憶體306請求但未出現在SoC快取記憶體 302或主記憶體306中從而導致快取記憶體錯過或主記憶體錯過的記憶體內容。
SoC 12之組件中的一些或全部可以不同方式配置及/或組合,同時仍為必要功能提供服務。此外,SoC 12可不受限於組件中之每一者中的一者,且每一組件之多個個例可包括於SoC 12之各種組態中。SoC 12之各種實施例組態可包括與SoC 12分離但經由通信匯流排310連接至該SoC的組件,諸如CPU 14a、GPU 14b、APU 14c、主記憶體控制器304及主記憶體306。各種實施例組態可包括任何單一處理器14或處理器14之組合,包括均質或異質的處理器14組合。類似地,計算裝置10(圖1)可包括任一SoC 12或SOC 12之組合,包括均質或異質的SOC 12之組合。
圖4說明根據各種實施例的任務佇列400之實例。參考圖1至圖4,任務佇列400可包括任務指標之集合及組織,其用於向排程器指示有待排程以供藉由處理器執行之各種處理程序的任務。任務佇列400可以記憶體16、24、206、306或可由處理器14所運行之排程器存取的專用硬體(諸如暫存器)的各種形式實施。在各種實施例中,一或多個排程器及任務佇列400可針對處理器及SOC之群組而實施於計算裝置10上。任務佇列400可包括經組態以儲存多種任務指標(包括正常任務指標及簡單任務指標)的槽402、404、406、408、410。簡單任務指標可經組態使其投射至輕型核之資料輸入項,如進一步參看圖5所描述。正常任務指標可經組態使得其投射至記憶體16、24、206、306中用於除輕型核之外的任何核的一位置。在各種實施例中,簡單任務指標及正常任務指標可被投射至並不與其他類型任務指標之值重疊的值。因此,排程器可根據其經投射值識別任務指標為簡單任務指標抑或正常任務指標,如進一步參看圖5所描述。
在圖4中所說明之實例中,任務佇列槽404含有正常任務指標(正 常任務指標1),且任務佇列槽402、406、408及410含有簡單任務指標(槽402含有簡單任務指標1,槽406及408含有簡單任務指標3,且槽410含有任務指標2)。在所說明之實例中,任務佇列400可包括多於或少於五個槽402-410的任何數目個槽。
在各種實施例中,任務佇列400可以先進先出(FIFO)方式管理。同樣,排程器可讀取具有最舊任務指標之頂部槽(在此實例中槽402),且可移除頂部槽或可刪除或覆寫舊的任務指標,使得剩餘任務指標在任務佇列400中向上移位至其各別的下一槽。可實施其他任務佇列管理策略,諸如不移除或替換任務指標直至其相關聯任務得以排程之策略,且若任務無法排程,則任務佇列400經改組使得無法執行之任務指標移動至任務佇列400中之另一槽402-410,或排程器臨時跨越至任務佇列400中之另一槽402-410。任務佇列管理策略亦可為基於優先權的,其中優先級可由可基於任務衝突及相依性之各種因素(包括任務之臨界性)判定。優先級可指派至任務佇列中影響作為經讀取之下一槽之槽的每一任務,或優先級可影響任務在任務佇列中進行排序的次序。
圖5說明根據各種實施例的簡單任務表500之實例。簡單任務表500可包括儲存於記憶體16、24、206、306之各種形式中的資料之集合及組織。圖5中所說明且在本文中描述之簡單任務表500的表格式為用於儲存及組織資料之格式的實例,且並非關於用於使用其他資料結構儲存及組織資料的其他實施例具有限制性。
在圖5中所說明之實例中,簡單任務表500可組織及維持(例如)每一輸入項之行502、504、506或輕型核之任務或簡單任務的列508、510、512、516中的核識別符(ID)、核指標及核反覆計數器之間的關係。核識別符行502可包括核識別符,其經組態以向排程器指示簡單任務表500中之簡單任務之輸入項508-516。排程器可使用輸入項508- 516之核識別符來輔助識別是否將排程輕型核以供執行,將排程哪個輕型核以供執行,及輕型核是否已藉由將排程器導引至相關聯輸入項508-516而完成執行。簡單任務指標可經投射至最大值可為核表中之輸入項之數目的整數值,且正常任務指標可經投射至六進制指標值,該等指標值不會與簡單任務之整數值重疊。基於經投射至不同指標的不同值,排程器可識別任務指標為簡單任務指標抑或正常任務指標。在圖5中所說明之實例中,投射至簡單任務指標之值可為簡單任務表500中的核識別符,該核識別符(例如)可為整數值,且正常任務指標可投射至(例如)可為十六進制值的實體或虛擬記憶體位址。基於投射至任務指標之值,排程器可判定任務指標為用於簡單任務之簡單任務指標或用於正常任務之正常任務指標。
一旦排程器已識別與核識別符相關聯之輸入項508-516,排程器便可針對輸入項508-516自核指標行504讀取核指標,且自核反覆計數器行506讀取核反覆計數器。核指標可向排程器提供用於擷取有待實施為簡單任務之輕型核的實體或虛擬記憶體位址。核反覆計數器可向排程器提供針對簡單任務而有待執行的核執行反覆的總數目。
在圖5中之實例中,核反覆計數器行506包括展示為整數值之核反覆計數器值,該等核反覆計數器值表示針對簡單任務而有待執行的核執行反覆之總數目。在各種實施例中,核反覆計數器行506核反覆計數器值可包括各種符號表示之一字串,其中該字串中之不同位置表示輕型核的不同特性。舉例而言,該字串中之不同位置可表示針對簡單任務而有待執行的核執行反覆之總數目,針對簡單任務而有待執行的核執行反覆之總數目的除數(例如,常量值或取決於執行緒可用性之值)、針對簡單任務而經執行的核執行反覆之總數目,及用於執行輕型核的限制。在各種實施例中,用於執行輕型核之限制可包括指定以下項:用於執行輕型核之執行緒,該執行緒包括主執行緒、臨界執 行緒、非臨界執行緒;用於執行輕型核之潛時要求;執行執行緒之處理器至儲存輕型核之記憶體的近接性。對於輕型核之簡單任務執行可在輕型核之執行前後讀取及更新核反覆計數器值。
在各種實施例中,簡單任務表500可為可全局存取的集中式簡單任務表500,或可全局或本端存取的分佈式簡單任務表500。分佈式簡單任務表500可經定位極為近接輕型核之執行裝置,諸如位於經指定以執行輕型核之處理器14的記憶體16、24、206、306上。舉例而言,GPU 14b可在其自身的記憶體16、24、206、306中使用分離的簡單任務表500,以處理特定計算任務。
在各種實施例中,簡單任務表500可為簡單任務提供簡單同步化功能性。舉例而言,為執行背對背環路,多個簡單任務可執行相同輕型核。多個簡單任務可指派有若干反覆來完成,且一旦所有簡單任務完成其所指派之反覆,迴路之執行便可完成。可藉由回應於簡單任務完成其所指派之反覆之執行而更新核反覆計數器中的資料,經由簡單任務表500中之簿記針對迴路實施叉形接合同步化圖案。
圖5中所說明之實例包括簡單任務表500中的N個輸入項508-516。在各種實施例中,N之值可以不同數值為頂。當簡單任務表500中存在N個輸入項508-516時,簡單任務表500可為滿的,且額外輸入項可不被添加至簡單任務表,直至現存輸入項508-516基於與現存輸入項508-516相關聯的輕型核之總數目個反覆之執行的完成而失效或被移除為止。因此,可由於不存在可用的空間而不將輕型核鍵入至簡單任務表500中,且此等未經鍵入之輕型核可作為正常任務執行。
圖6為根據各種實施例的運行時間簡單任務排程及執行之過程流程的說明。排程器600及執行緒602可由計算裝置中的任何處理器或處理器14之組合執行。在一些實施例中,排程器600可實施於專用硬體中。為了易於參考,執行排程器模組以及專用排程器硬體之處理器一 般被稱為排程器600。此外,任務佇列400、簡單任務表500及輕型核604可儲存於計算裝置之記憶體16、24、206、306之任何組合上。在各種實施例中,任務佇列400、簡單任務表500及輕型核604可儲存於極為近接於執行排程器600及執行緒602之處理器14之組合的記憶體16、24、206、306之任何組合上,以便減少用於執行輕型核604的潛時及資源需求。在各種實施例中,多個排程器600、執行緒602、任務佇列400、簡單任務表500,及輕型核604可實施於計算裝置上。
在圖6中所說明之實例實施例中,排程器600可存取任務400以讀取任務佇列606之槽且擷取簡單任務指標608。遵循簡單任務指標之方向,排程器600可存取簡單任務表500以讀取藉由簡單任務指標610指定之輸入項,且擷取輸入項612之資料,該資料可包括核指標及核反覆計數器值。排程器600可識別用於執行簡單任務之可用執行緒602,且將用於執行簡單任務614之指令傳遞至執行緒602,該執行緒可包括將輕型核614作為簡單任務(而非正常任務)執行之指令、核指標,及針對簡單任務而有待執行的核執行反覆之數目。當選擇用於執行輕型核之執行緒時,排程器600可考慮經置於輕型核之執行上的限制,該等限制可在核交互計數器資料中予以指示。執行緒602可使用來自所接收指令之資訊存取記憶體,以讀取藉由核指標指定之記憶體位置616,且自記憶體位置618擷取輕型核604。執行緒602可將輕型核作為簡單任務620而直接執行。執行緒602可存取簡單任務表500,以更新經執行簡單任務622之輸入項,該更新可包括更新核反覆計數器值之資料或使該輸入項無效或刪除該輸入項。
圖7說明用於將簡單任務排入佇列之實施例方法700。可在計算裝置中使用以下項來執行方法700:於通用硬體中執行之軟體,諸如處理器或處理器核心;於專用硬體執行之軟體;或於處理器及專用硬體中執行之軟體的組合。
在區塊702中,計算裝置可接收執行處理程序之請求。請求可包括來自作業系統或在計算裝置上執行之程式的呼叫,或自於計算裝置上觸發之硬體信號解譯的呼叫。
在判定區塊704中,計算裝置可判定處理程序之計算程序是否為可作為簡單任務而執行之輕型核。在各種實施例中,處理程序之元件(其為輕型核)可經預先程式化而可識別為輕型核,且可向計算裝置告知所請求以供執行之處理程序的輕型核。在各種實施例中,計算裝置可經預先程式化以將計算程序之類型識別為輕型核,且計算裝置可觀測所請求以供執行之處理程序的元件,以判定該等元件中之任一者是否為指示輕型核之類型。
回應於判定出所請求以供執行之處理程序並不含有可作為簡單任務而執行的輕型核(亦即,判定區塊704=「否」),計算裝置可在區塊718中將正常任務指標添加至有待執行之核的任務佇列。
回應於判定出所請求以供執行之處理程序含有可作為簡單任務而執行之輕型核(亦即,判定區塊704=「是」),計算裝置可在判定區塊706中判定用於輕型核之輸入項是否存在於簡單任務表中。在簡單任務表中檢查用於輕型核之輸入項可包括:將簡單任務表中的投射至核指標之記憶體位置與輕型核之記憶體位置進行比較。
回應於判定出用於輕型核之輸入項存在於簡單任務表中(亦即,判定區塊706=「是」),計算裝置可在判定區塊708中判定現存輸入項是否適用於輕型核之所請求執行。在各種實施例中,輕型核之一些執行可基於表示於核反覆計數器中的藉由相關聯資料所指示的輕型核之執行之各種特性,不同於輕型核之其他執行。計算裝置可使用表示於核反覆計數器中的與輕型核之匹配核指標相關聯的輕型核之執行之特性來判定用於輕型核之輸入項是否適用於投射至用於輕型核之所請求執行的簡單任務指標。
回應於判定出現存輸入項適用於輕型核之所請求執行(亦即,判定區塊708=「是」),計算裝置可在區塊710中更新簡單任務表中的用於輕型核之現存輸入項。更新現存輸入項可包括:更新表示於核反覆計數器中的藉由相關聯資料所指示的用於執行輕型核之特性資料,諸如輕型核之執行之反覆的數目。
回應於判定出用於輕型核之輸入項並不存在於簡單任務表中(亦即,判定區塊706=「否」)或回應於判定出輸入項並非適用於輕型核之執行(亦即,判定區塊708=「否」),計算裝置可在判定區塊714中判定簡單任務表是否為滿的。簡單任務表可具有能夠保留N個輸入項的有限大小。計算裝置可將現存輸入項之數目與簡單任務表之容量進行比較,以判定是否可將額外輸入項添加至簡單任務表。
回應於判定出簡單任務表為滿的(亦即,判定區塊714=「是」),計算裝置可在區塊718中將正常任務指標添加至用於輕型核之任務佇列。
回應於判定出簡單任務表並非為滿的(亦即,判定區塊714=「否」),計算裝置可在區塊716中於簡單任務表中產生用於輕型核之輸入項。計算裝置可產生一新輸入項,該輸入項具有:唯一核識別符,其指示供作為簡單任務而執行之輕型核及簡單任務表中的輸入項之位置;至輕型核之實體或虛擬記憶體位置的核指標;及核反覆計數器資料,其指定用於執行輕型核之特性。
在區塊712中,計算裝置將在區塊710中更新或在區塊716中產生之簡單任務指標添加至輕型核之簡單任務表中的用於現存輸入項之任務佇列。簡單任務指標可經投射至用於現存輸入項之核識別符。
圖8說明用於排程簡單任務之實施例方法800。可在計算裝置中使用以下項來執行方法800:於通用硬體中執行之軟體,諸如處理器或處理器核心;於專用硬體執行之軟體;或於處理器及專用硬體中執 行之軟體的組合。
在區塊802中,計算裝置可自任務佇列擷取指標。所擷取之指標可藉由任務佇列管理策略指定,該任務佇列管理策略可包括先進先出任務佇列管理策略、基於可用性之任務佇列管理策略、基於優先權之任務佇列管理策略,或此等任務佇列管理策略之組合,如本文中所論述。
在判定區塊804中,計算裝置可判定所擷取之指標是否為簡單任務指標。簡單任務指標及正常任務指標可經投射至並不與其他類型任務指標之值重疊的值,由此提供一種根據其經投射值識別任務指標為簡單任務指標抑或為正常任務指標的方式。在各種實施例中,投射至簡單任務指標之值可為簡單任務表中的核識別符,該核識別符(例如)可為整數值,且正常任務指標可投射至(例如)可為十六進制值的實體或虛擬記憶體位址。基於經投射至任務指標之值,計算裝置可判定任務指標為用於簡單任務之簡單任務指標或用於正常任務之正常任務指標。
回應於判定出所擷取之指標並非為簡單任務指標(亦即,判定區塊804=「否」),計算裝置可在區塊818中產生正常任務且將該正常任務指派至用於執行之執行緒。
回應於判定出所擷取之指標為簡單任務指標(亦即,判定區塊804=「是」),計算裝置可在區塊806中自簡單任務表擷取與簡單任務指標相關聯之輸入項。如本文中所描述,簡單任務指標可經投射至簡單任務表中之輸入項之核識別符,因此計算裝置可擷取簡單任務表中的具有匹配經投射至所擷取之簡單任務指標之值的核識別符的輸入項。擷取輸入項亦可包括擷取核指標及輸入項之核反覆計數器之資料。
在區塊808中,計算裝置可識別用於執行與簡單任務指標相關聯 的輸入項之輕型核的任何限制。如所描述,對輕型核之執行的限制可包括於總核反覆之資料中。計算裝置可針對限制之符號表示而檢查總核反覆之資料中之所指定位置。限制可包括指定以下項:用於執行輕型核之執行緒,該執行緒包括主執行緒、臨界執行緒、非臨界執行緒;用於執行輕型核之潛時要求;執行執行緒之處理器至儲存輕型核之記憶體的近接性。
在區塊810中,計算裝置可識別用於將輕型核作為簡單任務而執行的可用執行緒,從而在不產生正常任務的情況下直接執行輕型核。識別可用執行緒可考慮可用執行緒是否滿足用於執行輕型核之任何限制。
在判定區塊812中,計算裝置可判定有待作為簡單任務而執行之核反覆是否可劃分。如所描述,包括針對簡單任務而有待執行之核執行反覆的總數目及針對簡單任務而有待執行之核執行反覆的總數目的除數可包括於總核反覆之資料中。計算裝置可針對核執行反覆之總數目及核執行反覆之總數目的除數而檢查總核反覆之資料中的所指定位置,以判定核反覆是否可劃分及如何劃分核反覆以供指派至可用執行緒。
回應於判定出有待作為簡單任務而執行之輕型核係可劃分的(亦即,判定區塊812=「是」),計算裝置可在區塊814中將供作為簡單任務而執行之總反覆劃分成核反覆部分。在各種實施例中,核反覆部分可為:其將核反覆對稱地或不對稱地散佈於可用執行緒上。在各種實施例中,核反覆部分可為:其考慮大於、等於或小於可用執行緒之數目的若干核反覆部分中之所有總反覆。
回應於判定出有待作為簡單任務而執行的核反覆不可劃分(亦即,判定區塊812=「否」)或在將供作為簡單任務而執行之總反覆劃分成核反覆部分之後,計算裝置可在區塊816中將有待作為簡單任務 而執行之核反覆部分中的一些或全部指派至一或多個可用執行緒。供執行之核反覆部分的指派可考慮可用執行緒是否滿足用於執行輕型核之任何限制。
圖9說明用於執行簡單任務之實施例方法900。可在計算裝置中使用以下項來執行方法900:於通用硬體中執行之軟體,諸如處理器或處理器核心;於專用硬體執行之軟體;或於處理器及專用硬體中執行之軟體的組合。
在區塊902中,計算裝置可擷取輕型核。計算裝置可使用與簡單任務指標相關聯的輸入項之核指標以自經投射至核指標之記憶體位置擷取輕型核。
在區塊904中,計算裝置可將輕型核作為簡單任務而執行。計算裝置可使用所擷取之輕型核,且藉由在不首先產生正常任務之建構的情況下直接執行輕型核,來對簡單任務指派至執行緒作出回應,由此避免必須在執行期間管理正常任務之衝突及相依性,且在完成時分派正常任務。因此,雖然可(具體而言)使用簡單任務將輕型核之執行排程為類似於任務,但將輕型核作為簡單任務而執行避免排程及執行正常任務所需的資源消耗之負擔。
在區塊906中,計算裝置可更新本端反覆計數器,以供核反覆部分之執行。更新本端反覆計數器可包括遞增、遞減或使用演算法指示核反覆部分中的經執行之核反覆或剩餘以供執行之核反覆的數目。
在判定區塊908中,計算裝置可判定核反覆部分是否完成。在各種實施例中,計算裝置可將本端反覆計數器中的簡單任務中之經執行反覆的數目與核反覆部分之反覆的數目進行比較,或可檢查本端反覆計數器是否等於給定值(諸如零)。回應於判定出核反覆部分並未完成(亦即,判定區塊908=「否」),計算裝置可在區塊904中將輕型核作為簡單任務而執行,且在區塊906中更新本端反覆計數器以供核反覆 部分之執行,如所描述。
回應於判定出核反覆部分完成(亦即,判定區塊908=「是」),計算裝置可在區塊910中更新簡單任務表中的用於簡單任務之輸入項之總反覆計數器。在各種實施例中,更新總反覆計數器可包括將已完成核反覆部分之反覆的數目添加至表示於總反覆計數器之資料中的已完成之核反覆的數目,或自總反覆計數器之資料中的有待完成之核反覆的數目中扣除已完成核反覆部分之反覆的數目。在各種實施例中,已完成或有待完成之核反覆的數目可表示為:核反覆之數目、核反覆部分之數目,或表示核反覆或核反覆部分之符號值。
在判定區塊912中,計算裝置可判定是否任何核反覆部分保留以供執行。未經執行之核反覆部分可被指派至特定執行緒或指派至一組執行緒。回應於判定出核反覆部分保留以供執行(亦即,判定區塊912=「是」),計算裝置可在區塊904中將輕型核作為簡單任務而執行,如所描述。
回應於判定出核反覆部分未保留以供執行(亦即,判定區塊912=「否」),計算裝置可在判定區塊914中判定用於核反覆部分之簡單任務輸出是否獨立於用於另一核反覆部分之另一簡單任務輸出。以此方式,計算裝置可管理輕型核執行之簡單同步化。舉例而言,計算裝置可實施叉形接合範式表,使得導致單一輸出之輕型核執行可同時執行,且其輸出可在完成執行之後接合在一起。
回應於判定出用於核反覆部分之簡單任務輸出並非獨立於用於另一核反覆部分之另一簡單任務輸出(亦即,判定區塊914=「否」),計算裝置可在區塊916中組合相關簡單任務輸出。
回應於判定出用於核反覆部分之簡單任務輸出獨立於用於另一核反覆部分之另一簡單任務輸出(亦即,判定區塊914=「是」)或在計算裝置在區塊916中組合相關簡單任務輸出之後,計算裝置可在區塊 918中輸出經組合之簡單任務輸出。在區塊920中,計算裝置可使與所擷取輕型核相關聯的用於簡單任務之輸入項失效或自簡單任務表中將其清除。
各種態樣(包括(但不限於)如上文參考圖1至圖9所論述之態樣)可實施於廣泛多種計算系統中,該等計算系統可包括適用於與圖10中所說明之各種態樣一起使用的實例行動計算裝置。行動計算裝置1000可包括耦接至觸控式螢幕控制器1004及內部記憶體1006之處理器1002。處理器1002可為經指定用於一般或特定處理任務之一或多個多核心積體電路。內部記憶體1006可為揮發性或非揮發性記憶體,且亦可為安全及/或加密的記憶體,或不安全及/或未加密的記憶體,或其任何組合。可利用之記憶體類型的實例包括(但不限於)DDR、LPDDR、GDDR、WIDEIO、RAM、SRAM、DRAM、P-RAM、R-RAM、M-RAM、STT-RAM,及嵌入型DRAM。觸控式螢幕控制器1004及處理器1002亦可耦接至觸控式螢幕面板1012,諸如電阻感測觸控式螢幕、電容感測觸控式螢幕、紅外感測觸控式螢幕等。另外,計算裝置1000之顯示器不必具有觸控式螢幕能力。
行動計算裝置1000可具有一或多個無線電信號收發器1008(例如,花生(Peanut)、藍芽、紫蜂、Wi-Fi、RF無線電等)及耦接至彼此及/或耦接至處理器1002的用於發送及接收通信之天線1010。收發器1008及天線1010可與上文所提及之電路一起使用,以實施各種無線傳輸協定堆疊及介面。行動計算裝置1000可包括使得能夠經由蜂巢式網路通信且耦接至處理器的蜂巢式網路無線數據機晶片1016。
行動計算裝置1000可包括耦接至處理器1002之周邊裝置連接介面1018。周邊裝置連接介面1018可單一地經組態以接受一種類型之連接,或可經組態以接受各種類型之共同或專有實體及通信連接,諸如USB、FireWire、Thunderbolt或PCIe。周邊裝置連接介面1018亦可耦 接至經類似組態之周邊裝置連接埠(圖中未示)。
行動計算裝置1000亦可包括用於提供音訊輸出之揚聲器1014。行動計算裝置1000亦可包括用於含有本文所論述之組件中的全部或一些的殼體1020,其由塑膠、金屬或材料之組合建構。行動計算裝置1000可包括耦接至處理器1002之電源1022,諸如拋棄式或可再充電電池。可再充電電池亦可耦接至周邊裝置連接埠以自行動計算裝置1000外部之來源接收充電電流。行動計算裝置1000亦可包括用於接收使用者輸入之實體按鈕1024。行動計算裝置1000亦可包括用於接通和斷開行動計算裝置1000之電力按鈕1026。
各種態樣(包括(但不限於)如上文參考圖1至圖9所論述之態樣)可實施於廣泛多種計算系統中,該等計算系統可包括多種行動計算裝置,諸如圖11中所說明之膝上型電腦1100。許多膝上型電腦包括充當電腦之指標裝置之觸控板觸控表面1117,且因此可接收類似在具有觸控式螢幕顯示器及上文所描述之計算裝置上實施之彼等手勢的拖曳、滾動及撥動手勢。膝上型電腦1100將通常包括耦接至揮發性記憶體1112及大容量非揮發性記憶體(諸如,快閃記憶體之磁碟機1113)的處理器1111。另外,電腦1100可具有用於發送及接收電磁輻射之一或多個天線1108,該天線可連接至耦接至處理器1111之無線資料鏈路及/或蜂巢式電話收發器1116。電腦1100亦可包括耦接至處理器1111之軟碟驅動器1114及緊密光碟(CD)驅動器1115。在筆記型電腦組態中,電腦殼體包括觸控板1117、鍵盤1118及顯示器1119,其均耦接至處理器1111。計算裝置之其他組態可包括亦可結合各種態樣使用的如已熟知的耦接至處理器之電腦滑鼠或軌跡球(例如,經由通用串列匯流排(USB)輸入)。
各種態樣(包括(但不限於)如上文參考圖1至圖9所論述之態樣)可實施於廣泛多種計算系統中,該等計算系統可包括用於壓縮伺服器快 取記憶體中之資料的多種市購伺服器。實例伺服器1200在圖12中進行說明。此伺服器1200通常包括耦接至揮發性記憶體1202及大容量非揮發性記憶體(諸如磁碟機1204)之一或多個多核心處理器組合件1201。如在圖12中所說明,多核心處理器組合件1201可藉由插入至組合件之機架中而添加至伺服器1200。伺服器1200亦可包括耦接至處理器1201之軟碟驅動器、緊密光碟(CD)或DVD光碟驅動器1206。伺服器1200亦可包括耦接至多核心處理器組合件1201以用於建立與網路1205之網路介面連接的網路存取埠1203,該網路諸如耦接至其他廣播系統電腦及伺服器之區域網路、網際網路、公眾交換電話網路及/或蜂巢式資料網路(例如,CDMA、TDMA、GSM、PCS、3G、4G、LTE或任何其他類型之蜂巢式資料網路)。
用於在可程式化處理器上執行以用於進行各種態樣之操作的電腦程式碼或「程式碼」可以諸如C、C++、C#、Smalltalk、Java、JavaScript、Visual Basic、結構化查詢語言(例如,交易SQL)、Perl之高階程式化語言或以各種其他程式化語言寫入。如本申請案中使用之儲存在電腦可讀儲存媒體上的程式碼或程式可指機器語言程式碼(諸如目標程式碼),其格式可由處理器理解。
許多計算裝置作業系統核經組織至使用者空間(其中運行非特許程式碼)及核空間(其中運行特許程式碼)中。此分隔在Android與其他一般公用許可證(GPL)環境中尤其重要,其中作為核空間之部分的程式碼必須經GPL許可,而在使用者空間中運行之程式碼可不經GPL許可。應理解,除非另外明確說明,否則本文論述之各種軟體組件/模組可在核空間抑或使用者空間中實施。
前述方法描述及過程流程圖僅作為說明性實例而提供且不意欲要求或暗示各種態樣之操作必須以所呈現之次序執行。如將由熟習此項技術者瞭解,可以任何次序執行前述態樣中之操作的次序。諸如 「此後」、「接著」、「隨後」等之詞並不意欲限制操作之次序;此等詞僅用以引導讀者閱讀方法之描述。另外,對呈單數形式之申請專利範圍元件之任何參考(例如,使用冠詞「一」或「該」)不應解釋為將元件限於單數。
結合各種態樣描述之各種說明性邏輯區塊、模組、電路及演算法操作可實施為電子硬體、電腦軟體或兩者的組合。為了清楚地說明硬體與軟體之此互換性,已在上文就各種說明性組件、區塊、模組、電路及操作之功能性對其加以大體描述。將此類功能性實施為硬體還是軟體取決於特定應用及強加於整個系統的設計約束。熟習此項技術者可針對每一特定應用以變化之方式實施所描述功能性,但此等實施決策不應被解譯為造成對本發明之範疇的脫離。
結合本文中所揭示之態樣而描述的用以實施各種說明性邏輯、邏輯區塊、模組及電路之硬體可藉由以下各者來實施或執行:通用處理器、數位信號處理器(DSP)、特殊應用積體電路(ASIC)、場可程式化閘陣列(FPGA)或其他可程式化邏輯裝置、離散閘或電晶體邏輯、離散硬體組件,或其經設計以執行本文中所描述之功能的任何組合。通用處理器可為微處理器,但在替代方案中,處理器可為任何習知之處理器、控制器、微控制器或狀態機。處理器還可實施為計算裝置的組合,例如,DSP和微處理器的組合、多個微處理器、結合DSP核心的一或多個微處理器或任何其他此類組態。或者,可藉由特定於給定功能之電路系統來執行一些操作或方法。
在一或多個態樣中,可以硬體、軟體、韌體或其任何組合來實施所描述之功能。若實施於軟體中,則該等功能可作為一或多個指令或程式碼儲存於非暫時性電腦可讀媒體或非暫時性處理器可讀媒體上。本文中所揭示之方法或演算法之操作可體現於處理器可執行軟體模組中,該處理器可執行軟體模組可駐留於非暫時性電腦可讀或處理 器可讀儲存媒體上。非暫時性電腦可讀或處理器可讀儲存媒體可為可由電腦或處理器存取之任何儲存媒體。借助於實例但非限制,此類非暫時性電腦可讀或處理器可讀媒體可包括RAM、ROM、EEPROM、快閃記憶體、CD-ROM或其他光碟儲存裝置、磁碟儲存裝置或其他磁性儲存裝置,或可用於以指令或資料結構形式儲存所要程式碼且可由電腦存取之任何其他媒體。如本文所使用之磁碟及光碟包括緊密光碟(CD)、雷射光碟、光學光碟、數位多功能光碟(DVD)、軟碟及藍光光碟,其中磁碟通常以磁性方式再生資料,而光碟用雷射以光學方式再生資料。以上各者之組合亦包括在非暫時性電腦可讀及處理器可讀媒體之範疇內。另外,方法或演算法之操作可作為程式碼及/或指令中之一者或任何組合或集合而駐留於可併入至電腦程式產品中之非暫時性處理器可讀媒體及/或電腦可讀媒體上。
提供對所揭示態樣之前述描述,以使得任一熟習此項技術者能夠製造或使用本發明。熟習此項技術者將易於瞭解對此等態樣之各種修改,且本文中定義之一般原理可應用於其他態樣而不脫離本發明之範疇。因此,本發明並不意欲受限於本文中所展示之實施例,而是應符合與以下申請專利範圍及本文中所揭示之原理及新穎特徵一致的最廣範疇。
800‧‧‧方法
802-818‧‧‧區塊

Claims (30)

  1. 一種在一計算裝置中排程及執行輕型核之方法,其包含:判定一任務佇列中之一第一任務指標是否為用於一輕型核之一簡單任務指標;回應於判定出該第一任務指標為一簡單任務指標,排程用於該輕型核之一第一簡單任務以供藉由一第一執行緒執行;自一簡單任務表之一輸入項擷取用於該輕型核之一核指標,其中該輸入項與該簡單任務指標相關聯;及將該輕型核作為該第一簡單任務而直接執行。
  2. 如請求項1之方法,其進一步包含:完成該第一簡單任務之執行;及更新該簡單任務表之該輸入項之一核反覆計數器的資料。
  3. 如請求項2之方法,其進一步包含:判定該輕型核之核反覆是否可劃分;及回應於判定出該輕型核之該等核反覆可劃分,將該輕型核之該等核反覆劃分成反覆部分,其中:排程用於該輕型核之一第一簡單任務以供藉由一第一執行緒執行包含向該第一簡單任務指派至少一個反覆部分;完成該第一簡單任務之執行包含完成該第一簡單任務之若干執行,該等執行之一數目等於被指派至該第一簡單任務之該至少一個反覆部分之反覆的一數目;及更新該簡單任務表之該輸入項之一核反覆計數器的資料包含更新該核反覆計數器之該資料以反映被指派至該第一簡單任務之該至少一個反覆部分之該數目個反覆的完成。
  4. 如請求項2之方法,其進一步包含:自該核反覆計數器之該資料判定該第一簡單任務之所有反覆是否完成;及回應於判定出該第一簡單任務之該等所有反覆均完成而清除該簡單任務表之該輸入項。
  5. 如請求項1之方法,其進一步包含識別用於執行該輕型核之一限制,其中該限制包含以下項中之一者:用於執行該輕型核之一指定執行緒,該指定執行緒包括一主執行緒、一臨界執行緒,及一非臨界執行緒;用於執行該輕型核之一潛時要求;及執行該第一執行緒之一處理器至儲存該輕型核之一記憶體的一近接性,其中排程用於該輕型核之一第一簡單任務以供藉由一第一執行緒執行包含:基於用於執行該輕型核之該限制而選擇該第一執行緒。
  6. 如請求項1之方法,其進一步包含:判定該任務佇列中之一第二任務指標是否為用於該輕型核之該簡單任務指標;回應於判定出該第二任務指標為該簡單任務指標,排程用於該輕型核之一第二簡單任務以供藉由一第二執行緒執行;自該簡單任務表之該輸入項擷取用於該輕型核之該核指標,其中該輸入項與該簡單任務指標相關聯;及將該輕型核作為該第二簡單任務而直接執行。
  7. 如請求項6之方法,其進一步包含:將該第一簡單任務之一第一輸出與該第二簡單任務之一第二輸出組合。
  8. 如請求項1之方法,其進一步包含: 判定一所請求處理程序是否包括該輕型核;回應於判定出該所請求處理程序包括該輕型核而判定該簡單任務表是否係滿的;回應於判定出該簡單任務表並非為滿的而在該簡單任務表中產生用於該輕型核之該輸入項;將與該輸入項相關聯之該簡單任務指標添加至該任務佇列;及回應於判定出該簡單任務表係滿的而將與該輕型核相關聯之一正常任務指標添加至該任務佇列。
  9. 一種計算裝置,其包含:一第一處理器,其經組態有用以執行包含以下各者之操作的處理器可執行指令:判定一任務佇列中之一第一任務指標是否為用於一輕型核之一簡單任務指標;回應於判定出該第一任務指標為一簡單任務指標,排程用於該輕型核之一第一簡單任務以供藉由一第一執行緒執行;自一簡單任務表之一輸入項擷取用於該輕型核之一核指標,其中該輸入項與該簡單任務指標相關聯;及將該輕型核作為該第一簡單任務而直接執行。
  10. 如請求項9之計算裝置,其中該第一處理器經組態有用以執行進一步包含以下各者之操作的處理器可執行指令:完成該第一簡單任務之執行;及更新該簡單任務表之該輸入項之一核反覆計數器的資料。
  11. 如請求項10之計算裝置,其中該第一處理器經組態有用以執行進一步包含以下各者之操作的處理器可執行指令:判定該輕型核之核反覆是否可劃分;及回應於判定出該輕型核之該等核反覆可劃分,將該輕型核之 該等核反覆劃分成反覆部分,其中該第一處理器經組態有處理器可執行指令以執行操作使得:排程用於該輕型核之一第一簡單任務以供藉由一第一執行緒執行包含向該第一簡單任務指派至少一個反覆部分;完成該第一簡單任務之執行包含完成該第一簡單任務之若干執行,該等執行之一數目等於被指派至該第一簡單任務之該至少一個反覆部分之反覆的一數目;及更新該簡單任務表之該輸入項之一核反覆計數器的資料包含更新該核反覆計數器之該資料以反映被指派至該第一簡單任務之該至少一個反覆部分之該數目個反覆的完成。
  12. 如請求項10之計算裝置,其中該第一處理器經組態有用以執行進一步包含以下各者之操作的處理器可執行指令:自該核反覆計數器之該資料判定該第一簡單任務之所有反覆是否完成;及回應於判定出該第一簡單任務之該等所有反覆均完成而清除該簡單任務表之該輸入項。
  13. 如請求項9之計算裝置,其進一步包含:一記憶體,其以通信方式連接至該第一處理器;及一第二處理器,其以通信方式連接至該第一處理器,其中該第一處理器經組態有用以執行進一步包含以下各者之操作的處理器可執行指令:識別用於執行該輕型核之一限制,其中該限制包含以下項中之一者:用於執行該輕型核之一指定執行緒,該指定執行緒包括一主執行緒、一臨界執行緒,及一非臨界執行緒;用於執行該輕型核之一潛時要求;及執行該第一執行緒之該第二處理器至儲存該輕型核之一記憶體的一近接 性,且其中該第一處理器經組態有處理器可執行指令以執行操作使得:排程用於該輕型核之一第一簡單任務以供藉由一第一執行緒執行包含:基於用於執行該輕型核之該限制而選擇該第一執行緒。
  14. 如請求項9之計算裝置,其中該第一處理器經組態有用以執行進一步包含以下各者之操作的處理器可執行指令:判定該任務佇列中之一第二任務指標是否為用於該輕型核之該簡單任務指標;回應於判定出該第二任務指標為該簡單任務指標,排程用於該輕型核之一第二簡單任務以供藉由一第二執行緒執行;自該簡單任務表之該輸入項擷取用於該輕型核之該核指標,其中該輸入項與該簡單任務指標相關聯;及將該輕型核作為該第二簡單任務而直接執行。
  15. 如請求項14之計算裝置,其中該第一處理器經組態有用以執行進一步包含以下各者之操作的處理器可執行指令:將該第一簡單任務之一第一輸出與該第二簡單任務之一第二輸出組合。
  16. 如請求項9之計算裝置,其中該第一處理器經組態有用以執行進一步包含以下各者之操作的處理器可執行指令:判定一所請求處理程序是否包括該輕型核;回應於判定出該所請求處理程序包括該輕型核而判定該簡單任務表是否係滿的;回應於判定出該簡單任務表並非為滿的而在該簡單任務表中產生用於該輕型核之該輸入項;將與該輸入項相關聯之該簡單任務指標添加至該任務佇列;及 回應於判定出該簡單任務表係滿的而將與該輕型核相關聯之一正常任務指標添加至該任務佇列。
  17. 一種計算裝置,其包含:用於判定一任務佇列中之一第一任務指標是否為用於一輕型核之一簡單任務指標的構件;用於回應於判定出該第一任務指標為一簡單任務指標而排程用於該輕型核之一第一簡單任務以供藉由一第一執行緒執行的構件;用於自一簡單任務表之一輸入項擷取用於該輕型核之一核指標的構件,其中該輸入項與該簡單任務指標相關聯;及用於將該輕型核作為該第一簡單任務而直接執行的構件。
  18. 如請求項17之計算裝置,其進一步包含:用於完成該第一簡單任務之執行的構件;及用於更新該簡單任務表之該輸入項之一核反覆計數器的資料的構件。
  19. 如請求項18之計算裝置,其進一步包含:用於判定該輕型核之核反覆是否可劃分的構件;及用於回應於判定出該輕型核之該等核反覆可劃分而將該輕型核之該等核反覆劃分成反覆部分的構件,其中:用於排程用於該輕型核之一第一簡單任務以供藉由一第一執行緒執行的構件包含用於向該第一簡單任務指派至少一個反覆部分的構件;用於完成該第一簡單任務之執行的構件包含用於完成該第一簡單任務之若干執行的構件,該等執行之一數目等於被指派至該第一簡單任務之該至少一個反覆部分之反覆的一數 目;及用於更新該簡單任務表之該輸入項之一核反覆計數器的資料的構件包含用於更新該核反覆計數器之資料以反映被指派至該第一簡單任務之該至少一個反覆部分之該數目個反覆的完成的構件。
  20. 如請求項18之計算裝置,其進一步包含:用於自該核反覆計數器之資料判定該第一簡單任務之所有反覆是否完成的構件;及用於回應於判定出該第一簡單任務之該等所有反覆均完成而清除該簡單任務表之該輸入項的構件。
  21. 如請求項17之計算裝置,其進一步包含用於識別用於執行該輕型核之一限制的構件,其中該限制包含以下項中之一者:用於執行該輕型核之一指定執行緒,該指定執行緒包括一主執行緒、一臨界執行緒,及一非臨界執行緒;用於執行該輕型核之一潛時要求;及執行該第一執行緒之一處理器至儲存該輕型核之一記憶體的一近接性,其中用於排程用於該輕型核之一第一簡單任務以供藉由一第一執行緒執行的構件包含:用於基於用於執行該輕型核之該限制而選擇該第一執行緒的構件。
  22. 如請求項17之計算裝置,其進一步包含:用於判定該任務佇列中之一第二任務指標是否為用於該輕型核之該簡單任務指標的構件;用於回應於判定出該第二任務指標為該簡單任務指標而排程用於該輕型核之一第二簡單任務以供藉由一第二執行緒執行的構件;用於自該簡單任務表之該輸入項擷取用於該輕型核之該核指 標的構件,其中該輸入項與該簡單任務指標相關聯;用於將該輕型核作為該第二簡單任務而直接執行的構件;及用於將該第一簡單任務之一第一輸出與該第二簡單任務之一第二輸出組合的構件。
  23. 如請求項17之計算裝置,其進一步包含:用於判定一所請求處理程序是否包括該輕型核的構件;用於回應於判定出該所請求處理程序包括該輕型核而判定該簡單任務表是否係滿的的構件;用於回應於判定出該簡單任務表並非為滿的而在該簡單任務表中產生用於該輕型核之該輸入項的構件;用於將與該輸入項相關聯之該簡單任務指標添加至該任務佇列的構件;及用於回應於判定出該簡單任務表係滿的而將與該輕型核相關聯之一正常任務指標添加至該任務佇列的構件。
  24. 一種非暫時性處理器可讀儲存媒體,其上儲存有處理器可執行指令,該等處理器可執行指令經組態以使得一計算裝置之一第一處理器執行包含以下各者的操作:判定一任務佇列中之一第一任務指標是否為用於一輕型核之一簡單任務指標;回應於判定出該第一任務指標為一簡單任務指標,排程用於該輕型核之一第一簡單任務以供藉由一第一執行緒執行;自一簡單任務表之一輸入項擷取用於該輕型核之一核指標,其中該輸入項與該簡單任務指標相關聯;及將該輕型核作為該第一簡單任務而直接執行。
  25. 如請求項24之非暫時性處理器可讀儲存媒體,其中該等所儲存之處理器可執行指令經組態以使得該第一處理器執行進一步包 含以下各者之操作:完成該第一簡單任務之執行;及更新該簡單任務表之該輸入項之一核反覆計數器的資料。
  26. 如請求項25之非暫時性處理器可讀儲存媒體,其中該等所儲存之處理器可執行指令經組態以使得該第一處理器執行進一步包含以下各者之操作:判定該輕型核之核反覆是否可劃分;及回應於判定出該輕型核之該等核反覆可劃分,將該輕型核之該等核反覆劃分成反覆部分,其中該等所儲存之處理器可執行指令經組態以使得該第一處理器執行操作使得:排程用於該輕型核之一第一簡單任務以供藉由一第一執行緒執行包含向該第一簡單任務指派至少一個反覆部分;完成該第一簡單任務之執行包含完成該第一簡單任務之若干執行,該等執行之一數目等於被指派至該第一簡單任務之該至少一個反覆部分之反覆的一數目;及更新該簡單任務表之該輸入項之一核反覆計數器的資料包含更新該核反覆計數器之該資料以反映被指派至該第一簡單任務之該至少一個反覆部分之該數目個反覆的完成。
  27. 如請求項25之非暫時性處理器可讀儲存媒體,其中該等所儲存之處理器可執行指令經組態以使得該第一處理器執行進一步包含以下各者之操作:自該核反覆計數器之該資料判定該第一簡單任務之所有反覆是否完成;及回應於判定出該第一簡單任務之該等所有反覆均完成而清除該簡單任務表之該輸入項。
  28. 如請求項24之非暫時性處理器可讀儲存媒體,其中該等所儲存之處理器可執行指令經組態以使得該第一處理器執行進一步包含以下各者之操作:識別用於執行該輕型核之一限制,且其中該等所儲存之處理器可執行指令經組態以使得該第一處理器執行操作使得:該限制包含以下項中之一者:用於執行該輕型核之一指定執行緒,該指定執行緒包括一主執行緒、一臨界執行緒,及一非臨界執行緒;用於執行該輕型核之一潛時要求;及執行該第一執行緒之一第二處理器至儲存該輕型核之一記憶體的一近接性;及排程用於該輕型核之一第一簡單任務以供藉由一第一執行緒執行包含:基於用於執行該輕型核之該限制而選擇該第一執行緒。
  29. 如請求項24之非暫時性處理器可讀儲存媒體,其中該等所儲存之處理器可執行指令經組態以使得該第一處理器執行進一步包含以下各者之操作:判定該任務佇列中之一第二任務指標是否為用於該輕型核之該簡單任務指標;回應於判定出該第二任務指標為該簡單任務指標,排程用於該輕型核之一第二簡單任務以供藉由一第二執行緒執行;自該簡單任務表之該輸入項擷取用於該輕型核之該核指標,其中該輸入項與該簡單任務指標相關聯;將該輕型核作為該第二簡單任務而直接執行;及將該第一簡單任務之一第一輸出與該第二簡單任務之一第二輸出組合。
  30. 如請求項24之非暫時性處理器可讀儲存媒體,其中該等所儲存 之處理器可執行指令經組態以使得該第一處理器執行進一步包含以下各者之操作:判定一所請求處理程序是否包括該輕型核;回應於判定出該所請求處理程序包括該輕型核而判定該簡單任務表是否係滿的;回應於判定出該簡單任務表並非為滿的而在該簡單任務表中產生用於該輕型核之該輸入項;將與該輸入項相關聯之該簡單任務指標添加至該任務佇列;及回應於判定出該簡單任務表係滿的而將與該輕型核相關聯之一正常任務指標添加至該任務佇列。
TW105123620A 2015-07-30 2016-07-26 用於簡化用於有效平行計算的以任務為基礎的運行時間之方法 TWI726899B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562198830P 2015-07-30 2015-07-30
US62/198,830 2015-07-30
US14/992,268 2016-01-11
US14/992,268 US10169105B2 (en) 2015-07-30 2016-01-11 Method for simplified task-based runtime for efficient parallel computing

Publications (2)

Publication Number Publication Date
TW201717004A TW201717004A (zh) 2017-05-16
TWI726899B true TWI726899B (zh) 2021-05-11

Family

ID=57882620

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105123620A TWI726899B (zh) 2015-07-30 2016-07-26 用於簡化用於有效平行計算的以任務為基礎的運行時間之方法

Country Status (9)

Country Link
US (1) US10169105B2 (zh)
EP (2) EP3859523A1 (zh)
JP (1) JP2018528515A (zh)
KR (1) KR20180034440A (zh)
CN (1) CN108431775A (zh)
BR (1) BR112018001728A2 (zh)
CA (1) CA2989166A1 (zh)
TW (1) TWI726899B (zh)
WO (1) WO2017019212A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10312459B2 (en) * 2016-01-27 2019-06-04 Nichem Fine Technology Co., Ltd. Compound and organic electronic device using the same
CN107562535A (zh) * 2017-08-02 2018-01-09 广东睿江云计算股份有限公司 一种基于任务调度的负载均衡方法、系统
GB2569270B (en) * 2017-10-20 2020-02-19 Graphcore Ltd Parallel computing
CN108364162B (zh) * 2018-01-31 2020-11-27 深圳市融壹买信息科技有限公司 一种任务界面管理方法、系统及终端设备
US10387214B1 (en) * 2018-03-30 2019-08-20 Sas Institute Inc. Managing data processing in a distributed computing environment
CN110968404B (zh) * 2018-09-30 2023-04-28 阿里巴巴集团控股有限公司 一种设备数据处理方法及装置
US11803391B2 (en) 2020-10-20 2023-10-31 Micron Technology, Inc. Self-scheduling threads in a programmable atomic unit
US11989583B2 (en) * 2021-03-31 2024-05-21 Arm Limited Circuitry and method

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110207431A1 (en) * 2010-02-19 2011-08-25 Alcatel-Lucent Usa Inc. Accounting Request Processing In A Communication Network
US20130268942A1 (en) * 2012-04-09 2013-10-10 Jerome F. Duluk, Jr. Methods and apparatus for auto-throttling encapsulated compute tasks
US20140337389A1 (en) * 2013-05-08 2014-11-13 Nvidia Corporation System, method, and computer program product for scheduling tasks associated with continuation thread blocks
TW201512983A (zh) * 2013-07-16 2015-04-01 Apple Inc 用於一處理器之存取映射型樣匹配為基礎之預先擷取單元
CN104615411A (zh) * 2011-04-07 2015-05-13 威盛电子股份有限公司 控制寄存器对应于异质指令集架构处理器
CN104699460A (zh) * 2013-12-04 2015-06-10 美国亚德诺半导体公司 线程偏差计数器

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0403229A1 (en) * 1989-06-13 1990-12-19 Digital Equipment Corporation Method and apparatus for scheduling tasks in repeated iterations in a digital data processing system having multiple processors
US7673304B2 (en) * 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
CN1842770A (zh) * 2003-08-28 2006-10-04 美普思科技有限公司 一种在处理器中挂起和释放执行过程中计算线程的整体机制
KR20070005917A (ko) 2003-09-30 2007-01-10 쟈루나 에스에이 운영체제
US20080059677A1 (en) 2006-08-31 2008-03-06 Charles Jens Archer Fast interrupt disabling and processing in a parallel computing environment
JP5453825B2 (ja) * 2009-02-05 2014-03-26 日本電気株式会社 プログラム並列実行システム、マルチコアプロセッサ上のプログラム並列実行方法
US20130074088A1 (en) * 2011-09-19 2013-03-21 Timothy John Purcell Scheduling and management of compute tasks with different execution priority levels
US9921873B2 (en) * 2012-01-31 2018-03-20 Nvidia Corporation Controlling work distribution for processing tasks
US8918799B2 (en) 2012-03-30 2014-12-23 International Business Machines Corporation Method to utilize cores in different operating system partitions
US8789046B2 (en) 2012-03-30 2014-07-22 International Business Machines Corporation Method to embed a light-weight kernel in a full-weight kernel to provide a heterogeneous execution environment

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110207431A1 (en) * 2010-02-19 2011-08-25 Alcatel-Lucent Usa Inc. Accounting Request Processing In A Communication Network
CN104615411A (zh) * 2011-04-07 2015-05-13 威盛电子股份有限公司 控制寄存器对应于异质指令集架构处理器
US20130268942A1 (en) * 2012-04-09 2013-10-10 Jerome F. Duluk, Jr. Methods and apparatus for auto-throttling encapsulated compute tasks
US20140337389A1 (en) * 2013-05-08 2014-11-13 Nvidia Corporation System, method, and computer program product for scheduling tasks associated with continuation thread blocks
TW201512983A (zh) * 2013-07-16 2015-04-01 Apple Inc 用於一處理器之存取映射型樣匹配為基礎之預先擷取單元
CN104699460A (zh) * 2013-12-04 2015-06-10 美国亚德诺半导体公司 线程偏差计数器

Also Published As

Publication number Publication date
BR112018001728A2 (pt) 2018-09-18
KR20180034440A (ko) 2018-04-04
US20170031728A1 (en) 2017-02-02
JP2018528515A (ja) 2018-09-27
WO2017019212A1 (en) 2017-02-02
EP3859523A1 (en) 2021-08-04
TW201717004A (zh) 2017-05-16
US10169105B2 (en) 2019-01-01
CN108431775A (zh) 2018-08-21
EP3329370A1 (en) 2018-06-06
CA2989166A1 (en) 2017-02-02

Similar Documents

Publication Publication Date Title
TWI726899B (zh) 用於簡化用於有效平行計算的以任務為基礎的運行時間之方法
TWI729003B (zh) 用於在存在衝突時進行高效任務排程的方法、設備及處理器可讀儲存媒體
WO2017065915A1 (en) Accelerating task subgraphs by remapping synchronization
US10503656B2 (en) Performance by retaining high locality data in higher level cache memory
US10275251B2 (en) Processor for avoiding reduced performance using instruction metadata to determine not to maintain a mapping of a logical register to a physical register in a first level register file
TWI428755B (zh) 用於配置直接記憶體存取(dma)頻道識別符之方法、電腦可讀取儲存媒體、及資料處理系統
US20180336136A1 (en) Input/output-coherent Look-ahead Cache Access
CN109791510B (zh) 在异构计算中管理数据流
US9582329B2 (en) Process scheduling to improve victim cache mode
US9740504B2 (en) Hardware acceleration for inline caches in dynamic languages
US20150100772A1 (en) Reconfigurable processor and method of operating the same
US9501328B2 (en) Method for exploiting parallelism in task-based systems using an iteration space splitter
WO2017222746A1 (en) Iteration synchronization construct for parallel pipelines
US9218275B2 (en) Memory management control system, memory management control method, and storage medium storing memory management control program
US10261831B2 (en) Speculative loop iteration partitioning for heterogeneous execution
US8438335B2 (en) Probe speculative address file