CN116450547A - 将非PCIe加速器连接为PCIe设备 - Google Patents

将非PCIe加速器连接为PCIe设备 Download PDF

Info

Publication number
CN116450547A
CN116450547A CN202310437907.3A CN202310437907A CN116450547A CN 116450547 A CN116450547 A CN 116450547A CN 202310437907 A CN202310437907 A CN 202310437907A CN 116450547 A CN116450547 A CN 116450547A
Authority
CN
China
Prior art keywords
pcie
pal
configuration
pcie device
devices
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.)
Pending
Application number
CN202310437907.3A
Other languages
English (en)
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.)
Google LLC
Original Assignee
Google 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 Google LLC filed Critical Google LLC
Publication of CN116450547A publication Critical patent/CN116450547A/zh
Pending legal-status Critical Current

Links

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/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • 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/10Program control for peripheral devices
    • G06F13/105Program control for peripheral devices where the programme performs an input/output emulation function
    • 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/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • 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/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • 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/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/126Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Abstract

本公开涉及将非PCIe加速器连接为PCIe设备。本文通常公开了一种使用外围组件快速互连(PCIe)抽象层(“PAL”)使非PCIe加速器能够连接为PCIe设备的方法。一旦操作系统使用标准的PCIe API访问和配置任何SoC上设备和加速器,可以将所有PCIe配置事务路由到所述PAL。PAL的固件可以为操作系统呈现虚拟PCIe空间,虚拟PCIe空间包含所有可用的SoC PCIe和非PCIe设备。PAL的固件可以将PCIe配置事务转换为设备特定的配置事务。

Description

将非PCIe加速器连接为PCIe设备
技术领域
本公开涉及将非PCIe加速器连接为PCIe设备。
背景技术
服务器级片上系统(SOC)通常具有高性能PCI Express(Peripheral ComponentInterconnect Express,PCIe,外围组件快速互连)根复杂实施方式,这些实施方式用于附加位于芯片外的各种通用外设或加速器,并且将它们的功能公开给软件。使用PCIe的好处可以包括广泛的硬件兼容性、随着时间组装各种不同系统配置的能力以及完全标准化的软件枚举机制。然而,SoC上或包上设备和加速器通常作为整个系统地址映射(SAM)中的静态存储器映射IO(MMIO)区域公开给操作系统。
静态地址区域包含特定IP块的控制和状态寄存器(CSR)。SoC上IP块在逻辑上没有附接到可枚举的总线。而是,它们在SAM中的位置被硬编码为各种信息表,这些信息表被提供给操作系统。除了使用固件维护的表之外,操作系统没有任何标准化的手段来发现和/或枚举这些设备。操作系统没有任何手段来控制或使用存储器管理单元(MMU)将这些SoC上IP块与其它系统设备隔离或将它们分配给客户虚拟机。设备驱动程序特定于给定设备和特定于设备所在的SoC两者。
发明内容
本文通常公开了一种使用PCIe抽象层(“PAL”)使非PCIe设备——诸如,加速器——能够连接为抽象的PCIe设备的方法。根据这种方法,操作系统使用标准的PCIe应用编程接口(API)访问和配置任何SoC上设备和加速器。PCIe配置事务可以路由到PAL。PAL的固件可以为操作系统呈现PCIe拓扑,该拓扑包含所有可用的SoC PCIe和抽象的PCIe设备。PAL的固件可以将PCIe配置事务转换为设备特定的配置事务,这些事务是在PAL和非PCIe设备之间执行的。进一步地,PAL的固件可以创建配置空间的表示,其启用单根I/O虚拟化(SR-IOV)以允许设备虚拟化,即使这种虚拟化不被非PCIe设备本机支持。因此,非PCIe加速器可以作为抽象的PCIe设备附接,而不需要硬件改变,也不需要改变非PCIe加速器的排序模型。
本公开的一个方面提供了一种将非PCIe加速器连接为PCIe设备的方法。该方法包括在系统的基于固件的PCIe抽象层(“PAL”)接收来自系统的核心的配置事务,这些配置事务用于配置附接到系统的外围设备。当配置事务是针对附接到系统的非PCIe设备时,PAL终止非PCIe设备的配置事务,并且直接配置非PCIe设备。
在示例中,直接配置PCIe包括直接用非PCIe设备处理设备特定和功能特定的配置。
在另一示例中,在配置之后,非PCIe设备直接使用嵌入非PCIe设备中的本机接口和排序方案访问系统的存储器。
在另一示例中,方法包括用一个或多个处理器在PAL中创建PCIe拓扑,其中,PCIe拓扑包括多个PCIe设备和多个抽象的PCIe设备。
在另一示例中,PCIe拓扑是通过增强配置访问机制(“ECAM”)访问的,以允许通过停止多个线程试图同时访问配置空间来管理多个PCIe配置。
在另一示例中,方法包括当虚拟化没有被多个非PCIe设备之一本机支持时,创建PCIe配置空间。
在另一示例中,方法包括将非PCIe设备分配给存储器映射I/O(“MMIO”)范围,并且配置相干网格网络,以将非PCIe设备映射到PAL。
在另一示例中,非PCIe设备为加速器,并且进一步包括实施加速器特定的接口,该接口提供虚拟功能分离。
在另一示例中,当配置事务是针对PCIe设备时,通过网格网络将配置事务转发给PCIe设备的一个或多个控制器。
在另一示例中,方法包括通过维护PCIe拓扑的副本来观察针对存储器的一个或多个配置写入事务。
在另一示例中,方法包括当配置事务是针对PCIe设备时,通过PAL将配置事务转发给PCIe设备的一个或多个控制器。
在另一示例中,PCIe配置空间是基于配置空间的表示使用PAL的固件创建的,该配置空间的表示启用单根I/O虚拟化(SR-IOV)以允许设备虚拟化。
本公开的另一方面提供了一种系统,该系统包括一个或多个存储器以及一个或多个处理器,这些处理器被配置为:在系统的基于固件的PCIe抽象层接收来自系统的核心的配置事务,这些配置事务用于配置附接到系统的外围设备。当配置事务是针对作为抽象的PCIe设备附接到系统的非PCIe设备时,所述一个或多个处理器被配置为终止非PCIe设备的配置事务,并且直接配置非PCIe设备。
在示例中,所述一个或多个处理器被配置为直接用非PCIe设备处理设备特定和功能特定的配置。
在另一示例中,在配置之后,非PCIe设备直接使用嵌入非PCIe设备中的本机接口和排序方案访问系统的存储器。
在另一示例中,所述一个或多个处理器被配置为在PAL中创建PCIe拓扑,其中,PCIe拓扑包括多个PCIe设备和多个抽象的PCIe设备。
在另一示例中,PCIe拓扑是通过增强配置访问机制(“ECAM”)访问的,以允许通过停止多个线程试图同时访问配置空间来管理多个PCIe配置。
在另一示例中,所述一个或多个处理器被配置为当虚拟化没有被多个非PCIe设备之一本机支持时,创建PCIe配置空间。
在另一示例中,所述一个或多个处理器被配置为将非PCIe设备分配给存储器映射I/O(“MMIO”)范围,并且配置相干网格网络,以将非PCIe设备映射到PAL。
在另一示例中,当配置事务是针对PCIe设备时,通过网格网络将配置事务转发给PCIe设备的一个或多个控制器。
附图说明
图1描绘了根据本公开的方面的示例平台的框图。
图2描绘了根据本公开的方面的由PAL呈现的示例PCIe树的框图。
图3A至图3B描绘了根据本公开的方面的示例配置空间映射的框图。
图4描绘了根据本公开的方面的示例PAL架构的框图。
图5描绘了根据本公开的方面的由PAL进行的示例功能中断处理过程的框图。
图6描绘了根据本公开的方面的示例PAL地址重映射功能的框图。
图7描绘了根据本公开的方面的示例虚拟机映射过程的框图。
图8描绘了根据本公开的方面的将非PCIe加速器连接为PCIe设备的示例方法的流程图。
具体实施方式
本文通常公开了一种使得非PCIe加速器能够连接为PCIe设备的方法。外围设备可以包括PCIe设备和非PCIe设备两者。PAL可以是片上系统(SoC)微控制器。PAL可以通过诸如网格的片上硬件互连与核心、存储器和加速器通信。PCIe配置事务从运行PCIe驱动程序软件的核心路由到PAL。
PAL可以为PCIe驱动程序软件提供到SoC PCIe拓扑的接口,该拓扑可以包括耦合到网格并且作为“抽象的”PCIe设备访问的PCIe设备和非PCIe设备的混合。这种抽象的PCIe设备的示例是硬件加速器,包括但不限于直接存储器访问(DMA)、加密引擎、压缩引擎等。PCIe功能的配置事务通过PCIe拓扑转发给PCIe设备中的相应控制器。PAL可以终止针对抽象的PCIe设备的配置事务。
PAL可以在其自己的存储器空间中实施虚拟配置空间。然后,它可以响应任何代表非PCIe设备的配置读或写。PAL还可以基于对原始PCIe配置事务的解释,生成对非PCIe设备的非PCIe配置访问。例如,PCIe驱动程序软件可以写入非PCIe设备的配置空间中的功能级重置(FLR)寄存器。PAL可以终止PCIe事务,并且可以生成朝向非PCIe设备的非PCIe事务,该非PCIe设备然后可以写入FLR寄存器。一旦被PAL配置,非PCIe设备就可以使用其本机接口和排序方案访问存储器。
根据一些示例,PAL在PAL存储器内为每个非PCIe设备创建虚拟配置空间。虚拟配置空间可以是PAL的本地存储器中的标准PCIe配置空间的表示。PAL可能不一定实施所有定义的PCIe配置寄存器。PAL可能只实施与非PCIe设备最相关的配置寄存器。固件创建PCIe拓扑,该拓扑可以包含所有可用的基于SoC PCIe和非PCIe的设备。PAL固件可以将创建的PCIe拓扑呈现给操作系统。PCIe驱动程序软件可以使用标准的PCIe配置事务来枚举非PCIe设备,并且将它们分配给存储器映射I/O(MMIO)范围。PAL可以配置SoC的内部互连(例如,内部总线、网格、NoC等),使得最初分配给非PCIe设备的所有MMIO范围都映射到PAL本身。在虚拟PCIe空间中,PAL可以允许和呈现每个非PCIe设备的单个虚拟端点。每个虚拟端点都可以支持由PAL抽象的非PCIe设备所需的尽可能多的PCIe功能。
根据一些示例,PAL可以处理系统中的所有PCIe配置事务。PCIe驱动程序软件通过增强配置访问机制(ECAM)访问PCIe配置空间。ECAM允许PCIe驱动程序软件访问PCIe拓扑中所有设备的配置空间。每个功能可用的配置空间为4KB,并且ECAM可以将所有可能的PCIe配置地址映射到单个存储器范围,诸如,128MB、256MB、512MB或其他大小的存储器范围。来自ECAM范围的地址被映射到PCIe总线/设备/功能(BDF)标识符,使得当软件访问分配给特定功能的地址范围时,存储器读或写事务可以被路由到正确的设备。就这一点而言,PCIe设备的PCIe根端口可以将事务转换为PCIe配置事务层协议(TLP),并且将转换的事务发送给下游PCIe设备。
根据一些示例,PAL可以基于驱动程序软件所生成的配置事务为支持MSI生成的非PCIe设备配置加速器消息信号中断(MSI)定义。PCIe设备可以使用MSI坚持对操作系统的中断。由于SoC上的非PCIe设备可能不支持MSI生成,PAL可以提供将线路中断转换为MSI的服务。在一些示例中,PAL可以实施硬件单元来处理线路中断到MSI的转换,以避免将微控制器作为中断路径的部分。PAL的固件可以基于针对分配给每个非PCIe设备的虚拟端点的PCIe配置事务来配置表。这个表可以用于在朝向转换中断的软件的接口上生成{DeviceID,EventID}。进一步的中断处理,诸如,清除状态位,可以在非PCIe设备的驱动程序和其硬件之间直接执行。
根据其他示例,所有基于PCIe或非PCIe的重置请求都被PAL转换为一系列动作,这些动作可以在特定设备上生成所请求的重置效果。功能级重置处理依赖于非PCIe设备特定的实施方式。非PCIe级重置由电源管理支持系统驱动。电源管理支持系统和PAL之间的进程间通信(IPC)可以用于传递重置指令。重置可以使PCIe设备进入已知的初始状态。当错误发生时,可能需要重置。例如,如果诸如DMA的非PCIe设备有32个信道,并且每个信道都连接到PAL中的32个独立虚拟端点,则多个信道可能不需要重置。PAL可以通过连接到该特定信道的特定虚拟端点为单个信道传递重置指令。
根据一些示例,单根I/O虚拟化(SR-IOV)支持依赖于特定的非PCIe设备实施方式。PAL可以实施虚拟配置空间,该虚拟配置空间可以包括假设非PCIe设备支持虚拟化的虚拟功能能力。PAL固件实施加速器特定的接口,该接口可以提供虚拟功能分离,以确保不同的虚拟功能之间互不妨碍。例如,PAL可以基于配置的虚拟功能的数量动态分配可用DMA引擎的数量。如果配置了单个虚拟功能,则所有可用的DMA信道都可以被分配给该单个虚拟功能。如果配置了另一虚拟功能,则PAL可以在两个虚拟功能之间平均分配可用的DMA信道。
根据一些示例,PAL不主动参与物理PCIe根端口和设备的存储器映射I/O(MMIO)分配过程。配置事务通过PAL,并且PAL将它们路由到对应的根端口,但是PAL不修改或观察这些事务的内容。另一方面,对于抽象的PCIe设备,PAL为抽象的PCIe设备的PCIe软件提供配置空间接口。对于每个加速器,PAL应基于特定的加速器的需求提供基址寄存器(BAR)大小要求。PAL为支持SR-IOV的加速器提供虚拟功能配置空间和BAR。
PAL可以由高性能处理器、包装器、配置接口、入口队列处理器、中断转换逻辑、内部数据结构(internal data fabric)和地址重映射单元组成。处理器基于维护影子PCIe拓扑通过观察到总线/设备/功能(BDF)的配置写入(ConfigWr)事务来监测枚举。然后,PAL可以基于在PCIe和非PCIe设备的枚举期间所执行的PCIe MMIO分配更新SoC的内部系统地址映射。当PAL需要将配置事务路由到特定根端口或虚拟根端口时,PAL可以在其存储器中维护枚举的PCI拓扑的副本,以监测哪些PCIe或非PCIe设备驻留在哪个端口下。
根据一些示例,在枚举期间,PAL可以基于PCIe驱动程序软件的决策来动态地改变内部SoC配置。这种改变可以包括OS引导。当OS引导系统时,OS可以配置SoC与PAL PCIe的段范围的内部互连。OS可以枚举PCIe设备,并且在OS PCIe段范围内分配MMIO空间。当数据从核心流到PCIe设备的根端口时,可以为MMIO转换创建访问权限,该转换是针对分配给OSPCIe地址映射中的根端口的MMIO空间。然后,PAL的“地址重映射功能”可以将根端口的地址转换为PAL的段地址。
图1描绘了根据本公开的方面的示例平台的框图。PCIe抽象平台100包括PCIe抽象层(PAL)110。例如,PAL 110可以是微控制器,该微控制器由诸如,处理器、内部配置结构、入口队列处置器(handler)、中断转换逻辑、中断转换服务和地址重映射单元的各种组件组成。下面结合图4进一步详细描述PAL 110的示例详细架构。
PAL 110可以接收源自核心140的所有PCIe配置事务。核心140可以是与存储器150通信的CPU核心。
核心140可以是驻留在芯片、多核处理器或任何其他已知处理器上的微处理器。虽然只示出了一个CPU核心,但是可以连接任何数量的CPU核心。核心140可以包括主机或PCIe驱动程序软件,该软件基于总线和设备号配置交换机端口来路由业务。
存储器150可以是任何类型的存储器,诸如,只读存储器、随机存取存储器、可移动存储介质、高速缓存、寄存器等。
网格120可以是将PCIe设备和非PCIe设备与核心140和存储器150连接的硬件互连。网格120可以是芯片上的任何类型的硬件互连。网格120可以基于PCIe的枚举功能进行动态配置。
PCIe根端口130可以是计算机的主板上的特定端口。PCIe根端口130可以是根复合体上的端口,也可以是主板包含主桥的部分。主桥可以允许PCI根端口与计算机的其余部分通信,从而使插入PCIe根端口的组件能够与计算机一起工作。
非PCIe设备160可以是任何类型的硬件设备或软件程序,其主要功能是增强计算机的整体性能。非PCIe设备160可以包括硬件加速器、图形加速器、密码加速器、网络加速器、超文本预处理器加速器等。
在一些示例中,所有PCIe配置事务都可以被路由到PAL 110。一旦PAL 110接收到来自核心140的PCIe配置事务信息,PAL 110便可以生成到SoC PCIe拓扑的接口,并且提供嵌入核心140中的主机软件。SoC PCIe拓扑可以包括PCIe设备——诸如,通过PCIe根端口130连接的PCIe设备——和包括非PCIe设备160的抽象的PCIe设备的混合。涉及PCIe设备的配置事务可以经由网格120转发给PCIe根端口130。涉及抽象的PCIe设备的配置事务可以由PAL 110终止。
根据一些示例,设备或功能特定的配置可以直接由嵌入PAL中的固件处理,与非PCIe设备160直接使用其本机接口和排序方案访问存储器150相反。
图2描绘了根据本公开的方面的由PAL呈现的示例虚拟PCIe空间的框图。根据一些示例,PAL 110可以通过在PAL存储器中为每个非PCIe设备创建虚拟配置空间,允许在虚拟PCIe空间202中配置和枚举非PCIe SoC上设备。核心140的PCIe软件可以使用标准的PCIe配置事务来枚举加速器,并且将它们分配给MMIO范围。PAL 110可以配置网格120,使得由PCIe软件分配给包括非PCIe设备160的非PCIe设备的所有MMIO范围都可以映射到PAL 110。
在这个示例中,OS 204可以通过驻留在每个PCIe设备216、218、220和222的PAL110上的总线234发送转发的PCIe配置事务224。原始存储器映射配置(MMCFG)地址范围238可以通过PAL 110进行地址转换过程230,使得转换后的MMCFG地址232现在作为静态配置的地址范围存储在PAL 110的存储器中。
PAL 110还可以将单个虚拟根端口(vRP)206呈现给核心140中的PCIe软件。在vRP206下,PAL 110可以呈现单个虚拟端点(vEP)208、vEP 210或包括加速器160的每个非PCIe设备的更多虚拟端点。每个虚拟端点——在该示例中为vEP 208和vEP 210——都支持与一个或多个非PCIe设备所支持的一样多的虚拟功能。
在一些其他示例中,PAL 110可以将直接存储器访问(DMA)呈现给OS 204,作为驻留在vRP 206下支持SRIOV的非PCIe设备。PAL 110所呈现的DMA可以支持多个信道,诸如,64个信道或更多。PAL 110可以允许DMA支持与多个信道对应的多个虚拟功能的虚拟化。信道分配可以是静态的,并且由PAL固件管理。例如,PAL 110可以将单个信道分配给单个虚拟功能。在诸如非PCIe设备160的非PCIe设备的枚举过程中,PAL 110可以请求每个虚拟功能的MMIO范围和每个虚拟端点下的每个物理功能。
图3A至图3B描绘了根据本公开的方面的示例配置空间映射的框图。在该示例中,核心140上运行的软件可以经由增强配置访问机制(ECAM)访问PCIe配置空间202。ECAM是允许PCIe访问配置空间的机制。ECAM可以使能多CPU配置的管理。使用ECAM,可以将PCIe配置空间202映射到存储器地址。ECAM还可以允许单个命令序列。ECAM可以将所有可能的PCIe配置地址映射到单个存储器范围内。
总线/设备/功能ID为用于标识PCIe设备的8位PCI总线、5位设备和3位功能号。在一些示例中,来自ECAM的地址可以映射到PCIe总线/设备/功能ID。就这一点而言,当PCIe驱动程序软件请求访问分配给特定功能的范围,诸如,存储器读或写事务,核心140可以将事务命令路由给正确的PCIe设备。由于PAL 110可以处理系统中的所有PCIe配置事务,ECAM范围可以直接映射到PAL 110,使得上述软件访问必须到达PAL 110。PAL 110可以基于网格120所进行的预分配映射以及系统中PCIe设备的物理连接,将ECM地址重映射到分配给特定PCIe设备的新范围。
在一些其他示例中,PAL 110可以基于对枚举操作的观察并保留PCIe配置拓扑的副本来保持跟踪外部PCIe总线/设备/功能ID。
参照图3A的示例,OS存储器302中的单个段可以具有单个256MB存储器范围。OS存储器302中单个段的每个块都代表4KB的存储器,并且它可以映射与32个设备、256个总线和8个功能对应的信息。OS存储器302中单个段中所存储的信息可以进行结构映射过程306,并且到达PAL 110。在这个过程中,将包含PCIe初始配置范围的请求节点系统地址映射(RN-SAM)304中所包含的地址直接发送给PAL 110。当PAL 110确定某个事务的总线/设备/功能ID与虚拟根节点或端点——例如,vRP 316——匹配时,PAL 110可以执行固件终止过程314。RN-SAM 318可以包含预配置的ECAM地址。RN-SAM 318还可以包含对应PCIe设备的根端口——诸如,PCIe RP 308、310和312——的每个总线/设备/功能ID的映射信息。
参照图3B,PAL 110可以监测配置事务的枚举,并且根据需要更新RN-SAM 304。由于PAL 110是ECAM目标地址的唯一启动程序,只允许PAL 110更新其RN-SAM。在该示例中,新的总线/设备/功能ID 320可以被更新为RN-SAM 304。新的总线/设备/功能ID 320可以由PAL 110枚举。例如,作为枚举过程的结果,BUS1/DEV0 322和BUS2/DEV0 324可以耦合到PCIe RP 310,并且BUS3/DEV0 326可以耦合到PCIe RP 314。
图4描绘了根据本公开的方面的示例PCIe抽象层架构的框图。控制器402可以是微控制器,该微控制器可以包括一个或多个CPU和存储器以及可编程输入/输出外设。内部配置结构404可以被处理器402用来访问入口队列处理器406和中断转换逻辑408。内部配置结构404可以是为降低接口复杂性和支持外围功能的最小功耗而优化的协议。
入口队列处理器406可以存储路由到PAL 110的PCIe配置事务。一旦配置事务被存储在入口队列处置器406中,可以向控制器402发起中断,以发信号通知可以处理新的配置事务。入口队列处置器406还可以实施控制器402所使用的响应队列,以向图1中的网格120返回读和写命令。
中断转换逻辑408可以是由控制器402配置的表,该表用于将从PAL 110所服务的加速器到达的线路中断转换为传递给本地中断接口逻辑410的{DeviceID,EventID}属性。在一个示例中,从加速器到达的线路中断可以使用访问控制检查器(ACC)412来阻止。ACC412可以将访问控制提供给图1中网格120的CSR以及控制器402、入口队列处置器406。
中断接口逻辑410可以用于将加速器中断转发给通用中断控制器。中断接口逻辑410可以通过协议与内部接口414交互。
内部互连414可以是硬件互连,该硬件互连可以将控制器402、入口队列处置器406和中断接口逻辑410互连。内部互连414可以包含一个或多个节点,该一个或多个节点可以与特定组件交互。例如,节点418可以与控制器402交互,并且节点416可以与入口队列处置器406交互。
图5描绘了根据本公开的方面的由PAL进行的示例功能中断处理过程的框图。PAL层次502包括PAL 110、中断转换逻辑408和中断接口逻辑410。对于可以支持消息信号中断(MSI)生成的非PCIe设备,PAL 110可以基于核心140上运行的软件所生成的配置事务配置非PCIe设备160MSI。然而,当非PCIe设备160只支持线路中断时,可以实施专用中断转换器。在该示例中,PAL 110可以配置中断转换逻辑408,以配置线路中断的专用中断转换器。
在一些其他示例中,PAL 110可以提供服务,以将线路中断转换为MSI。为了避免将微控制器作为中断路径的部分,PAL 110可以实施硬件单元,以处理线路中断到MSI的转换。PAL 110固件可以基于针对分配给每个加速器的虚拟端点的PCIe配置事务配置中断转换逻辑408所生成的表。
图6描绘了根据本公开的方面的示例PAL地址重映射功能的框图。例如,当OS引导时,引导过程可以用PAL PCIe段地址映射602配置网格。OS可以枚举通过网格附接的PCIe设备,并且分配OS PCIe段地址映射606中的MMIO空间。
当PCIe根端口的访问点创建针对分配给OS PCIe段地址映射606中的PCIe根端口的MMIO空间的MMIO事务时,事务可以通过网格路由到PAL。然后,PAL地址重映射功能604可以将目标MMIO空间的地址转换为PCIe段地址映射602。然后,转换可以通过网格路由到根端口RP0 610至RP12 616。
图7描绘了根据本公开的方面的利用PAL的示例虚拟机映射过程的框图。参照图7,VM 702包括DMA驱动器704。VM 702可以通过将其虚拟地址转换为互联网协议地址并且将其发送给MMU 706来与MMU 706交互。虽然在图7中只示出了一个VM 702,但是应当理解,多个VM可以通过PAL 110与DMA 708通信。
MMU 706可以是存储器管理单元。存储器管理单元可以执行虚拟存储器地址到物理地址的转换。在该示例中,MMU 706可以将接收到的互联网协议地址转换为物理地址,并且将其发送给非PCIe设备,诸如,直接存储器地址DMA 708。DMA 708可以代表处理器处理到外围设备的存储器传输的细节。
DMA 708可以包括CSR 710和CSR 712。CSR可以是控制和状态寄存器,该寄存器驻留在CPU中,以存储关于从PCIe或非PCIe设备接收到的指令的信息。
PAL 110可以充当功能虚拟机分离器,该功能虚拟机分离器可以抽象或限制对客户OS无法访问的功能和没有分配给特定虚拟机的信道的访问。
例如,当VM 702上运行的软件生成到其自己的虚拟地址空间中的DMA范围的读或写命令时,MMU 706可以转换地址。MMU 706可以将地址从每个VM的DMA范围转换为单独的范围,该范围可以在网格中配置为路由到PAL 110。基于设置有事务的地址,PAL 110可以推断VM 702的标识符,并且执行任何抽象或访问控制操作。然后,PAL 110可以转换提供给DMA708地址范围的地址,并且将地址存储在控制和状态寄存器之一(CSR 712)中。
图8描绘了使用PAL将非PCIe设备连接为抽象的PCIe设备的示例方法的流程图。根据框802,PAL可以接收来自计算机系统的核心的配置事务。根据一些示例,配置事务可以包括配置附接到系统的外围设备。
根据框804,PAL可以确定附接到系统的外围设备是PCIe设备,还是非PCIe设备。如果PAL确定外围设备是PCIe设备,则它可以进行框806。如果PAL确定外围设备是非PCIe设备,则它可以进行框808。
根据框806,PAL可以将从核心接收到的配置事务转发给PCIe设备。
根据框808,当外围设备是非PCIe设备时,PAL终止配置事务。
根据框810,PAL将非PCIe设备配置为抽象的PCIe设备。根据一些示例,PAL可以生成具有一个或多个虚拟端点的虚拟根端口,以与非PCIe设备传递事务。PAL可以生成PCIe拓扑,该拓扑可以包含所有连接的PCIe设备和抽象的PCIe设备。PAL还可以在其自己的存储器空间中实施虚拟配置空间,使得PAL可以代表抽象的PCIe设备响应任何配置读或写。因此,PAL可以提供完全标准化的机制,通过该机制,操作系统和应用软件可以通过与PCIe设备相同的方式发现并编程抽象的PCIe设备,使得更有效且高效地实现功能和设备重置、设备分配和平台错误处理流程。
虽然本文中的技术已经参照特定示例进行了描述,但是应当理解,这些示例仅仅说明了本技术的原理和应用。因此,应当理解,可以进行许多修改,并且可以设想其他布置,而不脱离所附权利要求书所定义的本技术的精神和范围。
除非另有说明,否则上述替代示例并不是相互排斥的,而是可以在各种组合实施以实现独特的优势。因为在不脱离权利要求书所定义的主题的情况下可以利用上述特征的这些和其他变型以及组合,所以应当以说明权利要求书所定义的主题的方式而不是以限制该主题的方式进行上述描述。另外,本文所描述的示例的提供以及表示为“诸如”、“包括”等的字句不应被解释为将权利要求书的主题限于具体示例;而是,示例仅仅旨在说明许多可能的实施例中的一个。进一步地,不同附图中相同的参考数字可以标识相同的或相似的元件。

Claims (20)

1.一种将非外围组件快速互连PCIe加速器连接为PCIe设备的方法,所述方法包括:
在系统的基于固件的PCIe抽象层PAL接收来自所述系统的核心的配置事务,所述配置事务用于配置附接到所述系统的外围设备;以及
当所述配置事务是针对附接到所述系统的非PCIe设备时:
通过所述PAL,终止所述非PCIe设备的所述配置事务;以及
通过所述PAL,将所述非PCIe设备直接配置为抽象的PCIe设备。
2.根据权利要求1所述的方法,其中,直接配置所述PCIe包括直接用所述非PCIe设备处理设备特定和功能特定的配置。
3.根据权利要求1所述的方法,其中,在所述配置之后,所述非PCIe设备直接使用嵌入所述非PCIe设备中的本机接口和排序方案访问所述系统的存储器。
4.根据权利要求1所述的方法,进一步包括在所述PAL中创建PCIe拓扑,其中,所述PCIe拓扑包括多个PCIe设备和多个抽象的PCIe设备。
5.根据权利要求4所述的方法,其中,所述PCIe拓扑是通过增强配置访问机制(“ECAM”)访问的,以允许通过停止多个线程试图同时访问配置空间来管理多个PCIe配置。
6.根据权利要求1所述的方法,进一步包括当虚拟化没有被所述非PCIe设备本机支持时,创建PCIe配置空间。
7.根据权利要求6所述的方法,其中,所述PCIe配置空间是基于配置空间的表示使用所述PAL的固件创建的,所述配置空间的表示启用单根I/O虚拟化(SR-IOV)以允许设备虚拟化。
8.根据权利要求1所述的方法,进一步包括:
将所述非PCIe设备分配给存储器映射I/O(“MMIO”)范围;以及
配置网格网络,以将所述非PCIe设备映射到所述PAL。
9.根据权利要求1所述的方法,其中,所述非PCIe设备为加速器,并且所述方法进一步包括实施加速器特定的接口,所述加速器特定的接口提供虚拟功能分离。
10.根据权利要求1所述的方法,其中,当所述配置事务是针对PCIe设备时,所述配置事务是经由网格网络被转发给所述PCIe设备的一个或多个控制器的。
11.根据权利要求1所述的方法,进一步包括通过维护PCIe拓扑的副本来观察针对存储器的一个或多个配置写入事务。
12.根据权利要求1所述的方法,进一步包括当所述配置事务是针对PCIe设备时,由所述PAL将所述配置事务转发给所述PCIe设备的一个或多个控制器。
13.一种用于将非外围组件快速互连PCIe加速器连接为PCIe设备的系统,所述系统包括:
一个或多个存储器;以及
一个或多个处理器,所述一个或多个处理器被配置为:
在基于固件的PCIe抽象层PAL接收来自所述系统的核心的配置事务,所述配置事务用于配置附接到所述系统的外围设备,所述外围设备是PCIe设备或非PCIe设备之一;
当所述配置事务是针对作为抽象的PCIe设备附接到所述系统的非PCIe设备时:
终止所述非PCIe设备的所述配置事务;以及
直接配置所述非PCIe设备。
14.根据权利要求13所述的系统,其中,所述一个或多个处理器被配置为直接用所述非PCIe设备处理设备特定和功能特定的配置。
15.根据权利要求13所述的系统,其中,在所述配置之后,所述非PCIe设备直接使用嵌入所述非PCIe设备中的本机接口和排序方案访问所述系统的存储器。
16.根据权利要求13所述的系统,其中,所述一个或多个处理器被配置为在所述PAL中创建PCIe拓扑,其中,所述PCIe拓扑包括多个PCIe设备和多个抽象的PCIe设备。
17.根据权利要求16所述的系统,其中,所述PCIe拓扑是通过增强配置访问机制(“ECAM”)访问的,以允许通过停止多个线程试图同时访问配置空间来管理多个PCIe配置。
18.根据权利要求13所述的系统,其中,所述一个或多个处理器被配置为当虚拟化没有被所述非PCIe设备本机支持时,创建PCIe配置空间。
19.根据权利要求13所述的系统,其中,所述一个或多个处理器被配置为:
将所述非PCIe设备分配给存储器映射I/O(“MMIO”)范围;以及
配置网格网络,以将所述非PCIe设备映射到所述PAL。
20.根据权利要求13所述的系统,其中,当所述配置事务是针对PCIe设备时,所述配置事务是通过网格网络被转发给所述PCIe设备的一个或多个控制器的。
CN202310437907.3A 2022-11-15 2023-04-21 将非PCIe加速器连接为PCIe设备 Pending CN116450547A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/987,497 2022-11-15
US17/987,497 US20240160594A1 (en) 2022-11-15 2022-11-15 CONNECTING NON-PCIe ACCELERATORS AS PCIe DEVICES

Publications (1)

Publication Number Publication Date
CN116450547A true CN116450547A (zh) 2023-07-18

Family

ID=86387183

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310437907.3A Pending CN116450547A (zh) 2022-11-15 2023-04-21 将非PCIe加速器连接为PCIe设备

Country Status (3)

Country Link
US (1) US20240160594A1 (zh)
EP (1) EP4372570A1 (zh)
CN (1) CN116450547A (zh)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8732349B2 (en) * 2009-11-18 2014-05-20 Fusion-Io, Inc. Assignment of resources in an input/output (I/O) virtualization system
US11106616B1 (en) * 2019-11-21 2021-08-31 Xilinx, Inc. Virtualized peripheral component interconnect express (PCIe) device

Also Published As

Publication number Publication date
US20240160594A1 (en) 2024-05-16
EP4372570A1 (en) 2024-05-22

Similar Documents

Publication Publication Date Title
US9875208B2 (en) Method to use PCIe device resources by using unmodified PCIe device drivers on CPUs in a PCIe fabric with commodity PCI switches
US11113089B2 (en) Sharing data via virtual machine to host device bridging
US20090276551A1 (en) Native and Non-Native I/O Virtualization in a Single Adapter
US10846254B2 (en) Management controller including virtual USB host controller
US11829309B2 (en) Data forwarding chip and server
US10067900B2 (en) Virtualized I/O device sharing within a distributed processing node system
US20120284437A1 (en) Pci express sr-iov/mr-iov virtual function clusters
US11995019B2 (en) PCIe device with changeable function types and operating method thereof
US11983136B2 (en) PCIe device and operating method thereof
US11928070B2 (en) PCIe device
US11922072B2 (en) System supporting virtualization of SR-IOV capable devices
US11741039B2 (en) Peripheral component interconnect express device and method of operating the same
US20220300442A1 (en) Peripheral component interconnect express device and method of operating the same
JP5431621B2 (ja) I/oメッセージの影響を受ける1つ又は複数個のパーティション化可能なエンドポイントを決定するデータ処理システム
US20180136868A1 (en) Translation bypass by host iommu for systems with virtual iommu
JP2024508882A (ja) データ移動を容易にするために複数のアドレス空間をサポートする方法、システム及び装置
JP2023509712A (ja) PCIe周辺機器共有
TW202240414A (zh) PCIe功能及其操作方法
EP4372570A1 (en) Connecting non-pcie accelerators as pcie devices.
US8225007B2 (en) Method and system for reducing address space for allocated resources in a shared virtualized I/O device
Yin et al. A reconfigurable rack-scale interconnect architecture based on PCIe fabric
US20230350824A1 (en) Peripheral component interconnect express device and operating method thereof
TWI615720B (zh) 資源分配系統、設備分配控制器以及設備識別方法
CN117877541A (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