TWI787334B - 用於在異構記憶體環境內進行引導的系統和方法 - Google Patents

用於在異構記憶體環境內進行引導的系統和方法 Download PDF

Info

Publication number
TWI787334B
TWI787334B TW107129437A TW107129437A TWI787334B TW I787334 B TWI787334 B TW I787334B TW 107129437 A TW107129437 A TW 107129437A TW 107129437 A TW107129437 A TW 107129437A TW I787334 B TWI787334 B TW I787334B
Authority
TW
Taiwan
Prior art keywords
software application
memory mode
determining
nvram
candidate
Prior art date
Application number
TW107129437A
Other languages
English (en)
Other versions
TW201921257A (zh
Inventor
燕如 李
艾茲狄恩 圖茲尼
德斯特 千
Original Assignee
美商高通公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商高通公司 filed Critical 美商高通公司
Publication of TW201921257A publication Critical patent/TW201921257A/zh
Application granted granted Critical
Publication of TWI787334B publication Critical patent/TWI787334B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/781On-chip cache; Off-chip memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44557Code layout in executable memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44573Execute-in-place [XIP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44578Preparing or optimising for loading
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Stored Programmes (AREA)
  • Hardware Redundancy (AREA)

Abstract

本文描述了用於以增強記憶體模式來引導片上系統(SOC)的系統和方法。在一個態樣,可以讀取增強記憶體模式指示符以建立到非揮發性隨機存取記憶體(NVRAM)的可信通道。NVRAM可以邏輯地連接到SOC。在一態樣,可以在建立可信通道之前保護NVRAM。一旦到NVRAM的秘密頻道被建立,則SOC可以以增強記憶體模式操作。在SOC斷電之前,系統可以儲存指示符,該指示符可操作以用於以功率節省模式啟用對SOC的後續引導。SOC可以是可操作以用於取決於其中實現SOC的可攜式計算設備的操作要求而在功率節省模式與正常模式之間切換的。

Description

用於在異構記憶體環境內進行引導的系統和方法
本專利申請案主張於2017年8月23日提出申請的、題為「System And Method For Booting Within A Heterogeneous Memory」的美國臨時申請案第62/549,057號的優先權的利益,其全部內容經由引用併入本文。
本揭示案係關於用於在異構記憶體環境內進行引導的系統和方法。
許多可攜式計算設備由複雜的片上系統(SOC)供電,複雜的片上系統中的許多包含與設備的使用和操作相關的各種邏輯區塊和功能方塊。此類可攜式計算設備可能具有功率約束,這些功率約束使得某些用例由於與功率相關的需求而不可行。例如,許多可攜式計算設備(例如,智慧型電話)以固定電池來操作,該固定電池具有與容量和峰值輸出兩者相關的實體限制。為了處理使用者對可攜式計算設備的不斷增長的效能需求,必須開發創新方法以在不超過可攜式計算設備的功率約束的情況下適應使用者效能需求。使用者要求卓越設備效能的一個實例是關於設備引導的時延,無論是初始引導還是後續引導(有時稱為重啟或喚醒)。
利用不受限的資源,設計只具有前沿部件的可攜式計算設備是可能的,所有這些前沿部件提供最佳效能和功率。然而,當前市場要求可攜式計算設備製造商在採用成本高效的電子部件與同時關於功率和效能仍然提供充足的使用者體驗之間找到平衡。隨著非揮發性隨機存取記憶體(NVRAM)的不斷發展,一些可攜式計算設備製造商正在尋求在系統內利用NVRAM的優點,該系統在整個SOC中使用更多傳統部件。由於NVRAM比其他現有的RAM架構相對新,因此,要在整個設備中使用,NVRAM的成本可能成本過高。此外,NVRAM的特性可能不適合在未來的所有可攜式計算設備中普遍使用。例如,NVRAM的一個潛在缺點是儲存在NVRAM內的資料可能需要附加的安全性,因為資料可能在設備已經斷電後保留。
因此,需要用於在可攜式計算設備內提供對NVRAM的選擇性使用的改進的系統和方法,使得可攜式計算設備的操作提供令人滿意的使用者體驗,而不會不利地影響製造可攜式計算的成本。此外,NVRAM關於引導的使用可以關於與可攜式計算設備相關的功率和效能改進使用者體驗。
本文描述了用於以增強記憶體模式(例如,功率節省模式等)引導片上系統(SOC)的系統和方法。該系統和方法可以包括讀取增強記憶體模式指示符,建立到非揮發性隨機存取記憶體(NVRAM)的可信通道,其中NVRAM邏輯地連接到SOC。此外,可以在建立可信通道之前保護NVRAM。隨後,SOC可以以增強記憶體模式操作並且儲存指示符,該指示符可操作以用於以功率節省模式啟用對SOC的後續引導(例如,重新引導)。在一個態樣,增強記憶體模式指示符(或功率節省模式指示符)是儲存在功率管理控制器中的標誌。在另一態樣,功率節省模式指示符可以從SOC外部的設備發送到SOC。
在一個態樣,該系統和方法可以接收異常,其中異常指示SOC可以退出功率節省模式並且以正常模式操作。在另一態樣,可信引導程式可以安全地決定功率節省模式指示符的存在。在又一態樣,SOC以功率節省模式進行操作亦可以包括將軟體映射從儲存記憶體載入到NVRAM中的操作,其中軟體映射被配置為在NVRAM內執行。在又一態樣,軟體映射可以是儲存在存放裝置上的複數個軟體映射的子集,並且複數個軟體映射可以提供與以功率節省模式操作的軟體映射相比實質上可替代的功能。在另一態樣,處理器可以在系統內執行該方法。本發明所屬領域中具有通常知識者將認識到,處理器可以是數位訊號處理器(DSP)、圖形處理單元(GPU)、中央處理單元(CPU)或特殊應用積體電路(ASIC)。此外,該系統和方法可以包含在可攜式計算設備內,該可攜式計算設備包括在SOC自身內和在SOC自身外的若干邏輯的和實體的功能方塊。
各種態樣可以包括一種操作計算系統/設備(例如,SOC)的方法,該方法可以包括:決定軟體應用程式是否為增強記憶體模式的候選者;回應於決定軟體應用程式是增強記憶體模式的候選者,將軟體應用程式載入到NVRAM中,並且設定增強記憶體模式指示符,增強記憶體模式指示符可操作以用於以增強記憶體模式啟用對該計算設備的後續引導;在重新引導該計算設備之後,決定增強記憶體模式指示符是否被設定;及回應於決定增強記憶體模式指示符被設定,經由開始從NVRAM對軟體應用程式的執行來以增強記憶體模式操作該計算設備。在一態樣,該方法可以包括:回應於決定軟體應用程式不是增強記憶體模式的候選者而將軟體應用程式載入到揮發性記憶體(例如,DRAM、SRAM等)中,以及回應於決定增強記憶體模式指示符未被設定而開始從揮發性記憶體對軟體應用程式的執行。
在另一態樣,決定軟體應用程式是否為增強記憶體模式的候選者可以包括:對軟體應用程式進行評估以產生評估結果,基於評估結果來決定軟體應用程式是否將受益於快速啟動、快速狀態改變、低功率設備操作或高速代碼執行,以及回應於決定軟體應用程式將受益於快速啟動、快速狀態改變、低功率設備操作或高速代碼執行而決定軟體應用程式是增強記憶體模式的候選者。
在另一態樣,決定軟體應用程式是否為增強記憶體模式的候選者可以包括:決定軟體應用程式的大小值,決定軟體應用程式的功率消耗值,決定軟體應用程式的引導時間值,基於大小值、功率消耗值以及引導時間值來決定費用度量值,決定費用度量值是否超過閾值,回應於決定費用度量值超過閾值而決定軟體應用程式不是增強記憶體模式的候選者,以及回應於決定費用度量值未超過閾值而決定軟體應用程式是增強記憶體模式的候選者。
在另一態樣,該方法可以包括:辨識複數個候選軟體應用程式;將所辨識的軟體應用程式之每一者所辨識的軟體應用程式分類到一或多個類別中;基於與所辨識的軟體應用程式之每一者所辨識的軟體應用程式相關聯的一或多個類別,決定每個所辨識的軟體應用程式的價值;及基於所辨識的軟體應用程式中的一或多個所辨識的軟體應用程式的相應的價值,將一或多個所辨識的軟體應用程式插入候選軟體應用程式的列表中,其中決定軟體應用程式是否為增強記憶體模式的候選者可以包括:基於包括在候選軟體應用程式的列表中的資訊來決定軟體應用程式是否為以增強記憶體模式操作的候選者。
在另一態樣,基於所辨識的軟體應用程式中的一或多個所辨識的軟體應用程式的相應的價值將一或多個所辨識的軟體應用程式插入候選軟體應用程式的列表中可以包括:將所辨識的軟體應用程式插入候選軟體應用程式的有序列表中,候選軟體應用程式的有序列表基於所辨識的軟體應用程式的相關聯的價值來組織所辨識的軟體應用程式。在另一態樣,基於所辨識的軟體應用程式中的一或多個所辨識的軟體應用程式的相應的價值將一或多個所辨識的軟體應用程式插入候選軟體應用程式的列表中可以包括:決定與所辨識的軟體應用程式相關聯的價值是否超過閾值,以及回應於決定與所辨識的軟體應用程式相關聯的價值超過閾值而將所辨識的軟體應用程式插入候選軟體應用程式的列表中。
在另一態樣,基於包括在候選軟體應用程式的列表中的資訊來決定軟體應用程式是否為以增強記憶體模式操作的候選者可以包括:決定軟體應用程式是否被包括在候選軟體應用程式的列表中。在另一態樣,設定可操作以用於以增強記憶體模式啟用對該計算設備的後續引導的增強記憶體模式指示符可以包括:將標誌儲存在非揮發性記憶體中。在另一態樣,設定可操作以用於以增強記憶體模式啟用對該計算設備的後續引導的增強記憶體模式指示符可以包括設定以下各項中的一項:低功率模式指示符,快速引導時間模式指示符,快速狀態轉換模式指示符,或者高速執行模式指示符。
在另一態樣,在重新引導該計算設備之後決定增強記憶體模式指示符是否被設定可以包括:執行可信引導程式以安全地決定增強記憶體模式指示符的存在。在另一態樣,該方法可以包括將增強記憶體模式指示符從該計算設備的片上系統外部的部件發送到片上系統。在另一態樣,該方法可以包括接收指示該計算設備應退出增強記憶體模式的異常,以及回應於接收到異常而以非增強記憶體模式操作該計算設備。
在另一態樣,將軟體應用程式載入到NVRAM中可以包括將軟體映射從儲存記憶體載入到NVRAM中,該軟體映射被配置為在NVRAM內執行。
在另一態樣,該方法可以包括將軟體應用程式劃分為複數個軟體映射,其中將軟體應用程式載入到NVRAM中可以包括將複數個軟體映射的子集載入到NVRAM中。
在另一態樣,該方法可以包括辨識複數個軟體映射中的、將從與NVRAM中的執行相關聯的改進中受益最多的軟體映射,其中將複數個軟體映射的子集載入到NVRAM中可以包括:將所辨識的軟體映射載入到NVRAM中。
另外的態樣可以包括一種計算設備,該計算設備包括NVRAM以及耦合到NVRAM的處理器,其中處理器可以配置有處理器可執行指令以執行操作,該等操作可以包括:決定軟體應用程式是否為增強記憶體模式的候選者;回應於決定軟體應用程式是增強記憶體模式的候選者,將軟體應用程式載入到NVRAM中,並且設定增強記憶體模式指示符,增強記憶體模式指示符可操作以用於以增強記憶體模式啟用對該計算設備的後續引導;在重新引導該計算設備之後,決定增強記憶體模式指示符是否被設定;及回應於決定增強記憶體模式指示符被設定,經由開始從NVRAM對軟體應用程式的執行來以增強記憶體模式操作該計算設備。在一態樣,處理器可以配置有處理器可執行指令以執行操作,該等操作亦包括:回應於決定軟體應用程式不是增強記憶體模式的候選者而將軟體應用程式載入到揮發性記憶體中,以及回應於決定增強記憶體模式指示符未被設定而開始從揮發性記憶體對軟體應用程式的執行。
在另一態樣,處理器可以配置有處理器可執行指令以執行操作,使得決定軟體應用程式是否為增強記憶體模式的候選者包括:決定軟體應用程式的大小值,決定軟體應用程式的功率消耗值,決定軟體應用程式的引導時間值,基於大小值、功率消耗值以及引導時間值來決定費用度量值,決定費用度量值是否超過閾值,回應於決定費用度量值超過閾值而決定軟體應用程式不是增強記憶體模式的候選者,以及回應於決定費用度量值未超過閾值而決定軟體應用程式是增強記憶體模式的候選者。
另外的態樣可以包括一種計算設備,該計算設備包括:用於決定軟體應用程式是否為增強記憶體模式的候選者的單元;用於回應於決定軟體應用程式是增強記憶體模式的候選者而將軟體應用程式載入到NVRAM中並且設定增強記憶體模式指示符的單元,增強記憶體模式指示符可操作以用於以增強記憶體模式啟用對該計算設備的後續引導;用於在重新引導計算設備之後決定增強記憶體模式指示符是否被設定的單元;及用於回應於決定增強記憶體模式指示符被設定而經由開始從NVRAM對軟體應用程式的執行來以增強記憶體模式操作該計算設備的單元。在一態樣,該計算設備可以包括用於回應於決定軟體應用程式不是增強記憶體模式的候選者而將軟體應用程式載入到揮發性記憶體中的單元,以及用於回應於決定增強記憶體模式指示符未被設定而開始從揮發性記憶體對軟體應用程式的執行的單元。
在另一態樣,用於決定軟體應用程式是否為增強記憶體模式的候選者的單元可以包括:用於決定軟體應用程式的大小值的單元,用於決定軟體應用程式的功率消耗值的單元,用於決定軟體應用程式的引導時間值的單元,用於基於大小值、功率消耗值以及引導時間值來決定費用度量值的單元,用於決定費用度量值是否超過閾值的單元,用於回應於決定費用度量值超過閾值而決定軟體應用程式不是增強記憶體模式的候選者的單元,以及用於回應於決定費用度量值未超過閾值而決定軟體應用程式是增強記憶體模式的候選者的單元。
將參考附圖來詳細描述各種實施例。無論任何可能情況下,在整個附圖中將使用相同的部件符號來代表相同或相似的部分。對特定實例和實現方式的參考出於說明性目的,並且不意欲限制請求項的範疇。
術語「行動設備」、「行動計算裝置」和「可攜式計算設備」在本文中可以用於代表以下各項中的任何一項或全部:蜂巢式電話、智慧型電話、個人或行動多媒體播放機、個人資料助理(PDA)、膝上型電腦、平板電腦、智慧型電腦、小筆電、超級本、掌上型電腦、無線電子郵件接收器、具有多媒體網際網路能力的蜂巢式電話、無線遊戲控制器、物聯網路(IoT)設備、可穿戴設備、掌上型電腦以及包括可程式設計處理器、記憶體及/或通訊電路的類似的個人電子設備,該通訊電路用於經由有線或無線的通訊鏈路或技術來發送和接收資訊。
如在本案中所使用的,術語「部件」、「模組」、「系統」、「引擎」等意欲包括電腦相關的實體,例如但不限於硬體、韌體、硬體和軟體的組合、軟體或執行中的軟體,其被配置為執行特定的操作或功能。例如,部件可以是但不限於在處理器上執行的程序、處理器、物件、可執行檔、執行執行緒、程式及/或電腦。經由說明的方式,在計算設備上執行的應用和計算設備兩者都可以被稱為部件。一或多個部件可以常駐在程序及/或執行執行緒內,並且部件可以位於一個處理器或核心上及/或分佈在兩個或更多個處理器或核心之間。另外,這些部件可以從其上儲存有各種指令及/或資料結構的各種非暫時性電腦可讀取媒體執行。部件可以經由本端程序及/或遠端程序、函數或程式撥叫、電子信號、資料封包、記憶體讀取/寫入以及其他已知的網路、電腦、處理器及/或程序相關的通訊方法進行通訊。
術語「片上系統」(SOC)在本文中用於代表包含整合在單個基板上的多個資源、處理器及/或處理核心的單個積體電路(IC)晶片。單個SOC可以包含用於數位、類比、混合信號和射頻功能的電路。單個SOC亦可以包括任何數量的通用及/或專用處理器(數位訊號處理器、數據機處理器、視訊處理器等)、記憶體區塊(例如,ROM、RAM、快閃記憶體等)和資源(例如,計時器、電壓調節器、振盪器等)。SOC亦可以包括用於控制整合資源和處理器以及用於控制周邊設備的軟體。
多種不同類型的記憶體和記憶體技術將來可用或設想,這些記憶體和記憶體技術中的任何一種或全部可以包括在實現各種實施例的系統和計算設備中並且在實現各種實施例的系統和計算設備中使用。此類記憶體技術/類型可以包括非揮發性隨機存取記憶體(NVRAM),例如,磁阻RAM(M-RAM)、電阻隨機存取記憶體(ReRAM或RRAM)、相變隨機存取記憶體(PC-RAM、PRAM或PCM)、鐵電RAM(F-RAM)、自旋移矩磁阻隨機存取記憶體(STT-MRAM)和三維交叉點(3D-XPOINT)記憶體。此類記憶體技術/類型亦可以包括非揮發性或唯讀記憶體(ROM)技術,例如,可程式設計唯讀記憶體(PROM)、現場可程式設計唯讀記憶體(FPROM)、一次性可程式設計非揮發性記憶體(OTP NVM)。此類記憶體技術/類型亦可以包括揮發性隨機存取記憶體(RAM)技術,例如,動態隨機存取記憶體(DRAM)、雙倍資料速率(DDR)同步動態隨機存取記憶體(DDR SDRAM)、靜態隨機存取記憶體(SRAM)和偽靜態隨機存取記憶體(PSRAM)。實現各種實施例的系統和計算設備亦可以包括或使用電子(固態)非揮發性電腦儲存媒體,例如,FLASH記憶體。上面提及的記憶體技術之每一者包括例如適合於儲存用於在電腦或其他數位電子設備中使用或由電腦或其他數位電子設備使用的指令、程式、控制信號及/或資料的元件。對與單獨類型的記憶體、介面、標準或記憶體技術相關的術語及/或技術細節的任何引用僅用於說明目的,而並不意欲將請求項的範疇限制於特定記憶體系統或技術,除非以請求項語言明確地引述。
電腦記憶體的效能、安全性和功率消耗特性對於工程師和電子製造商而言是重要的設計標準。例如,可攜式計算設備存取和使用儲存在其各種類型的記憶體中的資訊所要求的存取時間可能對設備的回應性和可用性具有顯著影響。另外,可攜式計算設備使用者現在通常使用其設備來儲存敏感資訊(例如,信用卡資訊、連絡人等)及/或完成安全性很重要的任務。例如,可攜式計算設備使用者現在經常使用其設備來購買商品,發送和接收敏感通訊,支付帳單,管理銀行帳戶以及進行其他敏感交易。這些交易往往要求計算設備以安全的方式儲存對竊賊和惡意行為者具有高價值的敏感或機密資訊。出於這些原因,在不消耗大量的計算設備的處理資源或電池資源的情況下保護儲存在計算設備的記憶體中的資訊變得越來越重要。
竊賊或惡意行為者可能實體地解構計算設備及/或其SOC,移除其內部或外部記憶體以及從這些記憶體中恢復敏感資訊。安全解決方案可以嘗試經由對儲存在計算設備的記憶體中的所有資訊進行加密來防止這種攻擊。然而,加密計算設備中的所有記憶體的全部內容並且每次使用資訊時對資訊進行解密可能消耗大量的該設備的處理資源和電池資源。在諸如可攜式計算設備之類的資源受限系統中,這種廣泛的加密/解密操作可能使設備在相當長的時間段內無回應或不可用或以其他方式使使用者體驗降級。
為了平衡效能、功率消耗以及安全性之間的折衷,現代計算設備僅對諸如ROM或FLASH記憶體之類的儲存記憶體的內容進行加密。亦即,由於DRAM和SRAM記憶體要求電力來儲存和保留資料,因此儲存在這些記憶體中的資訊典型地在計算設備斷電後幾微秒消失。因此,竊賊和惡意行為者無法在資訊消失之前解構設備以提取資訊。
由於DRAM和SRAM記憶體的這些特性和其他特性,現代計算設備典型地不對儲存在DRAM和SRAM記憶體中的大量的資訊進行編碼。另外,DRAM和SRAM儲存器具有高速讀取-寫入特性(亦即,短存取時間),並且典型地用於對執行代碼的臨時儲存或用於受益於高速的讀取和寫入操作的其他操作。對此類記憶體的內容進行加密和解密對於每個讀取/寫入操作而言花費時間,並且因此可能消極地影響計算設備的效能和回應性。
與DRAM和SRAM記憶體不同,NVRAM記憶體是即使電源關閉時亦保留資料的隨機存取記憶體。然而,與DRAM和SRAM記憶體一樣,NVRAM儲存器具有高速讀取-寫入特性(亦即,短存取時間)。因此,使用NVRAM記憶體允許計算設備受益於隨機存取記憶體的高速讀取-寫入特性以及ROM或儲存記憶體的資訊保持特性兩者。NVRAM具有優於DRAM和SRAM記憶體的益處,因為不需要週期性地刷新記憶體,這節省了功率。然而,NVRAM記憶體製造昂貴並且典型地具有比DRAM和SRAM記憶體小得多的儲存容量。另外,因為NVRAM記憶體保留資料,所以儲存在NVRAM記憶體中的資訊要求加密及/或其他類似的安全措施。否則,竊賊或惡意行為者可能解構設備,移除NVRAM記憶體以及提取其上包含的資訊。出於這些原因,一組不同的安全協定適用於NVRAM而非DRAM或SRAM。
FLASH記憶體是可抹除且可重新程式設計的ROM或儲存記憶體。FLASH記憶體是非揮發性的,因為其在電源關閉時保留資料。然而,與NVRAM技術不同,FLASH記憶體不是真正的隨機存取記憶體。FLASH記憶體不是位元可定址的,並且要求計算設備以大的區塊進行讀取和寫入。另外,讀取或寫入FLASH記憶體是比讀取或寫入NVRAM記憶體慢得多的操作。此外,由於FLASH記憶體中要求的大的區塊大小,對FLASH記憶體的內容進行加密是相對慢的操作,其可能消耗計算設備的大量可用的處理資源和功率資源。
各種實施例包括被配置為實現以下方法的方法和計算系統:用於安全且智慧地利用NVRAM記憶體來進行快速啟動、快速狀態改變、低功率設備操作以及高速代碼執行。
計算設備處理器可以被配置為:經由從儲存記憶體(例如,ROM、FLASH等)讀取軟體應用程式,解密程式,解壓縮程式以及將經解密且經解壓縮的程式的副本載入到揮發性記憶體(例如,DRAM)中,以非增強記憶體模式(或正常模式)操作。隨後,計算設備處理器可以將控制轉移到程式計數器,該程式計數器使用處理器來開始從揮發性記憶體執行代碼。
與從NVRAM執行相同代碼相比,從揮發性記憶體執行代碼花費更長時間並且消耗更多功率。因此,在一些實施例中,計算設備處理器可以被配置為使用NVRAM以增強記憶體模式(例如,功率節省模式、高速執行模式等)安全地操作,這改程序式或設備的引導時間、狀態轉換速度、執行時間及/或功率消耗特性。在一些實施例中,計算設備處理器可以被配置為經由將標誌或暫存器值設定而使得在下一階段、循環、重新引導或啟動中發生快速引導、低功率操作、高速執行等來轉換到增強記憶體模式。
在一些實施例中,計算設備處理器可以被配置為偵測NVRAM的特性將對其有益的程式、操作或條件,轉換為在有限時間內以利用NVRAM的增強記憶體模式操作,以及針對其他操作轉換回正常模式(或非增強記憶體模式)。如本文所使用的,術語「增強記憶體模式」代表其中可執行代碼儲存在NVRAM中,維持在NVRAM中及/或從NVRAM執行以改進計算設備的操作(例如,提供功率節省、更快的操作及/或低時延引導)的操作模式。經由在有限時間內以利用NVRAM的增強記憶體模式操作,並且針對更多例行操作轉換回正常模式,處理器可以智慧地利用有限的NVRAM資源並且確保足夠的NVRAM資源仍然可用於其他用途。在整個說明書中例如參考圖6和圖7描述了增強記憶體模式的實例。
在一些實施例中,計算設備處理器可以被配置為探查/評估當前及/或下一操作程式以決定系統或程式是否將受益於快速啟動、快速狀態改變、低功率設備操作或高速代碼執行。計算設備處理器可以決定程式是否適合可用的NVRAM儲存容量。計算設備處理器可以回應於決定程式將受益於低功率設備操作或高速代碼執行並且程式可能適合可用的NVRAM儲存容量而將程式載入到可用NVRAM中。隨後,計算設備處理器可以經由將控制轉移到適當的程式計數器來從NVRAM執行程式。
例如,可穿戴計算設備(例如,手錶等)中的處理器可以評估計步器軟體應用以決定應用從計步器讀取資訊,進入睡眠狀態,並且隨後每100毫秒喚醒以從計步器讀取附加資訊或更新的資訊。基於該評估,處理器可以決定進入和退出睡眠狀態的操作消耗大量的設備的有限電池資源來將指令重新載入到DRAM中(例如,不僅僅是用於從計步器讀取資訊的操作等),及/或計步器應用否則將受益於快速引導和低功率設備操作。隨後,處理器可以決定可供使用的NVRAM的量,決定計步器應用可能適合可用的NVRAM儲存容量,將計步器應用載入到可用NVRAM中,以及從NVRAM執行應用。在該實例中,從NVRAM執行應用經由改進可穿戴計算設備的引導時間並且降低其功率消耗來改進可穿戴計算設備的效能和運轉。
在一些實施例中,計算設備處理器可以決定將受益於快速啟動(或快速狀態改變、低功率設備操作、高速代碼執行等)的程式不能適合可用的NVRAM儲存容量。作為回應,計算設備處理器可以將程式劃分為映射部分,辨識將最受益於(或使設備受益最多)低功率設備操作或高速代碼執行的(多個)映射部分,將(多個)所辨識的映射載入到可用NVRAM中,以及僅從NVRAM執行這些部分。計算設備處理器可以將分區的其他部分載入到DRAM或其他類似的揮發性記憶體中,並且結合從NVRAM執行與其相應記憶體分開地執行這些代碼部分。在各種實施例中,計算設備處理器可以被配置為串列地、彼此結合地、併發地或並行地從不同記憶體執行不同部分。以這種方式從NVRAM執行代碼的一部分經由改進設備的效能和功率消耗特性來改進設備的運轉。
在一些實施例中,計算設備處理器可以被配置為決定從NVRAM繼續執行程式或映射部分是否仍然對設備有益(例如,提供持續的功率節省,高速執行仍然很重要等)。回應於決定從NVRAM繼續執行程式或映射部分沒有顯著改善設備的效能或功率消耗特性,計算設備可以將程式或映射從使用NVRAM執行移除,使得應用從揮發性記憶體(例如,DRAM)執行。回應於決定可以經由在NVRAM中執行另一程式或部分來實現對設備的效能或功率消耗特性的更大改進,計算設備可以將程式或映射從使用NVRAM執行移除,使得應用從揮發性記憶體執行。經由連續地或重複地評估從NVRAM執行的程式或部分,並且從NVRAM移除表現不佳的部分,各種實施例經由確保以最高效的方式使用有限的NVRAM資源來改進設備的運轉。
在一些實施例中,計算設備處理器可以被配置為回應於與存取儲存在記憶體中的資訊的授權嘗試一致的決定來發起NVRAM的自毀特徵或者執行自毀操作以永久地禁用NVRAM。例如,在設備啟動時,處理器可以使計算設備進入正常或預設狀態,其中控制對NVRAM的讀取/寫入存取的門機制被鎖定。處理器可以接收用於另一部件(例如,SOC、認證引擎等)的密碼,並且執行密碼認證操作以決定接收到的密碼是否有效或真實可信。回應於決定密碼有效/真實可信,處理器可以解鎖門機制以啟用對NVRAM的讀取/寫入存取。另一態樣,回應於決定密碼不是有效或真實可信的,處理器可以遞增計數器值及/或決定計數器值是否超過閾值。若計數器超過閾值,則處理器可以啟動NVRAM的自毀特徵,或者開始執行自毀操作,以永久地禁用NVRAM。
在一些實施例中,計算設備處理器可以被配置為以正常或非增強記憶體模式啟動並開始對軟體應用程式的執行。處理器可以對當前操作的軟體應用程式及/或包括在設備的執行佇列中的軟體應用程式進行評估。處理器可以基於對當前操作的軟體應用程式及/或包括在設備的執行佇列中的軟體應用程式進行評估的結果來決定計算設備是否將受益於快速啟動、快速狀態改變、低功率設備操作或高速代碼執行。
回應於決定計算設備將受益於快速啟動、快速狀態改變、低功率設備操作或高速代碼執行,計算設備處理器可以設定增強記憶體模式指示符的值以指示或指定後續引導應以增強記憶體模式進行。增強記憶體模式指示符可以是低功率模式指示符、快速引導時間模式指示符、快速狀態轉換模式指示符、高速執行模式指示符、暫存器、標誌、傳遞門鍵/值、門機制、儲存在設備的任何非揮發性記憶體中的值等。在將增強記憶體模式指示符的值設定之後,計算設備處理器可以執行各種操作以使計算設備進入斷電狀態(或睡眠狀態、電力系統故障狀態、休眠狀態、深度睡眠狀態、重啟狀態、關閉狀態等)。
計算設備處理器可以接收退出斷電狀態的命令,讀取增強記憶體模式指示符的值,並且基於增強記憶體模式指示符的值來決定設備應以增強記憶體模式操作。作為回應,處理器可以建立到NVRAM的可信通道,並且經由從NVRAM執行軟體應用程式的全部或部分來開始以增強記憶體模式操作。處理器可以在程式執行期間使用可信通道來讀取和寫入NVRAM。
圖1圖示根據一些實施例的可以包括在可攜式計算設備中的系統100的方塊圖,該可攜式計算設備被配置為以正常模式或增強記憶體模式(例如,功率節省模式、高效能模式等)智慧地啟動。在圖1所示的實例中,系統100包括外部應用處理器(AP)140、SOC 102、NVRAM部件104、RAM部件105、儲存記憶體部件106以及功率管理控制器108。
SOC 102可以包括多個子系統和邏輯區塊,其在計算設備內實現各種功能。例如,圖1圖示SOC 102可以包括CPU 110,SRAM部件112,包括可信引導程式130的ROM部件114,各種互連/匯流排116、124、125、126、128、142,功率管理介面118,NVRAM控制器120,RAM控制器121,儲存記憶體控制器122,內聯加密引擎(ICE)160,熔絲132,金鑰產生(keygen)引擎165,數位元訊號處理器(DSP)167,認證引擎169以及輸入/輸出(I/O)控制器199。
互連/匯流排116、124、125、126、128、142之每一者可以是邏輯結構、實體結構、片上網路(NoC)或任何數量的等效通訊通道。NVRAM部件104可以包括門機制172。儲存記憶體部件106可以包括輔助引導程式106A。在一些實施例中,功率管理控制器108可以包括計時器部件146和標誌部件148。在其他實施例中,計時器部件146及/或標誌部件148可以包括在包括非揮發性記憶體的另一部件或子系統中,例如,在儲存記憶體部件106內。
CPU 110可以經由互連/匯流排116電耦合到SOC 102內的各種部件。CPU 110可以被配置為執行軟體應用程式以實現本案中描述的各種功能。
SRAM部件112可以經由互連/匯流排116電耦合到SOC 102內的各種部件。SRAM是一種類型的半導體記憶體,其使用雙穩態鎖存電路並且典型地用於與CPU相關的緩存操作。
ROM部件114可以經由互連/匯流排116電耦合到SOC 102內的各種部件。ROM部件114可以儲存或包含CPU 110可存取的資料,包括與引導相關的代碼及/或指令。可信引導程式130可以常駐在ROM部件114內。可信引導程式130可以由SOC 102在引導操作期間用於對包括SOC 102的計算設備加電。在一些實施例中,可信引導程式130可以由CPU 110使用可信執行環境或TrustZone配置來執行,以確保對可信引導程式130的安全存取和執行。
當計算設備處於斷電狀態時,可能要求冷引導。在冷引導期間,揮發性記憶體(例如,RAM部件105)可能是未知的或可能包含不可靠的資料。在一些實施例中,可信引導程式130可以儲存在ROM部件114中,這允許可信引導程式130以實質上不可更改的狀態被儲存。
儲存在儲存記憶體部件106中的輔助引導程式106A可以在操作之前由可信引導程式130進行認證。可能存在多個不可信的輔助引導程式(未單獨示出)。可以將這些不可信的輔助引導程式從儲存記憶體部件106複製到SRAM部件112、RAM部件105或NVRAM部件104中,以在成功驗證及/或解密之後啟用以程式設計方式的執行。不可信的輔助引導程式可以在整個引導程序期間這樣認證和執行:順序地、併發地或其任何組合。解密可以調用內聯加密引擎(例如,ICE 160)。在睡眠期間,揮發性記憶體是已知的並且仍然可信。因此,從睡眠模式或睡眠狀態引導或轉出通常要求實質上比從斷電狀態執行冷引導少的操作。
認證引擎169可以經由互連/匯流排116電耦合到SOC 102的各種部件。認證引擎169可以被配置為提供對與計算設備的引導操作相關的資料及/或指令的驗證。在一些實施例中,認證引擎169可以被配置為協助儲存在ROM部件114中的可信引導程式130。例如,認證引擎169可以被配置為協助可信引導程式130對不可信的輔助引導程式106A進行認證。
在一些實施例中,在一系列順序引導程式中,認證引擎169可以被配置為協助第一輔助引導程式106A對第二不可信的輔助引導程式(圖1中未單獨示出)進行認證。
在一些實施例中,認證引擎169可以被配置為對門機制172進行解鎖並且提供經由秘密頻道對NVRAM部件104的存取。
在一些實施例中,認證引擎169可以由以安全模式在CPU 110內執行的程式代替。例如,系統可以被配置為在CPU 110內調用TrustZone模式配置,從而允許CPU 110安全地執行應用程式,該應用程式執行認證引擎169的功能。
數位訊號處理器(DSP)167可以經由互連/匯流排116電耦合到SOC 102內的各種部件。DSP 167可以用於量測、過濾及/或壓縮連續的現實世界類比信號。DSP 167內配置的功能或演算法中的許多可以是可操作以用於在CPU 110上執行的。DSP 167對於某些操作可以具有更好的功率效率和更高的效能。在一些實施例中,可以將第一組操作分配給CPU 110,並且可以將第二組操作分配給DSP 167。這可以允許系統受益於處理單元(亦即,CPU 110和DSP 167)之每一者處理單元提供的優點。在各種實施例中,第一組操作和第二組操作可以是擴及同空間的及/或相關的。
金鑰產生引擎165可以經由互連/匯流排116電耦合到SOC 102內的各種部件。在一些實施例中,金鑰產生引擎165可以被配置為產生安全金鑰。在一些實施例中,金鑰產生引擎165可以被配置為產生適合用於配置ICE 160部件的金鑰。此外,金鑰可以利用NVRAM部件104來初始化秘密頻道。在一些實施例中,金鑰產生引擎165可以是具有額外的安全措施以防止駭客攻擊、篡改、窺探等的硬體塊。在一些實施例中,可以利用ICE 160部件對包括儲存在儲存記憶體部件106內的輔助引導程式106A的軟體映射進行加密或解密。在一些實施例中,ICE 160部件可以被配置為執行與儲存介面(例如,嵌入式多媒體控制器(eMMC)、通用快閃儲存(UFS)等)或輸入-輸出介面(例如,通用序列匯流排(USB)、快速周邊部件連接(PCIe)等)一致的加密。在一些實施例中,ICE 160可以在單獨的硬體塊中實現,而不是整合在儲存記憶體控制器122內。
在一些實施例中,金鑰產生引擎165可以被配置為從ROM部件114及/或熔絲132存取資料以完成由ICE 160進行的操作。熔絲132可以經由互連/匯流排116電耦合到SOC 102內的各種部件。在各種實施例中,熔絲132中的任何一個或全部可以是可程式設計唯讀記憶體(PROM)、現場可程式設計唯讀記憶體(FPROM)、一次性可程式設計非揮發性記憶體(OTP NVM)或另一類似的非揮發性記憶體。
功率管理介面118可以經由互連/匯流排124連接到功率管理控制器108。同樣,功率管理介面118可以經由互連/匯流排116電耦合到SOC 102內的各種部件。在功率管理控制器108內,可以利用計時器146來追蹤事件(例如,喚醒警報、協助功率控制、協助引導操作等)。例如,IoT設備可以被配置為每十(10)分鐘喚醒一次以執行感測任務。功率管理控制器108可以具有標誌部件148,其指示當SOC 102引導時SOC 102的期望功率狀態。例如,標誌部件148可以指示正常模式或增強記憶體模式。
NVRAM控制器120可以經由互連/匯流排126電耦合到NVRAM組件104。同樣,NVRAM控制器120可以經由互連/匯流排116電耦合到SOC 102內的各種部件。NVRAM部件104可以用於在SOC 102操作或斷電時對資料和可執行代碼的操作儲存。本發明所屬領域中具有通常知識者將認識到,NVRAM部件104可以是自旋移矩磁阻隨機存取記憶體(STT-MRAM)、電阻隨機存取記憶體(RE-RAM)、三維交叉點(3D-XPOINT)等。
在一些實施例中,NVRAM部件104可以由門機制172保護,門機制172防止對儲存在NVRAM部件104內的資料及/或代碼的未授權存取。本發明所屬領域中具有通常知識者將認識到對門機制172的需要,因為NVRAM部件104可操作以用於即使在SOC 102已經斷電之後亦儲存資料。因此,包含在NVRAM部件104內的資料對於使用者可能具有高價值並且要求附加的安全措施,這對於傳統形式的RAM可能不是必要的,因為傳統形式趨向於一旦斷電則快速丟失資料(亦即,記憶體是揮發性的)。
RAM控制器121可以經由互連/匯流排125電耦合到RAM組件105。同樣,RAM控制器121可以經由互連/匯流排116電耦合到SOC 102內的各種部件。在SOC 102操作時,RAM部件105可以用於對資料、堆疊和可執行代碼的操作儲存。
儲存記憶體控制器122可以經由互連/匯流排128電耦合到儲存記憶體部件106。同樣,儲存記憶體控制器122可以經由互連/匯流排116電耦合到SOC 102的各種部件。儲存記憶體部件106可以用於在SOC 102操作或斷電時對資料和可執行代碼的儲存。在一些實施例中,ICE 160可以包括在儲存記憶體控制器122內。在各種實施例中,ICE 160部件可以以硬體、軟體、韌體或其任何組合來實現。在一些實施例中,ICE 160部件可以被配置為實現各種安全措施以防止篡改、駭客攻擊、窺探等。
外部應用處理器(AP)140可以經由互連/匯流排142電耦合到SOC 102內的I/O控制器199,允許AP 140與SOC 102之間的通訊。此外,AP 140和SOC 102可以選擇性地共享資源。AP 140與SOC 102之間的通訊可以包括控制信號、狀態訊息及/或其他資料的雙向傳輸。SOC 102與AP 140之間的共享資源可以包括任何內部狀態或功能特徵,例如,永久唯讀記憶體、揮發性記憶體、非揮發性記憶體、處理器、加速器、引擎等。
在一些實施例中,外部AP 140可以是SOC。在一些實施例中,外部AP 140可以是被配置用於對補充SOC 102的功能的專用任務進行託管的處理器。本發明所屬領域中具有通常知識者將認識到,現代計算設備可以包括許多的SOC、處理器、記憶體等。外部AP 140被示出為強調另一個SOC及/或處理器可以與SOC 102互動以實現行動設備或可攜式計算設備的期望功能(例如,經由蜂巢網路進行通訊,擷取視訊/圖像,播放三維遊戲等)。例如,外部AP 140可以是圖形處理單元(GPU),其被配置為向SOC 102提供圖形處理協助。在另一實例中,外部AP 140可以是蜂巢通訊SOC,其被配置為使得能夠經由SOC 102進行計算設備的無線通訊。
圖2圖示用於對被製造為包含SOC 102和NVRAM部件104的計算設備進行初始化的實施例方法200。參考圖1和圖2,方法200可以由可攜式計算設備的處理器及/或系統100中的一或多個部件來執行,例如,SOC 102、CPU 110、DSP 167、NVRAM組件104、熔絲132、認證引擎169、門機制172等。在下面對圖2的描述中,參考執行方法200的操作的「處理器」,以整體包含可以執行方法操作的各種處理器及/或電路。
在方塊202中,處理器(例如,CPU 110、DSP 167等)可以將NVRAM部件104配置為初始狀態,其中經由對門機制172進行解鎖並且設置私密金鑰= 0,最初禁用傳遞門特徵。在方塊204中,經由供應私密金鑰= b,設置自毀計數器閾值(MAX_TRY_THRESHOLD)= n,密碼=「password」,以及啟用傳遞門特徵,處理器可以將NVRAM部件104與SOC 102配對。
在方塊206中,處理器可以開始執行啟動序列以喚醒或啟動可攜式計算設備。在設備啟動時,處理器可以使設備進入其中門機制172被鎖定的預設狀態。另外,處理器可以執行金鑰交換序列及/或從一組公開金鑰p和g中隨機選擇。
在決定方塊208中,處理器、認證引擎169及/或NVRAM部件104可以發起密碼認證並且決定密碼是否有效或真實可信。在一些實施例中,處理器亦可以被配置為在方塊208中使自毀失敗嘗試(SDFTC)值遞增或清零。回應於認證密碼或決定密碼有效/真實可信(亦即,決定方塊208 =「是」),在方塊216中,處理器可以解鎖門機制172以啟用對NVRAM部件104的讀取/寫入存取。在一些實施例中,在方塊216中成功解鎖門機制172之後,處理器可以重置SDFTC值。
在決定方塊218中,處理器可以決定其是否接收到(例如,從軟體應用程式等)請求設備斷電、重置、休眠或進入另一類似狀態的指令。回應於決定尚未接收到請求設備斷電、重置、休眠或進入另一類似狀態的指令(亦即,決定方塊218 =「否」),處理器可以繼續處理操作(例如,執行指令,等待中斷等),直到在決定方塊218中處理器決定其接收到請求設備斷電、重置、休眠或進入另一類似狀態的指令。
回應於決定已經接收到請求設備斷電、重置、休眠或進入另一類似狀態的指令(亦即,決定方塊218 =「是」),在方塊220中,處理器可以鎖定門機制172。隨後,處理器可以使設備進入所請求的狀態,直到其接收到在方塊206中開始執行啟動序列以喚醒或啟動可攜式計算設備的指令。在一些實施例中,在方塊218中斷電、重置或進入休眠模式可以在執行時執行時段之後發生以完成任務。
回應於決定密碼不是有效或真實可信的(亦即,決定方塊208 =「否」),在決定方塊210中,處理器可以決定SDFTC值是否超過閾值(例如,MAX_TRY_THRESHOLD值等)。在一些實施例中,處理器亦可以在方塊208中使SDFTC值遞增或更新。
回應於決定SDFTC值超過閾值(亦即,決定方塊210 =「是」),在方塊214中,處理器可以發起自毀特徵或開始執行自毀操作以永久地禁用NVRAM組件104。
回應於決定SDFTC值未超過閾值(亦即,決定方塊210 =「否」),在方塊212中,處理器可以將門機制172維持在「鎖定狀態」。隨後,處理器可以使SDFTC值遞增(若需要)並且等待接收在方塊206中開始執行啟動序列以喚醒或啟動可攜式計算設備的指令。
在圖2所示的實例中,處理器啟用傳遞門特徵作為用於將NVRAM部件104與SOC 102配對的操作中的部分操作的一部分。然而,亦應認識到,在一些實施例中,在不啟用傳遞門特徵的情況下,在方塊204中NVRAM部件104可以與SOC 102配對。以這種方式,NVRAM部件104可以以其中SOC未被配置為支援防篡改操作的「傳統式」模式使用。例如,在一些實施例中,SOC 102可以不包括熔絲132。作為另一實例,SOC 102可以不支援可能要求及閘機制172通訊並且控制門機制172的附加命令。
圖3圖示用於經由門機制172、熔絲132和(多個)NVRAM熔絲(未圖示)提供對NVRAM部件104的安全存取的方法300。參考圖1-3,方法300可以由可攜式計算設備的處理器及/或系統100或SOC 102中的一或多個部件執行,例如,CPU 110、DSP 167、NVRAM部件104、熔絲132、認證引擎169、門機制172等。在下面對圖3的描述中,參考執行方法d00的操作的「處理器」,以整體包含可以執行方法操作的各種處理器及/或電路。
在方塊302中,處理器可以發起引導序列以啟動設備並且開始執行可信引導程式130。在一些實施例中,可信引導程式130可以在CPU 110上執行。在一些實施例中,可信引導程式130可以在DSP 167上執行。可信引導程式130可以初始化對儲存在SOC 102上的(多個)熔絲132中的解鎖密碼的取出。
在方塊304中,處理器及/或NVRAM控制器120可以向NVRAM部件104發送解鎖密碼。在一些實施例中,在方塊304中,NVRAM控制器120可以經由互連/匯流排126將解鎖密碼發送到NVRAM部件104。在一些實施例中,解鎖密碼可以以加密格式發送。在一些實施例中,解鎖密碼可以以未加密格式發送。在一些實施例中,可以在SOC 102內執行加密。在一些實施例中,解鎖密碼可以由在CPU 110上執行的軟體以程式設計方式加密。
在方塊306中,NVRAM部件104可以接收解鎖密碼。在方塊308中,NVRAM可以將未經加密的解鎖密碼與儲存在(多個)熔絲132中的值進行比較以產生比較結果。在決定方塊310中,處理器可以基於比較結果來決定解鎖密碼是否與(多個)熔絲132中的值匹配。
回應於決定解鎖密碼與(多個)熔絲132中的值匹配(亦即,決定方塊310 =「是」),在方塊312中,處理器可以解鎖門機制172以解鎖或啟用對NVRAM組件的存取。在方塊312中的功能完成之後,方法300前進到結束(END)方塊並且終止。
回應於決定解鎖密碼與(多個)熔絲132中的值不匹配(亦即,決定方塊310 =「否」),在方塊314中,處理器可以將門機制172維持在鎖定狀態,以防止對NVRAM部件104的讀取/寫入存取。隨後,處理器可以在結束方塊中結束方法300。
應認識到,解鎖方法/操作可以經由各種方式(SOC 102中的CPU 110、DSP 167或其他微處理器(未圖示))來操作,以適應功率消耗、安全級別等。
亦應認識到,NVRAM部件104中的門機制172可以以各種方式實現,以適應成本、複雜性、效能、安全級別及/或其他類似因素中的任何或全部因素。本發明所屬領域中具有通常知識者將認識到在不使用較複雜的微控制器的情況下,使用最小的記憶體晶粒區域利用相對不複雜的電路和邏輯來實現門機制172的設計優點。然而,本發明所屬領域中具有通常知識者可以得出實現本文描述的相同功能的複雜實現方式。
圖4A是示出根據各種實施例的儲存記憶體部件106的方塊圖,該儲存記憶體部件106包括可以從儲存裝置(例如,ROM、FLASH等)載入到RAM部件105及/或NVRAM組件104中並且在RAM組件105及/或NVRAM部件104上執行的程式的非揮發性映射。在圖4A所示的實例中,儲存記憶體部件106包括映射A 407部分、映射B 410部分和檔案系統412部分。在一些實施例中,映射A 407可以與DSP 167相關聯。在一些實施例中,映射B 410可以與CPU 110相關聯。
在一些實施例中,映射A 407可以包括代碼部分417、唯讀(RO)部分420和讀取-寫入(RW)部分422。代碼部分417可以被配置為執行DSP 167的操作。例如,DSP 167可以是可操作以用於管理與由SOC 102支援的特定功能相關的增強處理操作或低功率處理操作(例如,類比轉數位蜂巢通訊)的。RO部分420可以包含常數、預設值、查閱資料表、在執行時執行期間不改變值的附加靜態資料,代碼部分417在其上進行操作。RW部分422可以包含資料的初始值,該資料可以由代碼部分417用於DSP 167執行要求對RAM部件105、NVRAM部件104及/或儲存記憶體部件106進行讀取操作和寫入操作兩者的操作。在一些實施例中,映射A 407可以包括程式A的初始狀態,並且可以從儲存記憶體部件106複製到RAM部件105、NVRAM部件104或SRAM部件112中以供執行。
將映射A 407與映射B 410進行比較,映射A 407可以與DSP 167相關聯,而映射B 410可以與CPU 110相關聯。映射B 410可以與映射A略微不同地配置,因為映射B 410具有代碼#1部分430和代碼部分#2 440。
在一些實施例中,代碼#1部分430可以被配置為在RAM部件105中執行,而代碼#2部分440可以被配置為在NVRAM部件104內執行。
代碼#1部分430可以與RO#1部分432和RW#1部分434相關聯。RO#1部分432可以包含代碼#1部分430在其上進行操作的資料。RW#1部分434可以包含資料的初始值,該資料可以由代碼#1部分430用於CPU 110執行要求讀取操作和寫入操作兩者的操作。
代碼#2部分440可以被配置為在NVRAM部件104內操作。RO#2部分442可以與映射B 410相關聯。RO#2部分442可以被配置為由代碼#2部分440與CPU 110結合地操作。此外,RO#2部分440可以具體地配置為常駐在NVRAM部件104中。在一些實施例中,RO#2部分442可以儲存當SOC 102在操作時不需要或不應更改的安全資料。兩個讀取-寫入部分444、446被配置作為兩個單獨的部分,RW#2-a部分444和RW#2-b部分446。下面進一步詳細描述RW部分444、446。本發明所屬領域中具有通常知識者將認識到,RW部分444、446可以與本文描述的其他RW部分/記憶體類似地利用。例如,RW#2-a部分444和RW#2-b部分446兩者可以使用儲存記憶體部件106中的初始值在NVRAM部件104中啟動。
在執行時期間,CPU 110可以讀取或寫入NVRAM部件104中的RW#2-a部分444和RW#2-b部分446。因此,可以改變NVRAM部件104中的值,但是儲存記憶體部件106中的初始值可以保持不變,並且若需要可以用於在下次系統啟動時初始化NV#部件104中的RW#2-a部分444和RW#2-b部分446。然而,如應在下面描述的,具有多個RW部分444、446是有利的。
本發明所屬領域中具有通常知識者將認識到,具有獨立的代碼部分(例如,代碼#1部分430和代碼#2部分440)使得能夠動態處理涉及潛在可分離功能的任務。作為說明性實例,代碼#1部分430可以對應於音訊編碼器,而代碼#2部分440可以對應於音訊解碼器。若使用者僅希望收聽音樂,則不需要示例性代碼#1部分430(包含示例性音訊編碼器)來重播音訊。因此,代碼#2部分440(包含示例性音訊解碼器)將被載入到記憶體(例如,RAM部件105、NVRAM部件104等)中。本發明所屬領域中具有通常知識者將進一步認識到超出本說明書的範疇但與提出的系統100完全一致的複雜用例。
檔案系統412可以常駐在儲存記憶體上。檔案系統412可以是可操作以用於儲存使用者資料(例如,照片、電子郵件、應用等)的一般檔案系統。例如,SOC 102可以對檔案系統412進行存取以實現使用者發起的操作(例如,在體育賽事期間擷取和儲存數位照片)。在一些實施例中,檔案系統412可以與映射407、410分離,如所示出的。在一些實施例中,檔案系統412可以封裝並包含映射407、410。
圖4B是示出根據各種實施例的程式可以載入到其上的RAM部件105的方塊圖。RAM資料可以常駐在RAM部件105內,在一些實施例中,RAM部件105可以是DDR或DRAM半導體。在圖4B所示的實例中,RAM部件105包括映射A 407A部分、映射B 410A部分和RAM緩衝器412部分。在一些實施例中,映射A 417A和映射B 410A可以從儲存記憶體部件106(圖4A中示出)載入到RAM組件105中。
映射A部分407A可以與代碼部分417A、RO部分420A、RW部分422A和堆疊425相關聯。代碼部分417A、RO部分420A和RW部分422A可以實質上類似於圖4A中所示的代碼部分417、RO部分420和RW部分422。
映射B部分410A可以與代碼#1部分430、RO#1部分432和RW#1部分434相關聯,所有這些可以與其在圖4A中所示的儲存記憶體部件106中的相應部分相同或實質上類似。映射B部分410A亦可以與堆疊部分436相關聯,這是為了描述的完整性並且展示了映射正在RAM組件105中執行。
在RAM資料被載入到RAM部件105中之前,可能需要儲存RAM資料並且隨後從儲存記憶體部件106取回RAM資料。RAM資料的量可以小於RAM部件105的容量,使得實質上映射A 407A和映射B 410A的整體可以兩者都載入到RAM部件105中。在一些實施例中,映射A部分407A可以包括映射A部分407的子集。
RAM緩衝器450可以針對由載入到RAM部件105中的代碼部分417A、430提供的各種用例來提供靜態讀取或讀取-寫入記憶體。
圖4C是示出根據各種實施例的程式可以載入到其上的NVRAM部件104的方塊圖。NVRAM資料可以常駐在NVRAM部件104內。在圖4C所示的實例中,NVRAM部件104包括映射A 407B部分、映射B 410B部分和操作控制標誌455部分。在一些實施例中,映射A 417B和映射B 410B可以從儲存記憶體部件106(圖4A中示出)載入到NVRAM組件104中。
映射A部分407B可以實質上類似於如儲存在儲存記憶體部件106中的映射A部分407。同樣,映射A部分407B可以實質上類似於儲存在RAM部件105中的映射A部分407A。因此,映射A部分407B可以具有代碼部分417B、RO部分420B和RW部分422B,所有這些可以僅包含如對應地儲存在儲存記憶體部件106中的、儲存在映射A部分407中的其對應物中可用的全部功能的子集。堆疊425可以存在於NVRAM資料407內,並且實質上類似於堆疊425如何在RAM資料106中操作來操作。
映射B部分410B可以包括代碼#2部分440、RO#2部分442、RW#2-A部分444、RW#2-B 446和RW#2-A 444的備份副本(稱為RW#2-A0 447)。在NVRAM部分410B中,可以另外存在RW#2-B 446的散列摘要,其可以被稱為RW#2-BH 461。此外,在NVRAM部分410B中,可以存在堆疊436。本發明所屬領域中具有通常知識者將認識到,映射B部分410B可以實質上類似於儲存在儲存記憶體部件106中的映射B部分410。
給定當前NVRAM實現方式的大小限制,映射A部分407B可以是如儲存在儲存記憶體部件106中的映射A 407的整體的子集。例如,SOC 102可以僅需要由DSP 167提供的功能的子集。因此,SOC 102可以以增強記憶體模式操作以減少可攜式計算設備上的功率消耗。以增強記憶體模式操作可以部分地因為僅映射A 407的部分用於引導操作而減少設備上的功率消耗。
在初始引導之後,可以更新/改變RW#2-A部分444和RW#2-B 446中的資料的值。由於NVRAM部件104的非揮發性質,在後續的啟動操作中,在沒有重新初始化的情況下,RW#2-A部分444和RW#2-B 446中的資料的值可以保持為更新後/改變後的值,而不是與如儲存記憶體部件106中的映射B 410中的初始值相同。然而,可能需要重新初始化RW資料中的一些,以便執行映射B 410B中的程式。在一些實施例中,RW#2-A部分444可以表示要求重新初始化的部分,並且RW#2-B 446可以表示不要求重新初始化為(多個)原始值的部分(相反保留來自先前執行/操作的狀態)。
在一些實施例中,系統100可以尋求避免在後續引導中對儲存記憶體部件106的啟用和存取。因此,稱為RW#2-A0的、RW#2-A 444的備份副本被保存在NVRAM組件104中,以避免需要啟用和存取儲存記憶體部件106。
RW#2-A0部分447可以用於將RW#2-A部分444重新初始化為其原始值。為了使RW#2-B 446在重新引導之後驗證其餘資料的完整性,可以利用最新值針對RW#2-B 446產生散列摘要RW#2-BH部分461。在一些實施例中,RW#2-BH部分461可以保存在NVRAM 406中並且用於在重新引導時確認RW#2-B部分446。經由具有RW#2-A0和RW#2-BH部分447、461,增強記憶體模式引導操作可以避免執行用於啟用和啟動儲存記憶體部件106的操作,從而減少系統100的能量消耗。
給定NVRAM部件104(或本文圖示的NVRAM單元407)的大小限制,可以載入映射B部分410的整體的一些部分作為映射B部分410B。例如,SOC 102可以以增強記憶體模式操作並且僅需要由CPU 110提供的功能的子集,因為增強記憶體模式部分地經由僅利用映射B 410的必要部分完成引導操作來節省功率。
一系列操作控制標誌可以常駐在NVRAM部件104的操作控制標誌455部分內。操作控制標誌亦可以儲存在記憶體/儲存裝置的任何可操作部分中以完成預期的功能。操作控制標誌可以用於向SOC 102指示是以正常模式還是以增強記憶體模式來引導。
關於各種映射407、407A、407B、410、410A、410B,本發明所屬領域中具有通常知識者將認識到,這些映射中的任何一個映射可以是靜態構建的或動態構建的(亦稱為「可重定位的」)。例如,可以根據程式設計的記憶體佈局來構建映射407、407A、407B、410、410A、410B,以將各種映射程式部分放置到指定的位址記憶體範圍中,並且進一步適應操作環境及/或相關聯的記憶體。因此,系統100可以將恰當的記憶體存取控制應用於映射407、407A、407B、410、410A、410B的不同部分。此外,作業系統(OS)或高級作業系統(HLOS)可以不同地將記憶體存取屬性配置用於映射的不同部分。此類設計可以利用不同的時延/功率屬性的性質,並且進一步分發映射的不同部分以充分利用益處。例如,映射B 410可以構建有用於RAM部件105的一個部分(映射B部分410A)和用於NVRAM部件104的另一部分(映射B部分410B)。此外,可以建立不同的映射用於不同的目的。例如,可以針對CPU 110構建映射A 407,並且可以針對DSP 167構建映射B 410。本發明所屬領域中具有通常知識者將認識到,CPU 110和DSP 167可以具有不同的機器代碼。因此,通常的實踐是使用不同的編譯器來建立不同的映射。
可以針對特定用例建立更少或更多的映射。本發明所屬領域中具有通常知識者將認識到針對不同的配置來配置各種軟體映射的潛在需求。例如,可以受益於NVRAM部件104的非揮發性就地執行(XIP)行為的軟體映射可以選擇利用這些益處。由於NVRAM部件104可以僅是計算設備上可用的整體記憶體的一小部分,因此映射中的許多映射可以目標為常駐在RAM部件105中。另外,可以以與RAM部件105相比降低的效能水平(例如,使用頻寬頻率)來操作容量較小的NVRAM部件104,使得當RAM部件105處於睡眠模式、電力系統故障模式等時僅從NVRAM組件104操作時節省功率。
圖5圖示根據一些實施例的將SOC 102配置為在後續引導時以正常(非增強記憶體)模式或增強記憶體模式智慧地引導的方法500。參考圖1-5,方法500可以由可攜式計算設備的處理器及/或系統100或SOC 102中的一或多個部件執行,例如,CPU 110、DSP 167、NVRAM部件104、RAM部件105、儲存記憶體部件106、ROM部件114、熔絲132、標記部件148、ICE 160等。在下面對圖5的描述中,參考執行方法500的操作的「處理器」,以整體包含可以執行方法操作的各種處理器及/或電路。
在開始(START)方塊處開始,在方塊502中,處理器可以初始化可信引導程式130。在一些實施例中,可以從ROM部件114存取可信引導程式130,使得SOC 102可以初始化恰當的子系統。在決定方塊504中,處理器可以決定可信引導程式130是否被加密。
回應於決定可信引導程式130被加密(亦即,決定方塊504 =「是」),在方塊506中,處理器可以對可信引導程式進行解密。在一些實施例中,可信引導程式可以經由ICE 160在方塊506中被解密。例如,處理器/CPU 110可以對儲存在熔絲132中的資訊進行存取並且利用金鑰產生引擎165,使得可以在方塊506中由ICE 160對可信引導程式130進行解密。
回應於決定可信引導程式130未被加密或者以其他方式不需要解密(亦即,決定方塊504 =「否」),在方塊508中,處理器可以初始化SOC 102內的各種類型的記憶體。例如,在方塊508中,處理器可以初始化儲存記憶體部件106、RAM部件105、NVRAM部件104或其組合。本發明所屬領域中具有通常知識者將認識到,可以在方塊508中初始化其他記憶體和儲存子系統。
在方塊510中,處理器可以將映射A部分和映射B部分(例如,部分407A和410A)載入到RAM部件105中。在一些實施例中,在方塊510中,處理器可以將映射A部分和映射B部分的部分載入到SRAM部件112中。在其他實施例中,處理器可以取決於SOC 102的預期用途而將映射A部分和映射B部分分配給不同的記憶體。如先前論述的,映射部分可以是靜態或者動態地構建的,以從NVRAM部件104或從RAM部件105執行。在一些實施例中,處理器可以在映射A部分和映射B部分已經被載入到記憶體中之後對其進行認證。
在方塊512中,處理器可以使SOC 102發起引導序列及/或以正常(非增強記憶體)模式操作,以從RAM記憶體中的一個執行軟體應用程式。在一些實施例中,在方塊512中以正常模式操作可以包括將DSP 167重置為其開始狀態,指示CPU 110載入高級作業系統(HLOS)),在可攜式計算設備的電子顯示器上顯現一系列引導訊息,播放與啟動相關的聲音以指示成功引導或其他類似操作。
在決定方塊514中,處理器可以決定在下次引導之後SOC 102是否應以增強記憶體模式操作。在決定方塊514之前,使用者可以使計算設備在短至幾秒或長至幾個月內操作,因此本發明所屬領域中具有通常知識者將認識到,當執行方法500的處理器從方塊512移動到決定方塊514時可能經過非凡的時間量。
回應於決定在下次引導之後SOC 102不應以增強記憶體模式操作(亦即,決定方塊514 =「否」),在方塊516中,處理器可以將功率管理控制器108中的標記部件148清零或對其進行設定(或者設定另一非揮發性記憶體中的暫存器、標誌、指示符或值),以指示後續引導應以正常模式進行。在方塊520中,處理器可以使SOC 102斷電。
回應於決定在下次引導之後SOC 102應以增強記憶體模式操作(亦即,決定方塊514 =「是」),在方塊518中,處理器可以將功率管理控制器108中的標記部件148設定或清零(或者設定另一非揮發性記憶體中的暫存器、標誌、指示符或值),以指示後續引導應以增強記憶體模式進行。標誌部件148可以位於功率管理控制器108中;然而,本發明所屬領域中具有通常知識者將認識到,標誌部件148可以儲存在可操作以用於儲存在初始或後續引導期間可用的動態資料的任何位置中。在方塊520中,處理器可以使SOC 102斷電。
SOC 102的斷電操作超出本說明書的範疇,但是本發明所屬領域中具有通常知識者將認識到,可能需要在方塊520中執行許多的「清理」操作以實現對SOC 102的成功的後續引導。另外,如本發明所屬領域中具有通常知識者將認識到的,在正常模式引導下,SOC 102可以重複方法500若干次,以實現任何數量的成功的後續引導。
本發明所屬領域中具有通常知識者將認識到,可以利用多個用於安全引導SOC 102的替代機制,並且這些替代機制將超出本具體實施方式的範疇。此外,若SOC 102的操作環境允許這種缺乏安全性,則本發明所屬領域中具有通常知識者可以選擇不加密可信引導程式130。相反,加密/解密方法可以比方法500中更穩健。SOC的操作環境將影響本發明所屬領域中具有通常知識者實現恰當的安全量。
圖6圖示根據實施例的以增強記憶體模式引導SOC 102的方法600。參考圖1-6,方法600可以由可攜式計算設備的處理器及/或系統100或SOC 102中的一或多個部件來執行,例如,CPU 110、DSP 167、NVRAM部件104、熔絲132等。在下面對圖6的描述中,參考執行方法600的操作的「處理器」,以整體包含可以執行方法操作的各種處理器及/或電路。
在方塊602中,處理器可以使SOC 102重置並且開始執行儲存在ROM部件114中的可信引導程式130。作為這些操作的一部分,SOC 102可以執行各種操作以明確SOC 102的穩定性及/或對包括在系統100或SOC 102中的各種子系統或部件進行加電或初始化。
在方塊604中,處理器及/或SOC 102可以接收適合於決定SOC 102是應以正常模式還是以增強記憶體模式引導的指示或資訊。例如,在方塊604中,處理器及/或SOC 102可以從功率管理控制器108中的標誌部件148接收指示SOC 102應以正常模式(或者以增強記憶體模式)引導的資訊。作為另一實例,處理器及/或SOC 102可以經由通用輸入/輸出(GPIO)命令從外部AP 140接收指示/資訊。本發明所屬領域中具有通常知識者將認識到,上面的說明性實例僅表示SOC執行可信引導程式130以接收關於是以正常模式還是以增強記憶體模式引導的指示的許多方式中的一些。
在決定方塊606中,處理器及/或SOC 102可以基於接收到的指示/資訊來決定是否以增強記憶體模式(例如,功率節省模式等)引導SOC。
回應於決定SOC不應以增強記憶體模式引導(亦即,決定方塊606 =「否」),處理器可以執行圖5中所示的標注方塊A之後指示的操作(例如,如上面描述的方塊502、504中的操作等)。
回應於決定SOC應以增強記憶體模式引導(亦即,決定方塊606 =「是」),在方塊608中,處理器可以建立秘密頻道(或信任通道),解鎖或打開門機制172(或NVRAM門)以及提供經由安全/信任通道對NVRAM部件104的存取。
本發明所屬領域中具有通常知識者將理解,可以使用上面參考圖2描述的方法200提前配置SOC 102。在此類實施例中,NVRAM部件104可以配置有可操作以用於控制對NVRAM部件104的存取的門機制172。執行方法600的處理器可以利用如參考圖3描述的方法300。
一旦門機制172已經被打開,則NVRAM部件104可以由SOC 102存取,並且在方塊610中,處理器可以執行對儲存在NVRAM部件104中的資料的完整性檢查。在一些實施例中,NVRAM部件104可以包含與如圖4C中圖示的並且在上面描述的NVRAM資料407類似的資料。在一些實施例中,NVRAM資料407可以包括在NVRAM部件104中,或者提前配置為在NVRAM部件104內執行。
本發明所屬領域中具有通常知識者將認識到,NVRAM部件104的儲存容量可以小於位元於SOC 102內的其他記憶體(例如,RAM部件105、儲存記憶體部件106等)。本發明所屬領域中具有通常知識者將認識到,存在多種用於在儲存裝置及/或記憶體的各種區塊之間移位資料的機制。因此,本發明所屬領域中具有通常知識者可以開發實質上類似的方法來確保在SOC 102以增強記憶體模式操作時不超過NVRAM部件104的容量。
在方塊612中,處理器及/或SOC 102可以開始以增強記憶體模式操作。在以增強記憶體模式操作時,SOC 102內的未使用的子系統可以斷電或置於睡眠模式。在一些實施例中,RW#2-A部分444在容量、時延及/或功率態樣可以足以執行SOC 102的操作,在這種情況下,RAM控制器121和RAM部件105可以斷電或放置在睡眠模式。在一些實施例中,在SOC 102以增強記憶體模式操作時,儲存記憶體控制器122和相關聯的儲存記憶體部件106可以斷電或置於睡眠模式。本發明所屬領域中具有通常知識者將認識到在SOC 102內的許多子系統斷電或進入睡眠狀態時能夠操作SOC 102的固有功率節省優點。
在決定方塊614中,處理器及/或SOC 102可以決定是否存在要求SOC 102返回到以正常(非增強記憶體)模式操作的任何錯誤、條件或異常。
回應於決定存在要求SOC 102返回到以正常模式操作的錯誤、條件或異常(亦即,決定方塊614 =「是」),處理器及/或SOC 102可以執行如所描述的圖5中的標注方塊C之後指示的方法500的操作(例如,方塊512、514中的操作等)以使SOC返回到以正常操作模式操作。
回應於決定不存在要求SOC 102返回到以正常模式操作的錯誤、條件或異常(亦即,決定方塊614 =「否」),在決定方塊616中,處理器及/或SOC 102可以決定是否繼續以增強記憶體模式操作。
回應於決定操作應以增強記憶體模式繼續(亦即,決定方塊616 =「是」),在方塊612中,處理器及/或SOC 102可以繼續以增強記憶體模式操作。
回應於決定操作不應以增強記憶體模式繼續(亦即,決定方塊616 =「否」),處理器及/或SOC 102可以執行如所描述的圖5中的標注方塊B之後指示的方法500的操作(例如,方塊514中的操作等)。在一些實施例中,增強記憶體模式的終止可以經由使用者的操作(例如,使用者使包含SOC 102的計算設備斷電)。
圖7圖示根據實施例的以增強記憶體模式智慧地操作的方法700。參考圖1-7,方法700可以由可攜式計算設備的處理器及/或系統100或SOC 102中的一或多個部件來執行,例如,CPU 110、DSP 167、NVRAM部件104、熔絲132等。在下面對圖7的描述中,參考執行方法700的操作的「處理器」,以整體包含可以執行方法操作的各種處理器及/或電路。
在方塊702中,處理器可以從儲存記憶體(例如,ROM、FLASH等)讀取軟體應用程式。在方塊704中,處理器可以對軟體應用程式進行解密。在一些實施例中,在方塊704中,處理器亦可以對軟體應用程式進行解壓縮。例如,處理器可以決定軟體應用程式是否在加密和儲存之前被壓縮,並且回應於決定軟體應用程式在加密和儲存之前被壓縮而在方塊704中對軟體應用程式進行解壓縮。
在決定方塊706中,處理器可以決定軟體應用程式是否為以增強記憶體模式操作的候選者。例如,在決定方塊706中,處理器可以決定軟體應用程式是否將受益於快速啟動、快速狀態改變、低功率設備操作或高速代碼執行。在一些實施例中,在決定方塊706中,處理器亦可以決定益處是否顯著及/或超出以增強記憶體模式操作的成本(在效能、功率消耗等態樣)。
例如,在決定方塊706中,處理器可以取回或決定(例如,經由作業系統等)軟體應用程式的大小值、軟體應用程式的功率消耗值、軟體應用的效能值及/或軟體應用程式的引導時間值。處理器可以基於大小值、功率消耗值、效能值及/或引導時間值來決定費用度量值,並且將費用度量值與閾值進行比較以決定費用度量值是否超過閾值。回應於決定費用度量值不滿足或超過閾值,在決定方塊706中,處理器可以決定益處超出以增強記憶體模式操作的成本。
在一些實施例中,大小值、功率消耗值、效能值及/或引導時間值可以是零(0)和九(9)之間的數值。在一些實施例中,閾值可以是零(0)和一百(100)之間的數值。在實施例中,處理器可以將費用度量值設置為等於((10*大小值)+(5*功率值)+(引導時間值))。在實施例中,閾值可以是四十(40)。
作為另一實例,在一些實施例中,在執行決定方塊706中的操作之前,處理器可以辨識候選軟體應用程式,將所有候選軟體應用程式分類到一或多個類別(例如,低功率、緊湊、高效能、特殊用途等)中,決定候選軟體應用程式之每一者候選軟體應用程式的價值(例如,基於大小值、功率消耗值、引導時間值、其被分類到的類別等),以及基於價值來產生候選軟體應用程式的列表。在決定方塊706中,處理器可以基於價值或候選軟體應用程式的列表中包括的資訊來決定軟體應用程式是否為以增強記憶體模式操作的候選者。
例如,處理器可以產生候選軟體應用程式的列表以僅包括具有超過閾值的價值的軟體應用程式,並且回應於決定軟體應用程式包括在候選軟體應用程式的列表中而在決定方塊706中決定該軟體應用程式是以增強記憶體模式操作的候選者。作為另一實例,處理器可以產生候選軟體應用程式的經排序列表或有序列表,該列表基於軟體應用程式的相應的價值來組織軟體應用程式,並且回應於決定軟體應用程式是候選軟體應用程式的經排序列表或有序列表中的第一個、最後一個或最有價值的候選者而在決定方塊706決定該軟體應用程式是以增強記憶體模式操作的候選者。
回應於決定軟體應用不是以增強記憶體模式操作的候選者(亦即,決定方塊706 =「否」),在方塊708中,處理器可以將軟體應用程式載入到揮發性記憶體中。回應於決定程式不會受益於快速啟動、快速狀態改變、低功率設備操作或高速代碼執行,處理器可以決定軟體應用不是以增強記憶體模式操作的候選者。回應於決定益處不顯著,益處不超出以增強記憶體模式操作的成本,或者費用度量值滿足或超過閾值,處理器亦可以決定軟體應用不是以增強記憶體模式操作的候選者。
在方塊710中,處理器可以更新標誌(例如,將增強記憶體模式指示符清零等)及/或將控制轉移到程式計數器。在方塊712中,程式計數器及/或處理器可以開始從揮發性記憶體執行軟體應用程式。
回應於決定軟體應用程式是以增強記憶體模式操作的候選者(亦即,決定方塊706 =「是」),在決定方塊720中,處理器可以決定可供使用的NVRAM的量及/或決定是否可以將整個軟體應用程式儲存在可用NVRAM中。回應於決定軟體應用程式將受益於快速啟動、快速狀態改變、低功率設備操作或高速代碼執行,益處是顯著的,益處超出以增強記憶體模式操作的成本,及/或費用度量值不滿足或超過閾值,處理器可以決定軟體應用程式是以增強記憶體模式操作的候選者。
回應於決定整個軟體應用程式可以儲存在可用NVRAM中(亦即,決定方塊720 =「是」),在方塊722中,處理器可以將整個軟體應用程式載入到NVRAM中。在方塊710中,處理器可以設定標誌(例如,增強記憶體模式指示符等)及/或將控制轉移到程式計數器。在方塊712中,程式計數器及/或處理器可以開始從NVRAM執行軟體應用程式。
回應於決定可用NVRAM不足夠大以儲存整個軟體應用程式(亦即,決定方塊720 =「否」),在方塊730中,處理器可以將軟體應用程式劃分為映射部分(或複數個軟體映射)。
在方塊732中,處理器可以辨識用於載入到NVRAM中的映射部分。在一些實施例中,處理器可以決定當從NVRAM執行時將表現出效能改進(例如,快速啟動、快速狀態改變、低功率設備操作、高速代碼執行等)的映射部分。在一些實施例中,處理器可以基於從NVRAM執行可以實現的效能改進來對映射部分劃分優先順序,並且基於優先順序來辨識用於載入到NVRAM中的映射部分。因此,在一些實施例中,處理器可以辨識當從NVRAM執行時將表現出最大效能改進的映射部分。在一些實施例中,經由例如決定費用度量值是否超過閾值,在方塊732中,處理器可以決定將表現出最大效能改進或者將從與從NVRAM執行相關聯的改進中受益最多的映射部分。
在方塊734中,處理器可以將所辨識的映射部分載入到NVRAM中。在方塊736中,處理器可以將其餘的映射部分載入到揮發性記憶體中。
在方塊710中,處理器可以設定標誌(例如,增強記憶體模式指示符等)及/或將控制轉移到一或多個程式計數器。在方塊712中,(多個)程式計數器及/或處理器可以開始從NVRAM和揮發性記憶體執行這些部分。
在一些實施例中,計算設備、SOC或處理器可以被配置為經由從計算設備的儲存記憶體讀取軟體應用程式,並且決定軟體應用程式是否為以增強記憶體模式操作的候選者,來智慧地決定是否以增強記憶體模式操作。回應於決定軟體應用程式不是以增強記憶體模式操作的候選者,計算設備可以將軟體應用程式載入到揮發性記憶體中,並且將增強記憶體模式指示符清零。另一態樣,回應於決定軟體應用程式是以增強記憶體模式操作的候選者,計算設備可以建立到NVRAM的可信通道,將軟體應用程式載入到NVRAM中,並且設定增強記憶體模式指示符。
在計算設備重新引導(或進入和退出睡眠狀態等)之後,計算設備可以決定增強記憶體模式指示符是否被設定。回應於決定增強記憶體模式指示符未被設定(亦即,指示在重新引導之前被清零),計算設備可以將控制轉移到程式計數器,以開始從揮發性記憶體執行軟體應用程式。回應於決定增強記憶體模式指示符被設定(亦即,指示在重新引導之前被設定),計算設備可以將控制轉移到程式計數器,以開始從NVRAM執行軟體應用程式。
在一些實施例中,計算設備可以被配置為經由對軟體應用程式進行評估以產生評估結果來決定軟體應用程式是否為增強記憶體模式的候選者。回應於基於評估結果決定軟體應用程式將受益於快速啟動、快速狀態改變、低功率設備操作或高速代碼執行,計算設備可以決定軟體應用程式是增強記憶體模式的候選者。
在一些實施例中,計算設備(SOC等)可以被配置為經由決定軟體應用程式的大小值,決定軟體應用程式的功率消耗值,決定軟體應用程式的引導時間值,並且基於大小值、功率消耗值以及引導時間值決定費用度量值,來決定軟體應用程式是否為增強記憶體模式的候選者。回應於決定費用度量值超過閾值,計算設備可以決定軟體應用程式不是增強記憶體模式的候選者。另一態樣,回應於決定費用度量值未超過閾值,計算設備可以決定軟體應用程式是增強記憶體模式的候選者。
回應於決定軟體應用程式不是增強記憶體模式的候選者,計算設備可以將軟體應用程式載入到揮發性記憶體中。回應於決定軟體應用程式是增強記憶體模式的候選者,計算設備可以將軟體應用程式載入到NVRAM中並且設定增強記憶體模式指示符,該增強記憶體模式指示符可操作以用於以增強記憶體模式啟用對計算設備的後續引導。
在重新引導之後,計算設備可以決定增強記憶體模式指示符是否被設定。回應於決定增強記憶體模式指示符被設定,計算設備可以開始從NVRAM對軟體應用程式的執行(並且因此以增強記憶體模式操作)。另一態樣,回應於決定增強記憶體模式指示符未被設定,計算設備可以開始從揮發性記憶體對軟體應用程式的執行。
各種實施例可以包括操作計算系統/設備(SOC等)的方法,該方法可以包括決定軟體應用程式是否為增強記憶體模式的候選者;回應於決定軟體應用程式是增強記憶體模式的候選者,將軟體應用程式載入到NVRAM中,並且設定增強記憶體模式指示符,該增強記憶體模式指示符可操作以用於以增強記憶體模式啟用對計算系統/設備的後續引導;在重新引導計算系統/設備之後,決定增強記憶體模式指示符是否被設定;及回應於決定增強記憶體模式指示符被設定,經由開始從NVRAM對軟體應用程式的執行來以增強記憶體模式操作計算系統/設備。
在實施例中,該方法可以包括:回應於決定軟體應用程式不是增強記憶體模式的候選者而將軟體應用程式載入到揮發性記憶體中,以及回應於決定增強記憶體模式指示符未被設定而開始從揮發性記憶體對軟體應用程式的執行。在另一實施例中,決定軟體應用程式是否為增強記憶體模式的候選者可以包括:對軟體應用程式進行評估以產生評估結果,基於評估結果來決定軟體應用程式是否將受益於快速啟動、快速狀態改變、低功率裝置操作或高速代碼執行,以及回應於決定軟體應用程式將受益於快速啟動、快速狀態改變、低功率設備操作或高速代碼執行而決定軟體應用程式是增強記憶體模式的候選者。
在另一實施例中,決定軟體應用程式是否為增強記憶體模式的候選者可以包括:決定軟體應用程式的大小值,決定軟體應用程式的功率消耗值,決定軟體應用程式的引導時間值,基於大小值、功率消耗值以及引導時間值來決定費用度量值,決定費用度量值是否超過閾值,回應於決定費用度量值超過閾值而決定軟體應用程式不是增強記憶體模式的候選者,以及回應於決定費用度量值未超過閾值而決定軟體應用程式是增強記憶體模式的候選者。
在另一實施例中,該方法可以包括:辨識複數個候選軟體應用程式;將所辨識的軟體應用程式之每一者所辨識的軟體應用程式分類到一或多個類別中;基於與所辨識的軟體應用程式之每一者所辨識的軟體應用程式相關聯的一或多個類別,決定每個所辨識的軟體應用程式的價值;及基於所辨識的軟體應用程式中的一或多個所辨識的軟體應用程式的相應的價值,將一或多個所辨識的軟體應用程式插入候選軟體應用程式的列表中,其中決定軟體應用程式是否為增強記憶體模式的候選者可以包括:基於包括在候選軟體應用程式的列表中的資訊來決定軟體應用程式是否為以增強記憶體模式操作的候選者。
在另一實施例中,基於所辨識的軟體應用程式中的一或多個所辨識的軟體應用程式的相應的價值將一或多個所辨識的軟體應用程式插入候選軟體應用程式的列表中可以包括:將所辨識的軟體應用程式插入候選軟體應用程式的有序列表中,候選軟體應用程式的有序列表基於所辨識的軟體應用程式的相關聯的價值來組織所辨識的軟體應用程式。在另一實施例中,基於所辨識的軟體應用程式中的一或多個所辨識的軟體應用程式的相應的價值將一或多個所辨識的軟體應用程式插入候選軟體應用程式的列表中可以包括:決定與所辨識的軟體應用程式相關聯的價值是否超過閾值,以及回應於決定與所辨識的軟體應用程式相關聯的價值超過閾值而將所辨識的軟體應用程式插入候選軟體應用程式的列表中。
在另一實施例中,基於包括在候選軟體應用程式的列表中的資訊來決定軟體應用程式是否為以增強記憶體模式操作的候選者可以包括:決定軟體應用程式是否被包括在候選軟體應用程式的列表中。在另一實施例中,設定可操作以用於以增強記憶體模式啟用對計算系統/設備的後續引導的增強記憶體模式指示符可以包括:將標誌儲存在非揮發性記憶體中。在另一實施例中,設定可操作以用於以增強記憶體模式啟用對計算系統/設備的後續引導的增強記憶體模式指示符可以包括設定以下各項中的一項:低功率模式指示符,快速引導時間模式指示符,快速狀態轉換模式指示符,或者高速執行模式指示符。
在另一實施例中,在重新引導計算系統/設備之後決定增強記憶體模式指示符是否被設定可以包括:執行可信引導程式以安全地決定增強記憶體模式指示符的存在。在另一實施例中,該方法可以包括將增強記憶體模式指示符從計算系統/設備的片上系統外部的部件發送到片上系統。在另一實施例中,該方法可以包括接收指示計算系統/設備應退出增強記憶體模式的異常,以及回應於接收到異常而以非增強記憶體模式操作計算系統/設備。
在另一實施例中,將軟體應用程式載入到NVRAM中可以包括將軟體映射從儲存記憶體載入到NVRAM中,該軟體映射被配置為在NVRAM內執行。在另一實施例中,該方法可以包括將軟體應用程式劃分為複數個軟體映射,其中將軟體應用程式載入到NVRAM中可以包括將複數個軟體映射的子集載入到NVRAM中。在另一實施例中,該方法可以包括辨識複數個軟體映射中的、將從與NVRAM中的執行相關聯的改進中受益最多的軟體映射,並且將複數個軟體映射的子集載入到NVRAM中可以包括:將所辨識的軟體映射載入到NVRAM中。
另外的實施例可以包括計算系統/設備(SOC等),其包括NVRAM以及耦合到NVRAM的處理器,其中處理器配置有處理器可執行指令以執行操作,該等操作可以包括:決定軟體應用程式是否為增強記憶體模式的候選者;回應於決定軟體應用程式是增強記憶體模式的候選者,將軟體應用程式載入到NVRAM中,並且設定增強記憶體模式指示符,該增強記憶體模式指示符可操作以用於以增強記憶體模式啟用對計算系統/設備的後續引導;在重新引導計算系統/設備之後,決定增強記憶體模式指示符是否被設定;及回應於決定增強記憶體模式指示符被設定經由開始從NVRAM對軟體應用程式的執行來以增強記憶體模式操作計算系統/設備。
在實施例中,處理器可以配置有處理器可執行指令以執行操作,該等操作亦包括回應於決定軟體應用程式不是增強記憶體模式的候選者而將軟體應用程式載入到揮發性記憶體中,以及回應於決定增強記憶體模式指示符未被設定而開始從揮發性記憶體對軟體應用程式的執行。
在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,使得決定軟體應用程式是否為增強記憶體模式的候選者包括:對軟體應用程式進行評估以產生評估結果,基於評估結果來決定軟體應用程式是否將受益於快速啟動、快速狀態改變、低功率設備操作或高速代碼執行,其中回應於決定軟體應用程式將受益於快速啟動、快速狀態改變、低功率設備操作或高速代碼執行而決定軟體應用程式是增強記憶體模式的候選者。
在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,使得決定軟體應用程式是否為增強記憶體模式的候選者包括:決定軟體應用程式的大小值,決定軟體應用程式的功率消耗值,決定軟體應用程式的引導時間值,根據大小值、功率消耗值以及引導時間值來決定費用度量值,決定費用度量值是否超過閾值,回應於決定費用度量值超過閾值而決定軟體應用程式不是增強記憶體模式的候選者,以及回應於決定決定費用度量值未超過閾值而決定軟體應用程式是增強記憶體模式的候選者。
在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,該等操作亦包括:辨識複數個候選軟體應用程式;將所辨識的軟體應用程式之每一者所辨識的軟體應用程式分類到一或多個類別中;基於與所辨識的軟體應用程式之每一者所辨識的軟體應用程式相關聯的一或多個類別,決定每個所辨識的軟體應用程式的價值;及基於所辨識的軟體應用程式中的一或多個所辨識的軟體應用程式的相應的價值,將一或多個所辨識的軟體應用程式插入候選軟體應用程式的列表中。在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,使得決定軟體應用程式是否為增強記憶體模式的候選者包括:基於包括在候選軟體應用程式的列表中的資訊來決定軟體應用程式是否為以增強記憶體模式操作的候選者。
在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,使得基於所辨識的軟體應用程式中的一或多個所辨識的軟體應用程式的相應的價值將一或多個所辨識的軟體應用程式插入候選軟體應用程式的列表中包括:將所辨識的軟體應用程式插入候選軟體應用程式的有序列表中,候選軟體應用程式的有序列表基於所辨識的軟體應用程式的相關聯的價值來組織所辨識的軟體應用程式。
在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,使得基於所辨識的軟體應用程式中的一或多個所辨識的軟體應用程式的相應的價值將一或多個所辨識的軟體應用程式插入候選軟體應用程式的列表中包括:決定與所辨識的軟體應用程式相關聯的價值是否超過閾值,以及回應於決定與所辨識的軟體應用程式相關聯的價值超過閾值而將所辨識的軟體應用程式插入候選軟體應用程式的列表中。在實施例中,處理器可以配置有處理器可執行指令以執行操作,使得基於包括在候選軟體應用程式的列表中的資訊來決定軟體應用程式是否為以增強記憶體模式操作的候選者包括:決定軟體應用程式是否被包括在候選軟體應用程式的列表中。
在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,使得設定可操作以用於以增強記憶體模式啟用對計算系統/設備的後續引導的增強記憶體模式指示符包括:將標誌儲存在非揮發性記憶體中。在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,使得設定可操作以用於以增強記憶體模式啟用對計算系統/設備的後續引導的增強記憶體模式指示符包括設定以下各項中的一項:低功率模式指示符,快速引導時間模式指示符,快速狀態轉換模式指示符,或者高速執行模式指示符。
在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,使得在重新引導計算系統/設備之後決定增強記憶體模式指示符是否被設定包括執行可信引導程式以安全地決定增強記憶體模式指示符的存在。在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,該等操作亦包括將增強記憶體模式指示符從計算系統/設備的片上系統外部的部件發送到片上系統。在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,該等操作亦包括接收指示計算系統/設備應退出增強記憶體模式的異常,以及回應於接收到異常而以非增強記憶體模式操作計算系統/設備。
在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,使得將軟體應用程式載入到NVRAM中包括將軟體映射從儲存記憶體載入到NVRAM中,軟體映射被配置為在NVRAM內執行。
在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,該等操作亦包括將軟體應用程式劃分為複數個軟體映射。在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,使得將軟體應用程式載入到NVRAM中包括將複數個軟體映射的子集載入到NVRAM中。
在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,該等操作亦包括辨識複數個軟體映射中的、將從與NVRAM中的執行相關聯的改進中受益最多的軟體映射。在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,使得將複數個軟體映射的子集載入到NVRAM中包括:將所辨識的軟體映射載入到NVRAM中。
另外的實施例可以包括其上儲存有處理器可執行軟體指令的非暫時性電腦可讀取儲存媒體,該處理器可執行軟體指令被配置為使處理器執行用於操作計算系統/設備(SOC等)的操作,該等操作包括:決定軟體應用程式是否為增強記憶體模式的候選者;回應於決定軟體應用程式是增強記憶體模式的候選者,將軟體應用程式載入到NVRAM中,並且設定增強記憶體模式指示符,該增強記憶體模式指示符可操作以用於以增強記憶體模式啟用對計算系統/設備的後續引導;在重新引導計算系統/設備之後,決定增強記憶體模式指示符是否被設定;及回應於決定增強記憶體模式指示符被設定,經由開始從NVRAM對軟體應用程式的執行來以增強記憶體模式操作計算系統/設備。
在實施例中,處理器可以配置有處理器可執行指令以執行操作,該等操作亦包括回應於決定軟體應用程式不是增強記憶體模式的候選者而將軟體應用程式載入到揮發性記憶體中,以及回應於決定增強記憶體模式指示符未被設定而開始從揮發性記憶體對軟體應用程式的執行。
在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,使得決定軟體應用程式是否為增強記憶體模式的候選者包括:對軟體應用程式進行評估以產生評估結果,基於評估結果來決定軟體應用程式是否將受益於快速啟動、快速狀態改變、低功率設備操作或高速代碼執行,以及回應於決定軟體應用程式將受益於快速啟動、快速狀態改變、低功率設備操作或高速代碼執行而決定軟體應用程式是增強記憶體模式的候選者。
在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,使得決定軟體應用程式是否為增強記憶體模式的候選者包括:決定軟體應用程式的大小值,決定軟體應用程式的功率消耗值,決定軟體應用程式的引導時間值,根據大小值、功率消耗值以及引導時間值來決定費用度量值,決定費用度量值是否超過閾值,回應於決定費用度量值超過閾值而決定軟體應用程式不是增強記憶體模式的候選者,以及回應於決定決定費用度量值未超過閾值而決定軟體應用程式是增強記憶體模式的候選者。
在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,該等操作亦包括:辨識複數個候選軟體應用程式;將所辨識的軟體應用程式之每一者所辨識的軟體應用程式分類到一或多個類別中;基於與所辨識的軟體應用程式之每一者所辨識的軟體應用程式相關聯的一或多個類別,決定每個所辨識的軟體應用程式的價值;及基於所辨識的軟體應用程式中的一或多個所辨識的軟體應用程式的相應的價值,將一或多個所辨識的軟體應用程式插入候選軟體應用程式的列表中。
在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,使得決定軟體應用程式是否為增強記憶體模式的候選者包括:基於包括在候選軟體應用程式的列表中的資訊來決定軟體應用程式是否為以增強記憶體模式操作的候選者。在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,使得基於所辨識的軟體應用程式中的一或多個所辨識的軟體應用程式的相應的價值將一或多個所辨識的軟體應用程式插入候選軟體應用程式的列表中包括:將所辨識的軟體應用程式插入候選軟體應用程式的有序列表中,候選軟體應用程式的有序列表基於所辨識的軟體應用程式的相關聯的價值來組織所辨識的軟體應用程式。在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,使得基於所辨識的軟體應用程式中的一或多個所辨識的軟體應用程式的相應的價值將一或多個所辨識的軟體應用程式插入候選軟體應用程式的列表中包括:決定與所辨識的軟體應用程式相關聯的價值是否超過閾值,以及回應於決定與所辨識的軟體應用程式相關聯的價值超過閾值而將所辨識的軟體應用程式插入候選軟體應用程式的列表中。
在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,使得基於包括在候選軟體應用程式的列表中的資訊來決定軟體應用程式是否為以增強記憶體模式操作的候選者包括:決定軟體應用程式是否被包括在候選軟體應用程式的列表中。在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,使得設定可操作以用於以增強記憶體模式啟用對計算系統/設備的後續引導的增強記憶體模式指示符包括:將標誌儲存在非揮發性記憶體中。在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,使得設定可操作以用於以增強記憶體模式啟用對計算系統/設備的後續引導的增強記憶體模式指示符包括設定以下各項中的一項:低功率模式指示符,快速引導時間模式指示符,快速狀態轉換模式指示符,或者高速執行模式指示符。
在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,使得在重新引導計算系統/設備之後決定增強記憶體模式指示符是否被設定包括執行可信引導程式以安全地決定增強記憶體模式指示符的存在。在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,該等操作亦包括將增強記憶體模式指示符從計算系統/設備的片上系統外部的部件發送到片上系統。在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,該等操作亦包括接收指示計算系統/設備應退出增強記憶體模式的異常,以及回應於接收到異常而以非增強記憶體模式操作計算系統/設備。
在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,使得將軟體應用程式載入到NVRAM中包括將軟體映射從儲存記憶體載入到NVRAM中,軟體映射被配置為在NVRAM內執行。
在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,該等操作亦包括將軟體應用程式劃分為複數個軟體映射。在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,使得將軟體應用程式載入到NVRAM中包括將複數個軟體映射的子集載入到NVRAM中。
在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,該等操作亦包括辨識複數個軟體映射中的、將從與NVRAM中的執行相關聯的改進中受益最多的軟體映射。在另一實施例中,處理器可以配置有處理器可執行指令以執行操作,使得將複數個軟體映射的子集載入到NVRAM中包括:將所辨識的軟體映射載入到NVRAM中。
另外的實施例可以包括計算系統/設備(例如,SOC等),其包括:用於決定軟體應用程式是否為增強記憶體模式的候選者的單元;用於回應於決定軟體應用程式是增強記憶體模式的候選者而將軟體應用程式載入到NVRAM中並且設定增強記憶體模式指示符的單元,增強記憶體模式指示符可操作以用於以增強記憶體模式啟用對計算系統/設備的後續引導;用於在重新引導計算系統/設備之後決定增強記憶體模式指示符是否被設定的單元;及用於回應於決定增強記憶體模式指示符被設定而經由開始從NVRAM對軟體應用程式的執行來以增強記憶體模式操作計算系統/設備的單元。
在實施例中,計算系統/設備可以包括用於回應於決定軟體應用程式不是增強記憶體模式的候選者而將軟體應用程式載入到揮發性記憶體中的單元,以及用於回應於決定增強記憶體模式指示符未被設定而開始從揮發性記憶體對軟體應用程式的執行的單元。在另一實施例中,用於決定軟體應用程式是否為增強記憶體模式的候選者的單元可以包括:用於對軟體應用程式進行評估以產生評估結果的單元,用於基於評估結果來決定軟體應用程式是否將受益於快速啟動、快速狀態改變、低功率設備操作或高速代碼執行的單元,以及用於回應於決定軟體應用程式將受益於快速啟動、快速狀態改變、低功率設備操作或高速代碼執行而決定軟體應用程式是增強記憶體模式的候選者的單元。
在另一實施例中,用於決定軟體應用程式是否為增強記憶體模式的候選者的單元可以包括:用於決定軟體應用程式的大小值的單元,用於決定軟體應用程式的功率消耗值的單元,用於決定軟體應用程式的引導時間值的單元,用於基於大小值、功率消耗值以及引導時間值來決定費用度量值的單元,用於決定費用度量值是否超過閾值的單元,用於回應於決定費用度量值超過閾值而決定軟體應用程式不是增強記憶體模式的候選者的單元,以及用於回應於決定費用度量值未超過閾值而決定軟體應用程式是增強記憶體模式的候選者的單元。在實施例中,計算系統/設備可以包括用於辨識複數個候選軟體應用程式的單元,用於將所辨識的軟體應用程式之每一者所辨識的軟體應用程式分類到一或多個類別中的單元,用於基於與所辨識的軟體應用程式之每一者所辨識的軟體應用程式相關聯的一或多個類別來決定每個所辨識的軟體應用程式的價值的單元,以及用於基於所辨識的軟體應用程式中的一或多個所辨識的軟體應用程式的相應的價值將一或多個所辨識的軟體應用程式插入候選軟體應用程式的列表中的單元,其中用於決定軟體應用程式是否為增強記憶體模式的候選者的單元可以包括用於基於包括在候選軟體應用程式的列表中的資訊來決定軟體應用程式是否為以增強記憶體模式操作的候選者的單元。
在另一實施例中,用於基於所辨識的軟體應用程式中的一或多個所辨識的軟體應用程式的相應的價值將一或多個所辨識的軟體應用程式插入候選軟體應用程式的列表中的單元可以包括:用於將所辨識的軟體應用程式插入候選軟體應用程式的有序列表中的單元,候選軟體應用程式的有序列表基於所辨識的軟體應用程式的相關聯的價值來組織所辨識的軟體應用程式。
在另一實施例中,用於基於所辨識的軟體應用程式中的一或多個所辨識的軟體應用程式的相應的價值將一或多個所辨識的軟體應用程式插入候選軟體應用程式的列表中的單元可以包括:用於決定與所辨識的軟體應用程式相關聯的價值是否超過閾值的單元,以及用於回應於決定與所辨識的軟體應用程式相關聯的價值超過閾值而將所辨識的軟體應用程式插入候選軟體應用程式的列表中的單元。
在另一實施例中,用於基於候選軟體應用程式的列表中包括的資訊來決定軟體應用程式是否為以增強記憶體模式操作的候選者的單元可以包括用於決定軟體應用程式是否被包括在候選軟體應用程式的列表中的單元。在另一實施例中,用於設定可操作以用於以增強記憶體模式啟用對計算系統/設備的後續引導的增強記憶體模式指示符的單元可以包括用於將標誌儲存在非揮發性記憶體中的單元。
在另一實施例中,用於設定可操作以用於以增強記憶體模式啟用對計算系統/設備的後續引導的增強記憶體模式指示符的單元可以包括用於將以下各項中的一項設定的單元:低功率模式指示符,快速引導時間模式指示符,快速狀態轉換模式指示符,或者高速執行模式指示符。在另一實施例中,用於在重新引導計算系統/設備之後決定增強記憶體模式指示符是否被設定的單元可以包括:用於執行可信引導程式以安全地決定增強記憶體模式指示符的存在的單元。在實施例中,計算系統/設備可以包括用於將增強記憶體模式指示符從計算系統/設備的片上系統外部的部件發送到片上系統的單元。在實施例中,計算系統/設備可以包括用於接收指示計算系統/設備應退出增強記憶體模式的異常的單元,以及用於回應於接收到異常而以非增強記憶體模式操作計算系統/設備的單元。
在另一實施例中,用於將軟體應用程式載入到NVRAM中的單元可以包括用於將軟體映射從儲存記憶體載入到NVRAM中的單元,該軟體映射被配置為在NVRAM內執行。
在另一實施例中,計算系統/設備可以包括用於將軟體應用程式劃分為複數個軟體映射的單元。在另一實施例中,用於將軟體應用程式載入到NVRAM中的單元可以包括用於將複數個軟體映射的子集載入到NVRAM中的單元。
在另一實施例中,計算系統/設備可以包括用於辨識複數個軟體映射中的、將從與NVRAM中的執行相關聯的改進中受益最多的軟體映射的單元。在另一實施例中,用於將複數個軟體映射的子集載入到NVRAM中的單元可以包括用於將所辨識的軟體映射載入到NVRAM中的單元。
各種實施例可以包括用於以功率節省模式引導片上系統(「SOC」)的方法,該方法包括讀取功率節省模式指示符,建立到NVRAM的可信通道(NVRAM邏輯地連接到SOC並且在建立可信通道之前NVRAM被保護),以功率節省模式操作SOC,以及儲存可操作以用於以功率節省模式啟用對SOC的後續引導的指示符。在一些實施例中,功率節省模式指示符可以是儲存在功率管理控制器中的標誌。在一些實施例中,該方法可以包括將功率節省模式指示符從SOC外部的設備發送到SOC。在一些實施例中,該方法可以包括接收指示SOC應退出功率節省模式的異常,以及回應於接收到異常而以正常模式操作SOC。在一些實施例中,可信引導程式可以安全地決定功率節省模式指示符的存在。在一些實施例中,以功率節省模式操作SOC可以包括將軟體映射從儲存記憶體載入到NVRAM中,軟體映射被配置為在NVRAM內執行。在一些實施例中,軟體映射可以包括儲存在存放裝置上的複數個軟體映射的子集,複數個軟體映射提供與以功率節省模式操作的軟體映射相比實質上可替代的功能。
各種實施例可以包括用於以功率節省模式引導片上系統(「SOC」)的方法,包括讀取功率節省模式指示符,建立到NVRAM的可信通道(NVRAM邏輯地連接到SOC並且在建立可信通道之前NVRAM被保護),以功率節省模式操作SOC,以及儲存可操作以用於以功率節省模式啟用對SOC的後續引導的指示符。在一些實施例中,功率節省模式指示符可以是儲存在功率管理控制器中的標誌。在一些實施例中,該方法可以包括將功率節省模式指示符從SOC外部的設備發送到SOC。
在一些實施例中,該方法可以包括接收指示SOC應退出功率節省模式的異常,以及回應於接收到異常而以正常模式操作SOC。在一些實施例中,可信引導程式可以安全地決定功率節省模式指示符的存在。在一些實施例中,以功率節省模式操作SOC可以包括將軟體映射從儲存記憶體載入到NVRAM中,軟體映射被配置為在NVRAM內執行。在一些實施例中,軟體映射可以包括儲存在存放裝置上的複數個軟體映射的子集,複數個軟體映射提供與以功率節省模式操作的軟體映射相比實質上可替代的功能。
各種實施例可以包括被配置為以功率節省模式操作的片上系統(「SOC」),SOC包括用於讀取功率節省模式指示符的單元,用於建立到NVRAM的可信通道的單元(NVRAM邏輯地連接到SOC並且在建立可信通道之前NVRAM被保護),用於以功率節省模式操作SOC的單元,以及用於儲存可操作以用於以功率節省模式啟用對SOC的後續引導的指示符的單元。在一些實施例中,功率節省模式指示符可以是儲存在功率管理控制器中的標誌。在一些實施例中,SOC可以包括用於將功率節省模式指示符從SOC外部的設備發送到SOC的單元。在一些實施例中,SOC可以包括用於接收異常的單元,異常指示SOC應退出功率節省模式,以及用於回應於接收到異常而以正常模式操作SOC的單元。在一些實施例中,可信引導程式安全地決定功率節省模式指示符的存在。在一些實施例中,用於以功率節省模式操作SOC的單元亦包括用於將軟體映射從儲存記憶體載入到NVRAM中的單元,軟體映射被配置為在NVRAM內執行。在一些實施例中,軟體映射包括儲存在存放裝置上的複數個軟體映射的子集,複數個軟體映射提供與以功率節省模式操作的軟體映射相比實質上可替代的功能。
另外的實施例可以包括其上儲存有處理器可執行指令的非暫時性處理器可讀儲存媒體,該處理器可執行指令被配置為使處理器執行與功率節省模式相關的操作,該等操作包括:讀取功率節省模式指示符,建立到NVRAM的可信通道(NVRAM邏輯地連接到SOC並且在建立可信通道之前NVRAM被保護),以功率節省模式操作SOC,以及儲存可操作以用於以功率節省模式啟用對SOC的後續引導的指示符。在一些實施例中,所儲存的處理器可執行指令可以被配置為使處理器執行與功率節省模式相關的操作,其中功率節省模式指示符是儲存在功率管理控制器中的標誌。在一些實施例中,所儲存的處理器可執行指令可以被配置為使處理器執行與功率節省模式相關的操作,該等操作包括將功率節省模式指示符從SOC外部的設備發送到SOC。在一些實施例中,所儲存的處理器可執行指令可以被配置為使處理器執行與功率節省模式相關的操作,該等操作包括接收異常,該異常指示SOC應退出功率節省模式,以及以正常模式操作SOC。在一些實施例中,所儲存的處理器可執行指令可以被配置為使得可信引導程式安全地決定功率節省模式指示符的存在。在一些實施例中,所儲存的處理器可執行指令可以被配置為使處理器執行與功率節省模式相關的操作,該等操作包括將軟體映射從儲存記憶體載入到NVRAM中,該軟體映射被配置為在NVRAM內執行。在一些實施例中,所儲存的處理器可執行指令可以被配置為使處理器執行操作,使得軟體映射包括儲存在存放裝置上的複數個軟體映射的子集,複數個軟體映射提供與以功率節省模式操作的軟體映射相比實質上可替代的功能。
另外的實施例可以包括被配置為以功率節省模式操作的片上系統(「SOC」),SOC包括存放裝置、NVRAM以及被配置為執行操作的處理器,該等操作包括:讀取功率節省模式指示符,建立到NVRAM的可信通道(NVRAM邏輯地連接到SOC並且在建立可信通道之前NVRAM被保護),以功率節省模式操作SOC,以及儲存可操作以用於以功率節省模式啟用對SOC的後續引導的指示符。在一些實施例中,功率節省模式指示符可以是儲存在功率管理控制器中的標誌。在一些實施例中,處理器或SOC可以被配置為執行包括將功率節省模式指示符從SOC外部的設備發送到SOC的操作。在一些實施例中,SOC可以被配置為執行操作,該等操作包括接收異常,該異常指示SOC應退出功率節省模式,以及回應於接收到異常而以正常模式操作SOC。在一些實施例中,SOC可以被配置為執行操作,使得可信引導程式安全地決定功率節省模式指示符的存在。在一些實施例中,SOC可以被配置為執行操作,使得以功率節省模式操作SOC亦包括將軟體映射從儲存記憶體載入到NVRAM中,軟體映射被配置為在NVRAM內執行。在一些實施例中,SOC可以被配置為執行操作,使得軟體映射包括儲存在存放裝置上的複數個軟體映射的子集,複數個軟體映射提供與以功率節省模式操作的軟體映射相比實質上可替代的功能。在一些實施例中,處理器可以是數位訊號處理器(「DSP」)、圖形處理單元(「GPU」)、中央處理單元(「CPU」)或特殊應用積體電路(「ASIC」)。在一些實施例中,SOC可以整合到可攜式計算設備中。
各種實施例(包括但不限於上面參考圖1至圖7論述的實施例)可以在包括行動設備800的各種計算系統/設備中的任何一個中實現,其實例在圖8中示出。因此,行動設備800可以實現圖5、圖6及/或圖7中的程序500、600及/或700。例如,行動設備800可以包括耦合到觸控式螢幕控制器804和內部記憶體802的處理器801。處理器801可以是指定用於一般或特定處理任務的一或多個多核心積體電路(IC)。在一些實施例中,處理器801可以與上面描述的SOC 102實質上相同。內部記憶體802可以是揮發性或非揮發性記憶體,並且亦可以是安全及/或經加密的記憶體或不安全及/或未經加密的記憶體或其任何組合。觸控式螢幕控制器804和處理器801亦可以耦合到觸控式螢幕面板812,例如,電阻感應觸控式螢幕、電容感應觸控式螢幕、紅外感應觸控式螢幕等。
行動設備800可以具有彼此耦合及/或耦合到處理器801的一或多個無線電信號收發器808(例如,Peanut®、Bluetooth®、Zigbee®、Wi-Fi、RF、蜂巢等)和天線810,以用於發送和接收。收發器808和天線810可以與上面提及的電路一起使用,以實現各種無線傳輸協定堆疊和介面,並且建立本文論述的各種無線鏈路。行動設備800可以包括一或多個蜂巢網路無線數據機晶片816,例如,一個蜂巢網路無線數據機晶片、兩個蜂巢網路無線數據機晶片、三個蜂巢網路無線數據機晶片、四個蜂巢網路無線數據機晶片或者多於四個蜂巢網路無線數據機晶片,其實現經由一或多個蜂巢網路的通訊並且耦合到處理器801。一或多個蜂巢網路無線數據機晶片816可以使得行動設備800能夠從一或多個蜂巢網路(例如,CDMA、TDMA、GSM、3G、4G、5G、LTE或任何其他類型的蜂巢網路)接收服務,以實現各種無線傳輸協定堆疊和介面,並且建立本文論述的各種無線鏈路。
行動設備800可以包括耦合到處理器801的周邊設備連接介面818。周邊設備連接介面818可以單個地配置為接受一種類型的連接,或者多重地配置為接受公共或專有的、各種類型的實體和通訊連接,例如,USB、FireWire、Thunderbolt、乙太網路或PCIe。周邊設備連接介面818亦可以耦合到類似地配置的周邊設備連接埠(未圖示)。行動設備800亦可以包括用於提供音訊輸出的揚聲器814。
行動設備800亦可以包括由塑膠、金屬或材料組合構成的殼體820,用於容納本文論述的部件中的所有或一些部件。行動設備800可以包括耦合到處理器801的電源822,例如,一次性電池或可再充電電池。可再充電電池亦可以耦合到周邊設備連接埠,以從行動設備800外部的源接收充電電流。
前述方法描述和程序流程圖僅作為說明性實例提供,而並不意欲要求或暗示必須以所呈現的循序執行各種實施例的操作。如本發明所屬領域中具有通常知識者將認識到的,可以以任何循序執行前述實施例中的操作順序。諸如「之後」、「隨後」、「接下來」等之類的詞語並不意欲限制操作的順序;這些詞語用於指導讀者瞭解對方法的描述。此外,以單數形式對請求項元素的任何引用(例如,使用冠詞「一」、「一個」或「該」)不應被解釋為將該元素限制為單數。
結合本文中揭示的實施例描述的各種說明性邏輯區塊、模組、部件、電路和演算法操作可以實現為電子硬體、電腦軟體或兩者的組合。為了清楚地說明硬體和軟體的這種可互換性,上面已經對各種說明性部件、方塊、模組、電路和操作在其功能態樣進行了整體描述。將此類功能實現為硬體還是軟體取決於特定應用和施加在整體系統上的設計約束。具有通常知識者可以針對每個特定應用以不同方式實現所描述的功能,但是此類實施例決策不應被解釋為導致脫離請求項的範疇。
用於實現結合本文揭示的實施例描述的各種說明性邏輯、邏輯區塊、模組和電路的硬體可以利用設計用於執行本文描述的功能的通用處理器、數位訊號處理器(DSP)、特殊應用積體電路(ASIC)、現場可程式設計閘陣列(FPGA)或其他可程式設計邏輯裝置、個別閘門或電晶體邏輯、個別硬體部件或其任何組合來實現或執行。通用處理器可以是微處理器,但是在替代方案中,處理器可以是任何習知的處理器、控制器、微控制器或狀態機。處理器亦可以實現為接收器智慧物件的組合,例如,DSP和微處理器的組合,複數個微處理器,一或多個微處理器結合DSP核心,或任何其他此類配置。可替代地,一些操作或方法可以由特定於給定功能的電路來執行。
在一或多個實施例中,所描述的功能可以以硬體、軟體、韌體或其任何組合來實現。若以軟體實現,則可以將功能作為一或多個指令或代碼儲存在非暫時性電腦可讀取儲存媒體或非暫時性處理器可讀儲存媒體上。本文揭示的方法或演算法的操作可以體現在處理器可執行軟體模組或處理器可執行指令中,處理器可執行軟體模組或處理器可執行指令可以常駐在非暫時性電腦可讀或處理器可讀儲存媒體上。非暫時性電腦可讀或處理器可讀儲存媒體可以是可以由電腦或處理器存取的任何儲存媒體。經由實例而非限制的方式,這種非暫時性電腦可讀或處理器可讀儲存媒體可以包括RAM、ROM、EEPROM、NAND FLASH、NOR FLASH、M-RAM、P-RAM、R-RAM、CD-ROM,或者其他光碟儲存、磁碟儲存或其他磁儲存智慧物件,或者可以用於以指令或資料結構的形式儲存期望的程式碼並且可以由電腦存取的任何其他媒體。如本文使用的盤(disk)和碟(disc)包括壓縮光碟(CD)、鐳射光碟、光碟、數位多功能光碟(DVD)、軟碟和藍光光碟,其中盤通常磁性地再現資料,而碟利用鐳射光學地再現資料。上述的組合亦包括在非暫時性電腦可讀和處理器可讀取媒體的範疇內。另外,方法或演算法的操作可以作為代碼及/或指令中的一個或代碼及/或指令的任何組合或代碼及/或指令的集合常駐在非暫時性處理器可讀儲存媒體及/或電腦可讀取儲存媒體上,其可以合併到電腦程式產品中。
提供對所揭示的實施例的前述描述以使得本發明所屬領域中具有通常知識者能夠製作或使用請求項。對於本發明所屬領域中具有通常知識者而言,對這些實施例進行各種修改是顯而易見的,並且本文定義的一般原理可以應用於其他實施例而不脫離請求項的範疇。因此,本案不意欲限於本文所示出的實施例,而是符合與所附請求項以及本文揭示的原理和新穎特徵相一致的最寬範疇。
100‧‧‧系統102‧‧‧SOC104‧‧‧NVRAM部件105‧‧‧RAM部件106‧‧‧儲存記憶體部件106A‧‧‧輔助引導程式108‧‧‧功率管理控制器110‧‧‧CPU112‧‧‧SRAM部件114‧‧‧ROM部件116‧‧‧互連/匯流排118‧‧‧功率管理介面120‧‧‧NVRAM控制器121‧‧‧RAM控制器122‧‧‧儲存記憶體控制器124‧‧‧互連/匯流排125‧‧‧互連/匯流排126‧‧‧互連/匯流排128‧‧‧互連/匯流排130‧‧‧可信引導程式132‧‧‧熔絲140‧‧‧外部應用處理器(AP)142‧‧‧互連/匯流排146‧‧‧計時器部件148‧‧‧標誌部件160‧‧‧ICE165‧‧‧金鑰產生引擎167‧‧‧DSP169‧‧‧認證引擎172‧‧‧門機制199‧‧‧輸入/輸出(I/O)控制器200‧‧‧方法202‧‧‧方塊204‧‧‧方塊206‧‧‧方塊208‧‧‧方塊210‧‧‧方塊212‧‧‧方塊214‧‧‧方塊216‧‧‧方塊218‧‧‧方塊220‧‧‧方塊300‧‧‧方法302‧‧‧方塊304‧‧‧方塊306‧‧‧方塊308‧‧‧方塊310‧‧‧方塊312‧‧‧方塊314‧‧‧方塊407‧‧‧映射A407A‧‧‧映射A407B‧‧‧映射A410‧‧‧映射B410A‧‧‧映射B410B‧‧‧映射B412‧‧‧檔案系統417‧‧‧代碼部分417A‧‧‧映射A417B‧‧‧映射A420‧‧‧RO部分420A‧‧‧RO部分420B‧‧‧RO部分422‧‧‧RW部分422A‧‧‧RW部分422B‧‧‧RW部分425‧‧‧堆疊430‧‧‧代碼部分#1432‧‧‧RO#1部分434‧‧‧RW#1部分436‧‧‧堆疊部分440‧‧‧代碼部分#2442‧‧‧RO#2部分444‧‧‧RW#2-A446‧‧‧RW#2-B447‧‧‧RW#2-A0450‧‧‧RAM緩衝器455‧‧‧操作控制標誌461‧‧‧RW#2-BH500‧‧‧方法502‧‧‧方塊504‧‧‧方塊506‧‧‧方塊508‧‧‧方塊510‧‧‧方塊512‧‧‧方塊514‧‧‧方塊516‧‧‧方塊518‧‧‧方塊520‧‧‧方塊600‧‧‧方法602‧‧‧方塊604‧‧‧方塊606‧‧‧方塊608‧‧‧方塊610‧‧‧方塊612‧‧‧方塊614‧‧‧方塊616‧‧‧方塊700‧‧‧方法702‧‧‧方塊704‧‧‧方塊706‧‧‧方塊708‧‧‧方塊710‧‧‧方塊712‧‧‧方塊720‧‧‧方塊722‧‧‧方塊730‧‧‧方塊732‧‧‧方塊734‧‧‧方塊736‧‧‧方塊800‧‧‧行動設備801‧‧‧處理器802‧‧‧內部記憶體804‧‧‧觸控式螢幕控制器808‧‧‧無線電信號收發器810‧‧‧天線812‧‧‧觸控式螢幕面板814‧‧‧揚聲器816‧‧‧蜂巢網路無線數據機晶片818‧‧‧周邊設備連接介面820‧‧‧殼體822‧‧‧電源
併入本文並構成本說明書的一部分的附圖圖示請求項的示例性實施例,並且與上面提供的整體描述和下面提供的詳細描述一起用於解釋請求項的特徵。
圖1圖示可操作以用於以正常模式或增強記憶體模式被引導的系統的方塊圖。
圖2是示出根據實施例的對被製造為包含SOC和NVRAM的計算設備進行初始化的方法的程序流程圖。
圖3是示出根據實施例的提供對NVRAM的安全存取的方法的程序流程圖。
圖4A是圖示儲存記憶體資料的邏輯關係的方塊圖。
圖4B是圖示RAM資料的邏輯關係的方塊圖。
圖4C是圖示NVRAM資料的邏輯關係的方塊圖。
圖5是示出根據實施例的以正常模式引導SOC的方法的程序流程圖。
圖6是示出根據實施例的以增強記憶體模式引導SOC的方法的程序流程圖。
圖7是示出根據各種實施例的以增強記憶體模式智慧地操作的方法的程序流程圖。
圖8是用於包含本文描述的系統和方法的可攜式計算設備的態樣的方塊圖。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無
700‧‧‧方法
702‧‧‧方塊
704‧‧‧方塊
706‧‧‧方塊
708‧‧‧方塊
710‧‧‧方塊
712‧‧‧方塊
720‧‧‧方塊
722‧‧‧方塊
730‧‧‧方塊
732‧‧‧方塊
734‧‧‧方塊
736‧‧‧方塊

Claims (20)

  1. 一種操作一計算設備的方法,包括以下步驟:基於一大小值、一功率消耗值及一引導時間值的一組合,來決定一費用度量值;基於該費用度量值,來決定一軟體應用程式是否為一增強記憶體模式的一候選者;回應於決定了該軟體應用程式是該增強記憶體模式的一候選者:將該軟體應用程式載入到非揮發性隨機存取記憶體(NVRAM)中;及設定一增強記憶體模式指示符,該增強記憶體模式指示符可操作以用於以該增強記憶體模式啟用對該計算設備的一後續引導;在重新引導該計算設備之後,決定該增強記憶體模式指示符是否被設定;及回應於決定該增強記憶體模式指示符被設定,經由開始從該NVRAM對該軟體應用程式的執行來以該增強記憶體模式操作該計算設備。
  2. 根據請求項1之方法,亦包括以下步驟:回應於決定該軟體應用程式不是該增強記憶體模式的一候選者,將該軟體應用程式載入到揮發性記憶體中;及 回應於決定該增強記憶體模式指示符未被設定,開始從該揮發性記憶體對該軟體應用程式的執行。
  3. 根據請求項1之方法,其中基於該費用度量值,來決定該軟體應用程式是否為該增強記憶體模式的一候選者進一步包括以下步驟:對該軟體應用程式進行評估以產生評估結果;基於該等評估結果來決定該軟體應用程式是否將受益於快速啟動、快速狀態改變、低功率設備操作或高速代碼執行;及回應於決定該軟體應用程式將受益於快速啟動、快速狀態改變、低功率設備操作或高速代碼執行,決定該軟體應用程式是該增強記憶體模式的一候選者。
  4. 根據請求項1之方法,其中基於該費用度量值,來決定該軟體應用程式是否為該增強記憶體模式的一候選者進一步包括以下步驟:決定該軟體應用程式的該大小值;決定該軟體應用程式的該功率消耗值;決定該軟體應用程式的該引導時間值;決定該費用度量值是否超過一閾值;回應於決定該費用度量值超過該閾值,決定該軟體應用程式不是該增強記憶體模式的一候選者;及 回應於決定該費用度量值未超過該閾值,決定該軟體應用程式是該增強記憶體模式的一候選者。
  5. 根據請求項1之方法,亦包括以下步驟:辨識複數個候選軟體應用程式;將所辨識的軟體應用程式之每一者所辨識的軟體應用程式分類到一或多個類別中;基於與所辨識的軟體應用程式之每一者所辨識的軟體應用程式相關聯的該一或多個類別,決定每個該等所辨識的軟體應用程式的一價值;及基於所辨識的軟體應用程式中的一或多個所辨識的軟體應用程式的相應的價值,將該一或多個所辨識的軟體應用程式插入一候選軟體應用程式的列表中,其中基於該費用度量值,來決定該軟體應用程式是否為該增強記憶體模式的一候選者進一步包括以下步驟:基於包括在該候選軟體應用程式的列表中的資訊,來決定該軟體應用程式是否為以該增強記憶體模式操作的一候選者。
  6. 根據請求項5之方法,其中基於所辨識的軟體應用程式中的一或多個所辨識的軟體應用程式的相應的價值將該一或多個所辨識的軟體應用程式插入該候選軟體應用程式的列表中包括:將該等所辨識的軟體應用程式插入一候選軟體應用程式的有序列表中,該 候選軟體應用程式的有序列表基於所辨識的軟體應用程式的相關聯的價值來組織該等所辨識的軟體應用程式。
  7. 根據請求項5之方法,其中基於該等所辨識的軟體應用程式中的一或多個所辨識的軟體應用程式的相應的價值將該一或多個所辨識的軟體應用程式插入該候選軟體應用程式的列表中包括以下步驟:決定與一所辨識的軟體應用程式相關聯的該價值是否超過一閾值;及回應於決定與該所辨識的軟體應用程式相關聯的該價值超過該閾值,將該所辨識的軟體應用程式插入該候選軟體應用程式的列表中;並且其中基於包括在該候選軟體應用程式的列表中的資訊來決定該軟體應用程式是否為以該增強記憶體模式操作的一候選者包括:決定該軟體應用程式是否被包括在該候選軟體應用程式的列表中。
  8. 根據請求項1之方法,其中設定可操作以用於以該增強記憶體模式啟用對該計算設備的該後續引導的該增強記憶體模式指示符包括以下步驟:將一標誌儲存在一非揮發性記憶體中。
  9. 根據請求項1之方法,其中設定可操作以用於以該增強記憶體模式啟用對該計算設備的該後續引導的該增強記憶體模式指示符包括設定以下各項中的一項:一低功率模式指示符;一快速引導時間模式指示符;一快速狀態轉換模式指示符;或者一高速執行模式指示符。
  10. 根據請求項1之方法,其中在重新引導該計算設備之後決定該增強記憶體模式指示符是否被設定包括以下步驟:執行一可信引導程式以安全地決定該增強記憶體模式指示符的一存在。
  11. 根據請求項1之方法,亦包括以下步驟:將該增強記憶體模式指示符從該計算設備的片上系統外部的一部件發送到該片上系統。
  12. 根據請求項1之方法,亦包括以下步驟:接收指示該計算設備應退出該增強記憶體模式的一異常;及回應於接收到該異常,以一非增強記憶體模式操作該計算設備。
  13. 根據請求項1之方法,其中將該軟體應用程式載入到該NVRAM中包括: 將一軟體映射從一儲存記憶體載入到該NVRAM中,該軟體映射被配置為在該NVRAM內執行。
  14. 根據請求項1之方法,亦包括將該軟體應用程式劃分為複數個軟體映射,其中將該軟體應用程式載入到該NVRAM中包括將該複數個軟體映射的一子集載入到該NVRAM中。
  15. 根據請求項14之方法,亦包括辨識該複數個軟體映射中的、將從與NVRAM中的執行相關聯的改進中受益最多的一軟體映射,其中將該複數個軟體映射的該子集載入到該NVRAM中包括:將該所辨識的軟體映射載入到該NVRAM中。
  16. 一種計算設備,包括:一非揮發性隨機存取記憶體(NVRAM);及一處理器,其耦合到該NVRAM,其中該處理器配置有一處理器可執行指令以執行操作,該等操作包括:基於一大小值、一功率消耗值及一引導時間值的一組合,來決定一費用度量值;基於該費用度量值,來決定一軟體應用程式是否為一增強記憶體模式的一候選者;回應於決定了該軟體應用程式是該增強記憶體模式的一候選者: 將該軟體應用程式載入到該NVRAM中;及設定一增強記憶體模式指示符,該增強記憶體模式指示符可操作以用於以該增強記憶體模式啟用對該計算設備的一後續引導;在重新引導該計算設備之後,決定該增強記憶體模式指示符是否被設定;及回應於決定該增強記憶體模式指示符被設定,經由開始從該NVRAM對該軟體應用程式的執行來以該增強記憶體模式操作該計算設備。
  17. 根據請求項16之計算設備,其中該處理器配置有處理器可執行指令以執行操作,使得基於該費用度量值,來決定該軟體應用程式是否為該增強記憶體模式的一候選者進一步包括:對該軟體應用程式進行評估以產生評估結果;基於該等評估結果來決定該軟體應用程式是否將受益於快速啟動、快速狀態改變、低功率設備操作或高速代碼執行;及回應於決定該軟體應用程式將受益於快速啟動、快速狀態改變、低功率設備操作或高速代碼執行,決定該軟體應用程式是該增強記憶體模式的一候選者。
  18. 根據請求項16之計算設備,其中該處理器配置有處理器可執行指令以執行操作,使得基於該費 用度量值,來決定該軟體應用程式是否為該增強記憶體模式的一候選者進一步包括:決定該軟體應用程式的該大小值;決定該軟體應用程式的該功率消耗值;決定該軟體應用程式的該引導時間值;決定該費用度量值是否超過一閾值;回應於決定該費用度量值超過該閾值,決定該軟體應用程式不是該增強記憶體模式的一候選者;及回應於決定該費用度量值未超過該閾值,決定該軟體應用程式是該增強記憶體模式的一候選者。
  19. 一種計算設備,包括:用於基於一大小值、一功率消耗值及一引導時間值的一組合,來決定一費用度量值的單元;用於基於該費用度量值,來決定一軟體應用程式是否為一增強記憶體模式的一候選者的單元;用於回應於決定該軟體應用程式是該增強記憶體模式的一候選者而將該軟體應用程式載入到非揮發性隨機存取記憶體(NVRAM)中並且設定增強記憶體模式指示符的單元,該增強記憶體模式指示符可操作以用於以該增強記憶體模式啟用對該計算設備的一後續引導; 用於在重新引導該計算設備之後,決定該增強記憶體模式指示符是否被設定的單元;及用於回應於決定該增強記憶體模式指示符被設定而經由開始從該NVRAM對該軟體應用程式的執行來以該增強記憶體模式操作該計算設備的單元。
  20. 根據請求項19之計算設備,其中用於基於該費用度量值,來決定該軟體應用程式是否為該增強記憶體模式的候選者的單元進一步包括:用於決定該軟體應用程式的該大小值的單元;用於決定該軟體應用程式的該功率消耗值的單元;用於決定該軟體應用程式的該引導時間值的單元;用於決定該費用度量值是否超過一閾值的單元;用於回應於決定該費用度量值超過該閾值而決定該軟體應用程式不是該增強記憶體模式的一候選者的單元;及用於回應於決定該費用度量值未超過該閾值而決定該軟體應用程式是該增強記憶體模式的一候選者的單元。
TW107129437A 2017-08-23 2018-08-23 用於在異構記憶體環境內進行引導的系統和方法 TWI787334B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762549057P 2017-08-23 2017-08-23
US62/549,057 2017-08-23
US16/107,956 US10783252B2 (en) 2017-08-23 2018-08-21 System and method for booting within a heterogeneous memory environment
US16/107,956 2018-08-21

Publications (2)

Publication Number Publication Date
TW201921257A TW201921257A (zh) 2019-06-01
TWI787334B true TWI787334B (zh) 2022-12-21

Family

ID=65434326

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107129437A TWI787334B (zh) 2017-08-23 2018-08-23 用於在異構記憶體環境內進行引導的系統和方法

Country Status (6)

Country Link
US (1) US10783252B2 (zh)
EP (1) EP3673363A1 (zh)
CN (1) CN110998578B (zh)
SG (1) SG11202000297XA (zh)
TW (1) TWI787334B (zh)
WO (1) WO2019040557A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11621395B2 (en) * 2019-04-26 2023-04-04 Intel Corporation Resistive random-access memory devices and methods of fabrication
CN111506351A (zh) * 2020-04-03 2020-08-07 珠海市一微半导体有限公司 片上系统的深度休眠方法、唤醒方法和休眠与唤醒方法
KR20210144180A (ko) * 2020-05-21 2021-11-30 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
US11256811B2 (en) 2020-06-10 2022-02-22 Harman International Industries, Incorporated Secure boot at shutdown
CN112035152B (zh) * 2020-08-24 2023-10-10 成都三零嘉微电子有限公司 一种SoC芯片固件升级的安全处理系统及方法
JP2022064497A (ja) * 2020-10-14 2022-04-26 キオクシア株式会社 メモリシステム
CN112667561B (zh) * 2020-12-29 2024-05-31 成都旋极历通信息技术有限公司 一种在fpga中实现ufs阵列控制器的方法
US12015622B2 (en) * 2021-03-01 2024-06-18 Old Dominion University Privacy-preserving online botnet classification system utilizing power footprint of IoT connected devices
US20240103725A1 (en) * 2022-09-23 2024-03-28 Qualcomm Incorporated Loading multi-segmented software image files into memory using a nested file structure
CN117610025B (zh) * 2024-01-19 2024-04-05 国网信息通信产业集团有限公司 一种基于电力智能终端的嵌入式操作系统安全引导方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201324148A (zh) * 2011-09-30 2013-06-16 Intel Corp 實施具有不同操作模式之多階記憶體階層的設備與方法
WO2016175960A1 (en) * 2015-04-29 2016-11-03 Qualcomm Incorporated Systems and methods for optimizing memory power consumption in a heterogeneous system memory

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000082010A (ja) * 1998-09-04 2000-03-21 Sharp Corp アドレス変換を有するデータ処理方法および装置
JP2007156567A (ja) * 2005-11-30 2007-06-21 Toshiba Corp 情報処理装置、およびメモリ制御方法
WO2013089685A1 (en) * 2011-12-13 2013-06-20 Intel Corporation Enhanced system sleep state support in servers using non-volatile random access memory
US9182999B2 (en) * 2012-05-30 2015-11-10 Advanced Micro Devices, Inc. Reintialization of a processing system from volatile memory upon resuming from a low-power state
US9047090B2 (en) 2012-08-07 2015-06-02 Qualcomm Incorporated Methods, systems and devices for hybrid memory management
US9740500B2 (en) * 2012-08-30 2017-08-22 Microsoft Technology Licensing, Llc Layout system for operating systems using BPRAM
JP2015022516A (ja) * 2013-07-19 2015-02-02 ソニー株式会社 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
KR102385552B1 (ko) * 2015-12-29 2022-04-12 삼성전자주식회사 시스템-온-칩 및 이를 포함하는 전자 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201324148A (zh) * 2011-09-30 2013-06-16 Intel Corp 實施具有不同操作模式之多階記憶體階層的設備與方法
WO2016175960A1 (en) * 2015-04-29 2016-11-03 Qualcomm Incorporated Systems and methods for optimizing memory power consumption in a heterogeneous system memory

Also Published As

Publication number Publication date
EP3673363A1 (en) 2020-07-01
CN110998578A (zh) 2020-04-10
US20190065752A1 (en) 2019-02-28
US10783252B2 (en) 2020-09-22
SG11202000297XA (en) 2020-03-30
TW201921257A (zh) 2019-06-01
WO2019040557A1 (en) 2019-02-28
CN110998578B (zh) 2023-12-01

Similar Documents

Publication Publication Date Title
TWI787334B (zh) 用於在異構記憶體環境內進行引導的系統和方法
US10591975B2 (en) Memory access management for low-power use cases of a system on chip via secure non-volatile random access memory
US9202061B1 (en) Security enclave processor boot control
US10762216B2 (en) Anti-theft in firmware
US9419794B2 (en) Key management using security enclave processor
US8775757B2 (en) Trust zone support in system on a chip having security enclave processor
US8832465B2 (en) Security enclave processor for a system on a chip
US9043632B2 (en) Security enclave processor power control
JP6333993B2 (ja) ハードウェアプラットフォームのためのファームウェアのインシステムプロビジョニング
TWI493460B (zh) 電子裝置以及開機方法
US20130304979A1 (en) Access control for non-volatile random access memory across platform agents
US9479331B2 (en) Managing security in a system on a chip (SOC) that powers down a secure processor
US9817788B2 (en) Hub devices and methods for initializing hub device
TW201833764A (zh) 安全影像之選擇性修復及鑑認
CN114258517B (zh) 用于调制解调器指导的应用处理器引导流程的系统和方法
US20240160743A1 (en) Boot firmware corruption detection & mitigation