CN106537340B - 虚拟化信息操纵系统的输入/输出加速设备和方法 - Google Patents

虚拟化信息操纵系统的输入/输出加速设备和方法 Download PDF

Info

Publication number
CN106537340B
CN106537340B CN201480080653.3A CN201480080653A CN106537340B CN 106537340 B CN106537340 B CN 106537340B CN 201480080653 A CN201480080653 A CN 201480080653A CN 106537340 B CN106537340 B CN 106537340B
Authority
CN
China
Prior art keywords
pci
endpoint
hypervisor
data transfer
accelerator device
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
Application number
CN201480080653.3A
Other languages
English (en)
Other versions
CN106537340A (zh
Inventor
G·舒拉
R·W·霍尔穆特
S·T·伊耶
D·M·金
N·麦
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.)
Dell Products LP
Original Assignee
Dell Products LP
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 Dell Products LP filed Critical Dell Products LP
Publication of CN106537340A publication Critical patent/CN106537340A/zh
Application granted granted Critical
Publication of CN106537340B publication Critical patent/CN106537340B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/32Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/303In peripheral interface, e.g. I/O adapter or channel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

使用在虚拟化信息操作系统上的I/O加速器设备用于I/O加速的方法和系统包括预先引导表现为独立设备的第一和第二设备端点的配置。在装入具有对第二设备端点的独有访问的存储虚拟器具之后,管理程序可检测并装入第一设备端点的驱动器。存储虚拟器具可接着使用I/O加速器设备来发起数据传输I/O操作。数据传输操作可以是对存储设备的读或写操作,存储虚拟器具提供对该存储设备的访问。I/O加速器设备可使用直接存储器存取(DMA)。

Description

虚拟化信息操纵系统的输入/输出加速设备和方法
背景
技术领域
本公开通常涉及虚拟化信息操纵系统,且更具体地涉及用于在虚拟化信息操纵系统中的输入/输出(I/O)加速的设备和方法。。
背景技术
当信息的值和使用持续增加时,个人和企业寻找额外的方式来处理并存储信息。用户可采用的一个选择是信息操纵系统。信息操纵系统通常为了商业、个人或其它目的而处理、编译、存储和/或传递信息或数据,从而允许用户利用信息的值。因为技术和信息操纵需要和要求在不同的用户或应用之间改变,信息操纵系统也可关于什么信息被操纵、信息如何被操纵、多少信息被处理、存储或传递以及信息可多么快和有效地被处理、存储或传递而改变。在信息操纵系统中的变化允许信息操纵系统是通用的或配置成用于特定的用户或特定的使用,例如财务交易处理、机位预订、企业数据存储或全球通信。此外,信息操纵系统可包括可配置成处理、存储和传递信息的各种硬件和软件部件,并可包括一个或多个计算机系统、数据存储系统和联网系统。
信息操纵系统越来越多被部署在允许多个操作系统在单个信息操纵系统上运行的体系结构中。被标记为“虚拟化”的这种类型的信息操纵系统体系结构将软件从硬件断开,并将物理硬件的逻辑视图呈递给软件。在虚拟化信息操纵系统中,单个物理层服务器可例示多个独立的虚拟服务器。服务器虚拟化主要由提供在服务器硬件和也被称为客户操作系统(客户OS)的多个操作系统之间的软件层的一件硬件(常常被称为“管理程序(hypervisor)”)启用。管理程序软件提供将逻辑硬件接口呈递到客户操作系统的容器(container)。单独的客户OS连同各种应用或在客户OS之下执行的其它软件一起可能不知道执行正出现在虚拟化服务器环境中(与专用物理服务器相反)。在管理程序之下执行的客户OS的这样的实例可被称为“虚拟机”或“VM”。
由于很多原因,虚拟化体系结构可能时常被使用,例如但不限于:(1)增加的硬件资源利用;(2)在整个公共基于标准的基础设施中的有成本效益的可扩性;(3)在多个服务器当中的工作负荷便携性;(4)通过认证公共虚拟接口而非多个物理硬件来精简应用;以及(5)复杂配置封装到容易被复制和预备的文件内,以及其它原因。如上面提到的,信息操纵系统可包括例如作为客户操作系统在相应的虚拟机中执行的一个或多个操作系统。
操作系统提供很多功能,例如控制对硬件资源的访问以及控制应用软件的执行。操作系统还提供资源和服务以支持应用软件。这些资源和服务可包括数据存储、对至少一个文件系统的支持、集中式配置数据库(例如在Microsoft Windows操作系统中找到的注册表)、目录服务、图形用户界面、联网堆栈、设备驱动器和设备管理软件。在一些实例中,服务可由在信息操纵系统例如数据库服务器上运行的其它应用软件提供。
信息操纵系统可包括连接到各种设备例如外围部件互联(“PCI”)设备和PCIexpress(“PCI-E”)设备的多个处理器。操作系统可包括配置成便于设备的使用的一个或多个驱动器。如前文提到的,信息操纵系统还可运行一个或多个虚拟机,其中每个虚拟机可例示客户操作系统。虚拟机可由虚拟机管理器例如管理程序管理。可为了设备通过而配置某些虚拟机,使得虚拟机可直接利用物理设备,而不需要操作系统驱动器的中间使用。
常规虚拟化信息操纵系统可受益于虚拟机的增加的性能。提高的性能也可受益于虚拟化系统,其中多个虚拟机同时操作。在虚拟机中的客户OS之下执行的应用也可受益于来自某些计算资源例如存储资源的较高性能。
发明内容
在一个方面中,所公开的方法是用于使用加速器设备使在管理程序上的数据传输操作加速。在引导处理器子系统上的管理程序之前,该方法可包括配置与加速器设备相关的第一快捷外设互联(PCI-E)端点和第二PCI-E端点。加速器设备可以是处理器子系统可访问的物理PCI-E设备。该方法可包括使用处理器子系统来引导管理程序以及装入存储虚拟器具(SVA)作为在管理程序上的虚拟机。管理程序可分配第二PCI-E端点用于由SVA独有地访问。该方法可包括经由第二PCI-E端点通过SVA激活第一PCI-E端点。响应于激活第一PCI-E端点,该方法可包括为第一PCI-E端点装入管理程序设备驱动器。第一PCI-E端点可对于管理程序表现为经由管理程序设备驱动器可访问的逻辑硬件适配器。该方法还可包括通过SVA激活在第一PCI-E端点和第二PCI-E端点之间的数据传输操作。
在某些实施方式中,该方法包括经由第二PCI-E端点由SVA执行的额外操作。当数据传输操作在进展中时,该方法可包括终止数据传输操作以及去激活第一PCI-E端点。该方法还可包括在加速器设备上对第一PCI-E端点的第一个性配置文件和第二PCI-E端点的第二个性配置文件编程。个性配置文件可包括PCI-E端点的配置信息。该方法还可包括重新启动第二PCI-E端点。响应于重新启动第二PCI-E端点,该方法可包括重新启动第一PCI-E端点。
其它所公开的方面包括制品,其包括存储由处理器子系统可执行的指令的非临时计算机可读介质和包括处理器的信息操纵系统,处理器访问存储由处理器子系统可执行的指令的存储器子系统。
附图说明
为了本发明及其特征和优点的更彻底理解,现在参考结合附图来理解的附图,其中:
图1是如本文所述的使用I/O加速器设备的信息操纵系统的实施方式的选定元件的方框图;
图2是如本文所述的使用I/O加速器设备的信息操纵系统的实施方式的选定元件的方框图;
图3是如本文所述的使用I/O加速器设备的存储空间的实施方式的选定元件的方框图;
图4是描绘如本文所述的用于使用I/O加速器设备来进行I/O加速的方法的实施方式的选定元件的流程图;以及
图5是描绘如本文所述的用于使用I/O加速器设备来进行I/O加速的方法的实施方式的选定元件的流程图。
具体实施方式
在下面的描述中,作为例子阐述了细节以便于所公开的主题的讨论。然而,对于本领域中的普通技术人员应明显,所公开的实施方式是示例性的,而不是所有可能的实施方式的无遗漏集合。
在整个本公开中,参考数字的用连字符连接的形式指元件的特定实例,而参考数字的无连字符连接的形式一般或共同地指元件。因此例如,设备“12-1”指设备类别的实例,其共同被称为设备“12”,且其中任一个可一般被称为设备“12”。
如前面提到的,当前的虚拟信息操纵系统可要求来自计算资源例如由在客户操作系统之下执行的应用使用的存储资源的较高性能。很多虚拟化服务器平台可能期望向以在同一服务器上执行的软件的形式的这样的应用提供存储资源,应用在该服务器上执行,这可通过带来最接近应用的数据来提供某些优点。这样的软件定义的存储可进一步实现新技术,例如但不限于:(1)使用固态设备(SSD)来缓存存储操作和数据的闪存高速缓存器和缓存网络;(2)虚拟存储区域网络(SAN);以及(3)根据I/O负载和访问模式通过将数据存储在本地存储资源、SAN存储器和网络存储器当中而进行的数据分层。服务器虚拟化通过启用多个工作负荷以在单个物理机上运行而是软件定义的存储器的关键启用程序。这样的工作负荷也通过供应最接近访问存储在存储资源上的数据的应用的存储资源来得益。
提供这样的功能的存储软件可与多个较低级别设备驱动器交互作用。例如:在存储设备驱动器的顶部上的一层可使用各种类型的互连结构(即iSCSI、光纤通道、以太网上光纤通道等)提供对存在于服务器上的硬盘驱动器、闪存SSD驱动器、非易失性存储器设备和/或SAN存储器的访问。在另一例子中,在网络驱动器的顶部上的一层可提供对在其它服务器实例上运行的存储软件的访问(即访问云端)。这样的基于驱动器的实现从支持多个管理程序和给予足够的性能的观点看是有挑战性的。今天在使用中的某些管理程序可以不支持驱动器的第三方发展,其可排除基于在管理程序内核中的优化筛选驱动器的体系结构。其它管理程序可具有不同的I/O体系结构和设备驱动器模型,其可对发展各种管理程序平台的统一存储软件呈现挑战。
另一解决方案是将存储软件实现为具有对物理存储设备和资源的通过访问的虚拟机。然而,由于低数据吞吐量和在管理程序驱动器堆栈中的高时延,当与在邻近的虚拟机上执行的应用通信时,这样的解决方案可能面临严重的性能问题。因此,即使基础存储资源可给予实质上提高的性能,例如闪存高速缓存器和缓存网络,使用一般管理程序驱动器堆栈的客户OS中的应用可能不会体验性能优点。
如将更详细描述的,发明人发明了本文公开的新颖的方法和系统,其用于通过使用由提供对本地和远程存储资源的被管理的访问的存储虚拟器具对I/O加速器设备编程来提高对存储资源的访问。I/O加速器设备可对来回到虚拟信息操纵系统中的客户OS的存储操作利用直接存储器存取(DMA)。直接存储器存取涉及来/回系统存储器的数据的传输而没有处理器子系统明显的参与,从而提高数据吞吐量并减小处理器子系统的工作负荷。如更详细描述的,本公开目的在于用于使用I/O加速器设备来使I/O加速的方法和系统。在一些实施方式中,本文公开的I/O加速用于由在虚拟机中的客户OS之下执行的应用来访问存储资源。在其它实施方式中,本文公开的I/O加速可应用于情形,其中两个虚拟机、两个软件模块或在操作系统中运行的不同的驱动器需要向彼此发送消息或数据,但被虚拟化OS性能限制约束。
为了本公开的目的,信息操纵系统可包括可操作来为了商业、科学、控制、娱乐或其它目的而计算、分类、处理、传输、接收、取回、创造、切换、存储、显示、证明、检测、记录、再现、操纵或利用各种形式的信息、情报或数据的工具或工具的集合。例如,信息操纵系统可以是个人计算机、PDA、消费电子设备、网络存储设备或另一适当的设备,并可在尺寸、形状、性能、功能和价格上改变。信息操纵系统可包括存储器、一个或多个处理资源例如中央处理单元(CPU)或硬件或软件控制逻辑。额外的部件或信息操纵系统可包括一个或多个存储设备、用于与外部设备通信的一个或多个通信端口以及各种输入和输出(I/O)设备,例如键盘、鼠标和视频显示器。信息操纵系统还可包括可操作来在各种硬件部件之间传输信息的一个或多个总线。
此外,信息操纵系统可包括用于控制硬盘驱动器、网络电路、存储器设备、I/O设备和其它外围设备和/或与硬盘驱动器、网络电路、存储器设备、I/O设备和其它外围设备通信的固件。例如,管理程序和/或其它部件可包括固件。如在本公开中使用的,固件包括用于执行预定任务的嵌在信息操纵系统部件中的软件。固件通常存储在非易失性存储器或当功率失去时不失去所存储的数据的存储器中。在某些实施方式中,与信息操纵系统部件相关的固件存储在一个或多个信息操纵系统部件可访问的非易失性存储器中。在相同或可选的实施方式中,与信息操纵系统部件相关的固件存储在专用于那个部件并包括那个部件的部分的非易失性存储器中。
为了本公开的目的,计算机可读介质可包括可将数据和/或指令保留一段时间的工具或工具的集合。计算机可读介质可没有限制地包括存储介质例如直接存取存储设备(例如硬盘驱动器或软盘)、连续存取存储设备(例如磁带磁盘驱动器)、光盘、CD-ROM、DVD、随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)和/或闪存(SSD);以及通信介质例如电线、光纤、微波、无线电波和其它电磁和/或光学载体;和/或前述项的任何组合。
通过图1、2、3、4和5最好地理解特定的实施方式,其中相似的数字用于指示相似和相应的部件。
现在参考附图,图1示出描绘根据本公开的用于使用虚拟化信息操纵系统的输入/输出(I/O)加速设备的系统100-1的实施方式的选定元件的方框图。如在图1中描绘的,系统100-1代表包括物理硬件102、可执行指令180(包括管理程序104、一个或多个虚拟机105和存储虚拟器具110)的信息操纵系统。也与系统100-1一起示出的是外部或远程元件,即网络155和网络存储资源170。
如图1所示,物理硬件102的部件可包括但不限于可包括一个或多个处理器的处理器子系统120以及将各种系统部件通信地耦合到处理器子系统120——包括例如存储器子系统130、I/O子系统140、本地存储资源150和网络接口160——的系统总线121。系统总线121可代表各种适当类型的总线结构,例如在选定实施方式中使用各种总线体系结构的存储器总线、外围总线或局部总线。例如,这样的体系结构可包括但不限于微通道体系结构(MCA)总线、工业标准体系结构(ISA)总线、增强型ISA(EISA)总线、外设互联(PCI)总线、快捷外设互联(PCI-Express)总线、HyperTransport(HT)总线和视频电子标准协会(VESA)局部总线。
在图1中,网络接口160是可操作来用作在信息操纵系统100-1和网络155之间的接口的适当的系统、装置或设备。网络接口160使信息操纵系统100-1能够通过网络155使用适当的传输协议或标准——包括但不限于下面关于网络155的讨论列举的传输协议或标准——来通信。在一些实施方式中,网络接口160可经由网络155通信地耦合到网络存储资源170。网络155可被实现为存储区域网(SAN)、个人区域网(PAN)、局域网(LAN)、城域网(MAN)、广域网(WAN)、无线局域网(WLAN)、虚拟专用网(VPN)、内联网、互联网或便于信号、数据或消息(通常被称为数据)的传递的另一适当的体系结构或系统,或可以是存储区域网(SAN)、个人区域网(PAN)、局域网(LAN)、城域网(MAN)、广域网(WAN)、无线局域网(WLAN)、虚拟专用网(VPN)、内联网、互联网或便于信号、数据或消息(通常被称为数据)的传递的另一适当的体系结构或系统的一部分。网络155可使用期望存储或通信协议来传输数据,这些协议包括但不限于光纤通道、帧中继、异步传输模式(ATM)、互联网协议(IP)、其它基于分组的协议、小计算机接口(SCSI)、互联网SCSI(iSCSI)、串行附加SCSI(SAS)或使用SCSI协议来操作的另一传输工具、高级技术附件(ATA)、串行ATA(SATA)、高级技术附件分组接口(ATAPI)、串行存储体系结构(SSA)、集成驱动电子设备(IDE)和/或其任何组合。网络155及其各种部件可使用硬件、软件或其任何组合来实现。
如在图1中描绘的,处理器子系统120包括可操作来解释和/或执行程序指令和/或过程数据并可包括微处理器、微控制器、数字信号处理器(DSP)、专用集成电路(ASIC)或配置成解释和/或执行程序指令和/或过程数据的另一数字或模拟电路的系统、设备或装置。在一些实施方式中,处理器子系统120可解释并执行在本地(例如在存储器子系统130或物理硬件102的另一部件中)存储的程序指令或过程数据。在同一或可选的实施方式中,处理器子系统120可解释并执行远程地(例如在网络存储资源170中)存储的程序指令或过程数据。特别是,处理器子系统120可代表包括至少第一处理器和第二处理器(也见图2)的多处理器配置。
也在图1中,存储器子系统130包括可操作来在一段时间期间保留并取回程序指令和数据的系统、设备或装置(例如计算机可读介质)。存储器子系统130可包括随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM)、PCMCIA卡、闪存、磁性存储器、光学磁性存储器或在到相关信息操纵系统例如系统100-1的功率被切断之后保留数据的易失性或非易失性存储器的适当选择或阵列。本地存储资源150包括计算机可读介质(例如硬盘驱动器、软盘驱动器、CD-ROM和/或其它类型的旋转存储介质、闪存、EEPROM和/或另一类型的固态存储介质),并通常可操作来存储指令和数据。同样,网络存储资源170包括计算机可读介质(例如硬盘驱动器、软盘驱动器、CD-ROM或其它类型的旋转存储介质、闪存、EEPROM或另一类型的固态存储介质),并可通常可操作来存储指令和数据。在系统100-1中,I/O子系统140包括通常可操作来从系统100-1接收数据并将数据传输到系统100-1内的系统、设备或装置。I/O子系统140可代表例如各种通信接口、图形接口、视频接口、用户输入接口和外围接口中的任一个或多个。特别是,I/O子系统140可包括用于使在存储虚拟器具110和客户OS 108之间的数据传输加速的I/O加速器设备(也见图2),如本文所述的。
在图1中,管理程序104包括通常可操作来允许多个操作系统同时在单个信息操纵系统上运行的软件(即可执行代码或指令)和固件。通常经由虚拟化——一种用于从其它系统、应用或最终用户与那些资源交互作用的方式隐藏信息操纵系统资源的物理特征的技术——来允许这个可操作性。管理程序104可以是各种专用和/或市场上可买到的虚拟化平台之一,包括但不限于IBM的Z/VM、XEN、ORACLE VM、VMWARE的ESX SERVER、L4 MICROKERNEL、TRANGO、MICROSOFT的HYPER-V、SUN的LOGICAL DOMAINS、HITACHI的VIRTAGE、KVM、VMWARESERVER、VMWARE WORKSTATION、VMWARE FUSION、QEMU、MICROSOFT的VIRTUAL PC和VIRTUALSERVER、INNOTEK的VIRTUALBOX以及SWSOFT的PARALLELS和WORKSTATION PARALLELSDESKTOP。在一个实施方式中,管理程序104可包括具有本机虚拟化能力的特别设计的操作系统(OS)。在另一实施方式中,管理程序104可包括具有用于执行虚拟化的合并的虚拟化部件的标准OS。在另一实施方式中,管理程序104可包括与单独的虚拟化应用一起运行的标准OS。在这个实施方式中,管理程序104的虚拟化应用可以是在OS之上运行并且只通过OS与物理硬件102交互作用的应用。可选地,管理程序104的虚拟化应用在一些级别上可经由OS间接地与物理硬件102交互作用,而在其它级别上直接与物理硬件102交互作用(例如类似于OS直接与物理硬件102交互作用的方式,且作为在物理硬件102上运行的固件),也被称为设备通过。通过使用设备通过,虚拟机可直接利用物理设备而没有操作系统驱动器的中间使用。作为另一可选方案,管理程序104的虚拟化应用可在各种级别上直接与物理硬件102交互作用(例如类似于OS直接与物理硬件102交互作用的方式,且作为在物理硬件102上运行的固件)而不利用OS,虽然仍然与OS交互作用以协调物理硬件102的使用。
如图1所示,虚拟机1 105-1代表客户OS 108-1的主机,而虚拟机2 105-2代表客户OS 108-2的主机。为了允许多个操作系统同时在系统100-1上执行,管理程序104可虚拟化物理硬件102的硬件资源并将虚拟化计算机硬件表示呈递到每个虚拟机105。换句话说,管理程序104可向每个虚拟机105分配例如来自处理器子系统120的一个或多个处理器、在存储器子系统130中的存储器的一个或多个区、I/O子系统140的一个或多个部件等。被呈递到每个虚拟机105的虚拟化硬件表示可包括每个虚拟机105硬件资源的重叠(即不相交或非重叠)集合(例如没有硬件资源在虚拟机105之间被共享)。在其它实施方式中,虚拟化硬件表示可包括每虚拟机105硬件资源的重叠集合(例如一个或多个硬件资源由两个或多个虚拟机105共享)。
在一个实施方式中,管理程序104可在统计上分配硬件资源102的硬件资源,使得某些硬件资源被分配到某些虚拟机,且这个分配不随着时间的过去而改变。此外或可选地,根据在单独的虚拟机上运行的应用的特定需要,管理程序104可动态地分配物理硬件102的硬件资源,使得硬件资源到虚拟机的分配随着时间而改变。此外或可选的,管理程序104可随时了解硬件资源到虚拟机映射,使得管理程序104能够确定物理硬件102的给定硬件资源被分配到的虚拟机。
在图1中,每个虚拟机105可分别包括客户操作系统(客户OS)108的实例连同任何应用或在客户OS 108上运行的其它软件。即使客户OS 108在某个程度上与由管理程序1054虚拟化的物理硬件102不兼容,每个客户OS 108可代表与管理程序104兼容并被管理程序104支持的OS。此外,每个客户OS 108可以是相同的操作系统的实例或不同的操作系统的实例。例如,在一个实施方式中,每个客户OS 108可包括LINUX OS。作为另一例子,客户OS108-1可包括LINUX OS,客户OS 108-1可包括MICROSOFT WINDOWS OS,而在另一虚拟机(未示出)上的另一客户OS可包括VXWORKS OS。虽然系统100-1被描绘为具有两个虚拟机105-1、105-2和存储虚拟器具110,将理解,在特定的实施方式中,不同数量的虚拟机105可在任何给定的时间在信息操纵系统100上执行。
在图1中,存储虚拟器具110可代表在管理程序104上执行的存储软件。虽然存储虚拟器具110可被实现为虚拟机并可以在与上面关于虚拟机105所述的类似的环境和地址空间中执行,存储虚拟器具110可专用于提供对客户OS 108的实例的存储资源的访问。因此,存储虚拟器具110本身可以不是作为资源被提供给用户的客户OS的主机,但可以是信息操纵系统100的嵌入式特征。然而将理解,存储虚拟器具110可包括类似于前面在本文描述的客户OS 108的各种实现的嵌入式虚拟化OS(未示出)。特别是,存储虚拟器具110可享有对用于访问存储资源(本地和/或远程)的各种设备和接口的通过设备访问。此外,存储虚拟器具110被启用以使用被包括在I/O子系统140中的I/O加速器设备来提供在期望存储资源和客户OS 108之间的逻辑通信连接,如在本文描述的,能用于非常高数据吞吐量速率和非常低时延传输操作。
在图1所示的系统100的操作中,信息操纵系统100的管理程序104可虚拟化物理硬件102的硬件资源并将虚拟化计算机硬件表示呈递到每个虚拟机105。虚拟机105的每个客户OS 108可接着开始操作并运行应用和/或其它软件。在操作时,每个客户OS 108可利用由管理程序104分配到相应的虚拟机的物理硬件102的一个或多个硬件资源。每个客户OS 108和/或在客户OS 108之下执行的应用可被呈递由存储虚拟器具110管理的存储资源。换句话说,存储虚拟器具110可被启用以安装并划分物理存储资源——包括本地存储资源和远程存储资源——的各种组合,并如所需的将这些物理存储资源呈递到逻辑存储设备用于由客户OS 108访问。特别是,存储虚拟器具110可启动以使用I/O加速器设备,用于由在虚拟机105的客户OS 108之下执行的应用访问存储资源,I/O加速器设备为由在图1中的I/O子系统140代表的PCI-E设备。此外,本文所述的存储虚拟器具110的特征还可以用独立于或极大地独立于管理程序104的任何特定实施的方式允许实现。
现在参考图2,示出系统100-2的实施方式的选定元件的方框图。在图2中,系统100-2可代表作为系统100-1(见图1)的实施方式的信息操纵系统。如所示,系统100-2还包括关于存储虚拟器具110的操作和使用的细节,而在系统100-1中所示的其它元件为了描述清楚而从图2省略。在图2中,例如虚拟机105和客户OS 108被示为单数,虽然它们可代表虚拟机105和客户OS 108的任何数量的实例。
在图2中,虚拟机105被示为执行应用202和客户OS 108,存储驱动器204在客户OS108之下被安装和装入。存储驱动器204使虚拟机105能够经由被装入到管理程序104内的I/O堆栈244、虚拟文件系统246、管理程序(HV)存储驱动器216和HV网络集成控制器(NIC)246来访问存储资源。I/O堆栈244通过管理程序104提供对面向VM的I/O的接口以与在虚拟机105上执行的存储驱动器204交互作用。虚拟文件系统246是由管理程序104提供以例如用于由客户OS 108访问的文件系统。
如图2所示,虚拟文件系统210与HV存储驱动器248和HV NIC驱动器214交互作用以访问处理器PCI I/O加速器设备250。根据与PCI I/O加速器设备250一起使用的配置(即类代码),在安装在管理程序104处的PCI I/O加速器设备250上的PCI-E端点252-1在不同的实施方式中对虚拟文件系统246可表现为存储器/存储资源(使用HV存储驱动器248用于块访问)或表现为网络控制器(使用HV NIC驱动器214用于文件访问)。特别是,PCI I/O加速器设备250实现在高数据速率下的数据传输,同时使处理器子系统120受到最小工作负荷,且因此代表用于I/O加速的有效机制,如在本文所述的。
此外,在图2的示例性实施方式中,存储虚拟器具110被示为包括SVA存储驱动器206、SVA NIC驱动器208和SVA I/O驱动器212。如同虚拟文件系统246一样,存储虚拟器具110可根据在PCI I/O加速器设备250中的PCI-E端点252-2的配置使用SVA存储驱动器206或SVA NIC驱动器208与PCI I/O加速器设备250交互作用。因此根据配置,PCI-E端点252-2对存储虚拟器具110可表现为存储器/存储资源(使用SVA存储驱动器206用于块访问)或网络控制器(使用SVA NIC驱动器208用于文件访问)。在各种实施方式中,存储虚拟器具110可享有对PCI I/O加速器设备端点252-2的通过访问,如在本文所述的。
在图2中,SVA I/O 212代表使存储虚拟器具100能够访问并提供对各种存储资源的访问的“后端”驱动器。如所示,SVA I/O驱动器212具有对远程直接存储器存取(RDMA)218、iSCSI/光纤通道(FC)/以太网222和闪存SSD 224的通过访问。例如,RDMA 218或闪存SSD 224或iSCSI/FC/以太网222可参与高速缓存网络230,其可以是用于在多个信息操纵系统(未示出)例如系统100之间缓存存储操作和/或数据的高性能网络。如所示,iSCSI/FC/以太网222也可提供对可包括各种外部存储资源例如网络可访问的存储阵列的存储区域网(SAN)240的访问。
在图2中,PCI I/O加速器设备250被示为包括PCI-E端点252、DMA引擎254、地址转换器256、数据处理器258和专用设备260。PCI I/O加速器设备250在各种实施方式中可包括额外的部件,例如用于缓冲器或其它类型的本地存储的存储器介质,其为了描述清楚而从图2中省略。如所示,PCI-E端点252-1配置成经由第一根端口可访问,第一根端口通过HV存储驱动器216或HV NIC驱动器214来实现访问。PCI-E端点252-2配置成由第二根端口可访问,第二根端口通过SVA存储驱动器206或SAV NIC驱动器208来实现访问。因此,被实现为单个x16 PCI-E适配器板并插入信息操纵系统100-1的x16 PCI-E狭槽的PCI I/O加速器设备250的示例性实施方式表现为两个x8 PCI-E端点252,其经由系统根联合体中的两个根端口作为单独PCI-E端点在逻辑上是可寻址的。第二和第二根端点代表处理器(例如处理器子系统120)或与处理器相关的芯片组的根联合体。根联合体包括通过使用用于独有的访问的系统软件将特定的存储器区映射到I/O设备来隔离由I/O设备使用的存储器区的输入/输出存储器管理单元(IOMMU)。IOMMU可支持使用DMA再映射硬件单元定义(DRHD)的直接存储器存取(DMA)。对于PCI I/O加速器设备250例如管理程序104的主机,PCI I/O加速器设备250表现为独立的PCI-E设备,即PCI-E端点252-1和252-2。因此,管理程序104可能不知道且可能不访问经由PCI I/O加速器设备250出现的局部处理和数据传输,包括由PCI I/O加速器设备250执行的DMA操作。
相应地,在图2中,当启动系统100-2时,预引导软件可使PCI-E端点252呈现为逻辑设备,在启动时,只有该逻辑设备的PCI-E端点252-2对管理程序104是可见的。然后,管理程序104配置成分配PCI-E端点252-2用于由存储虚拟器具110独有地访问。然后,存储虚拟器具110从管理程序104接收对PCI-E端点252-2的通过访问,存储虚拟器具110可通过管理程序104来控制PCI I/O加速器设备250的操作。接着,管理程序104引导并装入存储虚拟器具110。当装入和启动时,存储虚拟器具110可提供两个PCI-E端点252的配置细节,包括一种类型的PCI设备的类别代码。然后,存储虚拟器具110发起PCI-E端点252-2的功能水平重置以实现期望操作。存储虚拟器具110接着发起PCI-E端点252-2的功能水平重置,其导致管理程序104将PCI-E端点252-1识别为热插入系统100-2内的新设备。作为结果,管理程序104为PCI-E端点252-1装入适当的驱动器,且I/O操作可继续进行。管理程序104可独有地访问PCI-E端点252-2用于分配缓冲器并传输或接收来自PCI-E端点252-2的命令。然而,管理程序104可保持不知道由PCI I/O加速器设备250执行的处理和数据传输操作,包括DMA操作和已编程的I/O操作。
相应地,在图2中,DMA引擎254执行IOMMU的DMA编程并可支持分散聚集或存储器到存储器类型的访问。地址转换器256为数据传输执行地址转换,并可使用IOMMU来解析来自系统100-2中的某些存储空间的地址(也见图3)。在某些实施方式中,地址转换器256可维持本地地址转换高速缓存器。数据处理器258提供包括在数据传输操作期间的数据的处理的一般数据处理功能。数据处理器258可包括或访问与PCI I/O加速器设备250包括在一起的存储器。在某些实施方式中,PCI I/O加速器设备可包括存储控制其器和扩展槽以接纳由数据处理器258使用的本地RAM。由数据处理器258支持并可由存储虚拟器具110可编程的操作包括对数据的加密、压缩、计算(即校验和等)以及恶意代码检测。还示出专用设备260,其可代表用于由存储虚拟器具110隐蔽或秘密地使用的各种设备中的任一个。换句话说,因为管理程序104不知道PCI I/O加速器设备250的内部特征和行动,专用设备260可独立于管理程序104且在没有管理程序104的知识的情况下由存储虚拟器具110使用。在各种实施方式中,转用设备260选自存储器设备、网络接口适配器、存储适配器和存储设备。在一些实施方式中,专用设备260是可移除的或可热插的,例如通用串行总线(USB)设备。
现在参考图3,示出存储空间300的实施方式的选定元件的方框图。在图3中,存储空间300描绘各种存储寻址空间或被包括在信息操纵系统100(见图1和2)中的各种虚拟化层的仅仅“地址空间”。在存储空间300中所示的不同的存储器地址可由地址转换器256使用,如关于图2所述的。
如图3所示,存储空间300包括用于对物理存储器寻址的物理存储器地址空间(A4)340。例如,在信息操纵系统100中,处理器子系统120可访问存储器子系统130,其可提供物理存储器地址空间(A4)340。因为管理程序104在物理计算资源上执行,管理程序虚拟地址空间(A3)330代表基于物理存储器地址空间(A4)340的虚拟地址空间。虚拟地址空间实现具有有限数量的物理存储器的较大的存储空间的寻址,并可依赖于用于卸载或缓存操作的外部存储资源(未在图3中示出)。管理程序虚拟地址空间(A3)330代表由管理程序104使用的内部地址空间。管理程序104还可产生在管理程序虚拟地址空间(A3)330内的所谓的“物理”地址空间,并将这些“物理”地址空间呈递到虚拟机105和存储虚拟器具110用于虚拟化执行。从虚拟机105和存储虚拟器具110的观点看,由管理程序104提供的“物理”地址空间可表现为真实物理存储空间。如所示,客户OS“phys”地址空间(A2)310和SVA“phys”地址空间(A2)320代表由管理程序104提供到分别客户OS 108和存储虚拟器具110的“物理”地址空间。最后,客户OS虚拟地址空间(A1)312代表客户OS 108使用客户OS“phys”地址空间(A2)310实现的虚拟地址空间。SVA虚拟地址空间(A1)322代表存储虚拟器具110使用SVA“phys”地址空间(A2)320实现的虚拟地址空间。
注意,标签A1、A2、A3和A4指真实或虚拟化存储空间的特定分级水平,如上面关于信息操纵系统100所述的。为了描述清楚起见,标签A1、A2、A3和A4在关于图1-3更详细地描述PCI I/O加速器设备250的操作时被提到。
在操作中,PCI I/O加速器设备250支持各种数据传输操作,包括I/O协议读和写操作。具体地,应用202可发出从文件(或其一部分)的读操作,存储虚拟器具110经由SVA I/O驱动器212提供对该文件的访问。应用202可发出到文件的写操作,存储虚拟器具110经由SVA I/O驱动器212提供对该文件的访问。与其它常规方法比较,PCI I/O加速器设备250可通过管理程序104使读和写操作的处理加速。在I/O协议读操作的示例性实施方式中,应用202对在虚拟机105中的地址空间A1中的文件发出读请求。存储驱动器204可将与读请求相关的存储器地址转换成虚拟机105的地址空间A2。然后,虚拟文件系统246(或HV存储驱动器216、HV NIC驱动器214)可将存储器地址转换成管理程序104的地址空间A4(被称为“A4(HV)”),并在将门铃发送到PCI-E端点252-1之前将A4存储器地址存储在协议I/O命令列表中。协议I/O命令可以是读或写命令。在PCI-E端点252-1上接收的门铃由PCI-E端点252-2发送到存储虚拟器具110作为使用在地址空间A2中的地址转换器256的所转换的存储器写。SVA存储驱动器206记录门铃并接着通过将PCI-E读操作的结果发送到PCI-E端点252-2来读取在地址空间A4(HV)中的I/O命令列表。地址转换器256将指向PCI-E端点252-2的PCI-E读操作转换成指向在包含协议I/O命令列表的地址空间A4(HV)中的缓冲器的PCI-E读操作。SVA存储驱动器206现在读取包含地址空间A4(HV)中的地址的命令列表。因为对于I/O协议读操作,所请求的数据的地址是SVA存储驱动器206(或SVA NIC驱动器208)已知的,驱动器将在地址空间A2(SVA)中的数据的地址和在地址空间A4(HV)中的由管理程序104分配的缓冲器的地址转换到DMA引擎254内。DMA引擎254可请求在地址空间A2(SVA)中的地址到来自IOMUU的地址空间A4(HV)的转换。在某些实施方式中,DMA引擎254可为了性能目的而缓存这些地址。DMA引擎254执行从地址空间A2(SVA)读取和写到地址空间A2(HV)。当完成时,DMA引擎254将中断(或另一类型的信号)发送到HV驱动器(HV存储驱动器216或HV NIC驱动器214)和SVA驱动器(SVA存储驱动器206或SVA NIC驱动器208)。HV驱动器现在可将读数据写到缓冲器内,缓冲器返回在虚拟文件系统246中的文件I/O读的响应。这个缓冲器数据根据I/O读请求通过存储驱动器204、客户OS 108和应用202被进一步向上传播。
对于写操作,可执行如上面对读操作所述的类似过程,例外是DMA引擎254被编程以执行从地址空间A4(HV)到在地址空间A2(SVA)中分配的缓冲器的数据传输。
现在参考图4,在流程图形式中描绘如本文所述的使用在虚拟化信息操纵系统中的I/O加速器设备来进行I/O加速的方法400的实施方式的选定元件的方框图。可使用信息操纵系统100(见图1和2)来执行方法400。注意,在方法400中描述的某些操作可以是可选的或可重新布置在不同的实施方式中。
在图4中,方法400可通过配置(操作402)与I/O加速器设备相关的第一PCI-E端点和第二PCI-E端点来开始。使用处理器子系统来引导(操作404)管理程序。存储虚拟器具(SVA)可作为在管理程序上的虚拟机来被装入(操作406),其中管理程序分配第二PCI-E端点用于由SVA独有地访问。第一PCI-E端点可经由第二PCI-E端点由SVA激活(操作408)。接着,可为第一PCI-E端点装入(操作410)管理程序设备驱动器,其中第一PCI-E端点对于管理程序表现为经由管理程序设备驱动器可访问的逻辑硬件适配器。管理程序设备驱动器可以是HV存储驱动器216或HV NIC驱动器214。数据传输操作可由在第一PCI-E端点和第二PCI-E端点之间的SVA发起(操作412)。
现在参考图5,在流程图形式中描绘如本文所述的使用在虚拟化信息操纵系统中的I/O加速器设备来进行I/O加速的方法500的实施方式的选定元件的方框图。可使用信息操纵系统100(见图1和2)来执行方法500。注意,在方法500中描述的某些操作可以是可选的或可重新布置在不同的实施方式中。方法500可在方法400(见图4)之后被执行。
在图5中,当数据传输操作在进展中时通过终止(操作502)数据传输操作,方法500可开始。第一PCI-E端点可被去激活(操作504)。在I/O加速器设备上,可对第一PCI-E端点的第一个性配置文件和第二PCI-E端点的第二个性配置文件编程(操作506)。个性配置文件可包括PCI-E端点的各种设置和属性,并可使PCI-E端点表现(或出现)为特定类型的设备。接着,可重新启动(操作508)第二PCI-E端点。可重新启动(操作510)第一PCI-E端点。响应于操作510,对于管理程序可检测并装入第一PCI-E端点的驱动器。
如在本文详细描述的,使用在虚拟化信息操作系统中的I/O加速器设备用于I/O加速的所公开的方法和系统包括预先引导表现为独立设备的第一和第二设备端点的配置。在装入具有对第二设备端点的独有访问的存储虚拟器具之后,管理程序可检测并装入第一设备端点的驱动器。存储虚拟器具可接着使用I/O加速器设备来发起数据传输I/O操作。数据传输操作可以是对存储设备的读或写操作,存储虚拟器具提供对该存储设备的访问。I/O加速器设备可使用直接存储器存取(DMA)。
上面公开的主题应被考虑为例证性的而不是限制性的,且所附权利要求意欲涵盖所有这样的修改、增强和落在本公开的真实精神和范围内的其它实施方式。因此,在被法律允许的最大程度上,本公开的范围应由下面的权利要求及其等效形式的最宽可允许的解释确定,且不应被前述详细描述约束或限制。

Claims (20)

1.一种用于使用加速器设备使在管理程序上的数据传输操作加速的方法,所述方法包括:
在引导处理器子系统上的所述管理程序之前,配置与加速器设备相关的第一快捷外设互联(PCI-E)端点和第二PCI-E端点,其中所述加速器设备是所述处理器子系统可访问的物理PCI-E设备;
使用所述处理器子系统来引导所述管理程序;
装入存储虚拟器具(SVA)作为在所述管理程序上的虚拟机,其中所述管理程序分配所述第二PCI-E端点用于由所述SVA独有地访问;
经由所述第二PCI-E端点通过所述SVA激活所述第一PCI-E端点;
响应于激活所述第一PCI-E端点,为所述第一PCI-E端点装入管理程序设备驱动器,其中所述第一PCI-E端点对于所述管理程序表现为经由所述管理程序设备驱动器可访问的逻辑硬件适配器;以及
通过所述SVA激活在所述第一PCI-E端点和所述第二PCI-E端点之间的数据传输操作。
2.如权利要求1所述的方法,其中所述数据传输操作在所述管理程序上执行的第一虚拟机和第二虚拟机之间。
3.如权利要求2所述的方法,其中所述第一PCI-E端点与所述第一虚拟机的第一地址空间相关,以及所述第二PCI-E端点与所述第二虚拟机的第二地址空间相关,其中所述加速器设备执行在所述第一地址空间与物理存储器地址空间之间和在所述第二地址空间与物理存储器地址空间之间的地址转换交易。
4.如权利要求3所述的方法,其中所述加速器设备为所述地址转换交易执行地址转换缓存,其中所述地址转换缓存在所述数据传输操作被发起之前被执行。
5.如权利要求1所述的方法,其中所述数据传输操作包括由所述加速器设备执行的直接存储器存取(DMA)操作,以及其中发起所述数据传输操作包括:
使用于所述DMA操作的DMA参数由所述SVA发送到所述加速器设备。
6.如权利要求1所述的方法,其中所述数据传输操作包括由所述加速器设备执行的可编程输入输出(PIO)操作。
7.如权利要求1所述的方法,还包括由所述SVA经由所述第二PCI-E端点:
当所述数据传输操作在进展中时,终止所述数据传输操作;
去激活所述第一PCI-E端点;
在所述加速器设备上对所述第一PCI-E端点的第一个性配置文件和所述第二PCI-E端点的第二个性配置文件编程,其中个性配置文件包括PCI-E端点的配置信息;
重新启动所述第二PCI-E端点;以及
响应于重新启动所述第二PCI-E端点,重新启动所述第一PCI-E端点。
8.如权利要求1所述的方法,其中所述数据传输操作包括由所述加速器设备执行的数据处理操作,其中所述数据处理操作选自:
加密;
压缩;
校验和;以及
恶意代码检测。
9.如权利要求1所述的方法,其中所述SVA使用所述第二PCI-E端点来访问在所述加速器设备上的专用设备,所述专用设备选自:
存储器设备;
网络接口适配器;
存储适配器;以及
存储设备。
10.如权利要求2所述的方法,其中所述SVA对所述加速器设备编程以产生与所述数据传输操作相关的中断。
11.一种信息操纵系统,包括:
加速器设备,其为物理快捷外设互联(PCI-E)设备;
处理器子系统,其访问存储器子系统和加速器,其中所述存储器子系统存储由处理器子系统可执行的用于使用所述加速器设备使在管理程序上的数据传输操作加速的指令,所述指令在由所述处理器子系统执行时使所述处理器子系统:
在执行引导所述管理程序的指令之前,配置与所述加速器设备相关的第一PCI-E端点和第二PCI-E端点;
使用所述处理器子系统来引导所述管理程序;
装入存储虚拟器具(SVA)作为在所述管理程序上的虚拟机,其中所述管理程序分配所述第二PCI-E端点用于由所述SVA独有地访问;
经由所述第二PCI-E端点通过所述SVA激活所述第一PCI-E端点;
响应于激活所述第一PCI-E端点的指令,为所述第一PCI-E端点装入管理程序设备驱动器,其中所述第一PCI-E端点对于所述管理程序表现为经由所述管理程序设备驱动器可访问的逻辑硬件适配器;以及
通过所述SVA激活在所述第一PCI-E端点和所述第二PCI-E端点之间的数据传输操作。
12.如权利要求11所述的信息操纵系统,其中所述数据传输操作在所述管理程序上执行的第一虚拟机和第二虚拟机之间。
13.如权利要求12所述的信息操纵系统,其中所述第一PCI-E端点与所述第一虚拟机的第一地址空间相关,以及所述第二PCI-E端点与所述第二虚拟机的第二地址空间相关,其中所述加速器设备执行在所述第一地址空间与物理存储器地址空间之间和在所述第二地址空间与物理存储器地址空间之间的地址转换交易。
14.如权利要求13所述的信息操纵系统,其中所述加速器设备为所述地址转换交易执行地址转换缓存,其中所述地址转换缓存在所述数据传输操作被发起之前被执行。
15.如权利要求11所述的信息操纵系统,其中所述数据传输操作包括由所述加速器设备执行的直接存储器存取(DMA)操作,以及其中发起所述数据传输操作的指令包括执行下列操作的指令:
使用于所述DMA操作的DMA参数由所述SVA发送到所述加速器设备。
16.如权利要求11所述的信息操纵系统,其中所述数据传输操作包括由所述加速器设备执行的可编程输入输出(PIO)操作。
17.如权利要求11所述的信息操纵系统,还包括由所述SVA经由所述第二PCI-E端点执行下列操作的指令:
当所述数据传输操作在进展中时,终止所述数据传输操作;
去激活所述第一PCI-E端点;
在所述加速器设备上对所述第一PCI-E端点的第一个性配置文件和所述第二PCI-E端点的第二个性配置文件编程,其中个性配置文件包括PCI-E端点的配置信息;
重新启动所述第二PCI-E端点;以及
响应于重新启动所述第二PCI-E端点,重新启动所述第一PCI-E端点。
18.如权利要求11所述的信息操纵系统,其中所述数据传输操作包括由所述加速器设备执行的数据处理操作,其中所述数据处理操作选自:
加密;
压缩;
校验和;以及
恶意代码检测。
19.如权利要求11所述的信息操纵系统,其中所述SVA使用所述第二PCI-E端点来访问在所述加速器设备上的专用设备,所述专用设备选自:
存储器设备;
网络接口适配器;
存储适配器;以及
存储设备。
20.如权利要求12所述的信息操纵系统,其中所述SVA对所述加速器设备编程以产生与所述数据传输操作相关的中断。
CN201480080653.3A 2014-07-16 2014-10-29 虚拟化信息操纵系统的输入/输出加速设备和方法 Active CN106537340B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/333,343 2014-07-16
US14/333,343 US9262197B2 (en) 2014-07-16 2014-07-16 System and method for input/output acceleration device having storage virtual appliance (SVA) using root of PCI-E endpoint
PCT/US2014/062907 WO2016010572A1 (en) 2014-07-16 2014-10-29 Input/output acceleration device and method for virtualized information handling systems

Publications (2)

Publication Number Publication Date
CN106537340A CN106537340A (zh) 2017-03-22
CN106537340B true CN106537340B (zh) 2020-06-23

Family

ID=51932579

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480080653.3A Active CN106537340B (zh) 2014-07-16 2014-10-29 虚拟化信息操纵系统的输入/输出加速设备和方法

Country Status (4)

Country Link
US (1) US9262197B2 (zh)
EP (1) EP3170072B1 (zh)
CN (1) CN106537340B (zh)
WO (1) WO2016010572A1 (zh)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6763307B2 (ja) * 2015-01-16 2020-09-30 日本電気株式会社 計算機、デバイス制御システムおよびデバイス制御方法
TWI540433B (zh) * 2015-01-21 2016-07-01 晨星半導體股份有限公司 用來存取記憶體的電路及相關的存取方法
KR102273021B1 (ko) * 2015-02-27 2021-07-06 삼성전자주식회사 복수의 운영체제가 구동되는 전자 장치가 주변 기기와 통신하는 방법 및 그 장치
EP3089035A1 (en) * 2015-04-30 2016-11-02 Virtual Open Systems Virtualization manager for reconfigurable hardware accelerators
US20170052866A1 (en) * 2015-08-21 2017-02-23 International Business Machines Corporation Managing a shared pool of configurable computing resources which uses a set of dynamically-assigned resources
US20170132027A1 (en) * 2015-11-09 2017-05-11 Symantec Corporation Systems and methods for coordinating data caching on virtual storage appliances
US20170206091A1 (en) * 2016-01-20 2017-07-20 International Business Machines Corporation Sharing ownership of an input/output device with an existing partition
GB201603469D0 (en) * 2016-02-29 2016-04-13 Ibm Securely removing system capabilities from a logical partition
WO2017209876A1 (en) * 2016-05-31 2017-12-07 Brocade Communications Systems, Inc. Buffer manager
US10223305B2 (en) 2016-06-27 2019-03-05 International Business Machines Corporation Input/output computer system including hardware assisted autopurge of cache entries associated with PCI address translations
US10635450B2 (en) 2016-08-16 2020-04-28 Samsung Electronics Co., Ltd. Electronic device performing booting operation based on boot-up instruction provided from endpoint device
US10587130B2 (en) * 2016-11-04 2020-03-10 International Business Machines Corporation Automatically discharging a rechargeable battery
CN108170505A (zh) * 2016-12-07 2018-06-15 华为技术有限公司 一种驱动管理方法及宿主机
CN109983438B (zh) * 2016-12-22 2024-02-02 英特尔公司 使用直接存储器访问(dma)重新映射来加速半虚拟化网络接口
KR20180114667A (ko) * 2017-04-11 2018-10-19 한국전자통신연구원 고품질 그래픽의 처리를 지원하는 가상 데스크탑 서버 및 그것을 이용한 고품질 그래픽의 처리 방법
US10776145B2 (en) 2017-04-21 2020-09-15 Dell Products L.P. Systems and methods for traffic monitoring in a virtualized software defined storage architecture
US10296369B2 (en) 2017-04-27 2019-05-21 Dell Products L.P. Systems and methods for protocol termination in a host system driver in a virtualized software defined storage architecture
US10503922B2 (en) 2017-05-04 2019-12-10 Dell Products L.P. Systems and methods for hardware-based security for inter-container communication
US20180336158A1 (en) * 2017-05-16 2018-11-22 Dell Products L.P. Systems and methods for data transfer with coherent and non-coherent bus topologies and attached external memory
US10936353B2 (en) * 2017-05-16 2021-03-02 Dell Products L.P. Systems and methods for hypervisor-assisted hardware accelerator offloads in a virtualized information handling system environment
US20180335956A1 (en) * 2017-05-17 2018-11-22 Dell Products L.P. Systems and methods for reducing data copies associated with input/output communications in a virtualized storage environment
CN109657471B (zh) * 2017-10-11 2023-02-28 阿里巴巴集团控股有限公司 云设备管理系统和方法
CN108124475B (zh) * 2017-12-29 2022-05-20 达闼机器人股份有限公司 虚拟系统蓝牙通信方法及装置、虚拟系统、存储介质及电子设备
CN111602118B (zh) * 2018-01-16 2023-06-06 Qsc公司 实现虚拟机的音频,视频和控制系统
JP7384900B2 (ja) * 2018-08-03 2023-11-21 エヌビディア コーポレーション 仮想マシン・メモリの安全なアクセス
CN112749111A (zh) * 2019-10-31 2021-05-04 华为技术有限公司 访问数据的方法、计算设备和计算机系统
US11609866B2 (en) * 2020-01-02 2023-03-21 Texas Instruments Incorporated PCIe peripheral sharing
CN112600882B (zh) * 2020-12-01 2022-03-08 上海交通大学 一种基于共享内存通信模式的硬件加速方法
CN112765084B (zh) * 2021-04-06 2021-09-14 阿里云计算有限公司 计算机设备、虚拟化加速设备、数据传输方法及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102763098A (zh) * 2009-12-14 2012-10-31 思杰系统有限公司 用于在可信和不可信虚拟机之间通信的方法和系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4448878B2 (ja) * 2007-12-06 2010-04-14 株式会社日立製作所 障害回復環境の設定方法
US20120167082A1 (en) * 2010-12-23 2012-06-28 Sanjay Kumar Direct sharing of smart devices through virtualization
US8799592B2 (en) 2011-04-20 2014-08-05 International Business Machines Corporation Direct memory access-like data transfer between guest operating systems
US20140258577A1 (en) * 2013-03-11 2014-09-11 Futurewei Technologies, Inc. Wire Level Virtualization Over PCI-Express
US9405566B2 (en) * 2013-05-24 2016-08-02 Dell Products L.P. Access to storage resources using a virtual storage appliance

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102763098A (zh) * 2009-12-14 2012-10-31 思杰系统有限公司 用于在可信和不可信虚拟机之间通信的方法和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Secure I/O device sharing among virtual machines on multiple hosts;Cheng-Chun Tu等;《ACM SIGARCH Computer Architecture New》;20130623;第41卷;第108-119页 *

Also Published As

Publication number Publication date
US9262197B2 (en) 2016-02-16
CN106537340A (zh) 2017-03-22
EP3170072A1 (en) 2017-05-24
WO2016010572A1 (en) 2016-01-21
US20160019079A1 (en) 2016-01-21
EP3170072B1 (en) 2021-08-18

Similar Documents

Publication Publication Date Title
CN106537340B (zh) 虚拟化信息操纵系统的输入/输出加速设备和方法
US10078454B2 (en) Access to storage resources using a virtual storage appliance
US9626324B2 (en) Input/output acceleration in virtualized information handling systems
US9940072B2 (en) Extending existing storage devices in virtualized environments
US20180336158A1 (en) Systems and methods for data transfer with coherent and non-coherent bus topologies and attached external memory
US8990800B2 (en) System and method for increased system availability to network storage in virtualized environments
US9575786B2 (en) System and method for raw device mapping in traditional NAS subsystems
US8209459B2 (en) System and method for increased system availability in virtualized environments
US10503922B2 (en) Systems and methods for hardware-based security for inter-container communication
US9747121B2 (en) Performance optimization of workloads in virtualized information handling systems
US10296369B2 (en) Systems and methods for protocol termination in a host system driver in a virtualized software defined storage architecture
US10235195B2 (en) Systems and methods for discovering private devices coupled to a hardware accelerator
US20180335956A1 (en) Systems and methods for reducing data copies associated with input/output communications in a virtualized storage environment
US10346065B2 (en) Method for performing hot-swap of a storage device in a virtualization environment
US10248596B2 (en) Systems and methods for providing a lower-latency path in a virtualized software defined storage architecture
US20190391835A1 (en) Systems and methods for migration of computing resources based on input/output device proximity
US10977073B2 (en) Architectural data mover for RAID XOR acceleration in a virtualized storage appliance
US10776145B2 (en) Systems and methods for traffic monitoring in a virtualized software defined storage architecture
US10936353B2 (en) Systems and methods for hypervisor-assisted hardware accelerator offloads in a virtualized information handling system environment
US11100033B1 (en) Single-root input/output virtualization-based storage solution for software defined storage
US20230195378A1 (en) Smart network interface controller host storage access

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant