CN107209723A - 用于虚拟化的细粒度地址重新映射 - Google Patents
用于虚拟化的细粒度地址重新映射 Download PDFInfo
- Publication number
- CN107209723A CN107209723A CN201580072969.2A CN201580072969A CN107209723A CN 107209723 A CN107209723 A CN 107209723A CN 201580072969 A CN201580072969 A CN 201580072969A CN 107209723 A CN107209723 A CN 107209723A
- Authority
- CN
- China
- Prior art keywords
- subpage
- address
- physical address
- virtual
- converter
- 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
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/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]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- 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
- 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/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- 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
Abstract
描述了地址重新映射技术。方法可以包括在系统存储器的分页设备处接收来自子页转换器的输入/输出(IO)设备的第一物理地址,其中子页位置指示符可以与第一物理地址相关联。方法可以进一步包括当子页位置指示符可被设置为子页查找模式时,基于物理地址在子页转换表中标识虚拟地址。方法可以进一步包括基于子页位置指示符确定何时在子页转换表中查找物理地址。方法可以进一步包括将虚拟地址传递到虚拟机。
Description
背景技术
虚拟化的系统可以将硬件与软件资源组合为单个实体。虚拟化的系统可以共享诸如存储或处理时间的计算机资源。例如,虚拟化可以将一个物理计算机转换为多个虚拟机。虚拟机可以类似于唯一的物理设备操作,例如,运行其自己的操作系统(OS)。输入/输出存储器管理单元(IOMMU)可以使得虚拟机能使用外围设备,诸如以太网硬件、加速图形卡和硬驱动控制器。为了在虚拟机与外围设备之间传递操作,可以将地址在外围设备的物理存储器地址与虚拟机的虚拟存储器地址之间转换或重新映射。可以在单个计算机或服务器内、在一组计算机或服务器内或跨网络支持虚拟化。
附图说明
图1a示出了根据一个实施例的使用输入/输出(IO)虚拟化的计算机系统中的硬件组件的框图。
图1b示出了根据一个实施例的分页机制的转换表中的页和子页。
图2a示出了根据一个实施例的具有细粒度的地址重新映射的虚拟化系统。
图2b示出了根据一个实施例的IO设备将虚拟地址传递到虚拟机的方法的时序图。
图2c示出了根据一个实施例的虚拟机将物理地址传递到IO设备的方法的时序图。
图3示出了根据一个实施例的子页转换表中的单个条目的信息内容。
图4示出了根据一个实施例的存储和检索子页转换器的地址转换的示图。
图5是示出根据一个实施例的将虚拟地址传递到虚拟机的方法的流程图。
图6A是示出根据一个实施例的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。
图6B是示出根据一个实施例的实现安全存储器重新分区的处理器的微架构的框图。
图7示出了根据一个实施例的包括执行安全存储器重新分区的逻辑电路的处理器的微架构的框图。
图8是根据一个实现的计算机系统的框图。
图9是根据另一实现的计算机系统的框图。
图10是根据一个实现的片上系统的框图。
图11示出了计算系统的框图的另一实现。
图12示出了计算系统的框图的另一实现。
具体实施方式
描述了用于输入/输出(IO)设备虚拟化的重新映射技术。
虚拟机监视器("VMM")可以创建一种环境以使得多个操作系统能在计算设备上同时地或并行地运行。例如,为不同的操作系统(OS)(诸如Windows、Mac或Linux)写入的应用可以同时在计算设备的相同硬件上运行。VMM可以在计算机系统的启动期间被加载,并且可以从计算机系统启动的时间到计算设备关闭的时间控制计算设备的硬件。
当操作系统在VMM上运行时,计算设备的硬件可以被虚拟化以向操作系统提供对计算设备的控制。硬件可以包括:存储器、输入/输出(IO)设备和中央处理单元(CPU)。例如,为了虚拟化CPU,硬件可以跟踪OS何时执行特权指令(privileged instruction),并且VMM可以对特权指令进行仿真以仿真具有对硬件的唯一控制的操作系统。为了使存储器虚拟化,VMM可以在OS对物理存储器的使用与硬件处的计算设备存储器之间转换。
IO虚拟化可以涉及两组设备驱动器,一组设备驱动器在OS水平,并且一组设备驱动器在VMM水平。在不同水平的驱动器可以提供中断处理程序。在一个示例中,可以在不考虑VMM驱动器的情况下配置OS设备驱动器(例如,基于软件的IO虚拟化)。在该示例中,OS中的驱动器可以用于执行IO操作,如同OS驱动器控制IO设备,并且VMM可以拦截IO操作以及通过使用VMM设备驱动器来执行OS驱动器的IO操作(例如,仿真的IO操作)。当来自IO设备的IO操作发生时,VMM驱动器中的中断处理程序可以接收IO操作。VMM驱动器可以处理IO操作并且将IO操作传递到OS设备驱动器的处理程序。基于软件的IO虚拟化的优势可以是用于虚拟化的灵活的系统。然而,因为VMM软件对IO操作的干预,所以基于软件的IO虚拟化会是缓慢的并且消耗大量功率。
在一个示例中,可以基于VMM驱动器配置OS设备驱动器(例如,基于硬件的IO虚拟化)。基于硬件的IO虚拟化的一个示例可以是外围组件互连快速(PCIe)单根IO虚拟化(SR-IOV)。然而,在基于硬件的IO虚拟化中,硬件必须显式地支持IO虚拟化,其会增加虚拟化系统的复杂度和成本。此外,基于硬件的IO虚拟化的可扩展性会被供应商限制到硬件的配置,其会被硬件约束而不是被硬件在其中所使用的系统的尺寸或类型约束。此外,基于硬件的IO虚拟化可以基于虚拟化系统中的设备或设备类型而变化,其会增加虚拟化系统的复杂度并且降低硬件的可重用性。
传统地,对基于硬件的IO虚拟化不提供硬件支持的设备可以为硬件的操作使用基于软件的IO虚拟化。例如,未被设计为用于基于硬件的IO虚拟化的硬件可以将门铃紧缩为存储器中的单个页。门铃可以用于通知在硬件设备与软件应用之间的高级虚拟中断控制器(A VIC)中断。例如,发送器可以创建命令(例如,将消息写入到邮箱)并且将命令传递到接收器(例如,按门铃)。被传递的命令可以中断并且通知接收器命令准备好执行。接收器执行命令并且可以设置共享寄存器中的位,指示对命令的确认。
门铃消息可以使得虚拟机的OS(例如,虚拟化的OS)能在不使用管理程序的情况下与在定义的虚拟机(VM)边界的外部的硬件和/或软件通信。例如,控制平面虚拟化的OS可以有效地通知数据平面应用可能影响分组被怎样处理的变化。门铃可以被分配到跟踪VM门铃写入的VMM。VMM可以将地址转换为存储器的单个页内的偏移,并且可以将门铃写入发到设备硬件。为IO虚拟化配置的硬件可以仅为IO虚拟化提供有限的支持。例如,当需要比设备或硬件能够支持的IO资源更多的IO资源时,VMM可以依赖于基于软件的IO虚拟化。
本文中所描述的实施例可以通过使用对存储器的小区域的地址重新映射来解决上文提到的缺陷。对存储器的小区域的地址重新映射(例如,细粒度的地址重新映射)可以通过使得紧缩数据结构和寄存器阵列能被细分以及使得各个元素能被分配到特定进程和/或硬件或设备来跨越基于软件的IO虚拟化与基于硬件的IO虚拟化之间的差异。在一个示例中,对于单个门铃粒度的地址重新映射,VMM可以通过特定VM将直接访问分配到一个或多个设备门铃。细粒度水平的地址重新映射(例如,细粒度的地址重新映射)(诸如在单个门铃粒度)的一个优势可以是将VMM的能力扩展为直接将VM分配到硬件以改善VM和计算系统的功率和性能。细粒度的地址重新映射的另一优势可以使得虚拟化的系统能更有效地操作并且使用更低成本的硬件以用于虚拟化(例如,在没有用于基于硬件的IO虚拟化的专用硬件的情况下的虚拟化)。例如,通过实现虚拟化系统内的高速缓存,可以基于计算系统的硬件和/或使用虚拟化系统的操作平台来按比例缩放使用具有细粒度的地址重新映射的虚拟化系统的计算系统。在该示例中,高速缓存可以被分布在IO结构中以提高高速缓存性能并且避免使用大的中央高速缓存。
图1a示出了根据一个实施例的使用IO虚拟化的计算机系统100中的硬件组件的框图。计算机系统100可以是网络服务器、个人计算机(PC)、膝上型计算机、平板计算设备、大型计算机、智能电话等等。计算机100可以包括经由总线103耦合到存储器104的一个或多个处理器102。存储器104可以包括诸如随机存取存储器(RAM)存储106的存储器设备、存储器高速缓存108等等。存储器104可以经由IO结构110耦合到外部设备。外部设备可以包括:网络适配器112,用于将计算机系统100与网络114相接;存储控制器116,用于将计算机系统100与存储设备118相接;以及工作站控制器120,用于将计算机系统100与终端或工作站122相接。存储器104可以包括分页机制的页表和/或子页表,以将外部设备114、118和/或122和/或IO结构110的物理地址重新映射或转换为虚拟地址以用于在处理器102上运行的虚拟机。IO结构110可以包括存储器124,诸如高速缓存。
图1a的示例中描绘的特征可以变化。例如,可使用诸如光盘驱动器的其他外围设备,以作为所描绘的硬件的附加或替代。描绘的示例不意味着暗示限制。图1a不旨在穷举或限制本公开。图1的各个元件或特征通常不限于该特定实施例,而是在可应用的地方是可互换的,并且可以在所选择的实施例中使用,即使未被具体示出或描述。此类变化不应被视为对本公开的背离,并且所有此类修改旨在被包括在本公开的范围内。
图1b示出了根据一个实施例的分页机制130的转换表136中的页132和子页134。页132可以是用于从次级存储存储和检索数据以在主存储器中使用的存储器。例如,操作系统可以从块(例如,页132)中的次级存储存储和/或检索数据以在主存储器中使用,其中页132可以是固定的或相同的尺寸。在另一示例中,操作系统可以从子块(例如,子页134)中的次级存储存储和/或检索数据以在主存储器中使用,其中子页可以在容量或尺寸上小于页并且在尺寸上可以是固定的或可以变化。分页和子分页可以为存储提供不连续的物理地址。例如,在分页和子分页之前,计算系统将程序适配到连续的存储中,其导致了存储和分片(fragmentation)问题。具有页132和/或子页134的分页机制130可以为不适配于物理随机存取存储器(RAM)的数据提供次级存储器存储。
图2a示出了根据一个实施例的具有细粒度的地址重新映射的虚拟化系统200。虚拟化系统200可以细分紧缩数据结构和寄存器阵列并且将各个元素分配到进程和/或设备。虚拟化系统200可以包括:虚拟机202、虚拟机管理器(VMM)或管理程序204、处理器206、系统存储器208、IO地址转换器218、本地IO接口设备220和IO设备222。虚拟机202可以是仿真计算机系统或操作系统的软件和/或硬件。VMM可以是能创建和运行虚拟机202的软件、固件和/或硬件。VMM可以在计算系统的处理器206上运行。处理器206可以耦合到系统存储器208,其中系统存储器可以存储数据。系统存储器208可以包括具有页转换表212和/或子页转换表214的分页机制210。分页机制210可以从页中的次级存储检索数据以在系统存储器208中使用。当物理随机存取存储器(RAM)中可能没有空间用于存储数据,分页机制可以使得OS能为数据使用次级存储。
页转换表212可以耦合到IO地址转换器218。IO地址转换器218可以将虚拟页地址转换或重新映射为物理页地址,反之亦然。子页转换表214可以耦合到子页转换器216、224、226和/或228。在一个示例中,子页转换器216可以被集成到分页机制210中。在另一示例中,子页转换器224、226和228可以被分别集成到本地IO接口设备220(例如,IO结构)和/或IO设备222中。子页转换器216、224、226和/或228可以是虚拟化系统200使用的硬件、固件和/或软件,用于在虚拟机202的虚拟地址与IO设备222的物理地址之间重新映射或转换信息。IO地址转换器218和/或子页转换器216、224、226和/或228可以包括高速缓存存储。被集成到分页机制210中的子页转换器216可以使地址匹配的尺寸减小以调节页偏移。
子页转换器216、224、226和/或228可以分别使用在本地IO接口设备220或IO设备222处确定的经解码的存储器映射的输入/输出(MMIO)范围内的偏移。当子页转换器228可以集成到IO设备222中时,那么偏移可以被限制到由虚拟化系统200分配给IO设备222的MMIO范围。当子页转换器224和226可以集成到连接到IO设备222的本地IO接口设备220内时,则偏移可以被限制到与由子页转换器224和226管理的IO设备222相关联的MMIO范围。由子页转换器224和226进行的转换可以被存储在子页转换表214中。由子页转换器224和226进行的转换可以与在本地IO接口设备220内使用的地址空间相关联。在一个示例中,在本地IO接口设备220内使用的用于转换的地址空间可以是基于虚拟化系统200和/或支持本地IO接口设备220内的处理器地址空间标识(ID)。
本地IO接口设备220可以是可以在IO设备222与IO地址转换器218或子页转换器216、224、226和/或228之间接合的交换机(诸如根联合体或PCIe交换机)。IO设备222可以是诸如以太网硬件、加速图形卡、硬驱动控制器等等的设备。
图2b示出了根据一个实施例的IO设备234将虚拟地址传递到虚拟机240的方法的时序图。该方法可以从处理器232将进程标签ID(诸如处理器地址空间ID(PASID))传递到IO设备234(步骤242)开始。当IO设备234接收用于执行动作的输入(诸如来自工作站的请求)时,IO设备234可以将与该动作相关联的物理地址传递到子页转换器236(步骤244)。子页转换器236可以通过搜索子页转换器236的存储器来确定子页转换器236的存储器(诸如高速缓存)何时可能正在存储与物理地址相关联的虚拟地址(步骤246)。当子页转换器236的存储器正在存储相关联的虚拟地址时,子页转换器236可以将虚拟地址直接传递到虚拟机240(步骤248)。存储子页转换地址的存储器可以用于使对存储在系统存储器238中的转换的读取最小化。
当子页转换器236的存储器没有正在存储相关联的虚拟地址时,子页转换器236可以使用系统存储器238的子页转换表来确定与物理地址相关联的虚拟地址(步骤250)。为了确定与物理地址相关联的虚拟地址,子页转换器236可以迭代或搜索子页转换表,诸如通过使用表遍历器(table walker)。子页转换器236可以将物理地址传递到系统存储器238的分页机制,其中物理地址可以包括子页位置指示符(步骤252)。子页位置指示符可以指示相关联的虚拟地址何时被存储在分页机制的页转换表中(例如,页位置模式)或分页机制的子页转换表中(例如,子页位置模式)。
当分页机制确定子页位置指示符指示相关联的虚拟地址被存储在子页转换表中时(步骤254),分页机制可以从子页转换表中查找或检索相关联的虚拟地址(步骤256)。在一个示例中,当从子页转换表检索到相关联的虚拟地址时,子页转换器236可以经由系统存储器238将相关联的虚拟地址传递到虚拟机240(步骤258)。在另一示例中,当从子页转换表检索到相关联的虚拟地址时(步骤260),子页转换器236可以将相关联的虚拟地址直接传递到虚拟机240(步骤262)。当虚拟机240接收相关联的虚拟地址时,虚拟机240可以基于相关联的虚拟地址来执行命令(步骤264)。
图2c示出了根据一个实施例的虚拟机240将物理地址传递到IO设备234的方法的时序图。该方法可以从处理器232将进程标签ID传递到虚拟机240(步骤270)开始。当虚拟机240接收用于执行动作的命令(诸如来自用户或在虚拟机240上运行的应用的请求)时,虚拟机240可以将与动作相关联的虚拟地址传递到子页转换器236(步骤272)。子页转换器可以通过搜索子页转换器236的存储器来确定子页转换器236的存储器(诸如高速缓存)何时可能正在存储与虚拟地址相关联的物理地址(步骤274)。当子页转换器236的存储器正在存储相关联的物理地址时,子页转换器236可以将物理地址直接传递到虚拟机240(步骤276)。
当子页转换器236的存储器没有正在存储相关联的物理地址时,子页转换器236可以使用系统存储器238的子页转换表来确定与虚拟地址相关联的物理地址(步骤278)。为了确定与虚拟地址相关联的物理地址,子页转换器236可以迭代或遍历子页转换表,诸如通过使用表遍历器。子页转换器236可以将虚拟地址传递到系统存储器238的分页机制,其中物理地址可以包括子页位置指示符(步骤280)。子页位置指示符可以指示相关联的物理地址何时被存储在分页机制的页转换表中或分页机制的子页转换表中。
当分页机制确定子页位置指示符指示相关联的物理地址被存储在子页转换表中时(步骤282),分页机制可以从子页转换表中查找或检索相关联的虚拟地址(步骤284)。在一个示例中,当从子页转换表检索到相关联的物理地址时,子页转换器236可以经由系统存储器238将相关联的物理地址传递到IO设备234(步骤286)。在另一示例中,当从子页转换表检索到相关联的物理地址时(步骤288),子页转换器236可以将相关联的物理地址直接传递到IO设备234(步骤290)。当IO设备234接收相关联的物理地址时,IO设备234可以基于相关联的物理地址来执行命令(步骤292)。
图3示出了根据一个实施例的子页转换表中的单个条目的内容。子页转换表条目可以包括进程标签ID 302、主机地址空间中的源地址304、被转换的地址的尺寸(诸如单个高速缓存行或双字)306和被转换的地址308。会被转换的区域的尺寸306可以是用于不同使用情形(例如,不同尺寸的门铃)的尺寸范围。在一个示例中,当将物理地址传递到虚拟机时,IO设备可以利用进程标签ID 302来标记或修改来自IO设备的物理地址。在另一示例中,当将虚拟地址传递到IO设备时,虚拟机可以利用进程标签ID 302来标记或修改来自虚拟机的虚拟地址。
图4示出了根据一个实施例的用于存储和检索子页转换器的地址转换的方法。子页转换器(诸如图2a、2b或2c所示的子页转换器)可以通过将主机地址空间信息中的源地址传递到包括子页转换表的系统存储器的分页机制来在存储在系统存储器中的转换内定位转换条目。在一个示例中,子页转换可以被存储在页转换表中。在该示例中,子页转换器的表遍历器可以通过使用虚拟或物理地址的源地址的一部分来在页转换表中找到页。在另一示例中,子页转换可以被存储在独立的或分开的子页转换表中。可以通过使用处理器地址空间ID(PASID)方案来索引存储在页转换表中或分开的子页转换表中的子页转换。PASID可以是与被IO设备请求的用于被虚拟机执行的进程或被虚拟机请求的用于被IO设备执行的进程相关联的进程标签ID。PASID可以被虚拟化系统的处理器指定并且被传递到IO设备和/或虚拟机。
使用PASID方案的优势可以是通过隔离系统存储器中的转换条目来增加IO虚拟化安全性。PASID可以扩展用于使主机地址与转换相匹配的位的数量。为了减少表条目查找复杂度和提高表条目查找性能,可以通过使用子页转换器216、224、226和/或228来将PASID方案与地址转换方案组合以存储和检索子页地址转换。
图4进一步示出了当子页转换器检索或存储子页转换时,子页转换器可以传递包括源地址和被转换的地址的单个条目,如前面段落所讨论的。系统存储器可以通过使用源地址和被转换的地址来存储子页转换。当子页转换器请求检索子页转换时,子页转换器可以利用源地址空间和被转换的地址来传递请求。
在一个示例中,表遍历器可以从表基础402处开始并且可以通过使用PASID来迭代PASID表404以查找到散列表406的指针。在一个示例中,指针可以包括源地址,并且表遍历器然后可以使用源地址的至少一部分或一片(诸如64位源地址的位21-39)来在散列表406中定位条目408。在该示例中,条目408可以包括源地址412。当条目408的源地址412与散列表406的源地址匹配时,相邻地址414可以是被转换的地址,例如子页转换地址。在另一示例中,指针可以包括源地址并且表遍历器然后可以使用源地址的至少一部分来在散列表406中定位条目410。当条目410的源地址416可能与散列表406的源地址不匹配时,相邻地址418可以指向密钥值表420中的位置。密钥值表420可以包括与相邻地址418匹配的密钥422(例如,源地址)和可以是被转换的地址的值424(例如,子页转换地址)。
图4的示例中描绘的特征可以变化。描绘的示例不意味着暗示限制。图4不旨在穷举或限制本公开。图4的各个元件或特征通常不限于该特定实施例,而是在可应用的地方是可互换的,并且可以在所选择的实施例中使用,即使未被具体示出或描述。此类变化不应被视为对本公开的背离,并且所有此类修改旨在被包括在本公开的范围内。
图5是示出根据一个实施例的将虚拟地址传递到虚拟机的方法500的流程图。方法500可由可包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如,在处理器上运行的指令)、固件或其组合的处理逻辑来执行。在一个实施例中,图6A或6B的处理器600执行方法500。在另一个实施例中,图7的处理器700执行方法500。在另一个实施例中,图8的处理器870和/或880执行方法500。在另一个实施例中,图9的处理器970和/或980执行方法500。在另一个实施例中,图10的核1002的一个或多个执行方法500。在另一个实施例中,图11的核1106和/或1107执行方法500。在另一个实施例中,图12的处理设备1202执行方法500。替代地,图6-12的计算系统的其他组件可以执行方法500的某些或所有操作。
参照图5,方法200通过在系统存储器的分页设备处接收来自子页转换器的输入/输出(IO)设备的第一物理地址而开始,其中子页位置指示符与第一物理地址相关联(框510)。该方法可以包括当子页位置指示符被设置为子页查找模式时,基于物理地址标识子页转换表中的虚拟地址(框512)。该方法可以包括将虚拟地址传递到虚拟机(框514)。
图6A是示出根据一个实施例的实现安全存储器重新分区的处理器600的微架构的框图。具体地,根据本公开的至少一个实施例,处理器600描绘了被包括在处理器中的有序架构核以及寄存器重命名逻辑、乱序发布/执行逻辑。可以在处理器600中实现页面添加和内容复制的实施例。
处理器600包括耦合至执行引擎单元650的前端单元630,并且两者均耦合至存储器单元670。处理器600可以包括精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代核类型。作为又一选项,处理器600可以包括专用核,例如,网络或通信核、压缩引擎、图形核等。在一个实施例中,处理器600可以是多核处理器或可以是多处理器系统的一部分。
前端单元630包括耦合至指令高速缓存单元634的分支预测单元632,指令高速缓存单元634耦合至指令转换后备缓冲器(TLB)636,指令转换后备缓冲器636耦合至指令取出单元638,指令取出单元638耦合至解码单元660。解码单元660(也被称为解码器)可以解码指令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。可使用各种不同的机制来实现解码器660。合适的机制的示例包括但不限于:查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元634进一步耦合至存储器单元670。解码单元660耦合至执行引擎单元650中的重命名/分配器单元652。
执行引擎单元650包括耦合至引退单元654的重命名/分配器单元652以及一组一个或多个调度器单元656。调度器单元656表示任何数目的不同调度器,包括预留站(RS)、中央指令窗等。调度器单元656耦合至物理寄存器堆单元658。物理寄存器堆单元658中的每一个表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型(诸如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、等等)、状态(诸如,指令指针,其是将要被执行的下一个指令的地址)等等。物理寄存器堆单元658被引退单元654所覆盖,以示出可实现寄存器重命名和乱序执行的多种方式(诸如,使用重排序缓冲器和引退寄存器堆、使用未来文件(future file)、历史缓冲器以及引退寄存器堆;使用寄存器映射和寄存器池等等)。
通常,架构寄存器从处理器外部或从编程者的视角来看是可见的。这些寄存器不限于任何已知的特定的电路类型。各种不同类型的寄存器可适用,只要它们能够存储并提供本文中所述的数据。合适的寄存器的示例包括但不限于:专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用物理寄存器和动态分配物理寄存器的组合等等。引退单元654和物理寄存器堆单元658耦合至执行群集660。执行群集660包括一组一个或多个执行单元662和一组一个或多个存储器访问单元664。执行单元662可以执行各种操作(例如,移位、加法、减法、乘法)并且在各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)上操作。
尽管一些实施例可以包括专用于特定功能或功能组的数个执行单元,但是其他实施例可以仅包括一个执行单元或全部都执行所有功能的多个执行单元。调度器单元656、物理寄存器堆单元658以及执行群集660示出为可能是复数个,因为某些实施例为某些类型的数据/操作创建单独的流水线(例如,各自都具有其自身的调度器单元、物理寄存器堆单元和/或执行群集的标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线和/或存储器访问流水线——并且在单独的存储器访问流水线的情况下,实现了其中仅此流水线的执行群集具有存储器访问单元664的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行的,而其余的是有序的。
存储器访问单元664的集合耦合至存储器单元670,存储器单元670可以包括数据预取器680、数据TLB单元672、数据高速缓存单元(DCU)674、以及第2级(L2)高速缓存单元676,这里给出几个示例。在一些实施例中,DCU 674也被称为第一级数据高速缓存(L1高速缓存)。DCU 674可处理多个未完成的高速缓存未命中,并且继续服务传入存储和加载。其还支持维持高速缓存一致性。数据TLB单元672是用于通过映射虚拟以及物理地址空间来改善虚拟地址转换速度的高速缓存。在一个示例性实施例中,存储器访问单元664可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元670中的数据TLB单元672。L2高速缓存单元676可以耦合至一个或多个其他等级的高速缓存,并最终耦合至主存储器。
在一个实施例中,数据预取器680通过自动预测程序即将消耗哪些数据来推测性地加载/预取数据至DCU 674。预取可指示在存储在存储器分层结构(例如,较低级高速缓存或存储器)的一个存储器位置(例如,位置)的数据被处理器实际需求之前,将数据转换至更靠近(例如,产生更少访问等待时间)处理器的较高级存储器位置。更具体地,预取可以指示在处理器发出对被返回的特定数据的需求之前,对从较低等级的高速缓存/存储器之一到数据高速缓存和/或预取缓冲器的数据的早取回。
处理器600可以支持一个或多个指令集(诸如,x86指令集(具有增加有更新版本的一些扩展)、加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集、加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集(具有可选附加扩展,诸如NEON))。
应当理解,核可以支持多线程操作(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程操作,各种方式包括时分多线程操作、同步多线程操作(其中,单个物理核为物理核正在同步进行多线程操作的多个线程中的每一个线程提供逻辑核)或其组合(例如,时分取出和解码以及此后诸如利用超线程技术的同步多线程操作)。
尽管在乱序执行的上下文中描述了寄存器重命名,但是,应当理解,寄存器重命名可以用于有序架构中。虽然处理器的所示实施例也包括单独的指令和数据高速缓存单元以及共享的L2高速缓存单元,但替代实施例可具有用于指令和数据两者的单个内部高速缓存,诸如例如,第一级(L1)内部高速缓存或多个等级的内部高速缓存。在一些实施例中,系统可以包括内部高速缓存以及在核和/或处理器外部的外部高速缓存的组合。或者,全部高速缓存都可以在核和/或处理器的外部。
图6B是示出根据本发明的一些实施例的由图6A的处理器600实现的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。图6B中的实线框示出了有序流水线,而虚线框示出了寄存器重命名、乱序发布/执行流水线。在图6B中,处理器流水线600包括取出级602、长度解码级604、解码级606、分配级608、重命名级610、调度(也称为分派或发布)级612、寄存器读取/存储器读取级614、执行级616、写回/存储器写入级618、异常处理级622、以及提交级624。在一些实施例中,级602-624的顺序可以与所示出的不同,并且不限于图6B中所示的特定顺序。
图7示出了根据一个实施例的包括执行安全存储器重新分区的逻辑电路的处理器700的微架构的框图。在一些实施例中,可将根据一个实施例的指令实现为对具有字节尺寸、字尺寸、双字尺寸、四字尺寸等并具有诸多数据类型(例如,单精度和双精度整数和浮点数据类型)的数据元素进行操作。在一个实施例中,有序前端701是处理器700的部分,该部分取出要被执行的指令,并准备这些指令以便稍后在处理器流水线中使用。可以在处理器700中实现页面添加和内容复制的实施例。
前端701可以包括若干单元。在一个实施例中,指令预取器716从存储器中取出指令,并将这些指令馈送至指令解码器718,指令解码器718进而解码或解释这些指令。例如,在一个实施例中,解码器将所接收到的指令解码为机器可执行的被称为“微指令”或“微操作”(也称为微op或uop)的一个或多个操作。在其他实施例中,该解码器将指令解析为可由微架构用于执行根据一个实施例的多个操作的操作码以及对应的数据和控制字段。在一个实施例中,追踪高速缓存730获取经解码的uop,并且在uop队列734中将它们组合为程序排序的序列或踪迹,以用于执行。当追踪高速缓存730遇到复杂指令时,微代码ROM 732提供完成操作所需的uop。
一些指令被转换为单个微op,而其他指令需要若干个微op以完成完整的操作。在一个实施例中,如果需要多于四个微op来完成指令,则解码器718访问微代码ROM 732以执行该指令。对于一个实施例,可将指令解码为少量的微op,以便在指令解码器718处进行处理。在另一实施例中,如果需要许多微op来完成操作,则可将指令存储在微代码ROM 732中。追踪高速缓存730参考进入点可编程逻辑阵列(PLA)来确定正确的微指令指针,以从微代码ROM 732中读取微代码序列来完成根据一个实施例的一条或多条指令。在微代码ROM 732完成对指令的微op进行的序列化操作之后,该机器的前端701恢复从追踪高速缓存730中取出微op。
乱序执行引擎703是准备指令以进行执行的地方。乱序执行逻辑具有若干个缓冲器,用于将指令流平滑并且重排序,以便在这些指令流沿流水线向下并经调度供执行时优化性能。分配器逻辑分配每一个uop为了执行所需的机器缓冲器和资源。寄存器重命名逻辑将诸个逻辑寄存器重命名为寄存器堆中的条目。分配器还在指令调度器(存储器调度器、快速调度器702、慢速/通用浮点调度器704以及简单浮点调度器706)之前,在两个uop队列(一个用于存储器操作,而另一个用于非存储器操作)中的一个uop队列中,为每一个uop分配条目。uop调度器702、704、706基于对它们的从属输入寄存器操作数源的准备就绪以及uop完成它们的操作所需的执行资源的可用性来确定uop何时准备好用于执行。一个实施例的快速调度器702可以在主时钟周期的每半个时钟周期上进行调度,而其他调度器在每个主处理器时钟周期上仅可调度一次。调度器对分派端口仲裁以调度uop来执行。
在执行块711中,寄存器堆708和710位于调度器702、704和706以及执行单元712、714、716、718、710、712和714之间。也存在单独的寄存器堆708、710,分别用于整数和浮点操作。一个实施例中的每个寄存器堆708、710也包括旁路网络,该旁路网络可以绕开还未被写入到寄存器堆中的、刚完成的结果或者将这些结果转发到新的从属uop中。整数寄存器堆708和浮点寄存器堆710也能够彼此传递数据。对于一个实施例,将整数寄存器堆708划分为两个单独的寄存器堆,一个寄存器堆用于数据的低阶32位,第二个寄存器堆用于数据的高阶32位。一个实施例中的浮点寄存器堆710具有128位宽的条目,因为浮点指令通常具有从64至128位宽度的操作数。
执行块711包括执行单元712、714、716、718、710、712和714,实际在这些执行单元中执行指令。该区块包括存储微指令执行所需的整数和浮点数据操作数值的寄存器堆708和710。一个实施例的处理器700包括许多执行单元:地址生成单元(AGU)712、AGU 714、快速ALU 716、快速ALU 718、慢速ALU 710、浮点ALU 712、浮点移动单元714。对于一个实施例,浮点执行块712和714执行浮点、MMX、SIMD、SSE或其他操作。一个实施例中的浮点ALU 712包括用于执行除法、平方根和余数微op的64位除64位的浮点除法器。对于本公开的多个实施例,可利用浮点硬件来处理涉及浮点值的指令。
在一个实施例中,ALU操作去往高速ALU执行单元716和718。一个实施例中的快速ALU 716和718可以执行有效等待时间为半个时钟周期的快速操作。对于一个实施例,大多数复杂的整数操作去往慢速ALU 710,因为慢速ALU 710包括用于长等待时间类型操作的整数执行硬件,例如,乘法器、移位器、标志逻辑和分支处理设备。存储器加载/存储操作由AGU712和714来执行。对于一个实施例,在对64位数据操作数执行整数操作的情境中描述整数ALU 716、718和710。在替换实施例中,ALU 716、718、710可被实现为支持多种数据位,包括16、32、128、256等等。类似地,浮点单元712、714可被实现为支持具有多种宽度的位的一系列操作数。对于一个实施例,浮点单元712、714可协同SIMD和多媒体指令对128位宽紧缩数据操作数进行操作。
在一个实施例中,在父加载完成执行之前,uop调度器702、704和706分派从属操作。由于在处理器700中推测性地调度并执行uop,因此处理器700也包括用于处理存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中会存在将临时不正确的数据留给调度器的运行中的从属操作。重放机制跟踪并重新执行使用不正确的数据的指令。仅仅从属操作需要被重放,而允许独立操作完成。也可将处理器的一个实施例的调度器和重放机制设计成用于捕捉指令序列,以用于文本串比较操作。
根据一个实施例,处理器700还包括用于实现安全存储器重新分区的逻辑。在一个实施例中,处理器700的执行块711可包括MCU 115,以根据本文中的描述执行安全存储器重新分区。
术语“寄存器”可以是指被用作标识操作数的指令的部分的板上(on-board)处理器存储器位置。换句话说,寄存器可以是从处理器外部(从编程者的角度来看)可用的那些。然而,不应当将实施例中的寄存器限制于意指特定类型的电路。相反,实施例中的寄存器能够存储并提供数据,并且能够执行本文中所述的功能。本文所描述的寄存器可利用任何数量的不同技术,由处理器中的电路来实现,这些不同技术诸如,专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄存器堆还包含用于紧缩数据的八个多媒体SIMD寄存器。
对于此处的讨论,寄存器应被理解为设计成保存紧缩数据的数据寄存器,诸如来自美国加利福尼亚州圣克拉拉市的英特尔公司的启用了MMX技术的微处理器的64位宽MMXTM寄存器(在一些实例中也称为“mm”寄存器)。这些MMX寄存器(在整数和浮点形式两者中是可用的)可与伴随SIMD和SSE指令的紧缩数据元素一起操作。类似地,也可以使用涉及SSE2、SSE3、SSE4或以外的(统称为“SSEx”)技术的128位宽的XMM寄存器来保存这样的紧缩数据操作数。在一个实施例中,在存储紧缩数据和整型数据时,寄存器不需要区分两种数据类型。在一个实施例中,整数和浮点可被包括在相同的寄存器堆中,或被包括在不同的寄存器堆中。此外,在一个实施例中,浮点和整型数据可以存储在不同的寄存器中或相同的寄存器中。
可在许多不同的系统类型中实现实施例。现在参照图8,其中示出了根据一个实现的多处理器系统800的框图。如图8所示,多处理器系统800是点对点互连系统,且包括经由点对点互连850耦合的第一处理器870和第二处理器880。如图8所示,处理器870和880中的每一个可以是多核处理器,包括第一和第二处理器核(即,处理器核874a和874b以及处理器核884a和884b),虽然潜在地更多核可以存在于处理器中。处理器各自可包括根据本公开的实施例的混合型写入模式逻辑。可以在处理器870、处理器880或两者中实现页面添加和内容复制的实施例。
虽然以两个处理器870、880来示出,但应理解本公开的范围不限于此。在其他实现中,在给定处理器中可存在一个或多个附加处理器。
处理器870和880示出为分别包括集成存储器控制器单元882和882。处理器870还包括点对点(P-P)接口876和888作为其总线控制器单元的部分;类似地,第二处理器880包括P-P接口886和888。处理器870、880可以经由使用点对点(P-P)接口电路888、888的P-P接口850来交换信息。如图8所示,IMC 882和882将处理器耦合到各自的存储器,即存储器832和存储器834,这些存储器可以是本地附连到各自处理器的主存储器的多个部分。
处理器870、880可各自经由使用点对点接口电路876、894、886、898的各个P-P接口852、854与芯片组890交换信息。芯片组890还可以经由高性能图形接口839与高性能图形电路838交换信息。
共享高速缓存(未示出)可以被包括在任一处理器之内,或被包括在两个处理器外部但仍经由P-P互连与这些处理器连接,使得如果将某处理器置于低功率模式时,可将任一处理器或两个处理器的本地高速缓存信息存储在该共享高速缓存中。
芯片组890可经由接口896耦合至第一总线816。在一个实施例中,第一总线816可以是外围组件互连(PCI)总线,或诸如PCI快速总线或另一第三代IO互连总线之类的总线,但是本公开的范围不限于此。
如图8所示,各种IO设备814可连同总线桥818一起耦合到第一总线816,总线桥818将第一总线816耦合到第二总线820。在一个实施例中,第二总线820可以是低引脚数(LPC)总线。在一个实施例中,各种设备可以耦合至第二总线820,包括例如,键盘和/或鼠标822、通信设备827以及存储单元828(诸如,可包括指令/代码和数据830的盘驱动器或其他大容量存储设备)。此外,音频IO 824可以被耦合至第二总线820。注意,其他架构是可能的。例如,代替图8的点对点架构,系统可以实现多分支总线或其他此类架构。
现在参考图9,所示出的是根据本发明的实施例的第三系统900的框图。图8和9中的类似元件使用类似附图标记,且在图9中省略了图8的某些方面以避免使图9的其他方面模糊。
图9示出处理器970、980可分别包括集成存储器和IO控制逻辑(“CL”)972和982。对于至少一个实施例,CL 972、982可以包括诸如本文所述的集成存储器控制器单元。另外,CL972、982还可以包括IO控制逻辑。图9示出了存储器932、934耦合到CL 972、982,并且I/O设备914也耦合到控制逻辑972,982。传统IO设备915被耦合至芯片组990。可以在处理器970、处理器980或两者中实现页面添加和内容复制的实施例。
图10是可包括核1002中的一个或多个的示例性片上系统(SoC)。本领域已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其它电子设备的其它系统设计和配置也是合适的。一般地,能够包含本文中所公开的处理器和/或其它执行逻辑的多个系统或电子设备一般都是合适的。
现在参考图10,所示出的是根据本公开的一个实施例的SoC 1000的框图。另外,虚线框是更先进的SoC上的特征。在图10中,互连单元1002耦合至:应用处理器1010,包括一组一个或多个核1002A-N以及共享高速缓存单元1006;系统代理单元1010;总线控制器单元1016;集成存储器控制器单元1014;一组或一个或多个媒体处理器1020,可包括集成图形逻辑1008、用于提供静态和/或视频照相功能的图像处理器1024、提供硬件音频加速的音频处理器1026、提供视频编码/解码加速的视频处理器1028、静态随机存取存储器(SRAM)单元1030;直接存储器存取(DMA)单元1032;以及显示单元1040,用于耦合至一个或多个外部显示器。可以在SoC 1000中实现页面添加和内容复制的实施例。
接下来参考图11,描绘了根据本发明的各实施例的片上系统(SOC)设计的实施例。作为一个说明性示例,SoC 1100被包括在用户设备(UE)中。在一个实施例中,UE是指由终端用户用于通信的任何设备,诸如,手持式电话、智能电话、平板、超薄笔记本、具有宽带适配器的笔记本或任何其他类似的通信设备。UE可以连接到基站或节点,该基站或节点可以本质上对应于GSM网络中的移动站(MS)。可以在SoC 1100中实现页面添加和内容复制的实施例。
这里,SOC 1100包括2个核——1106和1107。类似于上面的讨论,核1106和1107可以符合指令集架构,诸如基于Architecture CoreTM的处理器、超微半导体公司(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计,或它们的客户,以及它们的被许可方或采用者。核1106和1107耦合至与总线接口单元1109和L2高速缓存1110相关联的高速缓存控制1108以与系统1100的其他部分进行通信。互连1111包括片上互连,诸如IOSF、AMBA,或上文所讨论的其他互连,它们可以实现所描述的公开的一个或多个方面。
互连1111提供到其他组件的通信信道,其他组件诸如与用户身份模块(SIM)卡对接的SIM 1130、保存供核1106和1107执行以初始化和引导SOC 1100的引导代码的引导ROM1135、与外部存储器(例如,DRAM 1160)对接的SDRAM控制器1140、与非易失性存储器(例如,闪存1165)对接的闪存控制器1145、与外围设备对接的外围控制装置1150(例如,串行外围接口)、用于显示和接收输入(例如,允许触摸的输入)的视频编解码器1120和视频接口1125、用于执行图形相关的计算的GPU 1115等等。这些接口中的任何一种可以包括此处所描述的各实施例的各方面。
另外,系统示出了用于通信的外围设备,诸如蓝牙模块1170、3G调制解调器1175、GPS 1180以及Wi-Fi 1185。注意,如上所述,UE包括用于通信的无线电装置。因此,这些外围通信模块可以不被全部包括。然而,在UE中,应该包括用于外部通信的某种形式的无线装置。
图12示出了计算机系统1200的示例性形式的机器的图示性表示,在该计算机系统1200内,可执行用于使机器执行本文中所讨论的方法中的任何一个或多个的一组指令。在替代实现方式中,可以在LAN、内联网、外联网或因特网中将机器连接(例如,联网)到其他机器。机器可以在客户机-服务器网络环境中作为服务器或客户机机器操作,或者在对等(或分布式)网络环境中作为对等机器操作。该机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web设备、服务器、网络路由器、交换机或桥、或者能够执行指定由该机器执行的动作的一组指令(连续的或以其他方式)的任何机器。此外,虽然仅示出单个机器,但是也应当认为术语“机器”包括单独地或共同地执行一组(或多组)指令以执行本文中所讨论的方法中的任何一个或多个的机器的任何集合。
示例性计算机系统1200包括处理设备(处理器)1202、主存储器1204(例如,只读存储器(ROM)、闪存、动态随机存取存储器(DRAM)(诸如,同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器1206(例如,闪存、静态随机存取存储器(SRAM)等)以及数据存储设备1218,它们经由总线1230彼此进行通信。
处理器1202表示一个或多个通用处理设备,诸如微处理器、中央处理单元等。更具体而言,处理器1202可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、或实现其他指令集的处理器、或实现指令集的组合的处理器。处理设备1202也可以是一个或多个专用处理设备,诸如,专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理器1202被配置成执行用于执行此处所讨论的操作和步骤的指令1226。
计算机系统1200可以进一步包括网络接口设备1222。计算机系统1200还可以包括视频显示单元1208(例如,液晶显示器(LCD)、阴极射线管(CRT)或触摸屏)、字母数字输入设备1210(例如,键盘)、光标控制设备1214(例如,鼠标)、以及信号生成设备1216(例如,扬声器)
数据存储设备1218可以包括计算机可读存储介质1224,在其上面存储了实现本文所描述的方法或功能中的任意一个或多个的一组或多组指令1226(例如,软件)。在由计算机系统1200对指令1226的执行期间,这些指令1226也可完全或至少部分地驻留在主存储器1204之内和/或处理器1202之内;该主存储器1204和处理器1202也构成计算机可读存储介质。可以进一步在网络1220上经由网络接口设备1234发送或接收指令1226。
虽然在示例性实现方式中将计算机可读存储介质1224示出为单个介质,但是应当认为术语“计算机可读存储介质”包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存与服务器)。还应当认为术语“计算机可读存储介质”包括能够存储、编码或携带由机器执行并且使该机器执行本公开的方法中的任何一个或多个的一组指令的任何介质。相应地,应当认为术语“计算机可读存储介质”包括但不限于固态存储器、光介质和磁介质。以下示例关于进一步的实施例。
在示例1中,SoC包括:1)处理器核,用于执行虚拟机;2)分页设备,在处理器核与输入/输出(IO)设备之间耦合,分页设备包括:a)子页转换表;以及b)页转换表;以及3)其中当与第一物理地址相关联的子页位置指示符可被设置为子页位置模式时,分页设备可以通过使用IO设备的第一物理地址在子页转换表中标识虚拟地址。
在示例2中,示例1的SoC,其中分页设备可以经由子页转换器将虚拟地址传递到虚拟机。
在示例3中,示例1-2的SoC,其中分页设备可以用于:1)从耦合到IO设备的子页转换器接收IO设备的第一物理地址;2)由分页设备确定子页位置指示符何时被设置为子页位置模式;以及3)将虚拟地址传递到虚拟机。
在示例4中,示例1-3的SoC,其中子页转换表包括:1)处理器地址空间标识符(PASID)表,通过使用PASID方案被索引;2)散列表;以及3)密钥-值对表。
在示例5中,示例1-4的SoC,其中为了标识虚拟地址,分页设备可以用于:1)从子页转换器接收具有与IO设备的进程相关联的PASID的第一物理地址;2)通过使用PASID来迭代PASID表以找到PASID表中指向散列表的指针;3)迭代散列表以找到散列表中与来自子页转换器的第一物理地址匹配的第二物理地址;以及4)当第一物理地址与第二物理地址匹配时,确定与第二物理地址相关联的虚拟地址。
在示例6中,示例1-5的SoC,其中为了标识虚拟地址,分页设备可以用于:1)从子页转换器接收具有与IO设备的进程相关联的PASID的第一物理地址;2)通过使用PASID来迭代PASID表以找到PASID表中指向散列表的指针;3)迭代散列表以找到散列表中与来自子页转换器的第一物理地址匹配的第二物理地址;以及4)当第一物理地址与第二物理地址不匹配时,定位与第二物理地址相邻的条目的地址;5)迭代密钥-值对表以找到与相邻地址匹配的密钥;以及6)当密钥-值表中的密钥与来自散列表的相邻地址匹配时,确定与密钥相关联的虚拟地址。
在示例7中,示例1-6的SoC,其中子页转换表是页转换表的一部分。
在示例8中,示例1-7的SoC,其中子页转换表的尺寸基于虚拟机或IO设备的进程的类型而变化。
在示例9中,示例1-8的SoC,其中当子页位置指示符可被设置为页位置模式时,分页设备可以通过使用第一物理地址在页转换表中查找虚拟地址。
各实施例可以具有上文所描述的结构特征的不同的组合。例如,上文所描述的处理器和方法的所有可选的特征也可以利用此处所描述的系统来实现,示例中的细节可以用于一个或多个实施例中的任何地方。
在示例10中,输入/输出(IO)接口设备包括:1)存储器,用于存储物理地址信息;2)耦合到存储器的子页转换器,子页转换器用于:a)从IO设备接收物理地址;b)在物理地址信息中搜索与物理地址匹配的信息;c)当物理地址信息与物理地址不匹配时,将物理地址传递到计算设备的分页设备;d)从分页设备接收与物理地址相关联的虚拟地址;以及e)将虚拟地址传递到虚拟机。
在示例11中,示例10的IO接口设备,其中IO接口设备是在IO设备与分页设备之间耦合的外围组件互连快速(PCIe)交换机。
在示例12中,示例10-11的IO接口设备,其中子页转换器可以进一步用于确定物理地址何时可以被存储在子页转换器的存储器中。
在示例13中,示例10-12的方法,其中子页转换器进一步用于经由分页设备将虚拟地址传递到虚拟机。
各实施例可以具有上文所描述的结构特征的不同的组合。例如,上文所描述的处理器和方法的所有可选的特征也可以利用此处所描述的系统来实现,示例中的细节可以用于一个或多个实施例中的任何地方。
在示例14中,一种方法包括:1)在系统存储器的分页设备处接收来自子页转换器的输入/输出(IO)设备的第一物理地址,其中子页位置指示符与第一物理地址相关联;2)当子页位置指示符被设置为子页查找模式时,基于物理地址在子页转换表中标识虚拟地址;以及3)将虚拟地址传递到虚拟机。
在示例15中,示例14的方法,其中子页转换器被耦合到IO接口设备或IO设备。
示例16中,示例14-15的方法,其中标识虚拟地址可以进一步包括:1)从计算设备的处理器接收具有与IO设备的进程相关联的处理器地址空间标识符(PASID)的第一物理地址;2)通过使用PASID来迭代PASID表以找到PASID表中指向散列表的指针;3)迭代散列表以找到散列表中与第一物理地址匹配的第二物理地址;以及4)当第一物理地址与第二物理地址匹配时,确定与第二物理地址相关联的虚拟地址。
示例17中,示例14-16的方法,其中标识虚拟地址可以进一步包括:1)从子页转换器接收具有与IO设备的进程相关联的处理器地址空间标识符(PASID)的第一物理地址;2)通过使用PASID来迭代PASID表以找到PASID表中指向散列表的指针;3)迭代散列表以找到散列表中与第一物理地址的一部分匹配的第二物理地址的一部分;4)当第一物理地址与第二物理地址不匹配时,定位与第二物理地址相邻的条目的地址;5)迭代密钥-值对表以找到与相邻物理地址匹配的密钥;以及6)当密钥-值表中的密钥与相邻物理地址匹配时,确定与密钥相关联的虚拟地址。
在示例18中,示例14-17的方法,进一步包括经由子页转换器将虚拟地址传递到虚拟机。
在示例19中,示例14-18的方法,进一步包括通过使用表遍历器来迭代子页转换表以在子页转换表中标识虚拟地址。
在示例20中,示例14-19的方法,其中子页转换表可以是页转换表的一部分。
各实施例可以具有上文所描述的结构特征的不同的组合。例如,上文所描述的处理器和方法的所有可选的特征也可以利用此处所描述的系统来实现,示例中的细节可以用于一个或多个实施例中的任何地方。
虽然已参照有限数量的实施例描述了本发明,但是本领域技术人员将从中领会很多修改和变型。所附权利要求旨在涵盖落入本发明的真实精神与范围的所有此类修改与变型。
在本文的描述中,阐明了众多具体细节,例如具体类型的处理器和系统配置、具体硬件结构、具体架构的和微架构的细节、具体寄存器配置、具体指令类型、具体系统组件、具体测量/高度、具体处理器流水线级和操作等的示例,以提供对本发明的透彻理解。然而,对本领域普通技术人员显而易见的是,不一定要采用这些具体细节来实施本发明。在其它实例中,未详细描述公知的组件或方法,诸如具体或替代的处理器架构、用于所描述算法的具体逻辑电路/代码、具体固件代码、具体互连操作、具体逻辑配置、具体制造技术和材料、具体编译器实现、代码中算法的具体表达、具体掉电和门控技术/逻辑、以及计算机系统的其它具体操作细节,以避免不必要地模糊本发明。
各实施例是参考特定集成电路中的(诸如计算平台或微处理器中的)安全存储器重新分区来描述的。各实施例也可以适用于其他类型的集成电路和可编程逻辑器件。例如,所公开的各实施例不仅限于台式计算机系统或便携式计算机,诸如UltrabooksTM计算机。并且也可用于其他设备,诸如,手持式设备、平板、其他薄笔记本、片上系统(SOC)设备以及嵌入式应用。手持式设备的一些示例包括蜂窝电话、网际协议设备、数码相机、个人数字助理(PDA)和手持式PC。嵌入式应用通常包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络中枢、广域网(WAN)交换机或可执行以下教导的功能与操作的任何其他系统。描述了系统可以是任何类型的计算机或嵌入式系统。所公开的各实施例可以特别用于低端设备,诸如可穿戴设备(例如,手表)、电子植入物、传感和控制基础设施设备、控制器、监视控制和数据采集(SCADA)系统等等。此外,本文描述的装置、方法和系统不限于物理计算设备,而是还可涉及用于节能和能效的软件优化。如将在以下描述中变得显而易见的,本文描述的方法、装置和系统的实施例(无论是关于硬件、固件、软件还是它们的组合)对于用性能考量来平衡的‘绿色技术’的前景是至关重要的。
虽然参照处理器来描述多个实施例,但是其他实施例也适用于其他类型的集成电路和逻辑设备。本发明的实施例的类似技术和教导可应用于其他类型的电路或半导体器件,这些其他类型的电路或半导体器件可受益于更高的流水线吞吐量和改善的性能。本发明的诸个实施例的教导适用于执行数据操纵的任何处理器或机器。然而,本发明不限于执行512位、256位、128位、64位、32位或16位数据运算的处理器或机器,并且可适用于执行数据操纵或管理的任何处理器和机器。此外,本文的描述提供了示例,并且附图出于示意性目的示出各种示例。然而,这些示例不应当被理解为是限制性意义的,因为它们仅仅旨在提供本发明的诸个实施例的示例,而并非提供本发明的实施例的所有可能实现的详尽列表。
虽然下述的示例是在执行单元和逻辑电路情境下描述指令处理和分配,但本发明的其他实施例也可通过存储在机器可读有形介质上的数据和/或指令来完成,这些数据和/或指令在被机器执行时使得机器执行与本发明至少一个实施例相一致的功能。在一个实施例中,与本发明的多个实施例相关联的功能被具体化在机器可执行指令中。这些指令可用来使通过这些指令而被编程的通用处理器或专用处理器执行本发明的步骤。本发明的多个实施例也可以作为计算机程序产品或软件来提供,该计算机程序产品或软件可包括其上存储有指令的机器或计算机可读介质,这些指令可被用来对计算机(或其他电子设备)进行编程以执行根据本发明的多个实施例的一个或多个操作。或者,本发明的多个实施例的多个操作可由包含用于执行这些操作的固定功能逻辑的专用硬件组件来执行,或由经编程的计算机组件以及固定功能硬件组件的任何组合来执行。
可将用于对逻辑进行编程以执行本发明的多个实施例的指令存储在系统中的存储器(诸如,DRAM、高速缓存、闪存、或其他存储设备)内。此外,指令可经由网络或通过其他计算机可读介质来分配。因此,机器可读介质可包括用于以机器(例如,计算机)可读的形式存储或发送信息的任何机制,但不限于:软盘、光盘、紧致盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或在互联网上经由电、光、声、或其他形式的传播信号(例如,载波、红外信号、数字信号等)发送信息中所使用的有形的机器可读存储器。因此,计算机可读介质包括适用于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形的机器可读介质。
设计会经历多个阶段,从创建到仿真到制造。表示设计的数据可以用多种方式来表示该设计。首先,像仿真中有用的那样,可以使用硬件描述语言或另一功能性描述语言来表示硬件。此外,可以在设计过程的一些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某个阶段都达到表示硬件模型中各种设备的物理布置的数据的层级。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的掩模的不同掩模层上存在或不存在各种特征的数据。在任何设计表示中,数据可以被存储在任何形式的机器可读介质中。存储器或者磁或光存储设备(诸如,盘)可以是存储经由光或电波发送的信息的机器可读介质,调制或以其他方式生成这些光或电波以发送这些信息。当发送指示或承载代码或设计的电载波达到实现该电信号的复制、缓冲或重新发送的程度时,即产生了新的副本。因此,通信提供商或网络提供商可在有形的机器可读介质上至少临时地存储具体化本发明的多个实施例的技术的制品(诸如,被编码成载波的信息)。
在本文中使用的模块指的是硬件、软件、和/或固件的任意组合。作为示例,模块包括与非瞬态介质相关联的诸如微控制器之类的硬件,该非瞬态介质用于存储适于由该微控制器执行的代码。因此,在一个实施例中,对模块的引用是指硬件,该硬件被专门配置成识别和/或执行要保存在非瞬态介质上的代码。另外,在另一实施例中,模块的使用是指包括代码的非瞬态介质,该代码专门适于由微控制器执行以进行预定操作。并且可推断,在又一实施例中,术语模块(在该示例中)可以指微控制器和非瞬态介质的组合。通常,被示为分开的模块边界一般不同而且有可能重叠。例如,第一和第二模块可共享硬件、软件、固件、或它们的组合,同时可能保留某些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括诸如晶体管、寄存器之类的硬件或诸如可编程逻辑器件之类的其它硬件。
在一个实施例中,短语“被配置成”的使用指的是安排、合在一起、制造、提供销售、进口和/或设计装置、硬件、逻辑或元件以执行指定和/或确定的任务。在该示例中,没有操作的装置或其元件仍然“被配置成”执行指定任务,如果它被设计、耦合、和/或互连以执行所述指定任务的话。作为纯说明性示例,在操作期间,逻辑门可以提供0或1。但“被配置成”向时钟提供启用信号的逻辑门不包括可提供1或0的每一潜在逻辑门。而是,该逻辑门是以在操作期间1或0的输出用于启用时钟的某种方式来耦合的逻辑门。再次注意,术语“被配置成”的使用不要求操作,而是集中于装置、硬件、和/或元件的潜在状态,其中在该潜在状态中,该装置、硬件和/或元件被设计成在该装置、硬件和/或元件正在操作时执行特定任务。
此外,在一个实施例中,短语“用于”、“能够/能够用于”和/或“能用于”的使用指的是一些装置、逻辑、硬件、和/或元件按这种方式设计来以指定方式启用对该装置、逻辑、硬件、和/或元件的使用。如上注意的,在一个实施例中,用于、能够、或能用于的使用指的是装置、逻辑、硬件、和/或元件的潜在状态,其中该装置、逻辑、硬件、和/或元件没有正在操作而是被按这种方式设计来以指定方式启用装置的使用。
如在本文中所使用的值包括数字、状态、逻辑状态、或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值、或多个逻辑值的使用也被称为1和0,这简单地表示了二进制逻辑状态。例如,1指的是逻辑高电平,0指的是逻辑低电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元能够保持单个逻辑值或多个逻辑值。不过,也使用了计算机系统中的值的其它表示。例如,十进制数十还可以被表示为二进制值1010和十六进制字母A。因此,值包括能够被保存在计算机系统中的信息的任何表示。
而且,状态也可由值或值的部分来表示。作为示例,诸如逻辑1之类的第一值可表示默认或初始状态,而诸如逻辑0之类的第二值可表示非默认状态。此外,在一个实施例中,术语重置和置位分别指的是默认和已更新的值或状态。例如,默认值潜在地包括高逻辑值,即,复位,而更新的值潜在地包括低逻辑值,即,置位。注意,可以使用值的任何组合来表示任意数量的状态。
上述方法、硬件、软件、固件或代码的实施例可以经由存储在机器可访问、机器可读、计算机可访问、或计算机可读介质上可由处理元件执行的指令或代码来实现。非瞬态机器可访问/可读介质包括提供(即存储和/或发送)诸如计算机或电子系统之类的机器可读的形式的信息的任何机制。例如,非瞬态机器可访问介质包括:随机存取存储器(RAM),诸如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;用于保持从瞬态(传播)信号(例如载波、红外信号、数字信号)接收的信息的其它形式的存储设备;等等,这些与可从其接收信息的非瞬态介质相区别。
被用于对逻辑进行编程以执行本发明的诸个实施例的指令可被存储在系统中的存储器(诸如,DRAM、高速缓存、闪存、或其他存储器)内。此外,指令可经由网络或通过其他计算机可读介质来分配。因此,机器可读介质可包括用于以机器(例如,计算机)可读的形式存储或发送信息的任何机制,但不限于:软盘、光盘、紧致盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或在互联网上经由电、光、声、或其他形式的传播信号(例如,载波、红外信号、数字信号等)发送信息中所使用的有形的机器可读存储器。因此,计算机可读介质包括适于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
本申请文件中通篇对“一个实施例”或“实施例”的引用意指结合所述实施例描述的特定的特征、结构或特性被包括在本发明的至少一个实施例中。因此,在整篇说明书中的不同位置出现短语“在一个实施例中”或“在实施例中”不一定都是指同一个实施例。此外,在一个或多个实施例中,能以任何合适的方式来组合特定的特征、结构或特性。
在上述说明书中,已经参考特定示例性实施例给出了详细描述。然而,显然可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本发明的更宽泛精神和范围。相应地,应当认为说明书和附图是说明性的而不是限制性的。而且,实施例和其它示例性语言的上述使用不一定指的是同一实施例或同一示例,而可能指的是不同和独特的实施例,也有可能是同一实施例。
在对计算机存储器内的数据位的操作的算法和符号表示方面呈现了具体实施方式的一些部分。这些算法描述和表示是由数据处理领域的技术人员用于向本领域的其他技术人员最有效地传达其工作实质的手段。算法在此一般被理解为导致所需结果的自洽的操作序列。这些操作是需要对物理量进行物理操控的操作。通常但非必须,这些量采用能被存储、传输、组合、比较、以及以其他方式操控的电信号或磁信号的形式。主要出于惯用法的原因,时不时地将这些信号称为位、值、要素、符号、字符、项、数字等已证明是方便的。此处所描述的块可以是硬件、软件、固件或其组合。
然而,应当记住,所有这些和类似的术语用于与适当的物理量关联,并且仅仅是应用于这些量的方便的标记。除非专门声明,否则从上文的讨论中显而易见地看出,应当理解,贯穿本说明书,利用诸如“定义”、“接收”、“确定”、“发出”、“链接”、“关联”、“获取”、“认证”、“阻止”、“执行”、“请求”、“传递”等等之类的术语的讨论是指计算系统或类似的电子计算设备的动作和/或进程,这些计算系统或类似的电子计算设备操纵数据,并且将被表示为计算系统的寄存器和存储器内的物理(例如,电子)量的数据转换为类似地被表示为计算系统存储器或寄存器或其他此类信息存储、传输和/或显示设备内的物理量的其他数据。
在此可使用词语“示例”或“示例性”来意指用作示例、实例或说明。本文中被描述为“示例”或“示例性”的任何方面或设计不一定被解释为优选于或更优于其他方面或设计。相反,词语“示例”或“示例性”的使用旨在以具体的方式来呈现诸概念。如本申请中所使用的,术语“或”意指包括性的“或”而非排他性的“或”。也就是说,除非另有指定或从上下文来看是清楚的,否则“X包括A或B”意指自然的包括性排列中的任何一种。也就是说,如果X包括A;X包括B;或X包括A和B两者,则在任何以上实例中,都满足“X包括A或B”。此外,如本申请中和所附权利要求书所使用的冠词“a”和“an”一般应解释为意指“一个或多个”,除非另有指定或从上下文来看显然指向单数形式。此外,通篇对术语“实施例”或“一个实施例”或“实现”或“一个实现”的使用不旨在意指同一个实施例或实现,除非是这样描述的。此外,如此处所使用的术语“第一”、“第二”、“第三”、“第四”等等旨在用作区别不同的元件的标记,并且可以不一定具有根据它们的数字指定的顺序含义。
Claims (20)
1.一种片上系统(SoC),包括:
处理器核,用于执行虚拟机;
分页设备,在所述处理器核与输入/输出(IO)设备之间耦合,所述分页设备包括:
子页转换表;以及
页转换表;以及
其中所述分页设备用于:当与第一物理地址相关联的子页位置指示符被设置为子页位置模式时,使用所述IO设备的所述第一物理地址在所述子页转换表中标识虚拟地址。
2.如权利要求1所述的SoC,其特征在于,所述分页设备进一步用于经由所述子页转换器将所述虚拟地址传递到所述虚拟机。
3.如权利要求1所述的SoC,其特征在于,所述分页设备进一步用于:
从耦合到所述IO设备的子页转换器接收所述IO设备的所述第一物理地址;
由所述分页设备确定所述子页位置指示符何时被设置为所述子页位置模式;以及
将所述虚拟地址传递到所述虚拟机。
4.如权利要求3所述的SoC,其特征在于,所述子页转换表包括:
处理器地址空间标识符(PASID)表,所述PASID表通过使用PASID方案被索引;
散列表;以及
密钥-值对表。
5.如权利要求4所述的SoC,其特征在于,为了标识所述虚拟地址,所述分页设备用于:
从所述子页转换器接收具有与所述IO设备的进程相关联的PASID的所述第一物理地址;
通过使用所述PASID来迭代所述PASID表以找到所述PASID表中指向所述散列表的指针;
迭代所述散列表以找到所述散列表中与来自所述子页转换器的所述第一物理地址匹配的第二物理地址;以及
当所述第一物理地址与所述第二物理地址匹配时,确定与所述第二物理地址相关联的虚拟地址。
6.如权利要求4所述的SoC,其特征在于,为了标识所述虚拟地址,所述分页设备用于:
从所述子页转换器接收具有与所述IO设备的进程相关联的PASID的所述第一物理地址;
通过使用所述PASID来迭代所述PASID表以找到所述PASID表中指向所述散列表的指针;
迭代所述散列表以找到所述散列表中与来自所述子页转换器的所述第一物理地址匹配的第二物理地址;以及
当所述第一物理地址与所述第二物理地址不匹配时,定位与所述第二物理地址相邻的条目的地址;
迭代所述密钥-值对表以找到与所述相邻地址匹配的密钥;以及
当所述密钥值表中的所述密钥与来自所述散列表的所述相邻地址匹配时,确定与所述密钥相关联的虚拟地址。
7.如权利要求1所述的SoC,其特征在于,所述子页转换表是所述页转换表的一部分。
8.如权利要求1所述的SoC,其特征在于,所述子页转换表的尺寸基于所述虚拟机或所述IO设备的进程的类型而变化。
9.如权利要求1所述的SoC,其特征在于,当所述子页位置指示符被设置为页位置模式时,所述分页设备用于使用所述第一物理地址在所述页转换表中查找所述虚拟地址。
10.一种输入/输出(IO)接口设备,包括:
存储器,用于存储物理地址信息;
子页转换器,耦合到所述存储器,所述子页转换器用于:
从IO设备接收物理地址;
在所述物理地址信息中搜索与所述物理地址匹配的信息;以及
当所述物理地址信息与所述物理地址不匹配时,将所述物理地址传递到计算设备的分页设备;以及
从所述分页设备接收与所述物理地址相关联的虚拟地址;以及
将所述虚拟地址传递到虚拟机。
11.如权利要求10所述的IO接口设备,其特征在于,所述IO接口设备是在所述IO设备与所述分页设备之间耦合的外围组件互连快速(PCIe)交换机。
12.如权利要求10所述的IO接口设备,其特征在于,所述子页转换器进一步用于确定所述物理地址何时被存储在所述子页转换器的所述存储器中。
13.如权利要求10所述的IO接口设备,其特征在于,所述子页转换器进一步用于经由所述分页设备将所述虚拟地址传递到所述虚拟机。
14.一种方法,包括:
在系统存储器的分页设备处接收来自子页转换器的输入/输出(IO)设备的第一物理地址,其中子页位置指示符与所述第一物理地址相关联;
当所述子页位置指示符被设置为子页查找模式时,基于所述物理地址在子页转换表中标识虚拟地址;以及
将所述虚拟地址传递到虚拟机。
15.如权利要求14所述的方法,其特征在于,所述子页转换器被耦合到IO接口设备或IO设备。
16.如权利要求14所述的方法,其特征在于,标识所述虚拟地址进一步包括:
从计算设备的处理器接收具有与所述IO设备的进程相关联的处理器地址空间标识符(PASID)的所述第一物理地址;
通过使用所述PASID来迭代PASID表以找到所述PASID表中指向散列表的指针;
迭代所述散列表以找到所述散列表中与所述第一物理地址匹配的第二物理地址;以及
当所述第一物理地址与所述第二物理地址匹配时,确定与所述第二物理地址相关联的虚拟地址。
17.如权利要求14所述的方法,其特征在于,标识所述虚拟地址进一步包括:
从所述子页转换器接收具有与所述IO设备的进程相关联的处理器地址空间标识符(PASID)的所述第一物理地址;
通过使用所述PASID来迭代PASID表以找到PASID表中指向散列表的指针;
迭代所述散列表以找到所述散列表中与所述第一物理地址的一部分匹配的第二物理地址的一部分;以及
当所述第一物理地址与所述第二物理地址不匹配时,定位与所述第二物理地址相邻的条目的地址;
迭代密钥-值对表以找到与所述相邻物理地址匹配的密钥;以及
当所述密钥-值表中的所述密钥与所述相邻物理地址匹配时,确定与所述密钥相关联的虚拟地址。
18.如权利要求14所述的方法,进一步包括经由所述子页转换器将所述虚拟地址传递到所述虚拟机。
19.如权利要求14所述的方法,进一步包括通过使用表遍历器来迭代所述子页转换表以在所述子页转换表中标识所述虚拟地址。
20.如权利要求14所述的方法,其特征在于,所述子页转换表是页转换表的一部分。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/613,307 | 2015-02-03 | ||
US14/613,307 US9495303B2 (en) | 2015-02-03 | 2015-02-03 | Fine grained address remapping for virtualization |
PCT/US2015/067937 WO2016126349A1 (en) | 2015-02-03 | 2015-12-29 | Fine grained address remapping for virtualization |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107209723A true CN107209723A (zh) | 2017-09-26 |
CN107209723B CN107209723B (zh) | 2021-12-10 |
Family
ID=56554400
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580072969.2A Active CN107209723B (zh) | 2015-02-03 | 2015-12-29 | 用于虚拟化的细粒度地址重新映射 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9495303B2 (zh) |
EP (1) | EP3254201A4 (zh) |
CN (1) | CN107209723B (zh) |
TW (1) | TWI575380B (zh) |
WO (1) | WO2016126349A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111221753A (zh) * | 2018-11-15 | 2020-06-02 | 三星电子株式会社 | 多主机控制器及包括所述多主机控制器的半导体装置 |
WO2020124519A1 (en) * | 2018-12-21 | 2020-06-25 | Intel Corporation | Process address space identifier virtualization using hardware paging hint |
CN112602065A (zh) * | 2018-08-10 | 2021-04-02 | 微软技术许可有限责任公司 | 复杂的存储器内数据结构的快速初始化 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9749319B2 (en) | 2015-05-20 | 2017-08-29 | Google Inc. | Address validation using signatures |
US9747219B1 (en) * | 2016-02-25 | 2017-08-29 | Amazon Technologies, Inc. | Address remapping for efficient use of distributed memory |
US10884970B2 (en) * | 2016-12-28 | 2021-01-05 | Intel Corporation | Techniques for coalescing doorbells in a request message |
US20180276175A1 (en) * | 2017-03-22 | 2018-09-27 | National Instruments Corporation | Direct Network Access by a Memory Mapped Peripheral Device for Scheduled Data Transfer on the Network |
US10545800B2 (en) * | 2017-05-31 | 2020-01-28 | Ati Technologies Ulc | Direct doorbell ring in virtualized processing device |
US11698866B2 (en) | 2017-12-29 | 2023-07-11 | Intel Corporation | Unified address translation for virtualization of input/output devices |
US10706493B2 (en) * | 2017-12-29 | 2020-07-07 | Intel Corporation | Apparatus and method for display virtualization using mapping between virtual and physical display planes |
US10977198B2 (en) | 2018-09-12 | 2021-04-13 | Micron Technology, Inc. | Hybrid memory system interface |
US10838731B2 (en) * | 2018-09-19 | 2020-11-17 | Qualcomm Incorporated | Branch prediction based on load-path history |
US11036649B2 (en) * | 2019-04-04 | 2021-06-15 | Cisco Technology, Inc. | Network interface card resource partitioning |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0273396A2 (en) * | 1986-12-26 | 1988-07-06 | Hitachi, Ltd. | Memory management device |
EP1681630A1 (en) * | 2005-01-14 | 2006-07-19 | Intel Corporation | Virtualizing physical memory in a virtual machine system |
US20110022818A1 (en) * | 2009-07-24 | 2011-01-27 | Kegel Andrew G | Iommu using two-level address translation for i/o and computation offload devices on a peripheral interconnect |
CN104239238A (zh) * | 2013-06-21 | 2014-12-24 | 国际商业机器公司 | 用于管理转换旁视缓冲的方法和装置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2635058B2 (ja) * | 1987-11-11 | 1997-07-30 | 株式会社日立製作所 | アドレス変換方式 |
US5479627A (en) * | 1993-09-08 | 1995-12-26 | Sun Microsystems, Inc. | Virtual address to physical address translation cache that supports multiple page sizes |
US6463582B1 (en) * | 1998-10-21 | 2002-10-08 | Fujitsu Limited | Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method |
US7739474B2 (en) | 2006-02-07 | 2010-06-15 | International Business Machines Corporation | Method and system for unifying memory access for CPU and IO operations |
US7868897B2 (en) * | 2006-06-30 | 2011-01-11 | Intel Corporation | Apparatus and method for memory address re-mapping of graphics data |
US8195912B2 (en) * | 2007-12-06 | 2012-06-05 | Fusion-io, Inc | Apparatus, system, and method for efficient mapping of virtual and physical addresses |
US8473644B2 (en) | 2009-03-04 | 2013-06-25 | Freescale Semiconductor, Inc. | Access management technique with operation translation capability |
US8719547B2 (en) * | 2009-09-18 | 2014-05-06 | Intel Corporation | Providing hardware support for shared virtual memory between local and remote physical memory |
GB2478727B (en) * | 2010-03-15 | 2013-07-17 | Advanced Risc Mach Ltd | Translation table control |
US8392628B2 (en) | 2010-07-16 | 2013-03-05 | Hewlett-Packard Development Company, L.P. | Sharing memory spaces for access by hardware and software in a virtual machine environment |
US10303618B2 (en) | 2012-09-25 | 2019-05-28 | International Business Machines Corporation | Power savings via dynamic page type selection |
KR102069273B1 (ko) * | 2013-03-11 | 2020-01-22 | 삼성전자주식회사 | 시스템 온 칩 및 그 동작방법 |
-
2015
- 2015-02-03 US US14/613,307 patent/US9495303B2/en active Active
- 2015-12-29 CN CN201580072969.2A patent/CN107209723B/zh active Active
- 2015-12-29 EP EP15881413.7A patent/EP3254201A4/en not_active Withdrawn
- 2015-12-29 TW TW104144244A patent/TWI575380B/zh active
- 2015-12-29 WO PCT/US2015/067937 patent/WO2016126349A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0273396A2 (en) * | 1986-12-26 | 1988-07-06 | Hitachi, Ltd. | Memory management device |
EP1681630A1 (en) * | 2005-01-14 | 2006-07-19 | Intel Corporation | Virtualizing physical memory in a virtual machine system |
US20110022818A1 (en) * | 2009-07-24 | 2011-01-27 | Kegel Andrew G | Iommu using two-level address translation for i/o and computation offload devices on a peripheral interconnect |
CN104239238A (zh) * | 2013-06-21 | 2014-12-24 | 国际商业机器公司 | 用于管理转换旁视缓冲的方法和装置 |
Non-Patent Citations (1)
Title |
---|
陈慧南: "《数据结构 C语言描述》", 31 July 2015 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112602065A (zh) * | 2018-08-10 | 2021-04-02 | 微软技术许可有限责任公司 | 复杂的存储器内数据结构的快速初始化 |
CN111221753A (zh) * | 2018-11-15 | 2020-06-02 | 三星电子株式会社 | 多主机控制器及包括所述多主机控制器的半导体装置 |
WO2020124519A1 (en) * | 2018-12-21 | 2020-06-25 | Intel Corporation | Process address space identifier virtualization using hardware paging hint |
Also Published As
Publication number | Publication date |
---|---|
US20160224474A1 (en) | 2016-08-04 |
CN107209723B (zh) | 2021-12-10 |
EP3254201A1 (en) | 2017-12-13 |
TW201702888A (zh) | 2017-01-16 |
EP3254201A4 (en) | 2018-08-22 |
TWI575380B (zh) | 2017-03-21 |
WO2016126349A1 (en) | 2016-08-11 |
US9495303B2 (en) | 2016-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107209723A (zh) | 用于虚拟化的细粒度地址重新映射 | |
CN104954356B (zh) | 保护共享的互连以用于虚拟机 | |
CN106648554B (zh) | 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置 | |
US9870209B2 (en) | Instruction and logic for reducing data cache evictions in an out-of-order processor | |
CN108388528A (zh) | 基于硬件的虚拟机通信 | |
CN108268386A (zh) | 加速硬件中的存储器排序 | |
CN104995599B (zh) | 使用硬件与软件组合的路径概况分析 | |
CN106716434A (zh) | 具有独立的用户域与管理程序域的存储器保护密钥架构 | |
CN109564552A (zh) | 增强基于每页当前特权等级的存储器访问许可 | |
CN108475193A (zh) | 字节排序指令和四位组排序指令 | |
CN108334458B (zh) | 存储器高效的末级高速缓存架构 | |
CN106575218A (zh) | 持久性存储屏障处理器、方法、系统和指令 | |
KR101941874B1 (ko) | 클러스터 와이드-실행 머신에서 메모리 액세스를 위한 명령어 및 로직 | |
CN106708753A (zh) | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 | |
CN108228094A (zh) | 存储器侧高速缓存中通路的伺机增加 | |
CN110199242A (zh) | 基于使用参数配置处理器的基本时钟频率 | |
CN108351835A (zh) | 用于高速缓存控制操作的指令和逻辑 | |
CN104937568B (zh) | 用于多页尺寸转换后备缓冲器(tlb)的装置和方法 | |
CN107278295A (zh) | 用于存储器损坏检测架构的字节水平粒度的缓冲器上溢检测 | |
CN108446763A (zh) | 可变字长神经网络加速器电路 | |
CN108351811A (zh) | 调度高度并行的应用 | |
CN108475199A (zh) | 用于执行密钥值查找指令的处理设备 | |
KR20160113236A (ko) | 스토어들을 소팅 및 리타이어링하기 위한 명령어와 로직 | |
CN108369517A (zh) | 聚合分散指令 | |
WO2017107124A1 (en) | Scatter reduction instruction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |