CN115334015B - 基于PCIe交换芯片的虚拟交换模式控制方法 - Google Patents

基于PCIe交换芯片的虚拟交换模式控制方法 Download PDF

Info

Publication number
CN115334015B
CN115334015B CN202210779963.0A CN202210779963A CN115334015B CN 115334015 B CN115334015 B CN 115334015B CN 202210779963 A CN202210779963 A CN 202210779963A CN 115334015 B CN115334015 B CN 115334015B
Authority
CN
China
Prior art keywords
port
virtual
upstream
management
register
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
CN202210779963.0A
Other languages
English (en)
Other versions
CN115334015A (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.)
STMicroelectronics Shenzhen R&D Co Ltd
Original Assignee
STMicroelectronics Shenzhen R&D Co Ltd
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 STMicroelectronics Shenzhen R&D Co Ltd filed Critical STMicroelectronics Shenzhen R&D Co Ltd
Priority to CN202210779963.0A priority Critical patent/CN115334015B/zh
Publication of CN115334015A publication Critical patent/CN115334015A/zh
Application granted granted Critical
Publication of CN115334015B publication Critical patent/CN115334015B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/55Prevention, detection or correction of errors
    • H04L49/557Error correction, e.g. fault recovery or fault tolerance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Interface Circuits In Exchanges (AREA)
  • Use Of Switch Circuits For Exchanges And Methods Of Control Of Multiplex Exchanges (AREA)

Abstract

本发明公开了一种基于PCIe交换芯片的虚拟交换模式控制方法。所述虚拟交换模式控制方法包括:通过读取虚拟交换使能寄存器值,确定交换芯片在虚拟交换模式下使能的虚拟交换数量;通过读取上游端口指示寄存器的字段确定每个虚拟交换的上游端口;通过读取管理端口控制寄存器值来使能并指定管理端口;将虚拟端口向量寄存器对应的端口分配给对应的虚拟交换。在一片PCIe交换芯片上能实现多个虚拟交换,使其实现多个独立的交换机在一个物理结构内,有效的节省了板级空间和功耗。

Description

基于PCIe交换芯片的虚拟交换模式控制方法
技术领域
本申请涉及网络通信技术领域,尤其涉及基于PCIe交换芯片的虚拟交换模式控制方法。
背景技术
高速串行计算机扩展总线标准(Peripheral Component Interconnect express,PCIe)交换器是一种基于PCIe协议规则,使用高速差分总线并采用端对端的连接方式进行数据交互的交换芯片,其支持多种数据路由方式,基于多通路的数据传递方式和基于报文的数据传送方式,使得这类芯片在军事和民用领域都有着非常广泛而重要的应用。
传统的基于PCIe的交换机芯片通常是只能支持为每个虚拟机提供独立的内存空间、中断、和直接存储器访问(Direct Memory Access,DMA),该方法只能实现多个虚拟机访问同一个PCIe设备,不能实现硬件上的多主机共享PCIe设备。目前多主机共享同一PCIe设备的方法虽然正在被逐步实现,但是无法支持在同一物理结构中划分多个相互独立的虚拟交换机的交换芯片,导致了板级空间的浪费以及相对较高的功耗。与此同时,期望或者不期望事件可以导致一个虚拟交换机中的主机挂死从而导致该虚拟交换无法再进行数据传输,从而使得该虚拟交换的下游端口以及所连接的设备都处于闲置状态,大大降低了资源的利用率。
因此,如何解决上述的问题以实现多主机系统以及主机故障备份的交换芯片是本领域技术人员目前需要解决的问题。
发明内容
本申请的目的在于提供基于PCIe交换芯片的虚拟交换模式控制方法,在一片PCIe交换芯片上能实现多个虚拟交换,有效分离交换芯片,使其实现多个独立的交换机在一个物理结构内,有效的节省了板级空间和功耗。
本申请实施例的第一方面提了一种基于PCIe交换芯片的虚拟交换模式控制方法,所述交换芯片具有基本模式和虚拟交换模式,所述基本模式下所述交换芯片允许工作在一个PCIe桥的层次结构,所述虚拟交换模式下所述交换芯片允许工作在多个相互独立的PCIe桥的层次结构,其中,所述交换芯片包括:多个端口,用于连接上游主机和下游设备;虚拟交换使能寄存器,用于定义虚拟交换的使能位;上游端口指示寄存器,用于指示每个虚拟交换的上游端口号;管理端口控制寄存器,用于指定或使能所述交换芯片的管理端口;以及虚拟端口向量寄存器,用于将该寄存器对应的端口分配给对应的虚拟交换;所述虚拟交换模式控制方法包括:通过读取所述虚拟交换使能寄存器值,确定所述交换芯片在虚拟交换模式下使能的虚拟交换数量;通过读取所述上游端口指示寄存器的字段确定每个所述虚拟交换的上游端口;通过读取所述管理端口控制寄存器值来使能并指定管理端口;将所述虚拟端口向量寄存器对应的端口分配给对应的所述虚拟交换。
其中一个实施例中,在所述通过读取所述管理端口控制寄存器值来使能并指定管理端口的步骤之前的步骤中,采用EEPROM改写寄存器的值,所述EEPROM设备内部包括所述交换芯片的虚拟交换表信息。
其中一个实施例中,在所述通过读取所述管理端口控制寄存器值来使能并指定管理端口的步骤之前的步骤中,采用I2C或UART的方式改写寄存器的值,I2C或UART所配置的内容包含所述交换芯片的虚拟交换表信息。
其中一个实施例中,在所述通过读取所述管理端口控制寄存器值来使能并指定管理端口的步骤之前的步骤中,采用管理端口改写寄存器的值,管理端口通过配置寄存器来确定每个虚拟交换的端口分配情况。
其中一个实施例中,所述管理端口分为活跃管理端口和备用管理端口,当所述交换芯片指定某个端口为管理端口且该管理端口使能后,该管理端口用于控制所述交换芯片,当该管理端口连接的主机发生故障时,备用管理端口提升为新的管理端口;所述管理端口可以访问所述交换芯片的所有寄存器,并用于实现以下功能:配置虚拟交换,包括指定虚拟交换机的上游端口和所属的下游端口;将端口由一个虚拟交换搬迁到另一个虚拟交换;监控所有虚拟交换的链路状态;配置交换芯片的寄存器;采用软件读写EEPROM、配置扩展ROM功能的寄存器设置。
其中一个实施例中,所述交换芯片还具有故障备份功能,所述交换芯片还具有故障备份功能,所述交换芯片在故障备份的过程中多个所述虚拟交换及其对应的端口会进行重新配置,包括:重分配下游端口、下游设备的突然迁移、重分配上游端口、上游端口的突然迁移以及管理端口的转移。
其中一个实施例中,当所述交换芯片连接的上游主机发生故障时,故障备份的过程包括:中断上报给所述管理端口对应的上游主机故障发生;所述管理端口通过配置直接禁用发生故障的上游主机的下游端口来停止所述下游端口新事务的出现,并上报发生故障的上游主机所连接的上游端口处于空闲状态;根据管理指令,移除需要重分配的上游端口所连接的上游主机,并发送热复位到所有属于该上游端口结构下的所有端口,或将需要重分配的上游端口所管理的所有端口进行重新分配。
其中一个实施例中,当所述活跃管理端口发生故障,故障备份的过程包括:在所述备用管理端口确认当前的活跃管理端口不再活跃时,所述备用管理端口将所述管理端口控制寄存器的备用管理端口字段和活跃管理端口字段的内容进行调换,并始终保持使能活跃管理端口控制位和使能备用管理端口控制位有效;所述备用管理端口取代原来的活跃管理端口,完成故障转移,并读取相应寄存器,来确定是否有活跃中断需要处理,并通知其它上游主机提升了一个新的活跃管理端口。
其中一个实施例中,当所述交换芯片连接的上游主机发生故障时,由非透明桥端口连接的主机取代发生故障的主机,其过程包括:通过管理端口写所述非透明桥端口的端口向量寄存器,从原始虚拟交换层次结构中移除非透明桥端口,然后再次写所述端口向量寄存器添加非透明桥端口到故障虚拟交换机;非透明桥端口写故障转移寄存器来重新指定当前虚拟交换的上游端口并映射到对应的寄存器,将自身设置为上游端口,把故障上游端口设置为下游端口或新的非透明桥端口,完成故障主机向所述非透明桥端口连接的主机的故障转移。
本申请实施例的第二方面还公开了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请实施例第一方面提供的基于PCIe交换芯片的虚拟交换模式控制方法的步骤。
本发明实施例与现有技术相比存在的有益效果是:公开了一种允许一个(基本模式)或多个相互独立的(虚拟交换模式)PCIe桥的层次结构。在虚拟交换模式下,交换芯片最多可以同时创建多个虚拟交换机,允许每个主机扇出各自的端点,并且该系统支持高的可用性、故障备份、冗余结构和集群系统。虚拟交换机主机之间没有数据通路。虚拟交换模式有效分离交换芯片,使其看起来像多个独立的交换机却又在一个物理结构内,这样减少了扇出所需的交换机数量,有效的节省了板级空间和功耗。
附图说明
图1为交换芯片使能不同虚拟交换的示意图;
图2为本申请一实施例提供的虚拟交换模式控制方法的流程图;
图3为本申请一实施例提供的交换芯片缺省配置表;
图4为本申请一实施例提供的虚拟交换模式下交换芯片内部的链路连接状态示意图;
图5为本申请一实施例提供的故障备份后交换芯片内部的链路连接状态示意图。
具体实施方式
为了使本申请所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
需要说明的是,当元件被称为“固定于”或“设置于”另一个元件,它可以直接在另一个元件上或者间接在该另一个元件上。当一个元件被称为是“连接于”另一个元件,它可以是直接连接到另一个元件或间接连接至该另一个元件上。
需要理解的是,术语“长度”、“宽度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
本申请实施例的第一方面提供一种基于PCIe交换芯片的虚拟交换模式控制方法,交换芯片具有基本模式和虚拟交换模式,基本模式下交换芯片允许一个PCIe桥的层次结构,虚拟交换模式下交换芯片允许多个相互独立的PCIe桥的层次结构,其中,交换芯片包括:多个端口,用于连接上游主机和下游设备,这里的端口包括物理层接口和端口控制器,物理层接口用于实现PCIe物理层的物理媒介适配层(Physical Media Attachment Layer,PMA)和物理编码子层(Physical Coding Sublayer,PCS)的功能,端口控制器用于实现物理层的介质访问控制层(Media Access Layer,MAC)、数据链路层和事务层的功能。
虚拟交换使能寄存器,用于定义虚拟交换的使能位。一个虚拟交换对应虚拟交换使能寄存器的一个使能位,该位有效的时候,对应的虚拟交换使能,该位无效的时候,对应的虚拟交换不使能。
上游端口指示寄存器,用于指示每个虚拟交换的上游端口号,一个虚拟交换拥有一个上游端口指示寄存器。
管理端口控制寄存器,用于指定或使能交换芯片的管理端口,定义每个虚拟交换包含哪些端口,一个虚拟交换对应一个虚拟交换所含管理端口控制寄存器,虚拟交换所含管理端口控制寄存器的位数不小于芯片的端口数,寄存器的每一位对应芯片的一个端口。一个管理端口控制寄存器某位有效时,表示该位对应的端口属于该虚拟交换所含管理端口控制寄存器指定的虚拟交换。一个虚拟交换所含管理端口控制寄存器某位无效时,表示相应的端口不属于该虚拟交换所含管理端口控制寄存器指定的虚拟交换。
虚拟端口向量寄存器,用于将该寄存器对应的端口分配给对应的虚拟交换。
图2所示的交换芯片的缺省配置表,虚拟交换表包含三组寄存器虚拟交换使能寄存器(Virtual Switch Enable)、上游端口指示寄存器(VSx Upstream)和虚拟端口向量寄存器(VSx Port Vector),这三组寄存器分别定义了虚拟交换模式使能的虚拟交换数量、每个虚拟交换的上游端口以及每个虚拟交换由哪些端口组成。
请参阅图3,基于PCIe交换芯片的虚拟交换模式控制方法包括:
步骤S100、通过读取虚拟交换使能寄存器值,确定交换芯片在虚拟交换模式下使能的虚拟交换数量;
具体地,结合图2所示,初始化交换芯片进入虚拟交换模式,在交换芯片上电复位之后,通过读取端口0的配置空间的虚拟交换使能寄存器的使能位VSx,知道交换芯片使能的虚拟交换数量,这里的端口0可以是交换芯片使能并指定的管理端口,也可以是交换芯片的其他端口。虚拟交换使能寄存器、上游端口指示寄存器都位于端口0。
步骤S200、通过读取上游端口指示寄存器的字段确定每个虚拟交换的上游端口;
具体地,结合图2所示,通过读取端口0的配置空间输入的上游端口指示寄存器(VSx Upstream)的VS1~VS5 Upstream Port字段来确定每个虚拟交换的上游端口。在实际运用时,每个虚拟交换必须含有一个上游端口,可以有多个下游端口,也可以没有下游端口,每个虚拟交换有自己专属的复位、中断和错误处理机制,互不干扰。每个虚拟交换的上游端口可以访问所属虚拟交换定义的每个端口寄存器。
步骤S300、通过读取管理端口控制寄存器值来使能并指定管理端口;
具体地,结合图2所示,在交换芯片上电复位后,通过读取端口0配置空间的管理端口控制寄存器(Management Port Control)寄存器的启用活跃管理端口(ActiveManagement Port Enable)位和活跃管理端口(Active Management Port)位,可以使能并指定管理端口,同时让每个端口的链路使能,使得各个端口的链路能够开始进入链路训练和初始化。
步骤S400、将虚拟端口向量寄存器对应的端口分配给对应的虚拟交换;
具体地,结合图2所示,进行虚拟交换端口分配,交换芯片的一个端口可任意分配给某个虚拟交换,将虚拟端口向量寄存器(VSx Port Vector)对应的端口置位,就能将该寄存器对应的端口分配给寄存器对应的虚拟交换。任何时候,一个端口只能分配给一个虚拟交换。因此,任何时候VSx Port Vector寄存器的每一位只能在上述一个寄存器中置位。
交换芯片通过读取虚拟端口向量寄存器确定虚拟交换的端口构成、虚拟交换的上下游端口,通过工作模式输出的信号发送到相应端口的路由模块中,确认每个端口所属的虚拟交换和上游端口。这样就完成了交换芯片的虚拟交换功能的实现。
本申请实施例的第一方面提供一种基于PCIe交换芯片的虚拟交换模式控制方法,交换芯片具有基本模式和虚拟交换模式,在虚拟交换模式下,交换芯片最多可以同时创建多个虚拟交换机,允许每个主机扇出各自的端点,并且该系统支持高的可用性、故障备份、冗余结构和集群系统。虚拟交换机主机之间没有数据通路。虚拟交换模式有效分离交换芯片,使其看起来像多个独立的交换机却又在一个物理结构内,这样减少了扇出所需的交换机数量,有效的节省了板级空间和功耗。
在一实施例中,请参阅图4所示的交换芯片内部的链路连接状态示意图,将交换芯片100一个物理交换分成三个虚拟交换的实例:一个管理端口和两个规范的PCIe三端口交换机。其中,主机10、主机20、主机30为连接各自上游端口的主机;管理端口110不仅是上游端口还是交换芯片100的管理端口,可以访问其余所有层级(如图4中较细的连接线所示)。上游端口120、上游端口130为普通上游端口,下游端口210和下游端口220为上游端口120连接的下游端口,下游端口230和下游端口240为上游端口130连接的下游端口,设备121和设备122分别为下游端口210和下游端口220连接的设备,设备131和设备132分别为下游端口230和下游端口240连接的设备。
其中,设定管理端口110所在的虚拟交换为虚拟交换一,上游端口120和下游端口210、下游端口220所在的虚拟交换为虚拟交换二,上游端口130和下游端口230、下游端口240所在的虚拟交换为虚拟交换三。
在上述的步骤S100和步骤S200中,即使能管理端口控制寄存器和链路连接之前,通过不同的方法可以改写虚拟交换表中寄存器的值,实现使能或禁用某个虚拟交换。
具体地,其中一个实施例中,在步骤S100和步骤S200中,即在通过读取管理端口控制寄存器值来使能并指定管理端口的步骤之前,采用带电可擦除只读存储器(Electrically Erasable Programmable read only memory,EEPROM)对交换芯片进行初始化,EEPROM设备内部包括交换芯片的虚拟交换表信息,芯片上电的时候,通过EEPROM接口控制器模块从外接的EEPROM芯片读取待配置寄存器地址和配置数据,发送到配置模块,初始化加载配置各个端口的寄存器,这些寄存器中就包括虚拟交换使能寄存器、上游端口指示寄存器以及虚拟端口向量寄存器。参阅图3所示的芯片缺省配置表,根据TESTMODE[2:0]和VS_MODE的三态输入进行模式的选择,当选择三个虚拟交换的虚拟交换模式,那这两个引脚信号组合按照交换表对应设置即可。
具体地,其中一个实施例中,在步骤S100和步骤S200中,即在通过读取管理端口控制寄存器值来使能并指定管理端口的步骤之前,采用I2C或UART的方式改写寄存器的值,I2C或UART所配置的内容包含交换芯片的虚拟交换表信息。
其中,采用I2C(Inter-Integrated Circuit,I2C)总线的方式改写寄存器的值,参阅图3,包括:
根据模式选择引脚TESTMODE[2:0]和虚拟交换模式使能引脚VS_MODE的三态输入进行基本模式和虚拟交换模式的选择;
设置I2C_SMBUS_CFG_EN#为L;
上电之后,开始I2C配置虚拟交换表信息,所配置的内容必须要包含所期望的虚拟交换表所有信息;
I2C置位交换表配置完成寄存器,让所有链路开始连接;
等待所有链路完成链路训练,等待主机完成枚举;
虚拟交换正常工作,当前虚拟交换结果为I2C配置虚拟交换表信息的设置。
可以理解地是,采用通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,UART)的方式改写寄存器的值的过程与I2C方式类似,这里不在赘述。
具体地,其中一个实施例中,在交换芯片进入虚拟交换模式以及选择确定每个虚拟交换的上游端口的步骤中,采用管理端口改写寄存器的值,管理端口通过配置寄存器来确定每个虚拟交换的端口分配情况,具体包括:
根据模式选择引脚TESTMODE[2:0]和虚拟交换模式使能引脚VS_MODE的三态输入进行基本模式和虚拟交换模式的选择;
设置I2C_SMBUS_CFG_EN#为H,MGMT_PORT_EN为Z,UPSTRM_PORTSEL[2:0]定义管理端口号;
上电后,等待管理端口链路完成链路训练,等待主机对其进行枚举;
管理端口配置所有上游端口指示寄存器和虚拟端口向量寄存器,确定每个虚拟交换的端口分配情况;
管理端口配置交换表配置完成寄存器为1;
等待其它所有链路完成链路训练,等待主机完成枚举。
其中一个实施例中,管理端口分为活跃管理端口和备用管理端口,当交换芯片指定某个端口为管理端口且该管理端口使能后,该管理端口用于控制交换芯片,当该管理端口连接的主机发生故障时,备用管理端口提升为新的管理端口;管理端口可以访问交换芯片的所有寄存器,并用于实现以下功能:配置虚拟交换,包括指定虚拟交换机的上游端口和所属的下游端口;将端口由一个虚拟交换搬迁到另一个虚拟交换;监控所有虚拟交换的链路状态;配置交换芯片的寄存器;采用软件读写EEPROM、配置扩展只读存储器(Read OnlyMemory,ROM)功能的部分寄存器设置。
具体的,交换芯片选择三个虚拟交换的虚拟交换模式下,交换芯片复位后,端口0会加载引脚UPSTRM_PORTSEL[2:0]的值,用于指定管理端口,且同时满足该端口已被使能,管理端口使能打开,那么该端口可作为管理端口控制虚拟交换机,如图4中的管理端口110。当管理端口连接的上游主机发生故障,备用管理端口可以将自己提升为新的管理端口。备用管理端口将自己提升为管理端口的实现方法和应用有关。在管理端口正常工作的情况下,其它端口包括备用管理端口都不能读写虚拟交换机表(virtual switch table)寄存器,即控制虚拟交换相关的寄存器。
其中一个实施例中,交换芯片还具有故障备份功能,交换芯片在故障备份的过程中多个虚拟交换及其对应的端口会进行重新配置,包括:重分配下游端口、下游设备的突然迁移、重分配上游端口、上游端口的突然迁移以及管理端口的转移。
其中一个实施例中,当交换芯片连接的上游主机发生故障时,故障备份的过程包括:
中断上报给管理端口对应的上游主机故障发生;
管理端口通过配置直接禁用发生故障的上游主机的下游端口来停止下游端口新事务的出现,并上报发生故障的上游主机所连接的上游端口处于空闲状态;
根据管理指令,移除需要重分配的上游端口所连接的上游主机,并发送热复位到所有属于该上游端口结构下的所有端口,或将需要重分配的上游端口所管理的所有端口进行重新分配。
具体地,在一实施例中,请参阅图5,当计划中的和非计划中的事件引起了主机20发生故障,首先会有中断上报给管理端口110对应的主机10,告知主机10当前的主机20已发生故障,管理端口110通过配置直接禁用(disable)掉下游端口210、下游端口220来停止下游端口新的事务出现,并把上游端口120的出口控制和状态(egress control and status)寄存器的端口活跃位(port activity)拉高,上报上游端口120处于空闲状态,此时管理员可移除上游端口120所连接的设备,发送热复位到所有属于此根端口结构下的所有端口,包括上游端口120、下游端口210和下游端口220,也可以对这些端口重新进行分配。
进一步地,如图4、图5所示,虚拟交换二的下游端口210和下游端口220被虚拟交换三的上游端口130接管,上游端口120进行降级重分配,也可以重分配到其它虚拟交换。上游端口120的重分配过程为:
设置虚拟交换二的下游端口210和下游端口220被禁用,软件读取到上游端口130处于空闲状态;
软件告知管理者将要被重分配的上游端口120空闲;
管理者移除需要重分配的上游端口130所连接的设备;
被重分配的上游端口120所在的虚拟交换二整体进行热复位;
被重分配的上游端口120所管理的虚拟交换二所有端口,包括上游端口120、下游端口210和下游端口220,可以进行再分配。如图5所示,虚拟交换二的下游端口210和下游端口220重分配到了虚拟交换三的下游。
其中一个实施例中,当活跃管理端口发生故障时,故障备份的过程包括:
在备用管理端口确认当前的活跃管理端口不再活跃时,备用管理端口将管理端口控制寄存器的备用管理端口字段和活跃管理端口字段的内容进行调换,并始终保持使能活跃管理端口控制位和使能备用管理端口控制位有效;
备用管理端口取代原来的活跃管理端口,完成故障转移,并读取相应寄存器,来确定是否有活跃中断需要处理,并通知其它上游主机提升了一个新的活跃管理端口。
故障备份主机和其余主机交流状态,并且在故障备份事件被触发时执行故障备份,通过故障备份有效的减少了PCIe设备资源的闲置时间,提高PCIe设备的利用率。
其中一个实施例中,当交换芯片连接的上游主机发生故障时,由非透明桥(NT)端口连接的主机取代发生故障的主机,其过程包括:
通过管理端口写NT端口的端口向量寄存器,从原始虚拟交换机层次结构中移除NT端口,然后再次写该寄存器添加NT端口到故障虚拟交换机;
NT端口写故障转移寄存器来重新指定当前虚拟交换的上游端口并映射到对应的寄存器,将自身设置为上游端口,把故障上游端口设置为下游端口或新的NT端口,完成故障主机向NT端口连接的主机的故障转移。进一步地,管理端口确认无数据传递后重新编程下游端口,新的虚拟交换接收到下游端口的热插拔消息时根据自身当前的情况来判断是否需要重新枚举。
在多主机系统中,当两个主机同时活跃,管理各自的系统域,仅通过门铃寄存器和I2C从机接口来交换状态信息。设备在心跳信息停止时触发故障备份。在故障备份中,幸存的主机复位连接到失效CPU的端点,然后枚举这些端点到自己的域中,并且不会影响早已连接到该域的端点。主机故障备份不仅仅是一对一的还可以实现N+1的故障备份,当虚拟交换使能多个主机,每个主机管理着一堆存储设备,与其它主机相互独立,用户可以指定其中一个主机作为其余所有主机的故障备份主机,同时管理它自己的端点。故障备份主机和其余主机交流状态(心跳信息),并且在故障备份事件被触发时执行故障备份。故障备份有效的减少了PCIe设备资源的闲置时间,增加了PCIe设备的利用率。
需要说明的是,实现了本申请的交换芯片,对于不需要支持虚拟交换的场景同样可以使用,此时,只需要将整个交换芯片的端口配置在一个虚拟交换之中,运行的时候,用户就感受不到虚拟交换的存在了。
本申请还公开了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请实施例第一方面提供的虚拟交换模式控制方法的步骤。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (7)

1.基于PCIe交换芯片的虚拟交换模式控制方法,所述交换芯片具有基本模式和虚拟交换模式,所述基本模式下所述交换芯片允许工作在一个PCIe桥的层次结构,所述虚拟交换模式下所述交换芯片允许工作在多个相互独立的PCIe桥的层次结构,其中,所述交换芯片包括:
多个端口,用于连接上游主机和下游设备;
虚拟交换使能寄存器,用于定义虚拟交换的使能位;
上游端口指示寄存器,用于指示每个虚拟交换的上游端口号;
管理端口控制寄存器,用于指定或使能所述交换芯片的管理端口;以及
虚拟端口向量寄存器,用于将该寄存器对应的端口分配给对应的虚拟交换;
所述虚拟交换模式控制方法包括:
通过读取所述虚拟交换使能寄存器值,确定所述交换芯片在虚拟交换模式下使能的虚拟交换数量;
通过读取所述上游端口指示寄存器的字段确定每个所述虚拟交换的上游端口;
通过读取所述管理端口控制寄存器值来使能并指定管理端口;
将所述虚拟端口向量寄存器对应的端口分配给对应的所述虚拟交换;
所述管理端口分为活跃管理端口和备用管理端口,当所述交换芯片指定某个端口为管理端口且该管理端口使能后,该管理端口用于控制所述交换芯片,当该管理端口连接的主机发生故障时,备用管理端口提升为新的管理端口;
所述管理端口可以访问所述交换芯片的所有寄存器,并用于实现以下功能:
配置虚拟交换,包括指定虚拟交换机的上游端口和所属的下游端口;
将端口由一个虚拟交换搬迁到另一个虚拟交换;
监控所有虚拟交换的链路状态;
配置交换芯片的寄存器;
采用软件读写EEPROM、配置扩展ROM功能的寄存器设置;
所述交换芯片还具有故障备份功能,所述交换芯片在故障备份的过程中多个所述虚拟交换及其对应的端口会进行重新配置,包括:重分配下游端口、下游设备的突然迁移、重分配上游端口、上游端口的突然迁移以及管理端口的转移;
当所述交换芯片连接的上游主机发生故障时,由非透明桥端口连接的主机取代发生故障的主机,其过程包括:
通过管理端口写所述非透明桥端口的端口向量寄存器,从原始虚拟交换层次结构中移除非透明桥端口,然后再次写所述端口向量寄存器添加非透明桥端口到故障虚拟交换机;
非透明桥端口写故障转移寄存器来重新指定当前虚拟交换的上游端口并映射到对应的寄存器,将自身设置为上游端口,把故障上游端口设置为下游端口或新的非透明桥端口,完成故障主机向所述非透明桥端口连接的主机的故障转移;管理端口确认无数据传递后重新编程下游端口,新的虚拟交换接收到下游端口的热插拔消息时根据自身当前的情况判断是否需要重新枚举。
2.如权利要求1所述的虚拟交换模式控制方法,其特征在于,在所述通过读取所述管理端口控制寄存器值来使能并指定管理端口的步骤之前的步骤中,采用EEPROM改写寄存器的值,所述EEPROM设备内部包括所述交换芯片的虚拟交换表信息。
3.如权利要求1所述的虚拟交换模式控制方法,其特征在于,在所述通过读取所述管理端口控制寄存器值来使能并指定管理端口的步骤之前的步骤中,采用I2C或UART的方式改写寄存器的值,I2C或UART所配置的内容包含所述交换芯片的虚拟交换表信息。
4.如权利要求1所述的虚拟交换模式控制方法,其特征在于,在所述通过读取所述管理端口控制寄存器值来使能并指定管理端口的步骤之前的步骤中,采用管理端口改写寄存器的值,管理端口通过配置寄存器来确定每个虚拟交换的端口分配情况。
5.如权利要求1所述的虚拟交换模式控制方法,其特征在于,当所述交换芯片连接的上游主机发生故障时,故障备份的过程包括:
中断上报给所述管理端口对应的上游主机故障发生;
所述管理端口通过配置直接禁用发生故障的上游主机的下游端口来停止所述下游端口新事务的出现,并上报发生故障的上游主机所连接的上游端口处于空闲状态;
根据管理指令,移除需要重分配的上游端口所连接的上游主机,并发送热复位到所有属于该上游端口结构下的所有端口,或将需要重分配的上游端口所管理的所有端口进行重新分配。
6.如权利要求1所述的虚拟交换模式控制方法,其特征在于,当所述活跃管理端口发生故障,故障备份的过程包括:
在所述备用管理端口确认当前的活跃管理端口不再活跃时,所述备用管理端口将所述管理端口控制寄存器的备用管理端口字段和活跃管理端口字段的内容进行调换,并始终保持使能活跃管理端口控制位和使能备用管理端口控制位有效;
所述备用管理端口取代原来的活跃管理端口,完成故障转移,并读取相应寄存器,来确定是否有活跃中断需要处理,并通知其它上游主机提升了一个新的活跃管理端口。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1至6任意一项所述的虚拟交换模式控制方法的步骤。
CN202210779963.0A 2022-07-04 2022-07-04 基于PCIe交换芯片的虚拟交换模式控制方法 Active CN115334015B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210779963.0A CN115334015B (zh) 2022-07-04 2022-07-04 基于PCIe交换芯片的虚拟交换模式控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210779963.0A CN115334015B (zh) 2022-07-04 2022-07-04 基于PCIe交换芯片的虚拟交换模式控制方法

Publications (2)

Publication Number Publication Date
CN115334015A CN115334015A (zh) 2022-11-11
CN115334015B true CN115334015B (zh) 2024-04-02

Family

ID=83916591

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210779963.0A Active CN115334015B (zh) 2022-07-04 2022-07-04 基于PCIe交换芯片的虚拟交换模式控制方法

Country Status (1)

Country Link
CN (1) CN115334015B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103117929A (zh) * 2013-01-31 2013-05-22 中国科学院计算技术研究所 一种基于PCIe数据交换的通信方法及系统
CN111092773A (zh) * 2019-12-25 2020-05-01 成都九芯微科技有限公司 一种支持虚拟交换的pcie交换芯片端口配置系统和方法
CN112799991A (zh) * 2021-01-07 2021-05-14 牛芯半导体(深圳)有限公司 Pcie交换芯片

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5232602B2 (ja) * 2008-10-30 2013-07-10 株式会社日立製作所 ストレージ装置、及びストレージコントローラ内部ネットワークのデータ経路フェイルオーバー方法
JP5074457B2 (ja) * 2009-06-04 2012-11-14 株式会社日立製作所 計算機システム、スイッチ切り替え方法及びpciスイッチ
TWI597953B (zh) * 2015-11-25 2017-09-01 財團法人工業技術研究院 具故障轉移能力的快速周邊元件互連網路系統與操作方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103117929A (zh) * 2013-01-31 2013-05-22 中国科学院计算技术研究所 一种基于PCIe数据交换的通信方法及系统
CN111092773A (zh) * 2019-12-25 2020-05-01 成都九芯微科技有限公司 一种支持虚拟交换的pcie交换芯片端口配置系统和方法
CN112799991A (zh) * 2021-01-07 2021-05-14 牛芯半导体(深圳)有限公司 Pcie交换芯片

Also Published As

Publication number Publication date
CN115334015A (zh) 2022-11-11

Similar Documents

Publication Publication Date Title
US8082466B2 (en) Storage device, and data path failover method of internal network of storage controller
CN110312999B (zh) 基于软件配置/策略分发的PCIe盘阵列的动态划分
US7506094B2 (en) Method using a master node to control I/O fabric configuration in a multi-host environment
US8359415B2 (en) Multi-root I/O virtualization using separate management facilities of multiple logical partitions
US8412863B2 (en) Storage apparatus and virtual port migration method for storage apparatus
JP2000311156A (ja) 再構成可能並列計算機
WO2012150608A1 (en) Peripheral device sharing in multi host computing systems
CN101000591A (zh) 基于嵌入式cpu的双机冗余系统
EP3716084A1 (en) Apparatus and method for sharing a flash device among multiple masters of a computing platform
JP2503183B2 (ja) バス・アダプタ・システム
CN112084128B (zh) 消息中断通信方法、计算机设备和存储介质
CN104050118A (zh) 提供对设备功能的访问的装置、系统和方法
CN107085503A (zh) 存储设备、存储系统及信息处理方法
US20120059966A1 (en) Storage device and method for managing size of storage device
CN115334015B (zh) 基于PCIe交换芯片的虚拟交换模式控制方法
EP3959620B1 (en) Processor/endpoint communication coupling configuration system
US11836393B2 (en) Storage system and control method of migrating storage control unit based on maximum amount of mountable storage control units
CN116204448A (zh) 一种多端口固态硬盘及其控制方法、装置、介质、服务器
TWI771952B (zh) 利用基板管理控制器進行韌體更新動作的伺服器系統
US20220326869A1 (en) Storage system and control method for storage system
CN112799991B (zh) Pcie交换芯片
US20040177198A1 (en) High speed multiple ported bus interface expander control system
CN110175092B (zh) 一种基于PCIe的多接口存储设备
KR20220132333A (ko) PCIe 인터페이스 장치 및 그 동작 방법
CN111737062A (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