TWI624789B - 處理器以及調度方法 - Google Patents

處理器以及調度方法 Download PDF

Info

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
Application number
TW105123172A
Other languages
English (en)
Other versions
TW201800938A (zh
Inventor
楊夢晨
Original Assignee
上海兆芯集成電路有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 上海兆芯集成電路有限公司 filed Critical 上海兆芯集成電路有限公司
Publication of TW201800938A publication Critical patent/TW201800938A/zh
Application granted granted Critical
Publication of TWI624789B publication Critical patent/TWI624789B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/5038Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling 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. 一種處理器,包括:一執行單元,用以同步多線程地執行一第一線程之指令以及一第二線程之指令;一退出模塊,按照上述第一線程中的指令順序退出完成的上述第一線程之指令,並且按照上述第二線程中的指令順序退出完成的上述第二線程之指令;一第一退出計數器,用以統計上述第一線程之指令之一第一多線退出速率;一第二退出計數器,用以統計上述第二線程之指令之一第二多線退出速率;以及一調整模塊,根據上述第一多線退出速率以及上述第二多線退出速率,調整上述第一線程以及上述第二線程分別佔用上述處理器之一硬體資源之比例,使得上述處理器之執行效率最高。
  2. 如申請專利範圍第1項所述之處理器,其中:上述第一退出計數器計數上述退出模塊於一第一既定數量之時脈週期中所退出之上述第一線程之指令之一第一指令數目,其中上述第一多線退出速率係為上述第一指令數目除以上述第一既定數量;以及上述第二退出計數器計數上述退出模塊於一第二既定數量之時脈週期中所退出之上述第二線程之指令之一第二指令數目,其中上述第二多線退出速率係為上述第二指令數目除以上述第二既定數量。
  3. 如申請專利範圍第1項所述之處理器,其中上述退出模塊辨識其所退出的指令係屬於上述第一線程或上述第二線程,並通知對應的上述第一退出計數器或上述第二退出計數器。
  4. 如申請專利範圍第1項所述之處理器,其中上述第一退出計數器更統計上述第一線程之指令之一第一單線退出速率,上述第二退出計數器更統計上述第二線程之指令之一第二單線退出速率,且上述調整模塊根據一第一公平係數以及一第二公平係數之和,調整上述第一線程以及上述第二線程分別佔用上述硬體資源之比例,其中上述第一單線退出速率係為上述執行單元單線執行上述第一線程之指令時平均於每一時脈週期中退出之指令數目,其中上述第二單線退出速率係為上述執行單元單線執行上述第二線程之指令時平均於每一時脈週期中退出之指令數目,其中上述第一公平係數係為上述第一單線退出速率除以上述第一多線退出速率,上述第二公平係數係為上述第二單線退出速率除以上述第二多線退出速率。
  5. 如申請專利範圍第4項所述之處理器,其中上述調整模塊調整上述第一線程以及上述第二線程分別佔用上述硬體資源之比例使得上述第一公平係數與上述第二公平係數之和盡可能小。
  6. 如申請專利範圍第4項所述之處理器,其中上述調整模塊包括複數控制邏輯,其中上述調整模塊選取一個或多個使得上述第一公平係數與上述第二公平係數之和最小的控制邏輯,並且根據所選取之上述控制邏輯調整上述第一線程以及 上述第二線程分別佔用上述硬體資源之比例。
  7. 如申請專利範圍第1項所述之處理器,其中上述調整模塊包括複數控制邏輯,其中上述調整模塊選取上述控制邏輯之至少其中之一,並且根據所選取之上述控制邏輯調整上述第一線程以及上述第二線程分別佔用上述硬體資源之比例。
  8. 如申請專利範圍第7項所述之處理器,其中上述調整模塊包括複數控制寄存器,用以啟動以及關閉上述複數控制邏輯,其中一使用者係透過一特殊模塊寄存器寫指令設置上述控制寄存器從而選取上述控制邏輯。
  9. 如申請專利範圍第1項所述之處理器,其中上述調整模塊包括複數控制寄存器,其中上述調整模塊係透過設置上述控制寄存器,調整上述第一線程以及上述第二線程佔用上述硬體資源之一臨限比例。
  10. 如申請專利範圍第1項所述之處理器,其中上述硬體資源包括一重命名模塊、一保留站或者一退出模塊之資源。
  11. 一種調度方法,適用於同步多線程之一處理器,包括:同步多線程地執行一第一線程之指令以及一第二線程之指令;按照上述第一線程中的指令順序退出完成的上述第一線程之指令,並且按照上述第二線程中的指令順序退出完成的上述第二線程之指令;利用一第一退出計數器統計上述第一線程之指令之一第一多線退出速率;利用一第二退出計數器統計上述第二線程之指令之一第二 多線退出速率;以及根據上述第一多線退出速率以及上述第二多線退出速率,調整上述第一線程以及上述第二線程分別佔用上述處理器之一硬體資源之比例,使得上述處理器之執行效率最高。
  12. 如申請專利範圍第11項所述之調度方法,更包括:利用上述第一退出計數器計數上述第一線程於一第一既定數量之時脈週期中所退出之一第一指令數目,其中上述第一多線退出速率係為上述第一指令數目除以上述第一既定數量;以及利用上述第二退出計數器計數上述第二線程於一第二既定數量之時脈週期中所退出之一第二指令數目,其中上述第二多線退出速率係為上述第二指令數目除以上述第二既定數量。
  13. 如申請專利範圍第11項所述之調度方法,更包括:辨識其所退出的指令係屬於上述第一線程或上述第二線程;以及通知對應的上述第一退出計數器或上述第二退出計數器。
  14. 如申請專利範圍第11項所述之調度方法,其中上述根據上述第一多線退出速率以及上述第二多線退出速率,調整上述第一線程以及上述第二線程分別佔用上述處理器之一硬體資源之比例之步驟更包括:利用上述第一退出計數器統計上述第一線程之指令之一第一單線退出速率,其中上述第一單線退出速率係為上述執行單元單線執行上述第一線程之指令時平均於每一時脈週 期中退出之指令數目;利用上述第二退出計數器統計上述第二線程之指令之一第二單線退出速率,其中上述第二單線退出速率係為上述執行單元單線執行上述第二線程之指令時平均於每一時脈週期中退出之指令數目;將上述第一單線退出速率除以上述第一多線退出速率而得一第一公平係數;將上述第二單線退出速率除以上述第二多線退出速率而得一第二公平係數;以及根據上述第一公平係數以及上述第二公平係數之和,調整上述第一線程以及上述第二線程分別佔用上述硬體資源之比例。
  15. 如申請專利範圍第14項所述之調度方法,其中上述調整上述第一線程以及上述第二線程分別佔用上述硬體資源之比例之步驟更包括:最小化上述第一公平係數與上述第二公平係數之和。
  16. 如申請專利範圍第14項所述之調度方法,更包括:從複數控制邏輯中選取一個或多個使得上述第一公平係數與上述第二公平係數之和最小的控制邏輯;以及根據所選取之上述控制邏輯調整上述第一線程以及上述第二線程分別佔用上述硬體資源之比例。
  17. 如申請專利範圍第11項所述之調度方法,其中上述根據上述第一多線退出速率以及上述第二多線退出速率調整上述第一線程以及上述第二線程分別佔用上述硬體資源之比例 之步驟包括:從複數控制邏輯中選取至少其中之一;以及根據所選取之上述控制邏輯,調整上述第一線程以及上述第二線程分別佔用上述硬體資源之比例。
  18. 如申請專利範圍第17項所述之調度方法,其中上述選取上述控制邏輯之至少其中之一之步驟更包括:透過一特殊模塊寄存器寫指令設置複數控制寄存器從而選取上述控制邏輯。
  19. 如申請專利範圍第11項所述之調度方法,其中上述根據上述第一多線退出速率以及上述第二多線退出速率調整上述第一線程以及上述第二線程分別佔用上述硬體資源之比例之步驟更包括:設置複數控制寄存器從而調整上述第一線程以及上述第二線程佔用上述硬體資源之一臨限比例。
  20. 如申請專利範圍第11項所述之調度方法,其中上述硬體資源包括一重命名模塊、一保留站或者一退出模塊之資源。
TW105123172A 2016-06-17 2016-07-22 處理器以及調度方法 TWI624789B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 国际商业机器公司 利用同步多线程进行数据处理的方法及其***

Patent Citations (2)

* Cited by examiner, † Cited by third party
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) 微指令缓存资源的调度方法、装置、程序产品以及芯片