CN107168680B - 具有局限于中间高速缓存级别的局部范围的原子指令 - Google Patents
具有局限于中间高速缓存级别的局部范围的原子指令 Download PDFInfo
- Publication number
- CN107168680B CN107168680B CN201710191989.2A CN201710191989A CN107168680B CN 107168680 B CN107168680 B CN 107168680B CN 201710191989 A CN201710191989 A CN 201710191989A CN 107168680 B CN107168680 B CN 107168680B
- Authority
- CN
- China
- Prior art keywords
- instruction
- cache
- atomic
- processor
- cores
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
- G06F12/1475—Key-lock mechanism in a virtual system, e.g. with translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/602—Details relating to cache prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及一种更新在多个处理器核之间共享的变量的方法。在内核的一个中执行局部范围原子读‑修改‑写指令(AFA)期间,实现下述步骤,其以共享变量的存储地址(al)作为参数:在被分配到存储地址的高速缓存线(L(al))内执行原子指令的操作;并且局部锁住缓存线(LCK),同时在局部范围原子指令执行期间,授权通过连接到相同级别的另一个高速缓冲存储器的内核而访问共享变量。
Description
技术领域
本公开涉及读-修改-写(read-modify-write)原子指令,该指令由具有共享高速缓冲存储器的多核处理器来实现,该高速缓冲存储器通常为二级或更多。
背景技术
图1是通过两级高速缓冲存储器连接到系统内存MEM(典型地动态内存DDR)的四核处理器的简化图。每个处理器核CPU都有其自有的一级高速缓冲存储器L1。每对内核共享二级高速缓冲存储器L2。最后,每个高速缓冲存储器L2共享对系统内存MEM的访问。一些处理器可能具有在高速缓冲存储器L2之间共享的三级高速缓冲存储器。
每个高速缓冲存储器包括控制器CTRL,用于执行在该高速缓冲存储器内进行的操作,包括确保高速缓冲存储器之间的一致性(co)。处理器内核通常在虚拟地址上运行,而高速缓冲存储器则使用物理地址操作。因此内存管理单元MMU通常被提供在每个处理器核与相关的控制器CTRL之间,以便进行虚拟地址到物理地址的转换。
在这样的处理器中,可能会有在代码的各部分之间或在不同内核上所执行的程序线程之间共享数据的需要,其引入了一个挑战,即必须牢记多个内核之间插入的多个高速缓冲存储器,它可以存储该共享数据的不同版本。
为了确保在多个内核之间共享数据的可靠性,读-修改-写(read-modify-write)原子指令经常被用作,例如所谓的抓取和相加(Fetch-and-Add)(FA)指令或比较和交换(Compare-And-Swap)(CAS)指令。这些指令的特点是,它们产生被视为系统内存内容上的瞬态感知的效果。换句话说,构成每个原子指令的各种操作,例如通常变量的读取、变量的修改和变量的写回,被执行,同时保证没有对在读取和写回之间的变量的外部干扰。
为了保证原子性,第一种技术是基于锁住系统内存,阻止通过其它方法对内存或内存区域的任何访问,即使这些方法不能访问通过读-修改-写(read-modify-write)序列而定为目标的变量。
另一种技术是基于高速缓存一致性协议,通过该协议,通过执行原子指令的内核以“专用”模式获取包含由该原子指令定为目标的变量的高速缓存线。该获取导致该高速缓存线在其它高速缓冲存储器中失效,从而防止其它内核访问该高速缓存线,从而阻止访问系统内存的相应存储区,直到专用模式被已经获取它的内核挂起为止。
这种技术限制了只对与高速缓存线对应的内存区域进行访问的访问约束,但其实现较为复杂,并且会产生数据对齐约束。
这两种技术产生了共同的结果,即,暂时阻止对内存中共享变量的访问,一个使用在系统内存级别实现的机制,另一个使用在高速缓冲存储器级别实现的机制。
发明内容
通常提供一种多核处理器,包括高速缓冲存储器,其由一组几个内核所共享,所述几个内核被配置为派送原子指令给高速缓冲存储器;在它的指令集中,原子读-修改-写(read-modify-write)指令,以共享变量的存储地址为参数,其中该原子指令具有全局范围;高速缓冲存储器控制器被配置为通过全局锁定包括共享变量的地址的地址空间,接收和处理由组的给定内核所执行的每个全局原子指令,以防止在全局原子指令执行期间通过任何其它内核访问共享变量。原子指令也可以有局部范围,高速缓冲存储器控制器被配置为通过局部地锁住分配给共享变量的地址的高速缓存线,处理由组的给定内核执行的每个局部原子指令,同时在局部原子指令执行期间,授权与相同级别的另一个高速缓冲存储器相连接的内核对共享变量的访问。
该高速缓冲存储器控制器可以被配置为使用高速缓存一致性协议以实现全局原子指令,并且可以在局部原子指令执行期间,局部地锁住高速缓存线而不无效或锁住在相同级别的其它高速缓冲存储器中的相似的高速缓存线。
该高速缓冲存储器控制器也可以可选地被配置为在全局原子指令执行期间锁住包含该共享变量的系统内存区域,并且可以,在局部原子指令执行期间,访问高速缓存线内的变量而不锁住系统内存中的任何区域。
该原子指令的全局和局部范围可以分别由处理器指令集中的两个专用的指令实现。
另外,该原子指令的全局和局部范围可由处理器指令集中的相同指令实现,并且可以通过使用两个不同的虚拟地址空间而被区分,所述两个不同的虚拟地址空间被分配到包含共享变量的相同的物理地址空间,该处理器包括内存管理单元用于执行虚拟到物理地址的转换,并且其分配“非高速缓存”属性到与全局范围相关的虚拟地址空间。
局部原子指令可以是获取和相加(fetch-and-add)指令,其以增量值作为附加参数,并且高速缓存控制器可以被配置为向变量添加增量。
还提供一种更新在多个处理器核之间共享的变量的方法,包括在内核的中执行局部范围原子读-修改-写(read-modify-write)指令期间,实现下述步骤,其以共享变量的存储地址作为参数:在被分配到存储地址的高速缓存线内执行原子指令操作;以及局部锁住缓存线(LCK),同时在局部范围原子指令执行期间,授权通过连接到相同级别的另一个高速缓冲存储器的内核而访问共享变量。
该方法可包括锁住高速缓存线的步骤而不在其它的相同级别高速缓冲存储器中无效或锁住相似的高速缓存线。
该方法可以包括通过执行处理器指令集中的专用指令来定义原子指令的局部范围的步骤;以及在处理器指令集中包含全局范围的专用原子指令。
该方法可选地可包括通过内存管理单元从不同的第一和第二虚拟地址空间转换包括共享变量的物理地址空间的步骤;分配“非高速缓存”属性到第二虚拟地址空间;使用第一虚拟地址空间执行通用原子指令以获得局部范围;以及使用第二虚拟地址空间执行相同的通用原子指令以获得全局范围。
附图说明
结合附图,从所提供的仅为示例性的本发明具体实施例的以下描述中,其它优点和功能将变得更加清楚和明显,其中:
图1,如前所述,是具有两级高速缓冲存储器的四核处理器的简化图;
图2是说明具有全局范围的常规原子获取和相加(fetch-and-add)指令的实现的时序图;以及
图3是说明具有局部范围的原子获取和相加(fetch-and-add)指令的实现的时序图。
具体实施方式
图2通过时序图说明了使用以上公开的常规系统内存锁定方法、在图1类型的系统中的常规的原子读取和相加指令的实现作为示例。该指令被称为“原子读取和相加非高速缓存”或AFAU,“非高速缓存”意味着该指令在系统内存MEM级别是有效的。这样的指令以共享变量的地址和增量为参数以便进行添加。该指令使得内核暂停以等待确认,例如在修改前,返回共享变量的值。
在时刻t0,内核CPUa执行指令AFAU al,i,其中参数al是共享变量的地址,参数i是要添加的增量。该原子指令可被指派到高速缓冲存储器中的一个,例如最接近该系统内存,L2,其控制器可以包括被设计实现所述操作的的处理单元PU。
因此,在时刻t0,原子指令被传送到高速缓冲存储器L1,在时刻t1,其转而传送到高速缓冲存储器L2。
在时刻t2,响应于原子指令,高速缓冲存储器L2在地址al处执行负载非高速缓存命令LDU,该命令与命令LCK相结合以锁住包含地址al的内存区域。内存MEM通过锁住区域进行响应,意味着从时刻t2为执行该原子指令的内核CPUa专门保留对该内存区域的访问权。内存区域被锁定期间的间隔由粗线显示。
此外,例如在所有的高速缓冲存储器(INVAL al)中通过将分配给地址al的高速缓存线无效,这种非高速缓存命令的执行可能会引发高速缓冲存储器的一致性机制。因此,另一个试图读取变量的内核会导致它的高速缓冲存储器使用来自系统内存的更新的变量进行刷新。如果在内存区域被锁定时发生这样的访问,则内核将被暂停,直到内存区域被解锁为止。
在时刻t3,响应于负载命令LDU,该内存返回在地址al中存储的变量的值val。相对较多数量的时钟周期可能在命令LDU的执行和值val的返回之间消逝。
在时刻t4,高速缓冲存储器L2发送读取值val到高速缓冲存储器L1,并且在本地将增量i添加到值val。
在时刻t5,当高速缓冲存储器L2执行存储非高速缓存命令STU以存储地址al处变量的修改的值时,高速缓冲存储器L1发送读取值val到内核CPUa,其命令与命令ULCK相结合以解锁包含地址al的内存区域。
在时刻t6,响应于命令STU,系统内存传送确认信号ACK到高速缓冲存储器L2中,该确认信号ACK表明内存区域处于解锁状态。相对较多数量的时钟周期可能在命令STU的执行和确认信号ACK的传输之间消逝。系统内存从而解锁包含地址al的内存区域。
从时刻t6开始,其它内核可以访问系统内存中更新的共享变量。如果另一个内核要求读取访问时刻t2和t6之间的共享变量,则变量仅从时间t6得到。
更加精确地说通过高速缓存控制器在高速缓冲存储器L2中执行的命令LDU和STU的效果,类似于对由内核所执行的相似名称的指令所产生的高速缓冲存储器响应。这意味着分配给地址al的高速缓存线被这些指令更新。因此,在存储命令STU被执行后,该高速缓存线是最新的,其具有变量内存中的当前值。
由粗线表示的系统内存锁住时间可能会比较长,因为系统内存的延迟可以用几百个内核时钟周期来表示。这种延迟对于每个原子指令发生两次,第一次是对于负载命令LDU,第二次是对于存储指令STU。当系统内存被锁定时,即使进程不访问共享变量,也没有其它进程访问它并且处于停滞状态。内存可能会被部分锁定,例如通过内存条,但这样的区域仍然比较大,所以它们的锁定对系统性能是不利的。
在图1类型的处理器中,高速缓冲存储器可以在多核之间共享,比如对于2级高速缓冲存储器的双核或四核。一些处理器可具有被更多内核所共享的3级高速缓冲存储器。此外,在许多情况下,程序线程到内核的分配可以是定制的,以便相容的线程被分配到共享同一个高速缓冲存储器的内核中。例如,在图1中,两个相互依存的线程将被分别分配到内核CPUa和CPUb中,或CPUc和CPUd中。
此外,由一组相互依存的线程共享的变量一般对其它进程没有作用,特别是在不共享高速缓冲存储器的内核上执行的进程。换句话说,其它进程不需要访问共享变量的最新值。
这些研究结果的基础上,本文提出了引入具有处理器指令集中局部范围的原子指令。更具体地说,这样的指令是只达到中间高速缓存级别的原子。在包括多个共享高速缓冲存储器级别的处理器中,首选是将局部范围原子指令归为与内核最近的共享高速缓冲存储器。
除常规原子指令族之外(在下文中可被认为是具有全局范围),处理器指令集可以包括具有局部范围的类似的原子指令族。因此,例如,如果处理器包括常规的原子获取和相加非高速缓存指令AFAU,则指令集可以增加类似的局部范围或“高速缓存”原子指令AFA。
然后,常规地,全局原子指令可用于任意组合的内核上执行的相互依存的线程中,所述内核并不需要共享相同的高速缓冲存储器,而新的局部原子指令可用于在共享高速缓冲存储器的内核上执行的相互依存的线程中。
图3是说明在图1的处理器示例的上下文中局部原子获取和相加指令的示例性实现的时序图。在图1的处理器中,最接近内核的共享高速缓冲存储器为2级(L2)。该局部原子指令可稍后被归因于高速缓冲存储器L2,其控制器被配置为对它们进行处理。
在时刻t0,内核CPUa执行指令AFA al,i,其中参数al是共享变量的地址,参数i是要添加的增量。该指令可被归因于距离内核最近的共享高速缓冲存储器,L2。
因此,在时刻t0,原子指令被传送到高速缓冲存储器L1,在时刻t1,其转而传送到高速缓冲存储器L2。
在时刻t2,响应于原子指令,高速缓冲存储器L2在地址al处执行缓存的负载命令LD,该命令与锁住命令LCK相关联,不是针对内存区域,而是针对分配给地址al的局部高速缓存线L(al)。
高速缓存行可通过共享高速缓冲存储器的内核由并发访问请求所支配。在实践中,如图1所示,对于高速缓存存储器L2,高速缓存控制器可以包括分别分配给内核的处理单元PU,其中处理单元竞争以获得对高速缓存线的访问。从时刻t2起,对高速缓存线L(al)的访问专门地保留给执行原子指令的内核CPUa。锁定间隔由粗线显示。
负载指令LD的效果可类似于对由内核执行的同名负载指令的高速缓冲存储器响应。通过通常的高速缓存管理机制,此命令引起分配到地址al的高速缓存线的有效性检查,换句话说,如果高速缓存线存在并且尚未被一致性管理机制无效。如果高速缓存线是无效的或不存在的(高速缓存缺失),则高速缓存控制器请求从下游内存中再次填充,其中该下游内存可以是系统内存MEM,或更高级别的高速缓冲存储器(L3),如果处理器有一个。
在时刻t3,如果请求重新填充,则从下游内存接收高速缓存线的新内容,包括地址al上共享变量的最新值val。
当重新填充高速缓存线时,间隔t2-t3对应于下游内存中的延迟。然而,类似地,高速缓存线是有效的可能是不可忽略的,通过高速缓存线重新填充被省略,并且间隔t2-t3为零,因为高速缓存控制器可稍后立即束缚后续的操作。
在时刻t4,高速缓冲存储器L2发送读取值val到高速缓冲存储器L1,并且在本地将增量i添加到值val中。
在时刻t5,高速缓冲存储器L1向内核CPUa确认操作,例如通过传送读取值val到内核CPUa。高速缓冲存储器L2执行命令ST以存储地址al处修改后的值。存储命令ST的效果类似于对由内核所执行的同名存储指令的高速缓冲存储器响应。通过常见的高速缓存管理机制,该命令可稍后引起被分配到地址al的高速缓存线的更新,并标记该高速缓存线为“污染”。例如,该高速缓存线可稍后被转移到写缓冲区,并且通过一致性管理机制在其它L2高速缓冲存储器中被无效。
根据另一种选择,相同级别的其它高速缓冲存储器中高速缓存线的无效可被省略,因为共享变量仅在连接到同一高速缓冲存储器的内核间被共享。换句话说,其它内核可以继续访问数据,而不会在它们的高速缓存线中产生延迟,并且原则上不会在该高速缓存线中访问过时的共享变量。
在时刻t7处,只要共享变量在高速缓存线中是最新的,该高速缓存线便可以解锁(ULCK),并且发送确认信息到高速缓冲存储器L1。从该时刻起,高速缓冲存储器L2可以刷新其写缓冲到系统内存MEM,或到更高级别的高速缓冲存储器L3,该高速缓冲存储器L3中继该刷新到系统内存中。
值得注意的是,高速缓存线的锁定间隔短于图2中的系统内存的锁定间隔,尤其是当共享变量在高速缓存线中是最新时,避免在时刻t2和t3之间的下游内存中进行读取操作。
由于这一事实的存在,即,只有被分配到共享变量的地址的高速缓存线,而非系统内存,被锁定,从而可以获得显著的益处。在局部原子操作期间,到所有系统内存中其它高速缓存线的访问保持了向竞争内核的授权。
如前所述,在某些处理器架构中,常规的原子指令可基于高速缓存一致性协议,通过第二种技术来实现,其中通过原子指令定为目标的包含共享变量的高速缓存线以一种“专用”方式通过执行原子指令的内核被获取。在这样的体系结构中,具有受限于给定高速缓存级别(例如L2)的局部范围的原子指令通过避免专用锁住模式来提升性能,否则需要在相同级别高速缓冲存储器的控制器之间交换信息。此外,由于高速缓存线没有以专用模式被锁住,连接到同级别的另一个高速缓冲存储器的内核仍然可以像往常一样访问它们的高速缓存线。
在前面的描述中,假定原子指令的范围(局部或全局)通过处理器指令集的专用原子指令族来进行区分,例如,具有不同的操作码。根据另一个实施例,同族原子指令可以被使用,其可被认为是通用的,并且然后其范围可通过使用由内存管理单元MMU所提供的常规功能而区分。实际上,MMU可以被配置来分配不同的内存交易模式到虚拟地址空间中,并提供了将虚拟地址空间到物理地址空间转换的灵活性。通过设置分配到虚拟地址空间的“属性”,该内存交易方式一般可经MMU中的操作系统而被编程。
本文中提出,配置MMU以转换两个不同的虚拟地址空间到包含共享变量的相同物理地址空间,并通过设置内存交易模式来区分原子指令的范围。第一虚拟地址空间被分配给局部范围,为此目的,使用了“高速缓存”属性。该“高速缓存”模式通常是默认模式,此模式是在某系统中未设置特定属性而建立的。第二虚拟地址空间被分配到全局范围,并且,为此目的,使用了“非高速缓存”属性。
属性的值通常在地址总线的单独行中被传送,以便它们可以被高速缓存控制器特别地考虑在内。高速缓存控制器因此接收共享变量的物理地址——从指令所使用的任何一个虚拟地址空间由MMU所转换——以及表明指令范围的属性,其值取决于指令所使用的虚拟地址空间。
利用这个配置,取决于作为参数传递给该指令以访问共享变量的地址是在第一还是第二虚拟地址空间中,高速缓存控制器可以实现具有局部或全局范围的相同通用原子指令。
Claims (10)
1.一种多核处理器,包括:
分成多组的多个相似的内核;
分别分配给所述组的不同的高速缓冲存储器,每个不同的高速缓冲存储器由相应组的内核所共享;
在所述处理器的指令集中,原子读-修改-写指令将共享变量的存储地址作为参数,并且具有限于包括执行该原子指令的内核的一组内核的局部范围;以及
高速缓冲存储器控制器,被配置为通过在给定组的不同高速缓冲存储器中局部锁住分配给共享变量的地址的高速缓存线,处理由给定组的内核执行的每个局部范围原子指令,同时在局部范围原子指令的执行期间,授权给定组之外的内核对共享变量的读取和写回访问。
2.如权利要求1所述的处理器,其中该高速缓冲存储器控制器被配置为执行高速缓存一致性协议,并且在局部范围原子指令执行期间,局部锁住高速缓存线而不无效或锁住在其它高速缓冲存储器中的相似的高速缓存线。
3.如权利要求1所述的处理器,其中高速缓存控制器被配置为处理局部范围原子指令而不锁住由所有内核的组所共享的系统内存中的任何区域。
4.如权利要求1所述的处理器,还包括处理器的指令集中的全局范围原子指令,其中全局范围扩展到所述处理器的所有内核。
5.如权利要求1所述的处理器,其中原子指令还具有扩展到处理器的所有内核的全局范围;
全局和局部范围可由处理器指令集的相同指令实现,并且通过使用被分配到包含共享变量的相同的物理地址空间的两个不同的虚拟地址空间而被区分,并且
该处理器包括内存管理单元以执行虚拟到物理地址的转换,并且其分配“非高速缓存”属性到与全局范围相关的虚拟地址空间。
6.如权利要求1所述的多核处理器,其中局部范围原子指令是获取-和-相加指令,其以增量值作为附加参数,并且高速缓存控制器被配置为向变量添加增量。
7.一种更新在多个相似处理器内核之间共享的变量的方法,所述方法包括下述步骤:
将内核分布在分配给各自不同的高速缓冲存储器的多个组中;
在给定组的内核中执行原子读-修改-写指令,该原子读-修改-写指令具有限于给定组的局部范围,将共享变量的存储地址作为参数;
在被分配到存储地址的高速缓存线内执行在给定组的高速缓冲存储器中的原子指令的操作;以及
局部锁住高速缓存线到给定组,同时在局部范围原子指令执行期间,授权给定组之外的内核对共享变量的读取和写回访问。
8.如权利要求7所述的方法,还包括步骤:
锁住高速缓存线而不无效或锁住在其它高速缓冲存储器中的相似的高速缓存线。
9.如权利要求7所述的方法,还包括步骤:
通过执行处理器指令集中的专用指令来定义原子指令的局部范围;以及
包括扩展到处理器指令集中所有内核的全局范围的专用原子指令。
10.如权利要求7所述的方法,还包括步骤:
通过内存管理单元从第一和第二不同虚拟地址空间转换包括共享变量的物理地址空间;
分配“非高速缓存”属性到第二虚拟地址空间;
使用第一虚拟地址空间执行通用原子指令以执行局部范围;以及
使用第二虚拟地址空间执行相同的通用原子指令以执行全局范围。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1651869A FR3048526B1 (fr) | 2016-03-07 | 2016-03-07 | Instruction atomique de portee limitee a un niveau de cache intermediaire |
FR1651869 | 2016-03-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107168680A CN107168680A (zh) | 2017-09-15 |
CN107168680B true CN107168680B (zh) | 2023-09-12 |
Family
ID=56801631
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710191989.2A Active CN107168680B (zh) | 2016-03-07 | 2017-03-07 | 具有局限于中间高速缓存级别的局部范围的原子指令 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11144480B2 (zh) |
EP (1) | EP3217288B1 (zh) |
CN (1) | CN107168680B (zh) |
FR (1) | FR3048526B1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102372423B1 (ko) * | 2017-05-16 | 2022-03-10 | 한국전자통신연구원 | 파라미터 공유 장치 및 방법 |
CN108647154A (zh) * | 2018-05-14 | 2018-10-12 | 国网山东省电力公司阳谷县供电公司 | 一种在集中器中进行参数修改的方法 |
US11182159B2 (en) | 2020-02-26 | 2021-11-23 | Google Llc | Vector reductions using shared scratchpad memory |
CN113836050A (zh) * | 2021-09-30 | 2021-12-24 | 龙芯中科技术股份有限公司 | 访存控制方法、装置、设备及可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7996632B1 (en) * | 2006-12-22 | 2011-08-09 | Oracle America, Inc. | Device for misaligned atomics for a highly-threaded x86 processor |
CN104520825A (zh) * | 2012-08-06 | 2015-04-15 | 高通股份有限公司 | 使用释放一致性存储器排序模型的多核心计算高速缓存相干性 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2500101B2 (ja) * | 1992-12-18 | 1996-05-29 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 共用変数の値を更新する方法 |
JP2819982B2 (ja) * | 1993-03-18 | 1998-11-05 | 株式会社日立製作所 | 範囲指定可能なキャッシュ一致保証機能を有するマルチプロセッサシステム |
US6430657B1 (en) * | 1998-10-12 | 2002-08-06 | Institute For The Development Of Emerging Architecture L.L.C. | Computer system that provides atomicity by using a tlb to indicate whether an exportable instruction should be executed using cache coherency or by exporting the exportable instruction, and emulates instructions specifying a bus lock |
AU2001236793A1 (en) * | 2000-02-25 | 2001-09-03 | Sun Microsystems, Inc. | Apparatus and method for maintaining high snoop traffic throughput and preventing cache data eviction during an atomic operation |
AU2003250575A1 (en) * | 2002-08-07 | 2004-02-25 | Mmagix Technology Limited | Apparatus, method and system for a synchronicity independent, resource delegating, power and instruction optimizing processor |
US6920532B2 (en) * | 2002-11-05 | 2005-07-19 | Newisys, Inc. | Cache coherence directory eviction mechanisms for modified copies of memory lines in multiprocessor systems |
US7194587B2 (en) * | 2003-04-24 | 2007-03-20 | International Business Machines Corp. | Localized cache block flush instruction |
US8281075B2 (en) * | 2009-04-14 | 2012-10-02 | International Business Machines Corporation | Processor system and methods of triggering a block move using a system bus write command initiated by user code |
US8117399B2 (en) * | 2009-05-07 | 2012-02-14 | Freescale Semiconductor, Inc. | Processing of coherent and incoherent accesses at a uniform cache |
WO2010142432A2 (en) * | 2009-06-09 | 2010-12-16 | Martin Vorbach | System and method for a cache in a multi-core processor |
US8095617B2 (en) * | 2009-06-30 | 2012-01-10 | Oracle America Inc. | Caching data in a cluster computing system which avoids false-sharing conflicts |
US8788794B2 (en) * | 2010-12-07 | 2014-07-22 | Advanced Micro Devices, Inc. | Programmable atomic memory using stored atomic procedures |
US9122476B2 (en) * | 2010-12-07 | 2015-09-01 | Advanced Micro Devices, Inc. | Programmable atomic memory using hardware validation agent |
US20120304178A1 (en) * | 2011-05-24 | 2012-11-29 | International Business Machines Corporation | Concurrent reduction optimizations for thieving schedulers |
US8656137B2 (en) * | 2011-09-01 | 2014-02-18 | Qualcomm Incorporated | Computer system with processor local coherency for virtualized input/output |
US20130159812A1 (en) * | 2011-12-16 | 2013-06-20 | Advanced Micro Devices, Inc. | Memory architecture for read-modify-write operations |
US8694706B2 (en) * | 2012-04-27 | 2014-04-08 | Oracle International Corporation | System and method for NUMA-aware locking using lock cohorts |
US9734063B2 (en) * | 2014-02-27 | 2017-08-15 | École Polytechnique Fédérale De Lausanne (Epfl) | Scale-out non-uniform memory access |
-
2016
- 2016-03-07 FR FR1651869A patent/FR3048526B1/fr active Active
-
2017
- 2017-02-22 EP EP17157413.0A patent/EP3217288B1/fr active Active
- 2017-03-07 US US15/452,073 patent/US11144480B2/en active Active
- 2017-03-07 CN CN201710191989.2A patent/CN107168680B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7996632B1 (en) * | 2006-12-22 | 2011-08-09 | Oracle America, Inc. | Device for misaligned atomics for a highly-threaded x86 processor |
CN104520825A (zh) * | 2012-08-06 | 2015-04-15 | 高通股份有限公司 | 使用释放一致性存储器排序模型的多核心计算高速缓存相干性 |
Also Published As
Publication number | Publication date |
---|---|
FR3048526A1 (fr) | 2017-09-08 |
CN107168680A (zh) | 2017-09-15 |
EP3217288A1 (fr) | 2017-09-13 |
FR3048526B1 (fr) | 2023-01-06 |
US20170255571A1 (en) | 2017-09-07 |
EP3217288B1 (fr) | 2023-01-25 |
US11144480B2 (en) | 2021-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100954623B1 (ko) | 무한 트랜잭션 메모리 시스템 | |
CN107168680B (zh) | 具有局限于中间高速缓存级别的局部范围的原子指令 | |
US8799582B2 (en) | Extending cache coherency protocols to support locally buffered data | |
US9244846B2 (en) | Ensuring causality of transactional storage accesses interacting with non-transactional storage accesses | |
US9798577B2 (en) | Transactional storage accesses supporting differing priority levels | |
US7363435B1 (en) | System and method for coherence prediction | |
WO2010077850A2 (en) | Read and write monitoring attributes in transactional memory (tm) systems | |
WO2008005687A2 (en) | Global overflow method for virtualized transactional memory | |
US20090019209A1 (en) | Reservation Required Transactions | |
US10339054B2 (en) | Instruction ordering for in-progress operations | |
CN102566970B (zh) | 用于处理具有高速缓存旁路的修饰指令的数据处理器 | |
US20030041225A1 (en) | Mechanism for handling load lock/store conditional primitives in directory-based distributed shared memory multiprocessors | |
JP6244916B2 (ja) | 演算処理装置,演算処理装置の制御方法及び情報処理装置 | |
JP4874165B2 (ja) | マルチプロセッサシステム及びマルチプロセッサシステムにおけるアクセス権設定方法 | |
CN115427936A (zh) | 电路和方法 | |
JP2776759B2 (ja) | ロックリクエスト制御装置 | |
EP3519971B1 (en) | Apparatus and method for providing an atomic set of data accesses | |
US6970977B2 (en) | Equal access to prevent gateword dominance in a multiprocessor write-into-cache environment | |
WO2022246769A1 (zh) | 一种访问数据的方法和装置 | |
US20230110566A1 (en) | Method for synchronization for improving concurrent read performance of critical section in distributed shared memory and apparatus using the same | |
US8230173B2 (en) | Cache memory system, data processing apparatus, and storage apparatus | |
WO2014056534A1 (en) | Context-sensitive data-cache | |
Net et al. | 4 Multiprocessor Memory Systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |