TWI716074B - 提升cpu性能的方法及裝置和電子設備 - Google Patents
提升cpu性能的方法及裝置和電子設備 Download PDFInfo
- Publication number
- TWI716074B TWI716074B TW108129453A TW108129453A TWI716074B TW I716074 B TWI716074 B TW I716074B TW 108129453 A TW108129453 A TW 108129453A TW 108129453 A TW108129453 A TW 108129453A TW I716074 B TWI716074 B TW I716074B
- Authority
- TW
- Taiwan
- Prior art keywords
- thread
- cpu
- lock
- mutex
- spin lock
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 230000007717 exclusion Effects 0.000 claims abstract description 7
- 230000007958 sleep Effects 0.000 claims description 13
- 108010001267 Protein Subunits Proteins 0.000 claims 1
- 230000002618 waking effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 239000006227 byproduct Substances 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 229910021421 monocrystalline silicon Inorganic materials 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001568 sexual effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- 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]
-
- 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- 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/5044—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 hardware capabilities
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
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)
- Microcomputers (AREA)
- Power Sources (AREA)
- Advance Control (AREA)
Abstract
本說明書實施例提供一種提升CPU性能的方法及裝置和電子設備,所述CPU內每個CPU核心設置有對應的互斥鎖,所述方法包括:令每個CPU核心內的執行緒爭搶所在CPU核心的互斥鎖,以獲取爭搶到所述互斥鎖的執行緒;令爭搶到所述互斥鎖的執行緒爭搶CPU的自旋鎖,以獲取爭搶到所述自旋鎖的目標執行緒;執行爭搶到所述自旋鎖的目標執行緒對應的關鍵區域;在執行完所述目標執行緒對應的關鍵區域後,釋放所述目標執行緒爭搶到的互斥鎖和自旋鎖。
Description
本說明書實施例涉及網際網路技術領域,尤其涉及一種提升CPU性能的方法及裝置和電子設備。
CPU(Central Processing Unit,中央處理器)在處理多個執行關鍵區域(Criticalsection,也稱為臨界區)的執行緒時,一次只會執行一個執行緒的關鍵區域。為此,這些多個執行緒需要爭搶CPU的自旋鎖(spinlock)。
如圖1所示的為一個自旋鎖爭搶的流程示意圖:
步驟1:開始。當多個執行緒併發執行關鍵區域時,這些執行緒爭搶CPU的自旋鎖;
步驟2:判斷目標執行緒是否爭搶到自旋鎖;若是跳轉步驟4;若否跳轉步驟3;
步驟3:對於那些沒有爭搶到自旋鎖的執行緒,則持續檢測自旋鎖是否被釋放,若釋放跳轉至步驟2;
步驟4:對於爭搶到自旋鎖的目標執行緒,該目標執行緒所在CPU核心開始執行目標執行緒的關鍵區域;
步驟5:在執行完目標執行緒的關鍵區域後,釋放該目標執行緒爭搶到的自旋鎖。
透過圖1,可以發現如果運行的執行緒數大於CPU核心數目,而執行關鍵區域的CPU只有一個執行緒(即自旋鎖的擁有者);但是作業系統並不知道哪一個執行緒是自旋鎖的擁有者,因此為了保證執行緒的公平性,會經常打斷自旋鎖擁有者執行關鍵區域,以喚醒那些處於等待自旋鎖的執行緒。然而由於目標執行緒的關鍵區域還沒有執行完畢,自旋鎖也沒有被釋放,即使喚醒其它處於等待自旋鎖的執行緒,也無法爭搶自旋鎖,一方面會增加這些執行緒做無用的檢測操作,另一方面自旋鎖的擁有者由於經常被打斷,反而增加了執行關鍵區域所需的時間。
本說明書實施例提供的一種提升CPU性能的方法及裝置和電子設備,用於解決上述CPU執行關鍵區域時效率較低的問題。
根據本說明書實施例的第一方面,提供一種提升CPU性能的方法,所述CPU內每個CPU核心設置有對應的互斥鎖,所述方法包括:
令每個CPU核心內的執行緒爭搶所在CPU核心的互斥鎖,以獲取爭搶到所述互斥鎖的執行緒;
令爭搶到所述互斥鎖的執行緒爭搶CPU的自旋鎖,以獲取爭搶到所述自旋鎖的目標執行緒;
執行爭搶到所述自旋鎖的目標執行緒對應的關鍵區域;
在執行完所述目標執行緒對應的關鍵區域後,釋放所述目標執行緒爭搶到的互斥鎖和自旋鎖。
可選的,所述釋放所述目標執行緒爭搶到的互斥鎖和自旋鎖,具體包括:
先釋放所述目標執行緒爭搶到的自旋鎖,後釋放所述目標執行緒爭搶到的互斥鎖。
可選的,所述方法還包括:
令沒有爭搶到所述自旋鎖的執行緒,持續檢測該自旋鎖是否被釋放;以使沒有爭搶到所述自旋鎖的執行緒在檢測到該自旋鎖被釋放後,重新爭搶所述CPU的自旋鎖。
可選的,所述方法還包括:
令沒有爭搶到所述互斥鎖的執行緒進行休眠,以釋放佔用所在CPU核心的資源。
可選的,在釋放所述目標執行緒爭搶到的互斥鎖後,所述方法還包括:
如果被釋放的互斥鎖存在休眠的執行緒,喚醒休眠的執行緒,以使休眠的執行緒進入該互斥鎖對應的CPU核心重新爭搶該互斥鎖。
可選的,所述CPU核心的互斥鎖位於CPU的私有快取中。
根據本說明書實施例的第二方面,提供一種提升CPU性能的裝置,所述CPU內每個CPU核心設置有對應的互斥鎖,所述裝置包括:
第一爭搶單元,令每個CPU核心內的執行緒爭搶所在CPU核心的互斥鎖,以獲取爭搶到所述互斥鎖的執行緒;
第二爭搶單元,令爭搶到所述互斥鎖的執行緒爭搶CPU的自旋鎖,以獲取爭搶到所述自旋鎖的目標執行緒;
執行單元,執行爭搶到所述自旋鎖的目標執行緒對應的關鍵區域;
釋放單元,在執行完所述目標執行緒對應的關鍵區域後,釋放所述目標執行緒爭搶到的互斥鎖和自旋鎖。
可選的,所述釋放單元,具體包括:
在執行完所述目標執行緒對應的關鍵區域後,先釋放所述目標執行緒爭搶到的自旋鎖,後釋放所述目標執行緒爭搶到的互斥鎖。
可選的,所述裝置還包括:
檢查子單元,令沒有爭搶到所述自旋鎖的執行緒,持續檢測該自旋鎖是否被釋放;以使沒有爭搶到所述自旋鎖的執行緒在檢測到該自旋鎖被釋放後,重新爭搶所述CPU的自旋鎖。
可選的,所述裝置還包括:
休眠子單元,令沒有爭搶到所述互斥鎖的執行緒進行休眠,以釋放佔用所在CPU核心的資源。
可選的,在所述釋放單元之後,所述裝置還包括:
喚醒子單元,如果被釋放的互斥鎖存在休眠的執行緒,喚醒休眠的執行緒,以使休眠的執行緒進入該互斥鎖對應的CPU核心重新爭搶該互斥鎖。
可選的,所述CPU核心的互斥鎖位於CPU的私有快取中。
根據本說明書實施例的第五方面,提供一種電子設備,包括:
處理器;
用於儲存處理器可執行指令的儲存器;
其中,所述處理器被配置為上述任一項提升CPU性能的方法。
本說明書實施例,提供了一種提升CPU性能的方案,透過在自旋鎖中為每一個CPU核心引入了互斥鎖(mutex),在避免互斥鎖本身非高昂開銷的同時,保證自旋鎖的擁有者完全佔用CPU資源,加速關鍵區域的執行,最終提升整體CPU的處理性能。
這裡將詳細地對示例性實施例進行說明,其示例表示在圖式中。下面的描述涉及圖式時,除非另有表示,不同圖式中的相同數字表示相同或相似的要素。以下示例性實施例中所描述的實施方式並不代表與本說明書相一致的所有實施方式。相反,它們僅是與如申請專利範圍中所詳述的、本說明書的一些方面相一致的裝置和方法的例子。
在本說明書使用的術語是僅僅出於描述特定實施例的目的,而非旨在限制本說明書。在本說明書和申請專利範圍中所使用的單數形式的“一種”、“所述”和“該”也旨在包括多數形式,除非上下文清楚地表示其他含義。還應當理解,本文中使用的術語“和/或”是指並包含一個或多個相關聯的列出專案的任何或所有可能組合。
應當理解,儘管在本說明書可能採用術語第一、第二、第三等來描述各種資訊,但這些資訊不應限於這些術語。這些術語僅用來將同一類型的資訊彼此區分開。例如,在不脫離本說明書範圍的情況下,第一資訊也可以被稱為第二資訊,類似地,第二資訊也可以被稱為第一資訊。取決於語境,如在此所使用的詞語“如果”可以被解釋成為“在……時”或“當……時”或“回應於確定”。
CPU是一塊超大規模的積體電路,是一台電腦設備的大腦。CPU的功能主要是解釋電腦指令以及處理電腦軟體中的資料。
請參考圖2a所示的本說明書提供的CPU的示意圖,圖2a整體是一個CPU200,而CPU200正面中心的小方塊就是CPU核心211(CPU Die)。CPU核心211是CPU200中最重要的組成部分,通常CPU核心211可以是由單晶矽以一定的製程製造出來的。CPU200所有的計算、接受/儲存命令、處理資料都由該CPU核心211執行。一般的,CPU核心211可以具有固定的邏輯結構,並至少佈局有一級快取、二級快取、執行單元、指令級單元和匯流排介面等邏輯單元。
通常,一顆CPU可以包含多個CPU核心,一個CPU核心又可以包含多個CPU核(CPU Core)。如圖2b所示的CPU架構示意圖,該CPU包含了4個CPU核心(圖中核心),並且每個CPU核心又包含4個CPU核(圖中核)。一般的,每個CPU核都可以執行一個執行緒,即一個CPU核可以對應一個執行緒。
需要說明的是,本說明書中所述執行緒,可以是指thread(執行緒),也可以指process(進程)。
如前所述,CPU在處理多個執行關鍵區域執行緒時,一次只會執行一個執行緒的關鍵區域。當多個CPU核心內執行緒併發執行同一個關鍵區域時,需要這些CPU核心內的執行緒爭搶自旋鎖,只有拿到自旋鎖的目標執行緒才可以執行關鍵區域;待執行完關鍵區域後,該目標執行緒就會釋放拿到的自旋鎖,再由其它執行緒繼續爭搶,如此重複直至所有執行關鍵區域的執行緒都執行完畢。
如前所述,現有自旋鎖爭搶機制下,作業系統並不知道哪一個執行緒是自旋鎖的擁有者,因此為了保證執行緒的公平性,會經常打斷自旋鎖擁有者執行關鍵區域,以喚醒那些處於等待自旋鎖的執行緒。然而由於目標執行緒的關鍵區域還沒有執行完畢,自旋鎖也沒有被釋放,即使喚醒其它處於等待自旋鎖的執行緒,也無法爭搶自旋鎖,一方面會增加這些執行緒做無用的檢測操作,浪費CPU資源;另一方面自旋鎖的擁有者由於經常被打斷,反而增加了執行關鍵區域所需的時間;再一方面,處於等待自旋鎖的執行緒依然佔用著寶貴的CPU資源,對於爭搶到自旋鎖的目標執行緒來說,無法使用全部CPU資源執行關鍵區域,相對也就增加了執行關鍵區域所需的時間。
因此,需要提供一種新的自旋鎖爭搶機制,以解決CPU執行關鍵區域時效率較低的問題。
本說明書提供了一種提升CPU性能的方案,透過優化自旋鎖處理流程,並在自旋鎖中為每一個CPU核心引入了互斥鎖,在避免互斥鎖本身非高昂開銷的同時,保證自旋鎖的擁有者完全佔用CPU資源,加速關鍵區域的執行,最終提升整體CPU的處理性能(使得CPU性能可以提升到近乎於理論值)。
以下請參考圖3所示的本說明書提供了一種提升CPU性能的方法,該方法可以應用於CPU,所述CPU內每個CPU核心設置有對應的互斥鎖,所述方法包括:
步驟310:令每個CPU核心內的執行緒爭搶所在CPU核心的互斥鎖,以獲取爭搶到所述互斥鎖的執行緒;
步驟320:令爭搶到所述互斥鎖的執行緒爭搶CPU的自旋鎖,以獲取爭搶到所述自旋鎖的目標執行緒;
步驟330:執行爭搶到所述自旋鎖的目標執行緒對應的關鍵區域;
步驟340:在執行完所述目標執行緒對應的關鍵區域後,釋放所述目標執行緒爭搶到的互斥鎖和自旋鎖。
本說明書中,在原CPU設置的自旋鎖的內部,為每個CPU核心設置對應的互斥鎖。
如圖2b所示,該CPU可以包含4個CPU核心;為此,每個CPU核心均可以分配一個互斥鎖411,而CPU本身還包含一個自旋鎖421。如此,該CPU設置有4個互斥鎖,1個自旋鎖,共計5個鎖。
以下結合圖4所示互斥鎖、自旋鎖爭搶的流程示意圖:
步驟41:開始。
步驟42:爭搶當前CPU核心的互斥鎖。當多執行緒併發執行關鍵區域時,令每個CPU核心內的執行緒爭搶所在CPU核心的互斥鎖。
步驟43:判斷是否爭搶到互斥鎖。由於每個CPU核心對應一個互斥鎖,因此,可以獲取每個CPU核心內爭搶到互斥鎖的執行緒。
若是(爭搶到當前CPU核心的互斥鎖),跳轉到步驟45;
若否(沒有爭搶到當前CPU核心的互斥鎖),跳轉到步驟44。
步驟44:執行緒休眠。
該步驟中,針對那些沒有爭搶到所述互斥鎖的執行緒,可以將其進行休眠,以釋放佔用所在CPU核心的資源,並等待喚醒;一旦休眠執行緒被喚醒則可以跳轉到步驟42,重新爭搶所在CPU核心的互斥鎖。通常,執行緒進行CPU核心後,可以建立執行緒與CPU核心之間的對應關係。這裡,執行緒在休眠時依然保持該對應關係,並在被喚醒後根據索引重新回到對應的CPU核心。
其中,透過令執行緒休眠,以使休眠執行緒不再佔用CPU資源。這樣,對於爭搶到自旋鎖的目標執行緒來說,可以使用最大化的CPU資源加速執行關鍵區域,實現減少執行時間,提升CPU整體性能。
步驟45:判斷是否爭搶到自旋鎖。令爭搶到所述互斥鎖的執行緒爭搶CPU的自旋鎖,以獲取爭搶到所述自旋鎖的目標執行緒。
若是(爭搶到自旋鎖),跳轉到步驟47;
若否(沒有爭搶到自旋鎖),跳轉到步驟46。
步驟46:自旋鎖是否被釋放。對於那些沒有爭搶到自旋鎖的執行緒,可以持續檢測自旋鎖是否被釋放。
若是(檢測到自旋鎖被釋放),跳轉到步驟45,重新爭搶自旋鎖。
若否(檢測到自旋鎖沒有被釋放),重複步驟46。
步驟47:執行關鍵區域。具體地,執行爭搶到所述自旋鎖的目標執行緒對應的關鍵區域。
步驟48:釋放自旋鎖和互斥鎖。具體地,在執行完所述目標執行緒對應的關鍵區域後,釋放所述目標執行緒爭搶到的互斥鎖和自旋鎖。
在一實施例中,可以先釋放所述目標執行緒爭搶到的自旋鎖,後釋放所述目標執行緒爭搶到的互斥鎖。
步驟49:判斷互斥鎖是否有休眠執行緒。具體地,在釋放所述目標執行緒爭搶到的互斥鎖之後,還需要判斷該互斥鎖是否存在休眠的執行緒。
若是(存在休眠的執行緒),跳轉到步驟50;
若否(不存在休眠的執行緒),跳轉到步驟51。
步驟50:喚醒休眠執行緒。如果被釋放的互斥鎖存在休眠的執行緒,喚醒休眠的執行緒,以使休眠的執行緒進入該互斥鎖對應的CPU核心重新爭搶該互斥鎖。並在喚醒操作完成後,跳轉到步驟51。
步驟51:返回。該目標執行緒執行完成。
值得一提的是,上述步驟43中,由於每個CPU核心對應一個互斥鎖,因此可以保證每個CPU核心僅有一個執行緒可以爭搶到互斥鎖(即處於啟動狀態),同時也只有一個執行緒可以爭搶到自旋鎖。需要注點的是,本說明書提供的方案,最終自旋鎖的擁有者同時也是某個CPU核心互斥鎖的擁有者,如此可以保證在單核CPU上,自旋鎖的擁有者不會被打斷,從而可以快速完成關鍵區域操作,加快CPU整體處理性能。
在自旋鎖的擁有者完成關鍵區域後,會釋放自旋鎖;這樣可以保證其它啟動的執行緒(爭搶到互斥鎖但沒有爭搶到自旋鎖的執行緒)搶佔自旋鎖;最後喚醒那些在等待相同CPU核心互斥鎖的執行緒。
需要注意的是,本說明書為每個CPU核心分配一個互斥鎖,只有那些需要做序列化的並且在相同CPU核心的執行緒會使用。互斥鎖可以讓那些沒有搶到互斥鎖的執行緒讓出CPU而進入休眠,同時互斥鎖的內容都可以在一個CPU的私有快取中,因此互斥鎖的操作也會非常迅速。
本說明書提供的實施例,並不要求不同CPU核心上等待自旋鎖的執行緒都進入休眠;其原因是一旦自旋鎖的擁有者釋放自旋鎖,其他競爭者(爭搶到互斥鎖但沒有爭搶到自旋鎖的執行緒)可以迅速獲得,而不需要進行上下文切換(通常上下文切換需要消耗時間)。
綜上所示,本說明書提供的一種提升CPU性能的方案,透過優化自旋鎖處理流程,並在自旋鎖中為每一個CPU核心引入了互斥鎖,在避免互斥鎖本身非高昂開銷的同時,保證自旋鎖的擁有者完全佔用CPU資源,加速關鍵區域的執行,最終提升整體CPU的處理性能(使得CPU性能可以提升到近乎於理論值)。
與前述提升CPU性能的方法實施例相對應,本說明書還提供了提升CPU性能的裝置的實施例。所述裝置實施例可以透過軟體實現,也可以透過硬體或者軟硬體結合的方式實現。以軟體實現為例,作為一個邏輯意義上的裝置,是透過其所在設備的處理器將非易失性儲存器中對應的電腦業務程式指令讀取到儲存器中運行形成的。從硬體層面而言,如圖5所示,為本說明書提升CPU性能的裝置所在設備的一種硬體結構圖,除了圖5所示的處理器、網路介面、內部儲存器以及非易失性儲存器之外,實施例中裝置所在的設備通常根據提升CPU性能的實際功能,還可以包括其他硬體,對此不再贅述。
請參見圖6,為本說明書一實施例提供的提升CPU性能的裝置的模組圖,所述裝置對應了圖3所示實施例,所述CPU內每個CPU核心設置有對應的互斥鎖,所述裝置包括:
第一爭搶單元610,令每個CPU核心內的執行緒爭搶所在CPU核心的互斥鎖,以獲取爭搶到所述互斥鎖的執行緒;
第二爭搶單元620,令爭搶到所述互斥鎖的執行緒爭搶CPU的自旋鎖,以獲取爭搶到所述自旋鎖的目標執行緒;
執行單元630,執行爭搶到所述自旋鎖的目標執行緒對應的關鍵區域;
釋放單元640,在執行完所述目標執行緒對應的關鍵區域後,釋放所述目標執行緒爭搶到的互斥鎖和自旋鎖。
可選的,所述釋放單元640,具體包括:
在執行完所述目標執行緒對應的關鍵區域後,先釋放所述目標執行緒爭搶到的自旋鎖,後釋放所述目標執行緒爭搶到的互斥鎖。
可選的,所述裝置還包括:
檢查子單元,令沒有爭搶到所述自旋鎖的執行緒,持續檢測該自旋鎖是否被釋放;以使沒有爭搶到所述自旋鎖的執行緒在檢測到該自旋鎖被釋放後,重新爭搶所述CPU的自旋鎖。
可選的,所述裝置還包括:
休眠子單元,將沒有爭搶到所述互斥鎖的執行緒釋放佔用所在CPU核心的資源,以使執行緒進行休眠。
可選的,在所述釋放單元640之後,所述裝置還包括:
喚醒子單元,如果被釋放的互斥鎖存在休眠的執行緒,喚醒休眠的執行緒,以使休眠的執行緒進入該互斥鎖對應的CPU核心重新爭搶該互斥鎖。
可選的,所述CPU核心的互斥鎖位於CPU的私有快取中。
上述實施例闡明的系統、裝置、模組或單元,具體可以由電腦晶片或實體實現,或者由具有某種功能的產品來實現。一種典型的實現設備為電腦,電腦的具體形式可以是個人電腦、膝上型電腦、行動電話、相機電話、智慧型電話、個人數位助理、媒體播放機、導航設備、電子郵件收發設備、遊戲控制台、平板電腦、可穿戴設備或者這些設備中的任意幾種設備的組合。
上述裝置中各個單元的功能和作用的實現過程具體詳見上述方法中對應步驟的實現過程,在此不再贅述。
對於裝置實施例而言,由於其基本對應於方法實施例,所以相關之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是實體上分開的,作為單元顯示的部件可以是或者也可以不是實體單元,即可以位於一個地方,或者也可以分佈到多個網路單元上。可以根據實際的需要選擇其中的部分或者全部模組來實現本說明書方案的目的。本領域普通技術人員在不付出創造性勞動的情況下,即可以理解並實施。
以上圖6描述了提升CPU性能的裝置的內部功能模組和結構示意,其實質上的執行主體可以為一種電子設備,包括:
處理器;
用於儲存處理器可執行指令的儲存器;
其中,所述處理器被配置為:
令每個CPU核心內的執行緒爭搶所在CPU核心的互斥鎖,以獲取爭搶到所述互斥鎖的執行緒;其中,所述CPU內每個CPU核心設置有對應的互斥鎖;
令爭搶到所述互斥鎖的執行緒爭搶CPU的自旋鎖,以獲取爭搶到所述自旋鎖的目標執行緒;
執行爭搶到所述自旋鎖的目標執行緒對應的關鍵區域;
在執行完所述目標執行緒對應的關鍵區域後,釋放所述目標執行緒爭搶到的互斥鎖和自旋鎖。
可選的,所述釋放所述目標執行緒爭搶到的互斥鎖和自旋鎖,具體包括:
先釋放所述目標執行緒爭搶到的自旋鎖,後釋放所述目標執行緒爭搶到的互斥鎖。
可選的,還包括:
令沒有爭搶到所述自旋鎖的執行緒,持續檢測該自旋鎖是否被釋放;以使沒有爭搶到所述自旋鎖的執行緒在檢測到該自旋鎖被釋放後,重新爭搶所述CPU的自旋鎖。
可選的,還包括:
令沒有爭搶到所述互斥鎖的執行緒進行休眠,以釋放佔用所在CPU核心的資源。
可選的,在釋放所述目標執行緒爭搶到的互斥鎖後,所述方法還包括:
如果被釋放的互斥鎖存在休眠的執行緒,喚醒休眠的執行緒,以使休眠的執行緒進入該互斥鎖對應的CPU核心重新爭搶該互斥鎖。
可選的,所述CPU核心的互斥鎖位於CPU的私有快取中。
在上述電子設備的實施例中,應理解,該處理器可以是中央處理單元(英文:Central Processing Unit,簡稱:CPU),還可以是其他通用處理器、數位訊號處理器(英文:Digital Signal Processor,簡稱:DSP)、專用積體電路(英文:Application Specific Integrated Circuit,簡稱:ASIC)等。通用處理器可以是微處理器或者該處理器也可以是任何常規的處理器等,而前述的儲存器可以是唯讀記憶體(英文:read-only memory,縮寫:ROM)、隨機存取記憶體(英文:random access memory,簡稱:RAM)、快閃記憶體、硬碟或者固態硬碟。結合本發明實施例所公開的方法的步驟可以直接體現為硬體處理器執行完成,或者用處理器中的硬體及軟體模組組合執行完成。
本說明書中的各個實施例均採用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對於電子設備實施例而言,由於其基本相似於方法實施例,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
本領域技術人員在考慮說明書及實踐這裡公開的發明後,將容易想到本說明書的其它實施方案。本說明書旨在涵蓋本說明書的任何變型、用途或者適應性變化,這些變型、用途或者適應性變化遵循本說明書的一般性原理並包括本說明書未公開的本技術領域中的公知常識或慣用技術手段。說明書和實施例僅被視為示例性的,本說明書的真正範圍和精神由申請專利範圍指出。
應當理解的是,本說明書並不局限於上面已經描述並在圖式中示出的精確結構,並且可以在不脫離其範圍進行各種修改和改變。本說明書的範圍僅由申請專利範圍來限制。
200:CPU
211:CPU核心
610:第一爭搶單元
620:第二爭搶單元
630:執行單元
640:釋放單元
圖1是本說明書一實施例提供的現有自旋鎖爭搶的流程示意圖;
圖2a是本說明書一實施例提供的CPU的示意圖;
圖2b是本說明書一實施例提供的CPU架構的示意圖;
圖3是本說明書一實施例提供的提升CPU性能的方法的流程圖;
圖4是本說明書一實施例提供的互斥鎖、自旋鎖爭搶的流程示意圖;
圖5是本說明書一實施例提供的提升CPU性能的裝置的硬體結構圖;
圖6是本說明書一實施例提供的提升CPU性能的裝置的模組示意圖。
Claims (11)
- 一種提升CPU性能的方法,CPU內每個CPU核心設置有對應的互斥鎖,該方法包括:在該CPU的各該CPU核心上,令該CPU核心內的執行緒爭搶其所在之該CPU核心的互斥鎖;對於沒有爭搶到該互斥鎖的執行緒:令該執行緒進行休眠,以釋放佔用其所在之該CPU核心的資源;保持休眠的該執行緒與其所在之該CPU核心之間的對應關係,以使休眠的該執行緒一旦被喚醒則重新爭搶其所在之該CPU核心的互斥鎖;對於爭搶到該互斥鎖的執行緒:令該執行緒爭搶CPU的自旋鎖,以獲取爭搶到該自旋鎖的目標執行緒;執行爭搶到該自旋鎖的目標執行緒對應的關鍵區域;在執行完該目標執行緒對應的關鍵區域後,釋放該目標執行緒爭搶到的互斥鎖和自旋鎖。
- 根據申請專利範圍第1項所述的方法,該釋放該目標執行緒爭搶到的互斥鎖和自旋鎖,具體包括:先釋放該目標執行緒爭搶到的自旋鎖,後釋放該目標執行緒爭搶到的互斥鎖。
- 根據申請專利範圍第2項所述的方法,該方法還包括:令沒有爭搶到該自旋鎖的執行緒,持續檢測該自旋鎖是否被釋放;以使沒有爭搶到該自旋鎖的執行緒在檢測到該自旋鎖被釋放後,重新爭搶該CPU的自旋鎖。
- 根據申請專利範圍第1項所述的方法,在釋放該目標執行緒爭搶到的互斥鎖之後,該方法還包括:如果被釋放的互斥鎖存在休眠的執行緒,喚醒休眠的執行緒,以使休眠的執行緒進入該互斥鎖對應的CPU核心重新爭搶該互斥鎖。
- 根據申請專利範圍第1項所述的方法,該CPU核心的互斥鎖位於CPU的私有快取中。
- 一種提升CPU性能的裝置,CPU內每個CPU核心設置有對應的互斥鎖,該裝置包括:第一爭搶單元,在該CPU的各該CPU核心上,令該CPU核心內的執行緒爭搶其所在之該CPU核心的互斥鎖;休眠子單元,令沒有爭搶到該互斥鎖的執行緒進行休眠,以釋放佔用其所在之該CPU核心的資源,並保持休眠的該執行緒與其所在之該CPU核心之間的對應關係,以使休眠的該執行緒一旦被喚醒則重新爭搶其所在之該CPU核心的互斥鎖; 第二爭搶單元,令爭搶到該互斥鎖的執行緒爭搶CPU的自旋鎖,以獲取爭搶到該自旋鎖的目標執行緒;執行單元,執行爭搶到該自旋鎖的目標執行緒對應的關鍵區域;釋放單元,在執行完該目標執行緒對應的關鍵區域後,釋放該目標執行緒爭搶到的互斥鎖和自旋鎖。
- 根據申請專利範圍第6項所述的裝置,該釋放單元,具體包括:在執行完該目標執行緒對應的關鍵區域後,先釋放該目標執行緒爭搶到的自旋鎖,後釋放該目標執行緒爭搶到的互斥鎖。
- 根據申請專利範圍第7項所述的裝置,該裝置還包括:檢查子單元,令沒有爭搶到該自旋鎖的執行緒,持續檢測該自旋鎖是否被釋放;以使沒有爭搶到該自旋鎖的執行緒在檢測到該自旋鎖被釋放後,重新爭搶該CPU的自旋鎖。
- 根據申請專利範圍第6項所述的裝置,在該釋放單元之後,該裝置還包括:喚醒子單元,如果被釋放的互斥鎖存在休眠的執行緒,喚醒休眠的執行緒,以使休眠的執行緒進入該互斥鎖 對應的CPU核心重新爭搶該互斥鎖。
- 根據申請專利範圍第6項所述的裝置,該CPU核心的互斥鎖位於CPU的私有快取中。
- 一種電子設備,包括:處理器;用於儲存處理器可執行指令的儲存器;其中,該處理器被配置為申請專利範圍第1至5項中任一項所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910039771.4 | 2019-01-16 | ||
CN201910039771.4A CN110018907A (zh) | 2019-01-16 | 2019-01-16 | 提升cpu性能的方法及装置和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202028965A TW202028965A (zh) | 2020-08-01 |
TWI716074B true TWI716074B (zh) | 2021-01-11 |
Family
ID=67188832
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108129453A TWI716074B (zh) | 2019-01-16 | 2019-08-19 | 提升cpu性能的方法及裝置和電子設備 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10983839B2 (zh) |
EP (1) | EP3850487A1 (zh) |
CN (1) | CN110018907A (zh) |
TW (1) | TWI716074B (zh) |
WO (1) | WO2020150058A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110018907A (zh) | 2019-01-16 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 提升cpu性能的方法及装置和电子设备 |
US20230056500A1 (en) * | 2021-08-18 | 2023-02-23 | Micron Technology, Inc. | Chained resource locking |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100585567C (zh) * | 2004-10-25 | 2010-01-27 | 罗伯特·博世有限公司 | 延迟访问多处理器系统的数据和/或指令的方法和设备 |
US20130290583A1 (en) * | 2012-04-27 | 2013-10-31 | David Dice | System and Method for NUMA-Aware Locking Using Lock Cohorts |
TW201706843A (zh) * | 2015-03-20 | 2017-02-16 | 瑞薩電子股份有限公司 | 資料處理裝置 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5835964A (en) * | 1996-04-29 | 1998-11-10 | Microsoft Corporation | Virtual memory system with hardware TLB and unmapped software TLB updated from mapped task address maps using unmapped kernel address map |
US6826754B1 (en) * | 2000-09-29 | 2004-11-30 | International Business Machines Corporation | Method for eliminating or reducing hang conditions in computer systems |
US20050081204A1 (en) * | 2003-09-25 | 2005-04-14 | International Business Machines Corporation | Method and system for dynamically bounded spinning threads on a contested mutex |
CN104461729B (zh) * | 2013-09-22 | 2019-02-05 | 腾讯科技(北京)有限公司 | 一种资源共享保护方法及装置 |
US9996402B2 (en) * | 2014-04-07 | 2018-06-12 | Oracle International Corporation | System and method for implementing scalable adaptive reader-writer locks |
US9424103B2 (en) * | 2014-09-30 | 2016-08-23 | Hong Kong Applied Science and Technology Research Institute Company Limited | Adaptive lock for a computing system having multiple runtime environments and multiple processing units |
US10042679B2 (en) * | 2016-02-01 | 2018-08-07 | Oracle International Corporation | System and method for promoting reader groups for lock cohorting |
CN105975349A (zh) * | 2016-05-04 | 2016-09-28 | 北京智能管家科技有限公司 | 一种线程锁的优化方法 |
US9842010B1 (en) * | 2016-10-24 | 2017-12-12 | International Business Machines Corporation | Adjustment of a sleep duration for a process based on an expected time for securing a spinlock |
CN108446181A (zh) * | 2018-03-26 | 2018-08-24 | 武汉斗鱼网络科技有限公司 | 对资源限制访问的方法、装置及终端设备 |
CN110018907A (zh) | 2019-01-16 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 提升cpu性能的方法及装置和电子设备 |
-
2019
- 2019-01-16 CN CN201910039771.4A patent/CN110018907A/zh active Pending
- 2019-08-19 TW TW108129453A patent/TWI716074B/zh active
-
2020
- 2020-01-08 EP EP20708241.3A patent/EP3850487A1/en not_active Ceased
- 2020-01-08 WO PCT/US2020/012747 patent/WO2020150058A1/en unknown
- 2020-01-15 US US16/743,971 patent/US10983839B2/en active Active
-
2021
- 2021-04-19 US US17/234,313 patent/US11269693B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100585567C (zh) * | 2004-10-25 | 2010-01-27 | 罗伯特·博世有限公司 | 延迟访问多处理器系统的数据和/或指令的方法和设备 |
US20130290583A1 (en) * | 2012-04-27 | 2013-10-31 | David Dice | System and Method for NUMA-Aware Locking Using Lock Cohorts |
TW201706843A (zh) * | 2015-03-20 | 2017-02-16 | 瑞薩電子股份有限公司 | 資料處理裝置 |
Non-Patent Citations (1)
Title |
---|
Dice, D., Marathe, V. J., & Shavit, N. Lock cohorting: A general technique for designing NUMA locks. ACM Transactions on Parallel Computing (TOPC), 1(2), 1-42. 2015/02/28 * |
Also Published As
Publication number | Publication date |
---|---|
US10983839B2 (en) | 2021-04-20 |
US20210240547A1 (en) | 2021-08-05 |
US20200226001A1 (en) | 2020-07-16 |
TW202028965A (zh) | 2020-08-01 |
WO2020150058A1 (en) | 2020-07-23 |
EP3850487A1 (en) | 2021-07-21 |
CN110018907A (zh) | 2019-07-16 |
US11269693B2 (en) | 2022-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI808506B (zh) | 用於使用者等級執行緒暫止的方法、處理器及系統 | |
US8140823B2 (en) | Multithreaded processor with lock indicator | |
US9753779B2 (en) | Task processing device implementing task switching using multiple state registers storing processor id and task state | |
JP6947723B2 (ja) | 競合の存在下での効率的なタスクスケジューリングのための方法 | |
JP6800850B2 (ja) | 中央処理装置(cpu)と補助プロセッサとの間の改善した関数コールバック機構 | |
JP5673672B2 (ja) | マルチコアプロセッサシステム、制御プログラム、および制御方法 | |
US10802875B2 (en) | Multithread framework for use in pre-boot environment of a system-on-chip | |
TWI716074B (zh) | 提升cpu性能的方法及裝置和電子設備 | |
JP2010044770A (ja) | モニタメモリ待機を用いたキューされたロック | |
WO2013078962A1 (zh) | 实现自适应锁的方法和装置以及多核处理器系统 | |
JP2008513894A (ja) | スレッドライブロックユニット | |
CN101833475A (zh) | 用于增强线程级推测的原语 | |
CN103473135B (zh) | 虚拟化环境下自旋锁lhp现象的处理方法 | |
JP2018534676A5 (zh) | ||
US20120166777A1 (en) | Method and apparatus for switching threads | |
CN109213576B (zh) | 程序死锁检测方法、存储介质、设备及系统 | |
JP2007249960A (ja) | キャッシュライン・ポーリングを実行する方法、装置、プログラム及び情報処理システム | |
JP2012150583A5 (zh) | ||
WO2014158603A1 (en) | System management interrupt handling for multi-core processors | |
US20090007124A1 (en) | Method and mechanism for memory access synchronization | |
CN103140847B (zh) | 调节原子存储器操作以防止拒绝服务的攻击 | |
WO2019047376A1 (zh) | 接口任务调用方法、装置、电子设备及可读存储介质 | |
WO2008157455A2 (en) | Notifying user mode scheduler of blocking events | |
CN110032441B (zh) | 提升服务器性能的方法及装置和电子设备 | |
US9778950B2 (en) | Throttling circuitry |