CN106716434B - 具有独立的用户域与管理程序域的存储器保护密钥架构 - Google Patents

具有独立的用户域与管理程序域的存储器保护密钥架构 Download PDF

Info

Publication number
CN106716434B
CN106716434B CN201580050956.5A CN201580050956A CN106716434B CN 106716434 B CN106716434 B CN 106716434B CN 201580050956 A CN201580050956 A CN 201580050956A CN 106716434 B CN106716434 B CN 106716434B
Authority
CN
China
Prior art keywords
memory
permission
access
mode
permissions
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
Application number
CN201580050956.5A
Other languages
English (en)
Other versions
CN106716434A (zh
Inventor
D·A·考法蒂
G·尼格
R·M·桑卡兰
A·V·安德森
S·R·杜劳尔
W·哈斯
J·努兹曼
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 CN106716434A publication Critical patent/CN106716434A/zh
Application granted granted Critical
Publication of CN106716434B publication Critical patent/CN106716434B/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/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/1466Key-lock mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • 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

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)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)

Abstract

处理***包括用于执行任务的处理核以及被耦合至该核的存储器管理单元。存储器管理单元包括用于存储页表条目的存储单元,该页表条目包括存储器帧的一个或多个标识符、保护密钥、以及根据用户模式或管理程序模式指示一个或多个存储器帧是否可访问的访问模式位,第一许可寄存器,包括多个字段,每个字段包括在用户模式下反映一组存储器访问许可的一组位,以及第二许可寄存器,存储多个字段,每个字段包括在管理程序模式下反映一组存储器访问许可的一组位。

Description

具有独立的用户域与管理程序域的存储器保护密钥架构
技术领域
本公开的实施例一般涉及计算设备,并且更具体地涉及具有独立的用户域与管理程序域的存储器保护密钥架构。
背景技术
应用程序可能包括尝试访问不应该被访问的存储器区域的意外缺陷(称为偶然访问(stray access))。访问可以包括在存储器中写与读,并且偶然访问包括偶然写(straywrite)与偶然读(stray read)。为防止偶然访问以意外的方式访问或破坏存储器,需要某些存储器保护机制。
附图说明
通过下文给出的具体实施方式并通过本公开各种实施例的附图,将更完整地理解本公开。然而,不应当认为这些附图将本公开限制为特定实施例,而是这些附图仅用于说明和理解。
图1示出了根据本公开的实施例的处理***。
图2示出了根据本公开的实施例的存储器管理单元。
图3是示出了根据本公开的实施例的存储器管理单元的操作的流程图。
图4是根据本公开的实施例的操作包括核以及存储器管理单元的处理器的方法的流程图。
图5A是示出了用于处理器的微架构的框图,在该处理器中可以使用本公开的一个实施例。
图5B是示出了根据本公开的至少一个实施例实现的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。
图6示出了根据本公开的一个实施例的用于处理器的微架构的框图。
图7是示出了***的框图,在该***中可以使用本公开的实施例。
图8是***的框图,在该***中本公开的实施例可以操作。
图9是***的框图,在该***中本公开的实施例可以操作。
图10是根据本公开的实施例的片上***(SoC)的框图。
图11是根据本公开的SoC设计的实施例的框图。
图12示出了计算机***的一个实施例的框图。
具体实施方式
计算设备可以包括用于执行指令的在一个或多个处理器中(诸如中央处理单元(CPU))的一个或多个处理核,以及在一个或多个处理核上用于存储与执行任务(包括用户应用以及诸如操作***的内核的***应用)相关联的指令以及数据的存储器设备(诸如随机存取存储器(RAM))。每个应用程序的指令使用虚拟存储器的虚拟地址(或线性地址)寻址存储器,可以通过与该一个或多个处理器相关联的存储器管理单元(MMU)将该虚拟地址(或线性地址)转换成存储器的物理地址。可以根据存储的页组织虚拟存储器,可以将该存储的页转换成该存储器的页帧。虚拟地址的每一页可以对应于该存储器的存储器帧。虚拟存储器的页可以根据页编号被标识,而存储器的页帧可以根据存储器帧编号被标识。每个虚拟地址可以包括页编号以及在该页编号处的页内的偏移。因此,可以通过查找页表以得到页编号以及偏移来确定存储器的具体的物理地址。每个页表条目指定虚拟地址到物理地址的转换,以及诸如访问许可的存储器页的其他属性。如此,在处理核上执行的任务可以访问的虚拟地址的空间可以大于物理存储器地址的空间。
应用程序可以与确定其对存储器的访问模式(例如,作为用户或作为管理程序)的特权等级相关联。例如,用户应用可以具有用户模式的低特权,而***应用(诸如内核)可以具有管理程序模式的高特权。在处理核上执行的任务可能需要访问(读或写)虚拟地址所引用的存储器,该虚拟地址可以被存储器管理单元转换成存储器的物理地址。
页表条目是页表的一项,被用来将存储器的虚拟地址映射到该存储器的物理地址。页表条目可以包括存储页表条目所引用的页的类型的字段。例如,具有“1”的一位指示用户页,而具有“0”的一位指示管理程序页。页表条目指示用户页的存储器页可以被在任何特权等级上运行的任务访问(包括具有用户模式访问的用户应用以及具有管理程序模式访问的***应用),而页表条目指示管理程序页的存储器页限于在比用户等级更高的特权等级上运行的任务。在一个实施例中,操作***可以将存储器的一部分分配为管理程序页,该管理程序页被保留以用于操作***的内核。操作***也可以将存储器的一部分分配为用户页以供用户应用程序使用。
在存储器访问期间,当程序访问因为程序错误而以意外的方式被分配给程序的存储器位置时,偶然访问可能发生。为防止偶然访问以意外的方式访问或破坏存储器,每个存储器页可以与一个保护密钥(由操作***为任务选择的二进制位串)相关联,该保护密钥可以被用来检索存储在一个或多个许可寄存器中的位,该位反映该任务对于该存储器页的存储器访问许可。检索到的存储器访问许可可以被用来阻止任务超过它的对于存储器帧的许可。在某些实现方式中,保护密钥架构在页表中用n位的保护密钥标记每个页表条目,而无需区分页表条目是为用户页还是为管理程序页创建的。
本公开的实施例包括根据该页表条目是被标识为与用户页还是管理程序页相关联来处理存储在页表条目中的虚拟地址的页的保护密钥架构。基于分类,存储器的用户域(以用户模式标识的存储器的部分)以及管理程序域(以管理程序模式标识的存储器的部分)可以被分开的许可寄存器保护。在某些实现方式中,用户应用可以直接地修改与用户域相关联的许可寄存器,而无需操作***的内核的辅助。
图1示出了根据本公开的实施例的包括用于保护存储器的处理***的片上***(SoC)100。SoC 100可以包括经由总线***108彼此连接的处理器(诸如中央处理单元(CPU))102以及存储器。磁盘106可以经由总线108耦合至处理器102以及存储器104,以在存储器对于任务不具有足够的空间的情况下提供交换空间。存储器104以及磁盘106可以存储***应用以及用户应用程序以及与该程序相关联的数据。处理器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。将结合图2的描述讨论状态检查的细节。
在一个实施例中,页表条目116可以进一步包括保护密钥段128,用于存储由操作***在页表条目116创建时为其选择的保护密钥。在一个实施例中,操作***可以从操作***可用的一组现有的保护密钥中选择保护密钥。例如,可能有16个保护密钥可供操作***选择,并且操作***可以选择一个保护密钥,该保护密钥被指定为下一个可用的保护密钥。在一个实施例中,保护密钥是二进制位串(例如,4位),被用作检索存储在一个或多个许可寄存器中的一组存储器访问许可的标识符。
在一个实施例中,存储器管理单元112可以包括用户许可寄存器118以及管理程序许可寄存器120。用户许可寄存器118是包括多个字段的寄存器,其中每个字段存储对于一组用户页的一组存储器访问许可,而管理程序许可寄存器120是包括多个字段的寄存器,其中每个字段存储用于一组管理程序页的存储器访问许可。在一个实施例中,存储在页表条目116中的保护密钥128可以标识存储在用户许可寄存器118或管理程序许可寄存器120的字段中的特定许可。例如,保护密钥128可以是存储每个许可寄存器的一组许可的字段的索引。因此,根据页表条目116中的保护密钥128以及页U/S 126的用户或管理程序存储器访问模式可以唯一地检索到存储在用户许可寄存器118以及管理程序许可寄存器120中的每组许可。
在一个实施例中,用户许可寄存器118以及管理程序许可寄存器120的每个字段可以存储包括多个存储器访问许可位的一组许可。在一个实施例中,该组许可可以包括指示是否启用或禁用读访问的第一位,指示是否启用或禁用写访问的第二位,以及指示是否启用或禁用执行访问的第三位。在一个实施例中,许可还可以包括指示对加密存储在页表条目116中的存储器帧的许可以及其他所定义的属性的位。
在一个实施例中,存储器管理单元112可以包括ADD逻辑电路122,该ADD逻辑电路122包括输入引脚,用于接收选自用户许可寄存器118或管理程序许可寄存器120,以及来自基于存储在页表条目116中的状态位而生成的存储器访问许可的一组许可。ADD逻辑电路122可以将接收自用户许可寄存器118或管理程序许可寄存器120的一组许可与基于存储在页表条目116中的状态位而生成的存储器访问许可组合,以生成对访问页表条目116中所引用的存储器帧的最终存储器访问许可。
在一个实施例中,响应于在核110上执行的任务访问标识符被存储在页表条目116中的存储器帧的请求,存储器管理单元112可以生成可以确定来自任务的请求是否超过被分配给该任务的许可的最终存储器访问许可。最终存储器访问许可可以被用来控制开关124。如果来自任务的请求没有超过最终存储器访问许可,则开关124可以接合并允许物理地址被传至总线108以访问存储器104。如果来自任务的请求超过了最终存储器访问许可,则门124可以脱离并且阻止物理地址被传到总线108。
在一个实施例中,用户许可寄存器的内容可以被在任何特权等级(例如用户应用程序以及操作***的内核)上执行的任务读取或更新,而管理程序许可寄存器的内容只可以被在高于用户的特权等级(例如操作***的内核)上执行的任务读取或更新。
图2示出了根据本公开的实施例的详细的存储器管理单元200。如图2所示,存储器保护单元200可以包括作为页表的一部分的页表条目202,专用于用户模式的存储器帧的第一许可寄存器204(被称为用户许可寄存器),以及专用于管理程序模式的存储器帧的第二许可寄存器206(被称为管理程序许可寄存器)。页表条目202可以是如图1所示的被存储在虚拟地址页表114中的多个页表条目中的一个。用户许可寄存器204以及管理程序许可寄存器206中的每一个可以包括用于存储与每个保护密钥224相关联的存储器访问许可的多个字段。
在一个实施例中,页表条目202可以包括一个或多个状态位、保护密钥段224、以及存储器帧编号段222。存储器帧编号段222(例如,尺寸是32位)存储虚拟地址的页编号被映射到的存储器帧编号。
在一个实施例中,一个或多个状态位可以包括指示页表条目的存储器帧是否在存储器中的存在/不存在(P/A)位216。P/A位216的“1”可以指示存储器帧在存储器中,而“0”可以指示存储器帧被从存储器中交换到磁盘。一个或多个状态位可以包括指示对由页表条目202中的存储器帧指定的存储器的部分的存储器访问许可的读/写(R/W)位218。例如,R/W位218的“0”可以指示存储器的该部分是只读(或不可以写)的,而“1”可以指示存储器的该部分是可以读以及写的。一个或多个状态位可以包括指示对存储在存储器的该部分的指令的执行许可的XD位226。例如,XD位226的“1”可以指示取自存储器的该部分的指令是不被允许的。
在一个实施例中,页表条目202可以包括指示访问由页表条目202的存储器帧编号引用的存储器帧的任务的特权等级的存储器访问模式位或用户/管理程序(U/S)状态位220。在一个实施例中,U/S状态位220的“1”可以指示具有用户模式的特权或更高等级的特权的任务可以访问在页表条目202中被标识的存储器帧,而U/S状态位220中的“0”可以指示只有具有管理程序模式的访问可以访问存储器帧。
在一个实施例中,保护密钥段224可以存储为保护页表条目202的存储器帧而***作***标记到页表条目202的n位保护密钥(PKEY)。在一个实施例中,响应于在任务中映射存储器帧,操作***可以从操作***可用的多个保护密钥中选择保护密钥(PKEY),以及使用被选择的保护密钥来标记页表条目202。在一个实施例中,操作***可以提供接口,应用可以使用该接口请求在存储器页中被使用的特定的保护密钥。在一个实施例中,保护密钥是可以被用作存储在用户许可寄存器204或管理程序许可寄存器206的字段中的许可的标识符的n位二进制代码串。例如,保护密钥0010可以指向被标识在0010位置处的用户许可寄存器204或管理程序许可寄存器206的字段。
在一个实施例中,因为保护密钥224的长度是n位,用户许可寄存器204以及管理程序许可寄存器206中的每一个可以包括可唯一寻址的2n个字段。
在一个实施例中,存储在用户许可寄存器118以及管理程序许可寄存器120的字段中的每组许可可以包括多个存储器访问许可位230。在一个实施例中,该组许可位230可以包括用于指示是否启用或禁用读访问的第一位,用于指示是否启用或禁用写访问的第二位,以及用于指示是否启用或禁用执行访问的第三位。在一个实施例中,许可还可以包括指示对加密存储在页表条目116中的存储器帧的许可以及其他所定义的属性的位。
在一个实施例中,在发起任务的时候或者当切换到另一任务时,由操作***设置存储在用户许可寄存器204以及管理程序许可寄存器206中的存储器访问许可位。
在一个实施例中,具有用户模式访问的用户应用可以访问用户许可寄存器204。读或写用户许可寄存器204的指令可以被提供给用户应用。例如,这些指令包括可以允许用户应用程序读取用户许可寄存器204的内容的用户许可寄存器读(RDPKRU)指令,以及可以允许用户应用程序写入用户许可寄存器204的用户许可寄存器写(WRPKRU)指令。通过允许用户应用直接地操纵存储在用户许可寄存器204中的许可,可以显著地减少通过保护密钥(例如,通过经过操作***)改变该组许可的性能开销,从而允许对保护密钥的更加广泛的使用。
在一个实施例中,存储器管理单元可以包括复用器208,复用器208具有第一输入,用于接收存储在用户许可寄存器204中的(根据保护密钥224所选择的)第一组许可,具有第二输入,用于接收存储在管理程序许可寄存器206中的(根据保护密钥224所选择的)第二组许可,以及具有控制引脚,被耦合至页表条目202的访问模式位(U/S位)220。访问模式位220可以在复用器208的输出处选择性地提供第一组许可或第二组许可。
在一个实施例中,响应于访问在页表条目202中被指定的存储器中的存储器帧的请求,存储器管理单元112可以执行两个访问许可检查。首先,存储器管理单元112可以包括控制器214,控制器214可以在输入处接收存储在页表条目202中的一个或多个状态位(诸如XD 226,R/W 218,P/A 216),以及定义处理器操作模式的来自处理器的状态位(诸如执行任务的管理程序模式执行保护(SMEP)状态以及当前特权等级(CPL))。基于状态位,控制器214可以输出包括第一组许可位的第一许可,该第一组许可位基于页表条目的状态位指示存储器访问许可。在一个实施例中,第一组许可位可以包括用于指示是否启用或禁用读取的第一位、用于指示是否启用或禁用写的第二位、以及用于指示是否启用或禁用执行的第三位。
在一个实施例中,响应于访问在页表条目202中被指定的存储器中的存储器帧的任务的请求,存储器管理单元112可以提供第二许可检查。在一个实施例中,存储器管理单元112可以包括复用器208,该复用器208包括被耦合至用户许可寄存器204的第一输入以及被耦合至管理程序许可寄存器206的第二输入。复用器208可以进一步包括被耦合至页表条目202的U/S位220的控制引脚。存储在U/S位220中的值可以控制由哪个许可寄存器在复用器208的输出处提供其内容,并且保护密钥224确定由哪个字段提供该许可。复用器208的输出可以提供第二组许可位,包括用于指示是否启用或禁用读取的第一位、用于指示是否启用或禁用写入的第二位、以及用于指示是否启用或禁用执行的第三位。在一个实施例中,许可还可以包括指示对加密存储在页表条目116中的存储器帧的许可以及其他所定义的属性的位。
在一个实施例中,存储器管理单元112可以包括AND逻辑212,该AND逻辑212包括用于接收来自控制器214的第一组许可位的第一输入以及接收来自复用器208的第二组许可位的第二输入。AND逻辑212可基于第一组许可以及保护密钥许可生成一组最终存储器访问许可。该组最终存储器访问许可可以包括使用第一组许可和保护密钥许可之间的最低许可的许可位。例如,如果第一组许可位具有指示写启用的写许可位并且第二组许可位具有指示写禁用的写许可位,则最终组的写许可位是禁用的。然而,如果两组中的写许可位均指示写启用,则最终许可中的写许可是启用的。
在一个实施例中,将任务发起的访问存储器的请求与最终许可比较以确定该请求是否超过授予给该任务的许可。如果超过,则存储器管理单元可以生成页错误信号以阻止物理地址输出到总线108以及将该结果通知处理核。
图3是根据本公开的实施例的通过存储器管理单元检查访问存储器的许可的操作300的流程图。参考图3,响应于在用户模式访问或管理程序模式访问中执行的任务的存储器请求,操作可以在302处开始。存储器管理单元可以基于任务所请求的存储器的虚拟地址搜索页表条目,以及确定存储在页表条目中的存储器的存储器帧,以及执行从存储器的虚拟地址到物理地址的映射。
在允许基于物理地址的存储器的访问之前,在304处,存储器管理单元的控制器可以基于状态位(诸如XD,P/A,R/W)以及处理器操作的处理器状态位生成第一组许可。存储器管理单元可以确定第一组许可是否允许访问存储器的物理地址。如果第一组许可不允许任务所请求的访问,则在314处,存储器管理单元可以生成页错误信号给处理核以通知所请求的任务。
如果第一许可允许访问,则在306处,存储器管理单元可以基于存储在页表条目中的U/S位来确定页表条目是被标记为了用户模式还是管理程序模式。如果页表条目是用于用户模式,则在310处,存储器管理单元可以使用存储在页表条目中的保护密钥来选择存储在用户许可寄存器中的第二组许可,并且确定第二组许可是否允许任务所请求的对存储器的访问。如果被允许,则在312处,存储器管理单元可以允许任务访问存储器帧编号存储在页表条目中的存储器帧。如果不被允许,则在314处,存储器管理单元可以生成页错误信号并且不允许对存储器帧的访问。
如果确定该页表条目是管理程序模式,则在308处,存储器管理单元可以使用存储在该页表条目中的保护密钥来选择存储在管理程序许可寄存器中的第二组许可,并且确定第二组许可是否允许任务所请求的对存储器的访问。如果不被允许,则在314处,存储器管理单元可以生成页错误信号并且不允许对存储器帧的访问。如果被允许,则在312处,存储器管理单元可以允许任务访问存储器帧编号存储在该页表条目中的存储器帧。
图4是根据本公开的实施例的操作包括核以及存储器管理单元的处理器的方法的流程图。方法400可以由处理逻辑执行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如在处理***、通用计算机***、或专用机器上运行的指令)、固件或其组合。在一个实施例中,参照图1,方法400可以部分地由执行操作***的处理核110中的任一个的处理逻辑执行。
为了简化说明,方法400被描绘以及被描述成一系列动作。然而,根据本公开的动作可以按各种顺序发生,并且/或者可以同时发生,并且伴随本文未呈现以及描述的其他动作发生。此外,并不是所有示出的动作都被执行以实现根据所公开主题的方法400。此外,本领域技术人员将会理解以及明白,方法400可以替代地经由状态图被表示为一系列相关的状态或者被表示为事件。
参考图4,在402处,处理逻辑(诸如操作***)可以开始管理任务(诸如用户应用程序或内核的执行)。在404处,处理逻辑可以确定任务在哪个特权等级操作。任务的特权等级确定存储器访问的模式是用户模式访问还是管理程序模式访问。在一个实施例中,处理逻辑可以接收来自保持对当前特权等级(CPL)的记录的寄存器的特权等级,当前特权等级可以支持从0到3的等级,其中3作为最低等级(诸如用户应用)并且3作为最高等级(诸如操作***的内核)。任务可以在用户等级(例如,CPL=3)或管理程序等级(例如,CPL<3)上运行。
在406处,处理逻辑可以确定任务所分配的存储器的存储器帧的标识符(或编号)。
在408处,处理逻辑可以从处理逻辑可用的一组保护密钥中选择保护密钥。保护密钥可以是可以被用来标识存储在一个或多个许可寄存器中的存储器访问许可的n位二进制代码。
在410处,处理逻辑可以将访问模式以及所确定的存储器帧的标识符、以及所选择的保护密钥存储在存储器管理单元的页表的页表条目中。页表条目可以被用来将虚拟地址映射到存储器的物理地址以及确定对存储器的访问许可。
在一个实施例中,处理逻辑可以确定任务的存储器访问许可,该存储器访问许可包括指示读许可的第一位、指示写许可的第二位、或指示执行许可的第三位中的至少一个。处理逻辑可以基于访问模式是用户模式访问还是管理程序模式访问来选择用户许可寄存器或管理程序许可寄存器中的一个。通过将保护密钥用作标识符,处理逻辑可以将存储器访问许可存储在所选择的许可寄存器的字段中。
图5A是示出了根据本公开的一个实施例的用于实现包括异构核的处理设备的处理器的微架构的框图。具体地,根据本公开的至少一个实施例,处理器描绘了被包括在处理器中的有序架构核以及寄存器重命名逻辑、乱序发布/执行逻辑。处理器包括耦合至执行引擎单元550的前端单元530,并且两者均耦合至存储器单元570。处理器可以包括精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代核类型。作为又一选项,处理器可以包括专用核,例如,网络或通信核、压缩引擎、图形核等。在一个实施例中,处理器可以是多核处理器或者可以是多处理器***的一部分。
前端单元530包括耦合至指令高速缓存单元534的分支预测单元532,指令高速缓存单元534耦合至指令转换后备缓冲器(TLB)536,指令转换后备缓冲器536耦合至指令取出单元538,指令取出单元538耦合至解码单元540。解码单元540(也被称为解码器)可以解码指令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。可使用各种不同的机制来实现解码器540。合适的机制的示例包括但不限于:查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元534进一步耦合至存储器单元570。解码单元540耦合至执行引擎单元550中的重命名/分配器单元552。
执行引擎单元550包括耦合至引退单元554的重命名/分配器单元552以及一组一个或多个调度器单元556。调度器单元556表示任何数目的不同调度器,包括预留站(RS)、中央指令窗等。调度器单元556耦合至物理寄存器组单元558。物理寄存器组单元558中的每一个表示一个或多个物理寄存器组,其中不同的物理寄存器组存储一个或多个不同的数据类型(诸如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、等等)、状态(诸如,指令指针,其是将要被执行的下一个指令的地址)等等。物理寄存器组单元558被引退单元554所覆盖,以示出可实现寄存器重命名和乱序执行的多种方式(诸如,使用重排序缓冲器和引退寄存器组、使用未来文件(future fi le)、历史缓冲器以及引退寄存器组;使用寄存器映射和寄存器池等等)。
通常,架构寄存器从处理器外部或从编程者的视角来看是可见的。这些寄存器不限于任何已知的特定的电路类型。各种不同类型的寄存器可适用,只要它们能够存储并提供本文中所述的数据。合适的寄存器的示例包括但不限于:专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用物理寄存器和动态分配物理寄存器的组合等等。引退单元554和物理寄存器组单元558耦合至执行群集560。执行群集560包括一组一个或多个执行单元562和一组一个或多个存储器访问单元564。执行单元562可以执行各种操作(例如,移位、加法、减法、乘法)并且在各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)上操作。
尽管一些实施例可以包括专用于特定功能或功能组的数个执行单元,但是其他实施例可以仅包括一个执行单元或全部都执行所有功能的多个执行单元。调度器单元556、物理寄存器组单元558以及执行群集560示出为可能是复数个,因为某些实施例为某些类型的数据/操作创建单独的流水线(例如,各自都具有其自身的调度器单元、物理寄存器组单元和/或执行群集的标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线和/或存储器访问流水线——并且在单独的存储器访问流水线的情况下,实现了其中仅此流水线的执行群集具有存储器访问单元564的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行的,而其余的是有序的。
存储器访问单元564的集合耦合至存储器单元570,存储器单元570可以包括数据预取器580、数据TLB单元572、数据高速缓存单元(DCU)574、以及第2级(L2)高速缓存单元576,这里给出几个示例。在一些实施例中,DCU574也被称为第一级数据高速缓存(L1高速缓存)。DCU 574可处理多个未完成的高速缓存未命中,并且继续服务传入存储和加载。其还支持维持高速缓存一致性。数据TLB单元572是用于通过映射虚拟以及物理地址空间来改善虚拟地址转换速度的高速缓存。在一个示例性实施例中,存储器访问单元564可以包括加载单元、存储地址单元以及存储数据单元,其中的每一个均耦合至存储器单元570中的数据TLB单元572。L2高速缓存单元576可以耦合至一个或多个其他等级的高速缓存,并最终耦合至主存储器。
在一个实施例中,数据预取器580通过自动预测程序即将消耗哪些数据来推测性地加载/预取数据至DCU 574。预取可以指示在存储在存储器分层结构(例如,较低等级的高速缓存或存储器)的一个存储器位置的数据被处理器实际要求之前,将数据转换至更靠近(例如,产生更少访问等待时间)处理器的较高等级的存储器位置。更具体地,预取可以指示在处理器发出对被返回的特定数据的需求之前,对从较低等级的高速缓存/存储器之一到数据高速缓存和/或预取缓冲器的数据的早取回。
处理器可以支持一个或多个指令集(诸如,x86指令集(具有增加有更新版本的一些扩展)、加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集、加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集(具有可选附加扩展,诸如NEON))。
应当理解,核可以支持多线程操作(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程操作,各种方式包括时分多线程操作、同步多线程操作(其中,单个物理核为物理核正在同步进行多线程操作的多个线程中的每一个线程提供逻辑核)或其组合(例如,时分取出和解码以及此后诸如利用
Figure GDA0002371942450000141
超线程技术的同步多线程操作)。
尽管在乱序执行的上下文中描述了寄存器重命名,但是,应当理解,寄存器重命名可以用于有序架构中。虽然处理器的所示实施例也包括单独的指令和数据高速缓存单元以及共享的L2高速缓存单元,但替代实施例可具有用于指令和数据两者的单个内部高速缓存,诸如例如,第一级(L1)内部高速缓存或多个等级的内部高速缓存。在一些实施例中,***可以包括内部高速缓存以及在核和/或处理器外部的外部高速缓存的组合。或者,全部高速缓存都可以在核和/或处理器的外部。
图5B是示出了根据本公开的一些实施例的由图5A的处理设备500实现的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。图5B中的实线框示出了有序流水线,而虚线框示出了寄存器重命名、乱序发布/执行流水线。在图5B中,处理器流水线500包括取出级502、长度解码级504、解码级506、分配级508、重命名级510、调度(也称为分派或发布)级512、寄存器读取/存储器读取级514、执行级516、写回/存储器写入级518、异常处理级520以及提交级522。在一些实施例中,级502-522的顺序可以与所示出的不同,并且不限于图5B中所示的特定顺序。
图6是示出了根据本公开的一个实施例的处理器600的微架构的框图。在一些实施例中,可将根据一个实施例的指令实现为对具有字节尺寸、字尺寸、双字尺寸、四字尺寸等并具有诸多数据类型(例如,单精度和双精度整数和浮点数据类型)的数据元素进行操作。在一个实施例中,有序前端601是处理器600的部分,该部分取出要被执行的指令,并准备这些指令以便稍后在处理器流水线中使用。
前端601可以包括若干单元。在一个实施例中,指令预取器626从存储器中取出指令,并将这些指令馈送至指令解码器628,指令解码器628进而解码或解释这些指令。例如,在一个实施例中,解码器将所接收到的指令解码为机器可执行的被称为“微指令”或“微操作”(也称为微op或uop)的一个或多个操作。在其他实施例中,该解码器将指令解析为可由微架构用于执行根据一个实施例的多个操作的操作码以及对应的数据和控制字段。在一个实施例中,追踪高速缓存630获取经解码的uop,并且在uop队列634中将它们组合为程序排序的序列或踪迹,以用于执行。当追踪高速缓存630遇到复杂指令时,微代码ROM 632提供完成操作所需的uop。
一些指令被转换为单个微op,而其他指令需要若干个微op以完成完整的操作。在一个实施例中,如果需要多于四个微op来完成指令,则解码器628访问微代码ROM 632以执行该指令。对于一个实施例,可将指令解码为少量的微op,以便在指令解码器628处进行处理。在另一实施例中,如果需要许多微op来完成操作,则可将指令存储在微代码ROM 632中。追踪高速缓存630参考进入点可编程逻辑阵列(PLA)来确定正确的微指令指针,以从微代码ROM 632中读取微代码序列来完成根据一个实施例的一条或多条指令。在微代码ROM 632完成对指令的微op进行的序列化操作之后,该机器的前端601恢复从追踪高速缓存630中取出微op。
乱序执行引擎603是准备指令以进行执行的地方。乱序执行逻辑具有若干个缓冲器,用于将指令流平滑并且重排序,以便在这些指令流沿流水线向下并经调度供执行时优化性能。分配器逻辑分配每一个uop为了执行所需的机器缓冲器和资源。寄存器重命名逻辑将诸个逻辑寄存器重命名为寄存器组中的条目。分配器还在指令调度器(存储器调度器、快速调度器602、慢速/通用浮点调度器604以及简单浮点调度器606)之前,在两个uop队列(一个用于存储器操作,而另一个用于非存储器操作)中的一个uop队列中,为每一个uop分配条目。uop调度器602、604、606基于对它们的从属输入寄存器操作数源的准备就绪以及uop完成它们的操作所需的执行资源的可用性来确定uop何时准备好用于执行。一个实施例的快速调度器602可以在主时钟周期的每半个时钟周期上进行调度,而其他调度器在每个主处理器时钟周期上仅可调度一次。调度器对分派端口仲裁以调度uop来执行。
在执行块611中,寄存器组608和610位于调度器602、604和606以及执行单元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,寄存器组608、610存储微指令需要执行的整数和浮点数据操作数值。一个实施例的处理器600包括许多执行单元:地址生成单元(AGU)612、AGU 614、快速ALU 616、快速ALU 618、慢速ALU 620、浮点ALU 622、浮点移动单元624。对于一个实施例,浮点执行块622和624执行浮点、MMX、SIMD、SSE或其他操作。一个实施例中的浮点ALU 622包括用于执行除法、平方根和余数微op的64位除64位的浮点除法器。对于本公开的多个实施例,可利用浮点硬件来处理涉及浮点值的指令。
在一个实施例中,ALU操作去往高速ALU执行单元616和618。一个实施例中的快速ALU 616和618可以执行有效等待时间为半个时钟周期的快速操作。对于一个实施例,大多数复杂的整数操作去往慢速ALU 620,因为慢速ALU 620包括用于长等待时间类型操作的整数执行硬件,例如,乘法器、移位器、标志逻辑和分支处理设备。存储器加载/存储操作由AGU612和614来执行。对于一个实施例,在对64位数据操作数执行整数操作的情境中描述整数ALU 616、618和620。在替代实施例中,可实现ALU 616、618以及620以支持包括16、32、128以及256等的各种数据位。类似地,可实现浮点单元622和624以支持具有各种宽度的位的一系列操作数。对于一个实施例,浮点单元622和624可结合SIMD以及多媒体指令对128位宽的紧缩数据操作数进行操作。
在一个实施例中,在父加载完成执行之前,uop调度器602、604和606分派从属操作。由于在处理器600中推测性地调度并执行uop,因此处理器600也包括用于处理存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中会存在将临时不正确的数据留给调度器的运行中的从属操作。重放机制跟踪并重新执行使用不正确的数据的指令。仅仅从属操作需要被重放,而允许独立操作完成。也可将处理器的一个实施例的调度器和重放机制设计成用于捕捉指令序列,以用于文本串比较操作。
根据本公开的一个实施例,处理器600还包括用于实现用于存储器消歧的存储地址预测的逻辑。在一个实施例中,处理器600的执行块611可以包括用于实现用于存储器消歧的存储地址预测的存储地址预测器(未示出)。
术语“寄存器”可以是指被用作标识操作数的指令的部分的板上(on-board)处理器存储器位置。换句话说,寄存器可以是从处理器外部(从编程者的角度来看)可用的那些。然而,不应当将实施例中的寄存器限制于意指特定类型的电路。相反,实施例中的寄存器能够存储并提供数据,并且能够执行本文中所述的功能。本文所描述的寄存器可利用任何数量的不同技术,由处理器中的电路来实现,这些不同技术诸如,专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。在一个实施例中,整数寄存器存储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,但是应当理解,本公开的实施例不受限于此。在其他实施例中,在给定处理器中可存在一个或多个附加处理器。
处理器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以及存储单元728(诸如,可包括指令/代码和数据730的盘驱动器或其他大容量存储设备)。此外,音频I/O 724可以被耦合至第二总线720。注意,其他架构是可能的。例如,***可实现多分支总线或者其他此类架构,而不是图7中的点对点架构。
现在参考图8,所示的是***800的框图,在***800中本公开的一个实施例可以操作。***800可以包括耦合至图形存储器控制器中枢(GMCH)820的一个或多个处理器810、815。在图8中以虚线表示附加的处理器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,外部图形设备850可以是耦合至ICH850的分立图形设备。
替代地,附加的或不同的处理器也可存在于***800中。例如,附加的处理器815可以包括与处理器810相同的附加的处理器、与处理器810异构的或不对称的附加的处理器、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器。在包括架构、微架构、热、功耗特征等一系列品质度量的方面,处理器810、815之间存在各种差异。这些差异可以有效显示为处理器810和815之间的不对称性和异构性。对于至少一个实施例,各种处理器810和815可驻留在同一管芯封装中。
现在参考图9,所示的是***900的框图,在***900中本公开的实施例可以操作。图9示出了处理器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控制逻辑。如图所示,耦合至CL 972、982以及I/O设备914的存储器932、934还耦合至控制逻辑972、982。传统I/O设备915经由接口996耦合至芯片组990。
可在许多不同的***类型中实现实施例。图10是根据本公开的实施例的SoC 1000的框图。虚线框是更先进的SoC的可选特征。在图10中,互连单元1012耦合至:应用处理器1050,包括一组一个或多个核1002A-N以及共享高速缓存单元1006;***代理单元1010;总线控制器单元1016;集成存储器控制器单元1014;一组或一个或多个媒体处理器1020,可包括集成图形逻辑1008、用于提供静态和/或视频照相功能的图像处理器1024、提供硬件音频加速的音频处理器1026、提供视频编码/解码加速的视频处理器1028、静态随机存取存储器(SRAM)单元1030;直接存储器存取(DMA)单元1032;以及显示单元1040,用于耦合至一个或多个外部显示器。在一个实施例中,存储器模块可以被包括在集成存储器控制器单元1014中。在另一个实施例中,存储器模块可以被包括在可以被用来访问和/或控制存储器的SoC1000的一个或多个其他组件中。
存储器层次结构包括核内的一个或多个层级的高速缓存,一组或一个或多个共享高速缓存单元1006以及耦合到集成存储器控制器单元1014的集合的外部存储器(未示出)。共享高速缓存单元1006的集合可以包括一个或多个中级高速缓存,诸如,第2级(L2)、第3级(L3)、第4级(L4),或其他层级的高速缓存,末级高速缓存(LLC),和/或上述各项的组合。
在一些实施例中,核1002A-N中的一个或多个核能够多线程化。***代理1010包括协调并操作核1002A-N的那些组件。***代理单元1010可包括例如功率控制单元(PCU)和显示单元。PCU可以是或可包括用于调节核1002A-N和集成图形逻辑1008的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个从外部连接的显示器。
核1002A-N在架构和/或指令集方面可以是同构或异构的。例如,核1002A-N中的一些可以是有序的,而另一些是乱序的。作为另一个示例,核1002A-N中的两个或更多能够执行相同的指令集,而其他核仅能够执行该指令集的子集或不同的指令集。
应用处理器1050可以是通用处理器,诸如,酷睿(CoreTM)i3、i5、i7、2Duo和Quad、至强(XeonTM)、安腾(ItaniumTM)、凌动(AtomTM)或QuarkTM处理器,这些均可以从加利福尼亚圣克拉拉市的英特尔TM公司获得。或者,应用处理器1050可以来自另一个公司,诸如ARM控股TM公司、MIPSTM等。应用处理器1050可以是专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等。应用处理器1050可以被实现在一个或多个芯片上。应用处理器1050可以是一个或多个衬底的部分,并且/或者可以使用诸如例如BiCMOS、CMOS或NMOS之类的多种工艺技术中的任何技术将应用处理器1050实现在一个或多个衬底上。
图11是根据本公开的片上***(SoC)设计的实施例的框图。作为特定的说明性示例,SoC 1100被包括在用户装备(UE)中。在一个实施例中,UE是指由终端用户用于通信的任何设备,诸如,手持式电话、智能电话、平板、超薄笔记本、具有宽带适配器的笔记本或任何其他类似的通信设备。UE常常连接到基站或节点,该基站或节点本质上潜在地对应于GSM网络中的移动站(MS)。
在此,SoC 1100包括2个核——1106和1107。核1106和1107可符合指令集架构,诸如,基于
Figure GDA0002371942450000211
架构核TM的处理器、超微半导体公司(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计,或它们的客户,以及它们的被许可方或采纳方。核1106和1107耦合至与总线接口单元1109和L2高速缓存1110相关联的高速缓存控制1108以与***1100的其他部分进行通信。互连1111包括可能实现所述公开的一个或多个方面的片上互连,诸如IOSF、AMBA或上文讨论的其他互连。
互连1111提供到其他组件的通信信道,其他组件诸如与用户身份模块(SIM)卡对接的SIM 1130、保存供核1106和1107执行以初始化和引导SOC 1100的引导代码的引导ROM1135、与外部存储器(例如,DRAM 1160)对接的SDRAM控制器1140、与非易失性存储器(例如,闪存1165)对接的闪存控制器1145、与***设备对接的***控制装置1150(例如,串行***接口)、用于显示和接收输入(例如,允许触摸的输入)的视频编解码器1120和视频接口1125、用于执行图形相关的计算的GPU 1115等等。这些接口中的任何一种可以包括本文中所述公开的多个方面。另外,***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。
计算机***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。虽然在示例实施例中,将机器可访问存储介质1224示出为单个介质,但是应当认为术语“机器可访问存储介质”包括存储一组或多组指令的单个或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存与服务器)。还应当认为术语“机器可访问存储介质”包括能够存储、编码或携带由机器执行并且使该机器执行本公开的任何一个或多个方法的一组指令的任何介质。应当相应地认为术语“机器可访问存储介质”包括但不限于:固态存储器以及光和磁介质。
以下示例关于进一步的实施例。示例1是包括一种包括用于执行任务的处理核以及耦合至该处理核的存储器管理单元的处理***。存储器管理单元包括用于存储页表条目的存储单元,该页表条目包括存储器帧的一个或多个标识符、保护密钥、以及根据用户模式或管理程序模式指示一个或多个存储器帧是否可访问的访问模式位;第一许可寄存器,包括多个字段,每个字段包括在用户模式下反映一组存储器访问许可的一组位,以及第二许可寄存器,存储多个字段,每个字段包括在管理程序模式下反映一组存储器访问许可的一组位。
在示例2中,示例1的主题可以任选地规定,存储器管理单元进一步包括复用器,该复用器包括耦合至第一许可寄存器的第一输入、耦合至第二许可寄存器的第二输入、以及耦合至访问模式位的控制引脚。
在示例3中,示例1和2中的任一示例的主题可以任选地规定,响应于访问模式位指示用户模式,复用器将存储在第一许可寄存器的多个字段中的一个字段中的第一组位提供给复用器的输出,以及响应于访问模式位指示管理程序模式,复用器将存储在第二许可寄存器的多个字段中的一个字段中的第二组位提供给复用器的输出。
在示例4中,示例3的主题可以任选地规定,第一许可寄存器的多个字段中的一个字段是根据页表条目的保护密钥选择的,并且第二许可寄存器的多个字段中的一个字段是根据页表条目的保护密钥选择的。
在示例5中,示例4的主题可以任选地规定,其中第一组位包括指示读许可的第一位、指示写许可的第二位、或指示执行许可的第三位中的至少一个,其中第二组位包括指示读许可的第一位、指示写许可的第二位、或指示执行许可的第三位中的至少一个。
在示例6中,示例5的主题可以任选地规定,页表条目包括多个状态位。
在示例7中,示例6的主题可以任选的规定,存储器管理单元包括接收多个状态位以及基于该多个状态位确定第一组存储器访问许可的控制器,并且其中第一组存储器访问许可包括指示读许可的第一位、指示写许可的第二位、或指示执行许可的第三位中的至少一个。
在示例8中,示例7的主题可以任选地规定,存储器管理单元包括AND逻辑,该AND逻辑包括用于接收来自复用器的输出的第一组存储器访问许可的第一输入以及用于接收来自复用器的输出的第二组存储器访问许可的第二输入,其中该AND逻辑基于该第一和第二组存储器访问许可生成一组最终存储器访问许可。
在示例9中,示例8的主题可以任选地规定,存储器管理单元基于最终存储器访问许可将任务访问提供给一个或多个存储器帧。
在示例10中,示例1的主题可以任选地规定,任务具有用户模式访问或管理程序模式访问之一的特权等级。
在示例11中,示例1和10中的任一个示例的主题可以任选地规定,第一许可寄存器能被具有用户模式访问或管理程序模式访问之一的特权等级的任务访问。
在示例12中,示例11的主题可以任选地规定,第一许可寄存器包括任务可设置的多个许可位,该任务具有用户模式访问或管理程序模式访问之一的特权等级。
在示例13中,示例12的主题可以任选地规定,具有用户模式访问或管理程序模式访问之一的特权等级的任务用于标识存储在第一许可寄存器中的许可位并且设置该许可位以禁用该许可。
在示例14中,示例13的主题可以任选地规定,保护密钥包括n位,并且第一和第二许可寄存器中的每一个包括2n个字段。
示例15是一种片上***(SoC),包括存储器以及通信地耦合至该存储器的处理器,该处理器包括用于执行任务的处理核以及耦合至该处理核的存储器管理单元,该存储器管理单元包括用于存储页表条目的存储单元,该页表条目包括存储器帧的一个或多个标识符、保护密钥、以及根据用户模式或管理程序模式指示一个或多个存储器帧是否可访问的访问模式位,第一许可寄存器,包括多个字段,每个字段包括在用户模式下反映一组存储器访问许可的一组位,以及第二许可寄存器,存储多个字段,每个字段包括在管理程序模式下反映一组存储器访问许可的一组位。
在示例16中,示例15的主题可以任选地规定,存储器管理单元进一步包括复用器,该复用器包括耦合至第一许可寄存器的第一输入、耦合至第二许可寄存器的第二输入、以及耦合至访问模式位的控制引脚。
在示例17中,示例15和16中的任一示例的主题可以任选地规定,响应于访问模式位指示用户模式,复用器将存储在第一许可寄存器的多个字段中的一个字段中的第一组位提供给复用器的输出,以及响应于访问模式位指示管理程序模式,复用器将存储在第二许可寄存器的多个字段中的一个字段中的第二组位提供给复用器的输出。
在示例18中,示例17的主题可以任选地规定,根据页表条目的保护密钥选择第一许可寄存器的多个字段中的一个字段,以及根据页表条目的保护密钥选择第二许可寄存器的多个字段中的一个字段。
在示例19中,示例17的主题可以任选地规定,第一组位包括指示读许可的第一位、指示写许可的第二位、或指示执行许可的第三位中的至少一个,其中第二组位包括指示读许可的第一位、指示写许可的第二位、或指示执行许可的第三位中的至少一个。
在示例20中,示例19的主题可以任选地规定,页表条目包括多个状态位,其中存储器管理单元包括用于接收多个状态位以及基于该多个状态位确定第一组存储器访问许可的控制器,并且其中第一组存储器访问许可包括指示读许可的第一位、指示写许可的第二位、或指示执行许可的第三位中的至少一个,并且其中存储器管理单元包括AND逻辑,该AND逻辑包括用于接收来自复用器的输出的第一组存储器访问许可的第一输入以及用于接收来自复用器的输出的第二组存储器访问许可的第二输入,其中该AND逻辑基于该第一和第二组存储器访问许可生成一组最终存储器访问许可。
示例21是一种方法,包括由处理核基于任务的特权等级确定任务的访问模式,其中访问模式是用户模式访问或管理程序模式访问中的一个,确定由任务分配的存储器帧的标识符,由执行操作***的处理核选择任务的保护密钥,以及将保护密钥、访问模式以及标识符存储在耦合至处理核的存储器管理单元的页表条目中。
在示例22中,示例21的主题可以进一步包括确定任务的存储器访问许可,该存储器访问许可包括指示读许可的第一位、指示写许可的第二位、或指示执行许可的第三位中的至少一个,基于访问模式选择分配给用户模式访问的第一许可寄存器以及分配给管理程序模式访问的第二许可寄存器中的一个,基于保护密钥标识在第一许可寄存器或第二许可寄存器中的所选择的一个中的字段,以及将存储器访问许可存储在被标识的字段中。
在示例23中,示例21和22中的任一示例的主题可以任选地规定,第一许可寄存器是具有用户模式访问的特权等级的任务可访问的,以及其中第一许可寄存器包括具有用户模式访问的特权等级的任务可设置的写禁用位。
示例24是一种设备,包括:用于执行示例21和22中的任一示例的主题的装置。
示例25是一种机器可读非瞬态介质,具有存储于其上的被执行时进行以下操作的程序代码,该操作包括:由处理核基于任务的特权等级确定任务的访问模式,其中访问模式是用户模式访问或管理程序模式访问中的一个,确定由任务分配的存储器帧的标识符,由执行操作***的处理核选择任务的保护密钥,以及将保护密钥、访问模式以及标识符存储在耦合至处理核的存储器管理单元的页表条目中。
在示例26中,示例25的主题可以进一步包括确定任务的存储器访问许可,该存储器访问许可包括指示读许可的第一位、指示写许可的第二位、或指示执行许可的第三位中的至少一个,基于访问模式、选择分配给用户模式访问的第一许可寄存器或分配给管理程序模式访问的第二许可寄存器中的一个;基于保护密钥标识在第一许可寄存器或第二许可寄存器中的所选择的一个中的字段,以及将存储器访问许可存储在被标识的字段中。
尽管是参考有限数量的实施例来描述本公开的,但是本领域技术人员将从其中理解到很多的修改和变体。所附权利要求书旨在涵盖落入本公开的真实精神和范围内的所有这些修改和变体。
设计会经历多个阶段,从创建到仿真到制造。表示设计的数据可以用多种方式来表示该设计。首先,像仿真中有用的那样,可以使用硬件描述语言或另一功能性描述语言来表示硬件。此外,可以在设计过程的一些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某个阶段都达到表示硬件模型中各种设备的物理布置的数据的层级。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的掩模的不同掩模层上存在或不存在各种特征的数据。在任何设计表示中,数据可以被存储在任何形式的机器可读介质中。存储器或者磁或光存储设备(诸如,盘)可以是存储经由光或电波发送的信息的机器可读介质,调制或以其他方式生成这些光或电波以发送这些信息。当发送指示或承载代码或设计的电载波达到实现该电信号的复制、缓冲或重新发送的程度时,即产生了新的副本。因此,通信供应商或网络供应商会在有形机器可读介质上至少临时地存储具体化本公开的诸个实施例的技术的项目(诸如,编码在载波中的信息)。
在本文中使用的模块指的是硬件、软件、和/或固件的任意组合。作为示例,模块包括与非瞬态介质相关联的诸如微控制器之类的硬件,该非瞬态介质用于存储适于由该微控制器执行的代码。因此,在一个实施例中,对模块的引用是指硬件,该硬件被专门配置成识别和/或执行要保存在非瞬态介质上的代码。另外,在另一实施例中,模块的使用是指包括代码的非瞬态介质,该代码专门适于由微控制器执行以进行预定操作。并且可推断,在又一实施例中,术语模块(在该示例中)可以指微控制器和非瞬态介质的组合。通常,被示为分开的模块边界一般不同而且有可能重叠。例如,第一和第二模块可共享硬件、软件、固件、或它们的组合,同时可能保留某些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括诸如晶体管、寄存器之类的硬件或诸如可编程逻辑器件之类的其它硬件。
在一个实施例中,短语“被配置成”的使用指的是安排、合在一起、制造、提供销售、进口和/或设计装置、硬件、逻辑或元件以执行指定和/或确定的任务。在该示例中,没有操作的装置或其元件仍然“被配置成”执行指定任务,如果它被设计、耦合、和/或互连以执行所述指定任务的话。作为纯说明性示例,在操作期间,逻辑门可以提供0或1。但“被配置成”向时钟提供启用信号的逻辑门不包括可提供1或0的每一潜在逻辑门。而是,该逻辑门是以在操作期间1或0的输出用于启用时钟的某种方式来耦合的逻辑门。再次注意,术语“被配置成”的使用不要求操作,而是集中于装置、硬件、和/或元件的潜在状态,其中在该潜在状态中,该装置、硬件和/或元件被设计成在该装置、硬件和/或元件正在操作时执行特定任务。
此外,在一个实施例中,短语“用于”、“能够/能够用于”和/或“能用于”的使用指的是一些装置、逻辑、硬件、和/或元件按这种方式设计来以指定方式启用对该装置、逻辑、硬件、和/或元件的使用。如上注意的,在一个实施例中,用于、能够、或能用于的使用指的是装置、逻辑、硬件、和/或元件的潜在状态,其中该装置、逻辑、硬件、和/或元件没有正在操作而是被按这种方式设计来以指定方式启用装置的使用。
如在本文中所使用的值包括数字、状态、逻辑状态、或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值、或多个逻辑值的使用也被称为1和0,这简单地表示了二进制逻辑状态。例如,1指的是逻辑高电平,0指的是逻辑低电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元能够保持单个逻辑值或多个逻辑值。不过,也使用了计算机***中的值的其它表示。例如,十进制数十还可以被表示为二进制值910和十六进制字母A。因此,值包括能够被保存在计算机***中的信息的任何表示。
而且,状态也可由值或值的部分来表示。作为示例,诸如逻辑1之类的第一值可表示默认或初始状态,而诸如逻辑0之类的第二值可表示非默认状态。此外,在一个实施例中,术语重置和置位分别指的是默认和已更新的值或状态。例如,默认值潜在地包括高逻辑值,即,复位,而更新的值潜在地包括低逻辑值,即,置位。注意,可以使用值的任何组合来表示任意数量的状态。
上述方法、硬件、软件、固件或代码的实施例可以经由存储在机器可访问、机器可读、计算机可访问、或计算机可读介质上可由处理元件执行的指令或代码来实现。非瞬态机器可访问/可读介质包括提供(即存储和/或发送)诸如计算机或电子***之类的机器可读的形式的信息的任何机制。例如,非瞬态机器可访问介质包括:随机存取存储器(RAM),诸如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;用于保持从瞬态(传播)信号(例如载波、红外信号、数字信号)接收的信息的其它形式的存储设备;等等,这些与可从其接收信息的非瞬态介质相区别。
被用于对逻辑进行编程以执行本公开的诸个实施例的指令可被存储在***的存储器(诸如,DRAM、高速缓存、闪存、或其他存储器)中。此外,指令可经由网络或通过其他计算机可读介质来分配。因此,机器可读介质可包括用于以机器(例如,计算机)可读的形式存储或发送信息的任何机制,但不限于:软盘、光盘、紧致盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或在互联网上经由电、光、声、或其他形式的传播信号(例如,载波、红外信号、数字信号等)发送信息中所使用的有形的机器可读存储器。因此,计算机可读介质包括适用于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形的机器可读介质。
本说明书中通篇对“一个实施例”或“实施例”的引用意指结合所述实施例描述的特定的特征、结构或特性被包括在本公开的至少一个实施例中。因此,在整篇说明书中的不同位置出现短语“在一个实施例中”或“在实施例中”不一定都是指同一个实施例。此外,在一个或多个实施例中,能以任何合适的方式来组合特定的特征、结构或特性。
在上述说明书中,已经参考特定示例性实施例给出了详细描述。然而,显然可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本公开的更宽泛精神和范围。相应地,应当认为说明书和附图是说明性的而不是限制性的。而且,实施例和其它示例性语言的上述使用不一定指的是同一实施例或同一示例,而可能指的是不同和独特的实施例,也有可能是同一实施例。

Claims (24)

1.一种处理***,包括:
处理核,用于执行任务;以及
存储器管理单元,耦合至所述处理核,包括:
存储单元,用于存储页表条目,所述页表条目包括存储器帧的一个或多个标识符、保护密钥、以及指示一个或多个存储器帧根据用户模式还是根据管理程序模式可访问的访问模式位;
第一许可寄存器,与所述用户模式相关联,所述第一许可寄存器用于存储多个字段,所述多个字段中的每一个包括在所述用户模式下反映一组存储器访问许可的一组位;以及
第二许可寄存器,与所述管理程序模式相关联,所述第二许可寄存器用于存储多个字段,所述多个字段中的每一个包括在所述管理程序模式下反映一组存储器访问许可的一组位,
其中所述保护密钥用于检索所述第一许可寄存器和所述第二许可寄存器中的字段。
2.如权利要求1所述的处理***,其特征在于,所述存储器管理单元进一步包括复用器,所述复用器包括耦合至所述第一许可寄存器的第一输入、耦合至所述第二许可寄存器的第二输入、以及耦合至所述访问模式位的控制引脚。
3.如权利要求1和2中的任一项所述的处理***,其特征在于,响应于所述访问模式位指示所述用户模式,复用器将存储在所述第一许可寄存器的多个字段中的一个字段中的第一组位提供给所述复用器的输出,以及响应于所述访问模式位指示所述管理程序模式,所述复用器将存储在所述第二许可寄存器的多个字段中的一个字段中的第二组位提供给所述复用器的输出。
4.如权利要求3所述的处理***,其特征在于,所述第一许可寄存器的多个字段中的一个字段是根据所述页表条目的所述保护密钥选择的,并且所述第二许可寄存器的多个字段中的一个字段是根据所述页表条目的所述保护密钥选择的。
5.如权利要求3所述的处理***,其特征在于,所述第一组位包括指示读许可的第一位、指示写许可的第二位、或指示执行许可的第三位中的至少一个,所述第二组位包括指示读许可的第一位、指示写许可的第二位、或指示执行许可的第三位中的至少一个。
6.如权利要求5所述的处理***,其特征在于,所述页表条目包括多个状态位。
7.如权利要求6所述的处理***,其特征在于,所述存储器管理单元包括控制器,用于接收所述多个状态位以及基于所述多个状态位确定第一组存储器访问许可,并且其中所述第一组存储器访问许可包括指示读许可的第一位、指示写许可的第二位、或指示执行许可的第三位中的至少一个。
8.如权利要求7所述的处理***,其特征在于,所述存储器管理单元包括AND逻辑,所述AND逻辑包括用于接收所述第一组存储器访问许可的第一输入以及用于接收来自所述复用器的输出的第二组存储器访问许可的第二输入,其中所述AND逻辑基于所述第一组存储器访问许可和所述第二组存储器访问许可生成一组最终存储器访问许可。
9.如权利要求8所述的处理***,其特征在于,所述存储器管理单元基于所述最终存储器访问许可将任务访问提供给所述一个或多个存储器帧。
10.如权利要求1所述的处理***,其特征在于,所述任务具有用户模式访问或管理程序模式访问之一的特权等级。
11.如权利要求1和10中的任一项所述的处理***,其特征在于,所述第一许可寄存器是具有所述用户模式访问或所述管理程序模式访问之一的特权等级的所述任务可访问的。
12.如权利要求11所述的处理***,其特征在于,所述第一许可寄存器包括所述任务可设置的多个许可位,所述任务具有所述用户模式访问或所述管理程序模式访问之一的特权等级。
13.如权利要求12所述的处理***,其特征在于,具有所述用户模式访问或所述管理程序模式访问之一的特权等级的所述任务用于标识存储在所述第一许可寄存器中的许可位并且设置所述许可位以禁用所述许可。
14.如权利要求1所述的处理***,其特征在于,所述保护密钥包括n位,并且所述第一许可寄存器和所述第二许可寄存器中的每一个包括2n个字段。
15.一种片上***SoC,包括:
存储器;以及
处理器,通信地耦合至所述存储器,包括:
处理核,用于执行任务;以及
存储器管理单元,耦合至所述处理核,包括:
存储单元,用于存储页表条目,所述页表条目包括存储器帧的一个或多个标识符、保护密钥、以及指示一个或多个存储器帧根据用户模式还是根据管理程序模式可访问的访问模式位;
第一许可寄存器,与所述用户模式相关联,所述第一许可寄存器用于存储多个字段,所述多个字段中的每一个包括在所述用户模式下反映一组存储器访问许可的一组位;以及
第二许可寄存器,与所述管理程序模式相关联,所述第二许可寄存器用于存储多个字段,所述多个字段中的每一个包括在所述管理程序模式下反映一组存储器访问许可的一组位,
其中所述保护密钥用于检索所述第一许可寄存器和所述第二许可寄存器中的字段。
16.如权利要求15所述的SoC,其特征在于,所述存储器管理单元进一步包括复用器,所述复用器包括耦合至所述第一许可寄存器的第一输入、耦合至所述第二许可寄存器的第二输入、以及耦合至所述访问模式位的控制引脚。
17.如权利要求15和16中的任一项所述的SoC,其特征在于,响应于所述访问模式位指示所述用户模式,复用器将存储在所述第一许可寄存器的多个字段中的一个字段中的第一组位提供给所述复用器的输出,以及响应于所述访问模式位指示所述管理程序模式,所述复用器将存储在所述第二许可寄存器的多个字段中的一个字段中的第二组位提供给所述复用器的输出。
18.如权利要求17所述的SoC,其特征在于,根据所述页表条目的所述保护密钥选择所述第一许可寄存器的多个字段中的一个字段,以及根据所述页表条目的所述保护密钥选择所述第二许可寄存器的多个字段中的一个字段。
19.如权利要求17所述的SoC,其特征在于,所述第一组位包括指示读许可的第一位、指示写许可的第二位、或指示执行许可的第三位中的至少一个,所述第二组位包括指示读许可的第一位、指示写许可的第二位、或指示执行许可的第三位中的至少一个。
20.如权利要求19所述的SoC,其特征在于,所述页表条目包括多个状态位,其中所述存储器管理单元包括用于接收所述多个状态位以及基于所述多个状态位确定第一组存储器访问许可的控制器,并且其中所述第一组存储器访问许可包括指示读许可的第一位、指示写许可的第二位、或指示执行许可的第三位中的至少一个,并且其中所述存储器管理单元包括AND逻辑,所述AND逻辑包括用于接收所述第一组存储器访问许可的第一输入以及用于接收来自所述复用器的输出的第二组存储器访问许可的第二输入,其中所述AND逻辑基于所述第一组存储器访问许可和所述第二组存储器访问许可生成一组最终存储器访问许可。
21.一种方法,包括:
由处理核基于任务的特权等级确定所述任务的访问模式,其中所述访问模式是用户模式访问或管理程序模式访问中的一个;
确定由所述任务分配的存储器帧的标识符;
由执行操作***的所述处理核选择所述任务的保护密钥;
将所述保护密钥、所述访问模式以及所述标识符存储在耦合至所述处理核的存储器管理单元的页表条目中;
确定所述任务的存储器访问许可,所述存储器访问许可包括指示读许可的第一位、指示写许可的第二位、或指示执行许可的第三位中的至少一个;
基于所述访问模式,选择与所述用户模式访问相关联的第一许可寄存器或与所述管理程序模式访问相关联的第二许可寄存器中的一个;
基于所述保护密钥,标识在所述第一许可寄存器或所述第二许可寄存器中的所选择的一个中的字段;以及
将所述存储器访问许可存储在被标识的所述字段中。
22.如权利要求21所述的方法,其特征在于,所述第一许可寄存器是具有所述用户模式访问的特权等级的任务可访问的,以及其中所述第一许可寄存器包括具有所述用户模式访问的特权等级的任务可设置的写禁用位。
23.一种设备,包括:用于执行如权利要求21和22中的任一项所述的方法的装置。
24.一种机器可读非瞬态介质,具有存储于其上的被执行时进行以下操作的程序代码,所述操作包括:
由处理核基于任务的特权等级确定所述任务的访问模式,其中所述访问模式是用户模式访问或管理程序模式访问中的一个;
确定由所述任务分配的存储器帧的标识符;
由执行操作***的所述处理核选择所述任务的保护密钥;
将所述保护密钥、所述访问模式以及所述标识符存储在耦合至所述处理核的存储器管理单元的页表条目中;
确定所述任务的存储器访问许可,所述存储器访问许可包括指示读许可的第一位、指示写许可的第二位、或指示执行许可的第三位中的至少一个;
基于所述访问模式,选择与所述用户模式访问相关联的第一许可寄存器或与所述管理程序模式访问相关联的第二许可寄存器中的一个;
基于所述保护密钥,标识在所述第一许可寄存器或所述第二许可寄存器中的所选择的一个中的字段;以及
将所述存储器访问许可存储在被标识的所述字段中。
CN201580050956.5A 2014-10-21 2015-08-19 具有独立的用户域与管理程序域的存储器保护密钥架构 Active CN106716434B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/519,648 US10489309B2 (en) 2014-10-21 2014-10-21 Memory protection key architecture with independent user and supervisor domains
US14/519,648 2014-10-21
PCT/US2015/045953 WO2016064469A1 (en) 2014-10-21 2015-08-19 Memory protection key architecture with independent user and supervisor domains

Publications (2)

Publication Number Publication Date
CN106716434A CN106716434A (zh) 2017-05-24
CN106716434B true CN106716434B (zh) 2020-09-29

Family

ID=55749193

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580050956.5A Active CN106716434B (zh) 2014-10-21 2015-08-19 具有独立的用户域与管理程序域的存储器保护密钥架构

Country Status (6)

Country Link
US (1) US10489309B2 (zh)
EP (1) EP3210123B1 (zh)
KR (1) KR102269006B1 (zh)
CN (1) CN106716434B (zh)
TW (1) TWI574156B (zh)
WO (1) WO2016064469A1 (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10126985B2 (en) 2015-06-24 2018-11-13 Intel Corporation Application driven hardware cache management
WO2017103651A1 (en) * 2015-12-15 2017-06-22 Lzlabs Gmbh Protection key management and prefixing in virtual address space legacy emulation system
US9852084B1 (en) * 2016-02-05 2017-12-26 Apple Inc. Access permissions modification
US10346306B2 (en) 2016-04-02 2019-07-09 Intel Corporation Processor and method for memory performance monitoring utilizing a monitor flag and first and second allocators for allocating virtual memory regions
US20180024944A1 (en) * 2016-07-22 2018-01-25 Qualcomm Incorporated Methods and apparatus for access control in shared virtual memory configurations
US10114768B2 (en) 2016-08-29 2018-10-30 Intel Corporation Enhance memory access permission based on per-page current privilege level
US10713177B2 (en) 2016-09-09 2020-07-14 Intel Corporation Defining virtualized page attributes based on guest page attributes
US10884952B2 (en) * 2016-09-30 2021-01-05 Intel Corporation Enforcing memory operand types using protection keys
US10866902B2 (en) * 2016-12-28 2020-12-15 Intel Corporation Memory aware reordered source
US20180285262A1 (en) * 2017-03-31 2018-10-04 Intel Corporation Techniques for shared virtual memory access protection
US20200184115A1 (en) * 2017-08-08 2020-06-11 Ric B RICHARDSON Method and Apparatus for Operating a Computer
US11687654B2 (en) * 2017-09-15 2023-06-27 Intel Corporation Providing isolation in virtualized systems using trust domains
US10684945B2 (en) * 2018-03-29 2020-06-16 Intel Corporation System, apparatus and method for providing key identifier information in a non-canonical address space
US11914726B2 (en) * 2018-08-30 2024-02-27 Micron Technology, Inc. Access control for processor registers based on execution domains
US11481241B2 (en) 2018-08-30 2022-10-25 Micron Technology, Inc. Virtual machine register in a computer processor
US11500665B2 (en) 2018-08-30 2022-11-15 Micron Technology, Inc. Dynamic configuration of a computer processor based on the presence of a hypervisor
US10915465B2 (en) 2018-08-30 2021-02-09 Micron Technology, Inc. Memory configured to store predefined set of domain registers for instructions being executed in computer processors
US11182507B2 (en) 2018-08-30 2021-11-23 Micron Technology, Inc. Domain crossing in executing instructions in computer processors
US10915457B2 (en) 2018-08-30 2021-02-09 Micron Technology, Inc. Memory access control through permissions specified in page table entries for execution domains
US10942863B2 (en) 2018-08-30 2021-03-09 Micron Technology, Inc. Security configurations in page table entries for execution domains using a sandbox application operation
US11188477B2 (en) 2018-09-11 2021-11-30 Apple Inc. Page protection layer
US11366895B2 (en) * 2018-09-28 2022-06-21 Intel Corporation Mitigating side-channel attacks using executable only memory (XOM)
US11003584B2 (en) 2019-02-28 2021-05-11 Intel Corporation Technology for managing memory tags
EP3761205A1 (en) * 2019-07-04 2021-01-06 Secure Thingz Limited System-on-chip arrangement
US11573710B2 (en) * 2019-08-20 2023-02-07 Microsoft Technology Licensing, Llc Protection domains for files at file-level or page-level
US11734440B2 (en) * 2019-09-09 2023-08-22 Arm Limited Memory access transaction with security check indication
CN110990331B (zh) * 2019-12-03 2023-09-05 飞腾信息技术有限公司 片上***密钥管理方法、装置、设备及可读存储介质
GB2611823B (en) * 2021-10-18 2023-10-11 Advanced Risc Mach Ltd Technique for handling sealed capabilities

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020046305A1 (en) * 1999-02-17 2002-04-18 Babaian Boris A. Method for effective binary translation between different instruction sets using emulated supervisor flag and multiple page tables
US20030014667A1 (en) * 2001-07-16 2003-01-16 Andrei Kolichtchak Buffer overflow attack detection and suppression
US20040105298A1 (en) * 2002-11-18 2004-06-03 Arm Limited Apparatus and method for managing processor configuration data
WO2004046738A3 (en) * 2002-11-18 2004-10-21 Advanced Risc Mach Ltd Virtual to physical memory address mapping within a system having a secure domain and a non-secure domain
CN1723448A (zh) * 2002-11-18 2006-01-18 Arm有限公司 用于保护以防恶意程序的安全存储器
US20060036830A1 (en) * 2004-07-31 2006-02-16 Dinechin Christophe De Method for monitoring access to virtual memory pages
CN101105772A (zh) * 2006-07-13 2008-01-16 国际商业机器公司 控制计算机可读存储器的方法和管理器数据单元的装置
US20110202739A1 (en) * 2010-02-16 2011-08-18 Arm Limited Restricting memory areas for an instruction read in dependence upon a hardware mode and a security flag
US20120124429A1 (en) * 2010-11-16 2012-05-17 Hyun-Joo Ahn Apparatus and method for tracing memory access information
US20130117531A1 (en) * 2007-12-31 2013-05-09 Edward Grochowski Method, system, and apparatus for page sizing extension
EP2603872A1 (en) * 2010-08-11 2013-06-19 ARM Limited Memory access control
CN104025041A (zh) * 2011-12-29 2014-09-03 英特尔公司 管理员模式执行保护

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7350074B2 (en) 2005-04-20 2008-03-25 Microsoft Corporation Peer-to-peer authentication and authorization
KR101396831B1 (ko) * 2007-03-30 2014-05-21 삼성전자주식회사 메모리 접근 제어 방법
US9325677B2 (en) 2010-05-17 2016-04-26 Blackberry Limited Method of registering devices
US20120137079A1 (en) 2010-11-26 2012-05-31 International Business Machines Corporation Cache coherency control method, system, and program
KR20140035082A (ko) 2012-09-13 2014-03-21 삼성전자주식회사 메모리 관리방법

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020046305A1 (en) * 1999-02-17 2002-04-18 Babaian Boris A. Method for effective binary translation between different instruction sets using emulated supervisor flag and multiple page tables
US20030014667A1 (en) * 2001-07-16 2003-01-16 Andrei Kolichtchak Buffer overflow attack detection and suppression
US20040105298A1 (en) * 2002-11-18 2004-06-03 Arm Limited Apparatus and method for managing processor configuration data
WO2004046738A3 (en) * 2002-11-18 2004-10-21 Advanced Risc Mach Ltd Virtual to physical memory address mapping within a system having a secure domain and a non-secure domain
CN1723448A (zh) * 2002-11-18 2006-01-18 Arm有限公司 用于保护以防恶意程序的安全存储器
US20060036830A1 (en) * 2004-07-31 2006-02-16 Dinechin Christophe De Method for monitoring access to virtual memory pages
CN101105772A (zh) * 2006-07-13 2008-01-16 国际商业机器公司 控制计算机可读存储器的方法和管理器数据单元的装置
US20130117531A1 (en) * 2007-12-31 2013-05-09 Edward Grochowski Method, system, and apparatus for page sizing extension
US20110202739A1 (en) * 2010-02-16 2011-08-18 Arm Limited Restricting memory areas for an instruction read in dependence upon a hardware mode and a security flag
EP2603872A1 (en) * 2010-08-11 2013-06-19 ARM Limited Memory access control
US20120124429A1 (en) * 2010-11-16 2012-05-17 Hyun-Joo Ahn Apparatus and method for tracing memory access information
CN104025041A (zh) * 2011-12-29 2014-09-03 英特尔公司 管理员模式执行保护

Also Published As

Publication number Publication date
EP3210123B1 (en) 2019-07-03
EP3210123A1 (en) 2017-08-30
TW201633153A (zh) 2016-09-16
EP3210123A4 (en) 2018-05-09
WO2016064469A1 (en) 2016-04-28
KR20170043635A (ko) 2017-04-21
TWI574156B (zh) 2017-03-11
US10489309B2 (en) 2019-11-26
CN106716434A (zh) 2017-05-24
US20160110298A1 (en) 2016-04-21
KR102269006B1 (ko) 2021-06-28

Similar Documents

Publication Publication Date Title
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
CN109564552B (zh) 用于存储器管理的方法、设备和***
US20200379917A1 (en) Defining virtualized page attributes based on guest page attributes
US10901899B2 (en) Reducing conflicts in direct mapped caches
US10282306B2 (en) Supporting secure memory intent
US10394595B2 (en) Method to manage guest address space trusted by virtual machine monitor
US9798666B2 (en) Supporting fault information delivery
US10922114B2 (en) System and method to improve nested virtual machine monitor performance
US10452423B2 (en) Method and apparatus for light-weight virtualization contexts
CN109690546B (zh) 支持对客户机飞地存储器页的超额订阅

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant