首页> 中国专利> 安全地保存和还原安全程序加载程序上下文的系统及方法

安全地保存和还原安全程序加载程序上下文的系统及方法

摘要

提出一种安全地保存和还原安全程序加载程序的上下文的系统、方法、以及程序产品。向在运行于隔离模式中的专用处理器核心上运行的安全程序发送中断。所述专用处理器核心被包括在包含专用处理器核心(包括该被隔离的专用处理器核心)、以及一个或多个通用处理器的异构处理环境中。每个所述处理器可以存取共享存储器。所述被隔离的专用处理器核心可以包括从其它处理器不可存取的本地存储器。所述系统使用随机生成的加密密钥来加密所述安全程序的上下文,并将所述上下文存储在所述共享存储器中。用所生成的加密密钥来更新安全加载程序的上下文,并然后将所述安全加载程序的上下文保存到所述共享存储器。

著录项

  • 公开/公告号CN101145173A

    专利类型发明专利

  • 公开/公告日2008-03-19

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN200710148989.0

  • 发明设计人 马克·R·纳特;清水加纳;

    申请日2007-09-12

  • 分类号G06F21/00(20060101);G06F9/445(20060101);

  • 代理机构11105 北京市柳沈律师事务所;

  • 代理人黄小临;周少杰

  • 地址 美国纽约阿芒克

  • 入库时间 2023-12-17 19:54:11

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-09-22

    未缴年费专利权终止 IPC(主分类):G06F21/00 专利号:ZL2007101489890 申请日:20070912 授权公告日:20100113

    专利权的终止

  • 2010-01-13

    授权

    授权

  • 2008-05-14

    实质审查的生效

    实质审查的生效

  • 2008-03-19

    公开

    公开

说明书

技术领域

本发明一般涉及用于动态地区分在异构处理环境中的跨处理元件的应用的系统和方法。更具体地,本发明涉及确定处理何时应当在具体处理环境上运行以及将处理从一个处理环境转移到另一个的系统和方法。

背景技术

包括多种异构处理器的计算系统正变得日益普及。在这些环境中,一个或多个通用处理器与一个或多个专用处理器协同工作。典型地,由于它们具有不同的特性,通用处理器使用与专用或应用特定处理器所使用的不同的指令集架构(ISA)。具有不同的处理特性和ISA有助于每种处理器类型有效地进行不同类型的任务。

由于处理器的不同特性,异构处理器对诸如多媒体、游戏、以及数值密集型应用环境的多种环境来说有吸引力。在该环境中,程序可以具有多个线程。这些线程当中某一些可以在通用处理器上执行,而其它线程可以在专用处理器上执行。虽然单个系统中可以包括多个专用处理器,但是这些专用处理器仍然可能被迫促使系统任务切换(task switch)当前正运行在其中一个专用处理器上的线程,以在该专用处理器上加载和执行不同的线程。

现有计算机系统面临的一类威胁是诸如黑客的恶意用户,其力争绕开应用所使用的安全措施以制作该软件的非法副本(常常是为了获利),或者窜改所述软件以使得该系统加载和执行该软件的不同的映像(image)。将软件的一个版本交换为另一个通常被称为“重放攻击(replay attack)”。恶意用户使用的一种技术是捕获已经被操作系统换出(task out)的软件程序的映像并重用该映像。

因而,需要一种使用安全加载程序(secure loader)来安全地保存和还原软件程序的系统和方法。进一步地,需要一种安全地保存和还原由该安全加载程序管理的程序以及该安全加载程序的上下文的系统和方法。

发明内容

已经发现,使用安全地保存和还原负责安全地保存和还原一个或多个安全程序(secured program)的安全程序加载程序的上下文的系统和方法可以解决上述挑战。向在运行于隔离模式中的专用处理器上运行的安全程序发送中断。所述专用处理器被包括在包含专用处理器(包括该被隔离的专用处理器)、以及一个或多个通用处理器的异构处理环境中。每个所述异构处理器存取共享存储器(memory)。所述被隔离的专用处理器包括从所述通用处理器不可存取的本地存储器。所述系统使用随机生成的加密密钥来加密所述安全程序的上下文。使用安全加载程序将所述安全程序的被加密的上下文存储在所述共享存储器中。用所生成的加密密钥来更新所述安全加载程序的上下文,并然后将所述安全加载程序的上下文保存到所述共享存储器。保存所述安全加载程序的上下文包括生成随机的持久(persistent)安全数据。使用所生成的持久安全数据来加密所述安全加载程序的上下文,并然后将所述安全加载程序的被加密的上下文存储在所述共享存储器中。此外,当所述专用处理器的本地存储器被擦除时持久存储寄存器中的所述持久安全数据保持原样。

在一个实施例中,所述持久安全数据是现时(nonce)。使用也加密所述现时的静态加密密钥来进行所述加密。所述现时是被存储在所述持久存储寄存器中的数据。

在另一个实施例中,所述持久安全数据是在进行所述加密中所使用的随机生成的加密密钥。在该实施例中,将该随机生成的加密密钥被存储在所述持久存储寄存器中。

在一个实施例中,所述安全加载程序的上下文包括所述加密密钥、标识所述安全程序的程序标识符、以及与所述安全程序中所述安全程序被中断的位置对应的程序计数器。在该实施例的备选形式中,所述安全加载程序的上下文包括其中每一个与正由所述安全加载程序管理的不同的安全程序对应的多个加密密钥、程序标识符、以及程序计数器。

在另一个实施例中,在保存所述安全加载程序的上下文之后,清除所述被隔离的专用处理器的本地存储器,而所述持久存储寄存器保持原样。将所述专用处理器设置在隔离模式中。当所述专用处理器被设置在隔离模式中时,将所述安全加载程序从只读存储器自动地加载到所述被隔离的专用处理器的本地存储器中。在已经加载了所述安全加载程序之后,从所述持久存储寄存器取回(retrieve)所述持久安全数据,并使用所述持久安全数据来还原所述安全加载程序的上下文。然后所述安全加载程序接收与将要被加载到所述被隔离的专用处理器的本地存储器中的第二安全程序对应的第二安全程序标识符。所述安全加载程序从与所接收的第二安全程序标识符匹配的所述安全加载程序的上下文中的记录中取回第二加密密钥和第二程序计数器。然后所述安全加载程序通过下述步骤来还原所述第二安全程序的操作:从所述共享存储器读取与所述第二安全程序对应的被加密的上下文;使用所述第二加密密钥来解密所述第二安全程序的被加密的上下文;将所述第二安全程序的被解密的上下文存储在所述被隔离的专用处理器的本地存储器中;以及分支到所述第二程序计数器以在所述第二安全程序先前被中断的位置执行所述第二安全程序。

在另一个实施例中,在保存所述安全加载程序的上下文之后,清除所述被隔离的专用处理器的本地存储器,而不涉及所述持久存储寄存器。所述专用处理器返回到非隔离模式,并在运行于非隔离模式中的所述专用处理器中加载第二程序。当在非隔离模式中运行时,被存储在所述持久存储寄存器中的数据是不可存取的。

前述乃是概要,因而包含了必要的简化、归纳、以及细节的省略;因此,本领域技术人员将理解,该概要仅仅是说明性的,而并不意指任何形式的限制。通过下面阐述的非限制性的详细描述,如仅由权利要求书限定的本发明的其它方面、创造性特征、以及优点将变得显而易见。

附图说明

通过参照附图,将更好地理解本发明,而且其诸多目的、特征、以及优点对本领域技术人员来说将是显而易见的。

图1是示出用于安全地保存和还原程序上下文的各种组件之间的交互的框图;

图2是示出所述操作系统请求专用处理器核心加载和执行程序的流程图;

图3是示出所述操作系统中断在专用处理器核心上运行的安全程序的流程图;

图4是示出用于安全地保存程序的上下文所采取的步骤的流程图;

图5是示出用于安全地保存所述安全加载程序的上下文所采取的步骤的流程图;

图6是示出当所述安全加载程序管理多个安全程序时用于安全地保存程序的上下文所采取的步骤的流程图;

图7是示出用于安全地将上下文从被隔离的专用处理器写到共享存储器所采取的步骤的流程图;

图8是示出所述操作系统请求在专用处理器核心上还原程序的流程图;

图9是示出用于安全地从共享存储器还原所述安全加载程序的上下文所采取的步骤的流程图;

图10是示出用于使用管理多个安全程序的安全加载程序安全地还原程序的上下文所采取的步骤的流程图;

图11是示出所述安全加载程序从共享存储器读取被加密的上下文数据并将所述数据还原到运行于隔离模式中的所述专用处理器核心的细节的流程图;

图12是示出用于还原与正在被还原的程序上下文对应的寄存器值所采取的步骤的流程图;

图13是示出用于当保存安全程序或者所述安全加载程序的上下文时生成签名所采取的步骤的流程图;

图14是示出用于当还原安全程序或者所述安全加载程序的上下文并将所生成的签名与当保存所述上下文时所存储的签名进行比较时生成签名所采取的步骤的流程图;

图15是包括其中可以实现本发明的多个异构处理器的宽带引擎的框图。

具体实施方式

下面内容意在提供本发明的示例的详细描述,而不应被当作限制本发明本身。相反地,许多变体可以落入本说明书后所附权利要求书中所定义的本发明的范围之内。

图1是示出用于安全地保存和还原程序上下文的各种组件之间的交互的框图。(多个)通用主处理器核心100执行操作系统105并且互连到被称为共享存储器130的系统存储器。通用处理器核心的一个示例是主处理元件(PPE),其在图15中被更全面地描述。专用处理器核心的一个示例是协(synergistic)处理元件(SPE),其同样在图15中被更全面地描述。如图15中所示,所述系统的一个特征是所述通用处理器核心以及所述专用处理器核心均可以存取的共享存储器130。在一个实施例中,所述通用处理器核心使用传统的读取和存储命令来读取和存储被存储在共享存储器130中的数据,而所述SPE使用直接存储器存取(DMA)命令通过DMA控制器来存取所述共享存储器。

返回到图1,操作系统105执行传统、标准操作系统功能110以及通常不由传统操作系统进行的额外功能。这些非标准功能包括:安全地加载和还原在其中一个所述专用处理器核心上运行的安全程序115;中断当前在运行于隔离模式中的SPE上运行的安全程序120;以及在所述SPE上加载不使用所述安全加载程序而且当所述SPE处于非隔离模式时执行的非安全程序125。

共享存储器130被用于存储各种类型的数据。被存储在共享存储器130中的一种类型的数据是与曾在被隔离的SPE150上运行但过去被中断的安全程序对应的上下文数据。上下文数据包括在被中断和换出之前曾由其中一个SPE执行的已保存的安全程序的被加密的上下文135。上下文数据还包括如当正执行所述安全程序时存在的所述开放区域165的未加密的上下文138。开放区域165是用于所述SPE与所述共享存储器之间的DMA操作的未保护的存储器区域。在一个实施例中,开放区域165的上下文是不被加密的,因为所述开放区域是未保护的存储器区域。在一个实施例中,安全加载程序170是保存和还原来自被隔离的SPE的单个程序的静态加载程序。在备选的实施例中,所述安全加载程序是管理对于在被隔离的SPE上运行的多个程序的上下文(代码和数据)的静态加载程序。在该备选实施例中,对于所述加载程序的上下文也被加密并存储在共享存储器130中。在所述备选实施例中,所述安全加载程序的上下文被加密而且包括与其正管理的所述安全程序有关的数据140。该数据包括与正被管理的所述程序对应的标识符信息(在共享存储器中存储所述安全程序的上下文处的地址)、加密密钥、以及与过去被所述操作系统中断执行的所述安全程序中的位置有关的程序计数器信息。

当SPE 150正在隔离模式中操作时,其本地存储器160对诸如正在所述PPE上运行的其它处理来说是不可存取的。所述SPE的安全本地存储器160被用于存储和执行安全加载程序170以及所述安全程序的代码和数据175。在一个实施例中,所述安全加载程序是被存储在只读存储器中的静态程序。当SPE进入隔离模式时,所述静态安全加载程序是被加载的第一个程序。所述安全加载程序然后负责将安全程序170加载到在其中由所述SPE执行它的所述SPE的本地存储器160中。在一个实施例中,所述操作系统将诸如指针的与应当被加载的所述程序对应的标识符数据写到SPE邮箱155,而且一旦所述安全加载程序被加载,其从所述SPE邮箱读取所述标识符数据。

当所述安全程序从所述操作系统接收中断时,其分支到安全加载程序170,且所述安全加载程序负责安全地保存所述安全程序的上下文(代码和数据)。所述安全加载程序通过下述步骤来安全地保存所述安全程序的代码和数据:加密所述代码/数据;将被加密的数据写到开放区域165;以及使用DMA命令将被加密的数据写到共享存储器130(具体地,通过将所述数据写到共享存储器130中的数据区域135)。所述安全加载程序还保存所述安全程序用于DMA操作的开放区域165的状态。因为开放区域165不是存储器的被保护区域,所以所述安全加载程序保存所述开放区域的状态而不加密所述数据。所述安全加载程序还保存在各种SPE寄存器180中的值。SPE寄存器包括非持久寄存器185以及持久存储寄存器190。所述安全加载程序使用所述持久存储寄存器来存储诸如现时或加密密钥的安全数据。只有在隔离模式中的所述SPE上运行的程序可以存取所述持久存储寄存器。由于当所述SPE进入隔离模式时所述系统首先加载所述安全加载程序,因此所述安全加载程序是取回所述安全数据的第一处理。

如果所述安全加载程序正在管理多个安全程序,则所述安全加载程序更新其自身的上下文,诸如用于加密所述安全程序的上下文的加密密钥、所述安全程序过去被中断处的程序计数器、以及与所述安全程序有关的标识符数据。所述标识符数据包括所述安全程序的标识符以及在共享存储器130中存储所述安全程序的上下文数据的(多个)地址。

图2是示出所述操作系统请求专用处理器核心加载和执行程序的流程图。操作系统200在其中一个所述通用处理器核心(例如,PPE)上执行,在步骤205时,其接收在专用处理器核心(例如,其中一个SPE)上加载安全程序的请求。所述操作系统确定所请求的安全程序是否先前曾在其中一个所述SPE上被中断(判定210)而且已经被换出。如果所请求的安全程序先前曾被中断,则判定210分支到“是”分支212,然后在步骤215,所述操作系统取回曾经在其中运行所述安全程序的专用处理器核心(SPE)的标识符。在一个实施例中,将安全程序还原到当由于运行在该SPE上的加载程序已经存取了用于还原所述安全程序所需的安全数据而换出它时、它正运行所在的同一SPE上。另一方面,如果所述安全程序先前未被中断,则判定210分支到“否”分支218,然后,在步骤220,所述操作系统标识用于运行所述安全程序的专用处理器核心(SPE),诸如当前可用的SPE。

在标识将被用于运行所述安全程序的SPE之后,所述操作系统在所标识的SPE上加载所述安全加载程序(步骤225)。在一个实施例中,所述操作系统设置将所标识的SPE设为隔离模式的寄存器数据。在该实施例中,当将SPE被设为隔离模式时,从只读存储器自动加载并在所标识的SPE上执行所述安全加载程序。在步骤230,所述操作系统提供所述安全程序加载程序将在被隔离的SPE上加载的所述安全程序的标识符235。在一个实施例中,将所述标识符写到与所标识的SPE对应的邮箱。在该实施例中,当所述安全加载程序开始时,其将轮询(poll)所述邮箱以寻找所述标识符。在240,用于处理加载所述安全程序的请求的所述操作系统功能结束。

转到在所标识的SPE上发生的处理,处理在250开始,然后在步骤255,将所述安全加载程序从只读存储器加载并开始。在步骤260,所述安全加载程序取回要加载的程序的标识符。如前所述,在一个实施例中通过所述安全加载程序轮询邮箱直到接收到所述安全程序标识符为止来从邮箱取回所述标识符。确定这是否是所述安全程序的首次调用(判定265)。如果所述安全程序不是被还原的,而是首次被加载到所述SPE上的,则判定265分支到“是”分支268,然后在步骤270,所述加载程序执行所述安全程序的初次加载,而且在步骤275,所述加载程序将所述程序计数器设置到所述安全程序的入口点。另一方面,如果所述安全程序先前曾在所述SPE上运行,被中断,而且现在正被还原,则判定265分支到“否”分支278,然后还原所述安全程序(预定义处理280,还原处理细节见图8至12以及相应的文本),而且在步骤285,所述加载程序将所述程序计数器设置到由所述操作系统中断所述安全程序处的指令。

在步骤290,所述安全程序(被初次加载的或被还原的)从由所述加载程序设置的程序计数器开始执行,直到其被中断或完成为止。如果所述安全程序被中断,则所述加载程序在于295退出之前安全地保存所述安全程序的上下文。

图3是示出所述操作系统中断在专用处理器核心上运行的安全程序的流程图。协处理元件(SPE)150是专用处理器核心,且曾在图1中被介绍。图3中,SPE 150正在被保护的存储区(storage)中运行安全程序代码330。由同样在所述SPE的被保护的存储区中运行的安全程序加载程序170来加载、保存、和还原所述安全程序。所述安全加载程序包括数据区域(DA)310,其同样在被保护的存储区内且用于保存和还原操作,这里将对其作更全面的描述。

从340开始示出所述SPE的处理步骤。同样地,从350开始示出由正在所述通用处理器核心(例如,所述主处理元件或“PPE”)上运行的所述操作系统所采取的步骤。在所述SPE处理的步骤345,所述安全程序330已经在所述SPE上运行。同时,在所述操作系统处理的步骤352,所述操作系统接收使用当前正被用于运行安全程序代码330的SPE的请求。在步骤354,所述操作系统标识所请求的SPE当前正在运行所述安全程序。在步骤356,所述操作系统向所标识的SPE发送中断,请求所述SPE保存所述安全程序的上下文并解除所述SPE的控制,以使得可以由所述SPE执行另外的处理。

返回到SPE处理,在步骤358,所述SPE接收所述安全程序在位置(存储器地址)331被中断。所述中断导致所述安全程序分支到所述安全加载程序。所述安全加载程序然后保存所述安全程序的上下文(预定义处理360,处理细节见图4至7以及相应的文本)。所述安全加载程序将安全数据存储在所述持久存储寄存器中。如前所述,所述持久存储寄存器可用于运行于隔离模式中的程序。因为当所述SPE进入隔离模式时自动加载所述安全加载程序,所以所述安全加载程序能够有效地控制对所述寄存器以及其中所存储的数据的存取。在步骤364,在所述安全加载程序已经保存了所述安全程序的上下文之后,所述安全加载程序发出特殊的SPE EXIT命令,其擦除全部所述SPE的本地数据(存储器和寄存器),除了所述持久存储寄存器以外。在步骤366,使所述SPE跳出隔离模式。

在一个实施例中,运行在SPE上的所述安全加载程序管理一个安全程序的保存和还原。在该实施例中,返回到所述操作系统处理,在步骤362,当所述安全加载程序已经保存了所述安全程序的上下文而且所述SPE可用时,所述操作系统从所述SPE接收信号。在该实施例中,在步骤368,操作系统加载不在隔离模式中操作的第二程序。返回到SPE处理,在步骤370,将所述非隔离模式程序(非安全程序375)加载到SPE中并运行到完成(即,不被换出)。返回到操作系统处理,在步骤378,所述操作系统接收所述非隔离模式程序已经完成了的信号,这时所述操作系统使所述安全程序的上下文还原以使得所述安全程序可以继续执行(预定义处理382,处理细节见图8至12以及相应的文本)。然后所述安全程序可以运行直到所述操作系统需要中断所述安全程序或者所述安全程序完成。返回到SPE处理,在预定义处理380,所述安全加载程序还原所述安全程序的上下文(处理细节见图8至12以及相应的文本)。在另一实施例中,如图5中所描述,所述安全加载程序可以通过将所述安全加载程序的上下文与所述安全程序的上下文一起保存来管理在所述SPE上运行的多于一个安全程序的上下文。

图4是示出用于安全地保存安全程序的上下文所采取的步骤的流程图。除了图4中所示的用于保存所述安全程序的上下文的步骤以外,签名被生成并与所述程序的上下文一起被保存(处理细节见图13以及相应的文本)。处理开始于400,然后在步骤410,所述安全加载程序取回所述安全程序被中断处的存储器地址。在一个实施例中,所述系统将由所述安全加载程序取回的最后程序计数器存储在寄存器中。在一个实施例中,所述持久存储寄存器小于128位,因而无法存储128位的加密密钥。在该实施例中,使用静态密钥来加密所述安全程序的上下文,而且在所述安全程序的上下文中包括唯一的现时。在该实施例中,在步骤415生成所述现时。在备选实施例中,所述持久存储寄存器是至少128位宽的,且可以容纳128位的加密密钥。在所述备选实施例中,在步骤415生成至少128位的加密密钥。“持久安全数据”是指被存储在所述持久存储寄存器中的所生成的现时或者所述所生成的加密密钥。在步骤420,在将在其中存储所述(被加密的)安全程序的上下文的所述共享存储器中分配存储器。

在425开始循环以循环遍及各种SPE寄存器180。确定每个寄存器是否是所述安全加载程序所需要的(判定440)。如果寄存器是所述安全加载程序所需要的,则判定440分支到“是”分支445,然后在步骤450,将所述寄存器内容存储在所述安全加载程序的数据区域310中。如果所述寄存器不是所述安全加载程序所需要的,则判定440跳过步骤450分支到“否”分支455。所述循环在460结束。

在已经释放了所述安全加载程序所需的寄存器之后,所述安全加载程序将所述安全程序的上下文加密并写到所述共享存储器区域(预定义处理470,处理细节见图7以及相应的文本)。在步骤475,将所述持久安全数据(所述现时或者所生成的加密密钥)写到所述持久存储寄存器(被存储在持久存储寄存器190中的安全数据480)。在步骤490,所述安全加载程序发出特殊的硬件EXIT指令,其擦除全部SPE本地存储器,除了被存储在所述持久存储寄存器中的数据以外。处理随后在495结束。

图5是示出用于安全地保存所述安全加载程序的上下文所采取的步骤的流程图。如前所提到的,在一个实施例中所述安全加载程序管理多个安全程序的上下文。在该实施例中,在已经保存了所述安全程序的上下文之后,保存所述安全加载程序的上下文。除了图5中所示的用于保存所述安全加载程序的上下文的步骤以外,签名被生成并与所述加载程序的上下文一起被保存(处理细节见图13以及相应的文本)。处理在500开始,然后在步骤510,所述安全加载程序分配在其中将保存所述(被加密的)安全加载程序的上下文的共享存储器区域。而且如前所提到的,在一个实施例中,所述持久存储寄存器小于128位宽,因而无法存储128位的加密密钥。在该实施例中,在步骤525生成现时,其将与被加密的安全加载程序的上下文一起被存储而且同样被存储在所述持久存储寄存器中。在其中所述持久存储寄存器是至少128位宽的备选实施例中,在步骤525生成加密密钥。如前所提到的,术语“持久安全数据”是指被生成并被存储在所述持久存储寄存器中的所述现时或者加密密钥。在步骤530,将所述持久安全数据(所述现时或所述加密密钥)存储在所述持久存储寄存器中。如果正使用现时,则在步骤535使用(在所述安全加载程序中被编码的)静态加密密钥来加密所述现时并将其写到开放空间165的预设位置,而且在步骤540,使用直接存储器存取(DMA)命令将被加密的现时写到所分配的存储器区域。

在560开始循环以循环遍及所述安全加载程序的数据区域。所述安全加载程序的数据区域310包括加载程序的上下文550。所述安全加载程序的上下文包括与正由所述安全加载程序管理的每个安全程序对应的程序标识符、程序计数器、以及加密密钥。所述程序标识符包括诸如句柄或程序名称的所述安全程序的唯一标识符,以及在共享存储器中存储所述安全程序的被加密的上下文处的地址。所述程序计数器(PC)是所述安全程序中所述安全程序被中断处的存储器地址位置。所述加密密钥(密钥)是被用于加密所述安全程序的上下文的唯一加密密钥。在所述循环中,对正由所述安全加载程序管理的每个安全程序(例如,加载程序上下文550的每一行)来说,在步骤570加密所述行,并将其写到开放空间165中的所述预设位置。在步骤575,使用DMA命令将被加密的行写到被存储在共享存储器130中的被加密的加载程序上下文520。被加密的加载程序上下文包括被加密的现时(如果正在使用一个)、以及与正由所述安全加载程序管理的每个程序对应的程序标识符(句柄和地址)、程序计数器、和加密密钥。在580,所述循环结束。当已经将所述安全加载程序的上下文加密并写到共享存储器时,处理在595结束。

图6是示出当所述安全加载程序管理多个安全程序时用于安全地保存程序的上下文所采取的步骤的流程图。除了图6中所示的用于保存所述安全程序的上下文的步骤以外,签名被生成并与所述程序的上下文一起被保存(处理细节见图13以及相应的文本)。在所述安全程序已经被中断而且已经被分支到所述安全加载程序之后,处理在600开始。在步骤610,所述安全加载程序取回所述安全程序被中断处的存储器地址,并用所述地址(PC)更新所述安全加载程序的上下文550。在步骤620,所述安全加载程序生成新的加密密钥。该加密密钥不被存储在所述持久存储寄存器中,所以不管所述持久存储寄存器的尺寸怎样都不使用现时。在步骤630,更新所述安全加载程序的上下文550以包括所生成的加密密钥。在步骤640,所述安全加载程序在所述共享存储器区域中分配用于存储所述安全程序的被加密的上下文的存储器。在步骤645,更新所述安全加载程序的上下文550以包括所述安全程序的标识符(所述安全程序的唯一标识符以及在共享存储器中被分配用于存储被加密的上下文的存储器的起始地址)。

在650开始循环以循环遍及各种SPE寄存器180。确定每个寄存器是否是所述安全加载程序所需要的(判定660)。如果寄存器是所述安全加载程序所需要的,则判定660分支到“是”分支665,然后在步骤670,将所述寄存器内容存储在所述安全加载程序的数据区域310中。如果所述寄存器不是所述安全加载程序所需要的,则判定660跳过步骤670分支到“否”分支675。所述循环在680结束。

在已经释放了所述安全加载程序所需的寄存器之后,所述安全加载程序将所述安全程序的上下文加密并写到所述共享存储器区域(预定义处理685,处理细节见图7以及相应的文本)。在已经保存了所述安全程序的上下文之后,保存所述安全加载程序的上下文550(预定义处理690,处理细节见图5以及相应的文本)。然后处理在695结束。

图7是示出用于安全地将上下文从被隔离的专用处理器(SPE)写到共享存储器所采取的步骤的流程图。除了图7中所示的用于安全地写入上下文数据的步骤以外,签名被生成并与所述数据一起被写到所述共享存储器(处理细节见图13以及相应的文本)。处理在700开始,然后在710开始循环以循环遍及所述开放空间。由于所述开放空间是在未保护的存储区中的,所以在写入共享存储器130(未加密数据区域138)之前不加密开放空间165中的数据。在所述循环中,在步骤720,使用DMA命令将开放空间中的每一行写到共享存储器130中的未加密数据区域138。所述循环在725结束。

在730开始另一个循环以循环遍及当前存储所述安全程序及其数据175处的被保护的存储区行。该数据是在被保护的存储区中的,所以在写到共享存储器之前将其加密。在一个实施例中被用于加密被写到共享存储器的数据的加密密钥是在所述安全加载程序中被编码的静态密钥,而在另一个实施例中,加密密钥是在每次将安全程序的上下文写到共享存储器130时动态地生成的。在所述循环中,在步骤740,将每一行加密并写到开放空间165中的预设位置。在步骤750,使用DMA命令将被加密的行从所述预设位置写到共享存储器130中的加密数据区域135。然后所述第二循环在760结束。

在770开始第三循环以循环遍及所述SPE寄存器。在该循环中,在步骤775,取回由所述安全程序所设的值。如果所述寄存器正由所述安全加载程序使用,则先前所述安全加载程序将所述寄存器值存储在所述安全加载程序的数据区域中,而现在从所述安全加载程序数据区域310中取回所述寄存器值。否则,从所述SPE寄存器180取回所述寄存器值。在步骤780,将每个寄存器值加密并写到开放空间165中的所述预设位置。可以使用与在所述第二循环中被用于加密所述安全程序代码和数据的相同的加密密钥来加密所述寄存器值。在步骤785,使用DMA命令将被加密的行从所述预设位置写到共享存储器130中的被加密的上下文存储器区域135。然后所述第三循环在790结束,而处理在795返回到调用(calling)例程。

图8是示出所述操作系统请求在专用处理器核心上还原程序的流程图。除了图8中所示的还原步骤以外,基于正被还原的数据生成签名结果并将该结果与先前被存储的签名结果进行比较(处理细节见图14以及相应的文本)。如果所述签名匹配,则执行被还原的上下文,否则所述SPE出错退出而不执行被还原的上下文。所示的操作系统处理在800开始,然后在步骤805,所述操作系统取回应当在所述SPE上被还原的所述安全程序的标识符。在步骤810,在隔离模式中启动所述SPE。在步骤815,由所述操作系统将所述安全程序标识符和地址写到共享存储器中的区域,而且在步骤825,将存储了所述安全程序标识符和地址处的共享存储器820中的所述地址(指针830)写到所述SPE的邮箱155。

SPE处理在850开始,然后在步骤855,在隔离模式中启动所述SPE。在步骤870,使用静态安全加载程序代码865来将所述安全加载程序从存储器区域860自动加载到所述SPE中,并从持久存储寄存器190取回持久安全数据480。在一个实施例中,其中所述安全加载程序可以管理多个安全程序的上下文,从被加密的安全加载程序上下文520还原所述安全加载程序的上下文(关于还原所述安全加载程序的上下文的处理细节见图9以及相应的文本)。在该实施例中,所述持久安全数据被用于解密所述安全加载程序的上下文。在另一个实施例中,所述持久安全数据被用于解密所述安全程序。在步骤875,所述安全加载程序轮询所述SPE邮箱并接收还原安全程序的请求。在步骤880,所述安全加载程序使用被存储在SPE邮箱155中的指针830来在其中寻址所述操作系统曾存储所述安全程序的标识符的共享存储器820以及在共享存储器中存储所述安全程序的被加密的上下文处的地址。然后从所述共享存储器还原所述安全程序(预定义处理890,处理细节见图10-12以及相应的文本)。

图9是示出用于安全地从共享存储器还原所述安全加载程序的上下文所采取的步骤的流程图。除了图9中所示的还原步骤以外,基于正被还原的数据生成签名结果,并将该结果与先前被存储的签名结果进行比较(处理细节见图14以及相应的文本)。如果所述签名匹配,则执行被还原的上下文,否则所述SPE出错退出而不执行被还原的上下文。处理在900开始,然后在步骤910,在所述SPE中加载所述安全加载程序并发起处理。在一个实施例中,从被存储在只读存储器中的所述安全加载程序的静态副本来加载所述安全加载程序。在一个实施例中,利用在所述安全加载程序的代码中被编码的静态加密密钥来加密所述安全加载程序的上下文。在该实施例中,包括了当保存所述安全加载程序时被加密并写到所述安全加载程序的被加密的上下文的现时。所述安全加载程序使用DMA命令从所述共享存储器读取被加密的上下文的第一行(包含所述现时),并将被加密的行存储在开放空间165中的预设位置中920。在步骤925,使用在所述安全加载程序中被编码的所述静态加密密钥来解密被存储在所述预设位置中的行以显露所述现时。在步骤925,将被解密的现时与被存储在持久存储寄存器190中的现时(持久安全数据480)进行比较。确定所述现时是否相同(判定930)。如果所述现时不相同(表明有人试图更改所述安全加载程序的上下文),则判定930分支到“否”分支935,而处理在940出错结束。另一方面,如果所述现时相同,则判定930分支到“是”分支945而处理继续。

在另一个实施例中,所述持久存储寄存器足够大以存储至少128位。在该实施例中,使用随机生成的密钥(持久安全数据480)来加密所述安全加载程序的上下文。将该密钥被存储在所述持久存储寄存器中,且然后通过从所述持久存储寄存器取回所述持久安全数据(所述随机生成的加密密钥)来解密所述安全加载程序的上下文。在该实施例中,不使用现时,因而不进行步骤920至945。

返回到图9,在步骤950使用DMA命令将包含安全加载程序的上下文的第一行从被存储在共享存储器130中的被加密的加载程序上下文140读取到所述SPE中的开放空间165的预设位置。安全加载程序上下文的每一行包括关于正由所述安全加载程序管理的安全程序之一的数据。该数据包括被用于加密所述安全程序的上下文的加密密钥、与所述安全程序对应的程序标识符(名称、句柄等等以及地址)、以及具有所述安全程序被中断处的地址的程序计数器。在步骤960,使用所述加密密钥(静态密钥或者随机生成的密钥)来解密被写到开放空间165的所述预设位置的被加密的行。确定是否有更多的正由所述安全加载程序管理的安全程序上下文(判定970)。如果有更多的正被管理的安全程序上下文,则判定970分支到“是”分支975,其循环返回以从被加密的加载程序上下文140读取下一被加密的行并解密所述上下文。该循环继续直到没有更多要读取的安全程序上下文为止,这时判定970分支到“否”分支980,然后,在预定义处理990,所述安全程序之一(由所述操作系统请求的那一个)被还原(处理细节见图10以及相应的文本)。处理随后在995结束。

图10是示出用于使用正管理多个安全程序的安全加载程序来安全地还原程序的上下文所采取的步骤的流程图。除了图10中所示的还原步骤以外,基于正被还原的数据生成签名结果,并将该结果与先前被存储的签名结果进行比较(处理细节见图14以及相应的文本)。如果所述签名匹配,则被还原的上下文,否则所述SPE出错退出而不执行被还原的上下文。处理在1000开始,然后在步骤1010所述安全加载程序从SPE邮箱155取回操作系统105正请求还原的所述程序的标识符。在一个实施例中,已经由操作系统105将指针写到邮箱155,而所述安全加载程序从由所述指针引用的共享存储器位置取回所述安全程序的标识符。在步骤1020,所述安全加载程序在所述安全加载程序的上下文310中定位与所述安全程序对应的数据。所述加载程序的上下文包括所述安全程序的标识符(诸如名称或句柄的唯一标识符以及在共享存储器中存储所述安全程序的被加密的上下文处的地址)、曾被用于加密所述安全程序的被加密的上下文的加密密钥、以及所述安全程序被中断处的程序计数器。

在步骤1025,所述安全加载程序取回被用于当将其写到共享存储器时加密所请求的安全程序的上下文的加密密钥。所取回的加密密钥被用于从共享存储器取回所请求的安全程序的上下文并在所述SPE上还原所述安全程序(预定义处理1030,处理细节见图11以及相应的文本)。在所述安全程序已经被还原之后,其在所述SPE上执行直到其被所述操作系统中断或完成为止1040。确定所述安全程序是被中断或被完成(判定1050)。如果所述程序被中断,则判定1050分支到“是”分支1055,然后使用新生成的密钥来保存所述安全程序的上下文1060(处理细节见图4以及相应的文本),且在预定义处理1080(处理细节见图5以及相应的文本)保存(已用与所述安全程序对应的新数据更新了的)所述安全加载程序的上下文。如果所述安全程序运行直到完成,则判定1050分支到“否”分支1065,然后在步骤1070,从加载程序的上下文310删除与所述安全程序对应的数据。确定所述安全加载程序的上下文现在是否为空,即表明所述安全加载程序不再管理所述SPE上的任何安全程序(判定1075)。如果所述安全加载程序的上下文非空,则判定1075分支到“否”分支1076,然后在预定义处理1080(处理细节见图5以及相应的文本)保存所述安全加载程序的上下文。另一方面,如果所述安全加载程序的上下文现在为空,则判定1075跳过预定义处理1080分支到“是”分支1078。

在所述安全加载程序完成之前,在步骤1090,所述安全加载程序发出硬件EXIT指令。所述EXIT指令擦除被存储在所述SPE的本地存储器中的全部数据,除了被存储在持久存储寄存器中的数据以外。然后安全加载程序处理在1095结束。

图11是示出所述安全加载程序从共享存储器读取被加密的上下文数据并将所述数据还原到运行于隔离模式中的所述专用处理器核心的细节的流程图。除了图11中进行的读取以外,基于正从共享存储器读取的被加密数据来生成签名结果,且将该结果与先前被存储的签名结果进行比较(处理细节见图14以及相应的文本)。如果所述签名匹配,则执行被还原的上下文,否则所述SPE出错退出而不执行被还原的上下文。处理在1100开始,然后确定被加密的上下文135的映像签名(image signature)是否与在创建被加密的上下文时所采用的映像签名匹配(判定1101)。在一个实施例中,基于所述映像(即,将被存储的全部数据,若使用现时则包括该现时)来生成所述签名,将该签名附加到所述映像,并然后将所有东西(映像、签名等等)加密并存储。在另一个实施例中,首先加密所述映像,然后基于被加密的映像来生成所述签名,且然后将所述签名附加到所述映像。仅可以通过校正密钥(其可以与所述加密密钥或单独的验证密钥相同)来生成正确的签名。如果所述映像签名不匹配(表明所述映像已经被变更或篡改),则判定1101分支到“否”分支1102,然后安全加载程序处理在1103出错退出。另一方面,如果所述映像签名匹配,则判定1101分支到“是”分支1104,而安全加载程序处理继续。

确定是否正使用现时来保全所述安全程序的上下文(判定1105)。如果未使用现时,则判定1105跳过步骤1110至1125而分支到“否”分支1128。另一方面,如果使用现时,则判定1105分支到“是”分支1108,然后在步骤1110,使用DMA命令将来自包含所述现时的被加密的上下文135的行从被加密的上下文135写到开放空间165中的预设位置。在步骤1115,使用在所述安全加载程序中被编码的静态密钥来解密被写到所述预设位置的现时,并将被解密的现时与被存储在持久存储寄存器190中的现时进行比较。确定被解密的现时是否与被存储在所述持久存储寄存器中的现时相同(判定1120)。如果所述现时不相同(表明有人篡改了被加密的上下文或者正在尝试重放攻击),则判定1120分支到“否”分支1122,然后所述安全加载程序在1125出错退出。另一方面,如果所述现时相同,则判定1120分支到“是”分支1126,而安全加载程序处理继续。

在步骤1130,使用DMA命令从共享存储器130(被加密的上下文135)读取被加密的安全程序上下文的第一行并将其存储到开放空间165中的预设位置。在步骤1135解密被写到预设位置的被加密的行。在一个实施例(其中使用现时)中,使用在所述安全加载程序中被编码的静态密钥来解密所述行。在另一个实施例(其中不需要现时)中,使用被存储在持久存储寄存器190中或从所述安全加载程序的上下文被取回(当所述安全加载程序能够管理多个安全程序时)的随机生成的密钥来解密所述行。确定是否有更多的需要被读取和解密的被保护的存储区行(判定1140)。判定1140分支到“是”分支1145,其循环返回以处理来自被加密的上下文135的下一行,直到已经处理了被加密的上下文135的全部行为止,这时判定1140分支到“否”分支1150。

在预定义处理1160,将在被中断之前已经由所述安全程序设置的寄存器值还原到所述SPE寄存器(处理细节见图12以及相应的文本)。在步骤1170,从被存储在共享存储器130中的未加密数据138读取未加密的数据行并将其还原到开放空间165。被还原的开放空间现在看起来与所述安全程序被中断之前的开放空间一样。如前所提到的,所述开放空间被用于在隔离模式中运行的所述SPE与所述共享存储器之间的DMA通信。这些DMA通信包括被发送到/被接收自所述共享存储器的数据、以及指示在前的DMA操作的结果的返回代码值。在步骤1180,取回在所述安全程序被中断处的程序计数器(PC)的地址。如果所述安全加载程序正在管理多个安全程序的上下文,则从所述安全加载程序的上下文取回所述PC。如果所述安全加载程序未管理多个安全程序的上下文,且因而对于所述安全加载程序的上下文不可用,则从被恢复的寄存器之一、或从被写到所述安全程序的被加密的上下文135的一行被加密的上下文取回所述PC。在步骤1190,重设所述安全程序的程序计数器,而且所述安全程序恢复执行指令直到其完成或其被所述操作系统中断。

图12是示出用于还原与正在被还原的程序上下文对应的寄存器值所采取的步骤的流程图。除了图12中所示的寄存器还原步骤以外,基于正被还原的数据来生成签名结果并将该结果与先前被存储的签名结果进行比较(处理细节见图14以及相应的文本)。如果所述签名匹配,则执行被还原的上下文,否则所述SPE出错退出而不执行被还原的上下文。处理在1200开始,然后在步骤1210,使用DMA命令从共享存储器130(被加密的程序上下文135)读取被加密的寄存器上下文的第一行并将其写到所述SPE的开放空间165中的预设位置。在步骤1220,所述安全加载程序解密被存储在所述预设位置中的行并将所述结果存储在所述安全加载程序的数据区域310中。在一个实施例中,使用在所述安全加载程序中被编码的静态密钥来解密被写到所述预设位置的行。在另一个实施例中,从所述持久存储寄存器、或从所述安全加载程序的上下文取回随机生成的被用于加密所述数据的密钥,并使用该密钥来解密被写到所述预设位置的所述数据。确定所述寄存器是否被所述安全加载程序使用(判定1230)。如果所述寄存器被所述安全加载程序使用,则判定1230分支到“是”分支1235,然后在步骤1240,将所述值写到所述安全加载程序的数据区域310中的临时寄存器存储区位置。另一方面,如果所述寄存器未被所述安全加载程序使用,则判定1230分支到“否”分支1245,然后在步骤1250,将来自所述预设位置的被解密的结果加载到所述寄存器(SPE寄存器180)。

确定这是否是要处理的最后一个寄存器(判定1260)。如果其不是最后一个寄存器,则判定1260分支到“否”分支1265,其循环返回以DMA和处理寄存器上下文的下一被加密的行。该循环继续直到已经处理了最后一个寄存器为止,这时判定1260分支到“是”分支1270。

在步骤1280,清除曾由所述安全加载程序使用的寄存器。在一个实施例中,这包括清除所述持久存储寄存器,其然后可以由所述安全程序使用。在步骤1290,将被写到所述安全加载程序的数据区域中的临时寄存器存储区的任何寄存器值写到它们各自的寄存器(SPE寄存器180)。处理随后在1295结束。

图13是示出用于当保存安全程序或者所述安全加载程序的上下文时生成签名所采取的步骤的流程图。如前参照其它附图所提到的,与保存各种上下文数据(例如,安全程序上下文,安全加载程序上下文、寄存器上下文等等)的其它处理相结合地进行图13中所示的步骤。处理在1300开始,然后在步骤1310,初始化所述签名结果。在步骤1320,加密第一个正被保存的数据。依赖于保存什么样的上下文,该数据可以是来自所述SPE存储器、寄存器等等的数据行。在步骤1330,将被加密的数据输入到更新所述签名结果的签名生成累加功能。在步骤1340,将被加密的数据写到共享存储器130作为被加密的数据1350(例如,安全程序的被加密的上下文135、安全加载程序的被加密的上下文140等等)。确定是否有更多的要被加密和被写到共享存储器130的数据(判定1360)。如果有更多的数据要写,则判定1360分支到“是”分支1365,其循环返回以加密下一数据,使下一被加密的数据经过所述签名生成累加功能(更新所述签名结果),并将下一被加密的数据写到共享存储器。该循环继续直到没有更多的数据要写为止,这时判定1360分支到“否”分支1370。

在已经将全部数据加密并写到共享存储器130之后,在步骤1375,加密最终的签名结果。在步骤1380,将被加密的最终签名结果写到共享存储器作为被加密的最终签名结果1390。签名生成处理随后在1395结束。

图14是示出用于当还原安全程序或者所述安全加载程序的上下文并将所生成的签名与当保存所述上下文时被存储的签名进行比较时生成签名所采取的步骤的流程图。如前参照其它附图所提到的,与还原各种上下文数据(例如,安全程序上下文,安全加载程序上下文、寄存器上下文等等)的其它处理相结合地进行图14中所示的步骤。签名验证处理在1400开始,然后在步骤1410,初始化所述签名结果。在步骤1420,从被存储在共享存储器130中的被加密的数据1350读取第一个被加密的数据。依赖于正还原什么样的上下文,该数据可以是来自所述SPE存储器、寄存器等等的数据行。在步骤1430,将在步骤1420中被读取的被加密的数据输入到更新所述签名结果的所述签名生成累加功能。在步骤1430中使用的所述累加功能是与图13中所示的步骤1330中所使用的相同的累加功能。返回到图14,在步骤1440,将被解密的数据存储在所述SPE中(依赖于正被还原的数据的类型,例如,在所述SPE存储器、(多个)SPE寄存器位置等等中)。确定是否要从被加密的数据1350读取更多的数据(判定1450)。如果有更多的数据要处理,则判定1450分支到“是”分支1455,其循环返回以读取下一数据,使下一数据经过所述累加功能(进一步更新所述签名结果),并将所述数据存储在所述SPE中。该循环继续直到已经从被加密的数据1350读取并处理了全部被加密的数据为止,这时判定1450分支到“否”分支1460。

在已经读取和处理了全部被加密的数据之后,在步骤1470,从共享存储器130读取被存储的签名结果1390,并解密被存储的签名结果。在步骤1475,将在步骤1430中所生成的签名结果与步骤1470的被解密的被存储的签名结果进行比较。确定所述签名是否匹配(判定1485)。如果所述签名匹配,则判定1485分支到“是”分支1488,然后在所述SPE上执行被还原的上下文1490。另一方面,如果所述签名不匹配(表明可能篡改了被加密的上下文数据1350),则判定1485分支到“否”分支1492,然后还原处理出错退出而不执行被还原的上下文1495。在一个实施例中,当所述SPE出错退出时进行SPE EXIT功能(从而擦除本地数据,除了被存储在所述持久存储寄存器中的数据以外)。

图15是图示具有主处理器(通用处理器核心)和每个都共享系统存储器的多个副处理器(专用处理器核心)的处理元件(异构处理器)的框图。图15描述可以被用于实现本发明的异构处理器。主处理器元件(PPE)1505包括处理单元(PU)1510,其在一个实施例中是担当所述主处理器并运行操作系统的通用处理器核心。例如,处理单元1510可以是执行Linux操作系统的Power PC核心。PPE 1505还包括多个协处理元件(SPE),诸如SPE 1545、1565、以及1585。所述SPE包括担当PU 1510的副处理单元的专用处理器核心的协处理单元(SPU)、存储器存储单元、以及本地存储器。例如,SPE1545包括SPU1550、MMU1555、以及本地存储器1559;SPE1565包括SPU1570、MMU1575、以及本地存储器1579;SPE 1585包括SPU1590、MMU1595、以及本地存储器1599。

全部SPE可以使用相同的ISA,或者可以每个都实现应用特定的ISA。可以将每个SPE配置用于进行不同的任务,从而,在一个实施例中,可以使用不同的指令集存取每个SPE。例如,如果正在无线通信系统中使用PPE1505,则每个SPE可以负责诸如调制、码片速率处理、编码、网络接口等等的单独的处理任务。在另一个实施例中,所述SPE可以具有相同的指令集而且可以相互并行地被使用来进行操作,以从并行处理中受益。

PPE1505还可以包括用于PU1510使用的诸如L2缓冲器1515的2级缓冲器。此外,PPE1505包括在PU1510与所述SPU之间共享的系统存储器1520。例如,系统存储器1520可以存储例如运行的操作系统(可以包括内核)、设备驱动程序、I/O配置等等的映像、执行的应用、以及其它数据。系统存储器1520包括其被映射到系统存储器1520的区域的一个或多个所述SPE的本地存储器单元。例如,可以将本地存储器1559映射到映射区域1535,可以将本地存储器1579映射到映射区域1540,并可以将本地存储器1599映射到映射区域1542。PU1510和所述SPE通过被配置用于在这些设备之间传递数据的总线1517来与彼此以及系统存储器1520进行通信。

所述MMU负责在SPU的本地存储器与所述系统存储器之间传送数据。在一个实施例中,MMU包括被配置用于进行该功能的直接存储器存取(DMA)控制器。PU1510可以编程所述MMU以控制哪些存储器区域对每个所述MMU可用。通过改变对每个所述MMU可用的所述映射,所述PU可以控制哪一SPU能够存取系统存储器1520的哪一区域。以此方式,例如,所述PU可以为了具体SPU的独占使用而将所述系统存储器的区域指定为私有。在一个实施例中,所述SPU的本地存储器可以由PU 1510以及其它SPU使用所述存储器映射来存取。在一个实施例中,PU1510为全部SPU的公共系统存储器1520管理所述存储器映射。所述存储器映射表可以包括PU1510的L2缓冲器1515、系统存储器1520、以及所述SPU的共享的本地存储器。

在一个实施例中,所述SPU在PU1510的控制下处理数据。例如,所述SPU可以是数字信号处理核心、微处理器核心、微控制器核心等等,或上述核心的组合。每一个所述本地存储器是与具体SPU相关联的存储区域。在一个实施例中,每个SPU可以将其本地存储器配置为私有存储区域、共享存储区域,或者SPU可以将其本地存储器配置为部分私有和部分共享的存储区。

例如,如果SPU需要大量的本地存储器,则所述SPU可以将其本地存储器的100%分配为仅由该SPU可存取的私有存储器。另一方面,如果SPU需要很少量的本地存储器,则所述SPU可以将其本地存储器的10%分配为私有存储器,而将其余90%分配为共享存储器。所述共享存储器可以由PU1510以及由其它SPU可存取的。SPU可以保留其本地存储器的部分以便所述SPU当进行需要快速存取的任务时具有快速、有保证的存储器存取。当处理敏感数据时,例如,当所述SPU进行加密/解密时,所述SPU还可以以隔离模式运行并将其本地存储器保留为私有。当处于隔离模式时,将所述SPU的存储器的一部分保留为非私有的“开放空间”。所述开放空间能够被用于在所述SPU与共享存储器之间读和写数据的DMA操作。

虽然图15中描述的异构计算机系统能够执行这里所描述的处理,该计算机系统仅仅是异构计算机系统的一个示例。本领域技术人员将理解,许多其它计算机系统设计也能够进行这里所描述的处理。

本发明的优选实现之一是一种客户端应用,即,例如可以驻留在所述计算机的随机存取存储器中的指令集(程序代码)、或者代码模块中的其它功能描述性资料。在被所述计算机需要之前,该指令集可以被存储在另外的计算机存储器中,例如,在硬盘驱动器中、或在诸如光盘(最终用于CD ROM中)或软盘(最终用于软盘驱动器中)的可移动存储器中、或经由因特网或其它计算机网络下载。因此,可以将本发明实现作为用于计算机中使用的计算机程序产品。此外,尽管所描述的各种方法可以方便地在由软件选择性地激活或重新配置的通用计算机中实现,但本领域普通技术人员也将认识到,这样的方法也可以在硬件中、在固件中,或者在被构建以执行进行的方法步骤的更专门的装置中实施。功能描述性资料是给予机器功能的信息。功能描述性资料包括,但并不限于,计算机程序、指令、以及可计算函数的规则、事实、定义、对象、和数据结构。

虽然已经展示和描述了本发明的具体实施例,本领域技术人员显然可知,基于这里的教导,在不背离本发明及其更宽泛方面的前提下可以做出变更和修改。因而,所附权利要求书将在其范围内涵盖所有这样的变更和修改,只要其在本发明的根本精神和范围之内。此外,应当理解,本发明仅仅由所附权利要求书限定。本领域技术人员将理解,如果有意引入的权利要求元素的特定数字,则将在该权利要求中明确地陈述这样的意图,倘若没有这样的陈述则不存在这样的限制。对于非限制的示例,作为对理解的帮助,所附权利要求书包含对用于引入权利要求元素的介绍性短语“至少一个”和“一个或多个”的使用。然而,即使当同一个权利要求包括介绍性短语“一个或多个”或“至少一个”以及诸如“一个(a)”或“一个(an)”的不定冠词时,这样的短语的使用也不应被解读为意味着借助不定冠词“一个(a)”或“一个(an)”对权利要求元素的引入将任何特定的包含这样引入的权利要求元素的权利要求限制为仅包含一个这样的元素的发明;权利要求中定冠词的使用同样如此。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号