CN110018907A - 提升cpu性能的方法及装置和电子设备 - Google Patents

提升cpu性能的方法及装置和电子设备 Download PDF

Info

Publication number
CN110018907A
CN110018907A CN201910039771.4A CN201910039771A CN110018907A CN 110018907 A CN110018907 A CN 110018907A CN 201910039771 A CN201910039771 A CN 201910039771A CN 110018907 A CN110018907 A CN 110018907A
Authority
CN
China
Prior art keywords
lock
thread
mutual exclusion
cpu
spin
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
CN201910039771.4A
Other languages
English (en)
Other versions
CN110018907B (zh
Inventor
马凌
何昌华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Alibaba Group Holding Ltd
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
Priority claimed from CN201910039771.4A external-priority patent/CN110018907B/zh
Priority to CN201910039771.4A priority Critical patent/CN110018907B/zh
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Publication of CN110018907A publication Critical patent/CN110018907A/zh
Priority to TW108129453A priority patent/TWI716074B/zh
Priority to PCT/US2020/012747 priority patent/WO2020150058A1/en
Priority to EP20708241.3A priority patent/EP3850487A1/en
Priority to US16/743,971 priority patent/US10983839B2/en
Priority to US17/234,313 priority patent/US11269693B2/en
Publication of CN110018907B publication Critical patent/CN110018907B/zh
Application granted granted Critical
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • 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]
    • 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/5011Allocation 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/5022Mechanisms to release resources
    • 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
    • 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/5044Allocation 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
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support 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性能的方法及装置和电子设备。
背景技术
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的处理性能。
附图说明
图1是本说明书一实施例提供的现有自旋锁争抢的流程示意图;
图2a是本说明书一实施例提供的CPU的示意图;
图2b是本说明书一实施例提供的CPU架构的示意图;
图3是本说明书一实施例提供的提升CPU性能的方法的流程图;
图4是本说明书一实施例提供的互斥锁、自旋锁争抢的流程示意图;
图5是本说明书一实施例提供的提升CPU性能的装置的硬件结构图;
图6是本说明书一实施例提供的提升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核(CPUCore)。如图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的私有缓存中,因此互斥锁的操作也会非常迅速。
本说明书提供的实施例,并不要求不同CPUCPU核心上等待自旋锁的线程都进入睡眠;其原因是一旦自旋锁的拥有者释放自旋锁,其他竞争者(争抢到互斥锁但没有争抢到自旋锁的线程)可以迅速获得,而不需要进行上下文切换(通常上下文切换需要消耗时间)。
综上所示,本说明书提供的一种提升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 SpecificIntegrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,而前述的存储器可以是只读存储器(英文:read-only memory,缩写:ROM)、随机存取存储器(英文:random access memory,简称:RAM)、快闪存储器、硬盘或者固态硬盘。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于电子设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。

Claims (13)

1.一种提升CPU性能的方法,所述CPU内每个CPU核心设置有对应的互斥锁,所述方法包括:
令每个CPU核心内的线程争抢所在CPU核心的互斥锁,以获取争抢到所述互斥锁的线程;
令争抢到所述互斥锁的线程争抢CPU的自旋锁,以获取争抢到所述自旋锁的目标线程;
执行争抢到所述自旋锁的目标线程对应的关键区域;
在执行完所述目标线程对应的关键区域后,释放所述目标线程争抢到的互斥锁和自旋锁。
2.根据权利要求1所述的方法,所述释放所述目标线程争抢到的互斥锁和自旋锁,具体包括:
先释放所述目标线程争抢到的自旋锁,后释放所述目标线程争抢到的互斥锁。
3.根据权利要求2所述的方法,所述方法还包括:
令没有争抢到所述自旋锁的线程,持续检测该自旋锁是否被释放;以使没有争抢到所述自旋锁的线程在检测到该自旋锁被释放后,重新争抢所述CPU的自旋锁。
4.根据权利要求1或2所述的方法,所述方法还包括:
令没有争抢到所述互斥锁的线程进行休眠,以释放占用所在CPU核心的资源。
5.根据权利要求4所述的方法,在释放所述目标线程争抢到的互斥锁之后,所述方法还包括:
如果被释放的互斥锁存在休眠的线程,唤醒休眠的线程,以使休眠的线程进入该互斥锁对应的CPU核心重新争抢该互斥锁。
6.根据权利要求1所述的方法,所述CPU核心的互斥锁位于CPU的私有缓存中。
7.一种提升CPU性能的装置,所述CPU内每个CPU核心设置有对应的互斥锁,所述装置包括:
第一争抢单元,令每个CPU核心内的线程争抢所在CPU核心的互斥锁,以获取争抢到所述互斥锁的线程;
第二争抢单元,令争抢到所述互斥锁的线程争抢CPU的自旋锁,以获取争抢到所述自旋锁的目标线程;
执行单元,执行争抢到所述自旋锁的目标线程对应的关键区域;
释放单元,在执行完所述目标线程对应的关键区域后,释放所述目标线程争抢到的互斥锁和自旋锁。
8.根据权利要求7所述的装置,所述释放单元,具体包括:
在执行完所述目标线程对应的关键区域后,先释放所述目标线程争抢到的自旋锁,后释放所述目标线程争抢到的互斥锁。
9.根据权利要求8所述的装置,所述装置还包括:
检查子单元,令没有争抢到所述自旋锁的线程,持续检测该自旋锁是否被释放;以使没有争抢到所述自旋锁的线程在检测到该自旋锁被释放后,重新争抢所述CPU的自旋锁。
10.根据权利要求7或8所述的装置,所述装置还包括:
休眠子单元,令没有争抢到所述互斥锁的线程进行休眠,以释放占用所在CPU核心的资源。
11.根据权利要求10所述的装置,在所述释放单元之后,所述装置还包括:
唤醒子单元,如果被释放的互斥锁存在休眠的线程,唤醒休眠的线程,以使休眠的线程进入该互斥锁对应的CPU核心重新争抢该互斥锁。
12.根据权利要求7所述的装置,所述CPU核心的互斥锁位于CPU的私有缓存中。
13.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为上述权利要求1-6中任一项所述的方法。
CN201910039771.4A 2019-01-16 2019-01-16 提升cpu性能的方法及装置和电子设备 Active CN110018907B (zh)

Priority Applications (6)

Application Number Priority Date Filing Date Title
CN201910039771.4A CN110018907B (zh) 2019-01-16 提升cpu性能的方法及装置和电子设备
TW108129453A TWI716074B (zh) 2019-01-16 2019-08-19 提升cpu性能的方法及裝置和電子設備
PCT/US2020/012747 WO2020150058A1 (en) 2019-01-16 2020-01-08 Method, apparatus, and electronic device for improving cpu performance
EP20708241.3A EP3850487A1 (en) 2019-01-16 2020-01-08 Method, apparatus, and electronic device for improving cpu performance
US16/743,971 US10983839B2 (en) 2019-01-16 2020-01-15 Method, apparatus, and electronic device for improving CPU performance
US17/234,313 US11269693B2 (en) 2019-01-16 2021-04-19 Method, apparatus, and electronic device for improving CPU performance

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910039771.4A CN110018907B (zh) 2019-01-16 提升cpu性能的方法及装置和电子设备

Publications (2)

Publication Number Publication Date
CN110018907A true CN110018907A (zh) 2019-07-16
CN110018907B CN110018907B (zh) 2024-07-30

Family

ID=

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6760909B1 (en) * 1996-04-29 2004-07-06 Microsoft Corporation Virtual memory system and methods
US20050081204A1 (en) * 2003-09-25 2005-04-14 International Business Machines Corporation Method and system for dynamically bounded spinning threads on a contested mutex
CN104461729A (zh) * 2013-09-22 2015-03-25 腾讯科技(北京)有限公司 一种资源共享保护方法及装置
CN105975349A (zh) * 2016-05-04 2016-09-28 北京智能管家科技有限公司 一种线程锁的优化方法
CN108446181A (zh) * 2018-03-26 2018-08-24 武汉斗鱼网络科技有限公司 对资源限制访问的方法、装置及终端设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6760909B1 (en) * 1996-04-29 2004-07-06 Microsoft Corporation Virtual memory system and methods
US20050081204A1 (en) * 2003-09-25 2005-04-14 International Business Machines Corporation Method and system for dynamically bounded spinning threads on a contested mutex
CN104461729A (zh) * 2013-09-22 2015-03-25 腾讯科技(北京)有限公司 一种资源共享保护方法及装置
CN105975349A (zh) * 2016-05-04 2016-09-28 北京智能管家科技有限公司 一种线程锁的优化方法
CN108446181A (zh) * 2018-03-26 2018-08-24 武汉斗鱼网络科技有限公司 对资源限制访问的方法、装置及终端设备

Also Published As

Publication number Publication date
US11269693B2 (en) 2022-03-08
TW202028965A (zh) 2020-08-01
US20200226001A1 (en) 2020-07-16
WO2020150058A1 (en) 2020-07-23
EP3850487A1 (en) 2021-07-21
US10983839B2 (en) 2021-04-20
TWI716074B (zh) 2021-01-11
US20210240547A1 (en) 2021-08-05

Similar Documents

Publication Publication Date Title
CN106462395B (zh) 多线程处理器架构中的线程等待
US9753729B2 (en) System for selecting a task to be executed according to an output from a task control circuit
US9779042B2 (en) Resource management in a multicore architecture
US8996761B2 (en) Virtual queue processing circuit and task processor
KR101799253B1 (ko) 다중 클러스터 이종 프로세서 아키텍처에서 동적 캐시 확장을 제공하기 위한 시스템 및 방법
US8341641B2 (en) Task processor
CN108920267B (zh) 任务处理装置
TW201001291A (en) Method and apparatus for moving threads in a shared processor partitioning environment
US8327379B2 (en) Method for switching a selected task to be executed according with an output from task selecting circuit
JP2018507474A (ja) タスク制御フローを加速させるための方法およびシステム
KR20070095376A (ko) 스케쥴링 방법, 장치, 멀티스레딩 시스템 및 제조물
CN101833475A (zh) 用于增强线程级推测的原语
JP2018534676A (ja) 競合の存在下での効率的なタスクスケジューリングのための方法
US11269693B2 (en) Method, apparatus, and electronic device for improving CPU performance
CN102436393B (zh) 任务处理装置
CN110032441A (zh) 提升服务器性能的方法及装置和电子设备
US8453157B2 (en) Thread synchronization in simultaneous multi-threaded processor machines
Choi et al. Conflict avoidance scheduling using grouping list for transactional memory
CN110018907B (zh) 提升cpu性能的方法及装置和电子设备
US20110231637A1 (en) Central processing unit and method for workload dependent optimization thereof
JP5204740B2 (ja) タスク処理装置
Woo et al. Catnap: A Backoff Scheme for Kernel Spinlocks in Many-Core Systems
CN115061779A (zh) 一种用户态虚拟机的内核锁管理方法及装置
Quislant et al. Improving signature behavior by irrevocability in transactional memory systems
Wang et al. GCMS: A Global Contention Management Scheme in Hardware Transactional Memory

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20201014

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20201014

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

TA01 Transfer of patent application right
GR01 Patent grant