CN110312997B - 使用缓存行锁定来实现原子原语 - Google Patents

使用缓存行锁定来实现原子原语 Download PDF

Info

Publication number
CN110312997B
CN110312997B CN201780071245.5A CN201780071245A CN110312997B CN 110312997 B CN110312997 B CN 110312997B CN 201780071245 A CN201780071245 A CN 201780071245A CN 110312997 B CN110312997 B CN 110312997B
Authority
CN
China
Prior art keywords
processor
cache line
cache
instruction
lock
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201780071245.5A
Other languages
English (en)
Other versions
CN110312997A (zh
Inventor
玛雅·穆吉尔
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.)
Optimum Semiconductor Technologies Inc
Original Assignee
Optimum Semiconductor Technologies 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 Optimum Semiconductor Technologies Inc filed Critical Optimum Semiconductor Technologies Inc
Publication of CN110312997A publication Critical patent/CN110312997A/zh
Application granted granted Critical
Publication of CN110312997B publication Critical patent/CN110312997B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/0817Cache consistency protocols using directory methods
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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 or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements

Landscapes

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

Abstract

处理器包括:高速缓存器,高速缓存器包括缓存行;执行单元,其执行原子原语以:响应于执行读取指令以从存储单元取回数据项,促使将数据项的拷贝存储在缓存行中;执行锁定指令以将缓存行锁定到处理器;当缓存行被锁定到处理器时,执行至少一个指令;以及执行解锁指令以使高速缓存控制器从处理器释放缓存行。

Description

使用缓存行锁定来实现原子原语
相关申请
本申请要求于2016年12月15日提交的美国临时申请No.62/434,525的优先权,该临时申请的内容通过引用被包含于此。
技术领域
本公开涉及处理器,且更特别地,涉及使用缓存行锁定来实现原子原语。
背景技术
在计算机编程中,原语是可用于构建更复杂的程序元素或用户界面的代码段。
附图说明
从下面给出的详细描述中和从本公开的各种实施方式的附图中将更充分理解本公开。然而,附图不应被理解为将本公开限制到特定的实施方式,而是仅为了解释和理解。
图1示出根据本公开的实施方式的片上***(SoC)。
图2示出高速缓存器的示例性缓存行。
图3是根据本公开的实施方式的执行原子原语的方法的框图。
具体实施方式
计算机***可包括一个或多个处理器以由一个处理器以时间共享方式或由在多处理器***/多线程处理器***中的多个处理器并行地执行多个过程。这些***依赖于各种过程间通信和协调机构来读取、修改和写入存储单元。
处理器可执行被引导到存储单元的指令的读取-修改-写入序列,包括读取操作,以读取存储在存储单元处的数据,修改数据并接着将修改的数据写回到存储单元。读取-修改-写入序列的执行是原子的,如果在处理器执行了读取之后,保证没有其它处理器可访问并修改存储在那个位置处的数据,直到第一处理器完成了它的写入操作为止。
考虑如在表1中所示的实现存储在存储单元A处的值的递增的指令的序列。
表1
假设存储单元A最初存储8的值。在如表1所示的代码需要的执行完成之后,存储在存储单元A处的值是9。
在一些实现中,计算机***可包括多个处理器。例如,两个过程可由两个不同的处理器同时运行,这两个处理器在同一存储单元A上同时执行表1的代码序列。理想地,在这两个过程完成之后,存储在存储单元A处的值将递增两次到10,假设在这两个过程开始之前存储在存储单元A处的值最初是8。如果这两个处理器以如表2所示的下面的顺序执行代码,这可能出现。
表2
但在原子性缺乏时,这两次递增可能以如表3所示的这个顺序被执行。
表3
在如表3所示的例子中,存储在存储器区域A中的值只递增一次,这不是预期结果。
因此,某些原语可能需要被实现为防止第二处理器访问由第一处理器操作的存储器区域的原子原语。可在硬件或软件中被实现为原子原语的有用的原语的例子可包括:
●递增/递减原语:从存储在存储单元处的值加/减一;
●加上原语:将值加到存储在存储单元处的值;
●交换原语:从存储单元读取旧值,并将新值写到存储单元;
●测试和置位原语:交换原语的变形,其中存储单元可存储第一值(例如0)或第二值(例如1);以及如果测试表明存储单元存储第二值(例如1),则测试和置位原语的执行将改写存储单元;以及如果测试表明存储单元存储第一值(例如0);
●比较和交换原语:将值从存储单元读取到第一寄存器内;以及如果它等于存储在第二寄存器中的第二值,则将第三(新)值写到存储单元,
●使比较和交换原语加倍:像比较和交换一样,除了一对值从两个(可能连续的)存储单元被读取以外;以及比较这两个值;并且如果这两个值是相同的,将一个新对写到这两个存储单元。
作为例子,比较和交换原语的伪代码在表4中示出。
表4
原子原语可在处理器上被实现为指令集架构(ISA)指令或为ISA指令的序列。
一些ISA提供直接实现一个或多个原子原语的指令。所支持的一个公共原语是比较和交换原语。x86的最近变体具有直接实现原子比较和交换原语的比较和交换指令(CMPXCHG)指令。
其它ISA可提供可用作各种原子原语的构建块的指令。可使用由这些ISA规定的指令序列来实现这些原子原语。例如,一对指令——加载-链接和条件存储——可一起用于构建原子原语。处理器可执行加载-链接指令以读取存储在存储单元处的值;以及如果没有对那个位置的介入存储操作,处理器可随后对同一位置执行条件存储指令以存储新值。在大部分实现中,条件存储指令的执行可能也由于其它原因而未能存储值。处理器可包括用于检测条件存储指令的执行是否失败的电路。
表5示出根据本公开的实施方式使用加载-链接和条件存储来实现原子递增的伪代码。
表5
如表5所示的例子,为了执行原子递增指令,处理器可执行加载指令(load_link)以读取存储在存储单元A处的数据,执行递增指令(addi)以使数据值递增,并执行条件存储指令(store_cond)以试图基于存储单元是否被更新的条件来将递增的数据写回到存储单元A。如果自从原子递增指令的执行开始以来没有对存储单元A的更新,则处理器可成功地将已更新的数据存储在存储单元A处。如果自从原子递增指令的执行开始以来存储单元A已被修改,则条件存储指令的执行失败,且代码序列试图通过跳到原子递增指令的开始来重新执行该序列。
本公开的实现提供在硬件电路中实现原子原语的处理器,原子原语可将存储单元锁定到处理器并通过处理器保证这些原语的执行的完成。因此,这些原语的执行不取决于存储单元是否由另一处理器访问的条件。
图1示出根据本公开的实施方式的包括处理器102、130和存储器124的片上***(SoC)100。处理器102(其它处理器130可类似地被构造)可包括在诸如SoC 100的半导体芯片集上制造的逻辑电路。处理器100可以是中央处理单元(CPU)、图形处理单元(GPU)或多核处理器的处理核心。如图1所示,处理器102可包括指令执行流水线104和寄存器文件106。流水线104可包括多个流水线阶段,其中每个阶段包括被制造成在多阶段过程中执行特定阶段的操作的逻辑电路,多阶段过程是充分执行在处理器102的指令集架构(ISA)中规定的指令所需的。在一个实施方式中,流水线104可包括指令取出/解码阶段110、数据取出阶段112、执行阶段114和写回阶段116。
处理器102可包括寄存器文件106,其还可包括与处理器102相关联的寄存器108、109。在一个实施方式中,寄存器文件106可包括通用寄存器108、109,每个寄存器可包括某个数量(被称为“长度”)的位以存储由在流水线104中执行的指令处理的数据项。例如,根据实现,寄存器108、109可以是64位、128位、256位或512位寄存器。寄存器108、109中的每个可存储一个或多个数据项。可实现寄存器108、109以存储浮点数据项和/或固定点数据项,其中浮点数据项可表示实数而固定点数据项可表示整数。
程序的源代码可被编译成在与处理器102相关联的指令集架构(ISA)中定义的一系列机器可执行指令。当处理器102开始执行可执行指令时,这些机器可执行指令可被放置在流水线104上以被顺序地执行。指令取出/解码阶段110可取回放置在流水线104上的指令并识别与指令相关联的标识符。指令标识符可使所接收的指令与在处理器102的ISA中规定的指令的电路实现相关联。
在ISA中规定的指令可被设计成处理存储在存储器124中和/或通用寄存器(GPR)108、109中的数据项。例如,指令可将数据项从存储器区域126取回到寄存器108、109。数据取出阶段112可从GPR 108取回待处理的数据项(例如浮点或固定点)。交换阶段114可包括逻辑电路以执行在处理器102的ISA中规定的指令。
在一个实施方式中,与执行阶段114相关联的逻辑电路可包括多个“执行单元”(或功能单元),每个单元专用于执行一个相应的指令。由这些执行单元执行的所有指令的集合可构成与处理器102相关联的指令集。在执行指令以处理由数据取出阶段112取回的数据项之后,写回阶段116可输出结果并将结果存储在GPR 108、109中。
在一个实施方式中,可从在ISA中规定的指令构造原语。原语是形成更复杂的程序元素的构建块的指令序列。因此,程序可调用原语以实施指令序列(与单独地实施每个指令相对)。在一个实施方式中,原语是原子的,即,如果原语包括由处理器执行的读取指令,则保证没有其它处理器可访问和/或修改存储在存储单元处的由读取指令读取的数据项,直到处理器完成了原语的执行为止。原子原语118可由在处理器102的ISA中定义的一个或多个指令构成。
在一个实施方式中,将存储器区域126锁定和解锁的指令可用于构建原子原语。锁定存储器区域126的指令被称为锁定指令,以及将锁定的存储器区域126解锁的指令被称为解锁指令。锁定指令(或解锁指令)被规定为在ISA中的一个指令实现。使用锁定/解锁指令来执行原子原语118保证当存储器区域被锁定时没有其它处理器可读取或写入到存储器区域。
锁定指令(或解锁指令)可包括操作数以识别待锁定(或解锁)的存储单元126。使用锁定和解锁指令,可使用如表6所示的伪代码来实现原子递增原语。
表6
处理器可执行该代码以实现下面的操作:
●执行锁定指令(lock A)以导致将存储单元A锁定到处理器102。存储器A的锁定是防止其它处理器修改存储器区域A,
●当存储单元A被锁定到处理器102时,执行读取指令(load)以从存储单元A读取数据,执行递增指令(add),并执行存储指令以将递增的数据写回到存储单元A。因为存储单元A被锁定,保证没有对存储在存储单元A处的数据项的介入的修改。
●执行解锁指令以将存储单元A解锁,因而允许其它处理器修改存储单元A。
在一个实施方式中,锁定指令可提供指示锁定指令的执行是否是成功的状态标记。锁定指令的执行可返回指示成功状态或失败状态的指示符。状态标记可允许原子原语的硬件实现以在一些其它处理器保持锁定到存储单元A的情况下选择不完成锁定获取。在一个实施方式中,状态标记可被提供为用于执行锁定指令的返回值。在另一实施方式中,锁定指令可包括识别寄存器以存储状态标记的第二操作数。
表7是根据本公开的实施方式的使用锁定指令的返回状态标记以实现原子递增原语的伪代码。
表7
如表7所示,处理器可执行锁定指令以试图获取与存储单元A相关联的锁定。表7的jmp_lockfail指令可测试前一锁定尝试的返回状态,且如果锁定获取尝试失败则形成分支。如果锁定成功地被获取,则没有其它处理器(或核心)可访问存储单元A,直到解锁指令被执行为止,以及jmp_lockfail指令将彻底失败。如果锁定指令未能获取锁定,则存储单元A仍然被解锁,且jmp_lockfail指令将分支回以再次试图获取锁定。在这个例子中,响应于未能获取锁定,处理器可在没有延迟的情况下通过执行原子递增原语来再次尝试锁定。在可替换的实现中,可在重新执行原子递增原语之前延迟预定的时间(例如N个处理器时钟周期,其中N是正整数)。
在另一实施方式中,如果执行未能获取锁定,则锁定指令的执行可使程序明确地分支到新存储器地址。该新存储器地址可在锁定指令中被编码。例如,锁定指令除了规定存储单元A的第一操作数以外还可包括规定第二存储单元B的第二操作数,如果对锁定第一存储器区域的尝试不能由锁定指令锁定,则第二存储单元B可被锁定。
在又一实施方式中,如果执行未能获取锁定,则锁定指令的执行可能产生异常。响应于确定执行失败,处理器可发起异常处理操作的序列。在一个实施方式中,异常处理程序可试图重复地获取锁定,直到成功地获取锁定为止。例如,异常处理程序可选择从错误处理状态立即返回并重新尝试锁定获取。在另一实施方式中,异常处理程序可能希望报告失败以获取锁定。用于报告失败的错误处理代码可将错误处理代码返回到预先确定的存储器地址(例如在离锁定指令地址的已知位移处)。表8示出将错误处理代码返回到预先确定的存储器地址的示例性代码。
表8
可以用不同的方式实现锁定/解锁指令。用于实现锁定和解锁指令的由存储单元A参考的存储器区域可以是边界对准的存储器块(例如8字节或16字节块),例如与存储器区域相关联的缓存行。因此,如果对准边界是16B以及地址A是0x103,则锁定地址A的企图可能以锁定包括A的16B对准区域结束;在这种情况下,它将是地址范围0x100到0x10f(包括界限)。
在一个实施方式中,与存储器区域相关联的缓存行可用于锁定存储器区域126。如图1所示,处理器102可与高速缓存器120(例如L1-L3高速缓存器)相关联,高速缓存器是用于存储从存储器124取回的数据项的拷贝以实现快速数据取回的在处理器102本地的高速存储装置。高速缓存器120可包括用于存储从存储器124取回的数据项的缓存行122。
图2示出包括标签字段202、数据字段204和标记字段206的示例性缓存行200。每个高速缓存器(例如L1-L3高速缓存器)可包括多个缓存行作为示例性缓存行200。数据字段204可存储在主存储器中存储的相应数据的拷贝。标签字段202可存储主存储器的地址,数据204存储在主存储器处。标记字段206可根据某个缓存一致性协议来存储缓存行的状态指示符以确保对缓存行200的访问和在主存储器中的相应数据是一致和正确的。
参考图1,锁定指令可通过锁定相应于存储器区域的缓存行来锁定存储器区域,且锁定指令可如下被实现:
●响应于执行关于存储器区域的锁定指令,处理器可以:
○如果数据项没有已经存在于数据高速缓存器中,将存储在存储单元(例如存储器区域126或由多个处理器共享的L3高速缓存器)处的数据项取回到处理器102私有的数据高速缓存器(例如L1高速缓存器)内,
○将缓存行标记为锁定的,其中可通过使在缓存行中的标记字段中的指定位置位或通过将锁定分配到与缓存行相关联的地址来将缓存行标记为锁定的,
●当另一处理器试图获取锁定的缓存行时,处理器不中止处理器私有的锁定。替代地,处理器可推迟锁定的缓存行的释放,直到锁定的缓存行变得被解锁为止,因而保证已锁定存储器区域的原子原语,以及
●响应于执行关于锁定的存储器区域的解锁指令,处理器可为数据高速缓存器中的缓存行清除锁定指示符。
在一个实施方式中,处理器可与高速缓存控制器(未示出)相关联以管理与处理器相关联的高速缓存器。高速缓存器可包括分级结构,其包括L1、L2、L3、高速缓存器和最后一级高速缓存器(LLC)。L1或L2高速缓存器可以是处理器私有的,而L3高速缓存器或LLC可由不同的处理器共享。高速缓存控制器可根据某个缓存一致性协议(例如MESI协议)来管理高速缓存器的不同级别。在MESI协议下,缓存行可使用两个或更多个状态位被标记为修改(M)、独占(E)、共享(S)或无效(I)状态。与处理器相关联的高速缓存控制器可以使表示MESI状态的两个或更多个状态位置位。
在MESI或其它缓存一致性协议下,处理器可执行原子原语,且在锁定过程期间获取在共享(S)状态中(使得缓存行可存在于其它处理器高速缓存器中)或在独占(E)状态中(使得缓存行从其它高速缓存器中被逐出)的缓存行。因为处理器可执行修改缓存行的操作,通过锁定指令来获取在独占(E)状态中的缓存行可能是优选的。此外,在独占状态下实现锁定的释放可能更容易。当另一处理器试图访问锁定缓存行时,一般释放延迟可通过迫使请求处理器放弃并稍后重新尝试来实现。在重新尝试时,该行可被解锁,且通常的一致性行动可被采取。
图3是根据本公开的实施方式的执行原子原语的方法300的框图。方法300可由处理逻辑执行,处理逻辑可包括硬件(例如电路、专用逻辑、可编程逻辑、微代码等)、软件(例如在处理装置、通用计算机***或专用机器上运行的指令)、固件或其组合。在一个实施方式中,方法400可部分地由如图1所示的处理器102的处理逻辑执行。
为了解释的简单,方法300被描绘和描述为一系列行动。然而,根据本公开的行动可以以各种顺序和/或与在本文中不存在和未描述的其它行动同时出现。此外,不是所有所示的行动都可被执行来实现根据所公开的主题的方法300。此外,本领域中的技术人员将理解和认识到,方法300可以可替换地经由状态图或事件被表示为一系列相互关联的状态。
参考图3,在302,响应于执行读取指令以从存储单元取回数据项,可使得处理逻辑将数据项的拷贝存储在高速缓存器的缓存行中。
在304,处理逻辑可执行锁定指令以将缓存行锁定到处理器。
在306,处理逻辑可在缓存行被锁定到处理器时执行至少一个指令。
在308,处理逻辑可执行解锁指令以使高速缓存控制器从处理器释放缓存行。
在一个实施方式中,处理器可使用包括条目(被称为目录条目)的目录来指示行被锁定。目录可以是存储在所分配的存储器区域中的数据结构对象。每个目录条目可对应于一行并包括锁定状态标记,其当被置位时指示行被锁定。在该方案中,每个行可被锁定。未完成的锁定的数量由高速缓存器的结构限制。特别地,在N路联合高速缓存器中,如果它们映射到同一缓存排,不可能锁定N+1个值。高速缓存器(例如L2-L3高速缓存器和LLC高速缓存器)可包括缓存排,每个缓存排存储相应的缓存行。N路联合高速缓存器至多可将N个缓存行存储在一个缓存排中。当高速缓存控制器将新缓存行带到已经由N个缓存行占据的缓存排时,N个缓存行之一可能需要基于缓存逐出策略而从高速缓存器被逐出。在一个实施方式中,锁定的缓存行不能被逐出。如果在缓存排中的所有缓存行被锁定,则获取锁定的缓存行的企图是缓存排将失败。
在另一实施方式中,处理器可使用锁定的地址(例如与存储器相关联的物理地址或与操作***相关联的虚拟地址)的池来锁定存储器区域。该池是被指定为存储锁定的存储器地址的数据结构对象。响应于锁定地址,处理器可从存储器取回数据并将地址和数据添加到锁定的地址的那个池。当处理器将地址解锁时,处理器可从该池移除地址,并将数据(如果被修改)写回到存储器。如果另一处理器试图获取存储器区域,则另一处理器可首先搜索该池以确定所请求的存储器区域是否匹配在该池中的地址。在这种情况下,未完成的锁定的数量由该池的尺寸限制。
与使用锁定/解锁指令相关联的一个问题是,如果处理器锁定存储器区域但稍后未能将它解锁,则解锁的失败可能使处理器的性能降低(或引起在程序的执行中的失败)。如果在锁定指令和解锁指令的执行之间的时间间隔超过预定时间间隔,则类似的降级/失败可能出现。这些情况可能通过编程错误而不注意地出现,或由恶意攻击故意引起。因此,对锁定/解锁指令的访问可被限制到已知的代码序列。在一个实施方式中,在原子原语中构建锁定/解锁指令对。因此,调用原子原语可确保实施锁定和解锁指令。
有可能失败的锁定指令是可能的。这个失败可由指示成功或失败的由锁定指令返回的值指示。可替换地,在失败时,程序可开始执行来自可替换路径的代码。在一个实施方式中,可以用与分支指令类似的方式选择这个可替换路径。在另一实施方式中,锁定的失败可作为异常被处理,且可替换路径可以是异常处理程序的实施。
在一个实施方式中,操作***可提供原子原语的库,其使用锁定/解锁指令来实现、被实现和测试以满足所锁定的每个存储器区域被保证被解锁的要求,在锁定指令的执行和解锁指令的执行之间有足够小的时间延迟。限制可包括,使用锁定/解锁指令的唯一方式是调用原子原语之一。此外,这个限制可能是合理地有效的,以最小化使用原子操作的开销。
在一个实施方式中,锁定/解锁指令可被实现为特权指令。特权指令是可由操作***执行的指令或某个其它特权和被信任的代码。在一些实现中,可结合快速特权逐步升级机制(例如DEC Aplha CALL_PAL或x86SYSCALL或SYSENTER)来使用特权锁定/解锁指令。
虽然关于有限数量的实施方式描述了本公开,但本领域中的技术人员将从那里认识到很多修改和变化。意图是所附权利要求涵盖落在本公开的真实精神和范围内的所有这样的修改和变化。
设计可经历从创建到模拟到制造的各种阶段。表示设计的数据可以用很多方式表示该设计。首先,如在模拟中有用的,可使用硬件描述语言或另一功能描述语言来表示硬件。此外,可在设计过程的一些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,大部分设计在某个阶段达到以硬件模型表示各种装置的物理放置的数据的级别。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是规定在掩模的不同掩模层上的用于产生集成电路的各种特征的存在或缺乏的数据。在设计的任何表示中,数据可存储在任何形式的机器可读介质中。存储器或磁性或光学存储装置(例如磁盘)可以是机器可读介质以存储经由光波或电波传输的信息,光波或电波被调制或以另外方式被生成以传输这样的信息。当指示或携带代码或设计的电载波在电信号的拷贝、缓存或重新传输被执行的程度上被传输时,新拷贝被制造。因此,通信提供商或网络提供商可在有形的机器可读介质上至少临时地存储体现本公开的实施方式的技术的物品,例如被编码到载波内的信息。
如本文使用的模块指硬件、软件和/或固件的任何组合。作为例子,模块包括硬件,例如微控制器,其与非临时介质相关联以存储适合于由微控制器执行的代码。因此,对模块的引用在一个实施方式中指硬件,其特别地被配置成识别和/或执行要在非临时介质上保持的代码。此外,在另一实施方式中,模块的使用指包括代码的非临时介质,代码特别适合于由微控制器执行以执行预定操作。而且如可被推断出的,在又一实施方式中,术语“模块”(在这个例子中)可以指微控制器和非临时介质的组合。经常地,被示为分离的模块边界通常改变并可能重叠。例如,第一和第二模块可共享硬件、软件、固件或其组合,同时可能保留某个独立的硬件、软件或固件。在一个实施方式中,术语“逻辑”的使用包括硬件,例如晶体管、寄存器或其它硬件,例如可编程逻辑装置。
短语“被配置成”的使用在一个实施方式中指布置、放置在一起、制造、提供出售、导入和/或设计设备、硬件、逻辑或元件以执行所指定或确定的任务。在这个例子中,如果未正在操作的设备或其元件被设计、耦合和/或互连以执行指定任务,其仍然“被配置成”执行所述指定任务。作为纯粹示例性的例子,逻辑门可在操作期间提供0或1。但“被配置成”向时钟提供使能信号的逻辑门不包括可提供1或0的每个潜在逻辑门。替代地,逻辑门是以某种方式耦合的逻辑门,使得在操作期间1或0输出启用时钟。再一次注意,术语“被配置成”的使用并不需要操作,但替代地聚焦于设备、硬件和/或元件的潜伏状态,其中在潜伏状态中,当设备、硬件和/或元件正在操作时,设备、硬件和/或元件被设计成执行特定的任务。
此外,短语“以”、“能够”和/或“可操作来”的使用在一个实施方式中指被设计成以特定的方式实现设备、逻辑、硬件和/或元件的使用的一些设备、逻辑、硬件和/或元件。注意如上面,以、能够或可操作来的使用在一个实施方式中指设备、逻辑、硬件和/或元件的潜伏状态,其中设备、逻辑、硬件和/或元件没有正在操作,但被设计成以特定的方式实现设备的使用。
如在本文使用的值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知的表示。逻辑电平、逻辑值(logic values)或逻辑值(logical values)的使用常常也被称为1和0,其简单地表示二进制逻辑状态。例如,1指高逻辑电平而0指低逻辑电平。在一个实施方式中,存储单元(例如晶体管或闪存单元)也许能够保持单个逻辑值或多个逻辑值。然而,在计算机***中的值的其它表示被使用。例如,十进制数字10也可被表示为910的二进制值和十六进制字母A。因此,值包括能够保持在计算机***中的信息的任何表示。
而且,状态可由值或值的部分表示。作为例子,第一值(例如逻辑一)可表示默认或初始状态,而第二值(例如逻辑零)可表示非默认状态。此外,术语“重置”和“置位”在一个实施方式中分别指默认或已更新的值或状态。例如,默认值可能包括高逻辑值,即,重置,而已更新的值可能包括低逻辑值,即,置位。注意,值的任何组合可用于表示任何数量的状态。
可经由存储在机器可访问、机器可读、计算机可访问或计算机可读介质上的由处理元件可执行的指令或代码来实现上面阐述的方法、硬件、软件、固件或代码的实施方式。非临时机器可访问/可读介质包括提供(即,存储和/或传输)以由机器(例如计算机或电子***)可读的形式的信息的任何机制。例如,非临时机器可访问介质包括:随机存取存储器(RAM),例如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁性或光学存储介质;闪存装置;电气存储装置;光学存储装置;声存储装置;用于保持从临时(传播的)信号(例如载波、红外信号、数字信号)接收的信息的其它形式的存储装置;等等,这些介质与可从那里接收信息的非临时介质区分开。
用于对逻辑编程以执行本公开的实施方式的指令可存储在***中的存储器(例如DRAM、高速缓存器、闪存或其它存储装置)中。此外,指令可经由网络或借助于其它计算机可读介质被分发。因此,机器可读介质可包括用于以由机器(例如计算机)可读的形式存储或传输信息的任何机制,但不限于软盘、光学盘、光盘、只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或有形机器可读存储装置,其在信息通过互联网经由电气、光学、声或其它形式的传播信号(例如载波、红外信号、数字信号等)的传输中被使用。因此,计算机可读介质包括适合于以由机器(例如计算机)可读的形式存储或传输电子指令或信息的任何类型的有形机器可读介质。
在整个该说明书中对“一个实施方式”或“实施方式”的引用意指结合该实施方式所述的特定特征、结构或特性被包括在本公开的至少一个实施方式中。因此,短语“在一个实施方式中”或“在实施方式中”在整个该说明书中的不同地方中的出现并不一定都指同一实施方式。此外,可在一个或多个实施方式中以任何适当的方式组合特定特征、结构或特性。
在前述描述中,关于特定的示例性实施方式给出详细描述。然而,将明显的是,可在不偏离如在所附权利要求中阐述的本公开的更宽的精神和范围的情况下对其做出各种修改和变化。说明书和附图相应地在示例性意义而不是限制性意义上被看待。此外,实施方式和其它示例性语言的前述使用并不一定指同一实施方式或同一例子,但可以指不同和独特的实施方式以及可能同一实施方式。

Claims (18)

1.一种处理器,包括:
高速缓存器,所述高速缓存器包括缓存行;
执行电路,其执行原子原语,其中所述原子原语是在硬件中实现的并且在所述处理器的指令集架构ISA中定义,所述原子原语包括内置操作以:
响应于执行读取指令以从存储单元取回数据项,使得将所述数据项的拷贝存储在所述缓存行中;
执行锁定指令以使高速缓存控制器将所述缓存行锁定到所述处理器,其中为了锁定所述缓存行,所述高速缓存控制器将所述缓存行中锁定状态标记置位并且阻止其他处理器修改在所述存储单元处存储的所述数据项;
确定所述锁定指令的执行是否是成功的;
响应于确定所述锁定指令的执行是成功的,执行以下:
保证所述存储单元被锁定到所述处理器,直到完成执行解锁指令;并且
在所述缓存行锁定到所述处理器时执行至少一个指令;以及
响应于确定所述锁定指令的执行失败,执行以下:
返回指示所述执行失败的状态标记;
分支到预先确定的存储器地址;并且
触发异常以通知异常处理程序;以及以及
执行解锁指令以使高速缓存控制器从所述处理器释放对所述缓存行的锁定。
2.如权利要求1所述的处理器,其中所述高速缓存器是L1数据高速缓存器或L2数据高速缓存器之一。
3.如权利要求1所述的处理器,其中与所述处理器相关联的高速缓存控制器:
确定所述缓存行在缓存一致性协议下在独占状态中;以及
响应于确定所述缓存行在所述独占状态中,将所述缓存行标记为锁定到所述处理器。
4.如权利要求1所述的处理器,其中所述执行电路响应于将所述缓存行中的锁定状态标记置位,将所述缓存行标记为锁定到所述处理器。
5.如权利要求4所述的处理器,其中为了从所述处理器释放所述缓存行,所述高速缓存控制器使在所述缓存行中的锁定状态标记复位。
6.如权利要求1所述的处理器,还包括:
识别对由第二处理器访问所述缓存行的请求;以及
使高速缓存控制器延迟允许由所述第二处理器对所述缓存行的访问,直到所述执行电路完成所述至少一个指令的执行为止。
7.如权利要求1所述的处理器,其中高速缓存控制器访问池以存储对应于锁定的缓存行的多个存储器地址,以及其中为了将所述缓存行锁定到所述处理器,所述高速缓存控制器将与所述缓存行相关联的存储器地址放置在所述池中。
8.如权利要求7所述的处理器,其中所述高速缓存控制器从所述池移除所述存储器地址以解锁所述缓存行。
9.如权利要求1所述的处理器,其中所述锁定指令是操作***的特权指令,以及其中所述解锁指令是所述操作***的特权指令。
10.如权利要求9所述的处理器,其中所述处理器支持操作***以调用所述原子原语。
11.如权利要求1所述的处理器,其中当所述缓存行被锁定到所述处理器时,除了所述处理器以外的至少一个处理器被拒绝访问所述缓存行。
12.如权利要求1所述的处理器,其中当所述缓存行被解锁时,第二处理器访问所述缓存行。
13.一种执行原子原语的方法,其中所述原子原语是在硬件中实现的并且在所述处理器的指令集架构ISA中定义,所述原子原语包括内置操作,其包括:
响应于执行读取指令以从存储单元取回数据项,使得将所述数据项的拷贝存储在高速缓存器的缓存行中;
执行锁定指令以使高速缓存控制器将所述缓存行锁定到所述处理器,其中为了锁定所述缓存行,所述高速缓存控制器将所述缓存行中锁定状态标记置位并且阻止其他处理器修改在所述存储单元处存储的所述数据项;
确定所述锁定指令的执行是否是成功的;
响应于确定所述锁定指令的执行是成功的,执行以下:
保证所述存储单元被锁定到所述处理器,直到完成执行解锁指令;并且
在所述缓存行锁定到所述处理器时执行至少一个指令;以及响应于确定所述锁定指令的执行失败,执行以下:
返回指示所述执行失败的状态标记;
分支到预先确定的存储器地址;并且
触发异常以通知异常处理程序;以及
执行解锁指令以使所述高速缓存控制器从所述处理器释放对所述缓存行的锁定。
14.如权利要求13所述的方法,其中所述高速缓存器是L1数据高速缓存器或L2数据高速缓存器之一。
15.如权利要求13所述的方法,还包括:
确定所述缓存行在缓存一致性协议下在独占状态中;以及
响应于确定所述缓存行在所述独占状态中,将所述缓存行标记为锁定到所述处理器。
16.如权利要求13所述的方法,其中将所述缓存行标记为锁定到所述处理器还包括使在所述缓存行中的锁定状态标记置位。
17.如权利要求16所述的方法,其中响应于完成所述至少一个指令的执行,使在所述缓存行中的所述锁定状态标记复位。
18.如权利要求13所述的方法,还包括:
响应于识别出对由第二处理器访问所述缓存行的请求,延迟允许由所述第二处理器对所述缓存行的访问,直到所述执行单元完成多个指令的执行。
CN201780071245.5A 2016-12-15 2017-12-15 使用缓存行锁定来实现原子原语 Active CN110312997B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662434525P 2016-12-15 2016-12-15
US62/434525 2016-12-15
US15/841974 2017-12-14
US15/841,974 US11157407B2 (en) 2016-12-15 2017-12-14 Implementing atomic primitives using cache line locking
PCT/US2017/066670 WO2018112340A1 (en) 2016-12-15 2017-12-15 Implementing atomic primitives using cache line locking

Publications (2)

Publication Number Publication Date
CN110312997A CN110312997A (zh) 2019-10-08
CN110312997B true CN110312997B (zh) 2023-11-10

Family

ID=62559360

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780071245.5A Active CN110312997B (zh) 2016-12-15 2017-12-15 使用缓存行锁定来实现原子原语

Country Status (5)

Country Link
US (1) US11157407B2 (zh)
EP (1) EP3555752A4 (zh)
KR (1) KR20190108109A (zh)
CN (1) CN110312997B (zh)
WO (1) WO2018112340A1 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10223208B2 (en) * 2013-08-13 2019-03-05 Sandisk Technologies Llc Annotated atomic write
US10504270B2 (en) 2016-12-22 2019-12-10 Apple Inc. Resource synchronization for graphics processing
US20200356485A1 (en) 2019-05-09 2020-11-12 International Business Machines Corporation Executing multiple data requests of multiple-core processors
US11681567B2 (en) * 2019-05-09 2023-06-20 International Business Machines Corporation Method and processor system for executing a TELT instruction to access a data item during execution of an atomic primitive
US11321146B2 (en) 2019-05-09 2022-05-03 International Business Machines Corporation Executing an atomic primitive in a multi-core processor system
CN110941449A (zh) * 2019-11-15 2020-03-31 新华三半导体技术有限公司 Cache块处理方法、装置及处理器芯片
US11321799B2 (en) * 2019-12-24 2022-05-03 Intel Corporation Compiler assisted register file write reduction
US11436187B2 (en) 2020-10-20 2022-09-06 Micron Technology, Inc. Method of notifying a process or programmable atomic operation traps
US11586439B2 (en) 2020-10-20 2023-02-21 Micron Technology, Inc. Detecting infinite loops in a programmable atomic transaction
US12020062B2 (en) 2020-10-20 2024-06-25 Micron Technology, Inc. Method of executing programmable atomic unit resources within a multi-process system
US11740929B2 (en) 2020-10-20 2023-08-29 Micron Technology, Inc. Registering a custom atomic operation with the operating system
CN113067527A (zh) * 2021-03-31 2021-07-02 实时侠智能控制技术有限公司 适于执行电机控制的控制器和控制***
CN117971728A (zh) * 2024-03-29 2024-05-03 北京象帝先计算技术有限公司 缓存器及缓存控制方法、集成电路***、电子组件及设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101542437A (zh) * 2005-12-07 2009-09-23 微软公司 软件事务性存储器操作的优化
CN104508645A (zh) * 2012-07-31 2015-04-08 惠普发展公司,有限责任合伙企业 用于使用多个子锁来控制对具有读取器-写入器锁的共享数据结构的访问的***和方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06348597A (ja) * 1993-06-08 1994-12-22 Hitachi Ltd キャッシュ制御方法および回転形記憶装置
US6629214B1 (en) 1999-11-09 2003-09-30 International Business Machines Corporation Extended cache coherency protocol with a persistent “lock acquired” state
US6463511B2 (en) * 2000-12-29 2002-10-08 Intel Corporation System and method for high performance execution of locked memory instructions in a system with distributed memory and a restrictive memory model
US7080211B2 (en) 2002-02-12 2006-07-18 Ip-First, Llc Microprocessor apparatus and method for prefetch, allocation, and initialization of a cache line from memory
US6816952B1 (en) * 2002-05-31 2004-11-09 Unisys Corporation Lock management system and method for use in a data processing system
US7080213B2 (en) * 2002-12-16 2006-07-18 Sun Microsystems, Inc. System and method for reducing shared memory write overhead in multiprocessor systems
US7873785B2 (en) 2003-08-19 2011-01-18 Oracle America, Inc. Multi-core multi-thread processor
US7254678B2 (en) * 2005-03-17 2007-08-07 International Business Machines Corporation Enhanced STCX design to improve subsequent load efficiency
DE112006002237B4 (de) 2005-08-23 2023-04-06 Advanced Micro Devices, Inc. Verfahren zur selbstinitiierenden Synchronisierung in einem Computersystem
US20070150658A1 (en) * 2005-12-28 2007-06-28 Jaideep Moses Pinning locks in shared cache
US8244988B2 (en) * 2009-04-30 2012-08-14 International Business Machines Corporation Predictive ownership control of shared memory computing system data
US9086973B2 (en) * 2009-06-09 2015-07-21 Hyperion Core, Inc. System and method for a cache in a multi-core processor
US8296524B2 (en) * 2009-06-26 2012-10-23 Oracle America, Inc. Supporting efficient spin-locks and other types of synchronization in a cache-coherent multiprocessor system
US9015436B2 (en) * 2011-08-22 2015-04-21 Intel Corporation Performing an atomic operation without quiescing an interconnect structure
US10067960B2 (en) * 2015-06-04 2018-09-04 Microsoft Technology Licensing, Llc Controlling atomic updates of indexes using hardware transactional memory
US10102000B2 (en) * 2016-04-01 2018-10-16 Intel Corporation Apparatus and method for non-serializing split locks
US10599485B2 (en) * 2018-01-31 2020-03-24 Microsoft Technology Licensing, Llc Index structure using atomic multiword update operations

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101542437A (zh) * 2005-12-07 2009-09-23 微软公司 软件事务性存储器操作的优化
CN104508645A (zh) * 2012-07-31 2015-04-08 惠普发展公司,有限责任合伙企业 用于使用多个子锁来控制对具有读取器-写入器锁的共享数据结构的访问的***和方法

Also Published As

Publication number Publication date
US11157407B2 (en) 2021-10-26
CN110312997A (zh) 2019-10-08
EP3555752A1 (en) 2019-10-23
US20180173625A1 (en) 2018-06-21
EP3555752A4 (en) 2020-08-12
WO2018112340A1 (en) 2018-06-21
KR20190108109A (ko) 2019-09-23

Similar Documents

Publication Publication Date Title
CN110312997B (zh) 使用缓存行锁定来实现原子原语
US10949210B2 (en) Shadow cache for securing conditional speculative instruction execution
US8078807B2 (en) Accelerating software lookups by using buffered or ephemeral stores
US8627048B2 (en) Mechanism for irrevocable transactions
US8838908B2 (en) Using ephemeral stores for fine-grained conflict detection in a hardware accelerated STM
US7958319B2 (en) Hardware acceleration for a software transactional memory system
US9594565B2 (en) Hardware acceleration of a write-buffering software transactional memory
US8132158B2 (en) Mechanism for software transactional memory commit/abort in unmanaged runtime environment
US20070143287A1 (en) Coordinating access to memory locations for hardware transactional memory transactions and software transactional memory transactions
US20110099335A1 (en) System and method for hardware acceleration of a software transactional memory
BRPI1005259A2 (pt) vetores simd sincronizadores
JP2011529603A (ja) バーチャル化可能な高度な同期機構
US7620954B2 (en) Mechanism for handling load lock/store conditional primitives in directory-based distributed shared memory multiprocessors
US10417128B2 (en) Memory coherence in a multi-core, multi-level, heterogeneous computer architecture implementing hardware-managed and software managed caches
US7080213B2 (en) System and method for reducing shared memory write overhead in multiprocessor systems
US9027009B2 (en) Protecting the integrity of binary translated code
US11960922B2 (en) System, apparatus and method for user space object coherency in a processor

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