提供端口的动态专用的处理器间通信网络的制作方法

文档序号:6503854阅读:114来源:国知局
专利名称:提供端口的动态专用的处理器间通信网络的制作方法
技术领域
本发明通常涉及电子领域,并且更具体地涉及提供端口的动态专用的处理器间通信(IPC)协议/网络。
背景技术
大多电子系统包括多个网络元件(组件),比如形成系统的硬件和软件。在大多系统中存在负责在形成网络元件的不同组件之间以及在不同的网络元件它们自身之间通信的层。该层典型地被称作处理器间通信(IPC)层。
在最近几年中已经引入几个协议,以处理处理器间通信。IPC产品的一个例子是PCI AGP控制器(PAC),其集成Host-to-PCI桥、动态随机存取存储器(DRAM)控制器和数据路径和图形加速端口(AGP)接口。IPC产品的另一例子是OMAPTM平台。在硬件级之上,这些平台即使提供支持的话,也不会提供很多,并且在较低级组件或信道级(物理层)处提供很小的设计灵活性。
上面提到的平台不延伸至组件级,并且它们也不允许IPC资源、硬件支持能力或多节点路由等的动态指派,也不允许IPC资源的动态指派。由于对于较低功率消耗和较小系统延迟的需要,现有技术中存在对于一种IPC网络的需要,这种IPC网络可以提供端口的动态专用,使得当在该IPC系统中必须传送比如实时数据的数据时,存在较少的浪费时间。


利用附加权利要求中的特性阐述相信是新颖的本发明的特征。通过结合附图,参照下面的说明可以最佳理解本发明,在几幅图中类似的参考数字表示类似的组件,并且其中图1示出了依据本发明的实施例的IPC网络的示意图;图2示出了依据本发明的实施例的IPC栈;图3示出了依据本发明的实施例的IPC组件IPC指派;图4示出了依据本发明的实施例的主IPC表;图5示出了表示依据本发明的实施例的信道分配的示意图;图6示出了突出依据本发明的实施例在客户机初始化例程过程中包括的步骤的示意图;图7示出了突出依据本发明的实施例在客户机初始化过程中包括的步骤的另一示意图;图8示出了突出依据本发明的实施例的IPC封装的第一等级的示意图;图9示出了突出依据本发明的实施例的IPC组件初始化过程中进行的步骤的示意图;图10示出了突出依据本发明的实施例的组件初始化过程中进行的步骤的流程图;图11示出了依据本发明的实施例在IPC客户机和IPC服务器之间IPC数据的传送;图12示出了依据本发明的实施例的IPC数据头部的示意图;图13示出了依据本发明的实施例在IPC数据请求过程中进行的步骤的示意图;图14示出了依据本发明的实施例的IPC网络;图15示出了依据本发明的实施例的比如无线通信装置的电子装置;图16和17示出了依据本发明的实施例的出站流的示意图;图18示出了依据本发明的实施例的入站流的示意图;图19示出了依据本发明的实施例的IPC系统的示意图;图20示出了依据本发明的实施例的用于在图19中示出的系统的硬件端口列举流程图;
图21示出了图20的硬件端口列举流程图的继续;图22示出了依据本发明的实施例的网络路由表;图23示出了依据本发明的实施例的端口专用表;图24示出了依据本发明的实施例的组件信道请求次序;图25示出了依据本发明的实施例的对等的路由器信道请求次序。
具体实施例方式
尽管在说明书以限定被认为新颖的本发明的特征的权利要求结束,但可以相信从结合附图的下面的描述的考虑可以更好地理解本发明。
本发明的IPC提供不同处理器所需的支持,这些处理器在系统中操作以彼此通信。例如,在用于无线通信装置中的双处理器(或多处理器)无线结构中,所述无线通信装置包括应用处理器(AP)和基带处理器(BP),该IPC提供处理器所需的以有效方式彼此通信的支持。该IPC没有对AP或BP的设计强加任何约束地提供该支持。
通常,双芯结构表示AP和BP之间工作的划分。该BP处理实时和过空(over-the-air)数据,而AP封装数据,并将它提供至客户机。这两者彼此依赖以进行服务,并通过IPC消息的交换实现服务。因为在它们之间服务的类型改变,所以数据的长度、速度和点对点交换也改变。IPC的目标不是用以限定这些服务,也不是对AP和BP的设计强加约束。相反,该IPC必须允许采用IPC作为其处理器间通信栈的任何AP或BP在一起共存,并且IPC操作,好像AP和BP实际上在共享公共OS和存储器的同一芯上运行。随着在通信装置中使用多个处理器变成标准,本发明的IPC提供了不同处理器之间可靠的通信。
该IPC硬件提供了将不同的处理器系在一起至网络的物理连接。本发明的一个实施例中,优选在不同的主机之间异步地传输数据分组。连接至该IPC网络的处理器具有被统计或动态赋予的它们的物理和逻辑地址(例如IPC地址)。此外,由于在本发明的一个实施例中数据分组可以在IPC网络中的任一方向上流动,因此它们需要运载它们试图到达的处理器的目的地址。它们的源IPC地址将用于直接回答。在全部节点之间支持分组的路由。利用传统的循环冗余校验(CRC)技术,为了误差还优选检查分组。
现在回到图1,示出了依据本发明的实施例的IPC网络100。该IPC网络100包括多个IPC客户机102-106和子客户机(耦合至其它客户机的客户机)116-118,以及利用不同的IPC物理链接,比如作为说明性示例的共享存储器110、通用异步接收器/发射器(UART)112和通用串行总线(USB)114,耦合至IPC客户机102-106的IPC服务器108。应当指出,利用本发明的IPC,IPC客户机102-106可以与当前IPC服务器108协商以交换角色。如果IPC客户机102-106协商变成IPC服务器,并通过服务器批准而变成新的IPC服务器,则全部剩余的IPC客户机被通知在网络中已经存在变化。
在图2中,示出了依据本发明的实施例的IPC服务器108(或IPC客户机102-106)的IPC栈200。该IPC栈200被设计成在操作系统(OS)下被集成,并为组件业务的处理器间通信需求提供支持。该组件224和226通过API服务调用请求来自它们的IPC网络的服务。通过IPC栈200处理组件之间的物理通信的复杂性,并因此也抽象出全部硬件的从属关系。示出该IPC栈200经由OS专用API层220耦合至特定OS。
该IPC栈200由下面的5个主要层构成(1)IPC表示管理器(202)-该层用于翻译不同的系统组件(例如软件线程)之间不同的数据类型。如果提供了足够的硬件以克服不同类型的处理器芯间的数据翻译问题,则该层可以被忽略。
(2)IPC会话管理器(204)-该层是用于IPC栈和全部系统组件之间全部入向/出向IPC业务的中央库。该IPC会话管理器204具有几个主要功能,其中一些是参与IPC组件的组件ID的指派;IPC地址的指派;验证/登记;组件的验证;对组件的路由;对其它IPC节点的路由。这是在IPC服务器和客户机之间区分的唯一层。会话层提供IPC节点的发现。
客户机会话层服务是服务器会话层的子集。除了通过客户机提供服务,该服务器处理下面的功能性1、IPC节点的验证和登记。
2、撤回IPC节点特权的能力。
3、DRT的同步。
4、IPC地址块的指派。
5、网络安全。
IPC节点在编译时被赋予服务器的角色。然而,我们也应当通过运行时协商为任何(信任的)IPC节点提供承担服务器工作的方法。这将允许从网络平滑地去除服务器节点同时保持通信活跃的灵活性。
(3)、IPC路由器层(206)-该IPC路由器层存储全部必须的路由信息,比如网络路由和端口专用表。该IPC路由器层记录被指派的地址和在服务器或客户机中已经专用的任何端口。它也负责为网络上给定的QoS保留端到端带宽分配。
IPC客户机初始在IPC控制信道上广播它的配置请求。该IPC服务器接收广播并利用客户机的IPC地址进行响应。该IPC地址变成与用于该处理器(AP或BP)的动态路由表相关联。仅通过IPC服务器动态指派IPC地址。在包括服务器的特定网络上可以达到255个IPC节点。当从网络删除节点时,无效它的IPC地址。并且可以被指派给新的IPC节点。该路由器层必需支持分组和对等QoS的广播。路由器不应路由任何分组,直至它的节点已被验证/登记。
(4)IPC装置接口层(208)-该装置层抽象用于全部入站和出站业务的物理介质。IPC栈的上层依靠它的服务,以传输链路上的控制和组件以及组件业务。可以有连接至该装置层的多于一个的物理IPC链路。它的一些主要功能是硬件端口的发现,端口的列举,分组的多路复用和去多路复用,逻辑信道至组件的指派,物理介质的同步和每一指派的信道的物理带宽的保证。
该装置层通过一组HAL API接口至硬件。它管理IPC物理至逻辑信道映射的指派。该层负责管理下面IPC链路的物理带宽,以支持全部IPC硬件端口上的数据流。它对菊花链IPC节点同时提供多端口连接支持。该装置层也管理专用和非专用IPC信道的QoS。它提供多路复用和去多路复用操作,以用于发送和接收IPC数据。当构造信息时,该层发送它们至会话管理器204,以用于进一步的处理。
该装置接口层负责管理IPC物理至逻辑IPC信道。它的主要功能是完全抽象IPC硬件,从而使栈IPC变成独立于硬件。该装置接口层也管理下面IPC链路物理带宽,以支持全部IPC逻辑信道。在入向路径中,该装置接口层获得来自不同物理信道的数据,并将它们向上传递至其余的IPC栈。在出向路径中,通过发送它们于合适的物理信道之上,该装置接口层管理IPC逻辑信道的数据负载。在发送它们至IPC硬件之前,该装置接口层也处理属于相通IPC信道的级联IPC分组。在IPC会话管理器和IPC装置接口层之间预先协商信道需求。该装置接口层提供硬件端口,该硬件端口又提供至IPC客户机的装置接口。
该IPC栈在全部参与IPC节点之间利用保留控制信道,以供通信目的。当加电时,该IPC会话管理器服务器利用该链路向IPC客户机广播消息,并且反之亦然。在正常操作过程中,该信道用于在全部AP和BP之间运载控制信息。通过与在装置层之下的IPC链路无关的装置层必须为控制信道保证带宽。
(5)、IPC硬件API层(210)-提供物理层处硬件端口和其余的IPC栈之间需要的接口。该硬件API层也提供硬件端口和IPC栈和OS之间任何协议翻译。
该IPC网络由通过一组物理链路一起通信的IPC节点构成。对于IPC网络,将节点定义为能够从/向网络上的其它节点接收和发射IPC控制和数据消息的完全IPC栈兼容实体。每一个IPC节点可以支持多个IPC链路,以用于菊花链方式操作。该IPC服务器是负责IPC客户机的登记/验证和IPC地址指派的唯一节点。在任何给定的网络上仅可以存在一个IPC服务器,但具有几个IPC客户机节点。在至网络的“热连接”或加电过程中,每一个IPC节点具有被动态赋予它的一个唯一IPC地址。
IPC数据和控制分组运载唯一的IPC操作码(例如音频解码操作码,用于电池充电的AT命令操作码等)。这些IPC操作码指定在IPC分组中接收的IPC数据的类型。IPC节点类型识别IPC节点,并且是唯一的。比如组件224和226的IPC组件具有IPC节点类型意味着什么以及每一个IPC操作码用于什么的预编辑知识。
IPC节点类型例子包括iDENTMBP、GPRS BP等。类似地,单独的文件也定义IPC操作码和它们的数据结构。组件软件仅需要知道那两个唯一的数据定义。通信的复杂性被留给IPC栈。路由器是栈的一部分,并处理IPC节点之间的消息流操作。流控制是IPC栈自身的功能,并通过会话层处水印的使用而实施。
IPC地址指派仅通过IPC服务器108和对等节点指派IPC地址。节点将总是选择来自被指派给它的地址范围的最高IPC地址。那么可通过该IPC地址知道该节点。当节点不再可利用时,撤销它的IPC特权,并因此它的IPC地址不再有效。该IPC软件将从网络无效和删除IPC节点信息。如果消息被发送至删除的IPC节点,则父路由器将返回具有非法目标地址的错误信息。节点不能具有多于一个的IPC地址。在给定的IPC网络中IPC地址是唯一的。服务器IPC地址总是被设置为254。为了广播服务而保留地址255。
IPC客户机初始在IPC控制信道上广播它的配置请求。该IPC服务器接收广播,并利用客户机的IPC地址进行响应。该IPC地址变成与用于该处理器(AP或BP)的动态路由表相关联。仅通过IPC服务器动态指派IPC地址。当从网络删除节点时,无效它的IPC地址,并且可以被指派给新的IPC节点。
IPC消息路由希望在IPC网络上进行任何通信的任何IPC节点必须首先向IPC会话服务器登记。在成功的验证之后,请求IPC节点变成能够在IPC网络上通信。在每一IPC节点中存在路由器。它的功能是路由IPC消息至下一个目的节点,或在它不能将该IPC地址解析为任何给定的硬件端口目的时中终止IPC消息。如果路由器传送IPC消息至另一节点,则它将不能将消息传递至会话管理器。需要横越多个节点的通信信道的组件将必须通过它们各自的路由器请求全部那些节点上的端到端QoS。也允许路由器从下面装置层请求信道QoS。
IPC头部在图3中示出IPC头部300。全部IPC分组运载该头部。该会话管理器填充源和目的IPC地址。该源组件识别号(CID)是在数据请求过程中被发送的一个,并且目的CID是可选的。如果没有目标CID感兴趣,则目的节点将传送IPC消息至全部预定组件。在通过源组件插入目的CID的情况中,仅路由IPC消息至该组件。通过会话层插入最终的数据校验和,并且可以可选地开启和关闭。如果路由器插入它的控制字至IPC头部,校验和需要被更新。校验和计算包括IPC头部和消息的数据部分。当通过装置层在接受器侧交付分组至会话层时,前者确保在向上传送任何数据之前检验校验和。数据校验和可被可选地省略,但IPC头部校验和必须总是被包括。校验和的最重要的比特表示属于该IPC分组的数据是ON或OFF。“1”状态表示ON,并且“0”状态表示OFF。在IPC头部中存在总共7个字节。IPC数据字段仅为了描述用途示出,并且它的尺寸取决于IPC分组中的数据结构。
通过首先向它的IPC会话管理器(例如会话管理器204)请求IPC识别号(ID),任何想要参与IPC通信的任何新的组件必须这样做。本地会话管理器(例如位于组件耦合至的客户机中的会话管理器)然后将警告新IPC组件的IPC服务器的会话管理器,并将提供CID指派。依据本发明的实施例,该CID是动态的,并且可以被会话管理器(例如服务器的会话管理器)重新指派。该IPC服务器将最可能在主AP上。每一IPC节点将优选具有唯一的IPC节点ID,并且会话管理器在它的数据库中保存每一参与IPC节点的下列信息-IPC节点类型例如特定的BP或AP,无线局域网(WLAN)AP等。
-IPC地址IPC节点的IPC地址。
-数据类型IPC节点的数据类型。
-操作码列表这是组件已经预定的全部IPC消息操作码的列表。
-组件ID全部CID的列表。
现在参照图4,示出IPC栈连同全部主IPC表。动态路由表(DRT)402包括节点类型(处理器类型),IPC地址信息,数据类型和预约列表。预约列表包括特定节点上全部IPC支持的消息操作码。组件路由表404包括链接操作码信息和预约每一特定操作码的全部组件的信息。最后,信道源表406包括具有物理信道ID列表的每一信道ID链接。
会话层(会话管理器)提供IPC栈中的几个关键功能和服务。用于客户机的该IPC会话层是服务器的IPC会话层的子集。IPC节点完全支持IPC协议。一旦登记和验证IPC服务器,它们被允许通过IPC网络进行通信。在节点的会话层中然后产生DRT,并被发送至服务器。该服务器然后传送DRT的拷贝至网络上的IPC节点。这将对每一激活节点提供关于其余参与节点的充分信息。
每一制造商能够为IPC节点类型和IPC操作码自由选择和指派它自己的值。DRT 402中的第一条目标识IPC节点的类型。例如,iDEN基带(BP)可被假定具有十六进制值的0x01。该IPC地址对该节点是唯一的,只要将该节点插进特定硬件端口上的IPC网络。通过如在此文件的路由器部分中讨论的它的对等节点(在较高层处耦合的节点)指派该地址。数据类型描述了芯的类型和数据对准规则。该IPC操作码列表组合已经在该节点处登记和设置的全部组件预约操作码列表。通过IPC服务器传送该DRT的拷贝至全部激活IPC节点。如果在特定节点上的IPC操作码列表发生改变,则新的拷贝被发送至服务器。该服务器然后传送新的信息至全部激活IPC节点。
用于出站数据的IPC节点地址发现每一IPC节点保持IPC网络上全部激活DRT的最新拷贝。会话层负责警告IPC服务器,如果在它的DRT中已经出现改变。当组件传送它的分组数据至会话层以供传输时,关于目标节点的物理IPC地址它一无所知。相反,通过它的IPC节点类型,组件指定目标IPC节点。由会话层发现对应于目标IPC节点类型的目标IPC地址。如果在IPC网络上目标节点是可利用的,则从它的对应DRT提取IPC地址。否则,错误返回至组件。该组件然后可以利用合适的API功能,以学习关于网络上当前IPC节点的信息。
用于入站数据的IPC组件发现当在节点处接收到IPC分组时,通过路由器检查它的目标地址。如果该IPC地址是该节点的IPC地址,则传送分组至会话层,以用于进一步的处理。基于登记的组件的操作码预约列表,该会话负责分配信息至登记的组件。基于预约列表和过滤表,通过多于一个的组件可以消耗IPC分组。如先前所述,在它们的配置步骤过程中,组件预约它们自身到IPC操作码或服务。接着,该会话层建立操作码预约列表(预约列表),以帮助用于入站数据的IPC组件路由。
IPC组件路由层IPC组件路由层居于会话管理器中,并且负责向预约的组件广播和分配数据分组并在完全消耗数据时进行缓冲区的存储器释放。需要通过任何组件不警告或修改接收数据。希望重写缓冲器数据的组件必须首先产生本地拷贝,并向IPC组件路由层发送初始缓冲器的释放指示。流控制是IPC组件路由层的一部分。水印可以是每一组件编程的。当数据分组累积,并且没有释放时,会话管理器进行决定,以在IPC网络上广播流控制指示。当IPC节点消耗充分的分组,并降到水印之下时,发送另一流控指示,以恢复数据分组的接收。通过显示是什么组件服务或通过简单地阻塞与被讨论的IPC节点的任何通信,流控制可以用于警告IPC节点,以抑制发送信息至特定的组件。
在图5中,示出了依据本发明的实施例的IPC栈怎样为诸如软件线程(例如,音频等)的组件提供信道的框图。在步骤504中组件502首先请求IPC信道。在图5中示出的会话管理器利用定义的API,在步骤506中与装置层协商组件的请求。该装置层(装置接口)然后请求硬件源,比如数据信道508。在步骤510中,在图5中示出的会话管理器响应请求,向请求者批准IPC信道。组件502然后在被指派的信道508上发送它的数据。该装置层然后传送数据至IPC网络。逻辑至物理信道ID的映射是IPC装置接口的功能。
现在参照图6,IPC客户机初始化的第一步骤是通过本地节点路由器发送IPC地址指派请求。全部客户机现在将等待,直至它们从它们的对等节点接收回应答。当接收到地址指派时,它们将在IPC客户机602和IPC服务器604之间继续发送登记请求(步骤606)。在步骤608中,该IPC服务器604利用IPC客户机602验证请求。在步骤610中,这完成登记。在步骤612中,IPC客户机的会话管理器发送它的动态路由表的拷贝至IPC服务器。
在图7中示出在IPC客户机初始化步骤过程中进行的更详细的步骤。在步骤702中,客户机会话管理器(在表中示出为会话(客户机))发送配置请求至IPC服务器的会话管理器(在表中示出为会话(服务器))。在步骤704中,通过IPC服务器的会话管理器请求验证。然后在步骤706中实现IPC客户机和IPC服务器之间的验证。
配置请求中的参数包括节点类型,数据类型和节点的动态路由表。步骤702中会话服务器响应配置请求,赋予请求者IPC地址。如果动态路由表不存在,它还建立用于请求者的动态路由表。它然后如步骤708向请求者发送配置指示。
响应接收到配置指示,连接至会话客户机的组件可以向客户机的会话管理器请求控制/数据。在步骤710中,会话客户机然后发送配置指示确认消息至会话服务器。该“配置指示确认”消息不具有参数,当接收到步骤710中的配置指示确认消息,会话服务器可以初始化IPC流至新近设置的会话客户机。在步骤712和714中,该会话服务器然后发送配置更新消息至会话客户机。这引起在图7中示出的两个会话客户机更新它们各自的动态路由表(未示出),并在步骤716和718中发送配置更新确认消息至会话服务器。当接收到配置更新确认消息时,会话服务器确保已经更新全部IPC参与者。
当通过IPC会话管理器从另一节点接收到分组时,它以包括源组件ID、目的ID和BP或AP的类型的数据的形式出现。在目的ID不是感兴趣的情况下,该IPC会话管理器将添加目的组件ID。基于接收的消息操作码,IPC会话管理器发现目的ID。目的ID基于查询表。每次组件预约新的IPC消息操作码时(例如音频组件通过发送请求至IPC会话管理器预约音频消息),动态更新该查询表。
当IPC节点发送它们的配置请求至IPC服务器时,验证这些IPC节点。这可以在加电时进行,也可以在IPC节点“热插入”至网络时进行。该IPC节点通过它的节点类型自身。在网络上不应有相同的IPC节点类型。如果另一个IPC节点利用已经存在于网络上的类型加入网络,则服务器必须发送拒绝指示至该节点。
在图8中示出依据本发明的组件和它的IPC会话管理器之间通常目的ID发现次序过程中事件的次序。在步骤802中,组件发送它的源ID(但没有目的ID),目的BP或AP的类型以及包括头部和数据的IPC数据。在步骤804中,IPC会话管理器察看IPC数据头部操作码和目的BP或AP的类型,从而查询对应的动态路由表,并发现正确的目的地址。在步骤806中,IPC会话管理器插入组件的IPC地址,并向下发送它至装置层。如果需要消息广播,则将IPC地址目的字段设置为0xFF。
在图9中,示出了在IPC组件初始化过程中进行的步骤。一旦已经通过在图9中示出的IPC服务器设置BP,它允许比如组件902的组件预约不同的服务。在步骤904中,组件将自身预约至比如音频、视频等的功能。然后发送组件预约信息至IPC会话管理器,以用于组件ID生成(如果还没有指派ID)和用于特定IPC地址的动态路由表的生成或更新(步骤906)。在步骤908中,会话管理器利用来自步骤906的信息更新IPC服务器。在步骤912中通过IPC服务器发送动态路由表的确认至IPC客户机。一旦警告服务器,在步骤910中,广播新的动态路由表更新至全部参与处理器。
在图10中,在组件(客户机)1002、也称为客户机会话管理器1004的会话(客户机)以及也称为服务器会话管理器1006的会话(服务器)之间示出相同组件初始化步骤。在步骤1008中通过组件(客户机)1002发送组件配置请求。客户机会话管理器1004也指派组件ID,并添加新的操作码列表至它的动态路由表(未示出)。在步骤1010中,客户机会话管理器1004发送包括组件ID的配置答复。响应于该配置答复,组件(客户机)1002从客户机的会话管理器1004接收它的ID。
一旦客户机会话管理器1004在步骤1010中回答步骤1008中的配置请求,客户机会话管理器1004在步骤1012中发送配置更新请求至会话服务器1006。用于配置更新请求的参数是在动态路由表中已经进行的任何新的变化。会话管理器更新用于该IPC地址的动态路由表。服务器会话管理器1006在步骤1016中向全部IPC客户机发送配置更新,同时在步骤1014中它向该IPC客户机发送配置更新指示。服务器的会话管理器1006确保IPC服务器已经利用被发送的变化更新它的路由表。
在包括作为参数(多个)的动态路由表的步骤1016的配置更新消息中,会话服务器1006更新动态路由表,并在步骤1018中发送配置更新确认消息。会话服务器1006然后确保已经更新全部IPC参与者。
IPC会话管理器确定入向和出向IPC分组的路由路径。通过组件的IPC地址确定出向分组的路由。如果发现目的地址是本地处理器的地址,则在会话管理器中实施IPC至操作系统(OS)的映射。如果发现目的地址用于本地IPC客户机,则发送分组至IPC栈,以用于进一步的处理(例如封装)。注意,如果目的组件与发送IPC分组的组件位于同样的处理器上,则不需要封装,通过正常OS消息调用(例如微软消息队列等),分组获得通过。以这种方式,组件不必须担心修改它们的消息输入方案。它们仅需要将它们的消息发布方法从OS专用设计改变至在该实施例中指定的OS层中抽象出的IPC调用。
对于入向的分组,如果消息的目的地址不等于IPC服务器的地址,则通过路由器将入向的分组路由至合适的IPC客户机。通过IPC节点的路由器管理器处理入向分组的路由。否则,基于组件目的ID是否被设置为有效组件ID或0XFF,传送消息至正确的组件或多个组件。
IPC路由器块传输IPC数据至目的组件。其中,入向的IPC消息运载始发者组件ID和IPC消息操作码,比如用于音频、调制解调器等的那些操作码。IPC会话管理器依靠它的组件路由表发送IPC数据至正确的组件(多个)。通过IPC服务器/客户机更新动态路由表和组件路由表。
在加电过程中,每一组件必须向它的会话管理器登记自身,以获得IPC组件ID。此外,它必须也预约入向的IPC消息,比如音频、调制解调器等。该信息存储于组件路由表和动态路由表中,以供IPC会话管理器使用。
如图11中所示,在步骤1104中,组件1102发送它的数据请求至IPC会话管理器,在目的IPC节点(例如BP)上进行检查。如果IPC节点不支持IPC消息操作码,则错误答复返回至组件1102。除了错误答复之外,IPC会话管理器返回能够接收该特定操作码的全部IPC节点的更新。组件决定它将重定向消息至哪个(些)IPC节点。如果会话管理器确定目的组件位于IPC网络中,但不是在本地处理器中,则在IPC网络上发送数据之前,IPC会话管理器1106将继续封装数据和IPC头部信息。
IPC组件是利用IPC协议栈在一起通信的线程或任务。尽管居于相同芯上的组件具有为了与其它本地组件通信而忽略IPC API的选项,但并不希望这样。目的是保持组件的软件与组件的物理位置和底层OS无关。在与IPC栈交互的服务器和客户机的组件之间没有区别。
通过IPC栈的组件通信组件利用标准API调用用于相互/内部通信消息收发。这些调用从一个OS平台至下一个并不改变。这允许处理数据消息的传输的组件软件保持相同,而不管组件正在何处运行。此外,组件通过对于IPC会话管理器的服务调用可以发现它们请求的一些服务是否本地存在或需要IPC链路。在目的组件本地驻留的情况中,IPC会话管理器传送消息至正确的组件,而不为了发送而传送数据至装置层。
IPC组件ID指派通过首先利用IPC栈设置它们自身,想要参与任何IPC通信的任何组件必须这样做。节点的会话管理器验证组件,并赋予它们CID。组件不能具有多于一个的CID。在从IPC节点卸载组件的情况下,必须删除它们的CID,并且必须警告IPC网络。发送合适的删除命令至IPC会话管理器是卸载器或等效软件的责任。在通常应用情况中,组件不需要知道它们的目标组件CID,以向它发送IPC消息。管理来自组件的路由抽象是IPC软件的责任。在一些情况中,比如答复接收的IPC消息,组件通过目标化源地址,可以重定向响应。在这种情况中,目标节点将传送消息至该特定组件,而不是全部预约的组件。组件CID在节点中是唯一的,而不在节点之间不唯一。
逻辑IPC信道分配组件利用逻辑信道在IPC网络上通信。基于通过每一个组件请求的QoS,通过装置层指派逻辑信道。组件可以具有被指派的多个逻辑信道。依据本发明的实施例,存在专用和非专用的两种类型的信道。组件选择信道的类型。专用信道保证每次组件利用信道时组件的QoS是可利用。由于存在被给予组件的具有不同QoS的多于一个的信道,可以耗尽IPC带宽。
为了允许组件连续共享通信资源,该装置层提供非专用信道作为选项。如果带宽是可利用的,则确保非专用信道的QoS,否则QoS降低,这取决于总的负载。对于专用或非专用信道,可批准横越多个节点的QoS。
专用或非专用信道专用信道确保组件请求的QoS。只要不释放信道,将保证它上面的QoS。非专用信道不能确保QoS,但当额外带宽变得可利用时,可以连续尝试发送数据。非专用信道不具有可预测的实时性能,但可以用于异步、低带宽数据。组件可以通过请求多于一个的信道来同时保留不同的QoS。组件保持它们的信道,直至它们决定释放它们。然而,通过具有较高优先权的其它组件,规定栈在专用信道上删除组件的特权。在这种情况中,保持信道的组件将被警告,并且将被要求释放信道或使它们的信道转移至非专用模式。
QoS指派和组件优先权组件基于QoS请求逻辑信道。QoS的定义是数据速率。通过组件指定QoS,并与装置层协商。此外,在登记和验证过程中,组件被赋予优先权。通过IPC会话管理器使用该优先权,以在从较少特权的组件撤销和请求信道与服务时检验组件特权。
IPC组件预约列表组件向IPC栈登记的一部分是配置请求。当验证组件时,它接收来自会话管理器的CID。此时,通过预约不同的IPC操作码,组件可以利用IPC栈设置自身。组件选择它对哪些操作码感兴趣,并且向会话层登记那些操作码。通过发送另一配置请求至会话管理器,组件可以决定取消预约或改变它们的操作码列表。
在图12中,示出了与IPC栈的典型组件通信。示出的是组件和IPC栈之间典型的登记请求、配置请求和逻辑信道请求。
在图13中示出依据本发明的实施例的典型IPC数据请求,在步骤1302中,组件发送更新请求。该组件更新参数优选包括节点类型和操作码。该组件搜索支持它的目的操作码的节点类型。如果节点类型等于0xFF,则该会话管理器继续发送组件信息至全部IPC参与者的全部节点表。如果操作码字段等于0xFF,则会话管理器继续向组件发送属于特定节点类型的操作码列表。另一方面,如果操作码具有特定值,则会话管理器继续向组件发送对应于节点类型是否支持或不支持特定操作码的真或假值。
在步骤1304中,发送组件更新指示至该组件。如果节点类型等于0xFF,则节点表返回至组件。如果操作码字段等于0xFF,则操作码的列表返回至组件。然而,如果操作码是特定值,则返回真或假消息。在步骤1306中,进行组件数据请求。组件数据请求的参数包括节点类型、IPC消息操作码、IPC消息数据、信道ID和组件ID。在组件数据请求中,会话管理器检查节点类型,以确定是否支持操作码。如果节点类型不支持操作码,则在步骤1308中发送组件更新指示。然而如果节点类型支持操作码,则在步骤1310中发送数据请求至装置层。数据请求参数包括IPC消息、信道ID和IPC头部。
装置层基于信道ID计划发送数据请求信息。该装置层基于端口#头部信息选择IPC硬件。一旦提交数据,在步骤1312中发送数据确认消息至会话管理器。在步骤1314中,会话管理器继续发送组件数据确认消息至组件。在发送更多的IPC消息之前该组件可以等待确认。一旦接收到数据确认。组件可以继续发送下一个IPC消息。
在步骤1316中,装置层发送包括IPC消息和IPC头部的数据指示消息。路由器管理器检查消息的目的IPC头部,并且如果不同于本地IPC地址,则管理器发送(路由)消息至正确的IPC节点。在步骤1310中,会话管理器发送数据请求至具有保留的信道ID的路由器层。会话管理器检查目的组件ID,并且它等于0xFF,则路由消息至预约该操作码的全部组件。在步骤1318中,会话管理器发送组件数据指示消息,并且组件接收IPC数据。
IPC栈利用保留的控制信道,以用于在全部参与IPC节点之间的通信用途。当加电时,IPC服务器的会话管理器利用该链路广播消息至IPC客户机,并且反之亦然。在正常操作过程中,该控制信道用于在全部AP和BP之间运载控制信息。
在图14中,示出了IPC栈和IPC硬件之间的控制信道1402-1406。当在不同的IPC硬件之间发送数据时,与数据分组1410一起也传送控制信道信息1408。IPC客户机初始在IPC控制信道上广播它的配置请求。IPC服务器接收广播,并利用该客户机的IPC地址进行响应。该IPC地址变成与用于该特定处理器(AP或BP)的动态路由表相关联。
IPC应用程序接口(API)下面列出用于本发明的IPC协议的一些高层API。每一个将具有限定的API调用组。
1)、组件/会话高层API组件登记和验证这是组件和它们的本地会话管理器之间的登记和验证过程。
组件设置和管理这是利用它们的本地会话管理器的组件设置的过程。
组件信道管理这是获取用于发送数据至其它IPC节点的逻辑信道的过程。
组件数据管理在这里处理入站和出站IPC数据以及流控制组件路由服务在这里处理IPC分组的组件路由的复杂性。
2)、装置/路由器接口高层APIIPC分组路由在这里处理IPC分组的路由。
信道带宽管理在这里处理逻辑/物理信道管理。
硬件端口的硬件发现在这里处理IPC链路的硬件发现。
IPC物理信道管理在这里处理地址指派。
在图15中,示出了电子装置的方块图,比如无线通信装置(例如蜂窝电话等)1500,具有利用IPC网络彼此通信的基带处理器(BP)1502和应用处理器(AP)1504。本发明的IPC协议提供比如通信装置的系统中多个处理器之间的通信。该IPC允许移动应用(MA)客户机(例如iDENTmWLAN)向例如个人通信系统(PCS)应用的MA服务器登记,并将提供用于两个MA自由通信的方式,而对于取决于它自身的MA的内部的软件结构、操作系统、硬件等是什么没有任何限制。
该IPC协议允许将遵从MA的任何IPC动态添加至用于通信的IPC链路。因此,没有任何编译时相关性地或没有任何其它软件假定地形成IPC网络。本发明的IPC提出标准方式,用于软件组件与IPC栈通信,并也抽象栈之下的硬件,以使组件可以选择不同的通信链路。
现在参照图16,示出三个组件,比如软件线程1602、1604和1606,以及它们如何建立出站流。软件线程1602例如对预定QoS 1608发送请求1612,并递交它的操作码预约列表1610。作为回报,软件线程1602在响应消息1618中被指派信道ID 1614和组件ID 1616。基于它们的需要,比如依据本发明的软件线程1602、1604和1606的组件被指派IPC硬件资源。基于系统需要,组件1602、1604和1606可被动态安装或卸载。
在图17中,组件1602、1604和1606在它们指派的信道上发送IPC数据,比如用于软件线程1602的信道1702。组件1602、1604和1606与目标IPC节点一起提交它们的数据,但是当没有指定节点时组件也可以广播它们的消息至全部IPC节点。组件1602、1604和1606不需要知道目的组件ID,也不需要知道它们的关联信道或它们的IPC地址。关于入站流,信息操作码标识组件。例如在图18中,通过信息操作码标识组件1602、1604和1606。通过先前讨论的组件路由表发现组件ID。IPC会话管理器路由入向数据至已经预约消息中的IPC操作码的全部组件。
IPC端口的动态专用为了提供改进的开销效率并且减小系统延迟,依据本发明的IPC协议/网络提供IPC网络中端口的动态专用。例如,当客户机处理器需要发送比如声音采样或其它实时数据的大量的数据时,依据本发明,客户机和服务器可以协商服务器的/客户机的一个或多个端口的专用。
在图19中,示出了IPC网络,包括服务器1902和耦合至服务器1902的第一(客户机2)1904、第二(客户机3)1906和第三(客户机4)1908客户机。第一客户机1904具有两个子客户机,客户机(2.1)1910和客户机(2.2)1912与它耦合,而第二客户机1906具有一个子客户机,客户机(3.1)1914与它耦合。第三客户机(客户机4)1908具有耦合至它的照相机1916。当讨论在图19中示出的网络时,直接彼此耦合的节点被称作对等IPC节点,例如客户机2-4(1904-1908)是对于服务器1902的对等节点,而客户机2.1和2.2(1910-1912)是对于客户机2(1904)的对等IPC节点。IPC对等节点可以比某一节点在较高层处或在较低层处,例如服务器1902是对于客户机2(1904)的对等IPC节点,而较低层子客户机2.1和2.2(1910-1912)也是对于客户机2(1904)的对等IPC节点。
客户机1904-1914的每一个被指派地址范围,并且每一个客户机获得范围上限作为其IPC地址,如在流程图中所示。服务器1902将基于它具有的硬件端口的总量划分全部可利用的IPC地址,但它为自己保留地址“254”,并保留地址“0XFF”以在IPC网络上广播消息。
在该描述性的例子中,假定服务器具有8个端口,因此256(在该例子中地址的总量)除以8获得每个端口32个地址。因此地址0-31被指派给第一客户机1904,地址32-64被指派给第二客户机1906等。具有子客户机1910-1914的每一个客户机1904和1906进一步细分它们的指派IPC地址给它们的各个子客户机,如在图21中示出的连续端口列举流程图中进一步示出。
每一个客户机1904-1914填充它自身的网络路由表,所述网络路由表包括IPC地址至硬件端口映射信息。在图19中示出的照相机1916通过硬件API层(HAL)交互,从而使照相机不被指派IPC端口。它与组件直接交互。该组件将传送或接收涉及照相机接口的操作码。
在图22中,示出了服务器1902的网络路由表。在该具体描述性的例子中,服务器的端口1与地址0-31链接,所述服务器的端口1耦合至第一客户机1904(其具有地址31),链接至第二客户机1906(地址64)的它的第二端口与地址32-64链接。每一个客户机和子客户机1904-1914将也具有链接它的端口至IPC地址的类似的网络路由表。
依据本发明,如果子客户机(2.1)1910需要专用路径以发送比如声音采样的信息至可解码声音采样的第二客户机(客户机3),则它将向上发送消息通过IPC网络至第一客户机(客户机2)1904。该消息将包括节点类型和需要的QoS。如果客户机1904可以支持QoS,则它将专用耦合至子客户机1910的端口。利用相同的节点类型和QoS需要,客户机1904将传送消息至服务器1902。如果服务器1902确定它可以支持请求,则它将专用它的端口1和2。服务器1902然后将发送包括节点类型和QoS信息的消息至客户机1906。再一次地,如果客户机1906可以支持请求,则它为该请求专用它的端口。此时,子客户机1910具有至客户机1906的完全专用路径。基于对于链路中的下一个节点的所需QoS,其中必须建立链路的每一个IPC节点中的路由器层处理信道的保留。它们必须通过向装置层请求信道来请求和保留合适的信道。
现在参照图23,示出了用于服务器1902的端口专用表2300。端口专用表2300将被存储于IPC栈路由器层中,并将链接服务器的每一个端口至专用或非专用状态。如果专用特定端口(多个),则服务器1902将不向这些端口指派其它任务,除非它想要重载专用(例如,较高的优先权请求已经进入,该请求需要一个或多个专用端口)。每一个客户机1904-1908和子客户机1910-1914将具有端口专用表,所述端口专用表针对其每一端口链接它的端口和当前专用状态。
利用每一期望操作模式的不同选项可以实施保留过程。为了描述起见,如果可以利用需要的QoS专用从节点客户机2.1至2的路径,则路由器专用表中的端口。下一跳请求转向链路中的下一个IPC节点。在这种情况中,节点2.1试图专用朝向客户机3的路径中的下一个链路。在客户机2和1此时不能专用链路的情况中,可以起动计时器,以等待当前时间量。在计时器的期满时,发送消息至初始请求者,并且可以可选地拆除已经建立的链路,或者将客户机2和客户机3之间的计时器延长另一时间。如果成功建立链路,则发送回ok状态消息,并且警告初始请求组件(多个)。
由于专用子客户机1910、客户机1904、服务器1902和客户机1906的每一个路由层,子客户机(客户机2.1)1910具有至客户机(客户机3)1906的专用路径。这允许数据传送变得容易并且降低开销,因为一旦专用路径,则当转移分组时,就不需要包括头部信息。
在图24中示出了组件信道请求次序,其包括组件信道请求,以及会话层至路由器层信道请求,装置至会话层信道答复和组件信道答复。示出了全部发送的变量(例如nodeID,QoS等)。在图25中,示出了路由器层信道请求,包括信道答复以及对等请求,该对等请求包括与需要被专用的端到端路径中下一个路由器层的通信。也示出了对等超时请求,如果沿着路径的装置层的一个不能在预定时间周期中分配信道,则其可以终止包括全部先前保留的信道的链路。对被专用的通信路径中的每一链路(路径中的每一IPC客户机/服务器)重复路由器层信道请求。
尽管已经描述和说明了本发明的优选实施例,但显而易见本发明不局限于此。本领域的熟练技术人员可进行大量的修改、改变、变形、替换和等效,而不脱离如通过附加权利要求限定的本发明。
权利要求
1.一种处理器间通信(IPC)网络,包括IPC服务器;耦合至IPC服务器的一个或多个IPC客户机;以及IPC服务器包括端口专用表。
2.如权利要求1的所述IPC网络,其中IPC服务器包括一个或多个端口,并且端口专用表记录一个或多个端口中的哪些被专用。
3.如权利要求2的所述IPC网络,其中一个或多个IPC客户机每一个也包括网络路由表,所述网络路由表示出什么地址已被指派给IPC服务器端口中的每一个端口。
4.如权利要求3的所述IPC网络,其中IPC服务器或一个或多个IPC客户机中的一个在从是对等IPC节点的一个或多个IPC客户机中的一个接收到端口专用消息时,如果它具有可用于专用的端口,通知IPC客户机发送端口专用消息。
5.如权利要求4的所述IPC网络,其中IPC服务器或是对等IPC节点的一个或多个IPC客户机中的一个还通知IPC客户机发送关于它具有的可用端口(多个)的端口专用消息信息。
6.如权利要求2的所述IPC网络,其中所述一个或多个IPC客户机中的每一个具有端口专用表。
7.如权利要求6的所述IPC网络,其中在所述一个或多个IPC客户机中的每一个中发现的每一个端口专用表包括关于IPC客户机的自身端口(多个)的信息。
8.一种用于专用在具有IPC服务器和IPC客户机的IPC网络中的端口的方法,每一个IPC服务器和IPC客户机具有端口专用表,该方法包括以下步骤(a)从IPC客户机发送端口专用消息至IPC服务器;(b)将信息消息从IPC服务器发送回IPC客户机,向IPC客户机通知IPC服务器具有哪些可用端口;(c)从IPC客户机发送消息至IPC服务器,选择它想要专用的端口;以及(d)从IPC服务器发送消息至IPC客户机,通知客户机已经将请求的端口供其专用。
9.如权利要求8的所述方法,其中响应步骤(d),IPC客户机更新它的端口专用表。
10.如权利要求8的所述方法,包括进一步的步骤(e)从IPC服务器发送消息,终止专用端口。
11.如权利要求8的所述方法,包括进一步的步骤(e)从IPC客户机发送消息,请求释放专用端口。
12.如权利要求9的所述方法,其中在步骤(d)之后IPC服务器也更新它的端口专用表。
13.如权利要求8的所述方法,其中一旦在步骤(d)中专用端口,那么不管沿着期望数据路径的每一个链路上其它信道的总数据负载,可为在专用端口上发送的数据确保预定的服务质量(QoS)。
全文摘要
为了减小系统延迟和功率消耗的允许端口的动态专用的IPC协议/网络。该IPC系统允许IPC服务器或任何IPC客户机请求端口(多个)被专用以用于数据的传送,比如实时数据。例如通过客户机发送控制信息至服务器/另一个客户机可以进行对端口的请求,请求为了它的使用专用特定的端口。服务器和客户机(多个)协商端口专用,并且一旦专用,客户机可以使用专用端口传送它的数据至服务器或者至另一客户机。在一个实施例中,服务器可以撤销专用端口,如果它确定它需要用于另一数据传送的端口,所述数据传送可以更关键或具有更高的优先权。
文档编号G06F9/45GK101076791SQ200480038615
公开日2007年11月21日 申请日期2004年12月16日 优先权日2003年12月22日
发明者沙尔贝勒·哈万德 申请人:摩托罗拉公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1