可扩展输入/输出(I/O)虚拟化(S-IOV)架构中的虚拟设备构成的制作方法

文档序号:32207153发布日期:2022-11-16 04:59阅读:126来源:国知局
可扩展输入/输出(i/o)虚拟化(s-iov)架构中的虚拟设备构成
1.相关申请的交叉引用本技术要求2018年8月22日提交的美国临时申请号62/721,483的权益。


背景技术:

2.由外围组件互连(pci)特殊兴趣群(pci-sig)于2010年1月20日发布的单根i/o虚拟化(sr-iov)与共享规范(版本1.1)的引入是朝向针对pci express设备的硬件辅助高性能i/o虚拟化与共享的显著进步。2017年10月5日发布的pci express基础规范(修订本4.0,版本1.0)定义了pci express(pcie)。从那时起,除了部署虚拟机(vm)以用于计算机服务器整合之外,计算形势(landscape)已经演变到需要无缝地添加资源和动态地供应容器的超大规模数据中心。新的计算环境需要增加的扩展性和灵活性用于i/o虚拟化。
附图说明
3.图1图示了示例计算系统。
4.图2图示了sr-iov架构与可扩展i/o虚拟化(iov)架构之间的一些高级别差异的示例图。
5.图3图示了具有sr-iov能力的端点设备(endpoint device)与具有可扩展iov能力的端点设备之间的一些差异的示例图。
6.图4图示了用于可扩展iov的高级别软件架构的示例图。
7.图5图示了利用变化数目的设备后端资源的可分配设备接口(adi)以及利用一个或多个adi构成虚拟设备(vdev)实例的虚拟化软件的逻辑视图的示例图。
8.图6图示了示例可扩展iov指定供应商特定的扩展能力(dvsec)结构的图。
9.图7图示了用于可扩展模式地址转换的示例高级别转换结构组织。
10.图8图示了虚拟设备构成(composition)的示例图。
11.图9图示了虚拟设备构成的示例流程图。
12.图10图示了使用物理功能adi和中断消息服务(ims)资源的虚拟设备构成的示例图。
13.图11图示了虚拟设备资源修改的示例流程图。
14.图12图示了虚拟设备分解的示例流程图。
15.图13图示了存储介质的示例。
16.图14图示了另一个示例计算平台。
具体实施方式
17.本发明的实施例公开了可扩展i/o虚拟化(可扩展iov)架构以及相关联的主机计算平台和端点设备能力。可扩展iov定义了将超大规模使用作为目标的硬件辅助i/o虚拟化的可扩展且灵活的方法。可扩展iov建立于已经存在的pci express能力的集合上,使得可
扩展iov架构能够被兼容的pci express端点设备设计和现有软件生态系统容易地支持。
18.虚拟化允许被称为虚拟机监控器(vmm)(还被称为管理程序)的系统软件创建被称为虚拟机(vm)的多个隔离的执行环境,操作系统(os)和应用可以在其中运行。虚拟化被作为将多个工作负荷整合到单个物理机器上同时仍然保持工作负荷彼此隔离的机制广泛地用在现代企业和云数据中心中。除vm之外,容器还提供了另一类型的隔离环境,其用于封装和部署应用并且在隔离的处理环境中运行它们。容器被构建为被实例化为os进程组的裸金属容器或者被构建为将硬件支持的增加的隔离性质用于虚拟化的机器容器。比起vm,容器的重量更轻并且可以被以高得多的密度进行部署,从而可能将计算平台上的容器实例的数目增大一个数量级。
19.现代处理器提供用于降低虚拟化开销的特征,所述特征可以被vmm利用以允许vm对硬件资源的直接访问。(用于ia-32 intel
®
架构(intel
® vt-x)的)intel
®
虚拟化技术(intel
® vt)定义了降低用于处理器与存储器虚拟化的开销的intel
®
处理器硬件能力。用于定向i/o(intel
® vt-d)的intel
®
虚拟化技术(intel
® vt)定义了用于直接存储器访问(dma)和中断重映射与隔离的计算平台硬件特征,其可以用于最小化i/o虚拟化的开销。i/o虚拟化是指i/o设备跨多个vm或容器实例的虚拟化与共享。存在多个用于i/o虚拟化的方法,所述i/o虚拟化可以被宽泛地分类为基于软件的或者硬件辅助的。
20.利用基于软件的i/o虚拟化,vmm将虚拟设备(诸如例如网络接口控制器(nic)功能性)暴露给vm。vmm或者主机os中的软件设备模型对虚拟设备的行为进行模拟(emulate)。在将虚拟设备命令转发给物理设备之前,软件设备模型将该命令转换成物理设备命令。设备的这样的软件模拟可以向在vm内运行的软件提供兼容性,但是招致显著的性能开销,尤其是对于高性能设备而言。除了性能限制之外,在软件中对虚拟设备访问进行模拟对于可编程设备(诸如图形处理单元(gpu)和现场可编程门阵列(fpga))而言可能太复杂,因为与仅一组固定功能相比,这些设备执行多种功能。基于软件的i/o虚拟化的变体,诸如“设备半虚拟化”和“中介式透传”,允许计算平台缓解关于设备模拟的一些性能与复杂性缺点。
21.为了避免基于软件的i/o虚拟化开销,vmm可以利用针对dma和中断重映射能力的平台支持(诸如intel
® vt-d)以支持“直接设备分配”,从而允许访客(guest)软件直接地访问所分配的设备。该直接设备分配提供了最好的i/o虚拟化性能,因为vmm不再妨碍大多数访客软件对设备的访问。然而,该方法要求将设备排他性地分配给vm,并且不支持设备跨多个vm的共享。
22.单根i/o虚拟化(sr-iov)是针对硬件辅助i/o虚拟化的pci-sig定义规范,其定义了用于对端点设备进行划分以用于跨多个vm或容器的直接共享的标准方式。具有sr-iov能力的端点设备可以支持一个或多个物理功能(pf),其中的每一个可以支持多个虚拟功能(vf)。pf起用于设备的资源管理实体的作用并且受主机os中的pf驱动所管理。每一个vf可以被分配给用于直接访问的vm或容器。通过多个高性能i/o设备(诸如网络与存储控制器设备)以及可编程或可再配置的设备(诸如gpu、fpga和其它新兴的加速器)来支持sr-iov。
23.在一些实施例中,使用pcie实现sr-iov。在其它实施例中,可以使用除pcie之外的互连。
24.随着超大规模计算模型激增连同现代处理器上越来越多数目的处理元件(例如处理核),使用高容量计算平台(例如计算服务器)来托管比传统vm高一个数量级的数目的裸
金属或机器容器。这些使用中的许多,诸如网络功能虚拟化(nfv)或利用加速器的异构计算,要求高性能硬件辅助i/o虚拟化。这些动态供应的高密度使用(即,大约1,000个域)需要比具有sr-iov能力的设备支持的传统虚拟化使用所提供的更加可扩展且精细粒度的i/o虚拟化解决方法。
25.如在本文中的本发明的实施例中描述的可扩展iov是一种硬件辅助i/o虚拟化的新方法,其使得能够实现i/o设备跨隔离域的高度可扩展且高性能的共享,同时包含用于使端点设备硬件支持这样的可扩展共享的成本和复杂性。取决于使用模型,隔离域可以是传统的vm、机器容器、裸金属容器或者应用进程。本发明的实施例主要将隔离域称作vm,但是一般原理宽泛地适用于其它域抽象,诸如容器。
26.图1图示了支持可扩展iov架构的示例计算系统100。如图1中所示,计算系统100包括耦合到网络170(其可以是例如因特网或者数据中心内的网络)的计算平台101。在一些示例中,如图1中所示,计算平台101经由网络通信信道175并且通过至少一个网络i/o设备110(例如,网络接口控制器(nic))耦合到网络170,所述至少一个网络i/o设备110具有连接或耦合到网络通信信道175的一个或多个端口。在实施例中,网络i/o设备110是以太网nic。网络i/o设备110通过网络170将来自计算平台101的数据分组传输到其它目的地,并且从其它目的地接收数据分组以用于向计算平台101转发。
27.根据一些示例,如图1中所示,计算平台101由电路系统(circuitry)120、主存储器130、网络(nw)i/o设备驱动140、操作系统(os)150、虚拟机管理器(vmm)180(还称为管理程序)、至少一个应用160和一个或多个存储设备165构成。在一个实施例中,os 150是linux
tm
。在另一个实施例中,os 150是window
®
服务器。在实施例中,应用160表示由一个或多个访客vm(未示出)执行的一个或多个应用程序。网络i/o设备驱动140操作以初始化并且管理由网络i/o设备110执行的i/o请求。在实施例中,向网络i/o设备110传输和/或从网络i/o设备110接收的分组和/或分组元数据被存储在主存储器130和/或存储设备165中的一个或多个中。在至少一个实施例中,存储设备165可以是硬盘驱动器(hdd)和/或固态驱动器(ssd)中的一个或多个。在实施例中,存储设备165可以是非易失性存储器(nvm)。在一些示例中,如图1中所示,电路系统120可以经由通信链路155而通信地耦合到网络i/o设备110。在一个实施例中,通信链路155是遵守pcie标准的修订本4.0或其它版本的快速外围组件互连(pcie)总线。在一些示例中,操作系统150、nw i/o设备驱动140和应用160至少部分地经由被包括在主存储器130(例如,易失性或非易失性存储器设备)中的一个或多个存储器设备、存储设备165和电路系统120的元件(诸如处理核122-1到122-m)之间的协作而实现,其中“m”是大于2的任何正整数。在实施例中,os 150、nw i/o设备驱动140和应用160由一个或多个处理核122-1到122-m执行。在其它实施例中,存在耦合到通信链路155(例如,pcie互连)的支持可扩展iov能力的其它端点设备。
28.在一些示例中,计算平台101包括但不限于计算机服务器、服务器阵列或服务器农场、web服务器、网络服务器、因特网服务器、工作站、微型计算机、大型计算机、超级计算机、网络器具、web器具、分布式计算系统、多处理器系统、基于处理器的系统、膝上型计算机、平板计算机、智能电话或其组合。在一个示例中,计算平台101是分解式服务器。分解式服务器是将组件和资源散开到子系统中并且通过网络连接(例如,网络滑板(sled))连接它们的服务器。分解式服务器可以根据需要适应于改变的存储或计算负荷,而未更换或者中断整个
服务器达延长的时间段。可以例如将服务器分成可以在其它附近服务器之间共享的模块化计算、i/o和存储模块。
29.具有处理核122-1到122-m的电路系统120可以包括各种商业上可获得的处理器,包括但不限于intel
®ꢀ
atom
®
、celeron
®
、core(2)duo
®
、core i3、core i5、core i7、itanium
®
、pentium
®
、xeon
®
或者xeon phi
®
处理器、arm处理器以及类似的处理器。电路系统120可以包括至少一个高速缓存135,用来存储数据。
30.根据一些示例,主存储器130可以包括一个或多个存储器设备或者管芯,其可以包括各种类型的易失性和/或非易失性存储器。易失性类型的存储器可以包括但不限于动态随机存取存储器(dram)、静态随机存取存储器(sram)、晶闸管ram(tram)或者零电容器ram(zram)。非易失性类型的存储器可以包括具有三维(3d)交叉点存储器结构的字节或块可寻址类型的非易失性存储器,其包括在下文称作“3d交叉点存储器”的硫属化物相变材料(例如,硫属化物玻璃)。非易失性类型的存储器还可以包括其它类型的字节或块可寻址的非易失性存储器,诸如但不限于,多阈值电平nand闪速存储器、nor闪速存储器、单电平或多电平相变存储器(pcm)、电阻存储器、纳米线存储器、铁电晶体管随机存取存储器(fetram)、结合忆阻器技术的磁阻随机存取存储器(mram)、自旋转移矩mram(stt-mram)或者以上中的任何存储器的组合。在另一个实施例中,主存储器130可以包括计算平台101内和/或由计算平台101可访问的一个或多个硬盘驱动器。
31.图2图示了sr-iov 202和可扩展iov 222架构之间的一些高级别差异的示例图200。与sr-iov用于在pf 212上创建多个vf 214的粗糙粒度的设备划分与分配方法208不同,可扩展iov架构222使得软件能够以更加精细的粒度利用用于设备共享的硬件辅助而灵活地构成虚拟设备。将所构成的虚拟设备上频繁(即,性能关键)的操作直接映射到底层设备硬件(例如,可扩展iov设备230),而通过vmm/主机os 228中的设备特定的构成软件226对非频繁操作进行模拟。这不同于用于sr-iov设备202的现有架构,其中仅用软件来虚拟化虚拟设备的与设备无关的pci express架构资源(诸如配置空间寄存器和消息信号中断扩展(msi-x)能力寄存器),并且将虚拟设备资源中的其余部分(包括所有其它存储器映射i/o(mmio))直接映射到底层vf 214硬件资源(例如,sr-iov设备216)。
32.在使用硬件复制的sr-iov架构202中,多个vm和容器204在vmm和/或主机os 206之上运行。设备划分与分配逻辑208将i/o请求分配给与sr-iov设备216中的物理功能(pf)212耦合的pf驱动210,或者sr-iov设备216中的虚拟功能(vf)214。相比而言,在使用复制和构成的本发明的实施例的可扩展iov架构222中,支持多得多的vm和容器224。vm和/或容器224调用vmm/主机os 228中的设备构成逻辑226来实现i/o请求。设备构成逻辑226将i/o请求分配给与可扩展iov设备230中的精细粒度的所供应的设备资源(其还包括物理功能)耦合的pf驱动210,或者直接地分配给可扩展iov设备230中的精细粒度的所供应的设备资源232。
33.可扩展iov架构提供优于sr-iov的益处。设备资源向vm 224的精细粒度的供应连同非频繁设备访问的软件模拟使得设备能够以较低的硬件成本和复杂性来增加共享可扩展性。可扩展iov架构为诸如vmm/主机os 228之类的系统软件提供以下灵活性:使用不同的抽象利用不同的地址域共享设备资源(例如,通过系统调用访问的应用160进程和/或通过虚拟设备接口访问的vm/容器224)。通过虚拟设备(vdev)向设备资源的软件控制的动态映射,本发明的实施例的可扩展iov架构还使得vmm能够向vm 224过量供应设备资源。
34.本方法还使得vmm 228能够容易地维持数据中心中的世代兼容性。例如,在具有包含相同i/o设备的不同世代(例如,版本)的物理机器的数据中心中,vmm可以使用软件模拟来虚拟化vdev的基于mmio的能力寄存器以在与物理i/o设备的不同世代无关的情况下表示相同的vdev能力。这是为了确保可以将与vdev驱动相同的访客os映像部署或迁移至物理机器中的任一个。
35.可扩展iov架构由以下元件构成。该架构支持pci express端点设备要求和能力。该架构支持主机平台(例如,根联合体)要求,其包括对直接存储器访问(dma)重映射硬件的增强。在实施例中,这些要求被作为用于定向i/o、rev 3.0或更高的intel
®
虚拟化技术的一部分而在基于intel处理器的计算平台上实现。该架构还支持为了使得能够实现可扩展iov所设想的参考软件架构,其包括使得能够实现基础设施和端点设备特定的软件组件(诸如主机驱动、访客驱动和虚拟设备构成模块(vdcm))的主机系统软件(os和/或vmm 228)。
36.pci express端点设备可以支持在与其对于sr-iov的支持无关的情况下利用可扩展iov进行操作的要求。这使得能够实现已经支持sr-iov的设备实现,以维持这样的能力用于后向兼容性,同时添加附加能力来支持可扩展iov。
37.在本发明的实施例中,端点物理功能能够使得sr-iov和intel可扩展iov二者能够在一个模式或者另一个中操作而不是同时地操作。
38.pci express sr-iov架构遵循用于其虚拟功能(vf)214的物理功能(pf)212硬件的近乎完整功能的硬件复制。这通过经由针对其每一个vf复制pf的硬件/软件接口中的大多数的大多数sr-iov设备实现而实现,包括诸如存储器映射资源之类的资源、msi-x存储和诸如功能级别复位(flr)之类的能力。这样的功能复制方法可以增加设备复杂性并且向大量vm扩展强加限制。
39.用于i/o控制器实现的硬件-软件接口可以被分类为(a)较不频繁并且对总体设备性能具有最少影响的慢速路径控制/配置操作;以及(b)频繁并且对总体设备性能具有较高影响的快速路径命令/完成操作。慢速路径与快速路径操作的该区分被通过支持直接用户模式访问的许多高性能i/o设备来实践。可扩展iov架构对这样的设备设计进行扩展以定义i/o虚拟化与共享的软件可构成方法。
40.可扩展iov架构要求端点设备(即,可扩展iov设备230)将其硬件/软件接口组织成快速路径(频繁)和慢速路径(非频繁)访问。哪些操作和访问被区分为慢速路径与快速路径由设备实现来控制。慢速路径访问通常包括初始化、控制、配置、管理、错误处理和复位操作。快速路径访问通常包括牵涉到工作提交和工作完成处理的数据路径操作。利用该组织,通过设备特定的主机软件来俘获和模拟从访客vm对虚拟设备的慢速路径访问,而快速路径访问被直接地映射到物理设备上。该方法使得能够实现简化的设备设计(相比于sr-iov完整功能复制),而没有使i/o虚拟化可扩展性或性能受损。另外,混合型方法为软件提供了增加的灵活性以通过设备资源的精细粒度的供应来构成虚拟设备。
41.高性能i/o设备支持大量命令/完成接口以用于i/o请求的高效复用/解复用并且在一些使用中支持用户模式i/o请求。这样的设备的几个示例是:a)支持跨大量虚拟开关接口(vsi)的数千个传输/接收(tx/rx)请求的高带宽网络控制器;b)支持许多命令和完成队列对构造的存储控制器,诸如nvm express(如在nvmexpress.org处可获得的非易失性存储器(nvm)express规范(版本1.3c)中描述的);c)支持大量图形和/或计算机上下文的加速器
设备,诸如gpu;d)具有支持大量执行上下文的加速器功能单元(afu)的可再配置fpga设备;以及e)支持数千个队列对(qp)接口的具有远程直接存储器访问(rdma)能力的设备。
42.可扩展iov架构利用具有多队列/多上下文能力的高性能i/o设备设计,并且定义了以比sr-iov vf粒度更加精细的粒度(队列、队列捆束、上下文等)共享这些设备的方法。为了实现该更加精细粒度的共享,本发明的实施例的可扩展iov架构将设备的共享的粒度定义为该设备上的“可分配设备接口”(adi)。根据实施例,adi是用于具有可扩展iov能力的设备的分配单元。设备上的每一个adi实例涵盖由软件分派以支持用于虚拟设备(vdev)的快速路径操作的在设备上的资源的集合。
43.在概念上,adi类似于sr-iov虚拟功能(vf),除了它更加精细粒度并且映射到用于虚拟设备的快速路径操作。与vf不同,物理功能(pf)上的所有adi共享pf的请求者id(例如,总线/设备/功能编号),没有pci配置空间寄存器,共享pf的相同基址寄存器(bar)资源(即,没有虚拟功能基址寄存器(vfbar)),并且不需要复制的msi-x存储。代替针对每一个adi的msi-x表格存储,pf实现设备特定的中断消息存储(ims)。ims故意地类似于msi-x表格存储,但是并非架构式的,而是替代地被按照设备特定的方式来实现以得到最大的灵活性。另外,与实现vfpf通信信道的一些sriov设备以及设备上的“资源重映射逻辑”不同,adi使用慢速路径模拟来提供这样的功能性。将adi的存储器映射寄存器空间布局成使得快速路径寄存器处于与慢速路径寄存器分离的系统页面大小区域中。用于具有可扩展iov能力的设备的主机驱动定义了被分组以形成adi的设备后端资源的集合。
44.图3图示了具有sr-iov能力和具有可扩展iov能力的端点设备之间的一些差异的示例图300。sr-iov设备216包括物理功能(pf)基址寄存器(pf bar)302、pf配置(pf config)电路系统304和pf消息信号中断扩展(msi-x)电路系统306。pf msi-x 306提供了如由pci express基础规范定义的msi-x能力。sr-iov设备216还包括虚拟功能(vf)vf bar 312、vf config 314和msi-x 316的多个集合。pf bar 302和vf bar 312耦合到设备资源重映射逻辑和vfpf邮箱逻辑308,其调用设备后端资源310。在实施例中,设备后端资源310包括用于存储分组的多个队列。设备后端资源310可以包括命令/状态寄存器、设备上的队列、对存储器中的队列的引用、设备上的本地存储器或者任何其它设备特定的内部构造。
45.可扩展iov设备230包括pf bar 320,其还包括多个adi mmio组件322。pf bar 320与pf config 324、pf msi-x 326和用于adi 328的中断消息存储(ims)耦合。pf msi-x 326提供如由pci express基础规范定义的msi-x能力。ims 328使得设备能够以设备特定的优化方式存储用于adi的中断消息,而没有pci express定义的msi-x能力的可扩展性约束。pf bar 320和adi mmio组件322与设备后端资源330耦合。设备后端资源330可以包括命令/状态寄存器、设备上的队列、对存储器中的队列的引用、设备上的本地存储器或者任何其它设备特定的内部构造。
46.adi的设备特定且轻重量的性质,连同在设备特定主机软件中对虚拟设备功能性的各部分模拟的灵活性,使得设备硬件实现能够以与sr-iov vf的等同扩展相比低的设备成本和复杂性构成用于可扩展共享的大量虚拟设备。
47.利用sr-iov架构,sr-iov设备216中的每一个vf 214由pci express请求者标识符(id)(rid)标识,从而允许根联合体中的dma重映射硬件支持(诸如intel
® vt-d)针对来自vf的上游请求应用唯一的地址转换功能。rid是用于pci express pf或vf的总线、设备和功
能编号身份。rid还用于路由针对pci express设备层级的事务(诸如读取完成),并且因而可以是具有大的i/o扇出设计的一些平台拓扑上的罕见资源。这可以在sr-iov设备可以支持的隔离域的数目上强加可扩展性限制。
48.本发明的实施例的可扩展iov架构通过与其所有adi共享物理功能(pf)232的rid以及替代地为adi分配进程地址空间标识符(pasid)来解决平台可扩展性问题,所述进程地址空间标识符(pasid)在上游事务中使用pci express pasid事务层分组(tlp)前缀来传达。参考pci express规范以得到关于pasid tlp前缀的细节。计算平台101对于可扩展iov架构的支持使得能够以pasid粒度实现用于上游请求的唯一地址转换功能。与rid不同,pasid不用于在i/o结构上路由的事务,而是替代地仅用于传达被存储器事务作为目标的地址空间。另外,与16位rid相比,pasid是20位id,其给出16x多的标识符。可扩展iov架构对pasid的该使用使得可扩展iov设备能够支持显著更多的域。
49.图4图示了用于可扩展iov的高级别软件架构400的示例图。图4图示了用于描述可扩展iov架构的组件,并且不旨在图示所有虚拟化软件或特定实现选择。为了支持宽泛类型的设备分类和实现,在系统软件(os 150/vmm 180)与设备特定的驱动软件组件之间抽象软件责任。
50.因而,图4是构成硬件辅助虚拟设备连同如何管理设备操作的系统软件(主机os 150和vmm 180)和设备特定的软件角色与交互的描述。所描述的软件架构集中于针对虚拟机和机器容器的i/o虚拟化。然而,原理可以被利用对其它域的适当软件支持来应用,诸如跨裸金属容器或应用进程的i/o共享。
51.本发明的实施例的可扩展iov架构引入了被称作虚拟设备构成模块(vdcm)402的设备特定软件组件,其负责利用一个或多个可分配设备接口(adi)406、408来构成一个或多个虚拟设备(vdev)404实例,vdcm通过对vdev慢速路径操作/访问进行模拟并且将vdev快速路径访问映射到在物理设备上分配和配置的adi实例来做此。与sriov vf 214不同,vdcm 402允许可扩展iov设备230避免在硬件中实现慢速路径操作,并且替代地使设备硬件集中到高效地扩展adi。
52.另外,虚拟化管理软件(例如,vmm 180)利用vdcm 402软件接口以用于增强的虚拟设备资源和状态管理,使得能够实现诸如虚拟设备的挂起、重新开始、复位和迁移之类的能力。取决于特定的vmm实现,vdcm 402被实例化为分离的用户或内核模块,或者可以被封装为主机驱动的一部分。
53.用于具有可扩展iov能力的设备230的主机驱动412在概念上等同于sr-iov pf驱动210。作为主机os 150或vmm(管理程序)软件180的一部分而加载和执行主机驱动412。除了正常设备驱动的角色之外,主机驱动412还实现如由主机os 150或vmm 180基础设施定义的软件接口以支持多个adi 428、430、432、434的枚举、配置、实例化和管理。主机驱动412负责配置每一个adi,诸如其pasid身份、用于存储adi的中断消息的设备特定中断消息存储(ims)328、用于对adi的快速路径访问的mmio寄存器资源322以及任何设备特定的资源。
54.表1图示了主机驱动412支持以用于管理adi的示例高级别操作集合。通过由特定系统软件(例如,主机os 150或vmm 180)实现所定义的软件接口来调用这些操作。
55.表1——用于可扩展iov的主机驱动接口描述
针对pf进行报告的可扩展iov能力。adi/vdev的类型和最大数目的枚举。针对每一个adi类型的资源要求的枚举。用于adi的部署兼容性的枚举和设置。adi及其组成资源的分派、配置、复位、耗尽、中止、释放。设置和管理adi的pasid身份。管理用于adi的设备特定中断消息存储(ims)。使得访客能够托管通信信道(如果支持的话)。配置adi的设备特定qos属性。对adi的迁移兼容性进行枚举和管理。挂起/保存adi的状态,并且恢复/重新开始adi的状态。
56.虚拟设备构成模块(vdcm)402是负责使用由主机驱动412分派的一个或多个adi 406、408来构成一个或多个虚拟设备(vdev)404实例的设备特定组件。vdcm 402实现vdev 404慢速路径操作的基于软件的虚拟化,并且将快速路径操作布置为直接地提交至支持adi(backing adi) 428、430、432、434。支持这样的硬件辅助虚拟设备构成的主机os 150或vmm 180实现可以要求通过设备供应商以不同的方式实现和封装vdcm。例如,在一些os或vmm实现中,将vdcm 402封装成作为设备的主机驱动412的一部分安装的用户空间模块或库。在其它实现中,vdcm 402是内核模块。如果实现为库,则vdcm 402可以与负责创建和管理vm资源的vmm特定虚拟机资源管理器(vmrm)静态地或者动态地链接。如果实现在主机os内核中,则vdcm 402可以是主机驱动412的一部分。
57.用于具有可扩展iov能力的设备230的访客驱动424在概念上等同于sr-iov设备vf驱动。在实施例中,驻留在访客vm 422中的访客驱动424管理由vdcm 402构成的vdev实例404。将通过访客驱动424的快速路径访问426直接地发布到vdev 404后面的adi 432、434,而慢速路径访问420被vm资源管理器(vmrm)416和vdcm 402拦截和虚拟化。类似于可用于sr-iov pf 212和vf 214驱动的实现选择,对于目标os 150,将访客驱动424部署为分离的驱动或者支持主机os 150和访客vm 422功能性二者的统一驱动。对于现有的sr-iov设备216,如果vdev 404被构成为像现有vf 214那样行动,则为了后端兼容性,可扩展iov访客驱动424甚至可以与sr-iov vf 214驱动相同。
58.在本发明的实施例中,虚拟设备(vdev)404是通过其将所共享的物理设备(例如,可扩展iov设备230)暴露给访客vm 422中的软件的抽象。利用虚拟资源,诸如虚拟请求者id、虚拟配置空间寄存器、虚拟存储器bar、虚拟msi-x表格等,将vdev 404暴露给访客vm 422,作为虚拟pci express枚举设备。每一个vdev 404可以由一个或多个adi 428、430、432、434支持。支持vdev 404的adi通常属于相同的pf 232,但是其中跨多个pf分派它们(例如,以支持设备故障容差或者负载均衡)的实现是可能的。
59.pf 232可以既在设备后端资源330的数目方面又在功能性方面支持多个类型的adi。类似地,多个类型的vdev构成在可扩展iov设备230上(关于支持adi的数目、adi的功能性等)是可能的。vdcm 402可以发布对于构成多个“vdev类型”的支持,使得虚拟机资源管理器(vmrm)416能够请求不同类型的vdev实例以用于分配给虚拟机(vm)。vdcm 402使用主机os 150和vmm 180定义的接口来分派和配置构成多个vdev 404实例所需要的资源。可以以
与sr-iov vf 214相同的方式将vdev实例分配给vm 422。
60.vdev 404可以由在vdev实例化的时候预分派的静态数目的adi构成,或者由vdcm 402响应于分派/释放资源的访客驱动424请求而动态地构成。静态分派的adi的示例是具有固定数目的rx/tx队列的虚拟nic(vnic)。动态分派的adi的示例是虚拟加速器设备,其中由vdcm 402将上下文分派请求虚拟化以将加速器上下文动态地创建为adi。
61.针对vdev mmio空间的任何系统页面大小区域,可以利用以下方法中的任一个来构成vdev的mmio寄存器322。
62.1)直接映射到adi mmio。作为构成vdev实例404的一部分,vdcm 402定义访客物理地址(gpa)空间中的vdev虚拟bar中的系统页面大小范围,其需要被映射到主机物理地址(hpa)空间中的支持adi的mmio页面范围。vdcm 402可以请求vmm 180在主机处理器122-1
……
122-m虚拟化页表中设立gpa到hpa映射,使得能够实现通过访客驱动424对adi的直接访问。这些直接映射的mmio范围支持对adi 432、434的快速路径操作426。
63.2)通过vdcm拦截和模拟的vdev mmio。用于vdev的慢速路径寄存器由vdcm 402通过请求vmm 180不对主机处理器虚拟化页表中的这些mmio区域322进行映射而虚拟化,因而在访客驱动424访问这些寄存器时强制主机拦截。将这些拦截提供给构成vdev实例404的vdcm模块402,使得vdcm 402可以凭借自己或者通过与主机驱动412的交互来虚拟化这样的所拦截的访问。为了最小化慢速路径访问模拟上的软件复杂性,主机os 150或者虚拟化提供商可以约束访客驱动424以使用八个字节或更少的简单存储器移动操作来访问vdev的慢速路径mmio资源。频繁读取并且没有读取副作用但是要求关于写入访问的vdcm拦截和模拟的vdev寄存器可以被作为只读而映射到由vdcm提供的存储器支持(memory backed)的页面。这通过在访客写入访问上进行拦截而支持对这些寄存器的高性能读取访问连同对其写入副作用的虚拟化。在vdev mmio布局上,必须将“仅写入拦截”寄存器托管在与“读写拦截”寄存器分离的系统页面大小区域中。
64.3)映射到存储器130的vdev mmio 322。没有读取或写入副作用的vdev寄存器可以利用读取和写入访问而映射到主存储器130。这些寄存器可以包含用于通过写入到所拦截的寄存器而执行的随后操作的参数或数据。设备实现还可以使用该方法来限定用于访客驱动424和vdcm 402之间的vdev特定通信信道的虚拟寄存器。访客驱动424在没有主机拦截的情况下向存储器支持的虚拟寄存器写入数据,之后是由vdcm拦截的邮箱寄存器访问。该优化减少了用于在访客和主机之间传递数据的主机拦截与指令模拟成本。这样的方法使得访客驱动424能够比基于硬件的通信门铃(如常常在sr-iov vf 214与pf 212之间实现的)更加一般性地实现或者在不依靠访客os或vmm特定的半虚拟化软件接口的情况下实现关于vdcm的这样的信道。
65.vdev 404暴露由vdcm 402模拟的虚拟msi或虚拟msi-x能力。访客驱动424通常通过访客vm 422接口来请求vdev中断资源,并且访客vm可以通过经由vdev 404的虚拟msi或虚拟msi-x能力对一个或多个中断消息进行编程来为此服务。
66.对于典型的虚拟设备构成,存在作为vdev中断递送至访客驱动424的中断的两个源。一个源是可以代表vdev生成要递送至访客驱动的虚拟中断的vdcm软件402本身。这些是通过由vdcm模拟的vdev的慢速路径操作的软件生成的中断。中断的另一源是用于支持vdev 404的快速路径操作的设备上的adi实例432、434。adi生成的中断使用存储在中断消息存储
(ims)328中的中断消息。
67.当访客vm 422对虚拟msi或msi-x寄存器进行编程时,操作被vdcm 402拦截和虚拟化。对于慢速路径虚拟中断,vdcm通过vmm 180软件接口请求针对访客的虚拟中断注入。对于来自adi的快速路径中断,vdcm调用主机驱动412来分派和配置ims中所要求的中断消息地址和数据。这在概念上类似于如何通过某种虚拟化软件对用于sr-iov vf的msi-x中断进行虚拟化,除了通过主机驱动412在ims中对中断消息进行编程,与通过pci驱动在msi-x表格中对中断消息进行编程相对。
68.出于设备特定的使用和原因,具有可扩展iov能力的设备230可以选择在访客驱动424和vdcm 402之间构建通信信道。可以利用以下方法中的任一个以与访客和主机系统软件无关的方式进行构建这些通信信道。
69.1)软件模拟的通信信道。这样的信道由vdcm 402使用vdev mmio空间中的一个或多个系统页面大小区域来构成,所述vdev mmio空间被设立为完全存储器支持的以使得能够实现访客vm 422与主机os 150之间的数据的共享。vdev mmio空间中的主机拦截的系统页面大小区域还被设立为将访客动作用信号通知给主机。可选地,虚拟中断还可以由vdcm设立以用信号通知访客关于异步通信信道动作的完成。
70.2)基于硬件邮箱的通信信道。如果访客驱动424和主机驱动412之间的通信频繁并且基于软件模拟的通信信道开销显著,则可扩展iov设备230可以基于软件邮箱实现通信信道。这类似于一些现有设计中的sr-iov vf 214和pf 212之间的通信信道。
71.共享虚拟存储器(svm)指的是在设备在共享该设备的应用的cpu虚拟地址空间中操作的情况下的使用。利用对dma重映射硬件进行编程的系统软件而使得能够实现svm使用,以参考cpu页表以得到利用pasid的请求,所述pasid表示目标应用虚拟地址空间。支持这样的svm能力的设备不要求设备访问的页面被钉住(pin),并且替代地支持pci express地址转换服务(ats)和页面请求服务(prs)能力以支持可恢复的设备页面错误。参考pci express规范以得到关于ats和prs能力的细节。
72.支持可扩展iov架构的设备可以独立地支持被分派给主机应用的adi上的svm使用,或者针对通过分配给访客vm 422的vdev实例而分派给访客应用的adi的svm使用。主机和访客svm使用二者对于adi操作是透明的。一个差别在根联合体dma重映射硬件的地址转换功能编程方面。针对表示主机svm使用的pasid所编程的地址转换功能是指相应的cpu虚拟地址到物理地址的转换,而针对表示访客svm使用的pasid所编程的地址转换功能是指相应的嵌套地址(访客虚拟地址到访客物理地址以及进一步地到主机物理地址的)转换。
73.现在将描述用于使端点设备支持可扩展iov架构的要求和能力的集合。要求适用于根联合体集成端点(rciep)和pci express端点(pciep)设备二者。在实施例中,端点设备可以是nic、存储控制器、gpu、fpga、专用集成电路(asic)或其它电路系统。
74.如之前所述,可扩展iov架构将用于端点设备(即,可扩展iov设备230)上的精细粒度的共享的构造定义为可分配设备接口(adi)428、430、432、434。adi形成用于具有可扩展iov能力的设备230的分配和隔离的单元,并且由软件构成以形成虚拟设备。针对adi的枚举、分派、配置、管理和隔离的端点设备的要求如下。
75.与快速路径工作提交、执行和完成操作相关联的端点设备上的资源被称为设备后端资源。
76.可分配设备接口(adi)428、430、432、434是指被分派、配置和组织为隔离单元(形成设备共享的单元)的设备后端资源330的集合。经分组以构成adi的后端资源的类型和数目是设备特定的。例如,对于网络控制器设备(诸如以太网nic),adi可以由与虚拟开关接口(vsi)相关联的tx/rx队列和资源的集合构成。存储控制器上的adi可以是与存储命名空间相关联的命令队列和完成队列的集合。类似地,gpu上的adi可以被组织为代表虚拟gpu设备实例所创建的图形或计算上下文的集合。取决于设计,fpga设备上的adi可以是整个加速器功能单元(afu)或者具有多上下文能力的afu上的上下文。
77.sr-iov架构指定通过vf构造对pci express架构资源的分派,但是将关于如何分派设备后端资源以及设备后端资源如何与特定vf 214相关联留给设备实现。想要向vf 214灵活地供应变化数目的后端资源(即,一个队列对去往第一vf,并且一个队列对去往另一个vf)的设备需要在端点设备内实现另一级别的“资源重映射逻辑”(如在图3中的块308处示出)以映射哪些设备后端资源310通过特定vf 214可访问并且与通过其它vf的访问隔离。随着vf和后端资源的数目的扩展,端点设备中这样的资源重映射逻辑308增加了设备复杂性。
78.sr-iov软件架构提供了由单个vf构成的虚拟设备实例,而本发明的实施例的可扩展iov软件架构允许软件通过使用一个或多个adi来构成虚拟设备(vdev)实例。这使得端点设备硬件设计能够避免对于端点设备内部的复杂资源重映射逻辑的需要。
79.例如,考虑将队列对(qp)436、438、440、442用作后端资源330的设备,以及需要vdev中的八个qp用于其工作负荷的vm 422。在sr-iov架构中,设计将不得不利用或者每一vf八个qp的静态划分或者使用端点设备中的资源重映射逻辑308的八个qp向vf的动态划分将vf 214映射到八个qp。等同的具有可扩展iov能力的设备设计将每一个qp视为adi 428、430、432或434,并且使用vdcm软件402来使用八个adi构成vdev。在该情况下,在vdcm 402中实现资源重映射功能性。
80.图5图示了利用变化数目的设备后端资源330的adi以及利用一个或多个adi 520、522、524、526构成虚拟设备实例508、510、512的虚拟化软件的逻辑视图的示例图500。存在一个或多个访客分区,诸如访客分区1 502、访客分区2 504
……
访客分区j 506,其中j是自然数,由计算平台101执行。存在一个或多个虚拟设备(vdev),诸如虚拟设备1 508、虚拟设备2 510
……
虚拟设备k 512,其中k是自然数,由计算平台101执行。每一个访客分区可以调用一个或多个虚拟设备用于i/o请求。例如,访客分区502调用虚拟设备1 508,访客分区2 504调用虚拟设备2 510,以此类推,访客分区j调用虚拟设备k 512。可能存在任何数目的访客分区。可能存在任何数目的虚拟设备。被任何一个访客分区调用的虚拟设备的最大数目是与实现相关的。在端点设备硬件(即,可扩展iov设备230)内,存在一个或多个adi,诸如adi 1 520、adi 2 522、adi 3 524
……
adi m 526,其中m是自然数。在可扩展iov设备230中可能存在任何数目的adi(即,它是与实现相关的),并且在计算平台101中存在一个或多个可扩展iov设备(例如,网络i/o设备110)。在计算平台中使用的可扩展iov设备的数目是与实现相关的。每一个adi使用一个或多个设备后端资源330。例如,adi 1 520使用后端资源1 528,adi 2 522使用后端资源2 530,adi 3 524使用后端资源3 532、后端资源4 534和后端资源5 536,并且adi m 526使用后端资源n 538。在可扩展iov设备230中可能存在任何数目的后端资源。可扩展iov设备中的后端资源的数目是与实现相关的。
81.任何虚拟设备508、510、512可以针对i/o请求而采取慢速路径或快速路径。例如,
虚拟设备1 508调用慢速路径软件模拟514或者到adi 1 520的快速路径直接映射540。例如,虚拟设备1 508还经由快速路径直接映射540调用adi 2 522。例如,虚拟设备2 510调用慢速路径软件模拟516或者经由快速路径直接映射542调用adi 3 524。例如,虚拟设备k 512调用慢速路径软件模拟518或者经由快速路径直接映射544调用adi m 526。
82.不同于其请求被利用每一个vf的唯一请求者id(rid)进行标记的sr-iov vf,在本发明的实施例中,来自pf的所有adi的请求被利用该pf的rid进行标记。替代地,通过端对端pasid tlp前缀中的进程地址空间标识符(pasid)来区分来自adi的请求。pci express规范定义了事务的pasid tlp前缀中的进程地址空间标识符(pasid),其与rid结合地标识与所述请求相关联的地址空间。
83.被pasid值作为目标的地址空间的定义取决于根联合体dma重映射硬件能力以及通过软件对这样的硬件的编程。利用用于定向i/o、rev 3.0或更高的intel
®
虚拟化技术的计算平台通过pasid粒度地址转换能力来支持可扩展iov架构。取决于这样的dma重映射硬件的编程,被具有pasid的请求作为目标的地址空间可以是主机物理地址(hpa)、主机虚拟地址(hva)、主机i/o虚拟地址(hiova)、访客物理地址(gpa)、访客虚拟地址(gva)、访客i/o虚拟地址(giova)等。所有这些地址空间类型可以共同存在于计算平台101上用于不同的pasid值,并且来自一个或多个可扩展iov设备的adi可以被配置成使用这些pasid。
84.当将adi分配给地址域(例如,vm 422、容器或进程)时,利用地址域的唯一pasid来配置adi,并且利用pasid tlp前缀中的pasid值来标记adi的存储器请求。如果将多个adi分配给相同的地址域,则可以为它们分配相同的pasid。如果将属于被分配给vm的虚拟设备(vdev)的adi进一步映射到vm内的辅助地址域(例如,应用进程),则为每一个这样的adi分配与该辅助地址域对应的唯一pasid。这使得能够实现诸如vm内的共享虚拟存储器(svm)之类的使用,其中为访客应用进程分配adi,并且与用于通过访客应用进行的cpu访问的嵌套地址转换(gva到gpa到hpa)类似,来自访客的adi的请求也经受通过dma重映射硬件进行的相同嵌套转换。取决于使用模型,还可以允许adi使用不止一个pasid值,并且在该情况下,哪个pasid值与哪个请求一起使用的语义是与可扩展iov设备相关的。例如,adi可以被配置成利用表示受约束的控制域的一个pasid来访问元数据、命令和完成,而数据访问与adi被分配到的域的pasid相关联。
85.在实施例中,支持可扩展iov架构的设备230支持如由pci express规范定义的pasid能力并且遵守所有相关联的要求。在使得能够实现pf 232上的adi之前,通过软件而使得能够实现pf 232上的pasid能力。在激活adi之前,利用pasid值配置adi。使用pasid tlp前缀利用所分配的pasid值标记由adi生成的所有上游存储器请求(除了地址转换服务(ats)转换的请求之外)。在实施例中,adi不能够在没有pasid的情况下生成存储器请求(除了ats转换的请求之外)并且不能够利用不是adi被分配的pasid值的pasid tlp前缀中的pasid值来生成存储器请求。
86.每一个adi的存储器映射i/o(mmio)322寄存器被托管在托管pf 232的pci express基址寄存器(bar)320中的一个或多个内。每一个adi的mmio 322寄存器被包含在一个或多个系统页面大小且对齐的区域中,并且这些可以是pf的mmio空间322内的连续或分散的区域。pf的mmio内的系统页面大小区域的数目和位置与特定adi之间的关联是设备特定的。经由以下描述的intel可扩展iov枚举能力来报告可扩展iov设备支持的系统页面大
小。在实施例中,对于intel
®
64位计算平台,系统页面大小是四千字节(kb)。
87.支持可扩展iov架构的设备将其adi mmio 322寄存器划分成两个类别:(a)为了快速路径操作而频繁访问的mmio寄存器;以及(b)为了慢速路径(控制、配置、管理等)操作而非频繁访问的mmio寄存器。什么操作被指定为慢速路径与快速路径的定义是设备特定的。pf 232对有区别的系统页面大小区域中的这两个类别中的寄存器进行定位。这使得诸如主机os/vmm 228之类的虚拟化软件能够将快速路径操作直接地映射到一个或多个组成adi,同时在软件514、516、518中对慢速路径操作进行模拟。
88.在实施例中,设备实现64位bar 320使得四十亿字节(4gb)以上的地址空间可以用于扩展adi mmio 322资源。另外,由于不可预取的bar使用甚至具有64位bar的4 gb以下的mmio空间,因此在一个实施例中,设备实现可预取的64位bar。
89.能够生成中断的adi仅生成消息信号中断(msi)(不是传统中断)。adi不与pf或者另一个adi共享中断资源/消息。adi可以支持一个或多个中断消息。例如,由pf上的n个队列构成的adi可以支持n个中断消息以针对每一个队列区分工作到达或完成,其中n为自然数。
90.可扩展iov架构使得设备实现能够支持大量adi,并且每一个adi可以使用多个中断消息。为了支持用于所有adi的大的中断消息存储,定义了用于adi 328的设备特定构造所调用的中断消息存储(ims)。ims 328使得设备能够以设备特定的优化方式存储用于adi的中断消息,而没有pci express定义的msi-x能力的可扩展性约束。
91.尽管ims存储组织是设备特定的,但是在一个实施例中,ims条目使用与pci express msi-x表格条目相同的中断消息地址和数据格式来存储和生成中断。存储在ims 328中的中断消息由dword大小数据有效载荷和64位地址构成。类似于pci express msi-x能力中的每一向量屏蔽(mask)与待决位阵列,ims 328还可以可选地支持每一消息屏蔽与待决位状态。在实施例中,通过主机驱动412对ims资源进行编程。
92.托管adi的pf可以支持pci express定义的msi或msi-x能力。由pf 232生成的中断可以使用如由pci express规范指定的pf的msi或msi-x能力326,而由adi生成的中断可以使用设备特定ims 328。根据本发明的实施例的特定主机os 150/vmm 180实现支持用于pf的中断的ims 328的使用和/或用于adi中断的pf的msi-x表格的使用。
93.ims 328的大小、位置和存储格式是设备特定的。例如,一些设备可以将ims实现为设备上的存储,而管理被保存到主存储器130和从主存储器130恢复的上下文的其它有状态的设备可以将ims实现为上下文特权状态的一部分。在任一方法中,设备可以将ims 328实现为一个统一存储结构或者分散的每一adi存储结构。如果ims 328被在主机主存储器130中实现,则adi可以在可扩展iov设备上缓存ims条目。如果可扩展iov设备实现ims缓存,则可扩展iov设备还实现用于设备特定驱动的设备特定接口以使ims缓存条目无效。
94.ims 328由主机驱动软件412管理,并且不可被直接地从访客分区502、504、506中的访客或用户模式驱动访问。在可扩展iov设备内,ims存储不可被直接地从adi访问,并且替代地,adi可以仅通过pf的“中断消息生成逻辑”来请求中断生成。这确保adi不能修改ims内容,并且adi可以仅使用由主机驱动软件412分配给对应adi的ims条目来间接地生成中断。
95.在基于intel架构(ia)的64位架构计算平台上,在没有pasid tlp前缀的情况下向地址范围0xfeexxxxx发布消息信号中断,作为dword大小未经转换的存储器写入。由于由
adi生成的所有存储器请求都包括pasid tlp前缀,而中断消息被在没有pasid tlp前缀的情况下生成,因此不可能通过adi生成到中断消息地址(基于ia的64位计算平台上的0xfeexxxxx)的dma写入并使平台将dma写入解释为中断消息。
96.一个adi的操作或运转必须不影响另一个adi的运转或者pf 232的运转。来自adi的每一个存储器请求(除了ats转换的请求之外)必须伴随使用pasid tlp前缀中的adi被分配的pasid值的pasid tlp前缀。用于adi的pasid身份诸如通过主机驱动412由特权软件访问或修改。
97.由于可扩展iov设备230上的adi是pf 232的一部分,因此pci express访问控制服务(acs)能力不适用于adi之间的隔离。替代地,设备禁用adi之间以及adi与pf之间的(在设备内部或在i/o结构出口处的)对等访问。与可扩展iov架构支持无关,pf 232可以依照pci express规范来支持用于跨端点功能或设备的隔离的acs指南。
98.特定于给定可扩展iov设备来定义用于adi的服务质量(qos)。adi qos属性由主机驱动412管理并且由vdcm 402通过主机驱动412接口来控制。
99.adi特定错误是可以归因于特定adi的错误,诸如畸形命令或地址转换错误。这样的错误不会影响其它adi或pf 232的运转。以设备特定的方式来实现adi特定错误的处置。
100.每一个adi可独立地复位,而不影响其它adi的操作。然而,不同于sr-iov vf 214,adi不支持功能级别复位(flr)能力。替代地,经由adi重置配置410通过到主机驱动412的软件接口来执行adi的复位,如图4中所示。为了支持adi复位,可扩展iov设备实现接口来中止(例如,抛弃)通过特定域(或pasid)对adi的在飞行中且已接受的操作。在实施例中,由adi构成的vdev 404可以暴露虚拟flr能力,其可以被vdcm 402通过请求主机驱动412为用于vdev 404的组成adi 428、430、432或434执行adi复位来模拟。
101.adi复位确保直至满足以下条件才将复位报告为完成:a)通过adi进行的所有dma写入操作都被耗尽或中止;b)通过adi进行的所有dma读取操作都已经完成或中止;c)来自adi的所有中断都已经被生成;d)如果adi能够进行地址转换服务(ats),则通过adi进行的所有ats请求都已经被完成或中止;以及e)如果adi能够进行页面请求服务(prs),则没有更多的页面请求将由adi生成。另外,或者已经接收到针对由adi生成的所有页面请求的页面响应,或者adi将抛弃针对任何未完成的页面请求的页面响应。
102.在实施例中,pf 232支持功能级别复位(flr)并且可以可选地支持附加的设备特定的全局复位控制。pf 232上的全局复位操作和flr使其所有adi复位并且使pf返回到其中没有配置adi的状态。
103.在实施例中,pf 232支持保存并恢复adi状态以促进诸如由这样的adi构成的虚拟设备的实况迁移和挂起/重新开始之类的操作。例如,为了支持adi挂起,可扩展iov设备230实现接口以耗尽(即,完成)通过特定域(或pasid)对adi的在飞行中且已接受的操作。在实施例中,adi挂起、adi状态保存、adi状态恢复以及从所恢复的状态的adi重新开始还被通过主机驱动412接口来实现。
104.pf 232通过主机驱动412接口向诸如vdcm 402之类的系统软件报告对于可扩展iov架构的支持。如果主机驱动412报告对于可扩展iov架构的支持,则主机驱动412支持接口的扩展集合以枚举、供应、实例化和管理pf上的adi。系统软件,诸如vdcm 402,通过主机驱动412执行可扩展iov设备230上的所有可扩展iov指定的操作。
105.另外,在一个实施例中,针对诸如vdcm 402之类的系统软件和软件工具定义pci express指定供应商特定的扩展能力(dvsec),以检测支持可扩展iov架构的设备,而没有主机驱动依赖(dependency)。主机驱动412仍然负责使得能够通过系统软件特定的接口来实现可扩展iov架构和相关操作。
106.图6图示了示例可扩展iov dvsec结构600的图。一直到偏移量0xa的字段是标准dvsec能力头部信息。参考pci express dvsec头部以得到这些字段的详细描述。在以下描述其余字段。
107.功能依赖(dep)链路(只读(ro))字段602处在偏移量0xa处并且具有一个字节的大小。用于设备的编程模型可能在功能的集合之间具有供应商特定的依赖。功能依赖链路字段602用于描述这些依赖。该字段描述pf 232之间的依赖。adi依赖与其pf的依赖相同。如果pf 232与可扩展iov设备230的其它pf独立,则该字段包含pf自己的功能编号。如果pf依赖于可扩展iov设备的其它pf,则该字段包含相同功能依赖列表(fdl)中的下一pf的功能编号。fdl中最后的pf包含fdl中第一个pf的功能编号。
108.pf之间的依赖由偏移量0xb处的标志字段604来描述。标志字段604(只读)处在偏移量0xb处并且具有一个字节的大小。在实施例中,标志604字段在该字节的位0中包括同构(h)标志,并且位1到7是预留的。当将h标志报告为被置位时,h标志指示fdl中的所有pf必须被(以设备特定的方式)启用以用于可扩展iov操作。如果fdl中的一些但不是所有的pf已被启用以用于可扩展iov操作,则行为是未定义的(即,如果将h标志报告为被置位,则一个pf不能处于可扩展iov操作模式中并且另一个不能处于sr-iov操作模式中)。如果h标志没有被置位,则fdl中的pf可以处于不同的模式中。
109.支持的页面大小(只读)字段606处在偏移量0xc处并且具有四个字节的大小。支持的页面大小字段606指示由pf 232支持的页面大小。如果位n被置位,则pf支持2
n+12
的页面大小。例如,如果位0被置位,则pf支持4 kb页面。页面大小描述了对于adi mmio 322页面的最小对齐要求,使得它们可以被独立地分配给不同的地址域。在实施例中,要求pf支持4 kb页面大小。为了跨主机平台架构的宽泛兼容性,pf可以支持附加的系统页面大小。
110.系统页面大小(读-写(rw))字段608处在偏移量0x10处并且具有四个字节的大小。系统页面大小字段608定义了系统用来映射adi的mmio 322页面的页面大小。软件将系统页面大小的值设置成在支持的页面大小字段中设置的页面大小中的一个。与支持的页面大小一样,如果在系统页面大小中位n被置位,则与该pf相关联的adi支持2
n+12
的页面大小。例如,如果位1被置位,则设备使用8 kb页面大小。如果系统页面大小为零,不止一个位被置位,或者在支持的页面大小中没有被置位的系统页面大小字段中的位被置位,则行为是未定义的。
111.当系统页面大小字段608被写入时,pf 232对齐系统页面大小边界上的所有adi mmio 322资源。必须在对pf的pci命令寄存器中的存储器空间启用位进行置位之前配置系统页面大小。如果在存储器空间启用位被置位之后修改了系统页面大小,则行为是未定义的。默认值是0000 0001h,指示4 kb的系统页面大小。
112.能力(只读)字段610处于偏移量0x14处并且具有四个字节的大小。在实施例中,能力字段610在位0中包括ims支持标志,并且位1到31是预留的。ims支持标志指示在设备中对于中断消息存储(ims)的支持。当ims支持标志为0时,设备不支持ims。当ims支持标志为1
时,设备支持ims。
113.如果虚拟化软件(诸如vdcm 402)不支持通过pf本身的ims使用(被支持仅用于pf adi的ims使用),则当将pf直接地分配给域时,为了兼容性,虚拟化软件可以将虚拟可扩展iov能力暴露给具有被报告为0的ims支持标志的域。
114.在实施例中,可扩展iov架构依靠以下平台级别能力:a)在支持根端口(rp)、根联合体(rc)和dma重映射硬件单元时对于pci express pasid tlp前缀的支持(参考pci express修订本4.0规范以得到关于pasid tlp前缀支持的细节);以及b)通过dma重映射硬件进行的pasid-粒度地址转换,诸如通过用于定向i/o(intel
® vt-d)的intel
®
虚拟化技术(intel
® vt)修订本3.0或更高中的可扩展模式地址转换所定义的pasid-粒度地址转换。
115.如由intel
® vt-d定义的可扩展模式地址转换牵涉到三阶段地址转换。其它实施例可以使用其它方法。首先,上游请求中的请求者id(rid)(总线/设备/功能编号)用于咨询以rid(pf或sr-iov vf)粒度指定转换行为的根和上下文结构。上下文结构是指pasid结构。其次,如果该请求包括pasid tlp前缀,则来自tlp前缀的pasid值用于咨询以pasid(目标地址域)粒度指定转换行为的pasid结构。如果该请求在没有asid tlp前缀的情况下,则替代地使用由上下文结构中的软件编程的pasid值。对于每一个pasid,可以对相应的pasid结构条目进行编程以指定第一级别、第二级别、透传或嵌套转换功能,连同对第一级别和第二级别页表结构的引用。最后,取决于转换功能的类型,请求中的地址经受使用第一级别、第二级别或这两个页表结构的地址转换。
116.pasid粒度地址转换使得来自pf上的每一个adi的上游请求能够具有唯一的地址转换。pf 232上的任何这样的adi 428、430、432或434可以由vdcm 402使用以构成可以分配给任何类型的地址域(诸如vm或机器容器的访客物理地址空间、用于裸金属容器的i/o虚拟地址、用于应用进程的共享cpu虚拟地址、或者在vm内操作的这样的访客容器或进程)的虚拟设备404。
117.对于跨设备的中断隔离,主机系统软件,诸如主机os 150、vmm 180和/或vdcm 402,使得能够实现中断映射,并且将可重映射的中断消息格式用于在设备上的msi、msi-x 326或ims 328中编程的所有中断消息。参考用于定向i/o规范的intel虚拟化技术以得到关于中断重映射的细节。
118.在各种实施例中,支持可扩展iov架构的计算平台还支持宣布中断(posted interrupt)能力。宣布中断使得能够通过以下而实现可扩展中断虚拟化:使得中断消息能够在访客中断向量空间中操作而没有消费主机处理器中断向量。它另外使得能够实现虚拟中断到主动虚拟处理器的直接递送,而没有管理程序处理开销。参考用于定向i/o架构规范的intel虚拟化技术以得到关于宣布中断的细节。宣布中断操作对于端点设备是透明的。
119.图7图示了用于可扩展模式地址转换的示例高级别转换结构组织700。在实施例中,使用可扩展模式根表702来实现可扩展模式地址转换。可扩展模式根表702包括多个条目。在该示例中,可扩展模式根表中的条目的数目是256,计算平台101中可能的总线的最大数目。可扩展模式根表702中的示例条目n 708指向可扩展模式下部上下文表格710中的条目并且指向可扩展模式上部上下文表格712中的条目。在实施例中,在可扩展模式下部上下文表格710中存在128个条目,编号为设备(dev)=0条目714一直到设备=15条目716(这16个设备中的每一个具有八个条目)。可扩展模式下部上下文表格中的每一个条目指定功能。功
能id在一个实施例中是0和7之间的编号。在实施例中,在可扩展模式上部上下文表格712中存在128个条目,编号为设备=16条目718一直到设备=31条目720(这16个设备中的每一个具有八个条目)。可扩展模式上部上下文表格中的每一个条目指定功能。可扩展模式下部上下文表格710或者可扩展模式上部上下文表格712中的被选条目指向可扩展模式pasid目录(directory)722。在实施例中,在可扩展模式pasid目录722中存在2^14个条目,从条目编号0 724到条目编号2^14-1 726。到目录中的索引在一个实施例中由pasid的位6到19形成。可扩展模式pasid目录722中的被选条目指向可扩展模式pasid表格728中的被选条目。在实施例中,在可扩展模式pasid表格728中存在64个条目,从条目编号0 730到条目编号63 732。到可扩展模式pasid表格728中的索引在一个实施例中由pasid的位0到5形成。可扩展模式pasid表格728中的被选条目指向第一级别页表结构734并且指向第二级别页表结构736。
120.图8图示了虚拟设备构成800的示例图。主机os 150包括vdcm 402,用来使用vdem模板404来实例化虚拟设备vdev 1 816以用于利用访客vm 422中的访客驱动424操作。vdev 404包括唯一地标识vdev实例(例如,vdev 1 816)的pasid 802。vdev 404包括定义用于vdev实例的参数的虚拟pci配置空间(vcs)804,诸如能力(例如,msi-x、bar和其它pci能力)、错误处置、服务质量(qos)设置和复位指示符。vdev 404包括用于存储多个msi-x中断条目的msi-x表格806。vdev 404包括mmio字段以用于针对快速路径adi mmio 808、软件模拟的管理程序拦截(hi)mmio 810和存储器支持(mb)的mmio 812映射pf 232中的寄存器的地址。adi mmio 808提供用于vdev 404的快速路径资源。vm资源管理器416向vdcm 402提供服务,将pasid分配给vdev,并且触发vdev构成。iommu驱动813利用用于被分配给vdev 404的pasid的可扩展iov扩展414对用于iommu的转换表格进行配置。
121.物理功能(pf)232包括pf基址寄存器(bar)320,其包括一个或多个adi mmio寄存器322,在图8中表示为adi mmio 828、adi mmio 830
……
adi mmio 832、adi mmio 834。基址寄存器(bar)用于指定设备(例如pf)想要向主存储器130中映射多少存储器,并且在设备枚举之后,bar持有(基)地址,在其处所映射的存储器块开始。adi mmio寄存器828、830
……
832、834由vdev使用以直接地与硬件队列436、438
……
440、442通信。pf 232包括pf config 324,用来定义用于pf的pci配置参数,诸如设备供应商id、bar、错误报告等。pf 232存储用于adi 814的pasid,并且pf msi-x 326提供如由pci express基础规范定义的msi-x能力。用于adi 328的ims使得pf 232能够以pf特定的优化方式存储用于adi的中断消息,而没有pci express定义的msi-x能力的可扩展性约束。在一个实施例中,中断消息用于指示数据(例如,分组)在队列436、438
……
440、442中可用以由vdev 1 816处理。
122.vdev的生命周期被分成四个阶段:1)vm和vdev定义;2)vm实例化和vdev构成;3)运行时间vdev资源修改;以及4)vm停工和vdev分解。
123.在第一阶段处,用户(诸如系统管理员、远程运行脚本或者其它控制机构)选择用于要实例化的vm(例如,访客vm 422和其它访客vm)的资源。vm资源包括虚拟处理器、存储器和物理设备,诸如网络设备、存储设备、图形处理单元(gpu)、现场可编程门阵列(fpga)、加速器设备等。取决于vdev类型(诸如网络、存储、gpu、fpga、加速器等),用户还选择用于要实例化的每一个vdev的资源。例如,对于网络vdev,用户可以选择初始资源,诸如数个接收(rx)与传输(tx)队列和数个ims条目,以及vdev可以在vdev实例的寿命期间请求的每一个类型的资源的最大数目。在一个示例中,利用两个adi和用于adi 328的ims中的n个条目来
实例化网络vdev,其中n是自然数,但是由于处理工作负荷,可以在运行时间期间请求和添加附加的adi和ims条目。在实施例中,用于vdev的adi的数目与用于adi 328的ims中的中断条目的数目相同。也就是说,在adi与用于adi 328的ims中的中断条目之间存在一一对应。
124.在第二阶段处,对vm进行实例化(例如,访客vm 422)并且通过vdcm 402连同具有s-iov能力的pf主机驱动412构成相关联的一个或多个vdev。图9图示了虚拟设备构成的示例流程图900。在通过vdcm 402实例化vdev(诸如vdev 1 816)之后,在块902处,vdcm 402创建vdev 1 816中的虚拟pci配置(config)空间(vcs)804。vdcm 402然后将值填充到以下三个块中的vcs 804字段中。在块904处,vdcm 402将pf 232的设备供应商id分配给vdev 1 816中的vcs 804。这使pf 232与vdev 816相关联。在块906处,vdcm 402通过设置表示vdev的主存储器130中的位置来准备vdev 1 816的vcs 804中的msi-x bar。在块908处,vdcm 402通过设置主存储器中的位置来准备vdev 1 816的vcs 804中的一个或多个mmio bar。在实施例中,为vdev供应mmio存储器空间达vdev可以在vdev的寿命中具有的资源的最大量,但是初始地,给vdev配置较少的资源。在块910处,vdcm 402从pf主机驱动412得到一个或多个adi以及相关联的寄存器页面,并且将adi和相关联的寄存器页面映射到vdev mmio空间。在块912处,vdcm 402指定用于软件模拟的hi mmio寄存器810和存储器支持的mb mmio寄存器812的mmio空间。在块914处,vdcm 402将实例化的vdev(例如,vdev 1 816)分配给访客vm 422。
125.图10图示了使用物理功能adi和中断消息服务(ims)资源的虚拟设备构成1000的示例图。例如,网络vdev被实例化并且由adi构成,其中每一个adi表示一组接收/传输队列,并且pf ims资源用于与vdev的msi-x配置进行通信。另外,vdev mmio由vdcm配置用于所模拟的hi mmio寄存器810(例如,慢速路径接口),其中不要求高性能处理。在实施例中,所模拟的hi mmio寄存器810的行为由vdcm 402和pf主机驱动412实现。访客vm 422访问用于vdev config空间(vcs 804)中的mmio 1002的bar。用于mmio 1002的bar指向vdev存储器页面1006中的位置。vdev存储器页面1006驻留在主机计算平台101上的主存储器130中。将vdev存储器页面1006中的位置映射到被表示为pf的物理功能地址空间中的位置以及pf 232上的adi快速路径寄存器页面1012。软件模拟的hi mmio或者存储器支持的寄存器页面1010还指向vdev存储器页面1006。访客vm 422还访问用于vcs 804中的msi-x 1004的bar。用于msi-x 1004的bar指向作为msi-x表格806的实例的vdev msi-x表格1008中的位置。vdev msi-x表格1008中的位置指向pf和ims msi-x向量1004中的位置。在实施例中,pf和ims msi-x向量1004与pf msi-x 326相同。
126.在实施例中,ims位于pf mmio空间中,所述pf mmio空间可以包括pf和vdev二者的msi-z表格条目。ims的一个益处在于,与msi-x表格不同,ims不被约束于2k的最大大小。由于ims是在pf mmio空间中,因此ims可以支持许多类似msi-x的条目(例如,多于2k)。
127.在第三阶段处,可用于vdev的资源可以在运行时间进行修改。图11图示了虚拟设备资源修改的示例流程图1100。在一些情况下,用户可以选择用于vdev的资源(例如,adi、ims条目)的最大量,但是vdev可以初始被仅利用最小量的资源来构成。在实施例中,用于最大和最小的值是与实现相关的。在运行时间期间,取决于处理工作负荷要求,可以触发事件来请求到现有vdev的资源的动态添加或修改。在实施例中,通过系统管理员的动作触发该事件。在另一个实施例中,以编程方式(例如,通过控制器组件)触发该事件。
128.在块1102处,vdcm 402接收增加或修改vdev资源的外部请求。外部在该情况下是指在vdcm 402、访客vm 422和vdev 1 816外部的实体。在块1104处,响应于接收到请求,vdcm 402向pf 主机驱动412请求附加的adi和ims中断条目。在块1106处,vdcm 402使得能够实现新的mmio bar映射。在块1108处,vdcm 402向访客vm 422中的访客驱动424通知最近可获得的资源。
129.在第四阶段处,可以关闭访客vm,并且分解访客vm的vdev。图12图示了虚拟设备分解的示例流程图1200。在访客vm被关闭时针对每一个vdev执行该处理。在块1202处,vdcm 402开始如在pci express规范中描述的功能级别复位(flr)用于vdev(例如,vdev 1 816)。在块1204处,vdcm 402从访客vm的存储器空间对vdev的mmio bar取消映射。在块1206处,vdcm 402将adi和ims条目返回到pf主机驱动412。pf主机驱动412使这些adi可用于由其它vdev再使用。在网络vdev的情况下,pf主机驱动禁用rx/tx队列436、438
……
440、442,并且使这些队列可用于由其它vdev使用。pf主机驱动412还使对应的ims条目可用于由其它vdev使用。pf主机驱动412还释放为vdev供应的内部资源。
130.图13图示了存储介质1300的示例。存储介质1300可以包括制品。在一些示例中,存储介质1300可以包括任何非暂时性计算机可读介质或机器可读介质,诸如光学、磁性或半导体贮存器。存储介质1300可以存储各种类型的计算机可执行指令,诸如实现s-iov架构组件的逻辑流的指令1302,包括在图9、11和12中描述的那些。计算机可读或机器可读存储介质的示例可以包括能够存储电子数据的任何有形介质,包括易失性存储器或非易失性存储器、可移除或不可移除的存储器、可擦除或不可擦除的存储器、可写入或可再写入的存储器等。计算机可执行指令的示例可以包括任何适当类型的代码,诸如源代码、经编译的代码、经解释的代码、可执行代码、静态代码、动态代码、面向对象的代码、视觉代码等。示例在该上下文中不受限制。
131.图14图示了示例计算平台1400。在一些示例中,如图14中所示,计算平台1400可以包括处理组件1402、其它平台组件1404和/或通信接口1406。
132.根据一些示例,处理组件1402可以执行用于存储在存储介质1300上的指令的处理操作或逻辑。处理组件1402可以包括各种硬件元件、软件元件或二者的组合。硬件元件的示例可以包括设备、逻辑器件、组件、处理器、微处理器、电路、处理器电路、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、专用集成电路(asic)、可编程逻辑器件(pld)、数字信号处理器(dsp)、现场可编程门阵列(fpga)、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等。软件元件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、设备驱动、系统程序、软件开发程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、功能、方法、过程、软件接口、应用程序接口(api)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。确定是否使用硬件元件和/或软件元件来实现示例可以依照任何数目的因素而变化,诸如期望的计算速率、功率电平、耐热性、处理循环预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其它设计或性能约束,如针对给定示例所期望的那样。
133.在一些示例中,其它平台组件1404可以包括常用的计算元件,诸如一个或多个处理器、多核处理器、协处理器、存储器单元、芯片组、控制器、外围设备、接口、振荡器、计时设备、视频卡、音频卡、多媒体输入/输出(i/o)组件(例如,数字显示器)、电源等。存储器单元
的示例可以包括但不限于以一个或多个较高速度的存储器单元的形式的各种类型的计算机可读和机器可读存储介质,诸如只读存储器(rom)、随机存取存储器(ram)、动态ram(dram)、双倍数据速率dram(ddram)、同步dram(sdram)、静态ram(sram)、可编程rom(prom)、可擦除可编程rom(eprom)、电气可擦除可编程rom(eeprom)、非易失性存储器类型,诸如可以是字节或块可寻址的3d交叉点存储器。非易失性类型的存储器还可以包括其它类型的字节或块可寻址的非易失性存储器,诸如但不限于多阈值水平nand闪速存储器、nor闪速存储器、单电平或多电平pcm、电阻存储器、纳米线存储器、fetram、结合忆阻器技术的mram、stt-mram或者以上中的任何存储器的组合。其它类型的计算机可读和机器可读存储介质还可以包括磁性或光学卡、诸如独立盘冗余阵列(raid)驱动器之类的设备的阵列、固态存储器设备(例如,usb存储器)、固态驱动器(ssd)以及适于存储信息的任何其它类型的存储介质。
134.在一些示例中,通信接口1406可以包括支持通信接口的逻辑和/或特征。对于这些示例,通信接口1406可以包括根据各种通信协议或标准进行操作以通过直接或网络通信链路或信道进行通信的一个或多个通信接口。直接通信可以经由在一个或多个工业标准(包括后代和变体)中描述的通信协议或标准的使用而发生,诸如与pcie规范相关联的那些通信协议或标准。网络通信可以经由通信协议或标准的使用而发生,诸如在由ieee公布的一个或多个以太网标准中描述的那些通信协议或标准。例如,一个这样的以太网标准可以包括ieee 802.3。网络通信还可以根据一个或多个openflow规范而发生,诸如openflow交换机规范。
135.计算平台1400的组件和特征,包括由存储在存储介质1300上的指令表示的逻辑,可以被使用分立的电路系统、asic、逻辑门和/或单芯片架构的任何组合来实现。另外,在合适地适当的情况下,可以使用微控制器、可编程逻辑阵列和/或微处理器或者前述的任何组合来实现计算平台1400的特征。要注意,硬件、固件和/或软件元件可以被共同地或者单独地在本文中称为“逻辑”或“电路”。
136.应当领会到,在图14的块图中示出的示例性计算平台1400可以表示许多潜在实现的一个功能上描述性的示例。相应地,在随附各图中描绘的功能块的分割、省略或包含并不推断出用于实现这些功能的硬件组件、电路、软件和/或元件将在实施例中必然被分割、省略或包含。
137.本发明还涉及如下示例:示例1. 一种方法,包括:将虚拟机实例化;将虚拟设备实例化以向共享物理设备的所分配的资源传输数据并且从所述共享物理设备的所分配的资源接收数据;以及将所述虚拟设备分配给所述虚拟机,所述虚拟机要经由所述虚拟设备向所述物理设备传输数据并且从所述物理设备接收数据。
138.示例2. 根据示例1所述的方法,其中将所述虚拟设备分配给所述虚拟机包括将所述虚拟设备作为虚拟快速外部组件互连(pci)枚举设备暴露给所述虚拟机。
139.示例3. 根据示例1所述的方法,其中所分配的资源包括分配给所述虚拟设备以用于数据传送的共享物理设备资源。
140.示例4. 根据示例3所述的方法,其中所述共享物理设备包括网络控制器设备,所
述共享物理设备资源包括用来存储所述数据的接收与传输队列,并且所述数据包括分组。
141.示例5. 根据示例1所述的方法,其中所述共享物理设备包括存储控制器设备。
142.示例6. 根据示例1所述的方法,其中将虚拟设备实例化包括:将所述共享物理设备的标识符分配给所述虚拟设备;使基址寄存器为用于所述虚拟设备的消息信令中断作准备;准备一个或多个存储器映射输入/输出(mmio)基址寄存器;获得一个或多个所分配的资源和相关联的寄存器页面,并且针对到所述虚拟设备的快速路径接口将所分配的资源和相关联的寄存器页面映射到mmio存储器空间;以及针对到所述虚拟设备的慢速路径接口,指定用于所模拟的和存储器支持的寄存器的mmio存储器空间。
143.示例7. 根据示例6所述的方法,包括通过开始所述虚拟设备的功能级别复位并且针对所述虚拟设备从mmio存储器空间对所分配的资源和相关联的寄存器页面取消映射来分解所述虚拟设备。
144.示例8. 根据示例1所述的方法,包括至少部分地基于在运行时间期间接收的请求来向所述虚拟设备分配附加资源。
145.示例9. 至少一种有形机器可读介质,包括多个指令,所述多个指令响应于被处理器执行而使所述处理器:将虚拟机实例化;将虚拟设备实例化以向共享物理设备的所分配的资源传输数据并且从所述共享物理设备的所分配的资源接收数据;以及将所述虚拟设备分配给所述虚拟机,所述虚拟机要经由所述虚拟设备向所述物理设备传输数据并且从所述物理设备接收数据。
146.示例10. 根据示例9所述的至少一种有形机器可读介质,其中将所述虚拟设备分配给所述虚拟机的指令包括将所述虚拟设备作为虚拟快速外部组件互连(pci)枚举设备暴露给所述虚拟机的指令。
147.示例11. 根据示例9所述的至少一种有形机器可读介质,其中所分配的资源包括分配给所述虚拟设备以用于数据传送的共享物理设备资源。
148.示例12. 根据示例9所述的至少一种有形机器可读介质,其中将虚拟设备实例化的指令包括用于以下的指令:将所述共享物理设备的标识符分配给所述虚拟设备;使基址寄存器为用于所述虚拟设备的消息信令中断作准备;准备一个或多个存储器映射输入/输出(mmio)基址寄存器;获得一个或多个所分配的资源和相关联的寄存器页面,并且针对到所述虚拟设备的快速路径接口将所分配的资源和相关联的寄存器页面映射到mmio存储器空间;以及针对到所述虚拟设备的慢速路径接口,指定用于所模拟的和存储器支持的寄存器的mmio存储器空间。
149.示例13. 根据示例9所述的至少一种有形机器可读介质,包括通过开始所述虚拟设备的功能级别复位并且针对所述虚拟设备从mmio存储器空间对所分配的资源和相关联的寄存器页面取消映射来分解所述虚拟设备的指令。
150.示例14. 根据示例9所述的至少一种有形机器可读介质,包括至少部分地基于在运行时间期间接收的请求来向所述虚拟设备分配附加资源的指令。
151.示例15. 一种装置,包括:虚拟机;以及虚拟设备构成模块,其耦合到所述虚拟机,以将虚拟设备实例化来向共享物理设备的所分配的资源传输数据并且从所述共享物理设备的所分配的资源接收数据;并且以将所述虚拟设备分配给所述虚拟机,所述虚拟机要经由所述虚拟设备向所述物理设备传输数据并且从所述物理设备接收数据。
152.示例16. 根据示例15所述的装置,包括所述虚拟设备构成模块要通过将所述虚拟设备作为虚拟快速外部组件互连(pci)枚举设备暴露给所述虚拟机而将所述虚拟设备分配给所述虚拟机。
153.示例17. 根据示例15所述的装置,其中所分配的资源包括分配给所述虚拟设备以用于数据传送的共享物理设备资源。
154.示例18. 根据示例17所述的装置,其中所述共享物理设备包括网络控制器设备,所述共享物理设备资源包括用来存储所述数据的接收与传输队列,并且所述数据包括分组。
155.示例19. 根据示例15所述的装置,其中虚拟设备构成模块用于将所述共享物理设备的标识符分配给所述虚拟设备;使基址寄存器为用于所述虚拟设备的消息信令中断作准备;准备一个或多个存储器映射输入/输出(mmio)基址寄存器;获得一个或多个所分配的资源和相关联的寄存器页面,并且针对到所述虚拟设备的快速路径接口将所分配的资源和相关联的寄存器页面映射到mmio存储器空间;并且针对到所述虚拟设备的慢速路径接口,指定用于所模拟的和存储器支持的寄存器的mmio存储器空间。
156.示例20. 根据示例19所述的装置,包括所述虚拟设备构成模块要通过开始所述虚拟设备的功能级别复位并且针对所述虚拟设备从mmio存储器空间对所分配的资源和相关联的寄存器页面取消映射来分解所述虚拟设备。
157.示例21. 根据示例15所述的装置,包括所述虚拟设备构成模块要至少部分地基于在运行时间期间接收的请求来向所述虚拟设备分配附加资源。
158.可以使用硬件元件、软件元件或二者的组合来实现各种示例。在一些示例中,硬件元件可以包括设备、组件、处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、asic、可编程逻辑器件(pld)、数字信号处理器(dsp)、fpga、存储器单元、逻辑门、寄存器、半导体设备、芯片、微芯片、芯片组等。在一些示例中,软件元件可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、功能、方法、过程、软件接口、应用程序接口(api)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。确定是否使用硬件元件和/或软件元件来实现示例可以依照任何数目的因素而变化,诸如期望的计算速率、功率电平、耐热性、处理循环预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其它设计或性能约束,如针对给定实现所期望的那样。
159.一些示例可以包括制品或至少一个计算机可读介质。计算机可读介质可以包括用来存储逻辑的非暂时性存储介质。在一些示例中,非暂时性存储介质可以包括能够存储电子数据的一个或多个类型的计算机可读存储介质,其包括易失性存储器或非易失性存储器、可移除或不可移除的存储器、可擦除或不可擦除的存储器、可写入或可再写入的存储器等。在一些示例中,逻辑可以包括各种软件元件,诸如软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、功能、方法、过程、软件接口、api、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。
160.一些示例可以被使用表述“在一个示例中”或“示例”连同其派生词进行描述。这些术语意味着结合该示例描述的特定特征、结构或特性被包括在至少一个示例中。短语“在一个示例中”在说明书中的各种地方的出现不一定都是指相同的示例。
161.本文中包括了代表用于执行所公开的架构的新颖方面的示例方法论的逻辑流或方案。出于解释的简单的目的,虽然在本文中示出的一个或多个方法论被示出和描述为一系列动作,但是本领域技术人员将理解和领会到,方法论不受动作的次序限制。依照其,一些动作可以以与本文中示出和描述的次序不同的次序发生和/或与其它动作同时发生。例如,本领域技术人员将理解和领会到,方法论可以可替换地被表示为(诸如在状态图中的)一系列交错的状态或事件。此外,并非方法论中说明的所有动作都可以是新颖实现所要求的。
162.逻辑流或方案可以被在软件、固件和/或硬件中实现。在软件和固件实施例中,可以通过存储在至少一个非暂时性计算机可读介质或机器可读介质(诸如光学、磁性或半导体贮存器)上的计算机可执行指令来实现逻辑流或方案。实施例在该上下文中不受限制。
163.使用表述“耦合”和“连接”连同其派生词来描述一些示例。这些术语并不一定意图作为彼此的同义词。例如,使用术语“连接”和/或“耦合”的描述可以指示两个或更多元件与彼此直接物理或电气接触。然而,术语“耦合”还可以意味着两个或更多元件没有与彼此直接接触,但是仍然还与彼此相互协作或交互。
164.要强调的是,提供本公开的摘要以遵守37 c.f.r. 章节1.72(b),要求将允许读者快速地弄清技术公开内容的本质的摘要。在理解的情况下主张,它将不用于解释或限制权利要求书的范围或含义。此外,在前述具体实施方式中,可以看出的是,将各种特征一起分组在单个示例中以用于精简本公开的目的。公开的该方法不应解释为反映以下意图:所要求保护的示例要求比在每一个权利要求中明确地叙述的特征更多的特征。更准确地说,如以下权利要求书所反映的,发明主体在于比单个所公开的示例的所有特征少。因而,以下权利要求书由此结合到具体实施方式中,其中每一个权利要求独立作为单独的示例。在所附的权利要求书中,术语“包含”和“在其中”分别被用作相应术语“包括”和“其中”的简明英语等同词。此外,术语“第一”、“第二”、“第三”等仅用作标签,并且不意图对其对象强加数值要求。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1