CN115203095A - PCIe装置及其操作方法 - Google Patents

PCIe装置及其操作方法 Download PDF

Info

Publication number
CN115203095A
CN115203095A CN202210209897.3A CN202210209897A CN115203095A CN 115203095 A CN115203095 A CN 115203095A CN 202210209897 A CN202210209897 A CN 202210209897A CN 115203095 A CN115203095 A CN 115203095A
Authority
CN
China
Prior art keywords
function
general
functions
type
function type
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
CN202210209897.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.)
SK Hynix Inc
Original Assignee
SK Hynix Inc
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 SK Hynix Inc filed Critical SK Hynix Inc
Publication of CN115203095A publication Critical patent/CN115203095A/zh
Pending legal-status Critical Current

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/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/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/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0653Configuration or reconfiguration with centralised address assignment
    • 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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/404Coupling between buses using bus bridges with address mapping
    • 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/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • 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/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
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Mathematical Physics (AREA)
  • Information Transfer Systems (AREA)

Abstract

本申请提供一种高速外围组件互连(PCIe)装置及其操作方法。该PCIe装置包括:多个通用功能,根据多个通用功能中的每一个的功能类型来执行与PCIe接口相关联的操作,多个通用功能中的每一个可编程为从多个功能类型中选择的功能类型;以及功能类型控制器,基于从主机提供的功能类型设置信息来确定多个通用功能中的每一个的功能类型。每个功能类型可以是物理功能类型、虚拟功能类型或禁用功能类型。

Description

PCIe装置及其操作方法
相关申请的交叉引用
本申请要求于2021年4月13日提交的申请号为10-2021-0048063的韩国专利申请的优先权,该韩国专利申请通过引用整体并入本文。
技术领域
本公开涉及一种电子装置,并且更具体地涉及一种高速外围组件互连(PCIe)装置及其操作方法。
背景技术
高速外围组件互连(PCIe)装置可以定义用于将输入/输出装置连接到主机装置的总线协议。高速PCI(PCIe)具有由PCI标准定义的编程构思,并且包括被定义为高速串行接口的物理通信层。
存储装置可以响应于诸如计算机或智能电话等主机装置的控制而存储数据。存储装置可以包括存储数据的存储器装置和控制存储器装置的存储器控制器。存储器装置可以被划分为易失性存储器装置和非易失性存储器装置。
易失性存储器装置只有被供电时才可以保持数据,并且在没有电力供应的情况下可能丢失所存储的数据。易失性存储器装置的类型可以包括静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)等。
非易失性存储器装置即使没有电力供应也不会丢失数据。非易失性存储器装置的类型可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)和闪速存储器。
发明内容
各个实施例涉及一种通过减少PCIe门计数(gate count)来降低电力消耗和装置大小的高速外围组件互连(PCIe)装置及其操作方法。
此外,本公开的各个实施例涉及一种PCIe装置及其操作方法,该PCIe装置通过使用诸如来自主机的请求的软件方法和固件设置而不是通过硬件修改来有效地安排以各个类型配置的功能。
根据实施例,一种高速外围组件互连(PCIe)装置可以包括:多个通用功能,根据多个通用功能中的每一个的功能类型来执行与PCIe接口相关联的操作,多个通用功能中的每一个可编程为从多个功能类型中选择的功能类型;以及功能类型控制器,基于从主机提供的功能类型设置信息来确定多个通用功能中的每一个的功能类型。
根据实施例,一种用于操作高速外围组件互连(PCIe)装置的方法,该高速外围组件互连(PCIe)装置包括执行与PCIe接口相关联的操作的多个通用功能,该方法可包括:从主机接收功能类型设置信息;基于功能类型设置信息,分别确定多个通用功能的多个功能类型,每个功能类型是物理功能(PF)类型、虚拟功能(VF)类型和禁用操作的禁用功能类型中的一个;以及根据多个功能类型来分别控制多个通用功能执行操作。
根据实施例,一种高速外围组件互连(PCIe)装置可以包括:第一功能,根据物理功能(PF)类型来执行与高速外围组件互连(PCIe)接口相关联的操作;第二功能,根据物理功能类型或虚拟功能(VF)类型来执行与PCIe接口相关联的操作;以及功能类型控制器,基于从主机提供的功能类型设置信息来将第二功能的功能类型从物理功能类型改变为虚拟功能类型或从虚拟功能类型改变为物理功能类型。
附图说明
图1示出了根据本公开的实施例的计算系统的示例;
图2示出了根据本公开的实施例的计算系统的另一示例;
图3示出了根据本公开的实施例的计算系统的另一示例;
图4示出了根据本公开实施例的多功能装置;
图5示出了根据本公开的实施例的具有单根输入/输出虚拟化(SR-IOV)能力的PCIe装置的示例;
图6示出了根据本公开实施例的使用SR-IOV的PCIe装置的另一示例;
图7示出了根据本公开的实施例的PCIe装置;
图8示出了根据本公开的实施例的通用功能;
图9示出了根据本公开的实施例的配置空间布局;
图10示出了根据本公开的实施例的PCIe装置的示例;
图11示出了根据本公开的实施例的PCIe装置的另一示例;
图12示出了根据本公开的实施例的PCIe装置的另一示例;
图13示出了根据本公开的实施例的PCIe装置的另一示例;
图14示出了根据本公开的实施例的PCIe装置的另一示例;
图15示出了根据本公开的实施例的PCIe装置的另一示例;
图16A示出了根据本公开的实施例的重置操作的示例;
图16B示出了根据本公开的实施例的重置操作的另一示例;
图16C示出了根据本公开的实施例的重置操作的另一示例;
图16D示出了根据本公开的实施例的重置操作的另一示例;以及
图17是示出了根据本公开的实施例的PCIe的操作过程的流程图。
具体实施方式
对根据本说明书中公开的构思的实施例的示例的具体结构或功能的描述仅为了描述根据该构思的实施例的示例而示出,并且根据该构思的实施例的示例可以通过各种形式来执行,但是这些描述不限于在本说明书中描述的实施例的示例。
图1示出了根据本公开的实施例的计算系统100的示例。
参照图1,计算系统100可以包括主机1000和高速外围组件互连(PCIe)装置2000。计算系统100可以是:例如,蜂窝电话、智能电话、MP3播放器、膝上型计算机、台式计算机、游戏机、电视机、平板PC或车载式信息娱乐系统。
主机1000可以包括处理器1100、存储器1200、输入/输出(I/O)管理器1300和总线1400。主机1000的组件可以通过总线1400来交换信号和数据。
处理器1100可以包括用于处理数据和控制计算系统100的组件的操作的电路、接口或程序代码。例如,处理器1100可以包括CPU(诸如ARMTM处理器)、微控制器或专用集成电路(ASIC)。
存储器1200可以包括SRAM或DRAM,SRAM或DRAM存储计算系统100的操作所需的数据、命令或程序代码。然而,处理器1100还可以包括非易失性存储器。根据实施例,存储器1200可以包括可以操作以运行一个或多个操作系统(OS)和虚拟机(VM)的程序代码以及运行用于管理虚拟机的虚拟化中介(VI)的程序代码。
处理器1100可以通过驱动存储器1200中存储的程序代码来运行一个或多个操作系统和虚拟机。另外,处理器1100可以运行用于管理虚拟机的虚拟化中介。通过这种方式,处理器1100可以控制计算系统100的组件的操作。
I/O管理器1300可以是将输入/输出装置连接到主机1000的适配器。例如,I/O管理器1300可以包括:通用串行总线(USB)适配器、外围组件互连(PCI)或高速PCI(PCIe)适配器、小型计算机系统接口(SCSI)适配器、串行AT附连(SATA)适配器、高速非易失性存储器(NVMe)适配器或者它们的组合。I/O管理器1300可以包括可操作以与连接到计算系统100的装置进行信息通信的电路、接口或代码。I/O管理器1300可以包括一个或多个标准化总线以及一个或多个总线控制器。因此,I/O管理器1300可以感知连接到总线1400的装置,列出连接到总线1400的装置,并对连接到总线1400的各个装置执行资源分配和资源释放(deallocation)。换句话说,I/O管理器1300可以操作以管理通过总线1400进行的通信。例如,I/O管理器1300可以是PCI或PCIe系统,并且包括PCIe根联合体(RC)、一个或多个PCIe交换机或者桥接器。例如,I/O管理器1300可以由虚拟化中介控制。
PCI可以定义用于将I/O装置连接到处理器1100的总线协议。PCIe可以具有由PCI标准定义的编程构思,并且将物理通信层定义为高速串行接口。
PCIe装置2000可以使用PCIe与主机1000通信。例如,PCIe装置2000可以被实施为诸如网络和存储装置的各种I/O装置类型。
根据实施例,PCIe装置2000可以被定义为端点或包括端点的装置。
端点可以指如下类型的功能:其可以是PCIe事务的请求方或完成方。端点可以被分类为传统端点、高速PCI(PCIe)端点或根联合体集成(RCiEP)端点。
传统端点可以是具有类型00h配置空间报头(header)的功能。传统端点可以作为完成方来支持配置请求。传统端点可以作为完成方来支持I/O请求。传统端点可以接受对80h和84h位置中的任一个或两者的I/O请求,而不管相应端点的I/O解码配置如何。传统端点可以支持I/O请求。传统端点不应发布锁定请求。传统端点可以实施扩展的配置空间能力。作为存储器事务的请求方进行操作的传统端点可能不需要生成4GB或更多的地址。当请求中断资源时,可能需要传统端点来支持消息信号中断(MSI)或MSI-X或两者。当实施MSI时,传统端点可以支持具有MSI功能结构的32位或64位消息地址版本。对于请求存储器资源的基地址寄存器,传统端点可以支持32位的地址指定。传统端点可以出现在源自于根联合体的多个层级结构域中的一个内。
PCIe端点可以是具有类型00h配置空间报头的功能。PCIe端点可以作为完成方来支持配置请求。PCIe端点不应依赖于通过基地址寄存器(BAR)声明的(claimed)对I/O资源的操作系统分配。PCIe端点可以不生成I/O请求。PCIe端点不可以作为完成方来支持锁定请求或作为请求方来生成锁定请求。可以编写PCIe兼容的软件驱动器和应用程序,以防止在访问PCIe端点时使用锁定语义(lock semantic)。作为存储器事务的请求方进行操作的PCIe端点可以生成超过4GB的地址。当请求中断资源时,可能需要PCIe端点来支持消息信号中断(MSI)、MSI-X或两者。当实施MSI时,PCIe端点可以支持具有MSI功能结构的64位消息地址版本。由基地址寄存器请求的最小地址范围可以是128个字节。PCIe端点可以出现在源自于根联合体的层级结构域中的一个中。
RCiEP可以在包含根端口的根联合体的内部逻辑上实施。RCiEP可以是具有类型00h配置空间报头的功能。RCiEP可以作为完成方来支持配置请求。RCiEP可以不请求通过基地址寄存器声明的I/O资源。RCiEP可以不生成I/O请求。RCiEP不可以作为完成方来支持锁定请求或作为请求方来生成锁定请求。可以编写PCIe兼容的软件驱动器和应用程序,以防止在访问RCiEP时使用锁定语义。作为存储器事务的请求方进行操作的RCiEP可以生成地址,该地址可以等于或大于可以由作为完成方的主机1000处理的地址。当请求中断资源时,可能需要RCiEP来支持MSI、MSI-X或两者。当实施MSI时,RCiEP可以支持具有MSI功能结构的32位或64位消息地址版本。针对请求存储器资源的基地址寄存器,RCiEP可以支持32位的地址指定。RCiEP可以在PCIe扩展能力中实施链路能力、链路状态、链路控制、链路能力2、链路状态2和链路控制2寄存器。RCiEP可以不实施活动状态电源管理。RCiEP可以不独立于整个根联合体进行热插拔。RCiEP可以不出现在由根联合体暴露的层级结构域中。RCiEP可以不出现在交换机中。
根据实施例,PCIe装置2000可以生成至少一个虚拟装置。例如,PCIe装置2000可以存储用于生成至少一个虚拟装置的程序代码。
根据实施例,PCIe装置2000可以响应于从主机1000接收到的虚拟化请求来生成物理功能(PF)装置或虚拟功能(VF)装置。例如,物理功能装置可以被设置成虚拟化中介被授予访问权限的虚拟装置。虚拟功能装置可以被设置成分配给主机1000的虚拟机的虚拟装置。
图2示出了根据本公开的实施例的计算系统的另一示例(计算系统200)。
根据实施例,图2示出了PCIe可用的通用平台配置的示例。
参照图2,计算系统200可以包括:处理器1100、存储器1200、多个系统映像210-1至210-n、虚拟化中介220、根联合体230、交换机240和多个PCIe装置2000-1至2000-3。
图2所示的处理器1100和存储器1200可以分别对应于图1所示的处理器1100和存储器1200。根据实施例,处理器1100、存储器1200、多个系统映像210-1至210-n、虚拟化中介220、根联合体230和交换机240可以被包括在图1的主机1000中。根据实施例,多个PCIe装置2000-1至2000-3可以对应于图1的PCIe装置2000。
系统映像210-1至210-n可以指在分配有PCIe功能的虚拟系统中运行的软件组件。系统映像210-1至210-n可以是用于运行应用或可靠服务的软件,例如,操作系统。例如,系统映像210-1至210-n中的每一个可以分别被配置为客户OS、共享或非共享I/O装置驱动器等。为了在不进行硬件修改的情况下增加有效的硬件资源利用率,可以在计算系统200中运行多个系统映像210-1至210-n。
根据实施例,PCIe功能可以指用于提供PCIe装置2000-1至2000-3中包括的物理资源的独立操作单元。在本公开中,PCIe功能和“功能”可以指相同的含义。
虚拟化中介220可以是支持一个或多个系统映像210-1至210-n的软件组件。根据实施例,虚拟化中介220可以被称为管理程序(hypervisor)或虚拟机监视器(VMM)。虚拟化中介220可以插设在诸如处理器1100和存储器1200的硬件与系统映像210-1至210-n之间。计算系统200中的I/O操作(入站或出站)可以被虚拟化中介220拦截和处理。虚拟化中介220可以利用其自身的虚拟系统对系统映像210-1至210-n呈现抽象的硬件资源(abstracthardware resource)。可用于系统映像210-1至210-n中的每一个的实际硬件资源可以根据工作负载或客户特定的策略而变化。
根联合体230可以表示将处理器1100/存储器1200子系统连接到I/O的I/O层级结构的根。根据实施例,根联合体230可以被实施为如图1所示的I/O管理器1300的一种配置。
计算系统200可以包括至少一个根联合体230。另外,每个根联合体230可以包括一个或多个根端口231-1和232-2。根端口231-1和232-2中的每一个可以示出单独的层级结构。根联合体230可以通过根端口231-1和232-2与交换机240或PCIe装置2000-1至2000-3通信。
通过根联合体230在多个层级结构域之间路由对等(peer-to-peer)事务的能力可以是可选的。层级结构域可以由单个端点组成,或由包含一个或多个交换机和端点的子层级结构组成。
当在层级结构域之间路由对等事务时,根联合体230可以将数据包拆分成更小的数据包。例如,根联合体230可以将具有256字节的有效载荷的单个数据包拆分成两个数据包,每个数据包具有128字节的有效载荷。然而,支持供应商定义消息的对等路由的根联合体230可以不将供应商定义消息拆分为更小的数据包,除了在128字节的边界处之外(即,除了最后的数据包之外的所有产生的数据包必须是128个字节的整数倍)。
根联合体230可以作为请求方来支持配置请求的生成。根联合体230可以作为请求方来支持I/O请求的生成。
根联合体230不可以作为完成方来支持锁定语义。根联合体230可以作为请求方来支持锁定请求的生成。
交换机240可以被定义为各个虚拟PCI到PCI桥的逻辑组件。交换机240可以与PCIe装置2000-2和2000-3通信。
交换机240可以作为具有两个或更多个逻辑PCI到PCI桥的配置软件来出现。
交换机240可以使用PCI桥机制来转发事务。交换机240可以在所有端口集之间转发所有类型的事务层数据包(TLP)。交换机240可以支持锁定请求。
交换机240可以不被允许将数据包拆分成更小的数据包。
当在相同的虚拟信道上发生竞争时,可以使用轮询或加权轮询来实施交换机240的入口端口之间的仲裁。
端点可以不作为表示交换机下游端口的虚拟PCI到PCI桥的对等方出现在交换机240的内部总线上的配置软件中。
图3示出了根据本公开的实施例的计算系统的另一示例(计算系统300)。
根据实施例,图3示出了单根输入/输出虚拟化(SR-IOV)配置平台的示例。
单根I/O虚拟化(SR-IOV)可以使系统映像210-1到210-n能够在虚拟环境中共享PCIe硬件资源。根据实施例,可以开发SR-IOV以提高PCIe装置2000-1至2000-3的I/O能力并且直接连接系统映像210-1至210-n与PCIe装置2000-1至2000-3。因此,在包含SR-IOV能力的计算系统300中,一个或多个PCIe装置2000-1至2000-3或者PCIe功能可以被分配给系统映像210-1至210-n中的一个。根据实施例,SR-IOV能力可以具有如下规范:单个PCIe装置(2000-1至2000-3)可以在单个根端口下作为系统映像(210-1至210-n)上的单独的PCI装置2000-1至2000-3而出现。根据实施例,支持SR-IOV能力的PCIe装置2000-1至2000-3可以在系统映像210-1至210-n上显示多个实例,即PCIe功能。另外,在应用了SR-IOV能力的计算系统300中,根联合体230可以在没有虚拟化中介220的情况下将系统映像210-1至210-n直接连接到PCIe功能。因此,通过使用SR-IOV能力,根联合体230可以不经由虚拟化中介220而将主机1000的系统映像210-1至210-n直接连接到PCIe功能。
参照图3,计算系统300可以包括:处理器1100、存储器1200、多个系统映像210-1至210-n、虚拟化中介220、根联合体230、交换机240、单根PCI管理器(SR-PCIM)310、转换代理(TA)320、地址转换和保护表(ATPT)330以及多个PCIe装置2000-1至2000-3。
相对于图2的计算系统200,图3所示的计算系统300可以进一步包括:单根PCI管理器310、转换代理320以及地址转换和保护表330。
如图3所示的多个PCI装置2000-1至2000-3可以对应于图2的多个PCIe装置2000-1至2000-3。另外,PCIe装置2000-1至2000-3中的每一个可以包括:地址转换缓存(ATC)341、物理功能(PF0)342和多个虚拟功能(VF0_1至VF0_N)343。为了便于说明,图3示出了一个物理功能。然而,根据实施例,可以存在多个物理功能。
单根PCI管理器310可以包括负责SR-IOV能力的配置、物理功能342和虚拟功能343的管理、相关联的错误事件的处理、以及诸如电源管理和热插拔服务的总体装置控制的软件。根据实施例,单根PCI管理器310可以在逻辑上位于虚拟化中介220中。
转换代理320可以是负责将PCIe事务内的地址转换成相关联的平台物理地址的硬件或硬件和软件的组合。转换代理320可以包括地址转换缓存以加速转换表访问。另外,转换代理320可以支持地址转换服务(ATS),地址转换服务(ATS)使PCIe功能能够在DMA访问相关联的存储器之前获得地址转换。在SR-IOV实施方案中,转换代理320的使用可以是可选的。
地址转换和保护表330可以包含由转换代理320访问以处理PCIe请求(DMA读取、DMA写入或中断请求)的地址转换的集合。在PCIe中,中断可以被视为存储器写入操作。通过PCIe事务内包含的请求方标识符和地址的组合,可以将中断路由到对相关联的I/O功能透明的任意目标(例如,处理器核)。DMA读取请求和写入请求可以通过路由ID和PCIe事务内包含的地址的组合进行转换。地址转换和保护表330的使用在SR-IOV实施方案中可以是可选的。
地址转换缓存341可以存在于平台内的两个位置。例如,地址转换缓存341可以集成在转换代理320之内、位于RC中或者位于PCIe装置2000-1至2000-3中。在PCIe装置2000-1至2000-3中,可以使用ATS技术来向地址转换缓存341输入数据。指示包含转换后的地址的PCIe事务可以在不损害与地址转换和保护表330相关的优势的情况下绕过平台的地址转换缓存341以提高性能。地址转换缓存341的使用在SR-IOV实施方案中可以是可选的。
物理功能342可以是支持SR-IOV能力并访问单根PCI管理器310、虚拟化中介220或系统映像210-1至210-n的PCIe功能。
虚拟功能343可以是可以直接访问系统映像210-1至210-n的轻量级PCIe功能。虚拟功能343可以作为物理功能342的虚拟实例来操作。因此,从系统映像210-1至210-n的视角来看,虚拟功能343可以作为物理功能342的实例出现。可以在系统映像210-1至210-n中使用与功能的主要数据移动相关联的资源。虚拟功能343可以由不同的系统映像210-1至210-n逐次地共享。例如,虚拟功能343可以被分配给一个系统映像(210-1到210-n),可以被重置,并且然后可以被分配给另一系统映像(210-1到210-n)。虚拟功能343可以选择性地从一个物理功能342迁移到另一物理功能。与物理功能342相关联的所有虚拟功能343可以具有与物理功能342相同的装置类型(例如,相同的网络装置类型或相同的存储装置类型)。
图4示出了根据本公开的实施例的多功能装置。
图4所示的PCIe装置400可以表示以下中的一个:图1所示的PCIe装置2000以及图2和图3所示的PCIe装置2000-1至2000-3。
参照图4,PCIe装置400可以包括多个功能Function 0至Function N。根据实施例,多个功能Function 0至Function N可以是物理功能。当PCIe装置400中包括的所有功能Function 0至Function N都是物理功能时,相应的PCIe装置400可以被定义为多功能装置。
根据实施例,多个功能Function 0至Function N可以共享通用PCIe链路。由所有功能Function 0至Function N共享的链路和PCIe功能可以通过第零功能Function 0来管理。
根据实施例,多个功能Function 0至Function N可以支持替换路由标识符(Alternative Routing Identifier,ARI)能力。另外,多个替换路由标识符(ARI)能力可以使用通过PCI枚举过程(PCI enumeration process)捕获的单个总线编号。
根据实施例,多个功能Function 0至Function N可以支持ATS能力。多个功能Function 0至Function N可以包括地址转换缓存,以用于管理ATS获得的转换后的地址。
根据实施例,多个功能Function 0至Function N中的每一个可以包括特有的物理资源,该特有的物理资源包括单独的配置空间、基地址寄存器(BAR)等。物理资源可以指PCIe装置400的物理资源中的一些。换句话说,多个功能Function 0至Function N可以将物理资源提供给所分配的系统映像。
多个功能Function 0至Function N可以分别被分配给系统映像。为了防止一个系统映像影响另一系统映像,所有PCIe配置操作都可以被虚拟化中介拦截和处理。
根据实施例,多个功能Function 0至Function N中的每一个的配置空间可以包括类型0配置空间报头。例如,类型0配置空间报头可以包括报头类型寄存器(header typeregister)和中断引脚寄存器(interrupt pin register)。
报头类型寄存器可以被包括在配置空间的类型0配置空间报头中。报头类型寄存器可以识别多个功能是否可以被包括在预定义的第二部分(从配置空间的10h字节开始)和PCIe装置400的布局中。例如,可以包括报头类型寄存器的多功能装置字段。当多功能装置字段被设置时,PCIe装置400可以包括多个功能Function 0至Function N。软件可以探测除第零功能Function 0之外的其他功能Function 1至Function N。
中断引脚寄存器可以是只读寄存器,其识别功能使用的传统中断消息。有效值可以是01h、02h、03h和04h,01h、02h、03h和04h分别映射到INTA、INTB、INTC和INTD的传统中断消息。值00h可以表示该功能不使用传统中断消息。值05h至FFh可以被保留。高速PCI可以针对单功能装置定义一个传统中断消息并针对多功能装置定义多达四个传统中断消息。针对单功能装置,只可以使用INTA。多功能装置的所有功能Function 0至Function N都可以使用INTx消息。当装置实施单个传统中断消息时,其应该是INTA。当实施两个传统中断消息时,其应该是INTA和INTB。针对多功能装置,所有功能Function 0至Function N可以使用相同的INTx,或者每个都有自身的INTx(最多四个),或其任意组合。
根据实施例,所有功能Function 0至Function N的配置空间可以被包括在PCIe能力结构中。例如,PCIe能力结构可以包括:PCIe能力寄存器、装置能力寄存器、装置控制寄存器、装置状态寄存器、链路能力寄存器、链路控制寄存器、链路状态寄存器、插槽能力寄存器、插槽控制寄存器、插槽状态寄存器、根控制寄存器、根能力寄存器、根状态寄存器、装置能力2寄存器、装置控制2寄存器、装置状态2寄存器、链路能力2寄存器、链路控制2寄存器、链路状态2寄存器、插槽能力2寄存器、插槽控制2寄存器、插槽状态2寄存器、根控制器2寄存器、根能力2寄存器、根状态2寄存器等。
PCIe能力寄存器可以识别PCIe装置功能类型和相关联的能力。根据实施例,PCIe能力寄存器可以是16位寄存器。PCIe能力寄存器的位3:0可以是能力版本字段。能力版本字段可以具有只读属性。更具体地,能力版本字段可以指示PCI-SIG定义的高速PCI功能结构版本编号。PCIe能力寄存器的位7:4可以是装置/端口类型字段。装置/端口类型字段可以具有只读属性。更具体地,装置/端口类型字段可以指示功能的特定类型。在装置/端口类型字段中,多功能装置的功能可以指不同的类型。PCIe能力寄存器的位8可以是插槽实施字段。插槽实施字段可以具有硬件初始化(HwInit)属性。当设置插槽实施字段时,其可以表示连接到该端口的链路被连接到插槽。PCIe能力寄存器的位13:9可以是中断消息编号字段(interrupt message number field)。中断消息编号字段可以具有只读属性。中断消息编号字段可以指示将哪个MSI/MSI-X向量用于与具有功能结构的状态位相关联地生成的中断消息。针对MSI,中断消息数量字段的值可以指示基消息数据与所生成的中断消息之间的偏移量。针对MSI-X,中断消息编号字段的值可以指示用于生成中断消息的MSI-X表条目。当实施MSI和MSI-X时,虽然软件一次只能启用一种机制,但可以允许MSI和MSI-X使用不同的向量。例如,当启用MSI-X时,中断消息编号字段的值可以指示MSI-X向量。当启用MSI或者MSI和MSI-X都没有被启用时,中断消息编号字段的值可以指示MSI向量。当同时启用MSI和MSI-X时,中断消息编号字段中的值可以不定义。PCIe能力寄存器的位14可以具有只读属性,并且可以不被定义。
装置能力寄存器可以识别PCIe装置功能特定的能力。根据实施例,装置能力寄存器可以是32位寄存器。装置能力寄存器的位2:0可以是最大有效载荷大小支持(Max_Payload_Size Supported)字段。最大有效载荷大小支持字段可以具有只读属性。最大有效载荷大小支持字段可以指示支持TLP的最大有效载荷大小。对于该字段,多功能装置的功能Function 0至Function N可以具有不同的值。装置能力寄存器的位4:3可以是不明功能支持字段(phantom function supported field)。不明功能支持字段可以具有只读属性。不明功能支持字段可以指示支持对未声明的功能编号的使用,以通过将未声明的功能编号与标签标识符逻辑地相组合来扩展所允许的未完成事务的数量。
装置控制寄存器可以控制PCIe装置特定的参数。根据实施例,装置控制寄存器可以是16位寄存器。装置控制寄存器的位0可以是可校正错误报告启用字段。可校正错误报告启用字段可以结合其他位来控制发送ERR_COR消息。针对多功能装置,可校正错误报告启用字段可以控制每个功能(Function 0至Function N)的错误报告。可校正错误报告启用字段可以具有读取写入(RW)属性。装置控制寄存器的位1可以是非严重(non-fatal)可校正错误报告启用字段。非严重可校正错误报告启用字段可以结合其他位来控制发送ERR_NONFATAL消息。针对多功能装置,从每个功能(Function 0至Function N)的视角来看,非严重错误报告启用字段可以控制每个功能(Function 0至Function N)的错误报告。非严重错误报告启用字段可以具有读取写入属性。装置控制寄存器的位2可以是严重可校正错误报告启用字段。严重可校正错误报告启用字段可以结合其他位来控制发送ERR_FATAL消息。针对多功能装置,从每个功能(Function 0至Function N)的视角来看,严重可校正错误报告启用字段可以控制每个功能(Function 0至Function N)的错误报告。严重可校正错误报告启用字段可以具有读取写入属性。装置控制寄存器的位3可以是不被支持请求报告启用字段(unsupported request reporting enable field)。不被支持请求报告启用字段可以结合其他位通过发送错误消息来控制不被支持请求错误的信号发送(signaling)。针对多功能装置,从每个功能(Function 0至Function N)的视角来看,不被支持请求报告启用字段可以控制每个功能(Function 0至Function N)的错误报告。不被支持请求报告启用字段可以具有读取写入属性。装置控制寄存器的位7:5可以是最大有效载荷大小(Max_Payload_Size)字段。最大有效载荷大小字段可以设置功能的最大TLP有效载荷大小。作为接收器,功能不可以生成超过设置值的TLP。作为发送器,允许值可以由功能能力寄存器的最大有效载荷大小支持字段来指示。多功能装置的所有功能Function 0至Function N可以在最大有效载荷大小字段中具有不同的值。针对替换路由标识符(ARI)装置,最大有效载荷大小字段可以仅由第零功能Function 0中的设置来确定。其他功能中的设置可以总是返回为每个功能软件编程的任何值,否则可以被组件忽略。最大有效载荷大小字段可以具有读取写入属性。
装置状态寄存器可以提供关于PCIe装置(功能)特定的参数的信息。根据实施例,装置状态寄存器可以是16位寄存器。装置状态寄存器的位0可以是可校正错误检测字段。可校正错误检测字段可以指示检测到可校正的错误。不管装置控制寄存器中是否启用了错误报告,都可以在可校正错误检测字段中记录可校正的错误。针对多功能装置,每个功能(Function 0至Function N)可以指示由每个功能(Function 0至Function N)感知的错误状态。可校正错误检测字段可以具有写入1至清除(Write-1-to-Clear,RW1C)状态属性。装置状态寄存器的位1可以是非严重可校正错误检测字段。非严重可校正错误检测字段可以指示检测到非严重的错误。不管在装置控制寄存器中是否启用了错误报告,都可以在非严重错误检测字段中记录非严重的错误。针对多功能装置,每个功能(Function 0至FunctionN)可以指示由每个功能(Function 0至Function N)感知的错误状态。非严重错误检测字段可以具有RW1C属性。装置状态寄存器的位2可以是严重错误检测字段。严重错误检测字段可以指示检测到严重错误的状态。不管装置控制寄存器中是否启用了错误报告,都可以在严重错误检测字段中记录严重错误。针对多功能装置,每个功能(Function 0至Function N)可以指示由每个功能(Function 0至Function N)感知的错误状态。严重错误检测字段可以具有RW1C属性。装置状态寄存器的位3可以是不被支持请求字段。不被支持请求检测字段可以指示功能已经接收到不被支持的请求。不管装置控制寄存器中是否启了用错误报告,都可以在不被支持请求检测字段中记录错误。针对多功能装置,每个功能(Function 0至Function N)可以指示由每个功能(Function 0至Function N)感知的错误状态。不被支持请求检测字段可以具有RW1C属性。装置状态寄存器的位6是紧急省电检测字段,当功能Function 0至Function N进入紧急省电状态时,可以设置该紧急省电检测字段。每当存在进入紧急省电状态的条件时,功能Function 0至Function N就可以保持紧急省电状态。联接到上游端口的多功能装置可以在支持紧急省电状态的所有功能Function 0至FunctionN中设置紧急省电检测字段。紧急省电检测字段可以具有RW1C属性。
链路能力寄存器可以识别PCIe链路特定的能力。对于多功能装置,所有功能Function 0至Function N的链路能力寄存器的字段值可以相同。
根据实施例,多个功能Function 0至Function N中的每一个的配置空间可以包括:消息信号中断(MSI)能力结构、辅助高速PCI扩展能力、数据链路特征扩展能力和ACS扩展能力。所有生成中断的功能Function 0至Function N都可以实施MSI或MSI-X。
另外,除了上述寄存器之外,多个功能Function 0至Function N中的每一个的配置空间还可以包括与多功能装置相关联的各个寄存器。
根据实施例,多个功能Function 0至Function N可以执行错误处理操作。例如,多个功能Function 0至Function N可以使用高级错误报告(AER)来执行错误处理操作。例如,当检测到错误时,多个功能Function 0至Function N可以通过如下操作来执行错误处理操作:通过完成状态字段来指示错误状态,向根联合体发送错误消息或者进行错误转发。
根据实施例,多个功能Function 0至Function N可以执行功能级重置(FLR)操作。例如,多个功能Function 0至Function N可以在主机的请求下执行功能级重置(FLR)操作。
功能级重置机制可以使软件能够以功能级颗粒度来使端点硬件静止(quiesce)和重置端点硬件。
功能级重置可以应用于功能Function 0至Function N中的每一个。只有目标功能(Function 0至Function N)可以受到功能级重置操作的影响。链路状态可以不受功能级重置的影响。
功能级重置可以修改功能Function 0至Function N的状态。
例如,除了粘性类型寄存器(ROS、RWS、RW1CS)、HwInit类型定义寄存器以及其它此类字段或寄存器之外,功能寄存器和功能特定的状态机可以被重置为功能寄存器和功能特定的状态机的初始值。
另外,功能级重置可以修改诸如以下各项的功能状态:装置能力寄存器的捕获的插槽电力限制值、装置能力寄存器的捕获的插槽电力限制尺度、装置控制寄存器的Max_Payload_Size、链路控制寄存器的活动状态电源管理(ASPM)控制、链路控制寄存器的读取完成边界(Read Completion Boundary,RCB)、链路控制寄存器的通用时钟配置、链路控制寄存器的扩展同步、链路控制寄存器的启用时钟电源管理、链路控制寄存器的硬件自主宽度禁用、链路控制2寄存器的硬件自主速度禁用、链路状态2寄存器的链路均衡8.0GT/s请求、16.0GT/s状态寄存器的链路均衡请求16.0GT/s、辅助高速PCI扩展能力结构的通道均衡控制寄存器、物理层16.0GT/s扩展能力结构的16.0GT/s通道均衡控制寄存器、所有寄存器的虚拟信道能力结构、多功能虚拟信道能力结构的所有寄存器、数据链路特征扩展能力结构的所有寄存器、物理层16.0GT/s扩展能力结构的所有寄存器、以及接收器扩展能力结构的通道裕度的所有寄存器。
可以清除使功能Function 0至Function N对高速PCI发起请求的控制,包括总线主控启用、MSI中断启用等,从而有效地使功能Function0至Function N在链路上变得静止。
与链路功能相关联的端口状态机(包括物理和数据链路层中的端口状态机)可以不被FLR重置,并且VC0可以在FLR之后保持初始化。由功能Function 0至Function N生效(assert)的任意未完成的INTx中断可以通过在FLR开始之前发送相应的Deassert_INTx消息而被失效(deassert)。
当将FLR初始化到PCIe装置400的功能Function 0至Function N时,如果另一功能继续使匹配的INTx生效,则将不会传输Deassert_INTx消息。
在通过将1b写入到初始化功能级重置位来将FLR初始化之后,功能Function 0至Function N必须在100ms内完成FLR。如果软件在事务暂停位为1b时将FLR初始化,则软件不可以将功能Function 0至Function N初始化,直到允许充足的时间来实现任意相关联的完成,或者达到合理的确定性(即,任意剩余的完成将不会实现)。因此,计算系统可以允许与完成超时的预FLR值所设置的一样多的时间。如果在发布FLR时功能Function 0至FunctionN上的完成超时被禁用,则延迟可以取决于系统,但是可以为100ms或更长。当实施功能就绪状态时,计算系统可以在接收到指示功能Function 0至Function N完全准备好进行配置的功能级重置消息之后立即向功能Function 0至Function N发布配置请求。
在收到FLR时,功能Function 0至Function N可以清除所有事务状态(包括事务暂停),或者可以将完成超时设置成其默认值,以使所有暂停事务在FLR运行期间超时。在FLR完成时,可以清除事务暂停位。
因为FLR修改功能状态,所以FLR的行为可以使用如下的一组标准来规范:当应用于功能Function 0至Function N时,示出功能Function0至Function N具有修改后的状态。必须使用功能特定的知识来应用以下标准,以评估功能Function 0至Function N响应于FLR的行为。
-功能(Function 0至Function N)在由相应功能(Function 0至Function N)控制的任意外部接口上可以不显现通过活动主机初始化的适配器。终止外部接口上的活动所需的步骤可以例外。例如,对于需要由主机系统进行适配器初始化或与活动主机系统进行交互的查询,网络适配器可以不对其响应,但是网络适配器可以被允许执行被设计成在没有主机初始化或交互的情况下执行的动作。当网络适配器包括在相同的外部网络接口上运行的多个功能Function 0至Function N时,该规则可以仅影响与由FLR重置的特定功能相关联的那些方面。
-功能Function 0至Function N可以不在其自身内保持软件可读取状态,该软件可读取状态可包括与功能Function 0至Function N的任意先前使用相关联的机密信息。分配给功能Function 0至Function N的主主机存储器(Main host memory)可以不被功能Function 0至Function N修改。例如,具有可由主机软件直接或间接读取的内部存储器的功能(Function 0至Function N)可以清除或随机化该存储器。
-功能(Function 0至Function N)可以返回状态,使得功能(Function 0至Function N)的高速PCI接口的正常配置可以使其可由通常与功能Function 0至FunctionN相关联的驱动器使用。
当将FLR初始化时,目标功能Function 0至Function N必须按如下行动:
-功能Function 0至Function N可以返回针对使FLR操作初始化的配置写入的完成,并且然后可以将FLR初始化。
-当正在进行FLR时,在请求到达的情况下,可以允许将该请求静默地丢弃而不将其记录或信号通知为错误。另外,如果完成到达,则可以允许将该完成作为意外完成来处理或静默地丢弃而不将其记录或用信号通知为错误。
当需要功能(Function 0至Function N)在时间限制内完成FLR操作时,后续的功能特定的初始化序列可能需要额外的时间。当需要额外的时间时,当在该时间限制之后接收到配置请求时,功能(Function0至Function N)可以返回配置请求重试状态(CRS)完成状态。在功能(Function 0至Function N)以除了CRS之外的完成状态来响应配置请求之后,可以不允许返回CRS,直到其被再次重置。
图5示出了根据本公开的实施例的具有单根输入/输出虚拟化(SR-IOV)能力的PCIe装置500的示例。
图5所示的PCIe装置500可以表示以下中的一个:图1所示的PCIe装置2000以及图2和图3所示的PCIe装置2000-1至2000-3。
例如,图5可以表示应用SR-IOV能力的PCIe装置500。
参照图5,PCIe装置500可以包括物理功能PF0和与物理功能PF0相关联的多个虚拟功能VF0_1至VF0_N。虚拟功能VF0_1可以指与物理功能PF0相关联的第一虚拟功能。通过相同的方式,虚拟功能VF0_N可以指与物理功能PF0相关联的第N虚拟功能。根据实施例,上面参照图4描述的配置空间、寄存器设置处理、错误处理操作和功能级重置操作可以应用于物理功能PF0。
物理功能PF0可以支持SR-IOV能力。根据实施例,在重置操作之后,物理功能PF0可以禁用SR-IOV能力。为了发现物理功能PF0和多个虚拟功能VF0_1至VF0_N所支持的页面大小,可以读取支持页面大小配置字段。
多个虚拟功能VF0_1至VF0_N可以与物理功能PF0共享多个公共配置空间字段。共享可以减少实施多个虚拟功能VF0_1至VF0_N的硬件资源需求。例如,多个虚拟功能VF0_1至VF0_N可以使用与物理功能PF0相同的配置机制和报头类型。另外,多个虚拟功能VF0_1至VF0_N可以共享VF BAR集。另外,多个虚拟功能VF0_1至VF0_N可以共享控制对VF存储空间的访问的VF存储空间启用(MSE)位。换句话说,当VF MSE位被清除时,可以禁用分配给所有虚拟功能VF0_1至VF0_N的存储映射空间。
SR-IOV能力中包括的InitialVFs(初始VF)和TotalVFs(总VF)字段可以用于发现可以与物理功能PF0相关联的虚拟功能的最大数量。例如,当PCIe装置500不支持VF迁移时,TotalVFs和InitialVFs可以包含相同的值。另一方面,当PCIe装置500支持VF迁移时,如果读取TotalVFs,则物理功能PF0可以返回可以分配给物理功能PF0的虚拟功能的数量。另外,当读取InitialVFs时,物理功能PF0可以返回分配给物理功能PF0的虚拟功能的初始数量。
物理功能PF0和多个虚拟功能VF0_1至VF0_N可以被分配唯一的路由ID。可以使用物理功能PF0的路由ID和物理功能PF0的SR-IOV能力中包括的字段来确定每个虚拟功能(VF0_1至VF0_N)的路由ID。
所有PCIe和SR-IOV配置访问都可以通过诸如虚拟化中介或单根PCI管理器的受信任的软件组件来执行。
根据实施例,物理功能PF0和多个虚拟功能VF0_1至VF0_N可以包含包括配置空间的物理资源。每个虚拟功能(VF0_1至VF0_N)可以包含传递功能特定的服务所需的非共享物理资源集合,例如,诸如工作队列、数据缓冲器等资源。这些资源可以由系统映像直接访问而无需虚拟化中介或单根PCI管理器的干预。
一个或多个虚拟功能VF0_1到VF0_N可以被分配给每个系统映像。物理功能PF0和多个虚拟功能VF0_1至VF0_N可以包括ATC。
根据实施例,物理功能PF0可以用于管理装置特定的功能,例如,对每个虚拟功能(VF0_1至VF0_N)的内部资源分配以及对诸如PCIe链路或功能特定的链路(例如,网络或存储链路)的共享资源的VF仲裁等。
根据实施例,物理功能PF0的配置空间可以包括SR-IOV扩展能力。例如,SR-IOV扩展能力可以包括:SR-IOV扩展能力报头寄存器、SR-IOV能力寄存器、SR-IOV控制寄存器、SR-IOV状态寄存器、InitialVFs寄存器、TotalVFs寄存器、NumVFs寄存器、功能依赖链路寄存器、第一VF偏移寄存器、VF步长寄存器、VF装置ID寄存器、支持页面大小寄存器、系统页面大小寄存器、VF BAR0、VF BAR1、……、VF BAR5寄存器以及VF迁移状态阵列偏移寄存器。
SR-IVO控制寄存器可以包括虚拟功能(VF)启用字段。
虚拟功能启用可以管理多个虚拟功能VF0_1至VF0_N针对相关联的物理功能PF0的分配。当设置虚拟功能启用时,可以在高速PCI架构中访问与物理功能PF0相关联的多个虚拟功能VF0_1至VF0_N。当设置虚拟功能启用时,虚拟功能VF0_1至VF0_N可以遵循高速PCI端点功能的规则来响应和发布高速PCI事务。
当清除虚拟功能启用时,多个虚拟功能VF0_1至VF0_N可以被禁用并且在高速PCI架构中可能不可见。对这些虚拟功能VF0_1至VF0_N的请求可以收到不被支持请求(UR)并且可以不发布高速PCI事务。
为了让组件执行内部初始化,在将虚拟功能启用位从0改变为1之后,可以不允许系统向由相应的启用位启用的虚拟功能VF0_1至VF0_N发布请求,直到满足以下中的一项:至少已经经过100毫秒;已经从物理功能PF0接收到带有虚拟功能启用的原因代码的FRS消息;以及至少已经经过VF启用时间。VF启用时间可以是与虚拟功能VF0_1至VF0_N相关联的就绪时间报告能力中的重置时间值,或者是由系统软件/固件确定的值。
在根联合体和/或系统软件可以确定无法返回针对有效配置请求的成功完成状态的虚拟功能(VF0_1至VF0_N)损坏之前,根联合体和/或系统软件可以在设置VF启用位之后允许至少1.0秒。在设置VF启用位之后,当由相应的VF启用位启用的虚拟功能VF0_1至VF0_N尚未准备提供针对有效配置请求的成功完成状态时,可以允许虚拟功能VF0_1至VF0_N在最多1.0秒的限制内将CRS状态返回到配置请求。在物理功能PF0发送具有VF启用的原因代码的FRS消息之后,不允许与相应的物理功能PF0相关联的虚拟功能VF0_1至VF0_N在没有介入VF禁用或其他有效重置条件的情况下返回CRS。在向任意请求返回成功完成之后,可以不允许虚拟功能VF0_1至VF0_N在没有介入VF禁用或其他有效重置条件的情况下返回CRS。
因为虚拟功能VF0_1至VF0_N没有MSE位(虚拟功能VF0_1至VF0_N中的MSE由物理功能PF0中的SR-IOV能力中的VF MSE位控制),所以软件可以在虚拟功能(VF0_1至VF0_N)准备处理MSE位之前发布存储请求。因此,在满足以下条件中的至少一项之前,不能向虚拟功能VF0_1至VF0_N发布存储请求:
-虚拟功能(VF0_1至VF0_N)已经成功响应了配置请求(不返回CRS)。
-在向VF发布FLR之后,满足以下中的至少一项:(1)自发布FLR以来至少已经经过1.0秒;(2)虚拟功能VF0_1至VF0_N支持功能就绪状态,并且在发布FLR之后,已经接收到来自虚拟功能VF0_1至VF0_N的具有FLR完成的原因代码的FRS消息;或者(3)自发布FLR以来至少已经经过FLR时间。FLR时间可以是与虚拟功能VF0_1至VF0_N相关联的就绪时间报告能力中的FLR时间值,或者是由系统软件/固件确定的值。
-在物理功能PF0中设置VF启用之后,以下中的至少一项为真:(1)自设置VF启用以来至少已经经过1.0秒;(2)物理功能PF0支持功能就绪状态,并且在设置VF启用之后,已经接收到来自物理功能PF0的具有虚拟功能启用的原因代码的FRS消息;或者(3)在设置虚拟功能启用之后,已经经过最小虚拟功能启用时间。虚拟功能启用时间可以是与虚拟功能VF0_1至VF0_N相关联的就绪时间报告能力中的重置时间值,或者是由系统软件/固件确定的值。
在向虚拟功能VF0_1至VF0_N发布FLR之后或者在相关联的物理功能PF0中在SR-IOV能力中设置VF启用之后,可以允许虚拟功能VF0_1至VF0_N静默地丢弃存储请求,直到虚拟功能VF0_1至VF0_N对任意请求成功地进行响应(在不返回CRS的情况下)为止。
清除VF启用可以有效地破坏虚拟功能VF0_1至VF0_N。设置VF启用可以有效地创建虚拟功能VF0_1至VF0_N。在VF启用先前被清除之后设置VF启用位可以产生一组新的虚拟功能VF0_1至VF0_N。当物理功能PF0处于D0功率状态时,该新的虚拟功能VF0_1至VF0_N可以处于D0未初始化(D0uninitialized)状态。如果物理功能PF0处于低功率状态,则行为可以不被定义。
当清除VF启用时,支持FRS的物理功能PF0可以发送具有VF禁用的FRS原因的FRS消息,以指示该操作何时完成。当存在由物理功能PF0或与物理功能PF0相关联的任意虚拟功能VF0_1至VF0_N发布的未完成的非递送请求(non-posted request)时,可以不允许物理功能PF0发送该消息。FRS消息只可以在这些请求完成(或超时)之后发送。
当软件清除VF启用时,SR-IOV扩展能力或VF迁移状态阵列中的字段都不可以访问,直到:
-在清除VF启用之后至少经过1.0秒,或者
-物理功能PF0支持FRS,并且在清除VF启用之后,已经从物理功能PF0接收到具有VF禁用的原因代码的FRS消息。
InitialVFs寄存器可以向SR-PCIM指示与物理功能PF0初始相关联的虚拟功能VF0_1至VF0_N的数量。
InitialVFs寄存器可以指示可以与物理功能PF0相关联的虚拟功能VF0_1至VF0_N的最大数量。
NumVFs寄存器可以控制可见的虚拟功能VF0_1至VF0_N的数量。
虚拟功能基地址寄存器可以定义虚拟功能VF0_1至VF0_N的基地址寄存器(BAR)。当虚拟功能基地址寄存器写入实际地址值,并且设置VF启用和VF MSE时,BAR可以映射NumVFs个BAR。
根据实施例,物理功能PF0和虚拟功能VF0_1至VF0_N的配置空间可以包括类型0配置空间报头、PCIe能力寄存器、PCI标准能力寄存器、PCIe扩展能力寄存器等。
根据实施例,虚拟功能VF0_1至VF0_N的配置空间中包括的寄存器字段值可以从属于或独立于物理功能PF0的配置空间中包括的寄存器字段值。例如,当虚拟功能VF0_1至VF0_N的配置空间中包括的寄存器字段值从属于物理功能PF0的配置空间中包括的寄存器字段值时,虚拟功能VF0_1至VF0_N的配置空间中包括的寄存器字段值可以具有值0(零)。虚拟功能VF0_1至VF0_N可以根据相关联的物理功能PF0的寄存器字段值来执行配置操作。
根据实施例,多个虚拟功能VF0_1至VF0_N可以执行错误处理操作。例如,当物理功能PF0使用高级错误报告来处理错误时,虚拟功能VF0_1至VF0_N也可以使用高级错误报告来处理错误。
根据实施例,多个虚拟功能VF0_1至VF0_N可以执行重置操作。
例如,虚拟功能VF0_1至VF0_N可以在以下情况中的一个发生时完成内部初始化:
-虚拟功能(VF0_1至VF0_N)已经成功响应了配置请求(未返回CRS)。
-在向虚拟功能VF0_1至VF0_N发布功能级重置之后,以下中的至少一项为真:(1)至少已经经过1.0秒;(2)已经接收到来自虚拟功能VF0_1至VF0_N的具有FLR完成的原因代码的FRS消息;或者(3)已经经过最小FLR时间。功能级重置时间可以是与虚拟功能VF0_1至VF0_N相关联的就绪时间报告能力中的功能级重置时间值,或者是由系统软件/固件确定的值。
在物理功能PF0中设置VF启用之后,以下中的至少一项可以为真:(1)自设置VF启用以来至少经过1.0秒;或者(2)在设置VF启用之后,已经接收到来自物理功能PF0的具有VF启用的原因代码的FRS消息。
图6示出了根据本公开实施例的使用SR-IOV的PCIe装置的另一示例(PCIe装置600)。
图6所示的PCIe装置600可以对应于图1所示的PCIe装置2000以及图2和图3所示的PCIe装置2000-1至2000-3中的一个。
例如,图6可以表示应用SR-IOV能力的PCIe装置600。
PCIe装置600提供多个物理功能PF0至PFM以及与多个物理功能PF0至PFM相关联的多个虚拟功能VF0_1至VFM_K。根据实施例,上面参照图4描述的配置空间、寄存器设置过程、错误处理操作和功能级重置操作可以应用于多个物理功能PF0至PFM。另外,参照图5的物理功能PF0描述的配置空间可以应用于多个物理功能PF0至PFM。另外,关于图5的虚拟功能VF0_1至VF0_N描述的配置空间、错误处理操作和重置操作可以应用于多个虚拟功能VF0_1至VFM_K。
多个物理功能PF0至PFM可以包括SR-IOV能力,并且零(0)个或更多个虚拟功能可以应用于多个物理功能PF0至PFM。分配给每个物理功能的虚拟功能的数量可以不同。
当支持ARI能力时,可以将多个物理功能PF0至PFM和多个虚拟功能VF0_1至VFM_K分配给功能组。
根据实施例,多个物理功能PF0至PFM可以具有相同装置类型。例如,多个物理功能PF0至PFM可以提供相同的网络装置功能或相同的存储装置功能。
根据实施例,多个物理功能PF0至PFM可以指示不同装置类型。例如,多个物理功能PF0至PFM中的一个可以表示网络装置,并且物理功能PF0至PFM中的另一个可以表示加密装置。
在装置类型(例如,针对每个网络装置类型的虚拟功能,每个系统映像还需要加密装置类型的虚拟功能)之间存在用途模型相关性的情况下,SR-IOV能力可以提供指示这些相关性的过程。物理功能的数量和虚拟功能的数量可以基于用途模型要求而变化。
根据实施例,通过使用替换路由标识符(ARI)能力,PCIe装置600可以支持多达256个物理功能。功能编号分配可以是实施方案特定的。物理功能PF0至PFM可以仅与PCIe装置600的捕获总线编号相关联。可以使用SR-IOV能力的PCIe装置600可以使用两个或更多个总线编号。物理功能PF0至PFM可以与PCIe装置600的总线数量范围内的任意总线编号(捕获的总线编号加上由软件配置的任意附加总线编号)相关联。多个总线编号的使用可以使PCIe装置600能够支持数量非常大的虚拟功能(多达路由ID空间的大小减去用于识别介于中间的总线的位)。当软件没有配置足够的附加总线数量时,针对附加总线编号实施的虚拟功能可以不可见。
近来,针对直接连接主机与PCIe装置以及在系统映像与PCIe装置的功能之间进行1:1映射的多功能产品的需求越来越大。多功能产品种类的示例可以包括:多功能装置,包括多个物理功能;以及具有SR-IOV能力的装置。多功能装置可能不发生性能劣化,但可能具有较弱的安全性。另外,具有SR-IOV能力的装置可能具有较强的安全性,但会发生性能劣化。因此,每个用户可能需要不同的PCIe装置类型。用户可以请求一个PCIe装置使用多功能和虚拟功能两者。因此,在本公开的实施例中,可以示出包括以各个功能类型操作的通用功能的PCIe装置。
图7示出了根据本公开的实施例的PCIe装置700。
参照图7,PCIe装置700可以包括功能类型控制器710、默认物理功能720和多个通用功能730-1至730-n。PCIe装置700可以对应于如图1所示的PCIe装置2000或者对应于如图2和图3所示的PCIe装置2000-1至2000-3中的一个。
功能类型控制器710可以根据功能类型设置信息SET_INFO来确定多个通用功能730-1至730-n的功能类型。
根据实施例,功能类型控制器710可以针对通用功能730-1至730-n中的每一个的功能类型来确定多个功能类型中的一个。多个功能类型可以包括物理功能类型、虚拟功能类型和禁用操作的禁用功能类型。功能类型控制器710可以将通用功能730-1至730-n中的每一个的相应功能类型确定为物理功能类型、虚拟功能类型和禁用功能类型中的一个。
功能类型设置信息SET_INFO可以指示待设置到通用功能730-1至730-n中的每一个的相应功能类型。例如,功能类型设置信息SET_INFO可以包括以下中的至少一项:多个通用功能730-1至730-n之中的待配置为物理功能类型的通用功能的数量,多个通用功能730-1至730-n之中的待配置为虚拟功能类型的通用功能的数量,多个通用功能730-1至730-n之中的待配置为禁用功能类型的禁用功能的数量,以及指示多个通用功能730-1至730-n中的每一个与相应功能类型之间的映射关系的功能类型映射信息。功能类型设置信息SET_INFO可以从主机1000提供,或者可以在PCIe装置700的制造过程中预先存储在PCIe装置700中包括的固件中。
在实施例中,功能类型控制器710可以从主机1000接收功能类型设置信息SET_INFO。例如,主机1000可以通过使用诸如以下的技术向功能类型控制器710提供功能类型设置信息SET_INFO:供应商特定能力消息、供应商定义的能力、由用户定义的新PCIe能力、系统管理器总线(SM总线)上的管理组件传输协议(MCTP)、PCIe上的MCTP等。
根据实施例,功能类型控制器710可以基于功能类型设置信息SET_INFO来生成功能类型控制信号FT_CSIG。可以提供功能类型控制信号FT_CSIG以确定通用功能730-1至730-n的功能类型并使通用功能730-1至730-n根据所确定的功能类型进行操作。功能类型控制器710可以向多个通用功能730-1至730-n提供功能类型控制信号FT_CSIG,以确定多个通用功能730-1至730-n的功能类型。
根据实施例,在确定多个通用功能730-1至730-n中的每一个的功能类型之后,功能类型控制器710可以向主机1000提供多个通用功能730-1至730-n的所确定的功能类型信息CF_INFO。
根据实施例,功能类型控制器710可以基于功能类型设置信息SET_INFO来将被配置为物理功能类型的通用功能的功能类型改变为虚拟功能类型。另外,功能类型控制器710可以基于功能类型设置信息SET_INFO来将被配置为虚拟功能类型的通用功能的功能类型改变为物理功能类型。
例如,在功能类型控制器710在下一链接操作中重置多个通用功能730-1至730-n之后,然后,基于功能类型设置信息SET_INFO,功能类型控制器710可以将在重置时被配置为物理功能类型的通用功能的功能类型改变为虚拟功能类型,或者可以将在重置时被配置为虚拟功能类型的通用功能的功能类型改变为物理功能类型。
默认物理功能720可以是PCIe功能。默认物理功能720可以具有与上面参照图4描述的第零功能Function 0或者上面参照图5和图6描述的物理功能PF0相同的配置。
多个通用功能730-1至730-n可以是PCIe功能。
根据实施例,多个通用功能730-1至730-n可以是用于提供PCIe装置700中包括的物理资源的独立操作单元。多个通用功能730-1至730-n中的每一个可以被分配PCIe装置700中包括的物理资源中的一些。可以将多个通用功能730-1至730-n映射到主机1000的系统映像并且将所分配的物理资源提供给系统映像。
根据实施例,多个通用功能730-1至730-n可以根据所确定的功能类型来执行与PCIe接口相关联的操作。与PCIe接口相关联的操作可以包括:接收来自主机1000的命令并向主机1000提供对该命令的响应的数据处理操作、检测错误并报告检测到的错误的错误处理操作、管理功能的电力的电力管理操作以及重置操作。
因此,根据本公开的实施例,通过提供包括根据各自的所确定的功能类型进行操作的多个通用功能的PCIe装置,可以减少PCIe装置门计数(gate count),以最小化功率消耗和装置大小。
图8示出了根据本公开的实施例的通用功能800。
如图8所示的通用功能800可以对应于如图7所示的多个通用功能730-1至730-n中的一个。因此,参照图8的描述可以应用于如图7所示的多个通用功能730-1至730-n。另外,图8所示的功能类型控制器710可以指示图7所示的功能类型控制器710。
参照图8,通用功能800可以包括配置空间810、操作控制器820和多工器(MUX)830。
配置空间810可以包括用于配置通用功能800以执行与PCIe接口相关联的操作的寄存器。例如,通用功能800可以基于配置空间810中的信息来执行操作。更具体地,通用功能800可以基于配置空间810中包括的寄存器的字段值来执行操作。
根据实施例,配置空间810可以包括关于通用功能800中可用的能力的信息。
根据实施例,功能类型控制器710可以根据功能类型设置信息SET_INFO,通过改变配置空间810中包括的寄存器的值来确定多个通用功能800的功能类型。
例如,功能类型控制器710可以向配置空间810提供功能类型控制信号FT_CSIG,并且根据所确定的功能类型来改变配置空间810中包括的寄存器的值。配置空间810可以启用与所确定的功能类型相关联的寄存器并且禁用与所确定的功能类型不相关联的寄存器。功能类型控制器710可以对配置空间810中包括的寄存器之中的禁用寄存器执行时钟门控。
操作控制器820可以控制多个通用功能800根据所确定的功能类型来执行与PCIe接口相关联的操作。操作控制器820可以基于配置空间810中的启用寄存器的字段值来控制通用功能800的操作。
MUX 830可以基于所确定的功能类型来向操作控制器820提供外部接收的多个信号中的一个。例如,功能类型控制器710可以向MUX830提供功能类型控制信号FT_CSIG。MUX830可以基于由功能类型控制信号FT_CSIG指示的所确定的功能类型进行操作。
根据实施例,MUX 830可以基于配置空间810中包括的寄存器的字段值来向操作控制器820提供外部接收的多个信号中的一个。MUX830可以从主机1000接收主机信号H_SIG并且从物理功能接收物理功能信号PF_SIG。主机信号H_SIG和物理功能信号PF_SIG可以对应于与PCIe接口相关联的操作。物理功能信号PF_SIG可以由默认物理功能720或具有物理功能类型的另一通用功能提供。
例如,当通用功能800的功能类型被确定为物理功能类型时,通用功能800可以根据配置空间810中包括的信息来以从属于默认物理功能720的方式运行或者以独立方式运行。MUX 830可以从默认物理功能720接收与从属于默认物理功能720的操作相对应的物理功能信号PF_SIG,并且可以将物理功能信号PF_SIG提供给操作控制器820。另外,MUX 830可以从主机1000接收与独立操作相对应的主机信号H_SIG并将主机信号H_SIG提供给操作控制器820。
例如,当通用功能800的功能类型被确定为虚拟功能类型时,通用功能800可以基于配置空间810中包括的信息以从属于默认物理功能720或具有物理功能类型的另一通用功能的方式运行,或者以独立方式运行。MUX 830可以从默认物理功能720或另一通用功能接收与从属操作相对应的物理功能信号PF_SIG,并且可以将物理功能信号PF_SIG提供给操作控制器820。另外,MUX 830可以从主机1000接收与独立操作相对应的主机信号H_SIG并将主机信号H_SIG提供给操作控制器820。
图9示出了根据本公开的实施例的配置空间的布局。
图9可以是示出如图8所示的配置空间810的布局的示图。
参照图9,配置空间810可以包括多个能力寄存器CAP 1至CAP 4。尽管图9仅示出了四个能力寄存器CAP 1至CAP 4,但是根据实施例,在配置空间810中可以包括多于或少于四个的能力寄存器。根据实施例,该能力可以是PCIe能力。
根据实施例,功能类型控制器710可以基于配置空间810中包括的寄存器值之中的指针值来启用与针对多个通用功能800确定的功能类型相关联的能力,该指针值指示启用的能力。另外,根据实施例,功能类型控制器710可以基于指示待启用的能力的指针值来禁用不与针对多个通用功能800确定的功能类型相关联的能力。
例如,当通用功能800的功能类型被确定为物理功能类型时,功能类型控制器710可以启用与物理功能类型相关联的能力并且禁用不与物理功能类型相关联的能力。在另一示例中,当通用功能800的功能类型被确定为虚拟功能类型时,功能类型控制器710可以启用与虚拟功能类型相关联的能力并且禁用不与虚拟功能类型相关联的能力。在另一示例中,当通用功能800的功能类型被确定为禁用功能类型时,功能类型控制器710可以禁用所有能力。
根据实施例,可以基于配置空间810中包括的寄存器的字段值之中的指针值来启用或禁用能力。指针值可以是相对于配置空间810的偏移,其指示下一项能力的位置。当不存在下一项能力时,指针值可以设置为00h。
例如,可以假设通用功能800的所确定的功能类型与第一能力寄存器CAP1、第二能力寄存器CAP2和第四能力寄存器CAP4相关联并且不与第三能力寄存器CAP3相关联。当启用第一能力寄存器CAP 1时,指针值POINTER 1可以指示作为下一个待启用的能力寄存器的第二能力寄存器CAP 2的位置。下文中,第二能力寄存器CAP 2中包括的指针值POINTER 2可以指示作为下一个待启用的能力寄存器的第四能力寄存器CAP 4的位置。因为指针值POINTER2跳过第三能力寄存器CAP 3并指示第四能力寄存器CAP 4,所以可以禁用第三能力寄存器CAP 3。可以隐藏第三能力寄存器CAP 3。当不存在下一个待启用的能力时,可以将第四能力寄存器CAP 4中包括的指针值POINTER3设置为00h。
根据实施例,功能类型控制器710可以对禁用能力寄存器执行时钟门控。
图10示出了根据本公开的实施例的PCIe装置的示例(PCIe装置700A)。
图10所示的PCIe装置700A可以是被配置为多功能装置的PCIe装置的示例。也就是说,图10示出了PCIe装置700A中包括的通用功能730-1至730-n中的每一个的功能类型被配置为物理功能类型的示例。因此,图10中所示的PCIe装置700A可以以与上面参照图4描述的多功能PCIe装置400相同的方式操作。
参照图10,功能类型控制器710可以向多个通用功能730-1至730-n中的每一个提供物理功能类型控制信号PFT_CSIG。物理功能类型控制信号PFT_CSIG可以是用于将通用功能730-1至730-n中的每一个的功能类型配置为物理功能类型的控制信号。因此,多个通用功能730-1至730-n中的每一个的功能类型可以被配置为物理功能类型。多个通用功能730-1至730-n可以根据物理功能类型来执行与PCIe接口相关联的操作。换句话说,通用功能730-1至730-n可以分别如物理功能那样操作。
每一个均被配置为物理功能类型的通用功能730-1至730-n可以基于通用功能730-1至730-n中的每一个的配置空间中包括的基地址寄存器(BAR)来执行操作。根据实施例,基地址寄存器可以确定功能所需的系统存储空间的量,并提供用于对功能存储空间进行映射的基地址。基地址寄存器可以映射到存储空间或I/O空间。例如,通用功能730-1至730-n可以通过基地址寄存器而具有独立的地址,并通过基地址寄存器提供待在执行操作时使用的地址。
根据实施例,多个通用功能730-1至730-n可以基于分别与多个通用功能730-1至730-n的配置空间中包括的PCIe关联操作相对应的寄存器来执行PCIe关联操作。例如,错误处理操作可以基于与错误处理操作相关联并且包括在通用功能730-1至730-n中的每一个的配置空间中的寄存器来执行。例如,电力管理操作可以基于与电力管理操作相关联并且包括在通用功能730-1至730-n中的每一个的配置空间中的寄存器来执行。换句话说,每一个均被确定为物理功能类型的通用功能730-1至730-n可以基于其各自的配置空间中的信息以独立的方式来执行操作。
根据实施例,多个通用功能730-1至730-n可以基于默认物理功能720的配置空间中的信息来执行操作。换句话说,多个通用功能730-1至730-n可以基于默认物理功能720的配置空间中的信息来执行操作。例如,可以基于默认物理功能720的配置空间中的信息来执行对链路、由多个通用功能730-1至730-n共享的PCIe功能以及物理层中的错误报告的管理。
根据实施例,多个通用功能730-1至730-n中的每个通用功能可以响应于来自主机1000的针对该通用功能的重置请求而执行相应的重置操作,这将在下面参照图16A更详细地描述。
图11示出了根据本公开的实施例的PCIe装置的另一示例(PCIe装置700B)。
图11所示的PCIe装置700B可以是具有SR-IOV能力的装置的示例。也就是说,图11示出了PCIe装置700B中包括的通用功能730-1至730-n中的每一个的功能类型被确定为虚拟功能类型的示例。因此,图11中所示的PCIe装置700B可以以与上面参照图5描述的PCIe装置500相同的方式操作。
参照图11,功能类型控制器710可以向多个通用功能730-1至730-n提供虚拟功能类型控制信号VFT_CSIG。虚拟功能类型控制信号VFT_CSIG可以是用于将通用功能730-1至730-n中的每一个的功能类型确定为虚拟功能类型的控制信号。因此,多个通用功能730-1至730-n中的每一个可以被配置为虚拟功能类型。多个通用功能730-1至730-n可以根虚拟功能类型来执行与PCIe接口相关联的操作。换句话说,通用功能730-1至730-n可以分别如虚拟功能那样操作。
每一个均被配置为虚拟功能类型的多个通用功能730-1至730-n可以与默认物理功能720相关联。根据实施例,默认物理功能720可以是SR-IOV能力启用功能。功能类型控制器710可以向相关联的默认物理功能720提供虚拟功能信息VF_INFO。虚拟功能信息VF_INFO可以包括:作为虚拟功能类型来操作的通用功能的标识信息、通用功能的数量以及指示具有虚拟功能类型的下一个通用功能的路由ID偏移。
默认物理功能720可以基于虚拟功能信息VF_INFO来修改默认物理功能720的配置空间中包括的寄存器。根据实施例,默认物理功能720可以基于SR-IOV能力寄存器中包括的虚拟功能(VF)启用值来启用或禁用多个通用功能730-1至730-n。例如,当设置SR-IOV能力寄存器中包括的虚拟功能启用值时,可以启用通用功能730-1至730-n的多个寄存器。在另一示例中,当清除SR-IOV能力寄存器中包括的虚拟功能启用值时,可以禁用通用功能730-1至730-n。
每一个均被配置为虚拟功能类型的通用功能730-1至730-n可以基于与通用功能730-1至730-n相关联的功能的配置空间中包括的基地址寄存器(BAR)来执行操作。例如,当通用功能730-1至730-n分别与默认物理功能720相关联时,通用功能730-1至730-n可以基于默认物理功能720的配置空间中包括的基地址寄存器(BAR)来执行操作。换句话说,每一个均被配置为虚拟功能类型的多个通用功能730-1至730-n可以不具有独立的基地址并且可以通过相关联的默认物理功能720的基地址来执行操作。
根据实施例,多个通用功能730-1至730-n可以基于与相关联的功能的配置空间中包括的PCIe接口关联操作相对应的寄存器来执行PCIe接口关联操作。例如,当与默认物理功能720相关联时,多个通用功能730-1至730-n可以基于默认物理功能720的配置空间中包括的寄存器来执行PCIe接口关联操作。例如,通用功能730-1至730-n可以基于与错误处理操作相关联并且包括在默认物理功能720的配置空间中的寄存器来执行错误处理操作。例如,通用功能730-1至730-n可以基于与电力管理操作相关联并且包括在默认物理功能720的配置空间中的寄存器来执行电力管理操作。换句话说,每一个均被配置为虚拟功能类型的通用功能730-1至730-n可以基于相关联的功能的配置空间来执行一些操作。
根据实施例,多个通用功能730-1至730-n中的每一个可以基于其配置空间来执行操作。换句话说,多个通用功能730-1至730-n中的每一个都可以基于其配置空间以独立的方式来执行一些例外操作。例如,在诸如配置空间的寄存器值被设置成以独立的方式执行电力管理操作的情况下,多个通用功能730-1至730-n中的每一个都可以基于其配置空间来执行一些操作。
根据实施例,多个通用功能730-1至730-n中的每个通用功能可以响应于以下中的至少一项来执行重置操作:从主机1000提供的针对该通用功能的相关联的功能的重置请求,针对该通用功能的重置请求,以及对相关联的功能的虚拟功能启用的清除操作。这将在下面参照图16B至图16D更详细地描述。
图12示出了根据本公开的实施例的PCIe装置的另一示例(PCIe装置700C)。
图12所示的PCIe装置700C可以是具有SR-IOV能力的装置的另一示例。在图12的示例中,PCIe装置700C中包括的通用功能730-1至730-n的第一子集的各个功能类型可以被确定为物理功能类型,通用功能730-1至730-n的第二子集的各个功能类型可以被确定为虚拟功能类型,并且通用功能730-1至730-n的第三子集的各个功能类型可以被确定为禁用功能类型。因此,图12中所示的PCIe装置700C可以以与上面参照图6描述的PCIe装置600相同的方式操作。
参照图12,功能类型控制器710可以向多个通用功能730-1至730-n之中的第一通用功能子集(通用功能730-1、730-2、730-3和730-n)提供物理功能类型控制信号PFT_CSIG。另外,功能类型控制器710可以向第二通用功能子集(通用功能730-4和730-5)提供虚拟功能类型控制信号VFT_CSIG。另外,功能类型控制器710可以向第三通用功能子集(通用功能730-6)提供禁用功能类型控制信号DFT_CSIG。禁用功能类型控制信号DFT_CSIG可以是用于将通用功能6 730-6的功能类型确定为禁用功能类型的控制信号。因此,通用功能730-1、730-2、730-3和730-n中的每一个的功能类型可以被确定为物理功能类型,通用功能730-4和730-5中的每一个的功能类型可以被确定为虚拟功能类型,并且通用功能6 730-6的功能类型可以被确定为禁用功能类型。
通用功能730-1、730-2、730-3和730-n可以以与如上文参照图10所述的每一个都被配置为物理功能类型的多个通用功能730-1至730-n相同的方式来操作。通用功能730-4和730-5可以以与如上文参照图11所述的每一个都被配置为虚拟功能类型的多个通用功能730-1至730-n相同的方式操作。
根据实施例,每一个都被配置为虚拟功能类型的通用功能730-4和730-5可以与被配置为物理功能类型的通用功能3 730-3相关联。根据实施例,通用功能3 730-3可以是SR-IOV能力启用功能。功能类型控制器710可以向相关联的通用功能3 730-3提供虚拟功能信息VF_INFO。虚拟功能信息VF_INFO可以包括:作为虚拟功能类型来操作的通用功能的标识信息、通用功能的数量、指示具有虚拟功能类型的下一个通用功能的路由ID偏移、第一虚拟功能偏移、虚拟功能步长等。第一虚拟功能偏移可以指示被确定为虚拟功能类型的多个通用功能之中的第一个通用功能相对于相关联的物理功能的标识信息偏移。虚拟功能步长可以指示被确定为虚拟功能类型的通用功能之中的标识信息偏移。虚拟功能信息VF_INFO可以包括用于将第一虚拟功能偏移设置为“1”并且将虚拟功能步长设置为“1”的信息。
根据实施例,通用功能3 730-3可以基于虚拟功能信息VF_INFO来修改通用功能3730-3的配置空间中包括的寄存器。根据实施例,通用功能3 730-3可以基于SR-IOV能力寄存器中包括的虚拟功能(VF)启用值来启用或禁用通用功能730-4至730-5。例如,当设置通用功能3730-3的SR-IOV能力寄存器中包括的虚拟功能启用时,可以启用通用功能730-4和730-5。在另一示例中,当清除通用功能3 730-3的SR-IOV能力寄存器中包括的虚拟功能启用时,可以禁用通用功能730-4和730-5。另外,通用功能3 730-3可以基于虚拟功能信息VF_INFO将SR-IOV能力寄存器中包括的第一虚拟功能偏移存储为“1”并且将虚拟功能步长存储为“1”。
每一个都被确定为虚拟功能类型的通用功能730-4和730-5可以基于相关联的通用功能3 730-3的配置空间中包括的基地址寄存器来执行操作。例如,通用功能730-4和730-5可以基于相关联的通用功能3730-3的配置空间中包括的基地址寄存器来执行操作。换句话说,通用功能730-4和730-5可以不具有独立的基地址并且可以通过相关联的通用功能3 730-3的基地址来执行操作。
根据实施例,多个通用功能730-4和730-5可以基于与相关联的功能的配置空间中包括的与PCIe接口关联操作相对应的寄存器来执行PCIe接口关联操作。例如,通用功能730-4和730-5可以基于相关联的通用功能3 730-3的配置空间中包括的寄存器来执行PCIe接口关联操作。例如,通用功能730-4和730-5可以基于与错误处理操作相关联并且包括在通用功能3 730-3的配置空间中的寄存器来执行错误处理操作。例如,通用功能730-4和730-5可以基于与电力管理操作相关联并且包括在通用功能3 730-3的配置空间中的寄存器来执行电力管理操作。换句话说,被配置为虚拟功能类型的通用功能730-4和730-5中的每一个可以基于相关联的功能的配置空间来执行一些操作。
根据实施例,通用功能730-4和730-5可以基于其配置空间来执行操作。换句话说,通用功能730-4和730-5中的每一个都可以基于其配置空间来独立地执行一些例外操作。例如,在诸如配置空间的寄存器值被设置成以独立的方式执行电力管理操作的情况下,通用功能730-4和730-5可以基于其配置空间来执行一些操作。
根据实施例,功能类型控制器710可以禁用被配置为禁用功能类型的通用功能6730-6的配置空间中包括的寄存器。另外,功能类型控制器710可以对通用功能6 730-6的配置空间中的禁用的寄存器执行时钟门控。
图13示出了根据本公开的实施例的PCIe装置的另一示例(PCIe装置700D)。
图13所示的PCIe装置700D可以是具有SR-IOV能力的装置的示例。换句话说,如图13所示,PCIe装置700D中包括的通用功能730-1至730-n的第一子集中的每一个的功能类型可以被确定为物理功能类型,并且通用功能730-1至730-n的第二子集中的每一个的功能类型可以被确定为虚拟功能类型。因此,图13中所示的PCIe装置700D可以以与上面参照图6描述的PCIe装置600相同的方式来操作。
参照图13,功能类型控制器710可以向第一通用功能子集(通用功能730-1、730-2、730-4、730-6和730-n)提供物理功能类型控制信号PFT_CSIG。因此,通用功能730-1、730-2、730-4、730-6和730-n中的每一个的功能类型可以被确定为物理功能类型。另外,功能类型控制器710可以向第二通用功能子集(通用功能730-3和730-5)提供虚拟功能类型控制信号VFT_CSIG。因此,通用功能730-3和730-5中的每一个的功能类型可以被确定为虚拟功能类型。
根据实施例,被配置为虚拟功能类型的通用功能3 730-3可以与默认物理功能720相关联,并且被配置为虚拟功能类型的通用功能5730-5可以与被配置为物理功能类型的通用功能2 730-2相关联。根据实施例,默认物理功能720和通用功能2 730-2可以是SR-IOV能力启用功能。功能类型控制器710可以向默认物理功能720和通用功能2 730-2提供虚拟功能信息VF_INFO。可以假设虚拟功能信息VF_INFO包括用于将第一虚拟功能偏移设置为“3”的信息。
根据实施例,默认物理功能720和通用功能2 730-2可以基于虚拟功能信息VF_INFO来修改默认物理功能720和通用功能2 730-2的配置空间中包括的寄存器。根据实施例,默认物理功能720可以基于SR-IOV能力寄存器中包括的虚拟功能(VF)启用值来启用或禁用通用功能3 730-3。通用功能2 730-2可以基于SR-IOV能力寄存器中包括的虚拟功能(VF)启用值来启用或禁用通用功能5 730-5。另外,默认物理功能720和通用功能2 730-2可以基于虚拟功能信息VF_INFO将SR-IOV能力寄存器中包括的第一虚拟功能偏移存储为“1”。
如上面参照图12所述的每一个都被配置为虚拟功能类型的通用功能的操作可以应用于通用功能3 730-3和通用功能5 730-5。
图14示出了根据本公开的实施例的PCIe装置的另一示例(PCIe装置700E)。
图14所示的PCIe装置700E可以是具有SR-IOV能力的装置的示例。换句话说,如图14的示例所示,PCIe装置700E中包括的通用功能730-1至730-n的第一子集中的每一个的功能类型可以被确定为物理功能类型,并且通用功能730-1至730-n的第二子集中的每一个的功能类型可以被确定为虚拟功能类型。因此,图14中所示的PCIe装置700E可以以与上面参照图6描述的PCIe装置600相同的方式操作。
参照图14,功能类型控制器710可以向第一通用功能子集(通用功能730-2、730-4、730-6和730-n)提供物理功能类型控制信号PFT_CSIG。因此,通用功能730-2、730-4、730-6和730-n中的每一个的功能类型可以被确定为物理功能类型。另外,功能类型控制器710可以向第二通用功能子集(通用功能730-1、730-3和730-5)提供虚拟功能类型控制信号VFT_CSIG。因此,通用功能730-1、730-3和730-5中的每一个的功能类型可以被确定为虚拟功能类型。
根据实施例,每一个都被配置为虚拟功能类型的通用功能730-1、730-3和730-5中的每一个可以与默认物理功能720相关联。根据实施例,默认物理功能720可以是SR-IOV能力启用功能。功能类型控制器710可以向默认物理功能720提供虚拟功能信息VF_INFO。虚拟功能信息VF_INFO可以包括用于将第一虚拟功能偏移设置为“1”并且将虚拟功能步长设置为“2”的信息。
根据实施例,默认物理功能720可以基于虚拟功能信息VF_INFO来修改默认物理功能720的配置空间中包括的寄存器。根据实施例,默认物理功能720可以基于SR-IOV能力寄存器中包括的虚拟功能(VF)启用值来启用或禁用相关联的通用功能730-1、730-3和730-5。另外,默认物理功能720可以基于虚拟功能信息VF_INFO将SR-IOV能力寄存器中包括的第一虚拟功能偏移存储为“1”并且将虚拟功能步长存储为“2”。
如上面参照图12所述的每一个被确定为虚拟功能类型的通用功能的操作可以应用于如图14所示的通用功能730-1、730-3和730-5。
图15示出了根据本公开的实施例的PCIe装置的另一示例(PCIe装置700F)。
图15所示的PCIe装置700F可以是具有SR-IOV能力的装置的示例。换句话说,如图15所示,例如,PCIe装置700F中包括的通用功能730-1至730-n的第一子集中的每一个的功能类型可以被确定为物理功能类型,并且通用功能730-1至730-n的第二子集中的每一个的功能类型可以被确定为虚拟功能类型。因此,图15中所示的PCIe装置700F可以以与上面参照图6描述的PCIe装置600相同的方式操作。
参照图15,功能类型控制器710可以向多个通用功能730-1至730-n之中的第一通用功能子集(通用功能730-1、730-2、730-5和730-n)提供物理功能类型控制信号PFT_CSIG。因此,通用功能730-1、730-2、730-5和730-n中的每一个的功能类型可以被确定为物理功能类型。另外,功能类型控制器710可以向第二通用功能子集(通用功能730-3、730-4和730-6)提供虚拟功能类型控制信号VFT_CSIG。因此,通用功能730-3、730-4和730-6中的每一个的功能类型可以被确定为虚拟功能类型。
根据实施例,被确定为虚拟功能类型的通用功能3 730-3可以与通用功能2 730-2相关联,被确定为虚拟功能类型的通用功能4 730-4可以与通用功能1 730-1相关联,并且被确定为虚拟功能类型的通用功能6730-6可以与通用功能5 730-5相关联。根据实施例,通用功能1 730-1、通用功能2 730-2和通用功能5 730-5可以是SR-IOV能力启用功能。功能类型控制器710可以向通用功能1 730-1、通用功能2 730-2和通用功能5 730-5提供虚拟功能信息VF_INFO。在该示例中,提供给通用功能1 730-1的虚拟功能信息VF_INFO包括用于将第一虚拟功能偏移设置为“3”的信息,并且提供给通用功能2 730-2和通用功能5 730-5的虚拟功能信息VF_INFO包括用于将第一虚拟功能偏移设置为“1”的信息。
根据实施例,通用功能1 730-1、通用功能2 730-2和通用功能5730-5可以基于各自的虚拟功能信息VF_INFO修改通用功能1 730-1、通用功能2 730-2和通用功能5 730-5的配置空间中包括的寄存器。根据实施例,通用功能1 730-1可以基于SR-IOV能力寄存器中包括的虚拟功能(VF)启用值来启用或禁用通用功能4 730-4。通用功能2 730-2可以基于SR-IOV能力寄存器中包括的虚拟功能(VF)启用值来启用或禁用通用功能3 730-3。通用功能5730-5可以基于SR-IOV能力寄存器中包括的虚拟功能(VF)启用值来启用或禁用通用功能6730-6。另外,通用功能1 730-1可以基于虚拟功能信息VF_INFO将SR-IOV能力寄存器中包括的第一虚拟功能偏移存储为“3”。通用功能2 730-2和通用功能5 730-5可以基于虚拟功能信息VF_INFO将SR-IOV能力寄存器中包括的第一虚拟功能偏移存储为“1”。
如上面参照图12所述的每一个均被确定为虚拟功能类型的通用功能的操作可以应用于如图15所示的通用功能3 730-3、通用功能4730-4和通用功能6 730-6。
因此,参照图10至图15,根据本公开的各个实施例,通过自由确定以各种类型配置的功能布置,可以提供适用于各种环境的PCIe装置。
图16A示出了根据本公开的实施例的重置操作的示例。
图16A所示的PCIe装置700A可以表示图10所示的PCIe装置700A。
参照图16A,PCIe装置700A可以从主机1000接收用于通用功能1730-1的重置命令。根据实施例,重置命令可以是功能级重置命令FLR_CMD。
PCIe装置700A可以响应于功能级重置命令FLR_CMD来对被配置为物理功能类型的通用功能1 730-1执行功能级重置。因此,仅可以重置通用功能1 730-1,并且通用功能1730-1的重置操作不会影响其他通用功能730-2至730-n或默认物理功能720。
在上面的示例中,已经描述了对通用功能1 730-1执行的重置操作。然而,通用功能1 730-1的重置操作可以应用于每一个都被确定为物理功能类型的其他通用功能730-2至730-n。另外,通用功能1 730-1的上述重置操作可以应用于图12的PCIe装置700C中的每一个都被配置为物理功能类型的通用功能730-1、730-2、730-3和730-n。
图16B示出了根据本公开的实施例的重置操作的另一示例。
图16B所示的PCIe装置700B可以表示图11所示的PCIe装置700B。
参照图16B,PCIe装置700B可以从主机1000接收用于通用功能1730-1的重置命令。根据实施例,重置命令可以是功能级重置命令FLR_CMD。
PCIe装置700B可以响应于功能级重置命令FLR_CMD来对被配置为虚拟功能类型的通用功能1 730-1执行功能级重置。因此,仅可以重置通用功能1 730-1,并且通用功能1730-1的重置操作不会影响其他通用功能730-2至730-n或默认物理功能720。
在上面的示例中,已经描述了对通用功能1 730-1执行的重置操作。然而,通用功能1 730-1的重置操作可以应用于每一个都被确定为虚拟功能类型的其他通用功能730-2至730-n。另外,通用功能1 730-1的上述重置操作可以应用于图12的PCIe装置700C中的每一个都被配置为虚拟功能类型的通用功能730-4和730-5。
图16C示出了根据本公开的实施例的重置操作的另一示例。
图16C所示的PCIe装置700C可以表示图11所示的PCIe装置700B。
参照图16C,PCIe装置700B可以从主机1000接收用于默认物理功能720的重置命令。根据实施例,重置命令可以是功能级重置命令FLR_CMD。
PCIe装置700B可以响应于功能级重置命令FLR_CMD来对默认物理功能720执行功能级重置。另外,PCIe装置700B可以对每一个都被配置为虚拟功能类型并且与默认物理功能720相关联的通用功能730-1至730-n执行功能级重置。换句话说,可以对与默认物理功能720相关联的通用功能730-1至730-n以及默认物理功能720执行功能级重置。
上述通用功能730-1至730-n和相关联的默认物理功能720的重置操作可以应用于如图12的PCIe装置700C中所示的每一个都被配置为虚拟功能类型的通用功能730-4和730-5,以及被配置为相关联的物理功能类型的通用功能730-3。
图16D示出了根据本公开的实施例的重置操作的另一示例。
图16D所示的PCIe装置700C可以表示图11所示的PCIe装置700B。
参照图16D,PCIe装置700B可以从主机1000接收用于将虚拟功能启用值设置为“清除”的VF启用清除命令CMD。默认物理功能720可以响应于VF启用清除命令CMD来将配置空间中包括的VF启用值设置为“清除”。因此,在执行重置操作时,可以禁用与默认物理功能720相关联的多个通用功能730-1至730-n。
上述通用功能730-1至730-n和相关联的默认物理功能720的虚拟功能启用清除操作可以应用于如图12的PCIe装置700C中所示的每一个都被配置为虚拟功能类型的通用功能730-4和730-5,以及被配置为相关联的物理功能类型的通用功能730-3。
图17是示出根据本公开的实施例的PCIe的操作过程的流程图。
图17所示的过程可以由例如包括多个通用功能的PCI装置(诸如图7所示的PCIe装置700)来执行。
参照图17,在步骤S1701,PCIe装置700可以从主机1000接收功能类型设置信息。
例如,PCIe装置700可以通过使用诸如以下的技术来接收功能类型设置信息:供应商定义消息、供应商定义的能力、由用户定义的新PCIe能力、系统管理器总线(SMbus)上的管理组件传输协议(MCTP)、PCIe上的MCTP等。
在步骤S1703,PCIe装置700可以基于功能类型设置信息来将多个通用功能中的每一个的功能类型确定为物理功能类型、虚拟功能类型和禁用功能类型中的一个。
PCIe装置700可以根据功能类型设置信息,通过改变多个通用功能中的每一个的配置空间中包括的寄存器的值来确定多个通用功能中的每一个的功能类型。
在步骤S1705,PCIe装置700可以根据其各自所确定的功能类型来控制多个通用功能执行操作。
PCIe装置700可以控制多个通用功能之中的、每个均具有物理功能类型的一个或多个第一通用功能以基于与第一通用功能中的每一个的配置空间中包括的、与操作相对应的寄存器来执行操作。
另外,PCIe装置700可以控制多个通用功能之中的、每个均具有虚拟功能类型的一个或多个第二通用功能,以基于与第二通用功能中的每一个相关联的功能的配置空间中包括的、与操作相对应的寄存器来执行操作。
另外,PCIe装置700可以禁用多个通用功能之中的、每个均具有禁用功能类型的一个或多个第三通用功能中的每一个的配置空间中包括的寄存器。
根据本公开,可以提供一种通过减少与PCIe相关门计数来降低功率消耗和装置大小的PCIe装置及其操作过程。
另外,根据本公开,可以提供一种通过使用诸如来自主机的请求的软件处理或通过固件设置而不是通过硬件修改来有效地布置以各个类型配置的功能的PCIe装置及其操作过程。
虽然出于说明性目的公开了本公开的实施例,但是本领域技术人员将理解的是,可以进行各个修改、添加和替换。因此,本发明旨在涵盖所有这些修改,只要它们落在所附权利要求书及其等同方案的范围内即可。

Claims (20)

1.一种高速外围组件互连装置即PCIe装置,包括:
多个通用功能,根据所述多个通用功能中的每一个的功能类型来执行与PCIe接口相关联的操作,所述多个通用功能中的每一个被编程为从多个功能类型中选择的功能类型;以及
功能类型控制器,基于从主机提供的功能类型设置信息来确定所述多个通用功能中的每一个的功能类型。
2.根据权利要求1所述的PCIe装置,其中所述多个通用功能中的通用功能包括:
配置空间,包括用于配置所述通用功能以执行所述操作的寄存器;以及
操作控制器,根据所述通用功能的所确定的功能类型来控制所述通用功能执行所述操作。
3.根据权利要求2所述的PCIe装置,其中所述功能类型控制器基于所述功能类型设置信息通过改变所述通用功能的配置空间中包括的所述寄存器的值来从所述多个功能类型中确定所述通用功能的功能类型。
4.根据权利要求2所述的PCIe装置,其中所述功能类型控制器基于所述寄存器的值之中的指示将启用的能力的指针值,来启用与针对所述通用功能确定的功能类型相关联的能力,禁用不与针对所述通用功能确定的功能类型相关联的能力,以及对所述寄存器之中的能力被禁用的寄存器执行时钟门控。
5.根据权利要求2所述的PCIe装置,其中所述功能类型控制器将所述通用功能的功能类型确定为物理功能类型即PF类型、虚拟功能类型即VF类型和禁用所述操作的禁用功能类型中的一种。
6.根据权利要求5所述的PCIe装置,其中当所述通用功能被确定为所述禁用功能类型时,所述功能类型控制器禁用所述通用功能的所述配置空间中包括的寄存器,并对禁用的寄存器执行时钟门控。
7.根据权利要求1所述的PCIe装置,其中所述功能类型设置信息包括以下中的至少一项:被确定为物理功能类型的通用功能的数量、被确定为虚拟功能类型的通用功能的数量、被确定为禁用功能类型的通用功能的数量、以及指示所述多个通用功能中的每一个与各个功能类型之间的映射关系的功能类型映射信息。
8.根据权利要求1所述的PCIe装置,其中被确定为物理功能类型的第一通用功能基于所述第一通用功能的配置空间中包括的基地址寄存器即BAR来执行所述操作。
9.根据权利要求8所述的PCIe装置,其中所述第一通用功能基于包括在所述第一通用功能的配置空间中的、与所述操作相对应的寄存器来执行所述操作,并且所述第一通用功能响应于从所述主机提供的针对所述第一通用功能的重置请求来对所述第一通用功能执行重置操作。
10.根据权利要求8所述的PCIe装置,进一步包括:默认物理功能,包括所述默认物理功能的配置空间中包括的基地址寄存器,
其中被确定为所述虚拟功能类型的第二通用功能具有从所述默认物理功能和所述第一通用功能之中选择的相关联的功能,并基于包括在所述相关联的功能的配置空间中的基地址寄存器来执行所述操作。
11.根据权利要求10所述的PCIe装置,其中所述相关联的功能是单根I/O虚拟化能力启用功能即SR-IOV能力启用功能,以及
其中根据所述相关联的功能的SR-IOV能力寄存器中包括的虚拟功能启用值即VF启用值来启用所述第二通用功能。
12.根据权利要求10所述的PCIe装置,其中所述第二通用功能基于包括在所述相关联的功能的配置空间中的、与所述操作相对应的寄存器来执行所述操作。
13.根据权利要求10所述的PCIe装置,其中所述第二通用功能响应于以下中的至少一项来对所述第二通用功能执行重置操作:从所述主机提供的针对所述相关联的功能的重置请求,针对所述第二通用功能的重置请求,以及对所述相关联的功能的VF启用值的清除操作。
14.根据权利要求1所述的PCIe装置,其中所述操作包括以下中的至少一项:从所述主机接收命令并向所述主机提供对所述命令的响应的数据处理操作;检测错误并报告错误的错误处理操作;以及管理功能的电力的电力管理操作。
15.一种用于操作高速外围组件互连装置即PCIe装置的方法,所述PCIe装置包括执行与PCIe接口相关联的操作的多个通用功能,所述方法包括:
从主机接收功能类型设置信息;
基于所述功能类型设置信息,分别确定所述多个通用功能的多个功能类型,每个功能类型是物理功能类型即PF类型、虚拟功能VF类型即VF类型和禁用所述操作的禁用功能类型中的一种;以及
根据所述多个功能类型来分别控制所述多个通用功能执行所述操作。
16.根据权利要求15所述的方法,其中根据所述多个功能类型分别控制所述多个通用功能包括:基于所述功能类型设置信息来改变所述多个通用功能的各自的配置空间中包括的寄存器的值。
17.根据权利要求16所述的方法,其中控制所述多个通用功能包括:控制所述多个通用功能之中的被确定为物理功能类型的第一通用功能,以基于与所述操作相对应的寄存器来执行所述操作,该寄存器包括在所述第一通用功能的配置空间中。
18.根据权利要求16所述的方法,其中控制所述多个通用功能包括:控制所述多个通用功能之中的被确定为虚拟功能类型的第二通用功能,以基于包括在与所述第二通用功能相关联的功能的配置空间中的、与所述操作相对应的寄存器来执行所述操作。
19.根据权利要求16所述的方法,其中控制所述多个通用功能包括:禁用所述多个通用功能之中的被确定为禁用功能类型的第三通用功能的配置空间中包括的寄存器。
20.一种高速外围组件互连装置即PCIe装置,包括:
第一通用功能,根据物理功能类型即PF类型来执行与高速外围组件互连接口即PCIe接口相关联的操作;
第二通用功能,根据所述物理功能类型或虚拟功能类型即VF类型来执行与所述PCIe接口相关联的操作;以及
功能类型控制器,基于从主机提供的功能类型设置信息,将所述第二通用功能的功能类型从物理功能类型改变为虚拟功能类型或从虚拟功能类型改变为物理功能类型。
CN202210209897.3A 2021-04-13 2022-03-03 PCIe装置及其操作方法 Pending CN115203095A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020210048063A KR102568906B1 (ko) 2021-04-13 2021-04-13 PCIe 디바이스 및 그 동작 방법
KR10-2021-0048063 2021-04-13

Publications (1)

Publication Number Publication Date
CN115203095A true CN115203095A (zh) 2022-10-18

Family

ID=83510271

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210209897.3A Pending CN115203095A (zh) 2021-04-13 2022-03-03 PCIe装置及其操作方法

Country Status (4)

Country Link
US (1) US11995019B2 (zh)
KR (1) KR102568906B1 (zh)
CN (1) CN115203095A (zh)
TW (1) TW202240413A (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102570943B1 (ko) 2021-04-13 2023-08-28 에스케이하이닉스 주식회사 PCIe 디바이스 및 그 동작 방법
KR102568909B1 (ko) * 2021-04-13 2023-08-21 에스케이하이닉스 주식회사 PCIe 펑션 및 그 동작 방법
US11928070B2 (en) * 2021-04-13 2024-03-12 SK Hynix Inc. PCIe device
KR102568906B1 (ko) 2021-04-13 2023-08-21 에스케이하이닉스 주식회사 PCIe 디바이스 및 그 동작 방법
CN115632976A (zh) * 2022-10-25 2023-01-20 深圳市楠菲微电子有限公司 一种pcie事务层报文生成方法、装置及存储介质

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6647434B1 (en) 1999-12-28 2003-11-11 Dell Usa, L.P. Multifunction device with register space for individually enabling or disabling a function of plurality of functions in response to function configuration
US7979592B1 (en) 2007-02-09 2011-07-12 Emulex Design And Manufacturing Corporation Virtualization bridge device
US8359408B2 (en) * 2008-06-30 2013-01-22 Intel Corporation Enabling functional dependency in a multi-function device
US8503468B2 (en) 2008-11-05 2013-08-06 Fusion-Io, Inc. PCI express load sharing network interface controller cluster
US8117350B2 (en) * 2009-11-03 2012-02-14 Oracle America, Inc. Configuration space compaction
US9851969B2 (en) 2010-06-24 2017-12-26 International Business Machines Corporation Function virtualization facility for function query of a processor
US8291146B2 (en) 2010-07-15 2012-10-16 Ati Technologies Ulc System and method for accessing resources of a PCI express compliant device
CN104272288B (zh) 2012-06-08 2018-01-30 英特尔公司 用于实现虚拟机vm平台通信回送的方法和系统
KR102269452B1 (ko) 2014-09-18 2021-06-28 인텔 코포레이션 컨텐츠 변환 없는 컴퓨팅 디바이스에서의 다중 운영 체제 환경들의 지원
US10521365B2 (en) * 2014-10-05 2019-12-31 Amazon Technologies, Inc. Emulated endpoint configuration
KR102473665B1 (ko) 2015-07-28 2022-12-02 삼성전자주식회사 스토리지 디바이스 및 스토리지 가상화 시스템
US10374926B2 (en) 2016-01-28 2019-08-06 Oracle International Corporation System and method for monitoring logical network traffic flows using a ternary content addressable memory in a high performance computing environment
US10635499B2 (en) * 2016-03-23 2020-04-28 Unisys Corporation Multifunction option virtualization for single root I/O virtualization
KR101767181B1 (ko) * 2017-02-21 2017-08-22 한국과학기술정보연구원 다목적 어댑터 카드 및 그 통합 방법
US10498718B2 (en) 2017-06-16 2019-12-03 Amazon Technologies, Inc. Device identification and authentication in a network
US11307925B2 (en) 2018-03-29 2022-04-19 Intel Corporation Systems and methods for isolating an accelerated function unit and/or an accelerated function context
US11068203B2 (en) 2018-08-01 2021-07-20 Micron Technology, Inc. NVMe direct virtualization with configurable storage
US11531752B2 (en) * 2018-09-26 2022-12-20 Intel Corporation Technologies for control plane separation in a network interface controller
US10929310B2 (en) 2019-03-01 2021-02-23 Cisco Technology, Inc. Adaptive address translation caches
US10970238B2 (en) 2019-04-19 2021-04-06 Intel Corporation Non-posted write transactions for a computer bus
US20200409732A1 (en) * 2019-06-26 2020-12-31 Ati Technologies Ulc Sharing multimedia physical functions in a virtualized environment on a processing unit
US11321257B2 (en) 2019-12-31 2022-05-03 Micron Technology, Inc. Quality of service control of logical devices for a memory sub-system
US11704059B2 (en) 2020-02-07 2023-07-18 Samsung Electronics Co., Ltd. Remote direct attached multiple storage function storage device
US20220188073A1 (en) * 2020-12-11 2022-06-16 Amazon Technologies, Inc. Data-type-aware clock-gating
US20220300442A1 (en) 2021-03-18 2022-09-22 SK Hynix Inc. Peripheral component interconnect express device and method of operating the same
KR102529761B1 (ko) 2021-03-18 2023-05-09 에스케이하이닉스 주식회사 PCIe 디바이스 및 그 동작 방법
KR102570943B1 (ko) 2021-04-13 2023-08-28 에스케이하이닉스 주식회사 PCIe 디바이스 및 그 동작 방법
KR102568906B1 (ko) 2021-04-13 2023-08-21 에스케이하이닉스 주식회사 PCIe 디바이스 및 그 동작 방법
US11928070B2 (en) 2021-04-13 2024-03-12 SK Hynix Inc. PCIe device
KR102568909B1 (ko) 2021-04-13 2023-08-21 에스케이하이닉스 주식회사 PCIe 펑션 및 그 동작 방법

Also Published As

Publication number Publication date
US11995019B2 (en) 2024-05-28
KR102568906B1 (ko) 2023-08-21
TW202240413A (zh) 2022-10-16
KR20220141674A (ko) 2022-10-20
US20220327080A1 (en) 2022-10-13

Similar Documents

Publication Publication Date Title
US9734096B2 (en) Method and system for single root input/output virtualization virtual functions sharing on multi-hosts
US11995019B2 (en) PCIe device with changeable function types and operating method thereof
US11983136B2 (en) PCIe device and operating method thereof
US11928070B2 (en) PCIe device
CN106796529B (zh) 通过利用商品型PCI交换机在PCIe结构中的CPU上使用未经修改的PCIe设备驱动程序来使用PCIe设备资源的方法
US8527666B2 (en) Accessing a configuration space of a virtual function
US8458368B2 (en) System and method for discovering and protecting shared allocated resources in a shared virtualized I/O device
US10296356B2 (en) Implementation of reset functions in an SoC virtualized device
KR102568909B1 (ko) PCIe 펑션 및 그 동작 방법
KR102529761B1 (ko) PCIe 디바이스 및 그 동작 방법
US20180239728A1 (en) Management controller including virtual usb host controller
US20140281062A1 (en) Apparatus, system and method for providing access to a device function
US8312461B2 (en) System and method for discovering and protecting allocated resources in a shared virtualized I/O device
US8527745B2 (en) Input/output device including a host interface for processing function level reset requests and updating a timer value corresponding to a time until application hardware registers associated with the function level reset requests are available
US8225007B2 (en) Method and system for reducing address space for allocated resources in a shared virtualized I/O device
US20230318606A1 (en) Interface device and method of operating the same
US20230350824A1 (en) Peripheral component interconnect express device and operating method thereof

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