具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
实施例一
本发明实施例提供一种快速外设组件互连PCIE接口的链路重组方法,以下结合附图对本实施例进行详细说明。
图1为本实施例的方法流程图,本实施例的PCIE接口的链路重组方法应用于使用PCIE接口的任意设备,其中,应用本发明实施例的方法的PCIE接口设备作为主设备称为根联合体,与该主设备连接的从设备称为端点设备,如图1所示,本实施例的方法主要包括:
101:在PCIE接口链路重新初始化定向时,如果根联合体发现存在通过所述PCIE接口与其物理连接的端点设备,且与所述端点设备之间的链路的电气功能完好,则为连接到所述端点设备的链路的可用通道分配通道号;
102:根联合体利用分配好通道号的可用通道与所述端点设备进行数据传输。
在本实施例中,如果根联合体与端点设备之间的PCIE接口中出现了链路通道lane的损坏,则会重新进行一次链路初始化定向,在进行PCIE接口链路的重新初始化定向过程中,根联合体不仅要通过检测来测试该根联合体是否存在远端连接的端点设备,通过轮询来测试该根联合体与端点设备之间的链路的电气功能是否完好,还要为该PCIE接口上可用的链路通道重新分配通道号,进而根据重组后的链路与端点设备进行数据的传输,达到提高PCIE接口链路的利用率的目的。
其中,检测和轮询的过程都属于现有技术,在此不再赘述。
另外,根据重组后的链路与端点设备进行数据的传输还包括了一些状态的设置和管理,例如恢复(执行通道到通道的相位补偿)、L0(发送并接收处理层数据包TLP(Transaction Layer Packet)、数据链路层数据包DLLP(DataLink Layer Packet))、L0S(低功耗的、活动电源管理状态)、L1(电源管理状态)、L2(电源管理状态)、HOT复位、回环(测试和故障隔离)和禁用(禁用已配置的链路)等,这也是PCIE协议本身所具有的内容,在此不再赘述。
通过本发明实施例的方法,最大限度的使用PCIE接口链路的自适应重组,合理的利用了协议的规定,使得链路的利用率提高,保证了***通过PCIE接口传输数据的稳定性、不中断性,避免了***整体死机。
实施例二
本发明实施例还提供一种PCIE接口的链路重组方法,以下结合附图对本实施例进行详细说明。
图2为本实施例的方法流程图,本实施例的方法应用于使用PCIE接口的任意设备,在本实施例中,以PCIE接口为X16链路为例加以说明,也就是说,该X16链路具有16条链路通道,如图2所示,本实施例的方法包括:
201:如果PCIE接口链路中出现了链路通道损坏,则对所述PCIE接口链路进行重新初始化定向;
其中,链路初始化定向是配置和初始化设备物理层、端口和相关链路的物理层控制,使链路可传送正常的数据包流量。
一般情况下,PCIE接口在工作时,先进行链路初始化定向,通过链路初始化定向,为PCIE接口的每条链路通道分配一个链路号和通道号,如图3所示,该PCIE接口的通道号从左至右分别为lane0到lane15,链路号与通道号对应。而当数据传输中断,或者出现出错告警提示信息等时,则判断为PCIE接口链路出现了通道损坏,在这种情况下,都会重新进行链路初始化定向,以确认该PCIE接口链路是否确实发生了通道损坏。当重新初始化定向达到预定次数后,如果仍不能恢复数据传输,或仍然出现出错告警提示信息等而不能进行数据传输,则判断为该PCIE接口损坏。
202:在PCIE接口链路重新初始化定向时,通过检测来测试是否存在通过所述PCIE接口相互连接的端点设备,并通过轮询来测试与所述端点设备之间的链路的电气功能是否完好,当存在通过所述PCIE接口进行物理连接的端点设备且与端点设备的电气功能完好时,则执行步骤203;
其中,电气功能包含了电流、差动电压和锁相环(提供时钟功能)等硬件功能,在此不再赘述。
203:为连接到所述端点设备的链路的可用通道分配通道号;
其中,为连接到所述端点设备的链路的可用通道分配通道号可以通过图4所示的步骤完成,如图4所示,该过程包括:
401:确认与所述端点设备连接的PCIE接口的可用通道,然后对所述PCIE接口上的可用通道进行通道编号;
在一个实施例中,可以通过向端点设备发送训练序列TS1有序集,确认与所述端点设备连接的PCIE接口的可用通道。
通过发送TS1有序集,没有损坏的链路通道接收到TS1有序集后,发送一个反馈消息,这样就能够确认与所述端点设备连接的PCIE接口的可用通道。需要说明的是,在一个实施例中,TS1可以如PCIE标准中的定义所述,在另一个实施例中TS1也可以为预先设定的有序的数据包序列。
需要说明的是,在一个实施例中,可以对通道所在的链路重新进行链路编号,在另一个实施例中也可以不对通道所在的链路进行链路编号,即使用原来的链路号。
402:根据该根联合体的PCIE接口的带宽以及所述端点设备的PCIE接口的带宽,确定该根联合体与所述端点设备之间的总链路宽度;
由于根联合体和端点设备的带宽可能不一致,因此,在本步骤中,还要进一步确认该根联合体与端点设备的总链路宽度。
这里需要说明的是,根联合体的PCIE接口的带宽和与其连接的端点设备的PCIE接口的带宽有可能是不同的,这时候就需要确定较小的PCIE接口的带宽,作为根联合体和与其连接的端点设备之间的总链路宽度。
例如,在一个实施例中,根联合体的PCIE接口带宽为2G,与其连接的端点设备的PCIE接口带宽为1.6G,则确定1.6G作为根联合体和与其相连的端点设备之间的总链路宽度。
在另一个实施例中,根联合题的PCIE接口带宽为1G,与其连接的一个端点设备的PCIE接口带宽为1.5G,则确定1G作为该根联合体和该端点设备之间的总链路宽度;如果与根联合体相连接的另一个端点设备的PCIE接口带宽为0.8G,则确定0.8G作为根联合体和该另一个端点设备之间的总链路宽度。
403:根据根联合体和与其连接的端点设备之间的总链路宽度,确认该根联合体与所述端点设备之间的每条可用通道的链路宽度。
在一个实施例中,根据根联合体和与其连接的端点设备之间的总链路带宽,可以通过向端点设备发送培训序列TS2有序集,确认该根联合体与所述端点设备之间的每条可用通道的链路宽度。
通过发送TS2有序集,每条可用通道接收到TS2有序集后,发送一个反馈消息,反馈消息在一个实施例中可以包含这条通道传输的数据类型,在另一个实施例中也可以包括这条链路的业务类型或者数据量等信息,这样根据反馈消息就和总的链路宽度就能够确定出每条可用通道的链路宽度。
例如,在一个实施例中,假设有两条可用通道,一条主要用来传输图像数据,一条主要用来传输视频数据,总的链路宽度为2G。那么可以根据反馈消息得知每条链路传输的数据的主要类型或者内容,根据每条可用通道传输的数据的内容的不同,确定每条可用通道的链路宽度,这样就可以给主要传输图像数据的通道分配少一点的链路宽度,比如为0.5G,给主要传输视频数据的通道分配多一点的链路宽度,比如1.5G。
需要说明的是,在一个实施例中,TS1可以如PCIE标准中的定义所述,在另一个实施例中TS1也可以为预先设定的有序的数据包序列。
由于根联合体和端点设备的带宽可能不一致,再加上PCIE接口的某些链路已经损坏,因此,在本步骤中,还要通过向端点设备发送培训序列TS2有序集,进一步确认该根联合体与端点设备之间的每条可用通道的链路宽度。
图4所示的过程为PCIE接口链路损坏后的链路重新training的过程,通过重新定义排列通道号,将没有损害的链路再次利用起来,最大限度的提高PCIE接口链路的利用率。
204:利用分配好通道号的可用通道与所述端点设备进行数据传输。
在本实施例中,根据步骤201,当PCIE接口存在链路损坏时,例如lane0或lane15损坏,则重新进行链路初始化定向,在该重新进行的链路初始化定向过程中,当通过步骤202的检测过程和轮询过程确认存在通过所述PCIE接口进行物理连接的端点设备,且与所述端点设备的电气功能完好时,还要通过步骤203对该PCIE接口上可用的通道进行通道号的重新分配,让其余没有损坏的通道进行一次重排序,例如,将原来的通道lane1变为通道lane0,依此类推,这样,即便由于PCIE接口物理链路中某些通道损坏了,只要其中还有通道是完好的,那么就可以不间断的将数据传输完毕,并不会造成***的死机。
通过本发明实施例的方法,最大限度的使用PCIE接口链路的自适应重组,合理的利用了协议的规定,使得链路的利用率提高,保证了***通过PCIE接口传输数据的稳定性、不中断性,减少了***整体死机的概率。
实施例三
本发明实施例还提供一种PCIE接口的链路重组装置,以下结合附图对本实施例进行详细说明。
图5为本实施例的装置组成框图,本实施例的装置可以应用于任何使用PCIE接口的设备,如图4所示,本实施例的PCIE接口的链路重组装置主要包括:
配置单元51,用于在PCIE接口链路重新初始化定向时,如果存在通过所述PCIE接口进行物理连接的端点设备,且与所述端点设备之间的链路的电气功能完好时,为连接到所述端点设备的链路的可用通道分配通道号;
处理单元52,用于利用分配好通道号的可用通道与所述端点设备进行数据传输。
在本实施例中,配置单元51可以包括:第一确认模块511、分配模块512、第二确认模块513,第三确认模块514,其中,
第一确认模块511,用于确认与所述端点设备连接的PCIE接口的可用通道,例如通过向端点设备发送TS1有序集确认与所述端点设备连接的PCIE接口的可用通道。
分配模块512,用于在所述第一确认模块511确认与所述端点设备连接的PCIE接口的可用通道后,对所述PCIE接口上的可用通道进行通道编号。
需要说明的是,在一个实施例中,分配模块512还可以对通道所在的链路重新进行链路编号,在另一个实施例中分配模块512也可以不对通道所在的链路进行链路编号,即使用原来的链路号。
第二确认模块513,用于根据所述PCIE接口的带宽以及所述端点设备的PCIE接口的带宽,确认与所述端点设备之间的总链路宽度。
第三确认模块514,根据根联合体和与其连接的端点设备之间的总链路宽度,确认该根联合体与所述端点设备之间的每条可用通道的链路宽度
例如,第三确认模块514可以通过向端点设备发送TS2有序集来确认与所述端点设备之间的每条可用通道的链路宽度。
在本实施例中,该装置还可以进一步包括:
触发单元53,用于在PCIE接口中出现了通道损坏时,触发PCIE接口链路的重新初始化定向。
检测单元54,用于在进行PCIE接口链路的重新初始化定向时,测试是否存在通过所述PCIE接口进行物理连接的端点设备。
轮询单元55,用于在进行PCIE接口链路的重新初始化定向时,测试与所述端点设备之间的链路的电气功能是否完好。
本实施例的装置的各组成部分分别用于实现前述实施例的方法的各步骤,在方法实施例中已经对各步骤进行了详细说明,在此不再赘述。
通过本发明实施例的装置,在PCIE接口链路损坏时进行链路动态重组,提高了PCIE接口链路的可用性和可靠性,最大限度的使用PCIE接口链路的自适应重组,合理的利用了协议的规定,使得链路的利用率提高,保证了***通过PCIE接口传输数据的稳定性、不中断性,减少了***整体死机的概率。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。