用于使用多个子锁来控制对具有读取器‑写入器锁的共享数据结构的访问的系统和方法技术方案

技术编号:11286702 阅读:124 留言:0更新日期:2015-04-11 01:15
一种用于控制对共享数据结构的访问的计算机系统,包括被耦合到第一和第二处理单元的共享存储器,其存储多锁以控制对共享数据结构的访问。该多锁包括与第一处理单元相关联的第一子锁和与第二处理单元相关联的第二子锁。该系统还包括数据访问控制引擎,其用以从第一处理单元接收用以从数据结构进行读取的请求,并且作为结果,确定在专用于第一处理单元的第一高速缓存器中是否存在第一子锁的私人可修改拷贝,如果在第一高速缓存器中存在第一子锁的私人可修改拷贝,则获取第一子锁的读部分且不跨相干性总线传送该获取,并且如果在第一高速缓存器不存在第一子锁的私人可修改拷贝,则将第一子锁从共享存储器加载到第一高速缓存器中,选中第一子锁的其他拷贝,并获取第一子锁的读部分。

【技术实现步骤摘要】
【国外来华专利技术】用于使用多个子锁来控制对具有读取器-写入器锁的共享数据结构的访问的系统和方法
技术介绍
现代计算机通过使用多处理器管芯和(在某些情况下)单个管芯上的多个处理器核来实现增加的性能。为了利用这些改善的硬件布置,创建软件以在单个处理器核上同时地运行多个线程。附图说明针对本专利技术的示例性实施方式的详细描述,现在将对附图进行参考,在所述附图中:图1a和1b示出了根据本公开的各种示例的用于控制对共享数据结构的访问的系统的替换框图;图2a-2i示出了根据本公开的各种示例的示例性存储器图;图3示出了根据本公开的各种示例的数据访问控制系统;图4示出了根据本公开的各种示例的用于控制对共享数据结构的访问的方法的流程图;以及图5示出了根据本公开的某些示例的示例性子锁打包方案。表示法和命名法遍及以下描述和权利要求使用某些术语来指示特定系统部件。本领域的技术人员将认识到计算机公司可用不同的名称来指示部件。本文并不意图区别在名称而非功能方面不同的部件。在以下讨论中和权利要求中,以开放末端方式使用术语“包括”和“包含”,并且因此应解释成意指“包括但不限于...”。并且,术语“耦合”意图指间接、直接、光学或无线电连接。因此,如果第一器件耦合到第二器件,则该连接可通过直接电连接、通过经由其他设备和连接的间接电连接、通过光学电连接或者通过无线电连接。本文所使用的术语“处理单元”指的是执行计算任务的物理或逻辑资源。逻辑资源的示例包括线程和进程。物理资源的示例包括虚拟CPU核、物理CPU核、共享一个或多个高速缓存器层级的分组CPU核、公共管芯上的CPU核、公共多芯片模块上的CPU核、公共插座上的CPU核、链接CPU核以及公共底架中的CPU核。本文所使用的术语“锁”在被用作名词时指的是用以提供对数据、特别是数据结构的同时访问的控制的机制。本文所使用的术语“锁”在被用作动词时指的是其中处理单元告知其他处理单元其对与锁相关联的数据具有独有访问的动作。这也可称为“获取”锁。本文所使用的术语“MESI”或“MESI协议”指的是其中高速缓存线被标记为已修改、独有、共享或无效的高速缓存相干性协议的一般使用系列。本文所使用的术语“选中”指的是通知其他高速缓存器单元其保持的高速缓存线的拷贝可能不再被认为是最新的,并且如果其希望满足对所述线路的访问,则其必须首先更新其本身。例如,在MESI协议中,选中包括“广播无效”和“读取意图修改”消息。具体实施方式以下讨论针对本专利技术的各种示例。虽然这些示例中的一个或多个可以是优选的,但不应将公开的示例解释为或以其他方式被使用作为限制本公开的范围,包括权利要求。另外,本领域的技术人员将理解的是以下描述具有广泛的应用,并且任何实施例的讨论仅仅意图是该实施例的示例,并且并不意图宣布公开(包括权利要求)的范围局限于该实施例。多个线程可对共享数据结构进行操作(例如,从其读取或向其写入)。在这种情况下,线程应相互协调,使得不会有超过一个线程同时地尝试向数据结构进行写入。锁是用于限制对共享数据结构的访问的同步机制,其使得处理单元(例如,线程、进程、硬件SMT上下文、CMP核、CPU)能够相互协调以避免其中超过一个处理单元同时地尝试向数据结构进行写入的情况。以简单形式,锁可具有读部分和写部分两者。写部分表示另一处理单元是否正在向与锁相关联的数据结构进行写入,并且可以是二进制的(例如,锁的低位表示处理单元正在向数据结构进行写入或者没有处理单元正在向数据结构进行写入)。读部分可采取计数器的形式,其在处理单元请求读取数据结构时递增并在处理单元停止读取数据结构时递减。在本示例中,一次可有多个处理单元读取数据结构。在许多情况下,处理单元主要从该数据结构进行读取;然而,处理单元执行写(即,增加锁的读部分的值)以获取锁的读部分。例如,当处理单元获取(例如,增加)锁的读部分时,这通常被传送至其他处理单元,因为其他处理单元中的一个可能期望执行写,其直到锁的读部分被释放(例如,计数器值是零)之前不能发生。换言之,获取锁的读部分迫使写到其他处理单元以保持相干性。可以是从一个处理核到另一个的此通信称为“相干性业务”。相干性业务可导致性能瓶颈,即使在其中处理单元大部分正在从共享数据结构进行读取的情况下。结果,性能的差异在确保数据结构为只读时可以是大的,其与在即使小部分的时间中向数据结构写入相比并不要求锁,该写入要求其中从数据结构的读取和向其写入两者都产生相干性业务的锁定机制。如上文所解释的,在许多情况下,读操作在数量上超过写操作一个数量级或以上。因此,在读操作期间获得性能(例如,在处理单元从共享数据结构进行读取的情况下减少相干性业务)是有益的。根据本公开的各种示例,针对数据结构定义“多锁”。多锁包括用于每个处理单元的子锁。类似于上文所解释的锁,子锁每个具有读部分和写部分。在一个实施方式中,子锁可以是“pthreadrwlockt”(例如,根据可移植操作系统接口(POSIX)规范)或其他类似机制(例如,Windows中的SRW锁)。然而,当处理单元获取子锁的读部分时,其仅对其自己的子锁这样做,并且这不一定被传送至其他处理单元。另外,当处理单元期望向共享数据结构进行写入时,处理单元获取包括在用于该数据结构的多锁中的所有子锁的写部分。因此,处理单元检查每个子锁以确保不存在读取器(例如,处理单元检查每个子锁的读部分是零,指示不存在读取器)。如下面将更详细地解释的,获取多锁中的每个子锁的写部分导致相干性业务,因为要求获取写部分的处理单元将其获取传送至其他处理单元,使得其可使其子锁的其拷贝无效。在某些情况下,例如,当处理单元在任何其他处理单元尝试获取该锁(读或写)之前获取写锁、将其释放和再次获取写锁时,写锁的重新获取可能未被传送至其他处理单元。然而,在任一种情况下,都不产生其中处理单元获取其子锁的读部分的相干性业务。在许多情况下,读操作大大地在数量上超过写操作,并且因此通过减少读操作期间的相干性业务来实现性能益处。现在转到图1a,根据本公开的各种示例示出了系统100。系统100包括第一处理单元102和第二处理单元104。每个处理单元102、104包括各数据访问控制引擎106、108和各专用高速缓存器110、112。高速缓存器110、112经由相干性总线114被耦合,其可以是点到点相干性链路,诸如,例如HyperTransport(HT)或QuickPath互连(QPI)。相干性总线114使得能够实现高速缓存器110、112之间的相干性业务,例如以实现高速缓存器相干性方案,诸如MESI协议。在相干性总线114上发射的相干性信息或业务可包括例如MESI状态信息或与实现另一高速缓存相干性协议有关的信息。每个处理单元102、104还被耦合到共享存储器116,其包括与被处理单元102、104共享的数据结构相关联的存储多锁118。多锁118包括与第一处理单元102相关联的第一子锁120和与第二处理单元104相关联的第二子锁122。应认识到的是系统100是一个示例,并且处理单元和硬件的其他布置在本公开的范围内。例如,图1b示出了替换系统150。系统150是双插座系统,插座152包含两个处理单元(例如,处理核)156、158且插座154同样地包含两个处理单元160、162。每个处理单本文档来自技高网...
<a href="http://www.xjishu.com/zhuanli/55/201280075064.html" title="用于使用多个子锁来控制对具有读取器‑写入器锁的共享数据结构的访问的系统和方法原文来自X技术">用于使用多个子锁来控制对具有读取器‑写入器锁的共享数据结构的访问的系统和方法</a>

【技术保护点】
一种用于控制对共享数据结构的访问的计算机系统,包括:第一处理单元,被耦合到专用于第一处理单元的第一高速缓存器;第二处理单元,被耦合到专用于第二处理单元的第二高速缓存器;共享存储器,被耦合到第一和第二处理单元,存储多锁以控制对被第一和第二处理单元共享的数据结构的访问,多锁包括与第一处理单元相关联的第一子锁和与第二处理单元相关联的第二子锁,子锁包括读部分和写部分;相干性总线,将第一和第二高速缓存器耦合并在第一和第二高速缓存器之间载送相干性信息;以及数据访问控制引擎,用以从第一处理单元接收用以从数据结构进行读取的请求,并且作为结果:  确定在第一高速缓存器中是否存在第一子锁的私人可修改拷贝;  如果在第一高速缓存器中存在第一子锁的私人可修改拷贝,则获取第一子锁的读部分且不跨相干性总线传送该获取;以及  如果在第一高速缓存器中不存在第一子锁的私人可修改拷贝,则在第一高速缓存器中没有拷贝的情况下将第一子锁加载到第一高速缓存器中,选中第一子锁的其他拷贝,并获取第一子锁的读部分。

【技术特征摘要】
【国外来华专利技术】1.一种用于控制对共享数据结构的访问的计算机系统,包括:第一处理单元,被耦合到专用于第一处理单元的第一高速缓存器;第二处理单元,被耦合到专用于第二处理单元的第二高速缓存器;被耦合到第一和第二处理单元的共享存储器,存储多锁以控制对被第一和第二处理单元共享的数据结构的访问,多锁包括与第一处理单元相关联的第一子锁和与第二处理单元相关联的第二子锁,子锁包括读部分和写部分;相干性总线,将第一和第二高速缓存器耦合并在第一和第二高速缓存器之间载送相干性信息;以及数据访问控制引擎,用以从第一处理单元接收用以从数据结构进行读取的请求,并且作为结果:确定在第一高速缓存器中是否存在第一子锁的私人可修改拷贝;如果在第一高速缓存器中存在第一子锁的私人可修改拷贝,则获取第一子锁的读部分且不跨相干性总线传送该获取;以及如果在第一高速缓存器中不存在第一子锁的私人可修改拷贝,则在第一高速缓存器中没有拷贝的情况下将第一子锁加载到第一高速缓存器中,选中第一子锁的其他拷贝,并获取第一子锁的读部分。2.权利要求1所述的计算机系统,其中,所述相干性总线载送实现MESI高速缓存相干性协议的相干性信息。3.权利要求2所述的计算机系统,其中,如果将第一子锁存储在第一高速缓存器中的高速缓存线处于已修改或独有状态,则第一子锁的拷贝是私人可修改的。4.权利要求2所述的计算机系统,其中,如果将第一子锁存储在第一高速缓存器中的高速缓存线处于共享或无效状态或者不存在将第一子锁存储在第一高速缓存器中的高速缓存线,则第一子锁的拷贝不是私人可修改的,并且其中,如果将第一子锁存储在第一高速缓存器中的高速缓存线处于共享状态,则在相干性总线上向第二高速缓存器发布选中并获取第一子锁的读部分。5.权利要求2所述的计算机系统,其中,所述数据访问控制引擎还被配置成从第一处理单元接收用以向共享数据结构进行写入的请求,并且作为结果,针对多锁的每个子锁:如果读部分指示不存在已获取子锁的读部分的处理单元且将子锁存储在第一高速缓存器中的高速缓存线处于已修改或独有状态,则获取子锁的写部分;如果读部分指示不存在已获取子锁的读部分的处理单元且将子锁存储在第一高速缓存器中的高速缓存线处于共享状态,则获取子锁的写部分并向除第一高速缓存器之外的高速缓存器发布选中;以及如果在第一高速缓存器中不存在子锁的私人可修改拷贝,则在第一高速缓存器中没有拷贝的情况下将子锁加载到第一高速缓存器中,获取子锁的写部分,并且如果读部分指示不存在已获取子锁的读部分的处理单元、则向除第一高速缓存器之外的高速缓存器发布选中。6.权利要求1所述的计算机系统,其中,当从共享存储器将第一子锁加载到第一高速缓存器中时,在相干性总线上向第二高速缓存器发布选中。7.一种用于控制对共享数据结构的访问的方法,包括:存储多锁以控制对数据结构的访问,多锁包括与第一处理单元相关联的第一子锁和与第二处理单元相关联的第二子锁,每个子锁包括读部分和写部分;从第一处理单元接收用以从数据结构进行读取的请求;确定在专用于第一处理单元的第一高速缓存器中是否存在第一子锁的私人可修改拷贝;如果在第一高速缓存器中存在第一子锁的私人可修改拷贝,则获取第一子锁的读部分且不跨第一高速缓存器与专用于第二处理单元的第二高速缓存器之间的相干性总线传送该获取;以及如果在第一高速缓存器中没有拷贝,则将第一子锁加载到第一高速缓存器中,并且如果在第一高速缓存器中不存在第一...

【专利技术属性】
技术研发人员:JA图塞克
申请(专利权)人:惠普发展公司有限责任合伙企业
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1