CN109564552B - 用于存储器管理的方法、设备和系统 - Google Patents
用于存储器管理的方法、设备和系统 Download PDFInfo
- Publication number
- CN109564552B CN109564552B CN201780047225.4A CN201780047225A CN109564552B CN 109564552 B CN109564552 B CN 109564552B CN 201780047225 A CN201780047225 A CN 201780047225A CN 109564552 B CN109564552 B CN 109564552B
- Authority
- CN
- China
- Prior art keywords
- memory
- access
- flag
- mode
- privilege
- 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.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims abstract description 324
- 238000000034 method Methods 0.000 title claims description 33
- 238000012545 processing Methods 0.000 claims abstract description 72
- 238000013507 mapping Methods 0.000 claims abstract description 13
- 238000007726 management method Methods 0.000 description 34
- 238000007667 floating Methods 0.000 description 30
- 238000010586 diagram Methods 0.000 description 24
- 238000013461 design Methods 0.000 description 9
- 238000013519 translation Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 8
- 230000004044 response Effects 0.000 description 8
- 239000000872 buffer Substances 0.000 description 7
- 230000002093 peripheral effect Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000001419 dependent effect Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000005291 magnetic effect Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 239000003795 chemical substances by application Substances 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 1
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 239000000370 acceptor Substances 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 238000013442 quality metrics Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
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/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1491—Protection 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
-
- 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/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1483—Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
-
- 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/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- 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/68—Details of translation look-aside buffer [TLB]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
Abstract
一种处理系统,包括:处理核;以及存储器管理单元,通信地耦合至处理核,包括:存储设备,用于存储页表条目(PTE),包括:从由在处理核上运行的应用引用的虚拟存储器页到存储器的存储器帧的标识符的映射,与在第一特权模式下访问存储器帧相关联的第一多个访问许可标志,以及与在第二特权模式下访问存储器相关联的第二多个访问许可标志。
Description
技术领域
本公开涉及存储器管理,并且更具体地涉及增强与当前特权等级(CPL)相关联的存储器访问许可。
背景技术
计算设备可以包括在一个或多个处理器(诸如中央处理单元(CPU))中的用于执行指令的一个或多个处理核,以及用于存储与在一个或多个处理核上执行任务(包括用户应用以及诸如操作系统的内核的系统应用)相关联的指令和数据的存储器设备(诸如随机存取存储器(RAM))。每个应用程序的指令可以使用虚拟存储器地址空间中的虚拟地址(或线性地址)来访问存储器。存储器管理单元可以使用页表将虚拟地址转换为存储器的物理地址。
附图说明
通过下文给出的具体实施方式并通过本公开各实施例的附图,将更完整地理解本公开。然而,不应当认为这些附图将本公开限制为特定实施例,而是这些附图仅用于说明和理解。
图1示出根据本公开的实施例的包括用于保护存储器的处理系统的芯片上系统(SoC)。
图2示出根据本公开的实施例的页表。
图3是根据本公开的实施例的用于确定存储器访问许可的方法的框图。
图4是根据本公开的另一实施例的用于确定用于访问存储器帧的访问许可的方法400的框图。
图5A是示出用于包括异构核的处理器的微架构的框图,在该处理器中可以使用本公开的一个实施例。
图5B是示出根据本公开的至少一个实施例实现的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。
图6示出根据本公开的一个实施例的用于包括逻辑的处理器的微架构的框图。
图7是示出系统的框图,在该系统中可使用本公开的实施例。
图8是系统的框图,在该系统中本公开的实施例可以操作。
图9是系统的框图,在该系统中本公开的实施例可以操作。
图10是根据本公开的实施例的芯片上系统(SoC)的框图。
图11是根据本公开的SoC设计的实施例的框图。
图12示出计算机系统的一个实施例的框图。
具体实施方式
计算设备可以包括在一个或多个处理器(诸如中央处理单元(CPU))中的用于执行指令的一个或多个处理核,以及用于存储与在一个或多个处理核上执行任务(包括用户应用以及诸如操作系统的内核的系统应用)相关联的指令和数据的存储器设备(诸如随机存取存储器(RAM))。每个应用程序的指令使用虚拟存储器的虚拟地址(或线性地址)寻址存储器,可以通过与该一个或多个处理器相关联的存储器管理单元(MMU)将该虚拟地址(或线性地址)转换成存储器的物理地址。可以根据可以由MMU映射到存储器的页帧的虚拟存储器页来组织虚拟存储器。每个虚拟存储器页可以对应于存储器的存储器帧。虚拟存储器页可以根据页编号被标识,而存储器的页帧可以根据存储器帧编号被标识。每个虚拟地址可以包括页编号以及在该页编号处的页内的偏移。因此,可以通过查找页表以得到页编号以及偏移来确定存储器的具体的物理地址。每个页表条目(PTE)指定虚拟地址到物理地址的转换,以及诸如访问许可的存储器页的其他属性。如此,在处理核上执行的任务可以访问的虚拟地址的空间可以大于物理存储器地址。
应用程序可以与确定其对存储器的访问模式(例如,作为用户或作为管理程序)的特权等级相关联。例如,用户应用可以具有用户模式的低特权,而系统应用(诸如内核)可以具有管理程序模式的高特权。处理器中的存储器管理单元可以将虚拟地址转换为物理地址以用于访问存储器。
页表条目是页表中的一项,被用来将存储器的虚拟地址映射到该存储器的物理地址。页表可以存储在存储器中的指定的位置中。页表条目还可以包括用于存储由页表条目引用的页的属性值的字段。例如,在一些实现方式中,页表条目可以包括用于存储根据虚拟地址页编号标识的存储器帧编号的字段,从而提供由软件应用采用的虚拟存储器地址与标识存储器设备中的位置的物理存储器地址之间的映射。页表条目还可以包括存储与存储器页帧相关联的属性值的字段。例如,页表条目可以包括用于存储诸如存在/不存在(P/A)位的页有效性标志的字段。如果P/A位是“1”,则与页表条目的页帧编号相关联的页帧是有效的并且可以被使用。但是如果P/A位是“0”,则页帧是无效的(或当前不在存储器中)。
页表条目还可以包括用于存储一个或多个访问许可位的另一个字段。访问许可位中的每一个可以对应于一种类型的访问许可。例如,第一位可以定义“读(R)”许可(例如,“1”指示可读,而“0”指示不可读),第二位可以定义“写(W)”许可(例如,“1”指示可写,而“0”指示不可写),并且第三位可以定义“执行禁用(XD)”许可(例如,“1”指示执行被禁用,而“0”指示可执行)。
与页表条目相关联的访问许可位的当前实现不指定访问许可与用户模式还是管理程序模式相关联。这些访问许可,特别是W和XD位,通常由用户模式和管理程序模式共享。因此,由页表条目指定的存储器帧或者对于用户和管理程序级应用是可写的,或者不可由它们写入。类似地,它对于用户和管理程序级应用也是或者可执行的、或者不可由它们执行。然而,用户模式和管理程序模式二者的访问许可的捆绑不是高效的,因为软件应用可能在高于该应用要求的限制下运行。
当前的解决方案可以包括采用存储在控制寄存器中的全局配置位来定义在用户模式下或在管理程序模式下的所有存储器页的访问许可。例如,存储在控制寄存器(CR0)中的配置位(WP)可以全局地指定在管理程序模式下所有存储器帧是可写的,而不论存储在页表条目中的写访问许可位如何。然而,这种类型的解决方案不允许指定页级访问许可或许可的不同组合。
本公开的实施例提供存储在页表条目中的一组新的访问许可位,其可以指定关于虚拟地址空间的页的附加属性(例如,用户模式或管理程序模式的特权等级)的访问许可。因此,操作系统可以将用户和管理程序专用的访问许可分离。在一个实施例中,可以由存储在与处理器相关联的控制寄存器中的配置位来选择性地启用特权等级专用访问许可。例如,如果配置位被设置为“1”,则可以在管理程序模式下使用W和XD位,并且可以在用户模式下将新的W’和XD’位添加到页表条目并使用。如果配置位被设置为“0”,则传统W和XD位用于管理程序和用户模式。以此方式,本公开的实施例允许操作系统以存储器页的粒度为用户级软件应用和管理程序级软件应用设置精确和有针对性的访问许可。
图1示出根据本公开的实施例的包括用于保护存储器的处理系统的芯片上系统(SoC)100。SoC 100可包括经由总线系统108彼此连接的处理器(诸如中央处理单元(CPU))102和存储器104。存储器104可以存储系统应用和用户应用程序以及与程序相关联的数据。处理器102可执行诸如使用存储器104来存储程序的指令以及与该程序相关联的数据的系统应用和用户应用之类的任务。
处理器102可以进一步包括一个或多个处理核110以及存储器管理单元(MMU)112。该一个或多个处理核是处理器102内的用于执行任务的逻辑电路。在一个实施例中,在处理核110上执行的任务不使用存储器的物理地址直接地访问存储器104。相反,任务通过虚拟地址(也被称为线性地址)访问虚拟存储器。在处理核110以及存储器之间耦合的存储器管理单元112可以将虚拟存储器的虚拟地址映射到存储器104的物理地址。虚拟地址的空间可以被分成被称为页的固定尺寸单元。虚拟地址的页可以被对应地映射到存储器104的物理地址的空间中的被称为存储器帧的固定尺寸单元。
在一个实施例中,存储器104可以存储用于存储虚拟地址的页到物理地址之间的映射的页表114。映射可以包括页的标识符(或页编号)到存储器帧的标识符(或存储器帧编号)之间的对应关系。存储器帧编号确定存储器104的被分配给任务的区域。
页表114可以包括一个或多个页表条目(PTE)116。在一个实施例中,页表114的页表条目116可以被加载到存储器管理单元112的页表寄存器130中,使得存储器管理单元112可以执行存储器地址映射。页表条目中的每一个可以存储根据虚拟页编号被标识的一个或多个存储器帧编号。在一个实施例中,在处理核110上执行的任务可以通过指定一个或多个虚拟地址范围来分配存储器的块。虚拟地址可以包括第一部分,该第一部分包括指示虚拟页编号的一个或多个位(例如,高阶20位),以及第二部分,该第二部分的位(例如,低阶12位)指示对应于页的存储器帧内的字节偏移。存储器管理单元112可以使用虚拟页编号以标识存储在页表条目116中的存储器帧编号,并且将被标识的存储器帧编号与偏移字节组合以形成用于访问存储器104的物理地址。
在一个实施例中,存储器管理单元112可以包括检查对任务的存储器访问许可的逻辑电路,以阻止某些类型的存储器访问(例如,由偶然访问造成的存储器访问)。在一个实施例中,每个页表条目116可以包括一个或多个状态位,以指示在将页表条目中的页编号映射到存储器帧编号之前需要被检查的某些页访问状态。在一个实施例中,每个页表条目116中的状态位中的一个是用于指示页属于用户类型还是管理程序类型的存储器访问模式状态位U/S 126。
在一个实施例中,页表条目116可以进一步包括访问许可标志段128,用于存储与用户级软件应用相关联的至少一个访问许可标志130和与管理程序级软件应用相关联的至少一个访问许可标志132。在一个实施例中,存储在段128中的访问许可标志中的每一个可以由一个位表示。因此,段128可以包括与用户模式相关联的至少一个访问许可位和与管理程序模式相关联的至少一个访问许可位。
在一个实施例中,与用户模式相关联的访问许可位表示执行禁用(XD’)许可(或者替代地,执行(X’)许可)和写(W’)许可。此外,与用户模式相关联的访问许可位可以可选地包括表示读(R’)许可的第三位。当这些位被设置为“1”时,它们分别表示在页表条目中定义的存储器区域对于具有用户特权的应用是可写的、执行禁用的、或者可读的;当这些位被设置为“0”时,它们分别表示在页表条目中定义的存储器区域对于具有用户特权的应用是不可写的、非执行禁用的、或者不可读的。
类似地,与管理程序相关联的访问许可位表示执行禁用(XD)许可(或者替代地,执行(X)许可)和写(W)许可。此外,与管理程序模式相关联的访问许可位可以可选地包括表示读(R)许可的第三位。当这些位被设置为“1”时,它们分别表示在页表条目中定义的存储器区域对于具有管理程序特权的应用是可写的、执行禁用的、或者可读的;当这些位被设置为“0”时,它们分别表示在页表条目中定义的存储器区域对于具有管理程序特权的应用是不可写的、非执行禁用的、或者不可读的。
因此,本公开的实施例允许操作系统为存储器帧(即,以页粒度)设置用户模式和管理程序模式的访问许可。对于管理程序模式和用户模式,存储器帧可以与不同的访问许可相关联。
在一个实施例中,可以通过采用存储在控制寄存器(例如,CR4)136中的配置标志来选择性地启用或禁用用于反映用户模式和管理程序模式的对存储器访问许可的扩展。如图1所示,处理器102可以包括用于存储配置标志的控制寄存器136。在一个实施例中,配置标志可以是控制寄存器136的位,当被设置为“1”时其指示对用于管理程序模式和用户模式的分开的访问许可标志(例如,132、134)的启用。然而,当一位配置标志被设置为“0”时,访问许可不在管理程序模式与用户模式之间分开。它们可以共享一组访问许可标志(例如,134)。
在一个实施例中,存储器管理单元112可以包括用于存储用于存储器管理的系统数据结构的层级结构的寄存器(未示出)。例如,系统数据结构可以包括多组页目录,其可以包括包含页表114的基址的物理地址的条目(PDE)、与PDE相关联的访问许可、以及存储器管理信息。系统数据结构还可以包括一组页目录指针表(PDPT),其可以包括包含页目录表的基址的物理地址的条目(PDPTE)、与PDPTE相关联的访问许可、以及存储器管理信息。系统数据结构可以包括页映射(第4级(PML4)或第5级(PML5))数据结构,其包括包含PDPT的基址的条目、与页映射数据结构条目相关联的访问许可、以及存储器管理信息。页映射数据结构的基本物理地址可以存储在控制寄存器(例如,CR3)中。
在一个实施例中,当配置标志136被启用时,存储在PDE、PDPTE和页映射的条目中的访问许可还可以包括与用户模式相关联的至少一个访问许可标志和与管理程序模式相关联的至少一个访问许可标志。与PDE、PDPTE和页映射的条目相关联的访问许可标志可以与与页表114相关联的访问许可标志132、134相同,并且替代地,与PDE、PDPTE和页映射的条目相关联的访问许可标志可以与与页表114相关联的访问许可标志132、134不同。
将软件应用采用的虚拟地址变换为与存储器相关联的物理地址的过程称为页变换(或页遍历)。在页变换过程期间,存储器管理单元112可以标识存储在由软件应用请求的PTE中的所有虚拟存储器页并且将这些页变换为存储器帧。在变换期间,存储器管理单元112可以使用逻辑运算符电路122通过逻辑运算来累积访问许可以获得最终访问许可。最终访问许可确定存储器帧的集合的访问许可。
逻辑运算符电路122可以包括用于执行包括AND(与)操作和OR(或)操作的不同类型的逻辑运算的电路。在一个实施例中,通过将AND运算符连续地应用于用户级写许可中的每一个来累积存储在一组页表条目中的用户级写许可(W’),以生成与该组页表条目相关联的累积的用户写许可。类似地,通过将AND运算符连续地应用于管理程序级写许可中的每一个来累积存储在一组页表条目中的管理程序级写许可(W),以生成与该组页表条目相关联的累积的管理程序写许可。
在一个实施例中,通过将OR运算符连续地应用于用户级执行禁用许可中的每一个来累积存储在一组页表条目中的用户级执行禁用(XD’),以生成与该组页表条目相关联的累积的用户执行禁用许可。类似地,通过将OR运算符连续地应用于管理程序级执行禁用许可中的每一个来累积存储在一组页表条目中的管理程序级执行禁用(XD),以生成与该组页表条目相关联的累积的管理程序执行禁用许可。
逻辑运算符电路122可以基于存储在页表条目116中的访问许可标志来生成存储器访问许可,以生成用于访问页表条目116中引用的存储器帧的最终的累积的存储器访问许可。
在一个实施例中,响应于在核110上执行的任务的访问其标识符存储在页表条目116中的存储器帧的请求,存储器管理单元112可以通过如上文讨论的页变换过程来生成累积的存储器访问许可。存储器管理单元112可以确定来自任务的请求是否已经超过分配给该任务的许可。最终的存储器访问许可可以用于控制开关124。如果来自任务的请求在用户模式下或在管理程序模式下未超过最终的存储器访问许可,则开关124可以接合并且允许物理地址传递到总线108以用于访问存储器104。如果来自任务的请求超过最终的存储器访问许可,则门124可以脱离并且阻止物理地址传递到总线108。
除了访问许可标志之外,本公开的实施例还可以为用户模式和管理程序模式分开地提供其他状态标志,诸如例如,存在/不存在位。图2示出根据本公开的实施例的页表200。如图2所示,页表200可以包括页表条目202,其包括用于存储与存储器地址映射有关的信息的字段。页表条目202可以包括用于存储虚拟地址到物理存储器地址映射(即,虚拟页标识符与存储器帧标识符之间的对应关系)的第一字段204和用于存储访问许可标志的第二字段206。访问许可标志可以包括与管理程序模式相关联的写(W)位和/或执行禁用(XD)位,和/或与用户模式相关联的写(W’)位和/或执行禁用(XD’)位。访问许可标志还可以可选地包括与管理程序模式相关联的读位(R)和/或与用户模式相关联的读(R’)位。页表条目202可以进一步包括与管理程序模式相关联的第一存在/不存在位(P)和与用户模式相关联的第二存在/不存在位(P’),从而实现存在/不存在位在管理程序级特权与用户级特权之间的解耦合。在一个实施例中,可以为虚拟地址变换的每个阶段(例如,在PDE、PDPTE、PML4条目中)对P/A位进行解耦合。
图3是根据本公开的实施例的用于确定存储器访问许可的方法300的框图。方法300可以由处理逻辑执行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如在处理设备、通用计算机系统、或专用机器上运行的指令)、固件或其组合。在一个实施例中,方法300可以部分地由图1所示的存储器管理单元112执行。
为了简化说明,方法300被描绘以及被描述成一系列动作。然而,根据本公开的动作可以按各种顺序发生,并且/或者可以同时发生,并且伴随本文未呈现和描述的其他动作发生。此外,并不是所有示出的动作可以被执行以实现根据所公开主题的方法300。此外,本领域技术人员将会理解并领会,方法300可以替代地经由状态图被表示为一系列相关的状态或者被表示为事件。
在一个实施例中,根据管理程序模式和用户模式对所有状态标志(包括访问许可标志(W、XD、R)和存在/不存在状态)解耦合。在另一实施例中,根据管理程序模式和用户模式仅对状态标志的子集解耦合。例如,状态标志的子集可以包括W、XD、R、P以及与存储器帧相关联的任何其他状态标志的任何组合。
参考图3,在302处,响应于软件应用的访问根据虚拟地址指定的存储器段的请求,存储器管理单元可以执行虚拟地址变换。存储器段可以包括可以根据页表条目被映射到物理存储器帧的多个虚拟页。除了存储器地址映射之外,每个页表条目可以存储与管理程序模式相关联的第一组访问许可标志(例如,W、XD)和与用户模式相关联的第二组访问许可标志(例如,W’、XD’)。存储器管理单元可以分别为管理程序模式和用户模式的每个访问许可执行访问许可累积(使用AND运算符和OR运算符)。
在304处,存储器管理单元可以确定存储在控制寄存器(CR4)中的配置标志是否被设置(例如,设置为值“1”)。如果配置标志被设置,则访问许可标志分开地存储在用于管理程序模式的第一组和用于用户模式的第二组中的页表条目中。在306处,存储器管理单元可以检查与管理程序相关联的第一组访问许可标志和与用户相关联的第二组访问许可标志。可以通过第一组访问许可标志来累积用于管理程序模式的最终的管理程序访问许可,并且可以通过第二组访问许可标志来累积用于用户模式的最终的用户访问许可。
如果配置标志未被设置(例如,配置标志=“0”),则不启用对用于管理程序模式和用户模式的访问许可的分离。在308处,存储器管理单元不在管理程序模式与用户模式之间区分访问许可标志。访问许可标志与管理程序和用户相关联。累积的访问许可也用于两者。
在310处,存储器管理单元可以基于累积的访问许可来确定是否应该授权所请求的存储器访问。当控制寄存器(CR4)被设置为“1”时,存储器管理单元可以基于与管理程序模式相关联的累积的访问许可标志来确定来自管理程序级应用的请求,以及基于与用户模式相关联的累积的访问许可标志来确定来自用户级应用的请求。
图4是根据本公开的另一实施例的用于确定用于访问存储器帧的访问许可的方法400的框图。方法400可以由处理逻辑执行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如在处理设备、通用计算机系统、或专用机器上运行的指令)、固件或其组合。在一个实施例中,方法400可以部分地由如图1所示的处理器102的处理逻辑和SoC 100执行。
为了简化说明,方法400被描绘以及被描述成一系列动作。然而,根据本公开的动作可以按各种顺序发生,并且/或者可以同时发生,并且伴随本文未呈现和描述的其他动作发生。此外,并不是所有示出的动作可以被执行以实现根据所公开主题的方法400。此外,本领域技术人员将会理解并领会,方法400可以替代地经由状态图被表示为一系列相关的状态或者被表示为事件。
参考图4,处理器102可以接收来自在处理器上运行的应用的访问存储器的存储器帧的请求。
在402处,处理器102可以接收在处理器上执行的应用的访问存储器的存储器帧的请求。
在404处,处理器可以确定生成请求的应用与第一特权模式还是第二特权模式相关联。在一个实施例中,第一特权模式可以是管理程序模式,而第二特权模式可以是用户模式。
在406处,响应于确定应用与第一特权模式相关联,处理器可以允许基于与第一特权模式相关联的第一多个访问许可标志来访问存储器帧。
在408处,响应于确定应用与第二特权模式相关联,处理器可以允许基于与第二特权模式相关联的第二多个访问许可标志来访问存储器帧,其中第一多个访问许可标志和第二多个访问许可标志存储在存储器中的页表条目中。
图5A是示出根据本公开的一个实施例的用于实现包括异构核的处理设备的处理器500的微架构的框图。具体地,处理器500描绘根据本公开的至少一个实施例的要被包括在处理器中的有序架构核以及寄存器重命名逻辑、乱序发布/执行逻辑。
处理器500包括前端单元530,该前端单元530耦合至执行引擎单元550,前端单元530和执行引擎单元550两者耦合至存储器单元570。处理器500可包括精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代的核类型。作为又一选项,处理器500可包括专用核,诸如例如,网络或通信核、压缩引擎、图形核,等等。在一个实施例中,处理器500可以是多核处理器或者可以是多处理器系统的部分。
前端单元530包括耦合至指令高速缓存单元534的分支预测单元532,该指令高速缓存单元534耦合至指令转换后备缓冲器(TLB)536,该指令转换后备缓冲器536耦合至指令取出单元538,该指令取出单元538耦合至解码单元540。解码单元540(也称为解码器)可对指令解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码器540可使用各种不同的机制来实现。合适机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元534进一步耦合至存储器单元570。解码单元540耦合至执行引擎单元550中的重命名/分配器单元552。
执行引擎单元550包括重命名/分配器单元552,该重命名/分配器单元552耦合至引退单元554和一个或多个调度器单元的集合556。调度器单元556表示任何数目的不同调度器,包括预留站(RS)、中央指令窗等。调度器单元556耦合至物理寄存器堆单元558。物理寄存器堆单元558中的每一个表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型(诸如:标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点等)、状态(诸如,指令指针是将要执行的下一个指令的地址)等。(多个)物理寄存器堆单元558与引退单元554重叠以图示出可以用来实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器和(多个)引退寄存器堆;使用寄存器映射和寄存器池;等等)。
在一个实现方式中,处理器500可以与参考图1描述的处理器102相同。
通常,架构寄存器从处理器外部或从编程者的视角来看是可见的。这些寄存器不限于任何已知的特定电路类型。各种不同类型的寄存器可适用,只要它们能够存储并提供如本文中所描述的数据。合适的寄存器的示例包括但不限于:专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用物理寄存器和动态分配物理寄存器的组合等等。引退单元554和物理寄存器堆单元558耦合至执行集群560。(多个)执行集群560包括一个或多个执行单元562的集合和一个或多个存储器访问单元564的集合。执行单元562可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)进行操作。
尽管一些实施例可以包括专用于特定功能或功能集合的数个执行单元,但是其他实施例可仅包括一个执行单元或全都执行所有功能的多个执行单元。(多个)调度器单元556、(多个)物理寄存器堆单元558和(多个)执行集群560示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线,和/或各自具有其自身的调度器单元、物理寄存器堆单元和/或执行集群的存储器访问流水线——并且在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有(多个)存储器访问单元564的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序发布/执行。
存储器访问单元564的集合耦合至存储器单元570,该存储器单元570可包括数据预取器580、数据TLB单元572、数据高速缓存单元(DCU)574、第二级(L2)高速缓存单元576,仅举数例。在一些实施例中,DCU574也称为第一级数据高速缓存(L1高速缓存)。DCU 574可处置多个未决的高速缓存未命中,并继续服务传入的存储和加载。它还支持维护高速缓存一致性。数据TLB单元572是用于通过映射虚拟和物理地址空间来改善虚拟地址转换速度的高速缓存。在一个示例性实施例中,存储器访问单元564可以包括加载单元、存储地址单元以及存储数据单元,其中的每一个均耦合至存储器单元570中的数据TLB单元572。L2高速缓存单元576可耦合至一个或多个其他级别的高速缓存,并最终耦合至主存储器。
在一个实施例中,数据预取器580通过自动地预测程序将消耗哪些数据来推测性地将数据加载/预取到DCU 574。预取可以指在存储在存储器层级结构(例如,较低等级的高速缓存或存储器)的一个存储器位置中的数据被处理器实际要求之前,将该数据传送至更靠近(例如,产生更少访问等待时间)处理器的较高等级的存储器位置。更具体地,预取可以指在处理器发布对正在被返回的特定数据的需求之前数据从较低级别高速缓存/存储器中的一个到数据高速缓存和/或预取缓冲器的早期检取。
处理器500可以支持一个或多个指令集(例如,x86指令集(具有增加有更新版本的一些扩展)、加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集、加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集(具有可选附加扩展,诸如NEON))。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如超线程化技术中的同时多线程化)。
尽管在乱序执行的上下文中描述寄存器重命名,但应当理解,寄存器重命名可在有序架构中被使用。虽然处理器的所示出的实施例也包括单独的指令和数据高速缓存单元以及共享的L2高速缓存单元,但替代的实施例也可具有用于指令和数据的单个内部高速缓存,诸如例如第一级(L1)内部高速缓存、或多个级别的内部高速缓存。在一些实施例中,系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。替代地,所有高速缓存都可在核和/或处理器的外部。
图5B是示出了根据本公开的一些实施例的由图5A的处理设备500实现的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。图5B中的实线框图示出有序流水线,而虚线框图示出寄存器重命名、乱序发布/执行流水线。在图5B中,处理器流水线500包括取出级502、长度解码级504、解码级506、分配级508、重命名级510、调度(也被称为分派或发布)级512、寄存器读取/存储器读取级514、执行级516、写回/存储器写入级518、异常处置级522和提交级524。在一些实施例中,级502-524的排序可不同于所图示的排序,并且不限于图5B中所示的特定排序。
图6示出根据本公开的一个实施例的用于包括混合核的处理器600的微架构的框图。在一些实施例中,根据一个实施例的指令可以被实现为对具有字节尺寸、字尺寸、双字尺寸、四字尺寸等并具有诸如单精度和双精度整数和浮点数据类型之类的数据类型的数据元素执行操作。在一个实施例中,有序前端601是处理器600的部分,该有序前端601取出将要被执行的指令并准备这些指令以供稍后在处理器流水线中使用。
前端601可包括若干单元。在一个实施例中,指令预取器626从存储器取出指令,并将指令馈送至指令解码器628,指令解码器628随后解码或解释指令。例如,在一个实施例中,解码器将所接收到的指令解码为机器可执行的被称为“微指令”或“微操作”(也称为微op或uop)的一个或多个操作。在其他实施例中,解码器将指令解析为由微架构使用以执行根据一个实施例的操作的操作码和对应的数据及控制字段。在一个实施例中,跟踪高速缓存630接受经解码的微操作,并将它们组装为微操作队列634中的程序有序序列或踪迹,以用于执行。当跟踪高速缓存630遇到复杂指令时,微代码ROM 632提供完成操作所需的微操作。
一些指令被转换为单个微操作,而其他指令需要若干个微操作以完成整个操作。在一个实施例中,如果需要超过四个微操作来完成指令,则解码器628访问微代码ROM 632以进行该指令。对于一个实施例,指令可被解码为少量的微操作以用于在指令解码器628处进行处理。在另一实施例中,如果需要数个微操作来完成操作,则可将指令存储在微代码ROM 632内。跟踪高速缓存630参考进入点可编程逻辑阵列(PLA)来确定正确的微指令指针,以从微代码ROM 632读取微代码序列以完成根据一个实施例的一条或多条指令。在微代码ROM 632完成对于指令的微操作序列化之后,机器的前端601恢复从跟踪高速缓存630提取微操作。
乱序执行引擎603是将指令准备好用于执行的地方。乱序执行逻辑具有数个缓冲器,用于将指令流平滑并且重排序,以优化指令流进入流水线后的性能,并调度指令流以供执行。分配器逻辑分配每个微操作需要的机器缓冲器和资源,以用于执行。寄存器重命名逻辑将逻辑寄存器重命名为寄存器堆中的条目。在指令调度器(存储器调度器、快速调度器602、慢速/通用浮点调度器604、以及简单浮点调度器606)之前,分配器也将每个微操作的条目分配在两个微操作队列中的一个之中,一个微操作队列用于存储器操作,另一个微操作队列用于非存储器操作。微操作调度器602、604、606基于对它们的依赖输入寄存器操作数源的准备就绪以及微操作完成它们的操作所需的执行资源的可用性来确定微操作何时准备好用于执行。一个实施例的快速调度器602可以在主时钟周期的每半个上进行调度,而其他调度器仅可以在每个主处理器时钟周期上调度一次。调度器对分配端口进行仲裁以调度用于执行的微操作。
寄存器堆608和610位于调度器602、604和606以及执行块611中的执行单元612、614、616、618、620、622和624之间。存在分别用于整数和浮点操作的分开的寄存器堆608、610。一个实施例的每个寄存器堆608、610也包括旁路网络,该旁路网络可将刚完成的还没有被写入寄存器堆的结果旁路或转发给新的依赖微操作。整数寄存器堆608和浮点寄存器堆610也能够彼此传递数据。对于一个实施例,整数寄存器堆608被划分为两个分开的寄存器堆,一个寄存器堆用于低阶的32位数据,第二个寄存器堆用于高阶的32位数据。一个实施例的浮点寄存器堆610具有128位宽度的条目,因为浮点指令通常具有从64至128位宽度的操作数。
执行块611包括执行单元612、614、616、618、620、622、624,在这些执行单元612、614、616、618、620、622、624中实际执行指令。该区块包括寄存器堆608、610,寄存器堆608、610存储微指令需要执行的整数和浮点数据操作数值。一个实施例的处理器600由以下数个执行单元所组成:地址生成单元(AGU)612、AGU 614、快速ALU 616、快速ALU 618、慢速ALU620、浮点ALU 622、浮点移动单元624。对于一个实施例,浮点执行块622、624执行浮点、MMX、SIMD、SSE或其他操作。一个实施例的浮点ALU 622包括64位除64位浮点除法器,用于执行除法、平方根、以及余数微操作。对于本公开的诸个实施例,涉及浮点值的指令可使用浮点硬件来处置。
在一个实施例中,ALU操作进入高速ALU执行单元616、618。一个实施例的快速ALU616、618可执行快速操作,有效等待时间为半个时钟周期。对于一个实施例,大多数复杂整数操作进入慢速ALU 620,因为慢速ALU 620包括用于长等待时间类型操作的整数执行硬件,诸如,乘法器、移位器、标记逻辑和分支处理。存储器加载/存储操作由AGU 612、614来执行。对于一个实施例,整数ALU 616、618、620被描述为对64位数据操作数执行整数操作。在替代实施例中,ALU 616、618、620可被实现为支持多种数据位,包括16、32、128、256等等。类似地,浮点单元622、624可被实现为支持具有多种宽度的位的一系列操作数。对于一个实施例,浮点单元622、624可结合SIMD和多媒体指令对128位宽度紧缩数据操作数进行操作。
在一个实施例中,在父加载完成执行之前,微操作调度器602、604、606就分派依赖操作。因为在处理器600中微操作被推测地调度和执行,所以处理器600也包括用于处置存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中会存在已带着临时错误的数据离开调度器的运行中的依赖操作。重放机制追踪使用错误数据的指令,并重新执行这些指令。仅依赖操作需要被重放,而允许独立操作完成。处理器的一个实施例的调度器和重放机制也被设计成用于捕捉用于文本串比较操作的指令序列。
根据本公开的实施例,处理器600还包括用于实现用于存储器消歧的存储地址预测的逻辑。在一个实施例中,处理器600的执行块611可以包括用于实现用于存储器消歧的存储地址预测的存储地址预测器(未示出)。
术语“寄存器”可以指代被用作为指令的一部分以标识操作数的板上处理器存储位置。换句话说,寄存器可以是那些处理器外部(从编程者的角度来看)可用的处理器存储位置。然而,实施例的寄存器不限于意指特定类型的电路。相反,实施例的寄存器能够存储并提供数据,并能够执行本文中所描述的功能。本文所描述的寄存器可以由处理器中的电路使用任何数量的不同技术来实现,这些不同技术诸如专用物理寄存器、利用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄存器堆也包含用于紧缩数据的八个多媒体SIMD寄存器。
对于以下讨论,寄存器应理解为设计成用于保存紧缩数据的数据寄存器,诸如,来自美国加利福尼亚州圣克拉拉市的英特尔公司的启用了MMX技术的微处理器中的64位宽MMXTM寄存器(在一些实例中,也称为‘mm’寄存器)。这些MMX寄存器(可用在整数和浮点形式中)可以与伴随SIMD和SSE指令的紧缩数据元素一起操作。类似地,涉及SSE2、SSE3、SSE4或更新的技术(统称为“SSEx”)的128位宽XMM寄存器也可被用于保持这样紧缩数据操作数。在一个实施例中,在存储紧缩数据和整数数据时,寄存器不需要区分这两种数据类型。在一个实施例中,整数和浮点可被包含在同一寄存器堆中,或被包含在不同的寄存器堆中。此外,在一个实施例中,浮点和整数数据可被存储在不同的寄存器中,或被存储在相同的寄存器中。
现在参考图7,所示的是示出了系统700的框图,在系统700中可以使用本公开的实施例。如图7所示,多处理器系统700是点对点互连系统,并且包括经由点对点互连750而被耦合的第一处理器770和第二处理器780。尽管仅以两个处理器770和780示出,但是应当理解,本公开的实施例的范围不限于此。在其他实施例中,在给定处理器中可存在一个或多个附加处理器。在一个实施例中,多处理器系统700可以实现本文所述的混合核。
处理器770和780被示为分别包括集成存储器控制器单元772和782。处理器770还包括作为其总线控制器单元的一部分的点对点(P-P)接口776和778;类似地,第二处理器780包括P-P接口786和788。处理器770、780可以经由使用点对点(P-P)接口电路778、788的P-P接口750来交换信息。如图7中所示,IMC 772和782将处理器耦合至相应的存储器,即存储器732和存储器734,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器770、780可各自经由使用点对点接口电路776、794、786、798的各个P-P接口752、754与芯片组790交换信息。芯片组790还可经由高性能图形接口739来与高性能图形电路738交换信息。
共享高速缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片组790可经由接口796耦合至第一总线716。在一个实施例中,第一总线716可以是外围组件互连(PCI)总线或诸如PCI高速总线或另一第三代I/O互连总线之类的总线,但是本公开的范围不限于此。
如图7所示,各种I/O设备714可连同总线桥718一起耦合到第一总线716,总线桥718将第一总线716耦合到第二总线720。在一个实施例中,第二总线720可以是低引脚数(LPC)总线。在一个实施例中,各种设备可以耦合至第二总线720,包括例如,键盘和/或鼠标722、通信设备727以及可包括指令/代码和数据730的存储单元728(诸如,盘驱动器或其他大容量存储设备)。此外,音频I/O 724可被耦合至第二总线720。注意,其他架构是可能的。例如,代替图7的点对点架构,系统可以实现多分支总线或其他这类架构。
现在参考图8,所示的是系统800的框图,在系统800中本公开的一个实施例可以操作。系统800可包括耦合至图形存储器控制器中枢(GMCH)820的一个或多个处理器810、815。附加处理器815的任选性在图8中利用虚线来表示。在一个实施例中,处理器810、815实现根据本公开的实施例的混合核。
每个处理器810、815可以是如上所述的电路、集成电路、处理器和/或硅集成电路的某个版本。然而,应当注意,集成图形逻辑和集成存储器控制单元不可能出现在处理器810、815中。图8示出GMCH 820可耦合至存储器840,该存储器840可以是例如动态随机存取存储器(DRAM)。对于至少一个实施例,DRAM可与非易失性高速缓存相关联。
GMCH 820可以是芯片组或芯片组的部分。GMCH 820可与(多个)处理器810、815通信,并控制(多个)处理器810、815与存储器840之间的交互。GMCH 820还可担当(多个)处理器810、815和系统800的其他元件之间的加速总线接口。对于至少一个实施例,GMCH 820经由诸如前端总线(FSB)895之类的多分支总线与(多个)处理器810、815进行通信。
此外,GMCH 820被耦合至显示器845(诸如平板或触摸屏显示器)。GMCH 820可包括集成图形加速器。GMCH 820被进一步耦合至输入/输出(I/O)控制器中枢(ICH)850,该输入/输出(I/O)控制器中枢(ICH)850可用于将各种外围设备耦合至系统800。在图8的实施例中作为示例示出了外部图形设备860以及另一外围设备870,外部图形设备860可以是耦合至ICH 850的分立图形设备。
替代地,附加的或不同的处理器也可存在于系统800中。例如,(多个)附加的处理器815可包括与处理器810相同的(多个)附加的处理器、与处理器810异构的或不对称的(多个)附加的处理器、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器。在包括架构、微架构、热、功耗特征等一系列品质度量的方面,处理器810、815之间存在各种差异。这些差异可将其自身有效显示为处理器810和815之间的不对称性和异构性。对于至少一个实施例,各种处理器810和815可驻留在同一管芯封装中。
现在参考图9,所示的是系统900的框图,在系统900中本公开的实施例可以操作。图9图示出处理器970和980。在一个实施例中,处理器970、980可以实现上文所述的混合核。处理器970、980可以分别包括集成存储器和I/O控制逻辑(“CL”)972和982,并且分别经由点对点(P-P)接口978和988之间的点对点互连950彼此相互通信。如所示,处理器970、980各自通过相应P-P接口976至994以及986至998经由点对点互连952和954与芯片组990通信。对于至少一个实施例,CL 972、982可包括集成存储器控制器单元。CL 972、982可包括I/O控制逻辑。如所描绘,存储器932、934耦合至CL 972、982,并且I/O设备914也耦合至控制逻辑972、982。传统I/O设备915经由接口996耦合至芯片组990。
实施例可在许多不同的系统类型中实现。图10是根据本公开的实施例的SoC 1000的框图。虚线框是更先进的SoC的任选特征。在图10中,互连单元1012耦合至:应用处理器1020,包括一组一个或多个核1002A-N以及共享高速缓存单元1006;系统代理单元1010;总线控制器单元1016;集成存储器控制器单元1014;一组或一个或多个媒体处理器1018,可包括集成图形逻辑1008、用于提供静态和/或视频照相功能的图像处理器1024、提供硬件音频加速的音频处理器1026、提供视频编码/解码加速的视频处理器1028、静态随机存取存储器(SRAM)单元1030;直接存储器存取(DMA)单元1032;以及显示单元1040,用于耦合至一个或多个外部显示器。在一个实施例中,存储器模块可被包括在(多个)集成存储器控制器单元1014中。在另一个实施例中,存储器模块可以被包括在可被用来访问和/或控制存储器的SoC 1000的一个或多个其他组件中。应用处理器1020可以包括存储地址预测器,用于实现本文实施例所述的混合核。
存储器层级结构包括核内的一个或多个级别的高速缓存、一组或一个或多个共享高速缓存单元1006、以及耦合至集成存储器控制器单元1014的集合的外部存储器(未示出)。共享高速缓存单元1006的集合可包括一个或多个中间级别的高速缓存、末级高速缓存(LLC)和/或以上各项的组合,中间级别的高速缓存诸如第2级(L2)、第3级(L3)、第4级(L4)或其他级别的高速缓存。
在一些实施例中,核1002A-N中的一个或多个能够实现多线程化。系统代理1010包括协调并操作核1002A-N的那些组件。系统代理单元1010可包括例如功率控制单元(PCU)和显示单元。PCU可以是对核1002A-N以及集成图形逻辑1008的功率状态进行调节所需的逻辑和组件,或可包括这些逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1002A-N在架构和/或指令集方面可以是同构或异构的。例如,核1002A-N中的一些可以是有序的,而另一些是乱序的。作为另一示例,核1002A-N中的两个或更多个能够执行同一指令集,而其他核仅能够执行该指令集的子集或不同的指令集。
应用处理器1020可以是通用处理器,诸如,酷睿(CoreTM)i3、i5、i7、2Duo和Quad、至强(XeonTM)、安腾(ItaniumTM)、凌动(AtomTM)或QuarkTM处理器,这些处理器均可以从加利福尼亚州圣克拉拉市的英特尔TM公司获得。替代地,应用处理器1020可以来自另一公司,诸如ARM控股TM公司、MIPSTM等。应用处理器1020可以是专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等等。应用处理器1020可被实现在一个或多个芯片上。应用处理器1020可以是一个或多个衬底的部分,和/或可以使用诸如例如BiCMOS、CMOS或NMOS之类的数种工艺技术中的任何技术实现在一个或多个衬底上。
图11是根据本公开的芯片上系统(SoC)设计的实施例的框图。作为特定的说明性示例,SoC 1100被包括在用户装备(UE)中。在一个实施例中,UE指可由最终用户用于通信的任何设备,诸如,手持电话、智能电话、平板、超薄笔记本、具有宽带适配器的笔记本,或任何其他类似的通信设备。UE通常连接到基站或节点,该基站或节点本质上潜在地对应于GSM网络中的移动站(MS)。
在此,SOC 1100包括2个核——1106和1107。核1106和1107可符合指令集架构,诸如,基于架构酷睿/>的处理器、超微半导体公司(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计,或它们的客户,以及它们的被许可方或采纳方。核1106和1107被耦合至高速缓存控件1108,该高速缓存控件1108与总线接口单元1109和L2高速缓存1110相关联以与系统1100的其他部分通信。互连1110包括潜在地实现所描述公开的一个或多个方面的芯片上互连,诸如IOSF、AMBA或以上所讨论的其他互连。在一个实施例中,核1106、1107可以实现本文实施例所述的混合核。
互连1110提供到其他组件的通信信道,其他组件诸如用于与用户身份模块(SIM)卡对接的SIM 1130、用于保存供核1106和1107执行以初始化和引导SoC 1100的引导代码的引导ROM 1135、用于与外部存储器(例如,DRAM 1160)对接的SDRAM控制器1140、用于与非易失性存储器(例如,闪存1165)对接的闪存控制器1145、用于与外围设备对接的外围控制装置1150(例如,串行外围接口)、用于显示和接收输入(例如,允许触摸的输入)的视频编解码器1120和视频接口1125、用于执行图形相关的计算的GPU 1115等等。这些接口中的任何一者可包括本文中所描述公开的多个方面。另外,系统1100图示出用于通信的外围设备,诸如蓝牙模块1170、3G调制解调器1175、GPS 1180以及Wi-Fi 1185。
图12图示出计算机系统1200的按照示例形式的机器的示意图,在该计算机系统1200内,可执行用于使机器执行本文中所讨论的方法中的任何一者或多者的一组指令。在替代实施例中,可以在LAN、内联网、外联网或互联网中将机器连接(例如,联网)到其他机器。机器可以在客户机-服务器网络环境中作为服务器或客户机设备操作,或者在对等(或分布式)网络环境中作为对等机器操作。该机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web设备、服务器、网络路由器、交换机或桥、或者能够执行指定由该机器执行的动作的一组指令(顺序的或以其他方式)的任何机器。此外,虽然仅示出单个机器,但是,术语“机器”也应当认为包括单独地或联合地执行一组(或多组)指令以执行本文所讨论的方法中的任何一种或更多种方法的机器的任何集合。
计算机系统1200包括处理设备1202、主存储器1204(例如,只读存储器(ROM)、闪存、动态随机存取存储器(DRAM)(诸如,同步DRAM(SDRAM)或DRAM(RDRAM)等)、静态存储器1206(例如,闪存、静态随机存取存储器(SRAM)等)以及数据存储设备1218,它们经由总线1230彼此通信。
处理设备1202表示一个或多个通用处理设备,诸如,微处理器、中央处理单元等等。更具体地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器、或实现其他指令集的处理器、或实现指令集的组合的处理器。处理设备1202也可以是一个或多个专用处理设备,诸如,专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等等。在一个实施例中,处理设备1202可包括一个或处理核。处理设备1202被配置成执行用于执行本文中所讨论的操作和步骤的处理逻辑1226。在一个实施例中,处理设备1202与参考本公开的实施例所述的图1描述的处理器架构100相同。
计算机系统1200可以进一步包括通信地耦合至网络1220的网络接口设备1208。计算机系统1200还可包括视频显示单元1210(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备1212(例如,键盘)、光标控制设备1214(例如,鼠标)、以及信号生成设备1216(例如,扬声器)。此外,计算机系统1200可包括图形处理单元1222、视频处理单元1228以及音频处理单元1232。
数据存储设备1218可以包括机器可访问存储介质1224,其上存储有实现本文所述功能的任何一个或多个方法的软件1226,诸如如上文所述实现用于存储器消歧的存储地址预测。在由计算机系统1200对软件1226的执行期间,软件1226也可完全或至少部分地作为指令1226驻留在主存储器1204内和/或作为处理逻辑1226驻留在处理设备1202内;该主存储器1204和处理设备1202也构成机器可访问存储介质。
机器可读存储介质1224也可用于存储实现用于诸如根据本公开的实施例所述的混合核的存储地址预测的指令1226。虽然机器可访问存储介质1128在示例实施例中被示出为单个介质,但术语“机器可访问存储介质”应当视为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。还应当认为术语“机器可访问存储介质”包括能够存储、编码或携带由机器执行并且使该机器执行本公开的任何一个或多个方法的一组指令的任何介质。应当相应地认为术语“机器可访问存储介质”包括但不限于:固态存储器以及光和磁介质。
下列示例涉及进一步的实施例。示例1是一种处理器,包括:处理核;以及存储器管理单元,通信地耦合至处理核,包括:存储设备,用于存储页表条目(PTE),包括:从由在处理核上运行的应用引用的虚拟存储器页到存储器的存储器帧的标识符的映射,与在第一特权模式下访问存储器帧相关联的第一多个访问许可标志,以及与在第二特权模式下访问存储器相关联的第二多个访问许可标志,其中存储器管理单元用于允许基于第一多个访问许可标志或第二多个访问许可标志中的一个来访问存储器帧。
在示例2中,如示例1的主题可以可选地提供:第一特权模式是管理程序模式,并且其中第一多个访问许可标志包括与在管理程序模式下访问存储器帧相关联的读访问标志、写访问标志、或执行禁用访问标志中的至少一个。
在示例3中,如示例1和2中的任一项的主题可以可选地提供:PTE进一步包括与在管理程序模式下访问存储器帧相关联的第一页有效性状态标志。
在示例4中,如示例1的主题可以可选地提供:第二特权模式是用户模式,并且其中第二多个访问许可标志包括与在用户模式下访问存储器帧相关联的读访问标志、写访问标志、或执行禁用访问标志中的至少一个。
在示例5中,如示例1和4中的任一项的主题可以可选地提供:PTE进一步包括与在用户模式下访问存储器帧相关联的第二页有效性状态标志。
在示例6中,如示例1的主题可以可选地提供:为了允许访问存储器,存储器管理单元用于:标识与用于访问存储器的请求相关联的多个存储器帧;通过将逻辑运算连续地应用于多个访问许可标志值来累积最终访问许可,多个访问许可标志值各自由多个存储器帧中的相应一个引用,其中多个访问许可标志值是第一多个访问许可标志值和第二多个访问许可标志值中的一个;以及允许基于最终访问许可来访问存储器。
在示例7中,如示例1和6中的任一项的主题可以进一步包括逻辑运算符电路,用于执行逻辑运算,其中逻辑运算包括AND运算符或OR运算符中的一个。
在示例8中,如示例7的主题可以可选地提供:逻辑运算符电路用于将AND运算符应用于写访问许可,并且其中逻辑运算符电路用于将OR运算符应用于执行禁用访问许可。
在示例9中,如示例8的主题可以进一步包括控制寄存器,通信地耦合至处理核,其中控制寄存器用于存储配置标志,配置标志当被设置时在PTE中启用访问许可标志在第一特权模式和第二特权模式之间的解耦合。
示例10是一种芯片上系统,包括:存储器,用于存储页表条目(PTE);以及处理器,通信地耦合至存储器,包括:存储器管理单元,通信地耦合至处理核,包括:存储设备,用于存储从存储器中加载的PTE,PTE包括:从由在处理核上运行的应用引用的虚拟存储器页到存储器的存储器帧的标识符的映射,与在第一特权模式下访问存储器帧相关联的第一多个访问许可标志,以及与在第二特权模式下访问存储器相关联的第二多个访问许可标志,其中存储器管理单元用于允许基于第一多个访问许可标志或第二多个访问许可标志中的一个来访问存储器帧。
在示例11中,如示例10的主题可以可选地提供:第一特权模式是管理程序模式,并且其中第一多个访问许可标志包括与在管理程序模式下访问存储器帧相关联的读访问标志、写访问标志、或执行禁用访问标志中的至少一个。
在示例12中,如示例10和11的主题可以可选地提供:PTE进一步包括与在管理程序模式下访问存储器帧相关联的第一页有效性状态标志。
在示例13中,如示例10的主题可以可选地提供:第二特权模式是用户模式,并且其中第二多个访问许可标志包括与在用户模式下访问存储器帧相关联的读访问标志、写访问标志、或执行禁用访问标志中的至少一个。
在示例14中,如示例10和13的主题可以可选地提供:PTE进一步包括与在用户模式下访问存储器帧相关联的第二页有效性状态标志。
在示例15中,如示例10的主题可以可选地提供:为了允许访问存储器,存储器管理单元用于:标识与用于访问存储器的请求相关联的多个存储器帧;通过将逻辑运算连续地应用于多个访问许可标志值来累积最终访问许可,多个访问许可标志值各自由多个存储器帧中的相应一个引用,其中多个访问许可标志值是第一多个访问许可标志值和第二多个访问许可标志值中的一个;以及允许基于最终访问许可来访问存储器。
在示例16中,如示例10和15的主题可以进一步包括逻辑运算符电路,用于执行逻辑运算,其中逻辑运算包括AND运算符或OR运算符中的一个。
在示例17中,如示例16的主题可以可选地提供:逻辑运算符电路用于将AND运算符应用于写访问许可,并且其中逻辑运算符电路用于将OR运算符应用于执行禁用访问许可。
在示例18中,如示例10的主题可以可选地提供:处理器进一步包括控制寄存器,通信地耦合至处理核,其中控制寄存器用于存储配置标志,配置标志当被设置时在PTE中启用访问许可标志在第一特权模式和第二特权模式之间的解耦合。
示例19是一种方法,包括:由执行应用的处理器接收访问存储器的存储器帧的请求;确定生成请求的应用与第一特权模式还是第二特权模式相关联;响应于确定应用与第一特权模式相关联,允许基于与第一特权模式相关联的第一多个访问许可标志来访问存储器帧;以及响应于确定应用与第二特权模式相关联,允许基于与第二特权模式相关联的第二多个访问许可标志来访问存储器帧,其中第一多个访问许可标志和第二多个访问许可标志存储在存储器中的页表条目中。
在示例20中,如示例1的主题可以可选地提供:第一特权模式是管理程序模式,并且第二特权模式是用户模式,其中第一多个访问许可标志包括与在管理程序模式下访问存储器相关联的读访问标志、写访问标志、或执行禁用访问标志中的至少一个,并且其中第二多个访问许可标志包括与在用户模式下访问存储器帧相关联的读访问标志、写访问标志、或执行禁用访问标志中的至少一个。
示例21是一种设备,包括:用于执行如示例19和20中的任一项的方法的装置。
示例22是一种机器可读非暂态介质,具有存储于其上的程序代码,程序代码当由处理器执行时执行操作,包括:由执行应用的处理器接收访问存储器的存储器帧的请求;确定生成请求的应用与第一特权模式还是第二特权模式相关联;响应于确定应用与第一特权模式相关联,允许基于与第一特权模式相关联的第一多个访问许可标志来访问存储器帧;以及响应于确定应用与第二特权模式相关联,允许基于与第二特权模式相关联的第二多个访问许可标志来访问存储器帧,其中第一多个访问许可标志和第二多个访问许可标志存储在存储器中的页表条目中。
在示例23中,如示例22的主题可以可选地提供:第一特权模式是管理程序模式,并且第二特权模式是用户模式,其中第一多个访问许可标志包括与在管理程序模式下访问存储器相关联的读访问标志、写访问标志、或执行禁用访问标志中的至少一个,并且其中第二多个访问许可标志包括与在用户模式下访问存储器帧相关联的读访问标志、写访问标志、或执行禁用访问标志中的至少一个。
尽管已经参考有限数量的实施例描述了本公开,但是本领域技术人员将从其中领会到很多的修改和变型。所附权利要求书旨在涵盖落入本公开的真实精神和范围内的所有此类修改和变型。
设计可经历从创造到仿真到制造的各阶段。表示设计的数据可用数种方式来表示该设计。首先,如仿真中有用的,可使用硬件描述语言或另一功能性描述语言来表示硬件。另外,可在设计过程的一些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某一阶段都达到表示硬件模型中各种设备的物理布置的数据水平。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的掩模的不同掩模层上存在或不存在各种特征的数据。在设计的任何表示中,数据可被存储在任何形式的机器可读介质中。存储器或磁或光存储(诸如,盘)可以是存储经由光学或电学波来传送的信息的机器可读介质,这些光学或电学波被调制或以其他方式生成以传送这些信息。当指示或承载代码或设计的电学载波被传送达到实现电信号的复制、缓冲或重新发送的程度时,即产生了新的副本。因此,通信提供商或网络提供商会在有形机器可读介质上至少临时地存储具体化本公开的诸个实施例的技术的物品(诸如,编码在载波中的信息)。
如本文中所使用的模块指硬件、软件、和/或固件的任何组合。作为示例,模块包括与非瞬态介质相关联的诸如微控制器之类的硬件,该非瞬态介质用于存储适于由该微控制器执行的代码。因此,在一个实施例中,对模块的引用是指硬件,该硬件被专门配置成识别和/或执行要保存在非暂态介质上的代码。此外,在另一实施例中,模块的使用是指包括代码的非暂态介质,该代码专门适于由微控制器执行以进行预定的操作。并且如可以被推断,在又一实施例中,术语模块(在此示例中)可指微控制器和非暂态介质的组合。通常,被图示为分开的模块的边界一般不同并且潜在地重叠。例如,第一和第二模块可共享硬件、软件、固件、或它们的组合,同时潜在地保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括诸如晶体管、寄存器之类的硬件或诸如可编程逻辑器件之类的其他硬件。
在一个实施例中,使用短语“被配置成”指的是安排、合在一起、制造、提供销售、进口和/或设计装置、硬件、逻辑或元件以执行指定或所确定的任务。在该示例中,如果不是正在操作的装置或其元件被设计、耦合、和/或互连以执行指定任务,则该不是正在操作的装置或其元件仍然“被配置成”执行所述指定任务。作为纯说明性示例,在操作期间,逻辑门可提供0或1。但“被配置成”向时钟提供启用信号的逻辑门不包括可提供1或0的每一潜在逻辑门。相反,该逻辑门是以在操作期间1或0的输出用于启用时钟的某种方式来耦合的逻辑门。再次注意,使用术语“被配置成”不要求操作,而是关注于装置、硬件、和/或元件的潜在状态,其中在该潜在状态中,该装置、硬件和/或元件被设计成在该装置、硬件和/或元件正在操作时执行特定任务。
此外,在一个实施例中,使用短语‘用于’、‘能够/能够用于’和/或‘能用于’指的是按如下方式设计的一些装置、逻辑、硬件、和/或元件:以指定方式启用对该装置、逻辑、硬件、和/或元件的使用。如以上所注意,在一个实施例中,用于、能够、或能用于的使用指的是装置、逻辑、硬件、和/或元件的潜在状态,其中该装置、逻辑、硬件、和/或元件不是正在操作,而是以此类方式被设计以便以指定方式启用对装置的使用。
如本文中所使用,值包括数字、状态、逻辑状态、或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值、或多个逻辑值的使用也被称为1和0,这简单地表示了二进制逻辑状态。例如,1指的是高逻辑电平,0指的是低逻辑电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元能够保持单个逻辑的值或多个逻辑的值。不过,也使用了计算机系统中的值的其他表示。例如,十进制数10还可以被表示为二进制值910和十六进制字母A。因此,值包括能够被保存在计算机系统中的信息的任何表示。
而且,状态也可由值或值的部分来表示。作为示例,诸如逻辑1之类的第一值可表示默认或初始状态,而诸如逻辑0之类的第二值可表示非默认状态。此外,在一个实施例中,术语重置和置位分别指的是默认和已更新的值或状态。例如,默认值潜在地包括高逻辑值,即,重置,而已更新的值潜在地包括低逻辑值,即,置位。注意,可利用值的任何组合来表示任何数量的状态。
上述方法、硬件、软件、固件或代码的实施例可经由存储在机器可访问、机器可读、计算机可访问、或计算机可读介质上可由处理元件执行的指令或代码来实现。非瞬态机器可访问/可读介质包括提供(即,存储和/或发送)诸如由计算机或电子系统之类的机器可读的形式的信息的任何机制。例如,非瞬态机器可访问介质包括:随机存取存储器(RAM),诸如,静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;用于保存从瞬态(传播)信号(例如,载波、红外信号、数字信号)接收的信息的其他形式的存储设备;等等,这些非瞬态机器可访问介质与可从其接收信息的非瞬态介质相区别。
被用于对逻辑进行编程以执行本公开的实施例的指令可被存储在系统中的存储器(诸如,DRAM、高速缓存、闪存、或其他存储)内。此外,指令可经由网络或通过其他计算机可读介质来分发。因此,机器可读介质可包括用于以机器(诸如,计算机)可读形式存储或传送信息的任何机制,但不限于:软盘、光盘、紧凑盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存存储器、或在经由互联网通过电、光、声、或其他形式的传播信号(诸如,载波、红外信号、数字信号等)传送信息中所用的有形机器可读存储器。因此,计算机可读介质包括适用于存储或传送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
贯穿本说明书,对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本公开的至少一个实施例中。因此,在整个说明书的多个位置出现短语“在一个实施例中”或“在实施例中”不一定全部是指同一实施例。此外,在一个或多个实施例中,能以任何合适的方式来组合特定的特征、结构或特性。
在上述说明书中,已经参考特定示例性实施例给出了具体实施方式。然而,将显而易见的是,可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本公开的更宽泛精神和范围。因此,应当认为说明书和附图是说明性的而不是限制性的。此外,实施例和其他示例性语言的上述使用不一定是指同一实施例或同一示例,而可能是指不同和独特的实施例,也有可能是同一实施例。
Claims (21)
1.一种处理系统,包括:
处理核;以及
存储器管理单元,通信地耦合至所述处理核,包括:
存储设备,用于存储页表条目PTE,包括:
从由在所述处理核上运行的应用引用的虚拟存储器页到存储器的存储器帧的标识符的映射,
与在第一特权模式下访问所述存储器帧相关联的第一多个访问许可标志,以及
与在第二特权模式下访问所述存储器相关联的第二多个访问许可标志,
其中所述存储器管理单元用于:
当特权配置标志被设置为启用时,允许基于所述第一多个访问许可标志在所述第一特权模式下访问所述存储器帧;
当所述特权配置标志被设置为启用时,允许基于所述第二多个访问许可标志在所述第二特权模式下访问所述存储器帧;以及
当所述特权配置标志被禁用时,基于来自所述第一多个访问许可标志和所述第二多个访问许可标志的共同共享的访问许可标志,允许在所述第一特权模式或所述第二特权模式下访问所述存储器帧。
2.如权利要求1所述的处理系统,其特征在于,所述第一特权模式是管理程序模式,并且其中所述第一多个访问许可标志包括与在所述管理程序模式下访问所述存储器帧相关联的读访问标志、写访问标志、或执行禁用访问标志中的至少一个。
3.如权利要求2所述的处理系统,其特征在于,所述PTE进一步包括与在所述管理程序模式下访问所述存储器帧相关联的第一页有效性状态标志。
4.如权利要求1所述的处理系统,其特征在于,所述第二特权模式是用户模式,并且其中所述第二多个访问许可标志包括与在所述用户模式下访问所述存储器帧相关联的读访问标志、写访问标志、或执行禁用访问标志中的至少一个。
5.如权利要求4所述的处理系统,其特征在于,所述PTE进一步包括与在所述用户模式下访问所述存储器帧相关联的第二页有效性状态标志。
6.如权利要求1所述的处理系统,其特征在于,为了允许访问所述存储器,所述存储器管理单元用于:
标识与用于访问所述存储器的请求相关联的多个存储器帧;
通过将逻辑运算连续地应用于多个访问许可标志值来累积最终访问许可,所述多个访问许可标志值各自由所述多个存储器帧中的相应一个引用,其中所述多个访问许可标志值是所述第一多个访问许可标志值和所述第二多个访问许可标志值中的一个;以及
允许基于所述最终访问许可来访问所述存储器。
7.如权利要求1或6所述的处理系统,其特征在于,进一步包括逻辑运算符电路,用于执行所述逻辑运算,其中所述逻辑运算包括AND运算符或OR运算符中的一个。
8.如权利要求7所述的处理系统,其特征在于,所述逻辑运算符电路用于将所述AND运算符应用于写访问许可,并且其中所述逻辑运算符电路用于将所述OR运算符应用于执行禁用访问许可。
9.如权利要求1所述的处理系统,其特征在于,进一步包括:
控制寄存器,通信地耦合至所述处理核,其中所述控制寄存器用于存储配置标志,所述配置标志当被设置时在所述PTE中启用访问许可标志在所述第一特权模式和所述第二特权模式之间的解耦合。
10.一种芯片上系统SoC,包括:
存储器,用于存储页表条目PTE;以及
处理器,通信地耦合至所述存储器,包括:
处理核;以及
存储器管理单元,通信地耦合至所述处理核,包括:
存储设备,用于存储从所述存储器中加载的所述PTE,所述PTE包括:
从由在所述处理核上运行的应用引用的虚拟存储器页到存储器的存储器帧的标识符的映射,
与在第一特权模式下访问所述存储器帧相关联的第一多个访问许可标志,以及
与在第二特权模式下访问所述存储器相关联的第二多个访问许可标志,
其中所述存储器管理单元用于:
当特权配置标志被设置为启用时,允许基于所述第一多个访问许可标志在所述第一特权模式下访问所述存储器帧;以及当所述特权配置标志被设置为启用时,允许基于所述第二多个访问许可标志在所述第二特权模式下访问所述存储器帧;以及
当所述特权配置标志被禁用时,基于来自所述第一多个访问许可标志和所述第二多个访问许可标志的共同共享的访问许可标志,允许在所述第一特权模式或所述第二特权模式下访问所述存储器帧。
11.如权利要求10所述的SoC,其特征在于,所述第一特权模式是管理程序模式,并且其中所述第一多个访问许可标志包括与在所述管理程序模式下访问所述存储器帧相关联的读访问标志、写访问标志、或执行禁用访问标志中的至少一个。
12.如权利要求11所述的SoC,其特征在于,所述PTE进一步包括与在所述管理程序模式下访问所述存储器帧相关联的第一页有效性状态标志。
13.如权利要求10所述的SoC,其特征在于,所述第二特权模式是用户模式,并且其中所述第二多个访问许可标志包括与在所述用户模式下访问所述存储器帧相关联的读访问标志、写访问标志、或执行禁用访问标志中的至少一个。
14.如权利要求13所述的SoC,其特征在于,所述PTE进一步包括与在所述用户模式下访问所述存储器帧相关联的第二页有效性状态标志。
15.如权利要求10所述的SoC,其特征在于,为了允许访问所述存储器,所述存储器管理单元用于:
标识与用于访问所述存储器的请求相关联的多个存储器帧;
通过将逻辑运算连续地应用于多个访问许可标志值来累积最终访问许可,所述多个访问许可标志值各自由所述多个存储器帧中的相应一个引用,其中所述多个访问许可标志值是所述第一多个访问许可标志值和所述第二多个访问许可标志值中的一个;以及
允许基于所述最终访问许可来访问所述存储器。
16.如权利要求10或15所述的SoC,其特征在于,进一步包括逻辑运算符电路,用于执行所述逻辑运算,其中所述逻辑运算包括AND运算符或OR运算符中的一个。
17.如权利要求16所述的SoC,其特征在于,所述逻辑运算符电路用于将所述AND运算符应用于写访问许可,并且其中所述逻辑运算符电路用于将所述OR运算符应用于执行禁用访问许可。
18.如权利要求10所述的SoC,其特征在于,所述处理器进一步包括:
控制寄存器,通信地耦合至所述处理核,其中所述控制寄存器用于存储配置标志,所述配置标志当被设置时在所述PTE中启用访问许可标志在所述第一特权模式和所述第二特权模式之间的解耦合。
19.一种用于存储器管理的方法,包括:
由执行应用的处理器接收访问存储器的存储器帧的请求;
确定特权配置标志是否被设置成基于第一特权模式或第二特权模式来启用对所述存储器帧的访问;
确定生成所述请求的所述应用与所述第一特权模式还是所述第二特权模式相关联;
当所述特权配置标志被设置为启用时,允许基于第一多个访问许可标志在所述第一特权模式下访问所述存储器帧;
当所述特权配置标志被设置为启用时,允许基于第二多个访问许可标志在所述第二特权模式下访问所述存储器帧,其中所述第一多个访问许可标志和所述第二多个访问许可标志存储在所述存储器中的页表条目中;以及
当所述特权配置标志被禁用时,基于来自所述第一多个访问许可标志和所述第二多个访问许可标志的共同共享的访问许可标志,允许在所述第一特权模式或所述第二特权模式下访问所述存储器帧。
20.如权利要求19所述的方法,其特征在于,所述第一特权模式是管理程序模式,并且所述第二特权模式是用户模式,其中所述第一多个访问许可标志包括与在所述管理程序模式下访问所述存储器相关联的读访问标志、写访问标志、或执行禁用访问标志中的至少一个,并且其中所述第二多个访问许可标志包括与在所述用户模式下访问所述存储器帧相关联的读访问标志、写访问标志、或执行禁用访问标志中的至少一个。
21.一种用于存储器管理的设备,包括:用于执行如权利要求19或20所述的方法的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/249,521 | 2016-08-29 | ||
US15/249,521 US10114768B2 (en) | 2016-08-29 | 2016-08-29 | Enhance memory access permission based on per-page current privilege level |
PCT/US2017/043388 WO2018044424A1 (en) | 2016-08-29 | 2017-07-21 | Enhance memory access permission based on per-page current privilege level |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109564552A CN109564552A (zh) | 2019-04-02 |
CN109564552B true CN109564552B (zh) | 2024-02-23 |
Family
ID=61242745
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780047225.4A Active CN109564552B (zh) | 2016-08-29 | 2017-07-21 | 用于存储器管理的方法、设备和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10114768B2 (zh) |
EP (1) | EP3504629B1 (zh) |
CN (1) | CN109564552B (zh) |
WO (1) | WO2018044424A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11461456B1 (en) * | 2015-06-19 | 2022-10-04 | Stanley Kevin Miles | Multi-transfer resource allocation using modified instances of corresponding records in memory |
US10713177B2 (en) | 2016-09-09 | 2020-07-14 | Intel Corporation | Defining virtualized page attributes based on guest page attributes |
US10768962B2 (en) * | 2016-12-19 | 2020-09-08 | Vmware, Inc. | Emulating mode-based execute control for memory pages in virtualized computing systems |
US20180285262A1 (en) * | 2017-03-31 | 2018-10-04 | Intel Corporation | Techniques for shared virtual memory access protection |
EP3690836A4 (en) * | 2017-10-16 | 2020-10-14 | Huawei Technologies Co., Ltd. | SAFETY ELEMENT AND ASSOCIATED DEVICE |
CN112486403A (zh) * | 2019-09-12 | 2021-03-12 | 伊姆西Ip控股有限责任公司 | 管理存储对象的元数据的方法、装置和计算机程序产品 |
US11163569B2 (en) * | 2019-12-28 | 2021-11-02 | Intel Corporation | Hardware apparatuses, methods, and systems for individually revocable capabilities for enforcing temporal memory safety |
US11334501B2 (en) * | 2020-01-28 | 2022-05-17 | Hewlett Packard Enterprise Development Lp | Access permissions for memory regions |
CN113435601A (zh) * | 2020-03-23 | 2021-09-24 | 华为技术有限公司 | 数据预取方法、装置以及存储设备 |
CN112181493B (zh) * | 2020-09-24 | 2022-09-13 | 成都海光集成电路设计有限公司 | 寄存器网络架构和寄存器访问方法 |
US11513963B2 (en) * | 2021-03-11 | 2022-11-29 | Western Digital Technologies. Inc. | Data storage device and method for application identifier handler heads-up for faster storage response |
US11995178B2 (en) * | 2021-12-31 | 2024-05-28 | International Business Machines Corporation | Protection of kernel from code reuse attacks |
GB2624257A (en) * | 2022-11-08 | 2024-05-15 | Cirrus Logic Int Semiconductor Ltd | Systems and methods for access protection of system peripherals |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1702634A (zh) * | 2004-05-27 | 2005-11-30 | 国际商业机器公司 | 便利无环境主机干预下的可分页模式虚拟环境存储管理 |
CN104583959A (zh) * | 2012-09-25 | 2015-04-29 | 英特尔公司 | 允许处理器资源的虚拟化 |
CN105184113A (zh) * | 2014-03-27 | 2015-12-23 | 英特尔公司 | 用于实现安全视频输出路径的硬件辅助虚拟化 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4677546A (en) * | 1984-08-17 | 1987-06-30 | Signetics | Guarded regions for controlling memory access |
US5317717A (en) * | 1987-07-01 | 1994-05-31 | Digital Equipment Corp. | Apparatus and method for main memory unit protection using access and fault logic signals |
JP3454854B2 (ja) * | 1992-01-16 | 2003-10-06 | 株式会社東芝 | メモリ管理装置及び方法 |
US7073059B2 (en) * | 2001-06-08 | 2006-07-04 | Hewlett-Packard Development Company, L.P. | Secure machine platform that interfaces to operating systems and customized control programs |
US6854039B1 (en) | 2001-12-05 | 2005-02-08 | Advanced Micro Devices, Inc. | Memory management system and method providing increased memory access security |
US7111146B1 (en) * | 2003-06-27 | 2006-09-19 | Transmeta Corporation | Method and system for providing hardware support for memory protection and virtual memory address translation for a virtual machine |
US8364910B2 (en) * | 2007-03-08 | 2013-01-29 | Daniel Shawcross Wilkerson | Hard object: hardware protection for software objects |
US20110161620A1 (en) * | 2009-12-29 | 2011-06-30 | Advanced Micro Devices, Inc. | Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices |
US8301856B2 (en) * | 2010-02-16 | 2012-10-30 | Arm Limited | Restricting memory areas for an instruction read in dependence upon a hardware mode and a security flag |
JP5473841B2 (ja) * | 2010-09-08 | 2014-04-16 | 三菱重工業株式会社 | 中央処理演算装置、及び異常検査方法 |
US8682639B2 (en) * | 2010-09-21 | 2014-03-25 | Texas Instruments Incorporated | Dedicated memory window for emulation address |
US8489800B2 (en) * | 2010-12-13 | 2013-07-16 | Vmware, Inc. | Virtualizing processor memory protection with “domain track” |
US9183161B2 (en) * | 2012-12-28 | 2015-11-10 | Intel Corporation | Apparatus and method for page walk extension for enhanced security checks |
JP6106765B2 (ja) * | 2013-02-05 | 2017-04-05 | エイアールエム リミテッド | メモリ保護ユニットを使用して、仮想化をサポートするゲスト・オペレーティング・システム |
US9292288B2 (en) | 2013-04-11 | 2016-03-22 | Intel Corporation | Systems and methods for flag tracking in move elimination operations |
US9436616B2 (en) * | 2013-05-06 | 2016-09-06 | Qualcomm Incorporated | Multi-core page table sets of attribute fields |
GB2514107B (en) * | 2013-05-13 | 2020-07-29 | Advanced Risc Mach Ltd | Page table data management |
US20160092371A1 (en) * | 2014-09-26 | 2016-03-31 | Intel Corporation | Method and Apparatus For Deterministic Translation Lookaside Buffer (TLB) Miss Handling |
US9628279B2 (en) * | 2014-09-30 | 2017-04-18 | Microsoft Technology Licensing, Llc | Protecting application secrets from operating system attacks |
US10489309B2 (en) | 2014-10-21 | 2019-11-26 | Intel Corporation | Memory protection key architecture with independent user and supervisor domains |
US9753863B2 (en) | 2014-12-27 | 2017-09-05 | Intel Corporation | Memory protection with non-readable pages |
US20170255569A1 (en) * | 2016-03-01 | 2017-09-07 | Qualcomm Incorporated | Write-allocation for a cache based on execute permissions |
-
2016
- 2016-08-29 US US15/249,521 patent/US10114768B2/en active Active
-
2017
- 2017-07-21 WO PCT/US2017/043388 patent/WO2018044424A1/en active Application Filing
- 2017-07-21 CN CN201780047225.4A patent/CN109564552B/zh active Active
- 2017-07-21 EP EP17847142.1A patent/EP3504629B1/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1702634A (zh) * | 2004-05-27 | 2005-11-30 | 国际商业机器公司 | 便利无环境主机干预下的可分页模式虚拟环境存储管理 |
CN104583959A (zh) * | 2012-09-25 | 2015-04-29 | 英特尔公司 | 允许处理器资源的虚拟化 |
CN105184113A (zh) * | 2014-03-27 | 2015-12-23 | 英特尔公司 | 用于实现安全视频输出路径的硬件辅助虚拟化 |
Non-Patent Citations (1)
Title |
---|
SPARC V8处理器中存储管理单元的设计;肖建青等;《科学技术与工程》;20101130(第31期);7810-7815页 * |
Also Published As
Publication number | Publication date |
---|---|
WO2018044424A1 (en) | 2018-03-08 |
CN109564552A (zh) | 2019-04-02 |
EP3504629A1 (en) | 2019-07-03 |
EP3504629A4 (en) | 2020-05-13 |
EP3504629B1 (en) | 2021-12-08 |
US10114768B2 (en) | 2018-10-30 |
US20180060250A1 (en) | 2018-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109564552B (zh) | 用于存储器管理的方法、设备和系统 | |
CN108388528B (zh) | 基于硬件的虚拟机通信 | |
CN106716434B (zh) | 具有独立的用户域与管理程序域的存储器保护密钥架构 | |
US9910611B2 (en) | Access control for memory protection key architecture | |
US10037288B2 (en) | Memory protection at a thread level for a memory protection key architecture | |
US20200379917A1 (en) | Defining virtualized page attributes based on guest page attributes | |
US10901899B2 (en) | Reducing conflicts in direct mapped caches | |
CN109643283B (zh) | 用于管理飞地存储器页的设备、方法和装置 | |
US9875189B2 (en) | Supporting secure memory intent | |
CN107278295B (zh) | 用于存储器损坏检测架构的字节水平粒度的缓冲器上溢检测 | |
US10922114B2 (en) | System and method to improve nested virtual machine monitor performance | |
US10664199B2 (en) | Application driven hardware cache management | |
US10452423B2 (en) | Method and apparatus for light-weight virtualization contexts | |
CN109690546B (zh) | 支持对客户机飞地存储器页的超额订阅 | |
CN118227522A (zh) | 线性存储器地址变换和管理 |
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 |