具体实施方式
本发明涉及两个IC之间的数据传输系统,尤其涉及在这样的系统中处理数据交换的可靠终端的方法和电路。尽管本发明更具体地描述了如MIPI LLI的低延迟数据传输接口,然而,应该理解,本发明可以用在其它应用中。
具体而言,本发明提出了一种用于控制系统中的两个IC之间的事务交换的方法。图1是划分成两个单独的IC的这样的系统的示例的框图。系统10包括第一IC12(其是芯片#l)和第二IC14(其是芯片#2)。IC12和IC14中的每一个均包括不同的部件。部件的示例是CPU或者如DMA的任何硬件(“物理实现”或“知识产权”,也使用其缩写词表示为IP)。在图1的示例中,第一IC12包括第一部件16(在图1上的部件#1)、第二部件18(在图1上的部件#2)、在图1上标注为PMU#1的电源管理单元20(也以其缩写词表示为PMU)、互连22、将边带信号转换成服务事务的逻辑块(也以其缩写词表示为SVC)24和监视器26。第二IC14包括第三部件28(在图1上的部件#3)、第四部件30(在图1上的部件#4)、电源管理单元32(在图1上标注为PMU#2)、互连34、SVC36和监视器38。PMU20和PMU32是通常作为它们各自的互连22和互连34的一部分的部件。然而,为了说明的目的,它们在图1中清楚地示出。不同的部件在下文将进一步详细地描述。
各个部件(四个部件16、18、28和30以及PMU20和PMU32)均可以是事务的发起方和/或目标方。为了说明,在图1的情况中,部件16和部件30以及PMU20和PMU32既是事务的发起方又是事务的目标方,而部件18和部件28仅是事务的发起方。
如上文所说明的,例如,事务可包括由发起方向目标部件发起的读取和写入数据请求。目标部件执行该请求并且返回读取响应(读取数据或错误)或者写入响应(成功或者错误)。如上文所述和下文的再次讨论,事务还包括响应。
根据图1的示例,具有标记“REQ”的箭头示出请求路径,以及具有标记“RES”的箭头示出响应路径。根据所考虑的IC12或IC14,由发起方通过“REQ”路径向互连22或互连34发起事务。互连将该事务发送到正确的目标方。该发送是由于“REQ”路径输入和IC12或IC14的每个部件都存储器映射在互连22和互连24中的每一个的使用而进行的。该目标方执行读取或者写入并且在互连上通过“RES”路径发出产生的响应。然后,互连22或者互连34将该响应返回到发起该事务的发起方。作为简单的说明,如果第二部件18向第一部件16发起请求,该请求将通过互连22。此外,当第一部件16将其响应发送到第二部件18时,该响应也将通过互连22。
系统10还包括用于对两个IC12和IC14之间的链路供电的电源,对链路的供电使得能够实现IC12和IC14之间的事务交换。(当然需要该电源或者单独的电源,以便对IC上的部件供电。)更具体地,这意味着,基于对链路供电,第一IC12的一部件和第二IC14的另一部件之间可以进行事务处理。例如,第二部件18可向第四部件30发送请求,该第四部件30应答第二部件18。
根据图1的示例,两个IC12和IC14通过芯片到芯片的串行接口协议(如MIPI LLI)被互连。然而,应该注意,该方法可以应用于任何系统,其中“总线扩展”概念用来使系统的两个部分互连。换言之,该方法可以在具有两个互连的芯片的系统中实施。可以通过任何方法(如MIPI LLI)将芯片互连。由于并行接口至少部分由串行接口组成,因此本发明当然同样也适用于并行接口。
在系统10中,分别在IC12和IC14上的互连22和互连34通过“总线扩展”或者“互连隧道”协议(如,MIPI LLI)分别连接到另一IC14和IC12的互连34和互连22。使用存储器映射的事务而不需要任何软件干预,部件之间的数据交换以它们各自的互连协议,诸如OCP、片上网络(也以缩写词表示为NoC)的协议进行。因此,LLI是双向链路,其中,仅在启动链路、错误处理和断开链路等时需要软件支持,而对于交换事务,这两个部件不需要软件干预。根据图1的示例,对于每个IC12或IC14,互连22和互连34表示片上互连(如OCP、)和互连自适应逻辑,可能需要该互连自适应逻辑以将片上互连协议事务调整为LLI事务,反之亦然。LLI协议提供了低延迟(也以其缩写词表示为LL)和尽力服务(也以其缩写词表示为BE)通信类。互连用于将各事务映射在LL或BE通信类上。应该注意,BE通信类是可选的,但是如果其通过LLI堆栈支持,则LL通信类也必须被支持。LLI还提供了称为“服务事务”的一组特定的事务,这些事务被用于边带信号(如中断)、一个IC到另一个IC的DMA请求。确保从边带信号到服务事务的转换(反之亦然)的逻辑是图1上的元件SVC24和SVC36。服务事务也可以用来写入寄存器的LLI地址空间和/或从寄存器的LLI地址空间读取。
在被划分成两个单独的IC的系统中,以及尤其在独立的封装中,如图1的系统10,一个IC可相当于主IC,而另一个IC作为从属IC。例如,第一IC12可以是主IC以及第二IC14是从属IC。主IC12用于控制从属IC14。主IC12还管理整个系统的存储器映射,使得在从属IC14上的部件被视作它们位于主IC12的互连22上。主IC12的作用也是配置LLI链路。LLI IP与主IC12的互连22交互并且还与从属IC14的互连34交互。这样的交互能够从互连22和互连34中的每一个发送和接收“请求”和“响应”。
系统10还包括控制器40,该控制器40控制IC12、IC14和电源。在图1中没有示出电源。控制器40包括PMU20和PMU32。事实上,PMU20和PMU32通常都在主IC CPU上运行的系统主软件的监管下运行用于LLI链路电源管理的软件。链路电源管理可以以其它的方式实现。
图1中的IC12和IC14的监视器26和监视器38具有跟踪被发送的每个事务以及其响应是否被接收的作用。监视器26(或者IC14的监视器38)因此能够提供表示待定的事务的数量的信号。例如,当待定的事务的数量达到零时,该信号将被发送到控制器40。如上文所述,控制器40然后使供给到相应的PMU20和PMU32的电力减少。应该理解,术语“达到”尤其包括含义“等于”。
监视器26获得表示待定的事务的数量的信号的方式可以是各种各样的。例如,IC12的监视器26将跟踪在互连22上发起的事务和每个事务是否得到从位于IC14上的互连34返回的响应。每个监视器可以被实现为简单的增/减计数器。在该实施方式中,当事务请求被发送时,计数器增加计数;以及当事务响应被接收时,计数器减少计数。
与图1的实现方式不同的其它实施方式是可行的。例如,尽管监视器26被描述成LLI IP的一部分,然而,它们还可以在LLI的外部实现。类似地,控制器40可以在IC12和IC14的外部。
如示出用于控制系统10中的两个IC12和IC14之间的事务交换的方法的流程图的图2所示,该方法包括步骤S50:在控制器40接收命令以降低通过电源供给至链路的电量。
该方法还包括步骤S52:将来自控制器40的指令发送到IC12和IC14以防止IC12和IC14发起新的事务。应该理解,这样的发送可以是间接的。事实上,在两个IC是主IC和从属IC的关系的情况下,控制器40可以将指令直接发送到主IC12并且通过主IC12间接地发送到从属IC14。
该方法还包括降低供给到链路的电力的步骤S54。一旦待定的事务已被执行,则该降低通过控制器40实现。如其它处所描述的,这不是必需的步骤,但是在此作为示例性实施方式示出。因此,该方法对于IC12和IC14的部件更可靠。事实上,该方法能够使链路的用户在数据交换链路被关闭之前处于安全状态或者已知的状态。因此,部件的安全性被改善。换而言之,该方法确保了可靠地闭合链路。
采用这样的方法,甚至在控制器40接收到降低供电的请求之后,数据可以被交换。该方法易于实现,在封装上不需要另外的外部输入和/或输出引脚来执行该方法。这导致节省成本。
此外,该方法适用于大量的系统,例如,IC是对等的(peer to peer)的系统,以及IC是主从关系的系统。
在步骤S50中,当命令是对链路断电的命令时,上述效果甚至更灵敏。事实上,在这样的情况下,在步骤S54处,电源通常是关闭的。
如果在该IC上的部件没有任何要交换的数据,则该方法还可以用来使局部IC互连断电。在该情况下,局部互连仅用于在两个集成电路之间的事务交换中。这样的局部IC互连通过互连电源被供电。该互连电源与用于对链路供电的电源分离。因此,在步骤S54处,还可以降低通过互连电源提供到互连的电力。该互连电源甚至可以被停止。
该方法能够减少在系统10中供给的耗电量。
现将结合图3和图4的具体情况来描述在前文所述的用于控制系统10中的两个IC12和IC14之间的事务交换的方法,其中,一个IC是主IC12,而另一个IC是从属IC14。图3和图4是用来确切地了解不存在由一个IC或另一个IC发起的待定事务的方法的示例的示意性流程图。从上文可以看出,关于待定事务的存在的信息可以用来使链路断电或者使LLI链路处于低功率状态,或者该关于存在待定事务的信息可以被用于需要知道链路是闲置的任一其它的功能。
更具体地,图3是涉及主IC12的方法的相关步骤的说明,而图4示出用于从属IC14的方法的相关步骤。为了清楚的目的,没有示出先前的步骤和后续步骤。这些步骤对应于机器状态。可以认为,这样的步骤在软件中实现,且该软件运行在IC12和IC14的控制器上。具体而言,它们可以在控制器的电源管理单元(也以缩写词表示为PMU)中实现。然而,应该理解,可以使用其它实施方式。例如,这些步骤可以运行在任何其它部件或者甚至在硬件中实现。
在图3中,该方法从标记为事务交换的步骤S100开始。事实上,该事务状态的步骤S100包括通过主IC12执行的多个步骤,这些步骤没有详述以便保持图易读。在该事务交换的步骤S100中,LLI链路被安装(或启动),系统存储器映射被设置,以及在主IC12和从属IC14上的部件正在进行交换事务。该事务被映射在LLI的LL通信类或BE通信类或者两者的通信类上。此外,边带信号可以被转换成服务事务并且被发送到从属IC14,对于主IC反之亦然,即,将主IC边带信号转换成SVC事务并且将其发送到另一IC(此处是从属IC)。
只要条件C102满足,则该方法保持在事务交换的步骤S100。条件C102对应于以下事实:请求关闭所有事务(Req_Close_All_Transactions)的信号等于“0”。如果主IC12写入PMU上的寄存器,则请求关闭所有事务的信号可以是硬件信号或中断。该方法工作而不管触发信号如何实现,而此后仅强调触发条件(而非它们精确的实现)以从一个状态转变到另一个状态。
当条件C102不满足时,这意味着满足条件C104。事实上,条件C104对应于:请求关闭所有事务(Req_Close_All_Transactions)的信号等于“1”。控制器40确保从所满足的条件C102到所满足的条件C104的通行权,且该控制器40确认请求关闭所有事务的信号是“1”。在说明书的其它部分中,动词“确认”应该理解成将信号值变成1。当条件C104被满足时,根据图3的流程图的方法,主IC12执行禁止所有边带信号从主IC12到从属IC14的步骤S102。
该方法还包括步骤S106,其中,主IC12写入从属IC的PMU地址空间以确认从属IC14上的请求关闭所有事务的信号。由于从属IC的PMU是存储器映射的且因此主IC的PMU可以使用LL或BE事务直接写入从属IC的地址空间,故这是可行的。服务事务(其可以被看做属于LLI的第三通信类)可以用来写入从属IC LLI IP的信令地址空间。该空间事实上可以将中断(请求关闭所有事务的信号)下发到从属PMU。对服务事务的响应通过LLI IP下发,由于LLI流量控制和重新传输机制,这是可靠的。
该方法还包括步骤S112,其中,主IC12等待从属IC的指示“没有事务交换(No_Transaction_exchange)”,并且只要没收到该指示,则保持在步骤S112。这通过条件C118来确保,条件C118对应于:“没有事务交换”信号等于“0”。
在图4中,对于从属IC14,该方法开始于与如前文所描述的用于主IC12的步骤S100和S106类似的步骤S132和S140。唯一的不同是步骤S140关联于禁止边带信号从从属IC14到主IC12。此外,条件C134和C138也相应地类似于条件C102和C104。当主IC12在步骤S108时,从所满足的条件C134到所满足的条件C138的通行权被实现。
图4的流程图的方法还包括写入部件的地址空间的步骤S142,且该部件的地址空间使用从属IC14上的LLI链路以确认每个部件中的请求停止事务(Req_Stop_Transactions)信号。对于不包括软件的部件,该信号可以是硬件信号。在图1的情况中,步骤S142所涉及的部件是第三部件28、第四部件30和PMU32。
然后,从属IC14转换到步骤S144。步骤S144是等待步骤。从属IC14等待在所有从属部件中的事务被停止。每个从属部件基于收到停止所有事务的指示,而采取必要的步骤以检查是否没有新的事务需要被发起以使部件在安全状态,且当这样的情况被确定时,这将通过确认停止的事务(stopped_transaction)信号(通过写入PMU指定的寄存位或者使用硬件信号)来确认。因为可以假设不具有检查是否需要更多的事务的能力的从属部件没有通过关闭LLI链路而被置于不稳定的条件,因此这些部件可以立即确认该信号。
只要满足条件C146,则从属IC14保持在步骤S144。条件C146对应于:停止的事务信号等于“0”。一旦从属IC14接收来自能够发起事务的所有部件的“停止的事务”信号确认,则停止的事务信号变成等于“1”。由于条件C148对应于停止的事务信号变为等于“1”,因此满足条件C148。
从属IC14随后执行等待不再有来自从属IC14上的监视器38的待定事务的步骤S150。只要满足条件C152,则从属IC14保持在步骤S150。根据图3的示例,条件C152对应于:没有待定的事务(No_Pending_Transaction)信号等于“0”。当监视器38在LLI IP内实现时,可以将没有待定的事务(No_pending_Transactions)属性设置在从属LLI属性/寄存空间中的控制和状态属性空间中。当该特定属性通过监视器38被设置时,从属LLI IP可以产生对从属PMU的中断。该中断在从属PMU请求监视器的最新状态之后下发,同时保持在步骤S150。这是获得没有待定的事务信号的一种可能的方式。然而,可以考虑其它实施方式。
一旦条件C152不再满足或者以另一方式示出,则条件C154被满足。事实上,条件C154对应于:没有待定的事务(No_Pending_Transactions)信号等于“1”。从属IC14随后执行根据图3的流程图的方法的步骤S156。该步骤S156包括将从属IC没有待定的事务交换(Slave_No_Transaction_Exchange)寄存位等于“1”写入主PMU地址空间中。
然后,从属IC14转变到被标记为没有事务交换的步骤S158。尽管在步骤S156所执行的事务将接收响应,然而,由于该步骤S158的目的是确保所有的其它部件处于稳定状态,故从属IC14可以立即变换到步骤S158。与步骤S108的情况类似,其中,从属地址空间被写入,从属IC的PMU使用LL或BE事务可以写入主IC的地址空间。因此,可以下发中断(“从属IC没有事务交换(Slave_No_Transaction_Exchange)”信号触发)。
一旦主IC12接收在步骤S156由从属IC14触发的从属IC没有事务交换信号确认,该“从属IC没有事务交换”信号从“0”变至“1”。因此,代替条件C110,条件C114(其对应于“从属IC没有事务交换”信号等于“1”)被满足。
主PMU随后执行步骤S116,该步骤S116将“请求停止事务”信号等于“1”写入在主IC12上的使用LLI链路的所有部件的地址空间。
然后,主IC12变换到步骤S120,该步骤S120等待对于在主IC12上的使用LLI链路的所有部件“停止的事务”等于“1”。这意味着,只要满足条件C118(至少对于一个部件“停止的事务”的值等于“0”),则主IC12保持在步骤S120。表达该构思的另一方式是,只要不满足条件C122(对于所有的部件“停止的事务”的值等于“1”),则主IC12保持在步骤S120。
IC12的每个部件在接收停止所有的事务的指令时,每个部件采取必要的步骤检查是否新的事务需要被发起以使部件在安全状态。当IC12的部件确定是这样的情况,则其通过确认停止的事务信号来确认。在具体情况下,通过写入PMU的指定寄存位或者使用硬件信号可以实现确认。不具有检查是否需要更多事务的能力的IC12的部件可以即时确认“停止的事务”信号等于“1”。事实上,可以认为,这样的部件没有通过关闭LLI链路而被置于不稳定的条件。
一旦满足条件C122,则主IC12变换到步骤S126,该步骤S126等待不再有来自主IC12上的监视器26的待定事务。只要满足条件C124,则主IC12保持在步骤S126。根据图2的示例,条件C124对应于:没有待定的事务信号等于“0”。当监视器26在LLI IP内实施时,其可以设置在主LLI属性/寄存空间中的控制和状态属性空间中的没有待定的事务属性。当该特定属性通过监视器26被设置时,主LLI IP可以产生对主PMU的中断。该中断在主PMU请求监视器26的最新状态之后下发,同时其保持在步骤S126。这是获得没有待定的事务信号的一种可能的方式。然而,可以考虑其它实施方式。
一旦条件C124不再满足或者以另一方式示出,则条件C128被满足。事实上,条件C128对应于:没有待定事务信号等于“1”。主IC12随后执行被标记为没有事务交换的步骤S130。在该步骤,主PMU或者其逻辑等价物确定在主IC12和从属IC14上的所有部件在安全和/或稳定状态。
因此,在该步骤,LLI链路可以被断电或者置于低功率状态而不导致系统10中的任何不稳定。
应该理解,图3和图4的流程图的方法仅仅是说明性方法。尤其是,本领域的技术人员可以调整一些步骤或者对于该方法中的一些步骤重新排序以实现相同的目的。例如,禁止边带信号从主IC12到从属IC14的步骤S106可以在步骤S112之后实现,其中,主IC12获得触发以改变从属IC没有事务交换信号的值。另一个可能是,主IC12可以首先请求其所有部件执行(完成)其事务,这可以是在请求从属IC14在其侧上执行相同的事务之前。此外,知道不具有交换事务的IC的部件可以作为使IC上的互连断电的预报器。
在每个实施方式中,该方法可以在系统10中执行,系统10包括:两个集成电路12和集成电路14;用于在两个集成电路12和集成电路14之间的链路供电,由此能够实现两个集成电路12和集成电路14之间的事务交换的电源;以及用于控制集成电路和电源的控制器40。控制器40适于发送指令到集成电路12和集成电路14以当接收降低由电源向链路供给的电量和降低由电源向链路供给的电力的指令时,一旦已经执行任何待定事务,防止IC12和IC14发起新的事务。如上文所述,控制器40仅可以存在于主IC(其中,该控制器随后可以控制在从属IC中的PMU,有效地作为在从属IC中的虚拟控制器40,见图1)中。
这样的控制器40还可适于将指令发送到集成电路12和集成电路14,以当接收到使链路断电和停用链路电源的指令时,一旦已经执行所有待定事务,则防止IC12和IC14发起新的事务。
此外,在每个实施方式中,方法可以基于计算机程序来执行,该计算机程序包括用于执行该方法的指令。该程序在可编程装置上是可执行的。该应用程序可以根据需要采用高级的面向过程或者面向对象的编程语言或者采用汇编语言或机器语言来执行。在任何情况下,该语言可以是编译语言或者解释语言。该程序可以是完整安装程序或者更新的程序。在后一种情况下,该程序是将先前所编程的执行部分方法的可编程装置更新到该装置适于执行整个方法的状态的更新程序。
程序可以被记录在数据存储介质上。数据存储介质可以是任何适于记录计算机指令的存储器。因此,数据存储介质可以是任何非易失存储器,举例来说,包括半导体存储装置(诸如EPROM、EEPROM和闪存装置);磁盘(例如内部硬盘和可移动盘);磁光盘;和CD-ROM盘。
结合优选的实施方式已经描述了本发明。然而,在本发明的范围内可以有多个变型。
附录I:缩写词的表格