CN107423169B - 用于测试高速外围设备互连设备的方法和系统 - Google Patents

用于测试高速外围设备互连设备的方法和系统 Download PDF

Info

Publication number
CN107423169B
CN107423169B CN201611101616.3A CN201611101616A CN107423169B CN 107423169 B CN107423169 B CN 107423169B CN 201611101616 A CN201611101616 A CN 201611101616A CN 107423169 B CN107423169 B CN 107423169B
Authority
CN
China
Prior art keywords
pcie
devices
data processing
link
processing system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201611101616.3A
Other languages
English (en)
Other versions
CN107423169A (zh
Inventor
黄岱
克里希纳·埃朗戈
周旭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Baidu USA LLC
Original Assignee
Baidu USA LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Baidu USA LLC filed Critical Baidu USA LLC
Publication of CN107423169A publication Critical patent/CN107423169A/zh
Application granted granted Critical
Publication of CN107423169B publication Critical patent/CN107423169B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/221Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test buses, lines or interfaces, e.g. stuck-at or open line faults
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2221Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test input/output devices or peripheral units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2273Test methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Information Transfer Systems (AREA)

Abstract

提供了一种用于测试高速外围设备互连(PCIe)设备的方法和系统。在PCIe测试系统处实现的方法中,检测到一个或多个PCIe设备已经被插入到数据处理系统的一个或多个PCIe总线中;响应于该检测,PCIe测试系统扫描数据处理系统的所有PCIe总线,以发现一个或多个PCIe设备;对于所发现的PCIe设备中的每一个,PCIe测试系统修复和重新训练与PCIe设备相关联的PCIe链路,而不必重新启动数据处理系统;PCIe测试系统加载用于要由操作系统托管的PCIe设备的设备驱动器实例;然后,PCIe测试系统执行用于经由相应的设备驱动器实例并行测试一个或多个PCIe设备的测试例程。

Description

用于测试高速外围设备互连设备的方法和系统
技术领域
本发明的实施例一般地涉及计算机外围设备。更具体地,本发明的实施例涉及测试高速外围设备互连(PCIe)设备。
背景技术
高速数据通信是计算机系统中的突出因素。对于计算机系统和外围设备,需要更高带宽、更快速的互连技术。高速外围设备互连(PCIe)接口协议快速成为计算机工业中用于高速数据通信链路的广泛使用的标准。PCIe设备的生产流程通常涉及在制造设施中的生产线上进行的测试过程。因此,还需要优化这样的测试过程以减少维持生产线的高产量所需要的测试时间,并且由此降低制造成本。
通常,当需要测试多个PCIe设备时,需要PCIe测试器一次测试一个PCIe设备。PCIe设备的测试过程通常涉及将待测试(DUT)PCIe设备插入到CPU服务器平台上的所选择的PCIe插槽中,接通服务器的电源以扫描和识别PCIe设备,然后分配和配置硬件资源(存储器、中断等)以与所识别的设备一起工作,安装低级设备驱动器以使得软件应用程序接口(API)能够调用PCIe设备,并且运行测试程序来执行针对PCIe设备的测试例程。然而,在运行测试程序之后,PCIe测试器需要关断服务器,拔出所测试的PCIe设备,并且准备待测试的第二PCIe设备。
因此,这些步骤中的每一个都是耗时的,并且由于硬件和/或软件限制而增加了制造成本。这样,克服所描述的缺点所需要的是用于并行测试一个或多个PCIe设备的有时间效率的方法。
发明内容
在本发明的第一方面,本发明提供一种用于测试高速外围设备部件互连PCIe设备的计算机实现的方法,所述方法包括:检测多个PCIe设备已经被插入到数据处理系统的一个或多个PCIe总线中;响应于所述检测,扫描所述数据处理系统的所有PCIe总线以发现所述多个PCIe设备;对于所发现的每个PCIe设备,修复和重新训练与所述PCIe设备相关联的PCIe链路,而不必重新启动所述数据处理系统,并且加载用于要由操作系统托管的PCIe设备的设备驱动器实例;以及执行用于经由相应的设备驱动器实例并行测试所述多个PCIe设备的测试例程。
在本发明的第二方面,本发明提供一种存储有指令的非暂时性机器可读介质,所述指令在由处理器执行时使得所述处理器执行用于测试PCIe设备的操作,所述操作包括:检测多个PCIe设备已经被插入到数据处理系统的一个或多个PCIe总线中;响应于所述检测,扫描所述数据处理系统的所有PCIe总线以发现所述多个PCIe设备;对于所发现的每个PCIe设备,修复和重新训练与所述PCIe设备相关联的PCIe链路,而不必重新启动所述数据处理系统,并且加载用于要由操作系统托管的PCIe设备的设备驱动器实例;以及执行用于经由相应的设备驱动器实例并行测试所述多个PCIe设备的测试例程。
在本发明的第三方面,本发明提供一种系统,包括:处理器;以及耦合到所述处理器的用于存储指令的存储器,当所述指令从所述存储器被执行时,使得所述处理器执行用于测试PCIe设备的操作,所述操作包括:检测多个PCIe设备已经被插入到数据处理系统的一个或多个PCIe总线中;响应于所述检测,扫描所述数据处理系统的所有PCIe总线以发现所述多个PCIe设备;对于所发现的每个PCIe设备,修复和重新训练与所述PCIe设备相关联的PCIe链路,而不必重新启动所述数据处理系统,并且加载用于要由操作系统托管的PCIe设备的设备驱动器实例;以及执行用于经由相应的设备驱动器实例并行测试所述多个PCIe设备的测试例程。
附图说明
在附图中通过示例而不是限制的方式说明本发明的实施例,在附图中相同的附图标记指示相同的元件。
图1是示出根据本发明的一个实施例的PCIe通信系统的示例的框图。
图2是示出根据本发明的一个实施例的用于测试PCIe设备的系统的示例的框图。
图3是根据本发明的一个实施例的用于测试PCIe设备的处理流程。
图4是根据本发明的一个实施例的用于测试PCIe设备的详细处理流程。
图5A-B是示出根据本发明的一个实施例的PCI配置空间头端的一个或多个寄存器的示例的框图。
图6是示出根据本发明的一个实施例的用于测试PCIe设备的方法的流程图。
图7是示出根据本发明的一个实施例的用于修复/重新训练PCIe链路的方法的流程图。
图8是示出根据一个实施例的数据处理系统的框图。
具体实施方式
参考以下说明的细节来描述本发明的各种实施例和方面,附图将图示各种实施例。下面的描述和附图说明本发明,并且不应当被解释为限制本发明。描述很多具体细节以提供对本发明的各种实施例的透彻理解。然而,在特定情况下,没有描述公知或常规细节,以便于提供对本发明的实施例的简明讨论。
在本说明书中所称的“一个实施例”或“实施例”是指结合实施例描述的具体特征、结构或特性可以被包括在本发明的至少一个实施例中。在说明书中各处出现的表述“在一个实施例中”不必全部指同一个实施例。
根据一些实施例,利用用于并行测试一个或多个PCIe设备的方法和系统。在一个实施例中,用于测试PCIe设备(也称为PCIe测试系统)的系统检测已经插入到数据处理系统的一个或多个PCIe总线中的一个或多个PCIe设备(例如,PCIe卡)。响应于该检测,用于测试PCIe设备的系统扫描数据处理系统的所有PCIe总线以发现该一个或多个PCIe设备。此外,对于所发现的PCIe设备中的每一个,测试系统在不重新启动数据处理系统的情况下,修复和重新训练与相应PCIe设备相关联的PCIe链路,然后加载用于要由操作系统(OS)托管的PCIe设备的设备驱动器实例。在一个实施例中,测试系统然后执行测试例程,以经由相应的设备驱动器实例来并行测试一个或多个PCIe设备。因此,该PCIe测试系统降低了制造成本和总测试时间,因为多个PCIe设备被并行测试,并且每单位的每个改进的百分点有助于总测试时间的减少。
此外,在一个实施例中,为了加载设备驱动器实例,PCIe测试系统向设备驱动器实例指派表示PCIe设备的逻辑设备标识符(ID),其中,逻辑设备ID是基于PCIe设备的总线编号、设备编号和/或功能编号中的一个或多个的组合而构造。在一个实施例中,设备驱动器实例利用逻辑设备ID来识别插入有PCIe设备的物理PCIe插槽,使得一个或多个PCIe设备可以被同时识别和测试。
根据一个实施例,响应于指示测试例程的执行已经完成的信号,PCIe测试系统卸载PCIe设备的设备驱动器实例。此外,PCIe测试系统与操作系统进行通信,以从操作系统的命名空间中移除PCIe设备,而不重新启动数据处理系统。在一个实施例中,PCIe测试系统可以显示用于提示用户(例如,测试者和操作者)可以从相应的PCIe插槽物理地移除PCIe设备的消息。
在一个实施例中,为了修复和重新训练与PCIe设备相关联的PCIe链路,PCIe测试系统在PCIe设备的第一PCIe链路控制寄存器中设置第一时钟配置比特,并且在耦合到PCIe设备的相应根复合体设备的第二PCIe链路控制寄存器中设置第二时钟配置比特,以恢复PCIe参考时钟配置。PCIe测试系统还可以在根复合体设备的第二PCIe链路控制寄存器中设置重新训练链路比特,以触发PCIe链路重新训练过程,恢复PCIe设备的PCIe设备控制寄存器的设置,并且清除在PCIe总线扫描期间报告的PCIe配置空间中的任何错误。在一个实施例中,PCIe测试系统然后将存储器地址设置从根复合体设备复制到PCIe设备的PCIe配置空间。
因此,并行测试多个PCIe设备的优点之一是其减少了与服务器平台相关的总资源、成本和时间消耗。这样,该PCIe测试系统提供过程和硬件机制的集合,其使得OS能够自动识别一个或多个PCIe设备,而不需要重新启动数据处理系统(例如,服务器)。根据一些实施例,PCIe测试系统可以在PCIe设备上提供热插拔能力,这通常是未实现的系统级选项,因为它需要在DUT和PCIe测试系统上构建专用硬件电路。因此,PCIe测试系统的热插拔能力提供了用于移除被测试的PCIe设备并且替换所需要的新的PCIe设备的有效机制,而不需要重新启动服务器。然而,在本文的实施例中描述的过程和硬件配置不需要完全的PCIe热插拔能力,但是需要在DUT上构建一些专用硬件电路,以支持在系统中热插拔PCIe设备。最后,PCIe测试系统所提供的另一优点是,它提供了在设备驱动器实例与其在数据处理系统中的实际物理位置之间的固定映射系统。这允许固定映射系统在OS中同时加载多个PCIe设备时对其进行区分,并且因此适当地记录多个PCIe设备的PCIe测试结果。
图1是示出根据本发明的一个实施例的PCIe通信系统的示例的框图。PCIe通信系统100可以被实现为系统200的一部分。如本文所使用的,“PCIe”是指用于基于点对点拓扑将计算机(也称为中央处理单元(CPU)、计算设备、服务器、数据处理系统等)连接到一个或多个外围设备(例如,PCIe设备111-114)的高速串行计算机扩展总线标准。这样,“PCIe测试系统”是指用于同时测试一个或多个PCIe设备的方法和/或系统。
如本文所使用的,PCIe测试系统还涉及下述测试配置:包括支持在一个或多个服务器(也称为服务器平台)上能够并行测试多个PCIe设备的硬件和/或软件部件。例如,硬件部件包括在印刷电路板(PCB)上的电路,其使得能够将一个或多个PCIe卡安全地热插拔到服务器的一个或多个PCIe插槽上。此外,例如,软件部件(也称为软件模块)包括使得OS能够在多个PCIe卡被热插入到服务器上时发现该多个PCIe卡的设备驱动器、脚本和/或测试操作过程。软件部件允许OS明确地识别和登记每个PCIe卡,修复和重新训练与一个或多个所发现的PCIe设备相关联的一个或多个PCIe链路,而不必重新启动服务器,并且执行测试例程以在一个或多个所发现的PCIe卡上并行测试。
现在参考图1,在一个实施例中,PCIe通信系统100包括但不限于,通信地耦合到CPU 101、存储器103、交换机104、PCIe桥105和PCIe端点设备111-114的根复合体102。此外,PCIe通信系统100包括一个或多个PCIe总线120a-c和121a-c、以及PCIe桥到PCI/PCI-X总线115,其动态地重新配置PCIe总线120c以提供在PCIe链路和PCI/PCI-X链路之间的连接。PCIe总线120-121用于连接PCIe端点设备111-114,但是被增强为使得可以检测PCIe端点设备(例如,PCIe端点设备111)的状态,并且如果该端点不需要,则重新路由用于该端点的带宽。此外,PCIe总线120-121是可以被称为互连或链路的逻辑连接,其用于连接一个或多个PCIe端点设备。链路是在两个PCIe端口之间的点对点通信信道,其允许两个端口发送和接收PCIe请求(例如,配置、IO或存储器读/写)和中断(例如,INTx、MSI或MSI-X)。在物理层,链路由一个或多个通道组成。例如,低速外围设备设备(例如,802.11Wi-Fi卡)使用单通道(×1)链路,而图形适配器通常使用更宽和更快的16通道链路。
在实施例中,PCIe通信系统100通常是个人计算机系统,但是可以是某呼入其他类型的数据处理系统,诸如服务器、工作站或嵌入式系统。如本文所使用的,“数据处理系统”可以包括任何工具或工具的聚合,其可操作为计算、分类、处理、传送、接收、检索、源发、切换、存储、显示、表明、检测、记录、再现、处理或利用任何形式的信息、智能或数据以用于商业、科学、控制或其他目的。例如,数据处理系统可以是服务器、个人计算机、网络存储设备或任何其他适当的设备。
此外,数据处理系统可以包括随机存取存储器(RAM),诸如CPU的一个或多个处理资源、硬件或软件控制逻辑、ROM和/或其他类型的非易失性存储器。数据处理系统的附加部件可以包括一个或多个磁盘驱动器、用于与外部设备通信的一个或多个网络端口、以及各种输入和输出(I/O)设备,诸如键盘、鼠标和视频显示器。信息处理系统还可以包括可操作为在各种硬件部件之间传送通信的一个或多个总线。
返回参考图1,CPU 101可以是任何中央处理设备,诸如图2中描述的处理器。CPU101可以被编程为至少执行具有基本输入/输出系统(BIOS)编程的操作系统(例如,图2的操作系统212)。在一个实施例中,根复合体102位于PCIe通信系统的树结构的最上层,并且分别通过系统总线(也称为前端总线)与CPU 101并且通过存储器总线与存储器103连接。在一个实施例中,存储器103可以表示或可以被包括作为如图2描述的存储器设备。
在一个实施例中,在根复合体102和PCIe端点设备111之间的通信中,交换机104可以是事务层分组(TLP)中继设备。如本文所使用的,“交换机”可以指多个虚拟PCIe桥设备(即,逻辑PCIe到PCIe桥)的逻辑组件,诸如通过使用用于接收、处理和转发到每个端点设备(例如,PCIe端点设备111-114)的数据的分组交换来控制多个点对点串行连接的网络交换机。例如,交换机104可以被配置为提供从根复合体102到链路121a-c的扇出,并且还提供链路扩展。
如本文所使用的,“链路扩展”指PCIe总线121的可用带宽被分配,使得每一个都具有符合PCIe架构标准尺寸的预定编号的链路121a-c被物理地路由到PCIe端点设备111-113。每个链路121a-c包括一个或多个通道。具有单个通道(也称为具有x1宽度)的链路具有两个低压差分对,并且是两个PCIe设备之间的双单工串行连接。两个PCIe设备之间的数据传输在两个方向上是同时的。可扩展性能通过更宽的链路宽度(x1,x2,x4,x8,x16,x32)来实现。链接被对称地调整,在每个方向上具有相同编号的通道。
根据一些实施例,PCIe总线121包括一个或多个链路121a-c,借助其连接PCIe端点设备111-113。在一个实施例中,根据系统100,PCIe端点设备114经由PCIe总线120c(不必使用交换机104)被连接到根复合体102。例如,如果系统100是台式计算机,则PCIe端点设备114可以是图形适配器、硬盘驱动器(HDD)(经由串行ATA链路)和本地I/O(经由USB链路)。对于服务器,PCIe端点设备114可以是千兆比特以太网(GbE)和/或附加的桥设备。
此外,在一个实施例中,PCIe端点设备111-114可以是使用PCIe卡插槽或其他连接机制来物理连接的外围设备或芯片。例如,PCIe端点设备111-114可以包括但不限于,移动对接适配器、以太网适配器、其他附加设备、千兆以太网连接、用于IO和群集互连的附加交换能力和/或线路卡。注意,PCIe端点设备可以表示如图2中描述的PCIe设备。
物理层包括用于接口操作的所有电路,包括驱动器和输入缓冲器、并行到串行和串行到并行转换、PLL和阻抗匹配电路。物理层还包括与接口初始化和维护相关的逻辑功能。物理层以特定实现的格式与DLL交换信息。物理层负责将从DLL接收的信息转换成适当的串行化格式,并且以与连接到链路另一侧的设备兼容的频率和宽度在PCIe链路上对其进行传送。注意,PCIe通信系统100可以包括一个或多个部件,并且具有一个或多个不同的配置。
图2是示出根据本发明的一个实施例的用于测试PCIe设备的系统配置的示例的框图。在一个实施例中,系统200包括但不限于,操作系统212。此外,根据在一个实施例,系统200包括操作系统212和存储器(未示出)(例如,图1的存储器103),其经由总线或互连通信地耦合到一个或多个PCIe设备(未示出)(例如,PCIe端点设备111-114)和处理器(未示出)(例如,图1的CPU 101)。在一个实施例中,系统200可以表示执行本文所述的过程或方法中的任何一个的数据处理系统。系统200可以被实现为集成电路(IC)、其一部分、分立电子设备或适配为PCB的其他模块,诸如计算机系统的主板或插入卡、或者以其他方式包含在计算机系统的机架内的部件。
根据一个实施例,处理器(未示出)可以表示包括有单个处理器核心或多个处理器核心的单个处理器或多个处理器。处理器可以表示一个或多个通用处理器,诸如微处理器、CPU等。更具体地,处理器可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或者实现其他指令集的处理器或者实现指令的组合的处理器。处理器还可以是一个或多个专用处理器,诸如专用集成电路(ASIC)、蜂窝或基带处理器、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器、图形处理器、网络处理器、通信处理器、加密处理器、协处理器、嵌入式处理器或能够处理指令的任何其他类型的逻辑。
在一个实施例中,可以是诸如超低电压处理器的低功率多核处理器插座的处理器可以用作与系统的各种部件通信的主处理单元和中央集线器。这样的处理器可以被实现为片上系统(SoC)。处理器被配置为执行用于执行本文所讨论的操作和步骤的指令。
根据一些实施例,系统200可以包括一个或多个PCIe设备(也称为PCIe端点设备)(未示出),其可以是使用卡插槽(例如,PCIe插槽)或其他链接机制物理地连接的一个或多个外围设备或芯片。如本文所使用的,“PCIe端点设备”是指终止PCIe链路的PCIe设备。PCIe端点设备具有对PCIe树拓扑的一个连接——但它可以具有对另一总线的连接。例如,PCIe端点设备可以是PCIe网卡、PCIe存储控制器等。PCI端点设备还可以用作对传统/兼容性总线的桥,例如PCIe到PCI桥或对低引脚数(LPC)总线的桥等。
此外,一个或多个PCIe设备可以经由PCIe总线(也称为互连)连接到存储器(未示出),PCIe总线可以包括交换机和/或链路(如图1所示)。PCIe设备(例如,设备保持器、IO模块或适配器)的具体类型可以取决于系统200的应用的类型。例如,对于台式计算机系统,典型PCIe设备的示例是移动对接适配器、以太网适配器和/或其他附加设备。例如,对于服务器平台系统,PCIe设备可以包括一个或多个千兆比特以太网连接以及用于IO和群集互连的附加交换能力。例如,对于通信平台系统,PCIe设备可以包括一个或多个线路卡。
在一个实施例中,一个或多个PCIe设备可以包括热切换保护设备,其在PCB上实现以在PCIe卡(未示出)被插入到PCIe设备的带电(未示出)PCIe插槽时限制对负载的浪涌电流。例如,该热插拔配置确保了当PCIe卡被热插拔时,不会由于热插拔事件产生电流和电压。热插拔硬件不需要符合PCI热插拔规范,包括提醒LED、提醒按钮、电源LED等。一个或多个PCIe设备可以用于托管一个或多个PCIe插件卡。一个或多个PCIe设备可以通过在一个或多个PCIe设备和可以位于存储器中的操作系统212之间匹配配对的连接器来热插拔。例如,电路板可以用于转换在一个或多个PCIe设备的PCIe插件卡与系统200的电缆连接器之间的信号。注意,在本申请中,PCIe设备用作IO卡(例如,PCIe卡)或外围设备的示例。然而,一个或多个PCIe设备也可以适用于其他类型的IO或外围设备,诸如PCI设备、PCI-X设备、通用串行总线(USB)设备等。
在一个实施例中,存储器包括但不限于,操作系统212。根据一个实施例,操作系统212包括但不限于,安装在其中的设备驱动器211和PCIe测试系统220。存储器可以包括一个或多个易失性存储(或存储器)设备,诸如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)或其他类型的存储设备。存储器可以存储包括由处理器(例如,图1的CPU 101)或任何其他设备执行的指令序列的信息。例如,来自操作系统212、设备驱动器211、固件(例如,输入输出基本系统或BIOS)和/或应用程序中的至少一个的可执行代码和/或数据可以被加载在存储器中并由处理器执行。
在一个实施例中,操作系统212可以是管理分配给存储器的资源的系统软件。例如,操作系统212可以包括一个或多个实用工具,其被配置为发现一个或多个PCIe设备(例如,图1的PCIe设备111-114)及其各自的根复合体,并且访问PCIe配置空间头端以便于读取所发现的PCIe设备的状态,并且修改所发现的PCIe设备的状态。此外,操作系统212执行基本任务,诸如例如控制和分配虚拟存储器、优先化指令的处理、控制虚拟化输入和输出设备(例如,PCIe设备)、促进联网、管理虚拟化文件系统等。操作系统212可以是任何类型的操作系统,诸如例如来自的
Figure BDA0001170575610000101
的Windows操作系统、来自苹果的
Figure BDA0001170575610000102
来自
Figure BDA0001170575610000103
Figure BDA0001170575610000104
或其他实时或嵌入式操作系统,诸如VxWorks。
根据一个实施例,操作系统212利用一个或多个设备驱动器211来与一个或多个PCIe设备交互。设备驱动器211可以是提供与同OS(例如,操作系统212)或其他应用软件的硬件设备(例如,图1的PCIe设备111-114)的交互的计算机软件。例如,由于设备驱动器的专门作用,设备驱动器通常是硬件相关的并且是操作系统相关的,其可以与操作系统的内核一起运行。
在一个实施例中,PCI测试系统220包括但不限于,设备发现模块221、测试模块222、测试脚本223、链路修复/重新训练模块224和驱动器安装模块225。模块221-222和224-225可以以软件、硬件或其组合来实现。在一个实施例中,设备发现模块221可以用于检测已经插入/重新插入到系统200的一个或多个PCIe总线(未示出)中的一个或多个PCIe设备。如本文所使用的,“发现的PCIe设备”是指已经被检测为插入/重新插入到PCIe总线中的PCIe设备。例如,设备发现模块221可以被配置为,当一个或多个PCIe卡被热插入到一个或多个PCIe设备的一个或多个PCIe总线/插槽时发现该一个或多个PCIe设备。在一个实施例中,设备发现模块221还可以用于扫描/重新扫描系统200的一个或多个PCIe总线,以在一个或多个新的PCIe设备已经被拔出并重新插入到一个或多个PCIe总线中之后发现该一个或多个新的PCIe设备。
在一个实施例中,链路修复/重新训练模块224可以用于重新训练和/或恢复与PCIe设备相关联的PCIe链路,其可能已经被重新插入到PCIe总线中和PCIe设备的根复合体中。例如,对于由设备发现模块221发现的PCIe设备中的每一个,链路修复/重新训练模块224可以修复和重新训练与PCIe设备相关联的PCIe链路,而不需要重新启动系统200。注意,在图7中进一步详细描述修复错误/状态和重新训练PCIe链路。
在一个实施例中,对于由设备发现模块221发现的每个PCIe设备,驱动器安装模块225可以用于加载用于要由操作系统212托管的所发现的PCIe设备的设备驱动器实例。为了加载设备驱动器实例,驱动器安装模块225可以将表示所发现的PCIe设备的逻辑设备标识符(ID)指派给设备驱动器实例,其中逻辑设备ID基于PCIe设备的总线编号、设备编号和/或功能编号中的一个或多个的组合来构建。根据一个实施例,驱动器安装模块225可以利用逻辑设备ID来识别插入有PCIe设备的独立物理PCIe插槽,使得可以并行识别和测试多个PCIe设备而不必重新启动系统200。
根据一个实施例,测试模块222可以用于执行测试例程(例如,测试脚本223),以经由驱动器安装模块225所安装的其相应的设备驱动器实例来并行测试一个或多个PCIe设备。此外,测试模块222可以向驱动器安装模块225发送指示测试例程的执行已经完成的信号,使得可以卸载PCIe设备的设备驱动器实例。在一个实施例中,测试模块222可以通知操作系统212以从操作系统212的命名空间中移除PCIe设备,而不必重新启动系统200。此外,当测试完成时,测试模块222可以被配置为经由系统200的用户接口(未示出)显示消息,以提示用户(例如,测试者)可以从相应的PCIe插槽物理地移除一个或多个PCIe设备。
这样,系统200的优点之一是其可以并行地自动识别和测试多个PCIe设备,而不必重新启动服务器,即必须断开服务器、拔出单个测试的PCIe设备、插入新的单个PCIe设备、接通服务器、重新启动操作系统等。因此,该优点提供了一种用于并行测试多个PCIe设备的方法,并且由此在生产流程期间使多个(N个)PCIe卡的测试时间显著降低N倍,其中测试时间直接有助于被部署的系统的总成本。
注意,系统200意在示出服务器或计算机系统的许多部件的高级视图。然而,应当理解,在特定实现中可以出现附加部件,并且此外,不同的部件布置可以在其他实现中实现。
图3是根据本发明的一个实施例的用于测试PCIe设备的处理流程。过程流程300可以由图2的系统200执行。此外,过程流程300还可以由可以以软件、固件、硬件或其任何组合实现的处理逻辑来执行。现在参考图3,处理逻辑在框305开始测试程序。测试程序可以包括一个或多个测试操作(也称为测试例程),以经由相应的设备驱动器实例并行地测试多个PCI设备。在框310,一个或多个PCIe卡被插入数据处理系统中。
在一个实施例中,在框315,处理逻辑扫描和识别插入操作系统中的一个或多个PCIe卡。例如,处理逻辑可以检测已经插入到数据处理系统的一个或多个PCIe总线中的一个或多个PCIe卡,扫描数据处理系统的所有PCIe总线以响应于检测来发现一个或多个PCIe,然后加载用于由操作系统托管的一个或多个所发现的PCIe设备的一个或多个设备驱动器实例。在框320,处理逻辑确定一个或多个PCIe卡是否被识别。例如,处理逻辑可以确定每个PCIe卡在操作系统中是否被唯一地区分和登记。如果处理逻辑识别了一个或多个PCIe卡,则处理逻辑在框325处并行地测试一个或多个所识别的PCIe卡。如果处理逻辑没有识别一个或多个PCIe卡,则处理逻辑在框335处记录一个或多个错误。
在框330,处理逻辑确定是否存在来自并行测试的一个或多个识别的PCIe卡的一个或多个错误。如果处理逻辑确定存在一个或多个错误(即,并行测试失败),则处理逻辑在框335记录一个或多个错误。如果处理逻辑确定不存在错误(即,并行测试通过),则处理逻辑进行到框340。例如,响应于指示测试程序的执行已经完成的信号,处理逻辑卸载PCIe卡的设备驱动器实例,并且与操作系统通信以从操作系统的命名空间移除PCIe卡,而不必重新启动数据处理系统。
此外,在框340,在框330处第一组PCIe卡的并行测试通过之后和/或在框335处记录了一个或错误之后,一个或多个PCIe卡被拔出,并且第二组一个或多个PCIe卡经由一次或多个热插拔被插入。例如,处理逻辑可以显示用于提示操作者可以从相应的PCIe插槽物理地移除PCIe卡的消息,以便于安装和测试第二组PCIe卡。而且,注意,链路修复/重新训练模块可以例如在框335处修复一个或多个记录的错误,诸如修复任何必要的PCIe配置设置并且使得PCIe配置设置在操作系统中可用。
图4是根据本发明的另一实施例的用于测试PCIe设备的处理流程。处理流程400可以由图2的系统200执行,以在PC中并行测试多个PCIe卡,而不断开并重新启动PC。此外,处理流程400还可以由处理逻辑来执行,其可以以软件、固件、硬件或其任何组合来实现。现在参考图4,操作者在框401处从PC(例如,服务器)的一个或多个PCIe总线清空一个或多个PCIe卡。基于在PC处被清空的一个或多个PCIe卡,操作者在框402处接通PC,并且启动PC的操作系统403。在框404,一个或多个PCIe卡被插入到PC的一个或多个PCIe总线中以供测试。
在一个实施例中,例如,处理逻辑在框405处扫描PC的一个或多个PCIe总线。此外,在框406,处理逻辑识别一个或多个PCIe卡和相应的PCIe设备属性(例如,PCIe卡和相应的根复合体的总线和设备编号)。例如,对于每个PCIe插槽,处理逻辑可以识别PCIe设备的总线编号、PCIe设备的设备编号、PCIe设备的PCIe桥的根复合体的总线编号、以及用于PCIe设备的PCIe桥的根复合体的设备编号。
在框407,处理逻辑修复一个或多个错误/状态,并且重新训练与一个或多个PCIe卡相关联的一个或多个PCIe链路,而不必重新启动PC。例如,处理逻辑可以访问PCIe配置空间,以便于读取PCIe设备的状态并且修改PCIe设备的错误/状态(如图7中进一步详细描述的)。在框408,处理逻辑建立与一个或多个PCIe卡相关联的一个或多个PCIe链路。此外,在框410,处理逻辑安装/加载用于要由操作系统托管的一个或多个PCIe卡的一个或多个设备驱动器实例。例如,为了安装设备驱动器实例,处理逻辑可以向设备驱动器实例指派表示PCIe卡的逻辑设备标识符(ID),其中逻辑设备ID是基于PCIe卡的总线编号、设备编号或功能编号中的一个或多个的组合来构建的。逻辑设备ID由设备驱动器实例利用以识别插入有PCIe卡的物理PCIe插槽,使得可以在框411处并行识别和测试一个或多个PCIe卡。
在框411,测试一个或多个PCIe卡。例如,执行测试例程以经由一个或多个相应的设备驱动器实例来并行测试一个或多个PCIe卡。基于测试完成412,在框413处,拔出一个或多个PCIe卡。结果,可以安装第二组一个或多个PCIe卡以经由一个或多个热插拔被测试,而不必断开PC并重新启动PC,并且由此返回到框404以插入并测试第二组PCIe卡。
图5A-B是示出根据本发明的一个实施例的PCI配置空间头端的一个或多个寄存器的示例的框图。现在参考图5A。图5A示出了PCIe配置空间头端500的一个或多个公共寄存器字段。这些寄存器被定义用于类型0和类型1配置空间头端。如本文所使用的,“PCIe配置空间”是指用于当PCIe卡被插入PCIe插槽/总线时执行PCIe卡的自动配置的PCIe方法。此外,例如,PCIe配置空间头端500包括设备ID寄存器、供应商ID寄存器、状态寄存器514、命令寄存器、基地址寄存器515、8比特容量指针寄存器501等。设备ID寄存器识别用于描述PCIe设备本身的唯一ID。供应商ID寄存器识别用于描述PCIe设备的源发者的唯一ID。此外,设备ID(DID)和供应商ID(VID)寄存器都用于识别PCIe设备,并且被统称为PCIe ID(或PCI ID)。例如,16比特供应商ID由PCI-SIG分配,并且然后16比特设备ID由供应商指派。
PCIe配置空间头端500包括头端表的顶部上的一组数字(例如,0、15、16和31),其标记在PCIe配置空间头端500的寄存器中的比特位置。此外,PCIe配置空间头端500包括在头端表的右侧的一组数字(例如,00h-3Ch)(未示出),其标记在PCI配置空间头端500中的寄存器的字节偏移右侧的一组数字。例如,为了寻址PCIe设备,它必须通过映射到系统的IO端口地址空间或内存映射地址空间来启用。例如,系统的固件、设备驱动器或OS(例如,图2的OS 212)对基地址寄存器(BAR)(例如,基地址寄存器515)进行编程,以通过将配置命令写入PCIe卡来识别PCIe设备的地址映射。这样,参考图2,PCIe测试系统200的处理逻辑可以,例如,用于发现一个或多个待测试(DUT)PCIe设备和相应PCIe设备的根复合体,以识别插入有或重新插入有PCIe设备的物理PCIe插槽,使得可以并行识别和测试一个或多个PCIe设备。注意,每个PCIe设备包括容量指针寄存器501,因为扩展PCIe设备(与PCI设备相比)的配置空间的方式是经由容量指针寄存器501。
现在参考图5B。图5B示出了位于PCIe设备配置空间头端500中指向PCIe配置空间扩展502(也称为PCI容量寄存器集合)的容量指针寄存器501。根据一些实施例,PCIe配置空间扩展502通常包括但不限于,PCIe容量寄存器、下一容量指针、PCIe容量ID,、设备容量寄存器、设备状态513、设备控制512、链路容量、链路状态、链路控制511、插槽容量、插槽状态、插槽控制、rsvdP、根控制、根状态等。例如,当启用PCI容量寄存器集合502时,其与由在PCIe设备配置空间头端500中的地址34h处的8比特容量指针501开始的链接列表(如图5A-B所示)相关联。注意,每个容量结构集合也具有唯一容量ID。
在一个实施例中,容量指针寄存器501通过在PCIe容量寄存器集合502的开始处使用8比特偏移(以字节为单位)来指向PCIe容量寄存器集合502的开始。偏移从PCIe设备配置空间的开始计算。该8比特偏移被存储在容量指针寄存器501中。PCIe容量寄存器集合502的位置是设备特定的。然而,PCIe容量寄存器集合502被置于PCIe设备配置空间500的前256个字节中,并且位于强制PCI头端之后。这样,继续参考图2的上述示例,PCIe测试系统200的处理逻辑还可以用于访问多个PCIe配置空间头端(例如,PCIe容量寄存器集合502和PCIe配置空间头端500),以便于读取PCIe和根复合体设备的状态,修改PCIe和根复合体设备的状态,和/或清除PCIe和根复合体设备的任何错误。
图6是示出根据本发明的一个实施例的用于测试PCIe设备的方法的流程图。例如,方法600可以由PCIe测试系统(例如,图2的PCIe测试系统220)执行。此外,方法600还可以由可以以软件、固件、硬件或其任何组合实现的处理逻辑来执行。现在参考图6,根据一个实施例,在框605,响应于检测到PCIe设备已经被插入到数据处理系统,处理逻辑扫描PCI总线以发现任何PCIe设备。例如,PCIe测试系统可以扫描/重新扫描一个或多个PCIe总线以发现是否有任何PCIe设备已经被插入/重新插入到PCIe系统的PCIe插槽中的一个。在框610,对于所发现的每个新PCIe设备中的每一个,处理逻辑识别PCIe设备的属性,诸如PCIe设备的总线编号、设备编号、根复合体编号、功能编号、状态等中的一个或多个的组合。
在框615,处理逻辑修复和/或重新训练与PCIe设备相关联的PCIe链路。例如,对于所发现的每个PCIe设备,PCIe测试系统可以重新训练和恢复在PCIe设备(例如,图1的PCIe端点设备111)和相应PCIe设备的根复合体(例如,图1的根复合体102)之间的PCIe链路。在框620,处理逻辑安装/加载用于要由操作系统托管的一个或多个所发现的PCIe设备的一个或多个设备驱动器实例,其包括指派总线编号、设备编号或功能编号中的一个或多个的组合作为逻辑PCIe设备ID。在框625,处理逻辑执行测试程序以对新发现的PCIe设备执行并行测试。在框630,响应于检测到测试已经完成,处理逻辑卸载/解除安装一个或多个设备驱动器。例如,一旦测试完成,处理逻辑终止来自/去往PCIe设备的所有数据业务,然后使用RMMOD命令来移除相应的PCIe设备驱动器实例。
在框635,处理逻辑指令操作系统以从操作系统名称空间中移除PCIe设备,而不必重新启动操作系统。例如,处理逻辑假设PCIe设备属于PCIe域0。注意,框635的逻辑操作(即,移除操作/命令)和框605(即,重新扫描操作/命令)允许OS的内核对PCIe设备循环供电,而不必重新启动数据处理系统。还注意,处理逻辑可以用于显示用于提示用户可以从相应的PCIe插槽物理地移除PCIe设备的消息。
图7是示出根据本发明的一个实施例的用于修复/重新训练PCIe链路的方法的流程图。在一个实施例中,方法700更详细地示出了PCIe测试系统如何修复错误/状态并重新训练更多PCIe链路。例如,方法700可以由PCIe测试系统(例如,图2的PCIe测试系统220)执行。此外,方法700还可以由可以以软件、固件、硬件或其任何组合实现的处理逻辑来执行。
现在参考图7,根据一个实施例,在框705,对于所发现的每个PCIe设备,处理逻辑在PCIe设备和相应的根复合体设备上的PCIe链路控制寄存器(例如,图5B的链路控制寄存器511)中设置“公共时钟配置”,以便于恢复PCIe参考时钟配置。例如,在PCIe设备被移除并重新插入PCIe插槽之后,“公共时钟配置”比特丢失。
在框710,处理逻辑在根复合体设备上的PCIe链路控制寄存器中设置“重新训练链路”比特,以触发PCIe链路重新训练。例如,在将PCIe设备重新插入PCIe插槽之后,需要设置“重新训练链路”比特。在框715,处理逻辑恢复PCIe设备控制寄存器(例如,图5B的设备控制寄存器512)的设置。例如,处理逻辑针对在PCIe设备上运行的给定应用恢复最大读取请求大小设置和最大净荷大小设置。注意,设置是应用特定的。例如,在框720之前,处理逻辑可以在用于相应PCIe设备的OS中重新安装PCIe设备驱动器实例。
在框720,处理逻辑清除在PCIe配置空间(例如,如图5A-B所示的状态寄存器513-514)上报告的任何一个或多个错误/状态(例如,使用SETPCI命令)。在框725,处理逻辑将存储器地址设置从根复合体设备复制到PCIe设备(例如,上行链路PCIe设备或父PCIe设备)。例如,对于所发现的每个PCIe设备,处理逻辑修改PCIe设备配置空间中的存储器地址设置,以匹配其相应的根复合体设备。此外,处理逻辑可以使用读取-修改-写入技术来清除在根复合体设备上的不可校正错误状态寄存器(例如,图5B的状态寄存器514)中设置的任何错误比特。处理逻辑还可以使用读取-修改-写入技术来清除在根复合体设备上的设备错误状态寄存器(例如,图5B的设备状态寄存器513)中设置的任何错误比特。继续上述示例,处理逻辑可以读取在根复合体设备中记录的用于要移除的先前PCIe设备的基地址寄存器(BAR),然后将其写回到新的PCIe设备的BAR,以恢复其BAR设置(例如,图5A的BAR 515)。注意,可以使用LSPCI命令来发现需要被发现的根复合体设备和PCIe设备中的确切BAR条目。还注意,在框725之后,处理逻辑可以执行用于经由相应的设备驱动器实例并行测试一个或多个所发现的PCIe设备的测试例程。
如上所述,可以使用一个或多个实施例来实现修复错误/状态和重新训练PCIe链路。在另一实施例中,处理逻辑可以设置高速PCI(PCIe)端点设备(EP)及其关联机柜根端口(RP)(也称为根复合体)的总线编号(B)和设备编号(D)。每个端点设备被插入PC主板上的特定物理PCIe插槽(S),该PC主板具有用于给定PC系统的固定B和D编号。
这样,处理逻辑可以针对给定插槽(S)设置这些参数:
EP_B[S]:端点设备的总线编号;
EP_D[S]:端点设备的设备编号;
RP_B[S]:端点设备的PCIe桥的根端口的总线编号;
RP_D[S]:端点设备的PCIe桥的根端口的设备编号。
此外,处理逻辑可以使用Linux OS中的lspci实用工具来发现待测试端点设备及其相关根复合体。处理逻辑还可以在Linux OS中使用setpci实用工具来访问PCIe配置空间,以便于读取设备状态并修改设备状态。
例如,根据该实施例,处理逻辑可以执行以下步骤来修复错误/状态并重新训练PCIe链路。在步骤1:处理逻辑将PCIe端点设备插入/重新插入PC系统中的PCIe插槽。在步骤2,处理逻辑发出用于扫描/重新扫描PCIe总线的Linux系统命令,以发现是否有任何端点设备被插入(重新插入)到PC系统中的PCIe插槽,例如,
echo"1">/sys/bus/pci/rescan。
在步骤3,处理逻辑重新训练并恢复在终点设备(重新插入到插槽中)及其根端口之间的PCIe链路,迭代通过在PC系统中发现的所有端点设备,例如,
Figure BDA0001170575610000191
Figure BDA0001170575610000201
此外,在步骤4:处理逻辑可以使用Linux OS命令insmod来在Linux OS中使用用于重新安装用于终点设备的PCIe设备驱动器,例如,insmodMyPCIeDeviceDriver.ko。
此外,在步骤5,处理逻辑可以使用Linux OS命令setpci来清除在PCIe配置空间中报告的任何错误;还修改在端点设备配置空间中的设置以匹配其根端口,迭代通过PC系统中发现的所有端点设备。例如,
Figure BDA0001170575610000202
在步骤6:端点PCIe设备现在准备好测试。处理逻辑可以在这些设备上执行测试过程。在步骤7:一旦测试完成,处理逻辑可以终止来自/去往端点PCIe设备的所有数据业务,然后使用rmmod Linux命令(例如,rmmod MyPCIeDevice)移除PCIe设备驱动器。
在步骤8:处理逻辑可以发出Linux系统命令,以从PCIe总线移除PCIe端点设备。注意,该代码假定端点设备属于PCIe域0。步骤8中的命令移除和步骤2中的命令重新扫描将允许Linux OS内核在不重新启动的情况下对PCIe设备循环供电。例如,
Figure BDA0001170575610000211
sleep 3#等待3秒
在步骤9:可以从PCIe插槽中移除PCIe端点设备。这样,根据该实施例,处理逻辑可以针对第二组PCIe设备重复开始步骤1。
图8是示出根据可以与本发明的一个实施例一起使用的一个实施例的数据处理系统的框图。例如,系统800可以表示执行上述任何过程或方法的上述数据处理系统中的任何一个。系统800可以包括许多不同的部件。这些部件可以被实现为集成电路(IC)、其一部分、分立的电子设备或适用于诸如计算机系统的主板或附加卡的电路板的其他模块、或者被以其他方式被包含实现为在计算机系统的底架内的部件。还注意,系统800意在示出计算机系统的许多部件的高级视图。然而,应当理解,在某些实现中可以存在附加部件,并且此外,在其他实现中可以出现所示部件的不同布置。系统800可以表示台式计算机、膝上型计算机、平板电脑、服务器、移动电话、媒体播放器、个人数字助理(PDA)、个人通信器、游戏设备、网络路由器或集线器、无线接入点(AP)或中继器、机顶盒或其组合。此外,虽然仅示出了单个机器或系统,但是术语“机器”或“系统”也将被认为包括单独地或联合地执行用于执行本文讨论的方法中的任何一个或多个的指令集(或多个集合)的机器或系统的任何集合。
在一个实施例中,系统800包括经由总线或互连810的处理器801、存储器803和设备804-808。处理器801可以表示包括有单个处理器核心或多个处理器核心的单个处理器或具有多个处理器。处理器801可以表示一个或多个通用处理器,例如微处理器、中央处理单元(CPU)等。更具体地,处理器801可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或者实现其他指令集的处理器或者实现指令集的组合的处理器。处理器801还可以是一个或多个专用处理器,诸如专用集成电路(ASIC)、蜂窝或基带处理器、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器、图形处理器、网络处理器、通信处理器、加密处理器、协处理器、嵌入式处理器或能够处理指令的任何其他类型的逻辑。
可以是诸如超低电压处理器的低功率多核处理器插座的处理器801可以用作用于与系统的各种组件通信的主处理单元和中央集线器。这样的处理器可以被实现为片上系统(SoC)。处理器801被配置为执行用于执行本文讨论的操作和步骤的指令。系统800还可以包括与可选图形子系统804通信的图形接口,其可以包括包括显示控制器、图形处理器和/或显示设备。
处理器801可以与存储器803通信,在一个实施例中,存储器803可以经由多个存储器设备来实现以提供给定量的系统存储器。存储器803可以包括一个或多个易失性存储器(或存储器),诸如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)或其他类型的存储设备。存储器803可以存储包括由处理器801或任何其他设备执行的指令序列的信息。例如,各种操作系统、设备驱动器、固件(例如,输入输出基本系统或BIOS)和/或应用的可执行代码和/或数据可以被加载到存储器803中并由处理器801执行。操作系统可以是任何种类的操作系统,诸如例如来自
Figure BDA0001170575610000221
Figure BDA0001170575610000222
操作系统、来自苹果的Mac
Figure BDA0001170575610000223
/或
Figure BDA0001170575610000224
来自
Figure BDA0001170575610000225
Figure BDA0001170575610000226
或其他实时或嵌入式操作系统,诸如VxWorks。
系统800还可以包括诸如设备804-808的IO设备,包括显示设备804、网络接口设备805、可选输入设备806和其他可选IO设备807和存储设备808。网络接口设备805可以包括无线收发器和/或网络接口卡(NIC)。无线收发器可以是Wi-Fi收发器、红外收发器、蓝牙收发器、WiMax收发器、无线蜂窝电话收发器、卫星收发器(例如,全球定位系统(GPS)收发器)或其他射频(RF)收发器或其组合。NIC可以是以太网卡。
输入设备806可以包括鼠标、触摸板、触敏屏(其可以与显示设备804集成),诸如触控笔的指示器设备和/或键盘(例如,物理键盘或作为触敏屏幕的一部分显示的虚拟键盘)。例如,输入设备806可以包括耦合到触摸屏的触摸屏控制器。触摸屏和触摸屏控制器可以例如使用一个或多个触摸感应技术中的任何一种来检测接触和移动或断开,技术包括但不限于电容、电阻、红外和表面声波技术,以及其他接近传感器阵列或用于确定与触摸屏的一个或多个接触点的其他元件。
IO设备807可以包括音频设备。音频设备可以包括扬声器和/或麦克风,以促进支持语音的功能,诸如语音识别、语音复制、数字记录和/或电话功能。其他IO设备807还可以包括通用串行总线(USB)端口、并行端口、串行端口、打印机、网络接口、总线桥(例如,PCI-PCI桥)、传感器(例如,诸如加速度计、陀螺仪、磁力计、光传感器、罗盘、接近传感器等的运动传感器)或其组合。设备807还可以包括成像处理子系统(例如,照相机),其可以包括用于促进照相机功能的光学传感器,诸如电荷耦合器件(CCD)或互补金属氧化物半导体(CMOS)光学传感器,诸如记录照片和视频剪辑。某些传感器可以经由传感器集线器(未示出)被耦合到互连810,而诸如键盘或热传感器的其他设备可以由嵌入式控制器(未示出)控制,这取决于系统800的具体配置或设计。
为了提供诸如数据、应用、一个或多个操作系统等的信息的持久存储,大容量存储器(未示出)也可以耦合到处理器801。在各种实施例中,为了支持更薄和更轻的系统设计并且提高系统响应性,该大容量存储可以经由固态设备(SSD)来实现。然而,在其他实施例中,大容量存储器可以主要使用具有较小量的SSD存储的硬盘驱动(HDD)来实现,以用作SSD高速缓存,用于在断电事件期间实现上下文状态和其他这样的信息的非易失性存储,使得在重新启动系统活动时可以进行快速上电。而且,闪存设备可以例如经由串行外围设备接口(SPI)耦合到处理器801。该闪存设备可以提供系统软件的非易失性存储,包括基本输入/输出软件(BIOS)以及系统的其他固件。
存储设备808可以包括存储有实现本文描述的方法或功能的中的任何一个或多个的指令或软件(例如,PCIe测试系统828)的一个或多个集合的计算机可访问存储介质809(也称为机器可读存储介质或计算机可读介质)。PCIe测试系统828还可以在由也构成机器可访问存储介质的数据处理系统800、存储器803和处理器801执行期间完全或至少部分地驻留在存储器803内和/或处理器801内。PCIe测试系统828还可以经由网络接口设备805通过网络被传送或接收。
计算机可读存储介质809还可以用于永久存储上述一些软件功能。尽管计算机可读存储介质809在示例性实施例中被示为是单个介质,但是术语“计算机可读存储介质”应该被认为包括存储一个或多个指令集的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。术语“计算机可读存储介质”还应当被认为包括能够存储或编码用于由机器执行的指令集并且使得机器执行本发明的方法中的任何一个或多个的任何介质。因此,术语“计算机可读存储介质”应当被理解为包括但不限于,固态存储器、光学和磁性介质或任何其他非暂时性机器可读介质。
本文所描述的模块/单元/逻辑828、部件和其他特征可以被实现为分立的硬件部件或集成在诸如ASICS、FPGA、DSP或类似设备的硬件部件的功能中。此外,模块/单元/逻辑1028可以被实现为硬件设备内的固件或功能电路。此外,模块/单元/逻辑828可以以硬件设备和软件部件的任何组合实现。
注意,尽管系统800被示为具有数据处理系统的各种部件,但是其并不旨在表示互连部件的任何具体架构或方式;因为这样的细节与本发明的实施例无关。还将理解,具有较少部件或可能更多部件的网络计算机、手持计算机、移动电话、服务器和/或其他数据处理系统也可以与本发明的实施例一起使用。
还注意,上述PCIe测试技术可以应用于各种不同类型的数据中心,例如传统的托管数据中心和绿地数据中心。托管数据中心是一种设备、空间和带宽可用于向零售客户出租的数据中心。托管设施为其他公司的服务器、存储和联网设备提供空间、电力、冷却和物理安全性,并且以最低的成本和复杂性将其连接到各种电信和网络服务提供商。绿地数据中心是指在之前不存在的位置构建和配置的数据中心。上述技术还可以应用于或结合性能优化数据中心(POD)或便携式按需或容器数据中心来工作,其中服务器的机架被容纳在一个或多个单独的容器、模块化房间或模块化外壳中。
前面的详细描述的一些部分已经根据对计算机存储器内的数据比特的操作的算法和符号表示来呈现。这些算法描述和表示是数据处理领域的技术人员用来将其工作的实质最有效地传达给本领域的其他技术人员的方式。算法在这里并且通常被设想为产生期望结果的自相一致的操作序列。操作是需要物理量的物理操纵的那些。
然而,应当记住,所有这些和类似的术语将与适当的物理量相关联,并且仅仅是应用于这些量的方便标记。除非特别声明,否则从上述讨论中显而易见,应当理解,在本说明书中,利用诸如在以下权利要求中阐述的术语的讨论指的是计算机系统或类似的电子计算设备的动作和过程,其将计算机系统的寄存器和存储器内表示为物理(电子)量的数据操纵和转换成类似地表示为计算机系统存储器或寄存器或其他这样的信息存储、传输或显示设备内的物理量的其他数据。
本发明的实施例还涉及用于执行这里的操作的装置。这样的计算机程序被存储在非暂时性计算机可读介质中。机器可读介质包括用于以机器(例如,计算机)可读的形式存储信息的任何机制。例如,机器可读(例如,计算机可读)介质包括机器(例如,计算机)可读存储介质(例如,只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、闪存设备)。
在上述附图中描绘的处理或方法可以通过处理逻辑来执行,处理逻辑包括硬件(例如电路、专用逻辑等)、软件(例如,在非暂时性计算机可读介质上实现)或其组合。虽然以上根据一些顺序操作描述了处理和方法,但是应当理解,所描述的操作中的一些可以以不同的顺序来执行。此外,一些操作可以并行地而不是顺序地被执行。
本发明的实施例不参考任何具体编程语言来描述。应当理解,各种编程语言可以用于实现如本文所描述的本发明的实施例的教导。
在前述说明书中,已经参考本发明的具体示例性实施例描述了本发明的实施例。明显的是,可以在不背离如以下权利要求中所阐释的更宽的精神和范围的情况下对其进行各种修改。因此,本说明书和附图可以在说明性意义而非限制性意义上被考虑。

Claims (24)

1.一种用于测试高速外围设备部件互连PCIe设备的计算机实现的方法,所述方法包括:
检测多个PCIe设备已经被插入到数据处理系统的一个或多个PCIe总线中;
响应于所述检测,扫描所述数据处理系统的所有PCIe总线以发现所述多个PCIe设备;
对于所发现的每个PCIe设备,
修复和重新训练与所述PCIe设备相关联的PCIe链路,而不必重新启动所述数据处理系统,并且
加载用于要由操作系统托管的PCIe设备的设备驱动器实例;以及
执行用于经由相应的设备驱动器实例并行测试所述多个PCIe设备的测试例程;
其中,修复和重新训练与所述PCIe设备相关联的PCIe链路包括:
在所述PCIe设备的第一PCIe链路控制寄存器中设置第一时钟配置比特;以及
在耦合到所述PCIe设备的根复合体设备的第二PCIe链路控制寄存器中设置第二时钟配置比特,以恢复PCIe参考时钟配置。
2.根据权利要求1所述的方法,其中,加载设备驱动器实例包括将表示所述PCIe设备的逻辑设备标识符ID指派给所述设备驱动器实例,其中,所述逻辑设备ID是基于以下中的一个或多个的组合来构建的:PCIe设备的总线编号、设备编号或功能编号。
3.根据权利要求2所述的方法,其中,所述逻辑设备ID由所述设备驱动器实例利用以识别插入有所述PCIe设备的物理PCIe插槽,使得所述多个PCIe设备能够并行地被识别和测试。
4.根据权利要求1所述的方法,进一步包括:
响应于指示所述测试例程的执行已经完成的信号,卸载所述PCIe设备的设备驱动器实例;以及
与所述操作系统通信以从所述操作系统的命名空间中移除所述PCIe设备,而不必重新启动所述数据处理系统。
5.根据权利要求4所述的方法,进一步包括显示用于提示用户能够从相应的PCIe插槽物理地移除所述PCIe设备的消息。
6.根据权利要求1所述的方法,进一步包括:在所述根复合体设备的所述第二PCIe链路控制寄存器中设置重新训练链路比特,以触发PCIe链路重新训练过程。
7.根据权利要求6所述的方法,进一步包括:
恢复所述PCIe设备的PCIe设备控制寄存器的设置;以及
清除在PCIe总线扫描期间报告的PCIe配置空间中的任何错误。
8.根据权利要求7所述的方法,进一步包括将存储器地址设置从所述根复合体设备复制到所述PCIe设备的所述PCIe配置空间。
9.一种存储有指令的非暂时性机器可读介质,所述指令在由处理器执行时使得所述处理器执行用于测试PCIe设备的操作,所述操作包括:
检测多个PCIe设备已经被插入到数据处理系统的一个或多个PCIe总线中;
响应于所述检测,扫描所述数据处理系统的所有PCIe总线以发现所述多个PCIe设备;
对于所发现的每个PCIe设备,
修复和重新训练与所述PCIe设备相关联的PCIe链路,而不必重新启动所述数据处理系统,并且
加载用于要由操作系统托管的PCIe设备的设备驱动器实例;以及
执行用于经由相应的设备驱动器实例并行测试所述多个PCIe设备的测试例程;
其中,修复和重新训练与所述PCIe设备相关联的PCIe链路包括:
在所述PCIe设备的第一PCIe链路控制寄存器中设置第一时钟配置比特;以及
在耦合到所述PCIe设备的根复合体设备的第二PCIe链路控制寄存器中设置第二时钟配置比特,以恢复PCIe参考时钟配置。
10.根据权利要求9所述的介质,其中,加载设备驱动器实例包括将表示所述PCIe设备的逻辑设备标识符ID指派给所述设备驱动器实例,其中,所述逻辑设备ID是基于以下中的一个或多个的组合来构建的:PCIe设备的总线编号、设备编号或功能编号。
11.根据权利要求10所述的介质,其中,所述逻辑设备ID由所述设备驱动器实例利用以识别插入有所述PCIe设备的物理PCIe插槽,使得所述多个PCIe设备能够并行地被识别和测试。
12.根据权利要求9所述的介质,其中,所述操作进一步包括:
响应于指示所述测试例程的执行已经完成的信号,卸载所述PCIe设备的设备驱动器实例;以及
与所述操作系统通信以从所述操作系统的命名空间中移除所述PCIe设备,而不必重新启动所述数据处理系统。
13.根据权利要求12所述的介质,其中,所述操作进一步包括:显示用于提示用户能够从相应的PCIe插槽物理地移除所述PCIe设备的消息。
14.根据权利要求9所述的介质,其中,所述操作进一步包括:在所述根复合体设备的所述第二PCIe链路控制寄存器中设置重新训练链路比特,以触发PCIe链路重新训练过程。
15.根据权利要求14所述的介质,其中,所述操作进一步包括:
恢复所述PCIe设备的PCIe设备控制寄存器的设置;以及
清除在PCIe总线扫描期间报告的PCIe配置空间中的任何错误。
16.根据权利要求15所述的介质,其中,所述操作进一步包括:将存储器地址设置从所述根复合体设备复制到所述PCIe设备的所述PCIe配置空间。
17.一种用于测试高速外围设备部件互连PCIe设备的系统,包括:
处理器;以及
耦合到所述处理器的用于存储指令的存储器,当所述指令从所述存储器被执行时,使得所述处理器执行用于测试PCIe设备的操作,所述操作包括:
检测多个PCIe设备已经被插入到数据处理系统的一个或多个PCIe总线中;
响应于所述检测,扫描所述数据处理系统的所有PCIe总线以发现所述多个PCIe设备;
对于所发现的每个PCIe设备,
修复和重新训练与所述PCIe设备相关联的PCIe链路,而不必重新启动所述数据处理系统,并且
加载用于要由操作系统托管的PCIe设备的设备驱动器实例;以及
执行用于经由相应的设备驱动器实例并行测试所述多个PCIe设备的测试例程;
其中,修复和重新训练与所述PCIe设备相关联的PCIe链路包括:
在所述PCIe设备的第一PCIe链路控制寄存器中设置第一时钟配置比特;以及
在耦合到所述PCIe设备的根复合体设备的第二PCIe链路控制寄存器中设置第二时钟配置比特,以恢复PCIe参考时钟配置。
18.根据权利要求17所述的系统,其中,加载设备驱动器实例包括将表示所述PCIe设备的逻辑设备标识符ID指派给所述设备驱动器实例,其中,所述逻辑设备ID是基于以下中的一个或多个的组合来构建的:PCIe设备的总线编号、设备编号或功能编号。
19.根据权利要求18所述的系统,其中,所述逻辑设备ID由所述设备驱动器实例利用以识别插入有所述PCIe设备的物理PCIe插槽,使得所述多个PCIe设备能够并行地被识别和测试。
20.根据权利要求17所述的系统,其中,所述操作进一步包括:
响应于指示所述测试例程的执行已经完成的信号,卸载所述PCIe设备的设备驱动器实例;以及
与所述操作系统通信以从所述操作系统的命名空间中移除所述PCIe设备,而不必重新启动所述数据处理系统。
21.根据权利要求20所述的系统,其中,所述操作进一步包括:显示用于提示用户能够从相应的PCIe插槽物理地移除所述PCIe设备的消息。
22.根据权利要求17所述的系统,其中,所述操作还包括:设置所述根复合体设备的所述第二PCIe链路控制寄存器中的重新训练链路比特,以触发PCIe链路重新训练过程。
23.根据权利要求22所述的系统,其中,所述操作进一步包括:
恢复所述PCIe设备的PCIe设备控制寄存器的设置;以及
清除在PCIe总线扫描期间报告的PCIe配置空间中的任何错误。
24.根据权利要求23所述的系统,其中,所述操作进一步包括:将存储器地址设置从所述根复合体设备复制到所述PCIe设备的所述PCIe配置空间。
CN201611101616.3A 2016-05-23 2016-12-05 用于测试高速外围设备互连设备的方法和系统 Active CN107423169B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/162,529 US10114658B2 (en) 2016-05-23 2016-05-23 Concurrent testing of PCI express devices on a server platform
US15/162,529 2016-05-23

Publications (2)

Publication Number Publication Date
CN107423169A CN107423169A (zh) 2017-12-01
CN107423169B true CN107423169B (zh) 2022-05-13

Family

ID=60330756

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611101616.3A Active CN107423169B (zh) 2016-05-23 2016-12-05 用于测试高速外围设备互连设备的方法和系统

Country Status (2)

Country Link
US (1) US10114658B2 (zh)
CN (1) CN107423169B (zh)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180213669A1 (en) * 2015-07-10 2018-07-26 Prasad Lalathuputhanpura KOCHUKUNJU Micro data center (mdc) in a box system and method thereof
CN105512007B (zh) * 2015-12-17 2018-12-04 英业达科技有限公司 一种pcie硬盘状态灯的控制方法及系统
US10310833B2 (en) * 2017-01-30 2019-06-04 Dell Products L.P. Parallel diagnostic/software installation system
US11630480B2 (en) * 2017-10-05 2023-04-18 Intel Corporation System, method, and apparatus for SRIS mode selection for PCIe
CN107832179A (zh) * 2017-11-27 2018-03-23 郑州云海信息技术有限公司 一种PCIe Error Enabling测试方法
CN108089955A (zh) * 2017-11-30 2018-05-29 郑州云海信息技术有限公司 一种基于OCuLink接口的PCIE信号测试治具及测试方法
US10691560B2 (en) * 2017-12-28 2020-06-23 Lenovo Enterprise Solutions (Singapore) Pte. Ltd Replacement of storage device within IOV replication cluster connected to PCI-e switch
CN108696394A (zh) * 2018-05-18 2018-10-23 深圳市智微智能科技开发有限公司 一种linux系统下多个PCIE网卡的通讯方法及设备
CN108681497B (zh) * 2018-05-22 2022-01-25 天津市英贝特航天科技有限公司 一种cpci总线测试装置及方法
US10636577B2 (en) 2018-05-25 2020-04-28 Qualcomm Incorporated Safe handling of link errors in a peripheral component interconnect express (PCIE) device
US10445279B1 (en) 2018-07-19 2019-10-15 Mellanox Technologies, Ltd. Automatic PCIe operating mode configuration
CN109117406B (zh) * 2018-08-23 2022-02-18 郑州云海信息技术有限公司 一种pcie热拔插测试方法、装置、终端及存储介质
CN111124970B (zh) * 2018-10-31 2021-11-23 杭州海康威视数字技术股份有限公司 子板热插拔方法及装置
US10503682B1 (en) * 2018-12-19 2019-12-10 Mellanox Technologies, Ltd. Accessing PCIe configuration data through network
US11314578B2 (en) * 2019-03-06 2022-04-26 Dell Products L.P. Information handling system and method to detect and recover from spurious resets of PCIe devices
CN110347435A (zh) * 2019-07-03 2019-10-18 英业达科技有限公司 自动配置PCIe插槽的BIOS及方法
US11175977B2 (en) * 2020-01-14 2021-11-16 Nxp Usa, Inc. Method and system to detect failure in PCIe endpoint devices
RU197111U1 (ru) * 2020-01-29 2020-03-31 Акционерное общество "МЦСТ" Адаптер тестирования канала PCI Express
US11650893B2 (en) * 2020-03-31 2023-05-16 Advantest Corporation Multiple name space test systems and methods
US11899550B2 (en) * 2020-03-31 2024-02-13 Advantest Corporation Enhanced auxiliary memory mapped interface test systems and methods
CN111488219B (zh) * 2020-04-07 2022-08-02 中国科学院自动化研究所 用于高速数据采集系统的以太网数据流记录方法
CN112000533B (zh) * 2020-08-14 2023-03-31 北京浪潮数据技术有限公司 一种pcie设备总线测试方法以及测试工装
US11782616B2 (en) 2021-04-06 2023-10-10 SK Hynix Inc. Storage system and method of operating the same
KR102518287B1 (ko) * 2021-04-13 2023-04-06 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 그 동작 방법
CN114356622B (zh) * 2021-12-10 2024-05-24 国电南瑞科技股份有限公司 一种电力二次设备PCIe总线异常断链自恢复方法及系统
CN114741339B (zh) * 2022-04-21 2023-07-14 苏州浪潮智能科技有限公司 一种pcie带宽重训练的方法、装置、设备、存储介质
CN114880184B (zh) * 2022-05-23 2023-09-08 山东三未信安信息科技有限公司 一种批量检测pci密码卡的方法及系统
CN114780325B (zh) * 2022-06-21 2022-09-30 新华三信息技术有限公司 一种PCIe设备检测方法及装置
US11966309B2 (en) * 2022-06-30 2024-04-23 Hewlett Packard Enterprise Development Lp Saturation of multiple PCIe slots in a server by multiple ports in a single test card
CN117992293A (zh) * 2024-02-26 2024-05-07 北京中航通用科技有限公司 一种多总线综合化测试装置及方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6363452B1 (en) * 1999-03-29 2002-03-26 Sun Microsystems, Inc. Method and apparatus for adding and removing components without powering down computer system
CN102053939A (zh) * 2009-10-30 2011-05-11 英业达股份有限公司 快速周边装置元件互连选项卡的热插拔控制方法
CN104050061A (zh) * 2014-07-01 2014-09-17 中国航天科工集团第二研究院七〇六所 一种基于PCIe总线多主控板冗余备份系统
WO2015099733A1 (en) * 2013-12-26 2015-07-02 Intel Corporation Interconnect retimer enhancements

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19580606C2 (de) * 1994-06-08 2003-06-18 Intel Corp Plattenlaufwerksverbinderschnittstelle zur Verwendung an einem PCI-Bus
US5701409A (en) * 1995-02-22 1997-12-23 Adaptec, Inc. Error generation circuit for testing a digital bus
US5712967A (en) * 1996-04-22 1998-01-27 Advanced Micro Devices, Inc. Method and system for graceful recovery from a fault in peripheral devices using a variety of bus structures
US6557121B1 (en) * 1997-03-31 2003-04-29 International Business Machines Corporation Method and system for fault isolation for PCI bus errors
US6247080B1 (en) * 1997-05-13 2001-06-12 Micron Electronics, Inc. Method for the hot add of devices
US6418492B1 (en) * 1997-05-13 2002-07-09 Micron Electronics Method for computer implemented hot-swap and hot-add
US6247079B1 (en) * 1997-05-13 2001-06-12 Micron Electronics, Inc Apparatus for computer implemented hot-swap and hot-add
US6173346B1 (en) * 1997-05-13 2001-01-09 Micron Electronics, Inc. Method for hot swapping a programmable storage adapter using a programmable processor for selectively enabling or disabling power to adapter slot in response to respective request signals
US6499073B1 (en) * 1997-05-13 2002-12-24 Micron Electronics, Inc. System using programmable processor for selectively enabling or disabling power to adapter in response to respective request signals
US6212585B1 (en) * 1997-10-01 2001-04-03 Micron Electronics, Inc. Method of automatically configuring a server after hot add of a device
US6070207A (en) * 1998-01-26 2000-05-30 Intel Corporation Hot plug connected I/O bus for computer system
US5991900A (en) * 1998-06-15 1999-11-23 Sun Microsystems, Inc. Bus controller
US6343260B1 (en) * 1999-01-19 2002-01-29 Sun Microsystems, Inc. Universal serial bus test system
US6401157B1 (en) * 1999-04-30 2002-06-04 Compaq Information Technologies Group, L.P. Hot-pluggable component detection logic
US6532558B1 (en) * 2000-03-02 2003-03-11 International Business Machines Corporation Manufacturing testing of hot-plug circuits on a computer backplane
GB2373607B (en) * 2001-03-23 2003-02-12 Sun Microsystems Inc A computer system
US6956379B2 (en) * 2002-07-09 2005-10-18 Hewlett-Packard Development Company, L.P. Testing device and method for testing backplanes and connectors on backplanes
US7260749B2 (en) * 2003-01-22 2007-08-21 Red Hat, Inc. Hot plug interfaces and failure handling
US7257659B2 (en) * 2003-12-31 2007-08-14 Intel Corporation Method for signaling PCI/PCI-X standard hot-plug controller (SHPC) command status
US7231560B2 (en) * 2004-04-16 2007-06-12 Via Technologies, Inc. Apparatus and method for testing motherboard having PCI express devices
US20060114918A1 (en) * 2004-11-09 2006-06-01 Junichi Ikeda Data transfer system, data transfer method, and image apparatus system
US20060168377A1 (en) * 2005-01-21 2006-07-27 Dell Products L.P. Reallocation of PCI express links using hot plug event
US7475178B2 (en) * 2006-08-18 2009-01-06 Sun Microsystems, Inc. Hot-plug link apparatus and method using a direction line to indicate presence of a hot-plug device
US20090083585A1 (en) * 2007-09-21 2009-03-26 Inventec Corporation Method of pressure testing for peripheral component interconnect (pci) bus stage
US7653773B2 (en) * 2007-10-03 2010-01-26 International Business Machines Corporation Dynamically balancing bus bandwidth
US7689751B2 (en) * 2008-02-15 2010-03-30 Sun Microsystems, Inc. PCI-express system
US8412860B2 (en) * 2009-04-01 2013-04-02 Fusion-Io, Inc. Input/output (I/O) virtualization system
US8949502B2 (en) * 2010-11-18 2015-02-03 Nimble Storage, Inc. PCIe NVRAM card based on NVDIMM
US8972611B2 (en) * 2011-08-11 2015-03-03 Cisco Technology, Inc. Multi-server consolidated input/output (IO) device
US8868811B2 (en) * 2011-10-03 2014-10-21 Via Technologies, Inc. Systems and methods for hot-plug detection recovery
US8782321B2 (en) * 2012-02-08 2014-07-15 Intel Corporation PCI express tunneling over a multi-protocol I/O interconnect
US9262363B2 (en) * 2012-11-30 2016-02-16 Ciena Corporation PCI and PCI express virtual hot plug systems and methods
US9026687B1 (en) * 2013-12-26 2015-05-05 Lsi Corporation Host based enumeration and configuration for computer expansion bus controllers
US9645902B2 (en) * 2014-06-23 2017-05-09 Liqid Inc. Modular switched fabric for data storage systems
US9697166B2 (en) * 2014-11-21 2017-07-04 International Business Machines Corporation Implementing health check for optical cable attached PCIE enclosure
US9489211B2 (en) * 2015-03-31 2016-11-08 Vmware, Inc. Exposing memory-mapped IO devices to drivers through firmware

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6363452B1 (en) * 1999-03-29 2002-03-26 Sun Microsystems, Inc. Method and apparatus for adding and removing components without powering down computer system
CN102053939A (zh) * 2009-10-30 2011-05-11 英业达股份有限公司 快速周边装置元件互连选项卡的热插拔控制方法
WO2015099733A1 (en) * 2013-12-26 2015-07-02 Intel Corporation Interconnect retimer enhancements
CN104050061A (zh) * 2014-07-01 2014-09-17 中国航天科工集团第二研究院七〇六所 一种基于PCIe总线多主控板冗余备份系统

Also Published As

Publication number Publication date
US10114658B2 (en) 2018-10-30
US20170337069A1 (en) 2017-11-23
CN107423169A (zh) 2017-12-01

Similar Documents

Publication Publication Date Title
CN107423169B (zh) 用于测试高速外围设备互连设备的方法和系统
CN107111588B (zh) 经由USB端口使用PCIe协议的数据传输
CN107870882B (zh) 用于管理外围设备的数据协议
US20150347345A1 (en) Gen3 pci-express riser
US9680712B2 (en) Hardware management and control of computer components through physical layout diagrams
US10866737B2 (en) Apparatus, method and system to store information for a solid state drive
US9817468B2 (en) System and method for automatic detection and switching between USB host and device rolls on a type-A connector
US10372639B2 (en) System and method to avoid SMBus address conflicts via a baseboard management controller
US20140280960A1 (en) Methods and apparatus for dynamically allocating devices between multiple controllers
US10592285B2 (en) System and method for information handling system input/output resource management
US10656676B2 (en) Docking device, electrical device, and MAC address cloning method
US10324888B2 (en) Verifying a communication bus connection to a peripheral device
US20100023669A1 (en) Host controller disposed in multi-function card reader
US9665526B2 (en) Implementing IO expansion cards
US10853213B2 (en) Validation of installation of removeable computer hardware components
CN115981971A (zh) 一种服务器硬盘的点灯方法及服务器
US8527667B2 (en) Apparatuses and methods for transferring data
US20150186317A1 (en) Method and apparatus for detecting the initiator/target orientation of a smart bridge
US20200293459A1 (en) Systems and methods for detecting expected user intervention across multiple blades during a keyboard, video, and mouse (kvm) session
WO2024108938A1 (zh) 一种硬盘控制装置、方法、设备、非易失性可读存储介质及服务器
CN112306938A (zh) 一种ocp卡和多主机卡的热插拔方法及装置
CN107818061B (zh) 关联外围设备的数据总线和管理总线
CN115905072A (zh) 计算机系统、基于PCIe设备的控制方法及相关设备
CN102082715A (zh) 网卡重置的测试方法
CN103365811A (zh) 电子装置和主机确定方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant