CN111752869A - 以共享页表实施独特页表权限 - Google Patents

以共享页表实施独特页表权限 Download PDF

Info

Publication number
CN111752869A
CN111752869A CN202010124628.8A CN202010124628A CN111752869A CN 111752869 A CN111752869 A CN 111752869A CN 202010124628 A CN202010124628 A CN 202010124628A CN 111752869 A CN111752869 A CN 111752869A
Authority
CN
China
Prior art keywords
bits
permission
memory
filter
entry
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010124628.8A
Other languages
English (en)
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN111752869A publication Critical patent/CN111752869A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0637Permissions
    • 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
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Abstract

本公开涉及以共享页表实施独特页表权限。一种处理器包括处理器核心;用于存储第一权限过滤器的过滤器寄存器;以及耦合到处理器核心、过滤器寄存器和与第一权限过滤器相关联的第一外围设备的存储器管理单元(MMU),其中该MMU包括逻辑电路来管理共享页表,该共享页表包括与处理器核心和第一外围设备相对应的条目,其中逻辑电路用于:接收来自第一外围设备的对第一存储器页的存储器访问请求;确定第一条目的权限比特的集合是否匹配第一权限过滤器的比特的第一组合;如果权限比特的集合匹配第一权限过滤器的比特的第一组合,则准许存储器访问请求;并且如果权限比特的集合不匹配比特的第一组合,则引起页故障。

Description

以共享页表实施独特页表权限
技术领域
本公开涉及计算机系统;更具体而言,涉及计算机系统的存储器访问权限。
背景技术
计算机系统可使用一种被称为分页(paging)的过程将应用或进程使用的虚拟连续地址空间映射到存储数据的存储器的物理地址。分页使用被称为页表(page table)的数据结构来从虚拟地址空间映射到物理地址空间。计算机系统的中央处理单元(centralprocessing unit,CPU)外围的设备可在不与CPU通信的情况下直接访问存储器。这些外围设备也可使用页表来从虚拟地址空间映射到存储器中的物理地址空间。CPU可使用存储器管理单元(memory management unit,MMU)来访问存储器。外围设备可使用输入/输出存储器管理单元(input/output memory management unit,IOMMU)来直接访问计算机系统的存储器。
发明内容
根据本公开的一个方面,提供了一种处理器,包括:处理器核心;过滤器寄存器,用于存储第一权限过滤器;以及存储器管理单元(MMU),其耦合到所述处理器核心、所述过滤器寄存器和与所述第一权限过滤器相关联的第一外围设备,其中所述MMU包括逻辑电路来管理共享页表,该共享页表包括与所述处理器核心和所述第一外围设备相对应的条目,其中所述逻辑电路用于:接收来自所述第一外围设备的对第一存储器页的存储器访问请求;确定所述共享页表的第一条目的权限比特的集合是否匹配所述第一权限过滤器的比特的第一组合,其中所述第一权限过滤器的比特的第一组合为所述第一外围设备定义访问权限;响应于所述第一条目的权限比特的集合匹配所述第一权限过滤器的比特的第一组合,准许所述存储器访问请求;并且响应于所述第一条目的权限比特的集合不匹配所述第一权限过滤器的比特的第一组合,引起页故障。
根据本公开的另一方面,提供了一种系统,包括:存储器,用于存储共享页表;耦合到所述存储器的第一外围设备;耦合到所述存储器的第二外围设备;以及耦合到所述存储器、所述第一外围设备和所述第二外围设备的存储器管理单元(MMU),其中所述MMU包括:第一权限过滤器,其中所述第一权限过滤器包括比特的第一组合,所述比特的第一组合定义所述第一外围设备对与所述共享页表的第一条目相关联的第一存储器页的访问权限;以及第二权限过滤器,其中所述第二权限过滤器包括比特的第二组合,所述比特的第二组合定义所述第二外围设备对与所述共享页表的第一条目相关联的所述第一存储器页的访问权限,其中所述比特的第一组合不同于所述比特的第二组合。
根据本公开的又一方面,提供了一种操作方法,包括:接收来自与第一权限过滤器相关联的第一设备的对第一存储器页的存储器访问请求,其中所述第一权限过滤器包括比特的第一组合,所述比特的第一组合定义所述第一设备对所述第一存储器页的访问权限;确定页表的第一条目的权限比特的集合是否匹配所述第一权限过滤器的比特的第一组合,其中所述页表被所述第一设备和第二设备共享;响应于所述第一条目的权限比特的集合匹配所述第一权限过滤器的比特的第一组合,准许所述存储器访问请求;并且响应于所述第一条目的权限比特的集合不匹配所述第一权限过滤器的比特的第一组合,引起页故障。
附图说明
图1是根据一个实现方式图示出用于使用权限过滤器来利用共享页表向设备提供对存储器的独特访问权限的片上系统的系统图。
图2是根据一个实现方式图示出用于应用与不同设备相关联的权限过滤器来允许对存储器的独特访问权限的逻辑过程流程的框图。
图3A是根据一个实现方式的存储若干个不同的权限过滤器的示例权限过滤器寄存器。
图3B是图示出若干个页表条目的示例页表。
图3C是根据一个实现方式的用于向页表条目应用权限过滤器的示例逻辑电路。
图4A是根据一个实现方式图示出用于使用权限过滤器来利用共享页表向设备提供独特访问权限的示例方法的流程图。
图4B是根据一个实现方式图示出用于使用权限过滤器来利用共享页表向设备提供独特访问权限的示例方法的详细流程图。
图5A是根据一个实现方式图示出有序管线和寄存器重命名阶段、无序发出/执行管线的框图。
图5B是根据本公开的实现方式图示出可实现对多密钥加密引擎的硬件支持的处理器或集成电路的微体系结构的框图。
图6根据本公开的实现方式图示了实现对多密钥加密引擎的硬件支持的处理器或集成电路的微体系结构的框图。
图7是根据一个实现方式的计算机系统的框图。
图8是根据另一实现方式的计算机系统的框图。
图9是根据一个实现方式的片上系统的框图。
图10图示了计算系统的框图的另一实现方式。
图11图示了计算系统的框图的另一实现方式。
具体实施方式
计算机系统的外围设备可能够直接访问系统的存储器。为了直接访问存储器,外围设备可能需要查阅页表来映射到存储器的物理地址。页表可以指任何存储器转化结构,例如散列表、树、表格等等。当前,如果设备正在使用与CPU相同的页表来访问存储器,则设备必须具有与CPU相同的对该存储器的访问权限,或者说“视图”(view)。这意味着如果CPU对于存储器的页的读取和写入具有访问权,则使用相同页表的设备也有。为了解决此问题,每个设备可使用单独的页表来允许不同的存储器访问权限。然而,使用单独的页表是浪费的,因为在系统中存在相同结构的两个拷贝。因此,不同的设备使用共享页表来访问存储器并且为共享相同页表的设备定义不同的访问权限,将是有利的。
公开的是用于以共享页表实施独特页表权限的系统和方法。对于访问系统的存储器的每个设备,或者CPU,可使用单独的过滤器来从单个页表确定每个设备或CPU对存储器的页的存储器访问权限。存储器访问权限过滤器可与设备或CPU相关联以允许设备或CPU对于存储器具有其自己的特定视图。过滤器可包括一个或多个比特,被称为“软件比特”,这些比特定义页表条目的哪些比特为特定的设备或CPU指示权限。
例如,在一个实现方式中,第一比特可以是为第一设备允许写入权限的比特。如果页表条目的第一比特被设置,则第一设备具有写入权限,但如果第一比特未被设置,则第一设备不具有写入权限。CPU可使用识别CPU的权限的第二比特。或者,CPU可不使用这种过滤器,而是只使用由硬件读取的比特(例如,传统的脏污/写入/当前比特)。因此,CPU在确定CPU的权限时可忽略第一比特,或者其他软件比特。这样,第一设备在第一比特被设置时可具有存储器的一个视图,即写入权限,而CPU具有存储器的另一视图。
此外,利用额外的比特或者比特的组合来确定设备和CPU的访问权限,独特权限可被扩展到任何数目的额外设备或CPU。例如,如果第一比特被设置则第一设备可具有写入权限,而如果第二比特被设置则第二设备可具有写入权限,并且如果第三比特被设置则第三设备可具有写入权限,等等依此类推。
图1是图示出包括片上系统(system-on-a-chip,SOC)110、一个或多个外围设备130A-B和主存储器140的系统100的框图。SOC 110可包括中央处理单元(CPU)112、存储器管理单元(MMU)114和输入/输出存储器管理单元(IOMMU)120。虽然被描绘为是分立的,但IOMMU 120和MMU 114也可以是用于存储器管理的单个单元。另外,虽然IOMMU 120被描绘为在SOC 110内,但其位置也可与SOC 110分离。主存储器140可包括一个或多个页表142和可寻址存储器144。
IOMMU 120可包括一个或多个情境条目122、过滤器寄存器124A和过滤器逻辑电路126A。IOMMU 120可接收来自设备130A-B的存储器访问请求,包括读取请求和写入请求。在接收到来自设备130A-B之一的存储器访问请求之后,IOMMU 120可从主存储器140取回来自页表142的页表条目。一旦IOMMU 120取回了页表条目,过滤器逻辑电路126A就可从过滤器寄存器124A取回权限过滤器以与由页表条目的权限比特的集合所指示的权限相比较。页表条目的权限比特的集合可包括可被软件设置和读取的一个或多个软件比特,以及可被硬件(例如,MMU 114)读取或设置的一个或多个硬件比特。软件比特可被软件设置以指示一个或多个设备130A-B的存储器访问权限。
CPU 112可包括一个或多个处理器核心。MMU 114可耦合到CPU 112并且管理CPU112对主存储器140的访问。MMU 114可向被CPU 112访问的页表条目应用权限过滤器,或者可简单地使用页表条目的传统硬件比特来确定CPU 112的访问权限。MMU 114还可包括过滤器寄存器124B和过滤器逻辑电路126B,它们两者的功能可分别与过滤器寄存器124A和过滤器逻辑电路126A相同或相似。
过滤器寄存器124A-B可存储与一个或多个设备130A-B和CPU 112相关联的一个或多个权限过滤器。权限过滤器可包括与页表条目的软件比特相关联的一个或多个比特,以及与页表条目的硬件比特相对应的一个或多个比特。情境条目122可包括设备130A-B和/或CPU 112被映射到或指派到的页表142的根地址并且可被查阅来为每个设备130A-B和CPU112确定一个或多个权限过滤器(即,定义为与设备或CPU相关联的过滤器设置的软件比特)。
过滤器逻辑电路126A-B可包括逻辑来将权限过滤器与页表条目的权限比特相比较,并且提供由权限过滤器和页表条目的相同的比特构成的输出(即,权限过滤器和页表条目的逻辑与)。一旦确定了来自该比较的输出,该输出就可被与权限过滤器相比较以确定设备或CPU是否具有适当的权限。如果输出和权限过滤器相同,则设备或CPU具有适当的权限。如果输出和权限过滤器不同,则设备或CPU不具有适当的权限并且存储器访问请求将引起页故障并失败。在过滤器被应用到页表条目之后,过滤器逻辑电路126A-B可更新页表条目。在一个示例中,如果请求失败,则过滤器逻辑可更新页表条目以向设备或CPU提供适当的权限。页表条目在如下情况中可被更新:在向设备或CPU提供访问之前优选有通知来允许存储器优化、介质磨损优化等等。此外,页表可被更新来指出针对某个设备或CPU的权限过滤器被应用了。例如,如果针对第一设备的权限过滤器被使用了,则页表可被更新来防止第二设备访问同一存储器。虽然被描绘为IOMMU 120和MMU 114的一部分,但过滤器逻辑电路126A-B可实现在SOC 110或系统100内的任何地方。
设备130A-B可耦合到IOMMU 120。设备130A-B可以是任何外围设备,或者被计算机系统用来执行任何数目的功能的硬件子系统。设备130A-B可例如是盘驱动控制器、图形卡、网络卡或者能够进行直接存储器访问的其他设备。主存储器140可以指任何片外存储器存储。虽然页表142被描绘为存在于主存储器140中,但页表可被存储在芯片上或芯片外,以及存储在盘上或者系统的可被MMU 114和IOMMU 120访问的任何其他存储装置中。
页表142可以指存储器转化数据结构,例如散列表、数据树或者任何其他数据结构。页表142可将应用或进程使用的连续虚拟存储器地址映射到物理存储器中的地址。页表142可包括多个页表条目。每个页表条目可对应于存储器的虚拟页和存储器的物理页之间的映射。存储器的每一页可包括若干个更小的存储器块。当在设备或CPU上执行的进程请求对存储器的访问时,该进程可利用虚拟地址来请求对存储器的访问,该虚拟地址必须被转化成物理地址。MMU 114或IOMMU 120可执行页游走来找到将虚拟页映射到物理页的页表条目。要访问的存储器的块的实际物理地址可由虚拟地址提供的偏移加到页的基本地址来确定。页表条目除了包括存储器的页的物理地址以外,还可包括为该页定义存储器访问权限的若干个比特。为页定义存储器访问权限的比特可以是在过滤器逻辑电路中与权限过滤器相比较的比特。
可寻址存储器144可以指系统的任何存储器,进程可对该存储器进行存储、访问和取回数据和/或代码。可寻址存储器144与页表142的存储器的不同之处在于用于存储页表的存储器可只被用于存储页表和关联的信息。被CPU 112或设备130A-B请求访问的页可被存储在可寻址存储器144中。
图2是图示出向使用共享页表的一个或多个设备和CPU应用权限过滤器的逻辑过程流程200的流程图。设备A 210、设备B 214和CPU 212可利用相同的一个或多个页表220来访问存储器。页表220、设备A 210、设备B和CPU 212可分别与参考图1描述的页表142、设备130A、设备130B和CPU 112相似或相同。页表220可包括多个页表条目。每个页表条目对应于存储器的虚拟页和存储器的物理页之间的映射。存储器的每一页可包括若干个更小的存储器块。当在设备或CPU上执行的进程请求对存储器的访问时,该进程利用虚拟地址来请求对存储器的访问,该虚拟地址必须被转化成物理地址。MMU或IOMMU可执行页游走来找到将虚拟页映射到物理页的页表条目。要访问的存储器的块的实际物理地址可由虚拟地址提供的偏移加到由页表条目给出的页的基本地址来确定。页表条目除了包括存储器的页的物理地址以外,还可包括为该页定义存储器访问权限的若干个比特。
过滤器逻辑222可与参考图1描述的过滤器逻辑电路126A-B的逻辑相似或相同。过滤器逻辑222在接收到存储器访问请求时可向设备A 210、设备B 214和CPU 212使用的页表220的页表条目应用不同的权限过滤器。对于来自设备A 210的存储器访问请求,过滤器逻辑可应用设备A过滤器230以向设备A 210提供独特访问权限,该权限独立于提供给CPU 212和设备B 214的权限。对于来自CPU 212的存储器访问请求,过滤器逻辑222可应用CPU过滤器232以向CPU 212提供其自己的独特权限,该权限独立于提供给设备A 210和设备B 214的权限。对于来自设备B 214的存储器访问请求,过滤器逻辑222可应用设备B过滤器234以向设备B 214提供其自己的独特权限,该权限独立于提供给设备A 230和CPU 212的权限。在向页表条目应用过滤器之后,设备和CPU可各自具有独立的权限来访问存储器240中的各个页。
在一个实现方式中,在设备或CPU第一次向页写入之前的通知可以是优选的(例如,为了进行存储器优化或者优化介质磨损或写入带宽)。最初,页表条目的权限比特可能不允许设备或CPU向该页写入。然而,在应用过滤器并且写入请求失败之后,过滤器逻辑可更新页表条目权限比特以给予设备或CPU对该页的写入权限。例如,如果设备A过滤器230的软件比特“X”被设置,并且页表条目的相应“X”比特未被设置,则当设备请求对页的写入时,将存在故障。在该故障之后,可进行存储器优化并且逻辑可通过设置“X”比特来更新页表条目。下一次设备A 210尝试向存储器的页写入时,其将具有写入权限,因为该页的页表条目的“X”比特将是被设置的。
在一个实现方式中,每个设备或CPU可具有指派的比特(关联的过滤器将包括该比特)。如果指派的比特在页表条目中被设置,则设备或CPU将具有对与该页表条目相关联的存储器的页的写入权限。在另一实现方式中,设备或CPU可被指派以比特的组合,要为该设备或CPU允许写入权限则必须在页表条目中设置这些比特的组合。在另外一个实现方式中,多于一个设备或CPU可被指派以相同的权限过滤器并从而被指派以相同的权限。MMU或IOMMU可包括根条目表,该根条目表基于设备ID、与设备相关联的I/O总线等等来将I/O设备映射到指定的域。域可与情境表相关联,该情境表向设备或CPU提供对与每个设备或CPU相关联的页表的访问。情境表可包括一个或多个情境条目,这些情境条目向每个设备或CPU提供对特定页表的访问。在一个实现方式中,情境条目还可定义要与情境条目的设备或CPU相关联的权限过滤器。权限过滤器随后可在设备或CPU请求对存储器的页的访问时被应用到页表条目。多个设备和/或CPU可与单个情境条目相关联并且多个设备和/或CPU可与情境条目内的单个权限过滤器相关联。
图3A是存储若干个权限过滤器的示例过滤器寄存器。图3A描绘了7个不同的过滤器,每个使用三个软件比特(XYZ)的不同组合连同3个硬件比特(DWP-Dirty/Write/Present(脏污/写入/当前))。过滤器寄存器可存储任何数目的过滤器并且不受图3A的描绘的限制。每个过滤器包括三个软件比特的独特组合,从而在此示例中,将允许七个不同的设备和/或CPU有存储器的独立视图。此方案可被扩展到任意大数目的比特,从而扩展到存储器的任意大数目的独立视图。
作为示例,过滤器1可与一设备相关联。每当该设备请求对存储器的页的写入时,与存储器的该页相对应的页表条目就将被取回。如果该页表条目的“X”权限比特被设置,则设备具有向存储器的该页写入的权限。然而,如果“X”权限比特未被设置,则设备将不具有对存储器的该页的写入权限。相同的过程适用于每个过滤器。此外,多个设备和/或CPU可被指派相同的过滤器,如果这些设备和CPU要求对存储器的相同视图的话。
图3B是包括若干个页表条目的示例页表。如图所示,每个页表条目可包括存储器的页的物理地址([ADDR]),和定义对存储器的页的存储器访问权限的比特的集合。页表条目的软件比特的集合可被软件设置来向适当的设备和CPU提供访问权限。被设置的比特可与要求对存储器的页的写入权限的设备或CPU相关联,而其他比特可不被设置以防止其他设备或CPU向存储器的该页写入。
例如,条目1具有被设置的“X”软件比特,而“Y”和“Z”软件比特未被设置。因此,与图3A的过滤器1(即“X”比特被设置,但其他的未被设置)相关联的任何设备或CPU将具有对存储器的该页写入的权限。然而,与图3A的其他过滤器相关联的设备或CPU可不具有对存储器的该页写入的权限。
图3C是用于向页表条目应用权限过滤器的示例逻辑电路。该逻辑电路被描绘为逻辑AND,随后是IS EQUAL比较器。替换描绘可以是对输入的每个比特的逻辑AND,随后是ISEQUAL比较器。过滤器逻辑电路的初始输入是权限过滤器,例如来自图3A的过滤器,以及页表条目,例如来自图3B的条目。初始输入被经过逻辑AND操作,意思是在两个输入中都被设置的相同位置中的所有比特在输出中也将被设置。在逻辑AND操作之后,逻辑AND操作的输出和最初输入的权限过滤器被比较以确定它们是否相等(即,是否在一者中设置的比特在另一者中同样也被设置,并且在一者中未被设置的比特在另一者中未被设置)。如果比较的结果是输出和权限过滤器相等,则与该过滤器相关联的设备或CPU具有对存储器的该页写入的权限。
例如,如果图3A的过滤器2(“_Y_DWP”)和图3B的条目2(“[ADDR]_Y_DWP”)是到过滤器逻辑电路的输入,则AND操作的输出将是“_Y_DWP”,因为“Y”比特在两者中都被设置,并且“DWP”比特在两者中都被设置。于是到“相等?”操作的输入将是“_Y_DWP”(初始输入/过滤器1)和“_Y_DWP”(逻辑AND的输出)。两个输入都有相同的比特被设置并且因此结果将是写入权限被允许。
在另一示例中,如果图3A的过滤器7(“XYZDWP”)和图3B的条目1(“[ADDR]X__DWP”)是过滤器逻辑电路的初始输入,则AND操作的输出将是“X__DWP”,因为“X”比特和“DWP”比特在两者中都被设置。然而,“Y”和“Z”比特在过滤器7中被设置,但在条目1中未被设置。接下来,到“相等?”操作的输入将是初始过滤器7“XYZDWP”和逻辑AND操作的输出(“X__DWP”)。“相等?”操作的结果将导致写入请求的失败,因为输入不相同;“Y”和“Z”比特在过滤器7中被设置,但在逻辑AND操作的输出中未被设置。因此,结果将是写入权限不被允许。
图4A是使用权限过滤器来利用共享页表向设备或CPU提供对存储器的独立权限的方法400的示例流程图。在块402,逻辑电路可从第一外围设备接收对第一存储器页的存储器访问请求,第一外围设备与第一权限过滤器相关联。权限过滤器可包括定义第一外围设备对第一存储器页的访问权限的比特的第一组合。
在块404,逻辑电路可向页表的第一条目的权限比特的集合应用第一权限过滤器。页表可被一个或多个设备和/或CPU共享,例如第一设备和第二设备。页表的条目可提供到第一外围设备请求访问的存储器的页的物理地址的映射。页表的条目还可包括一个或多个权限比特,这些权限比特指示提供给一个或多个设备或CPU的访问存储器的页的权限。一个或多个权限比特可包括用于定义一个或多个设备和/或CPU的访问权限的软件比特的集合以及为遗留设备、遗留CPU或遗留处理器提供访问权限的硬件比特的集合。遗留设备或CPU可忽略软件比特并且只读取硬件比特来确定存储器访问权限。此外,遗留处理器可以是没有关于权限过滤器的知识的处理器,其忽略软件比特,并且只读取硬件比特来确定访问权限。
在块406,逻辑电路可确定第一条目的权限比特的集合是否匹配第一权限过滤器的比特的组合。在一个示例中,逻辑电路比较第一条目的权限比特的集合的单个相应比特和第一权限过滤器的比特的组合。如下文描述的,如果比特匹配,则访问可被允许,但如果比特不匹配,则访问不被允许。在另一示例中,逻辑电路可将权限过滤器与页表条目相比较来提供由在权限过滤器和页表条目两者中都设置的相应比特构成的输出(即,对每个相应比特的逻辑AND操作)。然后,逻辑AND操作的输出和原始权限过滤器可被比较以确定它们是否匹配,或者换言之,是否相等。在替换实施例中,取代对比特的比较,过滤器的值可被与值的列表相比较以确定设备或CPU是否具有访问权限。此外,软件可被用作过滤器来确定设备或CPU是否对存储器的页具有访问权限。
在块408,如果第一条目的权限比特的集合匹配第一权限过滤器的比特的第一组合,则逻辑电路可准许存储器访问请求。如果存储器访问请求被准许,则第一外围设备可根据被请求的访问(例如,读取或写入)访问存储器的页。在块410,如果第一条目的权限比特的集合不匹配第一权限过滤器的比特的第一组合,则逻辑电路可引起页故障。软件可处理页故障以防止访问并且跟踪页故障的原因是什么(即,不适当的权限)。
图4B是使用权限过滤器来利用共享页表向设备和CPU提供对存储器的独立权限的方法420的示例流程图。在块422,存储器管理单元(MMU)可从外围设备或CPU接收对存储器的页的直接存储器访问请求。MMU可以是控制外围设备的存储器访问的输入/输出MMU或者可以是控制CPU对存储器的访问的MMU。CPU或外围设备可通过MMU或IOMMU请求直接存储器访问。
在块424,IOMMU可取回与要被外围设备或CPU访问的存储器的页相对应的页表条目。取回页表条目可包括页游走,在页游走中,IOMMU搜索页表以找到与在外围设备或CPU上执行的进程提供的虚拟地址相关联的页表条目。或者,如果页表条目是存储在转化后备缓冲器(translation lookaside buffer,TLB)中的,则可从TLB取回页表条目。
在块426,IOMMU可识别与外围设备或CPU相关联的权限过滤器。与设备或CPU相关联的权限过滤器可通过查阅IOMMU或MMU中关于外围设备或CPU的情境条目来确定。情境条目可将外围设备或CPU映射到要被外围设备或CPU使用的一个或多个页表。情境条目还可将外围设备或CPU与其将用于通过页表来访问存储器的权限过滤器关联起来。
在块428,IOMMU可向页表条目应用权限过滤器。向页表条目应用权限过滤器可包括将权限过滤器与页表条目相比较以提供由在权限过滤器和页表条目两者中都设置的比特组成的输出(即,对每个相应比特的逻辑AND操作)。逻辑AND操作的输出和原始权限过滤器可被比较以确定它们是否匹配,或者换言之,是否相等。
在块430,IOMMU可确定外围设备或CPU是否具有向存储器的页写入的权限。块408处的比较的输出和初始权限过滤器可被比较以确定它们是否相等,如上文在块428处所述。如果它们相等,则外围设备或CPU具有向存储器的页写入(或者所请求的无论什么访问)的权限。然而,如果它们不相等,则写入将失败并且页故障可被触发。
在块432,IOMMU可更新页表条目以向外围设备或CPU提供适当的权限来允许外围设备或CPU向存储器的页写入。此步骤可以是可选的,并且可被设置为在指定的条件中对特定的设备或CPU发生。例如,可能希望在允许访问之前触发通知。页表的条目可最初拒绝对页的访问,但随后一旦过滤器首先被应用则更新条目以提供访问。在允许设备或CPU访问存储器的页之前,通知可允许系统做任何数目的管家任务,例如针对介质磨损的优化。在另一示例中,在第一设备或CPU已访问了存储器的页之后可能希望更新页表以对某些设备或CPU拒绝访问。
图5是根据一实现方式图示出对于以共享页表实施独特页表权限实现硬件支持的处理器500的微体系结构的框图。具体而言,处理器500描绘了根据本公开的至少一个实现方式要被包括在处理器中的按序体系结构核心和寄存器重命名逻辑、无序发出/执行逻辑。
处理器500包括耦合到执行引擎单元550的前端单元530,并且两者都耦合到存储器单元570。处理器500可包括精简指令集计算(reduced instruction set computing,RISC)核心、复杂指令集计算(complex instruction set computing,CISC)核心、超长指令字(very long instruction word,VLIW)核心或者混合或替换核心类型。作为另外一个选项,处理器500可包括专用核心,例如网络或通信核心、压缩引擎、图形核心,等等。在一个实现方式中,处理器500可以是多核心处理器或者可以是多处理器系统的一部分。
前端单元530包括分支预测单元532,其耦合到指令缓存单元534,指令缓存单元534耦合到指令转化后备缓冲器(translation lookaside buffer,TLB)538,该TLB 536耦合到指令取得单元538,该指令取得单元538耦合到解码单元540。解码单元540(也称为解码器)可对指令进行解码,并且生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出,这些微操作、微代码入口点、微指令、其他指令或其他控制信号是从原始指令解码来的,或者以其他方式反映原始指令,或者是从原始指令得出的。解码器540可利用各种不同的机制来实现。适当机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(programmable logic array,PLA)、微代码只读存储器(read only memory,ROM),等等。指令缓存单元534还耦合到存储器单元570。解码单元540耦合到执行引擎单元550中的重命名/分配器单元552。
执行引擎单元550包括耦合到引退单元554和一组一个或多个调度器单元556的重命名/分配器单元552。(一个或多个)调度器单元556表示任何数目的不同调度器电路,包括预留站(reservations station,RS)、中央指令窗口等等。(一个或多个)调度器单元556耦合到(一个或多个)物理寄存器集合单元558。物理寄存器集合单元558的每一者表示一个或多个物理寄存器集合,这些物理寄存器集合中的不同物理寄存器集合存储一个或多个不同的数据类型,例如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点等等,状态(例如,作为要执行的下一指令的地址的指令指针),等等。(一个或多个)物理寄存器集合单元558与引退单元554重叠以例示出可用来实现寄存器重命名和无序执行的各种方式(例如,使用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器集合,使用(一个或多个)未来文件、(一个或多个)历史缓冲器和(一个或多个)引退寄存器集合;使用寄存器地图和寄存器的池;等等)。
一般而言,体系结构寄存器从处理器的外部或者从编程者的角度来看是可见的。寄存器不限于任何已知特定类型的电路。各种不同类型的寄存器是适当的,只要它们能够存储和提供如本文所述的数据。适当寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合,等等。引退单元554和(一个或多个)物理寄存器集合单元558耦合到(一个或多个)执行集群560。(一个或多个)执行集群560包括一组一个或多个执行单元562和一组一个或多个存储器访问单元564。执行单元562可执行各种操作(例如,移位、加法、减法、乘法)以及在各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)上进行操作。
虽然一些实现方式可包括专用于特定功能或功能集合的若干个执行单元,但其他实现方式可只包括一个执行单元或者全都执行所有功能的多个执行单元。(一个或多个)调度器单元556、(一个或多个)物理寄存器集合单元558和(一个或多个)执行集群560被示为可能是多个,因为某些实现方式为某些类型的数据/操作创建单独的管线(例如,标量整数管线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点管线和/或存储器访问管线,它们各自具有其自己的调度器单元、物理寄存器集合单元和/或执行集群–并且在单独的存储器访问管线的情况下,实现了某些实现方式,其中只有此管线的执行集群具有(一个或多个)存储器访问单元564)。还应当理解,在使用单独管线的情况下,这些管线中的一个或多个可以是无序发出/执行,其余的是有序的。
该组存储器访问单元564耦合到存储器单元570,该存储器单元570举例来说可包括数据预取器580、数据TLB单元572、数据缓存单元(data cache unit,DCU)574和第2级(L2)缓存单元576。在一些实现方式中,DCU 574也被称为第一级数据缓存(L1缓存)。DCU574可处理多个未决的缓存错失并且继续为到来的存储和加载服务。其也支持维持缓存一致性。数据TLB单元572是用于通过映射虚拟和物理地址空间来改善虚拟地址转化速度的缓存。在一个示范性实现方式中,存储器访问单元564可包括加载单元、存储地址单元和存储数据单元,其中每一者耦合到存储器单元570中的数据TLB单元572。L2缓存单元576可耦合到一个或多个其他级别的缓存并且最终耦合到主存储器。
在一个实现方式中,数据预取器580通过自动预测程序将要消耗哪个数据来投机性地加载/预取数据到DCU 574。预取可以指在处理器实际需要数据之前将存储在存储器层次体系的一个存储器单元(例如,位置)(例如,较低级别缓存或存储器)中的数据传送到更靠近处理器(例如,产生更低的访问时延)的更高级别存储器单元。更具体而言,预取可以指在处理器发出对返回特定数据的需求之前提早将数据从较低级别缓存/存储器之一取回到数据缓存和/或预取缓冲器。
处理器500可支持一个或多个指令集(例如,x86指令集(带有已随着更新版本添加的一些扩展);英国赫特福德郡金斯兰利的Imagination Technologies公司的MIPS指令集;加州森尼维耳的ARM控股公司的ARM指令集(带有可选的额外扩展,例如NEON)。
应当理解,核心可支持多线程处理(执行操作或线程的两个或更多个并行集合),并且可按多种方式来支持多线程处理,包括时间切片式多线程处理、同时多线程处理(其中单个物理核心为该物理核心在同时进行多线程处理的每个线程提供逻辑核心),或者这些的组合(例如,时间切片式取指和解码,然后是同时多线程处理,例如像
Figure BDA0002394044110000151
Hyperthreading技术中那样)。
虽然寄存器重命名是在无序执行的情境中描述的,但应当理解寄存器重命名可用于有序体系结构中。虽然处理器的图示实现方式还包括单独的指令和数据缓存单元和共享的L2缓存单元,但替换实现方式可对于指令和数据两者具有单个内部缓存,例如第1级(L1)内部缓存,或者多级别的内部缓存。在一些实现方式中,系统可包括内部缓存和在核心和/或处理器外部的外部缓存的组合。或者,所有缓存都可在核心和/或处理器外部。
图5B是根据本公开的一些实现方式图示出由图5A的处理器500实现的有序管线和寄存器重命名阶段、无序发出/执行管线的框图。图5B中的实线框图示了有序管线501,而虚线框图示了寄存器重命名、无序发出/执行管线503。在图5B中,管线501和503包括取指阶段502、长度解码阶段504、解码阶段506、分配阶段508、重命名阶段510、调度(也称为调遣或发出)阶段512、寄存器读取/存储器读取阶段514、执行阶段516、写回/存储器写入阶段518、异常处理阶段522和提交阶段524。在一些实现方式中,阶段502-504的排序可与图示的不同并且不限于图5B中所示的特定排序。
图6根据本公开的实现方式图示了处理器600的微体系结构的框图,该处理器600包括对于以共享页表实施独持页表权限实现硬件支持的处理器或集成电路的逻辑电路。在一些实现方式中,根据一个实现方式的指令可被实现为在具有字节、字、双字、四字等等的大小以及诸如单精度和双精度整数和浮点数据类型之类的数据类型的数据元素上操作。在一个实现方式中,有序前端601是处理器600的如下部分:该部分取得要执行的指令并且使它们为在处理器管线中稍后被使用做好准备。页添加和内容拷贝的实现方式可在处理器600中实现。
前端601可包括若干个单元。在一个实现方式中,指令预取器616从存储器取得指令并且将其馈送到指令解码器618,指令解码器618进而对指令进行解码或解释。例如,在一个实现方式中,解码器将接收到的指令解码成机器能够执行的被称为“微指令”或“微操作”(也称为微op或uop)的一个或多个操作。在其他实现方式中,解码器将指令解析成操作码和相应的数据和控制字段,它们被微体系结构用来根据一个实现方式执行操作。在一个实现方式中,踪迹缓存630取得解码的uop并且将它们组装成uop队列634中的程序排序序列或踪迹来供执行。当踪迹缓存630遇到复杂指令时,微代码ROM(或RAM)632提供完成操作所需要的uop。
一些指令被转换成单个微op,而其他的需要若干个微op来完成整个操作。在一个实现方式中,如果完成指令需要多于四个微op,则解码器618访问微代码ROM 632来进行该指令。对于一个实现方式,指令可被解码成少量的微op以便在指令解码器618处处理。在另一实现方式中,如果完成操作需要若干个微op,则指令可被存储在微代码ROM 632内。踪迹缓存630参考入口点可编程逻辑阵列(PLA)来确定正确的微指令指针以用于从微代码ROM632读取微代码序列来完成根据一个实现方式的一个或多个指令。在微代码ROM 632完成针对一指令的微op排序之后,机器的前端601继续开始从踪迹缓存630取得微op。
无序执行引擎603是使指令为执行做准备的地方。无序执行逻辑具有若干个缓冲器来在指令沿着管线走过并且被调度来执行时平滑和重排序指令的流以优化性能。分配器逻辑分配每个uop为了执行所需要的机器缓冲器和资源。寄存器重命名逻辑将逻辑寄存器重命名到寄存器集合中的条目上。分配器还为指令调度器前面的两个uop队列之一中的每个uop分配条目,这两个uop队列一个用于存储器操作,一个用于非存储器操作,这些指令调度器是:存储器调度器、快速调度器602、慢速/一般浮点调度器604和简单浮点调度器606。uop调度器602、604、606基于其从属输入寄存器操作对象源的准备就绪性和uop完成其操作所需要的执行资源的可用性来确定uop何时准备好执行。一个实现方式的快速调度器602可在主时钟周期的每一半上调度,而其他调度器在每个主处理器时钟周期只能调度一次。调度器为调遣端口仲裁以调度uop来执行。
寄存器集合608、610位于调度器602、604、606和执行块611中的执行单元612、614、616、618、620、622、624之间,对于整数和浮点操作分别有单独的寄存器集合608、610。一个实现方式的每个寄存器集合608、610还包括旁路网络,其可以绕过或者转发尚未被写入到寄存器集合中的刚才完成的结果到新的从属uop。整数寄存器集合608和浮点寄存器集合610也能够与另一者传达数据。对于一个实现方式,整数寄存器集合608被分割成两个单独的寄存器集合,一个寄存器集合用于数据的低位32比特,第二寄存器集合用于数据的高位32比特。一个实现方式的浮点寄存器集合610具有128比特宽的条目,因为浮点指令通常具有宽度从64到128比特的操作对象。
执行块611包含执行单元612、614、616、618、620、622、624,指令在其中被实际执行。此部分包括存储微指令执行所需要的整数和浮点数据操作对象值的寄存器集合608、610。一个实现方式的处理器600包括若干个执行单元:地址生成单元(address generationunit,AGU)612,AGU614,快速ALU 616,快速ALU 618,慢速ALU 620,浮点ALU 612,浮点移动单元614。对于一个实现方式,浮点执行块612、614执行浮点、MMX、SIMD和SSE或者其他操作。一个实现方式的浮点ALU 612包括64比特乘64比特浮点除法器来执行除法、平方根和余数微op。对于本公开的实现方式,可以用浮点硬件来处理涉及浮点值的指令。
在一个实现方式中,ALU操作去到高速ALU执行单元616、618。一个实现方式的快速ALU 616、618可以以半时钟周期的有效时延执行快速操作。对于一个实现方式,大多数复杂整数操作去到慢速ALU 620,因为慢速ALU 620包括整数执行硬件,用于长时延型操作,例如乘法器、移位、标志逻辑和分支处理。存储器加载/存储操作由AGU 622、624执行。对于一个实现方式,整数ALU 616、618、620是在对64比特数据操作对象执行整数操作的情境中描述的。在替换实现方式中,ALU 616、618、620可被实现来支持多种数据比特,包括16、32、128、256等等。类似地,浮点单元622、624可被实现来支持某个范围的具有各种宽度的比特的操作对象。对于一个实现方式,浮点单元622、624可结合SIMD和多媒体指令在128比特宽紧缩数据操作对象上操作。
在一个实现方式中,uop调度器602、604、606在父加载完成执行之前调遣从属的操作。由于uop在处理器600中被投机性地调度和执行,处理器600也包括逻辑来处理存储器错失。如果数据加载在数据缓存中错失,则在管线中可能有进行中的从属操作,它们给调度器留下了暂时不正确的数据。重放机制跟踪和重执行使用不正确数据的指令。只有从属操作需要被重放,而独立操作被允许完成。处理器的一个实现方式的调度器和重放机制也被设计为为文本串比较操作捕捉指令序列。
术语“寄存器”可以指被用作指令的一部分来识别操作对象的板上处理器存储位置。换言之,寄存器可以是从处理器的外部可使用的那些(从编程者的角度来看)。然而,实现方式的寄存器在含义上不应当限于特定类型的电路。相反,实现方式的寄存器能够存储和提供数据,并且执行本文描述的功能。本文描述的寄存器可由处理器内的电路利用任何数目的不同技术实现,例如专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合,等等。在一个实现方式中,整数寄存器存储32比特整数数据。一个实现方式的寄存器集合也包含用于紧缩数据的八个多媒体SIMD寄存器。
对于本文的论述,寄存器被理解为是被设计为保存紧缩数据的数据寄存器,例如用来自加州圣克拉拉的英特尔公司的MMX技术使能的微处理器中的64比特宽MMXTM寄存器(在一些场合中也称为“mm”寄存器)。以整数和浮点形式都可得的这些MMX寄存器可结合伴随SIMD和SSE指令的紧缩数据元素操作。类似地,与SSE2、SSE3、SSE4或以上(统称为“SSEx”)技术有关的128比特宽XMM寄存器也可被用于保存这种紧缩数据操作对象。在一个实现方式中,在存储紧缩数据和整数数据时,寄存器不需要在两种数据类型之间进行区分。在一个实现方式中,整数和浮点被包含在相同寄存器集合中或者不同寄存器集合中。此外,在一个实现方式中,浮点和整数数据可被存储在不同寄存器中或者相同寄存器中。
实现方式可实现在许多不同的系统类型中。现在参考图7,根据一实现方式示出了可以对以共享页表实施独特页表权限实现硬件支持的多处理器系统700的框图。如图7中所示,多处理器系统700是点到点互连系统,并且包括经由点到点互连750耦合的第一处理器770和第二处理器780。如图7中所示,处理器770和780的每一者可以是多核处理器,包括第一和第二处理器核心(即,处理器核心774a和774b和处理器核心784a和784b),虽然可能在处理器中存在多得多的核心。虽然示为具有两个处理器770、780,但要理解本公开的范围不限于此。在其他实现方式中,一个或多个额外的处理器可存在于给定的处理器中。
处理器770和780被示为分别包括集成存储器控制器单元772和782。处理器770还包括点到点(P-P)接口776和788作为其总线控制器单元的一部分;类似地,第二处理器780包括P-P接口786和788。处理器770、780可利用P-P接口电路778、788经由点到点(P-P)接口750交换信息。如图7中所示,IMC 772和782将处理器耦合到各自的存储器,即存储器732和存储器734,存储器732和存储器734可以是在本地附接到各个处理器的主存储器的一部分。
处理器770、780可利用点到点接口电路776、794、786、798经由个体P-P接口752、754与芯片集790交换信息。芯片集790也可经由高性能图形接口739与高性能图形电路738交换信息。
芯片集790可经由接口796耦合到第一总线716。在一个实现方式中,第一总线716可以是外围组件互连(Peripheral Component Interconnect,PCI)总线,或者诸如快速PCI总线或互连总线之类的总线,虽然本公开的范围不限于此。
现在参考图8,根据本公开的实现方式示出了可以对以共享页表实施独特页表权限实现硬件支持的第三系统800的框图。图7和图8中的相似元素带有相似的标号,并且图8的某些方面被从图7中省略以避免模糊图7的其他方面。
图8图示出处理器870、880可分别包括集成存储器和I/O控制逻辑(“CL”)872和892。对于至少一个实现方式,CL 872、882可包括例如本文所述的集成存储器控制器单元。此外,CL 872、892也可包括I/O控制逻辑。图8图示出存储器832、834耦合到CL 872、892,并且I/O设备814也耦合到控制逻辑872、892。遗留I/O设备815耦合到芯片集890。在一个实现方式中,CL 872和892可包括如上所述的过滤器逻辑电路,来应用与I/O设备814相关联的权限过滤器以实施I/O设备814的独特页表权限。在另一实现方式中,芯片集890可包括如上所述的过滤器逻辑电路。
图9是示范性片上系统(SoC)900,其可包括可以对以共享页表实施独特页表权限实现硬件支持的核心902A…902N中的一个或多个。本领域中已知的用于膝上型计算机、桌面型计算机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(digital signal processor,DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备和各种其他电子设备的其他系统设计和配置也是适当的。总之,能够包含本文公开的处理器和/或其他执行逻辑的许多种系统或电子设备一般是适当的。
在图9的示范性SoC 900内,虚线框是更先进SoC上的特征。(一个或多个)互连单元902可耦合到:应用处理器917,其包括一组一个或多个核心902A-N,和(一个或多个)共享缓存单元906;系统代理单元910;(一个或多个)总线控制器单元916;(一个或多个)集成存储器控制器单元914;一组一个或多个媒体处理器920,其可包括集成图形逻辑908、用于提供静止和/或视频相机功能的图像处理器924、用于提供硬件音频加速的音频处理器926以及用于提供视频编码/解码加速的视频处理器928;静态随机访问存储器(static randomaccess memory,SRAM)单元930;直接存储器访问(direct memory access,DMA)单元932;以及显示单元940,用于耦合到一个或多个外部显示器。
接下来转到图10,描述了根据本公开的实现方式的可以对以共享页表实施独特页表权限实现硬件支持的片上系统(SoC)设计的实现方式。作为说明性示例,SoC 1000被包括在用户设备(user equipment,UE)中。在一个实现方式中,UE指将被最终用户用来通信的任何设备,例如手持电话、智能电话、平板设备、超薄笔记本、具有宽带适配器的笔记本或者任何其他类似的通信设备。UE可连接到基站或节点,这在性质上可对应于GSM网络中的移动站(mobile station,MS)。页添加和内容拷贝的实现方式可在SoC 1000中实现。
这里,SoC 1000包括2个核心——1006和1007。与以上论述类似,核心1006和1007可符合指令集体系结构,例如具有
Figure BDA0002394044110000211
体系结构CoreTM的处理器、超微半导体公司(Advanced Micro Devices,Inc.,AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计,或者它们的客户,以及它们的被许可者或使用者。核心1006和1007耦合到与总线接口单元1009和L2缓存1010相关联的缓存控制1008以与系统1000的其他部分通信。互连1011包括片上互连,例如IOSF、AMBA或者上文论述的其他互连,它们可实现描述的公开的一个或多个方面。
在一个实现方式中,SDRAM控制器1040可经由缓存1010连接到互连1011。互连1011提供通信信道到其他组件,例如提供到订户身份模块(Subscriber Identity Module,SIM)1030来与SIM卡相接口,提供到引导ROM 1035来保存引导代码供核心1006和1007执行来初始化和引导SoC1000,提供到SDRAM控制器1040来与外部存储器(例如DRAM 1060)相接口,提供到闪存控制器1045来与非易失性存储器(例如,闪存1065)相接口,提供到外设控制1050(例如,串行外围接口)来与外设相接口,提供到视频编解码器1020和视频接口1025来显示和接收输入(例如,触摸使能输入),提供到GPU 1015来执行图形相关计算,等等。这些接口的任何一者可包含本文描述的实现方式的方面。
此外,系统图示了用于通信的外设,例如
Figure BDA0002394044110000221
模块1070、3G调制解调器1075、GPS 1080和
Figure BDA0002394044110000222
1085。注意如上所述,UE包括用于通信的无线电装置。结果,这些外围通信模块可不全都被包括。然而,在UE中,应当包括某种形式的无线电装置用于外部通信。
图11图示了采取计算系统1100的示例形式的机器的图解表示,在该计算系统1100内有一组指令,用于根据本文论述的任何一个或多个方法使得机器对以共享页表实施独特页表权限实现硬件支持。在替换实现方式中,机器可连接(例如,联网)到LAN、内联网、外联网或互联网中的其他机器。机器可在客户端-服务器网络环境中作为服务器或者客户端设备来操作,或者在对等(或分布式)网络环境中作为对等机器来操作。机器可以是个人计算机(personal computer,PC)、平板PC、机顶盒(set-top box,STB)、个人数字助理(PersonalDigital Assistant,PDA)、蜂窝电话、web设备、服务器、网络路由器、交换机或网桥,或者任何能够执行指定该机器要采取的动作的(顺序的或其他方式的)一组指令的机器。另外,虽然只图示了单个机器,但术语“机器”也应被理解为包括单独或联合执行一组(或多组)指令以执行本文论述的一个或多个方法的机器的任何集合。页添加和内容拷贝的实现方式可在计算系统1100中实现。
计算系统1100包括处理设备1102、主存储器1104(例如,闪存、动态随机访问存储器(dynamic random access memory,DRAM)(例如同步DRAM(synchronous DRAM,SDRAM)或DRAM(RDRAM)等等)、静态存储器1106(例如,闪存、静态随机访问存储器(SRAM)等等)以及数据存储设备1116,它们经由总线1108与彼此通信。
处理设备1102表示一个或多个通用处理设备,例如微处理器、中央处理单元等等。更具体地,处理设备可以是复杂指令集计算(complex instruction set computing,CISC)微处理器、精简指令集计算机(reduced instruction set computer,RISC)微处理器、超长指令字(very long instruction word,VLIW)微处理器,或者实现其他指令集的处理器,或者实现指令集的组合的处理器。处理设备1102还可以是一个或多个专用处理设备,例如专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)、数字信号处理器(digital signal processor,DSP)、网络处理器,等等。在一个实现方式中,处理设备1102可包括一个或多个处理器核心。处理设备1102被配置为执行处理逻辑1126,用于执行本文论述的操作。
在一个实现方式中,处理设备1102可以是包括公开的LLC缓存体系结构的处理器或集成电路的一部分。或者,计算系统1100可包括如本文所述的其他组件。应当理解,核心可支持多线程处理(执行操作或线程的两个或更多个并行集合),并且可按多种方式来支持多线程处理,包括时间切片式多线程处理、同时多线程处理(其中单个物理核心为该物理核心在同时进行多线程处理的每个线程提供逻辑核心),或者这些的组合(例如,时间切片式取指和解码,然后是同时多线程处理,例如像
Figure BDA0002394044110000231
Hyperthreading技术中那样)。
计算系统1100还可包括通信地耦合到网络1119的网络接口设备1118。计算系统1100还可包括视频显示设备1110(例如,液晶显示器(liquid crystal display,LCD)或阴极射线管(cathode ray tube,CRT))、字母数字输入设备1112(例如,键盘)、光标控制设备1114(例如,鼠标)、信号生成设备1120(例如,扬声器)或者其他外围设备。此外,计算系统1100可包括图形处理单元1122、视频处理单元1128和音频处理单元1132。在另一实现方式中,计算系统1100可包括芯片集(未图示),这指的是被设计为与处理设备1102一起工作并且控制处理设备1102和外部设备之间的通信的一组集成电路或芯片。例如,芯片集可以是母板上的一组芯片,这些芯片将处理设备1102链接到超高速设备,例如主存储器1104和图形控制器,以及将处理设备1102链接到外设的较低速外围总线,例如USB、PCI或ISA总线。
数据存储设备1116可包括计算机可读存储介质1124,其上存储着实现本文描述的功能的任何一个或多个方法的软件1126。软件1126在其被计算系统1100执行期间也可完全或者至少部分作为指令1126存在于主存储器1104内和/或作为处理逻辑存在于处理设备1102内;主存储器1104和处理设备1102也构成计算机可读存储介质。
计算机可读存储介质1124也可用于存储利用处理设备1102的指令1126,和/或包含调用上述应用的方法的软件库。虽然计算机可读存储介质1124在示例实现方式中被示为单个介质,但术语“计算机可读存储介质”应当被理解为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库,和/或关联的缓存和服务器)。术语“计算机可读存储介质”也应被理解为包括能够存储、编码或携带一组指令供机器执行并且使得机器执行公开的实现方式的任何一个或多个方法的任何介质。术语“计算机可读存储介质”应相应地被理解为包括但不限于固态存储器,以及光介质和磁介质。
以下示例属于进一步实现方式。
示例1是一种处理器,包括:处理器核心;过滤器寄存器,用于存储第一权限过滤器;以及存储器管理单元(MMU),其耦合到所述处理器核心、所述过滤器寄存器和与所述第一权限过滤器相关联的第一外围设备,其中所述MMU包括逻辑电路来管理共享页表,该共享页表包括与所述处理器核心和所述第一外围设备相对应的条目,其中所述逻辑电路用于:接收来自所述第一外围设备的对第一存储器页的存储器访问请求;确定所述共享页表的第一条目的权限比特的集合是否匹配所述第一权限过滤器的比特的第一组合,其中所述第一权限过滤器的比特的第一组合为所述第一外围设备定义访问权限;响应于所述第一条目的权限比特的集合匹配所述第一权限过滤器的比特的第一组合,准许所述存储器访问请求;并且响应于所述第一条目的权限比特的集合不匹配所述第一权限过滤器的比特的第一组合,引起页故障。
在示例2中,如示例1所述的主题,其中所述第一条目的权限比特的集合包括为所述第一存储器页定义访问权限的一个或多个软件比特。
在示例3中,如示例1-2的任何一项所述的主题,其中所述第一条目的权限比特的集合包括软件比特的第一集合和硬件比特的第二集合,其中所述权限比特的集合为所述第一存储器页定义访问权限。
在示例4中,如示例1-3的任何一项所述的主题,其中所述过滤器寄存器用于存储与耦合到所述MMU的第二外围设备相关联的第二权限过滤器,其中所述逻辑电路还用于:接收来自所述第二外围设备的对所述第一存储器页的第二存储器访问请求;确定所述第一条目的权限比特的集合是否匹配所述第二权限过滤器的比特的第二组合,其中所述比特的第二组合为所述第二外围设备定义访问权限,其中所述比特的第一组合不同于所述比特的第二组合;响应于所述第一条目的权限比特的集合匹配所述第二权限过滤器的比特的第二组合,所述第二存储器访问请求;并且响应于所述第一条目的权限比特的集合不匹配所述第二权限过滤器的比特的第二组合,引起页故障。
在示例5中,如示例1-4的任何一项所述的主题,其中所述逻辑电路还用于:接收来自所述处理器核心的对所述第一存储器页的第二存储器访问请求;确定所述第一条目的权限比特的集合是否指示所述处理器核心对所述第一存储器页的访问权限;响应于所述第一条目的权限比特的集合指示所述处理器核心对所述第一存储器页的访问权限,准许所述第二存储器访问请求;并且响应于所述第一条目的权限比特的集合指示所述处理器核心对所述存储器的页不具有访问权限,引起页故障。
在示例6中,如示例1-5的任何一项所述的主题,其中所述逻辑电路包括:第一比较器,用于将所述第一权限过滤器的比特的第一组合与所述共享页表的第一条目的权限比特的集合相比较并且提供输出,该输出包括比特的中间集合,所述比特的中间集合是所述比特的第一组合和所述权限比特的集合共同具有的;以及第二比较器,用于将所述第一比较器的输出的比特的中间集合与所述第一权限过滤器的比特的第一组合相比较,其中如果所述第一比较器的输出的比特的中间集合匹配所述第一权限过滤器的比特的第一组合,则所述存储器访问请求被准许。
在示例7中,如示例1-6的任何一项所述的主题,其中所述逻辑电路包括比较器,用于将所述第一权限过滤器的比特的组合的第一比特与所述第一条目的权限比特的集合的相应第二比特相比较,其中如果所述第一比特匹配所述相应第二比特,则所述第一存储器访问请求被准许。
在示例8中,如示例1-7的任何一项所述的主题,还包括根条目表,其中所述根条目表映射到情境表,其中所述情境表包括第一情境条目,在该第一情境条目中所述第一外围设备与所述第一权限过滤器相关联。
在示例9中,如示例1-8的任何一项所述的主题,其中所述第一外围设备和第二外围设备在所述第一情境条目中都与所述第一权限过滤器相关联。
各种实现方式可具有上文描述的结构特征的不同组合。例如,上文描述的处理器和方法的所有可选特征也可对于本文描述的系统实现并且示例中的具体细节可用在一个或多个实现方式中的任何地方。
示例10是一种系统,包括:存储器,用于存储共享页表;耦合到所述存储器的第一外围设备;耦合到所述存储器的第二外围设备;以及耦合到所述存储器、所述第一外围设备和所述第二外围设备的存储器管理单元(MMU),其中所述MMU包括:第一权限过滤器,其中所述第一权限过滤器包括比特的第一组合,所述比特的第一组合定义所述第一外围设备对与所述共享页表的第一条目相关联的第一存储器页的访问权限;以及第二权限过滤器,其中所述第二权限过滤器包括比特的第二组合,所述比特的第二组合定义所述第二外围设备对与所述共享页表的第一条目相关联的第一存储器页的访问权限,其中所述比特的第一组合不同于所述比特的第二组合。
在示例11中,如示例10所述的主题,其中所述MMU还包括逻辑电路用于:接收来自所述第一外围设备的对所述第一存储器页的存储器访问请求,其中所述第一存储器页与所述共享页表的第一条目相关联;确定所述第一条目的权限比特的集合是否匹配所述第一权限过滤器的比特的第一组合;响应于所述第一条目的权限比特的集合匹配所述第一权限过滤器的比特的第一组合,准许所述存储器访问请求;并且响应于所述第一条目的权限比特的集合不匹配所述第一权限过滤器的比特的第一组合,引起页故障。
在示例12中,如示例10-11的任何一项所述的主题,其中所述第一条目的权限比特的集合包括定义所述第一外围设备对所述第一存储器页的访问权限和所述第二外围设备对所述第一存储器页的访问权限的软件比特的第一集合,以及定义遗留设备对所述第一存储器页的访问权限的硬件比特的第二集合。
在示例13中,如示例10-12的任何一项所述的主题,其中所述逻辑电路还用于:接收来自所述第二外围设备的对所述第一存储器页的第二存储器访问请求;确定所述第一条目的权限比特的集合是否匹配所述第二权限过滤器的比特的第二组合;响应于所述第一条目的权限比特的集合匹配所述第二权限过滤器权限比特的第二组合,准许所述存储器访问请求;并且响应于所述第一条目的权限比特的集合不匹配所述第二权限过滤器的比特的第二组合,引起页故障。
在示例14中,如示例10-13的任何一项所述的主题,其中所述第一条目的第一软件比特指示所述第一外围设备对所述第一存储器页的写入权限,并且第二软件比特指示所述第二外围设备对所述第一存储器页的写入权限。
在示例15中,如示例10-14的任何一项所述的主题,其中所述逻辑电路还包括逻辑来更新存储器转化结构以指示出所述第一权限过滤器已被应用到所述第一条目。
在示例16中,如示例10-15的任何一项所述的主题,其中所述逻辑电路还用于:接收来自中央处理单元(CPU)的对所述第一存储器页的第二存储器访问请求;确定所述第一条目的硬件比特的第二集合是否指示出所述CPU被允许访问所述第一存储器页;响应于所述硬件比特的第二集合指示出所述CPU被允许访问所述第一存储器页,准许所述第二存储器访问请求;并且响应于所述硬件比特的第二集合指示出所述CPU不被允许访问所述第一存储器页,引起页故障。
各种实现方式可具有上文描述的结构特征的不同组合。例如,上文描述的处理器和方法的所有可选特征也可对于本文描述的系统实现并且示例中的具体细节可用在一个或多个实现方式中的任何地方。
示例17是一种方法,包括:接收来自与第一权限过滤器相关联的第一设备的对第一存储器页的第一存储器访问请求,其中所述第一权限过滤器包括比特的第一组合,所述比特的第一组合定义所述第一外围设备对所述第一存储器页的访问权限;确定页表的第一条目的权限比特的集合是否匹配所述第一权限过滤器的比特的第一组合,其中所述页表被所述第一设备和第二设备共享;响应于所述第一条目的权限比特的集合匹配所述第一权限过滤器的比特的第一组合,准许所述存储器访问请求;并且响应于所述第一条目的权限比特的集合不匹配所述第一权限过滤器的比特的第一组合,引起页故障。
在示例18中,如示例17所述的主题,还包括:接收来自与第二权限过滤器相关联的第二设备的对所述第一存储器页的第二存储器访问请求,其中所述第二权限过滤器包括比特的第二组合,所述比特的第二组合定义所述第二设备对所述第一存储器页的访问权限;确定所述第一条目的权限比特的集合是否匹配所述第二权限过滤器的比特的第二组合;响应于所述第一条目的权限比特的集合匹配所述第二权限过滤器的比特的第二组合,准许所述存储器访问请求;并且响应于所述第一条目的权限比特的集合不匹配所述第二权限过滤器的比特的第二组合,引起页故障。
在示例19中,如示例17-18的任何一项所述的主题,其中向所述页表的第一条目的权限比特的集合应用所述第一权限过滤器包括:将所述第一权限过滤器的比特的第一组合与所述页表的第一条目的权限比特的集合相比较以提供输出,该输出包括下述比特的集合:该比特的集合是所述权限过滤器的比特的第一组合和所述页表的第一条目的权限比特的集合共同具有的;将所述输出的比特的集合与所述第一权限过滤器的比特的第一组合相比较以确定所述输出的比特的集合和所述第一权限过滤器的比特的第一组合是否匹配;并且响应于确定所述输出和所述权限过滤器匹配,准许对所述第一存储器页的所述存储器访问请求。
在示例20中,如示例17-19的任何一项所述的主题,还包括更新所述页表的第一条目以指示出所述第一权限过滤器已被应用到所述页表的第一条目。
示例21是一种系统,包括用于执行如示例17-20的任何一项所述的方法的装置。
示例22是包括多个指令的至少一个非暂态机器可读存储介质,所述多个指令当被执行时实现如示例17-20的任何一项所述的方法或者实现如示例17-20的任何一项所述的装置。
示例23是一种装置,包括被配置为执行如示例17至-20的任何一项所述的方法的处理器。
虽然已针对有限数目的实现方式描述了本公开,但本领域技术人员将会明白从这些实现方式的许多修改和变化。希望所附权利要求覆盖落在本公开的真实精神和范围内的所有这种修改和变化。
在本文的描述中,阐述了许多具体细节,例如特定类型的处理器和系统配置、特定硬件结构、特定体系结构和微体系结构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量/高度、特定处理器管线阶段和操作等等的示例,以便提供对本公开的透彻理解。然而,本领域技术人员将会清楚,实现本公开并不需要使用这些具体细节。在其他情况中,没有详细描述公知的组件或方法,例如特定的和替换的处理器体系结构、用于描述的算法的特定逻辑电路/代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现方式、用代码对算法的特定表述、特定断电和门控技术和逻辑以及计算机系统的其他特定操作细节,以避免不必要地模糊本公开。
实现方式是参考确定诸如计算平台或微处理器之类的特定集成电路中的基于扇区的缓存的缓存线中的数据的有效性来描述的。实现方式也可适用于其他类型的集成电路和可编程逻辑器件。例如,公开的实现方式不限于桌面计算机系统或便携计算机,例如
Figure BDA0002394044110000301
UltrabooksTM计算机。并且也可用于其他设备中,例如手持设备、平板设备、其他薄型笔记本、片上系统(SoC)设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数字相机、个人数字助理(PDA)和手持PC。嵌入式应用通常包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(wide areanetwork,WAN)交换机或者能够执行下面教导的功能和操作的任何其他系统。描述了系统可以是任何种类的计算机或嵌入式系统。公开的实现方式尤其可用于低端设备,比如可穿戴设备(例如,手表)、电子植入物、感观和控制基础设施设备、控制器、监视控制和数据采集(supervisory control and data acquisition,SCADA)系统,等等。另外,本文描述的装置、方法和系统不限于物理计算设备,而是也可涉及针对能量节约和效率的软件优化。正如在以下描述中将变得容易清楚的,本文描述的方法、装置和系统的实现方式(无论是就硬件、固件、软件或者其组合而言)对于与性能考虑平衡的“绿色技术”未来是至关重要的。
虽然这里的实现方式是参考处理器来描述的,但其他实现方式适用于其他类型的集成电路和逻辑设备。本公开的实现方式的类似技术和教导可被应用到可受益于更高管线吞吐量和改善的性能的其他类型的电路或半导体器件。本公开的实现方式的教导适用于执行数据操纵的任何处理器或机器。然而,本公开不限于执行512比特、256比特、128比特、64比特、32比特或16比特数据操作的处理器或机器,而是可被应用到其中执行数据的操纵或管理的任何处理器和机器。此外,这里的描述提供了示例,并且附图为了说明示出了各种示例。然而,这些示例不应当被从限制意义上来解释,因为它们只是想要提供本公开的实现方式的示例,而不是提供本公开的实现方式的所有可能实现方式的详尽列表。
虽然上述示例描述了执行单元和逻辑电路的情境中的指令处理和分发,但本公开的其他实现方式可通过存储在机器可读的有形介质上的数据或指令来实现,该数据或指令当被机器执行时使得该机器执行符合本公开的至少一个实现方式的功能。在一个实现方式中,与本公开的实现方式相关联的功能体现在机器可执行指令中。指令可用于使得编程有这些指令的通用或专用处理器执行本公开的步骤。本公开的实现方式可被提供为计算机程序产品或者软件,该计算机程序产品或者软件可包括其上存储有指令的机器或计算机可读介质,这些指令可用于对计算机(或其他电子设备)编程来执行根据本公开的实现方式的一个或多个操作。或者,本公开的实现方式的操作可由包含用于执行这些操作的固定功能逻辑的特定硬件组件执行,或者由编程的计算机组件和固定功能硬件组件的任何组合来执行。
用于将逻辑编程为执行本公开的实现方式的指令可被存储在系统中的存储器内,例如DRAM、缓存、闪存或者其他存储装置。此外,指令可经由网络或借由其他计算机可读介质来分发。从而,机器可读介质可包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制——但不限于——软盘,光盘,致密盘只读存储器(Compact Disc,Read-OnlyMemory,CD-ROM),以及磁光盘,只读存储器(Read-Only Memory,ROM),随机访问存储器(Random Access Memory,RAM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除可编程只读存储器(Electrically ErasableProgrammable Read-Only Memory,EEPROM),磁卡或光卡,闪存,或者在经由电的、光的、声的或者其他形式的传播信号(例如,载波、红外信号、数字信号等等)通过互联网传输信息时使用的有形机器可读存储装置。因此,计算机可读介质包括适用于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的有型机器可读介质。
设计可经过各种阶段,从创建到仿真再到制造。表示设计的数据可通过若干种方式来表示该设计。首先,正如在仿真中有用的,可利用硬件描述语言或者另外的功能性描述语言来表示硬件。此外,在设计过程的一些阶段可产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某个阶段达到表示各种设备在硬件模型中的物理放置的数据的级别。在使用传统半导体制作技术的情况下,表示硬件模型的数据可以是为用于产生集成电路的掩模指定各种特征在不同掩模层上的存在与否的数据。在设计的任何表示中,数据可被存储在任何形式的机器可读介质中。存储器或者诸如盘之类的磁存储装置或光存储装置可以是机器可读介质,用来存储经由光波或电波传输的信息,该光波或电波被调制或以其他方式生成来传输这种信息。当传输指示或携带代码或设计的电载波时,就执行电信号的拷贝、缓冲或重传而言,做出新的拷贝。从而,通信提供商或网络提供商可在有形机器可读介质上至少暂时地存储物品,例如被编码到载波中的信息,其体现本公开的实现方式的技术。
本文使用的模块指的是硬件、软件和/或固件的任何组合。作为示例,模块包括硬件,例如微控制器,其与非暂态介质相关联来存储适合于被微控制器执行的代码。因此,在一个实现方式中提及模块指的是硬件,其被特别配置为识别和/或执行要被保存在非暂态介质上的代码。此外,在另一实现方式中,对模块的使用指的是包括代码的非暂态介质,该代码特别适合于被微控制器执行来执行预定的操作。正如可以推断出的,在另外一个实现方式中,术语模块(在此示例中)可以指微控制器和非暂态介质的组合。通常,被图示为分开的模块边界一般是变化的并且可能重叠。例如,第一和第二模块可共享硬件、软件、固件或者其组合,而可能保留一些独立的硬件、软件或固件。在一个实现方式中,对术语逻辑的使用包括硬件,例如晶体管、寄存器或其他硬件,例如可编程逻辑器件。
对短语“被配置为”的使用在一个实现方式中指的是布置、装配、制造、许诺销售、进口和/或设计装置、硬件、逻辑或元素来执行指定或确定的任务。在此示例中,不是正在操作的装置或其元素仍“被配置为”执行指定的任务,如果它被设计、耦合和/或互连来执行所述指定任务的话。作为纯说明性示例,逻辑门在操作期间可提供0或1。但“被配置为”向时钟提供使能信号的逻辑门不包括可提供1或0的每一个可能逻辑门。反而,逻辑门是以在操作期间输出的1或0会使能时钟的某种方式耦合的那种。再次注意对术语“被配置为”的使用不要求操作,而是聚焦于装置、硬件和/或元件的潜在状态,其中在潜在状态中,装置、硬件和/或元件被设计为当该装置、硬件和/或元件在操作时执行特定的任务。
此外,在一个实现方式中对短语“用来”、“能够”和/或“可操作来”的使用指的是以使能以指定方式使用装置、逻辑、硬件和/或元件的方式设计的某种装置、逻辑、硬件和/或元件。与上文一样要注意在一个实现方式中对“用来”、“能够”或者“可操作来”的使用指的是装置、逻辑、硬件和/或元件的潜在状态,其中装置、逻辑、硬件和/或元件未在操作,但被以使能以指定方式使用装置的方式来设计。
本文使用的值包括数字、状态、逻辑状态或者二元逻辑状态的任何已知表示。通常,对逻辑电平、逻辑值或逻辑的值的使用也被称为1和0,这简单地就是表示二元逻辑状态。例如,1指的是高逻辑电平,0指的是低逻辑电平。在一个实现方式中,存储单元,例如晶体管或闪存单元,可能够保存单个逻辑值或多个逻辑值。然而,使用了计算机系统中的值的其他表示。例如,十进制数字十也可被表示为二进制值1010和十六进制字母A。因此,值包括能够被保存在计算机系统中的信息的任何表示。
另外,状态可由值或值的部分来表示。作为示例,第一值,例如逻辑一,可表示默认或初始状态,而第二值,例如逻辑零,可表示非默认状态。此外,术语重置和设置在一个实现方式中分别指的是默认的和更新后的值或状态。例如,默认值可能包括高逻辑值,即重置,而更新后的值可能包括低逻辑值,即,设置。注意值的任何组合可被利用来表示任何数目的状态。
上文记载的方法、硬件、软件、固件或代码的实现方式可经由存储在机器可访问、机器可读、计算机可访问或者计算机可读介质上的可由处理元件执行的指令或代码来实现。非暂态机器可访问/可读介质包括以机器(例如计算机或电子系统)可读的形式提供(即,存储和/或传输)信息的任何机制。例如,非暂态机器可访问介质包括随机访问存储器(RAM),例如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁存储介质或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;用于保存从暂态(传播)信号(例如,载波、红外信号、数字信号)接收的信息的其他形式的存储设备;等等,它们要与可从其接收信息的非暂态介质相区分。
用于将逻辑编程为执行本公开的实现方式的指令可被存储在系统中的存储器内,例如DRAM、缓存、闪存或者其他存储装置。此外,指令可经由网络或借由其他计算机可读介质来分发。从而,机器可读介质可包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制——但不限于——软盘,光盘,致密盘只读存储器(Compact Disc,Read-OnlyMemory,CD-ROM),以及磁光盘,只读存储器(Read-Only Memory,ROM),随机访问存储器(Random Access Memory,RAM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除可编程只读存储器(Electrically ErasableProgrammable Read-Only Memory,EEPROM),磁卡或光卡,闪存,或者在经由电的、光的、声的或者其他形式的传播信号(例如,载波、红外信号、数字信号等等)通过互联网传输信息时使用的有形机器可读存储装置。因此,计算机可读介质包括适用于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的有型机器可读介质。
本说明书中各处提及“一个实现方式”或者“一实现方式”的意思是联系该实现方式描述的特定特征、结构或特性被包括在本公开的至少一个实现方式中。从而,短语“在一个实现方式中”或者“在一实现方式中”在本说明书各处的出现不一定全都指的同一实现方式。另外,特定的特征、结构或特性在一个或多个实现方式中可按任何适当的方式被组合。
在前述说明书中,参考特定示范性实现方式给出了详细描述。然而,很明显,在不脱离如所附权利要求所记载的本公开的更宽精神和范围的情况下,可对其进行各种修改和改变。因此应从说明意义而不是限制意义上来看待说明书和附图。此外,前述对实现方式和其他示范性语言的使用不一定指的是同一实现方式或同一示例,而是可以指不同的和有区别的实现方式,以及可能相同的实现方式。
详细描述的一些部分是按计算机存储器内的数据比特上的操作的算法和符号表示来呈现的。这些算法描述和表示是被数据处理领域的技术人员用来最有效地将其工作的实质传达给本领域其他技术人员的手段。算法在这里并且一般而言被设想为是通向期望结果的操作的自洽序列。这些操作是要求对物理量的物理操纵的那些。通常(但并非一定),这些量采取能够被存储、传送、组合、比较和以其他方式操纵的电信号或磁信号的形式。已证明有时,主要是出于习惯用法的原因,将这些信号称为比特、值、元素、符号、字符、项、数字等等,是方便的。本文描述的块可以是硬件、软件、固件或者其组合。
然而,应当记住,所有这些和类似的术语都将与适当的物理量相关联并且只是应用到这些量的方便标签。除非从以上论述清楚看出另有具体声明,否则要明白在整个说明书各处,利用诸如“定义”、“接收”、“确定”、“发出”、“链接”、“关联”、“获得”、“认证”、“禁止”、“执行”、“请求”、“通信”之类的术语的论述指的是将计算系统的寄存器和存储器内的被表示为物理(例如,电子)量的数据操纵和变换成计算系统存储器或寄存器或其他这种信息存储、传输或显示设备内的被类似地表示为物理量的其他数据的计算系统或类似的电子计算设备的动作和过程。
词语“示例”或“示范性”在本文中用来意指充当示例、实例或例示。本文描述为“示例”或“示范性”的任何方面或设计并不一定要被解释为比其他方面或设计更优选或有利。更确切地说,对词语“示例”或“示范性”的使用意图以具体方式给出概念。就本申请中使用的而言,术语“或”意图指包含性的“或”,而不是排他性的“或”。也就是说,除非另有指明,或者从上下文清楚可见,否则“X包括A或B”意图指任何自然包含性置换。也就是说,如果X包括A;X包括B;或者X包括A和B两者,则在任何前述情况下都满足“X包括A或B”。此外,本申请和所附权利要求中使用的冠词“一”一般应当被解释为指“一个或多个”,指非另有指明或者从上下文清楚可见针对的是单数形式。另外,各处对术语“一实现方式”或“一个实现方式”或者“一实现方式”或“一个实现方式”的使用并不打算意指同一实现方式或实现方式,除非是这样描述的。另外,本文使用的术语“第一”、“第二”、“第三”、“第四”等等打算用作标签来区分不同元素,并且可不一定具有根据其数字番号的序数含义。

Claims (22)

1.一种处理器,包括:
处理器核心;
过滤器寄存器,用于存储第一权限过滤器;以及
存储器管理单元(MMU),其耦合到所述处理器核心、所述过滤器寄存器和与所述第一权限过滤器相关联的第一外围设备,其中所述MMU包括逻辑电路来管理共享页表,该共享页表包括与所述处理器核心和所述第一外围设备相对应的条目,其中所述逻辑电路用于:
接收来自所述第一外围设备的对第一存储器页的存储器访问请求;
确定所述共享页表的第一条目的权限比特的集合是否匹配所述第一权限过滤器的比特的第一组合,其中所述第一权限过滤器的比特的第一组合为所述第一外围设备定义访问权限;
响应于所述第一条目的权限比特的集合匹配所述第一权限过滤器的比特的第一组合,准许所述存储器访问请求;并且
响应于所述第一条目的权限比特的集合不匹配所述第一权限过滤器的比特的第一组合,引起页故障。
2.如权利要求1所述的处理器,其中所述第一条目的权限比特的集合包括定义对所述第一存储器页的访问权限的一个或多个软件比特。
3.如权利要求1所述的处理器,其中所述第一条目的权限比特的集合包括软件比特的第一集合和硬件比特的第二集合,其中所述权限比特的集合定义对所述第一存储器页的访问权限。
4.如权利要求1-3中任一项所述的处理器,其中所述过滤器寄存器用于存储与耦合到所述MMU的第二外围设备相关联的第二权限过滤器,其中所述逻辑电路还用于:
接收来自所述第二外围设备的对所述第一存储器页的第二存储器访问请求;
确定所述第一条目的权限比特的集合是否匹配所述第二权限过滤器的比特的第二组合,其中所述比特的第二组合为所述第二外围设备定义访问权限,其中所述比特的第一组合不同于所述比特的第二组合;
响应于所述第一条目的权限比特的集合匹配所述第二权限过滤器的比特的第二组合,准许所述第二存储器访问请求;并且
响应于所述第一条目的权限比特的集合不匹配所述第二权限过滤器的比特的第二组合,引起页故障。
5.如权利要求1-3中任一项所述的处理器,其中所述逻辑电路还用于:
接收来自所述处理器核心的对所述第一存储器页的第二存储器访问请求;
确定所述第一条目的权限比特的集合是否指示所述处理器核心对所述第一存储器页的访问权限;
响应于所述第一条目的权限比特的集合指示所述处理器核心对所述第一存储器页的访问权限,准许所述第二存储器访问请求;并且
响应于所述第一条目的权限比特的集合指示所述处理器核心对所述第一存储器页不具有访问权限,引起页故障。
6.如权利要求1-3中任一项所述的处理器,其中所述逻辑电路包括:
第一比较器,用于将所述第一权限过滤器的比特的第一组合与所述共享页表的第一条目的权限比特的集合相比较并且提供输出,该输出包括比特的中间集合,所述比特的中间集合是所述比特的第一组合和所述权限比特的集合共同具有的;以及
第二比较器,用于将所述第一比较器的输出的比特的中间集合与所述第一权限过滤器的比特的第一组合相比较,其中如果所述第一比较器的输出的比特的中间集合匹配所述第一权限过滤器的比特的第一组合,则所述存储器访问请求被准许。
7.如权利要求1-3中任一项所述的处理器,其中所述逻辑电路包括比较器,用于将所述第一权限过滤器的比特的组合的第一比特与所述第一条目的权限比特的集合的相应第二比特相比较,其中如果所述第一比特匹配所述相应第二比特,则所述存储器访问请求被准许。
8.如权利要求1-3中任一项所述的处理器,还包括根条目表,其中所述根条目表映射到情境表,其中所述情境表包括第一情境条目,在该第一情境条目中所述第一外围设备与所述第一权限过滤器相关联。
9.如权利要求8所述的处理器,其中所述第一外围设备和第二外围设备在所述第一情境条目中都与所述第一权限过滤器相关联。
10.一种系统,包括:
存储器,用于存储共享页表;
耦合到所述存储器的第一外围设备;
耦合到所述存储器的第二外围设备;以及
耦合到所述存储器、所述第一外围设备和所述第二外围设备的存储器管理单元(MMU),其中所述MMU包括:
第一权限过滤器,其中所述第一权限过滤器包括比特的第一组合,所述比特的第一组合定义所述第一外围设备对与所述共享页表的第一条目相关联的第一存储器页的访问权限;以及
第二权限过滤器,其中所述第二权限过滤器包括比特的第二组合,所述比特的第二组合定义所述第二外围设备对与所述共享页表的第一条目相关联的所述第一存储器页的访问权限,其中所述比特的第一组合不同于所述比特的第二组合。
11.如权利要求10所述的系统,其中所述MMU还包括逻辑电路,用于:
接收来自所述第一外围设备的对所述第一存储器页的存储器访问请求,其中所述第一存储器页与所述共享页表的第一条目相关联;
确定所述第一条目的权限比特的集合是否匹配所述第一权限过滤器的比特的第一组合;
响应于所述第一条目的权限比特的集合匹配所述第一权限过滤器的比特的第一组合,准许所述存储器访问请求;并且
响应于所述第一条目的权限比特的集合不匹配所述第一权限过滤器的比特的第一组合,引起页故障。
12.如权利要求11所述的系统,其中所述第一条目的权限比特的集合包括:软件比特的第一集合,其定义所述第一外围设备对所述第一存储器页的访问权限和所述第二外围设备对所述第一存储器页的访问权限,以及硬件比特的第二集合,其定义遗留设备对所述第一存储器页的访问权限。
13.如权利要求11所述的系统,其中所述逻辑电路还用于:
接收来自所述第二外围设备的对所述第一存储器页的第二存储器访问请求;
确定所述第一条目的权限比特的集合是否匹配所述第二权限过滤器的比特的第二组合;
响应于所述第一条目的权限比特的集合匹配所述第二权限过滤器的比特的第二组合,准许所述存储器访问请求;并且
响应于所述第一条目的权限比特的集合不匹配所述第二权限过滤器的比特的第二组合,引起页故障。
14.如权利要求10-13中任一项所述的系统,其中所述第一条目的第一软件比特指示所述第一外围设备对所述第一存储器页的写入权限,并且第二软件比特指示所述第二外围设备对所述第一存储器页的写入权限。
15.如权利要求11-13中任一项所述的系统,其中所述逻辑电路还包括逻辑来更新所述共享页表,以指示出所述第一权限过滤器已被应用到所述第一条目。
16.如权利要求11-13中任一项所述的系统,其中所述逻辑电路还用于:
接收来自中央处理单元(CPU)的对所述第一存储器页的第二存储器访问请求;
确定所述第一条目的硬件比特的第二集合是否指示出所述CPU被允许访问所述第一存储器页;
响应于所述硬件比特的第二集合指示出所述CPU被允许访问所述第一存储器页,准许所述第二存储器访问请求;并且
响应于所述硬件比特的第二集合指示出所述CPU不被允许访问所述第一存储器页,引起页故障。
17.一种操作方法,包括:
接收来自与第一权限过滤器相关联的第一设备的对第一存储器页的存储器访问请求,其中所述第一权限过滤器包括比特的第一组合,所述比特的第一组合定义所述第一设备对所述第一存储器页的访问权限;
确定页表的第一条目的权限比特的集合是否匹配所述第一权限过滤器的比特的第一组合,其中所述页表被所述第一设备和第二设备共享;
响应于所述第一条目的权限比特的集合匹配所述第一权限过滤器的比特的第一组合,准许所述存储器访问请求;并且
响应于所述第一条目的权限比特的集合不匹配所述第一权限过滤器的比特的第一组合,引起页故障。
18.如权利要求17所述的方法,还包括:
接收来自与第二权限过滤器相关联的第二设备的对所述第一存储器页的第二存储器访问请求,其中所述第二权限过滤器包括比特的第二组合,所述比特的第二组合定义所述第二设备对所述第一存储器页的访问权限;
确定所述第一条目的权限比特的集合是否匹配所述第二权限过滤器的比特的第二组合;
响应于所述第一条目的权限比特的集合匹配所述第二权限过滤器的比特的第二组合,准许所述存储器访问请求;并且
响应于所述第一条目的权限比特的集合不匹配所述第二权限过滤器的比特的第二组合,引起页故障。
19.如权利要求17所述的方法,其中向所述页表的第一条目的权限比特的集合应用所述第一权限过滤器包括:
将所述第一权限过滤器的比特的第一组合与所述页表的第一条目的权限比特的集合相比较以提供输出,该输出包括下述比特的集合:该比特的集合是所述第一权限过滤器的比特的第一组合和所述页表的第一条目的权限比特的集合共同具有的;
将所述输出的比特的集合与所述第一权限过滤器的比特的第一组合相比较,以确定所述输出的比特的集合和所述第一权限过滤器的比特的第一组合是否匹配;并且
响应于确定所述输出和所述第一权限过滤器的比特的第一组合匹配,准许对所述第一存储器页的所述存储器访问请求。
20.如权利要求17所述的方法,还包括:更新所述页表的第一条目以指示出所述第一权限过滤器已被应用到所述页表的第一条目。
21.一种装置,包括用于执行如权利要求17-20中任一项所述的方法的装置。
22.一种装置,包括被配置为执行如权利要求17-20中任一项所述的方法的处理器。
CN202010124628.8A 2019-03-28 2020-02-27 以共享页表实施独特页表权限 Pending CN111752869A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/367,944 US10969980B2 (en) 2019-03-28 2019-03-28 Enforcing unique page table permissions with shared page tables
US16/367,944 2019-03-28

Publications (1)

Publication Number Publication Date
CN111752869A true CN111752869A (zh) 2020-10-09

Family

ID=69157668

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010124628.8A Pending CN111752869A (zh) 2019-03-28 2020-02-27 以共享页表实施独特页表权限

Country Status (3)

Country Link
US (1) US10969980B2 (zh)
EP (1) EP3716078A1 (zh)
CN (1) CN111752869A (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11392308B2 (en) * 2019-05-20 2022-07-19 Apple Inc. Techniques for implementing user space file systems
US10997085B2 (en) * 2019-06-03 2021-05-04 International Business Machines Corporation Compression for flash translation layer
GB2593716B (en) * 2020-03-31 2022-08-10 Advanced Risc Mach Ltd Controlling memory access in a data processing systems with multiple subsystems

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140331019A1 (en) * 2013-05-06 2014-11-06 Microsoft Corporation Instruction set specific execution isolation
GB2514107B (en) 2013-05-13 2020-07-29 Advanced Risc Mach Ltd Page table data management
US20160019168A1 (en) 2014-07-18 2016-01-21 Qualcomm Incorporated On-Demand Shareability Conversion In A Heterogeneous Shared Virtual Memory

Also Published As

Publication number Publication date
EP3716078A1 (en) 2020-09-30
US20200310665A1 (en) 2020-10-01
US10969980B2 (en) 2021-04-06

Similar Documents

Publication Publication Date Title
CN107209723B (zh) 用于虚拟化的细粒度地址重新映射
US11055232B2 (en) Valid bits of a translation lookaside buffer (TLB) for checking multiple page sizes in one probe cycle and reconfigurable sub-TLBS
US11995001B2 (en) Supporting secure memory intent
US20170185535A1 (en) Memory write protection for memory corruption detection architectures
JP2016536720A (ja) セキュアなメモリの再パーティショニング
US10671744B2 (en) Lightweight trusted execution for internet-of-things devices
US20200201787A1 (en) Scalable multi-key total memory encryption engine
CN107278295B (zh) 用于存储器损坏检测架构的字节水平粒度的缓冲器上溢检测
US20190102324A1 (en) Cache behavior for secure memory repartitioning systems
EP3716078A1 (en) Enforcing unique page table permissions with shared page tables
US10628315B2 (en) Secure memory repartitioning technologies
CN109690546B (zh) 支持对客户机飞地存储器页的超额订阅
US10133669B2 (en) Sequential data writes to increase invalid to modified protocol occurrences in a computing system
US11139967B2 (en) Restricting usage of encryption keys by untrusted software
US20190146794A1 (en) Conflict mask generation
CN109643244B (zh) 映射安全策略组寄存器
US10303605B2 (en) Increasing invalid to modified protocol occurrences in a computing system

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