CN103842976A - 具有保护模式以防止i/o装置进行存储器访问的输入/输出存储器管理单元 - Google Patents

具有保护模式以防止i/o装置进行存储器访问的输入/输出存储器管理单元 Download PDF

Info

Publication number
CN103842976A
CN103842976A CN201280046643.9A CN201280046643A CN103842976A CN 103842976 A CN103842976 A CN 103842976A CN 201280046643 A CN201280046643 A CN 201280046643A CN 103842976 A CN103842976 A CN 103842976A
Authority
CN
China
Prior art keywords
memory
address translation
memory access
management unit
request
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
CN201280046643.9A
Other languages
English (en)
Other versions
CN103842976B (zh
Inventor
安德鲁·G·凯格尔
罗纳德·佩雷斯
黄伟
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.)
Advanced Micro Devices Inc
Original Assignee
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN103842976A publication Critical patent/CN103842976A/zh
Application granted granted Critical
Publication of CN103842976B publication Critical patent/CN103842976B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2129Authenticate client device independently of the user

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)

Abstract

一种存储器管理单元被配置成从多个I/O装置接收对存储器访问的请求。所述存储器管理单元实施保护模式,其中所述单元通过将存储器访问请求(从所述I/O装置)映射至同一组存储器地址转换数据而防止所述多个I/O装置进行存储器访问。当所述存储器管理单元不处于所述保护模式中时,所述单元将存储器访问请求从所述多个I/O装置映射至不同的各个组的存储器地址转换数据。因此,所述存储器管理单元可使用比通常所需的更少的地址转换表(例如,无)保护存储器免于被I/O装置访问。

Description

具有保护模式以防止I/O装置进行存储器访问的输入/输出存储器管理单元
发明背景
安全性是许多计算机系统设计中的重要考虑因素。例如,希望在台式计算机上访问电子文件的用户可能希望确保打开文件不会允许一些恶意行为者读取和/或改变文件内容。然而,如果计算环境含有恶意软件,如病毒、间谍软件或甚至错误,那么文件内容则可能会被泄露和/或改变。
为了防御恶意行为者,用户可能希望确保计算环境仅含有已知的可信软件。例如,打开台式计算机上文件的用户可能希望确保计算环境仅执行已知的可信代码,且不存在可能泄露和/或改变文件内容的恶意软件。在另一实例中,投票机的用户可能希望确保机器仅执行可信投票机软件,且软件未被破坏以改变用户的投票或允许未经授权的一方查看投票。
一些系统为确保仅加载可信软件的可信初始化程序提供了硬件支持。例如,中央处理单元(CPU)的指令集可包括安全内核初始化指令,如SKINIT,其可用于实施可信引导。为了实施可信引导,安全内核初始化指令可保护存储器的一小部分并随后将可信软件加载至该受保护的部分中。可信软件,这里被称为可信引导(TBOOT)顺序,可随后设置软件架构以通过安全的方式加载额外的可信软件。例如,SKINIT指令为安全内核初始化指令,其通过禁止中断、禁止从外围装置对受保护的存储器区域进行直接存储器访问(DMA)并禁止除执行SKINIT指令的磁芯以外的所有磁芯而保护存储器的64K区域。一旦保护了64K区域,SKINIT则可将TBOOT顺序加载至受保护的区域。在一些情况下,SKINIT指令可命令系统组件(例如,可信处理模块)存储TBOOT顺序的校验和,其稍后可被用于验证是否安全地加载了TBOOT顺序,而非改变或以其它方式修改TBOOT顺序。
发明概要
一种存储器管理单元被配置成从多个输入/输出(I/O)装置接收对存储器访问的请求。存储器管理单元实施保护模式,其中该单元通过将存储器访问请求(从I/O装置)映射至同一组存储器地址转换数据而防止多个I/O装置进行存储器访问。当存储器管理单元不处于保护模式中时,该单元将存储器访问请求从多个I/O装置映射至不同的各个组的存储器地址转换数据。因此,存储器管理单元可使用比通常所需的更少的地址转换表保护存储器免于被I/O装置访问。在各种实施方案中,存储器地址转换数据可被存储在使用一个或多个存储器地址转换表的存储器中或一个或多个硬件寄存器中。
在一些实施方案中,软件可使用存储器管理单元实施可信初始化程序。安全初始化程序可包括执行安全内核初始化指令以保护系统存储器的一部分免于被多个I/O装置直接存储器访问。然后,程序可在存储器的受保护的部分中创建一组一个或多个地址转换表,其中转换表防止存储器访问。接着,软件可配置存储器管理单元以在保护模式中执行,从而使存储器管理单元通过将存储器访问请求从I/O装置映射至防止存储器访问的该组的一个或多个存储器地址转换表而防止I/O装置进行存储器访问。当不在保护模式中执行时,存储器管理单元被配置成将I/O请求从多个I/O装置映射至不同的各个组的一个或多个存储器地址转换表。
附图简述
图1为示出根据一些实施方案的包括被配置成执行存储器访问参数注入的输入/输出存储器管理单元(IOMMU)的计算机系统的高级视图的框图。
图2为如本文所述的被配置成实施IOMMU提供的存储器保护的系统的框图。
图3为示出根据一些实施方案的操作被配置成实施保护模式的IOMMU的方法的流程图。
图4为示出根据一些实施方案的如本文所述的用于开始使用能够实施保护模式的IOMMU的可信引导程序的方法的流程图。
图5为示出根据一些实施方案的如本文所述的被配置成进行存储器访问参数注入的计算机系统的框图。
具体实施方式
本说明书包括对“一个实施方案”或“实施方案”的提及。短语“在一个实施方案中”或“在实施方案中”的出现并不一定是指相同的实施方案。可通过任何符合本公开的合适方式结合特定特征、结构或特征。
术语。以下段落提供了用于在本公开(包括所附权利要求)中所发现术语的定义和/或上下文:
“包括”。该术语是开放式的。如在所附权利要求中所使用的,该术语并不排除额外的结构或步骤。考虑一个权利要求,其叙述:“一种设备,其包括一个或多个处理器单元……”,这样的权利要求并不排除该设备包括额外组件(例如,网络接口单元、图形电路等)。
“被配置成”。各单元、电路或其它组件均可被描述或要求为“被配置成”执行一个任务或多个任务。在这样的上下文中,“被配置成”用于通过指示单元/电路/组件包括在操作中执行那些任务的结构(例如,电路)而表示结构的内涵。同样的,单元/电路/组件能够被说成是被配置成即使当指定的单元/电路/组件当前未操作(例如,未开启)时仍可执行任务。与“被配置成”语言一同使用的单元/电路/组件包括硬件—例如存储有可执行用于实施操作等的程序指令的电路和存储器。叙述单元/电路/组件“被配置成”执行一个或多个任务明确地不旨在调用35U.S.C.§112的第六段以用于该单元/电路/组件。此外,“被配置成”可包括通用结构(例如,通用电路),其由软件和/或固件(例如,执行软件的FPGA或通用处理器)所操作以按能够执行待解决的任务的方式操作。“被配置成”还可包括使制造过程(例如,半导体制造设施)适于制造适合实施或执行一个或多个任务的装置(例如,集成电路)。
“第一”、“第二”等。如本文所使用的,这些术语用作位于其之后的名词的标签且不暗示任何类型的排序(例如,空间上、时间上、逻辑上等)。例如,在具有八个处理元件或内核的处理器中,术语“第一”和“第二”处理元件可用于指代八个处理元件中的任意两个。换句话说,“第一”和“第二”处理元件不限于逻辑处理元件0和1。
“基于”。如本文所使用的,该术语用于描述影响确定的一个或多个因素。该术语并不排除可能会影响确定的额外因素。即,可仅基于那些因素或至少部分地基于那些因素而做出确定。考虑短语“基于B确定A”。虽然B可能是影响对A的确定的因素,但是这样的短语并不排除还基于C而做出的对A的确定。在其它情况下,可仅基于B而确定A。
一些计算机系统为可信引导操作提供硬件支持。例如,SKINIT指令保护存储器的64K区域免于被各种处理器和外围装置访问、将可信程序顺序(TBOOT)加载至受保护的区域并允许TBOOT以安全的方式加载其它可信软件。
随着调制解调器软件和硬件系统已在大小和复杂度上有所增长,通过SKINIT指令所保护的存储器的64K区域对于存储有效的TBOOT顺序来说已变得太小了。例如,一些调制解调器系统启用外围装置以通过I/O存储器管理单元(IOMMU)进行存储器访问(例如,DMA),且该IOMMU被配置成通过将存储器访问请求中指定的虚拟存储器地址转换为系统物理地址而强制执行存储器约束。在以全文引用方式并入本文的美国专利申请公开2011/0023027,即I/OMemory Management Unit Including Multilevel Address Translation forI/O and Computation Offload中公开了这种IOMMU的实例。在这样的系统中,TBOOT顺序可理论上地配置IOMMU以通过创建用于IOMMU的I/O转换表而阻止存储器访问操作,其中所述表强制执行所需的存储器约束。然而,I/O转换表可能需要显著的存储器,且因此难以或不可能适合于在受SKINIT指令保护的64K区域中的这些数据结构。例如,使用16位总线/装置/功能标识符(BDF)标识外围装置的IOMMU可能需要用于高达65536外围装置的各个转换表。由于每个装置需要一个字节以上的存储器,仅具有64K存储器的TBOOT顺序可能不具有足够的资源以配置IOMMU以限制所有外围装置的存储器访问操作。
根据一些实施方案,可通过软件配置IOMMU以在保护模式中操作,从而使IOMMU禁止外围装置的存储器访问,而无需显著的存储占用。在一些实施方案中,IOMMU可包括保护标志,其可被设置为命令IOMMU将每个传入的存储器访问请求当做来自同一装置的请求一样来处理。例如,如果IOMMU使用各自BDF标识符标识装置,具有设定的保护标志的IOMMU则可将每个传入的DMA请求当做其来自BDF0一样来处理,而不管究竟是哪个装置发送该请求。与默认BDF值(例如,0)对应的IOMMU装置表条目可使用IOMMU的任意能力而进行编程而无需受限于任何功能子集。IOMMU可使用与BDF0对应的单组表而转换所有的存储器访问请求。因此,可将所有相关的I/O转换表存储在单页上,且在一些实施方案中,在该页的前八至十六字节后的任何存储器可被用于非IOMMU的目的。
在一些实施方案中,防止存储器访问的该组表(例如,与上述BDF0对应的那些)可作为被存储在存储器中的表而予以实施。然而,在各种实施方案中,可使用其它存储机制存储这些表(或其中含有的信息)中的一些或所有。例如,在一些实施方案中,IOMMU可在一个或多个寄存器中存储转换数据,且寄存器可出现在存储器映射的输入/输出(MMIO)空间中。因此,转换信息的存储器占用可被减少至零。虽然下述的许多实施方案利用存储器存储防止存储器访问的转换数据,但应理解的是,转换数据中的一些或所有可使用其它机制,如IOMMU寄存器而进行存储。在本文中,术语转换数据通常是指用于确定存储器地址转换的任何数据,而无论数据被存储在系统中的什么位置。
通过在保护模式中操作时减少IOMMU所需的转换表的大小,上述机制使TBOOT顺序能够使用小的IOMMU数据结构(例如,页表)以保护所有存储器免于被外围装置访问。在保护模式中IOMMU的保护下,TBOOT顺序可设置更复杂的IOMMU数据结构和/或大于SKINIT的保护限的页表。一旦创建了这种结构和表,软件就能够通过取消对保护标志的设置而使IOMMU返回至正常操作。
图1为示出根据一些实施方案的包括被配置成进行存储器访问参数注入的IOMMU的计算机系统的高级视图的框图。在所示的实施方案中,系统10包括一个或多个处理器12、存储器管理单元(MMU14)、存储器控制器(MC18)、存储器20、一个或多个外围I/O装置22和IOMMU26。MMU14包括一个或多个转换后备缓冲器(TLB)16且外围I/O装置22包括一个或多个I/O TLB(IOTLB)24。根据所示的实施方案,I/O MMU(IOMMU)26包括表遍历器(table walker)28、高速缓冲存储器30、控制寄存器32和控制逻辑34。处理器12被耦合至MMU14,其被耦合至存储器控制器18。I/O装置22被耦合至IOMMU26,其被耦合至存储器控制器18。在IOMMU26内,表遍历器28、高速缓冲存储器30、控制寄存器32和控制逻辑34被耦合在一起。
系统10示出了系统的高级功能性,且实际物理实施方式则可采取多种形式。例如,MMU14可被集成至每个处理器12中。虽然示出了存储器20,但存储器系统也可以是分布式存储器系统,在一些实施方案中,存储器地址空间被映射至被耦合至物理分离的存储器控制器的多个物理分离的存储器。可沿源于I/O的存储器请求和存储器20之间的路径将IOMMU26放置于任何地方,且可具有一个以上的IOMMU。更进一步地,IOMMU可位于系统的不同部分中的不同点上。
处理器12可包括任何处理器硬件以实施任何所需的指令集架构。在一个实施方案中,处理器12实施x86架构,更特别的是AMD64TM架构。各种实施方案可以是超流水线的和/或超标量的。包括一个以上的处理器12的实施方案可通过离散的方式进行实施或作为芯片多处理器(CMP)和/或芯片多线程(CMT)而被实施。
存储器控制器18可包括被设计为在存储器20和系统10的其余部分之间进行接口连接(interface)的任何电路。存储器20可包括任何半导体存储器,如一个或多个RAMBUS DRAM(RDRAM)、同步DRAM(SDRAM)、DDR SDRAM、静态RAM等。存储器20可分布在系统中,且因此可具有多个存储器控制器18。
MMU14可包括用于源于处理器12的存储器请求的存储器管理单元。MMU可包括转换后备缓冲器(TLB)16以及表遍历功能。当MMU14执行转换时,MMU14可生成至CPU转换表50的转换存储器请求(例如,在图1被示为虚线箭头46和48)。CPU转换表50可存储转换数据,如在处理器12实施的指令集架构中所定义的。
I/O装置22可包括在计算机系统10和其它装置之间进行通信的任何装置,提供至计算机系统10的人机接口,提供存储(例如,磁盘驱动器、高密度光盘(CD)或数字视频光盘(DVD)驱动器、固态存储等)和/或将增强的功能提供至计算机系统10。例如,I/O装置22可包括下列项中的一个或多个:网络接口卡、集成网络接口功能、调制解调器、视频加速器、音频卡或集成的音频硬件、硬盘或软盘驱动器或驱动器控制器、接口连接至用户输入装置(如键盘、鼠标、平板计算机等)的硬件、用于视频显示器的视频控制器、打印机接口硬件、至一个或多个外围接口,如外围组件接口(PCI)、PCI express(PCIe)、PCI-X、USB、火线、SCSI(小型计算机系统接口)等的桥路、声卡和各种数据采集卡,如通用接口总线(GPIB)或现场总线接口卡等。术语“外围装置”可用于描述一些I/O装置。
在一些情况下,I/O装置22中的一个或多个可包括输入/输出转换后备缓冲器(IOTLB),如IOTLB24和/或MMU。这些IOTLB可被称为“远程IOTLB”,这是因为它们均位于IOMMU26的外部。在这种情况下,可通过某种方式对已被转换的地址进行标记,使得IOMMU26不会再次尝试转换存储器请求。在一个实施方案中,被转换的地址可被简单地标记为“经预转换的”。
如下面进一步所描述的,IOMMU26可包括各种特征以在系统10简化虚拟化。下面的描述将涉及管理虚拟机(其在下伏硬件上调度其执行)、控制对各种系统资源的访问和/或提供其它功能的虚拟机监视器(VMM)。在本公开中,术语VMM和管理程序可替换使用。
在所示的实施方案中,处理器12被配置成在虚拟环境中执行软件。相应地,图1示出在VMM106上执行的三个虚拟机100A、100B和100C(即,VM客户机1-3)。在给定环境中的虚拟机的数量可在不同的时间发生变化,并且可在使用中发生动态变化,如通过用户启动和停止虚拟机。在所示的实施方案中,虚拟机100A包括一个或多个客户机应用102和被配置成执行、提供服务至和/或以其它方式管理应用102的执行的客户机操作系统(OS)104。OS104被称为“客户机”OS,这是因为OS104是通过VMM106而不是系统10的物理硬件来控制为其而创建的虚拟机。同样地,VM100B和VM100C中的每一个也可包括一个或多个客户机应用和客户机OS。
虚拟机中的应用使用虚拟机的虚拟地址空间且因此使用客户机虚拟地址(GVA)。虚拟机的客户机OS可管理IOMMU26中的设置(例如,页表)以使IOMMU能够将虚拟机的GVA映射至客户机物理地址(GPA),其也是特定于相同的虚拟机。如果客户机OS直接在系统硬件上运行且不具有介入的VMM,OS设置生成的物理地址将实际上是用于系统10的系统物理地址(SPA)。然而,由于客户机OS正在虚拟机中运行,其可能仅提供了用于从客户机专用的GVA转换至特定于相同客户机的GPA的设置。因此,在一些实施方案中,虚拟机监视器(例如,VMM106)可管理IOMMU中用于将各种客户机的GPA映射至下伏系统的对应SPA的设置。因此,如果I/O装置22进行指定客户机100A的GVA的存储器访问请求,IOMMU26则可使用源自VMM106和客户机OS104的设置以将GVA转换至SPA。
如图1所示,从I/O装置22至存储器20的路径至少部分地与处理器12至存储器20的路径相分离。特别地,从I/O装置22至存储器20的路径不通过MMU14,而是通过IOMMU26。相应地,MMU14可能不会向源自I/O装置22的存储器请求提供存储器管理。
通常,存储器管理可提供地址转换和存储器保护。地址转换将虚拟地址转换至物理地址(例如,GVA至SPA,如上所述)。存储器保护功能可在某个级别的粒度(例如,页)上控制对存储器的读和/或写访问,以及各种其它存储器访问参数,如权限级别的要求、可缓存性和缓存器控制(例如,直写或回写)、相干性、不执行(NX)标志等。可在各种实施方案中实施任何一组存储器保护。在一些实施方案中,在至少一些方面中,通过IOMMU26实施的存储器保护可不同于MMU14实施的存储器保护。在一个实施方案中,可定义IOMMU26实施的存储器保护,使得可共享存储有IOMMU26和MMU14使用的转换数据的转换表(虽然为了便于讨论而在图1中分别示出)。在其它实施方案中,在各种程度上,转换表可被分开,并且不可在IOMMU26和MMU14之间共享。
I/O装置22可被配置成发起存储器访问请求,如直接存储器访问(DMA)、地址转换服务(ATS)访问、页请求接口(PRI)访问和/或其它类型的用于访问存储器20的操作。一些操作类型可被进一步地分成子类型。例如,DMA操作可以是读、写或联锁操作。然而,本文所使用的术语DMA通常是指源自I/O装置的任何存储器访问请求。可通过在处理器12中的一个或多个上执行的软件发起存储器访问操作。软件可直接或间接地对I/O装置22进行编程以执行DMA操作。
软件可向I/O装置22提供与执行软件的地址空间对应的地址。例如,在处理器12上执行的客户机应用(例如,应用102)可向I/O装置22提供GVA,而在处理器12(例如,OS104)上执行的客户机OS可将GPA提供至I/O装置22。
当I/O装置22请求存储器访问时,可通过IOMMU26将客户机地址(GVA或GPA)转换至对应的系统物理地址(SPA)。IOMMU可将SPA呈给存储器控制器18以访问存储器20。即,IOMMU26可修改源自I/O装置22的存储器请求以改变在对SPA的请求中的所接收的地址,且随后将SPA转发至存储器控制器18以访问存储器20。
在各种实施方案中,IOMMU26可根据其从I/O装置接收的地址类型提供一级转换、二级转换或不提供转换。例如,响应于接收GPA,IOMMU26可提供GPA至SPA(一级)转换,且响应于接收GVA,IOMMU26可提供GVA至SPA(二级)转换。因此,客户机应用在请求存储器访问时可直接将GVA地址提供至I/O装置,从而进行常规的VMM拦截和不必要的转换。虽然描述了一级转换、两级转换或无转换,但可以预见的是,在其它实施方案中,也可使用额外的地址空间。在这种实施方案中,可通过IOMMU26进行额外级别的转换(即,多级转换)以容纳额外的地址空间。
图1所示的IOMMU26可包括表遍历器28以搜索用于针对给定的存储器请求的转换的I/O转换表36。表遍历器28可生成存储器请求以从转换表36读取转换数据。在图1中,以虚线箭头38和40示出转换表读数。
为了便于实现更快速的转换,IOMMU26可缓存一些转换数据。例如,缓存器30可采取与TLB相类似的缓存器的形式,其缓存先前转换的结果,从而将客户机虚拟和客户机物理页号映射至系统物理页号和对应的转换数据。如果针对给定的存储器请求未在缓存器30中找到转换,则可调用表遍历器28。在各种实施方案中,可在硬件或微控制器或其它处理器和对应的可执行代码(例如,在IOMMU26中的只读存储器(ROM)中)中实施表遍历器28。其它高速缓冲存储器可被包括至缓存页表或其部分和/或装置表或其部分中以作为高速缓冲存储器30的一部分。相应地,IOMMU26可包括一个或多个存储器以存储从其读出的或从其获得的转换数据、被存储在存储器20中的转换数据。
控制逻辑34可被配置成访问缓存器30以检测针对给定的存储器请求的转换命中/未命中且可调用表遍历器28。控制逻辑34还可被配置成使用被转换的地址修改源自I/O装置的存储器请求,并且将请求向上游转发至存储器控制器18。
控制逻辑34可控制IOMMU26中的各种其它功能,如被编程至控制寄存器32中一样。例如,控制寄存器32可将存储器区域定义为命令队列42以用于存储器管理软件将控制命令传达至IOMMU26。控制逻辑34可被配置成从命令队列42读取控制命令并执行控制命令。在一些实施方案中,控制寄存器32可将另一存储器区域定义成事件日志缓冲器44。控制逻辑34可检测各种事件并将其写入事件日志缓冲器44。事件可包括控制逻辑34所检测到的关于转换和/或IOMMU26的其它功能的各种错误。控制逻辑34还可实施IOMMU26的其它特征。
在一些实施方案中,控制寄存器32可包括一个或多个保护标志和/或字段,其可被软件用于将IOMMU置于保护模式中。本文所述的许多实施方案使用保护标志(例如,一位),其可由软件进行设置以将IOMMU置于保护模式中以及取消设置以使IOMMU返回正常操作。然而,在各种其它实施方案中,可通过标志和/或字段的组合实施类似的功能。
图2为如本文所述的被配置成实施IOMMU提供的存储器保护的系统的框图。在一些实施方案中,系统200可对应于图1所示的I/O装置22、IOMMU26和存储器20。为了便于类推,使用对应于系统20的类似组件的号码标记系统200的一些组件。然而,通过这些组件所提供的功能可因两个系统而有所不同,这取决于特定实施方式的详细内容。
根据所示实施方案,系统200包括I/O装置205,其可对应于图1所示的I/O装置22中的一个。I/O装置205可被配置成做出对IOMMU26的存储器访问请求(例如,DMA)。如上所述,源自外围装置的存储器访问请求可包括装置标识符,如BDF号,其指示特定存储器访问请求所源自的特定装置。例如,使用装置ID207标记源自装置205的存储器访问请求。
IOMMU26包括控制逻辑34,其可被配置成致动存储器访问请求、执行存储器地址转换、实施存储器保护和/或实施IOMMU26的各种其它功能。控制逻辑32的功能可取决于在各种控制寄存器32中所存储的值。
为了进行存储器转换,IOMMU26可能需要对存储在存储器20中的各种转换表进行访问。一种这样的表可以是装置表225,其可含有用于做出存储器访问请求的每个I/O装置的各个条目。IOMMU26可被配置成使用被存储在装置表基址寄存器215中的存储器地址定位装置表,且装置表基址寄存器215可能存储有装置表所被存储在的存储器20的存储器地址。因此,在转换存储器地址时,IOMMU可通过从基址寄存器215读取表的存储器地址而定位装置表。
在一些实施方案中,装置表(如225)可包括用于能够做出存储器访问请求的每个I/O装置的各自的装置表条目(DTE)。在所示的实施方案中,装置表225包括装置表条目(DTE)230。在典型的操作(例如,非保护模式)中,每个DTE对应于各自的外围装置。例如,每个DTE可对应于与装置对应的各个装置标识符(如装置ID207)。DTE可含有可用于转换源自该装置的存储器访问请求的存储器地址的指针和/或其它数据结构。
可用装置标识符,如BDF号对装置表225进行索引。因此,IOMMU控制逻辑可使用被接收作为给定存储器访问请求的一部分的装置标识符来定位与请求装置相对应的DTE。例如,在所示的实施方案中,在与IOMMU进行通信时,I/O装置205可包括装置ID207。响应于从I/O装置205接收消息,IOMMU可使用装置ID207来定位在装置表225中的每个装置的DTE235的对应DTE。
在不同的实施方案中,装置标识符可通过不同的方式进行定义且可基于装置所附至的外围装置互联。例如,外围组件互联(PCI)装置可根据总线号、装置号和功能号(BDF)形成装置ID,而HyperTransportTM(HT)装置可使用总线号和单元ID来形成装置ID。
每个DTE可包括一个或多个指向一组转换表(例如,表240)的指针,其中IOMMU能使用该组转换表转换源自对应装置的存储器地址。特定数量和/或类型的指针和转换表240可因实施方案而不同且可包括实施多级转换的各种转换和/或页表。例如,指针可指向作为在转换表240中进行转换搜索的起点的页表。起始页表可包括以分层方式指向其它页表的指针。一些表可通过进程标识符,如进程地址空间标识符(PASID)进行索引,而其它表则可通过使用待转换的具有各种位的地址(例如,GVA或GPA)进行索引。因此,转换表240可支持各种一级转换或二级转换。
在一些实施方案中,DTE230可包括受限DTE,其可被配置成不允许从任何映射至受限DTE的装置进行存储器访问操作。例如,在一些实施方案中,受限DTE可包括明确地禁止通过对应的装置进行存储器访问的各种控制标志。在其它实施方案中,受限DTE或通过受限DTE指向的240的存储器表可指示对应于DTE的装置仅可访问不威胁可信引导顺序的存储器的较小或零大小的部分。用于禁止映射至受限DTE的装置的存储器访问的各种其它机制也是可能的。
在一些实施方案中,软件(如220)可配置IOMMU以在保护模式中执行,其中IOMMU将所有存储器访问请求映射至受限DTE230。在各种实施方案中,软件220可对应于操作系统、虚拟操作系统、虚拟机监视器、TBOOT顺序和/或其它软件。在图2中,软件220通过在控制寄存器32中设置保护标志210而配置IOMMU26以在保护模式中执行。
当在保护模式中执行时,IOMMU26可将每个存储器访问请求映射至受限DTE,从而有效地禁止外围装置进行存储器访问。由于当IOMMU在保护模式中执行时每个存储器访问请求映射至相同的DTE(即,受限DTE),因此装置表225仅需含有受限DTE。因此,在可信引导初始化的过程中,存储装置表数据结构所需的存储器占用是较小的。例如,在一些实施方案中,TBOOT顺序可创建仅含有一个条目(受限DTE)的装置表225。由于这种表无需在230中包括其它每个装置的DTE,因此表相对较小且可适合用于SKINIT指令创建的受保护的64K存储器区域中。一旦创建了受限DTE,TBOOT顺序可设置保护标志210以禁用所有外围装置存储器访问。
图3为示出根据一些实施方案的操作被配置成实施保护模式的IOMMU的方法的流程图。可通过IOMMU,如图1所示的IOMMU26执行图3所示的方法。
当IOMMU从I/O装置接收存储器访问请求时,方法300开始,如305中所示。在各种情况下,请求可对应于DMA请求以读和/或写存储器数据。请求可包括至少一个存储器地址(例如,从其读或写数据的地址),其可在虚拟地址空间中进行指定。请求还可包括装置标识符,如BDF号。
在310中,IOMMU可确定其是否正在保护模式下执行。在一些实施方案中,IOMMU可检查一个或多个保护标志,如保护标志210(如图2所示),从而做出310的确定。例如,如果设置了保护标志210,那么IOMMU则可在决策310中确定IOMMU处于保护模式下。
如果IOMMU确定其处于保护模式下,如从310出来的肯定答案所指示的,其可将请求的装置标识符设置为默认值。例如,在315中,IOMMU将BDF值设置为默认值,如0。在其它实施方案中,可使用不同的默认值和/或可使用除了BDF值以外的标识符以标识装置。
在320中,IOMMU可读取与和请求相关联的BDF号对应的DTE。如果IOMMU不是在保护模式中执行的,如从310出来的否定答案所指示的,BDF号可对应于做出DMA请求的I/O装置。在这种情况下,IOMMU可标识和读取(在320中)与I/O装置对应的DTE。然而,如果IOMMU正在保护模式中执行(如从310出来的肯定答案所指示的),那么BDF号则在315中被设置为默认值(例如,0)。因为,在这种情况下,IOMMU将标识和读取(在320中)受限DTE。
在325中,IOMMU可使用源自320的DTE以确定是否允许305的DMA请求。如上所述,受限DTE可被配置成不允许从任何映射至受限DTE的装置进行存储器访问操作。在不同的实施方案中,受限DTE可包括明确地禁止存储器访问的控制标志、指向指示仅可对存储器的小部份或零大小的部分进行访问的转换表的指针和/或用于禁止DMA访问干扰可信引导进程的另一机制。
如果IOMMU确定允许进行DMA操作,如325出来的肯定答案所指示的,IOMMU则转换DMA的一个或多个地址,如330中所示,并进行DMA操作,如335中所示。如上所述,转换在DMA请求中找到的地址可包括分析一个或多个转换表,如I/O转换表36和/或表240。
如上所述,在一些实施方案中,IOMMU可使用硬件寄存器存储实施保护模式的转换数据,而不是在一个或多个基于存储器的转换表中存储转换数据。为了实施保护模式,这种IOMMU可通过从硬件寄存器而不是从存储器读取转换数据(如315中和/或320中所示)而对确定其处于保护模式中而做出响应(如从310出来的肯定答案所指示的)。在从寄存器读取转换数据后,方法可继续进行325。
如果IOMMU确定不允许进行DMA操作,如从325出来的否定答案所指示的,IOMMU可拒绝存储器访问操作,如340中所示。在各种实施方案中,可通过不同的方式拒绝操作。例如,在一些实施方案中,拒绝存储器访问请求可包括将错误代码返回至请求装置。在各种实施方案中,IOMMU可执行其它行为,如将各种代码返回至外围装置或根本不将代码返回至外围装置。
图4为示出根据一些实施方案的如本文所述的用于开始使用能够实施保护模式的IOMMU的可信引导程序的方法的流程图。在各种实施方案中,方法400可通过软件执行,如通过操作系统、客户机操作系统、虚拟机、TBOOT顺序和/或其它软件而进行。
方法400通过保护存储器的一部分而开始,如405所示。例如,软件可通过执行专用指令,如被配置成保护存储器的64K的SKINIT指令而保护存储器的一部分,如上所述。
在410中,软件将TBOOT顺序加载入在405中受保护的存储器的部分中。在415中,TBOOT顺序在存储器的受保护的部分中创建装置表(如225)并在装置表中包括受限DTE。受限DTE可仅是装置表中的DTE且可包括一个或多个防止映射至DTE的装置进行DMA访问的标志、字段和/或指针。
在420中,软件设置IOMMU的保护标志。保护标志可对应于系统200的保护标志210。设置保护标志可命令IOMMU开始在保护模式中执行。当在保护模式中执行时,IOMMU可假定用于IOMMU接收的每个存储器访问请求的默认装置标识符,而不管实际发送请求的是哪个装置。在一些实施方案中,默认装置标识符可对应于在415中创建的受限DTE。在这种实施方案中,由于受限DTE被配置成防止通过映射至受限DTE的外围装置进行存储器访问,且在保护模式中执行的IOMMU将每个装置均映射至受限DTE,而当IOMMU处于受保护的模式中,没有装置可执行DMA操作。
在425中,通过TBOOT顺序加载的TBOOT顺序的软件或其它软件可建造被配置成通过各种外围装置调节DMA访问的额外转换表。例如,在425中,软件可在装置表中创建额外DTE。每个额外的DTE可对应于各外围装置且包括指向一个或多个被配置成转换源自各个装置的DMA操作的地址的转换表的指针。在425中建造的转换表可包括禁止对应的外围装置访问存储器的各可信部分的限制。
一旦软件已建造被配置成控制源自外围装置的DMA存储器访问的转换表,如425中所示,软件则可取消对保护标志的设置,如430中所示。一旦取消了对保护标志的设置,IOMMU则可返回至在非保护的模式中执行。当在非保护的模式中执行时,IOMMU可通过确定用于标记请求的装置标识符(即,请求装置标识符)、定位与装置标识符对应的一个或多个转换表(例如,在425中所建造的那些)并使用定位的表转换在存储器访问请求中指定的一个或多个存储器地址来处理传入的存储器访问请求。
图5为示出根据一些实施方案的如本文所述的被配置成进行存储器访问参数注入的计算机系统的框图。计算机系统500可对应于各种类型装置中的任一种,包括但不限于个人计算机系统、台式计算机、膝上型计算机、主机计算机系统、手持式计算机、工作站、网络计算机、消费装置、应用服务器、存储装置、外围装置,如交换机、调制解调器、路由器等,或任何一般类型的计算装置。
计算机系统500可包括一个或多个处理器560,其中的任何一个可包括多个物理和/或逻辑内核。处理器560中的任何一个可对应于图1所示的处理器12且可执行VMM和/或多个客户机操作系统。计算机系统500还可包括一个或多个外围装置550,其可对应于图1所示的I/O装置22,以及如本文所述的IOMMU装置555可对应于图1所示的IOMMU26。
根据所示的实施方案,计算机系统500包括一个或多个共享的存储器510(例如,高速缓冲存储器、SRAM、DRAM、堆叠存储器、RDRAM、EDO RAM、DDR5RAM、SDRAM、Rambus RAM、EEPROM等中的一个或多个),其可在多个处理核,如处理器560中的一个或多个之间进行共享。在一些实施方案中,处理器560中的不同处理器可被配置成对具有不同延迟和/或带宽特性的共享存储器510进行访问。存储器510中的一些或所有可对应于图1所示的存储器20。
一个或多个处理器560、外围装置550和共享的存储器510可经互联540和互联541进行耦合。在各种实施方案中,系统可包括未在图5中示出的较少的或额外的组件。此外,图5中所示的不同组件可进行结合或可被进一步地分成额外组件。
在一些实施方案中,共享存储器510可存储程序指令520,其可在平台的本机二进制的任何解释性语言,如JavaTM字节码或在任何其它语言,如C/C++、JavaTM等或在其任何组合中进行编码。程序指令520包括用于实施软件,如被配置成在OS524上执行的VMM528、任何数量的虚拟机、TBOOT顺序526、任何数量的操作系统524(客户机或常规的)以及任何数量的应用522(客户机或常规的)的程序指令。软件522-528中的任何软件可以是单线程或多线程的。在各种实施方案中,OS524和/或VMM528可在IOMMU555中设置保护标志557以将IOMMU555置于执行的保护模式中,如本文所述。
根据所示的实施方案,共享存储器510包括数据结构530,其可通过处理器560中的一些和/或外围装置550中的一些而经由IOMMU555进行访问。数据结构530可包括各种I/O转换表,如图3中的325和图1中的36。处理器560中的一些可以在本地缓存器中缓存共享存储器510的各种组件并根据缓存一致性协议交换消息而在这些缓存器中协调数据。
程序指令520,如用于实施软件522-528的那些可被存储在计算机可读存储介质上。计算机可读存储介质可包括任何用于以机器(例如,计算机)可读的形式(例如,软件和处理应用)存储信息的机制。计算机可读存储介质可包括,但不限于磁存储介质(例如,软盘);光存储介质(例如,CD-ROM);磁光存储介质;只读存储器(ROM);随机存取存储器(RAM);可擦除可编程存储器(例如,EPROM和EEPROM);闪存;适于存储程序指令的电性介质或其它类型的介质。
在一些实施方案中,可使用如上所述的一种计算机可读存储介质存储指令,该指令可通过程序进行读取并直接或间接地予以使用以制造包括处理器550中的一个或多个的硬件。例如,指令可描述一个或多个数据结构,其描述了硬件功能在高级设计语言(HDL),如Verilog或VHDL中的行为级或寄存器传输级(RTL)的描述。该描述可通过综合工具进行读取,且该综合工具可综合该描述以产生网表。网表可包括一组门(例如,在综合库中所限定的),其表示处理器500的功能。接着,可放置和路由该网表以产生描述要应用至掩码的几何形状的数据组。接着,可在各半导体制造步骤中使用掩码以产生与处理器50和/或550对应的一个半导体电路/电路。可替代地,根据需要,数据库可以是网表(具有或不具有综合库)或数据组。
虽然上面已经描述了具体实施方案,但这些实施方案并不旨在限定本公开的范围,即使其中仅有单一的实施方案是关于特定特征进行描述的。除非另外注明,在本公开中提供的特征的实例都是说明性的而非限制性的。上面的描述旨在涵盖此类替代物、修改和等同物,其对于受益于本公开的本领域的技术人员来说将是显而易见的。
本公开的范围包括本文所公开的(明示地或暗示地)任何特征或特征的组合,或其任何概括,而无论其是否减轻了本文所处理问题中的任何或全部。相应地,在本申请(或要求其优先级的申请)的申请过程中可对特征的任何这样的组合制定新的权利要求。特别地,参照所附的权利要求,源自从属权利要求的特征可与独立权利要求的特征相结合,且源自各独立权利要求的特征可按任何合适的方式,而不仅仅是所附权利要求中列举的具体组合方式进行组合。

Claims (33)

1.一种设备,其包括:
存储器管理单元,其被配置成从多个I/O装置接收存储器访问请求并实施保护模式;
其中,当在所述保护模式中执行时,所述存储器管理单元被配置成通过将所述存储器访问请求中的每一个映射至同一组存储器地址转换数据而防止所述多个I/O装置进行存储器访问;以及
其中,当不在所述保护模式中执行时,所述存储器管理单元被配置成通过将不同的存储器访问请求映射至不同的各个组的存储器地址转换数据而允许源自所述多个I/O装置的存储器访问请求。
2.根据权利要求1所述的设备,其中所述存储器地址转换数据中的至少一些被存储在使用一个或多个存储器地址转换表的存储器中或硬件寄存器中。
3.根据权利要求1所述的设备,其中所述存储器管理单元可配置成响应于软件设置所述存储器管理单元的保护标志而进入所述保护模式。
4.根据权利要求1所述的设备,其中将所述存储器访问请求映射至所述同一组存储器地址转换数据包括:使用默认装置标识符值标记所述存储器访问请求。
5.根据权利要求4所述的设备,其中所述默认装置标识符值与装置表中的受限条目相对应,其中所述受限条目指示不允许所述装置访问系统存储器。
6.根据权利要求4所述的设备,其中所述默认装置标识符值与装置表中的受限条目相对应,其中所述受限条目指示IOMMU应转换源自所述装置的存储器访问请求,且所述装置使用将所有存储器地址映射至系统存储器中相同受限部分的地址转换数据。
7.根据权利要求6所述的设备,其中系统存储器的所述受限部分具有零大小。
8.根据权利要求6所述的设备,其中存储器的所述受限部分位于用于实施可信引导程序的部分之外。
9.根据权利要求1所述的设备,其中所述存储器管理单元被配置成响应于从所述I/O装置中的一个接收存储器访问请求通过返回错误代码来防止存储器访问。
10.一种在处理系统中保护使用存储器管理单元的存储器的计算机实施的方法,所述执行包括:
当在保护模式中执行时,所述存储器管理单元:
从I/O装置接收对存储器访问的请求;
响应于接收所述请求,所述存储器管理单元通过将所述请求中的每一个映射至所述同一组存储器地址转换数据来防止所请求的存储器访问;
当在不受保护的模式中执行时,所述存储器管理单元:
从所述I/O装置中的两个或更多个接收对存储器访问的其它请求;
确定用于所述I/O装置中的所述两个或更多个中每一个的各个组的存储器地址转换数据;以及
对于所述其它请求中的每一个,将所述请求映射至与进行所述其它请求的所述I/O装置对应的所述组的存储器地址转换数据。
11.根据权利要求10所述的方法,其中所述存储器地址转换数据中的至少一些被存储在使用一个或多个存储器地址转换表的存储器中或被存储在硬件寄存器中。
12.根据权利要求10所述的方法,其还包括:所述存储器管理单元响应于软件设置所述存储器管理单元的保护标志而进入所述保护模式。
13.根据权利要求10所述的方法,其中将所述存储器访问请求映射至所述同一组存储器地址转换数据包括:使用默认装置标识符值标记所述存储器访问请求。
14.根据权利要求13所述的方法,其中所述默认装置标识符值与装置表中的受限条目相对应,其中所述受限条目指示不允许所述装置访问系统存储器。
15.根据权利要求13所述的方法,其中所述默认装置标识符值与装置表中的受限条目相对应,其中所述受限条目指示IOMMU应转换源自所述装置的存储器访问请求,且所述装置使用将所有存储器地址映射至系统存储器中相同受限部分的地址转换数据。
16.根据权利要求15所述的方法,其中系统存储器的所述受限部分具有零大小。
17.根据权利要求15所述的方法,其中存储器的所述受限部分位于用于实施可信引导程序的部分之外。
18.一种非临时性计算机可读存储介质,其包括由可在计算机系统上执行的程序操作的数据结构,所述程序在所述数据结构上操作以执行进程的一部分,从而制造包括通过所述数据结构描述的电路的集成电路,在所述数据结构中描述的所述电路包括:
存储器管理单元,其被配置成从多个I/O装置接收存储器访问请求并实施保护模式;
其中,当在所述保护模式中执行时,所述存储器管理单元被配置成通过将所述存储器访问请求中的每一个映射至所述同一组存储器地址转换数据而防止所述多个I/O装置进行存储器访问;以及
其中,当不在所述保护模式中执行时,所述存储器管理单元被配置成通过将不同的存储器访问请求映射至不同的各个组的存储器地址转换数据而允许源自所述多个I/O装置的存储器访问请求。
19.根据权利要求18所述的计算机可读介质,其中所述存储器地址转换数据中的至少一些被存储在使用一个或多个存储器地址转换表的存储器中或硬件寄存器中。
20.根据权利要求18所述的计算机可读存储介质,其中所述存储介质存储HDL、Verilog或GDSII数据。
21.根据权利要求18所述的计算机可读存储介质,其中将所述存储器访问请求映射至所述同一组存储器地址转换数据包括:使用默认装置标识符值标记所述存储器访问请求。
22.一种非临时性计算机可读存储介质,其存储可由计算机系统执行的以实施可信初始化程序的程序指令,其中所述程序包括配置存储器管理单元以在保护模式中执行,其中,当在保护模式中时,所述存储器管理单元通过将存储器访问请求从所述多个I/O装置映射至所述同一组存储器地址转换数据而防止多个I/O装置进行存储器访问,其中当不在保护模式中时,所述存储器管理单元被配置成将I/O请求从所述多个I/O装置映射至不同的各个组的存储器地址转换数据。
23.根据权利要求22所述的存储介质,其中所述存储器地址转换数据中的至少一些被存储在使用一个或多个地址转换表的存储器中或硬件寄存器中。
24.根据权利要求22所述的存储介质,其中所述可信初始化程序还包括:
执行安全内核初始化指令以保护系统存储器的一部分免于被一个或多个外围装置直接存储器访问;以及
在存储器的所述受保护的部分内创建所述组的一个或多个地址转换表。
25.根据权利要求22所述的存储介质,其中所述可执行的以实施所述可信初始化程序的程序指令为操作系统、客户机操作系统或虚拟机监视器的一部分。
26.根据权利要求22所述的存储介质,其中配置所述存储器管理单元以在保护模式中执行包括设置所述存储器管理单元的保护标志。
27.一种实施可信初始化程序的计算机实施的方法,所述方法包括:
执行安全内核初始化指令以保护系统存储器的一部分免于被多个I/O装置直接存储器访问;
在存储器的所述受保护的部分内创建一组一个或多个地址转换表,其中所述组的一个或多个存储器地址转换表防止存储器访问;以及
配置存储器管理单元以在保护模式中执行,其中,当在所述保护模式中时,所述存储器管理单元通过将存储器访问请求从所述多个I/O装置映射至防止存储器访问的所述组的一个或多个存储器地址转换表而防止所述多个I/O装置进行存储器访问,其中当不在保护模式中时,所述存储器管理单元被配置成将I/O请求从所述多个I/O装置映射至不同的各个组的一个或多个存储器地址转换表。
28.根据权利要求27的方法,其中将所述存储器访问请求映射至所述同一组存储器地址转换数据包括:使用与装置表中的受限条目对应的默认装置标识符值标记所述存储器访问请求,其中所述受限条目指示不允许所述装置访问系统存储器。
29.根据权利要求27的方法,其中将所述存储器访问请求映射至所述同一组存储器地址转换数据包括:使用与装置表中的受限条目对应的默认装置标识符值标记所述存储器访问请求,其中所述受限条目指示IOMMU应转换源自所述装置的存储器访问请求,且所述装置使用将所有存储器地址映射至系统存储器中相同受限部分的地址转换数据。
30.根据权利要求29所述的方法,其中系统存储器的所述受限部分具有零大小。
31.根据权利要求29所述的方法,其中存储器的所述受限部分位于用于实施可信引导程序的部分之外。
32.根据权利要求27所述的计算机实施的方法,其中所述可执行的以实施所述可信初始化程序的程序指令为操作系统、客户机操作系统或虚拟机监视器的一部分。
33.根据权利要求27所述的存储介质,其中配置所述存储器管理单元以在保护模式中执行包括设置所述存储器管理单元的保护标志。
CN201280046643.9A 2011-09-25 2012-09-24 具有保护模式以防止i/o装置进行存储器访问的输入/输出存储器管理单元 Active CN103842976B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/244,571 US8631212B2 (en) 2011-09-25 2011-09-25 Input/output memory management unit with protection mode for preventing memory access by I/O devices
US13/244,571 2011-09-25
PCT/US2012/056898 WO2013044223A1 (en) 2011-09-25 2012-09-24 Input/output memory management unit with protection mode for preventing memory access by i/o devices

Publications (2)

Publication Number Publication Date
CN103842976A true CN103842976A (zh) 2014-06-04
CN103842976B CN103842976B (zh) 2016-01-20

Family

ID=47023085

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280046643.9A Active CN103842976B (zh) 2011-09-25 2012-09-24 具有保护模式以防止i/o装置进行存储器访问的输入/输出存储器管理单元

Country Status (6)

Country Link
US (1) US8631212B2 (zh)
EP (1) EP2758884B1 (zh)
JP (1) JP5690024B2 (zh)
KR (1) KR101471108B1 (zh)
CN (1) CN103842976B (zh)
WO (1) WO2013044223A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106598480A (zh) * 2015-10-14 2017-04-26 三星电子株式会社 具有接口控制机制的电子系统及其操作方法
CN107949833A (zh) * 2015-07-27 2018-04-20 谷歌有限责任公司 交换机中的地址缓存
CN111295644A (zh) * 2017-10-30 2020-06-16 惠普发展公司,有限责任合伙企业 保障硬件初始化

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9152570B2 (en) * 2012-02-27 2015-10-06 Vmware, Inc. System and method for supporting finer-grained copy-on-write page sizes
US10223506B2 (en) * 2012-04-04 2019-03-05 Rackspace Us, Inc. Self-destructing files in an object storage system
US9323932B2 (en) * 2012-12-19 2016-04-26 Advanced Micro Devices, Inc. Protecting memory contents during boot process
US10514855B2 (en) * 2012-12-19 2019-12-24 Hewlett Packard Enterprise Development Lp NVRAM path selection
US9015374B2 (en) 2013-07-09 2015-04-21 Advanced Micro Devices, Inc. Virtual interrupt filter
US9734341B1 (en) * 2014-04-18 2017-08-15 Symantec Corporation Systems and methods for protecting computing systems from peripheral devices
US9690720B2 (en) 2014-06-03 2017-06-27 Qualcomm Incorporated Providing command trapping using a request filter circuit in an input/output virtualization (IOV) host controller (HC) (IOV-HC) of a flash-memory-based storage device
US9632953B2 (en) 2014-06-03 2017-04-25 Qualcomm Incorporated Providing input/output virtualization (IOV) by mapping transfer requests to shared transfer requests lists by IOV host controllers
EP2983088A1 (en) 2014-08-06 2016-02-10 Airbus Defence and Space GmbH Memory protection unit
US10552619B2 (en) * 2015-07-20 2020-02-04 Intel Corporation Technologies for secure trusted I/O access control
US10055136B2 (en) 2015-07-29 2018-08-21 Red Hat Israel, Ltd. Maintaining guest input/output tables in swappable memory
US10102391B2 (en) * 2015-08-07 2018-10-16 Qualcomm Incorporated Hardware enforced content protection for graphics processing units
US9767320B2 (en) 2015-08-07 2017-09-19 Qualcomm Incorporated Hardware enforced content protection for graphics processing units
US10664179B2 (en) 2015-09-25 2020-05-26 Intel Corporation Processors, methods and systems to allow secure communications between protected container memory and input/output devices
CN107038128B (zh) * 2016-02-03 2020-07-28 华为技术有限公司 一种执行环境的虚拟化、虚拟执行环境的访问方法及装置
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
US10140214B2 (en) 2016-08-29 2018-11-27 Red Hat Israel, Ltd. Hypervisor translation bypass by host IOMMU with virtual machine migration support
US10176122B2 (en) * 2016-10-19 2019-01-08 Advanced Micro Devices, Inc. Direct memory access authorization in a processing system
KR20180066601A (ko) 2016-12-09 2018-06-19 삼성전자주식회사 메모리 시스템의 구동 방법
US10671422B2 (en) 2017-03-29 2020-06-02 Advanced Micro Devices, Inc. Monitoring of memory page transitions between a hypervisor and a virtual machine
US10860474B2 (en) 2017-12-14 2020-12-08 Micron Technology, Inc. Multilevel addressing
CN108446137A (zh) * 2018-02-26 2018-08-24 国民技术股份有限公司 通道寄存器初始化方法、装置及dma设备、终端
US11157635B2 (en) 2018-04-08 2021-10-26 Qualcomm Incorporated Secure interface disablement
US10929302B2 (en) 2018-06-08 2021-02-23 International Business Machines Corporation MMIO addressing using a translation table
US11321240B2 (en) 2018-06-08 2022-05-03 International Business Machines Corporation MMIO addressing using a translation lookaside buffer
US11143684B2 (en) * 2019-03-25 2021-10-12 Lg Energy Solution, Ltd. Diagnostic system for a vehicle electrical system
US11392511B2 (en) * 2019-09-25 2022-07-19 Intel Corporation Secure address translation services using a permission table
US11100010B2 (en) * 2019-09-26 2021-08-24 Arm Limited Apparatus and method for handling memory access requests
GB2593716B (en) * 2020-03-31 2022-08-10 Advanced Risc Mach Ltd Controlling memory access in a data processing systems with multiple subsystems
KR102348256B1 (ko) * 2020-05-11 2022-01-07 한국과학기술원 정형 검증을 이용한 i/o 커널 구현의 강화
US20220100532A1 (en) * 2020-09-25 2022-03-31 Intel Corporation Technology for transferring iommu ownership to a new version of system software
US11526451B2 (en) * 2020-12-23 2022-12-13 Intel Corporation Secure address translation services using bundle access control
US11860792B2 (en) * 2021-05-04 2024-01-02 Red Hat, Inc. Memory access handling for peripheral component interconnect devices

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030200402A1 (en) * 2002-04-17 2003-10-23 Microsoft Corporation Memory isolation through address translation data edit control
WO2003090074A2 (en) * 2002-04-18 2003-10-30 Advanced Micro Devices, Inc. Initialization of a computer system including a secure execution mode-capable processor
CN1536842A (zh) * 2003-04-10 2004-10-13 国际商业机器公司 用于根据使用类来控制对设施的访问的装置、系统和方法
US20110023027A1 (en) * 2009-07-24 2011-01-27 Kegel Andrew G I/o memory management unit including multilevel address translation for i/o and computation offload

Family Cites Families (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR119649A (zh) 1975-03-24
US4550368A (en) 1982-07-02 1985-10-29 Sun Microsystems, Inc. High-speed memory and memory management system
JPS61206043A (ja) 1985-03-11 1986-09-12 Hitachi Ltd 仮想計算機システムにおける割込制御方法
US4802085A (en) 1987-01-22 1989-01-31 National Semiconductor Corporation Apparatus and method for detecting and handling memory-mapped I/O by a pipelined microprocessor
JP2510605B2 (ja) 1987-07-24 1996-06-26 株式会社日立製作所 仮想計算機システム
EP0447145B1 (en) 1990-03-12 2000-07-12 Hewlett-Packard Company User scheduled direct memory access using virtual addresses
JP3307085B2 (ja) 1993-12-10 2002-07-24 ソニー株式会社 通信方法及び電子機器
US6631435B1 (en) 1996-02-02 2003-10-07 Sony Corporation Application programming interface for data transfer and bus management over a bus structure
US5826084A (en) 1997-03-25 1998-10-20 Texas Instruments Incorporated Microprocessor with circuits, systems, and methods for selectively bypassing external interrupts past the monitor program during virtual program operation
US5987557A (en) 1997-06-19 1999-11-16 Sun Microsystems, Inc. Method and apparatus for implementing hardware protection domains in a system with no memory management unit (MMU)
JP3264319B2 (ja) 1997-06-30 2002-03-11 日本電気株式会社 バスブリッジ
US5949436A (en) 1997-09-30 1999-09-07 Compaq Computer Corporation Accelerated graphics port multiple entry gart cache allocation system and method
US5956516A (en) 1997-12-23 1999-09-21 Intel Corporation Mechanisms for converting interrupt request signals on address and data lines to interrupt message signals
US6119204A (en) 1998-06-30 2000-09-12 International Business Machines Corporation Data processing system and method for maintaining translation lookaside buffer TLB coherency without enforcing complete instruction serialization
US6065088A (en) 1998-08-31 2000-05-16 International Business Machines Corporation System and method for interrupt command queuing and ordering
US6938094B1 (en) 1999-09-17 2005-08-30 Advanced Micro Devices, Inc. Virtual channels and corresponding buffer allocations for deadlock-free computer system operation
US6888843B2 (en) 1999-09-17 2005-05-03 Advanced Micro Devices, Inc. Response virtual channel for handling all responses
US6553460B1 (en) * 1999-10-01 2003-04-22 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6412043B1 (en) * 1999-10-01 2002-06-25 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6629207B1 (en) * 1999-10-01 2003-09-30 Hitachi, Ltd. Method for loading instructions or data into a locked way of a cache memory
US6598128B1 (en) * 1999-10-01 2003-07-22 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
EP1139222A1 (en) 2000-03-31 2001-10-04 Texas Instruments Incorporated Prefetch for TLB cache
US6622193B1 (en) 2000-11-16 2003-09-16 Sun Microsystems, Inc. Method and apparatus for synchronizing interrupts in a message passing queue oriented bus system
US20020083254A1 (en) 2000-12-22 2002-06-27 Hummel Mark D. System and method of implementing interrupts in a computer processing system having a communication fabric comprising a plurality of point-to-point links
US6886171B2 (en) 2001-02-20 2005-04-26 Stratus Technologies Bermuda Ltd. Caching for I/O virtual address translation and validation using device drivers
JP3594082B2 (ja) 2001-08-07 2004-11-24 日本電気株式会社 仮想アドレス間データ転送方式
US8051301B2 (en) * 2001-11-13 2011-11-01 Advanced Micro Devices, Inc. Memory management system and method providing linear address based memory access security
US6804741B2 (en) 2002-01-16 2004-10-12 Hewlett-Packard Development Company, L.P. Coherent memory mapping tables for host I/O bridge
US6725289B1 (en) 2002-04-17 2004-04-20 Vmware, Inc. Transparent address remapping for high-speed I/O
US6986006B2 (en) 2002-04-17 2006-01-10 Microsoft Corporation Page granular curtained memory via mapping control
WO2003090052A2 (en) * 2002-04-18 2003-10-30 Advanced Micro Devices Inc. A computer system including a secure execution mode - capable cpu and a security services processor connected via a secure communication path
US7155379B2 (en) 2003-02-25 2006-12-26 Microsoft Corporation Simulation of a PCI device's memory-mapped I/O registers
US7281075B2 (en) 2003-04-24 2007-10-09 International Business Machines Corporation Virtualization of a global interrupt queue
US7073043B2 (en) 2003-04-28 2006-07-04 International Business Machines Corporation Multiprocessor system supporting multiple outstanding TLBI operations per partition
US7177967B2 (en) 2003-09-30 2007-02-13 Intel Corporation Chipset support for managing hardware interrupts in a virtual machine system
US7552436B2 (en) 2003-11-25 2009-06-23 International Business Machines Memory mapped input/output virtualization
US7209994B1 (en) 2004-05-11 2007-04-24 Advanced Micro Devices, Inc. Processor that maintains virtual interrupt state and injects virtual interrupts into virtual machine guests
US7444493B2 (en) 2004-09-30 2008-10-28 Intel Corporation Address translation for input/output devices using hierarchical translation tables
US8843727B2 (en) 2004-09-30 2014-09-23 Intel Corporation Performance enhancement of address translation using translation tables covering large address spaces
JP2006133889A (ja) 2004-11-02 2006-05-25 Sharp Corp プログラムを更新するための方法、プログラムおよび装置
WO2006056988A2 (en) * 2004-11-24 2006-06-01 Discretix Technologies Ltd. System, method and apparatus of securing an operating system
US20060195848A1 (en) 2005-02-25 2006-08-31 International Business Machines Corporation System and method of virtual resource modification on a physical adapter that supports virtual resources
US20060200616A1 (en) 2005-03-02 2006-09-07 Richard Maliszewski Mechanism for managing resources shared among virtual machines
US7428626B2 (en) 2005-03-08 2008-09-23 Microsoft Corporation Method and system for a second level address translation in a virtual machine environment
US7260663B2 (en) 2005-04-07 2007-08-21 International Business Machines Corporation System and method for presenting interrupts
US7487327B1 (en) 2005-06-01 2009-02-03 Sun Microsystems, Inc. Processor and method for device-specific memory address translation
US7225287B2 (en) 2005-06-01 2007-05-29 Microsoft Corporation Scalable DMA remapping on a computer bus
US20060288130A1 (en) 2005-06-21 2006-12-21 Rajesh Madukkarumukumana Address window support for direct memory access translation
US20060294277A1 (en) 2005-06-24 2006-12-28 Tetrick Raymond S Message signaled interrupt redirection
US7793067B2 (en) 2005-08-12 2010-09-07 Globalfoundries Inc. Translation data prefetch in an IOMMU
US7480784B2 (en) 2005-08-12 2009-01-20 Advanced Micro Devices, Inc. Ensuring deadlock free operation for peer to peer traffic in an input/output memory management unit (IOMMU)
US7543131B2 (en) 2005-08-12 2009-06-02 Advanced Micro Devices, Inc. Controlling an I/O MMU
US7516247B2 (en) 2005-08-12 2009-04-07 Advanced Micro Devices, Inc. Avoiding silent data corruption and data leakage in a virtual environment with multiple guests
US20070067505A1 (en) 2005-09-22 2007-03-22 Kaniyur Narayanan G Method and an apparatus to prevent over subscription and thrashing of translation lookaside buffer (TLB) entries in I/O virtualization hardware
US7447820B2 (en) 2005-09-30 2008-11-04 Intel Corporation Retargeting of platform interrupts
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)
US7548999B2 (en) 2006-01-17 2009-06-16 Advanced Micro Devices, Inc. Chained hybrid input/output memory management unit
US7873770B2 (en) 2006-11-13 2011-01-18 Globalfoundries Inc. Filtering and remapping interrupts
US7849287B2 (en) 2006-11-13 2010-12-07 Advanced Micro Devices, Inc. Efficiently controlling special memory mapped system accesses
US7707383B2 (en) 2006-11-21 2010-04-27 Intel Corporation Address translation performance in virtualized environments
US20090187726A1 (en) 2008-01-22 2009-07-23 Serebrin Benjamin C Alternate Address Space to Permit Virtual Machine Monitor Access to Guest Virtual Address Space
US8578483B2 (en) * 2008-07-31 2013-11-05 Carnegie Mellon University Systems and methods for preventing unauthorized modification of an operating system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030200402A1 (en) * 2002-04-17 2003-10-23 Microsoft Corporation Memory isolation through address translation data edit control
WO2003090074A2 (en) * 2002-04-18 2003-10-30 Advanced Micro Devices, Inc. Initialization of a computer system including a secure execution mode-capable processor
CN1536842A (zh) * 2003-04-10 2004-10-13 国际商业机器公司 用于根据使用类来控制对设施的访问的装置、系统和方法
US20110023027A1 (en) * 2009-07-24 2011-01-27 Kegel Andrew G I/o memory management unit including multilevel address translation for i/o and computation offload

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107949833A (zh) * 2015-07-27 2018-04-20 谷歌有限责任公司 交换机中的地址缓存
CN107949833B (zh) * 2015-07-27 2020-03-24 谷歌有限责任公司 交换机中的地址缓存
CN111522755A (zh) * 2015-07-27 2020-08-11 谷歌有限责任公司 交换机中的地址缓存
CN111522755B (zh) * 2015-07-27 2022-05-13 谷歌有限责任公司 交换机中的地址缓存
CN106598480A (zh) * 2015-10-14 2017-04-26 三星电子株式会社 具有接口控制机制的电子系统及其操作方法
CN111295644A (zh) * 2017-10-30 2020-06-16 惠普发展公司,有限责任合伙企业 保障硬件初始化

Also Published As

Publication number Publication date
US20130080726A1 (en) 2013-03-28
JP2014531672A (ja) 2014-11-27
CN103842976B (zh) 2016-01-20
KR101471108B1 (ko) 2014-12-09
US8631212B2 (en) 2014-01-14
WO2013044223A1 (en) 2013-03-28
JP5690024B2 (ja) 2015-03-25
KR20140057405A (ko) 2014-05-12
EP2758884B1 (en) 2018-07-25
EP2758884A1 (en) 2014-07-30

Similar Documents

Publication Publication Date Title
CN103842976B (zh) 具有保护模式以防止i/o装置进行存储器访问的输入/输出存储器管理单元
US11436161B2 (en) System for address mapping and translation protection
Olson et al. Border control: Sandboxing accelerators
AU611468B2 (en) Virtual input/output commands
CN102473139B (zh) 包括用于i/o和计算卸载的多层次地址转换的i/o存储器管理单元
US7937534B2 (en) Performing direct cache access transactions based on a memory access data structure
US7739466B2 (en) Method and apparatus for supporting immutable memory
CN101520753B (zh) 数据处理设备和控制虚拟机对安全存储器的访问的方法
US7689733B2 (en) Method and apparatus for policy-based direct memory access control
TW202111587A (zh) 用於容許安全通訊之積體電路、方法及製造物件
EP2889777A2 (en) Modifying memory permissions in a secure processing environment
US20100011147A1 (en) Virtualizing an IOMMU
CN109002706A (zh) 一种基于用户级页表的进程内数据隔离保护方法和系统
CN105320611A (zh) 用于细粒存储器保护的方法和设备
CN104685479A (zh) 客户虚拟机内的虚拟输入/输出存储器管理单元
AMD et al. Technology (IOMMU) specification
US20130080714A1 (en) I/o memory translation unit with support for legacy devices
CN104823173A (zh) 对预留给处理器逻辑使用的存储器的访问类型保护
KR20050027082A (ko) 메모리 관리 시스템 및 선형 어드레스 기반 메모리 엑세스보안 제공 방법
WO2020057394A1 (zh) 监控样本进程的内存访问行为的方法和装置
WO2022200962A1 (en) Migrating pages of memory accessible by input-output devices
US10628328B2 (en) Methods and systems including a memory-side memory controller configured to interpret capabilities to provide a requested dataset to a central processing unit

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