CN101183338A - 本地片载系统和在本地片载系统中维持存储一致性的方法 - Google Patents

本地片载系统和在本地片载系统中维持存储一致性的方法 Download PDF

Info

Publication number
CN101183338A
CN101183338A CNA200710180627XA CN200710180627A CN101183338A CN 101183338 A CN101183338 A CN 101183338A CN A200710180627X A CNA200710180627X A CN A200710180627XA CN 200710180627 A CN200710180627 A CN 200710180627A CN 101183338 A CN101183338 A CN 101183338A
Authority
CN
China
Prior art keywords
soc
memory location
local
request
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA200710180627XA
Other languages
English (en)
Other versions
CN101183338B (zh
Inventor
庞舫
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.)
Avago Technologies General IP Singapore Pte Ltd
Original Assignee
Zyray Wireless 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 Zyray Wireless Inc filed Critical Zyray Wireless Inc
Publication of CN101183338A publication Critical patent/CN101183338A/zh
Application granted granted Critical
Publication of CN101183338B publication Critical patent/CN101183338B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F12/082Associative directories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • 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/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture

Abstract

本发明涉及本地SOC和在本地SOC中维持存储一致性的方法,所述SOC是分布式共享存储系统的一部分。本发明提供一种本地SOC单元,其包括本地控制器以及片载存储器。其中,所述本地控制器响应远程SOC的访问存储位置的请求,确定所述本地SOC是否独占所述存储位置,如果所述本地SOC独占所述存储位置,就发送所述存储位置的数据,并将条目存储到所述片载存储器中,所述条目表示所述远程SOC请求所述存储位置的数据。该条目表示远程SOC的请求是否独占该存储位置。该条目也包括用于将远程SOC表示为请求者的域。所请求的存储位置可以是外接到本地SOC单元,或者外接到本地SOC单元中。

Description

本地片载系统和在本地片载系统中维持存储一致性的方法
有关申请的交叉参考
本申请涉及同一天申请的、名称为“Communication in Cluster System”(代理案号1875.9040001)美国专利申请____;以及同一天申请的、名称为“Hardware Memory Locks”(代理案号1875.904002);以及同一天申请的、名称为“Global Address Space Management”(代理案号1875.9040002)。这些申请的全部内容通过引用的方式结合到本说明书中作为本说明书的公开内容。
技术领域
本发明涉及存储系统,更具体地说,涉及存储管理。
背景技术
片载系统(SOC)单元通常将电子系统的多个组件集成到单个芯片上。例如,在一块芯片上包括数字信号、模拟信号、复合信号,常常具有射频功能。SOC单元经常应用在嵌入式系统领域。但是,很多SOC单元专用于特定的应用,如果用到其他的应用或者配置,一些组件将不再用到。例如,在一种配置中用到SOC中的节点控制器和片载存储器,在其他配置中却没有用到。除了SOC单元之外,存储系统一般也是配置用于单应用,不适合用在其他的配置中。
因此,需要一种方法和系统来克服上述的缺陷。
发明内容
本发明涉及维护片载系统(SOC)中的高速缓存的一致性的方法、系统和计算机程序,所述SOC是分布式共享存储系统的一部分。本发明提供一种本地SOC单元,其包括本地控制器以及片载存储器。其中,所述本地控制器响应远程SOC中的远程控制器的访问存储位置的请求,确定所述本地SOC是否独占所述存储位置,如果所述本地SOC独占所述存储位置,就发送所述存储位置的数据,并将条目存储到所述片载存储器中,所述条目表示所述远程SOC已经请求所述存储位置的数据。该条目表示远程SOC的请求是否独占该存储位置。该条目也包括用于将远程SOC表示为请求者的域。所请求的存储位置可以是外接到本地SOC单元,或者外接到本地SOC单元中。
本发明的方法用于维持作为共享存储系统的一部分的本地SOC中的存储一致性。本发明包括接收远程SOC的远程控制器访问存储位置的请求;向所述远程SOC的远程控制器发送所请求的所述存储位置中的数据。本方法还包括将条目存储在本地片载存储器中,表明远程SOC已经访问过所请求数据。
根据本发明的一方面,提供一种本地SOC(片载系统)单元,其特征在于,包括:
本地控制器;以及
片载存储器;
其中,所述本地控制器响应远程SOC的远程控制器的访问存储位置的请求,确定所述本地SOC是否独占所述存储位置,如果所述本地SOC独占性占有所述存储位置,就发送所述存储位置的数据,并将条目存储到所述片载存储器中,所述条目表示所述远程SOC已经产生请求。
优选地,所述条目标识所述请求是否请求独占所述存储位置。
优选地,所述条目中的一个特定域存储用于标识所述远程SOC的数据。
优选地,所述域中的每一位对应于共享存储系统的中的SOC,所述共享存储系统包括多个SOC;
如果某位设为1,则表示该位所对应的SOC已经请求访问所述存储位置。
优选地,所述单元还包括连接到本地SOC外接存储器的多个处理器以及存储控制器。
优选地,所述本地SOC和远程SOC通过高速缓存一致性非统一存储访问(CCNUMA)的可扩展一致性接口连接。
优选地,所述片载存储器是静态随机访问存储器(SRAM),所述本地控制器是节点控制器。
根据本发明的一方面,提供在本地SOC中维持存储一致性的方法,所述本地SOC是共享存储系统的一部分,所述方法包括:
接收远程SOC的远程控制器访问存储位置的请求;
从所述存储位置发送被请求的数据给所述远程SOC的远程控制器;以及
将标识所述远程SOC的条目存储在本地片载存储器中。
优选地,所述请求是独占请求,所述独占请求允许所述远程SOC远程修改存储在所述存储位置的数据副本。
优选地,所述方法还包括通过本地节点控制器接收所述请求。
优选地,所述片载存储器是静态随机访问存储器(SRAM)。
优选地,所述存储位置的地址是共享全局存储空间的一部分,所述共享全局存储空间包括所述共享存储系统的所有存储单元的存储地址。
优选地,所述条目包括显示所述访问存储位置的请求是读取存储位置的数据还是独占该存储位置的域。
优选地,所述条目包括用于显示所述条目是否包含有效数据的域。
优选地,所述条目包括用于存储被请求的存储位置的地址或者部分地址的域。
优选地,所述部分地址是被请求的存储地址的标签。
优选地,条目中的域存储用于标识所述远程SOC的数据。
优选地,所述域的每位对应于共享存储系统的中的SOC,所述共享存储系统包括多个SOC;
如果某位设为1,则表示该位所对应的SOC已经请求访问所述存储位置。
优选地,所述方法还包括在发送步骤之前,确定所述本地SOC是否独占所请求的数据。
优选地,所述本地SOC和远程SOC通过高速缓存一致性非统一存储访问(CCNUMA)的可扩展一致性接口连接。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是示范性的片载系统(SOC)的示意图;
图2A是本发明的一个实施例中,示范的SOC和关联的全局地址空间的示意图;
图2B是本发明的一个实施例中,使用全局地址空间的SOC的节点控制器执行步骤的流程图;
图3A是示范性的共享存储系统300;
图3B是根据本发明的一个实施例的在共享存储系统中维持存储一致性的示意图;
图3C1-3C2是本发明的一个实施例中,在共享存储系统中为独占请求维护存储一致性的示意图;
图3D是本发明的一个实施例中,共享存储系统中本地SOC执行的步骤的流程图;
图3E是本发明的一个实施例中,共享存储系统的本地SOC和/或远程SOC执行的步骤的流程图;
图3F是本发明的一个实施例中,本地SOC在接收到存储访问请求时执行的步骤的流程图;
图4A是示范性集群系统;
图4B是本发明的一个实施例的“拉(pull)”模式发消息示意图;
图4C是本发明的一个实施例的“推(push)”模式发消息的示意图;
图4D是本发明的一个实施例中,执行pull模式的本地SOC执行的步骤的流程图;
图4E是本发明的一个实施例中,执行pull模式的远程SOC执行的步骤的流程图;
图4F是本发明的一个实施例中,执行push模式的远程SOC执行的步骤的流程图;
图5A是本发明的一个实施例中,存储位置与存储锁之间的关联的示意图;
图5B是示范性锁条目的示意图;
图5C1-5C3是本发明的一个实施例中,测试-设置模式中存储锁的操作的示意图;
图5C4是本发明的一个实施例中,测试-设置模式下节点控制器执行的操作的示意图;
图5D1-5D3是本发明的一个实施例中,定序(sequencer)模式的存储锁的操作的示意图;
图5D4是本发明的一个实施例中,定序模式的节点控制器执行的步骤的流程图;
图5D5是本发明的一个实施例中,请求者在定序模式下执行的一些步骤的流程图。
本说明书将结合这些附图来描述本发明。附图中,相同的附图标记用于表示相同或者功能相似的部件。另外,附图标记中最左边的数字表示最先出现该附图标记的附图。
具体实施方式
本说明书描述多用适用存储器的方法和系统。具体地,在不同的应用中,让SOC的片载存储器实现不同目的的方法和系统。
本说明书公开了结合了本发明的特征的一个或多个实施例。所公开的实施例仅仅用于举例,本发明的范围不限于所公开的实施例。本发明的范围由权利要求决定。
本说明书中,“一个实施例”、“实施例”、“一个示范的实施例”等表示所述的实施例包括特定的特征、结构或者特性,但是不要求每个实施例都包括该特定的特征、结构或者特性。另外,“一个实施例”、“实施例”、“一个示范的实施例”等不必须指向相同的实施例。另外,当结合一个实施例描述特定的特征、结构或者特性时,不管是否明确指出,都可认为将这些特征、结构或者特性结合到其他实施例是本领域的公知技术。
示范的片载系统(SOC)
在详细描述本发明的实施例之前,描述实施本发明的示范环境是有帮助的。在一个示范环境中,在多处理器的片载系统(SOC)单元中实施本发明,该SOC包括片载存储器,并连接外部存储器。图1示出了SOC 100a,SOC 100a包括k个处理器110a-k、存储控制器(MC)102a、节点控制器(NC)104a、片载存储器(OCM)108a和外部存储器(EM)106a。在一个替换实施例中,存储控制器102a和节点控制器104a可组合成全局控制器112a,全局控制器112a组合了存储控制器102a和节点控制器104a的功能。处理器110a-k中,每个处理器都包括关联的高速缓存(未示出)。处理器110a-k可用于并发多处理配置中。处理器110a-k通过高速通道或者互连总线如总线114a绑在一起,能够共同分担工作量或者独立运行。可配置处理器110a-k,使得在一个处理器不起作用时,其他的处理器能够接替它。存储控制器114a通常用于控制外部处理器106a,以及在未安装高速缓存控制器(未示出)时,用于控制处理器110a-k的高速缓存。存储控制器114a通常包括地址解码器(未示出),地址解码器产生为控制存储器如EM 106a的存储器和处理器110a-k的高速缓存(未示出)的信息读写所需要的信号。MC 114a也可将SOC 110a的其他组件连接到外部存储器106a,例如通过总线114a。NC 104a用于与处理器110a-k通信。NC 104a可用作与其他SOC单元或者SOC单元的处理器通信的接口。节点控制器104a可通过高速总线(未示出)如PCI-E或者HT连接到其他的SOC单元,以实现快速的SOC内部通信。节点控制器114a也包括地址解码器(未示出),地址解码器产生为控制OCM 108的信息读写所需要的信号。在一个实施例中,NC 104a可用于为各种用途配置和使用OCM 108a。例如,在集群配置(cluster configuration)中,在保持EM 106a的完整性和安全性的同时,SOC 100a用作集群内SOC单元之间通信的消息信箱。在高速缓存一致的非统一性存储访问系统中,OCM 108a可用于维持高速缓存的一致性。OCM 108a也可以配置为EM 106a中的存储位置的存储锁(store lock)。OCM 108a也可以用作全局地址空间的一部分,作为快速存取存储器。在另一个实施例中,在需要时,全局控制器112a或者MC 102a可配置或者控制OCM 108a。
为了清楚和容易地说明,没有详细地示出SOC 100a的所有功能模块,因为这些项目是本领域内的技术人员公知的。进一步地,应当意识到,可使用SOC 100a的相似或者替代功能模块来实现本发明的实施例,但是这并不脱离本发明的范围。后文将对本发明的实施例的NC 104a和OCM 108a的示范配置进行详细阐述。这种示范配置不局限于OCM 108a或者NC 104a,这种配置可应用到其他的环境中。另外,对本说明描述的实施例进行变化和修改对本领域的技术人员是显而易见的。
全局地址空间管理
图2A是根据本发明的一个实施例的SOC 100a和全局地址空间200的示意图。全局地址空间200表示处理器110a-k访问存储器地址的地址范围。处理器的数目k是任意的。通常,处理器110a-k使用的地址空间也包括EM 106a的外部存储地址202,由存储控制器102a处理所有的存储访问。在典型的配置中,OCM 108a属于不同的地址空间。在这个实施例中,OCM 108a的地址204是全局地址空间200的一部分,全局地址空间200包括EM 106a的外部存储地址204。在一个实施例中,全局地址空间200的OCM地址204由节点控制器104a的地址解码器(未示出)解码,EM地址202由存储控制器102a的地址解码器(未示出)解码。使用全局地址空间能够更快地使用OCM 108a,而不需要分配和解码不同地址空间的存储地址。另一个优点是更大的连续地址空间。根据本实施例,全局地址空间从0扩展到2Z,其中,0到2X是EM地址202,2X到2Z是OCM地址204(其中,x和z是正数,且z大于x)。例如,如果EM 108是1G比特(GB),则EM地址范围是0到(230-1)(也就是说,x是30)。如果OCM 108a是4M比特(MB),则全局地址空间中的OCM地址是230到(232-1)(也就是说z是32)。因此,通过组合EM地址202和OCM地址204,全局地址200则从0到(232-1),而不是0到(230-1)。所以,如果一些应用程序要求快速的存储访问,它们可通过地址范围2x到(2z-1)来使用OCM 108a,例如本实施例中,从230到(232-1)。
如图2A所示,存储控制器102a和节点控制器104a接收带有相关联地址的读写请求,例如来自处理器110a-k的读写请求。节点控制器104a判断该地址是否落入期地址范围2x到(2z-1)。如果地址落入2x到(2z-1)的范围,那么,存储控制器102a解码所提供的地址,并访问OCM 108a中对应的存储位置,执行所请求的读或写。如果地址落入范围0到(2x-1),那么存储控制器102a解码所提供的地址,以及访问外部存储器106a中的对应存储位置,执行请请求的读或写。
图2B是本剧本发明的一个实施例中,使用全局地址的SOC执行的步骤的流程图206。在一个实施例中,由SOC单元中的节点控制器执行这些步骤。
步骤208中,接收到访问存储位置的请求。该请求包括读或写请求的存储位置的地址,如果是写请求,还包括将要写入的数据。
步骤210中,确定步骤208中接收的请求地址是否与片载存储位置对应。
步骤212中,如果确定该地址与片载存储位置对应,则解码该地址。通常由节点控制器的地址解码器来解码地址。地址的解码导致将地址转换成访问片载存储器所需的电子信号。
步骤214中,根据步骤212中的解码地址,按照步骤208中接收的指令,访问存储位置并读取或写入数据。
在可选的步骤216中,如果步骤208接收到请求是从存储器读取数据,那么,就给该请求提供被请求的数据。在一个实施例中,如果步骤208中接收的是写请求,那么,在完成写操作时给请求服务提供写确认。
步骤218中,如果步骤210中确定地址与外部存储位置对应,则该请求将发往存储控制器。存储控制器中的地址解码器解码地址,访问外部存储位置,根据步骤208接收的存储访问请求的要求,提供被请求的数据或者写确认。
后文将阐述共享存储配置的节点控制器和片载系统的示范实施例。
典型的共享存储系统
图3A是示范性共享存储系统300。在一个实施例中,共享存储系统300是高速缓存相关的非一致性存取(CC-NUMA)系统。系统300包括通过高速互联302如PCI-E或者HT连接的n个SOC单元100a-n。SOC单元的数目n以及SOC单元中的处理器数目是任意的。在一个实施例中,节点控制器104a-n通过互联302连接,从而提供SOC 100a-j之间的通信接口。
处理器100a-n共享全局地址空间。外部存储器106a-n和/或每个SOC的处理器高速缓存映射到全局地址空间中。在本发明的实施例中,OCM 108a-n没有映射到全局地址空间中。在共享存储系统中300中,在多个SOC中维护由多个处理器共享的存储器的高速缓存相关性是缓慢的,处理器需要显著的处理开销。后文介绍的本发明的实施例提供一种新的解决方案,通过NC 104使用OCM 108作为高速缓存目录,以追踪系统300中的共享数据的位置。如后文所述,与OCM 108a-n对应的SOC 110a-n将每个OCM 108a-n用作目录,以追踪系统300中的共享数据。OCM 108a通过存储共享存储的位置的条目来追踪共享数据。在一个实施例中,每个条目包括但是不限于下面的域:
域Valid(V),用于表示远程节点是否具有有效的数据副本;
域Dirty(d),用于表示发送到远程节点的数据是否被该远程节点修改,也就是说,远程节点是否对数据做出“独占”请求。
域Tag,用于标识被请求的本地存储位置;以及
域Vector(vec),用于标识请求存储位置中的数据的远程SOC。例如,vec可包括多个位,每个位对应系统300中的SOC。在图3A的实施例中,如果SOC 100j请求数据,那么,vec的第j位就设为1,表示SOC 100j请求了数据。在一个替换实施例中,通过将vec域的第T位设为1,可在vec域中将SOC 100j的处理器PT表示为请求的发起人。
在后文参考图3A的示范例子中,SOC 100a称为与EM 106的本地存储位置对应的本地SOC,其他所有的SOC100b-100n称为远程SOC。OCM 108a的条目用于掌握哪个SOC具有与EM 106a的存储位置B对应的数据的副本。系统300的存储位置B中具有的数据副本可以与系统300的SOC的一样多。因此系统300具有n个SOC,所以系统300的存储位置B可以具有n个数据副本。数据的共享副本具有相同的值。当SOC将要修改具有共享数据的存储位置时,它必须获得存储位置的独占,并且其他所有的缓存副本都必须被无效。示范性的例子如下:
当远程SOC 100j向本地SOC 100a发出读取EM 106a的存储位置B的请求时,节点控制器104a检查系统108a中是否存在与存储位置B对应的具有dirty位的条目。如果OCM 108a中不存在这样的条目,那么,本地存储器106a具有有效数据,节点控制器104a将存储106a的数据提供给进行请求的远程SOC 100j。如果存在dirty副本,例如对于SOC 100n,在OCM 108a中存在对应的dirty条目,该条目中vector域的第n位设置成1。节点控制器104a向当前所有者SOC 100n发出回写命令,以提供位置B的最新数据。SOC 100n返回数据之后,节点控制器104a将数据回写到本地外部存储器106a,同时将数据提供给对应的SOC 100j。OCM 108a条目如下修改:dirty位设为0,vector域的第j和第n位设为1。这表示SOC 100j和100n具有共享的、存储位置B的干净的数据副本,它们的值与EM 106a的存储副本相同。
当SOC 100a的本地处理器发出读请求时,OCM 108a的条目被检查。如果没有远程dirty副本存在,那么,本地存储器106a就具有有效副本,节点控制器104a提供该数据。如果存在远程dirty副本,节点控制器104a向被请求的存储位置的当前SOC占有者发出回写请求,通过返回数据来更新本地存储器106a,以及通过将dirty位重设位0来修改对应的OCM 108a条目。
当远程SOC 100j向本地SOC 100a发出写EM 106a的存储位置B的请求时,节点控制器104a就确保SOC 100j具有一个且仅具有一个存储位置B的副本,以保证数据一致性。节点控制器104a是否存在OCM 108a条目。如果不存在位置B的OCM 108a条目,节点控制器104a就将本地存储EM 106a的数据副本提供给进行请求的SOC 100j。如果存在OCM 108a目录条目,且没有设置dirty位,这就表示系统300中存在共享状态的干净副本。在这种情况之下,节点控制器104a向那些SOC发送无效信号,这些SOC的vec域的对应位具有值1。这些SOC将无效它们本地缓存的存储位置B的副本,并在完成无效后向本地SOC 100a发送确认。本地SOC 100a负责收集所有的无效确认。在所有的远程共享副本都无效之后,本地SOC控制器104a将本地存储EM 106a的数据副本提供给进行请求的SOC 100j。
如果存在OCM 108a条目且该条目的dirty位已设置,这表明系统300存在dirty副本。通过条目的vec域的1来指定当前持有dirty副本的SOC。例如,如果第n位是1,那么SOC 100n是当前所有者,具有本地B的dirty副本。这种情况下,节点控制器104a向SOC 100发出清洗命令。在接收到清洗命令时,SOC 100n回发它的数据副本,并无效其副本。随后,节点控制器104a将接收自SOC 100n的数据副本传送到进行请求的100j。这种情况下,OCM 108a条目被更新,使得只有100j具有dirty状态的副本,就是说,dirty位被设置,且对应的OCM 108a条目的vector只有第j位被设置。这表明SOC 100j在系统300中具有独占的副本。
在SOC 100a的本地处理器发出写请求时,就检查OCM 108a的条目。如果没有条目或者不存在远程dirty副本,则本地存储器106a具有有效副本,且节点控制器104a提供被请求的数据。如果存在远程dirty副本,节点控制器104a向当前的所有者SOC发出清洗请求。如果存在远程共享副本,节点控制器104a向具有副本的远程SOC发出无效。SOC 100a将具有独占的副本,系统300的其他SOC不具有EM 106a中被访问的存储位置B的数据副本。
共享存储管理
图3B示出了根据本发明的一个实施例的共享存储系统300中,在读请求时维持存储相关性的例子。如图3B所示,NC 104j向NC 104a发出读取EM 106a中的存储位置A的请求。例如,该请求是SOC 100j的处理器PR+1110r+1发出。该请求可通过消息或者信号从节点控制器104j发送到节点控制器104a。NC104a响应所接收的来自NC 104j的读取存储位置A的请求,读取存储位置A并通过总线302向NC 104j发送数据。为维持共享数据的存储相关性,NC 104a追踪缓存在其他SOC单元的存储请求的位置。在这个实施例中,NC 104a在OCM 108a中存入一条目304。因为SOC 100j请求数据,所以条目304的vec域的第j位设为1以表明SOC 100j请求数据。在替换的实施例中,vec域的第T位设为1,以将SOC 100j的处理器PT表示为请求的发起者。在图3B所示的实施例中,v设为1以显示该条目是有效的;d设为0,因为SOC 100j的处理器PR+1进行了读请求,且没有修改从存储位置A获得的数据。tag域设为A因为请求了存储位置A的数据。在另一个实施例中,存储在tag域的存储位置的地址可缩写为局部地址,以节省条目304的空间。
图3C1示出了在根据本发明的一个实施例的在共享存储系统300中,在独占请求时维持存储相关性的实施例。
图3C1所示,SOC 100j发送请求,请求独占EM 106a的存储位置B的数据。独占允许100j从存储位置B取得该数据以及修改数据。因此,存储位置B的副本是废弃的。例如,该请求是SOC 100j的处理器PT发出的。该请求可通过消息经由互联302从NC 104j发送到NC 104a。SOC 100a的节点控制器104a响应所接收的来自SOC 100j的节点控制器104j的对存储位置B的独占请求,通过互联302将存储位置B的数据发送到节点控制器104j。为维持相关性,节点控制器104通过在OCM 108a存储条目306以追踪与存储位置B对应的数据的位置。
在图3C1所示的实施例中,v设为1以表示条目是有效的;d设为1,因为请求了独占性占有,并且SOC 100a的存储位置B的副本不是最新的副本;tag设为B,因为请求了存储位置B的数据。在上述的实施例中,因为请求是从SOC 100j发出的,所以vce域的第j位被设为1。在替换的实施例中,通过在vec域中将第T位设为1,将SOC 100j的处理器PT表示为该请求发起者。如果SOC 100a的进程、线程或者处理器打算访问存储器B的数据,请求者通过请求SOC 100j的数据来读取这些数据,如后文结合图3C2所述。
在图3C2是重新取得EM 106a的存储位置B对应的数据的示意图,在上述的实施例中,SOC 100j的NC 104j请求独占这些数据。
在图3C2所示的实施例中,处理器PK请求存储位置B的数据。节点控制器100a查找OCM 108a中与tag B对应的条目306。因为,在图3C1所示的实施例中,SOC 100j的处理器PT请求对存储位置B的数据的独占,所以NC 104a向NC 104j发送请求以发送与EM 106a的存储位置B对应的数据。节点控制器108j访问与存储位置B对应的数据,例如,从处理器高速缓存(未示出)访问,并将数据发送给NC 104a。因为节点控制器108a从SOC 100j重新读取数据,所以它再次更新OCM 108a的条目306,如图3C2所示。
在图3C2所示的实施例中,如果NC 104a请求独占,则v设为0以表明SOC 100j中该条目不再有效,d设为0。如果NC 104a仅仅请求读数据,那么v保持为1,以表明SOC 100j仍然具有有效副本。但是,d设为0以表明SOC100j对所请求的数据,也就是位于SOC 100a和100j的处理器高速缓存共享的相同数据的副本不再具有独占。Tag依然保持为B。
要意识到,图3B、3C1和3C2所示的元件的数目是任意的,正如本领域的技术人员所认识到的,所述数目可根据应用情况进行改变。为便于说明,图3B、图3C1和3C2不再出现互联302。
图3D示出了根据本发明的一个实施例的共享存储系统中,本地SOC在接收到来自远程SOC的访问本地存储位置的请求时执行的流程312。
步骤314中,接收到远程SOC的请求。该请求可由本地节点控制器接收,本地节点控制器与远程SOC的远程节点控制器连接。该请求标识将要被访问的本地SOC的存储位置,以及标识远程SOC请求的数据。该请求也标识远程SOC是否读取存储位置或者独占存储位置的数据。
步骤316中,确定本地SOC是否具有被请求的存储位置的有效副本。如果本地片载存储器存在被请求的存储位置的条目,通过检测该条目来确定数据的有效性。如果本地片载存储器不存在被请求的存储位置的条目,就假定本地存储器具有有效数据。如果存在所述条目,本地SOC就检查dirty位是否已经设置。如果dirty位已经设置,则本地SOC的本地存储器中不具有有效数据。
步骤318中,如果在步骤316中确定本地节点的被请求的存储位置中不具有有效数据,那么本地SOC向具有有效数据的SOC发送请求,让该SOC向本地SOC返回有效数据。如上所述,本地SOC通过检测片载存储的vec域来确定当前SOC是否具有有效数据。
步骤320中,将步骤318接收的数据发送到请求数据的远程SOC。
步骤322中,如果在步骤316中确定本地存储器存在与步骤314中请求的存储位置对应的有效数据,那么,就从步骤314所接收的请求确定该远程节点是否请求独占。
步骤324中,条目由远程SOC存储在对应请求的本地OCM中。例如,如果远程SOC请求独占,就做出条目(如图3C1所示的条目306),其中的dirty位设为1。如果远程SOC仅仅是读请求,就做出条目(如图3B所示的条目304),其中的dirty位设为0。
步骤326中,将请求的存储位置的数据发送到远程SOC。如上所述,这些数据可由本地节点控制器通过总线302发送到远程节点控制器。
图3E示出了根据本发明的一个实施例的共享存储系统中,本地SOC和远程SOC执行的流程。
步骤332中,远程SOC向本地SOC发送请求,请求存储位置的数据。本地节点控制器可接收这种请求,本地节点控制器与远程节点控制器连接。该请求将标识将要访问的本地SOC的存储位置,以及标识做出请求的远程SOC。该请求也标识远程SOC是否仅仅打算读取本地SOC的存储位置,或者要独占存储位置。在一个实施例中,本地SOC和远程SOC共享全局存储地址空间,远程SOC使用典型的加载/存储指令访问本地SOC中的存储位置。
步骤334中,本地节点控制器接收远程SOC在步骤332中发送的请求。本地节点控制器在本地SOC中根据接收请求的顺序,接收请求和区分请求的优先级。
步骤336中,本地节点控制器确定步骤334中接收的请求指向的存储位置是否具有有效数据。如果本地OCM中被请求的存储位置具有有效数据,就通过检测条目来检测数据的有效性。例如,如果本地OCM中存在被请求的存储位置的条目,以及该条目的dirty位设为1,那么,本地SOC的存储位置就不含有有效数据。如果条目的dirty位设为0,那么本地SOC的被请求的存储位置就具有有效数据。如果本地OCM中不存在被请求的存储位置的条目,那么,就假定被请求的存储位置中存储有效数据。
步骤338中,如果节点控制器确定本地SOC的被请求的存储位置不含有有效数据,那么,本地NC基于本地OCM的条目中的vector域,从具有有效数据的SOC请求数据。
步骤340中,本地SOC将其从步骤338中的SOC接收的数据给远程SOC。本地SOC也使用所接收的数据更新本地存储器,以及更新本地OCM的条目以表明本地SOC具有非dirty的有效数据。
步骤342中,本地NC将对应于该请求的条目存储到本地OCM中。例如,如果远程SOC请求独占性占有,就生成图3C1所示的条目306,该条目的dirty位为1。如果远程SOC做出只读请求,那么,就做出如图3B所示的条目304,该条目的dirty位为0。
步骤344中,本地NC将被请求的数据发送到远程NC。如上所述,可通过总线302发送数据。
图3F示出了本发明的一个实施例中,NC在接收到本地处理器的存储器访问请求时执行的步骤。在该实施例的如下所述的步骤中,NC和处理器位于相同的SOC上。例如,本地NC是NC 104,本地处理器是处理器110。
步骤352中,接收本地处理器的从本地存储器读取数据或者将数据写入本地存储器的请求。
步骤354中,确定本地SOC的本地存储位置是否具有有效数据,或者独占。如果本地OCM中存储被请求的数据的条目,就通过检测条目来检测数据的有效性。在一个实施例中,本地节点控制器检测本地OCM。例如,如果本地OCM中存在被请求的存储位置的条目,以及该条目的dirty位设为1,那么,本地SOC的存储位置就不含有有效数据。如果条目的dirty位设为0,那么本地SOC的被请求的存储位置就具有有效数据。如果本地OCM中不存在被请求的存储位置的条目,那么,就假定被请求的存储位置中存储有效数据。
步骤356中,如果步骤354中确定本地SOC的存储位置不具有有效数据,那么就检查本地OCM存储器是否存在与步骤352中接收的请求所执行的存储位置对应的条目,优选地由本地NC来执行。在一个实施例中,如图3C2所示和如上所述,条目306的vec域用于确定对被请求的存储位置具有独占的远程SOC。
步骤358中,向步骤356中确定的远程SOC发送请求,请求其传送数据。
步骤360中,本地SOC响应步骤358中发送的请求,接收远程SOC的数据。本地SOC更新本地OCM中对应的条目,以表明本地OCM的被请求的存储位置具有有效数据。
步骤362中,将接收自远程SOC的数据发送到请求数据的处理器。
步骤364中,如果步骤354中确定本地SOC的存储位置中具有有效数据,就访问该存储位置,并将数据发送给请求数据的处理器。在一个实施例中,本地NC访问存储位置;在另一个实施例中,本地NC使用本地存储控制器来访问数据。
下面将描述集群配置的节点控制器和OCM的实施例。
示范的集群系统
图4A示出了集群系统400。集群系统400是一组紧密地协同工作的SOC单元100a-n,因此,在很多方面可将它们视为单个SOC。但是,每个SOC通常是独立的SOC并管理自己的资源如存储器。集群一般通过快速局域网连接,但并非总是如此。集群如集群系统400经常用于以更加成本有效的方式改善由单个SOC提供的速度和/或可靠性。在一个实施例中,集群系统400是高性能集群(HPC)或者负载平衡集群。要意识到,集群系统的类型是任意的,取决于设计要求。
系统400包括通过网络402互连的SOC单元100a-n。在一个实施例中,网络402是本地局域网(LAN)。网络的类型以及SOC单元的数目n是随意的。在一个实施例中,SOC 100a-n通过节点控制器104a-n连接到网络402。在本发明的一个实施例中,SOC单元100a-n之间的通信通过发消息来实现。例如,在“拉”(pull)模式环境中,源SOC单元的进程、线程或者处理器向目标SOC单元发送信号,表示源SOC的已分配的存储器中存在消息。目标SOC,响应所接收的信号,从源SOC的存储器取回或者“拉”回消息。在“推”(push)模式的实施例中,源SOC直接向目标SOC已分配的存储位置传输或者“推”入消息。在一个实施例中,源SOC和目标SOC是独立磁盘冗余阵列(RAID)系统的一部分,从源SOC到目标SOC的消息是“搏动”(heartbeat)通知,用于表明源SOC对目标SOC的活动操作。拉和推模式的消息将在下面进行详细描述。
拉模式的消息
图4B示出了本发明的一个实施例的推模式的消息。如图4B所示,SOC 100j向SOC 100a发送信号,表示OCM 108j存在消息。该消息可以来自SOC 100j的处理器,例如处理器110R+1,或者来自运行在处理器110R-110T的进程或者线程。可通过网络402从节点控制器104j向节点控制器104a发送信号。在一个实施例中,发信号的过程要求向SOC 100a的存储位置写入位,以表示OCM108j中的消息。节点控制器104a响应从节点控制器104j接收的表示OCM 108j中的消息的信号,取回OCM 108j中的消息。在一个实施例中,OCM 108j中的存储位置是SOC单元100a-n共享的全局地址空间的一部分,以及节点控制器104a访问OCM 108j中已经分配给SOC 100a的消息的存储位置。在另一个实施例中,OCM 108j将消息存储在先入先出(FIFO)队列中,NC 104a读取OCM108j的队列中的消息。在另一个实施例中,在接收到NC 104j的信号时,NC 104a向NC 104j请求该消息,接着,NC 104j向NC 104a发送消息。NC 104a将所获得的消息存储在OCM 108a中。将消息存储在OCM 108a中以进行隔离,并保护EM 106使其远离包含病毒的消息。EM 106a可存储程序编码指令,如果包含病毒的消息存储在EM 106中,那么,所存储的程序代码指令将被污染,并对SOC 100a具有副作用。通过将OCM 108用作存储发送到其他SOC单元或者从其他SOC单元接收的消息的“信箱”,可以隔离EM 106,使其远离有病毒的消息。本实施例的另一个优点是发消息的速度,因为OCM 108a和OCM 108j是共芯片的,且通常是快速RAM例如SRAM。消息404是示范的可用的消息格式。消息404包括以下的域:
域E表示错误;
域R表示请求确认,例如,发送消息的源SOC将设置该位,以请求目标SOC在处理该消息后发送一个确认;
域A表示确认,目标SOC向发送原消息的源SOC发送确认消息之后,设置该位;
域RSVD表示实现特定用法的保留域;
域“Status”表示处理消息的结果,例如消息可能请求目标SOC执行一定的步骤,该状态域表示步骤是否完成,以及是否有与这些步骤有关的结果;
域INTR表示可能在目标SOC产生的中断的类型(如果有中断的话)和/或消息的优先级;
域RID包括唯一标识消息的数据;
域SID表示产生消息的源SOC;以及
域“Software Dependant Context”(软件依赖内容)表示消息的有效载荷。例如,消息的有效载荷包括可由所接收的SOC处理的数据。
要意识到,消息的内容和域是任意的,可根据设计的要求而变化。在一个实施例中,OCM 108a和108j的所有或者部分都用作发送或者接收消息的信箱。在另一个实施例中,SOC 100a或者SOC 100j的任何的存储器的特定部分用做信箱。例如,EM 106a和EM 106j的部分可分别分配为代替OCM 108a和108j信箱。分配EM 106的特定部分使得程序代码与消息中潜在的病毒隔开。
推模式的消息
图4C示出了本发明的一个实施例的推模式的消息。在本实施例中,SOC100j将消息404发送或者“推”到SOC 100a的存储位置。来自SOC 100j的消息可发送到或者推到OCM 108a中的特定位置或者“信箱”。发送到SOC 100a的消息可以来自SOC 100j的处理器,例如处理器PR+1。消息可由节点控制器104j通过网络402发送到节点控制器104a。在一个实施例中,OCM 108j的存储位置是SOC 100a-100n共享的全局地址空间的一部分,节点控制器104a访问OCM 108j中已经分配给该消息的存储位置,并写该存储位置。在另一个实施例中,全局地址空间中为发送给SOC 100a的消息而分配的存储位置映射到OCM 108a的存储位置。SOC 100a将OCM 108a用作信箱,以存储从其他SOC单元接收的消息。在一个实施例中,OCM 108a以FIFO队列存储所接收的消息,NC 104a以FIFO顺序取得并处理OCM 108a中的消息。OCM 108a用作信箱,以隔开EM 106,让EM 106远离可能存在于消息中的病毒或者恶意软件。例如,EM 106a可存储程序代码指令,而包含病毒的消息可能对SOC 100a有副作用。通过将OCM 108a用作接收其他SOC单元的信箱,可以独立EM 106并保护系统的继承性(integrity)。本实施例的一个优点是发消息的速度,因为OCM 108通常是快速RAM或者SRAM。另一个优点是使系统独立,让系统远离可能存在于所接收的消息中的病毒。消息404与图4B所述的消息具有相同的域。
图4D示出了本地SOC实施本发明所述的推模式发消息的流程图。在一个实施例中,流程图410的步骤由本地SOC的本地节点控制器执行。
步骤412中,从远程SOC接收信号。该信号表示远程SOC存在的消息,也表示远程SOC中包含该消息的存储位置。
在可选步骤414中,本地SOC如果不知道所要访问的远程SOC的存储位置,或者不能够访问远程SOC中包含该消息的存储位置,本地SOC就向远程SOC请求该消息。在一个实施例中,本地节点控制器向远程节点控制器请求消息。
步骤416中,本地SOC从远程SOC获得消息。在一个实施例中,本地SOC的本地节点控制器从远程SOC的片载存储器的存储位置取得消息。存储位置可以是用于发消息的全局地址空间的一部分。替换地,可以使用远程SOC中包含该消息的存储位置预编程本地SOC。如果实施了可选步骤414,那么,在步骤416中,本地控制器接收远程SOC的消息,而不是从远程SOC取回消息。
步骤418中,本地SOC存储所接收的消息。在一个实施例中,本地节点控制器将消息存储到本地的片载存储器中。
图4E示出了远程SOC根据本发明进行拉模式发消息的流程图420。在一个实施例中,流程图420的步骤由远程节点控制器执行。
步骤422中,远程SOC发送信号,表示其片载存储器存在消息。该信号可以表示包含该消息的存储位置。
可选步骤424中,远程SOC接收来自本地SOC的对该消息的请求。
步骤426中,如果步骤424中远程SOC接收到来自本地SOC读该消息的请求,远程SOC就向本地SOC发送该消息。替换地,远程SOC允许本地SOC访问包含该消息的远程片载存储器位置。
图4F示出了远程SOC进行本发明的推模式发消息的流程图430。在一个实施例中,流程430的步骤由远程节点控制器执行。
步骤432中,确定本地SOC中将要写入消息的存储位置。可以将本地SOC中将要使用的存储位置预编程到远程SOC,或者本地SOC事先表示将要用于发消息的存储位置。替换地,本地SOC中将要写入的存储位置可以是用于发消息的全局地址空间的一部分。
步骤434中,远程SOC将消息写入到步骤432所确定的存储位置。替换地,远程SOC的远程节点控制器将消息发送到本地SOC的本地节点控制器。
下面将描述节点控制器和片载存储器的存储器锁配置。
存储器锁
存储器锁是一种在多个“请求者”在几乎相同的时间里(例如,SOC单元、线程、进程和/或处理器)打算访问相同的存储位置的环境中增强对存储位置的访问的限制的同步机制。锁是一种增强协作控制策略的方式。通常,互相协作的请求者使用仲裁协议来决定哪个请求者得到访问存储位置的锁,仲裁协议包括在请求者之间传递消息。但是,当多个请求者打算同时地访问相同的存储位置时,一般的仲裁方法是耗时的以及增加了系统开销。本发明下面所述的实施例通过使用节点控制器104以及OCM 108来实施存储器锁,克服了这种不足。存储器锁可在独立SOC 100、共享存储器系统如系统300或者集群配置如系统400中实施。
图5A是本发明的一个实施例的存储器是存储位置和存储器锁之间的关联。在图5A所示的实施例中,OCM 108存储EM 106中对应的存储位置的锁条目(如下所述)。例如,OCM 108中的存储位置Y存储EM 106中与存储位置X对应的锁条目。如果请求者请求访问存储位置X,NC 104将检测存储位置Y的锁,以确定是否准许该请求者访问。根据一个实施例,节点控制器104接收请求者的访问和写存储位置X的请求,检查OCM 108中的存储位置Y的锁条目,并确定是否准许请求者的请求。NC 104通过使用EM 106的存储位置与OCM 108中存储锁的存储位置之间关联关系的关联表,确定OCM 108中哪个存储位置具有EM 106中的存储位置的锁。存储在OCM 108中的锁允许两种操作模式。一种操作模式使用“测试和设置”(test-and-set)锁,另一种模式使用“定序器”(sequencer)锁。
测试和设置锁用于自动地写存储位置。测试和设置锁包括设置锁条目中的值,以获得锁,但是首先进行一些测试(例如,测试锁中当前设置的值是0还是1)。如果测试失败,将不能获得或者设置锁,从而请求者不能访问与该锁对应的存储位置。请求者必须在随后再次“测试”锁,以确定是否能够获得。下面会描述使用测试和锁定设置模式的实施例。
在定序器模式中,按照请求者请求访问和写存储位置的顺序,给每位请求者分配门票(ticket)。与被请求的存储位置对应的锁条目存储当前的门票和下一门票。在定序器模式中,具有当前门票号的请求者得到锁,并且能够访问对应的存储位置。而存储位置由当前门票的持有者占有;定序器给后续的请求者提供唯一的下一张门票。下一张门票号通常以连续的顺序发布,从而形成虚拟的先入先出(FIFO)的请求者序列。当访问存储位置的当前门票的持有者释放锁之时,“当前门票+1”变成后续的当前门票值。具有该后续当前门票值的请求者能够得到锁,并获得访问权以修改存储位置。
使用节点控制器104控制对EM 106的存储位置的访问,免除了处理器110的仲裁负担,充分消除了由于仲裁而引起的总线堵塞。因为OCM 108是片载的,所以访问OCM 108查找锁并确定是否授予对应的存储位置的访问权是快速和有效的。
图5B是存储在OCM 108的存储位置中的锁条目。锁条目500是示范的格式,其中的域及域的大小可根据具体情况而变化。锁条目500包括以下的域:
域Mode表示使用的操作模式。例如,如果模式设为0,则表示使用“测试和设置”模式;如果模式设为1,则表示使用“定序器”模式。下面会对测试和设置模式以及定序器模式进行更详细的描述。
域S或者Set仅仅用于测试和设置模式。当S为0时,锁是空闲的。如果请求者尝试访问一个存储位置,而对应的锁条目S显示为空闲,那么,就将S设为1并准许该请求者访问。将S位设为1,在功能上等于获得锁。已经获得锁之后,就可以访问对应的存储位置。访问空闲的锁条目返回正常值0,软件依赖内容(Software Dependent Context)域(如下所述)如之前一样是最近保存的。获得锁之后,设置所有者身份(OID)域(下面有描述)以表示获得该锁的请求者。
在请求者访问锁时,如果NC向请求者返回的S值为1,那么,OID域告知请求者该位置已设置锁。因此,对应该锁的存储器位置无法访问。请求者需要再次尝试以获得锁。
域“R”或“Recovery”位通常在恢复操作中设置。当R位设置位0时,可正常对锁进行访问。在恢复过程中,当R位被设为1之时,重新声明不起作用的或者闲置请求者当前占有的锁。例如,得到锁的处理器可能在释放所获得的锁之前,出现故障而变为不起作用。当R设为1之时,可重设锁以还原锁。当R位设为1时,还原软件能够强行释放锁,并重新初始化该锁所保护的对应的存储位置。在还原过程中,启动还原处理的请求者将R设为0,并宣布其他域的语义无效。OID设为执行该还原的请求者的ID。还原了锁之后,锁就能够正常地起作用了。
域“下一票号”(Next Ticket)存储仅仅由定序锁模式使用的值。例如,在EM 106中,NC 104在接收到访问一存储位置的请求时,在OCM 108中查找与被请求的存储位置对应的锁。如果该锁已经占用,NC 104就向请求者返回锁的下一票号域的当前值。接着,NC 104将下一票号域的值加1,并在该锁被占用时向下一个请求者返回该值。因此,在等待访问存储位置的请求者有效地将自己插入到一个队列中,访问顺序由被分配的票(Ticket)号决定。如果锁是空闲的,就将当前的票分配给请求者,并准许该请求者访问对应的存储位置。在一个实施例中,下一票号是6位的未指定的数字。在另一个实施例中,下一票号是由NC 104产生的随机的文字和数字码。节点控制器随后追踪文字和数字码产生的序列以及按照该顺序对访问进行授权。
域“当前票号”存储仅仅由定序锁模式使用的值。具有当前票号的请求者被允许获得锁,以及访问对应的存储位置。为了释放该锁,请求者在锁的“当前票号”域中存储值为“当前票号+1”的新值。这有效地允许队列中的下一位请求者获得锁,以及访问存储位置。
域“软件依赖内容”(Software Dependent Context)是96位的域,获得对应的锁的请求者可以读写该域。该域包含被锁保护的结构的指针。当请求者获得锁时,他也得到与该锁对应的存储位置的指针,例如外部存储器的指针。系统还原通常要求重建或者重新加载数据表。内容域可用于避免带有分布表管理的显著性能问题。
如上所述,也可以使用内容域来实现有效的硬件信箱。使用这种受保护的硬件邮箱,在交换没有显示出临时位置的数据时,可以避免高速缓存固有的开销。
图5C1-5C3中示出了根据本发明的一个实施例的在测试-设置模式中的存储器操作。在图5C1-5C3所示的实施例中,模式位设为0(对于测试-设置模式),没有使用下一票号和当前票域(NA),因为锁处于测试-设置模式。R位是0,表明锁没有位于还原模式。在测试-设置模式的实施例中,值S等于0表示锁是空闲的,S等于1表示锁已经被请求者获得。
如图5C1所示,NC 104接收请求者R1的请求,以访问从而修改EM 106中的存储位置X。NC 104响应收到的请求,检测存储在OCM 108的存储位置Y的、与存储位置X对应的锁条目500a。在锁条目500a中,S等于0就表示已经获得锁,以及可以访问对应的存储位置。因此,NC 104授予请求者R1访问权,让其修改存储位置X。随后,NC 104或者请求者R1将锁条目500a修改为锁条目500b。在锁条目500b中,S设为1,OID设为R1,表示请求者R1已经获得存储位置Y的锁。
在图5C2中,NC 104接收请求者R2要访问进而修改EM 106的存储位置X的请求。NC 104响应所接收的请求,检测存储在与存储位置X对应的存储位置Y的锁条目500b。在锁条目500b中,S为1以及OID为R1,表明当前是请求者R1占有锁。这样,请求者R2不能修改对应的存储位置X。因此,NC 104拒绝请求者R2修改存储位置X的请求。为能够访问和修改存储位置X,请求者R2将必须再次尝试。
在图5C3中,请求者R1释放存储位置X。NC 104将S设为0,将锁条目500b变为锁条目500c。因为锁已经释放,所以EM 106中的存储位置X再次可用于修改。在再次接收到请求者R2要修改存储位置X的请求时,NC 104检测锁条目500c。在锁条目500c中,因为S设为0,所以可以获得锁。因此,NC 104准许请求者R2修改存储位置X。NC 104或者请求者R2通过将S设为1,以及将OID设为R2,将锁条目500c修改为锁条目500d。锁条目500d这时候表示OCM 108的存储位置Y的锁已经被获取,而请求者R2目前具有修改ME 106的存储位置X的权限。
图5C4中示出了本发明的实施例中,节点控制器在测试-设置模式下执行的步骤。
步骤512中,接收到要修改第一存储的请求。在本实施例中,节点控制器接收的请求可以来自SOC、处理器、线程或者进程等。
步骤514中,检测与第一存储位置对应的第二存储位置,以确定第一存储位置是否可用。在一个实施例中,节点控制器查找表格,以确定对应第一存储位置的第二存储位置。第二存储位置可位于芯片存储器中。第二存储位置的数据可以是锁条目,该锁条目具有表示第一存储为是否可用从而可进行修改的域。
步骤516中,如果步骤514中确定第一存储位置不可进行修改,那么,请求者就被拒绝访问修改第一存储位置。第一存储位置显示为锁定。
步骤518中,如果步骤514中确定第一存储位置可进行修改,那么,就准许该请求者访问和修改第一存储位置。如果步骤512中有多个请求者请求第一存储位置,节点控制器就准许第一位请求者访问和修改第一存储位置。
步骤520中,修改第二存储位置的条目,以表示第一存储位置被锁定。同时存储当前访问第一存储位置的请求者的ID。
在可选的步骤522中,如果步骤512中有多个请求者,就拒绝剩余的请求者访问和修改第一存储位置。
序列模式
图5D1-5D3示出了根据本发明的一个实施例的定序模式进行存储器锁定的操作。在图5D1-5D3所示的实施例中,“Mode”域设为1,没有使用“S”域(NA),因为没有使用测试-设置模式。R位设为0,表示锁不处于还原模式。
图5D1中,NC 104接收到R1修改EM 106的存储位置的请求。图5D1所示的实施例的初始开始条件是:R1是第一个请求访问和修改存储位置X的请求者,且没有在先的请求者。在NC 104检测OCM 108中的存储位置Y的锁500e时,因为该初始条件,所以没有使用当前票号、下一票号和OID域(NA)。NC104响应所接收的请求,准许请求者R1访问和修改存储位置X,以及给R1分配当前票号,例如“A”。NC 104或者请求者R1将锁条目500e更新为锁条目500f,锁条目500f表示当前票号为A,下一票号为A+1,以及OID为R1,表示请求者R1当前占有OCM 108的存储位置Y的锁,并具有修改ME 106的存储位置X的权利。
在图5D2中,NC 104接收请求者R2修改EM 106的存储位置X的请求。NC 104响应该请求,检查与存储位置X对应的存储在存储位置Y的锁条目500f。锁条目500f中,当前票号是A,OID是R1,表示该锁当前为请求者R1所占有。NC 104拒绝请求者R2的访问,并授予请求者R2下一票号值A+1。当具有票号A的请求者R1释放锁时,具有票号A+1的请求者R2将得到授权以访问和修改存储位置X。NC 104或者请求者R2将锁条目500f改为锁条目500g,以表示下一票号为A+2。请求者R2之后的请求者将被授予票号A+2。因此,在存储位置X不可用于修改时,将可以保护请求者的顺序。
图5D3中,请求者R1释放存储位置X,因为R2是队列中的下一位并具有票号A+1,因为R2得到授权访问和修改存储位置X。锁条目500g被更新为锁条目500h,表示当前票号是A+1;OID是R2,表示R2为锁的当前占有者。如果R2没有占有存储位置X,例如,R2不再需要修改存储位置X或者R2发生故障,就将锁的所有权授予队列中的下一请求者。
应当意识到,如果请求者不能释放锁,可将R设为1重新获得锁,开始恢复模式。
图5D4示出了根据本发明的一个实施例中,定序模式中的节点控制器执行的步骤530的流程图。
步骤532中,接收对第一存储器的第一存储位置的修改的请求。例如,节点控制器接收请求者的请求,请求者可以是SOC、处理器、线程或者进程。第一存储器可以是外接到SOC的RAM。节点控制器可以接收多个请求者的多个访问和修改第一存储位置的请求。
步骤534中,检查第二存储位置中与第一存储位置对应的条目,以确定第一存储位置是否可以修改。在一个实施例中,为了确定第二存储位置,节点控制器查找包含与第一存储位置对应的第二存储位置的表格。第二存储位置可位于第二存储器中,例如在片载存储器中。替换地,第二存储位置可以在第一存储器中。第二存储位置的数据可以是上述的锁条目。锁条目的内容,例如锁条目的OID域表示是否存在第一存储位置的当前所有者。替换地,当前票号和下一票号域表示步骤532中当前请求者前面的请求者。
步骤536中,如果步骤534中确定第一存储位置不能进行修改,那么,就给步骤532中的请求者分配票号。将请求者插入到队列中,请求者将按照所分配的票号的顺序访问存第一存储位置。
步骤538中,更新与第一存储位置对应的第二存储位置,以改变下一票号。
步骤540中,如果步骤536中确定第一存储位置可进行修改,就授权步骤532中的请求者访问存储位置。同时从锁的当前票号域中给步骤532的请求者分配当前票号值。在完成第一存储位置的修改之后,请求者使用当前票号值释放第一存储位置的锁。
步骤542中,更新第二存储位置的条目,以反映步骤532中的请求者作为锁的当前所有者和当前票号的持有者。
图5D5示出了本发明的一个实施例中,请求访问和修改存储位置的请求者执行的流程图。
步骤552中,发送修改存储位置的请求。请求可以发送给控制存储位置的远程节点控制器。在一个实施例中,请求者可以是SOC、处理器、线程或者进程。
步骤554中,判断是否接收到修改存储位置的授权。
步骤556中,如果步骤554中被拒绝修改存储位置的授权,就接收到票号。该票号可接收自节点控制器。票号表示队列中的请求者访问存储位置的顺序。请求者在队列中等待,以按次序修改存储位置。
步骤558中,请求者按照步骤556中接收到的票号接收到授权,该请求者现在可以修改存储位置了。
步骤560中,请求者释放锁,从而允许队列中的下一个请求者访问存储位置。例如,请求者向节点控制器发送票号,节点控制器反过来释放锁,并授权队列中下一请求者。
步骤562中,如果步骤554中接收到修改存储位置的授权,那么,请求者就修改存储位置。接着,如步骤560所述释放锁。
在定序模式的操作中,如果控制器接收到多个修改存储位置的请求,这多个请求在时间上很接近,定序器按照请求到达的顺序对请求进行排序,并按该顺序分配票号。在一个替换的实施例中,控制器按照请求的优先级分配票号。优先级可以是请求者在发送请求时一起发送的正数。更高优先级的请求表示更高的优先。在另一个实施例中,结合使用到达时间和优先级对请求者进行排序。例如,如果到达时间和优先级都被加权,就使用线性组合来对请求者进行排序以及分配票号。
测试-设定模式的软件实施例
在一个实施例中,节点控制器104受软件控制。在该实施例中,节点控制器104仅仅支持存储位置的互斥(mutual exclusion)。需要依靠软件将锁关联到需要保护的存储位置。该软件知道硬件输出n个存储位置,这n个存储位置可用作锁。接着,软件给需要保护的数据对象分配或者关联特定的锁。在这个实施例中,节点控制器104简单执行所需要的操作,以支持测试-设置锁模式的语义。这简化了节点控制器104的硬件。硬件不需要簿记锁来关联锁和该锁所保护的存储位置。
参考图5A,在测试-设置模式中,使请求者R访问存储位置X的软件伪代码如下所示,其中,存储位置X与存储在存储位置Y的锁对应。
While(Test-and-Set(Lock)==1);
access and modify memory location X;
Unlock(lock).
在上面的伪代码中,测试-设置命令引起节点控制器104返回存储在OCM108的存储位置Y的条目的设置域的当前值。代码进行循环,直到锁是空闲的,也就是说,直到节点控制器返回0,表示锁是空闲的,请求者R可获得锁。测试-设置命令也控制节点控制器将存储位置Y的锁的设置域改为1。所有者标识符域(OID)的变化表示只有在设置域为0时,请求者R才是当前所有者。请求者R访问和修改存储位置X。Unlock(解锁)命令将设置域改为0,以允许另外的请求者访问存储位置X。
参考图5A,在定序模式中,使请求者R访问存储位置X的软件伪代码如下所示,其中,存储位置X与存储在存储位置Y的锁对应。
Ticket=Get_Ticket();
while(ticket!=Read_Current_Ticket());
access and modify memory location X;
Increment_Ticket();
在上面这段伪代码中,Get_Ticket()命令控制节点控制器104返回OCM108的存储位置Y的条目的下一票号。该票号分配给请求者R,并存储在变量“Ticket”中。Read_Current_Ticket()命令让节点控制器104返回存储在OCM 108的存储位置Y的当前票号值。请求者R保持检查存储位置Y的当前票号值,直到存储位置Y的当前票号值等于分配给请求者R的票号值。在得到授权访问存储位置X并对其进行修改之后,请求者R发出Increment_Ticket()命令,增加存储位置X的当前票号值,并允许队列中的下一请求者获得存储位置Y的锁,并访问存储位置X。
在图5所示的实施例中,OCM 108可存储与EM 106的存储位置对应的锁。另一个实施例中,OCM 108存储EM 106(但不限于EM 106)的存储位置的锁条目,例如,还可以包括高速缓存、硬盘驱动器等。在另外一个实施例中,是存储器模块而不是OCM 108存储存储器锁。例如,可分配EM 106的一部分用于存储EM 106其余部分存储位置的锁。
典型的计算机系统
在本文档中,词语“计算机程序媒介”和“计算机可用的媒介”通常指可移动的存储单元、安装在硬盘驱动器中的硬盘以及信号(即,电子的、电磁的、光学的或者其他类型的可通过通信接口接收的信号)。这些计算机程序产品给计算机系统提供软件。在一个实施例中,本发明涉及这种计算机产品。
在一个实施例中,本发明使用软件来实现。软件可存储在计算机产品中,并加载到使用移动存储驱动器、硬盘驱动器或者通信接口的计算机系统(例如客户端或者主机)。处理器执行控制逻辑(软件)时,控制逻辑让处理器处理本发明的功能。进一步地,传感器可以执行计算机可读的指令以收集数据。再进一步地,临近的域收发器可执行计算机可读的指令,以与传感器和/或探头进行通讯。
根据本发明的一方面,客户端可执行计算机可读的指令,以读取上述的探头。此外,在一个实施例中,探头可以执行计算机可读的指令,以响应客户端发射的信号,如本说明书的其他地方所述。
总结
上述对本发明的优选实施例的描述的目的是为了举例说明及描述。这些实施例不是穷尽性的,也就是说本发明不受所公开的精确形式的限制;显然,在本发明的教导下,可对这些实施例做出多种修改和变化。对实施例的选择和描述是为了对本发明的原理及其实践应用做出最佳解释,以使本领域的技术人员能够最好地利用本发明、以及为配合特殊用途对各种实施例进行修改。本发明的范围由本发明的权利要求及其等同限定。上述对本发明的优选实施例的描述的目的是为了举例说明及描述。这些实施例不是穷尽性的,也就是说本发明不受所公开的精确形式的限制;显然,在本发明的教导下,可对这些实施例做出多种修改和变化。对实施例的选择和描述是为了对本发明的原理及其实践应用做出最佳解释,以使本领域的技术人员能够最好地利用本发明、以及为配合特殊用途对各种实施例进行修改。本发明的范围由本发明的权利要求及其等同限定。

Claims (10)

1.一种本地SOC,其特征在于,包括:
本地控制器;以及
片载存储器;
其中,所述本地控制器响应远程SOC的远程控制器的访问存储位置的请求,确定所述本地SOC是否独占所述存储位置,如果所述本地SOC独占性占有所述存储位置,就发送所述存储位置的数据,并将条目存储到所述片载存储器中,所述条目表示所述远程SOC已经产生请求。
2.根据权利要求1所述的本地SOC,其特征在于,所述条目标识所述请求是否请求独占所述存储位置。
3.根据权利要求1所述的本地SOC,其特征在于,所述条目中的一个特定域存储用于标识所述远程SOC的数据。
4.根据权利要求3所述的本地SOC,其特征在于,
所述域中的每一位对应于共享存储系统的中的SOC,所述共享存储系统包括多个SOC;
如果某位设为1,则表示该位所对应的SOC已经请求访问所述存储位置。
5.根据权利要求1所述的本地SOC,其特征在于,所述单元还包括连接到本地SOC外接存储器的多个处理器以及存储控制器。
6.根据权利要求1所述的本地SOC,其特征在于,所述本地SOC和远程SOC通过高速缓存一致性非统一存储访问(CCNUMA)的可扩展一致性接口连接。
7.根据权利要求1所述的本地SOC,其特征在于,所述片载存储器是静态随机访问存储器,所述本地控制器是节点控制器。
8.在本地SOC中维持存储一致性的方法,所述本地SOC是共享存储系统的一部分,所述方法包括:
接收远程SOC的远程控制器访问存储位置的请求;
从所述存储位置发送被请求的数据给所述远程SOC的远程控制器;以及
将标识所述远程SOC的条目存储在本地片载存储器中。
9.根据权利要求8所述的方法,其特征在于,所述请求是独占请求,所述独占请求允许所述远程SOC远程修改存储在所述存储位置的数据副本。
10.根据权利要求8所述的方法,其特征在于,所述方法还包括通过本地节点控制器接收所述请求。
CN200710180627XA 2006-09-29 2007-09-26 本地片载系统和在本地片载系统中维持存储一致性的方法 Active CN101183338B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/529,356 US7631150B2 (en) 2006-09-29 2006-09-29 Memory management in a shared memory system
US11/529,356 2006-09-29

Publications (2)

Publication Number Publication Date
CN101183338A true CN101183338A (zh) 2008-05-21
CN101183338B CN101183338B (zh) 2010-09-01

Family

ID=38871792

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200710180627XA Active CN101183338B (zh) 2006-09-29 2007-09-26 本地片载系统和在本地片载系统中维持存储一致性的方法

Country Status (6)

Country Link
US (2) US7631150B2 (zh)
EP (1) EP1906313B1 (zh)
KR (1) KR100952589B1 (zh)
CN (1) CN101183338B (zh)
HK (1) HK1121824A1 (zh)
TW (1) TWI380174B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102422596A (zh) * 2009-05-07 2012-04-18 意法半导体(格勒诺布尔2)公司 用于分析片上系统的多协议网络中的业务传播的方法和设备
CN102439563A (zh) * 2009-05-15 2012-05-02 汤姆森许可贸易公司 用于共享存储器的系统和方法
WO2014146424A1 (zh) * 2013-03-22 2014-09-25 浪潮电子信息产业股份有限公司 一种基于有限数据一致性状态的服务器节点数据缓存方法
CN104866443A (zh) * 2014-02-21 2015-08-26 亚德诺半导体集团 可中断存储独占
CN105068786A (zh) * 2015-07-30 2015-11-18 浪潮(北京)电子信息产业有限公司 一种处理访存请求的方法和节点控制器
CN107219874A (zh) * 2017-06-27 2017-09-29 昝立民 一种共享设备温度控制系统
CN109661650A (zh) * 2016-09-30 2019-04-19 英特尔公司 分布式共享存储器系统中的对象一致性

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7602905B2 (en) * 2004-09-01 2009-10-13 Texas Instruments Incorporated Processes, circuits, devices, and systems for encryption and decryption and other purposes, and processes of making
US7631150B2 (en) * 2006-09-29 2009-12-08 Broadcom Corporation Memory management in a shared memory system
US20080082622A1 (en) * 2006-09-29 2008-04-03 Broadcom Corporation Communication in a cluster system
US7636816B2 (en) * 2006-09-29 2009-12-22 Broadcom Corporation Global address space management
US7698523B2 (en) * 2006-09-29 2010-04-13 Broadcom Corporation Hardware memory locks
KR101226685B1 (ko) 2007-11-08 2013-01-25 삼성전자주식회사 수직형 반도체 소자 및 그 제조 방법.
JP5553111B2 (ja) * 2010-09-02 2014-07-16 富士通株式会社 ノードコントローラ、ノードコントローラの制御方法及びコンピュータシステム
US10061534B2 (en) 2011-12-01 2018-08-28 Intel Corporation Hardware based memory migration and resilvering
US9009541B2 (en) 2012-08-20 2015-04-14 Apple Inc. Efficient trace capture buffer management
EP2979193B1 (en) * 2013-03-28 2021-04-28 Hewlett Packard Enterprise Development LP Shared memory system
CN106462550B (zh) * 2013-09-27 2019-10-25 英特尔公司 用于共享嵌入式硬件资源的方法、设备和装置
US9141486B2 (en) 2014-01-15 2015-09-22 Avago Technologies General Ip (Singapore) Pte Ltd Intelligent I/O cache rebuild in a storage controller
US11068420B2 (en) 2015-05-12 2021-07-20 Hewlett Packard Enterprise Development Lp Scalable software stack
US10783160B2 (en) * 2015-10-09 2020-09-22 Futurewei Technologies, Inc. System and method for scalable distributed real-time data warehouse
US9934120B2 (en) 2016-02-10 2018-04-03 Western Digital Technologies, Inc. Method and apparatus for updating a system on chip (SOC) image from a host computer system without using DMA
TWI777219B (zh) * 2020-08-12 2022-09-11 鴻海精密工業股份有限公司 分散式存儲方法、伺服器及存儲介質
US11372800B2 (en) * 2020-10-15 2022-06-28 Silicon Motion, Inc. System on chip comprising a plurality of central processing units whose mailboxes are set in tightly-coupled memories
WO2023212105A1 (en) * 2022-04-26 2023-11-02 Motional Ad Llc Distributed computing architecture with shared memory for autonomous robotic systems

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5749095A (en) 1996-07-01 1998-05-05 Sun Microsystems, Inc. Multiprocessing system configured to perform efficient write operations
US5878268A (en) * 1996-07-01 1999-03-02 Sun Microsystems, Inc. Multiprocessing system configured to store coherency state within multiple subnodes of a processing node
KR100253192B1 (ko) * 1997-09-05 2000-04-15 구자홍 분산 공유 메모리 구조에서의 시스템 버스 제어방법
US6085295A (en) * 1997-10-20 2000-07-04 International Business Machines Corporation Method of maintaining data coherency in a computer system having a plurality of interconnected nodes
US6275907B1 (en) * 1998-11-02 2001-08-14 International Business Machines Corporation Reservation management in a non-uniform memory access (NUMA) data processing system
US6269428B1 (en) * 1999-02-26 2001-07-31 International Business Machines Corporation Method and system for avoiding livelocks due to colliding invalidating transactions within a non-uniform memory access system
US6226718B1 (en) * 1999-02-26 2001-05-01 International Business Machines Corporation Method and system for avoiding livelocks due to stale exclusive/modified directory entries within a non-uniform access system
US20020065864A1 (en) 2000-03-03 2002-05-30 Hartsell Neal D. Systems and method for resource tracking in information management environments
US20020194251A1 (en) 2000-03-03 2002-12-19 Richter Roger K. Systems and methods for resource usage accounting in information management environments
US20020095400A1 (en) 2000-03-03 2002-07-18 Johnson Scott C Systems and methods for managing differentiated service in information management environments
US20030046396A1 (en) 2000-03-03 2003-03-06 Richter Roger K. Systems and methods for managing resource utilization in information management environments
US20020174227A1 (en) 2000-03-03 2002-11-21 Hartsell Neal D. Systems and methods for prioritization in information management environments
US20020120741A1 (en) 2000-03-03 2002-08-29 Webb Theodore S. Systems and methods for using distributed interconnects in information management enviroments
US20020059274A1 (en) 2000-03-03 2002-05-16 Hartsell Neal D. Systems and methods for configuration of information management systems
US20020152305A1 (en) 2000-03-03 2002-10-17 Jackson Gregory J. Systems and methods for resource utilization analysis in information management environments
US20020049841A1 (en) 2000-03-03 2002-04-25 Johnson Scott C Systems and methods for providing differentiated service in information management environments
US20020049608A1 (en) 2000-03-03 2002-04-25 Hartsell Neal D. Systems and methods for providing differentiated business services in information management environments
US20030236745A1 (en) 2000-03-03 2003-12-25 Hartsell Neal D Systems and methods for billing in information management environments
US6697919B2 (en) 2000-06-10 2004-02-24 Hewlett-Packard Development Company, L.P. System and method for limited fanout daisy chaining of cache invalidation requests in a shared-memory multiprocessor system
US6640289B2 (en) * 2000-11-15 2003-10-28 Unisys Corporation Software controlled cache line ownership affinity enhancements in a multiprocessor environment
US6976108B2 (en) 2001-01-31 2005-12-13 Samsung Electronics Co., Ltd. System on a chip having a system bus, an external bus, and a bus arbiter with programmable priorities for both buses, software, and method for assigning programmable priorities
US6615322B2 (en) 2001-06-21 2003-09-02 International Business Machines Corporation Two-stage request protocol for accessing remote memory data in a NUMA data processing system
US6886079B2 (en) * 2001-06-21 2005-04-26 International Business Machines Corporation Dynamic history based mechanism for the granting of exclusive data ownership in a non-uniform memory access (NUMA) computer system
US20060218556A1 (en) 2001-09-28 2006-09-28 Nemirovsky Mario D Mechanism for managing resource locking in a multi-threaded environment
US7296174B2 (en) 2002-10-11 2007-11-13 Broadcom Corporation Apparatus and method to interface two different clock domains
US7177987B2 (en) * 2004-01-20 2007-02-13 Hewlett-Packard Development Company, L.P. System and method for responses between different cache coherency protocols
EP1619572A1 (en) 2004-07-23 2006-01-25 Texas Instruments Incorporated System and method of identifying and preventing security violations within a computing system
US7404044B2 (en) 2004-09-15 2008-07-22 Broadcom Corporation System and method for data transfer between multiple processors
KR100758281B1 (ko) * 2004-12-20 2007-09-12 한국전자통신연구원 다중 서비스 타입 관리 기능을 가지는 컨텐츠 분배 관리시스템 및 그 방법
US7849315B2 (en) * 2006-05-22 2010-12-07 General Dynamics C4 Systems, Inc. Method for managing operability of on-chip debug capability
US7631150B2 (en) * 2006-09-29 2009-12-08 Broadcom Corporation Memory management in a shared memory system
US7636816B2 (en) 2006-09-29 2009-12-22 Broadcom Corporation Global address space management
US20080082622A1 (en) 2006-09-29 2008-04-03 Broadcom Corporation Communication in a cluster system
US7698523B2 (en) 2006-09-29 2010-04-13 Broadcom Corporation Hardware memory locks

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102422596A (zh) * 2009-05-07 2012-04-18 意法半导体(格勒诺布尔2)公司 用于分析片上系统的多协议网络中的业务传播的方法和设备
CN102422596B (zh) * 2009-05-07 2014-12-03 意法半导体(格勒诺布尔2)公司 用于分析片上系统的多协议网络中的业务传播的方法和设备
CN102439563A (zh) * 2009-05-15 2012-05-02 汤姆森许可贸易公司 用于共享存储器的系统和方法
WO2014146424A1 (zh) * 2013-03-22 2014-09-25 浪潮电子信息产业股份有限公司 一种基于有限数据一致性状态的服务器节点数据缓存方法
CN104866443A (zh) * 2014-02-21 2015-08-26 亚德诺半导体集团 可中断存储独占
CN104866443B (zh) * 2014-02-21 2018-07-27 亚德诺半导体集团 可中断存储独占
CN105068786A (zh) * 2015-07-30 2015-11-18 浪潮(北京)电子信息产业有限公司 一种处理访存请求的方法和节点控制器
CN105068786B (zh) * 2015-07-30 2018-03-23 浪潮(北京)电子信息产业有限公司 一种处理访存请求的方法和节点控制器
CN109661650A (zh) * 2016-09-30 2019-04-19 英特尔公司 分布式共享存储器系统中的对象一致性
CN107219874A (zh) * 2017-06-27 2017-09-29 昝立民 一种共享设备温度控制系统

Also Published As

Publication number Publication date
HK1121824A1 (en) 2009-04-30
KR100952589B1 (ko) 2010-04-15
US7631150B2 (en) 2009-12-08
KR20080030496A (ko) 2008-04-04
TW200832136A (en) 2008-08-01
EP1906313A1 (en) 2008-04-02
US20080082758A1 (en) 2008-04-03
US20100070718A1 (en) 2010-03-18
CN101183338B (zh) 2010-09-01
EP1906313B1 (en) 2018-11-07
US8001333B2 (en) 2011-08-16
TWI380174B (en) 2012-12-21

Similar Documents

Publication Publication Date Title
CN101183338B (zh) 本地片载系统和在本地片载系统中维持存储一致性的方法
US7636816B2 (en) Global address space management
US7698523B2 (en) Hardware memory locks
US5331673A (en) Integrity of data objects used to maintain state information for shared data at a local complex
US5561809A (en) In a multiprocessing system having a coupling facility, communicating messages between the processors and the coupling facility in either a synchronous operation or an asynchronous operation
US6457098B1 (en) Methods and apparatus for coordinating shared multiple raid controller access to common storage devices
EP0404369B1 (en) A method for maintaining cache coherence in a multiprocessor computer system
US4977498A (en) Data processing system having a data memory interlock coherency scheme
US5875485A (en) Lock control for a shared main storage data processing system
US5829052A (en) Method and apparatus for managing memory accesses in a multiple multiprocessor cluster system
CN102722418B (zh) 用于硬件锁省略(hle)的后期锁获取机制
DE69724353T2 (de) Mehrrechnersystem mit einem Drei-Sprung-Kommunikationsprotokoll
US20070150665A1 (en) Propagating data using mirrored lock caches
US7958314B2 (en) Target computer processor unit (CPU) determination during cache injection using input/output I/O) hub/chipset resources
US6266743B1 (en) Method and system for providing an eviction protocol within a non-uniform memory access system
US20050154831A1 (en) Source request arbitration
JP2004505346A (ja) 多重プロセッサアーキテクチャのためのキャッシュコヒーレンシシステムおよび方法
CN104508645A (zh) 用于使用多个子锁来控制对具有读取器-写入器锁的共享数据结构的访问的系统和方法
EP1092188A1 (en) Split directory-based cache coherency technique for a multi-processor computer system
US20060259705A1 (en) Cache coherency in a shared-memory multiprocessor system
US20080082622A1 (en) Communication in a cluster system
KR20210041485A (ko) 데이터 신호 경로 및 태그 신호 경로를 갖는 메모리 인터페이스
US7334102B1 (en) Apparatus and method for balanced spinlock support in NUMA systems
US20040068616A1 (en) System and method enabling efficient cache line reuse in a computer system
US7000080B2 (en) Channel-based late race resolution mechanism for a computer system

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1121824

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1121824

Country of ref document: HK

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20170302

Address after: Singapore Singapore

Patentee after: Avago Technologies Fiber IP Singapore Pte. Ltd.

Address before: Alton Park Road, Irvine, California, 16215, 92618-7013

Patentee before: Zyray Wireless Inc.

TR01 Transfer of patent right

Effective date of registration: 20181018

Address after: Singapore Singapore

Patentee after: Annwa high tech Limited by Share Ltd

Address before: Singapore Singapore

Patentee before: Avago Technologies Fiber IP Singapore Pte. Ltd.

TR01 Transfer of patent right