CN109614220B - 一种多核系统处理器和数据更新方法 - Google Patents

一种多核系统处理器和数据更新方法 Download PDF

Info

Publication number
CN109614220B
CN109614220B CN201811258200.1A CN201811258200A CN109614220B CN 109614220 B CN109614220 B CN 109614220B CN 201811258200 A CN201811258200 A CN 201811258200A CN 109614220 B CN109614220 B CN 109614220B
Authority
CN
China
Prior art keywords
lock
cpu
memory
key area
function
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.)
Active
Application number
CN201811258200.1A
Other languages
English (en)
Other versions
CN109614220A (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
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201811258200.1A priority Critical patent/CN109614220B/zh
Publication of CN109614220A publication Critical patent/CN109614220A/zh
Priority to TW108122771A priority patent/TWI715087B/zh
Priority to US16/660,563 priority patent/US11106795B2/en
Priority to PCT/US2019/057475 priority patent/WO2020086609A1/en
Priority to EP19802403.6A priority patent/EP3701377B1/en
Application granted granted Critical
Publication of CN109614220B publication Critical patent/CN109614220B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • 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
    • 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications

Abstract

本说明书实施例提供一种多核系统处理器和数据更新方法,其中,所述方法应用于多核系统处理器,所述多核系统处理器用于处理多线程任务,并且,所述多核系统处理器包括多个CPU;待更新的数据是多个线程的共享数据;所述方法由任一CPU执行;该方法可以包括:在本CPU对应的线程将要执行对应的关键区域函数时,请求获取锁,所述锁用于表示对所述多个线程的共享数据执行更新的权限;所述关键区域函数用于更新所述共享数据;若所述锁已经被其他CPU占用,则在锁内存设置对应本CPU的内存索引,以使得拥有锁的CPU根据内存索引执行本CPU对应线程的关键区域函数。

Description

一种多核系统处理器和数据更新方法
技术领域
本公开涉及计算机技术领域,特别涉及一种多核系统处理器和数据更新方法。
背景技术
多核系统处理器(Multiple Cores Processor)是指在一枚处理器中集成两个或多个完整的计算引擎(CPU),由于多核系统处理器能够在单位时间内处理更多的任务,处理能力更强,应用也越发广泛。在利用多核系统处理器运行多线程任务时,该多个线程之间可以具有都能够操作的共享数据(Shared_Data)。并且,在更新所述的共享数据时,同一时刻只能有一个线程更新,以避免线程冲突导致数据错误。当前技术中,各个线程之间可以申请锁Lock,成功获取到锁的线程可以操作该共享数据,未获取到锁的线程只能等待。此外,成功获取到锁的线程会将锁和共享数据迁移到对应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在锁内存的比特位置位,使得锁拥有者CPU可以根据内存索引直接调用执行锁申请者对应的关键区域函数,从而锁申请者不需要再将锁和共享数据迁移到其本地私有缓存,减少了锁和共享数据的迁移,提高了多线程对共享数据操作时的处理效率。
附图说明
为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书一个或多个实施例中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书一个或多个实施例提供的多核系统处理器的示意图;
图2为本说明书一个或多个实施例提供的多线程更新共享数据的原理示意图;
图3为本说明书一个或多个实施例提供的内存区域的示意图;
图4为本说明书一个或多个实施例提供的一种数据更新方法的流程示意图;
图5为本说明书一个或多个实施例提供的另一种数据更新方法的流程示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书一个或多个实施例中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书一个或多个实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书一个或多个实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本公开保护的范围。
本说明书至少一个实施例提供的数据更新方法,应用于多核系统处理器。如下对多核系统处理器的结构进行说明:
请参见图1,多核系统处理器包括多个CPU,例如,CPU1、CPU2、CPUn等n个CPU。每个CPU有自己的私有缓存(private cache),各个CPU之间还可以具有共享缓存(sharedcache)。
当该多核系统处理器用于处理多线程任务时,例如,可以在该多核系统处理器并行启动256个线程,并且这些线程之间具有全局共享数据Shared_Data,该共享数据能够被各个线程操作更新,不过,同一时刻只能由一个线程更新,以防止出现数据错误。实际实施中,可以通过锁Lock控制哪个线程能够更新共享数据,成功获取到锁的线程才有权限更新共享数据。
如下简单解释数据更新方法中将涉及到的几个特征:
多核系统处理器中的各个CPU:例如,图1中的多个CPU中的而每个CPU可以对应一个线程。如,CPU1用于运行线程1,CPU2用于运行线程2。当线程启动运行时,该线程对应的CPU将为线程申请锁Lock,如果成功获取到锁,则该线程可以对共享数据进行更新操作。例如,如果CPU1获取到锁,则对应的线程1可以对共享数据Shared_Data进行更新。
锁内存:当某一个CPU获取到锁之后,该CPU成为锁的拥有者,也可以称为“拥有锁的CPU”。该CPU可以将锁迁移到自己的私有缓存中,该锁将至少占用CPU的私有缓存中的一条缓存行(cache line)。例如,如图1所示,假设CPU2成为锁的拥有者,那么锁将迁移到CPU2的私有缓存中,并至少占用一条cache line。锁占用的这部分cache line区域可以称为锁内存。锁内存默认是清零,当CPU2拥有了锁之后,可以设置锁内容非0,例如,可以将锁内存中对应本CPU的内存索引的比特位设置为1。
关键区域函数:例如,请参见图2所示,线程1、线程2、线程3等各个线程,在对共享数据Shared_Data进行更新时,可以依据不同的关键区域函数。该关键区域函数可以是用于对共享数据执行更新操作的一段代码,通过执行该函数可以更新共享数据。多个线程都可以通过关键区域函数对共享数据进行更新,不同线程对应的关键区域函数可以是不同的。
内存索引:请继续参见图2,如上提到,各个线程可以分别使用不同的关键区域函数对共享数据进行更新操作,那么,可以将该关键区域函数的函数指针和参数指针存储在一段内存中,各个线程的关键区域函数可以分别存储在不同的内存中。例如,线程1的关键区域函数的相关指针存储在一段内存中,线程2的关键区域函数的相关指针存储在另一段内存中。并且可以对各个内存进行编号。如图2所示,示例性的,Memory[1]中存储线程1的关键区域函数的相关指针,Memory[2]中存储线程2的关键区域函数的相关指针,等。这里对各个内存的编号即称为“内存索引”,例如,Memory[2]中的“2”是一个内存索引。
举例如下:假设线程0至线程100要对共享数据shared_data进行更新,对应的,例如,Memory[0]中存储线程0的关键区域函数,Memory[8]中存储线程8的关键区域函数。假设CPU5运行线程8,可以通过get_lock(&Lock,n)请求获取锁,其中的n即内存索引8,如,get_lock(&Lock,8)。当CPU5发现锁已经被其他CPU占用后,可以在锁内存的比特位8置1。后续锁拥有者CPU发现比特位8置1,就可以去Memory[8]获取关键区域函数进行执行。
还需要说明的是,在本说明书实施例的部分描述中,提到的在锁内存对应的比特位设置对应本CPU的内存索引,指的是将锁内存对应内存索引的比特位置1,比如,Memory[8]的内存索引是8,如果要执行其中的关键区域函数,则将锁内存的比特位8置1。并且,所述的“本CPU对应的内存索引”,其实是本CPU上运行的线程对应的内存索引。比如上述的,CPU5运行线程8,该线程8对应要执行的是Memory[8]中的关键区域函数,那么CPU5对应的内存索引就是Memory[8]中的8。
如图3所示,每一个内存索引n对应的内存Memory[n]中,都存储了关键区域函数的函数指针和参数指针,可以根据这些指针找到对应的关键区域函数以及在函数执行中使用到的参数,从而完成关键区域函数的调用执行。
critcal_section(*para):每个关键区域函数的地址,占用8字节。
Void*para中的para={void*ret,void*Shared_Data关键区域共享数据}。其中的void*ret中的参数ret初始可以是在线程本地内存中设置,后续执行过程中可以根据该参数的值确认关键区域函数是否调用完成。其中的void*Shared_Data表示关键区域要操作的共享数据指针。
每一个线程都对应着图3所示的一块内存区域。例如,假如并行启动了256个线程,那么共有256个所述的内存区域。在所述256个线程的多线程任务启动的初始化阶段,可以在图1的每个CPU中都拷贝一份该256个内存区域,以加速后续的访问。即,多核系统处理器的每个CPU的私有缓存中都可以存储一份图3所示的内存区域(256个所述的区域),每个内存区域对应一个线程。不过,上述内存区域的所在位置不一定是CPU私有缓存,不限制其位置,例如,还可以在共享缓存或者内存中,当CPU要执行该内存区域中的关键区域函数时,可以将其移动到CPU的私有缓存中。此外,对应每个线程的CPU可以知晓其对应的内存索引,例如,CPU2可以知晓对应的内存索引是2,即在Memory[2]中存储了CPU2对应的线程2的关键区域函数。
在上述描述的特征的基础上,下面将说明本说明书至少一个实施例的多核系统处理器如何执行多线程任务,并且该任务中的多个线程可以对同一共享数据进行操作更新。本说明书实施例提供的数据更新方法,将实现多核系统处理器更快的完成多线程任务的执行,提升任务执行效率。
以图1中的CPU1为例,假设CPU1对应的线程将要执行对应的关键区域函数,则CPU1可以开始执行图4所示的流程:
在步骤400中,CPU1在本CPU的私有缓存中设置标识参数。
在请求获取锁之前,CPU1可以先设置本地内存para->ret=1。该参数ret可以称为标识参数。该标识参数的设置,是为了后续步骤中CPU1知晓锁的拥有者是否已经调用执行本线程对应的关键区域函数。
在步骤402中,CPU1请求获取锁,并获取到锁所在的位置。
本步骤中,CPU1可以调用锁请求指令get_lock(&Lock,n),请求获取锁Lock。该锁请求指令将试图获取共享的内存锁Lock的取值;并且,该指令中还携带本CPU1对应的内存索引n,即在Memorey[n]的内存区域中存储了CPU1对应线程的关键区域函数的相关信息。
其中,在CPU1试图获取锁的过程中,可以根据缓存一致性MESI(ModifiedExclusive Shared Or Invalid)协议,获取锁内存的地址,即知晓当前锁存放在哪里。例如,CPU1可以在共享缓存中发现该锁的状态M,并且地址是位于CPU2中。那么,CPU1将去CPU2的私有缓存中查询锁的值。不过,也可能当前锁的存放位置是在共享缓存等其他地方,不限制在私有缓存。
在步骤404中,CPU1根据锁的值,判断锁是否已经被其他CPU占用。
例如,如果锁的取值是0,表示该锁未被其他CPU占用,则后续执行的流程可以参见图5所示,这里不再详述。如果锁的取值是非0,那么意味着该锁已经被CPU2占用。
在步骤406中,当CPU1确定锁已被占用时,在锁内存对应的比特位设置对应本CPU1的内存索引。
本步骤中,当CPU1确定锁已被占用时,例如,锁已经被CPU2占用,锁内存也在CPU2中,锁的最新值也在该CPU2的私有缓存中。那么,CPU1可以将锁请求指令get_lock(&Lock,n)中的内存索引n,设置在锁内存中该内存索引对应的比特位。如,将1比特位置1。
此外,在内存对应的比特位设置对应本CPU1的内存索引后,CPU1只要等待即可,CPU1的线程对应的关键区域函数将被CPU2调用执行。
需要说明的是,本步骤中当锁申请者CPU1确定锁已被占用时,在锁内存对应的比特位设置对应本CPU1的内存索引,是在锁原地设置即可,例如,锁内存可以是在CPU2的私有缓存,也可能是在共享缓存等其他位置,根据缓存一致性MESI协议找到锁的存放位置后,在锁原地的锁内存对应的比特位设置即可,从而避免锁的迁移。例如,若发现锁在CPU2的私有缓存,则在该私有缓存中对应CPU1的比特位设置内存索引。
在步骤408中,CPU1轮询本地的标识参数是否被清零,若标识参数已经被拥有锁的CPU清除,则确定关键区域函数已经被拥有锁的CPU调用执行结束,完成了本线程对共享数据的更新。
本步骤中,CPU1可以轮询本地私有缓存中的标识参数是否已经被CPU2清除,例如,可以执行指令while(para->ret==1)。一旦该标识参数ret被清除,表明CPU1的线程的关键区域函数已经被锁拥有者CPU2执行完成,正常返回即可。CPU1的线程完成了对共享数据的更新操作。需要说明的是,CPU1可以是初始在本地私有缓存中设置标识参数等于1,但是后续过程中也可能该标识参数的位置发生了变化,比如迁移到了共享缓存和内存等位置,不论位置在哪里,CPU2都可以根据MESI协议找到该标识参数的位置并原地清零,而CPU1也可以找到该标识参数的位置并查看是否被CPU2清零。
上述的图4描述了CPU在申请锁失败时的处理流程,下面的图5描述锁拥有者的执行流程,如图5所示,该流程以CPU2为例,当CPU2对应的线程将要执行对应的关键区域函数时,可以执行图5所示的处理,包括:
在步骤500中,CPU2在本CPU的私有缓存中设置标识参数。
在请求获取锁之前,CPU2可以先设置本地内存para->ret=1。该参数ret可以称为标识参数。该标识参数的设置,是为了后续步骤中如果CPU2不能获取到锁时根据该参数知晓锁的拥有者是否已经执行本线程对应的关键区域函数。
在步骤502中,CPU2请求获取锁,并获取到锁所在的位置。
本步骤中,CPU2可以调用锁请求指令get_lock(&Lock,n),请求获取锁Lock。该锁请求指令将试图获取共享的内存锁Lock的取值;并且,该指令中还携带本CPU2对应的内存索引n,即在Memorey[n]的内存区域中存储了CPU1对应线程的关键区域函数的相关信息。
在步骤504中,CPU2根据锁的值,确定锁尚未被其他CPU占用,CPU2获取到锁。
例如,如果锁的取值是0,表示该锁未被其他CPU占用;如果锁的取值是非0,那么意味着该锁已经被其他CPU占用。本例子中假设CPU2发现锁的取值是0,那么CPU2获取到锁,并将锁迁移到CPU2自己的私有缓存中。
此外,CPU2在获取到锁后,可以将本地的锁内存中对应get_lock(&Lock,n)中的n的bit位置1,使得锁的取值是非0。由于CPU2自己是锁拥有者,CPU2还可以将步骤500中设置的标识参数ret清除。CPU2对自己的标识参数的清除可以是在执行该CPU2对应的线程的关键区域函数结束之前,例如,后续步骤中将说明,每个关键区域函数的末尾都可以有一个remote_write指令,用于清除对应的标识参数ret。
在步骤506中,CPU2执行本CPU对应线程的关键区域函数,更新共享数据。
本步骤中,如上面提过的,示例性的,CPU2的本地私有缓存中,可以存储了256个线程的各个线程对应的关键区域函数相关信息,CPU2自己的内存区域Memory也在本地私有缓存中,执行即可。
在执行本CPU对应线程的关键区域函数后,CPU2可以判断锁内存中是否还有已经设置的其他CPU对应的内存索引。比如,如果CPU2发现在锁内存的比特位3被置为1,则得到内存索引“3”。表明其他线程也请求了锁,并且在等待执行该其他线程对应的关键区域函数。CPU2可以继续执行步骤508。
在步骤508中,CPU2根据内存索引,执行该内存索引对应的内存区域中的关键区域函数。
本步骤中,例如,内存索引是3,CPU2可以查找到对应的内存区域Memory[3],根据该内存区域中存储的函数指针和参数指针,执行关键区域函数对共享数据进行更新。例如,可以执行memory[3].critical_section(memory[3].para)。
此外,在执行关键区域函数对共享数据进行更新时,可以是使用共享数据写指令Shared_write对共享数据执行写操作。
在步骤510中,CPU2在执行关键区域函数结束之前,使用远程写指令,将其他CPU中的标识参数进行清零。
本步骤中,各个线程分别对应的关键区域函数的定义可以多种多样,但是在关键区域函数的末尾可以包括远程写指令remote_write,以对标识参数进行清零操作。如下:
critical_section(void*para){....,remote_write(para->ret,0);return;}
如果CPU2在执行自己的关键区域函数,那么可以发现标识参数在CPU2本地,可以本地清零即可。如果CPU2执行的CPU3对应的关键区域函数,那么可以根据MESI协议获取到该关键区域函数对应的标识参数的数据状态和标识参数地址,并可以通过remote_write(para->ret,0)原地对标识参数进行清零。
需要说明的是,CPU2在对CPU3的标识参数清零时,该标识参数ret可以是在CPU3的私有缓存中,也可能是在共享缓存等其他地方,CPU2可以根据缓存一致性MESI协议获取标识参数地址,即该标识参数的当前位置,并原地进行更新清零,而不会将参数ret迁移到CPU2的本地私有缓存中。例如,CPU2可以根据MESI协议,在各个CPU的共享缓存中查询到标识参数ret的数据状态M,并且该参数当前地址是在CPU3的私有缓存,则CPU2直接在CPU3的私有缓存中将该参数置为0。其中,CPU3可以称为目标CPU。
而对于CPU3来说,如图4中的步骤408所述,CPU3在将CPU2的锁内存置位后,不断轮询其标识参数是否被清零。若标识参数已经被锁拥有者CPU2清零,则CPU3可以确定其对应的关键区域函数已经被CPU2执行结束,完成了CPU3的线程对共享数据的更新。
CPU2在执行完CPU3对应的关键区域函数后,接着查询是否还有其他等待执行的关键区域函数,过程同理,不再详述。当CPU2发现已经执行完所有等待的关键区域函数后,可以继续执行步骤512。
如下说明作为锁的拥有者CPU2获取其他CPU在锁内存设置的内存索引的方式:例如,CPU2可以在执行本CPU对应线程的关键区域函数后,执行释放锁指令ret=put_lock(&Lock,0x01),该释放锁指令的执行表示将要释放锁,并且,该释放锁指令put_lock可以具有一个返回值ret,可以根据该返回值ret确定是否可以释放锁了。该返回值ret可以是初始锁内存与当前锁内存之间的异或值。
举例来说:CPU2在自己初始获取到锁后,设置锁内存是0010。后续在CPU2执行自己的关键区域函数的过程中,有两个其他CPU申请锁,并在锁内存对应的比特位设置了自己的内存索引,当前锁内存是1110。通过将“0010”和“1110”进行异或运算,返回值是“1100”,表明“11”所在的那两个比特位是新设置的。据此,CPU2可以根据返回值得到其他CPU的内存索引。
CPU2根据获得的内存索引,执行对应的其他CPU的关键区域函数。同时,CPU2还将锁内存重新置为初始锁内存0010。当CPU2执行完了“11”所在的那两个比特位对应的关键区域函数后,可以接着执行ret=put_lock(&Lock,0x01),如果这期间又有新的CPU设置了内存索引,返回值ret将是非0,将可以通过返回值得到新的其他CPU设置的内存索引;如果这期间没有其他CPU设置新内存索引,那么返回值将是0000,则CPU2可以确认所有的关键区域函数均调用完成,可以继续执行步骤512。
在步骤512中,CPU2释放锁,并将锁和共享数据都放入到多个CPU的共享缓存中。本步骤中,所有锁请求者的关键区域函数都执行结束,该所有关键区域函数包括:锁内存中所有设置的内存索引对应的关键区域函数,例如,本CPU对应的关键区域函数、以及其他CPU设置的内存索引对应的关键区域函数。
CPU2在所有关键区域函数都执行结束后,可以将锁、以及使用共享数据写指令更新的共享数据,都放入到多个CPU的共享缓存中。当将锁放入共享缓存后,锁内存将位于共享缓存中。其中,放入共享缓存的共享数据可以是采用共享数据写指令操作过的所有共享数据,所述所有共享数据可以是各个线程对共享数据更新的地址不同,例如,共享数据shared_data可以共有四个cache line,而其中一个线程更新的是共享数据的其中一个cache line,另一个线程更新的是共享数据的另一个cache line中的内容,更新了哪个cache line,就将该cache line的共享数据放入共享缓存。此外,在将锁和共享数据放入共享缓存后,可以将CPU2的私有缓存中的锁和共享数据置为无效,即invalidate Lock和shared_data的对应内存所在的本地私有缓存,把更新的内容放到共享缓存。
至此,锁的拥有者CPU2已经释放了锁,将锁放到了多个CPU的共享缓存中,并且还将所有线程都更新后的最新的共享数据也放入到共享缓存中,多核系统处理器完成了多线程任务对共享数据的所有更新操作。
在图5的流程中,步骤506至步骤512是对共享数据进行更新的原子操作,一个CPU成功获取到锁之后,就会逐个执行所有的等待的关键区域函数,所有关键区域函数都执行完成后,该CPU才释放锁,并同时向共享缓存中提交锁和共享数据,以备下一个锁拥有者由共享缓存中获取锁和共享数据。
本说明书至少一个实施例提供的数据更新方法,可以实现如下效果:
第一、锁的申请者例如CPU1,在发现锁已经被CPU2占有后,只需要在CPU2中的锁内存设置CPU1对应的内存索引即可,CPU2根据该索引就可以执行CPU1对应的关键区域函数。而CPU1只需要等待该关键区域函数执行结束,CPU1并不会将锁再迁移到本地私有缓存。这种方式避免了锁在各个CPU之间的来回迁移,提升了多线程任务的执行效率。并且,锁申请者CPU1在锁内存设置内存索引后,由锁拥有者CPU2执行CPU1的关键区域函数,并可以在CPU2本地对共享数据进行更新,也同时避免了共享数据的迁移。
第二、锁的拥有者在完成了锁申请者的关键区域函数之后,可以对锁申请者的标识参数进行清零,以通知锁申请者其关键区域函数执行完成。该清零操作并未将锁申请者的私有缓存中的标识参数迁移到锁拥有者本地,而是根据MESI协议找到标识参数的位置即申请锁的CPU,并原地清零。该操作减少了数据在各个CPU之间的迁移,同样提升了多线程任务的执行效率。
第三、锁的拥有者在结束了所有关键区域函数的执行后,将锁和共享数据都放入共享缓存,而并未在锁拥有者的私有缓存放置,这可以加快下一次对锁和共享数据的访问操作,避免了下一次其他CPU访问时需要进入到上次锁拥有者的私有缓存导致的数据迁移,也能够加快下一次关键区域共享数据的访问速度,有助于提升多线程任务的执行效率。
第四、锁的拥有者执行多个关键区域函数的操作,并且对共享数据的更新操作都是在锁拥有者的本地私有缓存完成,避免数据迁移,加快数据更新速度。
第五、该方案可以是基于一个完全平等随机的物理CPU体系架构,采用了软硬件结合优化的方案,减少了硬件开发复杂度,以尽可能少的硬件代价完成复杂的交互过程,提升整体性能。例如,在本方案中,锁申请者只要将关键区域函数对应的内存索引设置在锁内存对应的比特位即可,锁拥有者就可以根据put_lock指令的返回值获知该执行哪个关键区域函数,非常方便简单的实现了CPU之间的交互。又例如,锁拥有者通过根据MESI协议,就可以获取到标识参数的所在地,并利用remote_write指令在原地对该参数进行清零,不用将标识参数迁移到锁拥有者的私有缓存进行操作,避免数据迁移。这种通过软硬件结合优化的方案,既提升了多核系统处理器的性能,又避免了较大的硬件代价。
使用了本说明书至少一个实施例提供的数据更新方法的多核系统处理器,在执行多线程对共享数据更新的任务时,减少了对数据或锁的争抢和迁移,能够大幅降低运行时间,提升了整体吞吐量。
此外,数据更新方法不局限于本说明书实施例描述的方式,可以灵活变更。
例如,在图4和图5描述的流程中,锁拥有者在执行完所有的关键区域函数后,可以将锁和共享数据仍然放在锁拥有者的私有缓存中,下一次访问者可以由该私有缓存获取。这种方式中,锁申请者仍然不需要将锁和共享数据迁移到自己的私有缓存,而是由锁拥有者直接调用执行锁申请者的关键区域函数即可,因此仍然可以在一定程度上提升任务处理效率。
又例如,锁拥有者可以使用清除标识参数之外的其他方式,通知锁申请者其关键区域函数已经执行完成。此外,即使锁拥有者不使用远程写指令,而是将锁申请者的标识参数迁移到本地更新,同理,由于在关键区域函数执行时锁申请者不需要迁移锁到自己的私有缓存,避免了锁的迁移,仍然可以在一定程度上提升任务处理效率。
再例如,锁的申请者CPU也可以在锁内存对应的比特位设置对应的内存索引后,不再轮询等待关键区域函数是否执行结束。当然,锁拥有者会根据该内存索引执行对应的关键区域函数。
本领域技术人员可以理解,在实际实施中,图4或图5流程中的各个步骤的处理,有些是可以变更的,比如只执行其中的部分步骤,只要能达到减少了锁或数据的迁移,实现了任务执行效率的提升即可。
上述图中所示流程中的各个步骤,其执行顺序不限制于流程图中的顺序。此外,各个步骤的描述,可以实现为软件、硬件或者其结合的形式,例如,本领域技术人员可以将其实现为软件代码的形式,可以为能够实现所述步骤对应的逻辑功能的计算机可执行指令。当其以软件的方式实现时,所述的可执行指令可以存储在存储器中,并被设备中的处理器执行。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于数据处理设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。

Claims (19)

1.一种数据更新方法,所述方法应用于多核系统处理器,所述多核系统处理器用于处理多线程任务,并且,所述多核系统处理器包括多个CPU;待更新的数据是多个线程的共享数据;所述方法由任一CPU执行;
所述方法包括:
在本CPU对应的线程将要执行对应的关键区域函数时,请求获取锁,所述锁用于表示对所述多个线程的共享数据执行更新的权限;所述关键区域函数用于更新所述共享数据;
若所述锁已经被其他CPU占用,则在锁内存设置对应本CPU的内存索引,以使得拥有锁的CPU根据内存索引执行本CPU对应线程的关键区域函数;所述锁内存是拥有锁的CPU的私有缓存中被该锁占用的缓存区。
2.根据权利要求1所述的方法,所述请求获取锁,包括:
通过锁请求指令申请获取锁,所述锁请求指令携带本CPU对应的内存索引;
根据缓存一致性MESI协议,获取到锁内存的地址。
3.根据权利要求2所述的方法,所述在锁内存设置对应本CPU的内存索引,包括:根据所述锁请求指令中携带的内存索引,将所述锁内存中对应内存索引的比特位置1。
4.根据权利要求1所述的方法,所述方法还包括:
检测到拥有锁的CPU已经调用所述关键区域函数结束时,确认完成所述线程对共享数据的更新。
5.根据权利要求4所述的方法,在所述请求获取锁之前,所述方法还包括:在本CPU的私有缓存中设置标识参数;
所述检测到拥有锁的CPU已经调用所述关键区域函数结束,包括:
若所述标识参数已经被拥有锁的CPU清除,则确定所述关键区域函数已经被拥有锁的CPU调用执行结束。
6.一种数据更新方法,所述方法应用于多核系统处理器,所述多核系统处理器用于处理多线程任务,并且,所述多核系统处理器包括多个CPU;待更新的数据是多个线程的共享数据;所述方法由任一CPU执行;
所述方法包括:
在本CPU对应的线程将要执行对应的关键区域函数时,请求获取锁,所述锁用于表示对所述多个线程的共享数据执行更新的权限;
若所述锁未被其他CPU占用,则获取到所述锁,执行本CPU对应线程的关键区域函数,以通过所述关键区域函数更新所述共享数据;
在执行本CPU对应线程的关键区域函数后,若发现锁内存中还设置有其他CPU的内存索引,则根据所述内存索引执行对应的关键区域函数,以通过所述关键区域函数更新所述共享数据;所述锁内存是拥有锁的CPU的私有缓存中被该锁占用的缓存区。
7.根据权利要求6所述的方法,所述根据所述内存索引执行对应的关键区域函数,包括:
根据所述内存索引,获取到对应内存索引的内存区域,所述内存区域中存储有关键区域函数的函数指针和参数指针;
根据所述函数指针和参数指针,调用执行对应的关键区域函数对共享数据进行更新,在执行关键区域函数中使用共享数据写指令对共享数据执行写操作;
所述方法还包括:在调用执行完所有的关键区域函数之后,将使用所述共享数据写指令更新的共享数据放入到多个CPU的共享缓存中;所述所有的关键区域函数包括:锁内存中所有设置的内存索引对应的关键区域函数。
8.根据权利要求7所述的方法,所述对应内存索引的内存区域,属于本CPU的私有缓存中的一块内存区域。
9.根据权利要求7所述的方法,所述方法还包括:在调用执行完所有的关键区域函数之后,将所述锁放入到多个CPU的共享缓存中。
10.根据权利要求6所述的方法,所述发现锁内存中还设置有其他CPU的内存索引,包括:
在执行本CPU对应线程的关键区域函数后,执行一次释放锁指令获得返回值,所述释放锁指令的返回值用于表示初始锁内存与当前锁内存之间的异或值;
根据所述返回值得到其他CPU的内存索引,并将锁内存置为初始锁内存;
将所述内存索引对应的关键区域函数调用执行后,接着执行所述锁指令获取所述返回值,得到新的其他CPU的内存索引。
11.根据权利要求6所述的方法,所述方法还包括:
在执行一个关键区域函数后,根据缓存一致性MESI协议,获取所述关键区域函数对应的标识参数的数据状态以及标识参数地址;所述标识参数是关键区域函数对应的目标CPU预先设置;
使用远程写指令,在所述标识参数地址中将所述标识参数清除,以通知所述目标CPU关键区域函数调用完成。
12.一种多核系统处理器,所述多核系统处理器包括多个CPU,所述多核系统处理器用于处理多线程任务,所述多个线程具有待更新的共享数据;
所述多核系统处理器中的每个CPU,用于执行可执行指令以实现如下操作:
在本CPU对应的线程将要执行对应的关键区域函数时,请求获取锁;所述锁用于表示对所述多个线程的共享数据执行更新的权限;
判断所述锁是否已经被其他CPU占用;
若所述锁已经被其他CPU占用,则在锁内存设置对应本CPU的内存索引,以使得拥有锁的CPU根据内存索引执行本CPU对应线程的关键区域函数;所述锁内存是拥有锁的CPU的私有缓存中被该锁占用的缓存区;
若所述锁未被其他CPU占用,则获取到所述锁,执行本CPU对应线程的关键区域函数,以更新共享数据;并且,在执行本CPU对应线程的关键区域函数后,若发现锁内存中还设置有其他CPU的内存索引,则根据所述内存索引执行对应的关键区域函数。
13.根据权利要求12所述的多核系统处理器,
所述CPU,用于根据所述内存索引执行对应的关键区域函数时,包括:根据所述内存索引,确定对应的内存区域,并根据所述内存区域中存储的关键区域函数的函数指针和参数指针执行对应的关键区域函数。
14.根据权利要求12所述的多核系统处理器,
所述CPU,还用于:在所述请求获取锁之前,在本CPU的私有缓存中设置标识参数;并且,在检测到所述标识参数被拥有锁的CPU清除时,确定本CPU的线程对应的关键区域函数已经被拥有锁的CPU执行结束。
15.根据权利要求12所述的多核系统处理器,
在获取到锁的情况下,所述CPU,还用于:在执行完一个目标CPU对应的关键区域函数后,根据缓存一致性MESI协议,获取所述关键区域函数对应的标识参数的数据状态以及标识参数地址;所述标识参数是关键区域函数对应的目标CPU预先设置;使用远程写指令,在所述标识参数地址中将所述标识参数清除,以通知所述目标CPU关键区域函数调用完成。
16.根据权利要求12所述的多核系统处理器,
所述CPU,在用于执行关键区域函数以更新共享数据时,包括:使用共享数据写指令对共享数据进行更新;所述CPU还用于在调用执行完所有的关键区域函数之后,将使用所述共享数据写指令更新的共享数据放入到多个CPU的共享缓存中;所述所有的关键区域函数包括:本CPU对应的关键区域函数、以及其他CPU在锁内存中设置的内存索引对应的关键区域函数。
17.根据权利要求16所述的多核系统处理器,
在所述CPU获取到锁的情况下,所述CPU,还用于:在确认所述所有的关键区域函数都执行完成后,将锁放入到多个CPU的共享缓存中。
18.根据权利要求12所述的多核系统处理器,
所述CPU,在用于请求获取锁时,包括:使用锁请求指令申请获取锁,所述锁请求指令中携带本CPU对应的内存索引;
并且,若获取到锁,将锁迁移到本CPU的私有缓存,并在锁内存对应的比特位设置所述内存索引;若未获取到所述锁,直至本CPU对应的关键区域函数结束,均不将锁迁移到本CPU的私有缓存。
19.根据权利要求12所述的多核系统处理器,在所述CPU获取到锁的情况下,所述CPU,还用于:
在执行本CPU对应线程的关键区域函数后,执行一次释放锁指令获得返回值,所述释放锁指令的返回值用于表示初始锁内存与当前锁内存之间的异或值;
若所述返回值是非0,则根据所述返回值得到其他CPU的内存索引,并将锁内存置为初始锁内存;将所述内存索引对应的关键区域函数调用执行后,接着执行所述释放锁指令获取所述返回值,以得到新的其他CPU的内存索引;
若所述返回值是0,则表示所有关键区域函数都已经执行结束;所述所有关键区域函数包括:锁内存中所有设置的内存索引对应的关键区域函数。
CN201811258200.1A 2018-10-26 2018-10-26 一种多核系统处理器和数据更新方法 Active CN109614220B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201811258200.1A CN109614220B (zh) 2018-10-26 2018-10-26 一种多核系统处理器和数据更新方法
TW108122771A TWI715087B (zh) 2018-10-26 2019-06-28 多核系統處理器和資料更新方法
US16/660,563 US11106795B2 (en) 2018-10-26 2019-10-22 Method and apparatus for updating shared data in a multi-core processor environment
PCT/US2019/057475 WO2020086609A1 (en) 2018-10-26 2019-10-22 Method and apparatus for updating shared data in a multi-core processor environment
EP19802403.6A EP3701377B1 (en) 2018-10-26 2019-10-22 Method and apparatus for updating shared data in a multi-core processor environment

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811258200.1A CN109614220B (zh) 2018-10-26 2018-10-26 一种多核系统处理器和数据更新方法

Publications (2)

Publication Number Publication Date
CN109614220A CN109614220A (zh) 2019-04-12
CN109614220B true CN109614220B (zh) 2020-06-30

Family

ID=66002132

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811258200.1A Active CN109614220B (zh) 2018-10-26 2018-10-26 一种多核系统处理器和数据更新方法

Country Status (5)

Country Link
US (1) US11106795B2 (zh)
EP (1) EP3701377B1 (zh)
CN (1) CN109614220B (zh)
TW (1) TWI715087B (zh)
WO (1) WO2020086609A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112307067B (zh) * 2020-11-06 2024-04-19 支付宝(杭州)信息技术有限公司 一种数据处理方法及装置

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210017985A (ko) * 2018-06-08 2021-02-17 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 범용 기계학습 모델, 모델 파일의 생성 및 분석방법
US11372649B2 (en) * 2019-06-24 2022-06-28 Microsoft Technology Licensing, Llc Flow control for multi-threaded access to contentious resource(s)
US11216278B2 (en) 2019-08-12 2022-01-04 Advanced New Technologies Co., Ltd. Multi-thread processing
CN110569067B (zh) * 2019-08-12 2021-07-13 创新先进技术有限公司 用于多线程处理的方法、装置及系统
CN112905365B (zh) * 2019-10-30 2024-02-13 支付宝(杭州)信息技术有限公司 一种数据处理方法、装置、设备及介质
CN112765088A (zh) * 2019-11-04 2021-05-07 罗习五 利用数据标签提高多计算单元平台上数据共享的方法
CN111930527B (zh) * 2020-06-28 2023-12-08 绵阳慧视光电技术有限责任公司 一种多核异构平台维护cache一致性的方法
CN113836209A (zh) * 2021-09-02 2021-12-24 深圳市道通智能汽车有限公司 多核处理器的共享资源访问方法、处理器及多核系统
CN113986778B (zh) * 2021-11-17 2023-03-24 海光信息技术股份有限公司 一种数据处理方法、共享缓存、芯片系统及电子设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101504618A (zh) * 2009-02-26 2009-08-12 浙江大学 面向多核处理器的实时线程迁移方法
CN101833476A (zh) * 2010-05-28 2010-09-15 西安交通大学 基于cmp的推测多线程机制下的独立栈函数调用方法
CN102331923A (zh) * 2011-10-13 2012-01-25 西安电子科技大学 一种基于多核多线程处理器的功能宏流水线实现方法
CN103577158A (zh) * 2012-07-18 2014-02-12 阿里巴巴集团控股有限公司 数据处理方法与装置
CN104216767A (zh) * 2014-09-18 2014-12-17 东软集团股份有限公司 多线程之间访问共享数据的方法及装置
CN104216684A (zh) * 2013-06-04 2014-12-17 阿里巴巴集团控股有限公司 一种多核并行系统及其数据处理方法
CN104951240A (zh) * 2014-03-26 2015-09-30 阿里巴巴集团控股有限公司 一种数据处理方法及处理器
CN108345452A (zh) * 2017-01-23 2018-07-31 阿里巴巴集团控股有限公司 一种线程管理方法及装置

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5050072A (en) * 1988-06-17 1991-09-17 Modular Computer Systems, Inc. Semaphore memory to reduce common bus contention to global memory with localized semaphores in a multiprocessor system
US5537574A (en) * 1990-12-14 1996-07-16 International Business Machines Corporation Sysplex shared data coherency method
US6651145B1 (en) 2000-09-29 2003-11-18 Intel Corporation Method and apparatus for scalable disambiguated coherence in shared storage hierarchies
US7076609B2 (en) 2002-09-20 2006-07-11 Intel Corporation Cache sharing for a chip multiprocessor or multiprocessing system
JP4028444B2 (ja) 2003-06-27 2007-12-26 株式会社東芝 スケジューリング方法およびリアルタイム処理システム
US7984248B2 (en) 2004-12-29 2011-07-19 Intel Corporation Transaction based shared data operations in a multiprocessor environment
US7937709B2 (en) 2004-12-29 2011-05-03 Intel Corporation Synchronizing multiple threads efficiently
US20080024489A1 (en) 2006-07-28 2008-01-31 Robert Allen Shearer Cache Utilization Optimized Ray Traversal Algorithm with Minimized Memory Bandwidth Requirements
US7853754B1 (en) 2006-09-29 2010-12-14 Tilera Corporation Caching in multicore and multiprocessor architectures
US7761485B2 (en) * 2006-10-25 2010-07-20 Zeugma Systems Inc. Distributed database
US8407428B2 (en) 2010-05-20 2013-03-26 Hicamp Systems, Inc. Structured memory coprocessor
US8504791B2 (en) 2007-01-26 2013-08-06 Hicamp Systems, Inc. Hierarchical immutable content-addressable memory coprocessor
US8285670B2 (en) 2008-07-22 2012-10-09 International Business Machines Corporation Dynamically maintaining coherency within live ranges of direct buffers
US8578483B2 (en) * 2008-07-31 2013-11-05 Carnegie Mellon University Systems and methods for preventing unauthorized modification of an operating system
US20110113221A1 (en) * 2008-08-18 2011-05-12 Telefonaktiebolaget L M Ericsson (Publ) Data Sharing in Chip Multi-Processor Systems
ATE474267T1 (de) * 2008-10-13 2010-07-15 Alcatel Lucent Verfahren zur synchronisierung des zugriffs auf eine gemeinsam benutzte ressource, entsprechende vorrichtung, speichermittel und softwareprogramm dafür
US8145817B2 (en) * 2009-04-28 2012-03-27 Microsoft Corporation Reader/writer lock with reduced cache contention
US9086973B2 (en) 2009-06-09 2015-07-21 Hyperion Core, Inc. System and method for a cache in a multi-core processor
US20120227045A1 (en) 2009-12-26 2012-09-06 Knauth Laura A Method, apparatus, and system for speculative execution event counter checkpointing and restoring
US8412689B2 (en) 2010-07-07 2013-04-02 Microsoft Corporation Shared log-structured multi-version transactional datastore with metadata to enable melding trees
US8738860B1 (en) * 2010-10-25 2014-05-27 Tilera Corporation Computing in parallel processing environments
US9274960B2 (en) 2012-03-20 2016-03-01 Stefanos Kaxiras System and method for simplifying cache coherence using multiple write policies
US9417935B2 (en) 2012-05-01 2016-08-16 Microsoft Technology Licensing, Llc Many-core process scheduling to maximize cache usage
CN104424142B (zh) * 2013-08-26 2019-09-10 南京中兴新软件有限责任公司 一种多核处理器系统中访问共享资源的方法与装置
US9298626B2 (en) * 2013-09-26 2016-03-29 Globalfoundries Inc. Managing high-conflict cache lines in transactional memory computing environments
US9304935B2 (en) * 2014-01-24 2016-04-05 International Business Machines Corporation Enhancing reliability of transaction execution by using transaction digests
FR3019921B1 (fr) * 2014-04-10 2017-08-11 Commissariat Energie Atomique Systeme de calcul distribue mettant en œuvre une memoire transactionnelle materielle de type non-speculatif et son procede d'utilisation pour le calcul distribue
US9336047B2 (en) * 2014-06-30 2016-05-10 International Business Machines Corporation Prefetching of discontiguous storage locations in anticipation of transactional execution
US10360063B2 (en) * 2015-09-23 2019-07-23 Qualcomm Incorporated Proactive resource management for parallel work-stealing processing systems
WO2017095741A1 (en) 2015-11-30 2017-06-08 Yeshog, Llc A hardware agnostic platform for transparent access control of internet of everything (ioe) destinations

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101504618A (zh) * 2009-02-26 2009-08-12 浙江大学 面向多核处理器的实时线程迁移方法
CN101833476A (zh) * 2010-05-28 2010-09-15 西安交通大学 基于cmp的推测多线程机制下的独立栈函数调用方法
CN102331923A (zh) * 2011-10-13 2012-01-25 西安电子科技大学 一种基于多核多线程处理器的功能宏流水线实现方法
CN103577158A (zh) * 2012-07-18 2014-02-12 阿里巴巴集团控股有限公司 数据处理方法与装置
CN104216684A (zh) * 2013-06-04 2014-12-17 阿里巴巴集团控股有限公司 一种多核并行系统及其数据处理方法
CN104951240A (zh) * 2014-03-26 2015-09-30 阿里巴巴集团控股有限公司 一种数据处理方法及处理器
CN104216767A (zh) * 2014-09-18 2014-12-17 东软集团股份有限公司 多线程之间访问共享数据的方法及装置
CN108345452A (zh) * 2017-01-23 2018-07-31 阿里巴巴集团控股有限公司 一种线程管理方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112307067B (zh) * 2020-11-06 2024-04-19 支付宝(杭州)信息技术有限公司 一种数据处理方法及装置

Also Published As

Publication number Publication date
US11106795B2 (en) 2021-08-31
EP3701377B1 (en) 2021-09-15
TWI715087B (zh) 2021-01-01
US20200134182A1 (en) 2020-04-30
WO2020086609A1 (en) 2020-04-30
EP3701377A1 (en) 2020-09-02
CN109614220A (zh) 2019-04-12
TW202016735A (zh) 2020-05-01

Similar Documents

Publication Publication Date Title
CN109614220B (zh) 一种多核系统处理器和数据更新方法
JP2500101B2 (ja) 共用変数の値を更新する方法
Yang et al. A wait-free queue as fast as fetch-and-add
JP6685437B2 (ja) データ処理のための方法及びプロセッサ
Chuang et al. Unbounded page-based transactional memory
RU2501071C2 (ru) Механизм запроса поздней блокировки для пропуска аппаратной блокировки (hle)
US7571288B2 (en) Scalable rundown protection for object lifetime management
JP5137971B2 (ja) スピン・ロックによりロッキング公平性及びロッキング性能の両方を達成する方法及びシステム
US8973004B2 (en) Transactional locking with read-write locks in transactional memory systems
KR102008733B1 (ko) 스토어 상위 서열에 기초하여 상이한 스레드들로부터의 포워딩을 구현하는 스레드에 무관한 로드 스토어 버퍼
US5251308A (en) Shared memory multiprocessor with data hiding and post-store
US9189413B2 (en) Read-copy update implementation for non-cache-coherent systems
US9514006B1 (en) Transaction tracking within a microprocessor
US10929201B2 (en) Method and system for implementing generation locks
KR101993562B1 (ko) Load store 재정렬 및 최적화를 구현하는 명령어 정의
US10031697B2 (en) Random-access disjoint concurrent sparse writes to heterogeneous buffers
US6842809B2 (en) Apparatus, method and computer program product for converting simple locks in a multiprocessor system
JPH1115793A (ja) 資源の保全性を保護する方法
Michael et al. Implementation of atomic primitives on distributed shared memory multiprocessors
Yi et al. A Universal Construction to implement Concurrent Data Structure for NUMA-muticore
Gómez-Hernández et al. Efficient, distributed, and non-speculative multi-address atomic operations
EP0404560A2 (en) Improved multiprocessor system
US10146689B2 (en) Locally poll flag in multi processing node system to determine whether a resource is free to use for thread
Singh et al. Efficient hardware primitives for immediate memory reclamation in optimistic data structures
Ichii et al. A Lazy-Updating Snoop Cache Protocol for 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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40006843

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200925

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

Patentee after: Innovative advanced technology Co.,Ltd.

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

Patentee before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200925

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

Patentee after: Advanced innovation technology Co.,Ltd.

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

Patentee before: Alibaba Group Holding Ltd.