用于减小加密延迟时间对标准通信的影响的方法和系统的制作方法

文档序号:6550517阅读:224来源:国知局

专利名称::用于减小加密延迟时间对标准通信的影响的方法和系统的制作方法
技术领域
:本发明一般地涉及数据加密,并特别涉及用于减少与有选择地加密部分数据相关联的延迟时间的方法和装置。
背景技术
:片上系统(SOC)通常在单个芯片上包括一个或多个集成的处理器内核、诸如高速缓冲存储器的某种类型的嵌入式存储器、以及诸如存储控制组件和外部总线接口的外围接口,以便形成完整的(或近乎完整的)系统。作为增强的安全特征的一部分,一些SOC在将数据存储在外部存储器中之前将其某些部分加密。对SOC增加这种加密可以增加有价值的益处,例如防止黑客获得受版权保护的程序如视频游戏的指令(instruction)、或者可用来通过反向工程(reverseengineering)确定这种指令的数据。然而,因为传统加密方案通常使要加密的数据和不加密的数据(不加密数据)通过共同的顺序数据路径流出,所以增加加密通常影响系统性能。因此,不加密数据通常经历与加密数据相同的延迟时间。该延迟时间可能给不加密数据的存储增加相当大的延迟。此外,该延迟时间可能在加密先前的数据时阻碍对不加密数据随后的存储。因此,需要用来使加密延迟时间导致的对不加密数据的性能影响最小化的机制。
发明内容本发明一般地提供这样的方法和装置,其可以利用加密存储区域提高系统性能,同时保证将加密和不加密数据正确写入到其各自的存储器位置。因此,通过参考在附图中示出的本发明的实施例,可以得到获得并可详细理解本发明的上述特征、优点和目的的方式,对在上面简要概括的本发明的更具体的描述。然而,应当注意,附图仅图示了本发明的典型实施例,从而不应被视为限制其范围,这是因为本发明可接受其它同等有效的实施例。图1示出可使用本发明的实施例的包括中央处理单元(CPU)的示例系统。图2是根据本发明一个实施例的CPU的组件的方框图。图3是根据本发明一个实施例的CPU的加密数据路径的方框图。图4是根据本发明一个实施例的用于减少与数据加密相关联的延迟时间的示例操作的流程图。具体实施例方式可以在多种系统中使用本发明的实施例,以减小与对数据进行加密相关联的延迟时间对处理不加密数据的影响。可以独立地发送安全(要加密)和不安全(不加密)数据,而不是将安全和不安全数据都沿着共同的数据路径发送。因而,可以将不安全数据继续转发(例如,到目标写入缓冲器),而不等待对先前发送的安全数据加密。因此,与对安全和不安全数据使用共同数据路径的传统系统相比,可以更早地使不安全数据对随后的处理可用。在以下描述中,对本发明的实施例进行介绍。然而,应当理解,本发明不限于所描述的特定实施例。而是,以下特征和要素的任何组合,不管其是否涉及不同的实施例,均被视为实施和实践本发明。此外,在各种实施例中,本发明提供了相对于现有技术的众多优点。然而,尽管本发明的实施例可获得相对于其它可能方案和/或现有技术的优点,但特定优点是否由给定实施例获得不是对本发明的限制。因而,以下方面、特征、实施例和优点仅仅是说明性的,并且,除非明确提出,否则不应被视为所附权利要求的要素或限制。示例系统现在参考图1,图示了可使用本发明的实施例的包括中央处理单元(CPU)110的示例计算机系统100。如图所示,CPU110可包括一个或多个处理器内核112,每个处理器内核可包括任何数量的不同种类的功能单元,包括但不限于算术逻辑单元(ALU)、浮点单元(FPU)和单指令多数据(SIMD)单元。使用多个处理器内核的CPU示例包括可从纽约阿芒克(Armonk,NY)的国际商业机器公司(IBM)获得的CPU的PowerPC线(line)。如图所示,每个处理器内核112可具有对其自己的初级(primary)(L1)高速缓存114的访问权,并且可选地可以共享更大的二级(secondary)(L2)高速缓存116。通常,可以将由处理器内核112使用的数据副本本地存储在L2高速缓存116中,从而避免对外部主存储器140的相对较慢的访问或减少所述访问的数量。类似地,可以将处理器内核112经常使用的数据存储在其L1高速缓存114中,从而避免对L2高速缓存116的相对较慢的访问或减少所述访问的数量。CPU110可通过系统或前端总线(FSB)128与外部设备如图形处理单元(GPU)130和/或存储控制器136通信。CPU110可包括FSB接口120,以便经由FSB128(通过L2高速缓存)在外部设备和处理内核112之间传递数据。GPU130上的FSB接口132可具有与FSB接口120相似的组件,并配置为与一个或多个图形处理器134、输入输出(I/O)单元138和存储控制器136(其被说明性地示出为与GPU130集成)交换数据。如图所示,FSB接口120可包括物理层122、链路层124和事务层126。物理层122可包括用于实施通过FSB128接收和发送数据所必需的硬件协议的硬件组件。物理层122可与链路层124交换数据,其中,链路层124可以将从事务层126接收的或要发送到事务层126的数据格式化。如图所示,事务层126可以经由核心总线接口(CBI)118与处理器内核112交换数据。如前所述,作为增强的安全特征的一部分,CPU110可以在将数据存储在主存储器140中之前将在此称为安全数据的某些部分的数据加密(这种数据加密部分被说明性地示出为主存储器140中的受保护数据142)。因此,CPU110可包括安全组件150,用于在通过FSB接口120经FSB128传送之前将这种数据加密。当稍后恢复(retrieval)加密数据时,也可以在将该加密数据传递到L2高速缓存116以供一个或多个处理器内核112使用之前,使用安全组件150将其解密。如将在下面更详细地描述的,对于某些实施例,CPU110可包括数据流控制电路,其被配置为把在存储在主存储器140中之前要加密的安全数据独立地发送到安全组件150以便加密,同时绕过(绕开)该安全组件而发送不安全数据。如图2所示,可以建立多个数据流(也称作虚拟信道),以在处理器内核112和外部设备之间交换数据。建立分离的流可以改善整个系统性能,例如,允许一个处理内核传输数据而另一个处理内核处理数据(而不传输数据)。如图所示,多个流可以共享共同的缓冲池(bufferpool)210,其中,每个流使用缓冲池210中它自己的部分,从而实际上建立分离的缓冲器211-217。对于某些实施例,可以通过FSB来发送数据作为分组。因此,链路层124可包含诸如被配置为将从事务层126接收的数据编码为分组或“分组化”的分组编码器233、以及将从物理层122接收的数据分组进行解码的分组解码器234的电路。如图所示,物理层122可包括分别用于生成和接收这种分组的串行化器243和解串行化器244。通常,分组解码器234将包括分组验证组件235,其被配置为例如通过比较对所接收的数据计算的校验和与该数据分组中包含的校验和,来检查所接收的数据分组的数据传输错误。分组解码器234可将所接收的数据转发到一个或多个接收缓冲器215-217。如图所示,诸如发送到缓冲器215和216的数据请求和响应命令的一些数据可以不加密,从而可被直接传递给高速缓存116。另一方面,响应数据可包括加密和不加密数据。尽管可以将不加密数据直接传递给高速缓存116,但必须首先将加密数据251解密。因此,可以将加密数据251发送到解密引擎154。解密引擎154可以将加密数据251解密,并将解密的数据252传回。如图所示,可以使用多路复用器电路253将解密的数据252与不加密数据合并,并将其传递给高速缓存116。例如,当可获得解密的数据252以将其传递给高速缓存116时,解密引擎154可以向多路复用器电路253断言(assert)信号。对于某些实施例,事务层126可包括被配置为在接收和验证整个数据分组之前将所接收的加密数据251通过管道传递给解密引擎154的逻辑。在同此提交并通过引用而整体合并于此的、标题为“Low-LatencyDataDecryptionInterface(低延迟时间数据解密接口)”的公共转让且同样未决的申请(代理人文档第ROC920040013号)中,对这种逻辑进行了详细描述。减小加密延迟时间对标准通信的影响如前所述,在将安全数据外部存储在例如主存储器140中之前将其加密。因此,如图2所示,FSB事务层126可包括数据流控制电路260,其被配置为将未加密的安全数据254发送到加密引擎152。然后,加密引擎152可返回数据流控制电路260可随后转发到写入缓冲器213的加密数据256。然后,分组编码器233可以从写入缓冲器213访问该加密数据,并通过串行化器243生成要通过FSB发送出去的数据分组。数据流控制电路260可被配置为接收和发送安全和不安全数据。尽管加密操作可能涉及相当大的延迟时间,但是可以将数据流控制电路260配置为尽力独立发送安全和不安全数据,以减小加密延迟时间对不安全数据的影响。如图所示,实际上,数据流控制电路260提供从CBI到写入缓冲器213的不同数据路径,其中,安全数据沿第一路径(通过加密引擎152)发送,而不安全数据沿第二路径发送。图3图示数据流控制电路260的一个实施例,其可用来通过多路复用器262-265(MUX0-3)的布置独立发送安全和不安全数据。如图所示,数据流控制电路260可以从CBI接收例如在处理器内核发出的存储指令中包含的数据。如图所示,地址和命令数据可由说明性地(例如通过控制多路复用器262-265的信号)控制数据流控制电路260的操作的其它组件如命令解码器270、安全数据控制电路272和数据缓冲器写入控制器273接收。可以同时参考图3和图4来描述数据流控制电路260通过多路复用器262-265的操作,其中,图4图示了用于独立发送安全和不安全数据的示例操作400。为了帮助理解,将图4示出的操作之一涉及的图3示出的一个或多个多路复用器在操作下面列出。在步骤402,操作400以接收存储指令中包含的数据开始。如图所示,数据流控制电路260可包括位于各种位置的锁存电路261,以便临时保存所接收的数据,直到所需的资源可用为止。在步骤404,确定所接收的数据是安全的还是不安全的。可以使用任何合适的技术来确定数据是否是安全的。例如,可以为安全数据预留特定的地址范围。因此,安全数据控制器272可以通过检查包含该数据的指令的地址来识别安全数据。作为另一示例,可以通过页表项(pagetableentry)中的一个或多个位设置来识别安全数据,所述位设置指示例如对应的高速缓存线是安全的。如果数据是安全的,则在步骤406经过加密引擎发送数据。如图3所示,可以将安全数据通过MUX0262发送到加密引擎,其中,可以由安全数据控制电路272生成的信号来控制MUX0262。换句话说,响应于(例如,基于数据将被写入的地址)将数据识别为安全的,安全数据控制电路272可生成mux控制信号,以便将数据发送给加密引擎152。在某些情况下,可以包括可选的锁存电路261,以支持延迟时间大于传递数据分组的时间的加密引擎。一旦从加密引擎152返回了加密数据,如果步骤408确定包含安全数据的存储指令目标所指的写入缓冲器213可用(即,该缓冲器尚未被写入),则在步骤412,将加密数据发送到该可用的写入缓冲器。换句话说,用于缓冲的阵列通常只有单个写入端口。因此,在任何给定时间,只有一组写入数据可以通过。如图所示,可以将来自加密引擎152的加密数据经由MUX2264和MUX3265直接发送到写入缓冲器213。换句话说,不管加密过程涉及的延迟时间量如何,都可以在对标准数据流有很小的影响或者没有影响的情况下,将加密数据合并回标准(例如未加密的)数据流中。然而,如果目标写入缓冲器213不可用(即,当前该缓冲器正被写入),则在步骤410,可以将加密数据发送到保持缓冲器274,在那里,可以保持加密数据,直到缓冲器213可用为止。目标写入缓冲器213可能因数据流控制电路260可能正在将其它加密数据或不加密数据发送到目标写入缓冲器213而不可用。可以将加密数据从加密引擎152经由MUX1263发送到数据保持缓冲器274。如图所示,到控制MUX1-3262-264的信号可由数据缓冲器写入控制电路273生成,其中,数据缓冲器写入控制电路273可以监控写入缓冲器213的可用性。换句话说,数据缓冲器写入控制电路273可以在保持缓冲器274中保持加密数据,直到检测到通向写入缓冲器的通信的间隙为止。一旦检测到这一间隙,就可以将保持缓冲器274中的数据写入到写入缓冲器213中。回到步骤404,如果数据流控制电路260接收到的数据是不安全的,那么如果在步骤414确定目标写入缓冲器213可用,则在步骤418,可以将该不安全数据直接发送到目标写入缓冲器213。如图所示,可以将不加密数据经由MUX2264和MUX3265直接发送到写入缓冲器213。如果目标写入缓冲器213不可用,则在步骤416,可以将不安全/不加密数据发送到保持缓冲器274,在那里,可以保持该不安全/不加密数据,直到写入缓冲器213可用为止。如前所述,可以将数据从数据保持缓冲器274经由MUX3265发送到写入缓冲器213。指令排序如在此描述的,通过独立发送安全和不安全数据,即使来自先前发送的存储指令的安全数据正由加密引擎152加密,也可以在因加密延迟时间而导致的影响很小或者没有这种影响的情况下,将不安全数据发送到写入缓冲器。使用在此描述的电路,可以将加密数据合并回标准通信流,而不管加密所需的延迟时间周期的数量。然而,作为结果,数据可以按照与其流入流控制电路260不同的页序流出数据流控制电路260。换句话说,随后发出的、包含不安全数据的存储指令可能在先前发出的、包含必须首先被加密的安全数据的存储指令之前退出流控制电路。对于某些实施例,这些指令可能被无顺序地处理,而对于其它实施例,可能施行严格的排序。无论怎样,都可以保持包含被传递到加密引擎的数据的存储指令的地址,以确保检查包含共同地址(例如,地址冲突)的存储和加载指令的适当系统顺序。换句话说,如果在修改某地址处的数据的存储指令之后跟随着从相同地址读取数据的加载指令,则可以将逻辑配置为确保在加载指令之前发出存储指令,以避免加载指令读取无效数据。对于某些实施例,可以将数据缓冲器写入控制器273配置为检测地址冲突,并发信号通知命令解码器,所述命令解码器可以例如重新安排加载指令。根据实施例,在此描述的流控制逻辑可被配置为在第一组加密数据返回之前处理不同数量的存储命令。对于某些实施例,可以将流控制逻辑简化为一次只允许一个存储指令通过加密路径,这可以将所述逻辑简化(例如,需要较小的缓冲器),并且对于加密带宽需求低的应用是可以接受的。对于其它实施例,更复杂的电路可以为要通过加密路径发送的更大数量的存储指令留有余地,这可用来更充分地使上游逻辑免受加密路径的性能限制的影响。结论通过独立发送安全数据(要加密)和不安全数据(不加密),可以将存储指令中包含的安全数据发送到加密引擎,而不阻碍随后发出的存储指令中包含的不安全数据。随后可以将从加密引擎返回的加密的安全数据与不安全数据合并回去。从而可以减小与传统加密机制相关联的时间延迟对不安全数据的影响。尽管上文针对本发明的实施例,但可以在不脱离本发明的基本范围的情况下,设计本发明的其它和另外的实施例,而本发明的范围由所附权利要求确定。相关申请交叉引用本申请涉及题为“Low-LatencyDataDecryptionInterface(低延迟时间数据解密接口)”的公共转让且同样未决的申请(代理人文档第ROC920040013号),在此一同提交,并通过引用而将其全部合并于此。权利要求1.一种减小与对安全数据加密相关联的延迟时间对在存储器中存储不安全数据的影响的方法,包括接收要存储到存储器中的第一数据;如果第一数据是安全的,则将第一数据发送到加密引擎,以在将第一数据存储到存储器中之前进行加密;以及如果第一数据是不安全的,则绕开加密引擎而将第一数据发送到存储器,而不管加密引擎是否正在对该第一数据之前接收的数据进行加密。2.如权利要求1所述的方法,其特征在于,第一数据是安全的,并且该方法还包括在接收到第一数据之后,接收要存储的第二数据;确定该第二数据是不安全的;将第二数据发送到存储器;以及随后接收以加密形式从加密引擎返回的第一数据。3.如权利要求2所述的方法,其特征在于,第一数据是安全的,并且该方法还包括在接收到第二数据之后,接收要存储的第三数据;确定该第三数据是不安全的;以及在接收以加密格式从加密引擎返回的第一数据之前,将第三数据发送到存储器。4.如权利要求1所述的方法,还包括如果对应于第一数据的第一存储地址在为安全数据保留的预定地址范围内,则确定第一数据是否是安全的。5.一种减小与对安全数据加密相关联的延迟时间对在存储器中存储不安全数据的影响的方法,包括接收要存储到存储器中的第一组一个或多个指令中包含的安全数据;将安全数据发送到加密引擎,以进行加密;在接收到安全数据之后,接收要存储到存储器中的第二组一个或多个指令中包含的不安全数据;以及在接收到以加密形式从加密引擎返回的安全数据之前,绕开加密引擎而将不安全数据发送到存储器。6.如权利要求5所述的方法,其特征在于,将不安全数据发送到存储器包括将不安全数据发送到写入缓冲器。7.如权利要求6所述的方法,还包括接收以加密形式从加密引擎返回的安全数据;以及将加密形式的安全数据发送到写入缓冲器。8.如权利要求7所述的方法,还包括确定写入缓冲器是否可用于接收安全数据;以及如果不可用,则在将加密形式的安全数据发送到写入缓冲器之前,将加密形式的安全数据发送到保持缓冲器。9.如权利要求8所述的方法,还包括确定写入缓冲器是否可用于接收不安全数据;以及如果不可用,则在将不安全数据发送到存储器之前,将不安全数据发送到保持缓冲器。10.一种用于对加密数据的分组进行解密的系统,包括缓冲设备;加密引擎;通过加密引擎的第一数据路径,用于要在存储到存储器中之前加密的安全数据;绕开加密引擎的第二数据路径,用于要存储到存储器中的未加密的不安全数据;以及数据流控制电路,配置为接收要存储到存储器中的第一数据,如果第一数据是安全的,则将第一数据发送到第一数据路径,如果第一数据是不安全的,则将第一数据发送到第二数据路径。11.如权利要求10所述的系统,其特征在于第一数据是安全数据;以及数据流控制电路被配置为在第一数据以加密的形式退出加密引擎之前将在第一数据之后接收的不安全的第二数据发送到第二数据路径。12.如权利要求10所述的系统,其特征在于,第一和第二数据路径在一个或多个写入缓冲器处合并。13.如权利要求12所述的系统,还包括保持缓冲器,用于在所述一个或多个写入缓冲器之前有选择地从加密引擎接收数据。14.如权利要求13所述的系统,其特征在于,数据流控制电路还包括一个或多个多路复用器,用于有选择地将数据从保持缓冲器发送到所述一个或多个写入缓冲器。15.如权利要求13所述的系统,其特征在于,第一和第二数据路径每个都具有到保持缓冲器的分支。16.一种片上系统(SOC),包括一个或多个处理器内核;加密引擎;一个或多个写入缓冲器;以及数据流控制电路,配置为经由通过加密引擎的第一数据路径将第一存储指令中包含的安全数据发送到所述一个或多个写入缓冲器,而经由绕开加密引擎的第二数据路径将在第一存储指令之后发出的第二存储指令中包含的不安全数据发送到所述一个或多个写入缓冲器,其中,不安全数据在安全数据之前到达所述一个或多个写入缓冲器。17.如权利要求16所述的SOC,其特征在于,数据流控制电路配置为基于存储指令中包含的地址确定该存储指令中包含的数据是安全的。18.如权利要求16所述的SOC,还包括保持缓冲器,用于从加密引擎接收加密形式的安全数据。19.如权利要求18所述的SOC,其特征在于,数据流控制电路包括一个或多个多路复用器,以基于所述一个或多个写入缓冲器的可用性,有选择地将加密形式的安全数据从加密引擎发送到所述一个或多个写入缓冲器或者保持缓冲器。20.如权利要求18所述的SOC,其特征在于,数据流控制电路包括一个或多个多路复用器,以基于所述一个或多个写入缓冲器的可用性,有选择地将不安全数据发送到保持缓冲器。全文摘要提供了可在系统中使用以减小与对数据加密相关联的延迟时间对不加密数据的影响的方法和系统。可以独立发送安全和不安全数据。因而,可以将不安全数据继续转发(例如,到目标写入缓冲器),而不等待对先前发送的安全数据进行加密。因此,与使用用于安全和不安全数据的共同数据路径的传统系统相比,可以更早地使不安全数据能够用于随后的处理。文档编号G06F1/00GK1743993SQ20051007021公开日2006年3月8日申请日期2005年5月11日优先权日2004年9月2日发明者布鲁斯·L·比克马,杰米·R·库塞尔,罗伯特·A·希勒申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1