CN1818874A - 高效同步多线程 - Google Patents

高效同步多线程 Download PDF

Info

Publication number
CN1818874A
CN1818874A CN200510121731.2A CN200510121731A CN1818874A CN 1818874 A CN1818874 A CN 1818874A CN 200510121731 A CN200510121731 A CN 200510121731A CN 1818874 A CN1818874 A CN 1818874A
Authority
CN
China
Prior art keywords
thread
processor
variable
obstacle
speed cache
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
CN200510121731.2A
Other languages
English (en)
Other versions
CN100578454C (zh
Inventor
J·克劳福德
S·考塔帕尔利
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN1818874A publication Critical patent/CN1818874A/zh
Application granted granted Critical
Publication of CN100578454C publication Critical patent/CN100578454C/zh
Expired - Fee Related 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
    • G06F9/522Barrier synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0857Overlapped cache accessing, e.g. pipeline by multiple requestors
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Abstract

在一个实施例中,本发明包括在为每一多线程在共享变量中分配位置和写入数值到对应位置以表示对应线程已经达到障碍的方法。以这种方式,当所有的线程都达到障碍时,就建立了同步。在某些实施例中,共享变量由多线程存储在可访问的高速缓存中。还描述和阐明了其它实施例。

Description

高效同步多线程
背景
本发明涉及计算机系统,尤其是这种运行多线程的系统。
包括多处理器(MP)和单处理器系统的计算机系统可包括许多“线程”,每个线程独立于其它线程运行程序指令。多处理器的使用允许多任务或功能,甚至多应用程序,以使处理效率更高速度更快。使用多线程或处理器意味着两个或更多处理器或者线程能够共享存储在系统中的同一数据。然而,当共享数据时,必须注意保持存储器排序。
为了达到数据连续的目的,如果多线程或处理器要读取、修改及向单存储器写入,那么就不允许多代理同时对数据执行操作。进一步,多处理器的复杂应用是数据通常存储在与处理器相连的高速缓存中。由于这种高速缓存典型地位于专门的处理器内,多处理器的计算机系统中的多高速缓存能够包括给定数据项目的不同拷贝。访问此数据的任意代理应当收到有效或更新(即最新)的数据值,并且从高速缓存中回写到存储器中的数据必须为当前数据,以使保持高速缓冲存储的一致性。
存储器指令处理按照目标指令集体系结构(ISA)存储器序列模式执行。作为参考,Intel公司的两个主要ISAs:Intel体系结构(IA-32或x86)和Intel’sITANIUM处理器家族(IPF)具有完全不同的存储器序列模式。在IA-32中,加载(即读取)和存储(即写入)操作在程序序列中必须是可见的,然而在IPF体系结构中,通常不是这样。更进一步,当在芯片多处理器(CMP)或其它多处理器系统中执行多线程时,已排序的存储器指令用于不同线程间的同步和通信。
多线程(MT)软件使用不同的机制以在不同线程间发生作用和调整。多处理器同步的两个主要形式为障碍和信号螺旋锁。障碍机制帮助程序在程序的预定点上同步不同线程。典型地,当其达到这个点时,每一线程增加或减少原子方式中的存储器变量。然后每一线程等待存储器变量达到预定的障碍水平。一旦所有线程完成更新,就达到了同步。当达到障碍时,所有线程就可以继续。
当访问共享存储器变量或结构(即共享元素)时,信号螺旋锁机制用于确保多线程间的互斥。为了提供共享元素的唯一一致的视图,需要有一锁变量来保证。需要访问共享元素的每一线程必须通过原子信号量操作获得保证锁(即锁定)。当得到锁时,只能当其被释放以后(即解锁),通过最初的请求,剩余的线程才能获得锁。只能获得锁的线程才能对共享元素(软件约定)执行操作/更新,于是就确保了互斥。锁定通过指定特殊值表示已锁定状态来执行,并且不同的值表示未锁状态。寻找访问共享元素的每一线程,通过自动更新锁变量为锁值来得到锁(当检查到锁还没有被获得后)。
大多数ISA’s提供特定信号指令以在多线程或处理器间得到多处理器同步。其中,原子增加是障碍同步机制的通用指令。然而,已知的障碍同步方法和信号螺旋锁很低效。当锁变量移向多处理器的不同核心时,障碍机制典型地需要有效通信量,如内处理器高速缓存通信量。同样,螺旋锁机制需要不同处理器核心中的有效通信量。更进一步,原子增加指令需要共享变量深入处理器核心以执行增加操作,重新请求有效通信量,以及利用处理器资源。因此,需要改进多线程间的同步方式。
附图的简要描述
图1是依据本发明一个实施例中的方法的流程图;
图2是依据本发明一个实施例中的同步方法的流程图;
图3是依据本发明一个实施例中的锁定方法的流程图;
图4是依据发明一个实施例中的代表系统的方框图;
图5是依据发明另一个实施例中的多处理器系统的方框图。
详细描述
在许多实施例中,共享存储器变量(“共享变量”)可用于保持多线程间的同步。共享变量可有多个部分,每一部分都单独与线程之一相关。在这种模式中,共享变量可独立表示每一线程的同步状况。
在某些实施例中,可使用集合体系机制而不是算法操作来更新共享变量,例如增加或减少操作。在这种模式中,在不引起共享变量高速缓冲或进入处理器核心的情况下,可更新不同线程的状况。即,设置/重设操作可以远程或最近电平高速缓存来执行。此外,这些操作可不使用昂贵的加法器或者其它需要位于接近运行核心的电路来执行。
在一实施例中,这里提到的指令fetchset指令可为低耗指令以改进多线程同步,尤其是低线程数的情况。作为通过给定线程执行的fetchset指令对共享变量或集合执行读取,或者根据此线程,存储预定数据到共享变量部分。例如,在有八个或更少的线程运行的实施例中,共享变量可为8个字节。共享变量的每一字节与线程之一相对应。在一个实施例中,预先设定的数值可全部为“1”。例如,fetchset1在给定部分的特定存储器地址上存储FFhex(即11111111)。由于设置(即重写)存储器状态比执行读取—增加—更新操作花费少,这种指令可能为低耗的。
然而如上面所讨论的,每一线程需要字节,在其它实施例中,可能存在不同排列。例如在一个实施例中,单比特可用于表示线程。更进一步,然而如上面所讨论的,当将预先确定的数据设为1时,在其它实施例中可用到任何预期的数值。
现在参考图1,它表示依据本发明的一个实施例中的方法的流程图。更具体地是,图1表示了依据一个实施例执行fetchset指令的方法10。此fetchset指令用于访问共享存储器变量,并存储数据在对应于给定线程的变量的部分中。如图1中所示,fetchset操作初始化(椭圆20)。然后读取第一存储器变量(方框30)。第一存储器变量与用于表示障碍的多线程同步状态的共享变量相对应。线程读取变量来确定变量的所有部分是否与给定数值相等,或者确定变量的特定部分是否为锁定状态,正如下面将要进一步讨论的。
仍然参考图1,接下来,对应于当前线程的第一存储器变量的一部分用预定数值来设定(方框40)。例如,存储器变量的第一部分(如第一字节)可对应于程序的第一线程。在运行fetchset指令时,第一线程可设为那个部分。在一个实施例中,部分可全用1来设定。然后方法10结束(椭圆50)。
当不是如图1中所示的,可以理解的是,当达到障碍时,每一线程对变量执行fetchset指令,并且预定数值存储在变量中的特定位置。当设定存储器变量的所有字节时,就建立了同步。
现在参考图2,表示了依据本发明的一个实施例的同步方法的流程图。如图2中所示,方法100可用于同步程序的多个线程。通过运行给定线程的指令(方框110),方法100开始(椭圆105)。下面确定线程是否达到障碍(菱形120)。例如,障碍对应于预想同步的程序的预定部分。如果没有达到这种障碍,线程继续执行指令,回到方框110。
可选的是,如果线程确实达到障碍,控制传给方框130,在其中对第一存储器变量执行fetchset操作。第一存储器变量可通过多个线程存储在可得到的高速缓存中。这种fetchset操作可包含上文根据图1所述的步骤。即,这种fetchset操作使线程读取第一存储器变量的内容,并为对应于当前线程的第一存储器变量的部分设定值。下面将要确定的是当前线程是否为达到障碍的最后一个(菱形140)。例如,在一个实施例中,线程读取变量内容并确定是否所有部分与设定值相同。然而,在某些实施例中,设定值在第一变量的所有部分中是当前的,除了对应当前线程的部分。如果当前线程不是达到障碍的最后一个,控制传递到方框150,在其中线程在第二存储器变量上螺旋直到它被更新。第二存储器变量也可存储在高速缓存中。
如果当前线程是达到障碍的最后一个,就更新第二存储器变量(方框160)。例如,第二存储器变量有从0到1的更新内容。当程序的所有线程都达到障碍,并且第一、第二存储器变量的内容都设定时,控制就继续到方框170,在其中同步完成。这样,方法100结束(椭圆180)。
由于执行fetchset指令的低耗,及其在字节粒度上的定义,变量的设定就输出到CMP或其它处理器共享的末级高速缓存(LLC)。以这种方式,能够阻止包括变量的高速缓存界线被拷贝到每一障碍更新上的核心中(靠近运行管道)。于是,可以避免根据不同核心移动锁定变量的内处理器高速缓存信号量。通过避免错误地共享在高速缓冲存储块及避免对存储器变量的任何读取或更新(这将引起高速缓存界线的拷贝进入到核心高速缓存储器中),可使用软件以确保高速缓存界线在LLC中保持连接。
其它实施例可用于使用单变量来提供细粒度锁定。例如,一个16字节fetchset指令可表示16细粒度锁。在这种实施例中,包括16个数据元素的数据结构可使用一共享变量来锁定。在锁变量中,数据结构的每一元素分配一个字节。然后,只有结构的那部分使用fetchset指令来锁定。以这种方式,只要将要访问的特殊元素没有被锁定,就允许非模块对同一结构的访问。如果通过对第一线程的fetchset操作所返回的初始值在特定字节位置上是清楚的,那么第一线程就成功锁定了那个元素。然而如果已经设定字节位置,那么项目已经被不同的线程锁定。因此,稍后,锁定操作需要被第一线程所重试。
现在参考附图3,它表示对应本发明的一个实施例的锁定方法的流程图。如图3中所示,方法200可用于锁定使用许多细粒度锁的数据结构。通过寻找访问由锁支配的数据结构的指令(方框210),方法200开始(椭圆205)。Fetchset操作,与图1中所示的相似,可对与数据结构(方框220)相关的共享变量执行操作。然而,对于图3的实施例,图1中方框40可改为用于设定存储器变量一部分的预定数值,此存储器变量与数据结构的给定数据元素相对应。
读取共享变量后,可以确定对应于数据元素的变量部分是否被锁定(菱形230)。例如,在一个实施例中,可以确定此部分是否设定(即具有数据1)。如果此部分表示数据元素已被锁定,就不再允许线程访问数据元素,并且随后重试fetchset操作(方框240)。以这种方式,如果不同线程已经结束了数据元素上的操作,下面线程访问共享变量,特定部分可能处于重新设置状态。
反之如果在菱形230上,确定共享变量部分未被锁定,此部分可被锁定(方框250)。那么当前线程可更新对应于数据结构那部分的数据元素(方框260)。例如,线程更新数据元素,并将已更新的数据重写到其存储器位置上。然后,线程解锁共享变量的那部分(方框270),以使其它线程能够获得给定数据元素上的锁。这样,方法200结束(椭圆280)。
在许多实施例中,由于fetchset或其它指令支持预定义的更新有效载荷(即预定义数值),有效载荷就在运行指令的特定高速缓存上同步。作为结果,当指令流过机器时,对共享变量的更新通过软件错误来阻止有效负载的讹误。
更进一步,由于每一线程的同步是独立的,它提供了加强的障碍同步体系结构。任何未能报告障碍的线程在共享变量中都没有其字节定位集。在这种方式下,任何引起软件故障的错误线程(不论是由于软件或硬件故障)都是独立的,并基于共享变量的状态来识别。然后软件选择性地对特殊线程执行恢复。
Fetchset指令(即fetchset.double)的16字节变量可定义为在16字节粒度上操作,并在16个线程中提供同步。
在某些实施例中,分级障碍体系结构可用于建立在具有大线程数目的软件中的同步。在这种实施例中,在建立CMP处理器或集群系统的本地集群内建立同步的较低层次上,以fetchset为基础的体系结构的可作为高效障碍体系结构。
现在参考下面的表1,表示根据本发明一个实施例中的fetchset指令的指令语法。如表1中所示,指令语法在IPF ISA的范围内。
表1
fetchset.dbl.p1.sz.sem r1,[ar.csd]=[r3]
dbl:s-读取8字节
d---读取16字节。第二个8字节目标ar.csd.
p1:0---清除(‘0个有效载荷)
1---设置(‘1111....个有效载荷)
sz:0---1个字节
1---2个字节
2---4个字节
3---8个字节
4---16个字节(当dbl设为d时才有效)
sem:acq---获取
rel---释放
注:当dbl设为d时才ar.csd应用)
如表1中所示,指令语法表示:执行8字节或16字节读取操作;将被写入到特定位置的有效载荷;大小;信号量的类型,如为获取或释放操作。
现在参考下面的表2,表示根据本发明的一个实施例,利用fetchset指令建立障碍同步的伪代码例子。此外,尽管本发明的范围不限于此,这个伪代码是在IPF内容中。
表2
//r20包括障碍地址.
//r40包括共享存储器变量
stf.spill[r20]=f0
stf.spill[r40]=f0
//注:此行写入16字节的数值0到目标记录中
mov r30=‘hFFFFFFFFFFFFFFFF;;
mov ar.csd=r30;;
//注:此行将fetchset操作的第二操作数移到目标记录中
//开始独立线程—电平运行
.
.
.
//完成线程运行
fetchset.d.l.rel r10,ar.csd=[r20],0;;
cmp.eq p1,p2=r10,r30
//注:如果记录数值相等,p1设为1,p2设为0,否则反之
mov r35=ar.csd;;
cmp.eq.and p1,p2=r10,r35;;
p1:stf.spill[r40]=f1;;
p1:br sync_cmp
//注:如果p1等于1,操作转向sync_cmp(即同步完成)
spin_loop:ldff19=[r40]
fcmp.eq p1,p2=f19,f1;
//注:如果目标数值相等,p1等于0,p2等于1,操作转向sync_cmp(即同步完成),否则反之,并重复spin_loop
p2:br spin_loop
sync_cmp://同步完成
总之,表2中的代码执行下面的行为。首先,代码初始化将要存储共享变量的高速缓存中的位置,并进一步初始化共享变量为0。然后,独立线程运行。一旦线程完成,通过每一线程读取共享变量的数值并与预定数值相对比,执行fetchset指令。如果共享变量与该值相等,就表示当前线程为最后线程,并且完成同步。如果不等,当前线程更新其共享变量的位置,并输入螺旋循环,直到最后线程完成其运行以完成同步,
现在参考图4,它表示依据发明的一个实施例的典型计算机系统300的方框图。如图4中所示,计算机系统300包括可以是芯片多处理器(CMP)的处理器310。如图4中所示,处理器310包括第一核心310a(核心A)和第二核心310b(核心B)。在一个实施例中,处理器310可使存储器系统互连320与高速缓冲相干共享存储器子系统(“相干存储器”)330相耦合。在一个实施例中,相干存储器330包括动态随机存取存储器(DRAM),并进一步包括在多处理器间逻辑共享相干存储器330的相干存储控制器。
可以理解的是,在其它实施例中,另外的处理器可与相干存储器330耦合。此外在某些实施例中,相干存储器330可分步执行并展开,以使系统300的次处理器与相干存储器330的某些部分通信,及使其它处理器与相干存储器330的其它部分通信。
如图4中所示,依据本发明的一个实施例,核心310a包括高速缓存314a和执行单元316a。高速缓存314a可为与核心310a相连的低电平高速缓存(如电平一(L1))。当然,其它元件可位于核心310a中,如附加高速缓存。尤其是,末级高速缓存(LLC)305,它可为电平二(L2)高速缓存,可与核心310a和310b相耦合。依据本发明的一个实施例,LLC305可存储锁变量。更进一步,设置在锁变量部分中的数值可在LLC305中同步。如图4进一步所示,相似的处理器元件可位于核心310b中,它可为多处理器系统如芯片多处理器(CMP)的第二处理器核心。
相干存储器330也可与输入/输出(I/O)网络集线器335相耦合(通过网络集线器连接),此网络集线器335与I/O扩展总线355和外设总线350相耦合。在许多实施例中,在其它装置间,I/O扩展总线355与许多I/O装置相耦合,如键盘和鼠标。外设总线350与许多元件相耦合,如可为存储装置如闪存、附加卡等的外设装置370。尽管是参考系统300的特定元件来描述,图示的实施例的许多更改也是可以的。
在某些实施例中,多处理器系统为点对点的总线系统,如通用系统接口(CSI)系统。现在参考图5,表示依据本发明其它实施例的多处理系统的方框图。如图5中所示,多处理器系统为点对点总线系统,并包括通过点对点互联450耦合的第一处理器470和第二处理器480。第一处理器470包括多处理器核心474a和474b(尽管可以存在更多核心)、存储控制器网络集线器(MCH)472、高速缓存473和点对点(P-P)接口476和478。同样,第二处理器480包括同样的元件,称为处理器核心484a和484b、MCH482、高速缓存483和P-P接口486和488。依据本发明的一个实施例,高速缓存473和483可存储锁变量。更进一步,设置到锁变量部分中的数值可在高速缓存473和483得到同步。
如图5中所示,MCH的472和482将处理器与称为存储器432和存储器444的各自的存储器相耦合,它们都是位于各自处理器的主存储器上的部分。
第一处理器470和第二处理器480分别通过P-P接口452和454与芯片集490相耦合。如图5中所示,芯片集490包括P-P接口494和498。更进一步,芯片集490包括接口492(I/F)以使芯片集490与高性能图形引擎438相耦合。在一个实施例中,高级图形端口(AGP)总线439可用于将图形引擎438与芯片集490相耦合。AGP总线439符合由Intel公司,加利福尼亚的Santa Clara于1998年5月4日出版的《加速图形端口接口分类,修订本2.0》。可选的是,点对点互连439可与这些元件耦合。
接下来,芯片集490通过接口496与第一总线416相耦合。在一个实施例中,第一总线416可为外围设备互连(PCI)总线,如出版于1995年6月的《PCI本地总线分类,产品版本,版本2.1》中所定义的,或者如PCI并行总线或者其它的第三代I/O互连总线,尽管本发明的范围不限于此。
如图5所示,与将第一总线416与第二总线420耦合的总线桥418一起,许多输入/输出(I/O)装置414可与第一总线416耦合。在一个实施例中,第二总线420可为小插针数(LPC)总线。许多装置可与第二总线420耦合,包括如,键盘/鼠标422、通讯装置426和包括在一个实施例代码430中的数据存储单元428。更进一步,音频I/O 424可与第二总线420耦合。
实施例可在计算机程序上执行,这些程序存储在具有指令的存储介质上,以对计算机系统编程来执行实施例。存储介质包括但不仅限于,任何类型的磁盘包括软盘、光盘、只读光盘(CD-ROMs)、可擦写光盘(CD-RWs)和磁光盘,半导体装置如只读存储器(ROMs),随机存储存储器(RAMs)如动态和静态RAMs、可擦写编程只读存储器(EPROMs)、电可擦除编程只读存储器(EEPROMs),闪存、磁性或光卡,或其它适合存储电子指令的介质。其它实施例可作为由可编程控制装置执行的软件模块来实施。
当参考有限的几个实施例描述了本发明时,从此本领域的技术人员将作出许多更改或变化。在本发明的确切精神和范围内,附具的权利要求意图覆盖所有的更改或变化。

Claims (29)

1.一种方法,包括:
为多线程中每一个分配共享变量中的位置;及
写入数值到对应的位置,以表示对应线程达到了障碍。
2.如权利要求1所述的方法,其特征在于,所述位置包括所述共享变量的字节。
3.如权利要求1所述的方法,其特征在于,共享变量位于至少由两个处理器共享的末级高速缓存内。
4.如权利要求1所述的方法,其特征在于,还包括当多线程的至少一个达到所述障碍时,读取所述共享变量的至少一部分。
5.如权利要求1所述的方法,其特征在于,还包括同步其中存储了所述共享变量的高速缓存中的所述值。
6.一种方法,包括:
用具有多个数据元素的数据结构关联一单变量;及
使用所述单变量锁定所述多个数据元素中的至少一个。
7.如权利要求6所述的方法,其特征在于,还包括用多个数据元素中的每一个关联单变量的字节。
8.如权利要求7所述的方法,其特征在于,还包括通过与多个数据元素之一相关的字节的设置由第一线程锁定多个数据元素中的一个。
9.如权利要求8所述的方法,其特征在于,还包括阻止在设置字节时第二线程对多个数据元素之一的访问。
10、一种包括了含有指令的机器可读存储介质,如果由机器执行所述指令时可使得所述机器执行如下方法:
运行程序的多个线程;及
当第一线程达到程序的障碍时,在共享变量的第一部分内存储第一个值。
11.如权利要求10所述的物品,其特征在于,所述方法还包括由所述第一线程读取共享变量来确定第一线程是否为达到障碍的多个线程中的最后一个。
12.如权利要求10所述的物品,其特征在于,所述方法还包括基于共享变量的状态来隔离给定线程的故障。
13.如权利要求10所述的物品,其特征在于,所述方法还包括当第二线程达到障碍时,在共享变量的第二部分内存储所述第一个值。
14.如权利要求13所述的物品,其特征在于,所述方法还包括如果多个线程达到障碍,就更新第二变量。
15.如权利要求14所述的物品,其特征在于,所述方法还包括使得多个线程中的至少一个在第二变量上旋转直到更新第二线程。
16.一种装置,包括:
与第一处理器和第二处理器耦合的高速缓存,它存储具有多个部分的共享存储器结构,其中所述多个部分中的每个部分都对应于程序的多个线程中的一个。
17.如权利要求16所述的装置,其特征在于,所述高速缓存包括末级高速缓存。
18.如权利要求16所述的装置,其特征在于,所述第一处理器和所述第二处理器包括芯片多处理器的心核。
19.如权利要求16所述的装置,其特征在于,当多个线程中对应的那一个达到障碍时,所述高速缓存就与所述多个部分中的至少一个内的值同步。
20.一种系统,包括:
第一处理器;
耦合至所述第一处理器的第二处理器;
与第一处理器和第二处理器耦合的高速缓存,它存储具有多个部分的第一共享变量,所述多个部分的每一个都对应于第一数据结构的多个数据元素中的一个;以及
耦合至所述高速缓存的动态随机存取存储器。
21.如权利要求20所述的系统,其特征在于,高速缓存包括末级高速缓存。
22.如权利要求21所述的系统,其特征在于,所述高速缓存存储具有用于程序的多线程的每一个的位置的第二共享变量。
23.如权利要求22所述的系统,其特征在于,当所述多线程中的一个达到障碍时,所述高速缓存就同步在用于所述多线程中的一个的位置中的值。
24.一种装置,包括:
第一处理器核心;
耦合至所述第一处理器核心的第二处理器核心;以及
与所述第一处理器核心和所述第二处理器核心相耦合的高速缓存,它存储具有多个部分的第一共享存储器结构,其中所述多个部分的每一部分都对应于在所述第一处理器核心和所述第二处理器核心执行的程序的多线程中的一个。
25.如权利要求24所述的装置,其特征在于,所述第一处理器核心和所述第二处理器核心包括芯片多处理器,并且其中所述高速缓存包括末级高速缓存。
26.如权利要求24所述的装置,其特征在于,当多个线程中对应的那一个到达障碍时,所述高速缓存就同步在所述多个部分的至少一个内的值。
27.如权利要求24所述的装置,其特征在于,所述高速缓存存储表示了多个线程同步状态的状况变量。
28.如权利要求24所述的装置,其特征在于,所述高速缓存存储具有多位置的第二共享存储器结构,其中多位置中的每一个都对应于数据结构的多个数据元素中的一个。
29.如权利要求28所述的装置,其特征在于,如果所述第二共享存储器结构的对应位置表示了锁定状态,就阻止线程访问所述多个数据元素中的一个。
CN200510121731.2A 2004-12-29 2005-12-29 高效同步多线程 Expired - Fee Related CN100578454C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/026,207 US7937709B2 (en) 2004-12-29 2004-12-29 Synchronizing multiple threads efficiently
US11/026,207 2004-12-29

Publications (2)

Publication Number Publication Date
CN1818874A true CN1818874A (zh) 2006-08-16
CN100578454C CN100578454C (zh) 2010-01-06

Family

ID=36613109

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200510121731.2A Expired - Fee Related CN100578454C (zh) 2004-12-29 2005-12-29 高效同步多线程

Country Status (2)

Country Link
US (4) US7937709B2 (zh)
CN (1) CN100578454C (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101739381B (zh) * 2008-11-19 2013-04-10 富士通株式会社 屏障同步设备、屏障同步系统以及屏障同步方法
WO2013075634A1 (en) * 2011-11-22 2013-05-30 Huawei Technologies Co., Ltd. System and method for implementing locks shared between kernel and user space
CN101925881B (zh) * 2008-01-25 2013-06-05 学校法人早稻田大学 多处理器系统以及多处理器系统的同步方法
CN104111897A (zh) * 2013-04-16 2014-10-22 华为技术有限公司 一种数据处理方法、装置及计算机系统
US9892481B2 (en) 2011-07-29 2018-02-13 Intel Corporation CPU/GPU synchronization mechanism
CN108961340A (zh) * 2018-08-09 2018-12-07 中央民族大学 一种目标物体的自动射击方法及装置
CN112486703A (zh) * 2020-11-27 2021-03-12 中船重工(武汉)凌久电子有限责任公司 基于多核多处理器并行系统的全局数据存储器管理方法

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7051362B2 (en) 2000-05-16 2006-05-23 Ideaflood, Inc. Method and system for operating a network server to discourage inappropriate use
US7555607B2 (en) * 2005-11-10 2009-06-30 Hewlett-Packard Development Company, L.P. Program thread syncronization for instruction cachelines
GB0613289D0 (en) * 2006-07-04 2006-08-16 Imagination Tech Ltd Synchronisation of execution threads on a multi-threaded processor
US8056087B2 (en) * 2006-09-25 2011-11-08 International Business Machines Corporation Effective use of a hardware barrier synchronization register for protocol synchronization
US8756562B2 (en) * 2008-12-11 2014-06-17 The Mathworks, Inc. Subgraph execution control in a graphical modeling environment
US8549470B2 (en) 2008-12-11 2013-10-01 The Mathworks, Inc. Multi-threaded subgraph execution control in a graphical modeling environment
US20100191814A1 (en) * 2008-12-23 2010-07-29 Marco Heddes System-On-A-Chip Employing A Network Of Nodes That Utilize Receive Side Flow Control Over Channels For Messages Communicated Therebetween
US8924984B2 (en) * 2009-06-26 2014-12-30 Microsoft Corporation Lock-free barrier with dynamic updating of participant count
US8296524B2 (en) * 2009-06-26 2012-10-23 Oracle America, Inc. Supporting efficient spin-locks and other types of synchronization in a cache-coherent multiprocessor system
US8832712B2 (en) * 2009-09-09 2014-09-09 Ati Technologies Ulc System and method for synchronizing threads using shared memory having different buffer portions for local and remote cores in a multi-processor system
US8943510B2 (en) * 2010-12-17 2015-01-27 Microsoft Corporation Mutual-exclusion algorithms resilient to transient memory faults
US20120179896A1 (en) 2011-01-10 2012-07-12 International Business Machines Corporation Method and apparatus for a hierarchical synchronization barrier in a multi-node system
US9092272B2 (en) * 2011-12-08 2015-07-28 International Business Machines Corporation Preparing parallel tasks to use a synchronization register
US9218223B2 (en) * 2013-08-13 2015-12-22 Qualcomm Incorporated Barrier synchronization with dynamic width calculation
EP3063632A4 (en) * 2013-10-28 2017-04-19 Intel Corporation Mesh performance improvement using dual voltage data transfer
US9760410B2 (en) * 2014-12-12 2017-09-12 Intel Corporation Technologies for fast synchronization barriers for many-core processing
US9733995B2 (en) * 2014-12-17 2017-08-15 Intel Corporation Scalable synchronization mechanism for distributed memory
US20160188490A1 (en) * 2014-12-26 2016-06-30 Intel Corporation Cost-aware page swap and replacement in a memory
US9733911B2 (en) * 2015-11-11 2017-08-15 National Instruments Corporation Value transfer between program variables using dynamic memory resource mapping
CN105242978B (zh) * 2015-11-19 2019-01-08 东软集团股份有限公司 多线程条件下cpu高速缓存行失效的处理方法及装置
US10372351B2 (en) 2017-02-23 2019-08-06 Western Digital Technologies, Inc. Techniques for non-blocking control information and data synchronization by a data storage device
US10359955B2 (en) 2017-02-23 2019-07-23 Western Digital Technologies, Inc. Data storage device configured to perform a non-blocking control update operation
US20180239532A1 (en) 2017-02-23 2018-08-23 Western Digital Technologies, Inc. Techniques for performing a non-blocking control sync operation
US11061742B2 (en) 2018-06-27 2021-07-13 Intel Corporation System, apparatus and method for barrier synchronization in a multi-threaded processor
CN109614220B (zh) 2018-10-26 2020-06-30 阿里巴巴集团控股有限公司 一种多核系统处理器和数据更新方法
US10802965B2 (en) * 2019-02-05 2020-10-13 Microsoft Technology Licensing, Llc Reducing synchronization reliance in garbage collection marking
US11422932B2 (en) 2019-12-20 2022-08-23 Microsoft Technology Licensing, Llc Integrated reference and secondary marking
US11137794B2 (en) * 2020-01-06 2021-10-05 Woodward, Inc. Systems and methods for synchronization of multiple processors
US11392427B2 (en) * 2020-01-06 2022-07-19 Microsoft Technology Licensing, Llc Lock-free reading of unitary value sets
US11816349B2 (en) 2021-11-03 2023-11-14 Western Digital Technologies, Inc. Reduce command latency using block pre-erase

Family Cites Families (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4926375A (en) * 1987-05-05 1990-05-15 Ge Fanuc Automation North America, Inc. Multiple nodes broadcast communication method with receiver identification by bit position in transferred massage
JPH0640324B2 (ja) * 1989-10-26 1994-05-25 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチプロセッサ・システムおよびそのプロセス同期方法
US5611070A (en) * 1990-05-10 1997-03-11 Heidelberger; Philip Methods and apparatus for performing a write/load cache protocol
US5430850A (en) * 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
CA2078315A1 (en) * 1991-09-20 1993-03-21 Christopher L. Reeve Parallel processing apparatus and method for utilizing tiling
US5745778A (en) * 1994-01-26 1998-04-28 Data General Corporation Apparatus and method for improved CPU affinity in a multiprocessor system
JPH08180001A (ja) * 1994-04-12 1996-07-12 Mitsubishi Electric Corp 通信方式及び通信方法及びネットワークインタフェース
JPH0962558A (ja) * 1995-08-29 1997-03-07 Fuji Xerox Co Ltd データベース管理システム及び方法
US5822764A (en) * 1996-03-04 1998-10-13 Motorola, Inc. Method and circuit for efficiently replacing invalid locked portions of a cache with valid data
US6058460A (en) * 1996-06-28 2000-05-02 Sun Microsystems, Inc. Memory allocation in a multithreaded environment
JP2882475B2 (ja) * 1996-07-12 1999-04-12 日本電気株式会社 スレッド実行方法
US6289410B1 (en) * 1996-07-18 2001-09-11 Electronic Data Systems Corporation Method and system for maintaining consistency of shared objects based upon instance variable locking
US5991845A (en) * 1996-10-21 1999-11-23 Lucent Technologies Inc. Recoverable spin lock system
US5983310A (en) * 1997-02-13 1999-11-09 Novell, Inc. Pin management of accelerator for interpretive environments
US5872963A (en) * 1997-02-18 1999-02-16 Silicon Graphics, Inc. Resumption of preempted non-privileged threads with no kernel intervention
AU6586898A (en) * 1997-03-21 1998-10-20 University Of Maryland Spawn-join instruction set architecture for providing explicit multithreading
US6167423A (en) * 1997-04-03 2000-12-26 Microsoft Corporation Concurrency control of state machines in a computer system using cliques
FR2762418B1 (fr) * 1997-04-17 1999-06-11 Alsthom Cge Alcatel Procede de gestion d'une memoire partagee
FR2765003B1 (fr) * 1997-06-19 1999-09-24 Alsthom Cge Alcatel Procede pour isoler un emplacement de memoire contenant une valeur obsolete
US6055605A (en) * 1997-10-24 2000-04-25 Compaq Computer Corporation Technique for reducing latency of inter-reference ordering using commit signals in a multiprocessor system having shared caches
US6134594A (en) * 1997-10-28 2000-10-17 Microsoft Corporation Multi-user, multiple tier distributed application architecture with single-user access control of middle tier objects
US6286090B1 (en) * 1998-05-26 2001-09-04 Compaq Computer Corporation Mechanism for selectively imposing interference order between page-table fetches and corresponding data fetches
US6243788B1 (en) * 1998-06-17 2001-06-05 International Business Machines Corporation Cache architecture to enable accurate cache sensitivity
US6952827B1 (en) * 1998-11-13 2005-10-04 Cray Inc. User program and operating system interface in a multithreaded environment
EP1039375A1 (en) * 1999-03-19 2000-09-27 Motorola, Inc. Method and apparatus for implementing zero overhead loops
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6542991B1 (en) * 1999-05-11 2003-04-01 Sun Microsystems, Inc. Multiple-thread processor with single-thread interface shared among threads
US6507862B1 (en) * 1999-05-11 2003-01-14 Sun Microsystems, Inc. Switching method in a multi-threaded processor
US6321330B1 (en) * 1999-05-28 2001-11-20 Intel Corporation Each iteration array selective loop data prefetch in multiple data width prefetch system using rotating register and parameterization to avoid redundant prefetch
US6671707B1 (en) * 1999-10-19 2003-12-30 Intel Corporation Method for practical concurrent copying garbage collection offering minimal thread block times
US6539501B1 (en) * 1999-12-16 2003-03-25 International Business Machines Corporation Method, system, and program for logging statements to monitor execution of a program
US6795901B1 (en) * 1999-12-17 2004-09-21 Alliant Techsystems Inc. Shared memory interface with conventional access and synchronization support
US6370625B1 (en) * 1999-12-29 2002-04-09 Intel Corporation Method and apparatus for lock synchronization in a microprocessor system
AU2001247324A1 (en) * 2000-03-08 2001-09-17 Sun Microsystems, Inc. Vliw computer processing architecture with on-chip dynamic ram
US20020060685A1 (en) * 2000-04-28 2002-05-23 Malcolm Handley Method, system, and computer program product for managing terrain rendering information
US6760815B1 (en) * 2000-06-02 2004-07-06 Sun Microsystems, Inc. Caching mechanism for a virtual heap
US6725334B2 (en) * 2000-06-09 2004-04-20 Hewlett-Packard Development Company, L.P. Method and system for exclusive two-level caching in a chip-multiprocessor
US6668308B2 (en) * 2000-06-10 2003-12-23 Hewlett-Packard Development Company, L.P. Scalable architecture based on single-chip multiprocessing
JP3639206B2 (ja) * 2000-11-24 2005-04-20 富士通株式会社 共有メモリ型スカラ並列計算機における並列行列処理方法、及び記録媒体
US6502170B2 (en) * 2000-12-15 2002-12-31 Intel Corporation Memory-to-memory compare/exchange instructions to support non-blocking synchronization schemes
US7111294B2 (en) * 2001-01-16 2006-09-19 Microsoft Corporation Thread-specific heaps
US6754850B2 (en) * 2001-03-02 2004-06-22 National Instruments Corporation System and method for performing batch synchronization for a test sequence
US6904465B2 (en) * 2001-04-26 2005-06-07 Hewlett-Packard Development Company, L.P. Low latency inter-reference ordering in a multiple processor system employing a multiple-level inter-node switch
US6920533B2 (en) * 2001-06-27 2005-07-19 Intel Corporation System boot time reduction method
US6898694B2 (en) * 2001-06-28 2005-05-24 Intel Corporation High instruction fetch bandwidth in multithread processor using temporary instruction cache to deliver portion of cache line in subsequent clock cycle
US7178145B2 (en) * 2001-06-29 2007-02-13 Emc Corporation Queues for soft affinity code threads and hard affinity code threads for allocation of processors to execute the threads in a multi-processor system
JP3661614B2 (ja) * 2001-07-12 2005-06-15 日本電気株式会社 キャッシュメモリ制御方法及びマルチプロセッサシステム
US7080376B2 (en) * 2001-09-21 2006-07-18 Intel Corporation High performance synchronization of accesses by threads to shared resources
EP1436724A4 (en) * 2001-09-28 2007-10-03 Consentry Networks Inc MORE THREAD PACKAGE PROCESSING ENGINE FOR CAREFUL PACKAGE PROCESSING
US6901491B2 (en) * 2001-10-22 2005-05-31 Sun Microsystems, Inc. Method and apparatus for integration of communication links with a remote direct memory access protocol
US20030115476A1 (en) * 2001-10-31 2003-06-19 Mckee Bret Hardware-enforced control of access to memory within a computer using hardware-enforced semaphores and other similar, hardware-enforced serialization and sequencing mechanisms
US7159216B2 (en) * 2001-11-07 2007-01-02 International Business Machines Corporation Method and apparatus for dispatching tasks in a non-uniform memory access (NUMA) computer system
US7500240B2 (en) * 2002-01-15 2009-03-03 Intel Corporation Apparatus and method for scheduling threads in multi-threading processors
US20030145136A1 (en) * 2002-01-31 2003-07-31 Tierney Gregory E. Method and apparatus for implementing a relaxed ordering model in a computer system
US20030225816A1 (en) * 2002-06-03 2003-12-04 Morrow Michael W. Architecture to support multiple concurrent threads of execution on an arm-compatible processor
US20030229740A1 (en) * 2002-06-10 2003-12-11 Maly John Warren Accessing resources in a microprocessor having resources of varying scope
US6901483B2 (en) * 2002-10-24 2005-05-31 International Business Machines Corporation Prioritizing and locking removed and subsequently reloaded cache lines
CA2419340A1 (en) * 2003-02-20 2004-08-20 Ibm Canada Limited - Ibm Canada Limitee Software barrier synchronization
US20050102465A1 (en) * 2003-07-28 2005-05-12 Royer Robert J. Managing a cache with pinned data
US7512950B1 (en) * 2003-08-14 2009-03-31 Sun Microsystems, Inc. Barrier synchronization object for multi-threaded applications
JP4276028B2 (ja) * 2003-08-25 2009-06-10 株式会社日立製作所 マルチプロセッサシステムの同期方法
US7380086B2 (en) * 2003-12-12 2008-05-27 International Business Machines Corporation Scalable runtime system for global address space languages on shared and distributed memory machines
US7185147B2 (en) * 2003-12-12 2007-02-27 Intel Corporation Striping across multiple cache lines to prevent false sharing
JP4402997B2 (ja) * 2004-03-26 2010-01-20 株式会社日立製作所 ストレージ装置
US7360021B2 (en) * 2004-04-15 2008-04-15 International Business Machines Corporation System and method for completing updates to entire cache lines with address-only bus operations
US7475190B2 (en) * 2004-10-08 2009-01-06 International Business Machines Corporation Direct access of cache lock set data without backing memory
US7418557B2 (en) * 2004-11-30 2008-08-26 International Business Machines Corporation Managing multiprocessor operations
US7380066B2 (en) 2005-02-10 2008-05-27 International Business Machines Corporation Store stream prefetching in a microprocessor

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101925881B (zh) * 2008-01-25 2013-06-05 学校法人早稻田大学 多处理器系统以及多处理器系统的同步方法
CN101739381B (zh) * 2008-11-19 2013-04-10 富士通株式会社 屏障同步设备、屏障同步系统以及屏障同步方法
US9892481B2 (en) 2011-07-29 2018-02-13 Intel Corporation CPU/GPU synchronization mechanism
WO2013075634A1 (en) * 2011-11-22 2013-05-30 Huawei Technologies Co., Ltd. System and method for implementing locks shared between kernel and user space
US9128786B2 (en) 2011-11-22 2015-09-08 Futurewei Technologies, Inc. System and method for implementing shared locks between kernel and user space for synchronize access without using a system call to the kernel
CN104111897A (zh) * 2013-04-16 2014-10-22 华为技术有限公司 一种数据处理方法、装置及计算机系统
WO2014169649A1 (zh) * 2013-04-16 2014-10-23 华为技术有限公司 一种数据处理方法、装置及计算机系统
CN104111897B (zh) * 2013-04-16 2017-06-13 华为技术有限公司 一种数据处理方法、装置及计算机系统
US9824011B2 (en) 2013-04-16 2017-11-21 Huawei Technologies Co., Ltd. Method and apparatus for processing data and computer system
CN108961340A (zh) * 2018-08-09 2018-12-07 中央民族大学 一种目标物体的自动射击方法及装置
CN112486703A (zh) * 2020-11-27 2021-03-12 中船重工(武汉)凌久电子有限责任公司 基于多核多处理器并行系统的全局数据存储器管理方法
CN112486703B (zh) * 2020-11-27 2024-02-06 中船重工(武汉)凌久电子有限责任公司 基于多核多处理器并行系统的全局数据存储器管理方法

Also Published As

Publication number Publication date
US20130275995A1 (en) 2013-10-17
US8473963B2 (en) 2013-06-25
US20060143361A1 (en) 2006-06-29
US20110173634A1 (en) 2011-07-14
CN100578454C (zh) 2010-01-06
US20140337857A1 (en) 2014-11-13
US8819684B2 (en) 2014-08-26
US7937709B2 (en) 2011-05-03
US9405595B2 (en) 2016-08-02

Similar Documents

Publication Publication Date Title
CN1818874A (zh) 高效同步多线程
Huangfu et al. Medal: Scalable dimm based near data processing accelerator for dna seeding algorithm
CN102722418B (zh) 用于硬件锁省略(hle)的后期锁获取机制
CN101359315B (zh) 将输入/输出(i/o)虚拟化操作卸载至处理器的方法及装置
JP4448784B2 (ja) 並列計算機の同期方法及びプログラム
CN101950259B (zh) 用于执行事务的装置、系统及方法
US8327109B2 (en) GPU support for garbage collection
US10031888B2 (en) Parallel memory systems
US10592430B2 (en) Memory structure comprising scratchpad memory
CN1084896C (zh) 清空高速缓冲存储器内容的装置
CN1746867A (zh) 使用核心指示符的高速缓存过滤
CN101454753A (zh) 处理异构资源的地址转换和异常
US11797474B2 (en) High performance processor
US7356568B2 (en) Method, processing unit and data processing system for microprocessor communication in a multi-processor system
CN1258716C (zh) 片内多处理器局部cache一致性的双环监听方法
CN1650266A (zh) 支持单线程应用程序的时分多路复用推理性多线程
US20120272210A1 (en) Methods and systems for mapping a function pointer to the device code
US20080244221A1 (en) Exposing system topology to the execution environment
DE102022131708A1 (de) Anwendungsprogrammierschnittstelle zum begrenzen von speicher
CN101923486A (zh) 一种硬件事务内存系统中避免数据移动的方法
DE102022114509A1 (de) Speicherzuweisung unter verwendung von graphen
CN101482851A (zh) 二进制翻译器中线程共享目标本地码缓存替换方法及系统
Danckaert et al. Platform Independent Data Transfer and Storage Exploration Illustrated on Parallel Cavity Detection Algorithm.
Abdallah Heterogeneous Computing: An Emerging Paradigm of Embedded Systems Design
Mak et al. IBM System z10 processor cache subsystem microarchitecture

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100106

Termination date: 20181229

CF01 Termination of patent right due to non-payment of annual fee