《提供对设备功能的访问的装置、系统和方法.pdf》由会员分享,可在线阅读,更多相关《提供对设备功能的访问的装置、系统和方法.pdf(22页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN104050118A43申请公布日20140917CN104050118A21申请号201410095775122申请日2014031413/844,32320130315USG06F13/2020060171申请人英特尔公司地址美国加利福尼亚州72发明人DJ哈利曼A冯戈D达斯莎玛74专利代理机构上海专利商标事务所有限公司31100代理人高见54发明名称提供对设备功能的访问的装置、系统和方法57摘要描述了提供对设备功能的访问的装置、系统和方法。描述了用于通过输入/输出I/O设备提供对功能的访问的技术和机制。在一个实施方式中,包括I/O设备的计算机系统的主存储器存储把功能与用于。
2、访问该功能的上下文关联起来的功能上下文数据结构。I/O设备存储用于提供功能的I/O设备的配置。在另一实施方式中,软件进程与功能上下文数据结构交换信息以便得到对功能的访问。I/O设备执行功能上下文数据结构和配置数据结构相对于彼此的同步,其中,功能上下文数据结构操作为寄存器级接口,所述寄存器级接口把I/O设备和软件进程相互进行接口。30优先权数据51INTCL权利要求书3页说明书11页附图7页19中华人民共和国国家知识产权局12发明专利申请权利要求书3页说明书11页附图7页10申请公布号CN104050118ACN104050118A1/3页21一种输入/输出IO设备,包括存储器,用于存储包括功能。
3、的配置的配置数据结构;以及相干性引擎,其包括用于向软件进程提供对所述功能的访问的电路,包括所述相干性引擎执行所述功能上下文数据结构和所述配置数据结构相对于彼此的同步,其中所述功能上下文数据结构操作为寄存器级接口,所述寄存器级接口把所述I/O设备和所述软件进程相互进行接口。2如权利要求1所述的I/O设备,其特征在于,所述相干性引擎还在所述计算机平台的运行时执行期间接收对所述功能上下文数据结构的引用,其中所述相干性引擎基于所述功能上下文数据结构执行所述同步。3如权利要求1所述的I/O设备,其特征在于,所述软件进程是所述I/O设备的驱动器。4如权利要求1所述的I/O设备,其特征在于,独立于通过所述主。
4、机OS执行的任何其他软件进程来执行所述软件进程和所述功能上下文数据结构之间的交换,所述软件进程和所述功能上下文数据结构之间的所述交换供所述软件进程访问所述功能。5如权利要求1所述的I/O设备,其特征在于,响应于轻量级通知通信,所述I/O设备访问所述功能上下文数据结构。6如权利要求1所述的I/O设备,其特征在于,响应于访问对应于所述功能上下文数据结构的门铃寄存器,所述I/O设备访问所述功能上下文数据结构。7如权利要求1所述的I/O设备,其特征在于,功能上下文数据结构的分层结构包括所述功能上下文数据结构和第二功能上下文数据结构,其中所述软件进程基于所述功能上下文第二数据结构中的信息访问所述功能上下。
5、文数据结构。8一种输入/输出IO设备处的方法,所述方法包括在所述I/O设备的配置数据结构中存储功能的配置;以及向软件进程提供对所述功能的访问,所述软件进程通过耦合到所述I/O设备的处理器和主存储器执行,所述主存储器存储功能上下文数据结构,所述提供对所述功能的访问包括相对于彼此同步所述功能上下文数据结构和所述配置数据结构,其中所述软件进程与所述功能上下文数据结构交换信息以便获得对所述功能的访问,其中所述功能上下文数据结构操作为寄存器级接口,所述寄存器级接口把所述I/O设备和所述软件进程相互进行接口。9如权利要求8所述的方法,其特征在于,进一步包括在所述计算机平台的运行时执行期间接收对所述功能上下。
6、文数据结构的引用,其中所述同步基于所接收的对所述功能上下文数据结构的引用。10如权利要求8所述的方法,其特征在于,所述软件进程是所述I/O设备的驱动器。11如权利要求8所述的方法,其特征在于,独立于通过所述主机OS执行的任何其他软件进程来执行所述软件进程和所述功能上下文数据结构之间的交换,所述软件进程和所述功能上下文数据结构之间的所述交换供所述软件进程访问所述功能。12如权利要求8所述的方法,其特征在于,响应于轻量级通知通信,所述I/O设备访问所述功能上下文数据结构。13如权利要求8所述的方法,其特征在于,响应于访问对应于所述功能上下文数据结权利要求书CN104050118A2/3页3构的门铃。
7、寄存器,所述I/O设备访问所述功能上下文数据结构。14如权利要求8所述的方法,其特征在于,所述主存储器存储功能上下文数据结构的分层结构包括所述功能上下文数据结构和第二功能上下文数据结构,其中,所述软件进程基于所述功能上下文第二数据结构中的信息访问所述功能上下文数据结构。15一种设备,包括一个或多个接口,用于把所述功能上下文管理器耦合到主机处理器、主存储器和I/O设备,所述主机处理器和所述主存储器用于软件进程的执行;上下文管理逻辑,其包括经由所述一个或多个接口访问所述主存储器的功能上下文数据结构的电路,其中所述上下文管理逻辑通过所述功能上下文数据结构定义功能与上下文的关联;以及分配管理逻辑,其包。
8、括用于向所述I/O设备或所述软件进程提供对所述功能上下文数据结构的引用的电路,其中基于所述引用,所述I/O设备向所述软件进程提供对所述功能的访问,所述访问根据所述上下文,其中所述软件进程与所述功能上下文数据结构交换信息以便得到对所述功能的访问,其中所述功能上下文数据结构操作为寄存器级接口,所述寄存器级接口把所述I/O设备和所述软件进程相互进行接口。16如权利要求15所述的设备,其特征在于,在所述计算机平台的运行时操作期间,所述分配管理逻辑还向所述功能上下文数据结构写入对I/O设备的引用,其中所述分配管理逻辑把所述功能上下文实例从与用于提供对所述功能的访问的第一I/O设备相关联改变为与用于提供对。
9、所述功能的访问的第二I/O设备相关联。17如权利要求15所述的设备,其特征在于,在所述计算机平台的运行时操作期间,所述分配管理逻辑访问所述功能上下文数据结构以便把所述功能上下文数据结构从定义第一上下文与所述功能的关联改变为定义第二上下文与所述功能的关联。18如权利要求15所述的设备,其特征在于,独立于通过所述主机OS执行的任何其他软件进程来执行所述软件进程和所述功能上下文数据结构之间的交换,所述软件进程和所述功能上下文数据结构之间的所述交换供所述软件进程访问所述功能。19如权利要求15所述的设备,其特征在于,所述I/O设备执行所述I/O设备的所述功能上下文数据结构和配置数据结构相对于彼此的同步。
10、。20如权利要求15所述的设备,其特征在于,进一步包括分层管理逻辑,用于访问所述功能上下文数据结构以便定义所述主存储器中的功能上下文数据结构的分层结构,功能上下文数据结构的所述分层结构包括所述功能上下文数据结构。21一种设备处的方法,所述方法包括访问被耦合到所述设备的主存储器的功能上下文数据结构,包括通过所述功能上下文数据结构定义功能与上下文的关联,其中软件进程通过被耦合到所述设备的所述主存储器和主机处理器执行,其中所述设备还被耦合到I/O设备;向所述I/O设备或所述软件进程提供对所述功能上下文数据结构的引用,其中基于所述引用,所述I/O设备向所述软件进程提供对所述功能的访问,所述访问根据所述。
11、上下文,其中所述软件进程与所述功能上下文数据结构交换信息以便得到对所述功能的访问,其中所述功能上下文数据结构操作为寄存器级接口,所述寄存器级接口把所述I/O设备和所述软件进程相互进行接口。权利要求书CN104050118A3/3页422如权利要求21所述的方法,其特征在于,进一步包括在所述计算机平台的运行时操作期间,向所述功能上下文数据结构写入对I/O设备的引用,包括把所述功能上下文实例从与用于提供对所述功能的访问的第一I/O设备相关联改变为与用于提供对所述功能的访问的第二I/O设备相关联。23如权利要求21所述的方法,其特征在于,进一步包括在所述计算机平台的运行时操作期间,访问所述功能上下文。
12、数据结构以便把所述功能上下文数据结构从定义第一上下文与所述功能的关联改变为定义第二上下文与所述功能的关联。24如权利要求21所述的方法,其特征在于,独立于通过所述主机OS执行的任何其他软件进程来执行所述软件进程和所述功能上下文数据结构之间的交换,所述软件进程和所述功能上下文数据结构之间的所述交换供所述软件进程访问所述功能。25如权利要求21所述的方法,其特征在于,所述I/O设备执行所述I/O设备的所述功能上下文数据结构和配置数据结构相对于彼此的同步。26如权利要求21所述的方法,访问所述功能上下文数据结构以便定义所述主存储器中的功能上下文数据结构的分层结构,所述功能上下文数据结构的所述分层结构。
13、包括所述功能上下文数据结构。27一种其上存储有指令的计算机可读存储介质,所述指令在由一个或多个处理单元执行时,引起I/O设备执行一种方法,包括在所述I/O设备的配置数据结构中存储功能的配置;以及向软件进程提供对所述功能的访问,所述软件进程通过被耦合到所述I/O设备的处理器和主存储器来执行,所述主存储器存储功能上下文数据结构,所述提供对所述功能的访问包括相对于彼此同步所述功能上下文数据结构和所述配置数据结构,其中所述功能上下文数据结构操作为寄存器级接口,所述寄存器级接口把所述I/O设备和所述软件进程相互进行接口。权利要求书CN104050118A1/11页5提供对设备功能的访问的装置、系统和方法。
14、技术领域0001在此讨论的实施方式涉及计算机系统的领域。尤其,某些实施方式属于高速度点对点互连和通信体系结构的领域。背景技术0002计算机系统包括多种组件和元素。各组件往往经由总线或互连耦合。外围组件互连PCI是在1992年开发的第二代并行总线体系结构,用于替代工业标准体系结构ISA总线。在PCI中,所有设备共享相同的双向32位或64位并行信号路径。PCI总线带来超过ISA总线的许多优点,包括即插即用操作。PCIEXPRESSPCIE是被设计为代替PCI总线的第三代通用串行输入/输出IO互连。除了是总线之外,PCIE是围绕被称为巷道的点对点串行链路而构造的。0003在PCI/PCIE体系结构中。
15、,软件维护紧密地使得系统硬件的物理结构并行的总线/设备/功能BDF数据结构。PCI和PCIE的即插即用机制支持运行时插入或移除硬件组件以及因而插入或移除它们的功能性。然而,这样的机制在在平台的运行时操作期间不太可能添加或移除的I/O硬件的操作方面往往是次优的。随着制造技术继续趋向于集成,硬件功能性永久地被附加到或甚至被集成到中央处理单元CPU或其他关键的平台逻辑的半导体管芯,这种类型的I/O硬件日益普遍。0004设备发现和配置的PCI/PCIE的常规设备/功能模型具有在提供把硬件资源映射到软件活动的灵活性方面的限制。PCI设备/功能模型的附加问题是设备发现和配置技术和机制是低效的,使得从睡眠状。
16、态或其他这样的低功率状态恢复的时间变慢。附图说明0005在附图的各图中作为示例而非限制阐释本发明的各种实施方式,附图中0006图1是阐释根据一种实施方式提供对输入/输出功能的访问的系统的元素的框图。0007图2是阐释根据一种实施方式提供功能以供由软件进程访问的设备的元素的框图。0008图3是阐释根据一种实施方式管理对输入/输出功能的访问的逻辑的元素的框图。0009图4A是阐释根据一种实施方式的输入/输出设备的配置数据的元素的框图。0010图4B是阐释根据一种实施方式用于把输入/输出功能与一个或多个上下文关联起来的数据结构的元素的框图。0011图5是阐释根据一种实施方式用于提供对输入/输出功能的。
17、访问的方法的元素的流程图。0012图6是阐释根据一种实施方式用于管理对输入/输出功能的访问的方法的元素的流程图。说明书CN104050118A2/11页60013图7是阐释根据一种实施方式用于提供对输入/输出功能的访问的分层数据结构的元素的框图。0014图8是阐释根据一种实施方式执行输入/输出操作的计算机平台的元素的框图。具体实施方式0015在此讨论的实施方式不同地提供用于把功能与一个或多个上下文关联起来的机制或技术,这些上下文允许、限定或以另外方式表征软件进程对功能的访问。功能与一个或多个上下文的这样的关联在此不同地称为“功能上下文”或“FUNCTEXT”。0016在一个实施方式中,相互关联。
18、的功能和上下文的实例在此被称为“功能上下文实例”可以包括被创建、通信或以另外方式确定以便界定该功能与该上下文相互关联的信息的实例。例如,功能上下文实例可以是或可以包括用于标识该功能和该上下文相互关联的注册或主存储器中其他数据存储。基于所定义的关联,一个或多个机制可以操作为允许根据所关联的上下文利用功能和/或限定该功能的使用。功能可以不同地可由独立于FUNCTEXTFT实例但与其并行的一些替代机制访问。0017在一个实施方式中,FUNCTEXT数据结构例如由主机保存在DRAM或其他主存储器中的FUNCTEXT数据结构存储描述实际的设备状态和/或所期望的设备状态以便得到功能的执行的数据。可以由实现。
19、设备状态的设备和/或由要访问该设备提供的功能的软件进程不同地把这样的设备状态信息可以传递到FUNCTEXT数据结构和/或从其传递。这样的交换可以提供在主存储器中作为寄存器级接口操作的FUNCTEXT数据结构,以供把设备和软件进程相互连接起来。在一个实施方式中,该接口独立于主机OS的一些或全部其他软件进程例如包括任何虚拟机监视器、客户OS和/或类似物。0018图1阐释根据一种实施方式包括FUNCTEXT特征用于提供功能访问的计算机系统100的元素。计算机系统100可以包括用于在处理器102例如包括CPU或其他主机处理器和芯片组104之间传输信息的处理器系统总线前端总线FSB103。处理器102可。
20、以包括单核处理器或多核芯片多处理器CMP,以便作为系统100主机处理器而操作。在一种实施方式中,芯片组104中的一些或全部可以被集成在处理器102内以提供片上系统。0019芯片组104可以包括在系统100的处理器102和一个或多个I/O设备之间交换通信的电路逻辑例如其中这样的电路逻辑根据PCI和/或PCIE规范操作为根联合体ROOTCOMPLEX的系统。例如,芯片组104可以包括不同地经由各自的互连直接地或间接地耦合到这样的一个或多个I/O设备的一个或多个集线器设备未示出例如包括存储器控制器集线器、I/O控制器集线器和/或类似物。0020作为阐释而非限制,芯片组104可以经由点对点互连107耦。
21、合到主存储器140且经由点对点互连112耦合到I/O设备120。在一种实施方式中,主存储器140可以包括但不限于随机存取存储器RAM、动态RAMDRAM、静态RAMSDRAM、同步DRAMDRAM、双倍数据率DDRSDRAMDDRSDRAM、RAMBUSDRAMRDRAM或能够支持数据的高速缓冲的任何设备。I/O设备120可以包括用于交换数据的各种设备中的任任意个,包括但不限于音频控制器、视频控制器、网络接口卡、存储控制器和/或类似物。计算机系统100还可以包括非易失性例如,闪速存储器116以便操作为“固件集线器”或FWH,它可以包括执行计算机系统100的初始化的基本输入/输出系统BIOS10。
22、9。说明书CN104050118A3/11页70021在替代的实施方式中,I/O设备120可以经由一个或多个桥、交换机或其他中间设备耦合到芯片组104。特定实施方式在把I/O设备120与芯片组104互连起来的点对点链路的具体数量或排列方面不受限制。另外或替代地,根据不同的实施方式,芯片组104可以耦合到各种一个或多个其他I/O设备中的任何设备。作为阐释而非限制,系统100还可以包括分别经由交换机108以及链路1141和1142耦合到链路1140的I/O设备1101、1102。链路1140又可以把交换机108耦合到芯片组104的输入/输出端口106。0022在一种实施方式中,互连107、112支。
23、持点对点链路协议,包括但不限于通用系统接口CSI、快速外围组件互连PCIPCIE或其他类似的点对点互连。因此,在一种实施方式中,互连107、112中的一个或两者可以提供点对点链路,例如由PCIEXPRESS基本规范修订版11定义为允许在芯片组104以及I/O设备120和主存储器140中的一个或两者之间的单向通信的点对点链路。在一种实施方式中,芯片组104可以包括外围组件互连20根端口例如包括输入/输出端口106中的一些或全部以便把链路107、112耦合到芯片组104的链路控制器未示出。尽管可以参照PCIE提供在此描述的一个或多个实施方式,但本领域中的技术人员应认识到,在此描述实施方式不限于支持。
24、PCIE的点对点链路,且因而适用于其他类似的点对点链路协议。0023在常规的PCI和PCIE体系结构中,I/O设备通常限于在PCI功能和OS驱动器实例之间的一对一映射。FUNCTEXT概念提供源自这种一对一关系的泛化,例如其中FUNCTEXT实例可以被用来不同地使得特定的软件进程对应于一个特定的硬件资源、对应于多个I/O设备的硬件资源池和/或对应于单个I/O设备的硬件资源子集。0024在根据一种实施方式的说明性场景中,处理器102可以执行要访问功能的软件进程130例如其中软件进程130要与要执行功能的一些I/O硬件交换通信。软件进程130可以包括这样的I/O硬件的驱动器,但某些实施方式不限于此。
25、。在一个实施方式中,软件进程130的执行包括主存储器140维护软件进程130的状态例如维护为软件状态142。主存储器140还可以存储FUNCTEXT数据结构144,FUNCTEXT数据结构144与一个或多个FUNCTEXT硬件机制相组合,促进软件进程130的这样的功能访问。例如,FUNCTEXT数据结构144可以存储描述供软件进程130访问的功能的I/O设备120的实际状态和/或所期望的状态的数据。0025作为阐释而非限制,I/O设备120可以包括配置数据124以便存储I/O设备120执行具体功能的配置。I/O设备120的其他逻辑未示出可以根据配置数据124中界定的配置执行功能,例如响应于I/。
26、O设备120经由104接收到对功能的请求。0026例如,系统100可以包括例如在芯片组104中FUNCTEXTFT管理器150,以便准备把FT数据结构144用作在要提供功能的设备和要访问功能的软件进程之间的寄存器级接口。根据一种实施方式,这样的准备可以是响应于FT管理器150标识I/O设备120支持FUNCTEXT功能性的能力。0027在一个实施方式中,FT管理器150在主存储器140的物理位置中创建FT数据结构144和/或执行操作以便在运行时不同地添加、删除或以另外方式修改FT数据结构144的数据。在一个实施方式中,FT管理器150可以被修改为包括对I/O设备120的引用和/或对软件进程13。
27、0的引用。替代地或另外,FT管理器150可以直接地或间接地把对FT数据结构144的某种引用例如基地址、指针、句柄和/或类似物传输给I/O设备120和/说明书CN104050118A4/11页8或软件进程130,以供用于从FT数据结构144读取和/或向其写入。0028软件进程130对I/O设备120的功能的访问可以包括I/O设备120和软件进程130经由作为主存储器140中的寄存器级接口的FT数据结构144通信。例如,软件进程130可以执行指定与FT数据结构144的数据交换的一个或多个指令,且I/O设备120的功能访问逻辑122可以不同地使得配置数据124与FT数据结构144同步。例如,软件进程。
28、130可以把不同类型的数据写到FT数据结构144中的不同位置,其中I/O设备120可以不同地把FT数据结构144中的这样的不同位置中的每一个与配置数据124中的不同的相应位置同步起来。0029图2阐释根据一种实施方式用于提供对功能的访问的输入/输出IO设备200的元素。例如,I/O设备200可以包括支持计算机系统100的一个或多个FUNCTEXT机制的机制。在一个实施方式中,I/O设备200包括I/O设备120的特征中的一些或全部。0030I/O设备200可以包括用于计算机平台中的操作的电路例如包括用于经由一个或多个点对点互连把I/O设备200与计算机平台的芯片组耦合起来的接口210。I/O设。
29、备200可以经由接口210交换与诸如PCI或PCIE等的通信标准兼容的通信205。0031I/O设备200还可以包括能够执行一个或多个功能的硬件未示出例如供经由接口210与I/O设备200进行直接或非直接通信的软件进程使用。作为阐释而非限制,I/O设备200可以支持可以根据现有的PCI总线、设备、功能发现约定标识的各种功能中的任意个。在由FUNCTEXT实例将其与上下文关联起来的具体的I/O功能类型方面,某些实施方式不受限制。0032在一个实施方式中,I/O设备200还包括FUNCTEXT机制例如包括数据、控制电路、通信电路和/或类似物以提供对至少一个这样的功能的访问和/或限定对至少一个这样的。
30、功能的访问。作为阐释而非限制,I/O设备200可以包括初始化逻辑230,用以在计算机平台的启动序列期间执行一个或多个操作。在一个实施方式中,初始化逻辑230包括或耦合到I/O设备200的仓库235例如非易失性存储器的一个或多个寄存器,仓库235存储已经例如由I/O设备200的生产商预先编程的、用于标识I/O设备200的能力的数据。0033基于这样的预先编程的数据,初始化逻辑230可以在通信205中发送信息以便标识I/O设备200的设备类型、I/O设备200能够执行的功能和/或I/O设备200的用于提供对该功能的访问的一个或多个FUNCTEXT机制。在启动期间,来自初始化逻辑230的一些或全部这。
31、样的信息可以例如直接地或间接地被传输到BIOS进程或计算机平台的其他设备/功能发现机制。0034另外或替代地,初始化逻辑230可以经由通信205接收对用于FUNCTEXT实例的FUNCTEXT数据结构的引用例如地址、指针、句柄等等,该FUNCTEXT实例把该功能与一个或多个上下文关联起来。如在此讨论的,这样的引用可以由用于管理主机端上的FUNCTEXT功能性的专用电路逻辑提供例如其中这样的电路逻辑在计算机平台的芯片组中操作。随后,I/O设备200可以把该引用用来与这样的FUNCTEXT数据结构交换信息,以便支持为软件提供对功能的访问。在另一实施方式中,I/O设备200可以在平台的运行时操作期间。
32、接收这样的FUNCTEXT数据结构引用或替代的引用。0035在一个实施方式中,I/O设备200包括附加的存储器,以便在如由说明性配置数据说明书CN104050118A5/11页9250所表示的一个或多个数据结构中存储供I/O设备200提供对功能的访问。配置数据250可以包括例如经由平台芯片组提供的数据例如来自OS、由I/O设备200从主存储器检索的数据和/或从仓库235复制的数据。替代地或另外,配置数据250可以包括在平台启动期间提供的信息和/或在平台的运行时操作期间提供的信息。0036在一个实施方式中,配置数据250包括常规PCIE设备的配置空间中的一些或全部类型的信息。例如,这样的信息可以。
33、包括PCIE0型头部信息,且在一个实施方式中,还可以包括PCI和/或PCIE支持的一种或多种类型的能力信息。作为阐释而非限制,配置数据250的数据结构可以包括PCI电源管理能力寄存器、消息告知中断MESSAGESIGNALEDINTERRUPT,MSI能力寄存器和/或用于存储能力数据或其他功能上下文信息的各种附加的或替代的寄存器中的任意个。0037I/O设备200还可以包括,相干性引擎240包括硬件、固件和/或正在执行的软件的各种组合的任何,以便维护配置数据250中的一些或全部信息,以促进软件进程的功能访问。例如,根据不同的实施方式,相干性引擎240可以包括专用集成电路ASIC、状态机、微控制。
34、器、微处理器、处理器和/或各种其他电路逻辑中的任何。维护配置数据250可以包括与主存储器中的FUNCTEXT数据结构交换通信的相干性COHERENCY引擎240。例如,相干性引擎240可以执行同步进程以便用软件进程已经写到FUNCTEXT数据结构的数据来更新配置数据250。替代地或另外,同步进程可以用来自配置数据250的数据例如包括随后由软件进程从FUNCTEXT数据结构读取的数据来更新FUNCTEXT数据结构。这样的同步可以提供在主存储器中的FUNCTEXT数据结构和配置数据250之间的相干性例如在某个时刻它们存储各自的等效、一致或以另外方式相干的信息的场合。0038图3阐释根据一种实施方式。
35、用于管理向软件进程提供I/O功能访问的FUNCTEXT管理器300的元素。在一个实施方式中,FT管理器300促进在软件进程和实现由软件进程访问的功能的设备例如包括I/O设备200的一些或全部特征之间的通信。例如,FT管理器300可以包括FT管理器150的一些或全部特征。0039FT管理器300可以包括由说明性接口310表示的一个或多个接口,用于把FT管理器300均经由一个或多个各自的点对点互连与计算机平台的主存储器和/或与一个或多个I/O设备耦合起来。替代地,FT管理器300可以被合并到包括这样的一个或多个接口的装置中。在一个实施方式中,FT管理器300经由与通信标准诸如PCI或PCIE等的接。
36、口310交换通信305。0040通信305可以不同地提供如何访问I/O功能的管理。例如,FT管理器300的分配管理逻辑320可以包括发起用于不同地创建或以另外方式配置主存储器和/或要执行功能的I/O设备中的一个或多个数据结构的命令的电路。替代地或另外,分配管理逻辑320可以发起通信以便把FUNCTEXT实例与执行该FUNCTEXT实例的功能的I/O设备硬件关联起来。作为阐释而非限制,分配管理逻辑320可以在用于具体的FUNCTEXT实例的FUNCTEXT数据结构中存储对执行功能的I/O设备的引用。0041在一个实施方式中,分配管理逻辑320可以给I/O设备和/或软件进程提供对FUNCTEXT数。
37、据结构的引用例如以供随后用于同步或以另外方式访问FUNCTEXT数据结构。分配管理逻辑320也可以显式地向I/O设备指出要访问功能的软件进程,但某些实施方式不限于此。分配管理逻辑320还可以建立向I/O设备通知对FT数据结构的改变的一个或说明书CN104050118A6/11页10多个机制,其中与I/O设备配置数据的同步可以基于这样的通知。例如,分配管理逻辑320可以直接地或间接地配置一个或多个门铃DOORBELL寄存器、轻量级通知LN信道例如根据PCISGI的LN协议的LN信道和/或用于向I/O设备通知对FT数据结构的更新的各种其他装置中的任何。在一个实施方式中,在计算机平台的运行时操作期间。
38、,分配管理逻辑320可以不同地更新、删除和/或修改一个或多个FUNCTEXT数据结构、FUNCTEXT数据结构、I/O设备引用、通知机制和/或类似物。0042在一个实施方式中,FT管理器300进一步包括标识由FUNCTEXT实例把哪一具体功能和哪一哪些具体上下文相互关联起来的逻辑。例如,FT管理器300的上下文管理逻辑330可以检测计算机平台的一个或多个I/O设备中的功能的可用性例如基于PCI和/或PCIE的常规设备/功能发现机制。上下文管理逻辑330还可以检测到这样的一个或多个I/O设备中的一些或全部支持用于提供对功能的访问的基于FT的机制。0043在一个实施方式中,上下文管理逻辑330可以。
39、接收例如从要提供功能的具体I/O设备标识至少在该具体I/O设备的情况下要求的一个或多个上下文的信息。替代地或另外,上下文管理逻辑330可以从主机OS或其他源接收标识至少相对于要访问功能的软件进程需要的一个或多个上下文的信息。在一个实施方式中,提供给上下文管理逻辑330的信息可以标识基于计算机平台施加的其他约束的一个或多个上下文。作为阐释而非限制,这样的约束可以包括各种服务品质要求中的任何和/或通信带宽、处理周期、存储容量的资源分配约束和/或平台上的各种其他受限资源中的任何。在某些实施方式中,把与功能相关联的一些或全部上下文作为先验信息提供给上下文管理逻辑330例如从主机OS、专用的资源管理和/。
40、或QOS强制硬件机制等等。在计算机平台的运行时操作期间,上下文管理逻辑330可以改变FUNCTEXT数据结构和/或I/O设备数据结构中的信息,以便不同地更新、删除和/或修改功能与关联上下文的关联。0044用于实现基于FT的功能访问的数据结构和电路逻辑可以包括用于管理在多个FUNCTEXT实例之间分层关系的机制。例如,如在此讨论的,第一FUNCTEXT数据结构可以存储指示一些其他FUNCTEXT数据结构相对于该第一FUNCTEXT数据结构是子FUNCTEXT数据结构还是父FUNCTEXT数据结构的信息。在这样的实施方式中,FT管理器300还可以包括分层管理逻辑340,以便执行用于创建、删除、修改。
41、或以另外方式管理这样的分层关系的运行时操作。在特定的其他实施方式中,FT管理器300不提供对分层FUNCTEXT关系的这样的支持。也可以作为来自其他代理的OS的先验信息向分层管理逻辑340指出一个或多个分层关系。在一个实施方式中,在计算机平台的运行时操作期间,分层管理逻辑340可以改变一个或多个FUNCTEXT数据结构中的信息,以便不同地更新、删除和/或修改在FUNCTEXT数据结构之间的分层关系。0045图4A阐释根据一种实施方式被存储在I/O设备的数据仓库中的配置数据400的元素。配置数据400可以被存储在例如具有I/O设备120的一个或多个FUNCTEXT能力的I/O设备。在一个实施方式。
42、中,配置数据400把一些或全部信息存储在配置数据250中。0046配置数据400可以包括与PCI0型配置空间头部兼容的数据结构且在一个实施方式中,可以作为PCI0型配置空间头部而提供该数据结构。例如,配置数据400可以包括存储设备型号的标识符的设备标识符ID寄存器402、存储被指派给设备厂商的标识符的厂商ID寄存器404、存储某些错误是否已经发生的指示的状态寄存器406和存储表示不说明书CN104050118A107/11页11同地启用/禁用的特征的位掩码的命令寄存器408。配置数据400还可以存储设备的功能分类的类代码寄存器410、存储设备的修订标识符的修订ID412和存储该设备使用的内存地。
43、址、地址偏移量等等的各种基地址寄存器414。在一个实施方式中,配置数据400还存储用于存储设备有多频繁地需要访问PCI/PCIE互连的指示的寄存器MAX_LAT416、指定设备所要求的突发周期长度的寄存器MIN_GNT418、指定设备要使用的中断引脚的寄存器INTPIN中断引脚420和指定设备的中断引脚连接到其中的输入线的寄存器INTLINE输入线422。配置数据400中的信息的内容和排列仅仅阐释一种实现,且可以不限于某些实施方式。0047图4B阐释根据一种实施方式的FT数据结构440的元素,FT数据结构440被存储在主存储器中,以便充当I/O设备和要访问I/O设备所提供的功能的软件进程的寄存。
44、器级接口。在一个实施方式中,FT数据结构440提供由软件进程访问诸如配置数据250的信息等的信息的硬件接口。例如,FT数据结构440可以包括FT数据结构144中的一些或全部特征。0048在一个实施方式中,440包括主体460,以便存储信息标识或以另外方式指示供与FUNCTEXT实例的功能相关联的FUNCTEXT实例的上下文。作为阐释而非限制,主体460可以包括PCI类型0头部462,其例如包括配置数据400的一些或全部特征。在一个实施方式中,PCI类型0头部462对应于在给定时间实现功能的I/O设备的PCI类型0头部。向软件进程提供对功能的访问可以包括访问主存储器以便把PCI类型0头部462以。
45、及其本地PCI类型0头部相互同步起来的这样的I/O设备。主体460可以包括用于存储能力数据464的一个或多个附加的寄存器,但某些实施方式不限于此。例如,主体460还可以包括PCI电源管理能力寄存器、消息告知中断MSI能力寄存器、PCIE能力寄存器和/或存储能力数据的各种附加的或替代的寄存器中的任何中的一个或多个。这样的能力信息的一个版本还可以在I/O设备中本地存储例如被存储为不同地与FT数据结构440同步的配置数据400。0049FT数据结构440还可以包括用于识别和/或使用FT数据结构440来提供对I/O功能的访问的FT头部450。例如,FT头部450中的信息可以促进把FT数据结构440用作。
46、在软件进程和I/O设备的FT专用硬件之间的寄存器级接口。FT头部450可以包括字段由说明性的驱动器ID字段452表示用以便存储可以使用由FT数据结构440表示的FUNCTEXT实例来访问功能的软件进程的指示。在一个实施方式中,这样的软件进程可以是用于驱动I/O设备的硬件资源的驱动器进程。对于其中要使用厂商提供的设备驱动器的情况,驱动器ID字段452中的信息可以包括或以另外方式基于厂商ID和/或设备ID。替代地,对于其中要使用公共OS驱动器的情形,这样的信息可以包括或以另外方式基于PCISIG外围组件互连特别兴趣小组对类代码、子类和/或编程接口信息的定义。0050FT头部450可以包括由说明性的。
47、BDF引用字段454表示的另一字段,用以便存储对执行FUNCTEXT实例的功能的I/O设备的任何引用。BDF引用字段454中的信息可以包括指向I/O设备硬件的指针,以便得到具体的总线、设备、功能三联体。如在此讨论的,BDF引用字段454可以被配置为存储空NULL指针信息例如在其中FT数据结构440是FUNCTEXT数据结构的分层结构中的一个的实施方式中。0051图5阐释根据一种实施方式供I/O设备提供对功能的访问的方法500的元素。例如,方法500可以由包括I/O设备200的一些或全部特征的设备执行。说明书CN104050118A118/11页120052方法500可以包括,在510处,在I/。
48、O设备的配置数据结构中存储功能的配置。在510处所存储的配置可以包括或以另外方式指示I/O设备据此提供对功能的访问的上下文。该配置可以包括,例如,PCI类型0头部中出现的一种类型的配置空间信息。替代地或另外,根据不同的实施方式,配置信息可以包括电源管理能力寄存器信息、SIMD寄存器信息和/或各种其他类型的配置中的任何。0053在一个实施方式中,方法500进一步包括,在520,向软件进程提供对功能的访问。软件进程可以是I/O设备的驱动器,但某些实施方式不限于此。可以借助于处理器和被耦合到I/O设备的主存储器执行该软件进程,该主存储器存储功能上下文数据结构。在520,提供对功能的访问可以包括相对于。
49、彼此同步功能上下文数据结构和配置数据结构。例如,I/O设备可以在计算机平台的运行时执行期间接收对FUNCTEXT数据结构的引用例如指针、基地址、句柄等等,其中同步基于所接收的对FUNCTEXT数据结构的引用。响应于轻量级通知通信或者替代地响应于访问对应于FUNCTEXT数据结构的门铃寄存器,I/O设备可以访问FUNCTEXT数据结构。在一个实施方式中,主存储器存储FUNCTEXT数据结构的分层结构,其包括FUNCTEXT数据结构和第二FUNCTEXT数据结构,其中软件进程基于第二FUNCTEXT数据结构中的信息访问FUNCTEXT数据结构。0054在一个实施方式中,软件进程与功能上下文数据结构。
50、交换信息以便得到对功能的访问,其中功能上下文数据结构操作为寄存器级接口,该寄存器级接口把I/O设备和软件进程彼此进行接口。例如,对软件进程的功能访问可以包括在软件进程和FUNCTEXT数据结构之间的交换,这独立于可以借助于主机OS执行的任何其他软件进程而执行。0055图6阐释根据一种实施方式设备管理对功能的访问的方法600的元素。例如,方法600可以由包括FT管理器300的一些或全部特征的设备执行。0056方法600可以包括,在610,访问被耦合到设备的主存储器的功能上下文数据结构,包括借助于功能上下文数据结构定义功能与上下文的关联。设备执行方法600还可以耦合到I/O设备。软件进程可以借助于。