TWI420394B - 用於多核心架構之排程的方法、電腦程式、及電腦可讀取媒體 - Google Patents
用於多核心架構之排程的方法、電腦程式、及電腦可讀取媒體 Download PDFInfo
- Publication number
- TWI420394B TWI420394B TW095136470A TW95136470A TWI420394B TW I420394 B TWI420394 B TW I420394B TW 095136470 A TW095136470 A TW 095136470A TW 95136470 A TW95136470 A TW 95136470A TW I420394 B TWI420394 B TW I420394B
- Authority
- TW
- Taiwan
- Prior art keywords
- queue
- executable
- scheduling
- scheduler
- processor
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 92
- 238000004590 computer program Methods 0.000 title claims description 4
- 238000012545 processing Methods 0.000 claims description 169
- 238000004422 calculation algorithm Methods 0.000 claims description 69
- 238000009826 distribution Methods 0.000 claims description 54
- 230000008859 change Effects 0.000 claims description 24
- 230000008569 process Effects 0.000 claims description 21
- 230000001419 dependent effect Effects 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 3
- 241001522296 Erithacus rubecula Species 0.000 claims 1
- 238000003491 array Methods 0.000 claims 1
- 239000010410 layer Substances 0.000 description 220
- 230000006399 behavior Effects 0.000 description 45
- 230000003068 static effect Effects 0.000 description 42
- 238000000605 extraction Methods 0.000 description 37
- 238000002360 preparation method Methods 0.000 description 32
- 238000010586 diagram Methods 0.000 description 22
- 238000007726 management method Methods 0.000 description 22
- 239000011229 interlayer Substances 0.000 description 21
- 238000012546 transfer Methods 0.000 description 18
- 230000003993 interaction Effects 0.000 description 14
- 230000007704 transition Effects 0.000 description 14
- 230000006870 function Effects 0.000 description 13
- 238000013461 design Methods 0.000 description 12
- 230000001360 synchronised effect Effects 0.000 description 10
- 230000000694 effects Effects 0.000 description 8
- 239000008186 active pharmaceutical agent Substances 0.000 description 7
- 238000012423 maintenance Methods 0.000 description 7
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 230000002776 aggregation Effects 0.000 description 6
- 238000004220 aggregation Methods 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 6
- 230000002829 reductive effect Effects 0.000 description 6
- 240000002800 Sanicula europaea Species 0.000 description 5
- 230000009471 action Effects 0.000 description 5
- 230000001186 cumulative effect Effects 0.000 description 5
- 238000003780 insertion Methods 0.000 description 5
- 230000037431 insertion Effects 0.000 description 5
- 238000013507 mapping Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 229920002239 polyacrylonitrile Polymers 0.000 description 5
- 201000006292 polyarteritis nodosa Diseases 0.000 description 5
- 238000003860 storage Methods 0.000 description 5
- 238000012384 transportation and delivery Methods 0.000 description 5
- 230000004931 aggregating effect Effects 0.000 description 4
- 230000008676 import Effects 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000001174 ascending effect Effects 0.000 description 2
- 238000004140 cleaning Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000000052 comparative effect Effects 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000002195 synergetic effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000014616 translation Effects 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000945 filler Substances 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 230000002028 premature Effects 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000010349 pulsation Effects 0.000 description 1
- 238000011867 re-evaluation Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000011144 upstream manufacturing Methods 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/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- 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
-
- 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/466—Transaction processing
-
- 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
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
-
- 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
- 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
- G06F9/5038—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 considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
-
- 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/5011—Pool
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Multi Processors (AREA)
- Power Sources (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Description
本發明與在一多核心結構中的排程線程的一方法及設備有關。
近年來,已有傾向製造含有多核心之處理器以最大化矽效率(即“應用程式可用的”MIPs/mm2
或MIPs/mW)。由於一線程定義含有一執行狀態、指令串流以及資料組的一獨立包裝(autonomous package),故此多核心結構理想的適於依據線程執行應用程式,而該線程定義上可伴隨其他線程同時執行。
排程為對特定處理資源執行之最適線程(亦即指令組)之發現及分配的一般名稱,當其被執行時為該應用程式及該潛在硬體平台兩者所需要。
在一多核心結構中的同時執行伴隨適於執行一特定線程之多核心的可得性將導致額外問題於用於在這些多核心結構中分配線程的排程之中。
依據本發明之一第一態樣,在如同申請專利範圍第1項所提出之一多核心處理器中提供一種排程可執行交易(transaction)的方法,其更常被稱為線程。
藉由提供一多層級-更常被稱為階層式-排程系統,本發明允許建構一或多個較簡單排程演算法之外的複雜排程演算法。使用此複雜排程演算法的能力增進含有多線程之一應用程式在執行過程中的效能。本發明藉由更有效地分配該可執行交易或線程至處理資源而增進一應用程式的執行效能。此可增加執行速度並降低特定資源上的瓶頸。其亦可增加該多核心處理器之較不活動中的部分的使用。
在該較佳實施例中,本發明係由一專屬硬編碼(hard-coded)故有效的實施例所實施。該較佳硬編碼實施例位於一伺服器-客戶端拓樸結構中,其包含系統伺服器(此處稱為System Weaver)以及該多核心處理器中每個處理資源或核心的一客戶端。在處理資源之能力為有疑問的的其他實施例中,一單一客戶端可聚集對多個處理資源的存取。
為了進一步增進整合本發明之整體系統的效能,該較佳實施例使用指標(pointer)於一專屬記憶體中以供排程分配、為了選擇目的而儲存數值等等。這些指標器較佳地含有欄位以於建立該排程選擇時儲存參數,或僅儲存其他重要的數值。此後將該欄位整體地稱為度量(metrics)或運算子(operators)。
依據本發明之第二態樣,提供一種在一多核心處理器中排程可執行交易的一種方法,該可執行交易定義一應用程式,而該多核心處理器具有多個處理元件,該方法包含維護一可執行交易排程器的一階層式,其中該階層式被用於依據該應用程式在使用時的需求而排程可執行交易,其中該排程器階層式的每一層包含至少一排程器,而其中該至少一排程器包含至少一規則以於該處理器元件之一或多者上排序該可執行交易為最適於執行之交易的一順序。
依據本發明之一第三態樣,提供一種在一多核心處理器中管理電源消耗的一方法,如申請專利範圍第37項所述。
在一多核心處理器具有多個處理資源的情形中,其各自可執行一特定線程,本發明允許這些多處理資源被共同置於一集區(pool)中。隨後即由此處理資源之集區被分配線程。然而在此一情形中,當需要執行之線程數量並未超過該集區之執行能力時,亦即該集區中的某些處理資源並未被利用或者並未完全被利用時,本發明允許每個處理資源被置於一省電模式中。該處理資源甚至可具有多個不同的省電層級。
較佳地,當線程執行負載需要時,處理資源被移出省電模式,或者至少被移回完全電源模式之相關成本較低的一較低省電模式。
依據本發明之一第四態樣,提供一種在一多核心處理器中排程可執行交易或線程的方法,該多核心處理器包括可重新設置邏輯,如申請專利範圍第38項所述。
在一或多個該處理器元件具有一可在配置邏輯之情形中,例如在一場式可程式閘陣列(FPGA)之可在配置執行部分的情形中,本發明可藉由聚集利用該邏輯之相同配置的線程而增進效能。此用於降低內容切換的需要或減少其衝擊,即當該可在配置邏輯部分正被重新配置時。
本發明亦可以一區域快取記憶體之形式增進可重新設置邏輯之情形中的效能,該區域快取記憶體儲存可供在疑問之處理元件上的次一執行的指令。
此係由於區域快取遺失的影響,或者可藉由聚集使用快取記憶體之相同區域之執行的線程而最小化區域快取清理(flush)。
依據本發明之一第五態樣,提供數位邏輯所執行之一電腦程式,其執行如申請專利範圍第1項之方法。亦提供含有該電腦程式的一電腦可讀取媒體。
當使用本文中之描述的說明時,處理元件、處理資源、核心以及處理器將被視為均等物。一處理器元件之忙碌狀態等同於其目前工作負載。進一步的有利特徵將被定義於附屬之獨立申請專利範圍中。
依據本發明之一進一步態樣,其提供一多核心處理器,該多核心處理器包含多個處理器元件、至少一分配佇列(distribution queue),該分配佇列列出可執行交易為執行資格(eligibility)之順序;並提供一多層排程器,其包含:多個獨立可執行交易排程器,其中每個獨立可執行交易排程器包括一排程演算法以從多個可供執行之候選可執行交易中判定最適於執行之交易;其中該排程器被連結在一起,而該多層排程器被用於自其中輸出該最適合可執行交易至至少一分配佇列。
一可執行交易可包含一線程描述項,其可由多個狀態中加以選擇。該線程描述項可依據一狀態變遷配置而於多個狀態之間被改變,因而識別該可執行交易,故可於多個可執行交易中加以管理以提供低排程延遲以及該排程階層式的完整性。該排程器可包含由多個排程狀態所選擇的一排程狀態。控制該排程器狀態以支援一動態排程階層式,其中可於該系統之正常操作過程中調整該排程階層式,而同時維護該階層式中被排程之元件的順序及完整性。
該多核心處理器可更包含一硬體時間資源,其可被分配以提供一監看器逾時(watchdog timeout),而其中該監看器逾時指示一處理資源實體已進入一不可操作狀態。該硬體時間資源可替代地提供一時間片段(timeslice)逾時,其中該時間片段逾時指示一處理資源實體或處理資源實體群組係由多個同等適於執行之交易所平分。平分可包含提供該時間之一平分,或該可執行交易所需之時間比例的一平分。該硬體時間資源可被分配以於用於提供該監看器逾時之一第一模式以及用於提供該時間片段逾時之一第二模式之間切換。該硬體時間資源較佳地被用於在一時間片段逾時被提供時切換至該第一模式。
該多核心處理器之等候管理員(pending manager)可更包含一計時器佇列,每個計時器佇列被用於接收計時器佇列元件。計時器佇列元件可包含可執行交易。該計時器佇列中的一第一可執行交易可與一第一時間參數相關。該第一時間參數指示該逾時時間,該逾時時間為該相關可執行交易應成為適於執行的時間。較佳地,該第一可執行交易之逾時時間最靠近目前時間。一第二可執行交易可與一第二時間參數相關。該第二時間參數指示該第二可執行交易之逾時時間與該第一可執行交易之逾時時間之間的差異。一第三可執行交易可與一第三時間參數相關。該第三時間參數指示該第三可執行交易之逾時時間以及該第二可執行交易之逾時時間之間的差異。
一佇列中的一第一可執行交易可與一時間參數相關。此時間參數指示該相關可執行交易之逾時與亦位於該佇列中之一第二可執行交易之逾時之間的差異。較佳地,該第二可執行交易為該佇列中先前已具有一逾時發生且最接近該第一可執行交易之逾時的可執行交易。
該多核心處理器可更包含多個分派佇列(dispatch queue)。較佳地,一分派佇列被用於識別一進一步分派佇列。每個分派佇列可包含一分派佇列描述項。此賦予一彈性數量的伺服處理資源實體,且亦使該分派佇列描述項得以被連續詢問。一分派佇列可被進一步用於從一組先佔(pre-emption)可執行交易中識別目前使用一處理器元件的一可執行交易。該分派佇列可被進一步用於從該組先佔可執行交易中識別一進一步可執行交易,,其將接續地使用該處理器元件。此分派佇列因而保持該排程管理員所建立之最新排程選擇的索引。
用於提供該多層排程器之個別可執行交易排程器的連結定義一排程階層式,其中每個可執行交易排程器具有一相關排程階層。一可執行交易排程器可用於識別一可執行交易排程器,其先前排程一可執行交易。任意地,該可執行交易排程器可識別可執行交易是否源自與一處理器元件相關的一分配佇列。該可執行交易排程器可識別該可執行交易是否來自一組先佔可執行交易。可最佳化該排程事件為一“推進(push)”事件時的處理。當一可執行交易由一可執行交易排程器所排程時,該可執行交易排程器可被進一步用於通信一校正參數至先前排程該可執行交易的每個可執行交易排程器。該校正參數允許該排程選擇的傳遞以及該多層排程器中計數器之完整性的維護。
亦可提供一種操作一多核心處理器系統的方法,其包含:提供一客戶端;以及選擇用於該客戶端的一互動狀態。該互動狀態可包含:一閒置狀態,其中該客戶端可被用於在一電源管理模式中操作;以及一使用者狀態,其中該客戶端被用於在一使用者或正常模式中執行一可執行交易。較佳地,該互動狀態可更包含一API互動狀態,其中該客戶端被用於在一優先狀態中執行一可執行交易。任意地,該互動狀態可包含一客戶端填隙狀態(shim state),其中該客戶端被用於準備一內容以供一可執行交易。較佳地,本方法亦包含提供一伺服器,其中該互動狀態被分享於該客戶端及伺服器之間。較佳地,可提供一帶外信號(out of band signal)以使該互動狀態改變。該伺服器可提供該帶外信號。任意地,一可執行交易可使該互動狀態改變。
第1圖說明與實施於SystemWeavor中類似的一任務狀態圖,其用於一多核心系統中的任務及線程的管理。
在多核心系統中,該排程器依據一組預定規則(該“排程”)於最佳時間提供工作封包至該最佳資源。該應用程式以及潛在硬體平台均需要排程:-應用程式排程包含同步及適用性。同步確保該系統中的資源可被分享而無須妥協於該資料甚至可能為該系統整體的完整性。適用性確保準備的任務利用如該排程策略所表示之符合該應用程式之需求的一方式被送至該處理資源。
-平台式/分配排程定義分配應用程式任務於適於處理資源實體之間的一策略。此可意指在多個使用者及/或多個不同演算法間分享一處理資源。
第2圖說明排程點的一表示,該排程點係與其產生的佇列點有關。
由左至右所遇到的第一佇列點為等候佇列。被封鎖之任務依據其優先度而被儲存於該等候佇列中且由同步事件所釋放,該等候佇列結構及行為的進一步描述已超越本發明之範圍。該第二佇列點為該準備佇列,其包含該應用程式及分配排程兩者。在第2圖中此被分為三個邏輯部分:該應用程式及分配佇列。概念上,在這兩排程階層之間的點上,所有目前準備應用程式任務已依據其適用性(描述於使用者定義之度量及排程策略中)加以排序。此點被稱為分配節點。
在該分配節點之間配置一組應用程式特定排程策略,其判定不同等級之任務以及共同等級之任務實體如何競相存取該處理資源實體。此排程策略之階層式被稱為排程錐(scheduling cone
)且為應用程式特定的。
在該排程錐之後配置一組平台特定排程策略,其判定該最適合的應用程式任務如何被分配至存在於該潛在硬體平台中的處理資源實體。此排程策略之階層式被稱為分配錐(distribution cone
)且為平台特定的。
一排程策略以及實施的有效性可於許多屬性之一結合上加以判斷:-處理能力-每秒可建立的排程選擇數量。
-延遲-該系統中的一事件以及與該事件有關之排程操作完成之間消逝的時間。
-可預測性/決定性-決定該系統在所有狀態下將如何作為的能力。
-有效性-可實施任一特定排程演算法的效率。此可以每個選擇之指令(指令組效率的一測量)及/或矽腳印(silicon footprint)(記憶體及其他晶粒區域)加以測量。
-策略-支援策略之多樣性以及加以結合以形成複雜階層式的能力。
System Weaver有兩種主要元件:該伺服器核心以及該客戶端填隙(client shimes)。這些可用數種方式加以連接。一System Weaver使系統可包含一伺服器核心以及至少一客戶端填隙。
該System Weaver核心包含一硬體引擎以及一密接記憶體。該記憶體含有排程配置以及動態描述項用以表示該系統中的工作單位。在多個客戶端聚集每個System Weaver核心,其可為指令設置式結構或硬體加速器。System Weaver透過兩個邏輯分離資料路徑分別與每個客戶端通信:-一帶外信號以警告該客戶端在需要注意之系統狀態中的一改變。該System Weaver核心為此介面的主角,該介面典型地被實施為一岔斷(於此處及下文中假設)。
-該客戶端可藉以詢問SystemWeaver的一資料路徑。該客戶端為此介面之主角,該介面典型地被實施為一匯流排、雙工序列介面或任何其他雙向實施。
該SystemWeaver核心在該啟動處理過程中必須被起始。典型地一客戶端將被指定為該啟動主角且將起始System Weaver,而與其相關之記憶體代表該系統之其餘部分。
在一典型配置中,每個客戶端具有一獨立客戶端填隙,然而更保守之實施可聚集許多客戶端的客戶端填隙。可利用硬體或軟體實施客戶端填隙。第3圖說明一軟體客戶端填隙的主要元件:-該SystemWeaverHAL實施該SystemWeaver核心之註冊介面所需的命令格式化。
-該SystemWeaver API使該應用程式得以於一任務式抽象上建立對該SystemWeaver的呼叫。
-該使用者線程為使用該SystemWeaver任務管理能力的應用程式線程。在過程中的任何實體僅有一使用者線程直接地被每個獨立客戶端所管理。
-該客戶端填隙處理該帶外信號服務(典型地為岔斷服務)。該客戶端管理內容主要位於該處理資源實體中,其透過任務切換以及先佔而確保完整性的保存。典型地該客戶端填隙含有一結構未知部分以及一指令組結構特定部分。
-該閒置代理程式實施一管理任務,其處理獨立處理資源實體或巨結構的電源降低模式。
第4圖說明該SystemWeaver動作中的一狀態圖。該客戶端填隙執行兩種主要功能:-該處理資源實體執行於其中之“內容”(對於一傳統處理器而言,內容可包含處理器堆疊空間及內容、註冊值、程式計數器等等)的管理(在適當時間之配置、儲存及復原)。內容有兩種類型-使用者或任務內容,其為一使用者任務執行於其中的內容,;以及處理實體特定內容,其為專屬於客戶端填隙管理操作的一內容。
-操作模式(在一傳統處理器使用者(正常)以及管理者(優先的)模式中為可用的,其定義存取特定關鍵系統資源的權利-舉例來說,不像一管理者模式任務,一使用者模式任務將不被允許存取資源,其可不當影響其他使用者模式任務分享該處理資源)。
以下描述係用於一般目的處理器,即使所有客戶端類型亦為類似的。
-“閒置”狀態-在該閒置狀態中,使用者定義演算法可利用該結束處理資源實體(例如時脈閘控或其他低電源狀態)或該系統結構整體(例如時脈閘控或降低或消除對一特定處理資源實體的電源供應)所提供的電源降低模式。然而在此狀態中該處理資源實體可操作於一優先模式中且將被使用該處理資源特定內容。
注意該SystemWeaver伺服器並未指示該客戶端進入該閒置狀態-該客戶端係由於不具有排程任務而進入該閒置狀態。每個客戶端保持於該“閒置”狀態中直到被指示透過源自該SystemWeaver伺服器之帶外信號(典型地為一岔斷)加以回應。
-“客戶端填隙”狀態-該客戶端填隙狀態管理該使用者的執行內容以及閒置任務。當位於該“客戶端填隙”狀態中時,該客戶端填隙儲存已完成執行、被先佔之任何任務的內容,或已封鎖及回復或建立用於該次一執行任務的一內容(在該閒置任務之情形中此為該處理資源實體特定內容)。然而在此狀態中該處理資源實體可操作於一優先狀態中。任何時間中該客戶端填隙可被操作於該處理資源特定內容或該使用者或任務內容中。
由於源自SystemWeaver伺服器之帶外信號(自該“使用者”或“閒置”狀態轉換為該“使用者填隙”狀態)或由於已使該執行中任務成為被封鎖之一SystemWeaver API呼叫(“SyWAPI”狀態轉換為“客戶端填隙”狀態,例如由於嘗試鎖定一信號的失敗)而進入該“客戶端填隙”狀態。在完成處理時,該客戶端填隙可轉換該“客戶端填隙”狀態為該“閒置”狀態(若該處理資源實體沒有傑出任務)或為該“使用者”狀態(若該處理資源實體具有適合的任務存在)而不需要任何進一步的外部傳信。
-“使用者”狀態-當位於該“使用者”狀態中時,該客戶端填隙執行使用者應用程式碼。然而在此狀態中該處理資源實體可正常地操作於一“使用者”或“正常”模式中。該“使用者”狀態可完全地操作於該使用者或任務內容中。
可由於開始或恢復一使用者任務而從該“客戶端填隙”狀態進入該“使用者”狀態,或由於源自一SystemWeaver伺服器API呼叫的一傳回而自該SyWAPI狀態進入該“使用者”狀態。
該客戶端填隙可由於任務完成或先佔(自該SystemWeaver伺服器接收帶外信號)而自該“使用者”狀態轉換為該“客戶端填隙”狀態。可由於對該SystemWeaver伺服器API之一呼叫而自該“使用者”狀態轉換至該客戶端填隙。
-“SyWAPI”狀態-當一使用者任務需要與該SystemWeaver之互動時,其透過使一客戶端填隙狀態改變至“SyWAPI”的SystemWeaver API而進行。然而在此狀態中該處理資源實體可操作於一優先模式中。該“SyWAPI”狀態將完全操作於該使用者或任務內容中。
在對該SystemWeaver API之一呼叫後進入該“SyWAPI”狀態。對於非封鎖呼叫而言,該客戶端填隙將自該“SyWAPI”狀態返回至該“使用者”狀態,然而某些存取(例如該些與信號相關者)可使該使用者任務成為被封鎖的(封鎖的任務必須等到某些分享的系統資源成為可用的)。在此情形中該客戶端填隙轉換為該“客戶端填隙”狀態。
以下段落討論瞭解該SystemWeaver排程器所需的概念。
SystemWeaver需要一附加密接記憶體,此記憶體之使用以供排程策略之儲存可賦予完全排程修改以及該系統發展處理過程中的調整彈性。該SystemWeaver記憶體被分為SystemWeaver記憶體元件(WMEs)。WMEs被用於表示以下討論之任務及排程描述項。
任務描述項為該SystemWeaver結構的關鍵“流通單位(unit of currency)”其表示依據該排程階層式中配置之規則而競相存取處理資源實體之任務的單位。任務描述項包含:-對於一任務控制封鎖的一參照,其依序含有對於待執行之任務以及當其被執行時之資料組的一參照。
-排程度量,其定義該任務之資格。
-亦可包括同步參照以及逾時用於初始將被封鎖的任務。封鎖任務行為的一更詳細描述已超過此文件之範圍。
-對一“登錄節點(Entry Node)”的一參照,其定義必須加入該任務描述項(可能在同步之後)之排程階層式的部分。
使用兩種分配錐類型以描述SystemWeaver排程行為:排程及分配錐。排程錐被用於描述聚集許多“登錄”點為一單一匯聚點-一多對一映射-之排程器的一階層式。分配錐被用於描述自一單一匯聚點散布至多個“分派(dispatch)”點-一對多映射-之排程器的一階層式。
排程錐(如第5圖中紅色所示)定義該“應用程式選擇節點”階層式,其係由該應用程式之需求所驅動(亦如第2圖之準備狀態中的“應用程式排程”所示)。排程錐為多對一映射,其定義多類任務及多類任務實體藉以競逐系統資源的規則。
分配錐(如第5圖中紫色所示)定義該“分配選擇節點”階層式,其主要由該潛在硬體平台之屬性所驅動(亦如第2圖之準備狀態中的“分配排程”所示)。分配錐定義該排程錐之最適候選者藉以被分配於該可取得及適當處理資源之間的規則。
有三種主要節點被用於描述排程配置:登錄節點、分配節點以及分派節點。該主要節點為該潛在第二節點結構之上的一重疊,其更接近地反映該排程器的詳細實施。
登錄節點定義加入新任務至佇列中的位置。登錄節點典型地多對一映射於分配節點上,如同一排程錐的兩末端。登錄節點可與特定任務類別有關,或依據其他應用程式導出的策略。一特定登錄節點可僅映射至一單一分配節點之上。
分配節點定義排程及分配錐之間的輪廓。其典型地表示處理資源之一種類別。排程錐典型地映射一或多個登錄節點至一單一分配節點之上,而分配錐典型地映射一單一分配節點至多個分派節點之上,因而最終處理資源實體。
分派節點定義與一獨立處理資源實體有關的一出口點。其典型地將利用存在於該硬體平台中的IP核心(即使硬體多線程處理器核心可被分配於多個分派佇列)一對一地映射。多個分配錐可映射於獨立分派節點之上。
定義兩種類行的選擇節點:應用程式選擇節點以及分配選擇節點。雖然應用程式以及分配選擇節點直接映射於排程層上,但其並不徹底地定義該排程器實施中潛在層的數量或類型。
應用程式選擇節點定義過渡排程或該排程錐中的聚集點。每個應用程式選擇節點定義一集合之最適候選者可被選擇的一規則。
當多個分配節點映射至一單一分派節點上時,需要一分配選擇節點以設置判定取得對該處理資源實體之存取之分配錐的策略。
該準備狀態結構(第2圖)含有準備執行之線程。該整體準備狀態結構可含有數個排程及分配錐。這些線程係以獨立線程基本指令所建立(亦即其係於該準備狀態中所建立),或者其已於依賴時接收該同步基本指令或逾時。同步線程先前已自該封鎖狀態而轉換。
該準備狀態結構可含有排程器節點描述項以及獨立線程描述項。該結構主要在系統初始化過程中被定義,即使線程描述項以及其相關的動態排程器層描述項在執行期間中被允許來來去去。
該準備狀態結構允許線程被排程至處理節點或一特定處理節點的一集區中。此賦予多個相容處理資源之間的負載平衡或其他分配行為,同時維護在特定可用處理資源(例如硬體加速器或IO裝置)上針對特定任務的能力。
排程層為用於實施建立該準備狀態結構之主要及第二排程節點的基本指令資源。排程層與其他排程層及任務描述項可具有主層(parent)、子層(parent)或對等(peer)關係。
第6圖說明一排程器階層式圖,其表示該主與從關係。在此範例中,y為a、b及c的主層。y為x及z的對等層。主層可僅為排程層,而子層可為排程層或任務描述項。一特定對等組(例如a、b及c)可由任務描述項及排程層之一混合所組成。再者,所有排程層具有主層(該分派節點為唯一不定義一主層的描述項)。
在執行過程中,主層可依據使用者定義策略而自該最適子層承繼“度量”(優先度等等)。此特徵可被用於深嵌排程策略向被比較之排程分支最適候選者之某些認識時(此議題將於以下度量傳遞章節中加以詳述)。
以下章節描述任何System Weaver排程階層式之建構區塊。
排程器層定義用於排程線程描述項之階層式。每個排程器層典型地定義一排程演算法、用於定義排程選擇之某些度量、用於定義如何自該子層傳遞該度量至該主層之一承繼策略、以及可為進一步排程器層或線程描述項之子層元件的一列表。有三種類型的排程器層描述項:根、靜態及動態(其中動態層為靜態排程層的一特別類型)。第7圖說明一示範排程錐實施。第36圖說明第4圖之後所有排程圖所需的圖示參照圖例。
排程器根描述項具有與分派佇列的一一對一映射。其表示該準備狀態結構中的根本節點(ultimate node)。根描述項度量總是含有依據該定義之承繼策略而自該準備狀態結構導出之度量的的一副本。
排程器根描述項在系統初始化過程中被配置且永遠存在。
排程器靜態描述項在該排程階層式中存在於根節點的下方。靜態排程器描述項的主層可為其他靜態排程器描述項或根描述項。其依據其主層定義之排程器演算法以及其自身之排程器度量而與同輩節點(sibling node)相競爭。
排程器靜態描述項在系統初始化過程中被配置且永遠存在。在操作過程中,SystemWeaver依據該選擇排程以及度量傳遞演算法而維護該排程器度量。
排程器動態描述項在該排程階層式中存在於根節點之下方,且選擇性地存在於靜態節點之下方。動態排程器描述項之主層可為靜態排程器描述項或根描述項。其依據其主層定義之排程器演算法以及其自身之排程器度量而與同輩節點競爭。
動態排程器描述項可於任何時間被配置。此使該系統得以支援遠大於以一單純靜態條件可得的排程層數量。SystemWeaver藉由提高在一有限期間中該短暫需求會較小的可能性而達成此一效果-即使在整體時間中使用大量且多種的線程及動態排程器層。舉例來說,在具有最大支援4k動態元件(線程及動態排程器描述器)之附加記憶體的一網路系統中,可於任何瞬間支援16k連線,該整體連接空間之一部分的資料單元在該處理器中為使用中的。僅需少量犧牲效能便可達成此彈性,然而若不具有一動態排程描述項,其必須在加入子線程描述項之前輩建立。
在操作過程中,SystemWeaVer依據該選擇之排程演算法維護該排程器度量。在某些情況下SystemWeaver將釋放該動態排程器描述項回到該WME閒置列表。
處理器資源集區使一特定處理資源之實體得以聚集為一單一分配節點。該分配節點隨後可提供該處理資源集區之個別成員之間的負載平衡、智慧先佔以及電源管理。
第8圖說明一典型處理資源集區配置Weaver。記憶體元件的三種新定義支援該處理器集區配置結構:
集區附加節點(PAN)被用於附加該排程器根層至處理器資源集區根層。PANs必須存在於該排程器根層(即其主層必須為一排程根節點)。在操作過程中,PAN度量係以自該排程錐承繼之集區根節點(PRN)之度量的一副本而加以自動更新。
並未使用定義於該PANs中的排程運算子。
集區靜態節點(PSN)被用於附加該排程器根層至該處理器資源集區根層。其存在於該集區根層中(亦即其主層必須為一PAN)且自動保持該分派節點之度量的一副本(即目前執行中的線程)。
位於一特定集區之PSN中的排程器運算子全部必須被設置為相同的演算法,其定義用於選擇將被先佔之適當處理資源實體的策略。
每個處理資源集區有一單一集區根節點(PRN)。該集區根節點定義該處理資源集區的分配節點。該PRNs中的度量反映在與該分配節點有關之排程錐中保持之最適線程。該PRN主層指標必須被設置以指向該集區靜態節點之一。
正常情形中應依據該排程錐之鄰近層之需求而設置該排程器演算法。
SystemWeaver支援執行中排程節點之建立及刪除,並且提供自一登錄節點遷移一任務類型至另一者而不會遺失或失序的能力。當討論動態排程器配置時必須引入兩種額外概念:靜止(dormant)排程層以及標記線程-靜止排程層存在於該階層式中且可接收推送操作(push operations)(亦即可聚集子登錄)但不得用於排程,因而永不動作。
-標記線程僅於其為該排程階層式之一特定部分上的最後線程隨從(dependant)時加以排程。在該排程階層式之一部分上的線程隨從數量包括準備線程之數量以及封鎖線程之數量,後者於其成為準備時而使用此部分之排程階層式。該標記線程可如同任何其他線程而攜帶任務參照,且將典型地被用於完成該排程階層式之一部分與另一部份之間的一轉換操作的管理。
以下章節詳述該階層式之一部分之一任務串流之一轉換的一示範順序。注意此為排程階層式之一部分之刪除的一超集合(superset)。
高層軟體有責任確保操作之適當順序被遵守。無法遵守此順序將導致無法預料之行為,特言之,新線程必須被引入至已插入一標記線程至其中的排程階層式的一部分。
在此示範順序中假設一任務之串流ts t r e a m
自排程器階層式h1
被轉換至新排程器階層式h2
。
-建立靜止排程器階層式h2
。
-分配ts t r e a m
上的所有新任務描述項至h2
。
-插入一標記線程至h1
中。
-等待標記線程的出現。
-喚醒該靜止階層式h2
。
排程分析採取許多形式(EDF、RMA等等)且典型地為應用程式-至少為區段-特定的。排程分析之結果為一組策略,其靜態或動態地控制該應用程式之執行時配置。透過其獨特的微結構,SystemWeaver於執行時有效地執行這些預定之策略/演算法。
SystemWeaver被用於使特定演算法得以被定義於矽設計時間而不會破壞結構或實施。然而,預設提供數個演算法:-FIFO排程:單純的先進先出佇列化。
-優先度排程:最適候選者具有最高(升冪優先度)或最低(降冪優先度)優先度度量。
-循環排序(Round Robin)分配:當一任務自該排程階層式中提取時更新該排程選擇為次一對等層。注意該循環排序分配並非未於一排程階層式之“最左側”終端的一相關排程策略。
-加權公平佇列化:一種複雜排程器,其中的適格候選者係依據一分配權值以及某種負載測量(即封包之長度)而加以選擇。
藉由對整體排程器階層式之部分注意,可建立排程器演算法之複雜組合以提供應用程式系統中的精密流量及任務管理能力。
排程演算法被進一步分解為個別排程及度量運算子,兩者均被定義於該主層節點中:-排程運算子:定義儲存於該子層節點中的運算域被用於判定該最適候選者的方式。排程運算子並未修改該子層節點中的運算域。
-度量運算子:定義最適子層之運算域被傳遞至主層運算域的方式。該傳遞運算子可為空值(不更新該主層)、一複製(覆寫該主層的運算域)或涉及在某個或所有該子層及主層運算域上的一數學函數。在所有情形中,該子層運算域不被改變。
該排程及度量運算子被內部地實施於該SystemWeaver排程器硬體中。排程及度量運算子的一組合將典型地被用於定義一特定排程器演算法。排程器演算法一般在一推送事件(push event)(其中一新任務被推送至該排程器階層式中)而非一提取事件(其中一任務係自該排程階層式提取)下係指不同的行為。舉例來說,考慮一FIFO排程器,當一新任務被推送至一非空的FIFO排程階層中時,並不執行排程更新;然而當一元件係自一FIFO排程階層提取時,該排程器必須被更新。
排程運算子被設計為可延伸性的,但定義預設運算子的一選擇。該排程運算子典型的為比較性的,因而該結果總是為一布林值。在下表中M表示在一排程層或該排程層描述項本身之任一者的成員中的兩度量之一,此係依據以下方案:-Mc u r r e n t n
係指屬於該目前最適格候選者的該些度量。
-Mt i e r n
係指屬於附加該目前及候選者之排程器層描述器的該些度量。
混合排程運算子亦為可用的,其為第1表中該排程運算子之組合。舉例來說:Update Required=(Mc u r r e n t
0>Mc a n d i d a t e
0)&&(Mc u r r e n t
1<Mc a n d i d a t e
1)
其中討論中的參數可利用主層及子層描述項兩者中的度量。這些混合運算子可被用於傳統排程層及集區分配層兩者之中。
關於進一步資訊及範例,可參閱以下的排程順序圖章節。
度量運算子一般為運算的(arithmetic)。至於排程運算子被設計為可延伸的但具有一組預設運算子,參見第2表。度量運算子範圍複雜,從空值或單純複製操作至複雜的乘法累積操作。
排程運算域或度量被分為兩群組:-區域度量係與處理資源實體、排程器層及線程描述項相關。一區域度量的操作自動地產生一再排程事件。
-整體度量為選擇性的,且典型地係與系統資源狀態(某些探索(heuristics)例如匯流排繁忙或空閒記憶體)有關。
一特定排程演算法可僅使用兩度量,其中之一必須為區域性的。該第二度量的類型係由MetricllsGlobal旗標所決定:-當MetricllsGlobal被重置時,度量1為區域的且將被使用作為排程操作中的一常值(literal)。
-當MetricllsGlobal被設置時,度量1為進入整體度量埠之陣列中的一索引。
任務描述項及排程層描述項含有兩個32位元運算域或排程度量。這些運算域由其個別之主層在排程操作中所使用且可於該排程操作中被轉換及/或傳遞至該主層之運算域中,以供該階層式中的後續更高排程。
第9圖說明表示於一任務描述項中的排程度量。在一排程描述項中,度量0將典型地被用於表示該任務之優先度。保留此度量之最不重要位元組以供該System Weaver硬體及客戶端軟體中的內部使用。在排程器層度量上沒有此限制。
整體度量一般為被動的,該整體度量中的一改變並未產生一再排程事件於所有潛在影響的排程資源上整體度量在排程一依賴排程資源時的某些其他系統事件被詢問。雖然該SystemWeaver結構對整體度量的使用不施加任何限制,但其可被用於系統探索(匯流排利用、記憶體填滿一時間窗格等等),因而該改變率將相對較低。亦可使用過濾器以平均該資料。
下文中參照之所有配置圖使用如第36圖所示之一共用格式。
第10圖中說明一單一處理器的最基本配置,此說明一單一處理資源實體(單一分派節點)的配置,伴隨其必要的排程根節點。在此最簡單的情形中,由於僅有一單一處理器,故該排程錐係由一單一FIFO階層所組成且該分配階層為空的。因此,該排程器根節點同時為該登錄節點以及該分配節點。
注意圖中所示之排程節點實施上的箭頭係由右向左(主層至子層),此與任務之“流程”相反,後者係由子層流向該處理器資源實體。
以一模組化方式實施排程器並配置於依電性記憶體中,此使得非常精密之排程器階層式可由一串不同策略之排程器層所構成,且在該發展處理過程中可加以調整及修改。然而,無效的配置亦為可能的,且必須採取特別注意以確保適當的度量可用於深層巢狀之排程器層。
該排程層依據到達之順序或依據一預設FIFO佇列策略而儲存登錄。該定義排程策略被覆蓋於此結構上的方式將於稍後加以描述。新節點(或描述項)藉由一推送操作被增加至該內層結構,且由於一提取操作而被移除。排程操作並未控制該內層連結。
第11圖說明一單一處理資源實體的一更代表性排程結構。由左而右,在此範例中兩FIFO階層構成一優先階層。在階層式之兩階層具有三排程層。注意該排程層僅具有一“離開”節點(顯示於該圖之右側),但可能具有許多登錄節點(顯示於該圖之左側)。
第12圖說明該FIFO排程層之一的詳細圖示。此圖示說明一組指標,其維護該層上所有對等層之間的一雙連結列表。一雙連結列表被用於最大化該層之一任意成員之移除(提取)的效能。
雖然此詳細圖示僅說明任務描述項,該結構同樣適用於含有線程及排程節點之任何混合的層級。
對等元件之間的內層連結僅於推送及提取操作過程中被控制。
除了集區根層之外,第12圖中說明層間連結之結構。每層具有一主節點,其必須為一排程根節點或一排程節點兩者之一。這些節點儲存對此層之最適成員的一指標。在依據該排程策略以及分別定義於該主節點及該子節點中的度量而收到一排程事件時更新這些子節點。
每個子節點必須亦參照其主層。
該集區根層結構為一層級具有一單一登錄節點及許多離開節點的一特殊情形。該登錄節點為一排程錐聚集時(如第2圖中該準備佇列結構之“應用程式排程”部分所示)的點,亦稱為該“分配節點”。該“離開節點”連結該集區根層至可分配任務之處理資源實體的“分配排程”結構。第13圖說明用於含有兩處理資源實體之一集區之此類型結構。
每個集區分配層必須含有一集區根節點(PRN)以及一或多個集區靜態節點(PSN),但不允許其他節點類型。該PRN含有對該排程錐之第一層的一參照(儲存於該HeadIndex欄位中)以及將被考慮分配之第一PSN登錄的參照。一共用分配及度量更新策略必須被儲存於每個PSN個別之該排程器及度量推送及提取運算子之中。
每個PSN必須參照該PRM為其子層(使用該HeadIndex欄位)。
一集區靜態節點之主層必須為一集區附加節點(PAN)。PANs及PSNs必須具有一一對一映射。然而,每個處理資源實體可具有多個與其參與之每個分配集區有關的PANs。第14圖說明一處理資源參與兩集區中的一示範結構。對於特定處理資源可為其中之一成員之集區的數量不施加任何限制。再者,任何集區可與一任何數量的其他集區分享一任意數量的其組成處理資源。
在該排程根節點中具有與該處理資源實體參與之各個分配錐有關的兩PANs。此外具有一排程節點,其於需要時提供對於該處理資源實體的特定存取。
定義於一集區分配層之每個PSN中的排程策略定義選擇最適處理資源實體以供執行一特定任務的方法。舉例來說,該策略之一可為優先度,其中選擇目前執行該最低優先度任務之處理資源實體以於一高優先度任務自該相關排程追到達時被先佔。
第15圖說明含有五處理資源實體以及兩分配集區的一配置。注意PRI#3參與於兩集區中。
下文描述SystemWeaver排程的行為。
下文提供最基本背景資訊,其說明該SystemWeaver排程結構之關鍵基本原理。
雖然第2圖中詳述在SystemWeaver中具有多個潛在佇列點,但其僅使用指標而加以實現。該佇列實體-一SystemWeaver記憶體元件(WME)-從未被複製。
SystemWeaver僅於系統狀態中的某改變要求時更新排程選擇。該狀態改變可被分為三種事件類型:-一“推送事件”,其中該系統狀態之改變造成一新線程描述項被引入至該準備佇列結構中(注意此可為一新線程描述器,或為該系統狀態之改變已造成該線程成為準備的一既有線程描述項)。
-其中該系統狀態之改變造成一線程描述項自該準備佇列結構中移除。
-一“更新事件”,其中排程參數已被修改為需要該排程選擇之重新評估。
這些改變可為:-一岔斷(一“推送事件”,由於與該岔斷相關之區塊線程被移至該準備狀態)。
-由一執行任務所建立之一新任務的到達(此可為一推送事件,若該新任務並非依據其他因素或事件)。
-一同步事件-舉例來說,一號誌信號(semaphore signal)(假設有一區塊線程等待該信號,此於該區塊線程描述項轉換為該準備狀態時為一“推送事件”)
-一任務之執行“優先度”的一改變,一“更新事件”。
-在一處理資源實體中(一“提取事件”)中一任務的使用(從準備轉換為執行中)。
-一任務之排程度量的修改(一“更新事件”)。
-一排程器層排程演算法或度量的修改(一“更新事件”)。
其中位於準備狀態SystemWeaver中的系統保持閒置的。原則上,在該最有效電源解決方案中,此可使SystemWeaver被降低電源等待需要額外排程之一事件的到達。注意對整體度量的改變不會造成重新排程事件。
被排入佇列至一特定排程層的新登錄僅與該目前最適登錄(由該主層HeadIndex所識別)加以比較。依據該排程層策略,若其較目前標題更為適合,則更新該HeadIndex欄位以參照該新登錄。新登錄總是被置於該目前連結列表結構的後方。
若該排程策略為一FIFO,則該HeadIndex指標於一新登錄到達時永不被更新,除非該佇列為空的。因此該預設行為於該新登錄被置於該佇列之後方時等於一FIFO演算法。
此方案確保花費最少時間處理推送操作,其一般被視為排程效能上的延遲。因此,提取排程在必須評估一排程層之整體內容以於每個提取操作上更新該排程選擇的最壞情形中為更加繁重的。然而,在該實體佇列結構中總是使用一區域FIFO演算法為較佳地,由於該排程演算法之修改並不要求該排程器層被重新連結。再者,提取排程一般可伴隨應用程式執行而被執行,因此對於整體系統效能具有一較少衝擊。
有數種分析系統的方法以確保即時截止期限之滿足,其範例為EDF(最早截止期限優先)、RMS(速率單調排程)以及各種其他隨機(stochastic)方法。這些方法一般傾向為應用程式特定的且可能為專屬的。然而,在所有情形中此排程分析之結果為排程策略(即優先度、FIFO、循環排序、加權公平佇列化)之一集合。System Weaver技術係針對排程分析所識別之策略的有效即時執行。對於System Weaver中的配置而言,每個排程策略被進一步解碼為一組排程運算子。
每個排程器層具有兩運算子,其被用於判定該排程選擇如何依據對該排程層(或從屬排程層)之一推送或依據由該排程層(或從屬排程層)之一提取而被更新。在某些情形中,該排程運算子將需要演算域,其被儲存於排程器及任務描述項兩者之類的度量欄位中。
排程度量儲存可為該選擇排程演算法所需的資訊,其最基本之範例為優先度。在某些情形中,有必要自該最適候選者轉送度量至主節點,因而該資訊可直接於後續排程選擇中被使用,或作為一度量更新操作中的一操作域。該度量傳遞運算子定義對於推送及提取方案兩者而言如何達成此結果。
依據該階層式中的排程節點之位置,該度量欄位亦可反映在一特定處理資源上該目前執行線程的優先度。在此情形中,其被用於判定是否需要一先佔(參見下文之排程行為)。
下文描述用於在執行中實施該排程演算法的各種資源。
排程器層
一排程器層係由一主層-其可為一排程器根節點、一集區根節點或一基本排程節點-以及數個子層所構成,如第6圖所示。該子層可為基本排程節點、線程或任務描述項或集區附加節點。藉由使子層節點可為其自身權限中的排程節點(即進階排程層之主節點),可建立複雜排程層階層式。
集區分配層
集區分配層可僅含有集區根節點(僅有1個)以及集區靜態節點。每個處理類別僅有一集區根節點。
-排程器運算子:用於定義判定該目前執行任務是否應被先佔之排程策略。
-度量傳遞運算子:在一分派佇列描述項中沒有度量傳遞運算子。
-度量:該度量元件一般儲存該目前執行線程的度量。
-排程器運算子:用於判定該排程錐之最適候選者。
-度量傳遞運算子:其總是被設為承繼該排程錐之最適候選者的度量。
-度量:保持該排程錐之目前最適候選者的度量。
-排程器運算子:用於判定該附加層的最適子候選者。
-度量傳遞運算子:由使用者定義。依據後續排程階層之需要而設置。
-度量:使用者定義的。依據後續排程階層之需要而設置。注意某些度量傳遞運算子將自動更新這些欄位。
-排程器運算子:用於判定在一集區分配層中用於先佔的最適候選者。
-度量傳遞運算子:用於判定該執行任務度量的傳遞。
-度量:依據該集區分配演算法之需求而設置。預設地其將反映該目前執行線程的度量;然而對於特定分配策略可能需要一靜態分配。
-排程器運算子:不使用。
-度量傳遞運算子:用於控制該最適任務度量的傳遞。
-度量:用於儲存附加至該相關集區根節點之排程錐之最適任務的度量。
-度量:用於傳遞直接關於該排程任務之適當性或一排程器可據以計算該適當性的資訊。
該排程操作被分為兩種子類型:-標準層級排程,其中一排程器層中的一或多個登錄競相成為一層級中的最適登錄。
-集區分配排程-識別處理資源實體之一選擇之何者應被岔斷。
沒有排程動作發生,除非接收一排程事件。
如前所述,系統狀態之改變可產生一“推送事件”或一“提取事件”-這些事件造成一重新排程發生。所有排程操作為工作保留的。僅有可想像一特定事件所影響之排程階層式的部分被重新評估,此被稱為存在於該重新排程範圍中。第17圖說明一基本排程階層式上之一事件的重新排程範圍。第18圖說明一簡單兩實體處理資源集區的重新排程範圍。
層級排程為該SystemWeaver排程演算法的最基本建立區塊。一排程實體可造成一串層級排程操作,如該使用者可配置排程階層式所定義。每個層級排程操作的結果為該主排程器(一排程節點或一排程器根節點之一)HeadIndex指標的更新。該主排程器之度量亦可依據該定義之度量傳遞演算法而加以更新。
原則上,層級排程開始於該目前HeadIndex且在該排程器層之成員附近重複(雖然實際上為了最小化延遲,推送操作僅對該目前標題指標更新該排程選擇),該排程器層依據下列建立對該HeadIndex是否需要更新:-該事件,其可為一推送或一提取操作-與該事件類型有關之排程演算法(推送或提取)-該層級成員之度量
若發現一更適合登錄,則相應地更新該HeadIndex。優化該排程操作之行為的數個特別情形被發現。在所有情形中靜止的排程器層在該排程操作中被忽略。
任何時候每個排程節點必須知道存在於其子階層式之線程或任務描述項之數量以確保關鍵填滿參數被維護。然而,並不總是需要完全排程每一層-識別該即時下行(downstream)重新排程操作已造成一排程選擇更新的一旗標被維護-若確實需要,則該主層亦必須被完全評估;若不需要,則不再需要重新排程該剩下的上行(upstream)排程器階層式(即使需要特定其他狀態更新)。
任何重新排程中的最後操作係用以判定最適準備任務是否應被允許先佔一特定PRI上的目前執行任務。該分派佇列描述項含有一排程演算法以及該目前執行中任務的度量-其可對該排程器根節點度量加以評估,該度量含有該排程錐之最適線程度量的一副本。
集區分配排程僅發生於集區分配層中。由於基本層排程尋求發現用於執行之最適線程/任務候選者,集區分配排程尋求發現用於先佔之最適處理資源實體候選者。典型地此係指識別以最不適合之資源集區執行該任務的處理資源實體,以及與該附加排程錐之最適‘準備’任務的度量相比較。
雖然該最適準備任務相較於所有執行中任務係最低適合度,在每個附加處理資源實體上的剩餘分配錐被更新以確保每個排程層保持對全部可存取下行任務的瞭解,然而,不需要進一步的排程。
雖然一先佔候選者被識別,該排程更新僅傳遞至該處理資源實體。
第20圖說明由於第18圖所示之推送事件而發生之重新排程的一順序圖。一基本階層排程操作於一集區分配排程操作前發生於該集區根層(階層#6)。在此範例中,節點5被選擇為適於先佔的,因此在階層#1中的階層排程操作被執行。該後續分派階層排程操作造成對該附加處理資源實體之一先佔。因此階層#2亦被更新以確保其下行任務/線程之數目被維持。
先佔排程使該目前執行任務可由一更適合(更高優先度)任務非同步地插入。先佔建立該執行處理資源及內容的特定需求,例如儲存狀態及一旦該先佔者已離開該資源時回復的能力。典型地可先佔任務或線程將透過該準備及執行狀態而維持相同的排程適合度。
相反地,協同線程僅於一較高優先度任務必須等待之完成建立。在該SystemWeaver任務管理解決方案中,協同線程於進入該執行狀態中最大化其適合度,因而排除一較高優先度任務以及該潛在後續先佔的存在。
度量傳遞可被排程事件或該執行中任務或線程之度量的修改而造成。
當對一排程層之主層的HeadIndex由於一排程事件而被更新時,該度量依據該主層中被定義之階層傳遞運算子而自該最適格子度量被傳遞至該主度量中。這些係依據該操作之性質以及從一單純副本乃至於一多重聚集的複雜範圍而定。
目前執行線程之度量可被動態地修改-此可被用於避免封鎖資源上的優先度反向狀況。當該執行中處理資源實體並未參與一分配錐中時,僅更新該分派佇列描述項度量。在一分配集區的情形中,該執行度量被傳遞至與該處理資源實體相關的集區靜態節點(第21圖)。該PSN度量的更新由保持於該PSNs自身之中的度量傳遞運算子所控制。在特定排程方案中,靜態數值必須保持於集區靜態節點中。
在兩種情形中啟動一重新排程事件以確保該新執行度量並未造成該執行及準備任務之比較性適合度的一改變。在該集區情形中,此僅為關於該新執行度量之排程器根節點度量的一重新排程。在該集區情形中,該集區分配層以及所有後續階層必須被重新評估。
當一處理資源實體進入該閒置狀態時,其使用該執行度量以告知該排程結構。本質上,一閒置處理資源實體為“執行”該最低可能優先度任務者,且因而將被任何任務之到達
先佔。該執行度量被設置為閒置數值以一般方式啟動一重新排程事件,因而造成該閒置任務由在該準備狀態結構中等待此處理資源實體之任務所“先佔”。
對於與該“閒置任務”有關之一更詳細描述以及其對於處理資源集區中的電源管理的影響而言,參見下述集區方案章節中的區段電源管理。
內部中可具有數個進階模式及行為或藉由採取特定SystemWeaver配置而達成。在以下章節中描述以下模式。
注意此並非SystemWeaver中可用排程模式的一完全列表(exhaustive list)。
雖然System Weaver系統原則上為事件驅動的”傳統計時器式系統如時間片段亦為可使用的。時間片段任務依據個別時間片段期間而分享一處理資源,其判定一任務可佔有一處理資源的間隔(假設在此間隔中沒有先佔任務成為準備的)。
時間片段任務對正規任務(如第1圖所示)呈現一稍微修改的“進行(running)”行為。第22圖說明該進行狀態的兩部分:正常及反對的(deprecated)。
此章節描述時間片段任務的行為,伴隨在配置該任務時必須遵守的規則。
以下章節討論用於在該SystemWeave伺服器核心中實施該時間片段特性的資源。
一前置處理資源實體計數器被用於該SystemWeaver核心中以協助時間片段行為。亦提供一單一前置計數器(per-scaler),其係由該系統計時器提供。該前置計數器之位元解析度被設置於晶片設計時間。
該前置處理資源實體岔斷狀態暫存器中的一狀態位元被撥出用於時間片段行為。此狀態位元暫存該時間片段計數器之逾期且可被軟體用以判斷一時間片段事件是否發生。
一時間片段群組中的所有任務必須分享該相同優先度
以及該相同主排程層,再者,時間片段任務不應與其他非時間片段任務分享排程層。該時間片段主層之排程演算法應被設為FIFO。第23圖說明一典型時間片段配置,其中一時間片段群組在背景中與需要服務而取得優先度之一前景群組-事件驅動任務一同操作。
當一時間片段任務首先開始執行時,一系統範圍之時間片段數值被複製至與該處理資源實體有關之時間片段計數器中。該時間片段任務被稱為進入其‘正常’執行狀態(第24圖)。在該正常狀態中,每個週期降低此計數器。當到達零時,該任務之執行優先度(儲存於該分派佇列描述項中)被該硬體自動降低,而該任務進入該‘反對’狀態。此時該時間片段間隔計數器切換至該傳統監看模式。
在一單處理資源實體提供數個時間片段任務的情形中,降低該執行優先度之動作(以及相關重新排程操作)將造成該準備狀態結構中該時間片段群組之另一成員的一
先佔。藉由詢問該時間片段狀態位元,該軟體客戶端可判定該時間片段過程已逾期,並且推送如今被先佔之任務至該FIFO佇列之後方。因此該群組遵守該配置之時間片段規則同時大量地維護SystemWeaver核心排程及客戶端行為的正常操作模式。
當一時間片段任務被一非時間片段任務先佔時,即使位於該‘正常’時間片段狀態中,該傑出時間片段過程被複製至該任務控制區塊中。該任務隨後被推回至該FIFO佇列之前頭
的時間片段群組中。當任何先佔任務處理完成時,該時間片段任務係利用被重新設置該時間片段計數器之先佔任務的剩餘時間片段而加以回復。
當一時間片段任務在該‘反對’狀態中被先佔時,其被推回至該時間片段群組FIFO佇列之尾端。在兩情形中該時間片段任務之優先度度量維持於其原始配置數值
。
當一時間片段群組係由處理資源實體之一集區所提供(假設沒有先佔任務),進入該‘反對’狀態中的登錄不必然
造成一立即切換至另一時間片段群組成員。注意以下資料:Tp
=(t*d)/p其中(1≦p≦t)Tr e a d y
=Tp
-d Tp 一時間片段群組之完全循環(執行每個成員任務一次)的期間Tr e a d y
每週期中一特定任務等待於該穩定狀態中所經歷的時間量t 時間片段任務的數量p 在該集區中處理資源實體的數量d 每個時間片段間隔的經歷時間
注意當p=t時,若沒有任何其他先佔任務,該時間片段任務持續執行。
以下執行描述檔說明SystemWeaver時間片段行為:第25圖說明具有依單一處理器以及三時間片段任務的傳統情形。其各自依據該時間片段間隔分享時間,直到依先佔任務到達該時間片段任務(在此情形中為編號2)產生之位置。一旦該高優先度先佔任務完成時,該原始時間片段任務回復以完成該岔斷間隔。
第26圖說明具有兩處理器之相同方案。一開始該三時間片段任務被分享於兩處理器之間。當該先佔到達時,該時間片段任務分享該剩餘處理器,且當該先佔任務完成時,其回復在兩處理器上執行。
第28圖說明當可用處理資源之數量等於時間片段任務之數量時,每個時間片段任務持續在該處理器之一者上執行。當一高優先度任務取得該處理器之一者的控制時,該時間片段群組依據該定義之時間片段間隔自動地分享該剩餘處理器。
一處理資源集區的預設行為係由一分配層中的第一集區靜態節點評估一排程選擇。該集區根節點(PRN)具有一主指標器,其一般地指向一分配層中的第一級區靜態節點(PSN)(第28圖)。當評估用於先佔之一候選者時,該比較從此登錄開始並進行於使用該對等指標的列表周圍。
若所有靜態節點的適合度相同,且該適合度低於該排程錐之候選者時,將選擇被遭遇之第一節點。因此在低負載方案中,當一或多個處理器為閒置時(已設置其度量為該閒置數值),最靠近該PRN之主指標器之處理器資源實體將被偏好於執行新任務,而最遠離該主指標之處理資源將呈現長閒置期間。
不同的省電方法於該處理資源必須被重新喚醒時傾向呈現不同的衝擊,例如時脈閘控可維持一微結構中的所有狀態,然而積極電壓/頻率調整於重新喚醒時可犧牲所有既有狀態且呈現不佳的突波電流。在一特定PRI具有許多不同損失之降低電源選擇之情形中,藉由該之排程行為,依據該時間消耗閒置而管理其使用是有道理的。
可依據該處理資源實體以及系統巨結構之能力而將該‘閒置’狀態分為多個子狀態。可能從某狀態重新開始相較於其他狀態為更損失的(例如一狀態保持時脈閘控降低電源相較於一電源隔離狀態)。為了支援這些方案SysterWeaver支援多個閒置優先度。
對於具有多個子狀態之該些處理資源而言,岔斷回應於線程執行回復時可被穩定地轉換回該閒置狀態中。此允許漸進引入一處理資源至一特定分配之動態集合中。
第29圖使用升冪優先度說明當時間通過一閒置狀態中時一處理資源實體(PRI)的“執行優先度”。在該第一實體中,該閒置任務設置該優先度為其最低可能設定,其給予該PRI該排程器之一任務分配的最高可能機會-相較於其分配集區同儕。
之後該閒置任務引用一電源降低模式,其或許被支援於該處理資源微結構中。在此處該閒置任務增加該PRI之執行優先度以降低一任務分配的可能性(在先前狀態中的PRIs將取得優先)。
類似地在另一期間之後,該閒置任務(或某些其他代理程式)進一步提升該執行優先度(或許隔離對該PRI之電源-因而避免靜態洩漏)。該優先度之調變使一任務分配之PRI適合度進一步降低-符合重新喚醒此處理資源之損失(在此情形中為突波電流、冷快取效應(cold cache effect)等等)。
注意:在一分配層中該第一登錄之偏好先佔有時為不佳的。雖然有此種情形,可於該先前排程選擇成為後續排程操作之新起點時選擇一不同行為。此選擇在一分配集區中的處理資源實體之間呈現高優先度先佔任務的一更公平分配。
在某些情形中希望維持一排程選擇,不論其進行的絕對正確性。一般而言此情形發生於對一待定類型之任務或資料組建立一內容的損失很高因而應盡可能聚集多個任務時。此情形之範例包括:-處理器快取-已充滿一過去演算法或資料組的一快取記憶體對於一不同演算法及/或資料組將展現低的吸引性。此被稱為一冷快取效應
且呈現一高的快取遺失比例並導致效能低落。
-可重新設置FPGA分割區-部分執行時重新設置性於該晶片被配置且可操作時使該FPGA之一部分可被動態地重新設置,故賦予不同演算法在整體時間之執行。
然而,自一演算法切換至另一者的損失很高而必須聚集更大資料組以確保系統效率。
此兩者為高損失內容切換
的範例。
滯後式排程藉由聚集多個使用者操作之內容切換的損失而可被用於避免某些不良效果。藉由使用該度量之其中一者而表示一‘系統損失’參數將可使用滯後式排程。該滯後度量可依據該系統中損失的各種測量:-任務記憶體佔據:其中記憶體位於一優良狀態,一特定任務佇列的累積足跡將被用於判定何時排程該新配置。
-處理需求:其中聚集一實質“主動處理”期間之一內容的損失為較佳的。
-時間片段:其中延遲上的時基誤差(jitter)為重要的。
舉例來說,在一動態重新設置FPGA之情形中,一記憶體可被累積在可配置結構之一單一部份上多工處理之各個演算法內容的工作-在此情形中該記憶體佔據可為選擇何時再規劃該陣列的一因素。在所有情形中均可能設計一排程器階層式為允許由於高優先度任務之到達的強制切換。
該關鍵系統階層挑戰被歸納如下:-一內容切換之損失的衝擊(切換時間、突波電流)-切換的時機-如何管理一非主動特定內容之工作的累積。
下文描述使用SystemWeaver管理動態FPGA在配置之可能方式。可使用相似排程計數以及較單純軟體客戶端填隙行為而達成冷快取之管理。
雖然十分類似於處理器內容切換,但需要數個(再)定義:配置
-一組編寫變數之一,其可被針對該FPGA結構的一特定部分。
內容切換
-改變該FPGA之一可重新設置部分之配置的動作。
任務-一特定FPGA配置所執行之工作的一單一單元。
在此提案中針對該FPGA之可重新設置部分的配置被視為協同的(與先佔的相反),亦即該個別任務為不可分割的,而必須於一內容切換可發生前完成。此確保任務無須再進入並限制內容之間的狀態保存問題為等待一特定配置之任務數量必須為一整數值。該傑出任務之管理的一邏輯圖被顯示於第30圖中。
任務被組織於佇列之中。這些佇列永遠存在;特言之,其累積目前並未作用中之FPGA配置的工作。該排程器判斷何時切換任務並管理一任務群組中任務的執行。該重新設置支援邏輯管理再規劃該結構之機制並於完成時傳送信號。依據此模型之協同性質,當一內容切換被排程時並無需要保留於該結構中的資料。
該排程器執行兩種明確功能:-其依據該任務佇列之改變狀態持續評估目前的排程選擇。
-其管理一個別任務佇列中的任務執行順序。
每個任務到達造成該排程選擇的一更新以確保該FPGA結構在任何時間係位於正確狀態中(貪婪排程)。在該任務佇列中該排程器依據該系統結構所定義之特性而命令執行之順序。該排程器至少應提供FIFO、循環排序及優先度策略。
該SystemWeaver解決方案提供排程及內處理器通訊能力的一傑出組合,其可被用於管理執行時平行執行及內處理通信。SystemWeaver之特徵可於傳統指令組結構、固定硬體元件即可重新設置FPGA區塊等等中有效地管理任務及內容切換。第31圖說明一示範結構。
SystemWeaver處理FPGA結構內容切換之排程的管理以及該個別任務佇列中的任務排序。一般而言,此係附加於排程更多典型任務至該平台中的固定配置元件。
該重新設置本身係利用一特定SystemWeaver硬體客戶端填隙加以處理。注意用以管理快取“暖度”之類似排程技術並未對該標準客戶端填隙施加額外需求。該客戶端填隙所接收之每個排程任務控制區塊係與該結構之既有配置相比較。若該目前載入之配置以及該排程任務之配置不同,則該客戶端填隙重新設置該結構,而未進一步與該SystemWeaver核心互動。隨後該結構更新選擇依據該排程器之支配而單獨地由該任務之輸出順序所控制,該客戶端填隙可被重新設計以容納不相似的重新設置策略。
該排程策略應由該系統設計者所決定。然而仍有必須可被用於支援此特徵的關鍵能力。特言之,排程器演算法應可呈現滯後-亦即停留在一排程選擇上,直到一足夠損失已於他處聚集以警告切換至一替代選擇。
在顯示之範例中,每個‘‘任務具有一隨機建立之度量,其被加入至表示該任務群組織聚集度量中。當一特定任務群組被提供自該佇列移除一任務之“提取”操作時,則降低此聚集計數。
當一“推送”(一新任務到達)或一“提取”操作發生時,該結構排程器對每個候選者評估該目前執行之任務群組的度量。依據第32圖中的演算法:需要的更新=(Cc a n d i d a t e
>Cc u r r e n t
+Hysterisis
)Cc a n d i d a t e
在該候選者排程層中的累積任務損失Cc u r r e n t
在該目前選擇之排程層中的累積傑出任務損失Hysteresis被增加以避免內容猛移(thrashing)的滯後
第33圖說明可被選擇以實施以上描述之演算法的一排程階層式。在此情形中該“滯後排程器”之度量1儲存該滯後
運算域。度量0可被用於儲存該滯後群組之靜態優先度,此優先度被使用於在該滯後群組及該先佔群組之間排程時。該假設為有某些任務,其具有足夠的優先度以強迫一內容切換。
第32圖說明此一系統之概念效果。該任務排程輸出一般而言被謹慎地封鎖,其於管理系統流量設計之衝擊時取得任何特定配置之最大使用。
第34圖說明該呈現之排程演算法的一模擬。等待四配置之各者的累積任務“損失”係伴隨所有損失之整體總和(“累積的”)而加以繪製。該選擇線指示該演算法將選擇之可用配置。
混合排程運算子為有用的,例如在集區分配層中排程處理資源集區時。舉例來說,或許該成員之一子集合僅應於等待處理之任務的佇列填入超過一特定臨界值時為適合的。
考慮可使用三處理器資源的情形:一RISC處理器以及兩數位信號處理器(DSPs)(第35圖)。這些資源之每一者理論上可執行一語音編碼操作,但該DSP裝置為更有效的。在此情形中,該RISC處理器如圖所示可被呈現於該語音編碼集區中,但其參與於該執行中的適合度將視等待該功能之任務佇列的深度而定。
在此一配置中,該集區根節點度量可表示優先度,而度量1可表示佇列填入。在該候選者PSNs之各者中,度量0一般將表示在其個別處理資源實體(PRIs)上執行之任務的執行優先度。在此情形中,度量1將表示使其相關PRI適於排程所需的佇列填入。在此情形中該混合排程演算法為:所需更新=(Mc u r r e n t
0>Mc a n d i d a t e
0)&&(Mc u r r e n t
1>Mc a n d i d a t e
1)
在與該DSP裝置相關之PSNs中,M1將被設為零,因而該演算法僅依據優先度而加以判定。在該RISC處理器之情形中,M1將不為零,因而Mc u r r e n t
1所表示之佇列填入必須增加以超過此數值以供該RISC處理器參與該演算法之執行。
下文描述一巨結構或處理層級之SystemWeaver伺服器。
如前所述,該SystemWeaver硬體解決方案具有四種元件-該System Weaver伺服器核心-該System Weaver密接記憶體-該System Weaver除錯管理員-該System Weaver客戶端填隙
整體度量代理程式為選擇性的,且於該系統設計需要包括系統整體狀態於該排程選擇中時加以使用。
第38圖說明在該核心周圍上發現的介面群組。
為了確保該System Weaver核心可被簡單地整合,所有信號為同方向的且與一單一時脈同步。下文說明這些群組之構成成員。所有的信號方向係與該System Weaver核心有關。
該系統控制群組含有用於確保該System Weaver核心之正確操作的各種信號。這些包括系統時脈、即時時脈及重置信號。
在某些系統中希望在排程選擇過程中使用特定系統度量。這些度量可表示各種因素,例如互連繁忙度、快取選中(hit)比例、記憶體佔用等等。
該周邊岔斷群組係由該SystemWeaver控制系統外部所提供之一組岔斷所組成。在該周邊岔斷群組中的信號可由例如連接外部世界之輸入介面所驅動,或直接由該SoC裝置之外部透過針腳所驅動。周邊岔斷輸入之數量係定義於SoC設計時。
該內部群組係由該SystemWeaver系統所提供之兩同步岔斷群組以及執行時系統除錯信號之一單一群組所組成。一單一群組中每個信號的編號將典型地對應該系統中的處理資源的編號且將被定義於SoC設計時。
此群組連接SystemWeaver至其私有之密接記憶體資源。假設該附加記憶體為一同步SRAM裝置。該位址路徑之寬度n以及該資料路徑之寬度m被定義於SoC設計時。
該個別互連策略-包括協定及層數-必須被設置於SoC設計時。任何特定匯流排介面信號之細節可參見該對應之特定匯流排實施。
關於該除錯管理員之介面的細節,請參見共同申請中的國際PCT申請書第PCT/GB2005/003525號,其藉由參照而被納入於本文中。
System Weaver TCM為各種EDA廠商所提供之一標準編譯程式SSRAM技術。依據本申請書之需求,該TCM含有於SoC設計時所定義之SystemWeaver記憶體元件(WMEs)之一整數數量。每個WME使用256位元的記憶體空間。SystemWeaver最大支援65536個WMEs,或一16Mb記憶體。
雖然佇列描述項確實使用WMEs,但在一典型系統中需要之WMEs數量將由線程支援需求所決定。舉例來說,可在該SystemWeaver伺服器中同時支援400線程的一系統將需要大約128kb的附加記憶體。
在SoC設計時,可修改該記憶體介面以簡化路徑。
第39圖說明。該SystemWeaver伺服器實體之主要邏輯元件這些功能被映射至第40圖中說明之結構上。該功能被劃分於四個主要內部平行處理元件之間,其執行以下功能:-線程排程器輸入管理員(TSIM):空閒列表維護、WME恢復。
-線程排程器等待管理員(TSPM):等待列表維護、同步、提升至準備佇列結構。該線程同步管理員維護該等待佇列結構之完整性(插入及取出)。
-線程排程器輸出管理員(TSOM):準備佇列維護、分派佇列維護、處理資源電源管理、岔斷建立。維護該準備佇列結構之完整性(插入及取出)。
-線程排程器排程管理員(TSSM):維護該準備佇列結構中每個處理資源之排程選擇。
額外的數個區塊提供支援功能:-線程排程器記憶體管理員(TSMM):聚集對該附加SystemWeaver記憶體之存取,其包括雙方獨佔及鎖定。
-線程排程器岔斷管理員(TSIC):轉換進入系統岔斷為國際同步基本指令。
-線程排程器介面管理員(TSIF):提供與SystemWeaver資源之互連連接、配置以及執行時存取。
第40圖說明該SysmtemWeaver結構之主要子區塊。以下章節詳述這些元件之間的子區塊內互動。每個子區塊呈現一組“公開方法”至其他子區塊,使各個子區塊得以指示其同儕在其個別維護之結構上執行操作。
可利用特定條件完成一命令時,狀態旗標被管理於該子區塊之中。
在子區塊介面圖上的箭頭方向指示該匯流排之主從性(master-ship)且並非反映該信號群組之個別元件的方向。
在SystemWeaver之操作過程中使用各種描述項類型(關於進一步細節可參見共同申請中的國際PCT申請書第PCT/GB2005/001154號,其藉由參照而納入本文中)。這些描述項之多數為無狀態的,然而,線程描述項及排程器描述項在特定情況下可轉換為各種狀態。此文件描述這些狀態轉換以及造成轉換之事件。
有兩種該SystemWeaver內部認識之兩種線程描述項:該標準線程描述項以及該標記線程描述項。後者被專門用於同步移除排程階層式之處理,同時確保先前排程之線程描述項的完整性及順序。
第41圖說明兩線程描述項及標記線程描述項經過的內線程狀態圖。注意狀態新及空閒為中介狀態,其與SystemWeaver中的一永久狀態無直接關聯。一字面狀態變數不存在於該線程描述項中,除非該狀態係由數個旗標所表示。第3表說明旗標狀態及第41圖中該線程存在之狀態之間的關聯。
下文簡要說明造成進入以及自其離開的事件及狀態。
新的
該新的狀態為暫時的。新的線程由一推送獨立或依賴線程命令而被導入至該TSIF。該兩種情形被處理如下:-獨立線程(不具有時間或同步依賴性的線程)立即轉換為該推送狀態。在此情形中該TSIF指示該TSSM導入該線程至該準備佇列結構之中。
-依賴線程(具有一時間或一同步依賴性的線程)轉換為該封鎖狀態。該TSIF指示該TSPM適當地導入該線程至該等待及時機佇列結構中。
封鎖的
在該封鎖狀態中,線程描述項等待一外部同步及/或一時機式同步之一。封鎖的線程起始於該TSIF。當接收該該適當同步時,該TPSM轉換該線程至該推送狀態中並指示該TSSM導入該線程至該準備佇列結構之中。
推送的
在該推送狀態中的線程已被同步或原始為獨立的,該TSPM(依賴線程)及TSIF(獨立線程)在這些個別情形中將管理轉換為該推送狀態。該TSSM推送該線程至該準備佇列結構中並轉換該線程為該準備狀態。轉換為該準備狀態造成一再排程發生。
準備的
在該準備狀態中的線程已自該推送狀態中轉換或已被清回該準備佇列結構中(由該TSSM)。該轉換為該準備狀態總是促使一再排程。線程可從該準備狀態中移出而進入該提取狀態或該清理狀態(flushed state),後者為越過該提取狀態以於一單一操作中清理之一特定情況。線程於被提名為該TSSM所排程之最適候選者時轉換為該提取狀態。
提取的
線程在該提取狀態中已被該排程器(TSSM)提名為一特定處理資源實體或一群實體所處理之最適線程,其由該TSOM轉換為此狀態。線程可由該提取狀態轉換為該清理狀態或該停滯狀態(zombie state):-該TSOM由於一再排程識別一更適合線程而轉換線程為該清理狀態。
-該TSOM由於在該系統處理資源實體之一者中的開始處理而轉換該線程為該停滯狀態。該停滯狀態維持該線程描述項直到其可為空閒的。
停滯的
停滯線程在該TSSM中被處理。該停滯狀態之存在係用於確保對一特定線程描述項之所有依賴在該線程為空閒之前已被除去。此可由該線程一旦已到達該TSSM處理佇列之前端時所保證,因而不需要進一步的處理。
清理的
清理線程係由該TSSM所處理。清理線程必須被重新導入至該準備佇列結構中,其造成一再排程操作。一旦此被完成,該TSSM將該線程轉換回該該準備狀態中。
空閒的
該空閒狀態為為一暫時狀態,其指出該線程描述項所使用之WME被放回該空閒列表中。
下文簡要說明造成進入及自其離開的事件及狀態新的
該新狀態為暫時的,新標記線程由一推送標記線程命令導入至該TSIF。標記線程總是越過該封鎖狀態,以確保存在於該TSPM之輸入及輸出工作佇列中的任何處理-其可影響標記線程被最終刪除之排程器層的狀態-已於該標記線程本身之到達之前被完成。
封鎖的
該TSPM立即轉換標記線程為該推送狀態並指示該TSSM導入該線程於該準備佇列結構之中。
推送的
該TSSM推送標記線程至該準備佇列結構中並轉換該線程為該準備狀態。轉換為該準備狀態造成一再排程發生。
推送的
該TSSM推送標記線程至該準備佇列結構中並轉換該線程為該準備狀態。轉換為該準備狀態造成一再排程發生。
準備的
當標記線程被導入至該準備佇列結構中時,其解開(unlock)其緊接的主層。該主排程層之釋放隨後由依賴線程之數量的計數所控制。在其主層之依賴線程計數已到達零時-亦即在System Weaver中以不再有依賴該主排程層之存在的線程描述項,標記線程僅適於轉換離開該準備狀態。
與標準線程類似,標記線程可轉換離開該準備狀態進入該提取狀態或該清理狀態其中一者,其後者為跨過該提取狀態以於一單一操作中清理的一特定情況。標記線程於其已被提名為該TSSM所排程之最適候選者時轉換為該提取狀態。
提取的
標記線程在該提取狀態中已被該排程器(TSSM)提名為一特定處理資源實體或一組實體所處理之最適線程,注意此排程選擇為一特定情形,其指示該排程層為空的且不再具有依賴線程。標記線程可從該提取狀態轉換為該清理狀態或該停滯狀態:-標記線程由於一再排程之結果識別一更適合線程而被轉換為該清理狀態。
-標記線程由於在該系統處理資源實體之一者中開始處理而被轉換為該停滯狀態。
停滯的
該停滯標記線程之處理與正規線程描述項相似。該標記線程之主排程層亦將於此狀態中被刪除。
空閒的
該空閒狀態為指示該線程描述項所使用之WME被置回於該空閒列表上的一暫時狀態。
排程器層亦具有內含狀態。對於持續於該系統之執行時間的一靜態層而言,該唯一狀態為主動的。該剩餘狀態係由動態排程層所使用,亦即該些在執行時來來去去者。第4表提出旗標狀態以及第42圖中該排程器層存在之狀態之間的關聯。
下文簡要說明造成進入以及自其離開的事件及狀態。
新的
該新狀態為暫時的。新排程器層由一推送獨立元件在起始過程中或在執行時導入至該TSIF。
靜止的
在該靜止狀態中,該排程器層被允許聚集線程及潛在額外子階層式,但將永不為該TSSM所排程。可以兩種方式進入該靜止狀態:-一新排程描述項可被建立於該靜止狀態中。
-一排程層可於執行時被修改並透過經由該TSIF送出之專屬系統命令而被置於該靜止狀態中。
該靜止狀態僅可由一專屬系統命令離開。
主動的
在主動狀態的排程器層主動地參與排程且被鎖定,意指當其變成空的時不會被移除。靜態排程器將典型地被建立於此狀態中。動態排程器藉由透過該TSIF接收之專屬系統命令而轉換為此狀態。該排程器層僅於接收一標記線程時離開該主動狀態,其中其進入該“等待中空閒”狀態。
等待中空閒
排程器層保持於該等待中空閒狀態中直到以下兩條件均被符合:-依賴元件之數目-其為保持描述項之數量之一測量並加以參照的一計數-成為零時。
-子元件之數量成為零時。
空閒的
該空閒狀態為指示該排程層描述項所使用之WME被置回該空閒列表的一暫時狀態。
下文涵蓋涉及多個子區塊之SystemWeaver行為的太樣。
在系統執行時可增加及移除排程階層式。若特定使用者層級程序為受尊重的,則該SystemWeaver保證該系統之完整性以及自排程階層式之一部分轉換至另一部份之線程描述項的順序。關於進一步細節可參見該。
在一標準或標記線程中可更新該度量。行為係依賴線程狀態:-若該線程位於封鎖狀態中,則一適當命令被傳送至該TSPM。由於該等待中佇列被排序,則該線程於該度量被更新時被移除並再插入至該佇列中以確保其再出現於該適當位置。
-若該線程位於任何其他永久狀態中,一命令被送至該TSSM,其執行該度量更新並再排程該排程階層式之適當部分。
該TSOM及該TSSM在排程線程描述項至處理資源實體中參與一部份。第72及73圖說明該TSOM及該TSSM之間的互動的某示範順序圖。
每個子區塊係以其主要IO、對其同儕及外部世界之實體介面之形式加以討論,或者以其命令介面或可使用該命令協定在該適當實體介面上呼叫之方法的形式加以討論。
該介面管理員負責指揮自該互連群組接收之命令的執行以及將其分配至該其他子區塊。
下文描述存在於該TSIF中的功能實體,且其不僅是命令之翻譯以供內部使用。
該TSIF主要將在該互連介面上接收之命令解譯為該剩餘子區塊的一或多個內部命令。下文詳細描述存在於該TSIF中的結構資源。
號誌區鎖定(SRL)提供一資源,其可被任何系統資源細微地測試及鎖定以取得對一系統資源的專屬存取。
其可由於任何數量之原因而加以使用:-為了鎖定含有一或多個共享資源(例如號誌物件、任務控制物件等等)之系統記憶體之一區域,因而保證完整性。
-為了用於一多循環命令存取而鎖定該SystemWeaver命令介面。
-為了用於多週期事件而鎖定該SystemWeaver除錯事件介面。
SRLs具有兩狀態:鎖定的及未鎖定的。自SRLs讀取被定義為嘗試取得鎖定,而寫入SRLs被定義為嘗試解鎖。在鎖定一特定SRL之處理資源實體以及將其釋放者之間不需要關聯。以下描述該行為:-未鎖定的。在該未鎖定狀態中,自一SRL之一讀取傳回一控制碼,其對該讀取者指示該鎖定嘗試是否成功。在此狀態中寫入不具有影響。
-鎖定的:在該鎖定狀態中自該SRL之一讀取指示該SRL為不可用的。一寫入釋放該SRL。
該TSIF破壞自該系統接收之命令為可能多個內部命令。
一雙模計時器計數器被選擇性地提供給每個處理資源實體。該兩計時器模式為監看器及時間片段,該預設模式為監看器。
監看性行為係由一監看器週期及該個別計數所定義(第44圖)。監看器週期為該系統計時器之一降級(stepped down)版本,該降級係由一系統常數於矽設計時所定義。第46(a)圖說明每個處理資源實體於每個預定監看器時脈週期上的行為。
-詢問該個別監看器計數器以判定一監看器岔斷是否適合。
-於需要時建立一監看器岔斷。
該監看器計時器計數於自該計時器相關之處理資源實體的每個控制存取上被重設,因而僅有不在該監看器間隔中存取SystemWeaver的處理資源經歷一監看器岔斷。
該之時間片段行為於該TSIF及該TSOM之間被分割。在該TSIF中,分配至每個處理資源之計時器可被專屬於時間片段支援。當一時間片段間隔發生時,自動度量操作被提供於該TSOM中(該執行優先度被降低)。該處理資源本身僅於一標準先佔由於該自動度量更新而變成適當時被更新。
第45圖說明該TSIF中該時間片段支援邏輯的每個系統時脈週期的行為。第46(b)圖說明每個處理資源於該預定時間片段時脈之每個週期上的行為。注意在一時間片段事件已發生時,該計時器模式被回復為監看器模式。
SystemWeaver自接受源自該系統之岔斷、周邊岔以及對該系統之來源岔斷、處理資源實體岔斷。
周邊岔斷可被遮蔽及限制於該TSIF中(邊緣/層級觸發、負/正邏輯等等)。
岔斷處理資源被提供於該TSIF中以提供以下能力:-維持岔斷狀態,包括一岔斷斷言的來源(先佔、時間片段、監看器)。
-遮蔽能力。
一特別特徵被實施於該TSIF中以自動化岔斷遮蔽於該SystemWeaver命令介面上。由於該命令介面為該系統中所有處理資源的一共用存取點,故完整性及效率必須被維持。對於此目的而言,SystemWeaver於一處理資源在該SystemWeaver命令介面上取得一鎖定時自動處理岔斷遮蔽以確保該處理資源在此關鍵編碼區段不被岔斷。
一計數器被維持給每個處理資源實體,其追蹤已被接收之成功SystemWeaver命令介面號誌區鎖定請求的數量。每個鎖定請求增加該計數而每個解鎖降低之。當該計數器從零被增加時,岔斷被自動遮蔽;而當該計數被降低至零時,岔斷被自動解除遮蔽。
該輸入管理員管理該WME空閒列表,其處理該TSIF之提取請求以及各種子區塊(TSIF、TSPM、TSOM、TSSM)之推送請求。
該TSM僅含有一結構實體-該SystemWeaver記憶體元件(WME)空閒列表。第48圖說明該列表之結構。
該空閒列表依據一後進先出(LIFO)策略操作。該列表之每個成員為C_SCHED_ENTRY_FREE類型且使用C_FREE_QUEUE_POINTER_INDEX所參照之指標而被單獨連結。
除了連結列表內勤方法外(取得及設置狀態),該輸入管理員提出以下命令於其介面上:推送空閒索引(C_TSIM_CMD_PUSH_INDEX)呼叫端:(TSIF,TSSM,TSOM,TSPM)
該推送空閒索引命令被用於推送一自由WME索引回到該空閒列表上。其參數被歸納如下:
提取空閒索引(C_TSIM_CMD_POP_INDEX)呼叫端:TSIF
該提取空閒索引命令備用於從該空閒列表提取一空閒WME索引。
其參數被歸納如下:
該等待管理員管理被封鎖之任務或線程描述項等待某事件:同步或依據計時器。個別等待列表關聯係由使用者控制(或由更高層軟體所控制),其可表示一號誌、一爭用領域(contention domain)、一岔斷或這些的任何組合。
該等待管理員包含兩主要元件:一可變數量的等待佇列以及一計時器佇列。該等待佇列儲存等待由某外部事件所同步之線程的列表,而該計時器佇列儲存等待一逾時之線程的一列表。一線程描述項可能且事實上經常為該兩列表之一成員,藉此一線程描述項被允許在一受限長度時間中等待一外部同步事件。
第50圖之等待佇列結構主要被實施於該密接記憶體中,伴隨該TSPM中的資源及功能以處理其內容。該TSPM本身含有一標題指標以及參照等待佇列描述項之一列表的數個元件。每個等待佇列含有線程描述項之一列表,該等待佇列之數量於執行中可動態地增加及減少。該封鎖狀態中的所有線程描述項存在於一等待佇列中(與該計時器佇列相反,線程於此佇列中僅於其具有一定義逾時時出現)。多個等待佇列之使用係依據該應用程式及該應用程式設計者的需要及偏好。除此之外,等待佇列可與下列相關:-一號誌。此可能發生於一大量的等待佇列各自含有少數線程。
-一爭用領域(contention domain)。一爭用領域為多個實體競爭相同資源所位於之區域。舉例來說,一處理(與一線程相對)可被視為一爭用領域。
-岔斷。對於最快反應時間而言,岔斷將典型地被群聚為一專屬等待佇列。
不像計時器佇列,該等待佇列僅依據事件。這些事件為:-一推送事件,其中一新線程被導入至已存在或必須被建立之一等待佇列中。
-一同步事件,其中一或多個線程必須轉換為該準備佇列結構。
下文描述這些情形下的行為:推送事件
在一推送事件上該TPSM必須盼訂在該列表之何處插入該線程描述項(依據一識別順序運算子度量[0])。有兩種必須被考慮的情形:-推送至一既有等待佇列-推送至一新等待佇列
前者情形為平凡的,該列表被依序詢問直到發現一插入點。在升冪優先度之傳統情形中,該排序運算子被設為‘大於’(C_PEND_MNGR_PUSH_GTR)並搜尋該既有列表。該插入點係於該新線程之度量[0]大於該次列表成員度量[0]被定義。
當需要一新等待佇列時,該等待佇列插入立即於該新線程登錄之插入前發生。
同步事件
可從該岔斷控制器(TSIC)或透過該命令介面接收同步化事件。同步化可發生於兩種模式中:-一字面模式,其中該命令引數建立對一WME索引的一字面參照。
-一關聯模式,其中在該線程描述項中的一欄位以及該同步化基本指令中的一欄位之間尋找一關聯。
在該字面模式中,由於該線程描述項之索引被傳入該指令中,且不需要尋找最適候選者。該關聯模式需要該最適同步化候選者被首先發現。
該關聯模式含有三種子類型:-正規,其中僅有該特定等待佇列中的最適候選者被同步。
-多播,其中該特定候選佇列中的所有適合候選者被同步。
-廣播,其中所有等待佇列中的所有適合候選者被同步。
該最適候選者係由伴隨該命令所傳送之一引數以及亦位於該命令之一元件識別記號所識別。該元件識別記號指定該候選者線程描述項欄位之何者與該傳送引數相比較以識別適合度。在該正規模式中,該演算法繼續重複於該等待佇列中直到發現一適合候選者,於該處將其自該等待列表以及於可用時自該計時器佇列中移出,並被轉送至該準備佇列結構。對於多播及廣播模式而言,此處理持續直到該等待佇列或每個等待佇列分別變成空的。
特別情形係與該計時器佇列之成員的移除有關。參見下文之詳細描述。
每個被導入至該逾時佇列的新線程初始含有一絕對逾時數值。此數值可由該介面管理員自以一引數接收之32位元相對或絕對逾時而導出。
該計時器佇列使用該C_THREAD_PENDING_QUEUE_TIMER_PTR_INDEX以依據逾時之順序儲存線程描述項之一列表,而最近之逾時位於該列表之首。注意這些線程描述項亦將為該優先度列表的成員,藉由該第二組指標而由C_THREAD_PENDING_QUEUE_PRIORITY_PTR_INDEX所指示。第51圖中顯示該逾時佇列的基本結構。相對於該立即處理器之逾時的逾時被儲存,而非儲存絕對逾時數值於該計時器佇列之個別線程描述項成員中。此數值係使用一浮動點表示而被儲存於一16位元欄位中,其中該浮動點計時器格式之尾數包含該絕對數量之11重要位元以及一5位元指數。該計時器佇列之標題元件的逾時欄位總是被複製於該TSPM TimeHeadTimeout暫存器中,且隨後重置。
該時間同步結構之操作使用數個永久內部資源:-TimerHeadIndex:對該計時器列表之一標題指標。
-TimerNumElements:在該計時器佇列中的元件數量。
-TimerHeadTimeout:該標題元件之逾時的一快照。
-TimeDivider:該系統時脈之一預除器(prescaler)。
-TimerDividerCounter:該除法器之一倒數資源。
-TimerCounter:一32位元計數器資源單調地於每個預除時脈刻度上增加。
-TimerErrorAdjustCounter:用於聚集及容納錯誤的一32位元計數器。
若該TimerDivider暫存器被設為零,則計時器功能被關閉。
計時器佇列週期行為
第52圖說明在每個預除時脈脈動上發生的操作。該TimerHeadTimeout於沒有等待計時器式同步時(該計時器佇列位於一等待狀態中)不為零,因此不採取行動。當TimeHeadTimeout變成零時,且該計時器佇列不為空的時,該系統依據TimerErrorAdjustCounter之數值而採用兩種狀態之一。若該TimerErrorAdjustCounter為零,則TimerHeadTimeout之逾時已發生於此週期上且建立一計時器同步基本指令,其將最終造成自該計時器佇列(以及後勤目的之優先佇列)之一提取。緊接其後該TimerErrorAdjustCounter被單調(monotonically)增加直到其於一時間事件基本指令之處理已完成後被重置。
計時器佇列事件
有三種造成計時器佇列操作的事件:-一時間事件基本指令(C_TSPM_CMD_TIME_PRIMITIVE)-一線程推送事件伴隨一非零逾時(具有被設為零之逾時的線程並未被至於該計時器佇列中)-發生於一後勤實施而將一線程自該計時器佇列移除的一非計時器式同步事件。
第53圖說明該逾時邏輯之操作模式的一極基本表示。當在該等待狀態中該TimerHeadTimeout不為零且依據該預除時脈單調地降低。TimerErrorAdjustCounter在此狀態中被維持於零。當該TimerHeadTimeout到達零時,該計時器佇列之標題已逾時而該FSM轉換為提供提取操作之動態狀態。在此狀態中,TimerHeadTimeout為零而該TimerErrorAdjustCounter於每個週期上被單調地增加。此錯誤計數被用於判定執行一先前逾時事件所耗費的時間是否已造成後續逾時事件為適合的。一旦沒有進一步適合的逾時事件出現,該FSM轉換回該等待狀態中而該TimerErrorAdjustCounter被重置。
導出提取操作之一潛在計時器序列的第一者係從該線程描述項中的一重置逾時欄位所導出(參見第52圖)。此後,該TSPM必須評估後續提取是否為適合的,一額外資源TimerLastError為此被用於維持所有累積提取線程描述項逾時差異(deltas)的一總和。在該計時器佇列之後續成員的每個進階重複上,該TimerLastError係自該TimerErrorAdjustCounter去掉以建立一正規化錯誤計數,其與在該計時器佇列標題之新線程描述項的逾時相比較。若此線程中的逾時差異小於該正規化錯誤計數,此線程描述性亦應被提取。一開始該TimerLastError為零,因而該線程逾時差異被直接與該TimerErrorAdjustCounter相比較。第54圖說明該線程1逾時已經過且該相關提取操作已發生之後的先前計時器佇列結構。注意該TimerLastError已被該線程2差異更新,而該線程1提取操作之過程意指線程2現在亦為適合的。
第55圖說明該線程2之提取之後的佇列狀態。注意該線程2差異已被加入至TimerLastError而建立該線程描述項差異之總和的一執行中累積。注意線程2上的提取操作耗費一足夠時間長度,故線程3現在為適合的。
第56圖說明線程3之提取後的狀態。在此情形中該後續線程-線程4不適合於一提取,因而該計時器佇列之狀態可回到等待。該TimerHeadTimeout必須如圖被重置。
注意當自一動態狀態轉換回該等待狀態時,該TimerHeadTimeout必須被正確地重置。此藉由自該新時機佇列標題之差異除去該TimerErrorAdjustCounter以及該TimerLastError之間的差而達成。
當一新線程被導入或推送至該時機佇列時,必須考慮兩種情形:對該標題之一推送以及對該時機佇列之本體的一推送。
-對於對該標題之一推送而言,該TimerHeadTimeout被單純地設於該線程差異。當該佇列為非空的時,該舊標題描述項差異被設為該TimerHeadTimeout檢去該新線程差異。
-對於對該計時器佇列區塊之本體的一推送而言,區塊必須遍尋該計時器列表以識別在何處插入該線程描述項。該列表中次一者的差異隨後被調整以容納該新線程之差異的附加(該新線程差異係自該次一線程差異除去)。
提取操作
提取操作不論是由於一計時器或一外部事件同步事件均被相似地處理。考慮兩種情形:該線程提取之處位於該計時器佇列之開頭以及不在該處。在前者情形中有三種方案;其中該計時器佇列係位於該等待狀態中以及該計時器佇列係位於動態狀態。
-對於自一‘等待’計時器佇列之開頭的一提取操作而言,該TimerHeadTimeout被加入至該計時器佇列之次一成員的計時器差異以形成新的TimerHeadTimeout(注意在計時器式提取中TimerHeadTimeout之數值將總是為0)。
-對於自一‘動態’計時器佇列之開頭的一提取操作而言,且該TimerErrorAdjustCounter大於該次一線程描述項中的差異時-亦即該次一線程適於一計時器式同步,該錯誤計數器-TimerErrorAdjustCounter被重新置於該提取線程之差異的底部。
-對於自一‘動態’計時器佇列之開頭的一提取操作而言,且該TimerErrorAdjustCounter不大於該次一線程描述項中的差異時-亦即該次一線程不適於一計時器式同步,該差異由該錯誤計數器降低且以該結果更新該TimerHeadTimeout。
當該提取線程描述項不位於該計時器列表之開頭時,該計時器佇列中次一線程的差異必須由目前被移除之線程中的差異所降低。
除了用於等待及計時器佇列之連結列表狀態操作(取得及設置狀態)之外,該等待管理員表示以下命令於其介面上:同步基本指令(C_TSPM_CMD_SYNC_PRIMITIVE)呼叫端:TSIF,TSIC
該同步基本指令命令送出一控制封包,其釋放儲存於一等待佇列中的一封鎖線程描述項。該引數被說明於下:
增加線程至等待佇列。呼叫端:TSIF
此命令增加一線程描述項至一新的或一既有工作佇列。該命令藉由該工作佇列中一線程描述項之存在而被暗示該等待管理員。下表說明關於該命令之該線程描述項的欄位。
此命令僅傳送一標記線程至該排程管理員工作佇列。其被用於確保在一標記線程有造成一排程器拆卸(tear-down)之任何可能性時所有依賴線程已被該等待管理員所處理。
同步基本指令呼叫端:TSIF
此命令送出一同步基本指令至一特定等待佇列。以下引數被呈現於該命令結構中:
更新度量呼叫端:TSIF
此命令更新一封鎖線程之度量並造成該適當等待佇列的一重排(resort)。若該識別線程不再被封鎖,則該命令可被傳送至該TSSM。以下引數被表示於該命令結構中。
解鎖等待佇列呼叫端:TSIF
此命令解鎖一等待佇列,因而當其變成空的時,其可被釋放回該空閒列表。以下引數被表示於該命令結構中。
該輸出管理員管理該分派佇列結構-其參照該次一執行線程描述項-以及該目前執行線程的執行度量。
該TSOM之結構被集中於該分派佇列結構上,如第58圖所示。該輸出管理員維持分派佇列描述項之一列表,其中每個DQD係透過該ProcElementID欄位而與一系統處理資源實體相關。對於該DQD有兩群組之元件,該DQD緊密地整體參照該TSOM的功能。該第一群組-該執行中心元件
-含有該ProcElementID、度量0、度量1而預設度量0參照並被管理於該任務之執行狀態中。該第二群組-該準備佇列中心元件-含有該根排程器索引,該先佔索引以及該次先佔索引參照等待執行之線程的準備佇列結構。該TSOM亦管理該帶外傳信(典型地為一岔斷)至該系統中的處理資源實體以及從該準備佇列結構之線程描述項的提取。
下文為該分派佇列描述項中該執行中心元件之使用的一簡要描述:-ProcElementID-此為一靜態欄位,其儲存參照該分派佇列描述項所連接之處理資源實體的一索引。
-度量、1為動態更新欄位,其被用於儲存該目前執行中任務的度量(包括該‘閒置任務’以及潛在的各種電源降低狀態)
-預設度量0為用於支援一最佳化的一靜態欄位,藉以於推送該目前執行中線程回到該SystemWeaver伺服器因而定義上成為閒置時可自動儲存該閒置度量。
下文為該分派佇列描述項中該準備佇列中心元件之使用的一簡短描述。
-根排程器索引為對於與該分派佇列有關之排程根層的一靜態參照。
-該先佔索引為一動態欄位,其儲存用於一特定處理資源之次一執行的最適候選者。該先佔索引完全被管理於該TSOM之中且於適當處被設為一分派佇列事件之一結果。
-該次一先佔索引為一動態欄位,其儲存該排程階層式中的次一最適線程的一主層或該線程索引本身。該次一先佔索引僅被該TSSM設置且被用作為告知該TSOM該最適線程之準備佇列結構中的位置的一媒介。
分派佇列事件發生於兩原因:-一再排程事件:一分派佇列事件發生於該排程管理員(TSSM)中的一再排程操作在任何時間識別該分派佇列所需之狀態的一改變-即一先佔-時,典型地係由於處理一準備佇列事件(推送、提取或度量操作)。
-一分派佇列提取事件:該先佔索引所參照之線程索引已被該介面管理員(TSIF)所提取。此事件藉由該分派佇列描述項本身之中的一“分派佇列提取”旗標(由C_DISPATCH_DESC_POPPED_FLAG)而被傳信至該TSOM。
在一分派佇列提取事件的情形中,該提取線程轉換為該停滯狀態(參見第41圖),且若其並未出現於該處,則其被推回至該工作佇列中以供該TSSM釋放。此後該TSOM從該準備佇列階層式切斷該線程。
對於再排程及分派佇列提取事件兩者而言,一分派佇列事件之處理持續以起始該分派佇列描述項中的先佔索引的一重填(repopulation)。一般而言,若該次一先佔索引並非具有資格的一線程索引,則藉由自該次一先佔索引所識別之排程層下行該排程階層式而將其填入。一旦完成,該識別之線程索引被置於該先佔索引欄位中且自該準備佇列虛擬地提取該線程,亦即其從該準備狀態轉換為該提取狀態(參見第41圖)。此虛擬提取係藉由鎖定該最適線程、標記其為提取的並加入旗標於一事件回到該TSSM以供再排程而顯露。
在特定情形下,一分派佇列事件造成一岔斷。若該再填入先佔索引含有一有效線程描述項索引且該岔斷被啟動,則對於與此分派佇列相關之系統處理器的岔斷將被確立(asserted)於所有情形中-除非該早期岔斷確立旗標被啟動且該次一先佔索引為一線程,其中其將已被該TSSM所確立。
該分派佇列度量亦被更新。
雖然該分派佇列度量係表示目前執行線程的適合度,但該分派佇列係被先佔或者一分派佇列提取已發生。因此,該執行線程將被先佔(在此情形中該度量之更新最差為稍微過早的),或者一新線程正在執行且該分派佇列度量無論如何將被覆寫。
當一再排程已發生而已侵佔(usurp)一既有次一先佔索引時,該既有先佔索引必須被虛擬清理回該準備佇列結構中(參見第41圖)。在該TSOM中該線程僅被標記為清理的且被推回該TSSM工作佇列以供處理。
若無法找到一適合線程,則該操作便完成,該客戶端(處理資源)將於這些情形下閒置。
該分派佇列適合度度量反映目前在由ProcElementID所索引之處理資源實體上執行之任務的執行優先度。然而在特定最佳化中,該分派佇列適合度度量亦可反應將開始執行之任務的執行優先度。
該分派佇列優先度度量被用於控制先佔,其由於多種理由而加以操作:-開始一新任務-完成目前任務-優先度反轉-電源管理
在所有情形中該目的係調整準備佇列之排程的操作。當該更新造成一集區根節點之修改時,該節點被加入旗標至該TSSM以供一再排程操作。在集區參與者及非集區參與者中的度量傳遞的細節可參見前文。
作為一最佳化,當該處理資源實體推送該目前執行之線程回到SystemWeaver中的準備或封鎖狀態。該執行優先度被自動地重設至該預設度量。
除了在該分派佇列連結列表上的基本狀態操作之外(取得及設置狀態),該輸出管理員表示以下命令於其介面上:自動執行度量更新(C_TSOM_CMD_SERVICE_TIME_SLICE_EXPIRE)呼叫端:TSIF
此命令自動修改該識別處理器ID之分派佇列中保持之度量之度量0的最不重要位元。由於該引數為該處理器之識別而非該分派佇列描述項本身,故該命令一開始逐步進行該分派佇列描述項列表以找出適當的描述項。該修改僅為該最不重要位元的一單純反轉,假設該度量欄位之保留部分被適當地設置,此影響為降低該執行中線程的優先度,不論優先度係升冪或降冪的。
該引數被說明於下:
設置分派佇列度量呼掉端:TSIF(源自一專屬系統呼叫)
此命令設置一特定分派佇列的執行度量。以下引數被呈現於該命令結構中:
設置預設分派佇列度量呼叫端:TSIF
此命令設置一特定分派佇列之執行度量(0)為該預設數值,其亦被持有於該分派佇列中。對於此功能並無引數。
分派佇列事件(C_SCHED_ENTRY_DISPATCH_LIST)呼叫端:TSSM
此命令造成該分派佇列描述項於該準備佇列之一狀態改變需要時被更新。
該排程管理員管理該準備佇列結構之主層及子層連結中固有的排程選擇。
該TSSM為專門源自其工作佇列介面的供給命令(fed commands)且僅為事件驅動的。然而,特定行為為數個命令所共有,此行為被描述於下:
該再排程功能再評估該排程階層式中一定義點的排程選擇。該再排程操作為工作保留的,沒有額外的工作在其上被完成,且其係與階層式之部分有關,該階層式之狀態理解上可被一事件所影響。
對於該再排程功能具有一特別有趣的引數:UpdateRequired。UpdateRequired被用於在排程器層操作間傳遞更新狀態。舉例來說,雖然其他狀態仍須被管理,但不更新一子層中的選擇的一推送操作不需造成該主層中的一整體排程重複。在此情形中UpdateRequired可能為假。
第60圖說明一再排程操作的一基本流程。內層排程器(intratierscheduler)執行一層中的排程,且造成該主層標題索引指標的更新。層間排程器(intertierscheduler)縮放該排程階層式中的後續階層朝向該分派節點。注意該層間排程功能係以該主索引加以呼叫,因而立即縮放階層式之一階層。集區層間排程為一特殊情形排程演算法,其為自一單一節點、該集區根節點扇出(fanout)至多個節點、該集區靜態節點的唯一演算法
此章節之剩餘者描述該排程演算法之操作。
內層排程器
該最基本排程操作橫越一排程層中的元件的連結列表以識別何者為最適合且相應的更新該主層之標題指標。
在該普通情形中,當一適當描述項被推送至一空的排程層時,該主層之標題指標以及元件數量被無條件地更新且該度量被有條件地自該新子層傳遞(依據度量傳遞運算子)至該主層。
第61圖說明一推送操作之更一般情形。該目前選擇之適合度以及該候選者選擇為數個因素之一組合:-該選擇必須具有可被排程之內容。對於一線程而言此總是為真,但對於一排程器而言此係依據其從屬階層式之內容。
-若該描述項為一排程器,其必須為非靜止的,且其無效選擇旗標必須不被設置。。
-若該描述項為一標準線程,其必須為未鎖定的,或者其必須位於一工作佇列中。
-若該描述項為一標記線程,該主層總依賴計數必須為零,且該標記線程必須為留在該層中的唯一登錄。
注意該候選者僅與該目前選擇-源自一先前排程操作之最適描述項相比較,若該候選者擊敗該優勝者,則其必須為新的優勝者。如前所述,“排程對”係與該主排程層中具有的演算法有關。該“更新主層”變數攜帶一指令回到該呼叫端,而此層之主層亦應由於此操作而被更新。
在一再排程之一般情形中,例如當度量已被更新時,或者當一提取已發生時,該整個階層必須被重新更新以找出該新的最適候選者。此處理透過第61圖之操作進行數次直到整個階層已被重新評估,如第62圖所示。
層間排程
層間排程於每個排程器層執行一次,其於每個排程事件可總計為數次。層間排程高度依賴該主層之類型。概括言之,層間排程持續呼叫內層排程直到該主層成為一分派佇列。此具有之一例外為遭遇一集區分配節點時。
第63圖說明層間排程的基本流程。具有一唯一行為與一分派佇列描述項(DQD)主層及一集區根節點(PRN)主層有關。然而在其他情形中,該層間排程器僅以該目前主層取代該目前子索引(藉以向上重複該排程階層式)以及自我重新呼叫。
第64圖說明處理於該層間排程常式中的分派佇列。首先,該分派佇列描述項(DQD)中含有之執行度量依據該DQD中定義之演算法對於該排程器根節點中具有之度量而被加以排程。若此操作判定需要一先佔,則依據開始該再排程操作之事件類型而實施一更新至該DQD次一先佔索引。若此事件為一線程推送,則該排程線程索引被直接置於該次一先佔索引欄位,否則使用該排程器根節點索引。其隨後落於該TSOM上以重複該排程階層式以找出該線程描述項。
集區層間排程
集區層間排程被用於識別該相關處理資源實體之何者-若有任一者的話-應被選擇以供服務該目前集區中具有之一線程描述項。在該情形中其以一獨特方式操作,由於不像此處描述之所有其他排程演算法,其典型地搜尋最不適合候選者。
第66圖說明透過一集區層間排程操作的流程,由第65圖加以圖形化表示。該初始內層排程操作判定源自該排程階層式之候選者是否較該執行任務之任一者更為適合,如該集區分配層中的集區靜態節點中具有之度量所指示。具有兩種結果,分別為是否需要一更新的一指示以及必須應用該更新之節點的識別。
該演算法隨後進行以重複於該整體集區分配層周圍,其開始於該集區根節點之適當“次一指標”所指示之集區靜態節點。
在每個重複中以及管理內勤功能時(例如線程計數器以及其他狀態之維護),在該集區附加層上呼叫層間排程。通常情形中層間排程持續向上前進該整體排程階層式直到其到達該分派節點。層間排程採用一引數“update required”,其指示進一步排程層是否應完全再評估該排程選擇。此旗標在兩種情形下被設置於集區間排程之內容中:-目前被處理之集區靜態節點為被內集區排程識別為在該集區根節點下處理該最適線程的最適節點。
-該集區根節點下的階層不具有任何適合的排程候選者。
內集區層排程
第67圖說明內集區層排程的流程。在該第一實體中具有一最佳化,其降低僅推送
(push only)操作的排程時間-此增進該系統對新任務成為可用的反應度。
假設此並非一專屬推送操作,該排程操作設置該目前選擇以及候選者選擇至該集區中的頭兩個PSN節點。在每個重複上,對於該候選者排程該目前選擇。注意該相同排程演算法被用於集區分佈層作為其他排程層,然而由於在此方案中該正確選擇係以正規標準顯示該最不適合度量,故選擇的個別演算法可為不同的。
若該候選者指揮該目前選擇,亦即該目前選擇被更新至該候選者,則該候選者被更新至該層中的次一登錄且該處理持續直到該候選者成為該PRN。
在一專屬推送操作中避免此重複。該目前選擇及更新節點被單純設置至該PRN之主層(其定義該目前排程選擇),且該候選者為該PRN本身。
在所有情形中該集區根節點隨後被檢查可排程內容,若無,則“無更新”狀態被設置且該演算法返回。然而若有可排程內容,該處理持續至該第二階段,藉此源自該PRN之既有選擇(在專屬推送操作中)或者該重複之結果(在其他情形中)被對於該PRN本身加以排程。若該PRN贏得此競爭則需要一更新,反之則否。
第68圖說明與一線程描述項(節點#5)推送至一靜態排程元件(節點#3)有關的TSSM排程器處理。該第一內層排程操作發生於該再排程功能之內容中且係與該主節點#3有關。再排程隨後向上移動該階層式之一層級且利用該主節點#2呼叫層間排程。緊接其後該重複找出該主節點#1,其為一DQD。因此沒有進一步對於該內層排程器之呼叫且一排程比較於該根節點中儲存之最適候選者之度量與該分派節點中儲存之執行線程之間完成。在此情形中,一先佔為適合的且一分派佇列事件被通信至該TSOM。
第69圖說明一更階層式的排程階層式。此處建立對該內層排程功能的一額外呼叫用於該階層式之額外階層。注意即使如此,該排程層5及3保持未受影響的,由於造成該再排程操作之排程事件超出其範圍。
第70圖提供一第三範例,其為一集區排程操作之情形。如前所述,該線程推送事件發生於其中的該階層受到一內層排程操作。在此範例中,該新線程最適合於該集區根層中。該內集區層排程器隨後建立一呼叫至該內集區層排程器以判定該系統處理資源之任一者是否應被該新到達線程先佔。在此情形中,內集區層排程的結果為與在WME索引7之分派佇列描述項有關之處理資源實體應被先佔。
內集區層排程隨後重複於該集區分配層周圍,首先呼叫節點4上的內層排程。隨後內層排程呼叫內層排程以更新排程器層1,即使由於此並非該先佔層而不需完全排程-處理限於狀態資訊之維護,因此對於該TSOM沒有分派佇列事件,亦沒有對於該系統處理資源的岔斷。
該次一呼叫為第2層上的層間排程。在此情形中該層被適當地排程以建立該新推送之線程描述項是否較任何其他候選者更為適合。該候選者度量最終被與該些儲存於該分派佇列描述項中的執行中線程以判定一先佔是否為適當的。在此範例中確實如此,因此一分派佇列事件被傳送至該TSOM且該系統處理資源實體岔斷被加上旗標。
再者,僅有該些被該推送線程事件之範圍所觸及的排程層被再評估。
透過該工作佇列專門地引導該TSSM。
服務線程描述項事件呼叫端:TSIF、TSPM、TSOM
此命令之行為係依賴該接收線程之旗標中的設定:-若該推送或清理旗標被設置,則該主層之總線程元件計數被增加。若該提取旗標被設置,則其被降低(注意該之一組合的淨效果可為NULL)。
-已設置推送旗標的線程隨後被連結至該準備佇列階層式中。當其已自該封鎖狀態轉換時,該依賴線程之主層計數亦被降低。
-專屬於標記線程之為一行為係該主層之解鎖(轉換該排程器層為該“免等待”狀態-參見第42圖)。
-該TSSM於處理此命令時請求在該停滯狀態中接收之任何線程描述項被釋放。
此命令總是請求一再排程。
再排程集區分配層呼叫端:TSOM
此命令係由於一執行中線程之度量中的一改變而被呼叫。當該分派描述項參與一集區中時,這些度量被傳遞通過該分配階層式而最終呼叫此功能以再評估該排程選擇。
再排程或刪除排程器層呼叫端:TSOM
此命令係由TSOM基於兩原因而被呼叫:-由於一執行中線程之度量中的一改變,其中該分派描述項並未參與一集區中,以再評估一先佔是否為適當的。此操作傳送一排程根節點。當該排程器含有線程描述項於其階層式中時,一再排程被請求。
-為了刪除一排程層,其中該TSOM以判定適合如此。此判定係依據該鎖定旗標、依賴線程計數以及子元件之數量(分別為不實的、0及0)該描述項之虛擬釋放自我表示為對該TSIM之一請求。
推送一獨立元件呼掉端:TSIF
此命令可被用於初始化過程中以推送靜態排程層至該排程階層式中,或者可於執行時被動態地用於增加線程描述項或動態排程階層式。
更新線程度量呼叫端:TSIF
更新該準備佇列階層式中的一線程描述項的度量。度量可僅於該線程描述項位於該準備狀態中而加以更新(第41圖)
此命令造成一再排程。
更新排程器狀態呼叫端:TSIF
此命令提供排程器演算法、度量以及度量傳遞演算法的更新。該命令造成一再排程。
啟動排程器層呼叫端:TSIF
此命令啟動一靜止排程器層。該命令造成一再排程。
撤銷排程器層呼叫端:TSIF
此命令撤銷一靜止排程器層。
該記憶體管理員(第71圖)提供多工/去多工行為以供聚集對該TCM之存取。其亦提供鎖定能力以確保在多個子區塊間分享之資源的完整度。
從一結構觀點看來,該記憶體管理員主要可被視為一多工/去多工,其聚集該六個可能請求者中對於該TSM的存取。其亦維持WMEs的完整度,其中多個子區塊藉由實施一區塊快取而嘗試存取該相同資源。
存取聚集係由一排程器所控制。此排程器為非對稱的:-TSIF具有最高優先度-TSOM具有次一最高優先度-所有剩餘請求者具有相同優先度,且被處理於一工作保留循環排序分配中。
每個區塊具有一與四個鎖定之間的一分配。這些數量表示該子區塊請求者對於WMEs可具有專屬存取的數量。請求一鎖定資源的一子區塊被封鎖直到該資源成為可用的。圍繞於該相同資源上的多個區塊之間的爭用係由優先度所解決。
第72圖的順序圖說明一推送事件之後的子區塊間互動。注意該工作佇列於該TSSM及TSOM本身為單一線程時已被導入以儲存命令。請參照第68圖的一代表性排程階層式。
在該推送事件之前的狀態為線程#4係分派佇列描述項#1之中的目前先佔索引。該第一再排程識別線程#5較線程#4更適合,由於分派佇列描述項#1被推送至該TSOM工作佇列中。
在該TSOM工作佇列中的一分派佇列描述項造成一分派佇列事件於該TSOM中。此事件虛擬地推送線程描述項#5並相應地設置分派佇列度量。此推送操作造成該準備佇列中的一狀態改變,因而一再排程必須被呼叫。此藉由推送線程#5至已設置推送旗標之TSSM工作佇列中而達成。
由於線程#4先前已被虛擬地推送,現在期需要被清理回到該準備佇列結構中。此亦構成該準備佇列結構中的一狀態改變,因而需要另一再排程。此藉由推送線程#4至已設置清理旗標之TSSM準備佇列結構中而達成。
注意該第二及第三再排程操作無法被合併為該虛擬推送線程,且該清理線程可位於該準備佇列階層式之大量區別部分中。
第73圖中的順序圖說明一線程描述項自該“虛擬”分派佇列被推送時該TSIF、TSOM及TSSM之間的互動。
該推送命令本身係由該TSIF在該命令介面或系統互連上被接收。該TSIF藉由推送該分派佇列描述項至已設置該推送旗標之TSOM上而送出一分派佇列推送命令至該TSOM。
該TSOM工作佇列中的該分派佇列描述項造成一分派佇列事件於該TSOM中。該分派佇列事件控制器指示該TSSM請求剛已被推送之線程描述項,在此情形中線程#5被置回該空閒列表上。儲存用於執行之次一最適候選者的次一先佔索引隨後被該TSOM虛擬地推送。此表示該準備佇列結構之一狀態改變,因而該TSSM被指示由該TSOM再排程-該次一先佔線程被通送已以設置該推送旗標之TSSM工作佇列中。
第1圖顯示一任務狀態圖,其近似於在SystemWeaver中所實作之一者,其用於在一多核心系統中任務或線程的管理。
第2圖顯示排程點及關於其所形成之該等佇列點的表示圖。
第3圖顯示一軟體客戶端填隙之主要元件。
第4圖顯示該System Weaver客戶端在動作中之一狀態圖。
第5圖顯示一概念排程架構。
第6圖顯示一排程器階層體系圖。
第7圖顯示一範例排程錐形實作。
第8圖顯示一典型處理資源集區組態。
第9圖顯示在一任務描述項內所呈現的排程度量。
第10圖顯示用於具有一單一處理資源實體之一單一處理器的組態以及其強制排程根節點。
第11圖顯示一更具代表性之排程架構,其用於一單一處理資源實體。
第12圖顯示該等FIFO排程層(tier)之一的細部檢視圖。
第13圖顯示用於含有兩處理資源實體之一集區之此類型架構的表示圖。
第14圖顯示位於一處理資源參與兩集區之一範例架構。
第15圖顯示包含五處理資源實例及兩分配集區的一組態。
第16圖顯示排程分析、策略及運算子。
第17圖顯示在一基礎排程階層體系上對於一事件之重新排程範圍。
第18圖顯示用於一單一兩實體處理資源集區之再排程範圍。
第19圖顯示用於一單一推送操作之再排程範圍。
第20圖顯示如第18圖中所示之推送事件的結果所發生般,該再排程之順序圖。
第21圖顯示在處理資源集區中之度量傳遞。
第22圖顯示該運行狀態之兩部分;正規的及反對的。
第23圖顯示一典型時間片段組態。
第24圖顯示一任務優先度差異圖。
第25圖說明具有一單一處理器及三時間片段任務之情形。
第26圖說明如第25圖般的相同情境,但是具有兩處理器。
第27圖說明具有三處理器、三時間片段任務及一先佔任務之情形。
第28圖顯示分配層排程。
第29圖顯示當時間在一使用向上優先權之閒置狀態中流逝時,一處理資源實體(PRI)之「執行優先權」。
第30圖顯示一重新組態管理結構。
第31圖顯示一範例SystemWeaver系統結構。
第32圖顯示用於最小內容猛移(thrashing)之排程器群組化。
第33圖顯示一範例滯後排程組態。
第34圖顯示根據第33圖之範例,滯後式排程之模擬結果。
第35圖顯示一範例混合排程演算法。
第36圖顯示對該等排程圖之關鍵。
第37圖顯示一根據本發明之系統。
第38圖顯示在該核心周圍上所尋得之介面群組。
第39圖顯示該SystemWeaver伺服器實體之主要邏輯組件。
第40圖顯示該SystemWeaver結構之主要子方塊。
第41圖顯示該SystemWeaver內部線程概念圖。
第42圖顯示一SystemWeaver排程器層狀態圖。
第43圖顯示該線程排程器介面管理器主要輸入及輸出。
第44圖顯示於每週期之監看岔斷控制的流程圖。
第45圖顯示於每個系統時脈週期時,在該線程排程器介面管理器內部之時間片段支援邏輯的行為。
第46圖顯示一動態計時器週期流程圖。
第47圖顯示該線程排程器輸入管理器主要輸入及輸出。
第48圖顯示該線程排程器輸入管理器內部結構。
第49圖顯示該線程排程器擱置管理器主要輸入及輸出。
第50圖顯示該線程排程器擱置管理器擱置序列架構。
第51圖顯示該暫停佇列之基本架構。
第52圖顯示一動態時脈週期流程圖。
第53圖顯示該暫停邏輯之操作模式的基本表示圖。
第54圖顯示在線程1之提取後,一基本計時器佇列架構。
第55圖顯示在線程2之提取後,一基本計時器佇列架構。
第56圖顯示在線程3之提取後,一基本計時器佇列架構。
第57圖顯示該線程排程器輸出管理器主要輸入及輸出。
第58圖顯示該線程排程器輸出管理器內部結構。
第59圖顯示該線程排程器排程管理器主要輸入及輸出。
第60圖顯示一再排程操作之基本流程。
第61圖顯示一單通排程操作。
第62圖顯示用於提取及一般排程操作之內層排程。
第63圖顯示層間排程之基本流程。
第64圖顯示在該層間排程例式中之分派佇列處理。
第65圖顯示在集區間排程中重複集區分配。
第66圖顯示通過第65圖之集區間層排程操作的流程。
第67圖顯示集區間層排程之流程。
第68圖顯示一基本排程階層體系順序圖。
第69圖顯示一串接式排程階層體系順序圖。
第70圖顯示一集區式排程階層體系順序圖。
第71圖顯示該線程排程器排程管理器主要輸入及輸出。
第72圖在一推送事件中於該線程排程器輸出管理器及線程排程器排程管理器之間的互動。
第73圖顯示在一提取事件中於該線程排程器介面管理器、線程排程器輸出管理器及線程排程器排程管理器之間的互動。
第74圖顯示該SystemWeaver伺服器子區塊間工作佇列結構。
Claims (43)
- 一種在一多核心處理器中排程可執行交易(transaction)的方法,該多核心處理器具有複數個處理器元件,該方法至少包含以下步驟:提供一分配佇列,該分配佇列依照可執行交易之執行適合度的順序來列出可執行交易;提供複數個獨立可執行交易排程器,其中每個獨立可執行交易排程器包括一排程演算法,以從數個準備執行之候選可執行交易中判定用於執行之最適(most eligible)可執行交易;將該等排程器一併連結以便提供一多層(multilevel)排程器;自該多層排程器輸出該最適可執行交易至該分配佇列;提供複數個分派(dispatch)佇列,該複數個分派佇列包含用於每一處理器元件之一分派佇列,其中每一分派佇列係依照在該個別處理器元件上之執行的順序來列出該等可執行交易;使該分配佇列與該複數個分派佇列之一或多者相關聯;及將該分配佇列之內容輸出至該等相關分派佇列之一或多者。
- 如申請專利範圍第1項所述之方法,其中該多層排程器具有一階層式結構。
- 如申請專利範圍第1或2項所述之方法,其中該等可執行交易之某些或全部共同定義一應用程式,該方法更包含以下步驟:在該應用程式之一執行期過程中開始可執行交易的執行,在該執行期過程中動態地建立一新的獨立可執行交易排程器;及連結該新的獨立可執行交易排程器至該多層階層式排程器。
- 如申請專利範圍第3項所述之方法,其中該用於每一獨立可執行交易排程器之排程演算法包含至少一個規則,以將該等可執行交易排序成最適合在該複數個處理器元件之一或多者上執行之交易的順序。
- 如申請專利範圍第4項所述之方法,其中該連結一新的動態建立之獨立可執行交易排程器的步驟至少包括以下步驟:指派(assign)一或多個準備執行之可執行交易至該新的獨立可執行交易排程器。
- 如申請專利範圍第4項所述之方法,更包含以下步驟:在由一動態建立之獨立可執行交易排程器所標記之所有該等可執行交易處理完成時,斷連(unlink)該動態建立之獨立可執行交易排程器;及自該多層階層式排程器移除該獨立可執行交易排程器。
- 如申請專利範圍第1項所述之方法,更包含以下步驟:提供至少一等待佇列以將該等候選可執行交易提供至該複數個獨立可執行交易排程器。
- 如申請專利範圍第1項所述之方法,其中,該分配佇列係與該複數個處理器元件之一者相關聯,且其中該輸出步驟包含直接將該分配佇列之該等內容輸出至該一相關處理器元件之該分派佇列中。
- 如申請專利範圍第1項所述之方法,其中,該關聯步驟包含使該分配佇列與該複數個處理器元件中之至少一些相關聯,且其中該輸出步驟包含輸出該分配佇列之該等內容至該等相關處理器元件的該等分派佇列之一或多者,該輸出該分配佇列之該等內容至該等相關處理器元件的該等分派佇列之一或多者 之步驟係依賴與該分派佇列相關之該處理器元件的該適合度以執行該等可執行交易之一者,以便提供一處理器元件集區(pool)。
- 如申請專利範圍第9項所述之方法,更包含以下步驟:提供一第二分配佇列,及輸出該第二分配佇列的內容至該處理器元件集區之該等分派佇列中的一者。
- 如申請專利範圍第9或第10項所述之方法,更包含以下步驟:提供一另一個分配佇列;及藉由關聯該另一個分配佇列至一另一複數個處理器元件並輸出該另一分配佇列之該等內容至該等相關處理器元件之該等分派佇列的一或多者,以提供一另一之處理器元件集區,該輸出該另一分配佇列之該等內容至該等相關處理器元件之該等分派佇列的一或多者之步驟係依賴與該分派佇列相關之該處理器元件的該適合度以執行該等可執行交易之該者及/或另一者。
- 如申請專利範圍第9項所述之方法,其中該一相關處理器元件執行該等可執行交易之該者及/或另一者的適合度係視該處理器元件之忙碌狀態而定。
- 如申請專利範圍第12項所述之方法,其中該一處理器元件之忙碌狀態係視已位於用於該相關處理器元件之該分派佇列中的可執行交易數量而定,以執行該等可執行交易之該者。
- 如申請專利範圍第9項所述之方法,其中該一相關處理器元件執行該等可執行交易之該者及/或另一者的適合度係視該處理器元件之電源狀態而定。
- 如申請專利範圍第11項所述之方法,其中該等處理器元件之一或多者係位於多個處理器元件集區中。
- 如申請專利範圍第11項所述之方法,更包含在處理器元件集區間移動可執行交易的步驟。
- 如申請專利範圍第1項所述之方法,更包含以下步驟:提供至少一可執行交易時間片段(timeslice)群組,該時間片段群組係與該等處理器元件之一者有關,且在該時間片段群組中的每個可執行交易皆具有一部分在該相關處理器元件上的執行時間。
- 如申請專利範圍第9項所述之方法,更包含以下步驟: 提供至少一可執行交易時間片段群組,該時間片段群組係與一處理器元件集區有關,且在該時間片段群組中的每個可執行交易皆具有一部分在該相關處理器元件集區上的執行時間。
- 如申請專利範圍第17或18項所述之方法,更包含以下步驟:針對每一可執行交易時間片段群組提供一可執行交易先佔(pre-emption)群組,該可執行交易先佔群組針對該可執行交易時間片段群組的任一者取得在該相關處理器元件或處理器元件集區上的執行優先權。
- 如申請專利範圍第19項所述之方法,更包含以下步驟:當該可執行交易先佔群組在該相關處理器元件集區的該等其他處理器元件之至少一者上正準備被執行時,針對該至少一可執行交易時間片段群組提供一部分在該相關處理器元件集區的至少一該等處理器元件上的執行時間。
- 如申請專利範圍第20項所述之方法,更包含以下步驟:使來自該至少一時間片段群組之一可執行交易在一相關處理器元件上執行;使該可執行交易向來自於該先佔群組之一可執行 交易屈服;及當該先佔群組之該可執行交易的執行已完成時,恢復來自該相關處理器元件上該至少一時間片段群組之該可執行交易的執行。
- 如申請專利範圍第9項所述之方法,其中在一處理器元件集區中的各個處理器元件具有至少一省電模式,且該方法更包含以下步驟:當被配置於該處理器元件集區的可執行交易之數量中僅有該等可用處理器元件之一部分係用於執行可執行交易時,則將在一處理器元件集區中的該等處理器元件之一或多者置於一第一省電模式。
- 如申請專利範圍第22項所述之方法,其中在該處理器元件集區中的每個處理器元件具有至少兩種省電模式,且該方法更包含以下步驟:在一時間期間之後,將在該處理器元件集區中的該等處理器元件之該一或多者或在該處理器元件集區中的該等處理器元件之另一者或另外多者置於一第二省電模式中,其中該第二省電模式較該第一省電模式節省更多電力。
- 如申請專利範圍第22或23項所述之方法,其中以一順 序配置在該處理器元件集區中的該等處理器元件,且該用於將可執行交易配置至在該處理器元件集區中的處理器元件的排程演算法總是依照該順序將可執行交易配置至該第一可用處理器元件。
- 如申請專利範圍第22項所述之方法,更包含以下步驟:因應於分配至該處理器元件集區的可執行交易之數量增加,將目前處於一省電模式之該處理器元件集區中的該等處理器元件之一或多者返回到一正規電源模式。
- 如申請專利範圍第22項所述之方法,其中藉由增加該處理器元件將執行之可執行交易的最小執行優先權,而予以啟始該至少一省電模式。
- 如申請專利範圍第1項所述之方法,更包含以下步驟:識別該等可執行交易之至少一者以及該多核心處理器的一改變;及依據該識別改變之結果,針對一獨立可執行交易排程器由準備執行之該數個候選可執行交易中再判定用於執行之該最適可執行交易
- 如申請專利範圍第27項所述之方法,其中針對該識別 改變所影響之該複數個獨立可執行交易排程器之每一者執行該再判定之步驟。
- 如申請專利範圍第1項所述之方法,其中在該多核心處理器中的至少一處理器元件含有可重新設置(reconfigurable)邏輯,該可重新設置邏輯可於執行期過程中加以重新設置,該方法更包含以下步驟:針對可重新設置邏輯之每個組態提供可執行交易的一組態佇列,該組態佇列列出準備執行之可執行交易,且該組態佇列係經配置於該可重新設置處理器元件之一組態;輸出與目前被選擇至該可重新設置處理器元件以供執行之組態實體(instance)有關之組態佇列的內容;及當達到在必須執行該等可執行交易之一者以維護該應用程式之完整性之前的一可允許最大時間時,切換該目前被選擇的組態實體。
- 如申請專利範圍第29項所述之方法,其中該切換該組態實體之步驟更包含以下步驟:停止與該目前被選擇之組態有關之該組態佇列之該等內容的輸出;選擇該等可用組態實體之另一者,並將該可重新 設置邏輯之該組態改變成為該被選擇之該等可用組態實體的另一者;及輸出與該新選擇之組態實體有關之該組態佇列的該等內容至該可重新設置處理器元件以供執行。
- 如申請專利範圍第29或30項所述之方法,其中該可重新設置邏輯係為一記憶體。
- 如申請專利範圍第30項所述之方法,其中該另一組態實體之選擇係視該等配置佇列之每一者的長度而定。
- 如申請專利範圍第32項所述之方法,其中選擇與該最長組態佇列有關之組態實體。
- 如申請專利範圍第1項所述之方法,其中至少兩種不同的排程演算法被該複數個獨立可執行交易排程器所使用。
- 如申請專利範圍第34項所述之方法,其中該等使用之排程演算法可包括:先進先出(First In First Out)排程;優先權式(Priority Based)排程;循環排序(Round Robin)排程;或加權公平佇列(Weighted Fair Queuing Scheduling)排程。
- 如申請專利範圍第1項所述之方法,其中在該多核心處理器中的可執行交易的控制及/或配置係使用一專屬記憶體中的指標而加以執行,該等指標參照含有包含該等可執行交易之指令的一主記憶體。
- 如申請專利範圍第36項所述之方法,其中該等分配佇列或分派佇列係為儲存於該專屬記憶體中之指標的一連結集合。
- 如申請專利範圍第36或37項所述之方法,其中該等指標包括複數個可執行交易參數,該等可執行交易參數依據所作出的是哪些排程決定來定義該等可執行交易的特性,且其中該等可執行交易參數係用於排程可執行交易。
- 如申請專利範圍第38項所述之方法,其中該等排程演算法隨著時間控制該等參數。
- 如申請專利範圍第38項所述之方法,其中該複數個可執行交易參數包括一第一可執行交易參數子集合及一第二可執行交易參數子集合,且其中該第二可執行交易參數子集合僅於該第一可執行交易參數子集合位於一 組態中的時候被利用。
- 一種含有指令之電腦程式,當該等指令被數位邏輯所執行時,會執行如申請專利範圍第1至35項之任一者所述之方法。
- 一含有指令之電腦可讀取媒體,當該等指令被一電腦執行時,會執行如申請專利範圍第1至35項之任一者所述之方法。
- 一種多核心處理器,該多核心處理器包含:複數個處理器元件;一分配佇列,該分配佇列依照執行適合度的順序來列出可執行交易;一多層排程器,該多層排程器包含複數個獨立可執行交易排程器,其中每一獨立可執行交易排程器包括一排程演算法,該排程演算法係用於從數個準備執行之候選可執行交易中判定用於執行之最適可執行交易;其中,該等排程器係連結在一起,且該多層排程器係經配置以從該多層排程器中輸出該最適可執行交易至該至少一分配佇列;及複數個分派佇列,該複數個分派佇列包含用於每一處理器元件之一分派佇列,每一分派佇列係依照在 該個別處理器元件上之執行適合度的順序來列出該等可執行交易;且其中,該分配佇列係與該複數個分派佇列之一或多者相關,且該分配佇列係經配置以輸出該等分配佇列之內容至該等相關聯分派佇列之一或多者。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB0519981.5A GB0519981D0 (en) | 2005-09-30 | 2005-09-30 | Scheduling in a multicore architecture |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200802098A TW200802098A (en) | 2008-01-01 |
TWI420394B true TWI420394B (zh) | 2013-12-21 |
Family
ID=35395089
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102118987A TWI489391B (zh) | 2005-09-30 | 2006-09-29 | 用於多核心架構之排程的方法、電腦程式、及電腦可讀取媒體 |
TW095136470A TWI420394B (zh) | 2005-09-30 | 2006-09-29 | 用於多核心架構之排程的方法、電腦程式、及電腦可讀取媒體 |
TW102118985A TWI474261B (zh) | 2005-09-30 | 2006-09-29 | 用於多核心架構之排程的方法、電腦程式、及電腦可讀取媒體 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102118987A TWI489391B (zh) | 2005-09-30 | 2006-09-29 | 用於多核心架構之排程的方法、電腦程式、及電腦可讀取媒體 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102118985A TWI474261B (zh) | 2005-09-30 | 2006-09-29 | 用於多核心架構之排程的方法、電腦程式、及電腦可讀取媒體 |
Country Status (7)
Country | Link |
---|---|
US (6) | US8732439B2 (zh) |
EP (3) | EP1770509A3 (zh) |
JP (3) | JP5311732B2 (zh) |
KR (2) | KR101369352B1 (zh) |
CN (1) | CN1955931B (zh) |
GB (1) | GB0519981D0 (zh) |
TW (3) | TWI489391B (zh) |
Families Citing this family (208)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9038070B2 (en) | 2004-09-14 | 2015-05-19 | Synopsys, Inc. | Debug in a multicore architecture |
US7861060B1 (en) * | 2005-12-15 | 2010-12-28 | Nvidia Corporation | Parallel data processing systems and methods using cooperative thread arrays and thread identifier values to determine processing behavior |
US7865894B1 (en) * | 2005-12-19 | 2011-01-04 | Nvidia Corporation | Distributing processing tasks within a processor |
EP1936502B1 (en) * | 2006-12-19 | 2010-06-16 | Saab Ab | A method for ensuring backup function to an electrical system in a vehicle and an electrical system as such |
CN100458707C (zh) * | 2007-04-05 | 2009-02-04 | 杭州华三通信技术有限公司 | 实现用户配置的方法、系统及主核和从核 |
CN101039282B (zh) * | 2007-05-14 | 2010-06-02 | 中兴通讯股份有限公司 | 一种对流入cpu系统的报文的流量管理方法 |
KR100801630B1 (ko) * | 2007-06-15 | 2008-02-05 | 디비코 주식회사 | 멀티코어 프로세서를 이용한 분산 디코딩 처리 장치 및방법 |
US8327363B2 (en) | 2007-07-24 | 2012-12-04 | Microsoft Corporation | Application compatibility in multi-core systems |
US8544014B2 (en) | 2007-07-24 | 2013-09-24 | Microsoft Corporation | Scheduling threads in multi-core systems |
US8055822B2 (en) * | 2007-08-21 | 2011-11-08 | International Business Machines Corporation | Multicore processor having storage for core-specific operational data |
US9002872B2 (en) * | 2007-10-30 | 2015-04-07 | Novell, Inc. | Techniques for parallel processing of directory searches |
KR100962531B1 (ko) * | 2007-12-11 | 2010-06-15 | 한국전자통신연구원 | 동적 로드 밸런싱을 지원하는 멀티 쓰레딩 프레임워크를 수행하는 장치 및 이를 이용한 프로세싱 방법 |
KR100958303B1 (ko) | 2007-12-12 | 2010-05-19 | 한국전자통신연구원 | 멀티코어 시스템 환경에서 내부 코어 간 통신채널을 이용한 모듈 디바이스의 동적 적재 및 실행을 통한 부하 균등화 시스템 및 방법 |
KR101013073B1 (ko) * | 2007-12-17 | 2011-02-14 | 한국전자통신연구원 | 태스크 분배 및 병렬 처리 시스템과 그 방법 |
US8276143B2 (en) * | 2008-03-10 | 2012-09-25 | Oracle America, Inc. | Dynamic scheduling of application tasks in a distributed task based system |
US8520571B2 (en) | 2008-03-26 | 2013-08-27 | Qualcomm Incorporated | Reconfigurable wireless modem sub-circuits to implement multiple air interface standards |
US8458380B2 (en) * | 2008-03-26 | 2013-06-04 | Qualcomm Incorporated | Off-line task list architecture utilizing tightly coupled memory system |
US8787433B2 (en) * | 2008-03-28 | 2014-07-22 | Qualcomm Incorporated | Wall clock timer and system for generic modem |
US20090254319A1 (en) * | 2008-04-03 | 2009-10-08 | Siemens Aktiengesellschaft | Method and system for numerical simulation of a multiple-equation system of equations on a multi-processor core system |
US8488500B2 (en) | 2008-05-02 | 2013-07-16 | Dhaani Systems | Power management of networked devices |
US8561072B2 (en) * | 2008-05-16 | 2013-10-15 | Microsoft Corporation | Scheduling collections in a scheduler |
US7861027B2 (en) * | 2008-05-30 | 2010-12-28 | Intel Corporation | Providing a peripheral component interconnect (PCI)-compatible transaction level protocol for a system on a chip (SoC) |
US8156289B2 (en) * | 2008-06-03 | 2012-04-10 | Microsoft Corporation | Hardware support for work queue management |
WO2009153620A1 (en) * | 2008-06-19 | 2009-12-23 | Freescale Semiconductor, Inc. | A system, method and computer program product for scheduling a processing entity task |
US8850446B2 (en) | 2008-06-19 | 2014-09-30 | Freescale Semiconductor, Inc. | System and method for using a task starvation indication to prevent starvations of tasks in a multiple processing entity system |
US9058206B2 (en) | 2008-06-19 | 2015-06-16 | Freescale emiconductor, Inc. | System, method and program product for determining execution flow of the scheduler in response to setting a scheduler control variable by the debugger or by a processing entity |
US20110099552A1 (en) * | 2008-06-19 | 2011-04-28 | Freescale Semiconductor, Inc | System, method and computer program product for scheduling processor entity tasks in a multiple-processing entity system |
CN101299194B (zh) * | 2008-06-26 | 2010-04-07 | 上海交通大学 | 基于可配置处理器的异构多核系统线程级动态调度方法 |
US8250579B2 (en) * | 2008-06-27 | 2012-08-21 | Oracle America, Inc. | Method for stage-based cost analysis for task scheduling |
CN100568247C (zh) * | 2008-07-22 | 2009-12-09 | 中国科学院计算技术研究所 | 一种满足systemC语法的多核处理器的事件处理单元组 |
US20100058086A1 (en) * | 2008-08-28 | 2010-03-04 | Industry Academic Cooperation Foundation, Hallym University | Energy-efficient multi-core processor |
US8261117B2 (en) | 2008-09-11 | 2012-09-04 | International Business Machines Corporation | Virtualization in a multi-core processor (MCP) |
JP5229326B2 (ja) * | 2008-09-24 | 2013-07-03 | 富士通株式会社 | マルチコアcpuにおける消費電力制御方法,消費電力制御プログラム及び情報処理システム |
US8732716B2 (en) | 2008-09-30 | 2014-05-20 | International Business Machines Corporation | Virtualization across physical partitions of a multi-core processor (MCP) |
US8438404B2 (en) * | 2008-09-30 | 2013-05-07 | International Business Machines Corporation | Main processing element for delegating virtualized control threads controlling clock speed and power consumption to groups of sub-processing elements in a system such that a group of sub-processing elements can be designated as pseudo main processing element |
US8341638B2 (en) * | 2008-09-30 | 2012-12-25 | International Business Machines Corporation | Delegated virtualization across physical partitions of a multi-core processor (MCP) |
US9703595B2 (en) * | 2008-10-02 | 2017-07-11 | Mindspeed Technologies, Llc | Multi-core system with central transaction control |
TWI381315B (zh) * | 2008-10-24 | 2013-01-01 | Nat Univ Chung Cheng | Synchronization elements for multi-core embedded systems |
TWI382348B (zh) * | 2008-10-24 | 2013-01-11 | Univ Nat Taiwan | 多核心系統及其排程方法 |
JP5245722B2 (ja) * | 2008-10-29 | 2013-07-24 | 富士通株式会社 | スケジューラ、プロセッサシステム、プログラム生成装置およびプログラム生成用プログラム |
CN101403982B (zh) * | 2008-11-03 | 2011-07-20 | 华为技术有限公司 | 一种多核处理器的任务分配方法和系统 |
WO2010058246A1 (en) | 2008-11-24 | 2010-05-27 | Freescale Semiconductor, Inc. | Management of multiple resource providers |
KR100983048B1 (ko) * | 2008-11-27 | 2010-09-17 | 서울대학교산학협력단 | Ncq 제어 방법 및 컴퓨팅 장치 |
US8751843B2 (en) | 2008-12-16 | 2014-06-10 | The Regents Of The University Of Michigan | Computer energy conservation with a scalable PSU configuration |
TWI405070B (zh) * | 2008-12-24 | 2013-08-11 | Tatung Co | 頻率調整方法及使用此方法的電子裝置、電腦程式產品與電腦可讀取儲存媒體 |
US8230245B2 (en) * | 2009-01-23 | 2012-07-24 | Dell Products, L.P. | Method and system for operating-system-independent power management using performance verifications |
US20100194524A1 (en) * | 2009-02-02 | 2010-08-05 | Richard John Campero | Home Network Control Node for Device Control and Energy Conservation |
US8676976B2 (en) * | 2009-02-25 | 2014-03-18 | International Business Machines Corporation | Microprocessor with software control over allocation of shared resources among multiple virtual servers |
US9250973B2 (en) * | 2009-03-12 | 2016-02-02 | Polycore Software, Inc. | Apparatus and associated methodology of generating a multi-core communications topology |
WO2010138031A1 (en) * | 2009-05-26 | 2010-12-02 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and scheduler in an operating system |
EP2256632B1 (en) | 2009-05-26 | 2013-07-31 | Telefonaktiebolaget L M Ericsson (publ) | Multi-processor scheduling |
US8904394B2 (en) | 2009-06-04 | 2014-12-02 | International Business Machines Corporation | System and method for controlling heat dissipation through service level agreement analysis by modifying scheduled processing jobs |
JP5549131B2 (ja) * | 2009-07-07 | 2014-07-16 | 富士通株式会社 | ジョブ割当装置、ジョブ割当方法及びジョブ割当プログラム |
EP2282265A1 (en) * | 2009-07-27 | 2011-02-09 | Nxp B.V. | A hardware task scheduler |
US20110041128A1 (en) * | 2009-08-13 | 2011-02-17 | Mathias Kohlenz | Apparatus and Method for Distributed Data Processing |
US8788782B2 (en) | 2009-08-13 | 2014-07-22 | Qualcomm Incorporated | Apparatus and method for memory management and efficient data processing |
US9038073B2 (en) * | 2009-08-13 | 2015-05-19 | Qualcomm Incorporated | Data mover moving data to accelerator for processing and returning result data based on instruction received from a processor utilizing software and hardware interrupts |
US8762532B2 (en) * | 2009-08-13 | 2014-06-24 | Qualcomm Incorporated | Apparatus and method for efficient memory allocation |
US8479215B2 (en) * | 2009-08-18 | 2013-07-02 | International Business Machines Corporation | Decentralized load distribution to reduce power and/or cooling costs in an event-driven system |
US8479216B2 (en) | 2009-08-18 | 2013-07-02 | International Business Machines Corporation | Method for decentralized load distribution in an event-driven system using localized migration between physically connected nodes and load exchange protocol preventing simultaneous migration of plurality of tasks to or from a same node |
US9672132B2 (en) | 2009-11-19 | 2017-06-06 | Qualcomm Incorporated | Methods and apparatus for measuring performance of a multi-thread processor |
US8423799B2 (en) * | 2009-11-30 | 2013-04-16 | International Business Machines Corporation | Managing accelerators of a computing environment |
US8776066B2 (en) * | 2009-11-30 | 2014-07-08 | International Business Machines Corporation | Managing task execution on accelerators |
US8095824B2 (en) | 2009-12-15 | 2012-01-10 | Intel Corporation | Performing mode switching in an unbounded transactional memory (UTM) system |
US8464035B2 (en) * | 2009-12-18 | 2013-06-11 | Intel Corporation | Instruction for enabling a processor wait state |
US8549524B2 (en) * | 2009-12-23 | 2013-10-01 | Sap Ag | Task scheduler for cooperative tasks and threads for multiprocessors and multicore systems |
US8875143B2 (en) * | 2009-12-31 | 2014-10-28 | Bmc Software, Inc. | Utility-optimized scheduling of time-sensitive tasks in a resource-constrained environment |
JPWO2011102219A1 (ja) * | 2010-02-19 | 2013-06-17 | 日本電気株式会社 | リアルタイムシステム用マルチコア向けタスク配置最適化システム、その方法及びそのプログラム |
KR101635397B1 (ko) * | 2010-03-03 | 2016-07-04 | 삼성전자주식회사 | 재구성 가능한 프로세서 코어를 사용하는 멀티코어 시스템의 시뮬레이터 및 시뮬레이션 방법 |
KR101658035B1 (ko) * | 2010-03-12 | 2016-10-04 | 삼성전자주식회사 | 가상 머신 모니터 및 가상 머신 모니터의 스케줄링 방법 |
KR101653204B1 (ko) | 2010-03-16 | 2016-09-01 | 삼성전자주식회사 | 멀티 코어 시스템에서 데이터 병렬 처리를 위한 동적 태스크 관리 시스템 및 방법 |
KR101664108B1 (ko) | 2010-04-13 | 2016-10-11 | 삼성전자주식회사 | 멀티 코어의 동기화를 효율적으로 처리하기 위한 하드웨어 가속 장치 및 방법 |
US8634302B2 (en) | 2010-07-30 | 2014-01-21 | Alcatel Lucent | Apparatus for multi-cell support in a network |
US8972995B2 (en) * | 2010-08-06 | 2015-03-03 | Sonics, Inc. | Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads |
CN102387551B (zh) * | 2010-08-30 | 2014-03-26 | 普天信息技术研究院有限公司 | 一种调度方法 |
US8667197B2 (en) | 2010-09-08 | 2014-03-04 | Intel Corporation | Providing a fine-grained arbitration system |
US9268611B2 (en) * | 2010-09-25 | 2016-02-23 | Intel Corporation | Application scheduling in heterogeneous multiprocessor computing platform based on a ratio of predicted performance of processor cores |
US8683251B2 (en) | 2010-10-15 | 2014-03-25 | International Business Machines Corporation | Determining redundancy of power feeds connecting a server to a power supply |
US8737417B2 (en) | 2010-11-12 | 2014-05-27 | Alcatel Lucent | Lock-less and zero copy messaging scheme for telecommunication network applications |
US8730790B2 (en) | 2010-11-19 | 2014-05-20 | Alcatel Lucent | Method and system for cell recovery in telecommunication networks |
US8861434B2 (en) | 2010-11-29 | 2014-10-14 | Alcatel Lucent | Method and system for improved multi-cell support on a single modem board |
US8949835B2 (en) * | 2010-11-30 | 2015-02-03 | Red Hat, Inc. | Yielding input/output scheduler to increase overall system throughput |
US20130117168A1 (en) | 2011-11-04 | 2013-05-09 | Mark Henrik Sandstrom | Maximizing Throughput of Multi-user Parallel Data Processing Systems |
US8789065B2 (en) | 2012-06-08 | 2014-07-22 | Throughputer, Inc. | System and method for input data load adaptive parallel processing |
US9235458B2 (en) * | 2011-01-06 | 2016-01-12 | International Business Machines Corporation | Methods and systems for delegating work objects across a mixed computer environment |
US9052968B2 (en) | 2011-01-17 | 2015-06-09 | International Business Machines Corporation | Methods and systems for linking objects across a mixed computer environment |
US8918791B1 (en) * | 2011-03-10 | 2014-12-23 | Applied Micro Circuits Corporation | Method and system for queuing a request by a processor to access a shared resource and granting access in accordance with an embedded lock ID |
CN102760176B (zh) * | 2011-04-29 | 2015-02-11 | 无锡江南计算技术研究所 | 硬件事务级仿真方法、引擎及系统 |
US9158592B2 (en) | 2011-05-02 | 2015-10-13 | Green Hills Software, Inc. | System and method for time variant scheduling of affinity groups comprising processor core and address spaces on a synchronized multicore processor |
US20140215141A1 (en) * | 2011-05-02 | 2014-07-31 | ISC8 Inc. | High-Speed Processor Core Comprising Mapped Auxilliary Component Functionality |
US9357482B2 (en) * | 2011-07-13 | 2016-05-31 | Alcatel Lucent | Method and system for dynamic power control for base stations |
US9448847B2 (en) * | 2011-07-15 | 2016-09-20 | Throughputer, Inc. | Concurrent program execution optimization |
US8745626B1 (en) * | 2012-12-17 | 2014-06-03 | Throughputer, Inc. | Scheduling application instances to configurable processing cores based on application requirements and resource specification |
US8990830B2 (en) * | 2011-07-19 | 2015-03-24 | International Business Machines Corporation | Thread management in parallel processes |
US8874579B2 (en) | 2011-08-18 | 2014-10-28 | Verisign, Inc. | Systems and methods for identifying associations between malware samples |
US9032413B2 (en) | 2011-09-01 | 2015-05-12 | Microsoft Technology Licensing, Llc | Decoupling background work and foreground work |
CN103765409A (zh) * | 2011-09-06 | 2014-04-30 | 英特尔公司 | 有功率效率的处理器体系结构 |
TW201324360A (zh) * | 2011-12-08 | 2013-06-16 | Chunghwa Telecom Co Ltd | 交付背景執行包覆模組 |
KR101901587B1 (ko) | 2011-12-13 | 2018-10-01 | 삼성전자주식회사 | 연성 실시간 운영체제의 실시간성을 확보하는 방법 및 장치 |
WO2013094156A1 (ja) * | 2011-12-19 | 2013-06-27 | 日本電気株式会社 | タスク配置最適化システム、タスク配置最適化方法、及びタスク配置最適化プログラム |
US20120095607A1 (en) * | 2011-12-22 | 2012-04-19 | Wells Ryan D | Method, Apparatus, and System for Energy Efficiency and Energy Conservation Through Dynamic Management of Memory and Input/Output Subsystems |
EP2792113B1 (en) * | 2011-12-28 | 2016-04-27 | Huawei Technologies Co., Ltd. | A service router architecture |
US9389657B2 (en) * | 2011-12-29 | 2016-07-12 | Intel Corporation | Reset of multi-core processing system |
KR101867960B1 (ko) * | 2012-01-05 | 2018-06-18 | 삼성전자주식회사 | 매니 코어 시스템을 위한 운영체제 동적 재구성 장치 및 방법 |
US9164803B2 (en) * | 2012-01-20 | 2015-10-20 | Microsoft Technology Licensing, Llc | Background task resource control |
US9058166B2 (en) * | 2012-03-05 | 2015-06-16 | Telefonaktiebolaget L M Ericsson (Publ) | Method and apparatus for managing processing resources in a distributed processing system |
US9027141B2 (en) * | 2012-04-12 | 2015-05-05 | Netflix, Inc. | Method and system for improving security and reliability in a networked application environment |
CN108920267B (zh) | 2012-05-24 | 2022-03-15 | 瑞萨电子株式会社 | 任务处理装置 |
US10002021B2 (en) | 2012-07-20 | 2018-06-19 | Qualcomm Incorporated | Deferred preemption techniques for scheduling graphics processing unit command streams |
CN102831024B (zh) * | 2012-08-03 | 2014-12-17 | 中国人民解放军国防科学技术大学 | 一种基于随机扰动的防饿死访存请求唤醒方法 |
CN103810072A (zh) * | 2012-11-09 | 2014-05-21 | 上海飞田通信技术有限公司 | 保障多线程任务有序执行的装置及方法 |
TWI478055B (zh) | 2012-12-11 | 2015-03-21 | Gemtek Technology Co Ltd | 非對稱式處理之多核心系統與其網路設備 |
CN103870327A (zh) * | 2012-12-18 | 2014-06-18 | 华为技术有限公司 | 一种实时多任务调度方法和装置 |
US9201791B2 (en) | 2013-01-08 | 2015-12-01 | Apple Inc. | Flow-ID dependency checking logic |
US8762916B1 (en) * | 2013-02-25 | 2014-06-24 | Xilinx, Inc. | Automatic generation of a data transfer network |
US9075624B2 (en) | 2013-06-24 | 2015-07-07 | Xilinx, Inc. | Compilation of system designs |
KR101481898B1 (ko) | 2013-06-25 | 2015-01-14 | 광운대학교 산학협력단 | Ssd의 명령어 큐 스케줄링 장치 및 방법 |
US20160170474A1 (en) * | 2013-08-02 | 2016-06-16 | Nec Corporation | Power-saving control system, control device, control method, and control program for server equipped with non-volatile memory |
KR101666395B1 (ko) | 2013-10-14 | 2016-10-14 | 한국전자통신연구원 | 멀티코어 환경에서 우선순위 기반의 실시간 운영체제의 태스크 스케줄링 방법 |
GB2521151B (en) * | 2013-12-10 | 2021-06-02 | Advanced Risc Mach Ltd | Configurable thread ordering for a data processing apparatus |
GB2521155B (en) | 2013-12-10 | 2021-06-02 | Advanced Risc Mach Ltd | Configuring thread scheduling on a multi-threaded data processing apparatus |
US9411642B2 (en) * | 2014-01-17 | 2016-08-09 | Nvidia Corporation | Using high priority thread to boost CPU clock rate |
KR102205836B1 (ko) * | 2014-01-29 | 2021-01-21 | 삼성전자 주식회사 | 태스크 스케줄링 방법 및 장치 |
US10592459B2 (en) | 2014-03-07 | 2020-03-17 | Cavium, Llc | Method and system for ordering I/O access in a multi-node environment |
US9411644B2 (en) | 2014-03-07 | 2016-08-09 | Cavium, Inc. | Method and system for work scheduling in a multi-chip system |
US9529532B2 (en) | 2014-03-07 | 2016-12-27 | Cavium, Inc. | Method and apparatus for memory allocation in a multi-node system |
US9372800B2 (en) | 2014-03-07 | 2016-06-21 | Cavium, Inc. | Inter-chip interconnect protocol for a multi-chip system |
US9652286B2 (en) | 2014-03-21 | 2017-05-16 | Oracle International Corporation | Runtime handling of task dependencies using dependence graphs |
TWI503742B (zh) * | 2014-04-21 | 2015-10-11 | Nat Univ Tsing Hua | 多核心處理器系統及其排程方法 |
US9542220B2 (en) * | 2014-04-28 | 2017-01-10 | Oracle International Corporation | System and method for supporting resource manager (RM) instance awareness in a transactional environment |
WO2015170386A1 (ja) * | 2014-05-08 | 2015-11-12 | 株式会社日立製作所 | データベース管理システム、計算機システム及びデータベース管理方法 |
FR3023047B1 (fr) | 2014-06-27 | 2016-06-24 | Continental Automotive France | Procede de gestion de messages de panne d'un vehicule automobile |
CN104615488B (zh) | 2015-01-16 | 2018-01-19 | 华为技术有限公司 | 异构多核可重构计算平台上任务调度的方法和装置 |
US9569264B2 (en) | 2015-03-17 | 2017-02-14 | Freescale Semiconductor,Inc. | Multi-core system for processing data packets |
CN104778083B (zh) * | 2015-03-27 | 2018-07-03 | 华为技术有限公司 | 异构多核可重构计算平台上任务调度的方法和装置 |
US10241828B2 (en) * | 2015-04-03 | 2019-03-26 | Oath Inc. | Method and system for scheduling transactions in a data system |
KR101622516B1 (ko) | 2015-04-20 | 2016-05-18 | 엘에스산전 주식회사 | 데이터 송수신 시스템 |
KR102384345B1 (ko) | 2015-05-15 | 2022-04-19 | 삼성전자 주식회사 | 스레드를 실행하는 방법, 프로세서 및 기록매체 |
US20170017420A1 (en) | 2015-07-15 | 2017-01-19 | Innovium, Inc. | System And Method For Enabling High Read Rates To Data Element Lists |
US20170017414A1 (en) | 2015-07-15 | 2017-01-19 | Innovium, Inc. | System And Method For Implementing Hierarchical Distributed-Linked Lists For Network Devices |
KR102184280B1 (ko) * | 2015-12-17 | 2020-11-30 | 아브 이니티오 테크놀로지 엘엘시 | 동적 파티셔닝을 이용한 데이터 프로세싱 |
US10649810B2 (en) * | 2015-12-28 | 2020-05-12 | Advanced Micro Devices, Inc. | Data driven scheduler on multiple computing cores |
DE102016200780A1 (de) * | 2016-01-21 | 2017-07-27 | Robert Bosch Gmbh | Verfahren und Vorrichtung zum quasi-parallelen Ausführen von Aktivitätsträgern |
EP3208712B1 (en) * | 2016-02-22 | 2020-02-19 | Karlsruher Institut für Technologie | Computer system and method for parallel program code optimization and deployment |
KR102501240B1 (ko) | 2016-03-18 | 2023-02-17 | 삼성전자주식회사 | 태스크 스케줄링 방법 및 이를 구현한 전자 장치 |
CN106020978B (zh) * | 2016-05-17 | 2019-05-21 | 扬州航盛科技有限公司 | 一种时间差量顺序链表定时器的执行方法 |
WO2017199383A1 (ja) * | 2016-05-19 | 2017-11-23 | 株式会社日立製作所 | Pld管理方法及びpld管理システム |
US11029998B2 (en) | 2016-06-03 | 2021-06-08 | International Business Machines Corporation | Grouping of tasks for distribution among processing entities |
US10185593B2 (en) | 2016-06-03 | 2019-01-22 | International Business Machines Corporation | Balancing categorized task queues in a plurality of processing entities of a computational device |
US10691502B2 (en) * | 2016-06-03 | 2020-06-23 | International Business Machines Corporation | Task queuing and dispatching mechanisms in a computational device |
US10698954B2 (en) * | 2016-06-30 | 2020-06-30 | Facebook, Inc. | Computation platform agnostic data classification workflows |
US11120036B2 (en) * | 2016-08-03 | 2021-09-14 | Oracle International Corporation | System and method for efficient repurposing of connections in a multi-tenant database environment |
US9606835B1 (en) | 2016-09-19 | 2017-03-28 | International Business Machines Corporation | Determination of memory access patterns of tasks in a multi-core processor |
DE102016221526A1 (de) * | 2016-11-03 | 2018-05-03 | Robert Bosch Gmbh | Vorrichtung und Verfahren zum Bearbeiten einer Mehrzahl Aufgaben |
US10489220B2 (en) | 2017-01-26 | 2019-11-26 | Microsoft Technology Licensing, Llc | Priority based scheduling |
US10620993B2 (en) | 2017-02-27 | 2020-04-14 | International Business Machines Corporation | Automated generation of scheduling algorithms based on task relevance assessment |
EP3596909B1 (en) | 2017-03-17 | 2022-10-05 | Convida Wireless, LLC | Distributed transaction management in a network service layer |
US10686729B2 (en) | 2017-03-29 | 2020-06-16 | Fungible, Inc. | Non-blocking any-to-any data center network with packet spraying over multiple alternate data paths |
CN110710139A (zh) | 2017-03-29 | 2020-01-17 | 芬基波尔有限责任公司 | 具有光置换器的无阻塞全网状数据中心网络 |
WO2018183553A1 (en) | 2017-03-29 | 2018-10-04 | Fungible, Inc. | Non-blocking any-to-any data center network having multiplexed packet spraying within access node groups |
CN110741356B (zh) | 2017-04-10 | 2024-03-15 | 微软技术许可有限责任公司 | 多处理器系统中的中继一致存储器管理 |
US11010659B2 (en) * | 2017-04-24 | 2021-05-18 | Intel Corporation | Dynamic precision for neural network compute operations |
US10592305B2 (en) * | 2017-05-16 | 2020-03-17 | Apple Inc. | Application session and enhancement for a wearable electronic device |
US10452446B1 (en) * | 2017-06-07 | 2019-10-22 | Rockwell Collins, Inc. | High integrity multi-core processing |
WO2019000398A1 (zh) * | 2017-06-30 | 2019-01-03 | 深圳市大疆创新科技有限公司 | 事务调度方法、处理器、分布式系统和无人机 |
EP3625679A1 (en) | 2017-07-10 | 2020-03-25 | Fungible, Inc. | Data processing unit for stream processing |
US10659254B2 (en) | 2017-07-10 | 2020-05-19 | Fungible, Inc. | Access node integrated circuit for data centers which includes a networking unit, a plurality of host units, processing clusters, a data network fabric, and a control network fabric |
CN107463442B (zh) * | 2017-07-12 | 2020-09-18 | 北京控制工程研究所 | 一种星载多核SoC任务级负载均衡并行调度方法 |
US11150944B2 (en) | 2017-08-18 | 2021-10-19 | International Business Machines Corporation | Balancing mechanisms in ordered lists of dispatch queues in a computational device |
US10474600B2 (en) * | 2017-09-14 | 2019-11-12 | Samsung Electronics Co., Ltd. | Heterogeneous accelerator for highly efficient learning systems |
CN111094892B (zh) * | 2017-09-26 | 2022-06-24 | 天宝公司 | 勘测仪器的数据收集任务队列 |
CN111149329A (zh) | 2017-09-29 | 2020-05-12 | 芬基波尔有限责任公司 | 通过多个备用数据路径进行分组喷射的数据中心网络的结构控制协议 |
US10965586B2 (en) | 2017-09-29 | 2021-03-30 | Fungible, Inc. | Resilient network communication using selective multipath packet flow spraying |
KR102313664B1 (ko) | 2017-09-30 | 2021-10-15 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 시스템 서비스의 타임아웃을 처리하는 방법 및 디바이스 |
CN109783202A (zh) * | 2017-11-15 | 2019-05-21 | 阿里巴巴集团控股有限公司 | 事件处理方法、系统、设备和存储介质 |
WO2019104090A1 (en) | 2017-11-21 | 2019-05-31 | Fungible, Inc. | Work unit stack data structures in multiple core processor system for stream data processing |
WO2019152063A1 (en) | 2018-02-02 | 2019-08-08 | Fungible, Inc. | Efficient work unit processing in a multicore system |
CN111919207A (zh) * | 2018-03-31 | 2020-11-10 | 美光科技公司 | 多线程自调度可重新配置计算架构 |
WO2019191740A1 (en) * | 2018-03-31 | 2019-10-03 | Micron Technology, Inc. | Multiple types of thread identifiers for a multi-threaded, self-scheduling reconfigurable computing fabric |
JP7301892B2 (ja) * | 2018-07-02 | 2023-07-03 | ドライブネッツ リミテッド | マルチスレッドアプリケーションを実装するシステム |
KR102111991B1 (ko) | 2018-08-17 | 2020-05-18 | 주식회사 한컴엠디에스 | 운영체제 시스템의 자원 관리 장치 및 방법 |
EP3853726A1 (en) | 2018-10-22 | 2021-07-28 | Siemens Industry Software Inc. | Dynamic allocation of computing resources for electronic design automation operations |
US10929175B2 (en) * | 2018-11-21 | 2021-02-23 | Fungible, Inc. | Service chaining hardware accelerators within a data stream processing integrated circuit |
KR102042495B1 (ko) * | 2018-11-30 | 2019-11-08 | 아주대학교산학협력단 | 멀티 코어 시스템의 저전력 운영을 위한 데이터 흐름 최적화 장치 및 방법 |
US10838389B2 (en) | 2018-12-13 | 2020-11-17 | Hamilton Sunstrand Corporation | Reconfigurable control architecture for programmable logic devices |
US10565036B1 (en) * | 2019-02-14 | 2020-02-18 | Axis Semiconductor, Inc. | Method of synchronizing host and coprocessor operations via FIFO communication |
CN109918141B (zh) * | 2019-03-15 | 2020-11-27 | Oppo广东移动通信有限公司 | 线程执行方法、装置、终端及存储介质 |
US10671453B1 (en) | 2019-04-29 | 2020-06-02 | EMC IP Holding Company LLC | Data storage system employing two-level scheduling of processing cores |
CN110427206B (zh) * | 2019-07-18 | 2022-10-28 | 中国船舶重工集团公司第七0七研究所 | 一种基于zynq的算法动态更新方法 |
US11005970B2 (en) | 2019-07-24 | 2021-05-11 | EMC IP Holding Company LLC | Data storage system with processor scheduling using distributed peek-poller threads |
US11467846B2 (en) | 2019-08-02 | 2022-10-11 | Tenstorrent Inc. | Overlay layer for network of processor cores |
CN110543354B (zh) * | 2019-09-05 | 2023-06-13 | 腾讯科技(上海)有限公司 | 任务调度方法、装置、设备及存储介质 |
KR20210051718A (ko) | 2019-10-31 | 2021-05-10 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
CN112783613B (zh) * | 2019-11-07 | 2024-03-01 | 北京沃东天骏信息技术有限公司 | 一种单元调度的方法和装置 |
CN111294290B (zh) * | 2020-02-26 | 2021-01-29 | 宁波云鸟软件科技有限公司 | 一种基于大数据的资源调度方法 |
CN111338425B (zh) * | 2020-02-26 | 2021-08-20 | 杭州涂鸦信息技术有限公司 | 一种无线低功耗设备实现倒计时的方法及系统 |
US11625592B2 (en) | 2020-07-09 | 2023-04-11 | Femtosense, Inc. | Methods and apparatus for thread-based scheduling in multicore neural networks |
KR102195609B1 (ko) * | 2020-07-20 | 2020-12-29 | 주식회사 크라우드웍스 | 인공지능 학습 데이터 생성을 위한 크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법 |
US11494120B2 (en) * | 2020-10-02 | 2022-11-08 | Qualcomm Incorporated | Adaptive memory transaction scheduling |
CN112416546A (zh) * | 2020-11-10 | 2021-02-26 | 光华临港工程应用技术研发(上海)有限公司 | 多任务调度方法、电子装置和计算机存储介质 |
CN112416475A (zh) * | 2020-11-20 | 2021-02-26 | 清华大学 | 触发方法 |
US20220253770A1 (en) * | 2021-02-06 | 2022-08-11 | Verint Americas Inc. | System and method for calibrating a wfm scheduling module |
CN112925621B (zh) * | 2021-02-26 | 2023-11-07 | 北京百度网讯科技有限公司 | 任务处理方法、装置、电子设备和存储介质 |
CN113419836B (zh) * | 2021-07-07 | 2023-02-21 | 深圳市珍爱捷云信息技术有限公司 | 任务处理方法、装置、电子设备和计算机可读存储介质 |
KR20240050448A (ko) * | 2021-09-03 | 2024-04-18 | 그록, 인크. | 결정론적 클라우드 환경에서의 스케일 컴퓨팅 |
CN115048206B (zh) * | 2022-08-15 | 2022-12-27 | 阿里巴巴(中国)有限公司 | 资源调度方法及服务器 |
KR102579320B1 (ko) * | 2023-04-19 | 2023-09-18 | 메티스엑스 주식회사 | 캐시 메모리 장치 및 이를 이용하는 캐시 스케줄링 구현 방법 |
CN117289754B (zh) * | 2023-08-22 | 2024-06-07 | 北京辉羲智能科技有限公司 | 一种时间同步的芯片架构及其软件控制方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030014743A1 (en) * | 1997-06-27 | 2003-01-16 | Cooke Laurence H. | Method for compiling high level programming languages |
US20030056091A1 (en) * | 2001-09-14 | 2003-03-20 | Greenberg Craig B. | Method of scheduling in a reconfigurable hardware architecture with multiple hardware configurations |
US6711691B1 (en) * | 1999-05-13 | 2004-03-23 | Apple Computer, Inc. | Power management for computer systems |
US20040128563A1 (en) * | 2002-12-26 | 2004-07-01 | Kaushik Shivnandan D. | Mechanism for processor power state aware distribution of lowest priority interrupt |
US20040268354A1 (en) * | 2003-06-27 | 2004-12-30 | Tatsunori Kanai | Method and system for performing real-time operation using processors |
TW200511035A (en) * | 2003-08-19 | 2005-03-16 | Sun Microsystems Inc | Multi-core multi-thread processor crossbar architecture |
TW200515277A (en) * | 2003-07-25 | 2005-05-01 | Raza Microelectronics Inc | Advanced processor |
TW200523802A (en) * | 2003-08-19 | 2005-07-16 | Sun Microsystems Inc | Multi-core multi-thread processor |
TWI240163B (en) * | 2001-10-22 | 2005-09-21 | Sun Microsystems Inc | Multi core multi thread processor and method and apparatus utilizing a multi core multi thread processor |
Family Cites Families (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB8711663D0 (en) | 1987-05-18 | 1987-06-24 | Singer Link Miles Ltd | Multiprocessing architecture |
US5566340A (en) * | 1991-02-14 | 1996-10-15 | Dell Usa L.P. | Portable computer system with adaptive power control parameters |
JPH04283849A (ja) * | 1991-03-13 | 1992-10-08 | Toshiba Corp | マルチプロセッサシステム |
EP0537721B1 (en) | 1991-10-15 | 1998-11-25 | Hewlett-Packard Company | Hardware-configured operating system kernel for a multitasking processor |
JPH05233572A (ja) | 1992-02-21 | 1993-09-10 | Toshiba Corp | マルチプロセッサに於けるプロセスディスパッチ方式 |
JPH0756863A (ja) | 1993-08-20 | 1995-03-03 | Fuji Electric Co Ltd | 分割順序記述の並列制御システム |
JPH086681A (ja) * | 1994-04-18 | 1996-01-12 | Hitachi Ltd | 省電力制御システム |
US7266725B2 (en) * | 2001-09-03 | 2007-09-04 | Pact Xpp Technologies Ag | Method for debugging reconfigurable architectures |
JPH09185589A (ja) * | 1996-01-05 | 1997-07-15 | Toshiba Corp | 情報処理システムと情報処理システムの省電力方法 |
JP2933005B2 (ja) | 1996-04-05 | 1999-08-09 | 日本電気株式会社 | 管理情報格納装置 |
US5826081A (en) | 1996-05-06 | 1998-10-20 | Sun Microsystems, Inc. | Real time thread dispatcher for multiprocessor applications |
US5999734A (en) | 1997-10-21 | 1999-12-07 | Ftl Systems, Inc. | Compiler-oriented apparatus for parallel compilation, simulation and execution of computer programs and hardware models |
JP2001518233A (ja) * | 1997-12-23 | 2001-10-09 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 少なくとも2つのヨークおよび2つの電子銃を有する陰極線管 |
US6148324A (en) | 1998-01-05 | 2000-11-14 | Lucent Technologies, Inc. | Prioritized load balancing among non-communicating processes in a time-sharing system |
JPH11202988A (ja) * | 1998-01-13 | 1999-07-30 | Hitachi Ltd | システム消費電力制御方法 |
DE19822543A1 (de) * | 1998-05-20 | 1999-11-25 | Alcatel Sa | Verfahren zum Zuteilen von Aufträgen, Datenverarbeitssystem, Client-Datenbearbeitungsknoten und computerlesbares Speichermedium |
US6092174A (en) * | 1998-06-01 | 2000-07-18 | Context, Inc. | Dynamically reconfigurable distributed integrated circuit processor and method |
US6711791B2 (en) * | 1999-01-07 | 2004-03-30 | Clint Hess | Slide hammer tool and method of removing a keeper ring |
US6823516B1 (en) | 1999-08-10 | 2004-11-23 | Intel Corporation | System and method for dynamically adjusting to CPU performance changes |
US6487683B1 (en) | 1999-10-01 | 2002-11-26 | Stmicroelectronics Limited | Microcomputer debug architecture and method |
JP2001117786A (ja) | 1999-10-19 | 2001-04-27 | Nec Corp | プロセススケジューリング装置およびプロセススケジューリング方法 |
US6711411B1 (en) * | 2000-11-07 | 2004-03-23 | Telefonaktiebolaget Lm Ericsson (Publ) | Management of synchronization network |
US20020087903A1 (en) * | 2000-12-29 | 2002-07-04 | James Hermerding | Mechanism for managing power generated in a computer system |
US6901522B2 (en) * | 2001-06-07 | 2005-05-31 | Intel Corporation | System and method for reducing power consumption in multiprocessor system |
US6653859B2 (en) * | 2001-06-11 | 2003-11-25 | Lsi Logic Corporation | Heterogeneous integrated circuit with reconfigurable logic cores |
US7823131B2 (en) | 2001-06-29 | 2010-10-26 | Mentor Graphics Corporation | Debugger for a hardware-implemented operating system |
CN1145312C (zh) * | 2001-08-13 | 2004-04-07 | 华为技术有限公司 | 网络处理器线程调度方法 |
US7159216B2 (en) * | 2001-11-07 | 2007-01-02 | International Business Machines Corporation | Method and apparatus for dispatching tasks in a non-uniform memory access (NUMA) computer system |
US6804632B2 (en) * | 2001-12-06 | 2004-10-12 | Intel Corporation | Distribution of processing activity across processing hardware based on power consumption considerations |
JP2003256067A (ja) * | 2002-03-01 | 2003-09-10 | Mitsubishi Electric Corp | 省電力制御方式及び省電力制御方法及びプログラム及び記録媒体 |
JP4303053B2 (ja) | 2002-07-23 | 2009-07-29 | Hoya株式会社 | カプセル内視鏡誘導システム |
US6950925B1 (en) * | 2002-08-28 | 2005-09-27 | Advanced Micro Devices, Inc. | Scheduler for use in a microprocessor that supports data-speculative execution |
US6711447B1 (en) * | 2003-01-22 | 2004-03-23 | Intel Corporation | Modulating CPU frequency and voltage in a multi-core CPU architecture |
US7451183B2 (en) * | 2003-03-21 | 2008-11-11 | Hewlett-Packard Development Company, L.P. | Assembly and method for balancing processors in a partitioned server |
US7093147B2 (en) * | 2003-04-25 | 2006-08-15 | Hewlett-Packard Development Company, L.P. | Dynamically selecting processor cores for overall power efficiency |
US8020163B2 (en) * | 2003-06-02 | 2011-09-13 | Interuniversitair Microelektronica Centrum (Imec) | Heterogeneous multiprocessor network on chip devices, methods and operating systems for control thereof |
US20050210304A1 (en) * | 2003-06-26 | 2005-09-22 | Copan Systems | Method and apparatus for power-efficient high-capacity scalable storage system |
US20050050310A1 (en) * | 2003-07-15 | 2005-03-03 | Bailey Daniel W. | Method, system, and apparatus for improving multi-core processor performance |
JP4057989B2 (ja) | 2003-09-26 | 2008-03-05 | 株式会社東芝 | スケジューリング方法および情報処理システム |
US7676809B2 (en) * | 2003-10-09 | 2010-03-09 | International Business Machines Corporation | System, apparatus and method of enhancing priority boosting of scheduled threads |
US20050097554A1 (en) * | 2003-11-03 | 2005-05-05 | Burden David C. | Charge rationing aware scheduler |
EP1555595A3 (en) * | 2004-01-13 | 2011-11-23 | LG Electronics, Inc. | Apparatus for controlling power of processor having a plurality of cores and control method of the same |
US7334142B2 (en) * | 2004-01-22 | 2008-02-19 | International Business Machines Corporation | Reducing power consumption in a logically partitioned data processing system with operating system call that indicates a selected processor is unneeded for a period of time |
US8533716B2 (en) * | 2004-03-31 | 2013-09-10 | Synopsys, Inc. | Resource management in a multicore architecture |
US7249268B2 (en) * | 2004-06-29 | 2007-07-24 | Intel Corporation | Method for performing performance optimization operations for a processor having a plurality of processor cores in response to a stall condition |
JP4547198B2 (ja) * | 2004-06-30 | 2010-09-22 | 富士通株式会社 | 演算装置、演算装置の制御方法、プログラム及びコンピュータ読取り可能記録媒体 |
US9038070B2 (en) * | 2004-09-14 | 2015-05-19 | Synopsys, Inc. | Debug in a multicore architecture |
GB0420442D0 (en) | 2004-09-14 | 2004-10-20 | Ignios Ltd | Debug in a multicore architecture |
US7765547B2 (en) | 2004-11-24 | 2010-07-27 | Maxim Integrated Products, Inc. | Hardware multithreading systems with state registers having thread profiling data |
US7526661B2 (en) * | 2004-12-02 | 2009-04-28 | Intel Corporation | Performance state-based thread management |
US7502948B2 (en) * | 2004-12-30 | 2009-03-10 | Intel Corporation | Method, system, and apparatus for selecting a maximum operation point based on number of active cores and performance level of each of the active cores |
WO2007029421A1 (ja) | 2005-09-05 | 2007-03-15 | Nec Corporation | 情報処理装置 |
US7617403B2 (en) * | 2006-07-26 | 2009-11-10 | International Business Machines Corporation | Method and apparatus for controlling heat generation in a multi-core processor |
US7886262B2 (en) * | 2006-08-15 | 2011-02-08 | Chew Marko P | System and method of maximizing integrated circuit manufacturing yield with fabrication process simulation driven layout optimization |
US20090037700A1 (en) * | 2007-07-30 | 2009-02-05 | Clear Falls Pty Ltd | Method and system for reactively assigning computational threads of control between processors |
JP5204674B2 (ja) | 2009-01-16 | 2013-06-05 | パナソニック株式会社 | 無線タグ通信システム、無線タグの電池残量推定方法及び監視装置 |
-
2005
- 2005-09-30 GB GBGB0519981.5A patent/GB0519981D0/en not_active Ceased
-
2006
- 2006-09-27 EP EP20060254991 patent/EP1770509A3/en not_active Ceased
- 2006-09-27 EP EP10192097A patent/EP2328076A1/en not_active Ceased
- 2006-09-27 EP EP10192098.1A patent/EP2328077B1/en active Active
- 2006-09-29 TW TW102118987A patent/TWI489391B/zh active
- 2006-09-29 TW TW095136470A patent/TWI420394B/zh active
- 2006-09-29 US US11/540,146 patent/US8732439B2/en active Active
- 2006-09-29 US US11/541,315 patent/US8533503B2/en active Active
- 2006-09-29 TW TW102118985A patent/TWI474261B/zh active
- 2006-09-30 CN CN2006101317584A patent/CN1955931B/zh active Active
- 2006-10-02 JP JP2006270890A patent/JP5311732B2/ja active Active
- 2006-10-02 KR KR1020060097396A patent/KR101369352B1/ko active IP Right Grant
-
2011
- 2011-12-14 JP JP2011273805A patent/JP5386572B2/ja active Active
-
2013
- 2013-06-12 KR KR1020130067351A patent/KR101392934B1/ko active IP Right Grant
- 2013-07-12 JP JP2013146711A patent/JP5651214B2/ja active Active
- 2013-08-12 US US13/965,124 patent/US8751773B2/en active Active
-
2014
- 2014-04-04 US US14/245,981 patent/US9286262B2/en active Active
- 2014-05-01 US US14/267,830 patent/US9164953B2/en active Active
-
2015
- 2015-09-09 US US14/848,334 patent/US9442886B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030014743A1 (en) * | 1997-06-27 | 2003-01-16 | Cooke Laurence H. | Method for compiling high level programming languages |
US6711691B1 (en) * | 1999-05-13 | 2004-03-23 | Apple Computer, Inc. | Power management for computer systems |
US20030056091A1 (en) * | 2001-09-14 | 2003-03-20 | Greenberg Craig B. | Method of scheduling in a reconfigurable hardware architecture with multiple hardware configurations |
TWI240163B (en) * | 2001-10-22 | 2005-09-21 | Sun Microsystems Inc | Multi core multi thread processor and method and apparatus utilizing a multi core multi thread processor |
US20040128563A1 (en) * | 2002-12-26 | 2004-07-01 | Kaushik Shivnandan D. | Mechanism for processor power state aware distribution of lowest priority interrupt |
US20040268354A1 (en) * | 2003-06-27 | 2004-12-30 | Tatsunori Kanai | Method and system for performing real-time operation using processors |
TW200515277A (en) * | 2003-07-25 | 2005-05-01 | Raza Microelectronics Inc | Advanced processor |
TW200511035A (en) * | 2003-08-19 | 2005-03-16 | Sun Microsystems Inc | Multi-core multi-thread processor crossbar architecture |
TW200523802A (en) * | 2003-08-19 | 2005-07-16 | Sun Microsystems Inc | Multi-core multi-thread processor |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI420394B (zh) | 用於多核心架構之排程的方法、電腦程式、及電腦可讀取媒體 | |
TWI541725B (zh) | 用於管理多核心架構之資源的方法和設備 | |
Hoare | Monitors: An operating system structuring concept | |
Audsley et al. | STRESS: A simulator for hard real‐time systems | |
US8533716B2 (en) | Resource management in a multicore architecture | |
Wang et al. | Pigeon: An effective distributed, hierarchical datacenter job scheduler | |
CN101896886A (zh) | 单个计算机系统上运行的多个内核之间的一致同步 | |
KR20130009746A (ko) | 스트림 기반 계산을 구현하기 위한 범용 다중 코어 시스템을 위한 방법 및 장치 | |
Han et al. | A modeling framework for schedulability analysis of distributed avionics systems | |
Happe et al. | A prediction model for software performance in symmetric multiprocessing environments | |
Girisagar et al. | Mapping workflow resource requests for bandwidth efficiency in data centers | |
Courtaud et al. | G (IP) 2 C: Temporally Isolated Multiprocessor Real-Time IPC with Server-to-Server Invocations | |
JP2024066421A (ja) | ストリームベースのトランザクション処理 | |
Eyraud | A pragmatic analysis of scheduling environments on new computing platforms | |
Concept¹ | CAR Hoare University of Oxford Abstract This paper develops Brinch Hansen's concept of a monitor as a method of structuring an operating system. It introduces a form of synchronization, describes a possible method of implementation in terms |