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

文档序号:6614073阅读:222来源:国知局
专利名称:本地片载系统和在本地片载系统中维持存储一致性的方法
技术领域
本发明涉及存储系统,更具体地说,涉及存储管理。
背景技术
片载系统(S0C)单元通常将电子系统的多个组件集成到单个芯片上。例 如,在一块芯片上包括数字信号、模拟信号、复合信号,常常具有射频功能。 SOC单元经常应用在嵌入式系统领域。但是,很多S0C单元专用于特定的应用, 如果用到其他的应用或者配置, 一些组件将不再用到。例如,在一种配置中 用到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通过高速缓存一致性非统一存储访问
(CC而MA)的可扩展一致性接口连接。
优选地,所述片载存储器是静态随机访问存储器(SRAM),所述本地控制 器是节点控制器。
根据本发明的一方面,提供在本地SOC中维持存储一致性的方法,所述 本地SOC是共享存储系统的一部分,所述方法包括 接收远程SOC的远程控制器访问存储位置的请求;
从所述存储位置发送被请求的数据给所述远程SOC的远程控制器;以及
将标识所述远程SOC的条目存储在本地片载存储器中。
优选地,所述请求是独占请求,所述独占请求允许所述远程SOC远程修
改存储在所述存储位置的数据副本。
优选地,所述方法还包括通过本地节点控制器接收所述请求。
优选地,所述片载存储器是静态随机访问存储器(SRAM)。
优选地,所述存储位置的地址是共享全局存储空间的一部分,所述共享
全局存储空间包括所述共享存储系统的所有存储单元的存储地址。
优选地,所述条目包括显示所述访问存储位置的请求是读取存储位置的
数据还是独占该存储位置的域。
优选地,所述条目包括用于显示所述条目是否包含有效数据的域。 优选地,所述条目包括用于存储被请求的存储位置的地址或者部分地址的域。
优选地,所述部分地址是被请求的存储地址的标签。 优选地,条目中的域存储用于标识所述远程SOC的数据。 优选地,所述域的每位对应于共享存储系统的中的SOC,所述共享存储系 统包括多个SOC;
如果某位设为1,则表示该位所对应的SOC已经请求访问所述存储位置。
优选地,所述方法还包括在发送步骤之前,确定所述本地SOC是否独占 所请求的数据。
优选地,所述本地soc和远程soc通过高速缓存一致性非统一存储访问
(CCNUMA)的可扩展一致性接口连接。


下面将结合附图及实施例对本发明作进一步说明,附图中 图1是示范性的片载系统(S0C)的示意图2A是本发明的一个实施例中,示范的S0C和关联的全局地址空间的示 意图2B是本发明的一个实施例中,使用全局地址空间的S0C的节点控制器 执行步骤的流程图3A是示范性的共享存储系统300;
图3B是根据本发明的一个实施例的在共享存储系统中维持存储一致性的 示意图3C1-3C2是本发明的一个实施例中,在共享存储系统中为独占请求维 护存储一致性的示意图3D是本发明的一个实施例中,共享存储系统中本地S0C执行的步骤的 流程图3E是本发明的一个实施例中,共享存储系统的本地S0C和/或远程S0C 执行的步骤的流程图3F是本发明的一个实施例中,本地S0C在接收到存储访问请求时执行 的步骤的流程图4A是示范性集群系统;
图4B是本发明的一个实施例的"拉(pull)"模式发消息示意图; 图4C是本发明的一个实施例的"推(push)"模式发消息的示意图; 图4D是本发明的一个实施例中,执行pull模式的本地SOC执行的步骤 的流程图4E是本发明的一个实施例中,执行pull模式的远程SOC执行的步骤 的流程图4F是本发明的一个实施例中,执行push模式的远程SOC执行的步骤 的流程图5A是本发明的一个实施例中,存储位置与存储锁之间的关联的示意图; 图5B是示范性锁条目的示意图5C1-5C3是本发明的一个实施例中,测试-设置模式中存储锁的操作的 示意图5C4是本发明的一个实施例中,测试-设置模式下节点控制器执行的操 作的示意图5D1-5D3是本发明的一个实施例中,定序(sequencer)模式的存储锁 的操作的示意图5D4是本发明的一个实施例中,定序模式的节点控制器执行的步骤的 流程图5D5是本发明的一个实施例中,请求者在定序模式下执行的一些步骤 的流程图。
本说明书将结合这些附图来描述本发明。附图中,相同的附图标记用于 表示相同或者功能相似的部件。另外,附图标记中最左边的数字表示最先出 现该附图标记的附图。
具体实施例方式
本说明书描述多用适用存储器的方法和系统。具体地,在不同的应用中, 让S0C的片载存储器实现不同目的的方法和系统。
本说明书公开了结合了本发明的特征的一个或多个实施例。所公开的实 施例仅仅用于举例,本发明的范围不限于所公开的实施例。本发明的范围由 权利要求决定。
本说明书中,"一个实施例"、"实施例"、"一个示范的实施例"等表示所 述的实施例包括特定的特征、结构或者特性,但是不要求每个实施例都包括
该特定的特征、结构或者特性。另外,"一个实施例"、"实施例"、"一个示范 的实施例"等不必须指向相同的实施例。另外,当结合一个实施例描述特定 的特征、结构或者特性时,不管是否明确指出,都可认为将这些特征、结构 或者特性结合到其他实施例是本领域的公知技术。
示范的片载系统(soc)
在详细描述本发明的实施例之前,描述实施本发明的示范环境是有帮助
的。在一个示范环境中,在多处理器的片载系统(soc)单元中实施本发明,
该SOC包括片载存储器,并连接外部存储器。图l示出了SOC100a, S0C100a 包括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也可将S0C 110a的其他组件 连接到外部存储器106a,例如通过总线114a。 NC 104a用于与处理器110a-k 通信。NC104a可用作与其他S0C单元或者S0C单元的处理器通信的接口。节 点控制器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和0CM 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是0CM地址204 (其中,x和z是正数,且z大于x)。例如,如 果EM 108是1G比特(GB),则EM地址范围是O到(23Q-1)(也就是说,x是 30)。如果OCM 108a是4 M比特(MB),则全局地址空间中的OCM地址是23G到(232-1 )(也就是说z是32)。因此,通过组合EM地址202和OCM地址204, 全局地址200则从0到(232-1),而不是O到(23G-1)。所以,如果一些应用 程序要求快速的存储访问,它们可通过地址范围2lU (2Z-l)来使用OCM 108a, 例如本实施例中,从230到(232-1 )。
如图2A所示,存储控制器102a和节点控制器104a接收带有相关联地址 的读写请求,例如来自处理器110a-k的读写请求。节点控制器104a判断该 地址是否落入期地址范围2x到(2Z-1)。如果地址落入2x到(2Z-1)的范围, 那么,存储控制器102a解码所提供的地址,并访问OCM 108a中对应的存储 位置,执行所请求的读或写。如果地址落入范围O到(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将每个0CM 108a-n用作目录, 以追踪系统300中的共享数据。OCM 108a通过存储共享存储的位置的条目来 追踪共享数据。在一个实施例中,每个条目包括但是不限于下面的域
域Valid(V),用于表示远程节点是否具有有效的数据副本;
域Dirty (d),用于表示发送到远程节点的数据是否被该远程节点修改, 也就是说,远程节点是否对数据做出"独占"请求。
域Tag,用于标识被请求的本地存储位置;以及
域Vector (vec),用于标识请求存储位置中的数据的远程SOC。例如, vec可包括多个位,每个位对应系统300中的SOC。在图3A的实施例中,如 果SOC 100j请求数据,那么,vec的第j位就设为l,表示SOC100j请求了 数据。在一个替换实施例中,通过将vec域的第T位设为1,可在vec域中将 SOC 100j的处理器PT表示为请求的发起人。
在后文参考图3A的示范例子中,SOC 100a称为与EM 106的本地存储位 置对应的本地SOC,其他所有的S0C100b — 100n称为远程S0C。 OCM 108a的条
目用于掌握哪个SOC具有与EM 106a的存储位置B对应的数据的副本。系统 300的存储位置B中具有的数据副本可以与系统300的SOC的一样多。因此系 统300具有n个S0C,所以系统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,同时将数 据提供给对应的S0C100j。 OCM 108a条目如下修改dirty位设为O, vector 域的第j和第n位设为1。这表示SOC 100j和lOOn具有共享的、存储位置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位是l,那么SOC 100n是当前所有者,具有本地B的dirty副 本。这种情况下,节点控制器104a向SOC IOO发出清洗命令。在接收到清洗 命令时,SOC lOOn回发它的数据副本,并无效其副本。随后,节点控制器104a 将接收自SOC lOOn的数据副本传送到进行请求的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的处理器P^110^发出。 该请求可通过消息或者信号从节点控制器104j发送到节点控制器104a。 NC 104a响应所接收的来自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,以将SOC100j的处理器PT表示为请求的发起者。在图3B所示 的实施例中,v设为1以显示该条目是有效的;d设为0,因为S0C100j的处 理器P^进行了读请求,且没有修改从存储位置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设为l,因 为请求了独占性占有,并且SOC 100a的存储位置B的副本不是最新的副本; tag设为B,因为请求了存储位置B的数据。在上述的实施例中,因为请求是 从SOC 100j发出的,所以vce域的第j位被设为1。在替换的实施例中,通 过在vec域中将第T位设为1,将S0C100j的处理器&表示为该请求发起者。 如果SOC 100a的进程、线程或者处理器打算访问存储器B的数据,请求者通 过请求SOC 100j的数据来读取这些数据,如后文结合图3C2所述。
在图3C2是重新取得EM 106a的存储位置B对应的数据的示意图,在上 述的实施例中,SOC 100j的NC 104j请求独占这些数据。
在图3C2所示的实施例中,处理器PK请求存储位置B的数据。节点控制
器100a査找0CM 108a中与tag B对应的条目306。因为,在图3C1所示的实 施例中,SOC lOOj的处理器Pr请求对存储位置B的数据的独占,所以NC 104a 向NC 104J发送请求以发送与EM 106a的存储位置B对应的数据。节点控制 器108j访问与存储位置B对应的数据,例如,从处理器高速缓存(未示出) 访问,并将数据发送给NC 104a。因为节点控制器108a从SOC lOOj重新读 取数据,所以它再次更新OCM 108a的条目306,如图3C2所示。
在图3C2所示的实施例中,如果NC 104a请求独占,则v设为0以表明 SOC lOOj中该条目不再有效,d设为0。如果NC 104a仅仅请求读数据,那么 v保持为1,以表明SOC 100j仍然具有有效副本。但是,d设为0以表明SOC lOOj对所请求的数据,也就是位于SOC 100a和lOOj的处理器高速缓存共享 的相同数据的副本不再具有独占。Tag依然保持为B。
要意识到,图3B、 3C1和3C2所示的元件的数目是任意的,正如本领域 的技术人员所认识到的,所述数目可根据应用情况进行改变。为便于说明, 图3B、图3C1和3C2不再出现互联302。
图3D示出了根据本发明的一个实施例的共享存储系统中,本地S0C在接 收到来自远程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接收的数据发送到请求数据的远程S0C。
步骤322中,如果在步骤316中确定本地存储器存在与步骤314中请求 的存储位置对应的有效数据,那么,就从步骤314所接收的请求确定该远程 节点是否请求独占。
步骤324中,条目由远程SOC存储在对应请求的本地OCM中。例如,如 果远程SOC请求独占,就做出条目(如图3C1所示的条目306),其中的dirty 位设为1。如果远程S0C仅仅是读请求,就做出条目(如图3B所示的条目304), 其中的dirty位设为0。
步骤326中,将请求的存储位置的数据发送到远程SOC。如上所述,这些 数据可由本地节点控制器通过总线302发送到远程节点控制器。
图3E示出了根据本发明的一个实施例的共享存储系统中,本地S0C和远 程SOC执行的流程。
步骤332中,远程S0C向本地S0C发送请求,请求存储位置的数据。本 地节点控制器可接收这种请求,本地节点控制器与远程节点控制器连接。该 请求将标识将要访问的本地S0C的存储位置,以及标识做出请求的远程S0C。 该请求也标识远程S0C是否仅仅打算读取本地SOC的存储位置,或者要独占 存储位置。在一个实施例中,本地SOC和远程SOC共享全局存储地址空间,
远程soc使用典型的加载/存储指令访问本地soc中的存储位置。
步骤334中,本地节点控制器接收远程S0C在步骤332中发送的请求。 本地节点控制器在本地S0C中根据接收请求的顺序,接收请求和区分请求的 优先级。
步骤336中,本地节点控制器确定步骤334中接收的请求指向的存储位 置是否具有有效数据。如果本地0CM中被请求的存储位置具有有效数据,就 通过检测条目来检测数据的有效性。例如,如果本地0CM中存在被请求的存 储位置的条目,以及该条目的dirty位设为1,那么,本地S0C的存储位置就 不含有有效数据。如果条目的dirty位设为0,那么本地S0C的被请求的存储
位置就具有有效数据。如果本地OCM中不存在被请求的存储位置的条目,那 么,就假定被请求的存储位置中存储有效数据。
步骤338中,如果节点控制器确定本地SOC的被请求的存储位置不含有 有效数据,那么,本地NC基于本地OCM的条目中的vector域,从具有有效 数据的SOC请求数据。
步骤340中,本地SOC将其从步骤338中的SOC接收的数据给远程SOC。 本地SOC也使用所接收的数据更新本地存储器,以及更新本地OCM的条目以 表明本地SOC具有非dirty的有效数据。
步骤342中,本地NC将对应于该请求的条目存储到本地OCM中。例如, 如果远程SOC请求独占性占有,就生成图3C1所示的条目306,该条目的dirty 位为l。如果远程SOC做出只读请求,那么,就做出如图3B所示的条目304, 该条目的dirty位为O。
步骤344中,本地NC将被请求的数据发送到远程NC。如上所述,可通过 总线302发送数据。
图3F示出了本发明的一个实施例中,NC在接收到本地处理器的存储器访 问请求时执行的步骤。在该实施例的如下所述的步骤中,NC和处理器位于相 同的S0C上。例如,本地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中,本地S0C响应步骤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。在本 发明的一个实施例中,S0C单元100a-n之间的通信通过发消息来实现。例如, 在"拉"(pull)模式环境中,源SOC单元的进程、线程或者处理器向目标SOC 单元发送信号,表示源SOC的已分配的存储器中存在消息。目标SOC,响应所
接收的信号,从源SOC的存储器取回或者"拉"回消息。在"推"(push)模
式的实施例中,源soc直接向目标soc已分配的存储位置传输或者"推"入
消息。在一个实施例中,源SOC和目标SOC是独立磁盘冗余阵列(RAID)系 统的一部分,从源S0C到目标S0C的消息是"搏动"(heartbeat)通知,用 于表明源SOC对目标SOC的活动操作。拉和推模式的消息将在下面进行详细 描述。
拉模式的消息
图4B示出了本发明的一个实施例的推模式的消息。如图4B所示,SOC100j 向SOC 100a发送信号,表示OCM 108j存在消息。该消息可以来自SOC 100j
的处理器,例如处理器110j^,或者来自运行在处理器11(^-110T的进程或者
线程。可通过网络402从节点控制器104j向节点控制器104a发送信号。在 一个实施例中,发信号的过程要求向SOC 100a的存储位置写入位,以表示OCM 108j中的消息。节点控制器104a响应从节点控制器104j接收的表示OCM 108j 中的消息的信号,取回OCM 108j中的消息。在一个实施例中,0CM108j中的 存储位置是SOC单元100a-n共享的全局地址空间的一部分,以及节点控制器 104a访问OCM 108J中已经分配给SOC 100a的消息的存储位置。在另一个实 施例中,OCM 108j将消息存储在先入先出(FIFO)队列中,NC 104a读取OCM 108j的队列中的消息。在另一个实施例中,在接收到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单元接收的消息的"信箱",可以隔离EM106,使其远离有病毒 的消息。本实施例的另一个优点是发消息的速度,因为OCM 108a和OCM 108j 是共芯片的,且通常是快速RAM例如SRAM。消息404是示范的可用的消息格 式。消息404包括以下的域
域E表示错误;
域R表示请求确认,例如,发送消息的源SOC将设置该位,以请求目标 SOC在处理该消息后发送一个确认;
域A表示确认,目标SOC向发送原消息的源SOC发送确认消息之后,设 置该位;
域RSVD表示实现特定用法的保留域;
域"Status"表示处理消息的结果,例如消息可能请求目标SOC执行一 定的步骤,该状态域表示步骤是否完成,以及是否有与这些步骤有关的结果;
域INTR表示可能在目标SOC产生的中断的类型(如果有中断的话)和/ 或消息的优先级;
域RID包括唯一标识消息的数据;
域SID表示产生消息的源SOC;以及
域"Software D印endant Context"(软件依赖内容)表示消息的有效载 荷。例如,消息的有效载荷包括可由所接收的SOC处理的数据。
要意识到,消息的内容和域是任意的,可根据设计的要求而变化。在一 个实施例中,OCM 108a和108j的所有或者部分都用作发送或者接收消息的信 箱。在另一个实施例中,SOC 100a或者SOC 100j的任何的存储器的特定部分 用做信箱。例如,EM 106a和EM 106j的部分可分别分配为代替OCM 108a和 108j信箱。分配EM 106的特定部分使得程序代码与消息中潜在的病毒隔开。
推模式的消息
图4C示出了本发明的一个实施例的推模式的消息。在本实施例中,SOC 100j将消息404发送或者"推"到SOC 100a的存储位置。来自SOC 100j的 消息可发送到或者推到OCM 108a中的特定位置或者"信箱"。发送到SOC 100a 的消息可以来自SOC 100j的处理器,例如处理器PRw。消息可由节点控制器 104j通过网络402发送到节点控制器104a。在一个实施例中,OCM 108 j的存 储位置是SOC 100a-lOOn共享的全局地址空间的一部分,节点控制器104a访 问OCM 108j中己经分配给该消息的存储位置,并写该存储位置。在另一个实
施例中,全局地址空间中为发送给SOC 100a的消息而分配的存储位置映射到 OCM 108a的存储位置。SOC 100a将OCM 108a用作信箱,以存储从其他SOC 单元接收的消息。在一个实施例中,OCM 108a以FIFO队列存储所接收的消息, NC 104a以FIFO顺序取得并处理OCM 108a中的消息。OCM 108a用作信箱, 以隔开EM106,让EM106远离可能存在于消息中的病毒或者恶意软件。例如, 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示出了远程S0C进行本发明的推模式发消息的流程图430。在一个 实施例中,流程430的步骤由远程节点控制器执行。
步骤432中,确定本地SOC中将要写入消息的存储位置。可以将本地SOC 中将要使用的存储位置预编程到远程SOC,或者本地SOC事先表示将要用于发 消息的存储位置。替换地,本地SOC中将要写入的存储位置可以是用于发消 息的全局地址空间的一部分。
步骤434中,远程SOC将消息写入到步骤432所确定的存储位置。替换 地,远程SOC的远程节点控制器将消息发送到本地SOC的本地节点控制器。
下面将描述节点控制器和片载存储器的存储器锁配置。
存储器锁
存储器锁是一种在多个"请求者"在几乎相同的时间里(例如,soc单元、
线程、进程和/或处理器)打算访问相同的存储位置的环境中增强对存储位置 的访问的限制的同步机制。锁是一种增强协作控制策略的方式。通常,互相 协作的请求者使用仲裁协议来决定哪个请求者得到访问存储位置的锁,仲裁 协议包括在请求者之间传递消息。但是,当多个请求者打算同时地访问相同 的存储位置时, 一般的仲裁方法是耗时的以及增加了系统开销。本发明下面
所述的实施例通过使用节点控制器104以及OCM 108来实施存储器锁,克服 了这种不足。存储器锁可在独立SOCIOO、共享存储器系统如系统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)的请求者序列。当访问存储位置的当前门票的 持有者释放锁之时,"当前门票+l"变成后续的当前门票值。具有该后续当前 门票值的请求者能够得到锁,并获得访问权以修改存储位置。
使用节点控制器104控制对EM 106的存储位置的访问,免除了处理器110 的仲裁负担,充分消除了由于仲裁而引起的总线堵塞。因为0CM 108是片载 的,所以访问0CM 108査找锁并确定是否授予对应的存储位置的访问权是快 速和有效的。
图5B是存储在0CM 108的存储位置中的锁条目。锁条目500是示范的格 式,其中的域及域的大小可根据具体情况而变化。锁条目500包括以下的域 域Mode表示使用的操作模式。例如,如果模式设为0,则表示使用"测试和设置"模式;如果模式设为1,则表示使用"定序器"模式。下面会对测
试和设置模式以及定序器模式进行更详细的描述。
域S或者Set仅仅用于测试和设置模式。当S为0时,锁是空闲的。如果 请求者尝试访问一个存储位置,而对应的锁条目S显示为空闲,那么,i将s 设为1并准许该请求者访问。将S位设为1,在功能上等于获得锁。己经获得 锁之后,就可以访问对应的存储位置。访问空闲的锁条目返回正常值O,软件 依赖内容(Software D印endent Context)域(如下所述)如之前一样是最 近保存的。获得锁之后,设置所有者身份(OID)域(下面有描述)以表示获 得该锁的请求者。
在请求者访问锁时,如果NC向请求者返回的S值为1,那么,OID域告 知请求者该位置已设置锁。因此,对应该锁的存储器位置无法访问。请求者 需要再次尝试以获得锁。
域"R"或"Recovery"位通常在恢复操作中设置。当R位设置位0时, 可正常对锁进行访问。在恢复过程中,当R位被设为1之时,重新声明不起 作用的或者闲置请求者当前占有的锁。例如,得到锁的处理器可能在释放所 获得的锁之前,出现故障而变为不起作用。当R设为1之时,可重设锁以还 原锁。当R位设为1时,还原软件能够强行释放锁,并重新初始化该锁所保 护的对应的存储位置。在还原过程中,启动还原处理的请求者将R设为O,并 宣布其他域的语义无效。OID设为执行该还原的请求者的ID。还原了锁之后, 锁就能够正常地起作用了。
域"下一票号"(Next Ticket)存储仅仅由定序锁模式使用的值。例如, 在EM 106中,NC 104在接收到访问一存储位置的请求时,在0CM 108中查找 与被请求的存储位置对应的锁。如果该锁已经占用,NC 104就向请求者返回 锁的下一票号域的当前值。接着,NC 104将下一票号域的值加1,并在该锁 被占用时向下一个请求者返回该值。因此,在等待访问存储位置的请求者有 效地将自己插入到一个队列中,访问顺序由被分配的票(Ticket)号决定。 如果锁是空闲的,就将当前的票分配给请求者,并准许该请求者访问对应的 存储位置。在一个实施例中,下一票号是6位的未指定的数字。在另一个实
施例中,下一票号是由NC 104产生的随机的文字和数字码。节点控制器随后
追踪文字和数字码产生的序列以及按照该顺序对访问进行授权。
域"当前票号"存储仅仅由定序锁模式使用的值。具有当前票号的请求者 被允许获得锁,以及访问对应的存储位置。为了释放该锁,请求者在锁的"当 前票号"域中存储值为"当前票号+l"的新值。这有效地允许队列中的下一 位请求者获得锁,以及访问存储位置。
域"软件依赖内容"(Software D印endent Context)是96位的域,获得 对应的锁的请求者可以读写该域。该域包含被锁保护的结构的指针。当请求 者获得锁时,他也得到与该锁对应的存储位置的指针,例如外部存储器的指 针。系统还原通常要求重建或者重新加载数据表。内容域可用于避免带有分 布表管理的显著性能问题。
如上所述,也可以使用内容域来实现有效的硬件信箱。使用这种受保护的 硬件邮箱,在交换没有显示出临时位置的数据时,可以避免高速缓存固有的 开销。
图5C1-5C3中示出了根据本发明的一个实施例的在测试-设置模式中的存 储器操作。在图5C1-5C3所示的实施例中,模式位设为0 (对于测试-设置模 式),没有使用下一票号和当前票域(NA),因为锁处于测试-设置模式。R位 是0,表明锁没有位于还原模式。在测试-设置模式的实施例中,值S等于0 表示锁是空闲的,S等于1表示锁已经被请求者获得。
如图5C1所示,NC 104接收请求者Rl的请求,以访问从而修改EM 106 中的存储位置X。 NC 104响应收到的请求,检测存储在0CM 108的存储位置Y 的、与存储位置X对应的锁条目500a。在锁条目500a中,S等于O就表示已 经获得锁,以及可以访问对应的存储位置。因此,NC104授予请求者R1访问 权,让其修改存储位置X。随后,NC 104或者请求者R1将锁条目500a修改 为锁条目500b。在锁条目500b中,S设为l, OID设为Rl,表示请求者Rl已 经获得存储位置Y的锁。
在图5C2中,NC 104接收请求者R2要访问进而修改EM 106的存储位置X 的请求。NC 104响应所接收的请求,检测存储在与存储位置X对应的存储位
置Y的锁条目500b。在锁条目500b中,S为1以及0ID为R1,表明当前是请 求者R1占有锁。这样,请求者R2不能修改对应的存储位置X。因此,NC104 拒绝请求者R2修改存储位置X的请求。为能够访问和修改存储位置X,请求 者R2将必须再次尝试。
在图5C3中,请求者Rl释放存储位置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接收到Rl修改EM 106的存储位置的请求。图5D1所 示的实施例的初始开始条件是Rl是第一个请求访问和修改存储位置X的请 求者,且没有在先的请求者。在NC 104检测0CM 108中的存储位置Y的锁500e 时,因为该初始条件,所以没有使用当前票号、下一票号和OID域(NA)。 NC 104响应所接收的请求,准许请求者R1访问和修改存储位置X,以及给R1分 配当前票号,例如"A"。 NC 104或者请求者R1将锁条目500e更新为锁条目 500f,锁条目500f表示当前票号为A,下一票号为A+1,以及0ID为R1,表 示请求者Rl当前占有0CM 108的存储位置Y的锁,并具有修改ME 106的存 储位置X的权利。
在图5D2中,NC 104接收请求者R2修改EM 106的存储位置X的请求。 NC 104响应该请求,检查与存储位置X对应的存储在存储位置Y的锁条目 500f。锁条目500f中,当前票号是A, 0ID是R1,表示该锁当前为请求者Rl 所占有。NC 104拒绝请求者R2的访问,并授予请求者R2下一票号值A+1。 当具有票号A的请求者Rl释放锁时,具有票号A+l的请求者R2将得到授权 以访问和修改存储位置X。 NC 104或者请求者R2将锁条目500f改为锁条目 500g,以表示下一票号为A+2。请求者R2之后的请求者将被授予票号A+2。 因此,在存储位置X不可用于修改时,将可以保护请求者的顺序。
图5D3中,请求者Rl释放存储位置X,因为R2是队列中的下一位并具有 票号A+1,因为R2得到授权访问和修改存储位置X。锁条目500g被更新为锁 条目500h,表示当前票号是A+1; 0ID是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)二二l); access and modify memory location X; Unlock(lock).
在上面的伪代码中,测试-设置命令引起节点控制器104返回存储在 0CM108的存储位置Y的条目的设置域的当前值。代码进行循环,直到锁是空 闲的,也就是说,直到节点控制器返回0,表示锁是空闲的,请求者R可获 得锁。测试-设置命令也控制节点控制器将存储位置Y的锁的设置域改为1。 所有者标识符域(0ID)的变化表示只有在设置域为0时,请求者R才是当 前所有者。请求者R访问和修改存储位置X。 Unlock (解锁)命令将设置域 改为0,以允许另外的请求者访问存储位置X。
参考图5A,在定序模式中,使请求者R访问存储位置X的软件伪代码如 下所示,其中,存储位置X与存储在存储位置Y的锁对应。
Ticket二Get一Ticket();
while(ticket!=Read—Current—Ticket 0);
access and modify memory location X;
Increment—Ticket ();
在上面这段伪代码中,Get—Ticket ()命令控制节点控制器104返回0CM 108的存储位置Y的条目的下一票号。该票号分配给请求者R,并存储在变 量"Ticket"中。Read_Current—Ticket ()命令让节点控制器104返回存储 在0CM 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其余部分存储位置的锁。
典型的计算机系统
在本文档中,词语"计算机程序媒介"和"计算机可用的媒介"通常指可 移动的存储单元、安装在硬盘驱动器中的硬盘以及信号(即,电子的、电磁 的、光学的或者其他类型的可通过通信接口接收的信号)。这些计算机程序 产品给计算机系统提供软件。在一个实施例中,本发明涉及这种计算机产品。 在一个实施例中,本发明使用软件来实现。软件可存储在计算机产品中, 并加载到使用移动存储驱动器、硬盘驱动器或者通信接口的计算机系统(例 如客户端或者主机)。处理器执行控制逻辑(软件)时,控制逻辑让处理器 处理本发明的功能。进一步地,传感器可以执行计算机可读的指令以收集数 据。再进一步地,临近的域收发器可执行计算机可读的指令,以与传感器和 /或探头进行通讯。
根据本发明的一方面,客户端可执行计算机可读的指令,以读取上述的 探头。此外,在一个实施例中,探头可以执行计算机可读的指令,以响应客 户端发射的信号,如本说明书的其他地方所述。
总结
上述对本发明的优选实施例的描述的目的是为了举例说明及描述。这些 实施例不是穷尽性的,也就是说本发明不受所公开的精确形式的限制;显然, 在本发明的教导下,可对这些实施例做出多种修改和变化。对实施例的选择 和描述是为了对本发明的原理及其实践应用做出最佳解释,以使本领域的技 术人员能够最好地利用本发明、以及为配合特殊用途对各种实施例进行修改。
本发明的范围由本发明的权利要求及其等同限定。上述对本发明的优选实施 例的描述的目的是为了举例说明及描述。这些实施例不是穷尽性的,也就是 说本发明不受所公开的精确形式的限制;显然,在本发明的教导下,可对这 些实施例做出多种修改和变化。对实施例的选择和描述是为了对本发明的原 理及其实践应用做出最佳解释,以使本领域的技术人员能够最好地利用本发 明、以及为配合特殊用途对各种实施例进行修改。本发明的范围由本发明的 权利要求及其等同限定。
权利要求
1、一种本地SOC,其特征在于,包括本地控制器;以及片载存储器;其中,所述本地控制器响应远程SOC的远程控制器的访问存储位置的请求,确定所述本地SOC是否独占所述存储位置,如果所述本地SOC独占性占有所述存储位置,就发送所述存储位置的数据,并将条目存储到所述片载存储器中,所述条目表示所述远程SOC已经产生请求。
2、 根据权利要求1所述的本地S0C,其特征在于,所述条目标识所述请 求是否请求独占所述存储位置。
3、 根据权利要求1所述的本地S0C,其特征在于,所述条目中的一个特 定域存储用于标识所述远程S0C的数据。
4、 根据权利要求3所述的本地S0C,其特征在于,所述域中的每一位对应于共享存储系统的中的S0C,所述共享存储系统包 括多个S0C;如果某位设为1,则表示该位所对应的soc已经请求访问所述存储位置。
5、 根据权利要求1所述的本地S0C,其特征在于,所述单元还包括连接 到本地S0C外接存储器的多个处理器以及存储控制器。
6、 根据权利要求1所述的本地S0C,其特征在于,所述本地SOC和远程 S0C通过高速缓存一致性非统一存储访问(CCNUMA)的可扩展一致性接口连接。
7、 根据权利要求1所述的本地S0C,其特征在于,所述片载存储器是静 态随机访问存储器,所述本地控制器是节点控制器。
8、 在本地SOC中维持存储一致性的方法,所述本地S0C是共享存储系统 的一部分,所述方法包括接收远程S0C的远程控制器访问存储位置的请求;从所述存储位置发送被请求的数据给所述远程S0C的远程控制器;以及 将标识所述远程S0C的条目存储在本地片载存储器中。
9、 根据权利要求8所述的方法,其特征在于,所述请求是独占请求,所 述独占请求允许所述远程S0C远程修改存储在所述存储位置的数据副本。
10、 根据权利要求8所述的方法,其特征在于,所述方法还包括通过本 地节点控制器接收所述请求。
全文摘要
本发明涉及本地SOC和在本地SOC中维持存储一致性的方法,所述SOC是分布式共享存储系统的一部分。本发明提供一种本地SOC单元,其包括本地控制器以及片载存储器。其中,所述本地控制器响应远程SOC的访问存储位置的请求,确定所述本地SOC是否独占所述存储位置,如果所述本地SOC独占所述存储位置,就发送所述存储位置的数据,并将条目存储到所述片载存储器中,所述条目表示所述远程SOC请求所述存储位置的数据。该条目表示远程SOC的请求是否独占该存储位置。该条目也包括用于将远程SOC表示为请求者的域。所请求的存储位置可以是外接到本地SOC单元,或者外接到本地SOC单元中。
文档编号G06F12/08GK101183338SQ20071018062
公开日2008年5月21日 申请日期2007年9月26日 优先权日2006年9月29日
发明者舫 庞 申请人:美国博通公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1