TWI624789B - 處理器以及調度方法 - Google Patents
處理器以及調度方法 Download PDFInfo
- Publication number
- TWI624789B TWI624789B TW105123172A TW105123172A TWI624789B TW I624789 B TWI624789 B TW I624789B TW 105123172 A TW105123172 A TW 105123172A TW 105123172 A TW105123172 A TW 105123172A TW I624789 B TWI624789 B TW I624789B
- Authority
- TW
- Taiwan
- Prior art keywords
- thread
- exit
- instructions
- line
- exit rate
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 21
- 230000001360 synchronised effect Effects 0.000 claims description 12
- 230000003213 activating effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 5
- 238000013468 resource allocation Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- 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
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
Abstract
一種處理器,包括:執行單元、退出模塊、第一退出計數器、第二退出計數器以及調整模塊。執行單元同步多線程地執行第一線程以及第二線程之指令。退出模塊按照第一線程中的指令順序退出完成的第一線程之指令,並且按照第二線程中的指令順序退出完成的第二線程之指令。第一退出計數器統計第一線程之指令之第一多線退出速率,第二退出計數器統計第二線程之指令之第二多線退出速率。調整模塊根據第一多線退出速率以及第二多線退出速率,調整第一線程以及第二線程分別佔用處理器之硬體資源之比例,使得處理器之執行效率最高。
Description
本發明係有關於一種多線程處理器及其調度方法,特別係有關於一種用以執行同步多線程之處理器及其調度方法。
多線程(Multi-threading)定義為在一個實體處理器上同時執行多個線程,並且透過多線程的方式,使得處理器的一個物理核心(physical core)可視為多個邏輯核心(logical core)正在並列執行。當多個線程同時使用處理器之資源時,同步多線程使得處理器的資源能夠更有效率的被使用。數個線程因而可在一個同步多線程的處理器上同時執行,使得現代處理器的強大硬體資源,例如譯碼單元(decode unit)、保留站(Reservation Station)以及執行單元(如浮點單元、定點指令單元(fixed point instruction unit)、載入/儲存單元等)等不會閒置,從而提高處理器的執行效率。
然而,當處理器執行同步多線程時,大多根據先到先處理(first arrived first served)的規則分配硬體資源或將硬體資源平均分配給每一線程,但是這樣靜態分配方式並不適用於某些軟體應用。因此,有必要針對同步多線程之處理器進
行有效的資源分配,進而提升處理器之執行效率。
有鑑於此,本發明提出一種處理器,包括:一執行單元、一第一線程退出模塊、一第二線程退出模塊以及一調整模塊。上述執行單元用以同步多線程地執行一第一線程之指令以及一第二線程之指令。當上述執行單元完成上述第一線程之指令之一者時,上述第一線程退出模塊退出完成的上述第一線程之指令。當上述執行單元完成上述第二線程之指令之一者時,上述第二線程退出模塊退出完成的上述第二線程之指令。上述調整模塊根據上述第一線程之一第一多線退出速率、上述第二線程之一第二多線退出速率以及一分配邏輯,調整上述第一線程以及上述第二線程分別佔用一硬體資源之比例,使得上述處理器之執行效率最高。
本發明更提出一種調度方法,適用於同步多線程之一處理器,包括:同步多線程地執行一第一線程之指令以及一第二線程之指令;按照上述第一線程中的指令順序退出完成的上述第一線程之指令,並且按照上述第二線程中的指令順序退出完成的上述第二線程之指令;利用一第一退出計數器統計上述第一線程之指令之一第一多線退出速率;利用一第二退出計數器統計上述第二線程之指令之一第二多線退出速率;以及利用一調整模塊根據上述第一多線退出速率以及上述第二多線退出速率,調整上述第一線程以及上述第二線程分別佔用上述處理器之一硬體資源之比例,使得上述處理器之執行效率最高。
本發明的處理器及其調度方法根據多線程的實際執行統計各線程的退出速率,根據統計的退出速率動態調整處理器的硬體資源的分配,使得處理器的執行效率最高。因為不同線程以及線程的不同組合在同步多線程地執行時的多線退出速率都會有所不同,本發明的處理器的調整模塊中內置了多種不同的控制邏輯供選擇來控制硬體資源的分配,根據不同線程的退出速率來切換不同的控制邏輯,靈活性更強。
100、200‧‧‧處理器
102、202‧‧‧前端流水線
104、204‧‧‧重命名模塊
110、210‧‧‧保留站
120、220‧‧‧執行單元
130、230‧‧‧退出模塊
141、241‧‧‧第一退出計數器
142、242‧‧‧第二退出計數器
150、250‧‧‧調整模塊
231‧‧‧第一線程退出模塊
232‧‧‧第二線程退出模塊
S31~S36‧‧‧步驟流程
第1圖係顯示根據本發明之一實施例所述之處理器之方塊圖;第2圖係顯示根據本發明之另一實施例所述之處理器之方塊圖;以及第3圖係顯示根據本發明之一實施例所述之調度方法之流程圖。
以下說明為本發明的實施例。其目的是要舉例說明本發明一般性的原則,不應視為本發明之限制,本發明之範圍當以申請專利範圍所界定者為準。
值得注意的是,以下所揭露的內容可提供多個用以實踐本發明之不同特點的實施例或範例。以下所述之特殊的元件範例與安排僅用以簡單扼要地闡述本發明之精神,並非用以限定本發明之範圍。此外,以下說明書可能在多個範例中重複使用相同的元件符號或文字。然而,重複使用的目的僅為了
提供簡化並清楚的說明,並非用以限定多個以下所討論之實施例以及/或配置之間的關係。此外,以下說明書所述之一個特徵連接至、耦接至以及/或形成於另一特徵之上等的描述,實際可包含多個不同的實施例,包括該等特徵直接接觸,或者包含其它額外的特徵形成於該等特徵之間等等,使得該等特徵並非直接接觸。
第1圖係顯示根據本發明之一實施例所述之處理器之方塊圖。如第1圖所示,處理器100包括執行單元(execution unit)120、退出模塊130、第一退出計數器141、第二退出計數器142以及調整模塊150,其中處理器100用以執行同步多線程(simultaneously multithreading)。
在處理器100為一超標量流水線(亂序執行)處理器的實施例中,處理器100更包括前端流水線102、重命名模塊(rename module)104以及保留站(reservation station)110等。其中前端流水線102更包括例如指令高速緩存(instruction buffer)及取指譯碼模塊(fetch and decode module)等,其中指令高速緩存用以緩存多個線程的宏指令,例如x86指令集架構等的指令集架構的宏指令;取指譯碼模塊用以接收多個線程的宏指令並將其翻譯成微指令(或微操作或“μops”)等。多個線程的微指令被提供到重命名模塊104,重命名模塊104產生微指令的依賴性(dependency),並按照各個線程中的指令順序向保留站110發射微指令(後面簡稱為“指令”)。保留站110將指令亂序派遣到多個執行單元112中合適的一個,具體而言,當指令準備好被執行時,每個保留站隊列(RS queue)向對應
的執行單元120調度(schedule)並派遣(dispatch)對應的指令。值得注意的是,在亂序執行的處理器中,重命名模塊104及其之前的指令還按照各個線程中的指令順序在走,而指令在後面的保留站110和執行單元120中都是亂序的,即哪個指令的運算元(operand)先準備好就,保留站110就先派遣誰到執行單元120執行,打破了原先各個線程中的指令順序。
執行單元120用以同步多線程地執行多個線程之第一線程之指令以及第二線程之指令。當執行單元120完成第一線程之一指令時,退出模塊130將完成的第一線程之指令按照第一線程中的指令順序退出(retire)。同樣的,當執行單元120完成第二線程之一指令時,退出模塊130將完成的第二線程之指令按照第二線程中的指令順序退出。根據本發明之其他實施例,退出模塊130還記錄關於從重命名模塊104發射的每個指令的相關資訊(例如第一和第二線程中的指令順序等)以保證指令被執行單元120亂序執行以後可以按照原來第一和第二線程中的指令順序按序退出。
根據本發明之其他實施例,處理器100可同步多線程執行任意數個線程。為了詳細說明本發明之目的,在此僅以處理器100執行第一線程以及第二線程作為範例,並非以任何形式限定於此。
第一退出計數器141統計第一線程之指令之一第一多線退出速率、第二退出計數器142統計第二線程之指令之一第二多線退出速率。在一實施例中,退出模塊130辨識其所退出的指令係屬於第一線程或第二線程,並通知對應的第一退
出計數器141或第二退出計數器142。如前所述,在處理器100為超標量流水線(亂序執行)處理器的實施例中,退出模塊130記錄著每個指令的相關資訊(例如其屬於哪個線程以及指令順序等),當指令從退出模塊130按照原來第一和第二線程中的指令順序按序退出時,退出模塊130根據其屬於第一或第二線程,對應通知第一退出計數器141或第二退出計數器142。例如,當所退出的指令屬於第一線程時,通知第一退出計數器141加1;當所退出的指令屬於第二線程時,通知第二退出計數器142加1。
調整模塊150根據第一退出計數器141統計的第一多線退出速率以及第二退出計數器142統計的第二多線退出速率,調整第一線程以及第二線程分別佔用該處理器100之硬體資源之比例,使得處理器100之執行效率最高。
在一實施例中,處理器100之硬體資源包括重命名模塊104、保留站110或者退出模塊130中的資源。以處理器100之硬體資源為保留站110中的資源為例,調整模塊150根據第一多線退出速率以及第二多線退出速率,調整保留站110分別分配給第一線程以及第二線程的保留站隊列(RS queue)之比例。以處理器100之硬體資源為退出模塊130中的資源為例,調整模塊150根據第一多線退出速率以及第二多線退出速率,調整第一線程以及第二線程分別佔用退出模塊130中重命名緩衝器(reorder buffer,ROB)之資源的比例。以處理器100之硬體資源為重命名模塊104中的資源為例,調整模塊150根據第一多線退出速率以及第二多線退出速率,調整第一線程以及第二線
程分別佔用重命名模塊104中的寄存器別名表(register alias table,RAT)之資源(例如物理寄存器physical Register)的比例。
第2圖係顯示根據本發明之另一實施例所述之處理器之方塊圖。如第2圖所示,處理器200包括保留站210、執行單元220、退出模塊230、第一退出計數器241、第二退出計數器242以及調整模塊250(包括複數控制邏輯251~25N)。在處理器200為一超標量流水線(亂序執行)處理器的實施例中,處理器200更包括前端流水線202、重命名模塊(rename module)204以及保留站(reservation station)210等。其中前端流水線202、重命名模塊204、保留站210、執行單元220、退出模塊230、第一退出計數器241、第二退出計數器242以及調整模塊250分別對應至第1圖之前端流水線102、重命名模塊104、保留站(reservation station)110、執行單元120、退出模塊130、第一退出計數器141、第二退出計數器142以及調整模塊150。
根據本發明之一實施例,退出模塊230更包括第一線程退出模塊231及第二線程退出模塊232,分別退出第一和第二線程的指令。第一退出計數器241計數第一線程退出模塊231於第一既定數量之時脈週期中所退出之第一線程之指令數目係為第一指令數目,其中調整模塊150將第一指令數目除以第一既定數量而得第一多線退出速率。也就是,第一多線退出速率代表第一線程平均在每一時脈週期中,退出之第一線程之指令數目。
同樣的,第二退出計數器242用以計數第二線程退
出模塊232於第二既定數量之時脈週期中所退出之第二線程之指令數目係為第二指令數目,其中調整模塊250更將第二指令數目除以第二既定數量而得第二多線退出速率。也就是,第二多線退出速率代表第二線程平均在每一時脈週期中,退出之第二線程之指令數目。
值得注意的是,第一線程退出模塊231及第二線程退出模塊232在實體上為同一套邏輯電路,共用退出模塊230的輸入輸出,如前所述,退出模塊230根據其所記錄的指令相關信息得知其退出的指令屬於第一或第二線程從而通知第一退出計數器141或第二退出計數器142計數。
根據本發明之一實施例,第一既定數量可與第二既定數量相同或不同。根據本發明之一實施例,第一退出計數器241以及第二退出計數器242可週期性地重置。
根據本發明之一實施例,調整模塊250進一步包括N個控制邏輯251~25N,調整模塊150或250根據第一和第二多線退出速率選取控制邏輯251~25N中之至少一者,並根據所選取的該控制邏輯調整第一及第二線程分別佔用硬體資源之比例,使得第一及第二線程均衡地使用硬體資源,進而達到第1圖之處理器100以及第2圖之處理器200執行之最大效率。控制邏輯251~25N之一舉例而言為:一個線程的多線退出速率越快,就分配越多的硬件資源(例如保留站隊列)給該線程。控制邏輯251~25N之一再舉例而言為:一個線程的多線退出速率越快,就分配越少的硬件資源給該線程。控制邏輯251~25N之一再舉例而言為:為每個線程設置佔用硬件資源的鄰限比例,
包括最低鄰限比例和/或最高鄰限比例,例如保留站210一共有30個保留站隊列,為第一線程設置最低鄰限比例為7,當第二線程已經佔用了23個保留站隊列,即便有更多的第二線程的指令從重命名模塊204發射至保留站210,處理器200也不會再為第二線程的指令分配保留站隊列而是停住前端流水線202再取指第二線程的指令;為第一線程設置最高鄰限比例為15,當第一線程已經佔用了15個保留站隊列,即便有更多的第一線程的指令從重命名模塊204發射至保留站210,處理器200也不會再為第一線程的指令分配保留站隊列而是停住前端流水線202再取指第一線程的指令。控制邏輯251~25N之一再舉例而言為:自由分配硬件資源給要求該資源的線程,即不根據多線退出速率動態分配,而是自由分配。
根據本發明之一實施例,第1圖之調整模塊150以及第2圖之調整模塊250更根據第一多線退出速率以及第二多線退出速率計算第一公平係數以及第二公平係數,並且根據公平係數A調整第一線程以及第二線程分別佔用硬體資源之比例,其中公平係數如公式1所示,R0,T1係為第一單線退出速率、R0,T2係為第二單線退出速率、RSMT,T1係為第一多線(SMT)退出速率以及RSMT,T2係為第二多線(SMT)退出速率。
第一單線退出速率R0,T1係為第1圖之執行單元120以及第2圖之執行單元220單線執行第一線程時,退出模塊130
或230平均每一時脈週期中退出之第一線程之指令數目。同樣的,第二單線退出速率R0,T2係為第1圖之執行單元120以及第2圖之執行單元220單線執行第二線程時,退出模塊130或230平均每一時脈週期中退出之第二線程之指令數目。由於第1圖之執行單元120以及第2圖之執行單元220進行單線執行時勢必將所有的資源投注於第一線程或第二線程上,因此單線退出速率必定大於對應的多線退出速率。也就是,第一單線退出速率R0,T1大於第一多線退出速率RSMT,T1,第二單線退出速率R0,T2大於第二多線退出速率RSMT,T2。
第一公平係數係為第一單線退出速率R0,T1除以第一多線退出速率RSMT,T1,第二公平係數係為第二單線退出速率R0,T2除以第二多線退出速率RSMT,T2。為了使得第1圖之處理器100以及第2圖之處理器200進行同步多線程之效率最佳,第1圖之調整模塊150以及第2圖之調整模塊250係調整第一線程以及第二線程分別佔用處理器100或200的硬體資源之比例使得該公平係數A盡可能小。當然本發明並不限於用公平係數A作為第一及第二線程均衡地使用硬體資源的判斷標準,也可以使用其它判斷標準來衡量。根據本發明之一實施例,如第2圖所示,調整模塊250進一步包括N個控制邏輯251~25N,調整模塊150或250選取控制邏輯251~25N中之至少一者,選取的原則例如是選取使得公平係數A相對最小之控制邏輯,調整模塊150或250根據所選取的該控制邏輯控制硬體資源分配,可以讓第一線程以及第二線程能夠均衡地使用硬體資源,進而達到第1圖之處理器100以及第2圖之處理器200執行之最大效率。
根據本發明之一實施例,第1圖之調整模塊150以及第2圖之調整模塊250更包括M個控制寄存器2511~251M,其中控制寄存器2511~251M用以啟動以及關閉對應的控制邏輯251~251N。其中M等於N,但本發明不限於此,M也可以小於N。根據本發明之一實施例,第1圖之調整模塊150以及第2圖之調整模塊250設置控制寄存器2511~251M從而選取控制邏輯251~251N中的一個或多個,以所選取的控制邏輯調整第一線程以及第二線程佔用硬體資源之比例。在其它實施例中,可以由使用者(如果開放給使用者選擇的話)或者程序開發者,或者一能夠自動計算上述公平係數之調試程序透過特殊模塊寄存器(Model Specific Register,MSR)寫指令write MSR設置控制寄存器2511~251M從而選取對應的控制邏輯251~251N中的一個或多個,以所選取的控制邏輯調整第一線程以及第二線程佔用硬體資源之比例。舉例而言,調試模塊150或250(或使用者或程序開發者或調試程序)根據要同步執行的多個線程來分別統計出第一和第二多線退出速率、第一和第二單線退出速率來計算公平係數A,從而選擇控制邏輯251~251N中使得公平係數A最小的控制邏輯,在同步多線程地執行第一和第二線程時,由該選擇的控制邏輯來控制硬件資源(如保留站隊列)的分配。
第3圖係顯示根據本發明之一實施例所述之調度方法之流程圖。如第3圖所示,首先,同步多線程地執行第一線程之指令以及第二線程之指令(步驟S31)。當完成第一線程之指令之一者時,按照第一線程中的指令順序退出完成的第一線程之指令(步驟S32)。當完成第二線程之指令之一者時,按
照第二線程中的指令順序退出完成的第二線程之指令(步驟S33)。值得注意的是,步驟S32和S33的執行不分先後。接著統計第一線程之指令之第一多線退出速率(步驟S34)。統計第二線程之指令之第二多線退出速率(步驟S35)。根據第一線程之第一多線退出速率以及第二線程之第二多線退出速率調整第一線程以及第二線程分別佔用硬體資源之比例(步驟S36),使得處理器之執行效率最高。
本發明的處理器及其調度方法根據多線程的實際執行統計各線程的退出速率,根據統計的退出速率動態調整處理器的硬體資源的分配,使得處理器的執行效率最高。因為不同線程以及線程的不同組合在同步多線程地執行時的多線退出速率都會有所不同,本發明的處理器的調整模塊中內置了多種不同的控制邏輯供選擇來控制硬體資源的分配,根據不同線程的退出速率來切換不同的控制邏輯,靈活性更強。
以上所述為實施例的概述特徵。所屬技術領域中具有通常知識者應可以輕而易舉地利用本發明為基礎設計或調整以實行相同的目的和/或達成此處介紹的實施例的相同優點。所屬技術領域中具有通常知識者也應了解相同的配置不應背離本創作的精神與範圍,在不背離本創作的精神與範圍下他們可做出各種改變、取代和交替。說明性的方法僅表示示範性的步驟,但這些步驟並不一定要以所表示的順序執行。可另外加入、取代、改變順序和/或消除步驟以視情況而作調整,並與所揭露的實施例精神和範圍一致。
Claims (20)
- 一種處理器,包括:一執行單元,用以同步多線程地執行一第一線程之指令以及一第二線程之指令;一退出模塊,按照上述第一線程中的指令順序退出完成的上述第一線程之指令,並且按照上述第二線程中的指令順序退出完成的上述第二線程之指令;一第一退出計數器,用以統計上述第一線程之指令之一第一多線退出速率;一第二退出計數器,用以統計上述第二線程之指令之一第二多線退出速率;以及一調整模塊,根據上述第一多線退出速率以及上述第二多線退出速率,調整上述第一線程以及上述第二線程分別佔用上述處理器之一硬體資源之比例,使得上述處理器之執行效率最高。
- 如申請專利範圍第1項所述之處理器,其中:上述第一退出計數器計數上述退出模塊於一第一既定數量之時脈週期中所退出之上述第一線程之指令之一第一指令數目,其中上述第一多線退出速率係為上述第一指令數目除以上述第一既定數量;以及上述第二退出計數器計數上述退出模塊於一第二既定數量之時脈週期中所退出之上述第二線程之指令之一第二指令數目,其中上述第二多線退出速率係為上述第二指令數目除以上述第二既定數量。
- 如申請專利範圍第1項所述之處理器,其中上述退出模塊辨識其所退出的指令係屬於上述第一線程或上述第二線程,並通知對應的上述第一退出計數器或上述第二退出計數器。
- 如申請專利範圍第1項所述之處理器,其中上述第一退出計數器更統計上述第一線程之指令之一第一單線退出速率,上述第二退出計數器更統計上述第二線程之指令之一第二單線退出速率,且上述調整模塊根據一第一公平係數以及一第二公平係數之和,調整上述第一線程以及上述第二線程分別佔用上述硬體資源之比例,其中上述第一單線退出速率係為上述執行單元單線執行上述第一線程之指令時平均於每一時脈週期中退出之指令數目,其中上述第二單線退出速率係為上述執行單元單線執行上述第二線程之指令時平均於每一時脈週期中退出之指令數目,其中上述第一公平係數係為上述第一單線退出速率除以上述第一多線退出速率,上述第二公平係數係為上述第二單線退出速率除以上述第二多線退出速率。
- 如申請專利範圍第4項所述之處理器,其中上述調整模塊調整上述第一線程以及上述第二線程分別佔用上述硬體資源之比例使得上述第一公平係數與上述第二公平係數之和盡可能小。
- 如申請專利範圍第4項所述之處理器,其中上述調整模塊包括複數控制邏輯,其中上述調整模塊選取一個或多個使得上述第一公平係數與上述第二公平係數之和最小的控制邏輯,並且根據所選取之上述控制邏輯調整上述第一線程以及 上述第二線程分別佔用上述硬體資源之比例。
- 如申請專利範圍第1項所述之處理器,其中上述調整模塊包括複數控制邏輯,其中上述調整模塊選取上述控制邏輯之至少其中之一,並且根據所選取之上述控制邏輯調整上述第一線程以及上述第二線程分別佔用上述硬體資源之比例。
- 如申請專利範圍第7項所述之處理器,其中上述調整模塊包括複數控制寄存器,用以啟動以及關閉上述複數控制邏輯,其中一使用者係透過一特殊模塊寄存器寫指令設置上述控制寄存器從而選取上述控制邏輯。
- 如申請專利範圍第1項所述之處理器,其中上述調整模塊包括複數控制寄存器,其中上述調整模塊係透過設置上述控制寄存器,調整上述第一線程以及上述第二線程佔用上述硬體資源之一臨限比例。
- 如申請專利範圍第1項所述之處理器,其中上述硬體資源包括一重命名模塊、一保留站或者一退出模塊之資源。
- 一種調度方法,適用於同步多線程之一處理器,包括:同步多線程地執行一第一線程之指令以及一第二線程之指令;按照上述第一線程中的指令順序退出完成的上述第一線程之指令,並且按照上述第二線程中的指令順序退出完成的上述第二線程之指令;利用一第一退出計數器統計上述第一線程之指令之一第一多線退出速率;利用一第二退出計數器統計上述第二線程之指令之一第二 多線退出速率;以及根據上述第一多線退出速率以及上述第二多線退出速率,調整上述第一線程以及上述第二線程分別佔用上述處理器之一硬體資源之比例,使得上述處理器之執行效率最高。
- 如申請專利範圍第11項所述之調度方法,更包括:利用上述第一退出計數器計數上述第一線程於一第一既定數量之時脈週期中所退出之一第一指令數目,其中上述第一多線退出速率係為上述第一指令數目除以上述第一既定數量;以及利用上述第二退出計數器計數上述第二線程於一第二既定數量之時脈週期中所退出之一第二指令數目,其中上述第二多線退出速率係為上述第二指令數目除以上述第二既定數量。
- 如申請專利範圍第11項所述之調度方法,更包括:辨識其所退出的指令係屬於上述第一線程或上述第二線程;以及通知對應的上述第一退出計數器或上述第二退出計數器。
- 如申請專利範圍第11項所述之調度方法,其中上述根據上述第一多線退出速率以及上述第二多線退出速率,調整上述第一線程以及上述第二線程分別佔用上述處理器之一硬體資源之比例之步驟更包括:利用上述第一退出計數器統計上述第一線程之指令之一第一單線退出速率,其中上述第一單線退出速率係為上述執行單元單線執行上述第一線程之指令時平均於每一時脈週 期中退出之指令數目;利用上述第二退出計數器統計上述第二線程之指令之一第二單線退出速率,其中上述第二單線退出速率係為上述執行單元單線執行上述第二線程之指令時平均於每一時脈週期中退出之指令數目;將上述第一單線退出速率除以上述第一多線退出速率而得一第一公平係數;將上述第二單線退出速率除以上述第二多線退出速率而得一第二公平係數;以及根據上述第一公平係數以及上述第二公平係數之和,調整上述第一線程以及上述第二線程分別佔用上述硬體資源之比例。
- 如申請專利範圍第14項所述之調度方法,其中上述調整上述第一線程以及上述第二線程分別佔用上述硬體資源之比例之步驟更包括:最小化上述第一公平係數與上述第二公平係數之和。
- 如申請專利範圍第14項所述之調度方法,更包括:從複數控制邏輯中選取一個或多個使得上述第一公平係數與上述第二公平係數之和最小的控制邏輯;以及根據所選取之上述控制邏輯調整上述第一線程以及上述第二線程分別佔用上述硬體資源之比例。
- 如申請專利範圍第11項所述之調度方法,其中上述根據上述第一多線退出速率以及上述第二多線退出速率調整上述第一線程以及上述第二線程分別佔用上述硬體資源之比例 之步驟包括:從複數控制邏輯中選取至少其中之一;以及根據所選取之上述控制邏輯,調整上述第一線程以及上述第二線程分別佔用上述硬體資源之比例。
- 如申請專利範圍第17項所述之調度方法,其中上述選取上述控制邏輯之至少其中之一之步驟更包括:透過一特殊模塊寄存器寫指令設置複數控制寄存器從而選取上述控制邏輯。
- 如申請專利範圍第11項所述之調度方法,其中上述根據上述第一多線退出速率以及上述第二多線退出速率調整上述第一線程以及上述第二線程分別佔用上述硬體資源之比例之步驟更包括:設置複數控制寄存器從而調整上述第一線程以及上述第二線程佔用上述硬體資源之一臨限比例。
- 如申請專利範圍第11項所述之調度方法,其中上述硬體資源包括一重命名模塊、一保留站或者一退出模塊之資源。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
??201610435604.8 | 2016-06-17 | ||
CN201610435604.8A CN106126336B (zh) | 2016-06-17 | 2016-06-17 | 处理器以及调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201800938A TW201800938A (zh) | 2018-01-01 |
TWI624789B true TWI624789B (zh) | 2018-05-21 |
Family
ID=57470932
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105123172A TWI624789B (zh) | 2016-06-17 | 2016-07-22 | 處理器以及調度方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10209998B2 (zh) |
CN (1) | CN106126336B (zh) |
TW (1) | TWI624789B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102017103197A1 (de) * | 2017-02-16 | 2018-08-16 | Schaeffler Technologies AG & Co. KG | Elektronikgehäuse für einen E-Achsen-Antrieb und E-Achse mit Elektronikgehäuse |
CN109308220B (zh) * | 2017-07-26 | 2021-12-14 | 华为技术有限公司 | 共享资源分配方法及装置 |
US10558499B2 (en) * | 2017-10-26 | 2020-02-11 | Advanced Micro Devices, Inc. | Wave creation control with dynamic resource allocation |
CN108415730B (zh) * | 2018-01-30 | 2021-06-01 | 上海兆芯集成电路有限公司 | 微指令调度方法及使用此方法的装置 |
CN108279928B (zh) * | 2018-01-30 | 2021-03-19 | 上海兆芯集成电路有限公司 | 微指令调度方法及使用此方法的装置 |
CN108304251B (zh) * | 2018-02-06 | 2021-11-19 | 网宿科技股份有限公司 | 线程同步方法及服务器 |
US11068303B2 (en) * | 2019-02-19 | 2021-07-20 | International Business Machines Corporation | Adjusting thread balancing in response to disruptive complex instruction |
CN111124651B (zh) * | 2019-12-27 | 2023-05-23 | 中通服公众信息产业股份有限公司 | 一种分布式环境多线程并发调度的方法 |
TWI748513B (zh) * | 2020-06-12 | 2021-12-01 | 鴻海精密工業股份有限公司 | 資料處理方法、系統、電子裝置及存儲介質 |
CN112379928B (zh) * | 2020-11-11 | 2023-04-07 | 海光信息技术股份有限公司 | 指令调度方法以及包括指令调度单元的处理器 |
CN117389731B (zh) * | 2023-10-20 | 2024-04-02 | 上海芯高峰微电子有限公司 | 数据处理方法和装置、芯片、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1645317A (zh) * | 1999-04-29 | 2005-07-27 | 英特尔公司 | 用于在一个多线程处理器内进行线程切换的方法和装置 |
CN102909696A (zh) * | 2012-10-24 | 2013-02-06 | 宜兴市芳桥实验小学 | 一种多功能锤子 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6658447B2 (en) * | 1997-07-08 | 2003-12-02 | Intel Corporation | Priority based simultaneous multi-threading |
US8984517B2 (en) * | 2004-02-04 | 2015-03-17 | Intel Corporation | Sharing idled processor execution resources |
US7962314B2 (en) * | 2007-12-18 | 2011-06-14 | Global Foundries Inc. | Mechanism for profiling program software running on a processor |
US8285973B2 (en) * | 2008-08-04 | 2012-10-09 | International Business Machines Corporation | Thread completion rate controlled scheduling |
WO2011120019A2 (en) | 2010-03-26 | 2011-09-29 | Virtualmetrix, Inc. | Fine grain performance resource management of computer systems |
US20140181484A1 (en) * | 2012-12-21 | 2014-06-26 | James Callister | Mechanism to provide high performance and fairness in a multi-threading computer system |
CN104216683A (zh) * | 2013-05-31 | 2014-12-17 | 国际商业机器公司 | 利用同步多线程进行数据处理的方法及其*** |
-
2016
- 2016-06-17 CN CN201610435604.8A patent/CN106126336B/zh active Active
- 2016-07-22 TW TW105123172A patent/TWI624789B/zh active
- 2016-08-05 US US15/229,529 patent/US10209998B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1645317A (zh) * | 1999-04-29 | 2005-07-27 | 英特尔公司 | 用于在一个多线程处理器内进行线程切换的方法和装置 |
CN102909696A (zh) * | 2012-10-24 | 2013-02-06 | 宜兴市芳桥实验小学 | 一种多功能锤子 |
Also Published As
Publication number | Publication date |
---|---|
CN106126336B (zh) | 2019-06-04 |
CN106126336A (zh) | 2016-11-16 |
US10209998B2 (en) | 2019-02-19 |
TW201800938A (zh) | 2018-01-01 |
US20170364361A1 (en) | 2017-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI624789B (zh) | 處理器以及調度方法 | |
US11531543B2 (en) | Backpressure control using a stop signal for a multi-threaded, self-scheduling reconfigurable computing fabric | |
US11915057B2 (en) | Computational partition for a multi-threaded, self-scheduling reconfigurable computing fabric | |
US11150900B2 (en) | Execution or write mask generation for data selection in a multi-threaded, self-scheduling reconfigurable computing fabric | |
CN108089883B (zh) | 基于推测度量将资源分配给线程 | |
US20190303145A1 (en) | Efficient Loop Execution for a Multi-Threaded, Self-Scheduling Reconfigurable Computing Fabric | |
KR102335194B1 (ko) | 명령어 체이닝 능력을 이용한 멀티스레드형 프로세서에서의 기회 멀티스레딩 | |
US7610473B2 (en) | Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor | |
US9645819B2 (en) | Method and apparatus for reducing area and complexity of instruction wakeup logic in a multi-strand out-of-order processor | |
TW554287B (en) | Method and apparatus for managing resources in a multithreaded processor | |
US8117618B2 (en) | Forward progress mechanism for a multithreaded processor | |
US20080163230A1 (en) | Method and apparatus for selection among multiple execution threads | |
TW200411564A (en) | Method and apparatus for implementing thread replacement for optimal performance in a two-tiered multithreading structure | |
US9069565B2 (en) | Processor and control method of processor | |
US9952871B2 (en) | Controlling execution of instructions for a processing pipeline having first out-of order execution circuitry and second execution circuitry | |
US10083066B2 (en) | Processing data by using simultaneous multithreading | |
CN109445565A (zh) | 一种基于流多处理器内核独占和预留的gpu服务质量保障方法 | |
US8151097B2 (en) | Multi-threaded system with branch | |
US20100095305A1 (en) | Simultaneous multithread instruction completion controller | |
Gottschlag et al. | Mechanism to mitigate avx-induced frequency reduction | |
WO2020132841A1 (zh) | 一种基于多线程的指令处理方法及装置 | |
EP4386554A1 (en) | Instruction distribution method and device for multithreaded processor, and storage medium | |
CN100377076C (zh) | 一种应用于同时多线程处理器的取指控制装置及其方法 | |
JP2010061642A (ja) | スレッドのスケジューリングテクニック | |
CN114138341A (zh) | 微指令缓存资源的调度方法、装置、程序产品以及芯片 |