TWI382348B - 多核心系統及其排程方法 - Google Patents
多核心系統及其排程方法 Download PDFInfo
- Publication number
- TWI382348B TWI382348B TW097140970A TW97140970A TWI382348B TW I382348 B TWI382348 B TW I382348B TW 097140970 A TW097140970 A TW 097140970A TW 97140970 A TW97140970 A TW 97140970A TW I382348 B TWI382348 B TW I382348B
- Authority
- TW
- Taiwan
- Prior art keywords
- stream
- processing unit
- stream processing
- unit
- target
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 22
- 238000012545 processing Methods 0.000 claims description 133
- 238000000605 extraction Methods 0.000 claims description 13
- 239000000284 extract Substances 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 3
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
- G06F15/7842—Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
Description
本發明是有關於一種多核心系統其排程方法,特別是指一種用於串流處理(stream processing)的多核心系統及其排程方法。
多核心處理器是目前運算設計關注的焦點。為了滿足更高性能的要求,並使功率消耗不超過許多應用所能承受的範圍,處理器正從提高時脈頻率往多核心架構的方向轉變。
在多核心系統中,當多個核心並行處理時,會因為各個核心的工作量(workload)不同,造成各個核心之間效率的落差,進而使系統效能無法最佳化。因此,如何提高多核心系統的效能有其必要性。
因此,本發明之目的即在提供一種可以提高系統效能的多核心系統。
於是,本發明多核心系統包含一第一至一第N串流處理單元、一第一至一第N+1串流提取單元及一排程器,其中,N2。每一串流處理單元用於接收及處理至少一被分配的串流元素,以產生至少一經處理的串流元素。每一串流提取單元用於提取及傳遞一被提取的串流元素。該排程器從該第P串流提取單元接收該被提取的串流元素,並判斷該第P串流處理單元是否出現工作瓶頸,如果否,將該第P
串流處理單元當作一目標串流處理單元,並將該被提取的串流元素傳遞到該目標串流處理單元作為該至少一被分配的串流元素中的一個,如果是,將該第Q串流處理單元當作該目標串流處理單元,並將該被提取的串流元素傳遞到該目標串流處理單元作為該至少一被分配的串流元素中的一個,其中,1PN,1QN,P≠Q。
而本發明之另一目的即在提供一種可以提高系統效能的排程方法。
於是,本發明排程方法適用於一多核心系統。該多核心系統包括一第一至一第N串流處理單元,及一第一至一第N+1串流提取單元,N2。該排程方法包含以下步驟:(A)從該第P串流提取單元接收一串流元素,其中,1PN;(B)判斷該第P串流處理單元是否出現工作瓶頸,如果否,跳到步驟(C),如果是,跳到步驟(D);(C)將該第P串流處理單元當作一目標串流處理單元,並將該串流元素傳遞到該目標串流處理單元;及(D)選取該第Q串流處理單元作為該目標串流處理單元,並將該串流元素傳遞到該目標串流處理單元,其中,1QN,Q≠P。
有關本發明之前述及其他技術內容、特點與功效,在以下配合參考圖式之一個較佳實施例的詳細說明中,將可清楚地呈現。
參閱圖1,本發明多核心系統之較佳實施例包含一第一至一第N串流處理單元(stream proeessing unit,SPU)1_1~1_N、一第一至一第N+1串流提取單元(stream fetching unit,SFU)2_1~2_N+1,及一排程器(scheduler)3,其中,N2。
每一串流處理單元1_1~1_N使用多執行緒(multi-thread)技術,且包括一儲存單元11_1~11_N、一核心單元(kernel unit)12_1~12_N,及一請求仲裁器(request arbiter)13_1~13_N,其中,儲存單元11_1~11_N可以是一串流暫存器集(stream register file)或一串流記憶體(stream memory),用於接收及儲存至少一被分配的串流元素,核心單元12_1~12_N用於處理儲存單元11_1~11_N所儲存之至少一被分配的串流元素,以產生至少一經處理的串流元素,並將儲存單元11_1~11_N所儲存之至少一被分配的串流元素更新為至少一經處理的串流元素,仲裁請求器13_1~13_N用於在儲存單元11_1~11_N儲存複數被分配的串流元素時,以循環(round robin)方式決定核心單元12_1~12_N目前處理被分配的串流元素中的哪一個。
每一串流提取單元2_1~2_N+1用於提取及傳遞一被提取的串流元素。第一串流提取單元2_1從外界提取串流元素。第N+1串流提取單元2_N+1傳遞被提取的串流元素到外界。第二至第N+1串流提取單元2_2~2_N+1中的每一個包括一儲存單元21_2~21_N+1。
每一串流元素代表一執行緒,且包括一資料及一串流
索引。
參閱圖1與圖2,對於第P串流提取單元2_P(2PN-1)所傳遞之被提取的串流元素,排程器3所使用的排程方法包括以下步驟:步驟41是從第P串流提取單元2_P接收被提取的串流元素。
步驟42是判斷第P串流處理單元1_P是否出現工作瓶頸,如果否,跳到步驟43,如果是,跳到步驟44。
在本實施例中,判斷第P串流處理單元1_P是否出現工作瓶頸的方式是:檢查第P串流處理單元1_P的儲存單元11_P所儲存的資料量是否大於一臨界值,如果否,表示第P串流處理單元1_P沒有出現工作瓶頸,如果是,表示第P串流處理單元1_P出現工作瓶頸。
步驟43是將第P串流處理單元1_P當作一目標串流處理單元,並將被提取的串流元素傳遞到目標串流處理單元作為至少一被分配的串流元素中的一個,且跳到步驟48。
步驟44是檢查第一至第P-1串流處理單元1_1~1_P-1中是否有在一停滯(stall)狀態的串流處理單元,如果是,跳到步驟45,如果否,跳到步驟46。
步驟45是從檢查出的串流處理單元中選取第Q串流處理單元1_Q作為目標串流處理單元,並將被提取的串流元素傳遞到目標串流處理單元作為至少一被分配的串流元素中的一個,且跳到步驟48。
步驟46是檢查第P+1至第N串流處理單元1_P+1~1_N
中是否有在一閒置(idle)狀態的串流處理單元,如果是,跳到步驟47,如果否,跳到步驟41。
步驟47是從檢查出的串流處理單元中選取第Q串流處理單元1_Q作為目標串流處理單元,並將被提取的串流元素傳遞到目標串流處理單元作為被分配的串流元素,且跳到步驟48。
根據步驟44~47,在第P串流處理單元1_P出現工作瓶頸時,是將被提取的串流元素傳遞到其它串流處理單元,即第Q串流處理單元1_Q,其中,1QN,Q≠P。
步驟48是產生一串流索引資料,其中,串流索引資料包括被提取的串流元素的串流索引、目標串流處理單元的核心單元的一代號,及被提取的串流元素在目標串流處理單元的儲存單元中的一起始儲存位置。
步驟49是將串流索引資料儲存在第P+1串流提取單元2_P+1的儲存單元21_P+1中。
對於第P串流提取單元2_P(P=1)所傳遞之被提取的串流元素,排程器3則省略上述排程方法中的步驟44、45;對於第P串流提取單元2_P(P=N)所傳遞之被提取的串流元素,排程器3則省略上述排程方法中的步驟46、47。
第P+1串流提取單元2_P+1根據其儲存單元21_P+1所儲存的串流索引資料,從目標串流處理單元的儲存單元提取至少一經處理的串流元素中的一個作為被提取的串流元素,且更在等待目標串流處理單元處理時,根據其儲存單元21_P+1所儲存的串流索引資料,發送一用於請求加速處
理的第P+1動作請求(action request)到目標串流處理單元的請求仲裁器,作為其決定的依據。
參閱圖3,以N=3為例,當第一至第三串流處理單元1_1~1_3都沒有出現工作瓶頸時,第一串流提取單元2_1從外界提取的串流元素被傳遞到第一串流處理單元1_1,第二串流提取單元2_2從第一串流處理單元1_1提取的串流元素被傳遞到第二串流處理單元1_2,第三串流提取單元2_3從第二串流處理單元1_2提取的串流元素被傳遞到第三串流處理單元1_3,第四串流提取單元2_4從第三串流處理單元1_3提取的串流元素被傳遞到外界。
當第二串流處理單元1_2出現工作瓶頸時,有二種情況會降低系統效能:第一種情況是第二串流處理單元1_2的儲存單元11_2不夠大,第一串流處理單元1_1處理完的串流元素無法經由第二串流提取單元2_3提取並傳遞到第二串流處理單元1_2的儲存單元11_2進行儲存,導致第一串流處理單元1_1進入停滯狀態;第二種情況是第二串流處理單元1_2的核心單元12_2產出太慢,第三串流提取單元2_3無法從第二串流處理單元1_2有效地提取經處理的串流元素,並傳遞到第三串流處理單元1_3,導致第三串流處理單元1_3進入閒置狀態。
參閱圖4,排程器3會將第二串流提取單元2_2從第一串流處理單元1_1提取的串流元素分配到第一及第三串流處理單元1_1、1_3中的一個,第三串流提取單元2_3再從被分配的串流處理單元提取經處理的串流元素,如此以解
決第二串流處理單元1_2的工作瓶頸,進而提高系統效能(圖4中只畫出分配到第一串流處理單元1_1的情況)。
惟以上所述者,僅為本發明之較佳實施例而已,當不能以此限定本發明實施之範圍,即大凡依本發明申請專利範圍及發明說明內容所作之簡單的等效變化與修飾,皆仍屬本發明專利涵蓋之範圍內。
1_1~1_N‧‧‧串流處理單元
11_1~11_N‧‧‧儲存單元
12_1~12_N‧‧‧核心單元
13_1~13_N‧‧‧請求仲裁器
2_1~2_N+1‧‧‧串流提取單元
21_2~21_N+1‧‧‧儲存單元
3‧‧‧排程器
41~49‧‧‧步驟
圖1是一方塊圖,說明本發明多核心系統的較佳實施例;圖2是一流程圖,說明本發明排程方法的較佳實施例;及圖3是一方塊圖,說明圖1所示較佳實施例在N=3且各個串流處理單元沒有出現工作瓶頸時的串流元素流向;及圖4是一方塊圖,說明圖1所示較佳實施例在N=3且一第二串流處理單元出現工作瓶頸時的串流元素流向。
41~49‧‧‧步驟
Claims (17)
- 一種多核心系統,包含:一第一至一第N串流處理單元,每一串流處理單元用於接收及處理至少一被分配的串流元素,以產生至少一經處理的串流元素,其中,N2;一第一至一第N+1串流提取單元,每一串流提取單元用於提取及傳遞一被提取的串流元素;及一排程器,從該等串流提取單元中的一第P串流提取單元接收該被提取的串流元素,並判斷該第P串流處理單元是否出現工作瓶頸,如果否,將該第P串流處理單元當作一目標串流處理單元,並將該被提取的串流元素傳遞到該目標串流處理單元作為該至少一被分配的串流元素中的一個,如果是,將該等串流處理單元中的一第Q串流處理單元當作該目標串流處理單元,並將該被提取的串流元素傳遞到該目標串流處理單元作為該至少一被分配的串流元素中的一個,其中,1PN,1QN,P≠Q。
- 依據申請專利範圍第1項所述之多核心系統,其中,該第Q串流處理單元在一停滯狀態及一閒置狀態中的一個。
- 依據申請專利範圍第1項所述之多核心系統,其中,2PN-1,該排程器更檢查該第一至該第P-1串流處理單元中是否有在一停滯狀態的串流處理單元,如果是,從檢查出的串流處理單元中選取該第Q串流處理單元, 如果否,檢查該第P+1至該第N串流處理單元中是否有在一閒置狀態的串流處理單元,如果是,從檢查出的串流處理單元中選取該第Q串流處理單元。
- 依據申請專利範圍第1項所述之多核心系統,其中,每一串流處理單元包括:一儲存單元,用於接收及儲存該至少一被分配的串流元素;及一核心單元,用於處理該儲存單元所儲存的該至少一被分配的串流元素,以產生該至少一經處理的串流元素,並將該儲存單元所儲存的該至少一被分配的串流元素更新為該至少一經處理的串流元素。
- 依據申請專利範圍第4項所述之多核心系統,其中,該排程器判斷該第P串流處理單元是否出現工作瓶頸的方式是:檢查該第P串流處理單元的該儲存單元所儲存的資料量是否大於一臨界值,如果否,表示該第P串流處理單元沒有出現工作瓶頸,如果是,表示該第P串流處理單元出現工作瓶頸。
- 依據申請專利範圍第4項所述之多核心系統,其中,每一串流元素包括一資料及一串流索引。
- 依據申請專利範圍第6項所述之多核心系統,其中,該第二至該第N+1串流提取單元中的每一個包括一儲存單元。
- 依據申請專利範圍第7項所述之多核心系統,其中,該排程器更產生一串流索引資料,並將該串流索引資料儲 存在該第P+1串流提取單元的該儲存單元中,該串流索引資料包括該被提取的串流元素的該串流索引、該目標串流處理單元的該核心單元的一代號,及該被提取的串流元素在該目標串流處理單元的該儲存單元中的一起始儲存位置。
- 依據申請專利範圍第8項所述之多核心系統,其中,該第P+1串流提取單元根據其儲存單元所儲存的該串流索引資料,從該目標串流處理單元的該儲存單元提取該至少一經處理的串流元素中的一個作為該被提取的串流元素。
- 依據申請專利範圍第8項所述之多核心系統,其中,每一串流處理單元更包括一請求仲裁器,用於在該儲存單元儲存複數被分配的串流元素時,決定該核心單元目前處理該等被分配的串流元素中的哪一個,該第P+1串流提取單元更根據其儲存單元所儲存的該串流索引資料,發送一第P+1動作請求到該目標串流處理單元的該請求仲裁器,作為其決定的依據。
- 依據申請專利範圍第10項所述之多核心系統,其中,每一串流處理單元的該請求仲裁器以循環方式決定該核心單元目前處理該等被分配的串流元素中的哪一個。
- 一種排程方法,適用於一多核心系統,該多核心系統包括一第一至一第N串流處理單元,及一第一至一第N+1串流提取單元,N2,該排程方法包含以下步驟:(A)從該等串流提取單元中的一第P串流提取單元接 收一串流元素,其中,1PN;(B)判斷該第P串流處理單元是否出現工作瓶頸,如果否,跳到步驟(C),如果是,跳到步驟(D);(C)將該第P串流處理單元當作一目標串流處理單元,並將該串流元素傳遞到該目標串流處理單元;及(D)選取該等串流處理單元中的一第Q串流處理單元作為該目標串流處理單元,並將該串流元素傳遞到該目標串流處理單元,其中,1QN,Q≠P。
- 依據申請專利範圍第12項所述之排程方法,其中,該第Q串流處理單元在一停滯狀態及一閒置狀態中的一個。
- 依據申請專利範圍第12項所述之排程方法,其中,2PN-1,步驟(D)包含以下子步驟:(D1)檢查該第一至該第P-1串流處理單元中是否有在一停滯狀態的串流處理單元,如果是,跳到步驟(D2),如果否,跳到(D3);(D2)從檢查出的串流處理單元中選取該第Q串流處理單元作為該目標串流處理單元,並將該串流元素傳遞到該目標串流處理單元;(D3)檢查該第P+1至該第N串流處理單元中是否有在一閒置狀態的串流處理單元,如果是,跳到步驟(D4),如果否,跳到步驟(A);及(D4)從檢查出的串流處理單元中選取該第Q串流處理單元作為該目標串流處理單元,並將該串流元素傳遞到該目標串流處理單元。
- 依據申請專利範圍第12項所述之排程方法,其中,在步驟(B)中,判斷該第P串流處理單元是否出現工作瓶頸的方式是:檢查該第P串流處理單元所儲存的資料量是否大於一臨界值,如果否,表示該第P串流處理單元沒有出現工作瓶頸,如果是,表示該第P串流處理單元出現工作瓶頸。
- 依據申請專利範圍第12項所述之排程方法,其中,該串流元素包括一資料及一串流索引。
- 依據申請專利範圍第16項所述之排程方法,更包含以下步驟:(E)產生一串流索引資料,其中,該串流索引資料包括該串流元素的該串流索引、該目標串流處理單元的一代號,及該串流元素在該目標串流處理單元中的一起始儲存位置;及(F)將該串流索引資料儲存在該第P+1串流提取單元中。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW097140970A TWI382348B (zh) | 2008-10-24 | 2008-10-24 | 多核心系統及其排程方法 |
US12/435,935 US8037283B2 (en) | 2008-10-24 | 2009-05-05 | Multi-core stream processor having (N) processing units and (N+1) fetching units |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW097140970A TWI382348B (zh) | 2008-10-24 | 2008-10-24 | 多核心系統及其排程方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201017543A TW201017543A (en) | 2010-05-01 |
TWI382348B true TWI382348B (zh) | 2013-01-11 |
Family
ID=42118624
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW097140970A TWI382348B (zh) | 2008-10-24 | 2008-10-24 | 多核心系統及其排程方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8037283B2 (zh) |
TW (1) | TWI382348B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI503742B (zh) * | 2014-04-21 | 2015-10-11 | Nat Univ Tsing Hua | 多核心處理器系統及其排程方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050013705A1 (en) * | 2003-07-16 | 2005-01-20 | Keith Farkas | Heterogeneous processor core systems for improved throughput |
US20050034002A1 (en) * | 2003-08-04 | 2005-02-10 | Krisztian Flautner | Performance control within a multi-processor system |
TW200511113A (en) * | 2003-08-18 | 2005-03-16 | Nvidia Corp | Adaptive load balancing in a multi-processor graphics processing system |
TW200802098A (en) * | 2005-09-30 | 2008-01-01 | Co Ware Inc | Scheduling in a multicore architecture |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0723536D0 (en) * | 2007-11-30 | 2008-01-09 | Imagination Tech Ltd | Multi-core geometry processing in a tile based rendering system |
EP2304577B1 (en) * | 2008-05-27 | 2018-07-04 | Stillwater Supercomputing, Inc. | Execution engine |
-
2008
- 2008-10-24 TW TW097140970A patent/TWI382348B/zh active
-
2009
- 2009-05-05 US US12/435,935 patent/US8037283B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050013705A1 (en) * | 2003-07-16 | 2005-01-20 | Keith Farkas | Heterogeneous processor core systems for improved throughput |
US20050034002A1 (en) * | 2003-08-04 | 2005-02-10 | Krisztian Flautner | Performance control within a multi-processor system |
TW200511113A (en) * | 2003-08-18 | 2005-03-16 | Nvidia Corp | Adaptive load balancing in a multi-processor graphics processing system |
TW200802098A (en) * | 2005-09-30 | 2008-01-01 | Co Ware Inc | Scheduling in a multicore architecture |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI503742B (zh) * | 2014-04-21 | 2015-10-11 | Nat Univ Tsing Hua | 多核心處理器系統及其排程方法 |
Also Published As
Publication number | Publication date |
---|---|
US20100106941A1 (en) | 2010-04-29 |
TW201017543A (en) | 2010-05-01 |
US8037283B2 (en) | 2011-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9858115B2 (en) | Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core processor system and related non-transitory computer readable medium | |
US8893145B2 (en) | Method to reduce queue synchronization of multiple work items in a system with high memory latency between processing nodes | |
US8327363B2 (en) | Application compatibility in multi-core systems | |
US7822885B2 (en) | Channel-less multithreaded DMA controller | |
US9448864B2 (en) | Method and apparatus for processing message between processors | |
KR101686010B1 (ko) | 실시간 멀티코어 시스템의 동기화 스케쥴링 장치 및 방법 | |
US9652243B2 (en) | Predicting out-of-order instruction level parallelism of threads in a multi-threaded processor | |
TW201734758A (zh) | 使用硬體佇列裝置的多核心通訊加速 | |
US20150121387A1 (en) | Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core system and related non-transitory computer readable medium | |
US9830189B2 (en) | Multi-threaded queuing system for pattern matching | |
JP2011054161A (ja) | マルチコア/スレッドのワークグループ計算スケジューラ | |
CN106575220B (zh) | 多个经集群极长指令字处理核心 | |
CN109522101A (zh) | 用于调度多个操作系统任务的方法、系统和/或装置 | |
CN114168202B (zh) | 指令调度方法、指令调度装置、处理器及存储介质 | |
CN114201219A (zh) | 指令调度方法、指令调度装置、处理器及存储介质 | |
US8775767B2 (en) | Method and system for allocating memory to a pipeline | |
TWI382348B (zh) | 多核心系統及其排程方法 | |
US11392388B2 (en) | System and method for dynamic determination of a number of parallel threads for a request | |
EP3591518B1 (en) | Processor and instruction scheduling method | |
JP2012093832A (ja) | 情報処理装置 | |
CN115564635A (zh) | 一种gpu资源调度方法、装置、电子设备及存储介质 | |
US9483317B1 (en) | Using multiple central processing unit cores for packet forwarding in virtualized networks | |
CN112114967B (zh) | 一种基于服务优先级的gpu资源预留方法 | |
US9442772B2 (en) | Global and local interconnect structure comprising routing matrix to support the execution of instruction sequences by a plurality of engines | |
Belviranli et al. | A paradigm shift in GP-GPU computing: task based execution of applications with dynamic data dependencies |