CN101398787A - 虚拟化环境中地址转换缓存操作和i/o高速缓存性能的改善 - Google Patents
虚拟化环境中地址转换缓存操作和i/o高速缓存性能的改善 Download PDFInfo
- Publication number
- CN101398787A CN101398787A CN200810161925.9A CN200810161925A CN101398787A CN 101398787 A CN101398787 A CN 101398787A CN 200810161925 A CN200810161925 A CN 200810161925A CN 101398787 A CN101398787 A CN 101398787A
- Authority
- CN
- China
- Prior art keywords
- speed cache
- memory access
- access request
- address
- cache
- 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.)
- Pending
Links
- 238000013519 translation Methods 0.000 title claims abstract description 15
- 238000000034 method Methods 0.000 claims abstract description 18
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 230000002093 peripheral effect Effects 0.000 claims description 3
- 230000004044 response Effects 0.000 claims 5
- 230000000712 assembly Effects 0.000 description 5
- 238000000429 assembly Methods 0.000 description 5
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 229910052710 silicon Inorganic materials 0.000 description 4
- 239000010703 silicon Substances 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 201000006549 dyspepsia Diseases 0.000 description 1
- 238000004146 energy storage Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- 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
-
- 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/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
-
- 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/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
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)
- Executing Machine-Instructions (AREA)
Abstract
说明了涉及改善在虚拟化环境中的地址转换缓存操作和/或输入/输出(I/O)高速缓存的性能的方法和装置。在一个实施例中,可以采用端点设备所提供的提示来更新I/O高速缓存中存储的信息。在一个实施例中,这种信息可以用来实现更高效的替换策略。还公开了其它实施例。
Description
技术领域
本文公开的内容总体上涉及电子领域。更具体地,本发明的实施例涉及改善虚拟化环境中的地址转换缓存操作(address translation caching)和/或输入/输出(I/O)高速缓存的性能。
背景技术
I/O虚拟化是一种正在发展的技术,用以保证I/O设备在虚拟化环境中正常工作。虚拟化环境通常是这样一种环境,其中多于一个操作系统(OS)可以同时是活动的。I/O虚拟化的一些实现可以采用硬件结构以改善性能。然而,这样的实现方式需要相对高的门数来实现,而这又使成本更高和/或实现起来更复杂。
附图说明
参考附图提供了详细的说明。在图中,参考号最左边的数字标识其中该参考号首次出现的那幅图。在不同的图中使用相同的参考号指示相似或相同的项目。
图1-3示出了计算系统的实施例的方框图,所述计算系统可用来实现这里所讨论的各种实施例。
图4示出了根据一实施例的方法的流程图。
具体实施方式
在下述说明中,为了完全理解各个实施例,阐述了许多特定细节。然而,可以实现一些实施例而不需要这些特定细节。在另外一些实例中,并未详细说明公知的方法、过程、组件和电路,以免使具体的实施例难以理解。本发明的实施例的各个方面可通过各种方式实现,例如,半导体集成电路(“硬件”)、组成一个或多个程序的计算机可读指令(“软件”)、或硬件和软件的一些组合。为了便于说明本公开的内容,提及“逻辑”时,表示的是硬件、软件或其一些组合。
这里所讨论的一些实施例可以改善虚拟化环境中的地址转换缓存操作(例如,定向I/O(VTd)地址转换的虚拟化)和/或I/O高速缓存的性能。更具体地,一些虚拟化服务可以在硬件结构上实现,所述硬件结构用来将客户机物理地址(guest physical address,GPA)转换成主机物理地址(host physicaladdress,HPA)。因此,这样的结构可以提供缓存支持,例如,以I/O地址转换后备缓冲器(I/O look-aside-buffer,IOTLB)的形式来对从GPA到HPA的转换进行缓存。在一些实施例中,这些缓存结构可为以实现同一地址转换为目的的多个请求提供更低的延迟。此外,这些技术中的一些可以用于各种类型的计算环境中,例如参考图1-4所讨论的。
更特别地,图1示出了根据发明一实施例的计算系统100的方框图。系统100可以包括一个或多个代理102-1至102-M(这里被统称为“多个代理102”或更一般地“代理102”)。在一实施例中,代理102可以是计算系统(例如参考图2-4所讨论的计算系统)的组件。
如图1所示,多个代理102可以通过网络结构104进行通信。在一个实施例中,网络结构104可以包括允许各个代理(例如,计算设备)传送数据的计算机网络。在一实施例中,网络结构104可以包括一个或多个通过串行(例如,点对点)链路和/或共享通信网络进行通信的互连(或互连网络)。例如,一些实施例可以便于链路上的组件调试或验证,所述链路允许与完全缓冲双列直插存储模块(FBD)进行通信,例如,这里FBD链路是将存储模块耦合到主控制器设备(例如,处理器或存储器中心(hub))的串行链路。可以从FBD通道主机发送调试信息,使得可以通过通道业务(traffic)跟踪捕捉工具(例如,一个或多个逻辑分析器)来沿通道观察调试信息。
在一个实施例中,系统100可以支持包括物理层、链路层、路由层、传输层和/或协议层的分层协议方案。结构104进一步可以有助于针对点对点网络或共享网络从一种协议(例如,缓存处理器(caching processor)或可进行缓存的存储器控制器(caching aware memory controller))到另一种协议的数据传输(例如,以分组形式)。在一些实施例中,网络104还可以提供遵守一个或多个高速缓存一致性协议的通信。
此外,如图1的箭头方向所示,代理102可以通过网络结构104发送和/或接收数据。因此,一些代理可以采用单向链路来进行通信,而其它的代理可以采用双向链路来进行通信。例如,一个或多个代理(例如,代理102-M)可以发送数据(例如,通过单向链路106),其它代理(例如,代理102-2)可以接收数据(例如,通过单向链路108),而某些代理(例如,代理102-1)既可发送又可接收数据(例如,通过双向链路110)。
图2示出了根据一实施例的计算系统200的各个部分的方框图。在一个实施例中,系统200的各个组件可以在参考图1所讨论的代理102-1和/或102-M中的一个代理内实现。这里,将参考图4讨论关于计算系统200一些操作的进一步的细节。
系统200可以包括一个或多个处理器202-1至202-N(这里被统称为“多个处理器202”或更一般地“处理器202”)。处理器202-1至202-N中的每一个可以包括各种组件,例如私有的或共享的高速缓存、执行单元、一个或多个核心(core)等。此外,每个处理器202可以对存储器204(例如,存储器204-1至204-N)进行访问。系统200还可以包括可由系统200的各种组件共享的可选的系统存储器206,所述各种组件包括例如一个或多个处理器202、非核心部分(uncore)或芯片组(CS)208的组件、或耦合到非核心部分208的组件等。一个或多个存储器204和/或206可以存储一个或多个操作系统。因此,在一些实施例中,系统200能执行多个操作系统(例如,同时)。
如图2所示,非核心部分208可以包括各种组件,例如,根联合体(rootcomplex,RC)高速缓存210(例如,其可以由诸如系统200这样的计算系统的各个组件所共享)。在一些实施例中,RC高速缓存210可以存在于芯片组或非核心部分(例如,CS/非核心部分208)的存储器控制中心(MCH)和/或图形MCH(GMCH)部分中。通过数据通路212(可以包括可选的核心互连214,例如,以有助于处理器202的一个或多个核心和系统200的其它组件之间的通信),RC高速缓存210可以与其它组件进行通信。系统200可以进一步包括预取逻辑216,例如,用以从各个位置(例如,一个或多个存储器204、系统存储器206、其它存储设备(包括例如易失性或非易失性存储器件)等)中预取数据(包括指令或微操作)放入IOTLB 220(例如,通过虚拟化或转换逻辑222-1到222-P(这里被统称为“多个逻辑222”或更一般地“逻辑222”))。
如图2所示,在至少一个实施例中,数据通路212可以耦合到一个或多个I/O设备。可以采用任何类型的I/O设备。为了示意的目的,在图2示出的实施例中,I/O设备可以包括一个或多个设备224-1至224-P(这里被统称为“端点设备224”或更一般地“端点224”)。在一实施例中,端点设备224可以是外围组件互连(PCI)设备。
例如,根据可从美国俄勒冈州波特兰市的PCI特别兴趣小组得到的PCI局部总线规范(修订版3.0,2004年3月9日)(下文中被称为“PCI总线”),端点设备224可以与CS/非核心部分208进行通信。可替代地,可以采用从上述美国俄勒冈州波特兰市的PCI特别兴趣小组得到的PCI-X规范(修订版3.0a,2003年4月23日)(下文中被称为“PCI-X总线”)和/或快速PCI(PCIExpress,PCIe)规范(PCIe规范,修订版2.0,2006年10月)。此外,在本发明的各个实施例中,耦合到CS/非核心部分208的其它外围设备可以包括集成驱动电子设备(IDE)或小型计算机系统接口(SCSI)硬盘驱动器、通用串行总线(USB)设备、键盘、鼠标、并行端口、串行端口、软盘驱动器、数字输出支持(例如,数字视频接口(DVI))等。
如图2所示,通过根端口226-1至226-P(这里被统称为“多个端口226”或更一般地“端口226”),端点设备224可以与系统200的其它组件(诸如逻辑222)进行通信。在一实施例中,逻辑222可以进行针对虚拟化环境的地址转换操作,例如通过访问IOTLB 220来将虚拟地址转换成物理地址。物理地址可以与系统存储器206中的单元(location)(例如,项(entry))相对应。另外,逻辑222可以进行其它操作,例如参考图3和4所讨论的那些操作,所述操作可能涉及对耦合到系统200和/或300的存储器件(例如,系统存储器206)中的项的GPA和HPA进行转换。根据PCIe规范,逻辑222还可以是根联合体。
此外,处理器202可以是任何类型的处理器,例如,通用处理器、网络处理器(其可以处理计算机网络250上传送的数据)等(包括精简指令集计算机(RISC)处理器、或复杂指令集计算机(CISC)处理器)。此外,处理器202可以具有单核心或多核心设计。具有多核心设计的处理器202可以将不同类型的处理器核心集成到同一个集成电路(IC)管芯上。具有多核心设计的处理器202也可以被实现为对称式或非对称式多处理器。此外,如图2所示,在一实施例中,至少一个或多个端点设备224可以耦合到网络250。
此外,处理器202可以包括一个或多个高速缓存(未示出),在各种实施例中所述高速缓存可以是私有的和/或共享的。通常,高速缓存存储与在其它地方存储的、或早先计算的原始数据相对应的数据。为减少存储器访问延迟,一旦数据被存储到高速缓存中,就可以在将来使用时,访问被缓存的副本而不是重新读取或重新计算原始数据。这里所讨论的高速缓存(包括例如,RC高速缓存210、IOTLB 220、其组合等)可以是任何类型的高速缓存,例如一级(L1)高速缓存、二级(L2)高速缓存、三级(L3)高速缓存、中间级高速缓存、最末级高速缓存(LLC)、或其组合,用来存储由系统200的一个或多个组件所使用的电子数据(例如,包括指令)。
在一实施例中,系统200和/或300还可以包括其它设备,例如以下中的一个或多个:显示设备(例如,耦合到CS/非核心部分208以显示图像)、音频设备(耦合到CS/非核心部分208以处理音频信号)等。在一些实施例中,这样的设备可以被实现为端点设备224(例如,可通过根端口226与CS/非核心部分208进行通信)。
图3示出了根据一实施例的计算系统300的各个部分的方框图。在一个实施例中,系统300的各个组件可以在参考图1所讨论的代理102-1和/或102-M中的一个代理内实现。这里,将参考图4讨论关于计算系统300的一些操作的进一步的细节。
如图3所示,系统300可以包括以下部件中的一个或多个:处理器202、存储器204、系统存储器206、RC高速缓存210、数据通路212、可选的核心互连214、预取逻辑216、IOTLB 220、逻辑222、端点设备224、和根端口226。此外,在一个实施例中,如所示出的那样,可以将RC高速缓存210和IOTLB 220组合成单个高速缓存。
图4示出了根据一实施例的方法400的流程图,该方法用于更新I/O高速缓存中所存储的信息,以改善虚拟化环境中的地址转换缓存操作和/或I/O高速缓存的性能。在一个实施例中,可以采用参考图1-3和5所讨论的各个组件来执行参考图4所讨论的一个或多个操作。
参考图1-4,在操作402处,方法400以接收存储器访问请求开始。例如,存储器访问请求(例如,读或写访问)可以由一个端点224产生,并在操作402处经过一个端口226由相应的虚拟化逻辑222接收。在操作404处,可以确定与该存储器访问请求相对应的项是否存在于高速缓存中。在一实施例中,在操作404处,虚拟化逻辑222可以访问IOTLB 220、RC高速缓存210和/或其组合(例如,图3所示的)。如果相应的项不存在,则在操作406处,可以将数据读取到高速缓存中(例如,通过虚拟化逻辑222和/或预取逻辑216)。
在一实施例中,在操作402之前,可能已通过逻辑216将相应的数据预取到高速缓存中。在一个实施例中,通过一个端点设备224发出预取请求,以提前获取并保持目标地址单元的一致副本。这些预取请求还将使IOTLB 220、RC高速缓存210和/或其组合做好准备;这些项将被分配并进行缓存,直到设备发出请求。需求请求ACH设置将确定IOTLB 220、RC高速缓存210和/或其组合中的项是需要被保持还是要加上标签以供替换。
在操作408处,可以确定(例如,通过虚拟化逻辑222)该存储器访问请求是否包括提示(例如,该存储器访问请求的一个或多个位)。如果不存在提示,则在操作410处,可以例如通过参考IOTLB 220、RC高速缓存210和/或其组合内的项对HPA和GPA地址和/或物理/虚拟地址进行转换,来处理该存储器访问请求。在一个实施例中,可以基于I/O设备业务提示(这里还可以被称为访问控制提示(ACH)),来改善虚拟化环境中的地址转换缓存操作和/或I/O高速缓存的性能。例如,I/O设备(例如,一个端点设备224)可以在存储器请求中提供ACH(例如,经过PCIe),以指示该设备是否将再次访问相同地址。相应地,操作412可以确定该提示是否指示将来对相同地址的访问。这种信息可以存储在与一个高速缓存项(例如,IOTLB 220、RC高速缓存210和/或其组合内的一个项)相对应的一个或多个位中,该一个或多个位将会在高速缓存行替换策略中很有用,例如,未设置预期的重用位(或取决于具体实现而被清零)的那些被缓存的转换将是供替换的候选者。在一个实施例中,逻辑222可以进行操作412。如果没有指示将来访问,则方法400继续进行操作410。否则,可在操作414处更新相应项的信息(例如,可通过相应的逻辑222来更新IOTLB 220、RC高速缓存210和/或其组合内相应项的一个或多个位)。在操作414之后,方法400在操作410处继续进行。
在一些实施例中,将IOTLB 220和RC高速缓存210结构合并成一个组合的IOTLB高速缓存和RC高速缓存结构(这里可以被称为I/O高速缓存),这样做可以提高性能(例如,改进I/O事务处理的延迟)和/或更有效地利用硅资源(例如,减少门的总数)。在一实施例中,处理器(例如,一个或多个处理器202)发出的探查指令(snoop)将使用物理地址来在RC高速缓存210(或组合的I/O高速缓存)中进行查找,I/O访问将基于GPA来在RC高速缓存210(或组合的I/O高速缓存)中查找地址。
在一些实施例中,各种高速缓存替换策略可以应用到RC高速缓存210、IOTLB 220和/或其组合。例如,一些替换策略可以实现随机的替换策略,而其它一些可以实现最近最少使用(LRU)策略。
因此,在一些实施例中,可以减小地址转换延迟和/或与为I/O请求提供服务相关联的延迟。此外,用于RC高速缓存210和IOTLB 220的存储(例如,地址或数据)结构的合并(例如,成为单个I/O高速缓存)可以产生改进的硅效率(silicon efficiency)和更佳的性能或硅面积(silicon-area)(例如,通过减少门数)。
在本发明的各个实施例中,这里例如参考图1-4所讨论的操作可以实现为硬件(例如,电路)、软件、固件、微代码、或其组合,其可作为计算机程序产品来提供,该计算机程序产品例如包括机器可读或计算机可读的介质,其上存储有用于对计算机进行编程以执行这里所讨论的处理过程的指令(或软件程序)。术语“逻辑”还可以示例性地包括软件、硬件、或软件和硬件的组合。机器可读介质可以包括存储设备(例如,这里所讨论的那些)。
例如,这里所讨论的存储设备可以包括易失性和/或非易失性存储器(或存储装置)。非易失性存储器可以包括下列中一个或多个:只读存储器(ROM)、可编程ROM(PROM)、可擦除PROM(EPROM)、电EPROM(EEPROM)、硬盘驱动器、软盘、光盘ROM(CD-ROM)、数字通用光盘(DVD)、闪速存储器、磁光盘、或其它类型的能存储电子数据(例如,包括指令)的非易失性机器可读介质。易失性存储装置(或存储器)可以包括例如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)等的设备。
另外,这种计算机可读介质可以作为计算机软件产品来下载,其中,可以经通信链路(例如,总线、调制解调器、或网络连接)以包含在载波或其它传播介质中的数据信号的方式,将程序从远程计算机(例如,服务器)传送到请求方计算机(例如,客户端)。
说明书中,提及“一个实施例”或“一实施例”时,表示结合该实施例而说明的特定特征、结构、或特性可以包括在至少一个实现中。在说明书中各处出现的短语“在一个实施例中”可以或可以不是都指代相同的实施例。
此外,在说明书和权利要求书中,可以使用术语“耦合的”和“连接的”以及其派生词。在本发明的一些实施例中,“连接的”可以用来指示两个或更多元件彼此直接物理或电接触。“耦合的”可以表示两个或更多元件直接物理或电接触。然而,“耦合的”还可表示两个或更多元件可以彼此并不直接接触,但仍彼此协作或交互。
因此,尽管以特定于结构特征和/或方法行为的语言说明了本发明的实施例,但是应当理解,所要求保护的主题可以不受限于所说明的特定特征或行为。所公开的特定特征和行为而是作为实现所要求保护的主题的示例形式。
Claims (20)
1、一种装置,包括:
高速缓存,用于存储一个或多个项,其中每个项与在客户机物理地址(GPA)和主机物理地址(HPA)之间的输入/输出(I/O)存储器访问请求相对应;以及
第一逻辑,用于从端点设备接收第一I/O存储器访问请求,并确定所述第一I/O存储器访问请求是否包括与一个地址相关联的将来访问提示,
其中,所述第一逻辑响应于确定所述第一I/O存储器访问请求包括所述提示,更新相应的高速缓存项中的一个或多个位。
2、如权利要求1所述的装置,其中,所述端点设备产生所述存储器访问请求。
3、如权利要求1所述的装置,进一步包括:预取逻辑,用于响应于所述端点设备发出的请求而将数据预取到所述高速缓存中。
4、如权利要求1所述的装置,其中,所述端点设备包括快速外围组件互连(PCI)设备。
5、如权利要求1所述的装置,其中,所述将来访问提示指示将来会对所述地址进行访问。
6、如权利要求1所述的装置,其中,所述第一逻辑、一个或多个处理器内核、或所述高速缓存中的一个或多个在同一个集成电路管芯上。
7、如权利要求1所述的装置,其中,所述高速缓存包括根联合体高速缓存、I/O地址转换后备缓冲器(IOTLB)或其组合中的一个或多个。
8、如权利要求1所述的装置,其中,所述高速缓存是共享的高速缓存或私有的高速缓存。
9、如权利要求1所述的装置,其中,所述高速缓存包括一级(L1)高速缓存、二级(L2)高速缓存、三级(L3)高速缓存、中间级高速缓存、最末级高速缓存(LLC)或其组合中的一个或多个。
10、如权利要求1所述的装置,进一步包括:根端口,用于耦合所述第一逻辑和所述端点设备。
11、一种方法,包括:
从端点设备接收第一输入/输出(I/O)存储器访问请求;
在高速缓存中存储一个或多个项,其中,每个项与在客户机物理地址(GPA)和主机物理地址(HPA)之间的输入/输出(I/O)存储器访问请求相对应;以及
确定所述第一I/O存储器访问请求是否包括与一个地址相关联的将来访问提示,
其中,所述将来访问提示指示将来会对所述地址进行访问。
12、如权利要求11所述的方法,进一步包括:响应于确定所述第一I/O存储器访问请求包括所述提示,更新相应的高速缓存项中的一个或多个位。
13、如权利要求11所述的方法,进一步包括:在所述高速缓存中,先于包括提示的项,对不包括提示的项进行替换。
14、如权利要求11所述的方法,进一步包括:转换与所述第一I/O存储器访问相对应的地址。
15、一种系统,包括:
存储器,用于存储一个或多个项;
高速缓存,用于存储与所述存储器中所存储的一个或多个项相对应的一个或多个项,其中,所述高速缓存中的每个项与在客户机物理地址(GPA)和主机物理地址(HPA)之间的输入/输出(I/O)存储器访问请求相对应;以及
第一逻辑,用于从端点设备接收第一I/O存储器访问请求,并确定所述第一I/O存储器访问请求是否包括与一个地址相关联的将来访问提示,
其中,所述第一逻辑响应于确定所述第一I/O存储器访问请求包括所述提示,更新相应的高速缓存项中一个或多个位。
16、如权利要求15所述的系统,其中,所述端点设备产生所述存储器访问请求。
17、如权利要求15所述的系统,进一步包括:预取逻辑,用于响应于所述端点设备发出的请求而将数据预取到所述高速缓存中。
18、如权利要求15所述的系统,其中,所述端点设备包括快速外围组件互连(PCI)设备。
19、如权利要求15所述的系统,其中,所述将来访问提示指示将来会对所述地址进行访问。
20、如权利要求15所述的系统,进一步包括:显示设备,其耦合到包括所述高速缓存的非核心部分。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/906,176 US8161243B1 (en) | 2007-09-28 | 2007-09-28 | Address translation caching and I/O cache performance improvement in virtualized environments |
US11/906,176 | 2007-09-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101398787A true CN101398787A (zh) | 2009-04-01 |
Family
ID=40418368
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200880110445.8A Pending CN101868786A (zh) | 2007-09-28 | 2008-09-26 | 虚拟化环境中的地址转换缓存和i/o高速缓存性能改进 |
CN200810161925.9A Pending CN101398787A (zh) | 2007-09-28 | 2008-09-27 | 虚拟化环境中地址转换缓存操作和i/o高速缓存性能的改善 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200880110445.8A Pending CN101868786A (zh) | 2007-09-28 | 2008-09-26 | 虚拟化环境中的地址转换缓存和i/o高速缓存性能改进 |
Country Status (5)
Country | Link |
---|---|
US (2) | US8161243B1 (zh) |
CN (2) | CN101868786A (zh) |
DE (1) | DE102008048421A1 (zh) |
RU (1) | RU2483347C2 (zh) |
WO (1) | WO2009045884A2 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104077171A (zh) * | 2013-03-28 | 2014-10-01 | 华为技术有限公司 | 调度虚拟机时的处理方法和设备 |
CN104380255A (zh) * | 2012-05-24 | 2015-02-25 | 国际商业机器公司 | 虚拟机独占缓存 |
CN104615548A (zh) * | 2010-03-29 | 2015-05-13 | 威盛电子股份有限公司 | 数据预取方法以及微处理器 |
CN106537362A (zh) * | 2014-07-29 | 2017-03-22 | Arm 有限公司 | 数据处理装置和在数据处理装置中处理地址转换的方法 |
CN107341115A (zh) * | 2017-06-30 | 2017-11-10 | 联想(北京)有限公司 | 虚拟机内存访问方法、系统和电子设备 |
CN108021518A (zh) * | 2017-11-17 | 2018-05-11 | 华为技术有限公司 | 一种数据交互方法和计算设备 |
CN109032963A (zh) * | 2017-06-12 | 2018-12-18 | Arm有限公司 | 访问控制 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7707383B2 (en) | 2006-11-21 | 2010-04-27 | Intel Corporation | Address translation performance in virtualized environments |
US8161243B1 (en) | 2007-09-28 | 2012-04-17 | Intel Corporation | Address translation caching and I/O cache performance improvement in virtualized environments |
US9389895B2 (en) | 2009-12-17 | 2016-07-12 | Microsoft Technology Licensing, Llc | Virtual storage target offload techniques |
AT510716B1 (de) * | 2011-04-08 | 2012-06-15 | Albrecht Dipl Ing Kadlec | Reiner allokations-cache für echtzeitsysteme |
WO2013048943A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Active state power management (aspm) to reduce power consumption by pci express components |
US9983893B2 (en) | 2013-10-01 | 2018-05-29 | Red Hat Israel, Ltd. | Handling memory-mapped input-output (MMIO) based instructions using fast access addresses |
US9916173B2 (en) * | 2013-11-25 | 2018-03-13 | Red Hat Israel, Ltd. | Facilitating execution of MMIO based instructions |
US20150286529A1 (en) * | 2014-04-08 | 2015-10-08 | Micron Technology, Inc. | Memory device having controller with local memory |
US9846610B2 (en) | 2016-02-08 | 2017-12-19 | Red Hat Israel, Ltd. | Page fault-based fast memory-mapped I/O for virtual machines |
US10310547B2 (en) * | 2016-03-05 | 2019-06-04 | Intel Corporation | Techniques to mirror a command/address or interpret command/address logic at a memory device |
US10324857B2 (en) * | 2017-01-26 | 2019-06-18 | Intel Corporation | Linear memory address transformation and management |
US10929310B2 (en) | 2019-03-01 | 2021-02-23 | Cisco Technology, Inc. | Adaptive address translation caches |
KR20230105441A (ko) | 2022-01-04 | 2023-07-11 | 삼성전자주식회사 | 스토리지 시스템과 장치 및 그 동작 방법 |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6128703A (en) * | 1997-09-05 | 2000-10-03 | Integrated Device Technology, Inc. | Method and apparatus for memory prefetch operation of volatile non-coherent data |
US6009488A (en) | 1997-11-07 | 1999-12-28 | Microlinc, Llc | Computer having packet-based interconnect channel |
US6542968B1 (en) * | 1999-01-15 | 2003-04-01 | Hewlett-Packard Company | System and method for managing data in an I/O cache |
US6886085B1 (en) | 2000-04-19 | 2005-04-26 | International Business Machines Corporation | Method and apparatus for efficient virtual memory management |
US6789168B2 (en) * | 2001-07-13 | 2004-09-07 | Micron Technology, Inc. | Embedded DRAM cache |
US6981099B2 (en) * | 2002-12-16 | 2005-12-27 | Sun Microsystems, Inc. | Smart-prefetch |
US20040123278A1 (en) * | 2002-12-23 | 2004-06-24 | Murthi Nanja | Persistent cache apparatus and methods |
US6978351B2 (en) * | 2002-12-30 | 2005-12-20 | Intel Corporation | Method and system to improve prefetching operations |
US20040233146A1 (en) * | 2003-05-21 | 2004-11-25 | Nguyen Don J. | Selective window display |
US7941554B2 (en) * | 2003-08-01 | 2011-05-10 | Microsoft Corporation | Sparse caching for streaming media |
US20050149562A1 (en) | 2003-12-31 | 2005-07-07 | International Business Machines Corporation | Method and system for managing data access requests utilizing storage meta data processing |
US20050160229A1 (en) * | 2004-01-16 | 2005-07-21 | International Business Machines Corporation | Method and apparatus for preloading translation buffers |
US7930503B2 (en) * | 2004-01-26 | 2011-04-19 | Hewlett-Packard Development Company, L.P. | Method and apparatus for operating multiple security modules |
US7340582B2 (en) * | 2004-09-30 | 2008-03-04 | Intel Corporation | Fault processing for direct memory access address translation |
EP1805623A4 (en) | 2004-10-06 | 2008-10-08 | Thomson Licensing | METHOD AND SYSTEM FOR PUTTING DATA IN STAMP BUFFER |
US7330940B2 (en) * | 2005-02-02 | 2008-02-12 | Hewlett-Packard Development Company, L.P. | Method and system for cache utilization by limiting prefetch requests |
US20060288130A1 (en) | 2005-06-21 | 2006-12-21 | Rajesh Madukkarumukumana | Address window support for direct memory access translation |
US8490065B2 (en) * | 2005-10-13 | 2013-07-16 | International Business Machines Corporation | Method and apparatus for software-assisted data cache and prefetch control |
US7395407B2 (en) * | 2005-10-14 | 2008-07-01 | International Business Machines Corporation | Mechanisms and methods for using data access patterns |
US7389400B2 (en) | 2005-12-15 | 2008-06-17 | International Business Machines Corporation | Apparatus and method for selectively invalidating entries in an address translation cache |
US7653803B2 (en) * | 2006-01-17 | 2010-01-26 | Globalfoundries Inc. | Address translation for input/output (I/O) devices and interrupt remapping for I/O devices in an I/O memory management unit (IOMMU) |
US7739474B2 (en) * | 2006-02-07 | 2010-06-15 | International Business Machines Corporation | Method and system for unifying memory access for CPU and IO operations |
US7669028B2 (en) * | 2006-02-07 | 2010-02-23 | International Business Machines Corporation | Optimizing data bandwidth across a variable asynchronous clock domain |
US7716423B2 (en) * | 2006-02-07 | 2010-05-11 | International Business Machines Corporation | Pseudo LRU algorithm for hint-locking during software and hardware address translation cache miss handling modes |
TW200802175A (en) * | 2006-06-28 | 2008-01-01 | Giga Byte Tech Co Ltd | Hot-pluggable video display card and computer system using the same |
US7707383B2 (en) | 2006-11-21 | 2010-04-27 | Intel Corporation | Address translation performance in virtualized environments |
US8161243B1 (en) | 2007-09-28 | 2012-04-17 | Intel Corporation | Address translation caching and I/O cache performance improvement in virtualized environments |
-
2007
- 2007-09-28 US US11/906,176 patent/US8161243B1/en not_active Expired - Fee Related
-
2008
- 2008-09-23 DE DE102008048421A patent/DE102008048421A1/de not_active Withdrawn
- 2008-09-26 RU RU2010104040/08A patent/RU2483347C2/ru not_active IP Right Cessation
- 2008-09-26 CN CN200880110445.8A patent/CN101868786A/zh active Pending
- 2008-09-26 WO PCT/US2008/077819 patent/WO2009045884A2/en active Application Filing
- 2008-09-27 CN CN200810161925.9A patent/CN101398787A/zh active Pending
-
2012
- 2012-04-17 US US13/449,302 patent/US8407422B2/en not_active Expired - Fee Related
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104615548A (zh) * | 2010-03-29 | 2015-05-13 | 威盛电子股份有限公司 | 数据预取方法以及微处理器 |
CN104615548B (zh) * | 2010-03-29 | 2018-08-31 | 威盛电子股份有限公司 | 数据预取方法以及微处理器 |
CN104380255A (zh) * | 2012-05-24 | 2015-02-25 | 国际商业机器公司 | 虚拟机独占缓存 |
CN104077171A (zh) * | 2013-03-28 | 2014-10-01 | 华为技术有限公司 | 调度虚拟机时的处理方法和设备 |
CN104077171B (zh) * | 2013-03-28 | 2017-12-15 | 华为技术有限公司 | 调度虚拟机时的处理方法和设备 |
CN106537362A (zh) * | 2014-07-29 | 2017-03-22 | Arm 有限公司 | 数据处理装置和在数据处理装置中处理地址转换的方法 |
CN106537362B (zh) * | 2014-07-29 | 2020-10-30 | Arm 有限公司 | 数据处理装置和在数据处理装置中处理地址转换的方法 |
CN109032963A (zh) * | 2017-06-12 | 2018-12-18 | Arm有限公司 | 访问控制 |
CN109032963B (zh) * | 2017-06-12 | 2023-09-05 | Arm有限公司 | 访问控制 |
CN107341115A (zh) * | 2017-06-30 | 2017-11-10 | 联想(北京)有限公司 | 虚拟机内存访问方法、系统和电子设备 |
CN108021518A (zh) * | 2017-11-17 | 2018-05-11 | 华为技术有限公司 | 一种数据交互方法和计算设备 |
CN108021518B (zh) * | 2017-11-17 | 2019-11-29 | 华为技术有限公司 | 一种数据交互方法和计算设备 |
Also Published As
Publication number | Publication date |
---|---|
US8407422B2 (en) | 2013-03-26 |
CN101868786A (zh) | 2010-10-20 |
RU2483347C2 (ru) | 2013-05-27 |
RU2010104040A (ru) | 2011-08-20 |
US20120203950A1 (en) | 2012-08-09 |
US8161243B1 (en) | 2012-04-17 |
DE102008048421A1 (de) | 2009-04-09 |
WO2009045884A2 (en) | 2009-04-09 |
WO2009045884A3 (en) | 2009-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101398787A (zh) | 虚拟化环境中地址转换缓存操作和i/o高速缓存性能的改善 | |
US8250254B2 (en) | Offloading input/output (I/O) virtualization operations to a processor | |
US7707383B2 (en) | Address translation performance in virtualized environments | |
US8423715B2 (en) | Memory management among levels of cache in a memory hierarchy | |
CN103988184B (zh) | 元比特在系统存储器内的高效存储 | |
CN102326156B (zh) | 基于空间要求目标报告的对mmio请求处理的投机改进 | |
US7571286B2 (en) | Reduced memory traffic via detection and tracking of temporally silent stores | |
CN108268385B (zh) | 具有集成目录高速缓存的优化的高速缓存代理 | |
US9098397B2 (en) | Extending cache for an external storage system into individual servers | |
US8423736B2 (en) | Maintaining cache coherence in a multi-node, symmetric multiprocessing computer | |
CN103714015A (zh) | 减少来自侦听过滤器的后无效事务 | |
US9176888B2 (en) | Application-managed translation cache | |
US10613999B2 (en) | Device, system and method to access a shared memory with field-programmable gate array circuitry without first storing data to computer node | |
US11068397B2 (en) | Accelerator sharing | |
US9183150B2 (en) | Memory sharing by processors | |
US10884943B2 (en) | Speculative checkin of ERAT cache entries | |
US8707010B2 (en) | Switch, information processing apparatus, and address translation method | |
US8516200B2 (en) | Avoiding cross-interrogates in a streaming data optimized L1 cache | |
US9405545B2 (en) | Method and apparatus for cutting senior store latency using store prefetching | |
KR100692976B1 (ko) | 프로세서간 데이터 전송 방법 및 시스템 | |
US10372622B2 (en) | Software controlled cache line replacement within a data property dependent cache segment of a cache using a cache segmentation enablement bit and cache segment selection bits | |
CN103124962B (zh) | 优化环协议和技术 | |
US20190065379A1 (en) | Reducing translation latency within a memory management unit using external caching structures | |
US8593472B1 (en) | System and method for accessing a frame buffer via a storage driver | |
US20200285583A1 (en) | Determining logical address of an oldest memory access request |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20090401 |