存储和转发交换机设备、系统及方法

文档序号:7848285阅读:263来源:国知局
专利名称:存储和转发交换机设备、系统及方法
技术领域
此处公开的主题涉及数据分组的传输。更具体地,此处公开的主题涉及把数据分组从源设备转发到目的设备。
背景技术
处理平台通常包含主处理系统、外围设备以及使得存在于主处理系统上的处理和外围设备之间能够通信的I/O系统。这样的I/O系统一般是根据一个或多个标准I/O体系结构形成的,标准I/O体系结构例如根据1998年12月18日的PCI局部总线规范修订版2.2的外围部件互连(PCI)体系结构,或根据由PCI特别兴趣组所推动的2002年7月16日的PCI快速基础规范修订版1.0的PCI体系结构。
通信系统可以根据数据链路层协议,在由链路耦合的设备之间传输消息或数据分组。在这样的系统中,设备可以通过交换机把消息或数据分组传输到多个其他设备中的任一个。交换机一般将在入口端口从源设备接收消息或数据分组,并通过出口端口把消息或数据分组转发到目的设备。但是,在转发接收到的消息或数据分组之前,交换机一般将对所接收到的消息或数据的一部分执行校验和的运算,以确保接收到的分组的完整性。这样的校验和的运算一般在把消息或数据分组从源设备转发到目的设备的过程中引入了延迟。


结合下列附图将描述本发明的非限制性和非穷举的实施例,其中,遍及各个附图,除非另外规定,类似的参考标记指示类似的部分。
图1示出了根据本发明的一个实施例的处理平台的示意图;图2示出了根据本发明的另外一个实施例的处理平台的示意图;图3示出了根据图1和图2中所示的本发明的实施例的交换机的一部分的示意图;图4示出了根据图3中所示交换机实施例的数据分组的格式;图5A和图5B示出一个流程图,举例说明了根据图3所示的交换机实施例把数据分组从入口端口转发到出口端口的处理;图6A到图6E示出了在根据图3中所示的交换机的另一实施例的在入口端口接收到的分组头的格式;图7示出一个流程图,举例说明了根据图6A到图6E中所示的数据分组头的实施例把数据分组从入口端口转发到出口端口的处理;图8示出根据图3中所示的交换机的实施例,把多端口交换机映射到PCI总线结构表示法的示意图;图9示出了一个示意图,举例说明了根据图8中所示的多端口交换机的实施例,从用于传输下游消息和用于上游路由的逆向解码的被解码的地址范围的组合而形成路由表的示意图;图10示出一个流程图,举例说明了根据图8中所示的多端口交换机的实施例的一个枚举处理。
具体实施例方式
贯穿本说明书,对“一个实施例”或“实施例”的引用意味着连同该实施例所描述的具体特征、结构或特性被包括在本发明的至少一个实施例中。因此,贯穿本说明书中的各个地方,词组“在一个实施例中”或“实施例”的出现不一定全都指同一实施例。此外,具体特征、结构或特性可以在一个或多个实施例中被组合。
此处所指的“机器可读”指令涉及可被一个或多个机器理解用来执行一个或多个逻辑操作的表达。例如,机器可读指令可以包含可被处理器编译器解释用来对一个或多个数据对象执行一个或多个操作的指令。但是,这仅仅是机器可读指令的例子,并且本发明的实施例不局限于这个方面。
此处所指的“机器可读介质”涉及能够保存可被一个或多个机器理解的表达的介质。例如,机器可读介质可以包含一个或多个用于存储数据或机器可读指令的存储设备。这样的存储设备可以包含光学介质、磁介质或半导体介质。但是,这些仅仅是机器可读介质的例子,并且本发明的实施例不局限于这个方面。
此处所指的“逻辑”涉及用于执行一个或多个逻辑操作的结构。例如,逻辑可以包含根据一个或多个输入信号提供一个或多个输出信号的电路。这样的电路可以包含接收数字输入并提供数字输出的有限状态机,或者是响应于一个或多个模拟输入信号提供一个或多个模拟输出信号的电路。逻辑还可以包含存储在机器可读介质中的与执行机器可执行指令的处理电路相结合的这种机器可执行指令。但是,这些仅仅是可提供逻辑的结构的例子,并且本发明的实施例不局限于这些方面。
此处所讨论的“处理系统”涉及用于完成计算任务的硬件和软件资源的组合。但是,这仅仅是处理系统的例子,并且本发明的实施例不局限于这个方面。此处所指的“主处理系统”涉及可适于和“外围设备”通信的处理系统。例如,外围设备可以向存在于主处理系统上的应用程序处理提供输入,或从其接收输出。但是,这些仅仅是主处理系统和外围设备的例子,并且本发明的实施例不局限于这些方面。
此处所指的“数据总线”涉及用于在设备之间传输数据的电路。例如,数据总线可以在主处理系统和外围设备之间传输数据。但是,这仅仅是例子,并且本发明的实施例不局限于这个方面。此处所指的“总线事务”涉及在总线结构中被耦合的设备之间的互动,其中,一个设备通过总线结构传输定址到另一个设备的数据。
此处所指的“端口”涉及向传输介质传输数据传输或从其接收数据的电路。例如,端口可以包含根据数据传输协议向传输介质传输数据或从其接收数据的电路。但是,这仅仅是端口的例子,并且本发明的实施例不局限于这个方面。
此处所指的“入口”端口涉及根据数据传输协议从传输介质接收数据的端口。此处所指的“出口”端口涉及通过传输介质向目的地传输数据的端口。但是,这些仅仅是入口端口和出口端口的例子,并且本发明的实施例不局限于这些方面。
此处所指的“数据分组”涉及可以根据数据传输协议被传输到目的地的数据单元。数据分组可以包含“头”部分和“有效载荷”部分。有效载荷部分可以包含在应用程序的支持下将由目的设备进行处理的内容数据。头部分可以包含控制信息,例如“目的地信息”。但是,这仅仅是数据分组的例子,并且本发明的实施例不局限于这个方面。
出口端口可以和用于存储要通过该出口端口传输给传输介质的数据分组的“传输队列”相关联。传输队列可以由存储器形成,来顺序地存储被格式化以根据数据传输协议在传输介质上传输的数据。传输队列中的数据分组可以根据排序规则通过出口端口被传输。但是,这仅仅是传输队列的例子,并且本发明的实施例不局限于这个方面。
此处所指的“交换机”涉及用于向一个或多个目的地转发接收到的数据的电路和逻辑。例如,交换机可以包含根据与在入口端口上接收到的数据相关联的目的地信息,把接收到的数据向出口端口转发的多个端口和逻辑。但是,这仅仅是交换机的例子,并且本发明的实施例不局限于这个方面。
此处所指的“链路”涉及在设备之间传输数据的电路。串行链路可以在两个设备之间单向或双向地提供点对点的通信。限于在两点之间传输数据时,串行链路可以在这两个设备之间传输数据而不依赖地址信息。但是,这些仅仅是串行链路的例子,并且本发明的实施例不局限于这个方面。
此处所指的“路由信息”涉及使目的地址和物理上的目的地相关联的数据。例如,“路由表”或“查找表”可以包含把数据分组内的目的地信息和物理上的目的地(例如,交换机的端口或耦合到交换机端口的设备)关联起来的路由信息。但是,这些仅仅是路由信息、路由表和查找表的例子,并且本发明的实施例不局限于这些方面。
交换机可以包含提供在端口之间转发数据的电路和逻辑的“交换结构(switch fabric)”。例如,交换结构可以包含响应于和出口端口相关联的目的地信息,把在入口端口上接收到的数据分组转发到出口端口的逻辑。交换机还可以包含“转发电路”,以根据目的地信息,发起通过交换结构把接收到的数据分组向出口端口的转发。例如,转发电路可以把目的地信息和特定的出口端口相关联,并发起通过交换结构把接收到的数据分组向该特定的出口端口的转发。但是,这些仅仅是交换结构和转发电路的例子,并且本发明的实施例不局限于这些方面。
此处所指的“枚举过程”涉及由处理系统控制的处理,该处理分配资源,使能存在于处理系统上的处理和耦合到I/O系统的设备之间的通信。例如,枚举处理可以分配处理系统的系统存储器中的数据缓冲区,用于向耦合到I/O系统的设备传输数据或从其接收数据。枚举过程还可以初始化与耦合到I/O系统的设备一致的处理系统上的设备的驱动。但是,这些仅仅是枚举过程的例子,并且本发明的实施例不局限于这些方面。
此处所指的“配置事务”涉及枚举过程中把资源分配给耦合到数据总线的设备或把资源分配给设备功能的事件。配置事务可以给处理系统提供标识设备或设备功能的信息,以便能够把资源分配给设备或设备功能。但是,这仅仅是配置事务的一个例子,并且本发明的实施例不局限于这个方面。
枚举过程可以通过传输定址到设备或设备功能的“配置请求”来发起配置事务。例如,枚举过程可以发起定址到目标设备或设备功能的总线事务来发起配置事务,以便分配资源来与该目标设备或设备功能进行通信。但是这仅仅是配置请求的例子,并且本发明的实施例不局限于这个方面。
此处所指的“配置头”涉及响应于配置请求由设备所提供的数据。例如,设备可以将配置头提供为格式化数据,包含具有标识设备的信息的字段和/或响应于请求的设备的一个或多个功能的资源需求的字段。但是,这仅仅是配置头的例子,并且本发明的实施例不局限于这个方面。
此处所指的“系统总线”涉及处理系统中耦合处理系统的硬件资源的数据总线。例如,系统总线可以包含耦合处理系统的中央处理单元(CPU)和主存储器的数据总线。但是,这仅仅是系统总线的例子,并且本发明的实施例不局限于这个方面。
此处所指的“桥”涉及在数据总线和一个或多个设备之间耦合的,使能在数据总线和设备之间的数据传输的电路或逻辑。例如,桥可以使得设备能够和数据总线根据数据总线的协议进行通信。但是,这仅仅是桥的例子,并且本发明的实施例不局限于这个方面。
桥可以通过“基本总线”被耦合到处理系统。这样的桥也可以被耦合到“次级总线”,以在桥和耦合到次级总线的设备之间传输数据。因此,桥可以通过基本总线从耦合到次级总线的设备向处理系统传输数据。类似地,桥可以把在基本总线上从处理系统接收的数据传输到耦合到次级总线的设备。但是,这些仅仅是耦合到桥的基本总线和次级总线的例子,并且本发明的实施例不局限于这些方面。
此处所指的“主桥”涉及在系统总线和I/O系统之间耦合的桥。例如,主桥可以使能在耦合到系统总线的处理系统的硬件资源与一个或多个耦合到中心(hub)或次级数据总线的设备之间的通信。但是,这仅仅是主桥的例子,并且本发明的实施例不局限于这个方面。
此处所指的“根设备”涉及在处理系统和输入/输出(I/O)系统之间传输数据的设备。这样的根设备可以包含耦合到处理系统的系统总线的中心电路,以在存在于处理系统上的处理和耦合到I/O系统的设备之间传输数据。根系统还可以包含把这种系统总线耦合到I/O设备的主桥。但是,这仅仅是根设备的例子,并且本发明的实施例不局限于这个方面。
交换机可以在“上游端口”通过根设备被耦合到处理系统并通过一个或多个“下游端口”被耦合到其他设备,以便在处理系统和其他设备之间传输数据。这样的交换机还可以在其他设备之间通过各自的下游端口传输数据。但是,这些仅仅是上游端口和下游端口的例子,并且本发明的实施例不局限于这些方面。
此处所指的“循环冗余代码”(CRC)涉及与数据传输消息中的数字数据相结合的一组二进制数字。在数据传输消息的接收点,可以对CRC执行预先定义的“校验和”运算来指示在接收到的数据传输消息中的数字数据的可靠性。但是,这仅仅是CRC和用于从CRC验证数据传输的校验和的运算的例子,并且本发明的实施例不局限于这些方面。
简而言之,本发明的实施例针对包含多个端口和一个转发电路的交换机。在完成校验和的运算前,转发电路可以开始通过交换结构把数据分组从入口端口转发到出口端口的传输队列。但是,这仅仅是示范的实施例,并且本发明的其他实施例不局限于这些方面。
图1示出了根据本发明的实施例的处理平台的示意图。CPU 2和系统存储器6被耦合以便通过提供根设备的核心逻辑4和外围设备通信。核心逻辑4可以包含由英特尔公司制造的存储器桥或存储器控制器中心(MCH)。但是,这仅仅是根设备的例子,并且本发明的实施例不局限于这个方面。耦合到核心逻辑4的外围设备可以包括例如一个或多个通信端口8、一个或多个处理桥12(例如,耦合到诸如存储处理器的输入/输出(I/O)设备)、I/O控制器中心14和交换机10。在所示实施例中,I/O控制器中心14还可以被耦合到适于根据诸如通用串行总线协议或外围部件互连协议(PCI)(例如,根据PCI特殊兴趣组1998年12月18日的PCI局部总线规范修订版2.2,下面称作“PCI局部总线规范”)的设备协议与存在于CPU 2和系统存储器6中的处理进行通信的设备。此外,每个交换机10可以被耦合到一个或多个设备18。但是,这仅仅是处理平台的例子,并且本发明的实施例不局限于这个方面。
每个交换机10可以包含耦合到核心逻辑4的上游端口和耦合到设备18的多个下游端口。根据一个实施例,交换机10可以通过上游端口促进设备18和核心逻辑4之间的上游和下游通信。交换机10也可以通过独立于核心逻辑4的相应的下游端口促进设备18之间直接的对等通信。交换机10可以从核心逻辑4或设备18接收在数据消息或数据分组格式中的指示目的地的数据。因此,交换机10可以包含根据与数据消息或数据分组相关联的目的地信息,为这样的数据消息或数据分组确定出口端口的逻辑。但是,这仅仅是在处理平台中实现的交换机的例子,并且本发明的实施例不局限于这个方面。
根据一个实施例,目的数据可以包含可与交换机10的出口端口相关联的任何数据。例如,这样的目的数据可以包含标识用于配置请求分组或分割完成分组的串行链路或总线段(例如总线号)的信息。数据消息或数据分组中的目的数据还可以包含存储器映射地址作为非配置请求分组的一部分。但是,这些仅仅是目的数据的例子,并且本发明的实施例不局限于这些方面。
根据一个实施例,设备18可以包含若干I/O设备中的任何一个,I/O设备例如耦合到网络的以太网控制器、小型计算机系统接口(SCSI)、串行ATA接口、光纤通道接口或图形控制器接口。但是,这些仅仅是可以被耦合到交换机的下游端口的设备的例子,并且本发明的实施例不局限于这个方面。
根据一个实施例,CPU 2可以执行一个或多个过程来初始化处理平台,使得存在于CPU 2和系统存储器6中的过程能够和外围设备进行通信。例如,CPU 2可以执行存储在作为基本I/O系统(BIOS)的一部分的非易失性存储器(未示出)中的指令。这种指令可以被加载到系统存储器6中,并响应于系统复位事件被执行。这样的BIOS指令可以发起或控制一个或多个枚举处理,通过例如定义系统存储器6中的缓冲区,把资源分配给处理(例如,初始化数据总线驱动和设备驱动)以便和对应的数据总线总线和设备进行通信。但是,这仅仅是处理系统可以如何执行处理来初始化处理平台的例子,并且本发明的实施例不局限于这个方面。
在所示实施例中,可以使得交换机10和设备18对于核心逻辑4(以及存在于CPU 2和系统存储器6中的处理)就如同在2002年7月16日的PCI快速基本规范修订版1.0(下面称作“PCI快速规范”)中所定义的PCI设备。这本实施例中,枚举过程可以分配处理平台的资源以便与交换机10以及设备18通信,交换机10作为在PCI快速规范的1.3.3节规定的“交换”设备,设备18作为在PCI快速规范的1.3.2节中规定的“端点”。但是,这仅仅是可以如何使处理系统适于和交换机以及耦合到交换机端口的设备通信的例子,并且本发明的实施例不局限于这个方面。
根据一个实施例,CPU 2可以执行枚举过程,以便除了处理其他事情之外,分配资源以通过交换机10的上游端口与耦合到交换机10的下游端口的设备18进行通信,并建立路由信息以将数据消息或数据分组从上游端口转发到下游端口。交换机10于是包含根据聚集的路由信息把数据从源下游端口传输到目的下游端口的逻辑,所述路由信息是为把数据消息或数据分组从上游端口转发到目的下游端口而建立的。但是,这仅仅是交换机如何把数据消息或数据分组从源下游端口转发到目的下游端口的例子,并且本发明的实施例不局限于这个方面。
图2示出了根据本发明的另一个实施例的处理平台的示意图。CPU综合结构102和系统存储器108可以包含通过根设备104和外围设备进行通信的处理系统(例如包含一个或多个CPU和系统存储器)。每个交换机110均包含上游端口122和耦合到设备118的多个下游端口124。设备118可以定义包含把数据传输到处理平台上的点或从其接收数据的电路的端点。设备118还可以根据PCI局部数据总线规范定义到遗留PCI系统120的数据总线的桥。
在所示实施例中,耦合到交换机110的下游端口124的设备118可以通过交换机110的上游端口122和存在于处理器综合结构102上的处理进行通信。CPU综合结构102可以执行枚举过程来配置交换机110和CPU综合结构102处的资源以便能与设备118的通信。这样的枚举过程可以包含把交换机110和设备118枚举为在PCI快速规范的第七节所中规定的“交换机”或“端点”的过程。
在所示实施例中,交换机110c的上游端口122耦合到交换机110a的下游端口124。因此,交换机110a可以担当交换机110c的根设备,并且包含通过交换机110a的上游端口122把来自交换机110c的数据消息或数据分组(例如,源自耦合到交换机110c的设备118之一的数据消息或数据分组)转发到存在于CPU综合结构102中的处理的逻辑。类似地,交换机110a可以包含把来自存在于CPU综合结构102中的处理的数据消息或数据分组(在交换机110a的上游端口122上接收的)转发到交换机110c和耦合到交换机110c的下游端口124的设备118的逻辑。但是,这些仅仅是第一交换机可以如何担当根设备来在处理系统和耦合到第二交换机的设备之间转发消息的例子,其中,第二交换机耦合到第一交换机的下游端口,本发明的实施例不局限于这个方面。
根据一个实施例,耦合到交换机110a的下游端口124的设备118可以不依赖存在于CPU综合结构102中的处理而和耦合到交换机110c的设备118进行通信。例如,耦合到交换机110c的下游端口124的设备118可以通过与耦合到交换机110a的下游端口124的设备118相关联的目的数据,把数据消息或数据分组传输到交换机110c。然后交换机110c可以把要被路由到和目的地信息相关联的设备118的数据消息或数据分组通过(出口)上游端口122路由到交换机110a。类似地,耦合到交换机110a的下游端口124的设备可以通过与耦合到交换机110c的下游端口124的设备118相关联的目的数据,把数据消息或数据分组传输到交换机110a。然后交换机110a可以把到交换机110c的要被路由到和目的地信息相关联的设备118的数据消息或数据分组通过(交换机110a的)出口下游端口124路由到(交换机110c的)入口上游端口122。但是,这些仅仅是设备可以如何通过交换机转发数据消息或数据分组的例子,并且本发明的实施例不局限于这个方面。
根据一个实施例,CPU综合结构102可以执行枚举过程,在其他事件之中分配资源以通过交换机110的上游端口122和交换机110以及耦合到交换机110的下游端口124的设备118进行通信。枚举过程还可以建立路由信息以便把数据消息或数据分组从上游端口122转发到下游端口124。交换机110于是包含根据把数据消息或数据分组从上游端口122转发到目的下游端口124的路由信息,把数据从源下游端口124传输到目的下游端口124的逻辑。但是,这仅仅是交换机可以如何把数据消息或数据分组从源下游端口转发到目的下游端口的例子,并且本发明的实施例不局限于这个方面。
图3示出了根据在图1中所示的交换机10和图2中所示的交换机110的实施例的交换机200的一部分的示意图。交换机200可以包含多个耦合到链路的端口。在当前所示实施例中,入口端口202接收可被转发到多个出口端口210中的任一个的数据分组。在一个实施例中,交换机200的任意端口可以是从相关联的链路接收数据分组的入口端口202,或在链路上传输数据分组的出口端口。在其他实施例中,交换机200上的特定端口可以具有作为入口端口或出口端口的固定功能。
在当前所示实施例中,交换机200的端口可以根据数据分组格式在耦合到设备的串行链路上接收或传输数据分组。图4示出数据分组250的格式,该数据分组可以在交换机200的入口端口上接收和被转发到交换机200的出口端口。数据分组250包含头部分252、有效载荷部分254和尾部256。头部分252可以包含把数据分组250与数据分组类型关联起来的信息以及和接收该数据分组250的目的设备相关联的目的地信息。
根据一个实施例,数据分组250可以和诸如请求分组类型或完成分组类型的若干分组类型中的任何一个相关联。但是,这些仅仅是数据分组类型的例子,并且本发明的实施例不局限于这些方面。在一个实施例中,头部分252可以用不同的格式来保存目的地信息,这些格式取决于和数据分组250相关联的数据分组类型。因此,交换机200可以根据相关联的数据分组类型从头部分252提取目的地信息。数据分组250的尾部256可以包含诸如CRC或分组有效符号的信息。
图5A和图5B示出了流程图,举例说明了根据图3和图4所示的本发明的实施例把数据分组从入口端口转发到出口端口的处理。在块262,分组分析器208可以从在入口端口202处接收的数据分组的头部分252提取数据分组的类型信息,并在校验和电路204对接收到的数据分组中的数据发起校验和的计算。根据提取的数据分组的类型信息,在块264处,分组分析器208可以把接收到的数据分组的头部分252与头格式相关联。然后分析器208根据头格式从头部分252的特定字段提取目的地信息。
在块266,分组分析器208和转发电路206可以从提取的目的地信息确定路由信息(例如根据查找表),并根据该路由信息选择出口端口210。在块268,分组分析器208可以确定传输队列212(和所选择的出口端口210关联)是否能够接收该数据分组。如果传输队列212能够接收该数据分组(例如传输队列不是满的),则在块270,转发电路206可以发起通过交换结构214把数据分组转发到传输队列212。
在当前所示实施例中,应该理解,交换结构214可以在完成校验和的运算(在块264被发起的)之前把接收的数据分组转发到传输队列212。在选择了出口端口210后,交换结构214可以开始把接收到的数据分组的前导部分“流(stream)”到传输队列212,同时由校验和电路204执行校验和的运算。在菱形框272处完成校验和的运算之后,校验和电路204可以向入口端口202和被选择的传输队列212提供CRC状态指示。如果CRC状态有效,则可以在块276处根据排序规则,通过对应的出口端口从被选择的传输队列212传输数据分组。如果CRC状态无效,则在块278处可以把数据分组从传输队列中去掉,并且入口端口202可以在块280发起用于把数据分组重新传输到入口端口202的链路层重试(link levelretry)。在去掉了无效的数据分组之后,所选择的传输队列212于是可以重新调整空间可用度以便把另外的要传输的数据分组加入队列。
在另一个实施例中,在菱形框274处接收到无效CRC状态之后,所选择的传输队列212可以在被转发的数据分组的尾部256插入一个符号,表明该数据分组无效。这可以允许出口端口210在从校验和电路204接收到无效CRC状态之前就开始从传输队列212传输数据分组(假设符号在完成从传输队列传输数据分组之前被插入)。然后接收数据分组的设备(未示出)可以从插入的符号辨别出该数据分组是无效的,并在在链路上被转发之后丢弃该数据分组。然后接收设备可以发起从交换机200重新传输数据分组的链路层重试。然后交换机200在入口端口上发起重新传输数据分组的链路层重试。然后交换机200响应于接收到被重新传输的数据分组,满足来自接收设备的链路层重试。
图6A到图6E示出了根据图4所示的数据分组250的另外一个实施例的在交换机入口端口接收到的分组头的格式。这里,入口端口可以从串行链路接收按照PCI(第三代I/O,3GIO)格式的数据分组。应该理解,在转发32位或64位可寻址请求分组(图6A和图6B)以及配置请求分组(图6D)和请求完成分组(图6E)中可以应用当前所示的实施例。
每个数据分组头均在字节0包含表明对应的数据分组类型的符号,数据分组类型例如请求分组、请求完成分组或配置分组。但是,这些仅仅是可在分组头的设定字段中被指示的数据分组类型的例子,并且这样的字段可以表示其他的数据分组类型。
在当前所示的实施例中,在图6A到图6E中所示的分组头格式中的不同类型的目的地信息可以与用于确定目的传输队列212和出口端口210的路由信息相关联。根据一个实施例,基于特定的数据分组类型,目的地信息可以包含目的设备标识符或物理目的地址(例如在枚举处理中定位设备或设备功能的PCI配置地址,链路层地址或出口端口号)。但是,应该理解,这些仅仅是可以和路由信息相关联(例如在查找表中)来选择目的传输队列212的目的地信息的例子,并且本发明的实施例不局限于这些方面。
图7示出一个流程图,举例说明了处理在入口端口处接收到的带有被格式化为如图6A到图6E中所示的头的数据分组的实施例。在入口端口202处从串行链路接收到数据分组后,数据分组分析器208可以从数据分组头的字节0位置提取数据分组的类型信息。在菱形框504,根据提取的数据分组的类型信息,所接收到的数据分组可以被分类为请求分组或者请求完成分组二者之一。在块506和522,分组分析器208可以从分组头的尺寸(根据提取的数据分组的类型信息)加上分组有效载荷的尺寸来确定数据分组尺寸,分组有效载荷的尺寸来自分组头的字节1和字节2中的“长度”字段。
如果接收到的数据分组被分类为请求分组(例如如图6A和6B所示),则在块508,如果请求分组使用32位寻址,则分组分析器208可以在字节4到字节7提取目的地信息(例如目的地地址),或者如果分组使用64位寻址,则可以在字节4到字节11提取目的地信息。然后转发电路206可以根据和目的地信息相关联的路由信息从查找表中选择出口端口。
如果接收到的数据被分类为请求完成分组(例如图6E中所示),则在块524,分组分析器208可以从分组头中在字节8和字节9的“源ID”或“请求者ID”字段提取识别基本请求的源的信息。然后转发电路206可以从把源ID或请求者ID与出口端口相关联的查找表中的路由信息选择出口端口。
除了“请求”或“完成”数据分组类型以外,根据一个实施例,其他的数据分组类型可以包括PCI配置请求(例如配置读或写请求),其中,头可以包含标识物理配置地址(例如,总线号、设备号和/或设备功能号)的数据。在确定数据分组是配置请求类型之后,物理配置地址可以与查找表中标识出口端口的路由信息相关联。然后,对这样的配置请求数据分组的响应可以作为完成数据分组类型被处理。
在块508或524处选择了出口端口之后,如果所选择的出口端口的传输队列可用于接收数据分组(菱形框510),则在块512处所接收的数据分组可以被转发到该传输队列。但是,应该理解,可以在执行确定有效CRC的校验和的运算之前开始把数据分组转发到出口端口的传输队列(例如通过交换结构)。在菱形框514处可以挂起通过出口端口从传输队列的数据分组传输,直到校验和的运算完成为止。如果校验和的运算验证了数据分组的CRC部分有效,则在椭圆框520处,可以根据排序规则从传输队列传输数据分组。否则,如果校验和的运算指示出无效的CRC,则在椭圆框518,可以从传输队列中去掉数据分组,并且可以在入口端口发起链路层重试。
在另一个实施例中,在由校验和的运算验证CRC之前(例如在菱形框514),可以开始从传输队列的传输。在这个实施例中,从传输队列的传输不能被挂起,直到接收到CRC验证为止。代替地,在完成从出口端口的传输之前,无效分组符号可以被插入数据分组的尾部。在接收到从出口端口传输的数据分组和检测到无效符号之后,接收设备可以丢弃接收到的数据分组,并尝试链路层重试。在接收到重新传输的数据分组之后(响应于在交换机的入口端口的链路层重试),重新传输的数据分组可以被转发到传输队列,并通过出口端口被重新传输。
图8示出根据图3中所示的交换机200的实施例,把多端口交换机映射到“虚拟”的PCI总线结构表示法的示意图。交换机610可以包含耦合到根设备604的上游端口622和耦合到各自设备618的多个下游端口624。在一个实施例中,设备618可以是适于提供如PCI快速规范中所描述的“端点”的PCI设备。可选地,设备618可以包含根据其他协议和下游端口624进行通信的其他接口,这些协议例如无限带宽(infiniband)、快速I/O(Rapid I/O)或超传输(Hyper Transport)协议。但是,这些仅仅是用于可以被耦合到交换机的下游端口的设备的接口的例子,并且本发明的实施例不局限于这些方面。
根据一个实施例,交换机610包含把在源入口端口(例如,上游端口622或下游端口624)上接收的数据消息或数据分组转发到不同的目的出口端口(例如,上游端口622或下游端口624)的逻辑和电路。交换机610可以包含把目的地址信息与路由信息(例如,存储在路由表或查找表中的路由信息)相关联以标识目的出口端口的逻辑。但是,这仅仅是把数据消息或数据分组从入口端口转发到出口端口的交换机中的逻辑的例子,并且本发明的实施例不局限于这个方面。
通过执行枚举过程,处理系统(未示出)可以配置资源,使得存在于处理系统上的处理能够和设备618进行通信。例如,处理系统可以执行枚举过程来配置资源,以便与如虚拟映射600中所示的作为根据PCI局部总线规范的PCI设备的交换机602进行通信。例如,在诸如由微软公司销售的各利版本的Windows、Linux、Sun微系统公司销售的Solaris或WindRiver系统公司销售的VxWorks或pSOS的操作系统中的例程可以执行枚举过程,根据虚拟映射配置处理系统上的资源。但是,这些仅仅是可以执行枚举过程的例程的例子,并且本发明的实施例不局限于这个方面。
在所示实施例中,交换机610对处理系统来说就好像是在根设备604处连接到PCI总线的一个或多个设备。交换机610可以包含对在上游端口622从PCI枚举过程接收到的0类型或1类型的配置请求做出响应的逻辑。在初始的0类型配置事务的过程中,交换机610可以提供配置头来仿真或标识“虚拟”的PCI到PCI桥620,配置头如PCI特殊兴趣组1998年12月18日的PCI到PCI桥体系结构规范修订版1.1(下面称作“PCI到PCI桥规范”)的第三章中所示。然后枚举过程可以分配处理系统的资源与作为虚拟的PCI到PCI桥620的上游端口622进行通信。
在上游端口622的初始0类型配置事务之后,枚举过程可以在上游端口622发起随后的1类型配置事务(如PCI到PCI桥规范的3.1.2.1.1节所示),分配使能和作为虚拟的PCI到PCI桥620的各个下游端口624通信的资源。在这些1类型的配置事务的每一个的过程中,交换机610处的逻辑可以在上游端口622处提供配置头,把对应的下游端口624标识为连耦合到虚拟的PCI到PCI桥620的次级总线的仿真或虚拟的PCI到PCI桥606。在交换机610处的这种逻辑可以仿真如PCI到PCI桥规范的3.2节所示的1类型到0类型的配置事务转换。
在配置处理系统的资源配置以便和对应的仿真或虚拟的PCI到PCI桥606进行通信的各1类型的配置事务之后,枚举过程可以在定向到仿真或虚拟的PCI到PCI桥606的上游端口622发起随后的1类型配置。交换机610可以包含提供把对应的设备618标识为耦合到仿真的次级总线或虚拟的PCI到PCI桥606的虚拟PCI设备608的配置头的逻辑。在交换机610处的这种逻辑可以仿真如PCI到PCI桥规范的3.1.2.1.2节所示的1类型到1类型的配置事务转发。
根据一个实施例,下游端口624可以通过串行链路(未示出)被耦合到设备618。响应于对相应的虚拟PCI到PCI桥606的1类型的配置请求,交换机610可以提供响应来仿真PCI总线段的存在。响应于来自交换机610的指示,枚举过程可以把总线段号与该串行链路相关联,并且把资源分配给作为具有单个设备的PCI总线段的串行链路。但是,这仅仅是在枚举过程中可以如何仿真总线段的存在的例子,并且本发明的实施例不局限于这个方面。
在所示实施例中,在上游端口622从根设备接收到的下游数据分组可以和包含地址的目的地信息相关联。交换机610可以包含定义地址范围的逻辑,用于把这些下游数据消息转发到耦合到下游端口624的设备618中的一个。例如,交换机610可以为和各下游端口相关联的各地址范围定义基址和界限寄存器。从根设备604接收的具有在由这些基址和界限寄存器所定义的地址范围内的地址的数据消息然后可以被转发到和该地址范围相关联的下游端口624。交换机610然后可以忽略来自根设备的具有未落入和任何一个下游端口624相关联的地址范围内的地址的下游消息。
根据一个实施例,交换机610可以在枚举过程中为每个地址范围定义基址和界限寄存器。图9示出了一个示意图,举例说明了在由根据图8中所示多端口交换机610的实施例的交换机所定义的地址映射图650上的下游转发地址范围。在所示实施例中,交换机为把下游消息转发到各自的下游端口定义了地址范围654、656和658(例如,包括基址和界限寄存器)。根据一个实施例,枚举过程可以把下游端口的每个下游消息地址范围模拟为地址范围,用于把消息从和下游端口对应的虚拟PCI到PCI桥606的基本总线转发到次级总线。类似地,枚举过程也可以把所有下游端口的下游消息地址范围的总和(例如地址范围654、656和658的总和)模拟为一个地址范围,用于把消息从虚拟PCI到PCI桥620的基本总线转发到次级总线。
根据一个实施例,参考图8和图9所示的多端口交换机可以包含对地址范围654、656和658(用于把下游消息从上游端口622转发到下游端口624)逆向解码的逻辑,以便提供用于把消息从下游端口624转发到上游端口622的地址范围。因此,如果在下游端口624接收到的数据消息或分组与在地址范围652或660中的目的地址相关联,则交换机610可以把该数据消息或分组转发到上游端口622。处理系统然后可以模拟逆向解码,用于把数据分组或数据消息从如PCI到PCI桥规范的第四章中所示的虚拟PCI到PCI桥620的次级总线转发到基本总线。
根据一个实施例,交换机610也可以包含不依赖处理系统而把在第一下游端口624接收的数据消息或数据分组转发到第二目的下游端口624的逻辑。交换机610处的这样的逻辑可以使用和所接收的数据消息或数据分组相关联的目的地信息来从地址范围654、656和658逆向解码目的下游端口624,地址范围654、656和658是为从上游端口622转发消息而定义的。然后交换机610可以把数据消息或数据分组转发到逆向解码出的下游端口624。但是,这仅仅是交换机可以如何把数据分组或消息从第一下游端口转发到第二下游端口的例子,并且本发明的实施例不局限于这个方面。
根据一个实施例,交换机610可以包含存储器,用于保存路由表中的路由信息,以便把数据消息或数据分组转发到目的上游端口622或下游端口624。例如,交换机610可以包含响应于枚举过程,建立把地址范围654、656和658与各自的下游端口624相关联,并把剩下的地址范围652和660与上游端口622相关联的查找表的逻辑。但是,这仅仅是交换机可以如何保持用于把数据消息或数据分组转发到目的端口的路由信息的例子,并且本发明的实施例不局限于这个方面。
图10示出一个流程图,根据图8和图9中所示的多端口交换机的实施例说明了枚举过程。在所示实施例中,处理系统可以发起枚举过程,使用如PCI到PCI桥规范的第三章中所示的0类型和1类型的配置事务,分配资源来与作为一个或多个PCI设备的交换机610进行通信。
在块702,在交换机的上游端口发起0类型的配置事务,并且该上游端口可以返回标识虚拟PCI到PCI桥的配置头。然后在块706到710,枚举过程可以在该上游端口发起随后的配置事务来枚举位于上游端口“后面”(例如指向耦合到虚拟的PCI到PCI桥的次级总线的设备)的另外的设备。对于交换机的各下游端口,在块706,枚举过程可以在上游端口发起1类型的配置事务来枚举作为与上游端口对应的虚拟PCI到PCI桥的次级总线上的虚拟PCI到PCI桥的下游端口,如PCI到PCI桥规范的3.1.2.1.1节中所示。
上游端口可以响应于在块706处发起的1类型配置事务,提供把相关联的下游端口标识为PCI到PCI桥的配置头。因此,在块708,枚举过程可以发起随后的1类型配置事务,该配置事务定向到和该下游端口对应的虚拟的PCI到PCI桥的次级总线上的设备(包括1类型到1类型的转发),如PCI到PCI桥规范的3.1.2.1.2节中所示。响应于在块708处发起的1类型的配置事务,上游端口可以提供把耦合到下游端口的设备标识为PCI设备的配置头。
根据一个实施例,交换机包含根据标识耦合到下游端口的设备的信息,响应于在块708处发起的1类型的配置事务,在上游端口提供配置头的逻辑。例如,在下游端口的设备可以把配置头传输到把该设备标识为PCI设备的交换机。然后该交换机可以响应于1类型的配置事务,把配置头转发到上游端口。可选地,交换机可以包含根据在下游端口接收到的标识一个或多个设备功能的信息,形成配置的逻辑。但是,这仅仅是交换机可以如何形成PCI配置头来表征耦合到下游端口的设备或设备功能的例子,并且本发明的实施例不局限于这个方面。
在块710,交换机可以定义用于把消息从上游端口转发到设备的地址范围。这样的地址范围可以由在上游端口定义的基址和界限寄存器来表示。在块702到712的枚举过程之后,交换机可以如上面参考图9所讨论的那样使用逆向解码来把消息从下游端口转发到上游端口,或者从第一个下游端口转发到第二个下游端口。例如,交换机可以包含从逆向解码与下游端口相关联的地址范围中提取路由信息以形成路由表的逻辑。然后路由表可以被用于把数据消息从源下游端口转发到上游端口或目的下游端口。
虽然已经说明和描述了目前被视作本发明的实施例的例子的内容,但是本领域的技术人员将会理解,不脱离本发明的真正范围,可以做出各种其他的修改,并可用等价物来替换。此外,可以做出很多修改,使得具体情况适用本发明的教导且不脱离此处描述的中心发明概念。因此,其意图是本发明不局限于所公开的具体实施例,而且本发明还包括所有落入所附权利要求的范围内的实施例。
权利要求
1.一种方法,包括在交换机的入口端口接收数据分组;对所述被接收的数据分组的一部分发起校验和的运算;和在所述校验和的运算完成之前,开始把所述被接收的数据分组通过交换结构转发到所述交换机的出口端口的传输队列。
2.如权利要求1所述的方法,还包括响应于来自所述校验和的运算的有效的循环冗余代码指示,选择性地从所述传输队列传输所述被转发的数据分组。
3.如权利要求2所述的方法,还包括响应于来自所述校验和的运算的无效的循环冗余代码指示,选择性地从所述传输队列去掉所述被转发的数据分组。
4.如权利要求1所述的方法,还包括响应于来自所述校验和的运算的无效的循环冗余代码指示,把分组无效符号插入所述被转发的数据分组中。
5.如权利要求1所述的方法,还包括基于所述被接收的数据分组的一部分来选择所述出口端口。
6.如权利要求5所述的方法,还包括基于所述被接收的数据分组的一部分,把所述被接收的数据分组与数据分组类型相关联;基于所述相关联的数据分组类型,从所述被接收的数据分组的一部分提取目的地信息;和基于所述目的地信息,选择所述出口端口。
7.如权利要求6所述的方法,还包括如果所述被接收的数据分组与请求数据分组类型相关联,则基于在所述被接收的数据分组中的与所述出口端口有关的物理地址来选择所述出口端口;和如果所述被接收的数据分组与请求完成数据分组类型相关联,则基于请求数据分组的源的标识符来选择所述出口端口。
8.如权利要求1所述的方法,还包含确定所述出口端口传输所述被接收的数据分组的可用性;以及基于所述出口端口的所述可用性,把所述被接收的数据分组选择性地转发到所述传输队列。
9.一种交换机,包括与交换结构耦合的多个端口,至少一个端口包括传输队列;对在入口端口上接收的数据分组的至少一部分执行校验和的运算的校验和电路;和在所述校验和的运算完成之前,开始把所述被接收的数据分组通过所述交换结构转发到出口端口的传输队列的转发电路。
10.如权利要求9所述的交换机,其中,所述出口端口包括响应于来自所述校验和的运算的有效的循环冗余代码指示,选择性地从所述传输队列传输所述被转发的数据分组的逻辑。
11.如权利要求10所述的交换机,其中,所述出口端口包括响应于来自所述校验和的运算的无效的循环冗余代码指示,选择性地从所述传输队列去掉所述被转发的数据分组的逻辑。
12.如权利要求9所述的交换机,还包括响应于来自所述校验和的运算的无效的循环冗余代码指示,把分组无效符号插入所述被转发的数据分组中的逻辑。
13.如权利要求9所述的交换机,其中,所述转发电路包括基于所述被接收的数据分组的一部分来选择所述出口端口的逻辑。
14.如权利要求13所述的交换机,其中,所述转发电路还包括基于所述被接收的数据分组的一部分,把所述被接收的数据分组与数据分组类型相关联的逻辑;基于所述相关联的数据分组类型,从所述被接收的数据分组的一部分提取目的地信息的逻辑;和基于所述目的地信息,选择所述出口端口的逻辑。
15.如权利要求14所述的交换机,其中,所述转发电路还包括如果所述被接收的数据分组与请求数据分组类型相关联,则基于在所述被接收的数据分组中的与所述出口端口有关的物理地址来选择所述出口端口的逻辑;和如果所述被接收的数据分组与请求完成数据分组类型相关联,则基于请求数据分组的源的标识符来选择所述出口端口的逻辑。
16.如权利要求9所述的交换机,其中,所述转发电路还包括确定所述出口端口传输所述被接收的数据分组的可用性的逻辑;和基于所述出口端口的所述可用性,把所述被接收的数据分组选择性地转发到所述传输队列的逻辑。
17.一种系统,包括交换机,包括与交换结构耦合的多个端口,至少一个端口包括传输队列;对在入口端口上接收的数据分组的至少一部分执行校验和的运算的校验和电路;和在所述校验和的运算完成之前,开始把所述被接收的数据分组通过所述交换结构转发到出口端口的传输队列的转发电路;通过根设备耦合到所述交换机的上游端口的主处理系统;和和所述交换机的下游端口耦合的一个或多个设备。
18.如权利要求17所述的系统,其中,所述出口端口包括响应于来自所述校验和的运算的有效的循环冗余代码指示,选择性地从所述传输队列传输所述被转发的数据分组的逻辑。
19.如权利要求18所述的系统,其中,所述出口端口包括响应于来自所述校验和的运算的无效的循环冗余代码指示,选择性地从所述传输队去掉所述被转发的数据分组的逻辑。
20.如权利要求17所述的系统,其中,所述交换机还包括响应于来自所述校验和的运算的无效的循环冗余代码指示,把分组无效符号插入所述被转发的数据分组中的逻辑。
21.如权利要求17所述的系统,其中,所述转发电路包括基于所述被接收的数据分组的一部分来选择所述出口端口的逻辑。
22.如权利要求21所述的系统,其中,所述转发电路还包括基于所述被接收的数据分组的一部分,把所述被接收的数据分组与数据分组类型相关联的逻辑;基于所述相关联的数据分组类型,从所述被接收的数据分组的一部分提取目的地信息的逻辑;和基于所述目的地信息,选择所述出口端口的逻辑。
23.如权利要求22所述的系统,其中,所述转发电路还包括如果所述被接收的数据分组与请求数据分组类型相关联,则基于在所述被接收的数据分组中的与所述出口端口有关的物理地址来选择所述出口端口的逻辑;和如果所述被接收的数据分组与请求完成数据分组类型相关联,则基于请求数据分组的源的标识符来选择所述出口端口的逻辑。
24.如权利要求17所述的系统,其中,所述转发电路还包括确定所述出口端口传输所述被接收的数据分组的可用性的逻辑;和基于所述出口端口的所述可用性,把所述被接收的数据分组选择性地转发到所述传输队列的逻辑。
25.如权利要求17所述的系统,其中,所述交换机包括响应于在所述上游端口接收到配置请求分组,仿真PCI到PCI桥的存在的逻辑。
26.如权利要求17所述的系统,其中,至少一个下游端口被耦合到包括图形控制器的设备。
27.如权利要求17所述的系统,其中,至少一个下游端口被耦合到小型计算机系统接口。
28.如权利要求17所述的系统,其中,至少一个下游端口被耦合到以太网控制器。
29.如权利要求17所述的系统,其中,至少一个下游端口被耦合到光纤通道接口。
30.如权利要求17所述的系统,其中,至少一个下游端口被耦合到串行ATA设备。
全文摘要
公开了一种用于在交换机上把数据分组从入口端口转发到出口端口的系统和方法。转发电路可以在校验和的运算完成之前开始把数据分组通过交换结构从入口端口转发到出口端口的传输队列。
文档编号H04L12/56GK1593043SQ03800549
公开日2005年3月9日 申请日期2003年8月22日 优先权日2002年8月23日
发明者加里·所罗门, 戴维·哈里曼 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1