一种PCIE交换芯片端口配置系统和方法与流程

文档序号:20608236发布日期:2020-05-01 22:18阅读:385来源:国知局
一种PCIE交换芯片端口配置系统和方法与流程

本发明涉及计算机外围设备高速互连总线(peripheralcomponentinterconnectexpress,pcie)技术领域,特别是涉及一种pcie交换芯片端口配置系统和方法。



背景技术:

pcie总线基于传统pci系统,保留了传统pci总线的一些优秀特性,在软件配置上与pci总线相兼容。pcie总线将pci的并行总线结构改为串行来突破速率瓶颈,同时利用点到点的连接、crc校验等方式保证数据总线的高实时性和高可靠性,是一个为现在和未来多种多样的计算和通信平台而定义的高性能、通用i/o互连总线。pcie总线目前广泛应用于工作站、服务器等计算系统领域,也应用于嵌入式计算和通信平台等领域。随着pcie总线应用越来越广泛,pcie设备之间的数据通讯应用越来越广泛,现在主流计算机主板上的设备与cpu之间的通讯几乎都应用pcie总线。由于pcie设备之间需要进行高速实时通讯,pcie交换芯片就应运而生,pcie交换芯片实现了各pcie设备之间的快速高带宽通讯,现在几乎所有计算机主板都需要使用pcie交换芯片。

要想让pcie交换芯片正常工作,在其工作之前,首先必须对其进行初始化配置。虽然市场上有不少pcie交换芯片,但目前很难找到pcie交换芯片端口配置具体实现机制方面的文献,本专利提出了一种pcie交换芯片端口配置实现机制,能够快速实现pcie交换芯片的端口配置,满足pcie协议对于pcie芯片初始化的时限要求。



技术实现要素:

为了解决现有技术存在的不足,本发明的目的在于提供一种pcie交换芯片端口配置系统和方法,可以确保快速完成端口配置,满足pcie协议对于pcie芯片初始化的时限要求。

为实现上述目的,本发明提供的pcie交换芯片端口配置系统,包括交换芯片内核、多个端口,以及eeprom控制器接口模块,其中,

所述交换芯片内核,进一步包括交叉开关和配置模块;

所述交叉开关,用于转发穿越pcie交换芯片的事务层包;

所述配置模块,用于对所述端口进行配置,将所述端口配置为上游端口或下游端口,并控制每个端口链路建立链接的时机;

所述上游端口接受来自上游链路的类型0配置请求包、存储器请求包和所述配置模块的配置,对其内部的端口配置寄存器单元进行读或写操作;

所述下游端口接收来自所述配置模块的配置信息,对其内部的端口配置寄存器进行读或写操作。

进一步地,所述端口包括端口控制器,所述端口控制器,进一步包括,接收模块、配置接口模块、寄存器配置模块和发送模块,其中,

所述接收模块,其接收事务层包,提取包头信息并进行分析,并根据分析结果对所述事务包进行转发、接收、或丢弃处理;

所述配置接口模块,用于接收配置信息,根据配置信息对所述寄存器配置模块内的端口配置寄存器进行读写操作,并接收反馈的读或写操作结果;

所述寄存器配置模块接收所述配置接口模块对所述端口配置寄存器的读或写操作指令,并将读或写操作结果反馈到所述配置接口模块;

所述发送模块,其接收所述交叉开关和所述配置接口模块的数据包并转发到所述外界链路;

所述配置模块,直接读取与其相连接的所述寄存器配置模块中的配置寄存器的值。

进一步地,所述端口配置为上游端口时,所述接收模块,其根据对接收的事务层包的包头分析结果,将所述事务层包分别转发到所述配置模块或所述交叉开关,转发到所述配置模块的事务层包只能是类型1配置请求包或存储器请求包,当转发到所述配置模块时,从所述事务层包中提取配置信息,将所述配置信息通过所述配置接口模块转发到所述配置模块;当转发到所述交叉开关时,对整个所述事务层包进行转发;

所述端口配置为下游端口时,所述接收模块,丢弃接收的来自下游链路的类型0和类型1配置请求包,丢弃访问所述交换芯片端口配置寄存器的存储器请求包。

进一步地,所述接收模块,在丢弃所述事务层包时,告知所述配置接口模块,所述配置接口模块生成不支持完成包并发送到所述发送模块。

进一步地,所述端口配置为下游端口时,所述接收模块接收所述事务层包,由端口控制器进行处理,也可将所述事务层包转发到所述交叉开关或丢弃;

当所述的下游端口控制器发送模块接收的类型1配置请求包的目的身份标识(identification,id)的总线号等于所述下游端口的次级总线号时,所述的发送模块则将接收到所述交叉开关发送的类型1配置请求包修改为类型0配置请求包,否则不修改所述类型1配置请求包,直接转发。

进一步地,所述端口配置为上游端口时,所述配置接口模块根据反馈的读写操作结果生成对应的完成包,并发送到所述发送模块;

所述端口配置为下游端口时,所述配置接口模块将反馈的读写操作结果通过所述配置模块发送到上游端口配置接口模块生成对应的完成包后发送到发送模块。

进一步地,所述端口配置为上游端口时,所述配置接口模块,

在接收到写操作的反馈结果时,生成完成包并注明写操作的完成状态;

在接收到读操作的反馈结果时,生成完成包并注明读操作的完成状态。

进一步地,所述eeprom控制器接口用于读取外接eeprom芯片中的配置信息并转发到所述配置模块。

更进一步地,所述eeprom控制器接口,在加载配置信息时,所述配置模块向每个所述端口发送链路使能无效信号,禁止所述端口的链路使能;所述eeprom控制器接口加载完成后,所述配置模块发送使能信号使每个所述端口链路使能。

为实现上述目的,本发明还提供一种pcie交换芯片端口配置方法,包括以下步骤,

1)通过eeprom控制器接口从外接eeprom读取端口配置寄存器配置信息,对寄存器配置模块进行写操作;

2)根据配置请求,对pcie交换芯片进行枚举和系统地址分配。

进一步地,所述步骤1)进一步包括:

在外接eeprom加载端口配置寄存器时,禁止端口链路使能;加载完成后,根据所述端口的配置值进行端口使能,将所述端口分为上游端口和下游端口;

进一步地,所述步骤1)进一步包括:

eeprom控制器接口从外接eeprom中读取各个端口待配置寄存器的配置信息,发送到配置模块;

配置模块接收来自eeprom控制器接口的配置信息,根据配置信息所含的配置端口号,发送到相应端口的端口控制器内的配置接口模块;

配置接口模块,对寄存器配置模块内的端口配置寄存器进行写操作,完成状态通过配置接口模块和配置模块反馈给eeprom控制器接口。

进一步地,进一步包括,在外接eeprom加载端口配置寄存器时,配置模块通过发送到每个端口的端口控制器的链路使能无效信号,禁止每个端口的链路使能;eeprom加载完成后,配置模块读取相连的上游端口指示寄存器、端口使能寄存器,判断端口是上游端口还是下游端口,判断端口是否使能,向使能的端口发出相应端口控制信号,设置上游端口和下游端口,让每个使能端口的链路使能,使相应端口开始链路训练和初始化,训练和初始化完成后每个使能端口的链路建立链接,能够收发事务层数据包。

进一步地,所述步骤2)进一步包括:

上游端口控制器接收的请求数据包为类型0配置请求时,上游端口控制器的接收模块提取数据包头,对接收的配置请求进行分析;

如果配置请求访问的目的设备号为0,接收模块提取配置请求中的配置信息,并发送到配置接口模块;

配置接口模块根据接收的配置信息读或写寄存器配置模块内的端口配置寄存器,读或写操作的结果反馈给配置接口模块;

如果是写操作,并且写成功,配置接口模块生成一个完成包,并在完成包的完成状态中注明写正常完成,如果是写失败,配置接口模块生成一个完成包,并在完成包的完成状态中注明写失败的原因;

如果是读操作,并且读成功,配置接口模块将读得的数据封装成一个完成包,并在完成包的完成状态中注明读正常完成;如果是读操作,但读失败,配置接口模块生成一个完成包,并且在完成包状态中注明读失败的原因;

上游端口控制器接收的请求数据包为存储器请求包时,上游端口控制器的接收模块提取数据包头,对接收的配置请求进行分析;

如果配置请求访问的存储器地址为端口0配置寄存器的系统地址,接收模块提取配置请求中的配置信息,并发送到配置接口模块;

配置接口模块根据接收的配置信息读或写寄存器配置模块内的端口配置寄存器,读或写操作的结果反馈给配置接口模块;

如果是写操作,不管是写操作是否成功,都不生成完成包;

如果是读操作,并且读成功,配置接口模块将读得的数据封装成一个完成包,并在完成包的完成状态中注明读正常完成;如果是读操作,但读失败,配置接口模块生成一个完成包,并且在完成包状态中注明读失败的原因;

配置接口模块将生成的完成包发送给端口控制器的发送模块,通过发送模块发送到上游端口的输出链路。

进一步地,所述步骤2)进一步包括:

上游端口控制器接收的请求数据包为类型1配置请求包时,则提取数据包头,对接收的配置请求进行分析;

如果该配置请求的目的总线号等于上游端口的次级总线号,端口接收模块就将从包头中提取的配置信息发送到配置接口模块,配置接口模块再将配置信息发送到配置模块,需要配置的端口号由配置信息中的目的设备号指定,配置信息中的目的设备号为需要配置的端口号;

配置模块根据配置信息中的目的设备号找到需要配置的端口号,将配置信息发送到对应的下游端口控制器的配置接口模块,配置接口模块根据接收的配置信息,对寄存器配置模块内的端口配置寄存器进行读或写操作,并将反馈得到的完成数据和完成状态发送到配置模块,由配置模块发送到上游端口的配置接口模块;

如果配置的端口号不存在,配置模块则返回一个不支持状态给上游端口配置接口模块;

上游端口配置接口模块接收到配置模块的完成数据和完成状态,封装成完成包,发送到上游端口的发送模块,通过发送模块发送到上游端口的输出链路。

进一步地,所述配置信息包括待配置寄存器的设备号或端口号、寄存器编号、读写指令和写数据。

进一步地,所述步骤2)进一步包括:

上游端口控制器接收的请求数据包为存储器请求包时,则提取数据包头,对接收的配置请求进行分析;

如果该存储器请求包的目的地址等于某个下游端口寄存器的系统地址,上游端口控制器接收模块就将从包头中提取的配置信息发送到配置接口模块,配置接口模块再将配置信息发送到配置模块,需要配置的端口号从配置信息的目的地址提取;

配置模块根据配置信息中的目的设备号找到需要配置的端口号,将配置信息发送到对应的下游端口控制器的配置接口模块,配置接口模块根据接收的配置信息,对寄存器配置模块内的端口配置寄存器进行读或写操作,读操作会有反馈,写操作不会有反馈,将读反馈得到的完成数据和完成状态发送到配置模块,由配置模块发送到上游端口的配置接口模块;

上游端口配置接口模块接收到配置模块的完成数据和完成状态,封装成完成包,发送到上游端口的发送模块,通过发送模块发送到上游端口的输出链路。

进一步地,所述步骤2)进一步包括:

上游端口控制器接收的请求数据包为类型1配置请求包,并且请求的目的总线号等于下游端口的次级总线号时,接收模块将该类型1配置请求包发送到交叉开关,通过交叉开关发送到对应下游端口的发送模块;

下游端口的发送模块对所述类型1配置请求包进行分析,如其目的总线号等于其端口次级总线号,则将所述类型1配置请求包修改为类型0配置请求包,并发送到下游端口的输出链路上,否则不对类型1配置请求包做任何修改,直接转发。

更进一步地,所述步骤2)进一步包括:

端口控制器将接收的非配置请求包通过交叉开关发送到对应输出端口控制器的发送模块,由所述输出端口控制器的发送模块进行处理后再经物理层发送到端口的输出链路。

为实现上述目的,本发明还提供一种pcie交换芯片可读存储介质eeprom,其上存储有配置信息,所述配置信息运行时执行如上文所述的pcie交换芯片端口配置方法步骤。

本发明提供的一种pcie交换芯片端口配置系统和方法,具有以下有益效果:

1)按照该机制设计的pcie交换芯片,可以确保快速完成端口配置,满足pcie协议对于pcie芯片初始化的时限要求。

2)结构简单,实现逻辑也很简单,实现起来方便。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,并与本发明的实施例一起,用于解释本发明,并不构成对本发明的限制。在附图中:

图1为根据本发明的pcie交换芯片端口配置系统结构示意图;

图2为根据本发明的八端口pcie交换芯片端口配置系统简化结构示意图。

具体实施方式

以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

实施例1

图1为根据本发明的pcie交换芯片端口配置系统结构示意图,如图1所示,本发明的pcie交换芯片端口配置系统,主要包括,交换芯片内核、端口控制器,还包括eeprom控制器接口模块。该系统中,pcie交换芯片外接一片eeprom,通过外接的eeprom对其进行初始化加载。一般情况下,pcie交换芯片端口配置系统有n个端口,其中n为不小于三的自然数,每个端口通过其入口侧物理层和端口控制器输入侧从外界pcie链路接收数据,接收的数据由端口控制器直接处理,接收端口控制器还可以根据情况将接收的数据包转发给交换芯片内核,再由交换芯片内核转发到其它端口的端口控制器,对其它端口进行配置,或通过其它端口控制器输出侧的发送模块发送到端口控制器的输出侧物理层,再通过其出口侧物理层发送到外界pcie链路,访问端口的配置请求包或存储器请求包只能来自pcie芯片的上游链路。

本发明的实施例中,交换芯片内核,主要包括,交叉开关(crossbar)和配置模块,其中,

交叉开关用于穿越pcie交换芯片的事务层包(transactionlayerpacket,缩写为tlp)转发;

配置模块,用于对端口配置寄存器进行配置,并根据端口配置寄存器的配置值,让相应端口使能,并置某个使能的端口为上游端口,其它使能的端口为下游端口,同时控制每个端口链路建立链接的时机。

本发明的实施例中,pcie交换芯片端口配置系统的任何端口都可以被配置为上游端口。

端口控制器,主要包括,接收模块,配置接口模块、寄存器配置模块,以及发送模块。

本发明的实施例中,端口配置寄存器位于寄存器配置模块中,并通过寄存器配置模块进行读写。

本发明的实施例中,端口控制器的接收模块接收事务层包,提取其包头,对包头进行分析,根据分析的结果对包进行处理,其对包的处理有三种方式,分别为:转发、接收、丢弃。转发的途径有两条:发送到交叉开关,或发送到配置模块。如果是发送到配置模块,则只需要从事务层包中提取配置信息,将读或写端口配置寄存器使用的配置信息转发到配置模块即可,不需要转发整个事务层包。如果是发送到交叉开关,则发送的时候不对事务层包进行修改,属于透明转发。只有在一个端口作为上游端口使用时,其端口控制器的接收模块对接收的包才有上述三种处理方式。下游端口接收的数据包不会发送到配置模块,当一个端口作为下游端口使用时,其端口控制器的接收模块不会从下游链路接收到类型0或类型1配置请求包,也不会从下游链路接收到访问pcie交换芯片任意端口配置寄存器的存储器请求包,如果接收到这三种类型的请求包,应该丢弃,此外下游端口控制器将接收的穿越pcie芯片的数据包转发到交叉开关。

本发明的实施例中,当端口作为上游端口使用时,其端口控制器接收来自上游链路的类型0或类型1配置请求包和存储器请求包,并从类型0配置请求包和存储器请求包中提取读或写本端口配置寄存器使用的配置信息发送到配置接口模块,配置接口模块根据配置信息对寄存器配置模块中的端口配置寄存器进行读或写操作,读或写操作的结果反馈给配置接口模块。配置接口模块必须为读写本端口的类型0配置请求或存储器读请求生成一个完成包,并在完成包的完成状态中注明读或写是否成功,如果失败需要注明失败的原因。配置接口模块将生成的完成包发送给pcie端口控制器的发送模块,通过发送模块发送到上游链路。

本发明的实施例中,不管是作为上游端口还是下游端口,如果相应端口控制器的接收模块通过分析接收的包头,必须丢弃接收的数据包时,必须告知配置接口模块,由配置接口模块发送一个不支持完成包到发送模块,由发送模块发送到原端口控制器的输出侧,再通过输出侧物理层发送到原端口的输出链路。

本发明的实施例中,当端口作为上游端口使用时,其接收模块接收自上游端口的访问本芯片下游端口的所有类型1配置请求包和存储器请求包,并从中提取读或写下游端口配置寄存器使用的配置信息发送到配置接口模块,通过配置接口模块发送到配置模块。此外,上游端口的端口控制器的发送模块接收来自交叉开关、以及配置接口模块的数据包,并将其发送到上游链路。

本发明的实施例中,当端口作为下游端口使用时,其端口控制器的发送模块接收来自交叉开关的数据包,并将其发送到下游端口的输出链路。下游端口控制器的配置接口模块接收来自配置模块的配置信息,并根据配置信息对寄存器配置模块内的相应端口配置寄存器进行读或写操作,并将配置反馈的完成数据通过配置接口模块发送到配置模块,由配置模块发送到上游端口控制器的配置接口模块,由上游端口的配置接口模块生成完成包,并将完成包发送到发送模块,由发送模块发送到上游端口输出链路。

本发明的实施例中,端口控制器的接收模块将需要穿过交换芯片的事物层数据包发送到交叉开关,通过交叉开关发送到相应的输出端口控制器的发送模块,再通过输出端口控制器的发送模块发送到输出链路。下游端口控制器的发送模块,将来自交叉开关的类型1配置请求包修改为类型0配置请求包,如果该包的目的方为该下游端口外接的端点或外接的交换芯片或桥的上游端口。

本发明的实施例中,配置模块和每个端口的配置接口模块相连以及eeprom控制器接口模块相连,除此之外,也和寄存器配置模块中的某些端口配置寄存器直接相连,从而直接读取这些相连的端口配置寄存器的值。根据相连端口配置寄存器的值,给每个端口控制器发送相应的控制信号,从而决定它们是否使能,是否作为上游端口使用,何时让相应端口的链路使能,进行链路训练和初始化,从而建立链接。

本发明的实施例中,端口配置寄存器的配置数据有两个来源,一个是pcie芯片从上游端口接收的类型0或类型1配置请求和存储器请求,一个是外接的eeprom。对于下游端口来说,当两种配置方式都有效的时候,配置模块对来自上游端口配置接口模块和eeprom控制器接口的配置信息进行仲裁,优先选择来自eeprom控制器接口的配置信息,发送到下游端口控制器的配置接口模块,后者对下游端口配置寄存器配置模块内的端口配置寄存器进行读或写操作,并将需要反馈给eeprom控制器接口模块的完成状态信息通过配置接口模块反馈给配置模块,配置模块再将其发送给eeprom控制器接口模块。

本发明的实施例中,对于上游端口来说,如果两种配置方式都有效的时候,配置接口模块优先选择来自配置模块的eeprom配置信息。配置接口模块根据配置信息对上游端口的寄存器配置模块内的端口配置寄存器进行读或写操作。配置接口模块从寄存器配置模块接收完成状态信息,将反馈给eeprom控制器接口模块的完成状态信息通过配置接口模块反馈给配置模块,配置模块再将其发送给eeprom控制器接口模块。

本发明的实施例中,eeprom加载过程中,配置模块通过将发送到每个端口的链路使能信号无效,禁止每个端口的链路使能,eeprom加载完成后,配置模块将各个使能端口的链路使能,让各个链路开始链路训练和初始化,从而建立链接。

图2为根据本发明的八端口pcie交换芯片端口配置系统简化结构示意图,如图2所示,本发明的八端口pcie交换芯片端口配置系统外接一片用来加载端口配置寄存器的eeprom芯片。本领域的普通技术人员将认识到,也可以对此示意图中的某些细节进行修改。

本发明的实施例中,配置模块和每个端口控制器有两个接口,一个为数据总线接口e,另一个为数据总线接口d。当一个端口配置为上游端口时,它的配置接口模块通过数据总线接口e向配置模块发送配置信息,并通过数据总线接口e接收配置模块反馈的完成数据。经配置模块发给端口控制器的配置信息通过数据总线接口d发送给配置接口模块,由配置接口模块,对寄存器配置模块中的配置寄存器进行读或写操作,反馈给配置接口模块的完成数据或完成状态,再通过数据总线接口d反馈给配置模块。配置模块还和寄存器配置模块中的上游端口号指示寄存器、端口使能寄存器和链路使能寄存器等部分寄存器直接相连。

实施例2

pcie交换芯片端口配置系统,其端口配置实现机制详细的处理流程如下:

pcie交换芯片上电,从外接eeprom中读取配置信息,并发送到配置模块。

在该步骤中,pcie交换芯片在上电过程中,如果判断存在外接的eeprom芯片,并且从eeprom读得的第一个字节为5ah,说明eeprom不为空,eeprom控制器接口模块则从外接eeprom中读取各个端口配置寄存器的配置信息,发送到配置模块。

配置模块接收来自外接eeprom控制器接口的配置信息,根据其配置的端口号,通过数据总线接口d发送到相应端口的端口控制器内的配置接口模块,由配置接口模块,对寄存器配置模块内的端口配置寄存器进行写操作,完成状态反馈给配置接口模块,配置接口模块再通过数据总线接口d反馈给配置模块,配置模块再反馈给eeprom控制器接口模块。

在外接eeprom加载端口配置寄存器过程中,配置模块通过将发送到每个端口的端口控制器的链路使能信号无效,禁止每个端口的链路使能,eeprom加载完成后,配置模块通过相连的上游端口指示寄存器、端口使能寄存器,判断出哪个端口是上游端口,哪些端口是下游端口,哪些端口使能,从而给相应端口发出相应端口控制信号,设置上游端口、下游端口,让各个使能端口的链路使能,从而让它们开始链路训练和初始化,训练完成后每个使能端口的链路建立链接,能够收发事务层数据包。

通过pcie交换芯片上游端口接收主机的中央处理器的指令,启动对pcie交换芯片和pcie交换芯片外接设备的枚举。

枚举过程遵循pcie协议的规定。如果是类型0配置请求,上游端口控制器的接收模块提取数据包头,对接收的配置请求进行分析,如果配置请求访问的目的设备号等于0,说明该配置请求的目的端口号就是本端口,接收模块就提取配置请求中的配置信息,并发送到配置接口模块,配置接口模块根据接收的配置信息读或写寄存器配置模块内的端口配置寄存器,读或写操作的结果反馈给配置接口模块。如果是写操作,并且写成功,配置接口模块必须生成一个完成包,并在完成包中注明写操作正常完成。如果写失败,配置接口模块必须生成一个完成包,并在完成包的完成状态中注明写失败的原因。如果是读操作,并且读成功,配置接口模块将读得的数据封装成一个完成包,并在完成包的完成状态中指明读操作正常完成。如果是读操作,但读失败,配置接口模块必须生成一个完成包,并且在完成包状态中注明读操作失败的原因。如果上游端口接收的类型0配置请求访问的目的设备号不等于0,上游端口控制器就丢弃该包,同时上游端口控制器的配置接口模块也会生成一个完成包,注明不支持该配置请求。配置接口模块将生成的完成包发送给pcie端口控制器的发送模块,通过发送模块发送到上游端口的输出链路。

如果上游端口控制器接收模块接收到类型1配置请求包,它提取数据包头,对接收的配置请求进行分析,如果该请求的目的总线号等于上游端口的次级总线号,上游端口接收模块就将从包头中提取的配置信息发送到配置接口模块,配置接口模块再通过数据总线接口e将配置信息发送到配置模块。配置模块根据配置信息中的设备号,找到需要配置的端口号,需要配置的端口号应该等于配置信息指定的设备号,如果配置的端口号存在,配置模块就将配置信息通过数据总线接口d发送到对应的下游端口控制器的配置接口模块,配置接口模块根据接收的配置信息,对寄存器配置模块内的端口配置寄存器进行读或写操作,并将反馈得到的完成数据和完成状态发送到配置模块,由配置模块通过数据总线接口e发送到上游端口的配置接口模块。如果配置的端口号不存在,配置模块就通过数据总线接口e返回一个不支持状态给上游端口配置接口模块。上游端口配置接口模块接收到配置模块的完成数据和完成状态,封装成完成包,发送到上游端口的发送模块,通过发送模块发送到上游端口的输出链路。

如果上游端口控制器接收模块接收的是类型1配置请求包,并且请求的目的总线号等于某个下游端口的次级总线号,接收模块就直接将该类型1配置请求包发送到交叉开关,通过交叉开关发送到该下游端口的端口控制器发送模块,端口控制器发送模块对数据包进行分析,发现其目的总线号等于其端口次级总线号,就将该类型1配置请求包修改为类型0配置请求包,并发送到下游端口的输出链路上。

枚举完成之后,上游端口的主机除了为各个端口分配初级总线号(primarybusnumber)、次级总线号和下属总线号(subordinatebusnumber)以外,通过各个端口的基址寄存器,为pcie交换芯片分配了系统地址。

枚举之后,上游端口控制器接收模块接收到来自上游链路的存储器请求包时,提取数据包头,进行分析。如果该存储器请求包是对上游端口配置寄存器进行读写的,接收模块从包中提取配置信息,发送到配置接口模块,后续处理过程和类型0配置请求处理过程一样。如果该存储器请求包是对下游端口配置寄存器进行读写的,接收模块也从包中提取配置信息,发送到配置模块,后续处理过程和上述枚举过程中对下游端口进行配置的类型1配置请求包的处理过程一样,在此不再赘述。此外,交换芯片下游端口控制器会丢弃从下游端口链路接收的访问芯片任意端口配置寄存器的请求包。

上游端口控制器的接收模块接收类型0、类型1和存储器请求包之外,还接收其它类型的包,对于穿越pcie芯片的数据包,直接发送到交叉开关,通过交叉开关发送到对应的输出端控制器的发送模块,发送模块根据情况对其进行处理之后,通过物理层发送到端口的输出链路。

本发明提出了一种pcie交换芯片端口配置系统和方法,可以将任意端口配置为上游端口,支持通过外接eeprom存储器芯片对端口配置寄存器进行初始化加载,加载完成后,根据加载的配置数据让相应的端口使能和链路使能,从而进行链路训练和初始化。本配置机制能够快速实现pcie交换芯片的端口配置,满足pcie协议对于pcie芯片初始化的时限要求。

为实现上述目的,本发明还提供一种存储介质eeprom,其上存储有配置信息,所述配置信息运行时执行如上文所述的pcie交换芯片端口配置方法步骤。

本领域普通技术人员可以理解:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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