向另一设备委托轮询操作的制作方法

文档序号:6349586阅读:417来源:国知局
专利名称:向另一设备委托轮询操作的制作方法
向另一设备委托轮询操作
背景技术
现代计算机系统通常包括处理器和耦合在一起的各种其它部件。此外,许多系统包括一个或多个外围或输入/输出(10)设备。为了支持在处理器上执行的软件与可以由其它设备执行的操作之间的通信,可以使用不同的机制。一般的机制包括轮询方法和中断方法。然而,这些方法都不是最优的。使用轮询技术,软件在IO设备的任务是细粒度的情况下持续地对IO设备上的状态寄存器进行轮询,或者在IO设备的任务是粗粒度的情况下依赖于通过操作系统(OS)的异步中断。虽
然轮询方法可以确保良好的性能,但是它也具有缺点。首先,需要知道完成状态的核心/线程必须(例如,经由忙循环操作)持续地检查存储器映射输入/输出(MMIO)状态寄存器,从而防止其自身进入低功率状态。第二,对不可缓存的MMIO地址进行重复轮询会导致系统互连上的大流量。总之,快速响应时间的代价是功率消耗(尤其针对超低功率环境而言是主要问题)和系统资源浪费。中断方法避免了处理器对状态寄存器的忙循环。在等待的同时,核心/线程可以进行上下文切换以执行另一进程,或者进入低功率状态。IO设备上的任务的完成触发到OS的中断。然而,在典型的系统中,内核中断处理程序会引发数百个高速缓存未命中以及数以万计个时钟周期。中断处理的这种性能开销对于许多细粒度逻辑块来说是不可接受的。因此,由于轮询抵消了使用IO设备获得的任何功率益处的大部分,而中断引入了严重的性能恶化,因此对于低功率应用而言,轮询和中断技术都不是令人满意的。


图I是根据本发明的一个实施例的系统的框图。图2是根据本发明的一个实施例的方法的流程图。图3是根据本发明的另一实施例的系统的框图。
具体实施例方式在各种实施例中,可以实现轮询委托技术,其中互联在轮询和通知过程中用作代理。在一个实施例中,互连可以是输入/输出(IO)互连,然而本发明的范围并不限于这一点。使用该技术,互连为诸如中央处理单元(CPU)等的主机处理器轮询IO设备,并且使用诸如测试和保持操作等多个技术中的一个、或者通过对用户选择的存储器位置进行更新(这触发处理器从最佳功率状态退出),来将给定事件通知给应用程序软件。在一个实施例中,可以使用诸如M0NIT0R/MWAIT等的用户级指令来通知应用程序软件。在各种实施例中,轮询委托可以使响应时间如轮询一样短,并且使功耗/资源使用如基于中断的技术一样低,从而提供了 IO设备状态的用户级通知,而不需要轮询或中断。在一个实施例中,IO互连可以包括专用硬件来对IO设备的状态寄存器进行轮询。然后,一旦状态改变,则IO互连可以发出对由主机监视的存储器地址的写操作(例如,一致性写入)。该一致性写入将被该硬件检测到,并且使在该地址上等待的线程恢复执行。因此,在各种实施例中,处理器可以保持在低功率状态直到IO设备完成其任务,并且几乎如同其进行忙循环一样快地恢复执行。不需要对处理器核心、高速缓存、系统一致性互连或IO设备进行改变。M0NIT0R/MWAIT指令对可以支持线程间同步。该指令对可以在所有的特权级处均是可用的。MONITOR可以用于使CPU设置CPU的监视硬件,以检测对有效地址范围(通常为高速缓存行)的存储。该地址范围属于一致性回写地址范围。在一个实施例中,高速缓存一致性硬件可以监视对该目的地址的写入。当发生该写入时,高速缓存一致性控制器将向处理器发送退出低功率状态的消息。在该设置之后,随后的MWAIT指令将处理器核心置于所选择的低功率状态(例如,时钟门控状态或功率门控状态)。当监视硬件检测到对该地址范围内的任意字节的存储时,停止的线程从MWAIT后面的指令恢复执行。从架构上讲,MWAIT的行为类似于空操作(NOP)。虽然MONITOR和MWAIT指令被设计为实现性能和功率最优的线程间同步,但是实施例也可以利用用于IO设备 完成通知的指令。现在参照图1,示出的是根据本发明的一个实施例的系统的框图。如图I所示,系统100可以是片上系统(SoC),该片上系统(SoC)包括互连在一起的各种部件并且可以提供用于根据本发明的实施例来处理轮询委托的机制。具体地,在图I的实施例中,SoC 100可以包括多个处理器核心,为了便于说明,仅示出了其中的一个核心,即核心110a。该一个或多个核心可以经由一致性互连115耦合到一个或多个高速缓存存储器120a。一致性互连115可以包括各种硬件、软件和/或固件,以实现诸如修改排他共享无效(MESI)协议等的高速缓存一致性协议,从而维持存储在系统中的信息的一致性。在一些实现中,一致性互连115可以是包括诸如协议层、链路层、以及可能的物理层等的各种层的分层协议(其中该系统不在单管芯上)。继而,一致性互连115可以经由中心部件120耦合到存储器控制器130,该存储器控制器130继而可以耦合到例如动态随机存取存储器(DRAM)等的系统存储器。注意,由于这种存储器可以位于SoC外部,因此没有在图I中示出该存储器。此外,一致性互连115可以稱合到10互连140的上游侧,该1/0互连140可以具有给定的通信协议,诸如根据基于 “PCI Express Specification Base Specificationversion 2. 0” (2007 年 I 月 17 日公布)(下文称为 PCIe Specif ication)的链路的“Peripheral Component Interconnect Express”(PCIExpress (PCIe ))协议、或者其它这种协议。根据本发明的实施例,10互连140可以包括轮询表150。虽然示出为存在于该互连中,但是其它实现可以将该缓冲器设置于与该互连紧密相关的其它位置。继而,可以是10设备、知识产权(IP)块等的各种设备(例如,设备Ieoc^P 160i)可以耦合到I0互连140的下游侧。如图I所示,轮询表150存储包括例如条目156等的多个条目。每个条目可以包括设备监视位置,诸如多个设备160之一中存在的状态寄存器的地址;存储器监视地址,其可以对应于系统存储器中的物理地址,该物理地址对应于MWAIT指令的监视位置;以及初始值,其可以是设备监视位置的初始值,例如,状态寄存器的初始值。因此,实施例本质上将10设备上的每个状态寄存器与由CPU监视的对应存储器地址相关联。虽然在图I的实施例中示出了该特定实现,但是本发明的范围并不限于这一点。现在参照图2,示出的是根据本发明的一个实施例的方法的流程图。具体地,图2示出了可以由代表主机处理器处理轮询委托的IO或其它互连的逻辑执行的流程图。在一些实现中,方法200可以通过状态机或其它互连逻辑来实现,然而其它实现也是可行的。如图2所示,可以通过从应用程序接收注册消息来开始方法200(框210)。在一个实施例中,注册消息可以包括由丽IO地址、真实物理存储器地址和初始值构成的元组。在一个实施例中,该注册消息可以包括位置和备份被监视虚拟地址范围的被监视系统存储器的物理地址范围;用于获得要被监视的设备中的位置的状态(例如,状态寄存器)的丽IO地址;以及这种寄存器的初始值,该初始值还可以对应于存储在系统存储器的监视地址中的初始值。在一个实施例中,应用程序可以例如使用主机处理器进行系统调用,以将该信息传递到互连。仍然参照图2,可以确定在互连的轮询表中条目是否可用(菱形215)。如果不可用,则可以将失败消息发送回主机(框220)。否则,可以将该信息存储在轮询表的条目中
(框230)。因此,该信息可以对应于设备监视位置(即,对应于设备的完成状态寄存器的丽IO地址)、该寄存器的初始值以及存储器监视地址(其可以是例如由M0NIT0R/MWAIT指令对监视的系统存储器内的物理地址位置)。相应地,可以将成功消息从互连发送到主机处理器(框240) ο在操作期间,应用程序然后初始化被监视位置,发出MONITOR和MWAIT指令,从而使设备开始执行其任务。可以实现各种这样的任务,包括卸载专用函数、图形处理、物理处理等。作为一个示例,该函数可以是专用计算,诸如快速傅立叶变换(FFT)。因此,在执行M0NIT0R/MWAIT指令之前,该应用程序可以传递与FFT有关的各种信息,诸如点的数量、开始地址等。相应地,在此时,主机处理器的一个或多个核心可以进入低功率状态,这可以是可配置的,其取决于设备要执行的操作的类型。仍然参照图2,在设备开始执行其操作之后,互连可以在设备监视位置处执行轮询(框245)。在一个实施例中,轮询操作可以发出对轮询表中的每个寄存器地址的读操作,并且将取出的值与轮询表条目中的初始值进行比较,如参照菱形250所讨论的。可以理解,该轮询可以对存在于一个或多个设备中的多个位置进行轮询,即在轮询表中指示出的任何地址。可以针对每次轮询操作确定任何条目中的值是否从其初始值发生了改变(菱形250)。如果没有,则可以进行另一轮询的重复。如果发生了改变,则改为将控制传递至框260,在框260中,可以针对存储器监视地址发出关于该新值的写操作。在一个实施例中,互连可以发出对该地址的一致性写入,在一个实施例中,这可以使用消息信令中断(MSI)来实现。对存储器中的被监视地址的该一致性写入将使处理器核心从低功率状态唤醒,从而使暂停的线程继续执行。参照图2,在发出该写操作之后,可以确定是否已经接收到了对该条目的释放(菱形270)。在一个实施例中,当与轮询委托条目相关联的给定应用程序结束时,可以从OS接收到这种释放。因此,如果设备得知任务已完成,则该设备可以向IO互连发出回收请求。如果没有指示释放,则控制从菱形270传递回框245,在框245中,可以执行进一步的轮询。虽然在图2的实施例中示出了该特定实现,但是本发明的范围并不限于这一点。可以利用OS的帮助来生成注册消息和释放消息。可以完全在用户模式中执行用户级MONITOR和MWAIT指令,并且轮询委托操作可以是纯硬件的。注意到,通常仅在应用程序初始化和清除阶段执行注册和释放。因此,其功率和性能并不是一个问题。相反,通常要执行很多次用户级的设置和轮询检测。因此,这两个步骤的功效实现了高效的系统功率和性能特性。为了支持多个IP加速器,轮询表150可以是多条目转换表。在一个实施例中,每个条目156包含MMIO地址和链接到其的物理存储器地址。在一些实现中,轮询表中的条目的数量可以是很小的数量,例如N = 8。在需要同时检查多于N个寄存器的极端情况下,用户线程可以总是直接地对寄存器进行轮询,而不是使用上述方法,然而也可以代替地使用虚拟化轮询表。在一个实施例中,可以位于IO互连140中的PCI的消息信令中断(MSI-X)特征提供了允许设备160发出对系统存储器位置的写入的硬件。在MSI-X中,目标存储器位置是将导致中断的专用地址。在实施例中,回写存储器空间中的替代地址可以用作这种写入的目标。目标存储器位置的该性质对MSI-X硬件而言是 透明的,其简单地将分组从IO互连传送到存储器系统。在一些实现中,由互连140执行的轮询可以引起对注册的状态寄存器地址的轮询,即使一些寄存器表示的设备没有进行活跃计算。这是因为在一些实现中,轮询委托逻辑145不知道其映射表中的有效条目是否表示不活跃的设备。可以使用不同的机制来向该逻辑提供这种信息。例如,可以由OS提供系统调用,以允许应用程序释放轮询表中的特定条目。可替换地,IO互连140可以拦截发送到IP块160的功率状态转换命令,使得其将知道哪些状态寄存器将不会在不久后的任何时间被更新。在这些实施例中,该信息可以包括在轮询表150的条目的状态部分中。然而,注意到,互连140对IO寄存器进行轮询的代价是相当低的,因此,公平轮询的功率和性能影响可以是最小的。虽然本文针对可以是计算设备(诸如,嵌入式、便携式或移动设备)的主处理部件的片上系统(SoC)配置进行了描述,但是也可以在诸如多处理器计算机系统等的其它系统中使用其它实现,其中上述多处理器计算机系统具有耦合到一致性互连的处理器,该一致性互连继而可以经由一个或多个芯片组或其它部件耦合到IO互连。此外,可以在计算设备的多芯片架构中实现实施例。现在参照图3,示出的是根据本发明的另一实施例的系统的框图。如图3所示,系统300可以是多芯片架构,即系统300包括第一芯片100,其可以是第一 SoC,并且其可以被配置为与图I的SoC相同;第二集成电路310,其可以提供外围设备的功能;以及存储器370,其可以是耦合到一个或多个芯片的DRAM。如图3所示,SoC 100可以经由互连305与IC 310进行通信,该互连305继而耦合到SoC 100的第一桥接器170和IC 310的第二桥接器320。继而,第二桥接器320可以耦合到IO互连330,该互连330继而可以耦合到例如PCIe设备340和通用串行总线(USB)设备350等的一个或多个外围设备。此外,IO互连330可以经由第三桥接器360通过串行网络接口(SONIC)/外部结构耦合到片外部件。在图3的实施例中,注意到,根据本发明的实施例,IO互连140和IO互连330均可以包括轮询表和轮询委托逻辑。虽然在图3的实施例中示出了该特定实现,但是其它实现当然也是可能的。使用本发明的实施例,进程可以避免经历中断处理的长时间延迟,或者避免必须以高功率状态忙循环。在支持M0NIT0R/MWAIT或类似测试和设置功能的处理器上,轮询委托允许处理器进入功率和性能最优状态,同时仍然能够实现忙循环的快速响应时间。对于包括更细粒度的IP块的低功率SoC,实施例在功率和性能方面提供了近似最优的完成通知解决方案。实施例可以以代码来实现,并且可以存储在存储有指令的存储介质上,该指令可以用于对系统进行编程,以执行这些指令。存储介质可以包括但不限于是任何类型的盘,包括软盘、光盘、光盘只读存储器(⑶-ROM)、可重写的光盘(⑶-RW)以及磁光盘;半导体设备,诸如只读存储器(ROM)、随机存取存储器(RAM)(诸如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡;或者适于存储电子指令的任何其它类型的介质。虽然参照有限数量的实施例描述了本发明,但是本领域技术人员将理解源自所描述实施例的许多修改和变形。期望所附权利要求覆盖落入本发明的真实精神和范围内的所有这种修改和变形。
权利要求
1.一种装置,包括 核心,用于生成注册消息,以将轮询操作委托给输入/输出(IO)互连; 一致性互连,其耦合到所述核心; 所述IO互连,其耦合到所述一致性互连,所述IO互连包括轮询表,所述轮询表具有多个条目,每个所述条目具有寄存器地址字段,用于存储在注册消息中接收的寄存器地址;目的地址字段,用于存储在所述注册消息中接收的系统存储器中的目的地址;以及初始值字段,用于存储与在所述注册消息中接收的所述寄存器地址相关联的初始值;以及 至少一个设备,其耦合到所述IO互连,用于为在所述核心上执行的应用程序执行操作,并且包括至少一个状态寄存器,所述IO互连用于响应于轮询表条目中的信息来对所述至少一个状态寄存器进行轮询,并且用于在所述至少一个状态寄存器的轮询值不同于所述初始值的情况下发出对所述目的地址的写事务。
2.如权利要求I所述的装置,其中,所述至少一个设备用于在所述操作完成之后将所述初始值更新为所述轮询值。
3.如权利要求I所述的装置,其中,所述装置包括形成在单个半导体管芯上的片上系统(SoC),并且所述至少一个设备包括知识产权(IP)块。
4.如权利要求I所述的装置,其中,所述IO互连包括轮询委托逻辑。
5.如权利要求4所述的装置,其中,所述轮询委托逻辑用于在预定的时间间隔向所述至少一个设备发出读请求,以执行所述轮询。
6.如权利要求5所述的装置,其中,所述轮询委托逻辑用于在响应于所述读请求而从所述至少一个设备接收的数据与所述初始值之间进行比较,并且用于在所述数据与所述初始值不同时执行所述写事务。
7.如权利要求I所述的装置,其中,所述核心用于在与所述轮询表中的条目对应的应用程序结束时向所述IO互连发送回收消息,以删除所述条目。
8.如权利要求I所述的装置,其中,所述核心用于执行第一指令以设置所述目的地址,并且用于执行第二指令以使所述核心进入低功率状态直到所述目的地址被更新。
9.如权利要求8所述的装置,其中,所述核心用于在执行所述第一指令和所述第二指令之前向所述IO互连发送所述注册消息。
10.一种系统,包括 第一集成电路,包括 至少一个核心,其包括第一逻辑,用于执行第一指令以在存储器中设置监视地址;以及第二逻辑,用于在预定指令跟随所述第一指令时使所述至少一个核心进入低功率状态; 第一一致性互连,其耦合到所述至少一个核心; 第一输入/输出(10)互连,其包括 轮询表,用于存储包括下列各项的元组耦合到所述第一 IO互连的知识产权(IP)块中的寄存器的寄存器标识符、所述存储器中的所述监视地址、以及与所述寄存器相关联的初始值;以及 委托逻辑,用于从所述至少一个核心接收委托消息,并且基于所述元组获得所述寄存器的当前值,直到所述当前值不同于所述初始值,并且响应于所述不同,将数据写入所述监视地址;以及所述IP块,其耦合到所述第一 IO互连,所述IP块包括所述寄存器,并且用于为在所述至少一个核心上执行的应用程序执行功能;以及 所述存储器,其经由存储器互连耦合到所述第一集成电路,其中所述至少一个核心用于响应于所述数据被写入到所述存储器的所述目的地址而退出所述低功率状态,并且用于在跟随所述预定指令的下一条指令处继续执行所述应用程序。
11.如权利要求10所述的系统,其中,所述IP块用于在所述操作完成之后将所述初始值更新为所述当前值。
12.如权利要求10所述的系统,其中,所述至少一个核心用于在执行所述第一指令之前向具有所述元组的所述第一 IO互连发送所述委托消息。
13.—种方法,包括 在主机处理器和设备之间耦合的互连中接收来自所述主机处理器的注册消息,所述注册消息用于将相对于所述设备的轮询操作委托给所述互连; 将与设备监视位置、存储器监视地址、以及所述设备监视位置的初始值有关的信息存储在与所述互连相关联的轮询表中;以及 将读请求从所述互连发送到所述设备,以对所述设备进行轮询,并且如果从所述设备监视位置获得的设备值不同于所述初始值,则向所述主机处理器报告所述轮询的结果。
14.如权利要求13所述的方法,还包括从所述互连发出对系统存储器中的所述存储器监视地址的写请求,以报告所述结果。
15.如权利要求14所述的方法,还包括从所述互连向所述系统存储器发出消息信令中断,以发出所述写请求。
16.如权利要求15所述的方法,其中,在发送所述注册消息之后,将所述主机处理器置于低功率状态,并且响应于对所述存储器监视地址的所述写入,所述主机处理器退出所述低功率状态。
17.如权利要求13所述的方法,其中,所述轮询表包括多个条目,每个所述条目包括设备监视位置、存储器监视地址以及初始值,并且还包括针对所述多个条目中的每个条目,向所述设备发送读请求。
18.如权利要求13所述的方法,还包括使用所述互连的轮询委托逻辑来发送所述读请求并且将所述初始值与所述设备值进行比较。
19.如权利要求13所述的方法,其中,所述设备监视位置对应于所述设备的状态寄存器,并且经由所述轮询表将所述状态寄存器与所述存储器监视地址相关联。
20.如权利要求13所述的方法,还包括经由应用程序来发起所述注册消息,并且为所述应用程序在所述设备上执行第一功能,其中所述应用程序用于在所述信息存储到所述轮询表中之后发起所述第一功能,并且用于使所述主机处理器进入低功率状态。
全文摘要
在一个实施例中,本发明包括一种用于处理从主机处理器接收的注册消息的方法,其中注册消息将相对于设备的轮询操作从主机处理器委托给另一部件。来自于该消息的信息可以存储在轮询表中,并且该部件可以发送读请求以对设备进行轮询,并且基于设备的状态向主机处理器报告轮询的结果。还描述并要求了其它实施例。
文档编号G06F13/14GK102804155SQ201080025454
公开日2012年11月28日 申请日期2010年3月11日 优先权日2009年6月11日
发明者M·E·埃斯皮希, Z·方, R·伊耶, D·J·哈里曼 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1