TWI722361B - 系統開機碼記憶體管理方法、記憶體裝置與應用其之電子系統 - Google Patents
系統開機碼記憶體管理方法、記憶體裝置與應用其之電子系統 Download PDFInfo
- Publication number
- TWI722361B TWI722361B TW108100560A TW108100560A TWI722361B TW I722361 B TWI722361 B TW I722361B TW 108100560 A TW108100560 A TW 108100560A TW 108100560 A TW108100560 A TW 108100560A TW I722361 B TWI722361 B TW I722361B
- Authority
- TW
- Taiwan
- Prior art keywords
- configuration
- address
- code
- boot
- updated
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Stored Programmes (AREA)
- Read Only Memory (AREA)
- Storage Device Security (AREA)
Abstract
一種記憶體裝置包括:一非揮發性記憶體,具有一第一部分及一第二部分,該第一部分以一第一範圍的實體位址表示,該第二部分以一第二範圍的實體位址表示,該第一部份與該第二部份以一第一配置與一第二配置中之一目前配置而被使用,該第一部份與該第二部份之其中一者儲存一主要開機碼而該第一部份與該第二部份之另一者儲存一備份開機碼;一位址解碼器,耦合至該非揮發性記憶體,用以將接收到的一命令位址映射到該非揮發性記憶體的一實體位址;以及一控制電路,耦合至該位址解碼器。回應於一更新後開機碼取代該備份開機碼,該更新後開機碼被執行一預驗證操作,對該第一部份與該第二部份暫時以該第一配置與該第二配置之一另一配置而被使用。如果該更新後開機碼正常運作,則於系統重設後,該第一部份與該第二部份以該第一配置與該第二配置之該另一配置而被使用。如果該更新後開機碼無法正常運作,則於系統斷電重開後,該第一部份與該第二部份回復至以該第一配置與該第二配置之該目前配置而被使用。
Description
本發明是有關於一種系統開機碼記憶體管理方法、記憶體裝置與應用其之電子系統。特別是,本技術用以管理及升級程式碼,例如儲存於非揮發性記憶體(non-volatile memory)的基本輸入輸出系統(Basic Input/Output System,BIOS)。
一般而言,當計算機系統第一次開機或重啟,軟體中首先被執行的部分是系統開機碼,系統開機碼例如是儲存於非揮發性記憶體的基本輸入輸出系統(BIOS)。當開機碼執行時,計算機系統通常會運行自我測試(self-test)。開機碼也包括用以初始化或控制計算機系統的基本元件的功能,基本元件例如鍵盤、顯示器、各種碟盤機(例如硬碟、磁碟機、CD-ROM、DVD光碟機等)以及各種通訊埠,例如序列埠(例如通用序列匯流排(USB)等)。開機碼可初始化開機引導程序(boot loader),開機引導程序可從所選硬碟中加載作業系統。若沒有有效且具有正常功能的開機碼,計算機系統將無法開機。
開機碼通常儲存在非揮發性記憶體中,因而不會在每次計算機系統重啟時被抹除,且可於新版本發布時進行更新,例如改進開機碼的效率或功能,或例如修正原本開機碼的錯誤(bug)。隨著時代演進,開機碼的更新也變得更加容易。例如,在新版本的開機碼發布時,許多計算機系統都具備通過網路下載新版本開機碼的自我更新的功能。
由於開機碼的重要性,沒有採取任何預防手段就直接抹除目前的開機碼或直接覆蓋目前的開機碼,都是不安全的。這是因為可能會發生電源錯誤或系統錯誤,或下載到損壞的檔案。在沒有安全防護的情況下,用戶可能會面臨目前的開機碼全部或部分被抹除且更新的開機碼還無法用來執行。這將導致用戶的計算機系統無法正常開機。為了完成保存及更新開機碼的程序,傳統的計算機系統採用雙BIOS系統(DualBIOS或twinBIOS)。雙BIOS系統允許下載較新版本的開機碼到另一個備份快閃記憶體。例如,傳統計算機系統的主機板(motherboard)包括一主BIOS(開機碼)快閃記憶體及一備份BIOS(開機碼)快閃記憶體(注意,這個技術所用的「主BIOS快閃記憶體」及「備份BIOS快閃記憶體」是指兩個不同的快閃記憶體,用來儲存開機碼或其他類型的資料)。這些雙BIOS系統下載新的開機碼到備份快閃記憶體。當新的開機代碼完全下載且被驗證,接著計算機系統就會在下一個開機循環(boot cycle)將新的開機碼複製到主快閃記憶體,或是在下一個開機循環以備份快閃記憶體開機。藉由這個架構,雙BIOS系統能夠保有目前正在運行的開機碼的備份,以便在發生像是病毒、電源浪
湧或突發電源錯誤造成的崩潰事件時,能夠在下一個開機循環執行備份的開機碼。一般而言,主快閃記憶體中的開機碼會被評估,若此開機碼無法通過評估,那麼開機碼將會從備份快閃記憶體中執行。
這種傳統的系統需要用到兩個不同的快閃記憶體來儲存、更新及執行開機碼。使用兩個不同的快閃記憶體需要用到主機板上額外的空間。近日來,使用開機碼及需要進行開機碼更新的計算機系統的類型不僅限於個人或桌上型計算機,而擴展到可穿戴式裝置、機上盒、媒體中心接收器、物聯網設備、家用電器、汽車部件、伺服器、資料中心等,這些裝置的空間限制都是最受重視的。
因此,需要提供一種系統開機碼記憶體管理方法、記憶體裝置與電子系統,以期解決現有技術的缺點。
根據本案一示範性實施例,提供一種記憶體裝置,包括:一非揮發性記憶體,具有一第一部分及一第二部分,該第一部分以一第一範圍的實體位址表示,該第二部分以一第二範圍的實體位址表示,該第一部份與該第二部份以一第一配置與一第二配置中之一目前配置而被使用,該第一部份與該第二部份之其中一者儲存一主要開機碼而該第一部份與該第二部份之另一者儲存一備份開機碼;一位址解碼器,耦合至該非揮發性記憶體,用以將接收到的一命令位址映射到該非揮發性記憶體的一實體位址;以及一控制電路,耦合至該位址解碼器。回應於一更新後開機碼取代該備份開機碼,該更新後開機碼被執行一預驗證操作,
對該第一部份與該第二部份暫時以該第一配置與該第二配置之一另一配置而被使用。如果該更新後開機碼正常運作,則於系統重設後,該第一部份與該第二部份以該第一配置與該第二配置之該另一配置而被使用。如果該更新後開機碼無法正常運作,則於系統斷電重開後,該第一部份與該第二部份回復至以該第一配置與該第二配置之該目前配置而被使用。
根據本案另一示範性實施例,提供一種系統開機碼記憶體管理方法,應用於一非揮發性記憶體,該非揮發性記憶體具有一第一部分及一第二部分,該第一部分以一第一範圍的實體位址表示,該第二部分以一第二範圍的實體位址表示,該第一部份與該第二部份以一第一配置與一第二配置中之一目前配置而被使用,該第一部份與該第二部份之其中一者儲存一主要開機碼而該第一部份與該第二部份之另一者儲存一備份開機碼,該方法包括:回應於一更新後開機碼取代該備份開機碼,對該更新後開機碼執行一預驗證操作,該第一部份與該第二部份暫時以該第一配置與該第二配置之一另一配置而被使用;如果判斷該更新後開機碼正常運作,則於系統重設後,該第一部份與該第二部份以該第一配置與該第二配置之該另一配置而被使用;以及如果判斷該更新後開機碼無法正常運作,則於系統斷電重開後,該第一部份與該第二部份回復至以該第一配置與該第二配置之該目前配置而被使用。
根據本案另一示範性實施例,提供一種電子系統,包括:一主控制器;以及一記憶體裝置,耦接至該主控制器。該記憶體裝置包括:一非揮發性記憶體,具有一第一部分及一第二部分,該第一部分以一第一範圍的實體位址表示,該第二部分以一第二範圍的實體位址表示,該第一部份與該第二部份以一第一配置與一第二配置中之一目前配置而被使用,該第一部份與該第二部份之其中一者儲存一主要開機碼而該第一部份與該第二部份之另一者儲存一備份開機碼;一位址解碼器,耦合至該非揮發性記憶體,用以將接收到的一命令位址映射到該非揮發性記憶體的一實體位址;以及一控制電路,耦合至該位址解碼器。回應於一更新後開機碼取代該備份開機碼,該主控制器對該更新後開機碼執行一預驗證操作,對該第一部份與該第二部份暫時以該第一配置與該第二配置之一另一配置而被使用。如果該更新後開機碼正常運作,則於系統重設後,該第一部份與該第二部份以該第一配置與該第二配置之該另一配置而被使用。如果該更新後開機碼無法正常運作,則於系統斷電重開後,該第一部份與該第二部份回復至以該第一配置與該第二配置之該目前配置而被使用。
本發明的其他方面及優點可通過後續的圖式、詳細說明及申請專利範圍進一步了解。
100:系統
110:主控制器
112:通訊匯流排
120:記憶體控制器
122:通訊匯流排
130:記憶體裝置
132:匯流排介面
134:控制電路
136:位址解碼器
137:映射表
138:狀態邏輯
139:非揮發性記憶體
140:記憶區塊
142:第一部分
143:開機碼區域
144:第二部分
145:更新碼區域
200:第一配置
202:第二配置
302:閂鎖邏輯
303:互斥或閘邏輯
304:禁止寫入邏輯
PQ:預驗證旗標
602~620:步驟
第1圖繪示根據本案一示範性實施例的電子系統的功能性方塊圖。
第2圖繪示根據本案一示範性實施例的一記憶體裝置的一非揮發性記憶體的第一及第二部分的第一及第二配置的功能性方塊圖。
第3圖繪示根據本案一示範性實施例的第1圖的電子系統的部分的功能性方塊圖。
第4圖與第5圖繪示根據本案一示範性實施例的操作於「雙區域更新模式」的記憶體裝置的示意圖。
第6圖繪示根據本案一示範性實施例的「雙區域更新模式」的系統開機碼記憶體管理方法流程圖。
以下將搭配圖式對本發明的實施例進行詳細說明。
第1圖繪示根據本案一示範性實施例的系統100的功能性方塊圖。系統100(亦即電子系統100)包括主控制器110、通訊匯流排112、記憶體控制器120、通訊匯流排122以及記憶體裝置130。在系統100中,主控制器110可以執行一或多個程式,該(該些)程式以邏輯位址來讀取及寫入資料。主控制器110通過通訊匯流排112而與記憶體控制器120進行通訊,且記憶體控制器120通過通訊匯流排122而與記憶體裝置130進行通訊。
主控制器110例如是運行作業系統的計算機系統。作業系統通過通訊匯流排112傳遞請求(例如寫入及讀取)至記憶體控制器120。
主控制器110與記憶體控制器120之間的通訊匯流排112例如是週邊元件互連標準(peripheral component interconnect,PCI)匯流排、快捷週邊元件互連標準(peripheral component interconnect express,PCIe)匯流排、串行ATA(SATA,Serial Advanced Technology Attachment)及其他可用適合的通訊協定進行通訊的匯流排。
記憶體控制器120可藉由微控制單元(microcontroller unit,MCU)中的軟體或其他邏輯結構來實現,或者可藉由專用的記憶體控制器晶片來實現。在其他實施例中,主控制器110與記憶體控制器120可實現在單一處理器上,或者主控制器110與記憶體控制器120可為複雜資料處理系統的一部分。記憶體控制器120可作為主控制器110與記憶體裝置130之間的介面。記憶體控制器120的其中一個功能是將高階讀取請求及高階寫入請求轉譯為記憶體裝置130的命令語言(command language),這種命令語言可用來存取記憶體裝置130上的非揮發性記憶體139。
記憶體控制器120藉由通訊匯流排122連接至記憶體裝置130。為了說明的目的,通訊匯流排122可在記憶體控制器120及記憶體裝置130之間傳送資料。通訊匯流排122可包括連接到記憶體控制器120及記憶體裝置130的匯流排線。
記憶體裝置130包括匯流排介面132、控制電路134、位址解碼器136及非揮發性記憶體139。記憶體裝置130的非揮發性記憶體139可為單記憶胞單位元(single-bit-per-cell)或單記憶胞多位元(multiple-bit-per-cell)NOR非揮發性快閃記憶體裝置。在其他例子中,非揮發性記憶體139可包括其他類型的非揮發性記憶體裝置,例如單記憶胞單位元或單記憶胞多位元NAND非揮發性快閃記憶體裝置、相變化記憶體、磁性記憶體、金屬氧化物可編程電阻記憶體等。
進一步來說,非揮發性記憶體139可包括複數個記憶區塊(block)140用來執行讀取及寫入操作。例如第1圖所示,非揮發性記憶體139的區塊140可包括第一部分142及第二部分144。例如,第一部分142可代表從一確切位址xxx(例如,位址000000h)開始的一連續範圍的實體位址,且第二部分144可代表從一確切位址yyy(例如位址800000h)開始的另一連續範圍。第二部分144可從第一部分142的終止位址的下一個實體位址開始,或者第一部分142與第二部分144之間有額外空間可保留給其他用途或用於擴展第一部分142及/或第二部分144的範圍。
記憶體裝置130的位址解碼器136包括一映射表137,且控制電路134包括狀態邏輯138。映射表137將從記憶體控制器120所接收到的命令位址(例如讀取命令位址及寫入命令位址)映射至非揮發性記憶體體139的實體位址。狀態邏輯138可用以指示映射表137要讀取或寫入第一部分142或第二部分144的哪一部份。控制電路134及/或狀態邏輯138也可決定並指示記憶體裝置130是操作於何種模式。例如,控
制電路134及/或狀態邏輯138可決定並指示記憶體裝置130是處於一般模式或雙區域更新模式,其中雙區域更新模式下,第一部分142及第二部分144被用來儲存及更新程式碼(例如開機碼)。
包括狀態邏輯138的控制電路134可存取非揮發性記憶體139、執行記憶體讀取及寫入操作及保存一目前狀態,其中目前狀態用以決定非揮發性記憶體139的第一部分142或第二部分144的哪一部份要被使用或存取。在一實施例中,第一部分142及第二部分144用以儲存BIOS或開機碼。
控制電路134也可解碼通過匯流排介面132從記憶體控制器120接收的命令序列。這些命令序列可包括對應操作程式碼(例如讀取、寫入、抹除等)、命令位址及/或資料(例如要被寫入非揮發性記憶體139的資料)。控制電路134對非揮發性記憶體139執行更新BIOS或開機碼的更新操作。
第2圖繪示根據本案一示範性實施例的記憶體裝置的非揮發性記憶體的第一及第二部分的第一及第二配置的功能性方塊圖。
明確來說,第2圖繪示第一配置200及第二配置202。根據第一配置200,第1圖的非揮發性記憶體139的第一部分142用以儲存在「開機」期間要被主控制器110所讀取的資料(例如開機碼),而非揮發性記憶體139的第二部分144用以寫入更新的資料(例如更新的開機碼)。在第2圖的這個例子中,第一部分142及第二部分144可用以儲存BIOS或開機碼。根據第一配置200,
第一部分142包括開機碼區域(boot code area)143,其中開機碼區域143儲存有在「開機」期間使用的開機碼(亦可稱為主要開機碼)。第二部分144包括更新碼區域(update code area)145,其中更新碼區域145被用來寫入更新的開機碼(或者是,存於更新碼區域145的開機碼亦可稱為備份開機碼)。根據第二配置202,第一部分142包括更新碼區域145,其中更新碼區域145被用來寫入更新的開機碼;而第二部分144包括開機碼區域143,其中開機碼區域143儲存有在「開機」期間使用的開機碼。這僅僅是本發明的一個示例性範例且不應被限制於BIOS或開機碼。
在第2圖的第一配置200與第二配置202中,非揮發性記憶體139的第一部分142的起始位址被指派從實體位址000000h(十六進位制)(也就是二進位制的0000 0000 0000 0000 0000 0000)開始,而非揮發性記憶體139的第二部分144的起始位址則被指派為從800000h(也就是二進位制的1000 0000 0000 0000 0000 0000)開始。第一部分142的終止位址可為實體位址7FFFFFh(也就是二進位制的0111 1111 1111 1111 1111 1111);而第二部分144的終止位址可為實體位址FFFFFFh(也就是二進位制的1111 1111 1111 1111 1111 1111)。
進一步地,根據第一配置200,當主控制器110執行一讀取操作(其主控制器位址000000h)以從非揮發性記憶體139讀取開機碼時,會被導向實體位址000000h(亦即,從第一部份142讀出開機碼)。再根據第一配置200,當主控制器110執行一寫入操作(其主控制器位址
800000h)以寫入更新的開機碼到非揮發性記憶體139時,會被導向實體位址800000h(亦即,對第二部份144寫入更新的開機碼)。
進一步地,根據第二配置202,當主控制器110執行讀取操作(其主控制器位址000000h)以從非揮發性記憶體139讀取開機碼時,會被導向實體位址800000h(亦即,從第二部份144讀出開機碼)。再根據第二配置202,當主控制器110執行寫入操作(其主控制器位址800000h)以寫入更新的開機碼到非揮發性記憶體139時,會被導向實體位址000000h(亦即,對第一部份142寫入更新的開機碼)。
也就是說,不論是第一配置200或第二配置202中,當主控制器110要讀出主要開機碼時,主控制器110皆是發出相同的主控制器讀取位址000000h,但主控制器110被導向不同的記憶體實體位址;當主控制器110要寫入更新的開機碼時,主控制器110皆是發出相同的主控制器寫入位址800000h,但主控制器110被導向不同的記憶體實體位址。
第2圖也繪示了變數bootcode-def(位元),其可為「致能(enable)」或「禁能(disable)」。當bootcode-def為「致能」時,記憶體裝置130處於雙區域更新模式(例如簡稱「雙模式」),其中在雙模式下,允許在繼續使用目前開機碼時,更新BIOS或開機碼。換言之,當bootcode-def為「致能」時,第一配置200與第二配置202皆被用來讀取/寫入資料(開機碼)。若bootcode-def指示為「禁能」時,記憶體裝置130會操作於傳統模式,這表示第一配置200與第二配置202皆不會被使用(亦即雙模式被禁用)。換言之,bootcode-def代表啟用或禁用的「雙
區域更新模式」。bootcode-def可由用戶設定且bootcode-def的值可儲存於一非揮發性記憶體暫存器(未繪示)。第1圖的控制電路134及狀態邏輯138根據bootcode-def而操作。「bootcode-def」的命名僅為一個例子,是用來指示記憶體裝置130要操作於傳統模式還是雙模式。任何其他的命名方式皆可以被使用。或者,變數bootcode-def亦可稱為「雙區域更新模式致能參數」。
此外,根據第一配置200,變數bootaddr-def等於0。這可代表第一部分142與第二部分144是根據第一配置200被使用。在這個例子中,當bootaddr-def等於0(也就是第一配置),在「開機」期間要被讀取的程式碼(開機碼)是從非揮發性記憶體139中為開機碼指派的最低的位址開始儲存的。此第一配置也可指示程式碼是從非揮發性記憶體139的最高位址開始儲存。bootaddr-def可由用戶設定且可被儲存於一非揮發性記憶體暫存器(未繪示)。第1圖的控制電路134及狀態邏輯138根據變數bootaddr-def而操作。同樣地,「bootaddr-def」的命名方式只是一個例子,是用以指示非揮發性記憶體139的哪一個部分儲存要被讀取的目前程式碼,以及非揮發性記憶體139的哪一個部分要被寫入更新的程式碼。或者是,變數bootaddr-def亦可稱為「配置選擇參數」。
在第一配置200中,當主控制器110意圖要從位址000000h(亦即主控制器位址(host-addr)為000000h)讀取目前程式碼時,記憶體裝置130從實體位址000000h(亦即記憶體位址(mem-addr)為000000h)開始讀取。當主控制器110意圖寫入更新的程式碼到位址
800000h(亦即主控制器位址為800000h),記憶體裝置130從位址800000h(亦即記憶體位址800000h)開始寫入。
根據第二配置202,非揮發性記憶體139的第二部分144用以儲存在開機期間要被讀取的資料(例如開機碼),且非揮發性記憶體139的第一部分142用以寫入更新的資料(例如更新的開機碼)。此外,當bootcode-def為「致能」且bootaddr-def為1時,記憶體裝置130實行第二配置202。明確來說,在第二配置202中,變數bootaddr-def等於1,這可代表第一部分142與第二部分144根據第二配置202而被使用。在這個例子中,當bootaddr-def等於1(也就是第二配置)時,開機期間要被讀取的程式碼(開機碼)的儲存處是從非揮發性記憶體的最低位址以外的實體位址開始(例如實體位址800000h,不同於第一配置200中的實體位址000000h)。
如第2圖所示,根據第二配置202,當主控制器110意圖要從位址000000h(亦即主控制器位址(host-addr)為000000h)讀取目前程式碼時,記憶體裝置130從實體位址800000h(亦即記憶體位址(mem-addr)為800000h)開始讀取。當主控制器110意圖寫入更新的程式碼到位址800000h(亦即主控制器位址為800000h),記憶體裝置130從位址000000h(亦即記憶體位址000000h)開始寫入。
此外,參照第2圖,第一配置200中第一部分142(開機碼區域143)的二進位制位址開始於0000 0000 0000 0000 0000 0000,而在第二配置202中第二部分144(開機碼區域143)的二進位制位址起始於1000 0000 0000 0000 0000 0000。因此,藉由簡易地翻轉位址的最
高有效位元,開機碼區域143的實體位址可取決於所執行的配置而改變。如搭配第3圖所描述的更多細節,指定給bootaddr-def的值可致使控制電路134與狀態邏輯138變換實體記憶體位址的最高有效位元,以使得能夠從非揮發性記憶體139中適合的區域讀取程式碼,以及將程式碼更新(寫入)到非揮發系記憶體139中適合的區域。
第3圖繪示第1圖中的部分的功能性方塊圖。
明確來說,第3圖繪示第1圖的系統100的控制電路134、位址解碼器136以及非揮發性記憶體139等部分。請參照第3圖,系統100可更包括位址邏輯300、閂鎖邏輯302與互斥或閘(EXOR,Exclusive-OR gate)邏輯303。位址邏輯300、閂鎖邏輯302與EXOR邏輯303皆為第1圖中控制電路134的狀態邏輯138的一部分。預驗證旗標PQ儲存於控制電路134的揮發性記憶體暫存器中。
bootaddr-def的值儲存於控制電路134的一非揮發性記憶體暫存器中。bootaddr-def的值可由閂鎖邏輯302接收。如前面說明的,變數bootaddr-def可為「1」或「0」,用以指示系統100使用第一配置或第二配置操作。第一配置可指第2圖的第一配置200,而第二配置可指第2圖的第二配置202。
每次系統100開機時,閂鎖邏輯302接收一上電觸發訊號(power up trigger),並輸出一輸出信號FF_OUT。也就是說,當上電觸發訊號致能時,閂鎖邏輯302的輸出信號FF_OUT等於變數bootaddr-def。然而,閂鎖邏輯302的輸出信號FF_OUT的值將不會被
改變,直到系統100重啟且上電觸發訊號致使閂鎖邏輯302重新閂鎖bootaddr-def的值。
輸出信號FF_OUT與預驗證旗標(prequalify flag)PQ輸入至EXOR邏輯303,且EXOR邏輯303輸出變數bootaddr(亦可稱為開機位址參數)。變數bootaddr輸入至位址邏輯300與禁止寫入邏輯304。預驗證旗標PQ的預設為0。
如第3圖所示,位址邏輯300取得變數bootcode-def的值以及寫入命令的寫入位址的最高有效位元。bootcode-def的值儲存於控制電路134的一非揮發性記憶體暫存器中。變數bootcode-def如前面參照第2圖所說明的。基本上,bootcode-def指示雙區域更新模式(即雙模式)是啟用還是禁用。若雙模式被禁用,系統100將操作在傳統方法下。若雙模式被啟用,系統100將使用如第2圖所示的兩個不同配置進行操作。bootcode-def的值可為「0」或「1」,其中如第3圖所示,「0」代表禁用雙模式,「1」代表啟用雙模式。上述的值僅僅是個示例,其意義是可以對調的。
由位址邏輯300獲得的「主控制器寫入位址的最高有效位元(host most significant bit of write address)」(或「主控制器讀取位址的最高有效位元(host most significant bit of read address)」)是由主控制器寫入命令(或讀取命令)標示出的寫入位址(或讀取位址)的最高有效位元(也可稱為主控制器位址的最高有效位元)。也就是主控制器110意圖要寫入/讀取的位址的最高有效位元。為方便說明,底下以寫入為例做說明。第3圖將主控制器寫入位址的最高有效位元標示為
「HMSBaddr」。位址邏輯300也接收由閂鎖邏輯302與EXOR邏輯303所決定的bootaddr的值。位址邏輯300的操作如下所述。
當bootcode-def為禁能(亦即禁能雙區域更新模式),(1)由位址邏輯300輸出的變數「MMSaddr」等於HMSBaddr,且(2)變數bootaddr以及inhibit-write被忽略。當bootcode-def為致能(亦即致能雙區域更新模式)時,(1)若bootaddr等於「0」,則變數MMSaddr等於HMSBaddr,而(2)若bootaddr等於「1」,則變數MMSaddr等於HMSSBaddr的反相值(inverted value)。也可以說,(1)當bootaddr等於「0」,對非揮發性記憶體139的讀/寫可視為是第一配置200,而(2)當bootaddr等於「1」,對非揮發性記憶體139的讀/寫可視為是第二配置202。
位址解碼器136接收位址邏輯300提供的MMSaddr以及主控制器寫入位址的其餘部分(也就是「主控制器寫入位址的最低有效位元(host least significant bits of write address)」或「HLSBaddr」))。位址解碼器136結合MMSaddr與HLSBaddr,並使用映射表137(如第1圖所示)以辨別非揮發性記憶體139的哪個實體位址應該要被存取。例如,若主控制器110發送一寫入命令到位址000000h(即0000 0000 0000 0000 0000 0000),當bootcode-def為致能且bootaddr為1時,位址解碼器136會將由MMSaddr表示的此寫入命令的最高有效位元從「0」翻轉(反相)為「1」,並結合具有「1」的MMSaddr與具有值「000 0000 0000 0000 0000 0000」的HLSBaddr。其結果為「1000 0000 0000 0000 0000 0000」,被映射表137用來定址到對應的實體位址。另一方面,例如,
若主控制器110發送一寫入命令到位址000000h(即0000 0000 0000 0000 0000 0000),當bootcode-def為致能且bootaddr為0時,位址解碼器136會並結合具有「0」的MMSaddr與具有值「000 0000 0000 0000 0000 0000」的HLSBaddr。其結果為「0000 0000 0000 0000 0000 0000」,被映射表137用來定址到對應的實體位址。
為了增加一層安全防護,禁止寫入邏輯304被用來避免開機碼區域143在更新碼區域145上的程式碼更新並驗證完成之前被覆寫或抹除。禁止寫入邏輯304接收(1)來自閂鎖邏輯302的bootaddr、(2)來自位址邏輯300的MMSaddr及(3)bootcode-def。基於這些輸入,禁止寫入邏輯304可為開機碼區域143及更新碼區域145致能或禁能一禁止寫入的狀態。
變數bootaddr及inhibit-write的值無法由用戶設置,只能由系統100或系統100的邏輯設置。此外,這些值可儲存於揮發性或非揮發性記憶體中。
第4圖與第5圖繪示根據本案一示範性實施例的操作於「雙區域更新模式」的記憶體裝置的示意圖。為方便解釋,第4圖與第5圖以第一配置為例來說明,但習知此技者當可從下列說明來了解如何應用至第二配置。
請同時參考第3圖至第5圖。在第一配置下,變數bootaddr-def=0。如果尚未寫入更新的開機碼至更新碼區域145,則預驗證旗標PQ為0(處於預設值)。故而,變數bootaddr-def=0且預驗證旗標PQ為0,EXOR邏輯303輸出變數bootaddr=0。在此時,
開機碼(代碼A)要從第一部份142讀取,而當要更新開機碼時,更新版的開機碼則寫入至第二部份144。也就是說,如上述般,當處於第一配置且當變數bootaddr=0時,當主控制器意圖要從位址000000h(亦即主控制器位址(host-addr)為000000h)讀取開機碼A時,記憶體裝置130從實體位址000000h(亦即記憶體位址(mem-addr)為000000h)開始讀取開機碼A。當主控制器意圖寫入更新的程式碼C到位址800000h(亦即主控制器位址為800000h),記憶體裝置130從位址800000h(亦即記憶體位址800000h)開始寫入程式碼C。
之後,進行更新碼操作,對第二部份144解除「禁止寫入」並抹除原先的備份開機碼B。之後,將新的開機碼C寫入至第二部份144,並且對新的開機碼C進行保護(亦即,對第二部份144致能「禁止寫入」)。如果新的開機碼C已完全寫入至第二部份,則在本案示範性實施例中,主控制器110對於新的開機碼C進行預驗證,其細節如下。
當主控制器110對於新的開機碼C進行預驗證時,主控制器110將預驗證旗標PQ設為1且主控制器110發出系統重設指令,但此系統重設指令不能觸發斷電重開機循環(power off-on cycle)(亦即不能觸發上電觸發訊號),以避免將預驗證旗標PQ復原為0,這是因為預驗證旗標PQ乃是存於狀態邏輯134的一內部揮發性暫存器之內,如果觸發斷電重開機循環的話,則預驗證旗標PQ會被復原為0。由於預驗證旗標PQ由0變為1且bootaddr-def=0,EX邏輯303所輸出的變數bootaddr=1(由0變為1),故而,對於此時的主控制器而言,當主控制器
意圖要從位址000000h(亦即主控制器位址(host-addr)為000000h)讀取開機碼時,記憶體裝置130從實體位址800000h(亦即記憶體位址(mem-addr)為800000h)開始讀取。這是因為輸入至位址邏輯300的變數bootaddr由0變為1,故而,位址解碼器136所輸出的位址會成為800000h。簡言之,在此時(bootaddr-def=0且PQ=1),記憶體裝置130由第二部份144讀取更新版的開機碼C,以回傳給主控制器110,以當成開機碼。也就是說,在此實施例中,在此時,第二部份144「暫時」被架構成「開機碼區域」而第一部份142「暫時」被架構成「更新碼區域」。亦即,在此時,配置暫時從第一配置變成第二配置,但主控制器110仍未變更變數bootaddr-def的值。
如果主控制器110能夠使用更新版程式碼C來完成開機的話(也就是說,更新版程式碼C是正確無誤的),則主控制器110將變數bootaddr-def變更/反相(例如,bootaddr-def=!bootaddr-def)(將變數bootaddr-def由0變為1)。於下次斷電重開時,閂鎖邏輯302將會讀取到已變為1的bootaddr-def且由於斷電重開,所以預驗證旗標PQ已回復到0,故而,經由EXOR邏輯303的邏輯運算,變數bootaddr=1,亦即代表,在此時,已成功變為第二配置,第二部份144已被架構成「開機碼區域」而第一部份142已被架構成「更新碼區域」。亦即,之後,主控制器110從第二部份讀出程式碼C當成開機碼。
相反地,如第5圖所示,如果主控制器110無法使用更新版程式碼C來完成開機的話(也就是說,更新版程式碼C是錯誤的),則系統100將會當機(死機),則主控制器110不會變動變數bootaddr-def。
於下次斷電重開時,閂鎖邏輯302將會讀取到仍為0的bootaddr-def且由於斷電重開,所以預驗證旗標PQ已回復到0,故而,經由EXOR邏輯303的邏輯運算,變數bootaddr=0,亦即代表,在此時,從暫時的第二配置復原為第一配置,亦即,第二部份144被復原為「更新碼區域」而第一部份142被復原為「開機碼區域」,亦即主控制器110仍由第一部份142來讀出程式碼A為開機碼。
也就是說,在本案示範性實施例中,於更新版的開機碼寫入至更新碼區域後,透過致能預驗證旗標PQ,暫時地變更配置。如果主控制器110能夠用更新版的開機碼來成功開機的話,則配置將會被固定(配置變化為:「第一配置」→「暫時性的第二配置」→「第二配置」);如果主控制器110無法用更新版的開機碼來成功開機的話,則配置將會被復原(如,配置變化為:「第一配置」→「暫時性的第二配置」→(復原成)「第一配置」)。
經由上述描述可知,在更新開機碼時,即便是更新版的開機碼C是錯誤的,透過本案上述實施例的預驗證做法,主控制器110可以在不傷害到原開機碼A的情況下,先行確認更新版的開機碼C是正確或錯誤的(亦即對更新版的開機碼C進行預驗證),以避免在因為寫入錯誤的更新版開機碼,造成系統死機無法救回的情況。
此外,如上述般,為達成本案上述示範性實施例的特點(預驗證),所需的電路與控制方式並不複雜,故而,本案上述示範性實施例具有成本低、容易實施、容易控制、零風險更新開機碼的優點。
第6圖顯示根據本案一示範性實施例的「雙區域更新模式」的系統開機碼記憶體管理方法流程圖。如第6圖所示,於步驟602中,系統開機。於步驟604中,主控制器110檢查預驗證旗標PQ是否為1。如果預驗證旗標PQ為1,則於步驟606中,主控制器110檢查更新後的開機碼是否能通過預驗證。如果更新後的開機碼通過預驗證,於步驟608中,變更配置選擇參數(主控制器變更變數bootaddr-def的值),如此,於下次上電觸發訊號致能時,可將配置由第一配置200(第二配置202)變成第二配置202(第一配置200)。於步驟610中,執行一般系統操作。
如果更新後的開機碼無法通過預驗證,於步驟612中,主控制器不會變更變數bootaddr-def的值,斷電重開(使得預驗證旗標PQ回復為0)以將配置復原。於步驟614中,用原開機碼開機。
如果預驗證旗標PQ為0,則於步驟616中,檢查是否要進行開機碼更新。如果要進行開機碼更新,於步驟618中,將更新的開機碼寫入至更新碼區域並將預驗證旗標PQ設為1,之後,流程回至步驟602。
如果不進行開機碼更新,於步驟620中執行一般系統操作。
綜上所述,本案可藉由預驗證更新的開機碼,來避免因為更新到錯誤的開機碼所導致的當機或死機。亦即,在將更新的開機碼設定為主要的開機碼之前,主控制器會對更新的開機碼進行預驗證。在進行預驗證時,具有更新的開機碼的區域暫時被架構為開機碼
區域,而具有原本開機碼的區域暫時被架構為更新碼區域。如果主控制器可利用更新的開機碼來成功開機(亦即更新的開機碼可正確運作的話),則具有更新的開機碼的區域會被架構為開機碼區域,而具有原本開機碼的區域會被架構為更新碼區域。相反地,如果主控制器無法利用更新的開機碼來成功開機(亦即更新的開機碼無法正確運作的話),則具有更新的開機碼的區域會被架構回為更新碼區域,而具有原本開機碼的區域會被架構為開機碼區域(使得系統利用原本開機碼來開機)。
雖然本發明已藉由參考實施例及各種例子對細節說明如上,然可以理解的是此些例子僅是作為說明之用,並非用來限制本發明。本領域的技術人員將能輕易地在本發明的精神和所附申請專利範圍的範疇內進行修改和組合。申請專利範圍如下所述。
602-620:步驟
Claims (18)
- 一種記憶體裝置,包括:一非揮發性記憶體,具有一第一部分及一第二部分,該第一部分以一第一範圍的實體位址表示,該第二部分以一第二範圍的實體位址表示,該第一部份與該第二部份以一第一配置與一第二配置中之一目前配置而被使用,該第一部份與該第二部份之其中一者儲存一主要開機碼而該第一部份與該第二部份之另一者儲存一備份開機碼;一位址解碼器,耦合至該非揮發性記憶體,用以將接收到的一命令位址映射到該非揮發性記憶體的一實體位址;以及一控制電路,耦合至該位址解碼器,其中,回應於一更新後開機碼取代該備份開機碼,該更新後開機碼被執行一預驗證操作,對該第一部份與該第二部份暫時以該第一配置與該第二配置之一另一配置而被使用,如果該更新後開機碼正常運作,則於系統重設後,該第一部份與該第二部份以該第一配置與該第二配置之該另一配置而被使用,如果該更新後開機碼無法正常運作,則於系統斷電重開後,該第一部份與該第二部份回復至以該第一配置與該第二配置之該目前配置而被使用。
- 如申請專利範圍第1項所述之記憶體裝置,其中該控制電路包括: 一閂鎖邏輯,回應於一上電觸發訊號而閂鎖一配置選擇參數;一互斥或閘(EXOR,Exclusive-OR gate)邏輯,耦接於該閂鎖邏輯,接收該閂鎖邏輯的一輸出信號與一預驗證旗標而輸出一開機位址參數;以及一位址邏輯,耦接於該互斥或閘(EXOR,Exclusive-OR gate)邏輯邏輯,根據該開機位址參數、一雙區域更新模式致能參數與一主控制器位址的最高有效位元而輸出一輸出變數給該位址解碼器。
- 如申請專利範圍第2項所述之記憶體裝置,其中:回應於該更新後開機碼取代該備份開機碼,該預驗證旗標被致能,回應於該預驗證旗標被致能,該互斥或閘(EXOR,Exclusive-OR gate)邏輯所輸出的該開機位址參數變化,使得該位址邏輯所輸出的該輸出變數改變,該位址解碼器導向一不同記憶體位址,以使得該第一部份與該第二部份暫時以該第一配置與該第二配置之該另一配置而被使用。
- 如申請專利範圍第3項所述之記憶體裝置,其中回應於該更新後開機碼正常運作,改變該配置選擇參數,以使得該第一部份與該第二部份以該第一配置與該第二配置之該另一配置而被使用。
- 如申請專利範圍第3項所述之記憶體裝置,其中 回應於該更新後開機碼無法正常運作,保持該配置選擇參數,以使得該第一部份與該第二部份回復至以該第一配置與該第二配置之該目前配置而被使用。
- 如申請專利範圍第2項所述之記憶體裝置,其中該預驗證旗標儲存於該控制電路的一內部揮發性暫存器內。
- 一種系統開機碼記憶體管理方法,應用於一非揮發性記憶體,該非揮發性記憶體具有一第一部分及一第二部分,該第一部分以一第一範圍的實體位址表示,該第二部分以一第二範圍的實體位址表示,該第一部份與該第二部份以一第一配置與一第二配置中之一目前配置而被使用,該第一部份與該第二部份之其中一者儲存一主要開機碼而該第一部份與該第二部份之另一者儲存一備份開機碼,該方法包括:回應於一更新後開機碼取代該備份開機碼,對該更新後開機碼執行一預驗證操作,該第一部份與該第二部份暫時以該第一配置與該第二配置之一另一配置而被使用,如果判斷該更新後開機碼正常運作,則於系統重設後,該第一部份與該第二部份以該第一配置與該第二配置之該另一配置而被使用,以及如果判斷該更新後開機碼無法正常運作,則於系統斷電重開後,該第一部份與該第二部份回復至以該第一配置與該第二配置之該目前配置而被使用。
- 如申請專利範圍第7項所述之方法,更包括: 回應於一上電觸發訊號而閂鎖一配置選擇參數;接收該閂鎖邏輯的一輸出信號與一預驗證旗標而輸出一開機位址參數;以及根據該開機位址參數、一雙區域更新模式致能參數與一主控制器位址的最高有效位元而輸出一輸出變數。
- 如申請專利範圍第8項所述之方法,其中:回應於該更新後開機碼取代該備份開機碼而致能該預驗證旗標,回應於該預驗證旗標被致能,改變該開機位址參數與該輸出變數,導向一不同記憶體位址,以使得該第一部份與該第二部份暫時以該第一配置與該第二配置之該另一配置而被使用。
- 如申請專利範圍第9項所述之方法,其中回應於該更新後開機碼正常運作,改變該配置選擇參數,以使得該第一部份與該第二部份以該第一配置與該第二配置之該另一配置而被使用。
- 如申請專利範圍第9項所述之方法,其中回應於該更新後開機碼無法正常運作,保持該配置選擇參數,以使得該第一部份與該第二部份回復至以該第一配置與該第二配置之該目前配置而被使用。
- 如申請專利範圍第8項所述之方法,其中該預驗證旗標儲存於一內部揮發性暫存器內。
- 一種電子系統,包括: 一主控制器;以及一記憶體裝置,耦接至該主控制器,該記憶體裝置包括:一非揮發性記憶體,具有一第一部分及一第二部分,該第一部分以一第一範圍的實體位址表示,該第二部分以一第二範圍的實體位址表示,該第一部份與該第二部份以一第一配置與一第二配置中之一目前配置而被使用,該第一部份與該第二部份之其中一者儲存一主要開機碼而該第一部份與該第二部份之另一者儲存一備份開機碼;一位址解碼器,耦合至該非揮發性記憶體,用以將接收到的一命令位址映射到該非揮發性記憶體的一實體位址;以及一控制電路,耦合至該位址解碼器,其中,回應於一更新後開機碼取代該備份開機碼,該主控制器對該更新後開機碼執行一預驗證操作,對該第一部份與該第二部份暫時以該第一配置與該第二配置之一另一配置而被使用,如果該更新後開機碼正常運作,則於系統重設後,該第一部份與該第二部份以該第一配置與該第二配置之該另一配置而被使用,如果該更新後開機碼無法正常運作,則於系統斷電重開後,該第一部份與該第二部份回復至以該第一配置與該第二配置之該目前配置而被使用。
- 如申請專利範圍第13項所述之電子系統,其中該控制電路包括: 一閂鎖邏輯,回應於一上電觸發訊號而閂鎖一配置選擇參數;一互斥或閘(EXOR,Exclusive-OR gate)邏輯邏輯,耦接於該閂鎖邏輯,接收該閂鎖邏輯的一輸出信號與一預驗證旗標而輸出一開機位址參數;以及一位址邏輯,耦接於該互斥或閘(EXOR,Exclusive-OR gate)邏輯邏輯,根據該開機位址參數、一雙區域更新模式致能參數與一主控制器位址的最高有效位元而輸出一輸出變數給該位址解碼器。
- 如申請專利範圍第14項所述之電子系統,其中:回應於該更新後開機碼取代該備份開機碼,該主控制器致能該預驗證旗標,回應於該預驗證旗標被致能,該互斥或閘(EXOR,Exclusive-OR gate)邏輯所輸出的該開機位址參數變化,使得該位址邏輯所輸出的該輸出變數改變,該位址解碼器導向一不同記憶體位址,以使得該第一部份與該第二部份暫時以該第一配置與該第二配置之該另一配置而被使用。
- 如申請專利範圍第15項所述之電子系統,其中回應於該更新後開機碼正常運作,該主控制器改變該配置選擇參數,以使得該第一部份與該第二部份以該第一配置與該第二配置之該另一配置而被使用。
- 如申請專利範圍第15項所述之電子系統,其中 回應於該更新後開機碼無法正常運作,該主控制器保持該配置選擇參數,以使得該第一部份與該第二部份回復至以該第一配置與該第二配置之該目前配置而被使用。
- 如申請專利範圍第14項所述之電子系統,其中該預驗證旗標儲存於該控制電路的一內部揮發性暫存器內。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/868,896 US10445088B2 (en) | 2018-01-11 | 2018-01-11 | System boot code clone |
US15/868,896 | 2018-01-11 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201937367A TW201937367A (zh) | 2019-09-16 |
TWI722361B true TWI722361B (zh) | 2021-03-21 |
Family
ID=61192657
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107109176A TWI678613B (zh) | 2018-01-11 | 2018-03-16 | 系統開機碼記憶體管理方法、記憶體裝置及其製造方法 |
TW107137817A TWI703498B (zh) | 2018-01-11 | 2018-10-25 | 記憶體裝置與電子裝置的啟動程式載入方法 |
TW108100560A TWI722361B (zh) | 2018-01-11 | 2019-01-07 | 系統開機碼記憶體管理方法、記憶體裝置與應用其之電子系統 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107109176A TWI678613B (zh) | 2018-01-11 | 2018-03-16 | 系統開機碼記憶體管理方法、記憶體裝置及其製造方法 |
TW107137817A TWI703498B (zh) | 2018-01-11 | 2018-10-25 | 記憶體裝置與電子裝置的啟動程式載入方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10445088B2 (zh) |
EP (1) | EP3511826B1 (zh) |
CN (3) | CN110032520B (zh) |
TW (3) | TWI678613B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI666556B (zh) * | 2018-03-27 | 2019-07-21 | 緯創資通股份有限公司 | 電子裝置及其操作方法 |
KR102646630B1 (ko) * | 2018-10-01 | 2024-03-11 | 삼성전자주식회사 | 시스템 런타임 환경에서 dram 셀 상의 라이트 보호 커맨드를 발행하는 방법 |
WO2021021161A1 (en) * | 2019-07-31 | 2021-02-04 | Hewlett-Packard Development Company, L.P. | Updates to flash memory based on determinations of bits to erase |
FR3105854B1 (fr) * | 2019-12-31 | 2024-07-19 | St Microelectronics Rousset | Système embarqué |
CN111338668B (zh) * | 2020-02-14 | 2022-05-10 | 支付宝(杭州)信息技术有限公司 | 用于实时计算中的代码升级的方法及装置 |
TWI768316B (zh) * | 2020-03-30 | 2022-06-21 | 旺宏電子股份有限公司 | 記憶體裝置以及安全開機的記憶體管理方法 |
CN113495808A (zh) * | 2020-04-01 | 2021-10-12 | 旺宏电子股份有限公司 | 存储器装置以及安全开机的存储器管理方法 |
JP2021190150A (ja) * | 2020-06-02 | 2021-12-13 | キオクシア株式会社 | メモリシステム及びメモリコントローラ |
US11734018B2 (en) * | 2020-07-17 | 2023-08-22 | Western Digital Technologies, Inc. | Parallel boot execution of memory devices |
TWI805946B (zh) * | 2020-09-29 | 2023-06-21 | 瑞昱半導體股份有限公司 | 內嵌式系統及控制非揮發性記憶體之方法 |
TWI755184B (zh) * | 2020-12-03 | 2022-02-11 | 聯陽半導體股份有限公司 | 電子裝置及其開機方法 |
US11550494B2 (en) * | 2021-02-03 | 2023-01-10 | Macronix International Co., Ltd. | Method to support high reliability multiple times program non-volatile configuration setting |
FR3128543B1 (fr) * | 2021-10-26 | 2023-12-22 | Sagemcom Broadband Sas | Procede de verrouillage d’une memoire non-volatile reinscriptible et dispositif electronique mettant en œuvre ledit procede |
US11797230B2 (en) * | 2021-12-14 | 2023-10-24 | Hewlett-Packard Development Company, L.P. | Bios variables storage |
CN116700061B (zh) * | 2023-04-12 | 2024-05-03 | 广东为辰信息科技有限公司 | 一种基于安全启动技术的快速启动方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6473856B1 (en) * | 1999-06-30 | 2002-10-29 | International Business Machines Corporation | Gold code backup for corrupt boot code recovery |
US6757838B1 (en) * | 2000-10-13 | 2004-06-29 | Hewlett-Packard Development Company, L.P. | Hardware independent implementation of computer system BIOS recovery |
US8397039B2 (en) * | 2010-02-12 | 2013-03-12 | Symantec Corporation | Storage systems and methods |
US9003000B2 (en) * | 2006-07-25 | 2015-04-07 | Nvidia Corporation | System and method for operating system installation on a diskless computing platform |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6282675B1 (en) | 1997-08-06 | 2001-08-28 | Macronix International Co., Ltd. | Fault-tolerant architecture for in-circuit programming |
US6275931B1 (en) | 1998-06-22 | 2001-08-14 | Elsag International N.V. | Method and apparatus for upgrading firmware boot and main codes in a programmable memory |
US6205548B1 (en) * | 1998-07-31 | 2001-03-20 | Intel Corporation | Methods and apparatus for updating a nonvolatile memory |
US6748480B2 (en) | 1999-12-27 | 2004-06-08 | Gregory V. Chudnovsky | Multi-bank, fault-tolerant, high-performance memory addressing system and method |
US6748457B2 (en) * | 2000-02-03 | 2004-06-08 | Realtime Data, Llc | Data storewidth accelerator |
US6651188B2 (en) | 2001-06-29 | 2003-11-18 | Intel Corporation | Automatic replacement of corrupted BIOS image |
US7017004B1 (en) * | 2002-03-29 | 2006-03-21 | Microsoft Corporation | System and method for updating contents of a flash ROM |
US7089549B2 (en) * | 2002-04-01 | 2006-08-08 | International Business Machines Corp. | Updating flash memory |
JP2004013719A (ja) * | 2002-06-10 | 2004-01-15 | Fujitsu Ltd | 多重化された不揮発性メモリの更新回路、及び多重化された不揮発性メモリの更新方法 |
TW200506731A (en) * | 2003-08-05 | 2005-02-16 | Via Tech Inc | Computer system with multiple basic input/output system (BIOS) memory blocks |
US8667249B2 (en) * | 2004-12-22 | 2014-03-04 | Intel Corporation | Systems and methods exchanging data between processors through concurrent shared memory |
TW200825915A (en) | 2006-12-07 | 2008-06-16 | Wistron Corp | Computer system and related method for preventing from failing to update BIOS program |
CN100504782C (zh) * | 2006-12-18 | 2009-06-24 | 纬创资通股份有限公司 | 避免基本输出入***程序更新失败的计算机*** |
CN100501679C (zh) * | 2007-02-27 | 2009-06-17 | 华为技术有限公司 | 一种电子设备 |
US20090006834A1 (en) * | 2007-06-29 | 2009-01-01 | Michael Rothman | Proxied firmware updates |
US8156299B2 (en) | 2007-10-19 | 2012-04-10 | Virident Systems Inc. | Managing memory systems containing components with asymmetric characteristics |
CN101667128B (zh) * | 2008-09-05 | 2013-11-06 | 华硕电脑股份有限公司 | 更新与修复基本输入输出***的方法 |
TWI460657B (zh) * | 2008-09-05 | 2014-11-11 | Asustek Comp Inc | 更新與修復基本輸入輸出系統的方法 |
US8266408B2 (en) | 2009-03-17 | 2012-09-11 | Memoir Systems, Inc. | System and method for storing data in a virtualized high speed memory system |
TWI441081B (zh) | 2011-11-04 | 2014-06-11 | Asrock Inc | 更新韌體方法與開機方法及使用其之電子裝置 |
TWI443507B (zh) * | 2011-12-05 | 2014-07-01 | Giga Byte Tech Co Ltd | 自動修復系統及其自動修復方法 |
CN103186434A (zh) * | 2011-12-31 | 2013-07-03 | 国民技术股份有限公司 | 恢复基本输入输出***的方法及*** |
US8880962B2 (en) * | 2012-04-24 | 2014-11-04 | International Business Machines Corporation | Maintenance planning and failure prediction from data observed within a time window |
KR101991905B1 (ko) * | 2012-07-19 | 2019-06-24 | 삼성전자주식회사 | 불휘발성 메모리, 불휘발성 메모리의 읽기 방법 및 불휘발성 메모리를 포함하는 메모리 시스템 |
US9158683B2 (en) | 2012-08-09 | 2015-10-13 | Texas Instruments Incorporated | Multiport memory emulation using single-port memory devices |
US9378572B2 (en) * | 2012-08-17 | 2016-06-28 | Intel Corporation | Shared virtual memory |
US20140089561A1 (en) | 2012-09-26 | 2014-03-27 | Kiran Pangal | Techniques Associated with Protecting System Critical Data Written to Non-Volatile Memory |
CN104102585B (zh) * | 2013-04-03 | 2017-09-12 | 群联电子股份有限公司 | 映射信息记录方法、存储器控制器与存储器储存装置 |
TWI514281B (zh) | 2014-08-28 | 2015-12-21 | 具spi介面的sata儲存裝置、應用該sata儲存裝置之開機方法及基本輸入輸出系統程式碼更新方法 | |
US10019358B2 (en) | 2015-03-20 | 2018-07-10 | Vixs Systems Inc. | Bank address remapping to load balance memory traffic among banks of memory |
TWI556172B (zh) | 2015-09-04 | 2016-11-01 | 神雲科技股份有限公司 | 電腦裝置及其開機方法 |
US10055296B2 (en) * | 2015-10-30 | 2018-08-21 | Quanta Computer Inc. | System and method for selective BIOS restoration |
CN106776376B (zh) * | 2015-11-24 | 2019-08-06 | 群联电子股份有限公司 | 缓冲存储器管理方法、存储器控制电路单元及存储装置 |
CN106814968B (zh) * | 2015-11-27 | 2020-03-17 | 群联电子股份有限公司 | 存储器管理方法与***及其存储器存储装置 |
-
2018
- 2018-01-11 US US15/868,896 patent/US10445088B2/en active Active
- 2018-01-30 EP EP18154123.6A patent/EP3511826B1/en active Active
- 2018-03-16 TW TW107109176A patent/TWI678613B/zh active
- 2018-03-20 CN CN201810232378.2A patent/CN110032520B/zh active Active
- 2018-10-25 TW TW107137817A patent/TWI703498B/zh active
- 2018-10-26 CN CN201811264242.6A patent/CN110032403B/zh active Active
-
2019
- 2019-01-07 TW TW108100560A patent/TWI722361B/zh active
- 2019-01-10 CN CN201910024870.5A patent/CN110032405B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6473856B1 (en) * | 1999-06-30 | 2002-10-29 | International Business Machines Corporation | Gold code backup for corrupt boot code recovery |
US6757838B1 (en) * | 2000-10-13 | 2004-06-29 | Hewlett-Packard Development Company, L.P. | Hardware independent implementation of computer system BIOS recovery |
US9003000B2 (en) * | 2006-07-25 | 2015-04-07 | Nvidia Corporation | System and method for operating system installation on a diskless computing platform |
US8397039B2 (en) * | 2010-02-12 | 2013-03-12 | Symantec Corporation | Storage systems and methods |
Also Published As
Publication number | Publication date |
---|---|
US10445088B2 (en) | 2019-10-15 |
CN110032405B (zh) | 2022-03-15 |
TW201937367A (zh) | 2019-09-16 |
CN110032520B (zh) | 2021-06-29 |
CN110032403B (zh) | 2022-02-22 |
TW201931111A (zh) | 2019-08-01 |
TW201931115A (zh) | 2019-08-01 |
TWI678613B (zh) | 2019-12-01 |
CN110032520A (zh) | 2019-07-19 |
EP3511826B1 (en) | 2022-03-16 |
US20190212999A1 (en) | 2019-07-11 |
EP3511826A1 (en) | 2019-07-17 |
CN110032405A (zh) | 2019-07-19 |
CN110032403A (zh) | 2019-07-19 |
TWI703498B (zh) | 2020-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI722361B (zh) | 系統開機碼記憶體管理方法、記憶體裝置與應用其之電子系統 | |
US10228745B2 (en) | Resuming a system-on-a-chip device | |
JP6198876B2 (ja) | セキュア・リカバリ装置及び方法 | |
US8601255B2 (en) | Approaches for updating bios | |
TWI515660B (zh) | 韌體變量更新方法 | |
TWI514408B (zh) | 於裝置開機期間處置來自非揮發性記憶體之錯誤 | |
US10977050B2 (en) | Method for managing system boot code memory, memory device and electronic system using the same | |
US11755315B2 (en) | Boot ROM update method and boot-up method of embedded system | |
TWI660306B (zh) | 資料儲存裝置的操作方法 | |
CN107003863B (zh) | 引导片上***器件 | |
TWI807384B (zh) | 儲存裝置 | |
US9361123B2 (en) | Boot from logical volume spanning plurality of PCI devices | |
TWI743480B (zh) | 電腦系統與其開機方法 | |
JP7355876B2 (ja) | プログラム起動方法及び機器、記憶媒体 | |
US20220066784A1 (en) | Disabling software persistence | |
US20140059293A1 (en) | Method for protecting a gpt cached disks data integrity in an external operating system environment | |
EP3961451B1 (en) | Storage device | |
TW202115579A (zh) | 電腦基本輸入輸出系統 bios 修復方法及實施該修復方法之電腦系統 | |
CN112148201A (zh) | 数据写入方法、装置及存储介质 |