CN104620254B - 用于低开销的存储器重播保护的并行化的计数器攀树 - Google Patents
用于低开销的存储器重播保护的并行化的计数器攀树 Download PDFInfo
- Publication number
- CN104620254B CN104620254B CN201380046288.XA CN201380046288A CN104620254B CN 104620254 B CN104620254 B CN 104620254B CN 201380046288 A CN201380046288 A CN 201380046288A CN 104620254 B CN104620254 B CN 104620254B
- Authority
- CN
- China
- Prior art keywords
- request
- tree
- memory
- read requests
- counter
- 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
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/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- 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
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Storage Device Security (AREA)
Abstract
处理器包括提供对存储器区域的重播和保密性保护的存储器加密引擎。存储器加密引擎沿着计数器树状结构执行低开销并行化的攀树。存储器加密引擎在接收到传入的对于受保护的存储器区域的读取请求时,执行依赖关系检查操作,以标识传入的读取请求和进程中的请求之间的依赖关系,并且当进程中的请求是当前未挂起的读取请求时,去除依赖关系。
Description
技术领域
本发明涉及计算机系统;更具体而言,涉及对存储在计算机系统的存储器中的数据的保护。
背景技术
现代的处理器被设计成保护存储器中的敏感数据免遭硬件和软件攻击。某些处理器提供用于进行加密、完整性以及重播保护的加密机制。存储器加密保护常驻存储器数据的保密性。另一方面,完整性保护防止攻击者导致对存储器中的密文(即,经加密的数据,而不是明文(未加密的数据))的隐藏的修改,重播保护消除对密文的任何未检测到的临时的替换。在没有这样的保护的情况下,带有对系统的物理访问的攻击者能够记录数据线的快照,并在稍后的时间点重播它们。
存储器加密主要被设计为防止其中当数据线移入和移出处理器管芯时攻击者试图悄悄地观察数据线的被动攻击。某些处理器包括在数据被存储到存储器的受保护的区域之前加密敏感数据的加密模块。在对受保护的区域的存储器读取时,在被馈送给处理器之前,数据线被解密。
可以基于用户所需的安全级别,选择加密与解密算法。对加密的一个可能的选择是计数器模式加密。在计数器模式加密中,加密/解密数据线的加密任务与数据本身分离。计数器模式加密的一个示例使用AESk加密算法来加密与每一数据线唯一地相关联但是独立于数据的种子。
CryptoPad=AESk(种子);
加密=明文XOR CryptoPad;
解密=密文XOR CryptoPad.
为确保计数器模式加密的安全性,种子需要在空间上并且在时间上唯一。可以通过使用数据线的地址作为种子的组分,来实现空间唯一性。另一方面,可以通过将每个线计数器与接受加密的数据线相关联,实现时间唯一性。每当相关联的数据线被写回到存储器时,增大此计数器。此计数器充当数据线的版本。
某些处理器实现在树的最低级别存储每一被保护数据线的版本的计数器树状结构。树的较高级别存储计数器的层次结构。计数器树状结构存储在存储器中,存储在处理器内的顶级计数器除外。此计数器树状结构通过一连串验证操作,保护存储器区域免遭重播攻击。向被保护数据线的写入修改计数器树的每一级别中的对应的树节点。当读取被保护数据线时,处理器验证计数器树的每一级别中的对应的树节点的值,以认证读取结果。
如果请求与过程中的请求中的任何一个共享计数器树状结构的任何级别的树节点,则现有的重播保护算法挂起对传入的请求的处理。如此,对不同的存储器请求的处理被串行化,这会增大存储器访问等待时间并使系统性能劣化。
附图简述
此处所描述的本发明的各实施例是作为示例说明的,而不仅限于各个附图的图形。
图1是示出了根据一实施例的包括存储器加密引擎的处理器的框图。
图2示出了根据一实施例的由计数器模式加密所使用的计数器树状结构的示例。
图3A-3C示出了根据一实施例的依赖关系链的示例。
图4示出了根据一实施例的存储器加密引擎内的组件。
图5是示出了根据一实施例的并行化攀树的方法的流程图。
图6是示出了根据一实施例的要由存储器加密引擎响应于传入的读取请求执行的操作的流程图。
图7A是根据一个实施例的有序和无序流水线的框图。
图7B是根据一个实施例的有序和无序核的框图。
图8A-B是根据一个实施例的更具体的示例性有序核架构的框图。
图9是根据一个实施例的处理器的框图。
图10是根据一个实施例的系统的框图。
图11是根据一个实施例的第二系统的框图。
图12是根据本发明的实施例的第三系统的框图。
图13是根据一个实施例的芯片上系统(SoC)的框图。
实施例的描述
在下面的描述中,阐述了很多具体细节。然而,应该理解,本发明的各实施例可以在没有这些具体细节的情况下实施。在其他情况下,没有详细示出已知的电路、结构,以及技术,以便不至于使对本描述的理解变得模糊。
本发明的各实施例提供用于并行地处理读取请求以由此显著降低对受保护的存储器的访问等待时间的重播保护机制。重播保护机制删除了由现有的请求挂起算法施加的读取请求的串行化。重播保护机制跟踪通过对读取请求的并行处理产生的复制的请求,并防止复制的操作被执行多次,以降低开销。在一个实施例中,由位于处理器管芯上的增强的存储器加密引擎(也被称为MEE)执行该机制,以分别对于被动和主动攻击执行数据加密和完整性/重播保护。应该指出的是,此处所描述的各实施例适用于使用计数器树以便进行重播保护的一类计数器模式加密方法。此处所描述的MEE只表示一个实例,并在下面的描述中被用作一个示例。
在统计上,读取请求构成向存储器控制器发出的全部请求的大部分。因此,对读取请求的并行处理可以实现显著的性能改善。
图1是示出了为进行保密性、完整性和重播保护执行存储器加密操作的处理器110的实施例的框图。处理器110可以用于下列系统中,包括但不仅限于,台式计算机、平板电脑、膝上型计算机、上网本、笔记本电脑、个人数字助理(PDA)、服务器、工作站、蜂窝电话、移动计算设备、智能电话、因特网设备或任何其他类型的计算设备。在另一个实施例中,处理器110可以用于片上系统(SOC)系统中。
处理器110包括一个或多个处理核140以执行系统的指令。处理核140包括但不仅限于,取出指令的预取逻辑,解码指令的解码逻辑,执行指令的执行逻辑等等。处理器110包括高速缓存指令和/或数据的高速缓存160。高速缓存160包括但不仅限于,处理器110内的高速缓存存储器的一级、二级和末级高速缓存(LLC)165,或任何其他配置。
存储器控制器130执行使处理器510能访问包括易失性存储器和/或非易失性存储器的主存储器120并与其进行通信的功能。在一个实施例中,存储器控制器130耦合到包括MEE 150的系统代理180。在一个实施例中,MEE 150位于末级高速缓存165和存储器控制器130之间,以执行对进出主存储器120的受保护的区域125的数据线的加密、解密和认证。MEE150位于处理器管芯上,而存储器120位于处理器管芯之外。
根据本发明的一实施例,MEE 150并行地处理多个存储器读取请求,以改善对受保护的区域125的访问等待时间。MEE 150执行计数器模式加密,其中,加密种子在时间上和在空间上对于数据线是独特的。如上文所描述的,可以通过使用要被访问的数据线的地址,实现空间唯一性,而可以通过使用充当数据线的版本的计数器来实现时间唯一性。在一个实施例中,MEE 150还使用计数器树状结构来保护主存储器120的受保护的区域125中的数据线。数据线的版本是此计数器树状结构的一部分。下面将参考图2详细描述计数器树状结构的实施例。
图2示出了根据本发明的一实施例的用于完整性和重播保护的计数器树状结构。应该指出的是,此处所描述的计数器模式加密表示一个示例;本发明的各实施例可以与计数器模式加密的替代机制一起使用。在替换实施例中,在计数器树状结构中可以比在图2中所示出的多一些或少一些级别。
计数器树状结构包括树节点的级别的层次结构。顶部(根)级别包括存储在处理器管芯的内部存储中的管芯上的计数器(即,L3计数器210)的序列。内部存储包括但不仅限于,管芯上的静态随机存取存储器(SRAM)、寄存器组,以及处理器管芯中的任何其他合适的存储器。由于L3计数器210位于处理器管芯上,因此,它们的内容受信任,没有受被动和主动攻击的危险。然而,受信任的边界(示为虚线205)在L3计数器210结束。在一个实施例中,较低级别的计数器树在处理器管芯的外面(例如,在图1的主存储器120中)。
在一个实施例中,每一L3计数器210都链接到包含L2计数器220的序列的一块L2中间元数据。每一L2计数器220都链接到包含L1计数器230的序列的一块L1中间元数据。为简明起见,图2省略了表示L1中间元数据和L1计数器230的框。每一L1计数器230都链接到包含L0计数器240的序列的一块L0中间元数据。每一L0计数器240都链接到包含版本节点的序列(通过“V”来表示)260的版本块250。每一版本节点260都与主存储器120的受保护的区域125中的加密的数据线280相关联。版本节点260的内容是在计数器模式加密中提供加密种子的时间组分的相关联的数据线的版本。由于较低级别的计数器(包括L2、L1和L0计数器和版本节点260)离开处理器管芯,因此,易受攻击,每一计数器和每一版本节点都利用嵌入的消息认证代码(MAC)编码(示为带有阴影线的框),以确保它们的完整性。
在一个实施例中,使用来自下一较高的级别的对应的计数器,作为输入,对每一嵌入的MAC在它们被嵌入在其中的线上进行计算。在图2的示例中,使用V0-Vp的值以及其对应的L0计数器(L03),计算与L03相关联的版本块250(在图2中被示为中间版本块)的嵌入的MAC。此嵌入的MAC的值条带地存储在版本块250的线中(在图2中示为带条带的框)。类似地计算L0、L1和L2中的每一线的嵌入的MAC。L3计数器不需要嵌入的MAC,因为L3计数器的内容在受信任的边界205内。
整个计数器树在受保护的存储器区域上方构建,从版本开始,直到L3计数器,提供对受保护的存储器区域中的数据线的重播保护。重播保护的过程如下所示。当处理器对数据线执行读取操作或写入操作时,MEE 150加载包含由数据线的地址所标识的树节点(也被称为分枝节点)的计数器树的树枝。沿着树枝加载树节点并验证它们的值的真实性的过程此处被称为攀树(tree walk)。攀树从计数器树的底部级别(即,版本节点260)前进到根节点(即,L3计数器)。需要验证树节点值的真实性,因为树状结构的主要部分驻留在主存储器中,因此,易受攻击。在写入的情况下,执行攀树,以验证枝节点值的真实性,并更新那些值。在读取的情况下,还执行攀树,以验证分枝节点值的真实性,但是,不更新那些值。在一个实施例中,MEE 150包含实现攀树的有限态机器电路。
在一个实施例中,每一加密的数据线280都利用包含从数据线280的内容计算出的MAC的MAC节点270编码。每当数据线被写回到存储器时,MEE 150(图1的)更新此MAC,以反映存储在存储器中的最近的数据值。当从存储器中读取数据线时,MEE 150验证其相关联的MAC节点270的值,以确定正在被读取的数据线的完整性。MAC节点270的使用提供针对存储器驻留的数据线上的修改攻击的完整性保护。
当处理器执行写入操作以将经加密的数据线280中的一个写回到受保护的存储器区域时(例如,当将数据线从管芯上的末级高速缓存清除到主存储器中的受保护的区域时),MEE 150标识与该数据线相关联的版本节点260和L0,L1,L2和L3计数器(210-240)。MEE150更新与数据线相关联的MAC 270并增大标识的版本节点260中的该数据线的版本。另外,MEE 150还更新该数据线的标识的L0,L1,L2和L3计数器(210-240),以及与更新的版本和计数器相关联的嵌入的MAC。此更新过程从计数器树的底部级别前进到L3计数器的根级别,L3计数器安全地存储在处理器管芯上的芯片上,因此,可保证针对攻击的保护。计数器树的每一级别处的计数器充当下一较低级别的版本,以版本节点260存储数据线的版本结束。因此,在向数据线写入时,更新所有计数器(包括版本)以及它们的沿着由数据线的地址所标识的树枝的相关联的嵌入的MAC,以反映版本更新。
为了确保重播保护,每当从受保护的区域加载数据线时,针对树节点验证真实性,直到计数器树的根。任何级别处的不匹配表示可能的攻击并引发安全性异常,由此,战胜攻击。具体而言,当处理器在经加密的数据线280中的一个上执行读取操作时,MEE 150标识该数据线的版本以及L0,L1,L2和L3计数器(210-240)。读取操作不改变版本和L0,L1,L2和L3计数器的值(210-240)。在读取操作时,MEE 150验证与数据线相关联的MAC 270。另外,MEE150验证与版本,L0,L1,L2和L3计数器(210-240)中的每一个相关联的嵌入的MAC。此验证过程从计数器树的底部级别前进到安全的根计数器L3。
在一个实施例中,加载到攀树中的树节点被高速缓存在MEE高速缓存(MEE 150的本地高速缓存)本地。MEE高速缓存存储树节点(包括版本节点和嵌入的MAC)的被以前的请求验证的值。MEE高速缓存的内容是安全的,因为它位于处理器管芯上。对于读取操作,当在MEE高速缓存中发现沿着攀树的分支的第一节点时,结束攀树。对于写入操作,当在MEE高速缓存中发现沿着攀树的树枝的第一节点,且高速缓存的树节点处于修改的状态时,结束攀树。
为确保计数器树对于所有请求返回正确的计数器值,在写入请求时,在共享那些树节点中的任何一个的任何其他请求(读取或写入)可以进行之前,MEE 150完成对沿着写入请求的分枝的全部树节点的更新。由于读取请求不改变计数器树的值,因此,可以并行地处理某些读取请求,尽管这些读取请求共享计数器树中的树节点中的一个或多个。
图3A-3C示出了向MEE 150提交的读取请求之间的依赖关系的示例。假设访问受保护的存储器区域的四个读取请求(A,B,C以及D)在随后的循环中背对背到达。为确保从受保护的存储器区域中读取的加密的数据线免遭完整性和重播攻击,MEE 150需要验证与正在被读取的数据线相关联的树节点值。此示例中的四个请求共享某些树节点,因此,在它们之间建立依赖关系链。图3A示出了请求A和B在相同高速缓存线上(或等效地,相同树节点)具有它们的版本,同样,沿着计数器树,共享它们的分枝中的所有节点,直到根L3计数器。在示例中,共享的树节点被示为带有阴影线。由于请求B在的请求A之后到达以供处理,因此,使请求B依赖于请求A。
图3B示出了请求C到达下一循环。由于请求C与请求B共享相同L3计数器(以及L2计数器和L1计数器),因此,使请求C依赖于请求B。图3B所示的共享从级别L1向上。类似地,图3C示出了请求D与请求C共享L3计数器,并使其依赖于请求C。图3C所示的共享处于最后一个级别,即,L3。
图3A-3C还示出了由请求形成的依赖关系链。在依赖关系链中,使新到达的请求依赖于链中的最后一个请求。在一个实施例中,MEE 150跟踪数据结构中的每一依赖关系链中的最后一个请求,其中,到达MEE 150的每一请求都与LinkTail字段相关联。一组LinkTail字段表示其相关联的请求是依赖关系链中的最后一个请求。
利用串行化的依赖关系算法,只有在对请求A的处理完成的情况下,才释放请求B(即,开始攀树)。一旦请求B完成了其攀树,请求C的攀树开始。一旦请求C完成了其攀树,请求D的攀树开始。
本发明的各实施例实现允许并行地处理多个读取请求的并行化的攀树。并行化攀树缩小了用于完整性和重播保护的开销。并行化的攀树基于读取请求不必被串行化的观察,因为读取不修改计数器树中的任何计数器值。
然而,写入操作更新计数器树中的计数器值,如此,需要维护适当的顺序。对于涉及写入的请求,需要实施依赖关系,以确保正确的计数器值用于执行真实性检查。
在一个实施例中,MEE 150在接收到传入的读取请求时,执行依赖关系检查,以判断传入的读取请求是否与正在由MEE 150处理的以前接收到的读取请求共享树节点中的任何一个,以及在存在树节点的共享的情况下是否可以执行并行化的攀树。
图4是示出了根据本发明的一个实施例的对于读取请求的依赖关系检查方法400的流程图。在一个实施例中,由图1的MEE 150执行方法400,虽然也可以使用替换实施例。
在一个实施例中,当MEE 150接收到传入的读取请求时,,它将此请求的L3计数器地址与进程中的请求中的每一个(即,当前正在由MEE 150处理的请求)的L3计数器地址进行比较(框410)。如果在传入的请求和进程中的请求之间有L3计数器地址的匹配(框420),则MEE 150将该进程中的请求设置为传入的请求的“依赖(dependent_on)”请求(框430)。如果没有匹配(框420),则操作持续,直到全部进程中的请求都被比较(框425)。
如果在框420发现匹配的进程中的请求,则MEE 150进一步检查依赖请求是否是依赖关系链的尾部(框440)。如果不是尾部,则操作返回到框410,以发现具有匹配的L3计数器地址并且是依赖关系链的尾部的另一个进程中的请求。如果依赖请求是依赖关系链的尾部(框440),则MEE 150进一步检查依赖请求是否是读取请求并且当前未被挂起(框450)。如果框450的条件是假,则MEE 150挂起传入的请求(框470)。如果框450的条件是真(即,依赖请求是读取请求,并且当前未被挂起),则传入的请求的“依赖”被复位为“空(NULL)”,意味着,传入的请求将不会由于此依赖请求被挂起(框460)。方法400的操作持续,直到MEE 150确定挂起传入的读取请求(框470),或在比较所有进程中的请求之后确定不挂起传入的请求(框425和480)。
MEE 150通过执行方法400,检查传入的读取请求的依赖关系。如果发现传入的读取请求依赖于当前未挂起的读取,则忽略依赖关系检查的输出,并且允许传入的读取请求开始其处理。
在某些实施例中,在图4中所描述的操作可以与进程中的请求并行地执行。例如,每一进程中的请求都可以维护其L3地址以及其LinkTail位。只有在对应的进程中的请求是依赖关系链中的最后一个条目的情况下,才设置LinkTail位。所有进程中的请求的LinkTail位构成LinkTail向量。当传入的请求被准许进入MEE 150时,并行地将传入的请求的L3地址与所有进程中的请求的L3地址进行比较,并且生成L3Match位向量作为结果。如果在传入的请求和进程中的请求之间有L3地址的匹配,则设置此L3Match位向量中的对应于该进程中的请求的位。然后,将L3Match位向量与LinkTail向量进行与操作。所产生的向量中的位值1表示对应的进程中的请求是对传入的请求的依赖请求。操作可以前进到图4的框450、460和470,以判断是否应该挂起传入的请求。
然而,在某些情况下,允许两个请求并行地进行会导致重复的操作。在图3A的示例中,请求A和B会导致MEE 150发出访问存储器中的相同树节点的请求,如此,浪费存储器带宽。作为另一个示例,请求A和B会导致MEE 150对于共享的树节点执行重复的认证,如此,浪费加密资源和功率。本发明的各实施例包括跟踪被并行地处理的读取请求所导致的重复的请求的电路,并防止重复的操作由MEE 150执行。在一个实施例中,此电路是MEE 150中的请求跟踪器(也被称为记分牌)。
图5示出了包括请求跟踪器电路510的MEE 150的实施例。请求跟踪器电路510与MEE跟踪器520(跟踪向MEE 150发送的读和写请求的进度)、填充缓冲器530(向存储器发出对于攀树所使用的树节点的请求)、加密引擎540(执行树节点的加密、解密以及认证),以及MEE高速缓存550(高速缓存以前的计数器树访问的结果;例如,L0,L1,L2,版本以及嵌入的MAC)连接。请求跟踪器电路510分别包括填充缓冲器530、加密引擎540和MEE高速缓存550的未完成的请求队列531,541和551。MEE 150还包括存储器560,用于存储计数器树状结构的顶级计数器(例如,图2的L3计数器),以及用于执行并行化的攀树的有限状态机(FSM)570。
当传入的请求到达MEE 150时,MEE跟踪器520向请求跟踪器电路510发出请求,指定由该请求用于其攀树的树节点。请求跟踪器电路510跟踪向MEE高速缓存550、填充缓冲器530和加密引擎540发送的请求,以便请求只向它们中的每一个发送一次。即,不向MEE高速缓存550、填充缓冲器530和加密引擎540中的每一个发送重复的请求。请求跟踪器电路510通过使用未完成的请求队列531,541和551,来跟踪请求,请求队列531,541和551分别包含有关对填充缓冲器530、加密引擎540和MEE高速缓存550的重复的请求的信息。请求跟踪器电路510就重复的请求查询这些未完成的队列531,541和551,并跟踪这些队列中的重复的请求,以便可以向对应的跟踪器条目发送它们的完成状态,以使来自以前的请求的结果被转发到随后的重复的请求。如此,将向MEE组件只发送重复的请求一次。
再次参考图3A-3C的示例,此处所描述的对于读取请求的并行化的攀树去除在受保护的存储器访问中的不需要的串行化。请求A和请求B可以由MEE 150并行地处理。利用请求跟踪器电路510,尽管这两个请求共享整个树分枝,但是,同一存储器请求将不会向存储器发送两次,并且对于这两个请求,相同密码操作将不会执行多次。请求跟踪器电路510确保当复制的请求根据需要获得响应时,它们不实际被执行多次。对于请求C,可以与请求B的处理并行地加载并认证包含版本和L0的树节点。最后,可以在沿着计数器树中的分枝的所有级别加载并认证请求D,只与以前的请求共享L3计数器。示例示出了并行化的攀树如何可以实现读取请求处理的显著的并行化同时避免由并行化产生的潜在地重复的工作。共享的级别越高,优点越多。值得注意的是,由于计数器树中的较高的节点表示受保护的存储器的较大的面积,因此,相比于树的较低级别,请求更加可能共享树的较高级别。
下面的描述提供带有更具体的细节的另一个示例。假设两个读取请求A和B共享计数器树分枝的树节点,包括L0计数器、L1计数器、L2计数器和L3计数器,其中,L0,L1和L2计数器位于存储器中。为简化讨论,在此示例中只描述了对L0的访问。响应于请求A和B,MEE跟踪器520向存储器发出两个对同一个树节点地址(L0)的请求。请求跟踪器电路510注意到两个MEE跟踪器条目请求了同一个地址L0,因此,将这些请求记录到未完成的队列531(该队列531跟踪向存储器发出的请求)的对应的条目中。当L0的数据返回时,通过请求跟踪器电路510,通知等待L0的MEE跟踪器条目,以允许MEE请求向前。其他未完成的队列541和551用于类似的目的。例如,当来自存储器的请求的数据返回时,请求跟踪器电路510向两个MEE跟踪器条目发出信号,指出所请求的数据已经返回,为MEE跟踪器条目中的每一个运行的有限状态机将向加密引擎540发送对认证的请求,以验证嵌入的MAC。请求跟踪器电路510将复制的请求记录到加密引擎540的未完成的队列541中,一旦加密操作完成,就将返回的结果转发到共享同一个树节点的所有跟踪器条目。这确保请求不向加密引擎540发送两次。
图6是根据一实施例的用于提供并行化的攀树的方法600的方框流程图。方法600从处理器(更具体而言,例如,图1和5的MEE 150)接收用于读取通过计数器模式加密和计数器树状结构保护的存储器区域的传入的读取请求开始(框610)。处理器标识传入的读取请求和进程中的请求之间的依赖关系(框620),当进程中的请求是当前未挂起的读取请求时,去除依赖关系(框630)。通过去除依赖关系,处理器可以并行地处理传入的读取请求和进程中的请求,以便读取存储器区域(框640)。处理器将跟踪通过对读取请求的并行处理产生的复制的请求,由此防止复制的操作由存储器加密引擎执行(框650)。
在各实施例中,方法600可以由通用处理器、专用处理器(例如,图形处理器或数字信号处理器),或另一种类型的数字逻辑器件或指令处理设备来执行。在某些实施例中,方法600可以由处理器中的图1和5的MEE 150执行,诸如图7-13所示的各实施例。此外,图1和5的MEE 150,以及图7-13所示的处理器、设备,或系统可以执行与方法600的那些相同,类似,或不同的操作和方法的各实施例。
本发明的各实施例的另一个方面是对写入请求的并行化攀树的扩展。如上文所描述的对于读取的并行化攀树可以被扩展到写入,以提取额外的性能改善。随着写入更新计数器值,需要实施写入更新的顺序,以防止请求获取错误的计数器值。再次参考图5,在一个实施例中,请求跟踪器电路510包括用于锁定树节点的逻辑580。请求跟踪器电路510维护被锁定的节点的数据结构,该数据结构存储当前进程中的请求正在使用的树节点的地址。当接收到对于受保护的存储器区域的读取请求时,请求跟踪器电路510将向计数器树状结构中的读取请求的分枝节点发出共享的锁定请求,以在共享的模式下锁定那些树节点。当接收到对于受保护的存储器区域的写入请求时,请求跟踪器电路510将向计数器树状结构中的写入请求的分枝节点发出排它性写入锁定请求,以在排它性模式下锁定那些树节点。基于被锁定的节点的数据结构,如果传入的请求导致对排他地锁定的节点的访问(由于进程中的写入),或如果传入的请求是导致对被锁定的节点的访问的另一个写入请求(在共享的模式下或在排它性模式下),则MEE 150将挂起传入的请求。在一个实施例中,请求跟踪器电路510负责在锁被释放时唤醒挂起的请求。
示例性核架构
有序和无序核框图
图7A是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的无序发布/执行流水线的框图。图7B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的无序发布/执行架构核的框图。图7A和7B中的实线框示出了有序流水线和有序核,而可选增加的虚线框示出了寄存器重命名的、无序发布/执行流水线和核。给定有序方面是无序方面的子集的情况下,将描述无序方面。
在图7A中,处理器流水线700包括取出级702、长度解码级704、解码级706、分配级708、重命名级710、调度(也称为分派或发布)级712、寄存器读取/存储器读取级714、执行级716、写回/存储器写入级718、异常处理级722和提交级724。
图7B示出了包括耦合到执行引擎单元750的前端单元730的处理器核790,且执行引擎单元和前端单元两者都耦合到存储器单元770。核790可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。作为又一选项,核790可以是专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理器单元(GPGPU)核、或图形核等等。
前端单元730包括耦合到指令高速缓存单元734的分支预测单元732,该指令高速缓存单元耦合到指令转换后备缓冲器(TLB)736,该指令转换后备缓冲器耦合到指令取出单元738,指令取出单元耦合到解码单元740。解码单元740(或解码器)可解码指令,并生成从原始指令解码出的、或以其它方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其它指令、或其它控制信号作为输出。解码单元740可使用各种不同的机制来实现。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核790包括(例如,在解码单元740中或否则在前端单元730内的)用于存储某些宏指令的微代码的微代码ROM或其它介质。解码单元740耦合至执行引擎单元750中的重命名/分配器单元752。
执行引擎单元750包括重命名/分配器单元752,该重命名/分配器单元耦合至引退单元754和一个或多个调度器单元756的集合。调度器单元756表示任何数目的不同调度器,包括预留站、中央指令窗等。调度器单元756耦合到物理寄存器组单元758。每个物理寄存器组单元758表示一个或多个物理寄存器组,其中不同的物理寄存器组存储一种或多种不同的数据类型,诸如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器组单元758包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器、和通用寄存器。物理寄存器组单元758与引退单元754重叠以示出可以用来实现寄存器重命名和无序执行的各种方式(例如,使用重新排序缓冲器和引退寄存器组;使用将来的文件、历史缓冲器和引退寄存器组;使用寄存器映射和寄存器池等等)。引退单元754和物理寄存器组单元758耦合到执行群集760。执行群集760包括一个或多个执行单元762的集合和一个或多个存储器访问单元764的集合。执行单元762可以对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整型、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但其它实施例可包括全部执行所有功能的仅一个执行单元或多个执行单元。调度器单元756、物理寄存器组单元758、执行群集760被示出为可能是复数个,因为某些实施例为某些数据/操作类型创建了诸个单独流水线(例如,均具有各自调度器单元、物理寄存器组单元和/或执行群集的标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,以及在单独的存储器访问流水线的情况下特定实施例被实现为仅仅该流水线的执行群集具有存储器访问单元764)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以为无序发布/执行,并且其余流水线可以为有序发布/执行。
存储器访问单元764的集合耦合到存储器单元770,该存储器单元包括耦合到数据高速缓存单元774的数据TLB单元772,其中数据高速缓存单元耦合到二级(L2)高速缓存单元776。在一个示例性实施例中,存储器访问单元764可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元770中的数据TLB单元772。指令高速缓存单元734还耦合到存储器单元770中的第二级(L2)高速缓存单元776。L2高速缓存单元776耦合到一个或多个其它级的高速缓存,并最终耦合到主存储器。
作为示例,示例性寄存器重命名的、无序发布/执行核架构可以如下实现流水线700:1)指令取出738执行取出和长度解码级702和704;2)解码单元740执行解码级706;3)重命名/分配器单元752执行分配级708和重命名级710;4)调度器单元756执行调度级712;5)物理寄存器组单元758和存储器单元770执行寄存器读取/存储器读取级714;执行群集760执行执行级716;6)存储器单元770和物理寄存器组单元758执行写回/存储器写入级718;7)各单元可牵涉到异常处理级722;以及8)引退单元754和物理寄存器组单元758执行提交级724。
核790可支持一个或多个指令集(例如,x86指令集(具有与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼州桑尼维尔市的ARM控股的ARM指令集(具有诸如NEON等可选附加扩展)),其中包括本文中描述的各指令。在一个实施例中,核790包括用于支持紧缩数据指令集扩展(例如SSE、AVX1、AVX2等等)的逻辑,由此允许许多多媒体应用所使用的操作利用紧缩数据来执行。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,此各种方式包括时分多线程化、同步多线程化(其中单个物理核为物理核正在同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后诸如用超线程化技术来同步多线程化)。
尽管在无序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所示出的处理器的实施例还包括分开的指令和数据高速缓存单元734/774以及共享L2高速缓存单元776,但替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如一级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
具体的示例性有序核架构
图8A-B示出了更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其它核)。根据应用,这些逻辑块通过高带宽的互连网络(例如,环形网络)与一些固定的功能逻辑、存储器I/O接口和其它必要的I/O逻辑通信。
图8A是根据本发明的各实施例的单个处理器核以及它与管芯上互连网络802的连接及其二级(L2)高速缓存的本地子集804的框图。在一个实施例中,指令解码器800支持具有紧缩数据指令集扩展的x86指令集。L1高速缓存806允许对进入标量和向量单元中的高速缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单元808和向量单元810使用分开的寄存器集合(分别为标量寄存器812和向量寄存器814),并且在这些寄存器之间转移的数据被写入到存储器并随后从一级(L1)高速缓存806读回,但是本发明的替代实施例可以使用不同的方法(例如使用单个寄存器集合或包括允许数据在这两个寄存器组之间传输而无需被写入和读回的通信路径)。
L2高速缓存的本地子集804是全局L2高速缓存的一部分,该全局L2高速缓存被划分成多个分开的本地子集,即每个处理器核一个本地子集。每个处理器核具有到其自己的L2高速缓存804的本地子集的直接访问路径。被处理器核读出的数据被存储在其L2高速缓存子集804中,并且可以与其它处理器核访问其自己的本地L2高速缓存子集并行地被快速访问。被处理器核写入的数据被存储在其自己的L2高速缓存子集804中,并在必要的情况下从其它子集清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其它逻辑块之类的代理在芯片内彼此通信。每个环形数据路径为每个方向1012位宽。
图8B是根据本发明的各实施例的图8A中的处理器核的一部分的展开图。图8B包括L1高速缓存804的L1数据高速缓存806A部分,以及关于向量单元810和向量寄存器814的更多细节。具体地说,向量单元810是16宽向量处理单元(VPU)(见16宽ALU 828),该单元执行整型、单精度浮点以及双精度浮点指令中的一个或多个。该VPU通过混合单元820支持对寄存器输入的混合、通过数值转换单元822A-B支持数值转换、并通过复制单元824支持对存储器输入的复制。写掩码寄存器826允许断言所得的向量写入。
具有集成存储器控制器和图形器件的处理器
图9是根据本发明的各实施例可能具有多于一个核、可能具有集成存储器控制器、以及可能具有集成图形器件的处理器900的框图。图9中的实线框示出具有单个核902A、系统代理910、一个或多个总线控制器单元916的集合的处理器900,而虚线框的可选附加示出具有多个核902A-N、系统代理单元910中的一个或多个集成存储器控制器单元914的集合以及专用逻辑908的替代处理器900。
因此,处理器900的不同实现可包括:1)CPU,其中专用逻辑908是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核902A-N是一个或多个通用核(例如,通用的有序核、通用的无序核、这两者的组合);2)协处理器,其中核902A-N是旨在主要用于图形和/或科学(吞吐量)的多个专用核;以及3)协处理器,其中核902A-N是多个通用有序核。因此,处理器900可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、或嵌入式处理器等。该处理器可以被实现在一个或多个芯片上。处理器900可以是一个或多个衬底的一部分,和/或可以使用诸如例如BiCMOS、CMOS或NMOS等的多个加工技术中的任何一个技术将该处理器实现在一个或多个衬底上。
存储器层次结构包括在各核内的一个或多个级别的高速缓存、一个或多个共享高速缓存单元906的集合、以及耦合至集成存储器控制器单元914的集合的外部存储器(未示出)。该共享高速缓存单元906的集合可以包括一个或多个中间级高速缓存,诸如二级(L2)、三级(L3)、四级(L4)或其它级别的高速缓存、末级高速缓存(LLC)、和/或其组合。尽管在一个实施例中,基于环的互连单元912将集成图形逻辑908、共享高速缓存单元906的集合以及系统代理单元910/集成存储器控制器单元914互连,但替代实施例可使用任何数量的公知技术来将这些单元互连。在一个实施例中,可以维护一个或多个高速缓存单元906和核902-A-N之间的一致性(coherency)。
在一些实施例中,核902A-N中的一个或多个核能够多线程化。系统代理910包括协调和操作核902A-N的那些组件。系统代理单元910可包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括用于调整核902A-N和集成图形逻辑908的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核902A-N在架构指令集方面可以是同构的或异构的;即,这些核902A-N中的两个或更多个核可能能够执行相同的指令集,而其它核可能能够执行该指令集的仅仅子集或不同的指令集。
示例性计算机架构
图10-13是示例性计算机架构的框图。本领域已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其它电子设备的其它系统设计和配置也是合适的。一般地,能够包含本文中所公开的处理器和/或其它执行逻辑的多个系统和电子设备一般都是合适的。
现在参考图10,所示出的是根据本发明一个实施例的系统1000的框图。系统1000可以包括一个或多个处理器1010、1015,这些处理器耦合到控制器中枢1020。在一个实施例中,控制器中枢1020包括图形存储器控制器中枢(GMCH)1090和输入/输出中枢(IOH)1050(其可以在分开的芯片上);GMCH 1090包括存储器和图形控制器,存储器1040和协处理器1045耦合到该存储器和图形控制器;IOH 1050将输入/输出(I/O)设备1060耦合到GMCH1090。或者,存储器和图形控制器中的一个或两者被集成在处理器内(如本文中所描述的),存储器1040和协处理器1045直接耦合到处理器1010以及控制器中枢1020,该控制器中枢与IOH 1050处于单个芯片中。
附加处理器1015的任选性质用虚线表示在图10中。每一处理器1010、1015可包括本文中描述的处理核中的一个或多个,并且可以是处理器900的某一版本。
存储器1040可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢1020经由诸如前端总线(FSB)之类的多分支总线、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接1095与处理器1010、1015进行通信。
在一个实施例中,协处理器1045是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。在一个实施例中,控制器中枢1020可以包括集成图形加速器。
在物理资源1010、1015之间会存在包括架构、微架构、热、和功耗特征等的一系列品质度量方面的各种差异。
在一个实施例中,处理器1010执行控制一般类型的数据处理操作的指令。协处理器指令可嵌入在这些指令中。处理器1010将这些协处理器指令识别为应当由附连的协处理器1045执行的类型。因此,处理器1010在协处理器总线或者其它互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1045。协处理器1045接受并执行所接收的协处理器指令。
现在参考图11,所示为根据本发明的一实施例的更具体的第一示例性系统1100的框图。如图11所示,多处理器系统1100是点对点互连系统,并包括经由点对点互连1150耦合的第一处理器1170和第二处理器1180。处理器1170和1180中的每一个都可以是处理器900的某一版本。在本发明的一个实施例中,处理器1170和1180分别是处理器1010和1015,而协处理器1138是协处理器1045。在另一实施例中,处理器1170和1180分别是处理器1010和协处理器1045。
处理器1170和1180被示为分别包括集成存储器控制器(IMC)单元1172和1182。处理器1170还包括作为其总线控制器单元的一部分的点对点(P-P)接口1176和1178;类似地,第二处理器1180包括点对点接口1186和1188。处理器1170、1180可以使用点对点(P-P)接口电路1178、1188经由P-P接口1150来交换信息。如图11所示,IMC 1172和1182将各处理器耦合至相应的存储器,即存储器1132和存储器1134,这些存储器可以是本地附连至相应的处理器的主存储器的部分。
处理器1170、1180可各自经由使用点对点接口电路1176、1194、1186、1198的各个P-P接口1152、1154与芯片组1190交换信息。芯片组1190可以可选地经由高性能接口1139与协处理器1138交换信息。在一个实施例中,协处理器1138是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。
共享高速缓存(未示出)可以被包括在任一处理器之内,或被包括在两个处理器外部但仍经由P-P互连与这些处理器连接,从而如果将某处理器置于低功率模式时,可将任一处理器或两个处理器的本地高速缓存信息存储在该共享高速缓存中。
芯片组1190可经由接口1196耦合至第一总线1116。在一个实施例中,第一总线1116可以是外围组件互连(PCI)总线,或诸如PCI Express总线或其它第三代I/O互连总线之类的总线,但本发明的范围并不受此限制。
如图11所示,各种I/O设备1114可以连同总线桥1118耦合到第一总线1116,该总线桥将第一总线1116耦合至第二总线1120。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的处理器、加速器(诸如例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器的一个或多个附加处理器1115耦合到第一总线1116。在一个实施例中,第二总线1120可以是低引脚计数(LPC)总线。各种设备可以被耦合至第二总线1120,在一个实施例中这些设备包括例如键盘/鼠标1122、通信设备1127以及诸如可包括指令/代码和数据1130的盘驱动器或其它大容量存储设备的存储单元1128。此外,音频I/O1124可以被耦合至第二总线1120。注意,其它架构是可能的。例如,代替图11的点对点架构,系统可以实现多分支总线或其它这类架构。
现在参考图12,所示为根据本发明的实施例的更具体的第二示例性系统1200的框图。图11和图12中的相同部件用相同附图标记表示,并从图12中省去了图11中的某些方面,以避免使图12的其它方面变得模糊。
图12示出处理器1170、1180可分别包括集成存储器和I/O控制逻辑(”CL”)1172和1182。因此,CL 1172、1182包括集成存储器控制器单元并包括I/O控制逻辑。图12不仅示出存储器1132、1134耦合至CL 1172、1182,而且还示出I/O设备1214也耦合至控制逻辑1172、1182。传统I/O设备1215被耦合至芯片组1190。
现在参照图13,所示出的是根据本发明一个实施例的SoC 1300的框图。在图9中,相似的部件具有同样的附图标记。另外,虚线框是更先进的SoC的可选特征。在图13中,互连单元1302被耦合至:应用处理器1310,该应用处理器包括一个或多个核202A-N的集合以及共享高速缓存单元906;系统代理单元910;总线控制器单元916;集成存储器控制器单元914;一组或一个或多个协处理器1320,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1330;直接存储器存取(DMA)单元1332;以及用于耦合至一个或多个外部显示器的显示单元1340。在一个实施例中,协处理器1320包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如图11中示出的代码1130)应用于输入指令,以执行本文描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,指令表示处理器中的各种逻辑,指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。被称为“IP核”的这些表示可以被存储在有形的机器可读介质上,并被提供给多个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
这样的机器可读存储介质可以包括但不限于通过机器或设备制造或形成的物品的非瞬态的有形安排,其包括存储介质,诸如:硬盘;任何其它类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,例如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。
因此,本发明的各实施例还包括非瞬态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
虽然已经描述并在附图中示出了特定示例实施例,但可以理解,这些实施例仅仅是对本宽泛发明的说明而非限制,并且本发明不限于所示出和所描述的特定结构和配置,因为本领域技术人员在研究了本公开文本之后可以料知到多种其它修改方式。在诸如本申请这样的技术领域中,因为发展很快且未来的进步难以预见,所以本公开的诸个实施例可通过受益于技术进步而容易地获得配置和细节上的改动,而不背离本公开的原理和所附权利要求书的范围。
Claims (21)
1.一种处理器,包括:
一个或多个处理核;以及,
耦合到一个或多个处理核的存储器加密引擎,所述存储器加密引擎在接收到传入的对于通过计数器模式加密和计数器树状结构保护的存储器区域的读取请求时,执行依赖关系检查操作,以标识所述传入的读取请求和进程中的请求之间的依赖关系,并且当所述进程中的请求是当前未挂起的读取请求时,去除所述依赖关系。
2.如权利要求1所述的处理器,其特征在于,所述进程中的请求是依赖关系链的尾部,并在所述计数器树状结构中与所述传入的读取请求共享树节点。
3.如权利要求1所述的处理器,其特征在于,所述存储器加密引擎将并行地处理所述传入的读取请求和所述进程中的请求,以便读取所述存储器区域。
4.如权利要求1所述的处理器,其特征在于,所述存储器加密引擎进一步包括请求跟踪器电路以跟踪通过对读取请求的并行处理产生的复制的请求,并防止复制的操作由所述存储器加密引擎执行。
5.如权利要求4所述的处理器,其特征在于,所述请求跟踪器电路将跟踪由所述存储器加密引擎的组件排队的未完成的请求。
6.如权利要求1所述的处理器,其特征在于,所述存储器加密引擎,当接收到对于所述存储器区域的读取请求时,将向所述计数器树状结构中的将被所述读取请求访问的树节点的第一子集发出共享的锁定请求,以由此在共享的模式下锁定树节点的所述第一子集,当接收到对于所述存储器区域的写入请求时,将向所述计数器树状结构中的将被所述写入请求访问的树节点的第二子集发出排它性写入锁定请求,以由此在排它性模式下锁定第二节点。
7.如权利要求6所述的处理器,其特征在于,如果所述传入的请求导致对树节点的所述第二子集的访问,或如果所述传入的请求是在所述共享的模式下或在所述排它性模式下导致对被锁定的节点的访问的另一个写入请求,则所述存储器加密引擎将挂起传入的请求。
8.一种由处理器执行的方法,包括:
由处理器中的存储器加密引擎,接收传入的对于读取通过计数器模式加密和计数器树状结构保护的存储器区域的读取请求;
标识所述传入的读取请求和进程中的请求之间的依赖关系;以及
当所述进程中的请求是当前未挂起的读取请求时,去除所述依赖关系。
9.如权利要求8所述的方法,其特征在于,所述进程中的请求是依赖关系链的尾部,并在所述计数器树状结构中与所述传入的读取请求共享树节点。
10.如权利要求8所述的方法,其特征在于,去除所述依赖关系进一步包括:
并行地处理所述传入的读取请求和所述进程中的请求,以便读取所述存储器区域。
11.如权利要求8所述的方法,其特征在于,去除所述依赖关系进一步包括:
跟踪通过对读取请求的并行处理产生的复制的请求;以及
防止复制的操作被所述存储器加密引擎执行。
12.如权利要求11所述的方法,其特征在于,跟踪复制的请求进一步包括:
跟踪由所述存储器加密引擎的组件排队的未完成的请求。
13.如权利要求8所述的方法,进一步包括:
在接收到对于所述存储器区域的读取请求时,将向所述计数器树状结构中的将被所述读取请求访问的树节点的第一子集发出共享的锁定请求,以由此在共享的模式下锁定树节点的所述第一子集;以及
在接收到对于所述存储器区域的写入请求时,将向所述计数器树状结构中的将被所述写入请求访问的树节点的第二子集发出排它性写入锁定请求,以由此在排它性模式下锁定树节点的所述第二子集。
14.如权利要求13所述的方法,进一步包括:
如果所述传入的请求导致对树节点的所述第二子集的访问,或如果所述传入的请求是在所述共享的模式下或在所述排它性模式下导致对被锁定的节点的访问的另一个写入请求,则挂起传入的请求。
15.一种计算机系统,包括:
包括通过计数器模式加密和计数器树状结构保护的存储器区域的主存储器;
耦合到所述主存储器的一个或多个处理核;以及
耦合到所述一个或多个处理核的存储器加密引擎,所述存储器加密引擎在接收到传入的对于所述存储器区域的读取请求时,执行依赖性检查操作,以标识所述传入的读取请求和进程中的请求之间的依赖关系,并且当所述进程中的请求是当前未挂起的读取请求时,去除所述依赖关系。
16.如权利要求15所述的计算机系统,其特征在于,所述进程中的请求是依赖关系链的尾部,并在所述计数器树状结构中与所述传入的读取请求共享树节点。
17.如权利要求15所述的计算机系统,其特征在于,所述存储器加密引擎将并行地处理所述传入的读取请求和所述进程中的请求,以便读取所述存储器区域。
18.如权利要求15所述的计算机系统,其特征在于,所述存储器加密引擎进一步包括请求跟踪器电路以跟踪通过对读取请求的并行处理产生的复制的请求,并防止复制的操作由所述存储器加密引擎执行。
19.如权利要求18所述的计算机系统,其特征在于,所述请求跟踪器电路将跟踪由所述存储器加密引擎的组件排队的未完成的请求。
20.如权利要求15所述的计算机系统,其特征在于,所述存储器加密引擎,当接收到对于所述存储器区域的读取请求时,将向所述计数器树状结构中的将被所述读取请求访问的树节点的第一子集发出共享的锁定请求,以由此在共享的模式下锁定树节点的所述第一子集,当接收到对于所述存储器区域的写入请求时,将向所述计数器树状结构中的将被所述写入请求访问的树节点的第二子集发出排它性写入锁定请求,以由此在排它性模式下锁定第二节点。
21.如权利要求20所述的计算机系统,其特征在于,如果所述传入的请求导致对树节点的所述第二子集的访问,或如果所述传入的请求是在所述共享的模式下或在所述排它性模式下导致对被锁定的节点的访问的另一个写入请求,则所述存储器加密引擎将挂起传入的请求。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/646,105 US8819455B2 (en) | 2012-10-05 | 2012-10-05 | Parallelized counter tree walk for low overhead memory replay protection |
US13/646,105 | 2012-10-05 | ||
PCT/US2013/045702 WO2014055136A1 (en) | 2012-10-05 | 2013-06-13 | Parallelized counter tree walk for low overhead memory replay protection |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104620254A CN104620254A (zh) | 2015-05-13 |
CN104620254B true CN104620254B (zh) | 2017-07-11 |
Family
ID=50433723
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380046288.XA Active CN104620254B (zh) | 2012-10-05 | 2013-06-13 | 用于低开销的存储器重播保护的并行化的计数器攀树 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8819455B2 (zh) |
CN (1) | CN104620254B (zh) |
GB (1) | GB2518796B (zh) |
WO (1) | WO2014055136A1 (zh) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9514305B2 (en) | 2014-10-17 | 2016-12-06 | Qualcomm Incorporated | Code pointer authentication for hardware flow control |
US10185842B2 (en) | 2015-03-18 | 2019-01-22 | Intel Corporation | Cache and data organization for memory protection |
US9798900B2 (en) | 2015-03-26 | 2017-10-24 | Intel Corporation | Flexible counter system for memory protection |
US9678894B2 (en) * | 2015-03-27 | 2017-06-13 | Intel Corporation | Cache-less split tracker architecture for replay protection trees |
US10230528B2 (en) | 2015-05-04 | 2019-03-12 | Intel Corporation | Tree-less integrity and replay memory protection for trusted execution environment |
US10649917B2 (en) * | 2015-09-17 | 2020-05-12 | Hewlett Packard Enterprise Development Lp | Efficiently storing intialization vectors |
US9904805B2 (en) | 2015-09-23 | 2018-02-27 | Intel Corporation | Cryptographic cache lines for a trusted execution environment |
US10025956B2 (en) | 2015-12-18 | 2018-07-17 | Intel Corporation | Techniques to compress cryptographic metadata for memory encryption |
US10594491B2 (en) | 2015-12-24 | 2020-03-17 | Intel Corporation | Cryptographic system memory management |
US10585809B2 (en) * | 2016-04-01 | 2020-03-10 | Intel Corporation | Convolutional memory integrity |
US10691627B2 (en) * | 2016-04-01 | 2020-06-23 | Intel Corporation | Avoiding redundant memory encryption in a cryptographic protection system |
US10691482B2 (en) | 2016-08-11 | 2020-06-23 | Intel Corporation | Systems, methods, and apparatus for securing virtual machine control structures |
US10810321B2 (en) | 2016-08-11 | 2020-10-20 | Intel Corporation | Secure public cloud |
US11989332B2 (en) | 2016-08-11 | 2024-05-21 | Intel Corporation | Secure public cloud with protected guest-verified host control |
US10303899B2 (en) | 2016-08-11 | 2019-05-28 | Intel Corporation | Secure public cloud with protected guest-verified host control |
US10243990B1 (en) * | 2016-09-23 | 2019-03-26 | Apple Inc. | Systems and methods for detecting replay attacks on security space |
US10528485B2 (en) | 2016-09-30 | 2020-01-07 | Intel Corporation | Method and apparatus for sharing security metadata memory space |
US10235304B2 (en) | 2016-10-01 | 2019-03-19 | Intel Corporation | Multi-crypto-color-group VM/enclave memory integrity method and apparatus |
US10733313B2 (en) * | 2018-02-09 | 2020-08-04 | Arm Limited | Counter integrity tree for memory security |
US10545883B2 (en) | 2017-09-29 | 2020-01-28 | Intel Corporation | Verification bit for one-way encrypted memory |
US10686605B2 (en) | 2017-09-29 | 2020-06-16 | Intel Corporation | Technologies for implementing mutually distrusting domains |
US10671737B2 (en) | 2017-11-10 | 2020-06-02 | Intel Corporation | Cryptographic memory ownership table for secure public cloud |
US11082231B2 (en) * | 2017-12-29 | 2021-08-03 | Intel Corporation | Indirection directories for cryptographic memory protection |
US11520611B2 (en) | 2018-08-20 | 2022-12-06 | Intel Corporation | Secure public cloud using extended paging and memory integrity |
GB2579849B (en) * | 2018-12-18 | 2021-08-25 | Advanced Risc Mach Ltd | Integrity tree for memory integrity checking |
US11088846B2 (en) * | 2019-03-28 | 2021-08-10 | Intel Corporation | Key rotating trees with split counters for efficient hardware replay protection |
US20210319143A1 (en) * | 2021-06-25 | 2021-10-14 | Intel Corporation | Memory bus link authentication and encryption mechanisms for hardware-based replay protection |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101055609A (zh) * | 2006-04-11 | 2007-10-17 | 大唐移动通信设备有限公司 | 可实现数据自保护的片上系统的ip核 |
CN101448255A (zh) * | 2007-11-27 | 2009-06-03 | 飞力凯网路股份有限公司 | 服务提供系统、服务提供服务器以及信息终端设备 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6721918B2 (en) * | 2000-12-29 | 2004-04-13 | Intel Corporation | Method and apparatus for encoding a bus to minimize simultaneous switching outputs effect |
JP2002333978A (ja) | 2001-05-08 | 2002-11-22 | Nec Corp | Vliw型プロセッサ |
US7403615B2 (en) | 2001-08-24 | 2008-07-22 | Broadcom Corporation | Methods and apparatus for accelerating ARC4 processing |
JP2005505069A (ja) * | 2001-10-03 | 2005-02-17 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | メモリ暗号化 |
US7242766B1 (en) * | 2001-11-21 | 2007-07-10 | Silicon Image, Inc. | Method and system for encrypting and decrypting data using an external agent |
US7681050B2 (en) * | 2005-12-01 | 2010-03-16 | Telefonaktiebolaget L M Ericsson (Publ) | Secure and replay protected memory storage |
CN100524333C (zh) * | 2006-06-13 | 2009-08-05 | 正璞科技有限公司 | 防止非法使用软件的方法 |
US7844608B2 (en) * | 2006-12-15 | 2010-11-30 | Yahoo! Inc. | Clustered query support for a database query engine |
JP4956292B2 (ja) * | 2007-06-25 | 2012-06-20 | パナソニック株式会社 | 情報セキュリティ装置およびカウンタ制御方法 |
US8259949B2 (en) * | 2008-05-27 | 2012-09-04 | Intel Corporation | Methods and apparatus for protecting digital content |
US20100057647A1 (en) * | 2008-09-04 | 2010-03-04 | Microsoft Corporation | Accommodating learned clauses in reconfigurable hardware accelerator for boolean satisfiability solver |
US20100250965A1 (en) | 2009-03-31 | 2010-09-30 | Olson Christopher H | Apparatus and method for implementing instruction support for the advanced encryption standard (aes) algorithm |
-
2012
- 2012-10-05 US US13/646,105 patent/US8819455B2/en active Active
-
2013
- 2013-06-13 GB GB1501444.2A patent/GB2518796B/en active Active
- 2013-06-13 CN CN201380046288.XA patent/CN104620254B/zh active Active
- 2013-06-13 WO PCT/US2013/045702 patent/WO2014055136A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101055609A (zh) * | 2006-04-11 | 2007-10-17 | 大唐移动通信设备有限公司 | 可实现数据自保护的片上系统的ip核 |
CN101448255A (zh) * | 2007-11-27 | 2009-06-03 | 飞力凯网路股份有限公司 | 服务提供系统、服务提供服务器以及信息终端设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104620254A (zh) | 2015-05-13 |
WO2014055136A1 (en) | 2014-04-10 |
US20140101461A1 (en) | 2014-04-10 |
GB2518796B (en) | 2020-05-20 |
GB2518796A (en) | 2015-04-01 |
US8819455B2 (en) | 2014-08-26 |
GB201501444D0 (en) | 2015-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104620254B (zh) | 用于低开销的存储器重播保护的并行化的计数器攀树 | |
CN107851170B (zh) | 支持用于存储器地址范围的可配置安全级别 | |
CN104954356B (zh) | 保护共享的互连以用于虚拟机 | |
US9893881B2 (en) | Efficient sharing of hardware encryption pipeline for multiple security solutions | |
US9910793B2 (en) | Memory encryption engine integration | |
CN107667499A (zh) | 带密钥散列消息认证码处理器、方法、系统和指令 | |
CN105027136B (zh) | 用于集成电路的安全密钥推导和密码逻辑 | |
CN108351830A (zh) | 用于存储器损坏检测的硬件装置和方法 | |
KR20170033891A (ko) | 보호 영역에서의 메모리 초기화 | |
CN109478139A (zh) | 用于共享存储器中的访问同步的装置、方法和系统 | |
CN104982051B (zh) | 用于加速无线安全算法的装置、方法和系统 | |
CN104011663B (zh) | 掩码寄存器上的广播操作 | |
CN108369516A (zh) | 用于加载-索引和预取-分散操作的指令和逻辑 | |
CN106716434A (zh) | 具有独立的用户域与管理程序域的存储器保护密钥架构 | |
CN106708753A (zh) | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 | |
CN108292215A (zh) | 用于加载-索引和预取-聚集操作的指令和逻辑 | |
CN110233720A (zh) | Sm4加速处理器、方法和系统 | |
US9898300B2 (en) | Instruction for fast ZUC algorithm processing | |
CN108369553A (zh) | 用于范围保护的系统、方法和装置 | |
CN108228960A (zh) | 用于熔丝验证的基于Simon的散列 | |
CN108292232A (zh) | 用于加载索引和分散操作的指令和逻辑 | |
US10140458B2 (en) | Parallelized authentication encoding | |
CN109643283A (zh) | 管理飞地存储器页 | |
CN106575284A (zh) | 用于内核模块的多核存储器数据记录器 | |
US20160379014A1 (en) | Sms4 acceleration processors having encryption and decryption mapped on a same hardware |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |