CN109582998A - 小巧PCIe端点的根复合体集成端点仿真 - Google Patents

小巧PCIe端点的根复合体集成端点仿真 Download PDF

Info

Publication number
CN109582998A
CN109582998A CN201810988355.4A CN201810988355A CN109582998A CN 109582998 A CN109582998 A CN 109582998A CN 201810988355 A CN201810988355 A CN 201810988355A CN 109582998 A CN109582998 A CN 109582998A
Authority
CN
China
Prior art keywords
pcie
register
request
message
logic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201810988355.4A
Other languages
English (en)
Inventor
E·H·黄
S·W·林
K·H·谭
P·卡卢拉亚
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN109582998A publication Critical patent/CN109582998A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/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
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2115/00Details relating to the type of the circuit
    • G06F2115/02System on chip [SoC] design
    • 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
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/331Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Information Transfer Systems (AREA)

Abstract

实施例的各方面涉及用于仿真PCIe根复合体集成端点的系统和方法。该系统和方法可以包括在根复合体片上系统和/或连接设备中实现的硬件逻辑。硬件可以接收访问硬件设备的一个或多个寄存器的请求消息;确定请求消息包括访问一个或多个快速外围组件互连(PCIe)特定寄存器的请求;以及对请求消息进行响应而不提供与一个或多个PCIe特定寄存器相关联的信息。

Description

小巧PCIe端点的根复合体集成端点仿真
背景技术
快速外围组件互连(PCIe)协议定义了互连(或总线)层次结构。小巧(discreet)设备可以通过互连层次结构连接到主机设备上的根复合体。主机设备中的一些设备可以通过总线0互连连接。可以将这样的设备视为根复合体集成端点(RCiEP)。RCiEP可以集成到片上系统(SOC)中,并且没有PCIe链路。但是,尽管没有PCIe接口,这些RCiEP设备仍能作为PCIe设备而被发现。
附图说明
图1示出了包括多核处理器的计算系统的框图的实施例。
图2是根据本公开的实施例的系统架构200的示意图。
图3是根据本公开的实施例的仿真根复合体集成端点的连接设备的示意图。
图4A是根据本公开的实施例的用于支持根复合体集成端点的设备仿真的根复合体的过程流程图。
图4B是根据本公开的实施例的端点设备支持根复合体集成端点的设备仿真的过程流程图。
图5是根据本公开的实施例的用于隐藏来自操作系统的PCIe特定消息的根复合体硬件仿真逻辑的过程流程图。
图6示出了包括互连架构的计算系统的实施例。
图7示出了包括分层栈的互连架构的实施例。
图8示出了要在互连架构内生成或接收的请求或分组的实施例。
图9示出了用于互连架构的发射器和接收器对的实施例。
图10示出了多核处理器的实施例。
图11示出了计算系统的框图的另一实施例。
图12示出了用于包括多个处理器插槽的计算系统的块的实施例。
这些图可能未按比例绘制。相似的参考数字在不同图中表示相似元素。
具体实施方式
在以下描述中,阐述了许多具体细节,诸如以下的示例:特定类型的处理器和系统配置,特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量值/高度、特定处理器流水线级和操作等,以便提供对本发明的透彻理解。然而,对于本领域技术人员显而易见的是,不需要采用这些特定细节来实施本发明。在其他实例中,为了避免不必要地模糊本发明,没有详细描述众所周知的组件或方法,例如特定和替代处理器架构、用于所描述的算法的特定逻辑电路/代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现、算法用代码的特定表达、特定的断电和门控技术/逻辑以及计算机系统的其他特定操作细节。
尽管可以参考特定集成电路中的能量节省和能量效率来描述以下实施例,例如在计算平台或微处理器中,但是其他实施例也适用于其他类型的集成电路和逻辑设备。本文描述的实施例的类似技术和教导可以应用于其他类型的电路或半导体设备,其也可以受益于更好的能量效率和能量节省。例如,所公开的实施例不限于台式计算机系统或UltrabooksTM。并且还可以用于其他设备,例如手持设备、平板电脑、其他薄型笔记本电脑、片上系统(SOC)设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数码相机、个人数字助理(PDA)和手持PC。嵌入式应用通常包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或任何其他可执行下面教导的功能和操作的系统。此外,这里描述的装置、方法和系统不限于物理计算设备,还可以涉及用于能量节省和效率的软件优化。
参考图1,描绘了包括多核处理器的计算系统的框图的实施例。处理器100包括任何处理器或处理设备,例如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持处理器、应用处理器、协处理器、片上系统(SOC)或执行代码的其他设备。在一个实施例中,处理器100包括至少两个核心——核心101和102,其可包括不对称核心或对称核心(所示实施例)。然而,处理器100可以包括可以是对称或不对称的任何数量的处理元件。
在一个实施例中,处理元件是指支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、进程单元、上下文、上下文单元、逻辑处理器、硬件线程、核心、和/或能够保持处理器的状态(诸如执行状态或架构状态)的任何其它元件。换言之,在一个实施例中,处理元件是指任何能够独立地与代码(诸如软件线程、操作系统、应用或其它代码)相关联的硬件。物理处理器(或处理器插槽)通常是指集成电路,其可能包括诸如核心或硬件线程的任意数量的其它处理元件。
核心通常是指位于能够维护独立架构状态的集成电路上的逻辑,其中每个独立维护的架构状态与至少一些专用执行资源相关联。与核心不同,硬件线程通常是指位于能够维护独立架构状态的集成电路上的任何逻辑,其中独立维护的架构状态共享对执行资源的访问。能够看出,当某些资源被共享并且其它资源专用于架构状态时,硬件线程和核心的命名法之间的线重叠。更通常地,核心和硬件线程被操作系统视为单独的逻辑处理器,其中操作系统能够单独地调度每个逻辑处理器上的操作。
如图1所示,物理处理器100包括两个核心——核心101和102。这里,核心101和102被认为是对称核心,即具有相同配置、功能单元和/或逻辑的核心。在另一实施例中,核心101包括乱序处理器核心,而核心102包括有序处理器核心。然而,核心101和102可以从任何类型的核中单独选择,例如本机核心、软件管理核心、适于执行本机指令集架构(ISA)的核心、适于执行转换指令集架构(ISA)的核心、共同设计的核心或其他已知核心。在异构核心环境(即,非对称核心)中,可以利用某种形式的转换(例如二进制转换)来在一个或两个核心上调度或执行代码。然而,为了进一步讨论,核心101中示出的功能单元在下面进一步详细描述,因为核心102中的单元在所描绘的实施例中以类似的方式操作。
如图所示,核心101包括两个硬件线程101a和101b,其也可以称为硬件线程槽101a和101b。因此,在一个实施例中,诸如操作系统的软件实体可能将处理器100视为四个单独的处理器,即,能够同时执行四个软件线程的四个逻辑处理器或处理元件。如上所述,第一线程与架构状态寄存器101a相关联,第二线程与架构状态寄存器101b相关联,第三线程可以与架构状态寄存器102a相关联,并且第四线程可以与架构状态寄存器102b相关联。这里,每个架构状态寄存器(101a、101b、102a和102b)可以被称为处理元件、线程槽或线程单元,如上所述。如图所示,架构状态寄存器101a在架构状态寄存器101b中被复制,因此能够为逻辑处理器101a和逻辑处理器101b存储各个架构状态/上下文。在核心101中,还可以为线程101a和101b复制其他较小的资源,例如分配器和重命名器块130中的指令指针和重命名逻辑。可以通过分区来共享一些资源,诸如重新排序/引退单元135中的重新排序缓冲器、ILTB120、加载/存储缓冲器和队列。其他资源,例如通用内部寄存器、页表基址寄存器、低级数据高速缓存和数据-TLB115、执行单元140以及乱序单元135的部分是可能完全共享的。
处理器100通常包括其他资源,其可以是完全共享的,通过分区共享的,或由处理元件/对处理元件专用的。在图1中,示出了具有处理器的说明性逻辑单元/资源的纯示例性处理器的实施例。注意,处理器可以包括或省略这些功能单元中的任何一个,以及包括未示出的任何其他已知功能单元、逻辑或固件。如图所示,核心101包括简化的、代表性的乱序(OOO)处理器核心。但是可以在不同的实施例中使用有序处理器。OOO核心包括用于预测要执行/采用的分支的分支目标缓冲器120和用于存储用于指令的地址转换条目的指令转换缓冲器(I-TLB)120。
核心101还包括解码模块125,其耦合到获取单元120以解码所获取的元件。在一个实施例中,获取逻辑包括分别与线程槽101a、101b相关联的各个定序器。通常,核心101与第一ISA相关联,第一ISA定义/指定在处理器100上能执行的指令。通常作为第一ISA的一部分的机器代码指令包括指令的一部分(称为操作码),其引用/指定要执行的指令或操作。解码逻辑125包括从其操作码识别这些指令并在流水线中传递解码的指令以便进行如由第一ISA定义的处理的电路。例如,如下面更详细讨论的,在一个实施例中,解码器125包括被设计或适于识别特定指令的逻辑,例如事务指令。作为解码器125识别的结果,架构或核心101采取特定的预定义动作来执行与适当指令相关联的任务。重要的是要注意,可以响应于单个或多个指令来执行本文描述的任何任务、块、操作和方法;其中一些可能是新的或旧的指令。注意,在一个实施例中,解码器126识别相同的ISA(或其子集)。可替代地,在异构核心环境中,解码器126识别第二ISA(第一ISA的子集或不同的ISA)。
在一个示例中,分配器和重命名器块130包括用于预留资源的分配器,诸如用于存储指令处理结果的寄存器文件。然而,线程101a和101b可能能够乱序执行,其中分配器和重命名器块130还保留其他资源,例如跟踪指令结果的重新排序缓冲器。单元130还可以包括寄存器重命名器,以将程序/指令参考寄存器重命名为处理器100内部的其他寄存器。重新排序/引退单元135包括组件,例如上面提到的重排序缓冲器、加载缓冲器和存储缓冲器,以支持乱序执行和稍后乱序执行的指令的有序引退。
在一个实施例中,调度器和执行单元块140包括调度器单元,用于调度执行单元上的指令/操作。例如,浮点指令在具有可用浮点执行单元的执行单元的端口上被调度。还包括与执行单元相关联的寄存器文件以存储信息指令处理结果。示例性执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元和其他已知的执行单元。
较低级数据高速缓存和数据转换缓冲器(D-TLB)150耦合到执行单元140。数据高速缓存用于存储最近使用/操作的元素,例如数据操作数,其可能保存在存储器一致性状态中。D-TLB用于存储最近的虚拟/线性到物理地址转换。作为特定示例,处理器可以包括页表结构以将物理存储器分成多个虚拟页面。
这里,核心101和102共享对更高级或更远级的高速缓存的访问,例如与片上接口110相关联的第二级高速缓存。注意,更高级或更远级是指高速缓存级增加或从执行单元进一步远离。在一个实施例中,较高级高速缓存是最后级数据高速缓存——处理器100上的存储器层次结构中的最后高速缓存——诸如第二或第三级数据高速缓存。然而,较高级高速缓存不限于此,因为它可以与指令高速缓存相关联或包括指令高速缓存。跟踪高速缓存——一种类型的指令高速缓存——可以耦合在解码器125之后以存储最近解码的跟踪。这里,指令可能涉及宏指令(即,由解码器识别的一般指令),其可以解码为多个微指令(微操作)。
在所描绘的配置中,处理器100还包括片上接口模块110。历史上,下面更详细描述的存储器控制器已被包括在处理器100外部的计算系统中。在这种场景中,片上接口模块110用于与处理器100外部的设备进行通信,例如系统存储器175、芯片组(通常包括连接到存储器175的存储器控制器中心和用于连接外围设备的I/O控制器中心)、存储器控制器中心、北桥或其他集成电路。并且在这种场景中,总线105可以包括任何已知的互连,例如多点总线、点对点互连、串行互连、并行总线、相干(例如高速缓存相干)总线、分层协议架构、差分总线和GTL总线。
存储器175可以专用于处理器100或者与系统中的其他设备共享。存储器175类型的常见示例包括DRAM、SRAM、非易失性存储器(NV存储器)和其他已知的存储设备。设备180可以包括图形加速器、耦合到存储器控制器中心的处理器或卡、耦合到I/O控制器中心的数据存储设备、无线收发器、闪存设备、音频控制器、网络控制器或其他已知设备。
然而,最近,随着更多逻辑和设备被集成在诸如SOC的单个管芯上,这些设备中的每一个可以合并在处理器100上。例如,在一个实施例中,存储器控制器中心与处理器100在同一封装和/或管芯上。这里,核心的一部分(核心上部分)101包括一个或多个控制器,用于与诸如存储器175或图形设备180的其他设备接合。包括互连和用于与这些设备接合的控制器的配置通常被称为核心上(或非核心配置)。作为示例,片上接口模块110包括用于片上通信的环形互连和用于片外通信的高速串行点对点链路105。然而,在SOC环境中,甚至更多的设备,例如网络接口、协处理器、存储器175、图形处理器180和任何其他已知的计算机设备/接口可以集成在单个管芯或集成电路上以提供具有高功能和低功耗的小形状因子。
在一个实施例中,处理器100能够执行编译器、优化、和/或转换器代码177以编译、转换和/或优化应用代码176以支持本文描述的装置和方法或与其接合。编译器通常包括将源文本/代码转换成目标文本/代码的程序或程序集。通常,使用编译器编译程序/应用程序代码是在多个阶段和多遍(pass)中完成的,以将高级编程语言代码转换为低级机器或汇编语言代码。然而,单遍编译器仍可用于简单编译。编译器可以利用任何已知的编译技术并执行任何已知的编译器操作,例如词法分析、预处理、解析、语义分析、代码生成、代码转换和代码优化。
较大的编译器通常包括多个阶段,但是大多数情况下这些阶段包括在两个一般阶段中:(1)前端,即通常可以进行句法处理、语义处理和一些变换/优化的地方,以及(2)后端,即通常进行分析、转换、优化和代码生成的地方。一些编译器引用了一个中间部分,它说明了编译器的前端和后端之间描绘的模糊。结果,对编译器的插入、关联、生成或其他操作的引用可以在任何上述阶段或遍以及编译器的任何其他已知阶段或遍中发生。作为一个说明性示例,编译器可能在编译的一个或多个阶段中插入操作、调用、函数等,例如在编译的前端阶段插入调用/操作,然后在变换阶段将调用/操作变换为更低级别的代码。请注意,在动态编译期间,编译器代码或动态优化代码可以插入此类操作/调用,以及优化代码以便在运行时执行。作为特定说明性示例,可以在运行时期间动态地优化二进制代码(已编译的代码)。这里,程序代码可以包括动态优化代码、二进制代码或其组合。
与编译器类似,转换器(例如二进制转换器)静态地或动态地转换代码以优化和/或转换代码。因此,对代码、应用代码、程序代码或其他软件环境的执行的引用可以指代:(1)动态地或静态地执行编译器程序、优化代码优化器或转换器以编译程序代码、维护软件结构、执行其他操作、优化代码、或转换代码;(2)执行包括操作/调用的主程序代码,例如已优化/编译的应用程序代码;(3)执行与主程序代码相关联的其他程序代码,例如库,以维护软件结构、执行其他软件相关操作、或优化代码;或(4)其组合。
快速外围组件互连(PCIe)端点可能包含某些不应暴露给片上系统(SoC)的操作系统或PCIe总线驱动程序的特征。为了完全隔离特征的操作不受OS/驱动程序的影响,PCIExpress链路和根端口可以隐藏不被OS/驱动程序发现和控制,从而在连接设备处仿真根复合体集成端点(RCiEP)。
本公开描述了用于促进根复合体和小巧PCIe端点(此处称为设备)来仿真根复合体集成端点的系统和方法。根复合体集成端点仿真可以公开意在由OS/驱动程序可以发现的所选功能和特征,但不暴露物理PCIe接口。仿真允许PCIe接口以完全符合PCIe规范以及现成的标准PCIe端点控制器IP的方式从OS/驱动程序视图中隐藏。
图2是根据本公开的实施例的系统架构200的示意图。系统架构200可以包括片上系统(SoC)202和通过符合PCIe的交换机桥230连接到SoC202的多个设备220a-n。系统架构200可以包括通过诸如前端总线的链路耦合到根复合体204的一个或多个处理器210。处理器210可以包括操作系统和PCIe总线驱动程序212。
主机系统201还可以包括根复合体204。根复合体204可以充当用于符合PCIe的系统和设备的控制器中心。根复合体204跨符合PCIe的交换机桥230将处理器210连接到一个或多个端点设备220a-n,交换机桥230可以包括一个或多个交换机设备,用于在连接的设备之间进行切换。SoC 202可以包括一个或多个PCIe端口218,其可以充当与符合PCIe的交换机桥230的接口。每个设备220a-n可以分别包括符合PCIe的接口222a-n,以通过符合PCIe的交换机桥230与SoC 202进行通信。交换机桥230可以通过符合PCIe的链路232耦合到PCIe端口218。一个或多个设备220a-220n可以分别通过符合PCIe的链路234a-n耦合到交换机桥。在实施例中,设备220m可以跨点对点符合PCIe的链路234m连接到端口218。
SoC 202可以包括多个根复合体集成端点(RCiEP)206a-n。RCiEP 206a-n可以是符合PCIe的端点设备,其不包括与根复合体204链接的PCIe接口。
端点设备220a可以包括允许端点设备220a仿真RCiEP设备的仿真硬件224。仿真硬件224包括在端点设备220a的OS 212发现时对OS 212隐藏与PCIe功能相关联的寄存器的逻辑。仿真硬件224还可以对OS 212隐藏与PCIe操作相关联的消息。
例如,仿真硬件224可以检测OS对与PCIe功能相关联的一个或多个寄存器的寄存器访问。仿真硬件224可以通过发送用于读操作的0串来响应寄存器访问,并且可以将写操作丢弃到寄存器。仿真硬件224可以允许不涉及端点设备220的PCIe功能的寄存器访问请求,从而允许端点设备220继续在SoC框架内操作但不暴露PCIe功能。
SoC 202还可以包括仿真硬件214,用于使端点设备220a看起来是RCiEP设备。当仿真硬件接收到对PCIe特定寄存器的寄存器访问请求时,仿真硬件214可以类似地对OS 212隐藏(通过重定向访问或制造返回数据或操纵返回数据)PCIe特定寄存器。SoC 202上的仿真硬件214可以隐藏端点设备220a和/或SoC PCIe端口208的PCIe特定寄存器。此外,SoC202中的仿真硬件214还可以隐藏与根复合体控制器216相关联的PCIe特定寄存器。例如,仿真硬件214可以使SoC PCIe端口208对OS 212透明。
设备220a中的RCiEP的仿真可以在两个或任一SoC 202上实现以及通过设备220a(例如)实现。根复合体204、符合PCIe的交换机桥230以及所有链路相关的控制、电源管理和能力被对OS/驱动程序212发现隐藏。相反,端点设备220a可以使用类型0配置周期来发现。然后,SoC 202和设备220a可以处理在PCIe操作中定义的标准消息。
图3是根据本公开的实施例的仿真根复合体集成端点的连接设备的示意图。图3提供了说明仿真硬件如何在SoC 302(作为SoC RCiEP仿真硬件(HW)304)和/或在端点设备310中作为设备RCiEP HW 312实现的逻辑图。
在设备发现期间,SoC 302可以隐藏其根复合体寄存器组不会被OS/驱动程序308发现。SoC 302可以生成类型0配置周期以直接瞄准小巧端点设备310。SoC 302可以向小巧端点设备310转发类型0配置寄存器访问。在一些实施例中,SoC 302可以接收类型1配置寄存器访问。SoC 302可以忽略或重新配置类型1配置寄存器访问。SoC 302可以为每个小巧端点设备310配置类型0,并且向每个连接的小巧端点设备310转发类型0配置寄存器访问。端点设备310中的多个PCIe定义的标准配置寄存器通过SoC RCiEP仿真HW 304或设备RCiEPHW 312对OS 308是隐藏的。例如,仿真硬件可以提供读取零并且可以丢弃写访问。在一些实施例中,仿真硬件可以在OS/驱动程序发现或编程期间改变读取值(例如,改变为空字符串或具有全零的字符串,或者改变为不符合PCIe协议的字符串,或改变为OS以其他方式无法解读的字符串)。这些操作有效地允许作为小巧PCIe端点的端点设备310被OS/驱动程序308视为根复合体集成端点。
要隐藏的寄存器可以包括PCIe特定寄存器,包括:PCIe能力寄存器(偏移02h),设备/端口类型='1001b'(RCiEP);PCI Express扩展能力内的链路相关寄存器;链路电源管理相关寄存器,以及多功能虚拟通道能力寄存器。
然而,请注意,这些寄存器仍然可以在端点设备310内部物理地实现,使得SoC 302具有用于固件/BIOS发现和配置PCIe链路330以使端点设备特征可操作的方式。通过维护设备内以及根复合体内的寄存器,仿真硬件允许设备继续符合PCIe端点控制器IP架构。
图4A是根据本公开的实施例的用于支持根复合体集成端点的设备仿真的根复合体的过程流程图400。片上系统(SoC)仿真硬件可以从OS接收来自OS或总线驱动程序的PCIe寄存器访问请求(402)。该请求可以作为设备发现过程的一部分而来。SoC仿真硬件可以对OS隐藏PCIe寄存器(404)。例如,对于读请求,SoC仿真硬件可以返回全零的比特串。对于写访问请求,SoC仿真硬件可以丢弃该请求。在一些实施例中,SoC仿真硬件可以修改或放弃其从端点设备接收的任何PCIe相关寄存器信息的传递,以进一步隐藏PCIe寄存器。例如,仿真硬件可以将寄存器信息修改为不表示PCIe协议的信息,或者此外,是OS无法解读的信息。SoC仿真硬件还可以隐藏与SoC PCIe端口和/或PCIe根复合体相关联的所有寄存器。
SoC仿真硬件可以允许不与PCIe关联的其他寄存器访问请求继续进行到端点设备。SoC还可以将类型0配置周期发送到端点设备以引发非PCIe寄存器信息的寄存器发现(406)。SoC可以接收对发现请求的响应(408)。SoC仿真硬件可以确定响应是否包括PCIe特定信息(410)。如果响应不包括PCIe特定信息,则SoC仿真硬件可以将响应和伴随信息发送到OS(414)。如果响应确实包括PCIe特定信息,则SoC仿真硬件可以在将响应发送到OS之前(414)修改或丢弃PCIe特定信息(412)。
图4B是根据本公开的实施例的端点设备支持根复合体集成端点的设备仿真的过程流程图450。PCIe端点设备可以从连接的主机系统的OS接收注册访问请求消息(452)。端点设备上的仿真硬件可以确定寄存器访问请求包括对PCIe特定寄存器的请求(454)。设备仿真硬件可以以与上述类似的方式对OS隐藏PCIe特定寄存器。
图5是根据本公开的实施例的用于对操作系统隐藏PCIe特定消息的根复合体硬件仿真逻辑的过程流程图500。PCIe端点设备可以向SoC发送一个或多个PCIe特定消息,其中一些可以寻址OS。除了“隐藏”寄存器之外,还可以对OS/驱动程序隐藏设备通常作为正常操作或错误报告的一部分发送的标准PCIe定义的消息。SoC仿真硬件可以跨符合PCIe的链路从PCIe端点设备接收一个或多个PCIe特定消息(502)。SoC仿真硬件可以将PCIe消息重新路由远离OS(504)。然后SoC可以处理该消息(506)。例如,SoC仿真硬件可以将从端点设备接收的PCIe特定消息内部重定向到SoC错误事件收集器或专有中央错误报告机制。如果仿真硬件部分地在端点设备上实现,则端点设备可以将PCIe消息重新路由到预期的SoC目的地,例如中断控制器、电源管理控制器或错误事件处理程序。
一种互连结构架构包括外围组件互连(PCI)Express(PCIe)架构。PCIe的主要目标是使来自不同供应商的组件和设备能够在开放架构中互操作,跨越多个细分市场;客户端(台式机和移动)、服务器(标准和企业)以及嵌入式和通信设备。PCIe是一种高性能的通用的I/O互连协议,被定义用于各种未来的计算和通信平台。一些PCI属性,例如其使用模型、加载-存储架构和软件接口,已通过其修订版进行维护,而先前的并行总线实现方式已被高度可扩展的完全串行接口所取代。最近的PCI Express的版本利用了点对点互连、基于交换机的技术和分组协议的优势,递送新水平的性能和特征。电源管理、服务质量(QoS)、热插拔/热交换支持、数据完整性和错误处理在PCI Express支持的一些高级特征中。
参见图6,示出了由互连一组组件的点对点链路组成的结构的实施例。系统600包括耦合到控制器中心615的处理器605和系统存储器610。处理器605包括任何处理元件,例如微处理器、主处理器、嵌入式处理器、协处理器或其他处理器。处理器605通过前端总线(FSB)606耦合到控制器中心615。在一个实施例中,FSB 606是如下所述的串行点对点互连。在另一实施例中,链路606包括符合不同互连标准的串行差分互连架构。
系统存储器610包括任何存储器设备,诸如随机存取存储器(RAM),非易失性(NV)存储器或系统600中的设备可访问的其他存储器。系统存储器610通过存储器接口616耦合到控制器中心615。存储器接口的示例包括双倍数据速率(DDR)存储器接口、双通道DDR存储器接口和动态RAM(DRAM)存储器接口。
在一个实施例中,控制器中心615是快速外围组件互连(PCIe)互连层次结构中的根中心、根复合体或根控制器。控制器中心615的示例包括芯片组、存储器控制器中心(MCH)、北桥、互连控制器中心(ICH)、南桥和根控制器/中心。通常,术语芯片组指的是两个物理上分离的控制器中心,即耦合到互连控制器中心(ICH)的存储器控制器中心(MCH)。注意,当前系统通常包括与处理器605集成的MCH,而控制器615以与下面描述的类似方式与I/O设备进行通信。在一些实施例中,可选地通过根复合体615支持对等路由。
根复合体615可以从连接的设备(例如I/O设备625)接收数据分组。数据分组可以包括提示比特集,其提示根复合体评估一个或多个保留比特以确定数据分组中是否存在提示比特。提示比特可以向根复合体提供关于I/O设备625如何趋于使用存储器中的标识的地址范围或页面的提示或高级信息。根复合体615可以代表处理器核心执行各种优化,如上所述。
这里,控制器中心615通过串行链路619耦合到交换机/桥接器620。输入/输出模块617和621(也可以称为接口/端口617和621)包括/实现分层协议栈以提供控制器中心615和交换机620之间的通信。在一个实施例中,多个设备能够耦合到交换机620。
交换机/桥接器620将来自设备625的分组/消息向上游(即,朝向根复合体(例如,控制器中心615)顺着层次结构向上)并且向下游(即,顺着远离根控制器的层次结构向向下),从处理器605或系统存储器610路由到设备625。在一个实施例中,交换机620被称为多个虚拟PCI到PCI桥设备的逻辑组装件。设备625包括要耦合到电子系统的任何内部或外部设备或组件,例如I/O设备、网络接口控制器(NIC)、附加卡、音频处理器、网络处理器、硬盘驱动程序、存储设备、CD/DVD ROM、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、Firewire设备、通用串行总线(USB)设备、扫描仪和其他输入/输出设备。通常在PCIe术语中,例如设备,被称为端点。尽管没有具体示出,但是设备625可以包括PCIe到PCI/PCI-X桥,以支持传统或其他版本的PCI设备。PCIe中的端点设备通常被分类为传统、PCIe或根复合体集成端点。设备625可以通过串行链路623耦合到交换机620。
图形加速器630还通过串行链路632耦合到控制器中心615。在一个实施例中,图形加速器630耦合到MCH,MCH耦合到ICH。然后交换机620,并且相应地I/O设备625,耦合到ICH。I/O模块631和618还用于实现分层协议栈以在图形加速器630和控制器中心615之间通信。类似于上面的MCH讨论,图形控制器或图形加速器630本身可以集成在处理器605中。
转到图7,示出了分层协议栈的实施例。分层协议栈700包括任何形式的分层通信栈,例如快速路径互连(QPI)栈、PCIe栈、下一代高性能计算互连栈或其他分层栈。尽管紧接着下面参考图6-12的讨论与PCIe栈有关,但是相同的概念可以应用于其他互连栈。在一个实施例中,协议栈700是PCIe协议栈,包括事务层705、链路层710和物理层720。诸如图6中的接口617、618、621、622、626和631的接口可以表示为通信协议栈700。作为通信协议栈的表示也可以称为实现/包括协议栈的模块或接口。
PCI Express使用分组以在组件之间传送信息。在事务层705和数据链路层710中形成分组以将信息从发送组件携带到接收组件。当传输的分组流经其他层时,它们用为处理那些层处的分组所必需的附加信息进行扩展。在接收侧,发生反向过程,并且分组从其物理层720表示变换到数据链路层710表示,并且最终(对于事务层分组)变换到可以由接收设备的事务层705处理的形式。
事务层
在一个实施例中,事务层705用于提供设备的处理核心和互连架构(例如数据链路层710和物理层720)之间的接口。在这方面,事务层705的主要职责是分组的组装和反汇编(即事务层分组或TLP)。转换层705通常管理TLP的信用基础流控制。PCIe实现分离事务,即具有由时间分隔的请求和响应的事务,允许链路在目标设备收集响应的数据时携带其他流量。
此外,PCIe还利用基于信用的流控制。在该方案中,设备在事务层705中为每个接收缓冲器通告初始信用量。在链路的相对端的外部设备,例如图1中的控制器中心115,计算由每个TLP消耗的信用数量。如果事务未超过信用限制,则可以发送事务。收到响应后,恢复一定数量的信用。信用方案的一个优点是,如果没有达到信用限制,信用返还的延迟不会影响性能。
在一个实施例中,四个事务地址空间包括配置地址空间、存储器地址空间、输入/输出地址空间和消息地址空间。存储器空间事务包括一个或多个读请求和写请求以将数据传送到存储器映射位置或从存储器映射位置传送数据。在一个实施例中,存储器空间事务能够使用两种不同的地址格式,例如短地址格式,例如32比特地址,或长地址格式,例如64比特地址。配置空间事务用于访问PCIe设备的配置空间。到配置空间的事务包括读请求和写请求。消息空间事务(或简称消息)被定义为支持PCIe代理之间的带内通信。
因此,在一个实施例中,事务层705组装分组报头/有效载荷706。可以在PCIe规范网站处的PCIe规范中找到当前分组报头/有效载荷的格式。
快速参考图8,示出了PCIe事务描述符的实施例。在一个实施例中,事务描述符800是用于携带事务信息的机制。在这方面,事务描述符800支持系统中事务的识别。其他潜在用途包括跟踪默认事务排序的修改以及事务与信道的关联。
事务描述符800包括全局标识符字段802、属性字段1004和信道标识符字段806。在所示示例中,全局标识符字段802被描绘为包括本地事务标识符字段808和源标识符字段810。在一个实施例中,全局事务标识符802对于所有未完成的请求是唯一的。
根据一种实现方式,本地事务标识符字段808是由请求代理生成的字段,并且对于需要完成该请求代理的所有未完成请求,它是唯一的。此外,在该示例中,源标识符810唯一地标识PCIe层次结构内的请求者代理。因此,与源ID 810一起,本地事务标识符808字段提供层次结构域内的事务的全局标识。
属性字段804指定事务的特性和关系。在这方面,属性字段804可能用于提供允许修改事务的默认处理的附加信息。在一个实施例中,属性字段804包括优先级字段812、保留字段814、排序字段816和非窥探字段818。这里,优先级子字段812可以由发起者修改以向事务分配优先级。保留属性字段814被保留用于将来或供应商定义的使用。可以使用保留属性字段来实现使用优先级或安全性属性的可能使用模型。
在该示例中,排序属性字段816用于提供传达可以修改默认排序规则的排序类型的可选信息。根据一个示例实现方式,排序属性“0”表示要应用默认排序规则,其中排序属性“1”表示放宽排序,其中写入可以在相同方向上传递写入,并且读取完成可以在相同方向上传递写入。窥探属性字段818用于确定是否窥探了事务。如图所示,信道ID字段806标识与事务相关联的信道。
链路层
返回图7,链路层710(也称为数据链路层710)充当事务层705和物理层720之间的中间级。在一个实施例中,数据链路层710的职责是提供用于在链路的两个组件之间交换事务层分组(TLP)的可靠机制。数据链路层710的一侧接受由事务层705组装的TLP,应用分组序列标识符710,即标识号或分组号,计算并应用错误检测码,即CRC 712,并将修改的TLP提交给物理层720用于跨物理到外部设备的传输。
物理层
在一个实施例中,物理层720包括逻辑子块721和电子块722,以物理地将分组发送到外部设备。这里,逻辑子块721负责物理层721的“数字”功能。在这方面,逻辑子块包括用于准备用于由物理子块722发送的传出信息的发送部分,以及用于在将所接收的信息传递到链路层1110之前识别和准备所接收的信息的接收器部分。
物理块722包括发射器和接收器。发送器由逻辑子块721提供符号,发送器将符号串行化并发送到外部设备。接收器被提供有来自外部设备的串行符号,并将所接收的信号转换为比特流。比特流被反串行化并提供给逻辑子块721。在一个实施例中,采用8b/10b传输码,其中发送/接收10比特符号。这里,特殊符号用于利用帧723对分组进行成帧。此外,在一个示例中,接收器还提供从传入串行流中恢复的符号时钟。
如上所述,尽管参考PCIe协议栈的特定实施例讨论了事务层705、链路层710和物理层1020,但是分层协议栈不限于此。实际上,可以包括/实现任何分层协议。作为示例,表示为分层协议的端口/接口包括:(1)用于组装分组的第一层,即事务层;用于对分组进行排序的第二层,即链路层;以及发送分组的第三层,即物理层。作为具体示例,使用公共标准接口(CSI)分层协议。
接下来参考图9,示出了PCIe串行点对点结构的实施例。尽管示出了PCIe串行点对点链路的实施例,但是串行点对点链路不限于此,因为它包括用于发送串行数据的任何传输路径。在所示的实施例中,基本PCIe链路包括两个低压差分驱动信号对:发送对906/911和接收对912/907。因此,设备905包括用于将数据发送到设备910的发送逻辑906以及从设备910接收数据的接收逻辑907。换句话说,在PCIe链路中包括两个传输路径,即路径916和917,以及两个接收路径,即路径918和919。
传输路径指的是用于传输数据的任何路径,例如传输线、铜线、光线、无线通信信道、红外通信链路或其他通信路径。两个设备(例如设备905和设备910)之间的连接被称为链路,例如链路915。链路可以支持一个通道——每个通道代表一组差分信号对(一对用于传输,一对用于接收)。为了扩展带宽,链路可以聚合由xN表示的多个通道,其中N是任何支持的链路宽度,例如1、2、4、8、12、16、32、64或更宽。
差分对指的是两条传输路径,例如线路916和917,以传输差分信号。作为示例,当线916从低电压水平切换到高电压水平,即上升沿时,线路917从高逻辑水平驱动到低逻辑水平,即下降沿。差分信号潜在地表现出更好的电特性,例如更好的信号完整性,即交叉耦合、电压过冲/下冲、振荡等。这允许更好的定时窗口,这使得更快的传输频率成为可能。
注意,上述装置、方法和系统可以在如上所述的任何电子设备或系统中实现。作为具体说明,下图提供了用于利用如本文所述的本发明的示例性系统。由于更详细地描述了以下系统,因此从上面的讨论中公开、描述和再次审阅了许多不同的互连。并且显而易见的是,上述进步可以应用于那些互连、结构或架构中的任何一种。
现在参考图10,示出了多核处理器的实施例的框图。如图10的实施例中所示,处理器1000包括多个域。具体地,核心域1030包括多个核心1030A-1030N,图形域1060包括具有媒体引擎1065的一个或多个图形引擎,以及系统代理域1010。
在各种实施例中,系统代理域1010处理功率控制事件和功率管理,使得域1030和1060的各个单元(例如,核心和/或图形引擎)能够独立控制以根据给定单元中发生的活动(或不活动)在适当的功率模式/级别(例如,活动、turbo、睡眠、休眠、深度睡眠或其他高级配置电源接口,如状态)动态地进行操作。域1030和1060中的每一个可以在不同的电压和/或功率下操作,并且此外,域内的各个单元各自可能以独立的频率和电压操作。注意,虽然仅示出具有三个域,但是应理解,本发明的范围不限于此方面,并且其他域可以存在于其他实施例中。
如图所示,除了各种执行单元和附加处理元件之外,每个核心1030还包括低级高速缓存。这里,各种核心彼此耦合并耦合到共享高速缓存存储器,该共享高速缓存存储器由最后一级高速缓存(LLC)1040A-1040N的多个单元或切片形成;这些LLC通常包括存储和高速缓存控制器功能,并在核之间共享,也可能在图形引擎之间共享。
如图所示,环形互连1050将核心耦合在一起,并且经由多个环形止动件1052A-1052N提供核心域1030、图形域1060和系统代理电路1010之间的互连,每个环形止动件在核心与LLC切片之间的耦合处。如图10所示,互连1050用于携带各种信息,包括地址信息、数据信息、确认信息和窥探/无效信息。尽管示出了环形互连,但是可以使用任何已知的管芯上互连或结构。作为说明性示例,可以以类似的方式利用上面讨论的一些结构(例如,另一个管芯上互连、Intel片上系统结构(IOSF)、高级微控制器总线架构(AMBA)互连、多维网状结构或其他已知互连架构)。
如进一步描绘的,系统代理域1010包括显示引擎1012,其用于提供对相关联的显示器的控制和接口。系统代理域1010可以包括其他单元,例如:集成存储器控制器1020,其提供到系统存储器的接口(例如,用多个DIMM实现的DRAM;用于执行存储器一致性操作的一致性逻辑1022。可以存在多个接口以实现处理器与其它电路之间的互连。例如,在一个实施例中,提供至少一个直接媒体接口(DMI)1016接口以及一个或多个PCIeTM接口1014。显示引擎和这些接口通常经由PCIeTM桥接器1018耦合到存储器。此外,为了提供其他代理之间的通信,例如附加处理器或其他电路,可以提供一个或多个其他接口(例如,快速通道互联(QPI)结构)。
接下来转到图11,描绘了根据本发明的片上系统(SOC)设计的实施例。作为特定说明性示例,SOC 1100被包括在用户设备(UE)中。在一个实施例中,UE指的是终端用户要使用来进行通信的任何设备,例如手持电话、智能电话、平板电脑、超薄笔记本、具有宽带适配器的笔记本或任何其他类似的通信设备。UE通常连接到基站或节点,基站或节点本质上可能对应于GSM网络中的移动站(MS)。
这里,SOC 1100包括2个核心——1106和1107。类似于上面的讨论,核心1106和1107可以符合指令集架构,例如基于Architecture CoreTM的处理器、AdvancedMicro Devices公司(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计或其客户,以及其许可证持有者或采用者。核心1106和1107耦合到高速缓存控件1108,高速缓存控件1108与总线接口单元1109和L2高速缓存1110相关联以与系统1100的其他部分进行通信。互连1110包括片上互连,例如IOSF、AMBA或如上所述的其他互连,其潜在地实现了所描述的发明的一个或多个方面。
接口1110向其他组件提供通信信道,例如用于与SIM卡接合的用户识别模块(SIM)1130、用于保持引导代码以由核心1106和1107执行以初始化和引导SOC 1100的引导ROM1135、与外部存储器(例如DRAM 1160)接合的SDRAM控制器1140、用于与非易失性存储器(例如闪存1165)接合的闪存控制器1145、用于与外围设备接合的外围控件1150(例如串行外围接口)、用于显示和接收输入(例如,触摸使能输入)的视频编解码器1120和视频接口1125、执行图形相关计算的GPU 1115等等。这些接口中的任何一个可以包含本文描述的本发明的各方面。
此外,该系统示出了用于通信的外围设备,例如蓝牙模块1170、3G调制解调器1175、GPS 1185和WiFi 1185。注意,如上所述,UE包括用于通信的无线电。结果,这些外围通信模块并非都是必需的。然而,在UE中,将包括用于外部通信的一些形式的无线电。
现在参考图12,示出的是根据本发明的实施例的第二系统1200的框图。如图12所示,多处理器系统1200是点对点互连系统,并且包括经由点对点互连1250耦合的第一处理器1270和第二处理器1280。处理器1270和1280中的每一个可以是处理器的某个版本。在一个实施例中,1252和1254是串行点对点相干互连结构的一部分,例如Intel的快速通道互联(QPI)架构。结果,本发明可以在QPI架构内实现。
虽然仅用两个处理器1270、1280示出,但应理解,本发明的范围不限于此。在其他实施例中,一个或多个附加处理器可以存在于给定处理器中。
示出的处理器1270和1280分别包括集成存储器控制器单元1272和1282。处理器1270还包括作为其总线控制器单元的一部分的点对点(P-P)接口1276和1278;类似地,第二处理器1280包括P-P接口1286和1288。处理器1270、1280可以使用P-P接口电路1278、1288经由点对点(P-P)接口1250交换信息。如图12所示,IMC 1272和1282将处理器耦合到相应的存储器,即存储器1232和存储器1234,其可以是本地连接到相应处理器的主存储器的部分。
处理器1270、1280各自使用点对点接口电路1276、1294、1286、1298经由各个P-P接口1252、1254与芯片组1290交换信息。芯片组1290还经由接口电路1292沿着高性能图形互连1239与高性能图形电路1238交换信息。
共享高速缓存(未示出)可以包括在处理器中或两个处理器外部;然后经由P-P互连与处理器连接,使得如果处理器被置于低功率模式,则任一个或两个处理器的本地高速缓存信息可以存储在共享高速缓存中。
芯片组1290可以经由接口1296耦合到第一总线1216。在一个实施例中,第一总线1216可以是外围组件互连(PCI)总线,或者诸如PCI Express总线或另一第三代I/O互连总线的总线,但本发明的范围不限于此。
如图12所示,各种I/O设备1214耦合到第一总线1216、以及将第一总线1216耦合到第二总线1220的总线桥1218。在一个实施例中,第二总线1220包括低引脚数(LPC)总线。在一个实施例中,各种设备耦合到第二总线1220,包括例如键盘和/或鼠标1222、通信设备1227和存储单元1228,诸如磁盘驱动器或其他大容量存储设备,其通常包括指令/代码和数据1230。此外,音频I/O 1224被示出耦合到第二总线1220。注意,其他架构是可能的,其中所包括的组件和互连架构是变化的。例如,代替图12的点对点架构,系统可以实现多分支总线或其他这样的架构。
虽然已经关于有限数量的实施例描述了本发明,本领域技术人员将从中理解到若干修改和改变。目的在于随附的权利要求涵盖所有落入本发明的真正的精神和范围内的这样的修改和改变。
设计可经过各个阶段,从创建到模拟到制造。代表了设计的数据可以表示出多种方式的设计。首先,如模拟中有用的,硬件可以利用硬件描述语言或者另一功能描述语言来表示。另外,具有逻辑和/或晶体管门的电路级模型可以在设计过程的某阶段生产出。此外,在某阶段的大部分设计达到表示各设备在硬件模型中的物理布置的数据的级别。在使用常规的半导体制造技术的情况下,表示硬件模型的数据可以是规定用于生产集成电路的掩模的不同掩模层上的各特征的存在或缺失的数据。在设计的任何表示中,数据可以机器可读介质的任意形式来存储。存储器或磁或光存储设备,诸如光盘,可以是存储经由被调制或以其他方式生成以发送该信息的光或电波传输的信息的机器可读介质。当指示或承载代码或设计的电载波被传输时,在电信号的拷贝、缓冲、或再发送被执行的范围内,制作了新的副本。因此,通信提供商或者网络提供商可以在有形的机器可读介质上至少临时地存储诸如编码到载波中的信息的具体实施本发明的实施例的技术的物件。
本文所使用的模块是指硬件、软件和/或固件的任意组合。作为示例,模块包括硬件,诸如微控制器,其与非暂时性介质相关联以存储适于由微控制器执行的代码。因此,在一个实施例中,提到模块是指具体配置成识别和/或执行保存在非暂时性介质中的代码的硬件。此外,在另一实施例中,模块的使用是指包括具体适于由微控制器执行以实施预定操作的代码的非暂时性介质。并且,能够推导出,在另外的实施例中,术语模块(在该示例中)可以是指微控制器和非暂时性介质的组合。经常地,图示分离的模块界限通常是变化的并且可能重叠。例如,第一模块和第二模块可共享硬件、软件、固件或其组合,同时可能保持了一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括了硬件,诸如晶体管、寄存器或其他硬件,诸如可编程逻辑器件。
在一个实施例中,短语‘用于’或‘配置用于’的使用是指布置、放到一起、制造、许诺销售、导入和/或设计执行指定的或确定的任务的装置、硬件、逻辑或元件。在该示例中,未操作的装置或其元件,如果被设计、耦合和/或互连而执行所述指定任务,则仍‘配置用于’执行指定的任务。作为纯说明性的示例,逻辑门可以在操作期间提供0或1。但是‘配置用于’提供给时钟使能信号的逻辑门不包括可提供1或0的每一个可能的逻辑门。相反,逻辑门是以在操作期间1或0输出使能时钟的某方式耦合的逻辑门。再次注意,术语‘配置用于’的使用不要求操作,而是集中于装置、硬件和/或元件的潜在状态,其中在潜在状态下装置、硬件和/或元件被设计成,当装置、硬件和/或元件操作时,实施特定的任务。
此外,在一个实施例中,短语“能够…”和/或“可操作…”的使用是指以使得能够按规定方式使用某装置、逻辑、硬件和/或元件的方式设计的该装置、逻辑、硬件和/或元件。如上文所提到的,至、能够、或可操作的使用在一个实施例中是指装置、逻辑、硬件和/或元件的潜在状态,其中装置、逻辑、硬件和/或元件没有操作,但是以使得能够按规定方式使用装置的方式来设计。
如本文所使用的值包括了数字、状态、逻辑状态或二进制逻辑状态的任何已知的表示。经常,逻辑水平、逻辑(logic)值或逻辑(logical)值的使用也称为1和0,这简单地表示了二进制逻辑状态。例如,1是指高逻辑水平,0是指低逻辑水平。在一个实施例中,存储单元,诸如晶体管或闪存单元,可能能够保存单个逻辑值或者多个逻辑值。然而,已经使用计算机系统中的值的其他表示。例如,十进制数字十还可以表示为二进制值1010以及十六进制的字母A。因此,值包含了能够被保存在计算机系统中的信息的任何表示。
而且,状态可由值或值的部分来表示。作为示例,诸如逻辑一的第一值可以表示缺省或初始状态,而诸如逻辑零的第二值可以表示非缺省状态。另外,在一个实施例中术语复位和置位分别指代缺省值或状态和更新值或状态。例如,缺省值可能包含高逻辑值,即,复位,而更新值可能包含低逻辑值,即置位。注意,值的任意组合可用于表示任何数量的状态。
上文阐述的方法、硬件、软件、固件或代码的实施例可经由能够由处理元件执行的、存储在机器可访问的、机器可读的、计算机可访问的或者计算机可读的介质上的指令或代码来实现。非暂时性机器可访问/可读介质包括任何提供(即,存储和/或发送)诸如计算机或电子系统的机器能够读取的形式的信息的机制。例如,非暂时性机器可访问介质包括随机存取存储器(RAM)、诸如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪速存储器设备;电存储设备;光存储设备;声学存储设备;其它形式的用于保存从暂时性(传播)信号(例如,载波、红外信号,数字信号)接收到的信息的存储设备;等等,这些应区分于可以从其接收信息的非暂时性介质。
用于编程逻辑以执行本发明的实施例的指令可以存储在系统中的存储器内,诸如DRAM、高速缓存、闪速存储器或其它存储设备。此外,指令可以经由网络或者通过其它计算机可读介质的方式来分布。因此,机器可读介质可包括任何用于存储或发送机器(例如,计算机)能够读取的形式的信息的机制,但不限于软盘、光盘、压缩盘、只读存储器(CD-ROM)以及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器、或用于经由电、光、声或其它形式的传播信号(例如,载波、红外信号、数字信号等)在因特网上发送信息的有形的、机器可读存储设备。因此,计算机可读介质包括适合存储或发送能够由机器(例如,计算机)读取的形式的电子指令或信息的任何类型的有形机器可读介质。
在本说明书通篇提到“一个实施例”或“实施例”是指结合该实施例描述的特定的特征、结构或特性包括在本公开的至少一个实施例中。因此,在本说明书通篇各处出现的短语“在一个实施例中”或“在实施例中”不一定都指相同实施例。此外,特定的特征、结构或特性可以任何适合的方式结合在一个或多个实施例中。
在前面的说明书中,已经参考具体的示例性实施例给出了详细说明。然而,将显而易见的是,可以对其进行各种修改和改变,而不偏离如随附权利要求中阐述的本公开的更宽泛的精神和范围。说明书和附图因此应在说明性的意义而非限制性的意义上考虑。此外,前面对实施例和其它示例性语言的使用不一定都指相同实施例或相同示例,而是可以指不同和独特的实施例以及可能相同实施例。
以下段落提供了本文公开的各种实施例的示例。
示例1是至少部分地以硬件实现的装置,所述装置包括硬件逻辑,用于:接收访问硬件设备的一个或多个寄存器的请求;确定所述请求包括访问一个或多个快速外围组件互连(PCIe)特定寄存器的请求;以及对所述请求进行响应而不提供与所述一个或多个PCIe特定寄存器相关联的信息。所述装置包括片上系统仿真硬件或设备仿真硬件。
示例2可以包括示例1的主题,还包括逻辑,用于:确定所述请求包括读取一个或多个PCIe寄存器的读请求;并且其中,所述逻辑通过发送没有PCIe特定值的比特串来对所述读请求进行响应。
示例3可以包括示例1或2中任一项的主题,还包括逻辑,用于:确定所述请求包括写入一个或多个PCIe寄存器的写请求;并且其中,所述逻辑丢弃所述写请求。
示例4可以包括示例1-3中任一项的主题,还包括逻辑,用于:从端点设备接收对所述请求进行响应的响应消息;确定所述响应消息包括PCIe特定信息;以及在发送所述响应消息之前修改或丢弃所述PCIe特定信息。
示例5可以包括示例1-4中任一项的主题,还包括逻辑,用于:从端点设备接收PCIe特定消息;以及将所述PCIe特定消息重新路由到事件处理程序。
示例6可以包括示例5的主题,其中,所述PCIe特定消息包括PCIe错误消息,并且所述逻辑用于将所述PCIe错误消息转发到PCIe错误处理程序。
示例7可以包括示例1-6中任一项的主题,还包括逻辑,用于:确定所述请求消息包括访问端点设备的PCIe特定寄存器的请求和访问所述端点设备的非PCIe特定寄存器的请求;向所述端点设备发送访问所述非PCIe特定寄存器的所述请求;以及隐藏访问所述PCIe特定寄存器的所述请求。
示例8可以包括示例1-7中任一项的主题,其中,所述装置驻留在符合PCIe的根复合体的上游。
示例9可以包括示例1-8中任一项的主题,其中,所述装置驻留在符合PCIe的端点设备上。
示例10可以包括示例1-7中任一项的主题,其中,所述PCIe特定寄存器是与符合PCIe的根复合体、符合PCIe的根复合体控制器、或PCIe端口中的一个或多个相关联的寄存器。
示例11是由仿真硬件元件执行的方法,所述方法包括:接收访问硬件设备的一个或多个寄存器的请求;确定所述请求包括访问一个或多个快速外围组件互连(PCIe)特定寄存器的请求;以及对所述请求进行响应而不提供与所述一个或多个PCIe特定寄存器相关联的信息。
示例12可以包括示例11的主题,还包括:确定所述请求包括读取一个或多个PCIe寄存器的读请求;以及发送没有寄存器特定值的比特串。
示例13可以包括示例11-12中任一项的主题,还包括:确定所述请求包括写入一个或多个PCIe寄存器的写请求;以及丢弃所述写请求。
示例14可以包括示例11-13中任一项的主题,并且还可以包括:从端点设备接收对所述请求进行响应的响应消息;确定所述响应消息包括PCIe特定信息;以及在发送所述响应消息之前修改或丢弃所述PCIe特定信息。
示例15可以包括示例11-14中任一项的主题,还包括:从端点设备接收PCIe特定消息;以及将所述PCIe特定消息重新路由到事件处理程序。
示例16可以包括示例15的主题,其中,所述PCIe特定消息包括PCIe错误消息,并且所述方法还包括将所述PCIe错误消息转发到PCIe错误处理程序。
示例17可以包括示例11-16中任一项的主题,还包括:确定所述请求消息包括访问端点设备的PCIe特定寄存器的请求和访问所述端点设备的非PCIe特定寄存器的请求;向所述端点设备发送访问所述非PCIe特定寄存器的所述请求;以及隐藏访问所述PCIe特定寄存器的所述请求。
示例18可以包括示例11-17中任一项的主题,其中所述PCIe特定寄存器是与符合PCIe的根复合体、符合PCIe的根复合体控制器或PCIe端口中的一个或多个相关联的寄存器。
示例19是主机系统,其包括:运行操作系统的处理器;符合快速外围组件互连(PCIe)的根复合体,所述符合PCIe的根复合体;以及仿真硬件。所述仿真硬件包括逻辑,用于:从所述操作系统接收寄存器访问请求;确定所述请求消息中的一个或多个PCIe特定寄存器;以及对所述操作系统隐藏所述PCIe特定寄存器。
示例20可以包括示例19的主题,还包括符合PCIe的端口,所述仿真硬件包括逻辑,用于对所述操作系统隐藏与所述符合PCIe的端口相关联的PCIe特定寄存器。
示例21可以包括示例19-20中任一项的主题,还包括符合PCIe的端点设备,其中,所述仿真硬件用于对所述操作系统隐藏与所述符合PCIe的端点设备相关联的PCIe特定寄存器。
示例22可以包括示例19-21中任一项的主题,其中,所述仿真硬件包括逻辑,用于基于从所述寄存器访问请求识别的寄存器访问的类型来隐藏PCIe特定寄存器。
示例23可以包括示例22的主题,其中,所述仿真硬件包括逻辑,用于丢弃从所述操作系统接收的对PCIe特定寄存器的写请求以及响应于从所述操作系统接收的对PCIe特定寄存器的读请求而提供空数据。
示例24可以包括示例权利要求22的主题,其中,所述仿真硬件包括逻辑,用于通过创建不符合PCIe协议的修改的寄存器信息来修改响应于寄存器访问请求而接收的PCIe特定寄存器信息,以及将经修改的寄存器信息发送给所述操作系统。
示例25可以包括示例19-24中任一项的主题,还包括至少部分地以硬件实现的符合PCIe的事件处理程序,并且其中:所述仿真硬件包括逻辑,用于:从符合PCIe的连接的设备接收一个或多个PCIe特定消息;以及将所述一个或多个PCIe特定消息重新路由到所述符合PCIe的事件处理程序。

Claims (25)

1.一种至少部分地以硬件实现的装置,所述装置包括硬件逻辑,用于:
接收访问硬件设备的一个或多个寄存器的请求消息;
确定所述请求消息包括访问一个或多个快速外围组件互连(PCIe)特定寄存器的请求;以及
对所述请求消息进行响应而不提供与所述一个或多个PCIe特定寄存器相关联的信息。
2.如权利要求1所述的装置,还包括逻辑,用于:
确定所述请求消息包括读取一个或多个PCIe寄存器的读请求;并且其中,所述逻辑通过发送没有PCIe特定寄存器值的比特串来对所述读请求进行响应。
3.如权利要求1所述的装置,还包括逻辑,用于:
确定所述请求消息包括写入一个或多个PCIe特定寄存器的写请求;并且其中,所述逻辑丢弃所述写请求。
4.如权利要求1-3中任一项所述的装置,还包括逻辑,用于:
从端点设备接收对所述请求消息进行响应的响应消息;
确定所述响应消息包括PCIe特定信息;以及
在发送所述响应消息之前修改或丢弃所述PCIe特定信息。
5.如权利要求1-3中任一项所述的装置,还包括逻辑,用于:
从端点设备接收PCIe特定消息;以及
将所述PCIe特定消息重新路由到事件处理程序。
6.如权利要求5所述的装置,其中,所述PCIe特定消息包括PCIe错误消息,并且所述逻辑用于将所述PCIe错误消息转发到PCIe错误处理程序。
7.如权利要求1-3中任一项所述的装置,还包括逻辑,用于:
确定所述请求消息包括访问端点设备的PCIe特定寄存器的请求和访问所述端点设备的非PCIe特定寄存器的请求;
向所述端点设备发送访问所述非PCIe特定寄存器的所述请求消息;以及
隐藏所述PCIe特定寄存器。
8.如权利要求1-3中任一项所述的装置,其中,所述装置驻留在符合PCIe的根复合体的上游。
9.如权利要求1-3中任一项所述的装置,其中,所述装置驻留在符合PCIe的端点设备上。
10.如权利要求1-3中任一项所述的装置,其中,所述PCIe特定寄存器是与符合PCIe的根复合体、符合PCIe的根复合体控制器、或PCIe端口中的一个或多个相关联的寄存器。
11.一种由仿真硬件元件执行的方法,所述方法包括:
接收访问硬件设备的一个或多个寄存器的请求消息;
确定所述请求消息包括访问一个或多个快速外围组件互连(PCIe)特定寄存器的请求;以及
对所述请求消息进行响应而不提供与所述一个或多个PCIe特定寄存器相关联的信息。
12.如权利要求11所述的方法,还包括:
确定所述请求消息包括读取一个或多个PCIe寄存器的读请求;以及发送没有寄存器特定值的比特串。
13.如权利要求11所述的方法,还包括:
确定所述请求消息包括写入一个或多个PCIe寄存器的写请求;以及丢弃所述写请求。
14.如权利要求11-13中任一项所述的方法,还包括:
从端点设备接收对所述请求消息进行响应的响应消息;
确定所述响应消息包括PCIe特定信息;以及
在发送所述响应消息之前修改或丢弃所述PCIe特定信息。
15.如权利要求11-13中任一项所述的方法,还包括:
从端点设备接收PCIe特定消息;以及
将所述PCIe特定消息重新路由到事件处理程序。
16.如权利要求15所述的方法,其中,所述PCIe特定消息包括PCIe错误消息,并且所述方法还包括将所述PCIe错误消息转发到PCIe错误处理程序。
17.如权利要求11-13中任一项所述的方法,还包括:
确定所述请求消息包括访问端点设备的PCIe特定寄存器的请求和访问所述端点设备的非PCIe特定寄存器的请求;
向所述端点设备发送访问所述非PCIe特定寄存器的所述请求消息;以及
放弃发送访问所述PCIe特定寄存器的所述请求。
18.如权利要求11-13中任一项所述的方法,还包括生成类型0配置寄存器访问消息,所述类型0配置被配置用于小巧端点设备;并且跨符合PCIe的链路将所述类型0配置寄存器转发到所述小巧端点设备。
19.一种主机系统,包括:
运行操作系统的处理器;
符合快速外围组件互连(PCIe)的根复合体,所述符合PCIe的根复合体;以及
仿真硬件,包括逻辑,用于:
从所述操作系统接收寄存器访问请求消息;
确定所述请求消息中的一个或多个PCIe特定寄存器;以及
对所述操作系统隐藏所述PCIe特定寄存器。
20.如权利要求19所述的主机系统,还包括符合PCIe的端口,所述仿真硬件包括逻辑,用于对所述操作系统隐藏与所述符合PCIe的端口相关联的PCIe特定寄存器。
21.如权利要求19所述的主机系统,还包括符合PCIe的端点设备,其中,所述仿真硬件包括逻辑,用于对所述操作系统隐藏与所述符合PCIe的端点设备相关联的PCIe特定寄存器。
22.如权利要求19所述的主机系统,其中,所述仿真硬件包括逻辑,用于基于从所述寄存器访问请求消息识别的寄存器访问的类型来隐藏PCIe特定寄存器。
23.如权利要求22所述的主机系统,其中,所述仿真硬件包括逻辑,用于丢弃从所述操作系统接收的对PCIe特定寄存器的写请求以及响应于从所述操作系统接收的对PCIe特定寄存器的读请求而提供空数据。
24.如权利要求22所述的主机系统,其中,所述仿真硬件包括逻辑,用于通过创建不符合PCIe协议的修改的寄存器信息来修改响应于寄存器访问请求消息而接收的PCIe特定寄存器信息,以及将经修改的寄存器信息发送给所述操作系统。
25.如权利要求19所述的主机系统,还包括至少部分地以硬件实现的符合PCIe的事件处理程序,并且其中:
所述仿真硬件包括逻辑,用于:
从符合PCIe的连接的设备接收一个或多个PCIe特定消息;以及
将所述一个或多个PCIe特定消息重新路由到所述符合PCIe的事件处理程序。
CN201810988355.4A 2017-09-28 2018-08-28 小巧PCIe端点的根复合体集成端点仿真 Pending CN109582998A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/718,110 US20190095554A1 (en) 2017-09-28 2017-09-28 Root complex integrated endpoint emulation of a discreet pcie endpoint
US15/718,110 2017-09-28

Publications (1)

Publication Number Publication Date
CN109582998A true CN109582998A (zh) 2019-04-05

Family

ID=65807556

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810988355.4A Pending CN109582998A (zh) 2017-09-28 2018-08-28 小巧PCIe端点的根复合体集成端点仿真

Country Status (2)

Country Link
US (1) US20190095554A1 (zh)
CN (1) CN109582998A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112131147A (zh) * 2020-09-21 2020-12-25 成都海光微电子技术有限公司 一种控制器验证方法、装置、系统、电子设备及存储介质

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10545773B2 (en) 2018-05-23 2020-01-28 Intel Corporation System, method, and apparatus for DVSEC for efficient peripheral management
US11815976B2 (en) * 2019-05-22 2023-11-14 Qualcomm Incorporated Bandwidth based power management for peripheral component interconnect express devices
US11650835B1 (en) * 2020-03-31 2023-05-16 Amazon Technologies, Inc. Multiple port emulation
CN112363961A (zh) * 2020-11-16 2021-02-12 深圳市联新移动医疗科技有限公司 消息读取方法及系统
CN113468010B (zh) * 2021-09-02 2021-11-16 湖北芯擎科技有限公司 文件处理方法、装置、电子设备和计算机可读存储介质
CN115904520B (zh) * 2023-03-13 2023-06-06 珠海星云智联科技有限公司 基于pcie拓扑状态变更的配置保存方法及相关设备

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110246686A1 (en) * 2010-04-01 2011-10-06 Cavanagh Jr Edward T Apparatus and system having pci root port and direct memory access device functionality
CN102326362A (zh) * 2009-03-31 2012-01-18 英特尔公司 将端点逻辑灵活地集成到各种平台
US20130007332A1 (en) * 2011-06-30 2013-01-03 Chee Hak Teh Controllable transaction synchronization for peripheral devices
CN104011681A (zh) * 2012-01-06 2014-08-27 国际商业机器公司 向逻辑分区提供反映处理器核的独占使用的硬件线程特定信息
CN104052621A (zh) * 2013-03-15 2014-09-17 英特尔公司 用于跨快速外围组件互连(pcie)段的平台管理消息的方法和系统
WO2015099724A1 (en) * 2013-12-26 2015-07-02 Intel Corporation Pci express enhancements
WO2015099660A1 (en) * 2013-12-23 2015-07-02 Intel Corporation Integrated component interconnect
WO2015108522A1 (en) * 2014-01-16 2015-07-23 Intel Corporation An apparatus, method, and system for a fast configuration mechanism
CN104932996A (zh) * 2014-03-20 2015-09-23 英特尔公司 用于控制链路接口的未使用硬件的功率消耗的方法、装置和系统
US20160378702A1 (en) * 2015-06-29 2016-12-29 Ati Technologies Ulc Receiver packet handling

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7418586B2 (en) * 2005-12-05 2008-08-26 Intel Corporation Method and apparatus for assigning devices to a partition
US9734100B2 (en) * 2013-03-21 2017-08-15 Insyde Software Corp. Network controller sharing between SMM firmware and OS drivers
US9244874B2 (en) * 2013-06-14 2016-01-26 National Instruments Corporation Selectively transparent bridge for peripheral component interconnect express bus systems
EP3204862B1 (en) * 2014-10-05 2019-09-18 Amazon Technologies Inc. Emulated endpoint configuration

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102326362A (zh) * 2009-03-31 2012-01-18 英特尔公司 将端点逻辑灵活地集成到各种平台
CN103795615A (zh) * 2009-03-31 2014-05-14 英特尔公司 灵活地将终端逻辑集成到各种平台的装置、方法和系统
US20110246686A1 (en) * 2010-04-01 2011-10-06 Cavanagh Jr Edward T Apparatus and system having pci root port and direct memory access device functionality
US20130007332A1 (en) * 2011-06-30 2013-01-03 Chee Hak Teh Controllable transaction synchronization for peripheral devices
CN104011681A (zh) * 2012-01-06 2014-08-27 国际商业机器公司 向逻辑分区提供反映处理器核的独占使用的硬件线程特定信息
CN104052621A (zh) * 2013-03-15 2014-09-17 英特尔公司 用于跨快速外围组件互连(pcie)段的平台管理消息的方法和系统
WO2015099660A1 (en) * 2013-12-23 2015-07-02 Intel Corporation Integrated component interconnect
WO2015099724A1 (en) * 2013-12-26 2015-07-02 Intel Corporation Pci express enhancements
WO2015108522A1 (en) * 2014-01-16 2015-07-23 Intel Corporation An apparatus, method, and system for a fast configuration mechanism
CN104932996A (zh) * 2014-03-20 2015-09-23 英特尔公司 用于控制链路接口的未使用硬件的功率消耗的方法、装置和系统
US20160378702A1 (en) * 2015-06-29 2016-12-29 Ati Technologies Ulc Receiver packet handling

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112131147A (zh) * 2020-09-21 2020-12-25 成都海光微电子技术有限公司 一种控制器验证方法、装置、系统、电子设备及存储介质

Also Published As

Publication number Publication date
US20190095554A1 (en) 2019-03-28

Similar Documents

Publication Publication Date Title
CN109582998A (zh) 小巧PCIe端点的根复合体集成端点仿真
CN105793829B (zh) 用于集成组件互连的装置、方法和系统
CN109154924A (zh) 多个上行链路端口设备
JP6311174B2 (ja) 共有メモリ、およびノード間のi/oサービス
CN107077521B (zh) 片上系统配置元数据
CN108614783B (zh) 一致性协议表
CN105765544B (zh) 多芯片封装链路
CN104823167B (zh) 现场错误恢复
CN110262923A (zh) 带内重定时器寄存器访问
CN110036380A (zh) 用于高速互连中低延迟的双模phy
CN110366842A (zh) 可调节的重定时器缓冲器
CN105279131B (zh) 用于模块式管芯上相干互连的方法、设备和系统
CN104932996B (zh) 用于控制链路接口的未使用硬件的功率消耗的方法、装置和系统
CN110088737A (zh) 将并发程序转换为可部署在基于fpga的云基础设施上的硬件的综合路径
CN107430567A (zh) 共享缓冲存储器路由
JP2017504089A5 (zh)
CN108604209A (zh) 扁平化端口桥
CN110196771A (zh) 经由时钟请求消息传递协议在cpu管芯上进行功率管理的方法、装置和系统
CN101799760A (zh) 生成任意目标架构的并行单指令多数据代码的系统和方法
CN108292267A (zh) 总线-装置-功能地址空间的推测性枚举
CN109844725A (zh) 点对点互连中的非对称通道
CN107005492B (zh) 用于芯片上网络上的多播和缩减通信的系统
CN107113253A (zh) 用于片上网络的空间划分的电路交换信道
CN105247476A (zh) 片上网格互连
CN107078971A (zh) 组合保证吞吐量和尽力而为的片上网络

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination