多线程程序的低功率执行的制作方法

文档序号:6352305阅读:144来源:国知局
专利名称:多线程程序的低功率执行的制作方法
多线程程序的低功率执行
背景技术
除非本文另外指出,否则本节中描述的手段不是本申请权利要求的现有技术,并且不应因包括在本节中而承认是现有技术。因为对电池或其他类型便携式电源的依赖,诸如普适计算(ubicomp)等一些计算环境可以包括需要低能量利用的设备。在一些实现方式中,与单核架构相比,多核架构已经显示出了提供节约功率和能量的平台的能力,并且可以非常适合于ubicomp设备或其他类型的低功率计算设备。此外,ubicomp设备或其他类型的低功率计算设备可以合并执行并行或多线程程序的多核架构,来完成计算任务。因此,由于计算设备可能依赖于电池或其他类型的便携式电源,因此允许使用尽可能少的能量来执行并行或多线程程序的机制是重要 的。

发明内容
本公开总体上描述了一种第一处理元件执行多线程程序的一个或多个线程的实现方法。根据至少一些方法,可以实现条件加载(conditioanl load)。条件加载可以与第一处理元件用来执行多线程程序的一个或多个线程的同步原语相关联。在一些示例中,可以确定用于使用同步原语的变量的当前值是否在用于第一处理元件的高速缓存存储器中,并且可以至少基于高速缓存存储器中不存在所述当前值来阻止条件加载。此外,可以至少基于不存在所述当前值向第二处理元件转发一致性请求(coherence request)。然后可以至少基于一致性请求从第二处理元件接收所述当前值。然后可以将接收到的所述当前值与变量的期望值相比较,并且可以至少基于比较结果继续阻止条件加载指令。本公开还总体上描述了便于第一处理元件执行多线程程序的一个或多个线程的示例设备。第一处理元件可以实现与第一处理元件用来执行第一线程的同步原语相关联的条件加载指令。示例设备可以包括具有逻辑装置的一致性管理器。在一些示例中,该逻辑装置可以配置为确定用于使用同步原语的变量的当前值是否在用于第一处理元件的高速缓存存储器中,并且可以至少基于高速缓存存储器中不存在所述当前值来阻止条件加载。同样,逻辑装置可以被配置为至少基于不存在所述当前值向第二处理元件转发一致性请求。然后可以至少基于一致性请求从第二处理元件接收所述当前值。然后可以将接收到的所述变量的膳食当前值与所述变量的期望值相比较,并且可以至少基于比较结果继续阻止条件加载指令。本公开还总体上描述了执行多线程程序的一个或多个线程的示例系统。示例系统可以包括执行多线程程序的第一线程的第一处理元件。示例系统还可以包括执行多线程程序的第二线程的第二处理元件。第二处理元件可以实现与第二处理元件用来执行第二线程的同步原语相关联的条件加载指令。在一些示例中,第二处理元件可以包括一致性管理器。一致性管理器可以具有逻辑装置,该逻辑装置配置为确定用于使用同步原语的变量的当前值是否在第二处理元件的高速缓存存储器中,并且可以至少基于高速缓存存储器中不存在所述当前值来阻止条件加载。此外,逻辑装置可以被配置为至少基于不存在所述当前值向第一处理元件转发一致性请求。逻辑装置还可以配置为至少基于一致性请求从第一处理元件接收所述当前值,然后将接收到的所述当前值与所述变量的期望值相比较。逻辑装置还可以配置为能够至少基于比较结果继续阻止条件加载指令。本公开还总体上描述了示例计算机程序产品。在一些示例中,计算机程序产品可以包括信号承载介质,具有用于处理元件执行多线程程序的一个或多个线程的指令。指令在由逻辑装置执行时使逻辑装置实现与用于执行多线程程序的第一线程的同步原语相关联的条件加载指令。指令还可以使逻辑装置确定用于使用同步原语的变量的当前值是否在用于第一处理元件的高速缓存存储器中,并且可以至少基于高速缓存存储器中不存在所述当前值来阻止条件加载。同样,指令可以使逻辑装置至少基于不存在所述当前值向第二处理元件转发一致性请求。可以至少基于一致性请求从第二处理元件接收锁定变量的当前值。指令还可以使逻辑装置将接收到的所述变量的所述当前值与所述变量的期望值相比较,并且可以至少基于比较结果继续阻止条件加载指令。
·
以上发明内容仅仅是说明性的,而绝不是限制性的。除了上述示例性的各方案、各实施例和各特征之外,参照附图和以下详细说明,将清楚其他方案、其他实施例和其他特征。


根据以下说明和所附权利要求,结合附图,本公开的前述和其他特征将更加清楚。在认识到这些附图仅仅示出了根据本公开的一些示例且因此不应被认为是限制本公开范围的前提下,通过使用附图以额外的特征和细节来详细描述本公开,附图中图I示出了示例多核处理系统;图2示出了一致性管理器的示例架构的框图;图3-5示出了处理元件用来执行多线程程序的一个或多个线程的示例同步原语;图6是处理元件执行多线程程序的一个或多个线程的方法的流程图;图7示出了示例计算机程序产品的框图;以及图8示出了示例计算设备;以上附图均根据本公开的至少一些实施例布置。
具体实施例方式在以下详细说明中,参考了作为详细说明的一部分的附图。在附图中,类似符号通常表示类似部件,除非上下文另行指明。
具体实施方式
部分、附图和权利要求书中描述的示例性实施例并不是限制性的。在不脱离在此所呈现主题的精神或范围的情况下,可以利用其他示例或实施例,且可以进行其他改变。应当理解,在此一般性记载以及附图中图示的本公开的各方案可以按照多种不同配置来设置、替换、组合、和设计,这里明确设想所述不同配置并使其成为本公开的一部分。本公开涉及与一个或多个处理元件低功率执行多线程程序的一个或多个线程的方法、装置、系统、和计算机程序产品,等等。如本公开中所设想的,由于计算设备可能依赖于电池或其他类型的便携式电源,允许使用低能量执行并行或多线程程序的机制可能是重要的。在一些示例中,可以执行并行或多线程程序的设备可以具有包括多个处理器核作为处理元件的处理器架构,或者该设备可以包括具有分离的线程上下文功能的单个处理器核作为处理元件。在任一情况下,设备的处理元件可以共同地执行并行或多线程程序。涉及执行多线程程序的多个处理元件的耗能操作的一个示例是通常被称作紧密循环旋转(spinning)的操作。紧密循环旋转可以涉及一个或多个处理元件,所述一个或多个处理元件在尝试使用一个或多个同步原语来执行多线程程序的线程的同时被保持在紧密循环中。例如,一个或多个同步原语可以包括但不限于,锁定同步、障栅(barrier)同步或信号等待同步。以下的表I包括可以如何使用被视为锁定同步的一种同步原语来获取对执行多线程程序的线程的处理元件的锁定的示例。如以下更详细描述,对表I中示出的示例锁定同步的使用可能会导致紧密循环旋转。 表I
LockCode: Id Rl, Lockvar// RI = Lockvar
bneqz Rl, LockCodeIl 如火只丨!=0,则跳较个丄ockCode
test&setRl, Lockvar // 如果Rl为0,则将Lockvar以原子
//方式设为I
bneqz Rl, LockCode // 如果R1!=0,则跳转至LockCoderet
ReleaseCode: st Lockvar, #0Il Lockvar = 0
ret在一些示例中,为了获取锁定,尝试执行多线程程序的第一线程的第一处理元件可以使用表I中示出的示例锁定同步,表I以标记为“LockCode”的指令行开始。软件数据结构或表示锁定的锁定变量可以存储在示例锁定同步中的Lockvar所标识的位置。锁定变量可以保持在用于第一处理元件的高速缓存存储器中。当第一处理元件使用示例锁定同步时,首先将锁定变量的值从存储器或高速缓存存储器加载到用于标识为Rl的处理元件的寄存器上。例如,如果加载的锁定变量的值是“1”,则执行第二线程的第二处理元件可以保持锁定。因此,为了尝试获取执行第一线程的锁定,第一处理元件在加载到Rl中的锁定变量值变为值“0”之前可能需要保持等待。第一处理元件由于跳转回到标记为LockCode的指令行而在等待上花费时间,并且可以重复示例锁定同步中的指令。在该死循环期间,尝试执行第一线程的第一处理元件并不空闲。第一处理元件可以继续实现示例锁定同步的“Id”和“bneqz”指令,而同时继续检查加载到Rl中的锁定变量值是否改变。上述类型的紧密循环典型地浪费了与第一处理单元在该紧密循环中等待的时长成比例的能量。在一些示例中,由于第一处理单元继续处在通过使用表I中示出的示例锁定同步所引起的紧密循环中,因此最终可以发现加载到Rl中的锁定变量已经变为值“O”。值“0”可以指示先前保持锁定的第二处理元件已经释放了锁定。此外,使用示例锁定同步,第一处理元件可以执行示例锁定同步中标识为“test&set”部分的原子指令。“test&set”原子指令可以将第一处理器的高速缓存存储器中在位置LockVar处保持的锁定变量值读出到寄存器(例如,R1),并且测试该值。在一些示例中,如果寄存器中的值是“O”,则第一处理单元将值“I”写入到高速缓存存储器位置Lockvar。如果在“test&set”原子指令结束处寄存器中的值是“1”,则锁定获取失败了。根据示例锁定同步,该点处的获取失败会使分支跳转回到LockCode指令行,以重试锁定获取。注意,“test&set”原子指令是必要的,这是因为尝试执行第三线程的第三处理单元也可能在相同时间尝试获取对相同数据的锁定,并且仅一个处理元件可以在给定时间获得锁定。在一些示例中,使用表I中示出的示例同步锁定对于使用尽可能小的能量来执行多线程程序而言可能有问题。例如,第一处理元件可能在使用示例同步锁定的同时花费较高和/或浪费的能量,使得处理元件卡在紧密循环中。同样,继续访问其高速缓存存储器来测试锁定变量的值的第一处理元件也可能会花费较高和/或浪费的能量。在一些示例中,实现了用于处理元件执行多线程程序的一个或多个线程的方法。可以实现条件加载指令。条件加载指令可以与第一处理元件用来执行多线程程序的一个或多个线程的同步原语(例如,锁定同步、障栅同步、信号等待同步)相关联。在一些示例中, 可以确定用于使用同步原语的变量(例如,锁定变量)的当前值是否在第一处理元件的高速缓存存储器中,并且可以至少基于高速缓存存储器中不存在当前值来阻止条件加载。同样,可以至少基于用于第一处理元件的高速缓存存储器中不存在变量当前值向第二处理元件转发一致性请求。然后可以至少基于一致性请求从第二处理元件接收变量的当前值。然后可以将接收到的当前值与变量的期望值相比较,并且可以基于比较结果继续阻止条件加载指令。阻止和/或继续阻止条件加载指令可以一定程度上避免或最小化上述能量浪费紧密循环。图I示出了根据本公开至少一些实施例的示例多处理元件系统100。如图I所示,多处理元件系统100包括处理节点110和处理节点120。在一些示例中,多处理元件系统100的元件可以经由通信通道130通信耦合。同样如图I所示,处理节点110包括处理元件112、高速缓存存储器114和一致性管理器116,而处理节点120包括处理元件122、高速缓存存储器124和一致性管理器126。尽管图I至所示的多处理元件系统100包括两个分开的处理节点,但是本公开不限于具有仅两个处理节点的多处理元件系统,因为上多处理元件系统可以具有多于两个处理节点。同样,本公开也可以适用于线程在驻留在不同芯片上的处理器或处理元件上运行的多芯片多处理器系统、线程在芯片上的不同核上运行的多核芯片、以及线程在相同核上的不同线程上下文上运行的多线程核。在一些示例中,多处理元件系统100可以用于完成包括一个或多个并行或多线程程序的执行的计算任务。例如,多线程程序的分开的线程可以由处理节点110和120的元件(例如处理元件112、122)分开执行,以完成至少一部分计算任务。如以下更详细描述的,为了执行多线程程序的一个或多个线程,处理节点(例如,处理节点110)的第一处理元件(例如,处理元件112)可以实现条件加载指令。在一些示例中,条件加载指令可以与用于执行多线程程序的至少一个线程的同步原语相关联。在一些示例中,第一处理元件的高速缓存存储器(例如,高速缓存存储器114)可以包括,或者可以不包括使用用于同步原语的变量(例如,锁定变量)的值。如果高速缓存存储器不包括变量的值,则处理节点的一致性管理器(例如,一致性管理器116)可以阻止条件加载指令,然后(例如,经由通信通道130)转发一致性请求。可以向第二处理元件(例如,处理元件122)转发该请求,第二处理元件可以具有第二处理器元件的高速缓存存储器(例如,高速缓存存储器124)中包括的变量的当前值。在一些示例中,条件加载指令可以采用各种格式。在一个示例中,条件加载指令可以采用一个存储器操作数和一个目的地寄存器,隐含期望针对该操作数的预定值,或者隐含期望从存储器加载的值必须与目的地寄存器中保持的值匹配。备选地,在其他示例中,条件加载指令可以采用一个存储器操作数、包含期望值的一个寄存器操作数、以及目的地寄存器。在一些示例中,第二处理元件可以通过提供变量的当前值来响应一致性请求。处理节点110的一致性管理器可以接收变量的当前值。在一些示例中,一致性管理器可以将变量的当前值与期望值相比较。例如,期望值可以是与正使用的同步原语的类型有关的值。例如,对于锁定同步,期望值可以指示处理元件是否对数据具有锁定,第一处理元件可能需要等待所述数据直到锁定变为可用为止。如果比较结果指示变量的期望值和当前值不匹配,则一致性管理器可以阻止第一处理元件执行条件加载指令。例如,对条件加载指令的阻止包括扣留(Withhold)来自第一处理元件的变量的当前值。然后可以将第一处理元件置·于各种可能的能量节省模式和/或状态下,直到去除了条件加载指令上的阻止为止。在一些示例中,如果在附加一致性请求或响应之后,变量的期望值和当前值匹配,则可以去除阻止。例如,当使用锁定同步时,第二处理元件随后释放其对数据的锁定。图2示出了根据本公开的至少一些实施例的一致性管理器116的示例架构的框图。如上所述,对于图I中的多处理元件系统100,处理节点110包括一致性管理器116。在一些示例中,一致性管理器116包括配置或布置为便于处理节点110的处理元件112执行多线程程序的一个或多个线程的特征和/或逻辑装置。在一些示例中,处理节点120的一致性管理器126实质上可以具有与图2中的一致性管理器116所示相同的示例架构。在这些示例中,一致性管理器126还可以包括配置或布置为便于处理节点120的处理元件122执行多线程程序的一个或多个线程的特征和/或逻辑装置。图2的示例一致性管理器116包括一致性逻辑装置210、控制逻辑装置220、存储器230、输入/输出(I/O)接口 240、以及可选地一个或多个应用程序250。如图2所示,一致性逻辑装置210耦合至控制逻辑装置220、存储器230和I/O接口 240。如图2所示,可选应用程序250可以布置为与控制逻辑装置220合作操作。一致性逻辑装置210还可以包括值特征212、请求特征214、比较特征216和阻止特征218或其任何合理组合中的一个或多个。在一些备选示例中,一致性逻辑装置210、控制逻辑装置220、存储器230、输入/输出(I/O)接口 240和一个或多个应用程序250中的一些或全部可以集成到高速缓存控制器中。在一些示例中,图2的框图中描绘的元件配置为支持如本公开所描述的一致性管理器116。给定一致性管理器116可以包括除了图2中所示的那些元件以外的一些、所有或更多元件。例如,一致性逻辑装置210和控制逻辑装置220可以分开或共同表示用于实现一致性管理器116的特征的多种逻辑器件。示例逻辑器件可以包括微控制器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、通信控制器、高速缓存控制器或其组合中的一个或多个。如上所述,一致性逻辑装置210可以包括值特征122、请求特征214、比较特征216或阻止特征218。一致性逻辑装置210可以配置为使用这些特征中的一个或多个来执行操作。如以下更详细描述的,示例操作可以包括便于处理元件112执行多线程程序的一个或多个线程。在一些示例中,控制逻辑装置220可以配置为控制一致性管理器116的整体操作。如上所述,控制逻辑装置220可以表示配置为结合可执行内容或指令来操作以实现一致性管理器116的控制的多种逻辑器件中的任一个。在一些备选示例中,可以在一致性管理器116内实现控制逻辑装置220的特征和功能。根据一些示例,存储器230布置为存储可执行内容或指令。控制逻辑装置220和/或一致性逻辑装置210可以使用可执行内容或指令来实现或激活一致性管理器116的特征或元件。存储器230还可以布置为临时保持变量的期望值和当前值,可以响应于一致性管理器116的元件或特征的一致性请求来接收变量的期望值和当前值。在一些示例中,存储器230可以包括寄存器或其他类型的存储器结构,以至少临时存储变量的期望值和当前值。
存储器230可以包括多种存储器介质,包括但不限于易失性存储器、非易失性存储器、闪速存储器、可编程变量或状态、随机存取存储器(RAM)、只读存储器(ROM)、或其他静态或动态存储介质中的一个或多个。在一些示例中,I/O接口 240可以经由内部通信介质或链路在一致性管理器116与驻留在处理节点110(例如,处理器元件112或高速缓存存储器114)上或者与处理节点110在一起的元件之间提供接口。I/O接口 240还可以在一致性管理器116与耦合至处理节点110 (例如,处理节点120)之间提供接口。如上图I所述,处理节点110可以经由通信通道130耦合至这些元件。例如,I/O接口 240包括配置为根据各种通信协议操作的接口,以允许一致性管理器116和/或一致性管理器116的元件通过通信通道130 (例如,互联集成电路(I2C)、系统管理总线(SMBus)、串行外围接口总线(SPI)、超传输(HT)、快速路径互连(QPI)等)通信。在一些示例中,一致性管理器116包括一个或多个应用程序250,以向控制逻辑装置220和/或一致性逻辑装置210提供指令。例如,指令可以包括针对一致性管理器116的指令,以实现或使用值特征212、请求特征214、比较特征216或阻止特征218。图3-5示出了根据本公开至少一些实施例的处理元件用来执行多线程程序的一个或多个线程的示例同步原语。图3中示出的示例同步原语300可以是先前标识为锁定同步类型的同步原语。在一些示例中,处理元件可以经由对锁定同步的使用来执行多线程程序的一个或多个线程。锁定同步的使用可以包括获取与多线程程序的第一线程的执行中所使用的数据相关联的锁定变量。至少基于获取的锁定变量,可以将锁定置于执行第一线程中使用的数据上。在执行第一线程中的关键部分之后,同步原语300的一部分还可以用于释放锁定。同步原语300类似于表I中示出的同步原语。然而,前两个指令“Id”和“bneqz”已经由条件加载“CL”指令代替。例如,“CL”指令可以由处理元件来实现以获取锁定变量,并且可以至少基于锁定变量的当前值与锁定变量的期望值的比较来阻止和/或继续阻止“CL”指令。在一些示例中,尝试执行多线程程序的第一线程的第一处理元件可以使用同步原语300。例如,为了开始获取锁定的过程,第一处理元件可以实现开始于标记为“LockCode”的指令行的同步原语300。作为同步原语300的使用的一部分,可以实现“CL”指令来获取与寻求锁定的数据相关联的锁定变量。例如,锁定变量的当前值可以存储在主存储器中,或者存储以同步原语300中的Lockvar标识的高速缓存存储器位置处。如下进一步描述的,可以基于锁定变量的当前值与锁定变量的期望值的比较结果来阻止和/或继续阻止“CL”指令。例如,阻止可以包括停止或阻止进一步实现同步原语300中包括的指令。在一些示例中,稍后可以响应于锁定变量的更新的当前值与期望值的后续比较来去除阻止。去除阻止然后可以使得实现同步原语300的附加指令,附加指令可以引起第一处理元件获取锁定,然后通过最终实现标记为“ReleaseCode”的指令行处的同步原语300的其余指令来释放锁定。例如,一旦执行第一线程,就可以释放锁定。图4中示出的示例同步原语400可以是先前标识为障栅同步的类型的同步原语。在一些示例中,处理元件可以经由对同步原语400的使用来执行多线程程序的一个或多个线程。同步原语400的使用可以使得处理元件能够将线程执行工作与其他处理元件同步。例如,同步原语400的使用可以包括指示是否已经完成障栅的当前值。直到障栅完成为止, 可以将障栅或保持放置在处理元件上,以停止执行多线程程序的一个或多个线程,直到其他处理元件已经完成其对多线程程序的一个或多个线程的执行为止。在一些示例中,同步原语400的使用可以包括处理元件维护已经执行的线程数目的计数(例如,在处理器元件所维护的存储器或寄存器中)。例如,如图4所示,可以将num_arrived(例如,变量的当前值)初始化为值0,并且将barrier_complete初始化为假(FALSE)。当从一个或多个其他处理元件接收到对执行的线程的指示时,处理元件可以以原子方式递增num_arrived,以获得计数值。然后可以将计数值与图4中示为NUM_THREADS的线程执行数目相比较。例如,NUM_THREADS可以指示要被执行以完成障栅的线程数目,例如,变量的期望值。如果计数等于NUM_THREADS,则可以完成障栅(例如,将barrier_complete设置为真(TRUE))。由于障栅完成,因此可以去除障栅或保持,并且处理元件可以继续执行一个或多个线程。否则,如果计数不等于NUM_THREADS,则障栅没有完成(例如,barrier,complete为假)。在一些示例中,基于barrier_complete ==假,处理元件可以实现“CL”指令。“CL”指令可以阻止或禁止处理元件实现同步原语400的其他部分,直到barrier_complete变为真为止。在一些示例中,稍后可以基于变量的更新的当前值(递增的计数值)与期望值(NUM_THREADS的值)的后续比较来去除阻止。去除阻止然后可以使得去除障栅,并且然后处理元件可以继续执行多线程程序的一个或多个线程。图5中示出的示例同步原语500可以是先前标识为信号等待同步类型的同步原语。在一些示例中,处理元件可以经由对同步原语500的使用来执行多线程程序的一个或多个线程。同步原语500的使用可以使得执行多线程程序的消费者线程的处理元件能够实现“CL”指令,而同时该处理元件等待多线程程序的制造者线程已经执行的信号。在一些示例中,同步原语500的使用可以包括监视标志的值的处理元件,标志可以指示是否已经执行了制造者线程。如图5所示,对于同步原语500而言,针对标志的值1(例如,变量的期望值)可以指示制造者线程已经执行。例如,如果标志的当前值不为1,贝U可以实现“CL”指令。类似于针对同步原语300和400的“CL”指令,CL指令的实现可以阻止或禁止处理元件实现同步原语500的其他部分,直到标志的当前值为I为止。
在一些示例中,稍后可以基于变量的更新的当前值(标志的当前值)与期望值(标志的值I)的后续比较来去除阻止。去除阻止然后可以使处理元件执行多线程程序的线程(例如,消费者线程)。图6是根据本公开至少一些实施例的处理元件执行多线程程序的一个或多个线程的方法的流程图。在一些示例中,如图I所示的多处理元件系统100可以用于示意与图6中示出的流程图有关的示例方法。如图2所示具有一致性管理器116的多处理元件系统100的处理节点110还可以用于实现示例方法。同样,多处理元件系统100的元件和/或一致性管理器116可以实现图3-5中示出的示例同步原语300、400或500的至少一部分。但是所描述的方法不限于对如图I所示多处理元件系统100、图2中示出的一致性管理器116或者图3-5中示出的示例同步原语300、400或500的实现。在块605处开始(实现“CL”指令),处理节点110的处理元件112可以包括配置为实现与用于执行多线程程序的一个或多个线程的同步原语相关联的条件加载指令的逻辑装置和/或特征。
在一些示例中,获取与处理元件112用来执行多线程程序的第一线程的数据相关联的锁定变量可以包括实现同步原语300的“CL”指令。在其他示例中,可以实现同步原语400的“CL”指令,以使得处理元件112能够确定是否已经完成障栅。在其他示例中,指示消费者线程尚未执行的标志值可以使处理元件112实现同步原语500的“CL”指令。从块605继续到判定块610 (不存在当前值?),一致性管理器116可以包括配置为确定(例如,经由值特征212)在高速缓存存储器114中是否存在或存储变量的当前值的逻辑装置和/或特征。在一些示例中,当前值可以至少临时存储或保持在高速缓存存储器114中。如果存在变量的当前值,则处理移至判定块630。否则,处理移至块615。从判定块610前进至块615 (阻止“CL”指令),一致性管理器116可以包括配置为(例如,经由阻止特征218)阻止处理元件112实现“CL”指令的逻辑装置和/或特征。在一些示例中,阻止条件加载指令可以是一致性管理器116扣留变量的当前值造成的。例如,一致性管理器可以制止将变量的当前值从主存储器加载到高速缓存存储器114中(即,创建类似于高速缓存未中的情形),或者制止将变量的当前值从高速缓存存储器114加载到处理元件112维护的寄存器(例如,标识为Rl的寄存器)中。在没有变量的当前值的情况下,例如,处理元件112可以停止实现同步原语的指令,并且可能在某时间间隔过去之后进入空闲或省电模式。省电模式可以包括但不限于,降低提供给处理元件112的电压、降低处理元件112的频率、对处理元件112的功率闸控、或进入检查点状态。从块615继续到块620 (转发一致性请求),一致性管理器116可以包括配置为经由通信通道130转发一致性请求(例如,经由请求特征214)的逻辑装置和/或特征。在一些示例中,高速缓存存储器114中不存在变量的当前值可以指示可以抑制多线程程序的一个或多个线程的执行。例如,处理元件112可以等待获取锁定、障栅完成或制造者线程执行的指示。从块620继续到块625 (接收当前值),一致性管理器116可以包括配置为基于转发的一致性请求,或基于从其他处理元件接收的可以指示变量的值的广播一致性消息来(例如经由请求特征214)接收变量的当前值的逻辑装置和/或特征。从块625继续到块630 (当前值与期望值匹配?),一致性管理器116可以包括配置为将变量的接收的当前值与期望值相比较(例如,经由比较特征216)的逻辑装置和/或特征。。在一些示例中,例如当使用同步原语300时,变量的期望值可以是值“O”。例如,值“0”可以指示数据未被锁定,但是本公开不限于“0”值作为对数据正被锁定的指示。对于包括同步原语300的使用的这些示例,如果当前值为“0”,则当前值与期望值“0”匹配,并且处理移至块645。否则,如果当前值是“1”,则当前值与期望值不匹配,并且处理移至块635。在一些示例中,一致性管理器116 (例如经由比较特征216)可以在存储器(例如,存储器230)中维护表,以至少临时存储变量的地址、变量的期望值,或者还至少临时存储接收到的当前值。一致性管理器166可以使用该表用于两个值的比较。从判定块630前进到块635 (阻止或继续阻止“CL”指令),一致性管理器116可以阻止或继续阻止由处理元件112实现的“CL”指令。如上关于块615所述,处理元件112可以继续禁止实现同步原语的指令,并且可以进入空闲或省电模式。备选地,如果存在当前值(参见判定块610)并且当前值与期望值不匹配(参见判定块630),处理元件112可以禁止实现同步原语的指令,并且如还可以进入空闲或省电模式。 从块635继续到判定块640 (更新的当前值?),一致性管理器116可以确定(例如,经由请求特征)是否已经从处理元件122接收到了对变量当前值的任何更新。如果接收到了更新的当前值,则处理移回到判定块630。否则,处理可以移回至块635,并且可以保持对条件加载指令的阻止。如上在判定块630处所述,如果当前值与锁定变量的期望值匹配,则处理移至块645。在块645 (继续“CL”指令),一致性管理器116可以向处理元件112提供变量的当前值(例如,将该值加载到处理元件112保持的寄存器)。处理元件112然后可以继续实现同步原语的其他指令,并且处理结束。图7示出了根据本公开至少一些实施例的示例计算机程序产品700的框图。在一些示例中,如图7所示,计算机程序产品700包括信号承载介质702,信号承载介质702也可以包括用于第一处理元件(例如,处理元件112)执行多线程程序的一个或多个线程的指令704。指令704在由逻辑装置(例如,一致性逻辑装置210)执行时可以使该逻辑装置实现与第一处理元件用来执行多线程程序的第一线程的同步原语相关联的条件加载指令。指令704还可以使逻辑装置确定使用同步原语的变量的当前值是否在第二处理元件的高速缓存存储器中,并且至少基于高速缓存存储器中不存在当前值来阻止条件加载指令。指令704还可以使逻辑装置基于不存在当前值向第二处理元件转发一致性请求。指令704还可以使逻辑装置基于一致性请求从第二处理元件接收当前值并且将接收到的当前值与变量的期望值相比较。指令704然后可以使逻辑装置基于接收到的当前值与期望值的比较结果阻止条件加载指令。同样如图7所示,在一些示例中,计算机产品700可以包括计算机可读介质706、可记录介质708和通信介质710中的一个或多个。这些元件周围的虚线框示出了信号承载介质702内包括(但不限于信号承载介质702)的不同类型介质。这些类型的介质可以分发要由逻辑装置(例如,一致性逻辑装置210)执行的指令704。计算机可读介质706和可记录介质708可以包括但不限于柔性盘、硬盘驱动器(HDD)、压缩盘(⑶)、数字通用盘(DVD)、数字磁带、计算机存储器等。通信介质710可以包括但不限于,数字和/或模拟通信介质(例如,光缆、波导、有线通信链路、无线通信链路等)。
图8示出了根据本公开至少一些实施例的示例计算设备800。在一些示例中,图I中示出的多处理元件系统100的至少一些元件可以在计算设备800上实现。在这些示例中,计算设备800的元件可以布置或配置为便于第一处理元件执行多线程程序的一个或多个线程。在非常基本的配置801中,计算设备800典型地包括至少两个处理器核810以及系统存储器820。存储器总线830可用于在处理器核810和系统存储器820之间进行通信。根据所期望的配置,处理器核810可以是任意类型的,包括但不限于微处理器(U P)、微控制器C)、数字信号处理器(DSP)或其任意组合。处理器核810可以包括一级或多级高速缓存(例如,一级高速缓存810和二级高速缓存812)、原语处理元件813、以及寄存器814。处理元件813可以包括算术逻辑单元(ALU)、浮点单元(FPU)、数字信号处理核(DSP核)或其任意组合。存储器控制器815也可以与处理器核810之中的处理器核一起使用。根据所期望的配置,系统存储器820可以是任意类型的,包括但不限于易失性存储器(如RAM)、非易失性存储器(如ROM、闪存等)或其任意组合。系统存储器820典型地包括操作系统821、一个或多个应用程序822和程序数据824。应用程序822包括指令·823,配置为执行本文所述的功能,包括关于图2中示出的一致性管理器116和架构描述的动作,或者包括关于图4中示出的流程图描述的动作。程序数据824包括可以用于实现在使用同步原语执行多线程程序的线程时的指令823 (例如,条件加载指令,或条件加载指令的阻止)的同步原语数据825。在一些示例中,应用程序822布置为与操作系统821上的程序数据824 —同操作,使得如本文所述提供第一处理元件执行多线程程序的一个或多个线程的实现方式。在图8中该描述的基本配置由虚线801内的那些组件来示意。计算设备800可以具有额外特征或功能以及额外接口,以有助于基本配置801与任意所需设备和接口之间进行通信。例如,总线/接口控制器840可以用于辅助基本配置801与一个或多个数据存储设备850之间经由存储接口总线841进行通信。数据存储设备850可以是可拆除存储设备851、不可拆除存储设备852或其组合。可拆除存储设备和不可拆除存储设备的示例包括磁盘设备(如软盘驱动器和硬盘驱动器(HDD))、光盘驱动器(如压缩盘(CD)驱动器或数字通用盘(DVD)驱动器)、固态驱动器(SSD)以及磁带驱动器,这仅仅是极多例子中的一小部分。示例计算机存储介质可以包括以任意信息存储方法和技术实现的易失性或非易失性、可拆除和不可拆除介质,如计算机可读指令、数据结构、程序模块或其他数据。系统存储器820、可拆除存储设备851和不可拆除存储设备852均是计算机存储介质的示例。计算机存储介质包括但不限于RAM、ROM、EEPR0M、闪存或其他存储器技术,CD-ROM、数字多功能盘(DVD)或其他光存储设备,磁盒、磁带、磁盘存储设备或其他磁存储设备,或可以用于存储所需信息并可以由计算设备800访问的任意其他介质。任何这种计算机存储介质可以是设备800的一部分。计算设备800还可以包括接口总线842,以有助于各种接口设备(例如,输出接口、外围设备接口和通信接口)经由总线/接口控制器840与基本配置801进行通信。示例输出设备860包括图形处理单元861和音频处理单元862,其可被配置为经由一个或多个A/V端口 863与多种外部设备(如显示器或扬声器)进行通信。示例外围设备接口 860包括串行接口控制器871或并行接口控制器872,它们可被配置为经由一个或多个I/O端口 873与外部设备(如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备等))或其他外围设备(例如,打印机、扫描仪等)进行通信。示例通信设备880包括网络控制器881,其可以被设置为经由一个或多个通信端口 882与一个或多个其他计算设备890通过网络通信进行通信。网络通信连接是通信介质的一个示例。通信介质典型地可以由调制数据信号(如载波或其他传输机制)中的计算机可读指令、数据结构、程序模块或其他数据来体现,并可以包括任意信息传送介质。“调制数据信号”可以是通过设置或改变其一个或多个特性而在该信号中实现信息编码的信号。例如,但并非限制性地,通信介质可以包括有线介质(如有线网络或直接布线连接)、以及无线介质(例如声、射频(RF)、红外(IR)和其他无线介质)。这里所使用的术语计算机可读介质可以包括存储介质和通信介质。计算设备800可以实现为小体积便携式(或移动)电子设备的一部分,小体积便携式(或移动)电子设备例如是蜂窝电话、智能电话、个人数据助理(PDA)、个人媒体播放设备、无线web浏览设备、个人耳机设备、专用设备或包括任意上述功能的混合设备。计算设备800也可以实现为个人计算机,包括膝上型计算机和非膝上型计算机配置,或在工作站或服务器配置中实现。 本公开中对术语“对...做出响应”或“响应于”的引用并不限于对特定特征和/或结构的响应。特征也可以响应于另一特征和/或结构,并且也可以置于该特征和/或结构内。此外,当诸如“耦合”或“响应”或“响应于”或“与...通信”等术语或短语在本文中或所附权利要求中使用时,应当在广义上解释这些术语。例如,短语“耦合至”可以根据使用该短语的上下文指通信、电和/或操作耦合。本领域技术人员应认识到,本领域中惯常以上述方式描述设备和/或过程,此后使用工程实践来将所描述的设备(例如,处理元件、处理核、计算平台、计算设备等)和/或方法集成到数据处理系统中是本领域的常用手段。也即,这里所述的设备和/或方法的至少一部分可以通过合理数量的试验而被集成到数据处理系统中。本领域技术人员将认识至IJ,典型的数据处理系统一般包括以下各项中的一项或多项系统单元外壳;视频显示设备;存储器,如易失性和非易失性存储器;处理器,如微处理器和数字信号处理器;计算实体,如操作系统、驱动器、图形用户接口、以及应用程序;一个或多个交互设备,如触摸板或屏幕;和/或控制系统,包括反馈环和控制电机(例如,用于感测位置和/或速度的反馈;用于移动和/或调节成分和/或数量的控制电机)。典型的数据处理系统可以利用任意合适的商用部件(如数据计算/通信和/或网络计算/通信系统中常用的部件)予以实现。本公开所述的主题有时说明不同部件或元件包含在不同的其他部件或元件内或者不同部件或元件与不同的其他部件或元件相连。应当理解,这样描述的架构只是示例,事实上可以实现许多能够实现相同功能的其他架构。在概念上,有效地“关联”用以实现相同功能的部件的任意设置,从而实现所需功能。因此,这里组合以实现具体功能的任意两个部件可以被视为彼此“关联”从而实现所需功能,而无论架构或中间部件如何。同样,任意两个如此关联的部件也可以看作是彼此“可操作地连接”或“可操作地耦合”以实现所需功能,且能够如此关联的任意两个部件也可以被视为彼此“可操作地耦合”以实现所需功能。能可操作地耦合的具体示例包括但不限于物理上可配对和/或物理上交互的部件,和/或无线交互和/或可无线交互的部件,和/或逻辑交互和/或可逻辑交互的部件。至于本文中任何关于多数和/或单数术语的使用,本领域技术人员可以从多数形式转换为单数形式,和/或从单数形式转换为多数形式,以适合具体环境和应用。为清楚起见,在此明确声明单数形式/多数形式可互换。本领域技术人员应当理解,一般而言,这里所使用的术语,特别是所附权利要求中(例如,在所附权利要求的主体部分中)使用的术语,一般地应理解为“开放”术语(例如,术语“包括”应解释为“包括但不限于”,术语“具有”应解释为“至少具有”等)。本领域技术人员还应理解,如果意在所引入的权利要求中标明具体数目,则这种意图将在该权利要求中明确指出,而在没有这种明确标明的情况下,则不存在这种意图。例如,为帮助理解,所附权利要求可能使用了引导短语“至少一个”和“一个或多个”来引入权利要求中的特征。然而,这种短语的使用不应被解释为暗示着由不定冠词引入的权利要求特征将包含该特征的任意特定权利要求限制为仅包含一个该特征的实施例,即便是该权利要求既包括引导短语“一个或多个”或“至少一个”又包括不定冠词(例如,不定冠词应当被解释为意指“至少一个”或“一个或多个”);在使用定冠词来引入权利要求中的特征时,同样如此。另外,即使明确指出了所引入权利要求特征的具体数目,本领域技术人员应认识到,这种列举应解释为意指至少是所列数目(例如,不存在其他修饰语的短语“两个特征”意指至少两个该特征,或者两个或更多该特征)。另外,在使用类似于“A、B和C等中至少一个”这样的表述的 情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。本领域技术人员还应理解,实质上任意表示两个或更多可选项目的转折连词和/或短语,无论是在说明书、权利要求书还是附图中,都应被理解为给出了包括这些项目之一、这些项目任一方、或两个项目的可能性。例如,短语“A或B”应当被理解为包括“A”或“B”、或“A和B”的可能性。尽管已经在此公开了多个方案和实施例,但是本领域技术人员应当明白其他方案和实施例。这里所公开的多个方案和实施例是出于说明性的目的,而不是限制性的,本公开的真实范围和精神由所附权利要求表征。
权利要求
1.一种第一处理元件执行多线程程序的一个或多个线程的方法,该方法包括 实现与第一处理元件用来执行多线程程序的一个或多个线程的同步原语相关联的条件加载指令; 确定用于使用同步原语的变量的当前值是否在用于第一处理元件的高速缓存存储器中; 至少基于高速缓存存储器中不存在所述当前值来阻止条件加载指令; 至少基于不存在所述当前值向第二处理元件转发一致性请求; 至少基于一致性请求从第二处理元件接收所述当前值; 将接收到的所述当前值与所述变量的期望值相比较;以及 至少基于比较结果继续阻止条件加载指令。
2.根据权利要求I所述的方法,其中,继续阻止条件加载指令包括扣留来自第一处理元件的所述变量的所述当前值。
3.根据权利要求I所述的方法,其中,至少基于比较结果继续阻止条件加载指令包括至少基于接收到的所述当前值与所述期望值不匹配来继续阻止条件加载指令。
4.根据权利要求I所述的方法,还包括 将第一处理元件转变到省电模式,其中,省电模式包括以下中的至少一个降低提供给第一处理元件的电压、降低第一处理元件的频率、对第一处理元件的时钟闸控、对第一处理元件的功率闸控、或者进入检查点状态。
5.根据权利要求I所述的方法,还包括 接收所述变量的更新的当前值; 将接收到的所述更新的当前值与所述期望值相比较;以及 至少基于比较结果来去除对条件加载指令的阻止。
6.根据权利要求5所述的方法,其中,同步原语包括用于第一处理元件执行多线程程序的所述一个或多个线程的第一线程的锁定同步。
7.根据权利要求6所述的方法,其中,用于使用同步原语的所述变量包括与第一处理元件用来执行第一线程的数据相关联的锁定变量,并且去除对条件加载指令的阻止包括将所述更新的当前值存储在高速缓存存储器中,以向第一处理元件提供所述更新的当前值,其中第一处理元件尝试至少基于所述更新的当前值获得对用来执行多线程程序的第一线程的数据的锁定。
8.根据权利要求5所述的方法,其中,同步原语包括用于第一处理元件执行多线程程序的所述一个或多个线程的障栅同步。
9.根据权利要求8所述的方法,其中,用于使用同步原语的所述变量包括与障栅完成相关联的用于执行所述一个或多个线程的计数变量,并且去除对条件加载指令的阻止包括将所述更新的当前值存储在高速缓存存储器中,以向第一处理元件提供所述更新的当前值,其中第一处理元件至少基于所述更新的当前值执行所述一个或多个线程。
10.根据权利要求5所述的方法,其中,同步原语包括用于第一处理元件执行多线程程序的所述一个或多个线程的信号等待同步。
11.根据权利要求10所述的方法,其中,用于使用同步原语的所述变量包括与等待指示相关联的用于执行所述一个或多个线程的标志变量,并且去除对条件加载指令的阻止包括将所述更新的当前值存储在高速缓存存储器中,以向第一处理元件提供所述更新的当前值,其中第一处理元件至少基于所述更新的当前值执行所述一个或多个线程。
12.根据权利要求5所述的方法,其中,至少基于比较结果去除对条件加载指令的阻止包括至少基于接收到的所述更新的当前值与期望值匹配来去除阻止。
13.根据权利要求I所述的方法,其中,转发一致性请求包括经由与第一处理元件相关联的一致性管理器来转发一致性请求。
14.根据权利要求13所述的方法,其中,将接收到的所述当前值与所述期望值相比较包括将所述当前值和所述期望值均记录在一致性管理器能够访问的存储器中保持的表中。
15.根据权利要求I所述的方法,其中,第一处理元件和第二处理元件是多核处理器的分开的核。
16.一种便于第一处理元件执行多线程程序的一个或多个线程的装置,第一处理元件实现与第一处理元件用来执行第一线程的同步原语相关联的条件加载指令,所述装置包括 一致性管理器,具有逻辑装置,所述逻辑装置配置为 确定用于使用同步原语的变量的当前值是否在用于第一处理元件的高速缓存存储器中; 至少基于高速缓存存储器中不存在所述当前值来阻止条件加载指令; 至少基于不存在所述当前值向第二处理元件转发一致性请求; 至少基于一致性请求从第二处理元件接收所述当前值; 将接收到的所述当前值与所述变量的期望值相比较;以及 至少基于比较结果继续阻止条件加载指令。
17.根据权利要求16所述的装置,其中,阻止条件加载指令包括还配置为扣留来自第一处理元件的所述变量的所述当前值的逻辑装置。
18.根据权利要求16所述的装置,其中,至少基于比较结果继续阻止条件加载指令包括还配置为至少基于接收到的所述当前值与所述期望值不匹配来继续阻止条件加载指令的逻辑装置。
19.根据权利要求16所述的装置,其中,转发一致性请求包括配置为经由与第一处理元件相关联的一致性控制器转发一致性请求的逻辑装置。
20.根据权利要求16所述的装置,其中,第一处理元件和第二处理元件是多核处理器的分开的核。
21.根据权利要求16所述的装置,还包括这样的逻辑装置,所述逻辑装置配置为 接收所述变量的更新的当前值; 将接收到的所述更新的当前值与所述期望值相比较;以及 至少基于比较结果来去除对条件加载指令的阻止。
22.根据权利要求21所述的装置,其中,同步原语包括用于第一处理元件执行多线程程序的所述一个或多个线程的障栅同步。
23.根据权利要求22所述的装置,其中,用于使用同步原语的所述变量包括与障栅完成相关联的用于执行所述一个或多个线程的计数变量,并且配置为去除对条件加载指令的阻止的逻辑装置包括将所述更新的当前值存储在高速缓存存储器中以向第一处理元件提供所述更新的当前值的逻辑装置,其中第一处理元件至少基于所述更新的当前值执行所述一个或多个线程。
24.一种执行多线程程序的一个或多个线程的系统,该系统包括 执行多线程程序的第一线程的第一处理元件;以及 执行多线程程序的第二线程的第二处理元件,第二处理元件包括高速缓存存储器和一致性管理器,第二处理元件实现与第二处理元件用来执行第二线程的同步原语相关联的条件加载指令,其中一致性管理器包括逻辑装置,所述逻辑装置配置为 确定用于使用同步原语的变量的当前值是否在第二处理元件的高速缓存存储器中; 至少基于高速缓存存储器中不存在所述当前值来阻止条件加载指令; 至少基于不存在所述当前值向第一处理元件转发一致性请求; 至少基于一致性请求从第一处理元件接收所述当前值; 将接收到的所述当前值与所述变量的期望值相比较;以及 至少基于比较结果继续阻止条件加载指令。
25.根据权利要求24所述的系统,其中,继续阻止条件加载指令包括扣留来自第二处理元件的所述变量的所述当前值。
26.根据权利要求24所述的系统,其中,至少基于比较结果阻止条件加载指令包括配置为至少基于接收到的所述当前值与所述期望值不匹配来阻止条件加载指令的逻辑装置。
27.根据权利要求24所述的系统,还包括这样的逻辑装置,该逻辑装置配置为 将第二处理元件转变到省电模式,其中,省电模式包括以下中的至少一个降低提供给第二处理元件的电压、降低第二处理元件的频率、对第二处理元件的时钟闸控、对第二处理元件的功率闸控、或者进入检查点状态。
28.根据权利要求24所述的系统,还包括这样的逻辑装置,该逻辑装置配置为 从第一处理元件接收所述变量的所述更新的当前值; 将接收到的所述更新的当前值与所述期望值相比较;以及 至少基于比较结果来去除对条件加载指令的阻止。
29.根据权利要求28所述的方法,其中,同步原语包括用于第二处理元件执行多线程程序的所述一个或多个线程的第一线程的锁定同步。
30.根据权利要求29所述的方法,其中,用于使用同步原语的所述变量包括与第二处理元件用来执行第一线程的数据相关联的锁定变量,并且配置为去除对条件加载指令的阻止的逻辑装置包括将所述更新的当前值存储在高速缓存存储器中以向第二处理元件提供所述更新的当前值的逻辑装置,其中第二处理元件尝试至少基于所述更新的当前值获得对用来执行多线程程序的第二线程的数据的锁定。
31.一种计算机程序产品,包括信号承载介质,具有用于处理元件执行多线程程序的一个或多个线程的指令,所述指令在由逻辑装置执行时使逻辑装置进行以下操作 实现与第一处理元件用来执行多线程程序的第一线程的同步原语相关联的条件加载指令; 确定用于使用同步原语的变量的当前值是否在用于第一处理元件的高速缓存存储器中; 至少基于高速缓存存储器中不存在所述当前值来阻止条件加载指令;至少基于不存在所述当前值向第二处理元件转发一致性请求; 至少基于一致性请求从第二处理元件接收所述当前值; 将接收到的所述当前值与所述变量的期望值相比较;以及 至少基于比较结果继续阻止条件加载指令。
32.根据权利要求31所述的计算机程序产品,其中,继续阻止条件加载指令包括配置为扣留来自第一处理元件的所述变量的所述当前值的逻辑装置。
33.根据权利要求31所述的计算机程序产品,其中,至少基于比较结果继续阻止条件加载指令包括还配置为至少基于接收到的所述当前值与所述期望值不匹配来阻止条件加载指令的逻辑装置。
34.根据权利要求31所述的计算机程序产品,还包括使逻辑装置执行以下操作的指令 接收所述变量的更新的当前值; 将接收到的所述更新的当前值与所述期望值相比较;以及 至少基于比较结果来去除对条件加载指令的阻止。
35.根据权利要求34所述的计算机程序产品,其中,同步原语包括用于第一处理元件执行多线程程序的所述一个或多个线程的信号等待同步。
36.根据权利要求35所述的计算机程序产品,其中,用于使用同步原语的变量包括与等待指示相关联的用于执行所述一个或多个线程的标志变量,并且使逻辑装置去除对条件加载指令的阻止的指令包括将所述更新的当前值存储在高速缓存存储器中以向第一处理元件提供所述更新的当前值的逻辑装置,其中第一处理元件至少基于所述更新的当前值执行一个或多个线程。
全文摘要
总体上公开了一个或多个处理元件低功率执行多线程程序的一个或多个线程的技术。
文档编号G06F9/46GK102971708SQ201080067726
公开日2013年3月13日 申请日期2010年10月19日 优先权日2010年10月19日
发明者扬·索利希恩 申请人:英派尔科技开发有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1