CN104050118B - 提供对设备功能的访问的装置、系统和方法 - Google Patents
提供对设备功能的访问的装置、系统和方法 Download PDFInfo
- Publication number
- CN104050118B CN104050118B CN201410095775.1A CN201410095775A CN104050118B CN 104050118 B CN104050118 B CN 104050118B CN 201410095775 A CN201410095775 A CN 201410095775A CN 104050118 B CN104050118 B CN 104050118B
- Authority
- CN
- China
- Prior art keywords
- function
- equipment
- data structure
- context data
- software process
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
- G06F13/423—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus with synchronous protocol
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Systems (AREA)
- Stored Programmes (AREA)
Abstract
描述了提供对设备功能的访问的装置、系统和方法。描述了用于通过输入/输出(I/O)设备提供对功能的访问的技术和机制。在一个实施方式中,包括I/O设备的计算机系统的主存储器存储把功能与用于访问该功能的上下文关联起来的功能上下文数据结构。I/O设备存储用于提供功能的I/O设备的配置。在另一实施方式中,软件进程与功能上下文数据结构交换信息以便得到对功能的访问。I/O设备执行功能上下文数据结构和配置数据结构相对于彼此的同步,其中,功能上下文数据结构操作为寄存器级接口,所述寄存器级接口把I/O设备和软件进程相互进行接口。
Description
技术领域
在此讨论的实施方式涉及计算机系统的领域。尤其,某些实施方式属于高速度点对点互连和通信体系结构的领域。
背景技术
计算机系统包括多种组件和元素。各组件往往经由总线或互连耦合。外围组件互连(PCI)是在1992年开发的第二代并行总线体系结构,用于替代工业标准体系结构(ISA)总线。在PCI中,所有设备共享相同的双向32位(或64位)并行信号路径。PCI总线带来超过ISA总线的许多优点,包括即插即用操作。PCIExpress(PCIe)是被设计为代替PCI总线的第三代通用串行输入/输出(IO)互连。除了是总线之外,PCIe是围绕被称为巷道的点对点串行链路而构造的。
在PCI/PCIe体系结构中,软件维护紧密地使得系统硬件的物理结构并行的总线/设备/功能(BDF)数据结构。PCI和PCIE的即插即用机制支持运行时插入或移除硬件组件(以及因而插入或移除它们的功能性)。然而,这样的机制在在平台的运行时操作期间不太可能添加或移除的I/O硬件的操作方面往往是次优的。随着制造技术继续趋向于集成,硬件功能性永久地被附加到或甚至被集成到中央处理单元(CPU)或其他关键的平台逻辑的半导体管芯,这种类型的I/O硬件日益普遍。
设备发现和配置的PCI/PCIe的常规设备/功能模型具有在提供把硬件资源映射到软件活动的灵活性方面的限制。PCI设备/功能模型的附加问题是设备发现和配置技术和机制是低效的,使得从睡眠状态或其他这样的低功率状态恢复的时间变慢。
发明内容
本发明的一方面涉及一种输入/输出I/O设备,包括:存储器,用于存储包括功能的配置的配置数据结构;以及相干性引擎,其包括用于向软件进程提供对所述功能的访问的电路,包括所述相干性引擎执行所述功能上下文数据结构和所述配置数据结构相对于彼此的同步,其中所述功能上下文数据结构操作为寄存器级接口,所述寄存器级接口把所述输入/输出I/O设备和所述软件进程相互进行接口。
本发明的另一方面涉及一种输入/输出I/O设备处的方法,所述方法包括:在所述输入/输出I/O设备的配置数据结构中存储功能的配置;以及向软件进程提供对所述功能的访问,所述软件进程通过耦合到所述输入/输出I/O设备的处理器和主存储器执行,所述主存储器存储功能上下文数据结构,所述提供对所述功能的访问包括相对于彼此同步所述功能上下文数据结构和所述配置数据结构,其中所述软件进程与所述功能上下文数据结构交换信息以便获得对所述功能的访问,其中所述功能上下文数据结构操作为寄存器级接口,所述寄存器级接口把所述输入/输出I/O设备和所述软件进程相互进行接口。
本发明的又一方面涉及一种设备,包括:一个或多个接口,用于把功能上下文管理器耦合到主机处理器、主存储器和I/O设备,所述主机处理器和所述主存储器用于软件进程的执行;上下文管理逻辑,其包括经由所述一个或多个接口访问所述主存储器的功能上下文数据结构的电路,其中所述上下文管理逻辑通过所述功能上下文数据结构定义功能与上下文的关联;以及分配管理逻辑,其包括用于向所述I/O设备或所述软件进程提供对所述功能上下文数据结构的引用的电路,其中基于所述引用,所述I/O设备向所述软件进程提供对所述功能的访问,所述访问根据所述上下文,其中所述软件进程与所述功能上下文数据结构交换信息以便得到对所述功能的访问,其中所述功能上下文数据结构操作为寄存器级接口,所述寄存器级接口把所述I/O设备和所述软件进程相互进行接口。
本发明的再一方面涉及一种设备处的方法,所述方法包括:访问被耦合到所述设备的主存储器的功能上下文数据结构,包括通过所述功能上下文数据结构定义功能与上下文的关联,其中软件进程通过被耦合到所述设备的所述主存储器和主机处理器执行,其中所述设备还被耦合到I/O设备;向所述I/O设备或所述软件进程提供对所述功能上下文数据结构的引用,其中基于所述引用,所述I/O设备向所述软件进程提供对所述功能的访问,所述访问根据所述上下文,其中所述软件进程与所述功能上下文数据结构交换信息以便得到对所述功能的访问,其中所述功能上下文数据结构操作为寄存器级接口,所述寄存器级接口把所述I/O设备和所述软件进程相互进行接口。
本发明的又再一方面涉及一种装置,包括:存储器,其用于存储指令;处理器,其操作用于执行:在所述I/O设备的配置数据结构中存储功能的配置;以及向软件进程提供对所述功能的访问,所述软件进程通过被耦合到所述I/O设备的处理器和主存储器来执行,所述主存储器存储功能上下文数据结构,所述提供对所述功能的访问包括相对于彼此同步所述功能上下文数据结构和所述配置数据结构,其中所述功能上下文数据结构操作为寄存器级接口,所述寄存器级接口把所述I/O设备和所述软件进程相互进行接口。
附图说明
在附图的各图中作为示例而非限制阐释本发明的各种实施方式,附图中:
图1是阐释根据一种实施方式提供对输入/输出功能的访问的系统的元素的框图。
图2是阐释根据一种实施方式提供功能以供由软件进程访问的设备的元素的框图。
图3是阐释根据一种实施方式管理对输入/输出功能的访问的逻辑的元素的框图。
图4A是阐释根据一种实施方式的输入/输出设备的配置数据的元素的框图。
图4B是阐释根据一种实施方式用于把输入/输出功能与一个或多个上下文关联起来的数据结构的元素的框图。
图5是阐释根据一种实施方式用于提供对输入/输出功能的访问的方法的元素的流程图。
图6是阐释根据一种实施方式用于管理对输入/输出功能的访问的方法的元素的流程图。
图7是阐释根据一种实施方式用于提供对输入/输出功能的访问的分层数据结构的元素的框图。
图8是阐释根据一种实施方式执行输入/输出操作的计算机平台的元素的框图。
具体实施方式
在此讨论的实施方式不同地提供用于把功能与一个或多个上下文关联起来的机制或技术,这些上下文允许、限定或以另外方式表征软件进程对功能的访问。功能与一个或多个上下文的这样的关联在此不同地称为“功能-上下文”或“FuncText”。
在一个实施方式中,相互关联的功能和上下文的实例(在此被称为“功能-上下文实例”)可以包括被创建、通信或以另外方式确定以便界定该功能与该上下文相互关联的信息的实例。例如,功能-上下文实例可以是或可以包括用于标识该功能和该上下文相互关联的注册或主存储器中其他数据存储。基于所定义的关联,一个或多个机制可以操作为允许根据所关联的上下文利用功能(和/或限定该功能的使用)。功能可以不同地可由独立于FuncText(FT)实例但与其并行的一些替代机制访问。
在一个实施方式中,FuncText数据结构——例如由主机保存在DRAM或其他主存储器中的FuncText数据结构——存储描述实际的设备状态和/或所期望的设备状态以便得到功能的执行的数据。可以由实现设备状态的设备和/或由要访问该设备提供的功能的软件进程不同地把这样的设备状态信息可以传递到FuncText数据结构和/或从其传递。这样的交换可以提供在主存储器中作为寄存器级接口操作的FuncText数据结构,以供把设备和软件进程相互连接起来。在一个实施方式中,该接口独立于主机OS的一些或全部其他软件进程(例如包括任何虚拟机监视器、客户OS和/或类似物)。
图1阐释根据一种实施方式包括FuncText特征用于提供功能访问的计算机系统100的元素。计算机系统100可以包括用于在处理器102——例如包括CPU或其他主机处理器——和芯片组104之间传输信息的处理器系统总线(前端总线(FSB))103。处理器102可以包括单核处理器或多核芯片多处理器(CMP),以便作为系统100主机处理器而操作。在一种实施方式中,芯片组104中的一些或全部可以被集成在处理器102内以提供片上系统。
芯片组104可以包括在系统100的处理器102和一个或多个I/O设备之间交换通信的电路逻辑——例如其中这样的电路逻辑根据PCI和/或PCIe规范操作为根联合体(rootcomplex)的系统。例如,芯片组104可以包括不同地经由各自的互连直接地或间接地耦合到这样的一个或多个I/O设备的一个或多个集线器设备(未示出)——例如包括存储器控制器集线器、I/O控制器集线器和/或类似物。
作为阐释而非限制,芯片组104可以经由点对点互连107耦合到主存储器140且经由点对点互连112耦合到I/O设备120。在一种实施方式中,主存储器140可以包括但不限于随机存取存储器(RAM)、动态RAM(DRAM)、静态RAM(SDRAM)、同步DRAM(DRAM)、双倍数据率(DDR)SDRAM(DDR-SDRAM)、Rambus DRAM(RDRAM)或能够支持数据的高速缓冲的任何设备。I/O设备120可以包括用于交换数据的各种设备中的任任意个,包括但不限于音频控制器、视频控制器、网络接口卡、存储控制器和/或类似物。计算机系统100还可以包括非易失性(例如,闪速)存储器116以便操作为“固件集线器”或FWH,它可以包括执行计算机系统100的初始化的基本输入/输出系统(BIOS)109。
在替代的实施方式中,I/O设备120可以经由一个或多个桥、交换机或其他中间设备耦合到芯片组104。特定实施方式在把I/O设备120与芯片组104互连起来的点对点链路的具体数量或排列方面不受限制。另外或替代地,根据不同的实施方式,芯片组104可以耦合到各种一个或多个其他I/O设备中的任何设备。作为阐释而非限制,系统100还可以包括分别经由交换机108以及链路114-1和114-2耦合到链路114-0的I/O设备110-1、110-2。链路114-0又可以把交换机108耦合到芯片组104的输入/输出端口106。
在一种实施方式中,互连107、112支持点对点链路协议,包括但不限于通用系统接口(CSI)、快速外围组件互连(PCI)(PCIe)或其他类似的点对点互连。因此,在一种实施方式中,互连107、112中的一个或两者可以提供点对点链路,例如由PCI Express基本规范修订版1.1定义为允许在芯片组104以及I/O设备120和主存储器140中的一个或两者之间的单向通信的点对点链路。在一种实施方式中,芯片组104可以包括外围组件互连20根端口——例如包括输入/输出端口106中的一些或全部——以便把链路107、112耦合到芯片组104的链路控制器(未示出)。尽管可以参照PCIe提供在此描述的一个或多个实施方式,但本领域中的技术人员应认识到,在此描述实施方式不限于支持PCIe的点对点链路,且因而适用于其他类似的点对点链路协议。
在常规的PCI和PCIe体系结构中,I/O设备通常限于在PCI功能和OS驱动器实例之间的一对一映射。Functext概念提供源自这种一对一关系的泛化,例如其中FuncText实例可以被用来不同地使得特定的软件进程对应于一个特定的硬件资源、对应于多个I/O设备的硬件资源池和/或对应于单个I/O设备的硬件资源子集。
在根据一种实施方式的说明性场景中,处理器102可以执行要访问功能的软件进程130——例如其中软件进程130要与要执行功能的一些I/O硬件交换通信。软件进程130可以包括这样的I/O硬件的驱动器,但某些实施方式不限于此。在一个实施方式中,软件进程130的执行包括主存储器140维护软件进程130的状态——例如维护为软件状态142。主存储器140还可以存储FuncText数据结构144,FuncText数据结构144与一个或多个FuncText硬件机制相组合,促进软件进程130的这样的功能访问。例如,FuncText数据结构144可以存储描述供软件进程130访问的功能的I/O设备120的实际状态和/或所期望的状态的数据。
作为阐释而非限制,I/O设备120可以包括配置数据124以便存储I/O设备120执行具体功能的配置。I/O设备120的其他逻辑(未示出)可以根据配置数据124中界定的配置执行功能,例如响应于I/O设备120经由104接收到对功能的请求。
例如,系统100可以包括——例如在芯片组104中——FuncText(FT)管理器150,以便准备把FT数据结构144用作在要提供功能的设备和要访问功能的软件进程之间的寄存器级接口。根据一种实施方式,这样的准备可以是响应于FT管理器150标识I/O设备120支持FuncText功能性的能力。
在一个实施方式中,FT管理器150在主存储器140的物理位置中创建FT数据结构144和/或执行操作以便在运行时不同地添加、删除或以另外方式修改FT数据结构144的数据。在一个实施方式中,FT管理器150可以被修改为包括对I/O设备120的引用和/或对软件进程130的引用。替代地或另外,FT管理器150可以直接地或间接地把对FT数据结构144的某种引用(例如基地址、指针、句柄和/或类似物)传输给I/O设备120和/或软件进程130,以供用于从FT数据结构144读取和/或向其写入。
软件进程130对I/O设备120的功能的访问可以包括I/O设备120和软件进程130经由作为主存储器140中的寄存器级接口的FT数据结构144通信。例如,软件进程130可以执行指定与FT数据结构144的数据交换的一个或多个指令,且I/O设备120的功能访问逻辑122可以不同地使得配置数据124与FT数据结构144同步。例如,软件进程130可以把不同类型的数据写到FT数据结构144中的不同位置,其中I/O设备120可以不同地把FT数据结构144中的这样的不同位置中的每一个与配置数据124中的不同的相应位置同步起来。
图2阐释根据一种实施方式用于提供对功能的访问的输入/输出(IO)设备200的元素。例如,I/O设备200可以包括支持计算机系统100的一个或多个FuncText机制的机制。在一个实施方式中,I/O设备200包括I/O设备120的特征中的一些或全部。
I/O设备200可以包括用于计算机平台中的操作的电路——例如包括用于经由一个或多个点对点互连把I/O设备200与计算机平台的芯片组耦合起来的接口210。I/O设备200可以经由接口210交换与诸如PCI或PCIe等的通信标准兼容的通信205。
I/O设备200还可以包括能够执行一个或多个功能的硬件(未示出)——例如供经由接口210与I/O设备200进行直接或非直接通信的软件进程使用。作为阐释而非限制,I/O设备200可以支持可以根据现有的PCI总线、设备、功能发现约定标识的各种功能中的任意个。在由FuncText实例将其与上下文关联起来的具体的I/O功能类型方面,某些实施方式不受限制。
在一个实施方式中,I/O设备200还包括FuncText机制——例如包括数据、控制电路、通信电路和/或类似物——以提供对至少一个这样的功能的访问(和/或限定对至少一个这样的功能的访问)。作为阐释而非限制,I/O设备200可以包括初始化逻辑230,用以在计算机平台的启动序列期间执行一个或多个操作。在一个实施方式中,初始化逻辑230包括或耦合到I/O设备200的仓库235(例如非易失性存储器的一个或多个寄存器),仓库235存储已经例如由I/O设备200的生产商预先编程的、用于标识I/O设备200的能力的数据。
基于这样的预先编程的数据,初始化逻辑230可以在通信205中发送信息以便标识I/O设备200的设备类型、I/O设备200能够执行的功能和/或I/O设备200的用于提供对该功能的访问的一个或多个FuncText机制。在启动期间,来自初始化逻辑230的一些或全部这样的信息可以例如直接地或间接地被传输到BIOS进程或计算机平台的其他设备/功能发现机制。
另外或替代地,初始化逻辑230可以经由通信205接收对用于FuncText实例的FuncText数据结构的引用(例如地址、指针、句柄等等),该FuncText实例把该功能与一个或多个上下文关联起来。如在此讨论的,这样的引用可以由用于管理主机端上的FuncText功能性的专用电路逻辑提供——例如其中这样的电路逻辑在计算机平台的芯片组中操作。随后,I/O设备200可以把该引用用来与这样的FuncText数据结构交换信息,以便支持为软件提供对功能的访问。在另一实施方式中,I/O设备200可以在平台的运行时操作期间接收这样的FuncText数据结构引用(或替代的引用)。
在一个实施方式中,I/O设备200包括附加的存储器,以便在如由说明性配置数据250所表示的一个或多个数据结构中存储供I/O设备200提供对功能的访问。配置数据250可以包括例如经由平台芯片组提供的数据(例如来自OS)、由I/O设备200从主存储器检索的数据和/或从仓库235复制的数据。替代地或另外,配置数据250可以包括在平台启动期间提供的信息和/或在平台的运行时操作期间提供的信息。
在一个实施方式中,配置数据250包括常规PCIe设备的配置空间中的一些或全部类型的信息。例如,这样的信息可以包括PCIe 0型头部信息,且在一个实施方式中,还可以包括PCI和/或PCIe支持的一种或多种类型的能力信息。作为阐释而非限制,配置数据250的数据结构可以包括PCI电源管理能力寄存器、消息告知中断(Message SignaledInterrupt,MSI)能力寄存器和/或用于存储能力数据或其他功能上下文信息的各种附加的或替代的寄存器中的任意个。
I/O设备200还可以包括,相干性引擎240包括硬件、固件和/或正在执行的软件的各种组合的任何,以便维护配置数据250中的一些或全部信息,以促进软件进程的功能访问。例如,根据不同的实施方式,相干性引擎240可以包括专用集成电路(ASIC)、状态机、微控制器、微处理器、处理器和/或各种其他电路逻辑中的任何。维护配置数据250可以包括与主存储器中的FuncText数据结构交换通信的相干性(coherency)引擎240。例如,相干性引擎240可以执行同步进程以便用软件进程已经写到FuncText数据结构的数据来更新配置数据250。替代地或另外,同步进程可以用来自配置数据250的数据——例如包括随后由软件进程从FuncText数据结构读取的数据——来更新FuncText数据结构。这样的同步可以提供在主存储器中的FuncText数据结构和配置数据250之间的相干性——例如在某个时刻它们存储各自的等效、一致或以另外方式相干的信息的场合。
图3阐释根据一种实施方式用于管理向软件进程提供I/O功能访问的FuncText管理器300的元素。在一个实施方式中,FT管理器300促进在软件进程和实现由软件进程访问的功能的设备——例如包括I/O设备200的一些或全部特征——之间的通信。例如,FT管理器300可以包括FT管理器150的一些或全部特征。
FT管理器300可以包括由说明性接口310表示的一个或多个接口,用于把FT管理器300均经由一个或多个各自的点对点互连与计算机平台的主存储器和/或与一个或多个I/O设备耦合起来。替代地,FT管理器300可以被合并到包括这样的一个或多个接口的装置中。在一个实施方式中,FT管理器300经由与通信标准诸如PCI或PCIE等的接口310交换通信305。
通信305可以不同地提供如何访问I/O功能的管理。例如,FT管理器300的分配管理逻辑320可以包括发起用于不同地创建或以另外方式配置主存储器和/或要执行功能的I/O设备中的一个或多个数据结构的命令的电路。替代地或另外,分配管理逻辑320可以发起通信以便把FuncText实例与执行该FuncText实例的功能的I/O设备硬件关联起来。作为阐释而非限制,分配管理逻辑320可以在用于具体的FuncText实例的FuncText数据结构中存储对执行功能的I/O设备的引用。
在一个实施方式中,分配管理逻辑320可以给I/O设备和/或软件进程提供对FuncText数据结构的引用——例如以供随后用于同步或以另外方式访问FuncText数据结构。分配管理逻辑320也可以显式地向I/O设备指出要访问功能的软件进程,但某些实施方式不限于此。分配管理逻辑320还可以建立向I/O设备通知对FT数据结构的改变的一个或多个机制,其中与I/O设备配置数据的同步可以基于这样的通知。例如,分配管理逻辑320可以直接地或间接地配置一个或多个门铃(doorbell)寄存器、轻量级通知(LN)信道——例如根据PCI-SGI的LN协议的LN信道——和/或用于向I/O设备通知对FT数据结构的更新的各种其他装置中的任何。在一个实施方式中,在计算机平台的运行时操作期间,分配管理逻辑320可以不同地更新、删除和/或修改一个或多个FuncText数据结构、FuncText数据结构、I/O设备引用、通知机制和/或类似物。
在一个实施方式中,FT管理器300进一步包括标识由FuncText实例把哪一具体功能和哪一(哪些)具体上下文相互关联起来的逻辑。例如,FT管理器300的上下文管理逻辑330可以检测计算机平台的一个或多个I/O设备中的功能的可用性——例如基于PCI和/或PCIE的常规设备/功能发现机制。上下文管理逻辑330还可以检测到这样的一个或多个I/O设备中的一些或全部支持用于提供对功能的访问的基于FT的机制。
在一个实施方式中,上下文管理逻辑330可以接收——例如从要提供功能的具体I/O设备——标识至少在该具体I/O设备的情况下要求的一个或多个上下文的信息。替代地或另外,上下文管理逻辑330可以从主机OS或其他源接收标识至少相对于要访问功能的软件进程需要的一个或多个上下文的信息。在一个实施方式中,提供给上下文管理逻辑330的信息可以标识基于计算机平台施加的其他约束的一个或多个上下文。作为阐释而非限制,这样的约束可以包括各种服务品质要求中的任何和/或通信带宽、处理周期、存储容量的资源分配约束和/或平台上的各种其他受限资源中的任何。在某些实施方式中,把与功能相关联的一些或全部上下文作为先验信息提供给上下文管理逻辑330——例如从主机OS、专用的资源管理和/或QoS强制硬件机制等等。在计算机平台的运行时操作期间,上下文管理逻辑330可以改变FuncText数据结构和/或I/O设备数据结构中的信息,以便不同地更新、删除和/或修改功能与关联上下文的关联。
用于实现基于FT的功能访问的数据结构和电路逻辑可以包括用于管理在多个FuncText实例之间分层关系的机制。例如,如在此讨论的,第一FuncText数据结构可以存储指示一些其他FuncText数据结构相对于该第一FuncText数据结构是子FuncText数据结构还是父FuncText数据结构的信息。在这样的实施方式中,FT管理器300还可以包括分层管理逻辑340,以便执行用于创建、删除、修改或以另外方式管理这样的分层关系的运行时操作。在特定的其他实施方式中,FT管理器300不提供对分层FuncText关系的这样的支持。也可以作为来自其他代理的OS的先验信息向分层管理逻辑340指出一个或多个分层关系。在一个实施方式中,在计算机平台的运行时操作期间,分层管理逻辑340可以改变一个或多个FuncText数据结构中的信息,以便不同地更新、删除和/或修改在FuncText数据结构之间的分层关系。
图4A阐释根据一种实施方式被存储在I/O设备的数据仓库中的配置数据400的元素。配置数据400可以被存储在例如具有I/O设备120的一个或多个FuncText能力的I/O设备。在一个实施方式中,配置数据400把一些或全部信息存储在配置数据250中。
配置数据400可以包括与PCI 0型配置空间头部兼容的数据结构——且在一个实施方式中,可以作为PCI 0型配置空间头部而提供该数据结构。例如,配置数据400可以包括存储设备型号的标识符的设备标识符(ID)寄存器402、存储被指派给设备厂商的标识符的厂商ID寄存器404、存储某些错误是否已经发生的指示的状态寄存器406和存储表示不同地启用/禁用的特征的位掩码的命令寄存器408。配置数据400还可以存储设备的功能分类的类代码寄存器410、存储设备的修订标识符的修订ID 412和存储该设备使用的内存地址、地址偏移量等等的各种基地址寄存器414。在一个实施方式中,配置数据400还存储用于存储设备有多频繁地需要访问PCI/PCIe互连的指示的寄存器Max_Lat 416、指定设备所要求的突发周期长度的寄存器Min_Gnt 418、指定设备要使用的中断引脚的寄存器Int Pin(中断引脚)420和指定设备的中断引脚连接到其中的输入线的寄存器Int Line(输入线)422。配置数据400中的信息的内容和排列仅仅阐释一种实现,且可以不限于某些实施方式。
图4B阐释根据一种实施方式的FT数据结构440的元素,FT数据结构440被存储在主存储器中,以便充当I/O设备和要访问I/O设备所提供的功能的软件进程的寄存器级接口。在一个实施方式中,FT数据结构440提供由软件进程访问诸如配置数据250的信息等的信息的硬件接口。例如,FT数据结构440可以包括FT数据结构144中的一些或全部特征。
在一个实施方式中,440包括主体460,以便存储信息标识或以另外方式指示供与FuncText实例的功能相关联的FuncText实例的上下文。作为阐释而非限制,主体460可以包括PCI类型0头部462,其例如包括配置数据400的一些或全部特征。在一个实施方式中,PCI类型0头部462对应于在给定时间实现功能的I/O设备的PCI类型0头部。向软件进程提供对功能的访问可以包括访问主存储器以便把PCI类型0头部462以及其本地PCI类型0头部相互同步起来的这样的I/O设备。主体460可以包括用于存储能力数据464的一个或多个附加的寄存器,但某些实施方式不限于此。例如,主体460还可以包括PCI电源管理能力寄存器、消息告知中断(MSI)能力寄存器、PCIe能力寄存器和/或存储能力数据的各种附加的或替代的寄存器中的任何中的一个或多个。这样的能力信息的一个版本还可以在I/O设备中本地存储——例如被存储为不同地与FT数据结构440同步的配置数据400。
FT数据结构440还可以包括用于识别和/或使用FT数据结构440来提供对I/O功能的访问的FT头部450。例如,FT头部450中的信息可以促进把FT数据结构440用作在软件进程和I/O设备的FT专用硬件之间的寄存器级接口。FT头部450可以包括字段——由说明性的驱动器ID字段452表示——用以便存储可以使用由FT数据结构440表示的FuncText实例来访问功能的软件进程的指示。在一个实施方式中,这样的软件进程可以是用于驱动I/O设备的硬件资源的驱动器进程。对于其中要使用厂商提供的设备驱动器的情况,驱动器ID字段452中的信息可以包括或以另外方式基于厂商ID和/或设备ID。替代地,对于其中要使用公共OS驱动器的情形,这样的信息可以包括或以另外方式基于PCI-SIG(外围组件互连特别兴趣小组)对类代码、子类和/或编程接口信息的定义。
FT头部450可以包括由说明性的BDF引用字段454表示的另一字段,用以便存储对执行FuncText实例的功能的I/O设备的任何引用。BDF引用字段454中的信息可以包括指向I/O设备硬件的指针,以便得到具体的总线、设备、功能三联体。如在此讨论的,BDF引用字段454可以被配置为存储空(NULL)指针信息——例如在其中FT数据结构440是FuncText数据结构的分层结构中的一个的实施方式中。
图5阐释根据一种实施方式供I/O设备提供对功能的访问的方法500的元素。例如,方法500可以由包括I/O设备200的一些或全部特征的设备执行。
方法500可以包括,在510处,在I/O设备的配置数据结构中存储功能的配置。在510处所存储的配置可以包括或以另外方式指示I/O设备据此提供对功能的访问的上下文。该配置可以包括,例如,PCI类型0头部中出现的一种类型的配置空间信息。替代地或另外,根据不同的实施方式,配置信息可以包括电源管理能力寄存器信息、SIMD寄存器信息和/或各种其他类型的配置中的任何。
在一个实施方式中,方法500进一步包括,在520,向软件进程提供对功能的访问。软件进程可以是I/O设备的驱动器,但某些实施方式不限于此。可以借助于处理器和被耦合到I/O设备的主存储器执行该软件进程,该主存储器存储功能上下文数据结构。在520,提供对功能的访问可以包括相对于彼此同步功能上下文数据结构和配置数据结构。例如,I/O设备可以在计算机平台的运行时执行期间接收对FuncText数据结构的引用(例如指针、基地址、句柄等等),其中同步基于所接收的对FuncText数据结构的引用。响应于轻量级通知通信或者替代地响应于访问对应于FuncText数据结构的门铃寄存器,I/O设备可以访问FuncText数据结构。在一个实施方式中,主存储器存储FuncText数据结构的分层结构,其包括FuncText数据结构和第二FuncText数据结构,其中软件进程基于第二FuncText数据结构中的信息访问FuncText数据结构。
在一个实施方式中,软件进程与功能上下文数据结构交换信息以便得到对功能的访问,其中功能上下文数据结构操作为寄存器级接口,该寄存器级接口把I/O设备和软件进程彼此进行接口。例如,对软件进程的功能访问可以包括在软件进程和FuncText数据结构之间的交换,这独立于可以借助于主机OS执行的任何其他软件进程而执行。
图6阐释根据一种实施方式设备管理对功能的访问的方法600的元素。例如,方法600可以由包括FT管理器300的一些或全部特征的设备执行。
方法600可以包括,在610,访问被耦合到设备的主存储器的功能上下文数据结构,包括借助于功能上下文数据结构定义功能与上下文的关联。设备执行方法600还可以耦合到I/O设备。软件进程可以借助于被耦合到设备的主存储器和主机处理器执行。
在一个实施方式中,方法600进一步包括,在620,给I/O设备或软件进程提供对功能上下文数据结构的引用,其中,基于该引用,I/O设备向软件进程提供对功能的访问,该访问是根据上下文进行的。软件进程可以与功能上下文数据结构交换信息以便得到对功能的访问,其中功能上下文数据结构操作为寄存器级接口,该寄存器级接口把I/O设备和软件进程相互连接起来。
在计算机平台的运行时操作期间,设备执行方法600还可以把对I/O设备的引用写入到FuncText数据结构。这样的写入可以把FuncText实例从与用于提供对功能的访问的第一I/O设备相关联改变成与用于提供对功能的访问的第二I/O设备相关联。替代地或另外,在计算机平台的运行时操作期间,设备执行方法600可以访问FuncText数据结构以便把FuncText数据结构从定义第一上下文与功能的关联改变成定义第二上下文与功能的关联。在一个实施方式中,设备可以访问FuncText数据结构以便定义主存储器中的FuncText数据结构的分层结构,FuncText数据结构的分层结构包括FuncText数据结构。
图7阐释根据一种实施方式用于提供对I/O功能的访问的主存储器中的FuncText数据结构的分层结构700的元素。分层结构700可以被存储在主存储器140中,例如,以便提供各自供软件进程访问相应I/O功能的一个或多个寄存器级接口。
分层结构700的FT数据结构可以由FuncText管理逻辑在计算机平台的运行时操作期间不同地修改——例如以便改变FuncText实例到I/O设备的关联、改变功能与上下文的相互关联、改变在FuncText数据结构和/或类似物之间的分层关系。在根据一种实施方式的说明性场景中,分层结构700包括用于各种相应FuncText实例的FT数据结构710、720、730。如所示出的,FT数据结构720、730是FT数据结构710的孩子。在一个实施方式中,FT数据结构710、720和730包括分别的FT头部712、722、732,这些FT头部例如可以不同地包括FT头部450的一个或多个特征。作为阐释而非限制,FT 4712、722、732均可以存储相应驱动器标识符信息和对要实现功能的相应设备的任何引用——例如包括BDF指针。
替代地或另外,FT数据结构710、720和730可各自包括相应主体714、724、734,例如,它们不同地包括主体460的一个或多个特征。如图7中所示出,FT数据结构710、720和730的主体714、724、734可以不同地存储PCI类型0头部信息、电源管理能力信息、MSI能力信息、PCIe能力信息或描述所期望的或实际的I/O硬件配置的各种附加的或替代的类型的数据中的任何。
I/O设备和/或FuncText管理器的FT电路逻辑可以访问分层结构700以便动态地分配I/O资源。作为阐释而非限制,用户可以启动应用以便从一些远程源(例如因特网)获得音频内容。该应用又可以请求主机OS分配I/O资源以便解码和呈现流化数据。
响应于这样的请求,主机OS和音频驱动器/子系统可以在主存储器中建立FT数据结构710,供FuncText播放这样的音频内容。FT数据结构710仅可以凭借分层结构700的其他FuncText数据结构间接地与I/O硬件相关联。例如,FT头部712可以包括存储空指针的BDF引用字段,其指示FT数据结构710表示分层结构700的其他FT数据结构中所标识的硬件资源的逻辑分组。
在一个实施方式中,也可以在用于两个附属FuncText主存储器中建立FT数据结构720、730。FT头部712、722、732中的每一个可以标识相应数量的子FuncText数据结构和/或相应数量的父FuncText数据结构。替代地或另外,FT头部712可以包括指向其各自的子FT数据结构720、730的指针。在另一实施方式中,FT头部722、732可以不同地包括指回相应父FT数据结构710的指针(未示出)。
FT数据结构720可以,例如,向软件提供对用于被集成到计算机平台的扬声器的硬件音频控制器740的访问。此外,FuncText数据结构730可以给软件提供对NIC 750的访问,NIC750把信道音频回流到通过用户的家庭网络连接的扬声器。用户一旦终止该应用,可以在在运行时期间释放FuncText 710、720、730中的一些或全部,并释放它们各自的硬件资源。
现在参见图8,所示出的是根据一种实施方式的系统800的框图。如图8中所示出,多处理器系统800是点对点(P-P)互连系统,且包括经由P-P互连850耦合的第一处理器870和第二处理器880。处理器870和880中的每一个可以是某种版本的处理器。尽管借助于两个处理器870、880示出,但应理解,本发明的范围不限于此。在其他实施方式中,各种一个或多个附加的或替代的处理器中的任何可以出现在系统800中。
处理器870和880被示出为分别包括集成存储器控制器单元872和882。处理器870也可以包括作为其总线控制器单元的一部分的P-P接口876和878;类似地,第二处理器880包括P-P接口886和888。处理器870、880可以使用P-P接口电路878、888经由P-P接口850交换信息。如图8中所示出,IMC 872和882把处理器耦合到各自的存储器,即存储器832和存储器834,它们可以是本地附加到各自的处理器的主存储器的一部分。在一个实施方式中,存储器832、834中的一个或两者存储一个或多个FuncText数据结构,以便给软件提供对I/O功能性的访问。
处理器870、880均可以使用点对点接口电路876、894、886、898经由各个P-P接口852、854与芯片组890交换信息。芯片组890也可以经由接口电路892以及高性能图形互连839与高性能图形电路838交换信息。芯片组890可以经由接口896耦合到第一总线816。在一种实施方式中,第一总线816可以是外围组件互连(PCI)总线或诸如PCI Express总线或另一第三代I/O互连总线等的总线,但本发明的范围不限于此。
如图8中所示出,各种I/O设备814可以耦合到第一总线816,并且/或者总线桥818可以把第一总线816耦合到第二总线820。一个或多个这样的I/O设备814可以不同地存储配置数据,且包括供软件经由主存储器中的FuncText数据结构访问功能的功能访问电路。在一种实施方式中,第二总线820包括低引脚数(LPC)总线。各种设备中的任何可以耦合到第二总线820,包括例如键盘和/或鼠标822、通信设备827和诸如盘驱动器或其他大容量存储设备等的存储单元828,在一种实施方式中,存储单元828常常包括指令/代码和数据830。进一步,音频I/O 824被示出为耦合到第二总线820。应注意,在所包括的组件和互连体系结构发生改变的场合,其他体系结构是可能的。例如,代替图8的点对点体系结构,系统可以实现多点总线或其他这样的体系结构。
系统800可以包括含有集成电路和用于集成电路的硬件接口的设备。作为阐释而非限制,这样的设备可以包括处理器870、处理器880、芯片组890的封装(未示出)、存储器832、存储器834和/或系统800的各种其他组件中的任何。
在此描述了用于访问I/O设备的功能性的技术和体系结构。在上面的描述中,出于解释的目的,陈述了众多特定的细节以便低通对某些实施方式的透彻理解。然而,本领域中的技术人员将明显看出,无需这些细节就可以实践某些实施方式。在其他实例中,为了避免模糊本描述,以框图形式示出各结构和设备。
在说明书中对“一种实施方式”或“一个实施方式”的引用意指结合该实施方式描述的具体的特征、结构或特性被包括在至少本发明的一种实施方式中。在说明书中的各种场合下出现的短语“在一种实施方式中”并不必定全都是指相同的实施方式。
在对在计算机存储器内的数据位的操作的算法和符号表示方面,给出了具体实施方式中的一些部分。这些算法描述和表示是由数据处理领域中的技术人员用来最有效地把他们的工作实质传达给本领域中的其他技术人员的手段。在此,且一般地,算法被设想为引起期望结果的自相一致的操作序列。各步骤是需要对物理量的物理操作的那些步骤。通常,尽管并不必定,这些量采用能够被存储、传递、组合、比较且以另外方式操纵的电或磁信号的形式。已经证明,有时,主要是出于通常使用的原因,将这些信号称为比特、值、元素、符号、字符、术语、数字或类似物。
然而,应当牢记的是,所有这些和类似的术语将与适当的物理量相关联,并且仅仅是应用于这些量的方便的标签。除非特别声明,否则从本文的讨论可以看出,可以理解,在整个描述中,利用诸如“处理”或“计算”或“运算”或“判断”或“显示”等等的术语的讨论指计算机系统或相似的电子计算设备的动作和进程,其操纵表示为在计算系统的寄存器和存储器内的物理(电子)量的数据并将其变换为类似地表示为在计算系统存储器或寄存器或其它此类信息存储、传输或显示设备中的物理量的其他数据。
某些实施方式也涉及用于执行在此的操作的装置。该装置可以被特别构造为用于所需目的,或者它可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。这样的计算机程序可以被存储在计算机可读存储介质中,例如但不限于任何类型的盘,包括软盘、光盘、CD-ROM和磁-光盘、只读存储器(ROM)、随机存取存储器(RAM)(例如动态RAM(DRAM)、EPROM、EEPROM)、磁或光卡、或适用于存储电子指令且被耦合到计算机系统总线的任何类型的介质。
本文中所呈现的算法和显示并不固有地与任何特定计算机或其它装置相关。各种通用系统可以与根据本文的教导的程序一起使用,或可以证明便于构建更专用的装置来执行所要求的方法步骤。将从本文的描述看出各种这些系统所需的结构。另外,此外,并不参照任何特定的编程语言描述某些实施方式。应明白,各种编程语言可以被用来实现在此描述的这样的实施方式的教导。
除了在此所描述的内容之外,可以在不偏离其范围的前提下对所公开的实施方式及其实现做出各种修改。因此,应当以说明性而非限制性的意义来解释本文的阐释和示例。应当通过参照下面的权利要求单独衡量本发明的范围。
Claims (29)
1.一种输入/输出I/O设备,包括:
存储器,用于存储包括功能的配置的配置数据结构;以及
相干性引擎,其包括用于向软件进程提供对所述功能的访问的电路,包括所述相干性引擎执行所述功能上下文数据结构和所述配置数据结构相对于彼此的同步,其中所述功能上下文数据结构操作为寄存器级接口,所述寄存器级接口把所述输入/输出I/O设备和所述软件进程相互进行接口。
2.如权利要求1所述的输入/输出I/O设备,其特征在于,所述相干性引擎还在计算机平台的运行时执行期间接收对所述功能上下文数据结构的引用,其中所述相干性引擎基于所述功能上下文数据结构执行所述同步。
3.如权利要求1所述的输入/输出I/O设备,其特征在于,所述软件进程是所述输入/输出I/O设备的驱动器。
4.如权利要求1所述的输入/输出I/O设备,其特征在于,独立于通过主机OS执行的任何其他软件进程来执行所述软件进程和所述功能上下文数据结构之间的交换,所述软件进程和所述功能上下文数据结构之间的所述交换供所述软件进程访问所述功能。
5.如权利要求1所述的输入/输出I/O设备,其特征在于,响应于轻量级通知通信,所述I/O设备访问所述功能上下文数据结构。
6.如权利要求1所述的输入/输出I/O设备,其特征在于,响应于访问对应于所述功能上下文数据结构的门铃寄存器,所述I/O设备访问所述功能上下文数据结构。
7.如权利要求1所述的输入/输出I/O设备,其特征在于,功能上下文数据结构的分层结构包括所述功能上下文数据结构和第二功能上下文数据结构,其中所述软件进程基于所述功能上下文第二数据结构中的信息访问所述功能上下文数据结构。
8.一种在输入/输出I/O设备处执行的方法,所述方法包括:
在所述输入/输出I/O设备的配置数据结构中存储功能的配置;以及
向软件进程提供对所述功能的访问,所述软件进程通过耦合到所述输入/输出I/O设备的处理器和主存储器执行,所述主存储器存储功能上下文数据结构,所述提供对所述功能的访问包括相对于彼此同步所述功能上下文数据结构和所述配置数据结构,其中所述软件进程与所述功能上下文数据结构交换信息以便获得对所述功能的访问,其中所述功能上下文数据结构操作为寄存器级接口,所述寄存器级接口把所述输入/输出I/O设备和所述软件进程相互进行接口。
9.如权利要求8所述的方法,其特征在于,进一步包括在计算机平台的运行时执行期间接收对所述功能上下文数据结构的引用,其中所述同步基于所接收的对所述功能上下文数据结构的引用。
10.如权利要求8所述的方法,其特征在于,所述软件进程是所述输入/输出I/O设备的驱动器。
11.如权利要求8所述的方法,其特征在于,独立于通过主机OS执行的任何其他软件进程来执行所述软件进程和所述功能上下文数据结构之间的交换,所述软件进程和所述功能上下文数据结构之间的所述交换供所述软件进程访问所述功能。
12.如权利要求8所述的方法,其特征在于,响应于轻量级通知通信,所述输入/输出I/O设备访问所述功能上下文数据结构。
13.如权利要求8所述的方法,其特征在于,响应于访问对应于所述功能上下文数据结构的门铃寄存器,所述输入/输出I/O设备访问所述功能上下文数据结构。
14.如权利要求8所述的方法,其特征在于,所述主存储器存储功能上下文数据结构的分层结构包括所述功能上下文数据结构和第二功能上下文数据结构,其中,所述软件进程基于所述功能上下文第二数据结构中的信息访问所述功能上下文数据结构。
15.一种设备,包括:
一个或多个接口,用于把功能上下文管理器耦合到主机处理器、主存储器和输入/输出I/O设备,所述主机处理器和所述主存储器用于软件进程的执行;
上下文管理逻辑,其包括经由所述一个或多个接口访问所述主存储器的功能上下文数据结构的电路,其中所述上下文管理逻辑通过所述功能上下文数据结构定义功能与上下文的关联;以及
分配管理逻辑,其包括用于向所述输入/输出I/O设备或所述软件进程提供对所述功能上下文数据结构的引用的电路,其中基于所述引用,所述输入/输出I/O设备向所述软件进程提供对所述功能的访问,所述访问根据所述上下文,其中所述软件进程与所述功能上下文数据结构交换信息以便得到对所述功能的访问,其中所述功能上下文数据结构操作为寄存器级接口,所述寄存器级接口把所述输入/输出I/O设备和所述软件进程相互进行接口。
16.如权利要求15所述的设备,其特征在于,在计算机平台的运行时操作期间,所述分配管理逻辑还向所述功能上下文数据结构写入对输入/输出I/O设备的引用,其中所述分配管理逻辑把所述功能上下文实例从与用于提供对所述功能的访问的第一输入/输出I/O设备相关联改变为与用于提供对所述功能的访问的第二输入/输出I/O设备相关联。
17.如权利要求15所述的设备,其特征在于,在计算机平台的运行时操作期间,所述分配管理逻辑访问所述功能上下文数据结构以便把所述功能上下文数据结构从定义第一上下文与所述功能的关联改变为定义第二上下文与所述功能的关联。
18.如权利要求15所述的设备,其特征在于,独立于通过所述主机OS执行的任何其他软件进程来执行所述软件进程和所述功能上下文数据结构之间的交换,所述软件进程和所述功能上下文数据结构之间的所述交换供所述软件进程访问所述功能。
19.如权利要求15所述的设备,其特征在于,所述输入/输出I/O设备执行所述输入/输出I/O设备的所述功能上下文数据结构和配置数据结构相对于彼此的同步。
20.如权利要求15所述的设备,其特征在于,进一步包括分层管理逻辑,用于访问所述功能上下文数据结构以便定义所述主存储器中的功能上下文数据结构的分层结构,功能上下文数据结构的所述分层结构包括所述功能上下文数据结构。
21.一种设备处的方法,所述方法包括:
访问被耦合到所述设备的主存储器的功能上下文数据结构,包括通过所述功能上下文数据结构定义功能与上下文的关联,其中软件进程通过被耦合到所述设备的所述主存储器和主机处理器执行,其中所述设备还被耦合到输入/输出I/O设备;
向所述输入/输出I/O设备或所述软件进程提供对所述功能上下文数据结构的引用,其中基于所述引用,所述输入/输出I/O设备向所述软件进程提供对所述功能的访问,所述访问根据所述上下文,其中所述软件进程与所述功能上下文数据结构交换信息以便得到对所述功能的访问,其中所述功能上下文数据结构操作为寄存器级接口,所述寄存器级接口把所述输入/输出I/O设备和所述软件进程相互进行接口。
22.如权利要求21所述的方法,其特征在于,进一步包括:
在计算机平台的运行时操作期间,向所述功能上下文数据结构写入对输入/输出I/O设备的引用,包括把所述功能上下文实例从与用于提供对所述功能的访问的第一输入/输出I/O设备相关联改变为与用于提供对所述功能的访问的第二I/O设备相关联。
23.如权利要求21所述的方法,其特征在于,进一步包括:
在计算机平台的运行时操作期间,访问所述功能上下文数据结构以便把所述功能上下文数据结构从定义第一上下文与所述功能的关联改变为定义第二上下文与所述功能的关联。
24.如权利要求21所述的方法,其特征在于,独立于通过所述主机OS执行的任何其他软件进程来执行所述软件进程和所述功能上下文数据结构之间的交换,所述软件进程和所述功能上下文数据结构之间的所述交换供所述软件进程访问所述功能。
25.如权利要求21所述的方法,其特征在于,所述输入/输出I/O设备执行所述输入/输出I/O设备的所述功能上下文数据结构和配置数据结构相对于彼此的同步。
26.如权利要求21所述的方法,访问所述功能上下文数据结构以便定义所述主存储器中的功能上下文数据结构的分层结构,所述功能上下文数据结构的所述分层结构包括所述功能上下文数据结构。
27.一种装置,包括:
存储器,其用于存储指令;
处理器,其操作用于执行:
在输入/输出I/O设备的配置数据结构中存储功能的配置;以及
向软件进程提供对所述功能的访问,所述软件进程通过被耦合到所述输入/输出I/O设备的处理器和主存储器来执行,所述主存储器存储功能上下文数据结构,所述提供对所述功能的访问包括相对于彼此同步所述功能上下文数据结构和所述配置数据结构,其中所述功能上下文数据结构操作为寄存器级接口,所述寄存器级接口把所述输入/输出I/O设备和所述软件进程相互进行接口。
28.一种计算机实现的系统,包括用于执行如权利要求8-14、21-26中的任一项所述的方法的装置。
29.一种计算机可读存储介质,其上存储有指令,所述指令响应于被执行而导致计算设备执行如权利要求8-14、21-26中的任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/844,323 | 2013-03-15 | ||
US13/844,323 US9026698B2 (en) | 2013-03-15 | 2013-03-15 | Apparatus, system and method for providing access to a device function |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104050118A CN104050118A (zh) | 2014-09-17 |
CN104050118B true CN104050118B (zh) | 2017-12-26 |
Family
ID=50287878
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410095775.1A Active CN104050118B (zh) | 2013-03-15 | 2014-03-14 | 提供对设备功能的访问的装置、系统和方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9026698B2 (zh) |
EP (1) | EP2778936B1 (zh) |
KR (1) | KR101575070B1 (zh) |
CN (1) | CN104050118B (zh) |
BR (1) | BR102014006212A2 (zh) |
TW (1) | TWI556110B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016130114A1 (en) * | 2015-02-10 | 2016-08-18 | Hewlett Packard Enterprise Development Lp | Chipset reconfiguration based on device detection |
WO2017031126A1 (en) * | 2015-08-17 | 2017-02-23 | Brocade Communications Systems, Inc. | Pci express connected network switch |
US20180063205A1 (en) * | 2016-08-30 | 2018-03-01 | Augre Mixed Reality Technologies, Llc | Mixed reality collaboration |
US10521388B2 (en) * | 2018-09-28 | 2019-12-31 | Intel Corporation | Multi-uplink device enumeration and management |
KR102509491B1 (ko) * | 2021-04-13 | 2023-03-14 | 에스케이하이닉스 주식회사 | PCIe 인터페이스 시스템 및 그 동작 방법 |
US11782497B2 (en) | 2021-06-01 | 2023-10-10 | SK Hynix Inc. | Peripheral component interconnect express (PCIE) interface device and method of operating the same |
US11789658B2 (en) | 2021-04-13 | 2023-10-17 | SK Hynix Inc. | Peripheral component interconnect express (PCIe) interface system and method of operating the same |
KR102518317B1 (ko) | 2021-04-13 | 2023-04-06 | 에스케이하이닉스 주식회사 | PCIe 인터페이스 장치 및 그 동작 방법 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101814018A (zh) * | 2008-12-30 | 2010-08-25 | 英特尔公司 | 事务存储器(tm)系统中的读和写监控属性 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5515522A (en) * | 1994-02-24 | 1996-05-07 | Hewlett-Packard Company | Coherence index generation for use by an input/output adapter located outside of the processor to detect whether the updated version of data resides within the cache |
US6128669A (en) * | 1997-09-30 | 2000-10-03 | Compaq Computer Corporation | System having a bridge with distributed burst engine to decouple input/output task from a processor |
US6971034B2 (en) * | 2003-01-09 | 2005-11-29 | Intel Corporation | Power/performance optimized memory controller considering processor power states |
ATE458222T1 (de) * | 2004-06-08 | 2010-03-15 | Freescale Semiconductor Inc | Aufrechterhaltung der cachespeicherkoherenz zum direkten zugriff (dma), abschluss einer aufgabe, zur synchronisierung |
US8131670B2 (en) * | 2007-02-22 | 2012-03-06 | Microsoft Corporation | Techniques to cross-synchronize data |
US7934033B2 (en) | 2008-03-25 | 2011-04-26 | Aprius, Inc. | PCI-express function proxy |
US8103810B2 (en) | 2008-05-05 | 2012-01-24 | International Business Machines Corporation | Native and non-native I/O virtualization in a single adapter |
US8176097B2 (en) * | 2009-01-02 | 2012-05-08 | International Business Machines Corporation | Maintaining data coherency within related multi-perspective user interfaces via session-less queries |
TW201104470A (en) * | 2009-07-29 | 2011-02-01 | Tomtom Int Bv | Data storage system and method |
US8683478B2 (en) | 2010-12-21 | 2014-03-25 | International Business Machines Corporation | Best fit mapping of self-virtualizing input/output device virtual functions for mobile logical partitions |
US8645605B2 (en) | 2010-12-28 | 2014-02-04 | Plx Technology, Inc. | Sharing multiple virtual functions to a host using a pseudo physical function |
US8527666B2 (en) | 2011-02-21 | 2013-09-03 | International Business Machines Corporation | Accessing a configuration space of a virtual function |
-
2013
- 2013-03-15 US US13/844,323 patent/US9026698B2/en not_active Expired - Fee Related
-
2014
- 2014-02-24 TW TW103106062A patent/TWI556110B/zh active
- 2014-03-11 EP EP14158781.6A patent/EP2778936B1/en active Active
- 2014-03-13 KR KR1020140029341A patent/KR101575070B1/ko active IP Right Grant
- 2014-03-14 CN CN201410095775.1A patent/CN104050118B/zh active Active
- 2014-03-14 BR BR102014006212A patent/BR102014006212A2/pt not_active IP Right Cessation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101814018A (zh) * | 2008-12-30 | 2010-08-25 | 英特尔公司 | 事务存储器(tm)系统中的读和写监控属性 |
Also Published As
Publication number | Publication date |
---|---|
KR20140113439A (ko) | 2014-09-24 |
BR102014006212A2 (pt) | 2015-10-13 |
US20140281062A1 (en) | 2014-09-18 |
KR101575070B1 (ko) | 2015-12-07 |
EP2778936B1 (en) | 2016-07-20 |
CN104050118A (zh) | 2014-09-17 |
TWI556110B (zh) | 2016-11-01 |
EP2778936A1 (en) | 2014-09-17 |
TW201506631A (zh) | 2015-02-16 |
US9026698B2 (en) | 2015-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104050118B (zh) | 提供对设备功能的访问的装置、系统和方法 | |
TWI772611B (zh) | 主機系統及其方法和加速模組 | |
US8069288B2 (en) | Mechanism to flexibly support multiple device numbers on point-to-point interconnect upstream ports | |
CN104714846B (zh) | 资源处理方法、操作系统及设备 | |
TWI506559B (zh) | 可動態和選擇性停用核心以及重新設定之多核心微處理器及其方法 | |
CN109582611A (zh) | 加速器结构 | |
CN107278299A (zh) | 经由可重配置的虚拟交换机实现次级总线功能性的方法、装置和系统 | |
CN107015845A (zh) | Gpu虚拟化 | |
CN103501242B (zh) | 资源管理方法和多节点集群设备 | |
US10846254B2 (en) | Management controller including virtual USB host controller | |
CN102981984B (zh) | 使用完成者对存储器区域排序要求的知识来修改事务属性 | |
CN110809760B (zh) | 资源池的管理方法、装置、资源池控制单元和通信设备 | |
CN110383246A (zh) | 虚拟机控制可编程硬件的单独子集 | |
CN107111576A (zh) | 发布的中断架构 | |
CN101221551A (zh) | 用于对称多处理器互连的方法和设备以及多处理器 | |
CN105051682B (zh) | 用于硬件设备的软件接口 | |
CN103797435B (zh) | 用于控制两个集成电路之间的事务交换的方法 | |
JP2007164793A (ja) | データ処理システムの中に分散された分配型ダイレクトメモリアクセス手段 | |
US10176132B2 (en) | Configuration arbiter for multiple controllers sharing a link interface | |
US20200004721A1 (en) | Core mapping | |
CN107924289A (zh) | 计算机系统和访问控制方法 | |
CN108139916A (zh) | 可编程逻辑设备的多阶段引导映像加载和配置 | |
CN115203110A (zh) | PCIe功能及其操作方法 | |
WO2018080735A2 (en) | Method, apparatus and system for automatically performing end-to-end channel mapping for an interconnect | |
CN110023919A (zh) | 用于处理结构中非投递式存储器写入事务的方法、装置和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |