背景技術(shù):
電子設(shè)備可以包括易失性主存儲(chǔ)器、非易失性存儲(chǔ)器和輔助儲(chǔ)存器。電子設(shè)備的易失性主存儲(chǔ)器可以利用一個(gè)或多個(gè)易失性存儲(chǔ)器設(shè)備而實(shí)現(xiàn)。如果從存儲(chǔ)器設(shè)備移除功率,則易失性存儲(chǔ)器設(shè)備丟失其數(shù)據(jù)。非易失性存儲(chǔ)器和輔助儲(chǔ)存器可以使用一個(gè)或多個(gè)非易失性(或持久性)存儲(chǔ)器或儲(chǔ)存器設(shè)備而實(shí)現(xiàn)。即使從非易失性存儲(chǔ)器或儲(chǔ)存器設(shè)備移除功率,非易失性存儲(chǔ)器或儲(chǔ)存器設(shè)備也保留其所存儲(chǔ)的內(nèi)容。
附圖說明
關(guān)于以下附圖來描述一些實(shí)現(xiàn)方式。
圖1a和1b是根據(jù)各種實(shí)現(xiàn)方式的示例片上系統(tǒng)(soc)設(shè)備的框圖。
圖2是根據(jù)一些實(shí)現(xiàn)方式的恢復(fù)包括soc設(shè)備的系統(tǒng)的示例過程的流程圖。
圖3a和3b是根據(jù)一些實(shí)現(xiàn)方式的包括soc設(shè)備的示例系統(tǒng)的框圖。
圖4a和4b是根據(jù)一些實(shí)現(xiàn)方式的分別在圖3a和3b的系統(tǒng)中執(zhí)行的示例過程的流程圖。
具體實(shí)施方式
隨著集成電路技術(shù)已經(jīng)進(jìn)步,可被并入到集成電路芯片上的特征的數(shù)目已經(jīng)增加。在其上提供處理器、片上存儲(chǔ)器和其他部件的集成電路芯片可以被稱作片上系統(tǒng)(soc)設(shè)備。soc設(shè)備一般可以指代下述任何芯片:該芯片包括集成電路管芯或者在包裝內(nèi)封裝的管芯布置,并且在該芯片上,至少提供處理器和片上存儲(chǔ)器?!捌稀贝鎯?chǔ)器可以指代與處理器且可能與其他部件安裝在相同芯片中的(一個(gè)或多個(gè))存儲(chǔ)器設(shè)備。
在一些示例中,為了啟動(dòng)包括soc設(shè)備(具有片上易失性主存儲(chǔ)器)的系統(tǒng),將系統(tǒng)的引導(dǎo)代碼、操作系統(tǒng)和/或在先狀態(tài)從處于soc設(shè)備外(外部)的儲(chǔ)存器(輔助儲(chǔ)存器或非易失性存儲(chǔ)器)加載(拷貝)到片上易失性主存儲(chǔ)器中。引導(dǎo)代碼、操作系統(tǒng)和/或在先狀態(tài)到片上易失性主存儲(chǔ)器的拷貝可能耗費(fèi)相對較長的時(shí)間段,這可能延長啟動(dòng)系統(tǒng)所涉及的時(shí)間。啟動(dòng)系統(tǒng)可以包括引導(dǎo)系統(tǒng),這包括啟動(dòng)操作系統(tǒng)以從初始狀態(tài)開始。可替換地,啟動(dòng)系統(tǒng)可以包括從保存在狀態(tài)信息中的在先狀態(tài)恢復(fù)系統(tǒng)。
根據(jù)依照本公開的一些實(shí)現(xiàn)方式,給soc設(shè)備提供存儲(chǔ)下述信息的片上非易失性存儲(chǔ)器:該信息允許soc設(shè)備或者更一般地允許包括soc設(shè)備的系統(tǒng)使用片上非易失性存儲(chǔ)器中存儲(chǔ)的信息將包括soc設(shè)備的系統(tǒng)恢復(fù)到在先系統(tǒng)狀態(tài)?;謴?fù)系統(tǒng)可以指代:僅恢復(fù)soc設(shè)備;或者恢復(fù)soc設(shè)備和系統(tǒng)的其他部件,包括硬件設(shè)備和/或機(jī)器可執(zhí)行指令。
可以從下述模式恢復(fù)系統(tǒng):在該模式中,已經(jīng)從該系統(tǒng)移除功率。從系統(tǒng)移除功率可以指代從系統(tǒng)的僅一部分或者系統(tǒng)的整體移除功率。其中從系統(tǒng)移除功率的模式的一些示例包括睡眠狀態(tài)或休眠狀態(tài)。當(dāng)系統(tǒng)進(jìn)入到睡眠狀態(tài)或休眠狀態(tài)中時(shí),表示系統(tǒng)當(dāng)前狀態(tài)的系統(tǒng)狀態(tài)信息被保存到片上非易失性存儲(chǔ)器。系統(tǒng)狀態(tài)信息可以包括與在進(jìn)入睡眠狀態(tài)或休眠狀態(tài)之前在soc設(shè)備(或包括soc設(shè)備的系統(tǒng))上執(zhí)行的機(jī)器可執(zhí)行指令(例如,操作系統(tǒng)、裸金屬代碼、應(yīng)用代碼等)的當(dāng)前執(zhí)行狀態(tài)相關(guān)的信息。裸金屬代碼指代可在不存在操作系統(tǒng)的情況下在平臺(tái)上運(yùn)行的代碼。系統(tǒng)狀態(tài)信息還可以包括由機(jī)器可執(zhí)行指令處理的當(dāng)前數(shù)據(jù)。系統(tǒng)狀態(tài)信息還可以包括與硬件設(shè)備的狀態(tài)相關(guān)的信息。
在其他實(shí)現(xiàn)方式中,系統(tǒng)可以被恢復(fù)到其他類型的狀態(tài),諸如干凈引導(dǎo)狀態(tài)、最后知道的良好狀態(tài)、與回復(fù)點(diǎn)相對應(yīng)的狀態(tài)等等。將系統(tǒng)恢復(fù)到這些其他類型的狀態(tài)可以是在不必從系統(tǒng)移除功率的情況下執(zhí)行的。例如,在不移除功率的情況下,系統(tǒng)可以被重啟到前述其他類型的狀態(tài)中的任一個(gè)。
干凈引導(dǎo)狀態(tài)可以指代在成功完成的引導(dǎo)過程(被稱作“干凈引導(dǎo)”)結(jié)束時(shí)系統(tǒng)的狀態(tài)。最后知道的良好狀態(tài)指代已知為沒有錯(cuò)誤、故障和/或惡意軟件的系統(tǒng)的狀態(tài)。干凈引導(dǎo)狀態(tài)或最后知道的良好狀態(tài)可以是通過例如拍攝系統(tǒng)的快照來保存的。回復(fù)點(diǎn)可以指代在給定時(shí)間點(diǎn)處系統(tǒng)的狀態(tài),其已經(jīng)被用戶或其他實(shí)體指定為系統(tǒng)可被回復(fù)到的狀態(tài)。與前述狀態(tài)中的任一個(gè)相關(guān)的信息也可以存儲(chǔ)在片上非易失性存儲(chǔ)器中。
為了從其中已經(jīng)從系統(tǒng)移除功率的模式恢復(fù)系統(tǒng),可以從片上非易失性存儲(chǔ)器讀取系統(tǒng)狀態(tài)信息。附加地,片上非易失性存儲(chǔ)器可以存儲(chǔ)由soc設(shè)備執(zhí)行以執(zhí)行soc設(shè)備的恢復(fù)的引導(dǎo)指令。可以從片上非易失性存儲(chǔ)器就地執(zhí)行(xip)引導(dǎo)指令,這指代在不首先將引導(dǎo)指令拷貝到易失性主存儲(chǔ)器的情況下從片上非易失性存儲(chǔ)器執(zhí)行引導(dǎo)指令。在其他示例中,引導(dǎo)指令可以被拷貝到另一存儲(chǔ)器(易失性或非易失性存儲(chǔ)器),該另一存儲(chǔ)器也可以是片上的。這樣的另一存儲(chǔ)器可以包括靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)、高速緩存、主存儲(chǔ)器或另一存儲(chǔ)器。作為示例,soc設(shè)備上的存儲(chǔ)器(例如,sram等)可以被用于在存儲(chǔ)器被用作高速緩存之前執(zhí)行來自該存儲(chǔ)器的代碼。
片上非易失性存儲(chǔ)器還可以存儲(chǔ)元數(shù)據(jù),該元數(shù)據(jù)可以包括與片上非易失性存儲(chǔ)器以及soc設(shè)備相關(guān)的各種參數(shù)。在一些實(shí)現(xiàn)方式中,元數(shù)據(jù)可以包括用于指示下述內(nèi)容的參數(shù):包括soc設(shè)備的系統(tǒng)是要被恢復(fù)到在先系統(tǒng)狀態(tài)還是響應(yīng)于系統(tǒng)的狀態(tài)而被引導(dǎo)。例如,參數(shù)可以被設(shè)置成第一值以指示系統(tǒng)要被恢復(fù),且可以被設(shè)置成第二值以指示系統(tǒng)要被引導(dǎo)。下面進(jìn)一步討論其他元數(shù)據(jù)。
圖1a是根據(jù)一些實(shí)現(xiàn)方式的示例soc設(shè)備100的框圖。soc設(shè)備100包括處理器102和非易失性存儲(chǔ)器104。盡管描繪了僅一個(gè)處理器102,但要注意,soc設(shè)備可以包括多個(gè)處理器。在一些示例中,處理器102可以是處理器核。在soc設(shè)備100中可以存在多個(gè)處理器核。
處理器102和非易失性存儲(chǔ)器104可以被形成在soc設(shè)備100的公共集成電路管芯101上??商鎿Q地,處理器102和非易失性存儲(chǔ)器104可以被提供在完全在公共包裝內(nèi)封裝的多個(gè)集成電路管芯上。該包裝還支撐soc設(shè)備100的接觸部(例如,電接觸部、光學(xué)連接元件等)。
非易失性存儲(chǔ)器104可以利用各種不同類型的非易失性存儲(chǔ)器技術(shù)中的任一種而實(shí)現(xiàn)。作為示例,非易失性存儲(chǔ)器104可以包括以下各項(xiàng)中的任一個(gè)或以下各項(xiàng)的某種組合:閃存、電阻性隨機(jī)存取存儲(chǔ)器(rram)、憶阻器存儲(chǔ)器、相變隨機(jī)存取存儲(chǔ)器(pcm、pcram或pram)、磁阻隨機(jī)存取存儲(chǔ)器(mram)、自旋轉(zhuǎn)移矩隨機(jī)存取存儲(chǔ)器(stt-ram)、備用電源支援的(例如,電池支援的)動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)等等。
在一些實(shí)現(xiàn)方式中,非易失性存儲(chǔ)器104可以是字節(jié)可尋址存儲(chǔ)器。字節(jié)可尋址存儲(chǔ)器是其中可以讀取和寫入數(shù)據(jù)的個(gè)體字節(jié)的存儲(chǔ)器。換言之,可以從字節(jié)可尋址存儲(chǔ)器讀取或向字節(jié)可尋址存儲(chǔ)器寫入數(shù)據(jù)的個(gè)體字節(jié),而不讀取/寫入存儲(chǔ)器的其他部分。字節(jié)可尋址存儲(chǔ)器可區(qū)別于下述存儲(chǔ)器:在該存儲(chǔ)器中,必須在數(shù)據(jù)塊上執(zhí)行讀取操作或?qū)懭氩僮?,其中該?shù)據(jù)塊大于字節(jié)。
非易失性存儲(chǔ)器104可以存儲(chǔ)各種信息,包括soc狀態(tài)信息106和元數(shù)據(jù)108。非易失性存儲(chǔ)器104還可以包括多個(gè)邏輯區(qū),諸如瞬變區(qū)114和持久區(qū)116。soc狀態(tài)信息106和瞬變區(qū)114中的某個(gè)信息構(gòu)成與包括soc設(shè)備100的系統(tǒng)的在先系統(tǒng)狀態(tài)有關(guān)的系統(tǒng)狀態(tài)信息。在圖3a和3b中描繪了系統(tǒng)的示例。系統(tǒng)的在先系統(tǒng)狀態(tài)可以指代一個(gè)或多個(gè)程序正在執(zhí)行時(shí)的時(shí)間處的狀態(tài)。即使從非易失性存儲(chǔ)器104移除功率,非易失性存儲(chǔ)器104的soc狀態(tài)信息106、瞬變區(qū)114中的數(shù)據(jù)和持久區(qū)116中的數(shù)據(jù)也被保留。注意,如果系統(tǒng)在不考慮在先系統(tǒng)狀態(tài)的情況下引導(dǎo),則soc狀態(tài)信息106和瞬變區(qū)114中的數(shù)據(jù)被忽略且可以被丟棄,諸如通過被蓋寫或刪除。另一方面,如果系統(tǒng)恢復(fù)到在先系統(tǒng)狀態(tài),則soc狀態(tài)信息106和瞬變區(qū)114中的數(shù)據(jù)被重用。
非易失性存儲(chǔ)器104中的系統(tǒng)狀態(tài)信息可以用于將系統(tǒng)恢復(fù)到在先系統(tǒng)狀態(tài),響應(yīng)于此,從在先系統(tǒng)狀態(tài)開始,系統(tǒng)開始執(zhí)行。使用存儲(chǔ)在非易失性存儲(chǔ)器104中的系統(tǒng)狀態(tài)信息來恢復(fù)到在先系統(tǒng)狀態(tài)可以比引導(dǎo)系統(tǒng)以將系統(tǒng)置于初始狀態(tài)中更快。
soc狀態(tài)信息106可以包括從處理器102的寄存器和高速緩存(其可以是處理器102的一部分或處于處理器102外)拷貝的數(shù)據(jù)。寄存器和高速緩存是易失性儲(chǔ)存器,使得寄存器和高速緩存中的數(shù)據(jù)是在從soc設(shè)備100移除功率的情況下將丟失的易失性數(shù)據(jù)。寄存器的示例可以包括程序計(jì)數(shù)器的當(dāng)前值、與系統(tǒng)的配置相關(guān)的信息、由算術(shù)運(yùn)算產(chǎn)生的數(shù)據(jù)等等。高速緩存可以存儲(chǔ)程序的機(jī)器可執(zhí)行指令,且還可以存儲(chǔ)數(shù)據(jù),其中指令和數(shù)據(jù)可以從另一儲(chǔ)存器(諸如瞬變區(qū)114、持久區(qū)116或另一儲(chǔ)存器)存儲(chǔ)到高速緩存中的拷貝。
通過將soc狀態(tài)信息106拷貝到非易失性存儲(chǔ)器104,soc狀態(tài)信息106可以變成持久的,且可以在恢復(fù)soc設(shè)備100時(shí)被重用。
瞬變區(qū)114可以存儲(chǔ)其他數(shù)據(jù),諸如被正常加載到易失性主存儲(chǔ)器中的數(shù)據(jù)。瞬變區(qū)114中的數(shù)據(jù)的示例包括程序的機(jī)器可執(zhí)行指令、由驅(qū)動(dòng)器、操作系統(tǒng)和程序過程使用的臨時(shí)數(shù)據(jù)、臨時(shí)文件數(shù)據(jù)、與操作系統(tǒng)的當(dāng)前狀態(tài)有關(guān)的信息、裸金屬代碼的當(dāng)前狀態(tài)、某些應(yīng)用程序的當(dāng)前狀態(tài)、某些硬件設(shè)備的當(dāng)前狀態(tài)等等。
作為示例,在包括soc設(shè)備100的系統(tǒng)轉(zhuǎn)變到較低功率模式之前,由應(yīng)用程序處理的文檔可以打開。與應(yīng)用程序相關(guān)聯(lián)的瞬變區(qū)114中的數(shù)據(jù)可以指示打開的文檔,并可以包括文檔的當(dāng)前內(nèi)容,使得當(dāng)系統(tǒng)被從較低功率模式恢復(fù)到在先系統(tǒng)狀態(tài)(通過使用包括soc狀態(tài)信息106和瞬變區(qū)114中的某個(gè)數(shù)據(jù)的系統(tǒng)狀態(tài)信息)時(shí),關(guān)于在系統(tǒng)被置于較低功率模式中時(shí)存在的內(nèi)容,文檔保持打開。
元數(shù)據(jù)108可以包括指示器110,指示器110用于指示包括soc設(shè)備100的系統(tǒng)是要被恢復(fù)還是要被引導(dǎo)。指示器110可以以可設(shè)置成多個(gè)不同值之一的標(biāo)記的形式存在。如果指示器110被設(shè)置成第一值,則這指示:當(dāng)從其中已經(jīng)從系統(tǒng)移除功率的模式啟動(dòng)系統(tǒng)時(shí),系統(tǒng)要被恢復(fù)。如果指示器110被設(shè)置成第二不同值,則這指示:當(dāng)從其中已經(jīng)從系統(tǒng)移除功率的模式啟動(dòng)系統(tǒng)時(shí),系統(tǒng)要被引導(dǎo)。在其他示例中,元數(shù)據(jù)108還可以包括其他指示器,用于指示將系統(tǒng)恢復(fù)到具體狀態(tài),諸如干凈引導(dǎo)狀態(tài)、最后知道的良好狀態(tài)、與回復(fù)點(diǎn)相對應(yīng)的狀態(tài)等等。
附加地,元數(shù)據(jù)108可以包括:非易失性存儲(chǔ)器區(qū)信息112,其與非易失性存儲(chǔ)器104的多個(gè)不同邏輯區(qū)相關(guān)。在圖1a的示例中,非易失性存儲(chǔ)器104的多個(gè)邏輯區(qū)可以包括瞬變區(qū)114和持久區(qū)116。非易失性存儲(chǔ)器104還可以包括下面進(jìn)一步討論的另一區(qū)。存儲(chǔ)器的“邏輯區(qū)”可以指代存儲(chǔ)器的所定義的段,其中該段可以包括鄰接存儲(chǔ)器位置或非鄰接存儲(chǔ)器位置。非易失性存儲(chǔ)器區(qū)信息112可以用于定位或標(biāo)識(shí)非易失性存儲(chǔ)器104中的多個(gè)邏輯區(qū)。定位或標(biāo)識(shí)多個(gè)邏輯區(qū)可以指代對每一個(gè)邏輯區(qū)的起始地址和每一個(gè)邏輯區(qū)的(一個(gè)或多個(gè))其他屬性作出確定。
持久區(qū)116包含即使從包括soc設(shè)備100的系統(tǒng)移除功率也要維持的數(shù)據(jù)或其他信息。因此,響應(yīng)于導(dǎo)致系統(tǒng)被引導(dǎo)(而不是被恢復(fù))的系統(tǒng)的功率循環(huán)(當(dāng)從系統(tǒng)移除功率并且隨后再次將功率應(yīng)用于系統(tǒng)時(shí)),瞬變區(qū)114中包含的信息被忽略和/或丟棄,而持久區(qū)116中的信息被維持。應(yīng)當(dāng)在引導(dǎo)期間丟棄的瞬變區(qū)114中的信息的示例包括由操作系統(tǒng)、裸金屬代碼和不意在持久的用戶過程創(chuàng)建的數(shù)據(jù)。這樣的數(shù)據(jù)的示例包括在頁面調(diào)度被啟用的情況下創(chuàng)建的頁表項(xiàng)(pte)、一般程序數(shù)據(jù)、和/或易失性或敏感的數(shù)據(jù)(諸如秘密密鑰或用戶憑證)。然而,注意,當(dāng)系統(tǒng)被恢復(fù)到在先系統(tǒng)狀態(tài)時(shí),則瞬變區(qū)114中的數(shù)據(jù)被重用。
元數(shù)據(jù)108可以包括結(jié)構(gòu)化元數(shù)據(jù)或非結(jié)構(gòu)化元數(shù)據(jù)。結(jié)構(gòu)化元數(shù)據(jù)指代具有具體格式或綱要的元數(shù)據(jù),而非結(jié)構(gòu)化元數(shù)據(jù)指代沒有具體格式或綱要的元數(shù)據(jù)。非易失性區(qū)信息112可以包括:存儲(chǔ)器地址值,其指定不同的多個(gè)區(qū)(包括瞬變區(qū)114和持久區(qū)116以及其他區(qū))中的每一個(gè)在非易失性存儲(chǔ)器104中的起始位置。在其他示例中,非易失性存儲(chǔ)器區(qū)信息112可以包括下述信息:該信息指向非易失性存儲(chǔ)器區(qū)的邏輯劃分,且還描述每一個(gè)區(qū)的不同屬性。
在一些示例中,元數(shù)據(jù)108還可以定義非易失性存儲(chǔ)器104中的一個(gè)或多個(gè)安全區(qū),該安全區(qū)存儲(chǔ)可以用于執(zhí)行soc設(shè)備100的安全操作的信息。(一個(gè)或多個(gè))安全區(qū)是soc設(shè)備100的預(yù)定義或指定實(shí)體可訪問的非易失性存儲(chǔ)器104的區(qū),使得未授權(quán)實(shí)體(例如,惡意軟件代碼等)將不能夠訪問這樣的(一個(gè)或多個(gè))安全區(qū)。
如上所注意的那樣,在一些示例中,瞬變區(qū)114可以存儲(chǔ)傳統(tǒng)系統(tǒng)中的易失性主存儲(chǔ)器中所存儲(chǔ)的信息。在這樣的示例中,通過在非易失性存儲(chǔ)器104中提供瞬變區(qū)114以存儲(chǔ)易失性主存儲(chǔ)器的信息,將不必須在包括soc設(shè)備100的系統(tǒng)中提供分離的易失性主存儲(chǔ)器。
持久區(qū)116中所存儲(chǔ)的信息可以包括以下各項(xiàng)作為示例:引導(dǎo)加載器(用于加載其他代碼的機(jī)器可執(zhí)行指令,該其他代碼諸如是另一引導(dǎo)代碼或操作系統(tǒng)、裸金屬代碼或管理程序)、基本輸入/輸出系統(tǒng)(bios)代碼或統(tǒng)一可擴(kuò)展固件接口(uefi)代碼(bios代碼或uefi代碼包括用于執(zhí)行系統(tǒng)的初始化的機(jī)器可執(zhí)行指令)、操作系統(tǒng)、裸金屬代碼、文件系統(tǒng)、儲(chǔ)存器卷等等。
操作系統(tǒng)可以包括:內(nèi)核,其管理由硬件資源的代碼進(jìn)行的訪問、文件訪問管理、過程管理等等。除內(nèi)核外,操作系統(tǒng)還可以包括附加代碼,該附加代碼可以執(zhí)行指定任務(wù)(這樣的附加代碼的示例可以包括用戶界面應(yīng)用、庫等)。
在系統(tǒng)中執(zhí)行管理程序以執(zhí)行系統(tǒng)的硬件資源的虛擬化。使用管理程序,可以在系統(tǒng)中實(shí)現(xiàn)多個(gè)虛擬機(jī),其中每一個(gè)虛擬機(jī)包括相應(yīng)的操作系統(tǒng)和應(yīng)用。通過管理程序來執(zhí)行由虛擬機(jī)對硬件資源的訪問。
文件系統(tǒng)包括下述信息:該信息描述了存儲(chǔ)在包括soc設(shè)備100的系統(tǒng)中的文件和目錄。
在一些示例中,持久區(qū)116可以用于存儲(chǔ)可存儲(chǔ)在傳統(tǒng)系統(tǒng)的輔助儲(chǔ)存器中的信息,其中輔助儲(chǔ)存器可以包括固態(tài)驅(qū)動(dòng)器(其可以利用閃存設(shè)備而實(shí)現(xiàn))和/或基于盤的儲(chǔ)存器設(shè)備。
通過在soc設(shè)備100中采用片上非易失性存儲(chǔ)器104,可以省略soc設(shè)備100外部的某些存儲(chǔ)器和/或儲(chǔ)存器設(shè)備,諸如易失性主存儲(chǔ)器、閃存和/或輔助儲(chǔ)存器。通過省略這樣的外部存儲(chǔ)器和/或儲(chǔ)存器設(shè)備,由于系統(tǒng)中的部件的數(shù)目減少而可以降低與包括soc設(shè)備100的系統(tǒng)相關(guān)聯(lián)的成本。
圖1b示出了根據(jù)另外實(shí)現(xiàn)方式的soc設(shè)備100。圖1b的soc設(shè)備100是與圖1a的soc設(shè)備100類似地布置的,只是除瞬變區(qū)114和持久區(qū)116外,圖1b的soc設(shè)備100的非易失性存儲(chǔ)器104進(jìn)一步包括只讀存儲(chǔ)器(rom)區(qū)120。rom區(qū)120可以用于存儲(chǔ)某個(gè)信息,諸如第一級引導(dǎo)加載器122。在其他示例中,rom區(qū)120還可以用于存儲(chǔ)針對soc設(shè)備100的某個(gè)管理信息。
第一級引導(dǎo)加載器122是在包括soc設(shè)備100的系統(tǒng)被啟動(dòng)時(shí)執(zhí)行的第一引導(dǎo)代碼。第一級引導(dǎo)加載器122用于啟動(dòng)第二級引導(dǎo)加載器124,第二級引導(dǎo)加載器124執(zhí)行與啟動(dòng)系統(tǒng)(恢復(fù)系統(tǒng)或引導(dǎo)系統(tǒng))相關(guān)聯(lián)的附加功能。第二級引導(dǎo)加載器124可以用于調(diào)用另一引導(dǎo)代碼,諸如bios或uefi代碼。第二級引導(dǎo)加載器124還可以加載操作系統(tǒng)或裸金屬代碼。更一般地,第一級引導(dǎo)加載器122是引導(dǎo)代碼的第一部分的示例,并且第二級引導(dǎo)加載器124是引導(dǎo)代碼的第二部分的示例。
在圖1b的示例中,第二級引導(dǎo)加載器124和其他代碼126(例如,bios或uefi代碼、操作系統(tǒng)、裸金屬代碼等)存儲(chǔ)在soc設(shè)備100的持久區(qū)116中。在其他示例中,第二級引導(dǎo)加載器124和/或bios或uefi代碼可以存儲(chǔ)在rom區(qū)120中。
要注意,rom區(qū)120的內(nèi)容可以被更新,諸如,更新第一級引導(dǎo)加載器122、第二級引導(dǎo)加載器124、或者存儲(chǔ)在rom區(qū)120中的bios或uefi代碼。rom區(qū)120的內(nèi)容的更新由在soc設(shè)備100上執(zhí)行的可信過程執(zhí)行。
圖2是根據(jù)一些實(shí)現(xiàn)方式的可由soc設(shè)備100執(zhí)行的過程的流程圖。soc設(shè)備100將機(jī)器可執(zhí)行指令和元數(shù)據(jù)存儲(chǔ)(在202處)在片上非易失性存儲(chǔ)器104中。作為從其中從包括soc設(shè)備100的系統(tǒng)移除功率的模式啟動(dòng)系統(tǒng)的一部分,soc設(shè)備100基于元數(shù)據(jù)108(更具體地,基于指示器110)確定(在204處)是否將系統(tǒng)恢復(fù)到在先系統(tǒng)狀態(tài)。
響應(yīng)于元數(shù)據(jù)108(更具體地,指示器110)指示系統(tǒng)要被恢復(fù)到在先系統(tǒng)狀態(tài),使用存儲(chǔ)在片上非易失性存儲(chǔ)器104中的系統(tǒng)狀態(tài)信息(包括soc狀態(tài)信息106和瞬變區(qū)114中的某個(gè)數(shù)據(jù))將系統(tǒng)恢復(fù)(在206處)到在先系統(tǒng)狀態(tài)。
圖3a示出了包括soc設(shè)備100和外部非易失性存儲(chǔ)器302(其處于soc設(shè)備100外部)的系統(tǒng)300a的示例。系統(tǒng)的示例可以包括以下各項(xiàng)中的任一個(gè)或以下各項(xiàng)的某種組合:臺(tái)式計(jì)算機(jī)、筆記本計(jì)算機(jī)、平板計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、智能電話、個(gè)人數(shù)字助理、移動(dòng)電話、通信設(shè)備、儲(chǔ)存器服務(wù)器、游戲器具、智能傳感器、可穿戴設(shè)備、物聯(lián)網(wǎng)(iot)設(shè)備、家庭控制器、系統(tǒng)控制器、微控制器、器具等等。
外部非易失性存儲(chǔ)器302可以存儲(chǔ)元數(shù)據(jù)304,并可以包括瞬變區(qū)306和持久區(qū)308,它們被布置成將與相應(yīng)瞬變區(qū)114和持久區(qū)116類似的內(nèi)容存儲(chǔ)在片上非易失性存儲(chǔ)器104中。外部非易失性存儲(chǔ)器302的存在增加了在片上非易失性存儲(chǔ)器104中可用的容量。元數(shù)據(jù)304可以包括與外部非易失性存儲(chǔ)器302的區(qū)306和308相關(guān)的信息。
除soc設(shè)備100和外部非易失性存儲(chǔ)器302外,系統(tǒng)300a還可以包括其他部件,其包括外圍或i/o設(shè)備310(例如,網(wǎng)絡(luò)接口控制器、視頻卡控制器、顯示設(shè)備等)。
圖3b示出了另一示例系統(tǒng)300b,除圖3a的soc設(shè)備100、外部非易失性存儲(chǔ)器302和外圍設(shè)備310外,示例系統(tǒng)300b還包括易失性主存儲(chǔ)器320。易失性主存儲(chǔ)器320處于soc設(shè)備100外部,且可以使用動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)或任何其他類型的易失性存儲(chǔ)器而實(shí)現(xiàn)。在存在易失性主存儲(chǔ)器320的示例中,相應(yīng)片上非易失性存儲(chǔ)器104和外部非易失性存儲(chǔ)器302的瞬變區(qū)114和/或306將不必存儲(chǔ)易失性主存儲(chǔ)器320中所存儲(chǔ)的信息。
圖4a是根據(jù)一些實(shí)現(xiàn)方式的啟動(dòng)圖3a的系統(tǒng)300a的過程的流程圖。作為從其中從系統(tǒng)300a移除功率的模式啟動(dòng)系統(tǒng)300a的一部分,soc設(shè)備100的處理器102執(zhí)行(在402處)來自片上非易失性存儲(chǔ)器104中的rom區(qū)120的第一級引導(dǎo)加載器122。在不必訪問或初始化soc設(shè)備100外的任何外圍設(shè)備的情況下,處理器102可以讀取(在404處)存儲(chǔ)在片上非易失性存儲(chǔ)器104中的元數(shù)據(jù)108(以及更具體地,指示器110),并確定系統(tǒng)300a是要被恢復(fù)還是要被引導(dǎo)。
以下假定指示器110指定系統(tǒng)300a要被恢復(fù)到在先系統(tǒng)狀態(tài)。
第一級引導(dǎo)加載器122(或由第一級引導(dǎo)加載器122調(diào)用的其他代碼)可以初始化(在406處)指定的一個(gè)或多個(gè)外圍設(shè)備(例如,圖形控制器、網(wǎng)絡(luò)接口控制器等)。初始化外圍設(shè)備可以指代利用指定信息對外圍設(shè)備(諸如,外圍設(shè)備中的控制寄存器)進(jìn)行編程以將外圍設(shè)備置于初始狀態(tài)中。初始化圖形控制器例如可以允許與啟動(dòng)系統(tǒng)300a相關(guān)聯(lián)的信息被顯示在顯示設(shè)備中。在其他示例中,(一個(gè)或多個(gè))外圍設(shè)備的初始化(在406處)可以稍后被執(zhí)行。
第一級引導(dǎo)加載器122(或由第一級引導(dǎo)加載器122調(diào)用的其他代碼)從soc狀態(tài)信息106(圖1a或1b)回復(fù)(在408處)soc設(shè)備100的易失性數(shù)據(jù)。易失性數(shù)據(jù)可以包括寄存器、高速緩存、和/或處理器102和/或soc設(shè)備100中的其他儲(chǔ)存器元件中的數(shù)據(jù)。當(dāng)功率被移除時(shí),這樣的寄存器、高速緩存和/或其他儲(chǔ)存器元件的內(nèi)容丟失??梢詮拇鎯?chǔ)在片上非易失性存儲(chǔ)器104中的先前快照(包括soc狀態(tài)信息106)回復(fù)soc易失性數(shù)據(jù)??煺湛梢灾复谔囟〞r(shí)間點(diǎn)處取得的數(shù)據(jù)拷貝。
基于soc狀態(tài)信息106將處理器102的程序計(jì)數(shù)器指(在410處)向操作系統(tǒng)或裸金屬代碼的恢復(fù)函數(shù)入口點(diǎn)。該入口點(diǎn)是可處于片上非易失性存儲(chǔ)器104中或處于圖3a中描繪的外部非易失性存儲(chǔ)器302中的存儲(chǔ)器地址。入口點(diǎn)指定恢復(fù)函數(shù)的起始點(diǎn),其導(dǎo)致從先前執(zhí)行點(diǎn)(在系統(tǒng)300a進(jìn)入其中功率被移除的模式之前)執(zhí)行操作系統(tǒng)或裸金屬代碼。
系統(tǒng)300a檢查實(shí)現(xiàn)外部非易失性存儲(chǔ)器302的(一個(gè)或多個(gè))存儲(chǔ)器設(shè)備的存在,并在程序計(jì)數(shù)器指向外部非易失性存儲(chǔ)器302中的入口之前執(zhí)行這樣的(一個(gè)或多個(gè))存儲(chǔ)器設(shè)備的初始化。外部非易失性存儲(chǔ)器302的初始化允許外部非易失性存儲(chǔ)器302的內(nèi)容的訪問。
操作系統(tǒng)或裸金屬代碼然后可以恢復(fù)執(zhí)行(在412處)。注意,操作系統(tǒng)或裸金屬代碼可能不知道其正在被恢復(fù)。
以下描述了用于拍攝soc設(shè)備100的易失性數(shù)據(jù)的快照的操作。soc設(shè)備100的(或者包括soc設(shè)備100的系統(tǒng)的)機(jī)器可執(zhí)行指令的執(zhí)行被中止,并且易失性儲(chǔ)存器的內(nèi)容(諸如,寄存器、高速緩存和其他儲(chǔ)存器元件的內(nèi)容)被刷新到片上非易失性存儲(chǔ)器104或外部非易失性存儲(chǔ)器302中的對應(yīng)儲(chǔ)存器位置。可以在各種時(shí)間處(諸如,在成功的引導(dǎo)之后、在得體的設(shè)備斷電或關(guān)閉之前、周期性地等等)拍攝快照。不同快照可以包括要恢復(fù)的不同狀態(tài)。快照還可以包括上面討論的瞬變區(qū)114的數(shù)據(jù)。
在一些示例中,可以利用完全處于soc設(shè)備100內(nèi)的代碼和數(shù)據(jù)執(zhí)行任務(wù)402、404、408和410。在這些任務(wù)的執(zhí)行期間,外圍設(shè)備可以不被初始化(假定任務(wù)406直到任務(wù)410之后才被執(zhí)行)。由此,如果在任務(wù)402、404、408和410的執(zhí)行期間發(fā)生錯(cuò)誤,則可能不會(huì)使用戶知道該錯(cuò)誤,并且用戶可能不能夠使用外圍設(shè)備來重置系統(tǒng)。相應(yīng)地,為了允許在任務(wù)402、404、408和410期間系統(tǒng)300a的用戶訪問,可以給硬件重置機(jī)構(gòu)312提供soc設(shè)備100以允許用戶重置系統(tǒng)。例如,可以提供跳線裝置(jumper)、開關(guān)、按鈕、或者用于提供信號的任何其他用戶可激活硬件控制元件,其中該用戶可激活硬件控制元件可以在錯(cuò)誤的情況下由用戶激活以重置soc設(shè)備100。重置soc設(shè)備100可以導(dǎo)致包括soc設(shè)備100的系統(tǒng)的引導(dǎo),這將使soc狀態(tài)信息106和瞬變區(qū)114中的數(shù)據(jù)被忽略和/或丟棄。
在采用包括易失性主存儲(chǔ)器320的圖3b的布置的實(shí)現(xiàn)方式中,可以執(zhí)行用于啟動(dòng)系統(tǒng)300b的圖4b的過程。圖4b中的任務(wù)402和404與圖4a中的對應(yīng)任務(wù)402和404相同。
由于存在易失性主存儲(chǔ)器320,因此圖4b的過程初始化(在506處)易失性主存儲(chǔ)器320,且可能初始化一個(gè)或多個(gè)指定的外圍設(shè)備。在其他示例中,該一個(gè)或多個(gè)指定的外圍設(shè)備的初始化可以稍后被執(zhí)行。
圖4b中的任務(wù)408和410與圖4a中的對應(yīng)任務(wù)408和410相同。
接下來,向操作系統(tǒng)或裸金屬代碼通知(在512處)操作系統(tǒng)或裸金屬代碼應(yīng)當(dāng)從片上非易失性存儲(chǔ)器104的持久區(qū)116、外部非易失性存儲(chǔ)器302的持久區(qū)308或系統(tǒng)300b的輔助儲(chǔ)存器復(fù)原易失性主存儲(chǔ)器320的內(nèi)容的完全或部分快照。元數(shù)據(jù)108或304可以被操作系統(tǒng)或裸金屬代碼用于定位下述內(nèi)容:易失性主存儲(chǔ)器320的快照位于片上非易失性存儲(chǔ)器104、外部非易失性存儲(chǔ)器320或輔助儲(chǔ)存器中的何處。
接下來,操作系統(tǒng)或裸金屬代碼可以恢復(fù)執(zhí)行(在514處),其中恢復(fù)執(zhí)行還可以包括:使用片上非易失性存儲(chǔ)器104、外部非易失性存儲(chǔ)器320或輔助儲(chǔ)存器中的快照來復(fù)原易失性主存儲(chǔ)器320的內(nèi)容。
易失性主存儲(chǔ)器320的內(nèi)容的完全快照指代將機(jī)器可執(zhí)行指令所使用的所有數(shù)據(jù)從易失性主存儲(chǔ)器320拷貝到片上非易失性存儲(chǔ)器104、外部非易失性存儲(chǔ)器320或輔助儲(chǔ)存器。
易失性主存儲(chǔ)器320的內(nèi)容的部分快照指代將易失性主存儲(chǔ)器320中的數(shù)據(jù)的所選子集(諸如,操作系統(tǒng)內(nèi)核所使用的數(shù)據(jù)或某個(gè)其他數(shù)據(jù))從易失性主存儲(chǔ)器320拷貝到片上非易失性存儲(chǔ)器104、外部非易失性存儲(chǔ)器320或輔助儲(chǔ)存器。從部分快照進(jìn)行復(fù)原可以比從完全快照進(jìn)行復(fù)原更快,這是由于在系統(tǒng)恢復(fù)期間更小量的數(shù)據(jù)必須被拷貝到易失性主存儲(chǔ)器320。
在一些實(shí)現(xiàn)方式中,對相應(yīng)片上非易失性存儲(chǔ)器104和外部非易失性存儲(chǔ)器302中的元數(shù)據(jù)108和304進(jìn)行寫保護(hù),以防止元數(shù)據(jù)的未授權(quán)修改??梢允褂糜布?諸如處理器、存儲(chǔ)器控制器或其他硬件部件)基于指定策略來執(zhí)行寫保護(hù)的施行。元數(shù)據(jù)的修改不被允許,除非滿足指定策略的條件。
在一些實(shí)現(xiàn)方式中,可以使用密鑰來對非易失性存儲(chǔ)器104或302的一個(gè)或多個(gè)區(qū)(例如,存儲(chǔ)元數(shù)據(jù)的區(qū)、持久區(qū)等)進(jìn)行加密。而且,可以將可信管理機(jī)構(gòu)用于維持或更新rom區(qū)120的元數(shù)據(jù)內(nèi)容并使用密鑰來執(zhí)行加密和解密。
在一些實(shí)現(xiàn)方式中,soc設(shè)備100可以包括電保險(xiǎn)絲(efuse)存儲(chǔ)器,其是僅可被編程一次的一次性可編程存儲(chǔ)器。作為示例,efuse存儲(chǔ)器可以用于存儲(chǔ)指定片上非易失性存儲(chǔ)器104的屬性的信息。這樣的屬性的示例可以包括只讀屬性(用于指定是否區(qū)是可讀的)或其他屬性。存儲(chǔ)在efuse存儲(chǔ)器中的值可以允許或阻止由處理器102對片上非易失性存儲(chǔ)器104或外部非易失性存儲(chǔ)器302的某些區(qū)的訪問。作為示例,efuse存儲(chǔ)器中的信息可以允許到非易失性存儲(chǔ)器的示例區(qū)a的寫入。在到非易失性存儲(chǔ)器的區(qū)a的寫入之后,執(zhí)行一次性寫入以改變efuse存儲(chǔ)器,以便防止非易失性存儲(chǔ)器的區(qū)a的任何進(jìn)一步寫入。
在一些實(shí)現(xiàn)方式中,為了恢復(fù)soc設(shè)備100或包括soc設(shè)備100的系統(tǒng),可以省略某些任務(wù)(諸如,圖4a或4b中的任務(wù)402和404)的執(zhí)行。因此,恢復(fù)可以從圖4a或4b中的每一個(gè)中的任務(wù)408開始。
在包括soc設(shè)備100中的多個(gè)處理器的實(shí)現(xiàn)方式中,soc設(shè)備100中的多個(gè)處理器中所選的一個(gè)可以用于執(zhí)行恢復(fù)任務(wù)。這可以出于安全性原因而執(zhí)行。例如,作為針對安全引導(dǎo)的硬件保證,soc設(shè)備100中的某些處理器可以用于具體任務(wù)。
盡管上面討論的各種示例在片上非易失性存儲(chǔ)器104中描繪了一個(gè)瞬變區(qū)和一個(gè)持久區(qū),但要注意,對于相應(yīng)不同操作系統(tǒng),片上非易失性存儲(chǔ)器104可以包括多個(gè)瞬變區(qū)和多個(gè)持久區(qū)。
在以上描述中,闡述了許多細(xì)節(jié)以提供對本文公開的主題的理解。然而,可以在沒有這些細(xì)節(jié)中的一些的情況下實(shí)踐實(shí)現(xiàn)方式。其他實(shí)現(xiàn)方式可以包括從上面討論的細(xì)節(jié)的修改和變形。意圖在于,所附權(quán)利要求覆蓋這樣的修改和變形。