CN104040518A - 高效存储器和资源管理 - Google Patents

高效存储器和资源管理 Download PDF

Info

Publication number
CN104040518A
CN104040518A CN201280062362.2A CN201280062362A CN104040518A CN 104040518 A CN104040518 A CN 104040518A CN 201280062362 A CN201280062362 A CN 201280062362A CN 104040518 A CN104040518 A CN 104040518A
Authority
CN
China
Prior art keywords
storer
equipment
data
memory
pointer
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.)
Granted
Application number
CN201280062362.2A
Other languages
English (en)
Other versions
CN104040518B (zh
Inventor
安德鲁·克格尔
马克·赫梅尔
安东尼·阿萨罗
菲利普·恩基
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.)
ATI Technologies ULC
Advanced Micro Devices Inc
Original Assignee
ATI Technologies ULC
Advanced Micro Devices Inc
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 ATI Technologies ULC, Advanced Micro Devices Inc filed Critical ATI Technologies ULC
Publication of CN104040518A publication Critical patent/CN104040518A/zh
Application granted granted Critical
Publication of CN104040518B publication Critical patent/CN104040518B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/1009Address translation using page tables, e.g. page table structures
    • 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
    • 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/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • 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/651Multi-level translation tables

Abstract

本发明公开了一种系统,所述系统能够将与访问存储器中的数据相关联的指针经由输入/输出存储器管理单元(IOMMU)传递到输入/输出(I/O)设备。所述I/O设备经由所述IOMMU访问所述存储器中的所述数据,而不将所述数据复制到本地I/O设备存储器中。所述I/O设备可以基于所述指针对所述存储器中的所述数据执行操作,以便I/O设备访问所述存储器而无需代价高昂的复本。

Description

高效存储器和资源管理
背景
发明领域
本发明总体涉及计算系统。更具体地,本发明涉及计算系统内虚拟地址空间的共享。
背景技术
最近,由于GPU的每单位功率和/或成本的典型性能,因此对将图形处理单元(GPU)用于一般计算的期望已经变得更加明显。一般来说,GPU的计算能力已以超过对应中央处理单元(CPU)平台的计算能力的速度增长。结合移动计算市场和其必需支持服务器/企业系统的开发,已经利用这种增长来提供指定的期望用户体验质量。因此,组合使用CPU和GPU来执行带有数据并行内容的工作负载正在变成一种广泛应用的技术。
然而,传统上,GPU是在受约束的编程环境中操作,仅可用于图形加速。这些约束起因于GPU不具有与CPU一样丰富的编程生态系统这一事实。因此,它们的用途一直大多局限于二维(2D)和三维(3D)图形以及已习惯于处理图形和视频应用编程接口(API)的少量前沿多媒体应用。
随着多供应商支持的标准API和支持工具出现,GPU的应用已经不再局限于诸如传统图形等传统应用。虽然OpenCL和DirectCompute是有前景的起点,但创造一种允许对于大多数编程任务CPU和GPU的组合使用起来与CPU一样流畅的环境和生态系统仍存在许多障碍。
现有计算系统通常包括多个处理设备。例如,一些计算系统包括位于单独芯片上(例如,CPU可以位于主板上并且GPU可以位于图形卡上)或者在单个芯片封装中的CPU和GPU两种情况。然而,这两种布置仍包括与以下项相关的重大挑战:(i)高效调度、(ii)提供进程间服务质量(QoS)保证、(iii)编程模型、(iv)编译成多种目标指令集体系结构(ISA)以及(v)单独的存储器系统——在所有这些的同时还要使功耗最小化。
例如,分立芯片布置迫使系统以及软件体系结构针对每个处理器利用芯片到芯片接口对存储器进行存取。这些外部接口(例如,芯片到芯片)对用于协同操作异构处理器的存储器等待时间和功耗造成不利影响,同时,单独的存储器系统(即,单独地址空间)和驱动器管理共享存储器会产生变得对精细粒度卸载而言不可接受的开销。
在另一实施例中,存储在由多个处理器访问的存储器中的一些图像可能未能以期望质量水平存储。例如,图像的图片质量、对比度、取向(例如,旋转)等等可能不正确。通常,如果存在驻于存储器中需要在显示前进行操纵的图像数据,那么不得不将这些图像数据复制到I/O设备的存储器中,图像数据可在I/O设备的存储器中进行操纵并且随后复制回存储器以使它们可被打印出来。这个过程是耗时的,并且例如可能降低所存储的图像数据的质量。
概述
因此,需要一种用于多个处理器访问存储在共享存储器中的数据的高效方式以存储。
虽然GPU、加速处理单元(APU)以及通用图形处理单元(GPGPU)是本领域中的常用术语,但是术语“加速处理设备(APD)”被认为是一种更广泛的表述。例如,APD是指相对于诸如常规CPU、常规GPU和/或它们的组合等资源以加速的方式执行与加速图形处理任务、数据并行任务或嵌套数据并行任务相关联的那些功能和计算的任何协同操作的硬件和/或软件集合。
更确切地,本发明的实施方案涉及用于IOMMU高效存储器和资源管理的方法、系统以及计算机可读介质。在一个实施例中,与访问存储器中的数据相关联的指针经由输入/输出存储器管理单元(IOMMU)传递到输入/输出(I/O)设备。I/O设备经由IOMMU访问存储器中的数据,而不将数据复制到本地I/O设备存储器中。I/O设备基于指针对存储器中的数据执行操作。
本发明的进一步特征和优点以及本发明的各实施方案的结构和操作在下文中参照附图详细描述。应当注意,本发明不限于本文所描述的这些特定实施方案。本文呈现此类实施方案仅用于说明目的。基于本文所包含的教导内容,另外的实施方案对于相关领域的技术人员而言将是显而易见的。
附图简述
附图并入本文并且构成本说明书的一部分,图解了本发明并且与说明书一起进一步用来解释本发明的原理并使相关领域的技术人员能够实践和使用本发明。本发明的各实施方案参照附图在下文中进行描述,其中在全文中,类似参考标号用于指代类似元素。
图1是根据本发明的实施方案的一种处理系统的说明性框图。
图2是图1所示APD的框图图示。
图3A是根据本发明的一个实施方案的IOMMU嵌套分页事务系统的第一层的示例性框图。
图3B是根据所述实施方案的IOMMU嵌套分页事务系统的第二层的示例性框图。
图4是其中可以应用本发明的实施方案的常规存储器与I/O设备关系的框图。
图5是其中可以应用本发明的实施方案的直接设备分配方案的框图。
图6是其中可以应用本发明的实施方案的I/O设备页面错误和解决方案的图示。
图7是根据本发明的示出高效存储器和资源管理的流程图的框图。
详述
在以下详细描述中,提及“一个实施方案”、“实施方案”、“示例实施方案”等等表明所描述的实施方案可包括某一特定特征、结构或特性,但是每个实施方案可能不一定包括该特定特征、结构或特性。此外,此类措词不一定是指同一实施方案。此外,当结合一个实施方案来描述某一特定特征、结构或特性时,应当认为,无论是否明确描述,使得此类特征、结构或者特性结合其它实施方案起作用是在本领域的技术人员知识范围内的。
术语“本发明的实施方案”并不要求本发明的所有实施方案都包括所论述的特征、优点或操作模式。在不背离本发明的范围的情况下可设想出替代实施方案,并且本发明的众所周知的元素可能并未详细描述或者可能被省略,以免混淆本发明的相关细节。另外,本文所使用的术语仅用于描述特定实施方案的目的,而并不意在限制本发明。例如,如本文中所使用,单数形式“一个”和“所述”意在还包括复数形式,除非上下文另外清楚表明。还应当理解,当在本文中使用时,术语“包括(comprises)”、“包括(comprising)”、“包括(includes)”和/或“包括(including)”指明存在所述特征、整数、步骤、操作、元件和/或部件,但并不排除存在或者增添一个或多个其它特征、整数、步骤、操作、元件、部件和/或它们的组合。
图1是包括CPU102和APD104的统一计算系统100的示例性图示。CPU102可以包括一个或多个单核或多核CPU。在本发明的一个实施方案中,系统100形成在单个硅裸片或硅封装上,从而组合CPU102与APD104以提供统一的编程和执行环境。这种环境使得APD104能够与CPU102一样流畅地用于一些编程任务。然而,本发明不绝对要求CPU102和APD104形成在单个硅裸片上。在一些实施方案中,它们可能单独形成并且安装在相同或不同的基片上。
在一个实施例中,系统100还包括存储器106、操作系统(OS)108以及通信基础设施109。OS108和通信基础设施109在下文中更详细地论述。
系统100还包括内核模式驱动器(KMD)110、软件调度器(SWS)112,以及存储器管理单元116,如输入/输出存储器管理单元(IOMMU)。系统100的部件可以实现为硬件、固件、软件或它们的任何组合。本领域的普通技术人员应当了解,系统100可以包括除了图1所示实施方案中所示部件之外或不同于所示部件的一个或多个软件、硬件以及固件部件。
在一个实施例中,驱动器(如KMD110)通常通过硬件连接到其上的计算机总线或通信子系统与设备进行通信。当调用程序调用驱动器中例程时,驱动器向设备发布命令。一旦设备向驱动器发送回数据,驱动器可调用原始调用程序中的例程。在一个实施例中,驱动器是依赖于硬件的并且是操作系统特定的。它们通常提供任何必需的异步时间依赖硬件接口所要求的中断处理。设备驱动器、尤其在现代Windows平台上可以内核模式(第0级)或以用户模式(第3级)运行。以用户模式运行驱动器的主要益处是稳定性提高,因为编写拙劣的用户模式设备驱动器不可能通过重写内核存储器使系统崩溃。另一方面,用户/内核模式翻译通常强加相当大的性能开销,从而抑制用户模式驱动器的低等待时间和高吞吐量要求。用户模块仅可通过使用系统调用来访问内核空间。像UNIX shell或其它基于GUI的应用等终端用户程序是用户空间的一部分。这些应用通过内核支持的功能与硬件交互。
CPU102可以包括(未示出)控制处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)或数字信号处理器(DSP)中的一个或多个。CPU102例如执行控制计算系统100的操作的控制逻辑,包括OS108、KMD110、SWS112以及应用111。在此说明性实施方案中,根据一个实施方案,CPU102发起并且控制应用111的执行,例如,通过在CPU102和诸如APD104等其它处理资源上分发与这个应用相关联的处理。
除了其它之外,APD104执行用于选定功能(如图形操作和可能(例如)尤其适于并行处理的其它操作)的命令和程序。通常,APD104常常可以用于执行图形管线操作,如像素操作、几何计算以及为显示器渲染图像。在本发明的各种实施方案中,APD104还可基于从CPU102接收到的命令或指令来执行计算处理操作。
例如,命令可以被认为是没有定义在指令集体系结构(ISA)中的特殊指令,并且通常由来自给定ISA或独特硬件的一组指令完成。指令可以由特殊处理器(如分派处理器、命令处理器或网络控制器)来执行。另一方面,指令可以被认为是例如在计算机体系结构内的处理器的单个操作。在一个实施方案中,当使用两组ISA时,一些指令被用于执行x86程序,并且一些指令被用于执行APD/GPU计算单元上的内核。
在一个说明性实施方案中,CPU102向APD104发送选定命令。这些选定命令可以包括图形命令和适于并行执行的其它命令。这些选定命令(还可包括计算处理命令)可以基本独立于CPU102执行。
APD104可以包括其自己的计算单元(未示出),诸如但不限于一个或多个单指令多数据(SIMD)处理核心。如本文中提及,SIMD是数学管线或编程模型,其中内核在多个处理元件上并发执行,每个处理元件具有其自己的数据和共享程序计数器。所有处理元件执行完全相同的指令集。使用预测使工作项能够参与或不参与每个所发布的命令。
在一个实施例中,每个APD104计算单元可以包括一个或多个标量和/或矢量浮点单元和/或算术逻辑单元(ALU)。APD计算单元还可以包括专用处理单元(未示出),如平方根倒数单元和正弦/余弦单元。在一个实施例中,APD计算单元在本文中统称着色器核心122。
通常,具有一个或多个SIMD使得APD104理想适于执行数据并行任务,如在图形处理中常见的任务。
诸如像素处理等一些图形管线操作以及其它并行计算操作可能要求对输入数据元素流或集合执行同一命令流或计算内核。同一计算内核的相应实例化可以在着色器核心122中的多个计算单元上并发执行,以便并行处理这些数据元素。如本文中提及,例如,计算内核是包含程序中声明并且在APD/GPU计算单元上执行的指令的函数。这个函数也被称为内核、着色器、着色器程序或程序。
在一个说明性实施方案中,每个计算单元(例如,SIMD处理核心)可以执行特定工作项的相应实例化以便处理输入数据。工作项是由命令在设备上调用的并行内核执行集合中的一个。工作项可以作为在计算单元上执行的工作组的一部分由一个或多个处理元件执行。
工作项在全局ID和本地ID方面与集合内的其它执行不同。在一个实施例中,工作组中同时一起在单个SIMD引擎上执行的工作项子集可被称为波前136。波前宽度是硬件SIMD引擎的特性如本文中提及,工作组是在单个计算单元上执行的相关工作项的集合。组中的工作项执行同一内核并且共享本地存储器和工作组隔离。
来自工作组的所有波前在同一SIMD引擎上进行处理。波前中的指令一次发布一个,并且当所有工作项都遵循相同控制流程时,每个工作项均执行同一程序。执行掩码和工作项预测用于在波前内实现发散控制流程,其中每个单独工作项实际可以占有通过核心的唯一代码路径。当工作项的全集在波前开始时间时不可用时,可以处理部分已填充的波前。波前也可称为线程束(warp)、矢量或线程。
对于波前,命令可能一次发布一个。当所有工作项都遵循同一控制流程时,每个工作项均可执行同一程序。在一个实施例中,使用执行掩码和工作项预测来实现发散控制流程,其中每个单独工作项可以实际占有通过内核驱动器的唯一代码路径。当工作项的全集在开始时间时不可用时,可以处理部分波前。例如,着色器核心122可以同时执行预定数量波前136,每个波前136包括预定数量的工作项。
在系统100内,APD104包括其自己的存储器,如图形存储器130。图形存储器130提供用于在APD104中的计算过程中使用的本地存储器。着色器核心122内的单独计算单元(未示出)可以具有它们自己的本地数据存储器(未示出)。在一个实施方案中,APD104包括对本地图形存储器130的存取以及对存储器106的存取。在另一实施方案中,APD104可以包括对动态随机存取存储器(DRAM)或直接附接到APD104上并且与存储器106分开的其它此类存储器(未示出)的存取。
所示实施例中,APD104还包括一个或(n)个命令处理器(CP)124。CP124控制APD104内的处理。CP124还从存储器106中的命令缓冲器125检索有待执行的命令并且协调这些命令在APD104上的执行。
在一个实施例中,CPU102将基于应用111的命令输入到合适命令缓冲器125中。如本文中提及,应用是将在CPU和APD内的计算单元上执行的程序部分的组合。
对于被调度用于在APD104上执行的每个进程,可以维护多个命令缓冲器125。
CP124可以在硬件、固件、软件或它们的组合中实现。在一个实施方案中,CP124被实现为具有微代码的精简指令集计算机(RISC)引擎以实现包括调度逻辑的逻辑。
APD104还包括一个或(n)个分派控制器(DC)126。在本申请中,术语分派是指由分派控制器执行的命令,所述分派控制器使用上下文状态来发起用于一组计算单元上的一组工作组的内核的执行的开始。DC126包括用于发起着色器核心122中的工作组的逻辑。在一些实施方案中,DC126可以实现为CP124的一部分。
系统100还包括用于从运行列表150选择进程以供在APD104上执行的硬件调度器(HWS)128。HWS128可以使用循环方法、优先级或基于其它调度策略从运行列表150选择进程。例如,优先级可以动态地确定。HWS128还可以包括管理运行列表150的功能性,例如,通过添加新的进程并且通过从运行列表150删除现有进程。HWS128的运行列表管理逻辑有时称为运行列表控制器(RLC)。
在本发明的各实施方案中,当HWS128发起对来自RLC150的进程的执行时,CP124开始检索并且执行来自对应命令缓冲器125的命令。在一些情况下,CP124可以生成有待在APD104内执行的一个或多个命令,所述命令与从CPU102接收到的命令对应。在一个实施方案中,CP124与其它部件一起以提高或最大化APD104和/或系统100资源的利用率的方式来实现APD104上的命令的优先级排序和调度。
APD104可以访问或者可以包括中断发生器146。中断发生器146可以由APD104配置成当APD104遇到诸如页面错误之类的中断事件时中断OS108。例如,APD104可以依赖于IOMMU116内的中断发生逻辑来形成上述页面错误中断。
APD104还可以包括抢占和上下文切换逻辑120,以便抢占当前正在着色器核心122内运行的进程。例如,上下文切换逻辑120包括停止进程并保存其当前状态(例如,着色器核心122状态和CP124状态)的功能性。
如本文中提及,术语状态可以包括初始状态、中间状态以及最终状态。初始状态是机器根据程序处理输入数据集合以形成输出数据集合的起始点。存在一种中间状态,例如,需要在若干点处对这种中间状态进行存储以使得处理向前进展。有时存储这种中间状态是为了允许当被某一其它进程中断时在稍后时间继续执行。还存在一种最终状态,可以记录这种最终状态作为输出数据集合的一部分。
抢占和上下文切换逻辑120还可以包括将另一进程上下文切换到APD104中的逻辑。将另一进程上下文切换成在APD104上运行的功能性可以包括例如通过CP124和DC126将进程实例化以在APD104上运行,恢复用于此进程的任何先前所保存的状态,并且开始它的执行。
存储器106可以包括非永久性存储器,如DRAM(未示出)。存储器106可以在应用或其它处理逻辑的部分的执行过程中存储(例如)处理逻辑指令、常量值以及变量值。例如,在一个实施方案中,用于在CPU102上执行一个或多个操作的控制逻辑的部分在所述操作的各自部分由CPU102执行的过程中可以驻存在存储器106内。如本文中所使用,术语“处理逻辑”或“逻辑”是指控制流程命令、用于执行计算的命令以及用于相关的资源访问的命令。
在执行过程中,相应应用、OS功能、处理逻辑命令以及系统软件可以驻存在存储器106中。对OS108重要的控制逻辑命令在执行过程中通常将会驻存在存储器106中。在系统100执行过程中,包括例如KMD110和软件调度器112的其它软件命令也可以驻存在存储器106中。
在此实施例中,存储器106包括被CPU102用来向APD104发送命令的命令缓冲器125。存储器106还包含进程列表和处理信息(例如,活动列表152和进程控制块154)。这些列表以及信息由在CPU102上执行的调度软件用来向APD104和/或相关调度硬件传递调度信息。对存储器106的存取可以由联接到存储器106上的存储器控制器140管理。例如,来自CPU102或来自其它装置的对从存储器106读出或对写入存储器106的请求由存储器控制器140管理。
返回系统100的其它方面,IOMMU116是多上下文存储器管理单元。
如本文中所使用,上下文(有时称为进程)可被认为是内核在其中执行的环境以及其中限定同步和存储器管理的域。上下文包括一组设备、这些设备可存取的存储器、对应存储器性质以及用于调度内核或操作在存储器对象上的执行的一个或多个命令队列。另一方面,进程可以被认为是程序的执行,因为应用将创建在计算机上运行的进程。OS可以创建数据记录和虚拟存储器地址空间以供程序执行。程序执行所用存储器和当前状态可被称作进程。OS会调度任务以用于使进程在存储器上从初始状态操作到最终状态。
返回参考图1所示的实施例,IOMMU116包括用于执行虚拟地址到物理地址翻译以用于包括APD104的设备对存储页面的存取的逻辑。IOMMU116还可以包括用于例如当设备(如APD104)所进行的页面存取导致页面错误时生成中断的逻辑。IOMMU116还可以包括或者有权存取翻译后备缓冲器(TLB)118。例如,TLB118可以实现在内容可寻址存储器(CAM)中以针对APD104对存储器106中的数据所作出的请求来加速逻辑(即,虚拟)存储器地址到物理存储器地址的翻译。
在所示实施例中,通信基础设施109根据需要互连系统100的部件。通信基础设施109可以包括(未示出)外围部件互连(PCI)总线、扩展PCI(PCI-E)总线、高级微控制器总线体系结构(AMBA)总线、加速图形端口(AGP)或此类通信基础设施中的一种或多种。通信基础设施109还可以包括以太网或类似网络,或满足应用的数据传输速率要求的任何合适物理通信基础设施。通信基础设施109包括互连包括计算系统100的部件等各部件的功能性。
在此实施例中,OS108包括用于管理系统100的硬件部件并且提供常见服务的功能性。在各实施方案中,OS108可以在CPU102上执行并且提供常见服务。这些常见服务可以包括例如用于在CPU102内执行的调度应用、故障管理、中断服务以及处理其它应用的输入和输出。
在一些实施方案中,基于中断控制器(如中断控制器148)所生成的中断,OS108调用适当的中断处理例程。例如,一旦检测到页面错误中断,OS108就可以调用中断处理器来发起将相关页面加载到存储器106中并且更新对应页表。
OS108还可包括通过确保对硬件部件的访问通过OS管理的内核功能性作为中介从而保护系统100的功能性。实际上,OS108确保应用(如应用111)在用户空间中在CPU102上运行。OS108还确保应用111调用OS提供的内核功能性来访问硬件和/或输入/输出功能性。
例如,应用111包括各种程序或命令以执行还在CPU102上执行的用户计算。统一概念可以允许CPU102无缝发送用于在APD104上处理的选定命令。在这种统一APD/CPU构架下,来自应用111的输入/输出请求将通过对应OS功能性进行处理。
一个实施例中,KMD110实现应用程序接口(API),CPU102或在CPU102上执行的应用或其它逻辑可以通过所述应用程序接口调用APD104功能性。例如,KMD110可使来自CPU102的命令入队到命令缓冲器125中,APD104随后将从命令缓冲器125检索命令。另外,KMD110可以与SWS112一起执行对有待在APD104上执行的进程的调度。SWS112例如可以包括用于维护有待在APD上执行的进程的优先列表的逻辑。
在本发明的其它实施方案中,在CPU102上执行的应用在使命令入队时可以完全绕过KMD110。
在一些实施方案中,SWS112在存储器106中维护有待在APD104上执行的进程的活动列表152。SWS112还选择活动列表152中有待由硬件中的HWS128管理的进程子集。与在APD104上运行每个进程相关的信息通过进程控制块(PCB)154从CPU102传递到APD104。
用于应用、OS以及系统软件的处理逻辑可以包括在诸如C之类的编程语言和/或者在诸如Verilog、RTL或网表之类的硬件描述语言中指定的命令,以使得能够通过生成掩模作品/光掩模来最终配置制造过程,从而产生体现本文所述发明的各方面的硬件设备。
在阅读本说明书时,本领域的技术人员将会理解,计算系统100可以包括比图1中所示更多或更少的部件。例如,计算系统100可以包括一个或多个输入接口、非易失性存储装置、一个或多个输出接口、网络接口以及一个或多个显示器或显示接口。
图2是示出包括CPU202和存储器206的I/O设备接口体系结构,并且还示出图1的更详细的视图的框图200。图2进一步示出被配置成在通过总线278连接的存储器206、IOMMU216以及I/O设备A、B和C(分别由标号250、252和254表示)之间操作的存储器映射结构。IOMMU(如IOMMU216)可为操作用来将直接存储器存取(DMA)虚拟地址翻译成系统物理地址的硬件设备。通常,IOMMU(如IOMMU216)构建一个或多个唯一地址空间,并且使用该一个或多个唯一地址空间来控制设备的DMA操作如何存取存储器。虽然为了举例,图2仅仅示出一个IOMMU,但是本发明的各实施方案可以包括多于一个IOMMU。
通常,IOMMU可以连接至其自己的相应总线和一个或多个I/O设备上。在图2中,总线209可为计算机系统中使用的任何类型的总线,包括PCI总线、AGP总线、PCI-E总线(其更准确地来说是点到点互连),或者其它任何类型总线或通信信道,无论是目前可用的还是将来开发出的。总线209可以进一步将中断控制器248、KMD210、SWS212、应用211以及OS208与系统200中的其它部件互连。另外,互连中断控制器248、KMD210、SWS212、应用211以及OS208大致类似于如本文中描述的互连中断控制器148、KMD110、SWS112、应用111以及OS108,并且不再对此进行描述。
可连接到IOMMU216上的I/O设备在图2中进一步示出。I/O设备接口体系结构包括由元件标号250、252和254表示的I/O设备A、B和C。I/O设备C还包括存储器管理I/O(MMIO)映射和主机数据路径(HDP)256、设备处理复合器件258、私有MMU260、IOTLB264、地址翻译服务(ATS)/外围请求接口(PRI)请求块262、本地存储器268、本地存储保护映射266以及多路复用器270、272、274和276。
I/O设备A、B和C代表许多类型的I/O设备,包括但不限于APD、扩展卡、外设卡、具有扩展卸载能力的网络接口控制器(NIC)卡、WAN接口卡、语音接口卡以及网络监测卡。多于一个的I/O设备可以通过各种总线配置连接到每个IOMMU上。
系统200示出系统的高级功能性,并且实际物理实现方式可以采取许多形式。例如,MMU214常常集成在每个处理器202中。图2所示实施例可以基于处理器202的节点之间的HyperTransportTM(HT)相干结构,以及处理器202的节点与I/O设备250、252和254或桥接到其它I/O设备的互连件的任何I/O集线器(未示出)之间的HT I/O链路。
或者,在处理器202的节点之间可以使用任何其它相干互连件,和/或在处理器的节点与I/O设备之间可以使用任何其它I/O互连件。此外,在传统PC设计中,另一实施例可以包括联接到北桥上的处理器202,所述北桥进一步地联接到存储器206和一个或多个I/O互连件上。
任何I/O设备250、252和254都可以发布DMA操作(即,中断),所述DMA操作向上流经IOMMU216,在IOMMU216处DMA操作得到处理。随后,流程继续到处理器202,处理器202可以包括嵌入在其中的存储器控制器214。
在连接I/O设备时,如果检测到IOMMU216,那么软件发起建立必要控制和数据结构的过程。例如,当建立IOMMU216时,IOMMU216可以包括设备表基址寄存器(DTBR)241、命令缓冲器基址寄存器(CBBR)238、事件日志基址寄存器(ELBR)236、控制逻辑249以及外围页面请求寄存器(PPRR)242。另外,在初始建立过程中,IOMMU216可以包括用于选择适当客户页表的基址指针寄存器表的操作符246。基址指针寄存器表可以是(例如)控制寄存器3(CR3),它由x86微处理器进程用来通过针对当前任务定位页面目录和页表两者来从虚拟地址翻译成物理地址。
客户CR3(GCR3)变化可以建立新的一组翻译,并且因此处理器可以自动使得与上一上下文相关联的TLB218条目无效。如果必要,GCR3寄存器操作以使I/O页表遍历器244开始操作,如在标题为“Input/Output Memory Management Unit Two-Layer Addressing”的美国专利申请第61/423,062号中论述,所述专利申请以引用的方式以其全部内容并入本文。另外,IOMMU216可以与用于缓存地址翻译的一个或多个TLB218相关联,这种地址翻译用于实现后续翻译而不需要执行页表遍历。来自设备表的地址可以经由总线282传递到IOMMU216。
一旦建立数据结构,IOMMU216就可开始控制DMA操作访问、中断重新映射以及地址翻译。
IOMMU216可以使用存储器管理I/O(MMIO)来表明支持两级翻译。当确定支持两级翻译时,通过编程适当的设备表条目(DTE)来激活两级翻译。
在嵌套分页中,与DTE相关联的事务可以包括指向存储器206中I/O页表224的数据结构的根的页表根指针。
因此,IOMMU216可以通过扩展设备表条目以包括GVA到GPA地址翻译来使用映射客户指针访问I/O页表。GVA到GPA翻译可由客户OS管理(在下文中称为“L1”翻译)。
另外,IOMMU216可以使用映射系统指针访问I/O页表以便执行GPA到SPA翻译。GPA到SPA翻译可由管理程序234管理(在下文中称为“L2”翻译)。
因此,包括两种类型指针的DTE可以用于执行两层级联地址翻译遍历。
L2和L1翻译过程所产生的嵌套地址空间允许虚拟系统的高级计算体系结构,如计算卸载、用户级I/O以及加速I/O设备。
如图2所示,IOMMU216连接在存储器206与I/O设备250、252和254之间。另外,IOMMU216可以位于与存储器206、存储控制器240以及I/O设备250、252和254分离的单独芯片上。IOMMU216可以被设计成管理主要系统资源,并且可以使用I/O页表224提供I/O设备所访问的存储器上的许可检查和地址翻译。另外,I/O页表可以被设计成AMD64长格式。设备表226允许I/O设备被分配到特定的域。I/O页表224还可被配置成包括指向I/O设备的页表的指针。
作为安全性和许可检查措施,IOMMU216可以被配置成通过重新映射未经许可的DMA请求来阻止恶意DMA请求。另外,关于中断重新映射,IOMMU216还可被配置成(i)将DMA请求重定向到正确的存储器位置,并且(ii)将DMA请求重定向到运行客户VM的正确虚拟或物理CPU。IOMMU216还高效地管理I/O设备的安全直接分配。IOMMU216进一步使用中断重映射表来提供针对I/O设备中断的许可检查和中断重新映射。
在一个实施方案中,IOMMU216包括客户虚拟高级可编程中断控制器(APIC)构造(未示出)。另一实施方案包括具有设计用以支持虚拟客户APIC的体系结构特征的IOMMU。
IOMMU216支持在没有管理程序干涉的情况下向一个或多个并发运行的客户(例如,客户VM)直接递送中断。换句话说,IOMMU216可以提供翻译服务,而无需管理程序234。示例性IOMMU216使用标准PCI、INTx、MSI或MSI-X中断来发送中断信号。
系统200还包括存储器206,存储器206包括另外存储器块(未示出)。存储器控制器240可以位于单独芯片上或者可以集成在处理器202硅片中。存储器206被配置成使得DMA和处理器活动与存储器控制器240通信。
存储器206包括I/O页表224、设备表226、中断重映射表(IRT)228、命令缓冲器222、事件日志220以及主机翻译模块(如管理程序234)。存储器206还可以包括并发运行的一个或多个客户OS,如客户OS1(由标号230表示)和客户OS2(232)。管理程序234以及客户OS230和232是用于使系统虚拟化的软件构造。
客户Os(如客户OS230和客户OS232)更直接地连接到系统200中的I/O设备(如I/O设备250、252和254)上,因为作为硬件设备的IOMMU216被允许进行在传统方法下管理程序234将不得不进行的工作。
此外,IOMMU216和存储器206可以被初始化成使得DTBR241指向设备表226的起始索引。另外,CBBR238与命令缓冲器222的起始索引相关联以使得IOMMU216可以读出并且消耗存储在命令缓冲器222中的命令。ELBR236指向事件日志220的起始索引。PPRR242指向外围页面服务请求(PPSR)表227的起始索引。
IOMMU216使用基于存储器的队列来在IOMMU216与一个或多个系统处理器(如CPU202)之间交换命令和状态信息。命令队列由图2中的命令缓冲器222表示。命令缓冲器222和事件日志220通过每个活动IOMMU216实现。另外,每个IOMMU216可以实现I/O页面服务请求队列。
当启用时,IOMMU216拦截从下游设备(其可使用例如HyperTransportTM链路或基于PCI的通信进行通信)到达的请求,对请求执行许可检查和地址翻译,并且将翻译过的版本经由HyperTransportTM链路向上游地发送到存储器206空间。其它请求可以通过而不经更改。
IOMMU216可以读出存储器206中的表以便执行其许可检查、中断重新映射以及地址翻译。为了确保无死锁的操作,IOMMU216为了获得设备表226、I/O页表224以及中断重映射表228对存储器的访问使用等时虚拟信道并且可能仅引用存储器206中的地址。
由IOMMU216发起对命令缓冲器222、事件日志条目220以及任选请求队列条目(未示出)的其它存储器读取可以使用正常虚拟信道。
如果IOMMU216针对其处理的每个设备请求执行完整的表查找过程,那么系统性能可能大大降低。因此,期望IOMMU216的实现方式维护用于IOMMU216的存储器中表的内容的内部缓存。在操作过程中,当IOMMU216更新由IOMMU216缓存的表条目时,IOMMU216可以使用系统软件发送适当的无效命令。
IOMMU216通过使用正常虚拟信道的能力来写入存储器206中的事件日志220。IOMMU216可以任选写入存储器206中的外围页面服务请求队列227。写入存储器中的外围页面服务请求队列227还可以使用正常虚拟信道进行。
IOMMU216提供存储器中的请求队列来服务外围页面请求,而系统处理器CPU202则使用错误机制。I/O设备250、252和254中的任一个均可请求来自IOMMU216的翻译,并且IOMMU216可以使用成功翻译或者使用页面错误进行响应。
在本发明的实施方案中,IOMMU216可以支持用于根据页表进行管理的嵌套页表的两级地址翻译。示例客户翻译直接兼容支持4K字节、2M字节以及1G字节页面的AMD64长页表。
IOMMU216处理对存储器访问的请求,并且被实现为使得存储保护允许IOMMU216共享翻译表数据。此翻译表数据可以包括IOMMU216和/或MMU214所使用的嵌套页表数据。IOMMU216还可以被实现为使得IOMMU216与MMU214之间不允许翻译表共享。
主机OS还可以针对I/O设备所发起的访问执行翻译。当IOMMU216翻译I/O设备所访问的存储器地址时,主机OS可以通过构造指定期望翻译的I/O页表来建立其自己的页表。主机OS可以在设备表中制作指向新构造的I/O页表的条目,并且可以通知IOMMU关于该新更新的设备条目的情况。此时,对应IOMMU I/O表(例如,来自图形或其它I/O设备)和主机OS I/O表可以被映射到相同表上。
主机OS对页面保护或翻译执行的任何变化可以在处理器I/O页表和存储器I/O页表两者中得到更新。
IOMMU216被配置成执行传统由示例性管理程序234执行的I/O任务。这种布置消除了对用于保护、隔离、中断重新映射以及地址翻译的管理程序干涉的需要。然而,当发生无法由IOMMU216处理的页面错误时,IOMMU216可以请求管理程序234干涉以便解决所述页面错误。然而,一旦解决冲突,IOMMU216就可以继续原来的任务,而又不再需要管理程序干涉。
管理程序234(也被称为虚拟机器监视器(VMM))使用嵌套翻译层来分开并且隔离客户VM230和232。I/O设备(如I/O设备250、252和254)可以直接分配给任何并发运行的客户VM,以使得I/O设备250、252和254被包含到任何一个相应VM的存储器空间中。另外,I/O设备(如I/O设备250、252和254)不能破坏或检查属于管理程序234或另一VM的存储器或其它I/O设备。在客户VM内,存在内核地址空间和若干进程(用户)地址空间。在使用嵌套翻译信息而不使用客户翻译层的情况下,可以授予I/O设备内核权限以便使其可以相对自由地访问客户VM存储器的整个内容。
为了实现用户级(进程)I/O和高级计算模型,客户翻译层被实现以用于客户进程和I/O的分开和隔离。在使用IOMMU216中的客户翻译的情况下,I/O设备中的任一个可以直接分配给客户VM或I/O设备(如APD104或I/O设备250、252和254)中的进程,并且可以在同一地址空间中作为用户进程运行计算。进程地址空间可以由IOMMU216确认,以使得将使用正确的翻译表。也就是说,每个存储器事务可以用进程地址空间ID(PASID)进行标记。更确切地说,示例PASID可以用于标识x86规范客户VM内的应用地址空间。PASID可以在I/O设备(如I/O设备250、252和254)上使用,以便隔离驻存在共享本地存储器268中的并发上下文。
设备ID可由IOMMU216用来选择用于地址翻译或中断重映射操作的嵌套映射表。PASID与设备ID一起用来唯一识别应用地址空间。
在使用I/O总线连接I/O设备的系统中,总线协议可以扩展以便携带始发PASID以及设备ID、地址和访问类型。在PCI-SIG PCI-E规范中,总线分组的PASID事务层分组(TLP)前缀携有随后可由IOMMU216用来选择适当客户CR3GCR3表(如由元件标号246表示,并且如在前面提及的美国专利申请第61/423,062号中论述)的PASID信息。这确保了进程与VM之间的存储器隔离。
在将I/O设备集成到处理器裸片上的系统中,并非必须使用I/O总线将I/O设备连接至存储器上。在这些情况中,PASID可以简单地携带在集成I/O设备与集成IOMMU之间的线路上或者作为标记。对于软件兼容性,建议集成I/O设备仿真ATS行为和语义。在任一情况下,进程与VM之间的存储器隔离均得到确保。
出于性能或安全性考虑而包括本地存储器(如本地存储器268)的复杂多上下文I/O设备可以提供IOMMU216所提供的相同的存储器隔离和分开保证。
对于这种装置的通用体系结构,再次参考图2,图2示出系统元件CPU202和IOMMU216。I/O设备的许多部分是任选的,因此,示出多路复用器270、272、274和276,其中多种功能可以通过不同方式实现。例如,对系统地址空间的访问或者可以流经与ATS/PRI单元262一起工作的IOTLB264,或者它可以直接流至IOMMU216以便得到服务。设备处理复合器件258可以表示通用APD,如APD104、I/O设备(如I/O设备250、252和254)或其它专用计算引擎,如本文中论述。
在本发明的实施方案中,数据存取可以始发于CPU202或者始发于设备处理复合器件258。数据访问可以终止于来自本地存储器268的本地存储器访问或来自存储器206的系统访问。在一种示例性实现方式中,可以增添IOTLB264功能性,IOTLB264使用ATS以实现翻译效率。可以增添PPR/PRI支持以实现高级功能和效率。ATS/PRI高级功能性由元件标号262表示。外围设备可以提供私有MMU(如私有MMU260)功能以用于客户地址翻译和访问控制。
例如,外围本地存储器268的实现方式对于每个设备可以是唯一的。然而,通常,这种实现方式有利地确保每个设备将会保留以下系统性质:
1.从设备处理复合器件258到存储器206的访问通过私有MMU260或者通过IOMMU216处理,以便强制执行客户翻译所要求的策略。
2.从设备处理复合器件258到存储器206的访问通过IOTLB264(其可使用ATS和/或PRI请求262)或者通过IOMMU216处理,以便强制执行嵌套翻译所要求的策略。
3.从CPU202或设备处理复合器件258到外围本地存储器268的访问通过私有MMU260处理,以便强制执行客户翻译所要求的策略。
4.从CPU202或设备处理复合器件258到外围本地存储器268的访问通过本地存储保护映射266处理,以便强制执行嵌套翻译所要求的策略。
结合查看的图3A和图3B(分别由314和312表示)是根据图2的说明性实施方案的两层地址翻译系统的说明性框图。更确切地说,所述系统包括如在I/O页表224数据结构中建立的客户地址翻译表结构314和系统地址翻译表结构312。示出四级页表结构并且使用其来访问4千字节物理页面331。本发明的各实施方案提供使用更多或更少级的页表结构(例如,引用2M字节物理页面的三级页表结构;引用1G吉字节物理页面的两级页表结构等等)。
GVA可由发布地址翻译事务(例如。对ATS的请求)的I/O设备提供。最终,GVA可以翻译成与访问数据字节330相关联的SPA。
GCR3表条目317包括4级页面映射(PML4)表地址332。虽然PML4表地址332对应于根页表指针334,但是PML4表地址332是GPA的格式。系统314和312一起运行以执行嵌套遍历336,从而将PML4表地址332从GPA格式转换成SPA格式。SPA对应于4级页表338的根的系统物理地址。因此,与(例如)根页面表指针334相关联的黑色粗线可以表示使用嵌套遍历336获得的SPA。
4级页表338使用根页表指针334来识别,并且4级页表338的条目使用4级页面映射(PML4)偏移337进行索引。PML4偏移337与有待翻译的GVA326的位39至47相关联。因此,PML4条目(PML4E)339使用根页表指针334、4级页表338以及PML4偏移337来定位。当客户试图使用GVA326来引用存储器时,由于PML4E339是GPA,因此系统314和312一起工作使用嵌套遍历336将PML4E339转换成SPA。
为了完成嵌套遍历336,系统312可以使用存储器206中建立的I/O页表224结构针对来自客户地址翻译表结构314的每个GPA执行GPA到SPA转换。例如,GPA340可以加载PML4E339以用于转换,从而获得用于根页表指针341的对应SPA。GPA340包括用于索引系统地址翻译表结构312的各表的偏移。
嵌套遍历336使用与PML4E339相关联的nCR3342来定位4级页面映射(PML4)表344的根。PML4偏移346(GPA340的位39至47)用于索引至PML4表344中并且获得条目nPML4E348。nPML4E348指向页面目录指针(PDP)表350的根,并且PDP偏移352(GPA340的位30至38)用于索引至PDP表350中并且获得条目nPDPE354。
nPDPE354指向页面目录(PD)表356的根,并且PD偏移358(GPA340的位21至29)用于索引至PD表356中并且获得条目nPDE360。nPDE360指向页表362的根,并且PT偏移364(GPA340的位12至20)用于索引至页表362中并且获得条目nPTE366。nPTE366指向客户4KB存储页面368的根,并且物理页面偏移370(GPA340的位0至11)用于索引至客户4KB存储页面368中并且获得条目gPML4E372。gPML4E372是对应于GPA PML4E339的SPA值,并且由根页表指针341用来定位客户地址翻译表结构314中的3级页表374。
3级页表374使用PDP偏移375进行索引以便获得PDPE376(GPA格式)。嵌套遍历336用于将GPA PDPE376转换成对应于根页表指针377的SPA值。根页表指针377用来定位2级页表378,所述2级页面378使用页面目录偏移379(GVA326的位21至29)进行索引以便获得PDE380(GPA格式)。嵌套遍历336用于将GPA PDE380转换成对应于根页表指针381的SPA值。
在本发明的各实施方案中,根页表指针381用于定位1级页表382,所述1级页面382使用页表偏移383(GVA326的位12至20)进行索引以便获得PTE384(GPA格式)。嵌套遍历336用于将GPA PTE384转换成对应于根页表指针385的SPA值。根页面表指针385用于定位4千字节物理页面331,所述4千字节物理页面331使用物理页面偏移386(GVA326的位0至11)进行索引以便获得数据字节330。
因此,系统314和312使用嵌套页表遍历级联来执行两层GVA到GPA以及GPA到SPA地址翻译。虽然示出两层嵌套地址翻译,但是可以使用类似嵌套/递归调用实现额外的层。与系统地址翻译表结构312和客户地址翻译表结构314相关联的翻译可以在硬件中实现。一组硬件可以用于两组翻译,虽然也可以为每组客户/系统翻译提供单独的硬件。
如上所述,与常规多处理设备计算系统相关的一个挑战是与维护单独存储器系统和/或与共享存储器系统有关的驱动器管理相关的开销。常规多处理设备系统的这种开销的一个实例是要求在多个处理设备之间共享单个数据集合的情况下适应两个或更多个复制命令。
图4是使用两个单独复制命令的常规系统中的存储器复制事务的说明性框图400。为了方便,存储器402以及APD或其它I/O设备406大致类似于存储器206以及APD104或其它I/O设备250、252和254,并且不再次进行描述。
除了地址翻译,IOMMU216还提供对I/O设备的DMA传输的访问保护。另外,IOMMU216提供安全用户级应用来选择I/O设备。另外,IOMMU216提供安全VMVM客户OS访问来选择I/O设备。
对执行多个复制命令的要求(如图4所示)产生不必要的系统开销。例如,通常要求可被视为软件构造的单独的回弹缓冲器来适应多个复制命令。传统上,回弹缓冲器定位在用于适用于不支持64位寻址的设备的DMA流量的低端系统存储器中。OS可以将DMA数据复制到回弹缓冲器,或者将数据从回弹缓冲器复制到I/O驱动器所使用的高端存储器中的实际缓冲器。在一个实施例中,这种技术要求系统存储器将从一个处理设备接收到的数据(例如,图像数据)复制到可在其中操纵数据的另一处理设备(或本地I/O设备)存储器406。复制到本地设备存储器406由标号404表示。标号408表示对图像数据执行的操作(例如,计算、子例程执行或一些功能)。如由标号410表示,当操作完成时,然后必须将图像数据复制回系统存储器402。
IOMMU216可以实现系统级软件的显著增强。例如,一种增强提供64位系统上的传统32位I/O设备支持。这种增强不要求回弹缓冲器和代价高昂的存储器副本。因此,与复制命令相关的开销减少。
图5是消除了对图4所示单独复制命令的需要的一种高效存储器管理系统的说明性框图500。
在图5中,IOMMU516、存储器506、客户OS530和532以及管理程序534各自大致类似于IOMMU216、存储器206、客户OS230和232以及管理程序235。另外,I/O设备550、552和554大致类似于APD104或其它I/O设备250、252和254。因此,为了方便,图2和图5中的类似元件将不重复描述。
另外在图5中,标号590、592和594分别表示由示例性I/O设备550、552和554发送的DMA请求。IOMMU516所提供的嵌套分页事务使得示例性I/O设备550、552和554承担某一操作(例如,计算、子例程执行或一些功能)的一小部分,并且允许系统通过直接操纵高效地适应所述操作。
在一个示例性实施方案中,通过直接操纵,APD或其它I/O设备可以直接操纵可能包含图像数据的存储器506,同时图像数据仍在存储器506中。对存储器506的这种直接操纵使得存储器506以及I/O设备550、552和554能够对同一客户虚拟地址空间进行操作。在此实施例中,IOMMU516可以使用所映射的客户指针以有利于通过I/O设备550、552和554对存储器506进行直接访问。这消除了对存储器506在数据操纵前或者在对数据的任何操作完成后先将数据(例如,图像数据)复制到I/O设备550、552和554的需要。经由直接存储器操纵来消除这些额外复制动作、以及本文所述其它增强方式使得效率能够提高并且与数据复制相关的开销能够减小。
图6是根据本发明的另一方面的可操作的流程图600。在所示实施例中,系统600包括存储器606、IOMMU616以及外围设备687,它们大致类似于存储器206、IOMMU216以及I/O设备254。
在一个实施例中,存储器606包括事件日志620、命令缓冲器622、I/O页表624、设备表626、PPSR队列627、中断重映射表628、客户OS630、客户OS632以及管理程序634。这些元件与图2中所述那些类似。ATS请求680、ATS响应682、PRI请求684以及PRI响应686是对根据示例性图2引入的ATS/PRI262的更详细的图示。外围设备687可以被配置成评估ATS响应(如由标号688表示),并且可以被配置成评估PRI响应(如由标号689表示)。
本发明的另一方面提供由外围设备687用来将GPA翻译成SPA的ATS。在图6中,ATS提供用于虚拟化的安全的设备发起地址翻译。为了将GPA翻译成SPA,PCI-E连接的外围设备687发布具有或不具有由IOMMU616识别的PASID TLP前缀的ATS请求680(PCI SIG规范)。当要求时,IOMMU616使用来自IOTLB264的缓存信息和/或通过使用表遍历器244遍历页表来评估访问权限。IOMMU616被配置成确定681ATS680请求的结果,并且所得访问权限在ATS响应682中返回,而不要求由处理器和/或管理程序634干涉。
另外,地址翻译服务可由外围设备687请求以将GVA或GPA翻译成SPA。为了将GVA翻译成SPA,通过PCIe连接的外围设备687发布包含有效PASID的ATS请求680以呈现标志(例如,访问和脏位状态)和规范虚拟地址。集成外围设备687可以使用除了ATS协议外的手段(如线信号)来呈现标志和虚拟地址。出于效率起见,IOMMU616使用IOTLB264缓存信息来评估访问权限,并且当要求时,可以使用表遍历器244遍历页表。为了匹配AMD64语义,如果上一缓存信息指示权限不足以进行访问,那么IOMMU可以重新遍历客户页表、I/O页表624。所得访问权限可以在ATS响应682中返回681。为了携带用于客户地址的额外信息,IOMMU616使用包含有效PASID的PCIe TLP前缀。
IOMMU616必须更新GVA页表、I/O页表624中的已访问的位和脏位(未示出),同时服务ATS请求680,就好像外围设备687实际已经访问了存储器一样。出于评估GVA访问的位和脏位的目的,IOMMU616可以使用ATS请求680的ATS分组(未示出)中指示的访问级。用于只读访问的ATS请求680可以确定已访问位设置,并且用于读写访问的ATS请求680可以确定脏位设置。当处理GPA时,IOMMU616可将页表视为只读。
另外,软件发布INVALIDATE_IOTLB_PAGES命令以使IOMMU616生成对外围设备687的无效请求。当内容是GPA时,向下游地发送给外围设备687的无效请求缺乏有效PASID前缀。当内容是GVA并且PASID在PASID TLP前缀中时,向下游地发送给外围设备687的无效请求具有有效PASID前缀。
现在阐明这样的状况:在所述状况下,具有IOTLB264的外围设备687必须使得引起权限不足错误的缓存翻译条目无效并且使用ATS获得最新翻译。
外围设备687可以使用来自IOTLB264或经由ATS获得的地址翻译信息来确定嵌套(主机)访问的访问权限。作为AMD扩展,当已访问位和脏位两者在用于客户访问的IOTLB条目中均被设置为“1”时,具有OTLB264的外围设备687可以使得引起权限不足错误的缓存条目无效。外围设备687随后必须使用ATS请求客户翻译信息并且重试访问。如果修正后的权限不足以进行重试,那么外围设备687必须采取适当动作放弃访问或发布PCI-E PRI请求684来升级权限。
在ATS的情况下,IOMMU616具有用于确定681在ATS响应682中发送回的结果所需的所有信息。然而,在PRI的情况下,PRI请求被传递到客户OS630和632、管理程序634和/或软件(SW)以帮助确定683用于PRI响应686的结果。例如,PRI请求684要求软件策略决策由客户OS630和632和/或管理程序634做出。PRI、即一种PCI-Sig规范允许外围设备687请求来自示例性VM模块629(例如,软件)的存储器管理服务。
另外,作为对PCI-SIG ATS规范的补充,IOMMU616任选支持PRI规范。PRI结合ATS提供外围页面错误支持。用于PRI的IOMMU616支持是PPR服务。
在传统系统中,要求OS固定(pin)用于I/O的存储页面。固定存储是指始终将被保持在真实存储器中的存储页面。固定存储页面抑制分页器窃取用于其它用途的存储页面。存储页面通常必须在DMA开始前固定并且可以在DMA完成时解开固定。所固定的页面通常从容量有限的单独存储池分配。
ATS和PRI可以一起用于使得外围设备687能够将解开固定的页面用于I/O。当正在处理的ATS请求680时,在检测到访问权限不足或者页面不存在的情况下,IOMMU616不发送错误信号。而是,IOMMU616返回从I/O页表624计算出的许可。外围设备687检查PRI响应686以便确定适当动作(例如,使用PRI请求系统软件以服务I/O页表624中的页表条目)。使用外围页面请求服务(PPR)/PRI允许外围设备687请求OS改变对I/O页表624页面的访问权限。将ATS与PPR一起使用允许系统以减少的存储器占用进行高效操作。
在本发明的示例性操作中,IOMMU616被实现为当存储器606在物理上不可用于服务DMA作业请求时将存储器提供给外围设备687。例如,如果外围设备687发送ATS请求680并且在存储器606中存储在物理上不可用时,通常可能导致页面错误。页面错误可由响应于经由ATS_Calc623的存储器访问尝试,从命令缓冲器622到IOMMU616的信号表示。
另外,如果外围设备687是能够进行ATS的,那么外围设备687可以向IOMMU616发布PRI请求684。PRI请求684由IOMMU616接收,IOMMU616响应于PRI请求684将信号631发送到包括客户OS630、客户OS632以及管理程序634的系统块629,因为需要软件策略683来计算PRI响应686。管理程序634优先于客户OS630和632来处理IOMMU信号PRI_Calc631,并且具有在将对PRI_Calc631的处理传给客户OS630和632之前拒绝处理PRI_Calc631的首要权利。如果外围设备687发送PRI请求684并且在存储器606中存储器在物理上不可用,那么通常导致页面错误。页面错误可由响应于经由PRI_Calc631的存储器访问尝试,从命令缓冲器622到IOMMU616的信号表示。
如果页面错误产生,那么IOMMU616被配置成将ATS_Calc623或PRI_Calc631发送到PPSR表627(例如,PPR队列)。这是因为,当IOMMU616接收到有效PRI请求684时,它创建PPR消息以请求对虚拟地址空间的改变。处于VM区块629中的合适位置处的软件策略可以通过在页面中进行交换、分配新的页面、拒绝请求,升级安全权限、提供写时复制操作或者通过防止决定性页面错误的任何其它适应来解决页面错误问题。
支持PPR的IOMMU616可以借助于存储器606中的共享环形缓冲器(未示出)来将PPI请求报告给主机软件683。在启用时,IOMMU616可以将I/O设备的PPR记录写入到缓冲器中。主机软件683递增IOMMU216的PPR请求日志头指针(未示出),以向IOMMU616指示主机软件683已经耗尽PPR请求日志条目。当软件683已经完成处理PPR请求601时,PPR队列627使用IOMMU作业完成命令来向I/O设备687通知结果。
当IOMMU616向存储器606的对更多存储器的请求得到认同时,仅在尝试访问存储器606中的在物理上不存在于存储器606中的页面(即,I/O页表624页面尚未由OS加载)的情况下,虚拟区块629中的客户OS630或632才可以将磁盘页面(即,物理存储器)复制到存储器606中。
通常,当应用211开始进行处理时,它的页面没有一页在存储器中。因此,在执行DMA操作所必需的应用211的基本页面结合PRI响应686被加载到存储器606中前可能发生许多页面错误。当虚拟存储器块629操作用于仅加载DMA操作所必需的页面时,因此结果是,虚拟区块629中的多个进程可以被加载。当更多进程被允许加载到虚拟区块629中时,加载GCR3寄存器所需的时间量减小,如在前面提及的标题为“Input/Output Memory Management Unit Two-LayerAddressing”美国专利申请第61/423,062号中论述。
一旦软件策略683已经由VM区块629制定出,命令缓冲器622通知IOMMU616,如由箭头625表示。IOMMU616将ATS响应682或PRI响应686传送给IOMMU616。外围设备687评估所得ATS响应682和PRI响应686,如分别由标号688和689表示。或者,如果不存在解决方案,从而导致确定页面错误,那么IOMMU616可以写入事件日志620。
图7是实践本发明的一个实施方案的示例性方法700的图示。在方法700中,步骤702示出经由IOMMU216将与访问存储器402中数据相关联的指针传递到I/O设备406。I/O设备经由IOMMU访问存储器中的数据,而不需要将数据复制到I/O设备的本地I/O设备存储器中。
步骤704示出基于指针通过I/O设备来对存储器中的数据执行操作。IOMMU216可以基于IOMMU216所传递的指针控制I/O设备406。I/O设备406访问存储器402。这个操作不需要执行将存储器402中的数据复制到I/O装置406的本地存储器266中的复制操作404。也不需要将在410中操作的数据复制回存储器402的复制操作412。
结论
概述以及摘要部分可以阐明如发明人所构想的本发明的一个或多个但非所有的示例性实施方案,并且因此,并不意图通过任何方式对本发明和所附权利要求书进行限制。
本发明已在上文中借助示出特定功能和其关系的实现的功能构建块来描述。为了方便描述,本文已对这些功能构建块的边界进行任意界定。只要合适执行特定功能和其关系,就可界定替代边界。
特定实施方案的前述描述将会完全地揭示本发明的一般性质,以使他人可以在不背离本发明的一般概念的情况下通过应用本领域的技术范围内的知识来容易地修改和/或改编此类特定实施方案以用于各种应用。因此,基于本文所呈现的教导内容以及指导内容,此类改编以及修改意图在所公开的实施方案的等同物的范围内。应当理解,本文的措词或术语目的在于说明而非限制,因此技术人员将会根据教导内容以及指导内容来对本说明书的术语或措词进行解释。
本发明的宽度以及范围不应限于上述示例性实施方案,而应仅仅根据所附权利要求和它们的等同物来界定。

Claims (12)

1.一种方法,所述方法包括:
经由输入/输出存储器管理单元(IOMMU)将与访问存储器中的数据相关联的指针传递到输入/输出(I/O)设备,其中所述I/O设备经由所述IOMMU访问所述存储器中的所述数据,而不将所述数据复制到本地I/O设备存储器中;以及
基于所述指针通过所述I/O设备来对所述存储器中的所述数据执行操作。
2.如权利要求1所述的方法,其中所述IOMMU被配置成传递所述指针,而不需要通过管理程序或客户操作系统(OS)进行干涉。
3.如权利要求1所述的方法,其中所述指针被配置成可由所述I/O设备以及虚拟机中运行的进程使用,而不重新配置所述指针。
4.如权利要求1所述的方法,其还包括:使用与所述IOMMU相关联的嵌套分页事务通过所述I/O设备操纵所述存储器中的所述数据。
5.如权利要求1所述的方法,其中所述数据包括图像数据。
6.如权利要求1所述的方法,其中所述存储器和所述I/O设备对同一客户虚拟地址空间进行操作,以便提供通过所述客户OS对所述存储器中的所述数据的直接操纵。
7.一种装置,所述装置包括:
输入/输出存储器管理单元(IOMMU),所述IOMMU被配置成:
将与访问存储器中的数据相关联的指针传递到输入/输出(I/O)设备,其中所述I/O设备经由所述IOMMU访问所述存储器中的所述数据,而不将所述数据复制到本地I/O设备存储器中;
其中所述指针被配置成使得所述I/O设备能够对所述存储器中的所述数据执行操作。
8.如权利要求7所述的装置,其中所述IOMMU被配置成传递所述指针,而不需要通过管理程序或客户操作系统(OS)进行干涉。
9.如权利要求7所述的装置,其中所述指针被配置成可由所述I/O设备以及虚拟机中运行的进程使用,而不重新配置所述指针。
10.如权利要求7所述的装置,其中与所述IOMMU相关联的嵌套分页事务使得所述I/O设备能够操纵所述存储器中的所述数据。
11.如权利要求7所述的装置,其中所述存储器中的所述数据包括图像数据。
12.如权利要求7所述的装置,其中所述存储器和所述I/O设备对同一客户虚拟地址空间进行操作,以便提供通过所述客户OS对所述存储器中的所述数据的直接操纵。
CN201280062362.2A 2011-11-30 2012-11-19 高效存储器和资源管理 Active CN104040518B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/308,211 2011-11-30
US13/308,211 US8719464B2 (en) 2011-11-30 2011-11-30 Efficient memory and resource management
PCT/US2012/065860 WO2013081884A1 (en) 2011-11-30 2012-11-19 Efficient memory and resource management

Publications (2)

Publication Number Publication Date
CN104040518A true CN104040518A (zh) 2014-09-10
CN104040518B CN104040518B (zh) 2016-11-16

Family

ID=47436175

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280062362.2A Active CN104040518B (zh) 2011-11-30 2012-11-19 高效存储器和资源管理

Country Status (6)

Country Link
US (1) US8719464B2 (zh)
EP (1) EP2786259A1 (zh)
JP (1) JP5870206B2 (zh)
KR (1) KR101861297B1 (zh)
CN (1) CN104040518B (zh)
WO (1) WO2013081884A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105701019A (zh) * 2014-11-25 2016-06-22 阿里巴巴集团控股有限公司 一种内存管理方法以及装置
CN106874212A (zh) * 2016-12-30 2017-06-20 郑州云海信息技术有限公司 一种基于ipsan的存储器的通信方法和系统
CN109582599A (zh) * 2017-09-29 2019-04-05 上海宝存信息科技有限公司 数据储存装置以及非挥发式存储器操作方法
CN110869916A (zh) * 2017-07-14 2020-03-06 Arm有限公司 用于两层写时复制的方法和装置
CN112507649A (zh) * 2020-12-23 2021-03-16 珠海市一微半导体有限公司 一种模拟版图的数模引脚映射到数字版图的方法

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
US8874824B2 (en) 2009-06-04 2014-10-28 Memory Technologies, LLC Apparatus and method to share host system RAM with mass storage memory RAM
US9417998B2 (en) 2012-01-26 2016-08-16 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US9311226B2 (en) 2012-04-20 2016-04-12 Memory Technologies Llc Managing operational state data of a memory module using host memory in association with state change
US9164804B2 (en) 2012-06-20 2015-10-20 Memory Technologies Llc Virtual memory module
US9319254B2 (en) * 2012-08-03 2016-04-19 Ati Technologies Ulc Methods and systems for processing network messages in an accelerated processing device
US9116820B2 (en) 2012-08-28 2015-08-25 Memory Technologies Llc Dynamic central cache memory
US9479466B1 (en) * 2013-05-23 2016-10-25 Kabam, Inc. System and method for generating virtual space messages based on information in a users contact list
US9734079B2 (en) * 2013-06-28 2017-08-15 Intel Corporation Hybrid exclusive multi-level memory architecture with memory management
US9396113B2 (en) 2013-08-06 2016-07-19 Oracle International Corporation Flexible configuration hardware streaming unit
US9886736B2 (en) * 2014-01-20 2018-02-06 Nvidia Corporation Selectively killing trapped multi-process service clients sharing the same hardware context
US9830289B2 (en) 2014-09-16 2017-11-28 Apple Inc. Methods and apparatus for aggregating packet transfer over a virtual bus interface
US10078361B2 (en) 2014-10-08 2018-09-18 Apple Inc. Methods and apparatus for running and booting an inter-processor communication link between independently operable processors
US10042794B2 (en) 2015-06-12 2018-08-07 Apple Inc. Methods and apparatus for synchronizing uplink and downlink transactions on an inter-device communication link
US10055136B2 (en) * 2015-07-29 2018-08-21 Red Hat Israel, Ltd. Maintaining guest input/output tables in swappable memory
US9846592B2 (en) * 2015-12-23 2017-12-19 Intel Corporation Versatile protected input/output device access and isolated servicing for virtual machines
US10085214B2 (en) 2016-01-27 2018-09-25 Apple Inc. Apparatus and methods for wake-limiting with an inter-device communication link
US10120709B2 (en) 2016-02-29 2018-11-06 Red Hat Israel, Ltd. Guest initiated atomic instructions for shared memory page host copy on write
US10671419B2 (en) * 2016-02-29 2020-06-02 Red Hat Israel, Ltd. Multiple input-output memory management units with fine grained device scopes for virtual machines
US10572390B2 (en) * 2016-02-29 2020-02-25 Apple Inc. Methods and apparatus for loading firmware on demand
US10198364B2 (en) 2016-03-31 2019-02-05 Apple Inc. Memory access protection apparatus and methods for memory mapped access between independently operable processors
US10678702B2 (en) 2016-05-27 2020-06-09 Advanced Micro Devices, Inc. Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations
US10109099B2 (en) * 2016-09-29 2018-10-23 Intel Corporation Method and apparatus for efficient use of graphics processing resources in a virtualized execution enviornment
US10551902B2 (en) 2016-11-10 2020-02-04 Apple Inc. Methods and apparatus for providing access to peripheral sub-system registers
US10775871B2 (en) 2016-11-10 2020-09-15 Apple Inc. Methods and apparatus for providing individualized power control for peripheral sub-systems
KR101716715B1 (ko) 2016-12-27 2017-03-15 주식회사 티맥스클라우드 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치
WO2018176360A1 (en) * 2017-03-31 2018-10-04 Intel Corporation Scalable interrupt virtualization for input/output devices
US10228981B2 (en) * 2017-05-02 2019-03-12 Intel Corporation High-performance input-output devices supporting scalable virtualization
US10346226B2 (en) 2017-08-07 2019-07-09 Time Warner Cable Enterprises Llc Methods and apparatus for transmitting time sensitive data over a tunneled bus interface
US11372787B2 (en) * 2017-12-09 2022-06-28 Intel Corporation Unified address space for multiple links
US10331612B1 (en) 2018-01-09 2019-06-25 Apple Inc. Methods and apparatus for reduced-latency data transmission with an inter-processor communication link between independently operable processors
US10990436B2 (en) * 2018-01-24 2021-04-27 Dell Products L.P. System and method to handle I/O page faults in an I/O memory management unit
US20190227942A1 (en) * 2018-01-24 2019-07-25 Dell Products, Lp System and Method to Handle I/O Page Faults in an I/O Memory Management Unit
US11792307B2 (en) 2018-03-28 2023-10-17 Apple Inc. Methods and apparatus for single entity buffer pool management
US10430352B1 (en) 2018-05-18 2019-10-01 Apple Inc. Methods and apparatus for reduced overhead data transfer with a shared ring buffer
US10585699B2 (en) 2018-07-30 2020-03-10 Apple Inc. Methods and apparatus for verifying completion of groups of data transactions between processors
US10719376B2 (en) 2018-08-24 2020-07-21 Apple Inc. Methods and apparatus for multiplexing data flows via a single data structure
US10846224B2 (en) 2018-08-24 2020-11-24 Apple Inc. Methods and apparatus for control of a jointly shared memory-mapped region
US10838450B2 (en) 2018-09-28 2020-11-17 Apple Inc. Methods and apparatus for synchronization of time between independently operable processors
US10789110B2 (en) 2018-09-28 2020-09-29 Apple Inc. Methods and apparatus for correcting out-of-order data transactions between processors
US11249918B2 (en) * 2018-10-30 2022-02-15 Hewlett Packard Enterprise Development Lp Mapping entry invalidation
US20200387326A1 (en) * 2019-06-10 2020-12-10 Advanced Micro Devices, Inc. Guest Operating System Buffer and Log Accesses by an Input-Output Memory Management Unit
US11829303B2 (en) 2019-09-26 2023-11-28 Apple Inc. Methods and apparatus for device driver operation in non-kernel space
US11558348B2 (en) 2019-09-26 2023-01-17 Apple Inc. Methods and apparatus for emerging use case support in user space networking
US11606302B2 (en) 2020-06-12 2023-03-14 Apple Inc. Methods and apparatus for flow-based batching and processing
US11182092B1 (en) 2020-07-14 2021-11-23 Red Hat, Inc. PRI overhead reduction for virtual machine migration
US11775359B2 (en) 2020-09-11 2023-10-03 Apple Inc. Methods and apparatuses for cross-layer processing
US11954540B2 (en) 2020-09-14 2024-04-09 Apple Inc. Methods and apparatus for thread-level execution in non-kernel space
US11799986B2 (en) 2020-09-22 2023-10-24 Apple Inc. Methods and apparatus for thread level execution in non-kernel space
EP4315084A1 (en) * 2021-03-25 2024-02-07 INTEL Corporation Pasid granularity resource control for iommu
US11876719B2 (en) 2021-07-26 2024-01-16 Apple Inc. Systems and methods for managing transmission control protocol (TCP) acknowledgements
US11882051B2 (en) 2021-07-26 2024-01-23 Apple Inc. Systems and methods for managing transmission control protocol (TCP) acknowledgements

Citations (5)

* Cited by examiner, † Cited by third party
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
WO2011011768A1 (en) * 2009-07-24 2011-01-27 Advanced Micro Devices, Inc. Iommu using two-level address translation for i/o and computation offload devices on a peripheral interconnect
WO2011011769A1 (en) * 2009-07-24 2011-01-27 Advanced Micro Devices, Inc. I/o memory management unit including multilevel address translation for i/o and computation offload
US20110161620A1 (en) * 2009-12-29 2011-06-30 Advanced Micro Devices, Inc. Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices
WO2011103184A2 (en) * 2010-02-17 2011-08-25 Advanced Micro Devices, Inc. Iommu architected tlb support

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6684305B1 (en) * 2001-04-24 2004-01-27 Advanced Micro Devices, Inc. Multiprocessor system implementing virtual memory using a shared memory, and a page replacement method for maintaining paged memory coherence
JP3892829B2 (ja) * 2003-06-27 2007-03-14 株式会社東芝 情報処理システムおよびメモリ管理方法
US7562179B2 (en) * 2004-07-30 2009-07-14 Intel Corporation Maintaining processor resources during architectural events
US7454414B2 (en) * 2005-08-30 2008-11-18 International Business Machines Corporation Automatic data retrieval system based on context-traversal history
US20110016290A1 (en) * 2009-07-14 2011-01-20 Arie Chobotaro Method and Apparatus for Supporting Address Translation in a Multiprocessor Virtual Machine Environment
US8438360B2 (en) * 2009-11-23 2013-05-07 Symantec Corporation Distributed storage through a volume device architecture

Patent Citations (5)

* Cited by examiner, † Cited by third party
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
WO2011011768A1 (en) * 2009-07-24 2011-01-27 Advanced Micro Devices, Inc. Iommu using two-level address translation for i/o and computation offload devices on a peripheral interconnect
WO2011011769A1 (en) * 2009-07-24 2011-01-27 Advanced Micro Devices, Inc. I/o memory management unit including multilevel address translation for i/o and computation offload
US20110161620A1 (en) * 2009-12-29 2011-06-30 Advanced Micro Devices, Inc. Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices
WO2011103184A2 (en) * 2010-02-17 2011-08-25 Advanced Micro Devices, Inc. Iommu architected tlb support

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ADVANCED MICRO DEVICES: "AMD I/O Virtualization Technology (IOMMU) Specification-PID 48882 Rev 2.00", 《HTTP://DEVELOPER.AMD.COM/WORDPRESS/MEDIA/2012/10/488821.PDF》, 24 March 2011 (2011-03-24) *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105701019A (zh) * 2014-11-25 2016-06-22 阿里巴巴集团控股有限公司 一种内存管理方法以及装置
CN106874212A (zh) * 2016-12-30 2017-06-20 郑州云海信息技术有限公司 一种基于ipsan的存储器的通信方法和系统
CN110869916A (zh) * 2017-07-14 2020-03-06 Arm有限公司 用于两层写时复制的方法和装置
CN110869916B (zh) * 2017-07-14 2023-10-24 Arm有限公司 用于两层写时复制的方法和装置
CN109582599A (zh) * 2017-09-29 2019-04-05 上海宝存信息科技有限公司 数据储存装置以及非挥发式存储器操作方法
CN109582599B (zh) * 2017-09-29 2023-12-22 上海宝存信息科技有限公司 数据储存装置以及非挥发式存储器操作方法
CN112507649A (zh) * 2020-12-23 2021-03-16 珠海市一微半导体有限公司 一种模拟版图的数模引脚映射到数字版图的方法
CN112507649B (zh) * 2020-12-23 2024-04-02 珠海一微半导体股份有限公司 一种模拟版图的数模引脚映射到数字版图的方法

Also Published As

Publication number Publication date
JP5870206B2 (ja) 2016-02-24
KR20140102695A (ko) 2014-08-22
CN104040518B (zh) 2016-11-16
EP2786259A1 (en) 2014-10-08
US8719464B2 (en) 2014-05-06
US20130138840A1 (en) 2013-05-30
WO2013081884A1 (en) 2013-06-06
JP2015500524A (ja) 2015-01-05
KR101861297B1 (ko) 2018-05-25

Similar Documents

Publication Publication Date Title
CN104040518A (zh) 高效存储器和资源管理
CN101751284B (zh) 一种分布式虚拟机监控器的i/o资源调度方法
US10048881B2 (en) Restricted address translation to protect against device-TLB vulnerabilities
US20130145055A1 (en) Peripheral Memory Management
CN102103517B (zh) 高效嵌套虚拟化
US20130145051A1 (en) Direct Device Assignment
CN102906702B (zh) 对适配器的地址空间的访客端访问
CN103034524A (zh) 半虚拟化的虚拟gpu
US20130262736A1 (en) Memory types for caching policies
JP2015135696A (ja) ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供
CN104685479A (zh) 客户虚拟机内的虚拟输入/输出存储器管理单元
JP2013515983A (ja) 仮想化環境においてi/o処理を行う方法および装置
CN102906716A (zh) 依据适配器的多个地址空间
CN102906721A (zh) 与访问地址空间并行地对地址空间调整大小
KR102104695B1 (ko) 하드웨어 디바이스에 대한 소프트웨어 인터페이스
CN102906693B (zh) 用于执行用于将数据存储在适配器中的存储指令的方法及系统
JP2007183952A (ja) ゲストがメモリ変換されたデバイスにアクセスする方法及び装置
CN102906720A (zh) 启用/禁用计算环境的适配器
CN104025185A (zh) 用于使用gpu控制器来预加载缓存的机制
CN104583959A (zh) 允许处理器资源的虚拟化
CN102906694A (zh) 用于与适配器进行通信的加载指令
US20170249106A1 (en) Multiple input-output memory management units with fine grained device scopes for virtual machines
EP3336696A1 (en) Implementing device models for virtual machines with reconfigurable hardware
WO2022001808A1 (zh) 一种系统以及中断处理方法
CN105229600B (zh) 基于能力的设备驱动程序框架

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