CN1573715A - 在非对称异构多处理器环境中提供原子更新原语的方法 - Google Patents

在非对称异构多处理器环境中提供原子更新原语的方法 Download PDF

Info

Publication number
CN1573715A
CN1573715A CNA2004100447825A CN200410044782A CN1573715A CN 1573715 A CN1573715 A CN 1573715A CN A2004100447825 A CNA2004100447825 A CN A2004100447825A CN 200410044782 A CN200410044782 A CN 200410044782A CN 1573715 A CN1573715 A CN 1573715A
Authority
CN
China
Prior art keywords
lock
order
row order
dma
further comprise
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
CNA2004100447825A
Other languages
English (en)
Other versions
CN1273899C (zh
Inventor
迈克尔·N·戴
查尔斯·R·约翰斯
詹姆斯·A·卡勒
刘培军
张光赏
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1573715A publication Critical patent/CN1573715A/zh
Application granted granted Critical
Publication of CN1273899C publication Critical patent/CN1273899C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47GHOUSEHOLD OR TABLE EQUIPMENT
    • A47G19/00Table service
    • A47G19/22Drinking vessels or saucers used for table service
    • A47G19/2205Drinking glasses or vessels
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B65CONVEYING; PACKING; STORING; HANDLING THIN OR FILAMENTARY MATERIAL
    • B65DCONTAINERS FOR STORAGE OR TRANSPORT OF ARTICLES OR MATERIALS, e.g. BAGS, BARRELS, BOTTLES, BOXES, CANS, CARTONS, CRATES, DRUMS, JARS, TANKS, HOPPERS, FORWARDING CONTAINERS; ACCESSORIES, CLOSURES, OR FITTINGS THEREFOR; PACKAGING ELEMENTS; PACKAGES
    • B65D85/00Containers, packaging elements or packages, specially adapted for particular articles or materials
    • B65D85/70Containers, packaging elements or packages, specially adapted for particular articles or materials for materials not otherwise provided for
    • B65D85/804Disposable containers or packages with contents which are mixed, infused or dissolved in situ, i.e. without having been previously removed from the package
    • B65D85/808Disposable containers or packages with contents which are mixed, infused or dissolved in situ, i.e. without having been previously removed from the package for immersion in the liquid to release part or all of their contents, e.g. tea bags
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0038System on Chip

Landscapes

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

Abstract

本发明为具有带DMA的共享存储器的非同步异构单芯片多处理器计算机系统提供原子更新原语。根据包括带保留取锁行命令、条件放锁行命令和无条件放锁行命令的集合产生至少一个锁行命令。

Description

在非对称异构多处理器环境中 提供原子更新原语的方法
技术领域
本发明一般涉及存储器的原子更新(ATOMIC UPDATE),特别涉及通过相连的处理器单元使用直接存储器存取命令执行的原子更新。
背景技术
在常规对称多处理器系统中,即由多个主处理器单元(MPU)组成的多处理器系统中,MPU可以使用加载/存储指令对公共共享存储器进行直接存取。为了对在多个MPU执行的程序所共享的存储器进行同步和存取控制,除了这些加载/存储指令外,还经常会提供“原子”读/改/写的能力。“原子”命令通常可以定义为这样的命令:对于可能存取该数据区的其它单元而言,允许对存储器中数据的读、改、写序列象是一个单个操作。传统上利用硬件序列实现该命令,该序列或者在整个操作序列完成之前封锁其它单元对该存储区域的存取,或者使用一种更原始的保留加载和条件存储技术。一般地说,这样做是为了保证在存储区域被访问该存储器区域的另一MPU或I/O单元读或写之前,该存储器区域是完全更新和一致的,即对该存储器区域“完成”原子命令或更新序列。
原子命令常常具有特别指令的形式,例如“比较和交换”、“测试和设置”、“获取和空操作”、“获取和存储”等。还有一种技术是在能够在软件中实现原子操作序列的MPU中,提供一对更基础的“加载和保留”及“条件存储”指令。在同构MPU组成的对称多处理器系统中,这些技术可以工作得很好。
在非对称异构多处理器系统中,以常规的共享存储器方式安排MPU。专用处理器,APU,有其自己的专门指令和数据存储器,其通过DMA引擎启动块移动操作来实现对共享存储器的间接存取。对于作为对等方的多个MPU和使用DMA引擎存取共享存储器的APU,需要把原子更新机制扩充到DMA引擎。这通常是因为要提供一种机制来协调对共享存储器中数据的存取。在存在没有这种技术的多个APU的环境中,通过利用MPU的主/从方案(其中通过针对DMA引擎的命令每次一个地为每个APU分配工作),由于APU的空闲时间和MPU用于给各个APU分配工作的时间,导致系统在利用率和效率上都很差。
因此,需要一种DMA引擎,其可被APU用来在APU本地存储器和共享系统存储器之间拷贝数据,同时作为其它MPU和APU/DMA引擎的对等方参与共享存储器的原子更新。
发明内容
本发明为具有带DMA的共享存储器的非同步异构单芯片多处理器计算机系统提供原子更新原语。根据包括带保留取锁行命令(GETLOCK LINE COMMAND WITH RESERVATION)、条件放锁行命令(PUT LOCK LINE CONDITIONAL COMMAND)和无条件放锁行命令(PUT LOCK LINE UNCONDITIONAL COMMAND)的集合产生至少一个锁行命令。
附图说明
为了对本发明有一个更完整的理解并明了其优点,参照附图以配合后面的详细说明,其中:
附图1示意性地描述了一个系统结构,具有连接至系统存储器的多条总线、DMA引擎、原子装置和本地存储器;
附图2说明了针对高速缓存和本地存储器使用DMA带保留取锁行命令和条件放锁行命令的方法;
附图3说明了使用DMA无条件放锁行命令的方法。
具体实施方式
在下面的讨论中,给出了许多具体细节以提供对本发明的透彻理解。然而,本领域的技术人员会认识到,在没有这些具体细节的情况下也可以实施本发明。在其它情况下,一些公知的部分以示意图或方框图的形式加以说明,为的是不因不必要的细节而模糊本发明。此外,尽可能地忽略了诸如涉及网络通信、电磁信号技术之类的细节,因为这样的细节不是完整理解本发明所必须的,而且认为这些内容是在本领域普通技术人员知识范围之内。
在本说明的其余部分,处理单元(PU)可以是一个设备中仅有的计算处理器。此时,该PU通常被称为MPU(主处理单元)。处理单元也可以是许多处理单元中的一个,它们按照为特定计算设备开发的方法或算法分担计算负载。在本说明的其余部分,凡指处理器时都使用术语MPU,不管MPU是否设备中仅有的计算件件,也不管MPU是否正与其它MPU共享计算元件。
还要注意到,除非特别指明,这里所说明的所有功能既可用硬件也可用软件执行,还可通过二者的结合来执行。然而在优选实施例中,除非另有说明,例如计算机或电子数据处理器这样的处理器按照代码,例如计算机程序代码、软件和/或为执行这些功能而编码的集成电路来执行这些功能。
转向附图1,其中示出了系统100,系统100允许APU 110更自治地作为对等方加入多处理器环境。这一点是利用APU 110实现的,它利用DMA引擎115的块模式对系统存储器170进行间接存取。一般来说,在系统100中,APU 110通过使用“加载和保留”(GETLLAR)锁行命令和“条件存储”(PUTLLC)或“无条件存储”(PUTLLU)锁行命令存取和锁定共享存储器170的保留区组(GRANULE),来使用原子读/改/写序列。
系统100包括连接到总线接口控制器(BIC)150的一个或多个MPU复合体193,以及连接到BIC 150的一个或多个APU复合体192。BIC 150连接到存储器控制器160,后者又连接到系统/共享存储器170。至少一个APU/DMA复合体192和具有一个或多个MPU 180的至少有一个MPU单元复合体193包括系统的计算能力。
APU复合体192包括连接到本地存储器105的APU 110。APU110通过一条控制总线连接到DMA队列120。DMA队列120连接到DMA引擎。DMA引擎115连接到原子装置130。
原子装置130包括一个保留站(RS)135和一个原子高速缓存137。原子高速缓存137可以是一个二级(L2)高速缓存。原子装置130通过控制总线和窥探总线连接到BIC 150。
MPU复合体193包括一个或多个与L2高速缓存187相连的MPU 180,而高速缓存187又与BIC 150相连。BIC 150连接到存储器控制器160,后者又连接到系统/共享存储器170。在进一步的实施例中,在系统100中使用多个APU复合体192,但是没有使用MPU复合体193,以利用DMA命令支持APU 110之间的原子更新序列。可选地,利用DMA命令支持原子更新序列的其它单元也在本发明的范围之内。
一般说来,出于同步这样的原因,APU 110通过GETLLAR、PUTLLC和PUTLLU锁行DMA命令来使用原子操作。DMA命令是应APU 110的请求在经过DMA队列120的适当排序之后由DMA引擎115发出的。典型地,锁行DMA命令被推向DMA队列120的前端以立即执行,因为获得和释放锁一般都是与在APU 110中的程序执行相同步的。
典型地,通过发出DMA命令GETLLAR来设置RS 135。在DMA引擎115执行命令时,系统存储器170中被选存储器地址的数据被传递到本地存储器105以供处理。典型地,该数据传送可以是一个高速缓存行(CACHE LINE),128字节。有时候可以在原子高速缓存137中发现该数据(如果原来发出的GETLLAR被用于存取该数据)。但是,如果在原子高速缓存137没有发现该数据,就向BIC 150发出对该数据的请求,并且从系统存储器170或者与另一个所连接单元(分别为MPU或APU)相关的高速缓存取得的数据被拷贝到本地存储器,也拷贝到原子高速缓存137。
此外,在GETLLAR命令期间形成对RS 135保留区组的“保留”。保留区组的大小与实现相关,然而若保留区组与高速缓存行大小匹配的话,实现起来会更容易。APU 110程序通过经由控制总线103从DMA队列120中读取命令完成状态,以等待GETLLAR命令的完成。控制总线103一般包括多个通道,每个通道传输预定的信息。一旦在RS 135中设置了保留并将数据拷贝到本地存储器105,就报告GETLLAR命令“完成”。APU 110程序通常把经由本地存储总线107的本地存储器130中的数据与期待的结果,例如表示锁被得到或锁被释放的值相比较,如果不是期待的结果(比如表示锁被得到的值),都要经过控制总线101重发GETLLAR命令至DMA队列120。在进一步的实施例中,如果该值是期待的结果(比如锁被释放),APU 110程序就经过本地存储总线107修改本地存储器中的数据(以表示锁被得到),并经过控制总线103发出PUTLLC命令至DMA队列120,以便“原子地”更新原子高速缓存137中的数据,或保证其在本地存储器105中具有的数据是来自系统存储器170或另外一个单元的系统存储器高速缓存的最新拷贝。
如果原子装置130在“PUTLLC”命令执行之前从BIC 150接收到针对落入保留站135中存储的保留区组地址内的地址的原子高速缓存137的“杀死”型窥探,则在保留站135中重新设置原来通过执行GETLLAR命令所设置的保留。当连接于BIC 150的其它单元尝试修改(写)能够包含在原子高速缓存137中的数据时,通常接收到杀死型窥探命令。
如果作为PUTLLC的结果在DMA引擎有机会从本地存储器105拷贝数据到原子高速缓存137或系统存储器170之前保留被无效,则DMA引擎115在DMA队列120中将PUTLLC命令标记为“保留丢失”状态,且不从本地存储器105拷贝数据到原子高速缓存137或系统存储器170。如果对于PUTLLC命令所寻址的保留区组在保留站135中的仍然存在保留,那么原子装置130就通过BIC 150发出一个杀死型窥探命令给其它单元,从而重新设置其它单元(APU或MPU)可能已经在其原子装置中针对相同保留区组设置的任何保留。这是因为在连接于BIC 150的其它处理器(MPU、APU)结束它们的处理之前,原子装置130已经结束了这个数据更新的处理,并且这个更新后的数据变成了其它处理器应当在以后使用的数据。
接着,DMA引擎115从本地存储器105拷贝数据到原子高速缓存137,并重新设置保留站135中的保留。DMA引擎115然后在DMA队列120中设置PUTLLC命令的“成功”状态。APU 110程序利用控制总线103等待和读取来自DMA队列120的PUTLLC命令完成状态,以确定该状态为“成功”或“保留丢失”。如果是“成功”,该原子操作完成,如果是“保留丢失”,APU 110程序必须从发出GETLLAR命令开始重新执行整个序列。
接着,在PUTLLC命令成功完成并且在拥有“锁”的情况下执行了后续操作后,APU 110发出一个PU TTLU命令以释放“锁”。一般用PUTTLU命令无条件地从APU 110本地存储器向原子高速缓存137传输数据。如果在原子高速缓存137中高速缓存行被标记为存在并且互斥,DMA引擎115就从APU 110的本地存储器传输数据到原子高速缓存137。
如果高速缓存行被标记为存在但非互斥,则原子装置发出一个“放弃(DECLAIM)”窥探命令,该命令将具有该数据拷贝的其它单元的高速缓存中的高速缓存行置为无效。在这个高速缓存137中该行被标记为“互斥”,DMA引擎115从APU 110本地存储器传输数据到原子高速缓存137。最后,如果在原子高速缓存137中不存在该高速缓存行,则原子装置130通过经由BIC 150发出窥探请求来确定在某些其它单元的高速缓存中是否存在该行。如果在另一个单元的高速缓存中存在,从其它单元的高速缓存传输数据到连接于系统100的原子高速缓存,而在已经从其传输数据的高速缓存中,将包含该数据的高速缓存行置为无效。如果在另一个单元的高速缓存中不存在该数据,则存储器控制器160将从共享存储器170提供数据。无论哪种情况,包含该数据的原子高速缓存中的高速缓存行都被认为是“互斥”的。所以,DMA引擎115从本地存储器105传输数据到原子高速缓存137。
换另一种方式说,在“比较和交换”原子更新中,APU 110会在一个循环中发出GETLLAR命令,直到APU 110所进行的比较发生匹配,这可以是表示锁释放的值。当值的比较成功时,尝试进行“交换”。也就是说,在某些情况下修改该值为表示“锁被得到”的值。然后发出PUTLLC以便“原子地交换该值”,在某些情况中用“锁被得到”的新值交换“锁释放”的旧值。一旦这些完成,APU 110就“拥有”了资源,也就是说,具有了读或读/写的特权,并对“锁定”的对象执行进一步的操作。随后,当APU 110结束时,它“释放锁”,换言之就是把该值从“锁被得到”改变为“锁释放”。它使用PUTTLU命令以完成这一工作。
原子高速缓存137的存在在原子更新性能方面发挥有作用。由于数据本身的性质,可能经常发生多个连接于BIC 150的APU复合体(APU/DMA单元)192和MPU复合体193同时试图进行同样数据的原子更新的情况。因为原子高速缓存137能具有与锁行相关的最新数据,所以当其它高速缓存将被更新时,它可利用来自另一个原子高速缓存137而不必来自系统存储器170的信息实现更新。在这个实施例中,多单元之间高速缓存到高速缓存的传输可发生在同一个集成电路芯片上,并且与系统存储器到高速缓存的传输相比,可以快得多,因为后者一般发生在两个不同的集成电路芯片之间。
一般说来,系统100节省时间靠的是在原子高速缓存137中对用于同步的DMA数据传输结果进行缓冲,而不是对来自系统存储器170的全部数据,例如不具有同步属性的存储器传输进行缓冲。这就节省了相当程度的芯片器件,因为与用来缓冲系统存储器和本地存储器之间的全部DMA数据传输的高速缓存相比,原子高速缓存137可以更小。进一步说,因为可以预先定义取得的区组以匹配于高速缓存行的大小和排列,从原子高速缓存137取得规定数据所需要的时间也减少了。非锁行DMA命令可以有各种不同的传输尺寸和排列。
例如,在一个实施例中,在原子高速缓存137中,4个高速缓存行(128字节乘4)保留给使用锁行命令时访问的数据,并且这是高速缓存到高速缓存、高速缓存到本地存储器、系统存储器到高速缓存等等存储器传输的基本单位。然而,本领域技术人员知道,其它保留区组的大小也是可以使用的。再有,通过使用“锁行”命令,APU本身也能够直接提供必须的同步和互斥。
现在转向附图2,说明的是在系统100中使用DMA原子传输的方法200。方法200可以利用特定的命令和参数确定已经发出什么原子命令,以及是否在命令的不当调用和执行中发生了错误条件。
在步骤205中,由APU 110发出GETLLAR命令。在步骤205中,APU 110发出原子DMA命令“GETLLAR”到其连接的控制总线以传送到DMA队列120。在此实施例中,GETLLAR命令有3个参数。第一个参数是本地存储器地址(LSA),所取出的数据最终要被送到本地存储器105中的该地址。第二个参数是高端有效地址(EAH),它是从其拷贝数据的系统存储器中数据的高端地址。第三个参数是低端有效地址(EAL),是从其拷贝数据的系统存储器中数据的低端地址。参数EAH和EAL定义原子更新序列中所涉及的共享存储器中的位置。
在步骤205中,GETLLAR命令被放到队列的前面。该命令放在DMA队列120中。通过一系列“写至通道”命令写入该命令及其参数。
在步骤210中,DMA引擎命令从系统存储器170或L2高速缓存187或原子高速缓存137向本地存储器105传输数据。在步骤215中,如果在原子高速缓存137中没有发现该数据,就由BIC 150实现该数据请求。BIC 150首先通过窥探请求向MPU复合体193的L2高速缓存187和/或APU复合体192的原子高速缓存137中的任意一个请求所选数据。如果在这些高速缓存中的任意一个内均未能发现所请求的数据,BIC 150就向系统存储器170请求该数据。在步骤220中,当数据传自L2高速缓存187或系统存储器170时,相应地,所传输数据的拷贝存储于原子高速缓存137中,而DMA引擎将数据从原子高速缓存137传输到本地存储器105。
在步骤225中,DMA引擎115对RS 135设置保留,所用的地址是该GETLLAR命令所涉及的保留区组位置。在步骤227中,APU110等待表  GETLLAR命令完成的完成通知。在步骤230中,APU110处理放在其本地存储器105中的数据。在步骤235中,APU 110在处理和修改本地存储器中的锁行数据之后,发出PUTLLC命令。
在步骤240中,原子装置130确定在保留站130中是否仍然有前面由GETLLAR命令设置的对该锁行保留区组的保留。如果无保留,则在步骤242中设置PUTLLC命令状态为“失败”,然后前进至步骤290。
然而,如果保留仍然存在,则DMA引擎115在步骤265中从本地存储器105传输数据到原子高速缓存137。在步骤270中,在保留站135内重新设置该高速缓存行的保留站。在步骤280中,将PUTLLC命令的状态在DMA队列120中存储为“成功”。在步骤290中,APU程序读取锁行状态以明确PUTLLC命令是完成还是未完成。在步骤295中,如果PUTLLC命令失败,则从步骤205开始重新执行整个序列,并发出另一个GETLLAR命令。然而,如果PUTLLC命令成功,则在步骤297结束附图2的原子更新序列。
现在转向附图3,说明的是发出PUTLLU命令的方法300。一般说来,PUTLLU命令用于释放前面由附图2的原子更新序列取得的软件锁。
在步骤305中,APU 110向DMA队列发出一个PUTTLU命令。在步骤310中,DMA引擎115处理PUTTLU命令,并且请求向原子高速缓存137写入128字节。在步骤315中,原子高速缓存137读取其目录以确定在原子高速缓存137中是否存在该行并且是否处于互斥状态。在步骤320中,原子高速缓存137确定在与其相连的原子高速缓存137中是否存在该高速缓存行,并且是否处于互斥状态。
如果在相关的原子高速缓存137中该高速缓存行存在但不处于互斥状态,则原子高速缓存137在步骤330中向BIC 150请求得到互斥访问的数据。虽然可以使用“修改、互斥、共享和无效”(MESI)高速缓存控制协议,但其它形式的高速缓存控制协议也在本发明的范围内。一旦在相关的原子高速缓存137中存在该高速缓存行且互斥,则在步骤338中原子装置130命令DMA引擎115开始从本地存储器105传输数据到原子高速缓存137。一般说来,在原子高速缓存137中进行原子数据传输使得从原子高速缓存137经数据总线到本地存储器105的数据处理要比在本地存储器105与系统/共享存储器170之间进行的数据处理快得多。
可以理解,本发明可以具有多种形式和实施例。因此,对上述说明可以做出一些不违反本发明精神或范围的变化。这里描述出来的能力适宜于各式各样的程序设计模型。不能把此处所给出的内容理解为偏重任何特定的程序设计模型,相反应当理解为是能够在其上建立多种程序设计模型的基础机制。
在引用一些优选实施例说明本发明之后,应该注意到所用到的优选实施例是例证性的而不是本质上局限于此,而且可以期待对前面的描述做出范围宽广的变化、修改、改造和替换,在某些情况下,本发明的某些特性不需用到其它特性就能使用。对本领域技术人员来说,在评议了前面对本发明优选实施例所做的说明之后,许多变化和修改都是明显的和希望的。因此,应当广义地、与本发明的范围一致地理解所附权利要求。

Claims (26)

1.一种用于提供原子更新原语的方法,其在具有配备DMA的共享存储器的非对称单芯片异构多处理器计算机系统中使用,包括:
通过该系统产生至少一个锁行命令,该命令选自包括带保留取锁行命令、条件放锁行命令和无条件放锁行命令的集合。
2.一种非对称单芯片异构多处理器计算机系统,包括:
所连接的处理器单元,被构造成产生带保留取锁行命令、条件放锁行命令和无条件放锁行命令中的一个;以及
连接到APU的直接存储器存取(DMA)控制器,DMA引擎能够用来接收带保留取锁行命令、条件放锁行命令和无条件放锁行命令中的一个。
3.根据权利要求2的系统,进一步包括连接到APU的本地存储器。
4.根据权利要求2的系统,进一步包括能够被带保留取锁行命令使用的保留表。
5.根据权利要求3的系统,进一步包括连接到DMA引擎的高速缓存窥探总线。
6.根据权利要求2的系统,进一步包括连接到APU的DMA队列。
7.根据权利要求6的系统,进一步包括连接在APU与DMA队列之间的通道。
8.根据权利要求2的系统,进一步包括连接到DMA引擎的保留站。
9.根据权利要求8的系统,进一步包括连接到保留站的原子高速缓存。
10.一种用于异步处理环境中的同步的方法,包括:
产生带保留取锁行命令;
转送该命令给DMA引擎;以及
如DMA引擎所命令的由保留站产生保留。
11.根据权利要求10的方法,进一步包括产生条件放锁行命令的步骤。
12.根据权利要求10的方法,进一步包括产生无条件放锁行命令的步骤。
13.根据权利要求11的方法,其中条件放锁行命令写数据到原子高速缓存。
14.根据权利要求13的方法,其中无条件放锁行命令进一步用来释放软件锁。
15.根据权利要求10的方法,进一步包括用来自条件放锁行命令的信息更新DMA队列。
16.根据权利要求14的方法,进一步包括执行高速缓存窥探。
17.根据权利要求11的方法,进一步包括作为保留的功能,由DMA引擎从共享存储器传送信息到本地存储器。
18.根据权利要求10的方法,进一步包括检测保留丢失信号。
19.根据权利要求10的方法,进一步包括检测保留状态,其中保留状态为丢失。
20.根据权利要求10的方法,进一步包括检测保留状态,其中保留状态为完整。
21.根据权利要求10的方法,进一步包括释放保留状态。
22.一种用于经过通道从所连接的处理器单元向DMA队列传送命令的方法,包括:
从包括带保留取锁行命令、条件放锁行命令和无条件放锁行命令的组中选择一命令;以及
写该命令到DMA队列。
23.根据权利要求22的方法,进一步包括用无条件放锁行命令写数据到原子高速缓存。
24.根据权利要求22的方法,进一步包括把带保留取锁行命令放入DMA队列。
25.一种用于异步处理环境中的同步的计算机程序产品,该计算机程序包括:
用于生成带保留取锁行命令的计算机代码;
用于传送该命令给DMA引擎的计算机代码;以及
用于如DMA引擎所命令的由保留站产生保留的计算机代码。
26.一种用于异步处理环境中的同步的处理器,该处理器包括:
用于生成带保留取锁行命令的装置;
用于传送该命令给DMA引擎的装置;以及
用于如DMA引擎所命令的由保留站产生保留的装置。
CNB2004100447825A 2003-05-22 2004-05-18 在非对称异构多处理器环境中提供原子更新原语的方法 Expired - Fee Related CN1273899C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/443,727 US7114042B2 (en) 2003-05-22 2003-05-22 Method to provide atomic update primitives in an asymmetric heterogeneous multiprocessor environment
US10/443,727 2003-05-22

Publications (2)

Publication Number Publication Date
CN1573715A true CN1573715A (zh) 2005-02-02
CN1273899C CN1273899C (zh) 2006-09-06

Family

ID=33450499

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100447825A Expired - Fee Related CN1273899C (zh) 2003-05-22 2004-05-18 在非对称异构多处理器环境中提供原子更新原语的方法

Country Status (6)

Country Link
US (2) US7114042B2 (zh)
JP (2) JP3974597B2 (zh)
KR (1) KR100641988B1 (zh)
CN (1) CN1273899C (zh)
HK (1) HK1070719A1 (zh)
TW (1) TWI269180B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101950282A (zh) * 2010-08-30 2011-01-19 中国科学院计算技术研究所 一种多处理器系统及其同步引擎
CN101587457B (zh) * 2008-04-02 2013-03-13 英特尔公司 用于单芯片多处理器的自适应高速缓存组织
CN106897230A (zh) * 2015-11-27 2017-06-27 Arm 有限公司 用于处理原子更新操作的装置和方法

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7233998B2 (en) * 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US7496917B2 (en) * 2003-09-25 2009-02-24 International Business Machines Corporation Virtual devices using a pluarlity of processors
US7549145B2 (en) 2003-09-25 2009-06-16 International Business Machines Corporation Processor dedicated code handling in a multi-processor environment
US7444632B2 (en) 2003-09-25 2008-10-28 International Business Machines Corporation Balancing computational load across a plurality of processors
US7516456B2 (en) * 2003-09-25 2009-04-07 International Business Machines Corporation Asymmetric heterogeneous multi-threaded operating system
US7415703B2 (en) 2003-09-25 2008-08-19 International Business Machines Corporation Loading software on a plurality of processors
US7389508B2 (en) 2003-09-25 2008-06-17 International Business Machines Corporation System and method for grouping processors and assigning shared memory space to a group in heterogeneous computer environment
US7478390B2 (en) * 2003-09-25 2009-01-13 International Business Machines Corporation Task queue management of virtual devices using a plurality of processors
US7523157B2 (en) 2003-09-25 2009-04-21 International Business Machines Corporation Managing a plurality of processors as devices
US20050071828A1 (en) * 2003-09-25 2005-03-31 International Business Machines Corporation System and method for compiling source code for multi-processor environments
US7657667B2 (en) * 2004-03-25 2010-02-02 International Business Machines Corporation Method to provide cache management commands for a DMA controller
US7774750B2 (en) * 2005-07-19 2010-08-10 Microsoft Corporation Common concurrency runtime
US7509463B2 (en) * 2005-12-01 2009-03-24 Sony Computer Entertainment, Inc. Cell processor atomic compare and swap using dedicated synergistic processor element
US7624237B2 (en) * 2006-05-03 2009-11-24 International Business Machines Corporation Compare, swap and store facility with no external serialization
US9274859B2 (en) 2006-05-25 2016-03-01 Nvidia Corporation Multi processor and multi thread safe message queue with hardware assistance
US7606961B2 (en) * 2006-06-28 2009-10-20 Kabushiki Kaisha Toshiba Computer system and data pre-fetching method
GB2443277B (en) * 2006-10-24 2011-05-18 Advanced Risc Mach Ltd Performing diagnostics operations upon an asymmetric multiprocessor apparatus
US8024521B2 (en) * 2007-03-13 2011-09-20 Sony Computer Entertainment Inc. Atomic operation on non-standard sized data using external cache
US8266391B2 (en) * 2007-06-19 2012-09-11 SanDisk Technologies, Inc. Method for writing data of an atomic transaction to a memory device
US20090077322A1 (en) * 2007-09-19 2009-03-19 Charles Ray Johns System and Method for Getllar Hit Cache Line Data Forward Via Data-Only Transfer Protocol Through BEB Bus
US8015380B2 (en) * 2008-02-01 2011-09-06 International Business Machines Corporation Launching multiple concurrent memory moves via a fully asynchronoous memory mover
US8327101B2 (en) * 2008-02-01 2012-12-04 International Business Machines Corporation Cache management during asynchronous memory move operations
US8356151B2 (en) * 2008-02-01 2013-01-15 International Business Machines Corporation Reporting of partially performed memory move
US8245004B2 (en) * 2008-02-01 2012-08-14 International Business Machines Corporation Mechanisms for communicating with an asynchronous memory mover to perform AMM operations
US7941627B2 (en) * 2008-02-01 2011-05-10 International Business Machines Corporation Specialized memory move barrier operations
US8095758B2 (en) * 2008-02-01 2012-01-10 International Business Machines Corporation Fully asynchronous memory mover
US8275963B2 (en) * 2008-02-01 2012-09-25 International Business Machines Corporation Asynchronous memory move across physical nodes with dual-sided communication
JP5151559B2 (ja) * 2008-02-29 2013-02-27 富士通株式会社 プログラム実行システム
US20090248919A1 (en) * 2008-03-25 2009-10-01 Jerzy Szwagrzyk Method for external fifo acceleration
US8412862B2 (en) 2008-12-18 2013-04-02 International Business Machines Corporation Direct memory access transfer efficiency
US8341316B2 (en) * 2010-11-17 2012-12-25 Advanced Micro Devices, Inc. Method and apparatus for controlling a translation lookaside buffer
US9280348B2 (en) 2012-03-28 2016-03-08 International Business Machines Corporation Decode time instruction optimization for load reserve and store conditional sequences
EP2862084A4 (en) 2012-06-15 2016-11-30 Soft Machines Inc METHOD AND SYSTEM FOR IMPLEMENTING RECOVERY FROM A SPECULATIVE TRANSMISSION OF FAULT FORECASTS / ERRORS DUE TO THE CHANGE AND OPTIMIZATION OF MEMORY LOADS
WO2013188754A1 (en) 2012-06-15 2013-12-19 Soft Machines, Inc. A disambiguation-free out of order load store queue
CN104583957B (zh) 2012-06-15 2018-08-10 英特尔公司 具有无消歧乱序加载存储队列的重新排序的推测性指令序列
KR101826399B1 (ko) 2012-06-15 2018-02-06 인텔 코포레이션 Load store 재정렬 및 최적화를 구현하는 명령어 정의
KR101745640B1 (ko) * 2012-06-15 2017-06-09 인텔 코포레이션 공유 메모리 자원들을 사용하는 메모리 일관성 모델에서 비순차 load들에 대한 로크 기반 및 동기화 기반 방법
KR101996351B1 (ko) 2012-06-15 2019-07-05 인텔 코포레이션 통합된 구조를 갖는 동적 디스패치 윈도우를 가지는 가상 load store 큐
US10320861B2 (en) 2015-09-30 2019-06-11 Google Llc System and method for automatic meeting note creation and sharing using a user's context and physical proximity
KR102407917B1 (ko) 2015-11-12 2022-06-10 삼성전자주식회사 멀티 프로세서에 의해 공유되는 메모리를 포함하는 멀티 프로세서 시스템 및 상기 시스템의 동작 방법
CN105354153B (zh) * 2015-11-23 2018-04-06 浙江大学城市学院 一种紧耦合异构多处理器数据交换缓存的实现方法
CN109324838B (zh) * 2018-08-31 2022-05-10 深圳市元征科技股份有限公司 单片机程序的执行方法、执行装置及终端
US11119781B2 (en) 2018-12-11 2021-09-14 International Business Machines Corporation Synchronized access to data in shared memory by protecting the load target address of a fronting load
US11106608B1 (en) * 2020-06-22 2021-08-31 International Business Machines Corporation Synchronizing access to shared memory by extending protection for a target address of a store-conditional request

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2045789A1 (en) 1990-06-29 1991-12-30 Richard Lee Sites Granularity hint for translation buffer in high performance processor
KR0135927B1 (ko) 1994-11-21 1998-06-15 양승택 다중 프로세서 시스템에서 아토믹 명령어 수행시 데이타 버퍼를 사용한 메인 메모리 액세스 장치
JPH08287022A (ja) 1995-03-31 1996-11-01 Internatl Business Mach Corp <Ibm> マルチプロセッサ・システム及びその排他的制御方法
US5727172A (en) * 1995-05-01 1998-03-10 Motorola, Inc. Method and apparatus for performing atomic accesses in a data processing system
US5822588A (en) * 1995-06-09 1998-10-13 Sun Microsystem, Inc. System and method for checking the use of synchronization locks in a multi-threaded target program
US5794068A (en) * 1996-03-18 1998-08-11 Advanced Micro Devices, Inc. CPU with DSP having function preprocessor that converts instruction sequences intended to perform DSP function into DSP function identifier
US5887134A (en) * 1997-06-30 1999-03-23 Sun Microsystems System and method for preserving message order while employing both programmed I/O and DMA operations
US6098156A (en) * 1997-07-22 2000-08-01 International Business Machines Corporation Method and system for rapid line ownership transfer for multiprocessor updates
US6092156A (en) 1997-11-05 2000-07-18 Unisys Corporation System and method for avoiding deadlocks utilizing split lock operations to provide exclusive access to memory during non-atomic operations
US6148300A (en) * 1998-06-19 2000-11-14 Sun Microsystems, Inc. Hybrid queue and backoff computer resource lock featuring different spin speeds corresponding to multiple-states
US6728839B1 (en) * 1998-10-28 2004-04-27 Cisco Technology, Inc. Attribute based memory pre-fetching technique
US6347347B1 (en) * 1999-07-15 2002-02-12 3Com Corporation Multicast direct memory access storing selected ones of data segments into a first-in-first-out buffer and a memory simultaneously when enabled by a processor
JP3853114B2 (ja) * 1999-07-30 2006-12-06 松下電器産業株式会社 インターフェースの設計方法
US6496905B1 (en) 1999-10-01 2002-12-17 Hitachi, Ltd. Write buffer with burst capability
US6493741B1 (en) * 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit
US6691178B1 (en) * 2000-02-22 2004-02-10 Stmicroelectronics, Inc. Fencepost descriptor caching mechanism and method therefor
JP2002163239A (ja) 2000-11-22 2002-06-07 Toshiba Corp マルチプロセッサシステムおよびその制御方法
US20030200342A1 (en) * 2001-07-02 2003-10-23 Globespan Virata Incorporated Communications system using rings architecture
US7266587B2 (en) * 2002-05-15 2007-09-04 Broadcom Corporation System having interfaces, switch, and memory bridge for CC-NUMA operation
US7185150B1 (en) * 2002-09-20 2007-02-27 University Of Notre Dame Du Lac Architectures for self-contained, mobile, memory programming

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101587457B (zh) * 2008-04-02 2013-03-13 英特尔公司 用于单芯片多处理器的自适应高速缓存组织
CN101950282A (zh) * 2010-08-30 2011-01-19 中国科学院计算技术研究所 一种多处理器系统及其同步引擎
WO2012027959A1 (zh) * 2010-08-30 2012-03-08 中国科学院计算技术研究所 一种多处理器系统及其同步引擎装置
US9411778B2 (en) 2010-08-30 2016-08-09 Institute Of Computing Technology Of The Chinese Academy Of Sciences Multiprocessor system and synchronous engine device thereof
CN106897230A (zh) * 2015-11-27 2017-06-27 Arm 有限公司 用于处理原子更新操作的装置和方法
CN106897230B (zh) * 2015-11-27 2021-12-14 Arm 有限公司 用于处理原子更新操作的装置和方法

Also Published As

Publication number Publication date
US20040236914A1 (en) 2004-11-25
CN1273899C (zh) 2006-09-06
HK1070719A1 (en) 2005-06-24
KR20040100884A (ko) 2004-12-02
JP4730742B2 (ja) 2011-07-20
JP2007122741A (ja) 2007-05-17
US7814281B2 (en) 2010-10-12
TWI269180B (en) 2006-12-21
US20070016733A1 (en) 2007-01-18
US7114042B2 (en) 2006-09-26
KR100641988B1 (ko) 2006-11-06
JP2004348734A (ja) 2004-12-09
JP3974597B2 (ja) 2007-09-12
TW200511023A (en) 2005-03-16

Similar Documents

Publication Publication Date Title
CN1273899C (zh) 在非对称异构多处理器环境中提供原子更新原语的方法
US5276828A (en) Methods of maintaining cache coherence and processor synchronization in a multiprocessor system using send and receive instructions
US7584222B1 (en) Methods and apparatus facilitating access to shared storage among multiple computers
CN104375958B (zh) 高速缓存存储器管理事务性存储器访问请求
US6636950B1 (en) Computer architecture for shared memory access
US6088771A (en) Mechanism for reducing latency of memory barrier operations on a multiprocessor system
US8996811B2 (en) Scheduler, multi-core processor system, and scheduling method
US7664900B2 (en) Multiprocessor system and method for processing memory access
CN101802798B (zh) 在多核处理器中使用干预消息来避免活锁
US7502876B1 (en) Background memory manager that determines if data structures fits in memory with memory state transactions map
EP3486767B1 (en) Method of managing a storage area of a memory in a multiprocessor system
JP2003044452A (ja) 同期メモリ・バリアを実装する方法およびシステム
JPH09503328A (ja) 非同期に順序付けされた動作を行うコンピュータ方法及び装置
US6874065B1 (en) Cache-flushing engine for distributed shared memory multi-processor computer systems
EP0380842A2 (en) Method and apparatus for interfacing a system control unit for a multiprocessor system with the central processing units
CN1910560A (zh) 用于在回写高速缓存中同时窥探推入或窥探取消操作过程中取消回写操作的系统和方法
US20020166032A1 (en) Method for verifying abstract memory models of shared memory multiprocessors
US8990511B2 (en) Multiprocessor, cache synchronization control method and program therefor
JP2002366445A (ja) コンピュータでバックワード・エラー・リカバリを実行するためのシステム
US9424261B2 (en) Techniques to take clean database file snapshot in an online database
US7073004B2 (en) Method and data processing system for microprocessor communication in a cluster-based multi-processor network
JP2003108513A (ja) ハードウェア・チェーン・プル
KR100582782B1 (ko) 캐쉬 일관성 유지 방법
JP3729573B2 (ja) 並列処理システムの処理引き継ぎ方法
CN116680229A (zh) 一种分布式共享内存协议的操作方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into 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: 1070719

Country of ref document: HK

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: 20060906

Termination date: 20200518

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