專利名稱:存儲器備份期間的數(shù)據(jù)操作的制作方法
存儲器備份期間的數(shù)據(jù)操作相關(guān)申請的交叉引用本專利申請基于并且要求2010年12月20日由Peter B. Chon提交的、題為〃 Low Power Hardware Controlled Memory Backup that includes Encryption and Signature Generation"的美國臨時專利申請序號61/4 ,701的權(quán)益,由此對于其全部公開和教導(dǎo)的內(nèi)容,通過引用該申請而被具體地包括在此處。
背景技術(shù):
計算機或者其他電子系統(tǒng)的所有或者大部分組件可以被集成到單個集成電路 (芯片)中。芯片可以包含數(shù)字、模擬、混合信號和射頻功能的各種組合。這些集成電路可以被稱為芯片上系統(tǒng)(SoC或者S0C)。典型的應(yīng)用是嵌入式系統(tǒng)的領(lǐng)域。芯片上系統(tǒng)的ー 種變型是單個芯片上的多個RAID功能的集成。其可以被稱為芯片上RAID(ROC)??梢砸蕴峁┤哂嗪湾e誤恢復(fù)而沒有任何數(shù)據(jù)損失的方式配置RAID陣列。RAID陣列還可以被配置為通過允許向多個盤驅(qū)動器同時讀取或者寫入數(shù)據(jù)來增加讀取和寫入性能。RAID陣列還可以被配置為允許"熱交換",其允許在不中斷陣列的存儲服務(wù)的情況下替換故障的盤。來自Berkeley的California大學(xué)的David A. Patterson等人1987號公 JF、IS%" A Case for Redundant Arrays of Inexpensive Disks(RAID) " i寸ife了 RAIDg^ 術(shù)的基本概念和標(biāo)準(zhǔn)。RAID存儲系統(tǒng)通常利用控制器對用戶或者主機系統(tǒng)屏蔽管理存儲陣列的細節(jié)。控制器使得存儲陣列表現(xiàn)為ー個或更多個盤驅(qū)動器(或者卷)。這是已實現(xiàn)的,盡管對于特定卷的數(shù)據(jù)(或者冗余數(shù)據(jù))可能跨越多個盤驅(qū)動器。
發(fā)明內(nèi)容
本發(fā)明的一個實施例因此可以包括一種在易失性存儲器和非易失性存儲器之間傳送數(shù)據(jù)的方法,包括接收具有存儲器地址字段的指令數(shù)據(jù)塊,所述存儲器地址字段具有表明所述易失性存儲器中的位置的多個第一位和表明數(shù)據(jù)操作的多個第二位;基于所表明的數(shù)據(jù)操作,選擇用于將被發(fā)送給所述非易失性存儲器的數(shù)據(jù)的源;將數(shù)據(jù)從所述易失性存儲器傳送到所述源;從所述源接收操作的數(shù)據(jù);以及將所述操作的數(shù)據(jù)傳送到所述非易失性存儲器。本發(fā)明的一個實施例因此可以進ー步包括一種在非易失性存儲器和易失性存儲器之間傳送數(shù)據(jù)的方法,包括接收具有存儲器地址字段的指令數(shù)據(jù)塊,所述存儲器地址字段具有表明所述易失性存儲器中的位置的多個第一位和表明數(shù)據(jù)操作的多個第二位;基于所表明的數(shù)據(jù)操作,選擇用于將被發(fā)送給所述易失性存儲器的數(shù)據(jù)的源;將數(shù)據(jù)從所述非易失性存儲器傳送到所述源;從所述源接收操作的數(shù)據(jù);以及將所述操作的數(shù)據(jù)傳送到所述易失性存儲器。本發(fā)明的一個實施例因此可以進ー步包括ー種集成電路,包括數(shù)據(jù)操作控制器, 接收存儲器地址字段,所述存儲器地址字段具有表明易失性存儲器中的位置的多個第一位和表明數(shù)據(jù)操作的多個第二位,基于所表明的數(shù)據(jù)操作,所述數(shù)據(jù)操作控制器選擇用于將被發(fā)送給非易失性存儲器的數(shù)據(jù)的源;易失性存儲器控制器,耦合到易失性存儲器,所述易失性存儲器控制器促使數(shù)據(jù)從所述易失性存儲器傳送到所述源;非易失性存儲器,耦合到所述非易失性存儲器,所述非易失性存儲器控制器從所述源接收操作的數(shù)據(jù)并且將所述操作的數(shù)據(jù)傳送到所述非易失性存儲器。本發(fā)明的一個實施例因此可以進一步包括一種集成電路,包括數(shù)據(jù)操作控制器, 接收存儲器地址字段,所述存儲器地址字段具有表明易失性存儲器中的位置的多個第一位和表明數(shù)據(jù)操作的多個第二位,基于所表明的數(shù)據(jù)操作,所述數(shù)據(jù)操作控制器選擇用于將被發(fā)送給所述易失性存儲器的數(shù)據(jù)的源;非易失性存儲器控制器,耦合到非易失性存儲器, 所述非易失性存儲器控制器促進數(shù)據(jù)從所述非易失性存儲器傳送到所述源;易失性存儲器控制器,耦合到所述易失性存儲器,所述易失性存儲器控制器從所述源接收操作的數(shù)據(jù)并且將所述操作的數(shù)據(jù)傳送到所述易失性存儲器。
圖1示出了電源隔離和備份系統(tǒng)的框圖。圖2示出了電源隔離的方法的流程圖。圖3A和IBB示出了數(shù)據(jù)操作系統(tǒng)配置的框圖。圖4示出了指令數(shù)據(jù)塊(⑶B)的圖示。圖5示出了電源隔離和備份系統(tǒng)的框圖。圖6示出了計算機系統(tǒng)的框圖。
具體實施例方式圖1示出了電源隔離和備份系統(tǒng)的框圖。在圖1中,隔離和備份系統(tǒng)100包括 集成電路110、電源控制部分150、SDRAM 125和非易失性存儲器(例如閃存)135。集成電路(IC) 110包括SDRAM子系統(tǒng)115、控制部分140、時鐘發(fā)生器141及其他電路111。SDRAM 子系統(tǒng)115包括SDRAM控制器120和非易失性存儲器控制器130。其他電路112可以包括臨時存儲器112(例如,高速緩沖存儲器、緩存器等等)。SDRAM控制器120通過接口 121與 SDRAM 125接口并控制SDRAM 125。非易失性存儲器控制器130通過接口 131與非易失性存儲器135接口并且控制非易失性存儲器135。SDRAM子系統(tǒng)115 (以及由此SDRAM控制器 120和非易失性存儲器控制器130)操作地耦合到控制部分140、時鐘發(fā)生器141、其他電路 111和臨時存儲器112。時鐘發(fā)生器141操作地耦合到控制部分140及其他電路111。電源控制部分150向IC 110提供電源A(PWRA) 160。電源控制部分150向SDRAM 子系統(tǒng)115提供電源B(PWRB) 161。電源控制部分150向SDRAM 125提供電源C(PWRC) 162。 電源控制部分150向非易失性存儲器135提供電源D (PWRD) 163。電源控制部分150向控制部分140提供電源故障信號165。電源控制部分150還通過信號166操作地耦合到SDRAM 子系統(tǒng)。應(yīng)當(dāng)理解,如在本申請中使用的,SDRAM(同步動態(tài)隨機存取存儲器)意圖包括所有的易失性存儲器技術(shù)。由此,在一個實施例中,SDRAM子系統(tǒng)115可以包括靜態(tài)隨機存取存儲器(SRAM)控制器,以及SDRAM 125可以包括SRAM裝置。
在一個實施例中,當(dāng)電源控制部分150檢測到電源故障狀況(或者就要發(fā)生電源故障或者存在電源故障),電源控制部分150通過電源故障信號165通知IC 110該狀況。 這將啟動電源隔離流程以將SDRAM子系統(tǒng)115從IC 110的其余部分——特別是其他電路 111隔離。在一個實施例中,全部電源隔離流程由硬件(例如,控制部分140、SDRAM子系統(tǒng) 115或者二者)控制,而沒有來自軟件的交互。在收到電源故障狀況的通知時,連接到SDRAM子系統(tǒng)115的所有接口(例如對于其他電路111的接口)將被停止。將清空芯片上的臨時存儲器112。應(yīng)當(dāng)理解,盡管在圖1 中臨時存儲器112被示出在SDRAM子系統(tǒng)115之外,然而臨時存儲器112可以是SDRAM子系統(tǒng)115的一部分。在一個實例中,臨時存儲器112可以是高速緩存(例如第一級高速緩存、第二級高速緩存、第三級高速緩存)、置入緩存器(posting buffer)等等。一旦已經(jīng)清空了臨時存儲器112,則連接到SDRAM子系統(tǒng)115的邏輯表明何時已經(jīng)停止了用于清空的接口。一旦停止,則這些接口不接受任何新的周期。一旦所有接口都被停止,則外部設(shè)備和內(nèi)部核心邏輯(即,其他電路111)所需的輸入被鎖存,由此使得它們的狀態(tài)在發(fā)生隔離時不會丟失。在鎖存了輸入之后不需要的時鐘被斷開。SDRAM子系統(tǒng)將切換到內(nèi)部產(chǎn)生的時鐘,或者切換到由與SDRAM子系統(tǒng)115共享電源的時鐘發(fā)生器(例如,時鐘發(fā)生器141)產(chǎn)生的時鐘。此后,對于存儲器備份來說不需要的SDRAM子系統(tǒng)115的輸入被隔離。在一個實施例中,這些輸入被驅(qū)動至非活動狀態(tài)。在完成輸入的隔離之后,SDRAM子系統(tǒng)115(或者控制部分140)發(fā)送信號通知(例如,利用信號166)電源控制部分150以斷開PWRA 160。這導(dǎo)致斷開對于除了 SDRAM子系統(tǒng) 115之外的ICllO的所有(部件)的電源。SDRAM子系統(tǒng)115處于與至少其他電路111分離的電源層上。這允許保持對SDRAM子系統(tǒng)的電源(即,通過PWRB 161)直到對隔離和備份系統(tǒng)100的電源完全失去。在對除了 SDRAM子系統(tǒng)115 (以及SDRAM子系統(tǒng)115需要的任何其他邏輯)之外的所有部分的電源的隔離和斷開進行控制之外,一旦已經(jīng)停止接口以及清空了臨時存儲器 112,內(nèi)部存儲器備份邏輯開始將數(shù)據(jù)從SDRAM 125移動到非易失性存儲器135。在一個實施例中,一旦已經(jīng)斷開了 PWRA,僅僅存在在整個芯片上運行的幾個周期。圖1示出了 IC 110芯片和外部邏輯之間的連接以及可以用于電源隔離和隨后存儲器備份的一些內(nèi)部連接。當(dāng)電源控制部分150檢測到電源故障,其通過電源故障信號165 通知IC 110??刂撇糠?40監(jiān)測電源故障信號165。當(dāng)控制部分140發(fā)現(xiàn)電源故障信號 165被斷言,以及能夠完成電源隔離時,控制部分140通過斷言p0Wer_iS0_begin信號(在圖1中沒有明確示出)來通知SDRAM子系統(tǒng)115開始隔離流程。SDRAM子系統(tǒng)115隨后執(zhí)行電源隔離流程所需的步驟。稍后將在本說明書中更詳細地闡述包括在電源隔離流程中的步驟。一旦已經(jīng)完成了電源隔離流程,MSS_core_iso_ready信號(在圖1中未明確示出)被斷言以表明至少可以斷開PWRA 160。電源控制部分150禁止PWRA 160,但是將保持 PffRB 161、PWRC 162、和PWRD 163被使能。禁止PWRA 160將電源從IC 110的除了連接到 PWRB 161的電路之外的部分?jǐn)嚅_。SDRAM子系統(tǒng)115以及相關(guān)的鎖相環(huán)(例如,時鐘發(fā)生器141內(nèi)部的)和10(例如接口 121和131)處于與IC 110的其余部分不同的電源層上。 該層由PWRB161供電,并且將保持使能。在一個實例中,至少一部分電路位于該分離的電源
6層上的功能塊是控制部分140、時鐘發(fā)生器141和SDRAM子系統(tǒng)115。在一個實施例中,外部SDRAM 125保持由PWRC 162供電,以及外部非易失性存儲器保持由PWRD 163供電。這是必須保持被供電以便執(zhí)行存儲器備份的邏輯的減小數(shù)量。在電源隔離流程期間,SDRAM子系統(tǒng)115在適當(dāng)?shù)臅r間開始SDRAM 125的存儲器備份。該備份將需要(或者請求)的數(shù)據(jù)從SDRAM 125移動到非易失性存儲器135。在一個實施例中,在沒有軟件介入的情況下執(zhí)行全部存儲器備份。應(yīng)當(dāng)理解,用于提供電源160-163的上述和部分地通過圖1示出的方法是向隔離和備份系統(tǒng)100的一個或更多個組件提供(和斷開)電源的示例性方法。在所示的實例中,所有電源160-163和各種電源域/層的控制在IC 110外部完成。然而,存在向隔離和備份系統(tǒng)100的一個或更多個組件提供(和斷開)電源的其他方法。一種方法可以為每個電壓使用一個外部電源,并隨后利用IC 110內(nèi)部的開關(guān)形成不同的電源域/層。另一種方法可以減小外部電壓的數(shù)目,并且使用隔離和備份系統(tǒng)100(例如,IC 110)的一個或更多個組件內(nèi)部的調(diào)節(jié)器以得到各種電壓,以及使用IC 110內(nèi)部的開關(guān)以控制不同的電源域/ 層。利用這些方法,以大致相同的方式完成了電源隔離。差異在于,需要通知以保持電源 161-163使能的電源控制邏輯150可以位于內(nèi)部或者外部。圖2示出了電源隔離的方法的流程圖。圖2中示出的各步驟可以由隔離和備份系統(tǒng)100的一個或更多個部件執(zhí)行。為第一芯片上子系統(tǒng)接收電源002)。例如,可以由IC 100接收為其他電路111供電的PWRA 160。接收電源故障狀況的指示符004)。例如,可以由IC 110接收電源故障信號165。這可以導(dǎo)致在p0Wer_iS0_begin信號被斷言時開始電源隔離流程。停止對SDRAM子系統(tǒng)的接口(206)。臨時存儲被清空到SDRAM(208)。例如,可以清空第三級高速緩存、第二級高速緩存、置入緩存器或者用于臨時存儲去往/來自SDRAM 125 的數(shù)據(jù)拷貝的任何其他類型的存儲裝置。連接到各個接口的邏輯在它們已經(jīng)完成所有未完成的周期并且已經(jīng)停止接受任何新的周期時可以返回停止指示。在硬件控制下,芯片上SDRAM子系統(tǒng)被隔離(210)。例如,當(dāng)SDRAM接口(或者臨時存儲器112)已經(jīng)表明它已經(jīng)停止接受周期,則通過將其設(shè)置為非活動狀態(tài)而隔離它的輸入。一旦接收到來自其他接口的停止,需要為外部核心裝置和內(nèi)部邏輯保存的輸入被鎖存。這些輸入包括諸如復(fù)位、用于PLL的信號和母線輸入等。此時,可以斷開SDRAM子系統(tǒng)不再需要的任何時鐘,以便幫助減小功耗。一段時間之后,可以斷言信號(例如,MSS_C0re_ iS0_enable),這表明隔離SDRAM子系統(tǒng)的所有輸入并且將其設(shè)置為非活動狀態(tài)。第一芯片上子系統(tǒng)使用的時鐘和電源被斷開(212)。例如,去往臨時存儲器112的時鐘可以被切換到內(nèi)部產(chǎn)生的時鐘。一旦已經(jīng)隔離了輸入,可以斷言例如MSS_COre_iSO_ ready的信號。這例如向電源控制邏輯150表明,現(xiàn)在可以禁止連接到IC 110的PWRA 160。產(chǎn)生SDRAM子系統(tǒng)使用的時鐘014)。例如,時鐘發(fā)生器141可以產(chǎn)生SDRAM子系統(tǒng)使用的時鐘以在斷開PWRA 160時使用。數(shù)據(jù)從SDRAM被拷貝到非易失性存儲器016)。 例如,可以通過斷言例如flaSh_0ffl0ad_begin的信號來啟動從SDRAM 125到非易失性存儲器135的存儲器備份。從SDRAM子系統(tǒng)、SDRAM和非易失性存儲器斷開電源018)。例如,在完成存儲器備份時在電源控制部分150的控制下,或者僅僅由于整個隔離和備份系統(tǒng)100的電源已經(jīng)故障,從SDRAM子系統(tǒng)115、SDRAM 125和非易失性存儲器135斷開電源。
在備份期間隔離SDRAM子系統(tǒng)115的電源的優(yōu)點是減小了消耗的功率量。僅僅對處理存儲器備份的IC 110的內(nèi)部邏輯、外部SDRAM 125和非易失性存儲器135供電。通過降低功耗,在消耗完所有剰余的功率之前,可用于執(zhí)行存儲器備份的時間量増加了。除了更少的在完成備份之前保持電源所需的外部邏輯之外,擁有更多時間使得可以備份更多的存儲器。由于正在進行電源隔離,可能有利的是將閃存控制器移動至內(nèi)部以降低功耗和減少進行存儲器備份所需的總體系統(tǒng)成本。在一個實施例中,隨著SDRAM 125中的數(shù)據(jù)被移到非易失性存儲器135,通過執(zhí)行加密和/或數(shù)據(jù)完整性簽名計算為備份的數(shù)據(jù)提供額外的數(shù)據(jù)保護。數(shù)據(jù)加密提供了安全存儲數(shù)據(jù)的方法。數(shù)據(jù)完整性簽名計算防止了絕大部分可能發(fā)生的數(shù)據(jù)錯誤。在需要存儲器備份或者恢復(fù)吋,SDRAM子系統(tǒng)115在SDRAM125和非易失性存儲器 135之間移動數(shù)據(jù)。SDRAM子系統(tǒng)115可以使用一系列CDB(指令描述符塊)用于表明請求的數(shù)據(jù)移動。這些⑶B的格式通常是預(yù)先定義的。⑶B中的一個字段是存儲器地址字段, 其表明在SDRAM 125中讀取或者寫入數(shù)據(jù)的位置。在一個實施例中,在該字段中提供的地址位的數(shù)目超過了尋址所有SDRAM 125所需的數(shù)目。ー些不需要的地址位可以被用于對如下信息進行編碼,所述信息是關(guān)于在數(shù)據(jù)被移動至SDRAM 125/從SDRAM 125移動數(shù)據(jù)的同時應(yīng)當(dāng)如何操作數(shù)據(jù)的信息。在執(zhí)行存儲器備份或者恢復(fù)時或者在其他時候可以進行該移動。未使用的地址位的編碼可以表明數(shù)據(jù)是否應(yīng)當(dāng)被加密/解密、是否需要生成簽名、是否應(yīng)當(dāng)卸載或者重置簽名以及應(yīng)當(dāng)使用哪ー個簽名引擎。當(dāng)接收到來自非易失性存儲器控制器130的請求對SDRAM 125進行讀/寫吋,隨著數(shù)據(jù)通過SDRAM子系統(tǒng)115在SDRAM 125和非易失性存儲器135之間移動,可以解析上述未使用的地址位以確定執(zhí)行什么樣的數(shù)據(jù)操作。在一個實施例中,圖3A和加示出了數(shù)據(jù)操作系統(tǒng)配置的框圖。在圖3A中,數(shù)據(jù)操作系統(tǒng)300包括SDRAM控制器310、閃存控制器320、控制部分330、簽名引擎340、加密/ 解密引擎350和多路復(fù)用器(MUX) 360??刂撇糠?30操作地耦合到SDRAM控制器310、閃存控制器320、簽名引擎340和加密/解密引擎350和MUX 360。由此,控制部分330可以從閃存控制器320接收指令、信號、CDB等,執(zhí)行判優(yōu),以及另行管理數(shù)據(jù)操作系統(tǒng)300的配置和數(shù)據(jù)流。在圖3A中,通過耦合371,SDRAM 310被配置為將從SDRAM (在圖3A中未示出)讀取的數(shù)據(jù)發(fā)送至簽名引擎;340、加密/解密引擎350和MUX 360的第一輸入。加密/解密引擎350被配置為通過耦合372將加密的數(shù)據(jù)發(fā)送至MUX 360的第二輸入。簽名引擎340 被配置為通過耦合373將數(shù)據(jù)完整性簽名發(fā)送至MUX 360的第三輸入??刂撇糠?30控制 MUX以將從SDRAM讀取的未改變的數(shù)據(jù)、加密的數(shù)據(jù)或者數(shù)據(jù)完整性簽名中的一個發(fā)送至閃存控制器320。閃存控制器320可以將從SDRAM讀取的未改變的數(shù)據(jù)、加密的數(shù)據(jù)或者數(shù)據(jù)完整性簽名存儲在閃存中(在圖3A中未示出)。圖3A示出了當(dāng)控制部分330從閃存控制器320接收到從SDRAM(例如,SDRAM 125) 讀取的請求時的控制和數(shù)據(jù)流的配置。在一個實施例中,當(dāng)需要SDRAM存儲器的備份時使用該配置和數(shù)據(jù)流。在一個實施例中,簽名引擎340和加密/解密引擎350被用于讀取和寫入請求二者。圖3A中示出了用于閃存寫入請求(對應(yīng)于SDRAM讀取)的數(shù)據(jù)連接和數(shù)據(jù)流。圖3B中示出了用于閃存讀取請求(對應(yīng)于SDRAM寫入)的數(shù)據(jù)連接。
閃存控制器320發(fā)送讀取請求至控制部分330。控制部分330檢查所述請求的編碼地址線(或者專用字段)以確定從何處路由從SDRAM控制器310返回的讀取數(shù)據(jù)以及需要什么樣的數(shù)據(jù)操作(如果有的話)。在一個實施例中,地址位[46:40]包含如下的編碼和映射位40-42 (SES
)指定了 8個簽名引擎340中的哪些應(yīng)該采取由編碼的其他位指定的動作(如果有的話);位43(SG)確定所指定的簽名引擎是否應(yīng)該利用讀取數(shù)據(jù)作為輸入產(chǎn)生數(shù)據(jù)完整性簽名;位44(S0)告知指定的簽名引擎以輸出數(shù)據(jù)完整性簽名(這取決于 MUX 360的狀態(tài),其可以被發(fā)送給閃存控制器320用于存儲);位45(SR)重置指定的簽名引擎的數(shù)據(jù)完整性簽名;以及位46(E/D)確定來自加密/解密引擎350的輸出的加密數(shù)據(jù)是否應(yīng)當(dāng)被發(fā)送給閃存控制器320。圖4示出了指令數(shù)據(jù)塊(⑶B)的圖示。在圖4中,示出了用于地址位0-46的地址字段。還示出了指定使用的SDRAM地址位的SDRAM地址位中的字段(AW:39]),以及編碼地址位的字段(AW0:46])。還示出了編碼地址位的各個位字段(SESW:2]、SG、SO、SR和E/ D)。可以理解,基于地址位40-46的編碼,指示將被發(fā)送給MUX360,導(dǎo)致閃存控制器 320使用三個不同源中的一個。數(shù)據(jù)將直接來自SDRAM控制器310、加密/解密引擎350,或者是否從其中一個簽名引擎340卸載簽名。如果編碼表明執(zhí)行加密,則控制部分330將控制加密/解密引擎350以從SDRAM控制器310接收讀取數(shù)據(jù)。一旦加密/解密引擎350從 SDRAM控制器310收到數(shù)據(jù),則其執(zhí)行數(shù)據(jù)加密,發(fā)送結(jié)果至MUX 360用于路由至閃存控制器320并且等待它接受該數(shù)據(jù)。編碼還表明是否應(yīng)當(dāng)對正在被轉(zhuǎn)移到閃存的數(shù)據(jù)進行簽名生成。如編碼的簽名引擎選擇(SESW:2])字段表明的,八個簽名引擎340中的一個將通知應(yīng)當(dāng)更新它的CRC/校驗和簽名值。與正在被直接發(fā)送至閃存控制器320或者加密/解密引擎350的數(shù)據(jù)并行地, 數(shù)據(jù)還被至少發(fā)送給指定的簽名引擎340。一旦所選擇的簽名引擎340發(fā)現(xiàn)那些塊中的任何一個接受了 SDRAM數(shù)據(jù),則利用該數(shù)據(jù)更新當(dāng)前的CRC/校驗和簽名。最后,編碼表明是否應(yīng)當(dāng)輸出簽名卸載。如果需要簽名卸載,控制部分330將不會發(fā)布讀取命令至SDRAM控制器310。作為替代,控制部分330將命令所選擇的簽名引擎340發(fā)送數(shù)據(jù)完整性簽名數(shù)據(jù)至閃存控制器320。在圖;3B中,通過耦合381,控制器320被配置為將從閃存(在圖中未示出)讀取的數(shù)據(jù)發(fā)送至簽名引擎;340、加密/解密引擎350和MUX 361的第一輸入。加密/解密引擎350被配置為通過耦合382將加密的數(shù)據(jù)發(fā)送至MUX 361的第二輸入。簽名引擎340 被配置為通過耦合383表明選擇的數(shù)據(jù)完整性簽名的當(dāng)前值??刂撇糠?30控制MUX 361 以將從閃存(通過閃存控制器320)讀取的未改變的數(shù)據(jù)或者解密的數(shù)據(jù)中的一個發(fā)送至 SDRAM控制器310。SDRAM控制器310可以將從閃存讀取的未改變的數(shù)據(jù)或者解密的數(shù)據(jù)存儲在SDRAM(在圖;3B中未示出)中。圖:3B中示出了用于閃存讀取請求(對應(yīng)于SDRAM寫入)的數(shù)據(jù)連接。在一個實施例中,當(dāng)需要將數(shù)據(jù)恢復(fù)回到SDRAM存儲器時使用該流??刂撇糠?30可以從閃存控制器320接收寫指令??刂撇糠?30可以發(fā)布寫入請求至SDRAM控制器310。檢查請求的編碼地址線以確定從何處路由正在(從閃存控制器320)發(fā)送給SDRAM控制器的寫入數(shù)據(jù)以及需要什么樣的數(shù)據(jù)操作(如果有的話)。可以使用與圖3A的討論中的描述相同的編碼?;谠摼幋a,來自閃存控制器320的未改變的數(shù)據(jù)或者來自加密/解密引擎350的解密的數(shù)據(jù)將由MUX 361選擇發(fā)送給SDRAM控制器310。如果編碼表明執(zhí)行解密,則加密/解密引擎350將被控制為從閃存控制器320接受數(shù)據(jù)。一旦加密/解密引擎350從閃存控制器 320接受數(shù)據(jù),其執(zhí)行數(shù)據(jù)解密,發(fā)送結(jié)果至SDRAM控制器310并且等待SDRAM控制器310 接受該數(shù)據(jù)。編碼還將表明是否需要為了正在被轉(zhuǎn)移到SDRAM的數(shù)據(jù)進行簽名生成。如編碼的SES
字段表明的,八個簽名引擎340中的ー個被控制為更新它的CRC/校驗和簽名值。簽名生成總是對于解密數(shù)據(jù)進行的。因此簽名引擎340被控制為在來自閃存控制器 320的數(shù)據(jù)或者來自加密/解密引擎350的解密結(jié)果之間進行選擇,以更新數(shù)據(jù)完整性簽名值。與正在從閃存控制器或者加密/解密引擎350被發(fā)送給SDRAM控制器310的數(shù)據(jù)并行的,數(shù)據(jù)還將被發(fā)送給選擇的簽名引擎340。一旦所選擇的簽名引擎340發(fā)現(xiàn)SDRAM控制器 310接受了數(shù)據(jù),則利用該數(shù)據(jù)更新當(dāng)前的CRC/校驗和簽名。最后,可以通過耦合383由軟件選擇和讀取八個數(shù)據(jù)完整性簽名中的一個的當(dāng)前值。該值可以通過軟件與從閃存恢復(fù)到 SDRAM的備份簽名比較??梢赃M行該步驟以檢驗在備份或者恢復(fù)數(shù)據(jù)的同時是否沒有發(fā)生數(shù)據(jù)錯誤。圖5示出了電源隔離和備份系統(tǒng)的框圖。在圖5中,隔離和備份系統(tǒng)500包括集成電路510、電源控制部分550、SDRAM 525和非易失性存儲器(例如閃存)535。集成電路 (IC) 510包括SDRAM子系統(tǒng)515、控制部分M0、時鐘發(fā)生器541及其他電路511。SDRAM子系統(tǒng)515包括SDRAM控制器520、非易失性存儲器控制器530和數(shù)據(jù)操作部分570。其他電路512可以包括臨時存儲器512 (例如,高速緩沖存儲器、緩存器等等)。SDRAM控制器520 通過接ロ 521與SDRAM 525接ロ并且控制SDRAM 525。非易失性存儲器控制器530通過接 ロ 531與非易失性存儲器535接ロ并且控制非易失性存儲器535。SDRAM子系統(tǒng)515 (并且由此SDRAM控制器520、非易失性存儲器控制器530和數(shù)據(jù)操作部分570)操作地耦合到控制部分M0、時鐘發(fā)生器Ml、其他電路511和臨時存儲器512。時鐘發(fā)生器541操作地耦合到控制部分540及其他電路511。電源控制部分550向IC 510提供電源A (PWRA) 560。電源控制部分550向SDRAM 子系統(tǒng)515提供電源B (PWRB) 561。電源控制部分550向SDRAM 525提供電源C(PWRC) 562。 電源控制部分550向非易失性存儲器535提供電源D(PWRD)563。電源控制部分550向控制部分540提供電源故障信號565。電源控制部分550還通過信號566操作地耦合到SDRAM 子系統(tǒng)。在一個實施例中,當(dāng)電源控制部分550檢測到電源故障狀況(或者就要發(fā)生電源故障或者存在電源故障),電源控制部分550通過電源故障信號565通知IC 510該狀況。 這將啟動電源隔離流程以將SDRAM子系統(tǒng)515從IC 510的其余部分——特別是其他電路 511隔離。在一個實施例中,整個電源隔離流程由硬件(例如,控制部分M0、SDRAM子系統(tǒng) 515或者二者)控制,而沒有來自軟件的交互。在收到電源故障狀況的通知時,連接到SDRAM子系統(tǒng)515的所有接ロ(例如對于其他電路511的接ロ)將被停止。將清空芯片上的臨時存儲器512。應(yīng)當(dāng)理解,盡管在圖5 中臨時存儲器512被示出在SDRAM子系統(tǒng)515之外,然而臨時存儲器512可以是SDRAM子系統(tǒng)515的一部分。在一個實例中,臨時存儲器512可以是高速緩存(例如第一級高速緩存、第二級高速緩存、第三級高速緩存)、置入緩存器等等。
一旦已經(jīng)清空了臨時存儲器512,則連接到SDRAM子系統(tǒng)515的邏輯表明何時已經(jīng)停止了用于清空的接口。一旦停止,則這些接口不接受任何新的周期。一旦所有接口都被停止,則外部設(shè)備和內(nèi)部核心邏輯(即,其他電路511)所需的輸入被鎖存,以使得它們的狀態(tài)在發(fā)生隔離時不會丟失。在鎖存輸入之后不需要的時鐘被斷開。SDRAM子系統(tǒng)將切換到內(nèi)部產(chǎn)生的時鐘,或者切換到由與SDRAM子系統(tǒng)515共享電源的時鐘發(fā)生器(例如,時鐘發(fā)生器Ml)產(chǎn)生的時鐘。此后,隔離SDRAM子系統(tǒng)515的對于存儲器備份來說不需要的輸入。在一個實施例中,這些輸入被驅(qū)動至非活動狀態(tài)。在完成輸入隔離之后,SDRAM子系統(tǒng)515(或者控制部分M0)發(fā)送信號通知(例如利用信號566)電源控制部分550以斷開PWRA 560。這導(dǎo)致關(guān)閉至IC 510的除了 SDRAM 子系統(tǒng)515之外的所有(部件)的電源。SDRAM子系統(tǒng)515處于與至少其他電路511分離的電源層上。這允許保持至SDRAM子系統(tǒng)的電源(即,通過PWRB 561)直至至隔離和備份系統(tǒng)500的電源完全失去。除了控制至除了 SDRAM子系統(tǒng)515(以及SDRAM子系統(tǒng)515需要的任何其他邏輯) 之外的所有部件的電源的隔離和斷開之外,一旦已經(jīng)停止接口以及清空臨時存儲器512,內(nèi)部存儲器備份邏輯開始將數(shù)據(jù)從SDRAM 525移動到非易失性存儲器535。在一個實施例中, 一旦已經(jīng)斷開了 PWRA,僅僅存在在整個芯片上運行的幾個周期。在一個實施例中,在數(shù)據(jù)分別在SDRAM 525和非易失性存儲器535之間來往移動時,數(shù)據(jù)操作部分570可以對數(shù)據(jù)進行操作。數(shù)據(jù)操作部分570被配置為以與先前參考圖 3A和;3B的數(shù)據(jù)操作系統(tǒng)300所描述的相同方式的操作和發(fā)揮作用。因此,簡而言之,數(shù)據(jù)操作部分570可以被配置為加密/解密數(shù)據(jù)和/或計算/校驗數(shù)據(jù)完整性簽名。在一個實施例中,在斷開PWRA 560的同時,可以實現(xiàn)數(shù)據(jù)操作部分570的功能、數(shù)據(jù)流和配置(例如保存加密數(shù)據(jù)和/或計算和存儲數(shù)據(jù)完整性簽名)。在另一實施例中,在PWRA 560處于連接的同時,可以實現(xiàn)數(shù)據(jù)操作部分570的功能、數(shù)據(jù)流和配置(例如恢復(fù)加密數(shù)據(jù)和/或計算和存儲數(shù)據(jù)完整性簽名)。可以在計算機系統(tǒng)中實現(xiàn)上述的方法、系統(tǒng)和裝置,或者可以被計算機系統(tǒng)存儲。 上述方法還可以被存儲在計算機可讀介質(zhì)上??梢岳迷诂F(xiàn)有技術(shù)中可用的計算機輔助設(shè)計工具實現(xiàn)此處描述的裝置、電路和系統(tǒng),并且通過包含上述電路的軟件描述的計算機可讀文件來實現(xiàn)它們。其包括但不限于隔離和備份系統(tǒng)100和500、IC 110和510、電源控制部分150和550、SDRAM子系統(tǒng)115和515以及它們的組件。這些軟件描述可以是行為的、 寄存器傳送、邏輯元件、晶體管和布局幾何形狀層次的描述。此外,軟件描述可以被存儲在存儲介質(zhì)上或者通過載波傳送??梢詫崿F(xiàn)上述描述的數(shù)據(jù)格式包括但不限于支持行為語言例如C的格式、支持寄存器傳送級(RTL)語言例如Verilog和VHDL的格式、支持幾何形狀描述語言(例如 ⑶SII、⑶SIII、⑶SIV、CIF和MEBES)的格式,及其他適當(dāng)?shù)母袷胶驼Z言。此外,可以在因特網(wǎng)或者例如通過電子郵件在各種介質(zhì)上電子地完成機器可讀介質(zhì)上的上述文件的數(shù)據(jù)傳送。注意,可以在機器可讀介質(zhì)上實現(xiàn)物理文件,例如4mm磁帶、8mm磁帶、3-1/2英寸軟介質(zhì)、⑶、DVD諸如此類。圖6示出了計算機系統(tǒng)的框圖。計算機系統(tǒng)600包括通信接口 620、處理系統(tǒng)630、 存儲系統(tǒng)640和用戶接口 660。處理系統(tǒng)630操作地耦合到存儲系統(tǒng)640。存儲系統(tǒng)640存儲軟件650和數(shù)據(jù)670。處理系統(tǒng)630操作地耦合到通信接ロ 620和用戶接ロ 660。計算機系統(tǒng)600可以包括編程的通用計算機。計算機系統(tǒng)600可以包括微處理器。計算機系統(tǒng)600可以包括可編程或者專用電路。計算機系統(tǒng)600可以分布在多個器件、處理器、存儲器和/或接ロ(其共同包括部件620-670)上。通信接ロ 620可以包括網(wǎng)絡(luò)接ロ、調(diào)制解調(diào)器、端ロ、總線、鏈路、收發(fā)信機或者其他通信裝置。通信接ロ 620可以分布在多個通信裝置上。處理系統(tǒng)630可以包括微處理器、 微控制器、邏輯電路或者其他處理裝置。處理系統(tǒng)630可以分布在多個處理裝置上。用戶接ロ 660可以包括鍵盤、鼠標(biāo)、語音識別接ロ、麥克風(fēng)和揚聲器、圖形顯示器、觸摸屏或者其他類型的用戶接口裝置。用戶接ロ 660可以分布在多個接口裝置上。存儲系統(tǒng)640可以包括盤、磁帶、集成電路、RAM、R0M、網(wǎng)絡(luò)存儲器、服務(wù)器或者其他存儲功能。存儲系統(tǒng)640可以是計算機可讀介質(zhì)。存儲系統(tǒng)640可以分布在多個儲存裝置上。處理系統(tǒng)630從存儲系統(tǒng)640取回并且執(zhí)行軟件650。處理系統(tǒng)可以取回和存儲數(shù)據(jù)670。處理系統(tǒng)還可以通過通信接ロ 620取回和儲存數(shù)據(jù)。處理系統(tǒng)630可以創(chuàng)建或者改變軟件650或者數(shù)據(jù)670以實現(xiàn)實體的結(jié)果。處理系統(tǒng)可以控制通信接ロ 620或者用戶接ロ 660以實現(xiàn)實體的結(jié)果。處理系統(tǒng)可以通過通信接ロ 620取回和執(zhí)行遠程存儲的軟件。軟件650和遠程存儲的軟件可以包括操作系統(tǒng)、有效組件、驅(qū)動器、連網(wǎng)軟件及計算機系統(tǒng)通常執(zhí)行的其他軟件。軟件650包括應(yīng)用程序、Java的程序、固件或者計算機系統(tǒng)通常執(zhí)行的其他形式的機器可讀的處理指令。當(dāng)由處理系統(tǒng)630執(zhí)行時,軟件650或者遠程存儲的軟件可以指引計算機系統(tǒng)600如此處描述的那樣操作。出于說明和描述的目的,已經(jīng)給出了上述的本發(fā)明描述其不意味著窮舉的或者意圖將本發(fā)明限制到所公開的精確的形式,根據(jù)上述教導(dǎo),其他改型和變化都是可能的。為了最佳地闡明它的發(fā)明和實際應(yīng)用的原理并且為了能夠使得它的領(lǐng)域普通技術(shù)人員理解具有適于所設(shè)想的特定使用的各種改型的各種實施例的公開,選擇并且描述了實施例。除非被現(xiàn)有技術(shù)所限制,否則所附的權(quán)利要求書意圖被視為包括本發(fā)明的實施例的其它選擇。
權(quán)利要求
1.一種在易失性存儲器和非易失性存儲器之間傳送數(shù)據(jù)的方法,包括接收具有存儲器地址字段的指令數(shù)據(jù)塊,所述存儲器地址字段具有表明所述易失性存儲器中的位置的多個第一位和表明數(shù)據(jù)操作的多個第二位;基于所表明的數(shù)據(jù)操作,選擇用于將被發(fā)送給所述非易失性存儲器的數(shù)據(jù)的源; 將數(shù)據(jù)從所述易失性存儲器傳送到所述源; 從所述源接收操作的數(shù)據(jù);以及將所述操作的數(shù)據(jù)傳送到所述非易失性存儲器。
2.如權(quán)利要求1所述的方法,其中所述源是數(shù)據(jù)加密引擎。
3.如權(quán)利要求1所述的方法,其中所述源是簽名引擎。
4.如權(quán)利要求3所述的方法,其中所述多個第二位表明所述簽名引擎將發(fā)送數(shù)據(jù)完整性簽名。
5.如權(quán)利要求1所述的方法,其中所述源能夠是多個簽名引擎中的一個,以及所述多個第二位表明所述多個簽名引擎中將成為所述源的一個。
6.一種在非易失性存儲器和易失性存儲器之間傳送數(shù)據(jù)的方法,包括接收具有存儲器地址字段的指令數(shù)據(jù)塊,所述存儲器地址字段具有表明所述易失性存儲器中的位置的多個第一位和表明數(shù)據(jù)操作的多個第二位;基于所表明的數(shù)據(jù)操作,選擇用于將被發(fā)送給所述易失性存儲器的數(shù)據(jù)的源; 將數(shù)據(jù)從所述非易失性存儲器傳送到所述源; 從所述源接收操作的數(shù)據(jù);以及將所述操作的數(shù)據(jù)傳送到所述易失性存儲器。
7.如權(quán)利要求6所述的方法,其中所述源是數(shù)據(jù)解密引擎。
8.如權(quán)利要求6所述的方法,其中所述源是簽名引擎。
9.如權(quán)利要求8所述的方法,其中所述多個第二位表明所述簽名引擎將發(fā)送數(shù)據(jù)完整性簽名。
10.如權(quán)利要求7所述的方法,其中所述源能夠是多個簽名引擎中的一個,以及所述多個第二位表明所述多個簽名引擎中將成為所述源的一個。
11.一種集成電路,包括數(shù)據(jù)操作控制器,接收存儲器地址字段,所述存儲器地址字段具有表明易失性存儲器中的位置的多個第一位和表明數(shù)據(jù)操作的多個第二位,基于所表明的數(shù)據(jù)操作,所述數(shù)據(jù)操作控制器選擇用于將被發(fā)送給非易失性存儲器的數(shù)據(jù)的源;易失性存儲器控制器,耦合到易失性存儲器,所述易失性存儲器控制器促使數(shù)據(jù)從所述易失性存儲器傳送到所述源;非易失性存儲器,耦合到所述非易失性存儲器,所述非易失性存儲器控制器從所述源接收操作的數(shù)據(jù)并且將所述操作的數(shù)據(jù)傳送到所述非易失性存儲器。
12.如權(quán)利要求11所述的集成電路,其中所述源是數(shù)據(jù)加密引擎。
13.如權(quán)利要求11所述的集成電路,其中所述源是簽名引擎。
14.如權(quán)利要求13所述的集成電路,其中所述多個第二位表明所述簽名引擎將發(fā)送數(shù)據(jù)完整性簽名。
15.如權(quán)利要求11所述的集成電路,其中所述源能夠是多個簽名引擎中的一個,以及所述多個第二位表明所述多個簽名引擎中將成為所述源的一個。
16.一種集成電路,包括數(shù)據(jù)操作控制器,接收存儲器地址字段,所述存儲器地址字段具有表明易失性存儲器中的位置的多個第一位和表明數(shù)據(jù)操作的多個第二位,基于所表明的數(shù)據(jù)操作,所述數(shù)據(jù)操作控制器選擇用于將被發(fā)送給所述易失性存儲器的數(shù)據(jù)的源;非易失性存儲器控制器,耦合到非易失性存儲器,所述非易失性存儲器控制器促使數(shù)據(jù)從所述非易失性存儲器傳送到所述源;易失性存儲器控制器,耦合到所述易失性存儲器,所述易失性存儲器控制器從所述源接收操作的數(shù)據(jù)并且將所述操作的數(shù)據(jù)傳送到所述易失性存儲器。
17.如權(quán)利要求16所述的集成電路,其中所述源是數(shù)據(jù)加密引擎。
18.如權(quán)利要求16所述的集成電路,其中所述源是簽名引擎。
19.如權(quán)利要求18所述的集成電路,其中所述多個第二位表明所述簽名引擎將發(fā)送數(shù)據(jù)完整性簽名。
20.如權(quán)利要求16所述的集成電路,其中所述源能夠是多個簽名引擎中的一個,以及所述多個第二位表明所述多個簽名引擎中將成為所述源的一個。
全文摘要
本發(fā)明涉及電源故障的數(shù)據(jù)操作。公開了一種電源隔離和備份系統(tǒng)。當(dāng)檢測到電源故障狀況時,臨時存儲器被清空到SDRAM。在清空之后,停止接口,從除了SDRAM子系統(tǒng)之外的芯片的大部分?jǐn)嚅_電源。SDRAM子系統(tǒng)將數(shù)據(jù)從SDRAM拷貝到閃存。期間,可以加密數(shù)據(jù)和/或計算數(shù)據(jù)完整性簽名。為了恢復(fù)數(shù)據(jù),SDRAM子系統(tǒng)將數(shù)據(jù)從閃存拷貝到SDRAM。期間,可以解密被恢復(fù)的數(shù)據(jù)和/或檢查數(shù)據(jù)完整性簽名。
文檔編號G06F11/14GK102567139SQ20111032844
公開日2012年7月11日 申請日期2011年10月26日 優(yōu)先權(quán)日2010年12月20日
發(fā)明者G·J·皮奇里洛, P·B·崇 申請人:Lsi公司