总线系统的分隔事务协议的制作方法

文档序号:6531673阅读:199来源:国知局
专利名称:总线系统的分隔事务协议的制作方法
技术领域
本发明涉及在数字系统中进行数据通信的领域。特别是,本发明涉及用于在总线上传输信息的方法和协议。
背景技术
通常情况下,计算机或者类似的设备都会拥有一个连接设备与计算机系统的总线。由于计算机系统和设备中的性能(比如计算能力)更新换代程度不同,计算系统与其相连设备之间交换的数据量不断增加,这就需要增加总线的带宽。增加带宽的要求有一部分是来自于多媒体应用程序,它要求数据以固定的时间间隔(同步)通过总线从设备传输到计算系统(向内)或者反方向传输(向外)。对于有效带宽有特殊要求的设备实例包括数码相机,CD播放器,扬声器,麦克风,视频播放设备,扫描仪,操纵杆和鼠标,以及其他一些设备。
从某种意义上讲,在总线结构上能够获得的带宽取决于三个因素传导媒介,拓扑结构,以及用来控制对媒介访问的协议。其中,协议和拓扑结构在一定程度上决定了设备与计算系统之间关系的特性。一种可能的关系就是主从关系。在主从关系里,通常由计算系统在启动计算系统和设备之间的所有数据处理;也就是说,设备只能对来自于计算系统的请求做出响应,而绝对不能启动一个事务。采用主从关系的一个好处就是总线结构有相对比较低的开销,并且结构相对简单。1998年9月23日的通用串行总线架构(USB)规格的修正版1.1就是在由总线连接的元素之间采用主从结构的实例。遗憾的是,现有的主从总线标准,例如USB标准,并不能支持当今的许多具有带宽要求(或者数据传输率)的设备和计算系统。
尽管USB并不支持较高的数据传输率,但是它拥有较大范围的用户基础,并支持两个数据传输率12MB/s(“全速”)和1.5MB/s(“低速”)。由于一些设备并不需要较高的数据传输率,USB允许总线上的多种数据传输率。它可以通过采用相对价廉、低数据传输率的驱动器和数据线来节省大量的开销。
然而,USB协议允许计算系统分别采用低速和全速与低数据传输率的设备和高数据传输率的设备进行通信,这造成了在总线上实际传输的数据量比通过限定总线采用全速处理而获得的数据量要小。换句话说,速度切换导致了对于较高传输速度(也就是全速)的低带宽,特别说明了在有大量低速设备连接到计算系统上的情况下。这种速度切换对于吞吐量的影响在高速传输率与低速传输率差别较大的时候会更大。
另一个可能的总线协议需要主控制器(1)以高速传输率把一个数据包传送到集线器上,(2)等待集线器以较低的传输率把数据包传送给代理,(3)等待代理以较低传输率对集线器做出响应,以及(4)以较高的数据传输率接收代理对数据包的响应。当高速传输率与低速传输率比值较大的时候,这个总线协议可能也会造成低效的吞吐率或带宽。这是因为需要等待集线器以低速传送数据包以及等待代理以低速做出响应。
另一种流行的总线技术被“报警器”和1995年电器和电子工程师协会(IEEE)对于高性能串行总线的标准1394所定义。IEEE1394支持多种数据传输率,上限达到400Mb/s。由于它的总带宽比USB高,IEEE1394采用的是不经济的速度切换并且是一种开销较大的技术。
速度切换、等待集线器以比主控制器数据传输率低的传输率进行数据处理以及主机与代理的数据传输率的比值,都会对总线的性能造成显著影响。这样,就需要有一台主控制器和/或集线器,允许以现今带宽增强系统所要求的较高的数据传输率进行通信,并与先前的解决方案保持很好的向后兼容性,比如USB等等,而无需为速度切换以及先前技术的缺陷而支付额外的费用。
上面描述了高数据传输率系统与低数据传输率设备之间的通信所面临的一个问题。计算系统要面对的另一个问题就是目前可用的总线协议(或者标准)的多样性。通常情况下,依照某种总线协议而生产的设备不能依照另外一种不同的协议运行。仅由于协议之间的差异而要求用户拥有大量的重复设备是浪费的。在大量正在使用的设备还具有很长的使用寿命的情况下,希望这些设备能与一个计算系统同时使用,该计算系统具有一个主控制器和/或一个关联的集线器,用来提供与过去的设备之间的向后兼容性。
发明概述根据本发明的一个实施方案,描述了一个用来在主控制器和代理之间进行通信的方法。该方法包括在主控制器与集线器之间进行一个第一事务的步骤。集线器能够利用一个基于第一事务的代理执行该第一事务。该方法还包括在主控制器与集线器之间进行一个第二事务的步骤。第二事务是基于单一事务的。


通过附图,但不局限于这些附图,用例子对本发明进行说明,其中,相同的索引表示相似的元素,附图中图1a说明了一个依照本发明的采用一个协议的数字系统的模块图;图1b,1c和1d分别阐明了根据本发明在主控制器和集线器之间进行通信的方法流程;图1e,阐明了根据本发明的一个集线器;图2a和2b分别阐述了根据本发明执行某种传输过程的主控制器和集线器的状态机构流程图;图3a和3b分别阐述了根据本发明执行另一种传输过程的主控制器和集线器的状态机构流程图;图4a和4b分别阐述了根据本发明执行另一种传输过程的主控制器和集线器的状态机构流程图;图5a和5b分别阐述了根据本发明执行另一种传输过程的主控制器和集线器的状态机构流程图;图6a和6b分别阐述了根据本发明执行另一种传输过程的主控制器和集线器的状态机构流程图;图7a和7b分别阐述了根据本发明执行另一种传输过程的主控制器和集线器的状态机构流程图;图8a和8b阐述了根据本发明的数据传输的最佳情况和最差情况;以及图9阐述了主控制器-集线器事务和集线器-代理事务的定时图表。
发明详述这里描述的是用来在主控制器和外围设备(代理),在这里,代理的通信速度和/或者协议是与主控制器的通信不尽相同的。在下面的描述中,本着解释详尽为目的,阐述了大量具体的细节以便让读者对本发明有透彻的理解。然而对于那些熟悉相关技术的人员来说,他们可以无需阅读这些细节而将本发明熟练应用于不同的总线系统,特别说明了串行总线中。这里为了避免混淆本发明,没有显示那些众所周知的操作。
部分的描述将采用术语来表示,通常该技术领域的熟练人员可采用这些术语将其工作内容传送给本领域的其他熟练人员,例如这些术语有设备或者控制器驱动器,总线或者主控制器,集线器,总线代理或者代理,等等。而且,部分描述还将通过执行编程指令或者启动一些电子部件或电路的功能实现的运行来表示,使用的术语包括执行,发送,处理,封装,调度,传输,配置,等等。如那些本领域的熟练人员所熟悉的那样,这些操作表现为能够存储,传输,合并,换句话说,是通过电子部件操纵的电、磁或光信号的形式。
下面将不同的操作描述为多个分立的运行步骤,这样有利于最大程度地理解本发明。但是,不应该将所描述的顺序理解为这些运行必须按其描述顺序来执行。最后,短语“在一个实施方案中,”“在某个实施方案中,”“在其中一个实施方案中,”“在另外一个实施方案中”不一定表示的是相同的实施方案,尽管可能确是同一实施方案。
图1a说明了一个依照本发明的采用一个协议的总线的模块图。总线100包括一个系统102,该系统102包括一个与集线器120相连的主控制器110,集线器120又与代理130相连。主控制器110具有一个在系统102上运行的设备驱动器105。代理的实例包括照相机,CD播放器,扬声器,麦克风,视频播放设备,扫描仪,操纵杆和鼠标,及其他一些设备。系统102可以包括任何能够进行数字通信的数字系统,特别是膝上型电脑,桌上型电脑,服务器,机顶盒,娱乐系统,以及游戏机。因此,本发明可以利用多种使用数字通信的数字设备来实现。
在图1a中画出的两个箭头记号101a和101b给出了关于主控制器、集线器和代理通信的方向的参考结构。从代理到集线器的方向被认为上游方向或者上游(向内)。从主控制器到集线器再到代理的方向被设为下游方向或者下游(向外)。
通过处理送往代理130的信息数据包,并通过110来调度数据包的传输,主控制器105便于总线100间的通讯或处理(如,一个在系统102上运行的应用程序)。主控制器110通过集线器120向代理130发送数据并从中接收数据。代理130按照与主控制器110的数据传输率(代理数据传输率)不同或者更低的速率(主数据传输率)进行通信。这里仅显示了一个与集线器120相连接的代理,显然,另外的代理(没有显示出来)也可以连接到集线器120或者其他集线器上(没有显示出来)。这些另外的代理可以按照主机数据传输率或者代理数据传输率进行通信。而且,当显示代理130连接到集线器120的时候,它可以通过至少一个按代理数据传输率操作的常规转发器型集线器连接到集线器120上。常规的转发器型集线器可以在其下游端口复制在上游侧接收的信号,发之亦然。反过来,常规转发器型集线器可以具有一个或多个连接其上的代理130。
主控制器110和代理130有主从关系,这意味着主控制器通常能够启动介于主控制器和代理之间的所有数据处理;也就是说,代理只能对来自于主控制器的请求做出响应,但是却不能启动一个事务。集线器120上有存储和转送缓冲器(没有显示出来),它允许集线器120临时存储从主控制器110接收的下游信息并指定代理130,以及临时存储从代理130接收的上游信息并指定主控制器110。
由于代理130和主控制器110在不同的数据传输率下进行通信,希望通过提供一个协议来提高总线上的有效的吞吐量,该协议允许主控制器110(1)既能以其较高的数据传输率来通信,(2)又不必在进行另一个事务之前等待代理130的响应。本发明的协议允许主控制器110利用集线器120的存储和传送的特征优势,从而允许主控制器110按其较高的传输率进行通信,同时在需要响应的情况下不需等待来自代理130的响应而处理其他的事务。本发明的协议还提供了控制器110和集线器120之间所执行的事务的稳定性和可靠性。另外,本发明的主控制器和/或集线器允许提高总线上的吞吐量,并为以主数据传输率进行通信的连接到集线器120或者其他集线器上的代理提供了较好的响应能力(没有显示出来)。
图1b说明了一个过程150,显示一个依照本发明的与一个具有比主控制器低(或不同)的数据传输率的代理进行通讯的方法。代理还可以有与主控制器不同的协议。过程150可以用来实现多种主控制器110和代理130间的信息传输。为了便于理解,在这里只描述了过程150的向外块传输。然而过程150还可以用这里和后面所描述的其他信息传输。在向外块传输中,数据由主控制器110经过集线器120向代理130传输。这个向外块传输是根据本发明的一个实施方案定义为异步传输类型。然而,但是不要根据其定义就得出任何块和/或向外传输都应该是异步的结论。
在过程150的步骤152,执行了一个初始分隔事务。这个初始分隔事务将来自主控制器110的下游信息传递给集线器120。传递给集线器120的一些下游信息被暂时缓存在集线器120内。集线器120的缓冲区大都是采用先进先出(FIFO)的方式工作,在下面将对其进行更为详尽的描述。在下游信息被放入缓冲区后的一段时问内,集线器120通过代理130根据一些缓冲的下游信息执行一个集线器-代理的事务(没有显示出来)。这里不必描述集线器-代理事务的时间调配,因为本技术领域的一般熟练人员都清楚,这是一个具有许多可能性的应用或实施的细节问题。集线器-代理事务可能会造成上游信息被缓冲于集线器120。在该下游信息被缓冲之后不久,在步骤156中执行了一个完整的分隔事务。这个完整分隔事务将集线器120上缓存的上游信息传送给主控制器110。完全分隔事务的相关时间调配不需在这里加以说明,因为本技术领域的一般熟练人员都清楚,这是一个具有许多可能性的应用或实施的细节问题。
分隔事务协议的一个好处就在于它允许控制器110在步骤154启动与代理130的通信(初始分隔事务),执行其他的功能,或者执行与其他代理(低数据传输率或者高数据传输率代理)的其他通信,然后再返回完成前面启动的以低数据传输率与代理之间的通信。通过使用分隔事务进行通信,控制器110以高数据传输率进行通信而无需速度切换,也不会在等待集线器120与代理130通信的时候处于空闲状态。空闲状态所消耗的时间可以用于与其他的代理的通信。在依照本发明的另一个实施方案中,控制器可以与某些代理一起进行速度切换,同时进行与其他的代理的分隔事务通信。
上面所描述的起始分隔和完全分隔事务(分隔事务)可以用来实现控制器110和代理130之间各种类型的数据通信传输(举例来说,读出和写入)。在本发明的具体实施方案中定义了的四个传输类型(或者传输请求)向外/向内块,向外/向内控制,中断,同步。很显然,对于本领域的普通技术人员来说,本发明的主旨和范围还包括其他具有或多或少或不同的传输类型的实施方案。每个传输类型能够提供不同水平的稳定性,可靠性,同步性,异步性操作,错误检测和通信流的修正,以及一些本领域的普通技术人员都很清楚的特征。举例来说,向内/向外块提供从控制器110到代理130或者相反方向的大规模同步数据传输。向外/向内控制提供了从控制器110到代理130或者相反方向的同步数据传输,而数据通常是用来控制代理130或者系统100中元件(例如磁带驱动器)运转的控制信息。中断提供了从控制器110到代理130或者相反方向的周期性数据传输。如果传输不成功的话,控制器110可以在一个根据本发明的实施方案中再重来一次。同步传输提供了每经过一个预定时间就进行一次数据传输。根据本发明的一个实施方案,数据传输可以在一个时间间隔内的任何时间进行。如果传输不成功的话,控制器110将不会重复传输。在根据本发明的其中一个实施方案中,同步传输可以进行重复传输。
分隔事务可以根据实现的传输类型,包括多个阶段。每个分隔事务最多可以有三个阶段标记,数据,和握手。然而,根据执行的传输,某些事务可能会有较少的阶段。在本发明的一个实施方案中,块和控制可以在它们各自的分隔事务中使用相同的阶段。下面的表1中显示了上面描述的每个传输类型的各个阶段。表单元中的X表示传输类型的分隔事务具有在该单元所处的列顶表示的阶段。在该实施方案中标记和数据阶段是对于每个传输类型而言都是独立的,而在另一个实施方案中,标记和数据阶段可能是组合在一起的。应该清楚,在另外的实施方案中,在不背离本发明的宗旨和范围的前提下,与表1相比,传输类型可以具有较少、较多、甚至不同的阶段。
表1初始分隔事务完全分隔事务传 标 数握 标数 握输类型 记 据手 记据手

向外块-控制

向内块-控制向外中断向内中断向外同步向内同步图1c更加详尽地阐述了过程160,它显示了一个根据本发明具体实施方案的对于向外块传送的初始分隔事务。在步骤162,一个包含集线器识别信息,代理和终点识别信息,传输类型,识别传输方向(向内还是向外)的标识符,以及数据传输率识别的令牌包被从主控制器110传递给集线器120。集线器识别信息,代理与终点的识别信息,以及方向识别信息在这里通常被归类于事务寻址信息。代理识别信息可以确定主控制器试图与之进行通信的特定代理终点识别信息可以确定主控制器试图与之进行通信的代理的特定部分。终点的实例包括扬声器集线器上的左扬声器和右扬声器,或者手提电话机的麦克风和扬声器。事务寻址信息中的传输类型并不限于这里所提到的类型(例如向外块,中断,同步,控制),它还包括与本发明主旨和范围密不可分的相关技术中已知的其它类型。数据传输率标识符可以确定与前面执行的过程150相关的集线器-代理事务的数据传输率。对于集线器~代理事务是根据USB标准的具体实施方案来说,数据传输率标识符将指定12MB/s(全速)和1.5MB/s(低速)。在步骤164处,一个数据包被从主控制器110发送给集线器120。在步骤166,如果数据包能够被集线器120正确解码的话,主控制器110接收到来自集线器120的第一个识别信息。第一个识别信息表示数据是否被集线器120正确解码,或者集线器是否希望稍后在试(例如,集线器120的缓冲区已经满了而不能接收数据)。
图1d更为详尽地说明了过程170,它显示了一个根据本发明实施方案的向外块传输的完全分隔事务。在步骤172处,将包括事务寻址信息的第二个标记包从主控制器发送给集线器。在步骤174处,主控制器110接收到来自于集线器120的第二个确认,其中第二个确认可以(1)包括在与图1b相关的集线器-代理事务过程中集线器120从代理130接收到的握手信息,或者(2)表示集线器120还没有获得基于集线器-代理事务的信息来发送给主控制器110(例如,还没有完成集线器-代理事务)。握手信息表示(1)代理130是否在集线器-代理事务(ACK)期间正确接收到信息,(2)代理130是否表示它不能正确运行(STALL),或者(3)代理130是否表示它希望稍后再试(NAK)。第一和第二个确认以及握手信息已经被描述为某些特定的指示符,但显然对于本领域的普通技术人员来讲,这些确认和握手信息以及这里描述的其他信息可以采用其它的表示。另外,在另外的实施方案中,在不背离本发明的主旨和范围的情况下,可以增加与这里所描述的信息所不同或者作为附加的确认和握手信息。
上面已经概括描述了代理130与集线器120之间以低于集线器120和主控制器110间通信数据传输率的数据传输率进行通信的情况,而那些本领域的熟练人员会意识到本发明在实际应用中可以在低数据传输率和高数据传输率之间,或者甚至是在协议不同的相同数据传输率之间起到桥梁的作用。
图1中在代理和主控制器之间只显示了一个集线器,而实际上在任何特殊的代理和主控制器之间可以有多个集线器。这里仅描述了六种传输类型,而那些本领域的熟练人员会意识到,不背离本发明的主旨和范围的情况下,也可以使用其它的类型。
图2a,2b,3a,3b,4a,4b,5a,5b,6a,6b,7a和7b说明了依照本发明使用主控制器和集线器进行一个传输的状态机构图。以“a”为下标的图显示了一个主控制器的状态机构图;该状态机构可以在前面描述的与图1a相关的主控制器110上运行。以“b”为下标的图显示了一个集线器的状态机构图;该状态机构可以在前面描述的与图1a相关集线器120上运行。在这些图中说明的状态机构显示了拥有多个步骤的过程。显然,在不违背本发明的主旨和范围的情况下,其中一些步骤可以被划分为更细的步骤或者结合成少量的几个步骤。由于状态机构的运转对于该技术领域的普通技术人员来说是显而易见的,所以这里没有对其进行更细致的说明。为了便于理解,没有对由状态机构执行的过程进行单独说明。由于由状态机构执行的过程是串行的(也就是说,每个过程中步骤的执行都依赖于其他过程的步骤或事件的出现),所以为了便于理解,对过程的描述都是交错进行的。
图2a和2b分别说明了根据本发明主控制器和集线器执行一个传输的状态机构示意图,特别是一个分隔的向外块/控制的传输。过程200和过程260分别显示了主控制器和集线器的状态机构。过程200包括启动分隔事务,它拥有一个标记阶段(XOUT)和一个数据阶段(DATAx),在试图在主控制器和集线器之间处理这些阶段的期间,一旦出现暂停,可以由主控制器对这两个阶段重复3次。作为启动分隔事务的响应,过程260将自始至终传播将接收数据(ACK)的状态,在集线器与主控制器间的握手(ACK,不接收数据)失败后响应主控制器的重试,由于缺少空间来容纳启动事务信息(NAK)或者出现3次暂停,而请求主控制器重试。过程200显示了在集线器和代理之间成功处理了一个完全分隔事务(XIN)(Advance),产生了一个来自于代理的NAK(NAK),接收到一个代理无法正常运行的指示符(STALL),还没有通过集线器或者代理完成(NYET),XIN或其响应出现一些通信失败并造成主控制器和集线器之间的3次暂停时,主控制器对该事务的响应。作为对完全分隔事务的响应,过程260将表示集线器和代理之间的事务过程还没有完成(NYET),或者将提供一个指示符(ACK,NAK,STAL1),表明在集线器和代理之间发生了什么。
图3a和3b分别说明了根据本发明执行另一种传输的主控制器和集线器的状态机构示意图,特别是分隔向外中断传输。过程300和过程360分别显示了主控制器和集线器的状态机构。过程300包括一个启动分隔事务,它有一个标记阶段(XOUT)和一个数据阶段(DATAx),它将不会被主控制器重复,因为根据一个实施方案,中断向外传输是时间敏感的,如果第一次未能成功的话它不需重复进行。作为对启动分隔事务的响应,过程360将接收数据(ACK),或者不做任何事情。过程300显示了当集线器和代理之间成功进行了处理(Advanced),接收到一个表示代理无法正常运行(STALL)的指示符,还没有通过集线器或代理完成(NYET),或者该完全分隔事务或其响应出现一些通信失败并造成主控制器和集线器之间的3次暂停时,主控制器对完全分隔事务(XIN)的响应。作为对完全分隔事务的响应,过程360将表示集线器和代理之间的事务过程还没有完成(NYET),或者将提供一个指示符(ACK,NAK,STAL1),表明在集线器和代理之间发生了什么。
图4a和图4b分别说明了根据本发明执行另一个传输的主控制器和集线器的状态机构示意图,特别是一个分隔向外同步传输。过程400和过程460分别显示了一个主控制器和集线器的状态机构。过程400包括一个启动分隔事务,它含有一个标记阶段(XOUT)和一个数据阶段(DATAx),并且它们都是不能重复的。依照一个实施方案,过程400不包括一个完全分隔事务。过程460允许将从集线器到代理的事务数据细分为多个部分,从而最小化集线器的缓冲要求;主控制器可以在集线器需要把下一个数据段发送到代理之前将其发送。在这种情况下,每个分隔启动事务都被标以ALL,BEGIN,MEDDLE,或者END,以便集线器能够检测到什么时候一个通信失败导致集线器没有按照正常序列接受数据段。作为对初始分隔事务的响应,过程460将会累加具有一个数据段(ALL),两个数据段(BEGIN,END),或者3个乃至更多数据段(BEGIN,MIDDLE...MIDDLE,END)的数据的有效载荷。
图5a和5b分别说明了依照本发明执行另一个传输的主控制器和集线器的状态机构示意图,特别是一个分隔向内块/控制传输。过程500和过程560分别显示了一个主控制器和集线器的状态机构。过程500包括具有一个标记阶段(XOUT)的初始分隔事务,当在主控制器和集线器之间的事务出现暂停时,主控制器会重复这个事务3次。作为对启动分隔事务的响应,过程560将会确认并接受事务(ACK,接受xact),在从集线器到主控制器的握手发生通信失败之后对主控制器的重试做出响应(ACK,忽略xact),或者由于能够容纳初始事务信息的空间不足,请求主控制器请求重试。过程500显示了当集线器和代理之间的事务成功完成(Advance),接收到一个表示终点不能正常工作的指示(STALL),还没有通过集线器或者代理完成(NYET),由于从集线器接收的数据被破坏而将其忽略,或者完全分隔事务或其响应出现某种通信失败并导致主控制器和集线器之间出现3次暂停时,主控制器对完全分隔事务(XIN)的响应。作为对完全分隔事务的响应,过程560将指示集线器和代理之间的事务没有完成(NYET),或者将提供一个指示符(NAK,STAL1),表明在集线器和代理之间发生的情况,或者将集线器从代理中接收到的数据发送给主控制器。
图6a和6b分别说明了依照本发明一个主控制器和一个集线器执行另一个传输的状态机构示意图,特别是一个分隔中断传输。过程600和过程660分别显示了主控制器和集线器的状态机构。过程600包括一个带有标记阶段(XOUT)的初始分隔事务。作为对启动分隔事务的响应,过程660将接受事务(接受xact)。过程600显示了当集线器和代理之间的事务成功完成(Advance),接收到一个表示终点不能正常工作的指示(STALL),还没有通过集线器或者代理完成(NYET),从代理接收到一个NAK(NAK),如果接收到的数据是一个先前事务请求的代理的重试而重试标记部分(ignore data),或者完全分隔事务或其响应出现某种通信失败并导致主控制器和集线器之间出现3次暂停时,主控制器对完全分隔事务(XIN)的响应。作为对初始分隔事务的响应,过程660将在集线器与代理通信时指示出现一个暂停(NYET),或者集线器没有接收到这个请求启动事务并且没有任何相应的响应信息(STALL),或者将提供一个指示符(NAK,STAL1),表明在集线器和代理之间发生的情况,或者将数据发送给主控制器。
图7a和7b分别说明了根据本发明执行另一个传输的一个主控制器和集线器的状态机构示意图,特别是一个同步传输的分隔。过程700和过程760分别显示了一个主控制器和一个集线器的状态机构。过程700包括一个带有标记阶段(XOUT)的初始分隔事务。作为对启动分隔事务的响应,过程760将接受事务(接受xact)。过程700显示了当集线器和代理之间的事务被成功完成并且所有的数据都已经返回(TAdvance),或者不再有数据返回(DAdvance),或者由于主控制器与集线器之间(暂停或者循环冗余码校验出错)、或与代理之间(NAK)或与代理有问题的集线器之间(NYET)的通信故障而发生错误(recorderror)时,主控制器对完全分隔事务(XIN)的响应。作为对完全分隔事务(XIN)的响应,过程660将表明从代理处接收的数据具有一个错误的循环冗余码校验(NAK),或者代理没有响应(NYET),或者集线器没有关于这个完全分隔的信息,或者向主控制器发送数据以指示所有的数据已经返回(DATAO)或还有一些数据等待返回(MDATA)。
在描述本发明其余的装置和方法之前,有必要对前面描述的协议进行一下总结。前面说明的协议允许主控制器通过集线器从代理处接收数据或者向代理发送数据。该协议允许主控制器进行第一事务(初始分隔事务),其中传输请求被传送给集线器。在主控制器执行了第一事务之后,它可以用同一集线器或者其他集线器进行中间事务而无需等待集线器和代理执行传输请求(也就是说,向代理或者从代理进行数据传输)。中间事务可能包括针对代理、与该代理相同的另一代理、或者位于另一集线器上的其他代理的传输请求。在集线器向代理或者从代理完成数据传输之后,主控制器执行一个完全分隔事务(或者第二事务),得到集线器和代理之间执行的传输结果(如,从代理向集线器发送的数据或者握手)。通过允许主控制器拥有进行中间事务的能力,而不是等待集线器通过代理执行传输请求(或者第三事务),采用根据本发明的协议的总线的有效吞吐量能够比涉及速度切换或者要求主控制器在开始其他传输之前等待集线器利用代理执行传输的总线大的多。
上述协议规定了涉及通过总线进行数据通信的事务的顺序,但是它并没有明确说明将导致数据被发送到代理或者从代理接收数据的事务或者传输的时间安排。然而,代理传输的时间安排是非常重要的,这是因为在通常情况下代理要求定期(举例来说,同步或者中断)或者在异步(举例来说,块或者控制)基础上向主控制器发送数据或者从中接收数据。此外,上述协议允许主控制器在初始分隔和完全分隔事务之间执行中间事务(甚至是多个中间事务),但是这个协议并没有明确说明传输请求是如何存储于集线器之中,以及集线器和代理是如何在进行中间事务之前没有请求主控制器等待传输请求的情况下执行传输请求。前面关于协议的描述并没有解决这个问题,也就是说,由集线器发出的传输请求的时间安排和传送请求处理(例如,缓冲和性能)是由下面关于根据本发明的方法与装置的说明来解决的。本发明包括一个用来对进出代理的传输数据进行调度的方法和装置,和在一个集线器上处理传输请求的方法和装置。这里首先说明了调度数据传输的方法和装置,然后说明了缓冲以及执行传输请求的方法和装置。
再次参照图1,在系统102对连接到系统总线的代理进行配置的时候,首次启动调度数据传输的过程。这个配置过程一般会出现在系统初始化或者开机或者在初始化之后某个代理连接到总线上的时候。传输数据的调度取决于与代理(或者一个代理的终点)相关的传输类型和传输数据的总量。下面首先说明代理处理的定期传输所采取的方式,例如同步和中断,接着描述代理处理的异步传输所采取的方式,例如块和控制。
在配置过程中,每个代理的每一个终点都会把与终点相关的最大数据有效载荷规模和传输类型(例如,向内/向外同步,中断,块,控制)通知给系统。那些本领域的一般技术人员都非常了解每个代理通知系统的方式和采用的装置是很容易理解的,所以这里就不再加以赘述。最大数据有效载荷规模就是一个代理所能承受的出入数据的最大数量。系统将数据的有效载荷大小和传输类型传送给主控制器。那些本领域的一般技术人员都非常了解系统将数据载荷大小以及传输类型传送给主控制器所采取的方式,这里就不再加以赘述。主控制器利用前面所说的与每个终点相关的两条信息产生一个终点周期性传输的预算列表。在另一个具体实施方案中,诸如主控制器驱动器的软件驱动器,甚至是硬件驱动器都可以产生预算列表并执行下面所描述的调度操作。预算列表给出了进行传输(发送或者接收数据包)的最早时间,同时给出了获取与传输相关的结果的最晚时间。假定先前的传输是在最佳时机下(下面定义)进行的,那么进行传输的最早时间取决于先前传输所需要的时间总量。获取与传输相关的结果的最晚时间取决于假定先前的传输是在最差时机下(下面定义)进行时所需要的时间总量,以及在最差条件下进行该传输所需要的时间。由于主控制器在进行传输之前需要将传输请求在集线器中进行缓冲,以便使得在集线器完成在缓冲请求之前的传输请求之后马上就可以转向缓冲的传输请求,因此可以开始传输的最早时间是非常重要的。可获得传输的相关结果的昨晚时间也是很重要的,因为在这个最晚时间之后主控制器肯定能够获得结果。如果主控制器在最晚时间之前试图从集线器获取结果的话,这意味着还不能获取结果,这就需要一个采用多重检索的低效协议。
当每个传输都包括最大数据有效载荷并且完全没有位填充的时候,传输就是在最佳时机下发生的。当每个传输都包括最大数据有效载荷并且有最大位填充的时候,传输就是在最差时机下发生的。根据本发明的一个实施方案,位填充是由于在总线上的信号服从非归零制(NRZ)发送信号而产生的。根据本发明的一个实施方案,位填充可以把最大数据有效载荷增加16%。在一个具体实施方案中,最佳时机和最差时机都已经根据位填充而定义,但应当清楚在另外的实施方案中,时机可以根据能够增大或者减少传输量(或者时间)大小,或者产生延迟的其他事情的形式来规定。
现在将说明根据本发明的预算列表的产生。这里说明的是产生预算列表的一种途径,而很显然本发明的实质和范围还包括其他潜在的方法。预算列表就是能够在一个特定的帧模板中产生的容许的周期事务的列表。帧是作为总线规格一部分定义的一个连续发生的足够提供给一个或多个事务时间段。在一个实施方案中,一个帧被定义为1毫秒的时间段。对于那些拥有不同的容许周期事务集的帧来说,预算列表的结构也是不同的。一个帧模板就是对特定周期性重复的帧的描述,这些帧能够提供某个最大的事务量,每个事务都拥有某个最大的数据有效载荷。一个帧包含一些实际数据有效载荷的事务数,而一个帧模板描述了潜在的预算帧。每个预算列表都有一个相关的最佳状态信息和一个相关最差状态信息。最佳状态信息描述了帧模板中的每个事务发生在最佳时机下的情况。在其中一个实施方案中,最佳状态信息和最差状态信息表示的是传输,而不是事务本身。
图8a说明了一个根据本发明的最佳状态帧模板800的示意图。模块805表示关于第一个终点相关的传输,其中该传输是在最佳状态下发生的。模块810表示关于第二个终点的传输,其中传输是在最佳状态下发生的。其余的模块815~835表示的是由系统配置的其他终点的类似的最佳状态传输。最差状态信息描述了在最差时机下发生在帧模板中的每个传输的情况。图8b说明了一个根据本发明的最差状态帧模板850的示意图。模块855表示关于第一个终点的传输,其中该传输是在最差状态下发生的。模块860表示关于第二个终点的传输,其中该传输是在最差状态下发生的。其余的模块865~885表示由系统配置的其他终点的类似的最差状态传输。应当清楚,模块的相对大小仅仅是出于说明的考虑。
现在将通过检验模块805,810,855和860,解释最佳状态帧模板800和最差状态帧模板850。模块805和855分别表示对于第一个终点的最佳状态和最差状态传输。第一个终点的传输能够完成的最早时间是Ta。第一个终点的传输能够最晚完成时间是Tb。前面提出了关于第二个终点的传输最早可以在时间Ta开始,或者最晚可以在时间Tb开始。模块810和860分别表示对于第二个终点的最佳状态和最差状态的传输时间。第二个终点的传输最早能够完成时间是Tc。第二个终点的传输最晚能够完成时间是Td。前面提出了集线器在Ta之前必须获取第二个事务的必要信息,并且在Tb之后肯定能够获取第一个传输的结果。更进一步来讲,很显然传输的调度取决于执行先前每个传输所需要的时间。另外,很显然完全分隔事务的调度将取决于本次传输所需要的时间,如果有一个初始分隔事务,在该时间与初始分隔事务有关。
帧模板800和850是代表集线器和代理(集线器-代理或者标准帧)之间的一个帧的帧模板。根据本发明的一个实施方案,主控制器和集线器的帧是标准帧的一小部分(微帧)。更明确地说,在这个具体实施方案中,八个微帧等于一个标准帧。既然主控制器和集线器使用微帧进行通信并且在到达集线器之前传输请求以初始分隔事务的形式开始,那么根据微帧描述执行初始分隔事务的时间是非常有必要的。同样,采用微帧描述执行完全分隔事务的时间也是很有必要的。根据一个实施方案,对于初始分隔事务的开始时间来说,在一个微帧中依照最佳状态帧在集线器和代理之间产生传输,在这个微帧出现之前,初始分隔事务应该出现一个微帧。根据一个实施方案,对于完全分隔事务的开始时间来说,在一个微帧中依照最差状态帧完成与初始分隔事务相关的传输,在这个微帧出现之后,完全分隔事务应该出现一个微帧。根据本发明的一个实施方案,主控制器对于每个帧模板使用最佳状态帧和最差状态帧来为每个帧模板中的每个终点产生一个初始分隔向量和一个完全分隔向量。初始分隔向量包含一个指示微帧的值,在该微帧中终点的初始分隔事务会在标准帧期间出现。根据一个实施方案,初始分隔向量值的范围在-1到6之间。完全分隔向量含有一个指示微帧的值,在该微帧中终点的完全分隔事务会在标准帧期间出现。根据一个实施方案,完全分隔向量值的范围是在1到8之间。
当被主控制器驱动器105分派了在特定帧之内对特定终点执行传输的任务时,主控制器110会检测与终点相关的最佳状态向量以及关于特定帧的帧模板。一个给定终点的初始分隔向量值和帧模板可以显示初始分隔事务将要在哪个微帧中执行。类似地,主控制器110会检测完全分隔状态向量来确定完全分隔事务将要在哪个微帧中执行。
图9包括一个集线器-代理帧序列(或者标准帧)900的序列和一个主控制器-集线器帧950。帧900包括帧910-930。帧930有一个传输901,传输901被调度为微帧B在起始并在微帧B中终止。在该说明中,传输901是一个同步向外传输,但是显然其他的传输也可以使用类似的表示法。帧950包括含有子帧961和963的帧960。传输901被安排在微帧B的集线器120上进行并终止于微帧B(也就是说,在由帧900表示的集线器-代理时间帧中),而其相关的初始分隔事务在帧961中进行,相关的完全分隔事务在帧963中进行。在由帧950表示的主控制器-集线器时间帧里,相关的初始分隔事务在时间帧951a或者子帧963中进行。传输951表示主控制器-集线器时间帧中的传输901。其他传输和事务也可以在子帧961和963中进行。从图9中可以看出,子帧962和963也可用于采用其他代理的其他传输和事务。
上述描述通常出现在周期性事务情况中,而本发明并不限于周期性事务,还包括诸如前面所说的块和控制传输的异步传输。根据本发明的一个实施方案,一个标准帧的百分之九十被留给周期性传输。异步传输将在集线器和代理之间的总线上还有其可用空间的最早时间发生。当一个微帧还有空间来容纳初始分隔事务的时候,集线器将该微帧期间接受一个事务,直到这些事务能够被发送到标准总线上(也就是说,在集线器和代理之间)为止。接下来,在一个标准帧不再有其他未解决的周期性事务的时候,集线器将在该标准帧期间发出事务。一旦集线器接收到了一个初始分隔,主控制器将会稍后发出一个完全分隔事务并从集线器上获取该事务在标准集线器上的结果。在微帧中只要没有其他周期性事务需要发送,主控制器驱动器就会向集线器发出一个异步分隔事务。由集线器为块/控制事务提供的缓冲是与由集线器对周期性事务提供的缓冲是截然不同并且是分离的。
这里将描述一种依照本发明的周期性事务请求的缓冲和处理的方法和装置。图1e显示了图1a中的集线器120更为详尽的细节。根据一个实施方案,本发明的集线器120包括一个主控制器-集线器(或高速集线器)的控制器180,一个集线器代理(或低速)集线器的控制器181,一个存储器182,一个控制单元183,一个计时器183a,一个转发器184,一个路由选择逻辑线路185,以及端口185-189。控制器180在集线器120和主控制器110之间执行分隔事务。只要控制器180从主控制器110接收到初始分隔事务,它就会把当前的微帧数作为该事务的时间戳记录在存储器182。另外的实施方案会把这个微帧数作为时间戳记录在状态记录中,从而把在不同微帧中接受到的事务组分开。控制器181在集线器和一个或多个代理之间执行传输。在控制器180和主控制器110之间执行初始分隔事务期间,控制器181执行的传输被接收。存储器182是与高速集线器控制器180和低速集线器控制器181相连接的。存储器包括一条带有多个阶段的流水线。根据一个实施方案,流水线分为5个阶段。每个阶段都与前面所定义的微帧相对应。每个流水线的阶段都含有大量的事务状态(或者事务记录)。根据一个实施方案,流水线的一个阶段含有19或者更少的事务状态或记录。每个阶段存储着代表着将执行的传输的记录。一个记录可以含有几个字段,例如设备和终点地址,传输方向,传输类型,状态,以及数据索引。状态指的是传输是否已经准备好(防止低速集线器控制器执行它),未处理(等待执行)或者已经准备好(已经被低速集线器控制器执行)。数据索引是从代理获得(也就是说向内传输)的数据或者将要发送给代理(例如向外传输)的数据在存储器中初始地址的指针。
集线器120包括控制单元183以及与之相连的时钟183a。根据一个实施方案,时钟183a产生一个微帧信号;即已经过去的标准帧持续时间的八分之一。控制单元183与存储器182相连,它可以监控阶段中的记录,在低速集线器控制器181上开始进行传输的时间超过事先安排的执行时间或者运行完成的时间的情况下,防止由低速集线器控制器181来进行传输。特别是根据一个实施方案,如果一个记录相关的时间标记表示它已经在一个微帧之前由控制器180从主控制器110接收,则该记录被设为未定的状态,以允许低速集线器控制器181在标准总线上发出事务。而另一个记录,与之相对应的时间标记表示它已经在当前微帧读数的多于三个微帧之前被接收但还没有被低速集线器控制器181执行,则它被标为旧的记录,为一个由高速集线器控制器180进行的后续的相应的完全分隔事务作准备。而另一个记录,与之相对应的时间标记表示它已经在当前微帧读数的大于四个微帧之前被接收但还没有被执行或者当前正在被低速集线器控制器181执行,它会被中止并且从流水线中删除。时钟183a还与低速集线器控制器181相连。控制器181是按照周期性事务记录被标为未定状态的顺序来排列的。根据一个实施方案,控制器181通过最早期的微帧中接收的未定记录排在次早期的微帧中接收到记录之前,依此类推的顺序进行排序。根据一个实施方案,在控制单元181接收微帧读数时就继续进行下面接收到的微帧。当控制单元181接收到微帧读数时,它会进入到下一个早期接收的微帧。当控制单元181接收到微帧读数时,它会把下一个早期接收的微帧中的传输的状态从没有准备好更改为未定,并刷新上述旧的传输。为了执行一个传输,控制器181将数据传输给路由选择逻辑线路185,以获得到端口186到189的访问权。路由选择逻辑线路185为转发器184或者控制器181给定一个代理访问权,从而根据代理的配置数据传输率来允许按照高传输率或者低传输率进行传输。转发器184与控制器180和路由选择逻辑线路185相连。转发器184转发从控制器180接收(或向其发送)的信号,和向一个与端口186-189之一相连的高速代理发送(或从中接受)信号。
通过早期微帧中接收的未定的记录进行顺序时,控制器181根据下面的规则进行操作。首先,在控制器181和代理之间执行传输之后,控制器181将会接收下一个事务记录并执行下一个未处理的同步或中断传输。其次,如果不存在未处理的同步或者中断传输,控制器181将执行未处理的块/控制传输。第三,如果块/控制传输也不存在的话,控制器181就会等待高速集线器控制器180指出一个未定的块/控制或者同步以及中断传输。
当低速集线器控制器执行传输的时候,在存储器182中就会存储相应的结果。这个结果可以是握手或者是从代理接收的数据。已经执行过的传输的状态值被低速集线器控制器181更改为准备就绪,并且它们的记录可以为高速集线器控制器180所得到。当高速集线器控制器180接收到完全分隔事务的时候,它会检测最近执行的带有相同地址信息的传输记录,并在最近执行传输的结果基础上向主控制器110发送响应信息。如果该完全分隔事务不查询一个具有相同地址信息的事务,高速集线器控制器180将回应一个NYET信息。
这样,对在主控制器和集线器之间调度传输的方法和装置进行了介绍。此外,上面还介绍了在集线器上缓冲和执行传输的方法和装置。尽管这里参考特定的示例来描述本发明,很显然对于本领域的一般熟练人员而言,不违背本发明的主旨和范围的前提下,如下面的权利要求中提出的那样,可以对这些实施方案进行不同的修正和更改。因此,应将这些规范和附图看作是说明性的,而不应看作是一种限制。
权利要求
1.一种在主机和代理间进行数据通信的方法,该方法包括在集线器和代理之间执行一个第一事务;和在主控制器和集线器之间执行第二事务;其中集线器在第一事务的基础上执行一个单独的事务;和其中的第二事务是基于单独事务的。
2.依照权利要求1的方法,其中第一事务和第二事务是以第一通信速度或者依据第一协议执行的。
3.依照权利要求1的方法,其中独立事务是以第二通信速度或者依据第二协议执行的。
4.依照权利要求1的方法,进一步包括执行独立事务时执行第三事务。
5.依照权利要求1的方法,进一步包括在执行第一事务和独立事务或者在执行第一事务与第二事务之间执行第三事务。
6.依照权利要求1的方法,其中第一事务包括,从主控制器向集线器发送包含进程标识信息的第一数据包,从主控制器向集线器发送一个包括数据的第二数据包,和在主控制器上从集线器接收一个确认。
7.依照权利要求1的方法,其中第一事务包括,从主控制器向集线器发送包括代理标识信息的第一数据包,和从集线器接收一个确认。
8.依照权利要求6的方法,其中第二事务包括,从主控制器向集线器发送第三数据包,在主控制器上从集线器接收一个确认,其中确认表示在第三事务期间由集线器从代理接收的握手信息。
9.依照权利要求7的方法,其中第二事务包括,从主控制器向集线器发送第三数据包,在主控制器上从集线器接收一个数据包,其中数据包包括由代理向集线器发送的信息,和从主控制器向集线器发送确认。
10.依照权利要求1的方法,其中第一事务包括,从主控制器向集线器发送包括代理标识信息的第一数据包,和从主控制器向集线器发送一个数据包。
11.依照权利要求1的方法,其中第一事务包括,从主控制器向集线器发送一个包括代理标识信息的第一数据包。
12.依照权利要求10的方法,其中第二事务包括,从主控制器向集线器发送一个包括代理标识信息的第二数据包,在主控制器从集线器接收一个确认,和其中确认表示由集线器在第三事务期间从代理接收的握手信息。
13.依照权利要求11的方法,其中第二事务包括,从主控制器向集线器发送第二数据包,和从集线器向主控制器发送一个数据包。
14.依照权利要求1的方法,其中第一事务包括,从主控制器向集线器发送一个包括代理标识信息的数据包。
15.依照权利要求14的方法,其中的第二事务包括,从主控制器向集线器发送一个第二数据包,和从集线器向主控制器发送一个数据包。
16.一种数字系统,包括一个主控制器;一个设备驱动器,它可以使主控制器在主控制器和集线器之间执行第一事务和第二事务;其中的第二事务是基于独立事务的;和其中主控制器在独立事务正在被执行的时候执行第三事务。
17.依照权利要求16的方法,其中的第一事务和第二事务是以第一通信速度执行的。
18.依照权利要求16的方法,其中的第三事务是以第二通信速度执行的。
19.依照权利要求16的方法,其中的第一事务和第二事务是依据第一协议执行的。
20.依照权利要求16的方法,其中的第三事务是依据第二协议执行的。
21.依照权利要求16的方法,其中的第一事务包括,从主控制器向集线器发送包括代理确认的第一数据包。
22.依照权利要求16的方法,其中的第二事务包括,从主控制器向集线器发送第二数据包。
23.依照权利要求16的方法,其中的第二事务包括,在主控制器上从集线器接收一个确认。
24.一种输入/输出的外围设备,包括一个集线器控制器;一个与集线器控制器相连的主控制器;和其中集线器控制器可以与主机执行第一事务和第二事务;其中的主控制器可以在第一事务的基础上执行第三事务;和其中的第二事务是基于第三事务的。
25.依照权利要求24的设备,其中第一事务和第二事务是以第一通信速度执行的。
26.依照权利要求24的设备,其中第三事务是以第二通信速度执行的。
27.依照权利要求24的设备,其中第一事务和第二事务是依据第一协议执行的。
28.依照权利要求24的设备,其中第三事务是依据第二协议执行的。
29.依照权利要求24的设备,其中第一事务包括从主控制器向集线器控制器发送的第一数据包,第一数据包包括代理的确认,和第二事务包括从主控制器接收的确认。
30.依照权利要求24的设备,其中第二事务包括从主控制器向集线器控制器发送的第一数据包和从集线器控制器向主控制器发送的第二数据包,第二数据包是基于从主控制器接收的数据的。
全文摘要
一种在主控制器和代理之间进行通信的方法和装置。该方法包括在主控制器和集线器之间执行一个第一事务的步骤。集线器可以在第一事务的基础上利用一个代理执行一个独立事务。该方法还包括在主控制器和集线器之间执行第二事务的步骤。第二事务是基于独立事务的。
文档编号G06F13/40GK1376281SQ00813467
公开日2002年10月23日 申请日期2000年4月25日 优先权日1999年7月27日
发明者J·I·加尼, J·S·霍瓦德 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1