CN101297270A - 计算器系统内主动同步的方法 - Google Patents

计算器系统内主动同步的方法 Download PDF

Info

Publication number
CN101297270A
CN101297270A CNA2006800395372A CN200680039537A CN101297270A CN 101297270 A CN101297270 A CN 101297270A CN A2006800395372 A CNA2006800395372 A CN A2006800395372A CN 200680039537 A CN200680039537 A CN 200680039537A CN 101297270 A CN101297270 A CN 101297270A
Authority
CN
China
Prior art keywords
address
addresses
memory
instruction
group
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.)
Pending
Application number
CNA2006800395372A
Other languages
English (en)
Inventor
M·K·阿尔萨普
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 Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN101297270A publication Critical patent/CN101297270A/zh
Pending legal-status Critical Current

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • 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
    • 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
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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
    • 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/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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

Abstract

一种在计算器系统(100)内提供主动同步的方法,包括处理器(18A,18B)对特定的存储器资源请求互斥存取。前述请求可包含一个或多个与特定存储器资源相关联的地址。所述方法也包含将每个请求的地址与多个地址的组中的每个地址进行比较。在前述地址组中的每个地址可响应于与请求者具有互斥存取的个别存储器资源。此外,为响应于与多个地址的组中的任何地址匹配的任何地址,所述方法包含返回与前述匹配地址相关联的计数值(233)。前述计数值表示竞争所述匹配地址的一些请求者。

Description

计算器系统内主动同步的方法
技术领域
本发明关于微处理器,尤其关于在多处理器系统中的处理器间进行同步。
背景技术
过去约十年间,现代微处理器的效能一直稳定且有些引人注目地增加。绝大部分,效能增加可归功于操作频率的增加,以及大家所熟知的深流水(deep pipelining)技术。一般说来,深流水是指使用许多阶段的指令流水,而且每个阶段作动更少,藉此使得总流水能以较快的速度执行。前述技术已供业界使用良好,然而,频率的增加与深流水的使用存在有缺点。举例来说,时钟偏差(clock skew)与电力消耗在高频率操作时会变得重要。就其本身而言,系统等级热预算点(system level thermal budget points)所造成的物理限制与管理时钟偏差所增加的难度,可显示前述技术的可实施限制即将来临。因此,工业界已经着手寻找其它增加效能的技术,其中一种增加效能的技术类型是使用多核心处理器和更为普遍的多元处理。
当计算器系统使用越来越多处理器(例如处理核心)的多元处理结构,干涉或竞争相同存储器资料的请求者数量会增加到传统程序同步方法所无法适用的程度。举例来说,当少量的处理器竞争一个资源时,仅藉由锁定结构就可在编码的关键区域提供充分的效能。举例来说,存储器位置上被锁定的算数运算可能是足够的。当多元处理的规模成长时,这些基元(primitives)变得越来越没有效率。之后,更多进阶的处理器包含增加指令到指令集中,其中前述指令集包含以单一存储器位置的原子级更新(atomically updating)为基础的硬件同步基元(例如CMPXCHG、CMPXCHG8B和CMPXCHG16B)。然而,我们目前正进入即使前述的硬件基元也无法提供所要求的高效能和多处理器数量多元处理器的领域中。
许多传统的处理器使用以乐观模型(optimistic mode)为基础的同步技术,也就是当在多处理器的环境中运作时,这些传统的处理器被设计来在假设能藉由重复地再执行同步码直到没有干涉被侦测到以达成同步,然后宣告已达成同步的情况下运作。此种类型的同步会招致非所期望的时间浪费,尤其在许多处理器尝试相同的同步事件时,由于没有一个处理器可以立刻实时向前进展,因此,需要不同的同步技术。
发明内容
在计算器系统中提供主动同步的方法在不同的实施例中被揭露。在一个实施例中,所述方法包括处理器对特定的存储器资源请求互斥存取。前述请求可包含一个或多个与特定存储器资源相关联的地址。所述方法也包含将每个请求的地址与多个地址的组中的每个地址进行比较。每个地址的组中的地址可与已对请求者授权互斥存取的个别内存内存资源相对应。此外,为响应于所述一个或多个地址中的任何地址与已授权其它储理器或多个处理器的多个地址的组中的任何地址匹配,所述方法包含返回与包含匹配地址的组相关联的计数值。前述的计数值可表示一些竞争所述匹配地址的一些请求者。
在一个特定的实例中,所述方法包含返回零的通过计数值,用以响应所述一个或多个地址中没有地址与所述多个地址的组中的任何地址匹配。
在另一个实施例中,计算器系统包含一个或多个可相互或可与一个或多个存储器结合的处理器。每个处理器可执行指令对特定存储器资源请求互斥存取。前述请求可包含一个或多个与特定存储器资源相关联的地址。所述计算器系统也包含可将请求的每个地址与多个地址的组中的每个地址进行比对的同步仲裁器单元。多个地址的组中的每一个地址与具有互斥存取的请求者的个别存储器资源相对应。为响应一个或多个地址中的任何地址与多个地址的组中的任何地址匹配,前述同步仲裁器单元可返回与包含匹配地址的组相关联的计数值。前述的计数值可表示一些竞争所述匹配地址的一些请求者。
附图说明
图1为一个计算器系统实施例的方块图。
图2为描述图1中处理节点更进一步实施例的方块图。
图3为描述图1和图2所显示计算器系统运作实施例的流程图。
图4为描述图1和图2所显示计算器系统在相应接收一致无效探查(coherency invalidation probe)时运作实施例的流程图。
尽管所述发明容许不同的修改与替代形式,其具体的实施例以图式为例子的方式表示,将在此详细描述。然而,可被理解的是,这些图式与其详细说明并不试图限定本发明为所揭露的特定型式,相反地,应涵盖附加权利要求所定义所有落于本发明精神与领域的修改、相等物与替代形式。值得注意的是,在整份申请中所使用的单字「可(may)」具有许可的意思(也就是有这样的可能、可能可以)而不是强制的意思(也就是必须)。
具体实施方式
为使高效能同步方法的架构在软件中能够实现,一组可视为进阶同步工具的指令可被使用。前述工具可支持非阻塞同步(non-Blockingsynchronization)、不等待同步(WaitFree synchronization)和相互作用存储器(Transactional Memory)的架构,以及主要在这些方法的架构中使用的不同比较(Compare)与调换(Swap)基元型式的架构。前述工具允许多种同步基元的架构(在软件中)。
此外,所述的进阶同步工具可使软件规划多种同步类型。每一个同步类型可直接具体指定:需要顺利完成的快取线、失效可重新改变控制流(control flow)方向的序列点(sequence point)、成功关键区域结果的资料修改区被执行、使整个指令序列原子(atomic)剩余系统成功的序列点为可见。
因此,所述进阶同步工具的功能可使具有与本质上同时如被其它处理器/核心看见的关键区域相关联的写入许可的多重快取线撷取(acquisition)与释放(release)。所述程序可被视为线性化(Linearizing)。撷取后,在任何其它有兴趣的一方观察到对任何的具体指定的快取线有任何的改变前,许多改变可被执行。在撷取与释放之间,没有其它的处理器可被允许来操作这些相同的线(例如具有写入许可)。一个已经被执行的相似方法是不送出与线相关的来源完成(Source Done)讯息,藉此可防止同时存取。然而,这些解决方法导致死锁(deadlock)和/或活锁(livelock)或暂停(timeouts)。因此,一个包含可完成进阶同步工具的多个处理器与处理器核心的计算器系统将如下所述。
现在参照图1,所示为计算器系统100的实施例。计算器系统100包含数个处理节点312A,312B,312C与312D。每个处理节点312A至312D经由每个个别处理节点312A至312D所包含的存储器控制器316A至316D与个别存储器314A至314D联接。此外,处理节点312A至312D包含用来在处理节点312A至312D间通讯的接口逻辑(interfacelogic,简称IF)。举例来说,处理节点312A包含可与处理节点312B通讯的接口逻辑318A、可与处理节点312C通讯的接口逻辑318B,以及可与另一个处理节点(未表示出)通讯的第三接口逻辑318C。同样地,处理节点312B包含接口逻辑318D、318E与318F;处理节点312C包含接口逻辑318G、318H与318I;以及处理节点312D包含接口逻辑318J、318K与318L。处理节点312D经由接口逻辑318L来与多数的输入/输出装置(例如菊炼结构的装置320A至320B)通讯。其它处理节点可用相似方式与其它输入/输出装置通讯。处理器可使用前述接口存取与系统中其它处理器相关联的存储器。值得注意的是,在文字后包含参考数字的组件,一般只与适当的数字相关联。举例来说,当一般与处理节点相关联时,处理节点312可被使用。
处理节点312以封包为基础执行处理节点内部通讯的连接。在图式的实施例中,所述连接是以数组单向线来执行(例如线324A用来将封包从处理节点312A传送到处理节点312B,而线324B用来将封包从处理节点312B传送到处理节点312A)。如图1所示,其它组的线324C至324H用来在其它处理节点间传送封包。一般而言,每一组线324一般可包含一条或多条资料线、一条或多条对应于资料线的时钟线,以及一条或多条指示被传送封包类型的控制线。所述连接可在处理节点间以快取一致(cache coherent)的方式通讯或在处理节点与输入/输出装置(或如同PCI总线或ISA总线传统结构的输入/输出总线的总线桥接器)间以以非一致的方式通讯。此外,所述连接可在所示的输入/输出装置(例如320A与320B)间使用菊炼结构,以非一致的方式操作。值得注意的是,在代表实施例中,所述连接可用一致的HyperTransportTM连接或非一致的HyperTransportTM连接执行,尽管在其它的实施例中其它连接也可使用。
输入/输出装置320A至320B可为任何适合的输入/输出装置。举例来说,输入/输出装置320A至320B可包含与另一个相连接的计算器系统通讯(例如网络适配卡或调制解调器)。此外,输入/输出装置320A至320B可包含影像加速卡、声卡、硬盘或软盘机或驱动控制器、SCSI(小型计算器系统接口)接头与电话通讯卡(telephony card)、声卡与多种如GPIB或场总线适配卡的资料撷取卡。值得注意的是,「输入/输出装置」一词与「接口设备」一词在此是指同义的物。
存储器314A至314D可包含任何适合的存储器装置。举例来说,存储器314A至314D可包含一个或多个RAMBUS DRAMs(RDRAMs)、同步的DRAMs(SDRAMs)、DDR SDRAM、静态RAM等。计算器系统300的存储器地址空间分享给存储器314A至314D。每个处理节点312A至312D可包含用来决定那个地址映像到哪个存储器314A至314D,以及因此映像到哪个存储器312A至312D,使得请求特定住址的存储器被搜寻。存储器控制器316A至316D可包括作为存储器314A至314D接口的控制电路。此外,存储器控制器316A至316D可包含排列存储器请求的请求队列。存储器314A至314D可储存可通过处理器执行如前面段落所述功能的码。
值得注意的是,从一个处理节点传送到另一个处理节点的封包可经过一个或多个的中间节点。举例来说,一个从处理节点312A传送到处理节点312D的封包可如图1所示通过处理节点312B或处理节点312C。任何适合的路径演算规则皆可被使用。计算器系统100的其它实施例可包含较图1实施例更多或更少的处理节点。一般说来,所述封包可在节点间经由线324以一个或多个位时间(bit time)传送。位时间可为对应时钟线上时钟信号的上升或下降边缘。所述封包可包含激活执行的命令封包、维持快取一致的探查封包,以及响应探查与命令的响应封包。
在一个实施例中,处理节点312可额外地包含一个或多个处理器核心(如图2所示)。值得注意的是,每个节点中的处理器核心可经由以快取一致方式操作的内部封包为基础的连接通讯。更需要注意的是,处理器核心与处理节点312可被配置用以分享任何的(或全部的)存储器314。
在一个实施例中,一个或多个处理器核心可执行x86架构,虽然其它架构也可用且被考量。就其本身而言,每个不同种处理器核心内的指令译码器逻辑可被配置,用以标示使用LOCK前缀(prefix)的指令。此外,如同之后将更进一步描述到的,处理器核心逻辑可包含能够识别与LOCKed指令相关联标示的硬件(如图2所示)。前述硬件能使用LOCK指令前缀识别出码的关键区域为进阶同步工具的部分。
为了降低因为一个以上的处理器在同一时间试图存取相同存储器参考(例如码的关键区域)所导致的干涉作用,进阶同步工具与相关的硬件可在计算器系统100内使用。如同之后将更详细描述到的,所述进阶同步工具可使用新指令与使用如可在快取一致结构内相互连接的同步仲裁器(如图2所示)的硬件。如图2所示,同步仲裁器230与任何处理节点312的北桥(Northbridge)单元290结合,因此,使得所述同步仲裁器能够观察与每个节点的进阶同步工具执行有关联的明确地址。同步仲裁器可置于内部连接网络一致领域中的任何位置。需要注意的是,虽然只显示一个同步仲裁器,但当系统被配置为支持多个虚拟机时,以及当这些虚拟机不分享任何真实的实体存储器时,多个同步仲裁器可考虑被配置来分配数个仲裁器间的同步负载。
需要注意的是「关键区域」一词在整篇文件中被使用。「关键区域」意指在可包含被标示LOCK前缀、ACQUIRE指令和结束关键区域的RELEASE指令的一个或多个存储器参考指令的进阶同步工具中所使用的编码区域。在一个实施例中,每个关键区域有四个阶段:1)详细指明在关键区域中(例如进入关键区域)所需要的快取线地址,2)通过机械方式取得这些快取线,3)原子地修改关键区域的资料,4)释放快取线回到系统。具体来说,关键区域码似乎将被感兴趣的观察者原子地执行。第一阶段可被视为规格阶段(specification phase),而第三阶段常被视为原子阶段(Atomic phase)。
在数个实施例中,软件可被允许在读取与修改关键区域的资料间执行资料的「简单」计算与逻辑操作,只要简单的计算操作在执行时不会导致异常(exceptions)。当资料的操作导致关键区域内的异常时,则所述关键区域的原子性无法被保证。关键区域的软件应该侦测原子性的错误,并藉由以下进一步的叙述适当地予以处置。
一般而言,进阶同步工具可使用减弱的存储器模型(weakenedmemory model),并只操作可快取的资料(cacheable data)。前述减弱存储器模型可避免进阶同步工具在执行关键区域前为等待不同处理器与存储器缓存区腾空所浪费的循环。然而,当软件需要一个标准PC强硬的存储器模型时,软件可恰好在RELEASE指令前插入LFENSE、SFENSE或MFENSE指令来保证存储器次序的标准PC。在使用可快取同步存取无法快取的资料的例子中,介于最终LOCKed储存与RELEASE指令间的SFENSE指令,将确保无法快取的资料在可快取同步资料于任何其它处理器中为全球可视(globally visible)前是全球可视的。这可使得不可快取与可快取的存取重叠最大化,并使效能的降低最小化。
在多个实施例中,接口逻辑318A至318L可包括数个接收来自前述连接与缓存通过前述连接所传送的封包的缓存区。计算器系统100可使用任何适合传送封包的流量控制机制。除了接口逻辑318A至318L外,每个处理节点可包含可提供主动同步功能的个别缓存区接口单元(buffer interface units,简称BIU)220(如图2所示)。举例来说,如下面将更近一步叙述到的,BIU220可配置成与进阶同步事件相关联的特殊地址,并在响应ACQUIRE指令的执行时传送前述地址到同步仲裁器230。BIU220也可被配置来决定是否接收到来自同步仲裁器230的响应表示前述地址未被干涉。依据是否表示所述地址不是未被干涉的响应,BIU220可通过送出错误计数值到处理器核心18内的缓存器与送出完成讯息到同步仲裁器230,或通过允许关键区域的执行保证未被干涉时,等待送出完成讯息到同步仲裁器230,来通知请求的处理器核心一个错误。
图2为图1中处理节点312A与同步仲裁器230的实施例更多细节部分的方块图。参照图2,处理节点312A包含处理器核心18A和18n,其中n可代表任何处理器核心的编号。由于处理器核心在许多实施例中本质上是相同的,因此下面只叙述处理器核心18A的详细部分。如图所示,处理器核心18A和18n连接到与北桥单元290所连接的总线接口单元220,而北桥单元290被连接到存储器控制器316A、HyperTransportTM接口逻辑318A至318C,并通过一对单向连接324I至324J与同步仲裁器230连接。
处理器核心18A包含配置来执行指令的硬件。更具体地,如同许多一般典型的处理器,处理器核心18A包含一个或多个含有一些管线阶段、快取储存与控制和地址转译机制(为了简洁,只显示相关的部分)的指令执行管线。因此,所示的处理器核心18A包含一阶(L1)指令快取、预取(prefetch)逻辑和分支预报(branch prediction)逻辑。由于前述方块可与指令快取紧密结合,因此,一起表示为方块250。处理器核心18A也包含L1资料快取207。处理器核心18A也包含指令译码器255和一个可与来自指令译码器255接收指令到排程器259的调度(dispatch)运作结合的指令调度和控制单元256。进一步,指令调度和控制单元256可与微码只读存储器(MROM)结合(未表示)。排程器259被连接用以接收来自指令调度和控制单元256的调度运作,并发给执行单元260进行运作。在不同的实施方式中,执行单元260可包含任何数量的整数执行单元与浮点单元。更进一步,处理器核心18A包含TLB206与一个加载/储存单元270。需要注意的是,在另一个实施例中,一个晶载L2快取可被使用(虽然未表示)。
指令译码器255可被配置将指令译码成可通过储存在MROM的操作直接或间接译码的操作。指令译码器255可将特定指令译码成可在执行单元260里执行的操作。简单的指令可对应到单一的操作,而在其它的实施例中,更复杂的指令可对应到多重的操作。在一个实施例中,指令译码器255可包含可同步指令译码的多重译码器(未表示)。每个指令可依据指令是否第一个被安排到MROM而被排列与译码成在多重阶段里的一组控制值。这些控制值可连同操作数地址信息与位移(displacement)或包含在指令里的立即信息一起被排列到往指令调度与控制单元257的指令流中。如同之后将更进一步描述到的,当存储器参考指令包含LOCK前缀时,指令译码器可识别所述地址具有标示。
加载/储存单元270可配置来提供介于执行单元260与数据快取207间的接口。在一个实施例中,加载/储存单元270可包含具有数个可暂停加载或储存资料与地址信息的储存位置的加载/储存缓存区。就其本身而言,所述图标的实施例包含LS1 205、线性LS2 209、实体LS2 210与数据储存器211。此外,处理器核心18A包括标示逻辑208与标示位213。
在一个实施例中,关键区域可以两种方式的其中一种处理:确定性地(deterministically)与最佳地(optimistically)。如同之后将更进一步描述的,可依据进阶同步工具的组态与关键区域预报子的状态来选择执行。在不同的实施例中,基本输出入系统(BIOS)、操作系统(OS)或是虚拟存储器管理员(VMM)中的任一个都可配置进阶同步工具的操作模式。当在确定性的执行模式操作时,通过被锁住存储器参考指令特定的地址可被包裹,并一起送到同步仲裁器230检验其干涉性。可取得快取线资料且执行关键区域(如同经准许)。相对地,当在最佳的同步模式操作时,没有干涉会被认定,而会执行关键区域(绕过同步仲裁器230),并且如果有任何其它处理器干涉到所述关键区域,此干涉将会被侦测到,然后处理器支持ACQUIRE指令,并且改变控制流的方向离开原子阶段。
为了完成确定性的模式,进阶同步工具可使用同步仲裁器230。如前面所叙述的,同步仲裁器230检查所有与同步请求相关联的实体地址,并依据当他们正被执行时,任何其它处理器核心或请求者是否正在运作或已请求前述地址来通过(又称幸运得到(bless))地址组或不通过地址组(也就是拒绝)。就其本身而言,同步仲裁器230可使软件主动避免干涉地被建构。当同步仲裁器230侦测到干涉时,同步仲裁器230会响应一个包含具有独特数字(例如计数值233)的错误状态的请求给请求的处理器核心。在一个实施例中,所述的计数可表示竞争被请求存储器资源的请求者数量。软件可藉由使用前述数字来选择试图关键区域存取的不同资源,并利用前述数字主动地避免随后通过关键区域的行程的干涉。
因此,如图2所示,同步仲裁器230包含具有一些入口的储存器232。每个入口可储存一个或多个正被操作的实体请求地址。在一个实施例中,每个入口可储存多达八个实体地址,其可被以单一的64位请求进行传送。此外,同步仲裁器入口包含对应到所有入口中地址的计数值233。如前所述,所述计数可表示一些竞争关键区域里任何地址的请求者(也就是干涉者)的数量。当同步仲裁器230接收到一组地址,同步仲裁器230里的比较单元231检查地址组里的每个地址与储存器232里的所有地址间是否匹配。如果没有任何匹配,同步仲裁器230可配置来藉由传回通过计数值发出通过的响应,并且在储存器232中储存地址。在一个实施例中,尽管合适的计数值可被使用,通过的计数值为零。然而,如果有地址相匹配,同步仲裁器230将增加与包含匹配地址的地址组相关联的计数值233,并且回传所述计数值作为错误响应的一部份。值得注意的是,比较单元231可依需要用不同的方式来做为只能比较的结构。此外,在另一个实施例中,每个储存在储存器232的地址可与个别的计数相关联。就其本身而言,所述计数值可表示一些在关键区域内竞争个别地址的请求者(也就是干涉者)的数量。
在图式的实施例中,总线接口单元(BIU)220包含一个计数比较电路221、一个被锁定线缓存区(locked line buffer)(LLB)222、与一个预报子(predictor)223。BIU220也可包含从不同相连接的组件传送和接收执行的不同其它电路,然而,为了清楚呈现,这些都已被省略。就其本身而言,为响应ACQUIRE指令的执行,BIU220可被配置从LLB222传送与关键区域相关联的地址组到同步仲裁器230。此外,比较电路221可被配置来比较被同步仲裁器230传回的计数值,用来检查所述计数为通过计数值(例如零)或不通过计数值。需要注意的是,SBB22可通过任何型式的储存结构来完成。举例来说,其可依需要为存在存储器地址缓存区(MAB)的部分或独立分离。
如前所述,当处理器核心18以确定的同步模式操作时,与关键区域相关联的地址在使用LOCK前缀指令译码的过程中被标示。更具体地,明确加入进阶同步码序列的存储器参考藉由使用LOCK前缀以适当的MOV指令批注。被锁定的(LOCKed)的加载指令可有以下的型式:
LOCK MOVx reg,[B+I*s+DISP].
更具体地,正常的存储器读取指令被特别的附加LOCK前缀,这使BIU220可聚集相关联被标示的实体地址在通过L1快取(和TLB206)时到LLB222中。此外,存储器存取强度(memory access strength)被减低用来存取(在快取未击中的情况下)无写入许可(ReadS,而不是ReadM或Read)的线。在ACQUIRE指令从同步仲裁器230送回前,加载指令不会被LS2撤回。
当来自BIU220(到同步仲裁器230)的请求等待响应时,LLB222等待具有无效(INValidate)语义的探查,且如果有一个(或更多)发生的话,即使同步仲裁者230传回一个成功讯息,ACQUIRE指令仍会无法通过。LOCK前缀不会导致任何快取或总线的特别锁定,而只是提供一个方便的标示加到以存储器为基础的MOVe指令。就其本身而言,LOCKedMOV到缓存器指令(也可被视为LOCKed Loads)可被正常向下执行到资料快取管线。
因此,在地址转译期间,每个线性地址可被储存在LS2 209的线性地址部分内。相对应的实体地址可被储存在TLB206与在实体LS2210中,而其对应的资料可被储存在资料快取207和资料LS2 211中。标示逻辑208可侦测在译码过程中产生的LOCK前缀标示,并且产生额外标示位213,藉此标示每个所述地址为关键区域中的参与者。任何在资料快取里未击中的LOCKed加载可包含取自其具有读取到分享(Read-to-Share)存取语意的存储器阶层的快取线资料,然而,写入允许是被检查过的。
如前所述,当处理器核心18以确定的同步模式操作时,与关键区域相关联的地址可在以LOCK前缀指令译码的过程中被标示。更具体地,明确地参与进阶同步码序列的存储器预取参考被使用具有适当PREFETCHW指令的LOCK前缀批注。这些LOCKed加载指令的类型可具有以下的型式:
LOCK PREFETCHW  [B+I*s+DISP].
因此,正常的存储器PREFETCHW指令被特别附加上LOCK前缀。这使BIU220可聚集相关联被标示的实体地址在通过L1快取(和TLB206)时到LLB222中。此外,存储器存取强度被减低用来避免对线的实际存取。在ACQUIRE指令被从同步仲裁器230返回前,PREFETCHW指令不会被LS2撤回。为了接触在关键区域里也被需要的其它资料,这些指令可被用来接触参与在关键区域和需要资料(例如一个指针)的快取线。在规格阶段的结尾,ACQUIRE指令被用来告知BIU220所有关键区域的存储器参考地址皆被储存在LLB222。
ACQUIRE指令可有下列型式
ACQUIRE reg,imm8
ACQUIRE指令核对LOCKed存储器参考指令的数字与ACQUIRE指令中的立即数值相同。若核对未通过,ACQUIRE指令将以一个错误码结束,否则,ACQUIRE指令会使得BIU220送出储存在LLB222内的所有地址到同步仲裁器230。此指令「看起来」像是在资料路径上的存储器参考指令,所以自同步仲裁器230传回的计数值可被用来确认(或否认)所有线皆能在没有干涉下被存取。此「加载」指令并不需要任何地址,因为每个虚拟器或每个系统只能有一个同步仲裁器230。在ACQUIRE指令中所指明的缓存器是处理器核心18的目的地缓存器。
在一个实施例中,LOCKed加载操作的语意可包含监控具有无效(INValidation)的PROBE(例如PROBE Inv或PROBE ReadM)位置的探查。若具有无效的PROBE在一个位置被侦测到,LS1或LS2队列可不等待读取完成而传回错误状态。若LOCKed加载的数目超过微架构极限时,可产生一般目的的错误(#GP)。若ACQUIRE指令未通过,LOCKed加载的计数值将会被归零。若前述地址不是要到写回的存储器型式(Write Back memory type),指令会产生一个分页错误(page fault)(#PF)或#GP错误或可使ACQUIRE不通过(当随后遭遇到时)。
一些关键区域被预期可包含一些算数和控制流决定,用来估算什么资料修改是适当的(若有的话)。然而,软件应安排使这些类型的指令绝不会造成实际的异常。在一个实施例中,运算和存储器参考指令可在SSE缓存器(XMM)或一般目的缓存器(例如EAX等)或MMX或x87的缓存器中处理。
如上所述,同步仲裁器230可通过全体请求或不通过全体请求。若同步仲裁器230不通过请求,则回到BIU220的响应可被视为具有零位组的「同步仲裁器Fail-to-ACQUIRE」(例如RFLAGS.ZF)。如上所述,同步仲裁器230所传回的响应可包含可表示一些干涉者数量的计数值233。软件可如上述利用此计数来减低未来的干涉。来自同步仲裁器230的计数值233可被传送到处理器核心18中的一般目的缓存器(未表示),并且也可被用来设定状况码。若同步仲裁器230通过所述请求,则回到BIU220的请求可包含一个通过计数值(例如零)。
在一个实施例中,若同步仲裁器地址储存器232已满,举例来说,所述请求会退回带有例如负一(-1)的负计数值。这可提供在处理器核心运作的软件查看系统中的过载,以及使软件暂时停止对同步仲裁器230进行请求的方法。举例来说,前述软件可安排其它行程或在重试同步尝试前单纯地浪费一些时间。
如果计数为零(意指没有任何干涉者被同步仲裁器230察觉),处理器核心18可在关键区域中执行指令,并且视需要操作快取线中的资料。当资料操作完成时,RELEASE指令会被执行用以表示关键区域的结束。在一个实施例中,RELEASE指令藉由送出RELEASE讯息到同步仲裁器230使所有改过的资料变成实质上同时可看,藉此将相关联的快取线释放回系统。
如上所述,关键码区域可包含一个或多个带有接在ACQUIRE指令前的LOCK前缀的存储器参考指令。此外,条件跳越指令(conditionaljump instruction)跟随在ACQUIRE指令后,用来允许码离开关键区域,这使得同步仲裁器230提供Fail-to-Acquire码或在取得快取线前察觉具INValidate的Probe。在一些实施例中,释放指令可跟随在条件跳越后。两个汇编语言关键码区域显示于下,例示两种类型的关键区域。值得注意的是,以下的码片段仅是供讨论目的用的例子,其它实施例在经考虑后,也是可行,并且列入考量。
下列第一个例子的码片段表示出双连结列表(doubly linked list)中组件的移除,并且使用RELEASE指令。
//同时队列版本
//p is in RAX
LOCK  MOVD  A,[RAX+next]//a=p->next
LOCK  MOVD  B,[RAX+prev]//b=p->prev
LOCK  MOVD  C,[A+next]//c=a->prev
LOCK  MOVD  D,[B+next]//d=b->next
ACQUIRE reg
JNZ     fails
MOVD    [A+next],D//a->prev=d
MOVD    [B+prev],C//b->prev=c
MOVD  [RAX+next],0  //p->next=NULL
MOVD  [RAX+prev],0//p->prev=NULL
RELEASE
下列代表码片段表示组件插入到双连结列表中,也使用RELEASE指令。
//同时队列版本
//q is in RAX
//p is in RSI
LOCK  MOVD  S,[RAX+next]//s=q->next
LOCK  PREFETCHW  [RSI+prev]//touch p->prev
LOCK  PREFETCHW  [RSI+next]//touch p->next
LOCK  PREFETCHW  [S+next]//touch s->next
ACQUIRE reg
JNZ   fails
MOVD  [RAX+next],RSI  //q->next=p
MOVD  [S+prev],RSI    //s->prev=p
MOVD  [RSI+next],S    //p->next=s
MOVD  [RSI+prev],RAX  //p->prev=q
RELEASE
在一个实施例中,进阶同步工具支持两种型式的错误,「Fail-to-ACQUIRE」与「Fail-to-REQUESTOR」。Fail-to-ACQUIRE的错误导致ACQUIRE指令以带有零位组(例如RFLAGS.ZF)完成,以致后续的条件跳越指令可控制流的方向远离导致原子阶段指令的损坏。带有零位组(例如RFLAGS.ZF)的同步仲裁器Fail-to-ACQUIRE是一种Fail-to-ACQUIRE错误的型式。处理器Fail-to-ACQUIRE则是另一种型式。在一个实施例中,在关键区域的执行过程中,处理器核心可藉由观察存储器执行进行通讯。这些观察可在执行的处理器核心的ACQUIRE指令中被看见。更具体地,在关键区域必要地址开始收集与同步仲裁器230响应的时间过程间,处理器核心18监控所有一致无效探查(例如具有INValidate的探查)的地址。若其中的任一线是无效的,则来自同步仲裁器230的响应可被忽略,并且ACQUIRE指令会带有零位组(例如RFLAGS.ZF)不能通过。
若有快取击中被同步仲裁器230检查过干涉且通过的线,则Fail-to-REQUESTOR错误会如同PROBE响应被送出。若正在处理进阶同步工具关键区域,则Fail-to-REQUESTOR错误的响应导致请求的处理器Fail-to-ACQUIRE,或者若当时未处理关键区域,则会导致请求处理器的BIU重新请求前述的存储器请求。就其本身而言,为响应在从同步仲裁器230取得通过通知前接收到带有INValidate的探查,BIU220可被配置产生Fail-to-ACQUIRE。
一旦取得关键区域的地址,则同步仲裁器230所通过处理器核心18地址可取得供互斥存取(例如写入许可)的每个快取线,如同存储器参考指令在原子阶段中被处理。在通过的快取线到达后,处理器核心18会占住此快取线,并藉由响应带有Fail-to-REQUESTOR的一致无效探查防止其它处理器核心窃取前述的线。需要注意的是,Fail-to-REQUESTOR也可被视为否定的应答(negative-acknowledgement)(NAK)。
如上所述,当处理器收到Fail-to-REQUESTOR且其正参与在进阶同步指令序列中时,前述指令序列将在ACQUIRE指令中导致失效。在此情况下,随后的条件跳跃会被取走,并且可避免诱发关键区域中部分存储器参考指令的损坏。然而,当处理器收到Fail-to-REQUESTOR而其未参与在进阶同步指令序列中时,请求处理器的BIU仅会重新请求原来的存储器执行。因此,在送出Fail-to-REQUESTOR与在通过的关键区域的下个一致无效探查于随后到达的时间,会使得带有同步仲裁器净化的处理器向前处理可被保证。此向前处理的保证使得进阶同步工具在竞争下比现存的同步机制更有效率。因此,迟早关键区域与干涉的存储器参考皆可被执行(例如没有活锁或死锁)。
如上所述的,参与进阶同步工具的处理器效能可藉由关键区域预报子223而更有效地进行。起初预报子223可被设定来预报在关键区域执行的过程中未有干涉。在此模式下,处理器核心18不会实际使用同步仲裁器230。相反地,处理器核心18会记录LOCKed存储器参考与针对一致无效探查进行检查并侦测干涉。若在任何干涉被侦测到前,已到达关键区域的尾端,则没有有兴趣的第三方看到关键区域的活动,并且如同原子地执行般被完成。此特性使得在没有竞争被观察到时,进阶同步工具较现存的同步机制在处理器周期(processor-cycle)具竞争性。
更具体地,当干涉被侦测到时,处理器核心18可产生ACQUIRE指令的错误状态,随后的条件分支会改变控制流的方向离开关键区域,并且重设预报子来预报确定性的模式。当下个关键区域被侦测到时,译码器将接着预报干涉可能发生,并藉由同步仲裁器230(如果能使用的话)来处理关键区域。
在一个实施例中,进阶同步工具可操作错误排列的数据项,只要这些项目不会延伸到未参与在实际关键区域中的快取线。只要所有被接触到的快取线被辨识为关键区域入口的一部份,软件可自由地使同步项目延伸到快取线的边界。当数据项延伸快取线到另一个不是同步通讯的部分的快取线时,处理器既不会侦测原子性的错误,也不会发出缺少原子性的讯号。
此外,对关键区域资料的存取可取决于在主要存储器中所存在的资料。所有关键区域所必要的线在进入关键区域前被接触,且当LOCKed加载或LOCKed PREFETCHW指令在进入关键区域前执行时,任何存取权力问题或分页错误问题可被侦测出。当任何导入地址产生错误时,随后的ACQUIRE指令会失效。在进入关键区域后,如果任何指令导致异常,则处理器将会在ACQUIRE指令中产生错误,并且随后的条件跳跃将改变控制离开关键区域。
在一个实施例中,若处理器核心18的译码器必须中断,则将安排带有零位组(例如RFLAGS.ZF)的ACQUIRE指令失效,并且在ACQUIRE指令产生中断。
需要注意的是,在同步仲裁器230连接至HyperTransportTM结构北桥执行内的实施例中,没有其它组件有的被预定和/或被储备的节点ID分配到同步仲裁器230。举例来说,可在被BIOS激活的时间里进行分配。此外,在上述的实施例中,尽管其它数值也可考量,计数值可以64位值传回。
图3为描述图1和图2中计算器系统实施例操作的流程图。共同参照图1至图3并且从方块405开始,如同关键区域的一部份,正被操作或存取的快取线地址被维持在串行中(例如在LLB222中)。举例来说,同步仲裁器230可在地址储存器232的入口储存对应如组的关键区域地址。在一个实施例中,每一个地址储存器232的入口也可储存与全部储存其中(方块410)的地址组相关联的计数值。如上所述,计数值可表示任何组中地址竞争者(也就是干涉者)的数量。在其它实施例中,同步仲裁器230可在每个入口内储存一些计数值,如此,每个入口中的地址皆具有相关联的计数值。
当处理器或处理器核心执行进阶同步工具,请求对一个或多个快取线进行原子存取时,请求会形成关键码区域的型式。举例来说,如上所述,为确保指令以原子状态完成(如同所有外面观察者所看到的),关键区域可包含使用LOCKed MOV指令,并且跟随ACQUIRE指令与RELEASE指令(方块415)。因此,请求的地址组被检查有无干涉。在一个实施例中,地址组与地址储存器232(方块420)中的所有地址进行比较。在上述的实施例中,LOCKed MOV指令造成前述地址被标示。此标示导致BIU220储存每个在LLB222中被标示的地址。ACQUIRE指令使得BIU220以携带64位实体地址数据的无法快取写入(unCacheable write)型式送出整个LLB222中的地址组到同步仲裁器230。同步仲裁器230将前述地址组与在储存器232中的所有地址进行比较。
若有任何地址匹配(方块425),与匹配地址相关联的计数值将增加(方块455),并且新的计数值如同响应携带64位响应资料的无法快取写入(方块460)的部分错误传回到BIU220。此外,同步仲裁器230因为错误而丢弃地址组。BIU220送出错误计数值到提出请求的处理器/核心的缓存器,并且也设定条件码标示。结果,提出请求的处理器/核心可使用计数值选择另一个随后操作(方块465)中的存储器资源组,并且避免干涉其随后的同步尝试。操作如上述方块415进行。
回头参照方块425,若在缓存器232没有匹配的地址,同步仲裁器230会返回通过的计数值(例如零)到BIU220(方块430)。此外,同步仲裁器230可在缓存器232的入口(方块435)储存地址组。BIU220可送出通过的计数值到ACQUIRE指令所指定的请求处理器/核心缓存器。就其本身而言,请求的处理器/核心可运作或以其它方式操作在被请求地址的资料(方块440)。若操作未完成(方块445),BIU220延迟送出完成的讯息到同步仲裁器230。当在关键区域中的操作如同RELEASE指令执行时完成,BIU220可送出完成讯息到同步仲裁器230。一旦接收到完成讯息,同步仲裁器230会从储存器232清除相对应的地址,藉此释放地址回到系统(方块450)供其它处理器/核心使用。此外,加载/储存单元270在止用的关键区域中的所有指令更新资料快取。
如上所述,若一致无效探查在关键区域处理期间击中关键区域里的地址,针对此探查的响应取决于关键区域的处理状态(也就是不论快取线是否已经取得)。图4为描述当接收到一致无效探查时,图1和图2实施例操作的流程图。
共同参照图1到图4,并从图4的方块505开始,带有INValidate的探查被接收,并击中加载储存单元270中的关键区域地址。若已经成功地取得被请求的线(方块510),(例如一致无效探查在同步仲裁器230已经提供通过计数值后被接收,并且在储存器232储存地址组),BIU220会送出Failure-to-Requestor的响应作为对探查的响应(方块515)。在请求的处理器核心,若处理器核心在关键区域操作,此Failure-to-Requestor响应会导致ACQUIRE指令的错误,若未操作,则重试地址。
回头参照方块510,若已取得被请求的线时,处理器核心可忽略任何接收自同步仲裁器230的计数值(方块520)。加载/储存单元270可通知指令调度与控制单元257有探查击中(例如Prb击中信号),因此,有Failure-to-Acquire。就其本身而言,ACQUIRE指令如上述地失效。对外面的观察者来说,ACQUIRE指令仅仅为失效。
需要注意的是,虽然上述的计算器系统100包含含有一个或多个处理器核心的处理节点,在其它可考量的实施例中,可依需要使用独立的处理器或处理节点与独立处理器的组合来执行进阶同步工具和相关的硬件。在这样的实施例中,每个独立的处理器可包含全部或部分前述的硬件,并且能够执行部分进阶同步工具的指令。像处理器和处理器核心的专有名词,除非被特别列为不同,否则可被当作是同义的。
执行先前段落所提到功能的码和/或资料,也可提供计算器可存取的/可读的媒体。一般来说,计算器可存取的/可读的媒体可包含在提供指令和/或资料给计算器的使用过程中任何可被计算器存取的媒体。举例来说,可被计算器存取的媒体可包括如磁或光媒体的储存媒体,例如盘片(固定的或可移动的)、CD-ROM、或DVD-ROM、CD-R、CD-RW、DVD-R、DVD-RW、如RAM(例如同步动态RAM(SDRAM)、RambusDRAM(RDRAM)、静态RAM(SRAM)等)的依电性或非依电性的存储器媒介、ROM、快闪存储器、非依电性的存储器(例如快闪存储器),这些媒体可透过如通用序列汇排流(USB)接口等的外围接口来存取,另可包括透过传送媒体或如电的、电磁的的信号,或透过如网络和/或无限连接的通讯媒体传输的数字信号。
虽然上述的实施例已经相当详细地描述,所属技术领域之人一旦完全领会上述的揭露,多种的变化与修改将变得明显。下列权利要求的解释将预期包含所有这样的变化和修改。
工业实用性:
本发明一般可应用于微处理器。

Claims (10)

1、一种方法,包括:
处理器(18A,18B)对特定的内存内存资源要求请求互斥存取(18A,18B),其中,所述的要求请求包含一个或多个与所述特定内存内存资源相关联的地址;
将前述所述的一个或多个地址中的每一个地址与复数组多个地址的组中的每一个地址进行比较,其中,所述复数组多个地址的组中的每一个地址与要求者已对请求者授权互斥存取的个别内存内存资源相对应;并且
响应于符合所述一个或多个地址中的任何地址与所述多个复数组地址的组中的任何地址的任何一个或多个的地址匹配,回传返回与所述的符合匹配地址相关联的计数值,其中,所述的计数值表示一些竞争前述所述匹配符合地址的一些请求要求者。
2、如权利要求1所述的方法,进一步包括回传返回零的通过计数值,用以响应响应未有所述一个或多个的地址中没有地址符合复数与所述多个组地址的组中的任何地址匹配。
3、如权利要求1所述的方法,进一步包括使用所述的计数值来决定是否不同的处理器对不同的内存内存资源具有互斥存取。
4、如权利要求1所述的方法,其中,要求请求互斥存取包括执行一个或多个具有LOCK前缀的被锁定的内存内存参考指令,其中,所述的LOCK前缀导致与前述所述被锁定的内存内存参考指令相关联的地址,在指令译码的过程中被标示一个或多个的指示位。
5、如权利要求4所述的方法,其中,要求请求互斥存取进一步包括执行导致每一个所述特定内存内存资源的所述一个或多个地址的每一个与所述复数多个组地址的组中的每一个地址进行比较的ACQUIRE指令。
6、如权利要求4所述的方法,进一步包括在处理器缓存中储存与前述所述被锁定的内存内存参考指令相关联的地址,并且响应于所述ACQUIRE指令的执行,传送所述处理器缓存中的所有地址以供比较。
7、一种计算机系统(100),包括:
一个或多个处理器(18A,18B),一个或多个相互连接并和与一个或多个内存内存(314A至314D)结合的相连接处理器(18A,18B),其中,每一个所述处理器被配置用以执行要求对特定内存内存资源请求互斥存取的指令,其中,所述的要求请求包含一个或多个与所述特定内存内存资源相关联的地址;和以及
仲裁单元(230),一个相结合被连接的仲裁单元(230)用以将所述一个或多个地址中的每一个地址与复数组多个地址的组中的每一个地址进行比较,其中,所述多个复数组地址的组中的每一个地址与要求者已对要求者授权互斥存取的个别内存内存资源相对应;
其中,所述的仲裁单元被设置用以回传返回与包含有响应于符合所述一个或多个地址的任何地址与所述多个复数组地址的组中的任何地址匹配的任何一个或多个地址的匹配符合地址组相关联的计数值(233),其中,所述的计数值(233)表示一些竞争前述所述符合匹配地址的一些要求请求者。
8、如权利要求7所述的计算机系统,其中,所述的仲裁单元进一步被配置用以响应在未有所述一个或多个的地址中没有地址符合与所述任何多个复数组地址的组中的任何地址匹配时,回传返回零的通过计数值。
9、如权利要求7所述的计算机系统,其中,所述一个或多个处理器中的每一个进一步被配置用以使用所述的计数值来决定是否不同的处理器对不同的内存内存资源具有互斥存取。
10、如权利要求7所述的计算机系统,其中,所述一个或多个处理器中的每一个被配置用以:
执行具有LOCK前缀的一个或多个内存内存参考指令,其中,所述的LOCK前缀导致与前述所述被锁定的内存内存参考指令相关联的地址,在指令译码的过程中被标示一个或多个的指示位;并且
执行导致每一个特定内存内存资源的所述一个或多个地址的每一个与复数组所述多个地址的组中的每一个地址进行比较的ACQUIRE指令。
CNA2006800395372A 2005-08-23 2006-08-23 计算器系统内主动同步的方法 Pending CN101297270A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US71054805P 2005-08-23 2005-08-23
US60/710,548 2005-08-23

Publications (1)

Publication Number Publication Date
CN101297270A true CN101297270A (zh) 2008-10-29

Family

ID=37607137

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2006800395372A Pending CN101297270A (zh) 2005-08-23 2006-08-23 计算器系统内主动同步的方法

Country Status (7)

Country Link
US (6) US7636819B2 (zh)
JP (1) JP5103396B2 (zh)
KR (1) KR101369441B1 (zh)
CN (1) CN101297270A (zh)
DE (1) DE112006002237B4 (zh)
GB (1) GB2445294B (zh)
WO (1) WO2007025112A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103020003A (zh) * 2012-12-31 2013-04-03 哈尔滨工业大学 面向多核程序确定性重演的内存竞争记录装置及其控制方法
CN103299272A (zh) * 2010-12-07 2013-09-11 超威半导体公司 使用存储的原子程序的可编程原子内存
CN104025027A (zh) * 2011-12-30 2014-09-03 英特尔公司 结构访问处理器、方法、系统和指令
TWI643125B (zh) * 2016-04-18 2018-12-01 聯發科技股份有限公司 多處理器系統及快取共用方法
CN109933543A (zh) * 2019-03-11 2019-06-25 珠海市杰理科技股份有限公司 Cache的数据锁定方法、装置和计算机设备

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101369441B1 (ko) * 2005-08-23 2014-03-04 어드밴스드 마이크로 디바이시즈, 인코포레이티드 컴퓨터 시스템 내부의 프로액티브 동기 방법
US7681020B2 (en) * 2007-04-18 2010-03-16 International Business Machines Corporation Context switching and synchronization
US20090125519A1 (en) * 2007-11-13 2009-05-14 Intel Corporation Device, system, and method for regulating software lock elision mechanisms
US8108610B1 (en) * 2008-10-21 2012-01-31 Nvidia Corporation Cache-based control of atomic operations in conjunction with an external ALU block
US8135926B1 (en) * 2008-10-21 2012-03-13 Nvidia Corporation Cache-based control of atomic operations in conjunction with an external ALU block
US8108557B2 (en) * 2009-01-22 2012-01-31 Hewlett-Packard Development Company, L.P. System and method for measuring clock skew on a network
US8316368B2 (en) * 2009-02-05 2012-11-20 Honeywell International Inc. Safe partition scheduling on multi-core processors
US9727508B2 (en) * 2009-04-27 2017-08-08 Intel Corporation Address learning and aging for network bridging in a network processor
US9384063B2 (en) * 2009-06-18 2016-07-05 Microsoft Technology Licensing, Llc Eliding synchronization in a concurrent data structure
US20120117317A1 (en) * 2009-08-20 2012-05-10 Rambus Inc. Atomic memory device
US8307198B2 (en) * 2009-11-24 2012-11-06 Advanced Micro Devices, Inc. Distributed multi-core memory initialization
US20110208921A1 (en) * 2010-02-19 2011-08-25 Pohlack Martin T Inverted default semantics for in-speculative-region memory accesses
US9122476B2 (en) 2010-12-07 2015-09-01 Advanced Micro Devices, Inc. Programmable atomic memory using hardware validation agent
US8793471B2 (en) * 2010-12-07 2014-07-29 Advanced Micro Devices, Inc. Atomic program verification
KR20120101761A (ko) * 2011-03-07 2012-09-17 삼성전자주식회사 캐시 페이즈 검출기 및 프로세서 코어
US10061618B2 (en) * 2011-06-16 2018-08-28 Imagination Technologies Limited Scheduling heterogenous computation on multithreaded processors
US9037838B1 (en) * 2011-09-30 2015-05-19 Emc Corporation Multiprocessor messaging system
TWI454922B (zh) * 2011-12-19 2014-10-01 Phison Electronics Corp 記憶體儲存裝置及其記憶體控制器與資料寫入方法
US9430391B2 (en) * 2012-03-29 2016-08-30 Advanced Micro Devices, Inc. Managing coherent memory between an accelerated processing device and a central processing unit
US9086957B2 (en) 2012-08-02 2015-07-21 International Business Machines Corporation Requesting a memory space by a memory controller
KR102020358B1 (ko) * 2013-03-14 2019-11-05 삼성전자 주식회사 단말 및 그 단말에서 애플리케이션 동기화 방법
US9146885B2 (en) * 2013-05-17 2015-09-29 Analog Devices, Inc. Parallel atomic increment
US10229043B2 (en) 2013-07-23 2019-03-12 Intel Business Machines Corporation Requesting memory spaces and resources using a memory controller
US9256553B2 (en) * 2014-03-26 2016-02-09 International Business Machines Corporation Transactional processing based upon run-time storage values
US9262343B2 (en) * 2014-03-26 2016-02-16 International Business Machines Corporation Transactional processing based upon run-time conditions
CN104035888B (zh) * 2014-06-11 2017-08-04 华为技术有限公司 一种缓存数据的方法及存储设备
US9710381B2 (en) 2014-06-18 2017-07-18 International Business Machines Corporation Method and apparatus for cache memory data processing
US9740614B2 (en) * 2014-06-27 2017-08-22 International Business Machines Corporation Processor directly storing address range of co-processor memory accesses in a transactional memory where co-processor supplements functions of the processor
US9619386B2 (en) 2015-01-29 2017-04-11 Kabushiki Kaisha Toshiba Synchronization variable monitoring device, processor, and semiconductor apparatus
US9513960B1 (en) 2015-09-22 2016-12-06 International Business Machines Corporation Inducing transactional aborts in other processing threads
US9563467B1 (en) 2015-10-29 2017-02-07 International Business Machines Corporation Interprocessor memory status communication
US10261827B2 (en) 2015-10-29 2019-04-16 International Business Machines Corporation Interprocessor memory status communication
US9760397B2 (en) 2015-10-29 2017-09-12 International Business Machines Corporation Interprocessor memory status communication
US9916179B2 (en) 2015-10-29 2018-03-13 International Business Machines Corporation Interprocessor memory status communication
US9772874B2 (en) * 2016-01-29 2017-09-26 International Business Machines Corporation Prioritization of transactions based on execution by transactional core with super core indicator
RU2623806C1 (ru) 2016-06-07 2017-06-29 Акционерное общество Научно-производственный центр "Электронные вычислительно-информационные системы" (АО НПЦ "ЭЛВИС") Способ и устройство обработки стереоизображений
US10944694B2 (en) * 2016-12-06 2021-03-09 Hewlett Packard Enterprise Development Lp Predictive arbitration circuit
US10452573B2 (en) 2016-12-06 2019-10-22 Hewlett Packard Enterprise Development Lp Scripted arbitration circuit
US10721185B2 (en) 2016-12-06 2020-07-21 Hewlett Packard Enterprise Development Lp Age-based arbitration circuit
US10237198B2 (en) 2016-12-06 2019-03-19 Hewlett Packard Enterprise Development Lp Shared-credit arbitration circuit
US11157407B2 (en) 2016-12-15 2021-10-26 Optimum Semiconductor Technologies Inc. Implementing atomic primitives using cache line locking
US10223186B2 (en) * 2017-02-01 2019-03-05 International Business Machines Corporation Coherency error detection and reporting in a processor
US10776282B2 (en) 2017-12-15 2020-09-15 Advanced Micro Devices, Inc. Home agent based cache transfer acceleration scheme
US10693811B2 (en) 2018-09-28 2020-06-23 Hewlett Packard Enterprise Development Lp Age class based arbitration
US10796399B2 (en) 2018-12-03 2020-10-06 Advanced Micro Devices, Inc. Pixel wait synchronization
CN110490581B (zh) * 2019-07-18 2022-09-30 拉货宝网络科技有限责任公司 一种分布式系统临界数据资源更新方法及系统
US20220100504A1 (en) * 2020-09-25 2022-03-31 Advanced Micro Devices, Inc. Shared data fabric processing client reset system and method
US11740973B2 (en) * 2020-11-23 2023-08-29 Cadence Design Systems, Inc. Instruction error handling
US11892972B2 (en) * 2021-09-08 2024-02-06 Arm Limited Synchronization mechanisms for a multi-core processor using wait commands having either a blocking or a non-blocking state

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4574350A (en) 1982-05-19 1986-03-04 At&T Bell Laboratories Shared resource locking apparatus
US4725946A (en) 1985-06-27 1988-02-16 Honeywell Information Systems Inc. P and V instructions for semaphore architecture in a multiprogramming/multiprocessing environment
US5142676A (en) * 1988-12-28 1992-08-25 Gte Laboratories Incorporated Separate content addressable memories for storing locked segment addresses and locking processor identifications for controlling access to shared memory
CA2045791A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites Branch performance in high speed processor
US5285528A (en) * 1991-02-22 1994-02-08 International Business Machines Corporation Data structures and algorithms for managing lock states of addressable element ranges
US5613139A (en) * 1994-05-11 1997-03-18 International Business Machines Corporation Hardware implemented locking mechanism for handling both single and plural lock requests in a lock message
JP4086259B2 (ja) * 1995-08-04 2008-05-14 株式会社東芝 通信システム
US5968157A (en) * 1997-01-23 1999-10-19 Sun Microsystems, Inc. Locking of computer resources
US6343338B1 (en) * 1997-04-01 2002-01-29 Microsoft Corporation System and method for synchronizing disparate processing modes and for controlling access to shared resources
US6219751B1 (en) * 1998-04-28 2001-04-17 International Business Machines Corporation Device level coordination of access operations among multiple raid control units
US6182186B1 (en) * 1998-06-30 2001-01-30 Sun Microsystems, Inc. Method and apparatus that utilizes lock states to lock resources
US6389519B1 (en) * 1999-07-19 2002-05-14 Ati International Srl Method and apparatus for providing probe based bus locking and address locking
US6651088B1 (en) * 1999-07-20 2003-11-18 Hewlett-Packard Development Company, L.P. Method for reducing coherent misses in shared-memory multiprocessors utilizing lock-binding prefetchs
KR100331565B1 (ko) * 1999-12-17 2002-04-06 윤종용 매트릭스 연산 장치 및 매트릭스 연산기능을 갖는 디지털신호처리 장치
US6668308B2 (en) * 2000-06-10 2003-12-23 Hewlett-Packard Development Company, L.P. Scalable architecture based on single-chip multiprocessing
US6604162B1 (en) * 2000-06-28 2003-08-05 Intel Corporation Snoop stall reduction on a microprocessor external bus
US6678772B2 (en) * 2000-12-19 2004-01-13 International Businesss Machines Corporation Adaptive reader-writer lock
US6976158B2 (en) * 2001-06-01 2005-12-13 Microchip Technology Incorporated Repeat instruction with interrupt
US7325064B2 (en) * 2001-07-17 2008-01-29 International Business Machines Corporation Distributed locking protocol with asynchronous token prefetch and relinquish
US6868476B2 (en) * 2001-08-27 2005-03-15 Intel Corporation Software controlled content addressable memory in a general purpose execution datapath
US20060218556A1 (en) * 2001-09-28 2006-09-28 Nemirovsky Mario D Mechanism for managing resource locking in a multi-threaded environment
US7120762B2 (en) * 2001-10-19 2006-10-10 Wisconsin Alumni Research Foundation Concurrent execution of critical sections by eliding ownership of locks
US6986005B2 (en) * 2001-12-31 2006-01-10 Hewlett-Packard Development Company, L.P. Low latency lock for multiprocessor computer system
US7089371B2 (en) * 2002-02-12 2006-08-08 Ip-First, Llc Microprocessor apparatus and method for prefetch, allocation, and initialization of a block of cache lines from memory
US6721816B1 (en) * 2002-02-27 2004-04-13 Advanced Micro Devices, Inc. Selecting independently of tag values a given command belonging to a second virtual channel and having a flag set among commands belonging to a posted virtual and the second virtual channels
US7328316B2 (en) * 2002-07-16 2008-02-05 Sun Microsystems, Inc. Software transactional memory for dynamically sizable shared data structures
US7814488B1 (en) * 2002-09-24 2010-10-12 Oracle America, Inc. Quickly reacquirable locks
US20040068607A1 (en) * 2002-10-07 2004-04-08 Narad Charles E. Locking memory locations
US7117481B1 (en) * 2002-11-06 2006-10-03 Vmware, Inc. Composite lock for computer systems with multiple domains
US7162589B2 (en) * 2002-12-16 2007-01-09 Newisys, Inc. Methods and apparatus for canceling a memory data fetch
US7290105B1 (en) * 2002-12-16 2007-10-30 Cisco Technology, Inc. Zero overhead resource locks with attributes
US7080209B2 (en) * 2002-12-24 2006-07-18 Intel Corporation Method and apparatus for processing a load-lock instruction using a relaxed lock protocol
US7269717B2 (en) * 2003-02-13 2007-09-11 Sun Microsystems, Inc. Method for reducing lock manipulation overhead during access to critical code sections
US20040268046A1 (en) * 2003-06-27 2004-12-30 Spencer Andrew M Nonvolatile buffered memory interface
US20050120185A1 (en) * 2003-12-01 2005-06-02 Sony Computer Entertainment Inc. Methods and apparatus for efficient multi-tasking
US8332483B2 (en) * 2003-12-15 2012-12-11 International Business Machines Corporation Apparatus, system, and method for autonomic control of grid system resources
US7210019B2 (en) * 2004-03-05 2007-04-24 Intel Corporation Exclusive access for logical blocks
US20050283783A1 (en) * 2004-06-22 2005-12-22 Desota Donald R Method for optimizing pipeline use in a multiprocessing system
JP4287799B2 (ja) * 2004-07-29 2009-07-01 富士通株式会社 プロセッサシステムおよびスレッド切り替え制御方法
US7406625B2 (en) * 2004-08-17 2008-07-29 International Business Machines Corporation Protecting a code range in a program from breakpoints
US20060095685A1 (en) * 2004-11-03 2006-05-04 Bonola Thomas J System and method to coordinate access to a sharable data structure using deferred cycles
US7454570B2 (en) * 2004-12-07 2008-11-18 International Business Machines Corporation Efficient memory update process for on-the-fly instruction translation for well behaved applications executing on a weakly-ordered processor
US7797704B2 (en) * 2005-03-30 2010-09-14 Hewlett-Packard Development Company, L.P. System and method for performing work by one of plural threads using a lockable resource
KR101369441B1 (ko) * 2005-08-23 2014-03-04 어드밴스드 마이크로 디바이시즈, 인코포레이티드 컴퓨터 시스템 내부의 프로액티브 동기 방법

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103299272A (zh) * 2010-12-07 2013-09-11 超威半导体公司 使用存储的原子程序的可编程原子内存
CN103299272B (zh) * 2010-12-07 2016-04-27 超威半导体公司 使用存储的原子程序的可编程原子内存
CN104025027A (zh) * 2011-12-30 2014-09-03 英特尔公司 结构访问处理器、方法、系统和指令
CN104025027B (zh) * 2011-12-30 2017-08-15 英特尔公司 结构访问处理器、方法、系统和指令
CN103020003A (zh) * 2012-12-31 2013-04-03 哈尔滨工业大学 面向多核程序确定性重演的内存竞争记录装置及其控制方法
TWI643125B (zh) * 2016-04-18 2018-12-01 聯發科技股份有限公司 多處理器系統及快取共用方法
CN109933543A (zh) * 2019-03-11 2019-06-25 珠海市杰理科技股份有限公司 Cache的数据锁定方法、装置和计算机设备
CN109933543B (zh) * 2019-03-11 2022-03-18 珠海市杰理科技股份有限公司 Cache的数据锁定方法、装置和计算机设备

Also Published As

Publication number Publication date
US20070050559A1 (en) 2007-03-01
US20070067529A1 (en) 2007-03-22
KR101369441B1 (ko) 2014-03-04
GB2445294B (en) 2009-01-21
GB2445294A (en) 2008-07-02
KR20080038435A (ko) 2008-05-06
JP2009506436A (ja) 2009-02-12
DE112006002237T5 (de) 2008-06-19
US7636819B2 (en) 2009-12-22
US20070050563A1 (en) 2007-03-01
GB0802809D0 (en) 2008-03-26
DE112006002237B4 (de) 2023-04-06
WO2007025112A1 (en) 2007-03-01
US20070050562A1 (en) 2007-03-01
US7627722B2 (en) 2009-12-01
JP5103396B2 (ja) 2012-12-19
US7606985B2 (en) 2009-10-20
US20070050561A1 (en) 2007-03-01
US20070050560A1 (en) 2007-03-01
US7552290B2 (en) 2009-06-23

Similar Documents

Publication Publication Date Title
CN101297270A (zh) 计算器系统内主动同步的方法
CN104954356B (zh) 保护共享的互连以用于虚拟机
CN101950259B (zh) 用于执行事务的装置、系统及方法
CN106716361B (zh) 用于运行时例程冗余跟踪的编译器高速缓存
JP6006247B2 (ja) 共有メモリへのアクセスの同期を緩和するプロセッサ、方法、システム、及びプログラム
CN105612502B (zh) 虚拟重试队列
CN108027766A (zh) 预取指令块
CN108027732A (zh) 与断言的加载指令相关联的预取
KR102132805B1 (ko) 커널 모듈을 위한 멀티코어 메모리 데이터 레코더
CN102782644A (zh) 执行具有回滚由积极优化导致的变化的能力的积极代码优化
CN104054053A (zh) 警告追踪中断设施
US9836399B2 (en) Mechanism to avoid hot-L1/cold-L2 events in an inclusive L2 cache using L1 presence bits for victim selection bias
CN105009101A (zh) 提供与数据缓冲器相关联的监听滤波
TWI724065B (zh) 包含用於控制流向終止的模式特定結束分支之處理器及系統
CN105760339B (zh) 实现线减少和物理拥堵最小化的多核总线架构
KR101804677B1 (ko) 트랜잭션적인 전력 관리를 수행하기 위한 하드웨어 장치들 및 방법들
WO2016045039A1 (en) Reducing interconnect traffics of multi-processor system with extended mesi protocol
CN104054054A (zh) 程序对警告追踪中断设施的使用
WO2017112192A1 (en) Minimizing snoop traffic locally and across cores on a chip multi-core fabric
CN104054052A (zh) 由一个程序向另一个程序提供对警告追踪设施的存取
TWI485621B (zh) 用於選擇性執行確定指令的方法、裝置及系統
Tian et al. A two-level task scheduler on multiple DSP system for OpenCL
Torrellas et al. The Bulk Multicore Architecture For Improved Programmability Easing the programmer's burden does not compromise system performance or increase the complexity of hardware implementation.

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20081029