消息处理单元的制作方法

文档序号:17090131发布日期:2019-03-13 23:21阅读:208来源:国知局
消息处理单元的制作方法

本公开涉及集成电路领域。更具体地,涉及将消息从第一功率域(powerdomain)中的发送器设备传递到第二功率域中的接收器设备。



背景技术:

集成电路可以包括多个域,这些域可以具有独立的功率控制器,用于分别控制各个域内的功率状态。例如,每个功率控制器可以根据相应域的当前功率状态来控制电压源或时钟源。设置单独的功率域使得集成电路的某些部分能够被置于较低功率状态以节省功率,同时集成电路的其他部分保持可操作。但是,实现单独的功率域会使消息从一个域中的发送器到另一个域中的接收器的传递更加复杂。



技术实现要素:

至少一些示例提供了一种集成电路,包括:

第一功率域;

第二功率域;以及

消息处理单元,用于控制从第一功率域中的发送器设备发送的消息到第二功率域中的接收器设备的传递;

消息处理单元被配置为将发送器设备发送的消息写入第二功率域提供的消息存储区域;

其中,当第二功率域中的至少一个设备处于静止状态时,消息处理单元响应于来自发送器设备的消息发送请求请求向接收器设备发送至少一个消息,向第二域功率控制器发送唤醒请求以请求第二功率域中的所述至少一个设备从静止状态转换到唤醒状态。

至少一些示例提供了一种消息处理单元,用于控制从集成电路的第一功率域中的发送器设备发送的消息到该集成电路的第二功率域中的接收器设备的传递,消息处理单元包括:

消息传递电路,被配置为向第二功率域中设置的消息存储区域写入从发送器设备发送的消息;以及

唤醒请求电路,当第二功率域中的至少一个设备处于静止状态时,响应于来自发送器设备的消息发送请求请求向接收器设备发送至少一个消息,向第二域功率控制器发送唤醒请求以请求第二功率域中的所述至少一个设备从静止状态转换到唤醒状态。

至少一些示例提供了一种用于控制消息在包括第一功率域和第二功率域的集成电路中传递的方法;方法包括:

在消息处理单元处从第一功率域中的发送器设备接收请求向接收器设备发送至少一个消息的消息发送请求,其中,所述消息处理单元用于控制从第一功率域中的发送器设备发送的消息到第二功率域中的接收器设备的传递,并且其中,所述消息处理单元被配置为向第二功率域中设置的消息存储区域写入从发送器设备发送的消息;以及

当第二功率域中的至少一个设备处于静止状态时,响应于接收到消息发送请求,向第二域功率控制器发送唤醒请求以请求第二功率域中的所述至少一个设备从静止状态转换到唤醒状态。

附图说明

本技术的其他方面、特征和优点将在结合附图阅读时从以下对示例的描述中变得显而易见,其中:

图1示出了包括用于处理消息从第一功率域中的发送器到第二功率域中的接收器的传递的消息处理单元的集成电路的示例;

图2更详细地示出了消息处理单元;

图3示出了消息处理单元中的控制寄存器的示例;

图4示出了在消息处理单元的发送器和接收器部分之间交换的信号的示例;

图5a和图5b示出了描述处理从第一域中的发送器向第二域中的接收器传递的消息的方法的流程图;

图6示出了在发送器、消息处理单元、和接收器之间交换的信号的示例;

图7示出了具有至少三个功率域的集成电路的示例;以及

图8示出了用于处理从第一域中的发送器向两个或更多个其他域中的接收器发送的消息的消息处理单元的示例。

具体实施方式

在包括多个功率域的集成电路中,用于处理从一个域向另一域发送的消息的典型方法可以是提供在第一和第二域本身之外实现的永在线(相对而言)的共享消息区域,其在至少一个发送器/接收器域被供电时被供电,从而确保共享消息区域可用作从一个域接收到的消息的邮箱,而无论另一域当前是处于唤醒状态还是静止状态。在永久供电的域中提供共享邮箱的缺点是,系统重置或可能导致发送器或接收器设备断电的其他事件可能在共享邮箱区域内遗留部分完成的事务,这可能会在系统的些部分随后再次通电时破坏协议。此外,永在线共享邮箱可能会增加功耗。

在下文讨论的技术中,提供消息处理单元以控制从第一功率域中的发送器设备发送的消息到第二功率域中的接收设备的传递。消息处理单元被配置为向第二功率域中设置的消息存储区域写入从发送器设备发送的消息。当第二功率域中的至少一个设备处于静止状态时,消息处理单元响应于来自发送器设备的消息发送请求请求向接收器设备发送至少一个消息,向第二域功率控制器发送唤醒请求以请求第二功率域中的所述至少一个设备从静止状态转换到唤醒状态。由于消息存储区域是在第二功率域中实现的,但是由于消息处理单元具有用于在需要从第一域接收消息时请求唤醒第二域中的至少一个设备的机制,因此没有必要在永在线的域中提供保证可用的共享邮箱。这节省了功率,并且使得处理当功率状态的发生变化时部分完成消息的情况不那么复杂。

第一和第二功率域可以是可以置于独立功率状态的任何域。可以通过改变电压源、或时钟源、或者电压和时钟源两者、或通过其他方式来控制不同的功率状态。例如,第一和第二功率域可以包括不同的电压域(具有对各个域的电压源的独立控制),或不同的时钟域(具有对各个域的时钟信号的独立控制)。

静止状态可以是不能保证第二功率域中的设备的正确或正常操作的状态。唤醒状态可以是预期第二功率域中的设备的正确或正常操作的状态。

在一些示例中,静止状态可以是其中到第二功率域中的设备的电压源或时钟源被削弱、中断或撤除的状态。

然而在其他示例中,静止状态可以是这样的设备状态:其中允许中断或撤除电压源或时钟源,但是到设备的电压源或时钟源实际上是否是中断的可取决于其他因素。因此,有可能仍然以与设备处于唤醒状态相同的方式将电压或时钟信号提供给处于静止状态的器件。例如,这种方法对于多个设备共享电压/时钟源、但具有用于转换到不同功率状态的接受/拒绝请求的独立通道的系统是有用的。例如,功率控制器可以请求准备断电的多个设备转换到静止状态,但是一些设备可能正在执行非可中断的操作并因此可拒绝改变状态的请求。即使与拒绝所请求的静止状态条目的设备共享公共电压或时钟源的其他设备接受了转换到静止状态的请求,,这意味着一些设备可以处于静止状态但可能仍然启用时钟/电压源。因此,在一些示例中,静止状态可以简单地是设备准备好使电力或时钟信号源撤除的状态。当第二域中的设备处于静止状态时,第一域中的发送器设备不能保证该设备会对消息做出正确响应。

当第一功率域中的发送器设备希望发送消息时,请求哪些设备从静止状态转换到唤醒状态可以根据实施例而变化。通常,要唤醒的至少一个设备可以是为了使消息传递协议能够成功执行所需的任何设备。

在一些示例中,要唤醒的至少一个设备可以包括接收器设备本身。例如,唤醒请求可以标识哪个特定设备是接收器以使第二域功率控制器能够标识要转换到唤醒状态的适当的设备。在一些示例中,第二功率域的至少一个设备可以包括第二功率域的所有设备。因此,唤醒请求可以简单地请求第二域功率控制器将第二功率域中的所有设备从静止状态转换到唤醒状态。在另一示例中,第二功率域的至少一个设备还可以包括第二域的互连结构,其管理第二域内的多个设备之间的数据访问中的一致性,并且用于将事务路由到存储器。

在一些情况下,第二功率域中的至少一个设备可以包括消息处理单元在第二功率域中实现的那部分(下文称之为“第二域mhu部分”)。即使接收方设备本身、消息存储区域、或用于将消息路由到接收方设备或共享消息存储区域的互连结构或其他设备在从第一域中的发送器设备发送消息时处于静止状态,如果在接收到消息时至少第二域mhu部分处于唤醒状态,则这可能足以允许安全地实现消息处理协议。例如,一旦第二域mhu部分被唤醒,它就可以请求到共享消息存储区域或接收方设备内的位置的写入,并且即使共享消息存储区域、接收方设备或互连结构尚未唤醒,写入请求自身可以向第二域功率控制器触发唤醒请求以唤醒其他设备。因此,消息处理单元自身不必明确地向功率控制器发送信号来请求唤醒其他设备(例如,接收方、互连结构或共享消息存储区域)。

因此,在一些情况下,从发送器设备接收消息发送请求可以触发到第二域功率控制器的唤醒请求,以请求第二域mhu部分从唤醒状态到静止状态的转换,但是唤醒请求可能不直接影响第二域中的其他设备是否退出静止状态(尽管这些其他设备仍然可能间接受到影响,因为一旦第二域mhu部分返回到唤醒状态,则第二域mhu部分采取的进一步动作可能导致这些其他设备从静止状态中被唤醒)。

概括而论,唤醒请求触发第二域中的所有设备从静止状态转换到唤醒状态并不是必需的,并且存在许多不同的方式可以实现唤醒请求。

消息存储区域在第二域中的位置可以改变。在一些情况下,消息存储区域可以包括消息处理单元自身内的、消息处理单元在第二功率域中实现的部分内的寄存器。例如,消息处理单元可以包括第二域mhu部分内的多个消息状态寄存器,消息有效载荷可直接写入消息状态寄存器,或者在消息需要大于一个寄存器的大小的情况下,则写入多个消息状态寄存器。

可选地,可以在消息处理单元本身之外的第二域中实现的存储器或存储设备中设置消息存储区域。例如,可以将消息写入还用于除消息传递之外的目的的共享存储器设备。在一些情况下,可以在存储器中预定义消息存储区域的地址范围,从而当消息要被发送时,消息处理单元将消息有效负载写入地址空间的预定义区域。可选地,消息有效载荷可以指定地址指针,并且消息处理单元可以将消息有效载荷存置于由地址指针标识的存储器区域中,使得可以根据消息的不同而写入消息的位置。

消息处理单元可以具有在第一功率域中设置的发送器存储区域,用于存储与向接收器设备发送消息相关联的控制数据。例如,发送器存储区域可以包括以下各项中的任何一者或多者:

·至少一个寄存器,用于存储用于配置消息处理单元的操作的配置数据;

·表示消息发送请求是被断言还是被去断言的寄存器(可由发送器设备写入以触发消息发送请求);

·接收器就绪寄存器,表示第二功率域中的至少一个设备(例如,第二域mhu部分)是否处于准备好接收消息的唤醒状态;

·消息状态信息,表示发送器设备发送的消息的状态(可选地,这样的信息可以存储消息处理单元在第二域中实现的部分中以允许接收器更方便的访问,这样可以基于接收器在阅读消息时的进展来更新消息的状态)。

当第二功率域的至少一个设备处于静止状态时,消息处理单元可以响应于发送器设备访问发送器存储区域而向发送器设备返回错误指示。这使得消息处理单元能够使发送器设备获知如果继续向第二功率域发送消息的协议是否是不成功的,因为第二功率域的至少一个设备处于静止状态。例如,这使得消息处理单元能够处理这样的情况:其中在第二功率域中的至少一个设备响应于唤醒请求从静止状态转换到唤醒状态之后,在消息发送协议已转发发送器设备发送的所有消息完成之前,该至少一个设备转换回静止状态。

当第二功率域中的至少一个设备响应于唤醒请求未能从静止状态转换到唤醒状态时,消息处理单元可以向发送器设备返回错误指示。因此,虽然消息处理单元可以发送唤醒请求以请求从静止状态到唤醒状态的转换,但这仅仅是不能保证设备实际唤醒的请求,并且并不强制第二域功率控制器实际触发唤醒。在某些情况下,唤醒请求可以被忽略。消息处理单元可以提供用于识别何时唤醒请求已被忽略的机制。例如,消息处理单元可以实现超时机制。如果在发送唤醒请求之后的特定时间段之后,没有从第二功率域接收到第二功率域中的至少一个设备处于唤醒状态的指示,则可以向发送器设备发送错误指示以通知发送器设备该消息发送请求不成功。随后,发送器设备可以获知消息发送已失败并且可以稍后重新尝试发送消息。

消息处理单元可以响应于检测到第二功率域的至少一个设备已响应于唤醒请求从静止状态转换到唤醒状态,将访问就绪参数(例如,在发送器存储区域的寄存器中的一者中)设置为第一值。例如,发送器设备可以读取访问就绪参数,以确定请求将消息写入第二功率域中的消息存储区域是否安全。

响应于检测到第二功率域的至少一个设备从唤醒状态到静止状态的转变,消息处理单元可以将访问就绪参数设置为第二值。当访问就绪参数具有第二值时,消息处理单元可以响应于发送器设备访问发送器存储区域而向发送器设备返回错误指示。这提供了这样一种机制:使得发送器设备能够识别第二设备中的至少一个设备在先前被唤醒之后何时转换回静止状态,从而使它可以识别出该消息可能未被正确接收。

在从消息处理单元向第二域功率控制器发送唤醒请求之后,发送设备可以将至少一个消息到第二功率域中的消息存储区域的写入推迟,直到消息处理单元已经指示第二功率域中的至少一个设备响应于唤醒请求已经从静止状态转换到唤醒状态。存在不同方式来使发送器设备可根据消息处理单元提供的信息确定第二功率域中的至少一个设备是否已经转换到唤醒状态。在一个示例中,响应于检测到第二功率域中的至少一个设备响应于唤醒请求已经从静止状态转换到唤醒状态,消息处理单元可以向发送器设备提供中断信号。在另一示例中,发送器设备可以轮询(周期性地读取)由消息处理单元维护的访问就绪参数,该参数指示第二功率域中的至少一个设备是否处于静止状态。无论哪种方式,通过首先发送消息发送请求,随后推迟消息到第二功率域中的消息存储区域的写入直,直到确定第二功率域中的至少一个设备处于唤醒状态,这避免了需要设置共享的“永在线(alwayson)”消息存储区域,以提供有保证的存储。

在第二域中的至少一个设备响应于唤醒请求从静止状态转换到唤醒状态之后,第二域功率控制器可以拒绝将第二功率域中的至少一个设备从唤醒状态转换到静止状态的请求,同时来自消息处理单元的唤醒请求保持被断言。这降低了当发送器仍在向第二功率域中的消息存储区域写入消息时第二域功率控制器触发转换回静止状态的可能性,以减少消息丢失的可能性。消息处理单元可以维持唤醒请求的断言,直到发送器设备去断言消息发送请求为止。在完成至少一个消息到消息存储区域的写入之后,发送器设备可以去断言消息发送请求。具体地,在将最终消息写入消息存储区域之后,发送器可以去断言消息发送请求。这防止了第二功率域中的至少一个设备转换回静止状态,直到发送器已经完成写入消息。

然而仍然可能的是,在写入最后一个消息之后,第二功率域中的至少一个设备可以转换回静止状态或者可在从第二功率域的消息存储区域中读取出所有消息之前被重置。因此,在重置或断电转换时,至少一个部分完成的消息可能在消息存储区域中保持挂起(pending)。当至少一个部分完成的消息在消息存储区域中保持挂起时,响应于至少一个设备重置或转换到静止状态,在第一功率域中操作的消息处理单元的一部分可以触发完成对至少一个部分完成的消息的处理。例如,消息处理单元可以向第一功率域中的发送器设备提供这样的响应:该响应使与发送消息相关联的协议结束,而不是使其部分未完成。例如,第一功率域中的消息处理单元的部分可以响应于至少一个部分完成的消息向发送器设备返回错误指示。因此,发送器设备可以意识到消息发送失败,并且因此可以重新尝试稍后发送消息。这避免了当第二域中的至少一个设备在稍后退出重置或转换回唤醒状态时恢复对部分完成的消息的处理的需要,使得确保避免由意外的电源转换或由重置引起的冒险(hazard)变得不那么复杂。此外,这使得第二域中的消息存储区域能够断电以节省功率,即使这可能导致与部分完成的消息相关联的数据丢失。发送器设备稍后可以通过从头重新开始协议(例如,通过发送另一消息发送请求)来重新开始发送部分完成的消息。

消息处理单元可以不具有处理从第二功率域中的发送器设备发送到第一功率域中的接收器设备的消息的能力。因此,消息处理单元可以是单向消息处理单元。这可以简化消息处理单元的设计,并提高可扩展性以适应不断增加的功率域数量。如果还需要以相反方向发送消息,则可以设置第二消息处理单元以控制从第二域中的发送器设备发送的消息到第一功率域中的接收器设备的传递。

此外,在包括第三功率域的系统中,第一功率域中的消息处理单元的公共发送器部分可以与第二域接收器接口和第三域接收器接口通信,其中第二域接收器接口用于请求将消息写入第二功率域中的消息存储区域,并且第三域接收器接口用于请求将消息写入第三功率域中的另一消息存储区域,以处理从第一域中的发送器设备发送到第三功率域中的接收器设备的消息。如果存在四个或更多个域,则可以为每个附加域设置另外的接收器接口。因此,根据上面讨论的技术,第一域中的公共部分可以与针对每个其他域的接收器接口通信。这避免了对针对每个相应的域对的单独的发送器-接收器接口对的需要,这是因为公共发送器部分在多个域的接收器部分之间共享,从而提高了可扩展性。消息处理单元的公共发送器部分内的选择器可以基于接收器标识由第一功率域中的发送器设备提供的信息在第二和第三域接收器接口之间进行选择。

图1示意性地示出了集成电路2(例如,片上系统)的示例,其包括多个功率域4,在该示例中标记为a和b。每个域4具有功率控制器6,用于控制相应域内的各种设备8、12、14、26的功率状态。例如,功率控制器6可以控制每个设备在唤醒状态和静止状态之间的转换,其中在唤醒状态中保证到相应设备的功率/时钟源7,在静止状态中设备8处于准备好将到设备的功率或时钟源关闭或减弱的状态。可选地,一些系统可以与支持具有不同功耗级别的多于两个不同功率状态(例如,具有三个或更多不同级别的电压源或不同功率/时钟门控状态)的功率控制器一起工作。在功率控制器6和要控制的每个设备8、12、14、26之间提供相应的功率管理通道10。功率管理通道10承载一个或多个功率管理信号,例如,从功率控制器6发送到设备8、12、14、26的请求设备转换到某个功率状态的请求信号,或者从受控设备8、12、14、26发送到控制器6的用于接受或拒绝改变功率请求状态、或用于指示在特定功率状态下操作的偏好的一个或多个信号。通常,到特定域的电压源或时钟源在由其供能的所有设备8、12、14、26都已进入静止状态时,可以终止或遏止到的电压源或时钟源7。如果给定域内的任何设备转换8、12、14、26从静止状态转换回唤醒状态,则可以恢复到该域的电压源或时钟源7。

每个域具有至少一个总线主设备8,例如处理器、图形处理单元、或直接存储器访问控制器;以及互连结构12,用于管理在给定主设备8中缓存的数据与在其他主设备中缓存或存储在存储器114中的数据之间的一致性。虽然为简明起见图1仅示出了每个域的一个主设备8,但应理解每个域可以具有多个总线主设备8。每个主设备8具有主总线接口13,用于根据互连结构指定的一致性协议管理与互连结构12的交互。耦接到互连结构12的每个从设备具有对应的总线从接口16,用于根据一致性协议与互连结构12交互。例如,主设备8可以通过控制其主接口12在互连结构12上断言写请求来将数据写入存储器14。响应于写操作,互连结构12可以在需要建立与同一地址相关的其他缓存数据的位置时触发侦听操作,并且在在其他主设备中缓存的数据关于从主设备8到存储器14的写入方面现在已经过时的情况下,可以根据一致性协议使其无效。类似地,在由主设备8发起的读取中,如果相同地址的脏数据被缓存在另一主设备中,则互连结构12可以侦听其他主设备。某些设备可以充当主设备(启动读/写事务)和从设备(响应读/写事务)两者。功率控制器6可以使用相应的功率管理通道10来控制主设备8、互连结构12和存储器14的功率状态。虽然为简明起见存储器14仅在图1的示例中的域b中示出,但也可以在域a中设置存储器。

因此,功率域a和b具有独立的电压源或时钟源,使得一个域可以保持操作而另一个域断电,反之亦然。然而,在集成电路2或片上系统内设置单独的域使得消息在域之间的传递更加复杂。如图1所示,提供至少一个消息处理单元20以桥接域并处理域之间的消息传递。每个消息处理单元20在单个方向上将消息从发送器设备传递到接收器设备。例如,在图1中,消息处理单元20-1将消息从域a中的发送器设备传递到域b中的接收器设备,并且消息处理单元20-2将消息从域b中的发送器设备传递到域a的接收器设备中。消息处理单元20可以用作连接到各个域中的互连结构12的存储器映射外围设备。消息处理单元20处理将消息写入消息存储区域,该消息存储区域可以在消息处理单元20的接收器域部分内设置,或者可以位于在接收器域中实现的存储器14内。消息处理单元提供一种机制来断言中断信号22以促进处理器间消息传递,并且当从发送器域发送消息时,还触发接收方域中的至少一个设备从静止状态到唤醒状态的功率转换。

图2更详细地示出了消息处理单元20中的一者的示例。应当理解,这可以是图1中所示的mhu20-1或mhu20-2。mhu20包括在发送器功率域中设置的发送器mhu部分30和在接收器功率域中设置的接收器mhu部分32。对于mhu20-1,发送器域(第一域)是域a,接收器域(第二域)是域b;对于mhu20-2,发送器域是域b,接收器域是域a。接收器mhu部分32是设备中功率控制器6使用功率管理通道10中的一个控制的一者。每个消息处理单元(mhu)20具有在发送器mhu部分30中实现的桥接从接口24,其充当发送器域内的互连结构12上的从设备(类似于存储器14的从接口16);以及在接收器mhu部分32中实现的桥接主设备26,其充当接收器域内的互连结构12上的主设备(类似于总线主设备8的主接口13)。

发送器域中的发送器设备通过向互连结构发布写入事务来与mhu交互,该写入事务指定映射到mhu20的发送器或接收器mhu部分30、32中的一者内的控制寄存器的目标地址。写入事务通过互连结构12路由到mhu20。接收器mhu部分26中的mhu桥接主设备26可以通过直接写入其内部寄存器50或通过在互连结构12上发布指定映射到消息存储区域的存储器地址的写请求来触发到消息存储区域的写入。而且,接收器域中的接收方设备(例如,主设备8)可以通过向互连结构12发布指定映射到相应控制寄存器50的存储器地址的读请求,从接收器mhu部分32的控制寄存器50读取信息。

在发送器mhu部分30中,从互连结构12接收到的事务被发送到地址解码器34,地址解码器34解码事务的目标地址并选择是否将事务定向到以下各项之一:用于与接收器mhu部分32交互的桥接从接口24、用于处理接收器mhu部分32处于静止状态的情况的错误响应块36、以及用于存储与向接收器域发送消息传送相关联的控制数据的一组发送器控制寄存器38。

图3示出了发送器控制寄存器38的内容的示例。应当理解,这些仅是可以提供的可能寄存器的一些示例,并且实际上其他信息也可以存储在发送器控制寄存器38中。在该示例中,发送器控制寄存器38指定下述项:

·access_request40:访问请求参数,其可以由发送器设备写入以请求访问接收器域以发送消息。发送器设备对访问请求寄存器40的设置表示消息发送请求的发送。

·access_ready42:访问就绪参数,指示接收器mhu部分32是否处于静止状态。

·resp_cfg44:响应配置寄存器,用于存储配置mhu20应如何响应在向接收器域发送消息期间发生错误(例如,当需要发送消息时且接收器域处于静止状态时触发的错误)时的情况的控制数据。例如,

resp_cfg44寄存器可以指定在检测到错误时是否向发送器设备生成中断。

·int_access_en46:中断访问启用寄存器46,其存储控制mhu20在检测到access_ready参数42中的转变时是否将中断发送器设备的中断访问启用值。

这些寄存器中的每一者可以映射到相应的存储器地址,从而它们可以由发送器设备读/写。一些寄存器(例如,access_ready)可以在发送器设备的角度被定义为只读,仅可由mhu20内的硬件更新。其他寄存器(例如,access_request40、resp_cfg44、int_access_en46)可以由发送器设备进行读取和写入。

因此,由发送器设备发送的指定映射到控制寄存器38中的一者的地址的事务由地址解码器34引导到控制寄存器。另一方面,映射到mhu20的其他地址对应于接收器mhu部分32处的位置,从而将这些事务提供给访问选择器48。访问选择器48根据控制寄存器38中的access_ready42和access_request40值选择将事务引导到桥从接口24还是错误响应块36。如果已经响应于来自发送器设备的消息发送请求设置了access_request寄存器40,并且确定接收器mhu部分32准备好访问(不处于静止状态),如访问就绪寄存器42所指示的那样,则来自发送器设备的事务被引导到桥接从设备24,否则错误响应块36处理该事务。错误响应块36基于存储在resp_cfg44寄存器中的值,确定如何处理当接收器mhu部分32处于静止状态时的情况。例如,可以简单地忽略事务,或者可选地可以将中断信号发送到发送器设备。

接收器mhu部分32包括接收器消息处理寄存器50,用于存储与发送消息有关的信息,例如消息状态信息。例如,如图3所示,接收器控制寄存器50可以包括n组消息寄存器52(每个消息一组寄存器针,),其中每组消息寄存器52包括用于存储关于特定消息的消息状态信息的消息状态寄存器54、消息设置寄存器56,其中,到消息设置寄存器56的写入信号表示已写入新消息、以及消息清除寄存器58,其可由接收器设备写入以指示相应的消息已被读取。

图4更详细地示出了在mhu20的发送器和接收器部分30、32之间交换的信号的示例。桥接口包括一组请求60和确认信号61,它们分别由发送器用于请求发送消息并由接收器侧确认消息的接收;以及消息有效载荷和响应有效载荷信号62、63,用于提供消息或响应的内容。对于具有相对小的有效载荷的消息,消息的有效载荷可以与消息状态一起存储在相应的消息状态寄存器54中。如果需要发送更大的消息,则可以使用多个消息状态寄存器52来存储单个组合消息(例如,存储在消息处理寄存器50中的掩码信息可以指定应如何将消息状态寄存器52组合在一起并解释为单个更大的信息)。可选地,可以将消息有效载荷写入接收器域中的存储器14中的区域。消息存储区域的地址可以是隐式的(具有用于消息传递的预定义存储器区域),或者在消息有效负载中明确指定。

如图4所示,桥接口还包括接收器唤醒信号64,当发送器将消息发送请求写入访问请求寄存器40以触发接收器域的唤醒时,该信号从桥接从接口24发送到桥接主接口26。接收器唤醒信号64的断言触发唤醒请求66(qactive)被发送到与接收器域相关联的功率控制器6,以请求功率控制器6将接收器mhu部分32从静止状态唤醒到唤醒状态,或请求接收器mhu部分32保持在唤醒状态(若其已经处于唤醒状态)。因此,桥接从设备24充当mhu20中的唤醒请求电路。功率管理通道的qactive线路耦接到发送器和接收器mhu部分30、32之间的通道的唤醒信号线64,从而即使当接收器mhu部分32处于静止状态时,仍然可以触发唤醒请求66而不需要接收器mhu部分32的主动控制。唤醒请求66不一定需要受功率控制器6控制。如果功率控制器6确实对该请求起作用,则它向接收器mhu部分32发送请求接收器mhu部分32从静止状态唤醒到唤醒状态的功率转换请求信号68(qreq)。

电力管理通道10上的桥接主设备26和电力控制器6之间的接口还包括从桥接主设备26发送到电力控制器6的接受信号(qaccept)70和拒绝信号(qdeny)72,主设备26可使用它们来响应功率转换请求信号68以接受或拒绝从唤醒状态转换回静止状态的请求。当来自发送器mhu部分30的唤醒请求64仍然被断言时,桥接器主设备26可以拒绝转换到静止状态的请求。图4中所示的功率管理通道10上的信号仅是功率控制器6如何能够控制桥接主设备26的功率状态的一个示例。还可以使用其他功率管理协议(例如,利用更复杂的信令来控制两个或多个电源状态之间的转换)。

图5a和图5b一起示出了示出处理从第一域中的发送器设备向第二域中的接收器设备发送消息的方法的流程图。为了便于说明,在这个示例中发送器域被认为是域a而接收器域是域b(因此mhu20-1是用于发送消息的消息处理单元);但也可以是相反情况,其中,mhu20-2将用于从域b向域a发送消息。

在步骤100处,发送器域a中的发送器设备向mhu20-1发送消息发送请求。消息发送请求包括存储器映射的写入事务,其指定与access_request寄存器40相对应的地址。响应于消息发送请求,在步骤102处,发送器mhu部分30(基于access_ready参数42)确定mhu20-1中的接收器mhu部分32是否处于静止状态。如果是,则在步骤104处将唤醒请求64发送到接收器mhu部分32,该接收器mhu部分还向接收器功率域b中的功率控制器6触发相应的唤醒请求66。在步骤106处,mhu20-1的发送器mhu部分30使用如图4所示的从桥接主设备26发送到桥接从设备24的唤醒信号(recawake_async)74来确定接收器mhu部分32是否已指示其已唤醒。当mhu的接收器部分32已指示它是唤醒的,则在步骤108,access_ready参数42被设置为发送器控制寄存器38中的第一值(例如,1)。根据是否针对access_ready参数的这种转换启用了中断,中断22可以此时被发送到发送者设备。如果中断未启用,则发送器可以可选地通过轮询access_ready寄存器42(周期性地发布读取事务以读取access_ready寄存器并检查它是否具有第一值)来确定接收器现在是唤醒的。

另一方面,如果在步骤106处接收器mhu部分32尚未指示其是唤醒的,则在步骤110处确定发送器设备是否已尝试访问发送器mhu部分30中的发送器控制寄存器38。如果是,则在步骤112处,将错误指示返回给发送器设备以指示接收器尚未准备好。如果在步骤110处没有尝试访问发送器寄存器,则在步骤114处确定是否已经出现超时条件(例如,自从在步骤104发送唤醒请求以来已经过了特定时间段),并且如果是,则在步骤112处发送错误指示。这提供了一种用于识别何时接收器mhu部分32尚未被唤醒的机制(尽管将唤醒请求66发送到接收器域b中的功率控制器6),从而使发送器可以确定消息发送请求失败并且可以稍后重试。如果没有超时,则方法返回到步骤106以继续等待接收器mhu部分32唤醒。如果在步骤112处返回错误指示,则这使得用于处理当前消息发送请求的协议结束,并且消息返回到步骤100以等待后续消息发送请求。

另一方面,如果接收器确实被唤醒,并且在步骤108处已经将access_ready参数42设置为第一值,则方法前进到步骤120,其中通过发布指定映射到接收器控制寄存器50的目标地址的写入事务,发送器请求将消息写入到第二域的消息存储区域中。如果在步骤102处确定在接收到原始消息发送请求时接收器部分已经是唤醒的,则可以省略步骤104到114并且方法可以直接进行到步骤120(尽管在一些示例中,唤醒请求仍然可以被发送到功率控制器以请求接收器mhu部分32保持在唤醒状态,以随后降低接收器mhu部分32转换到静止状态的可能性)。在步骤122处,由域a中的发送器设备发送的有效载荷通过有效载荷信号线62传递到接收器mhu部分32,接收器mhu部分32将有效载荷写入其接收器控制寄存器50,或触发互连结构12上的写入事务以写入消息有效载荷到存储器14(接收器mhu部分32充当mhu20的消息传递电路)。

方法随后进行到图5b的步骤124,其中接收器mhu部分32向接收器域b内的接收器设备8发送中断22。mhu20-1内的一些接收器寄存器50可以控制该中断何如被发送。由发送器设备提供的接收器标识符可以标识哪个特定接收器应该被中断,或者可选地,可以将中断发送到多个设备,其中每个设备可以确定它们是否是应当对该消息作用的接收器。响应于中断,给定的接收方设备8可以在步骤126选择(通过发布指定映射到消息存储区的地址的存储器事务)从消息存储区读取消息。当接收器读取消息时,在步骤128处,接收器设备8发布指定映射到接收器控制寄存器50的相应消息状态寄存器的地址的写入事务,从而更新消息状态以指示消息已被读取,并且接收器mhu部分32清除相应的消息中断22。因此,如果发送器随后向对应于相关消息状态寄存器54的地址发布读取,则发送器可以确定该消息已被接收方读取。方法返回到步骤126以等待任何其他消息的读取。

同时,发送器mhu部分30还在步骤130处检查发送器设备是否已去断言其消息发送请求。发送器可以通过向访问请求寄存器40发布另一写入来将该消息发送请求去断言,该写入将寄存器设置为与表示断言的消息发送请求的值相反的值。发送器可以推迟去断言其消息发送请求,直到它发布了针对最终消息的写入为止。当发送器对消息发送请求去断言时,桥接唤醒信号64也被去断言,并且在步骤132处,mhu20-1还对发送到功率控制器6的唤醒请求66去断言,从而不再请求功率控制器保持接收器侧处于唤醒状态。而且,由于来自桥接从设备24的桥接唤醒信号64不再被断言,桥接主设备26现在可以接受转换到静止状态的任何请求。

在步骤134处,mhu20-1的发送器mhu部分30确定接收器mhu部分32是否已经转换到静止状态(如上所述,这仅在发送器设备已对其消息发送请求去断言时才会发生)。如果是,则在步骤136处,将access_ready参数42更新为第二值,以指示接收器mhu部分32处于静止状态。可选地,当access_ready参数42从第一值转换到第二值时,域a中的发送器设备8可以被中断,这取决于中断启用(int_access_en)寄存器46是否启用了中断。当接收器转换到静止时,随后在步骤138处,发送器mhu部分30确定消息存储区域中是否存在任何部分完成的消息。这可以或者通过在发送器控制寄存器38内保持跟踪部分完成的标志来确定,或者通过要求接收器mhu部分32向发送器mhu部分30信号告知是否存在任何部分完成的消息(在接受转换到静止状态的请求之前,消息状态尚未由接收方设备清除)来确定。如果存在任何部分完成的消息,则在步骤140处发送器mhu部分30完成那些部分完成的消息的消息处理协议。例如,错误响应块36可以触发错误指示,该错误指示被发送回发送器域中的发送器设备以指示消息尚未被成功发送。一旦检测到接收器mhu部分32到静止状态的转换就可以返回错误指示,或者可以在发送器设备尝试读取部分完成的消息的消息状态时稍后再发送错误指示。在完成对任何部分完成的消息的处理之后,随后在步骤142处确定是否已经接收到任何另外的消息发送请求,并且如果是,则方法返回到步骤100。流程图循环步骤126-142,直到所有消息都已完成或者已收到另一个消息发送请求。

图6是示出通过mhu20-1的发送器和接收器mhu部分30、32处理从发送器功率域(例如域a)中的发送器设备8(a)向接收方域(例如域b)中的接收器设备8(b)发送消息的示例的信号图。当然,消息也可以使用mhu20-2以类似的方式从域b传递到域a。

在步骤200处,发送器设备8(a)通过发送消息发送请求来请求接收器访问,并且在步骤202处,mhu通过将access_request寄存器42设置为第一值(例如,二进制1)来做出响应。在步骤204处,这触发到接收器mhu部分的唤醒信号64,唤醒信号64在步骤206处触发到接收器域b中的功率控制器6处相应唤醒请求66。在步骤207处,功率控制器6通过使用电源管理通道10来请求接收器mhu部分32的上电做出响应。在步骤208处,接收器mhu部分32上电并转换到唤醒状态,并且当来自发送器mhu部分30的唤醒信号64保持断言时将拒绝返回到静止状态的后续请求。在步骤210处,接收器mhu部分32中的桥接主设备26通过发送唤醒状态信号74向发送器mhu部分30指示它是唤醒的。作为响应,在步骤212处发送器mhu部分30将access_ready寄存器42设置为第一值(例如,二进制1)并且还设置中断状态寄存器int_access_nr2r,当检测到access_ready从未就绪(二进制0)到就绪(二进制1)的转换时,中断状态寄存器int_access_nr2r可以触发到发送器设备8(a)的中断。可选地,可以抑制中断,替代地发送器设备可以轮询access_ready寄存器。

在步骤214处已等待access_ready被设置为第一值,一旦中断或轮询已经确定接收器侧准备就绪,则在步骤216处,发送器设备8(a)就发送写入事务以将其消息写入接收器域b中的消息存储器区域。或者发送器设备8(a)可以将其有效载荷直接写入消息状态寄存器54,或者接收器mhu部分32可以生成用于将接收到的消息有效载荷写入存储器14的写入事务。为信号告知消息已被写入,发送器设备8(a)在步骤218处触发对消息集寄存器56(reg<n>_set)的写入。响应于对消息集寄存器56的写入,在步骤220处接收器mpu部分32向接收器设备8(b)发送中断。响应于该中断,在步骤222处接收器设备从消息状态寄存器54中读取消息状态,消息状态可以包括消息本身或指向接收器设备8(b)可以读取消息的位置存储器14的指针。接收器设备8(b)对消息进行解码,并根据消息传达的特定信息对这些消息进行动作。一旦读取了消息,接收器设备通过写入消息清除寄存器58(reg<n>_stat_clear)来清除该消息。写入消息清除寄存器58还触发消息状态寄存器54中的消息状态的清除。在步骤224处,接收器mhu部分32识别出接收器已写入消息清除寄存器58,因此中断寄存器(其控制在步骤220生成的中断)被清除以取消到接收器设备8的中断(b)。随后,在步骤226处由发送器设备8(a)对消息状态的后续读取将标识出消息已被接收器8(b)成功读取。

同时,在步骤216写入消息之后,在步骤230处发送器设备8(a)清除其访问请求,从而在需要的时候接收器可以断电。因此在步骤232处,access_request寄存器40被设置为第二值(例如,二进制0)。此外,还可以清除用于在步骤212中在access_ready寄存器42从未就绪到就绪的转换时触发中断生成的寄存器int_access_nr2r,以取消到发送器设备8的任何中断(a)。access_request寄存器40的清除还清除到接收器mhu部分32的唤醒信号64(步骤233)和到域b功率控制器6的唤醒请求66。现在如果从电源控制器接收到静止状态进入请求(步骤234)桥接主设备26不再需要拒绝该请求。因此,如果在步骤236处,功率控制器6发布请求信号68以请求接收器mhu部分32进入静止状态,则在步骤238处桥接主设备26可以接受静止请求,因此可以清除其唤醒状态信号74,该信号在步骤240处触发发送器mhu部分30将access_ready寄存器42从第一值切换到第二值(例如,二进制0)。还可以设置用于跟踪从未就绪到就绪的转换的中断状态寄存器int_access_r2nr,并且如果针对该事件的中断被启用,则可以触发到发送器设备8(a)的中断以通知发送器设备接收器不再准备就绪。可选地,即使没有被中断,如果发送器设备8(a)在接收器mhu部分32已经切换到静止状态之后在步骤242尝试读取消息状态,则当access_ready42具有第二值时对发送器控制寄存器38或接收器控制访问的尝试可在步骤244处通过错误响应块36触发要被返回到发送器设备8(a)的错误指示。因此,即使在接收器读取了所有消息之前接收器侧断电并且移动到静止状态,mhu20-1也提供了使发送器能够标识出这已发生并完成部分完成消息的协议,从而稍后可以重复这些消息的机制,并且接收器不需要在唤醒时提供对部分完成的消息的任何继续处理。

总之,消息处理单元提供了一种将消息从第一域传递到第二域的技术,该技术不共享时钟、重置或电源。不需要第三个共享安全区域将消息存储在永在线的功率域中。方法提供发送器系统请求接收器系统的访问和授权,并且如果接收器mhu部分32当前不处于唤醒状态,则发送器mhu部分30可以触发到接收器mhu部分32的唤醒请求。网桥从设备和主设备都会针对接收器或发送器重置进行强化,从而使网桥的另一端完成任何未完成的事务并向发送器信号告知可恢复的错误信号。mhu具有提供了通过处理从发送器发送的一组消息来识别接收器是否已经部分地转变回静止状态的机制的协议。

如图7所示,一些集成电路2可以具有三个或更多个功率域。尽管每对域可以具有如图1至图4的示例中的单向mhu20,但是这可能需要在每个设备或域内实现许多不同的发送器mhu部分以用于处理消息传递。

相反,如图7和图8所示,通过在对应于不同接收方域的多个接收器部分之间共享mhu的发送器部分30,可以更有效地实现具有三个或更多域的系统,使得每个域4具有单个发送器mhu部分30、和多个接收器mhu部分32,其中每个接收器mhu部分可以用于接收来自每个其他域的消息。如图8中所示,具有该方案的mhu架构类似于图4,除了发送器mhu部分30具有多个桥接从接口24(其中每个用于其他域中的每个接收器mhu部分32),并且提供接入选择器提供300以基于哪个接收器是存储器映射到事务的地址来选择将事务路由到哪个接收器的桥接从接口24。每个接收器mhu部分32可以与图1至图4的示例中的接收器部分32相同。除了由选择器300执行的附加选择步骤之外,发送器和接收器部分30-32以与上述相同的方式操作。通过这种设计,mhu架构可以扩展到多个不相关的系统,其中每个系统需要一个消息接口来与多个接收器系统交换消息。这里描述的消息系统允许解除关联的系统对其自身的电源、时钟或重置进行本地化控制,而不会仅仅为了传递请求或信息而引入系统间依赖性。

在本申请中,词语“被配置为......”用于表示装置的元件具有能够执行所定义的操作的配置。在此上下文中,“配置”表示硬件或软件的互连结构的布置或方式。例如,装置可以具有提供所定义的操作的专用硬件,或者可以对处理器或其他处理设备进行编程以执行该功能。“配置为”并不意味着需要以任何方式改变设备元件从而提供定义的操作。

尽管本文已经参考附图详细描述了本发明的说明性实施例,但应理解本发明不限于那些精确的实施例,并且本领域技术人员可以在不脱离由所附权利要求限定的本发明的范围和精神的技术的情况下在其中实现各种改变和修改。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1