CN101359315B - 将输入/输出(i/o)虚拟化操作卸载至处理器的方法及装置 - Google Patents
将输入/输出(i/o)虚拟化操作卸载至处理器的方法及装置 Download PDFInfo
- Publication number
- CN101359315B CN101359315B CN200810144274.2A CN200810144274A CN101359315B CN 101359315 B CN101359315 B CN 101359315B CN 200810144274 A CN200810144274 A CN 200810144274A CN 101359315 B CN101359315 B CN 101359315B
- Authority
- CN
- China
- Prior art keywords
- hub
- processor
- dva
- transform engine
- equipment
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1072—Decentralised address translation, e.g. in distributed shared memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
- Bus Control (AREA)
Abstract
在一个实施方式中,本发明包括一种方法,该方法在输入/输出(I/O)集线器中接收直接存储器存取(DMA)操作请求,其中该请求包括与该DMA操作相关联的设备虚拟地址(DVA);在该I/O集线器中确定是否执行将该DVA转换到物理地址(PA)的地址转换,并且如果该I/O集线器确定不执行地址转换,则将该请求连同该DVA一起从该I/O集线器发送到与该I/O集线器相耦合的处理器。对其它实施方式也予以描述并主张权利。
Description
技术领域
本申请的技术领域一般地涉及计算机系统,尤其涉及将输入/输出(I/O)虚拟化操作卸载至处理器。
背景技术
计算机系统具有用来传输数据的内部通信系统。这些内部通信系统包括一组互连。互连提供系统组件间的数据通信。然而,如果这些互连不能跟上系统组件的需求,它们也可能成为系统性能的瓶颈。
诸如通过输入/输出控制器或其它这样的集线器耦合到系统中的外围组件经常作出直接存储器存取(DMA)请求。DMA请求用于访问主存储器的各个区域以检索或者写入数据。外围组件通常具有允许它们访问的且由操作系统所分配的虚拟地址范围。外围组件请求并检索映射数据,该映射数据允许它们确定用于DMA事务的存储单元的物理地址(相应于该组件所用的虚拟地址)。然而,转换数据的请求可能在系统互连上造成额外的通信量。
发明内容
在一个方面,本申请公开了一种将输入/输出(I/O)虚拟化操作卸载至处理器的方法,包括:从与输入/输出(I/O)集线器相耦合的I/O设备接收对于所述I/O集线器中的直接存储器存取(DMA)操作的请求,所述请求包括与所述DMA操作相关联的设备虚拟地址(DVA);在所述I/O集线器中确定是否在所述I/O集线器的第一转换引擎中执行将所述DVA转换至物理地址(PA)的地址转换;当所述I/O集线器确定不执行所述地址转换时将所述请求连同所述DVA一起从所述I/O集线器发送到与所述I/O集线器相耦合的处理器,并且在所述处理器的第二转换引擎中执行所述地址转换,其中卸载转换访问功能是以每映射和访问请求为基础的;以及当所述I/O集线器确定执行所述地址转换时在所述I/O集线器的所述第一转换引擎中执行所述地址转换,并且将所述请求连同所述PA一起从所述I/O集线器发送到所述处理器。
在另一个方面,本申请公开了一种将输入/输出(I/O)虚拟化操作卸载至处理器的装置,包括处理器,该处理器包括:a)用于执行数据操作的至少一个核;b)包括转换后备缓冲器的高速缓冲存储器;c)用与所述处理器相耦合的系统存储器的一部分来处理存储器事务的存储控制器;以及d)转换引擎,所述转换引擎接收包括设备虚拟地址(DVA)的直接存储器存取(DMA)操作,并且将所述DVA转换到对应于所述系统存储器的所述部分中某位置的物理地址(PA),其中所述DMA操作从与所述处理器耦合的输入/输出(I/O)设备启动,其中所述转换引擎用于监听耦合至所述处理器的I/O集线器的第二转换引擎的编程事务,所述编程用于用物理存储器范围和相应的设备虚拟地址为所述第二转换引擎编程。
在又一个方面,本申请公开了一种将输入/输出(I/O)虚拟化操作卸载至处理器的系统,包括:第一处理器,所述第一处理器包括用于执行数据操作的至少一个核、包括转换后备缓冲器的高速缓冲存储器,以及第一转换引擎,所述第一转换引擎接收对于包括设备虚拟地址(DVA)的直接存储器存取(DMA)操作的请求,将所述DVA转换到位于与所述第一处理器相耦合的存储器第一部分的物理地址(PA),其中所述DMA操作从与所述第一处理器相耦合的输入/输出(I/O)设备启动;第二处理器,所述第二处理器包括用于执行数据操作的至少一个第二核、包括第二转换后备缓冲器的第二高速缓冲存储器、以及第二转换引擎,所述第二转换引擎接收包括DVA的DMA操作,将所述DVA转换到位于与所述第二处理器相耦合的存储器第二部分的PA;以及耦合在所述I/O设备和所述第一处理器及所述第二处理器之间且包括集线器转换引擎的集线器,其中所述集线器基于所述DVA将所述DMA操作引导至所述第一处理器或者所述第二处理器,其中所述集线器至少部分基于所述集线器转换引擎的负载确定是否在所述集线器转换引擎中执行将所述DVA转换到所述PA的地址转换,并且如果所述集线器确定不执行所述地址转换则将所述请求连同所述DVA一起发送至所引导的第一或第二处理器或者如果所述集线器确定执行所述地址转换则在所述集线器转换引擎中执行所述地址转换。
附图说明
图1是根据本发明一个实施方式的系统的框图。
图2是根据本发明一个实施方式的方法的流程图。
图3是根据本发明另一个实施方式的方法的流程图。
图4是根据本发明一个实施方式的点对点互连系统的框图。
具体实施方式
在各种实施方式中,可以降低处理地址转换操作所需带宽并缩短存储器存取延迟时间。为了实现这一带宽降低和存储器延迟时间缩短,各实施方式可以在系统处理器内提供扩展的地址转换机制。更具体地,处理器结点除了其它资源之外尤其包括一个或多个处理器核心、诸如转换后备缓冲器(TLB)之类的存储管理单元(MMU),还可以设置有诸如所谓虚拟化引擎之类的附加地址转换机制,以便代表耦合到该平台的输入/输出(I/O)设备执行卸载的地址转换。
现在参见图1,所示为根据本发明一个实施方式的系统的框图。如图1所示,系统100包括多个处理结点,即第一处理器110a和第二处理器110b(统称处理器110)。处理器110a可以是中央处理器(CPU),它可以包括CPU核112a、集成的存储控制器114a和虚拟化引擎116a。类似地,处理器110b可以包括核112b、集成的存储控制器114b和虚拟化引擎116b。
仍参见图1,每个处理器110均可以与本地附着到它那里的主存储器的一部分相耦合。具体地,处理器110a可以耦合至存储器120a,而处理器110b耦合至存储器120b。在一个实施方式中,存储器120(统称)可以是动态随机存取存储器(DRAM),但是本发明的范围在这一方面不受限制。
如图1所进一步显示,处理器110可通过可以是点对点(P-P)互连的互连130a和130b耦合到输入输出(I/O)集线器140。I/O集线器140可以包括虚拟化引擎135。如图1的实施方式所示,I/O集线器140可以耦合至各种I/O设备150a-150c。尽管用图1中这一特定的实现来示出,但本发明的范围并不受此限制。
因为每个处理器均有它自己的虚拟化引擎,所以可以实现从I/O集线器上卸载转换容量。通过向处理器中这类虚拟化引擎卸载转换和存储器访问需求,就可以释放I/O集线器中相应的虚拟化引擎以提供更大的容量。而且,通过向正在运行虚拟机的处理器卸载转换访问功能(以每映射和访问请求为基础)可以增强DMA性能,其中该虚拟机拥有与请求(即VM指定的直接设备I/O)设备相关联的I/O设备。同样地,每个处理器插口可以提供虚拟化引擎以便为映射到相应处理器本地存储器上的物理地址存储虚拟页表项。
因此,使用各种实施方式,就可以在I/O集线器中的虚拟化引擎发生高速缓存未命中时,简单地将相应的请求连同所有的事务细节(例如,设备虚拟地址(DVA)、长度等等)从该设备卸载至拥有该DVA所映射物理存储器范围的处理器。在VM与这一处理器有关联位掩码(affinitiy mask)且VM拥有该设备(即,直接设备指定I/O)的情况下,通过在与相应的存储器紧密耦合的处理器内处理来自该设备的DMA事务就可以实现性能改进。
在I/O设备可以使用处理器的虚拟化引擎之前,可以执行一系列动作来启动这一操作。具体地,可以执行启动过程以建立用于DMA的物理存储器区域并为设备访问将其在操作系统(OS)上注册。
现在参见图2,所示的是根据本发明一个实施方式的方法的流程图。如图2所示,方法200可以在诸如I/O设备之类的设备期望执行DMA操作时开始。如图2所示,可以将用于DMA操作的存储器范围在OS上注册(框210)。在一个实施方式中,设备驱动程序(例如,作为VM一部分或在本地OS上运行)为DMA用途分配存储器的一段范围并为设备访问将其在OS上注册。仍参见图2,接下来I/O集线器的虚拟化引擎可以用物理存储器范围和相应的设备虚拟地址(DVA)编程(框220)。例如,OS可以用相关联的主存储器的物理存储器范围来给虚拟化引擎编程并获取设备虚拟地址。连同该操作,可以在相关联的CPU中更新VE页表(框230)。例如,CPU中的VE可以监听这些事务,并且用相应的物理地址和DVA来更新它自己的页表项。另外,I/O集线器中的虚拟化引擎可以解码物理地址范围内的且指向拥有这些范围的CPU的诸如结点标识符(结点ID)之类的标识符,并且向CPU中的VE发送相应的消息以由此更新其页表。因而在此刻同一DVA存在着两个页表项副本。
仍参见图2,接下来DVA可以返回到I/O设备中的设备驱动程序(框240)。因此,I/O设备可以用DVA范围编程(框250)。例如,设备驱动程序可以用DVA范围给它的设备编程,例如使用设备到驱动程序专用信道用于这种编程。尽管在图2的实施方式中示出了这一特定实现,应当理解本发明的范围在这一方面不受限制。
在根据本发明一个实施方式执行设备初始化之后,可以执行在I/O设备和诸如主存储器一部分的所需位置之间的DMA操作。现在参见图3,所示是根据本发明一个实施方式的方法的流程图。方法300可用于执行DMA事务,并且可以通过发布DMA事务开始(框310)。例如,I/O设备可以发布DMA事务以便从存储器读取数据或者直接向存储器写入数据。控制从框310传递到菱形框320,在其中可以确定I/O设备是否支持TLB或者其它的存储器管理单元(MMU)。如果是,则控制传到菱形框330,在其中可以确定从虚拟地址到物理地址的转换是否呈现在TLB或者其它这类结构中(菱形框330)。如果是,则可以从I/O设备发送带有相应物理地址的DMA事务(框335)。因此,这一物理地址可以通过I/O集线器和相应的CPU传递到期望的存储位置以便执行DMA事务。
相反如果在菱形框330处确定该转换并未在TLB内呈现,则可以做出对来自VE的转换的请求(框340)。I/O集线器可以将相应的转换的物理地址提供给TLB或者I/O设备的其它MMU结构,使得I/O设备随后发送带有PA的DMA事务(也是框335)。注意到也可以将转换信息从I/O集线器的VE提供给CPU中的VE,以便使该VE能够更新它的项,例如页表项。
尽管为了例示简便而没有在图3中示出,但应当注意如果该转换没有呈现在I/O集线器的VE中,则相应的页表可以从存储器读取,并且可以更新处理器和I/O集线器两者的VE的(潜在地)页表。更进一步,I/O集线器可以将这类页表转发到I/O设备,以更新其TLB或其它MMU结构。在又一些实现中,如果该转换在I/O集线器的VE中缺失,则I/O集线器可以简单地将DMA事务传递到处理器以在处理器的VE中处理,正如以下关于框360和框365所讨论的那样。
参见回图3,相反如果在菱形框320处确定I/O设备不支持TLB,控制则传递到框350。在那里,可以使用DVA和长度(例如,作为使DMA操作能够执行的信息)将DMA事务从I/O设备发送到I/O集线器。接下来,在菱形框355处可以确定I/O集线器中的VE是否能够处理该请求。尽管本发明的范围在这一方面不受限制,但这一决定可以基于许多因素作出,这些因素包括例如转换是否已经在其VE页表中呈现、其高速缓存未命中比率、它当前正在处理的负载、P-P互连上的负载(例如,负载低于阈值带宽)等等。
如果在菱形框355处确定I/O集线器的VE不能处理该请求,则将该请求转发到CPU(框360)。例如,在一些实施方式中可以作出页面错误以将该事务从I/O集线器沿着P-P互连传递到拥有相关联存储器范围的CPU。在一些实施方式中,I/O集线器可以将引入的DMA事务从I/O设备与I/O集线器按其通信的第一协议转换到I/O集线器与处理器通信所用的第二协议。在一个特定的实现中,第一通信协议可以依据外设部件互连(PCI)协议,诸如根据PCIExpressTM说明书基础说明书版本2.0(PCI ExpressTM Specification BaseSpecification version2.0)(2006年12月20日发布)的PCI ExpressTM协议,而第二通信协议可以依据公用系统接口(CSI)通信协议(下文描述),但是本发明的范围在这一方面不受限制。因此,在框365处,CPU可以处理DMA事务。例如,CPU中的VE可以使转换呈现并且将该转换连同DMA请求一起提供,从而能够提交该请求并且随后将该请求传递至主存储器以供处理。这样做可以避免对于CPU和I/O集线器之间的多重事务的需要,因为响应、完成及其它这样的事务无需出现。注意,相反如果CPU VE不包括转换,那么可以执行页面走查机制来接收这一转换信息,例如从主存储器接收并且将它载入CPU的VE,并且随后执行DMA事务。
相反如果在菱形框355处确定I/O集线器中的VE能够处理该请求,则控制传递到框370,在其中可以执行转换并且将DMA事务连同相应的物理地址一起沿着P-P互连发送到CPU。注意,在其它实现中,如果转换没有呈现在I/O集线器的VE中,则可以请求来自CPU的转换。当接收到转换信息时,可以相应地更新I/O集线器的VE。尽管在图3的实施方式中示出了这一特定的实现,但本发明的范围在这一方面不受限制。
通过在处理器的VE中执行地址转换,可以实现P-P互连上的通信量的减少。例如,在实现作为能让相干与不相干事务均沿着一组点对点互连通过系统进行通信的高速缓存相干协议的CSI协议的实施方式中,可以实现处理器和I/O集线器之间通信量的减少。具体地,如果从DVA到PA的地址转换将在I/O集线器中执行并且该转换在I/O集线器的VE中缺失,则许多事务会需要沿着P-P互连发生,以便从存储器请求更新的页表信息并且将该信息提供给I/O集线器的VE。例如,I/O集线器需要从拥有DVA范围的处理器的存储器中读取页表,这会通过发布相干的读请求以及接收响应包来执行。取决于所需的多次页面走查,页表读取可以包括多个相干读请求和响应包。例如,在一个实现中可能需要执行四项存储事务和四项完成,这将导致沿着P-P互连的八项事务。相反地,使用一个诸如以上图3所述的实施方式,可以发送单个事务以便将DMA事务从I/O集线器传递到处理器以供执行。于是这八项事务连同将实际DMA请求提交到存储器的附加事务均可以避免,而后者可能包括更多的相干事务。因此使用本发明的各实施方式,I/O集线器中的虚拟化引擎可以将DMA事务从第一协议变换到第二协议并且将它转发到处理器,以使得处理器中的虚拟化引擎能够执行所有的查找并将各事务提交到它的本地存储器,从而避免了在P-P互连上的事务。
各实施方式可以适合于许多不同平台类型以减少沿着P-P互连的I/O集线器与处理器结点之间的通信量。如图4所示,多处理器系统500是点对点互连系统,并且包括经由点对点(P-P)互连550耦合的第一处理器570和第二处理器580,尽管系统可能是另一种总线架构。如图4所示,处理器570和处理器580每一个都可以是包括第一和第二处理器核(即,处理器核574a和574b以及处理器核584a和584b)的多核处理器,尽管可能呈现其它核。此外,如图4所示,根据本发明的一个实施方式第一和第二处理器570和580每一个都包括虚拟化引擎575和585。仍参见图4,第一处理器570还包括存储器控制器集线器(MCH)572和P-P接口576和578。类似地,第二处理器580包括MCH582和P-P接口586和588。如图4所示,MCH572和582将各处理器耦合至各自的存储器,即存储器532和存储器534,这些存储器可以是主存储器的一部分(例如动态随机存取存储器(DRAM)或者全缓冲双列直插存储模块(FBDIMM))。
第一处理器570和第二处理器580可以分别经由P-P互连552和554耦合到芯片组590。如图4所示,芯片组590包括P-P互连594和598。此外,芯片组590包括接口592以将芯片组590与高性能图形引擎538相耦合。在一个实施方式中,高级图形接口(AGP)总线539或者P-P互连可用于将图形引擎538耦合到芯片组590。芯片组590还包括VE595,以执行地址转换并且此外还确定是否将诸如DMA事务之类的事务连同未转换的DVA一起从下游设备传递到第一处理器570和第二处理器580之一,以便降低沿相应P-P互连552的带宽。如图4所示,各种I/O设备514可以连同总线桥518一起耦合到第一总线516,该总线桥518将第一总线516耦合到第二总线520。各种设备可以耦合到第二总线520,例如在一个实施方式中这些设备可以包括键盘/鼠标522、通信设备526以及可包括代码530的数据存储单元528。此外,音频I/O524可以耦合到第二总线520。
各实施方式可以用代码实现,并且可以存储在其上存储有指令的存储介质上,这些指令可用于给系统编程以便执行这些指令。存储介质可以包括但不限于,任何类型的磁盘包括软盘、光盘、致密盘只读存储器(CD-ROM)、可重写致密盘(CD-RW)和磁光盘,诸如只读存储器(ROM)的半导体器件,诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROMs),磁或者光卡,或者适于存储电子指令的任何其它类型的介质。
尽管本发明以有限数量的实施方式予以描述,但本领域的技术人员将会从其中意识到许多改变和变型。附加的权利要求旨在覆盖所有这样的改变和变型,只要其落在本发明的真实精神和范围内。
Claims (18)
1.一种将输入/输出(I/O)虚拟化操作卸载至处理器的方法,包括:
从与输入/输出(I/O)集线器相耦合的I/O设备接收对于所述I/O集线器中的直接存储器存取(DMA)操作的请求,所述请求包括与所述DMA操作相关联的设备虚拟地址(DVA);
在所述I/O集线器中确定是否在所述I/O集线器的第一转换引擎中执行将所述DVA转换至物理地址(PA)的地址转换;
当所述I/O集线器确定不执行所述地址转换时将所述请求连同所述DVA一起从所述I/O集线器发送到与所述I/O集线器相耦合的处理器,并且在所述处理器的第二转换引擎中执行所述地址转换,其中卸载转换访问功能是以每映射和访问请求为基础的;以及
当所述I/O集线器确定执行所述地址转换时在所述I/O集线器的所述第一转换引擎中执行所述地址转换,并且将所述请求连同所述PA一起从所述I/O集线器发送到所述处理器。
2.如权利要求1所述的方法,其特征在于,还包括基于所述I/O集线器和所述处理器之间互连的带宽来确定是否在所述I/O集线器中执行所述地址转换。
3.如权利要求1所述的方法,其特征在于,所述第二转换引擎包括用来存储DVA到PA转换的缓冲器,所述缓冲器与所述处理器的转换后备缓冲器分开。
4.如权利要求1所述的方法,其特征在于,还包括如果所述I/O设备包括硬件转换机制,则在所述I/O设备中执行所述地址转换,否则就把所述请求连同所述DVA一起从所述I/O设备发送到所述I/O集线器。
5.如权利要求1所述的方法,其特征在于,还包括基于所述请求的结点标识符将所述请求从所述I/O集线器发送到所述处理器,其中所述结点标识符对应于所述处理器,所述处理器与对应于所述PA的存储器的一部分相关联。
6.如权利要求1所述的方法,其特征在于,还包括通过将所述请求连同所述DVA一起从所述I/O集线器发送到所述处理器来减少所述I/O集线器和所述处理器之间点对点互连上的带宽,其中不将对应于所述DVA的地址转换信息从所述处理器发送到所述I/O集线器以藉此减少所述带宽。
7.一种将输入/输出(I/O)虚拟化操作卸载至处理器的装置,包括:
处理器,包括:
a)用于执行数据操作的至少一个核;
b)包括转换后备缓冲器的高速缓冲存储器;
c)用与所述处理器相耦合的系统存储器的一部分来处理存储器事务的存储控制器;以及
d)转换引擎,所述转换引擎接收包括设备虚拟地址(DVA)的直接存储器存取(DMA)操作,并且将所述DVA转换到对应于所述系统存储器的所述部分中某位置的物理地址(PA),其中所述DMA操作从与所述处理器耦合的输入/输出(I/O)设备启动,其中所述转换引擎用于监听耦合至所述处理器的I/O集线器的第二转换引擎的编程事务,所述编程用于用物理存储器范围和相应的设备虚拟地址为所述第二转换引擎编程。
8.如权利要求7所述的装置,其特征在于,所述I/O设备是虚拟机的直接I/O设备。
9.如权利要求7所述的装置,其特征在于,所述转换引擎用于监听来自与所述处理器相耦合的I/O集线器的转换引擎的更新,并且基于所述更新来更新所述转换引擎。
10.如权利要求9所述的装置,其特征在于,还包括耦合在所述处理器和所述I/O设备之间的所述I/O集线器,所述I/O集线器包括执行DVA到PA转换的第二转换引擎,以减少耦合所述I/O集线器与所述处理器的互连上的带宽,其中所述I/O集线器用于将所述DMA操作连同所述DVA一起发送到所述处理器。
11.如权利要求10所述的装置,其特征在于,如果所述互连上的所述带宽低于阈限量,则所述第二转换引擎将执行所述DVA到PA转换。
12.一种将输入/输出(I/O)虚拟化操作卸载至处理器的系统,包括:
第一处理器,所述第一处理器包括用于执行数据操作的至少一个核、包括转换后备缓冲器的高速缓冲存储器,以及第一转换引擎,所述第一转换引擎接收对于包括设备虚拟地址(DVA)的直接存储器存取(DMA)操作的请求,将所述DVA转换到位于与所述第一处理器相耦合的存储器第一部分的物理地址(PA),其中所述DMA操作从与所述第一处理器相耦合的输入/输出(I/O)设备启动;
第二处理器,所述第二处理器包括用于执行数据操作的至少一个第二核、包括第二转换后备缓冲器的第二高速缓冲存储器、以及第二转换引擎,所述第二转换引擎接收包括DVA的DMA操作,将所述DVA转换到位于与所述第二处理器相耦合的存储器第二部分的PA;以及
耦合在所述I/O设备和所述第一处理器及所述第二处理器之间且包括集线器转换引擎的集线器,其中所述集线器基于所述DVA将所述DMA操作引导至所述第一处理器或者所述第二处理器,其中所述集线器至少部分基于所述集线器转换引擎的负载确定是否在所述集线器转换引擎中执行将所述DVA转换到所述PA的地址转换,并且如果所述集线器确定不执行所述地址转换则将所述请求连同所述DVA一起发送至所引导的第一或第二处理器或者如果所述集线器确定执行所述地址转换则在所述集线器转换引擎中执行所述地址转换。
13.如权利要求12所述的系统,其特征在于,所述集线器还基于所述集线器和所述第一处理器之间互连的带宽来确定是否在所述集线器中执行所述地址转换。
14.如权利要求12所述的系统,其特征在于,所述第一转换引擎监听与用于所述I/O设备的DVA范围的编程相关联的信号,并且基于监听信号来更新所述第一转换引擎的缓冲器中的项。
15.如权利要求12所述的系统,其特征在于,所述第一转换引擎和所述集线器转换引擎均包括对应于与所述第一处理器耦合的所述存储器第一部分中各位置的第一组DVA到PA转换。
16.如权利要求15所述的系统,其特征在于,当用于所述DMA操作的所述DVA到PA转换未在所述第一组DVA到PA转换中呈现时,所述第一转换引擎就阻止在所述第一处理器和所述集线器之间的所述互连上的多个存储器事务。
17.如权利要求16所述的系统,其特征在于,所述集线器将所述DMA操作请求从第一协议转换到第二协议,其中所述集线器与所述I/O设备以第一协议通信,所述集线器与所述第一处理器以第二协议通信,而不将所述DVA转换到所述PA。
18.如权利要求16所述的系统,其特征在于,所述第一处理器将所述DMA操作提交给所述存储器第一部分,而不向所述集线器发布事务。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/888,029 US8250254B2 (en) | 2007-07-31 | 2007-07-31 | Offloading input/output (I/O) virtualization operations to a processor |
US11/888,029 | 2007-07-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101359315A CN101359315A (zh) | 2009-02-04 |
CN101359315B true CN101359315B (zh) | 2014-09-03 |
Family
ID=40305248
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810144274.2A Expired - Fee Related CN101359315B (zh) | 2007-07-31 | 2008-07-30 | 将输入/输出(i/o)虚拟化操作卸载至处理器的方法及装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8250254B2 (zh) |
JP (1) | JP4805314B2 (zh) |
CN (1) | CN101359315B (zh) |
DE (1) | DE112008002019T5 (zh) |
TW (1) | TWI386811B (zh) |
WO (1) | WO2009018329A2 (zh) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8473567B2 (en) * | 2010-03-29 | 2013-06-25 | Intel Corporation | Generating a packet including multiple operation codes |
US8352656B2 (en) | 2010-04-08 | 2013-01-08 | Intel Corporation | Handling atomic operations for a non-coherent device |
US8316169B2 (en) | 2010-04-12 | 2012-11-20 | International Business Machines Corporation | Physical to hierarchical bus translation |
US8364879B2 (en) | 2010-04-12 | 2013-01-29 | International Business Machines Corporation | Hierarchical to physical memory mapped input/output translation |
US8606984B2 (en) | 2010-04-12 | 2013-12-10 | International Busines Machines Corporation | Hierarchical to physical bus translation |
US8327055B2 (en) | 2010-04-12 | 2012-12-04 | International Business Machines Corporation | Translating a requester identifier to a chip identifier |
US8429323B2 (en) | 2010-05-05 | 2013-04-23 | International Business Machines Corporation | Memory mapped input/output bus address range translation |
US8650349B2 (en) | 2010-05-26 | 2014-02-11 | International Business Machines Corporation | Memory mapped input/output bus address range translation for virtual bridges |
US8635430B2 (en) | 2010-06-23 | 2014-01-21 | International Business Machines Corporation | Translation of input/output addresses to memory addresses |
US8615645B2 (en) | 2010-06-23 | 2013-12-24 | International Business Machines Corporation | Controlling the selectively setting of operational parameters for an adapter |
US9195623B2 (en) | 2010-06-23 | 2015-11-24 | International Business Machines Corporation | Multiple address spaces per adapter with address translation |
US9342352B2 (en) | 2010-06-23 | 2016-05-17 | International Business Machines Corporation | Guest access to address spaces of adapter |
US9213661B2 (en) | 2010-06-23 | 2015-12-15 | International Business Machines Corporation | Enable/disable adapters of a computing environment |
US8271710B2 (en) | 2010-06-24 | 2012-09-18 | International Business Machines Corporation | Moving ownership of a device between compute elements |
US8949499B2 (en) | 2010-06-24 | 2015-02-03 | International Business Machines Corporation | Using a PCI standard hot plug controller to modify the hierarchy of a distributed switch |
US8656137B2 (en) | 2011-09-01 | 2014-02-18 | Qualcomm Incorporated | Computer system with processor local coherency for virtualized input/output |
US10387324B2 (en) | 2011-12-08 | 2019-08-20 | Intel Corporation | Method, apparatus, and system for efficiently handling multiple virtual address mappings during transactional execution canceling the transactional execution upon conflict between physical addresses of transactional accesses within the transactional execution |
WO2013105978A1 (en) * | 2012-01-13 | 2013-07-18 | Intel Corporation | Allocation of flow control credits for high performance devices |
US9936329B2 (en) | 2012-03-09 | 2018-04-03 | Nokia Technologies Oy | Methods, apparatuses, and computer program products for operational routing between proximate devices |
JP6282434B2 (ja) * | 2012-10-22 | 2018-02-21 | キヤノンイメージングシステムズ株式会社 | デバイス制御装置、その制御方法、及びデバイス制御システム |
US20140208072A1 (en) * | 2013-01-18 | 2014-07-24 | Nec Laboratories America, Inc. | User-level manager to handle multi-processing on many-core coprocessor-based systems |
US10437591B2 (en) | 2013-02-26 | 2019-10-08 | Qualcomm Incorporated | Executing an operating system on processors having different instruction set architectures |
US9396011B2 (en) * | 2013-03-12 | 2016-07-19 | Qualcomm Incorporated | Algorithm and apparatus to deploy virtual machine monitor on demand |
US9396012B2 (en) | 2013-03-14 | 2016-07-19 | Qualcomm Incorporated | Systems and methods of using a hypervisor with guest operating systems and virtual processors |
US9606818B2 (en) | 2013-03-14 | 2017-03-28 | Qualcomm Incorporated | Systems and methods of executing multiple hypervisors using multiple sets of processors |
US10114756B2 (en) | 2013-03-14 | 2018-10-30 | Qualcomm Incorporated | Externally programmable memory management unit |
WO2015033384A1 (ja) | 2013-09-03 | 2015-03-12 | 株式会社アキブシステムズ | I/oデバイスの仮想化のためのコンピュータシステム及びその運用方法並びにhub装置 |
CN106502721B (zh) * | 2016-09-26 | 2019-11-15 | 华为技术有限公司 | 一种命令卸载方法、装置及物理机 |
WO2018198325A1 (ja) * | 2017-04-28 | 2018-11-01 | 株式会社日立製作所 | ストレージシステム |
US10706493B2 (en) * | 2017-12-29 | 2020-07-07 | Intel Corporation | Apparatus and method for display virtualization using mapping between virtual and physical display planes |
JP7144671B2 (ja) * | 2018-03-14 | 2022-09-30 | 富士通株式会社 | ネットワークインタフェース装置、それを有するノードを複数有する情報処理装置及び情報処理装置のノード間送信データ送信方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070168643A1 (en) * | 2006-01-17 | 2007-07-19 | Hummel Mark D | DMA Address Translation in an IOMMU |
US20070168644A1 (en) * | 2006-01-17 | 2007-07-19 | Hummel Mark D | Using an IOMMU to Create Memory Archetypes |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5998367A (ja) * | 1982-11-26 | 1984-06-06 | Nec Corp | アドレス変換バツフア方式 |
JPH0644251B2 (ja) | 1986-08-28 | 1994-06-08 | 日本電気株式会社 | デ−タ処理装置 |
JPH01193961A (ja) * | 1988-01-29 | 1989-08-03 | Hitachi Ltd | アドレス変換装置 |
JPH04308953A (ja) | 1991-04-05 | 1992-10-30 | Kyocera Corp | 仮想アドレス計算機装置 |
US5294567A (en) | 1993-01-08 | 1994-03-15 | E. I. Du Pont De Nemours And Company | Method for forming via holes in multilayer circuits |
JP3296240B2 (ja) * | 1997-03-28 | 2002-06-24 | 日本電気株式会社 | バス接続装置 |
JPH1124995A (ja) * | 1997-07-03 | 1999-01-29 | Nec Eng Ltd | アドレス変換用tlbアクセス制御方式 |
US6009488A (en) * | 1997-11-07 | 1999-12-28 | Microlinc, Llc | Computer having packet-based interconnect channel |
US6507862B1 (en) * | 1999-05-11 | 2003-01-14 | Sun Microsystems, Inc. | Switching method in a multi-threaded processor |
US20020069341A1 (en) * | 2000-08-21 | 2002-06-06 | Gerard Chauvel | Multilevel cache architecture and data transfer |
GB2367646B (en) * | 2000-10-03 | 2002-11-20 | Sun Microsystems Inc | Resource access control |
TWI230863B (en) | 2001-06-13 | 2005-04-11 | Corrent Corp | Input/output system and method for transferring control and data, and arbiter for coordinating data communication |
US6877088B2 (en) * | 2001-08-08 | 2005-04-05 | Sun Microsystems, Inc. | Methods and apparatus for controlling speculative execution of instructions based on a multiaccess memory condition |
JP4116346B2 (ja) | 2002-07-05 | 2008-07-09 | 富士通株式会社 | 演算処理装置及びそのアドレス変換方法 |
US6976117B2 (en) * | 2002-08-13 | 2005-12-13 | Intel Corporation | Snoopy virtual level 1 cache tag |
US7519791B2 (en) * | 2004-02-06 | 2009-04-14 | Intel Corporation | Address conversion technique in a context switching environment |
US7415577B2 (en) * | 2004-03-10 | 2008-08-19 | Intel Corporation | Method and apparatus to write back data |
US7496713B1 (en) * | 2004-07-21 | 2009-02-24 | Sun Microsystems, Inc. | Method and apparatus for maintaining cache coherency in a memory system with shared only cache memories |
US7586936B2 (en) * | 2005-04-01 | 2009-09-08 | International Business Machines Corporation | Host Ethernet adapter for networking offload in server environment |
US7496730B2 (en) * | 2005-04-15 | 2009-02-24 | Microsoft Corporation | System and method for reducing the number of translation buffer invalidates an operating system needs to issue |
US7487327B1 (en) * | 2005-06-01 | 2009-02-03 | Sun Microsystems, Inc. | Processor and method for device-specific memory address translation |
US20060288130A1 (en) * | 2005-06-21 | 2006-12-21 | Rajesh Madukkarumukumana | Address window support for direct memory access translation |
US7613898B2 (en) * | 2006-01-17 | 2009-11-03 | Globalfoundries Inc. | Virtualizing an IOMMU |
US7548999B2 (en) * | 2006-01-17 | 2009-06-16 | Advanced Micro Devices, Inc. | Chained hybrid input/output memory management unit |
US7739474B2 (en) * | 2006-02-07 | 2010-06-15 | International Business Machines Corporation | Method and system for unifying memory access for CPU and IO operations |
US8650342B2 (en) * | 2006-10-23 | 2014-02-11 | Dell Products L.P. | System and method for distributed address translation in virtualized information handling systems |
-
2007
- 2007-07-31 US US11/888,029 patent/US8250254B2/en not_active Expired - Fee Related
-
2008
- 2008-07-11 TW TW097126344A patent/TWI386811B/zh active
- 2008-07-14 JP JP2008182479A patent/JP4805314B2/ja not_active Expired - Fee Related
- 2008-07-30 CN CN200810144274.2A patent/CN101359315B/zh not_active Expired - Fee Related
- 2008-07-30 DE DE112008002019T patent/DE112008002019T5/de not_active Withdrawn
- 2008-07-30 WO PCT/US2008/071573 patent/WO2009018329A2/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070168643A1 (en) * | 2006-01-17 | 2007-07-19 | Hummel Mark D | DMA Address Translation in an IOMMU |
US20070168644A1 (en) * | 2006-01-17 | 2007-07-19 | Hummel Mark D | Using an IOMMU to Create Memory Archetypes |
Also Published As
Publication number | Publication date |
---|---|
US8250254B2 (en) | 2012-08-21 |
US20090037614A1 (en) | 2009-02-05 |
JP4805314B2 (ja) | 2011-11-02 |
WO2009018329A2 (en) | 2009-02-05 |
CN101359315A (zh) | 2009-02-04 |
WO2009018329A3 (en) | 2009-03-12 |
TW200912655A (en) | 2009-03-16 |
TWI386811B (zh) | 2013-02-21 |
DE112008002019T5 (de) | 2010-06-10 |
JP2009037610A (ja) | 2009-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101359315B (zh) | 将输入/输出(i/o)虚拟化操作卸载至处理器的方法及装置 | |
US8627040B2 (en) | Processor-bus-connected flash storage paging device using a virtual memory mapping table and page faults | |
US9064330B2 (en) | Shared virtual memory between a host and discrete graphics device in a computing system | |
US9280290B2 (en) | Method for steering DMA write requests to cache memory | |
US5682512A (en) | Use of deferred bus access for address translation in a shared memory clustered computer system | |
US7756943B1 (en) | Efficient data transfer between computers in a virtual NUMA system using RDMA | |
US8549231B2 (en) | Performing high granularity prefetch from remote memory into a cache on a device without change in address | |
US8312198B2 (en) | Technique for communicating interrupts in a computer system | |
JP5385272B2 (ja) | コンピュータシステムにおいて他のプロセッサにシステム管理割り込みをブロードキャストするためのメカニズム | |
US20050114559A1 (en) | Method for efficiently processing DMA transactions | |
CN102023932A (zh) | 为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持 | |
EP3335124B1 (en) | Register files for i/o packet compression | |
JP2006040275A (ja) | パーティション化可能コンピュータにおけるパーティションへの資源割り振り | |
CN102209104A (zh) | 减小通信协议中的分组大小 | |
US8151081B2 (en) | Method, system and apparatus for memory address mapping for sub-socket partitioning | |
JP2016513846A (ja) | ネットワークを介したメモリー共有 | |
US7103747B2 (en) | Memory table and memory manager for use in managing memory | |
US7308557B2 (en) | Method and apparatus for invalidating entries within a translation control entry (TCE) cache | |
US7882327B2 (en) | Communicating between partitions in a statically partitioned multiprocessing system | |
US20060123196A1 (en) | System, method and computer program product for application-level cache-mapping awareness and reallocation requests | |
US6789168B2 (en) | Embedded DRAM cache | |
JP2001134486A (ja) | マイクロプロセッサおよび記憶装置 | |
JPH10326223A (ja) | 複数処理装置アクセスシステム | |
US11281612B2 (en) | Switch-based inter-device notational data movement system | |
US20240231615A1 (en) | Apparatus and method for sanitizing a shared memory device or a memory expander |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140903 Termination date: 20210730 |
|
CF01 | Termination of patent right due to non-payment of annual fee |