存储器备份期间的数据操作转让专利

申请号 : CN201110328441.0

文献号 : CN102567139B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : G·J·皮奇里洛P·B·崇

申请人 : LSI公司

摘要 :

本发明涉及电源故障的数据操作。公开了一种电源隔离和备份系统。当检测到电源故障状况时,临时存储器被清空到SDRAM。在清空之后,停止接口,从除了SDRAM子系统之外的芯片的大部分断开电源。SDRAM子系统将数据从SDRAM拷贝到闪存。期间,可以加密数据和/或计算数据完整性签名。为了恢复数据,SDRAM子系统将数据从闪存拷贝到SDRAM。期间,可以解密被恢复的数据和/或检查数据完整性签名。

权利要求 :

1.一种在易失性存储器和非易失性存储器之间传送数据的方法,包括:接收具有存储器地址字段的指令数据块,在所述存储器地址字段中提供的多个位超过唯一地寻址全部易失性存储器所需的多个位,所述存储器地址字段具有被用于唯一地表明所述易失性存储器中的位置的多个第一地址位和不被用于唯一地表明所述易失性存储器中的位置且被编码用于表明数据操作的多个第二地址位;

基于所表明的数据操作,选择用于将被发送给所述非易失性存储器的数据的源;

将数据从所述易失性存储器传送到所述源;

从所述源接收操作的数据;以及

将所述操作的数据传送到所述非易失性存储器;

其中所述源是数据加密引擎或签名引擎。

2.如权利要求1所述的方法,其中在所述源是签名引擎的情况下,所述多个第二地址位表明所述签名引擎将发送数据完整性签名。

3.如权利要求1所述的方法,其中所述源能够是多个签名引擎中的一个,以及所述多个第二地址位表明所述多个签名引擎中将成为所述源的一个。

4.一种在非易失性存储器和易失性存储器之间传送数据的方法,包括:接收具有存储器地址字段的指令数据块,在所述存储器地址字段中提供的多个位超过唯一地寻址全部易失性存储器所需的多个位,所述存储器地址字段具有被用于唯一地表明所述易失性存储器中的位置的多个第一地址位和不被用于唯一地表明所述易失性存储器中的位置且被编码用于表明数据操作的多个第二地址位;

基于所表明的数据操作,选择用于将被发送给所述易失性存储器的数据的源;

将数据从所述非易失性存储器传送到所述源;

从所述源接收操作的数据;以及

将所述操作的数据传送到所述易失性存储器;

其中所述源是数据解密引擎或签名引擎。

5.如权利要求4所述的方法,其中在所述源是签名引擎的情况下,所述多个第二地址位表明所述签名引擎将发送数据完整性签名。

6.如权利要求4所述的方法,其中所述源能够是多个签名引擎中的一个,以及所述多个第二地址位表明所述多个签名引擎中将成为所述源的一个。

7.一种集成电路,包括:

数据操作控制器,接收存储器地址字段,在所述存储器地址字段中提供的多个位超过唯一地寻址全部易失性存储器所需的多个位,所述存储器地址字段具有被用于唯一地表明易失性存储器中的位置的多个第一地址位和不被用于唯一地表明所述易失性存储器中的位置且被编码用于表明数据操作的多个第二地址位,基于所表明的数据操作,所述数据操作控制器选择用于将被发送给非易失性存储器的数据的源;

易失性存储器控制器,耦合到易失性存储器,所述易失性存储器控制器促使数据从所述易失性存储器传送到所述源;

非易失性存储器控制器,耦合到所述非易失性存储器,所述非易失性存储器控制器从所述源接收操作的数据并且将所述操作的数据传送到所述非易失性存储器;

其中所述源是数据加密引擎或签名引擎。

8.如权利要求7所述的集成电路,其中在所述源是签名引擎的情况下,所述多个第二地址位表明所述签名引擎将发送数据完整性签名。

9.如权利要求7所述的集成电路,其中所述源能够是多个签名引擎中的一个,以及所述多个第二地址位表明所述多个签名引擎中将成为所述源的一个。

10.一种集成电路,包括:

数据操作控制器,接收存储器地址字段,在所述存储器地址字段中提供的多个位超过唯一地寻址全部易失性存储器所需的多个位,所述存储器地址字段具有被用于唯一地表明易失性存储器中的位置的多个第一地址位和不被用于唯一地表明所述易失性存储器中的位置且被编码用于表明数据操作的多个第二地址位,基于所表明的数据操作,所述数据操作控制器选择用于将被发送给所述易失性存储器的数据的源;

非易失性存储器控制器,耦合到非易失性存储器,所述非易失性存储器控制器促使数据从所述非易失性存储器传送到所述源;

易失性存储器控制器,耦合到所述易失性存储器,所述易失性存储器控制器从所述源接收操作的数据并且将所述操作的数据传送到所述易失性存储器;

其中所述源是数据加密引擎或签名引擎。

11.如权利要求10所述的集成电路,其中在所述源是签名引擎的情况下,所述多个第二地址位表明所述签名引擎将发送数据完整性签名。

12.如权利要求10所述的集成电路,其中所述源能够是多个签名引擎中的一个,以及所述多个第二地址位表明所述多个签名引擎中将成为所述源的一个。

说明书 :

存储器备份期间的数据操作

[0001] 相关申请的交叉引用
[0002] 本专利申请基于并且要求2010年12月20日由Peter B.Chon提交的、题为″Low Power Hardware Controlled Memory Backup that includes Encryption and Signature Generation″的美国临时专利申请序号61/424,701的权益,由此对于其全部公开和教导的内容,通过引用该申请而被具体地包括在此处。

背景技术

[0003] 计算机或者其他电子系统的所有或者大部分组件可以被集成到单个集成电路(芯片)中。芯片可以包含数字、模拟、混合信号和射频功能的各种组合。这些集成电路可以被称为芯片上系统(SoC或者SOC)。典型的应用是嵌入式系统的领域。芯片上系统的一种变型是单个芯片上的多个RAID功能的集成。其可以被称为芯片上RAID(ROC)。
[0004] 可以以提供冗余和错误恢复而没有任何数据损失的方式配置RAID阵列。RAID阵列还可以被配置为通过允许向多个盘驱动器同时读取或者写入数据来增加读取和写入性能。RAID阵列还可以被配置为允许″热交换″,其允许在不中断阵列的存储服务的情况下替换故障的盘。来自Berkeley的California大学的David A.Patterson等人1987号公开、题为″A Case for Redundant Arrays of Inexpensive Disks(RAID)″讨论了RAID技术的基本概念和标准。
[0005] RAID存储系统通常利用控制器对用户或者主机系统屏蔽管理存储阵列的细节。控制器使得存储阵列表现为一个或更多个盘驱动器(或者卷)。这是已实现的,尽管对于特定卷的数据(或者冗余数据)可能跨越多个盘驱动器。

发明内容

[0006] 本发明的一个实施例因此可以包括一种在易失性存储器和非易失性存储器之间传送数据的方法,包括:接收具有存储器地址字段的指令数据块,所述存储器地址字段具有表明所述易失性存储器中的位置的多个第一位和表明数据操作的多个第二位;基于所表明的数据操作,选择用于将被发送给所述非易失性存储器的数据的源;将数据从所述易失性存储器传送到所述源;从所述源接收操作的数据;以及将所述操作的数据传送到所述非易失性存储器。
[0007] 本发明的一个实施例因此可以进一步包括一种在非易失性存储器和易失性存储器之间传送数据的方法,包括:接收具有存储器地址字段的指令数据块,所述存储器地址字段具有表明所述易失性存储器中的位置的多个第一位和表明数据操作的多个第二位;基于所表明的数据操作,选择用于将被发送给所述易失性存储器的数据的源;将数据从所述非易失性存储器传送到所述源;从所述源接收操作的数据;以及将所述操作的数据传送到所述易失性存储器。
[0008] 本发明的一个实施例因此可以进一步包括一种集成电路,包括:数据操作控制器,接收存储器地址字段,所述存储器地址字段具有表明易失性存储器中的位置的多个第一位和表明数据操作的多个第二位,基于所表明的数据操作,所述数据操作控制器选择用于将被发送给非易失性存储器的数据的源;易失性存储器控制器,耦合到易失性存储器,所述易失性存储器控制器促使数据从所述易失性存储器传送到所述源;非易失性存储器,耦合到所述非易失性存储器,所述非易失性存储器控制器从所述源接收操作的数据并且将所述操作的数据传送到所述非易失性存储器。
[0009] 本发明的一个实施例因此可以进一步包括一种集成电路,包括:数据操作控制器,接收存储器地址字段,所述存储器地址字段具有表明易失性存储器中的位置的多个第一位和表明数据操作的多个第二位,基于所表明的数据操作,所述数据操作控制器选择用于将被发送给所述易失性存储器的数据的源;非易失性存储器控制器,耦合到非易失性存储器,所述非易失性存储器控制器促进数据从所述非易失性存储器传送到所述源;易失性存储器控制器,耦合到所述易失性存储器,所述易失性存储器控制器从所述源接收操作的数据并且将所述操作的数据传送到所述易失性存储器。

附图说明

[0010] 图1示出了电源隔离和备份系统的框图。
[0011] 图2示出了电源隔离的方法的流程图。
[0012] 图3A和3B示出了数据操作系统配置的框图。
[0013] 图4示出了指令数据块(CDB)的图示。
[0014] 图5示出了电源隔离和备份系统的框图。
[0015] 图6示出了计算机系统的框图。

具体实施方式

[0016] 图1示出了电源隔离和备份系统的框图。在图1中,隔离和备份系统100包括:集成电路110、电源控制部分150、SDRAM 125和非易失性存储器(例如闪存)135。集成电路(IC)110包括SDRAM子系统115、控制部分140、时钟发生器141及其他电路111。SDRAM子系统115包括SDRAM控制器120和非易失性存储器控制器130。其他电路112可以包括临时存储器112(例如,高速缓冲存储器、缓存器等等)。SDRAM控制器120通过接口121与SDRAM 125接口并控制SDRAM 125。非易失性存储器控制器130通过接口131与非易失性存储器135接口并且控制非易失性存储器135。SDRAM子系统115(以及由此SDRAM控制器
120和非易失性存储器控制器130)操作地耦合到控制部分140、时钟发生器141、其他电路
111和临时存储器112。时钟发生器141操作地耦合到控制部分140及其他电路111。
[0017] 电源控制部分150向IC 110提供电源A(PWRA)160。电源控制部分150向SDRAM子系统115提供电源B(PWRB)161。电源控制部分150向SDRAM 125提供电源C(PWRC)162。电源控制部分150向非易失性存储器135提供电源D(PWRD)163。电源控制部分150向控制部分140提供电源故障信号165。电源控制部分150还通过信号166操作地耦合到SDRAM子系统。
[0018] 应当理解,如在本申请中使用的,SDRAM(同步动态随机存取存储器)意图包括所有的易失性存储器技术。由此,在一个实施例中,SDRAM子系统115可以包括静态随机存取存储器(SRAM)控制器,以及SDRAM 125可以包括SRAM装置。
[0019] 在一个实施例中,当电源控制部分150检测到电源故障状况(或者就要发生电源故障或者存在电源故障),电源控制部分150通过电源故障信号165通知IC 110该状况。这将启动电源隔离流程以将SDRAM子系统115从IC 110的其余部分——特别是其他电路
111隔离。在一个实施例中,全部电源隔离流程由硬件(例如,控制部分140、SDRAM子系统
115或者二者)控制,而没有来自软件的交互。
[0020] 在收到电源故障状况的通知时,连接到SDRAM子系统115的所有接口(例如对于其他电路111的接口)将被停止。将清空芯片上的临时存储器112。应当理解,尽管在图1中临时存储器112被示出在SDRAM子系统115之外,然而临时存储器112可以是SDRAM子系统115的一部分。在一个实例中,临时存储器112可以是高速缓存(例如第一级高速缓存、第二级高速缓存、第三级高速缓存)、置入缓存器(posting buffer)等等。
[0021] 一旦已经清空了临时存储器112,则连接到SDRAM子系统115的逻辑表明何时已经停止了用于清空的接口。一旦停止,则这些接口不接受任何新的周期。一旦所有接口都被停止,则外部设备和内部核心逻辑(即,其他电路111)所需的输入被锁存,由此使得它们的状态在发生隔离时不会丢失。在锁存了输入之后不需要的时钟被断开。SDRAM子系统将切换到内部产生的时钟,或者切换到由与SDRAM子系统115共享电源的时钟发生器(例如,时钟发生器141)产生的时钟。此后,对于存储器备份来说不需要的SDRAM子系统115的输入被隔离。在一个实施例中,这些输入被驱动至非活动状态。
[0022] 在完成输入的隔离之后,SDRAM子系统115(或者控制部分140)发送信号通知(例如,利用信号166)电源控制部分150以断开PWRA 160。这导致断开对于除了SDRAM子系统115之外的IC110的所有(部件)的电源。SDRAM子系统115处于与至少其他电路111分离的电源层上。这允许保持对SDRAM子系统的电源(即,通过PWRB 161)直到对隔离和备份系统100的电源完全失去。
[0023] 在对除了SDRAM子系统115(以及SDRAM子系统115需要的任何其他逻辑)之外的所有部分的电源的隔离和断开进行控制之外,一旦已经停止接口以及清空了临时存储器112,内部存储器备份逻辑开始将数据从SDRAM 125移动到非易失性存储器135。在一个实施例中,一旦已经断开了PWRA,仅仅存在在整个芯片上运行的几个周期。
[0024] 图1示出了IC 110芯片和外部逻辑之间的连接以及可以用于电源隔离和随后存储器备份的一些内部连接。当电源控制部分150检测到电源故障,其通过电源故障信号165通知IC 110。控制部分140监测电源故障信号165。当控制部分140发现电源故障信号165被断言,以及能够完成电源隔离时,控制部分140通过断言power_iso_begin信号(在图1中没有明确示出)来通知SDRAM子系统115开始隔离流程。SDRAM子系统115随后执行电源隔离流程所需的步骤。稍后将在本说明书中更详细地阐述包括在电源隔离流程中的步骤。
[0025] 一旦已经完成了电源隔离流程,MSS_core_iso_ready信号(在图1中未明确示出)被断言以表明至少可以断开PWRA 160。电源控制部分150禁止PWRA 160,但是将保持PWRB 161、PWRC 162、和PWRD 163被使能。禁止PWRA 160将电源从IC 110的除了连接到PWRB 161的电路之外的部分断开。SDRAM子系统115以及相关的锁相环(例如,时钟发生器141内部的)和IO(例如接口121和131)处于与IC 110的其余部分不同的电源层上。该层由PWRB161供电,并且将保持使能。在一个实例中,至少一部分电路位于该分离的电源层上的功能块是控制部分140、时钟发生器141和SDRAM子系统115。在一个实施例中,外部SDRAM 125保持由PWRC 162供电,以及外部非易失性存储器保持由PWRD 163供电。这是必须保持被供电以便执行存储器备份的逻辑的减小数量。
[0026] 在电源隔离流程期间,SDRAM子系统115在适当的时间开始SDRAM 125的存储器备份。该备份将需要(或者请求)的数据从SDRAM 125移动到非易失性存储器135。在一个实施例中,在没有软件介入的情况下执行全部存储器备份。
[0027] 应当理解,用于提供电源160-163的上述和部分地通过图1示出的方法是向隔离和备份系统100的一个或更多个组件提供(和断开)电源的示例性方法。在所示的实例中,所有电源160-163和各种电源域/层的控制在IC 110外部完成。然而,存在向隔离和备份系统100的一个或更多个组件提供(和断开)电源的其他方法。一种方法可以为每个电压使用一个外部电源,并随后利用IC 110内部的开关形成不同的电源域/层。另一种方法可以减小外部电压的数目,并且使用隔离和备份系统100(例如,IC 110)的一个或更多个组件内部的调节器以得到各种电压,以及使用IC 110内部的开关以控制不同的电源域/层。利用这些方法,以大致相同的方式完成了电源隔离。差异在于,需要通知以保持电源161-163使能的电源控制逻辑150可以位于内部或者外部。
[0028] 图2示出了电源隔离的方法的流程图。图2中示出的各步骤可以由隔离和备份系统100的一个或更多个部件执行。为第一芯片上子系统接收电源(202)。例如,可以由IC100接收为其他电路111供电的PWRA 160。接收电源故障状况的指示符(204)。例如,可以由IC 110接收电源故障信号165。这可以导致在power_iso_begin信号被断言时开始电源隔离流程。
[0029] 停止对SDRAM子系统的接口(206)。临时存储被清空到SDRAM(208)。例如,可以清空第三级高速缓存、第二级高速缓存、置入缓存器或者用于临时存储去往/来自SDRAM 125的数据拷贝的任何其他类型的存储装置。连接到各个接口的逻辑在它们已经完成所有未完成的周期并且已经停止接受任何新的周期时可以返回停止指示。
[0030] 在硬件控制下,芯片上SDRAM子系统被隔离(210)。例如,当SDRAM接口(或者临时存储器112)已经表明它已经停止接受周期,则通过将其设置为非活动状态而隔离它的输入。一旦接收到来自其他接口的停止,需要为外部核心装置和内部逻辑保存的输入被锁存。这些输入包括诸如复位、用于PLL的信号和母线输入等。此时,可以断开SDRAM子系统不再需要的任何时钟,以便帮助减小功耗。一段时间之后,可以断言信号(例如,MSS_core_iso_enable),这表明隔离SDRAM子系统的所有输入并且将其设置为非活动状态。
[0031] 第一芯片上子系统使用的时钟和电源被断开(212)。例如,去往临时存储器112的时钟可以被切换到内部产生的时钟。一旦已经隔离了输入,可以断言例如MSS_core_iso_ready的信号。这例如向电源控制逻辑150表明,现在可以禁止连接到IC 110的PWRA 160。
[0032] 产生SDRAM子系统使用的时钟(214)。例如,时钟发生器141可以产生SDRAM子系统使用的时钟以在断开PWRA 160时使用。数据从SDRAM被拷贝到非易失性存储器(216)。例如,可以通过断言例如flash_offload_begin的信号来启动从SDRAM 125到非易失性存储器135的存储器备份。从SDRAM子系统、SDRAM和非易失性存储器断开电源(218)。例如,在完成存储器备份时在电源控制部分150的控制下,或者仅仅由于整个隔离和备份系统100的电源已经故障,从SDRAM子系统115、SDRAM 125和非易失性存储器135断开电源。
[0033] 在备份期间隔离SDRAM子系统115的电源的优点是减小了消耗的功率量。仅仅对处理存储器备份的IC 110的内部逻辑、外部SDRAM 125和非易失性存储器135供电。通过降低功耗,在消耗完所有剩余的功率之前,可用于执行存储器备份的时间量增加了。除了更少的在完成备份之前保持电源所需的外部逻辑之外,拥有更多时间使得可以备份更多的存储器。由于正在进行电源隔离,可能有利的是将闪存控制器移动至内部以降低功耗和减少进行存储器备份所需的总体系统成本。
[0034] 在一个实施例中,随着SDRAM 125中的数据被移到非易失性存储器135,通过执行加密和/或数据完整性签名计算为备份的数据提供额外的数据保护。数据加密提供了安全存储数据的方法。数据完整性签名计算防止了绝大部分可能发生的数据错误。
[0035] 在需要存储器备份或者恢复时,SDRAM子系统115在SDRAM125和非易失性存储器135之间移动数据。SDRAM子系统115可以使用一系列CDB(指令描述符块)用于表明请求的数据移动。这些CDB的格式通常是预先定义的。CDB中的一个字段是存储器地址字段,其表明在SDRAM 125中读取或者写入数据的位置。在一个实施例中,在该字段中提供的地址位的数目超过了寻址所有SDRAM 125所需的数目。一些不需要的地址位可以被用于对如下信息进行编码,所述信息是关于在数据被移动至SDRAM 125/从SDRAM 125移动数据的同时应当如何操作数据的信息。在执行存储器备份或者恢复时或者在其他时候可以进行该移动。未使用的地址位的编码可以表明数据是否应当被加密/解密、是否需要生成签名、是否应当卸载或者重置签名以及应当使用哪一个签名引擎。
[0036] 当接收到来自非易失性存储器控制器130的请求对SDRAM 125进行读/写时,随着数据通过SDRAM子系统115在SDRAM 125和非易失性存储器135之间移动,可以解析上述未使用的地址位以确定执行什么样的数据操作。
[0037] 在一个实施例中,图3A和3B示出了数据操作系统配置的框图。在图3A中,数据操作系统300包括:SDRAM控制器310、闪存控制器320、控制部分330、签名引擎340、加密/解密引擎350和多路复用器(MUX)360。控制部分330操作地耦合到SDRAM控制器310、闪存控制器320、签名引擎340和加密/解密引擎350和MUX 360。由此,控制部分330可以从闪存控制器320接收指令、信号、CDB等,执行判优,以及另行管理数据操作系统300的配置和数据流。
[0038] 在图3A中,通过耦合371,SDRAM 310被配置为将从SDRAM(在图3A中未示出)读取的数据发送至签名引擎340、加密/解密引擎350和MUX 360的第一输入。加密/解密引擎350被配置为通过耦合372将加密的数据发送至MUX 360的第二输入。签名引擎340被配置为通过耦合373将数据完整性签名发送至MUX 360的第三输入。控制部分330控制MUX以将从SDRAM读取的未改变的数据、加密的数据或者数据完整性签名中的一个发送至闪存控制器320。闪存控制器320可以将从SDRAM读取的未改变的数据、加密的数据或者数据完整性签名存储在闪存中(在图3A中未示出)。
[0039] 图3A示出了当控制部分330从闪存控制器320接收到从SDRAM(例如,SDRAM 125)读取的请求时的控制和数据流的配置。在一个实施例中,当需要SDRAM存储器的备份时使用该配置和数据流。在一个实施例中,签名引擎340和加密/解密引擎350被用于读取和写入请求二者。图3A中示出了用于闪存写入请求(对应于SDRAM读取)的数据连接和数据流。图3B中示出了用于闪存读取请求(对应于SDRAM写入)的数据连接。
[0040] 闪存控制器320发送读取请求至控制部分330。控制部分330检查所述请求的编码地址线(或者专用字段)以确定从何处路由从SDRAM控制器310返回的读取数据以及需要什么样的数据操作(如果有的话)。在一个实施例中,地址位[46:40]包含如下的编码和映射:位40-42(SES[0:2])指定了8个签名引擎340中的哪些应该采取由编码的其他位指定的动作(如果有的话);位43(SG)确定所指定的签名引擎是否应该利用读取数据作为输入产生数据完整性签名;位44(SO)告知指定的签名引擎以输出数据完整性签名(这取决于MUX 360的状态,其可以被发送给闪存控制器320用于存储);位45(SR)重置指定的签名引擎的数据完整性签名;以及位46(E/D)确定来自加密/解密引擎350的输出的加密数据是否应当被发送给闪存控制器320。
[0041] 图4示出了指令数据块(CDB)的图示。在图4中,示出了用于地址位0-46的地址字段。还示出了指定使用的SDRAM地址位的SDRAM地址位中的字段(A[0:39]),以及编码地址位的字段(A[40:46])。还示出了编码地址位的各个位字段(SES[0:2]、SG、SO、SR和E/D)。
[0042] 可以理解,基于地址位40-46的编码,指示将被发送给MUX360,导致闪存控制器320使用三个不同源中的一个。数据将直接来自SDRAM控制器310、加密/解密引擎350,或者是否从其中一个签名引擎340卸载签名。如果编码表明执行加密,则控制部分330将控制加密/解密引擎350以从SDRAM控制器310接收读取数据。一旦加密/解密引擎350从SDRAM控制器310收到数据,则其执行数据加密,发送结果至MUX 360用于路由至闪存控制器320并且等待它接受该数据。
[0043] 编码还表明是否应当对正在被转移到闪存的数据进行签名生成。如编码的签名引擎选择(SES[0:2])字段表明的,八个签名引擎340中的一个将通知应当更新它的CRC/校验和签名值。与正在被直接发送至闪存控制器320或者加密/解密引擎350的数据并行地,数据还被至少发送给指定的签名引擎340。一旦所选择的签名引擎340发现那些块中的任何一个接受了SDRAM数据,则利用该数据更新当前的CRC/校验和签名。最后,编码表明是否应当输出签名卸载。如果需要签名卸载,控制部分330将不会发布读取命令至SDRAM控制器310。作为替代,控制部分330将命令所选择的签名引擎340发送数据完整性签名数据至闪存控制器320。
[0044] 在图3B中,通过耦合381,控制器320被配置为将从闪存(在图3B中未示出)读取的数据发送至签名引擎340、加密/解密引擎350和MUX 361的第一输入。加密/解密引擎350被配置为通过耦合382将加密的数据发送至MUX 361的第二输入。签名引擎340被配置为通过耦合383表明选择的数据完整性签名的当前值。控制部分330控制MUX 361以将从闪存(通过闪存控制器320)读取的未改变的数据或者解密的数据中的一个发送至SDRAM控制器310。SDRAM控制器310可以将从闪存读取的未改变的数据或者解密的数据存储在SDRAM(在图3B中未示出)中。
[0045] 图3B中示出了用于闪存读取请求(对应于SDRAM写入)的数据连接。在一个实施例中,当需要将数据恢复回到SDRAM存储器时使用该流。控制部分330可以从闪存控制器320接收写指令。控制部分330可以发布写入请求至SDRAM控制器310。检查请求的编码地址线以确定从何处路由正在(从闪存控制器320)发送给SDRAM控制器的写入数据以及需要什么样的数据操作(如果有的话)。可以使用与图3A的讨论中的描述相同的编码。基于该编码,来自闪存控制器320的未改变的数据或者来自加密/解密引擎350的解密的数据将由MUX 361选择发送给SDRAM控制器310。如果编码表明执行解密,则加密/解密引擎350将被控制为从闪存控制器320接受数据。一旦加密/解密引擎350从闪存控制器
320接受数据,其执行数据解密,发送结果至SDRAM控制器310并且等待SDRAM控制器310接受该数据。编码还将表明是否需要为了正在被转移到SDRAM的数据进行签名生成。如编码的SES[0:2]字段表明的,八个签名引擎340中的一个被控制为更新它的CRC/校验和签名值。签名生成总是对于解密数据进行的。因此签名引擎340被控制为在来自闪存控制器
320的数据或者来自加密/解密引擎350的解密结果之间进行选择,以更新数据完整性签名值。与正在从闪存控制器或者加密/解密引擎350被发送给SDRAM控制器310的数据并行的,数据还将被发送给选择的签名引擎340。一旦所选择的签名引擎340发现SDRAM控制器
310接受了数据,则利用该数据更新当前的CRC/校验和签名。最后,可以通过耦合383由软件选择和读取八个数据完整性签名中的一个的当前值。该值可以通过软件与从闪存恢复到SDRAM的备份签名比较。可以进行该步骤以检验在备份或者恢复数据的同时是否没有发生数据错误。
[0046] 图5示出了电源隔离和备份系统的框图。在图5中,隔离和备份系统500包括:集成电路510、电源控制部分550、SDRAM 525和非易失性存储器(例如闪存)535。集成电路(IC)510包括SDRAM子系统515、控制部分540、时钟发生器541及其他电路511。SDRAM子系统515包括SDRAM控制器520、非易失性存储器控制器530和数据操作部分570。其他电路512可以包括临时存储器512(例如,高速缓冲存储器、缓存器等等)。SDRAM控制器520通过接口521与SDRAM 525接口并且控制SDRAM 525。非易失性存储器控制器530通过接口531与非易失性存储器535接口并且控制非易失性存储器535。SDRAM子系统515(并且由此SDRAM控制器520、非易失性存储器控制器530和数据操作部分570)操作地耦合到控制部分540、时钟发生器541、其他电路511和临时存储器512。时钟发生器541操作地耦合到控制部分540及其他电路511。
[0047] 电源控制部分550向IC 510提供电源A(PWRA)560。电源控制部分550向SDRAM子系统515提供电源B(PWRB)561。电源控制部分550向SDRAM 525提供电源C(PWRC)562。电源控制部分550向非易失性存储器535提供电源D(PWRD)563。电源控制部分550向控制部分540提供电源故障信号565。电源控制部分550还通过信号566操作地耦合到SDRAM子系统。
[0048] 在一个实施例中,当电源控制部分550检测到电源故障状况(或者就要发生电源故障或者存在电源故障),电源控制部分550通过电源故障信号565通知IC 510该状况。这将启动电源隔离流程以将SDRAM子系统515从IC 510的其余部分——特别是其他电路
511隔离。在一个实施例中,整个电源隔离流程由硬件(例如,控制部分540、SDRAM子系统
515或者二者)控制,而没有来自软件的交互。
[0049] 在收到电源故障状况的通知时,连接到SDRAM子系统515的所有接口(例如对于其他电路511的接口)将被停止。将清空芯片上的临时存储器512。应当理解,尽管在图5中临时存储器512被示出在SDRAM子系统515之外,然而临时存储器512可以是SDRAM子系统515的一部分。在一个实例中,临时存储器512可以是高速缓存(例如第一级高速缓存、第二级高速缓存、第三级高速缓存)、置入缓存器等等。
[0050] 一旦已经清空了临时存储器512,则连接到SDRAM子系统515的逻辑表明何时已经停止了用于清空的接口。一旦停止,则这些接口不接受任何新的周期。一旦所有接口都被停止,则外部设备和内部核心逻辑(即,其他电路511)所需的输入被锁存,以使得它们的状态在发生隔离时不会丢失。在锁存输入之后不需要的时钟被断开。SDRAM子系统将切换到内部产生的时钟,或者切换到由与SDRAM子系统515共享电源的时钟发生器(例如,时钟发生器541)产生的时钟。此后,隔离SDRAM子系统515的对于存储器备份来说不需要的输入。在一个实施例中,这些输入被驱动至非活动状态。
[0051] 在完成输入隔离之后,SDRAM子系统515(或者控制部分540)发送信号通知(例如利用信号566)电源控制部分550以断开PWRA 560。这导致关闭至IC 510的除了SDRAM子系统515之外的所有(部件)的电源。SDRAM子系统515处于与至少其他电路511分离的电源层上。这允许保持至SDRAM子系统的电源(即,通过PWRB 561)直至至隔离和备份系统500的电源完全失去。
[0052] 除了控制至除了SDRAM子系统515(以及SDRAM子系统515需要的任何其他逻辑)之外的所有部件的电源的隔离和断开之外,一旦已经停止接口以及清空临时存储器512,内部存储器备份逻辑开始将数据从SDRAM 525移动到非易失性存储器535。在一个实施例中,一旦已经断开了PWRA,仅仅存在在整个芯片上运行的几个周期。
[0053] 在一个实施例中,在数据分别在SDRAM 525和非易失性存储器535之间来往移动时,数据操作部分570可以对数据进行操作。数据操作部分570被配置为以与先前参考图3A和3B的数据操作系统300所描述的相同方式的操作和发挥作用。因此,简而言之,数据操作部分570可以被配置为加密/解密数据和/或计算/校验数据完整性签名。在一个实施例中,在断开PWRA 560的同时,可以实现数据操作部分570的功能、数据流和配置(例如保存加密数据和/或计算和存储数据完整性签名)。在另一实施例中,在PWRA 560处于连接的同时,可以实现数据操作部分570的功能、数据流和配置(例如恢复加密数据和/或计算和存储数据完整性签名)。
[0054] 可以在计算机系统中实现上述的方法、系统和装置,或者可以被计算机系统存储。上述方法还可以被存储在计算机可读介质上。可以利用在现有技术中可用的计算机辅助设计工具实现此处描述的装置、电路和系统,并且通过包含上述电路的软件描述的计算机可读文件来实现它们。其包括但不限于隔离和备份系统100和500、IC 110和510、电源控制部分150和550、SDRAM子系统115和515以及它们的组件。这些软件描述可以是:行为的、寄存器传送、逻辑元件、晶体管和布局几何形状层次的描述。此外,软件描述可以被存储在存储介质上或者通过载波传送。
[0055] 可以实现上述描述的数据格式包括但不限于:支持行为语言例如C的格式、支持寄存器传送级(RTL)语言例如Verilog和VHDL的格式、支持几何形状描述语言(例如GDSII、GDSIII、GDSIV、CIF和MEBES)的格式,及其他适当的格式和语言。此外,可以在因特网或者例如通过电子邮件在各种介质上电子地完成机器可读介质上的上述文件的数据传送。注意,可以在机器可读介质上实现物理文件,例如:4mm磁带、8mm磁带、3-1/2英寸软介质、CD、DVD诸如此类。
[0056] 图6示出了计算机系统的框图。计算机系统600包括通信接口620、处理系统630、存储系统640和用户接口660。处理系统630操作地耦合到存储系统640。存储系统640存储软件650和数据670。处理系统630操作地耦合到通信接口620和用户接口660。计算机系统600可以包括编程的通用计算机。计算机系统600可以包括微处理器。计算机系统600可以包括可编程或者专用电路。计算机系统600可以分布在多个器件、处理器、存储器和/或接口(其共同包括部件620-670)上。
[0057] 通信接口620可以包括网络接口、调制解调器、端口、总线、链路、收发信机或者其他通信装置。通信接口620可以分布在多个通信装置上。处理系统630可以包括微处理器、微控制器、逻辑电路或者其他处理装置。处理系统630可以分布在多个处理装置上。用户接口660可以包括键盘、鼠标、语音识别接口、麦克风和扬声器、图形显示器、触摸屏或者其他类型的用户接口装置。用户接口660可以分布在多个接口装置上。存储系统640可以包括盘、磁带、集成电路、RAM、ROM、网络存储器、服务器或者其他存储功能。存储系统640可以是计算机可读介质。存储系统640可以分布在多个储存装置上。
[0058] 处理系统630从存储系统640取回并且执行软件650。处理系统可以取回和存储数据670。处理系统还可以通过通信接口620取回和储存数据。处理系统630可以创建或者改变软件650或者数据670以实现实体的结果。处理系统可以控制通信接口620或者用户接口660以实现实体的结果。处理系统可以通过通信接口620取回和执行远程存储的软件。
[0059] 软件650和远程存储的软件可以包括操作系统、有效组件、驱动器、连网软件及计算机系统通常执行的其他软件。软件650包括应用程序、Java的程序、固件或者计算机系统通常执行的其他形式的机器可读的处理指令。当由处理系统630执行时,软件650或者远程存储的软件可以指引计算机系统600如此处描述的那样操作。
[0060] 出于说明和描述的目的,已经给出了上述的本发明描述其不意味着穷举的或者意图将本发明限制到所公开的精确的形式,根据上述教导,其他改型和变化都是可能的。为了最佳地阐明它的发明和实际应用的原理并且为了能够使得它的领域普通技术人员理解具有适于所设想的特定使用的各种改型的各种实施例的公开,选择并且描述了实施例。除非被现有技术所限制,否则所附的权利要求书意图被视为包括本发明的实施例的其它选择。