CN101669082A - 集群化多个独立的高速pci层次结构的装置和方法 - Google Patents

集群化多个独立的高速pci层次结构的装置和方法 Download PDF

Info

Publication number
CN101669082A
CN101669082A CN200780051203A CN200780051203A CN101669082A CN 101669082 A CN101669082 A CN 101669082A CN 200780051203 A CN200780051203 A CN 200780051203A CN 200780051203 A CN200780051203 A CN 200780051203A CN 101669082 A CN101669082 A CN 101669082A
Authority
CN
China
Prior art keywords
hierarchical structure
affairs
local
cluster ports
cluster
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.)
Granted
Application number
CN200780051203A
Other languages
English (en)
Other versions
CN101669082B (zh
Inventor
J·R·克洛普纳
D·E·盖茨
R·E·斯塔伯斯
M·H·艾尔-巴塔尔
R·J·亨利
C·E·尼科尔斯
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.)
Avago Technologies International Sales Pte Ltd
Original Assignee
Infineon Technologies North America Corp
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 Infineon Technologies North America Corp filed Critical Infineon Technologies North America Corp
Publication of CN101669082A publication Critical patent/CN101669082A/zh
Application granted granted Critical
Publication of CN101669082B publication Critical patent/CN101669082B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • 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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

集群化多个高速PCI层次结构以使得能够访问不同层次结构中的组件的装置、系统和方法。每个高速PCI层次结构包括根设备以及通过高速PCI交换结构将每个层次结构耦接至物理集群的每一个其它层次结构的集群端口。通过每个层次结构的集群端口重映射存储器地址和事务ID以将多层次结构系统的高速PCI空间分区。所分区空间的第一部分被保留用于对层次结构内的本地组件的访问。空间的第二部分用来从不同的第一层次结构内访问其它层次结构的远程组件。通过每个层次结构的集群端口重映射和使用在这种远程事务中交换的地址和事务ID值以路由使用标准的PCIe根设备、端点设备和交换机的层次结构之间的交换。

Description

集群化多个独立的高速PCI层次结构的装置和方法
技术领域
[0001]本发明涉及高速PCI(PCI Express)系统架构并且更具体地涉及修改高速PCI架构来使得能够进行多个独立的高速PCI层次结构的互连以形成互连的高速PCI层次结构集群,所述集群可以共享对集群化的层次结构中任何一个中的端点设备的访问。
背景技术
[0002]计算机外围组件互连标准(“PCI”)已经成为一种流行的计算机系统互连标准很多年了。被称为“高速PCI”(“PCIe”)的PCI架构的最新变化将PCI互连标准家族扩展为包括系统内的主设备和从设备之间的总线事务的高速串行交换。一般而言,使用PCI互连(包括PCIe)的系统具有负责初始地配置系统参数和系统组件之间的PCI互连参数的指定的根设备。按照类似的方式,PCIe标准包括配置PCIe互连路径的各个方面以及系统内各个端点设备的配置参数的这种根设备。PCIe协议和介质的高速串行特性允许使用连网领域中公知的高速交换设备。因而,具有根设备的层次结构中的端点设备可以分布得更广且仍然通过PCIe交换机/多个交换机(即,PCIe交换结构(switched fabric)连接)与层次结构中的其它设备连接。PCIe层次结构中的根设备通常配置该结构(fabric)的交换机以允许基于所应用的事务的各种参数来交换事务。
[0003]在并行总线结构PCI系统以及高速串行PCIe系统中,包含单个根设备和任意数目的端点设备的系统通常被称为单个PCI层次结构。如上所述,这种单个层次结构的根设备一般负责配置互连介质和协议以及端点设备的各种配置属性。一旦这样配置以后,各种设备可以在启动与同一层次结构内的从设备的事务时临时承担主设备角色。
[0004]在较老的并行总线结构PCI层次结构中,每个PCI层次结构通常不能与具有另一个根设备的第二PCI层次结构的组件进行通信。而且,每个层次结构通常是分离的并且独立的,使得其具有单个根设备及其相关联的端点设备集。PCI层次结构的这种分离有助于避免具有多个根设备时所存在的问题,即每个根设备都试图初始化PCI总线结构的多个片段(segment)和/或试图用不同配置信息初始化相同的端点设备。然而,这种分离通常还使一个层次结构不能容易地访问另一个层次结构内的组件,这种访问使得每个层次结构可以共享对端点设备的访问,从而提高处理及其中通信功率的利用率。尽管PCI桥设备已知用来允许耦接其它分离的PCI总线片段,但这类设备给系统增加了较大的成本和管理复杂性。
[0005]即使具有PCIe介质和协议的可交换的、串行化的通信,仍然常常分离PCI层次结构,使得一个层次结构不能容易地访问第二个层次结构中的端点设备。事实上,当前的PCIe标准和规范排除了一个系统内有多个根设备的情况,而相反将系统限定为仅仅包括单个根设备——即,单个层次结构包括单个根设备及其相关联的端点设备。因而,多个层次结构中的每一个可完全独立于任何其它层次结构来操作并且不能共享对每一个都具有相应根设备的不同层次结构中的组件的访问。
[0006]尽管目前没有被标准化为公布的、工业领域所采用的规范,但PCISIG(PCI特别兴趣小组——定义PCI架构的实际工业标准机构)近来所进行的开发已经开始定义允许在一个PCIe系统中有多个根设备的架构。PCISIG已经提出了多根(multi-root)I/O结构,使得多个层次结构可以物理地集成并且在单个系统内物理地互连——即,每个层次结构具有单个指定的根设备并且具有相关联的端点设备,所有设备共享公共的物理的、交换的连接。然而,即使这些改进(evolving)的标准也仍然逻辑地分离端点设备集,使得每个端点设备仅仅可以由系统内的单个层次结构来访问。换言之,每个设备是单个层次结构的成员,该层次结构包括仅仅与该一个层次结构相关联的设备集及其相应的根设备。尽管多个端点设备可以共享单个物理设备并且共享公共的互连,但它们必须被分派给不同的层次结构。因而,尽管多个层次结构可以物理地互连,但在系统的各个层次结构之间不准许访问的共享。而且,改进的PCIe设备和交换机逻辑地分离设备(每一个设备到其所在的层次结构),尽管设备可以通过改进的交换设备来共享公共的物理通信路径。此外,对于需要访问特定物理设备的每个层次结构,则必须为每个层次结构提供单独的逻辑端点结构。这种要求将能够访问物理设备的层次结构的数目限制为由物理设备所提供的逻辑端点设备的数目。
[0007]此外,用于多根虚拟化和PCISIG内的分享改进的改进标准涉及符合高速PCI的交换机和设备上的较大改变。改进的、修改后的PCIe所分包的事务的交换需要改进的交换机和设备。换言之,根设备和PCIe交换机必须是多根感知的(aware)(在所提出的改进标准中被定义为“MRA”),以允许多个层次结构在通过改进的PCIe交换机共享公共的物理附件的系统内共存。PCISIG的改进标准被公开(documented)在www.pcisig.com上,并且对于PCI系统架构领域内的普通技术人员而言是公知的。
[0008]为了准许在多个层次结构之间共享设备,现有解决方案通常需要通过其它互连介质和协议耦接系统的层次结构以提供期望的层次结构之间的设备共享。例如,光纤通道、以太网络以及其它公知的网络连接介质和协议可以用来互连各种层次结构,从而提供对集群的每个层次结构中的端点设备的共享访问。然而,这些以及其它连网解决方案给这种共享访问的处理增加了较大的开销。对另一个层次结构中的远程设备的访问必须首先从PCIe所封包的事务转换为用于与其它层次结构网络交换的另一种协议。这种协议转换能给期望的共享访问增加显著的处理开销,并且因而在高性能应用中实际上可能是不可用的。
[0009]鉴于上述讨论,清楚地存在如下问题:在每一个层次结构具有相关联的根设备的物理集群中提供多个PCIe层次结构之间的端点设备共享。
发明内容
[0010]通过提供用于集群化多个PCIe层次结构而使得每个层次结构可以共享对物理集群中其它层次结构的组件的访问的装置、系统和方法,本发明解决了上述及其它问题,从而改进了有用技术的现状。每个层次结构包括根据本发明各个特征和方面的集群端口,其转换或者重映射在第一PCIe层次结构和多层次结构系统中的多个PCIe层次结构中其它任何一个之间交换的存储器地址和其它事务信息。使用每个层次结构中的集群端口重映射标准高速PCI空间(存储器地址空间和配置空间),使得该空间的预留的第一部分专用于每个层次结构内的本地事务,而全部PCIe空间的第二部分用来识别要从第一层次结构导向第二或远程层次结构内的组件的事务。标准PCIe空间的重映射允许使用当前PCIe架构设备(根设备、端点设备和PCIe交换机)而不需要增加由PCISIG所提出的改进的多根感知标准的成本和复杂性。而且,根据本发明各个特征和方面的与每个层次结构相关联的集群端口通过将整个PCIe空间分区为较小的片段或者部分而提供必需的重映射或者转换。第一部分与每个PCIe层次结构内的本地访问相关联而剩余部分由每个层次结构用来引用(reference)多个PCIe层次结构的另一个层次结构内的组件。
附图说明
[0011]图1是当前所应用的其中每个层次结构独立于其它层次结构并且通常不能有效地访问另一个层次结构的组件的多PCIe层次结构系统的框图。
[0012]图2是根据本发明各个特征和方面的、具有其中每个层次结构可以访问其它层次结构的组件的多PCIe层次结构的系统的框图。
[0013]图3和图4提供了根据本发明各个特征和方面的、与每个层次结构相关联的、用来提供集群的第一和第二层次结构之间交换的事务的映射和转换的集群端口的示例性附加细节。
[0014]图5和图6是描述根据本发明各个特征和方面的、用于准许多个层次结构之间路由的、存储器地址和事务ID的不同映射的框图。
[0015]图7和图8是描述根据本发明各个特征和方面的、可以在集群的第一和第二层次结构之间交换的存储器地址和事务ID的映射或转换过程的图。
[0016]图9和图10是描述根据本发明各个特征和方面的在PCIe层次结构集群中的第一和第二层次结构之间交换事务的方法的流程图。
具体实施方式
[0017]图1是示出了具有每个均耦接至相应服务器的多个存储控制器102和122的典型计算组织(enterprise)100的框图。通常配置是控制器中每一个都可以适合于支持特定的主机附接介质和协议。例如,一个存储控制器102可以适合于与附接的服务器(attachedserver)的光纤通道通信协议,而第二存储控制器122可以适合于iSCSI或者任何其它合适的协议。因而,组织100中的多个存储控制器通常使用多个连接协议和介质来将存储系统和设备耦接至各种服务器。
[0018]如本领域所公知的,典型存储控制器102可以包括用于耦接至附接的服务器的主机I/O接口设备104。此外,典型存储控制器102可以包括用于将存储控制器102耦接至相关联的驱动池114的驱动侧I/O接口设备112。驱动池114可以包括,例如,磁盘驱动器或者响应于来自附接的服务器的请求而存储和检索数据的其它合适存储介质。存储控制器102内的根设备108可以控制存储控制器的全部操作,并且通过使用PCIe交换机106选择性地通过主机I/O设备104和/或通过驱动侧I/O设备112访问信息来访问驱动池114中的信息。存储器110可以耦接至根设备108并且可以用于存储相关控制数据以及缓存与附接的服务器所生成的I/O请求相关联的用户数据。示例性存储控制器122可以基本上与存储控制器102相同,并且可以包括主机I/O接口设备124、PCIe交换机126、根设备128、存储器130以及用于耦接至相关联的驱动池134的驱动侧I/O接口设备132。
[0019]如上所述,当前在本领域中所应用的存储控制器102和122不能容易地共享信息。例如,如图1所示,在存储控制器102和存储控制器122之间可能不存在连接。而且,这样的组织可能依赖于附接的服务器来交换接着可以与存储控制器102和122中的每一个共享的相关信息。在其它已知的解决方案(未示出)中,单独的通信通道可以用于在存储控制器102和122之间直接交换信息。例如,可以在控制器102和控制器122之间建立单独的光纤通道连接。或者,例如,可以在存储控制器102和控制器122之间建立单独的InfiniBand通道。许多其它实例(包括例如标准计算机连网接口介质和协议)对于本领域技术人员而言是公知的。
[0020]如上所述,多个存储控制器之间的所有已知的这种连接均依赖于与每个存储控制器内的PCIe互连结构不同的单独通信通道。因而,存储控制器102和存储控制器122之间的信息交换需要转换处理以将控制器102中生成的PCIe事务变换为相应的网络协议或其它协议事务,并且接着变换回要在另一个控制器122上执行的PCIe事务。该转换过程给由存储控制器102和122中的每一个所执行的处理增加了较大的开销和复杂性。
[0021]作为对比,图2示出了根据本发明的各个特征和方面的增强的组织,在其中每个存储控制器代表一个本地PCIe层次结构,并且其中多个PCIe层次结构中的每一个包括集群端口以使得各个层次结构的组件之间能够进行受控的信息交换,而无需将PCIe事务转换为其它网络和通信协议及介质。而且,根据本发明的各个特征和方面,图2所示的系统或组织将PCIe空间分区,使得每个本地PCIe层次结构可以通过使用PCIe空间的第一部分来访问本地组件并且可以通过使用PCIe空间的第二部分中的PCIe事务来直接访问不同层次结构内的远程组件。
[0022]本申请所用的“PCIe空间”包括具有用来访问PCIe层次结构内的存储器可寻址组件的存储器地址的事务并且还包括当响应例如较早接收的读取请求事务而返回信息时,事务中频繁使用的事务的事务ID内包含的配置ID。因而,PCIe空间的分区将整个PCIe空间的第一部分限定为包括与由多个PCIe层次结构中的每一个所定义的本地层次结构内的组件相对应的存储器地址和配置ID值的子集。所分区的PCIe空间的第二部分包括与由来自另一个更高层次结构的设备所寻址的远程组件相对应的其它存储器地址和配置ID值。
[0023]因而,根据本发明的各个特征和方面,每个层次结构220、221、222和223分别包括相应的PCIe集群端口230、231、232和233。每个集群端口允许其相关联的本地层次结构可控地访问存储组织的其它层次结构中的远程组件。多个层次结构(220至223)通过它们各自的集群端口(230至233)经由PCIe交换机250而耦接。每个层次结构的集群端口用于在PCIe空间的第一部分和PCIe空间的第二部分之间转换存储器地址和/或事务ID。换言之,与每个PCIe层次结构相关联的集群端口检测其相应的本地层次结构内生成的特定存储器地址或事务ID何时引用本地组件或者另一个层次结构内的远程组件。当存储器地址或者事务ID引用PCIe空间的第一部分内的组件(即,相同层次结构内的本地组件)时,那么集群端口不需要介入。然而,当集群端口检测到其本地层次结构的组件已经生成了与PCIe空间的第二部分中的另一个层次结构的远程组件相关联的存储器地址或者事务ID时,集群端口接收该事务,适当地转换它,并且通过PCIe交换机250将它转发(forward)至其它适当的层次结构。
[0024]反之,当集群端口从PCIe交换机250接收对集群端口自己相应的本地层次结构内的本地组件进行引用的存储器地址或者事务ID时,集群端口用来将所接收的地址和/或事务ID转换为相应的适当值以引用其本地层次结构内的组件。因而,与每个本地层次结构相关联的集群端口所执行的转换处理允许每个层次结构通过使用标准的PCIe总线事务来操作其自己的本地组件,并且还允许每个本地层次结构通过使用标准的PCIe事务来引用其它层次结构中的远程组件。当本地事务引用与PCIe空间的第二部分相关联的地址或事务ID时,与每个本地层次结构相关联的集群端口将事务重定向到其它适当的层次结构。因而,与现有技术相比,不需要PCI事务协议和其它连网协议之间的转换。
[0025]与PCISIG中的改进的、还有待被标准化的规范相比,可以在图2的组织中使用标准的PCIe交换机并且可以在每个本地层次结构内使用标准的PCI组件。根设备及相关联的交换机不必是PCISIG的用于多根虚拟化的改进规范所需的多根感知的(“MRA”)。
[0026]从本地PCIe层次结构的角度来看,其相关联的集群端口是逻辑上透明的,使得剩余的远程集群端口和由远程集群端口变得可见的资源对于本地层次结构可见。换言之,通过简单地寻址由所分区的PCIe空间的第二部分中的远程集群端口变得可见的资源,本地层次结构可以访问组织的另一个层次结构内的远程组件。
[0027]从组织/集群的角度来看特定PCIe层次结构的集群端口,集群端口表现为包括完整配置寄存器空间的标准PCIe端点设备。因而,当在其寄存器空间中被适当配置时,集群端口允许其相应的本地PCIe层次结构内各个组件和资源的受控的、有限的可见性。从而,集群/组织内的其它控制器/层次结构可以访问本地层次结构内由其相应的集群端口变得可见的组件。换言之,集群端口配置在其相应的本地层次结构中为集群端口希望让集群/组织内的其它层次结构可见的资源提供了“窗口”。
[0028]通过在集群端口的配置寄存器空间中被称为基地址寄存器(BAR)的标准PCI构造来定义由集群端口所定义的“窗口”。因此,每个PCIe集群端口230至233分别包括配置寄存器空间240至243,其中可以对基地址寄存器和其它配置相关寄存器进行编程以定义其相应的本地PCIe层次结构内应当对于集群/组织中的其它层次结构可用或可见的组件。这样的配置寄存器空间使用以及以这样的方式来使用基地址寄存器对于本领域技术人员而言是公知的。
[0029]除了转换(重映射)在组织的各种多个层次结构之间交换的存储器地址之外,本发明的各个特征和方面包括当一个包在本地PCIe层次结构和组织的另一个PCIe层次结构之间传递时对标准包头的修改。能够在包通过集群端口从其本地层次结构移动到集群的其它层次结构时或者在集群端口中接收包以转发至其相关联的本地层次结构时修改包头中的事务ID和/或存储器地址中的功能值(functionvalue)以及其它值。下面参考其它附图进一步讨论这类事务的实例。
[0030]作为实例,可以将PCIe空间分区使得64位的PCIe存储器地址中仅仅第0到48位可以在本地层次结构中用于引用该特定层次结构内的本地组件。因而,每个本地层次结构用于访问层次结构内的本地组件的本地地址空间被限制为256太字节(terabyte)。对于包括例如嵌入式应用(如存储控制器)的许多应用,该限制不是严格的约束。因而,PCIe空间的第一部分被定义为具有事务的存储器地址的高阶(high-order)16位(bit)全部为零,使得低阶48位定义对本地层次结构的本地组件的访问——例如,所分区的PCIe空间的第一部分。存储器地址的高阶16位可以是非零的,以引用PCI空间的另一个层次结构内的远程组件——例如,所分区的PCIe空间的第二部分。
[0031]按照类似的方式,还可以根据PCIe配置空间的分区来重映射或者转换由PCIe交换中的事务ID所定义的PCIe空间。例如,根据本发明的各个特征和方面,为了保存本地层次结构中启动设备的总线编号,可以限制事务ID的总线编号、设备编号、功能编号和标志字段为任意的位数。当将通过PCIe交换机进行转发的任何相关事务返回至启动层次结构时,可以在事务ID总线编号字段中插入从其它层次结构和交换结构的角度观察的启动层次结构的总线编号以识别层次结构。作为实例,事务ID中被指定为8位宽度的总线编号字段可以被限制为仅有5位,使得本地层次结构仅仅可以访问其本地层次结构内编号为0到31的本地总线片段。按照类似的方式,事务ID中被指定为5位字段的设备编号可以被限制为3位,使得在本地层次结构的编号为0到31的任何本地总线片段上的本地设备编号可以仅仅在0到7之间的范围内。此外,按照类似的方式,事务ID中通常被指定为8位宽度的标志字段可以被限制为5位,使得标志编号被限制为0到31之间的值,以用于本地层次结构内的交换。接下来,通过限制事务ID的字段而可以自由使用的未用位可以被用于保存事务ID的本地层次结构总线编号值。具体地,指示启动事务的设备的本地层次结构中的总线编号的总线编号字段的低位5位可以被保存在空闲的、保留的位中。接下来,能够在总线编号字段的8位中插入层次结构的总线编号,从而当相关的返回事务使用事务ID字段来通过多个层次结构的集群端口返回信息时,识别要被访问的特定启动层次结构。
[0032]因而,还与事务ID相关地来将PCIe空间分区,使得PCIe空间的第一部分定义对范围在0到31之间的本地总线编号和范围在0到7之间的设备编号的访问。此外,在PCIe空间的该第一部分中仅仅可以使用事务ID中0到31之间的有限范围。总线字段中所生成的任何其它值可以用来指定,要通过使用事务ID(例如,PCIe空间的第二部分)来访问另一个层次结构。
[0033]每个集群端口230到233的配置寄存器240到243还可以分别定义从集群/组织中其它层次结构的角度来看与每个集群端口相关联的总线编号。该总线编号在本申请中还被称为“集群编号”或者“层次结构编号”。换言之,从PCIe交换机250的角度来看,可以将31以上的总线编号(例如,32到255)分派给每个集群端口。因而,PCIe交换机250可以将PCIe事务中的存储器地址和PCIe事务中的事务ID路由至特定层次结构的适当集群端口。PCIe交换机250中不需要特殊逻辑来达到该目的,因为PCIe交换中存储器地址和事务ID的全部转换是在每个本地层次结构220到223的集群端口逻辑中执行的。
[0034]以下示出了被分派给图2的各个PCIe集群端口230到233的示例性存储器基地址和总线/集群/层次结构编号。例如,层次结构220的集群端口230的存储器基地址可以是(十六进制)0001_0000_0000_0000,并且其用于切换具有事务ID的交换的总线编号可以被分派为总线32。按照类似的方式,层次结构221的PCIe集群端口231可以具有0002_0000_0000_0000的存储器基地址,且其总线编号为34;层次结构222的集群端口232可以具有0003_0000_0000_0000的存储器基地址,且其总线编号为35;最后,层次结构223的集群端口233可以具有被分派给它的0004_0000_0000_0000的存储器基地址,且其总线编号为36。尽管PCIe交换机通常集成了桥设备,但交换机250自身还被分派总线编号(如所示出的“虚拟总线编号”33)。
[0035]此外,如图2所示,在PCIe空间的该示例性分区中,本地层次结构内总线片段的本地总线编号被分派为32以下的值。例如,总线编号0、1、2和3被示出为在每个本地层次结构220到223中使用。按照类似的方式,可以按照适于特定应用的任何适当方式来将每个本地层次结构内本地访问的16太字节限制内的地址空间分区。换言之,本地层次结构内的缓冲存储器和其它组件可以每一个都被分派它们各自独立的16太字节的分区空间(PCIe空间的第一部分)内的地址范围。
[0036]本领域技术人员将清楚地认识到可以在完整功能的组织和完整功能的本地层次结构(例如,存储控制器)内包括许多其它组件。例如,在存储控制器作为本地层次结构的情形中,这类附加的元件可以包括用于RAID存储管理目的的奇偶校验辅助电路、用于控制直接存储器访问事务的DMA控制器组件等等。此外,可以定义任意数目的这种本地层次结构,而仅仅受到PCIe空间的所期望分区的限制。
[0037]图3是提供典型集群端口300的示例性实施例的附加细节的框图。因此,集群端口300例示了图2中的集群端口230到233。集群端口300可以包括如上所述的配置寄存器304,在其中基地址寄存器(BAR)和各种其它配置参数可以被编程,如本领域技术人员所公知的。基地址寄存器(BAR)和其它配置参数限定相关联的本地层次结构中哪一个本地组件对于组织的其它层次结构将是可见的。本地层次结构接口元件302将集群端口300耦接至包含集群端口的PCIe本地层次结构。按照类似的方式,远程层次结构接口元件306通过标准的PCIe交换机将集群端口300耦接至组织中其它层次结构中的任何一个。PCIe空间转换器逻辑308用于转换本地层次结构和组织中其它层次结构中的任何一个之间交换的存储器地址和事务ID。转换过程基本上如上所述,并且结合后面的附图在下文中进一步讨论示例性转换。
[0038]图4是提供图3的PCIe空间转换器元件308的结构的示例性附加细节的框图。转换器逻辑308内的功能元件可以包括存储器地址重映射元件400,其用于映射/转换PCIe在层次结构之间交换的PCIe事务中所使用的存储器地址。如上所述,通过集群端口逻辑来逻辑地将PCIe空间分区,使得空间的第一部分对应于被编码为零的高(upper)地址位以及仅在PCIe交换中使用的存储器地址中的低阶地址位。该第一部分用来在层次结构内引用该层次结构内的本地组件——换言之,PCIe空间的第一部分中的存储器地址不由集群端口(即,由转换器逻辑)来转换而单独地在特定的本地层次结构内使用。PCIe空间的第二部分对应于高阶地址位中指定非零值的剩余存储器地址。这种存储器地址由第一层次结构用来引用第二、远程层次结构中的远程组件。
[0039]第一层次结构的集群端口的转换器逻辑308接收引用远程组件的地址,并且通过标准的PCIe交换机将所接收的存储器地址事务转发至远程/第二层次结构。交换机根据用来识别系统的特定集群端口或层次结构的存储器地址的高阶的位来路由事务。第二/远程层次结构的集群端口将接收来自第一层次结构的地址,并且将所接收的地址转换/重映射为其相应层次结构内相应本地组件的适当存储器地址。一般而言,该转换将仅仅涉及屏蔽用来在两个层次结构之间路由事务的高阶的位。仅仅需要低阶的位来将被接收且被转换的事务转发至第二接收层次结构(包含接收集群端口的层次结构)中。接下来,可以通过第二或者接收层次结构内的本地访问来处理事务。
[0040]因而,存储器地址重映射元件400重映射或者转换系统的第一/本地层次结构和第二/远程层次结构之间交换的存储器地址。第一层次结构和第二层次结构的集群端口中的重映射元件每一个都可以执行所交换的存储器地址的必要转换以使得第一层次结构能够引用系统中另一个层次结构的远程组件。
[0041]转换器逻辑308可以进一步包括用来重映射/转换在第一/本地层次结构和第二/远程层次结构之间交换的事务ID的配置空间转换器元件。如本领域技术人员所公知的,PCIe事务可以使用事务ID值中的位字段来识别设备。通常,该字段识别发起事务(例如读取请求)的设备,从而所请求的信息可以随后被导回请求的发起方。一般而言,事务ID通过识别设备所耦接的总线片段编号以及所识别的总线片段上的设备编号来识别设备。此外,标志字段可以进一步识别与该总线片段上的设备相关联的特定事务。事务ID的这些位字段对于本领域技术人员而言是公知的。
[0042]如上所述,根据本发明各个特征和方面的集群端口实施包括事务ID值的分区的PCIe空间分区,从而可以由第一层次结构生成事务ID以引用第二层次结构中的组件。例如,可以减少事务ID中用于定义各种字段(例如总线ID和设备ID)的位的数目以便保留用来识别集群或者层次结构的位以识别在完成相关联的事务的过程中信息随后可以返回的集群。因而,集群端口300的转换器逻辑308中的配置空间转换器元件402用来转换或者重映射在第一或本地层次结构和第二或远程层次结构之间交换的事务ID值。例如,当引用本地层次结构内的总线片段时,总线编号值可以被限制为标准8位字段中的5位。接下来,根据本发明的各个特征和方面,可以重定义事务ID的总线编号字段的高阶3位以编码集群或者层次结构编号的全部或者一部分。按照类似的方式,事务ID的5个标准设备编号位中的低3位可以用于引用本地层次结构内的设备。接下来,设备编号字段的高阶2位可以用于编码集群或者层次结构编号的全部或者一部分。按照类似的方式,可以保留标志ID字段和/或功能编号字段的一部分,使得在本地层次结构中仅仅可以使用有限范围的标志值和/或功能值并且剩余的高阶的位可以用于编码集群或者层次结构编号的全部或者一部分。用于编码集群编号或者总线编号的要被重映射的位的具体数目可以作为针对特定应用的设计选择的问题来选择。某些应用可能需要较大的本地PCIe空间而其它应用可能需要较大的用于映射远程设备和总线的PCIe空间。
[0043]接下来,可以由发起最初的基础(underlying)事务的层次结构的集群端口来使用重定义的事务ID的位以保存本地层次结构内返回事务将要被导向的总线编号(例如,发起读取请求以从另一个层次结构中的远程设备获取数据的本地层次结构中的设备的总线编号)。因为在保留的、重定义的事务ID的位中保存和编码这种集群或层次结构编号,接下来可以在事务ID的总线编号字段位中插入多个层次结构内本地层次结构的集群端口的总线编号或者集群编号。接下来,如果/当另一个事务被导回第一层次结构时(例如,当远程设备准备好将所请求的数据返回至第一层次结构中的初始请求设备时),可以使用这样插入的总线编号或者集群编号。所插入的总线编号用来将返回事务路由回到发起基础事务的第一层次结构的集群端口。接下来,集群端口用来基于基础初始事务的远程存储器地址而将相关联的基础总线事务转发至其它适当的层次结构。为了随后返回至发起集群(即,当所请求的数据准备好返回至发起集群时),远程层次结构保存事务ID值。当启动初始的、基础事务的层次结构的集群端口从远程集群接收返回的所重映射/转换的事务ID时,用包含所保存的本地层次结构内发起设备的总线编号的保留位来替换用来识别多个层次结构中的发起集群的总线编号。接着移除(remove)用来保存初始总线编号的位(例如,恢复至零值)。接下来,将具有这样转换的事务ID的总线事务应用至包含接收了返回所请求信息的事务的集群端口的本地层次结构。
[0044]例如,在读取事务中,可以如下地处理事务ID。发起读取事务的层次结构的集群端口在事务ID的保留位中保存本地请求者ID总线编号并且用集群端口总线编号(其所连接的总线)来替换事务ID总线编号。该集群端口总线编号用于将读取完成从第二层次结构路由回到第一层次结构的集群端口,其中将本地请求者ID总线编号(保存在保留位中)恢复为事务ID中的总线编号。接着通过第一层次结构中的该总线编号来路由读取完成事务。第二层次结构集群端口从不转换事务ID。根据存储器地址路由存储器请求,但当包经过第一层次结构的集群端口时,改变请求的事务ID。通过事务ID来路由读取完成事务。
[0045]本领域技术人员将清楚地认识到完整功能的集群端口300和/或转换器逻辑308内的许多附加和/或等同元件。因此,图3和图4仅仅旨在作为集群端口实施例中典型功能元件的一种可能的功能分解的示例。此外,本领域技术人员将清楚地认识到实现集群端口300和转换器逻辑308的重映射和转换功能的众多组合逻辑电路设计。
[0046]图5和图6分别是描述了根据本发明各个特征和方面的、可以在多个层次结构之间交换的存储器地址和事务ID中的位的示例性重定义的图。如图5所示,可以重映射PCIe包头中的存储器地址500,使得地址的低阶部分502(例如,PCIe空间的第一部分)可以用来引用包含集群端口的本地/第一层次结构的本地组件。例如,64位PCIe存储器地址的低阶48位可以用来访问本地层次结构的本地组件。将高阶的全部位(48到63)编码为零以访问本地层次结构内的本地组件。根据集群端口的配置编程,集群端口将不响应高阶的位(48到63)全部为零的这种存储器地址。
[0047]反之,当高阶的位(48到63)是非零时,集群端口配置寄存器(例如,BAR)准许集群端口响应事务中的存储器地址。特别地,64位PCIe存储器地址的第48到63位可以编码用来识别要被访问的远程组件在其中的远程层次结构的集群或者层次结构地址506。本地层次结构的集群端口接着可以将存储器地址转发至将本地层次结构的集群端口耦接到集群的其它层次结构的PCIe交换机。
[0048]更具体地,在PCIe空间的存储器地址空间的示例性分区中,在本地PCIe存储器空间(即,空间的第一部分)中,全部存储器必须被映射在存储器空间的低(lower)256太字节中(例如,地址的第63到48位为零)。
[0049]优选地,当在本地PCIe层次结构中生成由存储器地址(存储器读取或者写入)路由的包,且这些高阶的位(48到63)中的任何一个有效(ON)时,包将会被导向其集群端口和集群化的层次结构。本地PCIe总线可以被配置成将具有大于或等于256太字节的存储器地址值的包导向其集群端口并且从此通过集群层次结构交换机/多个交换机导向另一个/远程层次结构。因而,存储器地址的第47到0位用于路由本地PCIe层次结构内的存储器包并且存储器地址的第63到48位用以作为集群层次结构中的路由位。该特定的示例性映射建议集群层次结构中定义的全部本地层次结构存储器窗口(如上所述)与不同的256太字节边界对准。这些窗口不一定具有256太字节大小,但应当在256太字节的对准上开始。换言之,应当初始化集群PCIe层次结构,使得由地址路由的包仅仅基于所应用的存储器地址的第63到48个地址位来被路由。该初始化包括初始化集群中的全部PCIe交换机,使得它们基于256太字节的粒度(上游、下游或者点对点)来转发包。下文将介绍这种初始化的示例的附加细节。
[0050]除了图5的存储器地址所示例的存储器地址空间的分区之外,根据本发明的各个特征和方面,集群端口还关于事务ID值完成PCIe空间的分区(例如,配置空间的分区)。如本领域技术人员所公知的,读取请求(例如,作为基于存储器地址的PCIe事务而启动)的完成通常在单独的PCIe事务中所请求数据的返回之后完成。该返回数据PCIe事务包括事务ID(600),其一般针对将返回信息被作为事务而应用的设备来识别总线片段(602)和总线片段上的设备ID(604)。标志字段(608)和功能值(606)可以进一步识别信息要被返回的特定事务。
[0051]根据本发明的各个特征和方面,通过保留用于转换总线编号的事务ID 600字段中的一些的位,集群端口完成PCIe空间的该配置空间的分区。针对到本地层次结构内的本地总线编号的本地访问,可以保留配置空间中的总线编号的第一部分。接下来,PCIe配置空间中的总线编号的第二部分用来通过相应的总线编号来识别每个层次结构以基于分派的总线编号而允许通过结构路由这类事务。例如,可以将本地层次结构中用来引用总线编号(602)的位的数目限制为标准的8位中的5位。这5个位识别返回事务要被导向的设备的发起层次结构中的本地总线编号。当初始事务从本地层次结构中导出,通过集群端口并且导入至另一个层次结构的结构中时,通过该层次结构的集群端口的操作来保存这5个位(指定0到31之间的本地总线编号)。当返回事务从另一个远程层次结构发送回第一层次结构中的启动设备时,作为所保存的本地总线编号的替换,插入配置空间的第二部分中的总线编号(从32到255的范围的总线编号)来识别该本地层次结构的集群端口。当这样的返回事务到达启动基础事务的第一层次结构的集群端口时,可以将事务ID中保存的总线编号恢复为事务ID的总线编号字段中其正常的位的位置并且接着在本地层次结构中正常地处理该事务。
[0052]为了保存事务ID中的初始本地总线编号,可以将本地层次结构中用来引用设备编号(604)的位的数目限制为标准的5位中的3位并且可以在本地层次结构内使用标志字段(608)中定义的有限数目的标准位以进一步识别特定事务。例如,标志字段608的低阶5位可以用于本地层次结构内的事务ID。或者,例如,可以使用功能字段的有限数目的位并且剩余位可以自由地用于编码集群信息。
[0053]在本地层次结构事务中没有用于本地层次结构交换的附加位应当全部为零,从而定义PCIe空间的配置空间的第一部分。在通过PCIe交换机/多个交换机以及第一和第二层次结构的集群端口的、第一和第二层次结构之间交换的事务中,当相关事务从第二层次结构返回至第一层次结构时,保留位用来保存第一层次结构内的发起设备的总线编号。本领域技术人员将清楚地认识到使得发起设备的总线编号可以在附加的保留位内被编码(即,保存)的、事务ID中的位的各种分配和重新布置。按照类似的方式,对于本领域技术人员而言将显而易见的是,准许保存和恢复发起设备的总线编号的、事务ID 600的位的其它映射是可行的。因而,图6所示的示例性重映射或者转换仅仅旨在作为如下这种映射的一种可能方式:当在系统的第一层次结构和第二层次结构之间交换事务ID时准许事务ID 600的位被重映射或者转换。
[0054]图7描述了在包含多个PCIe层次结构的系统中从第一层次结构通过第一层次结构的集群端口转发至第二层次结构的示例性PCIe存储器地址的示例性转换或者重映射。图7所述的转换过程700开始于在第一层次结构内生成的存储器地址702,其指示其引用系统的另一个层次结构中的组件。如上所述,这种指示可以在没有用于寻址第一层次结构内的本地组件的存储器地址702(例如,PCIe空间的第二部分中的地址)的高阶的位中的任何一个中被编码为非零值。如本申请所讨论的一样,当所有其它高阶的位(48到63)为零时,地址702的一种示例性映射提供了低阶48位(0到47)用于寻址本地或者第一层次结构内的组件。因而,存储器地址702表示第一层次结构对另一个层次结构中的远程组件进行寻址的尝试。通过存储器地址702中的高阶地址位来识别要被寻址的特定的其它层次结构。例如,第48到63位可以识别特定集群,在其中进一步通过地址的第0到47位来识别的组件将要被访问。
[0055]第一层次结构内的集群端口接收存储器地址702。如本领域技术人员所公知的,对该第一层次结构的集群端口的配置寄存器进行编程,使得集群端口将响应在高阶地址位(例如存储器地址702的第48到63位)中具有非零值的任何存储器地址。第一层次结构的集群端口接收具有存储器地址702的事务并且将存储器地址702(基本上不改变)作为存储器地址704转发到集群的层次结构的交换结构连接中。包含PCIe交换机的结构接收存储器地址704并且将相关联的事务转发至例如存储器地址704的第48到63位中指示的层次结构或者所识别的集群的集群端口。如上所述,并且对于本领域技术人员而言显而易见的是,对耦接系统的各个层次结构的一个或更多PCIe交换机的结构进行编程以基于识别每个特定集群或层次结构的存储器地址704的高阶的位中的值来交换事务。再次,如上所述,在图7的示例性实施例中,第48到63位用作识别事务被导向的特定集群或者层次结构的目的。
[0056]通过所预期的目标层次结构(第一层次结构意图将初始事务导向的第二层次结构)的集群端口来接收由耦接多个PCIe层次结构的交换结构所重定向的事务。第二层次结构的集群端口移除高阶的位而仅仅保留低阶的位以在第二层次结构内生成所转换的本地地址706。换言之,将高阶的位(例如,地址706中示例的第48到63位)置为零,从而低阶的地址位(例如,第0到47位)用于寻址第二层次结构内的期望组件。因而,第一层次结构内生成的地址702通过第一和第二层次结构的集群端口以及中间交换结构来应用并且通过第二层次结构的集群端口转换为地址706。由此,第一层次结构可以引用另一个层次结构内的远程组件,就好象在其自身的层次结构内本地寻址它们一样。由此,通过转换第一层次结构内生成的存储器地址并且将所转换的存储器地址PCIe事务转发至系统的另一个PCIe层次结构中的另一个远程组件,在第一和第二层次结构之间交换这种存储器寻址的PCIe事务。
[0057]本领域技术人员将清楚地认识到准许第一层次结构中生成的地址转换为另一个PCIe层次结构中远程组件的相应地址的、在PCIe事务中存储器地址的位的许多等同映射。因而,图7的示例性转换仅仅旨在作为这种转换过程以及为了层次结构之间的这种交换而在PCIe存储器地址空间中保留的位的定义的一种可能实施例。
[0058]与图7类似,图8描述了PCIe事务中使用的事务ID的示例性转换。如本领域技术人员所公知的,事务ID用来完成在前读取请求,其中最初通过请求来寻址的设备随后完成所请求的事务并且将信息返回至初始的请求方。如本领域所公知的,事务ID字段包括如上所述的用于识别特定总线片段、片段上的设备、功能以及所返回信息要关联的标志的多个已定义字段。一般而言,事务ID由请求(第一)层次结构作为初始事务的一部分来生成。当所寻址的设备完成请求并且返回所请求的信息时,事务ID与返回数据的事务一同被返回并且在集群结构内被使用以将事务路由至第一层次结构中的发起设备。
[0059]如上所述,根据本发明的各个特征和方面,可以针对本地层次结构事务来缩减事务ID的字段。与事务ID中字段的完整规范所需的位的数目相比,所缩减的字段需要更少的用于编码的位。当在第一PCIe层次结构和另一个PCIe层次结构之间交换事务ID时,未使用的位接着可以用于保存集群相关的信息。图8是其中在与相应事务相关联的第一层次结构中生成事务ID 802的转换过程800的示例。接下来,通过第一层次结构的集群端口转换事务ID 802来重定义(重映射或者转换)事务ID的字段的各个位以生成所转换的事务ID 804。所转换的事务ID 804保存第一层次结构中启动设备的总线编号作为事务ID的初始来源。如上所述,可以重定义各个字段中未使用的位并且可以重映射字段自身,从而保存初始的、本地总线编号。插入识别该本地层次结构为基础事务的启动者的总线编号字段,来替代已保存的总线编号。如上所述并且如图2所示,每个层次结构的每个集群端口与PCIe存储器地址和PCIe总线编号相关联——在所分区的PCIe空间的第二部分中。因而,从附接到交换结构的其它层次结构的角度来看,在所转换的事务ID 804中插入的总线编号(C0...C7)是本地层次结构的总线编号(即,集群编号)。
[0060]第二层次结构中将接收事务ID的远程设备不需要直接解码信息而是将用于返回的事务ID存储在所请求信息的相应返回事务中。因而,可以通过集群将所转换的事务ID 804转发至远程层次结构。当远程层次结构设备准备好发回返回事务时,通过层次结构依照被编码到所转换的事务ID 804中的集群编号(C0...C7)来路由所转换的事务ID 804。
[0061]如图8所示,可以将集群编号或者总线编号编码为通常用于总线编号的8位。在设备编号字段的保留位(第3和4位)中以及在标志编号字段的保留位(第5、6和7位)中保存初始的本地总线编号(B0...B4)。被编码到所转换的事务ID 804中的集群编号(C0...C7)是用来生成初始事务ID 802的第一层次结构的集群编号或者层次结构编号,由此该层次结构为附接到交换结构的其它层次结构所知。如此识别第一层次结构的集群编号或者层次结构编号与第一层次结构的集群端口连接至PCIe结构中并且被包含在集群端口的配置寄存器内的总线编号相对应。接着可以通过耦接多个层次结构的交换结构来使用如此编码的集群编号或者层次结构编号以识别集群的层次结构中的总线编号,从而可以通过层次结构首先将与事务相关联的返回信息路由回生成事务ID的第一层次结构。
[0062]接下来,通过交换结构将所转换的事务ID转发至所识别的目标层次结构或者包括所提供的事务ID的基础事务中识别的集群。因而,接收集群端口接收包括所转换的事务ID 806的事务并且保留所转换的事务ID以用于与基础事务请求相关联的信息的可能返回。例如,如本领域技术人员所公知的,第一层次结构可生成包括初始事务ID 802并且使用上面关于图7所述的存储器地址而被寻址至远程组件的事务。这种事务可能请求某些信息(例如,在前存储的用户数据、管理状态相关的信息等等)的返回。如PCIe架构中所公知的,其它层次结构的远程组件可能需要一些处理时间来完成所请求的事务并且返回所请求的信息。因而,与所接收的事务相关联的事务ID用来使请求返回信息的初始事务与所返回信息联系。当第二层次结构中的远程组件完成所提供的基础事务时,通过使用第二层次结构保存的所转换的事务ID 806,将把所请求的信息返回至第一层次结构。因而,如上所述,由PCIe交换机或者多个交换机使用被编码到所转换的事务ID 806中的集群编号来将所返回的信息导回发起集群或者层次结构编号(即,在事务ID的编码中识别的集群)。当被适当地导到发起集群编号时,该发起第一层次结构的集群端口接收所编码的、所转换的事务ID 804并且转换或者重映射各个位字段以恢复事务ID 802中所指示的初始事务ID值。特别地,事务ID中不再需要集群编号(所转换的事务ID 804的C0...C7)并且可以恢复所保存的总线编号(B0...B4)为其正常的、标准化的位的位置和值。特别地,如图8所示,本地层次结构内的启动设备的初始总线编号可以从保留位中所保存的副本(copy)中恢复并且被恢复到启动本地层次结构内使用的事务ID的总线编号字段。
[0063]本领域技术人员将清楚地认识到根据本发明的各个特征和方面,对通过PCIe交换结构在第一层次结构和第二层次结构之间交换的存储器地址或者事务ID进行转换的许多等同映射步骤。因而,图7和图8仅仅旨在作为多个层次结构之间的这种映射和转换处理的一个示例性实施例。
[0064]图9是宽泛地描述根据本发明的各个特征和方面的、准许多PCIe层次结构系统的层次结构之间的访问的方法的流程图。单元900表示初始地提供集群的、互连的多个PCIe层次结构的这种配置的处理,其中每个层次结构包括通过PCIe交换结构将层次结构耦接至系统的其它层次结构中的每一个的集群端口。使用这种配置,单元902接着用来配置每个层次结构的集群端口并且还用来配置PCIe交换结构。通常通过将值编程至其一组配置寄存器(例如,BAR寄存器和其它配置寄存器)中来配置每个层次结构的集群端口,从而每个层次结构的集群端口响应通过PCIe交换结构在层次结构之间交换的存储器地址和事务ID。通常通过配置包含结构的交换机来配置PCIe交换结构,使得每个层次结构与PCIe总线编号(例如,总线片段编号)和存储器地址相关联。如上所述,在事务ID中的总线编号的一个示例性映射中,可以为了每个本地层次结构内的内部访问而保留总线编号0到31,然而,可以通过PCIe交换机来分派大于31的总线编号(例如,32到255)来关联总线编号和由该层次结构的集群端口所代表的每个层次结构。按照类似的方式,配置PCIe交换机以单独地基于如上所述的高阶地址位来在各个层次结构之间交换存储器寻址的事务。例如,在一种映射中,每个层次结构可以与PCIe空间的特定256太字节排列的片段相关联。因而,结构的PCIe交换机可以基于地址的高阶16位(63到48)交换存储器寻址的事务。下文进一步讨论示例性初始化的细节。
[0065]接下来,单元904表示使得能够在多个层次结构之间进行访问的系统的正在进行的(ongoing)操作。更具体地,单元904表示系统的正在进行的操作,其中每个层次结构可以使用全部与整个PCIe空间的第一部分相关联的标准PCIe事务来执行其自身本地层次结构内的事务。此外,单元904表示系统的正在进行的操作,其中每个层次结构可以执行寻址到系统的另一个层次结构中的远程组件的PCIe事务。与每个层次结构相关联的集群端口执行与第一和第二层次结构之间的事务相关联的存储器地址和事务ID的所有必需的转换和重映射。
[0066]图10提供了以上关于图9的单元902所讨论的初始化处理的示例性附加细节。单元1000表示初始化每个PCIe层次结构以提供对其各自本地组件的本地访问的处理。包括在该初始化步骤中的是每个PCIe层次结构的响应所有非本地地址的集群端口的初始化。如本申请所讨论的一样,通过这种初始化有效地将PCIe空间分区,使得存储器地址和事务ID值的第一部分被严格地在每个层次结构内本地地处理。表示所有其它存储器地址和没有在第一部分中特别保留的剩余事务ID值的PCIe空间的第二部分用来准许第一层次结构对第二层次结构内的远程组件的访问。每个层次结构中的集群端口通过经由中间PCIe交换结构在第一和第二层次结构之间交换事务来执行PCIe空间的这种分区。单元1002接着表示PCIe空间的分区以配置表示每个层次结构对其自身的本地组件的本地访问的第一部分。单元1004接着表示进一步将PCIe空间分区为第二部分的任何附加处理,每个本地层次结构通过第二部分可以访问系统中其它层次结构的远程组件。
[0067]更具体地,应当初始化PCIe层次结构的集群,使得仅仅通过交换结构和集群端口基于高阶第63到48个地址位来路由存储器地址路由的包。因此,应当初始化集群系统中的全部PCIe交换机,使得它们基于256太字节的粒度来转发包(上游、下游或者点对点)。构建该PCIe集群化方法时所考虑的第一个问题是如何配置或者枚举(enumerate)PCIe层次结构。如果所示的将各个层次结构耦接至交换结构的PCIe总线仅仅连接在一起而不具有上述的路由配置时,那么在PCI枚举多个根设备(不同层次结构的)期间,集群层次结构中的每一个都会试图配置其自身本地层次结构以及其它本地层次结构中的设备。为了防止该问题,如前面所述,从集群层次结构的角度来看本地层次结构,每个本地层次结构的PCIe集群端口看起来像PCIe端点。这防止了一个本地层次结构中的根设备配置另一个本地层次结构中的设备。本地层次结构内的根设备将通过配置具有前面所述的配置和存储器空间限制的其本地层次结构内的设备来开始枚举。除了其本地层次结构的枚举之外,被连接作为集群层次结构的根连接的一个本地层次结构的一个根设备还将枚举集群层次结构,因为它将这看作是其层次结构的扩展。当其它本地层次结构中的每一个的根设备试图通过它们各自的PCIe集群端口枚举集群层次结构时,它们所生成的配置包将被当作不被支持的包来对待,之后它们将被发送至集群层次结构中所使用的PCIe交换机的下游端口。这将导致所有的这些其它根设备停止在它们的边界上(即,在它们各自的集群端口处)对集群层次结构进行枚举。按照这种方式,仅仅一个根设备枚举集群层次结构。
[0068]接下来,通过每个根设备运行第二遍枚举(a second passof enumeration)以设置它们的本地交换机(对于其层次结构来说本地的)来将所有地址大于或等于256太字节的存储器地址路由的包以及总线编号大于31的ID路由的包路由至它们的PCIe集群端口。此外,集群层次结构的根设备应当在集群层次结构上运行第二次枚举以设置集群层次结构中的所有总线编号为大于31的值。期望附加的枚举,因为典型的PCI枚举不太可能满足该PCIe集群化方法的需求。
[0069]本领域技术人员将清楚地认识到可以在与本发明的各个特征和方面相关联的方法中提供许多等同或者附加的步骤。因此,图9和图10仅仅旨在作为提供集群化的PCIe环境中第一和第二层次结构之间的事务中的转换和映射服务的典型处理的示例。
[0070]尽管已经在附图和此前的描述中说明和描述了本发明,但这种说明和描述被认为是示例性的并且没有文字上的限制。已经示出和描述了本发明的一个实施例及其较小的变化。期望对来自于本发明的精神内的所有改变和修改的保护。本领域技术人员将理解落入本发明范围内的上述实施例的变化。特别地,本领域技术人员将清楚地认识到可以在电子电路中或者由通用或专用目的处理器的适当编程的指令来等同地实现本发明的各个特征和方面。电路和编程设计的这种等同性作为设计选择的问题是本领域技术人员所公知的。结果,本发明不限于以上所讨论的特定实例和说明,而仅仅由所附的权利要求及其等同物来限定。

Claims (20)

1.一种系统,包含:
多个高速PCI层次结构,每个层次结构具有相关联的根控制器,并且每个层次结构具有相关联的集群端口;以及
耦接至每个层次结构的集群端口的高速PCI交换机,
其中,每个层次结构的所述集群端口使得第一层次结构能够通过交换机受控地访问所述多个层次结构中的任何其它层次结构内的组件,以及
其中,每个层次结构的所述集群端口将所述系统的高速PCI空间分区,使得所述空间的第一部分在所述每个层次结构内用来引用所述每个层次结构内的本地组件并且使得所述空间的第二部分在所述每个层次结构内用来引用多个层次结构中的其它层次结构内的远程组件。
2.如权利要求1所述的系统,
其中,每个层次结构的所述集群端口还包含:
用于映射所述高速PCI空间的存储器地址的存储器地址映射元件,所述映射元件用来在与包含所述集群端口的第一层次结构的本地组件相关联的地址与另一个层次结构的远程组件的地址之间转换存储器地址。
3.如权利要求2所述的系统,
其中,所述存储器地址转换器适合于将每个层次结构与所述高速PCI空间的在存储器地址的指定的高阶地址位中具有非零值的片段相关联,以及
其中,所述存储器地址转换器还适合于将第一层次结构的本地组件与所述高速PCI空间的在指定的高阶地址位中具有零值的片段相关联。
4.如权利要求1所述的系统,
其中,每个层次结构的所述集群端口进一步包含:
用于转换所述高速PCI空间中的高速PCI事务ID的配置空间转换器,所述转换器用来转换在包含所述集群端口的第一层次结构与另一个层次结构之间交换的事务ID。
5.如权利要求4所述的系统,
其中,所述系统适合于在所述事务ID的一个或更多字段中保留多个位,
其中,所述配置空间转换器适合于在所保留的位中保存所述事务ID的初始总线编号,
其中,所述配置空间转换器适合于插入
6.如权利要求5所述的系统,
其中,所述系统适合于保留来自所述事务ID的一个或更多字段中的五个位。
7.如权利要求6所述的系统,
其中,所述系统适合于在所述事务ID的总线编号字段中保留3个位,在所述事务ID的设备编号字段中保留2个位,并且在所述事务ID的标志字段中保留3个位。
8.一种高速PCI层次结构中的集群端口,所述集群端口包含:
对于高速PCI交换机的本地接口,用于将所述集群端口耦接到本地层次结构;
远程接口,用于将所述集群端口耦接至一个或更多其它高速PCI层次结构中的远程组件;
配置存储装置,用于存储与本地层次结构相关和与其它层次结构相关的高速PCI配置信息;以及
转换器元件,用于在本地层次结构与其它层次结构中的任何一个之间的高速PCI事务转换进行转换,
其中,所述集群端口使得能够在本地层次结构的组件与一个或更多其它层次结构内的远程组件之间进行受控的访问,以及
其中,所述集群端口适合于将系统的高速PCI空间分区,使得所述空间的第一部分在本地层次结构内用来引用本地层次结构内的本地组件,并且使得所述空间的第二部分用来引用其它层次结构中的另一个内的远程组件。
9.如权利要求8所述的集群端口,
其中,所述转换器元件还步包含:
用于映射所述高速PCI空间的存储器地址的存储器地址映射元件,所述映射元件用来在与本地层次结构的本地组件相关联的地址和其它层次结构的远程组件的地址之间转换存储器地址。
10.如权利要求9所述的集群端口,
其中,所述存储器地址转换器适合于将每个其它层次结构与所述高速PCI空间的在存储器地址的指定的高阶地址位中具有非零值的片段相关联,以及
其中,所述存储器地址转换器进一步适合于将本地层次结构的本地组件与所述高速PCI空间的在指定的高阶地址位中具有零值的片段相关联。
11.如权利要求8所述的集群端口,
其中,所述转换器元件还包含:
用于转换所述高速PCI空间中的高速PCI事务ID的配置空间转换器,所述转换器用来转换在本地层次结构与另一个层次结构之间交换的事务ID。
12.如权利要求11所述的集群端口,
其中,所述集群端口适合于在所述事务ID的一个或更多字段中保留多个位以识别其它层次结构中的特定层次结构。
13.如权利要求12所述的集群端口,
其中,所述集群端口适合于保留来自所述事务ID的一个或更多字段中的八个位。
14.如权利要求13所述的集群端口,
其中,所述集群端口适合于在所述事务ID的总线编号字段中保留3个位,在所述事务ID的设备编号字段中保留2个位,并且在所述事务ID的标志字段中保留3个位。
15.一种方法,包含以下步骤:
提供多个高速PCI层次结构,每个层次结构具有相关联的根控制器并且每个层次结构具有相关联的集群端口;
提供耦接至每个层次结构的所述集群端口的高速PCI交换机;
配置每个层次结构的所述集群端口以准许其它层次结构的其它组件对所述每个层次结构的所选组件进行访问;以及
从第一层次结构通过其相应的集群端口访问另一个层次结构的组件。
16.如权利要求15所述的方法,
其中,配置步骤进一步包含以下步骤:
将多个层次结构中的每个层次结构的高速PCI空间分区,使得所述空间的第一部分在所述每个层次结构内用来引用所述每个层次结构内的本地组件并且使得所述空间的第二部分在所述每个层次结构内用来引用多个层次结构的其它层次结构内的远程组件。
17.如权利要求16所述的方法,
其中,访问步骤进一步包含以下步骤:
操作所述集群端口以通过在与包含所述集群端口的第一层次结构的本地组件相关联的地址和另一个层次结构的远程组件的地址之间转换存储器地址来映射高速PCI空间的存储器地址。
18.如权利要求16所述的方法,
其中,访问步骤进一步包含以下步骤:
操作所述集群端口以转换在包含所述集群端口的第一层次结构和另一个层次结构之间交换的高速PCI事务ID。
19.如权利要求16所述的方法,
其中配置步骤还包含以下步骤:
初始化多个层次结构中的每一个以访问其本地层次结构内的组件;
根据分区步骤所定义的第一和第二部分来初始化所述每个层次结构的集群端口;以及
根据分区步骤所定义的第一和第二部分来初始化所述高速PCI交换机。
20.如权利要求19所述的方法,还包含以下步骤:
将多个层次结构中的一个层次结构指定为管理层次结构,
其中通过所述管理层次结构的操作来执行初始化高速PCI交换机的步骤。
CN2007800512031A 2007-02-28 2007-09-21 集群化多个独立的高速pci层次结构的装置和方法 Expired - Fee Related CN101669082B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/680,366 US7562176B2 (en) 2007-02-28 2007-02-28 Apparatus and methods for clustering multiple independent PCI express hierarchies
US11/680,366 2007-02-28
PCT/US2007/079208 WO2008105933A2 (en) 2007-02-28 2007-09-21 Apparatus and methods for clustering multiple independent pci express hierarchies

Publications (2)

Publication Number Publication Date
CN101669082A true CN101669082A (zh) 2010-03-10
CN101669082B CN101669082B (zh) 2012-07-04

Family

ID=39717225

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007800512031A Expired - Fee Related CN101669082B (zh) 2007-02-28 2007-09-21 集群化多个独立的高速pci层次结构的装置和方法

Country Status (6)

Country Link
US (1) US7562176B2 (zh)
EP (1) EP2115551B1 (zh)
JP (1) JP4964968B2 (zh)
KR (1) KR101364820B1 (zh)
CN (1) CN101669082B (zh)
WO (1) WO2008105933A2 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102480426A (zh) * 2010-11-25 2012-05-30 迈普通信技术股份有限公司 基于pcie交换总线的通信方法及一种pcie交换系统
CN104285218A (zh) * 2013-12-31 2015-01-14 华为技术有限公司 一种扩展PCIe总线域的方法和装置
CN109324899A (zh) * 2018-09-10 2019-02-12 中国电子科技集团公司电子科学研究院 基于PCIe池化硬件资源的编址方法、装置及主控节点
CN111367844A (zh) * 2019-03-13 2020-07-03 苏州库瀚信息科技有限公司 有多个异构网络接口端口的存储控制器的系统、方法和装置
CN113168389A (zh) * 2018-12-28 2021-07-23 华为技术有限公司 用于锁定具有非透明桥接的PCIe网络的装置和方法
CN113886310A (zh) * 2021-11-02 2022-01-04 上海兆芯集成电路有限公司 桥接模块、数据传输系统和数据传输方法

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8189603B2 (en) 2005-10-04 2012-05-29 Mammen Thomas PCI express to PCI express based low latency interconnect scheme for clustering systems
US20090063894A1 (en) * 2007-08-29 2009-03-05 Billau Ronald L Autonomic PCI Express Hardware Detection and Failover Mechanism
US8976799B1 (en) 2007-10-01 2015-03-10 Apple Inc. Converged computer I/O system and bridging mechanism for peer-to-peer communication
GB2460014B (en) * 2008-04-28 2011-11-23 Virtensys Ltd Method of processing data packets
US20100011146A1 (en) * 2008-07-11 2010-01-14 Lsi Corporation Conveying Information With a PCI Express Tag Field
US9736012B2 (en) * 2008-11-14 2017-08-15 Dell Products, Lp System and method for sharing storage resources
US7895380B2 (en) * 2009-01-21 2011-02-22 Ati Technologies Ulc Communication protocol for sharing memory resources between components of a device
WO2010084529A1 (ja) * 2009-01-23 2010-07-29 株式会社日立製作所 情報処理システム
US9164700B2 (en) * 2009-03-05 2015-10-20 Sandisk Il Ltd System for optimizing the transfer of stored content in response to a triggering event
JP5267943B2 (ja) * 2009-03-30 2013-08-21 日本電気株式会社 PCI−Express通信システム、及びPCI−Express通信方法
US8335884B2 (en) * 2009-07-10 2012-12-18 Brocade Communications Systems, Inc. Multi-processor architecture implementing a serial switch and method of operating same
GB2473675B (en) * 2009-09-22 2011-12-28 Virtensys Ltd Switching method
US8402195B2 (en) * 2009-10-27 2013-03-19 Hitachi, Ltd. Storage system mounted with plurality of processors
US8327536B2 (en) 2010-06-30 2012-12-11 Apple Inc. Method of manufacturing high-speed connector inserts and cables
US9112310B2 (en) 2010-06-30 2015-08-18 Apple Inc. Spark gap for high-speed cable connectors
JP5283787B1 (ja) 2010-06-30 2013-09-04 アップル インコーポレイテッド ケーブル内の配電
US8463977B2 (en) * 2010-09-09 2013-06-11 Stephen Dale Cooper Use of PCI express for CPU-to-CPU communication
KR101733203B1 (ko) * 2010-10-13 2017-05-08 삼성전자주식회사 아이디 컨버터를 포함하는 버스 시스템 및 그것의 변환 방법
US8375156B2 (en) * 2010-11-24 2013-02-12 Dialogic Corporation Intelligent PCI-express transaction tagging
US20120226774A1 (en) 2011-02-23 2012-09-06 Apple Inc. Display snooping
US8904105B2 (en) 2011-03-15 2014-12-02 Dell Products L.P. System and method for performing raid I/O operations in PCIE-based storage resources
JP5687959B2 (ja) * 2011-06-20 2015-03-25 株式会社日立製作所 I/oデバイス共有方法、および装置
US8725919B1 (en) * 2011-06-20 2014-05-13 Netlogic Microsystems, Inc. Device configuration for multiprocessor systems
US8650471B2 (en) 2011-06-28 2014-02-11 Dell Products L.P. System and method for look-aside parity based raid
JP5903801B2 (ja) * 2011-08-23 2016-04-13 富士通株式会社 通信装置およびid設定方法
WO2013048494A1 (en) 2011-09-30 2013-04-04 Intel Corporation Mechanism for facilitating customization of multipurpose interconnect agents at computing devices
US8949474B1 (en) * 2011-11-21 2015-02-03 Marvell International Ltd. Method for inter-chip and intra-chip addressing using port identifiers and address mapping
KR20130081526A (ko) 2012-01-09 2013-07-17 삼성전자주식회사 저장 장치, 그것을 포함하는 전자 장치, 및 그것의 데이터 관리 방법들
US8966148B2 (en) * 2012-06-01 2015-02-24 International Business Machines Corporation Providing real-time interrupts over Ethernet
US8984201B2 (en) 2012-06-01 2015-03-17 International Business Machines Corporation Providing I2C bus over Ethernet
US20140006644A1 (en) * 2012-06-28 2014-01-02 Lsi Corporation Address Remapping Using Interconnect Routing Identification Bits
US20140047156A1 (en) * 2012-08-09 2014-02-13 Emillo BILLI Hybrid computing system
DE102012017339B4 (de) * 2012-08-31 2014-12-24 Airbus Defence and Space GmbH Rechnersystem
KR101934519B1 (ko) 2012-11-26 2019-01-02 삼성전자주식회사 저장 장치 및 그것의 데이터 전송 방법
KR102007368B1 (ko) 2012-12-17 2019-08-05 한국전자통신연구원 Pci 익스프레스 스위치 및 이를 이용한 컴퓨터 시스템
US9489151B2 (en) 2013-05-23 2016-11-08 Netapp, Inc. Systems and methods including an application server in an enclosure with a communication link to an external controller
KR101695012B1 (ko) 2013-06-04 2017-01-10 한국전자통신연구원 동적 노드 서비스 제공 방법 및 그 장치
US9135200B2 (en) 2013-06-28 2015-09-15 Futurewei Technologies, Inc. System and method for extended peripheral component interconnect express fabrics
US10684973B2 (en) * 2013-08-30 2020-06-16 Intel Corporation NUMA node peripheral switch
KR102219759B1 (ko) 2015-01-09 2021-02-25 삼성전자주식회사 저장 장치, 그것을 포함하는 데이터 저장 시스템 및 그것의 동작 방법
US10289560B2 (en) 2016-03-10 2019-05-14 Toshiba Memory Corporation Switch module and storage system
WO2018186454A1 (ja) * 2017-04-07 2018-10-11 パナソニックIpマネジメント株式会社 情報処理装置
US20230057698A1 (en) * 2021-08-23 2023-02-23 Nvidia Corporation Physically distributed control plane firewalls with unified software view

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7310319B2 (en) * 2001-11-02 2007-12-18 Intel Corporation Multiple-domain processing system using hierarchically orthogonal switching fabric
US7120711B2 (en) * 2002-12-19 2006-10-10 Intel Corporation System and method for communicating over intra-hierarchy and inter-hierarchy links
US7457906B2 (en) * 2003-01-21 2008-11-25 Nextio, Inc. Method and apparatus for shared I/O in a load/store fabric
US7334071B2 (en) * 2005-05-25 2008-02-19 Integrated Device Technology, Inc. Expansion of cross-domain addressing for PCI-express packets passing through non-transparent bridge
US8189603B2 (en) * 2005-10-04 2012-05-29 Mammen Thomas PCI express to PCI express based low latency interconnect scheme for clustering systems
US7516263B2 (en) * 2006-02-27 2009-04-07 Emerson Network Power - Embedded Computing, Inc. Re-configurable PCI-Express switching device
US20070234118A1 (en) * 2006-03-30 2007-10-04 Sardella Steven D Managing communications paths
US7657663B2 (en) * 2006-12-19 2010-02-02 International Business Machines Corporation Migrating stateless virtual functions from one virtual plane to another

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102480426A (zh) * 2010-11-25 2012-05-30 迈普通信技术股份有限公司 基于pcie交换总线的通信方法及一种pcie交换系统
CN102480426B (zh) * 2010-11-25 2014-07-09 迈普通信技术股份有限公司 基于pcie交换总线的通信方法及一种pcie交换系统
CN104285218A (zh) * 2013-12-31 2015-01-14 华为技术有限公司 一种扩展PCIe总线域的方法和装置
US9690739B2 (en) 2013-12-31 2017-06-27 Huawei Technologies Co., Ltd. Method and apparatus for extending PCIe domain
CN109324899A (zh) * 2018-09-10 2019-02-12 中国电子科技集团公司电子科学研究院 基于PCIe池化硬件资源的编址方法、装置及主控节点
CN109324899B (zh) * 2018-09-10 2022-05-20 中国电子科技集团公司电子科学研究院 基于PCIe池化硬件资源的编址方法、装置及主控节点
CN113168389A (zh) * 2018-12-28 2021-07-23 华为技术有限公司 用于锁定具有非透明桥接的PCIe网络的装置和方法
US11868823B2 (en) 2018-12-28 2024-01-09 Huawei Technologies Co., Ltd. Apparatus and method for locking PCIE network having non-transparent bridging
CN111367844A (zh) * 2019-03-13 2020-07-03 苏州库瀚信息科技有限公司 有多个异构网络接口端口的存储控制器的系统、方法和装置
CN111367844B (zh) * 2019-03-13 2020-12-15 苏州库瀚信息科技有限公司 有多个异构网络接口端口的存储控制器的系统、方法和装置
US11368395B2 (en) 2019-03-13 2022-06-21 Suzhou Kuhan Information Technologies Co., Ltd. System, method and apparatus for storage controller having multiple heterogeneous network interface ports
CN113886310A (zh) * 2021-11-02 2022-01-04 上海兆芯集成电路有限公司 桥接模块、数据传输系统和数据传输方法

Also Published As

Publication number Publication date
KR20090117885A (ko) 2009-11-13
EP2115551A2 (en) 2009-11-11
KR101364820B1 (ko) 2014-02-19
JP2010520541A (ja) 2010-06-10
US7562176B2 (en) 2009-07-14
EP2115551B1 (en) 2013-05-01
EP2115551A4 (en) 2010-08-11
JP4964968B2 (ja) 2012-07-04
WO2008105933A3 (en) 2008-10-16
CN101669082B (zh) 2012-07-04
WO2008105933A2 (en) 2008-09-04
US20080209099A1 (en) 2008-08-28

Similar Documents

Publication Publication Date Title
CN101669082B (zh) 集群化多个独立的高速pci层次结构的装置和方法
CN1307570C (zh) 控制数据处理系统间经由存储器的数据流的方法和装置
CN100579108C (zh) 一种远程密钥验证的方法和主机结构适配器
US10042804B2 (en) Multiple protocol engine transaction processing
US7281055B2 (en) Routing mechanisms in systems having multiple multi-processor clusters
US7251698B2 (en) Address space management in systems having multiple multi-processor clusters
US20030233388A1 (en) Transaction management in systems having multiple multi-processor clusters
CN110442540A (zh) 灵活总线协议协商和启用序列
US20040210693A1 (en) Managing I/O accesses in multiprocessor systems
CN101216814A (zh) 一种多核多操作系统之间的通信方法及系统
WO2013136522A1 (ja) 計算機システム及び計算機間のデータ通信方法
US20080086603A1 (en) Memory management method and system
CN107111576A (zh) 发布的中断架构
US8725919B1 (en) Device configuration for multiprocessor systems
CN107851078B (zh) 一种PCIe设备的聚合友好型地址分配的方法和系统
KR20140078161A (ko) Pci 익스프레스 스위치 및 이를 이용한 컴퓨터 시스템
CN1320464C (zh) 用于维持共享高速缓存一致性的方法和设备
US20090235048A1 (en) Information processing apparatus, signal transmission method, and bridge
CN104685480B (zh) 关于芯片套接字协议的网络
US20170255558A1 (en) Isolation mode in a cache coherent system
WO2006085272A3 (en) Scalable universal serial bus architecture
US20240231615A1 (en) Apparatus and method for sanitizing a shared memory device or a memory expander
JP4774099B2 (ja) 演算処理装置、情報処理装置及び演算処理装置の制御方法
KR20060025404A (ko) 버스 브릿지

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20160721

Address after: Singapore Singapore

Patentee after: Avago Technologies General IP (Singapore) Pte. Ltd.

Address before: California, USA

Patentee before: LSI Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120704

Termination date: 20150921

EXPY Termination of patent right or utility model