CN106796556B - 仿真端点配置 - Google Patents
仿真端点配置 Download PDFInfo
- Publication number
- CN106796556B CN106796556B CN201580053816.3A CN201580053816A CN106796556B CN 106796556 B CN106796556 B CN 106796556B CN 201580053816 A CN201580053816 A CN 201580053816A CN 106796556 B CN106796556 B CN 106796556B
- Authority
- CN
- China
- Prior art keywords
- configuration
- peripheral device
- space
- transaction
- simulation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/105—Program control for peripheral devices where the programme performs an input/output emulation function
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0058—Bus-related hardware virtualisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Bus Control (AREA)
- Information Transfer Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
用于由周边装置仿真配置空间的技术可包括:接收配置访问请求;确定所述配置访问请求是针对除所述周边装置的原生配置空间外的配置空间;及自仿真配置空间检索仿真配置。然后可通过使用所述仿真配置来服务所述配置访问请求。
Description
背景技术
计算系统可包括多个周边装置。周边装置可扩展、调适和/或修改计算系统的功能性。周边装置可实施一个或多个功能。例如,周边装置可以是提供网络连接性功能的网络接口卡,或提供数据存储功能的大容量存储装置等。
一些周边装置可包括用以控制周边装置的行为的配置寄存器。例如,如果周边装置是周边部件互连(PCI)兼容装置,则周边装置可具有一组PCI配置空间寄存器。配置寄存器可包括可被读取以指示周边装置的能力的字段,且可包括可被写入以启用、停用或更改周边装置的功能的字段。一般而言,配置寄存器实施为物理硬件寄存器,且字段根据周边装置的特定能力和功能而定义并硬编码。因此,一旦制造,周边装置的配置寄存器的定义通常被固定且无法改变。
附图简述
将参考附图描述根据本公开的各种实施方案,其中:
图1示出根据一些实施方案的包括多个周边装置的计算系统的示例;
图2示出根据一些实施方案的具有仿真配置空间的周边装置的方框图;
图3示出根据一些实施方案的具有仿真配置空间的周边装置的方框图;
图4示出根据一些实施方案的服务配置读取事务的周边装置的示例;
图5示出根据一些实施方案的服务配置写入请求的周边装置的示例;
图6示出根据一些实施方案的被配置以实施单根输入/输出虚拟化(SR-IOV)的周边装置的方框图;
图7示出根据一些实施方案的用于服务配置访问请求的流程图;
图8示出根据一些实施方案的用于服务配置访问请求以读取配置寄存器的进程的示例;
图9示出根据一些实施方案的用于服务配置访问请求以写入配置寄存器的进程的示例;
图10示出根据一些实施方案的本文中所描述的包括经由一个或多个网络连接的一个或多个服务提供商计算机和/或用户装置的特征和系统的示例性架构;和
图11示出根据一些实施方案的用于实施各方面的计算系统的示例性环境的各方面。
具体实施方式
在以下描述中,将描述各种实施方案。出于阐释目的,陈述特定配置及细节以便提供对实施方案的透彻理解。然而,本领域技术人员也明白的是,可实践实施方案而无需特定细节。此外,可省略或简化众所周知的特征以便不使所描述的实施方案模糊。
计算系统可包括多个周边装置。周边装置可扩展、调适和/或修改计算系统的功能性。例如,周边装置可提供对计算系统的存储、网络连接性和/或音频及视频支持等。周边装置通常通过一个或多个总线与计算系统通信。总线上的数据传送可由总线协议定义。总线协议的示例可包括总线协议(例如,PCI、扩展PCI(PCI-X)、高速PCI(PCIe)、PCI派生物,诸如图形加速端口(AGP)等)的周边部件互连(PCI)族,以及其它。
本文中所描述的技术包括仿真周边装置的一些或全部配置空间的部件和方法。仿真配置空间可由周边装置用以将其本身表示为具有不同能力的不同类型的周边装置。例如,仿真配置空间可允许周边装置将其本身在一些实例中表示为网络接口卡,或在其它实例中表示为视频卡等。仿真配置空间也可被动态地修改、扩增、加倍或替换为完全不同配置空间。另外,多个仿真配置空间可维持用于不同功能。仿真配置空间也可需要较少硬件。例如,实施单根I/O虚拟化(SR-IOV)的装置可包括如下的仿真配置:其可针对任何数量的物理和/或虚拟功能而按比例调整而无需针对每个功能的物理硬件寄存器。此外,由仿真配置空间仿真的功能的数量可被动态地修改。
本文中所描述的技术也可提供仿真模块以促进对仿真配置空间的访问。仿真模块可实施为软件、硬件或软件与硬件的组合(例如,由周边装置的处理器执行的软件)。仿真模块可与仿真配置空间交互,包括配置寄存器的读取和写入表示。
I.系统
图1示出包括多个周边装置的计算系统100的示例。周边装置可包括可附接至计算系统以将功能性添加至系统的硬件装置和/或包括硬件与软件的组合的装置。周边装置的示例包括存储装置、视频卡、音频卡、有线和/或无钱网络适配器、用以提供至系统的额外端口(诸如,串行和/或并行端口)的适配器,以及网桥、集线器和/或提供用于额外周边装置的端口的交换机,以及其它。一般而言,周边装置可与计算系统连接及断开连接以改变系统的功能性。在一些情形中,因添加或移除周边装置而必须将计算系统断电。在其它情形中,可在为计算机系统供电时附接或移除周边装置(例如,通常称为“热交换”或“热插入”)。
图1中的示例示出包括实施周边部件互连(PCI)总线标准的一个或多个变化的周边器件的系统。总线是在计算系统内或在计算系统与其它装置之间传送数据的通信信道。标准化总线协议是各个制造商已针对其定义并采用规范的数据传送协议。兼容装置与实施总线协议的计算系统兼容,且反之亦然。PCI描述相关标准化总线协议族。如本文中所使用,PCI包括原始PCI标准、扩展PCI(PCI-X)、图形加速端口(AGP)以及高速PCI(PCIe,也称为PCI-XP)。如本文中所使用,术语“PCI”可用以描述总线协议的PCI族中的任何协议。在图1中所示的示例中,PCI仅被提供为可由计算系统实施的总线协议的示例。其它总线协议可包括(例如)行业标准架构(ISA)、扩展ISA(EISA)、视频电子标准协会(VESA)、微信道、总线的高级技术附件(ATA)族中的任何等。所示的示例也可以标准化总线协议、专属总线协议的组合和/或以标准化及专属总线协议的组合而实施。
示例性计算系统100可包括处理器102、一个或多个根复合体104a至104b、存储器子系统106、交换机108、网桥114以及数个周边装置。周边装置可称为“端点”。处理器102可以是通用计算单元(诸如,由等制造的通用计算单元),且一般而言能够执行软件代码。处理器102可包括多个处理核心。
根复合体104a可以是将处理器100及存储器子系统106连接至端点110a至110c、112a至112c的硬件装置或硬件与软件装置。端点110a至110c、112a至112c可直接连接至根复合体104a。可替代或另外,端点110a至110c、112a至112c可通过交换机108或集线器等连接至根复合体104a。网桥114也可连接至根复合体104a。根复合体104a可转送事务及响应往返于处理器102,和/或可代表处理器102产生且响应于事务。在一些情形中,根复合体104a也可将事务自一个端点110a至110c、112a至112c路由至另一个端点,和/或在端点110a至110c、112a至112c、交换机108及网桥114之间路由事务。根复合体104a可为计算机系统100提供服务,诸如热插入控制器、电源管理控制器、中断控制器和/或错误检测及报告。在一些情形中,根复合体104a和/或104b可实施为主机系统(例如,处理器102)的部分。在一些实施方案中,计算系统100可包括一个以上根复合体。每个根复合体可连接至不同组的周边装置。在一些情形中,周边装置的一个或多个可连接至一个以上根复合体。例如,如在图1中所示,端点110a可连接至根复合体104a及104b两者。
存储器子系统106提供对可由计算系统100使用的数据的暂时或长期存储。存储器子系统106可包括动态随机存取存储器(DRAM)(例如,同步DRAM(SDRAM)、双数据速率(DDR)SDRAM等)和/或其它类型的存储器,诸如静态随机存取存储器(SRAM)、闪存等。
端点110a至110c、112a至112c是可产生和/或响应于数据事务的周边装置。例如,端点110a至110c、112a至112c可以是“请求者”(事务产生器)和/或“完成者”(事务响应器)。在PCI实施中,端点110a至110c可包括实施PCIe的周边装置,且端点112a至112c可包括实施传统PCI的周边装置。端点110a至110c、112a至112c可通过共享总线连接至计算系统100。例如,传统端点112b至112c连接至共享PCI总线116。可替代或另外,端点110a至110c、112a至112c可在交换结构拓扑中连接。交换结构拓扑可包括连接至结构的装置之间的点对点连接,且可包括用于在装置之间传递消息的路由系统。在交换结构中,事务可跨多个物理链路扩散。结构中的装置之间的连接118a至118f也可称为总线。
交换机108用作各个周边装置(包括根复合体104a以及端点110a至110c、112a)之间的网桥。交换机108可在端点110a至110c、112a之间且在端点110a至110c、112a及根复合体104之间路由事务。交换机108也可提供对设定传入及传出数据事务的优先级的仲裁。根复合体104及端点110a至110c、112a可将交换机108看作另一周边装置请求者和/或完成者。
网桥114可提供至其它总线或交换结构的连接性。其它总线或交换结构可实施PCI变化形式或另一协议。例如,在图1的示例中,网桥114提供至实施传统PCI标准的总线的连接性。网桥114可包括用以自一个总线标准(诸如,传统PCI)转译至另一协议(诸如,PCIe)的机构。
在图1的示例中,诸如处理器102、根复合体104a至104b、存储器子系统106、交换机108、网桥114以及端点110a至110c、112a至112c的部件被示为单独部件。在一些实施中,这些部件的一个或多个可组合成单个部件。在其它实施中,这些部件的一个或多个可实施于单个芯片上。在其它实施中,这些部件的一个或多个可部分或全部实施于硬件中、软件中和/或硬件与软件的组合中。
如上文所述,端点或周边装置可添加至和/或修改计算系统100的功能性。例如,一个端点110a可实施Wi-Fi适配器120。使用Wi-Fi适配器120,计算系统100可能够与无线访问点122无钱地通信,且由此访问网络。作为另一示例,另一端点110b可实施视频卡。视频卡可包括端口以连接监视器124或其它显示装置。作为又一示例,计算系统100可包括实施声卡的传统端点112a。声卡可包括接受用于扬声器126或其它音频输出装置的插头的端口或插孔。作为再一示例,端点110c可实施以太网络适配器,且提供至网关装置128(诸如,DSL或电缆调制解调器)的连接。使用网关装置128,计算系统100可访问网络130。
如由这些示例所示,不同类型的周边装置(包括网络适配器、视频卡、音频卡以及其它)可连接至系统。在一些情形中,周边装置可实施一个以上功能装置。例如,在一些情形中,单个端点可包括用于输出至监视器124的视频卡及用于输出至扬声器126的声卡两者。在一些实施中,功能也可(例如)通过将子卡或外部装置连接至周边装置上的扩展槽或外部端口而添加至周边装置。在一些实施方案中,实施PCI的周边装置可包括高达八个单独功能。在这些实施中,PCI装置可使用类别代码及可选子类别代码指示所实施的一个或多个功能。类别代码及可选子类别代码可位于配置寄存器中。在下文进一步详细地描述配置寄存器。
表1列出PCI装置类别代码及其描述。类别代码给定为8位十六进制值。
表1:PCI装置类别代码
类别代码 | 描述 |
00h | 在定义类别代码之前构建的未分类的装置和/或多个装置。 |
01h | 大容量存储控制器。 |
02h | 网络控制器。 |
03h | 显示控制器。 |
04h | 多媒体装置。 |
05h | 存储器控制器 |
06h | 网桥装置。 |
07h | 简单通信控制器。 |
08h | 基本系统周边装置。 |
09h | 输入装置。 |
0Ah | 对接站。 |
0Bh | 处理器。 |
0Ch | 串行总线控制器。 |
0Dh | 无线控制器。 |
0Eh | 智能I/O控制器。 |
0Fh | 卫星通信控制器。 |
10h | 加密/解密控制器。 |
11h | 数据采集和信号处理控制器 |
FFh | 装置不适合任何定义的类别代码。 |
当计算系统(诸如,图1中所示的计算系统100)初始通电时,处理器102可未觉察到连接至系统的任何端点。处理器102可觉察到根复合体104a至104b,且可能也觉察到根复合体连接至一个或多个总线。处理器102可通过执行进程来扫描及配置系统而发现端点110a至110c、112a至112c以及其提供的功能。该进程可称为列举进程。在列举进程期间,处理器102上执行的软件可扫描连接至根复合体104的每个总线118a、118e、118f,且识别附接至每个总线118a、118e、118f的每个端点110a至110c、112a至112c、交换机108和/或网桥114。处理器102可进一步指导根复合体104发起读取及写入每个端点110a至110c、112a至112c、交换机108和/或网桥114中的配置寄存器的事务。配置读取事务可向处理器102通知每个端点110a至110c、112a至112c、交换机108和/或网桥114的装置的能力及类型。配置写入事务可用以配置并控制每个端点110a至110c、112a至112c、交换机108和/或网桥114。例如,在列举期间,可为每个端点110a至110c、112a至112c、交换机108和/或网桥114指配总线及装置数量。配置寄存器通常实施为周边装置的物理硬件寄存器,且周边装置中的配置寄存器的定义通常是固定的且无法动态地改变。
如上文所述,端点可实施多个功能。列举进程也可发现由每个端点实施的功能。在一些情形中,每个功能可包括其自己的配置寄存器集合。特定读取功能配置寄存器可向处理器102通知功能的性质(例如,功能实施视频驱动器)。特定功能配置寄存器也可存储特定于功能的配置及设定。特定写入功能寄存器可配置计算系统或处理器102所需的功能。
在发现交换机108后,处理器102也可扫描并配置连接至交换机108的端点110a至110c。在发现网桥114后,处理器102也可扫描并配置附接至网桥114的另一侧上的总线116的端点112b至112c。
在一些情形中,实施仿真配置空间的周边装置可向计算系统表示其本身为不同周边装置。例如,实施仿真配置空间的周边装置可在一些实例中表示其本身为具有特定于网络接口卡的配置寄存器的网络接口卡,或在其它实例中表示其本身为具有特定于这样周边装置的配置寄存器的不同周边装置(诸如,视频卡或声卡)。仿真配置空间也可被修改、加倍或替换为完全不同配置空间。另外,多个仿真配置空间可维持用于特定功能。例如,计算系统可运行多个虚拟机,其中每个虚拟机运行不同操作系统。每个虚拟机可需要针对由周边装置提供的相同功能的不同配置。在此类情形中,周边装置中的仿真配置空间可提供针对每个虚拟机的仿真配置。仿真配置空间也可需要较少硬件。例如,包括SR-IOV的装置可包括针对任何数量的物理和/或虚拟功能的仿真配置,而不需要针对每个功能的物理硬件寄存器。
II.仿真配置空间
图2示出根据一些实施方案的实施仿真配置空间的周边装置200的示例。例如,周边装置200可用以替换图1所示的端点和/或根复合体的一个或多个。虽然周边装置200被示为独立装置,但应注意周边装置200的部件可与主机系统(例如,主机处理器)整合,使得周边装置200和主机系统可实施于相同硅晶粒或封装上。例如,周边装置200可以是在与主机处理器相同芯片上实施的集成图形装置。所示的示例性周边装置可实施任何总线协议,诸如PCI协议族、ISA、EISA、VESA、多信道等。总线协议可提供对周边装置预期包括的具有指定地址的配置寄存器的定义。图2的周边装置200可仿真针对所实施总线协议定义的配置地址空间的至少一部分。在一些情形中,周边装置200也可包括不被仿真的配置寄存器,诸如用于实施周边装置的基本功能性(例如,用于设定总线速度等)和/或实施特定总线协议的所有周边装置所共同的基本功能性的配置寄存器。这些不被仿真配置寄存器可被称为“原生”配置空间。
在一些实施中,仿真是指一个程序或装置模仿另一程序或装置的能力。例如,图2的周边装置200可包括用以仿真不同周边装置的一个或多个功能的仿真配置空间。例如,周边装置200可在一种背景中仿真视频卡,且在另一背景中仿真大容量存储装置。作为另一示例,实施一个功能且由一家公司制造的周边装置200可能够仿真不同公司制造且实施相同功能的周边装置。在一些实施方案中,周边装置200可用以仿真一个以上周边装置,且因此在一些情景中,周边装置200可仿真整个周边子系统。
周边装置200可包括总线接口核心210、配置管理模块220、本地硬件230以及存储器240。周边装置200可经由总线202与计算系统通信。总线202可实施特定总线协议。
总线接口核心210可包括周边装置200与总线202通信所需的电路及逻辑。例如,总线接口核心210可包括用于与总线202通信的总线接口214。总线接口214可包括至总线202的物理连接,包括用以管理至总线202的链路的任何电性质的电路。总线接口214可进一步包括用于以下的逻辑:同步化至总线202,将传入事务解码并将传出事务编码,和/或检测并可能地管理传入或传出数据中的错误,以及其它操作。
总线接口核心210也可包括原生配置空间212。在不包括仿真配置空间的周边装置中,通常,总线接口核心210包括(例如)由总线协议定义的周边装置的所有配置寄存器。此外,在这样的实施中,总线接口核心210通常服务对配置寄存器的所有读取及写入事务(其也可称为配置访问请求或配置访问),且提供对总线202的响应(如果需要)。相反,在示例性周边装置200中,原生配置空间212可包括其是周边装置200的配置寄存器的子集的原生配置寄存器。例如,原生配置寄存器可与可以是针对给定总线协议的所有周边装置所共同的基本功能性(例如,用于设定总线速度等)相关联,和/或否则可以是不必或不便仿真的配置寄存器。在一些实施方案中,也可仿真原生配置空间212。
在一些实施中,总线接口核心210可检测寻址至原生配置空间212的读取及写入事务。在这样的实施中,总线接口核心210可服务被引导至原生配置寄存器212的配置事务。此外,在这些实施中,寻址至非原生配置空间212内的配置空间的配置事务可被引导至配置管理模块220。在其它实施中,总线接口核心210将所有配置读取及写入事务(而不管其被寻址至何处)引导至配置管理模块220,且配置管理模块220可确定该事务是否针对原生配置空间212。
配置管理模块220可提供被引导至配置寄存器的读取及写入事务的管理。在一些实施中,配置管理模块220可提供事务记录。事务记录可由记录或追踪传入配置事务的硬件和/或软件实施。在接收配置事务后,总线接口核心210可用配置管理模块220来记录事务。总线接口核心210可继续其它操作,而无需等待所记录配置事务完成。配置事务可自事务记录读取且(例如)在本地硬件230有时间时由本地硬件230服务。本地硬件230可在读取了事务时自记录移除该事务,或可在事务已经执行且被响应后或以其它方式在记录中指示该事务已被服务或在被服务的进程中移除该事务。
本地硬件230可实施为被调适以处理配置事务的一个或多个本地处理器、一个或多个本地处理器核心、本地处理器集群、可编程门阵列或控制逻辑电路。在包括多个处理器或处理器核心的实施中,每个处理器或处理器核心可独立地或共同操作地执行软件代码。在这样的实施中,每个处理器或处理器核心可并行地服务来自配置管理模块210的多个事务。在包括一个处理器的实施中,处理器可以是多线程的,且也能够并行地服务多个事务。本地硬件230可运行操作系统232。操作系统232可以是商业操作系统(诸如,Linux、 等),或可以是专属操作系统。
本地硬件230可实施或执行仿真模块236。在一些实施方案中,因为配置事务可需要快速响应时间,因此仿真模块可在安全环境中执行或在被赋予充分特权的情况下执行以使得对配置事务的处理不中断。仿真模块236可自配置管理模块220接收事务(包括配置事务),且可服务这些事务。服务事务可包括:识别事务的类型(例如,读取和/或写入)、识别事务的来源、识别事务被引导至的目的地、执行事务和/或产生对事务的响应(如果需要)。例如,配置读取事务可包括读取配置寄存器且用自寄存器读取的信息做出响应。作为另一示例,配置写入寄存器可包括更新配置寄存器的内容。在一些情形中,可用对已完成写入事务的确认来对配置写入做出响应。
在一些实施中,仿真模块236可确定配置事务是被引导至原生配置空间212还是仿真配置空间242。当配置事务被引导至原生配置空间212时,仿真模块236可与总线接口核心210通信以读取或写入原生配置寄存器。当配置读取被引导至仿真配置空间242时,仿真模块236可自仿真配置空间242读取表示配置寄存器的内容的值。当配置写入被引导至仿真配置空间242时,仿真模块236可写入或更新仿真配置空间242中表示配置寄存器的内容的数据。在一些实施中,配置事务可被引导至与一个或多个功能相关联的配置寄存器,在该情形中,仿真模块236可识别功能并访问特定于该功能的仿真配置寄存器。在其它实施中,配置事务可来自多个来源中的一个,诸如可运行不同操作系统的数个虚拟机中的一个。在这样的实施中,仿真模块236可识别来源,且访问可被指定或适于该来源的仿真配置寄存器。
存储器240提供对可由本地硬件230对其进行操作的数据的存储。存储器模块240可包括DRAM(例如,SDRAM、DDR-SDRAM)、SRAM、快闪或某一其它存储器类型或其任何组合。在一些实施方案中,存储器240可实施为外部存储器模块或实施为周边装置200的内部存储器或其组合。存储器模块240可存储仿真配置空间242。仿真配置空间242可包括对针对任何数量的周边装置定义的所有或一些配置寄存器地址空间的表示。在一些实施中,仿真配置空间242包括可影响周边装置的功能的操作的配置空间。在一些实施中,仿真配置空间242不包括可以是实施总线协议的所有周边装置的基本和/或共同的原生配置空间,或者可不必或不便仿真的原生配置空间。仿真配置寄存器可包括如下的字段:仅读取,读取后即清除(clear-on-read)(或具有“读取后即清除”位),可以是可读取且可写入两者、可以是写入0便清除(write-zero-to-clear)(或具有“写入0便清除”位),和/或写入1便设定(write-one-to-set)(或具有“写入1便设定”位)。
仿真配置空间242可作为文本文件、源代码、目标代码、作为脚本和/或可由仿真模块236读取的某一其它格式存储于存储器240中。在一些实施方案中,仿真配置242可被加密。在一些实施中,仿真配置242可被修改或替换。例如,可(例如)通过因特网上的网站提供额外仿真配置寄存器或仿真配置寄存器的更新版本。在这些实施中,额外或更新的仿真配置寄存器可自因特网下载并上传至存储器240。在一些实施中,存储器240可存储多个仿真配置空间242,或相同仿真配置空间242的多个版本。
图3示出根据一些实施方案的周边装置300的PCIe实施的示例。图3的PCIe周边装置300可包括PCIe核心310、配置管理模块320、本地硬件330以及存储器340。PCIe周边装置300可通过总线302与计算系统通信。总线302可实施PCIe协议。
PCIe核心310可包括支持使用PCIe的总线上的通信所需的功能性的至少一些。PCIe核心310可包括总线接口314。总线接口314可实施管理传入及传出事务的网络协议层314a至314d。对于出站事务,事务层314a可形成具有与由事务发起者(诸如,PCIe核心310本身、配置管理模块320或本地硬件330)提供的信息的数据包。数据链路层314b可将额外信息(例如,可由事务的接收者使用来验证信息的完整性的数据包标头信息和/或错误检查信息)添加至数据包。介质访问层314c可提供寻址信息,诸如事务的来源及目的地的物理地址。物理层314d可将数据包编码成电信号并将数据包传输至总线302上。对于传入事务,物理层314d自总线302接受数据包并将数据包解碼。介质访问层314c可处理事务的来源及目的地地址。数据链路层314b可可解析数据包标头信息并检查错误。事务层314a可将包含于数据包中的信息转变成可由PCIe核心310和/或本地处理器330处理的格式。
PCIe核心310也可包括原生配置空间312。原生配置空间312可包括与基本功能性相关联和/或可以是所有基于PCIe的周边装置所共同和/或可不必或不便仿真的配置寄存器。这样的寄存器的示例包括类型0/1共同寄存器标头316、高级错误报告能力寄存器312a、消息信号中断扩展(MSI-X)能力寄存器312b以及电源预算能力寄存器312c。可(例如)在仿真配置空间324中发现任何剩余配置寄存器空间。在一些实施方案中,也可仿真原生配置空间312。因而,例如,在一些实施方案中,基于PCIe的周边装置可使其所有PCI配置空间寄存器被仿真。
在一些实施中,PCIe核心310可检测寻址至原生配置空间312的读取及写入事务。在这样的实施中,PCIe核心310可服务被引导至原生配置空间312的配置事务。此外,在这些实施中,寻址至不在原生配置空间312内的配置空间的配置事务可被引导至配置管理模块320。在其它实施中,PCIe核心310将所有配置读取及写入事务引导至配置管理模块320,而不管其是否寻址至原生配置空间312。
配置管理模块320可提供对被引导至配置寄存器的读取及写入事务的管理。在一些实施中,配置管理模块310可提供事务记录。在接收到配置事务后,PCIe核心310可用配置管理模块320来记录事务。PCIe核心310然后可继续其它操作。配置事务可自记录读取并由本地硬件330服务。本地处理器330可在读取了事务时自记录移除该事务,或可在事务已经执行且被响应后或以其它方式在记录中指示该事务已被服务或在被服务的进程中移除该事务。
本地硬件330可包括被调适以处理配置事务的一个或多个处理器、一个或多个处理器核心、处理器集群、可编程门阵列或控制逻辑电路。本地硬件330可运行操作系统332。操作系统332可提供用户模式332a及特权模式332b。用户模式332a可执行(例如)已经加载至PCIe周边装置300中的用户应用。特权模式332b可执行系统功能。
本地硬件330也可包括操作的安全模式334(例如,ARM安全模式等)。在安全模式334中运行的程序或软件可与本地硬件330内的其它程序隔离。例如,操作系统模块332和/或在操作系统模块332之上运行的应用可无法访问在安全模块334内运行的模块。相反地,在一些实施方案中,在安全模式334内运行的程序可无法影响在安全模块234外部运行的模块。因此,安全模式334可提供程序可在无来自可在本地硬件330内执行的其它程序的干涉或干扰的情况下执行的环境。在安全模式334中执行的程序可被高度优化,和/或可具有高于其它程序的优先级。在一些实施方案中,安全模式334可实施为在本地硬件330内被逻辑地和/或物理地隔离的硬件和/或软件区段。
在一些实施方案中,仿真模块336可实施为本地硬件330中的仿真控制逻辑电路,和/或实施为在安全模式334中执行的仿真软件。仿真软件可称为ConfigSpace仿真软件(CSES)。仿真模块336可自配置管理模块320接收事务(包括配置事务),且可服务这些事务。例如,服务配置读取事务可包括自仿真配置空间读取配置寄存器,且用自寄存器读取的信息来做出响应。作为另一示例,服务配置写入寄存器可包括更新仿真配置空间中的配置寄存器的内容。在一些情形中,可用对完成写入事务的确认来对配置写入做出响应。
在一些实施中,仿真模块336可接收被引导至周边装置的一些或所有配置事务。在一些实施中,仿真模块336可确定配置事务是被引导至原生配置空间312还是仿真配置空间342。当配置事务被引导至原生配置空间312时,仿真模块336可与PCIe核心310通信以读取或写入原生配置寄存器。在一些实施方案中,配置管理模块可处理原生配置寄存器访问而不涉及仿真模块336。当配置读取被引导至仿真配置342时,仿真模块336可自仿真配置空间342读取表示配置寄存器的内容的值。当配置写入被引导至仿真配置空间342时,仿真模块336可写入或更新仿真配置空间342中的表示配置寄存器的数据。在一些实施中,仿真模块336可本身在内部仿真一个或多个配置寄存器。在这样的实施中,仿真模块336可读取或写入其对配置寄存器的内部表示,其可不需访问仿真配置空间342。
在一些实施中,仿真模块336可使用PCI中断机构以处理仿真配置寄存器访问。例如,仿真模块336可将PCIe核心0中断定义为安全中断,且将处理程序暂存至此中断。中断处理程序可以是在接收到中断时触发的独立软件功能。当触发PCIe核心0中断时,可警告仿真模块336,且仿真模块336可开始服务来自配置管理模块320的事务。通过将PCIe核心0中断定义为安全的,可对不安全模块(诸如,操作系统模块332)隐藏或遮蔽该中断。在一些实施方案中,安全中断也可中断不安全中断处理程序。
存储器340提供对可由本地硬件330对其进行操作的数据的存储。存储器340可包括DRAM(例如,SDRAM、DDR-SDRAM等)、SRAM、闪存或某一其它存储器类型或其组合。在一些实施方案中,存储器340可实施为外部存储器模块,或实施为周边装置200的内部存储器,或其组合。存储器340可存储仿真配置空间342。仿真配置空间342可包括对4KB的PCIe配置地址中的所有或一些的表示。在一些实施中,仿真配置空间342可包括PCIe扩展能力寄存器。例如,仿真配置空间342可包括高级错误报告能力寄存器、虚信道能力寄存器、装置序列号寄存器和/或电源预算能力寄存器。可替代或另外,仿真配置空间342可包括SR-IOV扩展能力寄存器。在这样的情形中,仿真配置空间342可包括允许控制SR-IOV物理及虚拟功能的能力寄存器。在下文中进一步详细论述SR-IOV。
在一些实施中,可动态地替换和/或修改仿真配置空间342。例如,可在仿真配置空间342中添加或移除PCIe扩展能力。在其它实施中,PCIe周边装置300可包括适于不同虚拟机、不同操作系统和/或不同装置类型的多个仿真配置空间。
表2示出仿真配置空间342的示例。偏移描述与仿真配置空间的开始的偏移。偏移给定为12位十六进制值。仿真配置可包括关于每个仿真配置寄存器的其它信息。例如,一些仿真配置寄存器可标记为仅读取、仅写入,或仅可由根复合体读取/写入。作为另一示例,一些仿真配置寄存器可设有默认或重置值。在一些实施方案中,仿真配置空间342可包括对表2中所示的多组配置寄存器的表示。例如,在一些实施方案中,PCIe周边装置300可用以实施可提供对一个或多个PCI端点的连接性的PCI交换机、网桥或集线器。在这样的情景中,仿真配置空间342可包括对交换机、网桥或集线器的配置寄存器以及用于与交换机、网桥或集线器相关联的每个端点装置的配置寄存器的表示。
表2:示例性仿真配置
如上文所述及,配置事务记录可被实施以追踪传入配置事务。配置事务记录可维持一些或所有传入配置读取及写入事务的记录。在一些实施中,配置事务记录可使用数个寄存器来记录给定配置事务。这些寄存器可包括地址寄存器、数据寄存器以及完成寄存器。
可在配置读取或写入事务被传输至配置事务记录时设定地址寄存器。地址寄存器可包含识别其是入站配置事务的目标的配置寄存器所需的信息。在一些情形中,地址寄存器可在由仿真模块336读取时被清除。作为示例,地址寄存器可包括信息,诸如指示地址寄存器是否有效的有效指示符、配置类型(例如,类型0或类型1)、目标寄存器偏移、指示事务是读取访问还是写入访问的读取/写入指示符、指示哪个物理或虚拟功能是配置访问的目标的装置功能字段以及目标总线编号。在一些实施方案中,设定有效指示符可触发对仿真模块的中断或低延时通知以请求仿真模块服务配置访问请求。
数据寄存器可存储与配置事务相关联的数据。对于配置写入事务,数据寄存器可存储将被写入的数据。对于配置读取事务,数据寄存器可存储由仿真模块336自目标配置寄存器读取的数据。
完成寄存器指示配置读取或写入事务的状态。可在仿真模块336完成配置事务时由仿真模块336写入至完成寄存器。被写入至完成寄存器的值可用以格式化发送至配置事务的发起者(例如,根复合体)的完成响应。例如,完成寄存器中的值可用以产生完成指示。完成指示可识别总线编号、装置编号和/或周边装置的功能编号,以及接受并服务配置事务的功能。在一些情形中,当仿真模块336写入至完成寄存器时,待决的配置事务被视为完成且可被释放。在一些情形中,可针对每个入站配置事务仅写入一次完成寄存器。
作为示例,完成寄存器可包括诸如完成状态、目标总线编号、目标装置编号及目标功能编号的信息。完成状态可指示配置事务是否已经成功地完成、配置事务是否无效(例如,目标功能或目标总线编号可不存在)、配置事务是否应重试(例如,周边装置可能不接受配置事务,且配置事务应由事务的发起者再次传输)或配置事务是否中止(例如,周边装置接受但可能不完成配置事务)。目标总线编号可指示将在完成识别符中使用哪个总线编号(例如,返回在地址寄存器中提供的目标总线编号,或返回与目标功能相关联的总线编号)。例如,周边装置可驻留在总线编号1上。入站配置事务可以是配置类型1,且可被引导至总线编号2。在这种情形中,仿真模块可返回总线编号1或2。目标装置编号可指示将在完成识别符中使用哪个目标装置编号(例如,返回在地址寄存器中提供的目标装置编号,或返回与目标功能相关联的目标装置编号)。目标功能编号可指示将在完成识别符中使用哪个目标功能编号(例如,返回在地址寄存器中提供的目标功能编号,或返回端口功能编号)。
除了灵活性和可配置性外,使用仿真配置技术的周边装置也可提供增强的安全性,其对不被仿真的周边装置可能是不可得的。
例如,周边装置可经受拒绝服务攻击。在这样的攻击中,恶意虚拟机可用尝试导致装置硬件和/或软件失败的配置事务淹没周边装置。然而,具有仿真模块的周边装置可能够追踪由虚拟机配置访问的速率(例如,通过监视事务记录)。仿真模块可因此检测由虚拟机访问的异常增加,且可拒绝来自该虚拟机的任何进一步访问。
作为另一示例,虚拟机可访问未经初始化或不存在的功能。一般周边装置在这样的情形中可挂断。然而,仿真模块可捕获这样的访问,并通过仿真用于未经初始化或不存在的功能的配置寄存器或辨识该访问是不存在的功能而适当地做出响应。仿真模块可因此防止周边装置挂起。
作为又一示例,虚拟机可在不适当时间发起对功能的重置。然而,仿真模块可捕获并记录这种基于软件的重置。仿真模块可随后在适当时间(例如,在允许完成所有待决事务之后)处理该重置。或者,仿真模块可简单地阻挡不适当重置。
作为最后示例,虚拟机可尝试无效或不合时宜配置改变。例如,虚拟机可尝试改变总线链路的速度或宽度。然而,仿真模块可捕获所有配置访问(包括这些不适当配置改变),且可拒绝这些无效或不合时宜配置改变访问。
III.配置事务进程
图4示出服务配置读取事务的周边装置400的示例。图4的周边装置400可灵活地仿真其它周边装置和/或多个装置功能。周边装置400可包括总线接口核心410、配置事务记录单元408、原生配置空间412、仿真模块430以及存储器440。
总线接口核心410可包括用于与将周边装置400连接至计算系统的总线通信的功能性。总线接口核心410可包括至总线的物理连接,且可提供用以管理至总线的电连接、用以将传入事务解码且将传出事务编码和/或用以管理传入及传出事务中的错误的硬件和/或软件。
配置事务记录单元408可追踪传入配置事务。配置事务记录单元408可维持一些或所有传入配置读取及写入事务的记录。该记录可采取列表或表或列表和/或表的组合的形式。在一些实施中,配置事务记录单元408可为传入配置事务指派优先级,使得一些事务可早于其它被服务。在这样的实施中,配置事务记录单元408也可维持一致性,即,确保读取及写入以适当次序发生。例如,当在针对寄存器的写入事务之后接收到相同寄存器的读取事务时,写入事务必须首先发生。在其它实施中,配置记录408将传入事务维持于其被接收的次序中。
原生配置空间412可包括没有正在被周边装置400仿真的原生配置寄存器。原生配置寄存器通常具有物理地址,且因此可占据一个或多个地址空间。
仿真模块430可使用被调适以处理配置事务的一个或多个处理器、一个或多个处理器核心、处理器集群、可编程门阵列或控制逻辑电路而实施。仿真模块430可执行软件代码,诸如操作系统和/或仿真软件,如上文所描述。在一些实施方案中,仿真软件的功能性可实施于硬件(例如,控制逻辑电路)中。仿真模块430可服务一些或所有传入配置读取及写入事务,包括目标为原生配置空间412的事务及目标为仿真配置空间442的事务两者。
存储器440提供对可由仿真模块430操作的数据的存储。存储器440可存储仿真配置空间442。仿真配置空间442可包括对针对正被周边装置400仿真的一个或多个周边装置所定义的一些或所有配置寄存器的表示。在一些实施中,仿真配置空间442可主要包括实现正被仿真的周边装置的操作的配置寄存器。仿真配置空间442可以文本文件、源代码、目标代码、脚本的形式或某一其它格式被存储。在一些实施方案中,仿真配置空间442可被加密。在一些实施中,存储器440可包括一个以上仿真配置空间。例如,周边装置可正仿真多个其它周边装置和/或多个功能。在这样的情形中,存储器440可包括用于正被仿真的每个周边装置和/或用于正被仿真的每个功能的仿真配置空间。
图4的示例示出在接收到配置读取事务时可由周边装置400执行的步骤。在步骤452处,自总线(例如,自根复合体或主机)接收配置读取事务。总线接口核心410可接收配置事务,且确定其应接受事务。总线接口核心410可检查(例如)事务中的目标总线识别符、装置识别符、功能识别符和/或地址以做出此确定。周边装置400可正仿真一个以上周边装置和/或一个以上功能。因而,总线接口核心410可接受针对正被仿真的任何数量的周边装置的事务。
在步骤454处,总线接口核心410可将配置读取事务发送至配置事务记录单元408。配置事务记录单元408可将读取事务添加至其事务记录。在一些实施方案中,一旦读取事务已经记录,总线接口核心410便可转向其它操作,且不需等待读取事务完成。
在步骤456处,配置事务记录单元408可将中断发送至仿真模块430。仿真模块430可通过调用仿真进程而响应于中断。仿真进程可自配置事务记录单元408检索配置事务,并服务该配置事务。在一些实施方案中,仿真模块430可每当其准备好服务配置事务时或根据中断例程服务配置事务。在一些实施方案中,仿真模块430可包括用于服务配置事务的专用资源。例如,仿真模块430可具有被指定用于服务配置事务的处理器核心或执行线程。另外或可替代,每当在步骤454处将事务发送至配置事务记录时,配置事务记录单元408可将中断发送至仿真模块430。该中断向仿真模块430通知其应行动。在一些情形中,仿真模块430也可需要遵守由总线指示的时序要求。例如,一些总线协议可期望周边装置将在特定时间内响应于读取事务。
可在步骤456处以与在步骤452处总线接口核心410接收配置事务相同的次序取得或接收配置事务。或者,配置事务记录单元408可重新设定所记录事务的优先级,使得首先服务较高优先级事务。
在接收或取得配置读取事务后,仿真模块430可确定事务是被引导至仿真配置空间442还是原生配置空间412。该确定可基于可位于仿真配置空间或原生配置空间内的将被读取的配置寄存器的地址。在一些情形中,当读取事务被引导至仿真配置空间442时,仿真模块430可在步骤458a处自存储器440中的仿真配置空间442读取表示目标配置寄存器的内容的值。在其它情形中,仿真模块430可确定目标配置寄存器没有正在被仿真且是原生配置空间412的部分。在这样的情形中,仿真模块430可在步骤458b处自原生配置空间412读取配置寄存器的内容。
接着,在步骤460处,仿真模块430可产生对配置读取的响应。在一些实施中,仿真模块430可将所检索数据发送至总线接口核心410。在这样的实施中,总线接口核心410可打包读取数据以用于在总线上传输,并传输打包的数据。在其它实施中,仿真模块430可在将数据提供至总线接口核心410之前打包所读取的数据。
在步骤462处,仿真模块430可在步骤462之后更新配置事务记录单元408以指示进行了配置读取事务。在一些实施中,仿真模块430可在服务读取事务之后自配置事务记录单元408移除读取事务。
周边装置400可以是实施PCI的周边装置。当周边装置400是PCI周边装置时,可在下文根据一些实施方案描述上述步骤。
在步骤452处,可(例如)自根复合体接收配置读取事务层数据包(TLP)。可在PCIe总线上接收配置读取TLP,且可由PCIe核心接收该配置读取TLP。PCIe核心可解包TLP并将配置请求简化为更易于处理的格式。
在步骤454处,PCIe核心可将配置读取请求传送至配置事务记录。例如,PCIe核心可用配置读取请求信息来更新配置事务记录中的地址寄存器。配置事务记录可将配置读取请求添加至其待决配置事务的记录中。在将配置读取请求传送至配置事务记录之后,PCIe核心可自由执行其它操作。
在步骤456处,配置事务记录可将中断发送至仿真模块。在接收到中断后,仿真模块可调用仿真进程,且配置事务记录可等待响应。
在步骤458a处,仿真模块可寻找由配置读取事务设为目标的仿真配置寄存器。仿真模块可访问存储器中的仿真配置空间,且定位其中的所请求的仿真配置寄存器。在定位所请求的仿真配置寄存器后,仿真模块可读取仿真配置寄存器的值。在一些情形中,服务对仿真配置寄存器的读取请求可需要来自周边装置的硬件的额外信息。在这些情形中,仿真模块可读取额外配置寄存器,诸如物理端口配置寄存器或原生配置空间中的寄存器。
在步骤460处,仿真模块可将自仿真配置寄存器读取的值传送至配置事务记录单元,且将完成状态更新为配置事务记录单元中的成功完成。在步骤462处,仿真模块或配置事务记录单元将所读取值传达至PCIe装置核心,且PCIe装置核心随后打包读取值并将其传输至根复合体。例如,PCIe装置核心可将配置完成TLP传输至根复合体。在一些实施方案中,如果无法完成配置读取请求,则仿真模块可相应地更新完成状态。
图5示出服务配置写入请求的周边装置500的示例。周边装置500可灵活地仿真不同周边装置和/或多个装置功能。周边装置500可包括总线接口核心510、配置事务记录单元508、原生配置空间512、仿真模块530以及存储器540。总线接口核心510可包括用于与将周边装置连接至计算系统的总线通信的功能性。配置事务记录单元508可追踪传入配置事务。配置事务记录单元508可维持一些或所有传入配置读取及写入事务的记录。原生配置空间512可包括不正被周边装置500仿真的配置寄存器。仿真模块530可使用被调适以处理配置事务的一个或多个处理器、一个或多个处理器核心、处理器集群、可编程门阵列或控制逻辑电路而实施。仿真模块530可执行软件代码,诸如操作系统和/或仿真模块。在一些实施方案中,仿真软件的功能性可实施于硬件(例如,控制逻辑电路)中。存储器540提供对可由仿真模块530操作的数据的存储。存储器540可包括一个或多个仿真配置空间。仿真配置空间542可包括针对将被仿真的周边装置和/或功能所定义的一些或所有配置寄存器的表示。在一些实施方案中,存储器540可包括用于将被仿真的每个周边装置和/或功能的仿真配置空间542。
图5中所示的示例示出在接收到配置写入事务时可由周边装置500执行的步骤。在步骤552处,自总线(例如,自根复合体或主机)接收配置写入请求。总线接口核心510可接收配置写入事务,并确定其应接受事务。周边装置500可正仿真一个以上周边装置和/或功能。因而,装置核心510可接受针对正被仿真的任何数量的周边装置的事务。
在步骤554处,总线接口核心510可将配置写入事务发送至配置事务记录508。配置事务记录508可将配置写入事务添加至其事务记录。一旦配置写入事务已经被记录,总线接口核心510便可转向其它操作,且不需要等待写入事务完成。
在步骤556处,配置事务记录508可将中断发送至仿真模块530。仿真模块530可通过调用仿真模块而响应于中断。仿真模块530可自配置事务记录508检索配置事务,并服务该配置事务。仿真模块530可每当其准备好服务配置事务时服务配置事务。在一些实施方案中,仿真模块530可包括用于服务配置事务的专用资源。在一些情形中,每当在步骤554处将配置事务添加至配置事务记录单元508时,仿真模块530可接收中断。
在接收或取得配置写入事务后,仿真模块530可确定事务是被引导至仿真配置空间542还是原生配置空间512。在一些情形中,当配置写入事务被引导至仿真配置空间542时,进程集群530可在步骤558a处用写入数据来更新仿真配置空间542中的目标配置寄存器的表示。当写入事务被引导至原生配置空间512时,仿真模块530可在步骤558b处以写入数据更新原生配置空间512中的配置寄存器。
在步骤562处,仿真模块530可更新配置事务记录单元508以指示进行了配置写入事务。在一些实施中,仿真模块530可在服务写入事务之后自配置事务记录单元508移除写入事务。
在一些实施中,仿真模块530可产生对写入事务的响应,以指示写入事务已经成功地完成。在这些实施中,仿真模块530可指令总线接口核心510产生响应。或者,仿真模块530可本身产生响应,且将响应传输至总线。
周边装置500可以是实施PCI的周边装置。当周边装置500是PCI周边装置时,可在下文根据一些实施方案描述上述步骤。
在步骤552处,可自(例如)根复合体接收配置写入TLP。可在PCIe总线上接收配置写入TLP,且可由PCIe核心接收该配置写入TLP。PCIe核心可解包TLP并将配置请求简化为更易于处理的格式。
在步骤554处,PCIe核心可(例如)通过用配置写入请求信息来更新地址寄存器而将配置写入请求传送至配置事务记录。配置事务记录可将配置写入请求添加至其待决配置事务的记录。在将配置写入请求传送至配置事务记录单元之后,PCIe核心可自由执行其它操作。
在步骤556处,配置事务记录单元可将中断发送至仿真模块。在接收到中断后,仿真模块可调用仿真模块,且配置事务记录单元可等待响应。
在步骤558a处,仿真模块可寻找将由配置写入事务写入的仿真配置寄存器。仿真模块可访问存储器中的仿真配置空间,且定位其中的所请求的仿真配置寄存器。在定位目标仿真配置寄存器后,仿真模块可用写入数据来更新仿真配置空间中的仿真配置寄存器。在一些情形中,写入至仿真配置寄存器的值可需要对周边装置500的硬件的更新。在这些情形中,仿真模块可写入额外配置寄存器,诸如物理端口配置寄存器或原生配置空间中的寄存器。
在步骤562处,仿真模块可更新配置事务记录中的完成状态。该完成状态可指示配置写入事务已经成功地完成。配置事务记录可将完成状态传达至PCIe装置核心。PCIe装置核心可向根复合体指示成功完成。例如,PCIe装置核心可将配置完成TLP传输至根复合体。在一些实施方案中,如果无法完成配置写入请求,则仿真模块可相应地更新完成状态。
图4至图5示出具有仿真配置空间的周边装置可如何服务配置读取及写入事务的示例。仿真配置空间可被修改和/或替换,由此修改和/或替换正被仿真的周边装置和/或功能。此外,周边装置的仿真配置空间可包括多个仿真配置,使得周边装置可仿真多个装置和/或功能。仿真技术可因此实现具有灵活且可调适配置空间的周边装置的构造,且在一些情形中,减少或消除对周边装置的固定且不可改变配置定义。
IV.SR-IOV
图6示出具有单根输入/输出虚拟化(SR-IOV)能力的周边装置600的示例。SR-IOV是允许物理资源(例如,单个网络接口控制器)呈现为多个资源(例如,六十四网络接口控制器)的扩展能力。因此,提供特定功能性的周边装置可呈现为提供该功能性的多个装置。SR-IOV能力周边装置的功能可被分类为物理功能(PF)与虚拟功能(VF)。物理功能是可被发现、管理及操控的装置的完整特征功能。物理功能具有可用以配置或控制周边装置的配置资源。物理功能包括非虚拟化装置将具有的相同配置地址空间及存储器地址空间。物理功能可具有与物理功能相关联的数个虚拟功能。虚拟功能类似于物理功能,但其是缺乏配置资源且通常受其基本物理功能的配置控制的轻量功能。物理功能和/或虚拟功能中的每个都可被指派给在计算系统上运行的执行(诸如,例如,虚拟机)的各自线程。
图6中所示的示例性SR-IOV能力装置600可包括PCIe端口602、内部路由604及606a至606m、一个或多个物理功能610a至610m以及每物理功能610a至610m一个或多个虚拟功能(例如,620a至620c、621a至621c)。PCIe端口602可提供至PCIe总线的物理连接。内部路由604及606a至606m可将总线事务引导至适当物理功能610a至610m,以及虚拟功能。每个物理功能610a至610m可通过内部路由604连接至PCIe端口602。每个虚拟功能可通过第一层级的内部路由606a至606m且然后通过第二层级的内部路由604而连接至PCIe端口602。内部路由604可提供每个物理功能610a至610m与PCIe端口602或任何虚拟功能6120a至6120f与PCIe端口602之间的点对点连接性。
每个物理功能610a至610m可与物理资源相关联以实施其各自物理功能。例如,PF0 610a可与物理资源618a相关联,且PF m 610m可与物理资源618m相关联。虚拟功能中的每个也可与各自物理资源相关联以实施虚拟功能的功能性。每个物理功能610a至610m也可包括各自配置资源612a至612m以及各自地址转译高速缓存(ATC)614a至614m。配置资源612a至612m中的每个都可包括(例如)4KB配置地址空间。地址转译高速缓存614a至614m中的每个都可存储新近使用的地址转译。物理功能610a至610m可在对计算系统可见的地址空间不同于所附接周边装置的物理地址空间时提供地址转译。例如,访问位置的虚拟机可使用被转译为物理地址的虚拟地址。
在一些实施方案中,可在周边装置的仿真配置空间中仿真与SR-IOV相关联的配置寄存器。每个物理功能可包括特定数量的基地址寄存器(BAR)。基地址寄存器是指定物理功能的I/O的地址范围和/或存储器地址范围的配置寄存器。存储于基地址寄存器中的值可根据需要进行修改,以改变指派给物理功能的地址空间。基地址寄存器可包括在仿真配置空间中。仿真配置空间可包括(例如)对以下的表示:与物理功能相关联的六个BAR、用于SR-IOV能力的六个BAR以及存储扩展只读存储器(ROM)的地址(在其中周边装置并入装置ROM的情形中)的一个BAR。在一些实施中,物理功能的仿真配置空间的基地址寄存器可具有默认值。
物理功能仿真配置空间也可包括SR-IOV能力寄存器的表示。在一些情形中,SR-IOV能力寄存器可处于可自物理功能仿真配置空间中的能力清单读取的偏移。可替代或另外,仿真模块可维持该偏移的本地副本,使得仿真模块可访问SR-IOV能力寄存器而无需首先读取能力清单。
在一些实施中,对SR-IOV能力寄存器的设定(例如,配置写入)的改变可需要停用虚拟功能。例如,对虚拟功能的数目和/或用于虚拟功能的基地址寄存器的改变可需要停用虚拟功能。在一些情形中,停用虚拟功能以及重新启用虚拟功能可导致重置虚拟功能。当SR-IOV能力寄存器中的设定改变时,物理功能可重置所有作用的虚拟功能。物理功能可进一步读取修改的SR-IOV能力寄存器,且确定哪个设定已经改变。物理功能然后可(如果需要)基于SR-IOV能力寄存器中的修改设定而更新虚拟功能的配置。
在一些实施中,用于物理功能及其相关联虚拟功能的仿真配置空间可以是被组织至处于第一地址偏移的物理功能配置空间、处于第二地址偏移的虚拟功能配置空间以及处于第三地址偏移的额外配置映像的配置映像的部分。
用于SR-IOV的仿真配置空间可包括至少三个组分:用于每个物理功能的SR-IOV能力配置空间;用于维持每个虚拟功能的状态及能力的配置空间;以及用于SR-IOV基地址寄存器(BAR)的配置空间。在一些实施中,可通过捕捉并处理到达PCIe核心的配置空间访问来处理对物理功能仿真配置及虚拟功能仿真配置的访问。在一些实施中,可(例如)通过在原生配置空间中保留至少一对基地址寄存器以使用原生配置空间中的基地址寄存器而实施SR-IOV基地址寄存器。
在一些实施方案中,利用对应物理功能及相关联虚拟功能而将对配置空间中的特定位(诸如,功能层级重置(FLR)、总线主控启用(BME)、存储器空间启用(MSE)等)的改变传达至应用。例如,应用可接收并确认FLR请求,且仿真模块可推迟对针对功能待决的FLR的任何事务做出响应直至应用确认FLR完成为止。应用可在执行任何命令之前检查每个功能(FLR、BME、MSE等)的状态。应用可向仿真模块通知是否存在针对每个功能的待决事务,且检查被配置至配置空间的各个设定(诸如,BAR、虚拟功能数目等)。
在一些实施方案中,物理功能及相关联虚拟功能的状态(也可称为功能性质)可维持于仿真配置空间中且被传达至应用或仿真模块。用于追踪每个功能的状态的存储器空间的大小可以是(例如)每物理或虚拟功能4字节整数。第一整数可提供物理功能的状态,且第二整数可提供第一虚拟功能的状态,等等。
每个功能的状态可包括不需要即时应用响应,但是应用应在I/O处理期间检测的性质的信息。例如,如果功能是待决FLR,则应丢弃针对其接收的任何命令。作为另一示例,如果BME未设定,则应用应避免公布针对该功能的DMA事务。在一些实施方案中,每个功能的状态可提供诸如以下的信息:是否启用该功能(可总是启用物理功能)、该功能是否具有FLR待决、是否启用MSE(针对物理功能)、是否启用BME以及是否启用MSI-X。
下文提供进行功能层级重置的示例。功能层级重置提供用于重置特定物理功能及其相关联虚拟功能的机构。一般而言,重置物理功能可触发对与物理功能相关联的虚拟功能的重置。功能层级重置是渐进机构,且允许虚拟及物理功能完成待决操作并进入安静或闲置状态。一旦功能处于静止状态中,便可对其进行重置。
仿真模块可接收识别物理功能以重置的功能层级重置请求。相关联虚拟功能可首先进入静止状态。仿真模块可指示正在通过设定虚拟功能的功能性质中的FLR位来重置虚拟功能。仿真模块可接着将FLR消息发送至应用队列,且将以“不被支持请求”响应而对虚拟功能的任何进一步请求做出响应直至应用确认FLR为止。一旦虚拟功能已经完成任何待决事务,应用便将确认功能层级重置请求。应用然后可将消息发送至仿真模块的队列。当仿真模块接收配置访问请求时,仿真模块轮询队列且接收FLR确认。仿真模块然后可响应于对虚拟功能的进一步请求。可更新虚拟功能的状态或性质。例如,可停用MSI-X及BME。
对于物理功能,在接收功能层级重置后,仿真模块可经由MSE及BME状态位停用存储器空间及总线主控器。此外,仿真模块可将所有仿真及原生配置寄存器还原为默认值。仿真模块可进一步将FLR消息发送至应用队列,且将以“不被支持请求”响应对物理功能的任何进一步请求做出响应直至应用以其它方式指令为止。应用可重置其物理功能数据结构及待决事务队列。在完成这些操作后,应用可通过将消息发送至仿真模块的队列来确认功能层级重置请求。当仿真模块接收配置访问请求时,仿真模块轮询队列且接收FLR确认。仿真模块然后可响应于对物理功能的进一步请求。可停用与物理功能相关联的所有虚拟功能直至由根复合体重新启用为止。
以下示例说明由周边装置对SR-IOV能力的仿真。周边装置可包括(例如)被指定为PF0的一个物理功能。用于PF0的仿真配置包括SR-IOV扩展能力寄存器。此外,PF0可由周边装置用来发现、配置及管理与PF0相关联的虚拟功能。一般而言,仿真SR-IOV寄存器可以与由SR-IOV协议定义的相同的默认值上传至周边装置。在一些实施中,SR-IOV寄存器可以其它值上传。例如,被指定为PF0的虚拟功能的总数目可设定为4K,对仿真SR-IOV寄存器内的第一虚拟功能的默认偏移可设定为257,且默认虚拟功能步幅可设定为1。
在该示例中,虚拟功能可包括MSI-X能力。此外,物理功能及虚拟功能两者可包括高级路由识别(ARI)能力。ARI提供允许周边装置支持八个以上功能的机构。支持ARI的周边装置可将PCI配置标头中的装置ID字段解译为功能编号的部分。这为周边装置提供用以支持高达256个功能的能力。
在一些实施中,SR-IOV控制寄存器指示是否启用ARI能力阶层。启用ARI能力阶层允许(例如)虚拟功能使用功能数目为8至255。ARI能力阶层设定也指示已经在根复合体中或在紧靠周边装置上游的交换机中启用ARI。根复合体可设定ARI能力阶层设定以匹配根复合体中或交换机中的ARI转送启用设定。周边装置可使用ARI能力阶层设定的配置来确定第一虚拟功能的偏移。例如,对于ARI及非ARI模式两者,对第一虚拟功能的默认偏移可设定为257。
一般而言,在由根复合体列举包括于计算系统中的PCI阶层之前,不指派总线及装置编号。在列举进程期间,仿真模块可制止对不以PF0为目标的配置访问做出响应。这是因为周边装置可不期望给根复合体留下周边装置包括一个以上物理功能的印象。在计算系统中的功能及装置已经被根复合体映射之后,根复合体可启用ARI能力阶层设定,以及设定SR-IOV配置寄存器中的虚拟功能启用设定。
在一些情形中,仿真模块可捕获启用虚拟功能的事务。在这些情形中,一旦虚拟功能已经启用,仿真模块便可能够接受目标为总线编号、装置编号及除指派给PF0外的功能编号的配置事务。
在一些实施中,周边装置可仿真位于比针对物理功能的总线编号高的总线编号上的虚拟功能。在这些实施中,对虚拟功能的配置访问可以是配置类型1,这意指配置访问应桥接至较高编号总线。表3提供可如何处理该示例中的各个配置事务的示例。配置事务可以是配置类型0(被引导至本地总线)或配置类型1(被引导至较高层级总线,且应经桥接以便到达该总线)。目标总线可以是示例性周边装置位于其上者,或可以是较高总线编号。给定配置类型及目标总线,该表指示配置事务是否可以物理功能和/或任何相关联虚拟功能为目标。最后,该表指示周边装置可如何响应于这些配置事务。
表3:示例性配置事务和响应。
在配置事务以不指派给物理功能或虚拟功能中的任何的总线编号为目标的情形中,周边装置可以不被支持请求做出响应。
表4提供针对不同数目的虚拟功能的总线指派的示例。
表4:示例性总线分配。
可通过读取物理及虚拟功能的仿真配置获知总线指派以及哪些物理及虚拟功能是可用的。当接收到针对不存在的功能的配置事务时,仿真模块可以不被支持请求响应做出响应。
表5提供基于是否启用虚拟功能以及是否启用ARI能力阶层的响应的示例。
表5:各种配置组合的示例性响应。
V.方法
图7至图9示出用于仿真周边装置的配置空间的方法的实施方案。这些方法可由上文所描述的系统实施。
图7示出用于服务配置访问请求的进程700。可由包括仿真配置空间的周边装置接收配置访问请求。仿真配置空间可允许周边装置仿真一个或多个不同周边装置和/或功能。配置访问请求可以是用以读取配置寄存器和/或写入配置寄存器的请求。
在步骤702处,周边装置可接收配置访问请求。可通过总线接收配置访问请求。配置访问请求可包括识别配置访问请求的目标的信息。例如,配置访问请求可包括总线识别符、装置识别符、功能识别符和/或地址。该识别信息可指示周边装置是否应接受并服务配置访问请求。在一些实施中,周边装置可仿真多个周边装置和/或功能。在这样的实施中,周边装置可接受针对一个以上周边装置和/或功能的配置访问请求。
在步骤706处,周边装置可确定配置访问请求是针对除周边装置的原生配置空间外的配置空间。配置访问请求可以是针对处于正被仿真的地址空间中的配置寄存器。可以不同于由进程700所示出的方式处理针对原生配置空间的配置访问请求。例如,可由周边装置中的原生硬件(诸如,周边装置的总线接口核心)处理对原生配置的配置访问请求。
在步骤710处,周边装置可自仿真配置空间检索仿真配置。仿真配置可包括对一个或多个配置寄存器的表示。在一些实施中,仿真配置空间包括仿真配置标头和/或用于一个以上功能的寄存器(其可称为仿真配置)。在这样的实施中,周边装置可确定针对配置访问请求的目标功能,且检索适当仿真配置。
在步骤712处,周边装置可使用仿真配置服务配置访问请求。服务配置访问请求可包括识别配置访问请求正请求对其访问的寄存器。在一些实施中,服务配置访问请求可包括将仿真配置提供给配置访问请求的来源。在这样的实施中,周边装置可自仿真配置读取对所识别配置寄存器的表示。在其它实施中,服务配置访问请求可包括更新仿真配置。在这样的实施中,周边装置可写入或更新对仿真配置中的所识别配置寄存器的表示。
图8示出用于服务用以读取配置寄存器的配置访问请求的进程800的示例。使用PCI作为可由周边装置实施的总线协议的示例来示出进程800。周边装置可正在实施PCI仿真配置空间。PCI仿真配置空间可允许周边装置仿真一个或多个PCI装置和/或功能。在一些实施方案中,进程800可用其它总线协议实施(诸如,在周边装置正在使用经定制以用于不同总线协议的仿真配置空间的情形中)。
在步骤802处,周边装置的PCI核心可自根复合体接收PCI配置访问请求。配置访问请求可包括识别配置访问请求的目标的信息。识别信息可指示周边装置是否应接受并服务配置访问请求。周边装置可仿真多个周边装置和/或功能。在这样的实施中,周边装置可接受针对一个以上周边装置和/或功能的配置访问请求。
在步骤804处,周边装置的PCI核心可将PCI配置访问请求发送至周边装置中的配置管理模块。配置管理模块可维持配置访问请求的记录。该记录可保持对已经由周边装置接收的配置访问请求的追踪。
在步骤806处,配置管理模块可确定PCI配置访问请求以除原生配置空间外的配置空间为目标。原生配置空间可包括可不必和/或不期望仿真的用于基本功能性(诸如,总线速度选择)的配置寄存器。可仿真除原生配置空间外的配置空间。可使用仿真配置标头表示仿真配置空间。
在步骤808处,周边装置的配置管理模块可将低延时通知(例如,中断请求)发送至周边装置中的仿真模块(其可实施为(例如)处理器、控制逻辑电路等)。中断可向周边装置中的仿真模块通知已经接收了配置访问请求,和/或仿真模块应服务配置访问请求。
在步骤810处,周边装置的仿真模块可响应于中断请求(例如,通过执行配置空间仿真软件以处理配置访问请求)。仿真模块可自仿真配置空间检索仿真配置。在一些实施中,周边装置可正在仿真一个或多个周边装置和/或功能。在这样的实施中,配置访问请求可包括对目标仿真周边装置和/或功能的识别。此外,配置空间仿真软件可检索用于目标仿真周边装置和/或功能的配置。在一些实施中,将仿真配置空间存储于DRAM中,或可内部地仿真该仿真配置空间。永久性存储器也可用以存储仿真配置空间,使得仿真配置空间在停电期间保留于存储器中。在一些实施方案中,存储于永久性存储器中的仿真配置空间可在启动时加载至DRAM或本地存储器以提供对仿真配置空间的较快速访问。在一些实施中,在隔离环境中执行配置空间仿真软件。在隔离环境中,配置空间仿真软件可能够安全地执行,而无来自其它软件的干涉或干扰。
在步骤812处,可使用所检索仿真配置服务PCI配置访问请求。在一些实施中,配置访问请求可以是配置读取请求。在这样的实施中,进程800可包括步骤814,在该步骤中,服务配置访问请求可包括将所检索仿真配置发送至PCI根复合体。在一些实施方案中,如果正被读取的仿真配置包括在被读取后改变其状态的寄存器类型(例如,读取后即清除寄存器,或具有读取后即清除位),则进程800也可修改作为服务配置访问请求的部分的仿真配置的内容。
图9示出用于服务用以写入配置寄存器的配置访问请求的进程900的示例。使用PCI作为可由周边装置实施的总线协议的示例来示出进程900。周边装置可正在实施PCI仿真系统。PCI仿真系统可允许周边装置仿真一个或多个PCI装置和/或功能。进程900可用其它总线协议实施(诸如,在周边装置正在使用其使用不同总线协议的仿真系统的情形中)。
在步骤902处,周边装置的PCI核心可自根复合体接收PCI配置访问请求。配置访问请求可包括识别配置访问请求的目标的信息。识别信息可指示周边装置是否应接受并服务配置访问请求。周边装置可仿真多个周边装置和/或功能。在这样的实施中,周边装置可接受针对一个以上周边装置和/或功能的配置访问请求。
在步骤904处,周边装置的PCI核心可将PCI配置访问请求发送至周边装置中的配置管理模块。配置管理模块可维持配置访问请求的记录。该记录可保持对已经由周边装置接收的配置访问请求的追踪。
在步骤906处,配置管理模块可确定PCI配置访问请求以除原生配置空间外的配置空间为目标。原生配置空间可包括可不必和/或不期望仿真的用于基本功能性(诸如,总线速度选择)的配置寄存器。可仿真除原生配置空间外的配置空间。可使用仿真配置标头表示仿真配置空间。
在步骤908处,周边装置的配置管理模块可将低延时通知(例如,中断请求)发送至周边装置中的仿真模块。中断可向周边装置中的仿真模块通知已经接收了配置访问请求,和/或仿真模块应服务配置访问请求。
在步骤910处,周边装置的仿真模块可响应于中断请求(例如,执行配置空间仿真软件)。仿真模块可自仿真配置空间检索仿真配置。在一些实施中,周边装置可正在仿真一个或多个周边装置和/或功能。在这样的实施中,配置访问请求可包括对目标仿真周边装置和/或功能的识别。此外,配置空间仿真软件可检索用于目标仿真周边装置和/或功能的配置。在一些实施中,将仿真配置空间存储于DRAM中,或可内部地仿真该仿真配置空间。永久性存储器也可用以存储仿真配置空间,使得仿真配置空间在停电期间保留于存储器中。在一些实施方案中,存储于永久性存储器中的仿真配置空间可在启动时加载至DRAM或本地存储器以提供对仿真配置空间的较快速访问。在一些实施中,在隔离环境中执行配置空间仿真软件。在隔离环境中,在来自其它软件的干涉或干扰内,配置空间仿真软件可能够安全地执行。
在步骤912处,可使用仿真配置标头服务PCI配置访问请求。在一些实施中,配置访问请求可以是配置写入请求。在这样的实施中,进程900可包括步骤914,在该步骤中,服务配置访问请求可包括更新仿真配置。
图7至图9中所示的一些或所有进程(或本文中描述的任何其它进程,或变化,和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下进行,且可实施为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)由硬件实施或其组合实施。该代码可(例如)以包括可由一个或多个处理器执行的多个指令的计算机程序形式存储于计算机可读存储介质上。计算机可读存储介质可以是非暂时性的。
一般而言,可部分地或全部地以硬件或以硬件与软件的组合的形式实施本文中所公开的部件、系统及周边器件中的任何。硬件可包括电子电路,诸如片上系统(SoC)、专用集成电路(ASIC)、处理器或现场可编程门阵列(FPGA)。
VI.计算机系统
图10示出根据至少一个示例性实施方案的本文中所描述的包括经由一个或多个网络连接的一个或多个服务提供商计算机和/或用户装置的特征及系统的示例性架构。图1至图14中讨论的装置可使用图10中所描述的计算装置的一个或多个部件,或可表示图10中所描述的一个或多个计算装置。在所示的架构1000中,一个或多个用户1002可使用用户计算装置1004(1)至1004(N)经由一个或多个网络1008访问应用1006(例如,web浏览器或移动装置应用)。在一些方面,应用1006可由计算资源服务或服务提供商托管、管理和/或提供。一个或多个服务提供商计算机1010可提供被配置以在用户1002可与其交互的用户装置1004上运行的原生应用。在一些示例中,服务提供商计算机1010可提供诸如(但不限于)以下计算资源:客户端实体、低延时数据存储、耐久性数据存储、数据访问、管理、虚拟化、基于云的软件解决方案、电子内容性能管理等。服务提供商计算机1010也可以是可操作的以向用户1002提供web托管、计算机应用开发和/或实施平台、前述的组合或类似者。在一些示例中,服务提供商计算机1010可与一个或多个第三方计算机1012通信。
在一些示例中,网络1008可包括很多不同类型的网络(诸如,电缆网络、因特网、无钱网络、蜂窝网络以及其它私人和/或公共网络)的任何一者或组合。虽然所示的示例表示用户1002经由网络1008访问应用1006,但所描述的技术可同样地适用于用户1002经由用户装置1004通过陆线电话、经由信息站或以任何其它方式与服务提供商计算机1010交互的实例中。也应注意,所描述的技术可适用于其它客户端/服务器布置(例如,机顶盒等)中,以及非客户端/服务器配置(例如,本地存储的应用等)中。
如上文所简要描述,应用1006可允许用户1002与服务提供商计算机1010交互(诸如)以访问web内容(例如,web页、音乐、视频等)。可以服务器群集或作为服务器场布置的服务提供商计算机1010可托管应用1006和/或基于云的软件服务。其它服务器架构也可用以托管应用1006。应用1006可能够处理来自诸多用户1002的请求并响应地服务各种项目web页。应用1006可提供支持用户交互的任何类型的网站,包括社交网络网站、在线零售商、信息站、博客站、搜索引擎站、新闻及娱乐站等等。如上文所讨论,所描述的技术可在应用1006外部(诸如)由在用户装置1004上运行的其它应用而类似地实施。
用户装置1004可以是任何类型的计算装置,诸如(但不限于)移动电话、智能电话、个人数字助理(PDA)、膝上型计算机、桌面计算机、瘦客户端装置、平板PC、电子书(e-book)阅读器等。在一些示例中,用户装置1004可经由网络1008或经由其它网络连接与服务提供商计算机1010通信。另外,用户装置1004可以是由服务提供商计算机1010管理、控制或以其它方式是其部分的分布式系统的部分(例如,与服务提供商计算机1010整合的控制台装置)。
在一个说明性配置中,用户装置1004可包括至少一个存储器1014及一个或多个处理单元(或处理器1016)。处理器1016可视情况以硬件、计算机可执行指令、固件或其组合而实施。处理器1016的计算机可执行指令或固件实施可包括以任何适合程序化语言写入以进行所描述的各个功能的计算机可执行或机器可执行指令。用户装置1004也可包括用于提供和/或记录与用户装置1004相关联的地理位置信息的地理位置装置(例如,全球定位系统(GPS)装置或类似装置)。
存储器1014可存储可加载且可在处理器1016上执行的程序指令,以及在执行这些程序期间产生的数据。根据用户装置1004的配置及类型,存储器1014可以是易失性的(诸如,随机存取存储器(RAM))和/或非易失性的(诸如,只读存储器(ROM)、闪存等)。用户装置1004也可包括额外可移除存储装置和/或不可移除存储装置,其包括(但不限于)磁性存储装置、光盘和/或磁带存储装置。磁盘驱动器及其相关联计算机可读介质可提供对计算机可读指令、数据结构、程序模块及计算装置的其它数据的非易失性存储。在一些实施中,存储器1014可包括多个不同类型的存储器,诸如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)或ROM。
以更多细节转向存储器1014的内容,存储器1014可包括操作系统及用于实施本文中公开的特征的一个或多个应用程序或服务,包括至少一个用户提供的输入元件或电子服务web页,诸如经由浏览器应用1006或专用应用(例如,智能电话应用、平板计算机应用等)。浏览器应用1006可被配置以接收、存储和/或显示用于与服务提供商计算机1010交互的网站或其它接口。另外,存储器1014可存储访问凭证和/或其它用户信息,诸如(但不限于)用户ID、密码和/或其它用户信息。在一些示例中,用户信息可包括验证帐户访问请求的信息,诸如(但不限于)装置ID、cookie、IP地址、位置或类似者。此外,用户信息可包括对安全问题的用户提供的响应或由用户装置1004获得的地理位置。
在一些方面,服务提供商计算机1010也可以是任何类型的计算装置,诸如(但不限于)移动电话、智能电话、个人数字助理(PDA)、膝上型计算机、台式计算机、服务器计算机、瘦客户端装置、平板PC等。另外,应注意,在一些实施方案中,服务提供商计算机1010由实施于托管计算环境的一个或多个虚拟机执行。托管计算环境可包括一个或多个快速供应且释放的计算资源,该计算资源可包括计算、联网和/或存储装置。托管计算环境也可称为云计算环境。在一些示例中,服务提供商计算机1010可经由网络1008或经由其它网络连接与用户装置1004和/或其它服务提供商通信。服务提供商计算机1010可包括可能以集群、作为服务器场或作为不与彼此相关联的各个服务器布置的一个或多个服务器。这些服务器可被配置以将本文中所描述的关键词分类及分级特征服务实施为整合分布式计算环境的部分。
在一个说明性配置中,服务提供商计算机1010可包括至少一个存储器1018及一个或多个处理单元(或处理器1020)。处理器1020可视情况以硬件、计算机可执行指令、固件或其组合而实施。处理器1020的计算机可执行指令或固件实施可包括以任何适合程序化语言写入以进行所描述的各个功能的计算机可执行或机器可执行指令。
在一些实例中,硬件处理器1020可以是单核心处理器或多核心处理器。多核心处理器可包括相同处理器内的多个处理单元。在一些实施方案中,多核心处理器可共享一些资源,诸如总线以及多个核心之间的第二或第三层级的高速缓存。在一些实例中,单核心或多核心处理器中的每个核心也可包括多个执行逻辑处理器(或线程)。在这样的核心(其支持多个逻辑处理器)中,也可共享数个级的执行管线以及也有较低层级高速缓存。
存储器1018可存储可加载且可在处理器1020上执行的程序指令,以及在执行这些程序期间产生的数据。根据服务提供商计算机1010的配置及类型,存储器1018可以是易失性(诸如,RAM)的和/或非易失性的(诸如,ROM、闪存等)。服务提供商计算机1010或服务器也可包括额外存储装置1022,其可包括可移除存储和/或不可移除存储。额外存储装置1022可包括(但不限于)磁性存储装置、光盘和/或磁带存储装置。磁盘驱动器及其相关联计算机可读介质可提供对计算机可读指令、数据结构、程序模块及计算装置的其它数据的非易失性存储。在一些实施中,存储器1018可包括多种不同类型的存储器,诸如SRAM、DRAM或ROM。
存储器1018、额外存储装置1022(可移除及不可移除两者)全部是计算机可读存储介质的示例。例如,计算机可读存储介质可包括以用于信息(诸如,计算机可读指令、数据结构、程序模块或其它数据)的存储的任何方法或技术实施的易失性或非易失性、可移除或不可移除介质。存储器1018及额外存储装置1022全部是计算机存储介质的示例。可存在于服务提供商计算机1010中的额外类型的计算机存储介质可包括(但不限于)PRAM、SRAM、DRAM、RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、DVD或其它光学存储、磁带盒、磁带、磁盘存储或其它磁性存储装置,或可用以存储所需信息且可由服务提供商计算机1010访问的任何其它介质。上文中的任何的组合也应包括在计算机可读介质的范围内。
或者,计算机可读通信介质可包括计算机可读指令、程序模块或在数据信号(诸如,载波或其它传输)内传输的其它数据。然而,如本文中所使用,计算机可读存储介质不包括计算机可读通信介质。
服务提供商计算机1010也可包含允许服务提供商计算机1010与所存储数据库、另一计算装置或服务器、用户终端和/或网络1008上的其它装置通信的通信连接1024。服务提供商计算机1010也可包括I/O装置1026,诸如键盘、鼠标、笔、语音输入装置、触控输入装置、显示器、扬声器、打印机及类似装置。
存储器1018可包括操作系统1028、一个或多个数据存储区1030和/或用于实施本文中公开的特征的一个或多个应用程序或服务,包括管理缓冲器1032及记录缓冲器1040。本文中所描述的模块可以是软件模块、硬件模块或其适当组合。如果模块是软件模块,则模块可实施于非暂时性计算机可读介质上且由本文中所描述的计算机系统中的任何中的处理器来处理。应注意,所描述的进程及架构可实时地或在任何用户交互之前以异步模式进行。模块可以图10中提议的方式配置,和/或本文中所描述的功能可由存在的一个或多个模块提供,这是因为本文中所描述的单独模块和/或模块功能可遍布于多个模块上。
图11示出根据各个实施方案的用于实施各方面的示例性环境1100的各方面。如应理解,虽然出于阐释目的使用基于Web的环境,但可视情况使用不同环境来实施各个实施方案。该环境包括电子客户端装置1102,其可包括任何适当装置,该装置可操作以通过适当网络1104发送并接收请求、消息或信息并将信息传送回至装置的用户。这样的客户端装置的示例包括个人计算机、移动电话、手持型传讯装置、膝上型计算机、机顶盒、个人数据助理、电子书阅读器及类似装置。网络可包括任何适当网络、包括内联网、因特网、蜂窝网络、局域网或任何其它这样的网络或其组合。用于这种系统的部件可至少部分地取决于所选择的网络和/或环境的类型。用于经由这样的网络通信的协议及部件是众所周知的且在本文中将不加以详细讨论。可由有线或无线连接及其组合而启用通过网络进行的通信。在此示例中,网络包括因特网,这是因为环境包括用于接收请求并响应于其而服务内容的Web服务器1106,不过对于其它网络,可使用服务类似目的的替代性装置,如对于本领域技术人员所明显的。
说明性环境包括至少一个应用服务器1108及数据存储区1110。应理解可存在数个应用服务器、层,或可链结或以其它方式配置的其它元件、进程或部件,这些可交互以进行诸如自适当数据存储区获得数据的任务。如本文中所使用,术语“数据存储区”是指能够存储、访问及检索数据的任何装置或装置的组合,其可包括任何标准、分布式或集群式环境中的任何组合及数量的数据服务器、数据库、数据存储装置及数据存储介质。应用服务器可包括任何适当硬件及软件,用于与执行客户端装置的一个或多个应用的方面所需的数据存储区整合、处理应用的数据访问及业务逻辑的大部分。应用服务器提供与数据存储区协作的访问控制服务且能够产生诸如将被传送至用户的文字、图形、音频和/或视频的内容,该内容在该示例中可由Web服务器以超文本标记语言(“HTML”)、可扩展标记语言(“XML”)或另一适当结构化语言的形式服务给用户。所有请求及响应的处理以及内容在客户端装置1102与应用服务器1108之间的递送可由Web服务器处理。应理解,Web及应用服务器是不要求的且仅是示例性部件,这是因为可在本文中其它处讨论的任何适当装置或主机机器上执行本文中讨论的结构化代码。
数据存储区1110可包括数个单独数据表、数据库或用于存储与特定方面相关的数据的其它数据存储机构及介质。例如,所示的数据存储区包括用于存储可用以服务生产侧的内容的生产数据1112及用户信息1116的机构。数据存储区也被示为包括用于存储可用于报告、分析或其它这样目的的记录数据1114的机构。应理解,可存在可需要存储于数据存储区中以(诸如)用于页面映像信息及用以访问正确信息的许多其它方面,这些信息可视情况存储于上文列出的机构的任何中或存储于数据存储区1110中的额外机构中。数据存储区1110是可操作的,通过与其相关联的逻辑,以自应用服务器1108接收指令并响应于其而获得、更新或以其它方式处理数据。在一个示例中,用户可提出针对某一类型的项目的搜索请求。在该情形中,数据存储区可访问用户信息以验证用户的身份且可访问目录详情信息以获得有关该类型的项目的信息。信息然后可诸如以用户能够经由用户装置1102上的浏览器查看的Web页上的结果清单形式返回给用户。可在浏览器的专用页面或窗口中查看受关注中的特定项目的信息。
每个服务器通常将包括提供用于该服务器的一般性管理及操作的可执行程序指令的操作系统,且通常将包括存储在由服务器的处理器执行时允许服务器进行其预期功能的指令的计算机可读存储介质(例如,硬盘、随机存取存储器、只读存储器等)。特别是按照本公开,服务器的操作系统及一般功能性的适合实施是已知的或是市场上可购得的,且本领域技术人员可容易地实施。
一个实施方案中的环境是利用经由通信链路使用一个或多个计算机网络或直接连接互连的数个计算机系统及部件的分布式计算环境。然而,本领域技术人员应了解,这样的系统可在具有比图11中所示的更少或更大数量的部件的系统中同样很好地操作。因此,对图11中的系统1100的描绘应视为在性质上是说明性的且不限制本公开的范围。
各个实施方案可进一步实施于各种操作环境中,这些操作环境在一些情形中可包括可用以操作多个应用中的任何的一个或多个用户计算机、计算装置或处理装置。用户或客户端装置可包括以下中的任何:多个通用个人计算机(诸如,运行标准操作系统的台式或膝上型计算机)以及运行行动软件且能够支持多个联网及传讯协议的蜂窝、无线及手持型装置。这样的系统也可包括运行各种市场上可购得的操作系统以及用于诸如开发及数据库管理的目的的其它已知应用中的任何的多个工作站。这些装置也可包括其它电子装置,诸如虚设终端、瘦客户端、游戏系统及能够经由网络通信的其它装置。
大部分实施方案利用本领域技术人员所熟知的用于使用各种市场上可购得的协议中的任何支持通信的至少一个网络,这些市场上可购得的协议诸如传输控制协议/因特网协议(“TCP/IP”)、开放系统互连(“OSI”)、文件传送协议(“FTP”)、通用即插即用(“UpnP”)、网络文件系统(“NFS”)、通用因特网文件系统(“CIFS”)及AppleTalk。网络可以是(例如)局域网、广域网、虚拟专用网、因特网、内联网、外联网、公共交换电话网、红外线网、无线网及其任何组合。
在利用Web服务器的实施方案中,Web服务器可运行各种服务器或中层应用中的任何,包括超文本传送协议(“HTTP”)服务器、FTP服务器、通用网关接口(“CGI”)服务器、数据服务器、Java服务器及商务应用服务器。(诸如)通过执行可实施为以任何程序化语言(诸如,C、C#或C++)或任何脚本语言(诸如,Perl、Python或TCL)以及其组合写入的一个或多个脚本或程序的一个或多个Web应用,服务器也可能够执行来自用户装置的响应请求中的程序或脚本。服务器也可包括数据库服务器,包括(但不限于)在市场上可自及购得的那些服务器。
环境可包括各种数据存储区以及其它存储器及存储介质,如上文所讨论。这些可驻留于各种位置上,诸如驻留于在计算机的一个或多个本地(和/或驻留于其中)或在跨网络的任何或所有计算机远程的存储介质上。在一组特定实施方案中,信息可驻留于本领域技术人员所熟知的存储区网络(“SAN”)中。类似地,可视情况本地和/或远程地存储用于进行归属于计算机、服务器或其它网络装置的功能的任何必要文件。在系统包括计算机化装置的情况下,每个这样装置可包括可经由总线电耦接的硬件元件,元件包括(例如)至少一个中央处理单元(“CPU”)、至少一个输入装置(例如,鼠标、键盘、控制器、触摸屏幕或小键盘)以及至少一个输出装置(例如,显示装置、打印机或扬声器)。这样的系统也可包括一个或多个存储装置,诸如磁盘驱动器、光学存储装置及固态存储装置,诸如随机存取存储器(“RAM”)或只读存储器(“ROM”),以及可移除介质装置、存储器卡、闪存卡等。
这样的装置也可包括计算机可读存储介质阅读器、通信装置(例如,调制解调器、网络卡(无线或有线)、红外线通信装置等)以及工作存储器,如上文所描述。计算机可读存储介质阅读器可与计算机可读存储介质连接,或被配置以接收计算机可读存储介质,该计算机可读存储介质表示用于暂时地和/或更永久性地包含、存储、传输及检索计算机可读信息的远程、本地、固定和/或可移除存储装置以及存储介质。系统及各种装置通常也将包括多个软件应用、模块、服务或位于至少一个工作存储器装置内的其它元件,包括操作系统及应用程序,诸如客户端应用或Web浏览器。应了解,替代实施方案可具有自上文所描述者的众多变化形式。例如,也可使用定制硬件,且/或可在硬件、软件(包括便携式软件,诸如小应用)或二者中实施特定元件。此外,可采用至其它计算装置(诸如,网络输入/输出装置)的连接。
用于包含代码或代码的部分的存储介质及计算机可读介质可包括本领域中已知或使用的任何适当介质,包括存储介质及通信介质,诸如(但不限于)以用于存储和/或传输信息(诸如,计算机可读指令、数据结构、程序模块或其它数据)的任何方法或技术实施的易失性及非易失性、可移除及不可移除介质,包括RAM、ROM、电子可擦除可编程只读存储器(“EEPROM”)、闪存或其它存储器技术、光盘只读存储器(“CD-ROM”)、数字通用磁盘(DVD)或其它光学存储装置、磁带盒、磁带、磁盘存储装置或其它磁性存储装置,或可用以存储所需信息且可由系统装置访问的任何其它介质。基于本文中所提供的公开及教示,本领域技术人员应了解用以实施各个实施方案的其它方式和/或方法。
因此,应将说明书及附图视为说明性意义而非限制性意义。然而,将明显的是,可在不脱离如权利要求中所陈述的本公开的较广义精神及范围的情况下对本公开做出各种修改及改变。
可鉴于以下条款来描述本公开的实施方案:
条款1.一种用于仿真周边部件互连(PCI)配置空间的方法,所述方法包括:
由PCI装置的PCI核心从PCI根复合体接收PCI配置访问请求;
由所述PCI核心向所述PCI装置的配置管理模块发送所述PCI配置访问请求;
由所述配置管理模块确定所述PCI配置访问请求是针对除所述PCI核心的原生配置空间外的配置空间;
由所述配置管理硬件向所述PCI装置的仿真模块发送与所述PCI配置访问请求相关联的中断请求;
响应于所述中断请求,由所述仿真模块执行配置空间仿真软件以从仿真配置空间检索仿真配置;和
使用所述仿真配置来服务所述PCI配置访问请求。
条款2.根据条款1所述的方法,其中服务所述PCI配置访问请求包括当所述PCI配置访问请求是配置读取请求时,向所述PCI根复合体发送所述仿真配置。
条款3.根据条款2所述的方法,其中服务所述PCI配置访问请求还包括修改所述仿真配置。
条款4.根据任何前述条款所述的方法,其中服务所述PCI配置访问请求包括当所述PCI配置访问请求是配置写入请求时更新所述仿真配置。
条款5.根据任何前述条款所述的方法,其中所述仿真配置空间包括用于多个PCI装置的仿真配置。
条款6.根据任何前述条款所述的方法,其中所述仿真配置空间存储在DRAM中。
条款7.根据条款1-5中任一项所述的方法,其中所述仿真配置空间存储在永久性存储器中。
条款8.根据任何前述条款所述的方法,其中所述配置空间仿真软件在隔离环境中执行。
条款9.一种设备,其包括:
仿真部件;
总线接口核心,其包括一组原生配置寄存器;和
配置管理部件,其耦接至所述总线接口核心,所述配置管理部件被配置为:
从所述总线接口核心接收配置访问请求;
请求所述仿真部件从仿真配置空间检索仿真配置;和
使用所述仿真配置服务所述配置访问请求。
条款10.根据条款9所述的设备,其中所述仿真配置空间包括用于多个周边装置的仿真配置。
条款11.根据条款9或10所述的设备,其中所述仿真配置表示物理功能资源。
条款12.根据条款9-11中任一项所述的设备,其中所述仿真配置表示虚拟功能资源。
条款13.根据条款9-12中任一项所述的设备,其中经由执行在隔离环境中运行的配置仿真软件来检索所述仿真配置。
条款14.根据条款9-13中任一项所述的设备,其中所述配置管理部件包括状态寄存器,所述状态寄存器用于跟踪所述配置访问请求的进度,并且其中所述状态寄存器在服务所述配置访问请求完成之后被更新。
条款15.根据条款9-14中任一项所述的设备,其中所述仿真部件耦接至DRAM,并且其中所述仿真配置空间存储在所述DRAM中。
条款16.根据条款9-15中任一项所述的设备,其中所述仿真部件耦接至永久性存储器,并且其中所述仿真配置空间存储在所述永久性存储器中。
条款17.根据条款9-16中任一项所述的设备,其中所述仿真配置空间被存储为文本文件。
条款18.根据条款9-17中任一项所述的设备,其中所述仿真部件、所述总线接口核心和所述配置管理部件中的至少一个包括电子电路。
条款19.根据条款9-18中任一项所述的设备,其中所述设备在片上系统(SoC)、专用集成电路(ASIC)、处理器或现场可编程门阵列(FPGA)中实施。
条款20.一种用于由周边装置仿真配置空间的方法,所述方法包括:
由所述周边装置接收配置访问请求;
由所述周边装置确定所述配置访问请求用于仿真配置空间;
由所述周边装置从所述仿真配置空间检索仿真配置;和
由所述周边装置使用所述仿真配置来服务所述配置访问请求。
条款21.根据条款20所述的方法,其中所述仿真配置空间包括用于多个周边装置功能的仿真配置。
条款22.根据条款20或21所述的方法,其中所述仿真配置表示物理功能资源。
条款23.根据条款20或21所述的方法,其中所述仿真配置表示虚拟功能资源。
条款24.根据条款20-23中任一项所述的方法,其中服务所述配置访问请求包括将所述仿真配置提供至所述配置访问请求的源。
条款25.根据条款20-24中任一项所述的方法,其中服务所述配置访问请求包括更新所述仿真配置。
条款26.一种用于仿真扩展周边部件互连(PCI)能力的方法,所述方法包括:
由PCI装置的PCI核心接收由主机计算机开始的PCI装置配置读取请求;
由所述PCI核心并至管理硬件发送所述PCI装置配置读取请求;其中所述PCI核心包括基本PCI能力电路;
由所述管理硬件通知处理器接收到PCI配置读取请求;
由所述处理器检索表示由所述PCI装置支持的所述PCI装置的所述扩展PCI能力的仿真配置标头;和
向所述主机计算机发送所述仿真配置标头。
条款27.根据条款26所述的方法,其包括由在所述处理器中的隔离软件内容中运行的固件来响应所述中断请求。
条款28.根据条款26或27所述的方法,其包括通过更新所述管理硬件的状态寄存器在检索所述仿真配置标头的进度之后进行跟踪。
条款29.根据条款26-28中任一项所述的方法,其中检索所述仿真配置标头包括由所述处理器执行配置空间仿真软件。
条款30.根据条款26-29中任一项所述的方法,其中所述仿真配置标头表示虚拟功能资源的状态。
条款31.根据条款26-29中任一项所述的方法,其中所述仿真配置标头表示物理功能资源的状态。
条款32.根据条款26-31中任一项所述的方法,其还包括:
由所述PCI核心接收用于更新所述仿真配置标头的PCI装置配置写入请求;其中所述PCI装置配置写入请求由所述主机计算机发起;
由所述PCI核心并至所述管理硬件发送所述PCI装置配置写入请求;
由所述管理硬件通知所述处理器接收到所述PCI装置配置写入请求;
由所述处理器检索所述仿真配置标头;和
由所述处理器更新所述仿真配置标头。
条款33.根据条款32所述的方法,其中所述更新包括更新虚拟功能资源的状态。
条款34.根据条款32所述的方法,其中所述更新包括更新物理功能资源的状态。
条款35.根据条款26-34中任一项所述的方法,其还包括:
由所述PCI核心接收用于写入新仿真配置标头的PCI装置配置写入请求;其中所述PCI装置配置写入请求由所述主机计算机发起;
由所述PCI核心并至所述管理硬件发送所述PCI装置配置写入请求;
由所述管理硬件通知所述处理器接收到所述PCI装置配置写入请求;和
由所述处理器将所述新仿真配置标头写入所述处理器可访问的存储器。
条款36.一种周边部件互连(PCI)装置,其包括:
PCI核心,其被布置为接收由主机计算机发起的PCI装置配置读取请求;其中所述PCI核心包括基本PCI能力电路;
管理硬件,其被布置为从所述PCI核心接收所述PCI装置配置读取请求,并且响应于所述PCI装置配置读取请求向处理器发送中断请求;
处理器,其被布置为响应于所述中断请求检索表示由所述PCI装置支持的所述PCI装置的所述扩展PCI能力的仿真配置标头;和
其中所述PCI装置被布置为向所述主机计算机发送所述仿真配置标头。
条款37.一种非暂时性计算机可读介质,其存储一旦由周边部件互连(PCI)装置执行使得所述PCI装置进行以下阶段的指令:
由所述PCI装置的PCI核心接收由主机计算机发起的PCI装置配置读取请求;
由所述PCI核心并至管理硬件发送所述PCI装置配置读取请求;其中所述PCI核心包括基本PCI能力电路;
由所述管理硬件并响应于所述PCI装置配置读取请求向处理器发送中断请求;
响应于所述中断请求由所述处理器检索表示由所述PCI装置支持的所述PCI装置的所述扩展PCI能力的仿真配置标头;和
向所述主机计算机发送所述仿真配置标头。
其它变化形式在本公开的精神内。因此,虽然所公开的技术易受各种修改及替代性构造,但是在附图中所示且在上文已经详细描述了所示的其一些实施方案。然而,应理解,不旨在将本公开限制于所公开的一个或多个具体形式,而是相反地,意图涵盖落在本公开的精神及范围内的所有修改、替代性构造及等效形式,如在随附权利要求中所限定。
除非本文中另有指示或上下文明显矛盾,否则在描述所公开的实施方案的上下文中(尤其在以下权利要求的上下文中)使用的术语“一(a)”及“一(an)”和“该”及类似指示语应视为涵盖单数与复数两者。除非另外注明,否则术语“包括”、“具有”、“包括”及“包含”应视为开放式术语(即,意指“包括(但不限于)”)。术语“连接”被视为部分地或整体地包含于内、附接至,或连结在一起,即使存在介入件也如此。除非本文另外指明,否则本文所列举的数值范围仅意欲作为个别提及落入该范围内的每个单独值的速记方法,且每个单独值是如同在本文中个别列举那样并入本说明书中。除非本文另有说明或上下文明显矛盾,否则本文所描述的所有方法可以任何适宜次序进行。除非另有主张,否则,本文中所提供的任何及所有示例或示例性语言(例如,“诸如”)的使用仅旨在更好地阐明本公开的实施方案且不对本公开的范围强加限制。本说明书中的任何语言都不应视为指示任何未主张要素对于本公开的实践必不可少。
除非本文另外明确指明,否则诸如短语“X、Y或Z中的至少一个”的析取语言旨在理解为在上下文内一般性地用以呈现项目、项等可以是X、Y或Z,或其任何组合(例如,X、Y和/或Z)。因此,这样的析取语言通常不旨在且不应暗示一些实施方案需要呈现X中的至少一个、Y中的至少一个,或Z中的至少一个中的每个。
本文中描述本公开的各种实施方案,包括发明人已知用于实施本公开的最佳模式。本领域普通技术人员在阅读前述说明之后可明了这些实施方案的变化形式。发明人预期本领域技术人员视情况采用这样的变化形式,且发明人意图以除本文明确描述外的方式实践本公开。因此,本公开包括如适用法律允许的本文随附权利要求中所列的主题的所有修改形式及等效形式。此外,除非本文中另有指示或上下文另外明显矛盾,否则本公开涵盖上述要素在其所有可能的变化形式中的任何组合。
Claims (15)
1.一种周边装置,其包括:
本地处理器;
仿真部件;
总线接口核心,其包括一组原生配置寄存器;和
配置管理部件,其耦接至所述总线接口核心,所述配置管理部件被配置为:
从所述总线接口核心接收配置访问请求;
请求所述仿真部件从仿真配置空间检索仿真配置;和
使用所述仿真配置服务所述配置访问请求,
其中所述周边装置能够连接到具有主机处理器的主机计算系统并且能够从所述主机计算系统断开。
2.根据权利要求1所述的周边装置,其中所述仿真配置空间包括用于多个周边装置的仿真配置。
3.根据权利要求1或2所述的周边装置,其中所述仿真配置表示物理功能资源。
4.根据权利要求1或2所述的周边装置,其中所述仿真配置表示虚拟功能资源。
5.根据权利要求1或2所述的周边装置,其中经由在隔离环境中运行的配置仿真软件的执行来检索所述仿真配置。
6.根据权利要求1或2所述的周边装置,其中所述配置管理部件包括用于跟踪所述配置访问请求的进度的状态寄存器,并且其中所述状态寄存器在服务所述配置访问请求完成之后更新。
7.根据权利要求1或2所述的周边装置,其中所述仿真部件耦接至DRAM,并且其中所述仿真配置空间存储在所述DRAM中。
8.根据权利要求1或2所述的周边装置,其中所述仿真部件耦接至永久性存储器,并且其中所述仿真配置空间存储在所述永久性存储器中。
9.根据权利要求1或2所述的周边装置,其中所述周边装置在片上系统(SoC)、专用集成电路(ASIC)、处理器或现场可编程门阵列(FPGA)中实施。
10.一种用于由周边装置仿真配置空间的方法,所述方法包括:
由所述周边装置接收配置访问请求,其中所述周边装置包括本地处理器,并且能够连接到具有主机处理器的主机计算系统并且能够从所述主机计算系统断开;
由所述周边装置确定所述配置访问请求用于仿真配置空间;
由所述周边装置从所述仿真配置空间检索仿真配置;和
由所述周边装置使用所述仿真配置来服务所述配置访问请求。
11.根据权利要求10所述的方法,其中所述仿真配置空间包括用于多个周边装置功能的仿真配置。
12.根据权利要求10或11所述的方法,其中所述仿真配置表示物理功能资源。
13.根据权利要求10或11所述的方法,其中所述仿真配置表示虚拟功能资源。
14.根据权利要求10或11所述的方法,其中服务所述配置访问请求包括将所述仿真配置提供给所述配置访问请求的源。
15.根据权利要求10或11所述的方法,其中服务所述配置访问请求包括更新所述仿真配置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010052071.1A CN111258930B (zh) | 2014-10-05 | 2015-10-01 | 仿真端点配置 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462059914P | 2014-10-05 | 2014-10-05 | |
US62/059,914 | 2014-10-05 | ||
PCT/US2015/053596 WO2016057315A1 (en) | 2014-10-05 | 2015-10-01 | Emulated endpoint configuration |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010052071.1A Division CN111258930B (zh) | 2014-10-05 | 2015-10-01 | 仿真端点配置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106796556A CN106796556A (zh) | 2017-05-31 |
CN106796556B true CN106796556B (zh) | 2020-02-11 |
Family
ID=54364667
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580053816.3A Active CN106796556B (zh) | 2014-10-05 | 2015-10-01 | 仿真端点配置 |
CN202010052071.1A Active CN111258930B (zh) | 2014-10-05 | 2015-10-01 | 仿真端点配置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010052071.1A Active CN111258930B (zh) | 2014-10-05 | 2015-10-01 | 仿真端点配置 |
Country Status (9)
Country | Link |
---|---|
US (4) | US10521365B2 (zh) |
EP (1) | EP3204862B1 (zh) |
JP (2) | JP6543714B2 (zh) |
KR (2) | KR102111229B1 (zh) |
CN (2) | CN106796556B (zh) |
IL (1) | IL251417B (zh) |
SG (1) | SG11201702584UA (zh) |
TW (2) | TWI655543B (zh) |
WO (1) | WO2016057315A1 (zh) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10521365B2 (en) | 2014-10-05 | 2019-12-31 | Amazon Technologies, Inc. | Emulated endpoint configuration |
CN104951412B (zh) * | 2015-06-06 | 2018-01-02 | 华为技术有限公司 | 一种通过内存总线访问的存储装置 |
US10846195B2 (en) * | 2015-10-05 | 2020-11-24 | Unisys Corporation | Configuring logging in non-emulated environment using commands and configuration in emulated environment |
US10572180B1 (en) * | 2015-11-09 | 2020-02-25 | Seagate Technology Llc | Method and apparatus to perform a function level reset in a memory controller |
US10860520B2 (en) * | 2015-11-18 | 2020-12-08 | Oracle International Corporation | Integration of a virtualized input/output device in a computer system |
US10853303B2 (en) * | 2015-11-18 | 2020-12-01 | Oracle International Corporation | Separation of control and data plane functions in SoC virtualized I/O device |
US10817456B2 (en) * | 2015-11-18 | 2020-10-27 | Oracle International Corporation | Separation of control and data plane functions in SoC virtualized I/O device |
US11226891B2 (en) * | 2017-04-21 | 2022-01-18 | Razer (Asia-Pacific) Pte. Ltd. | Testing devices and methods for testing a device driver software |
US10360092B1 (en) * | 2017-05-17 | 2019-07-23 | Amazon Technologies, Inc. | Hybrid hardware and software reporting management |
US10908998B2 (en) * | 2017-08-08 | 2021-02-02 | Toshiba Memory Corporation | Managing function level reset in an IO virtualization-enabled storage device |
US20190095554A1 (en) * | 2017-09-28 | 2019-03-28 | Intel Corporation | Root complex integrated endpoint emulation of a discreet pcie endpoint |
US10509758B1 (en) | 2017-09-28 | 2019-12-17 | Amazon Technologies, Inc. | Emulated switch with hot-plugging |
US10996969B1 (en) * | 2017-11-28 | 2021-05-04 | Amazon Technologies, Inc. | Controlling access by a network interface |
US10877766B2 (en) * | 2018-05-24 | 2020-12-29 | Xilinx, Inc. | Embedded scheduling of hardware resources for hardware acceleration |
US11593117B2 (en) * | 2018-06-29 | 2023-02-28 | Qualcomm Incorporated | Combining load or store instructions |
US10705993B2 (en) | 2018-11-19 | 2020-07-07 | Xilinx, Inc. | Programming and controlling compute units in an integrated circuit |
US11030144B2 (en) | 2018-12-14 | 2021-06-08 | Texas Instruments Incorporated | Peripheral component interconnect (PCI) backplane connectivity system on chip (SoC) |
US10984062B2 (en) * | 2019-01-07 | 2021-04-20 | Citrix Systems, Inc. | Device augmentation of real time communications |
US10783100B2 (en) * | 2019-03-27 | 2020-09-22 | Intel Corporation | Technologies for flexible I/O endpoint acceleration |
US11265247B2 (en) * | 2019-05-14 | 2022-03-01 | Red Hat, Inc. | Downtime reduction with VF MAC filter programming by hypervisors |
CN111831330B (zh) * | 2020-07-10 | 2022-02-01 | 深圳致星科技有限公司 | 用于联邦学习的异构计算系统设备交互方案 |
US11386034B2 (en) | 2020-10-30 | 2022-07-12 | Xilinx, Inc. | High throughput circuit architecture for hardware acceleration |
US20220197679A1 (en) * | 2020-12-18 | 2022-06-23 | Advanced Micro Devices (Shanghai) Co., Ltd. | Modifying device status in single virtual function mode |
CN113037286A (zh) * | 2021-02-26 | 2021-06-25 | 许继集团有限公司 | 一种继电保护模拟量采样控制方法及装置 |
KR102568909B1 (ko) * | 2021-04-13 | 2023-08-21 | 에스케이하이닉스 주식회사 | 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 |
US11734217B2 (en) * | 2021-12-13 | 2023-08-22 | Xilinx, Inc. | Software or firmware managed hardware capability and control configuration for PCIe devices |
TWI831654B (zh) * | 2023-03-21 | 2024-02-01 | 威聯通科技股份有限公司 | 儲存擴充系統與其資源配置方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102171655A (zh) * | 2008-12-29 | 2011-08-31 | 英特尔公司 | 复合设备仿真 |
CN102576349A (zh) * | 2009-08-18 | 2012-07-11 | 弗森-艾奥公司 | 输入/输出(i/0)虚拟化系统中主计算机与外围资源之间的通信 |
US8387043B2 (en) * | 2008-02-07 | 2013-02-26 | Hitachi, Ltd. | USB port shared control method in a plurality of virtual machines |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS60125116U (ja) | 1984-01-31 | 1985-08-23 | トヨタ自動車株式会社 | ストツク手段を備えたシ−ト溶着装置 |
JPH09288583A (ja) * | 1996-04-19 | 1997-11-04 | Nec Corp | 情報処理装置 |
JPH11288400A (ja) * | 1998-04-03 | 1999-10-19 | Nec Shizuoka Ltd | Pciブリッジデバイス |
US6553439B1 (en) * | 1999-08-30 | 2003-04-22 | Intel Corporation | Remote configuration access for integrated circuit devices |
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 |
US7035850B2 (en) * | 2000-03-22 | 2006-04-25 | Hitachi, Ltd. | Access control system |
US6823418B2 (en) * | 2001-06-29 | 2004-11-23 | Intel Corporation | Virtual PCI device apparatus and method |
US7103743B2 (en) * | 2002-08-23 | 2006-09-05 | Intel Corporation | System and method of accessing vital product data |
JP2005010919A (ja) * | 2003-06-17 | 2005-01-13 | Canon Inc | 情報処理装置及び情報処理方法及びプログラム並びに記憶媒体 |
US7051749B2 (en) * | 2003-11-24 | 2006-05-30 | Advanced Technology Materials, Inc. | Gas delivery system with integrated valve manifold functionality for sub-atmospheric and super-atmospheric pressure applications |
US7383547B1 (en) * | 2004-12-03 | 2008-06-03 | Lecroy Corporation | Apparatus and technique for device emulation |
US7392172B2 (en) | 2005-04-28 | 2008-06-24 | Hewlett-Packard Development Company, L.P. | Providing virtual device access via firmware |
US7930444B2 (en) * | 2005-06-30 | 2011-04-19 | Freescale Semiconductor, Inc. | Device and method for controlling multiple DMA tasks |
JP2007048019A (ja) * | 2005-08-10 | 2007-02-22 | Sony Computer Entertainment Inc | エミュレーション方法、エミュレータ、コンピュータ組込型デバイスおよびエミュレータ用プログラム |
US7743197B2 (en) * | 2006-05-11 | 2010-06-22 | Emulex Design & Manufacturing Corporation | System and method for virtualizing PCIe devices |
US7613847B2 (en) * | 2006-05-16 | 2009-11-03 | Hewlett-Packard Development Company, L.P. | Partially virtualizing an I/O device for use by virtual machines |
JP4810349B2 (ja) * | 2006-08-11 | 2011-11-09 | 日本電気株式会社 | I/o装置及び方法 |
US20080228971A1 (en) * | 2007-03-13 | 2008-09-18 | Rothman Michael A | Device modeling in a multi-core environment |
US8683110B2 (en) * | 2007-08-23 | 2014-03-25 | Nec Corporation | I/O system and I/O control method |
US7827343B2 (en) * | 2007-09-20 | 2010-11-02 | International Business Machines Corporation | Method and apparatus for providing accelerator support in a bus protocol |
US8359408B2 (en) * | 2008-06-30 | 2013-01-22 | Intel Corporation | Enabling functional dependency in a multi-function device |
JP5272265B2 (ja) * | 2008-09-29 | 2013-08-28 | 株式会社日立製作所 | Pciデバイス共有方法 |
US8346997B2 (en) * | 2008-12-11 | 2013-01-01 | International Business Machines Corporation | Use of peripheral component interconnect input/output virtualization devices to create redundant configurations |
US8458368B2 (en) * | 2009-05-26 | 2013-06-04 | Oracle America, Inc. | System and method for discovering and protecting shared allocated resources in a shared virtualized I/O device |
US8595386B2 (en) * | 2009-08-03 | 2013-11-26 | Advanced Micro Devices, Inc. | Software controlled redirection of configuration address spaces |
JP5482263B2 (ja) * | 2010-02-08 | 2014-05-07 | 日本電気株式会社 | エンドポイント共有システムおよびデータ転送方法 |
US8327055B2 (en) * | 2010-04-12 | 2012-12-04 | International Business Machines Corporation | Translating a requester identifier to a chip identifier |
US9852087B2 (en) * | 2010-04-20 | 2017-12-26 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Inline PCI-IOV adapter |
US8782461B2 (en) * | 2010-09-24 | 2014-07-15 | Intel Corporation | Method and system of live error recovery |
US8561064B2 (en) * | 2010-10-26 | 2013-10-15 | International Business Machines Corporation | Retaining ownership of a virtual function while an adapter is replaced |
US8527666B2 (en) * | 2011-02-21 | 2013-09-03 | International Business Machines Corporation | Accessing a configuration space of a virtual function |
US8966477B2 (en) * | 2011-04-18 | 2015-02-24 | Intel Corporation | Combined virtual graphics device |
US9218195B2 (en) | 2011-05-17 | 2015-12-22 | International Business Machines Corporation | Vendor-independent resource configuration interface for self-virtualizing input/output device |
US9411654B2 (en) * | 2011-12-16 | 2016-08-09 | International Business Machines Corporation | Managing configuration and operation of an adapter as a virtual peripheral component interconnect root to expansion read-only memory emulation |
US9311127B2 (en) * | 2011-12-16 | 2016-04-12 | International Business Machines Corporation | Managing configuration and system operations of a shared virtualized input/output adapter as virtual peripheral component interconnect root to single function hierarchies |
US8832499B2 (en) | 2012-08-06 | 2014-09-09 | Lsi Corporation | Methods and structure for trapping requests directed to hardware registers of an electronic circuit |
JP2014085956A (ja) * | 2012-10-25 | 2014-05-12 | Fujitsu Semiconductor Ltd | シミュレーション制御プログラム、シミュレーションプログラム、シミュレーション制御装置、シミュレーション装置、シミュレーション制御方法、およびシミュレーション方法 |
US8892784B2 (en) * | 2012-11-12 | 2014-11-18 | Annapurna Labs Ltd. | Adaptive apparatus |
US8886671B1 (en) * | 2013-08-14 | 2014-11-11 | Advent Software, Inc. | Multi-tenant in-memory database (MUTED) system and method |
IN2013CH05400A (zh) * | 2013-11-22 | 2015-05-29 | Ineda Systems Pvt Ltd | |
US10521365B2 (en) | 2014-10-05 | 2019-12-31 | Amazon Technologies, Inc. | Emulated endpoint configuration |
-
2015
- 2015-10-01 US US14/872,964 patent/US10521365B2/en active Active
- 2015-10-01 KR KR1020187034414A patent/KR102111229B1/ko active IP Right Grant
- 2015-10-01 CN CN201580053816.3A patent/CN106796556B/zh active Active
- 2015-10-01 SG SG11201702584UA patent/SG11201702584UA/en unknown
- 2015-10-01 EP EP15787738.2A patent/EP3204862B1/en active Active
- 2015-10-01 KR KR1020177008809A patent/KR102125604B1/ko active IP Right Grant
- 2015-10-01 CN CN202010052071.1A patent/CN111258930B/zh active Active
- 2015-10-01 WO PCT/US2015/053596 patent/WO2016057315A1/en active Application Filing
- 2015-10-01 JP JP2017536236A patent/JP6543714B2/ja active Active
- 2015-10-05 TW TW106117105A patent/TWI655543B/zh active
- 2015-10-05 TW TW104132725A patent/TWI655542B/zh active
-
2017
- 2017-03-27 IL IL251417A patent/IL251417B/en active IP Right Grant
-
2019
- 2019-02-19 JP JP2019027016A patent/JP6871957B2/ja active Active
- 2019-12-26 US US16/727,814 patent/US11321247B2/en active Active
-
2022
- 2022-04-26 US US17/660,797 patent/US11886355B2/en active Active
-
2023
- 2023-12-13 US US18/538,699 patent/US20240126705A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8387043B2 (en) * | 2008-02-07 | 2013-02-26 | Hitachi, Ltd. | USB port shared control method in a plurality of virtual machines |
CN102171655A (zh) * | 2008-12-29 | 2011-08-31 | 英特尔公司 | 复合设备仿真 |
CN102576349A (zh) * | 2009-08-18 | 2012-07-11 | 弗森-艾奥公司 | 输入/输出(i/0)虚拟化系统中主计算机与外围资源之间的通信 |
Also Published As
Publication number | Publication date |
---|---|
TWI655542B (zh) | 2019-04-01 |
JP2019091494A (ja) | 2019-06-13 |
WO2016057315A1 (en) | 2016-04-14 |
US10521365B2 (en) | 2019-12-31 |
JP6871957B2 (ja) | 2021-05-19 |
US11321247B2 (en) | 2022-05-03 |
US20200133892A1 (en) | 2020-04-30 |
US20160098365A1 (en) | 2016-04-07 |
KR20180129998A (ko) | 2018-12-05 |
SG11201702584UA (en) | 2017-04-27 |
CN111258930B (zh) | 2024-04-12 |
JP6543714B2 (ja) | 2019-07-10 |
US20220253392A1 (en) | 2022-08-11 |
TWI655543B (zh) | 2019-04-01 |
TW201629783A (zh) | 2016-08-16 |
EP3204862A1 (en) | 2017-08-16 |
KR102125604B1 (ko) | 2020-06-22 |
CN111258930A (zh) | 2020-06-09 |
CN106796556A (zh) | 2017-05-31 |
EP3204862B1 (en) | 2019-09-18 |
US11886355B2 (en) | 2024-01-30 |
JP2017535894A (ja) | 2017-11-30 |
IL251417B (en) | 2020-06-30 |
KR102111229B1 (ko) | 2020-05-14 |
IL251417A0 (en) | 2017-05-29 |
US20240126705A1 (en) | 2024-04-18 |
TW201805821A (zh) | 2018-02-16 |
KR20170051475A (ko) | 2017-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11886355B2 (en) | Emulated endpoint configuration | |
US11249937B1 (en) | Storage adapter device for communicating with network storage | |
US10282192B1 (en) | Updating device code through a bus | |
US10241951B1 (en) | Device full memory access through standard PCI express bus | |
US10075524B1 (en) | Storage bridge device for communicating with network storage | |
JP6514330B2 (ja) | 複数のコンピュートサブシステムを備えるチップ上のシステム | |
US10067741B1 (en) | Systems and methods for I/O device logging | |
US10915486B1 (en) | Ingress data placement | |
US10248607B1 (en) | Dynamic interface port assignment for communication transaction | |
US10621114B1 (en) | Standardized interface for storage using an input/output (I/O) adapter device | |
US9864701B1 (en) | Resource mapping for an input/output device | |
US10621134B1 (en) | Generating transactions with a configurable port | |
JP6231704B2 (ja) | フラッシュメモリベースのストレージデバイスの入力/出力仮想化(iov)ホストコントローラ(hc)(iov−hc)におけるコマンドトラッピング | |
WO2016133998A1 (en) | System on a chip comprising an i/o steering engine | |
US9984021B1 (en) | Location-aware self-configuration of a peripheral device | |
US9836421B1 (en) | Standardized interface for network using an input/output (I/O) adapter device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |