CN111258930A - 仿真端点配置 - Google Patents

仿真端点配置 Download PDF

Info

Publication number
CN111258930A
CN111258930A CN202010052071.1A CN202010052071A CN111258930A CN 111258930 A CN111258930 A CN 111258930A CN 202010052071 A CN202010052071 A CN 202010052071A CN 111258930 A CN111258930 A CN 111258930A
Authority
CN
China
Prior art keywords
configuration
peripheral device
emulated
transaction
emulation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010052071.1A
Other languages
English (en)
Other versions
CN111258930B (zh
Inventor
N·布沙拉
A·哈布沙
G·那开布利
Z·马丘利斯基
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.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies 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 Amazon Technologies Inc filed Critical Amazon Technologies Inc
Priority to CN202010052071.1A priority Critical patent/CN111258930B/zh
Publication of CN111258930A publication Critical patent/CN111258930A/zh
Application granted granted Critical
Publication of CN111258930B publication Critical patent/CN111258930B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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
    • 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/0058Bus-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

仿真端点配置
本发明申请是国际申请号为PCT/US2015/053596,国际申请日为 2015年10月1日,进入中国国家阶段的申请号为201580053816.3, 名称为“仿真端点配置”的发明专利申请的分案申请。
背景技术
计算***可包括多个周边装置。周边装置可扩展、调适和/或修 改计算***的功能性。周边装置可实施一个或多个功能。例如,周边 装置可以是提供网络连接性功能的网络接口卡,或提供数据存储功能 的大容量存储装置等。
一些周边装置可包括用以控制周边装置的行为的配置寄存器。例 如,如果周边装置是周边部件互连(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可以是通用计算单元(诸 如,由
Figure BDA0002371526960000041
等制造的通用计算单 元),且一般而言能够执行软件代码。处理器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装置类别代码
Figure BDA0002371526960000071
Figure BDA0002371526960000081
当计算***(诸如,图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、
Figure BDA0002371526960000111
Figure BDA0002371526960000112
等),或可以是专属操作***。
本地硬件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:示例性仿真配置
Figure BDA0002371526960000171
Figure BDA0002371526960000181
如上文所述及,配置事务记录可被实施以追踪传入配置事务。配 置事务记录可维持一些或所有传入配置读取及写入事务的记录。在一 些实施中,配置事务记录可使用数个寄存器来记录给定配置事务。这 些寄存器可包括地址寄存器、数据寄存器以及完成寄存器。
可在配置读取或写入事务被传输至配置事务记录时设定地址寄 存器。地址寄存器可包含识别其是入站配置事务的目标的配置寄存器 所需的信息。在一些情形中,地址寄存器可在由仿真模块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:示例性配置事务和响应。
Figure BDA0002371526960000331
在配置事务以不指派给物理功能或虚拟功能中的任何的总线编 号为目标的情形中,周边装置可以不被支持请求做出响应。
表4提供针对不同数目的虚拟功能的总线指派的示例。
表4:示例性总线分配。
Figure BDA0002371526960000341
可通过读取物理及虚拟功能的仿真配置获知总线指派以及哪些 物理及虚拟功能是可用的。当接收到针对不存在的功能的配置事务 时,仿真模块可以不被支持请求响应做出响应。
表5提供基于是否启用虚拟功能以及是否启用ARI能力阶层的 响应的示例。
表5:各种配置组合的示例性响应。
Figure BDA0002371526960000342
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至图11中讨论的装置可使用 图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服 务器及商务应用服务器。(诸如)通过执行可实施为以任何程序化语 言(诸如,
Figure BDA0002371526960000471
C、C#或C++)或任何脚本语言(诸如,Perl、Python 或TCL)以及其组合写入的一个或多个脚本或程序的一个或多个Web 应用,服务器也可能够执行来自用户装置的响应请求中的程序或脚 本。服务器也可包括数据库服务器,包括(但不限于)在市场上可自
Figure BDA0002371526960000472
Figure BDA0002371526960000473
购得的那些服务器。
环境可包括各种数据存储区以及其它存储器及存储介质,如上文 所讨论。这些可驻留于各种位置上,诸如驻留于在计算机的一个或多 个本地(和/或驻留于其中)或在跨网络的任何或所有计算机远程的 存储介质上。在一组特定实施方案中,信息可驻留于本领域技术人员 所熟知的存储区网络(“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.根据权利要求5所述的周边装置,其中对所述能力寄存器的改变使与所述物理功能关联的虚拟功能重置。
7.根据权利要求1或2所述的周边装置,还包括配置事务记录单元,用于存储传入的配置访问请求。
8.根据权利要求7所述的周边装置,其中所述配置事务记录单元确定所述传入的配置访问请求被处理的次序。
9.根据权利要求1或2所述的周边装置,其中在所述周边装置启动时,所述仿真配置空间被从永久性存储加载到本地存储器。
10.根据权利要求1或2所述的周边装置,其中所述仿真部件还被配置成用于响应未经初始化或不存在的功能的访问请求。
11.一种利用周边装置仿真配置空间的方法,所述方法包括:
由所述周边装置在仿真配置空间中仿真一组配置寄存器;
由所述周边装置接收配置访问请求;
由所述周边装置从所述一组配置寄存器中检索被仿真的仿真配置;以及
由所述周边装置使用所述仿真配置来服务所述配置访问请求。
12.根据权利要求11所述的方法,其中所述一组配置寄存器包括用于多个周边装置功能的仿真配置。
13.根据权利要求11或12所述的方法,还包括:
记录传入的配置访问请求;以及
确定所述传入的配置访问请求被处理的次序。
14.根据权利要求11或12所述的方法,还包括:
在所述周边装置启动时,将所述仿真配置空间从永久性存储加载到本地存储器。
15.根据权利要求11或12所述的方法,其中所述仿真配置空间包括类别代码寄存器、基地址寄存器和能力寄存器中的至少一个。
CN202010052071.1A 2014-10-05 2015-10-01 仿真端点配置 Active CN111258930B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010052071.1A CN111258930B (zh) 2014-10-05 2015-10-01 仿真端点配置

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462059914P 2014-10-05 2014-10-05
US62/059,914 2014-10-05
CN202010052071.1A CN111258930B (zh) 2014-10-05 2015-10-01 仿真端点配置
CN201580053816.3A CN106796556B (zh) 2014-10-05 2015-10-01 仿真端点配置
PCT/US2015/053596 WO2016057315A1 (en) 2014-10-05 2015-10-01 Emulated endpoint configuration

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201580053816.3A Division CN106796556B (zh) 2014-10-05 2015-10-01 仿真端点配置

Publications (2)

Publication Number Publication Date
CN111258930A true CN111258930A (zh) 2020-06-09
CN111258930B CN111258930B (zh) 2024-04-12

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 Before (1)

Application Number Title Priority Date Filing Date
CN201580053816.3A Active CN106796556B (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) KR102125604B1 (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)

* Cited by examiner, † Cited by third party
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
US10817456B2 (en) * 2015-11-18 2020-10-27 Oracle International Corporation Separation of control and data plane functions in SoC virtualized I/O device
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
EP3612940A4 (en) * 2017-04-21 2020-04-29 Razer (Asia-Pacific) Pte Ltd. TEST DEVICES AND METHOD FOR TESTING 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 许继集团有限公司 一种继电保护模拟量采样控制方法及装置
KR102568906B1 (ko) 2021-04-13 2023-08-21 에스케이하이닉스 주식회사 PCIe 디바이스 및 그 동작 방법
KR102568909B1 (ko) * 2021-04-13 2023-08-21 에스케이하이닉스 주식회사 PCIe 펑션 및 그 동작 방법
US11928070B2 (en) 2021-04-13 2024-03-12 SK Hynix Inc. PCIe device
KR102570943B1 (ko) 2021-04-13 2023-08-28 에스케이하이닉스 주식회사 PCIe 디바이스 및 그 동작 방법
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 (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050109399A1 (en) * 2003-11-24 2005-05-26 Wodjenski Michael J. Gas delivery system with integrated valve manifold functionality for sub-atmospheric and super-atmospheric pressure applications
CN1912838A (zh) * 2005-08-10 2007-02-14 索尼计算机娱乐公司 仿真方法、仿真器、计算机可连接设备及仿真器程序
US7383547B1 (en) * 2004-12-03 2008-06-03 Lecroy Corporation Apparatus and technique for device emulation
US20080228971A1 (en) * 2007-03-13 2008-09-18 Rothman Michael A Device modeling in a multi-core environment
US20090204965A1 (en) * 2008-02-07 2009-08-13 Youji Tanaka Usb port shared control method
US20100169069A1 (en) * 2008-12-29 2010-07-01 Nimrod Diamant Composite device emulation
CN102576349A (zh) * 2009-08-18 2012-07-11 弗森-艾奥公司 输入/输出(i/0)虚拟化***中主计算机与***资源之间的通信
JP2014085956A (ja) * 2012-10-25 2014-05-12 Fujitsu Semiconductor Ltd シミュレーション制御プログラム、シミュレーションプログラム、シミュレーション制御装置、シミュレーション装置、シミュレーション制御方法、およびシミュレーション方法

Family Cites Families (31)

* Cited by examiner, † Cited by third party
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 情報処理装置及び情報処理方法及びプログラム並びに記憶媒体
US7392172B2 (en) 2005-04-28 2008-06-24 Hewlett-Packard Development Company, L.P. Providing virtual device access via firmware
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装置及び方法
JP5477707B2 (ja) * 2007-08-23 2014-04-23 日本電気株式会社 I/oシステムおよびi/o制御方法
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
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 日本電気株式会社 エンドポイント共有システムおよびデータ転送方法
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
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
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

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050109399A1 (en) * 2003-11-24 2005-05-26 Wodjenski Michael J. 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
CN1912838A (zh) * 2005-08-10 2007-02-14 索尼计算机娱乐公司 仿真方法、仿真器、计算机可连接设备及仿真器程序
US20080228971A1 (en) * 2007-03-13 2008-09-18 Rothman Michael A Device modeling in a multi-core environment
US20090204965A1 (en) * 2008-02-07 2009-08-13 Youji Tanaka Usb port shared control method
US20100169069A1 (en) * 2008-12-29 2010-07-01 Nimrod Diamant Composite device emulation
CN102171655A (zh) * 2008-12-29 2011-08-31 英特尔公司 复合设备仿真
CN102576349A (zh) * 2009-08-18 2012-07-11 弗森-艾奥公司 输入/输出(i/0)虚拟化***中主计算机与***资源之间的通信
JP2014085956A (ja) * 2012-10-25 2014-05-12 Fujitsu Semiconductor Ltd シミュレーション制御プログラム、シミュレーションプログラム、シミュレーション制御装置、シミュレーション装置、シミュレーション制御方法、およびシミュレーション方法

Also Published As

Publication number Publication date
KR102111229B1 (ko) 2020-05-14
US10521365B2 (en) 2019-12-31
US20240126705A1 (en) 2024-04-18
JP6543714B2 (ja) 2019-07-10
US20220253392A1 (en) 2022-08-11
JP2017535894A (ja) 2017-11-30
JP6871957B2 (ja) 2021-05-19
JP2019091494A (ja) 2019-06-13
CN111258930B (zh) 2024-04-12
US11321247B2 (en) 2022-05-03
IL251417B (en) 2020-06-30
KR102125604B1 (ko) 2020-06-22
US11886355B2 (en) 2024-01-30
TWI655542B (zh) 2019-04-01
TW201629783A (zh) 2016-08-16
EP3204862A1 (en) 2017-08-16
CN106796556B (zh) 2020-02-11
US20160098365A1 (en) 2016-04-07
WO2016057315A1 (en) 2016-04-14
CN106796556A (zh) 2017-05-31
KR20170051475A (ko) 2017-05-11
IL251417A0 (en) 2017-05-29
KR20180129998A (ko) 2018-12-05
SG11201702584UA (en) 2017-04-27
TWI655543B (zh) 2019-04-01
EP3204862B1 (en) 2019-09-18
US20200133892A1 (en) 2020-04-30
TW201805821A (zh) 2018-02-16

Similar Documents

Publication Publication Date Title
US11886355B2 (en) Emulated endpoint configuration
US10282192B1 (en) Updating device code through a bus
US11249937B1 (en) Storage adapter device for communicating with network storage
US10241951B1 (en) Device full memory access through standard PCI express bus
US10075524B1 (en) Storage bridge device for communicating with network storage
US10067741B1 (en) Systems and methods for I/O device logging
US10509758B1 (en) Emulated switch with hot-plugging
US10248607B1 (en) Dynamic interface port assignment for communication transaction
US10915486B1 (en) Ingress data placement
US10621114B1 (en) Standardized interface for storage using an input/output (I/O) adapter device
US10621134B1 (en) Generating transactions with a configurable port
US9864701B1 (en) Resource mapping for an input/output device
JP2017518574A (ja) フラッシュメモリベースのストレージデバイスの入力/出力仮想化(iov)ホストコントローラ(hc)(iov−hc)におけるコマンドトラッピング
US9910813B1 (en) Single function using multiple ports
US9984021B1 (en) Location-aware self-configuration of a peripheral device
US9836421B1 (en) Standardized interface for network using an input/output (I/O) adapter device
US20160191333A1 (en) Techniques for providing software support for a hardware component of a computing 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