CN109643244A - 映射安全策略组寄存器 - Google Patents
映射安全策略组寄存器 Download PDFInfo
- Publication number
- CN109643244A CN109643244A CN201780051868.6A CN201780051868A CN109643244A CN 109643244 A CN109643244 A CN 109643244A CN 201780051868 A CN201780051868 A CN 201780051868A CN 109643244 A CN109643244 A CN 109643244A
- Authority
- CN
- China
- Prior art keywords
- group
- register
- access
- hardware component
- strategy group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6281—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
-
- 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
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/032—Protect output to user by software means
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1072—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
Abstract
一种用于对系统寄存器组进行重新映射的示例方法。该方法可包括由安全访问控制机制接收将系统寄存器组中的一个系统寄存器从与第一访问策略组的关联重新映射到与第二访问策略组的关联的请求。该方法可包括将重新映射数组存储在安全访问控制机制的存储器处,其中,存储在重新映射数组的第一条目中的第一值将系统寄存器组中的一个系统寄存器映射到第二访问策略组。该方法可包括由安全访问控制机制使用重新映射数组将系统寄存器组中的一个系统寄存器从与第一访问策略组的关联重新映射到与第二访问策略组的关联。
Description
背景技术
随着计算机系统正在变得更加复杂,计算系统中的硬件组件被连接在一起,以实现这些硬件组件之间的通信。这些硬件组件可以是计算机系统中的发起该计算机系统中的事务的设备。硬件组件可包括经由总线、互连或衬底被连接的中央处理单元(CPU)、存储器控制器、存储器中枢、输入/输出(I/O)中枢等等。安全软件、固件和硬件可以在计算机系统中用于其他硬件组件,以管理计算机系统中的硬件组件对该计算机系统中的资产和资源的访问,这些资产和资源诸如,硬件组件处的存储器和寄存器。
附图说明
通过下文给出的具体实施方式并通过本发明的各实施例的附图,将更完整地理解本发明的各实施例。
图1图示出根据一个实施例的具有硬件组件的计算机系统,这些硬件组件耦合至插槽内结构(intra-socket fabric)。
图2图示出根据一个实施例的RAC寄存器、WAC寄存器、以及CP寄存器。
图3图示出根据一个实施例的设备访问动态随机存取存储器(DRAM)的访问路径。
图4A图示出根据一个实施例的策略组到策略组信息的映射。
图4B图示出根据一个实施例的具有寄存器阵列的安全访问控制机制,该机制用于改变与发起方安全属性(SAI)相关联的策略组,这些SAI与第二硬件组件和第三硬件组件相关联。
图5图示出根据一个实施例的策略组到策略组信息的映射。
图6是图示出根据一个实施例的图1的处理器的微架构的框图。
图7图示出根据一个实施例的包括用于执行访问控制的逻辑电路的处理器的微架构的框图。
图8是根据一种实现方式的计算系统的框图。
图9是根据另一实现方式的计算系统的框图。
图10是根据一种实现方式的芯片上系统的框图。
图11图示出计算系统的框图的另一实现方式。
图12图示出计算系统的框图的另一实现方式。
具体实施方式
计算机系统中的安全问题是日益严重的问题。通常通过使用诸如反病毒、反间谍软件以及防火墙软件之类的安全软件来解决病毒、木马程序、恶意软件以及勒索软件。许多安全攻击针对计算机系统的软件层面,并且被设计成访问各种操作系统或文件资源。例如,病毒可通过下载包含隐藏代码的可执行程序来获得对计算机系统中的文件的访问。为了防止这种类型的攻击,可使用反病毒软件来扫描所下载的文件以查找已知或可疑的代码。
安全攻击还可在硬件层面进行。安全攻击可攻击分立的组件,诸如,中央处理单元(CPU)、存储器控制器或中枢、输入/输出(I/O)中枢以及互连结构。互连结构可以包括总线、互连、存储器结构、或内部连接结构。
安全策略可由计算系统中的安全软件执行,以防止对该计算系统中的硬件资源和资产的不安全的访问。例如,发起方安全属性(SAI)被定义成用于表示计算机系统中的硬件组件的特性。SAI用于作出针对计算机系统中的硬件组件和其他资源的访问决策。SAI由硬件实体生成,并伴随由对应的硬件组件发起的每个事务。采用策略寄存器来定义对硬件组件或资源的读取和写入访问的策略,并限制可以配置或更新这些策略的受信任的代理或微代码(uCode)程序。策略寄存器可以包括控制策略(CP)寄存器、写入访问控制(WAC)寄存器以及读取访问控制(RAC)寄存器。
CP寄存器存储指示可访问或修改CP寄存器、WAC寄存器或RAC寄存器的硬件组件的条目。WAC寄存器存储指示属于可向计算机系统中的寄存器写入的访问策略组的硬件组件的条目。计算机系统中的寄存器可被集成到硬件组件中或者耦合至硬件组件。RAC寄存器存储指示属于可从计算机系统中的寄存器读取的访问策略组的硬件组件的条目。访问策略组可以是组中具有相同的许可等级的一个或多个硬件组件。在一个示例中,与访问策略组相关联的一个或多个硬件组件可以是同一类型的硬件组件,例如,处理器核、存储器控制器等等。在另一示例中,与访问策略组相关联的一个或多个硬件组件可以是限定在计算机系统内以具有同一类型的访问等级的硬件组件,访问等级诸如,操作系统(OS)访问等级、微代码或更高的代码访问等级等等。
常规意义上而言,访问策略组与硬件组件之间的关联是硬编码的且静态的。然而,与硬件组件相关联的访问策略组可能是不正确的或者需要被改变。例如,寄存器定义语言(RDL)中的错误或软件缺陷最初可能将硬件组件与错误的访问策略组相关联。将硬件组件与错误的访问策略组相关联可能导致硬件组件被拒绝访问该硬件组件需要访问的寄存器中的数据。将硬件组件与错误的访问策略组相关联还可能授权该硬件组件访问应当限制由该硬件组件访问的数据。另外,当访问策略组的属性改变时,访问策略组中的硬件组件可能需要被改变到不同的访问策略组,以维持硬件组件的恰当的访问等级。访问策略组与寄存器之间硬编码的关联可以限制计算系统改变需要被改变的访问策略组关联,以向硬件组件提供对计算机系统中的寄存器或存储器区域的恰当的访问。
本文中所描述的实施例可通过提供用于改变与硬件组件相关联的访问策略组的机制或设备来解决上述缺陷。在一个实施例中,安全访问控制机制可以存储用于将硬件组件从被映射到第一访问策略组重新映射到被映射到第二访问策略组的映射数组。在另一实施例中,安全访问控制机制或处理器可将硬件组件的寄存器的位字段中的值从指示该硬件组件与第一访问策略组的关联的第一值改变为指示寄存器与第二访问策略组的关联的第二值。
图1图示出根据一个实施例的具有硬件组件112-140的计算机系统100,硬件组件112-140耦合至插槽内结构110。在一个示例中,硬件组件可以是计算机100中发起资源访问请求以访问存储器、寄存器、系统寄存器或计算机系统100中的其他硬件组件的其他资源的组件。在另一示例中,硬件组件可以是计算机系统100中接收来自另一硬件组件的资源访问请求以供该另一硬件组件访问该硬件组件的存储器、寄存器、系统寄存器或其他资源的组件。硬件组件112-140可以包括输入/输出(I/O)控制器112、设备114和116、插槽内接口118、链路120和122、存储器控制器124和138、动态随机存取存储器(DRAM)126和140、加速器128、存储器130、高速缓存132、以及处理器核134和136。设备114和116可以是外围设备,诸如,计算机鼠标、打印机、键盘、外部硬驱动器、外部图形处理单元(GPU)等等。链路120和122可以是网络接口卡(NIC)、桥接器、网络交换机等等。在一个实施例中,输入/输出(I/O)控制器112、插槽内接口118、存储器控制器124和138、加速器128、存储器130、高速缓存132、以及处理器核134和136可耦合至插槽内结构110。设备114和116可耦合至I/O控制器112,链路120和122可耦合至插槽内接口118,DRAM 126可耦合至存储器控制器124,存储器130可耦合至加速器128,并且DRAM 140可耦合至存储器控制器138。
插槽内结构110是将硬件组件112-140互连在一起以提供硬件组件112-140之间的资源访问的接口。硬件组件112-140可彼此交互,以卸载处理工作负荷并共享数据。硬件组件112-140之间的交互可通过访问与硬件组件112-140相关联的存储器、存储资源或寄存器来促进。在一个示例中,处理器核136可访问I/O控制器112、设备114和116、插槽内接口118、链路120和122、存储器控制器124和138、DRAM 126和140、加速器128、存储器130、高速缓存132、以及处理器核134。在另一示例中,插槽内结构110可将I/O控制器112与存储器控制器124互连。当经由插槽内结构110互连时,耦合至I/O控制器112的设备114可访问存储在DRAM126中的数据,该DRAM 126耦合至存储器控制器124。
计算机系统100可以是芯片上系统(SoC)。在一个示例中,处理器核134和136以及加速器128可包括被集成到SoC中的内部组件。在另一示例中,设备114和116可在SoC内部或外部。而且,软件和固件实体可在计算机系统100外部,并且可尝试通过链路120和122来访问计算机系统100的内部或外部资源。
插槽内结构110和硬件组件112-140包括数据和硬件资产,诸如,保护以免受对计算机系统100中的资源的未经授权的访问的控制策略(CP)寄存器、写入访问控制(WAC)寄存器以及读取访问控制(RAC)寄存器。计算机系统100中的资源可以包括硬件组件112-140、硬件组件112-140的寄存器、插槽内结构110等等。硬件组件112-140或插槽内结构110可包括用于定义对硬件组件112-140的访问控制的安全访问控制机制。
图2图示出根据一个实施例的RAC寄存器210、WAC寄存器220、以及CP寄存器230。RAC寄存器210、WAC寄存器220和CP寄存器230可以是在图1中的插槽内结构110或者硬件组件112-140中的一个或多个处存储的控制寄存器的集合。
RAC寄存器210存储指示针对不同访问策略组中的硬件组件的读取许可的位。WAC寄存器220存储指示针对一些访问策略组中的硬件组件所定义的写入许可的位。CP寄存器230存储指示可改变值的发起方的位,这些值可改变存储在RAC寄存器210、WAC寄存器220或CP寄存器230中的条目中的值。
当第一硬件组件请求对第二硬件组件的寄存器的读取访问时,该请求可以包括第一SAI。该请求的第一SAI可与在处理设备处存储的第二SAI匹配,或者被匹配为安全访问控制机制。该匹配可以指示第一硬件组件是第一访问策略组的部分。第二SAI可以指示第一访问策略组的读取许可等级在RAC寄存器210的条目212处,第一访问策略组的写入许可等级在WAC寄存器220的条目222处,并且第一访问策略组的控制策略许可等级在CP寄存器230的条目232处。
在一个实施例中,条目212、222或232中的位1指示第一策略组中的硬件组件(包括第一硬件组件)可访问图1中的计算机系统100中的寄存器中的任一寄存器,并且位0指示第一策略组中的硬件组件(包括第一硬件组件)不可访问图1中的计算机系统100中的寄存器中的任一寄存器。在另一实施例中,条目212、222或232中的位可指示针对第一访问策略组中的硬件组件访问计算机系统100中的其他硬件组件的寄存器的不同许可等级。例如,条目212中的位可以是101,指示第一访问策略组中的寄存器硬件组件可由第二策略组中的硬件组件读取,不可由第三策略组中的硬件组件读取,并且可由第四策略组中的硬件组件读取。
图3图示出根据一个实施例的设备114访问DRAM 126的访问路径350。除非以其他方式明确描述,否则如相同的附图标记所标注,图3中的特征中的一些与图1中的特征中的一些相同或类似。设备114可发起诸如读取请求或写入请求之类的事务,以访问DRAM 126并将该事务请求发送到I/O控制器112。响应于来自设备114的事务请求,I/O控制器112可生成SAI,并将该SAI附加到来自设备114的事务请求。I/O控制器112可经由插槽内结构110将该事务请求发送到存储器控制器124处的安全访问控制机制344。处理设备346可耦合至安全访问控制机制344。
存储器控制器124可包括控制寄存器。控制寄存器可包括RAC寄存器210、WAC寄存器220和CP寄存器230,以指示可以访问DRAM 126的硬件组件的策略组。控制寄存器的数量或类型不旨在是限制性的。例如,控制RAC寄存器210和WAC寄存器220可被组合到单个寄存器中。如下文更详细地讨论,安全访问控制机制344或处理设备346可确定设备114与其相关联的策略组以及该策略组中的硬件组件访问DRAM 126的许可等级。
通过将来自I/O控制器112的SAI与存储在存储器控制器124的寄存器中的SAI匹配,安全访问控制机制344或处理设备346可确定设备114读取DRAM 126或写入到DRAM 126的许可等级。例如,SAI可以是标识请求事务的硬件组件的位序列。在一个实施例中,用于匹配的位序列对于访问策略组或硬件组件可以是唯一的。例如,第一硬件组件可拥有具有位值0x10的唯一SAI,并且第二硬件组件可拥有具有位值0x11的唯一SAI。在另一实施例中,位序列可具有出于安全性目的所需要的区分等级。在一个示例中,一个或多个硬件组件可具有多于一个SAI,以区分不同处理器核的安全等级。在另一示例中,多个硬件组件可具有同一SAI,诸如,外部地连接的设备可具有指示硬件组件是计算系统中不受信任的设备的同一SAI。
存储在存储器控制器124的寄存器中的SAI可与访问策略组相关联。访问策略组可与访问策略组信息相关联,该访问策略组信息指示一个或多个硬件组件(包括设备114)访问DRAM 126的许可等级。当策略组的读取或写入许可等级指示该策略组中的硬件组件可访问DRAM 126时,存储器控制器124可以从DRAM 126读取数据并将该数据发送到设备114,或者向DRAM 126写入数据。
包括安全访问控制机制344和处理设备346的存储器控制器124不旨在是限制性的。计算机系统100中的硬件组件112-140可以包括安全访问控制机制,并且处理设备使用SAI来实施对由计算机系统100中的其他硬件组件112-140生成的事务的访问控制。与硬件组件112-140相关联的SAI的数量也不旨在是限制性的。在一个示例中,可向每个硬件组件分配一个SAI,或者可向每个硬件组件分配多个SAI。在另一示例中,SAI可被分配给多个硬件组件。
图4A图示出根据一个实施例的策略组422-426到策略组信息428-432的映射。除非以其他方式明确地描述,否则如相同的附图标记所标注,图4A中的特征中的一些与图3中的特征中的一些相同或类似。处理设备346可以包括寄存器416、418和420。寄存器416可以存储表示策略组1(422)的第一值。如以上所讨论,寄存器416还可存储与策略组1(422)相关联的SAI信息,该SAI信息可匹配事务请求的SAI信息。策略组1(422)与策略组1信息428相关联。策略组1信息428可以是存储在存储器设备或寄存器中的、指示访问策略组1(422)中的硬件组件访问另一硬件组件的许可等级的数据。
寄存器418可以存储表示与该寄存器418相关联的策略组2(424)的第二值。寄存器418还可存储与策略组2(424)相关联的SAI信息,该SAI信息可匹配事务请求的SAI信息。策略组2(424)与策略组2信息430相关联。策略组2信息430可以是存储在存储器设备或寄存器中的、指示访问策略组2(424)中的硬件组件访问另一硬件组件的许可等级的数据。
寄存器420可以存储表示与该寄存器420相关联的策略组3(426)的第三值。寄存器420还可存储与策略组3(426)相关联的SAI信息,该SAI信息可与事务请求的SAI信息匹配。策略组3(426)与策略组3信息432相关联。策略组3信息432可以是存储在存储器设备或寄存器中的、指示访问策略组3(426)中的硬件组件访问另一硬件组件的许可等级的数据。
处理设备346可使用策略组信息428-432来判定事务请求是否访问其他硬件组件。例如,第一硬件组件处的处理设备346可分别从第二硬件组件、第三硬件组件和第四硬件组件接收访问第一硬件组件处的寄存器的事务请求410、412和414。
在一个实施例中,第二硬件组件可向处理设备346发送事务请求410。事务请求410可包括由处理设备346匹配至第一策略组1(422)的SAI信息的第一SAI。处理设备346可标识与策略组1(422)相关的策略组1信息428。策略组信息可指示第二硬件组件访问第一硬件组件处的寄存器的许可等级。当策略组信息428指示第二硬件组件可访问该寄存器时,第二硬件组件可执行事务请求410,诸如,从该寄存器读取数据或向该寄存器写入数据。当策略组信息428指示第二硬件组件不可访问该寄存器时,第二硬件组件不可执行事务请求410。
第三硬件组件可向处理设备346发送事务请求412。处理设备346可确定第三硬件组件与策略组3(424)相关联,并且可判定策略组3信息430是否指示第三硬件组件具有访问寄存器的许可。第四硬件组件可向处理设备346发送事务请求414。处理设备346可确定第四硬件组件与策略组426相关联,并且可判定策略组信息432是否指示第四硬件组件具有访问寄存器的许可。
图4B图示出根据一个实施例的具有寄存器434和436的阵列的安全访问控制机制344,该机制用于改变与SAI相关联的策略组,这些SAI与第二硬件组件和第三硬件组件相关联。除非以其他方式明确地描述,否则如相同的附图标记所标注,图4B中的特征中的一些与图3和图4A中的特征中的一些相同或类似。
以由控制寄存器的集合(包括:CP寄存器、WAC寄存器和RAC寄存器)实施的可编程安全策略组的视角,安全访问控制机制344可提供对第一硬件组件处的寄存器或寄存器组的安全访问控制。安全访问控制机制344可包括寄存器(诸如,通用控制寄存器(UCR))的阵列。因此,UCR的阵列可以包括存储第一条目434的第一寄存器以及存储第二条目436的第二寄存器。
存储在寄存器阵列中的第一寄存器中的第一条目434可存储表示策略组2(424)的位。安全访问控制机制344可使用第一条目将与第二硬件组件相关联的策略组从策略组1(422)重新映射到策略组2(424)。为了将与第二硬件组件相关联的策略组从策略组1(422)重新映射到策略组2(424),安全访问控制机制344可将匹配第一事务请求410中的SAI信息的SAI信息存储在条目434中。条目416中的SAI信息可与策略组2(424)相关联,并且策略组2(424)可与策略组2信息(430)相关联。
存储在阵列中的第二寄存器中的第二条目436可存储表示策略组4(440)的位。安全访问控制机制344可使用第二条目将与第三硬件组件相关联的策略组从策略组2(424)重新映射到策略组4(440)。为了将与第三硬件组件相关联的策略组从策略组2(424)重新映射到策略组4(440),安全访问控制机制344可将匹配第二事务请求412中的SAI信息的SAI信息存储在条目436中。条目436中的SAI信息可与策略组4(440)相关联,并且策略组4(440)可与策略组4信息(442)相关联。
硬件组件可使用安全访问控制机制344来判定访问硬件组件的事务请求是否被许可。例如,安全访问控制机制436可接收如下请求:将针对第二硬件组件的SAI信息从与访问策略组1(422)的关联重新映射到与访问策略组2(424)的关联,并且将针对第三硬件组件的SAI信息从与访问策略组2(424)的关联重新映射到与访问策略组4(440)的关联。该请求包括:重新映射数组寄存器434重新映射针对第二硬件组件和第三硬件组件的SAI信息。存储在重新映射数组的第一条目434中的位的第一集合将针对第二硬件组件的SAI信息映射到访问策略组2(424)。存储在重新映射数组的第二条目436中的位的第二集合将针对第三硬件组件的SAI信息映射到访问策略组4(440)。安全访问控制机制436可将重新映射数组存储在该安全访问控制机制436的存储器处。访问策略组信息428、430、432和442可包括具有不同访问等级的硬件组件的许可等级,这些访问等级诸如,操作系统(OS)访问等级、微代码或更高代码访问等级或预留的访问等级。与硬件组件相关联的策略组的重新映射可在这些硬件组件已经被集成到计算机系统之后执行。
第一硬件组件可接收来自计算机系统中的第二硬件组件、第三硬件组件和第四硬件组件的事务请求410、412和414。第一硬件组件可使用安全访问控制机制436和处理设备326来确定第二硬件组件、第三硬件组件和第四硬件组件分别执行事务请求410-414的许可等级。例如,第二硬件组件可向第一硬件组件发送事务请求410。第一硬件组件可向安全访问控制机制436发送该事务请求410。事务请求410可包括第一SAI。安全访问控制机制436可查询寄存器434和436,以判定策略组2(424)或策略组4(440)是否包括匹配针对第二硬件组件的第一SAI的SAI信息。安全访问控制机制436可判定策略组2(424)中的SAI信息匹配针对第二硬件组件的第一SAI。安全访问控制机制436随后可以判定策略组2信息(430)是否指示第二硬件组件具有执行所请求的事务410的许可。当策略组2信息(430)指示第二硬件组件具有执行所请求的事务410的许可时,第二硬件组件可执行所请求的事务410。当策略组2信息(430)指示第二硬件组件不具有执行所请求的事务410的许可时,第二硬件组件不可执行所请求的事务410。当第二硬件组件不具有执行所请求的事务410的许可时,第一硬件组件可向第二硬件组件发送拒绝该请求的消息。
第三硬件组件可向第一硬件组件发送事务请求412。第一硬件组件可向安全访问控制机制436发送该事务请求412。事务请求412可包括第二SAI。安全访问控制机制436可查询寄存器434和436,以判定策略组2(424)或策略组4(440)是否包括匹配第一SAI的SAI信息。安全访问控制机制436可判定策略组4(440)中的SAI信息匹配第二SAI。安全访问控制机制436随后可以判定策略组4信息(442)是否指示第三硬件组件具有执行所请求的事务410的许可。当策略组4信息(442)指示第三硬件组件具有执行所请求的事务412的许可时,第三硬件组件可执行所请求的事务412。当策略组4信息(442)指示第三硬件组件不具有对于所请求的事务412的许可时,第三硬件组件不可执行所请求的事务412。
第四硬件组件可向第一硬件组件发送事务请求414。第一硬件组件可向安全访问控制机制436发送该事务请求414。事务请求412可包括第三SAI。安全访问控制机制436可查询寄存器434和436,以判定策略组2(424)或策略组4(440)是否包括匹配第三SAI的SAI信息。安全访问控制机制436可判定策略组2(424)和策略组4(440)中的SAI信息都不匹配第三SAI。当第三SAI不匹配策略组2(424),也不匹配策略组4(440)时,安全访问控制机制436可以将请求转发到处理设备346。处理设备346可判定寄存器420处的策略组3(426)包括匹配第三SAI的SAI信息。处理设备346随后可以判定策略组3信息(432)是否指示第四硬件组件具有执行所请求的事务414的许可。当策略组3信息(432)指示第四硬件组件具有执行所请求的事务414的许可时,第四硬件组件可执行所请求的事务414。当策略组3信息(432)指示第四硬件组件不具有执行所请求的事务414的许可时,第三硬件组件不可执行所请求的事务414。
图5图示出根据一个实施例的策略组522-526到策略组信息428-432的映射。除非以其他方式明确地描述,否则如相同的附图标记所标注,图5中的特征中的一些与图3、图4A和图4B中的特征中的一些相同或类似。处理设备346可以包括具有可配置位字段的寄存器516、518和520。寄存器516可以存储表示与该寄存器516相关联的策略组1(522)的值。如以上所讨论,寄存器516还可存储与策略组1(522)相关联的SAI信息,该SAI信息可与事务请求410的SAI信息匹配。策略组1(522)与策略组1信息428相关联。策略组1信息428可以是存储在存储器设备或寄存器中的、指示访问策略组1(522)中的硬件组件访问处理设备被集成到其中或耦合至其的硬件组件或者耦合至处理设备被集成到其中或耦合至其的该硬件组件的另一设备的许可等级。
寄存器518可以存储表示与该寄存器518相关联的策略组2(524)的值。如以上所讨论,寄存器518还可存储与策略组2(524)相关联的SAI信息,并且该SAI信息可与事务请求的SAI信息匹配。策略组2(524)与策略组2信息430相关联。策略组2信息430可以是存储在存储器设备或寄存器中的、指示访问策略组2(524)中的硬件组件访问处理设备被集成到其中或耦合至其的硬件组件或者耦合至处理设备被集成到其中或耦合至其的该硬件组件的另一设备的许可等级。
寄存器520可以存储表示与该寄存器520相关联的策略组3(526)的值。如以上所讨论,寄存器520还可存储与策略组3(526)相关联的SAI信息,并且该SAI信息可与事务请求的SAI信息匹配。策略组3(526)与策略组3信息432相关联。策略组3信息432可以是存储在存储器设备或寄存器中的、指示访问策略组3(526)中的硬件组件访问处理设备被集成到其中或耦合至其的硬件组件或者耦合至处理设备被集成到其中或耦合至其的该硬件组件的另一设备的许可等级。
硬件组件可使用处理设备346来判定访问硬件组件的事务请求是否被许可。例如,处理设备346可接收如下请求:将针对第二硬件组件的SAI信息从与访问策略组1的关联改变到与访问策略组2(522)的关联,并且将针对第三硬件组件的SAI信息从与访问策略组2的关联改变到与访问策略组4(524)的关联。为了改变针对第二硬件组件的SAI信息,处理设备可以重新配置寄存器516的位字段中的位中的一个或多个位,以将表示策略组的这些位从策略组1改变到策略组2。为了改变针对第三硬件组件的SAI信息,处理设备可以重新配置寄存器518的位字段中的位中的一个或多个位,以将表示的策略组的这些位从策略组2改变到策略组4。
处理设备346可使用策略组信息428-432来判定事务请求是否访问处理设备被集成到其中或耦合至其的硬件组件或者耦合至处理设备被集成到其中或耦合至其的该硬件组件的另一设备。例如,位于第一硬件组件处的处理设备346可分别从第二硬件组件、第三硬件组件和第四硬件组件接收访问第一硬件组件处的寄存器的事务请求410、412和414。
第二硬件组件可向处理设备346发送事务请求410。事务请求410可包括由处理设备346匹配至策略组2(522)的SAI信息的第一SAI。处理设备346可标识与策略组2(522)相关的策略组2信息430。策略组信息可指示第二硬件组件访问第一硬件组件处的寄存器的许可等级。当策略组2信息430指示第二硬件组件可访问该寄存器时,第二硬件组件可执行事务请求410,诸如,从寄存器读取数据或向寄存器写入数据。当策略组2信息430指示第二硬件组件不可访问该寄存器时,第二硬件组件不可执行事务请求410。
第三硬件组件可向处理设备346发送事务请求412。事务请求412可包括由处理设备346匹配至策略组4(524)的SAI信息的第二SAI。处理设备346可标识与策略组4(524)相关的策略组4信息442。策略组信息可指示第三硬件组件访问第一硬件组件处的寄存器的许可等级。当策略组4信息442指示第三硬件组件可访问该寄存器时,第三硬件组件可执行事务请求412,诸如,从寄存器读取数据或向寄存器写入数据。当策略组4信息442指示第三硬件组件不可访问该寄存器时,第二硬件组件不可执行事务请求412。
第四硬件组件可向处理设备346发送事务请求414。事务请求414可包括由处理设备346匹配至策略组3(526)的SAI信息的第三SAI。处理设备346可标识与策略组3(526)相关的策略组3信息432。策略组3信息432可指示第四硬件组件访问第一硬件组件处的寄存器的许可等级。当策略组3信息432指示第四硬件组件可访问该寄存器时,第四硬件组件可执行事务请求414,诸如,从寄存器读取数据或向寄存器写入数据。当策略组3信息432指示第四硬件组件不可访问该寄存器时,第四硬件组件不可执行事务请求414。
图6是图示出根据一个实施例的用于处理器600的微架构的框图,该处理器600实现计算计算机系统100。具体地,处理器600描绘根据本公开的至少一个实施例的要被包括在处理器中的有序架构核以及寄存器重命名逻辑、乱序发布/执行逻辑。可以在处理器600中实现计算计算机系统100的实施例。
处理器600包括前端单元630,该前端单元630耦合至执行引擎单元650,前端单元630和执行引擎单元650两者耦合至存储器单元670。处理器600可包括核690,该核690是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或者混合或替代核类型。作为又一选项,处理器600可包括专用核,诸如例如,网络或通信核、压缩引擎、图形核,等等。在另一实施例中,核690可具有五个级。
前端单元630包括耦合至指令高速缓存单元634的分支预测单元632,该指令高速缓存单元634耦合至指令转换后备缓冲器(TLB)单元636,该指令转换后备缓冲器单元636耦合至指令取出单元638,指令取出单元638耦合至解码单元640。解码单元640(也称为解码器)可解码指令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。可使用各种不同的机制来实现解码单元640。合适机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元634进一步耦合至存储器单元670。解码单元640耦合至执行引擎单元650中的重命名/分配器单元652。
执行引擎单元650包括重命名/分配器单元652,该重命名/分配器单元652耦合至引退单元654和一个或多个调度器单元的集合656。(多个)调度器单元656表示任意数量的不同调度器,包括预留站(RS)、中央指令窗口等。(多个)调度器单元656耦合至(多个)物理寄存器堆单元658。物理寄存器堆单元658中的每一个表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型(诸如:标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点等)、状态(诸如,指令指针是将要执行的下一个指令的地址)等。(多个)物理寄存器堆单元658与引退单元654重叠以图示出可以用来实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器和(多个)引退寄存器堆;使用寄存器映射和寄存器池;等等)。
通常,架构寄存器从处理器外部或从编程者的视角来看是可见的。这些寄存器不限于任何已知的特定电路类型。各种不同类型的寄存器可适用,只要它们能够存储并提供如本文中所描述的数据。合适寄存器的示例包括但不限于,专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、以及专用物理寄存器和动态分配物理寄存器的组合,等等。引退单元654和(多个)物理寄存器堆单元658耦合至(多个)执行集群660。(多个)执行集群660包括一个或多个执行单元662的集合以及一个或多个存储器访问单元664的集合。执行单元662可执行各种操作(例如,移位、加法、减法、乘法)并可对多种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。
尽管一些实施例可以包括专用于特定功能或功能集合的数个执行单元,但是其他实施例可仅包括一个执行单元或全都执行所有功能的多个执行单元。(多个)调度器单元656、(多个)物理寄存器堆单元658、(多个)执行集群660被示出为可能是复数个,因为某些实施例为某些数据/操作类型创建了分开的流水线(例如,均具有各自调度器单元、物理寄存器堆单元和/或执行集群的标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,并且在分开的存储器访问流水线的情况下某些实施例被实现为其中仅该流水线的执行集群具有(多个)存储器访问单元664)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序发布/执行。
存储器访问单元664的集合耦合至存储器单元670,该存储器单元670可包括数据预取器、数据TLB单元672、数据高速缓存单元(DCU)674、第二级(L2)高速缓存单元676,仅举数例。在一些实施例中,DCU 674也被称为第一级数据高速缓存(L1高速缓存)。DCU 674可处置多个未决的高速缓存未命中,并继续服务传入的存储和加载。它还支持维护高速缓存一致性。数据TLB单元672是用于通过映射虚拟和物理地址空间来改善虚拟地址转换速度的高速缓存。在一个示例性实施例中,存储器访问单元664可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元670中的数据TLB单元672。L2高速缓存单元676可耦合至一个或多个其他级别的高速缓存,并最终耦合至主存储器。
在一个实施例中,数据预取器通过自动地预测程序将消耗哪些数据来推测性地将数据加载/预取到DCU 674。预取可以指在存储在存储器层级结构(例如,较低等级的高速缓存或存储器)的一个存储器位置(例如,定位)中的数据被处理器实际要求之前,将该数据传送至更靠近(例如,产生更少访问等待时间)处理器的较高等级的存储器位置。更具体地,预取可以指在处理器发布对正在被返回的特定数据的需求之前数据从较低级别高速缓存/存储器中的一个到数据高速缓存和/或预取缓冲器的早期检取。
处理器600可以支持一个或多个指令集(例如,x86指令集(具有增加有更新版本的一些扩展)、加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集、加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集(具有可选附加扩展,诸如NEON))。
应当理解,核可以不支持多线程化(例如,执行两个或更多个并行的操作或线程的集合、时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如超线程化技术中的同时多线程化))。
尽管在乱序执行的上下文中描述寄存器重命名,但应当理解,寄存器重命名可在有序架构中被使用。尽管处理器的所图示的实施例也包括分开的指令和数据高速缓存单元以及共享的L2高速缓存单元,但替代实施例可具有用于指令和数据两者的单个内部高速缓存,诸如例如,第一级(L1)内部高速缓存或多个等级的内部高速缓存。在一些实施例中,系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。替代地,所有高速缓存都可在核和/或处理器的外部。
图7图示出根据一个实施例的用于处理器700的微架构的框图,处理器700包括用于执行访问控制的逻辑电路。在一个实施例中,处理器700是图1的处理器134或136。
在一些实施例中,根据一个实施例的指令可被实现为对具有字节尺寸、字尺寸、双字尺寸、四字尺寸等并具有诸如单精度和双精度整数和浮点数据类型之类的数据类型的数据元素执行操作。在一个实施例中,有序前端701是处理器700的部分,该有序前端701取出将要被执行的指令并准备这些指令以供稍后在处理器流水线中使用。可以在处理器700中实现计算计算机系统100或200的实施例。
前端701可包括若干单元。在一个实施例中,指令预取器726从存储器取出指令,并将指令馈送至指令解码器728,指令解码器728随后解码或解释指令。例如,在一个实施例中,解码器将所接收到的指令解码为机器可以执行的被称为“微指令”或“微操作”(也称为微op或uop)的一个或多个操作。在其他实施例中,解码器将指令解析为由微架构使用以执行根据一个实施例的操作的操作码和对应的数据及控制字段。在一个实施例中,追踪高速缓存730接受经解码的微操作,并将它们组装为微操作队列734中的程序有序序列或踪迹,以用于执行。当追踪高速缓存730遇到复杂指令时,微代码ROM 732提供完成操作所需的微操作。
一些指令被转换为单个微操作,而其他指令需要若干个微操作以完成整个操作。在一个实施例中,如果需要超过四个微操作来完成指令,则解码器718访问微代码ROM 732以进行该指令。对于一个实施例,指令可被解码为少量的微操作以用于在指令解码器718处进行处理。在另一实施例中,如果需要数个微操作来完成操作,则可将指令存储在微代码ROM 732内。追踪高速缓存730参考进入点可编程逻辑阵列(PLA)来确定正确的微指令指针,以从微代码ROM 732读取微代码序列以完成根据一个实施例的一条或多条指令。在微代码ROM 732完成对于指令的微操作序列化之后,机器的前端701恢复从追踪高速缓存730提取微操作。
乱序执行引擎703是将指令准备好用于执行的地方。乱序执行逻辑具有数个缓冲器,用于将指令流平滑并且重排序,以优化指令流进入流水线后的性能,并调度指令流以供执行。分配器逻辑分配每个微操作需要的机器缓冲器和资源,以用于执行。寄存器重命名逻辑将逻辑寄存器重命名为寄存器堆中的条目。在指令调度器(存储器调度器、快速调度器702、慢速/通用浮点调度器704、以及简单浮点调度器706)之前,分配器也将每个微操作的条目分配在两个微操作队列中的一个之中,一个微操作队列用于存储器操作,另一个微操作队列用于非存储器操作。微操作调度器702、704、706基于对它们的依赖输入寄存器操作数源的准备就绪以及微操作完成它们的操作所需的执行资源的可用性来确定微操作何时准备好用于执行。一个实施例的快速调度器702可以在主时钟周期的每半个上进行调度,而其他调度器仅可以在每个主处理器时钟周期上调度一次。调度器对分配端口进行仲裁以调度用于执行的微操作。
寄存器堆708、710位于调度器702、704、706以及执行块711中的执行单元712、714、716、718、720、722、724之间。存在分别用于整数和浮点操作的分开的寄存器堆708、710。一个实施例的每个寄存器堆708、710也包括旁路网络,该旁路网络可将刚完成的还没有被写入寄存器堆的结果旁路或转发给新的依赖微操作。整数寄存器堆708和浮点寄存器堆710也能够彼此传递数据。对于一个实施例,整数寄存器堆708被划分为两个分开的寄存器堆,一个寄存器堆用于低阶的32位数据,第二个寄存器堆用于高阶的32位数据。一个实施例的浮点寄存器堆710具有128位宽度的条目,因为浮点指令通常具有从64至128位宽度的操作数。
执行块711包含执行单元712、714、716、718、720、722、724,在这些执行单元712、714、716、718、720、722、724中实际执行指令。该区块包括寄存器堆708、710,寄存器堆708、710存储微指令需要执行的整数和浮点数据操作数值。一个实施例的处理器700由以下数个执行单元所组成:地址生成单元(AGU)712、AGU 714、快速ALU 716、快速ALU 718、慢速ALU720、浮点ALU 722、浮点移动单元724。对于一个实施例,浮点执行块722、724执行浮点、MMX、SIMD、SSE或其他操作。一个实施例的浮点ALU 722包括64位除64位浮点除法器,用于执行除法、平方根、以及余数微操作。对于本公开的实施例,涉及浮点值的指令可利用浮点硬件来处置。
在一个实施例中,ALU操作进入高速ALU执行单元716、718。一个实施例的快速ALU716、718可执行快速操作,有效等待时间为半个时钟周期。对于一个实施例,大多数复杂整数操作进入慢速ALU 720,因为慢速ALU 720包括用于长等待时间类型操作的整数执行硬件,诸如,乘法器、移位器、标记逻辑和分支处理。存储器加载/存储操作由AGU 712、714来执行。对于一个实施例,整数ALU 716、718、720被描述为对64位数据操作数执行整数操作。在替代实施例中,可以实现ALU 716、718、720,以支持包括16、32、128、256等的各种数据位。类似地,可以实现浮点单元722、724,以支持具有各种宽度的位的多个操作数。对于一个实施例,浮点单元722、724可结合SIMD和多媒体指令对128位宽度紧缩数据操作数进行操作。
在一个实施例中,在父加载完成执行之前,微操作调度器702、704、706就分派依赖操作。因为在处理器700中微操作被推测地调度和执行,所以处理器700也包括用于处置存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中会存在已带着临时错误的数据离开调度器的运行中的依赖操作。重放机制追踪使用错误数据的指令,并重新执行这些指令。仅依赖操作需要被重放,而允许独立操作完成。处理器的一个实施例的调度器和重放机制也被设计成用于捕捉用于文本串比较操作的指令序列。
根据一个实施例,处理器700还包括用于实现访问控制逻辑。在一个实施例中,处理器700的执行块711可包括PEL,以执行根据本文中的描述的访问控制。
术语“寄存器”可以是指被用作标识操作数的指令的部分的板上(on-board)处理器存储位置。换言之,寄存器可以是从处理器外部(从编程者的角度来看)可用的那些处理器存储位置。然而,实施例的寄存器不限于意指特定类型的电路。相反,实施例的寄存器能够存储并提供数据,并能够执行本文中所描述的功能。本文所描述的寄存器可以由处理器中的电路使用任何数量的不同技术来实现,这些不同技术诸如专用物理寄存器、利用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄存器堆也包含用于紧缩数据的八个多媒体SIMD寄存器。
对于本文中的讨论,寄存器应被理解为设计成用于保存紧缩数据的数据寄存器,诸如,来自美国加利福尼亚州圣克拉拉市的英特尔公司的启用了MMX技术的微处理器中的64位宽MMXTM寄存器(在一些实例中,也称为“mm”寄存器)。这些MMX寄存器(可用在整数和浮点形式中)可以与伴随SIMD和SSE指令的紧缩数据元素一起操作。类似地,也可以使用涉及SSE2、SSE3、SSE4或以外的(统称为“SSEx”)技术的128位宽的XMM寄存器来保存这样的紧缩数据操作数。在一个实施例中,在存储紧缩数据和整数数据时,寄存器不需要区分这两种数据类型。在一个实施例中,整数和浮点可被包含在同一寄存器堆中,或被包含在不同的寄存器堆中。此外,在一个实施例中,浮点和整数数据可被存储在不同的寄存器中,或被存储在相同的寄存器中。
实施例可在许多不同的系统类型中实现。现在参考图8,所示出的是根据实现方式的多处理器系统800的框图。如图8中所示,多处理器系统800是点对点互连系统,并且包括经由点对点互连850耦合的第一处理器870和第二处理器880。如图8中所示,处理器870和880中的每个处理器可以是多核处理器,包括第一和第二处理器核(即,处理器核874a和874b以及处理器核884a和884b),但是潜在地多得多的核可以存在于处理器中。这些处理器各自可包括根据本公开的实施例的混合型写入模式逻辑。可以在处理器870、处理器880或两者中实现计算计算机系统100或200的实施例。
虽然以两个处理器870、880来示出,但将会理解,本公开的范围不限于此。在其他实现方式中,在给定处理器中可存在一个或多个附加处理器。
处理器870和880被示为分别包括集成存储器控制器单元882和882。处理器870还包括作为其总线控制器单元的部分的点对点(P-P)接口876和888;类似地,第二处理器880包括P-P接口886和888。处理器870、880可经由点对点(P-P)接口850使用P-P接口电路888、888来交换信息。如图8所示,IMC 882和882将处理器耦合至相应的存储器,即存储器832和存储器834,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器870、880可各自使用点对点接口电路876、894、886、898经由单独的P-P接口852、854与芯片组890交换信息。芯片组890还可经由高性能图形接口839来与高性能图形电路838交换信息。
共享高速缓存(未示出)可被包括在任一处理器中,或在两个处理器外部但仍经由P-P互连与处理器连接,使得如果将处理器置于低功率模式时,可将任一处理器或两个处理器的本地高速缓存信息存储在该共享高速缓存中。
芯片组890可经由接口896耦合至第一总线816。在一个实施例中,第一总线816可以是外围组件互连(PCI)总线或诸如PCI高速总线或另一第三代I/O互连总线之类的总线,但是本公开的范围不限于此。
如图8中所示,各种I/O设备814可连同总线桥818一起耦合至第一总线816,总线桥818将第一总线816耦合到第二总线820。在一个实施例中,第二总线820可以是低引脚数(LPC)总线。在一个实施例中,各种设备可被耦合至第二总线820,各种设备包括例如,键盘和/或鼠标822、通信设备827以及可包括指令/代码和数据830的存储单元828(诸如,盘驱动器或其他大容量存储设备)。此外,音频I/O 824可被耦合至第二总线820。注意,其他架构是可能的。例如,代替图8的点对点架构,系统可实现多分支总线或其他此类架构。
现在参照图9,所示出的是根据本公开的实施例的第三系统900的框图。图8和图9中的类似元件使用类似附图标记,且在图9中省略了图8的某些方面以避免使图9的其他方面模糊。
图9图示出处理器870、880可分别包括集成存储器和I/O控制逻辑(“CL”)872和882。对于至少一个实施例,CL 872、882可包括诸如本文中所描述的集成存储器控制器单元。此外,CL 872、882还可包括I/O控制逻辑。图9图示出存储器832、834耦合至CL 872、882,并且I/O设备914也耦合至控制逻辑872、882。传统I/O设备915耦合至芯片组890。可以在处理器870、处理器880或两者中实现计算计算机系统100或200的实施例。
图10是可包括核1001中的一个或多个的示例性芯片上系统(SoC)。本领域中已知的对膝上型设备、台式机、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
现在参考图10,所示出的是根据本公开的实施例的SoC 1000的框图。而且,虚线框是关于更先进的SoC的特征。在图10中,(多个)互连单元1002耦合至:应用处理器1010,包括一个或多个核1001A-N的集合以及(多个)共享高速缓存单元1006;系统代理单元1009;(多个)总线控制器单元1016;(多个)集成存储器控制器单元1014;一组或一个或多个媒体处理器1020,可包括集成图形逻辑1008、用于提供静态和/或视频照相功能的图像处理器1024、用于提供硬件音频加速的音频处理器1026、用于提供视频编码/解码加速的视频处理器1028;静态随机存取存储器(SRAM)单元1030;直接存储器存取(DMA)单元1032;以及用于耦合至一个或多个外部显示器的显示单元1040。在一个实施例中,存储器模块可被包括在(多个)集成存储器控制器单元1114中。可以在SoC 1000中实现页面添加和内容复制的实施例。
接下来转到图11,描绘了根据本公开的实施例的芯片上系统(SoC)设计的实施例。作为说明性示例,SoC 1100被包括在用户装备(UE)中。在一个实施例中,UE是指由最终用户用于通信的任何设备,诸如,手持电话、智能电话、平板、超薄笔记本、具有宽带适配器的笔记本,或任何其他类似的通信设备。UE可连接至基站或节点,该基站或节点本质上可对应于GSM网络中的移动站(MS)。可以在SoC 1100中实现计算计算机系统100或200的实施例。
此处,SoC 1100包括2个核——1106和1107。类似于以上的讨论,核1106和1107可符合指令集架构,诸如,具有架构核TM的处理器、超微半导体公司(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计,或它们的客户,以及它们的被许可方或采用者。核1106和1107耦合至高速缓存控制装置1108,该高速缓存控制装置1108与总线接口单元1109和L2高速缓存1110相关联以与系统1100的其他部分通信。互连1111包括芯片上互连,诸如,IOSF、AMBA或以上所讨论的其他互连,它们可以实现所描述的公开的一个或多个方面。
互连1111提供到其他组件的通信信道,其他组件诸如用于与订户身份模块(SIM)卡对接的SIM 1130、用于保存供核1106和1107执行以初始化和引导SOC 1100的引导代码的引导ROM 1135、用于与外部存储器(例如,DRAM 1160)对接的SDRAM控制器1140、用于与非易失性存储器(例如,闪存1165)对接的闪存控制器1145、用于与外围设备对接的外围控制装置1150(例如,串行外围接口)、用于显示和接收输入(例如,允许触摸的输入)的视频编解码器1120和视频接口1125、用于执行图形相关的计算的GPU 1115等。这些接口中的任何一种可包含本文中所描述的各实施例的多个方面。
另外,系统图示出用于通信的外围设备,诸如,蓝牙模块1170、3G调制解调器1175、GPS1180以及Wi-Fi 1185。注意,如以上所述,UE包括用于通信的无线电装置。因此,这些外围通信模块可以不被全部包括。然而,在UE中,应当包括用于外部通信的某种形式的无线电装置。
图12图示出采用计算系统1200的示例形式的机器的图示性表示,在该计算系统1200内,可执行用于使该机器执行本文中所讨论的方法中的任何一种或多种的一组指令。在替代实施例中,可以在LAN、内联网、外联网或因特网中将该机器连接(例如,联网)到其他机器。机器可以在客户机-服务器网络环境中作为服务器或客户机设备操作,或者在对等(或分布式)网络环境中作为对等机器操作。该机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web设备、服务器、网络路由器、交换机或桥接器、或者能够执行指定由该机器执行的动作的一组指令(顺序的或以其他方式)的任何机器。进一步地,虽然仅图示出单个机器,但是,术语“机器”也应当被认为包括单独地或联合地执行一组(或多组)指令以执行本文中所讨论的方法中的任何一种或多种方法的机器的任何集合。可以在计算系统1200中实现计算机系统100的实施例。
计算系统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的处理器134或136。替代地,计算系统1200可以包括如本文中所描述的其他组件。应当理解,核可以不支持多线程化(例如,执行两个或更多个并行的操作或线程的集合、时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如超线程化技术中的同时多线程化))。
计算系统1200可进一步以包括可通信地耦合至网络1220的网络接口设备1208。计算系统1200还可包括视频显示单元1210(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备1212(例如,键盘)、光标控制设备1214(例如,鼠标)、信号生成设备1216(例如,扬声器),或其他外围设备。此外,计算系统1200可包括图形处理单元1222、视频处理单元1228以及音频处理单元1232。在另一实施例中,计算系统1200可包括芯片组(未图示出),该芯片组是指被设计为与处理设备1202一起协作并控制处理设备1202与外部设备之间的通信的一组集成电路或芯片。例如,芯片组可以是将处理设备1202链接到非常高速度的设备(诸如,主存储器1204和图形控制器)以及将处理设备1202链接到较低速度的外围设备的外围总线(诸如,USB、PCI或ISA总线)的主板上的一组芯片。
数据存储设备1218可包括计算机可读存储介质1224,在其上存储了具体化本文中所描述的功能的方法中的任何一种或多种的指令1226(例如,软件)。在由计算系统1200对指令1226(例如,软件)的执行期间,指令1226(例如,软件)也可完全或至少部分地作为指令1226驻留在主存储器1204内和/或作为处理逻辑驻留在处理设备1202内;该主存储器1204和处理设备1202也构成计算机可读存储介质。
计算机可读存储介质1224也可以用于利用诸如参考图1所描述的处理器134或136来存储指令1226和/或用于存储包含调用以上应用的方法的软件库。虽然计算机可读存储介质1224在示例实施例中被示出为单个介质,但术语“计算机可读存储介质”应当视为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。还应当认为术语“计算机可读存储介质”包括能够存储、编码或承载由机器执行并且使该机器执行当前的多个实施例的方法中的任何一种或多种的一组指令的任何介质。术语“计算机可读存储介质”应当相应地视为包括但不限于固态存储器以及光和磁介质。
下列示例涉及进一步的实施例。
示例1是一种芯片上系统(SoC),该SoC包括:1)处理器核;2)系统寄存器组;以及3)安全访问控制机制,用于基于可编程安全策略组来提供对系统寄存器组的安全访问控制,其中:a)该安全访问控制机制包括通用控制寄存器(UCR)的阵列,其中,存储在该阵列的第一条目中的第一值将系统寄存器组中的一个系统寄存器映射到第一访问策略组;并且b)安全访问控制机制用于:i)接收将系统寄存器组中的一个系统寄存器从与第一访问策略组的关联重新映射到与第二访问策略组的关联的请求,其中,该请求包括用于将系统寄存器组中的该系统寄存器重新映射到第二访问策略组的重新映射数组;以及ii)将该重新映射数组存储在安全访问控制机制的存储器处,其中,存储在该重新映射数组的第一条目中的第一值将系统寄存器组中的该系统寄存器映射到第二访问策略组。
在示例2中,如示例1所述的SoC,其中,安全访问控制机制用于使用重新映射数组来将系统寄存器组中的该系统寄存器从与第一访问策略组的关联重新映射到与第二访问策略组的关联。
在示例3中,如示例1-2中任一项所述的SoC,其中,第二访问策略组与第二访问策略组信息相关联,该第二访问策略组信息指示第二访问策略组中的设备访问系统寄存器组中的一个或多个系统寄存器的许可等级。
在示例4中,如示例1-3中任一项所述的SoC,其中,第二访问策略组是一组一个或多个硬件组件,该一个或多个硬件组件具有访问一个或多个系统寄存器的同一许可等级。
在示例5中,如示例1-4中任一项所述的SoC,其中,第二访问策略组是同一硬件组件类型的硬件组件的组。
在示例6中,如示例1-5中任一项所述的SoC,其中,安全访问控制机制用于:1)接收第一硬件组件向第二硬件组件处的寄存器写入数据的事务请求,其中,该事务请求包括第一发起方安全属性(SAI);2)确定该第一SAI匹配存储在重新映射数组的第一条目中的第一值;以及3)向第一硬件组件提供向第二硬件组件处的寄存器写入数据的访问权。
在示例7中,如示例1-6中任一项所述的SoC,其中,第一硬件组件是发起资源访问请求以访问第二硬件组件的存储器或寄存器的设备。
在示例8中,如示例1-7中任一项所述的SoC,其中,第一硬件组件或第二硬件组件是输入/输出(I/O)控制器、插槽内接口、网络接口卡(NIC)、网络桥接器、存储器控制器、动态随机存取存储器DRAM、加速器、存储器、高速缓存、或另一处理器核。
在示例9中,如示例1-8中任一项所述的SoC,其中,第一硬件组件和第二硬件组件通过插槽内结构互连。
在示例10中,如示例1-9中任一项所述的SoC,第一访问策略组是操作系统(OS)策略组,并且第二访问策略组是微代码访问策略组。
各实施例可具有以上所描述的结构特征的不同组合。例如,也可参照本文中描述的方法或过程来实现以上所描述的计算系统的所有任选特征,并且可在一个或多个实施例中的任何地方使用示例中的细节。
示例11是一种芯片上系统(SoC),该SoC包括:1)处理器核;2)系统寄存器组;以及3)处理设备,用于基于可编程安全策略组来提供对系统寄存器组的安全访问控制,其中:a)处理设备包括系统寄存器组中的每个系统寄存器中的位字段;并且b)其中,系统寄存器组中的一个系统寄存器中的该位字段包括指示系统寄存器组中的该寄存器属于第一访问策略组的第一值;以及4)处理设备用于:a)接收将系统寄存器中的该系统寄存器从与第一访问策略组的关联改变为与第二访问策略组的关联的请求;以及b)响应于该请求,将第一值改变为第二值,该第二值指示系统寄存器组中的该寄存器属于第二访问策略组。
在示例12中,如示例11所述的SoC,其中,位字段是可重新配置的位字段。
在示例13中,如示例11-12中任一项所述的SoC,其中,处理设备用于:1)接收第一硬件组件向第二硬件组件处的寄存器写入数据的事务请求,其中,该事务请求包括第一发起方安全属性(SAI);2)确定该第一SAI匹配第二值;以及3)向第一硬件组件提供向第二硬件组件处的寄存器写入数据的访问权。
在示例14中,如示例11-13中任一项所述的SoC,其中,第二访问策略组与第二访问策略组信息相关联,该第二访问策略组信息指示第二访问策略组中的设备访问系统寄存器组中的一个或多个系统寄存器的许可等级。
在示例15中,如示例11-14中任一项所述的SoC,其中,第二访问策略组是一个或多个硬件组件的组,该一个或多个硬件组件具有访问一个或多个系统寄存器的同一许可等级。
各实施例可具有以上所描述的结构特征的不同组合。例如,也可参照本文中描述的方法或过程来实现以上所描述的计算系统的所有任选特征,并且可在一个或多个实施例中的任何地方使用示例中的细节。
示例16是一种方法,该方法包括:1)由安全访问控制机制接收将系统寄存器组中的一个系统寄存器从与第一访问策略组的关联重新映射到与第二访问策略组的关联的请求,其中,该请求包括用于将系统寄存器组中的一个系统寄存器重新映射到第二访问策略组的重新映射数组;2)将该重新映射数组存储在安全访问控制机制的存储器处,其中,存储在该重新映射数组的第一条目中的第一值将系统寄存器组中的该系统寄存器映射到第二安全访问策略组;以及3)由安全访问控制机制使用重新映射数组来将系统寄存器组中的该系统寄存器从与第一访问策略组的关联重新映射到与第二访问策略组的关联。
在示例17中,如示例16所述的方法,其中,第二访问策略组是一个或多个硬件组件集合,该一个或多个硬件组件具有访问一个或多个系统寄存器的同一许可等级。
在示例18中,如示例16-17中任一项所述的方法,其中,将系统寄存器组中的该系统寄存器从与第一访问策略组的关联重新映射到与第二访问策略组的关联在一个或多个硬件组件已经被集成到计算机系统中之后发生。
在示例19中,如示例16-18中任一项所述的方法,进一步包括:1)接收第一硬件组件向第二硬件组件处的寄存器写入数据的事务请求,其中,该事务请求包括第一发起方安全属性(SAI);2)确定该第一SAI匹配存储在重新映射数组的第一条目中的第二SAI;以及3)向第一硬件组件提供向第二硬件组件处的寄存器写入数据的访问权。
在示例20中,如示例16-19中任一项所述的方法,其中,第一访问策略组是操作系统(OS)策略组,并且第二访问策略组是预留的访问策略组。.
各实施例可具有以上所描述的结构特征的不同组合。例如,也可参照本文中描述的方法或过程来实现以上所描述的计算系统的所有任选特征,并且可在一个或多个实施例中的任何地方使用示例中的细节。
尽管已参考有限数量的实施例描述了本公开,但是,本领域技术人员将从其中理解很多修改和变型。所附权利要求书旨在将所有此类修改和变型涵盖为落在本公开的真实精神和范围内。
在以下描述中,阐述了众多特定细节(诸如,特定类型的处理器和系统配置的示例、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量/高度、特定处理器流水线级和操作等)以提供对本公开的透彻理解。然而,对本领域普通技术人员将显而易见的是,不一定要采用这些特定细节来实施本公开。在其他实例中,未详细描述公知的组件或方法,以避免不必要地使本公开模糊,公知的组件或方法诸如,特定和替代的处理器架构、用于所描述算法的特定逻辑电路/代码、特定的固件代码、特定的互连操作、特定的逻辑配置、特定的制造技术和材料、特定的编译器实现方式、代码中算法的特定表达、特定的掉电和功率门控技术/逻辑以及计算系统的其他特定的操作细节。
各实施例是参考特定集成电路中的(诸如计算平台或微处理器中的)访问控制来描述的。实施例也可适用于其他类型的集成电路和可编程逻辑器件。例如,所公开的各实施例不限于台式计算机系统或便携式计算机,诸如,超级本TM计算机。并且也可用于其他设备,诸如,手持式设备、平板、其他薄笔记本、芯片上系统(SoC)设备以及嵌入式应用。手持式设备的一些示例包括蜂窝电话、网际协议设备、数码相机、个人数字助理(PDA)和手持式PC。嵌入式应用通常包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络中枢、广域网(WAN)交换机或可执行以下教导的功能与操作的任何其他系统。描述了系统可以是任何类型的计算机或嵌入式系统。所公开的实施例尤其可以用于低端设备,如可穿戴设备(例如,手表)、电子植入物、传感和控制基础设施设备、控制器、监视控制装置以及数据采集(SCADA)系统等等。此外,本文中所描述的装置、方法和系统不限于物理计算设备,而是还可涉及用于节能和能效的软件优化。如将在以下描述中变得显而易见的,本文中所描述的方法、装置和系统的实施例(无论是关于硬件、固件、软件还是它们的组合)对于用性能考量来平衡的‘绿色技术’的前景是至关重要的。
虽然本文中的实施例参照处理器来描述,但其他实施例也适用于其他类型的集成电路和逻辑器件。本公开的实施例的类似技术和教导可应用于其他类型的电路或半导体器件,这些其他类型的电路或半导体器件也可受益于更高的流水线吞吐量和提高的性能。本公开的实施例的教导适用于执行数据操纵的任何处理器或机器。然而,本公开不限于执行512位、256位、128位、64位、32位、或16位数据运算的处理器或机器,并可应用于在其中执行数据操纵或管理的任何处理器和机器。此外,本文中的描述提供了示例,并且附图出于说明性目的示出了各种示例。然而,这些示例不应当以限制性意义来解释,因为它们仅仅旨在提供本公开的实施例的示例,而并非对本公开的实施例的所有可能实现方式进行穷举。
虽然下述的示例是在执行单元和逻辑电路情境下描述指令处置和分配,但本公开的其他实施例也可通过存储在机器可读有形介质上的数据或指令来完成,这些数据或指令在被机器执行时使得该机器执行与本公开的至少一个实施例相一致的功能。在一个实施例中,与本公开的实施例相关联的功能以机器可执行指令进行具体化。这些指令可用来使通过这些指令编程的通用处理器或专用处理器执行本公开的步骤。本公开的实施例也可作为计算机程序产品或软件来提供,该计算机程序产品或软件可包括其上存储有指令的机器或计算机可读介质,这些指令可被用来对计算机(或其他电子设备)进行编程以执行根据本公开的实施例的一个或多个操作。替代地,本公开的实施例的操作可由包含用于执行这些操作的固定功能逻辑的专用硬件组件来执行,或由经编程的计算机组件以及固定功能硬件组件的任何组合来执行。
用于对逻辑进行编程以执行本公开的实施例的指令可被存储在系统中的存储器(诸如,DRAM、高速缓存、闪存、或其他存储)内。此外,指令可以经由网络或通过其他计算机可读介质的方式被分发。因此,机器可读介质可包括用于以机器(诸如,计算机)可读形式存储或传送信息的任何机制,但不限于:软盘、光盘、紧凑盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存存储器、或在经由互联网通过电、光、声、或其他形式的传播信号(诸如,载波、红外信号、数字信号等)传送信息中所用的有形机器可读存储器。因此,计算机可读介质包括适用于存储或传送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
设计可经历从创造到仿真到制造的各阶段。表示设计的数据能以数种方式来表示该设计。首先,如在仿真中有用的,可使用硬件描述语言或另一功能性描述语言来表示硬件。另外,可在设计过程的一些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某个阶段都达到表示硬件模型中各种设备的物理布置的数据水平。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的掩模的不同掩模层上存在或不存在各种特征的数据。在任何设计表示中,数据可以被存储在任何形式的机器可读介质中。存储器或磁或光存储(诸如,盘)可以是存储经由光学或电学波来传送的信息的机器可读介质,这些光学或电学波被调制或以其他方式生成以传送这些信息。当指示或承载代码或设计的电学载波被传送达到实现电信号的复制、缓冲或重新发送的程度时,即产生新的副本。因此,通信提供商或网络提供商会在有形机器可读介质上至少临时地存储具体化本公开的实施例的技术的物品(诸如,编码在载波中的信息)。
如本文中所使用的模块是指硬件、软件、和/或固件的任何组合。作为示例,模块包括与非瞬态介质相关联的诸如微控制器之类的硬件,该非瞬态介质用于存储适于由该微控制器执行的代码。因此,在一个实施例中,对模块的引用是指硬件,该硬件被专门配置成用于识别和/或执行要保存在非瞬态介质上的代码。此外,在另一实施例中,模块的使用是指包括代码的非瞬态介质,该代码专门适于由微控制器执行以进行预定的操作。并且如可以被推断,在又一实施例中,术语模块(在此示例中)可指微控制器和非瞬态介质的组合。通常,被图示为分开的模块的边界一般不同并且潜在地重叠。例如,第一和第二模块可共享硬件、软件、固件、或它们的组合,同时潜在地保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括诸如晶体管、寄存器之类的硬件或诸如可编程逻辑器件之类的其他硬件。
在一个实施例中,使用短语‘被配置成’是指安排、合在一起、制造、许诺销售、进口和/或设计装置、硬件、逻辑或元件以执行指定或所确定的任务。在该示例中,如果不是正在操作的装置或其元件被设计、耦合、和/或互连以执行指定任务,则该不是正在操作的装置或其元件仍然‘被配置成’执行所述指定任务。作为纯说明性示例,在操作期间,逻辑门可提供0或1。但‘被配置成’向时钟提供启用信号的逻辑门不包括可提供1或0的每一潜在逻辑门。相反,该逻辑门是以在操作期间1或0的输出用于启用时钟的某种方式来耦合的逻辑门。再次注意,使用术语‘被配置成’不要求操作,而是关注于装置、硬件、和/或元件的潜在状态,其中在该潜在状态中,该装置、硬件和/或元件被设计成在该装置、硬件和/或元件正在操作时执行特定任务。
此外,在一个实施例中,使用短语‘用于’、‘能够/能够用于’和/或‘能用于’是指按如下方式设计的一些装置、逻辑、硬件、和/或元件:以指定方式启用对该装置、逻辑、硬件、和/或元件的使用。如以上所注意,在一个实施例中,用于、能够、或能用于的使用是指装置、逻辑、硬件、和/或元件的潜在状态,其中该装置、逻辑、硬件、和/或元件不是正在操作,而是以此类方式被设计以便以指定方式启用对装置的使用。
如本文中所使用,值包括数字、状态、逻辑状态、或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值、或多个逻辑值的使用也被称为1和0,这简单地表示了二进制逻辑状态。例如,1指的是高逻辑电平,0指的是低逻辑电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元能够保持单个逻辑的值或多个逻辑的值。然而,也使用了计算系统中的值的其他表示。例如,十进制数10还可以被表示为二进制值1010和十六进制字母A。因此,值包括能够被保存在计算系统中的信息的任何表示。
而且,状态也可由值或值的部分来表示。作为示例,诸如逻辑1之类的第一值可表示默认或初始状态,而诸如逻辑0之类的第二值可表示非默认状态。此外,在一个实施例中,术语重置和置位分别指的是默认和已更新的值或状态。例如,默认值潜在地包括高逻辑值,即,重置;而已更新的值潜在地包括低逻辑值,即,置位。注意,可利用值的任何组合来表示任何数量的状态。
以上所阐述的方法、硬件、软件、固件或代码的实施例可经由存储在机器可访问、机器可读、计算机可访问、或计算机可读介质上可由处理元件执行的指令或代码来实现。非瞬态机器可访问/可读介质包括提供(即,存储和/或发送)诸如由计算机或电子系统之类的机器可读的形式的信息的任何机制。例如,非瞬态机器可访问介质包括:随机存取存储器(RAM),诸如,静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;用于保存从瞬态(传播)信号(例如,载波、红外信号、数字信号)接收的信息的其他形式的存储设备;等等,这些非瞬态机器可访问介质与可从其接收信息的非瞬态介质相区别。
被用于对逻辑进行编程以执行本公开的实施例的指令可被存储在系统中的存储器(诸如,DRAM、高速缓存、闪存、或其他存储)内。此外,指令可以经由网络或通过其他计算机可读介质的方式被分发。因此,机器可读介质可包括用于以机器(诸如,计算机)可读形式存储或传送信息的任何机制,但不限于:软盘、光盘、紧凑盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存存储器、或在经由互联网通过电、光、声、或其他形式的传播信号(诸如,载波、红外信号、数字信号等)传送信息中所用的有形机器可读存储器。因此,计算机可读介质包括适用于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
贯穿本说明书,对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本公开的至少一个实施例中。因此,在整个说明书的多个位置出现短语“在一个实施例中”或“在实施例中”不一定全部是指同一实施例。此外,在一个或多个实施例中,能以任何合适的方式来组合特定的特征、结构或特性。
在上述说明书中,已经参考特定示例性实施例给出了具体实施方式。然而,将显而易见的是,可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本公开的更宽泛精神和范围。因此,应当认为说明书和附图是说明性的而不是限制性的。此外,上述对实施例和其他示例性语言的使用不一定是指同一实施例或同一示例,而可能是指不同和独特的实施例,也有可能是同一实施例。
具体实施方式的一些部分在对计算机存储器内的数据位的操作的算法和符号表示方面来呈现。这些算法描述及表示是数据处理领域的技术人员用于向本领域的其他技术人员最有效地传达其工作实质的手段。算法在此一般被理解为导致所需结果的自洽的操作序列。这些操作需要对物理量进行物理操纵。通常但非必须,这些量采用能被存储、传输、组合、比较、以及以其他方式操纵的电信号或磁信号的形式。主要出于常见用途的考虑,时不时地将这些信号称为位、值、要素、符号、字符、项、数字等已被证明是方便的。本文中描述的块可以是硬件、软件、固件或其组合。
然而,应当记住,所有这些和类似的术语将与适当的物理量关联,并且仅仅是应用于这些量的方便的标记。除非明确指明,否则从上文的讨论中显而易见地看出,可以理解,在全文中,利用诸如“定义”、“接收”、“确定”、“发布”、“链接”、“关联”、“获取”、“认证”、“禁止”、“执行”、“请求”、“通信”等术语的讨论,指的是计算系统或类似电子计算设备的动作和进程,该计算系统或类似电子计算设备操纵在该计算系统的寄存器和存储器内表示为物理(例如,电子)量的数据并将其转换成在该计算系统存储器或寄存器或其他此类信息存储、传输或显示设备内类似地表示为物理量的其他数据。
在本文中使用的词语“示例”或“示例性”意味着用作示例、实例或说明。本文中被描述为“示例”或“示例性”的任何方面或设计不一定要被解释为相比其他方面或设计更优选或有利。相反,词语“示例”或“示例性”的使用旨在以具体的方式来呈现概念。如在该申请中使用的,术语“或”旨在表示包含性的“或”,而不是排它性的“或”。即,除非另有指定或根据上下文显而易见,否则“X包括A或B”旨在表示自然包含性排列中的任一者。即,如果X包括A;X包括B;或X包括A和B两者,则在任何前述的情况下都满足“X包括A或B”。另外,在本申请和所附权利要求中使用的冠词“一”和“一个”一般应当被解释为表示“一个或多个”,除非另有规定或根据上下文明确指示为单数形式。此外,通篇对术语“实施例”或“一个实施例”或“实现方式”或“一种实现方式”的使用不旨在意指同一个实施例或实现方式,除非被描述为如此。此外,如此处所使用的术语“第一”、“第二”、“第三”、“第四”等旨在用作用于在不同元件之间进行区分的标记,并且可以不一定具有根据它们的数字指定的顺序含义。
Claims (20)
1.一种芯片上系统(SoC),包括:
处理器核;
系统寄存器组;
安全访问控制机制,用于基于可编程安全策略组来提供对所述系统寄存器组的安全访问控制,其中:
所述安全访问控制机制包括通用控制寄存器(UCR)的阵列,其中,存储在所述阵列的第一条目中的第一值将所述系统寄存器组中的一个系统寄存器映射到第一访问策略组,并且
所述安全访问控制机制用于:
接收将所述系统寄存器组中的所述一个系统寄存器从与所述第一访问策略组的关联重新映射到与第二访问策略组的关联的请求,其中,所述请求包括用于将所述系统寄存器组中的所述一个系统寄存器重新映射到第二访问策略组的重新映射数组;以及
将所述重新映射数组存储在所述安全访问控制机制的存储器处,其中,存储在所述重新映射数组的第一条目中的第一值将所述系统寄存器组中的所述一个系统寄存器映射到第二访问策略组。
2.如权利要求1所述的SoC,其中,所述安全访问控制机制用于使用所述重新映射数组来将所述系统寄存器组中的所述一个系统寄存器从与所述第一访问策略组的关联重新映射到与所述第二访问策略组的关联。
3.如权利要求1所述的SoC,其中,所述第二访问策略组与第二访问策略组信息相关联,所述第二访问策略组信息指示所述第二访问策略组中的设备访问所述系统寄存器组中的一个或多个系统寄存器的许可等级。
4.如权利要求1所述的SoC,其中,所述第二访问策略组是一个或多个硬件组件的组,其中,所述一个或多个硬件组件具有访问所述一个或多个系统寄存器的同一许可等级。
5.如权利要求1所述的SoC,其中,所述第二访问策略组是同一硬件组件类型的硬件组件的组。
6.如权利要求1所述的SoC,其中,所述安全访问控制机制用于:
接收第一硬件组件向第二硬件组件处的寄存器写入数据的事务请求,其中,所述事务请求包括第一发起方安全属性(SAI);
确定所述第一SAI匹配存储在所述重新映射数组的第一条目中的第一值;以及
向所述第一硬件组件提供向所述第二硬件组件处的寄存器写入所述数据的访问权。
7.如权利要求6所述的SoC,其中,所述第一硬件组件是发起资源访问请求以访问所述第二硬件组件的存储器或寄存器的设备。
8.如权利要求6所述的SoC,其中,所述第一硬件组件或所述第二硬件组件是输入/输出(I/O)控制器、插槽内接口、网络接口卡(NIC)、网络桥接器、存储器控制器、动态随机存取存储器DRAM、加速器、存储器、高速缓存、或另一处理器核。
9.如权利要求6所述的SoC,其中,所述第一硬件组件和所述第二硬件组件通过插槽内结构互连。
10.如权利要求1所述的SoC,其中,所述第一访问策略组是操作系统(OS)策略组,并且所述第二访问策略组是微代码访问策略组。
11.一种芯片上系统(SoC),包括:
处理器核;
系统寄存器组;以及
处理设备,用于基于可编程安全策略组来提供对所述系统寄存器组的安全访问控制,其中:
所述处理设备包括所述系统寄存器组中的每个系统寄存器中的位字段,其中,所述系统寄存器组中的一个系统寄存器中的所述位字段包括指示所述系统寄存器组中的所述一个寄存器属于第一访问策略组的第一值,并且
所述处理设备用于:
接收将所述系统寄存器组中的所述一个系统寄存器从与所述第一访问策略组的关联改变到与第二访问策略组的关联的请求;以及
响应于所述请求,将所述第一值改变为第二值,所述第二值指示所述系统寄存器组中的所述一个寄存器属于第二访问策略组。
12.如权利要求11所述的SoC,其中,所述位字段是能重新配置的位字段。
13.如权利要求11所述的SoC,其中,所述处理设备用于:
接收第一硬件组件向第二硬件组件处的寄存器写入数据的事务请求,其中,所述事务请求包括第一发起方安全属性(SAI);
确定所述第一SAI匹配所述第二值;以及
向所述第一硬件组件提供向所述第二硬件组件处的寄存器写入所述数据的访问权。
14.如权利要求11所述的SoC,其中,所述第二访问策略组与第二访问策略组信息相关联,所述第二访问策略组信息指示所述第二访问策略组中的设备访问所述系统寄存器组中的一个或多个系统寄存器的许可等级。
15.如权利要求11所述的SoC,其中,所述第二访问策略组是一个或多个硬件组件的组,其中,所述一个或多个硬件组件具有访问所述一个或多个系统寄存器的同一许可等级。
16.一种方法,包括:
由安全访问控制机制接收将系统寄存器组中的一个系统寄存器从与第一访问策略组的关联重新映射到与第二访问策略组的关联的请求,其中,所述请求包括用于将所述系统寄存器组中的所述一个系统寄存器重新映射到所述第二访问策略组的重新映射数组;
将所述重新映射数组存储在所述安全访问控制机制的存储器处,其中,存储在所述重新映射数组的第一条目中的第一值将所述系统寄存器组中的所述一个系统寄存器映射到所述第二访问策略组;以及
由所述安全访问控制机制使用所述重新映射数组来将系统寄存器组中的所述一个系统寄存器从与所述第一访问策略组的关联重新映射到与所述第二访问策略组的关联。
17.如权利要求16所述的方法,其中,所述第二访问策略组是一个或多个硬件组件的组,其中,所述一个或多个硬件组件具有访问所述一个或多个系统寄存器的同一许可等级。
18.如权利要求17所述的方法,其中,将系统寄存器组中的所述一个系统寄存器从与所述第一访问策略组的关联重新映射到与所述第二访问策略组的关联在所述一个或多个硬件组件已经被集成到计算机系统中之后发生。
19.如权利要求17所述的方法,进一步包括:
接收第一硬件组件向第二硬件组件处的寄存器写入数据的事务请求,其中,所述事务请求包括第一发起方安全属性(SAI);
确定所述第一SAI匹配存储在所述重新映射数组的第一条目中的第二SAI;以及
向所述第一硬件组件提供向所述第二硬件组件处的寄存器写入所述数据的访问权。
20.如权利要求16所述的方法,其中,所述第一访问策略组是操作系统(OS)策略组,并且所述第二访问策略组是预留的访问策略组。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/274,793 | 2016-09-23 | ||
US15/274,793 US10318440B2 (en) | 2016-09-23 | 2016-09-23 | Mapping security policy group registers |
PCT/US2017/048949 WO2018057247A1 (en) | 2016-09-23 | 2017-08-28 | Mapping security policy group registers |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109643244A true CN109643244A (zh) | 2019-04-16 |
CN109643244B CN109643244B (zh) | 2023-08-18 |
Family
ID=61685823
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780051868.6A Active CN109643244B (zh) | 2016-09-23 | 2017-08-28 | 映射安全策略组寄存器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10318440B2 (zh) |
CN (1) | CN109643244B (zh) |
DE (1) | DE112017004783T5 (zh) |
WO (1) | WO2018057247A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200004697A1 (en) * | 2018-06-29 | 2020-01-02 | Qualcomm Incorporated | Patchable hardware for access control |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070266214A1 (en) * | 2006-05-12 | 2007-11-15 | Sharp Kabushiki Kaisha | Computer system having memory protection function |
CN101755427A (zh) * | 2007-04-10 | 2010-06-23 | 阿珀蒂奥有限公司 | 网络架构中改进的子树访问控制 |
CN102184366A (zh) * | 2011-06-07 | 2011-09-14 | 郑州信大捷安信息技术有限公司 | 基于SoC芯片外部程序安全访问架构及控制方法 |
CN103124975A (zh) * | 2010-09-24 | 2013-05-29 | 英特尔公司 | 用于在计算机系统中实行资源访问控制的方法 |
WO2014051818A1 (en) * | 2012-09-25 | 2014-04-03 | Intel Corporation | Enabling virtualization of a processor resource |
CN104981815A (zh) * | 2013-03-14 | 2015-10-14 | 英特尔公司 | 用于用安全属性限制cpu事务的方法、装置和系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8244841B2 (en) | 2003-04-09 | 2012-08-14 | Microsoft Corporation | Method and system for implementing group policy operations |
GB2440968B (en) * | 2006-08-16 | 2011-02-02 | Advanced Risc Mach Ltd | Protecting system control registers in a data processing apparatus |
US9218490B2 (en) | 2011-12-30 | 2015-12-22 | Intel Corporation | Using a trusted platform module for boot policy and secure firmware |
WO2015008112A1 (en) | 2013-07-18 | 2015-01-22 | Freescale Semiconductor, Inc. | System on chip and method therefor |
US9424173B2 (en) | 2014-10-23 | 2016-08-23 | GlobalFoundries, Inc. | Performing secure address relocation within a multi-processor system sharing a same physical memory channel to external memory |
-
2016
- 2016-09-23 US US15/274,793 patent/US10318440B2/en active Active
-
2017
- 2017-08-28 DE DE112017004783.8T patent/DE112017004783T5/de not_active Withdrawn
- 2017-08-28 CN CN201780051868.6A patent/CN109643244B/zh active Active
- 2017-08-28 WO PCT/US2017/048949 patent/WO2018057247A1/en active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070266214A1 (en) * | 2006-05-12 | 2007-11-15 | Sharp Kabushiki Kaisha | Computer system having memory protection function |
CN101755427A (zh) * | 2007-04-10 | 2010-06-23 | 阿珀蒂奥有限公司 | 网络架构中改进的子树访问控制 |
CN103124975A (zh) * | 2010-09-24 | 2013-05-29 | 英特尔公司 | 用于在计算机系统中实行资源访问控制的方法 |
CN102184366A (zh) * | 2011-06-07 | 2011-09-14 | 郑州信大捷安信息技术有限公司 | 基于SoC芯片外部程序安全访问架构及控制方法 |
WO2014051818A1 (en) * | 2012-09-25 | 2014-04-03 | Intel Corporation | Enabling virtualization of a processor resource |
CN104981815A (zh) * | 2013-03-14 | 2015-10-14 | 英特尔公司 | 用于用安全属性限制cpu事务的方法、装置和系统 |
Non-Patent Citations (2)
Title |
---|
SHADHA MOHAMED AL AMRI ET AL: "Infrastructure as a service: Exploring network access control challenges", 《2016 SAI COMPUTING CONFERENCE (SAI)》 * |
刘京: "基于访问控制的对象管理系统的设计与实现", 《中国优秀硕士学位论文全文数据库》 * |
Also Published As
Publication number | Publication date |
---|---|
US20180091554A1 (en) | 2018-03-29 |
DE112017004783T5 (de) | 2019-06-13 |
US10318440B2 (en) | 2019-06-11 |
CN109643244B (zh) | 2023-08-18 |
WO2018057247A1 (en) | 2018-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104954356B (zh) | 保护共享的互连以用于虚拟机 | |
CN105320612B (zh) | 验证虚拟地址转换 | |
CN108268386A (zh) | 加速硬件中的存储器排序 | |
CN108388528A (zh) | 基于硬件的虚拟机通信 | |
CN104850777B (zh) | 使用认证的清单来实现对多处理器平台的外部确认 | |
CN104951274B (zh) | 用于控制流安全性的二进制转换机制的指令和逻辑 | |
CN108351863A (zh) | 用于可编程结构层级结构和高速缓存的指令和逻辑 | |
CN109564552A (zh) | 增强基于每页当前特权等级的存储器访问许可 | |
CN108475193A (zh) | 字节排序指令和四位组排序指令 | |
CN106575261A (zh) | 受保护的区域中的存储器初始化 | |
CN106575218A (zh) | 持久性存储屏障处理器、方法、系统和指令 | |
CN108292215A (zh) | 用于加载-索引和预取-聚集操作的指令和逻辑 | |
CN108351779A (zh) | 用于安全指令执行流水线的指令和逻辑 | |
CN105745630B (zh) | 用于在集群宽执行机器中的存储器访问的指令和逻辑 | |
CN110199242A (zh) | 基于使用参数配置处理器的基本时钟频率 | |
CN108351835A (zh) | 用于高速缓存控制操作的指令和逻辑 | |
CN108139905A (zh) | 用于从持久存储器预取信息的指令和逻辑 | |
CN107209723A (zh) | 用于虚拟化的细粒度地址重新映射 | |
CN106708753A (zh) | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 | |
CN108334458A (zh) | 存储器高效的末级高速缓存架构 | |
CN108475199A (zh) | 用于执行密钥值查找指令的处理设备 | |
CN108351811A (zh) | 调度高度并行的应用 | |
CN108292232A (zh) | 用于加载索引和分散操作的指令和逻辑 | |
CN108351784A (zh) | 用于在乱序处理器中进行有序处理的指令和逻辑 | |
CN108369517A (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 |